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.