web-dev-qa-db-fra.com

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

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 ne m'attendrais à voir le gel que pour le programme que j'utilise pour copier les fichiers (Explorateur Windows, etc.), mais à la place mon PC entier devient saccadé et je ne peux pas naviguer sur le Web ou regarder des films tout en copiant des fichiers à partir le 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, trè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 geler tout votre 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.

126
JustAMartin

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 exécutez. 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 que essayez de définir différentes valeurs de délai d’attente afin de réduire l’impact du problème (ce qui peut être impossible ou non selon le matériel et micrologiciels (voir ci-dessous).

Il y a quelques points importants ici:

  1. Avec SATA, si le lecteur cesse de répondre, cela peut bloquer tout le système de stockage} _ pas seulement le lecteur qui rencontre des problèmes. Il a certainement le potentiel de lier 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 baie matérielle SATA RAID-10 peut-il brouiller toute la baie? en cas de défaillance du serveur.
  2. La plupart des lecteurs SATA grand public ont délais d'attente par défaut longs (de l'ordre de quelques minutes) et de nombreux lecteurs SATA grand public ne disposent pas du contrôle configurable de récupération erreur . Les disques dits "NAS" ont souvent un code ERC configurable, et les disques haut de gamme, 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 désavantage 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 restera (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, le système d'exploitation peut ne pas être en mesure de signaler l'abandon d'une commande de niveau de stockage et, dans des cas extrêmes, les lecteurs peuvent même ne pas bien réagir à 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 a significativement meilleure gestion des 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'à obtenir des données suffisamment bonnes pour que la correction d'erreur du disque ( FEC ) puisse être corrigée. les erreurs restantes. Si vous êtes malchanceux, cela ne sera peut-être jamais, mais le lecteur continuera à essayer pendant assez longtemps 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 pour une analyse, et selon 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é par 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é) va devoir 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 peu optimisé par SATA 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 la lenteur ou l'absence de réponse d'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 réelle possibilité.

Comme indiqué dans un commentaire de Matteo Italia sur la question, l'une des stratégies 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 USB Mass Storage , cela isole la partie SATA problématique du reste de votre système, ce qui signifie que en théorie, seules les E/S de ce disque doivent être affectées par Problèmes d'E/S sur ce disque.

Soit dit en passant, c'est assez pourquoi SATA (en particulier, SATA sans ERC au niveau du disque) est souvent découragé pour le RAID (en particulier niveaux RAID avec redondance, ce qui parmi les standards est tout sauf 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 tout simplement que c'est le problème. SAS a été conçu pour les baies de stockage volumineuses et, partant, dans l'espoir qu'il y aura parfois des problèmes sur divers lecteurs, ce qui l'a amené à être conçu pour traiter le cas d'un seul lecteur ou d'une seule demande problématique d'E/S gracieusement 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 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 le créneau visé 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é.

166
a CVn

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 points de vente des disques 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.

3
John Pace II

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 défaillance 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 avec une explication plus détaillée ) où ils placent leurs roues sur une enclume, prennent une balançoire avec un marteau et entraînent une autre. Tout en ZFS continue à fonctionner.

2
Jens