我正在OmniOS上与NappIt UI一起运行ZFS。为了提高容量,我计划一个接一个地交换磁盘。但是这是不可能的,因为新磁盘有4096字节的块大小,但是池有ashift=9。
因此,我开始发送内容(zfs发送),销毁旧池,创建新池并恢复数据(zfs接收)。
我设置了一个虚拟机来测试这个进程。生成池的快照。
zfs snapshot -r zpool@backup
然后使用以下方法导出快照
zfs send -Rv zpool@backup > my_backup-file
销毁了池并创建了一个新的池,并通过
zfs receive -F -d zpool < my_backup_file
进展得很好。但没有创建旧内容的文件系统。然而,数据是存在的。当我列出目录/zpool时,表示文件系统的所有文件夹都会出现,并包含所有数据。就像在最初的状态一样。但是,在“zfs列表”中列出文件系统并没有显示任何原始文件系统。它只显示游泳池。
当然,由于缺少文件系统,它们的所有属性都丢失了(NFS共享、all、.)
在第二次尝试中,我首先在接收之前创建了文件系统,一切都很好。当然,我必须手动设置所有属性。
是否有一种方法可以发送/接收整个ZFS并使其恢复文件系统和属性?
谢谢!
洛萨
简短摘要:我尝试快照ZFS池,发送和接收它,如上面描述所示。
预期:原始池和所有包含文件系统的完整副本,包括它们的属性。
发布于 2022-11-22 20:39:44
必须在池的zfs send -R
之前对池本身和每个文件系统进行快照。假设池名为zpool
,并包含文件系统data
和media
,则流程如下:
zfs create zpool@now
zfs create zpool/data@now
zfs create zpool/media@now
zfs send -R zpool@now > <my_data_file>
然后在新的空池上
zfs receive -F -d zpool < <my_data_file>
恢复整个数据和文件系统。
请记住:如果您的一些文件系统被压缩,数据文件可能要比zfs list
中显示的和文件系统大小大得多,因为数据在发送之前是被解压缩的。为了处理这个问题,可以使用zfs send
命令的zfs send
选项。
zfs send -R -c zpool@now > <my_data_file>
它将生成一个压缩数据文件。它可以以与未压缩数据文件相同的方式接收。不需要特别的选择。
https://stackoverflow.com/questions/74530776
复制相似问题