论文部分内容阅读
进程的在线迁移是分布式集群系统中的关键技术,一直以来是国内外活跃的研究课题。然而之前研究人员主要关注无用户交互的进程,如服务器守护进程,而本文的研究重点是GUI应用的在线迁移。 关于GUI进程的在线迁移在国内外研究中很少提及,究其原因,主要有两点。其一,难以实现。GUI应用进程的在线迁移,需要处理图形接口协议。这类协议都是有状态协议,不易迁移协议状态。其二,GUI应用一般都是个人的桌面应用,在线迁移显得并不是那么的迫切。 然而,近年来GUI应用在线迁移无论解决方案还是需求都出现了转机。一方面,很多新的技术层出不穷,给探索的道路扫清了诸多障碍。另一方面,在个人拥有多台PC娱乐或办公的今天,能够在线迁移GUI应用显然会提升用户体验。在上述的背景下,本文开展了GUI应用在线迁移方案的研究。 本文使用了最新的图形显示协议Wayland。相比X11而言,Wayland协议更加简单,容易解析处理。另外,渲染数据是图形接口协议当中最难记录保存和还原的状态,而Wayland协议规定软件图形渲染的工作由GUI客户端负责。即这个状态保存在GUI进程空间,不用特殊处理,随进程内存一起迁移即可。这无疑给GUI应用迁移带来了极大的便利。 此外,本文使用最新的Docker容器技术封装Wayland应用,保证运行时环境的一致性。Docker支持将应用打包,封装成一个完整的应用以及应用所需的完整运行时环境。使用Docker容器进行GUI应用在线迁移,当迁移发生时,整个容器都会被迁移至目标机器继续运行,确保了运行时环境的一致性,比普通进程更具可行性。 本文设计并初步实现了GUI应用在线迁移的系统。在Wayland应用和Wayland显示服务器之间开发了Monitor模块,负责实时记录客户端的状态信息。迁移发生时,Monitor调用CRIU工具去设置检查点,保存镜像文件和Wayland状态文件。这些文件发送到目标主机后,再由Monitor模块调用CRIU来还原Wayland应用。文章最后设计了相关的实验证明了系统的可行性。