Cuando los sistemas funcionan a diario es normal que con el tiempo los discos empiezan a dar errores, para ello tenemos a un buen aliado que se llama S.M.A.R.T. que nos avisa cuando la salud de un disco duro no es buena y cuando empiezan a salir errores, la recomendación es parar el disco y reemplazarlo.
Esta vez el disco que tengo tiene las configuraciones enteras de un sistema operativo y reinstalar y reconstruir el sistema operativo desde 0 sería mucho trabajo, así que la opción por la que he optado es clonar el disco duro a otro disco duro que no tiene errores (comprobado con badblocks!).
Al hacer el dd se me ha cortado a medio proceso porque se ha encontrado con la parte del disco defectuosa, así que he tenido que añadir un par de opciones para omitir los errores y seguir con el clonado:
# dd if=/dev/sda |pv |dd of=/dev/sdb conv=noerror,sync
El disco duro que estoy tratando de recuperar, realmente tiene varios sectores defectuosos que con dd no hay forma de clonar, así que he tenido que usar otra herramienta gddrescue
# apt-get install gddrescue # ddrescue -d -r3 /dev/sda /dev/sdb clonacion.log
Con el -d le decimos a ddrescue que haga un acceso directo al disco e ignore el cache del kernel (clonación bit a bit)
Con el -r3 le indicamos que pruebe hasta 3 veces la lectura de los sectores defectuosos
Después de un buen rato finalmente el disco ha sido clonado con éxito y el sistema arranca :) recomiendo activar el retry porque con un poco de suerte va a poder recuperar los sectores defectuosos, en el disco que estaba clonando había 19 sectores defectuosos y finalmente ha podido salvar algunos. En este caso eran pocos sectores, pero en el caso que haya un fallo mayor, cuantos menos sectores se puedan recuperar, mas pérdida de datos habrá.