Plantage FreeNAS ? Comment savoir d'où cela vient ?

Status
Not open for further replies.

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
Bonjour,

Utilisateur de FreeNAS depuis quelques temps, j'ai récemment ajouté un volume puis copié l'ensemble des données d'un volume vers ce nouveau volume.

Pour cela, via l'interface Putty, j'ai écrit la commande suivante :
cp -r - v /mnt/Vol1/"Dataset" /mnt/Vol2/"Dataset"

Copie lancée pour environ 5 TB de données.

La copie s'est correctement déroulée pendant quelques heures.
Ce matin, Putty ne défilait plus, bloqué sur la ligne d'un fichier de quelques MB.
Accès au GUI impossible.
Connexion réseau OK, ping vers le serveur OK.

J'ai branché un clavier et un écran sur le NAS :
* je retrouve le même genre de ligne que j'ai l'habitude de lire dans le shell, sur le GUI.
* le curseur est fixe.

Pourriez-vous m'indiquer comment savoir ce qu'il s'est produit ?
J'aimerais éviter de faire un hard reboot au risque de perdre une éventuelle opération en cours. (les disques ne semblent pas être en cours d'utilisation)

Nicolas
 

Pitfrr

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

Si le système ne réagit plus, ça va être difficile de savoir ce qui s'est produit...

Une nouvelle connexion avec Putty ne fonctionne pas?

Et avec le clavier/écran branché sur le NAS, lorsque l'on tape sur entrée, rien ne se produit? (dans mes souvenirs, si l'on tape sur entrée alors il raffiche le menu. Il y a une combinaison de touche aussi pour ouvrir un terminal... je ne me souviens plus... (en fait, je sais jamais quelle combinaison c'est! :p) mais ça doit être standard FreeBSD).

Ca veut dire quoi?
je retrouve le même genre de ligne que j'ai l'habitude de lire dans le shell, sur le GUI
S'agit-il du menu FreeNAS? ou d'autres lignes? avec quoi exactement (parce que certains messages peuvent indiquer un problème)?

Bref en tout cas, s'il n'y a plus d'accès au système.... à part un reset... on va être limité.

Si c'était chez moi, je rebooterai le système, j'irai voir dans les logs(*) si je vois quelque chose, je lancerai un scrub histoire d'être sûr, aller, j'irai même vérifier les infos SMART des disques pour être sûr qu'il n'y en ait pas un qui pose problème.
Et si je ne trouve rien... je relancerai la copie pour voir si ça passe.
Et si là encore ça rebloque, alors je procèderai par étapes (c'est un peu long mais...) genre, copier un répertoire puis un autre pour essayer d'identifier où/quand le problème survient. Ensuite une fois cerné, je confirmerai en essayant de reproduire de manière voulue et ciblée le problème.


(*): alors les logs... à part aller faire un tour dans /var/log, mes compétences en log s'arrêtent là... je m'étais promis un jour d'approfondir ce sujet mais je ne m'y suis pas encore mis! :)
Je crois savoir que messages est le log en cours, il peut y avoir des choses intéressantes à voir. Pour le reste, faut fouiller...
 

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
Hello,

Merci pour ta réponse rapide.

Une nouvelle connexion Putty ne donne rien :
upload_2018-11-7_19-47-15.png


En appuyant sur entrée, le curseur fixe passe à la ligne
upload_2018-11-7_19-49-50.png


En effet, ça sent le reset cette histoire :(
Ça m'emmerde parce que la copie est peut-être encore en cours...Ça fait 12h que ça tourne comme ça.

J'attends de voir s'il y a des réponses avec ces précisions puis je suivrai tes conseils.

Merci encore !
 

Pitfrr

Wizard
Joined
Feb 10, 2014
Messages
1,531
Ah oui... là c'est moche... :tongue:
Et dans les messages au-dessus rien d'évocateur, dommage.

Franchement, ça m'étonnerait que la copie soit encore en cours...
Ensuite, un hard reset ne devrait pas poser de problème d'un point de vue des données au pire le fichier en cours est perdu (sur la destination) mais comme il y a encore la source, cela ne devrait pas occasionner de problème (et d'ou le fait que je lancerai un scrub après le reboot juste pour être sûr).
On peut pas complètement exclure qu'il n'y ait pas eu un problème et qu'au reboot on perdra des données (ou qu'on va en corrompre) mais c'est très improbable je dirai. Et puis de toute façon le système est (ou semble) bloqué donc à un moment ou un autre faudra se décider! :smile:

