Riscos envolvidos com lazy_itable_init = 1 para ext4 fs no cartão SD

4

Minha configuração é a seguinte:

  • Linux kernel 2.6.28
  • e2fsprogs 1.42.7
  • cartão SD classe 10 de 64 GB

Estou tentando acelerar o tempo necessário para formatar o cartão inteiro em um sistema de arquivos ext4. Minha pesquisa apontou para a opção lazy_itable_init = 1 para mkfs.ext4. Se bem entendi, essas opções irão melhorar a velocidade de formatar a partição do cartão SD consideravelmente, no entanto, isso é conseguido adiando a inicialização dos inodes para quando o sistema de arquivos é montado pela primeira vez. Esta inicialização será então executada em segundo plano pelo kernel (somente v2.6.27 +)

As páginas man têm a seguinte frase sobre essa opção:

This [flag] speeds up filesystem initialization noticeably, but it requires the kernel to finish initializing the filesystem in the background when the filesystem is first mounted.

Minha pergunta é, o que acontece se o kernel não terminar de inicializar o sistema de arquivos em segundo plano?

Eu testei isso formatando usando a opção lazy_itable_init = 1, montando o sistema de arquivos e removendo o cartão SD logo depois. Quando insiro o cartão novamente, posso montar a partição sem problemas e escrevi vários arquivos de 100 MB contendo zeros. Estes foram lidos de volta e estavam corretos.

Isso é apenas um acaso positivo, eu teria a garantia de ver esse comportamento depois de uma sequência de eventos?

    
por lbuchy 10.06.2013 / 22:26

1 resposta

2

A razão pela qual as tabelas de inode são inicializadas com zeros, para garantir que qualquer lixo que esteja lá antes não seja mal interpretado como um inode válido por e2fsck . Normalmente, não fará qualquer diferença, mas se e2fsck detectar erros, poderá tentar recuperar reconhecendo heuristicamente inodes, quer o bitmap indique ou não que estejam em uso, e por isso pode tentar recuperar inodes inválidos que terá então para remover de / lost + found.

    
por 10.06.2013 / 23:27