论文部分内容阅读
在桌面虚拟化环境中,虚拟机镜像文件经常采用集中的方式存储。当虚拟机大量并发启动时,由于网络拥塞或者物理机的磁盘I/O能力不足,经常导致启动风暴的发生,即虚拟机镜像文件从存储设备传输到主机内存时间过长导致虚拟机启动过慢的现象。现有的解决方案或基于云计算环境中的特定应用而提出,不具有通用性和扩展性;或基于硬件扩容和垄断技术实现,需要高昂的成本。 基于最小数据集的虚拟机快速启动系统(MDQS),利用虚拟机最小数据集的镜像组织方式来缓解启动风暴的形成,并且具有扩展性、通用性和廉价等特点。对于从差分镜像启动的虚拟机(差分镜像由同一个模板镜像生成),启动过程中所需要读取的数据绝大多数来自于模板镜像,同时启动多个虚拟机时就需要重复到磁盘中读取这部分数据。MDQS系统通过修改Xen平台中的blktap2模块,在读取VHD格式的镜像时,对差分镜像进行解析,判断出需要从模板镜像读取的数据并抽取出来,形成最小数据集的镜像组织方式,让多虚拟机进行共享。MDQS系统利用改进的基数树作为最小数据集的逻辑结构,并通过特权域中的缓存管理器对最小数据集进行管理,虚拟机启动时需要读取这部分数据时,不再需要到磁盘镜像中读取,而是直接利用共享内存的方式读取,从而节省磁盘I/O操作,并减少从磁盘读取的数据量。 测试结果表明,同时启动15台由VHD镜像生成的虚拟机,MDQS系统有超过95%的最小数据集缓存命中率,相比于未优化的Xen虚拟机管理器,磁盘的I/O负载大幅度降低,每台虚拟机读取的数据量的平均值减少约110MB,同时虚拟机的启动时间节省了超过30%的时间。由此可以看出,MDQS系统的磁盘负载和虚拟机的启动时间都大幅度减少,真正缓解了虚拟机启动风暴的形成。