Aller au contenu

[TUTO] Préparation des disques avec Badblocks


Messages recommandés

Posté(e) (modifié)

Bonjour,

Un petit tuto pour préparer ces disques durs avec la fonction badblocks, en vue de les monter dans le nas.

Pour ma part il existe deux façon de faire : soit en ligne de commande ou au travers une tache.

      Pré requis :

Un nas (minimum 2 baies) avec un DSM installé dessus (sur un seul disque). Et crée un volume avec ce disque.

En effet si vous faite Install du nas avec deux disques ou plus, configuration de base  ou autre(SHR, raid1  etc.. ) Le DSM s’installe sur tous les disques dans ce cas il n’est pas possible de faire le test sur les disques monté dans le nas.

Par contre si vous êtes à l’aise avec les lignes de commandes sous putty, vous pouvez installer le DSM sans vous préoccuper de son installation sur tous les disques. Car il est possible de déclarer le disque on l’on va faire le test comme « Fail » et de le réintégrer à la fin du test. Sujet traité dans la 2eme méthode comme variante. (vue que c’est bien décrit cela doit être à la porter de tous ) Pas la peine de faire le volume dans ce cas

Wincp et ou Putty.

Télécharger Wincp à l adresse suivante https://winscp.net/eng/download.php

Télécharger putty à l adresse suivante http://www.putty.org/

Ps: toto est un nom générique de répertoire

 Début

Monter le disque à tester dans le nas.

Activer le service SSH, pour cela aller dans le Panneau de configuration, onglet Terminal & SNMP pour activé le service SHH.
Faire Appliquer

Désactiver le service SSH une fois le badblocks fini (Si vous souhaitez le laisser ouvert, je vous conseille de lire le tuto Sécuriser les acces à son nas) .

image.png.52e6342a3bc4b17059383b4599bfa1b6.png

1er méthode par une Taches :

