我正在 FreeBSD 机器上创建 zpools。在创建 zpools 时,我观察到以下两种情况:-
如果我接受
raw disks
并创建zpool
,那么我就能形成 zpools,而且它们运行良好。gpart
如果我使用格式来格式化磁盘freebsd-zfs
,然后创建 zpool,那么它们也能完美运行。
我感到困惑的是哪种方法更适合创建 zpools?
答案1
尽可能使用原始磁盘,除了用于启动操作系统的磁盘/池之外,其他任何地方都可以使用原始磁盘。我认为这是最好的方法。
答案2
ZFS 采用与传统磁盘 -> 分区 -> 文件系统概念不同的方法。作为存储磁盘处理程序,它最适合用于访问完整的原始磁盘。
另一方面,安装操作系统时,可能需要一些特殊的分区/切片。例如,交换分区可能比 zfs-zvol 或 zfs 卷上的交换文件提供更好的性能(更“直接”的方法):交换访问将依赖于 zfs,并且必须“走很长的路”,这可能会在高(io 和内存)负载情况下造成瓶颈。
有一些特殊情况,例如 freeNAS:默认情况下,它在每个存储磁盘上保留一些空间用于交换,因此它不会将整个物理磁盘暴露给 zfs。对于“低调”设置(我也使用那些设置),这是一个很好的折衷方案,但对于“业务场景”,我通常更喜欢有一个专用的磁盘用于交换。不过,FreeNAS 确实有一个选项可以禁用新添加磁盘上的默认交换创建,所以这是一个选项。但即使这样,我也不确定它是否会将整个物理磁盘暴露给 zfs,我认为中间添加了一些层(可能是加密和/或块大小校正,还没有研究过)。
一般来说,在分区/切片上使用 zfs 可能会有很多好处,但如果您要使用整个磁盘,就不要分区,不要切片,将原始设备交给 ZFS,让它发挥它的魔力。;-)
不要在 ZFS 下使用任何类型的“硬件 RAID”,除非您确切知道自己在做什么。即便如此,也请谨慎行事:这里可能比龙还要糟糕……
答案3
如果您使用原始设备创建池,zpool 无论如何都会对其进行分区。如果您有特殊需求(例如为交换分配空间),您可以在创建池之前进行分区,这样 ZFS 就可以正常工作。