CorbeilleNews wrote:En effet, c'est sur le NAS de test mais à quoi va servir la sauvegarde ? Vous parlez bien de la sauvegarde faite dans la rubrique sauvegarde et restauration du WEBGUI ?
Sinon, je me demande toujours ce que contient cette sauvegarde si on peux exporter un Pool et l'importer à partir d'une nouvelle clé sans cette sauvegarde. Mais peut être qu'il faut absolument l'exporter avant pour pouvoir l'importer ?
Merci de me confirmer.
La sauvegarde du webgui sert a sauvegarder la configuration des services du nas, le webgui étant comme un "frontend", il se base sur un fichier XML.
La configuation du pool est aussi dans cette configuration, mais ce n'est pas la configuration "propre au pool", c'est juste utile en cas de rechargement pour qu'il retrouve directement "ses petits" sans faire un import, car vous pourriez avoir 2 pools de dispo et dans votre config N4F, n'en utiliser que un.
Cette configuration est un "tout" et c'est pour çà que la config-ZFS de N4F peut être désynchronisé.
Le pool ZFS lui possède sa propre config, qui est intégré au sein du pool. Quand vous faites un "import", ZFS va lire dans tous ses périphérique ce qu'il peut y trouver, dès qu'il trouve une config, il regarde si elle est utilisé (si elle a le statut "d'exporté)".
ZFS est toujours content d'avoir des pools avec ce status "exporté" donc, il faut le faire, mais si votre clef est fichue et que vous en faites une neuve, ZFS va détecté un pool mais il va voir aussi que ce pool "servait", en gros un pool non exporté veut dire "je sers a quelque chose", un pool exporté veut dire "je ne suis plus utilisé".
C'est pour cela que l'option -f sert a forcer l'import (pour dire "je sais que tu étais utilisé mais désormais c'est moins qui vais t'utiliser"). L'import et l'export est uniquement un status d'utilisation, celà n'interfère pas sur les données.
Ensuite ZFS va rassembler tous les disques du pools et voir si il peut en faire quelque chose.
Par exemple, quand vous avez un pool de 14 disques, vous pouvez brancher vos disques n'importe comment, sauf que l'import et l'export vont participer a mieux gérer les choses.
Prenons ce cas de 14 disques:
1) votre pool fonctionne correctement, vous l'exportez, ensuite vous mélangez tous les disques (comme un jeu de cartes) et ensuite vous faites un import, et bien ZFS va retrouver son pool comme si de rien était, quand vous ferez un zpool status, vous allez voir les nouvelles positions de disque.
2) si par contre on ne fais pas d'export avant de mélanger les disques. au démarrage ZFS va vous dire "oulà, les données sont corrompues (car il ne va pas allez voir dedans qui est qui). En revanche, si vous lui faites un import -f, alors, il va regarder tous les dev et va reconstituer le pool disques par disques. En fonction de ce qu'il trouve il vous dira si il peut ou pas.
C'est la que ZFS est vraiment bien, car la config se trouve en fait dans le pool. la config liste juste la structure. ZFS, lui va lire cette config et va recoller les éléments pour la mettre en état.
C'est la grande différence avec les autres OS, car celle-ci est figé dans le fstab ou alors monté d'une manière plus ou moins controlé, là avec ZFS, aucune question a ce poser.
Si on veut imager les choses:
ZFS se comporte comme une personne déballant un carton (le carton étant une zone de stockage)
- un pool exporté, est un carton avec les dev dedans et un papier qui dit ce qu'il y a normalement dans le carton, sur le papier il est écrit "à prendre")
- un pool non exporté est la même chose mais avec inscrit sur le papier "est en cours d'utilsation")
La synchro est l'inventaire du carton (elle dit normalement, "Il y a çà dedans")
C'est pour çà que ZFS peut fonctionner sans synchro et sans webgui. Car il sait ouvrir le carton et peut se débrouiller tout seul ... à condition qu'il trouve tout ce qu'il faut.
Pour aller plus loin, voici un exemple de carton dans le carton, je vais créer un pool à partir de fichier dans un pool existant, c'est juste pour montrer les chose.
créons deux disques à partir de simples fichiers
nas6: n6d2000 # dd if=/dev/zero of=./disk1 bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 0.125503 secs (835498332 bytes/sec)
nas6: n6d2000 # dd if=/dev/zero of=./disk2 bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes transferred in 0.110337 secs (950341305 bytes/sec)
puis, on en fais un pool en mirroir
nas6: n6d2000 # zpool create test mirror /mnt/n6d2000/disk1 /mnt/n6d2000/disk2
on visualise le pool:
nas6: n6d2000 # zpool status
le premier est mon pool en prod (fais avec de vrais disques)
pool: n6d2000
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
n6d2000 ONLINE 0 0 0
ada1 ONLINE 0 0 0
cache
da0 ONLINE 0 0 0
da2 ONLINE 0 0 0
da3 ONLINE 0 0 0
errors: No known data errors
le suivant, est notre pool fait avec des fichiers)
pool: test
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/mnt/n6d2000/disk1 ONLINE 0 0 0
/mnt/n6d2000/disk2 ONLINE 0 0 0
errors: No known data errors
Maintenant, exportons le pool test:
nas6: n6d2000 # zpool export test
et demandons l'import:
nas6: n6d2000 # zpool import
nas6: n6d2000 #
rien, pas de réponse, pourquoi ?, parce que ZFS a regardé sa zone devant lui, mais notre pool test se trouve dans un carton planqué dans le fond de notre gros carton:
Alors, donnons lui le chemin ("va chercher dans ce répertoire"),cela va lui donner une autre aire de jeu.
nas6: n6d2000 # zpool import -d /mnt/n6d2000/
pool: test
id: 7596942184869793794
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
test ONLINE
mirror-0 ONLINE
/mnt/n6d2000/disk1 ONLINE
/mnt/n6d2000/disk2 ONLINE
nas6: n6d2000 #
et il a retrouvé notre pool.
Oui, mais il dit juste "J'ai trouvé çà et je peux le monter", donc, si on veut le monter:
nas6: n6d2000 # zpool import -d /mnt/n6d2000/ test
on vérifie:
nas6: n6d2000 # zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
n6d2000 1.81T 1.30T 522G 71% 5.65x ONLINE -
test 95.5M 146K 95.4M 0% 1.00x ONLINE -
Allons plus loin !
on l'exporte, puis on renomme disk2 en disk3
nas6: n6d2000 # mv disk2 disk3
On dit à ZFS "va cherche dans ce carton !"
nas6: n6d2000 # zpool import -d /mnt/n6d2000/ test
hé hé, on vérifie, et:
nas6: n6d2000 # zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
n6d2000 1.81T 1.30T 522G 71% 5.65x ONLINE -
test 95.5M 229K 95.3M 0% 1.00x ONLINE -
ZFS a fait les choses tout seul, il a pris en compte les éléments de ce carton et a analysé qu'est-ce qu'il pouvait en faire.
Poussons un peu le bouchon !
On va changer le nom de disk1 en toto pendant que le pool est actif
nas6: n6d2000 # mv disk1 toto
on vérifie:
nas6: n6d2000 # zpool status test
pool: test
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/mnt/n6d2000/disk1 ONLINE 0 0 0
/mnt/n6d2000/disk3 ONLINE 0 0 0
errors: No known data errors
Le pool n'a pas changé car le fichier est utilisé, mais lorsqu'il sera exporté, la structure sera modifiée.
On va écrire quelque chose dedans (juste pour le principe).
nas6: n6d2000 # echo "gggggggggggggggggggggg">/test/test.txt
On voit que le pool fonctionne toujours.
nas6: n6d2000 # zpool status test
pool: test
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/mnt/n6d2000/disk1 ONLINE 0 0 0
/mnt/n6d2000/disk3 ONLINE 0 0 0
errors: No known data errors
On l'exporte
nas6: n6d2000 # zpool export test
Et on l'importe
nas6: n6d2000 # zpool import -d /mnt/n6d2000/ test
On vérifie:
nas6: n6d2000 # zpool status test
pool: test
state: ONLINE
scan: none requested
config:
NAME STATE READ WRITE CKSUM
test ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/mnt/n6d2000/toto ONLINE 0 0 0
/mnt/n6d2000/disk3 ONLINE 0 0 0
errors: No known data errors
On voit que la structure du pool a changé.
Mais on voit surtout que ZFS sait se débrouiller "comme un grand".
C'est pour cela que je préfère l'utilisation en ligne de commande et que en cas de "choses bizarres", j'exporte et réimporte le pool, car cela remet quelquefois les pendules à l'heure.
J'espère que cette petite démo a été compréhensible et quelle peut donner un aperçu de la puissance de ce FS sur l'import et l'export.