CN113806133A - 一种数据写入方法和装置 - Google Patents
一种数据写入方法和装置 Download PDFInfo
- Publication number
- CN113806133A CN113806133A CN202010536546.4A CN202010536546A CN113806133A CN 113806133 A CN113806133 A CN 113806133A CN 202010536546 A CN202010536546 A CN 202010536546A CN 113806133 A CN113806133 A CN 113806133A
- Authority
- CN
- China
- Prior art keywords
- fragments
- check
- data
- server
- compressed
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请实施例提供一种分布式内存读写方法和装置,所述方法包括:根据待写数据生成n个数据分片和m个校验分片;对所述m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片;分别写入所述n个数据分片和所述m个压缩校验分片。通过本申请实施例提供的方法,节省了数据存储空间,减少了存储成本。
Description
技术领域
本申请涉及计算机技术领域,具体涉及对计算机的数据写入方法和装置。
背景技术
为保障数据的可靠性,一般会将数据分成多个分片数据,然后根据分片生成校验数据,并将分片数据和校验数据分别存储在不同设备上,这样,如果有数据损坏,则可以通过校验分片恢复损坏的数据。例如现在常用的磁盘阵列(Redundant Arrays ofIndependent Disks,RAID)算法及纠删码(Erasure Coding,EC)算法。
但是校验数据只有在数据丢失时才会使用,使用的几率比较少,但却要和分片数据同样存储,所以占用了存储空间。
发明内容
本申请实施例旨在提供一种更有效的数据写入方法,以解决现有技术中的不足。
为实现上述目的,本申请一方面提供一种数据写入方法,由服务器执行,所述方法包括:根据待写数据生成n个数据分片和m个校验分片;对所述m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片;分别写入所述n个数据分片和所述m个压缩校验分片。在该方法中,通过对校验分片进行压缩,节省了数据存储空间。
在一种实施方式中,所述分别写入所述n个数据分片和所述m个压缩校验分片包括:分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中。在该实施方式中,通过对校验分片进行压缩,减少了在向其它服务器传输数据时的数据传输量。
在一种实施方式中,所述服务器包括网卡,其特征在于,所述方法还包括:在根据待写数据生成n个数据分片和m个校验分片之后,将分配给所述n+m个服务器中的其它服务器的数据分片和校验分片传输给所述网卡;其中,对所述m个校验分片分别进行数据压缩包括:所述网卡在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中包括,所述网卡将所述压缩校验分片发送给其它服务器存储。在该实施方式中,通过使用网卡进行对校验分片的数据压缩,减少对CPU的占用,提高了服务器的执行速度。
在一种实施方式中,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中包括,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中。在该实施方式中,通过对校验分片进行压缩,节省了内存中的数据存储空间。
在一种实施方式中,所述服务器包括内存控制器,其特征在于,所述方法还包括:在将待写数据生成n个数据分片和m个校验分片之后,将分配给所述服务器的校验分片传输给所述内存控制器;其中,对所述m个校验分片分别进行数据压缩包括,所述内存控制器在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中包括,所述内存控制器将所述压缩校验分片存储至所述服务器的内存。在该实施方式中,通过使用内存控制器进行压缩,减少对CPU的占用,提高了服务器的执行速度。
在一种实施方式中,所述服务器包括主内存和次内存,所述服务器中记录了其它服务器的主内存的地址及次内存的地址,分别写入所述n个数据分片和所述m个压缩校验分片包括:当待写入的为压缩校验分片且所述待写入的压缩校验分片待写入所述服务器时,将所述压缩校验分片写入所述服务器的次内存中,或者当待写入的为校验分片且所述待写入的校验分片待写入所述其它服务器时,获取所述其它服务器的次内存的地址,根据所述其它服务器的内存地址将所述压缩校验分片写入其它服务器的次内存中。在该实施方式中,通过将压缩校验分片写入次内存,节省DRAM内存空间,节省了内存成本。
在一种实施方式中,所述m个校验分片包括p个一级校验分片和q个二级校验分片,所述二级校验分片用于恢复一级校验分片。在该实施方式中,通过二级EC算法,进一步提高了服务器集群的系统可靠性。
本申请另一方面提供一种分布式内存读取方法,所述分布式内存分布于n+m台服务器中,其中n和m分别为预定的自然数,所述方法由所述服务器执行,其特征在于,包括:从所述分布式内存中读取与第一数据对应的n个分片,所述n个分片中包括至少一个压缩校验分片和多个数据分片;对所述至少一个压缩校验分片分别解压缩,以获取至少一个校验分片;基于所述多个数据分片及所述至少一个校验分片,生成第二数据,其中,所述第二数据为所述第一数据中包括的数据。
在一种实施方式中,从n+m台服务器的内存中读取与第一数据对应的n个分片包括,从相应服务器的次内存中读取与所述第一数据对应的压缩校验分片。
在一种实施方式中,所述服务器中包括内存控制器,其中,对所述至少一个压缩校验分片分别解压缩包括,通过所述内存控制器对从本地内存读取的压缩校验分片进行解压缩。
在一种实施方式中,所述服务器中包括网卡,其中,对所述至少一个压缩校验分片分别解压缩包括,通过所述网卡对从其它服务器的内存读取的压缩校验分片进行解压缩。
本申请另一方面提供一种数据写入装置,部署于服务器,所述装置包括:生成单元,用于根据待写数据生成n个数据分片和m个校验分片;数据压缩单元,用于对所述m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片;写入单元,用于分别写入所述n个数据分片和所述m个压缩校验分片。
在一种实施方式中,所述写入单元还用于:分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中。
在一种实施方式中,所述服务器包括网卡,其特征在于,所述装置还包括:第一传输单元,用于在根据待写数据生成n个数据分片和m个校验分片之后,将分配给所述n+m个服务器中的其它服务器的数据分片和校验分片传输给所述网卡;其中,所述数据压缩单元还用于:所述网卡在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;所述写入单元还用于,所述网卡将所述压缩校验分片发送给其它服务器存储。
在一种实施方式中,所述写入单元还用于,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中。
在一种实施方式中,所述装置还包括:第二传输单元,用于在将待写数据生成n个数据分片和m个校验分片之后,将分配给所述服务器的校验分片传输给所述内存控制器;其中,所述数据压缩单元还用于,所述内存控制器在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;所述写入单元还用于,所述内存控制器将所述压缩校验分片存储至所述服务器的内存。
在一种实施方式中,所述服务器包括主内存和次内存,所述服务器中记录了其它服务器的主内存的地址及次内存的地址,所述写入单元还用于:当待写入的为压缩校验分片且所述待写入的压缩校验分片待写入所述服务器时,将所述压缩校验分片写入所述服务器的次内存中,或者当待写入的为校验分片且所述待写入的校验分片待写入所述其它服务器时,获取所述其它服务器的次内存的地址,根据所述其它服务器的内存地址将所述压缩校验分片写入其它服务器的次内存中。
本申请另一方面提供一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行上述任一项方法。
本申请另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器用于在执行所述计算机程序或指令时,实现上述任一项方法。
通过根据本申请实施例的数据写入方法,通过将校验分片压缩后存储,节省了数据存储空间,降低了网络带宽压力;通过将压缩校验分片存入次内存中,节省了对主内存的使用,降低了内存成本;通过使用内存控制器或网卡进行对校验分片的数据压缩,更加高效且节约了CPU资源;以及,通过使用二级EC算法,进一步增加了系统可靠性。
附图说明
通过结合附图描述本申请实施例,可以使得本申请实施例更加清楚:
图1为本申请实施例提供的分布式系统示意图;
图2为本申请实施例提供的一种在分布式内存中写入数据的方法流程图;
图3为在服务器2中访问分布式内存的示意图;
图4为计算校验分片的示意图;
图5为本申请实施例提供的一种在分布式内存中读取数据的方法流程图;
图6为基于分片计算D1的示意图;
图7为本申请另一实施例提供的一种在服务器的RAID中写入数据的方法示意图;
图8为本申请另一实施例提供的一种在分布式硬盘中写入数据的方法示意图;
图9为本申请实施例提供的一种数据写入装置900。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
图1为本申请实施例提供的分布式系统示意图。所述系统中包括服务器集群100,该服务器集群100例如包括n+m台服务器,其中,m为预定的n+m台服务器中允许出现故障的服务器台数,图1中示意示出服务器1-服务器3。在所述服务器集群100中,每个服务器中都包括网卡(Network Interface Controller,NIC),各个服务器通过其NIC相互连接。服务器集群100例如为与应用(APP)对应的应用服务器集群、或者为存储设备集群等等。各台服务器的内存构成该分布式系统中的分布式内存10,如图1中所示,所述分布式内存10中包括统一编址的内存1(MEM1)、内存2(MEM2)和内存3(MEM3)等等,每个内存中都包括主内存和次内存,在图1中,主内存以动态随机存取存储器(Dynamic Random Access Memory,DRAM)示意示出,次内存以存储级内存(Storage Class Memory,SCM)示意示出,可以理解,在本申请实施例中,主内存不限于为DRAM,次内存不限于为SCM。其中,SCM为性能差于DRAM的非易失性存储介质,例如,SCM可以为Apache Pass(AEP)。服务器集群100中的每台服务器都可以访问分布式内存10中的任一内存地址。以图1中的服务器2为例,其中央处理器(CentralProcessing Unit,CPU)2在需要访问本地的MEM2时,通过内存控制器(Memory Controller,MC)2进行对MEM2中的DRAM2或SCM2的访问。所述内存控制器是用于管理和规划从本地内存到CPU间传输速度的总线控制器,其可以为单独的芯片,或者可以集成到其它芯片(如CPU芯片或者北桥芯片)中。CPU2在需要访问服务器1的MEM1时,通过NIC2连接服务器1的NIC1,并由服务器1的NIC1访问服务器1的MEM1中的DRAM1或SCM1。CPU2可与访问MEM1类似地访问服务器3的MEM3。
以服务器2为存储设备为例,当服务器2从用户设备接收到向数据库写入数据1的请求时,CPU2需要首先将数据1存入分布式内存10中。具体是,假设服务器集群100中包括5+3台服务器,如上文所述,为了保护数据1的安全性,CPU2中例如基于EC算法,将数据1分成5个数据分片(下文中将其表示为D1-D5),并基于5个数据分片生成3个校验分片(下文中将其表示为C1-C3)。假设CPU2确定将D1存入MEM1、将C1存入MEM2,将C3存入MEM3,从而,CPU2将D1-D5、C2、C3传输给NIC2,将C1传输给MC2。在MC2中,在确定C1为校验分片之后,对C1进行数据压缩,生成压缩校验分片C1’,并将C1’存入SCM2中。在NIC2中,在确定C2、C3为校验分片之后,对C2和C3分别进行数据压缩,以分别生成C2’(未示出)和C3’,并将D1发送给NIC1,将C3’发送给NIC3。之后,从而NIC1将D1存入DRAM1,NIC3将C3’存入SCM3。
当服务器集群100中的任一台服务器(例如服务器2)需要读取数据1或者数据1中的部分数据时,在服务器集群100未发生任何故障的情况中,CPU2可从分布式内存中的相应地址中读取需要的数据。在需要读取的服务器出现故障的情况中,CPU2可读取除故障服务器之外的其它服务器内存中的任意n个分片,其中包括压缩校验分片,通过在MC2或NIC2中对压缩校验分片进行解压缩,从而CPU2可基于EC算法从n个分片恢复出所要读取的数据。
可以理解,上文参考图1描述的对分布式内存的写入和读取数据的过程仅仅是示意性地,而不用于限制本申请实施例的范围。例如,本申请另一实施例还提供向服务器包括的RAID中写入数据的方案,将在下文参考图7进行详细描述。本申请另一实施例还提供向分布式硬盘中写入数据的方案,将在下文参考图8进行详细描述。
下面首先详细描述本申请实施例提供的在分布式内存中写入和读取数据的方法。
图2为本申请实施例提供的一种在分布式内存中写入数据的方法流程图,所述方法可由图1中的服务器集群100中的任一台服务器执行,下文中将以服务器2为例进行描述。如图2中所示,所述分布式内存写入方法包括如下步骤S202-S208。
首先,在步骤S202,获取待存入内存的数据1。
图3为在服务器2中访问分布式内存的示意图。如图3所示,首先由服务器2中的CPU2获取待存入内存的数据1。
该数据1可以为服务器2从外部接收的数据、或者可以为在服务器2的CPU2中生成的数据。如上文所述,所述服务器集群100例如为存储设备集群。所述数据1例如为待存入数据库的数据。所述数据1的大小不限,例如,数据1可以为数据表、可以为数据表中的一行、或者可以为数据表中一个字段的值等等。下文中,将以数据1为数据表1为例进行描述。CPU2例如从特定APP的应用服务器中接收到向数据库中写入数据表1的请求,该请求1中包括数据表1。从而,服务器2在接收到该数据库写入请求之后,从该请求中获取数据表1。
在步骤S204,基于数据1生成n个数据分片和m个校验分片。
如上文所述,n+m为服务器集群100中包括的n+m台服务器,m为预先确定好的数值,其对应于所述n+m台服务器中最多允许的故障服务器台数,通常m小于n。假设所述n+m台服务器包括8台服务器,其中预设n=5,m=3,也就是说,在8台服务器中最多允许3台服务器出现故障,在最多3台服务器出现故障的情况中,不会影响该服务器集群100中的分布式内存10的正常使用。
在一种实施方式中,所述8台服务器的冗余级别为5+3,在该冗余级别下,允许8台服务器中的任意3台服务器出现故障。在该情况中,如图3所示,在服务器2的CPU2中,首先将数据1分为5个数据分片(例如,将其分别表示为D1-D5),在图3的CPU2中以白色小框示出数据分片D1-D5。在CPU2中,数据1例如表示为多位(例如30位)二进制数,其中不同的连续位与数据表1中的不同字段相对应,在对该30位二进制数进行分片时,例如可将每连续6位二进制数分为一个数据分片。然后,CPU2将该5个数据分片代入EC算法中进行计算,从而可获取3个校验分片(例如,其分别表示为C1-C3),图3中在CPU2中以灰色小框示意示出校验分片C1-C3。图4为计算校验分片的示意图。如图4所示,基于EC算法,CPU2通过将预先构造的(n+m)行*n列(即8行*5列)的矩阵B与由D1-D5排列成的向量D相乘,从而获取向量E,其中,向量E由向量D与向量C拼接而成,向量C中包括的元素C1-C3即可用作为3个校验分片。其中,B为分布矩阵,其前n行为单位矩阵I,并且其任意n个行向量组成的矩阵都是可逆矩阵。
在一种实施方式中,所述8台服务器的冗余级别为5+2+1,即,所述8台服务器中包括二级冗余服务器。在该冗余级别下,CPU2从数据1生成5个数据分片(D1-D5),根据EC算法,基于5个数据分片生成2个一级校验分片(C1-C2),然后,再根据EC算法,基于2个一级校验分片生成1个二级校验分片(C3),其中,二级校验分片C3在C1和C2中任一个无法读取时可用于恢复出该无法读取的分片。在该情况中,如果存储D1-D5的5台服务器中有2台服务器出现故障,由于在C1-C3中至多允许1台服务器出现故障,因此,在8台服务器中仍至多允许3台服务器出现故障。如果存储D1-D5的5台服务器中有仅有1台服务器出现故障,由于在C1-C2中至多允许1台服务器出现故障,因此,在该情况下,至多允许2台服务器出现故障。在该实施方式中,通过在服务器集群中设置二级冗余服务器,增加了服务器集群的可靠性。
在步骤S206,对m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片。
CPU2在基于数据1生成数据分片D1-D5和校验分片C1-C3之后,基于预定规则将这8个分片分配给8台服务器,例如,CPU2可随机将8个分片分别分配给8台服务器。例如,将D1分配给图1中的服务器1,将C1分配给服务器2,将C3分配给服务器3。
在进行上述分配之后,在一种实施方式中,如图3所示,CPU2将分配给服务器2的分片C1传输给MC2,将其它分片传输给NIC2,以发送给其它服务器。其中,MC2和NIC2中都预设了数据压缩模块(即数据压缩程序模块),从而,MC2和NIC2中的处理器可分别基于数据压缩模块进行对校验分片的数据压缩。所述数据分片和校验分片例如具有不同的分片标识,例如在分片标识中以D表示数据分片,以C标识校验分片,从而MC2和NIC2在从CPU2接收到分片之后,可基于分片标识确定该分片是否为校验分片,如果是校验分片,则对该校验分片进行数据压缩处理,如果是数据分片,则不进行数据压缩处理。例如,CPU2将C1传输给MC2,MC2确定C1为校验分片之后,通过数据压缩模块基于预定压缩算法对C1进行数据压缩,从而生成压缩校验分片C1’,该压缩校验分片C1’相比于校验分片具有更少的数据量,因此可占用更少的内存空间,并且该压缩校验分片C1’在经过解压缩计算之后,可恢复为校验分片C1。CPU2将D1-D5、C2和C3传输给NIC2,NIC2在确定C2和C3为校验分片之后,使用数据压缩模块对C2和C3分别进行数据压缩,从而生成压缩校验分片C2’和C3’。
在该实施方式中,通过在MC2和NIC2中进行数据压缩处理,更加高效,并且节约了CPU资源,提高了服务器执行效率。
在另一种实施方式中,CPU2可自身对校验分片C1-C3进行压缩处理,以生成压缩校验分片C1’-C3’,并将C1’传输给MC2,将D1-D5、C2’和C3’传输给NIC2。
在步骤S208,将n个数据分片和m个压缩校验分片分别写入n+m台服务器的内存中。
在一种实施方式中,服务器2将上述8个分片中的压缩校验分片写入相应服务器中的SCM中,将8个分片中的数据分片写入相应服务器中的DRAM中。具体是,在使用分布式内存(Distributed Shared Memory,DSM)技术的分布式系统中,每台服务器都可以获取分布式内存的统一的逻辑地址及该逻辑地址中的可用地址,该逻辑地址中包括分布式系统中各台服务器中的DRAM和SCM的逻辑地址。因此,CPU2可基于分布式内存的逻辑地址在分布式内存中确定DRAM1中的可写入的地址1(该地址1为逻辑地址)作为将写入D1的首地址。CPU2在获取写入D1的地址1之后,可通过远程直接数据存取(Remote Direct Memory Access,RDMA)方式,将DRAM1标识、地址1、NIC1标识与D1关联地传输给NIC2,从而NIC2将DRAM1标识、地址1和D1发送给NIC1,NIC1在接收到DRAM1标识、地址1和D1之后,以DRAM1中的地址1为首地址存入D1,并在存储完成D1之后,获取用于存储D1的末地址(例如地址i),并由服务器1通过DSM技术将分布式内存中的DRAM1中的地址1-地址i标注为不可用地址。可以理解,这里,向DRAM1中存入D1的过程不限于如上文所述,例如,CPU2可仅仅将地址1、NIC1标识与D1关联地传输给NIC2,NIC2将地址1和D1发送给NIC1,NIC1在接收到地址1和D1之后,基于D1的标识确定地址1为DRAM1中的地址,从而,将D1写入DRAM1中的地址1中。
CPU2在分布式内存中确定SCM2中的可写入地址2之后,将SCM2标识、地址2和C1传输给MC2,从而,MC2在对C1进行压缩生成C1’之后,以SCM2中的地址2为首地址存入C1’,并与上文类似地,当在SCM2中存入C1’之后,获取SCM2中存储C1’的末地址,并由服务器2在分布式内存中更新SCM2的可用地址。这里,如果CPU2将数据分片分配给服务器2,则MC2不对该数据分片进行压缩,而是直接将该数据分片存入DRAM2中。
CPU2在分布式内存中确定SCM3中的可写入地址3之后,将SCM3标识、地址3、NIC3标识与C3关联地传输给NIC2,从而NIC2在对C3进行压缩生成C3’之后,将SCM3标识、地址3和C3’发送给NIC3,NIC3在接收到SCM3标识、地址3和C3’之后,将C3’存入SCM3中的地址3中。
如图3中所示,所述NIC2与DRAM2、SCM2和网络连接,在由其它服务器向服务器2的内存写入分片的情况中,NIC2通过网络接收由其它服务器的NIC发送的分片及其存储地址,并根据该分片的存储地址将该分片存入DRAM2或者SCM2中,例如,在分片为数据分片的情况中,则该分片的存储地址为DRAM2中的存储地址,则NIC2将该分片存入DRAM2中的相应地址中,在分片为压缩校验分片的情况中,该分片的存储地址为SCM2中的存储地址,则NIC2将该分片存入SCM2的相应地址中。在该实施方式中,通过将压缩校验分片存入到次内存(即SCM)中,节省了DRAM空间,从而节省了内存成本。
在该实施例中,通过在对校验分片进行数据压缩处理之后存入本地内存或者经网卡的传输存入其它服务器的内存中,节省了校验分片的内存占用空间,同时降低了在传输校验分片时的网络带宽压力。
图5为本申请实施例提供的一种在分布式内存中读取数据的方法流程图,所述方法可由图1中的服务器集群100中的任一台服务器执行,下文中将以服务器2为例进行描述。如图5中所示,所述分布式内存读取方法包括如下步骤S502-S506。
首先,在步骤S502,从分布式内存中读取与数据1对应的n个分片,所述n个分片中包括至少一个压缩校验分片和多个数据分片。
假设CPU2希望读取数据1中的数据2(例如数据表1中第1行数据),CPU2基于该数据2在数据表1中的位置可确定数据2在数据分片D1中,并且可基于D1在DRAM1中的存储地址和数据2在D1中的位置计算出数据2在DRAM1中的存储地址。在服务器1未发生故障的情况中,CPU2可通过NIC2向NIC1发送读取数据2的请求,该请求中包括数据2在DRAM1中的存储地址,从而NIC1可从DRAM1中读取数据2,并将数据2发送给NIC2,从而NIC2将接收的数据2传输给CPU2。
在服务器1发生故障的情况中,根据EC算法,CPU2需要获取D2-D5及C1-C3中的任意5个分片,以用于恢复D1。图5所示的读取方法即对应于需要读取的服务器发生故障的场景。假设CPU2确定从除服务器1之外的其它服务器的内存中读取5个分片D2、D3、D5、C1’、C3’。从而,参考图3,可执行与上述在分布式内存中存入D2、D3、D5、C1’、C3’的过程相逆的过程。具体是,CPU2向MC2传输读取C1’的请求,从而由MC2从SCM2的地址2中读取C1’。CPU2通过NIC2向分片D2、D3、D5、和C3’对应的服务器的NIC发送读取请求,以使得相应服务器的NIC分别读取所述分片并发送给NIC2。例如CPU2通过NIC2向服务器3中的NIC3发送对C3’的读取请求,从而使得NIC3在SCM3的地址3中读取C3’,并将C3’发送给NIC2。
在步骤S504,对至少一个压缩校验分片分别解压缩,以获取至少一个校验分片。
在一种实施方式中,参考图3,MC2和NIC2中都包括数据压缩模块,该数据压缩模块也具有数据解压缩功能。从而,MC2在从SCM2中读取C1’之后,通过数据压缩模块对C1’解压缩,获取校验分片C1,并将C1传输给CPU2。NIC2在从NIC3接收C3’之后,通过数据压缩模块对C3’解压缩,获取校验分片C3,并将C3传输给CPU2。同时,NIC2还将接收到的数据分片D2、D3、D5传输给CPU2。
在一种实施方式中,CPU2可从MC2接收C1’,从NIC2接收C3’,并自身进行对C1’和C3’的解压缩,以获取校验分片C1和C3。
在步骤S506,基于多个数据分片及至少一个校验分片,生成待读取的数据2。
CPU2在获取D2、D3、D5、C1和C3之后,根据EC算法,可基于由该5个分片构成的向量F通过矩阵乘法计算出D1,从而可从D1中获取数据2。图6为基于分片计算D1的示意图。如图6中所示,从图3中所示的矩阵B中抽取与D2、D3、D5、C1和C3分别对应的行向量,可拼接为矩阵B’,由于矩阵B的任意n行组成的矩阵都可逆,因此可计算获取矩阵B’的逆矩阵B’-1。根据EC算法,向量D等于矩阵B’-1乘以向量F,也就是说,D1等于将矩阵B’-1的第一行(即图6中矩阵B’-1中以灰色示出的第一行向量)乘以向量F所获取的值。在生成D1之后,也即生成了数据2,从而可从D1中读取其中包括的数据2。
图7为本申请另一实施例提供的一种在服务器的RAID中写入数据的方法示意图。如图7中所示,服务器中包括CPU和RAID,其中,所述RAID中包括磁盘Dk1-Dk8。CPU在获取数据1之后,基于RAID算法,从数据1生成数据分片D1-D5和校验分片C1-C3,并且,CPU将C1-C3压缩为校验分片C1’-C3’。之后,CPU将分片D1-D5和C1’-C3’分别存储到磁盘Dk1-Dk8中。其中,所述RAID算法例如为海明校验码算法或异或校验算法等等,对此不作限定。从而,如图7中所示,通过在磁盘中存储压缩校验分片,节省了磁盘的存储空间。
图8为本申请另一实施例提供的一种在分布式硬盘中写入数据的方法示意图。所述分布式硬盘分布于图1中的分布式系统中,即,在服务器1-8中分别包括硬盘Dk1-Dk8(图1中未示出)。图8所示方法例如由服务器2执行,如图8中所示,在服务器2的CPU2中,CPU2在获取数据1之后,基于RAID算法,从数据1生成数据分片D1-D5和校验分片C1-C3。之后,CPU2将分片D1-D5和C1-C3分别分配给服务器1-服务器8。CPU2在确定将分片C1分配给服务器2的情况中,将校验分片C1压缩为校验分片C1’,并将压缩校验分片C1’存储到本地硬盘Dk2中。同时,CPU2将分片D1-D5、C2和C3传输给NIC2,NIC2中包括数据压缩模块,NIC2通过数据压缩模块将校验分片分别压缩为压缩校验分片C2’和C3’。之后,NIC2将分片D1-D5、C2’和C3’分别发送给其它服务器以存储入其它服务器的硬盘中。从而,如图8中所示,通过在磁盘中存储压缩校验分片,节省了磁盘的存储空间,并且通过使用网卡进行对校验分片的数据压缩,减少对CPU的占用,提高了服务器的执行速度。
图9为本申请实施例提供的一种数据写入装置900,部署于服务器,所述装置包括:
生成单元91,用于根据待写数据生成n个数据分片和m个校验分片;
数据压缩单元92,用于对所述m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片;
写入单元93,用于分别写入所述n个数据分片和所述m个压缩校验分片。
在一种实施方式中,所述写入单元93还用于:分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中。
在一种实施方式中,所述服务器包括网卡,其特征在于,所述装置900还包括:第一传输单元94,用于在根据待写数据生成n个数据分片和m个校验分片之后,将分配给所述n+m个服务器中的其它服务器的数据分片和校验分片传输给所述网卡;其中,所述数据压缩单元92还用于:所述网卡在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;所述写入单元93还用于,所述网卡将所述压缩校验分片发送给其它服务器存储。
在一种实施方式中,所述写入单元93还用于,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中。
在一种实施方式中,所述装置900还包括:第二传输单元95,用于在将待写数据生成n个数据分片和m个校验分片之后,将分配给所述服务器的校验分片传输给所述内存控制器;其中,所述数据压缩单元92还用于,所述内存控制器在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;所述写入单元93还用于,所述内存控制器将所述压缩校验分片存储至所述服务器的内存。
在一种实施方式中,所述服务器包括主内存和次内存,所述服务器中记录了其它服务器的主内存的地址及次内存的地址,所述写入单元93还用于:当待写入的为压缩校验分片且所述待写入的压缩校验分片待写入所述服务器时,将所述压缩校验分片写入所述服务器的次内存中,或者当待写入的为校验分片且所述待写入的校验分片待写入所述其它服务器时,获取所述其它服务器的次内存的地址,根据所述其它服务器的内存地址将所述压缩校验分片写入其它服务器的次内存中。
本申请另一方面提供一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行上述任一种方法。
本申请另一方面提供一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器用于在执行所述计算机程序或指令时,实现上述任一种方法。
本申请另一方面提供一种服务器,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器用于在执行所述计算机程序或指令时,实现上述任一种方法。
其中,所述存储器可用于存储软件程序以及模块,所述处理器通过运行存储在存储器中的软件程序以及模块,从而使得服务器执行上述分布式内存写入或读取方法。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统以及实现上述分布式内存写入或读取方法所需的程序等。此外,存储器可以为易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)、DRAM等等;所述存储器也可以为非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM)、快闪存储器(flash memory)、硬盘(hard disk drive,HDD)、固态硬盘(solid-statedrive,SSD)、SCM等等;所述存储器还可以包括上述种类的存储器的组合。
处理器是服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器内的软件程序和/或模块,以及调用存储在存储器内的数据,执行所述分布式内存写入或读取方法。可选的,处理器可包括一个或多个处理单元。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
Claims (14)
1.一种数据写入方法,由服务器执行,所述方法包括:
根据待写数据生成n个数据分片和m个校验分片;
对所述m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片;
分别写入所述n个数据分片和所述m个压缩校验分片。
2.根据权利要求1所述的方法,其特征在于,所述分别写入所述n个数据分片和所述m个压缩校验分片包括:
分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中。
3.根据权利要求2所述的方法,所述服务器包括网卡,其特征在于,所述方法还包括:
在根据待写数据生成n个数据分片和m个校验分片之后,将分配给所述n+m个服务器中的其它服务器的数据分片和校验分片传输给所述网卡;
其中,对所述m个校验分片分别进行数据压缩包括:所述网卡在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;
分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中包括,所述网卡将所述压缩校验分片发送给其它服务器存储。
4.根据权利要求2或3所述的方法,其特征在于,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中包括,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中。
5.根据权利要求1-4任意一项所述的方法,所述服务器包括内存控制器,其特征在于,所述方法还包括:
在将待写数据生成n个数据分片和m个校验分片之后,将分配给所述服务器的校验分片传输给所述内存控制器;
其中,对所述m个校验分片分别进行数据压缩包括,所述内存控制器在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;
分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中包括,所述内存控制器将所述压缩校验分片存储至所述服务器的内存。
6.根据权利要求1所述的方法,其特征在于,所述服务器包括主内存和次内存,所述服务器中记录了其它服务器的主内存的地址及次内存的地址,分别写入所述n个数据分片和所述m个压缩校验分片包括:
当待写入的为压缩校验分片且所述待写入的压缩校验分片待写入所述服务器时,将所述压缩校验分片写入所述服务器的次内存中,或者
当待写入的为校验分片且所述待写入的校验分片待写入所述其它服务器时,获取所述其它服务器的次内存的地址,根据所述其它服务器的内存地址将所述压缩校验分片写入其它服务器的次内存中。
7.一种数据写入装置,部署于服务器,所述装置包括:
生成单元,用于根据待写数据生成n个数据分片和m个校验分片;
数据压缩单元,用于对所述m个校验分片分别进行数据压缩,以分别生成m个压缩校验分片;
写入单元,用于分别写入所述n个数据分片和所述m个压缩校验分片。
8.根据权利要求7所述的装置,其特征在于,所述写入单元还用于:
分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器中。
9.根据权利要求8所述的装置,所述服务器包括网卡,其特征在于,所述装置还包括:
第一传输单元,用于在根据待写数据生成n个数据分片和m个校验分片之后,将分配给所述n+m个服务器中的其它服务器的数据分片和校验分片传输给所述网卡;
其中,所述数据压缩单元还用于:所述网卡在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;
所述写入单元还用于,所述网卡将所述压缩校验分片发送给其它服务器存储。
10.根据权利要求8或9所述的装置,其特征在于,所述写入单元还用于,分别将所述n个数据分片和所述m个压缩校验分片写入n+m个服务器的内存中。
11.根据权利要求7-10任意一项所述的装置,所述服务器包括内存控制器,其特征在于,所述装置还包括:
第二传输单元,用于在将待写数据生成n个数据分片和m个校验分片之后,将分配给所述服务器的校验分片传输给所述内存控制器;
其中,所述数据压缩单元还用于,所述内存控制器在确定接收的数据为所述m个校验分片中的一个校验分片时,对所述校验分片进行压缩,以生成压缩校验分片;
所述写入单元还用于,所述内存控制器将所述压缩校验分片存储至所述服务器的内存。
12.根据权利要求7所述的装置,其特征在于,所述服务器包括主内存和次内存,所述服务器中记录了其它服务器的主内存的地址及次内存的地址,所述写入单元还用于:
当待写入的为压缩校验分片且所述待写入的压缩校验分片待写入所述服务器时,将所述压缩校验分片写入所述服务器的次内存中,或者
当待写入的为校验分片且所述待写入的校验分片待写入所述其它服务器时,获取所述其它服务器的次内存的地址,根据所述其它服务器的内存地址将所述压缩校验分片写入其它服务器的次内存中。
13.一种计算机可读存储介质,其上存储有计算机程序或指令,当所述计算机程序或指令在计算机中执行时,令计算机执行权利要求1-6中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序或指令,所述处理器用于在执行所述计算机程序或指令时,实现权利要求1-6中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010536546.4A CN113806133A (zh) | 2020-06-12 | 2020-06-12 | 一种数据写入方法和装置 |
PCT/CN2021/099069 WO2021249418A1 (zh) | 2020-06-12 | 2021-06-09 | 一种数据写入方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010536546.4A CN113806133A (zh) | 2020-06-12 | 2020-06-12 | 一种数据写入方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113806133A true CN113806133A (zh) | 2021-12-17 |
Family
ID=78845341
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010536546.4A Pending CN113806133A (zh) | 2020-06-12 | 2020-06-12 | 一种数据写入方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113806133A (zh) |
WO (1) | WO2021249418A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201338B (zh) * | 2016-06-28 | 2019-10-22 | 华为技术有限公司 | 数据存储方法及装置 |
CN108574558B (zh) * | 2017-03-13 | 2020-08-14 | 华为技术有限公司 | 传输控制信息的方法和装置 |
CN112328168A (zh) * | 2017-06-29 | 2021-02-05 | 华为技术有限公司 | 分片管理方法和分片管理装置 |
TWI703438B (zh) * | 2018-09-11 | 2020-09-01 | 慧榮科技股份有限公司 | 映射表更新方法 |
CN111090540B (zh) * | 2019-06-24 | 2022-06-14 | 华为技术有限公司 | 基于纠删码的数据处理方法与装置 |
-
2020
- 2020-06-12 CN CN202010536546.4A patent/CN113806133A/zh active Pending
-
2021
- 2021-06-09 WO PCT/CN2021/099069 patent/WO2021249418A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021249418A1 (zh) | 2021-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110462577B (zh) | 一种数据写入的方法及固态硬盘阵列 | |
US11204716B2 (en) | Compression offloading to RAID array storage enclosure | |
US10831407B2 (en) | Write flow offloading to raid array storage enclosure | |
CN109885256B (zh) | 一种基于数据分片的数据存储方法、设备及介质 | |
US10365968B2 (en) | Apportioning namespace ranges in accordance with dispersed storage unit capacity | |
CN106776130B (zh) | 一种日志恢复方法、存储装置和存储节点 | |
WO2018000812A1 (zh) | 数据存储方法及装置 | |
US9734014B2 (en) | Virtual memory mapping in a dispersed storage network | |
US20140359218A1 (en) | Distributed Storage Method, Apparatus, and System | |
US10852965B2 (en) | Write folding mechanism using reusable shared striping in a storage system | |
US20160006461A1 (en) | Method and device for implementation data redundancy | |
US20130006923A1 (en) | Dispersed storage network virtual address generations | |
CN105404469A (zh) | 一种视频数据的存储方法和系统 | |
CN110089035B (zh) | 存储控制器、数据处理芯片及数据处理方法 | |
EP3739441A1 (en) | Data storage method, apparatus and system | |
US10951358B2 (en) | Using slice routers for improved storage placement determination | |
CN111782152A (zh) | 数据存储方法、数据恢复方法、装置、服务器及存储介质 | |
US20230259427A1 (en) | Mapping Storage Slots to a Set of Storage Units | |
US20190347165A1 (en) | Apparatus and method for recovering distributed file system | |
CN117075821B (zh) | 一种分布式存储方法、装置、电子设备及存储介质 | |
CN113051428B (zh) | 一种摄像机前端存储备份的方法及装置 | |
CN113806133A (zh) | 一种数据写入方法和装置 | |
CN110825552B (zh) | 数据存储方法、数据恢复方法、节点及存储介质 | |
CN105068896A (zh) | 基于raid备份的数据处理方法及装置 | |
CN115686382A (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 |