fsck: Opções para a verificação mais detalhada do disco

10

Eu tenho um disco com um problema conhecido (eu sei porque dd gags quando eu tento cloná-lo). Mas quando eu inicializo com um live CD e executo fsck na partição desmontada, eu entendo isso:

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

um milissegundo depois. É difícil acreditar que foi verificado todo o disco rígido em um ms.

Eu também não tenho certeza se devo estar fsck'ing sdf1 ou todo o disco físico sdf. Quando eu tento o disco inteiro:

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?

O que não entendo porque nenhuma das partições parece estar montada (acabei de inicializar a partir de um live CD e executei o comando).

Portanto, minha pergunta básica é: Como posso obter o fsck (ou uma ferramenta diferente que funcione melhor) para gastar mais do que um milissegundo analisando o disco do meu problema?

    
por Fred Hamilton 08.08.2009 / 18:28

3 respostas

13
Primeiro, você está certo sobre rodar o fsck na partição - o fsck funciona apenas em sistemas de arquivos, não em discos inteiros. Você pode obter uma lista de todas as partições no disco com fdisk -l /dev/sdd .

O seu tipo de sistema de arquivos é provavelmente o ext3 (o padrão na maioria das distribuições do Linux), o que significa que ele geralmente passará um fsck por muito tempo que seu diário esteja limpo. fsck -f irá, como mencionado acima, forçar um cheque completo.

No entanto, se você tiver lido erros no disco, nenhuma quantidade de fsck ajudará o dd - já que o dd realmente não se importa com o conteúdo do disco.

Para fazer com que o dd leia o disco e continue com os erros de leitura, use dd conv=noerror,sync , que continuará com os erros de leitura e acrescentará bytes nulos a qualquer bloco quando houver um erro de leitura.

Depois de concluir o backup, você deve executar fsck -f no clone para reativá-lo.

Outra dica: se você fizer o backup da partição em um arquivo, poderá fazer um loopback montando-a com mount -o loop filename.ext3 /mountpoint . Além disso, digamos que você esteja clonando uma partição 200G para uma unidade 500G, pode executar resize2fs /dev/sdx1 (onde sdx é sua nova unidade, particionada com uma única partição 500G) e o sistema de arquivos será redimensionado para 500G.

Por último, se o disco estiver em uma forma que esteja causando erros de leitura, aconselho-o a evitar que o disco seja desligado e ligado até que você termine de recuperar os dados. Em alguns modos de falha, o disco simplesmente não vai mais girar ou não será reconhecido pelo sistema operacional e, a partir daí, a obtenção de dados fora da unidade torna-se bastante cara.

    
por 08.08.2009 / 21:06
7

Isso pode não ser relevante no seu caso, mas pensei em mencioná-lo de qualquer maneira:

Para uma verificação de disco de nível inferior, você pode usar o utilitário badblocks . Ele passa por um dispositivo e reporta qualquer bloco defeituoso (não pode reparar nada, é claro). É útil, pelo menos, para verificar se um disco está fisicamente danificado.

Além disso, e2fsck pode usar badblocks para evitar que blocos ruins sejam usados por um sistema de arquivos. De e2fsck manual:

  -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.
    
por 08.08.2009 / 20:22
5

Você quer a opção -f para fsck (Forçar a checagem mesmo se o sistema de arquivos parecer limpo).

Você deve executar o fsck no modo de usuário único. Uma maneira fácil de fazer isso sem uma inicialização do cdrom ao vivo é reinicializar com a opção -F.

shutdown -rF now 
    
por 08.08.2009 / 18:38

Tags