两个独立的 zpool 可以存在于同一物理设备上吗?

Ale*_*lex 5 zfs

简短:我可以在两个单独的 zpool 之间共享一个磁盘吗?

Long:我想要一个 raidz2 阵列,但我一次买不起。我可能的解决方案是从两个驱动器开始。我将只使用每个磁盘容量的一半来创建镜像。当我能负担得起更多驱动器时,我会使用新驱动器和初始磁盘上 50% 的未使用空间创建一个带有单个 raidz2 vdev 的新 zpool。然后我计划将数据从一个 zpool 复制到另一个 zpool,删除包含镜像的 zpool,并使用 raidz2 vdev 扩展 zpool。

这行得通吗?

链接和参考将不胜感激。

not*_*ter 6

  1. 是的,您可以创建一个池,其中包含两个分区之间的镜像 vdev。
  2. 是的,您可以拥有两个池,每个池都使用自己的分区共享一个磁盘。
  3. 是的,当增加 raid-z2 vdev 中磁盘的所有大小时,它会增加可用容量。

但你不应该这样做。ZFS 是最好的,当你给它整个磁盘时,虽然分区“工作”,但使用整个磁盘你的世界更容易/更好。如果你真的想做镜像 -> raid-z2 池过渡,并准备在你的镜像使用率 50% 的范围内生活,我有一个替代想法:

  1. 购买 2 个磁盘(例如 2x2TB)
  2. 创建镜像 zpool: zpool create yourPool mirror cXt1d0 cXt2d0
  3. 购买 3 个以上相同大小的磁盘。(例如 4x2TB)
  4. 创建一个新的文件系统: zfs create yourPool/fake
  5. 创建两个稀疏文件: mkfile -n 1TB /yourpool/fake/fakehda
  6. 创建一个双奇偶校验 zpool: zpool create yourNewPool raidz2 cXt3d0 cXt4d0 cXt5d0 cXt6d0 /yourpool/fake/fakehda /yourpool/fake/fakehdb
  7. zfs 将您的文件系统从一个池发送/接收到另一个池。
  8. 从镜像中分离一个磁盘 zpool detach yourPool cXt1d0
  9. 用真盘替换你的假盘 zpool replace yourNewPool /yourpool/fake/fakehda cXt1d0
  10. 等待重新同步完成。使用 监视进度zpool status yourNewPool
  11. 当它完成重新同步后,谋杀镜子 zpool destroy yourPool
  12. 重新使用第二个旧磁盘 zpool replace yourNewPool /yourpool/fake/fakehda cXt2d0

在整个过程中,您将能够在任何单个磁盘出现故障时幸免于难,而不会丢失数据。