Eu quero interromper uma operação de ressincronização em execução em um ataque ao software debian squeeze. (Esta é a ressincronização regular de comparação agendada. Nesse caso, a matriz de incursões ainda está limpa. Não confunda isso com uma reconstrução após a falha de um disco e a substituição.)
Como parar esta operação de ressincronização agendada enquanto está em execução? Outra matriz de ataques é "ressincronizada pendente", porque todos são verificados no mesmo dia (domingo à noite), um após o outro. Eu quero uma parada completa desta noite de domingo ressincronizando.
[Edit: sudo kill -9 1010
não para, 1010 é o PID do processo md2_resync]
Também gostaria de saber como posso controlar os intervalos entre ressincronizações e o tempo restante até o próximo.
[Edit2: O que eu fiz agora foi tornar a ressincronização muito lenta, para que não perturbe mais:
sudo sysctl -w dev.raid.speed_limit_max=1000
extraído de http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html
Durante a noite, voltarei a configurá-lo com um valor alto, para que a ressincronização possa terminar.
Esta solução alternativa é boa para a maioria das situações, mas seria interessante saber se o que eu pedi é possível. Por exemplo, parece não ser possível aumentar uma matriz enquanto ela está ressincronizando ou ressincronizando "pendente"]
Respostas:
Se sua matriz for
md0
entãoecho "idle" > /sys/block/md0/md/sync_action
http://www.mjmwired.net/kernel/Documentation/md.txt#477
fonte
/sys/block/md0/md/sync_min’. To reset this write
0` para este arquivo.Eu queria diminuir a velocidade ou pausar o processo de ressincronização para salvar algumas E / S e fazer backup de algumas coisas em outro computador. Esta discussão me ajudou, mas eu encontrei outra solução.
No meu Debian Lenny:
echo "idle" > /sys/block/md0/md/sync_action
funciona, mas o processo de ressincronização é reiniciado imediatamente.checkarray -x --all
: funciona, mas o mesmo resultado: o processo de ressincronização é reiniciado imediatamente.Então, eu uso este método:
echo 0 > /proc/sys/dev/raid/speed_limit_max
fonte
speed_limit_min
0 para pausar totalmente a ressincronização.Você pode cancelar uma ressincronização de matriz em andamento usando a seguinte sequência de comandos (como raiz):
Observe que isso pode deixar sua matriz em um estado inconsistente . Não faça isso a menos que tenha certeza de que a matriz está em boas condições e execute a sincronização mais tarde.
(Crédito onde o crédito é devido: encontrou este encantamento neste tópico .)
fonte
Como mencionado acima, nos sistemas Debian / Ubuntu, o
/etc/cron.d/mdadm
script chama o/usr/share/mdadm/checkarray
script para iniciar as verificações de ressincronização.Este script tem uma opção para cancelar todas as verificações de sincronização em execução:
fonte
Não tenho certeza sobre como cancelar uma ressincronização, mas o cronograma é controlado pelos
/etc/cron.d/mdadm
sistemas Debian / Ubuntu.O script
/usr/share/mdadm/checkarray
pode lançar alguma luz sobre a outra parte da sua pergunta, pois é isso que está sendo chamado pelo cron.fonte
Se o seu dispositivo md for md0 e você desejar interromper a gravação de ressincronização:
fonte
Possível solução para isso, demorou um pouco para entrar em detalhes.
Meu sistema: CentOS 6.5 mdadm v3.3.2
Verificações constantes toda semana, queria pausar uma delas, o RAID é limpo, a verificação era chamada através do script /etc/cron.d/raid-check, que é executado semanalmente.
Para cancelar a verificação, use a função --misc --action. Supondo que o dispositivo RAID seja / dev / md0 e essa seja apenas a verificação semanal de consistência e não uma falha no dispositivo, você faria como root:
Da mesma forma, para iniciar a verificação de consistência
fonte
Não funciona quando / sys / block / md * / md / sync_action é "ressincronização" (diferente do estado de "verificação" ou "reparo". É possível ecoar "inativo" no arquivo sync_action, mas não afeta o Esse arquivo de documentação do kernel aqui afirma incorretamente que funcionará, mas nunca funcionou para mim:
fonte
Eu sei que este é um post de 4 anos, mas você também pode fazer isso (assumindo md0 como a matriz e sdb4 como o "disco" de ressincronização):
Este comando finge que o sdb4 é um disco com falha e, portanto, o retira da matriz, interrompendo a ressincronização. Se não houver erro durante a ação resync-stop, esse comando também removerá o sdb4 da matriz md0. Se houve algum erro, o disco permanece no estado de falha, mas permanece na matriz.
Se você falhar em um disco em qualquer lugar
mdadm
, defina-o logicamente . Se a matriz estiver limpa (não degradada), o disco permanecerá consistente e poderá ser adicionado novamente pela opção --ad << << disk >> --assume-clean sem nenhum medo. Se houver alguma ação depois de desanexada (por exemplo, ressincronização, reconstrução ou até uma gravação), então --assume-clean provavelmente falhará e iniciará uma ação de ressincronização imediatamente.Mudar
raid.speed_limit_min
e deraid.speed_limit_max
alguma forma é uma má idéia, pois afeta não apenas as velocidades de ressincronização / reconstrução, mas também as velocidades normais de operação, e provavelmente você perderá muito desempenho obtido com o uso de matrizes RAID.fonte
--assume-clean
em um sistema ativo e houver gravações no disco restante, você estará solicitando problemas.