Attache d'un disque à un vdev miroir existant

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
Salut !

Alors voilà le topo :

Je disposais d'un pool de deux disques de 4To en miroir, que je souhaitais faire passer vers un pool miroir de trois disques. Conformément à la doc Oracle de ZFS, j'ai donc attaché le nouveau disque de 4To à mon pool existant par la commande zpool attach <pool> <disquebase> <nouveaudisque>.

Pour cela, j'ai utilisé le nom affiché du disque (ada5) et non son gptid, comme cela semble être le cas nativement par Freenas lorsque l'on construit le pool via la web UI. La raison est simple, je n'ai tout simplement pas trouvé ce fameux numéro pour ce nouveau disque une fois celui-ci inséré. Pour autant, la commande a marché et le pool est désormais en miroir sur les trois disques après plus de 20h de resilvering.

2020-08-08 20_57_17-pastis-nas - PuTTY.png


Seulement voilà le hic, il semblerait que l'utilisation du diplayed name ada5 au lieu du GPTID ne soit pas optimal puisque ma fenêtre de monitoring du pool sur le dashboard ne parvient pas à me faire remonter le nom du disque.

2020-08-08 21_01_11-FreeNAS - 192.168.1.150 - Opera.png


Donc voilà, c'est pas très très propre tout ça.

Je suis un peu coincé pour résoudre le problème. Si toutefois personne ne sait me dépanner, voilà ce que j'aurais envisagé de faire :
- Détacher le disque fautif du pool,
- Wiper le disque,
- Créer un schéma GPT (gpart create -s GPT /dev/ada5),
- Espérer obtenir un GPTID avec la commande glabel status,

2020-08-08 21_05_29-pastis-nas - PuTTY.png

- Attacher le disque à nouveau mais cette fois-ci avec son GPTID au lieu de son nom.

Voilà ça fait donc beaucoup de "si", et si je peux m'épargner 20 nouvelles heures de resilvering ça me va aussi :smile:

Merci d'avance pour votre aide !
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Salut @alexisr73,

Ce genre d'operation est plus simple losrque c'est fait a partir de l'interface WEB.
La documentation stipule, quelque part ainsi que sur le forum, que toute operation effectue a partir de la ligne de commande reste invisible a l'environement Web.

Avant d'essayer de debrancher le disk, je te suggerrerai de simplement redemarrer ton server. It se peu que Freenas reconnaisse le disque et en reporte le detail.

Si ca ne marche pas, alors il faudra envisager une differente strategie.
 

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
Salut @Apollo ,

Merci de ta réponse rapide !

J'ai en effet attendu la fin du resilvering puis j'ai redémarré le serveur pour vérifier s'il retrouvait ses billes. Malheureusement ça n'a pas été le cas.

A quel type de stratégie penses-tu ?

Je me suis fait conseiller sur le groupe Facebook Freenas cette méthode qui n'était à ma connaissance pas possible à réaliser via l'interface graphique sans devoir détruire/reconstruire le pool. Mais peut-être que je suis passé à côté ?
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Je n'ai pas de strategie particuliere en tete. Le mieux serrai de faire un test soit en VM soit avec des diske sans donnees.
Avec les disques en mirroir, je croix qu'il est relativement trivial de supprimer un disque s'il y a suffisament de redondance.
Il faut simplement suivre la bonne procedure. Apres ca, il faudra tres certainement en effacer le contenu avec la functon "Wipe" dans l interface Web, et ensuite de l'integrer avec l'interface web.
 

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
D'accord avec toi.

Normalement, pas de soucis pour détacher le disque et le supprimer via l'interface web. C'est l'ajout qui n'est par contre pas possible via le web, à ma connaissance. La fonction Extend permettait uniquement d'ajouter un deuxième vdev et non d'ajouter le disque à l'existant.

Là est toute la subtilité de ma situation :grin:
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Laisse moi un moment, je vais essayer de valider la procedure sous VM.
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Voila la procedure qui devrai te permettre de detacher les disques sous l'interface Web suivit ensuite de la procedure, toujours sous l'interface web, qui te permet d'ajouter un disque au miroir.

L'idee est d'utiliser la fonction "Status et "Extend" sur ton pool.

Video en attachement compressees en fichier zip car il n'est pas possible d'y attacher de video.
 

Attachments

  • record_000085.zip
    1.8 MB · Views: 169
  • record_000086.zip
    1.4 MB · Views: 200

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
Merci d'avoir pris le temps de faire ces vidéos. Mais je suis sur Freenas 11.3-U3 et il ne dispose pas de la fonction extend au niveau d'un disque du pool ... L'ayant préalablement détaché pour tester, j'ai essayé de créer une partition GPT afin d'obtenir le GPTID du disque, mais cela n'a pas fonctionne comme je le pensais. Après, je suis loin d'être un expert à ce niveau là ...

Je vais devoir resilverer mon disque pendant 20h o_O

EDIT : Capture des options à dispo sur Freenas 11.3-U3

2020-08-08 23_21_11-FreeNAS - 192.168.1.150 - Opera.png
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Merci d'avoir pris le temps de faire ces vidéos. Mais je suis sur Freenas 11.3-U3 et il ne dispose pas de la fonction extend au niveau d'un disque du pool ... L'ayant préalablement détaché pour tester, j'ai essayé de créer une partition GPT afin d'obtenir le GPTID du disque, mais cela n'a pas fonctionne comme je le pensais. Après, je suis loin d'être un expert à ce niveau là ...

Je vais devoir resilverer mon disque pendant 20h o_O

EDIT : Capture des options à dispo sur Freenas 11.3-U3

