Déplacer une VM d'un disque à un autre

Status
Not open for further replies.

Kuo

Dabbler
Joined
Nov 3, 2018
Messages
22
Bonjour,

Je me décide à poster ici après de longues recherches infructueuses :(
J'ignore si mon problème a déjà été traité, et je suppose que oui, mais je n'ai pas été capable de le trouver et/ou de le comprendre.

Déjà, j'ai bien consciences d'avoir des problèmes de vocabulaires. La première chose qui me vient à l'esprit, c'est quelles sont les différences entre " pool", " dataset" et " volumes" ?

Bon, j'en viens à mon problème.

Je dispose de 2 paires de disques durs (en RAID 1). Je les ai appelé WDS et SE8.
Sur WDS, j'y ai installé une machine virtuelle (sous Debian). Seulement je souhaite déplacer cette machine virtuelle sur SE8 afin de pouvoir retirer WDS du serveur (et m'en servir pour autre chose).
Je peux tout à fait l'éteindre temporairement si nécessaire, pas besoin de le faire à chaud (j'ai cru comprendre qu'il y avait des solutions pour le faire à chaud ou à froid, mais je n'ai pas réussi à comprendre comment).

Bon, apparemment je dois faire une snapshot et/ou un clone. Alors déjà ce que je ne comprends pas, c'est qu'une snapshot ou un clone ne prennent que très peu de place. Ce n'est donc pas une copie pure et dure. Donc, qu'est-ce que ça contient concrètement ?

zfs list : https://i.gyazo.com/1c092ce6625876a03e0fb968309d32bc.png
zfs snapshot : https://i.gyazo.com/25a31e06ea5c704348bb82626b1cab4f.png ça semble fonctionner
zfs clone : https://i.gyazo.com/c06eba9de3f13dcf713873bc076743eb.png là ça coince... Je dois rester sur WDS ?!

Bon, c'est probablement pas la bonne solution.

J'ai repéré dans le manuel zfs les commandes zfs send et zfs receive. Mais je ne comprend pas leur fonctionnement. Et le manuel est trop complet pour moi, je me perds. D'autant qu'il y a beaucoup d'options.
En cherchant je suis tombé entre autre sur ce topic : https://forums.freenas.org/index.ph...ls-to-a-10tb-transfer-disk.59852/#post-424533
Colmconn nous dit qu'il faut vérifier quelles données sont envoyées. Ce que je n'ai pas trouvé. Et surtout, ce qui suppose que tout n'est pas envoyé. Or je veux copier intégralement ma VM.

Je sollicite votre aide donc. Comment puis-je faire ?

Merci ! :D
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Bonjour,

Un petit point sur la terminologie alors... j'avoue que j'ai du regarder aussi pour être sûr de ma réponse! :) Bien souvent on fait des abus de langages ou raccourcis.

Pools - Volumes: ces deux termes semblent désigner la même chose, comme le dit la doc dans le chapitre 8.1:
In ZFS terminology, groups of storage devices managed by ZFS are referred to as a pool. The FreeNAS® graphical interface uses the term volume to refer to a ZFS pool.
Bref, c'est un groupe de disques qui forment un volume (ou un pool) avec un niveau de défaillance possible (Mirror, RAIDz-1, RAIDz-2, ...).
Dans ton cas, il y a deux volumes, WDS et SE8 (si je comprends bien en miroir (RAID1) et non en RAIDz-1).

Dataset: c'est le plus "petit" élément d'organisation de ZFS (c'est à dire sur lequel on peut appliquer les propriétés de ZFS (comme les snapshots, la compression, les quotas...)). L'assimiler à un dossier est un peu restrictive.
Dans FreeNAS, on va trouver un volume (organisation physique des disques) avec un ou plusieurs datasets (organisation logique) dans lesquels seront stockés les données.



Pour ce qui est de la question qui nous intéresse, la copie d'un dataset d'un volume vers un autre, personnellement je n'ai pas encore fait cela en local (je l'ai fait d'un serveur à un autre en utilisant rsync mais dans ce cas, je pense que ça n'est pas très adapté.).
Il semblerait en effet que passer par les snapshots et zfs send/receive serait une bonne solution. Sinon, on peut aussi passer pas un cp en ligne de commande.

