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