Pour activer les données en ligne dans ext4, vous devrez utiliser e2fsprogs
1.43 ou version ultérieure. La prise en charge des données en ligne a été ajoutée en mars 2014 au référentiel Git, mais n'a été publiée qu'en mai 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 les données en ligne sur un système de fichiers existant (au moins, tune2fs
ne le supporte pas).
Créez maintenant un petit fichier et exécutez debugfs
sur le système de fichiers. cd
dans le répertoire approprié et exécutez stat smallfile
; vous obtiendrez quelque chose comme
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
Comme 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 :
% 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
Après avoir créé le fichier :
% 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
Le fichier est là, il utilise un inode mais l'espace de stockage disponible n'a pas changé.
Si votre e2fsprogs
la version est trop ancienne ou le système de fichiers est déjà créé, vous pouvez définir l'indicateur de fonctionnalité à l'aide de debugfs
(le drapeau est supporté depuis 2012, alors que mke2fs
et les autres outils ont ajouté le support sur 2014+ et de nombreuses distributions ne les expédient toujours pas en 2016, incl. Ubuntu Xénial).
Pour cela, ouvrez la partition en mode lecture-écriture :
debugfs -w /dev/sdxx
Et puis ajoutez le drapeau :
feature inline_data
(ou feature -inline_data
pour le désactiver, mais c'est probablement une très mauvaise idée s'il y a déjà des fichiers en ligne !)
Notez cependant que si votre système e2fsprogs
êtes vieux, vous vous enfoncez dans un coin, puisque les utilitaires (dont debugfs
lui-même) refusera de toucher à un tel système de fichiers après avoir défini le drapeau.
Notez également que l'actuel GRUB
(2.02) ne le prend pas en charge, 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 du support.
Au moment d'écrire ces lignes, les fichiers et répertoires jusqu'à inode_size-128
peut être en ligne, 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.