CN115357199B - 分布式存储***中的数据同步方法、***及存储介质 - Google Patents
分布式存储***中的数据同步方法、***及存储介质 Download PDFInfo
- Publication number
- CN115357199B CN115357199B CN202211281754.XA CN202211281754A CN115357199B CN 115357199 B CN115357199 B CN 115357199B CN 202211281754 A CN202211281754 A CN 202211281754A CN 115357199 B CN115357199 B CN 115357199B
- Authority
- CN
- China
- Prior art keywords
- data
- concurrent
- synchronization
- disk
- fragments
- 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.)
- Active
Links
Images
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/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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明揭示了一种分布式存储***中的数据同步方法、***及存储介质,所述方法包括以下步骤:S1、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和***中磁盘的读写能力,获取数据同步的最佳并发IO数量;S2、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条带轮动大小,获取并发读写的数据量;S3、采用最佳并发IO数量,并发读取完整状态的数据分片,并发写入缺失状态的数据分片。本发明在数据同步之前先获取最佳并发IO数量,从而可获得参与并发IO的磁盘数量,以此为依据决定同步行为,保证每一时刻都使得参与同步读写的磁盘全部都在工作,避免少数磁盘工作而其他磁盘闲置的现象,大大提高了数据同步效率。
Description
技术领域
本发明属于分布式存储技术领域,具体涉及一种分布式存储***中的数据同步方法、***及存储介质。
背景技术
当下的分布式存储***中的一种常见数据分布策略是把数据分割成有限数量的数据块,在创建存储对象的时候使用一些规则来自动生成这个存储对象的数据分布方案,并且把生成的分布方案使用元数据(metadata)存储服务记录下来。该方法比较适用于小型的分布式存储***,例如一体机这样的***,其好处是便于控制数据分片的位置,可以实现数据本地化等特殊场景的需求。
对于此种***中,当需要对一个分布式存储对象的数据分片做同步(resync)的时候,通常是对该存储对象从头到尾进行扫描式读取数据,并把读取到的数据写入stale状态的目标分片。
最简单的实现就是每次读取一定长度,然后把读到的数据写入目标分片的相应地址,然后再读取下一段数据,写入目标分片的下一个地址,如此循环直至整个存储对象已经遍历完成。
上述同步方案较为简单,性能上完全没有发挥出硬件的能力。因此一个显而易见的改进是采用并发式IO的方式进行读取-写入,可以有效提高数据同步的效率。
采用并发式IO虽可以显著提高数据同步效率,但是其实际效果仍然受环境参数的影响和制约,往往不能完全发挥出硬件能力。影响并发式IO的同步性能的重要参数包括:
1、存储后端的recordsize:即磁盘上的最小数据管理单元大小。来自前端的IO在经过分布式IO引擎切分并发送至各节点上之后,需要再按照存储后端的record size对齐、切分之后落盘;例如以xfs文件***作为存储后端的***的默认record size为512KB,而zfs文件***作为存储后端的***默认recordsize为128KB。为了提高后端读写效率,在分布式存储***中内部IO的大小往往会尽量对齐recordsize;
2、分布式存储的数据条带宽度(即Stripewidth);
3、分布式存储的数据条带轮动大小(即Stripesize或Striperotatesize);
Stripesize的大小不能随意设定,否则会影响存储***的性能。当Stripesize过大的时候,用户IO将集中在少量磁盘上,不能发挥分布式***IO的能力;当Stripesize过小的时候,由于IO过于分散,不利于Cache发挥预读取能力,影响读性能。故而常用的Stripesize多为1MB到10MB之间。
因此,针对上述技术问题,有必要提供一种分布式存储***中的数据同步方法、***及存储介质。
发明内容
有鉴于此,本发明的目的在于提供一种分布式存储***中的数据同步方法、***及存储介质,以实现分布式存储***中的数据同步。
为了实现上述目的,本发明一实施例提供的技术方案如下:
一种分布式存储***中的数据同步方法,所述方法包括以下步骤:
S1、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和***中磁盘的读写能力,获取数据同步的最佳并发IO数量;
S2、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条带轮动大小,获取并发读写的数据量;
S3、采用最佳并发IO数量,并发读取完整状态的数据分片,并发写入缺失状态的数据分片。
一实施例中,所述步骤S3具体为:
采用最佳并发IO数量,从第一磁盘中并发读取完整状态的数据分片,向第二磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数等于缺失状态的数据分片数,即第一磁盘数量与第二磁盘数量相等。
一实施例中,所述步骤S1中参与同步的数据分片为缺失状态的数据分片,***中磁盘的读写能力为第一磁盘的读写能力。
一实施例中,所述步骤S1中数据同步的最佳并发IO数量为w*qd,其中,w为缺失状态的数据分片在数据条带中覆盖的数据块的数量,且w≤W,W为数据条带宽度,qd为所有第一磁盘最佳并发读写数的最低值。
一实施例中,所述步骤S3具体为:
采用最佳并发IO数量,从第三磁盘中并发读取完整状态的数据分片,向第三磁盘及第四磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数小于缺失状态的数据分片数;或,
采用最佳并发IO数量,从第三磁盘中并发读取完整状态的数据分片,向部分第三磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数大于缺失状态的数据分片数。
一实施例中,所述步骤S1中参与同步的数据分片为完整状态的数据分片,***中磁盘的读写能力为用于存储完整状态的数据分片所对应磁盘的读写能力。
一实施例中,所述步骤S1中数据同步的最佳并发IO数量为w*qd*n,其中,w为完整状态的数据分片在数据条带中覆盖的数据块的数量,且w≤W,W为同步前的数据条带宽度,qd为所有第三磁盘最佳并发读写数的最低值,n为副本数量。
一实施例中,所述步骤S2中并发读写的数据量为数据同步的最佳并发IO数量与单个IO读写最大数据量的乘积,其中,单个IO读写最大数据量为磁盘上最小数据管理单元的大小。
一实施例中,所述步骤S3中并发读取或并发写入的数据分片数量为一个数据条带中覆盖的数据块的数量。
一实施例中,所述方法还包括:
判断是否所有完成所有数据分片的读取和写入;
若是,则将当前数据条带中写入的数据分片状态更新为完整状态;
若否,执行下一数据条带中数据分片的读取和写入。
本发明一实施例提供的技术方案如下:
一种分布式存储***中的数据同步***,所述***包括:
并发IO数量确定单元,用于根据参与同步的数据分片在数据条带中覆盖的数据块的数量和***中磁盘的读写能力,获取数据同步的最佳并发IO数量;
数据量确定单元,用于根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条带轮动大小,获取并发读写的数据量;
同步单元,用于采用最佳并发IO数量,并发读取完整状态的数据分片,并发写入缺失状态的数据分片。
本发明又一实施例提供的技术方案如下:
一种机器可读存储介质,其存储有可执行指令,当所述指令被执行时使得所述机器执行上述的数据同步方法。
本发明具有以下有益效果:
本发明在数据同步之前先获取最佳并发IO数量,从而可获得参与并发IO的磁盘数量,以此为依据决定同步行为,保证每一时刻都使得参与同步读写的磁盘全部都在工作,避免少数磁盘工作而其他磁盘闲置的现象,大大提高了数据同步效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明中经过条带化的数据分布示例图。
图2为本发明场景一中经过条带化和副本化的数据分布示例图。
图3为本发明场景一中具有状态标识的数据分布示例图。
图4为本发明对比例中数据同步方法的流程示意图。
图5为本发明实施例一中数据同步方法的流程示意图。
图6为本发明本发明场景二中经过条带化和副本化的数据分布示例图。
图7为本发明场景二中具有状态标识的数据分布示例图。
图8为本发明分布式存储***中数据同步***的模块示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
为了方便理解本发明实施例,首先在此介绍本发明实施例描述中会引入的几个要素。
分布式存储单元:分布式存储***对外提供的存储服务所展现的用户可以创建、删除、读写等操作的一个存储实例,例如分布式块存储提供的分布式块设备、分布式文件存储提供的分布式文件、一个分布式对象存储的分布式对象等。在由于本文只讨论分布式存储***,因此本文中也简写为存储单元。
Cache:有两层含义,首先是指使用高速设备对低速设备上的数据进行缓存,从而提高I/O(读取-写入)性能的一种广泛应用的技术;第二就是指在该技术中使用的高速设备。分布式存储***上常见的是后端存储的cache,也叫本地缓存、本地cache或localcache,指在分布式存储***的具体节点内部使用的cache,***中不能跨节点缓存数据。
Segment:数据块或数据段,分布式存储***中一个存储单元被切成多个大小相同的数据块,这样的数据块称为Segment。
如图1所示,一个6M的大块数据,将这些数据切割成6个大小为1MB的数据块,分别为Segment 0~ Segment 5。
Stripe:数据条带。指一系列连续的Segment,这些Segment正好完成了一次轮动。
如图1所示,分布式存储单元的Stripewidth为3,则Segment 0到Segment 2完成一次轮动,称为一个Stripe,即Stripe 0,同样地,Segment 3到Segment 5也完成一次轮动,称为一个Stripe,即Stripe 1。
Stripewidth:分布式存储的数据条带宽度,即把一个分布式存储单元切分得到的数据分片的数量。
Stripesize:分布式存储的数据条带轮动大小(也叫Striperotatesize),即在一个数据条带上连续存储的逻辑数据地址空间的大小。
如图1所示,分布式存储单元上的Stripesize为1MB,Stripewidth为3,此时用户写入offset为0、length为6M的一个大块数据,则这些数据将被切割成6个大小为1MB的数据块,0~1MB数据块Segment 0写入Stripe 0,1~2MB数据块Segment 1写入Stripe1,2~3MB数据块Segment 2写入Stripe2,3~4MB数据块Segment 3回到Stripe0,4~5MB数据块Segment 4写入Stripe1,5~6MB数据块Segment 5写入Stripe2。
Mirror:镜像数据副本,指保存了相同数据的数据块,简称副本。在分布式存储***中用保存多个副本的方式来提高数据的可用性,可以容忍一定的硬件故障而数据不丢失。
Replica:数据分片。指通过条带化和多副本处理之后得到的若干数据块或数据段的集合。
如图1所示,分布式存储单元中数据块Segment 0和Segment 3作为一个数据分片Replica 0存储于磁盘disk 0中,数据块Segment 1和Segment 4作为一个数据分片Replica1存储于磁盘disk 1中,数据块Segment 2和Segment 5作为一个数据分片Replica 2存储于磁盘disk 2中。
Uptodate:在本申请中Uptodate Replica指分布式存储***中拥有完整数据的数据分片。
Stale:在本申请中Stale Replica指分布式存储***中处于缺失数据状态的数据分片。
Resync:同步。在本申请中指向分布式存储***中Stale状态的数据分片中写入数据,使之拥有全部数据,状态变为Uptodate的过程,即由Stale Replica变为UptodateReplica的过程。
以下结合具体应用场景和实施例对本发明作进一步说明。
场景一:
参图2所示为场景一中经过条带化和副本化的数据分布示例图,图中仅示出了前16个Segment,以下即以16个Segment为例进行说明。
于该场景下,分布式存储***中存储的数据块为Segment0~Segment15共16个数据库,被划分为4个数据条带Stripe0~ Stripe3,每个Stripe包括4个Segment,每个Segment保存有2份副本mirror0和mirror1,共计使用了8块磁盘disk0~disk7。
具体地,Stripe0包括数据块Segment0~Segment3;Stripe1包括数据块Segment4~Segment7;Stripe2包括数据块Segment8~Segment11;Stripe3包括数据块Segment12~Segment15。
Segment0、Segment4、Segment8、Segment12的2份副本mirror0和mirror1对应保存在磁盘disk0和disk1上;
Segment1、Segment5、Segment9、Segment13的2份副本mirror0和mirror1对应保存在磁盘disk2和disk3上;
Segment2、Segment6、Segment10、Segment14的2份副本mirror0和mirror1对应保存在磁盘disk4和disk5上;
Segment3、Segment7、Segment11、Segment15的2份副本mirror0和mirror1对应保存在磁盘disk6和disk7上。
本场景下的数据同步是从副本mirror0的状态迁移到副本mirror1的过程,也就是说一开始每个Segment只有一个副本mirror 0,通过修改数据存储安全策略使之变成每个Segment都增加了一个副本(mirror 1),所以每个副本mirror1对应的数据分片起始状态都为Stale,需要通过Resync填充数据才可以变成Uptodate状态。图3所示为具有状态标识的数据分布示例图,填充有灰色的为Stale Replica(缺失状态的数据分片),无填充的为Uptodate Replica(完整状态的数据分片),可见,本场景下所有的Segment都有StaleReplica。
参图4所示为本发明对比例中数据同步方法的流程示意图,该方法为普通的并发IO同步方法,步骤如下:
S1、根据***默认的并发IO数量并发读取offset位置一定范围的数据分片,并发写入缺失状态的数据分片,并移动offset位置到下一个未读取的数据分片。
S2、判断是否完成所有数据分片的读取和写入;
若是,则将写入的数据分片状态更新为完整状态;
若否,重复步骤S1。
本对比例中普通的并发IO同步方法没有分析当前Stale Replica覆盖了多少个Segment的过程,因此只是简单采取固定数量的并发IO数量进行读写操作。
应当理解的是,本发明中的并发IO可以采用多线程模式,亦或采用单线程+异步IO的模式,示例性地,本发明各对比例及实施例中均以多线程模式进行说明,并发IO数量与并发线程数量相等。
示例性地,假设当前Stripesize为1MB,每个IO可以读写的最大数据量为128KB,默认并发IO数量为8,则8个IOs可以覆盖的数据量为1MB,也就是正好是1个Stripesize,因此同步过程中的IO常常全部落在1个disk上,最多使用到2个disk的磁盘IO能力。
参图5所示为本发明实施例一中数据同步方法的流程示意图,定义第一磁盘为disk0、2、4、6,第二磁盘为disk1、3、5、7。具体数据同步方法具体步骤如下:
S1、根据参与同步的数据分片在数据条带(Stripe)中覆盖的数据块(Segment)的数量和***中磁盘的读写能力,获取数据同步的最佳并发IO数量。
本实施例中参与同步的数据分片为缺失状态的数据分片(Stale Replica),***中磁盘的读写能力为第一磁盘(disk0、2、4、6)的读写能力。
针对场景一,为了能够最大化***的数据同步性能,需要能够使得所有需要参与同步的数据条带(Stripe)对应的磁盘都参与IO,且发挥出磁盘本身的IO能力。所以首先需要根据当前Stale Replica的情况来确定有多少个Segment参与到本次resync的过程中。设当前参与同步的Stale Replica所覆盖的Segment数量为w,当前需要同步的分布式存储单元的数据条带宽度(Stripewidth)为 W,w≤W。
此外还需要确定为最大化使用磁盘的IO能力,每个Segment需要对应分配给一定的并发IO数量。对于不同的磁盘,发挥最佳性能的并发IO数量是不一定的,如每分钟15000转的磁盘的最佳并发IO数量显然比每分钟10000转的磁盘最佳并发IO数量高。此处不讨论具体的数量,只假设当前***中各第一磁盘最佳并发IO数量的最低值为qd,为每个Segment都分配qd个IO。
于是,本示例中可以最终确定数据同步的最佳并发IO数量为w*qd,其中,w为缺失状态的数据分片在数据条带中覆盖的数据块的数量,且w≤W,W为数据条带宽度,qd为所有第一磁盘最佳并发读写数的最低值,并发IO数量的最大值为W*qd。
例如,在场景一中Stale Replica覆盖了Stripe中所有的4个不同的Segment,disk0、2、4、6最佳并发读写数的最低值为qd=8,则会为每个Segment分配8个IO,总共是qd*Stripewidth = 8 * 4 = 32个IO。
S2、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条带轮动大小,获取并发读写的数据量。
本实施例中并发读写的数据量为数据同步的最佳并发IO数量与单个IO读写最大数据量的乘积,其中,单个IO读写最大数据量为磁盘上最小数据管理单元的大小。
参与同步的数据分片为缺失状态的数据分片(Stale Replica),数据条带轮动大小为Stripesize。
例如,在场景一中数据同步的最佳并发IO数量为32,单个IO读写最大数据量为磁盘上最小数据管理单元的大小(IO size),以zfs文件***作为存储后端为例,IO size对齐存储后端的recordsize,大小为128K。则每次并发读写的数据量为qd*Stripewidth*IOsize=Stripesize*Stripewidth=4MB。
可见,本实施例的数据同步过程中,每次可以并发读取一个数据条带Stripe的数据量。
S3、采用最佳并发IO数量,并发读取完整状态的数据分片,并发写入缺失状态的数据分片。
采用最佳并发IO数量,从第一磁盘中并发读取完整状态的数据分片,向第二磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数等于缺失状态的数据分片数,即第一磁盘数量与第二磁盘数量相等。
本步骤的基本思想是每次读一个完整条带内的数据,但是可以跳过StaleReplica未覆盖的数据块对应的数据,这样就可以准确地把每个数据块对应分配适合相应磁盘能力数量的进程。
例如,在场景一中首先确定最佳并发IO数量为32,为每个Segment分配8个IO,从磁盘disk1、2、4、6的副本mirror0中并发读取Segment 0~3的数据,而后对应写入磁盘disk1、2、4、6的副本mirror1中,从而完成Stripe 0中的数据同步。
进一步地,判断是否完成所有数据分片的读取和写入;
若是,则将当前数据条带中写入的数据分片状态更新为完整状态(Uptodate);
若否,执行下一数据条带中数据分片的读取和写入。
示例性地,在场景一中依次完成Stripe 0、Stripe 1、Stripe 2、Stripe 3中的数据同步,Segment 0~15对应副本mirror 0中的数据均同步至mirror 1中后,完成整个存储***的数据同步,即完成由Stale Replica变为Uptodate Replica的过程。
比较对比例和实施例一可知,对比例在数据同步过程采用固定的并发IO数量进行读写操作,仅使用了1~2个磁盘的IO能力,而实施例一种采用最佳并发IO数量进行读写操作,使用全部4个磁盘参与IO,充分发挥了磁盘本身的IO能力。
采用本发明新的数据同步方法,比之简单的并发IO同步方法可以显著提高同步效率,其具体效果视具体的***配置和场景而不同。尤其在典型的全量同步场景中,即StaleReplica可以覆盖所有Segment的场景下,同步效果最好。
通常***默认并发IO数量ops都是高于单个磁盘最佳并发IO数量qd的,这时磁盘输出的IOps两者大致相当,但是按***默认并发IO数量则延时明显升高。也就是说改进过的数据同步方案下单一磁盘吞吐能力也要优于未改进时。为了便于计算,本发明中忽略这部分的提高。则改进后的方案其IO能力的改进就在于其可以使得更多的磁盘参与IO。
假设默认并发IO数量为ops,每个IO处理的最大数据长度为len,分布式存储单元设定的Stripesize为sz,stripewidth为sw:
则普通并发IO同步在同一时间内参与IO的磁盘数为
改进之后的同一时间内参与IO的磁盘数为Stale Replica所覆盖的Segment数量,设其为sn;则sn≤Stripewidth。
性能提高比例即为二者的比值,即读写性能的提升比例可以近似为:
场景二:
参图6所示为场景二中经过条带化和副本化的数据分布示例图,无填充的为Uptodate Replica(完整状态的数据分片)。图中仅示出了前16个Segment,以下即以16个Segment为例进行说明。
于该场景下,分布式存储***中存储的数据块为Segment0~Segment15共16个数据库,被划分为4个数据条带Stripe0~ Stripe3,每个Stripe包括4个Segment,每个Segment保存有2份副本mirror0和mirror1,共计使用了8块磁盘disk0~disk7。
具体地,Stripe0包括数据块Segment0~Segment3;Stripe1包括数据块Segment4~Segment7;Stripe2包括数据块Segment8~Segment11;Stripe3包括数据块Segment12~Segment15。
Segment0、Segment4、Segment8、Segment12的2份副本mirror0和mirror1对应保存在磁盘disk0和disk1上;
Segment1、Segment5、Segment9、Segment13的2份副本mirror0和mirror1对应保存在磁盘disk2和disk3上;
Segment2、Segment6、Segment10、Segment14的2份副本mirror0和mirror1对应保存在磁盘disk4和disk5上;
Segment3、Segment7、Segment11、Segment15的2份副本mirror0和mirror1对应保存在磁盘disk6和disk7上。
本场景是对磁盘进行扩容,将原有的8个磁盘扩容至10个磁盘,并将原***中的数据全部同步至扩容后的***中。图7所示为具有状态标识的数据分布示例图,填充有灰色的为Stale Replica(缺失状态的数据分片),无填充的为Uptodate Replica(完整状态的数据分片)。
扩容前***包括disk 0~7共8个磁盘,包括Stripe 0~3共4个数据条带,Stripewidth=4,每个数据条带中包括4个Segment,每个Segment对应两个副本mirror 0和mirror 1;扩容后***包括disk 0~9共10个磁盘,包括Stripe 0~3共4个数据条带,Stripewidth=5,每个数据条带中包括5个Segment,每个Segment对应两个副本mirror 0和mirror 1。
本发明实施例二中定义第三磁盘为disk0~disk 7,第四磁盘为disk 8和disk 9。具体数据同步方法具体步骤如下:
S1、根据参与同步的数据分片在数据条带(Stripe)中覆盖的数据块(Segment)的数量和***中磁盘的读写能力,获取数据同步的最佳并发IO数量。
与实施例一不同的是,本实施例中参与同步的数据分片为完整状态的数据分片(Uptodate Replica),***中磁盘的读写能力为用于存储完整状态的数据分片所对应磁盘(即第三磁盘disk 0~disk 7)的读写能力。
于是,本示例中可以最终确定数据同步的最佳并发IO数量为w*qd*n,其中,w为完整状态的数据分片在数据条带中覆盖的数据块的数量,且w≤W,W为数据条带宽度,qd为所有第三磁盘最佳并发读写数的最低值,并发IO数量的最大值为W*qd,n为副本数量。
例如,在场景二中Uptodate Replica覆盖了Stripe中所有的4个不同的Segment,disk 0~disk 7最佳并发读写数的最低值为qd=8,副本数量n=2,则会为每个Segment分配8*2个IO,总共是qd*Stripewidth*n = 8 * 4 * 2= 64个IO。
S2、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条带轮动大小,获取并发读写的数据量。
参与同步的数据分片为完整状态的数据分片(Uptodate Replica),数据条带轮动大小为Stripesize。
例如,在场景二中数据同步的最佳并发IO数量为64,单个IO读写最大数据量为磁盘上最小数据管理单元的大小(IO size),以zfs文件***作为存储后端为例,IO size对齐存储后端的recordsize,大小为128K。则每次并发读写的数据量为qd*Stripewidth*IOsize=8MB。
可见,本实施例的数据同步过程中,每次可以并发读取一个数据条带Stripe的数据量。
S3、采用最佳并发IO数量,并发读取完整状态的数据分片,并发写入缺失状态的数据分片。
采用最佳并发IO数量,从第三磁盘中并发读取完整状态的数据分片,向第三磁盘及第四磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数小于缺失状态的数据分片数。
例如,在场景二中首先确定最佳并发IO数量为64,为每个Segment对应的每个副本分配8个IO,从磁盘disk 0~disk 7的副本mirror0和mirror1中并发读取Segment 0~3的数据,而后对应写入磁盘disk 0~ disk 9的副本mirror 0和mirror1中,从而完成Stripe 0中的数据同步。
在场景一中依次完成Stripe 0、Stripe 1、Stripe 2、Stripe 3中的数据同步,Segment 0~15对应副本mirror 0和mirror 1中的数据均同步至扩容后的***,完成整个存储***的扩容,数据分片完成由Stale Replica变为Uptodate Replica的过程。
上述实施例二为存储***扩容场景中数据同步方法,在其他实施例中该数据同步方法也可以应用于存储***缩容场景中,如将第三磁盘disk 0~disk 9中的数据分片同步至部分第三磁盘disk 0~disk7中,具体的数据同步方法与实施例二类似,此处不再进行赘述。
参图8所示,本发明还公开了一种分布式存储***中的数据同步***,包括:
并发IO数量确定单元10,用于根据参与同步的数据分片在数据条带中覆盖的数据块的数量和***中磁盘的读写能力,获取数据同步的最佳并发IO数量;
数据量确定单元20,用于根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条带轮动大小,获取并发读写的数据量;
同步单元30,用于采用最佳并发IO数量,并发读取完整状态的数据分片,并发写入缺失状态的数据分片。
其中,并发IO数量确定单元、数据量确定单元与同步单元的具体执行过程参上述数据同步方法,此处不再进行赘述。
本发明还公开了一种机器可读存储介质,其存储有可执行指令,当指令被执行时使得机器执行上述的数据同步方法。
具体地,可以提供配有可读存储介质的***或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该***或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本说明书的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本说明书的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各***结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理客户实现,或者,有些单元可能分由多个物理客户实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所对应的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (13)
1.一种分布式存储***中的数据同步方法,其特征在于,所述方法包括以
下步骤:
S1、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和***中
磁盘的读写能力,获取数据同步的最佳并发 IO 数量;
S2、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条
带轮动大小,获取并发读写的数据量;
S3、采用最佳并发 IO 数量,并发读取完整状态的数据分片,并发写入缺失
状态的数据分片;
所述步骤 S3 具体为:
采用最佳并发 IO 数量,从第一磁盘中并发读取完整状态的数据分片,向第
二磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数等于缺失
状态的数据分片数,即第一磁盘数量与第二磁盘数量相等;
所述步骤 S1 中参与同步的数据分片为缺失状态的数据分片,***中磁盘的
读写能力为第一磁盘的读写能力。
2.根据权利要求 1 所述的分布式存储***中的数据同步方法,其特征在于,
所述步骤 S1 中数据同步的最佳并发 IO 数量为 w*qd,其中,w 为缺失状态的数据分片在数据条带中覆盖的数据块的数量,且 w≤W,W 为数据条带宽度,qd
为所有第一磁盘最佳并发读写数的最低值。
3.根据权利要求 2 所述的分布式存储***中的数据同步方法,其特征在于,
所述步骤 S2 中并发读写的数据量为数据同步的最佳并发 IO 数量与单个 IO 读写最大数据量的乘积,其中,单个 IO 读写最大数据量为磁盘上最小数据管理单元的大小。
4.根据权利要求 1 所述的分布式存储***中的数据同步方法,其特征在于,
所述步骤 S3 中并发读取或并发写入的数据分片数量为一个数据条带中覆盖的数据块的数量。
5.根据权利要求 4 所述的分布式存储***中的数据同步方法,其特征在于,
所述方法还包括:
判断是否所有完成所有数据分片的读取和写入;
若是,则将当前数据条带中写入的数据分片状态更新为完整状态;
若否,执行下一数据条带中数据分片的读取和写入。
6.一种分布式存储***中的数据同步方法,其特征在于,所述方法包括以
下步骤:
S1、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和***中
磁盘的读写能力,获取数据同步的最佳并发 IO 数量;
S2、根据参与同步的数据分片在数据条带中覆盖的数据块的数量和数据条
带轮动大小,获取并发读写的数据量;
S3、采用最佳并发 IO 数量,并发读取完整状态的数据分片,并发写入缺失
状态的数据分片;
所述步骤 S3 具体为:
采用最佳并发 IO 数量,从第三磁盘中并发读取完整状态的数据分片,向第
三磁盘及第四磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片
数小于缺失状态的数据分片数;或,
采用最佳并发 IO 数量,从第三磁盘中并发读取完整状态的数据分片,向部
分第三磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数大于
缺失状态的数据分片数;
所述步骤 S1 中参与同步的数据分片为完整状态的数据分片,***中磁盘的
读写能力为用于存储完整状态的数据分片所对应磁盘的读写能力。
7.根据权利要求 6 所述的分布式存储***中的数据同步方法,其特征在于,
所述步骤 S1 中数据同步的最佳并发 IO 数量为 w*qd*n,其中,w 为完整状态的数据分片在数据条带中覆盖的数据块的数量,且 w≤W,W 为同步前的数据条
带宽度,qd 为所有第三磁盘最佳并发读写数的最低值,n 为副本数量。
8.根据权利要求 7 所述的分布式存储***中的数据同步方法,其特征在于,
所述步骤 S2 中并发读写的数据量为数据同步的最佳并发 IO 数量与单个 IO 读写最大数据量的乘积,其中,单个 IO 读写最大数据量为磁盘上最小数据管理单元的大小。
9.根据权利要求 6 所述的分布式存储***中的数据同步方法,其特征在于,
所述步骤 S3 中并发读取或并发写入的数据分片数量为一个数据条带中覆盖的数据块的数量。
10.根据权利要求 9 所述的分布式存储***中的数据同步方法,其特征在
于,所述方法还包括:
判断是否所有完成所有数据分片的读取和写入;
若是,则将当前数据条带中写入的数据分片状态更新为完整状态;
若否,执行下一数据条带中数据分片的读取和写入。
11.一种分布式存储***中的数据同步***,其特征在于,所述***包括:
并发 IO 数量确定单元,用于根据参与同步的数据分片在数据条带中覆盖的
数据块的数量和***中磁盘的读写能力,获取数据同步的最佳并发 IO 数量;
数据量确定单元,用于根据参与同步的数据分片在数据条带中覆盖的数据
块的数量和数据条带轮动大小,获取并发读写的数据量;
同步单元,用于采用最佳并发 IO 数量,并发读取完整状态的数据分片,并
发写入缺失状态的数据分片;
所述同步单元还用于:采用最佳并发 IO 数量,从第一磁盘中并发读取完整状态的数据分片,向第二磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数等于缺失状态的数据分片数,即第一磁盘数量与第二磁盘数量相等;
所述并发 IO 数量确定单元中,参与同步的数据分片为缺失状态的数据分片,
***中磁盘的读写能力为第一磁盘的读写能力。
12.一种分布式存储***中的数据同步***,其特征在于,所述***包括:
并发 IO 数量确定单元,用于根据参与同步的数据分片在数据条带中覆盖的
数据块的数量和***中磁盘的读写能力,获取数据同步的最佳并发 IO 数量;
数据量确定单元,用于根据参与同步的数据分片在数据条带中覆盖的数据
块的数量和数据条带轮动大小,获取并发读写的数据量;
同步单元,用于采用最佳并发 IO 数量,并发读取完整状态的数据分片,并
发写入缺失状态的数据分片;
采用最佳并发 IO 数量,从第三磁盘中并发读取完整状态的数据分片,向第
三磁盘及第四磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片
数小于缺失状态的数据分片数;或,
采用最佳并发 IO 数量,从第三磁盘中并发读取完整状态的数据分片,向部
分第三磁盘中并发写入缺失状态的数据分片,其中,完整状态的数据分片数大于
缺失状态的数据分片数;
所述并发 IO 数量确定单元中,参与同步的数据分片为完整状态的数据分片,
***中磁盘的读写能力为用于存储完整状态的数据分片所对应磁盘的读写能力。
13.一种机器可读存储介质,其存储有可执行指令,当所述指令被执行时使
得所述机器执行如权利要求 1 至 10 中任一所述的数据同步方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211281754.XA CN115357199B (zh) | 2022-10-19 | 2022-10-19 | 分布式存储***中的数据同步方法、***及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211281754.XA CN115357199B (zh) | 2022-10-19 | 2022-10-19 | 分布式存储***中的数据同步方法、***及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115357199A CN115357199A (zh) | 2022-11-18 |
CN115357199B true CN115357199B (zh) | 2023-02-10 |
Family
ID=84007777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211281754.XA Active CN115357199B (zh) | 2022-10-19 | 2022-10-19 | 分布式存储***中的数据同步方法、***及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115357199B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017173919A1 (zh) * | 2016-04-07 | 2017-10-12 | 武汉数字派特科技有限公司 | 一种并发数据的缓存方法及结构 |
CN107632780A (zh) * | 2017-08-28 | 2018-01-26 | 深圳市云舒网络技术有限公司 | 一种基于分布式存储***的条带卷实现方法及其存储架构 |
CN110427156A (zh) * | 2019-07-16 | 2019-11-08 | 华中科技大学 | 一种基于分片的mbr的并行读方法 |
CN114415976A (zh) * | 2022-03-28 | 2022-04-29 | 深圳市杉岩数据技术有限公司 | 一种分布式数据存储***与方法 |
-
2022
- 2022-10-19 CN CN202211281754.XA patent/CN115357199B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017173919A1 (zh) * | 2016-04-07 | 2017-10-12 | 武汉数字派特科技有限公司 | 一种并发数据的缓存方法及结构 |
CN107632780A (zh) * | 2017-08-28 | 2018-01-26 | 深圳市云舒网络技术有限公司 | 一种基于分布式存储***的条带卷实现方法及其存储架构 |
CN110427156A (zh) * | 2019-07-16 | 2019-11-08 | 华中科技大学 | 一种基于分片的mbr的并行读方法 |
CN114415976A (zh) * | 2022-03-28 | 2022-04-29 | 深圳市杉岩数据技术有限公司 | 一种分布式数据存储***与方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115357199A (zh) | 2022-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180307413A1 (en) | Control of storage of data in a hybrid storage system | |
CN108647151A (zh) | 一种全闪***元数据落盘方法、装置、设备及存储介质 | |
CN112565325B (zh) | 镜像文件管理方法、装置及***、计算机设备、存储介质 | |
CN104111804A (zh) | 一种分布式文件*** | |
TWI531901B (zh) | 群組表資料沖除技術 | |
CN101783740B (zh) | 消息文件管理方法及装置 | |
CN114443364B (zh) | 一种分布式块存储数据处理方法、装置、设备及存储介质 | |
KR101548689B1 (ko) | 파일 시스템에서의 부분 가비지 컬렉션 방법 및 장치 | |
CN108089825B (zh) | 一种基于分布式集群的存储*** | |
CN113138945B (zh) | 一种数据缓存方法、装置、设备及介质 | |
CN111813813B (zh) | 一种数据管理方法、装置、设备及存储介质 | |
CN110597762A (zh) | 文件处理方法、装置、设备及存储介质 | |
CN112995257B (zh) | 基于云存储架构的缓存扩容方法、装置以及存储介质 | |
JP2001067786A (ja) | 記録再生装置 | |
WO2021231000A1 (en) | Managing snapshotting of a dataset using an ordered set of b+ trees | |
KR101046083B1 (ko) | 정보 기록 매체의 데이터 처리 장치 및 데이터 기록 방법 | |
CN115357199B (zh) | 分布式存储***中的数据同步方法、***及存储介质 | |
JP6406283B2 (ja) | ストレージ装置およびストレージ方法 | |
CN109726211A (zh) | 一种分布式时序数据库 | |
CN109521957A (zh) | 一种数据处理方法和装置 | |
EP4394575A1 (en) | Data processing method and storage system | |
CN112286448B (zh) | 对象访问方法、装置、电子设备及机器可读存储介质 | |
CN111399774B (zh) | 分布式存储***下基于快照的数据处理方法和装置 | |
CN112579543A (zh) | 分布式文件***的元数据动态管理方法及分布式文件*** | |
CN109885552B (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 |