Para habilitar los datos en línea en ext4, deberá usar e2fsprogs
1.43 o posterior. El soporte para datos en línea se agregó en marzo de 2014 al repositorio de Git, pero solo se lanzó en mayo de 2016.
Una vez que tenga eso, puede ejecutar mke2fs -O inline_data
en un dispositivo apropiado para crear un nuevo sistema de archivos con soporte de datos en línea; esto borrará todos tus datos . Aparentemente, aún no es posible activar datos en línea en un sistema de archivos existente (al menos, tune2fs
no lo admite).
Ahora cree un archivo pequeño y ejecute debugfs
en el sistema de archivos. cd
al directorio apropiado y ejecute stat smallfile
; obtendrás algo como
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
Como puede ver, los datos se almacenaron en línea. Esto también se puede ver usando df
; antes de crear el archivo:
% 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
Después de crear el archivo:
% 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
El archivo está ahí, usa un inodo pero el espacio de almacenamiento disponible no ha cambiado.
Si tu e2fsprogs
la versión es demasiado antigua o el sistema de archivos ya está creado, puede configurar el indicador de función usando debugfs
(la bandera es compatible desde 2012, mientras que mke2fs
y las otras herramientas agregaron soporte en 2014+ y muchas distribuciones aún no las envían en 2016, incl. Ubuntu Xenial).
Para hacerlo, abra la partición en modo lectura-escritura:
debugfs -w /dev/sdxx
Y luego agrega la bandera:
feature inline_data
(o feature -inline_data
para desactivarlo, ¡pero probablemente sea una muy mala idea si ya hay archivos en línea!)
Tenga en cuenta, sin embargo, si su sistema e2fsprogs
son viejos, te estás acorralando, ya que las utilidades (incluyendo debugfs
mismo) se negará a tocar dicho sistema de archivos después de establecer la bandera.
También tenga en cuenta que el actual GRUB
(2.02) no admite esto, por lo que configurarlo en la partición de arranque hará que el sistema no pueda arrancar. Hay un parche no fusionado para agregar soporte.
Al momento de escribir este artículo, archivos y directorios de hasta inode_size-128
puede estar en línea, por lo que 128 bytes para los inodos predeterminados de 256 bytes. Puede usar inodos más grandes si desea más alineaciones.