Vous avez un disque "système" trop petit ou qui commence à vous jouer des tours ? Vous voulez tout déplacer sur un nouveau disque ? Suivez le guide...

Remarques préalables

Avant de brancher ou de débrancher un disque sur votre ordinateur, éteignez le ! Brancher ou débrancher des disques IDE alors que la machine tourne, c'est la catastrophe assurée...

Notez que, pour les plus joueurs d'entre vous, la norme SATA, elle, supporte le hotplug, et qu'il est donc possible de brancher un nouveau disque "a chaud" sur la carte mère. (Et ca fonctionne, je l'ai fait). Mais je vous le déconseille vivement quand même hein ;)

Prés-requis

Si votre disque système n'est pas sous LVM, vous allez forcément devoir démarrer l'ordinateur sur un live CD (ou usb ou...) pour effectuer la manipulation. Je vous conseille de télécharger SystemRescueCD et bien sur de créer un support bootable avec.

Premier cas : sans LVM

Préparation

Une fois le nouveau disque branché, démarrer l'ordinateur avec votre disque de boot. Si le nouveau disque dur n'est pas encore partitioné, c'est le moment de le faire. Profitez en aussi pour formater la nouvelle partition, en utilisant le format de votre choix. Pour tout ceci, utilisez les outils que vous voulez, ce n'est pas trop le sujet la...

Copie

Deux possibilités. Soit vous passez par un fichier image, stocké sur une partition temporaire, en utilisant fsarchiver, soit vous faites une copie directe entre les deux disques, en utilisant un outil adapté. cpio fera très bien l'affaire.

mkdir /source
mount /dev/sda1 /source
mkdir /destination
mount /dev/sdb1 /destination
cd /source
find . -print | cpio -pmu /destination

Deuxième cas : avec LVM

Si l'ensemble du système est dans un groupe de volume, alors il n'y a plus qu'a se faire plaisir. Supposons que le nouveau disque s'appelle sdc, Créez une partition primaire pour recevoir les données (via fdisk ou n'importe quoi d'autre) puis :

pvcreate /dev/sdc1
vgextend monvg /dev/sdc1
pvmove /dev/sda1     # Ancien disque

Toutes les données seront déplacées en tache de fond, le système restant parfaitement utilisable pendant l'opération.

Par expérience, je peux vous assurer que la commande pvmove, c'est du costaud. Arrêt électrique violent, transfert sur un disque externe qui avait un câble défectueux et autres bêtises dans le genre... Au cours de ma vie je lui en ai fait voir à cette commande. Je n'ai jamais rien perdu. En cas d’interruption quel qu’en soit la raison, le système reprendra le transfert (ou il en était) en relançant simplement la même commande. Un truc fiable je vous dit.

Une fois la migration terminée, vous pouvez retirer l'ancien disque du volume groupe (et éventuellement modifier le "type" de la partition concernée pour bien montrer qu'elle n'est plus sous LVM)

vgreduce monvg /dev/sda1 

Ré-installation d'un gestionnaire de boot

Dans les deux cas, vous devez maintenant ré-installer un gestionaire de boot sur le MBR du nouveau disque dur. Oubliez l'idée de copier simplement les 448 premiers octets du disque, cela ne fonctionnera probablement pas. A cette étape, tout dépend du gestionnaire de boot que vous utilisez. (lilo, grub, grub2 (alias grub-pc), gag ou autre.

Prenons l'exemple de grub-pc. Si vous avez de la chance, vous trouverez un moyen de booter sur votre nouveau disque dur alors que ce dernier n'est pas encore directement amorçable. (En passant par une option d'un live CD, permettant justement de booter un OS présent sur le HDD par exemple). Dans ce cas, c'est assez simple. Une fois l'OS lancé depuis le disque dur, installer grub sur le MBR en tapant (avec les droits root) :

grub-install /dev/sdX    # Remplacez évidement X par la bonne lettre...

Si vous ne parvenez pas à booter sur l'OS présent sur le nouveau disque dur, il faudra alors booter "totalement" à partir d'un live CD. Puis monter la ou les bonnes partitions, se "chrooter" à l’intérieur (et faire ainsi comme si vous aviez booté depuis le disque dur) et taper la même commande. Cette procédure est expliquée en détail au chapitre 4.1 de cette page.

Notes

Pour ceux qui ont un troisième disque (autre que la source et la destination donc) avec suffisamment d'espace dessus, il est aussi possible pour réaliser la copie de passer par une "image" des données. Je recommande alors l'usage de fsarchiver.

Conclusion

Changer son disque système à toujours été un peu galère. Et encore, sous linux c'est, au pire, une petite dizaine de commandes à taper. Sous Windows, en tout cas du temps ou je l'utilisais, seul l'utilisation de logiciels commerciaux permettaient de faire ce genre de chose. (et ça ne fonctionnait pas à chaque fois). Mort de rire rien que d'y repenser...