Wenn ich die Ext4-Dokumentation ab Linux 3.8 richtig gelesen habe, sollte es möglich sein, Daten direkt im Inode in der Vase einer sehr kleinen Datei zu speichern.
Ich hatte erwartet, dass eine solche Datei eine Größe von 0 Blöcken hat, aber das ist nicht der Fall.
#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
Ich würde erwarten, dass diese letzte Zahl hier 0 ist. Vermisse ich etwas?
Antworten:
Um Inline-Daten zu aktivieren
ext4
, müssen Siee2fsprogs
1.43 oder höher sein. Unterstützung für die Inline - Daten wurde im März 2014 hinzugefügt dasgit
Repository wurde aber erst Mai 2016 veröffentlicht.Sobald Sie das haben, können Sie
mke2fs -O inline_data
auf einem geeigneten Gerät ein neues Dateisystem mit Inline-Datenunterstützung erstellen. Dadurch werden alle Ihre Daten gelöscht . Es ist anscheinend noch nicht möglich, Inline-Daten in einem vorhandenen Dateisystem zu aktivieren (unterstützt dies zumindesttune2fs
nicht).Erstellen Sie nun eine kleine Datei und führen Sie sie
debugfs
auf dem Dateisystem aus.cd
in das entsprechende Verzeichnis und ausführenstat smallfile
; Du wirst so etwas bekommenWie Sie sehen, wurden die Daten inline gespeichert. Dies kann auch mit gesehen werden
df
; vor dem Erstellen der Datei:Nach dem Erstellen der Datei:
Die Datei ist dort, sie verwendet einen Inode, aber der verfügbare Speicherplatz hat sich nicht geändert.
quelle
Wenn Ihre
e2fsprogs
Version zu alt ist oder das Dateisystem bereits erstellt wurde, können Sie das Feature-Flag mit setzendebugfs
(das Flag wird seit 2012 unterstützt, währendmke2fs
die anderen Tools ab 2014 Unterstützung bieten und viele Distributionen sie 2016 noch nicht ausliefern inkl. Ubuntu Xenial).Öffnen Sie dazu die Partition im Lese- / Schreibmodus:
Und dann fügen Sie die Flagge hinzu:
(oder
feature -inline_data
um es auszuschalten, aber das ist wahrscheinlich eine wirklich schlechte Idee, wenn es bereits Inline-Dateien gibt!)Beachten Sie jedoch, dass Sie, wenn Ihr System
e2fsprogs
alt ist, selbst in eine Ecke fahren, da die Dienstprogramme (einschließlich sichdebugfs
selbst) sich weigern, ein solches Dateisystem nach dem Setzen des Flags zu berühren.Beachten Sie auch, dass Current
GRUB
(2.02) dies nicht unterstützt. Wenn Sie es also auf der Boot-Partition festlegen, kann das System nicht mehr gestartet werden. Es gibt einen nicht zusammengeführten Patch , um Unterstützung hinzuzufügen.Zum Zeitpunkt dieses Schreibens können Dateien und Verzeichnisse von bis
inode_size-128
zu inline eingefügt werden, also 128 Bytes für die Standard-256-Byte-Inodes. Sie können größere Inodes verwenden, wenn Sie mehr Inlining wünschen.quelle