我正在扩展Solaris 10 U8服务器,该服务器除了根rpool外还具有一个额外的存储池。
将特定ZFS文件系统从rpool移到该新存储池的最有效/简单/可靠的方法是什么?
可以在线完成,还是应该先关闭使用这些池的服务?
我正在扩展Solaris 10 U8服务器,该服务器除了根rpool外还具有一个额外的存储池。
将特定ZFS文件系统从rpool移到该新存储池的最有效/简单/可靠的方法是什么?
可以在线完成,还是应该先关闭使用这些池的服务?
Answers:
关于禁用服务的问题基本上取决于服务本身:
无论如何,发送ZFS文件系统可能会花费很长时间。通过使大多数时间保持在线状态,可以最大程度地减少服务的不可用性:
逐渐发送第二张快照,这将比上一次传输快得多。例如:
zfs send -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs接收-F destinationpool /文件系统
完成后,将文件系统安装点从旧数据集中移动到新数据集中。例如:
zfs set mountpoint=/application/directory.old rpool/filesystem
zfs set mountpoint = /应用程序/目录目标/文件系统
您需要确保没有绑定任何进程/application/filesystem
(例如:访问文件或将其作为当前目录)来实现该目的。
我将重复jlliagre所说的大部分内容,但还要添加一些有关后代文件系统的内容。(通常是这样,当我忘记时我会提供参考。)
如果您有子文件系统,则需要使用-r
zfs snapshot命令上的标志以及该命令上的-r
or -R
标志zfs send
。大写字母-R
将移动所有属性,快照和克隆。
要移动整个池:
zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool
然后在较短的迁移周期内同步更改,请关闭应用程序,关闭samba,nfs
zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool
如果要为迁移创建多个中间快照,请阅读有关zfs send -I
交换机的手册页。
您还会发现在管道中使用“ mbuffer”之类的工具会有一些好处。显然,如果两端大部分都可以连续流传输数据,并且没有mbuffer(或类似的东西),您会得到乒乓效应,其中一个在另一个上连续阻塞,那么ZFS发送/接收性能会大大提高。