Si leo la documentación de Ext4 correctamente, a partir de Linux 3.8, debería ser posible almacenar datos directamente en el inodo en el florero de un archivo muy pequeño.
Esperaba que dicho archivo tuviera un tamaño de 0 bloques, pero no es el caso.
#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
Esperaría que este último número aquí sea 0. ¿Me estoy perdiendo algo?
Respuestas:
Para habilitar los datos en línea
ext4
, necesitaráe2fsprogs
1.43 o posterior. El soporte para los datos en línea se agregó en elgit
repositorio en marzo de 2014, 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 sus datos . Aparentemente todavía 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 ejecútelo
debugfs
en el sistema de archivos.cd
al directorio apropiado y ejecutestat smallfile
; obtendrás algo comoComo puede ver, los datos se almacenaron en línea. Esto también se puede ver usando
df
; antes de crear el archivo:Después de crear el archivo:
El archivo está allí, usa un inodo pero el espacio de almacenamiento disponible no ha cambiado.
fuente
Si su
e2fsprogs
versión es demasiado antigua, o el sistema de archivos ya está creado, puede configurar el indicador de función usandodebugfs
(el indicador es compatible desde 2012, mientras quemke2fs
otras herramientas agregaron soporte en 2014+ y muchas distribuciones aún no se envían en 2016 , incluido Ubuntu Xenial).Para hacerlo, abra la partición en modo lectura-escritura:
Y luego agregue la bandera:
(o
feature -inline_data
para desactivarlo, ¡pero esa es probablemente una muy mala idea si ya hay archivos en línea!)Sin embargo, tenga en cuenta que si su sistema
e2fsprogs
es antiguo, se está arrinconando, ya que las utilidades (incluido éldebugfs
mismo) se negarán a tocar dicho sistema de archivos después de configurar la bandera.También tenga en cuenta que current
GRUB
(2.02) no es compatible con esto, por lo que configurarlo en la partición de arranque hará que el sistema no se pueda arrancar. Hay un parche no combinado para agregar soporte.Al momento de escribir esto, los archivos y directorios de hasta
inode_size-128
pueden 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 alineación.fuente