
Il est important de réaliser des sauvegardes de ces données de manière régulière. Il est tout aussi primordial de pouvoir les récupérer.
C’est pour cela que nous allons voir les étapes pour récupérer les données présentent sur un snapshot ZFS, représentant un disque block monté en iSCSI. Le tout sans aucune coupure de service. La récupération se basera sur la mise en place d’un clone.
Voici un bref détail de l’environnement, afin de comprendre les mécanismes pour la récupération de donnée.
Aujourd’hui nous avons pour notre laboratoire un Cluster de 4 serveurs tournant sur Proxmox ainsi que deux SANs interconnectés avec le Cluster. Les deux SANs utilisent ZFS comme système de fichier. De plus sous Proxmox, les disques virtuelles pour les VMs sont montés par du ZFS over iSCSI. Une réplication est en place entre les deux SANs. Enfin un serveur de backup récupère tous les soir les données du SAN maître biensur toujours par ZFS.
La stratégie de création des sauvegardes par le biais des snapshot n’est pas le sujet de ce billet. Je ne détaillerais pas sa mise en place.
En revanche pour détailler la procédure nous créons une machine virtuelle tournant sur CentOS. Elle contient un disque virtuelle de 16Gb, et un partitionnement par défaut en LVM sous ext4.


La première étape consiste à se connecter sur le SAN ayant le disque de la VM dont on souhaite récupérer les données. On liste les snapshots présent pour le disque en quesion.
zfs list -t snapshot | grep 102

Une fois avoir lister les snapshots, on peut passer au clonage de celui contenant les données à récupérer. Pour l’exemple je vais me diriger vers le snapshot datant du 18/06/2019 crée à 3h00 du matin.
zfs clone tank/vm-disks/vm-102-disk-0@2019-06-18-03-00-03 tank/vm-disks/vm-102-disk-0-restore
zfs list -t all | grep 102

A présent que le disque est cloné, installation des outils pour le client iSCSI. Ceci afin de pouvoir connecter le disque cloné. Et ne pas devoir couper la machine virtuel. Cela permettra aussi de récupérer le nom initiator du client iSCSI pour l’autoriser sur le target.
yum install iscsi-initiator-utils targetd
cat /etc/iscsi/initiatorname.iscsi

Il est à présent possible de monter notre clone sur le target.
targetcli
cd backstore
cd block
create vm-102-disk-0-restore /dev/tank/vm-disks/vm-102-disk-0-restore

Il faut a présent créer le LUN.
cd /iscsi/iqn.2019-05.lan.danslesairs.altair:cluster:storage/tpg1/luns/
create /backstores/block/vm-102-disk-0-restore
On autorise notre client à se connecter au target. Et par sécurité, je retire le LUN17 des autres clients. Pour au final avoir le LUN 17 que pour le client qui va monter le disque.
cd /iscsi/iqn.2019-05.lan.danslesairs.altair:cluster:storage/tpg1/acls/
create iqn.1994-05.com.redhat:bea35dcca62d
cd iqn.1993-08.org.debian:01:279719af8daa/
delete 17


Enfin on retourne à la racine, pour sauvegarder et quitter.
cd /
saveconfig
exit
Direction le client afin de monter le disque
iscsiadm --mode discoverydb --type sendtargets --portal 192.168.1.200 --discover
iscsiadm --mode node --targetname iqn.219-05.lan.danslesairs.altair:cluster:storage --portal 192.168.1.200 --login

On liste les disques présent sur la machine, ceci afin de voir notre disque clone.
fdisk -l

A présent je passe sur le montage du disque. Pour rappel, notre disque comptient des partition ext4 présent sur LVM. Il n’est donc pas possible de faire un montage traditionnel. Il faudra au paravent installer le package “LVM2” sur votre client. Puis lister les périphériques LVM. A noter la présence de deux volumes groupes “centos”, lié que le client se trouve sur CentOS ainsi que le disque cloné.
vgscan

Pour plus de précision on peut voir au niveau des partitions des disques présent sur la machine. Et voir que la partition /dev/sdd2 se trouve être notre partition à monter.
lvmdiskscan

Nous pouvons à présent activer notre partition à monter. Il faut dans un premier temps renommer le VG pour ne pas rentrer en conflit avec ceux de la machine client.
vgdisplay # Affichage des UUID pour renommer le VG
vgrename Tq0asK-zpR8-Io30-3G7g-NXzu-bsnE-54GNGL clone-centos
vgchange -ay
mkdir /mnt/clone-centos
mount /dev/clone-centos/root /mnt/clone-centos/
ls -al /mnt/clone-centos/



Voilà !!! Il reste plus qu’a récuperer les fichiers 😉

Leave a Reply