Zfs

儘管剩餘空間足夠,但由於“空間不足”而無法創建 zvol

  • May 12, 2020

在我的一台伺服器上,我正在執行 ZFS - 兩年內沒有任何問題。但是,今天我想創建一個額外的 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

所以我們有 842 GB 的可用空間,但它拒絕創建大小為 600 GB 的 zvol。

知道我做錯了什麼嗎?

編輯1(根據@Jim L.的要求):

沒有使用保留:

root@cerberus:/vm-images# zfs list -o name,reservation -r
NAME           RESERV
rpool            none
rpool/stretch    none
rpool/swap       none

使用該-b選項似乎會增加 ZVOL 佔用的空間,與指定的塊大小成反比。在-b 512我看到大約 50% 的大小膨脹,所以你的 600G ZVOL 需要大約。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  -

引用自:https://unix.stackexchange.com/questions/586186