增长/缩小 zfs RAIDZ

c2h*_*2h2 5 zfs freenas raidz

我将构建一个 freenas 服务器,想确定我可以用如此神奇和先进的 zfs 做什么。

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

问:

  1. 我是否能够在不影响/接触 RAIDZ 卷上的任何现有数据的情况下执行此操作?
  2. 拿掉一些现有的磁盘怎么样?假设从 5 个磁盘中取出 1 个磁盘,假设 raidz 上只存在非常少的数据。

not*_*ter 7

正如 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 的简单性,

也就是说,如果您能找到临时空间并负担得起停机时间,这里有一些更佳的方法来利用您的 7 个 3TB 磁盘:

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

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

真的,这完全取决于您的数据的价值。如果您在别处备份了所有内容,您就不会在意重建期间第二个磁盘出现故障的 5% 几率。但是,如果您像大多数考虑将 ZFS 用于家庭服务器的人一样得出结论,您不会(或负担不起)执行定期备份并且可能不会立即注意到/更换故障磁盘,您应该真正考虑一下热备件和镜像/RAID-Z2 而不是简单奇偶校验 (RAID-Z) 的增量成本,它只会增加几年后您仍然拥有数据的可能性。ZFS 不遗余力地使用软件来防止丢失数据(校验和、奇偶校验/冗余副本、清理等),而无需昂贵的专有控制器卡。