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

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

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

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

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

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

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

答案1

是的,可以通过使用假的文件备份磁盘作为冗余磁盘来实现这一点。当然,不支持,您应该有一个备份,因此首先使用旧池上的小文件进行模拟,看看一切是否按预期工作。


详情请参阅https://www.mail-archive.com/[电子邮件受保护]/msg22993.htmlhttps://www.mail-archive.com/[电子邮件受保护]/msg23023.html了解详情。如果您有其他系统(例如 FreeNAS 等),您还可以在线搜索“create raidz2 degraded”。

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

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

    mkfile -n 1000g /tmp/fakedisk1
    
  2. 使用真实磁盘和稀疏文件创建 zpool:

    zpool create -f newpool raidz2 disk1 disk2 disk3 disk4 disk5 /tmp/fakedisk1
    
  3. 立即将稀疏文件脱机,这样就没有人试图在上面写入:

    zpool offline newpool /tmp/fakedisk1
    
  4. 您的池现在将降级,但可以正常运行。将文件复制到新池(如果使用网络而不是直接连接的池,则在之间使用ssh或):netcatsendrecv

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

    zpool replace newpool /tmp/fakedisk1 disk6
    

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

请记住:在数据迁移过程中,您的运行没有安全带。如果磁盘在迁移过程中发生故障,您将丢失数据。

答案2

无法承诺第一个答案,所以我只是做出一个新答案。

当你在 Linux 上时,你不能使用mkfile.最好的选择可能是truncate.首先使用 fdisk 获取 HDD 的(准确)大小(以字节为单位):

root@OMV-NAS:~# fdisk  -l /dev/sda
Disk /dev/sda: 7,3 TiB, 8001563222016 bytes, 15628053168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes

在本例中,它是 8001563222016 字节,因此 8,001...TB。现在我们可以使用以下命令创建假文件:

truncate -s 8001563222016 /tmp/FD1.img

其余部分与原始答案完全相同。

相关内容