对存储系统的访问控制方法及装置的制造方法

文档序号:10511837阅读:242来源:国知局
对存储系统的访问控制方法及装置的制造方法
【专利摘要】本发明涉及对存储系统的访问控制方法及装置。该方法包括:检测至少两个存储节点中是否有存储节点出现故障;以及在检测到有一个存储节点出现故障时,对其他存储节点进行配置使得通过其他存储节点来接管之前由出现故障的存储节点管理的存储区域。根据本发明的实施方式,能够提供一种高可用的存储网络。
【专利说明】
对存储系统的访问控制方法及装置
技术领域
[0001]本发明涉及数据存储系统的技术领域,更具体地,涉及对存储系统的存储介质的访问控制的方法及装置。
【背景技术】
[0002]随着计算机应用规模越来越大,对存储空间的需求也与日倶增。对应的,将复数设备的存储资源(比如存储介质)统合为一体作为一个存储池来提供存储服务成为了现在的主流。在传统的存储系统中,该存储系统通常是由TCP/IP网络连接多个分布式存储节点组成的。图1示出现有技术的存储系统的架构示意图。如图1所示,在传统的存储系统中,各存储节点S通过接入网交换机连接到TCP/IP网络(通过核心交换机实现)。每个存储节点都是单独一台物理服务器,每台服务器都有自己的若干存储介质。各存储节点通过如IP网络这样的存储网络连接起来,构成一个存储池。
[0003]在核心交换机的另一侧,各计算节点C也通过接入网交换机连接到TCP/IP网络(通过核心网交换机实现),以通过TCP/IP网络访问整个存储池。
[0004]然而,在该传统的存储系统中,当某个存储节点发生故障后,挂载在该存储节点下的磁盘就不能再被读写,导致系统整体性能的下降。图2示出了在如图1所示的存储系统中某一个存储节点发生故障的情形,在该情形下,其下面挂载的磁盘将不能被访问。
[0005]如图2所示,当一个存储节点出现故障后,计算节点C将不能再访问该故障的存储节点所挂载和管理的磁盘上的数据。虽然可以通过多副本或者独立冗余磁盘阵列(RAID)方式,从其他磁盘上的数据来计算出该故障的存储节点管理下的磁盘上的数据,但是这会带来数据访问性能的下降。

【发明内容】

