AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 675379
Accepted
Stefan Lasiewski
Stefan Lasiewski
Asked: 2015-03-14 12:42:14 +0800 CST2015-03-14 12:42:14 +0800 CST 2015-03-14 12:42:14 +0800 CST

如何验证位于备份系统上的 ZFS 快照映像?

  • 772

我正在使用 ZFS 运行 FreeBSD 主机。

假设我正在使用以下命令在远程主机上存储一系列增量 ZFS 快照图像zfs send:

zfs send -i zpool/data/foo@04hoursago zpool/data/foo@10hoursago > /nfs/backups/foo.zfs

或者我想通过 FTP 服务器发送流:

% ftp backup
ftp> put "| zfs send -i zpool/data/foo@04hoursago zpool/data/foo@10hoursago" /backups/foo.zfs

我想验证这个远程图像。我想打印此图像中的快照列表,或者选择提取校验和或其他元数据以帮助检查图像是否有效并包含我预期的快照。

如何查询图像文件并查看里面的内容?

我已经尝试zfs receive使用-nv(no-op和verbose) 标志来列出图像中的快照,但这可能不适用于实时系统:

# zfs receive -nv zpool < /nfs/backups/foo.zfs
cannot receive new filesystem stream: destination 'zpool' exists
must specify -F to overwrite it
# zfs receive -nv -F zpool < /nfs/backups/foo.zfs
cannot receive new filesystem stream: destination has snapshots (eg. zpool@09hoursago)
must destroy them to overwrite it
backup
  • 2 2 个回答
  • 4201 Views

2 个回答

  • Voted
  1. Best Answer
    Stefan Lasiewski
    2015-03-14T16:00:58+08:002015-03-14T16:00:58+08:00

    更现代的 ZFS 版本提供了一个名为的命令,该命令zstreamdump可以从使用zfs send.

    这是使用命令行的示例:

    host # zstreamdump < foo.zfs 
    BEGIN record
        ...
        toname = zpool/data/foo@04hoursago
        END checksum = 123123123123123123/123123123123123123/asdasdasdasdasd/zxczxczxczxczxc
        ...
        Total write size = 54784 (0xd600)
    

    还有一个来自 FTP 的例子:

    ftp> get /backups/foo.zfs "| zstreamdump"
    BEGIN record
     hdrtype = 1
     ...
     toname = zpool/data/foo@04hoursago
     END checksum = 123123123123123123/123123123123123123/asdasdasdasdasd/zxczxczxczxczxc
     ...
    

    这为我提供了实际快照的名称,以及该快照的校验和。当然,它不会为我提供快照中的文件列表,因为该信息存在于不同的层。

    我实际上并没有在使用创建的增量快照上尝试过这个zfs send -i,但这可能是我想要的。

    • 7
  2. user121391
    2016-04-07T08:16:33+08:002016-04-07T08:16:33+08:00

    我认为您的-nv方法的问题是在接收时没有创建中间文件系统-n,因此每次都会失败,而它在没有 no-op 标志的情况下工作(但扩展完整的文件系统可能需要很长时间)。不幸的是,大多数在线文档/博客不使用此标志,因此他们从未像您(和我)那样遇到此错误。

    还有来自Solaris Internals ZFS Best Practices Guide的警告:

    如果您将 ZFS 发送流存储在文件或磁带上,并且该文件已损坏,则将无法接收它,并且任何数据都无法恢复。但是,Nevada 版本 125 添加了 zstreamdump(1m) 命令来验证 ZFS 快照发送流。另见 RFE 6736794。

    特别是对于大型数据集,这意味着三件事:

    • 如果您的流存储在您不信任位安全性的存储中,则您几乎需要一直检查并且仍然存在单个位错误会擦除整个备份的风险。
    • 如果您的流在您信任的存储上(例如在导出为 NFS 的 ZFS 卷上),您相对节省,但您错过了zfs list -r和zfs diff.
    • 如果您有权访问本机存储(例如,通过 SSH 访问的 ZFS 卷),您可以扩展收到的文件系统并使用上述工具。同样在这种情况下,-v开关按预期工作并且可以轻松解析。
    • 2

相关问题

  • 总大小(磁盘)与总大小(媒体)

  • 社区对备份解决方案的意见

  • 无法读取不同 LTO-3 驱动器上的 LTO-3 磁带

  • 使用 TSM 备份时跳过硬链接

  • 使用 rsync 维护名称更改的目录的副本

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve