Remplacement de disque et rebuild


Recommended Posts

Afin de voir comment tout ceci fonctionne avant de tout mettre définitivement en place avec de plus gros disques durs, j'essaye de comprendre le système, mais j'ai vraiment un problème avec le changement de disque :
A plusieurs reprises, j'ai voulu simuler une panne de disque.
Sur une machine test avec 3 disques de 160Go.

J'ai fais plusieurs test après avoir rempli les disques :
Dans les deux cas, en éteingant la machine, faisant croire à unRAID que le disque a claqué (plus de volume), effectivement il y avait bien une erreur. Donc j'ai arreté l'array et suprimer le disque fautif de la config.
Monté un autre disque de 160Go (réellement c'était le meme mais formaté).

A partir de là, j'ai donc procédé de deux manière différente :
-Redémarré la machine, ajouté le nouveau disque de 160Go, unRAID m'a proposé de formater le disque et il a lancé un rebuild.
-Redémarré la machine, formaté et ajouté le nouveau disque de 160Go, unRAID m'a proposé de formater le disque et il a lancé un rebuild.
Mais dans les deux cas je n'ai jamais retrouvé la partie des données qui étaient sur le disque "perdu".

Y a t'il une subtilité que je n'ai pas bien comprise dans la procédure ?
Ai-je oublié quelque chose ou mal fait ?
Vous me direz.
Merci !

Edited by PicPoc
Link to comment

Formatter ne fait jamais partie de la procédure pour reconstruire un disque.

 

La documentation est là : https://wiki.unraid.net/Manual/Storage_Management#Replacing_failed.2Fdisabled_disk.28s.29

 

En particulier :

 

Quote

 

To replace a failed disk or disks:

  1. Stop the array.
  2. Power down the unit.
  3. Replace the failed disk(s) with a new one(s).
  4. Power up the unit.
  5. Assign the replacement disk(s) using the Unraid webGui.
  6. Click the checkbox that says Yes I want to do this and then click Start.

When you start the array in normal mode after replacing a failed disk or disks, the system will reconstruct the contents onto the new disk(s) and, if the new disk(s) is/are bigger, expand the file system. If you start the array in Maintenance mode you will need to press the Sync button to trigger the rebuild.

Notes:

  • You must replace a failed disk with a disk that is as big or bigger than the original and not bigger than the smallest parity disk.
  • The rebuild process can never be used to change the format of a disk - it can only rebuild to the existing format.
  • The rebuild process will not correct a disk that is showing as unmountable when being emulated (as this indicates there is some level of file system corruption present) - it will still show as unmountable after the rebuild as the rebuild process simply makes the physical disk match the emulated one.

 

ou pour reconstruire sur le même disque :

Quote

 

Rebuilding a drive onto itself

There can be cases where it is determined that the reason a disk was disabled is due to an external factor and the disk drive appears to be fine. In such a case you need to take a slightly modified process to cause Unraid to rebuild a 'disabled' drive back onto the same drive.

  1. Stop array
  2. Unassign disabled disk
  3. Start array so the missing disk is registered
  4. Important: If the drive to be rebuilt is a data drive then check that the emulated drive is showing the content you expect to be there as the rebuild process simply makes the physical drive match the emulated one. Is this is not the case then you may want to ask in forums for advice on the best way to proceed.
  5. Stop array
  6. Reassign disabled disk
  7. Start array to begin rebuild. If you start the array in Maintenance mode you will need to press the Sync button to start the rebuild.

This process can be used for both data and parity drives that have been disabled.

 

 

Link to comment

Salut, je pensais bien que tu allais me répondre ;)

Merci en passant.

C'est ce que j'ai vu, mais comme ca ne fonctionnait pas sans formatage j'ai essayé autre chose...

Pour tout te dire j'ai refais plusieurs fois la procédure sans succès !

 

Edited by PicPoc
Link to comment

J'aurais du mal à t'aider avec mon expérience directe n'ayant jamais eu de problème de disque.

Je n'ai pas de serveur de test et je ne suis pas super motivé pour tester avec mes données. :D

 

Ce serait bien le diable qu'il n'y ait pas de video Youtube qui montre le process.

SpaceInvaderOne ou un autre ?   (je suis encore au bureau, je ne vais pas regarder ça tout de suite ;) )

Link to comment

Bah rien n'est vraiment clair car de toute façon il va être formaté.

Le problème c'est que si tu as par défault le démarrage automatique de l'array au boot de unRAID et que tu simule le crash, il va réassigner le disque retrouvé. Mais comem ce n'est pas le bon système de fichier il demander à formater.

Donc il faut arreter l'array, supprimer le disque fautif, redémarrer l'array pour ensuite l'arreter et là il devrait afficher une erreur : disque perdu.

Il faudrait le faire avec un autre disque car je pense qu'il garde les références du disque. C'est bizarre car il ne devrait pas se comporter comme ca puisque du coup ca demande de formater et il est alors impossible de lancer un rebuild.

