将 ZFS 池从 RAIDZ1 迁移到 RAIDZ2

主要观点:作者将 18TB 数据从 4 盘 RAIDZ1 ZFS 池迁移到新的 RAIDZ2 池,仅使用 3 块额外 8TB 磁盘且未将数据转移到外部存储,详细介绍了迁移过程的各个步骤及遇到的问题和解决方法。
关键信息:

  • 从 RAIDZ1 到 RAIDZ2 迁移困难,ZFS 不支持在池创建后更改 RAIDZ 模式,需购买额外磁盘创建新池再迁移数据。
  • 迁移过程包括创建临时 5 盘 RAIDZ2 池(含 3 新盘和 1 旧盘及 1 稀疏文件)、迁移快照、移除假盘、替换假盘、扩展新池等步骤。
  • 迁移中需注意磁盘健康状况、稳定磁盘标识符、数据备份等问题,如使用 restic 备份媒体数据到云存储,选择 Backblaze B2 等。
    重要细节:
  • 步骤 0:初始状态为 4x8TB RAIDZ1 池,使用 18TB 容量,购买 3 块翻新 8TB 磁盘。
  • 步骤 1:从 RAIDZ1 池移除 1 盘创建 5 盘 RAIDZ2 池(3 新盘、1 旧盘、1 稀疏文件)。
  • 步骤 2:离线假盘,池仍健康。
  • 步骤 3:迁移 RAIDZ1 池的快照到 RAIDZ2 池。
  • 步骤 4:销毁旧池,留下 3 块额外磁盘。
  • 步骤 5:用旧池的 1 盘替换 RAIDZ2 池的假盘。
  • 步骤 6:用旧池的 2 盘扩展新池为 7x8TB RAIDZ2 池。
  • 更新:读者建议更安全策略,创建 5x8TB RAIDZ2 池(3 新盘、2 假盘),离线假盘后迁移数据等。
  • 原因:考虑到磁盘增加导致数据丢失风险,RAIDZ2 可容忍两盘故障。
  • 风险:迁移期间旧池单盘故障会导致数据丢失,需选择旧池中最弱盘进行迁移。
  • 实践:先在测试服务器用 USB 棒进行迁移测试,备份数据时因云存储最低计费等问题选择 Backblaze B2,更新 TrueNAS 至 24.10 及 ZFS 2.3.0,识别磁盘并找到最弱盘,创建稳定磁盘标识符,离线弱盘并擦除数据,创建假盘,创建 RAIDZ2 池,移除假盘,迁移数据(遇到数据集缺失等问题),恢复中断传输,最终完成迁移并更换假盘、吸收剩余磁盘,销毁旧池,得到 7x8TB 健康 RAIDZ2 池,还可强制数据重条带或匹配 TrueNAS 功能配置。
阅读 31
0 条评论