是否应使用整个磁盘或分区创建ZFS zpool?


14

我在FreeBSD机器上制作zpool。创建zpool时,我观察到以下两种情况:

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

  2. 如果我用格式化磁盘gpartfreebsd-zfs格式,然后做出的zpool然后还他们完美的工作。

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

Answers:


8

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


你是什​​么意思your use case。您能给出一些分区可能有用的情况吗?
shivams 2014年

除非您具有深奥的配置或正在使用某些SSD解决方案,或者对ZIL和L2ARC设备做一些奇怪的事情,否则分区在ZFS中没有用。即使这样,最好还是只使用整个设备/磁盘。
ewwhite 2014年

但是,为什么使用整体磁盘更好呢?
leetNightshade 2014年

1
@leetNightshade因为当您使用ZFS时没有太多的点分区磁盘,因此文件系统不需要它们自己的分区。而且,当ZFS“拥有”磁盘时,它可以使磁盘写缓存获得更好的性能。见solarisinternals.com/wiki/index.php/...
jlliagre

1
@Grogi有任何好的证据来证明这一点吗?
leetNightshade

5

每个物理磁盘使用一个专用于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中从它们构建vdev。这基本上会降低性能,因为ZFS将在vdev之间切片数据,而顺序iops将变成寻求噩梦...


您能否在共享/使用磁盘片的zfs上进行更多有关寻梦的行为?
satch_boogie

最简单的方案-从两个vdev构建一个池,每个vdev都是同一硬盘上的一个分区。现在,您要编写一个足够大的数据块,该数据块跨两个vdev。尽管顺序写入数据,驱动器仍必须在两个单独的位置之间进行搜索以保存数据。
Grogi

如果Pool_A使用(sda1,sdb1,sdc3)和Pool_B使用(sda2,sdb2,sdc3),此行为是否相同
satch_boogie

您不必同时写信给他们...如果您将vdev放在一个池中,您无能为力...
Grogi

0

在我的脑海中,由于怀疑我是否可以指定该磁盘上的内容,因此出现了这个问题……因此,当您在整个驱动器上创建池时(是的,如果需要,使用-f选项),zpool实际上会创建gpt分区表并Solaris分区,如下所示:

(fdisk -l ...)
...
Disklabel type: gpt
Disk identifier: 4CBE587E-23AF-8E4B-A7F0-B44AD6083171

Device          Start        End    Sectors  Size Type
/dev/sdd1        2048 3907010559 3907008512  1,8T Solaris /usr & Apple ZFS
/dev/sdd9  3907010560 3907026943      16384    8M Solaris reserved 1

因此确实不需要手动创建分区...


我不考虑solaris在freebsd上的最佳实践。例如,对于镜像,您可以用更大的磁盘替换磁盘,并使用一个命令动态扩展池大小,如果配置了磁盘,甚至可以自动扩展。
cstamas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.