refreservation
どのように機能するのか理解できません。 ~から文書:
データセット(スナップショットやクローンなどのサブアイテムを除く)に保証される最小ディスク容量を設定します。使用されるディスク領域の量がこの値を下回ると、データセットは再保存によって指定された領域の量を占めると見なされます。 [...]
私が理解しているのは、refreservation
データセットがすでに参照しているスペースの上にある場合にのみ機能するはずですが、逆にその下では何もしないでください。たとえば、ZVOLがある場合おすすめ 60 GB
その後、ZVOLにrefreservation
ofを追加します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
、持っているrefreservation
の50 GB
全体的な使用法が提供され113 GB
(これが私が最初に理解していないものです)、親の空き容量rpool
はです672 GB
。 2番目の出力では、削除してrefreservation
親エントリの空き容量を増やしました。そのZVOLの実際の参照スペースを超えているので、なぜ何の効果がないのか理解できません。rpool
50 GB
50 GB
refreservation
50 GB
誰かが私が間違っている場所を説明できますか?
私はZFSに関するドキュメントとマニュアルページを研究し、SOと関連サイトに関するいくつかの質問を見ました。 ZFS空間計算に関する多くの情報が見つかりましたが、この特定の理解問題の説明が見つかりませんでした。
答え1
問題は、スナップショットとデータセット自体で参照されているブロックのようです(したがって、ファイルが削除されると、そのファイルが消費するスペースはUSEDSNAPの下に表示されますが、それ以前はREFERの下に表示されます)。
しかし、それでも「スナップショットとレプリケーションによって消費されるディスク容量」に属しているため、USEDREFRESERVは減らないようです。zfs list -t snapshot
説明した状況で確認できます。
最初の質問に対する答えはより簡単です。 Refreservationはとにかく「used」の定義に属するため、他のすべてのUSED *列と同様にUSEDが増加します。