今天,我偶然发现了一个奇怪的问题我无法创建 zvol,因为 ZFS 声称没有足够的空间,尽管有曾是足够的空间。
事实证明,zvol 显然占据了预期空间的 150% 以上,具体取决于其块大小。例如,在我在上面链接的问题中描述的情况下,如果使用 512 字节的块大小,我可以创建不超过 560 GB 的 zvol,尽管可用空间为 842 GB。但是,当使用默认块大小(8 kB)时,我可以毫无问题地创建 810 GB 的 zvol。
回答另一个问题的乐于助人的人通过自己的测量验证了我的结果,并且还发现如果使用 512 字节的块大小,大小会增加 50%。
我想知道这是为什么,以及是否可以以某种方式解决它。
背景:
通常,我不会太关心块大小。但是,我至少读过两篇文章,其作者建议为 zvol 提供与底层磁盘相同的块大小,特别是当该 zvol 用作 VM 存储时。不幸的是,我只记得其中一个来源,但至少这是作者通过基准证明(以某种方式)他的主张的来源。这是(请查看“数据集”部分):
https://martin.heiland.io/2018/02/23/zfs-tuning/
如果尝试使 zvol 的块大小与物理磁盘的扇区大小相同是无意义的,我不介意是否在答案中明确说明这一点:-)
就我个人而言,我想我们必须阅读源代码来决定它是否有意义,或者进行我们自己的基准测试(目前这对我来说是不可能的,因为我在该系统上没有足够的空间.. .)。我还可以想象,让 zvol 块大小与VM 来宾文件系统的簇大小(如果虚拟机使用 NTFS,有问题的虚拟机和我使用的其他一些虚拟机就是这种情况)。