私は Debian 10 で以下を実行しています:
zfs-0.8.4-2~bpo10+1
zfs-kmod-0.8.4-2~bpo10+1
多くの同僚が使用する 2TB (パスフレーズ暗号化) のデータセットがあります。また、監視には Zabbix を使用しており、削除されたファイルが多すぎるかどうかを知るための特定のアラームを実装しています。これは、変更、削除、または追加されたファイルの数を確認するために 1 日に 1 回 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 日間は動作しますが、再び上記のエラーが発生します。
また、差分を実行するのに非常に長い時間がかかります (15 ~ 20 分)。これが上記のエラーと関係があるかどうかはわかりません。何かアイデアはありますか?