Pour utiliser zfs send/receive, il faut avoir déjà un snapshot du dataset que l'on souhaite copier. Cela se fait par l'interface graphique dans "Storage -> Volumes" et sélectionner un dataset puis cliquer sur l'icône en bas "Create snapshot" (pour FreeNAS 9.10 en tout cas). On peut aussi configurer des snapshots automatiques, ce qui peut être une bonne idée.

Ensuite, pour l'utilisation de zfs send/receive, je regardaerai en détail ce post qui me semble donner des indications intéressantes (que je confirmerai en regardant les commandes zfs send et zfs receive).

Si c'est possible, je ferai un test avant de faire ça sur le jeu de données réelles!! ;-)
(à moins d'avoir un backup...)
S'il n'y a pas la possibilité de le tester sur une autre machine, alors je créerais deux datasets (sur chacun des volumes) pour tester sur un jeu de données réduit et non critique.

Pour ce qui est de zfs clone, ma compréhension c'est que cela sert à monter un snapshot en lecture seule pour pouvoir y accéder. Je ne l'ai jamais utilisé en ligne de commande mais seulement via l'interface web. En effet, ce dernier ne peut se monter que sur son dataset d'origine puisque c'est là que les données du snapshot sont stockées.

Bon courage et peut-être que d'autres membres du forum plus expérimentés avec zfs send/receive se manifesteront.
 

Kuo

Dabbler
Joined
Nov 3, 2018
Messages
22
Bonjour,

Merci pour la réponse :)

Normalement il s'agit bien de RAIDz-1. En tout cas le RAID a été fait via FreeNAS et non via le BIOS.
Volumes : https://i.gyazo.com/9f5cb1cfbbcc1dde59dd2b6a8c48546b.png
Disques : https://i.gyazo.com/5c9dfd9fddb0204e7c8360470ad549a4.png (WDS = ada2 + ada3; SE8 = ada0 + ada1)

J'ai déjà essayé avec cp, le problème étant que je ne trouve tout simplement pas mon dossier WDS/DebianVM. Il n'apparait pas dans WDS/. Donc, je ne peux pas le copier.

Mais une snapshot n'est pas une copie complète, alors comment ça fonctionne ?
Si j'envoie send une snapshot, qu'est-ce que je reçois receive ? Est-ce que vraiment j'aurais tout le contenu du zvol ? La copie va se faire ?
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Ok pour le RAIDz-1, parfait.
Je ne sais pas quel est ton niveau de connaissances mais je me permets toutefois de préciser une chose qui me parait importante: un volume en RAIDz-1 (ou miroir) n'est pas un backup, en as-tu conscience? [Note: pour moi le plus important c'est d'avoir conscience des choses ensuite après, pour x raisons (bonnes ou mauvaises ;-P) on fait ou pas.]

Alors une question pour voir si on se comprends bien: où/comment "regardes-tu" quand tu dis que tu ne trouves pas le dossier WDS/DebianVM?

Normalement, il devrait apparaitre, quand tu ouvres un terminal dans /mnt/WDS/DebianVM ou dans le genre.
En tout cas, tous les datasets devraient se trouver à cet endroit ( /mnt/WDS pour WDS et /mnt/SE8 pour SE8)
Tu me diras si c'est le cas ou pas... (sinon y'a un truc qui m'échappe alors)

