CN108491290B - 一种数据写入方法及装置 - Google Patents
一种数据写入方法及装置 Download PDFInfo
- Publication number
- CN108491290B CN108491290B CN201810264205.9A CN201810264205A CN108491290B CN 108491290 B CN108491290 B CN 108491290B CN 201810264205 A CN201810264205 A CN 201810264205A CN 108491290 B CN108491290 B CN 108491290B
- Authority
- CN
- China
- Prior art keywords
- blocks
- data block
- original data
- group
- vobject
- 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
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据写入方法及装置,所述方法包括:当接收到针对目标文件的写入请求时,按照预设区块大小将所述目标文件划分为原始数据块,并根据所述原始数据块利用奇偶校验算法计算至少一个校验数据块;将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块;将所述object组中的各object映射至不同的对象存储设备OSD。应用本发明实施例可以解决Ceph EC存在写惩罚的问题,并提高Ceph的数据写入性能。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据写入方法及装置。
背景技术
Ceph(分布式存储***)是一种性能优异、高可靠性和高扩展性分布式存储***,广泛应用于各类大中小型存储环境。
目前,Ceph主要采用多副本策略以保证数据的可靠性,但是多副本策略降低了Ceph的磁盘利用率,例如,2副本磁盘利用率50%,3副本磁盘利用率33%。
为了提高磁盘利用率,Ceph提出了纠删码(Erasure Coding,EC)策略。
纠删码算法将写入数据分成K份原始数据,通过这K份原始数据计算出M份校验数据,通过这K+M份中的任意K份数据可以还原出所有原始数据。
然而实践发现,现有Ceph EC方案中当条带中部分原始数据发生修改时,需要先将条带中未发生修改的原始数据读出,重新计算校验数据,并将发生修改的数据和新计算的校验块写入条带中的相应位置,即存在写惩罚。
发明内容
本发明提供一种数据写入方法及装置,以解决现有Ceph EC方案不支持覆盖写,且存在写惩罚的问题。
根据本发明的第一方面,提供一种数据写入方法,应用于分布式对象存储***中的存储节点,所述方法包括:
当接收到针对目标文件的写入请求时,按照预设区块大小将所述目标文件划分为原始数据块,并根据所述原始数据块利用奇偶校验算法计算至少一个校验数据块;
将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块;其中,所述object组中包括至少三个object,所述object组中各object包括等量等大小的区块,所述连续多个空闲区块依次归属于所述object组中的各object;
将所述object组中的各object映射至不同的对象存储设备OSD。
根据本发明的第二方面,提供一种数据写入装置,应用于分布式对象存储***中的存储节点,所述装置包括:
接收单元,用于接收写入请求;
划分单元,用于当所述接收单元接收到针对目标文件的写入请求时,按照预设区块大小将所述目标文件划分为原始数据块;
校验单元,用于根据所述原始数据块利用奇偶校验算法计算至少一个校验数据块;
写入单元,用于将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块;其中,所述object组中包括至少三个object,所述object组中各object包括等量等大小的区块,所述连续多个空闲区块依次归属于所述object组中的各object;
映射单元,用于将所述object组中的各object映射至不同的对象存储设备OSD。
应用本发明公开的技术方案,当接收到针对目标文件的写入请求时,按照预设区块大小将目标文件划分为原始数据块,并利用奇偶校验算法计算至少一个校验数据块;进而,可以将目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块,并将object组中的各object映射至不同的OSD,解决了Ceph EC存在写惩罚的问题,并提高了Ceph的数据写入性能。
附图说明
图1是本发明实施例提供的一种数据写入方法的流程示意图;
图2是本发明实施例提供的一种object组的示意图;
图3~图7是本发明实施例提供的数据写入object的示意图;
图8是本发明实施例提供的一种数据写入装置的结构示意图;
图9是本发明实施例提供的另一种数据写入装置的结构示意图;
图10是本发明实施例提供的另一种数据写入装置的结构示意图;
图11是本发明实施例提供的另一种数据写入装置的结构示意图;
图12是本发明实施例提供的一种数据写入装置的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图1,为本发明实施例提供的一种数据写入方法的流程示意图,其中,该数据写入方法可以应用于分布式对象存储***(如Ceph,下文中以Ceph为例)中的存储节点,如图1所示,该数据写入方法可以包括以下步骤:
步骤101、当接收到针对目标文件的写入请求时,按照预设区块大小将目标文件划分为原始数据块,并根据该原始数据块利用奇偶校验算法计算至少一个校验数据块。
本发明实施例中,考虑到现有Ceph CE方案不支持覆盖写,且存在写惩罚,同时,为了在保证数据可靠性的前提下,提高磁盘利用率,可以采用ZFS(Zettabyte File System,动态文件***)的RAIDZ(Redundant Arrays of Independent Disks Z,独立磁盘构成的具有冗余能力的阵列Z)机制替换Ceph EC冗余策略,通过ZFS为Ceph对外提供块存储。
其中,采用ZFS的RAIDZ机制替换Ceph EC冗余策略,通过ZFS为Ceph对外提供块存储的方式可以包括但不限于:采用Ceph中的RBD(RADOS(Reliable,Autonomic DistributedObject Store,可靠、自治、分布式对象存储)Block Devices,块设备)替代ZFS中的vdev(Virtual Device,虚拟设备),当需要进行数据写入时,将待写入的数据按照预设区块大小进行原始数据块划分,并计算校验数据块,进而分别写入到各RBD中的object(对象)中;或者,采用Ceph中的object替代ZFS中的vdev,当需要进行数据写入时,将待写入的数据按照预设区块大小进行原始数据块划分,并计算校验数据块,进而分别写入到各object中。
其中,同一次写入的数据对应的原始数据块和校验数据块需要写入到不同的object,用于写入原始数据块和校验数据块的预设数量的object可以形成一个object组,同一object组中各object按照预设区块大小进行区块划分。
其中,上述预设数量为大于等于三个,object组中各object包括等量等大小的区块。
例如,上述object组的示意图可以如图2所示,在该示例中,object1~object n为object组中各object的编号,0~N为object组中各object的区块的LBA(Logical BlockAddress,逻辑区块地址)地址,当需要对object组进行数据写入时,可以按照object组中各object编号从小到大,且LBA地址从小到大的顺序进行数据写入,即先写object1的LBA0,然后写object2的LBA0…最终写object n的LBA N。
需要说明的是,在本发明实施例中,如图2所示,预设数量的object形成的object组可以相当于ZFS RAIDZ方案中预设数量的vdev组成的M1vdev,object组中各object的区块的编址方式可以参见M1vdev中包括的各vdev中区块的编址方式,object组响应数据读写请求的具体实现细节与M1vdev响应数据读写请求的具体实现细节相类似,本发明实施例对此不做赘述。
本发明实施例中,当存储节点接收到文件(下文中称为目标文件)写入请求时,存储节点可以按照预设区块大小将目标文件划分为数据块(本文中称为原始数据块)。其中,目标文件可以包括新写入的数据或之前已写入的数据对应的修改后的数据。
例如,假设预设区块大小为512K,目标文件大小为2M,则目标文件可以划分为4个原始数据块。
本发明实施例中,存储节点将目标文件划分为原始数据块之后,可以根据原始数据块,利用奇偶校验算法计算至少一个校验数据块。
其中,本发明实施例中,校验数据块的数量可以为一个、两个或三个。
优选地,当校验数据块的数量为一个时,object组中object的数量至少为三个;当校验数据块的数量为两个时,object组中object的数量至少为四个;当校验数据块的数量为三个时,object组中的object的数量至少为五个。
步骤102、将目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块;其中,该连续多个空闲区块依次归属于object组中的各object。
本发明实施例中,存储节点确定了目标文件对应的原始数据块以及校验数据块之后,可以将目标文件对应的原始数据块以及校验数据块写入object组。
其中,为了提高数据可靠性,需要尽量保证目标文件对应的原始数据块以及校验数据块均分别位于不同的object。
优选地,每一次写入的原始数据块以及校验数据块的数量之和小于等于object组中object的数量。
本发明实施例中,存储节点将目标文件对应的原始数据块以及校验数据块写入object组时,可以将目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块中,即对目标文件对应的原始数据块以及校验数据块形成的整个条带一次性进行写入。
需要说明的是,在本发明实施例中,由于目标文件的大小不固定,因此,目标文件对应的原始数据块以及校验数据块形成的条带的长度也不固定;此外,由于目标文件对应的原始数据块以及校验数据块是一次性写入object组中的连续多个空闲区块的,只有当各原始数据块或校验数据块均成功写入时,目标文件才写入成功,或者,可以认为目标文件完全未写入,因此,当存储节点突然断电时,目标文件将处于写入成功状态或未写入的状态,不会出现数据不一致的情况,保证了数据的一致性。
其中,目标文件的写入时间与目标文件对应的各原始数据块以及校验数据块中写入最慢的数据块(包括原始数据块或校验数据块)的写入时间一致。
举例来说,请参见图3,假设object组中包括5个object(假设分别为object),目标文件对应的原始数据块为D1、D2和D3,校验数据块为P4,object组中第一个空闲的数据块为object5中地址为LBA2的区块,则存储节点可以P4、D1、D2和D3并发写入object5中地址为LBA2的区块、object1中地址为LBA3的区块、object2中地址为LBA3的区块,以及object3中地址为LBA3的区块。
相应地,在本发明实施例中,当需要进行数据修改时,存储节点仅需将修改后的数据按照预设区块大小划分为多个原始数据块,并根据该原始数据块利用奇偶校验算法计算至少一个校验数据块,进而将得到的原始数据块和校验数据块写入objcet组中的连续多个空闲区块即可,避免了数据修改时必须先读后写而导致的写惩罚。
步骤103、将object组中各object映射至不同的OSD。
本发明实施例中,为了保证数据的可靠性,对于object组中各object,需要将其分别映射至不同的OSD(Object-based Storage Device,对象存储设备)。
具体地,在本发明实施例中,存储节点可以将同一object组中不同的object作为同一object的不同副本,利用CRUSH(Controlled Replication Under Scalable Hashing,可扩展哈希下的受控复制)算法将object组中的不同object映射至不同的OSD。
可见,在图1所示方法流程中,采用ZFS的RAIDZ机制替换Ceph EC冗余策略,利用Ceph object作为ZFS中的RAIDZ中的vedv,以预设数量的object形成object组,通过ZFS为Ceph对外提供块存储,在保证数据可靠性以及磁盘利用率的前提下,使用raidz解决CephEC的写惩罚问题;此外,目标文件写入object组时,采用并发写入的方式,提高了Ceph数据写入性能。
在本发明其中一个实施例中,上述将目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块,可以包括:
若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量未达到预设最大容量,则分配新的object组,并将目标文件对应的原始数据块以及校验数据块并发写入新分配的object组中的连续多个空闲区块。
在该实施例中,考虑到Ceph支持的object的容量有限(目前Ceph最大支持2G的object),导致单个object组的容量不足于满足数据存储的需求,因此,在数据写入过程中,需要支持动态扩容。
相应地,在该实施例中,在对目标文件对应的原始数据块以及校验数据块进行写入前,可以判断当前的object组的已用容量是否达到第一预设阈值(可以根据实际场景设定),以及已分配的object组的总容量是否达到预设最大容量(可以根据实际场景设定)。
其中,上述当前的object组可以指上一次数据写入时所写入的object组;对于第一数据写入,当前的object组即为初始分配的object组。
在该实施例中,若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量未达到预设最大容量,则分配新的object组,并将目标文件对应的原始数据块以及校验数据块并发写入新分配的object组中的连续多个空闲区块,以实现数据的动态平衡。
举例来说,仍以图3所示场景为例,假设存储节点需要将目标文件对应的原始数据块以及校验数据块(即D1、D2、D3和P4)写入该object组时,检测到该object组的已用容量达到阀值,且已分配的object组的总容量未达到预设的最大容量,则存储节点可以分配新的object组(即object6~object10),其示意图可以如图4所示,此时,存储节点可以根据所有object的剩余可用空间计算权重,根据权重合理分配后续数据,达到动态平衡,因此,后续数据会优先写入obj6-obj10,即存储节点可以将P4、D1、D2和D3并发写入object6中地址为LBA0的区块、object7中地址为LBA0的区块、object8中地址为LBA0的区块,以及object9中地址为LBA0的区块。
进一步地,在该实施例中,若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量已达到预设最大容量,则存储节点可以将目标文件对应的原始数据块以及校验数据块并发写入存在空闲区块且初始分配的object组中的连续多个空闲区块。
举例来说,如图5所示,假设存储节点需要将目标文件对应的原始数据块以及校验数据块(即D1、D2、D3和P4)写入该object组(object6~object10)时,发现当前object组的已用容量达到第一预设阈值,且已分配的object组的总容量已达到预设最大容量,则存储节点可以将P4、D1、D2和D3并发写入存在空闲块且初始分配的object组(即object1~object5)中的连续多个空闲区块,即存储节点可以P4、D1、D2和D3并发写入object5中地址为LBA2的区块、object1中地址为LBA3的区块、object2中地址为LBA3的区块,以及object3中地址为LBA3的区块。
需要说明的是,在本发明实施例中,若当前的object组的已用容量未达到第一预设阈值,则存储节点可以直接将目标文件对应的原始数据块以及校验数据块并发写入当前的object组中的连续多个空闲区块。
在本发明另一个实施例中,上述object组为Vobject(Virtual Object,虚拟对象)组,该Vobject组中各Vobeject包括至少一个object,且各Vobject中包括的object数量相同;
相应地,上述将目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块,包括:
若Vobject组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量未达到预设最大容量,则为Vobject组中各Vobject分配新的object,并将目标文件对应的原始数据块以及校验数据块并发写入Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块。
在该实施例中,为了实现动态扩容,可以引入Vobject的概念,一个Vobject可以包括一个或多个object。可以将预设数量的Vobject形成Vobject组;其中,Vobject组中各Vobject包括的object的数量相同,且Vobject组中各Vobject的区块编址方式可以参见M1vdev中包括的各vdev中区块的编址方式。
其中,同一Vobject中的多个object中的区块连续编址。
例如,假设Vobject1包括object1和object2,且object1和object2各包括5个区块,则object1和object2中各区块的地址可以分别为LBA0~LBA9。
当需要进行扩容,且Vobject组的总容量(即Vobject组中已分配的object的总容量)未达到预设最大容量时,可以为Vobject组中各Vobject分配新的object。
相应地,在该实施例中,在对目标文件对应的原始数据块以及校验数据块进行写入前,可以判断Vobject组中存在空闲区块的object的已用容量是否达到第二预设阈值(可以根据实际场景设定),以及Vobject组中已分配的object组的总容量是否达到预设最大容量(可以根据实际场景设定)。
若Vobject组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量未达到预设最大容量,则存储节点可以为Vobjcet组中各Vobject分配新的object,并将目标文件对应的原始数据块以及校验数据块并发写入Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块。
其中,第二预设阈值可以与第一预设阈值相同,也可以与第一预设阈值不同。
举例来说,如图6所示,假设Vobjec组中包括Vobject1~Vobjcet5,各Vobject分别分配有一个object(依次为object1~object5,分别归属于Vobject1~Vobjcet5),假设存储节点需要将目标文件对应的原始数据块以及校验数据块(即D1、D2、D3和P4)写入该Vobject组时,检测到Vobject组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量未达到预设的最大容量,则存储节点可以分配新的object组(依次为object6~object10,分别归属于Vobject1~Vobject5),其示意图可以如图7所示,此时,存储节点可以将目标文件对应的原始数据块以及校验数据块写入Vobject组中存在空闲区块且初始分配的object组中的连续多个空闲区块,即存储节点可以P4、D1、D2和D3并发写入object5中地址为LBA2的区块、object1中地址为LBA3的区块、object2中地址为LBA3的区块,以及object3中地址为LBA3的区块。
需要说明的是,在本发明实施例中,当需要进行数据写入时,若Vobject组中存在空闲区块的object的已用容量未达到第二预设阈值;或,object组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量达到预设最大容量,则存储节点不会再为Vobject分配新的object,而是直接将目标文件对应的原始数据块以及校验数据块并发写入Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块。
进一步地,在该实施例中,存储节点进行object映射时,可以将Vobject组中各object映射至不同的OSD;其中,归属于不同Vobject的object映射至不同的OSD。
进一步地,在该实施例中,考虑到数据块在Vobject中的地址与object中的地址并不完全相同,因此,存储节点将目标文件对应的原始数据块以及校验数据块并发写入Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块之后,还可以包括:
记录原始数据块以及校验数据块所在的区块归属的Vobject的标识以及地址,并记录原始数据块以及校验数据块所在区块归属的Vobject的标识以及地址与原始数据块以及校验数据块所在区块归属的object的标识以及地址的映射关系。
举例来说,以图7所示场景为例,当某数据块所在区块归属的Vobject的标识为Vobject1,地址为LBA2时,其对应的object的标识以及地址为object1以及LBA2(即Vobject1的第一个object中的第三个区块);当某数据块所在区块归属的Vobject的标识为Vobject3,地址为LBA5时,其对应的object的标识以及地址为object6以及LBA0(即Vobject3的第二个object中的第一个区块)。
相应地,在后续流程中,当需要进行数据读取时,可以先查询确定需要读取的数据的原始数据块以及校验数据块所在区块所属的Vobject的标识以及地址,进而根据该Vobject的标识以及地址,查询自身记录的原始数据块以及校验数据块所在区块归属的Vobjcet的标识以及地址与原始数据块以及校验数据块所在区块所属的object的标识以及地址的映射关系,以确定需要读取的数据的原始数据块所在区块归属的object的标识以及地址,并根据该objcet的标识以及地址进行数据读取。
通过以上描述可以看出,在本发明实施例提供的技术方案中,当接收到针对目标文件的写入请求时,按照预设区块大小将目标文件划分为原始数据块,并利用奇偶校验算法计算至少一个校验数据块;进而,可以将目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块,并将object组中的各object映射至不同的OSD,解决了Ceph EC存在写惩罚的问题,并提高了Ceph的数据写入性能。
请参见图8,为本发明实施例提供一种数据写入装置的结构示意图,其中,该装置可以应用于上述方法实施例中的存储节点,如图8所示,该数据写入装置可以包括:
接收单元810,用于接收写入请求;
划分单元820,用于当所述接收单元810接收到针对目标文件的写入请求时,按照预设区块大小将所述目标文件划分为原始数据块;
校验单元830,用于根据所述原始数据块利用奇偶校验算法计算至少一个校验数据块;
写入单元840,用于将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块;其中,所述object组中包括至少三个object,所述object组中各object包括等量等大小的区块,所述连续多个空闲区块依次归属于所述object组中的各object;
映射单元850,用于将所述object组中的各object映射至不同的对象存储设备OSD。
请一并参见图9,为本申请实施例提供的另一种数据写入装置的结构示意图,如图9所示,在图8所示数据写入装置的基础上,图9所示数据写入装置还可以包括:
第一分配单元860,用于若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量未达到预设最大容量,则分配新的object组;
所述写入单元840,具体用于将所述原始数据块以及校验数据块并发写入新分配的object组中的连续多个空闲区块。
在可选实施例中,所述写入单元840,还用于若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量已达到预设最大容量,则将所述原始数据块以及校验数据块并发写入存在空闲区块且初始分配的object组中的连续多个空闲区块。
在可选实施例中,所述object组为虚拟对象Vobject组,所述Vobject组中各Vobeject包括至少一个object,且各Vobject中包括的object数量相同;
相应地,请一并参见图10,为本申请实施例提供的另一种数据写入装置的结构示意图,如图10所示,在图8所示数据写入装置的基础上,图10所示数据写入装置还可以包括:
第二分配单元870,用于若所述Vobject组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量未达到预设最大容量,则为所述Vobject组中各Vobject分配新的object;
所述写入单元840,具体用于将所述原始数据块以及校验数据块并发写入所述Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块;
所述映射单元850,具体用于将所述Vobject组中的各object映射至不同的OSD;其中,归属于不同Vobeject的object映射至不同的OSD。
请一并参见图11,为本申请实施例提供的另一种数据写入装置的结构示意图,如图11所示,在图10所示数据写入装置的基础上,图11所示数据写入装置还可以包括:
记录单元880,用于记录所述原始数据块以及校验数据块所在的区块归属的Vobject的标识以及地址,并记录所述原始数据块以及校验数据块所在区块归属的Vobject的标识以及地址与所述原始数据块以及校验数据块所在区块归属的object的标识以及地址的映射关系。
图12为本发明实施例提供的一种数据写入装置的硬件结构示意图。该数据写入装置可包括处理器1201、存储有机器可执行指令的机器可读存储介质1202。处理器1201与机器可读存储介质1202可经由***总线1203通信。并且,通过读取并执行机器可读存储介质1202中与数据写入逻辑对应的机器可执行指令,处理器1201可执行上文描述的数据写入方法。
本发明实施例中提到的机器可读存储介质1202可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,当接收到针对目标文件的写入请求时,按照预设区块大小将目标文件划分为原始数据块,并利用奇偶校验算法计算至少一个校验数据块;进而,可以将目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块,并将object组中的各object映射至不同的OSD,解决了Ceph EC存在写惩罚的问题,并提高了Ceph的数据写入性能。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种数据写入方法,应用于分布式对象存储***中的存储节点,其特征在于,所述方法包括:
当接收到针对目标文件的写入请求时,按照预设区块大小将所述目标文件划分为原始数据块,并根据所述原始数据块利用奇偶校验算法计算至少一个校验数据块;
将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块;其中,所述object组中包括至少三个object,所述object组中各object包括等量等大小的区块,所述连续多个空闲区块依次归属于所述object组中的各object;
将所述object组中的各object映射至不同的对象存储设备OSD。
2.根据权利要求1所述的方法,其特征在于,所述将所述目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块,包括:
若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量未达到预设最大容量,则分配新的object组,并将所述原始数据块以及校验数据块并发写入新分配的object组中的连续多个空闲区块。
3.根据权利要求2所述的方法,其特征在于,所述将所述目标文件对应的原始数据块以及校验数据块并发写入object组中的连续多个空闲区块,还包括:
若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量已达到预设最大容量,则将所述原始数据块以及校验数据块并发写入存在空闲区块且初始分配的object组中的连续多个空闲区块。
4.根据权利要求1所述的方法,其特征在于,所述object组为虚拟对象Vobject组,所述Vobject组中各Vobeject包括至少一个object,且各Vobject中包括的object数量相同;
所述将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块,包括:
若所述Vobject组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量未达到预设最大容量,则为所述Vobject组中各Vobject分配新的object,并将所述原始数据块以及校验数据块并发写入所述Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块;
所述将所述object组中的各object映射至不同的OSD,包括:
将所述Vobject组中的各object映射至不同的OSD;其中,归属于不同Vobeject的object映射至不同的OSD。
5.根据权利要求4所述的方法,其特征在于,所述将所述目标文件对应的原始数据块以及校验数据块并发写入所述Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块之后,还包括:
记录所述原始数据块以及校验数据块所在的区块归属的Vobject的标识以及地址,并记录所述原始数据块以及校验数据块所在区块归属的Vobject的标识以及地址与所述原始数据块以及校验数据块所在区块归属的object的标识以及地址的映射关系。
6.一种数据写入装置,应用于分布式对象存储***中的存储节点,其特征在于,所述装置包括:
接收单元,用于接收写入请求;
划分单元,用于当所述接收单元接收到针对目标文件的写入请求时,按照预设区块大小将所述目标文件划分为原始数据块;
校验单元,用于根据所述原始数据块利用奇偶校验算法计算至少一个校验数据块;
写入单元,用于将所述目标文件对应的原始数据块以及校验数据块并发写入对象object组中的连续多个空闲区块;其中,所述object组中包括至少三个object,所述object组中各object包括等量等大小的区块,所述连续多个空闲区块依次归属于所述object组中的各object;
映射单元,用于将所述object组中的各object映射至不同的对象存储设备OSD。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
第一分配单元,用于若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量未达到预设最大容量,则分配新的object组;
所述写入单元,具体用于将所述原始数据块以及校验数据块并发写入新分配的object组中的连续多个空闲区块。
8.根据权利要求7所述的装置,其特征在于,
所述写入单元,还用于若当前的object组的已用容量达到第一预设阈值,且已分配的object组的总容量已达到预设最大容量,则将所述原始数据块以及校验数据块并发写入存在空闲区块且初始分配的object组中的连续多个空闲区块。
9.根据权利要求6所述的装置,其特征在于,所述object组为虚拟对象Vobject组,所述Vobject组中各Vobeject包括至少一个object,且各Vobject中包括的object数量相同;
所述装置还包括:
第二分配单元,用于若所述Vobject组中存在空闲区块的object的已用容量达到第二预设阈值,且已分配的object的总容量未达到预设最大容量,则为所述Vobject组中各Vobject分配新的object;
所述写入单元,具体用于将所述原始数据块以及校验数据块并发写入所述Vobject组中存在空闲区块且初始分配的object的连续多个空闲区块;
所述映射单元,具体用于将所述Vobject组中的各object映射至不同的OSD;其中,归属于不同Vobeject的object映射至不同的OSD。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
记录单元,用于记录所述原始数据块以及校验数据块所在的区块归属的Vobject的标识以及地址,并记录所述原始数据块以及校验数据块所在区块归属的Vobject的标识以及地址与所述原始数据块以及校验数据块所在区块归属的object的标识以及地址的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810264205.9A CN108491290B (zh) | 2018-03-28 | 2018-03-28 | 一种数据写入方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810264205.9A CN108491290B (zh) | 2018-03-28 | 2018-03-28 | 一种数据写入方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108491290A CN108491290A (zh) | 2018-09-04 |
CN108491290B true CN108491290B (zh) | 2021-07-23 |
Family
ID=63316454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810264205.9A Active CN108491290B (zh) | 2018-03-28 | 2018-03-28 | 一种数据写入方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108491290B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3889752A4 (en) | 2018-12-25 | 2021-12-01 | Huawei Technologies Co., Ltd. | DATA STORAGE METHOD AND DEVICE IN A DISTRIBUTED STORAGE SYSTEM AND COMPUTER PROGRAM PRODUCT |
CN113315801B (zh) * | 2020-06-08 | 2024-06-04 | 阿里巴巴集团控股有限公司 | 存储区块链数据的方法和*** |
CN113806314B (zh) * | 2020-06-15 | 2024-01-26 | 中移(苏州)软件技术有限公司 | 一种数据存储方法、装置、计算机存储介质及*** |
CN114968653B (zh) * | 2022-07-14 | 2022-11-11 | 麒麟软件有限公司 | 一种zfs文件***的raidz校验值的确定方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063270A (zh) * | 2010-12-28 | 2011-05-18 | 成都市华为赛门铁克科技有限公司 | 一种写操作方法及装置 |
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储*** |
CN106708439A (zh) * | 2016-12-23 | 2017-05-24 | 深圳市中博科创信息技术有限公司 | 一种分布式文件***中节点选择计算方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9537511B2 (en) * | 2013-11-06 | 2017-01-03 | Cypress Semiconductor Corporation | Methods, circuits, systems and computer executable instruction sets for providing error correction of stored data and data storage devices utilizing same |
-
2018
- 2018-03-28 CN CN201810264205.9A patent/CN108491290B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102063270A (zh) * | 2010-12-28 | 2011-05-18 | 成都市华为赛门铁克科技有限公司 | 一种写操作方法及装置 |
CN103699494A (zh) * | 2013-12-06 | 2014-04-02 | 北京奇虎科技有限公司 | 一种数据存储方法、数据存储设备和分布式存储*** |
CN106708439A (zh) * | 2016-12-23 | 2017-05-24 | 深圳市中博科创信息技术有限公司 | 一种分布式文件***中节点选择计算方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN108491290A (zh) | 2018-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243706B2 (en) | Fragment management method and fragment management apparatus | |
CN108491290B (zh) | 一种数据写入方法及装置 | |
US10223010B2 (en) | Dynamic storage device provisioning | |
US9514055B2 (en) | Distributed media cache for data storage systems | |
US20180232314A1 (en) | Method for storing data by storage device and storage device | |
US8832356B2 (en) | Apparatus and method for flash memory address translation | |
WO2018189858A1 (ja) | ストレージシステム | |
CN107924291B (zh) | 存储*** | |
US10922276B2 (en) | Online file system check | |
KR102347841B1 (ko) | 메모리제어장치 및 메모리제어장치의 동작 방법 | |
CN108255414B (zh) | 固态硬盘访问方法及装置 | |
US20210326207A1 (en) | Stripe reassembling method in storage system and stripe server | |
US10402108B2 (en) | Efficient control of data storage areas based on a size of compressed data to be written | |
CN110569000A (zh) | 基于固态硬盘阵列的主机端raid管理方法和装置 | |
CN111913664B (zh) | 一种数据写入方法及装置 | |
US20190026033A1 (en) | Method and system for hardware accelerated cache flush | |
US11079956B2 (en) | Storage system and storage control method | |
CN109739688B (zh) | 快照资源空间管理方法、装置、电子设备 | |
CN116917873A (zh) | 数据存取方法、存储控制器和存储设备 | |
KR100970537B1 (ko) | Ssd 관리 장치 및 방법 | |
CN112162703B (zh) | 缓存实现方法及缓存管理模块 | |
CN115857813A (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 |