Los discos duros pueden fallar inesperadamente y siempre es mejor mantener copias de seguridad recientes de todos los datos importantes. Tenga en cuenta que incluso si se detecta una falla actual o inminente, es posible que no haya tiempo suficiente para hacer una copia de seguridad de los datos. A continuación se presentan varios métodos que se pueden usar para identificar bloques defectuosos o errores de disco en CentOS/RHEL.
Uso de smartctl
Si hay varios errores de E/S en /var/log/messages o simplemente se sospecha que los discos duros pueden estar fallando, smartctl puede ser una herramienta útil para verificarlos. S.M.A.R.T. significa Autocontrol , Análisis y tecnología de informes . Tienes que habilitar el S.M.A.R.T. soporte en el BIOS antes de usarlo.
A continuación, instale los paquetes necesarios para ejecutar /usr/sbin/smartctl. En Red Hat Enterprise Linux, lo proporciona smartmontools paquete.
1. Verifique si su disco duro es compatible con S.M.A.R.T. :
# smartctl -i /dev/xxx
Reemplace /dev/xxx con el disco duro de interés cuando use los comandos descritos en esta publicación.
2. Para unidades SATA use:
# smartctl -i -d ata /dev/xxx
3. Habilite S.M.A.R.T. apoyar con:
# smartctl -s on /dev/xxx ### For SCSI Disks # smartctl -s on -d ata /dev/xxx ### for SATA Disks
4. Ejecutar el siguiente comando como root puede ser una prueba rápida de PASA/FALLA, pero las pruebas más exhaustivas que se analizan a continuación son generalmente más concluyentes:
# smartctl -H /dev/xxx
Ejecutando smartctl en segundo plano
Para iniciar una prueba en segundo plano, ejecute lo siguiente como root:
# smartctl -t long /dev/xxx
Para acceder a los resultados, utilice el siguiente comando:
# smartctl -a /dev/xxx
Para obtener más información sobre las diversas opciones que se pueden usar con smartctl, consulte la página de manual del comando:
# man smartctl
Uso de bloques defectuosos
También puede usar el comando "badblocks" para verificar si hay bloques defectuosos en un dispositivo de disco. El comando "badblocks" puede ser muy útil para aislar problemas con la sincronización de particiones LVM dentro de Linux. Las operaciones de LVM fallarán debido a bloques defectuosos en un disco. Los bloques defectuosos en el disco de origen o de destino dentro de un espejo LVM provocarán una falla de sincronización.
Badblocks también se puede usar junto con fsck y makefs para marcar los bloques como defectuosos. Si la salida de badblocks se va a enviar a los programas e2fsck o mke2fs, es importante que el tamaño de bloque se especifique correctamente, ya que los números de bloque que se generan dependen mucho del tamaño de bloque que utiliza el sistema de archivos. Por esta razón, se recomienda encarecidamente que los usuarios no ejecuten badblocks directamente, sino que utilicen la opción -c de los programas e2fsck y mke2fs.
Advertencia :El mal uso de estos comandos puede provocar la pérdida de datos. Información adicional sobre el comando “badblocks” está disponible usando el comando “man badblocks”.1. Use la herramienta de verificación de disco badblocks para escanear el disco duro especificado bloque por bloque. Por ejemplo, para escanear /dev/sdd emita los comandos:
# mount | grep sdd # find all mounted partitions of sdd # umount /dev/sdd1 # unmount the partitions (may be more then one) # badblocks -n -vv /dev/sdd
Donde -n es usar el modo de lectura y escritura no destructivo. De forma predeterminada, solo se realiza una prueba no destructiva de solo lectura.
Nota :Nunca use el -w opción en un dispositivo que contiene un sistema de archivos existente. ¡Esta opción borra los datos! Si es necesario realizar una prueba de modo de escritura en un sistema de archivos existente, use -n opción en su lugar. Es más lento, pero conservará los datos.2. Si aparecen mensajes similares a los ejemplos que se encuentran a continuación en /var/log/messages o en la consola después de la ejecución de badblocks, se recomienda hacer una copia de seguridad de los datos en los dispositivos afectados y reemplazar el dispositivo:
Apr 4 13:50:40 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error } Apr 4 13:50:40 test kernel: sdd: dma_intr: error=0x40 { UncorrectableError }, LBAsect=74367249, sector=74367232 Apr 4 13:50:40 test kernel: ide: failed opcode was: unknown Apr 4 13:50:40 test kernel: end_request: I/O error, dev sdd, sector 74367232 Apr 4 13:50:42 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error } Apr 4 13:50:42 test kernel: sdd: dma_intr: error=0x40 { UncorrectableError }, LBAsect=74367249, sector=74367240 Apr 4 13:50:42 test kernel: ide: failed opcode was: unknown Apr 4 13:50:42 test kernel: end_request: I/O error, dev sdd, sector 74367240 Apr 4 13:50:44 test kernel: sdd: dma_intr: status=0x51 { DriveReady SeekComplete Error }
3. El siguiente comando descargará los bloques defectuosos encontrados en el archivo de salida:badblocks.log.
# badblocks -v -o badblocks.log /dev/sdd