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:
- 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.
- 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.
- 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é.