私のサーバーの1つでZFSを実行します。 2年間問題ありません。しかし、今日私は追加のzvolを作成したかったのですが、その結果、「スペースが足りません」というエラーメッセージだけが表示されました。奇妙なことは必ずそういうことがあるだろうはい十分なスペース:
root@cerberus:/vm-images# zfs list -r -t all
NAME USED AVAIL REFER MOUNTPOINT
rpool 956G 842G 96K none
rpool/stretch 926G 842G 926G /
rpool/swap 29.8G 869G 2.82G -
root@cerberus:/vm-images# zfs create -b 512 -o checksum=on -o compression=off -o primarycache=none -o redundant_metadata=all -o secondarycache=none -o logbias=latency -o snapdev=hidden -o sync=standard -V 600G rpool/vm-garak
cannot create 'rpool/vm-garak': out of space
したがって、842GBの空き容量がありますが、600GBサイズのzvolの作成を拒否します。
私が間違っていることを知っていますか?
編集1(@ Jim L.の要求に従って):
使用された予約なし:
root@cerberus:/vm-images# zfs list -o name,reservation -r
NAME RESERV
rpool none
rpool/stretch none
rpool/swap none
答え1
この-b
オプションを使用すると、指定されたブロックサイズに反比例してZVOLが消費するスペースが増えるように見えます。サイズが約50%増加したことを確認したので、-b 512
600G ZVOLは約50%にする必要があります。 900Gの利用可能なスペース。
空き容量ははるかに少ないですが、比率は同様のラップトップの小さな例を使用します-b 512
。
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
tank 191G 38.0G 88K none
(...snip...)
# zfs create -b 512 -V 30g tank/zvol
cannot create 'tank/zvol': out of space
# zfs create -b 512 -V 24g tank/zvol
# zfs list tank/zvol
NAME USED AVAIL REFER MOUNTPOINT
tank/zvol 36.0G 38.0G 56K -
ZVOLは、-b 512
提供されるストレージ容量より50%多くのスペースを占めています。しかし-b 128k
、例えばオーバーヘッドははるかに低いです。
# zfs destroy tank/zvol
# zfs create -b 128k -V 36g tank/zvol
# zfs list tank/zvol
NAME USED AVAIL REFER MOUNTPOINT
tank/zvol 36.1G 38.0G 56K -
答え2
https://github.com/openzfs/zfs/issues/548volblocksize(-b) と ashift 間の相互作用について議論します。
これはzfsonlinuxですか、それともSolarisですか(Solaris 11はashift設定をサポートしていません。ただそうです)?
zpoolの状態は何を言いますか?
プレードですか?