在降级状态下创建 RAID-Z2 可能吗?

ToP*_*oPa 11 raid zfs

我正在从一台服务器转移到另一台服务器,并想随身携带一些磁盘。不幸的是,我没有足够的存储空间来备份旧服务器上的所有数据。

旧服务器 4 磁盘RAID5
将旧服务器的两个磁盘带到:
新服务器 6 磁盘RAID-Z2 (4+2)

旧服务器可以丢失一个磁盘,但不能丢失两个。

我可以将新服务器设置为RAID-Z2 (4+2)缺少一个磁盘吗?移动所有数据,然后添加最后一个磁盘?

或者有没有其他方法可以解决这个问题?

use*_*391 17

是的,可以为冗余磁盘使用假文件支持的磁盘。当然,不支持,你应该有一个备份,所以先用旧池中的小文件模拟它,看看是否一切都按预期工作。


有关详细信息,请参阅https://www.mail-archive.com/zfs-discuss@opensolaris.org/msg22993.htmlhttps://www.mail-archive.com/zfs-discuss@opensolaris.org/msg23023.html详情。如果您有其他系统,如 FreeNAS 等,您也可以在线搜索“create raidz2 降级”。

重要步骤(取自 Tomas Ögren 和 Daniel Rock 的邮件列表归档线程)是:

  1. 创建具有真实磁盘大小的稀疏文件(假设在此示例中为 1000 GB):

    mkfile -n 1000g /tmp/fakedisk1
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用真实磁盘和稀疏文件创建一个 zpool:

    zpool create -f newpool raidz2 disk1 disk2 disk3 disk4 disk5 /tmp/fakedisk1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 立即将稀疏文件脱机,以便没有人尝试在其上写入:

    zpool offline newpool /tmp/fakedisk1
    
    Run Code Online (Sandbox Code Playgroud)
  4. 您的池现在将降级,但仍在运行。将您的文件复制到新池(使用sshnetcat之间send以及recv如果使用网络而不是直接连接的池):

    zfs snapshot -r oldpool@now
    zfs send -R oldpool@now | zfs recv -Fdu newpool
    
    Run Code Online (Sandbox Code Playgroud)
  5. 销毁旧的并用现在释放的磁盘替换稀疏文件:

    zpool replace newpool /tmp/fakedisk1 disk6
    
    Run Code Online (Sandbox Code Playgroud)

再次提醒,根据您的冗余级别(如果您在 Z2 上使用两个假磁盘或在 Z3 上使用三个假磁盘):

请记住:在数据迁移期间,您的运行没有安全带。如果磁盘在迁移期间出现故障,您将丢失数据。

  • 顺便说一句,这是经过全面测试的,我只是在生产系统上进行了此操作。我正在将 RAID-Z1 迁移到更大的 RAID-Z2。我没有足够的托架和连接器来连接新旧阵列中的所有磁盘。在目标 RAID-Z2 上,我仍然保留了一个冗余磁盘(我连接了 N-1 个磁盘)。 (2认同)