我想实现一个命令行工具,允许我为 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 已经存在并且可以做你想要的事情,我真的不认为创建另一个工具有什么意义。