是否可以将数据集转换为稀疏卷(精简配置)?

Xdg*_*Xdg 7 zfs thin-provisioning

我已经创建了 ZFS 数据集并在其中安装了虚拟服务器。突然,我的 ZFS 卷可用空间消失了,但并非每个数据集中都使用了所有空间。我想介绍精简配置(使用 ZFS 稀疏卷)。

是否可以将数据集转换为稀疏卷而不删除它们?谢谢。

小智 8

我不认为接受的答案实际上是正确的,但我没有足够的代表发表评论。

假设当 OP 说“数据集”时,它们的意思是“ZFS 卷”(或 ZVOL)。

精简配置(又名稀疏)ZVOL 和常规 ZVOL 之间的唯一区别是是否通过refreservation属性保留了完整大小,例如

# zfs create -V 10G tank/test_full
# zfs create -s -V 10G tank/test_sparse
# zfs list -o name,used,usedbydataset,usedbyrefreservation,logicalused,logicalreferenced,refreservation tank/test_sparse tank/test_full
NAME               USED  USEDDS  USEDREFRESERV  LUSED  LREFER  REFRESERV
tank/test_full    10.3G    136K          10.3G    30K     30K      10.3G
tank/test_sparse   136K    136K              0    30K     30K       none
Run Code Online (Sandbox Code Playgroud)

因此,您可以通过更改现有 ZVOL 将现有 ZVOL 转换为稀疏,refreservation例如

# zfs set refreservation=none tank/test_full
# zfs list -o name,used,usedbydataset,usedbyrefreservation,logicalused,logicalreferenced,refreservation tank/test_sparse tank/test_full
NAME               USED  USEDDS  USEDREFRESERV  LUSED  LREFER  REFRESERV
tank/test_full     136K    136K              0    30K     30K       none
tank/test_sparse   136K    136K              0    30K     30K       none
Run Code Online (Sandbox Code Playgroud)


Mic*_*ton 3

据我所知,不可能将现有的 zvol 转换为稀疏;首先必须将它们创建为稀疏的。

但是,您可以创建一个新的稀疏 zvol,并zfs send从旧的 zvolzfs recv到新的,然后交换它们的名称。

  • 这个命令 `zfs set refreservation=none Tank/dataset` 和发送和接收不一样吗? (2认同)