Overblog
Suivre ce blog
Editer l'article Administration Créer mon blog
24 octobre 2008 5 24 /10 /octobre /2008 16:52
Cela restera à jamais gravé dans ma mémoire. Suite à un ajout de volumétrie dans un diskgroup, la ressource HAS du cluster n'a pas pu s'activer correctement sur aucune des nodes. Le message à la console était clair "diskgroup : no valid configuration copies". Je suis passé des cris aux larmes : il s'agissait d'un cluster de prod (instance SAP de 3 To avec 120 sapdatas). J'ai retroussé mes manches, et j'ai appliqué la procédure. C'est simple dans la théorie mais très stressant dans la pratique.... en tout cas c'est expliqué en dessous...

Pour qu'un diskgroup VxVM soit importé sur un serveur, il est nécessaire que son nombre de copie soit valide. Dans le cas contraire le diskgroup ne peut importé. Cela ne veut pas dire que les données soient perdues mais que la structure VxVM est invalide. La méthode suivante permet de reconstruire un diskgroup VxVM (sans perte des données physiques... enfin normalement).

Avant de commencer, il est nécessaire de posséder une sauvegarde de la structure. Pour la récupérer il faut l'enregistrer dans un fichier (le mieux est de la sauvegarder régulièrement via un script exécuté par la cron).

Sauvegarde de la structure VxVM


# vxdisk list
DEVICE       TYPE            DISK       GROUP       STATUS
c0t0d0s2     auto:sliced     disk1      zonesdg     online
c0t1d0s2     auto:sliced     disk2      zonesdg     online
c0t2d0s2     auto:sliced     disk3      zonesdg     online
c0t3d0s2     auto:sliced     disk4      zonesdg     online
c0t4d0s2     auto:sliced     disk5      zonesdg     online
c0t5d0s2     auto:sliced     rootdisk   rootdg      online
c1t0d0s2     auto:sliced     mir1       zonesdg     online
c1t1d0s2     auto:sliced     mir2       zonesdg     online
c1t2d0s2     auto:sliced     mir3       zonesdg     online
c1t3d0s2     auto:sliced     mir4       zonesdg     online
c1t4d0s2     auto:sliced     mir5       zonesdg     online
c1t5d0s2     auto:sliced     rootmir    rootdg      online
c3t0d0s2     auto:sliced     rootalt    rootdg      online

# vxdisk list c0t0d0
...
config   priv 000017-000247[000231]: copy=01 offset=000000 enabled
config   priv 000249-007310[007062]: copy=01 offset=000231 enabled
log      priv 007311-008415[001105]: copy=01 offset=000000 enabled
 
...

# /etc/vx/diag.d/vxprivutil list /dev/rdsk/c0t0d0s3
config   priv 000017-000247[000231]: copy=01 offset=000000 enabled
config   priv 000249-007310[007062]: copy=01 offset=000231 enabled
log      priv 007311-008415[001105]: copy=01 offset=000000 enabled


La structure VxVM est bien présente sur ce disque (config enabled). La sauvegarde est alors possible.

 

# /etc/vx/diag.d/vxprivutil dumpconfig /dev/rdsk/c0t0d0s3 > /tmp/zonesdg

 

Si vous prévérerz sauvegarder la config régulièrement ci-joint un petit script à faire exécuter par la cron.

 

Réinitialisation des disques


On recherche l'ensemble des disques appartenants au diskgroup (attention au éventuelle duplication dans le fichier /tmp/zonesdg pour les volumes et les plexes : si nécessaire les supprimer ou rejouer la sauvegarde de la structure).

 

# cat /tmp/zonesdg | vxprint -D - -md | /usr/xpg4/bin/grep -e "^dm" -e "last_da_name" > /tmp/disklist

 

La liste des disques générées correspond dans notre cas à :


dm disk1
last_da_name=c0t0d0s2
dm disk2
last_da_name=c0t1d0s2
dm disk3
last_da_name=c0t2d0s2
dm disk4
last_da_name=c0t3d0s2
dm disk5
last_da_name=c0t4d0s2
dm mir1
last_da_name=c1t0d0s2
dm mir2
last_da_name=c1t1d0s2
dm mir3
last_da_name=c1t2d0s2
dm mir4
last_da_name=c1t3d0s2
dm mir5
last_da_name=c1t4d0s2

 

Une fois la liste obtenu il faut réinitialiser les disques (attention à la taille de la private). Il est impératif que les disques que l'on initialise soit les mêmes disques physiques (attention au changement de contrôlleurs si reboot).

 

# ksh 
# for disk in $(cat /var/tmp/disks) 
do 
/etc/vx/bin/vxdisksetup -i $disk 
done

 

Création du diskgroup et ajout des disques au diskgroup


Une fois les disques initialisés il faut recréer le diskgroup et y inclure les disques. Il est impératif que les noms dm correspondent bien au disques physiques.

 

# vxdg init zonesdg disk1=c0t0d0s2
# vxdg -g zonesdg adddisk disk2=c0t1d0s2
# vxdg -g zonesdg adddisk disk3=c0t2d0s2
...
# vxdg -g zonesdg adddisk mir5=c1t4d0s2

 

Recopie de la structure VxVM

Si les disques phydiques intégrés au diskgroup sont bon et que les noms dm correspondent bien au bon disque physiques alors la configuration VxVM peut être reclaquée.

 

# cat /tmp/zonesdg | vxprint -D - -hmvps > /tmp/vxmakefile
# vxmake -g zonesdg -d /tmp/vxmakefile

 

Activation des volumes

 

# vxrecover -g zonesdg -s -b
# ksh
# for vol in $(vxprint -q -g zonesdg -v | awk '{print $2}')
do
vxvol -g zonesdg -f start $vol
done

 

Normalement, il suffit de faire un check (fsck) sur les systèmes de fichiers (pour être sur) puis de les monter.

 

 

Partager cet article

Published by gloumps - dans lvm
commenter cet article

commentaires