CN117707437A - 基于分布式存储系统的虚拟磁盘存储方法及装置 - Google Patents

基于分布式存储系统的虚拟磁盘存储方法及装置 Download PDF

Info

Publication number
CN117707437A
CN117707437A CN202410167105.XA CN202410167105A CN117707437A CN 117707437 A CN117707437 A CN 117707437A CN 202410167105 A CN202410167105 A CN 202410167105A CN 117707437 A CN117707437 A CN 117707437A
Authority
CN
China
Prior art keywords
data
write
written
writing
virtual disk
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.)
Pending
Application number
CN202410167105.XA
Other languages
English (en)
Inventor
臧林劼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jinan Inspur Data Technology Co Ltd
Original Assignee
Jinan Inspur Data Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Jinan Inspur Data Technology Co Ltd filed Critical Jinan Inspur Data Technology Co Ltd
Priority to CN202410167105.XA priority Critical patent/CN117707437A/zh
Publication of CN117707437A publication Critical patent/CN117707437A/zh
Pending legal-status Critical Current

Links

Abstract

本发明涉及计算机存储技术领域,提供一种基于分布式存储系统的虚拟磁盘存储方法及装置,该方法包括:写数据操作,写数据操作包括:将写数据请求发送至虚拟磁盘的回写缓存中,回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;将请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;将写数据请求对应的待写入数据由虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;在物理块存储区域的写缓存中的待写入数据达到预定数量时,按请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入服务器端的存储器。本发明避免了存储过程中数据丢失的问题。

Description

