我想将活动池的数据移动到新池,停用旧池并让新池在其位置上运行,而无需任何停机时间。我想它会是这样的:
- 创建新池
- 直播时将新池与旧池临时镜像
- 从镜像中移除旧池,留下新池
这有标准的工作流程吗?
系统操作系统:Linux、CentOS
“旧池”:5 个 1 TB 驱动器(条带化、零冗余、5 TB 可用)
“新池”:4 个 2 TB 驱动器(raid 5,冗余,6 TB 可用)
为了清楚起见:
“旧池”包含数据。
“旧池”在文件服务器中实时运行。
“新池”没有直播。然而。
目标 1:将“旧池”替换为“新池”。
目标 1a:让新的池子活起来。
目标 1b:“新池”包含最初在“旧池”上的数据。
目标 2:退役“旧池”。
要求:零停机时间。
(更新。)
您想要什么是不可能的,因为无法从包含 RAIDZ vdevs 的池中删除 vdevs。如果您忘记 RAIDZ 是可能的,无论如何这是一个更好的选择。
从 ZFS 手册页:
因此,如果您真的想要 RAIDZ,您就无法实现零停机时间的想法。您需要创建一个新池,使用
zfs send
和zfs receive
复制数据,然后切换池。如果您不使用 RAIDZ,您可以将新设备(无论是否镜像)添加到现有池中,然后移除旧设备,从而不会造成停机。
但是请注意,您一次只能删除一个设备/vdev。如果池正在使用中,删除设备可能会非常慢。删除设备时使用池也可能非常缓慢。