Я хотів би використовувати cron для планування періодичних скрабів мого пулу ZFS, а через певний час після закінчення скрабу надсилайте собі звіт про стан. Мета цього - вирішити будь-які проблеми без необхідності їх вручну шукати (натискати, а не тягнути).
Перша частина проста: просто встановіть роботу cron для запуску zpool scrub $POOL
як root на будь-який інтервал, який є розумним у моїй конкретній ситуації.
Друга частина, я не зовсім впевнена, як це зробити. zpool scrub
повертається негайно, а потім скраб запускається у фоновому режимі (що, безумовно, бажана поведінка, якщо скраб ініціюється адміністратором з терміналу). zpool status
дає мені звіт про стан і виходить (з кодом виходу 0, поки скраб працює; він ще не закінчений, тому я не знаю, чи зміниться статус виходу, коли це зроблено, але я сумніваюся в цьому). Єдиний параметр, задокументований для скрабування zpool, - це -s
"зупинка очищення".
Основна проблема - виявлення зміни статусу від вишкрібання до закінченого очищення . Враховуючи це, решта повинна стати на місце.
В ідеалі я хотів би сказати zpool scrub
не повертатися, поки скраб не закінчиться, але я не бачу жодного способу змусити це зробити. (Це зробило б майже занадто легким простувати крон zpool scrub --wait-until-done $POOL; zpool status $POOL
.)
Якщо цього не зробити, я хотів би запитати систему, чи працює скраб в даний час, бажано таким чином, який не надто ризикує зламатись із оновленням або зміною конфігурації, щоб я міг діяти на те, чи не працює раніше скраб закінчено (виконуючи статус zpool, коли стан скрабу переходить від скрабування до не очищення).
Ця особлива настройка призначена для системи робочих станцій, тому, хоча інструмент моніторингу, наприклад Nagios, ймовірно, має надбудови, які вирішили б проблему, відчувається досить зайвим встановити такий інструмент лише для цього одного завдання. Чи може хтось запропонувати низькотехнологічне рішення проблеми?