基于分布式存储系统的虚拟磁盘存储方法及装置
技术领域
本发明涉及计算机存储技术领域,尤其涉及一种基于分布式存储系统的虚拟磁盘存储方法及装置。
背景技术
通过网络挂载虚拟磁盘是许多大规模存储服务的重要基础支撑,虚拟磁盘支持与本地物理磁盘相似的一致性,提供与本地物理磁盘解耦合的存储服务,支持弹性扩展和存储故障恢复、灵活的资源分配和虚拟机数据迁移,并提供广泛使用的卷管理功能,例如:快照和磁盘克隆。随着NvmeSSD固态高速存储介质的普及和使用,SSD(Solid State Drives)日益成为主导地位,通过网络挂载的虚拟磁盘的方式已无法再提供具有竞争力的存储性能。
现有的相关技术中,通常在虚拟磁盘上使用NVmeSSD作为客户端缓存,然而,读请求虽然可以在缓存中命中,提高读性能,但是在命中失败的情况下,需要将数据由分布式系统后端缓存到客户端的读缓存中;且在写数据时,需要将待写入数据写到客户端的回写缓存中。由于在客户端故障或掉电的情况下,回写缓存和读缓存中的数据,会存在数据丢失的风险,也会影响分布式存储后端并发写入的数量。此外,只有在虚拟磁盘中相邻的并发写操作才能合并为大数据块写操作,而横向扩展(即增加分布式存储系统后端的存储服务器)的存储后端对于这种写操作的性能很差,对分布式存储后端会造成写入负载不均衡,性能低等影响。
发明内容
本发明提供一种基于分布式存储系统的虚拟磁盘存储方法及装置,用以解决现有的相关技术中,分布式存储系统客户端掉电或故障情况下,回写缓存中的数据可能存在数据丢失的问题。
本发明提供一种基于分布式存储系统的虚拟磁盘存储方法,包括:写数据操作,所述写数据操作包括:
将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;
将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;
将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,所述日志包括日志头,日志头中记录有待写入数据在虚拟磁盘的回写缓存中的逻辑块地址和请求对象序列的长度,所述请求对象序列的长度为请求对象序列中写数据请求的数量,对于任一请求对象序列,对应的日志头记录在本地磁盘的物理块存储区域的写缓存的指定物理块中,所述指定物理块位于所述任一请求对象序列对应的所有待写入数据的物理块的最前端。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中,包括:
基于内存映射表中预设的vLBA和pLBA的地址第一映射关系,确定pLBA,所述vLBA表示所述虚拟磁盘的回写缓存中所述待写入数据对应的逻辑块地址,所述pLBA表示本地磁盘的物理块存储区域的写缓存中所述待写入数据对应的物理块地址;
将所述待写入数据写入本地磁盘的物理块存储区域的写缓存中所述pLBA地址对应的物理块。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器,包括:
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象;
将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象,包括:
将所述日志头和日志头中记录的逻辑块地址对应的待写入数据的写数据请求进行拼接,拼接后,将待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器,包括:
采用S3协议将拼接后的所述写数据请求转换为PUT请求;
基于所述PUT请求将数据对象中待写入数据写入分布式存储系统服务器端的存储器,以使所述分布式存储系统服务器端以Obj.序列号的形式进行数据对象存储,其中,Obj表示分布式存储系统服务器端的存储器的目标地址,序列号表示所述日志头中记录的逻辑块地址的编号。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,在将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器之后,还包括:
接收所述分布式存储系统服务器端返回的写入完成命令,并更新内存映射表中的vLBA和pLBA的地址第一映射关系。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,在按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器之后,还包括:
构建所述待写入数据在虚拟磁盘的回写缓存中的逻辑块地址与所述待写入数据在分布式存储系统服务器端存储器中数据对象地址的第二映射关系,所述数据对象地址包括:数据对象起始地址和待写入数据的偏移量;
将所述第二映射关系存储至所述本地磁盘的物理块存储区域的对象存储映射单元中。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:按预设周期将所述内存映射表缓存至本地磁盘的物理块存储区域中预定的位置。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:在客户端故障后,根据所述日志头和当前周期缓存的内存映射表恢复数据。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:将待写入数据的元数据缓存在本地磁盘的物理块存储区域中对应待写入数据的物理块中。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:读数据操作,所述读数据操作包括:
提取读数据请求中的待读取数据的逻辑块目标地址;
在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址;
在查询到所述逻辑块目标地址的情况下,则从所述逻辑块目标地址对应的缓存中读出所述待读取数据;
将所述待读取数据写入虚拟磁盘的读缓存中。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址,包括:
在所述虚拟磁盘的回写缓存中查询所述逻辑块目标地址,若未查询到,则在虚拟磁盘的读缓存中查询所述逻辑块目标地址,若在虚拟磁盘的读缓存中未查询所述逻辑块目标地址,则在本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:
在未查询到所述逻辑块目标地址的情况下,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象;
将所述数据对象中的所有数据缓存至虚拟磁盘的读缓存中。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象,包括:
根据第二内存映射关系将逻辑块目标地址转换为数据对象的地址,所述第二内存映射关系记录了待读取数据在写入时的逻辑块地址与写入到分布式存储系统服务器端存储器中数据对象地址,所述数据对象地址包括:数据对象起始地址和数据的偏移量;
将所述数据对象的地址转换为S3标准协议流Get请求,携带读取的范围,定位并读取所述数据对象。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:
利用垃圾回收机制,将所述回写缓存、写缓存和读缓存中在预设时间内未访问的数据块进行垃圾回收处理。
根据本发明提供的一种基于分布式存储系统的虚拟磁盘存储方法,还包括:在垃圾回收处理后,对所述回写缓存、写缓存和读缓存进行碎片整理。
本发明还提供一种基于分布式存储系统的虚拟磁盘存储装置,所述装置包括:写数据操作模块,所述写数据操作模块包括:
写数据请求处理模块,用于将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;
请求对象序列缓存模块,用于将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;
待写入数据缓存模块,用于将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;
数据对象写操作模块,用于在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述任一种所述的基于分布式存储系统的虚拟磁盘存储方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的基于分布式存储系统的虚拟磁盘存储方法。
本发明提供的基于分布式存储系统的虚拟磁盘存储方法及装置,在写数据操作中,通过将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。由于写数据请求被作为日志缓存,至少一个写数据请求依次存储在以日志命名的请求对象序列中,而且所述写数据请求对应的待写入数据不但在虚拟磁盘的回写缓存中存储,还在分布式存储系统客户端本地磁盘的写缓存中存储,即使分布式存储系统客户端掉电或故障情况下,虚拟磁盘的回写缓存数据丢失,也能够从客户端本地磁盘的写缓存中恢复数据。另外,对连续的写数据请求依次存储在以日志命名的请求对象序列中,能够保持端到端的写操作是顺序一致性的。
附图说明
为了更清楚地说明本发明或现有的相关技术中的技术方案,下面将对实施例或现有的相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的基于分布式存储系统的虚拟磁盘存储方法的写操作流程示意图;
图2是本发明提供的基于分布式存储系统的虚拟磁盘存储方法中日志结构化虚拟磁盘的结构示意图;
图3是本发明提供的基于分布式存储系统的虚拟磁盘存储方法中内存映射流程图;
图4是本发明提供的基于分布式存储系统的虚拟磁盘存储方法中将待写入数据写入分布式存储系统服务器端的存储器的示意图;
图5是本发明提供的基于分布式存储系统的虚拟磁盘存储方法的读操作流程示意图;
图6是本发明提供的基于分布式存储系统的虚拟磁盘存储装置的写操作模块的结构示意图;
图7是本发明提供的基于分布式存储系统的虚拟磁盘存储装置的读操作模块的结构示意图;
图8是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的基于分布式存储系统的虚拟磁盘存储方法,用于分布式存储系统的客户端,所述方法包括:写数据操作,如图1所示,所述写数据操作包括:
步骤S110:将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中。具体地,如图2所示,在客户端应用程序或业务系统需要写数据时,向分布式存储系统发起写数据请求,客户端收到所述写数据请求后,将写数据请求发送至虚拟磁盘的回写缓存中进行缓存,其中,客户端的虚拟磁盘位于客户端的内存中,回写缓存用于将写数据请求作为日志缓存,即将写数据请求存储在结构化日志中,也即在结构化日志中记录每一次写操作。而且将至少一个写数据请求依次存储在以日志命名的请求对象序列中,尤其是在多个连续的写数据请求时,将多个写数据请求依次存储在以日志命名的请求对象序列中,以保持端到端的写操作是顺序一致的,避免写入数据乱序的问题。
步骤S120:将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中,即将所述请求对象序列由虚拟磁盘的回写缓存写入本地磁盘的物理块存储区域的写缓存中进行缓存,避免在分布式存储系统客户端掉电或故障情况下,记录写顺序的日志丢失。
步骤S130:将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。由于写数据请求中包括待写入数据,即待写入数据也在虚拟磁盘的回写缓存中进行缓存,在将待写入数据写入分布式存储系统服务器端持久化之前,为了避免在分布式存储系统客户端掉电或故障情况下,待写入数据丢失,因此,本实施例中,将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。
步骤S140:在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器(即图2中的分布式对象存储),以在分布式系统后端实现待写入数据的持久化。本实施例中,在所述物理块存储区域为待写入数据单独划分写缓存,在物理块存储区域的写缓存中的待写入数据达到预定数量时,对待写入数据按所述请求对象序列中写数据请求的顺序批量写入分布式存储系统服务器端进行持久化,上述批量写入方式提高了小块I/O写和随机写入的高效性,因为小块I/O写和随机写入被转换成了连续的日志记录,进行合并后顺序写入,降低了commit(批量的待写入数据落盘)操作的请求延时。另外,相对于传统的分布式存储系统中的批量写入方式,即只有在虚拟磁盘中相邻的并发写操作才能合并为大块写操作,本实施例的批量写操作,避免了对分布式存储系统服务器端的写入负载不均衡,提高了分布式存储系统的存储性能。
本实施例的基于分布式存储系统的虚拟磁盘存储方法中,由于写数据请求被作为日志缓存,至少一个写数据请求依次存储在以日志命名的请求对象序列中,而且所述写数据请求对应的待写入数据不但在虚拟磁盘的回写缓存中存储,还在分布式存储系统客户端本地磁盘的写缓存中存储,即使分布式存储系统客户端掉电或故障情况下,虚拟磁盘的回写缓存数据丢失,也能够从客户端本地磁盘的写缓存中恢复数据。另外,对连续的写数据请求依次存储在以日志命名的请求对象序列中,能够保持端到端的写操作是顺序一致性的。
在一些实施例中,所述日志包括日志头,日志头中记录有待写入数据在虚拟磁盘的回写缓存中的逻辑块地址和请求对象序列的长度,所述请求对象序列的长度为请求对象序列中写数据请求的数量,对于任一请求对象序列,对应的日志头记录在本地磁盘的物理块存储区域的写缓存的指定物理块中,所述指定物理块位于所述任一请求对象序列对应的所有待写入数据的物理块的最前端。具体地,如图3所示,在客户端本地磁盘的写缓存中,为每个请求对象序列中待写入数据对应物理块的最前端(请求对象序列中第一个待写入数据物理块地址的前一个物理块的地址)插入一个指定物理块,用于存储日志头。例如:LBA1表示待写入数据1在虚拟磁盘的回写缓存中的逻辑块地址(vLBA),LBA2表示待写入数据2在虚拟磁盘的回写缓存中的逻辑块地址,该请求对象序列的长度为2,对应的两个待写入数据的物理块地址分别为lba1和lba2。通过日志头可以在客户端掉电或故障情况下,恢复预设在客户端内存中的内存映射表。
在一些实施例中,步骤S130,即将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中的具体流程如下,包括:
基于内存映射表中预设的vLBA和pLBA的地址第一映射关系,确定pLBA,所述vLBA表示所述虚拟磁盘的回写缓存中所述待写入数据对应的逻辑块地址,所述pLBA表示本地磁盘的物理块存储区域的写缓存中所述待写入数据对应的物理块地址。如图3所示,可以通过内存映射表中记录的vLBA->pLBA的第一映射关系,将客户端虚拟磁盘的回写缓存中所述待写入数据对应的逻辑块地址快速定位到客户端本地磁盘的物理块存储区域的写缓存中的物理块地址。
将所述待写入数据写入本地磁盘的物理块存储区域的写缓存中所述pLBA地址对应的物理块,从而在客户端内存的虚拟磁盘中和客户端的本地磁盘中存储有相同的待写入数据,以便在向分布式存储系统服务器端写入数据的过程中由于断电或故障中断后,恢复待写入数据。
在一些实施例中,步骤S140,即在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器,包括:
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象。
将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器,每个数据对象在分布式存储系统服务器端的存储器中都有唯一的地址。
本实施例中,通过数据对象(即大对象)将多个待写入数据一次写入分布式存储系统服务器端的存储器中进行持久化,提高了数据写入效率。
具体地,如图4所示,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象的步骤包括:将所述日志头和日志头中记录的逻辑块地址对应的待写入数据的写数据请求进行拼接,拼接后,将待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象。
将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器,包括:
采用S3协议将拼接后的所述写数据请求转换为PUT请求,其中PUT请求为S3协议中的请求。
基于所述PUT请求将数据对象中待写入数据写入分布式存储系统服务器端的存储器,以使所述分布式存储系统服务器端以Obj.序列号的形式进行数据对象存储,其中,Obj表示分布式存储系统服务器端的存储器的目标地址,序列号表示所述日志头中记录的逻辑块地址vLBA的编号。如图4所示,目标地址可以理解为数据对象的起始地址,逻辑块地址vLBA的编号可以理解为待写入数据相对于起始地址的偏移量。例如:图3中,LBA1和LBA2,vLBA的编号分别为1和2,对应待写入数据在分布式存储系统服务器端的存储器的地址分别为Obj.001和Obj.002。
在一些实施例中,在将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器之后,还包括:接收所述分布式存储系统服务器端返回的写入完成命令,并更新内存映射表中的vLBA和pLBA的地址第一映射关系。具体地,待写入数据写入到入分布式存储系统服务器端的存储器之后,服务器端会向客户端反馈本次写操作完成的命令,客户端收到该写入完成命令后,会更新内存映射表中的vLBA和pLBA的地址第一映射关系,将其更新为下一批次待写入数据的vLBA和pLBA的地址第一映射关系。
在一些实施例中,在按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器之后,还包括:
构建所述待写入数据在虚拟磁盘的回写缓存中的逻辑块地址与所述待写入数据在分布式存储系统服务器端存储器中数据对象地址的第二映射关系,所述数据对象地址包括:数据对象起始地址和待写入数据的偏移量。
将所述第二映射关系存储至所述本地磁盘的物理块存储区域的对象存储映射单元中。其中,对象存储映射单元专用于存储第二映射关系,具体地,该第二映射关系可以用对象映射表来存储,且每一批次写数据的操作完成后,都会将新的第二映射关系增加到对象映射表中,以便于在读数据时,根据第二映射关系快速定位到分布式存储系统服务器端存储器中的待读取数据。
在一些实施例中,基于分布式存储系统的虚拟磁盘存储方法还包括:按预设周期将所述内存映射表缓存至本地磁盘的物理块存储区域中预定的位置。
进一步地,基于分布式存储系统的虚拟磁盘存储方法还包括:在客户端故障后,根据所述日志头和当前周期缓存的内存映射表恢复数据。
本实施例中,为了从关联的日志头中绑定内存映射表恢复所需的时间,需要定期对每个内存映射表进行检查,将回写缓存内存映射表的完整副本写入客户端本地磁盘上固定的位置进行缓存。重放日志的一个关键考虑因素是确定它在何处结束,这两个缓存都会产生多个重叠的写操作,以获得更高的吞吐量,然而,通常情况下,后端存储都不能保证按顺序完成请求处理。为了避免对恢复的干扰,垃圾回收流程只删除比最近的检查点更旧的对象,当从客户端崩溃中恢复时,通常会有写入数据存在于本地缓存中,但不会映射在后端存储中。在使虚拟磁盘可用之前,删除上述前缀规则忽略的任何后端对象,回放缓存日志到最近的后端对象结束的时间点,重放该时间点之后的所有写入。
在一些实施例中,基于分布式存储系统的虚拟磁盘存储方法还包括:将待写入数据的元数据缓存在本地磁盘的物理块存储区域中对应待写入数据的物理块中。其中,元数据是描述待写入数据的数据,将元数据和对应的待写入数据一起缓存在本地磁盘的物理块存储区域中对应待写入数据的物理块中,在恢复数据时,保证了恢复后数据的完整性。
在一些实施例中,基于分布式存储系统的虚拟磁盘存储方法还包括:读数据操作,如图5所示,所述读数据操作包括:
步骤S510:提取读数据请求中的待读取数据的逻辑块目标地址。具体地,读数据请求中包括待读取数据的逻辑块目标地址,在客户端应用程序或业务系统需要读数据时,向分布式存储系统服务器端发起读数据请求,客户端在收到读数据请求后,从所述读数据请求中提取出待读取数据的逻辑块目标地址。
步骤S520:在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址。提取出待读取数据的逻辑块目标地址后,先在客户端本地的上述各缓存中查询是否缓存有所述逻辑块目标地址,如果在客户端本地缓存中能够查询到,说明待读取数据也在客户端本地缓存,则不需要向分布式存储系统服务器端读取数据,提高了数据读取效率。
步骤S530:在查询到所述逻辑块目标地址的情况下,则从所述逻辑块目标地址对应的缓存中读出所述待读取数据。具体地,若所述逻辑块目标地址缓存在虚拟磁盘的回写缓存中,说明之前写过该数据,则从虚拟磁盘的回写缓存中读出所述待读取数据;若所述逻辑块目标地址缓存在虚拟磁盘的读缓存中,说明之前读过该数据,则从虚拟磁盘的读缓存中读出所述待读取数据;若所述逻辑块目标地址缓存在本地磁盘的写缓存中,说明之前写过该数据,则从本地磁盘的写缓存中读出所述待读取数据。
步骤S540:将所述待读取数据写入虚拟磁盘的读缓存中,因为通常读取的数据在一段时间内会反复读取,将所述待读取数据缓存在虚拟磁盘的读缓存中,便于提高后续读取效率。
在一些实施例中,步骤S520,即在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址,包括:
在所述虚拟磁盘的回写缓存中查询所述逻辑块目标地址,若未查询到,则在虚拟磁盘的读缓存中查询所述逻辑块目标地址,若在虚拟磁盘的读缓存中未查询所述逻辑块目标地址,则在本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址。具体地,如图2所示,按图2中①、②和③的顺序查询虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存。由于回写缓存和读缓存位于虚拟磁盘中,即客户端内存中,相对于本地磁盘,读取效率更高,而且写操作先于读操作,所述逻辑块目标地址存在于回写缓存中的概率较大,尤其是第一次读取某一待读取数据时。因此,按上述①、②和③的顺序查询能够进一步提高数据的读取效率。
在一些实施例中,基于分布式存储系统的虚拟磁盘存储方法,还包括:
在未查询到所述逻辑块目标地址的情况下,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象。
将所述数据对象中的所有数据缓存至虚拟磁盘的读缓存中。
具体地,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象,包括:
根据第二内存映射关系将逻辑块目标地址转换为数据对象的地址,所述第二内存映射关系记录了待读取数据在写入时的逻辑块地址与写入到分布式存储系统服务器端存储器中数据对象地址,所述数据对象地址包括:数据对象起始地址和数据的偏移量。
将所述数据对象的地址转换为S3标准协议流Get请求,携带读取的范围,定位并读取所述数据对象。如图4所示,逻辑块目标地址经过第二内存映射关系(Object map)转换成数据对象起始地址(Object)和数据的偏移量(Offset)。由于Get请求携带读取的范围,实际读取的数据比请求读取的数据范围更大,并将所有查询到的数据写入读缓存,使额外的数据可用于后续的读操作。由于日志结构化虚拟磁盘块存储具有序列化特性,该策略将基于时间局部性而不是空间局部性进行预取,它将预取与触发读取同时写入的数据,无论该数据是否写到附近的地址。最后,由于读缓存中的数据丢失不会影响正确性,因此没有必要使用日志记录来保护待读取数据的元数据。
为了避免重新启动或故障后重新取数据,将读缓存周期性地持久化到客户端本地磁盘上,即在客户端本地磁盘上也设置一个本地读缓存。
本实施例中,客户端本地磁盘(SSD)的大部分用于本地读缓存,基于此,还包括对内存映射表的大小进行设置,具体地,对于128 KB的块大小,在每个条目24字节的情况下,每TB本地读缓存的内存映射将小于200 MB,假设平均写入大小为16 KB加上4 KB的开销,那么每TB需要1.2 GB空间,如果有20%的客户端本地磁盘专用于写缓存,那么每TB 本地磁盘中缓存使用的总内存将小于300M,然而,对象映射表的内存使用会随着虚拟磁盘数量的增加而增加,这个映射中的区段可以比回写缓存中的区段大得多,因为写入操作可以在对象存储之前合并。此外,下述实施例提出的垃圾收集算法可以进一步对内存映射表进行碎片整理。在平均区段大小为128到256KB时,1TB的日志结构化虚拟磁盘映像将需要100到200MB的内存。
在一些实施例中,基于分布式存储系统的虚拟磁盘存储方法,还包括:利用垃圾回收机制,将所述回写缓存、写缓存和读缓存中在预设时间内未访问的数据块进行垃圾回收处理。本实施例中,当客户端内存的总体利用率达到默认阈值70%时,就会触发垃圾回收,采用最近最少使用(Least Recently Used,LRU)的缓存淘汰算法选择访问率最低的缓存数据块进行回收。具体的流程是,从选定的缓存数据块中获取实时数据,写入新的缓存数据块,之后更新内存映射表,删除旧的缓存数据块。本实施例优化垃圾回收过程,内存映射表跟踪对象的总大小和剩余的实时数据,允许高效地选择清理候选缓存数据块,该表通过map操作进行持久化,然后在恢复过程中加载和更新。为了有效地识别对象中剩余的活动数据,需要检索日志头,它列出了创建该对象序列时保存在该对象序列中的活动范围,只有这些范围需要在内存映射中查找,以找到任何剩余的实时数据。最后,在许多情况下,垃圾回收所需的数据可能已经在本地磁盘缓存中找到了,因此在清理过程中不需要获取这些数据。
进一步地,基于分布式存储系统的虚拟磁盘存储方法,还包括:在垃圾回收处理后,对所述回写缓存、写缓存和读缓存进行碎片整理,提升存储空间的连续性,从而提高读写效率。
上述各实施例的基于分布式存储系统的虚拟磁盘存储方法运行在分布式存储系统的客户端上,相对于现有的相关技术,该方法将客户端缓存与具有日志结构的后端存储解耦分离,并引入了日志结构缓存,并通过NvmeSSD对待写入数据进行缓存,将待写入数据写入分布式存储系统服务器端的对象存储以实现长期的持久化。
实际应用中,上述各实施例的基于分布式存储系统的虚拟磁盘存储方法减少对分布式存储系统的底层压力30%,均衡负载,后端磁盘利用率下降60%。在客户端崩溃和恢复的情况下,日志结构化虚拟磁盘方法通过commit进行数据持久化操作,特殊情况下,在本地缓存丢失的情况下保证前缀一致性;本实施例的方法支持灵活的资源分配和虚拟机迁移,同时兼容快照和克隆卷,对分布式存储底层I/O性能具有重要价值。
下面对本发明提供的基于分布式存储系统的虚拟磁盘存储装置进行描述,下文描述的基于分布式存储系统的虚拟磁盘存储装置与上文描述的基于分布式存储系统的虚拟磁盘存储方法可相互对应参照。
本发明还提供一种基于分布式存储系统的虚拟磁盘存储装置,该装置具体结构如图6所示,包括:写数据操作模块,所述写数据操作模块包括:
写数据请求处理模块610,用于将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中。具体地,如图2所示,在客户端应用程序或业务系统需要写数据时,向分布式存储系统发起写数据请求,客户端收到所述写数据请求后,将写数据请求发送至虚拟磁盘的回写缓存中进行缓存,其中,客户端的虚拟磁盘位于客户端的内存中,回写缓存用于将写数据请求作为日志缓存,即将写数据请求存储在结构化日志中,也即在结构化日志中记录每一次写操作。而且将至少一个写数据请求依次存储在以日志命名的请求对象序列中,尤其是在多个连续的写数据请求时,将多个写数据请求依次存储在以日志命名的请求对象序列中,以保持端到端的写操作是顺序一致的,避免写入数据乱序的问题。
请求对象序列缓存模块620,用于将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中,即将所述请求对象序列由虚拟磁盘的回写缓存写入本地磁盘的物理块存储区域的写缓存中进行缓存,避免在分布式存储系统客户端掉电或故障情况下,记录写顺序的日志丢失。
待写入数据缓存模块630,用于将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。由于写数据请求中包括待写入数据,即待写入数据也在虚拟磁盘的回写缓存中进行缓存,在将待写入数据写入分布式存储系统服务器端持久化之前,为了避免在分布式存储系统客户端掉电或故障情况下,待写入数据丢失,因此,本实施例中,将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。
数据对象写操作模块640,用于在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。本实施例中,在所述物理块存储区域为待写入数据单独划分写缓存,在物理块存储区域的写缓存中的待写入数据达到预定数量时,对待写入数据按所述请求对象序列中写数据请求的顺序批量写入分布式存储系统服务器端进行持久化,上述批量写入方式提高了小块I/O写和随机写入的高效性,因为小块I/O写和随机写入被转换成了连续的日志记录,进行合并后顺序写入,降低了commit(批量的待写入数据落盘)操作的请求延时。另外,相对于传统的分布式存储系统中的批量写入方式,即只有在虚拟磁盘中相邻的并发写操作才能合并为大块写操作,本实施例的批量写操作,避免了对分布式存储系统服务器端的写入负载不均衡,提高了分布式存储系统的存储性能。
本发明提供的基于分布式存储系统的虚拟磁盘存储装置,在写数据操作中,通过将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。由于写数据请求被作为日志缓存,至少一个写数据请求依次存储在以日志命名的请求对象序列中,而且所述写数据请求对应的待写入数据不但在虚拟磁盘的回写缓存中存储,还在分布式存储系统客户端本地磁盘的写缓存中存储,即使分布式存储系统客户端掉电或故障情况下,虚拟磁盘的回写缓存数据丢失,也能够从客户端本地磁盘的写缓存中恢复数据。另外,对连续的写数据请求依次存储在以日志命名的请求对象序列中,能够保持端到端的写操作是顺序一致性的。
可选地,所述日志包括日志头,日志头中记录有待写入数据在虚拟磁盘的回写缓存中的逻辑块地址和请求对象序列的长度,所述请求对象序列的长度为请求对象序列中写数据请求的数量,对于任一请求对象序列,对应的日志头记录在本地磁盘的物理块存储区域的写缓存的指定物理块中,所述指定物理块位于所述任一请求对象序列对应的所有待写入数据的物理块的最前端。具体地,如图3所示,在客户端本地磁盘的写缓存中,为每个请求对象序列中待写入数据对应物理块的最前端(请求对象序列中第一个待写入数据物理块地址的前一个物理块的地址)插入一个指定物理块,用于存储日志头。例如:LBA1表示待写入数据1在虚拟磁盘的回写缓存中的逻辑块地址(vLBA),LBA2表示待写入数据2在虚拟磁盘的回写缓存中的逻辑块地址,该请求对象序列的长度为2,对应的两个待写入数据的物理块地址分别为lba1和lba2。通过日志头可以在客户端掉电或故障情况下,恢复预设在客户端内存中的内存映射表。
可选地,所述待写入数据缓存模块630包括:
物理块地址确定模块,用于基于内存映射表中预设的vLBA和pLBA的地址第一映射关系,确定pLBA,所述vLBA表示所述虚拟磁盘的回写缓存中所述待写入数据对应的逻辑块地址,所述pLBA表示本地磁盘的物理块存储区域的写缓存中所述待写入数据对应的物理块地址。如图3所示,可以通过内存映射表中记录的vLBA->pLBA的第一映射关系,将客户端虚拟磁盘的回写缓存中所述待写入数据对应的逻辑块地址快速定位到客户端本地磁盘的物理块存储区域的写缓存中的物理块地址。
物理块地址写入模块,用于将所述待写入数据写入本地磁盘的物理块存储区域的写缓存中所述pLBA地址对应的物理块,从而在客户端内存的虚拟磁盘中和客户端的本地磁盘中存储有相同的待写入数据,以便在向分布式存储系统服务器端写入数据的过程中由于断电或故障中断后,恢复待写入数据。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置中,所述数据对象写操作模块640包括:
待写入数据写入模块,用于在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象。
数据对象存储模块,用于将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置中,所述数据对象写入模块具体用于将所述日志头和日志头中记录的逻辑块地址对应的待写入数据的写数据请求进行拼接,拼接后,将待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置中,所述数据对象存储模块包括:
协议转换模块,用于采用S3协议将拼接后的所述写数据请求转换为PUT请求。
数据对象写入模块,用于基于所述PUT请求将数据对象中待写入数据写入分布式存储系统服务器端的存储器,以使所述分布式存储系统服务器端以Obj.序列号的形式进行数据对象存储,其中,Obj表示分布式存储系统服务器端的存储器的目标地址,序列号表示所述日志头中记录的逻辑块地址vLBA的编号。如图4所示,目标地址可以理解为数据对象的起始地址,逻辑块地址vLBA的编号可以理解为待写入数据相对于起始地址的偏移量。例如:图3中,LBA1和LBA2,vLBA的编号分别为1和2,对应待写入数据在分布式存储系统服务器端的存储器的地址分别为Obj.001和Obj.002。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:内存映射表更新模块,用于在将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器之后,接收所述分布式存储系统服务器端返回的写入完成命令,并更新内存映射表中的vLBA和pLBA的地址第一映射关系。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:
第二映射关系构建模块,用于在按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器之后,构建所述待写入数据在虚拟磁盘的回写缓存中的逻辑块地址与所述待写入数据在分布式存储系统服务器端存储器中数据对象地址的第二映射关系,所述数据对象地址包括:数据对象起始地址和待写入数据的偏移量;
第二映射关系存储模块,用于将所述第二映射关系存储至所述本地磁盘的物理块存储区域的对象存储映射单元中。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:内存映射表缓存模块,用于按预设周期将所述内存映射表缓存至本地磁盘的物理块存储区域中预定的位置。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:数据恢复模块,用于在客户端故障后,根据所述日志头和当前周期缓存的内存映射表恢复数据。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置中,所述待写入数据缓存模块630还用于将待写入数据的元数据缓存在本地磁盘的物理块存储区域中对应待写入数据的物理块中。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:读数据操作模块,如图7所示,所述读数据操作模块包括:
待读取数据提取模块710,用于提取读数据请求中的待读取数据的逻辑块目标地址。具体地,读数据请求中包括待读取数据的逻辑块目标地址,在客户端应用程序或业务系统需要读数据时,向分布式存储系统服务器端发起读数据请求,客户端在收到读数据请求后,从所述读数据请求中提取出待读取数据的逻辑块目标地址。
缓存查询模块720,用于在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址。提取出待读取数据的逻辑块目标地址后,先在客户端本地的上述各缓存中查询是否缓存有所述逻辑块目标地址,如果在客户端本地缓存中能够查询到,说明待读取数据也在客户端本地缓存,则不需要向分布式存储系统服务器端读取数据,提高了数据读取效率。
数据读出模块730,用于在查询到所述逻辑块目标地址的情况下,则从所述逻辑块目标地址对应的缓存中读出所述待读取数据。具体地,若所述逻辑块目标地址缓存在虚拟磁盘的回写缓存中,说明之前写过该数据,则从虚拟磁盘的回写缓存中读出所述待读取数据;若所述逻辑块目标地址缓存在虚拟磁盘的读缓存中,说明之前读过该数据,则从虚拟磁盘的读缓存中读出所述待读取数据;若所述逻辑块目标地址缓存在本地磁盘的写缓存中,说明之前写过该数据,则从本地磁盘的写缓存中读出所述待读取数据。
待读取数据缓存模块740,用于将所述待读取数据写入虚拟磁盘的读缓存中,因为通常读取的数据在一段时间内会反复读取,将所述待读取数据缓存在虚拟磁盘的读缓存中,便于提高后续读取效率。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置中,所述缓存查询模块720具体用于在所述虚拟磁盘的回写缓存中查询所述逻辑块目标地址,若未查询到,则在虚拟磁盘的读缓存中查询所述逻辑块目标地址,若在虚拟磁盘的读缓存中未查询所述逻辑块目标地址,则在本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:
数据对象获取模块,用于在未查询到所述逻辑块目标地址的情况下,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象;
数据对象缓存模块,用于将所述数据对象中的所有数据缓存至虚拟磁盘的读缓存中。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置中,所述数据对象获取模块包括:
数据对象地址转换模块,用于根据第二内存映射关系将逻辑块目标地址转换为数据对象的地址,所述第二内存映射关系记录了待读取数据在写入时的逻辑块地址与写入到分布式存储系统服务器端存储器中数据对象地址,所述数据对象地址包括:数据对象起始地址和数据的偏移量。
数据对象定位读取模块,用于将所述数据对象的地址转换为S3标准协议流Get请求,携带读取的范围,定位并读取所述数据对象。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:数据块回收模块,用于利用垃圾回收机制,将所述回写缓存、写缓存和读缓存中在预设时间内未访问的数据块进行垃圾回收处理。
可选地,本发明的基于分布式存储系统的虚拟磁盘存储装置,还包括:碎片整理模块,用于在垃圾回收处理后,对所述回写缓存、写缓存和读缓存进行碎片整理。
图8示例了一种电子设备的实体结构示意图,如图8所示,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行基于分布式存储系统的虚拟磁盘存储方法,该方法包括:写数据操作,所述写数据操作包括:
将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中。
将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中。
将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有的相关技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的基于分布式存储系统的虚拟磁盘存储方法,该方法包括:写数据操作,所述写数据操作包括:
将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中。
将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中。
将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的基于分布式存储系统的虚拟磁盘存储方法,该方法包括:写数据操作,所述写数据操作包括:
将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中。
将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中。
将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中。
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有的相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (20)