Alors un snapshot n'est pas une copie en effet, c'est un instantané ou une photo à un instant donné du système de fichiers.
C'est pourquoi lorsque l'on créé un snapshot disons à T0 et qu'on monte (ou clone) ce snapshot, on retrouve tous les fichiers tels qu'ils étaient à T0 (c'est une sorte de copie accessible en lecture seule).
Et si on fait un send de ce snapshot alors on créé une copie à T0 dans un autre endroit (sur un autre dataset ou sur un autre serveur).
S'il n'y a eu aucune modification depuis T0 alors on aura un contenu identique de chaque côté (une copie quoi).

Si on fait un "rollback" en revanche, on "écrase" l'état actuel du système de fichiers en le remplaçant par celui de T0. On peut dans ce cas-là perdre des données (et c'est peut-être voulu comme par exemple lorsque l'on s'est fait attraper par un ransomware et qu'il a commencé à crypter des données).
 

Kuo

Dabbler
Joined
Nov 3, 2018
Messages
22
Pas un backup... ça dépend, si un HDD tombe en panne, le 2eme est toujours là, c'est une sécurité en plus. Après c'est sûr que c'est pas impossible que les 2 tombent en panne en même temps... Je sais bien qu'idéalement un vrai backup c'est une copie intégrale sur un (ou plusieurs) autres disques qui ne se trouvent pas dans le serveur, idéalement pas branchée et encore mieux pas dans le même lieu :D Mais bon, ça vaut pas forcément le coup. Mes données qui sont vraiment vraiment importantes sont copiées sur divers disques non branchés.

https://i.gyazo.com/b52583cdda30efeab1e22b66afd864ef.png DebianVM n'apparait pas (si tu compares avec la capture "Volumes" du dernier message, tu te rends compte que seule la VM n'apparaît pas...).
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Alors là........ Ben j'en sais trop rien! :-O


Ce que je trouve étrange c'est la présence d'autres répertoires tels que:
.windows
grep
Pepin


Et bien entendu l'absence de DebianVM.

Il y a peut-être une explication mais si je compare avec le système que j'ai, dans le dossier /mnt/Volume, je n'ai que les datasets que j'ai créé.
Et surtout, si le dataset apparait dans l'interfaces sour l'onglet volumes.

Ce que tu peux regarder c'est justement dans l'interface sous Storage -> Volumes, tu sélectionnes le dataset DebianVM et tu cliques sur l'icone Change permissions en bas.
Une fenêtre s'ouvre et dans le haut de la fenêtre apparait normalement le chemin vers le dataset:

upload_2018-11-6_17-46-27.png


Exemple avec le dataset jails.

Je serai curieux de savoir ce que ça dit!? ;-)
 

Kuo

Dabbler
Joined
Nov 3, 2018
Messages
22
Le répertoire "Pepin" c'est un vestige d'un Volume supprimé... J'ignore pourquoi le dossier est toujours présent, je vais le supprimer.
Les 2 autres je sais pas ce que c'est.

Eh bien, nouveau problème je suppose : https://i.gyazo.com/5d3ce2cd14d312a1eade771386a5ee53.png Je n'ai pas le bouton "change permissions" sur ce volume. Je l'ai sur les autres.
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Est-ce que sur les autres datasets il y a ces mêmes boutons?
C'est quelle version de FreeNAS?

Et ce qui est étrange c'est qu'il y a l'icone qui ressemble à celle de "Detach volume"!?! Tout comme celle pour l'upgrade (flèche vers le haut) qui se trouvent normalement pour un volume pas pour un dataset.

Je suspecte quelque chose dont je ne suis même pas sûr que ce soit possible... :-O
Ma suspicion est que DebianVM est un volume "intégré" dans WDS, mais comme je le disais, je ne sais pas si ni comment c'est possible?!? ou c'est peut-être quelque chose de la sorte, un mélange (je ne sais pas comment le dire mieux!).

Un zpool status en ligne de commande aidera peut-être à voir plus clair au niveau de la structure du volume.


Pour info, voici la barre de boutons que j'ai lorsque je sélectionne un dataset (FreeNAS 9.10):
upload_2018-11-6_18-47-21.png

De gauche à droite:
Change permission, Create snapshot, Destroy dataset, Edit options, Create dataset et Create zvol.

Et celle que j'ai lorsque je sélectionne un volume:
upload_2018-11-6_18-49-34.png

De gauche à droite:
Detach volume, Scrub volume, Volume status, Lock volume, Change passphrase, Download key, Encryption re-key, Add recovery key, Remove recovery key et Upgrade.
Les bouton concernant l'encryption c'est effectivement parce que mon volume est crypté, ils n'apparaissent peut-être pas pour un volume non crypté.
 

Kuo

Dabbler
Joined
Nov 3, 2018
Messages
22
J'ai FreeNAS 11.1-U2.

Sur tous mes dataset :
be0cb934f688e6b960570d5e36e244d9.png

respectivement : Change permissions, Create Snapshot, Promote Dataset, Destroy Dataset, Edit options, create dataset, create zvol.


Sur DebianVM uniquement :
2552c9d93ae4c775ecaeb5b916b50486.png

respectivement : Create Snapshot, Promote Dataset, Edit zvol, Destroy Zvol.


D'ailleurs ça n'apparait pas dans le menu de gauche :
15e7fc56f84660708a036af1bda3c256.png
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Ok donc la différence au niveau des icones s'explique par la différence de version.

Je pense commencer à comprendre: DebianVM semble être un zvol (je n'ai encore jamais utilisé, d'après la doc: "A zvol is essentially a raw, virtual block device which can be used for applications that need raw-device semantics such as iSCSI device extents." ce qui semble donc consitant avec l'utilisation en tant que stockage de VM). Avec quelques détails également dans ce post.

Sauf que... où sont donc stockés les zvol alors!?
Probablement pas dans /mnt cela semble logique du coup puisqu'il s'agit d'un espace de stockage RAW qu'on ne peut monter ainsi. Je n'ai pas réussi à trouver d'information là-dessus.

Peut-être qu'un df -h en ligne de commande renseignera sur le point de montage du zvol? En tout cas dans mon cas il affiche tous les datasets associés au volume et leurs points de montage respectifs (mais n'ayant pas de zvol je ne sais pas ce que ça donnerait avec?).
 

Kuo

Dabbler
Joined
Nov 3, 2018
Messages
22
Oui effectivement c'est un zvol, je l'ai dit à ma première réponse mais j'aurais sans doute du le préciser dès le départ... Ne sachant pas réellement ce que c'est, je n'ai pas cru utile de le préciser... à moins que ce ne soit un oublie, j'ai oublié :D

Malheureusement df -h ne m'aide pas plus.
De même pour locate DebianVM qui ne retourne rien.
J'ai essayé avec un ls | grep, mais je n'ai pas plus d'infos sur le chemin...
73d003b8cd1eb185c5b1a53d836a90fa.png
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Ah oui, je viens de voir qu'en effet c'était mentionné dans la question et je n'avais pas percuté, pensant que c'était une erreur de vocabulaire... :-O
Bref, dans tous les cas, ça ne nous avance pas vraiment! Et je ne sais pas quoi proposer d'autre...

Le plus simple, ça serait de poser la question dans la partie anglophone du forum (j'avais déjà commencé à chercher voir si je trouvais quelque chose sur où se trouvent les zvol mais je n'ai rien vu).
 

Heracles

Wizard
Joined
Feb 2, 2018
Messages
1,401
Bonjour,

Reprenons donc avec qqes définitions et concepts pour commencer:

Les disques physiques

Ils sont groupés en vDev selon différentes logiques possibles. Avec ou sans redondance. Un vDev en soit n'est pas utilisable.

Les vDevs

Une fois les vDevs créés, ils doivent être groupés, toujours sans redondance, pour construire le pool.

Le pool

Le pool, c'est l'espace adressable dont ZFS dispose pour stocker les données.

Le dataset

