Comment les autotests SMART sont-ils liés aux blocs défectueux?

15

L'outil smartctl permet de lancer un long auto-test ( smartctl -t long /dev/sda). Mais il y a aussi badblocksque je peux courir sur un disque. Comment les deux sont-ils liés? Si badblocks détecte des blocs défectueux, le variateur met-il automatiquement à jour ses valeurs SMART (par exemple en mettant à jour son nombre de secteurs déplacés)? Les badblocks peuvent-ils remplacer smartctl -t long, ou vice versa?

Hongli Lai
la source

Réponses:

5

Je ne suis pas d'accord avec voretaq7 - SMART n'est pas magique. Lorsque vous avez un lecteur et que l'un de ses secteurs tourne mal, vous ne pourrez plus en lire les données. Il est donc parfaitement possible d'avoir un fichier illisible sur un lecteur de disque moderne. SMART marquerait ce secteur illisible comme "En cours" et "Hors ligne non corrigible" lors de son premier accès après l'échec.

Mais lorsque ce secteur serait à nouveau écrit, il serait remappé à l'espace de remappage, non marqué et un compteur "Reallocated_Sector_Ct" augmenterait. Ensuite, un lecteur entier serait à nouveau lisible.

smartctl -t longtest est utile - il testera tout l'espace disque pour les secteurs illisibles et enregistrera et marquera comme "Current Pending" et "Offline Uncorrectable" le premier mauvais secteur rencontré lors de l'exécution. Je configure mes serveurs pour exécuter ce long test une fois par semaine sur chaque lecteur. Cela n'affecte pas trop les fonctions normales du lecteur, car les demandes de système d'exploitation ont toujours la priorité sur les analyses SMART.

Comme sur un serveur, j'exécute toujours des disques dans des miroirs RAID1, donc lorsqu'un long test trouve un secteur défectueux, je peux réécrire son contenu en utilisant les données d'un autre lecteur dans un miroir, ce qui force la réallocation.

badblocksest également utile parfois - par exemple, il testera l'ensemble du lecteur et ne s'arrêtera pas à une première erreur. Il peut tester une seule partition ou toute autre partie d'un lecteur. Vous pouvez l'utiliser pour vérifier rapidement si un mauvais bloc a été réalloué avec succès.

Tometzky
la source
11

Comme je l'ai souligné dans mon autre réponse , chaque disque dur moderne dispose d'un espace de remappage disponible (car en particulier aux densités de disque d'aujourd'hui, aucun plateau de disque ne sera parfait - il y aura toujours quelques défauts que le disque devra remapper, même sur la marque -nouveaux-jamais-été-utilisés-sortis de la chaîne de montage-dans-mes-mains).

Pour cette raison, vous devriez théoriquement avoir un échec SMART signalé avant quelque chose comme des badblockssecteurs défectueux (visibles par l'utilisateur final) sur un lecteur.
Sur les disques durs modernes, tous les secteurs défectueux visibles par l'utilisateur final (comme cela pourrait être signalé badblockspar le système d'exploitation ou détecté automatiquement par celui-ci) sont le dernier cri et le frisson d'un disque en train de mourir.


En fin de compte, SMART et badblockstestez deux choses différentes, mais liées:

SMART est un outil d'autosurveillance:

Le disque dur connaît certaines informations sur ses paramètres de fonctionnement et possède des méta-connaissances sur ce qui est "normal" pour certains et "acceptable" pour d'autres.
Si le variateur détecte que certains paramètres sont "anormaux" ou "inacceptables", il signale une condition de pré-panne - en d'autres termes, le variateur est toujours fonctionnel, mais pourrait échouer bientôt.

Par exemple: le moteur de la broche tire normalement 0,10 ampères, mais maintenant il tire 0,50 ampères - un tirage anormalement élevé qui peut indiquer que l'arbre est coincé ou que le lubrifiant permanent sur les roulements a disparu. Finalement, le moteur sera incapable de surmonter la résistance et le variateur se grippera.

Autre exemple: le variateur possède 1 000 blocs de «remappage» pour traiter les secteurs défectueux. Il en a utilisé 750, et les ingénieurs qui ont construit le lecteur ont déterminé que le nombre de remappages indique quelque chose de mal en interne (mauvais plateau, défaillance de la vieillesse, tête endommagée) - le lecteur signalera une condition de pré-défaillance vous laissant le temps d'obtenir vos données hors tension avant que l'espace de remappage ne soit épuisé et que les secteurs défectueux deviennent visibles.

