论文部分内容阅读
如今,随着计算框架不断升级,高性能计算平台中的数据访问速度日益增快,平台高并发计算能力不断提高,不断增长的业务需求对高性能计算平台的存储设备读写性能提出了更高的要求。许多数据中心陆续推广使用NVMe协议的存储介质来取代老旧的机械磁盘或基于SATA协议的固态硬盘,并且借助传统存储虚拟化的相关技术,为云平台上数以千计的虚拟客户机和广泛的云服务提供更加高效的存储读写性能。存储设备虚拟化一直是虚拟化技术和云计算管理中一个重要的课题。然而,NVMe作为一款新型的基于PCIe接口的存储协议,在软硬件的支持方面有很大的更新。如果借助传统存储虚拟化的解决方案来为NVMe设备的提供虚拟化,通常存在一些问题:一部分方案无法为用户提供令人满意的虚拟客户机性能,一部分方案缺乏设备共享的特性所以无法在多云主机情况下发挥设备的可扩展性。所以,如何在保证虚拟客户机存储读写的性能的同时充分实现NVMe物理资源设备共享,成为NVMe存储设备虚拟化研究中一个焦点。针对NVMe协议的特性和其虚拟化方案的现状,我们设计了一套基于中介直传虚拟化(mediated pass-through)的主要技术背景和技术路线,在物理机系统中设计了一套名为MDev-NVMe的中介直传NVMe设备虚拟化解决方案。其主要工作和贡献如下:·设计了一种全新的、内核态的全虚拟化解决方案,通过中介透传虚拟化方案,将一块物理NVMe设备虚拟成为一块或者多块拥有完整NVMe特性的虚拟设备,从而让虚拟机可以在客户机操作系统中使用Linux内核中原生的NVMe驱动程序对虚拟NVMe设备进行读写和管理。·设计并实现了虚拟化支持的内核模块(Kernel Module),通过PCIe设备配置模拟、管理员队列(Admin Queue)的模拟以及读写队列(I/O Queue)的映射三个主要功能,对每块NVMe设备的设备寄存器信息、管理员队列和读写队列信息分别进行管理,保证所有客户机中的NVMe设备可以取得比使用传统虚拟化方式更加出色的性能。·实现了虚拟读写队列(I/O Queue)与物理主机读写队列资源的直接映射的虚拟化管理逻辑,并设计实现了了一套主动轮询(active polling)的机制来及时处理虚拟NVMe设备队列的更新,代替了原有NVMe设备读写更新时频繁触发虚拟机退出(VM-exit)的虚拟设备工作模式,减少了虚拟化带来的额外开销,进一步提高性能。最后,通过与包括Virtio,Famz,SPDK等NVMe存储设备上虚拟化方案在读写吞吐量、时延、服务质量和设备可扩展性等指标的对比实验,我们论证得出MDev-NVMe中介直传虚拟化可以取得优于传统用户态虚拟化方法的性能。此外,在主动轮询机制的帮助下,中介直传虚拟化甚至可以让虚拟机取得超过物理机上NVMe设备的读写性能。不仅如此,中介直传虚拟化的技术功能全部都在内核态实现,在系统日常维护和使用中更加简单方便,对于高性能计算平台的维护人员和云服务的客户都更加友好。