View attachment 40682
Merci de me corriger. En effet, la fonction n'est pas disponible sous Freenas 11.3-U3.
Ce qui est important, c'est que la procedure effectue sous Web demontre qu'il est possible d'y arriver.
Il me semble avoir effectue se genre d'operation il y a deja un certain temps, mais uniquement a des fins de test. J'ai du utilise tres probablement la commande en ligne.
Au moins, si tu a ete en mesure de faire la demarche avec la commande en ligne et que le resultat est fonctionnel, alors c'est le principale.
 

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
Pas de problèmes, j'ai oublié de le préciser ! Mais du coup, je vais devoir le refaire en ligne de commande car le résultat était là malgré tout. Mais j'avoue que je ne sais pas si je peux faire les choses différemment ...

Sinon, est-ce que ça vaudrait le coup de détruire mon pool en ayant pris soin de sauvegarder les données au préalable, puis de le reconstruire ? Ca risque d'être relou de reseter toutes les permissions. Mais si de passer par la CLI ne me permet pas d'avoir l'info du disque rajouté dans le pool, c'est pas fou :confused:
 

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
Okay c'est bon je m'en suis sorti !

Je me suis lancé dans du partitionnement manuel, il faut faire très attention à ce que l'on fait mais écoute c'est en train de resilverer donc ça m'a l'air parti !

Pour les suivants qui pourraient rencontrer un problème similaire, je vous détaille les opérations que j'ai mené.

L'idée est de partitionner un disque vierge, exactement comme le disque source appartenant déjà au pool auquel vous souhaitez le rattacher.

Pour cela, nous utiliserons l'utilitaire gpart, déjà embarqué dans votre installation de Freenas.

Première étape, afficher le partitionnement de votre disque source. Dans mon cas, il s'agit de ada0 :

2020-08-09 15_17_55-pastis-nas - PuTTY.png


Nous récupérons les informations suivantes :
- Schéma de partitionnement GPT
- Numéro de block de début et taille de chaque partition (identifiée avec le suffixe px où x est le numéro de partition)
- Type de partition

L'idée est maintenant de "construire" le nouveau disque exactement comme cela.

Détail :
2020-08-09 15_07_55-pastis-nas - PuTTY.png
2020-08-09 15_10_12-pastis-nas - PuTTY.png
2020-08-09 15_22_29-pastis-nas - PuTTY.png

Note 1 : Je me suis gouré de type de partition lors du premier ajout. Pas de panique, vous pouvez le modifier à posteriori grâce à la fonction "modify" de gpart en spécifiant l'index de partition avec l'option -i (gpart modify -i 1 -t freebsd-swap ada5).
Note 2 : L'option -b de gpart permet de spécifier le bloc de début et on va pas réinventer la poudre, on va faire exactement comme sur le disque d'origine.
(A noter que mes 3 disques sont rigoureusement identiques, j'ignore si cela serait la même chose avec deux disques de marque différente par exemple).
2020-08-09 15_25_40-pastis-nas - PuTTY.png

Note : Ici on précise uniquement le bloc de début avec l'option -b. Le fait de ne pas spécifier de taille avec l'option -s indique que l'on souhaite monter cette partition sur le reste de l'espace disponible du disque.
Nous voilà désormais avec deux disques rigoureusement identiques en termes de structure, il ne reste plus qu'à attacher la partition souhaitée à notre pool existant.
2020-08-09 15_28_18-pastis-nas - PuTTY.png
Dans mon cas, l'usage de la commande zpool status tank m'affiche mes disques avec leur numéro GPTID, qui est l'identifiant de partition GPT. J'ignore si cela est le cas pour tout le monde puisque certains exemple desquels je me suis inspiré sur le net affichaient les disques avec leur nom familier pour l'homme. Quoi qu'il en soit, continuons sur mon cas.
J'affiche le statut de mon pool avant attache :
2020-08-09 15_32_33-pastis-nas - PuTTY.png

Je cherche le GPTID associé à la partition du nouveau disque qui sera ajoutée au pool :
2020-08-09 15_37_07-pastis-nas - PuTTY.png

Je n'ai pris la peine de surligner la partition concernée, nous sommes tous d'accord que je ne vais ajouter une partition de 2G en miroir d'un pool d'un peu moins de 4To :tongue:

Enfin, j'attache le disque au pool en prenant bien soin d'utiliser les GPTID :
Code:
zpool attach MirrorStorage gptid/9504487f-cc0e-11e9-a4e3-7085c2b1819a gptid/8139a4ee-da3f-11ea-97c5-7085c2838649

La partition est désormais en cours de resilvering et le disque est correctement détecté par le système jusqu'à l'affiche du pool sur le dashboard !

Etant limité par le nombre de captures d'écran, j'ajouterai les manquantes ci-après.

En espérant que cela puisse un jour aider quelqu'un !
 

Attachments

  • 2020-08-09 15_03_03-pastis-nas - PuTTY.png
    2020-08-09 15_03_03-pastis-nas - PuTTY.png
    4.3 KB · Views: 156
  • 2020-08-09 15_11_35-pastis-nas - PuTTY.png
    2020-08-09 15_11_35-pastis-nas - PuTTY.png
    5.1 KB · Views: 173

alexisr73

Explorer
Joined
Oct 21, 2019
Messages
51
Donc voilà c'est parti !

2020-08-09 15_38_52-pastis-nas - PuTTY.png


Et désormais, tout est reconnu au niveau de la webUI :

2020-08-09 15_46_55-FreeNAS - 192.168.1.150 - Opera.png


Le perfectionniste que je suis s'en est sorti, c'est bon ! Prochaine étape, avoir trois numéros qui se suivent ? :tongue:
 
Top