Trucos Unix: ¿Como saber si un disco duro va a fallar con suficiente antelación?

El Proyecto SMARTMONTOOLS (http://smartmontools.sourceforge.net/), tiene herramientas de diagnostico proactivo, las cuales le van a decir si usted tiene una catastrofe inminente en sus manos, con respecto al almacenamiento. Por ejemplo, yo normalmente dejo que smartd (el demonio de monitoreo) se encargue el sólo de decidir como es la mejor manera de monitorear mis discos, por lo que yo sólo le digo que discos monitorear y a donde me debe enviar las alertas:

/etc/smartd.conf:
/dev/sda -H -m angelnegro@domain.com
/dev/sdb -H -m angelnegro@domain.com
/dev/sdc -H -m angelnegro@domain.com
/dev/sdd -H -m angelnegro@domain.com
/dev/sde -H -m angelnegro@domain.com
/dev/sdf -H -m angelnegro@domain.com

Ojo, usted puede tener discos SCSI (/dev/sd?), IDE (/dev/hd?), etc.
Lo más seguro es que cuando usted reciba una alerta usted quiere hacer diagnosticos más profundos en sus discos (si aún funcionan) para salir de dudas si estos están a punto de morir o si fué una falsa alarma; Allí es donde usted puede utilizar a una herramienta llamada ‘smartctl’ la cual puede ser incluida dentro de scripts más poderosos:

#!/bin/bash
declare -ar DISKS=(/dev/sda /dev/sdb /dev/sdc /dev/sdd
/dev/sde /dev/sdf /dev/sdg)
declare -r SMARTCTL="/usr/sbin/smartctl"
declare -ri ERROR_CODE=192
if [ ! -x $SMARTCTL ]; then
printf "Unable to execute %s\n" $SMARTCTL
exit $ERROR_CODE
fi
for disk in ${DISKS[@]}; do
printf "Testing: %s\n" $disk
$SMARTCTL -a -t long $disk
done

Y después puede buscar los resultados extendidos con un programita similar:

#!/bin/bash
declare -ar DISKS=(/dev/sda /dev/sdb /dev/sdc /dev/sdd
/dev/sde /dev/sdf /dev/sdg)
declare -r SMARTCTL="/usr/sbin/smartctl"
declare -ri ERROR_CODE=192
if [ ! -x $SMARTCTL ]; then
printf "Unable to execute %s\n" $SMARTCTL
exit $ERROR_CODE
fi
for disk in ${DISKS[@]}; do
printf "Testing: %s\n" $disk
$SMARTCTL -a -l error -H $disk
done

¡Esta es una de las herramientas que no deberían faltar en su arsenal!