我在 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 運行腳本時,幾乎總是失敗,除非我先手動運行腳本。然後它工作了 2 天,然後又返回給我上面的錯誤。
做 diff 也需要很長時間(15-20 分鐘),我不確定它是否與上面的錯誤有任何關係。有任何想法嗎?