En premier lieu il faut  Crée un dossier partager dans le quel le fichier log sera crée (il sert a voir l avancement du badblock. Pour cela : Panneau de configuration\ Dossier partagé

J’ai mis comme nom toto car c’est à lui que je fais référence plus loin (vous pouvez changer mais faudra penser à le changer partout)

image.png.ae8c023251012b79506c83a784462e9e.png

Pour cela il faut aller Panneau de configuration\ planificateur de tache (sans date de lancement pour lancer le badblocks, on la lance manuellement) .

Cliquer sur Créer pour la créer et sélectionner Script défini par l'utilisateur

image.png.07a9306a44d1a3383c5c30e5cbd46313.png

 Dans la 1er fenêtre enlever la sélection sur Activé, ensuite aller sur Paramètre de tache

image.png.428895b3632399620260f8eae95f88bb.png

  • Dans celle-ci à la partie Script défini par l'utilisateur mettre cette ligne de commande : (commande non destructive argument -n). Le tutos est expliqué avec celle-ci

Par contre on peut faire un test plus poussé avec une commande dite destructive (écriture sur le disque ) argument –w ; pour cela cas on remplace l’argument –n par –w. Dans ce cas le test met 3 fois plus de temps ce qui peut être problématique dans certains cas  (disque de gosse capacité ex >10to, voir cas un grosse quantité de disque à tester).

 badblocks -nvs -c 98304 /dev/sdX > /volume1/toto/sdX.log 2>&1 &

Option  –c 98304 sert à définir le nombre de bloc testé par passe, la valeur de 98304 correspond à 1Go de Ram. Sans valeur c’est 64 par défaut (dans tous les cas il faut un multiple de 64).

Si vous avez un nas avec peu de RAM le  -c 98304 peu être problématique réduisait la valeur. Pour savoir comment calculer la valeur de l'argument -c voir en fin de tutos.

  • On peut rajouter option –f aussi pour les périphérique déjà monter. Dans notre cas un disque initialisé. Cela donne

  badblocks -nvsf -c 98304 /dev/sdX > /volume1/toto/sdX.log 2>&1 &

  • Idem pour l’option –b qui permet de spécifier la taille des blocs testé par passé, par défaut elle est de 1024 si l’on ne spécifie pas cet argument. En règle générale on met comme valeur 4096, cela donne.

  badblocks -nvs -c 98304 –b 4096 /dev/sdX > /volume1/toto/sdX.log 2>&1 &

Le X correspond à la lettre du disque que l on veut tester.

Dans le NAS les disques sont nommé comme suivant sd + une lettre de l’alphabet :
                Disque 1 : sda
                Disque 2 : sdb
                Disque 3 : sdc
                Disque 4 : sdd

Par contre à partir des versions des nas DSx20 et suivant sauf sur les versions J (à confirmé) les disques ne sont plus nommé sdX mais sataY ou la valeur Y est un chiffre de 1 à 9 puis de a à z.

Autre point leur nom ne dépend plus de leur emplacement dans le nas. Et pour connaitre le nom d’un disques (sataY) il faudra taper un commande en ligne de commande.

  fdisk -l | grep '/dev/[sh]d\|sata[[0-9]\|[a-z]]'

Si vous êtes dans ce cas il faudra modifier la ligne de commande en conséquence.

   badblocks -nvs -c 98304 –b 4096 /dev/sataY > /volume1/toto/sataY.log 2>&1 &

200229051233424717.jpg

Ici je fait le test sur le disques N°2

Faire Ok ensuite

Puis sélectionner le script et cliquer sur Exécuter.

image.png.ba06094b92b784658104a89c833740b7.png

Pour savoir, ou en est le badblock:

Il faut lancer wincp et renseigner les cases : Non d'hôte, Nom d'utilisateur et Mot de passe.

image.png.d9a8da092bf89ec9da52eba40ae6e0eb.png

Puis cliquer sur connexion

Si tout ce passe bien on doit avoir cette fenêtre

image.png.649f749ed7751de50feeac2c990bd4a7.png

Ensuite double cliquer sur le répertoire Volume1

image.png.374e8c2d73aa2c745ae611b9802a3425.png

Idem pour le répertoire toto

image.png.6a64fe016633ffe5c1510a2ec7fd0dd2.png

Faire un double clique sur le fichier sdX.log pour voir l’avancement.

Quand c’est fini la dernière ligne doit indiquer 100% et bad blocks found. (0/0/0 errors )

     Remarque :

Dans certain cas cela ne fonctionne pas, dans ce cas il faut crée le répertoire toto avec wincp et lui conférer les bons droits

Pour cela création de répertoire, pensez à être sur le volume1 

Puis remplir la boite de dialogue comme suit.

180221061208919427.jpg

 

2eme méthode en ligne de commande

Se connecter sur le nas avec Putty, définir l’adresse Ip du nas

image.png.dc015238a026fc453b9fd83c806f0880.png

On arrive à une fenêtre de ce type :
A login as.
Au password

image.png.051ca148da06d7b47c0b60bf004277d8.png

Ensuite il faut passer en mode Root pour cela il faut taper dans celle-ci :  sudo –i

Et mettre la password du compte admin

image.png.a23ac89f1f36acbb81e6a6c1149eb282.png

Dans cette nouvelle fenêtre taper la commande suivante pour lancer le badblocks

badblocks -nvs  -c 98304 /dev/sdX > /volume1/toto/sdX.log 2>&1 &

Pour les explications (argument, etc.. ) voir plus haut.

Si vous avez le message d'erreur suivent suite à la commande badblock "/dev/sdb is apparently in use by the system; it's not safe to run badblocks!"

Essayer cette commande

badblocks -nvsf /dev/sdX > /volume1/toto/sdX.log 2>&1 &

Voir la progression du test

il faut lancer la commande suivante dans le terminal

tail -f /volume1/toto/sdX.log

  Variante pour déclare le disque « fail »

Affaire avant de lancer le test pour déclare le disque « Fail » taper cette commande dans la fenêtre de putty :

mdadm /dev/md0 --fail /dev/sdX1

Puis

mdadm /dev/md0 --remove /dev/sdX1

ensuite

mdadm --zero-superblock /dev/sdX

Le 0 correspondent à la partition sur les disques, pour le X voir plus haut.

Faire de même pour la partition 1 et 2 (en effet il existe 3 partition sur un disque monter dans le nas : 0 pour le DSM, la 1 pour le swap et la 2 pour les volumes c’est celle-là qui est monté en raid).

Ensuite on peut passer au lancement de la commande badblocks.

A la fin du test il faut répare le DSM, pour cela gestionnaire de stockage \volumes \ réparer.

   Fin de la variante.

Badblocks et les disques USB

Pour faire simple ce n’est pas plus compliquer que la description ci-dessus

Dans un premier temps il faut brancher le boitier du disque USB au nas (en USB3 si possible)

Par défaut le disque est déclaré en sdq .

Pour ceux qui ne sont pas sûr, vous pouvez vérifier cette info en ligne de commande avec Putty (voir explication plus haut)

Ensuite il vous faut taper cette ligne de commande dans la fenêtre : fdisk –l

badblock usb1.JPG

badblock usb2.JPG

Ensuite a vous de voir si vous voulez lancer le badblock au moyen d’une tache ou en ligne de commande.

  • Dans tous les cas celle-ci sera du type :

badblocks -nvs  -c 98304 /dev/sdq > /volume1/toto/sdq.log 2>&1 &

  • On peut mettre l’argument f pour forcer le démontage de la/les partitions ce qui donne :

badblocks -nvsf  -c 98304 /dev/sdq > /volume1/toto/sdq.log 2>&1 &

  • Voir l'argument -b (explication en 1er partie de tutos)

Ensuite le badblocks se comporte comme décrit plus haut.

 

Remarque pour les versions Série + et Série XS+/XS

Cette remarque n’est valable que pour les personnes qui on des nas avec pas mal de RAM (2Go et plus).

Par contre il y a une limitation de la mémoire alloué à l’argument –c, on ne peut pas dépasser la valeur de 491520. Donc si vous avez un nas avec 5Go et plus de ram pas besoin de faire la calcul la valeur de l’argument est la suivant  –c 491520

On peut accélère le badblocks en modifiant la mémoire allouer a celui-ci  (l’argument –c 98304)

Pour cela il faut calculer cette valeur Max elle dépend de la RAM installer sur le nas. (on n’est pas obligé de prendre le max de mémoire au final  a vous de voir)

Exemple d’un nas avec 4Go :

Exemple d’un nas avec 4Go :

4*1024=4096Mo

(4096 x 3)/32 =394Mo

Il faut encore la convertir en Ko ce qui donne  384 x 1024 = 393216Ko

Le 393216Ko c’est la valeur max pour un disque, si on lance le badblock sur 3 disques il faut la diviser par 3.

Donc cela donne pour un disque l’argument suivant :

-c 393216 => ( badblocks -nvs  -c 393216  /dev/sdq > /volume1/toto/sdq.log 2>&1 & )

Pour plus d’explication voir ici

https://www.pantz.org/software/badblocks/badblocksusage.html

 

Tous sur la commande Badblocks

http://manpages.ubuntu.com/manpages/xenial/fr/man8/badblocks.8.html

 

Modifié par firlin
Maj du Tutos ajout argument -c + nom des disques sur DSx20
Posté(e)

Merci pour ces informations. Je fais les essais directement depuis une machine dédiée … Si quelques secteurs défectueux (erreur ID), c'est retour fournisseur.

Une idée de comment fonctionne les logiciels constructeurs ? Type Seatools / Datalife Guard & all ? J'utilise généralement UBCD.

Pas eu de pb en prod jusque la … i.e les disques ayant un pb ont été détectés immédiatement !

Le pb de cette procédure est que ça mobilise le NAS … je cherche quelque chose qui permette de faire ça en parallèle. UBCD permet de le faire mais faut plusieurs machine :D

Posté(e)

Merci pour le tuto même si je connaissais déjà de part un autre forum.

Je l'avais fait sur 4dd de 4To chacun et ça avait prit plusieurs jours... C'est long mais efficace.

Posté(e)

Quand tu as un multi baie non cela ne le monopolise pas vraiment, surtout à partir du moment où tu as déjà le système qui tourne dessus.

Les logiciels constructeurs ont une tolérance très laxiste... la ou badblock ne fera pas de pitier... pour faire simple.

Concernant la durée, cela dépend du modèle... pour un 4To sur un modèle J c’est environ 40h, contre une journée pour un modèle + (je l’ai fait avec plusieurs modèle de J et +)

Posté(e)
Il y a 10 heures, apossium a dit :

Le pb de cette procédure est que ça mobilise le NAS

Tu peux très bien recycler un vieux nas en DSM5.x pour faire ça typiquement un DS410J fait très bien l’affaire.

Il y a 10 heures, Einsteinium a dit :

pour un 4To sur un modèle J c’est environ 40h, contre une journée pour un modèle + (je l’ai fait avec plusieurs modèle de J et +)

Justement j’en ai fait un récemment sur un 4To dans un DS212 cela a pris pas loin de 7 jours. Donc en 40H je ne vois pas comment tu fais. J’en ai un autre sur un DS210J

Je sais qu’il y a une commande pour le faire avancer plus vite.

Posté(e)

Il suffit d'allouer plus de mémoire (ram) au test. Perso, j'avais mit ma commande pour utiliser environ 3Go sur les 8 disponibles.


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)

