fsck: opciones para la comprobación más completa del disco


12

Tengo un disco con un problema conocido (lo sé porque dd gags cuando intento clonarlo). Pero cuando inicio con un CD en vivo y ejecuto fsck en la partición desmontada, obtengo esto:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf1
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
/dev/sdf1: clean, 227091/9625600 files, 12789815/38497756 blocks

un milisegundo después Es difícil de creer que haya verificado todo el disco duro en un ms.

Tampoco estoy seguro de si debería estar fsck'ing sdf1 o todo el disco físico sdf. Cuando pruebo todo el disco:

ubuntu@ubuntu:~$ sudo fsck /dev/sdf
fsck 1.41.4 (27-Jan-2009)
e2fsck 1.41.4 (27-Jan-2009)
fsck.ext2: Device or resource busy while trying to open /dev/sdf
Filesystem mounted or opened exclusively by another program?

Lo cual no entiendo porque ninguna de las particiones parece estar montada (acabo de arrancar desde un CD en vivo y ejecuté el comando).

Entonces, mi pregunta básica es: ¿cómo puedo hacer que fsck (o una herramienta diferente que funcione mejor) gaste más de un milisegundo analizando mi disco problemático?

Respuestas:


14

En primer lugar, tiene razón acerca de ejecutar fsck en la partición: fsck solo funciona en sistemas de archivos, no en discos completos. Puede obtener una lista de todas las particiones en el disco con fdisk -l /dev/sdd.

Su tipo de sistema de archivos es probablemente ext3 (el predeterminado en la mayoría de las distribuciones de Linux), lo que significa que generalmente pasará un fsck siempre que su diario esté limpio. fsck -fcomo se mencionó anteriormente, forzará una verificación completa.

Sin embargo, si tiene errores de lectura en el disco, ninguna cantidad de fsck ayudará a dd, ya que a dd realmente no le importa el contenido del disco.

Para que dd lea el disco y continúe con los errores de lectura, use dd conv=noerror,sync, que continuará con los errores de lectura y agregará bytes nulos a cualquier bloque cuando haya un error de lectura.

Una vez que haya terminado la copia de seguridad, debe ejecutar fsck -fel clon para que vuelva a funcionar.

Otro consejo: si hace una copia de seguridad de la partición en un archivo, puede montarla en bucle invertido mount -o loop filename.ext3 /mountpoint. Además, supongamos que está clonando una partición de 200G en una unidad de 500G, luego puede ejecutar resize2fs /dev/sdx1(donde sdx es su nueva unidad, particionada con una sola partición de 500G), y el sistema de archivos se redimensionará a 500G.

Por último, si el disco está en una forma tal que le da errores de lectura, le aconsejaría que evite apagar y encender el disco hasta que termine de recuperar los datos. En algunos modos de falla, el disco en algún momento simplemente ya no girará o dejará de ser reconocido por el sistema operativo, y en ese punto sacar los datos de la unidad se vuelve bastante costoso.


Intenté "dd conv = noerror, sync", pero el disco clonado resultante no se pudo arrancar. Lo cual es frustrante, porque el disco de arranque funciona bien, fscks bien, pero no puedo clonarlo en otro disco porque el disco tiene 1 bloque defectuoso (donde aparentemente no hay datos). Parece que estoy atascado ...
Fred Hamilton

No olvide que puede haber otras razones por las cuales el disco no se pudo iniciar (problemas de geometría de disco diferente y MBR / cargador de arranque). Si primero puede confirmar que el sistema de archivos en el nuevo disco está bien, puede iniciar el sistema utilizando el modo de rescate desde el CD de instalación, actualizando el gestor de arranque GRUB, etc. Es decir. primero ejecute fsck -f / dev / sdx1, luego intente montar el sistema de archivos con mount / dev / sdx1 / mnt - reemplace la x con la letra de unidad apropiada.
Kristian

Excelente sugerencia, pero cuando ejecuté fsck -f en la partición clonada, obtuve literalmente cientos de errores (bloques ilegales en inodos, bits de compresión establecidos en un sistema de archivos sin soporte de compresión, bloques de atributos extendidos defectuosos, etc.) antes de admitir que el dd el clon estaba totalmente regado ... No estoy seguro de qué hacer a continuación ... Supongo que intentaré copiar todos los archivos a una partición limpia ... Gracias de todos modos.
Fred Hamilton

44
Es mejor usar ddrescue (o dd_rescue + dd_rhelp) que dd; es más inteligente sobre el manejo de errores, reintentando sectores que obtuvieron errores. gnu.org/software/ddrescue/ddrescue.html kalysto.org/utilities/dd_rhelp/index.en.html garloff.de/kurt/linux/ddrescue
freiheit

1
La comprobación más completa del disco (con todas las correcciones automatizadas si es posible) para la partición ext2, ext3 o ext4 raíz se ejecuta de la siguiente manera: (1) arranque desde medios de rescate (la partición raíz debe estar desmontada), (2) ejecutar e2fsck -f -cc -D -p. Eso hace una verificación forzada con una verificación de lectura y escritura no destructiva para los medios y repara todos los problemas encontrados que se pueden solucionar de forma segura. Puede tomar algunos días para un disco duro de 2 TB ...
Mikko Rantalainen

10

Esto puede no ser relevante en su caso, pero pensé en mencionarlo de todos modos:

Para una comprobación de disco de nivel inferior, puede usar la badblocksutilidad. Atraviesa un dispositivo e informa de cualquier bloqueo defectuoso (por supuesto, no puede reparar nada). Es útil, al menos, para verificar si un disco está dañado físicamente.

Además, e2fsckpuede usarse badblockspara evitar que un sistema de archivos use bloques defectuosos. Del e2fsckmanual:

  -c     This option causes e2fsck to use badblocks(8) program to do a  read-
         only scan of the device in order to find any bad blocks.  If any bad
         blocks are found, they are added to the bad block inode  to  prevent
         them from being allocated to a file or directory.  If this option is
         specified twice, then the bad block scan will be done using  a  non-
         destructive read-write test.

También tenga en cuenta fsck_hfs -sque buscará bloques defectuosos.
awiebe

5

Desea que la opción -f sea fsck (forzar la comprobación incluso si el sistema de archivos parece estar limpio).

Debe ejecutar fsck en modo de usuario único. Una manera fácil de hacer esto sin un arranque de cdrom en vivo es reiniciar con la opción -F.

shutdown -rF now 

Gracias, pero una pregunta: si reinicio con la opción -F usando un CD en vivo, ¿cómo sabe el CD en vivo que se supone que debe ejecutar la verificación? Es un CD, no tiene memoria que yo sepa ...
Fred Hamilton

No creo que necesites hacer eso desde el CD en vivo. Simplemente inicie desde el Live CD y ejecute fsck en la partición desmontada con la opción -f (force) incluida. O, puede reiniciar desde su disco duro con shutdown -rF. Esto forzará un fsck antes de que se monte el sistema de archivos.
Richard Hoskins

En realidad, hará el fsck en modo de usuario único. He editado mi respuesta.
Richard Hoskins

1
Por lo general, el -Findicador shutdownno está documentado oficialmente (vea man shutdowny shutdown --helpobserve que no está allí), por lo que no puede confiar en que funcione. A veces es un no-op. Oficialmente, el único método para escanear la partición raíz es arrancar desde medios alternativos.
Mikko Rantalainen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.