![快照管理工具实现](https://linux22.com/image/182240/%E5%BF%AB%E7%85%A7%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7%E5%AE%9E%E7%8E%B0.png)
我想实现一个命令行工具,允许我为 linux/unix 系统拍摄文件系统快照。
我知道有多种方法可以实现快照Copy-On-Write Redirect-On-Write 日志文件架构 分割镜像
我认为这些是各种文件系统允许快照的原因。我不知道如何实现与设备的文件系统交互以创建和管理快照的工具。
我找到了这个工具http://snapper.io/documentation.html但无法理解这是如何工作的。如果有人可以分享相关文献的参考文献,也会很有帮助。
答案1
没有通用的“快照 API”。像 snapper 这样的工具具有所有可用文件系统和卷管理技术的后端,支持快照、检测使用的技术并调用适当的工具来制作快照。
例如在 btrfs 上,情况非常简单——您只需要根据挂载点检测要快照的子卷,然后运行btrfs subvolume snapshot <source> <destination>
即可获得快照。如果您在 LVM 之上有 XFS,则需要首先使用 冻结文件系统xfs_freeze
,然后使用 来创建快照lvcreate --snapshot <vg>/<lv>
。当然还有ZFS。你可以抽象地拍摄快照并使用类似的东西操作系统树例如,在升级期间创建系统文件的“快照”。
我认为没有一本关于“Linux/Unix 上的快照”的书或其他来源。如果您真的对其在低级别上的工作原理感兴趣,您可以从通用源开始Btrfs,左心室容量和ZFS。但如果 snapper 已经存在并且可以做你想要的事情,我真的不认为创建另一个工具有什么意义。