135 votes

Pourquoi les disques durs endommagés bloquent-ils l'ensemble du système ?

Pourquoi un disque dur dont on sait qu'il a des blocs défectueux (vérifiés dans HDTune et HDDScan) bloque-t-il tout mon système ?

Il ne s'agit pas du lecteur du système d'exploitation ; il est relié à un autre port SATA et j'essaie de copier des fichiers de ce lecteur vers un autre lecteur sain.

J'ai rencontré ce problème avec presque tous les disques durs endommagés et tous les PC Windows.

Je m'attendrais à voir le gel uniquement pour le programme que j'utilise pour copier les fichiers. (Windows Explorer, etc.), mais au lieu de cela, tout mon PC devient saccadé, et je ne peux pas naviguer sur le Web ou regarder des films tout en copiant des fichiers à partir du disque endommagé.

La longue histoire.

Je vis dans une zone rurale où il y a des problèmes d'électricité (coupures de courant, etc.). J'utilise moi-même un onduleur et mes propres disques durs sont en parfait état. Mais mes voisins demandent souvent de l'aide pour leurs problèmes de PC, et je découvre souvent que leurs disques durs sont endommagés, très probablement à cause des problèmes d'électricité. Bien sûr, après avoir remplacé le disque endommagé, je suggère à mes voisins d'acheter un onduleur.

Je me suis toujours demandé pourquoi mon PC se bloquait complètement lors de la récupération de données sur des disques endommagés. S'agit-il d'un problème matériel ? Est-ce dû à la façon dont le système d'exploitation lit les données ? S'agit-il d'un problème spécifique à Windows, que je ne rencontrerai pas sous *nix ?

Quoi qu'il en soit, à partir de maintenant, j'utiliserai un logiciel dédié (comme Unstoppable Copier de Roadkil) au lieu de l'Explorateur Windows, bien que je ne sois pas sûr que cela fonctionne différemment, sans geler tout le PC.

Ce n'est pas une demande d'aide, c'est plutôt à des fins éducatives, pour que je sache pourquoi les choses fonctionnent de cette façon.

175voto

user Points 28521

C'est l'un des domaines où le SATA est sous-optimal. Le problème se situe au niveau du protocole d'interconnexion des périphériques de stockage, et n'est donc pas lié au logiciel que vous utilisez. L'utilisation d'un autre copieur de fichiers ou d'un autre système d'exploitation n'améliorera pas les choses comme par magie, sauf qu'elle pourrait essayez de définir différentes valeurs de délai d'attente pour réduire l'impact du problème (ce qui peut ou non être possible en fonction du matériel et du microprogramme ; voir ci-dessous).

Il y a quelques points importants ici :

  1. Avec SATA, si le lecteur ne répond plus, cela peut bloquer l'ensemble du système de stockage, pas seulement le disque qui a des problèmes. La plupart des systèmes grand public n'étant équipés que d'un seul contrôleur de disque (celui qui est intégré à la carte mère), cela concerne l'ensemble du stockage. C'est encore pire si le disque tombe en panne de manière non standard et/ou inattendue, ce qui peut certainement arriver si le disque est marginal. Vous pouvez être intéressé par Comment un seul disque d'une matrice RAID-10 SATA matérielle peut-il provoquer un arrêt brutal de toute la matrice ? sur Server Fault.
  2. La plupart des disques SATA grand public ont longs délais d'attente par défaut (de l'ordre de quelques minutes) et de nombreux disques SATA grand public ne sont pas configurables. contrôle de la récupération des erreurs . Les lecteurs dits "NAS" sont souvent dotés d'un ERC configurable, et les lecteurs haut de gamme le sont pratiquement toujours ; ces lecteurs peuvent également avoir des délais d'attente par défaut plus courts (7 secondes étant une valeur courante). Les périodes de temporisation longues sont avantageuses si le disque contient la seule copie des données, ce qui est malheureusement courant sur les systèmes grand public ; elles sont un inconvénient dans une configuration redondante ou lorsque vous souhaitez simplement retirer le maximum de données du disque avant qu'il ne se détériore davantage.
  3. Un lecteur continuer à essayer de lire un mauvais secteur jusqu'à ce qu'il atteigne son seuil de temporisation ou qu'un abandon soit signalé par l'hôte. Comme le bus SATA peut être bloqué par l'attente de la fin de la lecture, il peut être impossible pour le système d'exploitation de signaler l'abandon d'une commande au niveau du stockage et, dans des cas extrêmes, les lecteurs peuvent même ne pas répondre correctement à une réinitialisation du bus SATA dans une telle situation.

Le point 1 est l'un des principaux arguments de vente de l'entreprise. SAS sur les serveurs ; SAS a de manière significative meilleure gestion des erreurs que SATA. Le point 2 est une limitation du microprogramme du lecteur, et le point 3 ne devient un problème qu'en raison du point 2.

Donc ce qui se passe c'est que que le système d'exploitation envoie une commande de "lecture de secteurs" au disque et que les secteurs en question sont endommagés. Ainsi, le disque passe en mode de réessai pour essayer d'extraire les données des plateaux, en essayant la lecture encore et encore jusqu'à ce qu'il obtienne des données suffisamment bonnes pour que la correction d'erreur propre au disque ( FEC ) est capable de corriger les erreurs restantes. Si vous n'avez pas de chance, cela peut ne jamais arriver, mais le lecteur continuera à essayer pendant une période assez longue avant de décider que cette lecture ne va pas réussir.

Comme le système d'exploitation attend la lecture, cela va au moins ralentir le processus de copie et, selon l'architecture exacte du système d'exploitation, il peut devenir saccadé ou même se figer. Le disque, à ce stade, est occupé par la lecture originale et ne répondra pas à d'autres commandes de lecture jusqu'à ce que celle qui est en cours d'exécution se termine (avec ou sans succès), et les autres logiciels ne feront généralement pas mieux que le système d'exploitation sur lequel ils fonctionnent.

Par conséquent, tout ce qui déclenche une lecture ailleurs ( idéalement uniquement sur le lecteur endommagé) va devoir faire la queue jusqu'à ce que le lecteur endommagé réussisse à lire le secteur en question ou détermine qu'il ne peut pas être lu. À cause de la gestion non optimale des disques non réactifs par SATA, cela peut signifier que non seulement le disque à partir duquel vous copiez va avoir son E/S retardée. Cela peut très facilement entraîner la lenteur ou le manque de réactivité d'autres logiciels, qui attendent la fin d'une autre demande d'E/S, même si le système d'exploitation est capable de faire face.

Il est également important de noter que les E/S de disque peuvent se produire même si vous n'accédez pas explicitement à des fichiers sur le disque. Les deux principales causes de ce phénomène sont le code exécutable chargé à la demande et le swap. Étant donné que le swap est parfois utilisé même lorsque le système n'est pas sous pression de mémoire, et que le code exécutable à la demande est courant sur les systèmes modernes et avec les formats de fichiers exécutables modernes, une activité de lecture de disque involontaire pendant une utilisation normale est une possibilité très réelle.

Comme le souligne un commentaire de la question par Matteo Italia Si l'on veut éviter les problèmes de sécurité, une stratégie d'atténuation consiste à utiliser une interconnexion de stockage différente, ce qui est une façon compliquée de dire "mettre le disque dans un boîtier USB". En faisant abstraction de l'interconnexion Mémoire de masse USB cela isole la partie SATA problématique du reste de votre système, ce qui signifie que en théorie , seules les E/S sur ce disque spécifique devraient être affectées par les problèmes d'E/S sur ce disque.

En passant, c'est à peu près la raison pour laquelle le SATA (en particulier, le SATA sans ERC au niveau du disque) est souvent déconseillé pour le RAID (en particulier, le SATA sans ERC au niveau du disque). Niveaux RAID avec redondance, qui parmi les standards est tout sauf RAID 0 ) ; les longues périodes d'attente et la mauvaise gestion des erreurs peuvent facilement faire en sorte qu'un périphérique entier soit retiré de la matrice pour un seul secteur défectueux, ce que le contrôleur RAID pourrait très bien gérer si la redondance existe et si le contrôleur de stockage sait simplement que c'est le problème. Le système SAS a été conçu pour les grandes matrices de stockage, et donc dans l'attente de problèmes occasionnels sur divers lecteurs, ce qui l'a conduit à être conçu pour gérer le cas d'un seul lecteur ou d'une seule demande d'E/S problématique. avec élégance même si le lecteur ne le fait pas. Les disques problématiques ne sont pas très courants dans les systèmes grand public, tout simplement parce que ces derniers ont tendance à ne pas avoir beaucoup de disques installés, et que ceux qui sont installés n'ont pratiquement jamais de redondance ; étant donné que SATA visait à remplacer PATA/IDE et non SCSI (ce dernier étant le créneau visé par SAS), il est probable que ses fonctions de gestion des erreurs et ses exigences (ou garanties) étaient considérées comme adéquates pour le cas d'utilisation prévu.

3voto

John Pace II Points 39

Comme indiqué plus haut, le problème des blocages du système dus à un disque dur défectueux est principalement dû aux longues tentatives du disque pour récupérer les données illisibles des secteurs défectueux. L'un des arguments de vente des disques d'entreprise est le délai de lecture très court pour les secteurs défectueux. L'utilisation d'un disque d'entreprise peut atténuer vos problèmes dans une certaine mesure, mais ne les résoudra pas.

La meilleure solution, pour l'avenir, est de maintenir des sauvegardes appropriées afin que la récupération ne soit pas nécessaire. Changer de logiciel de récupération ne fera pas de différence, car il s'agit d'un problème de délai d'attente du micrologiciel.

2voto

Jens Points 575

Pourquoi les disques durs endommagés bloquent-ils tout le système ?

Ils n'ont pas à le faire (en général). La façon dont une panne de disque est gérée dépend du système de fichiers concerné.

Considérez ZFS, qui est conçu dès le départ pour gérer une certaine tolérance aux pannes. Voici un vidéo de démonstration (et un avec plus d'explications ), où ils placent des disques d'entraînement sur une enclume, se servent d'un marteau de forgeron et percent un autre disque. Tout cela pendant que ZFS continue de fonctionner.

-2voto

jrrk Points 101

Je pense que le problème que vous rencontrez est une partie de bas niveau du système d'exploitation qui essaie plusieurs fois de lire des blocs défectueux avant d'abandonner. Cette routine est implémentée à un bas niveau au cas où elle serait nécessaire pendant le démarrage ou une autre opération autonome, et il est donc difficile de la rendre ré-entrante. Le système d'exploitation va paginer continuellement pendant le fonctionnement normal et il est difficile de donner une priorité aux demandes concurrentes parce que le système de bas niveau ne connaîtra pas la priorité du processus qui possède une demande de pagination.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X