CN111399766A - 存储系统中的数据存储方法、数据读取方法、装置及系统 - Google Patents

存储系统中的数据存储方法、数据读取方法、装置及系统 Download PDF

Info

Publication number
CN111399766A
CN111399766A CN202010096222.3A CN202010096222A CN111399766A CN 111399766 A CN111399766 A CN 111399766A CN 202010096222 A CN202010096222 A CN 202010096222A CN 111399766 A CN111399766 A CN 111399766A
Authority
CN
China
Prior art keywords
hard disk
data
units
storage
storage system
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
Application number
CN202010096222.3A
Other languages
English (en)
Other versions
CN111399766B (zh
Inventor
陈灿
陈明
谭春毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN111399766A publication Critical patent/CN111399766A/zh
Priority to PCT/CN2020/141063 priority Critical patent/WO2021139571A1/zh
Priority to JP2022536646A priority patent/JP2023510500A/ja
Priority to EP20912213.4A priority patent/EP4075252A4/en
Application granted granted Critical
Publication of CN111399766B publication Critical patent/CN111399766B/zh
Priority to US17/859,378 priority patent/US20220342567A1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error 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/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Abstract

本申请公开了一种存储系统中的数据存储方法、数据读取方法、装置及系统,属于信息技术领域。所述方法包括:第一设备为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K;所述第一设备将所述K份单元存储到所述存储系统中的K个硬盘模组;其中,所述K份单元包含M份数据单元和N份校验单元,所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。本申请能够充分利用存储系统中的存储资源。

Description

存储系统中的数据存储方法、数据读取方法、装置及系统
本申请要求在2020年01月08日提交的申请号为202010018706.6、申请名称为“一种存储系统中数据存储方法及存储系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及信息技术领域,特别涉及一种存储系统中的数据存储方法、数据读取方法、装置及系统。
背景技术
分布式存储系统可以包括多个存储节点。存储节点即存储服务器,每一个存储服务器包含存储资源,例如包含多个硬盘。分布式存储系统将存储节点中的存储资源组织起来提供存储服务。
客户端将数据存储到分布式存储系统中,通常将数据划分为M数据单元,基于纠删码(Erasure Coding,EC)算法获得数据单元的N个校验单元。客户端将M个数据单元和N个校验单元存储到M+N个存储节点,即M+N个存储节点中的一个存储节点存储相应的一个单元(数据单元或校验单元)。
尽管硬盘容量地不断增加,存储节点可以挂载更多硬盘,但客户端存储数据时,仍然以存储节点作为基于EC算法的存储粒度,无法充分利用硬盘的存储资源。
发明内容
本申请提供了一种存储系统中的数据存储方法、数据读取方法、装置及系统,以充分利用存储系统中的存储资源。所述技术方案如下:
第一方面,本申请实施例提供了一种存储系统中的数据存储方法,在所述方法包括:第一设备为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K。第一设备将该K份单元存储到存储系统中的K个硬盘模组;其中,该K份单元包含M份数据单元和N份校验单元,该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份;每一个硬盘模组包含接口卡和硬盘,该接口卡与该硬盘通信。
这样实现以存储系统中的硬盘模组为粒度进行存储,即使使用K个硬盘模组用于分别存储相应的K份单元。相对于现有技术以存储节点为粒度,因为硬盘模组的数量大于存储节点的数量,可以充分利用存储系统中的存储资源。
在一种可能的实现方式中,该存储系统包含多个存储节点,每一个存储节点均与该K个硬盘模组的接口卡通信。由于每个存储节点与多个硬盘模组的接口卡通信,这样可以充分使用存储节点的计算资源,如此充分使用存储节点的CPU频率,减少计算资源的浪费。
在另一种可能的实现方式中,第一设备为该存储系统的客户端。客户端将该K份单元发送到该多个存储节点中的目标存储节点。目标存储节点将该K份单元存储到该存储系统中的K个硬盘模组。如此实现以存储系统中的硬盘模组为粒度进行存储,从而可以充分利用存储系统中的存储资源。
在另一种可能的实现方式中,第一设备为该多个存储节点中的一个。
在另一种可能的实现方式中,该接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
在另一种可能的实现方式中,该存储系统包括第二设备,第二设备与第一设备之间存在互备关系。这样在第一设备故障时,第二设备可以接管第一设备对应的硬盘模组,这样不需要对第一设备对应的硬盘模组中保存的数据进行恢复,提高存储系统的可靠性。
第二方面,本申请实施例了一种存储系统中的数据读取装置,在所述方法中:第一设备接收读取请求,该读取请求包括待读取数据的数据标识。第一设备根据该数据标识从存储系统中的K个硬盘模组中确定存储待读取数据的硬盘模组。第一设备从存储待读取数据的硬盘模组中读取待读取数据;其中,待读取数据属于M份数据单元中的数据;存储系统还包含该M份数据单元的N份校验单元;M和N分别为正整数;M+N=K;该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份;该K份单元包含该M份数据单元和该N份校验单元;每一个硬盘模组包含接口卡和硬盘,该接口卡与该硬盘通信。由于该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份,这样实现以存储系统中的硬盘模组为粒度进行存储。相对于现有技术以存储节点为粒度,因为硬盘模组的数量大于存储节点的数量,可以充分利用存储系统中的存储资源。
在一种可能的实现方式中,存储系统包含多个存储节点,每一个存储节点均与该K个硬盘模组的接口卡通信。由于每个存储节点与多个硬盘模组通信,这样可以充分使用存储节点的计算资源,如此充分使用存储节点的CPU频率,减少计算资源的浪费。
在另一种可能的实现方式中,第一设备为存储系统的客户端。客户端向该多个存储节点中的目标存储节点发送数据读取请求,该数据读取数据携带该数据标识。目标存储节点根据该数据标识从存储该待读取数据的硬盘模组中读取待读取数据。由于目标存储节点可以根据该数据标识从存储该待读取数据的硬盘模组中读取待读取数据,从而在存储数据时可以以存储系统中的硬盘模组为粒度进行存储。
在另一种可能的实现方式中,第一设备为该多个存储节点中的一个。
在另一种可能的实现方式中,该接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
在另一种可能的实现方式中,存储系统包括第二设备,第二设备与第一设备之间存在互备关系。这样在第一设备故障时,第二设备可以接管第一设备对应的硬盘模组,这样不需要对第一设备对应的硬盘模组中保存的数据进行恢复,提高存储系统的可靠性。
第三方面,本申请提供了一种存储系统中的数据存储装置,用于执行第一方面或第一方面的任意一种可能实现方式中的方法。具体地,所述装置包括用于执行第一方面或第一方面的任意一种可能实现方式的方法的单元。
第四方面,本申请提供了一种存储系统中的数据读取装置,用于执行第二方面或第二方面的任意一种可能实现方式中的方法。具体地,所述装置包括用于执行第二方面或第二方面的任意一种可能实现方式的方法的单元。
第五方面,本申请提供了一种存储系统中的数据存储装置,所述装置包括:处理器和通信接口。其中,所述处理器和所述通信接口通信。所述处理器和所述通信接口分别用于执行第一方面或第一方面的任意可能实现方式中的方法中相应的步骤。
第六方面,本申请提供了一种存储系统中的数据读取装置,所述装置包括:处理器和通信接口。其中,所述处理器和所述通信接口通信。所述处理器和所述通信接口分别用于执行第二方面或第二方面的任意可能实现方式中的方法中相应的步骤。
第七方面,本申请提供了一种计算机可读存储介质,计算机可读存储介质中存储有程序代码,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面、第一方面的任意可能实现方式或第二方面的任意可能实现方式中的方法。
第八方面,本申请提供了一种包含程序代码的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面、第二方面、第一方面的任意可能实现方式或第二方面的任意可能实现方式中的方法。
第九方面,本申请提供了一种存储系统,所述存储存储系统包含存储设备和K个硬盘模组;其中,存储设备用于执行上述第一方面、第一方面的任意可能实现方式、第二方面或第二方面的任意可能实现方式中的方法。
附图说明
图1是本申请实施例提供的一种存储系统的结构示意图;
图2是本申请实施例提供的另一种存储系统的结构示意图;
图3是本申请实施例提供的另一种存储系统的结构示意图;
图4是本申请实施例提供的另一种存储系统的结构示意图;
图5是本申请实施例提供的另一种存储系统的结构示意图;
图6是本申请实施例提供的一种存储系统的数据存储方法流程图;
图7是本申请实施例提供的另一种存储系统的数据存储方法流程图;
图8是本申请实施例提供的一种存储系统的数据存储装置结构示意图;
图9是本申请实施例提供的一种存储系统的数据读取装置结构示意图;
图10是本申请实施例提供的另一种存储系统的数据存储装置结构示意图;
图11是本申请实施例提供的另一种存储系统的数据读取装置结构示意图。
具体实施方式
下面将结合附图对本申请实施方式作进一步地详细描述。
参见图1,本申请实施例提供了一种存储系统,该存储系统包括多个存储节点,每个存储节点对应的多个硬盘模组,存储节点访问多个硬盘模组中的硬盘。硬盘模组包含接口卡和多个硬盘。硬盘可以为机械盘或固态硬盘(Solid State Drive,SSD)等。接口卡可以是主机总线适配器(Host Bus Adapter,HBA)、独立硬盘冗余阵列卡(Redundant Array ofIndependent Disks,RID)、扩展器卡(Expander)或网络接口控制器(Network InterfaceController,NIC)等,本发明实施例对此不作限定。硬盘模组中的接口卡与硬盘通信。存储节点与硬盘模组的接口卡通信,从而访问硬盘模组中的硬盘。
硬盘的接口可以为串行连接小型计算机系统接口(Serial Attached SmallComputer System Interface,SAS)、串行高级技术附件(Serial Advanced TechnologyAttachment,SATA)或高速串行计算机扩展总线标准(Peripheral ComponentInterconnect express,PCIe)等。
存储节点与硬盘模组之间可以通过总线通信,例如通过PCIe总线通信。存储节点与硬盘模组之间也可以通过网络通信,如以太网等。本发明实施例对此不作限定。
本发明实施例中,存储节点之间通信。存储系统中一个存储节点与其他一个或多个存储节点之间存在互备关系。所谓互备关系是指该一个存储节点可以访问该另一个存储节点对应的多个硬盘模组,即一个存储节点与存储备份关系的存储节点的硬盘模组通信,也就是一个存储节点与存储备份关系的存储节点的硬盘模组的接口卡通信。
需要说明的是:对于存在互备关系的存储节点均处于正常状态下,每个存储节点只与其对应的多个硬盘模组建立通信连接,即每个存储节点只对本身对应的多个硬盘模组直接进行读写访问。对于存在互备关系的存储节点中的某个存储节点故障时,其他存储节点才接管故障存储节点,访问故障存储节点的多个硬盘模组。
例如,参见图2,假设第一存储节点和第二存储节点是存储系统中的任意具有互备关系的两个存储节点。以存储节点与硬盘模组之间通过总线通信为例进行说明。第一存储节点对应多个第一硬盘模组,第二存储节点对应多个第二硬盘模组,第一存储节点通过第一总线与该多个第一硬盘模组和该多个第二硬盘模组相连。第二存储节点通过第二总线与该多个第一硬盘模组和该多个第二硬盘模组相连。
其中一种实现,在第一存储节点和第二存储节点均处于正常状态下,第一存储节点在第一总线上与该多个第一硬盘模组建立通信连接,第一存储节点只对该多个第一硬盘模组直接进行读写访问;以及,第二存储节点在第二总线上与该多个第二硬盘模组建立通信连接,第二存储节点只对该多个第二硬盘模组直接进行读写访问。假设第二存储节点故障了,第一存储节点接管第二存储节点,访问第二存储节点的该多个第二硬盘模组,此时第一存储节点可以直接对其自身对应的多个第一硬盘模组和第二存储节点对应的多个第二硬盘模组进行读写访问。
参见图3,第一存储节点包括第一通信接口、处理单元和第二通信接口,处理单元与第一通信接口和第二通信接口相连。第一存储节点通过第一通信接口与存储系统中的其他存储节点之间建立通信连接,第一存储节点的第二通信接口通过第一总线与第一存储节点对应的多个第一硬盘模组和第二存储节点对应的多个第二硬盘模组相连。
在第一存储节点处于正常状态的情况下,第一存储节点的第二通信接口在第一总线上与该多个第一硬盘模组之间建立有通信连接。此时第一存储节点的处理单元可以通过第一存储节点的第一通信接口向存储系统中的其他存储节点发送数据,或者,接收其他存储节点发送的数据或访问请求。或者,第一存储节点的处理单元可以通过第一存储节点的第一通信接口向客户端发送数据,或者,接收该客户端发送的访问请求。第一存储节点的处理单元通过第一存储节点的第二通信接口对该多个第一硬盘模组进行读写访问,即第一存储节点的单元通过第二通信接口与多个上第一硬盘模组的接口卡通信。在第二存储节点故障的情况下,第一存储节点的第二通信接口在第一总线上与该多个第二硬盘模组之间建立有通信连接,此时第一存储节点的处理节点还可以通过第二通信接口对该多个第二硬盘模组进行读写访问。
可选的,第一存储节点中的第一通信接口和处理单元是两个单独的模块,第一通信接口与处理单元之间可以通过高速总线相连,该高速总线可以为PCIE或英特尔快速互连(intel quickpath interConnector,QPI)等。或者,第一存储节点中的第一通信接口和处理单元可以集成在一起。
可选的,第一存储节点中的第二通信接口和处理单元是两个单独的模块,第二通信接口与处理单元之间也可以通过高速总线相连,或者,第一存储节点中的第二通信接口和处理单元可以集成在一起。
可选的,第一存储节点中的第一通信接口可以为网卡等。例如,参见图4,第一通信接口可以为10G网卡。第一存储节点中的处理单元可以为中央处理器(Central ProcessingUnit,CPU)或者由一个或多个芯片组成的处理单元,例如组成的处理单元可以为数据压缩卡、人工智能(Artificial Intelligence,AI)推理卡、图像处理卡或视频采集卡等。第一存储节点中的第二通信接口可以为PCIE转换芯片或SAS转换芯片等。
可选的,存储节点与硬盘模组之间可以通过共享链路单板连接,该共享链路单板中包括一根或多根物理线路组成的总线。
可选的,参见图3,第一存储节点的第二通信接口通过第一总线与该多个第一硬盘模组和该多个第二硬盘模组相连,以及第二存储节点的第二通信接口通过第二总线与该多个第一硬盘模组与该多个第二硬盘模组相连。
可选的,参见图5,一个第一硬盘模组与一个第二硬盘模组采用通信连接,例如通过总线连接。具体的通信连接方式本发明实施例对此不作限定。这样一个第一硬盘模组与一个第二硬盘模组组成级联关系。如此第一存储节点的第二通信接口可以不用与每个第二硬盘模组相连,以及第二存储节点中的第二通信接口也可以不用与每个第一硬盘模组相连,这样可以减少存储节点的第二通信接口的连接数。对于该一个第一硬盘模组级联的第二硬盘模组,当第二存储节点故障时,第一存储节点可以通过第一存储节点的第二通信接口、第一硬盘模组以及第一硬盘模组的级联关系访问第二硬盘模组,即与第二硬盘模组的接口卡通信。例如,第一存储节点与第二存储节点为存在备份关系的存储节点。第一存储节点和第二存储节点可以相互确定对方是否出现故障,例如通过心跳来确定是否故障。
可选的,该存储节点可以扫描该另一个存储节点对应的多个硬盘模组,得到该另一个存储节点对应的正常状态的硬盘模组,建立与该正常状态的硬盘模组之间的通信连接。
可选的,存储系统中的存储节点中可以保存有存储节点的节点标识与硬盘模组的模组标识的对应关系。
可选的,存储节点的节点标识可以为存储节点的地址,例如可以为网际互连协议(Internet Protocol,IP)地址或媒体存取控制位址(Media Access Control Address,MAC)地址。硬盘模组的模组标识可以是该硬盘模组在存储系统中的编号,接口卡的标识、接口卡的地址等。本发明实施例对此不作限定。
在该存储节点接管该另一个存储节点对应的多个硬盘模组,该存储节点在节点标识与模组标识的对应关系中,将该多个硬盘模组中的每个硬盘模组的模组标识对应的节点标识更新为该存储节点的节点标识,以及,向存储系统的其他存储节点发送更新请求,该更新请求包括该存储节点的节点标识和该多个硬盘模组的模组标识。
该存储系统的任一个其他存储节点接收该更新请求,在节点标识与模组标识的对应关系中,将该多个硬盘模组中的每个硬盘模组的模组标识对应的节点标识更新为该存储节点的节点标识。
例如,对于存在互备关系的第一存储节点和第二存储节点,第一存储节点可以确定第二存储节点是否出现故障,第二存储节点也可以确定第一存储节点是否出现故障。第一存储节点和第二存储节点可以通过如下两种方式确定对方是否出现故障,该两种方式分别为:
第一种方式,第一存储节点周期性地向第二存储节点发送心跳信息,第二存储节点也周期性地向第一存储节点发送心跳信息。第一存储节点在接收到第二存储节点发送的心跳信息之后的第一时间长度内,如果未接收到第二存储节点再次发送的心跳信息,则确定第二存储节点故障。同理,第二存储节点在接收到第一存储节点发送的心跳信息之后的第一时间长度内,如果未接收到第一存储节点再次发送的心跳信息,则确定第一存储节点故障。
第二种方式,第一存储节点在检测出自身故障时可以向第二存储节点发送中断信息,第二存储节点接收该中断信息,确定第一存储节点故障;同理,第二存储节点在检测出自身故障时可以向第一存储节点发送中断信息,第一存储节点接收该中断信息,确定第二存储节点故障。
可选的,存储系统还可以包括客户端,该客户端可以与存储系统中的存储节点通信。客户端中可以向存储系统存储待存储数据,也可以从存储系统中读取待读取数据。其中,向存储系统存储待存储数据的详细实现过程可以参见图6或图7所示的实施例,以及从存储系统读取待读取数据的详细实现过程可以参见图9所示的实施例,在此先不详细说明。
参见图6,本申请实施例提供了一种存储系统中的数据存储方法,该存储系统可以是上述图1至图5所示的存储系统,在该方法中存储系统中的存储节点接收客户端发送的待存储数据,将待存储数据分割成M份数据单元,为该M份数据单元生成N份校验单元,将K份单元分别保存到K个硬盘模组中,该K份单元包括该M份数据单元和该N份校验单元,M和N均为正整数据。该方法包括:
步骤101:客户端向第一存储节点发送存储请求,该存储请求包括待存储数据。
本发明实施例中,第一存储节点可以根据K份单元所属的分区与硬盘模组的对应关系,确定存储K份单元的K个硬盘模组。另外,在分区中记录的硬盘模组还包含硬盘模组所归属的存储节点。分区中会记录其中一个存储节点作为主存储节点,本发明实施例以第一存储节点为主存储节点为例。客户端根据待存储数据的数据标识确定相应的分区,根据分区中主存储节点的信息,确定向第一存储节点发送存储请求。
可选的,本发明实施例存储系统中包含多个分区(Partition),每一个硬盘模组属于一个或多个分区。根据EC算法确定分区内分条(Stripe)的长度,分条的长度即M份数据单元和N份校验单元的长度之和,即M+N。根据EC算法,通常分条中的一份单元存储到一个硬盘模组,M+N份单元则需要M+N个硬盘模组。因此,一个分区中包含M+N个硬盘模组。存储节点存储有分区与硬盘模组的对应关系。具体的,分区与硬盘模组的对应关系可以包含分区标识与存储节点的硬盘模组的模组标识,其中,存储节点的硬盘模组的模组标识包含模组标识和硬盘模组所属的存储节点的标识。本发明实施例对此不作限定。存储节点将待存储数据分割成数据单元,并且计算数据单元的校验单元,根据数据单元所属的分区,确定存储数据单元和校验单元和硬盘模组。通常,存储系统使用哈希(Hash)环的方式划分分区。具体实现本发明对此不作限定。
步骤102:第一存储节点将待存储数据切割成M份数据单元,为该M份数据单元生成N份校验单元,M和N均为正整数。
第一存储节点根据该M份数据单元生成N份校验单元,该N份校验单元可以用于对该M份数据单元中的至少一个数据单元进行恢复。
步骤103:第一存储节点将K份单元存储到K个硬盘模组;其中,该K份单元包含该M份数据单元和N份校验单元,该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份。
每一个硬盘模组包含接口卡和硬盘,该接口卡与该硬盘通信。
本发明实施例中,第一存储节点可以根据K份单元所属的分区与硬盘模组的对应关系,确定存储K份单元的K个硬盘模组。同时,每一个存储节点保存有硬盘模组与该硬盘模组的归属的存储节点的关系。因此,第一存储节点确定存储K份单元的K个硬盘模组后,向K个硬盘模组中除本地硬盘模组外的其他硬盘模组所属的存储节点发送相应的存储请求。即第一存储节点向第二存储节点发送第一存储命令,该第一存储命令包括K2份单元。第三存储节点对应的第三硬盘模组数目K3,向该第三存储节点发送第二存储命令。
其中一种实现,该K个硬盘模组包括第一存储节点对应的K1个第一硬盘模组,第二存储节点对应的K2个第二硬盘模组和第三存储节点对应的K3第三硬盘模组。K1、K2、K3均为正整数,并且K1+K2+K3=K。
在本步骤中,第一存储节点将K1份单元分别保存到K1个第一硬盘模组,向第二存储节点发送第一存储命令,该第一存储命令包括K2份单元。向第三存储节点发送第二存储命令,该第二存储命令包括K3份单元。
第二存储节点接收第一存储命令,将第二存储命令包括的K2份单元保存到K2个第二硬盘模组中的硬盘。第三存储节点接收第二存储命令,将第二存储命令包括的K3份单元保存到K3个硬盘模组中的硬盘。
可选的,第一存储命令包括待存储数据的数据标识,第二存储命令包括待存储数据的数据标识。
可选的,第一存储节点在保存K1份单元以及发送第一存储命令和第二存储命令后,向客户端发送存储响应。
可选的,在第二存储节点故障时,第一存储节点将K1份单元分别保存到K1个第一硬盘模组以及将K2份单元分别保存到K2个第二硬盘模组。
可选的,存储节点在向硬盘模组保存一份单元时,该存储节点向该硬盘模组包括的接口卡发送该单元,该接口卡接收该单元并保存到该硬盘模组包括的硬盘中。
可选的,存储节点在向硬盘模组保存一份单元之前,还可以对该单元进行压缩,向该硬盘模组保存压缩的该单元。
可选的,第一存储节点在将K1份单元保存到K1个第一硬盘模组的硬盘中之后,还获取该K1份单元的位置信息。对于该K1份单元中的任一份单元,该单元的位置信息包括该单元的数据类型,存储该单元的硬盘模组的模组标识、该单元在该硬盘模组中的地址信息。地址信息可以包含硬盘标识、起始存储地址和数据长度等。在该单元为数据单元时,该单元的数据类型为数据单元,在该单元为校验单元时,该单元的数据类型为校验单元。在该单元为数据单元时,该单元的位置信息还可以包括该数据单元对应的校验单元的单元标识;和/或,在该单元为校验单元时,该单元的位置信息还以包括该校验单元对应的至少一个数据单元的单元标识。第一存储节点将待存储数据的数据标识和该K1个单元的位置信息对应保存到数据标识与位置信息的对应关系中。
同理,第二存储节点在将K2份单元保存到K2个第二硬盘模组之后,还获取该K2个单元的位置信息,将待存储数据的数据标识和该K2份单元的位置信息对应保存到数据标识与位置信息的对应关系中。以及,第三存储节点在将K3份单元保存到K3个第三硬盘模组之后,还获取该K3份单元的位置信息,将待存储数据的数据标识和该K3份单元的位置信息对应保存到数据标识与位置信息的对应关系中。
存储系统中的各存储节点之间还同步数据标识与位置信息的对应关系,这样可以使各存储节点保存相同的数据标识与位置的对应关系。
本发明实施例中属于同一分区的K个硬盘模组所归属的存储节点为具有互备关系的存储节点。
可选的,在执行步骤102之前,第一存储节点接收该存储请求,获取第一数目,第一数目是存储系统包括的正常状态的硬盘模组数目,根据第一数目获取M和N。
第一存储节点获取第一数目的操作可以为:第一存储节点获取其对应的正常状态的硬盘模组数目,以及向存储系统中的其他各正常状态的存储节点发送查询命令。对于存储系统中的其他任一个存储节点,该任一个存储节点接收该查询命令,获取其对应的正常状态的硬盘模组数目,向第一存储节点发送该正常状态的硬盘模组数目。第一存储节点接收其他各存储节点发送的硬盘模组数目,将其获取的硬盘模组数目和接收的硬盘模组数目进行累加,得到第一数目。
第一存储节点与至少一个硬盘模组之间建立有通信连接,对于该至少一个硬盘模组中的任一个硬盘模组,当该任一个硬盘模组故障时,第一存储节点与该任一个硬盘模组之间的通信连接就会断开。所以第一存储节点获取其对应的正常状态的硬盘模组数目,可以为:第一存储节点确定与其之间存在通信连接的硬盘模组,对确定的硬盘模组进行统计,得到其对应的正常状态的硬盘模组数目。
同理,对于其他任一个存储节点,该任一个存储节点,同第一存储节点一样按上述方式获取其对应的正常状态的硬盘模组数目。
可选的,第一存储节点获取M和N的操作可以为:第一存储节点获取保存的M和N,在M+N小于第一数目时,根据第一数目获取N,将第一数目减去N得到M;在M+N等于或大于第一数目时,使用保存的M和N执行步骤102的操作。或者,第一存储节点比较第一数目和第二数目,第二数目是上一次获取的存储系统包括的正常状态的硬盘模组数目;在比较出两者不同时,根据第一数目获取N,将第一数目减去N得到M;在比较出两者相同时,获取保存的上一次获取的M和N。
可选的,在第一数目和第二数目不同时,第一存储节点可以将保存的第二数目更新为第一数目;以及,将保存的M和N值分别更新为在本步骤中得到的M和N的值。
可选的,第一存储节点根据第一数目获取N,可以为:
第一存储节点在第一数目小于数目阈值且N大于X时,设置N=N-X,X为大于0的整数;在第一数目大于或等于数目阈值且N小于初始数值时,设置N等于初始数值;在第一数目大于或等于数目阈值且N等于于初始数值时,获取保存的N。
初始数值可以为预设值,例如初始数值可以为2、3、4或5等数值。
在本申请实施例中,以存储系统中的硬盘模组为粒度进行存储,即将数据划分为M个数据单元,计算数据单元获得相应的N个校验单元,选择M+N个硬盘模组用于分别存储相应的数据单元和校验单元。相对于现有技术以存储节点为粒度,选择M+N个存储节点用于分别存储相应的数据单元和校验单元,因为硬盘模组的数量大于存储节点的数量,可以充分利用存储系统中的存储资源。又由于每个存储节点对应多个硬盘模组,这样可以充分使用存储节点的计算资源,如此充分使用存储节点的CPU频率,减少计算资源的浪费。
本发明实施例以硬盘模组为粒度进行存储资源管理,而不是基于存储节点粒度进行存储资源管理,其中一种实现是硬盘模组的接口卡建立存储资源进程,存储节点根据存储资源进程识别到可以使用的存储资源粒度。存储资源进程包含硬盘模组的模组标识。
参见图7,本申请实施例提供了一种存储系统中的数据存储方法,该存储系统可以是上述图1至图5所示的存储系统,在该方法中客户端将待存储数据分割成M份数据单元,为该M份数据单元生成N份校验单元,向存储系统中的K个硬盘模组发送K份单元,该K份单元包括该M份数据单元和该N份校验单元,将该K份单元分别保存到K个硬盘模组中,即K个硬盘模组中每一个硬盘模组存储K份单元中的一份,M和N均为正整数。该方法包括:
步骤201:客户端将待存储数据切割成M份数据单元,为该M份数据单元生成N份校验单元。
步骤202:客户端向存储系统中的K个硬盘模组发送K份单元,该K份单元包括该M份数据单元和该N个校验单元。
本发明实施例中,客户端可以根据K份单元所属的分区与硬盘模组的对应关系,确定存储K份单元的K个硬盘模组。其中一种实现,分区与硬盘模组的对应关系中包含主存储节点信息,仍然以第一存储节点为例。分区与硬盘模组的对应关系可以参考前面的描述,在此不再赘述。客户端向存储系统中的K个硬盘模组发送K份单元,具体包括向第一存储节点发送发送K份单元。第一存储节点确定存储K份单元的K个硬盘模组后,向K个硬盘模组中除本地硬盘模组外的其他硬盘模组所属的存储节点发送相应的存储请求。即第一存储节点向第二存储节点发送第一存储命令,该第一存储命令包括K2份单元。第三存储节点对应的第三硬盘模组数目K3,向该第三存储节点发送第二存储命令。K1、K2、K3均为正整数,并且K1+K2+K3=K。
本发明实施例中,客户端可以根据K份单元所属的分区与硬盘模组的对应关系,确定存储K份单元的K个硬盘模组。其中一种实现,K份单元所属的分区与硬盘模组的对应关系中还包含硬盘模组所属的存储节点信息。以K个硬盘模组中包含第一存储节点的K1个硬盘模组,包含第二存储节点的K2个硬盘模组,以及第三存储节点的K3个硬盘模组为例,客户端向第一存储节点发送存储到K1个硬盘模组的K1份单元,向第二存储节点发送存储到K2个硬盘模组的K2份单元,向第三存储节点发送存储到K3个硬盘模组的K3份单元。
本发明实施例中属于同一分区的K个硬盘模组所归属的存储节点为具有互备关系的存储节点。
本发明实施例以硬盘模组为粒度进行存储资源管理,而不是基于存储节点粒度进行存储资源管理,其中一种实现是硬盘模组的接口卡建立存储资源进程,客户端根据存储资源进程识别到可以使用的存储资源粒度。存储资源进程包含硬盘模组的模组标识。进一步的,存储资源进程还包含硬盘模组所归属的存储节点的标识。
本申请实施例提供了一种存储系统中的数据读取方法,该存储系统可以是上述图1至图5所示的存储系统,在该方法中存储系统中的存储节点接收客户端发送读取请求,读取请求中包含待读取数据的数据标识,存储节点根据该数据标识获取待读取数据,向客户端发送待读取数据。
其中一种实现,第一存储节点可以根据K份单元所属的分区与硬盘模组的对应关系,确定存储K份单元的K个硬盘模组。另外,在分区中记录的硬盘模组还包含硬盘模组所归属的存储节点。分区中会记录其中一个存储节点作为主存储节点,本发明实施例以第一存储节点为主存储节点为例。客户端根据待读取数据的数据标识确定相应的分区,根据分区中主存储节点的信息,确定向第一存储节点发送读取请求。读取请求中包含待读取数据的数据标识。第一存储节点根据K份单元所属的分区与硬盘模组的对应关系和待读取数据的数据标识确定待读取数据所在的硬盘模组,从确定的硬盘模组中读取该待读取的数据。结合图6所示的实施例,当第一存储节点故障,由于第二存储节点和第三存储节点与第一存储节点存在互备关系,因此第二存储节点或第三存储节点接管所述第一存储节点,用于执行上述读取请求,并且接管第一存储节点的存储节点可以直接访问K1个硬盘模组。另外,当存储待读取数据的硬盘模组发生故障,或者当待读取数据所在的硬盘模组中的硬盘发生故障,或者由于硬盘模组中存储的待读取数据发生错误而硬盘模组本地无法恢复出待读取数据,导致待读取数据丢失,本发明实施例可以使用K个硬盘模组中其他硬盘模组中存储的单元恢复出待读取数据所在的数据单元。即利用M个数据单元和N个校验单元所形成的校验保护关系可以恢复M个数据单元中的N个数据单元的能力。
另一种实现,客户端根据待读取数据的数据标识确定相应的分区,根据分区确定数据标识在分区中对应的硬盘模组。客户端根据分区中硬盘模组和存储节点的对应关系,即硬盘模组所归属的存储节点,确定待读取数据所在的硬盘模组所属的存储节点,向该存储节点发送读取请求。该存储节点接收该读取请求后,根据读取请求中携带的待读取数据标识向该硬盘模组读取该待读取的数据。即存储节点与硬盘模组的接口卡通信。基于M个数据单元和N个校验单位进行数据恢复可参考上面实施例的描述,在此不再赘述。
本发明另一种存储架构中,客户端可以与硬盘模组的接口卡通信,即客户端可以直接访问硬盘模组,而不需要经过存储节点。即客户端根据分区与硬盘模组的对应关系直接将K个单元发送到相应的K个硬盘模组,或从相应的硬盘模组中读取数据。
参见图8,本申请实施例提供了一种存储系统中的数据存储装置300,所述装置300可以部署在上述任一实施例的存储节点或客户端中,包括:
生成单元301,用于为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K;
存储单元302,用于将该K份单元存储到存储系统中的K个硬盘模组;其中,该K份单元包含M份数据单元和N份校验单元,该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份;每一个硬盘模组包含接口卡和硬盘,该接口卡与该硬盘通信。
可选的,存储单元302将该份单元存储到该K个硬盘模组的详细操作可以参见图6所示实施例的步骤103或图7所示实施例的步骤202中的相关内容。
可选的,存储系统包含多个存储节点,每一个存储节点均与K个硬盘模组的接口卡通信。
可选的,所述装置300为存储系统的客户端;所述装置300包括:发送单元303;
发送单元303,用于将该K份单元发送到该多个存储节点中的目标存储节点,以使目标存储节点将该K份单元存储到存储系统中的K个硬盘模组。
可选的,目标存储节点将该K份单元存储到存储系统中的K个硬盘模组的详细操作可以参见图7所示实施例的步骤202中的相关内容。
可选的,所述装置300为该多个存储节点中的一个。
可选的,接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
可选的,存储系统包括第二设备,第二设备与所述装置之间存在互备关系。
在本申请实施例中,生成单元为M份数据单元生成N份校验单元。存储单元将该K份单元存储到存储系统中的K个硬盘模组,这样存储单元实现以存储系统中的硬盘模组为粒度进行存储,即使使用K个硬盘模组用于分别存储相应的K份单元。相对于现有技术以存储节点为粒度,因为硬盘模组的数量大于存储节点的数量,可以充分利用存储系统中的存储资源。
参见图9,本申请实施例提供了一种存储系统中的数据读取装置400,所述装置400可以部署在上述任一实施例的存储节点或客户端中,包括:
接收单元401,用于接收读取请求,该读取请求包括待读取数据的数据标识;
处理单元402,用于根据该数据标识从存储系统中的K个硬盘模组中确定存储待读取数据的硬盘模组。
处理单元402,还用于从存储待读取数据的硬盘模组中读取待读取数据;其中,待读取数据属于M份数据单元中的数据;存储系统还包含该M份数据单元的N份校验单元;M和N分别为正整数;M+N=K;该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份;该K份单元包含M份数据单元和N份校验单元;每一个硬盘模组包含接口卡和硬盘,该接口卡与该硬盘通信。
可选的,存储系统包含多个存储节点,每一个存储节点均与K个硬盘模组的接口卡通信。
可选的,所述装置400为存储系统的客户端;所述装置400还包括:发送单元403;
发送单元403,用于向多个存储节点中的目标存储节点发送数据读取请求;该数据读取数据携带该数据标识;
处理单元402,用于根据该数据标识从存储待读取数据的硬盘模组中读取待读取数据。
可选的,所述装置400为该多个存储节点中的一个。
可选的,该接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
可选的,该存储系统包括第二设备,第二设备与所述装置400之间存在互备关系。
在本申请实施例中,接收单元接收读取请求,该读取请求包括待读取数据的数据标识。处理单元从存储待读取数据的硬盘模组中读取待读取数据;其中,待读取数据属于M份数据单元中的数据;存储系统还包含该M份数据单元的N份校验单元,M+N=K;存储系统中的K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份。由于该K个硬盘模组中的每一个硬盘模组存储该K份单元中的一份,这样实现以存储系统中的硬盘模组为粒度进行存储。相对于现有技术以存储节点为粒度,因为硬盘模组的数量大于存储节点的数量,可以充分利用存储系统中的存储资源。
参见图10,本申请实施例提供了一种存储系统中的数据存储装置500示意图。该装置500可以是上述任一实施例中的客户端或存储节点。该装置500包括至少一个处理器501,总线系统502以及至少一个通信接口503。
可选的,该存储系统中包括多个硬盘模组,该至少一个处理器501还通过该至少一个通信接口503与该存储系统中的多个硬盘模组通信。
具体实现,处理器501可以是中央处理器(Central Processing Unit,CPU),还可以由现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、专用集成电路(Application-specific integrated circuit,ASIC)或其他硬件代替,或者,FPGA或其他硬件与CPU共同作为处理器501。
该装置500是一种硬件结构的装置,可以用于实现图8所述的装置300中的功能模块。
可选的,当处理器501由一个或多个CPU实现时,图8所示的装置300中的生成单元301和存储单元302可以通过该一个或多个CPU调用存储器中的代码来实现,图8所示的装置300中的发送单元303可以通过该通信接口503来实现。
上述通信接口503,用于与其他设备或通信网络通信。
上述存储器可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器用于存储执行本申请方案的应用程序代码,并由处理器501来控制执行。处理器501用于执行存储器中存储的应用程序代码,从而实现本专利方法中的功能。
参见图11,本申请实施例提供了一种存储系统中的数据读取装置600示意图。该装置600可以是上述任一实施例中的存储节点或客户端。该装置600包括至少一个处理器601,总线系统602以及至少一个通信接口603。
具体实现,处理器601可以是中央处理器(Central Processing Unit,CPU),还可以由现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、专用集成电路(Application-specific integrated circuit,ASIC)或其他硬件代替,或者,FPGA或其他硬件与CPU共同作为处理器601。
该装置600是一种硬件结构的装置,可以用于实现图9所述的装置400中的功能模块。可选的,当处理器601由一个或多个CPU实现时,图9所示的装置400中的处理单元402可以通过该一个或多个CPU调用存储器中的代码来实现,图9所示的装置400中的接收单元401和发送单元403可以通过该通信接口603来实现。
上述总线系统602可包括一通路,在上述组件之间传送信息。
上述通信接口603,用于与其他设备或通信网络通信。
上述存储器可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,存储器用于存储执行本申请方案的应用程序代码,并由处理器601来控制执行。处理器601用于执行存储器中存储的应用程序代码,从而实现本专利方法中的功能。
在本发明实施实施例中,M份数据单元中的M为1,N份校验单元为数据单元的副本。即基于多副本实现数据单元的保护,基于多副本恢复数据单元。具体实现可以参考上面实施例的描述,在此不再赘述。
在本发明另一实施例中,存储系统为存储阵列,存储节点为存储阵列的阵列控制器。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

Claims (36)

1.一种存储系统中的数据存储方法,其特征在于,所述方法包括:
第一设备为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K;
所述第一设备将所述K份单元存储到所述存储系统中的K个硬盘模组;其中,所述K份单元包含M份数据单元和N份校验单元,所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
2.根据权利要求1所述的方法,其特征在于,所述存储系统包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
3.根据权利要求2所述的方法,其特征在于,所述第一设备为所述存储系统的客户端;所述第一设备将所述K份单元存储到所述存储系统中的K个硬盘模组,具体包括:
所述客户端将所述K份单元发送到所述多个存储节点中的目标存储节点;
所述目标存储节点将所述K份单元存储到所述存储系统中的K个硬盘模组。
4.根据权利要求2所述的方法,其特征在于,所述第一设备为所述多个存储节点中的一个。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
6.根据权利要求1所述的方法,其特征在于,所述存储系统包括第二设备,所述第二设备与所述第一设备之间存在互备关系。
7.一种存储系统中的数据读取方法,其特征在于,所述方法包括:
第一设备接收读取请求,所述读取请求包括待读取数据的数据标识;
所述第一设备根据所述数据标识从所述存储系统中的K个硬盘模组中确定存储所述待读取数据的硬盘模组;
所述第一设备从所述存储所述待读取数据的硬盘模组中读取所述待读取数据;其中,所述待读取数据属于M份数据单元中的数据;所述存储系统还包含所述M份数据单元的N份校验单元;M和N分别为正整数;M+N=K;所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述K份单元包含所述M份数据单元和所述N份校验单元;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
8.根据权利要求7所述的方法,其特征在于,所述存储系统包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
9.根据权利要求7所述的方法,其特征在于,所述第一设备为所述存储系统的客户端;所述第一设备从所述存储所述待读取数据的硬盘模组中读取所述待读取数据,具体包括:
所述客户端向所述多个存储节点中的目标存储节点发送数据读取请求;所述数据读取数据携带所述数据标识;
所述目标存储节点根据所述数据标识从所述存储所述待读取数据的硬盘模组中读取所述待读取数据。
10.根据权利要求8所述的方法,其特征在于,所述第一设备为所述多个存储节点中的一个。
11.根据权利要求7至10任一项所述的方法,其特征在于,所述接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
12.根据权利要求7所述的方法,其特征在于,所述存储系统包括第二设备,所述第二设备与所述第一设备之间存在互备关系。
13.一种存储系统中的数据存储装置,其特征在于,所述装置包括:
生成单元,用于为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K;
存储单元,用于将所述K份单元存储到所述存储系统中的K个硬盘模组;其中,所述K份单元包含M份数据单元和N份校验单元,所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
14.根据权利要求13所述的装置,其特征在于,所述存储系统包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
15.根据权利要求14所述的装置,其特征在于,所述装置为所述存储系统的客户端;所述装置包括:发送单元;
所述发送单元,用于将所述K份单元发送到所述多个存储节点中的目标存储节点,以使所述目标存储节点将所述K份单元存储到所述存储系统中的K个硬盘模组。
16.根据权利要求14所述的装置,其特征在于,所述装置为所述多个存储节点中的一个。
17.根据权利要求13至16任一项所述的装置,其特征在于,所述接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
18.根据权利要求13所述的装置,其特征在于,所述存储系统包括第二设备,所述第二设备与所述装置之间存在互备关系。
19.一种存储系统中的数据读取装置,其特征在于,所述装置包括:
接收单元,用于接收读取请求,所述读取请求包括待读取数据的数据标识;
处理单元,用于根据所述数据标识从所述存储系统中的K个硬盘模组中确定存储所述待读取数据的硬盘模组;
所述处理单元,还用于从所述存储所述待读取数据的硬盘模组中读取所述待读取数据;其中,所述待读取数据属于M份数据单元中的数据;所述存储系统还包含所述M份数据单元的N份校验单元;M和N分别为正整数;M+N=K;所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述K份单元包含所述M份数据单元和所述N份校验单元;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
20.根据权利要求19所述的装置,其特征在于,所述存储系统包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
21.根据权利要求19所述的装置,其特征在于,所述装置为所述存储系统的客户端;所述装置还包括:发送单元;
所述发送单元,用于向所述多个存储节点中的目标存储节点发送数据读取请求;所述数据读取数据携带所述数据标识;
所述处理单元,用于根据所述数据标识从所述存储所述待读取数据的硬盘模组中读取所述待读取数据。
22.根据权利要求20所述的装置,其特征在于,所述装置为所述多个存储节点中的一个。
23.根据权利要求19至22任一项所述的装置,其特征在于,所述接口卡为主机总线适配器、独立硬盘冗余阵列卡、扩展器卡或网络接口卡。
24.根据权利要求19所述的装置,其特征在于,所述存储系统包括第二设备,所述第二设备与所述装置之间存在互备关系。
25.一种存储系统中的存储设备,其特征在于,所述存储设备包括处理器和通信接口,所述处理器与所述通信接口通信;所述处理器用于:
为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K;
将所述K份单元存储到所述存储系统中的K个硬盘模组;其中,所述K份单元包含M份数据单元和N份校验单元,所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
26.根据权利要求25所述的存储设备,其特征在于,所述存储系统包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
27.根据权利要求26所述的存储设备,其特征在于,所述存储设备为所述存储系统的客户端;所述通信接口用于将所述K份单元发送到所述多个存储节点中的目标存储节点,以使所述目标存储节点将所述K份单元存储到所述存储系统中的K个硬盘模组。
28.一种存储系统中的存储设备,其特征在于,所述存储设备包括处理器和通信接口,所述处理器与所述通信接口通信;
所述通信接口用于接收读取请求,所述读取请求包括待读取数据的数据标识;
所述处理器用于:根据所述数据标识从所述存储系统中的K个硬盘模组中确定存储所述待读取数据的硬盘模组;
从所述存储所述待读取数据的硬盘模组中读取所述待读取数据;其中,所述待读取数据属于M份数据单元中的数据;所述存储系统还包含所述M份数据单元的N份校验单元;M和N分别为正整数;M+N=K;所述K个硬盘模组中的每一个硬盘模组存储所述K份单元中的一份;所述K份单元包含所述M份数据单元和所述N份校验单元;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
29.根据权利要求28所述的存储设备,其特征在于,所述存储系统包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
30.根据权利要求29所述的存储设备,其特征在于,所述存储设备为所述存储系统的客户端;所述通信接口,还用于向所述多个存储节点中的目标存储节点发送数据读取请求;所述数据读取数据携带所述数据标识;
所述处理器还用于根据所述数据标识从所述存储所述待读取数据的硬盘模组中读取所述待读取数据。
31.一种存储系统,其特征在于,所述存储系统包含存储设备和K个硬盘模组;
其中,所述存储设备用于:
为M份数据单元生成N份校验单元;其中,M和N分别为正整数;M+N=K;
将所述K份单元存储到所述K个硬盘模组;其中,所述K份单元包含M份数据单元和N份校验单元,所述K个硬盘模组中的每一个硬盘模组用于存储所述K份单元中的一份;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
32.根据权利要求31所述的存储系统,其特征在于,所述存储系统还包含多个存储节点,每一个存储节点均与所述K个硬盘模组的接口卡通信。
33.根据权利要求32所述的存储系统,其特征在于,所述第一设备为所述存储系统的客户端;所述存储设备用于将所述K份单元存储到所述存储系统中的K个硬盘模组,具体包括:
所述客户端用于将所述K份单元发送到所述多个存储节点中的目标存储节点;
所述目标存储节点用于将所述K份单元存储到所述存储系统中的K个硬盘模组。
34.一种存储系统,其特征在于,所述存储系统包含存储设备和K个硬盘模组;
所述存储设备用于:
接收读取请求,所述读取请求包括待读取数据的数据标识;
根据所述数据标识从所述K个硬盘模组中确定存储所述待读取数据的硬盘模组;
从所述存储所述待读取数据的硬盘模组中读取所述待读取数据;其中,所述待读取数据属于M份数据单元中的数据;所述存储系统还包含所述M份数据单元的N份校验单元;M和N分别为正整数;M+N=K;所述K个硬盘模组中的每一个硬盘模组存储用于所述K份单元中的一份;所述K份单元包含所述M份数据单元和所述N份校验单元;所述每一个硬盘模组包含接口卡和硬盘,所述接口卡与所述硬盘通信。
35.一种计算机程序产品,其特征在于,所述计算机程序产品包含程序代码,当计算机运行所述程序代码时,使得所述计算机执行如权利要求1-6任一所述的方法。
36.一种计算机程序产品,其特征在于,所述计算机程序产品包含程序代码,当计算机运行所述程序代码时,使得所述计算机执行如权利要求7-12任一所述的方法。
CN202010096222.3A 2020-01-08 2020-02-17 存储系统中的数据存储方法、数据读取方法、装置及系统 Active CN111399766B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/CN2020/141063 WO2021139571A1 (zh) 2020-01-08 2020-12-29 存储系统中的数据存储方法、数据读取方法、装置及系统
JP2022536646A JP2023510500A (ja) 2020-01-08 2020-12-29 ストレージシステムにおけるデータ記憶方法、データ読み出し方法、データ記憶装置、データ読み出し装置、ストレージデバイス、およびシステム
EP20912213.4A EP4075252A4 (en) 2020-01-08 2020-12-29 DATA STORAGE METHOD, DEVICE, SYSTEM AND DATA READING METHOD, DEVICE AND SYSTEM IN A STORAGE SYSTEM
US17/859,378 US20220342567A1 (en) 2020-01-08 2022-07-07 Data Storage Method, Data Reading Method, Data Storage Apparatus, Data Reading Apparatus, Storage Device in Storage System, and System

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202010018706 2020-01-08
CN2020100187066 2020-01-08

Publications (2)

Publication Number Publication Date
CN111399766A true CN111399766A (zh) 2020-07-10
CN111399766B CN111399766B (zh) 2021-10-22

Family

ID=71428516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010096222.3A Active CN111399766B (zh) 2020-01-08 2020-02-17 存储系统中的数据存储方法、数据读取方法、装置及系统

Country Status (5)

Country Link
US (1) US20220342567A1 (zh)
EP (1) EP4075252A4 (zh)
JP (1) JP2023510500A (zh)
CN (1) CN111399766B (zh)
WO (1) WO2021139571A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021139571A1 (zh) * 2020-01-08 2021-07-15 华为技术有限公司 存储系统中的数据存储方法、数据读取方法、装置及系统
CN114461134A (zh) * 2021-11-19 2022-05-10 中航航空电子有限公司 硬盘零碎块读写装置、方法、计算机设备和存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230236755A1 (en) * 2022-01-27 2023-07-27 Pure Storage, Inc. Data Resiliency Using Container Storage System Storage Pools

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
CN103699494A (zh) * 2013-12-06 2014-04-02 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN106201338A (zh) * 2016-06-28 2016-12-07 华为技术有限公司 数据存储方法及装置
CN106662983A (zh) * 2015-12-31 2017-05-10 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
CN107943421A (zh) * 2017-11-30 2018-04-20 成都华为技术有限公司 一种基于分布式存储系统的分区划分方法及装置
CN108780386A (zh) * 2017-12-20 2018-11-09 华为技术有限公司 一种数据存储的方法、装置和系统
CN109726036A (zh) * 2018-11-21 2019-05-07 华为技术有限公司 一种存储系统中的数据重构方法和装置
CN109783002A (zh) * 2017-11-14 2019-05-21 华为技术有限公司 数据读写方法、管理设备、客户端和存储系统
CN109783280A (zh) * 2019-01-15 2019-05-21 上海海得控制系统股份有限公司 共享存储系统和共享存储方法
CN110096220A (zh) * 2018-01-31 2019-08-06 华为技术有限公司 一种分布式存储系统、数据处理方法和存储节点

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7594134B1 (en) * 2006-08-14 2009-09-22 Network Appliance, Inc. Dual access pathways to serially-connected mass data storage units
US8862847B2 (en) * 2013-02-08 2014-10-14 Huawei Technologies Co., Ltd. Distributed storage method, apparatus, and system for reducing a data loss that may result from a single-point failure
US9727437B2 (en) * 2014-02-18 2017-08-08 Quantum Corporation Dynamically controlling erasure code distribution in an object store
US9542239B2 (en) * 2014-04-30 2017-01-10 International Business Machines Corporation Resolving write request conflicts in a dispersed storage network
US10270469B2 (en) * 2017-05-24 2019-04-23 Vmware, Inc. Efficient data write approach for distributed multi-mirror erasure coding system
CN107273048B (zh) * 2017-06-08 2020-08-04 浙江大华技术股份有限公司 一种数据写入方法及装置
CN109213420A (zh) * 2017-06-29 2019-01-15 杭州海康威视数字技术股份有限公司 数据存储方法、装置及系统
CN110325958B (zh) * 2017-10-13 2021-09-17 华为技术有限公司 分布式块存储系统中数据存储方法、装置及计算机可读存储介质
CN109271360A (zh) * 2018-08-03 2019-01-25 北京城市网邻信息技术有限公司 分布式对象存储数据冗余方法、装置、设备及存储介质
CN111399766B (zh) * 2020-01-08 2021-10-22 华为技术有限公司 存储系统中的数据存储方法、数据读取方法、装置及系统

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070214314A1 (en) * 2006-03-07 2007-09-13 Reuter James M Methods and systems for hierarchical management of distributed data
CN103699494A (zh) * 2013-12-06 2014-04-02 北京奇虎科技有限公司 一种数据存储方法、数据存储设备和分布式存储系统
CN106662983A (zh) * 2015-12-31 2017-05-10 华为技术有限公司 分布式存储系统中的数据重建的方法、装置和系统
CN106201338A (zh) * 2016-06-28 2016-12-07 华为技术有限公司 数据存储方法及装置
CN109783002A (zh) * 2017-11-14 2019-05-21 华为技术有限公司 数据读写方法、管理设备、客户端和存储系统
CN107943421A (zh) * 2017-11-30 2018-04-20 成都华为技术有限公司 一种基于分布式存储系统的分区划分方法及装置
CN108780386A (zh) * 2017-12-20 2018-11-09 华为技术有限公司 一种数据存储的方法、装置和系统
CN110096220A (zh) * 2018-01-31 2019-08-06 华为技术有限公司 一种分布式存储系统、数据处理方法和存储节点
CN109726036A (zh) * 2018-11-21 2019-05-07 华为技术有限公司 一种存储系统中的数据重构方法和装置
CN109783280A (zh) * 2019-01-15 2019-05-21 上海海得控制系统股份有限公司 共享存储系统和共享存储方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021139571A1 (zh) * 2020-01-08 2021-07-15 华为技术有限公司 存储系统中的数据存储方法、数据读取方法、装置及系统
CN114461134A (zh) * 2021-11-19 2022-05-10 中航航空电子有限公司 硬盘零碎块读写装置、方法、计算机设备和存储介质

Also Published As

Publication number Publication date
US20220342567A1 (en) 2022-10-27
CN111399766B (zh) 2021-10-22
JP2023510500A (ja) 2023-03-14
WO2021139571A1 (zh) 2021-07-15
EP4075252A1 (en) 2022-10-19
EP4075252A4 (en) 2023-02-08

Similar Documents

Publication Publication Date Title
CN111399766B (zh) 存储系统中的数据存储方法、数据读取方法、装置及系统
CN107807794B (zh) 一种数据存储方法和装置
US11221935B2 (en) Information processing system, information processing system management method, and program thereof
US20190220379A1 (en) Troubleshooting Method, Apparatus, and Device
US10860447B2 (en) Database cluster architecture based on dual port solid state disk
CN110018783B (zh) 一种数据存储方法、装置及系统
CN108462756B (zh) 一种数据写入方法和装置
CN104750428A (zh) 块储存存取和网关模块、储存系统和方法与内容递送装置
CN113326006A (zh) 一种基于纠删码的分布式块存储系统
CN109117292B (zh) 一种集群存储的方法和装置及集群存储系统
CN109840051B (zh) 一种存储系统的数据存储方法及装置
CN111045602A (zh) 集群系统控制方法及集群系统
CN116881053B (zh) 数据处理方法及交换板、数据处理系统、数据处理装置
CN113626183A (zh) 一种基于超融合基础架构的集群构建方法和装置
CN107181608B (zh) 一种恢复服务及性能提升的方法及运维管理系统
US11099767B2 (en) Storage system with throughput-based timing of synchronous replication recovery
CN113051428B (zh) 一种摄像机前端存储备份的方法及装置
CN102325171B (zh) 一种监控系统中数据的存储方法及其系统
CN111045853A (zh) 一种提高纠删码恢复速度的方法、装置及后台服务器
CN115470041A (zh) 一种数据灾备管理方法及装置
CN111381770A (zh) 一种数据存储切换方法、装置、设备及存储介质
CN112131201B (zh) 一种网络附加存储高可用性的方法、系统、设备及介质
CN113568710B (zh) 一种虚拟机高可用实现方法、装置和设备
CN116204502B (zh) 一种高可用性的nas存储服务方法及系统
CN112988461B (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