Gostaria de usar o cron para agendar scrubs periódicos do meu pool ZFS e, em um período razoavelmente curto após a conclusão do scrub , enviar um relatório de status por e-mail para mim. O objetivo disso é detectar quaisquer problemas sem precisar procurá-los manualmente (pressione em vez de puxar).
A primeira parte é fácil: basta configurar um trabalho cron para executar zpool scrub $POOL
como root em qualquer intervalo que seja razoável em minha situação específica.
A segunda parte, não sei ao certo como fazer. zpool scrub
retorna imediatamente e, em seguida, a limpeza é executada em segundo plano pelo sistema (que é certamente um comportamento desejável se a limpeza for iniciada por um administrador a partir de um terminal). zpool status
me fornece um relatório de status e sai (com o código de saída 0 enquanto o scrub está em execução; ele ainda não terminou, então não sei se o status de saída é alterado assim que terminar, mas duvido). O único parâmetro documentado para a limpeza do zpool é -s
para "parar a limpeza".
O principal problema é detectar a alteração de status da limpeza para a limpeza concluída . Dado isso, o resto deve se encaixar.
Idealmente, eu gostaria de dizer zpool scrub
para não voltar até a limpeza terminar, mas não vejo nenhuma maneira de fazê-lo. (Seria muito fácil simplesmente agendar zpool scrub --wait-until-done $POOL; zpool status $POOL
.)
Caso contrário, eu gostaria de perguntar ao sistema se uma limpeza está em andamento, de preferência de uma maneira que não corra o risco de ser interrompida por uma atualização ou alteração de configuração, para que eu possa agir sobre se uma execução anterior está ou não em execução. a limpeza foi concluída (executando um status zpool quando o status de limpeza passa de lavagem para não lavagem).
Essa configuração específica é para um sistema de estação de trabalho; portanto, embora uma ferramenta de monitoramento como o Nagios provavelmente tenha suplementos que resolveriam o problema, é um exagero instalar essa ferramenta apenas para esta tarefa. Alguém pode sugerir uma solução de baixa tecnologia para o problema?