GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie verwende ich die neue ext4-Inline-Datenfunktion? (Speichern von Daten direkt im Inode)

Um Inline-Daten in ext4 zu aktivieren, müssen Sie e2fsprogs verwenden 1.43 oder höher. Unterstützung für Inline-Daten wurde im März 2014 zum Git-Repository hinzugefügt, aber erst im Mai 2016 veröffentlicht.

Sobald Sie das haben, können Sie mke2fs -O inline_data ausführen auf einem geeigneten Gerät, um ein neues Dateisystem mit Inline-Datenunterstützung zu erstellen; dadurch werden alle Ihre Daten gelöscht . Es ist anscheinend noch nicht möglich, Inline-Daten auf einem bestehenden Dateisystem zu aktivieren (mindestens tune2fs unterstützt es nicht).

Erstellen Sie nun eine kleine Datei und führen Sie debugfs aus auf dem Dateisystem. cd in das entsprechende Verzeichnis und führen Sie stat smallfile aus; Sie erhalten so etwas wie

Inode: 32770   Type: regular    Mode:  0644   Flags: 0x10000000
Generation: 2302340561    Version: 0x00000000:00000001
User:  1000   Group:  1000   Size: 6
File ACL: 0    Directory ACL: 0
Links: 1   Blockcount: 0
Fragment:  Address: 0    Number: 0    Size: 0
 ctime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
 atime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
 mtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
crtime: 0x553731e9:330badf8 -- Wed Apr 22 07:30:17 2015
Size of extra inode fields: 28
Extended attributes:
  system.data (0)
Size of inline data: 60

Wie Sie sehen können, wurden die Daten inline gespeichert. Dies kann auch mit df gesehen werden; vor dem Erstellen der Datei:

% df -i /mnt/new 
Filesystem                           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline  65536    12 65524    1% /mnt/new
% df /mnt/new 
Filesystem                           1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline   1032088  1280    978380   1% /mnt/new

Nach dem Erstellen der Datei:

% echo Hello > smallfile
% ls -l
total 1
-rw-r--r-- 1 steve steve 6 Apr 22 07:35 smallfile
% df -i /mnt/new
Filesystem                           Inodes IUsed IFree IUse% Mounted on
/dev/mapper/vg--large--mirror-inline  65536    13 65523    1% /mnt/new
% df /mnt/new
Filesystem                           1K-blocks  Used Available Use% Mounted on
/dev/mapper/vg--large--mirror-inline   1032088  1280    978380   1% /mnt/new

Die Datei ist da, sie verwendet einen Inode, aber der verfügbare Speicherplatz hat sich nicht geändert.


Wenn Ihr e2fsprogs Version zu alt ist oder das Dateisystem bereits erstellt ist, können Sie das Feature-Flag mit debugfs setzen (das Flag wird seit 2012 unterstützt, wobei mke2fs und die anderen Tools haben ab 2014+ Unterstützung hinzugefügt und viele Distributionen liefern sie 2016 immer noch nicht aus, inkl. Ubuntu Xenial).

Öffnen Sie dazu die Partition im Lese-/Schreibmodus:

debugfs -w /dev/sdxx

Und fügen Sie dann das Flag hinzu:

feature inline_data

(oder feature -inline_data um es auszuschalten, aber das ist wahrscheinlich eine wirklich schlechte Idee, wenn es bereits Inline-Dateien gibt!)

Beachten Sie jedoch, wenn Ihr System e2fsprogs alt sind, fährt man sich in die Ecke, da die Utilities (u.a. debugfs selbst) weigert sich, ein solches Dateisystem zu berühren, nachdem das Flag gesetzt wurde.

Beachten Sie auch den aktuellen GRUB (2.02) unterstützt dies nicht, daher wird das System nicht mehr bootfähig gemacht, wenn Sie es auf der Boot-Partition setzen. Es gibt einen nicht zusammengeführten Patch, um Unterstützung hinzuzufügen.

Zum Zeitpunkt des Schreibens dieses Artikels wurden Dateien und Verzeichnisse von bis zu inode_size-128 kann inline sein, also 128 Bytes für die standardmäßigen 256-Byte-Inodes. Sie können größere Inodes verwenden, wenn Sie mehr Inlining wünschen.


Linux
  1. So verwenden Sie den Linux-Grep-Befehl

  2. So verwenden Sie den Verlaufsbefehl unter Linux

  3. Inodes und das Linux-Dateisystem

  4. Wie finde ich den Offset eines Ext4-Dateisystems?

  5. Wie finde ich die Inode-Größe eines ext2/ext3/ext4-Dateisystems?

So verwenden Sie den obersten Befehl unter Linux

So verwenden Sie den Linux-Ping-Befehl

So verwenden Sie den nmap-Befehl

Wie verschiebt man die Ext4-Partition vor die Boot-Partition?

So verwenden Sie den fd-Befehl auf einem Linux-System

Wie verwende ich den wget-Befehl unter Linux?