¿Cómo puedo reducir el tiempo de espera IO y los tiempos de reintento para que el sistema operativo no intente escribir continuamente en una unidad que falla?
Tengo un sistema que utilizo para hacer copias de contenido de demostración que se presta a los clientes en discos duros de escritorio SATA normales. Conectamos muchas unidades a la vez a través de SAS y copiamos contenido a ellas mediante un script.
Debido a que las unidades se prestan, ocasionalmente algunas vuelven dañadas pero no sé si están dañadas, por lo que la próxima vez que la unidad se reutilice en una operación de copia, ralentiza otras unidades a medida que el sistema reintenta IO a esa unidad. A veces pueden pasar horas antes de que note el disco defectuoso y lo elimine. Después de retirar la unidad, el resto de las unidades comienzan a escribir a velocidad normal.
No me importa recuperar los discos duros. Solo necesito eliminarlos para que no ralenticen todo lo demás.
También estoy investigando badblocks y smartmontools y estoy considerando escribir una verificación previa en las unidades antes de comenzar a escribir.
SO: Ubuntu Linux (12.04 lts)
udisks
/smartmonctl
? Un problema clásico de XY aquí, creo.ddrescue
que ni siquiera toque los sectores informados por SMART.)Respuestas:
No he usado este sintonizable antes, pero probablemente desee ajustar el eh_timeout (tiempo de espera de manejo de errores) para la unidad en cuestión:
Lo anterior muestra
sda
establecido en 10 segundos. De la base de conocimiento de Red Hat:fuente
eh_timeout
pero pude cambiartimeout
para lograr la tarea en cuestión.Controle
/sys/block/<dev>/stat
los dispositivos que le interesan y compare el décimo parámetro (io_ticks).p.ej,
ticks = io_ticks - prev_ticks / seconds_deltatime / 10
Este es el porcentaje de tiempo disponible que el disco ha pasado esperando el disco io.
Vale la pena verificar cerca del 100%, por supuesto, o de lo contrario, sea realmente inteligente y compárelo con el promedio de todos sus discos y seleccione en cualquier disco (s) por encima de la media.
Consulte la documentación de estadísticas de la capa de bloques .
De lo contrario, usa algo como Munin y grafica. Puede hacer que Munin le avise si supera un umbral, por ejemplo, 90% o lo que muestre su gráfica es una buena cifra de alerta.
por ejemplo, vea estos dos gráficos de Munin que muestran que / dev / sdi necesita analizarse. En este ejemplo, si / dev / sdi es parte de una matriz, toda la matriz sufriría por ello.
Si observa el gráfico de la semana, verá que / dev / sdc también podría ser lento.
Debo agregar que / dev / sdi arriba no está roto, es solo un disco lento (en realidad un disco verde que alguien agregó a una matriz de discos sata de grado empresarial) que desaceleró la matriz. Un disco con falla real sobresaldría como un pulgar dolorido.
En resumen, probablemente usaría un script si tuviera tiempo, pero Munin si solo quisiera una solución rápida y conectarme al servidor fue fácil.
fuente