Archives

Déplacer sa partition /var vers une autre partition

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 /var dans une autre partition.

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



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 depuis un Live CD.

On peut en effet le faire depuis le système en fonctionnement mais souvent les fichiers sont utilisés et cela peut causer d'éventuelles corruptions de données.



Se connecter en tant que root (qu'on soit sur un live CD ou sur le système en fonctionnement).





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 avec l'utilitaire cfdisk :



Code BASH :
cfdisk /dev/sdb




Il est possible de préparer sa partition sur le même disque aussi mais s'assurer que la partition racine se situe "avant" la future partition /var 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)




Dans cet exemple, ma future partition /var 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 ensuite cette partition dans un point de montage temporaire :



Code BASH :
mkdir /vartmp
mount /dev/sdb1 /vartmp




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



Code BASH :
mount | grep vartmp




Le résultat doit ressembler à ceci :



Code BASH :
/dev/sdb1 on /vartmp 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 /var vers la partition nouvelle :



Code BASH :
 rsync -avzh /var/ /vartmp/




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



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 :) )





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 /etc/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 /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 /etc/fstab /etc/fstab.old




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



Code BASH :
nano -w /etc/fstab




On ajoute un commentaire et la ligne qui va bien :

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




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



Code BASH :
 ls -l /dev/disk/by-uuid | grep sdb1




Ce qui donne :



Code BASH :
lrwxrwxrwx 1 root root 10 30 sept. 15:57 9a50541f-159e-46c3-a2ce-a7a3de23e82c -> ../../sdb1




9a50541f-159e-46c3-a2ce-a7a3de23e82c est l'UUID. Ainsi la ligne dans le fstab se transforme en :



Code BASH :
# Partition /var
UUID=9a50541f-159e-46c3-a2ce-a7a3de23e82c       /var   ext4    defaults        0 2






Suppression de l'ancien /var





Maintenant, il ne reste plus qu'à supprimer les données de l'ancien /var afin de libérer de la place sur la partition racine :



Code BASH :
rm -rf /var/*




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 redémarre :



Code BASH :
reboot




Constater que tout fonctionne



Enfin, on peut supprimer le point de montage temporaire :



Code BASH :
rm -rf /vartmp




:magic: