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

128

Pourquoi un disque dur connu pour contenir des blocs défectueux (vérifié dans HDTune et HDDScan) gèle-t-il tout mon système?

Ce n'est pas le lecteur du système d'exploitation; il est connecté à un autre port SATA et j'essaie de copier des fichiers à partir de celui-ci sur un autre disque sain.

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

Je m'attendrais à voir geler uniquement le programme que j'utilise pour copier les fichiers (Explorateur Windows, etc.), mais à la place, mon PC entier est saccadé et je ne peux pas naviguer sur le Web ni regarder des films tout en copiant des fichiers à partir du lecteur endommagé.

La longue histoire

Je vis dans une région rurale où il y a des problèmes d'électricité (baisses de tension, etc.). J'utilise moi-même un onduleur et mes propres disques durs me conviennent parfaitement. Mais mes voisins demandent souvent de l’aide pour résoudre leurs problèmes d’ordinateur, et j’aperçois souvent que leurs disques durs sont endommagés, probablement à cause de problèmes d’électricité. Bien sûr, après avoir remplacé le disque endommagé, je suggère à mes voisins d’acheter un UPS.

Je me suis toujours demandé pourquoi mon PC se bloque complètement lors de la récupération de données à partir de disques endommagés. Est-ce un problème matériel? Est-ce causé par la façon dont le système d'exploitation lit les données? Est-ce quelque chose de spécifique à Windows et je ne vais pas en faire l'expérience sur * nix?

Quoi qu'il en soit, à partir de maintenant, j'utiliserai des logiciels dédiés (tels que Unkoppable Copier de Roadkil) au lieu de Windows Explorer, bien que je ne sois pas sûr que cela fonctionne différemment, sans figer tout le PC.

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

JustAMartin
la source
11
L'utilisation d'un boîtier USB externe devrait vous aider, car vous n'attachez plus le disque défectueux au contrôleur SATA de votre système (il est également judicieux d'ajouter une couche supplémentaire de matériel sacrificiel entre votre carte mère et un disque défectueux).
Matteo Italia
3
Ce n'est pas spécifique au SATA, les disques IDE ont fait ceci aussi bien. De plus, le fait que le disque soit endommagé ne signifie pas que le contrôleur ne l’est pas, surtout si un défaut électrique a endommagé le disque.
Chris H
La réponse acceptée est géniale et contient ce que j'allais dire et bien plus encore. Fondamentalement, vous paniquez votre contrôleur SATA, qui est un périphérique système extrêmement important, qui à son tour panique Windows. Je me demande si l'activation de AHCI / "hot-swap" dans le BIOS pourrait améliorer la situation.
Arthur Kay

Réponses:

170

C'est l'un de ces domaines où SATA est suboptimale. Le problème réside au niveau du protocole d'interconnexion du périphérique 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 magiquement les choses, si ce n'est que vous pouvez essayer de définir différentes valeurs de délai afin de réduire l'impact du problème (ce qui peut ou non être possible en fonction du matériel et du micrologiciel; voir ci-dessous. ).

Il y a quelques points importants ici:

  1. Avec SATA, si le disque cesse de répondre, cela peut bloquer tout le système de stockage, pas seulement le disque qui rencontre des problèmes. Il a certainement le potentiel de bloquer l’ensemble du contrôleur, et comme la plupart des systèmes grand public n’ont qu’un seul contrôleur de disque (celui intégré sur la carte mère), cela signifie tout le stockage. C'est encore pire si le lecteur tombe en panne de manière non standard et / ou inattendue, ce qui peut certainement arriver si le lecteur est marginal. Vous pouvez être intéressé par Comment un seul disque dans une matrice matérielle SATA RAID-10 peut-il brouiller toute la matrice? sur faute de serveur.
  2. La plupart des lecteurs SATA grand public ont des délais d'attente par défaut longs (de l'ordre de quelques minutes) et de nombreux lecteurs SATA grand public ne disposent pas d'un contrôle configurable de la récupération des erreurs . Les disques dits "NAS" ont souvent un ERC configurable, et les disques haut de gamme en ont presque toujours; ces lecteurs peuvent également avoir des délais plus courts par défaut (7 secondes étant une valeur commune). De longs délais d'attente sont avantageux si le lecteur ne contient que la seule copie des données, ce qui est malheureusement commun sur les systèmes grand public; ils constituent un inconvénient dans une configuration redondante ou dans les cas où vous souhaitez simplement retirer le plus possible du lecteur avant qu'il ne se détériore davantage.
  3. Un lecteur continuera à essayer de lire un secteur défectueux jusqu'à ce qu'il atteigne son seuil de délai d'expiration ou jusqu'à ce qu'un abandon soit signalé par l'hôte. Étant donné que le bus SATA peut être bloqué par l'attente de la fin de la lecture, il est possible que le système d'exploitation ne signale pas l'abandon d'une commande de niveau de stockage et que, dans des cas extrêmes, les lecteurs ne répondent même pas correctement à une réinitialisation du bus SATA. Dans une telle situation.

Le point n ° 1 est l’un des principaux arguments de vente de SAS sur les serveurs; SAS gère nettement mieux les erreurs que SATA. Le point n ° 2 est une limitation du microprogramme de lecteur, et le point n ° 3 devient vraiment un problème uniquement à cause du point n ° 2.

Donc, ce qui se passe, c'est que le système d'exploitation envoie une commande "lire les secteurs" au disque et que les secteurs particuliers sont endommagés. Ainsi, le disque passe en mode de nouvelle tentative pour essayer d'extraire les données des plateaux, en essayant la lecture encore et encore jusqu'à ce qu'il obtienne des données suffisantes pour que la correction d'erreur du disque ( FEC ) puisse corriger les erreurs restantes. Si vous êtes malchanceux, cela ne sera peut-être jamais, mais le lecteur continuera à essayer pendant une assez longue période avant de décider que cette lecture ne réussira pas.

Étant donné que le système d'exploitation attend la lecture, cela ralentira au minimum le processus de copie et, en fonction de l'architecture exacte du système d'exploitation, le système d'exploitation peut devenir saccadé ou même se bloquer pendant toute la durée. Le disque, à ce stade, est occupé avec la lecture d'origine et ne répondra à aucune commande de lecture avant la fin de l'exécution de celle qui est en cours d'exécution (avec succès ou non) et les autres logiciels ne feront généralement pas mieux que le système d'exploitation. est en cours d'exécution.

Par conséquent, tout ce qui déclenche une lecture ailleurs ( idéalement , uniquement sur le lecteur endommagé) doit attendre en ligne jusqu'à ce que le lecteur endommagé lise avec succès le secteur en question ou détermine qu'il ne peut pas être lu. En raison du traitement SATA peu optimal des lecteurs non réactifs, cela peut signifier que non seulement le lecteur que vous copiez va avoir son E / S retardée. Cela peut très facilement entraîner un ralentissement ou une absence de réponse des autres logiciels, car ce logiciel attend la fin d'une demande d'E / S différente, même si le système d'exploitation est capable de le gérer.

Il est également important de noter ici que les E / S de disque peuvent se produire même si vous n’accédez explicitement à aucun fichier sur le disque. Les deux causes principales sont le code exécutable à la demande et le swap. Étant donné que l’échange est parfois utilisé même lorsque le système n’exige pas de mémoire, et que le code exécutable à chargement à la demande est courant sur les systèmes modernes et que les formats de fichiers exécutables sont modernes, la lecture involontaire de disques lors d’une utilisation normale est une possibilité très réelle.

Comme indiqué dans un commentaire à la question de Matteo Italia , une stratégie d'atténuation consiste à utiliser une interconnexion de stockage différente, ce qui est une façon compliquée de dire "placez le disque dans un boîtier USB". En résumant via le protocole de stockage de masse USB , cela isole la partie SATA problématique du reste de votre système, ce qui signifie qu'en théorie , seules les E / S de ce disque spécifique devraient être affectées par des problèmes d'E / S sur ce disque.

Soit dit en passant, c'est pourquoi le SATA (en particulier, SATA sans ERC au niveau du disque) est souvent découragé pour le RAID (en particulier les niveaux RAID avec redondance, qui, parmi les standards, sont tous sauf le RAID 0 ); les longs délais d'attente et la mauvaise gestion des erreurs peuvent facilement entraîner le rejet d'un périphérique entier de la matrice pour un seul secteur défectueux, ce que le contrôleur RAID pourrait gérer parfaitement en cas de redondance et si le contrôleur de stockage sait que c'est là le problème. SAS a été conçu pour les grandes baies de stockage, et donc avec l'espoir qu'il y aura des problèmes sur différents lecteurs de temps en temps, ce qui a conduit à étant conçu pour traiter le cas d'un seul disque problématique ou demande d' E / S gracieusementmême si le lecteur ne le fait pas. Les disques problématiques ne sont pas très courants dans les systèmes grand public simplement parce que ceux-ci ont généralement peu de disques installés et que ceux installés ne sont jamais redondants. SATA ayant pour objectif de remplacer PATA / IDE et non SCSI (ce dernier étant la niche visée par SAS), il est probable que ses fonctions de traitement des erreurs et ses exigences (ou garanties) ont été considérées comme adéquates au cas d'utilisation envisagé.

un CVn
la source
19
Merci d’avoir posté une réponse sensée qui explique ce qui se passe. C’est le genre de question pour laquelle je vois habituellement des réponses vagues, telles que "parce que le système attend le lecteur" ou "parce qu’il est conçu de cette façon".
Mehrdad
4
@ Kasperd: Assez bien. Cela fait également partie de la "faute" de Windows, car cela peut se produire aussi facilement avec plusieurs contrôleurs. Cette réponse est un peu délibérément vague , mais les contrôleurs d'entreprise SAS ne sont pas à l'abri du problème non plus. Cela se résume simplement à certaines demandes d'E / S bloquantes. Certaines opérations de disque dur exigent que l’opération X soit terminée avant l’opération Y, et si X ne s’achève jamais, Y ne peut jamais commencer - et tout événement postérieur à Y se bloque également, indique si le lecteur, le contrôleur, le pilote ou le système d’exploitation est à l’état. faute.
qasdfdsaq
2
@JustAMartin En fait, tout est déjà presque asynchrone: tout périphérique compatible DMA de nos jours est saturé en asynchrone; le noyau ne planifie que les requêtes et gère les interruptions signalant que la requête est terminée. Le problème est que vous devez parfois attendre la fin de l'opération, ce qui peut bloquer quelque chose d'important. Comme l’a noté user20574, la mémoire virtuelle en fait partie, mais de nombreuses choses nécessitent des garanties. Certaines parties du noyau ne sont pas asynchrones et, bien sûr, certains pilotes / périphériques sont tout simplement nuls.
Luaan
2
@ MichaelKjörling " Etant donné que le système d'exploitation attend la lecture, cela ralentira au minimum le processus de copie pour une analyse, et en fonction de l'architecture exacte du système d'exploitation, le système d'exploitation peut devenir saccadé ou même se bloquer pendant toute la durée." - Pourquoi le système d'exploitation devient-il saccadé dans le cas d'une lecture à partir d'un lecteur secondaire (non système)? Le problème ne peut pas être entièrement dû au comportement de gestion des erreurs du contrôleur SATA. Je pense que cette réponse pourrait tirer parti d'informations sur la manière dont Windows traite les erreurs dans son sous-système de disque.
Jordan Rieger
1
@ MichaelKjörling assez juste. La réponse contient beaucoup de bonnes informations, mais je pense que cela n'explique pas tout à fait le scénario spécifique du PO. Pour aborder la question sous un angle différent, pouvez-vous citer n'importe quelle référence pour sauvegarder votre argument n ° 1: "Avec SATA, si le lecteur cesse de répondre, le système de stockage entier est bloqué, pas uniquement le lecteur qui rencontre des problèmes. Il a certainement le potentiel d’attacher l’ensemble du contrôleur. " ? Cela semble être une conception terrible. N’est-ce pas le sous-système de disque du système d'exploitation le coupable le plus probable? Par exemple, le contrôleur est asynchrone, mais le pilote de système d'exploitation bloque parfois inutilement.
Jordan Rieger
3