Merci @firlin et @Einsteinium.

Le problème est que si ca mobilise 7 jours pour 4 To … je n'imagine même pas pour 8 To x 3 voire 5 disques …

Pour 8 To faut à peu près 24H avec le logiciel constructeur (me souviens plus).

Je l'intégrerai dans mon offre dans une autre forme dans ce cas (une option selon intérêt client).

Cela me paraît difficile d'immobiliser des machines et des disques autant de temps sans facturer qqchose de cohérent …

- cela implique une préparation préalable, et donc un cout par disque plus important.

- sans parler des ventes qui ne sont pas garanties à l'avance donc je peux pas faire de prévisionnel … et vérifier les disques à l'avance.

Merci encore pour ces précisions !

J'attends le retour de @InfoYANN pour savoir ce que l'on peut accélérer c'est intéressant !

Si on a un NAS avec une voire deux baies disponibles, et bcp de RAM on peut aller encore plus vite !

C'est possible de faire les essais en parallèle sur la même machine ?

 

Posté(e)

Perso, je passe par le paquet communautaire "Disk Utils" et ensuite avec une connexion SSH , je tape cette commande :

screen /bin/sh -c '/usr/local/diskutils/sbin/badblocks -wv -b 4096 -c 250000 /dev/sdb > /tmp/badblocks_sdb.log 2>&1'

