CN105549905A - 一种多虚拟机访问分布式对象存储系统的方法 - Google Patents
一种多虚拟机访问分布式对象存储系统的方法 Download PDFInfo
- Publication number
- CN105549905A CN105549905A CN201510904241.3A CN201510904241A CN105549905A CN 105549905 A CN105549905 A CN 105549905A CN 201510904241 A CN201510904241 A CN 201510904241A CN 105549905 A CN105549905 A CN 105549905A
- Authority
- CN
- China
- Prior art keywords
- client
- storage system
- obj ect
- owner
- local cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及在分布式对象存储系统架构之上,通过在客户端内设计本地缓存的方式访问分布式对象存储系统。包括:读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再到分布式对象存储系统中读取对象文件,并保存到客户端本地缓存系统中;如果在缓存中找到对象文件,则不到分布式对象存储系统读取对象文件。写入操作:在向分布式对象存储系统写入对象文件数据时,先将对象文件数据写入本地缓存,写入完毕后标记该对象文件未同步并返回,随后由缓存同步服务模块将该写入本地缓存的对象文件数据写入分布式对象存储系统。通过本发明,可以减少对分布式对象存储系统的访问次数,提高虚拟机访问文件系统的I/O吞吐量、降低访问请求的响应时间。
Description
技术领域
本发明属于计算机存储技术领域,具体涉及在每个虚拟机构建本地缓存机制,减少访问分布式对象存储系统的次数,降低存储网络的访问带宽,提高访问效率。
背景技术
云计算环境多虚拟机的数据访问要求分布式对象存储系统(DistributedObjectStorageSystem:DOSS)提供高吞吐率和快速响应时间。分布式对象存储系统目前已取得了很大的发展。分布式对象存储系统,以Ceph,Sheepdog,GlusterFS,Lustre等为代表,它们使用多个网络节点提供分布式的存储能力,可实现海量数据存储。存储性能随着存储节点的增加,能够有接近线性的增长。然而,当前的分布式对象存储系统存在如下缺陷:
(1)虽然其总带宽会随着存储节点的增加而增加,但对于单个DOSS客户端来说,总带宽受制于客户端的网络带宽。
(2)分布式对象存储系统的I/O数据都通过网络来传输,使得传输网络的带宽负载过高。如果多个客户端软件访问DOSS时,无法得到足够的网络带宽、无法支持足够的IOPS(每秒进行读写(I/O)操作的次数)。
(3)分布式对象存储系统DOSS保留数据的多个副本,写入/更新操作时需要写入/更新多份才能保证DOSS的存储一致性和数据可靠性,这降低了DOSS的写入性能。
对于多虚拟机云计算系统或分布式计算系统,虚拟机使用分布式对象存储系统提供的块设备作为虚拟磁盘。在虚拟化管理平台上有多台虚拟化主机。虚拟化主机管理几十台甚至上百台虚拟机,每一台虚拟机是分布式对象存储系统DOSS的一个客户端,各虚拟机共享网络访问DOSS。假定N个虚拟机同时访问总带宽为Wbps分布式对象存储系统DOSS,对于某一个虚拟机而言仅分配到W/Nbps。因此,虚拟化主机管理下的某台虚拟机某次访问分布式对象存储系统的带宽受到限制,无法给用户提供快速的响应和访问带宽。
此外,当前分布式对象存储系统DOSS由于需要写多个数据副本,对存储访问的响应时间较长,导致虚拟机认为分布式对象存储系统DOSS的硬件系统或网络拥塞等原因无法提供足够的服务质量,造成虚拟机的用户体验较差。
因此,针对当前分布式对象存储系统DOSS无法满足多虚拟机访问块设备的访问带宽和读写效率要求,本发明为各个虚拟机增加了本地缓存区和块设备属主数据库模块,提出了一种多虚拟机访问分布式对象存储系统的方法,可以有效提高虚拟机独占访问分布式对象存储系统导出的一个块设备时的传输带宽和响应速度。
本发明提出的本地缓存和分布式对象存储系统内的缓存机制有本质的区别。本发明提出的本地缓存,是在分布式对象存储系统之外的DOSS客户端上实现的,不需要增加硬件存储设备,可以有效降低访问分布式存储系统的次数,对多虚拟机访问可以有效减少存储网络带宽的压力;而常见的缓存机制是构建在分布式对象存储系统内部的。在分布式对象存储系统DOSS内部构建缓存区,虽然也能够提高对DOSS的读写性能,但是不能减少DOSS客户端软件和分布式对象存储系统DOSS之间的通信量,会耗费大量的网络带宽;而且需要在每一个存储节点上都添加缓存设备,增加了分布式对象存储系统的建设成本,对热点数据读写的加速效果有限。
对于本发明的两种写入模式,是指DOSS客户端向分布式对象存储系统导出的块设备写入数据的方式。本发明的写入模式发生在DOSS客户端和本地缓存级;而常见的分布式对象存储系统的写入模式则发生在DOSS的存储节点上。本发明所指的块设备写入模式与分布式对象存储系统内的写入模式不是一个层面的。
本发明的技术方案可以适用于当前典型的分布式对象存储系统,如Ceph,Sheepdog,GlusterFS,Lustre等。本发明的技术方案是非侵入式的。本发明只是修改了分布式对象存储系统的DOSS客户端的实现,不改变其使用接口。增加了调度工具模块,用于分布式对象存储系统的用户(如,虚拟机调度器)找到块设备对应的DOSS客户端。用户使用本技术方案时,只需要调用调度工具模块找到对应的DOSS客户端地址即可。只需要修改几行代码即可。
发明内容
本发明通过为各虚拟机开辟本地缓存区以缓存对象文件来加速访问分布式对象存储系统DOSS。该方法可以减少访问分布式对象存储系统的次数,提高虚拟机访问分布式对象存储系统的I/O传输带宽和响应速度。
为实现本发明之目的,采用以下技术方案予以实现:
一种访问分布式对象存储系统的方法,包括:
读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再到分布式对象存储系统中读取对象文件,并保存到客户端本地缓存系统中,如果在本地缓存中找到对象文件,则不到分布式对象存储系统读取对象文件而是直接在本地缓存中读取该对象文件;
和/或:
写入操作:在向分布式对象存储系统写入对象文件数据时,先将对象文件数据写入本地缓存,写入完毕后标记该对象文件未同步并返回写入成功,由缓存同步服务模块随后将该写入本地缓存的对象文件数据写入分布式对象存储系统。
所述的方法,优选的还包括:
在分布式对象存储系统的客户端上,分配一个存储空间作为本地缓存来使用,该存储空间位于客户端内存、或位于客户端硬磁盘、或位于客户端固态硬盘。
所述的方法,优选的还包括:
为分布式对象存储系统的每一个块设备设置属主,该块设备的属主信息存放在属主数据库中,客户端要访问块设备时,首先要访问属主数据库,查看自己是否是该块设备的属主,如果是,则能够访问该块设备;如果不是,则不能访问该块设备。
所述的方法,优选的:在客户端不是要访问的块设备的属主的情况下,如果客户端需要继续访问该块设备,则需要通过调度工具模块将该客户端设置为所述块设备的属主。
所述的方法,优选的所述写入操作具体为:
(1)接收属主数据库服务器返回的对象文件所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
(2)缓存同步服务模块监听属主数据库服务器返回的DOSS客户端在本地缓存写入时发出的对象文件是否未同步的通知;
(3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
(4)通过第(2)步和第(3)步,缓存同步服务模块监控到所有未同步的对象文件,
并在内存中维护未同步对象文件列表;如果发生了本地缓存写入,则随时通知缓存同步服务模块哪些对象文件未同步,缓存同步服务模块修改未同步对象文件列表;
(5)等待一段预定的同步时间,或者当写入本地缓存的对象文件已达预定大小时,缓存同步服务模块判断未同步对象文件列表是否为空;
(6)如果为空,则通知属主数据库该块设备已同步,返回到第(5)步;
(7)如果不为空,则依次读取未同步对象文件并写入分布式对象存储系统,完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件,随后读取未同步对象文件列表中后续项,并进行处理,全部完成后,返回到第(5)步。
一种访问分布式对象存储系统的装置,包括:客户端,其中:
客户端用于访问分布式对象存储系统,进行以下的操作;
客户端用于进行读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再到分布式对象存储系统中读取对象文件,并保存到客户端本地缓存中,如果在缓存中找到对象文件,则不到分布式对象存储系统读取对象文件;
和/或:
客户端用于写入操作:在向分布式对象存储系统写入对象文件数据时,先将对象文件数据写入本地缓存,写入完毕后标记该对象文件未同步,由客户端的缓存同步服务模块将该写入本地缓存的对象文件数据写入分布式对象存储系统。
所述的装置,优选的:
客户端包括本地缓存,该本地缓存是在分布式对象存储系统的客户端上分配的一个存储空间,该存储空间位于客户端内存、或位于客户端硬磁盘、或位于客户端固态硬盘。
所述的装置,优选的还包括:属主数据库;
该属主数据库用于为分布式对象存储系统的每一个块设备设置属主,块设备的属主信息存放在属主数据库中,客户端要访问块设备时,首先要访问属主数据库,查看自己是否是该块设备的属主,如果是,则访问该块设备;如果不是,则不能访问该块设备。
所述的装置,优选的还包括:调度工具模块;
在客户端不是要访问的块设备的属主的情况下,如果客户端需要继续访问该块设备,该调度工具模块用于将该客户端设置为所述块设备的属主。
所述的装置,优选的:该装置还包括虚拟机调度器、属主数据库服务器;客户端包括缓存同步服务模块;
其中客户端按如下方式执行写入操作:
(1)客户端接收属主数据库服务器返回的对象文件所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
(2)缓存同步服务模块监听客户端在本地缓存写入时发出的对象文件未同步的通知;
(3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
(4)缓存同步服务模块通过上述(2)和(3)监控到所有未同步的对象文件,并在内存中维护未同步对象文件列表;如果发生了本地缓存写入,则随时通知缓存同步服务模块哪些对象文件未同步,缓存同步服务模块修改未同步对象文件列表;
(5)等待一段预定的同步时间,或者当写入本地缓存的对象文件已达预定大小时,缓存同步服务模块判断未同步对象文件列表是否为空;
(6)如果为空,则客户端通知属主数据库服务器该块设备已同步,返回到(5)继续等待;
(7)如果不为空,则缓存同步服务模块依次读取未同步对象文件并将该对象文件写入分布式对象存储系统,完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件,随后读取未同步对象文件列表中后续项,并进行处理,全部完成后,返回到(5)继续等待。
附图说明
图1为本发明存储访问装置的系统架构示意图;
图2为本发明DOSS客户端访问块设备的流程图;
图3为本发明访问分布式对象存储系统的逻辑示意图;
图4为本发明强制切换块设备的属主的方法示意图;
图5为本发明读操作及写入本地缓存的流程图;
图6为本发明同步本地缓存的流程图。
具体实施方式
为了便于理解本发明,对本发明涉及的特定术语作如下说明:
1.分布式对象存储系统(DOSS):数据存储在多个节点上;数据按对象进行管理;每个对象典型地包括数据、元数据和全局唯一的标识符。每个对象是一个固定大小的小文件。
2.块设备:指DOSS中存取信息以“块”为单位的I/O设备,块大小确定且每个块都有自己的地址。
3.对象文件:指DOSS实际存储数据的固定大小的小文件。
所述块设备是分布式对象存储系统导出的逻辑上的文件。可以很大,一般是GB级别到TB级别。对象文件是分布式对象存储系统中实际存储数据的文件,很小并且是固定大小。一般是32KB,64KB,128KB这样的级别。一个块设备的数据是存放在成千上万个对象文件中的。块设备和对象文件是一对多的关系。
4.DOSS客户端:指分布式对象存储系统的客户端。用于读写分布式对象存储系统DOSS管理的数据。客户端包括缓存跟踪模块和缓存同步服务模块,前者执行垃圾回收和无效缓存的清除,后者在使用写回(WriteBack)写入模式时,启用缓存同步服务模块,同步本地缓存和分布式对象存储系统。
5.本地缓存:指在DOSS客户端上缓存分布式对象存储系统的对象文件的缓存区。可以在DOSS客户端上分配一个文件夹并指定最大容量,作为本地缓存来使用。本地缓存保存对象文件作为缓存,可以设置于DOSS客户端内存、或DOSS客户端硬磁盘、或DOSS客户端固态硬盘。
6.缓存跟踪模块:指跟踪本地缓存的一个模块,执行垃圾回收和无效对象文件的清除。缓存跟踪模块使得本地缓存占用的存储空间不会超过设定的容量限制。
7.缓存同步服务模块:当本地缓存处于WriteBack模式时,把未同步的对象文件写入到分布式对象存储系统的模块。该块设备的所有对象文件完成同步后,在属主数据库上标记该块设备已同步。缓存同步服务模块使得客户端对象存储的写入是异步的。
8.块设备的属主:标识该块设备属于哪一个客户端。该块设备对应属主客户端的本地缓存可能存储有最新的数据。只有块设备的属主才能访问该块设备。块设备的属主,保存的是客户端的IP地址。
9.属主数据库:指存储块设备和相应属主映射信息的数据库。通过该数据库,可以查询块设备的属主是哪一个客户端,在该客户端上是写直达(WriteThrough)模式还是写回(WriteBack)模式。定义一个DOSS客户端为一个块设备的属主。虚拟机调度器使用其中的调度模块设置块设备的属主客户端,获取块设备的属主客户端,从而保证一个块设备同时只能被一个客户端访问。
10.虚拟机管理器(VirtualMachineMonitor)是一种在一套基础物理硬件上维护多个高效的、隔离的虚拟机的管理器,支持用户直接访问真实的物理设备。
11.虚拟机调度器(VirtualMachineScheduler)负责为虚拟机管理器指定运行的物理服务器。虚拟机调度器使用分布式对象存储系统的管理工具,创建或者得到块设备的名称,并用这个块设备的名称、写入模式和客户端地址调用调度工具模块,设置该客户端为这个块设备的属主。
虚拟机调度器通过其内部的调度工具模块用块设备的名称来查询属主数据库该块设备所属于的属主信息。查询命中后,返回客户端的IP地址,然后命令该地址的虚拟机管理器启动虚拟机,块设备访问进程代理(DOSS客户端)独占地访问该块设备。虚拟机调度器调用块设备的属主所对应的虚拟机管理器启动虚拟机。虚拟机管理器通过块设备访问进程代理(DOSS客户端)对块设备进行读写。只有块设备的属主客户端才能独占访问块设备,可以保证块设备和本地缓存数据的一致性。
结合图1对本发明访问装置的系统架构示意图进行说明。该访问装置包括虚拟机调度器、块设备访问进程代理模块(DOSS客户端)、属主数据库、虚拟机池和分布式对象存储系统DOSS。结合图2,该访问装置还包括虚拟机管理器。
DOSS客户端在对块设备进行访问前,先查询属主数据库,确定是块设备的属主后才进行访问操作。否则访问进程报错并返回给虚拟机调度器。
块设备访问进程代理模块(DOSS客户端)在对块设备进行读写前,先访问属主数据库,确定自己是块设备的属主后,进行读写访问。否则DOSS客户端报错并退出。
结合图2,DOSS客户端访问块设备的方法包括:
(1)用分布式对象存储系统的管理工具模块创建块设备,然后使用虚拟机调度器的调度工具模块在属主数据库中将该块设备名称与相应客户端网络地址对应;
(2)访问块设备之前,DOSS客户端访问属主数据库,查询块设备的属主信息;当客户端是块设备的属主,客户端对该块设备进行读写访问;当客户端不是块设备的属主,块设备拒绝该客户端的访问,客户端结束访问操作。
结合图3,当属主数据库已经管理了该块设备之后,就可以查询块设备属于哪一个客户端,从而在该客户端上使用该块设备。对分布式对象存储系统的块设备进行访问的方法包括:
(1)取得分布式对象存储设备的块设备的属主信息:可通过在虚拟机调度器中的调度工具模块查询属主数据库,获得该块设备的属主是哪个客户端;
(2)相应的DOSS客户端启动对该块设备的访问;
(3)DOSS客户端先访问属主数据库,查询该DOSS客户端是否是该块设备的属主:如果是,则DOSS客户端访问块设备;如果不是,则DOSS客户端拒绝访问块设备,访问操作结束。
如上所述,在步骤(3)中,如果查询到DOSS客户端不是块设备的属主,DOSS客户端拒绝访问块设备,DOSS客户端结束访问操作。在DOSS客户端拒绝访问块设备时,可以通过使用调度工具模块强制切换块设备的属主的方式完成对块设备属主信息的更新,随后再次对块设备访问。此时因为DOSS客户端已经是块设备的属主了,就可以实现对块设备的访问。
如图4所示,强制切换块设备的属主的方法如下:
(1)用户通过虚拟机调度器中的调度工具模块可以强制切换块设备的属主。通过调度工具模块设置块设备名称、写入模式、新DOSS客户端地址的方式完成块设备的新属主DOSS客户端的设置。
(2)属主数据库通知原属主DOSS客户端,其已不再是这个块设备的属主,原DOSS客户端必须停止访问该块设备。
(3)属主数据库检测该块设备是否处于同步状态,如果未处在同步状态,则属主数据库等待原属主客户端完成块设备的同步。如果处在同步状态,则执行步骤(4)。
如果块设备处于写回(WriteBack)模式下,并且不处于同步状态,则需要等待同步所有未同步的对象文件,然后原属主DOSS客户端删除所有对应的缓存。
(4)属主数据库更新其记录,对相应的块设备用新DOSS客户端地址代替原DOSS客户端地址,也即将该块设备的属主设置为新DOSS客户端,并在属主数据库中进行更新。
(5)属主数据库最后返回新DOSS客户端地址,然后,用户在新DOSS客户端上启动该虚拟机,完成对块设备的访问。
如图4所示,用户可以指定块设备的新属主。原DOSS客户端收到如上所述通知后,会停止对块设备的访问。如果块设备处于写回(WriteBack)模式下,原DOSS客户端会提交未同步对象文件。提交完成后,返回新的DOSS客户端的地址。此后,可以在DOSS新客户端上访问该块设备。
如图5所示,对块设备的读取操作方法包括:
(1)客户端要从分布式对象存储系统提供的块设备中读取数据时,先在本地缓存中查询是否有部分数据已经缓存了,如果有缓存,执行步骤(2);对于其他未缓存的数据,执行步骤(3);
(2)直接读取并向客户端返回本地缓存的数据;
(3)到分布式对象存储系统中读取并向客户端返回读取的对象;
(4)把这些新读取到的对象存储到本地缓存系统中。
因为只有一个客户端可以独占式读写某个块设备的数据,因此本地缓存中的对象文件和分布式对象存储系统中的对象文件是相同的。以后再次读取这些数据时,就只需要访问本地缓存,而不再需要访问分布式对象存储系统。块设备中的数据只需要到分布式对象存储系统中读取一次,可以减少I/O读写操作对分布式对象存储系统的访问次数。该方法每次读取数据时,都会优先从本地缓存中读取数据。仅在本地缓存没有对应的对象文件时,才去分布式对象存储系统中读取数据。
DOSS客户端要向分布式对象存储系统提供的块设备中写入部分数据时,有两种写入操作模式。分别为写直达(WriteThrough)模式和写回(WriteBack)模式。
写直达模式:写入本地缓存的同时也将数据写入分布式对象存储系统。只有本地缓存和分布式对象存储系统写入操作都成功完成后,才向DOSS客户端返回写入操作成功。该模式需要同时写入本地缓存和分布式对象存储系统,需要写入多个数据的副本。因此,写操作效率低,不适用于高频率写入操作的应用场景。
写回模式:将新数据写入本地缓存时,标记该对象文件未同步。表示该数据未同步到分布式对象存储系统,然后返回。该模式只需要将数据写入到本地缓存,不需要将多个数据副本写入分布式对象存储系统,因此写操作效率高。
如图6所示,如果块设备配置为写回(WriteBack)模式,则会启动缓存同步服务模块,监听DOSS客户端写入本地对象文件时发出的未同步通知。通过缓存同步服务模块,把同步任务异步化,因此可以提高写入操作的性能。
该写入操作的基本流程的描述如下:
(1)虚拟机调度器收到属主数据库服务器返回的块设备所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
(2)缓存同步服务模块监听客户端在本地缓存写入时发出的对象文件未同步的通知;
(3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
(4)通过第(2)步和第(3)步,缓存同步服务模块就可以监控到所有未同步的对象文件,并在内存中维护未同步对象文件列表。在运行时如果发生了写入,则DOSS客户端会随时通知缓存同步服务模块哪些对象文件未同步。缓存同步服务模块可以随时修正未同步对象文件列表;
(5)等待一段预定的同步时间,或者,当写入本地缓存的对象文件已达预定大小,例如当写入本地缓存的对象文件到达一定阈值以至于某些本地缓存的对象文件需要被替换出去并且向DOSS写入,以在本地缓存写入其他对象文件时;
(6)缓存同步服务模块判断未同步对象文件列表是否为空;
(7)如果为空,则通知属主数据库该块设备已同步。返回到第(5)步;
(8)如果不为空,则依次读取未同步对象文件并写入DOSS。完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件。随后读取未同步对象文件列表中后续项,并进行处理。全部完成后,返回到第(5)步;
通过DOSS客户端的写回模式执行写操作和缓存同步服务,可以把写入操作由同步方式转为异步方式,提高块设备的写入性能。
另外,本发明支持DOSS客户端离线恢复的方法:
在访问分布式对象存储系统时,DOSS客户端会经常性访问属主数据库,在访问属主数据库时,一旦与属主数据库断开,即停止对块设备的访问并报错。另外,在访问分布式对象存储系统时,如果一个DOSS客户端意外离线,然后再次上线。DOSS客户端的本地缓存系统会查询属主数据库。如果发现缓存的块设备的当前属主已经不是该DOSS客户端了,就清除本地缓存中相应的对象文件。
本发明的本地缓存,能够利用操作系统的页高速缓存机制,本地缓存中的热点对象文件会被页高速缓存缓存在内存中,从而获得更好的读取性能。这无需额外的设置。
除了利用内存、硬磁盘作为DOSS客户端本地缓存之外,本发明还可以使用SSD优化本地缓存的写入性能:可以使用SSD硬盘作为本地缓存的存储介质。这可以提高写入本地缓存中对象文件的性能。也可以使用支持日志的文件系统。把SSD硬盘用作文件系统日志的存储介质。这也可以提高写入本地缓存中对象文件的性能。
本发明基于分布式对象存储系统的一种使用场景:分布式对象存储系统导出的一个块设备同时只能有一个DOSS客户端进行读写访问。基于这种假设,在DOSS客户端本地缓存中存储对象,可以减少对分布式对象存储系统的访问次数,并能够保证块设备的I/O性能和响应时间。DOSS客户端对块设备的读写基本上都发生在本地。
本发明只需要修改分布式对象存储系统DOSS客户端的具体实现,不需要修改DOSS的接口。本发明只需要为DOSS客户端添加一个本地缓存机制,缓存跟踪模块和缓存同步服务模块,以使用本地缓存提高读写性能。现有的虚拟机调度器如果使用本发明,只需要添加对调度工具模块的几次调用即可,代码修改量很小。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制。上述实施例和说明书描述的只是本发明的原理,在不脱离本发明精神和范围的前提下本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等同物界定。
Claims (10)
1.一种访问分布式对象存储系统的方法,其特征在于包括:
读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再到分布式对象存储系统中读取对象文件,并保存到客户端本地缓存中,如果在本地缓存中找到对象文件,则不到分布式对象存储系统读取对象文件而是直接在本地缓存中读取该对象文件;
和/或:
写入操作:在向分布式对象存储系统写入对象文件数据时,先将对象文件数据写入本地缓存,写入完毕后标记该对象文件未同步并返回写入成功通知,随后将该写入本地缓存的对象文件数据写入分布式对象存储系统。
2.根据权利要求1所述的方法,其特征在于还包括:
在分布式对象存储系统的客户端上,分配一个存储空间作为本地缓存来使用,该存储空间位于客户端内存、或位于客户端硬磁盘、或位于客户端固态硬盘。
3.根据权利要求1所述的方法,其特征在于还包括:
为分布式对象存储系统的每一个块设备设置属主,该块设备的属主信息存放在属主数据库中,客户端要访问块设备时,首先要访问属主数据库,查看自己是否是该块设备的属主,如果是,则能够访问该块设备,如果不是,则不能访问该块设备。
4.根据权利要求3所述的方法,其特征在于还包括:在客户端不是要访问的块设备的属主的情况下,如果客户端需要继续访问该块设备,则需要通过调度工具模块将该客户端设置为所述块设备的属主。
5.根据权利要求1所述的方法,其特征在于所述写入操作具体为:
(1)接收属主数据库服务器返回的块设备所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
(2)缓存同步服务模块监听客户端在本地缓存写入时发出的对象文件未同步的通知;
(3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
(4)通过第(2)步和第(3)步,缓存同步服务模块监控到所有未同步的对象文件,并在内存中维护未同步对象文件列表;如果发生了本地缓存写入,则收到通知的缓存同步服务模块随时修改未同步对象文件列表;
(5)等待一段预定的同步时间,或者当写入本地缓存的对象文件已达预定大小时,缓存同步服务模块判断未同步对象文件列表是否为空;
(6)如果为空,则通知属主数据库该块设备已同步,返回到第(5)步;
(7)如果不为空,则依次读取未同步对象文件并写入分布式对象存储系统,完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件,随后读取未同步对象文件列表中后续项,并进行处理,全部完成后,返回到第(5)步。
6.一种访问分布式对象存储系统的装置,包括:客户端,其特征在于:
客户端用于访问分布式对象存储系统,进行以下的操作;
客户端用于进行读取操作:在读取分布式对象存储系统的对象文件数据时,首先在客户端的本地缓存查询对象文件,如果没有在该本地缓存中找到对象文件,再到分布式对象存储系统中读取对象文件,并保存到客户端本地缓存中;如果在缓存中找到对象文件,则不到分布式对象存储系统读取对象文件,而是直接在本地缓存中读取该对象文件。
和/或:
客户端用于写入操作:在向分布式对象存储系统写入对象文件数据时,先将对象文件数据写入本地缓存,写入完毕后标记该对象文件未同步,由客户端的缓存同步服务模块将该写入本地缓存的对象文件数据写入分布式对象存储系统。
7.根据权利要求6所述的装置,其特征在于:
客户端包括本地缓存,该本地缓存是在分布式对象存储系统的客户端上分配的一个存储空间,该存储空间位于客户端内存、或位于客户端硬磁盘、或位于客户端固态硬盘。
8.根据权利要求6所述的装置,其特征在于还包括:属主数据库;
该属主数据库用于为分布式对象存储系统的每一个块设备设置属主,块设备的属主信息存放在属主数据库中,客户端要访问块设备时,首先要访问属主数据库,查看自己是否是该块设备的属主,如果是,则访问该块设备;如果不是,则不能访问该块设备。
9.根据权利要求8所述的装置,其特征在于还包括:调度工具模块;
在客户端不是要访问的块设备的属主的情况下,如果客户端需要继续访问该块设备,该调度工具模块用于将该客户端设置为所述块设备的属主。
10.根据权利要求6所述的装置,其特征在于所述的装置还包括虚拟机调度器、属主数据库;客户端包括缓存同步服务模块;
其中客户端按如下方式执行写入操作:
(1)客户端接收属主数据库返回的块设备所属的客户端信息后,启动相应的虚拟机的缓存同步服务模块;
(2)缓存同步服务模块监听客户端在本地缓存写入时发出的对象文件未同步的通知;
(3)缓存同步服务模块找到本地缓存中所有标记为未同步的对象文件并登记;
(4)缓存同步服务模块通过上述(2)和(3)监控到所有未同步的对象文件,并在内存中维护未同步对象文件列表;如果发生了本地缓存写入,则随时通知缓存同步服务模块哪些对象文件未同步,缓存同步服务模块修改未同步对象文件列表;
(5)等待一段预定的同步时间,或者当写入本地缓存的对象文件已达预定大小时,缓存同步服务模块判断未同步对象文件列表是否为空;
(6)如果为空,则客户端通知属主数据库服务器该块设备已同步,返回到(5)继续等待;
(7)如果不为空,则缓存同步服务模块依次读取未同步对象文件并将该对象文件写入分布式对象存储系统,完成后标记该对象文件为已同步,并从未同步对象文件列表中删除这个对象文件,随后读取未同步对象文件列表中后续项,并进行处理,全部完成后,返回到(5)继续等待。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510904241.3A CN105549905B (zh) | 2015-12-09 | 2015-12-09 | 一种多虚拟机访问分布式对象存储系统的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510904241.3A CN105549905B (zh) | 2015-12-09 | 2015-12-09 | 一种多虚拟机访问分布式对象存储系统的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105549905A true CN105549905A (zh) | 2016-05-04 |
CN105549905B CN105549905B (zh) | 2018-06-01 |
Family
ID=55829108
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510904241.3A Active CN105549905B (zh) | 2015-12-09 | 2015-12-09 | 一种多虚拟机访问分布式对象存储系统的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105549905B (zh) |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106055655A (zh) * | 2016-05-31 | 2016-10-26 | 广州艾媒数聚信息咨询股份有限公司 | 一种实时数据的存储方法及装置、访问方法及系统 |
CN106850856A (zh) * | 2017-03-28 | 2017-06-13 | 南京卓盛云信息科技有限公司 | 一种分布式存储系统及其同步缓存方法 |
CN107122264A (zh) * | 2017-05-15 | 2017-09-01 | 成都优孚达信息技术有限公司 | 海量数据容灾备份方法 |
CN107451146A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 利用多级缓存读取数据的方法和缓存数据的多级缓存装置 |
CN107634853A (zh) * | 2017-08-28 | 2018-01-26 | 深圳市云舒网络技术有限公司 | 一种基于对象存储的可定制化分布式缓存方法 |
CN107800691A (zh) * | 2017-10-12 | 2018-03-13 | 云巅(上海)网络科技有限公司 | 基于分布式存储机制实现按需构建应用程序访问数据副本的系统及方法 |
CN107870829A (zh) * | 2016-09-24 | 2018-04-03 | 华为技术有限公司 | 一种分布式数据恢复方法、服务器、相关设备及系统 |
CN107943422A (zh) * | 2017-12-07 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种高速存储介质数据管理方法、系统及装置 |
CN108255577A (zh) * | 2017-12-20 | 2018-07-06 | 深圳市杉岩数据技术有限公司 | 一种虚拟机启动的加速方法和装置 |
CN108427537A (zh) * | 2018-01-12 | 2018-08-21 | 上海凯翔信息科技有限公司 | 分布式存储系统及其文件写入优化方法、客户端处理方法 |
CN108427677A (zh) * | 2017-02-13 | 2018-08-21 | 阿里巴巴集团控股有限公司 | 一种对象访问方法、装置及电子设备 |
CN108475201A (zh) * | 2016-11-24 | 2018-08-31 | 华为技术有限公司 | 一种虚拟机启动过程中的数据获取方法和云计算系统 |
CN108595109A (zh) * | 2017-12-29 | 2018-09-28 | 郑州云海信息技术有限公司 | 一种基于Ceph分布式存储系统的多客户端写的方法 |
CN109542361A (zh) * | 2018-12-04 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种分布式存储系统文件读取方法、系统及相关装置 |
CN109753226A (zh) * | 2017-11-07 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法及电子设备 |
CN110083306A (zh) * | 2019-03-14 | 2019-08-02 | 南京时沃信息科技有限公司 | 一种分布式对象存储系统及存储方法 |
US10372928B2 (en) | 2015-08-24 | 2019-08-06 | Alibaba Group Holding Limited | System, method, and apparatus for data access in a cloud computing environment |
CN110191168A (zh) * | 2019-05-23 | 2019-08-30 | 北京百度网讯科技有限公司 | 在线业务数据的处理方法、装置、计算机设备和存储介质 |
CN110515555A (zh) * | 2019-05-27 | 2019-11-29 | 杭州前云数据技术有限公司 | 基于多路对象存储服务的高可靠性企业级存储系统及读写方法 |
CN110633320A (zh) * | 2018-05-30 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 分布式数据服务的处理方法、系统、设备及存储介质 |
CN111240591A (zh) * | 2020-01-03 | 2020-06-05 | 苏州浪潮智能科技有限公司 | 一种存储设备的操作请求处理方法及相关装置 |
CN111736767A (zh) * | 2020-05-29 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种分布式对象存储系统写缓存的方法和设备 |
CN112486943A (zh) * | 2020-12-28 | 2021-03-12 | 福州大学 | 基于FastDFS+Redis的分布式文件存储系统及方法 |
CN112764690A (zh) * | 2021-02-03 | 2021-05-07 | 北京同有飞骥科技股份有限公司 | 分布式存储系统 |
CN113031864A (zh) * | 2021-03-19 | 2021-06-25 | 上海众源网络有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113835614A (zh) * | 2020-09-17 | 2021-12-24 | 北京焱融科技有限公司 | 一种基于分布式文件存储客户端的ssd智能缓存方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8601216B2 (en) * | 2010-08-31 | 2013-12-03 | Oracle International Corporation | Method and system for removing cache blocks |
WO2012047551A1 (en) * | 2010-10-06 | 2012-04-12 | Marvell World Trade Ltd. | Distributed cache coherency protocol |
CN102521330A (zh) * | 2011-12-07 | 2012-06-27 | 华中科技大学 | 一种桌面虚拟化环境下的镜像分布式存储方法 |
CN108418900B (zh) * | 2015-06-10 | 2021-05-04 | 华为技术有限公司 | 一种服务器集群系统中的缓存方法、写入点客户端和读客户端 |
-
2015
- 2015-12-09 CN CN201510904241.3A patent/CN105549905B/zh active Active
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10372928B2 (en) | 2015-08-24 | 2019-08-06 | Alibaba Group Holding Limited | System, method, and apparatus for data access in a cloud computing environment |
US10922429B2 (en) | 2015-08-24 | 2021-02-16 | Alibaba Group Holding Limited | System, method, and apparatus for data access in a cloud computing environment |
CN106055655A (zh) * | 2016-05-31 | 2016-10-26 | 广州艾媒数聚信息咨询股份有限公司 | 一种实时数据的存储方法及装置、访问方法及系统 |
CN107451146A (zh) * | 2016-05-31 | 2017-12-08 | 北京京东尚科信息技术有限公司 | 利用多级缓存读取数据的方法和缓存数据的多级缓存装置 |
CN107870829A (zh) * | 2016-09-24 | 2018-04-03 | 华为技术有限公司 | 一种分布式数据恢复方法、服务器、相关设备及系统 |
CN107870829B (zh) * | 2016-09-24 | 2022-03-08 | 华为技术有限公司 | 一种分布式数据恢复方法、服务器、相关设备及系统 |
CN108475201A (zh) * | 2016-11-24 | 2018-08-31 | 华为技术有限公司 | 一种虚拟机启动过程中的数据获取方法和云计算系统 |
CN108427677A (zh) * | 2017-02-13 | 2018-08-21 | 阿里巴巴集团控股有限公司 | 一种对象访问方法、装置及电子设备 |
CN106850856A (zh) * | 2017-03-28 | 2017-06-13 | 南京卓盛云信息科技有限公司 | 一种分布式存储系统及其同步缓存方法 |
CN107122264A (zh) * | 2017-05-15 | 2017-09-01 | 成都优孚达信息技术有限公司 | 海量数据容灾备份方法 |
CN107122264B (zh) * | 2017-05-15 | 2020-06-09 | 成都优孚达信息技术有限公司 | 海量数据容灾备份方法 |
CN107634853A (zh) * | 2017-08-28 | 2018-01-26 | 深圳市云舒网络技术有限公司 | 一种基于对象存储的可定制化分布式缓存方法 |
CN107800691A (zh) * | 2017-10-12 | 2018-03-13 | 云巅(上海)网络科技有限公司 | 基于分布式存储机制实现按需构建应用程序访问数据副本的系统及方法 |
CN109753226A (zh) * | 2017-11-07 | 2019-05-14 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法及电子设备 |
CN107943422A (zh) * | 2017-12-07 | 2018-04-20 | 郑州云海信息技术有限公司 | 一种高速存储介质数据管理方法、系统及装置 |
CN108255577A (zh) * | 2017-12-20 | 2018-07-06 | 深圳市杉岩数据技术有限公司 | 一种虚拟机启动的加速方法和装置 |
CN108595109B (zh) * | 2017-12-29 | 2021-06-29 | 郑州云海信息技术有限公司 | 一种基于Ceph分布式存储系统的多客户端写的方法 |
CN108595109A (zh) * | 2017-12-29 | 2018-09-28 | 郑州云海信息技术有限公司 | 一种基于Ceph分布式存储系统的多客户端写的方法 |
CN108427537A (zh) * | 2018-01-12 | 2018-08-21 | 上海凯翔信息科技有限公司 | 分布式存储系统及其文件写入优化方法、客户端处理方法 |
CN110633320A (zh) * | 2018-05-30 | 2019-12-31 | 北京京东尚科信息技术有限公司 | 分布式数据服务的处理方法、系统、设备及存储介质 |
CN110633320B (zh) * | 2018-05-30 | 2024-01-12 | 北京京东尚科信息技术有限公司 | 分布式数据服务的处理方法、系统、设备及存储介质 |
CN109542361A (zh) * | 2018-12-04 | 2019-03-29 | 郑州云海信息技术有限公司 | 一种分布式存储系统文件读取方法、系统及相关装置 |
CN109542361B (zh) * | 2018-12-04 | 2022-06-07 | 郑州云海信息技术有限公司 | 一种分布式存储系统文件读取方法、系统及相关装置 |
CN110083306A (zh) * | 2019-03-14 | 2019-08-02 | 南京时沃信息科技有限公司 | 一种分布式对象存储系统及存储方法 |
CN110191168A (zh) * | 2019-05-23 | 2019-08-30 | 北京百度网讯科技有限公司 | 在线业务数据的处理方法、装置、计算机设备和存储介质 |
CN110515555B (zh) * | 2019-05-27 | 2023-03-14 | 杭州前云数据技术有限公司 | 基于多路对象存储服务的高可靠性企业级存储系统及读写方法 |
CN110515555A (zh) * | 2019-05-27 | 2019-11-29 | 杭州前云数据技术有限公司 | 基于多路对象存储服务的高可靠性企业级存储系统及读写方法 |
CN111240591A (zh) * | 2020-01-03 | 2020-06-05 | 苏州浪潮智能科技有限公司 | 一种存储设备的操作请求处理方法及相关装置 |
CN111736767A (zh) * | 2020-05-29 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种分布式对象存储系统写缓存的方法和设备 |
CN113835614A (zh) * | 2020-09-17 | 2021-12-24 | 北京焱融科技有限公司 | 一种基于分布式文件存储客户端的ssd智能缓存方法和系统 |
CN112486943A (zh) * | 2020-12-28 | 2021-03-12 | 福州大学 | 基于FastDFS+Redis的分布式文件存储系统及方法 |
CN112764690A (zh) * | 2021-02-03 | 2021-05-07 | 北京同有飞骥科技股份有限公司 | 分布式存储系统 |
CN113031864A (zh) * | 2021-03-19 | 2021-06-25 | 上海众源网络有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113031864B (zh) * | 2021-03-19 | 2024-02-02 | 上海众源网络有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105549905B (zh) | 2018-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105549905A (zh) | 一种多虚拟机访问分布式对象存储系统的方法 | |
US9946460B2 (en) | Storage subsystem and storage system architecture performing storage virtualization and method thereof | |
CN110321301B (zh) | 一种数据处理的方法及装置 | |
US8909887B1 (en) | Selective defragmentation based on IO hot spots | |
CN102523279B (zh) | 一种分布式文件系统及其热点文件存取方法 | |
CN109947363B (zh) | 一种分布式存储系统的数据缓存方法 | |
US7681001B2 (en) | Storage system | |
US20160364407A1 (en) | Method and Device for Responding to Request, and Distributed File System | |
CN113672175A (zh) | 分布式对象存储方法、装置和设备及计算机存储介质 | |
CN105893274B (zh) | 一种面向异构内存系统建立检查点的装置 | |
CN106446159B (zh) | 一种存储文件的方法、第一虚拟机及名称节点 | |
US20130297969A1 (en) | File management method and apparatus for hybrid storage system | |
CN104111804A (zh) | 一种分布式文件系统 | |
AU2013403132A1 (en) | Data storage method, data storage apparatus, and storage device | |
CN103037004A (zh) | 云存储系统操作的实现方法和装置 | |
CN109254958B (zh) | 分布式数据读写方法、设备及系统 | |
CN109992566A (zh) | 一种文件访问方法、装置、设备及可读存储介质 | |
US20190340120A1 (en) | Method, apparatus for data management, and non-transitory computer-readable storage medium for storing program | |
JP2001184248A (ja) | 分散処理システムにおけるデータアクセス管理装置 | |
CN110955488A (zh) | 一种持久性内存的虚拟化方法及系统 | |
CN116755625A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN104917788A (zh) | 一种数据存储方法及装置 | |
CN114077517A (zh) | 数据处理的方法、设备及系统 | |
CN114840148A (zh) | 在Kubernetes中基于linux内核bcache技术实现磁盘加速的方法 | |
CN110209343B (zh) | 数据存储方法、装置、服务器及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |