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

文档序号:9787113阅读:来源:国知局
客户端访问块设备的方法包括:
[0076](I)用分布式对象存储系统的管理工具模块创建块设备,然后使用虚拟机调度器的调度工具模块在属主数据库中将该块设备名称与相应客户端网络地址对应;
[0077](2)访问块设备之前,DOSS客户端访问属主数据库,查询块设备的属主信息;当客户端是块设备的属主,客户端对该块设备进行读写访问;当客户端不是块设备的属主,块设备拒绝该客户端的访问,客户端结束访问操作。
[0078]结合图3,当属主数据库已经管理了该块设备之后,就可以查询块设备属于哪一个客户端,从而在该客户端上使用该块设备。对分布式对象存储系统的块设备进行访问的方法包括:
[0079](I)取得分布式对象存储设备的块设备的属主信息:可通过在虚拟机调度器中的调度工具模块查询属主数据库,获得该块设备的属主是哪个客户端;
[0080](2)相应的DOSS客户端启动对该块设备的访问;
[0081 ] (3 )D0SS客户端先访问属主数据库,查询该DOSS客户端是否是该块设备的属主:如果是,则DOSS客户端访问块设备;如果不是,则DOSS客户端拒绝访问块设备,访问操作结束。
[0082]如上所述,在步骤(3)中,如果查询到DOSS客户端不是块设备的属主,DOSS客户端拒绝访问块设备,DOSS客户端结束访问操作。在DOSS客户端拒绝访问块设备时,可以通过使用调度工具模块强制切换块设备的属主的方式完成对块设备属主信息的更新,随后再次对块设备访问。此时因为DOSS客户端已经是块设备的属主了,就可以实现对块设备的访问。
[0083]如图4所示,强制切换块设备的属主的方法如下:
[0084](I)用户通过虚拟机调度器中的调度工具模块可以强制切换块设备的属主。通过调度工具模块设置块设备名称、写入模式、新DOSS客户端地址的方式完成块设备的新属主DOSS客户端的设置。
[0085](2)属主数据库通知原属主DOSS客户端,其已不再是这个块设备的属主,原DOSS客户端必须停止访问该块设备。
[0086](3)属主数据库检测该块设备是否处于同步状态,如果未处在同步状态,则属主数据库等待原属主客户端完成块设备的同步。如果处在同步状态,则执行步骤(4)。
[0087]如果块设备处于写回(Write Back)模式下,并且不处于同步状态,则需要等待同步所有未同步的对象文件,然后原属主DOSS客户端删除所有对应的缓存。
[0088](4)属主数据库更新其记录,对相应的块设备用新DOSS客户端地址代替原DOSS客户端地址,也即将该块设备的属主设置为新DOSS客户端,并在属主数据库中进行更新。
[0089](5)属主数据库最后返回新DOSS客户端地址,然后,用户在新DOSS客户端上启动该虚拟机,完成对块设备的访问。
[0090]如图4所示,用户可以指定块设备的新属主。原DOSS客户端收到如上所述通知后,会停止对块设备的访问。如果块设备处于写回(Write Back)模式下,原DOSS客户端会提交未同步对象文件。提交完成后,返回新的DOSS客户端的地址。此后,可以在DOSS新客户端上访问该块设备。
[0091]如图5所示,对块设备的读取操作方法包括:
[0092](I)客户端要从分布式对象存储系统提供的块设备中读取数据时,先在本地缓存中查询是否有部分数据已经缓存了,如果有缓存,执行步骤(2);对于其他未缓存的数据,执行步骤(3);
[0093](2)直接读取并向客户端返回本地缓存的数据;
[0094](3)到分布式对象存储系统中读取并向客户端返回读取的对象;
[0095](4)把这些新读取到的对象存储到本地缓存系统中。
[0096]因为只有一个客户端可以独占式读写某个块设备的数据,因此本地缓存中的对象文件和分布式对象存储系统中的对象文件是相同的。以后再次读取这些数据时,就只需要访问本地缓存,而不再需要访问分布式对象存储系统。块设备中的数据只需要到分布式对象存储系统中读取一次,可以减少I/o读写操作对分布式对象存储系统的访问次数。该方法每次读取数据时,都会优先从本地缓存中读取数据。仅在本地缓存没有对应的对象文件时,才去分布式对象存储系统中读取数据。
[0097]DOSS客户端要向分布式对象存储系统提供的块设备中写入部分数据时,有两种写入操作模式。分别为写直达(Write Through)模式和写回(Write Back)模式。
[0098]写直达模式:写入本地缓存的同时也将数据写入分布式对象存储系统。只有本地缓存和分布式对象存储系统写入操作都成功完成后,才向DOSS客户端返回写入操作成功。该模式需要同时写入本地缓存和分布式对象存储系统,需要写入多个数据的副本。因此,写操作效率低,不适用于高频率写入操作的应用场景。
[0099]写回模式:将新数据写入本地缓存时,标记该对象文件未同步。表示该数据未同步到分布式对象存储系统,然后返回。该模式只需要将数据写入到本地缓存,不需要将多个数据副本写入分布式对象存储系统,因此写操作效率高。
[0100]如图6所示,如果块设备配置为写回(WriteBack)模式,则会启动缓存同步服务模块,监听DOSS客户端写入本地对象文件时发出的未同步通知。通过缓存同步服务模块,把同步任务异步化,因此可以提尚与入操作的性能。
[0101]该写入操作的基本流程的描述如下:
[0102](I)虚拟机调度器收到属主数据库服务器返回的块设备所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
[0103](2)缓存同步服务模块监听客户端在本地缓存写入时发出的对象文件未同步的通知;
[0104](3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
[0105](4)通过第(2)步和第(3)步,缓存同步服务模块就可以监控到所有未同步的对象文件,并在内存中维护未同步对象文件列表。在运行时如果发生了写入,则DOSS客户端会随时通知缓存同步服务模块哪些对象文件未同步。缓存同步服务模块可以随时修正未同步对象文件列表;
[0106](5)等待一段预定的同步时间,或者,当写入本地缓存的对象文件已达预定大小,例如当写入本地缓存的对象文件到达一定阈值以至于某些本地缓存的对象文件需要被替换出去并且向DOSS写入,以在本地缓存写入其他对象文件时;
[0107](6)缓存同步服务模块判断未同步对象文件列表是否为空;
[0108](7)如果为空,则通知属主数据库该块设备已同步。返回到第(5)步;
[0109](8)如果不为空,则依次读取未同步对象文件并写入D0SS。完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件。随后读取未同步对象文件列表中后续项,并进行处理。全部完成后,返回到第(5)步;
[0110]通过DOSS客户端的写回模式执行写操作和缓存同步服务,可以把写入操作由同步方式转为异步方式,提高块设备的写入性能。
[0111]另外,本发明支持DOSS客户端离线恢复的方法:
[0112]在访问分布式对象存储系统时,DOSS客户端会经常性访问属主数据库,在访问属主数据库时,一旦与属主数据库断开,即停止对块设备的访问并报错。另外,在访问分布式对象存储系统时,如果一个DOSS客户端意外离线,然后再次上线。DOSS客户端的本地缓存系统会查询属主数据库。如果发现缓存的块设备的当前属主已经不是该DOSS客户端了,就清除本地缓存中相应的对象文件。
[0113]本发明的本地缓存,能够利用操作系统的页高速缓存机制,本地缓存中的热点对象文件会被页高速缓存缓存在内存中,从而获得更好的读取性能。这无需额外的设置。
[0114]除了利用内存、硬磁盘作为DOSS客户端本地缓存之外,本发明还可以使用SS
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1