La valeur 300 000 étant en gros l'attribution de la RAM ce qui correspond à 3 Go de RAM (environ).

 

Pour 1 Go, la valeur est d'environ 98304 . Ce tuto a été trouvé sur HFR+ à l'époque et j'ai modifié la valeur car j'avais 8 Go de RAM au total dans mon NAS.

 

Posté(e)

Bon bah voila @InfoYANN pourquoi tu as eu autant de temps... tu as fait un test destructif... tu modifies même la taille de block... bref à ne pas faire sauf si l’on veut y mettre une semaine...

Et avant qu’on me le demande, la 40ene d’heures c’était sur des modèles 115J et 215J.

Posté(e)

Test destructif ? Pourquoi ça ? Ça a plutôt été rapide dans mon cas pour 4 passes complètes par disque. Je n'ai plus les stars exactes mais si mes souvenirs sont bons c'était plié en trois ou quatre jours.


Envoyé de mon iPhone en utilisant Tapatalk

Posté(e)

Question dans mon tuto à la fin de la commande badblocks j 'ai mis un & (badblocks -nvs /dev/sdX > /volume1/toto/sdX.log 2>&1 & ) alors de infoYann non .

ce "&" peut il avoir un incidence sur la vitesse d'execution du badblocks ?

Posté(e) (modifié)

Le & est pour lancer la commande en arrière plan. Cela permet également de faire autre chose avec le shell … attention le programme est fermé après fermeture du shell (selon moyen connexion) !

Je ne vois pas de différence avec ou sans sinon.

nota : préférer un script avec nohup : nohup sh script_perso.sh & (afin que le processus fonctionne même après fermeture shell).

--

Par ailleurs je ne vois pas non plus (mise à part côté capacité RAM) de différence entre les séries DS J / + / Play pour ce genre de vérification.

Pour ce type de programme c'est pas le proc qui limite c'est les I/O et la RAM … donc je ne comprends pas d'ou viendrait les différences à capacité mémoire identique !

Avec un peu de recul, l'opération est quasi celle d'une copie de fichier … donc les temps devraient être du meme ordre de grandeur qu'une copie …

Donc cela dépend de l'opération bien évidemment, mais aussi du reste de la chaine (bande passante, disque etc …).

7 jours me paraissent très longs (je ne les discute pas) pour une "copie" de 8 To.

nota : j'essaye de trouver une cohérence ;)

 

Modifié par apossium
  • 1 mois après...
Posté(e)

Salut à tous,

J'ai reçu les disques dur ce matin :)

