CN113448499A - 存储系统、数据处理方法、装置、节点以及存储介质 - Google Patents

存储系统、数据处理方法、装置、节点以及存储介质 Download PDF

Info

Publication number
CN113448499A
CN113448499A CN202010574780.6A CN202010574780A CN113448499A CN 113448499 A CN113448499 A CN 113448499A CN 202010574780 A CN202010574780 A CN 202010574780A CN 113448499 A CN113448499 A CN 113448499A
Authority
CN
China
Prior art keywords
data
storage
storage unit
storage device
address
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
Application number
CN202010574780.6A
Other languages
English (en)
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
Priority to EP21775213.8A priority Critical patent/EP4116815A4/en
Priority to PCT/CN2021/077840 priority patent/WO2021190232A1/zh
Publication of CN113448499A publication Critical patent/CN113448499A/zh
Priority to US17/934,699 priority patent/US20230015979A1/en
Pending legal-status Critical Current

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/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
    • 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/0706Error 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/0727Error 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
    • 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
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/061Improving I/O performance
    • 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
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种存储系统、数据处理方法、装置、节点以及存储介质,属于数据存储技术领域。本方法通过客户端确定用于存储待写入数据的存储单元中的地址,并将待写入数据发送给存储节点中存储单元对应的第一存储设备,由第一存储设备对该待写入数据进行存储,而无须存储节点的CPU来确定虚拟地址空间对应的硬盘LBA,也无须硬盘根据硬盘LBA确定对应的物理地址,从而降低了写入数据的时延,提高了数据写入的效率。

Description

存储系统、数据处理方法、装置、节点以及存储介质
本申请要求于2020年03月25日提交的申请号为202010220314.8、发明名称为“一种存储系统访问方法及存储系统”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及数据存储技术领域,特别涉及一种存储系统、数据处理方法、装置、节点以及存储介质。
背景技术
随着数据存储技术的发展,越来越多的数据可以存储在包含客户端、元数据节点以及存储节点的存储系统中。
目前,客户端在该存储系统中写入数据的过程可以是:元数据节点为客户端分配一个虚拟地址空间;客户端可以将分配的虚拟地址空间和待写入数据发送至存储节点,存储节点的处理器(central processing units,CPU)根据虚拟地址空间与硬盘LBA之间的映射关系,确定接收到的虚拟地址空间所对应的硬盘LBA,并向确定的硬盘LBA对应的待写入硬盘发送该硬盘LBA以及待写入数据;该待写入硬盘根据硬盘LBA与物理地址之间的映射关系,确定接收到硬盘LBA所对应的物理地址,并将待写入数据写入该物理地址对应的物理地址空间。
在上述数据写入的过程中,存储节点中的CPU还要确定虚拟地址空间所对应的硬盘LBA,以确定待写入的硬盘,且待写入的硬盘还要根据硬盘LBA与物理地址之间的映射关系,才能确定待写入的物理地址空间,并将待写入数据写入确定的物理地址空间,因此,存储节点写入数据的过程较为复杂,提高了写入数据的时延,降低了写入数据的效率。
发明内容
本申请实施例提供了一种存储系统、数据处理方法、装置、节点以及存储介质,能够提高写入数据的效率。该技术方案如下:
第一方面,提供了一种存储系统,所述存储系统包括客户端和存储节点,其中所述存储节点包含第一存储设备;
所述客户端用于:根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据;
所述第一存储设备用于:存储所述待写入数据至所述第一存储设备;建立所述存储单元中的地址与所述待写入数据在所述第一存储设备的物理地址之间的映射关系;其中,所述存储单元中的地址不是逻辑块地址LBA。
本方法通过客户端确定用于存储待写入数据的存储单元中的地址,并将待写入数据发送给存储节点中存储单元对应的第一存储设备,由第一存储设备对该待写入数据进行存储,而无须存储节点的CPU来确定虚拟地址空间对应的硬盘LBA,也无须硬盘根据硬盘LBA确定对应的物理地址,从而降低了写入数据的时延,提高了数据写入的效率。
在一种可能的实现方式中,所述存储系统还包括元数据节点;所述客户端根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址,包括:
所述客户端向所述元数据节点发送所述待写入数据的数据量;
所述元数据节点用于:根据所述待写入数据的数据量生成所述存储单元中的地址;向所述客户端发送所述存储单元中的地址。
在一种可能的实现方式中,所述客户端还用于基于所述存储单元确定所述第一存储设备,包括:
所述客户端根据所述存储单元与分区的对应关系确定所述分区,所述分区包括多个存储设备;所述客户端查询所述分区确定所述第一存储设备,所述第一存储设备为所述分区中的存储设备。
在一种可能的实现方式中,所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据,包括:
所述客户端向所述存储节点的网络接口卡发送所述存储单元中的地址以及所述待写入数据;所述存储节点的网络接口卡用于:将所述存储单元中的地址以及所述待写入数据发送给所述第一存储设备。
基于上述可能的实现方式,由存储节点的网络接口卡直接将所述存储单元中的地址以及写请求携带的待写入数据发送给第一存储设备,而无需通过CPU将待写入数据发送给第一存储设备,减少了CPU的处理资源。
在一种可能的实现方式中,所述存储系统还包括第二存储设备;
所述第二存储设备用于:当所述第一存储设备故障后,存储恢复出的所述待写入数据到所述第二存储设备的物理地址;建立所述存储单元中的地址与所述第二存储设备的物理地址之间的映射关系。
在一种可能的实现方式中,所述客户端还用于:根据读请求携带的系统逻辑地址,确定所述系统逻辑地址对应的所述存储单元中的地址;向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量;
所述第一存储设备还用于:根据所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量,从所述第一存储设备中获取所述目标数据;将所述目标数据发送给所述客户端。
在一种可能的实现方式中,所述存储系统还包括元数据节点;所述客户端根据读请求携带的系统逻辑地址,确定所述系统逻辑地址对应的所述存储单元中的地址,包括:
所述客户端向所述元数据节点发送所述读请求携带的系统逻辑地址;
所述元数据节点用于:
根据所述系统逻辑地址与存储单元的对应关系,确定所述存储单元中的地址;
向所述客户端发送所述存储单元中的地址。
在一种可能的实现方式中,所述第一存储设备根据所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量,从所述第一存储设备中获取所述目标数据,包括:
所述第一存储设备根据所述存储单元中的地址与物理地址之间的映射关系,确定所述存储单元中的地址所对应的目标物理地址;
所述第一存储设备基于所述读请求携带的目标数据的目标数据量,从所述目标物理地址中的所述起始偏移量读取所述目标数据。
第二方面,提供了一种存储系统中数据处理方法,所述存储系统包括客户端和存储节点,其中所述存储节点包含第一存储设备,所述方法包括:
所述客户端根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据;所述第一存储设备存储所述待写入数据至所述第一存储设备;所述第一存储设备建立所述存储单元中的地址与所述待写入数据在所述第一存储设备的物理地址之间的映射关系;其中,所述存储单元中的地址不是逻辑块地址LBA。
在一种可能的实现中,所述存储系统还包括元数据节点;所述客户端根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址,包括:
所述客户端向所述元数据节点发送所述待写入数据的数据量;所述元数据节点根据所述待写入数据的数据量生成所述存储单元中的地址;所述元数据节点向所述客户端发送所述存储单元中的地址;所述客户端接收所述元数据节点发送的所述存储单元中的地址。
在一种可能的实现方式中,所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据之前,所述方法还包括:
所述客户端根据所述存储单元与分区的对应关系确定所述分区,所述分区包括多个存储设备;所述客户端查询所述分区确定所述第一存储设备,所述第一存储设备为所述分区中的存储设备。
在一种可能的实现方式中,所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据,包括:
所述客户端向所述存储节点的网络接口卡发送所述存储单元中的地址以及所述待写入数据;所述存储节点的网络接口卡将所述存储单元中的地址以及所述写请求携带的待写入数据发送给所述第一存储设备。
在一种可能的实现方式中,所述存储系统还包括第二存储设备;所述方法还包括:
当所述第一存储设备故障后,所述第二存储设备存储恢复出的所述待写入数据到所述第二存储设备的物理地址;所述第二存储设备建立所述存储单元中的地址与所述第二存储设备的物理地址之间的映射关系。
在一种可能的实现方式中,所述方法还包括:
所述客户端根据读请求携带的系统逻辑地址,确定所述系统逻辑地址对应的所述存储单元中的地址;所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量;所述第一存储设备根据所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量,从所述第一存储设备中获取所述目标数据;所述第一存储设备将所述目标数据发送给所述客户端。
在一种可能的实现方式中,所述存储系统还包括元数据节点;所述客户端根据读请求携带的系统逻辑地址,确定所述系统逻辑地址对应的存储单元中的地址,包括:
所述客户端向所述元数据节点发送所述读请求携带的所述系统逻辑地址;
所述元数据节点用于:根据所述系统逻辑地址与存储单元的对应关系,确定所述存储单元中的地址;向所述客户端发送所述存储单元中的地址。
在一种可能的实现方式中,所述第一存储设备根据所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量,从所述第一存储设备中获取所述目标数据,包括:
所述第一存储设备根据所述存储单元中的地址与物理地址之间的映射关系,确定所述存储单元中的地址所对应的目标物理地址;
从所述目标物理地址中的所述起始偏移量读取目标数据量的数据,得到所述目标数据。
第三方面,提供了一种数据处理装置,所述装置包括:
确定模块,用于根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;
发送模块,用于向所述存储单元对应的第一存储设备发送所述存储单元中的地址以及所述待写入数据;其中,所述存储单元中的地址不是逻辑块地址LBA,所述第一存储设备包含于存储节点。
可选地,所述确定模块用于:
向元数据节点发送所述待写入数据的数据量;
接收所述元数据节点根据所述待写入数据的数据量生成的所述存储单元中的地址。
可选地,所述装置还包括:
第一确定模块,用于根据所述存储单元与分区的对应关系确定所述分区,所述分区包括多个存储设备;
第二确定模块,用于查询所述分区确定所述第一存储设备,所述第一存储设备为所述分区中的存储设备。
可选地,所述发送模块用于:
向所述存储节点的网络接口卡发送所述存储单元中的地址以及所述待写入数据。
可选地,所述装置还包括第三确定模块和接收模块;
所述第三确定模块,用于根据读请求携带的系统逻辑地址,确定所述系统逻辑地址对应的所述存储单元中的地址;
所述发送模块,还用于向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量;
所述接收模块,用于接收所述第一存储设备发送的所述目标数据。
可选地,所述第三确定模块用于:
向元数据节点发送所述读请求携带的系统逻辑地址;
接收所述元数据节点发送的所述系统逻辑地址对应的所述存储单元中的地址。
第四方面,提供了一种数据处理装置,所述装置包括:
生成模块,用于根据客户端发送的待写入数据的数据量生成存储单元中的地址,其中,所述存储单元中的地址不是逻辑块地址LBA;
发送模块,用于向所述客户端发送所述存储单元中的地址。
可选地,所述装置还包括:
接收模块,用于接收所述客户端发送的系统逻辑地址;
确定模块,用于基于所述系统逻辑地址与存储单元中的地址之间的映射关系,确定所述系列逻辑地址对应的存储单元;
所述发送模块,还用于向所述客户端发送所述系列逻辑地址对应的存储单元。
第五方面,提供了一种数据处理装置,所述装置包括:
接收模块,用于接收客户端发送的存储单元中的地址以及写请求携带的待写入数据;
发送模块,用于将所述存储单元中的地址以及所述待写入数据发送给所述装置中所述存储单元对应的第一存储设备。
可选地,所述装置还包括;
存储模块,用于当所述第一存储设备故障后,存储恢复出的所述待写入数据到第二存储设备的物理地址;
建立模块,用于建立所述存储单元中的地址与所述第二存储设备的物理地址之间的映射关系。
可选地,所述装置还包括确定模块以及读取模块;
所述接收模块,还用于接收客户端发送的存储单元中的地址、目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量;
所述确定模块,用于根据所述存储单元中的地址与物理地址之间的映射关系,确定所述存储单元中的地址所对应的目标物理地址;
所述读取模块,用于从所述目标物理地址中的所述起始偏移量读取目标数据量的数据,得到所述目标数据;
所述发送模块,还用于向所述客户端发送所述目标数据。
第六方面,提供了一种计算节点,该计算节点包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述第二方面或上述第二方面的任一种可选方式提供的方法中客户端所执行的操作。
第七方面,提供了一种元数据节点,该元数据节点包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述第二方面或上述第二方面的任一种可选方式提供的方法中元数据节点所执行的操作。
第八方面,提供了一种存储节点,该存储节点包括处理器和存储器,该存储器中存储有至少一条指令,该指令由该处理器加载并执行以实现如上述第二方面或上述第二方面的任一种可选方式提供的方法中存储节点所执行的操作。
第九方面,提供一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器加载并执行以实现如上述存储系统中数据处理方法所执行的操作。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种存储系统的示意图;
图2是本申请实施例提供的一种存储节点的结构示意图;
图3是本申请实施例提供的一种元数据分布示意图;
图4是本申请实施例提供的一种计算节点的结构示意图;
图5是本申请实施例提供的一种元数据节点的结构示意图;
图6是本申请实施例提供的一种存储系统中数据处理方法的流程图;
图7是本申请实施例提供的一种存储系统中写入数据的示意图;
图8是本申请实施例提供的一种存储系统中数据处理方法的流程图;
图9是本申请实施例提供的一种存储系统中读取数据的示意图;
图10是本申请实施例提供的一种存储系统中数据处理方法的流程图;
图11是本申请实施例提供的一种存储系统中数据重构的示意图;
图12是本申请实施例提供的一种数据处理装置的结构示意图;
图13是本申请实施例提供的一种数据处理装置的结构示意图;
图14是本申请实施例提供的一种数据处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1是本申请实施例提供的一种存储系统的示意图,参见图1,该存储系统100可以包括至少一个元数据节点101(例如图1中的元数据节点101a、102b以及102c)、至少一个客户端102(例如图1中的客户端102C1、102C2以及102Cp,其中p大于2)、以及多个存储节点103(例如图1中的存储节点103S1、103S2、103S3以及103Sq,其中q大于3)。
该至少一个元数据节点101,用于管理该存储系统100中各个存储节点103中的存储设备。当该存储系统100包括多个元数据节点101时,每一个元数据节点101用于管理该存储系统100中的一部分存储设备,在存储系统100的初始化过程中,该元数据节点101用于将其管理的存储设备进行划分,得到多个分区,每个分区可以包括多个存储设备,这多个存储设备可以位于不同的存储节点103,也可以位于同一个存储节点103。存储设备可以是固态硬盘、机械硬盘或其他类型存储介质的存储设备,本发明实施例对此不作限定。该元数据节点101还用于建立每个分区与每个分区中的存储设备之间的映射关系,其中,每个分区用一个分区标识来指示,每个存储设备用一个设备标识来指示,不同分区的分区标识不同,不同存储设备的设备标识不同。该元数据节点103还可以将每个分区所包括的存储设备告知给各个客户端102,以便后续客户端102在向某一个分区写入数据时,可以知道将待写入数据写入到哪个存储设备。每个分区中存储设备的个数可以由该存储系统100的冗余编码方式来决定,如果该存储系统100采用的冗余编码方式是K副本编码,也即是在一个分区中写入待写入数据的K份副本,K份副本可以分别写入到该分区中的K个存储设备,此时分区中存储设备的个数为K,其中K为大于1的整数。如果该存储系统100采用的冗余编码方式是纠删码(erasure coding,EC)编码,也即是,待写入数据由N个数据块和M个校验块来体现,待写入数据的N个数据块以及M个校验块可以分别写入分区中的相应的存储设备,此时每个分区中存储设备的个数为N+M,其中N和M均为大于1的整数。
在写数据过程中,该元数据节点101还用于为客户端102分配存储单元,并建立分配的存储单元与分区之间的映射关系,并将该映射关系发送给客户端102,以便客户端102将待写入数据写入该存储单元对应的分区中各个存储设备。其中,一个分区可以对应至少一个存储单元,每个存储单元的存储空间由该分区中的存储设备来提供。该元数据节点101还用于存储该存储单元的偏移量,该偏移量用于指示该存储单元中存储的已经存储数据的位置。当该待写入数据写入完成后,该元数据节点101还可以更新该存储单元的偏移量,本申请实施例对该存储单元的最大偏移量不做具体限定。
其中,一个存储单元为存储目标数据类型的数据时在逻辑上的基本管理单元,例如,该目标数据类型的数据可以是文件(file)、对象(object)、块(block)以及流(Stream)等任一种。该存储单元可以对应一个分区,该存储单元可以由对应的分区中各个存储设备的物理地址空间映射而来,例如,一个20M的存储单元1对应分区A,该分区A包括存储设备A1和A2,则存储设备A1中20M的物理地址空间A11可以被映射至存储单元1,存储单元A2中20M的物理地址空间A22也可以被映射至存储单元1。需要说明的是,当任一存储单元被第一次分配给客户端102时,元数据节点102还用于建立该存储单元与系统逻辑地址之间的映射关系,其中该存储单元中的地址对应一个系统逻辑地址,此时该存储单元的偏移量为0,以指示该存储单元中还未存储数据,后续若每在存储设备中与该存储单元具有映射关系的物理地址空间写入一次数据,则该元数据节点102可以更新一次该存储单元的偏移量,以指示该存储单元当前存储的数据的数据量。其中,该存储单元中的地址用于唯一指示该存储单元,存储单元中的地址不是LBA,可以是该存储单元的身份标识(identity,ID),例如对象标识Object ID。其中,系统逻辑地址是存储系统对外提供的存储地址,例如,客户端使用的存储地址。存储设备用于提供追加写。
在读数据过程中,该元数据节点101还用于接收客户端102发送的查询请求,根据查询请求携带的系统逻辑地址,将该逻辑地址对应的存储单元中的地址发送给客户端102,以便客户端102读取该存储单元中存储的数据。
在数据重构过程中,该元数据节点101还用于确定其管理的存储设备是否出现故障,若其管理的任一分区中的第一存储设备出现故障,该元数据节点101可以用第二存储设备替换第一存储设备,并向该分区中主存储设备所在的存储节点103发送数据重构指令,以指示该存储节点103将第一存储设备中的数据恢复,并将恢复的数据存储至第二存储设备,该第一存储设备为该分区中的任一存储设备,该第二存储设备为该分区以外的没有故障的任一存储设备。
每个客户端102用于为用户提供数据写入以及数据读取的业务,也即是,客户端102可以将用户上传的数据写入存储节点103中,也可以从存储节点103中读取数据。在客户端102写入数据之前,可以先请求元数据节点101分配一个存储单元,并将元数据节点101分配的存储单元所对应的分区确定为待写入的分区,基于待写入数据以及该存储系统100的冗余编码方式存储数据。当冗余编码方式为K副本编码时,待写入数据生成K个副本,分别写入分区中相应的K个存储设备中。当冗余编码方式为EC编码时,每份第一数据也即是该待写入数据的一个数据块。对于任一份第一数据,该客户端可以向该分区中的一个存储设备所在的存储节点103发送目标写请求,以指示该存储节点103将该第一数据写入该存储设备。在客户端102读取数据之前,可以先请求元数据节点101查询待读取存储单元,当从元数据节点101查询到待读取存储单元后,向待读取存储单元对应的分区中存储设备所在的存储节点103发送读请求,以请求读取数据。
图2是本申请实施例提供的一种存储节点的结构示意图,存储节点103可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的存储设备1031以及至少一个控制器1032,该控制器1032用于实现下述各个方法实施例提供的方法中存储节点所执行的步骤。当然,该存储节点103还可以包括其他用于实现设备功能的部件,在此不做赘述。
每个存储设备1031对应一个控制器1032,一个存储设备1031对应的控制器1032可以位于该存储设备1031的内部,也可以位于该存储设备1031的外部。本申请实施例以控制器1032位于存储设备1031的外部为例进行说明。每个存储设备1031对应一个物理地址区间,该物理地址区间可以包括多个物理地址,每个物理地址对应该存储单元中的一个物理地址空间,这多个物理地址对应的物理地址空间的大小可以不同,也可以相同,其中至少一个物理地址空间可以映射一个存储单元。在一种可能的实现方式中,该存储节点103还可以包括网络接口卡1033,该网络接口卡1033可以是网络接口控制器(network interfacecontroller,NIC),例如图1中的NIC,该网络接口卡1033用于接收客户端102发送的目标写请求,并根据该目标写请求指示的待写入存储设备1031,将该目标写请求转发至待写入存储设备1031所对应的控制器1032,并由该控制器1032将第一数据写入待写入存储存储设备1031。或者,该网络接口卡1033用于将客户端102发送的目标写请求转发至该存储节点中的各个控制器1032,当任一控制器1032接收到该目标写请求后,若该目标写请求所指示的存储设备1031与该控制器1032对应的存储设备1031相同,则该控制器1032将该目标写请求携带的第一数据写入该存储设备1031,否则该控制器忽略该目标写请求。当写入完成后,该控制器1032还用于基于该写请求携带的存储单元中地址,建立该存储单元与存储待写入数据的物理地址空间之间的映射关系,该控制器1032还用于基于该待写入数据的数据量,更新该存储单元的偏移量。该网络接口卡1033还用于接收客户端102发送的目标读请求,并根据该目标读请求指示的待读取存储设备1031,将该目标读请求转发至待读取存储设备1031所对应的控制器1032,并由该控制器1032基于目标读请求携带的待读取存储单元中的地址,确定该待读取存储单元对应的物理地址,并将该物理地址对应的物理地址空间中存储的待读取数据返回给客户端102。其中,该控制器1032可以是一个智能芯片(chip),本申请实施例对该控制器1032的形式不做具体限定。另一种实现,该控制器1032功能可以由存储设备1031的控制器实现。
需要说明的是,该存储节点103还包括至少一个CPU,该CPU用于执行其他操作。对于任一分区所包括的多个存储设备还可以分为一个主存储设备和至少一个从存储设备,该主存储设备为该分区中的任一存储设备,例如,该分区中的第一个存储设备为主存储设备,该分区中除主存储设备以外的存储设备均为从存储设备。该主存储设备所对应的控制器还用于存储每个从存储设备内已存储数据的物理地址空间与虚拟地址空间之间的映射关系。当接收到元数据节点101发送的数据重构指令后,该控制器还用于根据该分区内没有故障的存储设备所存储的数据,恢复该分区中故障存储设备所存储的数据,将恢复数据存储在无故障的存储设备,并基于无故障存储设备中用于存储重构数据的物理地址空间,将故障存储设备中存储数据的物理地址与该存储单元之间的映射关系,修改为该无故障存储设备中用于存储重构数据的物理地址空间与该存储单元之间的映射关系,从而实现将该分区中的故障存储设备替换为该无故障存储设备。其中,重构数据也即是恢复的故障存储设备中存储的数据,也即是恢复数据。另一种实现,分区中的存储设备可以不包含主存储设备,由客户端实现主存储设备的功能。例如,由客户端根据冗余编码方式向分区中的存储设备写入数据或读取数据,由客户端实现重构数据等。
需要说明的,元数据节点101也可以包括网络接口卡,元数据节点101可以是服务器等。客户端102可以安装在计算节点中,该计算节点也可以包括网络接口卡,该计算节点可以是服务器或存储阵列的阵列控制器等,还可以是分布式存储系统中提供的运行客户端程序的存储节点。存储节点103可以是分布式存储系统中的存储节点,还可以是存储阵列中的硬盘框等。本发明对存储系统各组件的具体形态不作限定。
需要说明的是,存储系统100中的元数据可以分为两层,分别为系统层元数据和单元层元数据,其中,系统层元数据用于指示系统逻辑地址与存储单元之间的映射关系,存储在元数据节点101中,而单元层元数据用于指示存储单元与物理地址之间的映射关系,存储在存储节点103。例如图3所示的本申请实施例提供的一种元数据分布示意图,其中,系统层元数据存储在元数据节点,单元层元数据存储在存储节点。
图4是本申请实施例提供的一种计算节点的结构示意图,计算节点400可以包括处理器401和存储器402。处理器401可以是CPU,处理器401还可以采用数字信号处理(digitalsignal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)等来实现。处理器401也可以包括主处理器和协处理器。一些实施例中,处理器401还可以包括人工智能(artificial intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器402可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器402还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个硬盘存储设备、闪存存储设备。在一些实施例中,存储器402中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器401所执行以实现本申请中下述实施例提供的方法中客户端所执行的步骤。当然,该计算节点400还可以具有网络接口卡、键盘以及输入输出接口等部件,以便进行输入输出,该计算节点400还可以包括其他用于实现设备功能的部件,在此不做赘述。
图5是本申请实施例提供的一种元数据节点的结构示意图,元数据节点500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的存储器501以及至少一个处理器502,其中,该存储器501中存储有至少一条指令,该至少一条指令由该处理器502加载并执行以实现下述各个方法实施例提供的方法中元数据节点所执行的步骤。当然,该元数据节点500还可以具有网络接口卡,以便进行输入输出,该元数据节点500还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器或者存储设备,上述指令可由终端中的处理器执行以完成下述实施例所提供的方法。例如,该计算机可读存储介质可以是ROM、RAM)、CD-ROM、磁带、软盘和光数据存储节点等。
客户端可以向元数据节点请求分配待写入的存储单元,并基于分配的存储单元与分区之间的映射关系,将待写入数据写入该存储单元对应的分区中的每个存储设备,每个存储设备所在的存储节点可以更新该存储单元所对应的物理地址,为了进一步说明该过程,参见如图6所示的本申请实施例提供的一种存储系统中数据处理方法的流程图。其中,该存储系统包含客户端、存储节点以及元数据节点。
601、该客户端获取写请求,该写请求携带待写入数据。
该客户端可以是存储系统内的任一客户端,该写请求用于指示客户端将该待写入数据写入存储系统,该写请求可以包括待写入数据。该客户端可以接收由用户操作触发的该写入请求,以获取该写请求。
当获取到该写请求后,该客户端可以基于存储系统的冗余编码方式以及待写入数据,获取多份第一数据,每份第一数据的数据量均等于待写入数据的数据量。在一种可能的实现方式中,当该存储系统的冗余编码方式为K副本编码时,则该客户端可以将该待写入数据复制K份,得到该待写入数据的K份副本,每份副本为一份第一数据。当该存储系统的冗余编码方式为EC编码时,该客户端可以对待写入数据进行EC编码,得到该待写入数据的N个数据块以及M个校验块,每个数据块或每个校验块为一份第一数据。
当客户端获取到多份第一数据后,该客户端可以先确定用于存储该待写入数据的存储单元,再将每份第一数据分别该存储单元对应分区中的一个存储设备。其中,客户端确定待写入的存储单元的过程可以由下述步骤602-606来实现,客户端将每份第一数据写入存储单元对应分区中的一个存储设备的过程可以是下述步骤607-613来实现。
602、客户端向元数据节点发送分配请求,该分配请求用于指示元数据节点为该待写入数据分配待写入的存储单元。
该元数据节点可以是存储系统内的任一元数据节点,或者,该元数据节点所管理的存储设备内可以具有未存储数据的大量物理地址空间,也即是该元数据节点所管理的存储设备的负载比较小。该分配请求可以包括该待写入数据的数据量以及分配标识,该分配标识用于指示元数据节点为该待写入数据分配待写入的存储单元。本步骤602所示的过程也即是客户端向元数据节点发送待写入数据的数据量的过程。为了便于描述,可以将待写入数据的数据量记为第一数据量。
603、该元数据节点接收到该客户端发送的分配请求。
604、该元数据节点基于该分配请求,将第一存储单元分配给该待写入数据。
该第一存储单元也即是元数据分配的用于存储待写入数据的存储单元,该第一存储单元的偏移量和第一数据的数据量之和小于或等于该第一存储单元的最大偏移量。
该元数据节点可以基于该分配请求中的第一数据量,为该待写入数据分配待写入的存储单元。在一种可能的实现方式中,该元数据节点可以先确定多个已分配存储单元,并获取该多个已分配存储单元的偏移量,该元数据节点可以基于该多个已分配存储单元的偏移量以及该分配请求中的第一数据量,确定该第一存储单元。其中,已分配的存储单元为已经分配出去的存储单元,已分配存储单元的偏移量均大于0,也即是已分配存储单元内均存储有数据。
其中,该元数据节点可以基于该多个已分配存储单元的偏移量以及该分配请求中的第一数据量,确定该第一存储单元的过程可以是:当任一已分配存储单元的偏移量与该第一数据量之和小于或等于该已分配存储单元的最大偏移量时,元数据节点可以将该已分配存储单元作为该第一存储单元。当每个已分配存储单元的偏移量与该第一数据量之和均大于每个已分配存储单元的最大偏移量时,每个已分配存储单元均不能作为该第一存储单元,则该元数据节点可以重新为该客户端分配一个新的存储单元,将该新的存储单元作为第一存储单元。在一种可能的实现方式中,该元数据节点可以根据待写入数据的数据量生成第一存储单元中的地址,此时该第一存储单元也即是一个新的存储单元。
当元数据节点确定了为待写入数据分配的第一存储单元后,该元数据节点还可以确定该第一存储单元所对应的分区以及存储设备,为了便于描述,将第一存储单元所对应的分区记为第一分区,将第一存储单元所对应存储设备记为第一存储设备,其中,第一存储设备也即是该第一分区中的存储设备。
其中,元数据节点确定第一分区的过程可以是:当该第一存储单元为已分配的存储单元时,该元数据节点可以根据存储的存储单元与分区之间的映射关系,确定该第一存储单元对应的第一分区;当该第一存储单元为新的存储单元时,该元数据节点可以从其管理的多个分区中选取一个分区作为该第一分区,并建立该第一存储单元与该第一分区之间的映射关系,以使第一存储单元与该第一分区对应。其中,第一存储单元与该第一分区之间的映射关系可以包括第一存储单元中的地址与第一分区的分区标识对应,也即是第一存储单元中的地址与第一分区之间具有映射关系。
由于在初始化时,该元数据节点存储有每个分区与每个分区所包括的存储设备之间的映射关系,则该元数据节点确定第一存储单元对应的存储设备的过程可以是:该元数据节点可以根据第一分区与存储设备之间的映射关系,确定该第一分区包括的存储设备,并将该第一分区包括的每个存储设备作为第一存储设备。其中,一个分区与一个分区所包括的存储设备之间的映射关系,可以包括该分区的分区标识以及该分区所包括的每个存储设备的设备标识。例如,分区B包括4个存储设备001-004,其中,B为分区标识,001-004为设备标识。
605、该元数据节点向该客户端发送分配响应,该分配响应用于指示该元数据节点为该待写入数据所分配的第一存储单元。
该分配响应可以包括该第一分区的分区标识以及第一存储单元中的地址,以指示将该第一存储单元分配该待写入数据。该分配响应还可以包括该第一分区中各个存储设备的设备标识。
需要说明的是,由于分配响应中包括第一存储单元中的地址,则本步骤605所示的过程也即是元数据节点向客户端发送存储单元中的地址的过程。步骤602-605所示的过程也即是客户端根据写请求携带的待写入数据,确定用于存储待写入数据的存储单元中的地址的过程。
606、该客户端接收该元数据节点基于该分配请求发送的分配响应。
由于分配响应中携带有元数据节点分配的第一存储单元中的地址,因此,本步骤606所示的过程也即是客户端接收元数据节点发送的用于存储待写入数据的存储单元中的地址的过程。
需要说明的是,客户端每次请求元数据节点分配一次待写入的存储单元时,元数据节点均会分配的一个存储单元以及该存储单元所对应的分区,而存储单元对应的分区中的每个设备均可以存储待写入数据的一份第一数据,因此对于待写入数据,客户端请求元数据节点分配一次待写入的存储设备即可,而无须为每一份第一数据请求分配一次。也即是,在将待写入数据写入一个第一分区之前,步骤602-606所示的过程执行一次即可。
607、该客户端基于该分配响应,确定该第一存储单元对应的第一存储设备。
当该分配响应未包括设备标识,而包括了分区标识时,该客户端可以基于该分配响应中的分区标识,确定待写入的分区为第一分区。由于初始化时,元数据节点已将每个分区中的存储设备均告知过该客户端,则该客户端在确定了待写入的分区为第一分区后,可以将该第一分区中的每个存储设备均作为一个第一存储设备。
当该分配响应包括设备标识时,该客户端可以将该分配响应中的每个设备标识所指示的存储设备作为一个第一存储设备。
该客户端可以将该待写入数据的每一份第一数据分别写入至该第一分区内的一个存储设备,其中,将一份第一数据存储在该第一分区的第一存储设备的过程可以包括下述步骤608-613。
608、该客户端向包含第一存储设备的第一存储节点发送目标写请求,该目标写请求用于指示该第一存储节点将第一数据写入该第一存储设备。
该目标写请求包括该第一数据、第一存储设备的设备标识、第一存储单元中的地址以及该第一存储单元的偏移量,该偏移量用于指示存储单元中存储的已经存储数据的位置。该目标写请求还可以包括写标识,该写标识用于指示该第一存储节点将第一数据写入该第一存储设备。
在存储系统初始化时,该元数据节点除了将自己管理的分区的分区标识以及每个分区所包括的存储设备的设备标识,发送给存储系统中的各个客户端以外,还可以将每个分区所包括的存储设备所在的存储节点的地址信息,发送给该存储系统中的各个客户端,并由各个客户端存储每个分区所包括的存储设备所在的存储节点的地址信息。当该客户端在将该第一数据写入第一存储设备之前,该客户端可以先获取存储的该第一存储设备所在的第一存储节点的地址信息,再基于第一存储节点的地址信息,向该第一存储节点发送该目标写请求。
在一种可能的实现方式中,该客户端还可以向该第一存储节点的网络接口卡发送该目标请求,由该第一存储节点的网络接口卡将该目标写请求发送给第一存储设备,由于目标写请求包括第一数据以及第一存储单元中的地址,则该客户端向该第一存储节点的网络接口卡发送该目标请求,该第一存储节点的网络接口卡将该目标写请求发送给第一存储设备的过程,也即是该客户端向第一存储节点的网络接口卡发送用于存储待写入数据的存储单元中的地址以及该写请求携带的待写入数据,第一存储节点的网络接口卡将该存储单元中的地址以及该写请求携带的待写入数据发送给该第一存储设备的过程,也即是客户端向用于存储待写入数据的存储单元对应的第一存储设备发送该存储单元中的地址以及该写请求携带的待写入数据的过程。
609、该第一存储节点接收该目标写请求。
本步骤609所示的过程可以由该第一存储节点上的网络接口卡来执行。当该网络接口卡接收到该客户端发送的目标写请求后,该网络接口卡还可以根据该目标写请求携带的设备标识,确定待写入的存储设备为第一存储设备,并将该目标写请求转发至该第一存储设备对应的控制器,由该控制器基于该写请求将该第一数据写入该第一存储设备。由于目标写请求包括第一数据以及第一存储单元中的地址,当第一存储设备的控制器位于第一存储设备中时,网络接口卡向第一存储设备的控制器发送目标请求的过程也即是第一存储节点的网络接口卡将第一存储单元中的地址以及写请求携带的待写入数据发送给第一存储设备的过程。
610、该第一存储节点基于该目标写请求,将该第一数据写入该第一存储设备中的至少一个第一物理地址空间。
该至少一个第一物理地址空间的总大小大于或等于该第一数据的数据量。该至少一个第一物理地址空间可以是该第一存储设备中相邻的物理地址空间,也可以是该第一存储设备中不相邻的物理地址空间,本申请实施例对该至少一个第一物理地址空间在该第一存储设备中的位置不做具体限定。
需要说明的是,本步骤610所示的过程也即是该第一存储节点基于该目标写请求,将该第一数据写入该第一存储设备中的第一物理地址空间的过程。本步骤610还可以由该第一存储设备对应的控制器来实现,当该控制器接收到网络接口卡发送的目标写请求后,可以从该目标写请求中获取第一数据,并将第一数据写入该至少一个第一物理地址空间,那么当控制器位于第一存储设备中时,本步骤610所示的过程也即是第一存储设备存储该待写入数据至该第一存储设备的过程。
611、该第一存储节点建立该至少一个第一物理地址空间的物理地址与该第一存储单元之间的映射关系。
本步骤611可以由第一存储设备对应的控制器来执行。该控制器可以从该目标写请求中获取第一存储单元中的地址,并基于该第一存储单元的中的地址,建立该至少一个第一物理地址空间的物理地址与第一存储单元之间的映射关系。
在一种可能的实现方式中,对于该至少一个第一物理地址空间中的任一第一物理地址空间,该控制器可以建立该第一物理地址空间的物理地址与该第一存储单元中的地址之间的映射关系,从而可以将该第一物理地址空间映射至该第一存储单元,那么,在该第一物理地址空间写入数据也即是在该第一存储单元写入数据。
当该至少一个第一物理地址空间与第一存储单元之间的映射关系建立完成后,该控制器还可以存储该至少一个第一物理地址空间与第一存储单元之间的映射关系,以便后续控制器可以从该第一存储单元中读取数据。
需要说明的是,该至少一个物理地址空间也即是第一存储设备中用于存储第一数据的物理地址空间,则该至少一个物理地址空间的物理地址也即是待写入数据在该第一存储设备的物理地址,当控制器位于第一存储设备中时,则本步骤611所示的过程也即是第一存储设备建立第一存储单元中的地址与待写入数据在第一存储设备的物理地址之间的映射关系的过程。
当第一存储节点执行完本步骤611后,该第一存储节点还可以基于该第一数据的第一数据量,对存储的该第一存储单元的偏移量进行更新。第一存储数据节点更新该第一存储单元的偏移量的过程也可以由第一存储设备对应的控制器来执行。该控制器内存储有该第一存储设备所对应的每个存储单元的偏移量,若该第一存储单元为已分配存储单元,则该控制器可以基于该第一数据的第一数据量以及存储的该第一存储单元的偏移量,对存储的该第一存储单元的偏移量进行更新,其中,更新后的该第一存储单元的偏移量等于第一数据量与存储的该第一存储单元的偏移量之和,更新后的该第一存储单元的偏移量也即是该第一存储单元当前最新的偏移量。若该第一存储单元为该第一存储设备新对应的存储单元,则该控制器可以基于该第一数据的第一数据量,存储该第一存储单元的偏移量,则存储的该第一存储单元的偏移量为第一数据量,此时,存储的该第一存储单元的偏移量也即是该第一存储单元当前最新的偏移量。
612、该第一存储节点向该客户端发送写入完成响应,该写入完成响应用于指示已将第一数据写入。
本步骤612可以由第一存储设备对应的控制器来执行,当控制器将第一数据写入第一存储设备后,该控制器可以向该第一存储节点中的网络接口卡发送该写入完成响应,由网络接口卡向该客户端转发该写入完成响应。
613、该客户端接收该写入完成响应。
当该客户端接收到该写入完成响应后,说明此时该第一数据已经写入第一存储设备。
需要说明的是,基于该存储系统的冗余编码方式,当该客户端将待写入数据所对应的多份第一数据均写入第一分区后,该待写入数据的写入完成,则对于每份第一数据,存储系统均需要执行一次步骤608-613的过程。为了进一步说明客户端将待写入数据写入第一分区的过程,参见图7所示的本申请实施例提供的一种存储系统中写入数据的示意图。图7以客户端102C1,以网络接口卡为NIC为例,客户端102C1向元数据节点101a发送分配请求,该元数据节点101a基于该分配请求,向该客户端返回分配响应,该客户端102C1可以基于接收到的分配响应,确定元数据节点101a分配的第一存储单元以及该第一存储单元对应的第一分区,其中,该第一分区可以包括存储节点103S1中的存储设备1、存储节点103S2中的存储设备2以及存储节点103S3中的存储设备3,客户端102C1根据存储系统的冗余编码模式,分别向存储节点103S1、存储节点103S2以及存储节点103S3发送一个目标写请求,存储设备1、存储设备2以及存储设备3的控制器分别将接收到的目标写请求携带的第一数据,写入存储设备1、存储设备2以及存储设备3,当写入完成后,存储节点103S1、存储节点103S2以及存储节点103S3分别向该客户端102C1发送一个写入完成响应,当客户端102C1接收到存储节点103S1、存储节点103S2以及存储节点103S3发送的写入完成响应后,该待写入数据存储完成。
614、该客户端向该元数据节点发送更新请求,该更新请求用于指示该元数据节点基于该待写入数据的数据量,更新存储的该第一存储单元的偏移量,该偏移量用于指示存储单元中存储的已经存储数据的位置。
该更新请求可以包括待写入数据的第一数据量以及第一存储单元中的地址,该更新请求还可以包括更新标识,该更新标识用于指示该元数据节点基于该待写入数据的第一数据量,更新存储的该第一存储单元的偏移量。
需要说明的是,待写入数据的数据量和该待写入数据的每份第一数据的数据量均为第一数据量,因此,当该待写入数据的每份第一数据分别写入第一分区中的每个存储设备时,每个存储设备中新增的数据的数据量均为第一数据量,且存储每份第一数据的第一物理地址空间对应的第一存储单元内新增的数据量也均为第一数据量。在一种可能的实现方式中,该客户端可以在待写入数据写入完成后,向该元数据节点发送更新请求。
在一种可能的实现方式中,当该客户端存储完成多份待写入数据后,向该元数据节点发送目标更新请求,该目标更新请求可以包括该多份待写入数据的数据量,以及元数据节点为每份待写入数据分配的存储单元中的地址,该目标更新请求还可以包括目标请求标识,该目标请求标识用于指示元数据节点基于目标更新请求中的每个数据量,更新每个数据量对应的存储单元的偏移量。由于客户端写入完成多份待写入数据后,才会向元数据节点发送一次目标更新请求,从而可以降低客户端与元数据节点之间的交互次数。
615、该元数据节点接收该客户端发送的更新请求。
616、该元数据节点基于更新请求携带的第一数据量,对存储的该第一存储单元的偏移量进行更新。
该元数据节点内存储有每个存储设备所对应的每个存储单元的偏移量,其中,元数据节点基于待写入数据的数据量对存储的该第一存储单元的偏移量进行更新的过程与步骤611中控制器基于该第一数据量对存储的该第一存储单元的偏移量进行更新的过程同理,在此,本申请实施例对该元数据节点基于该待写入数据的数据量对存储的该第一存储单元的偏移量进行更新的过程不做赘述。
本申请实施例提供的方法,通过客户端确定用于存储待写入数据的存储单元中的地址,并将待写入数据发送给存储节点中存储单元对应的第一存储设备,由第一存储设备对该待写入数据进行存储,而无须存储节点的CPU来确定虚拟地址空间对应的硬盘LBA,也无须硬盘根据硬盘LBA确定对应的物理地址,从而降低了写入数据的时延,提高了数据写入的效率。并且,通过客户端存储完成多份待写入数据后,向元数据节点发送一次目标更新请求,可以降低客户端与元数据节点之间的交互次数。且写入数据过程是由存储节点中待写入的存储单元对应的控制器来执行的,无须存储节点的CPU来执行,从而降低了存储节点中CPU的开销。
客户端在读取数据过程中,客户端可以在元数据节点请求查询待读取的存储单元,并基于查询到的存储单元与分区的之间的对应关系,读取该存储单元对应的分区所存储的数据,为了进一步说明该过程,参见如图8所示的本申请实施例提供的一种存储系统中数据处理方法的流程图。其中,该存储系统包含客户端、存储节点以及元数据节点。其中,图8所示的过程以读取第一存储单元对应的第一存储设备中的数据为例进行说明。
801、该客户端根据读请求,向元数据节点发送查询请求,该查询请求用于指示该元数据节点查询系统逻辑地址对应的存储单元。
该读请求可以包括待查询的目标数据的数据量、该系统逻辑地址以及该目标数据在该系统逻辑地址对应的存储单元中的起始偏移量。该查询请求可以包括该读请求携带的该系统逻辑地址以及查询标识,该查询标识用于指示该元数据节点查询该系统逻辑地址对应的存储单元。为了便于描述将目标数据的数据量记为第二数据量。
当该客户端接收到用户操作所触发的读请求时,该客户端可以获取到该读请求,客户端可以基于该读请求携带的系统逻辑地址生成该查询请求,并向该元数据存储节点发送该查询请求。
需要说明的是,由于该查询请求携带读请求携带的系统逻辑地址,则本步骤801所示的过程也即是该客户端向元数据节点发送该读请求携带的该系统逻辑地址的过程。
802、该元数据节点接收查询请求。
803、该元数据节点基于系统逻辑地址与存储单元的对应关系,确定该系统逻辑地址对应的第一存储单元中的地址。
该第一存储单元为读请求携带的系统逻辑地址对应的存储单元,也即是待读取存储单元。当接收到该查询请求后,该元数据节点可以从该查询请求中获取该系统逻辑地址,并基于该系统逻辑地址与存储的系统逻辑地址与存储单元中的地址之间的映射关系,确定该系统逻辑地址对应的存储单元为第一存储单元。该元数据节点还可以基于该第一存储单元,以及存储的存储单元与分区之间的映射关系,确定该第一存储单元对应的第一分区,并将该第一分区中的每个存储设备作为第一存储设备,此时第一存储设备为待读取存储设备。
804、该元数据节点向该客户端发送查询响应,该查询响应用于指示该系统逻辑地址对应的第一存储单元。
该查询响应可以包括第一分区中每个存储设备的设备标识以及该第一存储单元中的地址,该查询响应还可以包括该第一分区的分区标识。由于查询响应包括第一存储单元中的地址,则本步骤804所示的过程也即是元数据节点向客户端发送系统逻辑地址对应的存储单元中的地址的过程,步骤802-804所示的过程也即是客户端根据读请求携带的该系统逻辑地址,确定该系统逻辑地址对应的存储单元中的地址的过程。
805、该客户端接收该元数据节点基于该查询请求发送的查询响应。
806、该客户端基于该查询响应,确定第一存储单元中的地址以及该第一存储单元对应的该第一存储设备。
该客户端可以从该查询响应中获取该第一存储单元中的地址。当该查询响应携带多个设备标识时,该客户端将该查询响应携带的每个设备标识所指示的存储设备确定为第一存储设备。当该查询响应携带分区标识,而未携带多个设备标识时,该客户端将该查询响应携带的分区标识所指示的分区确定为待读取的第一分区,并将第一分区中的每个存储设备确定为第一存储设备。
需要说明的是,步骤801、805以及806所示的过程也即是该客户端基于读请求携带的系统逻辑地址,查询待读取的目标数据所在的第一存储单元以及第一存储单元对应的第一存储设备的过程。
807、该客户端向包含该第一存储设备的第一存储节点发送目标读请求,该目标读请求包括第一存储单元中的地址、该读请求携带的目标数据的目标数据量以及该目标数据在第一存储单元中的起始偏移量以及该第一存储设备的设备标识。
该目标数据在该第一存储单元中的始偏移量,也即是该目标数据在第一存储单元中的起始位置。
808、第一存储节点接收到该客户端发送的读请求。
本步骤808所示的过程可以由该第一存储节点上的网络接口卡来执行。当该网络接口卡接收到该客户端发送目标读请求后,该网络接口卡还可以根据该目标读请求携带的设备标识,确定待读取的存储设备为第一存储设备,并将该目标读请求转发至该第一存储设备对应的控制器,由该控制器基于该目标读请求从第一存储设备中读取数据。
809、该第一存储节点根据存储单元中的地址与物理地址空间之间的映射关系,确定该第一存储单元中地址所对应的目标物理地址。
本步骤809所示的过程可以由该第一存储设备对应的控制器来执行,当该控制器接收到该目标读请求后,可以从该目标读请求中获取第一存储单元中的地址,该控制器可以基于该第一存储单元中的地址以及存储的存储单元与物理地址之间的映射关系,将该第一存储设备中与该第一存储单元中的地址对应目标物理地址所指示的物理地址空间确定为目标物理地址空间。
810、该第一存储节点根据该起始偏移量以及该目标数据量,向该客户端发送该目标物理地址中的目标数据。
该第一存储单元中的数据也即是该第一存储单元对应的目标物理地址空间中所存储的数据。则该起始偏移量也即是该目标物理地址空间中该目标数据的起始位置。需要说明的是,由于一个存储单元的存储空间可以由至少一个物理地址所指示的物理地址空间来提供,因此该目标物理地址空间为该第一存储单元对应的至少一个物理地址所指示的物理地址空间。
本步骤810所示的过程可以由第一存储设备来执行。在一种可能的实现方式中,本步骤810可以由步骤810a-810b所示的过程来实现。
步骤810a、该第一存储设备基于该目标读请求携带的目标数据的目标数据量,从该目标物理地址中的起始偏移量读取该目标数据。
本步骤810a所示的过程可以由该第一存储设备对应的控制器来执行,该控制器可以基于该起始偏移量,确定该目标数据在该目标物理地址指示的目标物理地址空间中的起始位置,并从该起始位置读取目标数据量的数据,从而得到该目标数据。例如起始偏移量为20M,目标数据量为30M,则控制器可以将目标物理地址空间中位于(20M,50M]的数据作为第二数据。
步骤810b、该第一存储设备向该客户端发送该目标数据。
当该控制器获取到目标数据后,可以向第一存储节点的网络接口卡发送携带该目标数据的读取完成响应,由该网络接口卡向该客户端转发读取完成响应。
需要说明的是,步骤809-810所示过程也即是第一存储设备根据第一存储单元中的地址、该读请求携带的目标数据的目标数据量以及该目标数据在第一存储单元中的起始偏移量,从该第一存储设备中获取该目标数据的过程。
811、客户端接收该第一存储节点基于该目标读请求发送的目标数据。
该客户端可以接收到该第一存储节点发送的读取完成响应,并从该读取完成响应中获取目标数据。
需要说明的是,当客户端在存储系统中读取第一数据时,若该存储系统的冗余编码方式为K副本编码,则该客户端仅在第一分区中的任一个存储设备内读取一次数据即可,也即是步骤807至步骤811所示的过程,客户端获取到的目标数据也即是第一数据。若该存储系统的冗余编码方式为EC编码,则该客户端则要在第一分区中每个存储设备内读取一次数据,并对从第一分区中的每个存储设备内读取到的目标数据进行EC反向编码,得到第一数据。其中,从第一分区中的每个存储设备内读取到的目标数据也即是客户端在存储第一数据时,写入第一分区的该第一数据的一个数据块或一个校验块。
当存储系统的冗余编码方式为EC编码时,为了进一步说明,客户端读取第一数据的过程,请参见图9所示的本申请实施例提供的一种存储系统中读取数据的示意图。图9以客户端102C1为例,客户端102C1向元数据节点101a发送查询请求,元数据节点101a基于该查询请求,向客户端102从发送查询响应,该客户端102C1可以基于该查询响应确定待查询的第一存储单元以及该第一存储单元对应的第一分区,其中,该第一分区可以包括存储节点103S1中的存储设备1、存储节点103S2中的存储设备2以及存储节点103S3中的存储设备3,客户端102C1根据存储系统的冗余编码模式,分别向存储节点103S1、存储节点103S2以及存储节点103S3发送一个目标读请求,存储设备1、存储设备2以及存储设备3的控制器可以接收到的一个目标读请求,并分别从存储设备1、存储设备2以及存储设备3中读取一份目标数据,存储节点103S1、存储节点103S2以及存储节点103S3将控制器读取到的目标数据均发送至向该客户端102C1,由客户端102C1对存储节点103S1、存储节点103S2以及存储节点103S3发送的目标数据,进行EC反向编码,得到第一数据。
本申请实施例提供的方法,通过客户端确定用于存储待读取数据的存储单元中的地址,并将该存储单元中的地址、目标数据的目标数据量以及目标数据在该存储单元中的起始偏移该发送给存储节点中与该存储单元对应的第一存储设备,由第一存储设备向客户端返回目标数据,而无须存储节点的CPU来确定虚拟地址空间对应的硬盘LBA,也无须硬盘根据硬盘LBA确定对应的物理地址,从而降低了读取数据的时延,提高了数据读取的效率。并且,读取数据过程是由存储节点中待读取存储设备对应的控制器来执行的,无须存储节点的CPU来执行,从而降低了存储节点中CPU的开销。
当储存系统中的任一分区中的任一个存储设备出现故障时,元数据节点向该分区中的主存储设备所在的存储节点发送重构指令,以指示存储节点将故障存储设备内的存储的数据重构至第二存储设备,为了进一步说明该过程,请参见图10所示的本申请实施例提供的一种存储系统中数据处理方法的流程图。其中,该存储系统包含客户端、元数据节点以及存储节点。
1001、该元数据节点对该存储系统中的存储设备进行故障检测,得到出现故障的至少一个第三存储设备。
该第三存储设备也即是存储系统中出现故障的存储设备。该元数据节点可以每经过一个检测周期,向每个存储设备所在的存储节点发送第一检测指令,该第一检测指令用于指示每个存储节点检测每个存储节点内的存储设备是否有故障,当任一存储节点内的存储设备没有故障时,该存储节点可以向该信息储存节点发送第一检测完成响应,该第一检测完成响应用于指示该存储节点内的存储设备没有故障。当该存储节点内的任一存储设备有故障时,该存储节点可以向该元数据节点发送第二检测完成响应,该第二检测完成响应可以包括故障的存储设备的设备标识,以告知元数据节点哪个存储设备出现故障,出现故障的存储设备也即是第三存储设备。
或者,该元数据节点还可以向每个分区中的主存储设备所在的存储节点发送第二检测指令,该第二检测指令用于指示每个分区中的主存储设备所在的存储节点每经过一个检测周期,对每个分区中的从存储设备进行心跳检测,以检测每个分区中的存储设备是否出现故障。对于任一分区中的主存储设备所在的存储节点,当该存储节点接收到第二检测指令后,该存储节点每经过一个检测周期,可以向该分区中的每个从存储设备所在的存储节点发送一个第二检测指令,若每个从存储设备所在的存储节点均基于该第二检测指令向主存储设备所在的存储节点发送一个第二检测完成响应,则说明该分区中的每个从存储设备均没有故障,该第二检测完成响应用于指示一个从存储设备没有故障。当主存储设备所在的存储节点未接收到任一从存储设备所在的存储节点发送的第二检测完成响应,则说明该从存储设备出现故障,则该主存储设备所在的存储节点可以向该元数据节点上报该从存储设备出现故障的消息,从而该元数据节点可以将该从存储设备作为第三存储设备。
1002、对于该至少一个第三存储设备中的任一第三存储设备,该元数据节点确定用于替代该第三存储设备的第二存储设备。
该第二存储设备没有出现故障,该第二存储设备还可以是目标分区以外的没有故障的任一存储设备,该目标分区为是该第三存储设备所属的分区。当该第三存储设备为上文中的第一存储设备时,该目标分区也即是第一分区。
该元数据节点可以将该存储系统以外的任一存储设备作为该第二存储设备,可以理解的是,第二存储设备可以是该存储系统中新安装的一个存储设备,或者,该第二存储设备也可以将该存储系统中除该目标分区以外的负载较少的任一存储设备。其中,存储设备的负载较少是指该存储设备中当前存储的数据较少,该存储设备还有大量的物理地址空间未存储数据。
1003、该元数据节点向第二存储节点发送数据重构指令,该数据重构指令用于指示该第二存储节点将该第三存储设备中的数据重构至第二存储设备。
该第二存储节点为该目标分区中的主存储设备所在的存储节点,该数据重构指令可以包括该第三存储设备的设备标识、该第二存储设备的设备标识、以及该目标分区中主存储设备的标识。该数据重构指令还可以包括重构标识,该重构标识用于指示该第二存储节点将该第三存储设备中的数据恢复至第二存储设备,该数据重构指令还可以包括该第二存储设备所在的第三存储节点的地址信息。
1004、该第二存储节点接收该元数据节点发送的数据重构指令。
本步骤1004所示的过程可以由该第二存储节点上的网络接口卡来执行。当该网络接口卡接收到该数据重构指令后,该网络接口卡还可以根据该数据重构指令携带的主存储设备的设备标识,确定该主存储设备所对应的控制器,并将该数据重构指令转发至该主存储设备对应的控制器,由该控制器基于该数据重构指令将第三存储设备中存储的数据恢复至第二存储设备。
1005、该第二存储节点基于该数据重构指令,将该第三存储设备中的数据恢复至该第二存储设备。
本步骤1005所示的过程可以由该第二存储节点内的该目标分区中主存储设备所对应的控制器来实现。当该控制器接收到该数据重构指令后,可以基于该数据重构指令中第三存储设备的标识确定待恢复数据属于第三存储设备,可以基于该数据重构指令中第二存储设备的标识确定用于存储恢复数据的是第二存储设备。
该控制器可以基于该目标分区中没有故障的存储设备存储的数据,重构该第三存储设备存储的数据,得到重构数据(也即是恢复的数据)。对于不同的冗余编码方式,该控制器基于该目标分区中没有故障的存储设备存储的数据,重构该第三存储设备存储的数据的过程有所不同。
在一种可能的实现方式中,当该存储系统的冗余编码方式为K副本编码时,说明第三存储设备存储的数据与该目标分区中其他存储设备存储的数据相同,则该控制器从该主存储设备获取该主存储设备存储的数据,该控制器可以将该主存储设备存储的数据作为重构数据。
在一种可能的实现方式中,当该存储系统的冗余编码方式为EC编码时,说明第三存储设备内存储的数据需要该目标分区中其他存储设备存储的数据才能重构,则该控制器可以向目标存储设备中没有故障的每个从存储设备所在的存储节点发送数据获取请求,每个数据获取请求用于请求获取从存储设备存储的数据。当任一从存储设备所在的存储节点接收到该数据获取请求后,该从存储设备所在的存储节点将该从存储设备存储的数据发送至该第二存储节点,从而使得该主存储设备对应的控制器可以接收到没有故障的每个从存储设备存储的数据,该控制器还可以从主存储设备获取该主存储设备存储的数据。当该控制器获取到目标分区内没有故障的每个从存储设备存储的数据以及该主存储设备存储的数据后,该控制器可以基于没有故障的每个从存储设备存储的数据、该主存储设备存储的数据以及EC编码时的校验数据,重构该第三存储设备存储的数据,得到重构数据。
该控制器内存储有该目标分区中每个存储设备内已存储数据的物理地址与存储单元之间映射关系。且该目标分区中每个存储设备对应的存储单元相同,则该控制器可以基于该第三存储设备的标识以及存储的每个存储设备内已存储数据的物理地址与存储单元之间映射关系,确定该第三存储设备内已存储数据的物理地址所对应的目标存储单元。其中,该第三存储设备内已存储数据的物理地址可以对应至少一个目标存储单元。当该第三存储设备为第一存储设备时,则该至少一个目标存储单元可以包括第一存储单元。
该控制器还可以从该数据重构指令中获取到该第二存储设备所在的第三存储节点的地址信息,控制器并基于该第三存储节点的地址信息,向第三存储节点发送第一目标写请求,该第一目标写请求用于指示将该重构数据写入该第二存储设备,该目标写请求可以包括该第二存储设备的设备标识、该目标存储单元中的地址以及该重构数据。
当该第三存储节点接收到该第一目标写请求后,该第三存储节点可以基于该第一目标写请求将重构数据写入第二存储设备,当该第三存储节点中该第二存储设备对应的控制器将重构数据写入该第二存储设备后,该控制器还可以建立该第二存储设备中用于存储重构数据的物理地址与该目标存储单元中的地址之间的映射关系。该控制器还可以向该第二存储节点发送目标写入完成响应,该目标写入完成响应包括该第二存储设备中用于存储重构数据的物理地址空间的物理地址。其中,该第三存储节点基于该目标写请求将重构数据写入第二存储设备的过程与步骤610中该第一存储节点基于该目标写请求将该第一数据写入该第一存储设备中的至少一个第一物理地址空间的过程同理,在此本申请实施例对该第三存储节点基于该目标写请求将重构数据写入第二存储设备的过程不做赘述。
1006、该第二存储节点将该第三存储设备中存储数据的物理地址空间与目标存储单元之间的映射关系,修改为该第二存储设备中用于存储重构数据的物理地址空间与该目标存储单元之间的映射关系。
本步骤1006所示的过程可以由该第二存储节点内的该目标分区中主存储设备所对应的控制器来实现。该控制器可以接收到第三存储节点发送的目标写入完成响应,该控制器可以从该目标写入完成响应中,获取到该第二存储设备中用于存储重构数据的物理地址空间的物理地址,从而该控制器可以将存储的该第三存储设备中存储数据的物理地址空间与目标存储单元之间的映射关系,修改为该第二存储设备中用于存储重构数据的物理地址空间的物理地址与该目标存储单元中的地址之间的映射关系。
当该第三存储设备为第一存储设备时,步骤1005-1006所示的过程,也即是,当第一存储设备故障后,该第二存储设备存储恢复出的所述待写入数据到该第二存储设备的物理地址;该第二存储设备建立用于存储待写入数据的存储单元中的地址与该第二存储设备的物理地址之间的映射关系的过程。
1007、该第二存储节点向该元数据节点发送重构完成响应,该重构完成响应用于指示已经将第三存储设备内存储数据恢复至第二存储设备。
1008、该元数据节点接收重构完成响应。
1009、该元数据节点将该第三存储设备与该目标分区之间的映射关系,修改为该第二存储设备与该目标分区之间的映射关系。
当该元数据节点接收到该重构完成响应,说明此时第二存储节点已将该第三存储设备中的数据恢复至第二存储设备,则该元数据节点将存储的该第三存储设备与该目标分区之间的映射关系,修改为该第二存储设备与该目标分区之间的映射关系,以实现将该目标分区中的第三存储设备替换为该第二存储设备。
为了进一步说明1001-1009所示的过程,请参见图11所示的本申请实施例提供的一种存储系统中数据重构的示意图。图11以目标分区包括存储节点103S1中的存储设备1(主存储设备)、存储节点103S2中的存储设备2以及存储节点103S3中的存储设备3,存储设备3出现故障,第二存储设备为存储节点103Sq中的存储设备4,以网络接口卡为NIC为例,元数据节点101a向存储节点103S1发送数据重构指令,该数据重构指令包括存储设备3和4的设备标识,存储节点103S1内的存储设备1对应的控制器接收到该数据重构指令后,从存储设备1中获取存储设备1存储的数据,从存储节点103S2中获取存储设备2存储的数据,控制器并基于存储设备1存储的数据、存储设备2存储的数据以及EC编码时的校验数据,重构存储设备3存储的数据,该控制器将该重构的存储设备3存储的数据写入存储节点103Sq中的存储设备4,当写入完成后,该控制器可以将该存储设备3中存储数据的物理地址空间与该目标存储单元之间的映射关系,修改为该存储设备4中存储重构数据的物理地址空间与该目标存储单元之间的映射关系,且元数据节点101a可以将存储的存储设备3与该目标分区之间的映射关系,修改为该存储设备4与该目标分区之间的映射关系,以实现将该目标分区中的存储设备3替换为该存储设备4。
本申请实施例提供的方法,通过第二存储节点重构故障的第三存储单元存储的数据,并将重构数据写入第二存储单元,当写入完成后,仅需要第二存储节点将该第三存储单元中存储数据的物理地址空间与目标存储单元之间的映射关系,修改为该第二存储设备中用于存储重构数据的物理地址空间与该目标存储单元之间的映射关系,且仅需要元数据节点将该第三存储单元与该目标分区之间的映射关系,修改为该第二存储单元与该目标分区之间的映射关系,而无须元数据节点修改其他内容,因此,在重构过程中需要更新信息的内容比较少,降低了更新信息所带来的开销。并且,重构数据过程是由存储节点中出存储设备对应的控制器来执行的,无须存储节点的CPU来执行,从而降低了存储节点中CPU的开销。
图12是本申请实施例提供的一种数据处理装置的结构示意图,所述装置包括:
确定模块1201,用于根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;
发送模块1202,用于向所述存储单元对应的第一存储设备发送所述存储单元中的地址以及所述待写入数据;其中,所述存储单元中的地址不是逻辑块地址LBA,所述第一存储设备包含于存储节点。
可选地,所述确定模块1201用于:
向元数据节点发送所述待写入数据的数据量;
接收所述元数据节点根据所述待写入数据的数据量生成的所述存储单元中的地址。
可选地,所述装置还包括:
第一确定模块,用于根据所述存储单元与分区的对应关系确定所述分区,所述分区包括多个存储设备;
第二确定模块,用于查询所述分区确定所述第一存储设备,所述第一存储设备为所述分区中的存储设备。
可选地,所述发送模块1202用于:
向所述存储节点的网络接口卡发送所述存储单元中的地址以及所述待写入数据。
可选地,所述装置还包括第三确定模块和接收模块;
所述第三确定模块,用于根据读请求携带的系统逻辑地址,确定所述系统逻辑地址对应的所述存储单元中的地址;
所述发送模块1202,还用于向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址、所述读请求携带的目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量;
所述接收模块,用于接收所述第一存储设备发送的所述目标数据。
可选地,所述第三确定模块用于:
向元数据节点发送所述读请求携带的系统逻辑地址;
接收所述元数据节点发送的所述系统逻辑地址对应的所述存储单元中的地址。
图13是本申请实施例提供的一种数据处理装置的结构示意图,所述装置包括:
生成模块1301,用于根据客户端发送的待写入数据的数据量生成存储单元中的地址,其中,所述存储单元中的地址不是逻辑块地址LBA;
发送模块1302,用于向所述客户端发送所述存储单元中的地址。
可选地,所述装置还包括:
接收模块,用于接收所述客户端发送的系统逻辑地址;
确定模块,用于基于所述系统逻辑地址与存储单元中的地址之间的映射关系,确定所述系列逻辑地址对应的存储单元;
所述发送模块1302,还用于向所述客户端发送所述系列逻辑地址对应的存储单元。
图14是本申请实施例提供的一种数据处理装置的结构示意图,所述装置包括:
接收模块1401,用于接收客户端发送的存储单元中的地址以及写请求携带的待写入数据;
发送模块1402,用于将所述存储单元中的地址以及所述待写入数据发送给所述装置中所述存储单元对应的第一存储设备。
可选地,所述装置还包括;
存储模块,用于当所述第一存储设备故障后,存储恢复出的所述待写入数据到第二存储设备的物理地址;
建立模块,用于建立所述存储单元中的地址与所述第二存储设备的物理地址之间的映射关系。
可选地,所述装置还包括确定模块以及读取模块;
所述接收模块1401,还用于接收客户端发送的存储单元中的地址、目标数据的目标数据量以及所述目标数据在所述存储单元中的起始偏移量;
所述确定模块,用于根据所述存储单元中的地址与物理地址之间的映射关系,确定所述存储单元中的地址所对应的目标物理地址;
所述读取模块,用于从所述目标物理地址中的所述起始偏移量读取目标数据量的数据,得到所述目标数据;
所述发送模块,还用于向所述客户端发送所述目标数据。
上述所有可选技术方案,可以采用任意结合形成本公开的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的数据处理装置在处理数据时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的存储系统中数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储单元中,上述提到的存储单元可以是只读存储器,硬盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (17)

