Como forçar a partição ext3 para o estado “error”?

6

Eu tenho um script no qual o fsck é chamado caso o sistema de arquivos esteja no estado "error". Eu gostaria de testar isso. Infelizmente eu não sei como forçar o estado de "erro" na partição ext3.

A única idéia que tenho é executar o fsck na partição montada primeiro. Assim que houver aviso de que o sistema de arquivos pode ser danificado, espero que possa ajudar. Precisa tentar. Enquanto isso, alguém pode saber responder já?

    
por user822834 30.06.2011 / 12:33

2 respostas

9

Bem, aqui está: debugfs -w -R "estado ssv 2" / dev / sda1

O debugfs faz parte do pacote e2fsprogs destinado ao acesso de baixo nível aos sistemas de arquivos ext2 / 3.

-w - work in r/w;
-R - run one command and exit;
ssv - set superblock value, self-describing;
state - just a name of the field containing state of filesystem.

Os códigos são:

0 - not clean
1 - clean
2 - not clean with errors
    
por 01.07.2011 / 10:33
3

Eu brinquei com isso brevemente em uma VM. Meu pensamento inicial foi o de neutralizar o superbloco principal da partição. Isso não faz com que dumpe2fs relate um "estado do sistema de arquivos" de "erro", mas (obviamente) quebra sua partição ("Número mágico ruim no super-bloco") ... então talvez seja tudo que você precisa para o seu teste. Executar fsck em uma partição nesse estado e inspecionar o valor de $? reportará um status de 8 (erro operacional).

De qualquer forma, isso é perigoso e eu não aconselharia fazê-lo em qualquer sistema em que você tenha dados importantes para você. Experimente em uma VM como eu fiz.

Você pode obter algumas informações sobre o sistema de arquivos da seguinte forma:

dumpe2fs /dev/sda1 | egrep "state|superblock|Block size"

Você verá que o sistema de arquivos tem um superbloco principal e um certo número de superblocos de backup. Se você está preparado para quebrar as coisas, anote algumas coisas nessa saída:

  • "Tamanho do bloco: X": anote X
  • "Superbloco principal em Y": anote Y
  • "Superbloco de backup em Z": anote pelo menos um Z

Agora destrua seu superbloco principal:

dd if=/dev/zero of=/dev/sda1 bs=X count=1 seek=Y

Parabéns! Seu sistema de arquivos está quebrado agora.

Desmonte-o se estiver montado:

umount /dev/sda1

Em seguida, execute fsck especificando a localização de um dos superblocos de backup mencionados anteriormente:

fsck -b Z /dev/sda1

Agora monte / dev / sda1 em algum lugar e você deve estar de volta aos negócios.

    
por 30.06.2011 / 16:13

Tags