我正从一台服务器迁移到另一台服务器,并希望随身携带一些磁盘。不幸的是,我没有足够的存储空间来备份旧服务器上的所有数据。
旧服务器 4 磁盘RAID5
将旧服务器中的两个磁盘移至:
新服务器 6 磁盘RAID-Z2 (4+2)
旧服务器可以承受丢失一个磁盘,但不能承受丢失两个磁盘。
我可以将新服务器设置为RAID-Z2 (4+2)
缺少一个磁盘吗?移动所有数据然后添加最后一个磁盘?
或者还有其他方法可以解决这个问题吗?
答案1
是的,可以通过使用假的文件备份磁盘作为冗余磁盘来实现这一点。当然,不支持,您应该有一个备份,因此首先使用旧池上的小文件进行模拟,看看一切是否按预期工作。
详情请参阅https://www.mail-archive.com/[电子邮件受保护]/msg22993.html和https://www.mail-archive.com/[电子邮件受保护]/msg23023.html了解详情。如果您有其他系统(例如 FreeNAS 等),您还可以在线搜索“create raidz2 degraded”。
重要的步骤(摘自 Tomas Ögren 和 Daniel Rock 的邮件列表存档线程)是:
创建具有实际磁盘大小的稀疏文件(在本例中假设为 1000 GB):
mkfile -n 1000g /tmp/fakedisk1
使用真实磁盘和稀疏文件创建 zpool:
zpool create -f newpool raidz2 disk1 disk2 disk3 disk4 disk5 /tmp/fakedisk1
立即将稀疏文件脱机,这样就没有人试图在上面写入:
zpool offline newpool /tmp/fakedisk1
您的池现在将降级,但可以正常运行。将文件复制到新池(如果使用网络而不是直接连接的池,则在之间使用
ssh
或):netcat
send
recv
zfs snapshot -r oldpool@now zfs send -R oldpool@now | zfs recv -Fdu newpool
销毁旧的并用现在释放的磁盘替换稀疏文件:
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
其余部分与原始答案完全相同。