我在 Debian 10 上运行以下命令:
zfs-0.8.4-2~bpo10+1
zfs-kmod-0.8.4-2~bpo10+1
我有一个 2TB(密码加密)的数据集,许多同事都在使用。我还使用 Zabbix 进行监控,并实施了某些警报以了解是否删除了太多文件。这是我每天作为 cronjob 运行一次的脚本,用于检查修改、删除或添加了多少文件:
#!/bin/bash
LIST="/tmp/snaplist.txt"
DIFF="/tmp/diff.txt"
zfs list -t snapshot | grep production_dataset | grep 'snap_31' | awk '{print $1}' | tail -2 > $LIST && echo "Snapshot list saved"
while read -r SNAP; do
snaps+=("$SNAP")
done < $LIST
zfs diff "${snaps[0]}" "${snaps[1]}" > $DIFF && echo "Diff saved successfully"
status=(M - + R)
trappers=(mod rem add ren)
for ((n=0;n<${#status[@]};n++)); do
RESULT=$(cat $DIFF | grep -E "^${status[n]}" | wc -l)
TRAPPER="zfsdiff_${trappers[n]}"
/usr/bin/zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -k "$TRAPPER" -o "$RESULT"
done
rm $LIST
rm $DIFF
如果我手动运行该脚本,90% 的时间它都能正常工作。有时它会出现此错误(运行以下命令时zfs diff
:
Key must be loaded to discover path names: Permission denied
通过 cron 运行脚本时,几乎每次都会失败,除非我先手动运行了脚本。然后它运行了两天,然后又出现了上面的错误。
做 diff 也需要很长时间(15-20 分钟),我不确定这是否与上述错误有关。有什么想法吗?