【问题标题】:ZFS how to make 'receive' create the filesystems?ZFS 如何让\'receive\' 创建文件系统?
【发布时间】:2022-11-28 07:38:36
【问题描述】:

我在 OmniOS 上结合 NappIt UI 运行 ZFS NAS。 为了升级容量,我打算一个接一个地更换磁盘。 但这是不可能的,因为新磁盘的块大小为 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

一切顺利。 除了没有创建旧内容的文件系统。 然而,数据在那里。当我列出 directoy /zpool all 代表文件系统的文件夹存在并包含所有数据。 就像在原始状态一样。 但是用“zfs list”列出文件系统并没有显示任何原始文件系统。 它只是显示池。

当然,由于缺少文件系统,它们的所有属性都丢失了(NFS 共享、ACL 等)

在第二次尝试中,我首先在接收之前创建了文件系统,一切都很好。 但是我当然必须手动设置所有属性。

有没有办法发送/接收整个 ZFS 并使其恢复文件系统和属性?

谢谢!

洛萨

简短的摘要: 我尝试对 ZFS 池进行快照,按照上面的描述发送和接收它。

预期:原始池和所有包含的文件系统(包括它们的属性)的完整副本。

【问题讨论】:

    标签: zfs


    【解决方案1】:

    在池的 zfs send -R 之前制作池本身和每个文件系统的快照是很重要的。 假设池名为 zpool 并包含文件系统 datamedia,过程如下:

    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 命令的 -c 选项。

    zfs send -R -c zpool@now > <my_data_file>
    

    这将生成一个压缩数据文件。它可以像未压缩的数据文件一样接收。无需特殊选项。

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2018-09-30
      • 2012-02-24
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      相关资源
      最近更新 更多