Una vez cada pocos días, aparentemente de forma aleatoria, nuestra copia de seguridad en un disco duro USB externo falla en nuestro servidor hp DL380 G5 que ejecuta CentOS 6.4 de 64 bits. Si lo cd /mnt/backup
ejecuto ls
se queja ls: reading directory .: Input/output error
, pero mount -l
informa /dev/sda1 on /mnt/backup type ext4 (rw)
. Cuando llamo a alguien al sitio para que lo revise, invariablemente informan que la luz del disco externo parpadea lentamente, lo que aparentemente es normal en un estado de suspensión. Pero no le pido que entre en estado de suspensión hasta que se ejecute rsnapshot, pero rsnapshot hace que mi script falle antes de que eso tenga la posibilidad de suceder. ¿Está intentando ahorrar energía? ¿Cómo puedo hacer para que no haga esto?
rsnapshot se queja:
/usr/bin/rsnapshot daily: ERROR: /mnt/backup/.snapshots does not exist.
Por supuesto, si la persona en el sitio desconecta y vuelve a conectar la unidad, puedo volver a montarla, y .snapshots
ciertamente existe y rsnapshot se ejecutará sin errores. Por un tiempo hasta el próximo suceso aleatorio, claro está. Por cierto, esta es una unidad WD Passport bastante nueva.
Entonces, ¿cómo le digo que permanezca despierto?
Respuesta1
Si este apagado de hardware fuera una función normal del kernel de Linux, lo manejaría correctamente. No, creo que es una maravillosa sorpresa por parte del hardware de HP.
Sugiero una solución trivial. Poner en crontab:
* * * * * dd if=/dev/sda of=/dev/null bs=512 count=1
Este se leerá en la tabla de particiones del pendrive cada minuto. No reducirá la vida útil del pendrive, ya que solo realiza operaciones de lectura desde él, pero impedirá que se active su modo de suspensión.
En mis sistemas nunca manejé tal problema. Si se montaba un pendrive, se montaba, y si lo olvidaba e intentaba usar su partición después de 2 semanas, se podía encender, sin un solo aviso del kernel.
Respuesta2
Quizás lo mejor para evitar la suspensión del disco duro y el almacenamiento en caché del firmware es la lectura de un sector aleatorio de su disco:
* * * * * bash -c 'dd if=/dev/sda of=/dev/null count=1 skip=$RANDOM'
Funcionó bien para mí.