Estou substituindo um disco rígido com falha em um btrfs espelhado.
btrfs device delete missing /[mountpoint]
está demorando muito , então suponho que na verdade esteja reequilibrando os dados para a unidade de substituição.
Existe alguma maneira de monitorar o progresso de tal operação?
Eu não necessariamente espero uma GUI bonita, ou mesmo um contador de%; e estou disposto a escrever algumas linhas de shell script, se necessário, mas nem sei por onde começar a procurar dados relevantes. btrfs filesystem show
por exemplo, apenas trava, presumivelmente aguardando a conclusão da operação de balanceamento antes de exibir qualquer informação sobre o fs espelhado.
Balance on '/volume1' is running
28 out of about 171 chunks balanced (1156 considered), 84% left
. Invulgarmente, a porcentagem é reduzida.isso produzirá algo assim:
E se você notar que o ID do dispositivo nº 4 parece um pouco diferente do resto. quando você faz "btrfs device delete missing / mntpoint", ele começará a regenerar os metadados / dados do raid necessários para liberar a unidade "ausente".
se você fizer algo como
então você pode ver o espaço no dispositivo "ausente" ofensivo gradualmente ficando cada vez menor até que a operação seja concluída e ela seja removida do fi.
fonte
O BTRFS pode demorar algum tempo lendo ou reorganizando dados antes de gravar dados na unidade em que você espera que eles gravem.
Você pode ver quanto tempo de CPU está sendo dedicado às operações de BTRFS, incluindo rebalanceamento, adição, exclusão, conversão, etc:
Para ver como cada unidade está ocupada, instale o sysstat e execute:
Adicione algumas opções para fazer com que o iostat mostre estatísticas em megabytes e atualize a cada 30 segundos:
Amostra de saída do scrub para que não haja gravações durante este intervalo:
Instale e execute o munin para ver gráficos históricos da atividade da unidade e muitas outras informações. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04
fonte
Eu também estava imaginando quando uma exclusão duradoura terminaria, então eu vim com esse pequeno pedaço de código shell:
Isso fornecerá uma boa barra de progresso como esta:
A idéia geral é usar
pv
para exibir o progresso. Como esse comando permite apenas monitorar bytes que fluem através de um canal, usamosdd
para gerar uma quantidade apropriada de zeros e inseri-lospv
.A vantagem desse método é que você obtém uma boa barra de progresso. No entanto, como parece
btrfs
sempre excluir os dados, um GB de cada vez, leva algum tempo até que uma nova diferença no tamanho dos bytes seja observada.Para resolver esse problema, o sinalizador
-a
é adicionado aos sinalizadores padrãopv
para exibir uma taxa de transmissão média (já que a taxa de transmissão atual normal será 0 na maioria das vezes).Sei que essa não é a melhor solução, mas a melhor que eu poderia encontrar. Se alguém tiver idéias para melhorias, entre em contato! :)
fonte