GNU/Linux >> Znalost Linux >  >> Linux

Jak používat novou funkci inline dat ext4? (ukládání dat přímo do inode)

Chcete-li povolit vložená data v ext4, budete muset použít e2fsprogs 1.43 nebo novější. Podpora pro inline data byla přidána v březnu 2014 do úložiště Git, ale byla vydána až v květnu 2016.

Jakmile to budete mít, můžete spustit mke2fs -O inline_data na vhodném zařízení k vytvoření nového souborového systému s podporou inline dat; Tímto smažete všechna vaše data . Zjevně ještě není možné aktivovat vložená data na existujícím souborovém systému (alespoň tune2fs to nepodporuje).

Nyní vytvořte malý soubor a spusťte debugfs na souborovém systému. cd do příslušného adresáře a spusťte stat smallfile; dostanete něco jako

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

Jak můžete vidět, data byla uložena inline. To lze také vidět pomocí df; před vytvořením souboru:

% 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

Po vytvoření souboru:

% 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

Soubor je tam, používá inode, ale dostupný úložný prostor se nezměnil.


Pokud je vaše e2fsprogs verze je příliš stará nebo je souborový systém již vytvořen, můžete nastavit příznak funkce pomocí debugfs (příznak je podporován od roku 2012, zatímco mke2fs a další nástroje přidaly podporu v roce 2014+ a mnoho distribucí je v roce 2016 stále nedodává, vč. Ubuntu Xenial).

Chcete-li to provést, otevřete oddíl v režimu čtení a zápisu:

debugfs -w /dev/sdxx

A pak přidejte příznak:

feature inline_data

(nebo feature -inline_data vypnout, ale to je pravděpodobně opravdu špatný nápad, pokud již existují vložené soubory!)

Pamatujte však, že pokud váš systém e2fsprogs jsou staré, zajíždíte do kouta, protože nástroje (včetně debugfs sám) se po nastavení příznaku odmítne dotknout takového souborového systému.

Všimněte si také, že aktuální GRUB (2.02) toto nepodporuje, takže nastavením na spouštěcí oddíl způsobí, že systém nebude možné spustit. Existuje nesloučený patch pro přidání podpory.

V době psaní tohoto článku, soubory a adresáře až inode_size-128 může být inline, takže 128 bajtů pro výchozí 256 bajtové inody. Pokud chcete více vložení, můžete použít větší inody.


Linux
  1. Jak používat Linuxový příkaz grep

  2. Jak používat příkaz historie v Linuxu

  3. Jak zjistit velikost inodu souborového systému ext2/ext3/ext4?

  1. Jak používat příkaz basename?

  2. Jak zvýšit počet inodů v souborovém systému Ext4?

  3. Jak používat TPM k utěsnění dat v systému spouštěném Uefi?

  1. Inodes a souborový systém Linux

  2. Jak najít offset souborového systému Ext4?

  3. Jak mohu použít DD k migraci dat ze starého disku na nový?