I dischi rigidi possono guastarsi inaspettatamente ed è sempre meglio conservare backup recenti di tutti i dati importanti. Tieni presente che anche se viene rilevato un errore attuale o in arrivo, potrebbe non esserci abbastanza tempo per eseguire il backup dei dati. Di seguito sono riportati diversi metodi che possono essere utilizzati per identificare i blocchi danneggiati o gli errori del disco in CentOS/RHEL.
Utilizzo di smartctl
Se ci sono diversi errori di I/O in /var/log/messages o se si sospetta semplicemente che i dischi rigidi potrebbero non funzionare, smartctl può essere uno strumento utile per controllarli. S.M.A.R.T. sta per Autocontrollo , Analisi e Tecnologia di reporting . Devi abilitare S.M.A.R.T. supporto nel BIOS prima di utilizzarlo.
Quindi, installa i pacchetti necessari per eseguire /usr/sbin/smartctl. In Red Hat Enterprise Linux, è fornito da smartmontools pacchetto.
1. Verifica se il tuo disco rigido supporta S.M.A.R.T. :
# smartctl -i /dev/xxx
Sostituisci /dev/xxx con il disco rigido di interesse quando usi i comandi descritti in questo post.
2. Per le unità SATA utilizzare:
# smartctl -i -d ata /dev/xxx
3. Abilita S.M.A.R.T. supporto con:
# smartctl -s on /dev/xxx ### For SCSI Disks # smartctl -s on -d ata /dev/xxx ### for SATA Disks
4. L'esecuzione del seguente comando come root può essere un rapido test PASS/FAIL, ma i test più approfonditi discussi di seguito sono generalmente più conclusivi:
# smartctl -H /dev/xxx
Esecuzione di smartctl in background
Per avviare un test in background, esegui quanto segue come root:
# smartctl -t long /dev/xxx
Per accedere ai risultati, utilizzare il seguente comando:
# smartctl -a /dev/xxx
Per saperne di più sulle varie opzioni utilizzabili con smartctl consultare la pagina man del comando:
# man smartctl
Utilizzo di badblock
Puoi anche utilizzare il comando "badblocks" per verificare la presenza di blocchi danneggiati su un dispositivo disco. Il comando "badblocks" può essere molto utile per isolare i problemi con la sincronizzazione delle partizioni LVM all'interno di Linux. Le operazioni LVM falliranno a causa di blocchi danneggiati su un disco. I blocchi danneggiati sul disco di origine o di destinazione all'interno di un mirror LVM causeranno un errore di sincronizzazione.
I Badblock possono anche essere usati insieme a fsck e makefs per contrassegnare i blocchi come danneggiati. Se l'output di badblocks verrà inviato ai programmi e2fsck o mke2fs, è importante che la dimensione del blocco sia specificata correttamente, poiché i numeri di blocco che vengono generati dipendono molto dalla dimensione del blocco utilizzata dal filesystem. Per questo motivo, è fortemente raccomandato che gli utenti non eseguano direttamente i badblock, ma piuttosto utilizzino l'opzione -c dei programmi e2fsck e mke2fs.
Avviso :L'uso improprio di questi comandi può causare la perdita di dati. Ulteriori informazioni sul comando "badblocks" sono disponibili utilizzando il comando "man badblocks".1. Utilizzare lo strumento di controllo del disco badblocks per eseguire la scansione del disco rigido specificato blocco per blocco. Ad esempio, per scansionare /dev/sdd emettere i comandi:
# 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
Dove -n è utilizzare la modalità di lettura-scrittura non distruttiva. Per impostazione predefinita, viene eseguito solo un test di sola lettura non distruttivo.
Nota :non utilizzare mai il -w opzione su un dispositivo contenente un file system esistente. Questa opzione cancella i dati! Se è necessario eseguire il test della modalità di scrittura su un file system esistente, utilizzare -n opzione invece. È più lento, ma conserverà i dati.2. Se i messaggi simili agli esempi riportati di seguito compaiono in /var/log/messages o nella console a seguito dell'esecuzione di badblock si consiglia di eseguire il backup dei dati sui dispositivi interessati e di sostituire il 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. Il comando seguente scaricherà i blocchi danneggiati trovati nel file di output:badblocks.log.
# badblocks -v -o badblocks.log /dev/sdd