[0006]有鉴于此,本发明实施方式的目的之一在于提供一种存储系统的高可用方案,保证在存储节点发生故障时,该存储节点下的存储介质仍然可以被正常访问。
[0007]根据本发明的一个方面,提供一种对存储系统的访问控制方法。所述存储系统可以包括至少两个存储节点、存储网络以及与至少两个存储节点通过所述存储网络连接的至少一个存储设备,所述至少一个存储设备中的每个存储设备包括至少一个存储介质,所述存储系统所包括的所有存储介质构成一个存储池,所述存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而访问所有存储介质,并且将所述存储池划分成至少两个存储区域,每个存储节点负责管理零到多个存储区域。所述方法可以包括:检测所述至少两个存储节点中是否有存储节点出现故障;以及在检测到有一个存储节点出现故障时,对所述至少两个存储节点中的其他存储节点进行配置使得通过所述其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域。
[0008]根据本发明的另一个方面,提供一种对存储系统的访问控制装置。所述存储系统可以包括至少两个存储节点、存储网络以及与至少两个存储节点通过所述存储网络连接的至少一个存储设备,所述至少一个存储设备中的每个存储设备包括至少一个存储介质,所述存储系统所包括的所有存储介质构成一个存储池,所述存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而访问所有存储介质,并且将所述存储池划分成至少两个存储区域,每个存储节点负责管理零到多个存储区域。所述装置可以包括:检测模块,用于检测所述至少两个存储节点中是否有存储节点出现故障;以及接管模块,用于在检测到有一个存储节点出现故障时,对所述至少两个存储节点中的其他存储节点进行配置使得通过所述其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域。
[0009]根据本发明的又一个方面,提供一种在计算机可读存储介质中实现的计算机程序产品,所述计算机可读存储介质具有存储于其中的计算机可读程序代码部分,所述计算机可读程序代码部分被配置为执行根据前述方法。比如,所述计算机可读程序代码部分包括:第一可执行部分,用于检测所述至少两个存储节点中是否有存储节点出现故障;第二可执行部分,用于在检测到有一个存储节点出现故障时,对所述至少两个存储节点中的其他存储节点进行配置使得通过所述其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域。
[0010]根据本发明的实施方式,提供了一种高可用的存储网络解决方案,使得出现存储节点发生故障的情形下,之前由该存储节点管理的存储区域仍然能够被访问。
[0011]从下文结合附图所做出的详细描述中,本发明的这些和其他优点和特征将变得明显,其中在整个下文描述的若干附图中,类似的元件将具有类似的编号。
【附图说明】
[0012]图1示出现有技术的存储系统的架构示意图;
[0013]图2示出现有技术的存储系统中的某个存储节点出现故障时的原理示意图;
[0014]图3示出根据本发明的一个实施方式的存储系统的架构示意图;
[0015]图4示出根据本发明的一个实施方式的存储系统的某个存储节点出现故障时的原理示意图;
[0016]图5示出根据本发明的一个实施方式的对存储系统的访问控制方法的流程图;以及
[0017]图6示出根据本发明的一个实施方式的对存储系统的访问控制装置的框图。
【具体实施方式】
[0018]下文将参考附图更完整地描述本公开内容,其中在附图中显示了本公开内容的实施方式。但是这些实施方式可以用许多不同形式来实现并且不应该被解释为限于本文所述的实施方式。相反地,提供这些实例以使得本公开内容将是透彻和完整的,并且将全面地向本领域的熟练技术人员表达本公开内容的范围。
[0019]下面结合附图以示例的方式详细描述本发明的各种实施方式。
[0020]图3示出根据本发明的实施方式的存储系统的架构示意图。该存储系统包括存储网络;存储节点,连接至所述存储网络,本发明实施例中,存储节点为提供存储服务的软件模块,而非通常意义上的包含存储介质在内的硬件服务器;以及存储设备,同样连接至所述存储网络。每个存储设备包括至少一个存储介质。例如,发明人常用的存储设备可以放置45块存储介质。其中,所述存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而访问所有存储介质。图3中将存储网络示意为SAS交换机,但是应当理解,存储网络还可以是SAS集合、或者将在后文中讨论的其他形式。图3示意性地示出了三个存储节点,即存储节点S1、存储节点S2和存储节点S3,分别直接与SAS交换机相连。图3所示的存储系统包括物理服务器31、32和33,这些物理服务器分别通过存储网络与存储设备连接。物理服务器31包括共处于其的计算节点CU、C12和存储节点SI,物理服务器32包括共处于其的计算节点C21、C22和存储节点S2,物理服务器33包括共处于其的计算节点C31、C32和存储节点S3。图3所示的存储系统包括存储设备34、35和36,存储设备34包括共处于其的存储介质1、存储介质2和存储介质3,存储设备35包括共处于其的存储介质1、存储介质2和存储介质3,存储设备36包括共处于其的存储介质1、存储介质2和存储介质3。
[0021]利用本发明实施例提供的存储系统,每一个存储节点都能够无需借助其他存储节点而访问所有存储介质,从而使得本发明所有的存储介质都实际上被所有的存储节点共享,进而实现了全局存储池的效果。也就是说,存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而访问所有存储介质。进一步地,存储网络被配置为使得各个存储节点同时只负责管理固定的存储介质,并且保证一个存储介质不会被同时多个存储节点进行写入,导致数据损坏,从而能够实现每一个存储节点都能够无需借助其他存储节点而访问由其管理的存储介质,并且能够保证存储系统中存储的数据的完整性。此外,可以将所构建的存储池划分成至少两个存储区域,每个存储节点负责管理零到多个存储区域。参考图3,其利用不同背景图案、示意性示出了存储节点管理的存储区域的情形,其中对相同的存储区域包括的存储介质、以及负责管理其的存储节点以相同的背景图案进行表示。具体而言,存储节点SI负责管理第一存储区域,其包括处于存储设备34的存储介质1、处于存储设备35的存储介质1、以及处于存储设备36的存储介质I;存储节点S2负责管理第二存储区域,其包括处于存储设备34的存储介质2、处于存储设备35的存储介质2、以及处于存储设备36的存储介质2;存储节点S3负责管理第三存储区域,其包括处于存储设备34的存储介质3、处于存储设备35的存储介质3、以及处于存储设备36的存储介质3。
[0022]同时,从上述的描述可以看出,相比于现有技术(其中存储节点位于存储介质侧,或者严格来说,存储介质是存储节点所在物理机的内置盘),本发明实施例中,存储节点所在的物理机独立于存储设备,存储设备更多作为连接存储介质与存储网络的一个通道。
[0023]这样的方式,使得在某个存储节点出现故障时,受该存储节点管理的存储区域不会变成存储系统中的无效存储区域,而仍可以被其他存储节点所访问,可以将该存储区域的管理权限分配给其他存储节点。
[0024]在本发明另一实施例中,存储节点侧进一步包括计算节点,并且计算节点和存储节点设置在一台物理服务器中,该物理服务器通过存储网络与存储设备连接。利用本发明实施方式所构建的将计算节点和存储节点位于同一物理机的聚合式存储系统,从整体结构而言,可以减少所需物理设备的数量,从而降低成本。同时,计算节点也可以在本地访问到其希望访问的存储资源。另外,由于将计算节点和存储节点聚合在同一台物理服务器上,两者之间数据交换可以简单到仅仅是共享内存,性能特别优异。
[0025]本发明实施例提供的存储系统中,计算节点到存储介质之间的I/O数据路径长度包括:(I)存储介质到存储节点;以及(2)存储节点到聚合在同一物理服务器的计算节点(CPU总线通路)。而相比之下,图1所示现有技术的存储系统,其计算节点到存储介质之间的I/O数据路径长度包括:(I)存储介质到存储节点;(2)存储节点到存储网络接入网交换机;
(3)存储网络接入网交换机到核心网交换机;(4)核心网交换机到计算网络接入网交换机;以及(5)计算网络接入网交换机到计算节点。显然,本发明实施方式的存储系统的总数据路径只接近于传统存储系统的第(I)项。即,本发明实施例提供的存储系统,通过对I/O数据路径长度的极致压缩能够极大地提高了存储系统的I/O通道性能,其实际运行效果非常接近于读写本地硬盘的I/O通道。
[0026]在本发明一实施例中,存储节点可以是物理服务器的一个虚拟机、一个容器或直接运行在服务器的物理操作系统上的一个模块,计算节点也可以是同一个物理机服务器的一个虚拟机、一个容器或直接运行在所述服务器的物理操作系统上的一个模块。在一个实施例中,每个存储节点可以对应一个或多个计算节点。
[0027]具体而言,可以将一台物理服务器分成多个虚拟机,其中一台虚拟机做存储节点用,其它虚拟机做计算节点用;也可是利用物理OS上的一个模块做存储节点用,以便实现更好的性能。
[0028]在本发明一实施例中,形成虚拟机的虚拟化技术可以是KVM或Zen或VMware或Hyper-V虚拟化技术,形成所述容器的容器技术可以是Docker或Rockett或Odin或Chef■或LXC 或 Vagrant 或 Ansib Ie或 Zone或 Jai I 或Hyper-V容器技术。
[0029]在本发明一实施例中,各个存储节点同时只负责管理固定的存储介质,并且一个存储介质不会同时被多个存储节点进行写入,以避免数据冲突,从而能够实现每一个存储节点都能够无需借助其他存储节点而访问由其管理的存储介质,并且能够保证存储系统中存储的数据的完整性。
[0030]在本发明一实施例中,可以将系统中所有的存储介质按照存储逻辑进行划分,具体而言,可以将整个系统的存储池划分为存储区域、存储组、存储块这样的逻辑存储层级架构,其中,存储块为最小存储单位。在本发明一实施例中,可以将存储池划分成至少两个存储区域。
[0031]在本发明一实施例中,每一个存储区域可以分为至少一个存储组。在一个较优的实施例中,每个存储区域至少被划分为两个存储组。
[0032]在一些实施例中,存储区域和存储组是可以合并的,从而可以在该存储层级架构中省略一个层级。
[0033]在本发明一实施例中,每个存储区域(或者存储组)可以由至少一个存储块组成,其中存储块可以是一个完整的存储介质、也可以是一个存储介质的一部分。为了在存储区域内部构建冗余存储,每个存储区域(或者存储组)可以由至少两个存储块组成,当其中任何一个存储块出现故障时,可以从该组中其余存储块中计算出完整的被存储数据。冗余存储方式可以为多副本模式、独立冗余磁盘阵列(RAID)模式、纠删码(erase code)模式。在本发明一实施例中,冗余存储方式可以通过ZFS文件系统建立。在本发明一实施例中,为了对抗存储设备/存储介质的硬件故障,每个存储区域(或者存储组)所包含的多个存储块不会位于同一个存储介质中,甚至也不位于同一个存储设备中。在本发明一实施例中,每个存储区域(或者存储组)所包含的任何两个存储块都不会位于同一个存储介质/存储设备中。在本发明另一实施例中,同一存储区域(或者存储组)中位于同一存储介质/存储设备的存储块数量最好小于或等于冗余存储的冗余度。举例说明,当存储冗余采取的RAID 5方式时,其冗余存储的冗余度为I,那么位于同一存储设备的同一存储组的存储块数量最多为I;对RAID6,其冗余存储的冗余度为2,那么位于同一存储设备的同一存储组的存储块数量最多为2。
[0034]在本发明一实施例中,每个存储节点都只能读和写自己管理的存储区域。由于多个存储节点对同一个存储块的读操作并不会互相冲突,而多个存储节点同时写一个存储块容易发生冲突,因此,在另一个实施例中,可以是每个存储节点只能写自己管理的存储区域,但是可以读自己管理的存储区域以及其它存储节点管理的存储区域,即写操作是局域性的,但读操作可以是全局性。
[0035]在一个实施方式中,存储系统还可以包括存储控制节点,其连接至存储网络,用于确定每个存储节点管理的存储区域。在另一个实施方式中,每个存储节点可以包括存储分配模块,用于确定该存储节点所管理的存储区域,这可以通过每个存储节点所包括的各个存储分配模块之间的通信和协调处理算法来实现。
[0036]在一个实施例中,在监测到一个存储节点发生故障时,可以对其他部分或全部存储节点进行配置,使得这些存储节点接管之前由所述发生故障的存储节点管理的存储区域。例如,可以由其中一个存储节点接管出现故障的存储节点管理的存储区域,或者,可以由其它至少两个存储节点进行接管,其中每个存储节点接管出现故障的存储节点管理的部分的存储区域,比如其他至少两个存储节点分别接管该存储区域内的不同存储组。在本文中,存储节点对存储区域的接管也被描述为将存储区域迀移到存储节点。
[0037]在一个实施例中,存储介质可以包括但不限于硬盘、闪存、SRAM、DRAM、NVME或其它形式,存储介质的访问接口可以包括但不限于SAS接口、SATA接口、PCI/e接口、DMM接口、NVMe接口、SCSI接口、AHCI接口。
[0038]在本发明一实施例中,存储网络可以包括至少一个存储交换设备,通过其中包括的存储交换设备之间的数据交换来实现存储节点对存储介质的访问。具体而言,存储节点和存储介质分别通过存储通道与存储交换设备连接。
[0039]在本发明一实施例中,存储交换设备可以是SAS交换机或PCI/e交换机,对应地,存储通道可以是SAS (串行连接SCSI)通道或PCI/e通道。
[0040]以SAS通道为例,相比传统的基于IP协议的存储方案,基于SAS交换的方案,拥有着性能高,带宽大,单台设备磁盘数量多等优点。在与主机适配器(HBA)或者服务器主板上的SAS接口结合使用后,SAS体系所提供的存储能够很容易的被连接的多台服务器同时访问。
[0041]具体而言,SAS交换机到存储设备之间通过一根SAS线连接,存储设备与存储介质之间也是由SAS接口连接,比如,存储设备内部将SAS通道连到每个存储介质(可以在存储设备内部设置一个SAS交换芯片)。由于SAS网络的带宽可以达到24Gb或48Gb,是千兆以太网的几十倍,以及昂贵的万兆以太网的数倍;同时在链路层SAS比IP网有大约一个数量级的提升,在传输层,由于TCP协议三次握手四次关闭,开销很高且TCP的延迟确认机制和慢启动有时会导致100毫秒级的延时,SAS协议的延时只有TCP的几十分之一,性能有更大的提升。总之,SAS网络比基于以太网的TCP/IP在带宽、延时性方面具有巨大优势。本领域技术人员可以理解,PCI/e通道的性能也可以适应系统的需求。
[0042]在本发明一实施例中,存储网络可以包括至少两个存储交换设备,所述每个存储节点都可以通过任意一个存储交换设备连接到任何一个存储设备,进而连接至存储介质。当任何一个存储交换设备或连接到一个存储交换设备的存储通道出现故障时,存储节点通过其它存储交换设备读写存储设备上的数据。
[0043]图4示出根据本发明图3所示的存储系统的某个存储节点出现故障时的原理示意图。图4示出了存储节点S3出现故障的情形。当存储节点3出现故障后,可以由其他存储节点来接管之前由存储节点S3管理的存储介质。图4利用不同背景图案、示意性地示出了存储节点SI和S2对于之前由存储节点S3管理的存储介质进行结构后的情形,即存储设备34和36包括的存储介质3由存储节点SI接管,存储设备35包括的存储介质3由存储节点S2接管。计算节点C可以通过剩余的两个存储节点,即存储节点SI和存储节点S2,来访问存储设备34、35和36包括的各个存储介质上的数据。
[0044]应当理解,前述参考图3和图4讨论存储系统所包括的存储节点、存储设备和存储介质的数目仅是示意性的,根据本发明实施方式的存储系统可以包括至少两个存储节点、存储网络以及与至少两个存储节点通过存储网络连接的至少一个存储设备,所述至少一个存储设备中的每个存储设备可以包括至少一个存储介质,存储网络可以被配置为使得每一个存储节点都能够无需借助其他存储节点而访问至少一个存储区域。
[0045]图5示出根据本发明的实施方式的对存储系统的访问控制方法50的流程图。
[0046]在步骤S501,检测至少两个存储节点中是否有存储节点出现故障。可以实时监测每个存储节点的可达性。
[0047]在步骤S502,在检测到有一个存储节点出现故障时,对至少两个存储节点中的其他存储节点进行配置使得通过其他存储节点来接管之前由出现故障的存储节点管理的存储区域。
[0048]具体而言,可以记录每一个存储节点管理的存储区域的存储区域列表,通过修改对相关存储节点所管理的存储区域列表来使其接管之前由出现故障的存储节点管理的存储区域。比如,通过修改存储区域的配置表进行调整,所述至少两个存储节点根据所述配置表来确定其所管理的存储区域。对前述配置表的调整可以通过前述的存储系统包括的存储控制节点、或者存储节点包括的存储分配模块进行。
[0049]根据本发明的实施方式,对至少两个存储节点中是否有存储节点出现故障的检测可以通过检测对方的心跳来实现。各个服务器(计算节点和存储节点、或者存储节点和存储节点)之间通过心跳来检测对方是否出现故障。可以有多种方式实现心跳。在一个实施例中,比如通过TCP连接来实现,首先检测方发送一个数据包,接收方自动回复一个数据包,如果检测方长时间没有收到对方的回应就可以认为对方出现故障。在一个实施例中,比如通过仲裁块的方式来实现心跳,双方定时向仲裁块的不同区域写入数据,同时定时读取对方写入的数据,如果发现对方长时间没有写入新数据,则认为对方出现故障。进一步地,可能需要解决误判的情况,即对方并未出现故障,仅仅是双方之间的心跳出现问题,比如双方之间的网络被断开。通常会采用多种独立的心跳来综合判断。比如上述的TCP连接和仲裁块同时使用,只有当两种心跳都确认对方出现故障时才认为是真正的故障。
[0050]根据本发明的实施方式,每个存储区域被多个存储节点中的一个存储节点所管理,当存储节点启动后,存储节点自动连接受它管理的存储区域,然后进行导入,完成之后就可以向上层计算节点提供存储服务。
[0051]当监测到一个存储节点间出现故障时,需要确定受其管理的存储区域要迀移到的存储节点,即接管该存储区域的存储节点。对于需要将存储区域迀移到的存储节点的确定,可以有多种实施方式。
[0052]在一个实施方式中,可以由管理人员人工判断迀移到的存储节点。
[0053]在一个实施方式中,可以采用配置文件方式,即针对每个存储区域预先配置迀移目标列表,比如按照优先级排列的存储节点列表,当确定该存储区域(或者部分)需要被迀移后,按照目标列表依次选择迀移目的地。应当注意,采用此种方式,应当保证迀移后不会造成目标存储节点负载过高。可选地,可以设置热备存储节点,其平常不管理任何存储区域,即是没有负载的。一旦任何一个存储节点出现故障,则可以将故障节点上的存储区域迀移到该热备存储节点。
[0054]在一个实施方式中,可以根据存储节点的负载情况选择要迀移到的存储节点,可以监控各个存储节点负载情况,例如收集CPU使用率、内存使用率、网络带宽使用率等信息,将所有这些信息进行加权综合,以便选择需要将存储区域迀移到的存储节点。例如,各个存储节点可以定期或者不定期地向其他存储节点报告自身的负载情况,当需要迀移的时候,需要迀移数据的存储节点优先选择负载最低的其他存储节点作为目标存储节点进行迀移。备选地,当故障存储节点恢复后,需要将被其他存储节点接管的存储区域重新迀移回来,此时需要迀移的存储区域和目标存储节点已知(例如,可以将每个迀移过程记录在前述配置文件中),只需要恢复该节点原来管理的存储区域即可。
[0055]可以由存储系统的管理人员确认并启动具体迀移过程,或者也可以由程序开启该迀移过程。在具体迀移过程、即接管过程中,首先应该确保涉及到的双方存储节点不再运行,避免两个存储节点同时访问导致的数据损坏,具体方式比如说通过IPMI接口强制关闭对方的电源;然后目标存储节点需要对存储区域进行初始化,修复不一致数据(如果存在),最后通知上层应用通过该存储节点来访问被接管的存储区域。
[0056]应当注意,迀移过程、或接管过程需要尽量减少对上层计算节点的影响,例如可以选择在应用负载最小的时候迀移,比如在午夜进行(假设该时间段负载最小);在确定在迀移过程需要关闭计算节点的情况下,应当尽量在该计算节点的低使用率的情况下进行;可以预先配置迀移策略,以便处理在确定需要对多个存储区域或者一个存储区域的多个部分进行迀移的情况下的迀移的顺序和并发数量的控制;在开始对存储区域进行迀移之际,可以对相关存储节点对相关存储区域的写或者读操作进行必要的配置,以便保证数据的完整性,例如将所有缓存数据写入磁盘;在存储区域迀移到目标存储节点后,存储节点需要对该存储节点进行必要的初始化工作,然后该存储区域才可被上层计算节点访问;在迀移过程完成后应当再次监控负载情况,确认负载是否平衡。
[0057]进一步地,用于接管之前由出现故障的存储节点管理的存储区域的其他存储节点可以选择当前没有管理任何存储区域的节点。备选地,每个接管的存储节点可以按照接管的数量尽量平均分配为原则分配被接管的存储区域,或者每个接管的存储节点可以按照负载程度来分配被接管的存储区域。
[0058]在一个实施例中,可以对所述至少两个存储节点中的其他存储节点中的部分或全部存储节点进行配置,使得通过其来接管之前由所述出现故障的存储节点管理的存储区域。例如,可以由其它存储节点中的一个节点接管出现故障的存储节点管理的存储区域,或者,可以由其它存储节点中的至少两个存储节点进行接管,其中每个存储节点接管出现故障的存储节点管理的部分的存储区域。
[0059]如前所述,存储系统可以包括存储控制节点,其连接至所述存储网络,用于确定所述至少两个存储节点中的每个存储节点管理的存储区域;或者,所述存储节点还可以包括存储分配模块,用于确定所述存储节点所管理的存储区域,存储分配模块之间可以共享数据。
[0060]在一个实施方式中,存储控制节点或者存储分配模块,记录了各个存储节点负责的存储区域列表。存储节点启动后向存储控制节点或者存储分配模块查询自己管理的存储区域,然后扫描这些存储区域,完成初始化工作。当确定需要发生存储区域迀移时,存储控制节点或者存储分配模块修改相关存储节点的存储区域列表,然后通知存储节点按照要求完成实际的切换工作。
[0061 ]举例而言,假设在SAS存储系统中需要将存储区域I从存储节点A迀移到存储节点B,则迀移过程可以包括如下步骤:
[0062]I)从存储节点A的已管理存储区域列表中删除存储区域I;
[0063]2)在存储节点A上将所有缓存数据强制刷入存储区域I;
[0064]3)在存储节点A上通过SAS指令关闭(或者重置)存储节点A和存储区域I中所有存储介质之间的SAS链接;
[0065]4)在存储节点B上的已管理存储区域列表中添加存储区域I;
[0066]5)在存储节点B上通过SAS指令打开(或者重置)存储节点B和存储区域I中所有存储介质之间的SAS链接;
[0067]6)存储节点B扫描存储区域I中的所有存储介质,完成初始化工作;以及
[0068]7)应用程序通过存储节点B访问存储区域I中的数据。
[0069]应当注意,尽管出于简化说明的目的将本发明所述的方法表示和描述为一连串动作,但是应理解和认识到要求保护的主题内容将不受这些动作的执行顺序所限制,因为一些动作可以按照与这里示出和描述的顺序不同的顺序出现或者与其它动作并行地出现,同时一些动作还可能包括若干子步骤,而这些子步骤之间可能出现时序上交叉执行的可能。另外,可能并非所有图示的动作是实施根据所附权利要求书所述的方法所必须的。再者,前述步骤的描述不排除该方法还可以包括可能取得附加效果的附加步骤。还应当理解,不同的实施方式或者流程中描述的方法步骤可以相互组合或者替换。
[0070]图6示出根据本发明的实施方式的对存储系统的访问控制装置70的框图。访问控制装置60可以包括:检测模块601,用于检测至少两个存储节点中是否有存储节点出现故障;以及接管模块602,用于在检测到有一个存储节点出现故障时,对所述至少两个存储节点中的其他存储节点进行配置使得通过其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域。
[0071]应当理解,装置60中记载的每个模块与参考图5描述的方法50中的每个步骤相对应。由此,上文针对图5描述的操作和特征同样适用于装置60及其中包含的模块,重复的内容在此不再赘述。
[0072]根据本发明的实施方式,装置60可以被实现在每个存储节点处,也可以被实现在多个存储节点的调度装置中。
[0073]本发明的教导还可以实现为一种计算机可读存储介质的计算机程序产品,包括计算机程序代码,当计算机程序代码由处理器执行时,其使得处理器能够按照本发明实施方式的方法来实现如本文实施方式所述的对存储系统的访问控制方法。计算机存储介质可以为任何有形媒介,例如软盘、⑶-ROM、DVD、硬盘驱动器、甚至网络介质等。
[0074]根据本发明的实施方式,在一个存储节点出现故障的情况下,应用程序仍然可以正常访问该存储节点管理的存储区域上的数据,不会出现存储介质不可访问的问题。在进一步的情形下,也不会出现因可用磁盘数降低而导致的性能下降。
[0075]应当理解,虽然以上描述了本发明实施方式的一种实现形式可以是计算机程序产品,但是本发明的实施方式的方法或装置可以被依软件、硬件、或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行系统,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和设备可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的方法和装置可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
[0076]应当理解,尽管在上文的详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅是示例性而非强制性的。实际上,根据本发明的示例性实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中实现。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来实现。
[0077]还应当理解,为了不模糊本发明的实施方式,说明书仅对一些关键、未必必要的技术和特征进行了描述,而可能未对一些本领域技术人员能够实现的特征做出说明。
[0078]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。
【主权项】
1.一种对存储系统的访问控制方法,所述存储系统包括至少两个存储节点、存储网络以及与至少两个存储节点通过所述存储网络连接的至少一个存储设备,所述至少一个存储设备中的每个存储设备包括至少一个存储介质,所述存储系统所包括的所有存储介质构成一个存储池,所述存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而访问所有存储介质,并且将所述存储池划分成至少两个存储区域,每个存储节点负责管理零到多个存储区域,所述方法包括: 检测所述至少两个存储节点中是否有存储节点出现故障;以及 在检测到有一个存储节点出现故障时,对所述至少两个存储节点中的其他存储节点进行配置使得通过所述其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域。2.根据权利要求1所述的访问控制方法,其中,所述存储网络包括至少一个存储交换设备,所有至少两个存储节点和所述至少一个存储介质都通过存储通道与存储交换设备连接;其中,所述存储通道是SAS通道或PCI/e通道,所述存储交换设备是SAS交换机或PCI/e交换机。3.根据权利要求1所述的访问控制方法,其中,所述检测所述至少两个存储节点中是否有存储节点出现故障具体为: 通过检测存储节点的心跳来确定存储节点是否出现故障。4.根据权利要求1、2或3所述的访问控制方法,其中,对所述至少两个存储节点中的其他存储节点进行配置使得通过所述其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域具体为: 对所述至少两个存储节点中的其他存储节点中的部分或全部存储节点进行配置,使得通过其来接管之前由所述出现故障的存储节点管理的存储区域。5.根据权利要求4所述的方法,其中,进一步包括: 记录了所述至少两个存储节点中的每个存储节点管理的存储区域的存储区域列表。6.根据权利要求5所述的方法,其中,对所述至少两个存储节点中的其他存储节点中的部分或全部存储节点进行配置,使得通过其来接管之前由所述出现故障的存储节点管理的存储区域包括: 修改所述至少两个存储节点中的其他存储节点中的部分或全部存储节点对应的所述存储区域列表。7.根据权利要求6所述的方法,其特征在于,所述存储系统还包括: 存储控制节点,连接至所述存储网络,用于确定所述至少两个存储节点中的每个存储节点管理的存储区域;或 所述存储节点还包括: 存储分配模块,用于确定所述存储节点所管理的存储区域; 其中,所述存储控制节点或者所述存储分配模块记录了所述至少两个存储节点中的每个存储节点管理的存储区域的存储区域列表。8.根据权利要求4所述的访问控制方法,其中,所述其他存储节点中的部分或全部存储节点为: 由所述存储系统的管理人员人工地指定; 采用配置文件方式来确定;或者 根据存储节点的负载情况来确定。9.根据权利要求8所述的访问控制方法,其中,所述其他存储节点中的部分或全部存储节点为预先配置的热备存储节点。10.根据权利要求3所述的访问控制方法,其特征在于,通过检测存储节点的心跳来确定存储节点是否出现故障包括: 通过TCP连接来实现,或 通过仲裁块的方式来实现,或 通过TCP连接和仲裁块相结合的方式来实现。11.一种对存储系统的访问控制装置,所述存储系统包括至少两个存储节点、存储网络以及与至少两个存储节点通过所述存储网络连接的至少一个存储设备,所述至少一个存储设备中的每个存储设备包括至少一个存储介质,所述存储系统所包括的所有存储介质构成一个存储池,所述存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而访问所有存储介质,并且将所述存储池划分成至少两个存储区域,每个存储节点负责管理零到多个存储区域,所述装置包括: 检测模块,用于检测所述至少两个存储节点中是否有存储节点出现故障;以及 接管模块,用于在检测到有一个存储节点出现故障时,对所述至少两个存储节点中的其他存储节点进行配置使得通过所述其他存储节点来接管之前由所述出现故障的存储节点管理的存储区域。
【文档编号】G06F3/06GK105867842SQ201610173783
【公开日】2016年8月17日
【申请日】2016年3月23日
【发明人】王东临, 金友兵, 莫仲华
【申请人】天津书生云科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1