Si je lis correctement la documentation Ext4, à partir de Linux 3.8, il devrait être possible de stocker des données directement dans l'inode dans le vase d'un très petit fichier.
Je m'attendais à ce qu'un tel fichier ait une taille de 0 bloc, mais ce n'est pas le cas.
#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
Je m'attends à ce que ce dernier numéro soit 0. Suis-je en train de manquer quelque chose?
Réponses:
Pour activer les données en ligne
ext4
, vous devez avoir la versione2fsprogs
1.43 ou ultérieure. Prise en charge des données en ligne a été ajoutée en Mars 2014 legit
dépôt , mais n'a été publié en mai ici 2016.Une fois que vous avez cela, vous pouvez exécuter
mke2fs -O inline_data
sur un périphérique approprié pour créer un nouveau système de fichiers avec prise en charge des données en ligne; cela effacera toutes vos données . Il n'est apparemment pas encore possible d'activer des données en ligne sur un système de fichiers existant (au moins,tune2fs
ne le prend pas en charge).Créez maintenant un petit fichier et exécutez-le
debugfs
sur le système de fichiers.cd
dans le répertoire approprié et exécutezstat smallfile
; vous obtiendrez quelque chose commeComme vous pouvez le voir, les données ont été stockées en ligne. Cela peut également être vu en utilisant
df
; avant de créer le fichier:Après avoir créé le fichier:
Le fichier est là, il utilise un inode mais l'espace de stockage disponible n'a pas changé.
la source
Si votre
e2fsprogs
version est trop ancienne ou que le système de fichiers est déjà créé, vous pouvez définir l'indicateur de fonctionnalité à l'aide dedebugfs
(l'indicateur est pris en charge depuis 2012, tandismke2fs
que les autres outils ont ajouté la prise en charge sur 2014+ et de nombreuses distributions ne les expédient toujours pas en 2016 , y compris Ubuntu Xenial).Pour ce faire, ouvrez la partition en mode lecture-écriture:
Et puis ajoutez le drapeau:
(ou
feature -inline_data
pour le désactiver, mais c'est probablement une très mauvaise idée s'il existe déjà des fichiers en ligne!)Notez cependant que si votre système
e2fsprogs
est ancien, vous vous retrouvez dans un coin, car les utilitaires (y comprisdebugfs
lui-même) refuseront de toucher un tel système de fichiers après avoir défini l'indicateur.Notez également que la version actuelle
GRUB
(2.02) ne prend pas en charge cela, donc le définir sur la partition de démarrage rendra le système impossible à démarrer. Il existe un correctif non fusionné pour ajouter la prise en charge.Au moment d'écrire ces lignes, les fichiers et répertoires de jusqu'à
inode_size-128
peuvent être alignés, donc 128 octets pour les inodes de 256 octets par défaut. Vous pouvez utiliser des inodes plus grands si vous voulez plus d'inlining.la source