Il y a deux semaines, nous avions reçu une utilisatrice dont les mises à jour système étaient bloquées par manque de place sur sa partition système. À cause d’un manque de temps, nous lui avions donné rendez-vous à une prochaine séance, et la revoilà pour mettre tout ça en ordre.

Table des matières

Problème

Le problème est que son disque est partitionné en deux. En soi c’est une très bonne pratique, ça permet de séparer le système (/) des données personnelles (/home). Mais ici, le soucis est que la partition système ne fait que 14 GB, ce qui est trop petit pour faire vivre un GNU/Linux “de bureau”, avec un système graphique, des applications bureautiques, de vidéo, etc… La partition dédiée aux données personnelles faisant plus de 400 GB, dont la moitié de disponible, il est tout à fait envisageable de réduire celle-ci puis de réattribuer la place à la partition système.

Préparation

Sauvegardes

Toucher aux partitions n’est jamais un acte anodin. On doit toujours s’assurer d’avoir à disposition sa dernière sauvegarde récente. Ou en faire une si on n’est pas sérieux et qu’on n’en fait pas régulièrement… (je vous vois, là, pas la peine de vous planquer)

Clef bootable

Il n’est pas possible de redimensionner des partitions en cours d’utilisation. Et comme nous allons toucher à la partition système et à celle du home (utilisée dès la connexion de l’utilisateur), il faut démarrer sur un autre système, indépendant, pour faire les manipulations.

Le plus simple est de créer une clef USB bootable d’un GNU/Linux proposant une live. Ubuntu fait très bien l’affaire, mais il existe des distros taillées sur mesure et beaucoup plus légères pour ça : GParted Live (444 MB), Finnix (412 MB) ou SystemRescue (718 MB). DistroWatch est ton ami !

En général il suffit de télécharger l’iso puis de l’écrire sur la clef USB : dd if=~/Downloads/fichier.iso of=/dev/sdx bs=1M status=progress Ne surtout pas se tromper sur le paramètre of au risque d’écraser le disque. Utiliser lsblk pour identifier à coup sûr la référence de la clef.

Action !

Démarrage

Planter la clef dans la machine et allumer celle-ci. Dans la plupart des cas il faudra réussir à faire apparaitre un menu de boot pour démarrer depuis la clef USB, en appuyant sur la bonne touche dès le démarrage. F2, F9, F12, Del/Suppr et ESC sont les touches les plus fréquemment utilisées.

Repartitionnement

Une fois que la session live est en route, lancer gparted et lui faire analyser le bon disque. En général on se repère par la taille. En dernier ressort, ouvrir la machine et repérer le numéro de série du disque. Et si on se trompe, bah on a un backup.

Dans notre cas, le partitionnement ressemblait à ça :

partition système, partition étendue contenant une partition swap et une partition de données à moitié utilisée

A noter que la swap n’est pas du tout à l’échelle sur le schéma, elle ne fait en réalité que 4 GB.

Une partition étendue, c’est une sorte de conteneur qui contient d’autres partitions. Une partition swap sert uniquement au système, pour stocker des bouts de RAM sur le disque lorsqu’il faut libérer de la RAM. Si le système est éteint (éteint, pas en veille !), on peut sans problème la supprimer, aucune donnée ne sera perdue.

Pour augmenter la partition système à 50 GB (une taille confortable pour un système graphique de bureau), on a donc :

  • supprimer la partition swap (4 GB)
  • réduire la partition de données de 35 GB : 31 GB devant et 4 derrière
  • recréer une partition swap dans les 4 GB derrière la partition de données

Un autre plan aurait pu être choisi : on aurait pu déplacer la swap devant la partition de données, mais sur le moment on a un peu tatônné et supprimé la partition swap.

On se retrouve alors avec le partitionnement suivant :

partition système, partition étendue contenant un espace libre de 31 GB, la partition système réduite et une partition swap

Il suffit alors de réduire la partition étendue et d’agrandir la partition système :

partition système de 50 GB, partition étendue contenant la partition de données et une partition swap

GParted ne fait rien avant validation finale de toutes les opérations. Il faut donc valider, et patienter : le déplacement des données de la partition /home prend un peu de temps : environ 40 minutes.

A la fin, les partitions sont à la bonne taille, et on peut quitter GParted. Mais il faut encore redimensionner le système de fichier.

Redimensionnement

Une partition est un découpage du disque. Mais dans ce découpage, on peut encore y mettre ce qu’on veut comme système de gestion de fichiers : ext4, xfs, btrfs, zfs, ntfs, etc… La préparation du sysème de fichiers (filesystem en anglais et fs en abrégé), c’est ce qu’on appelle formater. Attention, nous n’allons rien formater ici, nous voulons conserver les fichiers existants, mais il faut lui dire de s’agrandir pour prendre toute la place disponible dans sa partition.

Notre utilisatrice utilise ext4 (en standard sur les dérivés Debian), et le redimensionnement se fait tout simplement avec la commande resize2fs /dev/sdx. Il n’est même pas nécessaire de préciser la taille, par défaut il prendra tout ce qui est disponible.

On peut maintenant redémarrer sur le système original et croiser les doigts…

Réparation de la swap

Magnifique, le système a redémarré. Un df -h nous apprend que la partition système fait maintenant bien 50 GB.

Mais nous avons vu passé quelques erreurs au boot. journalctl -b permet d’afficher les logs du dernier boot, et on identifie assez vite un problème avec le swap.

Ah ben oui ! Nous avons supprimé et recréé un swap, mais nous ne l’avons pas préparé ni assigné. En plus, le système cherche toujours l’ancienne partition. Avec un LC_ALL=C free -h, nous voyons bien que la ligne swpa ne contient que des 0.

Il faut donc formater la partition swap : mkswap /dev/sdx

Comme nous voulons l’utiliser tout le temps, il faut la monter au démarrage. On récupère son uuid avec lsblk -f et on édite le fichier /etc/fstab. Là on trouve la mention de l’ancienne partition swap. On remplace simplement son uuid par l’uuid de la nouvelle.

Avec un mount -a on demande le montage de tout ce qui ne l’est pas. On peut alors vérifier que free -h indique bien 4 GB pour la swap.

Un dernier redémarrage pour être sûr que tout fonctionne bien, et c’est tout bon.

Conclusion

Cette procédure n’est ni très complexe ni très longue, mais elle demande de faire bien attention à chaque étape pour ne rien casser.

Avoir une sauvegarde avant de commencer est indispensable.