Escreve ocorrendo para nova partição ext4 a cada segundo indefinidamente. Causa e solução?

2

Tenho um HD externo de 500 GB conectado ao meu laptop que roda o Ubuntu 12.04. Eu formatei o disco externo com uma partição ext4 que abrange todo o disco.

Meu problema é que o disco faz barulho a cada segundo, porque as gravações ocorrem nele. Eu não estou escrevendo ativamente nenhum arquivo no disco ou uso o disco de outra forma. É apenas montado e deve estar ocioso.

Usando o iotop, posso ver que com o disco conectado, algum processo jbd2 grava no disco. Esse processo jbd2 não faz nada se o disco não estiver conectado. O ruído também pára imediatamente se eu desmontar a unidade, mas mantê-la conectada.

iotop:

Total DISK READ:       0.00 B/s | Total DISK WRITE:    1838.15 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                 
 3727 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.15 % [jbd2/sdb1-8]
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
...

Primeiro de tudo, o barulho me deixa louco. Eu trabalho em um ambiente silencioso e isso tudo muito baixo ruído é tão perturbador de alguma forma.

Em segundo lugar, acho que essas gravações contínuas no disco podem causar a degradação da vida útil. Isso seria especialmente importante para drives SSD, onde o ruído não está presente, mas o mesmo comportamento pode ser observado. Além disso, acho que as gravações no disco não devem ser necessárias, já que nenhum processo do usuário está acessando o disco e o sistema operacional certamente não precisa acessar um HDD externo para sua operação.

O que causa esses acessos de gravação e como pará-los?

    
por Daniel S. 09.01.2014 / 12:53

2 respostas

1

Da página man mke2fs e este link parece que os padrões para formatar um sistema de arquivos ext4 são muito preguiçosos e deixam muito trabalho de escrita para ser finalizado após a unidade ser montada pela primeira vez , e cada vez subseqüente até que o trabalho seja concluído. Mais irritantemente, ele gravará muito lentamente na unidade a cada poucos segundos até que seja feito.

Isso pode ser especialmente ruim para uma unidade flash (cartão / unidade USB) que pode ter um tamanho de bloco / página extremamente grande, portanto, gravar apenas alguns bytes na verdade grava em 256k, 512k ou um meg ou mais. E algumas unidades flash podem ter ciclos de gravação extremamente baixos (ou talvez 5000 ou 10.000, possivelmente 100.000). Muito abaixo de um disco rígido, e até mesmo um disco rígido provavelmente se beneficiaria mais de fazer todas as gravações de uma só vez, podendo ficar ocioso quando realmente deveria estar inativo. E eu não tenho certeza de quanto tempo isso vai ficar lentamente escrevendo para a unidade, algumas pessoas dizem que pode demorar alguns minutos ou alguns dias. Esta parece ser a pior maneira de "formatar" uma unidade flash.

Trecho da página do manual:

-E extended-options
      Set extended options for the filesystem.   Extended  options  are
      comma  separated, and may take an argument using the equals ('=')
      sign... The following extended options are supported:
...
 lazy_itable_init[= <0 to disable, 1 to enable>]
        If  enabled  and  the uninit_bg feature is enabled, the inode
        table will not be fully initialized by mke2fs.   This  speeds
        up  filesystem initialization noticeably, but it requires the
        kernel to finish initializing the  filesystem  in  the  back‐
        ground  when  the filesystem is first mounted.  If the option
        value is omitted, it defaults to 1 to enable lazy inode table
        zeroing.

 lazy_journal_init[= <0 to disable, 1 to enable>]
        If enabled, the journal inode will not be fully zeroed out by
        mke2fs.  This speeds up filesystem initialization noticeably,
        but  carries some small risk if the system crashes before the
        journal has been  overwritten  entirely  one  time.   If  the
        option  value  is  omitted,  it  defaults to 1 to enable lazy
        journal inode zeroing.

Portanto, se você puder inicialmente formatar (ou reformatar) o sistema de arquivos, isso deve eliminar o formato lento lento e concluir tudo de uma vez:

mkfs -t ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/sdxN
    
por Xen2050 11.11.2015 / 20:54
2

Existe uma solução simples para você. Deixe o disco conectado ao seu PC por algumas horas e o ruído será interrompido automaticamente. Uma estimativa aproximada para o tempo necessário é de 1,5h por 1TB de tamanho da partição.

Isso ocorre porque a formatação para ext4 não inicializa completamente o sistema de arquivos. Muito do trabalho de inicialização é delegado a jbd2, que é responsável por manter o diário do sistema de arquivos .
Ao formatar, somente as informações necessárias para usar o disco são gravadas. Enquanto você já pode usar o disco, o jbd2 adiciona informações adicionais. Ele é projetado dessa maneira para que a formatação seja rápida. As operações de gravação que você está observando após a formatação não afetam o desempenho do disco, ou seja, quando você copia arquivos para o disco, o processo de cópia não será mais lento porque o jbd2 também está gravando o diário.

O jbd2 é projetado para fazer seu trabalho em intervalos atrasados. Como a maioria dos discos rígidos possui mecanismos de economia de energia, que podem desativar o disco ou estacionar os cabeçalhos , é possível que o disco rígido detecte que está ocioso, faz algumas operações de economia de energia como estacionar as cabeças e, imediatamente depois, o jbd2 acessa o disco novamente, fazendo com que ele mova as cabeças novamente. Este é o baixo ruído que você está ouvindo.

Se os mecanismos de economia de energia do seu disco rígido puderem ser controlados (alguns HDDs suportam isso, outros não), você pode usar o seguinte comando para desabilitar os mecanismos de economia de energia, silenciando assim o tempo que o jbd2 faz as inicializações:

sudo hdparm -B 255 /dev/sdXY

onde você tem que substituir sdXY pelo caminho para sua partição do disco rígido. Se o comando falhar, seu HDD não suporta o controle dos mecanismos de economia de energia e você não pode silenciá-lo. Então você tem que esperar como explicado no topo desta resposta.

    
por Daniel S. 09.01.2014 / 12:53