CN112256657A - 日志镜像方法及系统 - Google Patents
日志镜像方法及系统 Download PDFInfo
- Publication number
- CN112256657A CN112256657A CN201910662735.3A CN201910662735A CN112256657A CN 112256657 A CN112256657 A CN 112256657A CN 201910662735 A CN201910662735 A CN 201910662735A CN 112256657 A CN112256657 A CN 112256657A
- Authority
- CN
- China
- Prior art keywords
- log
- data
- storage node
- metadata
- area
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种日志镜像方法及系统,涉及存储技术领域。在本申请实施例中,在第一存储节点接收写数据请求,写数据请求携带有待写入数据;第一存储节点将待写入数据写入第一存储节点的第一数据日志区;第一存储节点根据设定的映射关系和待写入数据位于第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元;第一存储节点将待写入数据发送至第二存储节点,以指示第二存储节点将待写入数据的副本写入第二日志单元中。本申请细化了存储节点之间镜像对应关系的粒度,提高了镜像的效率和灵活度,有助于减小镜像时延。
Description
技术领域
本申请涉及存储技术领域,特别涉及一种日志镜像方法及系统。
背景技术
随着存储技术的快速发展,用户需存储的数据的数据量呈现出大爆发的趋势,而且对存储系统的可靠性和业务连续性提出了更高的要求。
相关技术中,可以在存储系统中使用镜像技术,通过该镜像技术,可以在一个存储节点上备份另一存储节点中数据的副本,以便于在该另一个存储节点出现故障时,该一个存储节点可以根据该数据的副本接管该另一个存储节点的业务,以保证存储系统的可靠性和业务连续性。
但是,目前采用镜像技术进行镜像的效率较低。
发明内容
本申请提供了一种日志镜像方法及系统,可以用于解决相关技术中镜像的效率较低的问题。所述技术方案如下:
第一方面,提供了一种日志镜像方法,该方法应用于日志镜像系统,该日志镜像系统至少包括:第一存储节点和第二存储节点,该方法包括:第一存储节点接收写数据请求,写数据请求携带有待写入数据;第一存储节点将待写入数据写入第一存储节点的第一数据日志区,第一数据日志区位于第一存储节点的第一内存存储介质中,第一数据日志区分配有多个日志单元;第一存储节点根据设定的映射关系和待写入数据位于第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元,第二存储节点包括第二数据日志区,第二数据日志区位于第二存储节点的第二内存存储介质中,第二数据日志区分配有多个日志单元,第二日志单元是第二数据日志区分配的多个日志单元中的一个日志单元,第一日志单元是第一数据日志区分配的多个日志单元中的一个日志单元;第一存储节点将待写入数据发送至第二存储节点,以指示第二存储节点将待写入数据的副本写入第二日志单元中。
在该日志镜像方法中,通过预设存储节点中日志单元之间的映射关系,使得能够将存储在存储节点的日志单元中数据的副本写入对应存储节点的日志单元中,相较于相关技术,细化了存储节点之间镜像对应关系的粒度,提高了镜像的效率和灵活度,有助于减小镜像时延。
在一种可实现方式中,一个存储节点的日志单元可以与另一个存储节点的日志单元存在镜像对应关系。例如,该映射关系可以包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系。
在另一种可实现方式中,一个存储节点的多个日志单元分别与多个存储节点的日志单元存在镜像对应关系。例如,该映射关系可以包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系,以及,第一存储节点的第三日志单元与第三存储节点的第四日志单元之间的对应关系。
当一个存储节点的多个日志单元分别与多个存储节点中的日志单元存在镜像对应关系时,可以将该存储节点中的数据分别备份至多个镜像存储节点,这样一来,在该存储节点出现故障时,可以由该多个镜像存储节点共同接管该存储节点的业务,起到了对接管该存储节点的业务进行均衡的效果,使得该多个镜像存储节点能共同承担接管该存储节点的业务的压力,避免因接管该存储节点的业务导致镜像存储节点上的业务陡增,能够保证该镜像存储节点上原有业务的性能。
在又一种可实现方式中,一个存储节点的一个日志单元可以与多个存储节点的日志单元存在镜像对应关系。例如,该映射关系可以包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系,以及,第一存储节点的第一日志单元与第三存储节点的第八日志单元之间的对应关系。
可选的,方法还包括:第一存储节点将待写入数据的元数据写入第一存储节点的第一元数据日志区,元数据包括待写入数据的描述信息;第一存储节点将元数据发送给第二存储节点,以指示第二存储节点将元数据的副本写入第二存储节点的第五日志单元中,第二存储节点包括第二元数据日志区,第二元数据日志区位于第二存储节点的第二内存存储介质中,第二元数据日志区分配有多个日志单元,第五日志单元是第二元数据日志区分配的多个日志单元中的另一个日志单元。
其中,第一存储节点将待写入数据的元数据写入第一存储节点的第一元数据日志区的实现过程,包括:
在第一存储节点接收到多个写数据请求后,若多个写数据请求中携带的待写入数据的元数据的总数据量大于或等于设定的数据量阈值时,第一存储节点将多个写数据请求中每个写数据请求携带的待写入数据的元数据写入第一存储节点的第一元数据日志区。
通过将元数据异步写入元数据日志区中,能够提高元数据日志区的写入效率,降低用户写请求时延和减少元数据日志区的镜像次数。
可选的,方法还包括:当第一存储节点发生故障时,第二存储节点根据第五日志单元中保存的元数据的副本恢复待写入数据的索引信息。
通过根据数据的元数据重建索引表,相较于通过遍历数据日志区实现索引表重建的相关技术,有效的提高了重建索引表的速度,能够减小接管出现故障的存储节点的业务所耗费的时长,提高了接管业务的效率。
可选的,方法还包括:当第一存储节点发生故障后,第二存储节点确定第四存储节点和第六日志单元和第七日志单元;第二存储节点将待写入数据和元数据发送至第四存储节点,以指示第四存储节点将待写入数据的副本写入第六日志单元中,将元数据的副本写入第七日志单元中;其中,第四存储节点包括第四数据日志区和第三元数据日志区,第四数据日志区和第三元数据日志区均位于第四存储节点的第四内存存储介质中,第四数据日志区和第三元数据日志区均分配有多个日志单元,第六日志单元是第四数据日志区分配的多个日志单元中的一个日志单元,第七日志单元是第三元数据日志区分配的多个日志单元中的一个日志单元。
通过对第一存储节点中的数据进行持续镜像,能够保障第一存储节点中的数据始终存在两个副本,保证了业务的连续性和可靠性。例如,假设第一存储节点中的数据在一个镜像存储节点上做镜像,在第一存储节点发生故障且故障清除之前,若该镜像存储节点再次故障,则第一存储节点中的该数据和镜像存储节点中的该数据的副本均不可访问,则会导致涉及该部分的数据的主机业务中断。通过对数据进行持续镜像,能够使存储系统中始终存在可访问的数据副本,因此,能够保证业务的连续性。
第二方面,提供了一种日志镜像系统,日志镜像系统至少包括:第一存储节点和第二存储节点;第一存储节点用于接收写数据请求,写数据请求携带有待写入数据;第一存储节点用于将待写入数据写入第一存储节点的第一数据日志区,第一数据日志区位于第一存储节点的第一内存存储介质中,第一数据日志区分配有多个日志单元;第一存储节点用于根据设定的映射关系和待写入数据位于第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元,第二存储节点包括第二数据日志区,第二数据日志区位于第二存储节点的第二内存存储介质中,第二数据日志区分配有多个日志单元,第二日志单元是第二数据日志区分配的多个日志单元中的一个日志单元,第一日志单元是第一数据日志区分配的多个日志单元中的一个日志单元;第一存储节点用于将待写入数据发送至第二存储节点,以指示第二存储节点将待写入数据的副本写入第二日志单元中。
可选的,设定的映射关系包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系。
可选的,日志镜像系统还包括:第三存储节点,设定的映射关系还包括:第一存储节点的第三日志单元与第三存储节点的第四日志单元之间的对应关系,第三存储节点包括第三数据日志区,第三数据日志区位于第三存储节点的第三内存存储介质中,第三数据日志区分配有多个日志单元,第四日志单元是第三数据日志区分配的多个日志单元中的一个日志单元。
可选的,第一存储节点还用于将待写入数据的元数据写入第一存储节点的第一元数据日志区,元数据包括待写入数据的描述信息;第一存储节点还用于将元数据发送给第二存储节点,以指示第二存储节点将元数据的副本写入第二存储节点的第五日志单元中,第二存储节点包括第二元数据日志区,第二元数据日志区位于第二存储节点的第二内存存储介质中,第二元数据日志区分配有多个日志单元,第五日志单元是第二元数据日志区分配的多个日志单元中的另一个日志单元。
可选的,在第一存储节点接收到多个写数据请求后,若多个写数据请求中携带的待写入数据的元数据的总数据量大于或等于设定的数据量阈值时,第一存储节点具体用于将多个写数据请求中每个写数据请求携带的待写入数据的元数据写入第一存储节点的第一元数据日志区。
可选的,当第一存储节点发生故障时,第二存储节点用于根据第五日志单元中保存的元数据的副本恢复待写入数据的索引信息。
可选的,当第一存储节点发生故障后,第二存储节点还用于确定第四存储节点和第六日志单元和第七日志单元;第二存储节点还用于将待写入数据和元数据发送至第四存储节点,以指示第四存储节点将待写入数据的副本写入第六日志单元中,将元数据的副本写入第七日志单元中;其中,第四存储节点包括第四数据日志区和第三元数据日志区,第四数据日志区和第三元数据日志区均位于第四存储节点的第四内存存储介质中,第四数据日志区和第三元数据日志区均分配有多个日志单元,第六日志单元是第四数据日志区分配的多个日志单元中的一个日志单元,第七日志单元是第三元数据日志区分配的多个日志单元中的一个日志单元。
上述第二方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。
附图说明
图1是本申请实施例提供的一种日志镜像方法所涉及的日志镜像系统的示意图;
图2是本申请实施例提供的一种集群存储系统的结构示意图;
图3是本申请实施例提供的一种索引表的结构示意图;
图4是本申请实施例示出的一种子日志的结构示意图;
图5是本申请实施例提供的一种线性日志区和NVRAM之间对应关系;
图6是本申请实施例提供的一种数据日志区和元数据日志区的示意图;
图7是本申请实施例示出的一种日志镜像系统实现数据存储的方法流程图;
图8是本申请实施例提供的一种第一存储节点中日志单元与第二存储节点中日志单元的镜像对应关系示意图;
图9是本申请实施例提供的一种日志镜像系统实现数据读取的方法流程图;
图10是本申请实施例示出的一种日志镜像系统实现镜像数据恢复的方法流程图;
图11是本申请实施例提供的一种日志镜像系统实现持续镜像的方法流程图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细的解释说明之前,先对本申请实施例涉及的系统架构进行介绍。
图1是本申请实施例提供的日志镜像方法所涉及的日志镜像系统的架构图。如图1所示,该日志镜像系统包括主机01和存储系统02,该存储系统02包括多个存储节点021。其中,主机01和存储节点021之间可以通过有线或无线网络进行连接,以实现两者之间的数据传输。
示例的,主机01可以向存储系统02发送写数据请求,存储系统02接收写数据请求之后,将写数据请求携带的待写入数据写入存储节点021中。并且,在将待写入数据写入存储节点021后,还可以将该待写入数据的副本,写入该存储节点021的镜像存储节点中,以对该待写入数据进行备份。其中,该镜像存储节点可以为该存储系统02中除用于写入该待写入数据的存储节点021外的一个存储节点021。
可选的,该存储系统可以是集群存储系统或分布式存储系统,且该集群存储系统可以为对称式存储系统或非对称式存储系统。示例的,请参考图2,该集群存储系统可以包括多个存储节点021,每个存储节点021中可以运行有转发模块0211和缓存(Cache)0212,且存储节点021中还配置有内存存储介质(图2中未示出)和硬盘0213。其中,可以通过Cache和内存存储介质对待写入数据进行缓存,通过将缓存的数据写入硬盘中实现数据的持久性保存。并且,Cache中存储的数据在掉电后会丢失,而内存存储介质中存储的数据在掉电后不会丢失。可选的,该内存存储介质可以为非易失性内存(non-volatile random accessmemory,NVRAM)或存储级内存(storage class memory,SCM)等。
主机01可以访问任意存储节点021,并向该存储节点021发送数据处理请求,被主机访问的存储节点021中的转发模块0211可以根据数据处理请求中携带的待处理数据的逻辑地址,在多个存储节点021中确定用于处理该数据处理请求的存储节点021(也称为归属节点),并将该数据处理请求发送至归属节点,使归属节点对该数据处理请求进行处理。其中,数据处理请求可以为读数据请求或写数据请求等。
其中,转发模块0211可以是功能性模块,其功能可以通过执行程序指令实现。例如,存储节点可以包括:处理器和存储器,该存储器用于存储计算机程序,该计算机程序包括程序指令,该处理器通过执行该程序指令可以实现转发模块0211的功能。并且,该处理器执行该存储器中的程序指令时,还可以实现本申请实施例提供的日志镜像方法。其中,处理器可以是中央处理器(central processing unit,CPU)等。
在一种实现方式中,可以通过Cache中的索引表和与内存存储介质所对应的线性日志区实现待写入数据的缓存。下面分别对索引表和线性日志区进行说明:
索引表中记载有数据的索引信息,该索引信息中记载有数据的存储位置,通过该索引信息能够快速定位到待处理数据的存储位置。示例的,存储节点在接收到读数据请求后,可以根据读数据请求在索引表中获取待读取数据的索引信息,并根据该索引信息快速的定位到该待读取数据的存储位置,并在该存储位置中读取数据。其中,索引表是在将数据写入内存存储介质后生成的。
如图3所示,索引表可以以列表的形式呈现,每个索引表包括顺序排列的多个哈希桶,每个哈希桶可以包括多个索引块(chunk)。每个chunk用于存储通过同一输入/输出接口(I/O接口)地址写入的数据的索引信息。且每次数据写入过程均会生成一个索引信息,该每次生成的一条索引信息可以称为一个子日志(sublog)。通过同一I/O接口地址写入的数据的子日志可以顺序写入同一chunk中,此时,位于chunk末尾的子日志为通过该I/O接口地址最新写入的数据的索引信息。
索引信息的生成过程为:在向存储节点写入待写入数据时,按照第一预设长度(如64兆)对I/O接口发送的待写入数据进行切分,并根据切分后的每份数据生成唯一的键(key)值,然后根据key值生成哈希值,再根据哈希值与哈希桶之间的对应关系,将哈希值映射至对应的哈希桶中,然后在该哈希桶中的一个chunk中写入该key值对应的待写入数据的索引信息。示例的,如图4所示,一个chunk中可以记载有同一个key值对应的多个子日志,该多个子日志可以按照对应待写入数据的写入时间顺序记载在chunk中,且不同子日志与线性日志区中的不同区域(如图4中的日志页,logpage)对应。并且,每个子日志可以记载有待写入数据在第一预设长度的数据中的偏移量、数据长度、待写入数据在线性日志区中的起始存储位置和一些表项(entrys)。
通过将不同的key值对应的待写入数据的索引信息记录在不同的chunk中,能够在读取数据时,根据待读取数据的key值快速定位到对应的chunk,然后读取位于该chunk末尾的子日志,得到待读取数据的索引信息,然后根据该索引信息在线性日志区中读取数据,以简化数据的读取过程。
需要说明的是,该key值是按照第一预设长度对待写入数据进行切分后得到的,且每个key值与一个I/O接口地址对应。并且,该key值的确定无需区分存储节点上部署的具体业务,例如无需区分业务是存储区域网络(storage area network,SAN)业务还是网络附属存储(network attached storage,NAS)业务,也无需关心存储节点中对主机01呈现的逻辑单元号(例如logical unit number,LUN)和文件系统(file system,FS)的个数。
可选的,对于SAN业务,该key值可以由LUN的标识(LUN_ID)和写数据请求中的数据逻辑位置(logical block address,LBA)组成。对于NAS业务,该key值可以由文件系统的标识(FS_ID)、文件的标识(FILE_ID)和文件内的位置信息生成。
该线性日志区可以提供顺序读和追加写的功能,用于存放缓存数据,直到数据写入存储节点中的硬盘中。线性日志区是由多个离散的线性日志单元组成的一个线性的顺序文件,每个线性日志区与内存存储介质中的日志单元(persistent log,plog)对应。其中,每个plog的长度固定,且每个plog对应内存存储介质中一段连续的内存区域。需要说明的是,线性日志区和线性日志单元为逻辑概念,内存区域和plog为物理概念,该plog对应具体的内存地址,写入线性日志区中的数据本质上是写入了plog对应的内存存储介质中,因此,能够保证写入线性日志区中的数据在存储节点复位或掉电后不会丢失。
示例的,图5为线性日志区和NVRAM之间对应关系的示意图,如图5所示,该线性日志区包括多个线性日志单元,每个线性日志单元与NVRAM中的plog对应,线性日志区中的每个线性日志单元包括多个日志(如图5中log所示)。
由于线性日志区与内存存储介质存在对应关系,因此,内存存储介质的容量决定了线性日志区对应的plog的总容量,相应的,也决定了Cache能缓存数据的最大容量。并且,当线性日志区对应的plog的总容量耗尽后,线性日志区中就无法继续写入日志了,此时,可以将线性日志区中已写入的数据按序写入硬盘,并释放plog,使得被释放的可以被循环使用。或者,由于可以预先向线性日志区分配日志单元,例如,可以在存储系统的配置过程中向线性日志区分配日志单元,因此,当线性日志区对应的日志单元被写满数据后,还可以请求存储系统向该线性日志区分配新的日志单元,并在新分配的日志单元中写入数据。
线性日志区包括:数据日志区和元数据日志区。该数据日志区用于存放数据和元数据(也称为:管理头,desc)。该元数据日志区用于存放元数据,且该元数据日志区中存储的元数据与数据日志区中的元数据对应相同。其中,元数据为用于描述待写入数据的描述信息,且该元数据是在数据写入过程中生成的。可选的,该描述信息可以包括:魔术字、循环冗余校验码(cyclic redundancy check,CRC)、版本号、待写入数据的key值、偏移量offset和数据长度len等。
每一个写数据请求携带的待写入数据,均会以一条日志的方式写入数据日志区中。并且,在每条日志中均会将待写入数据(data)按照第二预设长度进行切分,并在切分后的每份数据的前面插入一个元数据,得到一个日志页(logpage)。示例的,假设第二预设长度为4千字节(4KB),如图6所示,数据日志区中记载有多条日志,在每条日志中,可以按照4千字节将待写入数据进行切分,并在切分后的每份数据的前面插入一个元数据,得到一个日志页,该日志页的大小为4160字节。并且,如图6所示,元数据日志区也记载有多条元数据日志,每条元数据日志中记载有多个元数据,该多个元数据与数据日志区中的多个元数据一一对应相同,每个元数据的大小为64字节(B),此时,每个日志页的大小为4160B。
数据日志区中的数据是在写数据的过程中同步写入的。但是,可以将元数据异步写入元数据日志区中。在一种可实现方式中,在每次数据写入过程中,可以先获取待写入数据的元数据,并将该元数据缓存在存储节点的内存中,之后存储节点可以继续接收写数据请求,并在存储节点接收的写数据请求携带的待存储数据的元数据的总数据量大于或等于设定的数据量阈值时,将该总数据量大于或等于设定的数据量阈值的元数据写入元数据日志区中。其中,该总数据量大于或等于设定的数据量阈值的元数据可以视为存储节点内存中缓存的所有元数据。并且,通过将元数据异步写入元数据日志区中,能够提高元数据日志区的写入效率,降低用户写请求时延和减少元数据日志区的镜像次数。
本申请实施例提供了一种日志镜像方法,该方法应用于日志镜像系统,该日志镜像系统包括:第一存储节点、第二存储节点、第三存储节点和第四存储节点等多个存储节点。每个存储节点的内存存储介质中均配置有线性日志区,线性日志区包括数据日志区和元数据日志区,且每个数据日志区分配有多个日志单元,每个元数据日志区分配有多个日志单元。并且,日志镜像方法可以包括:数据存储、数据读取和镜像数据恢复等方面。下面分别对数据存储、数据读取和镜像数据恢复的实现过程进行说明。
下面先对数据存储的实现过程进行说明。图7所示,该方法可以包括以下步骤:
步骤701、第一存储节点接收写数据请求,该写数据请求携带有待写入数据。
如图2所示,该镜像日志系统可以包括多个存储节点021。主机01可以访问任意存储节点021,并向访问的存储节点021发送写数据请求,该被访问的存储节点021可以按照预设的打散算法,根据写数据请求中携带的待写入数据的逻辑地址,在多个存储节点021中确定用于处理该写数据请求的归属节点,并将该写数据请求发送至归属节点。本申请实施例以该归属节点为第一存储节点为例进行说明,该被主机访问的存储节点021将写数据请求发送至第一存储节点后,第一存储节点可以对该写数据请求进行处理,以将待写入数据存储至该第一存储节点中。
步骤702、第一存储节点将待写入数据写入第一存储节点的第一数据日志区。
其中,第一数据日志区位于第一存储节点的第一内存存储介质中,第一数据日志区分配有多个日志单元。在第一数据日志区中写入待写入数据时,可以按照追加写的方式,将待写入数据写入该多个日志单元中处于末尾的日志单元。本申请实施例以该处于末尾的日志单元为第一日志单元为例进行说明。
步骤703、第一存储节点根据设定的映射关系和待写入数据位于第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元。
其中,第二存储节点包括第二数据日志区,第二数据日志区位于第二存储节点的第二内存存储介质中,第二数据日志区分配有多个日志单元,第二日志单元是第二数据日志区分配的多个日志单元中的一个日志单元。
存储系统中可以存储有预先设定的映射关系,该映射关系用于描述一个存储节点中日志单元与另一个存储节点中日志单元之间的镜像对应关系。该另一个存储节点称为该一个存储节点的镜像存储节点,该另一个存储节点中的日志单元为该一个存储节点中日志单元的镜像日志单元。示例的,映射关系可以存储在每个存储节点中,如可以存储在每个存储节点的非易失性存储介质中,以便于每个存储节点能够根据该映射关系确定与其存在镜像对应关系的镜像存储节点和镜像日志单元。
在将待写入数据写入第一数据日志区对应的第一日志单元后,可以根据该第一数据日志区和第一日志单元,查询该映射关系,以确定该第一日志单元对应的镜像存储节点及镜像日志单元的地址,然后将该待写入数据的副本写入该镜像存储节点中的镜像日志单元中。
其中,该映射关系的内容可以根据实际需要设置,下面以以下三种可实现方式进行说明。
在一种可实现方式中,一个存储节点的日志单元可以与另一个存储节点的日志单元存在镜像对应关系。例如,该映射关系可以包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系。
通过该镜像对应关系,可以将该一个存储节点的日志单元中存储的数据在该另一个存储节点的日志单元中备份。并且,由于该映射关系为日志单元与日志单元之间的对应关系,相较于相关技术中存储节点与存储节点之间的镜像对应关系,细化了存储节点之间镜像对应关系的粒度,提高了镜像的灵活度和效率,有助于减小镜像时延。
在另一种可实现方式中,一个存储节点的多个日志单元分别与多个存储节点的日志单元存在镜像对应关系。例如,该映射关系可以包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系,以及,第一存储节点的第三日志单元与第三存储节点的第四日志单元之间的对应关系。
其中,第三存储节点包括第三数据日志区,第三数据日志区位于第三存储节点的第三内存存储介质中,第三数据日志区分配有多个日志单元,第四日志单元是第三数据日志区分配的多个日志单元中的一个日志单元。
当一个存储节点的多个日志单元分别与多个存储节点中的日志单元存在镜像对应关系时,可以将该存储节点中的数据分别备份至多个镜像存储节点,这样一来,在该存储节点出现故障时,可以由该多个镜像存储节点共同接管该存储节点的业务,起到了对接管该存储节点的业务进行均衡的效果,使得该多个镜像存储节点能共同承担接管该存储节点的业务的压力,避免因接管该存储节点的业务导致镜像存储节点上的业务陡增,能够保证该镜像存储节点上原有业务的性能。
在又一种可实现方式中,一个存储节点的一个日志单元可以与多个存储节点的日志单元存在镜像对应关系。例如,该映射关系可以包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系,以及,第一存储节点的第一日志单元与第三存储节点的第八日志单元之间的对应关系。其中,第八日志单元是第三数据日志区分配的多个日志单元中的另一个日志单元。
可选的,映射关系可以通过日志映射视图(plog mapping view)的方式呈现,该日志映射视图中可以记载有存储节点中日志单元与镜像存储节点中日志单元之间的映射关系,且该日志映射视图中还可以记载有存在映射关系的每个日志单元的地址。示例的,如图8所示,第一存储节点和第二存储节点的数据日志区均分配有多个日志单元,按照图8中由左至右的顺序,第一存储节点中的第一个日志单元与第二存储节点中的第一个日志单元存在镜像对应关系,第一存储节点中的第二个日志单元与第二存储节点中的第二个日志单元存在镜像对应关系,第一存储节点中的第三个日志单元与第二存储节点中的第三个日志单元存在镜像对应关系,第一存储节点中的第四个日志单元与第二存储节点中的第四个日志单元存在镜像对应关系,且该日志映射视图中还记载有存在映射关系的每个日志单元的地址。
并且,如图5所示,该映射关系还可以表现为:一个存储节点中一个或多个日志单元组成的日志单元分区与另一个存储节点中一个或多个日志单元组成的日志单元分区的对应关系。其中,在该图5中,一个日志单元分区包括一个大括号内的多个日志单元。
需要说明的是,日志镜像系统中可以配置有数据镜像模块,该数据镜像模块用于生成并维护映射关系,以及,管理存储节点之间的镜像通道。可选的,该镜像通道可以包括:PCIe(一种总线标准)总线或eth网卡(一种网卡)。
步骤704、第一存储节点将待写入数据发送至第二存储节点,以指示第二存储节点将待写入数据的副本写入第二日志单元中。
在确定与第一日志单元存在镜像对应关系的镜像存储节点和镜像日志单元后,第一存储节点可以将该待写入数据发送至对应的镜像存储节点,以使镜像存储节点将该待写入数据的副本写入镜像日志单元中。本申请实施例以镜像存储节点为第二存储节点,镜像日志单元为第二存储节点中的第二日志单元为例进行说明,在确定该第二存储节点和第二日志单元后,第一存储节点可以将该待写入数据发送至该第二存储节点,以使该第二存储节点将该待写入数据的副本写入该第二日志单元中。
可选的,为了减小镜像时的写时延,可以通过远程直接内存访问(remote directmemory access,RDMA)技术将待写入数据写入第二日志单元中。
步骤705、第一存储节点根据待写入数据的写入位置生成该待写入数据的索引信息,并将该索引信息存储在索引表中。
在写入待存储数据的过程中,由于需要按照第一预设长度对I/O接口发送的待写入数据进行切分,因此,能够确定写入的数据在切分后的数据中的偏移量。并且,在将数据写入第一存储节点的第一日志单元后,可以确定该数据在日志单元中的存储位置。同时,还能够获取每个数据的长度等用于表示数据的存储位置的信息。根据该数据在切分后的数据中的偏移量、在日志单元中的存储位置、以及、数据的长度等用于表示数据的存储位置的信息等,可以确定该数据的索引信息。
并且,根据切分后的数据的key值,可以确定用于存储该数据的索引信息的哈希桶和chunk,因此,在获取该数据的索引信息后,即可将该索引信息写入对应的哈希桶和chunk中,以得到记载有该数据的索引信息的索引表。
步骤706、第一存储节点获取待写入数据的元数据,并将该元数据写入第一存储节点的第一元数据日志区。
其中,第一存储节点包括第一元数据日志区,第一元数据日志区位于第一存储节点的第一内存存储介质中,第一元数据日志区分配有多个日志单元。元数据用于描述待写入数据的描述信息,该元数据是在数据写入过程中生成的。可选的,该描述信息可以包括:魔术字、循环冗余校验码、版本号、待写入数据的key值、偏移量offset和数据长度len等。
在一种可实现方式中,每次在数据日志区中写入待写入数据后,可以先获取待写入数据的元数据,然后将该元数据缓存在内存中,并在第一存储节点接收到多个写数据请求后,若多个写数据请求中携带的元数据的总数据量大于或等于设定的数据量阈值时,再将总数据量大于或等于设定的数据量阈值的元数据写入第一存储节点的第一元数据日志区中。例如,可以将元数据写入第一存储节点中为第一元数据日志区分配的一个日志单元中。通过将元数据异步写入元数据日志区中,能够提高元数据日志区的写入效率,降低用户写请求时延和减少元数据日志区的镜像次数。并且,将内存中的元数据写入元数据日志区中的实现过程,可以相应参考将待写入数据写入数据日志区中的实现过程。
步骤707、第一存储节点根据设定的映射关系和元数据位于第一元数据日志区的日志单元,确定第二存储节点和第五日志单元。
其中,第二存储节点包括第二元数据日志区,第二元数据日志区位于第二存储节点的第二内存存储介质中,第二元数据日志区分配有多个日志单元,第五日志单元是第二元数据日志区分配的多个日志单元中的另一个日志单元。且该步骤707的实现过程可以相应参考步骤703的实现过程。
步骤708、第一存储节点将待写入数据的元数据发送至第二存储节点,以指示第二存储节点将待写入数据的元数据的副本写入第五日志单元中。
该步骤708的实现过程可以相应参考步骤704的实现过程。
需要说明的是,一个数据日志分区与其对应的元数据日志分区互为一对线性日志分区,且每个Cache中可能存在一对或多对线性日志分区。由于单对线性日志分区是存储节点出现故障后,镜像存储节点接管该出现故障的存储节点的业务时的最小倒换单元,因此,在进行数据镜像时,可以将互为一对线性日志分区中的数据日志分区与元数据日志分区中的数据备份至同一镜像存储节点,以便于在接管故障存储节点的业务时,能够在同一存储节点中获取数据日志分区中存储的数据和元数据日志分区中的元数据,避免接管业务的镜像存储节点需要跨存储节点分别获取数据和元数据,以保证镜像存储节点的性能。
还需要说明的是,将待写入数据写入存储节点的数据日志区后,当写入线性日志区的数据的数据量达到预设的数据量阈值,或者,当待写入数据在数据日志区中缓存的时长达到预设时长后,可以将该线性日志区中的数据存储至硬盘中,该过程可以称为脏数据刷盘。在进行脏数据刷盘时,可以从线性日志区的的头部依次获取数据,并依次将获取的数据写入硬盘中。并且,从线性日志区获取数据时,可以以日志单元为单位获取数据,并一次性将一个或多个日志单元中的数据写入硬盘中。在将日志单元中的数据写入硬盘后,可以释放该日志单元,以便在该日志单元中写入新的数据,实现日志单元的循环使用。
并且,在完成脏数据刷盘后,还需要将被刷盘的数据的元数据从元数据日志区中删除,以实现该元数据日志区的循环使用。相应的,由于缓存中不再存储该被刷盘的数据,因此,还需要从索引表中删除被刷盘数据的索引信息,以实现索引表的更新。
同时,日志镜像系统中通常还存储有线性日志区的一些管理描述信息,且日志镜像系统中的存储节点可以访问该管理描述信息。例如:管理描述信息可以为日志头、日志尾和为该线性日志区分配的日志单元的标识等,这些管理描述信息可以存储在每个存储节点的存储介质中,以实现该管理描述信息的持久化存储,且该管理描述信息可以被存储系统中的所有存储节点读取。
综上所述,本申请实施例提供的日志镜像方法,通过预设存储节点中日志单元之间的映射关系,使得能够将存储在存储节点的日志单元中数据的副本写入对应存储节点的日志单元中,相较于相关技术,细化了存储节点之间镜像对应关系的粒度,提高了镜像的效率和灵活度,有助于减小镜像时延。
并且,通过将该存储节点中的数据备份至多个镜像存储节点,使得在该存储节点故障后,可以由该多个镜像存储节点接管该存储节点的业务,起到了对接管该存储节点的业务进行均衡的效果,使得该多个镜像存储节点能共同承担接管该存储节点的业务的压力,避免因接管该存储节点的业务导致镜像存储节点上的业务陡增,能够保证该镜像存储节点上原有业务的性能。
下面对数据读取的实现过程进行说明。图9所示,该方法可以包括以下步骤:
步骤901、第一存储节点接收读数据请求,该读数据请求携带有待读取数据的逻辑地址。
如图2所示,集群镜像日志系统可以包括多个存储节点021。主机01可以访问任意存储节点021,并向访问的存储节点021发送读数据请求,该被访问的存储节点021可以按照预设的打散算法,根据读数据请求中携带的待读取数据的逻辑地址,在多个存储节点021中确定用于处理该读数据请求的归属节点,并将该读数据请求发送至归属节点。本申请实施例以该归属节点为第一存储节点为例进行说明。
步骤902、第一存储节点基于该逻辑地址,在索引表中获取待读取数据的索引信息。
被主机访问的存储节点021将读数据请求发送至第一存储节点后,第一存储节点可以根据该读数据请求中待读取数据的逻辑地址,确定该待读取数据的key值,并根据该key值在索引表中查找存储该key值对应数据的chunk,并读取位于该chunk末尾的子日志,得到该待读取数据的索引信息。
需要说明的是,由于索引表中记录的是存储在内存存储介质中的数据的索引信息,在该步骤902中,可以先根据该逻辑地址在索引表中查询是否记载有对应的索引信息,当索引表中记载有对应的索引信息时,可以获取该索引信息,并根据该索引信息在对应的日志单元中获取待读取数据。当索引表中未记载有对应的索引信息时,需要在硬盘中获取该待读取数据。
步骤903、第一存储节点根据待读取数据的索引信息,在该索引信息指示的日志单元中读取待读取数据,并向主机发送携带有待读取数据的读数据响应。
由于该索引信息用于指示待读取数据在数据日志区中的位置,因此,在获取该索引信息后,可以先将索引信息转换为待读取数据在内存存储介质中的物理地址,并在该物理地址所指示的日志单元中读取该待读取数据,然后将该待读取数据发送至主机。
下面先对镜像数据恢复(也称日志回放)的实现过程进行说明。镜像数据恢复是指根据线性日志区中存储的数据重建索引表的过程。在本申请实施例中,在一个存储节点发生故障后,该存储节点的镜像存储节点可以根据日志单元中保存的元数据的副本,恢复该元数据对应的数据的副本的索引信息。下面以第一存储节点发生故障,在第二存储节点中进行镜像数据恢复为例进行说明。图10所示,该方法可以包括以下步骤:
步骤1001、第二存储节点在第二存储节点中确定待恢复的元数据日志区和数据日志区。
第一存储节点发生故障后,第二存储节点可以先获取第一存储节点中元数据日志区和数据日志区的描述信息,然后分别确定与该第一存储节点中元数据日志区和数据日志区对应的日志单元,再根据其对应的日志单元和设定的映射关系,在第二存储节点的日志单元中,确定与第一存储节点中日志单元存在镜像对应关系的日志单元(即待恢复的日志单元),并根据线性日志区和内存存储介质之间对应关系,确定待恢复的日志单元对应的线性日志区,得到待恢复的元数据日志区和数据日志区。其中,该描述信息可以包括:待恢复的线性日志区的头地址、尾地址和该待恢复的线性日志区对应的日志单元的标识等。
步骤1002、第二存储节点从待恢复的元数据日志区中读取元数据,并根据该元数据重建索引表。
待恢复的元数据日志区分配有多个日志单元,每个日志单元中记载有多条元数据日志,每条元数据日志中记载有多个元数据,每个元数据为用于描述数据的描述信息。该描述信息可以包括:魔术字、循环冗余校验码(cyclic redundancy check,CRC)、版本号、待写入数据的key值、偏移量offset和数据长度len等。根据元数据可以重新创建数据的chunk,并且,根据元数据中的key值,可以确定该重新创建的chunk在索引表中的位置,然后可将该chunk插入索引表中,完成重建索引表。其中,根据元数据创建chunk的实现过程请相应参考前述日志镜像系统中创建chunk的实现过程。
需要说明的是,由于元数据是异步写入元数据日志区中的,因此,在第一存储节点出现故障时,可能存在部分元数据未写入元数据日志区中,此时,在重建索引表时,还可以根据待恢复的元数据日志区和数据日志区的信息,确定该未写入元数据日志区的元数据对应的数据,并在数据日志区中读取该部分数据的元数据,然后根据该部分数据的元数据完成索引表的重建。
综上所述,本申请实施例中的日志镜像方法,通过根据数据的元数据重建索引表,相较于通过遍历数据日志区实现索引表重建的相关技术,有效的提高了重建索引表的速度,能够减小接管出现故障的存储节点的业务所耗费的时长,提高了接管业务的效率。
在本申请实施例中,镜像存储节点接管存储节点的业务后,为保证Cahce的可靠性和业务连续性,还可以根据该镜像存储节点中存储的数据的副本,对该存储节点中的数据继续进行备份,该过程可以称为数据的持续镜像过程。下面以在第一存储节点故障后,对第二存储节点中的数据持续镜像为例,对该持续镜像的实现过程进行说明。如图11所示,持续镜像的实现过程可以包括:
步骤1101、当第一存储节点发生故障后,第二存储节点确定第四存储节点、第六日志单元和第七日志单元。
第四存储节点包括第四数据日志区和第三元数据日志区,第四数据日志区和第三元数据日志区均位于第四存储节点的第四内存存储介质中,第四数据日志区和第三元数据日志区均分配有多个日志单元,第六日志单元是第四数据日志区分配的多个日志单元中的一个日志单元,第七日志单元是第三元数据日志区分配的多个日志单元中的一个日志单元。
可选的,第二存储节点可以根据映射关系,及待写入数据的副本位于第二数据日志区的第二日志单元,确定第四存储节点和第六日志单元,并根据该映射关系及元数据的副本位于第二元数据日志区的第五日志单元,确定第四存储节点和第七日志单元。此时,该步骤1101中根据映射关系确定第四存储节点和第六日志单元的实现过程,请相应参考步骤703,根据映射关系确定第四存储节点和第七日志单元的实现过程请相应参考步骤707。
或者,在需要对第二存储节点中的数据副本进行持续镜像时,第二存储节点可以请求存储系统为其分配新的镜像日志单元,以得到对数据进行持续镜像的镜像日志单元和对元数据进行持续镜像的镜像日志单元。然后,该第二存储节点可以与新分配的镜像日志单元建立新的映射关系,并将该新的映射关系同步至新分配的镜像日志单元所在的存储节点。
其中,该对数据进行持续镜像的动作可以在第一存储节点发生故障后的指定时长后执行,也可以在存储系统检测到该第一存储节点发生故障时立即执行,也可以在第二存储节点接管第一存储节点的业务时立即执行,本申请实施例对其不作具体限定。
并且,在该步骤1101中,虽然是以待写入数据的镜像日志单元和元数据的镜像日志单元位于同一存储节点中进行说明的,但是,在持续镜像过程中,待写入数据的镜像日志单元和元数据的镜像日志单元也可以位于不同存储节点中。类似的,在该步骤1101中,是以对数据进行持续镜像的时机是在存储节点发生故障后进行说明的,但是,该持续镜像的过程也可以在第二存储节点中完成镜像过程后执行,甚至,为了保证存储系统中始终存在至少两个可访问的数据副本,也可以在对第一存储节点中的数据进行镜像时,将该第一存储节点中的数据镜像至多个存储节点,在该情况下,在第一存储节点发生故障时,可以选择一个镜像存储节点接管该第一存储节点的业务。
步骤1102、第二存储节点将待写入数据和元数据发送至第四存储节点,以指示第四存储节点将待写入数据的副本写入第六日志单元中,将元数据的副本写入第七日志单元中。
由于第二存储节点中需要持续镜像的数据通常较多,在进行持续镜像时,第一存储节点可以先遍历待同步的所有日志单元,然后利用RDMA技术将数据批量同步至第四存储节点。
需要说明的是,在持续镜像过程中,若第二存储节点的线性日志区中被写入了新的数据,该新的数据也会被同步镜像到第四存储节点中。
综上所述,本申请实施例中的日志镜像方法,通过对第一存储节点中的数据进行持续镜像,能够保障第一存储节点中的数据始终存在两个副本,保证了业务的连续性和可靠性。例如,假设第一存储节点中的数据在一个镜像存储节点上做镜像,在第一存储节点发生故障且故障清除之前,若该镜像存储节点再次故障,则第一存储节点中的该数据和镜像存储节点中的该数据的副本均不可访问,则会导致涉及该部分的数据的主机业务中断。通过对数据进行持续镜像,能够使存储系统中始终存在可访问的数据副本,因此,能够保证业务的连续性。
本申请实施例还提供了一种日志镜像系统,如图1所示,该日志镜像系统可以包括多个存储节点021。示例的,如图2所示,该日志镜像系统至少包括:第一存储节点021和第二存储节点021。
第一存储节点用于接收写数据请求,写数据请求携带有待写入数据。
第一存储节点用于将待写入数据写入第一存储节点的第一数据日志区,第一数据日志区位于第一存储节点的第一内存存储介质中,第一数据日志区分配有多个日志单元。
第一存储节点用于根据设定的映射关系和待写入数据位于第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元,第二存储节点包括第二数据日志区,第二数据日志区位于第二存储节点的第二内存存储介质中,第二数据日志区分配有多个日志单元,第二日志单元是第二数据日志区分配的多个日志单元中的一个日志单元,第一日志单元是第一数据日志区分配的多个日志单元中的一个日志单元。
第一存储节点用于将待写入数据发送至第二存储节点,以指示第二存储节点将待写入数据的副本写入第二日志单元中。
在一种可实现方式中,设定的映射关系包括:第一存储节点的第一日志单元与第二存储节点的第二日志单元之间的对应关系。
在另一种可实现方式中,如图2所示,该日志镜像系统还可以包括:第三存储节点,设定的映射关系还包括:第一存储节点的第三日志单元与第三存储节点的第四日志单元之间的对应关系,第三存储节点包括第三数据日志区,第三数据日志区位于第三存储节点的第三内存存储介质中,第三数据日志区分配有多个日志单元,第四日志单元是第三数据日志区分配的多个日志单元中的一个日志单元。
可选的,第一存储节点还用于将待写入数据的元数据写入第一存储节点的第一元数据日志区,元数据包括待写入数据的描述信息。
并且,第一存储节点还用于将元数据发送给第二存储节点,以指示第二存储节点将元数据的副本写入第二存储节点的第五日志单元中,第二存储节点包括第二元数据日志区,第二元数据日志区位于第二存储节点的第二内存存储介质中,第二元数据日志区分配有多个日志单元,第五日志单元是第二元数据日志区分配的多个日志单元中的另一个日志单元。
其中,第一存储节点将待写入数据的元数据写入第一存储节点的第一元数据日志区的实现过程可以包括:在第一存储节点接收到多个写数据请求后,若多个写数据请求中携带的待写入数据的元数据的总数据量大于或等于设定的数据量阈值时,第一存储节点具体用于将多个写数据请求中每个写数据请求携带的待写入数据的元数据写入第一存储节点的第一元数据日志区。
可选的,当第一存储节点发生故障时,第二存储节点用于根据第五日志单元中保存的元数据的副本恢复待写入数据的索引信息。
可选的,当第一存储节点发生故障后,第二存储节点还用于确定第四存储节点和第六日志单元和第七日志单元,将待写入数据和元数据发送至第四存储节点,以指示第四存储节点将待写入数据的副本写入第六日志单元中,将元数据的副本写入第七日志单元中。
其中,第四存储节点包括第四数据日志区和第三元数据日志区,第四数据日志区和第三元数据日志区均位于第四存储节点的第四内存存储介质中,第四数据日志区分配有多个日志单元,第六日志单元是第四数据日志区分配的多个日志单元中的一个日志单元,第三元数据日志区分配有多个日志单元,第七日志单元是第三元数据日志区分配的多个日志单元中的一个日志单元。
需要说明的是,由于上述实施例提供的日志镜像系统与日志镜像方法实施例属于同一构思,其具体实现过程请相应参数方法实施例中的实现过程,此处不再赘述。
本申请实施例还提供了一种服务器,该服务器包括:处理器和存储器,在处理器执行存储器中存储的计算程序时,服务器可以实现本申请实施例提供的日志镜像系统中任一存储节点的功能。
可选的,上述处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。
上述存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。
本申请实施例还提供了一种非易失性存储介质,所述存储介质中存储有计算程序,该计算程序由处理器执行,以实现本申请实施例提供的日志镜像系统中任一存储节点的功能。
本申请实施例还提供了一种包含指令的计算机程序产品,当所述计算机程序产品在日志镜像系统的存储节点上运行时,使得存储节点实现本申请实施例提供的日志镜像系统中任一存储节点的功能。
此外,在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(Digital Subscriber Line,DSL))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(Digital Versatile Disc,DVD))、或者半导体介质(例如:固态硬盘(Solid StateDisk,SSD))等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种日志镜像方法,其特征在于,所述方法应用于日志镜像系统,所述日志镜像系统至少包括:第一存储节点和第二存储节点,所述方法包括:
所述第一存储节点接收写数据请求,所述写数据请求携带有待写入数据;
所述第一存储节点将所述待写入数据写入所述第一存储节点的第一数据日志区,所述第一数据日志区位于所述第一存储节点的第一内存存储介质中,所述第一数据日志区分配有多个日志单元;
所述第一存储节点根据设定的映射关系和所述待写入数据位于所述第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元,所述第二存储节点包括第二数据日志区,所述第二数据日志区位于所述第二存储节点的第二内存存储介质中,所述第二数据日志区分配有多个日志单元,所述第二日志单元是所述第二数据日志区分配的多个日志单元中的一个日志单元,所述第一日志单元是所述第一数据日志区分配的多个日志单元中的一个日志单元;
所述第一存储节点将所述待写入数据发送至所述第二存储节点,以指示所述第二存储节点将所述待写入数据的副本写入所述第二日志单元中。
2.根据权1所述的方法,其特征在于,所述设定的映射关系包括:所述第一存储节点的第一日志单元与所述第二存储节点的第二日志单元之间的对应关系。
3.根据权2所述的方法,其特征在于,所述日志镜像系统还包括:第三存储节点,所述设定的映射关系还包括:所述第一存储节点的第三日志单元与所述第三存储节点的第四日志单元之间的对应关系,所述第三存储节点包括第三数据日志区,所述第三数据日志区位于所述第三存储节点的第三内存存储介质中,所述第三数据日志区分配有多个日志单元,所述第四日志单元是所述第三数据日志区分配的多个日志单元中的一个日志单元。
4.根据权1至3任一所述的方法,其特征在于,所述方法还包括:
所述第一存储节点将所述待写入数据的元数据写入所述第一存储节点的第一元数据日志区,所述元数据包括所述待写入数据的描述信息;
所述第一存储节点将所述元数据发送给所述第二存储节点,以指示所述第二存储节点将所述元数据的副本写入所述第二存储节点的第五日志单元中,所述第二存储节点包括第二元数据日志区,所述第二元数据日志区位于所述第二存储节点的第二内存存储介质中,所述第二元数据日志区分配有多个日志单元,所述第五日志单元是所述第二元数据日志区分配的多个日志单元中的另一个日志单元。
5.根据权4所述的方法,其特征在于,所述第一存储节点将所述待写入数据的元数据写入所述第一存储节点的第一元数据日志区,包括:
在所述第一存储节点接收到多个写数据请求后,若所述多个写数据请求中携带的待写入数据的元数据的总数据量大于或等于设定的数据量阈值时,所述第一存储节点将所述多个写数据请求中每个写数据请求携带的待写入数据的元数据写入所述第一存储节点的第一元数据日志区。
6.根据权4或5所述的方法,其特征在于,所述方法还包括:
当所述第一存储节点发生故障时,所述第二存储节点根据所述第五日志单元中保存的元数据的副本恢复所述待写入数据的索引信息。
7.根据权6所述的方法,其特征在于,所述方法还包括:
当所述第一存储节点发生故障后,所述第二存储节点确定第四存储节点和第六日志单元和第七日志单元;
所述第二存储节点将所述待写入数据和所述元数据发送至所述第四存储节点,以指示所述第四存储节点将所述待写入数据的副本写入所述第六日志单元中,将所述元数据的副本写入所述第七日志单元中;
其中,所述第四存储节点包括第四数据日志区和第三元数据日志区,所述第四数据日志区和所述第三元数据日志区均位于所述第四存储节点的第四内存存储介质中,所述第四数据日志区和所述第三元数据日志区均分配有多个日志单元,所述第六日志单元是所述第四数据日志区分配的多个日志单元中的一个日志单元,所述第七日志单元是所述第三元数据日志区分配的多个日志单元中的一个日志单元。
8.一种日志镜像系统,其特征在于,所述日志镜像系统至少包括:第一存储节点和第二存储节点;
所述第一存储节点用于接收写数据请求,所述写数据请求携带有待写入数据;
所述第一存储节点用于将所述待写入数据写入所述第一存储节点的第一数据日志区,所述第一数据日志区位于所述第一存储节点的第一内存存储介质中,所述第一数据日志区分配有多个日志单元;
所述第一存储节点用于根据设定的映射关系和所述待写入数据位于所述第一数据日志区的第一日志单元,确定第二存储节点和第二日志单元,所述第二存储节点包括第二数据日志区,所述第二数据日志区位于所述第二存储节点的第二内存存储介质中,所述第二数据日志区分配有多个日志单元,所述第二日志单元是所述第二数据日志区分配的多个日志单元中的一个日志单元,所述第一日志单元是所述第一数据日志区分配的多个日志单元中的一个日志单元;
所述第一存储节点用于将所述待写入数据发送至所述第二存储节点,以指示所述第二存储节点将所述待写入数据的副本写入所述第二日志单元中。
9.根据权8所述的系统,其特征在于,所述设定的映射关系包括:所述第一存储节点的第一日志单元与所述第二存储节点的第二日志单元之间的对应关系。
10.根据权9所述的系统,其特征在于,所述日志镜像系统还包括:第三存储节点,所述设定的映射关系还包括:所述第一存储节点的第三日志单元与所述第三存储节点的第四日志单元之间的对应关系,所述第三存储节点包括第三数据日志区,所述第三数据日志区位于所述第三存储节点的第三内存存储介质中,所述第三数据日志区分配有多个日志单元,所述第四日志单元是所述第三数据日志区分配的多个日志单元中的一个日志单元。
11.根据权8至10任一所述的系统,其特征在于,
所述第一存储节点还用于将所述待写入数据的元数据写入所述第一存储节点的第一元数据日志区,所述元数据包括所述待写入数据的描述信息;
所述第一存储节点还用于将所述元数据发送给所述第二存储节点,以指示所述第二存储节点将所述元数据的副本写入所述第二存储节点的第五日志单元中,所述第二存储节点包括第二元数据日志区,所述第二元数据日志区位于所述第二存储节点的第二内存存储介质中,所述第二元数据日志区分配有多个日志单元,所述第五日志单元是所述第二元数据日志区分配的多个日志单元中的另一个日志单元。
12.根据权11所述的系统,其特征在于,
在所述第一存储节点接收到多个写数据请求后,若所述多个写数据请求中携带的待写入数据的元数据的总数据量大于或等于设定的数据量阈值时,所述第一存储节点具体用于将所述多个写数据请求中每个写数据请求携带的待写入数据的元数据写入所述第一存储节点的第一元数据日志区。
13.根据权11或12所述的系统,其特征在于,
当所述第一存储节点发生故障时,所述第二存储节点用于根据所述第五日志单元中保存的元数据的副本恢复所述待写入数据的索引信息。
14.根据权13所述的系统,其特征在于,
当所述第一存储节点发生故障后,所述第二存储节点还用于确定第四存储节点和第六日志单元和第七日志单元;
所述第二存储节点还用于将所述待写入数据和所述元数据发送至所述第四存储节点,以指示所述第四存储节点将所述待写入数据的副本写入所述第六日志单元中,将所述元数据的副本写入所述第七日志单元中;
其中,所述第四存储节点包括第四数据日志区和第三元数据日志区,所述第四数据日志区和所述第三元数据日志区均位于所述第四存储节点的第四内存存储介质中,所述第四数据日志区和所述第三元数据日志区均分配有多个日志单元,所述第六日志单元是所述第四数据日志区分配的多个日志单元中的一个日志单元,所述第七日志单元是所述第三元数据日志区分配的多个日志单元中的一个日志单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910662735.3A CN112256657B (zh) | 2019-07-22 | 2019-07-22 | 日志镜像方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910662735.3A CN112256657B (zh) | 2019-07-22 | 2019-07-22 | 日志镜像方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112256657A true CN112256657A (zh) | 2021-01-22 |
CN112256657B CN112256657B (zh) | 2023-03-28 |
Family
ID=74224192
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910662735.3A Active CN112256657B (zh) | 2019-07-22 | 2019-07-22 | 日志镜像方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112256657B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986148A (zh) * | 2021-12-27 | 2022-01-28 | 苏州浪潮智能科技有限公司 | 一种数据读取方法、装置及相关设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188229A1 (en) * | 2002-03-26 | 2003-10-02 | Clark Lubbers | System and method for managing data logging memory in a storage area network |
US8069366B1 (en) * | 2009-04-29 | 2011-11-29 | Netapp, Inc. | Global write-log device for managing write logs of nodes of a cluster storage system |
CN102662607A (zh) * | 2012-03-29 | 2012-09-12 | 华中科技大学 | 一种raid6级别混合磁盘阵列及其性能加速和可靠性提高方法 |
CN103631539A (zh) * | 2013-12-13 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 基于擦除编码机制的分布式存储系统及其存储方法 |
US20170083535A1 (en) * | 2015-09-22 | 2017-03-23 | Facebook, Inc. | Managing sequential data store |
CN106648959A (zh) * | 2016-09-07 | 2017-05-10 | 华为技术有限公司 | 数据存储的方法和存储系统 |
US9699017B1 (en) * | 2013-09-25 | 2017-07-04 | Amazon Technologies, Inc. | Dynamic utilization of bandwidth for a quorum-based distributed storage system |
US9785510B1 (en) * | 2014-05-09 | 2017-10-10 | Amazon Technologies, Inc. | Variable data replication for storage implementing data backup |
CN108064374A (zh) * | 2017-08-10 | 2018-05-22 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN108108476A (zh) * | 2018-01-03 | 2018-06-01 | 中科边缘智慧信息科技(苏州)有限公司 | 高可靠分布式日志系统的工作方法 |
-
2019
- 2019-07-22 CN CN201910662735.3A patent/CN112256657B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188229A1 (en) * | 2002-03-26 | 2003-10-02 | Clark Lubbers | System and method for managing data logging memory in a storage area network |
US8069366B1 (en) * | 2009-04-29 | 2011-11-29 | Netapp, Inc. | Global write-log device for managing write logs of nodes of a cluster storage system |
CN102662607A (zh) * | 2012-03-29 | 2012-09-12 | 华中科技大学 | 一种raid6级别混合磁盘阵列及其性能加速和可靠性提高方法 |
US9699017B1 (en) * | 2013-09-25 | 2017-07-04 | Amazon Technologies, Inc. | Dynamic utilization of bandwidth for a quorum-based distributed storage system |
CN103631539A (zh) * | 2013-12-13 | 2014-03-12 | 百度在线网络技术(北京)有限公司 | 基于擦除编码机制的分布式存储系统及其存储方法 |
US9785510B1 (en) * | 2014-05-09 | 2017-10-10 | Amazon Technologies, Inc. | Variable data replication for storage implementing data backup |
US20170083535A1 (en) * | 2015-09-22 | 2017-03-23 | Facebook, Inc. | Managing sequential data store |
CN106648959A (zh) * | 2016-09-07 | 2017-05-10 | 华为技术有限公司 | 数据存储的方法和存储系统 |
CN108064374A (zh) * | 2017-08-10 | 2018-05-22 | 华为技术有限公司 | 一种数据访问方法、装置和系统 |
CN108108476A (zh) * | 2018-01-03 | 2018-06-01 | 中科边缘智慧信息科技(苏州)有限公司 | 高可靠分布式日志系统的工作方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113986148A (zh) * | 2021-12-27 | 2022-01-28 | 苏州浪潮智能科技有限公司 | 一种数据读取方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112256657B (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018040591A1 (zh) | 一种远程数据复制方法及系统 | |
US9910777B2 (en) | Enhanced integrity through atomic writes in cache | |
US8806115B1 (en) | NVRAM data organization using self-describing entities for predictable recovery after power-loss | |
US11422703B2 (en) | Data updating technology | |
US20160371186A1 (en) | Access-based eviction of blocks from solid state drive cache memory | |
US10649897B2 (en) | Access request processing method and apparatus, and computer device | |
US10769035B2 (en) | Key-value index recovery by log feed caching | |
AU2013403132B2 (en) | Data storage method, data storage apparatus, and storage device | |
JP2022512064A (ja) | 様々なデータ冗長性スキームを備えた、システムにおける利用可能なストレージ空間を改善すること | |
US11030092B2 (en) | Access request processing method and apparatus, and computer system | |
US20210334241A1 (en) | Non-disrputive transitioning between replication schemes | |
US20190042134A1 (en) | Storage control apparatus and deduplication method | |
US20180307440A1 (en) | Storage control apparatus and storage control method | |
US20220171676A1 (en) | Storage device with data deduplication, operation method of storage device, and operation method of storage server | |
US11775194B2 (en) | Data storage method and apparatus in distributed storage system, and computer program product | |
US11487428B2 (en) | Storage control apparatus and storage control method | |
CN112256657B (zh) | 日志镜像方法及系统 | |
US11609698B1 (en) | Data storage system and storage control method including storing a log related to the stored data | |
US20230236932A1 (en) | Storage system | |
JP2024061460A (ja) | ストレージシステムおよびストレージ制御方法 | |
CN115687170A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |