Outils pour utilisateurs

Outils du site


disk_raid_transfert

Ceci est une ancienne révision du document !


Introduc

Là, on va voir comment transferer un disk (et en particulier un RAID 1) sur une autre bécanne. En passant, les disks sont plus grand et change d'interface: hda et hdb deviennent respectivement sda et sdb.

Copier un RAID 1

Arreter temporairement le superflu

Comme on va arreter le RAID 1 en plein vol, on va limiter la casse en stoppant temporairement quelques services non-vitaux, surtout s'ils travaillent sur les disks.
La coupure devrait avoir lieu quelques minutes… donc, pas de panique.
Exemples:

# /etc/init.d/gdm stop
# /etc/init.d/postfix stop
# /etc/init.d/bind9 stop

Sortir un disk du RAID

# mdadm /dev/md0 --fail /dev/hdb1
# mdadm /dev/md0 --remove /dev/hdb1

Et voila, pour la première partition.

# mdadm /dev/md1 --fail /dev/hdb2
# mdadm /dev/md1 --remove /dev/hdb2

Et voila pour la partition du swap.

Maintenant, tout le disk hdb est sortie du RAID, on va pouvoir jouer avec.
On a un etat du RAID à l'instant t sur le disk hdb. Le disk hda continue de travailler normalement.

Remettre les services en route

Exemples:

# /etc/init.d/gdm start
# /etc/init.d/postfix start
# /etc/init.d/bind9 start

Transfert via le NET

Si on ne veut rien démonter, et qu'on utilise des equipements rapides ou qu'on a beaucoup de temps, on va faire une copie du disk hdb via le réseau local !

Un petit install peut etre necessaire:

# apt-get install netcat gzip

Sur la (nouvelle) bécanne qui va recevoir la copie, faire ceci:
(On suppose qu'on veut copier sur le disk sdb)

# nc -lp 32767 | gunzip | dd of=/dev/sdb

Sur la bécanne qui detient la copie du RAID en hdb :

# dd if=/dev/hdb | gzip | nc 192.168.0.250 32767

Le pipe vers gzip et gunzip peut être jugé superflu et inutile dans certains cas… dépend du contenu du disk.
Le transfert démarre immediatement… et peut durer des heures… Une bonne nuit de sommeil pour moi.

de hd à sd

Nous voila sur la nouvelle machine, avec un disk en sdb qui est la copie de hdb de l'autre machine.

Simples manipulations

Vous voila sur un Live CD (ou avec un systeme rapidement installé sur sda, ce qui etait mon cas) et vous aimeriez verifier l'etat de la copie:

# fdisk /dev/sdb -l

Verifier que le disk est bien une partition RAID:

# mdadm --examine /dev/sdb1

En passant, cela nous retourne UUID. Monter le disk avec son RAID:
(J'utilise /dev/md2 comme ça…)

# mdadm --assemble /dev/md2 /dev/sdb1

Et comme j'ai un avertissement:

# mdadm --run /dev/md2

Et voila, le RAID est reviendu a la vie, sur 1 seul disk bien sur.
Mounter le contenu du disk (par exemple):

# mkdir /mnt/mymd
# mount /dev/md2 /mnt/mymd

Et voila, on peut jouer avec le contenu du disk. On peut se risquer à faire un:

# e2fsk /mnt/mymd

Parce que rappellez-vous: nous avons arreter le RAID en plein vol, et il y a peut être des erreurs qui sont apparus.

Préparer le Boot

On suppose que le contenu de la copie fraiche est disponible dans /mnt/mymd .

Dejà, editer /boot/grub/menu.lst et s'assurer qu'il n'y a pas de référence à hd?, mais bien md?.

device.map

Editer /boot/grub/device.map et transformer les hd? en sd?

fstab

Si necessaire, corriger /etc/fstab , qui peut faire des references (maintenant) erronées: méfiez-vous des UUID.

mdadm.conf

Corriger /etc/mdadm/mdadm.conf afin qu'il fasse reference aux disks sd? , et non plus hd?.

Reboot

Rebooter sur le disk sdb.

Preparer le swap

L'objectif initial est non seulement de changer de bécanne, mais aussi d'agrandir le RAID.
Pour cela, j'ai besoin de detruire la partition RAID du swap et la recreer a la fin du disk.

Pour cela, j'utilise cfdisk car il place correctement la nouvelle partition à la fin. (j'ai d'abord essayé avec fdisk, mais je n'ai pas reussi sans avertissement etrange).

Donc: (en supposant que le RAID est unmounter)

# cfdisk /dev/sdb
  1. Supprimer la partition RAID du swap (c'est /dev/sdb2 chez moi)
  2. Recreer la partition RAID a la fin du disk. On peut en profiter pour modifier la taille aussi…
  3. Forcer le TYPE fd pour RAID autodetect.
  4. WRITE et QUIT

Il faut bien veuiller que l'ordre de la partition reste la même: sdb2 reste sdb2.

Retour sous Shell, on créé le (nouveau) RAID pour le swap:

# mdadm -Cv /dev/md3 -l1 -n2 missing /dev/sdb2

Regarder le nouveau RAID:

# cat /proc/mdstat

Creer le swap:

# mkswap /dev/md3

En deplacant le swap, je crois qu'on change son UUID donc bien apporter la modification dans le fstab et mdadm.conf du futur disk de BOOT.

Connaitre le UUID:

# mdadm --examine /dev/sdb2

Apporter les modifications dans (mount sdb1)/etc/fstab et (mount sdb1)/etc/mdadm/mdadm.conf.

Booter dessus

(D'aprés mes tests, j'ai pu booter sur ce disk)

Booter sur le disk sdb . Si ca ne fonctionne pas pour vous, vous allez devoir improviser avec un live CD par exemple.

Agrandir le RAID

Voila, on donc un disk en sdb sur lequel on a booté.
On a un disk en sda qui est identique à sdb par sa taille physique (au moins).

Mais sda ne sert plus a rien: eventuellement l'unmounter.

Ecrasons sda ! Copier les partitions: (c'est pour etre certains de partir sur les mêmes bases)

# sfdisk -d /dev/sdb | sfdisk /dev/sda

Voila, sda a les même partitions que sdb… mais rien de coohérent encore dans les partitions.

Agrandir la partition principale (accessoirement celle sur laquelle on boot aussi):

# cfdisk /dev/sda
- virer **''sda1''**
- recreer **''sda1''** en prenant la place souhaité. (toute ?)
- BOOT activé
- TYPE 0xfd (RAID autodetect)
- WRITE & QUIT

Ajouter sda au RAID: La partition de swap (la + rapide a mounter):

# mdadm /dev/md1 --add /dev/sda2

La partition de BOOT etc…:

# mdadm /dev/md0 --add /dev/sda1

Où en est-on ?

# cat /proc/mdstat

Lorsque /dev/sda1 est totalement restauré.

Assurez-vous que la configuration est toujours en phase…

# mdadm --examine /dev/sda1 

et

# mdadm --examine /dev/sda2

sont bien en phase avec mdadm.conf ?

Si non:

# mdadm --detail --scan

Et faire coincider avec mdadm.conf.

FIXME

disk_raid_transfert.1189455494.txt.gz · Dernière modification : 2007/09/10 20:18 de thierry