对分布式IO资源全局的有效管理和使用
随着近几年网络的不断推进发展,计算机协同作业成为提高计算机整体能力的重要途径,合理的资源利用和相对应的管理方案使计算机系统中大量的IO资源减轻了系统的运行和维护成本,提高系统的可用性。同时结合当前的各种软件和硬件IO虚拟化技术,在系统软件层研究分布式IO资源访问的技术,实现客户操作系统对分布式IO资源全局的有效管理和使用。
分布式I/O 资源虚拟化的具体实现系统主要由以下几个子模块构成:
(1) 虚拟机退出和进人模块
虚拟机退出、进人模块就是保存处理器在根模式与非根模式之间转换的制些处理器状态信息。
(2) 指令解析模块
主要功能是将客户操作系统的1/0 设备访问存指令按照一定规则解析并保存在固定数据结构中。
(3)IO设备模型
主要功能是用软件完全模拟物理设备,客户操作系统可以向对物理设备访问那样访问这些虚拟设备。同时10设备模型模块还通过设备驱动完成虚拟拟设备到真实物理设备的访问过程。
客户操作系统在主节点访向设备处理器进人根模式,经过虚拟机退出模块和指令解析模块将需要模拟执行的指令保存在ioreq 结构中,然后主节点的1/0设备模型模块对这个IO指令ioreq 结构进行模拟执行,并且将指令返回的信息更新到ioreq结构中,然后虚拟机进人模块将ioreq结构中的信息更新客户操作操作系统中,处理器进人非根模式,客户操作系统继续运行。
客户操作系统在从节点发起设备访问请求,系统分成二类设备请求进行处理: 非访存类10指令,访存类1/O指令,DMA指令,下面介绍这三类指令的实现方式:
1.非访存类I/O 指令访问模式
非访存类I/O 指令访问模式采用指令传输、远程执行、结果返回这种方式实现从节点对主节点虚拟设备I/O端口的访问。 主节点接受到来自从节点的ioreq 请求,调用IO设备模型对此ioreg 进行模拟执行,将返回的数据写到ioreq结构中,同时将此ioreg 结构发回请求节点,请求节点接受到此ioreq结构后,将此ioreq 结构信息更新到客户操作系统中,然后引起虚拟机进人,此次从节点发起的非访存类1O指令就执行完成。
2. 访存类1/O 指令访问模式
因为系统中所有对于内存的访问均由DSM 统筹处理,所以访存类1/O指令执行时必须经过DSM.从节点解析此访存类I/O指令。发送DSM 请求,此请求主要是让DSM将所要访问的页面定住(pin),防止DSM 将此页面迁往其他节点,或者其他节点的程序访问此页面。当DSM 模块pin住此页面之后,就可以像主节点那样访问此MMIO内存区域访问完成之后需要unpin 此内存区域。
3.DMA 指令访问模式I/O指令
从节点发起一个IDE DMA 指令,主节点的跨节点1/0请求服务例程接收到这个DMA ioreq之后,调用主节点处理DMA ioreq 模块进行处理,然后IDE DMA 处理模块被调用执行。
IDEDMA处理模大方问I/O 设备模型,将主节点物理IDE硬盘的目标数据拷贝到I/O设备模型的虚拟IDE硬盘DMA缓冲区中,然后将此缓冲区中的数据拷贝到客户操作系统运行的虚拟内存的目标区域中,此过程需要请求DSM 的pin 和unpin操作,同时发送此DMA ioreg 发送回请求节点,更新CPU相关信息,随后引起请求节点虚拟机进人非根模式,结束此次跨节点的IDE DMA 指令操作,
与其他服务器中对分布式IO资源的管理方面相比,IO虚拟化技术实现成本低。运用IO虚拟化技术和硬件虚拟化技术可以基于多主机的IO资源在系统软件层构件全局IO空间,客户操作系统无需修改就能实现跨主机的分布式IO资源访问和管理。