1.一种存储系统,其特征在于,所述存储系统包括客户端和存储节点,其中所述存储节点包含第一存储设备;
所述客户端用于:
根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;
向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据;
所述第一存储设备用于:
存储所述待写入数据至所述第一存储设备;
建立所述存储单元中的地址与所述待写入数据在所述第一存储设备的物理地址之间的映射关系;其中,所述存储单元中的地址不是逻辑块地址LBA。
2.根据权利要求1所述的存储系统,其特征在于,所述存储系统还包括元数据节点;
所述客户端根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址,包括:
所述客户端向所述元数据节点发送所述待写入数据的数据量;
所述元数据节点用于:
根据所述待写入数据的数据量生成所述存储单元中的地址;
向所述客户端发送所述存储单元中的地址。
3.根据权利要求1或2所述的存储系统,其特征在于,所述客户端还用于基于所述存储单元确定所述第一存储设备,包括:
所述客户端根据所述存储单元与分区的对应关系确定所述分区,所述分区包括多个存储设备;
所述客户端查询所述分区确定所述第一存储设备,所述第一存储设备为所述分区中的存储设备。
4.根据权利要求1至3任一所述的存储系统,其特征在于,所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据,包括:
所述客户端向所述存储节点的网络接口卡发送所述存储单元中的地址以及所述待写入数据;
所述存储节点的网络接口卡用于:
将所述存储单元中的地址以及所述待写入数据发送给所述第一存储设备。
5.根据权利要求1至4任一所述的存储系统,其特征在于,所述存储系统还包括第二存储设备;
所述第二存储设备用于:
当所述第一存储设备故障后,存储恢复出的所述待写入数据到所述第二存储设备的物理地址;
建立所述存储单元中的地址与所述第二存储设备的物理地址之间的映射关系。
6.一种存储系统中数据处理方法,其特征在于,所述存储系统包括客户端和存储节点,其中所述存储节点包含第一存储设备,所述方法包括:
所述客户端根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;
所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据;
所述第一存储设备存储所述待写入数据至所述第一存储设备;
所述第一存储设备建立所述存储单元中的地址与所述待写入数据在所述第一存储设备的物理地址之间的映射关系;其中,所述存储单元中的地址不是逻辑块地址LBA。
7.根据权利要求6所述的方法,其特征在于,所述存储系统还包括元数据节点;
所述客户端根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址,包括:
所述客户端向所述元数据节点发送所述待写入数据的数据量;
所述元数据节点根据所述待写入数据的数据量生成所述存储单元中的地址;
所述元数据节点向所述客户端发送所述存储单元中的地址;
所述客户端接收所述元数据节点发送的所述存储单元中的地址。
8.根据权利要求6或7所述的方法,其特征在于,所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据之前,所述方法还包括:
所述客户端根据所述存储单元与分区的对应关系确定所述分区,所述分区包括多个存储设备;
所述客户端查询所述分区确定所述第一存储设备,所述第一存储设备为所述分区中的存储设备。
9.根据权利要求6至8任一所述的方法,其特征在于,所述客户端向所述存储单元对应的所述第一存储设备发送所述存储单元中的地址以及所述待写入数据,包括:
所述客户端向所述存储节点的网络接口卡发送所述存储单元中的地址以及所述待写入数据;
所述存储节点的网络接口卡将所述存储单元中的地址以及所述待写入数据发送给所述第一存储设备。
10.根据权利要求6至9任一所述的方法,其特征在于,所述存储系统还包括第二存储设备;所述方法还包括:
当所述第一存储设备故障后,所述第二存储设备存储恢复出的所述待写入数据到所述第二存储设备的物理地址;
所述第二存储设备建立所述存储单元中的地址与所述第二存储设备的物理地址之间的映射关系。
11.一种数据处理装置,其特征在于,所述装置包括:
确定模块,用于根据写请求携带的待写入数据,确定用于存储所述待写入数据的存储单元中的地址;
发送模块,用于向所述存储单元对应的第一存储设备发送所述存储单元中的地址以及所述待写入数据;其中,所述存储单元中的地址不是逻辑块地址LBA,所述第一存储设备包含于存储节点。
12.一种数据处理装置,其特征在于,所述装置包括:
生成模块,用于根据客户端发送的待写入数据的数据量生成存储单元中的地址,其中,所述存储单元中的地址不是逻辑块地址LBA;
发送模块,用于向所述客户端发送所述存储单元中的地址。
13.一种数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的存储单元中的地址以及写请求携带的待写入数据;
发送模块,用于将所述存储单元中的地址以及所述待写入数据发送给所述装置中所述存储单元对应的第一存储设备。
14.一种计算节点,其特征在于,所述计算节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求6至权利要求10任一项所述的存储系统中数据处理方法中客户端所执行的操作。
15.一种元数据节点,其特征在于,所述元数据节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求6至权利要求10任一项所述的存储系统中数据处理方法中元数据节点所执行的操作。
16.一种存储节点,其特征在于,所述存储节点包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求6至权利要求10任一项所述的存储系统中数据处理方法中存储节点所执行的操作。
17.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如权利要求6至权利要求10任一项所述的存储系统中数据处理方法所执行的操作。
CN202010574780.6A 2020-03-25 2020-06-22 存储系统、数据处理方法、装置、节点以及存储介质 Pending CN113448499A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP21775213.8A EP4116815A4 (en) 2020-03-25 2021-02-25 STORAGE SYSTEM, DATA PROCESSING METHOD AND APPARATUS, NODE, AND STORAGE MEDIUM
PCT/CN2021/077840 WO2021190232A1 (zh) 2020-03-25 2021-02-25 存储系统、数据处理方法、装置、节点以及存储介质
US17/934,699 US20230015979A1 (en) 2020-03-25 2022-09-23 Storage System, Data Processing Method, Apparatus, Node, and Storage Medium

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2020102203148 2020-03-25
CN202010220314 2020-03-25

