Vorrei usare cron per pianificare gli scrub periodici del mio pool ZFS e, in tempi ragionevolmente brevi dopo il termine dello scrub , inviare a me stesso un rapporto sullo stato. Lo scopo è quello di individuare eventuali problemi senza doverli cercare manualmente (push anziché pull).
La prima parte è semplice: basta impostare un cron job da eseguire zpool scrub $POOL
come root a qualunque intervallo sia ragionevole nella mia situazione particolare.
La seconda parte, non sono così sicuro di come fare. zpool scrub
ritorna immediatamente e quindi lo scrub viene eseguito in background dal sistema (che è certamente un comportamento desiderabile se lo scrub viene avviato da un amministratore da un terminale). zpool status
mi dà un rapporto sullo stato ed esce (con il codice di uscita 0 mentre lo scrub è in esecuzione; non è ancora terminato, quindi non so se lo stato di uscita cambia una volta terminato, ma ne dubito). L'unico parametro documentato per zpool scrub è -s
"stop scrubbing".
Il problema principale è rilevare il cambio di stato dalla pulizia alla pulizia finale . Detto questo, il resto dovrebbe andare a posto.
Idealmente, vorrei dire zpool scrub
di non tornare fino al termine dello scrub, ma non vedo alcun modo per farlo. (Sarebbe quasi troppo semplice semplicemente cron zpool scrub --wait-until-done $POOL; zpool status $POOL
.)
In caso contrario, vorrei chiedere al sistema se è attualmente in corso uno scrub, preferibilmente in un modo che non rischia troppo di rompersi con un aggiornamento o una modifica della configurazione, in modo da poter agire sul fatto che in precedenza scrub è terminato (eseguendo uno stato zpool quando lo stato scrub passa da scrubbing a non scrubbing).
Questa particolare configurazione è per un sistema di workstation, quindi mentre uno strumento di monitoraggio come Nagios probabilmente ha componenti aggiuntivi che potrebbero risolvere il problema, è piuttosto eccessivo installare tale strumento solo per questa attività. Qualcuno può suggerire una soluzione a bassa tecnologia al problema?