Me gustaría usar cron para programar revisiones periódicas de mi grupo ZFS, y en un tiempo razonablemente corto después de que finalice la limpieza , enviarme un informe de estado por correo electrónico. El propósito de esto es detectar cualquier problema sin tener que buscarlo manualmente (empujar en lugar de tirar).
La primera parte es fácil: simplemente configure un trabajo cron para que se ejecute zpool scrub $POOL
como root en cualquier intervalo que sea razonable en mi situación particular.
La segunda parte, no estoy tan seguro de cómo hacerlo. zpool scrub
vuelve inmediatamente y luego el sistema ejecuta el scrub en segundo plano (lo que sin duda es un comportamiento deseable si el scrub lo inicia un administrador desde un terminal). zpool status
me da un informe de estado y sale (con el código de salida 0 mientras se ejecuta el scrub; aún no ha terminado, así que no sé si el estado de salida cambia una vez que está hecho, pero lo dudo). El único parámetro documentado para la limpieza de zpool es -s
para "detener la limpieza".
El principal problema es detectar el cambio de estado de lavado a lavado terminado . Dado eso, el resto debe caer en su lugar.
Idealmente, me gustaría decirle zpool scrub
que no regrese hasta que termine el exfoliante, pero no veo ninguna forma de hacerlo. (Sería casi demasiado fácil simplemente cron zpool scrub --wait-until-done $POOL; zpool status $POOL
.)
De lo contrario, me gustaría preguntarle al sistema si un fregado está actualmente en progreso, preferiblemente de una manera que no corra demasiado riesgo de romper con una actualización o cambio de configuración, para que pueda decidir si se está ejecutando o no scrub ha finalizado (al ejecutar un estado de zpool cuando el estado de scrub pasa de scrubbing a no scrubbing).
Esta configuración particular es para un sistema de estación de trabajo, por lo que si bien una herramienta de monitoreo como Nagios probablemente tiene complementos que resolverían el problema, se siente demasiado exagerado instalar dicha herramienta solo para esta tarea. ¿Alguien puede sugerir una solución de baja tecnología para el problema?