一种网络感知的虚拟机镜像存储系统及读写请求处理方法

文档序号:8490059阅读:602来源:国知局
一种网络感知的虚拟机镜像存储系统及读写请求处理方法
【技术领域】
[0001] 本发明属于云计算与虚拟化技术领域,更具体地,设及一种网络感知的虚拟机镜 像存储系统及方法。
【背景技术】
[0002] 在云平台中用户可W通过租赁虚拟机的方式来使用计算、存储和网络等资源,虚 拟机镜像作为存放虚拟机数据的容器,直接影响虚拟机的读写性能,因此在云平台中,高效 的虚拟机镜像存储尤为关键。
[0003] 传统的虚拟机镜像存储分为=类:后端集中式存储,后端集中式存储+计算节点 单机缓存,后端集中式存储+计算节点间协作式缓存;后端集中式存储,通常采用专用的共 享存储服务器作为虚拟机镜像仓库,不同计算节点上的虚拟机可直接远程访问到所需的镜 像,或采用将存储服务器中的镜像文件分发到计算节点本地后再使用的方式;该种方式管 理简便,但随着数据中屯、或云平台的规模扩大,后端集中式存储很容易成为I/O瓶颈。
[0004] 后端集中式存储+计算节点单机缓存的方式,为了减少访问后端集中式存储的次 数,采用在计算节点本地磁盘中添加缓存的方式,缓存后端存储中的热点数据;该种方式比 起后端集中式存储效率大大提高,但由于单节点上的磁盘空间很有限,随着虚拟机种类的 增加,大小受限的本地缓存通常不能发挥出很好的性能。
[0005] 后端集中式存储+计算节点间协作式缓存的方式允许某一计算节点上的虚拟机 访问其他计算节点磁盘缓存中的数据,所有计算节点的缓存组成了一个大的分布式存储 池,使得虚拟机读写的缓存命中率大大提升;但由于虚拟机访问其他计算节点中的缓存时 依赖于节点间的网络,而虚拟机间通信或对外服务也依赖于该套网络,因此访问虚拟机镜 像所产生的网络流量和虚拟机通信所产生的网络流量处于竞争关系,彼此相互影响;如果 存放热点镜像数据的计算节点恰好是虚拟机间通信密集的节点,那么该节点将会成为瓶 颈,使得虚拟机镜像存储系统的性能大大降低,甚至退化到跟没有缓存时的情况一样。

【发明内容】

[0006] 针对现有技术的W上缺陷或改进需求,本发明提供了一种网络感知的虚拟机镜像 存储系统,其目的在于通过监控数据中屯、里的网络流量,使远程的镜像访问请求避开网络 拥塞的计算节点和链路,即网络负载高的节点处理较少的镜像访问请求,而网络负载较低 的节点处理较多的镜像访问请求,从而均衡数据中屯、的网络负载,由此解决现有虚拟机镜 像存储方法中存在的镜像访问与虚拟机间通信的干扰问题,进而提高虚拟机读写效率。
[0007] 为实现上述目的,按照本发明的一个方面,提供了一种网络感知的虚拟机镜像存 储系统,该存储系统基于私有缓存和公有缓存两级缓存构架,私有缓存为第一级缓存,公有 缓存为第二级缓存;系统包括私有缓存管理模块、公有缓存管理模块、网络监控模块、决策 模块和动态寻址模块;私有缓存管理模块、公有缓存管理模块、网络监控模块和动态寻址模 块位于计算节点;决策模块位于管理节点;
[000引其中,私有缓存管理模块用于管理计算节点中的私有缓存;根据虚拟机发出的读 写请求对私有缓存进行读写,完成私有缓存中的数据替换;并在私有缓存未命中的情况下 将虚拟机发出的读写请求传递给动态寻址模块;
[0009] 公有缓存模块用于管理计算节点中的公有缓存,根据动态寻址模块转发的虚拟机 发出的读写请求,对公有缓存进行读写,完成公有缓存中的数据块替换;
[0010] 网络监控模块用于监控各个计算节点上的网络负载,并将网络负载信息发送给决 策模块;
[0011] 决策模块用于根据收集到的网络负载信息制定每个计算节点的请求转发规则;
[0012] 动态寻址模块用于接收访问私有缓存未命中的读写请求,W及从其他动态寻址模 块转发过来的读写请求,并根据决策模块传来的请求转发规则将读写请求转发到相应的目 的节点中的其他动态寻址模块;
[0013] 其中,存储系统所基于的私有缓存位于计算节点本地磁盘,镜像数据在私有缓存 中W文件的方式进行存储;私有缓存中的数据仅能被一台虚拟机所访问,其内容为每台虚 拟机所独享;
[0014]当且仅当私有缓存使用空间超过配额时,执行私有缓存替换策略,将一部分数据 导入到后端存储中;任何的缓存替换策略均适用于私有缓存;配额可根据磁盘使用状况配 置;
[0015] 存储系统所基于的公有缓存位于计算节点本地磁盘,镜像数据在公有缓存中W镜 像块的方式进行存储;每个公有缓存可被任意一台虚拟机所访问,其内容为所有虚拟机所 共享;通过公有缓存可W实现镜像在各个计算节点间的存储和访问;
[0016] 公有缓存处理的请求全部为读请求,虚拟机写入的新数据不会存放于公有缓存; 公有缓存的大小可根据磁盘使用情况设定,任何的缓存替换策略均适用于公有缓存。
[0017] 按照本发明的另一方面,提供了一种基于网络感知的虚拟机镜像存储系统的读写 请求处理方法,具体如下:
[001引 (1)虚拟机向存储系统发出读写请求;
[0019] (2)判断请求类型,若为读请求则执行步骤(3),否则执行步骤(4);
[0020] (3)按照动态的虚拟机镜像寻址方式查询并读取相应数据,并将数据返回至虚拟 机;
[002U (4)在写入前,判断写请求是否命中私有缓存;若是,则将相应数据写入私有缓 存,并返回成功状态;若否,则执行写时复制(Copy-0n-Write,COW)操作,按照步骤(3)读取 请求的上下文数据。
[0022] 优选地,步骤(3)所述的动态的虚拟机镜像寻址方法具体如下:
[0023] (3. 1)根据读写请求中包含的待访问镜像编号与偏移量地址信息,查找当前节点 上的私有缓存;
[0024] (3.。判断读写请求是否命中私有缓存,若是,则返回所查询到的数据;若否,则 进入步骤化3);
[0025] (3.3)将镜像编号和偏移量信息转换为一个字符串,将该字符串定义为请求编 号;
[0026] (3. 4)将请求编号作为哈希键,采用一致性哈希算法获取该请求对应的目标节点, 根据读写请求转发规则将请求编号转发到目的节点;由于请求转发规则会随当前网络负载 状况变化而变化,因此该步骤为实现网络感知的读写请求处理的关键步骤;其中,一致性哈 希算法是用于解决在动态网络拓扑中存储和查询数据的一种哈希算法,其良好的扩展性常 用于解决负载均衡问题;
[0027] (3. 5)根据接收到的读写请求与目标节点中的请求编号转换表,将读写请求对应 的请求编号转换为目标镜像块编号;
[002引其中,目标镜像块编号是镜像块内容经过MD5哈希运算后产生的值,相同内容的 镜像块具有相同的目标镜像块编号;请求编号和目标镜像块编号是当镜像模板注册到系统 后进行计算,并填充到请求编号转换表中,寻址过程中无需进行额外计算;模板镜像从系统 中删除后需清除各个计算节点中请求编号转换表中相关内容;为了提高查询效率,可将请 求编号转换表W键值对的方式放入内存中;其中MD5哈希为一种消息摘要算法,常用于对 数据进行校验,确保数据的完整性;镜像块MD5值相同则表明镜像块的内容相同;
[0029] (3.6)根据目标镜像块编号查询该编号是否命中共有缓存;若是,返回所查询的 数据;若否,则查询模板镜像中对应的镜像块,获取所请求的数据。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1