L’installation d’une distribution Linux est un instant critique où il nous est demandé de faire des chois sur le partitionnement des disques. Bien souvent, on se laisse porter par le choix par défaut de l’installateur. Mais est-ce le bon choix ? Dans ce billet j’explique mes choix en la matière à la fois pour une machine de bureau classique et pour de petites machines virtuelles.
Les partitions les plus fréquentes #
En règle générale on peut voir de 3 à 6 partitions :
/boot: ESP- SWAP
/: le système lui-même/home: les données des utilisateurs/var: les données susceptibles d’êtres modifiées lors de l’utilisation du système (hors données des utilisateurs)/tmp: les données temporaires
L’ESP #
Avant d’aller plus loin, sachez que je recommande de toujours utiliser UEFI, même pour les machines virtuelles. Même si vous n’utilisez pas encore certaines fonctionnalités un peu avancées (secure boot est un sujet en réalité très intéressant), utilisez tout de meme UEFI. Vous me remercierez plus tard.
Bref, ceci étant dit, il est important de préciser qu’afin de pouvoir démarrer, vous devez avoir une « partition UEFI » que l’on appelle une ESP. Cette partition doit contenir à minima un bootloader (GRUB, Syslinux, systemd-boot, etc.) et les noyaux Linux sur lesquels il est possible de démarrer.
Techniquement, rien n’empêche d’avoir une unique partition qui serve à la fois d’ESP et de partition système, de données, etc. Cependant, dans la mesure où l’ESP doit être utilisée par le firmware de la carte mère, il est absolument indispensable d’utiliser un système de fichiers compatible. Pour plein de raisons que je ne détaillerai pas ici, les spécifications UEFI demandent d’utiliser une partition FAT32. Ce système étant à la fois très ancien et limité, il n’est pas, mais alors pas du tout recommandé pour un usage principal.
Au niveau de la taille, je recommande d’utiliser environ 1Go. C’est largement suffisant pour stocker le bootloader ainsi que plusieurs images de noyaux. Notez qu’il m’est déjà arrivé de regretter de n’avoir mis que 300 Mo car ça s’est avéré insuffisant pour stocker une image Linux avec les symboles de debug en plus du reste. Compte tenu de la capacité de stockage de nos disques actuels, ne jouez pas les radins.
La SWAP #
Pour quelques personnes qui ne sauraient pas encore ce qu’est la SWAP, il s’agit d’un mécanisme qui a été introduit il y a fort longtemps afin de palier au fait que, pour fonctionner, nos systèmes pouvaient parfois nécessiter plus de RAM que ce qui est disponible. La SWAP permet, en gros, de présenter une partie du disque comme de la RAM alors que ça n’en est pas réellement.
Je ne vais pas ici entrer dans le débat de savoir si de nos jours la SWAP est obsolète ou non. Effectivement, vu les quantités actuelles de RAM, tous les systèmes peuvent très bien fonctionner sans SWAP. Cependant, sachez Linux dispose de mécanismes qui supposent l’existence de SWAP et que ça peut donc tout de meme être une bonne idée d’en avoir.
Si la plupart des installateurs automatiques proposent de base de créer une partition SWAP, je déconseille très fortement de suivre cette voie. Avoir une telle partition, c’est figer la taille de la SWAP : augmenter cette partition demande de modifier le partitionnement du système, ce qui est risqué et, dans certains cas, impossible. Et pour la réduire ou la supprimer, soit on perd de la place soit on est également bon pour modifier les autres partitions.
Il est cependant très simple d’avoir de la SWAP sans pour autant avoir une partition dédiée. La première méthode consiste à utiliser une swapfile, c’est à dire un fichier de taille fixe pré-allouée. Il suffit alors de monter le fichier et le tour est joué, c’est lui qui servira de SWAP. C’est très pratique car pour changer la taille de la SWAP il suffit de changer la swapfile.
Malheureusement, la partition SWAP et la swapfile ont un défaut commun : elles écrivent sur le disque. Ce fonctionnement a été pensé du temps où les disques dur à plateau dominaient le marché. Désormais, avec les SSD, c’est différent. Un SSD a un nombre d’écritures limité et, si dans la pratique on ne l’atteint jamais, il reste peu recommandé de d’avoir une haute fréquence d’écriture dessus.
Afin d’éviter d’user prématurément nos SSD sans pour autant supprimer la SWAP, il existe une solution assez maline : zram. Le principe est de compresser une partie de la RAM et de l’utiliser comme SWAP. Ainsi il n’y a aucune utilisation du disque, tout reste en RAM. Si on additionne la RAM non compressée avec la SWAP, on obtient plus d’espace que toute RAM de base. Bien entendu, il est possible de paramétrer zram sans danger quand on le souhaite.
La RAM compressée avec zram peut être utilisée comme un block device générique, son utilisation en tant que SWAP n’est donc qu’une utilisation possible parmi d’autres.
Les fichiers temporaires #
Est-ce une bonne idée que d’avoir une partition pour les fichiers temporaires
(/tmp) ? Mon avis personnel est que non. Pour la même raison d’usage des SSD
évoquée pour la SWAP, je suis assez réticent à l’idée d’utiliser le SSD pour les
fichiers temporaires qui peuvent être créés et détruits à un rythme soutenu.
À la place, je préfère utiliser tmpfs, un système de fichier spécialement dédié aux fichiers temporaires qui réside en RAM ou en SWAP. En plus d’épargner mon SSD, ça me permet d’avoir d’excellente performances pour la lecture et l’écriture de fichiers temporaires.
Les autres partitions #
Pour les autres partitions, il n’y a pas vraiment de bons et de mauvais choix. Tout avoir sur une seule partition est tout à fait acceptable, de même que diviser en plusieurs partitions. À titre très personnel je préfère tout conserver sur une seule partition car je n’aime pas la rigidité du partitionnement multiple.
Quoi que vous choisissiez il reste une question que vous devrez vous poser, et c’est celle du système de fichiers à utiliser. Je vous recommande très fortement de n’utiliser, pour le système lui-même, qu’un système de fichier dit « in-tree », c’est à dire intégré à Linux lui-même. Pour un usage général, il y a donc 3 systèmes de fichiers que je trouve particulièrement intéressants :
- ext4 : l’éternel classique, un peu ancien mais robuste et qui ne nécessite pas d’entretien ;
- XFS : mon chouchou du moment, moderne mais fiable et ne nécessitant pas d’entretien ;
- Btrfs : moderne et bourré de fonctionnalités, mais nécessite de s’en occuper un peu.
J’ai très longtemps utilisé ext4 pour son absence de prise de tête. N’étant pas un expert des systèmes de fichiers je veux juste créer la partition et ne plus y penser après coup. Je suis cependant passé à XFS qui me permet le même usage mais, au besoin, dispose d’outils pour une éventuelle maintenance.
Notons également que ZFS est extrêmement intéressant. Malheureusement c’est un système de fichier « out of tree », je ne le recommande donc pas pour le système lui-même. En revanche, pour se faire un système de stockage il est absolument excellent et servira à merveille de RAID logiciel.
Ne confondez pas XFS et ZFS qui, malgré leurs noms similaires, sont deux systèmes de fichiers très différents !
Quelques exemples #
De base je recommande un système avec 2 partitions : une ESP en FAT32 de 1 Go et, pour l’autre partition, XFS sur la totalité de l’espace restant. S’il y a besoin de chiffrer les données, comme par exemple pour un ordinateur portable, il est possible d’utiliser dm-crypt pour chiffrer l’intégralité du la seconde partition avant de la formater en XFS.
Les plus téméraires n’utiliseront qu’une seule partition chiffrée en mettant l’ESP sur une clé USB, mais il s’agit d’un choix assez radical qui a ses propres défauts.
Pour mon ordinateur de bureau j’ai réutilisé de plusieurs disques que je possédait déjà. Ma stratégie est donc la suivante :
- un SSD de 250 Go avec 2 partitions : l’ESP et le système (ce que j’ai décrit juste au dessus) ;
- un HDD de 8 To pour mon
/home, donc une seule partition chiffrée avec dm-crypt et formaté en XFS ; - un SSD de 1 To pour mes jeux vidéos, donc une seule partition XFS.
Dans la mesure où il s’agit d’un ordinateur fixe, je suis très peu sujet à une attaque de type evil maid, donc seules mes données sont chiffrées. Le système et les jeux vidéos ne le sont pas.
Si je devais créer un NAS, ce qui est en projet, je partirais sur un petit SSD avec le schémas à 2 partitions décrit ci-dessus et, pour le stockage, ZFS sur l’ensemble des HDD. Notons qu’OpenZFS dispose d’un chiffrement natif qu’il peut être judicieux d’utiliser plutôt que le traditionnel dm-crypt.
Alpine Linux #
Si vous souhaitez installer Alpine Linux en suivant mes conseils, il suffit de définir les variables d’environnement suivantes :
SWAP_SIZEà0ROOTFSàxfs
On lance l’installateur et c’est bon :
# SWAP_SIZE=0 ROOTFS="xfs" setup-alpine