Gestion des disques et stockage

Tuto : Ajouter une partition /home ou /var ou autre après installation

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction





Il peut arriver d'installer une distribution avec une seule partition (la partition / appelée racine). Or, après installation, on souhaiterait séparer notre dossier utilisateur /home dans une autre partition.

Cet article décrit la création de cette partition et le déplacement des données associées.

Cela fonctionne quele soit la partition qu'on souhaite ajouter (/var ...)

Dans tous les cas, sauvegardez vos données avant l'opération.



Prérequis





Si le système utilise SELinux, comme Fedora ou CentOS, il est fortement conseillé de désactiver SELinux et de redémarrer le système.

En effet, SELinux est un système de protection et va empêcher de faire la suite des opérations.


Démarrer le système avec un Live CD de son choix.



La préparation des partitions





Pour mon cas, j'ai inséré un deuxième disque dur dans mon ordinateur. Il s'appelle /dev/sdb

On créé une partition dessus :

Il est possible de réduire ou déplacer ses partitions depuis le Live CD, mais s'assurer que la partition racine se situe "avant" la partition /home dans la vue de GParted si on procède à sa création. Sinon, les partitions sont renumérotées et cela peut poser problème au niveau de l'amorçage.

(Par exemple sda2 devient sda3 et du coup, la 2ème partition ne contient plus le système à démarrer, constaté même si UUID est utilisé, car ça pose un souci au niveau de GRUB)


Dans cet exemple, ma future partition /home sera sdb1. Elle sera identifiée en tant que tel dans la suite.

On formate la partition en ext4 :

Code BASH :
 mkfs.ext4 /dev/sdb1


On monte sa racine dans /mnt (exemple ici si la racine est sda2) :

Code BASH :
mount /dev/sda2 /mnt


Ensuite la nouvelle partition /home précédemment créée dans un point de montage temporaire de notre arborescence :

Code BASH :
mkdir /mnt/hometmp
mount /dev/sdb1 /mnt/hometmp


On vérifie que la partition est bien montée et en lecture écriture :

Code BASH :
mount | grep hometmp


Le résultat doit ressembler à ceci :

Code BASH :
/dev/sdb1 on /mnt/hometmp type ext4 (rw)


Déplacer les données





Plusieurs méthodes peuvent être employées : archive tar ou utilisation de cp ou utilisation de rsync.

Je vais montrer ici l'utilisation avec rsync.

En une seule commande, on va copier les données de /home vers la partition nouvelle :

Code BASH :
 rsync -avzh /mnt/home/ /mnt/hometmp/


Il faut bien spécifier le "/" à la fin des deux dossiers home et hometmp !!

On attend que la console nous redonne la main.

Grâce aux options (et notamment -a) on va conserver les permissions, les liens symboliques et plein d'autres attributs.

Une fois fait, vérifier que tout s'est bien copié (à coup de ls :) )

Ou bien en regardant la taille des dossiers :

Code BASH :
du -s /mnt/home
du -s /mnt/hometmp




Créer le point de montage dans le fstab





Maintenant que nos données sont déplacées, il faut créer une entrée dans le fichier fstab pour que la nouvelle partition soit montée au démarrage du système.

Voici mon fichier fstab avant la modification.

Code BASH :
 more /mnt/etc/fstab
 
# / was on /dev/sda2 during installation
UUID=b29e1091-170a-450b-a843-3ca511e8131a       /       ext4    noatime,nodiratime      0 1
# swap was on /dev/sda1 during installation
UUID=c6cb3562-4ae0-41bb-affa-da051ab6e2b5       none    swap    sw      0 0
proc            /proc           proc    defaults                0 0
shm             /dev/shm        tmpfs   nodev,nosuid,noexec     0 0
 


On sauvegarde son ancien fichier fstab via :

Code BASH :
 cp -p /mnt/etc/fstab /mnt/etc/fstab.old


Ensuite on édite le fichier fstab et on ajoute la ligne de la partition /home :

Code BASH :
nano -w /mnt/etc/fstab


On ajoute un commentaire et la ligne qui va bien :

Code BASH :
# Partition /home
/dev/sdb1       /home   ext4    defaults        0 2


Si on veut utiliser les UUID, on peut récupérer le numéro UUID de la partition sdb1 via :

Code BASH :
 blkid | grep sdb1


Ce qui donne :

Code BASH :
/dev/sdb1: LABEL="HOME" UUID="249cbebb-64c8-4d2b-87d8-34f634927fb6" TYPE="ext4" PARTUUID="ae37103e-01"


249cbebb-64c8-4d2b-87d8-34f634927fb6 est l'UUID. Ainsi la ligne dans le fstab se transforme en :

Code BASH :
# Partition /home
UUID=249cbebb-64c8-4d2b-87d8-34f634927fb6       /home   ext4    defaults        0 2


Plus d'infos ici : http://www.linuxtricks.fr/wiki/fstab-explications-sur-le-fichier-et-sa-structure




Démontage et suppression de l'ancien /home





Maintenant, il ne reste plus qu'à démonter la nouvelle partition /home de son point de montage temporaire :

Code BASH :
 umount /mnt/hometmp


Et de supprimer les données de l'ancien /home afin de libérer de la place sur la partition racine :

Code BASH :
rm -rf /mnt/home/*


Si on ne supprime pas les données, elles seront toujours présentes (et donc occuperont de l'espace disque) mais seront inaccessibles (masquées sous le point de montage).

On supprime aussi le point de montage temporaire en s'assurant qu'il ne soit plus monté (la commande ne doit rien renvoyer) :

Code BASH :
mount | grep hometmp


Puis on supprime ce point de montage temporaire :

Code BASH :
rm -r /mnt/hometmp


Enfin redémarrer :

Code BASH :
reboot


Constater que tout fonctionne :magic: