扩大/缩小 zfs RAIDZ

扩大/缩小 zfs RAIDZ

我要搭建一个freenas服务器,想确认一下用如此神奇、先进的zfs能做什么。

如果我在 RAIDZ 中有 5 * 3TB 磁盘(总共 12TB 存储空间),现在我正尝试向这个现有阵列添加另外 2 * 3TB 磁盘。

问:

  1. 我是否可以在不影响/触及 RAIDZ 卷上任何现有数据的情况下做到这一点?
  2. 那么拿走一些现有的磁盘怎么样?假设 raidz 上只存在很小一部分数据,那么就拿走 5 个磁盘中的 1 个磁盘。

答案1

正如 ewwhite 所说,ZFS 目前无法缩小池。如果需要这样做,您必须备份到另一个存储介质(另一个池、磁带、SAN 等),创建一个新池并恢复。至于扩展,有多种方法可以扩大您的 ZFS 5x3TB raidz 池:

  1. 添加一个镜像 VDEV(磁盘对)池跨越两个 VDEV(12TB raidz 和 3TB 镜像)。
  2. 添加一个 raidz VDEV(3-8 个磁盘)池跨越两个 VDEV(12TB raidz 和 12TB raidz)。
  3. 在单个 VDEV(16TB raidz)上升级每个磁盘池(每次将 5x3TB 磁盘升级到 5x4TB 磁盘)。

混合多种大小或类型的 VDEV(raidz + 镜像)在性能方面并不理想,并且提供最少冗余 VDEV(raidz)的有效冗余。在家里或紧急情况下,您可能不在乎,但如果可能的话,应该避免这样做。

但实际上,你不应该升级这个池。您不应该依赖 RAID-Z,而应该切换到镜像或 RAID-Z2。与 RAID-Z 相比,您需要一个额外的磁盘(RAID-Z2)或两个(镜像)才能达到相同的可用容量,但企业不再使用 RAID5 是有原因的。如果单个磁盘发生故障,即使有热备用磁盘可用,也需要很长时间才能从奇偶校验中重新创建丢失的磁盘。可能要 24-48 小时或更长时间。如果在此时间段内第二个磁盘发生故障(这并非不可能,因为您正在尽可能努力地处理剩余的磁盘,尽可能快地读取每个磁盘上的每个字节),您将失去一切。使用 RAID-Z2(想想 RAID6),两个磁盘可以发生故障而不会有数据丢失的风险。考虑镜像 VDEV 的简单性,但如果成本/GB 是您的主要考虑因素(以性能和可扩展性为代价),双奇偶校验 RAID-Z2 确实要安全得多。

也就是说,如果您可以找到临时空间并且可以承受停机时间,那么这里有一些更优化的方式来利用您的七个 3TB 磁盘:

  1. 6x3TB 镜像 + 热备用 (9TB 可用,3 个 vdevs)
  2. 6x3TB raidz2 组 + 热备用 (12TB 可用,1 vdev)
  3. 7x3TB raidz2 组(15TB 可用,1 vdev)

如果您一开始就选择镜像而不是 raidz,那么最初的五个磁盘将产生 4x3TB 镜像 + 热备用(6TB 可用,2 个 vdev),您可以根据需要添加磁盘对。此外,如果您好奇,写入性能与池中的 VDEV 数量直接相关。

实际上,这完全取决于您的数据有多宝贵。如果您已将所有内容备份到其他地方,那么您就不会在意重建过程中第二个磁盘发生故障的 5% 概率。但是,如果您像大多数考虑将 ZFS 用于家庭服务器的人一样,得出结论,您不会(或负担不起)执行定期备份,并且可能不会立即注意到/更换故障磁盘,那么您真的应该考虑热备用和镜像/RAID-Z2 而不是简单奇偶校验(RAID-Z)的增量成本,这只会增加您在几年后仍能拥有数据的几率。ZFS 不遗余力地使用软件来防止丢失数据(校验和、奇偶校验/冗余副本、清理等),而无需昂贵的专有控制卡。您至少可以给 ZFS 提供防止磁盘故障/故障的方法:不仅仅是所需的最少磁盘数量。

答案2

您不能通过添加磁盘来扩展 ZFS 中的 RAIDZ 卷,也不能通过删除磁盘来缩小 RAIDZ 卷。

但是,您可以跨多个 RAIDZ vdev 进行条带化。您还可以将单个磁盘换成更大的磁盘,并以此方式扩充池。

另请参阅:在哪里可以找到 ZFS 的介绍文档?

相关内容