Esta es una de esas áreas donde SATA es subóptima. El problema está en el nivel de protocolo de interconexión del dispositivo de almacenamiento y, por lo tanto, no está relacionado con el software que está ejecutando. Usar otra copiadora de archivos u otro sistema operativo no mejorará mágicamente las cosas, excepto que podría intentar establecer diferentes valores de tiempo de espera para reducir el impacto del problema (que puede o no ser posible dependiendo del hardware y el firmware; ver más abajo )
Hay algunos puntos importantes aquí:
- Con SATA, si la unidad deja de responder, esto puede bloquear todo el sistema de almacenamiento, no solo la unidad que tiene problemas. Ciertamente tiene el potencial de vincular todo el controlador, y dado que la mayoría de los sistemas de consumo tienen un solo controlador de disco (el integrado en la placa base), esto significa todo el almacenamiento. Es aún peor si la unidad falla de alguna manera inesperada o no estándar, lo que ciertamente puede suceder si la unidad es marginal. Te puede interesar ¿Cómo puede un solo disco en una matriz SATA RAID-10 de hardware detener toda la matriz? en la falla del servidor.
- La mayoría de las unidades SATA de consumo tienen largos períodos de tiempo de espera predeterminados (del orden de minutos) y muchas unidades SATA de consumo carecen de control de recuperación de errores configurable . Las llamadas unidades "NAS" a menudo tienen ERC configurable, y las unidades de gama alta casi siempre tienen; tales unidades también pueden tener tiempos de espera predeterminados más cortos (7 segundos es un valor común). Los largos períodos de tiempo de espera son ventajosos si la unidad contiene la única copia de los datos, lo que desafortunadamente es común en los sistemas de consumo; son una desventaja en una configuración redundante o donde simplemente desea sacar lo más posible de la unidad antes de que se deteriore aún más.
- Una unidad seguirá intentando leer un sector defectuoso hasta que alcance su límite de tiempo de espera o hasta que el host indique un aborto. Dado que el bus SATA puede estar atado por la espera de que termine la lectura, es posible que el sistema operativo no pueda indicar un aborto del comando de nivel de almacenamiento, y en casos extremos, las unidades podrían no responder bien a un reinicio del bus SATA en tal situación.
El punto n. ° 1 es uno de los principales puntos de venta de SAS en servidores; SAS tiene un manejo de errores significativamente mejor que SATA. El punto n. ° 2 es una limitación del firmware de la unidad, y el n. ° 3 se convierte en un problema realmente solo por el n. ° 2.
Entonces, lo que sucede es que el sistema operativo emite un comando de "sectores de lectura" en el disco, y los sectores particulares de alguna manera están dañados. Por lo tanto, el disco pasa al modo de reintento para intentar quitar los datos de los platos, intentando leer una y otra vez hasta que obtenga datos lo suficientemente buenos como para que la corrección de errores ( FEC ) del disco pueda corregir los errores restantes. Si no tiene suerte, es posible que esto nunca suceda, pero la unidad seguirá intentándolo durante un período de tiempo bastante largo antes de decidir que esta lectura no tendrá éxito.
Debido a que el sistema operativo está esperando la lectura, esto al menos ralentizará el proceso de copia a un rastreo, y dependiendo de la arquitectura exacta del sistema operativo puede hacer que el sistema operativo se vuelva irregular o incluso se congele por el tiempo. El disco, en este punto, está ocupado con la lectura original y no responderá a más comandos de lectura hasta que finalice el que se está ejecutando actualmente (con éxito o sin éxito), y otro software generalmente no funcionará mejor que el sistema operativo. se está ejecutando.
Por lo tanto, cualquier cosa que active una lectura en otro lugar ( idealmente , solo en la unidad dañada) tendrá que esperar en línea hasta que la unidad dañada lea con éxito el sector en cuestión o determine que no se puede leer. Debido al manejo menos que óptimo de SATA de las unidades que no responden, esto puede significar que no solo la unidad desde la que está copiando tendrá un retraso de E / S. Esto puede causar que otro software se vuelva lento o no responda, ya que ese software espera a que finalice una solicitud de E / S diferente, incluso si el sistema operativo puede hacer frente.
También es importante tener en cuenta aquí que la E / S de disco puede ocurrir aunque no esté accediendo explícitamente a ningún archivo en el disco. Las dos causas principales para esto serían el código ejecutable de carga a pedido y el intercambio. Dado que el intercambio a veces se usa incluso cuando el sistema no está bajo presión de memoria, y el código ejecutable de carga bajo demanda es común en los sistemas modernos y con formatos de archivo ejecutables modernos, la actividad de lectura de disco no intencionada durante el uso normal es una posibilidad muy real.
Como se señaló en un comentario a la pregunta de Matteo Italia , una estrategia mitigante es utilizar una interconexión de almacenamiento diferente, que es una forma complicada de decir "poner el disco en un gabinete USB". Al abstraer a través del protocolo de almacenamiento masivo USB , esto aísla la parte problemática SATA del resto de su sistema, lo que significa que, en teoría , solo las E / S en ese disco específico deberían verse afectadas por problemas de E / S en ese disco.
Como un aparte, esta es la razón por la cual SATA (particularmente, SATA sin ERC a nivel de unidad) a menudo se desaconseja para RAID (especialmente niveles RAID con redundancia, que entre los estándares es todo excepto RAID 0 ); los largos períodos de tiempo de espera y el manejo deficiente de los errores pueden hacer que un dispositivo completo sea expulsado de la matriz por un solo sector defectuoso, que el controlador RAID podría manejar muy bien si existe redundancia y el controlador de almacenamiento simplemente sabe que este es el problema. SAS fue diseñado para grandes matrices de almacenamiento y, por lo tanto, con la expectativa de que ocasionalmente habrá problemas en varias unidades, lo que llevó a que se diseñara para manejar el caso de una sola unidad problemática o solicitud de E / S con graciaincluso si el disco no lo hace. Los discos problemáticos no son muy comunes en los sistemas de consumo simplemente porque estos tienden a no tener muchos discos instalados, y los que están instalados prácticamente nunca tienen redundancia; Dado que SATA tenía como objetivo reemplazar PATA / IDE, no SCSI (este último es el nicho al que apuntaba SAS), es probable que sus características y demandas (o garantías) de manejo de errores se consideren adecuadas para su caso de uso previsto.