Un pool peut être divisé en dataset ayant chacun des attributs différents, par exemple des quotas, droits d'accès, méthodes de compression, etc. Le dataset est un espace de stockage de fichiers.

Le zVol

Un zVol est un genre spécial de dataset. Plutôt que de présenter un espace de stockage de fichier, il présente un espace adressable brut tel un disque dur. Ce sera au client qui connectera ce zVol de formatter celui-ci pour ensuite gérer lui-mème ses fichiers dans ce volume.

Selon ma compréhension, le besoin est de migrer des données depuis un zVol vers un Dataset. FreeNAS ne pourra pas faire cela seul. En fait, aucun serveur ne pourra le faire seul. La raison est que les fichiers du zVol sont gérés par un premier serveur alors que les fichiers du Dataset sont gérés par un autre (le FreeNAS).

Il faut donc que le serveur ayant formatté le zVol connecte aussi le Dataset sur un protocole de partage de fichiers comme NFS pour ensuite copier les fichiers qu'il gère sur le zVol et les présenter en tant que fichier à FreeNAS qui pourra ensuite les gérer à titre de fichiers.

En espérant que ça aidera à comprendre certains éléments...

Héracles,
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Alors si je comprends bien, sur le serveur, un zvol va se trouver dans /dev/je-sais-pas-trop-genre-zvol...
et, pour être "visible" depuis le serveur il devra être monté (selon le système de fichier qu'il utilise), non?

Il n'y a pas de raison de le monter sur le serveur lui-même mais le zvol sera accessible comme partage et sera donc monté par le client pour une utilisation "normale".


Donc si on veut copier un zvol vers un dataset deux possibilités:
- sur le serveur, on le monte et on le copie
- sur le client (qui a déjà le zvol de monté a priori), on le copie directement sur l'autre dataset.
Est-ce que ça peut se résumer ainsi?
 

Heracles

Wizard
Joined
Feb 2, 2018
Messages
1,401
Bonjour,

Ta compréhension est bonne à moitié :smile:

Oui, le zVol se comporte exactement comme un /dev/je-ne-sais-quoi en ce sens qu'il illustre un espace de stockage brut comparable mais pas utilisable directement pour manipuler des fichiers.

Par contre, Non il ne se trouve dans dans /dev. Il est bel et bien lui aussi sous le pool, donc sous /mnt/poolname/....

Aussi, Non, tu ne peux monter le zVol directement depuis le serveur. Un peu comme un même espace de stockage dans /dev ne peut correspondre à deux réalités à la fois. le zVol étant un espace offert à un client et géré par celui-ci, le serveur FreeNAS lui-même ne peut se permettre de l'altérer lui-même en faisant un "mount". Pour FreeNAS et ZFS, le zVol est géré comme un ensemble de blocs sans cohérence les uns avec les autres. ZFS ignore tout du système de fichier déployé par-dessus le zVol.

Un client accédant un Dataset à distance via NFS, Samba ou autre protocole de partage de fichiers, dira au serveur "Voici le fichier A, place-le à cet endroit". Ou encore "envoie-moi le contenu du fichier B situé dans tel dossier".

Un client accédant un zVol dira au serveur "Écrit les 512 bits suivants à l'adresse 20484096" ou encore "redonne-moi les 1024 bits écrits entre 30728192 et 30729315".

Donc ton plan A de monter le zVol depuis le FreeNAS est à écarter.
C'est ton plan B qui est le bon: Que le client ayant monter le zVol aille lire son contenu et ensuite recopie sur un dossier partagé depuis le Dataset après avoir monter ce Dataset par NFS, Samba ou autre.

En espérant que cela t'aidera à mieux comprendre les principes sous-jacents à ZFS,

Héracles
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Merci pour ces précisions!

Et du coup... je continue! :)

