dimanche 8 mai 2011

3 options pour maximiser l'espace disque sous Linux

Quand on crée une partition sous Linux, on peut se contenter de laisser GParted s'occuper de tout : on choisit la taille de la partition, le filesystem, et hop on valide. Ça marche et c'est pratique, mais il est possible qu'une grande partie de l'espace disque soit gaspillée si la partition est au format ext2, ext3 ou ext4.

Note : dans cet article, j'utilise la notation "Kio" qui signifie 1024 octets, par opposition à "ko" qui signifie 1000 octets.

Note 2 : dans les exemples donnés, "/dev/sdbX" est bien sûr à remplacer par la partition que vous souhaitez formater. N'oubliez pas de consulter les man pages pour avoir plus d'informations.

Version courte :

Pour une partition servant à stocker des gros fichiers (plus de 1 Mo chacun en moyenne), tapez :
sudo mkfs.ext4 -T largefile -m 1 -L NomDuVolume /dev/sdbX
Attention à bien taper le bon nom de device, car il n’y a pas de demande de confirmation.


Version longue :

Voici trois options qui vous permettront de gagner de la place :

1) inode_ratio

Ce réglage est le plus important car il ne peut pas être modifié une fois le filesystem créé, à moins de l'effacer pour le recréer.

Au moins sous Arch Linux, l'inode_ratio par défaut est de 16384 (cf /etc/mke2fs.conf), c'est-à-dire qu'un inode sera créé pour chaque 16 Kio d'espace disque. À moins d'une erreur de ma part, chaque fichier utilise un inode et un seul ; il y aura donc suffisamment d'inodes pour remplir votre partition de fichiers faisant en moyenne 16 Kio ou plus.

Mais si la taille moyenne de vos fichiers fait par exemple 256 Kio ? Alors il y aura 16 fois trop d'inodes ! Sachant qu'un inode prend 256 octets, on peut calculer la place perdue sur un disque d'un teraoctet :

Nombre d'inodes par défaut : 0 000 000 000 000 / 16384 = 61 035 156 inodes
Nombre d'inodes utiles : 0 000 000 000 000 / 262 144 = 3 814 697 inodes
Place perdue : ( 00 000 000 - 0 000 000 ) * 256 = 14 648 437 504 octets

Sur une partition de 1 To contenant des fichiers de 256 Kio en moyenne, on perd 13.6 Gio avec les réglages par défaut ! (Soit 1.5% de la place totale.)

Les disques de grande capacité servant souvent à stocker des fichiers de grande taille, vous avez donc tout intérêt à utiliser un inode_ratio personnalisé lors de la création du système de fichiers, avec l'option "-i" de mke2fs :
sudo mkfs.ext4 -i 262144 /dev/sdbX
À moins de modifier directement la valeur par défaut dans /etc/mke2fs.conf, il faudra donc utiliser mke2fs "à la main" après avoir créé la partition avec GParted, celui-ci ne permettant pas de régler cette option.

Vous pouvez utiliser la commande "df -i" pour voir l'utilisation des inodes sur vos partitions existantes.

2) reserved-blocks-percentage

Par défaut, 5% de l'espace total est réservé à root. C'est utile pour / ou certaines autres partitions système (/tmp, /var...) afin de pouvoir démarrer/réparer son ordinateur quand elles sont pleines, mais pas pour une simple partition de stockage de données. Dans ce cas, vous pouvez réduire cette valeur à 0% en utilisant tune2fs après la création du filesystem :
sudo tune2fs -m 0 /dev/sdbX

Addendum : On dit qu'il faut éviter de remplir totalement une partition afin de minimiser la fragmentation des fichiers. C'est donc peut-être une bonne idée de garder 1% d'espace réservé...

3) resize_inode

D'un intérêt nettement moindre que les deux précédentes astuces, la désactivation de cette option permet de gagner environ 70 Mo sur une partition d'un To, soit 0.007%. C'est ridicule, mais au point où j'en suis... Cette opération supprime la possibilité d'agrandir un filesystem après sa création, mais cela est inutile si la partition prend déjà la totalité du disque dur. On peut dans ce cas utiliser tune2fs :
sudo tune2fs -O ^resize_inode /dev/sdbX

Attention : Cette option empêche également de réduire la taille d'une partition ext4, ce qui n'est pas documenté... Il vaut donc mieux ne pas y toucher vu le gain minime apporté.

Informations valides, avec un peu de chance, sous Arch Linux avec le kernel 2.6.38.4, tune2fs 1.41.14.

9 commentaires:

  1. hm, très technique comme article mais intéressant !

    RépondreSupprimer
  2. Salut Aton :) ... Tu utilises Nunux maintenant ?

    RépondreSupprimer
  3. Ben ouais, quasiment plus que debian et ubuntu, ya tout dessus :) même si c'est pas aussi fun qu'amigaos 3.x

    RépondreSupprimer
  4. Seven pro 64 bits c'est bien aussi...

    RépondreSupprimer
  5. Monsieur Stqn n'est pas sur fezbook ? J'envoie de ce pas une invitation à Feuillu.
    L'amiga 1200, y a que ça de bon !

    RépondreSupprimer
  6. J'ai mis le temps pour deviner qui c'était ce type qui m'avait fait une demande d'ami... Je t'ai suggérer l'ours, io, steag et batteman comme potains... :P

    Tu viens nous rejoindre, StaNnOU ? Tu verras, c'est lent et bogué ! Tu te sentiras moins seul.

    RépondreSupprimer
  7. Avec l'aide de stqn, nous reconstituerons le groupe d'attaque #amigarulez, nous prendrons facebook, violerons les femmes les plus profilées et deviendrons riches beaux et célèbres.
    Muhahaha. A moins de finir avec un compte désactivé, menacés d'un horrible scandale à cause d'une remarque publique assassine (genre yann moix).

    RépondreSupprimer