Publications (1)

Publication Number Publication Date
CN113448499A true CN113448499A (zh) 2021-09-28

Family

ID=77808324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010574780.6A Pending CN113448499A (zh) 2020-03-25 2020-06-22 存储系统、数据处理方法、装置、节点以及存储介质

Country Status (4)

Country Link
US (1) US20230015979A1 (zh)
EP (1) EP4116815A4 (zh)
CN (1) CN113448499A (zh)
WO (1) WO2021190232A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11893250B1 (en) * 2021-08-09 2024-02-06 T-Mobile Innovations Llc Offset-based memory management for integrated circuits and programmable network devices

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181578B1 (en) * 2002-09-12 2007-02-20 Copan Systems, Inc. Method and apparatus for efficient scalable storage management
US7734603B1 (en) * 2006-01-26 2010-06-08 Netapp, Inc. Content addressable storage array element
US20080126839A1 (en) * 2006-09-19 2008-05-29 Satish Sangapu Optimized reconstruction and copyback methodology for a failed drive in the presence of a global hot spare disc
US10866737B2 (en) * 2015-09-17 2020-12-15 Intel Corporation Apparatus, method and system to store information for a solid state drive
CN106201350B (zh) * 2016-07-07 2019-10-18 华为技术有限公司 存储数据的方法、存储器和计算机系统
CN106569739A (zh) * 2016-10-09 2017-04-19 南京中新赛克科技有限责任公司 一种数据写入优化的方法
WO2019119311A1 (zh) * 2017-12-20 2019-06-27 华为技术有限公司 一种数据存储的方法、装置和系统
CN109085999B (zh) * 2018-06-15 2022-04-22 华为技术有限公司 数据处理方法及处理系统

