Eu tenho uma unidade de 3 TB com defeito. Há muitos blocos defeituosos, mas ainda tem cerca de 2,6 Tb de espaço utilizável e eu gostaria de utilizá-lo para armazenamento de lixo (músicas, vídeos, etc.). A princípio me deparei com o manual de um cara. Ele cortou o disco em várias partições e depois criou JBOD (apenas um monte de discos) RAID (se você estiver interessado, há um link (russo): https://habr.com/ru/post/252211). Mas alguém nos comentários desse artigo mencionou que o mesmo pode ser feito pelo próprio mkfs com a tecla '-c'. E agora me pergunto, como isso funciona? Sim, existe uma página de manual que nos diz:
-c Verifique se há blocos defeituosos no dispositivo antes de criar o sistema de arquivos. Se esta opção for especificada duas vezes, um teste de leitura e gravação mais lento será usado em vez de um teste somente leitura rápido.
Existe um artigo do arch wiki que diz quase a mesma coisa. Ele verifica se há blocos defeituosos no dispositivo e depois? Pessoas aqui e ali na Internet dizem que isso marca blocos defeituosos e o sistema operacional não os utiliza. Como posso verificar isso? Existe algum utilitário que mostre blocos marcados para uso posterior (criação futura de partições, talvez)?
Responder1
É verdade man mkfs.ext4
( man 8 mke2fs
) diz o que você citou:
-c
Verifique se há blocos defeituosos no dispositivo antes de criar o sistema de arquivos. Se esta opção for especificada duas vezes, um teste de leitura e gravação mais lento será usado em vez de um teste somente leitura rápido.
Mas também há -l
:
-l filename
Leia a lista de blocos defeituosos do nome do arquivo. Observe que os números de bloco na lista de blocos inválidos devem ser gerados usando o mesmo tamanho de bloco usado pormke2fs
. Como resultado, a-c
opçãomke2fs
é um método muito mais simples e menos sujeito a erros de verificar se há blocos defeituosos em um disco antes de formatá-lo, poismke2fs
passará automaticamente os parâmetros corretos para obadblocks
programa.
Então vamos investigar man 8 badblocks
:
Nota importante: Se a saída de
badblocks
for alimentada nos programase2fsck
oumke2fs
, é importante que o tamanho do bloco seja especificado corretamente, pois os números dos blocos gerados dependem muito do tamanho do bloco em uso pelo sistema de arquivos. Por este motivo, é altamente recomendável que os usuários não executembadblocks
diretamente, mas sim utilizem a-c
opção dos programase2fsck
emke2fs
.
Ele menciona e2fsck
(também fsck.ext4
conhecido como ext4), então vamos verificar man 8 e2fsck
[ênfase minha]:
-c
Esta opção faz come2fsck
quebadblocks(8)
o programa faça uma varredura somente leitura do dispositivo para encontrar quaisquer blocos defeituosos.Se algum bloco defeituoso for encontrado, ele será adicionado ao inode do bloco defeituoso para evitar que seja alocado em um arquivo ou diretório.Se esta opção for especificada duas vezes, a verificação do bloco defeituoso será feita usando um teste de leitura e gravação não destrutivo.
E como mke2fs
e e2fsck
fazem parte do mesmo kit de ferramentas, euesperar -c
funcionar mke2fs
da mesma maneira, apesar de sua descrição não indicar isso explicitamente.
Então, para verificar blocos defeituosos, o sistema de arquivos conhece o uso dumpe2fs
. De man 8 dumpe2fs
:
-b
imprima os blocos que estão reservados como ruins no sistema de arquivos.
(créditos paraesta resposta).
Observe que é o sistema de arquivos que armazena as informações. Para usá-lo em sistemas de arquivos futuros, você precisa salvá-lo antes de destruir o atual. E se você alterar a tabela de partição ou escolher um tamanho de bloco diferente para um novo sistema de arquivos, precisará recalcular os números.