CN114063892A - 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 - Google Patents

独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 Download PDF

Info

Publication number
CN114063892A
CN114063892A CN202010788778.9A CN202010788778A CN114063892A CN 114063892 A CN114063892 A CN 114063892A CN 202010788778 A CN202010788778 A CN 202010788778A CN 114063892 A CN114063892 A CN 114063892A
Authority
CN
China
Prior art keywords
command
commands
module
nth
end module
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
CN202010788778.9A
Other languages
English (en)
Other versions
CN114063892B (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
Priority to CN202010788778.9A priority Critical patent/CN114063892B/zh
Priority to EP21853314.9A priority patent/EP4184306A4/en
Priority to PCT/CN2021/105633 priority patent/WO2022028208A1/zh
Publication of CN114063892A publication Critical patent/CN114063892A/zh
Priority to US18/164,262 priority patent/US20230185461A1/en
Application granted granted Critical
Publication of CN114063892B publication Critical patent/CN114063892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID 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/0617Improving the reliability of storage systems in relation to availability
    • 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/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/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/0635Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
    • 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/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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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

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)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种独立磁盘冗余阵列卡,处理命令的方法,存储装置和存储系统,该独立磁盘冗余阵列卡,包括:控制模块和N个前端模块,N为大于或等于2的正整数;该N个前端模块中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该控制模块;该控制模块,用于接收来自于该N个前端模块的命令并对接收到的命令进行处理。设置有上述独立磁盘冗余阵列卡的存储装置在进行数据恢复时可以更快地恢复出现故障的数据。此外,利用上述独立磁盘冗余阵列卡可以实现更加灵活的纠删码方案。

Description

独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统
技术领域
本申请涉及信息技术领域,更具体地,涉及独立磁盘冗余阵列卡,处理命令的方法,存储装置和存储系统。
背景技术
近年来,随着数据量的增加,海量存储技术得到了越来越广泛的应用。随着存储数据的容量越来越大,单个存储节点的存储容量也随之变大。因此,存储节点的故障所带来的影响越来越大。
存储节点可以由主机(host)和存储系统组成。目前常见的存储节点的结构可以有以下两种:单主机+单存储系统;多主机+单存储系统。
1,单主机+单存储系统
顾名思义,单主机+单存储系统的存储节点中只包括一个与存储系统交互的主机。在一些情况下,存储节点中只包括一个主机。在另一些情况下,存储节点中也可能包括多个主机,但是该多个主机中只有一个主机能直接与该存储节点内的存储系统进行交互。
图1是一个单主机+单存储系统的存储节点的示意图。
如图1所示,存储节点100中包括主机101和主机102。存储节点100还包括存储系统110,存储系统110由三个存储装置组成。该三个存储装置分别为存储装置111,存储装置112和存储装置113。这三个存储装置中的每个存储装置可以包括一个或多个物理磁盘(例如,可以是机械硬盘、固态硬盘(solid state disk,SSD)、固态混合硬盘(solid state hybriddrive,SSHD)等)。
如图1所示,存储节点100中只有一个主机(即主机101)能够与存储系统110中的存储装置交互。因此,一旦主机101或者主机101和存储装置之间的链路发生故障,存储节点100的就无法正常运行。为了提高存储节点的可靠性,业界提出多主机+单存储系统。
2,多主机+单存储系统
多主机+单存储系统的存储节点中包括多个与存储系统交互的主机。该多个主机中的每个主机能都可以直接与该存储节点内的存储系统进行交互
图2是一个多主机+单存储系统的存储节点的示意图。
如图2所示,存储节点200中包括主机201和主机202。存储节点200还包括存储系统210,存储系统210由三个存储装置组成。该三个存储装置分别为存储装置211,存储装置212和存储装置213。这三个存储装置中的每个存储装置可以包括一个或多个物理磁盘(例如,可以是机械硬盘、固态硬盘(solid state disk,SSD)、固态混合硬盘(solid state hybriddrive,SSHD)等)。
主机201和主机202都可以直接访问三个存储装置。虽然与存储节点100相比,存储节点200的可靠性有所提高。但是仍然存无法正常访问节点200的可能性。例如,需要读取存储节点200保存的数据的计算机设备与存储节点200之间的链路发生故障,存储节点200用于与外界通信的通信接口发生故障等。
图3是一个存储池系统的示意图。如图3所示,存储池系统300包括多个存储节点。存储池系统300中的存储节点可以是如图1或图2所示的存储节点。
存储池系统300可以以单个存储节点为粒度进行数据备份。例如,存储池系统300可以利用纠删码(erasure code,EC)技术备份数据。存储池系统300中一部分存储节点可以用于保存原始数据(这一部分存储节点可以称为第一类存储节点),另一部分存储节点用于保存备份数据(这一部分存储节点可以称为第二类存储节点)。如上所述,单个存储节点的存储容量通常会很大。因此,如果一个存储节点发生故障,那么需要很长时间才能将恢复该存储节点保存的数据。
发明内容
本申请提供一种独立磁盘冗余阵列卡,处理命令的方法,存储装置和存储系统,可以提高恢复出现故障的数据的速度。
第一方面,本申请实施例提供一种独立磁盘冗余阵列RAID卡,包括:控制模块和N个前端模块,N为大于或等于2的正整数;该N个前端模块中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该控制模块,该N个主机模块分别属于N个存储装置,n=1,…,N;该控制模块,用于接收来自于该N个前端模块的命令并对接收到的命令进行处理。设置有上述RAID卡的存储装置在进行EC时可以以存储装置为粒度进行EC。这样,一个EC节点存储的数据量大大减少,在进行数据恢复时可以更快地恢复出现故障的数据。此外,利用上述RAID卡可以实现更加灵活的EC方案。此外,如果该RAID卡所在的存储装置的主机模块出现故障,可以通过其他存储节点对该存储装置保存的数据进行读/写操作。
结合第一方面,在一种可能的设计中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
结合第一方面,在一种可能的设计中,该控制模块,具体用于在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。上述技术方案可以减少因多个I/O命令对相同的数据进行读写造成的冲突。
结合第一方面,在一种可能的设计中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P1个该I/O命令已处理完成,且P2个该I/O命令已超时,其中P为大于或等于2的正整数,P1和P2为大于或等于1且小于P的正整数,且P1和P2的和为P。
结合第一方面,在一种可能的设计中,该控制模块,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,停止接收来自于该第n个前端模块的该I/O命令。
结合第一方面,在一种可能的设计中,该控制模块,还用于在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
结合第一方面,在一种可能的设计中,该第n个前端模块,还用于向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;该控制模块,还用于保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
第二方面,本申请实施例提供一种处理命令的方法,该方法包括:独立磁盘冗余阵列RAID卡的N个前端模块中的第n个前端模块接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该RAID卡中的控制模块,该N个主机模块分别属于N个存储装置,N为大于或等于2的正整数,n=1,…,N;该控制模块接收来自于该N个前端模块的命令并对接收到的命令进行处理。上述技术方案可以以存储装置为粒度进行EC。这样,一个EC节点存储的数据量大大减少,在进行数据恢复时可以更快地恢复出现故障的数据。此外,利用上述RAID卡可以实现更加灵活的EC方案。此外,如果该RAID卡所在的存储装置的主机模块出现故障,可以通过其他存储节点对该存储装置保存的数据进行读/写操作。
结合第二方面,在一种可能的设计中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
结合第二方面,在一种可能的设计中,该对接收到的命令进行处理,包括:在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。上述技术方案可以减少因多个I/O命令对相同的数据进行读写造成的冲突。
结合第二方面,在一种可能的设计中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P1个该I/O命令已处理完成,且P2个该I/O命令已超时,其中P为大于或等于2的正整数,P1和P2为大于或等于1且小于P的正整数,且P1和P2的和为P。
结合第二方面,在一种可能的设计中,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,该方法还包括:停止接收来自于该第n个前端模块的该I/O命令。
结合第二方面,在一种可能的设计中,该方法还包括:该控制模块在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
结合第二方面,在一种可能的设计中,该方法还包括:该第n个前端模块向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;该控制模块保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
第三方面,本申请实施例提供一种存储装置,该存储装置包括如第一方面或第一方面任一种可能的设计中的RAID卡,该存储装置还包括多个磁盘。
第四方面,本申请实施例提供一种存储系统,该存储系统包括多个如第三方面所述的存储装置。
附图说明
图1是一个单主机+单存储系统的存储节点的示意图。
图2是一个多主机+单存储系统的存储节点的示意图。
图3是一个存储池系统的示意图。
图4是一个存储装置的示意图。
图5是根据本申请实施例提供的一种RAID卡的示意性结构框图。
图6是根据本申请实施例提供的一个存储池系统的示意图。
图7是根据本申请实施例提供的处理命令的方法的示意性流程图。
图8是根据本申请实施例提供的一种RAID卡的示意性结构框图。
图9是根据本申请实施例提供的一种处理命令的方法的示意性流程图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。
另外,在本申请实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
本申请实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例中,有时候下标如W1可能会笔误为非下标的形式如W1,在不强调其区别时,其所要表达的含义是一致的。
本申请实施例描述的网络架构以及业务场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
用户可以通过计算机设备对存储池系统中的数据进行读、写操作,也可以对存储池系统中的存储资源管理,例如创建逻辑单元号(logical unit number,LUN)、删除LUN等。用户操作的用于访问存储池系统的设备可以称为客户端设备。该客户端设备可以是台式计算机、笔记本电脑、平板电脑、服务器等,本身实施例对此并不进行限定。在一些实施例中,“用户访问存储装置”这样的描述可以被理解为“用户通过客户端设备访问存储装置”,“用户管理存储资源”可以被理解为“用户通过客户端设备管理存储资源”。
为了便于本领域人员更好地理解本申请的技术方案,首先对涉及本申请的技术方案的一些相关概念进行介绍。
1,存储池系统、存储节点、存储系统、存储装置、独立磁盘冗余阵列(redundantarray of independent disks,RAID)系统和物理磁盘
一个存储池系统可以包括多个存储节点。例如,如图3所示的存储池系统300包括多个存储节点。
一个存储节点中可以包括一个存储系统。例如,如图1所示的存储节点100包括一个存储系统110。
一个存储系统可以包括多个存储装置。例如,如图1所示的存储系统110包括三个存储装置,分别为存储装置111、存储装置112和存储装置113。
一个存储装置中可以包括一个或多个物理磁盘。如果一个存储装置中包括多个物理磁盘,那么该多个物理磁盘可以组成RAID系统。
除非特殊说明,本申请实施例中所称的磁盘都是指物理磁盘。例如,下文中的磁盘401、磁盘402、磁盘403和磁盘404、工作磁盘和镜像磁盘都是物理磁盘。
2,RAID
RAID技术将一个个单独的物理磁盘以不同的组合方式形成一个逻辑硬盘,从而提高了物理磁盘读取的性能和数据的安全性。不同的组合方式用RAID级别来标识。常见的RAID级别包括RAID 0、RAID 1、RAID 2等。
不同RAID级别代表着不同的存储性能、数据安全性和存储成本。
以RAID 0为例,RIAD 0将数据分成一定的大小顺序的写到阵列的物理磁盘里,RAID 0可以并行的执行读写操作,可以充分利用总线的带宽,理论上讲,一个由X个物理磁盘组成的RAID 0系统,它的读写性能将是单个物理磁盘读取性能的X倍(X为大于1的正整数),且磁盘空间的存储效率最大(100%)。但是,RAID 0有一个明显的缺点:不提供数据冗余保护,一旦数据损坏,将无法恢复。
以RAID 1为例,RAID 1将数据完全一致的分别写到工作磁盘和镜像磁盘,因此它的磁盘空间利用率为50%,在数据写入时时间会有影响,但是读的时候没有任何影响,RAID0提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。
图4是一个存储装置的示意图。如图4所示的存储装置400中包括四个磁盘,分别为磁盘401、磁盘402、磁盘403和磁盘404。该四个磁盘可以组成一个RAID系统。假设该四个磁盘中每个磁盘的容量均为16太字节(Terabyte,TB)。如果该RAID系统是RAID 0,则存储装置400的总容量为64TB;如果该RAID系统是RAID 1,则存储装置400的总容量为32TB。
如图4所示,磁盘401至磁盘404与RAID卡410相连。RAID卡是用于实现RAID功能硬件。RAID卡410可以包括多个接口,该多个接口中的每个接口用于连接一个磁盘。例如,RAID卡410可以包括接口411、接口412、接口413和接口414。磁盘401连接至接口411,磁盘402连接至接口412,磁盘403连接至接口413,磁盘404连接至接口414。
如图4所示的存储装置400可以是如图1所示的存储节点100或如图2所示的存储节点200中的一个存储装置。RAID卡410可以接收来自于存储节点的主机的命令并对该处理接收到的命令。例如,如果RAID卡410接收到的命令是读取命令,则RAID卡可以从保存有该读取命令需要读取的数据的磁盘中获取相应的数据,并将获取到的数据发送至主机。又如,如果RAID卡410接收到的是LUN创建命令,则创建相应的LUN。
3,纠删码(erasure code,EC)
在传统的RAID中,仅支持少量的磁盘分布。当系统中存在多个分发点和多节点时,RAID将无法满足需求。比如RAID 5只支持一个磁盘失效,RAID 6支持两个磁盘失效。EC可以支持多个盘失效。
可以将x份原始数据,增加y份数据(x和y均为正整数),并能通过x+y份中的任意x份数据,还原为原始数据。这x+y份数据可存放在不同的节点上,如果有任意小于y份的数据失效,仍然能通过剩下的数据还原出来。也就是说,通过x+y的EC编码,能容y块数据故障的场景,这时候的存储成本是1+y/x,通常y<x。保存一份数据的节点可以称为EC节点。在如图3所示的存储池系统300中,可以以一个存储节点保存的数据作为一份数据。在此情况下,一个存储节点可以作为一个EC节点。如图3所示的第一类存储节点就是用于保存上文所述的x份原始数据的EC节点,第二类存储节点是用于保存上文所述的基于x份原始数据增加的y份备份数据的EC节点。如果组成存储池系统的存储节点是如图1或图2所示的存储节点,那么只能以存储节点为粒度进行EC。在此情况下,一个存储节点相当于一个EC节点。导致这一结果的主要原因是每个存储节点的存储装置保存的数据只能通过该存储节点自身的主机访问。所以,如果存储节点的主机出现故障,那么该存储节点中保存的数据将无法被访问。因此,需要通过其他存储节点恢复该存储节点保存的数据。
图5是根据本申请实施例提供的一种RAID卡的示意性结构框图。如图5所示的RAID卡500包括前端模块501、前端模块502、前端模块503和前端模块504。RAID卡500还包括控制模块510。
前端模块501至前端模块504用于接收来自于不同主机模块的命令,并将接收到的命令发送至控制模块501。控制模块510用于接收前端模块501发送的命令,并对接收到的命令进行处理。
可以理解的是,RAID卡500还包括用于连接至主机模块的接口(可以称为上行接口)和用于连接磁盘的接口(可以称为下行接口)。前端模块501至504中的每个前端模块通过各自对应的上行接口与主机模块相连,通过该上行接口接收来自于主机模块的命令,通过该上行接口将对应于该命令的反馈信息发送至该主机模块。类似的,控制模块501可以通过下行接口与磁盘相连,通过该下行接口将接收到的命令发送至磁盘,通过该下行接口接收来自于磁盘的反馈信息。
图6是根据本申请实施例提供的一个存储池系统的示意图。如图6所示的存储池系统包括存储节点610、存储节点620、存储节点630和存储节点640。存储节点610中包括主机模块611,存储节点620包括主机模块621,存储节点630包括主机模块631,存储节点640包括主机模块641。存储节点610、存储节点620、存储节点630和存储节点640中的每个存储节点可以包括多个存储装置,该多个存储装置中的每个存储装置可以包括一个如图5所示的RAID卡。但是为了便于描述,图6中仅示出了存储节点610包括的多个存储装置中一个存储装置612。
如图6所示,存储装置612包括RAID卡500、磁盘613、磁盘614、磁盘615和磁盘616。
前端模块501可以接收来自于主机模块611的命令。为了便于描述,来自于主机模块611的命令统称为命令A。来自主机模块611的多个命令可以分别称为命令A1、命令A2、命令A3,以此类推。
前端模块502可以接收来自于主机模块621的命令。为了便于描述,来自于主机模块621的命令统称为命令B。来自主机模块621的多个命令可以分别称为命令B1、命令B2、命令B3,以此类推。
前端模块503可以接收来自于主机模块631的命令,为了便于描述,来自于主机模块631的命令统称为命令C。来自主机模块631的多个命令可以分别称为命令C1、命令C2、命令C3,以此类推。
前端模块504可以接收来自于主机模块641的命令。为了便于描述,来自于主机模块641的命令统称为命令D。来自主机模块641的多个命令可以分别称为命令D1、命令D2、命令D3,以此类推。
主机模块向前端模块发送的命令是来自于用户控制的客户端设备。
根据命令的功能,命令可以分为读写(input/output,IO)命令和管理命令。I/O命令用于读取存储装置中保存的数据或者向存储装置中写入数据。管理命令用于管理存储装置。管理命令可以包括查询LUN、LUN创建命令、删除LUN、修改LUN参数、查询物理参数等。
根据命令是否能被并行处理,命令可以分为I/O命令、第一类管理命令和第二类管理命令。第一类管理命令是可以与I/O命令并行处理的管理命令;第二类管理命令是无法与I/O命令并行处理的管理命令。第一类管理命令包括查询类命令(例如查询LUN、查询物理参数等);第二类管理命令包括与存储资源的配置相关的命令,例如LUN创建命令、删除LUN、修改LUN参数等。
前端模块可以通过队列管理接收到的命令。前端模块可以将接收到的命令加入队列中,并将队列中的命令发送至控制模块。每个队列可以有身份信息,不同的队列的身份信息是不同的。
在一些实施例中,前端模块在向控制模块发送命令的同时可以将该命令所在的队列的身份信息一同发送至控制模块。
例如,前端模块501接收到命令A1,并通过队列1管理命令A1。假设队列1的身份信息为Q1。那么,前端模块501可以将命令A1和队列1的身份信息Q1一同发送至控制模块510。为了便于描述,可以将用于携带命令和队列的身份信息的信息称为命令处理信息。前端模块501在接收到该命令处理信息后,可以根据该命令处理信息中的命令A1以及身份信息Q1,建立命令和身份信息的对应关系,并保存建立的对应关系。前端模块501可以将命令A1下发至相应的磁盘,并接收该磁盘反馈与命令A1对应的反馈信息R1。前端模块501根据保存的命令和身份信息的对应关系,确定对应于该反馈信息R1的身份信息Q1,将反馈信息R1发送至身份信息Q1对应的前端模块501。前端模块501可以将反馈信息R1发送至发送了命令A1的主机模块。
如上所述,不同的前端模块可以通过不同的接口与控制模块501通信。不同的端口可以有不同的端口标识(identification,ID)。因此,在另一些实施例中,控制模块在接收到前端模块发送的命令时,记录接收该命令的端口ID,并建立并保存命令和端口ID的对应关系。这样,控制模块在接收到磁盘发送的对应于该命令的反馈信息后,可以根据保存的命令和端口ID的对应关系,确定将该反馈信息发送至相应的前端模块(即发送了对应于该反馈信息的命令的前端模块)。该前端模块在接收到该反馈信息后可以将该反馈信息发送至相应的主机模块。
如图6所示,RAID卡500可以与来自于不同的存储节点的主机模块进行通信。这样,即使RAID卡500所在的存储节点的主机模块611出现故障,用户可以通过其他存储节点对存储节点610中的存储装置612中保存的数据进行读/写操作,或者管理存储装置612的存储资源。在此情况下,在进行EC的时候可以以存储装置为粒度进行EC。换句话说,一个存储装置相当于是一个EC节点。与现有技术相比(一个存储节点是一个EC节点),EC节点存储的数据量大大减少,这样在进行数据恢复的时候可以更快地恢复出出现故障的EC节点中的数据。
此外,利用RAID卡500实现EC时,EC的方案可以更加灵活。
还以图6所示的存储池系统为例,该存储池系统包括四个存储节点,假设每个存储节点都包括四个存储装置。这样,存储池系统总共包括16个存储装置。如前所述,通常情况下第一类节点(即用于保存原始数据的节点)的数目要大于第二类节点(即用于保存备份数据的节点)。
如果以存储节点作为EC节点,那么EC方案只能有一种,即四个存储节点中只能有一个第二类节点,另外三个作为第一类节点。在此情况下,EC利用率为3/4。
如果以存储装置作为EC节点,那么EC的方案可以有多种。例如,16个存储装置中的12个存储装置作为第一类节点,另外4个存储装置作为第二类节点;又如,16个存储装置中的14个存储装置作为第一类节点,另外2个存储装置作为第二类节点;又如16个存储装置中的13个存储装置作为第一类节点,另外3个存储装置作为第二类节点。
由此可见,以存储装置作为EC节点可以实现更加灵活的EC方案。并且,以存储装置作为EC节点的某些EC方案的EC利用率要大于以存储节点作为EC节点的EC方案的EC利用率。如上所述,如果以存储节点作为EC节点,那么EC利用率为3/4;如果以存储装置为EC节点,且EC方案为16个存储装置中的14个存储装置作为第一类节点,另外2个存储装置作为第二类节点,那么EC利用率为14/16,14/16>3/4。
下面结合图7对RAID卡500如何处理接收到的命令进行介绍。
图7是根据本申请实施例提供的处理命令的方法的示意性流程图。
701,前端模块501至前端模块504接收对应的主机模块发送的一个命令。
例如,前端模块501接收主机模块611发送的命令A1;前端模块502接收主机模块621发送的命令B1;前端模块503接收主机模块631发送的命令C1;前端模块504接收主机模块641发送的命令D1。
这四条命令(即命令A1、命令B1、命令C1和命令D1)可能是以下任一种情况:
情况1:四条命令都是I/O命令;
情况2:四条命令都是第一类管理命令;
情况3:四条命令都是第二类管理命令;
情况4:四条命令中的部分命令是I/O命令,另一部分命令是第一类管理命令;
情况5:四条命令中的部分命令是I/O命令,另一部分命令是第二类管理命令;
情况6:四条命令中的部分命令是I/O命令,部分命令是第一类管理命令,其余命令是第二类管理命令;
情况7:四条命令中的部分命令是第一类管理命令,另一部分命令是第二类管理命令。
702,前端模块501至前端模块504将接收到的命令发送至控制模块510。换句话说,控制模块510接收来自于前端模块501的命令A1,接收来自于前端模块502的命令B1,接收来自于前端模块503的命令C1以及接收来自于前端模块504的命令D1。
703,管理模块510根据接收到的命令的类型,对接收到的命令进行处理。
如上所述,管理模块510接收到的命令的类型可能是上述七种情况中的任意一种。
1)如果管理模块510接收到的命令的类型是上述情况1,即四条命令都是I/O命令。
管理模块510可以将四个I/O命令中的一个进行下盘处理并缓存其余三个I/O命令。
可选的,在一些实施例中,管理模块510可以随机选取一个I/O命令进行下盘处理,并缓存未选取的其余三个I/O命令。
可选的,在另一些实施例中,管理模块510可以根据优先级选择需要进行下盘处理的I/O命令。
例如,在一些实施例中,不同的前端模块的优先级不同。例如,前端模块501的优先级高于前端模块502的优先级,前端模块502的优先级高于前端模块503的优先级,前端模块503的优先级高于前端模块504的优先级。又如,前端模块501的优先级高于前端模块502的优先级,前端模块502、前端模块503和前端模块504的优先级相同。在此情况下,该管理模块510可以选择来自于优先级最高的前端模块的I/O命令进行下盘处理。
又如,在另一些实施例中,不同类型的I/O命令的优先级不同。例如,写命令的优先级高于读命令的优先级。在此情况下,该管理模块510可以先选择将写命令进行下盘处理。如果同时接收到了多个写命令,那么可以随机选取一个写命令进行下盘处理。
假设命令A1、命令B1、命令C1和命令D1都是I/O命令。管理模块510根据优先级或者随机选取命令A1进行下盘处理,并缓存命令B1、命令C1和命令D1。
管理模块510将I/O进行下盘处理的方式与现有的将I/O进行下盘处理的方式相同,例如可以对I/O命令进行排序、合并、拆分等处理,将处理后的I/O命令发送至对应的磁盘。为了简洁,排序、合并、拆分的实现方式在此就不再赘述。
可以理解的是,对I/O命令进行排序和合并处理需要针对多个I/O命令。该多条I/O命令都来自于同一个前端模块。
可选的,在一些实施例中,管理模块510在确定需要将命令A1发送至磁盘的情况下,停止从除前端模块501以外的其他前端模块接收I/O命令,继续接收来自于前端模块501的I/O命令,将接收到的I/O命令和步骤702中接收到的I/O命令进行排序、合并操作。例如,管理模块510继续接收到的命令是命令A2。那么管理模块510可以对命令A1和命令A2进行排序、合并处理,将处理后的I/O命令发送至相应的磁盘。
可选的,在另一些实施例中,管理模块510在确定需要对命令A1进行排序、合并处理的情况下,可以先缓存命令A1并继续根据优先级或随机选取另一个I/O命令进行下盘处理,直到对四个I/O命令均完成下盘处理。然后,管理模块510可以再次接收来自四个前端模块下发的命令。如果来自于前端模块501的命令是I/O命令(假设为命令A2),那么管理模块510可以将命令A1和命令A2进行排序、合并处理,将处理后的I/O命令发送至相应的磁盘。
可以理解的是,上述仅描述了如何获取两个需要进行排序和合并处理的I/O命令,管理模块510也可以对两个以上的I/O命令进行排序、合并处理,如何获取两个以上的需要进行排序和合并处理的I/O命令的获取方式与上述方式相同,为了简洁,就不再赘述。
管理模块510在将处理后的I/O命令发送至磁盘后,可以接收磁盘发送的对应的反馈信息(例如需要读取的数据或者写入成功的反馈),并将接收到的反馈信息发送至对应的前端模块。管理模块510如何发送反馈信息的具体实现方式已在上文描述,为了简洁,就不再重复。
在一些实施例中,管理模块510在完成与选取的I/O命令的对应的I/O操作之前,可以停止接收来自于其他前端模块的I/O命令。还以命令A1作为选取的I/O命令为例,假设对应命令A1的反馈信息为R1。管理模块510在将反馈信息R1发送至前端模块501之前,可以停止接收来自于前端模块502、前端模块503和前端模块504的I/O命令。这样,可以避免同时对多个I/O命令进行下盘处理导致的存储异常的情况发生。
在另一些实施例中,管理模块510在完成与选取的I/O命令对应的I/O操作之前,也可以继续接收来自于其他前端模块的I/O命令。但是,管理模块510在接收了来自于其他前端模块的I/O命令后,并不处理这些I/O命令,只是将这些I/O命令缓存下来,待I/O通道切换后再处理来自于其他前端模块的I/O命令。
在一些实施例中,管理模块510在完成与选取的I/O命令的对应的I/O操作之前,可以继续接收来自于四个前端模块的第一类管理命令,并处理接收到的第一类管理命令。
为了便于描述,以下引入管理通道、I/O通道、管理命令子模块和I/O命令子模块四个概念。管理命令子模块和I/O命令子模块是管理模块510的子模块。管理命令子模块负责处理管理命令,I/O命令子模块负责处理I/O命令。I/O命令通过I/O通道发送至I/O命令子模块,管理命令通过管理通道发送至管理命令子模块。
I/O通道与前端模块是一一对应的。换句话说,RAID卡500中可以包括四个I/O通道,分别为I/O通道1、I/O通道2、I/O通道3和I/O通道4,其中前端模块501的I/O命令通过I/O通道1发送至I/O命令子模块,前端模块502的I/O命令通过I/O通道2发送至I/O命令子模块,前端模块503的I/O命令通过I/O通道3发送至I/O子模块,前端模块504的I/O命令通过I/O通道4发送至I/O子模块。
类似的,管理通道与前端模块一一对应。RAID卡500中可以包括四个管理通道,分别为管理通道1、管理通道2、管理通道3和管理通道4,其中前端模块501的管理命令通过管理通道1发送至管理命令子模块,前端模块502的管理命令通过管理通道2发送至管理命令子模块,前端模块503的管理命令通过管理通道3发送至管理子模块,前端模块504的管理命令通过管理通道4发送至管理子模块。
在一些实施例中,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以停止通过I/O通道2至I/O通道4接收I/O命令,但可以继续通过I/O通道1接收来自于前端模块501的I/O命令。并且,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以继续通过管理通道1至管理通道4接收管理命令。换句话说,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,关闭I/O通道2至I/O通道4,并保持I/O通道1以及管理通道1至4处于开启状态。
在另一些实施例中,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以停止通过I/O通道2至I/O通道4接收I/O命令,但可以继续通过I/O通道1接收来自于前端模块501的I/O命令。并且,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,可以继续通过管理通道1接收管理命令,但是停止通过管理通道2至管理通道4接收管理命令。换句话说,I/O命令子模块在处理来自于I/O通道1的命令A1的过程中,关闭I/O通道2至I/O通道4以及管理通道2至管理4,并保持I/O通道1以及管理通道1处于开启状态。
在处理来自于I/O通道1的命令A1的过程中,如果管理命令子模块接收到的是第一类管理命令,则该管理命令子模块可以处理接收到的管理命令。例如,该管理命令子模块可以获取查询信息对应的相关信息,并将获取到的信息反馈给相应的前端模块。管理命令子模块处理查询信息的具体实现方式与现有的处理查询信息的具体方式相同,为了简洁,在此就不再赘述。
在处理来自于I/O通道1的命令A1的过程中,如果管理命令子模块接收到的是第二类管理命令,则该管理命令子模块可以不处理接收到的管理命令。这样可以避免在执行读写操作同时对存储资源的操作导致的异常发生。
在一些实施例中,管理模块510可以在接收到的来自于前端模块501的I/O命令满足目标条件的情况下,开始从其他前端模块接收命令,并停止从该其他前端模块以外的前端模块接收命令。
例如,管理模块510可以在接收到的来自于前端模块501的I/O命令满足目标条件的情况下,开始从前端模块502接收命令,并停止从该前端模块502以外的前端模块接收命令。
在一些实施例中,管理模块510确定来自于前端模块501的I/O命令满足目标条件包括:管理模块510确定来自于前端模块501的全部I/O命令都已经完成处理。换句话说,管理模块510完成了来自于前端模块501的I/O命令对应的读/写操作,并将反馈信息发送至前端模块501。在此情况下,管理模块510可以确定来自于前端模块501的I/O命令满足目标条件。
在另一些实施例中,管理模块510确定来自于前端模块501的I/O命令满足目标条件包括:管理模块510确定来自于前端模块501的部分I/O命令都已经完成处理,另一部分I/O命令超时。
例如,假设管理模块510接收到自于前端模块501的I/O命令,分别为命令A1至命令A10。管理模块510可以在命令A1至命令A8已经完成处理并且确定命令A9和命令A10超时的情况下,确定来自于前端模块501的I/O命令满足目标条件。管理模块510在确定命令A9和命令A10超时的情况下,可以向前端模块501发送超时指示A9和超时指示A10,超时指示A9用于指示命令A9超时,超时指示A10用于指示命令A10超时。换句话说,管理模块510完成了命令A1至命令A8对应的读/写操作并且确定命令A9和命令A10超时,并将反馈信息和超时指示发送至前端模块501。在此情况下,管理模块510可以确定来自于前端模块501的I/O命令满足目标条件。超时指示可以和命令一一对应。例如,上述实施例中命令A9和命令A10超时。在此情况下,管理模块510向前端模块501发送了两个超时指示,这两个超时指示分别用于指示命令A9和命令A10超时。前端模块501在接收到超时指示后,可以将超时指示反馈给对应的主机模块(即主机模块611)。
在另一些实施例中,管理模块510确定来自于前端模块501的I/O命令满足目标条件包括:管理模块510确定来自于前端模块501的部分I/O命令都已经完成处理,另一部分I/O命令被丢弃。
例如,假设管理模块510接收到自于前端模块501的I/O命令,分别为命令A1至命令A10。管理模块510可以在命令A1至命令A8已经完成处理并且命令A9和命令A10被丢弃的情况下,确定来自于前端模块501的I/O命令满足目标条件。换句话说,管理模块510完成了命令A1至命令A8对应的读/写操作,并将反馈信息发送至前端模块501并丢弃了命令A9和命令A10。在此情况下,管理模块510可以确定来自于前端模块501的I/O命令满足目标条件。
在一些实施例中,管理模块510可以接收来自于前端模块的切换请求,该切换请求用于指示停止接收来自于前端模块501的I/O命令,并从其他前端模块接收I/O命令。在此情况下,管理模块510停止接收来自于前端模块501的I/O命令,确定已接收到的来自于前端模块501的I/O命令是否全部处理完成,如果全部处理完成,则确定满足上述目标条件。在一些实施例中,如果在接收到该切换请求时有部分接收到的来自在于前端模块501的I/O命令未处理完成,则可以确定尚未处理完成的I/O命令超时并向前端模块501发送超时指示。在此情况下,管理模块501可以确定满足上述目标条件。在另一些实施例中,如果在接收到该切换请求时有部分接收到的来自在于前端模块501的I/O命令未处理完成,则丢弃未处理完的I/O命令并在确定这些I/O命令被成功丢弃后,确定满足上述目标条件。
在另一些实施例中,管理模块510在开始处理来自于前端模块501的I/O命令时启动一个定时器,并在该定时器到达预设时间的情况下,停止接收来自于前端模块501的I/O命令,确定已接收到的来自于前端模块501的I/O命令是否全部处理完成,如果全部处理完成,则确定满足上述目标条件。在一些实施例中,如果该定时器到达预设时间时,有部分接收到的来自在于前端模块501的I/O命令未处理完成,则可以确定尚未处理完成的I/O命令超时并向前端模块501发送超时指示。在此情况下,管理模块501可以确定满足上述目标条件。在另一些实施例中,如果在该定时器到达预设时间时有部分接收到的来自在于前端模块501的I/O命令未处理完成,则可以丢弃未处理完的I/O命令并在确定这些I/O命令被成功丢弃后,确定满足上述目标条件。不同的前端模块对应的预设时间可以相同也可以不同。
在另一些实施例中,管理模块510可以在确定最新接收到的来自于前端模块501的I/O命令出现问题(例如I/O命令本身有问题、传输该I/O命令是产生错误)。在此情况下,管理模块510可以停止继续接收来自于前端模块501的I/O命令,确定除最新接收的来自于前端模块501的I/O命令以外的I/O命令是否已全部处理完成。如果除最新接收的来自于前端模块501的I/O命令以外的I/O命令均已处理完成,则丢弃最新接收到的I/O命令,或者可以确定最新接收到的I/O命令超时并将超时指示反馈给前端模块。在此情况下,可以确定满足上述目标条件。
2)如果管理模块510接收到的命令的类型是上述情况2,即四条命令都是第一类管理命令。
在一些实施例中,管理模块510可以同时处理四条第一类管理命令。
在另一些实施例中,管理模块510可以依次处理该四条第一类管理命令。例如,可以按照优先级顺序或者随机依次处理该四条第一类管理命令。
如果在管理模块510处理第一类管理命令的过程中接收到一条或多条I/O命令,那么可以按照处理情况4的方式进行处理。
如果在管理模块510处理第一类管理命令的过程中接收到一条或多条第二类管理命令,那么可以按照处理情况7的方式进行处理。
如果在管理模块510处理第一类管理命令的过程中接收到一条或多条第二类管理命令以及一条或多条I/O命令,那么可以按照处理情况6的方式进行处理。
3)如果管理模块510接收到的命令的类型是上述情况3,即四条命令都是第二类管理命令。
在此情况下,管理模块510可以参照情况1的方式处理四条第二类管理命令。换句话说,管理模块510随机或按照优先级的方式分别处理这四条第二类管理命令。管理模块510不会同时处理四条第二类管理命令。这样可以避免在管理资源配置过程中发生冲突。
如果在管理模块510处理第二类管理命令的过程中接收到一条或多条I/O命令,那么可以按照处理情况5的方式进行处理。
如果在管理模块510处理第二类管理命令的过程中接收到一条或多条第一类管理命令,那么可以按照处理情况7的方式进行处理。
如果在管理模块510处理第二类管理命令的过程中接收到一条或多条第一类管理命令以及一条或多条I/O命令,那么可以按照处理情况6的方式进行处理。
4)如果管理模块510接收到的命令的类型是上述情况4,即四条命令中的部分命令是I/O命令,另一部分命令是第一类管理命令。
情况4还可能存在以下两种情况:
情况4.1,四条命令中只有一条I/O命令,剩下三条都是第一类管理命令;
情况4.2,四条命令中有两条或三条I/O命令,剩下的命令是第一类管理命令。
对于情况4.1,管理模块510可以对该I/O命令进行下盘处理,并且在对该I/O命令进行下盘处理的同时,处理其余的三条第一类管理命令中的部分或全部。
对于情况4.2,管理模块510可以对多条I/O命令的处理方式可以参照情况1的处理方式。管理模块510在对该多条I/O命令中的一条I/O命令进行下盘处理的同时,可以同时处理第一类管理命令中的部分或全部。
5)如果管理模块510接收到的命令的类型是上述情况5,即四条命令中的部分命令是I/O命令,另一部分命令是第二类管理命令。
在一些实施例中,管理模块510可以先处理I/O命令,在I/O命令处理完后,再处理第二类管理命令。
可以理解的是,如果四条命令中的I/O命令数目大于或等于2,则管理模块可以参照情况1的方式处理该多条I/O命令。
在另一些实施例中,管理模块510可以先处理第二类管理命令,在第二类管理命令处理完后,在处理I/O命令。
6)如果管理模块510接收到的命令的类型是上述情况6,即四条命令中的部分命令是I/O命令,部分命令是第一类管理命令,其余命令是第二类管理命令。
情况6还可能存在以下几种情况:
情况6.1:两条I/O命令,一条第一类管理命令,一条第二类管理命令;
情况6.2:两条第一类管理命令,一条I/O命令,一条第二类管理命令;
情况6.3:两条第二类管理命令,一条I/O命令,一条第一类管理命令。
对于情况6.1,管理模块510可以先处理两条I/O命令,在完成I/O命令处理后再处理第二类管理命令。管理模块510还可以先处理第二类管理命令,在完成第二类管理命令处理后,再处理两条I/O命令。第一类管理命令可以在处理I/O命令的同时处理。管理模块510处理两条I/O命令的方式可以参照情况1的处理方式。
对于情况6.2,管理模块510可以先处理I/O命令,在完成I/O命令处理后再处理第二类管理命令。管理模块510还可以先处理第二类管理命令,在完成第二类管理命令处理后,再处理I/O命令。第一类管理命令可以在处理I/O命令的同时处理。
对于情况6.3,管理模块510可以先处理I/O命令,在完成I/O命令处理后再处理两条第二类管理命令。管理模块510还可以先处理两条第二类管理命令,在完成第二类管理命令处理后,再处理I/O命令。第一类管理命令可以在处理I/O命令的同时处理。管理模块510处理两条第二类管理命令的方式可以参照情况3的处理方式。
7)如果管理模块510接收到的命令的类型是上述情况7,即四条命令中的部分命令是第一类管理命令,另一部分命令是第二类管理命令。
在一些实施例中,管理模块510可以先处理第二类管理命令,在第二类管理命令处理完之后,再处理第一类管理命令。
在另一些实施例中,管理模块510可以先处理第一类管理命令,在第一类管理命令处理完之后,再处理第二类管理命令。
如果第二类管理命令的数目大于或等于2,那么管理模块510可以参照情况3的处理方式处理该多条第二类管理命令。
图8是根据本申请实施例提供的一种RAID卡的示意性结构框图。如图8所示的RAID卡800包括N个前端模块801。RAID卡800还包括控制模块802。N为大于或等于2的正整数。
N个前端模块801中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该控制模块,该N个主机模块分别属于N个存储装置,n=1,…,N。
控制模块802,用于接收来自于该N个前端模块的命令并对接收到的命令进行处理。
可选的,在一些实施例中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
可选的,在一些实施例中,控制模块802,具体用于在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。
可选的,在一些实施例中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P1个该I/O命令已处理完成,且P2个该I/O命令已超时,其中P为大于或等于2的正整数,P1和P2为大于或等于1且小于P的正整数,且P1和P2的和为P。
可选的,在一些实施例中,控制模块802,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,停止接收来自于该第n个前端模块的该I/O命令。
可选的,在一些实施例中,控制模块802,还用于在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
可选的,在一些实施例中,该第n个前端模块,还用于向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;控制模块802,还用于保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
前端模块801和控制模块802的具体功能和有益效果,可以参见上述实施例,为了简洁,在此就不再赘述。
图9是根据本申请实施例提供的一种处理命令的方法的示意性流程图。
901,RAID卡的N个前端模块中的第n个前端模块接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至该RAID卡中的控制模块,该N个主机模块分别属于N个存储装置,N为大于或等于2的正整数,n=1,…,N。
902,控制模块接收来自于该N个前端模块的命令并对接收到的命令进行处理。
可选的,在一些实施例中,来自于该N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,该控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
可选的,在一些实施例中,该对接收到的命令进行处理,包括:在处理来自于该第n个前端模块的该I/O命令时,停止从除该第n个前端模块以外的其他前端模块接收该I/O命令;在确定来自于该第n个前端模块的该I/O命令满足目标条件的情况下,接收并处理来自于该N个前端模块中的第m个前端模块的该I/O命令并停止从除该第m个前端模块以外的其他前端模块接收该I/O命令,其中m为小于或等于N且不等于n的正整数。
可选的,在一些实施例中,该确定来自于该第n个前端模块的该I/O命令满足目标条件,包括:确定已获取的来自于该第n个前端模块的该I/O命令均已处理完成;或者确定已获取的来自于该第n个前端模块的P个该I/O命令中的P1个该I/O命令已处理完成,且P2个该I/O命令已超时,其中P为大于或等于2的正整数,P1和P2为大于或等于1且小于P的正整数,且P1和P2的和为P。
可选的,在一些实施例中,在该确定来自于该第n个前端模块的该I/O命令满足目标条件之前,该方法还包括:停止接收来自于该第n个前端模块的该I/O命令。
可选的,在一些实施例中,该方法还包括:该控制模块在处理来自于该第n个前端模块的该I/O命令时,接收并处理来自于该N个前端模块中的一个或多个前端模块的该第一类管理命令。
可选的,在一些实施例中,该方法还包括:该第n个前端模块向该控制模块发送命令处理信息,该命令处理信息包括第一命令以及与第一队列的身份信息,其中该第一命令来自于该第n个主机模块,该第一队列是该前端模块中用于管理来自于该第n个主机模块的命令的队列;该控制模块保存该第一队列的身份信息与该第一命令的对应关系;在获取到对应于该第一命令的第一反馈信息的情况下,根据该对应关系,将该第一反馈信息发送至该第n个前端模块。
本申请实施例还提供一种存储装置,该存储装置包括如图8所示的RAID卡,该存储装置还包括多个磁盘。
本申请实施例一种存储系统,其特征在于,该存储系统包括多个存储装置,该多个存储装置中的每个存储装置包括如图8所述的RAID卡。
RAID卡中的各个模块可以由芯片实现。本申请实施例中的芯片可以是编程门阵列(field programmable gate array,FPGA),可以是专用集成芯片(application specificintegrated circuit,ASIC),还可以是系统芯片(system on chip,SoC),还可以是中央处理器(central processor unit,CPU),还可以是网络处理器(network processor,NP),还可以是数字信号处理电路(digital signal processor,DSP),还可以是微控制器(microcontroller unit,MCU),还可以是可编程控制器(programmable logic device,PLD)、其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,或其他集成芯片。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本申请实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(directrambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述任意一个实施例的方法。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行上述任意一个实施例的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (16)

1.一种独立磁盘冗余阵列RAID卡,其特征在于,包括:控制模块和N个前端模块,N为大于或等于2的正整数;
所述N个前端模块中的第n个前端模块,用于接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至所述控制模块,所述N个主机模块分别属于N个存储装置,n=1,…,N;
所述控制模块,用于接收来自于所述N个前端模块的命令并对接收到的命令进行处理。
2.如权利要求1所述的RAID卡,其特征在于,来自于所述N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,所述控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
3.如权利要求2所述的RAID卡,其特征在于,所述控制模块,具体用于在处理来自于所述第n个前端模块的所述I/O命令时,停止从除所述第n个前端模块以外的其他前端模块接收所述I/O命令;
在确定来自于所述第n个前端模块的所述I/O命令满足目标条件的情况下,接收并处理来自于所述N个前端模块中的第m个前端模块的所述I/O命令并停止从除所述第m个前端模块以外的其他前端模块接收所述I/O命令,其中m为小于或等于N且不等于n的正整数。
4.如权利要求3所述的RAID卡,其特征在于,所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件,包括:
确定已获取的来自于所述第n个前端模块的所述I/O命令均已处理完成;或者
确定已获取的来自于所述第n个前端模块的P个所述I/O命令中的P1个所述I/O命令已处理完成,且P2个所述I/O命令已超时,其中P为大于或等于2的正整数,P1和P2为大于或等于1且小于P的正整数,且P1和P2的和为P。
5.如权利要求3或4所述的RAID卡,其特征在于,所述控制模块,在所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件之前,停止接收来自于所述第n个前端模块的所述I/O命令。
6.如权利要求3至5中任一项所述的RAID卡,其特征在于,所述控制模块,还用于在处理来自于所述第n个前端模块的所述I/O命令时,接收并处理来自于所述N个前端模块中的一个或多个前端模块的所述第一类管理命令。
7.如权利要求1至6中任一项所述的RAID卡,其特征在于,所述第n个前端模块,还用于向所述控制模块发送命令处理信息,所述命令处理信息包括第一命令以及与第一队列的身份信息,其中所述第一命令来自于所述第n个主机模块,所述第一队列是所述前端模块中用于管理来自于所述第n个主机模块的命令的队列;
所述控制模块,还用于保存所述第一队列的身份信息与所述第一命令的对应关系;在获取到对应于所述第一命令的第一反馈信息的情况下,根据所述对应关系,将所述第一反馈信息发送至所述第n个前端模块。
8.一种处理命令的方法,其特征在于,所述方法包括:
独立磁盘冗余阵列RAID卡的N个前端模块中的第n个前端模块接收来自于N个主机模块中的第n个主机模块的命令,并将接收到的命令发送至所述RAID卡中的控制模块,所述N个主机模块分别属于N个存储装置,N为大于或等于2的正整数,n=1,…,N;
所述控制模块接收来自于所述N个前端模块的命令并对接收到的命令进行处理。
9.如权利要求8所述的方法,其特征在于,来自于所述N个主机模块的命令的类型包括以下中的任一个或多个输入/输出I/O命令、第一类管理命令,或第二类管理命令,所述控制模块,具体用于根据接收到的命令的类型,对接收到的命令进行处理。
10.如权利要求9所述的方法,其特征在于,所述对接收到的命令进行处理,包括:在处理来自于所述第n个前端模块的所述I/O命令时,停止从除所述第n个前端模块以外的其他前端模块接收所述I/O命令;
在确定来自于所述第n个前端模块的所述I/O命令满足目标条件的情况下,接收并处理来自于所述N个前端模块中的第m个前端模块的所述I/O命令并停止从除所述第m个前端模块以外的其他前端模块接收所述I/O命令,其中m为小于或等于N且不等于n的正整数。
11.如权利要求10所述的方法,其特征在于,所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件,包括:
确定已获取的来自于所述第n个前端模块的所述I/O命令均已处理完成;或者
确定已获取的来自于所述第n个前端模块的P个所述I/O命令中的P1个所述I/O命令已处理完成,且P2个所述I/O命令已超时,其中P为大于或等于2的正整数,P1和P2为大于或等于1且小于P的正整数,且P1和P2的和为P。
12.如权利要求10或11所述的方法,其特征在于,在所述确定来自于所述第n个前端模块的所述I/O命令满足目标条件之前,所述方法还包括:
停止接收来自于所述第n个前端模块的所述I/O命令。
13.如权利要求10至12中任一项所述的方法,其特征在于,所述方法还包括:所述控制模块在处理来自于所述第n个前端模块的所述I/O命令时,接收并处理来自于所述N个前端模块中的一个或多个前端模块的所述第一类管理命令。
14.如权利要求8至13中任一项所述的方法,其特征在于,所述方法还包括:
所述第n个前端模块向所述控制模块发送命令处理信息,所述命令处理信息包括第一命令以及与第一队列的身份信息,其中所述第一命令来自于所述第n个主机模块,所述第一队列是所述前端模块中用于管理来自于所述第n个主机模块的命令的队列;
所述控制模块保存所述第一队列的身份信息与所述第一命令的对应关系;在获取到对应于所述第一命令的第一反馈信息的情况下,根据所述对应关系,将所述第一反馈信息发送至所述第n个前端模块。
15.一种存储装置,其特征在于,所述存储装置包括如权利要求1至7中任一项所述的独立磁盘冗余阵列RAID卡,所述存储装置还包括多个磁盘。
16.一种存储系统,其特征在于,所述存储系统包括多个如权利要求15所述的存储装置。
CN202010788778.9A 2020-08-07 2020-08-07 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统 Active CN114063892B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010788778.9A CN114063892B (zh) 2020-08-07 2020-08-07 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统
EP21853314.9A EP4184306A4 (en) 2020-08-07 2021-07-10 REDUNDANT ARRAY OF INDEPENDENT DISK CARDS, INSTRUCTION PROCESSING METHOD, AND STORAGE DEVICE AND SYSTEM
PCT/CN2021/105633 WO2022028208A1 (zh) 2020-08-07 2021-07-10 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统
US18/164,262 US20230185461A1 (en) 2020-08-07 2023-02-03 Redundant Array of Independent Disks Card, Command Processing Method, and Storage Apparatus and System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010788778.9A CN114063892B (zh) 2020-08-07 2020-08-07 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统

Publications (2)

Publication Number Publication Date
CN114063892A true CN114063892A (zh) 2022-02-18
CN114063892B CN114063892B (zh) 2024-03-26

Family

ID=80116934

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010788778.9A Active CN114063892B (zh) 2020-08-07 2020-08-07 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统

Country Status (4)

Country Link
US (1) US20230185461A1 (zh)
EP (1) EP4184306A4 (zh)
CN (1) CN114063892B (zh)
WO (1) WO2022028208A1 (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101047010A (zh) * 2006-03-29 2007-10-03 国际商业机器公司 用于最大化raid系统中受保护数据量的方法和系统
US20080120463A1 (en) * 2005-02-07 2008-05-22 Dot Hill Systems Corporation Command-Coalescing Raid Controller
CN103827803A (zh) * 2011-10-28 2014-05-28 株式会社日立制作所 用于在存储网络中进行性能优化的计算机系统及管理系统
CN107229423A (zh) * 2017-05-31 2017-10-03 郑州云海信息技术有限公司 数据处理方法、装置以及系统
CN110609659A (zh) * 2018-06-15 2019-12-24 三星电子株式会社 用于执行读取命令的NVMeoF RAID实现方法
CN110879761A (zh) * 2018-09-05 2020-03-13 华为技术有限公司 硬盘故障处理方法、阵列控制器及硬盘

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage
US7730257B2 (en) * 2004-12-16 2010-06-01 Broadcom Corporation Method and computer program product to increase I/O write performance in a redundant array
CN101976181A (zh) * 2010-10-15 2011-02-16 杭州宏杉科技有限公司 一种存储资源的管理方法及管理装置
CN107632947A (zh) * 2017-09-12 2018-01-26 记忆科技(深圳)有限公司 一种智能raid数据保护系统
US11054991B2 (en) * 2018-03-21 2021-07-06 Western Digital Technologies, Inc. Data storage system scale-out with local address remapping

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080120463A1 (en) * 2005-02-07 2008-05-22 Dot Hill Systems Corporation Command-Coalescing Raid Controller
CN101047010A (zh) * 2006-03-29 2007-10-03 国际商业机器公司 用于最大化raid系统中受保护数据量的方法和系统
CN103827803A (zh) * 2011-10-28 2014-05-28 株式会社日立制作所 用于在存储网络中进行性能优化的计算机系统及管理系统
CN107229423A (zh) * 2017-05-31 2017-10-03 郑州云海信息技术有限公司 数据处理方法、装置以及系统
CN110609659A (zh) * 2018-06-15 2019-12-24 三星电子株式会社 用于执行读取命令的NVMeoF RAID实现方法
CN110879761A (zh) * 2018-09-05 2020-03-13 华为技术有限公司 硬盘故障处理方法、阵列控制器及硬盘

Also Published As

Publication number Publication date
CN114063892B (zh) 2024-03-26
US20230185461A1 (en) 2023-06-15
EP4184306A1 (en) 2023-05-24
EP4184306A4 (en) 2023-12-27
WO2022028208A1 (zh) 2022-02-10

Similar Documents

Publication Publication Date Title
CN107807794B (zh) 一种数据存储方法和装置
US9021178B2 (en) High performance path for command processing
EP3522042A1 (en) Method and apparatus for information processing, server and computer readable medium
CN107436733B (zh) 分片管理方法和分片管理装置
US8433888B2 (en) Network boot system
US20090210618A1 (en) Apparatus and method to allocate resources in a data storage library
US7653830B2 (en) Logical partitioning in redundant systems
US8886845B1 (en) I/O scheduling system and method
US8275951B2 (en) Local bitmaps for an array of redundant storage devices
US5860003A (en) I/O controller software with each I/O command having a plurality of nets, each with a group of threads
CN116107516B (zh) 数据写入方法、装置、固态硬盘、电子设备及存储介质
US20190347165A1 (en) Apparatus and method for recovering distributed file system
US10860224B2 (en) Method and system for delivering message in storage system
CN116501259A (zh) 磁盘组双活同步方法、装置、计算机设备及存储介质
CN114063892B (zh) 独立磁盘冗余阵列卡,处理命令的方法,存储装置和系统
CN114527936B (zh) 一种服务器高性能磁盘分布式存储方法及装置
CN116360680A (zh) 用于在存储系统中执行复制恢复操作的方法和系统
US11500741B2 (en) Data write method and storage system
US11204829B2 (en) Systems and methods for an ECC architecture with prioritized task queues
CN113424262A (zh) 一种存储校验方法及装置
US7421420B2 (en) Method for device selection
CN110908602A (zh) 分布式存储系统的数据写入方法、装置、设备及存储介质
CN112445413A (zh) 一种数据存储的方法、装置及相关设备
CN117472597B (zh) 输入输出请求处理方法、系统、电子设备及存储介质
US11144453B2 (en) Unmap to initialize sectors

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