Na dica de hoje vamos ensinar como verificar blocos defeituosos de disco em seu sistema operacional. Estes teste foram realizados na distribuição Linux CentOS / RHEL, verifique compatibilidade com sua distribuição.
Os discos rígidos podem falhar inesperadamente e é melhor manter backups recentes de todos os dados importantes. Lembre-se de que, mesmo que uma falha atual ou iminente seja detectada, pode não haver tempo suficiente para fazer backup dos dados. Abaixo estão vários métodos que podem ser usados para identificar blocos defeituosos ou erros de disco no Linux.
Passo 1 – Usando SmartCTL
Se houver vários erros de E/S em /var/log/messages ou simplesmente suspeitarmos que os discos rígidos podem estar falhando, o smartctl pode ser uma ferramenta útil para verificá-los. S.M.A.R.T. significa Tecnologia de Automonitoramento, Análise e Relatórios. Você precisa ativar o suporte a S.M.A.R.T. no BIOS antes de usá-lo.
Em seguida, instale os pacotes necessários para executar /usr/sbin/smartctl. No Red Hat Enterprise Linux, ele é fornecido pelo pacote smartmontools.
Verifique se seu disco rígido suporta S.M.A.R.T. com o seguinte comando:
$ smartctl -i /dev/xxx
Lembre-se de substituir o xxx pelo seu dispositivo sda sdb entre outros.
Se caso seu hd for sata execute com esses parâmetros:
$ smartctl -i -d ata /dev/xxx
Se caso o suporte ao smarctl não estiver habilitado habilite com executando o seguinte comando:
$ smartctl -s on /dev/xxx ### Para discos SCSI
$ smartctl -s on -d ata /dev/xxx ### Para discos SATA
Para executar um teste rápido PASS/FAIL execute o seguinte comando:
$ smartctl -H /dev/xxx
Para um teste mais detalhado e em segundo plano execute:
$ smartctl -t long /dev/xxx
Para visualizar os resultados execute:
$ smartctl -a /dev/xxx
Passo 2 Usando badblocks
Você também pode usar o comando “badblocks” para verificar se há blocos defeituosos em um dispositivo de disco. O comando “badblocks” pode ser muito útil para isolar problemas com a sincronização de partições LVM no Linux. As operações LVM falharão devido a blocos defeituosos em um disco. Blocos defeituosos no disco de origem ou de destino em um espelho LVM causarão uma falha de sincronização.
Badblocks também podem ser usados em conjunto com o fsck e makefs para marcar os blocos como ruins. Se a saída de badblocks vai ser alimentada para os programas e2fsck ou mke2fs, é importante que o tamanho do bloco seja especificado corretamente, uma vez que os números de bloco que são gerados são muito dependentes do tamanho do bloco em uso pelo sistema de arquivos. Por esse motivo, é altamente recomendável que os usuários não executem badblocks diretamente, mas usem a opção -c dos programas e2fsck e mke2fs.
Aviso: O uso indevido desses comandos pode causar perda de dados. Informações adicionais sobre o comando “badblocks” estão disponíveis usando o comando “man badblocks”.
Use a ferramenta de verificação de disco badblocks para verificar o bloco de disco rígido especificado por bloco. Por exemplo, para verificar /dev/sdd execute os comandos:
$ mount | grep sdd # procura por todas as partições montadas sdd $ umount /dev/sdd1 # desmonta a partição desejada $ badblocks -n -vv /dev/sdd # verificação do badblocks
Onde -n é usar o modo de leitura-gravação não destrutivo. Por padrão, apenas um teste somente leitura não destrutivo é feito.
Nunca use a opção -w em um dispositivo que contenha um sistema de arquivos existente. Esta opção apaga dados! Se o teste de modo de gravação precisar ser executado em um sistema de arquivos existente, use a opção –n. É mais lento, mas preservará os dados.
Se as mensagens semelhantes aos exemplos encontrados abaixo aparecerem em /var/log/messages ou no console após a execução de badblocks, recomenda-se fazer backup de todos os dados nos dispositivos afetados e substituir o 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 }
Execute o comando abaixo para inserir os blocos defeituosos encontrados para o arquivo badblocks.log:
$ badblocks -v -o badblocks.log /dev/sdd
Pronto, agora que você sabe que seu hd possui blocos defeituosos, você poderá tomar medidas para solucionar o problema.