SMART recherche plus que de mauvais secteurs - c'est une évaluation plus complète de la santé du lecteur. Vous pourriez avoir un avertissement de pré-défaillance SMART sur un lecteur sans secteurs défectueux et sans erreurs de lecture / écriture (par exemple, le problème du moteur de broche que j'ai décrit ci-dessus).


badblocks est un outil avec un objectif spécifique (obsolète): trouver les secteurs défectueux.

badblocksvient d'une époque antérieure au remappage SMART et aux secteurs défectueux. À l'époque, nous savions que les lecteurs avaient des imperfections, mais le seul moyen de les cartographier pour éviter de stocker accidentellement des données était de tester le disque, de provoquer une défaillance, puis de ne plus jamais y mettre de données.

La raison pour laquelle je dis que c'est obsolète, c'est que l'électronique sur les disques modernes fait déjà ce qu'il badblocksfait, en interne et quelques milliers de fois plus rapidement. badblockspermet essentiellement aux anciens disques qui manquent d'électronique sophistiquée de re-mapper (ou de sauter) les secteurs qui ont échoué, mais les disques durs modernes détectent déjà les secteurs défaillants et les remappent pour vous.

Théoriquement, vous pouvez utiliser les badblocksdonnées pour que les échecs de remappage du système d'exploitation (visibles) comme si votre disque moderne était un ancien disque Winchester, mais c'est finalement contre-productif - comme je l'ai dit précédemment, TOUT mauvais secteur détecté avec badblockssur un lecteur moderne est une cause pour ignorer le lecteur entier défectueux (ou sur le point de tomber en panne).

Les secteurs défectueux visibles indiquent que le lecteur n'a plus d'espace de remappage, ce qui est relativement rare pour les disques modernes, à moins qu'ils ne soient anciens (en fin de vie fonctionnelle) ou défectueux (mauvais plateaux / têtes d'usine).


Donc, fondamentalement, si l'exécution badblockssur un disque avant de le déployer en production vous fait vous sentir mieux, mais si votre disque a été fabriqué au cours de ce siècle et qu'il présente un mauvais secteur visible, vous devez le jeter à la poubelle (ou appeler sa garantie). Pour mon argent, le statut SMART et la défense en profondeur sont une meilleure utilisation de mon temps que la vérification manuelle des disques.

voretaq7
la source
1
D'accord, cela explique très bien la différence entre SMART et badblocks. Mais cela signifie-t-il que la surveillance de l'état SMART est suffisante, ou dois-je également exécuter de longs tests SMART de temps en temps si je veux que les avertissements SMART se déclenchent correctement? C'est-à-dire que je suis censé courir de smartctl -t long /dev/sdatemps en temps, ou puis-je supposer que smartdcela m'avertira "automatiquement" de problèmes imminents sans que je doive configurer autre chose?
Hongli Lai
C'est une décision que vous seul pouvez prendre, mais SMART n'est pas conçu pour nécessiter une intervention manuelle (il "fonctionne tout simplement" et vous ne devriez généralement pas jouer avec). Faites confiance à votre matériel (au moins dans cette mesure limitée), car si vous ne pouvez pas faire confiance à votre matériel, vous pouvez tout aussi bien faire vos bagages et rentrer chez vous.
voretaq7
2
"les lecteurs modernes font déjà ce que font les badblocks, en interne et quelques milliers de fois plus vite" badblockslit chaque octet du lecteur, les écrase avec des modèles aléatoires, puis remet les données d'origine. Les auto-tests SMART ne font pas cela. Cela devrait effacer tous les secteurs "en attente", si je comprends bien.
endolith
4
@endolith Les tests ne sont pas des équivalents directs, mais leur fonction est équivalente (découvrir et permettre le remappage de secteurs défectueux). Mon point principal était le dernier paragraphe: si vous voulez exécuter des badblocks en tant qu'exerciseur de disque (pour voir si vous pouvez provoquer des erreurs SMART car il trouve un tas de mauvais blocs) allez-y, mais si vous exécutez des badblocks aujourd'hui avec le intention de charger ensuite la liste des mauvais blocs pour éviter d'utiliser ces secteurs (comme nous l'avons fait à l'âge de pierre), vous vous trompez: les mauvais secteurs visibles signifient que vous devez jeter le lecteur dans la poubelle la plus proche.
voretaq7
1
@Hashim Oui, je pense qu'il est utile d'utiliser des badblocks car cela effacera les secteurs en attente.
endolith
5

