Jeśli poprawnie czytam dokumentację Ext4, począwszy od Linuksa 3.8 powinno być możliwe przechowywanie danych bezpośrednio w i-węzle w wazonie bardzo małego pliku.
Spodziewałem się, że taki plik będzie miał rozmiar 0 bloków, ale tak nie jest.
#creating a small file
printf "abcde" > small_file
#checking size of file in bytes
stat --printf='%s\n' small_file
5
#number of blocks used by files
stat --printf='%b\n' small_file
8
Spodziewałbym się, że ten ostatni numer będzie wynosił 0. Czy coś mi brakuje?
Odpowiedzi:
Aby włączyć wbudowane dane
ext4
, musisz mieće2fsprogs
wersję 1.43 lub nowszą. Wsparcie dla danych inline dodano w marcu 2014 wgit
repozytorium , ale został zwolniony dopiero w maju 2016 r.Gdy już to zrobisz, możesz uruchomić
mke2fs -O inline_data
na odpowiednim urządzeniu, aby utworzyć nowy system plików z wbudowaną obsługą danych; spowoduje to usunięcie wszystkich danych . Najwyraźniej nie jest jeszcze możliwa aktywacja danych wbudowanych w istniejącym systemie plików (przynajmniejtune2fs
go nie obsługuje).Teraz utwórz mały plik i uruchom
debugfs
go w systemie plików.cd
do odpowiedniego katalogu i uruchomstat smallfile
; dostaniesz coś takiegoJak widać, dane zostały zapisane w linii. Można to również zobaczyć za pomocą
df
; przed utworzeniem pliku:Po utworzeniu pliku:
Plik jest tam, używa i-węzła, ale dostępne miejsce do przechowywania się nie zmieniło.
źródło
Jeśli Twoja
e2fsprogs
wersja jest za stara lub system plików jest już utworzony, możesz ustawić flagę funkcji za pomocądebugfs
(flaga jest obsługiwana od 2012 r.,mke2fs
A inne narzędzia dodały obsługę w wersji 2014+ i wielu dystrybucjach nadal nie dostarczają ich w 2016 r. , w tym Ubuntu Xenial).W tym celu otwórz partycję w trybie do odczytu i zapisu:
A następnie dodaj flagę:
(lub
feature -inline_data
go wyłączyć, ale to prawdopodobnie bardzo zły pomysł, jeśli istnieją już pliki wbudowane!)Pamiętaj jednak, że jeśli twój system
e2fsprogs
jest stary, wjeżdżasz w zakręt, ponieważ narzędzia (w tym takżedebugfs
sam) odmówią dotknięcia takiego systemu plików po ustawieniu flagi.Zauważ również, że bieżący
GRUB
(2.02) tego nie obsługuje, więc ustawienie go na partycji rozruchowej spowoduje, że system nie będzie można uruchomić. Dostępna jest łatka nie połączona .W chwili pisania tego tekstu
inode_size-128
można wstawiać pliki i katalogi o wielkości do , więc 128 bajtów dla domyślnych i-bajtów o wielkości 256 bajtów. Możesz użyć większych i-węzłów, jeśli chcesz więcej wstawiania.źródło