CN106919339A - 一种硬盘阵列及硬盘阵列处理操作请求的方法 - Google Patents

一种硬盘阵列及硬盘阵列处理操作请求的方法 Download PDF

Info

Publication number
CN106919339A
CN106919339A CN201510995549.3A CN201510995549A CN106919339A CN 106919339 A CN106919339 A CN 106919339A CN 201510995549 A CN201510995549 A CN 201510995549A CN 106919339 A CN106919339 A CN 106919339A
Authority
CN
China
Prior art keywords
hard disk
controller
caching
disk array
output interface
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
CN201510995549.3A
Other languages
English (en)
Other versions
CN106919339B (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 CN201510995549.3A priority Critical patent/CN106919339B/zh
Publication of CN106919339A publication Critical patent/CN106919339A/zh
Application granted granted Critical
Publication of CN106919339B publication Critical patent/CN106919339B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供一种硬盘阵列及硬盘阵列处理操作请求的方法,涉及存储技术领域,能够避免控制器的CPU出现瓶颈,保证硬盘阵列的性能不受限制。该硬盘阵列包括交换设备以及与交换设备连接的输入输出接口、第一控制器和多个硬盘,多个硬盘均包含缓存;其中,输入输出接口用于经交换设备向第一控制器发送操作请求,并经交换设备接收第一控制器发送的操作请求待操作的数据在目标硬盘的缓存中的地址,以及根据该地址,经交换设备对该地址执行操作请求;第一控制器用于经交换设备接收输入输出接口发送的操作请求,且根据操作请求和第一控制器的缓存与多个硬盘的缓存之间的映射关系确定该地址,以及经交换设备向输入输出接口发送该地址。

Description

一种硬盘阵列及硬盘阵列处理操作请求的方法
技术领域
本发明涉及存储技术领域,尤其涉及一种硬盘阵列及硬盘阵列处理操作请求的方法。
背景技术
如图1所示,为一种硬盘阵列的示意图,该硬盘阵列包括控制器10和多个硬盘11。在图1中,当某个业务服务器12需要对硬盘阵列读或写数据时,读或写的数据在业务服务器12和硬盘11之间需经过控制器10的中央处理器(英文:central processing unit,缩写:CPU)的搬移。具体的,以业务服务器12需要在硬盘阵列中写入数据为例,业务服务器12向控制器10发送写操作请求,写操作请求中携带待写数据,由控制器10的CPU将该待写数据缓存到控制器10的缓存(英文:cache)中,然后控制器10的CPU再将该待写数据搬移到硬盘11的缓存中,最后再由硬盘11的CPU将该待写数据写入硬盘的存储空间(例如可以为NAND flash等),从而完成该待写数据的写入。
然而,在上述写入数据的过程中,由于该待写数据从业务服务器到硬盘需经过控制器的CPU的搬移,且控制器的CPU的处理能力有限,因此当需要同时写入数据比较多时,控制器的CPU可能会出现瓶颈,从而使得硬盘阵列的性能受到限制,业务服务器从硬盘阵列读取数据同样存在上述问题。
发明内容
本发明的实施例提供一种硬盘阵列及硬盘阵列处理操作请求的方法,能够避免控制器的CPU出现瓶颈,从而保证硬盘阵列的性能不受限制。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,本发明实施例提供一种硬盘阵列,包括:
输入输出接口,与所述输入输出接口连接的交换设备,以及与所述交换设备连接的第一控制器和多个硬盘,所述多个硬盘均包含缓存;其中,
所述输入输出接口,用于经所述交换设备向所述第一控制器发送操作请求,并经所述交换设备接收所述第一控制器发送所述操作请求待操作的数据在目标硬盘的缓存中的地址,以及根据所述地址,经所述交换设备对所述地址执行所述操作请求;
所述第一控制器,用于经所述交换设备接收所述输入输出接口发送的所述操作请求,且根据所述操作请求和所述第一控制器的缓存与所述多个硬盘的缓存之间的映射关系确定所述地址,以及经所述交换设备向所述输入输出接口发送所述地址。
本发明实施例提供的硬盘阵列,由于该硬盘阵列中的第一控制器的缓存与该硬盘阵列中的多个硬盘的缓存之间存在映射关系,因此当第一控制器接收到输入输出接口发送的操作请求时,第一控制器可以根据该操作请求和该映射关系确定出该操作请求待操作的数据在目标硬盘的缓存中的地址,然后再将该地址发送给输入输出接口,由输入输出接口直接经交换设备对该地址执行该操作请求。如此,由于对硬盘阵列中的硬盘进行操作时,操作的数据不用再经过控制器(具体为控制器的CPU)的搬移,而是可以由输入输出接口直接对该数据在目标硬盘的缓存中的地址进行操作,因此避免了控制器的CPU出现瓶颈,从而能够保证硬盘阵列的性能不受限制。
可选的,所述操作请求为读请求;或者,
所述操作请求为写请求。
具体的,当上述输入输出接口发送给第一控制器的操作请求为读请求时,第一控制器发送给输入输出接口的地址为读地址,输入输出接口经交换设备对该读地址执行该读请求。当输入输出接口发送给第一控制器的操作请求为写请求时,第一控制器发送给输入输出接口的地址为写地址,输入输出接口经交换设备对该写地址执行该写请求。
上述输入输出接口根据第一控制器发送的地址,经交换设备对该地址执行操作请求,包括:
输入输出接口根据第一控制器发送的读地址,经交换设备对该读地址进行读数据的操作;以及输入输出接口根据第一控制器发送的写地址经交换设备对该写地址进行写数据的操作。
其中,上述输入输出接口根据第一控制器发送的读地址,经交换设备对该读地址进行读数据的操作,可以理解为:输入输出接口根据第一控制器发送的读地址,经交换设备从该读地址指示的缓存中读取数据。上述输入输出接口根据第一控制器发送的写地址,经交换设备对该写地址进行写数据的操作,可以理解为:输入输出接口根据第一控制器发送的写地址,经交换设备向该写地址指示的缓存中写入数据。读地址指示的缓存为目标硬盘中缓存待读取数据的缓存;写地址指示的缓存为目标硬盘中需缓存待写入数据的缓存。
可选的,在本发明提供的硬盘阵列中,每个硬盘的缓存均可以缓存该硬盘的系统数据。
可选的,本发明实施例提供的硬盘阵列中,每个硬盘的缓存还可以缓存第一控制器的缓存与多个硬盘的缓存之间的映射关系、需要对该硬盘进行读或写操作的数据和硬盘阵列的系统数据中的至少一项。
可选的,本发明实施例提供的硬盘阵列中,可以由第一控制器预先在第一控制器中建立第一控制器的缓存与多个硬盘的缓存之间的映射关系。其中,第一控制器建立第一控制器的缓存与多个硬盘的缓存之间的映射关系,可以理解为:
第一控制器将第一控制器的缓存和硬盘阵列中的多个硬盘的缓存拉通管理。具体的,第一控制器将多个硬盘的缓存的地址映射到第一控制器的内存中,以将多个硬盘的缓存分别依次映射到第一控制器的缓存之后,即将第一控制器的缓存和多个硬盘的缓存统一顺序编号。
通过第一控制器建立第一控制器的缓存和多个硬盘的缓存之间的映射关系,可以使得第一控制器的缓存和多个硬盘的缓存在物理上连通,从而能够支持输入输出接口在逻辑上进行直接访问(由于输入输出接口可以直接访问第一控制器的内存,因此当将硬盘的缓存映射到第一控制器的内存之后,输入输出接口也可以直接访问硬盘的缓存)。
可选的,上述输入输出接口直接对硬盘的缓存进行读或写数据的操作是由输入输出接口采用直接内存访问(英文:directional memory access,缩写:DMA)技术实现的。具体可以通过在输入输出接口中集成一个DMA功能模块实现,例如可以在输入输出接口中集成一个DMA芯片实现。
可选的,所述多个硬盘包含第一独立硬盘冗余阵列RAID,所述多个硬盘的缓存包含第二RAID,所述第一RAID的类型和所述第二RAID的类型相同。
例如,第一RAID和第二RAID的具体实现形式可以为下述(1)和(2)中的一种:
(1)所述多个硬盘形成至少两个第一RAID,所述多个硬盘的缓存形成至少两个第二RAID,所述至少两个第一RAID和所述至少两个第二RAID一一对应,且一一对应的第一RAID和第二RAID的类型相同。
在(1)这种情况下,所述第一控制器,还用于建立每个第二RAID中的各个缓存之间的映射关系,并建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系。
上述第一控制器建立每个第二RAID中的各个缓存之间的映射关系,可以理解为:
第一控制器将每个第二RAID中的各个缓存拉通管理。具体的,第一控制器将每个第二RAID中的各个缓存统一进行地址划分,以保证在每个第二RAID中的所有地址均是唯一的。
上述第一控制器建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系,可以理解为:
第一控制器将一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存拉通管理。
进一步地,第一控制器建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系,可以保证第一控制器能够根据输入输出接口发送的操作请求(为读请求或写请求)直接确定出需进行读或写操作的硬盘,从而使得输入输出接口可以直接对该硬盘进行读或写数据的操作。
(2)所述多个硬盘形成至少一个第一RAID,所述多个硬盘的缓存形成一个第二RAID。
在(2)这种情况下,所述第一控制器,还用于建立第二RAID中的各个缓存之间的映射关系。
上述第一控制器建立第二RAID中的各个缓存之间的映射关系,可以理解为:
第一控制器将第二RAID中的各个缓存拉通管理。具体的,第一控制器将第二RAID中的各个缓存统一进行地址划分,以保证在第二RAID中的所有地址均是唯一的。
可选的,所述硬盘阵列还包括第二控制器,所述第二控制器与所述交换设备连接;
所述第一控制器,还用于经所述交换设备向所述第二控制器发送所述映射关系;
所述第二控制器,用于接收所述第一控制器发送的所述映射关系,并将所述映射关系缓存在所述第二控制器的缓存中。
可选的,所述第一控制器,还用于经所述交换设备向所述第二控制器发送所述硬盘阵列的系统数据;
所述第二控制器,用于接收所述第一控制器发送的所述硬盘阵列的系统数据,并将所述硬盘阵列的系统数据缓存在所述第二控制器的缓存中。
可选的,所述第一控制器,还用于经所述交换设备向所述多个硬盘中的预指定硬盘的缓存中写入所述映射关系和所述硬盘阵列的系统数据,所述硬盘阵列的系统数据缓存在所述第一控制器的缓存中。
通过将第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据备份在第二控制器的缓存中,可以在第一控制器发生故障时,由第二控制器代替第一控制器确定待操作的数据在目标硬盘的缓存中的地址,从而能够避免硬盘阵列无法正常工作,提高硬盘阵列的可靠性。
通过将第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据备份到预指定硬盘的缓存中,可以在硬盘阵列掉电时,由该预指定硬盘的CPU将该硬盘阵列的系统数据写入该预指定硬盘的存储空间中,从而在硬盘阵列重新上电后,硬盘阵列中的控制器(包括第一控制器和第二控制器)可将该映射关系和该硬盘阵列的系统数据恢复到控制器的缓存中,进而能够保证硬盘阵列在掉电前控制器的缓存中的数据和硬盘阵列在重新上电后控制器的缓存中的数据一致,即保证硬盘阵列在掉电后控制器的缓存中的数据不会丢失。
进一步地,所述第一控制器,还用于当所述硬盘阵列重新上电后,经所述交换设备从所述预指定硬盘中读取所述映射关系和所述硬盘阵列的系统数据;
所述第二控制器,还用于当所述硬盘阵列重新上电后,经所述交换设备从所述预指定硬盘中读取所述映射关系和所述硬盘阵列的系统数据。
在硬盘阵列重新上电后,通过控制器将硬盘中存储的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据恢复到控制器的缓存中,能够保证硬盘阵列在掉电前和重新上电后控制器的缓存中的数据一致,即保证硬盘阵列在掉电后控制器的缓存中的数据不会丢失。
可选的,所述多个硬盘的缓存形成所述第一控制器和所述第二控制器共享的全局共享缓存。
在硬盘阵列中的多个硬盘的缓存形成第一控制器和第二控制器共享的全局共享缓存之后,第一控制器和第二控制器均可以对该全局共享缓存进行读或写数据的操作。如此,某个控制器或者输入输出接口可以将镜像数据(即需要备份的数据)缓存至全局共享缓存中,而无需再针对不同的控制器单独缓存镜像数据,且当某个控制器或者输入输出接口将镜像数据(即需要备份的数据)缓存至全局共享缓存中后,硬盘阵列中的第一控制器和第二控制器均可以访问该镜像数据,与现有技术相比,本发明实施例节省了控制器与控制器之间的镜像通道,简化了镜像过程,提升了数据交互效率。
可选的,所述第二控制器,还用于在所述第一控制器发生故障时,经所述交换设备接收所述输入输出接口发送的所述操作请求,且根据所述操作请求和所述映射关系确定所述地址,以及经所述交换设备向所述输入输出接口发送所述地址。
由于第二控制器的缓存中备份了第一控制器的缓存与多个硬盘的缓存之间的映射关系,因此当第一控制器发生故障时,可以由第二控制器代替第一控制器确定输入输出接口发送的操作请求待操作的数据在目标硬盘的缓存中的地址,并经交换设备将该地址发送给输入输出接口,由输入输出接口完成该操作请求。如此可以提高硬盘阵列的可靠性。
可选的,所述多个硬盘中的每个硬盘,还用于在所述硬盘阵列掉电时,将该硬盘的缓存中的数据写入该硬盘的存储空间,其中,该硬盘中的备电电容为该硬盘提供备电。
当硬盘阵列掉电后,由于硬盘阵列的供电电源断开,因此硬盘阵列的控制器(例如第一控制器和第二控制器)将无法工作,然而由于硬盘阵列的每个硬盘中都有一个备电电容,且该备电电容可以为硬盘提供一段时间的备电,因此即使硬盘阵列掉电,硬盘中的备电电容仍然可以为硬盘提供备电,使得硬盘可以继续工作一段时间,即硬盘可以将其缓存中的数据搬移到硬盘的存储空间中。所以,本发明提供的硬盘阵列,无需再设置单独的备电系统为硬盘阵列备电,从而能够节省硬盘阵列的实现成本。
可选的,当硬盘阵列中新增加硬盘时,硬盘阵列中的第一控制器可自动将该新增加硬盘的缓存加入到全局共享缓存中统一管理,即建立第一控制器的缓存和该新增加硬盘的缓存之间的映射关系。如此可以提升全局共享缓存的空间,从而提升硬盘阵列的性能。
可选的,当用新硬盘替换硬盘阵列中的原有硬盘时,硬盘阵列中的第一控制器可自动将该新硬盘的缓存加入到全局共享缓存中统一管理,即建立第一控制器的缓存和该新硬盘的缓存之间的映射关系;并从全局共享缓存中删除原有硬盘的缓存,即删除第一控制器的缓存和该原有硬盘的缓存之间的映射关系。如此可以保证全局共享缓存与实际硬盘对应,从而提升硬盘阵列的性能。
可选的,当从硬盘阵列中去掉某个硬盘时,硬盘阵列中的第一控制器可从全局共享缓存中删除该硬盘的缓存,即删除第一控制器的缓存和该硬盘的缓存之间的映射关系。如此可以保证全局共享缓存与实际硬盘对应,从而提升硬盘阵列的性能。
第二方面,本发明实施例提供一种硬盘阵列处理操作请求的方法,所述硬盘阵列包括输入输出接口,与所述输入输出接口连接的交换设备,以及与所述交换设备连接的第一控制器和多个硬盘,所述多个硬盘均包含缓存,所述方法包括:
所述输入输出接口经所述交换设备向所述第一控制器发送操作请求;
所述第一控制器根据所述操作请求和所述第一控制器的缓存与所述多个硬盘的缓存之间的映射关系,确定所述操作请求待操作的数据在目标硬盘的缓存中的地址;
所述第一控制器经所述交换设备向所述输入输出接口发送所述地址;
所述输入输出接口经所述交换设备对所述地址执行所述操作请求。
本发明实施例提供的硬盘阵列处理操作请求的方法,由于该硬盘阵列中的第一控制器的缓存与该硬盘阵列中的多个硬盘的缓存之间存在映射关系,因此当第一控制器接收到输入输出接口发送的操作请求时,第一控制器可以根据该操作请求和该映射关系确定出该操作请求待操作的数据在目标硬盘的缓存中的地址,然后再将该地址发送给输入输出接口,由输入输出接口直接经交换设备对该地址执行该操作请求。如此,由于对硬盘阵列中的硬盘进行操作时,操作的数据不用再经过控制器(具体为控制器的CPU)的搬移,而是可以由输入输出接口直接对该数据在目标硬盘的缓存中的地址进行操作,因此避免了控制器的CPU出现瓶颈,从而能够保证硬盘阵列的性能不受限制。
可选的,所述多个硬盘包含第一独立硬盘冗余阵列RAID,所述多个硬盘的缓存包含第二RAID,所述第一RAID的类型和所述第二RAID的类型相同。
其中,对于第一RAID和第二RAID的具体描述可以参见上述第一方面的相应可选方式中对第一RAID和第二RAID的相关描述,此处不再赘述。
可选的,所述硬盘阵列还包括第二控制器,所述第二控制器与所述交换设备连接;
所述方法还包括:
所述第一控制器经所述交换设备向所述第二控制器发送所述映射关系;
所述第二控制器将所述映射关系缓存在所述第二控制器的缓存中。
可选的,所述方法还包括:
所述第一控制器经所述交换设备向所述第二控制器发送所述硬盘阵列的系统数据;
第二控制器将所述硬盘阵列的系统数据缓存在所述第二控制器的缓存中。
可选的,所述方法还包括:
所述第一控制器经所述交换设备向所述多个硬盘中的预指定硬盘的缓存中写入所述映射关系和所述硬盘阵列的系统数据,所述硬盘阵列的系统数据存储在所述第一控制器的缓存中。
可选的,所述方法还包括:
当所述硬盘阵列重新上电后,所述第一控制器和所述第二控制器经所述交换设备从所述预指定硬盘中读取所述映射关系和所述硬盘阵列的系统数据。
可选的,所述多个硬盘的缓存形成所述第一控制器和所述第二控制器共享的全局共享缓存。
可选的,在所述第一控制器发生故障时,所述方法还包括:
所述输入输出接口经所述交换设备向所述第二控制器发送所述操作请求;
所述第二控制器根据所述操作请求和所述映射关系确定所述地址;
所述第二控制器经所述交换设备向所述输入输出接口发送所述地址。
可选的,所述方法还包括:
在所述硬盘阵列掉电时,所述多个硬盘中的每个硬盘将该硬盘的缓存中的数据写入该硬盘的存储空间,其中,该硬盘中的备电电容为该硬盘提供备电。
可选的,所述操作请求为读请求;或者,
所述操作请求为写请求。
上述第二方面的各种可选方式的技术效果的描述具体可参见上述第一方面中对与这些可选方式相对应的第一方面的各种可选方式的技术效果的相关描述,此处不再一一赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1为现有技术提供的硬盘阵列的结构示意图;
图2为本发明实施例提供的存储系统的架构示意图;
图3为本发明实施例提供的硬盘阵列的结构示意图一;
图4为本发明实施例提供的硬盘阵列的结构示意图二;
图5为本发明实施例提供的硬盘阵列的结构示意图三;
图6为本发明实施例提供的硬盘阵列的结构示意图四;
图7为本发明实施例提供的硬盘阵列处理操作请求的方法示意图。
具体实施方式
本文中字符“/”,一般表示前后关联对象是一种“或者”的关系。例如,A/B可以理解为A或者B。
本发明的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一控制器和第二控制器等是用于区别不同的控制器,而不是用于描述控制器的特征顺序。
在本发明的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个硬盘是指两个或两个以上的硬盘;多个控制器是指两个或两个以上的控制器等。
此外,本发明的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透切理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。
本发明实施例提供的硬盘阵列及硬盘阵列处理操作请求的方法可以应用于存储系统中,该存储系统可以为传统存储系统,也可以为云存储系统,本发明不作具体限定。
如图2所示,本发明实施例提供的硬盘阵列中的硬盘可以为固态硬盘(英文:solid state drives,缩写:SSD)、硬盘驱动器(英文:hard diskdrive,缩写:HDD)以及混合硬盘(英文:hybrid disk drive,缩写:HHD)中的至少一种。其中,SSD采用闪存颗粒来存储;HDD采用磁性碟片来存储,HHD是把磁性硬盘和闪存集成到一起的一种硬盘。
如图3所示,本发明实施例提供一种硬盘阵列,该硬盘阵列包括:
输入输出接口20,与所述输入输出接口20连接的交换设备21,以及与所述交换设备21连接的第一控制器22和多个硬盘23,所述多个硬盘23均包含缓存230。
其中,所述输入输出接口20,用于经所述交换设备21向所述第一控制器22发送操作请求,并经所述交换设备21接收所述第一控制器22发送的所述操作请求待操作的数据在目标硬盘的缓存中的地址,以及根据所述地址,经所述交换设备21对所述地址执行所述操作请求;所述第一控制器22,用于经所述交换设备21接收所述输入输出接口20发送的所述操作请求,且根据所述操作请求和所述第一控制器22的缓存与所述多个硬盘23的缓存230之间的映射关系确定所述地址,以及经所述交换设备21向所述输入输出接口20发送所述地址。
其中,当所述操作请求是读请求时,所述操作请求待操作的数据在目标硬盘的缓存中的地址是指目标硬盘的缓存中用于缓存待读取的数据的地址;当所述操作请求是写请求时,所述操作请求待操作的数据在目标硬盘的缓存中的地址是指目标硬盘的缓存中用于缓存待写入的数据的地址。
可选的,所述交换设备21,用于对经所述交换设备21的数据进行交换处理;所述多个硬盘23,用于存储需存储至所述硬盘阵列中的数据。
可选的,所述操作请求为读请求;或者,
所述操作请求为写请求。
具体的,当上述输入输出接口发送给第一控制器的操作请求为读请求时,第一控制器发送给输入输出接口的地址为读地址,输入输出接口经交换设备对该读地址执行该读请求。当输入输出接口发送给第一控制器的操作请求为写请求时,第一控制器发送给输入输出接口的地址为写地址,输入输出接口经交换设备对该写地址执行该写请求。
本发明实施例中,上述输入输出接口根据第一控制器发送的地址,经交换设备对该地址执行操作请求,包括:
当第一控制器发送给输入输出接口的地址为读地址时,输入输出接口根据第一控制器发送的读地址,经交换设备对该读地址进行读数据的操作;当第一控制器发送给输入输出接口的地址为写地址时,输入输出接口根据第一控制器发送的写地址经交换设备对该写地址进行写数据的操作。
其中,上述输入输出接口根据第一控制器发送的读地址,经交换设备对该读地址进行读数据的操作,可以理解为:输入输出接口根据第一控制器发送的读地址,经交换设备从该读地址指示的缓存中读取数据。上述输入输出接口根据第一控制器发送的写地址,经交换设备对该写地址进行写数据的操作,可以理解为:输入输出接口根据第一控制器发送的写地址,经交换设备向该写地址指示的缓存中写入数据。读地址指示的缓存为目标硬盘中缓存待读取数据的缓存;写地址指示的缓存为目标硬盘中需缓存待写入数据的缓存。
本发明实施例中,当需要在硬盘阵列中存储数据时,可将该数据存储至硬盘阵列的硬盘中。例如,可将该数据存储至硬盘阵列中的全部或若干个硬盘中。
具体的,本发明实施例提供的硬盘阵列中,当输入输出接口向某个硬盘的缓存中写入数据后,该硬盘的CPU会将该数据从该硬盘的缓存中搬移到该硬盘的存储空间中;当输入输出接口从某个硬盘的缓存中读取数据时,如果该数据没有在该硬盘的缓存中,则该硬盘的CPU可将该数据从该硬盘的存储空间中搬移到该硬盘的缓存中,从而再由输入输出接口从该硬盘的缓存中读取该数据。
可选的,上述硬盘的存储空间可以为硬盘中的非易失性存储器(英文:nonvolatile memory)。该非易失性存储器可以包括只读存储器(英文:read-only memory,缩写:ROM)、可编程只读存储器(英文:programmable read-only memory,缩写:PROM)、可擦写可编程只读存储器(英文:erasable programmable read-only memory,缩写:EPROM)、电可擦除只读存储器(英文:electrically erasableprogrammable read-only memory,缩写:EEPROM)以及闪存(英文:flash memory)中的至少一种。
可选的,本发明实施例中的闪存可以为NAND flash,也可以为NORflash,具体的可以根据实际使用的硬盘来确定,本发明不作限定。
可选的,本发明实施例提供的硬盘阵列中,每个硬盘的缓存还可以缓存第一控制器的缓存与多个硬盘的缓存之间的映射关系、需要对该硬盘进行读或写操作的数据和硬盘阵列的系统数据中的至少一项。
上述硬盘阵列的系统数据可以为硬盘阵列的元数据或硬盘阵列的镜像数据等;上述硬盘的系统数据可以为硬盘的元数据或硬盘的镜像数据等。其中,元数据又称中介数据、中继数据,其为描述数据(例如本发明实施例中需要进行读或写的数据)的数据;元数据主要是描述数据属性(英文:property)的信息,其支持如指示存储位置、历史数据、资源查找以及文件记录等功能。镜像数据为对某些数据的备份数据,例如本发明实施例中,镜像数据为对元数据的备份数据(镜像数据存在于硬盘阵列中包括多个控制器的场景)。
本发明实施例中,可以由第一控制器预先在第一控制器中建立第一控制器的缓存与多个硬盘的缓存之间的映射关系。其中,第一控制器建立第一控制器的缓存与多个硬盘的缓存之间的映射关系,可以理解为:
第一控制器将第一控制器的缓存和硬盘阵列中的多个硬盘的缓存拉通管理。具体的,第一控制器将多个硬盘的缓存的地址映射到第一控制器的内存中,以将多个硬盘的缓存分别依次映射到第一控制器的缓存之后,即将第一控制器的缓存和多个硬盘的缓存统一顺序编址。
本发明实施例提供的硬盘阵列中,通过第一控制器建立第一控制器的缓存和多个硬盘的缓存之间的映射关系,可以使得第一控制器的缓存和多个硬盘的缓存在逻辑上连通,从而能够支持输入输出接口在逻辑上进行直接访问(由于输入输出接口可以直接访问第一控制器的内存,因此当将硬盘的缓存映射到第一控制器的内存之后,输入输出接口也可以直接访问硬盘的缓存)。
进一步地,通过第一控制器预先在第一控制器中建立第一控制器的缓存和多个硬盘的缓存之间的映射关系,当需对多个硬盘中的某些硬盘进行读或写数据的操作时,可以由第一控制器(具体由第一控制器的CPU完成)根据该映射关系,确定出进行读或写数据的地址,并将该地址指示给输入输出接口,由输入输出接口直接根据该地址,对该地址进行读或写数据的操作,即对该地址指示的缓存进行读或写数据的操作,如此可以避免控制器对数据的搬移,从而可以避免控制器的CPU出现瓶颈,进而能够提升硬盘阵列的性能。
本发明实施例中,输入输出接口直接对硬盘的缓存进行读或写数据的操作是由输入输出接口采用DMA技术实现的。具体可以通过在输入输出接口中集成一个DMA功能模块实现,例如可以在输入输出接口中集成一个DMA芯片实现。
本发明实施例提供的硬盘阵列中,输入输出接口的数量可以为一个或多个,具体可根据硬盘阵列的应用场景/需求来确定,本发明不作限定。本发明实施例为了描述清楚、方便,所涉及到输入输出接口的各个附图中均以硬盘阵列中包括一个输入输出接口为例进行示例性的说明,对于硬盘阵列中包括多个输入输出接口的情况与硬盘阵列中包括一个输入输出接口的情况类似,此处不再赘述。
上述交换设备具体可以通过一个交换器实现。交换设备主要用于对经过其的数据进行交换处理。其中,经过交换设备的数据可以为需对硬盘进行读或写操作的数据,也可以为需备份的第一控制器的缓存中存储的系统数据等。本发明实施例的硬盘阵列中的交换设备的数量可以为一个或多个,具体可根据硬盘阵列的应用场景/需求来确定,本发明不作限定。本发明实施例为了描述清楚、方便,所涉及到交换设备的各个附图中均以硬盘阵列中包括一个交换设备为例进行示例性的说明,对于硬盘阵列中包括多个交换设备的情况(数据需经过多个交换设备的交换处理),与硬盘阵列中包括一个交换设备的情况类似,此处不再赘述。
本发明实施例提供的硬盘阵列,由于该硬盘阵列中的第一控制器的缓存与该硬盘阵列中的多个硬盘的缓存之间存在映射关系,因此当第一控制器接收到输入输出接口发送的操作请求时,第一控制器可以根据该操作请求和该映射关系确定出该操作请求待操作的数据在目标硬盘的缓存中的地址,然后再将该地址发送给输入输出接口,由输入输出接口直接经交换设备对该地址执行该操作请求。如此,由于对硬盘阵列中的硬盘进行操作时,操作的数据不用再经过控制器(具体为控制器的CPU)的搬移,而是可以由输入输出接口直接对该数据在目标硬盘的缓存中的地址进行操作,因此避免了控制器的CPU出现瓶颈,从而能够保证硬盘阵列的性能不受限制。
可选的,所述多个硬盘23包含第一RAID,所述多个硬盘的缓存包含第二RAID,所述第一RAID的类型和所述第二RAID的类型相同。
本发明实施例中,第一RAID和第二RAID的具体实现形式可以为下述(1)和(2)的一种:
(1)结合图3,如图4所示,本发明实施例提供的硬盘阵列中,所述多个硬盘23形成至少两个第一RAID,所述多个硬盘23的缓存230形成至少两个第二RAID,所述至少两个第一RAID和所述至少两个第二RAID一一对应,且一一对应的第一RAID和第二RAID的类型相同。
在(1)这种情况下,所述第一控制器22,还用于建立每个第二RAID中的各个缓存之间的映射关系,并建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系。
如图4所示的实施例中,多个硬盘形成的第一RAID的数量和多个硬盘的缓存形成的第二RAID的数量相同,即一个第一RAID唯一对应一个第二RAID;且每个第一RAID中包括若干个硬盘,每个第二RAID中包括若干个硬盘的缓存。
具体的,可以由若干个硬盘形成一个第一RAID,且这些硬盘的缓存形成一个第二RAID。如此,每个第一RAID中的硬盘均与和其对应的第二RAID中的缓存一一对应,即每个硬盘均与其缓存对应。
本发明实施例中,类型是指RAID的类型。例如,本发明实施例中RAID的类型可以包括RAID0、RAID1、RAID2、RAID3、RAID4、RAID5、RAID6、RAID7、RAID10和RAID53等。
上述一一对应的第一RAID和第二RAID的类型相同具体可以理解为:假设某个第一RAID的类型为RAID0,则与其对应的第二RAID的类型也为RAID0。具体可参见如图4所示的硬盘阵列的结构,此处不再赘述。
上述第一控制器建立每个第二RAID中的各个缓存之间的映射关系,可以理解为:
第一控制器将每个第二RAID中的各个缓存拉通管理。具体的,第一控制器将每个第二RAID中的各个缓存统一进行地址划分,以保证在每个第二RAID中的所有地址均是唯一的。
上述第一控制器建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系,可以理解为:
第一控制器将一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存拉通管理。
进一步地,第一控制器建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系,可以保证第一控制器能够根据输入输出接口发送的操作请求(为读请求或写请求)直接确定出需进行读或写操作的硬盘,从而使得输入输出接口可以直接对该硬盘进行读或写数据的操作。例如,当输入输出接口对该硬盘进行写数据的操作时,若输入输出接口向该硬盘的缓存中写入数据,则该硬盘的CPU可直接将其缓存中的数据搬移到该硬盘的存储空间中,以完成对该硬盘进行写数据的操作,从而提高写数据的效率。
需要说明的是,本发明实施例提供的硬盘阵列中,上述第一RAID的形成/划分,以及第二RAID的形成/划分均是逻辑上的划分,其为第一控制器执行相应软件时的逻辑上的概念。具体的,第一RAID为在逻辑上将硬盘阵列中的多个硬盘划分成的硬盘组;第二RAID为在逻辑上将多个硬盘的缓存划分成的缓存组。
(2)结合图3,如图5所示,本发明实施例提供的硬盘阵列中,所述多个硬盘23形成至少一个第一RAID,所述多个硬盘23的缓存230形成一个第二RAID。
在(2)这种情况下,所述第一控制器22,还用于建立第二RAID中的各个缓存之间的映射关系。
如图5所示的硬盘阵列中,由于所有硬盘的缓存只形成一个第二RAID,因此,多个硬盘中的空闲硬盘(例如没有存储数据的硬盘)的缓存也可以被划分到第二RAID中,如此第二RAID就可以缓存更多的数据,且在这种情况下,输入输出接口可以直接对第二RAID中的任意一个缓存进行读或写数据的操作,而无需再对应到第一RAID中的每个硬盘。但是这种情况下,当某个缓存中的数据需要存储至该缓存所属的硬盘的存储空间时,还需要第一控制器指示该缓存所属的硬盘将该缓存中的数据存储至该硬盘的存储空间(具体可以由该硬盘的CPU进行数据搬移动作)。
上述第一控制器建立第二RAID中的各个缓存之间的映射关系,可以理解为:
第一控制器将第二RAID中的各个缓存拉通管理。具体的,第一控制器将第二RAID中的各个缓存统一进行地址划分,以保证在第二RAID中的所有地址均是唯一的。
可选的,本发明实施例中,第一控制器建立第一控制器的缓存和多个硬盘的缓存之间的映射关系;上述(1)中第一控制器建立每个第二RAID中的各个缓存之间的映射关系,并建立一一对应的第一RAID中的各个硬盘和第二RAID中的各个缓存之间的映射关系;以及上述(2)中第一控制器建立第二RAID中的各个缓存之间的映射关系均可以由第一控制器采用NVMe1.2协议实现。
可选的,结合图3,如图6所示,本发明实施例提供的硬盘阵列中,所述硬盘阵列还包括第二控制器24,所述第二控制器24与所述交换设备21连接。
所述第一控制器22,还用于经所述交换设备21向所述第二控制器24发送所述映射关系;所述第二控制器24,用于接收所述第一控制器22发送的所述映射关系,并将所述映射关系缓存在所述第二控制器24的缓存中。
本发明实施例中,通过将第一控制器的缓存与多个硬盘的缓存之间的映射关系备份在第二控制器的缓存中,可以在第一控制器发生故障时,由第二控制器代替第一控制器对硬盘进行读或写数据的操作,从而能够避免硬盘阵列无法正常工作,提高硬盘阵列的可靠性。
可选的,所述第一控制器22,还用于经所述交换设备21向所述第二控制器24发送所述硬盘阵列的系统数据;所述第二控制器24,用于接收所述第一控制器22发送的所述硬盘阵列的系统数据,并将所述硬盘阵列的系统数据缓存在所述第二控制器24的缓存中。
可选的,所述第一控制器22,还用于经所述交换设备21向所述多个硬盘23中的预指定硬盘的缓存中写入所述映射关系和所述硬盘阵列的系统数据,所述硬盘阵列的系统数据缓存在所述第一控制器的缓存中。
本发明实施例中,通过将第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据备份在第二控制器的缓存中,可以在第一控制器发生故障时,由第二控制器代替第一控制器确定待操作的数据在目标硬盘的缓存中的地址,从而能够避免硬盘阵列无法正常工作,提高硬盘阵列的可靠性。
通过将第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据备份到预指定硬盘的缓存中,可以在硬盘阵列掉电时,由该预指定硬盘的CPU将该硬盘阵列的系统数据写入该预指定硬盘的存储空间中,从而在硬盘阵列重新上电后,硬盘阵列中的控制器(包括第一控制器和第二控制器)可将该映射关系和该硬盘阵列的系统数据恢复到控制器的缓存中,进而能够保证硬盘阵列在掉电前控制器的缓存中的数据和硬盘阵列在重新上电后控制器的缓存中的数据一致,即保证硬盘阵列在掉电后控制器的缓存中的数据不会丢失。
可选的,在将第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据备份到预指定硬盘的缓存中之后,若硬盘阵列掉电,则该预指定硬盘的CPU可将其缓存中的该映射关系和该硬盘阵列的系统数据写入该预指定硬盘的存储空间中,以防止该映射关系和该硬盘阵列的系统数据丢失。
进一步地,所述第一控制器,还用于当所述硬盘阵列重新上电后,经所述交换设备从所述预指定硬盘中读取所述映射关系和所述硬盘阵列的系统数据;所述第二控制器,还用于当所述硬盘阵列重新上电后,经所述交换设备从所述预指定硬盘中读取所述映射关系和所述硬盘阵列的系统数据。
如此,本发明实施例提供的硬盘阵列,在硬盘阵列重新上电后,通过控制器将硬盘中存储的第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据恢复到控制器的缓存中,能够保证硬盘阵列在掉电前和重新上电后控制器的缓存中的数据一致,即保证硬盘阵列在掉电后控制器的缓存中的数据不会丢失。
可选的,本发明实施例提供的硬盘阵列中,所述多个硬盘的缓存形成所述第一控制器和所述第二控制器共享的全局共享缓存。
在硬盘阵列中的多个硬盘的缓存形成第一控制器和第二控制器共享的全局共享缓存之后,第一控制器和第二控制器均可以对该全局共享缓存进行读或写数据的操作。如此,某个控制器或者输入输出接口可以将镜像数据(即需要备份的数据)缓存至全局共享缓存中,而无需再针对不同的控制器单独缓存镜像数据,且当某个控制器或者输入输出接口将镜像数据(即需要备份的数据)缓存至全局共享缓存中后,硬盘阵列中的第一控制器和第二控制器均可以访问该镜像数据,与现有技术相比,本发明实施例节省了控制器与控制器之间的镜像通道,简化了镜像过程,提升了数据交互效率。
可选的,所述第二控制器,还用于在所述第一控制器发生故障时,经所述交换设备接收所述输入输出接口发送的所述操作请求,且根据所述操作请求和所述映射关系确定所述地址,以及经所述交换设备向所述输入输出接口发送所述地址。
由于第二控制器的缓存中备份了第一控制器的缓存与多个硬盘的缓存之间的映射关系,因此当第一控制器发生故障时,可以由第二控制器代替第一控制器确定输入输出接口发送的操作请求待操作的数据在目标硬盘的缓存中的地址,并经交换设备将该地址发送给输入输出接口,由输入输出接口完成该操作请求。如此可以提高硬盘阵列的可靠性。
可选的,所述多个硬盘中的每个硬盘,还用于在所述硬盘阵列掉电时,将该硬盘的缓存中的数据写入该硬盘的存储空间,其中,该硬盘中的备电电容为该硬盘提供备电。
本领域技术人员可以理解,在硬盘阵列掉电后,硬盘将其缓存中的数据写入其存储空间的过程具体可以由硬盘的CPU完成。
本发明实施例提供的硬盘阵列中,由于将第一控制器的缓存中缓存的数据(包括第一控制器的缓存与多个硬盘的缓存之间的映射关系和硬盘阵列的系统数据)写入了由多个硬盘的缓存形成的全局共享缓存中,且当硬盘阵列掉电时,每个硬盘均可以将其缓存中的数据均写入该硬盘的存储空间,因此可以保证硬盘阵列的控制器的缓存中的数据不会丢失,从而提高硬盘阵列的可靠性。
进一步地,由于上述操作请求待操作的数据,即读或写的数据也是直接由输入输出接口从硬盘的缓存中读取或写入硬盘的缓存中,因此当硬盘阵列掉电时,该数据也会被硬盘的CPU搬移到该硬盘的存储空间中,即该数据也不会丢失,从而保证了数据的连续性。
当硬盘阵列掉电时,由于硬盘的系统数据也会被该硬盘的CPU搬移到该硬盘的存储空间中,即该硬盘的系统数据也不会丢失,从而保证了该硬盘的可靠性。
需要说明的是,当硬盘阵列掉电后,由于硬盘阵列的供电电源断开,因此硬盘阵列的控制器(例如第一控制器和第二控制器)将无法工作,然而由于本发明实施例的硬盘阵列的每个硬盘中都有一个备电电容,且该备电电容可以为硬盘提供一段时间(通常为几分钟,例如2分钟至5分钟)的备电,因此即使硬盘阵列掉电,硬盘中的备电电容仍然可以为硬盘提供备电,使得硬盘可以继续工作一段时间,即硬盘可以将其缓存中的数据搬移到硬盘的存储空间中。如此,本发明实施例提供的硬盘阵列,无需再设置单独的备电系统为硬盘阵列备电,从而能够节省硬盘阵列的实现成本。
其中,上述备电电容可以为钽电容,也可以为其他任何满足硬盘制造需求的电容,具体的可以根据硬盘的实际制造需求来确定,本发明不作限定。
需要说明的是,本发明实施例中的控制器(包括第一控制器和第二控制器)包括CPU和缓存等硬件组件。由于本发明实施例中控制器的内部硬件结构与现有技术相同,因此本发明实施例为了清楚、方便地示意输入输出接口、交换设备、控制器、硬盘以及硬盘的缓存等之间的关系,在上述实施例示意的图3至图6中均未画出控制器的内部硬件结构。
本发明实施例提供的硬盘阵列中,由于该硬盘阵列中的第一控制器的缓存与该硬盘阵列中的多个硬盘的缓存之间存在映射关系,因此当第一控制器接收到输入输出接口发送的读请求或者写请求时,第一控制器可以确定出该读请求待读取的数据在目标硬盘的缓存中的地址(即读地址)或者该写请求待写入的数据在目标硬盘的缓存中的地址(即写地址),从而将该读地址或者该写地址发送给输入输出接口,由输入输出接口采用DMA技术,根据该读地址对该读地址指示的缓存进行读数据的操作,或者由输入输出接口采用DMA技术,根据该写地址对该写地址指示的缓存进行写数据的操作,从而操作的数据无需再经过第一控制器的搬移,而是直接由输入输出接口读或写到相应硬盘的缓存中,进而能够防止控制器的CPU出现瓶颈,以提升硬盘阵列的性能。
可选的,本发明实施例中,当硬盘阵列中新增加硬盘时,硬盘阵列中的第一控制器可自动将该新增加硬盘的缓存加入到全局共享缓存中统一管理,即建立第一控制器的缓存和该新增加硬盘的缓存之间的映射关系。如此可以提升全局共享缓存的空间,从而提升硬盘阵列的性能。
可选的,当用新硬盘替换硬盘阵列中的原有硬盘时,硬盘阵列中的第一控制器可自动将该新硬盘的缓存加入到全局共享缓存中统一管理,即建立第一控制器的缓存和该新硬盘的缓存之间的映射关系;并从全局共享缓存中删除原有硬盘的缓存,即删除第一控制器的缓存和该原有硬盘的缓存之间的映射关系。如此可以保证全局共享缓存与实际硬盘对应,从而提升硬盘阵列的性能。
可选的,当从硬盘阵列中去掉某个硬盘时,硬盘阵列中的第一控制器可从全局共享缓存中删除该硬盘的缓存,即删除第一控制器的缓存和该硬盘的缓存之间的映射关系。如此可以保证全局共享缓存与实际硬盘对应,从而提升硬盘阵列的性能。
如图7所示,本发明实施例提供一种硬盘阵列处理操作请求的方法,该硬盘阵列包括输入输出接口,与该输入输出接口连接的交换设备,以及与该交换设备连接的第一控制器和多个硬盘,该多个硬盘均包含缓存,该方法包括:
S101、输入输出接口经交换设备向第一控制器发送操作请求。
本发明实施例中,操作请求用于请求读或写数据,操作请求可以包括读请求和写请求。其中,读请求用于请求读数据;写请求用于请求写数据。具体的,读请求是对硬盘阵列中的硬盘进行读数据的操作;写请求是对硬盘阵列中的硬盘进行写数据的操作。
对于操作请求的具体描述可参见上述如图3所示的实施例中对操作请求的相关描述,此处不再赘述。
S102、第一控制器根据操作请求和第一控制器的缓存与多个硬盘的缓存之间的映射关系,确定操作请求待操作的数据在目标硬盘的缓存中的地址。
S103、第一控制器经交换设备向输入输出接口发送该地址。
S104、输入输出接口经交换设备对该地址执行该操作请求。
其中,本发明实施例提供的硬盘阵列处理操作请求的方法应用的硬盘阵列可以为上述如图3至图6任意之一所示的实施例中的硬盘阵列,对于该硬盘阵列的具体描述可参见上述如图3至图6任意之一所示的实施例中对硬盘阵列的相关描述,此处不再赘述。
可选的,在本发明提供的硬盘阵列中,每个硬盘的缓存均可以缓存该硬盘的系统数据。
可选的,本发明实施例提供的硬盘阵列中,每个硬盘的缓存还可以缓存第一控制器的缓存与多个硬盘的缓存之间的映射关系、需要对该硬盘进行读或写操作的数据和硬盘阵列的系统数据中的至少一项。
本发明实施例中,由于第一控制器可以建立第一控制器的缓存与多个硬盘的缓存之间的映射关系,因此第一控制器可以根据输入输出接口发送的操作请求,确定出需读或写数据的地址,该地址可以为多个硬盘中的某个硬盘的缓存中的地址。
对于第一控制器建立第一控制器的缓存与多个硬盘的缓存之间的映射关系的描述具体可参见上述如图3所示的实施例中的相关描述,此处不再赘述。
具体的,若操作请求为读请求,则第一控制器可根据该读请求查询第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系,并得到需要读取的数据存放的目标硬盘的缓存的地址,然后第一控制器经交换设备将该缓存的地址发送给输入输出接口,由输入输出接口经交换设备从该地址指示的缓存中读取该数据。
需要说明的是,如果该数据没有在该缓存中(例如该数据已经被该缓存所属的硬盘的CPU存储到该硬盘的存储空间中),则该缓存所属的硬盘的CPU可以从该硬盘的存储空间中将该数据搬移到该缓存中,从而输入输出接口可以直接从该缓存中读取该数据。
若操作请求为写请求,则第一控制器可根据该写请求和第一控制器的缓存中缓存的第一控制器的缓存与多个硬盘的缓存之间的映射关系为需要写入的数据分配缓存该数据的目标硬盘的缓存的地址,然后第一控制器经交换设备将该缓存的地址发送给输入输出接口,由输入输出接口经交换设备将该数据写入该地址指示的缓存中。
需要说明的是,当该输入输出接口将该数据写入该缓存中之后,该缓存所属的硬盘的CPU再从该缓存中将该数据搬移到该硬盘的存储空间中。
进一步地,为了保证存储数据的安全性和完整性,当上述操作请求为写请求时,第一控制器在为需要写入的数据分配缓存该数据的目标硬盘的缓存的地址的同时,还可以为该数据分配备份该数据的备份硬盘的缓存的地址(即存储该数据的镜像数据),从而输入输出接口可以同时将该数据写入用于缓存该数据的目标硬盘的缓存和用于备份该数据的备份硬盘的缓存。
对于本发明实施例提供的硬盘阵列中的硬盘、硬盘的存储空间、缓存、控制器的缓存、硬盘的缓存、控制器的缓存与多个硬盘的缓存之间的映射关系、硬盘阵列的系统数据以及硬盘的系统数据等的描述具体可参见上述如图3所示的实施例中的相关描述,此处不再赘述。
本发明实施例提供的硬盘阵列处理操作请求的方法,由于该硬盘阵列中的第一控制器的缓存与该硬盘阵列中的多个硬盘的缓存之间存在映射关系,因此当第一控制器接收到输入输出接口发送的操作请求时,第一控制器可以根据该操作请求和该映射关系确定出该操作请求待操作的数据在目标硬盘的缓存中的地址,然后再将该地址发送给输入输出接口,由输入输出接口直接经交换设备对该地址执行该操作请求。如此,由于对硬盘阵列中的硬盘进行操作时,操作的数据不用再经过控制器(具体为控制器的CPU)的搬移,而是可以由输入输出接口直接对该数据在目标硬盘的缓存中的地址进行操作,因此避免了控制器的CPU出现瓶颈,从而能够保证硬盘阵列的性能不受限制。
可选的,所述多个硬盘包含第一独立硬盘冗余阵列RAID,所述多个硬盘的缓存包含第二RAID,所述第一RAID的类型和所述第二RAID的类型相同。
其中,对于第一RAID的具体描述可以参见上述如图4所示的实施例中对第一RAID的相关描述;对于第二RAID的具体描述可以参见上述如图5所示的实施例中对第二RAID的相关描述,此处不再赘述。
可选的,本发明实施例提供的硬盘阵列还包括第二控制器,第二控制器与交换设备连接,本发明实施例提供的硬盘阵列处理操作请求的方法还可以包括:
S105、第一控制器经交换设备向第二控制器发送第一控制器的缓存与多个硬盘的缓存之间的映射关系。
S106、第二控制器将该映射关系缓存在第二控制器的缓存中。
可选的,本发明实施例提供的硬盘阵列处理操作请求的方法还可以包括:
S107、第一控制器经交换设备向第二控制器发送硬盘阵列的系统数据。
S108、第二控制器将硬盘阵列的系统数据缓存在第二控制器的缓存中。
可选的,本发明实施例提供的硬盘阵列处理操作请求的方法还可以包括:
S109、第一控制器经交换设备向多个硬盘中的预指定硬盘的缓存中写入第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据。
其中,硬盘阵列的系统数据存储在第一控制器的缓存中。
本发明实施例不限制S105至S109的执行时机。具体的,在实际应用中,S105至S109可以周期性执行,也可以在第一控制器的缓存中缓存的映射关系和硬盘阵列的系统数据发生改变时执行,具体的可以根据实际使用场景/需求进行设定,本发明不作限定。
对于S105至S109的其他描述具体可参见上述如图6所示的实施例中的相关描述,此处不再赘述。
可选的,本发明实施例提供的硬盘阵列处理操作请求的方法还可以包括:
S110、当硬盘阵列重新上电后,第一控制器和第二控制器经交换设备从预指定硬盘中读取第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据。
在实际应用中,S110可以在硬盘阵列重新上电后执行,还可以在其他可能的时机执行,本发明不作具体限定。其中,重新上电是指硬盘阵列掉电后再重新上电;掉电可以为正常对硬盘阵列下电,或者硬盘阵列在工作过程中异常掉电等。
对于S110的其他描述具体可参见上述如图6所示的实施例中的相关描述,此处不再赘述。
可选的,在第一控制器发生故障时,本发明实施例提供的硬盘阵列处理操作请求的方法还可以包括:
S111、输入输出接口经交换设备向第二控制器发送操作请求。
S112、第二控制器根据操作请求和第一控制器的缓存与多个硬盘的缓存之间的映射关系确定该操作请求待操作的数据在目标硬盘的缓存中的地址。
S113、第二控制器经交换设备向输入输出接口发送该地址。
在实际应用中,S111至S113可以在硬盘阵列的一个控制器(例如第一控制器)发生故障时执行,还可以在其他可能的时机执行,本发明不作具体限定。其中,控制器发生故障包括控制器的硬件发生故障和控制器的软件发生故障;控制器发生故障可以表现为控制器中的任意一个组件发生故障。
对于S111至S113的其他描述具体可参见上述如图6所示的实施例中的相关描述,此处不再赘述。
本发明实施例中,为了保证硬盘阵列的可靠性,通常会在硬盘阵列中设置多个控制器,对于某个工作的控制器,必然有对其备份的控制器。例如,本发明实施例中,在硬盘阵列中设置第一控制器和第二控制器两个控制器,且第二控制器是对第一控制器备份的控制器。
示例性的,由于第一控制器的缓存与多个硬盘的缓存之间的映射关系以及硬盘阵列的系统数据通常缓存在第一控制器的缓存中,因此为了保证数据的安全性和硬盘阵列的可靠性,第一控制器可将其缓存中缓存的数据(包括第一控制器的缓存与多个硬盘的缓存之间的映射关系和硬盘阵列的系统数据等)发送给第二控制器,由第二控制器将这些数据缓存到第二控制器的缓存中;且第一控制器也可将其缓存中缓存的这些数据写入多个硬盘中预指定硬盘的缓存中。
具体的,第一控制器将其缓存中缓存的数据发送给第二控制器,由第二控制器将这些数据缓存到第二控制器的缓存中,可以实现对第一控制器的备份(具体通过备份第一控制器的缓存中缓存的数据实现),从而在第一控制器发生故障时,可以由第二控制器基于第二控制器的缓存中缓存的数据代替第一控制器完成读或写数据中的相关操作(例如根据输入输出接口发送的读请求或写请求,确定读请求或写请求的地址)。
第一控制器将其缓存中缓存的数据写入预指定硬盘的缓存中,可以实现对这些数据的备份,从而在硬盘阵列掉电时,由于这些数据被缓存在预指定硬盘的缓存中,因此预指定硬盘的CPU可在其备电电容的备电下,将这些数据存储至预指定硬盘的存储空间中,当硬盘阵列重新上电后,可以再将预指定硬盘的存储空间中存储的这些数据读入预指定硬盘的缓存中,然后再由第一控制器和第二控制器将预指定硬盘的缓存中缓存的这些数据读入其缓存中,如此能够保证硬盘阵列掉电前和重新上电后,第一控制器和第二控制器的缓存中的数据一致,即保证硬盘阵列掉电后第一控制器和第二控制器的缓存中的数据不会丢失。
当然,也可以由第一控制器和第二控制器中的一个控制器将预指定硬盘的缓存中缓存的这些数据读入其缓存中,然后再由该控制器将这些数据发送给另一个控制器,从而实现两个控制器中都缓存了这些数据。
可选的,本发明实施例提供的硬盘阵列处理操作请求的方法还可以包括:
S112、在硬盘阵列掉电时,每个硬盘将该硬盘的缓存中的数据写入该硬盘的存储空间,其中,该硬盘中的备电电容为该硬盘提供备电。
本发明实施例中,当硬盘阵列掉电后,由于硬盘阵列的供电电源断开,因此硬盘阵列的控制器(例如第一控制器和第二控制器)将无法工作,然而由于本发明实施例的硬盘阵列的每个硬盘中都有一个备电电容,且该备电电容可以为硬盘提供一段时间(通常为几分钟,例如2分钟至5分钟)的备电,因此即使硬盘阵列掉电,硬盘中的备电电容仍然可以为硬盘提供备电,使得硬盘可以继续工作一段时间。具体的,在备电电容为硬盘提供备电的情况下,硬盘的CPU可以将硬盘的缓存中缓存的数据写入该硬盘的存储空间,从而保证硬盘的缓存中缓存的数据不会丢失。
进一步地,本发明实施例中,由于将第一控制器的缓存中缓存的数据(包括第一控制器的缓存与多个硬盘的缓存之间的映射关系和硬盘阵列的系统数据)缓存在预指定硬盘的缓存中,因此即使硬盘阵列掉电,第一控制器的缓存中缓存的数据也不会丢失,从而保证了硬盘阵列的可靠性。
可选的,本发明实施例中,在硬盘阵列中的多个硬盘的缓存形成第一控制器和第二控制器共享的全局共享缓存之后,第一控制器和第二控制器均可以对该全局共享缓存进行读或写数据的操作。如此,某个控制器或者输入输出接口可以将镜像数据(即需要备份的数据)缓存至全局共享缓存中,而无需再针对不同的控制器单独缓存镜像数据,且当某个控制器或者输入输出接口将镜像数据(即需要备份的数据)缓存至全局共享缓存中后,硬盘阵列中的第一控制器和第二控制器均可以访问该镜像数据,与现有技术相比,本发明实施例节省了控制器与控制器之间的镜像通道,简化了镜像过程,提升了数据交互效率。
可选的,本发明实施例中,当硬盘阵列中新增加硬盘时,硬盘阵列中的第一控制器可自动将该新增加硬盘的缓存加入到全局共享缓存中统一管理,即建立第一控制器的缓存和该新增加硬盘的缓存之间的映射关系。如此可以提升全局共享缓存的空间,从而提升硬盘阵列的性能。
可选的,当用新硬盘替换硬盘阵列中的原有硬盘时,硬盘阵列中的第一控制器可自动将该新硬盘的缓存加入到全局共享缓存中统一管理,即建立第一控制器的缓存和该新硬盘的缓存之间的映射关系;并从全局共享缓存中删除原有硬盘的缓存,即删除第一控制器的缓存和该原有硬盘的缓存之间的映射关系。如此可以保证全局共享缓存与实际硬盘对应,从而提升硬盘阵列的性能。
可选的,当从硬盘阵列中去掉某个硬盘时,硬盘阵列中的第一控制器可从全局共享缓存中删除该硬盘的缓存,即删除第一控制器的缓存和该硬盘的缓存之间的映射关系。如此可以保证全局共享缓存与实际硬盘对应,从而提升硬盘阵列的性能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本发明各个实施例所述方法的全部或部分步骤。所述存储介质是非短暂性(英文:non-transitory)介质,包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种硬盘阵列,其特征在于,包括:
输入输出接口,与所述输入输出接口连接的交换设备,以及与所述交换设备连接的第一控制器和多个硬盘,所述多个硬盘均包含缓存;其中,
所述输入输出接口,用于经所述交换设备向所述第一控制器发送操作请求,并经所述交换设备接收所述第一控制器发送的所述操作请求待操作的数据在目标硬盘的缓存中的地址,以及根据所述地址,经所述交换设备对所述地址执行所述操作请求;
所述第一控制器,用于经所述交换设备接收所述输入输出接口发送的所述操作请求,且根据所述操作请求和所述第一控制器的缓存与所述多个硬盘的缓存之间的映射关系确定所述地址,以及经所述交换设备向所述输入输出接口发送所述地址。
2.根据权利要求1所述的硬盘阵列,其特征在于,
所述多个硬盘包含第一独立硬盘冗余阵列RAID,所述多个硬盘的缓存包含第二RAID,所述第一RAID的类型和所述第二RAID的类型相同。
3.根据权利要求1或2所述的硬盘阵列,其特征在于,所述硬盘阵列还包括第二控制器,所述第二控制器与所述交换设备连接;
所述第一控制器,还用于经所述交换设备向所述第二控制器发送所述映射关系;
所述第二控制器,用于接收所述第一控制器发送的所述映射关系,并将所述映射关系缓存在所述第二控制器的缓存中。
4.根据权利要求3所述的硬盘阵列,其特征在于,
所述第二控制器,还用于在所述第一控制器发生故障时,经所述交换设备接收所述输入输出接口发送的所述操作请求,且根据所述操作请求和所述映射关系确定所述地址,以及经所述交换设备向所述输入输出接口发送所述地址。
5.根据权利要求1至4任意一项所述的硬盘阵列,其特征在于,
所述操作请求为读请求;或者,
所述操作请求为写请求。
6.一种硬盘阵列处理操作请求的方法,其特征在于,所述硬盘阵列包括输入输出接口,与所述输入输出接口连接的交换设备,以及与所述交换设备连接的第一控制器和多个硬盘,所述多个硬盘均包含缓存,所述方法包括:
所述输入输出接口经所述交换设备向所述第一控制器发送操作请求;
所述第一控制器根据所述操作请求和所述第一控制器的缓存与所述多个硬盘的缓存之间的映射关系,确定所述操作请求待操作的数据在目标硬盘的缓存中的地址;
所述第一控制器经所述交换设备向所述输入输出接口发送所述地址;
所述输入输出接口经所述交换设备对所述地址执行所述操作请求。
7.根据权利要求6所述的方法,其特征在于,
所述多个硬盘包含第一独立硬盘冗余阵列RAID,所述多个硬盘的缓存包含第二RAID,所述第一RAID的类型和所述第二RAID的类型相同。
8.根据权利要求6或7所述的方法,其特征在于,所述硬盘阵列还包括第二控制器,所述第二控制器与所述交换设备连接;
所述方法还包括:
所述第一控制器经所述交换设备向所述第二控制器发送所述映射关系;
所述第二控制器将所述映射关系缓存在所述第二控制器的缓存中。
9.根据权利要求8所述的方法,其特征在于,在所述第一控制器发生故障时,所述方法还包括:
所述输入输出接口经所述交换设备向所述第二控制器发送所述操作请求;
所述第二控制器根据所述操作请求和所述映射关系确定所述地址;
所述第二控制器经所述交换设备向所述输入输出接口发送所述地址。
10.根据权利要求6至9任意一项所述的方法,其特征在于,
所述操作请求为读请求;或者,
所述操作请求为写请求。
CN201510995549.3A 2015-12-25 2015-12-25 一种硬盘阵列及硬盘阵列处理操作请求的方法 Active CN106919339B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510995549.3A CN106919339B (zh) 2015-12-25 2015-12-25 一种硬盘阵列及硬盘阵列处理操作请求的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510995549.3A CN106919339B (zh) 2015-12-25 2015-12-25 一种硬盘阵列及硬盘阵列处理操作请求的方法

Publications (2)

Publication Number Publication Date
CN106919339A true CN106919339A (zh) 2017-07-04
CN106919339B CN106919339B (zh) 2020-04-14

Family

ID=59456371

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510995549.3A Active CN106919339B (zh) 2015-12-25 2015-12-25 一种硬盘阵列及硬盘阵列处理操作请求的方法

Country Status (1)

Country Link
CN (1) CN106919339B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107870744A (zh) * 2017-10-27 2018-04-03 上海新储集成电路有限公司 一种非同步镜像的混合硬盘阵列存储系统及方法
CN108874312A (zh) * 2018-05-30 2018-11-23 郑州云海信息技术有限公司 数据存储方法以及存储设备
CN109388513A (zh) * 2017-08-09 2019-02-26 华为技术有限公司 数据校验的方法、阵列控制器及硬盘
CN111913892A (zh) * 2019-05-09 2020-11-10 北京忆芯科技有限公司 使用cmb提供开放通道存储设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104657086A (zh) * 2015-02-02 2015-05-27 曙光云计算技术有限公司 云服务器的数据存储方法和系统
WO2015087424A1 (ja) * 2013-12-12 2015-06-18 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
CN105138292A (zh) * 2015-09-07 2015-12-09 四川神琥科技有限公司 磁盘数据读取方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015087424A1 (ja) * 2013-12-12 2015-06-18 株式会社日立製作所 ストレージ装置及びストレージ装置の制御方法
CN104657086A (zh) * 2015-02-02 2015-05-27 曙光云计算技术有限公司 云服务器的数据存储方法和系统
CN105138292A (zh) * 2015-09-07 2015-12-09 四川神琥科技有限公司 磁盘数据读取方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109388513A (zh) * 2017-08-09 2019-02-26 华为技术有限公司 数据校验的方法、阵列控制器及硬盘
CN109388513B (zh) * 2017-08-09 2020-11-03 华为技术有限公司 数据校验的方法、阵列控制器及硬盘
CN107870744A (zh) * 2017-10-27 2018-04-03 上海新储集成电路有限公司 一种非同步镜像的混合硬盘阵列存储系统及方法
CN108874312A (zh) * 2018-05-30 2018-11-23 郑州云海信息技术有限公司 数据存储方法以及存储设备
CN108874312B (zh) * 2018-05-30 2021-09-17 郑州云海信息技术有限公司 数据存储方法以及存储设备
CN111913892A (zh) * 2019-05-09 2020-11-10 北京忆芯科技有限公司 使用cmb提供开放通道存储设备

Also Published As

Publication number Publication date
CN106919339B (zh) 2020-04-14

Similar Documents

Publication Publication Date Title
CN104657316B (zh) 服务器
CN108052655B (zh) 数据写入及读取方法
CN103503414B (zh) 一种计算存储融合的集群系统
US8650360B2 (en) Storage system
CN103488435B (zh) Raid子系统及其数据读写方法
CN111158587B (zh) 基于存储池虚拟化管理的分布式存储系统及数据读写方法
CN103049220B (zh) 存储控制方法、存储控制装置和固态存储系统
CN105657066A (zh) 用于存储系统的负载再均衡方法及装置
CN106919339A (zh) 一种硬盘阵列及硬盘阵列处理操作请求的方法
CN102567227B (zh) 共享缓存设备的双控制器存储系统和方法
CN104115109A (zh) 具有多个非易失性半导体存储单元的存储装置及其用于在具有较高残留寿命长度的存储单元中放置热数据而在具有较低残留寿命长度的存储单元中放置冷数据的控制方法
CN105934793A (zh) 一种存储系统数据分发的方法、分发装置与存储系统
CN101567211A (zh) 一种提高磁盘可用性的方法和磁盘阵列控制器
CN102799394A (zh) 一种实现高可用集群的心跳服务的方法及装置
CN102207830A (zh) 一种缓存动态分配管理方法及装置
CN108121510A (zh) Osd选取方法、数据写入方法、装置和存储系统
CN105872031B (zh) 存储系统
KR20140139113A (ko) 메모리 모듈 가상화
KR20190024957A (ko) 메모리 버스 상의 스토리지 및 멀티 레벨 데이터 캐시
CN104536702A (zh) 一种存储阵列系统及数据写请求处理方法
CN103617006A (zh) 存储资源的管理方法与装置
CN106775504A (zh) 双控磁盘阵列系统及其数据存取方法
CN104272242A (zh) 创建加密存储体
CN106796544A (zh) 主动存储单元和阵列
CN104850355A (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