#zfs #interact #cmd-line #send #recv #fs #send-recv

zfs-cmd-api

通过支持的命令行工具与 zfs 交互

2 个不稳定版本

0.2.0 2019年11月22日
0.1.0 2019年7月10日

#1270 in 文件系统

AGPL-3.0 或更高版本

28KB
608

Zoop

管理 zfs 快照传输

计划

  • 选择要复制的快照,提供正则表达式或类似匹配机制
  • send/recv 需要大量的缓冲,send/recv 也会重叠
    • send/recv 初始时网络利用率通常为零,因为它正在检查磁盘以确定将要发送的内容
    • 尽可能确保我们有 N 个 send/recvs 同时运行
    • 在可以进行 recv 之前启动 N 个 send,以确保我们可以完全利用网络。
  • 快照清理
    • 使用时间线桶
    • 使用目标中的可用空间
    • 使用已知的已传输内容
  • 避免“不存在”的问题
    • 管理复制过程中的删除操作
  • zfs recv 到挂载的文件系统
    • 必须支持
    • 能够检查只读快照是备份系统的重要功能(特别是在本地快照有限的情况下)
    • 最好不在目标上自动挂载,以便 zfs allow 提供的权限对于 recv 足够。
      • 不清楚禁用挂载的 recv 如何与现有的挂载文件系统交互
      • 可能不允许接收会影响挂载点(例如:删除它们)的接收
  • 考虑文件系统被删除的情况

zfs 快照 & 同步管理工具

  • sanoid
  • zxfer
    • 如果已传输到目标的快照在源处后来被删除,则不高兴。需要在它同步之前在目标上删除它们。
    • 使用 zfs send -i,不使用 -I。命令
      • send-nPv
      • send-nv
      • receivereceive -F
      • send-nPv-i
      • send-i
      • list-t 文件系统,-Ho 名称-s 创建
      • list-Hr-o 名称-s 创建-t 快照
      • list-Hr-o 名称-S 创建-t 快照
      • list-t 文件系统,-Hr-o 名称
    • 完全不处理书签(仅与快照一起使用)
  • zrep
    • 复制和故障转移
    • ksh
  • z3
    • 将 zfs 快照发送到 s3
  • ZnapZend
  • zfsnap
  • pyznap
  • zrepl
    • 语言: go
    • 快照 + 复制
    • 使用 TLS 或 SSH 传输
    • 作为守护进程运行
    • 提供 "状态" 接口
    • 拉取或推送配置
    • 不支持原始/加密发送
    • 不支持发送恢复
    • 使用书签按文件系统跟踪上次同步位置

与 zfs 书签和 send 相关的各种参考

快照名称样式

  • zfs-auto-snapshot vanilla
    • <前缀>_<标签>_YYYY-MM-DD-HHmm
      • <prefix>通常是 zfs-auto-snap
      • <label>通常是以下之一 frequenthourlydailymonthlyweekly
  • zfs-auto-snapshot sort-mod
    • <前缀>_YYYY-MM-DD-HHmm_<标签>
      • <prefix>通常是 znap
      • <label>通常是以下之一 frequenthourlydailymonthlyweekly

快照策略

  • zfs-auto-snapshot
    • 按类别计数
      • 频繁 (15m): 4
      • 每小时: 24
      • 每天: 31
      • 每周: 8
      • 每月: 12
  • Mac Time Machine
    • 创建
      • 未指定 "本地" 快照的数量/速率
      • 每小时: 24
      • 每天: 31
      • 每周: 如空间允许的最多
    • 删除
      • 从旧到新
  • snapper
    • 基于时间的
      • 与 zfs-auto-snapshot 和 Time Machine 使用相同的 "每周期限制"。与 zfs-auto-snapshot 不同,它动态决定快照所属的组(它们不会被明确标记为每日等)
    • 基于启动的
    • 之前/之后

依赖关系

~2MB
~44K SLoC