ZVOLを再予約すると、ZVOLがすでに参照しているスペースよりも低い場合でも、上位の空きスペースが減るのはなぜですか?

ZVOLを再予約すると、ZVOLがすでに参照しているスペースよりも低い場合でも、上位の空きスペースが減るのはなぜですか?

refreservationどのように機能するのか理解できません。 ~から文書:

データセット(スナップショットやクローンなどのサブアイテムを除く)に保証される最小ディスク容量を設定します。使用されるディスク領域の量がこの値を下回ると、データセットは再保存によって指定された領域の量を占めると見なされます。 [...]

私が理解しているのは、refreservationデータセットがすでに参照しているスペースの上にある場合にのみ機能するはずですが、逆にその下では何もしないでください。たとえば、ZVOLがある場合おすすめ 60 GBその後、ZVOLにrefreservationofを追加します50 GB。どうすればいいですか?最後に追加すると、refreservationこのZVOLが少なくとも参照されることが保証されます50 GBが、すでに参照されているため、60 GB何も変更しないでください。そうですか?

私の場合、その作業は親データセットの空き領域を占めていました。次のコマンドとその出力のリストを検討してください(他のZVOLとデータセットの行は注意を気にし、動作を理解するのに役立たないため削除しました)。

root@cerberus:~/qemu-kvm# zfs list -o name,type,creation,volsize,available,used,referenced,reservation,refreservation,usedbydataset,usedbyrefreservation,usedbysnapshots,usedbychildren
NAME                    TYPE        CREATION               VOLSIZE  AVAIL   USED  REFER  RESERV  REFRESERV  USEDDS  USEDREFRESERV  USEDSNAP  USEDCHILD
rpool                   filesystem  Mon Jan 16  9:45 2017        -   672G  1.10T    96K    none       none     96K              0         0      1.10T
rpool/zvol-morn-system  volume      Tue Sep 15 20:43 2020      72G   722G   113G  63.0G    none        50G   63.0G          49.8G      238M          0
root@cerberus:~/qemu-kvm# zfs set refreservation=none rpool/zvol-morn-system
root@cerberus:~/qemu-kvm# zfs list -o name,type,creation,volsize,available,used,referenced,reservation,refreservation,usedbydataset,usedbyrefreservation,usedbysnapshots,usedbychildren
NAME                    TYPE        CREATION               VOLSIZE  AVAIL   USED  REFER  RESERV  REFRESERV  USEDDS  USEDREFRESERV  USEDSNAP  USEDCHILD
rpool                   filesystem  Mon Jan 16  9:45 2017        -   722G  1.05T    96K    none       none     96K              0         0      1.05T
rpool/zvol-morn-system  volume      Tue Sep 15 20:43 2020      72G   722G  63.2G  63.0G    none       none   63.0G              0      258M          0

最初の出力でrpool/zvol-morn-system参照し63 GB、持っているrefreservation50 GB全体的な使用法が提供され113 GB(これが私が最初に理解していないものです)、親の空き容量rpoolはです672 GB。 2番目の出力では、削除してrefreservation親エントリの空き容量を増やしました。そのZVOLの実際の参照スペースを超えているので、なぜ何の効果がないのか理解できません。rpool50 GB50 GBrefreservation50 GB

誰かが私が間違っている場所を説明できますか?

私はZFSに関するドキュメントとマニュアルページを研究し、SOと関連サイトに関するいくつかの質問を見ました。 ZFS空間計算に関する多くの情報が見つかりましたが、この特定の理解問題の説明が見つかりませんでした。

ベストアンサー1

問題は、スナップショットとデータセット自体で参照されているブロックのようです(したがって、ファイルが削除されると、そのファイルが消費するスペースはUSEDSNAPの下に表示されますが、それ以前はREFERの下に表示されます)。

しかし、それでも「スナップショットとレプリケーションによって消費されるディスク容量」に属しているため、USEDREFRESERVは減らないようです。zfs list -t snapshot説明した状況で確認できます。

最初の質問に対する答えはより簡単です。 Refreservationはとにかく「used」の定義に属するため、他のすべてのUSED *列と同様にUSEDが増加します。

おすすめ記事