一种多虚拟机访问分布式对象存储系统的方法

文档序号:9787113阅读:549来源:国知局
一种多虚拟机访问分布式对象存储系统的方法
【技术领域】
[0001 ]本发明属于计算机存储技术领域,具体涉及在每个虚拟机构建本地缓存机制,减少访问分布式对象存储系统的次数,降低存储网络的访问带宽,提高访问效率。
【背景技术】
[0002]云计算环境多虚拟机的数据访问要求分布式对象存储系统(Distributed ObjectStorage SyStem:D0SS)提供高吞吐率和快速响应时间。分布式对象存储系统目前已取得了很大的发展O分布式对象存储系统,以Ceph,Sheepdog ,GlusterFS,Lustre等为代表,它们使用多个网络节点提供分布式的存储能力,可实现海量数据存储。存储性能随着存储节点的增加,能够有接近线性的增长。然而,当前的分布式对象存储系统存在如下缺陷:
[0003](I)虽然其总带宽会随着存储节点的增加而增加,但对于单个DOSS客户端来说,总带宽受制于客户端的网络带宽。
[0004](2)分布式对象存储系统的I/O数据都通过网络来传输,使得传输网络的带宽负载过高。如果多个客户端软件访问DOSS时,无法得到足够的网络带宽、无法支持足够的1PS(每秒进行读写(I/O)操作的次数)。
[0005](3)分布式对象存储系统DOSS保留数据的多个副本,写入/更新操作时需要写入/更新多份才能保证DOSS的存储一致性和数据可靠性,这降低了 DOSS的写入性能。
[0006]对于多虚拟机云计算系统或分布式计算系统,虚拟机使用分布式对象存储系统提供的块设备作为虚拟磁盘。在虚拟化管理平台上有多台虚拟化主机。虚拟化主机管理几十台甚至上百台虚拟机,每一台虚拟机是分布式对象存储系统DOSS的一个客户端,各虚拟机共享网络访问DOSSο假定N个虚拟机同时访问总带宽为W bps分布式对象存储系统DOSS,对于某一个虚拟机而言仅分配到W/N bps。因此,虚拟化主机管理下的某台虚拟机某次访问分布式对象存储系统的带宽受到限制,无法给用户提供快速的响应和访问带宽。
[0007]此外,当前分布式对象存储系统DOSS由于需要写多个数据副本,对存储访问的响应时间较长,导致虚拟机认为分布式对象存储系统DOSS的硬件系统或网络拥塞等原因无法提供足够的服务质量,造成虚拟机的用户体验较差。
[0008]因此,针对当前分布式对象存储系统DOSS无法满足多虚拟机访问块设备的访问带宽和读写效率要求,本发明为各个虚拟机增加了本地缓存区和块设备属主数据库模块,提出了一种多虚拟机访问分布式对象存储系统的方法,可以有效提高虚拟机独占访问分布式对象存储系统导出的一个块设备时的传输带宽和响应速度。
[0009]本发明提出的本地缓存和分布式对象存储系统内的缓存机制有本质的区别。本发明提出的本地缓存,是在分布式对象存储系统之外的DOSS客户端上实现的,不需要增加硬件存储设备,可以有效降低访问分布式存储系统的次数,对多虚拟机访问可以有效减少存储网络带宽的压力;而常见的缓存机制是构建在分布式对象存储系统内部的。在分布式对象存储系统DOSS内部构建缓存区,虽然也能够提高对DOSS的读写性能,但是不能减少DOSS客户端软件和分布式对象存储系统DOSS之间的通信量,会耗费大量的网络带宽;而且需要在每一个存储节点上都添加缓存设备,增加了分布式对象存储系统的建设成本,对热点数据读写的加速效果有限。
[0010]对于本发明的两种写入模式,是指DOSS客户端向分布式对象存储系统导出的块设备写入数据的方式。本发明的写入模式发生在DOSS客户端和本地缓存级;而常见的分布式对象存储系统的写入模式则发生在DOSS的存储节点上。本发明所指的块设备写入模式与分布式对象存储系统内的写入模式不是一个层面的。
[0011]本发明的技术方案可以适用于当前典型的分布式对象存储系统,如Ceph,Sheepdog, GlusterFS, Lustre等。本发明的技术方案是非侵入式的。本发明只是修改了分布式对象存储系统的DOSS客户端的实现,不改变其使用接口。增加了调度工具模块,用于分布式对象存储系统的用户(如,虚拟机调度器)找到块设备对应的DOSS客户端。用户使用本技术方案时,只需要调用调度工具模块找到对应的DOSS客户端地址即可。只需要修改几行代码即可。

【发明内容】

[0012]本发明通过为各虚拟机开辟本地缓存区以缓存对象文件来加速访问分布式对象存储系统D0SS。该方法可以减少访问分布式对象存储系统的次数,提高虚拟机访问分布式对象存储系统的I/O传输带宽和响应速度。
[0013]为实现本发明之目的,采用以下技术方案予以实现:
[0014]一种访问分布式对象存储系统的方法,包括:
[0015]读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再到分布式对象存储系统中读取对象文件,并保存到客户端本地缓存系统中,如果在本地缓存中找到对象文件,则不到分布式对象存储系统读取对象文件而是直接在本地缓存中读取该对象文件;
[0016]和/或:
[0017]写入操作:在向分布式对象存储系统写入对象文件数据时,先将对象文件数据写入本地缓存,写入完毕后标记该对象文件未同步并返回写入成功,由缓存同步服务模块随后将该写入本地缓存的对象文件数据写入分布式对象存储系统。
[0018]所述的方法,优选的还包括:
[0019]在分布式对象存储系统的客户端上,分配一个存储空间作为本地缓存来使用,该存储空间位于客户端内存、或位于客户端硬磁盘、或位于客户端固态硬盘。
[0020]所述的方法,优选的还包括:
[0021]为分布式对象存储系统的每一个块设备设置属主,该块设备的属主信息存放在属主数据库中,客户端要访问块设备时,首先要访问属主数据库,查看自己是否是该块设备的属主,如果是,则能够访问该块设备;如果不是,则不能访问该块设备。
[0022]所述的方法,优选的:在客户端不是要访问的块设备的属主的情况下,如果客户端需要继续访问该块设备,则需要通过调度工具模块将该客户端设置为所述块设备的属主。
[0023]所述的方法,优选的所述写入操作具体为:
[0024](I)接收属主数据库服务器返回的对象文件所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
[0025](2)缓存同步服务模块监听属主数据库服务器返回的DOSS客户端在本地缓存写入时发出的对象文件是否未同步的通知;
[0026](3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
[0027](4)通过第(2)步和第(3)步,缓存同步服务模块监控到所有未同步的对象文件,
[0028]并在内存中维护未同步对象文件列表;如果发生了本地缓存写入,则随时通知缓存同步服务模块哪些对象文件未同步,缓存同步服务模块修改未同步对象文件列表;
[0029](5)等待一段预定的同步时间,或者当写入本地缓存的对象文件已达预定大小时,缓存同步服务模块判断未同步对象文件列表是否为空;
[0030](6)如果为空,则通知属主数据库该块设备已同步,返回到第(5)步;
[0031](7)如果不为空,则依次读取未同步对象文件并写入分布式对象存储系统,完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件,随后读取未同步对象文件列表中后续项,并进行处理,全部完成后,返回到第(5)步。
[0032]—种访问分布式对象存储系统的装置,包括:客户端,其中:
[0033]客户端用于访问分布式对象存储系统,进行以下的操作;
[0034]客户端用于进行读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1