1.一种基于分布式存储系统的虚拟磁盘存储方法,其特征在于,包括:写数据操作,所述写数据操作包括:
将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;
将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;
将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
2.根据权利要求1所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,所述日志包括日志头,日志头中记录有待写入数据在虚拟磁盘的回写缓存中的逻辑块地址和请求对象序列的长度,所述请求对象序列的长度为请求对象序列中写数据请求的数量,对于任一请求对象序列,对应的日志头记录在本地磁盘的物理块存储区域的写缓存的指定物理块中,所述指定物理块位于所述任一请求对象序列对应的所有待写入数据的物理块的最前端。
3.根据权利要求2所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中,包括:
基于内存映射表中预设的vLBA和pLBA的地址第一映射关系,确定pLBA,所述vLBA表示所述虚拟磁盘的回写缓存中所述待写入数据对应的逻辑块地址,所述pLBA表示本地磁盘的物理块存储区域的写缓存中所述待写入数据对应的物理块地址;
将所述待写入数据写入本地磁盘的物理块存储区域的写缓存中所述pLBA地址对应的物理块。
4.根据权利要求2所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器,包括:
在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象;
将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器。
5.根据权利要求4所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,将预定数量的所述待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象,包括:
将所述日志头和日志头中记录的逻辑块地址对应的待写入数据的写数据请求进行拼接,拼接后,将待写入数据按所述请求对象序列中写数据请求的顺序写入数据对象。
6.根据权利要求5所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器,包括:
采用S3协议将拼接后的所述写数据请求转换为PUT请求;
基于所述PUT请求将数据对象中待写入数据写入分布式存储系统服务器端的存储器,以使所述分布式存储系统服务器端以Obj.序列号的形式进行数据对象存储,其中,Obj表示分布式存储系统服务器端的存储器的目标地址,序列号表示所述日志头中记录的逻辑块地址的编号。
7.根据权利要求4所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,在将所述数据对象中待写入数据写入分布式存储系统服务器端的存储器之后,还包括:
接收所述分布式存储系统服务器端返回的写入完成命令,并更新内存映射表中的vLBA和pLBA的地址第一映射关系。
8.根据权利要求1所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,在按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器之后,还包括:
构建所述待写入数据在虚拟磁盘的回写缓存中的逻辑块地址与所述待写入数据在分布式存储系统服务器端存储器中数据对象地址的第二映射关系,所述数据对象地址包括:数据对象起始地址和待写入数据的偏移量;
将所述第二映射关系存储至所述本地磁盘的物理块存储区域的对象存储映射单元中。
9.根据权利要求3所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:按预设周期将所述内存映射表缓存至本地磁盘的物理块存储区域中预定的位置。
10.根据权利要求9所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:在客户端故障后,根据所述日志头和当前周期缓存的内存映射表恢复数据。
11.根据权利要求1所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:将待写入数据的元数据缓存在本地磁盘的物理块存储区域中对应待写入数据的物理块中。
12.根据权利要求1至11中任一项所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:读数据操作,所述读数据操作包括:
提取读数据请求中的待读取数据的逻辑块目标地址;
在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址;
在查询到所述逻辑块目标地址的情况下,则从所述逻辑块目标地址对应的缓存中读出所述待读取数据;
将所述待读取数据写入虚拟磁盘的读缓存中。
13.根据权利要求12所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,在所述虚拟磁盘的回写缓存、虚拟磁盘的读缓存和本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址,包括:
在所述虚拟磁盘的回写缓存中查询所述逻辑块目标地址,若未查询到,则在虚拟磁盘的读缓存中查询所述逻辑块目标地址,若在虚拟磁盘的读缓存中未查询所述逻辑块目标地址,则在本地磁盘的物理块存储区域的写缓存中查询所述逻辑块目标地址。
14.根据权利要求12所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:
在未查询到所述逻辑块目标地址的情况下,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象;
将所述数据对象中的所有数据缓存至虚拟磁盘的读缓存中。
15.根据权利要求14所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,根据所述逻辑块目标地址在分布式存储系统服务器端的存储器中获取待读取数据所在数据对象,包括:
根据第二内存映射关系将逻辑块目标地址转换为数据对象的地址,所述第二内存映射关系记录了待读取数据在写入时的逻辑块地址与写入到分布式存储系统服务器端存储器中数据对象地址,所述数据对象地址包括:数据对象起始地址和数据的偏移量;
将所述数据对象的地址转换为S3标准协议流Get请求,携带读取的范围,定位并读取所述数据对象。
16.根据权利要求12所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:
利用垃圾回收机制,将所述回写缓存、写缓存和读缓存中在预设时间内未访问的数据块进行垃圾回收处理。
17.根据权利要求16所述的基于分布式存储系统的虚拟磁盘存储方法,其特征在于,还包括:在垃圾回收处理后,对所述回写缓存、写缓存和读缓存进行碎片整理。
18.一种基于分布式存储系统的虚拟磁盘存储装置,其特征在于,所述装置包括:写数据操作模块,所述写数据操作模块包括:
写数据请求处理模块,用于将写数据请求发送至虚拟磁盘的回写缓存中,所述回写缓存用于将写数据请求作为日志缓存;并将至少一个写数据请求依次存储在以日志命名的请求对象序列中;
请求对象序列缓存模块,用于将所述请求对象序列缓存在本地磁盘的物理块存储区域的写缓存中;
待写入数据缓存模块,用于将所述写数据请求对应的待写入数据由所述虚拟磁盘的回写缓存写入至本地磁盘的物理块存储区域的写缓存中;
数据对象写操作模块,用于在所述物理块存储区域的写缓存中的待写入数据达到预定数量时,按所述请求对象序列中写数据请求的顺序,将写数据请求对应的待写入数据以数据对象的形式写入分布式存储系统服务器端的存储器。
19.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至17中任一项所述的基于分布式存储系统的虚拟磁盘存储方法的步骤。
20.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17中任一项所述的基于分布式存储系统的虚拟磁盘存储方法的步骤。
CN202410167105.XA 2024-02-06 2024-02-06 基于分布式存储系统的虚拟磁盘存储方法及装置 Pending CN117707437A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410167105.XA CN117707437A (zh) 2024-02-06 2024-02-06 基于分布式存储系统的虚拟磁盘存储方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410167105.XA CN117707437A (zh) 2024-02-06 2024-02-06 基于分布式存储系统的虚拟磁盘存储方法及装置

