我应该使用整个磁盘或分区创建 ZFS zpools 吗?

shi*_*ams 24 freebsd unix partition zfs bsd

我正在 FreeBSD 机器上制作 zpools。在创建 zpools 时,我观察到这两种情况:

  1. 如果我采用raw disks并创建,zpool那么我就能够形成 zpools 并且它们运行良好。

  2. 如果我使用gpartin freebsd-zfsformat格式化磁盘,然后制作 zpool,那么它们也可以正常工作。

我感到困惑的是,哪种方法更适合创建 zpool?

eww*_*ite 15

如果可能,最好在 ZFS 中使用整个磁盘。
在您的用例中无需进行分区。

  • 但是为什么使用整盘更好呢? (4认同)
  • “你的用例”是什么意思。你能给出一些分区可能有用的情况吗? (3认同)
  • 当我第一次设置 ZFS 时,阅读这个答案给了我一个关于分区成本/风险的误导性印象,所以我决定使用整个磁盘。事实上,我的“深奥”配置(不同大小的镜像驱动器)会从分区的使用中受益,从其他答案看来,没有成本——“使用整个磁盘”只是意味着 ZFS 会自动为你分区. (3认同)
  • @leetNightshade 这并没有更好。 (2认同)
  • @Grogi 有什么好的证据来支持这一点吗? (2认同)

Gro*_*ogi 13

每个物理磁盘使用一个专用于 ZFS 的片/分区,并留下一些未分区的空间。这样,如果您需要更换驱动器并且更换的扇区小 10 个,您仍然可以做到(http://www.freebsddiary.org/zfs-with-gpart.php)。

这就是 Solaris 自动执行的操作,这就是 FreeNAS 执行的操作(https://forums.freenas.org/index.php?threads/zfs-on-partitioned-disks.37079/),这就是 ZoL 在您给它整个磁盘时所做的 -它会分割它...

将分区上的位置转换为实际设备上的位置的开销可以忽略不计。因此,一旦分区与物理扇区边界正确对齐,就没有理由让它的行为与整个块设备不同。

使用 ZoL,我知道的唯一区别是 ZoL 会将磁盘调度程序切换到将noop整个磁盘分配给 vdev 时。没有什么能阻止您手动设置它。

有一些不是...不要为每个磁盘创建更多的 ZFS 分区,如果您决定忽略上面的建议,永远不要在同一个 zpool 中从它们构建 vdevs。这基本上会降低性能,因为 ZFS 将在 vdevs 之间切分数据,而顺序 iops 将变成搜索噩梦......


Mec*_*cki 5

这里的人声称您需要使用整个磁盘才能获得磁盘写入缓存优势,但事实并非如此。事实是,如果您将整个磁盘提供给 ZFS,ZFS 将尝试为您启用磁盘写入缓存。然而,即使您只给它一个分区,也没有人阻止您自己启用磁盘写入缓存,在这种情况下,ZFS 将检测到这一点并尊重它,就像它本身启用了缓存一样。因此,不需要使用整个磁盘来获得写入缓存优势,它只会保护您自己启用磁盘写入缓存的工作。

这里的人声称,如果你给它整个磁盘,磁盘访问会更快。虽然这种说法在技术上是正确的,但速度差异非常小,完全可以忽略不计。如果您的 ZFS 设置太慢,那么如果您只使用整个磁盘,它仍然会太慢。如果它在整个磁盘上表现良好,那么在单个分区上也同样表现良好。

不使用整个磁盘的原因之一是磁盘大小确实有所不同。想象一下以下情况:您创建了一个包含 3 个相同磁盘的 RAIDZ,每个磁盘的容量为 4 TB,并且您始终使用完整磁盘。3 年后,其中一个磁盘出现故障。没问题,您只需购买替换件,但同时该磁盘具有新的硬件版本,并且新的 4 TB 型号仅小 256 KB。这不行!您不能将其用作替换磁盘,因为它的大小必须与其他两个磁盘完全相同或更大。如果更小,无论字节多小,都不起作用。

这就是为什么我总是创建一个分区并留下大约 10 MB 的磁盘空间未使用。每个磁盘丢失 10 MB 几乎为零(对于 4 TB 磁盘,损失为 0.00025%),这意味着替换磁盘最多可以小 10 MB,但仍然可以工作(或者有最多 10 MB 的坏扇区等) .)