Comme indiqué ci-dessus, le problème lié au blocage du système dû à un disque dur est principalement dû aux longues tentatives du disque pour récupérer des données illisibles à partir de secteurs défectueux. L'un des arguments de vente des lecteurs d'entreprise est le délai de lecture très court pour les secteurs défaillants. L'utilisation d'un lecteur d'entreprise peut atténuer vos problèmes dans une certaine mesure, mais ne les résoudra pas.

La meilleure solution, à l'avenir, est de maintenir des sauvegardes appropriées pour que la récupération ne soit pas nécessaire. Changer de logiciel de récupération ne changera rien car il s'agit d'un problème de délai d'expiration du microprogramme.

John Pace II
la source
2

Pourquoi les disques durs endommagés gèlent-ils le système?

Ils n'ont pas à (en général). Cela dépend vraiment du système de fichiers particulier de la manière dont une panne de disque est traitée.

Pensez à ZFS, conçu dès le départ pour gérer une certaine tolérance aux pannes. Voici une vidéo de démonstration (et une explication plus détaillée ) où ils placent des roues sur une enclume, prennent une balançoire avec un marteau et une autre. Tout en ZFS continue à fonctionner.

Jens
la source
2
En fait, il existe des défaillances de disque que ZFS ne gère pas bien. Par exemple, les lectures extrêmement longues avant l'expiration de la demande d'E / S, dans des configurations redondantes ou non redondantes. (Vous pouvez également configurer ZFS de manière à éviter toute redondance.) Cela peut facilement entraîner le rejet de lecteurs de la matrice dans ZFS, ce qui, si vous tombez sous le seuil de redondance, peut entraîner devenir indisponible. Si défini avec failmode = wait, cela peut donner des résultats similaires. Une défaillance totale du disque est le cas le plus simple pour tout sous-système de stockage. ce sont des pulsions marginales qui posent des problèmes.
un CVn
Et avant que vous pensiez le contraire, je suis moi-même (presque exclusivement) sous ZFS. C'est un excellent système de fichiers et un excellent gestionnaire de volume, si vous êtes prudent et savez ce que vous faites. Cependant, il est conçu pour les systèmes d'entreprise (postes de travail et serveurs haut de gamme), les administrateurs étant payés pour savoir ce qu'ils font. Il n'est pas conçu pour gérer correctement certains modes de défaillance rencontrés dans le matériel standard, y compris les problèmes de RAM et les disques prenant beaucoup de temps à renvoyer une demande d'E / S, et il n'est pas conçu pour être facile à utiliser par les utilisateurs particuliers cas d'utilisation par l'utilisateur à domicile.
un CVn
Sauf dans la vidéo, ZFS ne continue pas à fonctionner. Il redémarre après avoir déconnecté le lecteur.
Christoffer Hammarström
-2

Je pense que le problème que vous rencontrez est une partie de bas niveau du système d'exploitation qui essaie à plusieurs reprises de lire des blocs défectueux avant d'abandonner. Cette routine est mise en œuvre à un niveau bas au cas où elle serait nécessaire lors du démarrage ou d'une autre opération autonome, et il est donc difficile de la rendre ré-entrante. Le système d’exploitation recherchera continuellement pendant le fonctionnement normal et il est difficile d’accorder la priorité aux demandes concurrentes car le système de bas niveau ne connaît pas la priorité du processus qui détient une demande de pagination.

Jrrk
la source
6
Le « système de bas niveau » ne sait la priorité d'un processus qui demande une page; ces informations sont conservées dans des tables de pages , bien que l'implémentation dépende du système de gestion de la priorité. Cependant, ce n’est pas la bonne réponse à la question - c’est un problème matériel, pas un problème de système d’exploitation.
Chris Cirefice
1
Je pense que la bonne réponse à la question est de refuser d’utiliser un lecteur défectueux. Toutefois, cela ne satisferait pas les utilisateurs qui souhaitent naturellement récupérer le plus de données possible.
Jrrk