En attendant il y a un problème car si tu démarre le array, les données ne sont pas totalement accessibles puisque le disque est en cours de Rebuild.

Une partie d'un dossier se trouve sur le "disk1" et sur "disk2", c'est étrange comme procédé sur unRAID. C'est sa façon de travailler mais c'est vraiment déroutant.

Il faudrait dédier un partage spécifiquement sur un volume. Du genre "Photos" sur le disk1 et "Bureautique" sur le disk2 en cas de crash, sinon c'est un peu le bazar pour retrouver les dossiers.

Edited by PicPoc
Link to comment

hmmm il me semble qu'il y a une étape de trop

 

S'il y a un disque défectueux.  Ce qui m'est arrivé.

 

J'ai fais :

 

J'ai arrêté l'array et mit le démarrage en manuel, arrêter le serveur complétement.

Remplacer le disque défectueux par le neuf.

Démarrer Unraid, normalement l'array est arrêté.

La je vais sur le disque (defect) et j'assigne le nouveau disque.

(Je n'ai pas supprimé le disque et redémarrer)

 

Je start l'array (normalement de mémoire tu coche "format") et le disque se rebuild ...

 

C'est tout il me semble

Mes données étaient la après le rebuild complété

 

Edited by Deen
Link to comment

Etrange comme truc, j'ai lancé le rebuild sans formater le disque, mais il m'affiche bien qu'un formatage est possible.

Pas très clair pour la compréhension...

Rebuild.png

 

J'attends la fin du rebuild mais j'ai déjà eu ce cas, à la fin : le disque n'est pas monté...

A suivre !

Link to comment

C'est en cours mais j'ai peur que ce soit le meme problème :

 

Rebuild-2.png

 

Je ne vois pas le contenu en cours de "Rebuild", alors que c'est écrit "emulated"...

 

Une fois fini j'ai ceci :

 

Rebuild-1.png

 

Donc je ne vois pas là...

Il va bien falloir le formater mais il sera "vide".

 

Le problème : lors du démarrage de l'array avec le nouveau disque, il demande à faire un rebuild : OK

MAIS il y a la fonction "formater" qui apparait aussi.

Je pense que c'est à cause du plugin "Unassigned Devices".

Ce n'est pas clair. Je vais tenter sans le plug in... Mais j'en ai un peu marre : je retenterai l'essai lundi.

Edited by PicPoc
Link to comment

Non, si tu as Unmountable, c'est qu'il y a une corruption du système de fichier.

Arrête l'array et démarre le en mode maintenance.

Puis vais sur le disque et fait Check (ou Repair, je ne me rappelle plus trop)

 

Par défaut, il le fait avec les attributs -nv  donc "non modify" et "verbose".

Tu peux nous montrer le résultat.

 

Si ça semble bon, tu peux relancer sans le n et si le programme le demande, relancer encore avec -L.

Link to comment

Probablement le disque émulé était déjà Unmountable, idéalement, il aurait fallu le faire là, avant même le rebuild.

Mais vu que tu as lancé, mieux vaut attendre la fin du rebuild.

 

On peut le faire ne ligne de commande, mais c'est plus compliqué et plus risqué. Le mieux est de le faire par l'interface. Possible que ce soit plus compliqué pour les disques encryptés toutefois.

 

Link to comment

En y réfléchissant : quel disque serait corrompu ? Le disque de parité ou le "nouveau" disque ?

Et comment détecter ce problème de corruption ?

Dans mon cas, il serait innutile pour un essai car je pourrais tout refaire mais autant savoir si ca arrive un de ces jours...

Merci.

Link to comment

Pas un expert des systèmes de fichier.

Ce serait loin d'être systématique, mais la corruption d'un système de fichier peut arriver de plusieurs façon (celles auxquelles je pense mais il y en a certainement d'autres) :

  • problème de RAM
  • soucis hardware sur le disque
  • déconnexion à chaud (le cas que tu testes du coup)

Quand il y a corruption, le disque n'est pas montable par l'OS.

Il est préconisé de tenter de réparer le système de fichier qui est émulé. Vu qu'en fonctionnement normal il en probable que ce qui est écrit en parité sera au final plus à jour que ce qui est sur le disque déconnecté.

Par exemple, tu copies ta collection d'ISO linux sur Unraid, le disque sur lequel tu écris déconnecte. Normalement, la copie continue mais uniquement en mettant à jour la parité (au moins sur le fichier en cours).

 

Si la réparation du système de fichier émulé est OK, tu peux ensuite reconstruire depuis les autres disques grace à la parité.

Si ça ne marche pas, tu peux toujours tenter de reconstruire le disque physique, quitte à resynchroniser la parité ensuite. C'est moins bien parce que les derniers fichiers écrits sur ce disque ne seront peut-être pas là ou corrompus, mais mieux que rien.

 

Si tu reconstruis puis essaye de réparer tu as une chance en moins de réparer le soucis.

Link to comment

Je suis de près la conversation car cela vient de se produire chez un utilisateur de reddit. Essayant de l'aider, il m'a pourtant semblé qu'il avait bien suivi la procédure, et j'ai du mal à voir là où il a pu se tromper. C'est le genre de choses qu'on aime à connaître avant le jour J (je touche du bois). Si je comprends bien, en cas de disque défaillant, aucun formatage du disque de remplacement n'est requis avant de l'assigner à la place de l'ancien dans l'array ? 

 

Pour les curieux, voici le lien du cas en question.

Link to comment
On 8/28/2021 at 6:33 PM, potjoe said:

aucun formatage du disque de remplacement n'est requis avant de l'assigner à la place de l'ancien dans l'array

Tout à fait.

Normalement le message qui apparait quand on lance un formatage indique en gros que ça ne fait pas partie de la procedure de reconstruction.

  • Like 1
Link to comment

Bon, en tout cas je ne vois pas ce qui pose problème.

Résultat du check -nv :

 

Phase 1 - find and verify superblock...
        - block cache size set to 764200 entries
Phase 2 - using internal log
        - zero log...
zero_log: head block 13574 tail block 12333
ALERT: The filesystem has valuable metadata changes in a log which is being
ignored because the -n option was used.  Expect spurious inconsistencies
which may be resolved by first mounting the filesystem to replay the log.
        - scan filesystem freespace and inode maps...
        - found root inode chunk
Phase 3 - for each AG...
        - scan (but don't clear) agi unlinked lists...
        - process known inodes and perform inode discovery...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - process newly discovered inodes...
Phase 4 - check for duplicate blocks...
        - setting up duplicate extent list...
        - check for inodes claiming duplicate blocks...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
No modify flag set, skipping phase 5
Phase 6 - check inode connectivity...
        - traversing filesystem ...
        - agno = 0
        - agno = 1
        - agno = 2
        - agno = 3
        - traversal finished ...
        - moving disconnected inodes to lost+found ...
Phase 7 - verify link counts...
Maximum metadata LSN (1:16416) is ahead of log (1:13574).
Would format log to cycle 4.
No modify flag set, skipping filesystem flush and exiting.

        XFS_REPAIR Summary    Mon Aug 30 12:44:12 2021

Phase		Start		End		Duration
Phase 1:	08/30 12:44:09	08/30 12:44:09
Phase 2:	08/30 12:44:09	08/30 12:44:09
Phase 3:	08/30 12:44:09	08/30 12:44:11	2 seconds
Phase 4:	08/30 12:44:11	08/30 12:44:11
Phase 5:	Skipped
Phase 6:	08/30 12:44:11	08/30 12:44:12	1 second
Phase 7:	08/30 12:44:12	08/30 12:44:12

Total run time: 3 seconds

 

 

Link to comment

Finalement après avoir lancé :

# check -L

puis ensuite

# check -P

Les données restaurées sont présentes.

Je n'ai pas pu voir si c'etait résolu après "check -L", car je ne m'en suis pas rendu compte, je vais tenter de recréer le problème, mais ne tout cas les données sont bien présentes.

Ce n'est qu'un test avec peu de données : 7.26 Go de tout petits fichier et de gros fichiers, mais je m'en suis sorti.

A suivre...

Edited by PicPoc
Link to comment

Je viens de simuler une panne de disque, suivi la procédure habituelle et cette fois ci le disque émulé est tout de suite disponible, il est monté.

Il y a peut être eu un autre problème avec le disque de parité pendant mon premier test...

Je ne sais pas bien pourquoi mais en tout cas les "check" ont permis de résoudre les problèmes.

Pour les non initiés, utilisez les outils via l'interface web de unRAID et pour les initiés à Linux, il est bien sûr possible d'utiliser les outils en ligne de commande.

J'ai réalisé mes tests avec 3 disques de 160Go, donc les temps de rebuild sont plus courts qu'avec des disques de bien plus grandes capacités.

Il est à mon sens très important de comprendre comment tout ceci marche avant de mettre en place un server "unRAID ce n'est pas du RAID". :P

Merci aux contributeurs.

Le sujet est bien sûr toujours ouvert aux commentaires et informations supplémentaires diverses et variées.

;-)

 

 

Edited by PicPoc
  • Like 1
Link to comment

Je t'en prie Potjoe, les forums sont là pour ca ! wink.png

Je me permet d'ajouter que les tutos de "Spaceinvader One" sont toujours très intéressant mais parfois difficiles à suivre pour les français qui ne maitrisent pas trop l'anglais, car il a en plus un accent bien spécifique avec ces "OKayyyyy" c'est parfois compliqué à comprendre.

Pour avoir essayé plusieurs systèmes Linux pour server, unRAID est à mon sens le plus simple et le plus complet. Il permet aussi de lancer des machines virtuelles.

Pour la part j'ai fais tourner deux Windows 10, des dockers tout simples (Deemix, Apache-PHP) et le partage de fichier Samba sur un HP6300SFF avec 8Go de RAM et un i7-3770.

Ca marche donc très bien.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.