Ben oui, malheureusement mon serveur de test est dans les choux en ce moment, sinon j'aurai déjà joué avec et j'aurai peut-être eu la réponse (comme j'ai encore jamais testé les zvol!)...

Ok pour le /mnt/poolname mais alors, dans l'exemple de @Kuo, dans /mnt/WDS il n'y avait pas son zvol DebianVM (voir l'image dans son post).

Est-ce que ça veut dire que le zvol n'a pas "d'existance physique" sur le serveur (ce que je ne pense pas...)?
Ou posé différemment: où se trouve donc le zvol dans le serveur? Il doit bien être référencé quelque part dans le système de fichier et on devrait pouvoir faire une copie binaire (raw) de cet espace?

Comme tu l'as mentionné, normalement dans /mnt/poolname alors est-ce la config de Kuo qui n'est pas bonne et normalement le zvol devrait être visible? :p
 

Heracles

Wizard
Joined
Feb 2, 2018
Messages
1,401
Bonjour,

On voit bien son zVol dans ses captures d'écran... Regarde bien :smile:
https://i.gyazo.com/1c092ce6625876a03e0fb968309d32bc.png

Non seulement il est listé, mais tu vois bien aussi que cette ligne n'est pas comme les autres.

Le post que tu as référencé ne liste pas la totalité du contenu. C'est lui qui a omis de lister cette entitée. Aussi, il faudrait savoir quelle vue il a utilisé pour obtenir cette liste.

Mais dans le lien posté, la commande est une des façons de lister le tout et on y voit clairement son zVol.

Pour ce qui est de faire une copie "raw" du zVol, c'est possible en effet. Pour cela, il te faut un autre FreeNAS et faire une réplication ZFS vers cet autre FreeNAS.

Et pour ton serveur, va t'acheter une chèvre au marché :smile: Elle mangera tous les choux sans toucher au serveur :smile:

Bonne chance avec tout ça,

Héracles
 

Heracles

Wizard
Joined
Feb 2, 2018
Messages
1,401
J'ai vu un autre post qu'il a fait où on ne voit pas le zVol. Cette vue-là n'est pas celle qui liste tous les datasets et zVol. C'est la vue qui permet de naviguer dans les dossiers pour choisir quoi partager. Comme le zVol n'est pas partageable à titre de dossier, il n'est pas offert dans cette vue.

Mais s'il va dans l'option pour gérer les datasets, il verra le tout correctement.
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
D'accord... je crois que je comprends (même si c'est peut-être pas encore totalement limpide) et ça s'éclaircit un peu mais rien de tel que la pratique pour ça! ;-)

Mais en attendant, si seulement une chèvre pouvait m'aider ça serait génial! Non, faut que je cherche encore un peu pour voir si j'ai pas un problème avec une carte controlleur ou si c'est un disque qui est en train de me lâcher (ou peut-être les deux!).
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
D'accord... je crois que je comprends (même si c'est peut-être pas encore totalement limpide) et ça s'éclaircit un peu mais rien de tel que la pratique pour ça! ;-)

Mais en attendant, si seulement une chèvre pouvait m'aider ça serait génial! Non, faut que je cherche encore un peu pour voir si j'ai pas un problème avec une carte controlleur ou si c'est un disque qui est en train de me lâcher (ou peut-être les deux!).

Bonjour Pitfrr,

J'ai commente sur une situation similaire
https://forums.freenas.org/index.ph...ment-savoir-doù-cela-vient.71102/#post-493091
Si je comprends bien ta demarche, elle serat probablement infructueuse car incomplete.

Je te conseil en fet de faire une replication recursive du volume WDS et non de son dataset "DevianVM" et ensuite de faire la replication recursive vers SE8.
Si tu veux ensuite detacher WDS pour etre remplace par SE8 mais que tu tiens a renomer SE8 pour prendre l ancien non WDS, c'est possible en faisant je crois:

zpool export SE8 followed by
zpool export SE8 WDS
Upon detaching the pool it should now appear as WDS. Your volume doesn't seem to be encrypted so it should be causing any problem. If it is, however the old key may not work on the volume.
 
Status
Not open for further replies.
Top