zfs diff は暗号化されたデータセットでエラーを出します (パス名を検出するにはキーをロードする必要があります: 権限が拒否されました)

zfs diff は暗号化されたデータセットでエラーを出します (パス名を検出するにはキーをロードする必要があります: 権限が拒否されました)

私は 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 分)。これが上記のエラーと関係があるかどうかはわかりません。何かアイデアはありますか?

関連情報