认知 | Blockdiff:我们如何为 VM 磁盘快照构建自己的文件格式

这是关于在虚拟机环境中实现快速磁盘快照和增量备份的技术文章,主要内容如下:

  • 背景:作者因虚拟机启动时间慢而进入系统工程领域,开发了名为otterlink的虚拟机管理程序,用于研究和生产工作负载。选择虚拟机而非Docker是为了实现安全隔离和满足开发环境需求。
  • 性能提升otterlink将虚拟机启动时间缩短约10倍,将EC2的磁盘快照时间从30多分钟缩短至几秒,实现了200倍的速度提升,通过构建自己的文件格式blockdiff实现即时块级差异。
  • 设计目标:实现磁盘快照时要满足紧凑、即时、零开销和简单的目标,避免直接计算二进制差异、使用OverlayFS、ZFS等现有解决方案的限制。
  • Linux文件系统概念:解释了稀疏文件和写时复制(CoW)两个Linux概念,以及虚拟机磁盘在文件系统中的处理方式。
  • 序列化差异:通过文件扩展映射(FIEMAP)获取文件的逻辑和物理块映射,定义.bdiff文件格式来序列化差异,使用blockdiff工具创建和应用快照,操作仅涉及文件元数据,速度快。
  • Bonus:紧凑稀疏文件:在构建otterlink时面临的挑战是将稀疏文件转换为紧凑文件,qemu-img convert比tar更快地实现了这一目标,而blockdiff在各种大小的文件上都非常快。
  • 开放问题:提出了在虚拟机运行时回滚磁盘、在管理程序中实现智能缓存和以增量和空间高效的方式进行内存快照等问题,欢迎感兴趣的人联系或申请参与研究。
阅读 19
0 条评论