Publications (1)

Publication Number Publication Date
CN117707437A true CN117707437A (zh) 2024-03-15

Family

ID=90146549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410167105.XA Pending CN117707437A (zh) 2024-02-06 2024-02-06 基于分布式存储系统的虚拟磁盘存储方法及装置

Country Status (1)

Country Link
CN (1) CN117707437A (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012065005A1 (en) * 2010-11-12 2012-05-18 Alibaba Group Holding Limited Method and apparatus of accessing data of virtual machine
CN103838639A (zh) * 2012-11-23 2014-06-04 华为技术有限公司 一种恢复虚拟磁盘元数据的方法、装置及系统
CN109791520A (zh) * 2016-09-30 2019-05-21 亚马逊技术股份有限公司 物理介质感知的空间耦合的日志记录和重放
CN109885257A (zh) * 2019-01-31 2019-06-14 维沃移动通信有限公司 一种磁盘文件读写方法及装置
CN111158587A (zh) * 2019-12-10 2020-05-15 南京道熵信息技术有限公司 基于存储池虚拟化管理的分布式存储系统及数据读写方法
US20200371827A1 (en) * 2019-05-24 2020-11-26 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, Apparatus, Device and Medium for Processing Data
CN113868192A (zh) * 2021-12-03 2021-12-31 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储系统
CN115793957A (zh) * 2021-09-10 2023-03-14 华为技术有限公司 写数据的方法、装置及计算机存储介质
CN117348968A (zh) * 2023-09-28 2024-01-05 新华三技术有限公司 一种虚拟磁盘的缓存数据加速方法、装置和设备
CN117492661A (zh) * 2023-11-30 2024-02-02 网易(杭州)网络有限公司 数据写入方法、介质、装置和计算设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012065005A1 (en) * 2010-11-12 2012-05-18 Alibaba Group Holding Limited Method and apparatus of accessing data of virtual machine
CN103838639A (zh) * 2012-11-23 2014-06-04 华为技术有限公司 一种恢复虚拟磁盘元数据的方法、装置及系统
CN109791520A (zh) * 2016-09-30 2019-05-21 亚马逊技术股份有限公司 物理介质感知的空间耦合的日志记录和重放
CN109885257A (zh) * 2019-01-31 2019-06-14 维沃移动通信有限公司 一种磁盘文件读写方法及装置
US20200371827A1 (en) * 2019-05-24 2020-11-26 Beijing Baidu Netcom Science And Technology Co., Ltd. Method, Apparatus, Device and Medium for Processing Data
CN111158587A (zh) * 2019-12-10 2020-05-15 南京道熵信息技术有限公司 基于存储池虚拟化管理的分布式存储系统及数据读写方法
CN115793957A (zh) * 2021-09-10 2023-03-14 华为技术有限公司 写数据的方法、装置及计算机存储介质
CN113868192A (zh) * 2021-12-03 2021-12-31 深圳市杉岩数据技术有限公司 一种数据存储设备、方法与分布式数据存储系统
CN117348968A (zh) * 2023-09-28 2024-01-05 新华三技术有限公司 一种虚拟磁盘的缓存数据加速方法、装置和设备
CN117492661A (zh) * 2023-11-30 2024-02-02 网易(杭州)网络有限公司 数据写入方法、介质、装置和计算设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王振;王雷;王宇;: "基于虚拟磁盘块存储的分布式文件系统研究", 华中科技大学学报(自然科学版), no. 2, 10 January 2014 (2014-01-10) *

Similar Documents

Publication Publication Date Title
CN103136121B (zh) 一种固态盘的缓存管理方法
KR101023883B1 (ko) 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템
US6785771B2 (en) Method, system, and program for destaging data in cache
US6216199B1 (en) Hardware mechanism for managing cache structures in a data storage system
CN108268219B (zh) 一种处理io请求的方法及装置
CN108431783B (zh) 访问请求处理方法、装置及计算机系统
CN106547476B (zh) 用于数据存储系统的方法和装置
CN107329692B (zh) 一种数据重删的方法及存储设备
CN105549905A (zh) 一种多虚拟机访问分布式对象存储系统的方法
CN108363641B (zh) 一种主备机数据传递方法、控制节点以及数据库系统
US20130297969A1 (en) File management method and apparatus for hybrid storage system
US7251716B2 (en) Method and system for data processing with recovery capability
CN107329704B (zh) 一种缓存镜像方法及控制器
CN110196818B (zh) 缓存数据的方法、缓存设备和存储系统
US10180792B1 (en) Cache management in data storage systems
JP2004199497A (ja) データベース処理方法及び装置並びにその処理プログラム及びディザスタリカバリ方法及びシステム
CN105915595B (zh) 一种集群存储系统存取数据的方法以及集群存储系统
CN113835614A (zh) 一种基于分布式文件存储客户端的ssd智能缓存方法和系统
WO2012021847A2 (en) Apparatus, system and method for caching data
CN101840310B (zh) 数据读写方法及应用该方法的磁盘阵列系统
CN112416812A (zh) 访问请求处理方法、装置及计算机系统
US20170262485A1 (en) Non-transitory computer-readable recording medium, data management device, and data management method
CN111694806B (zh) 一种事务日志的缓存方法、装置、设备和存储介质
CN110134551B (zh) 一种持续数据保护方法及装置
CN117707437A (zh) 基于分布式存储系统的虚拟磁盘存储方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination