Faire une copie d'un disque

De UnixManiax
Aller à la navigation Aller à la recherche


Introduction

Si, comme moi, vous avez le disque système de votre serveur Solaris qui commence tout doucement à rendre l'âme, cette procédure va vous être utile.

La méthode que je vais utiliser ici m'a été donnée par un technicien Sun. Elle utilise ufsdump. On peut bien sûr utiliser dd, mais dans mon cas, le disque de destination était plus grand que celui de départ, donc j'en ai profité pour agrandir certaines partitions.

Le but est de créer une copie du disque système, en train de mourrir, pour le remplacer physiquement par un autre.

Dans l'exemple qui suit, le disque de départ est c0t0d0 (la partition système étant sur s2) et le disque de destination est c0t3d0. Une fois la procédure terminée, on éteindra le serveur, on mettra l'ancien disque à la poubelle, et le nouveau dans l'emplacement de l'ancien.


Copie de la table de partitions

Si vous ne voulez pas modifier la taille des partitions, le plus simple est d'utiliser "prtvtoc" pour la récupérer, puis "fmthard" pour la restaurer.

prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t3d0s2

Cette méthode a un inconvénient : elle ne fonctionne pas si la partition est montée. Dans le cas que j'ai eu, c'était la partition système, donc indémontable, et le lecteur CD étant HS, je ne pouvais pas booter sur un cd. Je n'ai donc pas pu l'utiliser. J'ai donc recréé complètement les partitions sur c0t3d0 avec la commande "format", en en profitant pour en agrandir quelques-unes.


Copie des données

Procédure pour chacune des partitions

créer le filesystem sur la partition de destination

newfs /dev/rdsk/c0t3d0s0

la monter dans /mnt

mount /dev/dsk/c0t3d0s0 /mnt

aller dedans

cd /mnt

faire un ls et vérifier qu'on a un répertoire lost+found (pour s'assurer qu'on est bien à la racine d'une partition)

ls

effectuer la copie des données

ufsdump 0f - /dev/rdsk/c0t0d0s0 | ufsrestore rf -

Quelques précisions :

  • ufsdump 0f (0=sauvegarde totale ; f=fichier à écrire (ici la sortie standard "-"))
  • ufsrestore rf (r=récursif ; f=fichier à lire (ici, ce qui a été transmis par le pipe "-"))

quitter la partition

cd /

la démonter

umount /mnt

recommencer pour toutes les partitions (s1, s2, s3...)

Recommencer les étapes précédentes pour toutes les partitions.


Procédure supplémentaire pour la partition de boot (s0)

aller dans /usr/platform/sun4u/lib/fs/ufs/

cd /usr/platform/sun4u/lib/fs/ufs/

vérifier qu'on a bien un fichier bootblk dedans

ls

copier le secteur de boot sur le nouveau disque pour le rendre bootable !

/usr/sbin/installboot ./bootblk /dev/rdsk/c0t3d0s0


Pour finir, il faut arrêter le serveur, remplacer l'ancien disque par le nouveau, et redémarrer. Si le nouveau disque boote bien et que toutes les données sont présentes, on peut jeter l'ancien disque (il est quand même plus prudent de le garder quelques semaines au cas où).