D'un autre côté ça ne coute pas grand chose d'attendre encore un peu... :tongue:
Et ça permet d'avoir peut-être d'autres avis (j'espère).

Après la manière de procéder peut différer selon la criticité des données et si on a un backup ou pas et ça il n'y a que toi pour en juger.

Bon courage! :smile:
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Bonjour,

Utilisateur de FreeNAS depuis quelques temps, j'ai récemment ajouté un volume puis copié l'ensemble des données d'un volume vers ce nouveau volume.

Pour cela, via l'interface Putty, j'ai écrit la commande suivante :
cp -r - v /mnt/Vol1/"Dataset" /mnt/Vol2/"Dataset"

Copie lancée pour environ 5 TB de données.


Nicolas
Bonjour Nicolas,

Avec ta methode, la copie n'est pas fiable.
Pour effectue une copy d'un volume vers un autre, je te recommande tres fortement d'utiliser la methode the "replication".
Mais poue cela, tu a besoin d'avoir des Snapshots de ton volume ou du Dataset que tu veux copier.

Je te conseil de lancer cette commande avec Putty et d'utiliser la fonction "screen" qui restera active meme apres la fermeture de Putty ou sa deconnection.

Avec la replication, tu saurra exactemetn si la copie c'est bien deroule en listant les snapshot present sue la copie. Si le ou les snapshot existent, cela signifie que la copie est un succes.

tu peux utiliser la commande suivante:

Code:
zfs send -vvR Vol1/"Dataset"@manual-XXXX | zfs receive -vv Vol2/"Dataset"


@Manual-XXXX correspond au dernier snapshot present a la source.
 

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
Hello,

Merci pour vos réponses.

J'ai compris la source de la panne...c'est la mouise !

Ayant finalement fait un reboot je découvre que :
* Lors de la copie, un de mes disques a rendu l'âme.
* Un autre affiche un Currently unreadable (pending) sectors.
J'ai donc une possible corruption de donnée :
The volume Vol1 state is DEGRADED: One or more devices has experienced an error resulting in data corruption. Applications may be affected.

OK pour la commande zfs send | received.
Copie en cours d'un dataset de l'ancien volume vers le nouveau dataset du nouveau volume.

Cependant, j'aimerais savoir s'il est possible de savoir quelles sont les données corrompues ?

Puis-je aussi retrouver des informations à propos du HDD qui est tombé en panne ? Le système ne le trouve plus. J'ai changé d'alimentation et de câble au cas où, sans résultat.
 

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
Sur la section anglais, voici la réponse que m'a apporté leenux_tux :
upload_2018-11-9_20-9-18.png


Je pense qu'à l'avenir, je lancerai les commandes directement depuis le NAS, ce sera plus sécurisé encore.
 

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
J'ai la réponse :
zpool status -xv

Le résultat ?
errors: Permanent errors have been detected in the following files:
Un fichier corrompu...insignifiant !

Excellente nouvelle.

Y'a plus qu'à relancer la copie globale via zfs send | received !!
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Comment ce deroule la replication?
Comprends tu la demarche et a quoi servent les options lies a la replication via "zfs send" et "zfs receive"?
 

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
Comment ce deroule la replication?
Comprends tu la demarche et a quoi servent les options lies a la replication via "zfs send" et "zfs receive"?

L'ensemble des données sont à présent répliquées en utilisant la replication via "zfs send" et "zfs receive".

Mais en effet, je ne comprends pas la démarche exact.

Aurais-tu des éléments d'explication simple, un lien à me transmettre ?
Pourquoi "cp" n'est pas fiable ? Pourquoi la réplication l'est ?

Bonne journée,
Nicolas
 

Apollo

Wizard
Joined
Jun 13, 2013
Messages
1,458
Bonjour Nicolas,

La commande "cp" ne sert qu a effectuer une copie fichie par fichier. La solution est tout de meme fiable avec ZFS car les donnees sont lues et copiees avec carlcul de parite (checksum). Cependant c ette operation a des limites car elle ne copie que l etat actuel des donnee presente sur le volume sans prendre en compte son histoire anterieur.

Pour mieux comprendre la distinction, on peut regarder quel est l impact des snaphsots.

Par exemple, tu cree un fichier sur ton volume, tu l edite et un jour tu le suprime. S'il n y as pas eu de snapshot pris pour le dataset, the fichier en question est perdue sans moyen de le recuperer.
Si par exemple tu utilise les snapshots, et que tu cre le fichier (des photos, video, bref ce que tu veux) et que tu a regulierement des snapshot pris a interval regulier par le systeme, un jour tu efface par erreur le fichier, et bien tu peu utiliser le snapshot existant afin de recuper le fichier en question par clonage.
ZFS fonctionne de la facon suivante. Quand un fichier est cree, le fichier est en fait ecrit sur le volume en plusieurs bloques. Chaque bloques contient une partie du fichier avec le checksum pour la detection de corruption. Quand tu prend un snapshot, tous les block existants sont figes sur le disque et ne peuvent donc maintenant etre modifie tans que le snapshot y faisant reference est toutjours present.
ZFS emploit la methode "COW" (Copy on Write) ce qui signifie que la donne n est faite qu'une seul fois et n est jamias modifie.
Quand le volume est cree pour la premiere fois, il ne contient aucun bloques. Des que les donnees y sont copies les blanques vont s ajouter les uns a la suite des autres et chaques block y est associer un index. Quand un snapshot est cree, le snapshot vas simplement cree la liste des blocques en enregistrant les index des bloques qui ont ete ajoute depuis le dernier snapshot. Le snapshot ne contient pas la totalite des index a moins quil ne soit le seul present.

Si tu efface un fichier dont les donnees sont ecrite sur des bloques qui sont deja pointe par des snapshot, alors ces donnees ne seront pas efface mais ZFS va changer les pointeur sur ces blocques pour indiquer qu'il n existe plus. Si tu liste le contenu du reprertoire en question, ce fichier va avoir disparue.
Avec les snapshots, tu peux utiliser la commande "zfs diff" pour comparer le contenu entre deux snapshots. Si on prend le cas du fichier efface, tu devais etre en mesure de voir que le fichier existe dans les snapshot precedent avant son effacement.
Rappelle toi que tant que le snapshot existe, le fichier (les bloques) sont toujours present.
Si tu decidait d effacer les snapshot contenant la liste des blocques pour ces fichier, alors tu va en effet perdre les fichier en question. Detruire un snapshot permet a ZFS de recuperer les blocks qui sont destine a ete effaces. Si le fichier est toujour present, alors les blocks faisant reference a ce fichier seront preserve.

Se qu'il faut retenir c'est que le snapshot ne retient que la liste des blocks qui sont ajoute ou detruit depuis le dernier snapshot.

Chaques dataset a sa propre serie de snapshot.

La commande "zfs send -R ..." execute la replication de facon recursive.
Si tu as un volume avec plusieurs datasets et que tu veux en faire une copie exacte, tu dois prendre un snapshot du volume et ce snapshot doit etre recursif.
Par exemple tu a ton volume "DATA", si tu effectue le snapshot de "DATA" de facon recursive, tous les dataset ce trouvanten dessous vont avoir leur propre snapshot de cree.

DATA@auto-xxx
DATA@manual-20181111
DATA\dataset1@auto-xxx
DATA\dataset1@manual-20181111
DATA\dataset1\sub-dataset@auto-xxx
DATA\dataset1\sub-dataset@manual-20181111
DATA\dataset2@manual-20181111
DATA\dataset2@auto-xxx




Pour la replication resursive tu utilise le dernier snapshot cree pour le volume ce qui te donne par exemple

zfs send -R DATA@manual-20181111 | zfs receive BACKUP


Avec cette methode tous les datasets et snapshot existants sur DATA vont se retrouver sur BACKUP et vont apparaitre de la facon suivante:


BACKUP@auto-xxx
BACKUP@manual-20181111
BACKUP\BACKUPset1@auto-xxx
BACKUP\BACKUPset1@manual-20181111
BACKUP\BACKUPset1\sub-BACKUPset@auto-xxx
BACKUP\BACKUPset1\sub-BACKUPset@manual-20181111
BACKUP\BACKUPset2@manual-20181111
BACKUP\BACKUPset2@auto-xxx


Si le snapshot existe sur BACKUP, ca signifie que le donnees existante sur DATA on ete repliquees. Ce n'est pas la peine d'en verifier le contenu.
Si pour une raison le snapshot n existe pas (par example due a une deconnection) le contenue present sur BACKUP ne serra pas completement perdu car tu suara que le dernier snapshot present contient deja une partie de tes donnes telle present e au momemtn de ce snapshot sur le volume DATA. Pour finaliser le transfer tu n as qu'a effectuer un transfert incremental entre le dernier snapshot present sur BACKUP et le dernier present sur DATA avec la commande suivante:


zfs send -I DATA.... DATA.....| zfs receive BACKUP....

Cet un peut plus complique a ceniveau car pendant une replication Recursive, l operation envoi tous les snapshot un dataset a la fois.
Donc s'il y a interuption, il faut reprendre uniquement la ou le dernier dataset avais commance.
Il est em principe possible de relancer la commande avec (mais j en suis pas certain:


zfs send -I DATA@auto-xxx DATA@manual-20181111 | zfs receive BACKUP@auto-xxx


Avec la commande "cp", la copie ne prend en compte que les fichiers visibles et non ceux qui n ete effacee ou modifier avant le dernier snapshot.
En plus, si la copy est interompue, tu n as aucun moyen fiable de dire quel sont les fichiers copier de ceut qui ne le sont pas. Il est aussi possible qu'un fichier bien que present a ll copie ne soit pas complet et donc se trouve corrompu. Avec cette approche, tu dois utilise rsync ou similaire pour comparer le contenu et renvoyer les donnees non copies.
Je crois aussi qu'avec la copie le transfer vas etre extremement long pour les petits fichier.
Avec la replication c'est different car meme si les fichier sont infinitesimalement petits mais que le snapshot pointe a tous, alors le transfert ce ferra comme si c etait un grand fichier, c est a dire tu peux facilement envoye 1 million de fichier de 1Mo a +100MB/s.
Avec la copie "cp" ce n'est pas le cas.

Il est aussi possible de preserver l etat du replication qui a ete interrompue, mais je n ais pas eu l occasion d y passer beaucoup de temps a l etudier.
C'est interressant dans le cas ou le volume contient des snapshot pointnant sur une quantite considrable et envoye pas media non fiable comme sur internet outoute deconnection est possible. Avec cette approche, tu est en mesure de reprendre a partir du dernier bloques replique au lieu du dernier snapshot.

Je te conseil de lire les information sur:

https://docs.oracle.com/

Pour plus de details, fair une recherche sur Google avec les termes:

"zfs replication"

et tu selection les sites contenent l adresse oracle ci dessus.
Bien que les information ne soient plus forcement pertinnentent, elle sont d'un grand recours.
 

Heracles

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

La commande CP est conçue pour copier un fichier à la fois, ou un nombre limité de fichiers à la fois. Aussi, elle est exécutée dans la session de l'utilisateur. Si cette session est interrompue, la copie le sera aussi. CP ne gère pas les reprises de transfert, ne fait pas de journalisation, .... Plusieurs limitations.

Avec la réplication ZFS, tout est fait en arrière-plan, sans dépendance à une session utilisateur. La commande pourra reprendre son transfert en cas d'interruption, en plus d'offrir la réplication des snapshots.

Rsync est une sorte d'entre deux. Mieux que CP, mais pas aussi puissant et flexible que la réplication ZFS.

Bonne chance avec le disque hors service et mieux vaut le remplacer le plus vite possible car souvent, quand un premier disque cède, les autres céderont dans peu de temps....

Héracles,
 

Noobodyy

Dabbler
Joined
Nov 7, 2018
Messages
10
Apollo, Heracles, je vous remercie beaucoup pour vos messages.
C'est bourré d'informations que je réussi à comprendre avec vos explications simples !

J'ai actuellement un serveur qui tourne avec le nouveau volume contenant les dataset et l'ensemble des données de l'ancien volume.
L'ancien volume, lui, en état dégradé, n'a pas encore été supprimé, au cas où un des nouveaux disques rendent l'âme.

A priori, les données S.M.A.R.T. des nouveaux disques sont bonnes.

Je vais attendre quelque temps avant de considérer le nouveau volume comme "viable".
 
Status
Not open for further replies.
Top