J'ai donc installé les 3 disques dans la bête (ds918+), utilisé l'assistant démarrage jusqu'à arriver sur le bureau DSM. J'ai pour bien commencer voulu suivre ce tuto. Je n'ai donc créer aucun volume.

J'ai décidé de suivre la méthode avec tous les disques installé dans le NAS donc DSM sur les 3 disques si j'ai bien suivi et donc obligé de déclarer le disque que je veux tester comme fail.

Jusque là tout va bien je me suis bien connecté via putty sur le NAS en root.

Une fois après avoir lancé la commande " mdadm /dev/md0 --fail /dev/sdb1 " pour déclarer mon disque 2 comme fail j'ai bien dans le gestionnaire de stockage le DSM qui m'indique échec de partition système, normal.

C'est ensuite que j'ai un message qui me dit "mdadm:option --zero-superblock not valid in manage mode" quand j'essaye la commande " mdadm /dev/md0 --remove /dev/sdb1 mdadm --zero-superblock /dev/sdb1"

J'ai donc essayé de créer un volume sur chaque disque pour pouvoir les tester indépendamment mais idem. j'ai donc supprimé les volumes et retenter de reprendre de zéro mais pas mieux

J'ai du loupé un truc ? :rolleyes:

 

pour info je suis en DSM 6.1.3-15152 Update 8  

Posté(e)

Bonjour Devil344,

Essai de lancer

Citation

mdadm /dev/md0 --remove /dev/sdb1

puis

Citation

mdadm --zero-superblock /dev/sdb1

C'est normal de ne pas pouvoir faire un test badblock sur un disques avec un volumes

Posté(e) (modifié)

Salut @firlin,

J'ai donc repris de zéro, suppression de tout volume existant sur les 3 disques. Je déclare le disque 2 "fail" la led du disque 2 devient bien orange sur le boitier et dans le gestionnaire de stockage disque 2 en rouge.

j'ai fait comme tu m'as dit lancer les commande l'une après l'autre, les commandes ont l'air de bien passer. (je l'avais essayé hier)

Je me confronte à un autre soucis lorsque je tape la commande "badblocks -nvs /dev/sdb > /volume1/toto/sdb.log 2>&1 &"      j'ai l'erreur /volume1/toto/sdb.log: No such file or directory surement car je n'ai pas créer manuellement le dossier toto via winscp ?

j'ai donc relancé la commande avec "badblocks -nvs /dev/sdb > /volume1/sdb.log 2>&1 &" j'ai bien le fichier sdb.log qui se créer à la racine du dossier /volume1

Quand j'ouvre le fichier log voici le message inscrit "/dev/sdb is apparently in use by the system; it's not safe to run badblocks!"

merci à toi :)

Modifié par devil344
grillé
Posté(e)

il t faut donc crée un répertoire sous le volume 1

Citation

mkdir toto

Et vérifier que tu as les droit en écriture dessus en root.

vérifie aussi que badblock n'est pas déjà lancer. (soit top ou ps -ef )

 

Posté(e)

j'ai pu créer sans soucis le dossier toto et les droits sont bon "drwxr-xr-x 2 root root 4096 Oct 29 12:21 toto"

du coup quand je lance la commande de ton tuto je n'ai plus le message d'erreur comme quoi le dossier n'existe plus et le fichier log est bien dans le dossier toto.

Mais j'ai le même message d'erreur "/dev/sdb is apparently in use by the system; it's not safe to run badblocks!"

En cherchant sur le forum je suis tombé sur un post où quelqu'un avait le même message, on lui a préconisé de rajouter un argument f à la commande.

J'ai donc lancé la commande " badblocks -nvsf /dev/sdb > /volume1/sdb.log 2>&1 &" et la ça fonctionne le test est en cours.

l'argument f force visiblement à démonter le disque dur.

Soit j'ai oublié ou mal fait une manip mdadm avant de lancer la commande badblocks pour avoir ce message d'erreur ?

 

Merci à toi pour tes réponses, en espérant que cela pour aura aidé pour les suivant :)

Posté(e)

Je viens d'effectuer la verification des badblocks sur mes deux HGST 8To NAS (en même temps).
Le processus a pris 23 heures et 45 minutes pour le premier disque et 27 heures et 13 minutes pour le deuxième.
Il n'a trouvé aucune d'erreur.

Merci beaucoup du tutoriel @firlin !             

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.