CN108595287A - 基于纠删码的数据截断方法及装置 - Google Patents
基于纠删码的数据截断方法及装置 Download PDFInfo
- Publication number
- CN108595287A CN108595287A CN201810393095.6A CN201810393095A CN108595287A CN 108595287 A CN108595287 A CN 108595287A CN 201810393095 A CN201810393095 A CN 201810393095A CN 108595287 A CN108595287 A CN 108595287A
- Authority
- CN
- China
- Prior art keywords
- data
- memory node
- node
- daily record
- truncation
- 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
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/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0727—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
-
- 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/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及分布式存储技术领域,提供一种基于纠删码的数据截断方法及装置,所述方法包括:接收客户端发送的数据截断命令,其中,数据截断命令由客户端响应文件截断请求产生、以截断存储于存储节点的待截断数据;判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务,若有,则等待所述正在处理的数据写事务被处理完成再执行数据截断命令;当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。本发明通过保证截断命令执行前没有正在执行的数据写事务,避免了对待截断数据中部分数据的备份和删除操作,解决了数据截断时的写放大问题,提升了分布式存储系统的写性能。
Description
技术领域
本发明涉及分布式存储技术领域,具体而言,涉及一种基于纠删码的数据截断方法及装置。
背景技术
在分布式存储系统中,纠删码已经应用于对象存储、块存储和文件系统存储。纠删码在业务处理过程中需要对所有写操作(包括截断操作)进行分布式容错处理,预防节点故障对数据的破坏。然而,由于需要考虑其他写事务对截断操作的影响,因此必须要对截断操作做额外的容错处理,造成了截断操作的放大。其中所述截断操作的放大包括对待截断数据中的部分数据的备份和删除,从而影响了纠删码的性能,降低了分布式存储系统的写性能。
发明内容
本发明实施例的目的在于提供一种基于纠删码的数据截断方法及装置,用以改善上述对截断操作做额外的容错处理,造成了截断操作的放大的问题。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种基于纠删码的数据截断方法,应用于分布式存储系统中的存储节点,所述存储节点与客户端通信连接,所述方法包括:接收客户端发送的数据截断命令,其中,数据截断命令由客户端响应文件截断请求产生、以截断存储于存储节点的待截断数据;判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务,若有,则等待正在处理的数据写事务被处理完成再执行数据截断命令;当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。
第二方面,本发明实施例还提供了一种基于纠删码的数据截断装置,应用于分布式存储系统中的存储节点,所述存储节点与客户端通信连接,所述装置包括接收模块、判断模块及数据截断模块。其中,接收模块用于数据截断命令由客户端响应文件截断请求产生、以截断存储于存储节点的待截断数据;判断模块用于判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务;数据截断模块用于当待截断数据所属的数据维护单元上有正在处理的数据写事务时,等待正在处理的数据写事务被处理完成再执行数据截断命令;当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。
相对现有技术,本发明实施例提供的一种基于纠删码的数据截断方法及装置,首先,存储节点接收客户端发送的数据截断命令,其中,数据截断命令由所述客户端响应文件截断请求产生、以截断存储于所述存储节点的待截断数据;然后,判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务,若有,则等待正在处理的数据写事务被处理完成再执行数据截断命令;最后,当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。与现有技术相比,本发明实施例由于在数据截断命令执行前没有正在执行的数据写事务,使得无需考虑该正在执行的数据写事务对数据截断命令的影响,因此无需对待截断数据中的部分数据进行备份和删除操作,解决了数据截断时的写放大问题,提升了分布式存储系统的写性能。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的基于纠删码的数据截断方法应用场景示意图。
图2示出了本发明实施例提供的存储节点的方框示意图。
图3示出了本发明实施例提供的基于纠删码的数据截断方法流程图。
图4示出了本发明实施例提供的存储节点异常恢复处理方法流程图。
图5为图4示出了步骤S105的子步骤流程图。
图6示出了本发明实施例提供的基于纠删码的数据截断装置的方框示意图。
图标:10,30,40-存储节点;20-客户端;101-存储器;102-存储控制器;103-处理器;200-基于纠删码的数据截断装置;201-接收模块;202-判断模块;203-数据截断模块;204-确定模块;205-控制模块。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
请参照图1,图1示出了本发明实施例提供的基于纠删码的数据截断方法应用场景示意图。分布式存储系统与客户端20通信连接,分布式存储系统中包括多个存储节点,分布式存储系统将用户通过客户端20发送至分布式存储系统的需要存储的数据分散存储在多个存储节点上,该多个存储节点可以是存储节点10、存储节点30、存储节点40等,其中,多个存储节点中的任意一个存储节点可以是主存储节点,多个存储节点中除主存储节点之外的其余存储节点可以是从存储节点,也就是说,图1中的主存储节点可以是存储节点10、存储节点30、存储节点40等中的任意一个。
为了便于描述,在本发明实施例中,确定存储节点10为主存储节点,除存储节点10之外的其他存储节点,例如存储节点30、存储节点40等均为从存储节点。其中,存储节点10与客户端20通信连接,并均与存储节点30、存储节点40等从存储节点通信连接,用户发送文件截断请求至客户端20以使客户端20响应该截断请求,并产生相应的数据截断命令,存储节点10接收客户端20发送的数据截断命令,并控制存储节点30、存储节点40等从存储节点截断与其对应的待截断数据。存储节点10在存储节点10、存储节点30、存储节点40等中至少一个异常恢复时首先确定需要执行数据截断命令的待同步的存储节点,然后控制待同步的存储节点执行数据截断命令以截断与该待同步的存储节点对应的待截断数据。
请参照图2,图2示出了本发明实施例提供的存储节点10的方框示意图,存储节点10可以是,但不限于个人电脑(personal computer,PC)、服务器、存储阵列等等。存储节点10的操作系统可以是,但不限于,Windows系统、Linux系统、Unix系统等。所述存储节点10包括基于纠删码的数据截断装置200、存储器101、存储控制器102及处理器103。
存储器101、存储控制器102及处理器103各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。基于纠删码的数据截断装置200包括至少一个可以软件或固件(firmware)的形式存储于存储器101中或固化在所述存储节点10的操作系统(operating system,OS)中的软件功能模块。处理器103用于执行存储器101中存储的可执行模块,例如基于纠删码的数据截断装置200所包括的软件功能模块及计算机程序等。
其中,存储器101可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序。
处理器103可以是一种集成电路芯片,具有信号处理能力。上述的处理器103可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)、语音处理器以及视频处理器等;还可以是数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器103也可以是任何常规的处理器等。
第一实施例
分布式存储系统将用户通过客户端发送的需要存储的数据分散地存储在多个存储节点上,为了增强分布式存储系统的可靠性及扩容、缩容能力,需要分布式存储系统可以很容易地将数据从一个存储节点迁移至另一个存储节点,为了便于数据在存储节点之间进行迁移,用户需要存储的数据以数据维护单元为单位进行组织、迁移及维护,包括在存储节点异常恢复后的数据的恢复也是以数据维护单元为单位进行恢复的。用户需要存储的数据首先会划分成若干个数据维护单元,每一个数据维护单元会分散地存储在不同的存储节点上。因此,存储节点是分布式存储系统中必不可少的组成部分、数据维护单元也是分布式存储系统中必不可少的概念。然而,针对不同的具体的分布式存储系统,存储节点及数据维护单元的名称可以是不同的,例如其中一个实施例,分布式存储系统可以为Ceph系统(一个开源的分布式存储系统),存储节点可以为对象存储设备(Object-based Storage Device,OSD)节点,数据维护单元可以为放置组(Placement Group,PG)。对于另一个实施例,分布式存储系统可以为FusionStorage系统(华为的分布式存储系统),存储节点可以为对象存储设备(Object-based Storage Device,OSD)节点,数据维护单元可以为数据分片(Partition)。为了便于清楚地描述基于纠删码的数据截断的方法的流程,在第一实施例中,以一个具体的分布式存储系统Ceph为例进行阐述。
请参照图3,图3示出了本发明实施例提供的基于纠删码的数据截断的方法流程图。基于纠删码的数据截断的方法包括以下步骤:
步骤S101,接收客户端发送的数据截断命令,其中,数据截断命令由客户端响应文件截断请求产生、以截断存储于存储节点的待截断数据。
在本发明实施例中,以分布式存储系统Ceph为例,分布式存储系统中的存储节点相当于Ceph中的OSD节点,存储节点10、存储节点30、存储节点40分别相当于Ceph中OSD节点30、OSD节点40。分布式存储系统中的数据维护单元相当于Ceph中的PG,步骤S101的处理过程可以是:首先,客户端20响应用户发送的文件截断请求,其中,文件截断请求包括了待截断的文件名及其截断位置信息,由于每个文件在存储的时候都会被客户端20切分成一个或者多个对象,然后再根据预定的策略将这些对象存储到对应的OSD节点10、OSD节点30、OSD节点40等多个OSD节点中。客户端20根据待截断的文件名及其截断位置信息,定位出与其对应的待截断数据所属的对象ID(IDentity,身份标识号码)及在该对象中的截断位置信息,对象ID是对象在Ceph中的唯一编号。然后,客户端20根据对象ID通过预设Hash(散列)算法得到该对象对应的PGID(Placement Group IDentity,放置组身份标识号码),PGID是PG在Ceph中的唯一编号,根据PGID通过CRUSH(Controlled Replication Under ScalableHashing)算法和预设存放规则确定出存储该PGID的OSD节点10的序号,客户端20将该对象ID及在该对象中的截断位置信息封装成数据截断命令并发送给OSD节点10,以使OSD节点10控制存储该对象的OSD节点10、OSD节点30、OSD节点40等多个OSD节点对存储在各自OSD节点上的待截断数据进行截断。
步骤S102,判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务。
在本发明实施例中,以分布式存储系统Ceph为例,分布式存储系统中的数据维护单元相当于Ceph中的PG,PG是Ceph中存储的数据进行组织、迁移及维护的单位,同时还用于对对象的存储进行组织和位置映射,一个PG负责组织若干个对象,但是一个对象只能被映射到一个PG中。在Ceph中,针对一个对象的数据写操作往往需要分解成多个按预定顺序执行的一系列的写子操作,数据写事务指将该数据写子操作封装成数据写事务来处理,以保证数据写操作的原子性、一致性、隔离性和持久性,其中,原子性是指数据写事务中的操作要么全做,要么全不做,一致性指数据写事务执行前,待处理的数据处于一致性,数据写事务执行后,处理后的数据也处于一致性,隔离性要求系统必须保证数据写事务不受其他并发执行事务的影响,持久性指数据写事务处理后对于数据的改变是永久的,即使在Ceph遇到异常的情况下也不会丢失。正在处理的写事务处理的写数据与待截断数据属于同一个PG,且该写事务的处理将影响步骤S101中数据截断命令的执行。步骤S102的处理过程可以是:当待截断数据所属PG上有正在处理的数据写事务时执行步骤S103,当待截断数据所属PG上没有正在处理的数据写事务时执行步骤S104。
步骤S103,等待正在处理的数据写事务被处理完成。
在本发明实施例中,由于截断操作也是一种写操作,正在处理的数据写事务中既可以包括正在处理的写操作,也可以包括正在处理的截断操作。当待截断数据所属数据维护单元上有正在处理的数据写事务时,等待该数据写事务被处理完成后再继续执行数据截断命令。
需要说明的是,如果正在处理的数据写事务后还有其他的待处理数据写事务,还需要暂时阻止该待处理的数据写事务,以免其在正在处理的数据写事务处理后继续被处理,当正在处理的数据写事务被处理后,先执行步骤S104,然后再继续处理所述其他的待处理数据写事务。
步骤S104,执行数据截断命令。
在本发明实施例中,以分布式存储系统Ceph为例,分布式存储系统中的存储节点相当于Ceph中的OSD节点,存储节点10、存储节点30及存储节点40分别相当于Ceph中OSD节点10、OSD节点30、OSD节点40,步骤S104的处理流程如下:OSD节点10判定当前没有写事务正在被处理时,首先生成与数据截断命令对应的日志版本号,其中,该日志版本号是按预设规则生成的编号,该编号是能够标识该日志的唯一编号,OSD节点10执行数据截断命令,同时将该日志版本号和数据截断命令均发送至存储待截断数据的OSD节点30、OSD节点40等从OSD节点,以使OSD节点30、OSD节点40等从OSD节点执行数据截断命令。
作为一种实施方式,执行数据截断命令的方法可以包括:
首先,OSD节点10按照预设规则生成日志版本号。日志版本号是数据截断命令操作日志的唯一编号,每个数据截断命令对应一个日志版本号。
其次,OSD节点10根据对象ID得到保存与该对象对应的待截断数据的从OSD节点列表,即OSD节点30、OSD节点40等从OSD节点列表,并将日志版本号、数据截断命令中的对象ID和该对象内的截断位置发送至OSD节点30、OSD节点40等从OSD节点,以使OSD节点30、OSD节点40等从OSD节点执行数据截断命令。同时,OSD节点10执行数据截断命令,截断与OSD节点10对应的待截断数据。其中,OSD节点10、OSD节点30、OSD节点40等多个OSD节点上均保存一份PGLog(Placement Group Log,放置组日志),每个OSD节点执行数据截断命令成功后均在该OSD节点上的PGLog中记录一条与该数据截断命令对应的日志信息,该日志信息用于在OSD节点10、OSD节点30、OSD节点40等多个OSD节点中至少一个异常恢复时恢复与该日志信息对应的数据。
当多个存储节点中至少一个异常时,其中,存储节点异常是指存储节点不再能对客户端20提供安全、有效的数据存储功能,异常可以、但不限于是存储节点被异常断电导致,存储节点上运行的进程出现问题导致,存储节点通信模块出现问题导致等等。当存储节点从异常恢复至正常前,此时多个存储节点上的数据是不一致的,为了使异常恢复后多个存储节点上的数据一致,可以采用如下步骤,请参照图4:
步骤S105,主存储节点获取多个存储节点的数据维护单元日志,并依据多个存储节点的数据维护单元日志从多个存储节点中确定出待同步的存储节点,其中,待同步的存储节点上存储有待截断数据。
在本发明实施例中,异常存储节点可以是存储节点10、存储节点30、存储节点40等多个存储节点中至少一个。确定待同步的存储节点的时机是当多个存储节点中至少一个异常恢复时,存储节点10获取存储节点30、存储节点40等从存储节点上的数据维护单元日志,依据存储节点10、存储节点30、存储节点40等多个存储节点上的数据维护单元日志确定出待同步的存储节点,其中,待同步的存储节点上存储有待截断数据。
作为一种实施方式,确定待同步的存储节点的方法可以包括以下子步骤,请参看图5:
子步骤S1051:找出多个数据维护单元日志中均存在且编号最大的日志记录作为权威日志。
在本发明实施例中,数据维护单元日志中包含了多条对属于该数据维护单元的数据进行写的写事务的日志记录,此处的写事务包括截断事务,在处理每一个写事务时,均会在数据维护单元日志中写入一条与其对应的日志记录,每一条日志记录都会有一个按照预设规则生成的编号,该编号是标识一条日志记录的唯一序号。权威日志表征最近一次在多个存储节点上均执行成功的数据操作命令对应的日志,比权威日志编号小的日志对应的数据操作命令是多个存储节点上在权威日志之前均执行成功的数据操作命令。以分布式存储系统Ceph为例,分布式存储系统中的存储节点相当于Ceph中的OSD节点,存储节点10、存储节点30、存储节点40分别相当于Ceph中OSD节点30、OSD节点40,分布式存储系统中的数据维护单元、数据维护单元日志分别相当于Ceph中的PG、PGLog,数据维护单元日志中每一条日志记录的编号相当于Ceph中PGLog中每一条日志记录的日志版本号。子步骤S1051的处理过程可以是:首先,OSD节点10获取OSD节点30、OSD节点40等从OSD节点上的PGLog。在OSD节点10、OSD节点30、OSD节点40等多个OSD节点正常的情况下,各OSD节点上的PGLog里记录的日志是一致的,只有当其中至少一个出现异常时才会出现各OSD节点上的PGLog里记录的日志不一致的情况。例如,Ceph中包括三个OSD节点,分别记作:1号OSD节点、2号OSD节点、3号OSD节点。日志版本号8对应的是一条写数据的写操作命令,1号OSD节点上执行该写操作命令成功后在1号OSD节点上的PGLog里记录一条版本号8对应的日志记录,2号OSD节点上执行该写操作命令成功后在2号OSD节点上的PGLog里记录一条版本号8对应的日志记录,3号OSD节点上执行该写操作命令成功后在3号OSD节点上的PGLog里记录一条版本号8对应的日志记录,此时,1号OSD节点、2号OSD节点和3号OSD节点上的PGLog里的日志记录是一致的。日志版本号9对应的是一条截断操作命令,该截断操作命令在1号OSD节点和3号OSD节点上均执行成功,则1号OSD节点和3号OSD节点上的PGLog中均记录了日志版本号9对应的日志记录,2号OSD节点上执行该截断操作命令时,2号OSD节点出现异常了,因此,2号OSD节点上就没有记录日志版本号9对应的日志记录,2号OSD节点上的PGLog里记录的日志记录与1号OSD节点和3号OSD节点上的PGLog里记录的日志记录不一致,则1号OSD节点上的PGLog、2号OSD节点上PGLog、3号OSD节点上的PGLog中均存在且编号最大的日志记录是日志版本号8对应的日志记录,则将日志版本号8对应的日志记录作为权威日志。
子步骤S1052:当权威日志的下一条日志为数据截断操作的日志时,确定该数据截断操作的日志为截断日志。
在本发明实施例中,数据截断操作的日志是执行数据截断命令成功后记录在数据维护单元日志中的日志记录。例如,Ceph中包括三个OSD节点,分别记作:1号OSD节点、2号OSD节点、3号OSD节点。日志版本号8对应的是一条写数据的写操作命令,该写操作命令在1号OSD节点、2号OSD节点、3号OSD节点均执行成功后,则1号OSD节点上的PGLog、2号OSD节点上的PGLog、3号OSD节点上的PGLog里均记录了一条版本号8对应的日志记录。日志版本号9对应的是一条截断操作命令,该截断操作命令在1号OSD节点和3号OSD节点上均执行成功,则1号OSD节点和3号OSD节点上的PGLog中均记录了日志版本号9对应的日志记录,2号OSD节点上执行该截断操作命令时,2号OSD节点出现异常了,因此,2号OSD节点上就没有记录日志版本号9对应的日志记录,则1号OSD节点上的PGLog、2号OSD节点上PGLog、3号OSD节点上的PGLog中均存在且编号最大的日志记录是日志版本号8对应的日志记录,则将日志版本号8对应的日志记录作为权威日志,权威日志的下一条日志是日志版本号9对应的日志记录,日志版本号9对应的日志记录是执行该截断操作命令时记录的,为数据截断操作的日志,则日志版本号9对应的日志记录为截断日志。
子步骤S1053:将多个数据维护单元日志中未包括截断日志的存储节点作为待同步的存储节点。
在本发明实施例中,数据维护单元在每一个存储节点上均对应一个数据维护单元日志,其中,未包括截断日志的存储节点即为待同步的存储节点,该待同步的存储节点是存储节点在发生异常时还未执行截断命令的存储节点,即该待同步的存储节点上存储有待截断数据。例如,Ceph中包括三个OSD节点,分别记作:1号OSD节点、2号OSD节点、3号OSD节点。1号OSD节点上的PGLog中记录的日志版本号为7、8、9,2号OSD节点上的PGLog中记录的日志版本号为7、8,3号OSD节点上的PGLog中记录的日志版本号为7、8、9,此时,日志版本号为8的日志为权威日志日志版本号8个下一条日志是日志版本号为9的日志,该日志版本号为9的日志为数据截断操作的日志,则日志版本号为9的日志为截断日志,未包括该截断日志的存储节点为2号OSD节点,则2号OSD节点为待同步的存储节点,即与日志版本号为9的日志对应的数据截断命令在1号OSD节点和3号OSD节点上都执行成功了,2号OSD节点是未执行截断命令的存储节点,其上存储有待截断数据。
需要说明的是,如果权威日志的下一条日志不是截断日志,则按照现有技术处理,根据该权威日志的下一条日志进行数据回滚操作,即将数据恢复到执行与该权威日志的下一条日志对应的操作命令之前的状态。
步骤S106,所述主存储节点控制所述待同步的存储节点执行所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据。
在本发明实施例中,异常存储节点可以是主存储节点,即图1中的存储节点10,也可以是从存储节点,即图1中的存储节点30、存储节点40等多个从存储节点中的至少一个,当待同步的存储节点为从存储节点时,主存储节点将数据截断命令发送至待同步的存储节点,以使待同步的存储节点截断与该待同步的存储节点对应的待截断数据,保证执行该数据截断命令后存储节点10、存储节点30、存储节点40等多个存储节点上数据一致,当异常存储节点为主存储节点时,主存储节点执行该数据截断命令以截断与主存储节点对应的待截断数据,保证执行该数据截断命令后存储节点10、存储节点30、存储节点40等多个存储节点上数据一致。
在本发明实施例中,需要说明的是,步骤S105及其子步骤S1051、子步骤S1052、子步骤S1053和步骤S106均是在发生异常的存储节点在异常恢复时、且可以提供对外服务之前执行的。为了使发生异常的存储节点异常恢复后多个存储节点上的数据一致,现有技术采用的方法是:首先将数据回滚到执行数据截断命令之前的状态,然后再在多个存储节点上均重新执行数据截断命令,以使多个存储节点上的数据一致,与现有技术相比,本发明实施例中,由于发生异常的存储节点异常恢复时只需要先确定待同步的存储节点并在待同步的存储节点上重新执行数据截断命令,无需进行数据回滚,也无需在除待同步的存储节点之外的其他存储节点上重新执行数据截断命令,因此减少了发生异常的存储节点在异常恢复时重新执行数据截断命令的操作,缩短了异常存储节点故障恢复的时间。
在本发明实施例中,首先,接收客户端20发送的数据截断命令,其中,数据截断命令由客户端20响应文件截断请求产生、以截断存储于存储节点的待截断数据;其次,判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务,最后,当待截断数据所属的数据维护单元上有正在处理的数据写事务时,等待正在处理的数据写事务被处理完成再执行数据截断命令;当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。由于在数据截断命令执行前没有正在执行的数据写事务,使得无需考虑该正在执行的数据写事务对数据截断命令的影响,因此无需对待截断数据中的部分数据进行备份和删除操作,解决了数据截断时的写放大问题,提升了分布式存储系统的写性能。
第二实施例
请参照图6,图6示出了本发明实施例提供的基于纠删码的数据截断装置200的方框示意图。基于纠删码的数据截断装置200应用于分布式存储系统中的存储节点,其包括接收模块201、判断模块202、数据截断模块203、确定模块204和控制模块205。
接收模块201,用于接收客户端发送的数据截断命令,其中,数据截断命令由客户端响应文件截断请求产生、以截断存储于存储节点的待截断数据。
本发明实施例中,接收模块201可以用于执行步骤S101。
判断模块202,用于判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务。
本发明实施例中,判断模块202可以用于执行步骤S102。
数据截断模块203,用于当待截断数据所属的数据维护单元上有正在处理的数据写事务时,等待正在处理的数据写事务被处理完成再执行数据截断命令;当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。
本发明实施例中,数据截断模块203可以用于执行步骤S103-S104。
确定模块204,用于获取多个存储节点的数据维护单元日志,并依据多个存储节点的数据维护单元日志从多个存储节点中确定出待同步的存储节点,其中,待同步的存储节点上存储有待截断数据。
本发明实施例中,确定模块204可以用于执行步骤S105及其子步骤S1051-S1053。
控制模块205,用于控制待同步的存储节点执行数据截断命令以截断待同步的存储节点上存储的待截断数据。
本发明实施例中,控制模块205可以用于执行步骤S106。
综上所述,本发明提供一种基于纠删码的数据截断方法及装置,所述方法包括:接收客户端发送的数据截断命令,其中,数据截断命令由客户端响应文件截断请求产生、以截断存储于存储节点的待截断数据;判断待截断数据所属的数据维护单元上是否有正在处理的数据写事务,若有,则等待正在处理的数据写事务被处理完成再执行数据截断命令;当待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行数据截断命令。与现有技术相比,本发明进行数据截断操作前保证了无正在执行的数据写事务,从而避免了数据截断操作中的部分数据的备份和删除操作,解决了数据截断时的写放大问题,提升了分布式存储系统的写性能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (10)
1.一种基于纠删码的数据截断方法,其特征在于,应用于分布式存储系统中的存储节点,所述存储节点与客户端通信连接,所述方法包括:
接收所述客户端发送的数据截断命令,其中,所述数据截断命令由所述客户端响应文件截断请求产生、以截断存储于所述存储节点的待截断数据;
判断所述待截断数据所属的数据维护单元上是否有正在处理的数据写事务,若有,则等待所述正在处理的数据写事务被处理完成再执行所述数据截断命令;
当所述待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行所述数据截断命令。
2.如权利要求1所述的方法,其特征在于,所述存储节点为多个,所述多个存储节点通信连接,每一存储节点均保存有数据维护单元日志,所述多个存储节点包括主存储节点,所述方法还包括:
所述主存储节点获取多个存储节点的数据维护单元日志,并依据所述多个存储节点的数据维护单元日志从多个存储节点中确定出待同步的存储节点,其中,所述待同步的存储节点上存储有待截断数据;
所述主存储节点控制所述待同步的存储节点执行所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据。
3.如权利要求2所述的方法,其特征在于,所述数据维护单元日志中包括多条日志记录,每条日志记录包括一个按预设规则生成的编号,所述依据所述多个存储节点的数据维护单元日志从多个存储节点中确定出待同步的存储节点的步骤包括:
找出多个数据维护单元日志中均存在且编号最大的日志记录作为权威日志;
当所述权威日志的下一条日志为数据截断操作的日志时,确定该数据截断操作的日志为截断日志;
将多个数据维护单元日志中未包括所述截断日志的存储节点作为待同步的存储节点。
4.如权利要求2所述的方法,其特征在于,当所述待同步的存储节点为所述从存储节点时,所述主存储节点控制所述待同步的存储节点执行所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据的步骤包括:
所述主存储节点向所述待同步的存储节点发送所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据。
5.如权利要求2所述的方法,其特征在于,当所述待同步的存储节点为所述主存储节点时,所述主存储节点控制所述待同步的存储节点执行所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据的步骤包括:
所述主存储节点执行所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据。
6.一种基于纠删码的数据截断装置,其特征在于,应用于分布式存储系统中的存储节点,所述存储节点与客户端通信连接,所述装置包括:
接收模块,用于接收所述客户端发送的数据截断命令,其中,所述数据截断命令由所述客户端响应文件截断请求产生、以截断存储于所述存储节点的待截断数据;
判断模块,用于判断所述待截断数据所属的数据维护单元上是否有正在处理的数据写事务;
数据截断模块,用于当所述待截断数据所属的数据维护单元上有正在处理的数据写事务时,等待所述正在处理的数据写事务被处理完成再执行所述数据截断命令;当所述待截断数据所属的数据维护单元上无正在处理的数据写事务时,执行所述数据截断命令。
7.如权利要求6所述的装置,其特征在于,所述存储节点为多个,所述多个存储节点通信连接,每一存储节点均保存有数据维护单元日志,所述多个存储节点包括主存储节点和从存储节点,所述装置还包括:
确定模块,用于获取多个存储节点的数据维护单元日志,并依据所述多个存储节点的数据维护单元日志从多个存储节点中确定出待同步的存储节点,其中,所述待同步的存储节点上存储有待截断数据;
控制模块,用于控制所述待同步的存储节点执行所述数据截断命令以截断所述待同步的存储节点上存储的待截断数据。
8.如权利要求7所述的装置,其特征在于,所述数据维护单元的日志中包括多条日志记录,每条日志记录包括一个按预设规则生成的编号,所述确定模块还用于:
找出多个数据维护单元的日志中均存在且编号最大的日志记录作为权威日志;
当所述权威日志的下一条日志为数据截断操作的日志时,确定该数据截断操作的日志为截断日志;
将多个数据维护单元的日志中未包括所述截断日志的存储节点作为待同步的存储节点。
9.如权利要求7所述的装置,其特征在于,当所述待同步的存储节点为所述从存储节点时,所述主存储节点向所述从存储节点发送所述数据截断命令以截断所述从存储节点上存储的待截断数据。
10.如权利要求7所述的装置,其特征在于,当所述待同步的存储节点为所述主存储节点时,所述主存储节点执行所述数据截断命令以截断所述主存储节点上存储的待截断数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810393095.6A CN108595287B (zh) | 2018-04-27 | 2018-04-27 | 基于纠删码的数据截断方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810393095.6A CN108595287B (zh) | 2018-04-27 | 2018-04-27 | 基于纠删码的数据截断方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108595287A true CN108595287A (zh) | 2018-09-28 |
CN108595287B CN108595287B (zh) | 2021-11-05 |
Family
ID=63610306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810393095.6A Active CN108595287B (zh) | 2018-04-27 | 2018-04-27 | 基于纠删码的数据截断方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108595287B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522283A (zh) * | 2018-10-30 | 2019-03-26 | 深圳先进技术研究院 | 一种重复数据删除方法及系统 |
CN111737220A (zh) * | 2020-05-29 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种分布式文件存储系统中截断操作的优化方法及系统 |
CN113391946A (zh) * | 2021-05-25 | 2021-09-14 | 杭州电子科技大学 | 一种分布式存储中的纠删码的编解码方法 |
CN114385751A (zh) * | 2021-12-10 | 2022-04-22 | 北京旷视科技有限公司 | 数据同步方法、设备、介质及产品 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101256526A (zh) * | 2008-03-10 | 2008-09-03 | 清华大学 | 检查点容错技术中文件状态一致性维护的实现方法 |
CN101447851A (zh) * | 2007-11-26 | 2009-06-03 | 清华大学 | 一种准循环低密度奇偶校验码的生成方法 |
CN102541668A (zh) * | 2011-12-05 | 2012-07-04 | 清华大学 | 闪存文件系统可靠性分析方法 |
US8417982B1 (en) * | 2009-08-11 | 2013-04-09 | Marvell Israel (M.I.S.L.) Ltd. | Dual clock first-in first-out (FIFO) memory system |
US20140040286A1 (en) * | 2012-06-18 | 2014-02-06 | Maldivica Inc. | Method and system for the normalization, filtering and securing of associated metadata information on file objects deposited into an object store |
CN103577329A (zh) * | 2013-10-18 | 2014-02-12 | 华为技术有限公司 | 一种快照管理方法和装置 |
CN103870352A (zh) * | 2012-12-10 | 2014-06-18 | 财团法人工业技术研究院 | 数据存储与重建的方法与系统 |
CN104462403A (zh) * | 2014-12-11 | 2015-03-25 | 华为技术有限公司 | 文件截断方法和装置 |
US20150095347A1 (en) * | 2013-10-02 | 2015-04-02 | Netapp, Inc. | Extent hashing technique for distributed storage architecture |
US20150149423A1 (en) * | 2013-10-18 | 2015-05-28 | Hitachi Data Systems Engineering UK Limited | Data redundancy in a cluster system |
CN106020975A (zh) * | 2016-05-13 | 2016-10-12 | 华为技术有限公司 | 数据操作方法、装置和系统 |
CN106599323A (zh) * | 2017-01-03 | 2017-04-26 | 北京百度网讯科技有限公司 | 在分布式文件系统中实现分布式管道的方法和装置 |
CN106874383A (zh) * | 2017-01-10 | 2017-06-20 | 清华大学 | 一种分布式文件系统元数据的解耦合分布方法 |
CN107122133A (zh) * | 2017-04-24 | 2017-09-01 | 珠海全志科技股份有限公司 | 数据存储方法及装置 |
CN107168816A (zh) * | 2016-03-07 | 2017-09-15 | 北京忆恒创源科技有限公司 | Ecc帧长调整方法及其装置 |
CN107229694A (zh) * | 2017-05-22 | 2017-10-03 | 北京红马传媒文化发展有限公司 | 一种基于大数据的数据信息一致性处理方法、系统及装置 |
CN107608820A (zh) * | 2017-09-26 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于纠删码的文件写入方法及相关装置 |
-
2018
- 2018-04-27 CN CN201810393095.6A patent/CN108595287B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101447851A (zh) * | 2007-11-26 | 2009-06-03 | 清华大学 | 一种准循环低密度奇偶校验码的生成方法 |
CN101256526A (zh) * | 2008-03-10 | 2008-09-03 | 清华大学 | 检查点容错技术中文件状态一致性维护的实现方法 |
US8417982B1 (en) * | 2009-08-11 | 2013-04-09 | Marvell Israel (M.I.S.L.) Ltd. | Dual clock first-in first-out (FIFO) memory system |
CN102541668A (zh) * | 2011-12-05 | 2012-07-04 | 清华大学 | 闪存文件系统可靠性分析方法 |
US20140040286A1 (en) * | 2012-06-18 | 2014-02-06 | Maldivica Inc. | Method and system for the normalization, filtering and securing of associated metadata information on file objects deposited into an object store |
CN103870352A (zh) * | 2012-12-10 | 2014-06-18 | 财团法人工业技术研究院 | 数据存储与重建的方法与系统 |
US20150095347A1 (en) * | 2013-10-02 | 2015-04-02 | Netapp, Inc. | Extent hashing technique for distributed storage architecture |
CN103577329A (zh) * | 2013-10-18 | 2014-02-12 | 华为技术有限公司 | 一种快照管理方法和装置 |
US20150149423A1 (en) * | 2013-10-18 | 2015-05-28 | Hitachi Data Systems Engineering UK Limited | Data redundancy in a cluster system |
CN104462403A (zh) * | 2014-12-11 | 2015-03-25 | 华为技术有限公司 | 文件截断方法和装置 |
CN107168816A (zh) * | 2016-03-07 | 2017-09-15 | 北京忆恒创源科技有限公司 | Ecc帧长调整方法及其装置 |
CN106020975A (zh) * | 2016-05-13 | 2016-10-12 | 华为技术有限公司 | 数据操作方法、装置和系统 |
CN106599323A (zh) * | 2017-01-03 | 2017-04-26 | 北京百度网讯科技有限公司 | 在分布式文件系统中实现分布式管道的方法和装置 |
CN106874383A (zh) * | 2017-01-10 | 2017-06-20 | 清华大学 | 一种分布式文件系统元数据的解耦合分布方法 |
CN107122133A (zh) * | 2017-04-24 | 2017-09-01 | 珠海全志科技股份有限公司 | 数据存储方法及装置 |
CN107229694A (zh) * | 2017-05-22 | 2017-10-03 | 北京红马传媒文化发展有限公司 | 一种基于大数据的数据信息一致性处理方法、系统及装置 |
CN107608820A (zh) * | 2017-09-26 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种基于纠删码的文件写入方法及相关装置 |
Non-Patent Citations (3)
Title |
---|
LEI JIANG: "Improving write operations in MLC phase change memory", 《IEEE INTERNATIONAL SYMPOSIUM ON HIGH-PERFORMANCE COMP ARCHITECTURE》 * |
刘海波: "基于MooseFS的纠错码存储方法设计和实现", 《计算机工程与应用》 * |
马新娜: "基于Hadoop的轴承监测海量数据的存储与管理", 《信息技术》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109522283A (zh) * | 2018-10-30 | 2019-03-26 | 深圳先进技术研究院 | 一种重复数据删除方法及系统 |
CN109522283B (zh) * | 2018-10-30 | 2021-09-21 | 深圳先进技术研究院 | 一种重复数据删除方法及系统 |
CN111737220A (zh) * | 2020-05-29 | 2020-10-02 | 苏州浪潮智能科技有限公司 | 一种分布式文件存储系统中截断操作的优化方法及系统 |
CN111737220B (zh) * | 2020-05-29 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种分布式文件存储系统中截断操作的优化方法及系统 |
CN113391946A (zh) * | 2021-05-25 | 2021-09-14 | 杭州电子科技大学 | 一种分布式存储中的纠删码的编解码方法 |
CN113391946B (zh) * | 2021-05-25 | 2022-06-17 | 杭州电子科技大学 | 一种分布式存储中的纠删码的编解码方法 |
CN114385751A (zh) * | 2021-12-10 | 2022-04-22 | 北京旷视科技有限公司 | 数据同步方法、设备、介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN108595287B (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10977124B2 (en) | Distributed storage system, data storage method, and software program | |
CN108595287A (zh) | 基于纠删码的数据截断方法及装置 | |
US8682867B2 (en) | Deleted data recovery in data storage systems | |
US9690487B2 (en) | Storage apparatus and method for controlling storage apparatus | |
US8510526B2 (en) | Storage apparatus and snapshot control method of the same | |
US7055010B2 (en) | Snapshot facility allowing preservation of chronological views on block drives | |
US7603533B1 (en) | System and method for data protection on a storage medium | |
US9250818B2 (en) | Transferring learning metadata between storage servers having clusters via copy services operations on a shared virtual logical unit that stores the learning metadata | |
US7197609B2 (en) | Method and apparatus for multistage volume locking | |
CN101286165A (zh) | 多路并行现用文件系统 | |
WO2007103141A2 (en) | Method and apparatus for providing virtual machine backup | |
CN101231604B (zh) | 用于集群服务器数据的卷级恢复的设备、系统及方法 | |
US20090077334A1 (en) | Storage Apparatus for Preventing Falsification of Data | |
US10838624B2 (en) | Extent pool allocations based on file system instance identifiers | |
WO2011141434A1 (en) | Preserving an existing volume map in re-initializing a data storage volume | |
US7689767B2 (en) | Method to detect and suggest corrective actions when performance and availability rules are violated in an environment deploying virtualization at multiple levels | |
US8924359B1 (en) | Cooperative tiering | |
CN105404565B (zh) | 一种双活数据保护方法和装置 | |
EP1811378A2 (en) | A computer system, a computer and a method of storing a data file | |
US20230109530A1 (en) | Synchronous object placement for information lifecycle management | |
US9772910B1 (en) | Resource optimization for storage integrated data protection | |
US8655841B1 (en) | Selection of one of several available incremental modification detection techniques for use in incremental backups | |
US6813632B2 (en) | Distributed file system using scatter-gather | |
US11644997B2 (en) | Releasing data storage tracks while maintaining logical corruption protection | |
CN107545022B (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 |