Just For Fun

虚拟机镜像文件同步

过去几年来,我的主力工作环境一直是Linux VirtualBox虚拟机。过去一段时间,工作的ThinkPad X1笔记本,家里的MacBook Air笔记本和iMac中都装了虚拟机,不时在这三台电脑间切换. 我不愿意在这三个环境下做重复的环境搭建及软件安装工作。

春节期间这个问题变的明显,同时也有了多一些的空闲时间. 于是思考如何解决该问题.

期间的试错过程不在这里复述,最终的方案如下:

  • 买了移动硬盘盒把空闲的SSD硬盘利用了起来,在其中放置了虚拟机硬盘镜像,移动硬盘以exFAT方式格式化,以便能放置大体积的镜像文件,同时支持在Windows/Mac下进行写入.

  • 两个常用的工作电脑(Thinpad X1, iMac)在本机放置虚拟机镜像文件。一段时间的工作结束后,使用rsync同步到移动硬盘上。

rsync  --human-readable --partial --inplace --no-whole-file --progress   SRC  DEST
  • 不常用来工作的MacBook air笔记本在需要虚拟机环境时,就直接连接移动硬盘,使用移动硬盘上的镜像文件.

一些额外的信息

  • 测试发现 差量/块级 同步(rsync –no-whole-file)相对直接复制(rsync –whole-file) 没有明显的速度优势, 不过从磁盘IO监控来看,写入会少很多.

  • 虽然Mac环境能通过NTFS-3G支持NTFS文件系统的写入,但发现速度相对原生支持的exFat,速度下降明显。

  • 硬盘盒换过一次,第一次买的会出现传输过程中失去响应的问题,后面换了个更“高档”的,能够稳定运行了.

  • 在Windows下用的rsync是这个cwrsync

  • 除了rsync之外,还考虑了基于unison的方案,unison和rsync一样,支持差量同步算法,但更适合用于整个工作目录的双向同步(merge 两边的区别)