it-swarm-pt.tech

fsck: Opções para verificação de disco mais completa

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

[email protected]:~$ 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 verificou todo o disco rígido em um ms.

Também não tenho certeza se devo fsck'ing sdf1 ou todo o sdf do disco físico. Quando tento toda a unidade:

[email protected]:~$ 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 eu não entendo porque nenhuma das partições parece estar montada (acabei de inicializar de um live CD e executei o comando).

Portanto, minha pergunta básica é: como posso fazer com que o fsck (ou uma ferramenta diferente que possa funcionar melhor) gaste mais de um milissegundo analisando meu disco com problema?

12
Fred Hamilton

Em primeiro lugar, você está certo sobre executar o fsck na partição - o fsck só funciona 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 ext3 (o padrão na maioria das distros Linux), o que significa que ele normalmente passará um fsck desde que seu diário esteja limpo. fsck -f irá, conforme mencionado acima, forçar uma verificação completa.

No entanto, se você leu 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 erros de leitura, use dd conv=noerror,sync, que continuará em erros de leitura e acrescentará bytes nulos a qualquer bloco quando houver um erro de leitura.

Depois de terminar o backup, você deve executar fsck -f no clone para colocá-lo em funcionamento novamente.

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

Por último, se o disco estiver em uma forma que esteja apresentando erros de leitura, recomendo que você evite desligar e ligar o disco até terminar de recuperar os dados. Em alguns modos de falha, em algum ponto o disco simplesmente não funcionará mais ou deixará de ser reconhecido pelo sistema operacional e, nesse ponto, retirar os dados da unidade se torna muito caro.

14
Kristian

Isso pode não ser relevante no seu caso, mas pensei em mencioná-lo mesmo assim:

Para uma verificação de disco de nível inferior, você pode usar o utilitário badblocks. Ele passa por um dispositivo e relata quaisquer blocos defeituosos (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 danificados 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.
10
Jonik

Você deseja que a opção -f fsck (força a verificação 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 a inicialização do live cdrom é reiniciar com a opção -F.

shutdown -rF now 
5
Richard Hoskins