Also Published As

Publication number Publication date
WO2021190232A1 (zh) 2021-09-30
EP4116815A4 (en) 2023-08-16
EP4116815A1 (en) 2023-01-11
US20230015979A1 (en) 2023-01-19

Similar Documents

Publication Publication Date Title
US9823980B2 (en) Prioritizing data reconstruction in distributed storage systems
US8533299B2 (en) Locator table and client library for datacenters
US8996611B2 (en) Parallel serialization of request processing
KR101813431B1 (ko) 분산형 스토리지 시스템에서 데이터를 분배하는 방법 및 시스템
US8181061B2 (en) Memory management and recovery for datacenters
CN109582213B (zh) 数据重构方法及装置、数据存储系统
CN112565325B (zh) 镜像文件管理方法、装置及系统、计算机设备、存储介质
EP3745269B1 (en) Hierarchical fault tolerance in system storage
CN110018783B (zh) 一种数据存储方法、装置及系统
CN111309523A (zh) 数据读写方法、数据远程复制方法及装置、分布式存储系统
CN112543920B (zh) 数据重构的方法、装置、计算机设备、存储介质及系统
CN110325958B (zh) 分布式块存储系统中数据存储方法、装置及计算机可读存储介质
CN115756955A (zh) 一种数据备份、数据恢复的方法、装置及计算机设备
US20220129333A1 (en) Message Processing Method and Apparatus in Distributed System
US20230015979A1 (en) Storage System, Data Processing Method, Apparatus, Node, and Storage Medium
CN113051102A (zh) 文件备份方法、装置、系统、存储介质和计算机设备
CN113296685B (zh) 数据处理方法及装置、计算机可读存储介质
CN113391937B (zh) 用于存储管理的方法、电子设备以及计算机程序产品
CN116303789A (zh) 多分片多副本数据库并行同步方法、装置及可读介质
CN110474787B (zh) 一种节点故障检测方法和装置
CN105068896A (zh) 基于raid备份的数据处理方法及装置
CN111752892A (zh) 分布式文件系统及其实现方法、管理系统、设备及介质
US11892975B1 (en) Asynchronous consistent snapshots in a distributed system
CN118672511A (zh) 一种分布式存储管理方法及系统
CN118796126A (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