我正在从一台服务器转移到另一台服务器,并想随身携带一些磁盘。不幸的是,我没有足够的存储空间来备份旧服务器上的所有数据。
旧服务器 4 磁盘RAID5
将旧服务器的两个磁盘带到:
新服务器 6 磁盘RAID-Z2 (4+2)
旧服务器可以丢失一个磁盘,但不能丢失两个。
我可以将新服务器设置为RAID-Z2 (4+2)
缺少一个磁盘吗?移动所有数据,然后添加最后一个磁盘?
或者有没有其他方法可以解决这个问题?
use*_*391 17
是的,可以为冗余磁盘使用假文件支持的磁盘。当然,不支持,你应该有一个备份,所以先用旧池中的小文件模拟它,看看是否一切都按预期工作。
有关详细信息,请参阅https://www.mail-archive.com/zfs-discuss@opensolaris.org/msg22993.html和https://www.mail-archive.com/zfs-discuss@opensolaris.org/msg23023.html详情。如果您有其他系统,如 FreeNAS 等,您也可以在线搜索“create raidz2 降级”。
重要步骤(取自 Tomas Ögren 和 Daniel Rock 的邮件列表归档线程)是:
创建具有真实磁盘大小的稀疏文件(假设在此示例中为 1000 GB):
mkfile -n 1000g /tmp/fakedisk1
Run Code Online (Sandbox Code Playgroud)使用真实磁盘和稀疏文件创建一个 zpool:
zpool create -f newpool raidz2 disk1 disk2 disk3 disk4 disk5 /tmp/fakedisk1
Run Code Online (Sandbox Code Playgroud)立即将稀疏文件脱机,以便没有人尝试在其上写入:
zpool offline newpool /tmp/fakedisk1
Run Code Online (Sandbox Code Playgroud)您的池现在将降级,但仍在运行。将您的文件复制到新池(使用ssh
或netcat
之间send
以及recv
如果使用网络而不是直接连接的池):
zfs snapshot -r oldpool@now
zfs send -R oldpool@now | zfs recv -Fdu newpool
Run Code Online (Sandbox Code Playgroud)销毁旧的并用现在释放的磁盘替换稀疏文件:
zpool replace newpool /tmp/fakedisk1 disk6
Run Code Online (Sandbox Code Playgroud)再次提醒,根据您的冗余级别(如果您在 Z2 上使用两个假磁盘或在 Z3 上使用三个假磁盘):
请记住:在数据迁移期间,您的运行没有安全带。如果磁盘在迁移期间出现故障,您将丢失数据。