我想使用cron安排对ZFS池进行定期清理,并在清理完成后的相当短的时间内将状态报告通过电子邮件发送给我自己。这样做的目的是捕获任何问题,而无需手动查找它们(按而不是拉)。
第一部分很简单:只需设置一个cron作业即可zpool scrub $POOL
在我的特定情况下以合理的时间间隔以root 身份运行。
第二部分,我不太确定该怎么做。zpool scrub
立即返回,然后由系统在后台运行清理(如果清理是由管理员从终端启动的,这当然是理想的行为)。zpool status
给我一个状态报告并退出(在运行Scrub时退出代码为0;它尚未完成,因此我不知道退出状态一旦完成是否会更改,但我对此表示怀疑)。zpool scrub记录的唯一参数是-s
“ stop scrubbing”。
主要问题是检测从清洗到完成清洗的状态变化。鉴于此,其余的应该归位。
理想情况下,我想告诉zpool scrub
您在擦洗完成之前不要返回,但我看不出有任何办法可以做到这一点。(简单地进行cron几乎太容易了zpool scrub --wait-until-done $POOL; zpool status $POOL
。)
如果失败,我想询问系统当前是否正在进行清理,最好采用不会因升级或配置更改而造成太大风险的方式,以便我可以对先前运行的设备进行操作清理已完成(通过在清理状态从清理变为未清理时执行zpool状态)。
这种特殊的设置是针对工作站系统的,因此,尽管诸如Nagios之类的监视工具可能具有可解决该问题的加载项,但仅为完成一项任务而安装这样的工具就显得有些过头了。有人可以建议采用较低技术含量的解决方案吗?