Les bonnes réponses à cette question sont

/superuser//a/693065

/superuser//a/693064

Contrairement à d'autres réponses, je trouve que les badblocks ne sont pas obsolètes mais un outil très utile. Une fois que j'ai mis à niveau mon PC avec un nouveau disque dur et qu'il a commencé à fonctionner de manière instable. Il m'a fallu un certain temps pour réaliser grâce aux badblocks que la surface du disque avait des défauts. Depuis lors, je lance des badblocks en mode écriture complet (destructibles!) Pour chaque nouveau disque dur que je commence à utiliser et je n'ai plus jamais eu ce problème. Je recommande fortement un

time sudo badblocks -swvo sdX.log / sev / sdX

pour chaque nouveau disque dur. Il testera chaque bit du disque plusieurs fois pour l'écriture et la lecture et peut ainsi éviter beaucoup de problèmes plus tard.

Au cours de ce test, les blocs défectueux seront cartographiés par le lecteur. Ainsi, le "Nombre de secteurs alloués" doit être noté avant et après le test et comparé au seuil SMART car il en dira quelque chose sur la santé du lecteur.

Frank Breitling
la source
2
Le test de résistance d'un nouveau disque alors qu'il est encore sous garantie est une excellente idée.
endolith
2

badblocks est une relique d'autrefois et n'est pas strictement utile, il peut trouver un secteur actuellement illisible mais la bonne chose à faire avec un mauvais secteur est de récupérer les données de la sauvegarde. Ce qui peut être fait si les données n'étaient pas essentielles pour vous est de supprimer le fichier associé et d'écrire quoi que ce soit à cet emplacement, cela permettra au disque de réallouer le secteur s'il pense qu'il en a besoin et de continuer à travailler.

L'auto-test du disque va également faire le tour et tester l'ensemble du média pour divers défauts, il est censé utiliser des seuils inférieurs par rapport à ce qu'il utilise en fonctionnement normal pour voir si le disque a de nombreux points faibles et en fonction de la logique du fournisseur, il peut décider que le disque a dépassé sa durée de vie utile et déclare l'échec du test. À ce stade, vous devez retirer toutes vos données ou les récupérer à partir de la sauvegarde et remplacer le disque.

Si une action du disque (par des blocs défectueux ou un fonctionnement normal) rencontre une erreur de lecture irrécupérable, le disque met automatiquement à jour son compteur de réallocation en attente et lorsque la réallocation est effectuée, il met à jour la réallocation en attente et les compteurs réalloués. Un simple dd fera que cela se produise également.

Si vous devez choisir entre les deux, utilisez smartctl -t tant qu'il aurait une meilleure analyse du disque.

Je peux également suggérer l'utilisation de mon utilitaire diskscan https://github.com/baruch/diskscan , il fonctionne plus comme des badblocks mais essaie d'évaluer s'il y a des secteurs qui vont mal, un peu comme un secteur malentendant qui prend un beaucoup plus de temps à lire. Cela indique un problème de média en développement et dans les versions futures, il pourra également proposer une tentative automatique pour aider le disque à résoudre ce problème.

Baruch Even
la source
"De plus, les badblocks sont essentiellement obsolètes de nos jours, car les disques eux-mêmes réalloueront les données et il n'y a plus vraiment besoin de mapper les mauvais blocs au niveau du système de fichiers." N'insiste pas badblockssur le lecteur d'une manière différente des auto-tests SMART?
endolith
Non. Badblocks effectuera une analyse séquentielle du disque. Ce n'est pas mieux que dd et ce sera aussi ce que fait l'auto-test.
Baruch Even
badblockslit chaque octet du disque, le remplace par des modèles de test, puis réécrit les données d'origine. Les autotests SMART sont également des tests en lecture-écriture?
endolith
1
Eh bien, la réécriture des données par les badblocks effacera tous les "secteurs en attente" et fera que le lecteur les marquera à nouveau comme bons ou les réaffectera, n'est-ce pas?
endolith
1
Oui. C'est peut-être ce que vous voulez dans un tel cas.
Baruch Even