具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2所示为本发明一实施例提供的一种存储***的结构示意图。如图2所示,该存储***包括:SAS存储网络,包括至少一个SAS交换机;至少两个存储节点,连接至所述SAS存储网络;至少一个存储设备,连接至所述SAS存储网络;以及至少一个计算节点,每个存储节点对应所述至少一个计算节点中的一个或多个计算节点;其中,每个存储设备包括至少一个具备SAS接口的存储介质,所述SAS存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而直接访问所有存储介质。在本发明实施例中,存储节点是一种提供存储服务的软件模块,而非通常意义上的包含存储介质在内的硬件服务器。后续的实施例描述中的存储节点也指代相同的概念,因此不再赘述。
从上述的描述可以看出,通过采用基于SAS交换机构建的SAS存储网络,存储设备中的存储介质通过自身的SAS接口接入存储设备,存储节点和存储设备也都通过各自的SAS接口接入该SAS存储网络,使得存储节点可基于存储介质的SAS地址直接访问至具体的存储介质。同时由于SAS存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而直接访问所有存储介质,存储设备中的所有存储介质构成了一个全局存储池,每个存储节点都可通过SAS交换机读取全局存储池中的任一个存储介质。由此便可实现存储节点连接到存储介质之间的多路径切换。
该存储***的存储网络采用以SAS交换机构成的SAS存储网络,相比传统的基于IP协议的存储方案,拥有着性能高,带宽大,单台设备磁盘数量多等优点。在与主机适配器(HBA)或者服务器主板上的SAS接口结合使用后,SAS体系所提供的存储能够很容易的被连接的多台服务器同时访问。具体而言,SAS交换机到存储设备之间通过SAS线连接,存储设备与存储介质之间也是由SAS接口连接,比如,存储设备内部将SAS通道连到每个存储介质(可以在存储设备内部设置一个SAS交换芯片),SAS存储网络可以直接连接到存储介质,这相比现有基于FC网络或以太网构建的多路径具有独特的优势。同时,SAS存储网络的带宽可以达到24Gb或48Gb,是千兆以太网的几十倍,以及昂贵的万兆以太网的数倍;在链路层SAS比IP网有大约一个数量级的提升,在传输层,由于TCP协议三次握手四次关闭,开销很高且TCP的延迟确认机制和慢启动有时会导致100毫秒级的延时,而SAS协议的延时只有TCP的几十分之一,性能有更大的提升。总之,SAS存储网络比基于以太网的TCP/IP在带宽、延时性方面具有巨大优势。
基于该存储***结构,由于存储节点独立于存储设备设置,且SAS存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而直接访问所有存储介质,因此每一个计算节点都可以通过任意一个存储节点连接到所述至少一个存储设备中的每一个存储介质,由此实现了同一计算节点通过不同存储节点进行多路径访问。所形成的存储***架构中的每个存储节点都有备用的节点,可有效应对存储节点的单点故障,且路径的切换过程可在出现单点故障后立即完成,故障容错无切换接管时间。
因此,基于图2所示的存储***结构,本发明一实施例还提供了一种对存储***的访问控制方法,包括:当任何一个存储节点出现故障时,使与故障存储节点连接的计算节点通过其他存储节点读写存储介质。这样当出现存储节点的单点故障时,与故障存储节点连接的计算节点可通过其他存储节点实现多路径访问。
在本发明一实施例中,每个存储节点所在的物理服务器具备至少一个SAS接口,每个存储节点所在的物理服务器的至少一个SAS接口分别与至少一个SAS交换机对应连接;每个存储设备具备至少一个SAS接口,每个存储设备的至少一个SAS接口分别与至少一个SAS交换机对应连接。这样每个存储节点都可通过至少一条SAS路径访问存储介质。该SAS路径由当前执行访问的存储节点所在的物理服务器的任意一个SAS接口、对应该任意一个SAS接口的SAS交换机、待访问存储设备的SAS接口和待访问存储介质的SAS接口构成。
由此可见,同一计算节点除了可通过不同存储节点进行多路径访问外,还可通过同一个存储节点的至少一个SAS路径访问存储介质。当一个存储节点具备访问存储介质的多个SAS路径时,计算节点便可通过该存储节点的多个SAS路径实现多路径访问。因此,综上所述,每个计算节点其实都可通过至少两个访问路径访问存储介质;其中,至少两个访问路径包括同一个存储节点的不同SAS路径,或不同存储节点各自的任意一条SAS路径。
图3所示为本发明另一实施例提供的一种存储***的结构示意图。如图3所示,不同于图2所示的存储***,该存储***包括至少两个SAS交换机;每个存储节点所在的物理服务器具备至少两个SAS接口,每个存储节点所在的物理服务器的至少两个SAS接口分别与至少两个SAS交换机对应连接;每个存储设备具备至少两个SAS接口,每个存储设备的至少两个SAS接口分别与至少两个SAS交换机对应连接。这样至少两个存储节点中的每一个存储节点都可通过至少两条SAS路径访问存储介质,其中的每条SAS路径对应所述存储节点所在的物理服务器的不同SAS接口,该不同SAS接口则对应不同的SAS交换机。同时,由于每个存储设备都具备至少两个SAS接口,且每个存储设备中的存储介质是固定不变的,因此同一存储设备的不同SAS接口是通过不同的线路连接到相同的存储介质的。
由此可见,基于图3所示的存储***结构,在计算节点访问存储介质的访问路径上,存储节点和SAS交换机中的任一个出现单点故障都有备用的节点以供切换,可有效应对任何访问路径中任何节点的单点故障。因此,基于如图3所示存储***结构,本发明一实施例还提供了一种对存储***的访问控制方法,包括:当任何一条SAS路径出现故障时,使与故障SAS路径连接的存储节点通过其它SAS路径读写存储介质;其中,SAS路径由当前执行访问的存储节点所在的物理服务器的任意一个SAS接口、对应该任意一个SAS接口的SAS交换机、待访问存储设备的SAS接口和待访问存储介质的SAS接口构成。
应当理解,当SAS存储网络包括多个SAS交换机时,不同存储节点仍可基于同一SAS交换机对存储介质进行多路径访问,即,当任何一个存储节点出现故障时,与故障存储节点连接的计算节点可通过其他存储节点但基于同一个SAS交换机读写存储介质。
在本发明一实施例中,由于SAS存储网络中的每个存储介质都有一个SAS地址,在一个存储节点要通过任意一个SAS交换机连接到一个存储设备中的一个存储介质时,便可通过该待连接存储设备在SAS存储网络中的SAS地址来定位该待连接存储介质的位置。在一进一步实施例中,该SAS地址可为全球唯一的WWN(WorldWideName)编码。
在传统的存储***中,该存储***通常是由TCP/IP网络连接多个分布式存储节点组成的。图4示出现有技术的存储***的架构示意图。如图4所示,在传统的存储***中,各存储节点S通过接入网交换机连接到TCP/IP网络(通过核心交换机实现)。每个存储节点都是单独一台物理服务器,每台服务器都有自己的若干存储介质。各存储节点通过如IP网络这样的存储网络连接起来,构成一个存储池。在核心交换机的另一侧,各计算节点C也通过接入网交换机连接到TCP/IP网络(通过核心网交换机实现),以通过TCP/IP网络访问整个存储池。由此可见,在现有的传统存储***结构中,存储节点位于存储介质侧,或者严格来说,存储介质是存储节点所在物理机的内置盘。
而在本发明实施例所提供的存储***中,存储节点所在的物理机独立于存储设备,每个存储节点和一个计算节点设置在一台物理服务器中,该物理服务器通过SAS存储网络与存储设备连接。存储节点可通过SAS存储网络直接访问至存储介质,因此存储设备更多作为连接存储介质与存储网络的一个通道。
利用本发明实施方式所构建的将计算节点和存储节点位于同一物理机的聚合式存储***,从整体结构而言,可以减少所需物理设备的数量,从而降低成本。同时,计算节点也可以在本地访问到其希望访问的存储资源。另外,由于将计算节点和存储节点聚合在同一台物理服务器上,两者之间数据交换可以简单到仅仅是共享内存,性能特别优异。这样的方式,使得在需要进行动态平衡时,无需将物理数据在不同的存储介质中进行迁移,只需要通过配置平衡不同的存储节点所管理的存储介质即可。
在本发明实施例所提供的存储***中,存储节点独立于存储设备设置,且存储节点与计算节点,计算节点到存储介质之间的I/O数据路径长度包括:(1)存储介质到存储节点;以及(2)存储节点到聚合在同一物理服务器的计算节点(CPU总线通路)。而在图4所示现有技术所提供的存储***中,其计算节点到存储介质之间的I/O数据路径长度包括:(1)存储介质到存储节点;(2)存储节点到存储网络接入网交换机;(3)存储网络接入网交换机到核心网交换机;(4)核心网交换机到计算网络接入网交换机;以及(5)计算网络接入网交换机到计算节点。显然,本发明实施方式的存储***的总数据路径只接近于传统存储***的第(1)项。即,本发明实施例提供的存储***,通过对I/O数据路径长度的极致压缩能够极大地提高了存储***的I/O通道性能,其实际运行效果非常接近于读写本地硬盘的I/O通道。
应当理解,虽然每个计算节点所在的物理服务器都有一个存储节点,但由于物理服务器之间存在网络连接,一个物理服务器中的计算节点也可以通过另一个物理服务器中的存储节点访问存储介质,这样同一计算节点可通过不同存储节点对存储介质进行多路径访问。
在本发明一实施例中,存储节点可以是物理服务器的一个虚拟机、一个容器、直接运行在服务器的物理操作***上的一个模块或者上述组合(例如存储节点的一部分在扩展卡上的firmware,另一部分在物理操作***的一个模块,还有一部分在虚拟机);计算节点也可以是同一个物理机服务器的一个虚拟机、一个容器、直接运行在所述服务器的物理操作***上的一个模块或者上述组合。在一个实施例中,每个存储节点可以对应一个或多个计算节点。
具体而言,可以将一台物理服务器分成多个虚拟机,其中一台虚拟机做存储节点用,其它虚拟机做计算节点用;也可是利用物理OS上的一个模块做存储节点用,以便实现更好的性能。
在本发明一实施例中,形成虚拟机的虚拟化技术可以是KVM或Zen或VMware或Hyper-V虚拟化技术,形成所述容器的容器技术可以是Docker或Rockett或Odin或Chef或LXC或Vagrant或Ansible或Zone或Jail或Hyper-V容器技术。
在本发明一实施例中,各个存储节点同时只负责管理固定的存储介质,并且一个存储介质不会同时被多个存储节点进行写入,以避免数据冲突,从而能够实现每一个存储节点都能够无需借助其他存储节点而访问由其管理的存储介质,并且能够保证存储***中存储的数据的完整性。
在本发明一实施例中,可以将***中所有的存储介质按照存储逻辑进行划分,具体而言,可以将整个***的存储池划分为存储区域、存储组、存储块这样的逻辑存储层级架构,其中,存储块为最小存储单位。在本发明一实施例中,可以将存储池划分成至少两个存储区域。
在本发明一实施例中,每一个存储区域可以分为至少一个存储组。在一个较优的实施例中,每个存储区域至少被划分为两个存储组。
在一些实施例中,存储区域和存储组是可以合并的,从而可以在该存储层级架构中省略一个层级。
在本发明一实施例中,每个存储区域(或者存储组)可以由至少一个存储块组成,其中存储块可以是一个完整的存储介质、也可以是一个存储介质的一部分。为了在存储区域内部构建冗余存储,每个存储区域(或者存储组)可以由至少两个存储块组成,当其中任何一个存储块出现故障时,可以从该组中其余存储块中计算出完整的被存储数据。冗余存储方式可以为多副本模式、独立冗余磁盘阵列(RAID)模式、纠删码(erasecode)模式。在本发明一实施例中,冗余存储方式可以通过ZFS文件***建立。在本发明一实施例中,为了对抗存储设备/存储介质的硬件故障,每个存储区域(或者存储组)所包含的多个存储块不会位于同一个存储介质中,甚至也不位于同一个存储设备中。在本发明一实施例中,每个存储区域(或者存储组)所包含的任何两个存储块都不会位于同一个存储介质/存储设备中。在本发明另一实施例中,同一存储区域(或者存储组)中位于同一存储介质/存储设备的存储块数量最好小于或等于冗余存储的冗余度。举例说明,当存储冗余采取的RAID5方式时,其冗余存储的冗余度为1,那么位于同一存储设备的同一存储组的存储块数量最多为1;对RAID6,其冗余存储的冗余度为2,那么位于同一存储设备的同一存储组的存储块数量最多为2。
在本发明一实施例中,每个存储节点都只能读和写自己管理的存储区域。由于多个存储节点对同一个存储块的读操作并不会互相冲突,而多个存储节点同时写一个存储块容易发生冲突,因此,在另一个实施例中,可以是每个存储节点只能写自己管理的存储区域,但是可以读自己管理的存储区域以及其它存储节点管理的存储区域,即写操作是局域性的,但读操作可以是全局性。
在一个实施方式中,存储***还可以包括存储控制节点,其连接至SAS存储网络,用于确定每个存储节点管理的存储区域。在另一个实施方式中,每个存储节点可以包括存储分配模块,用于确定该存储节点所管理的存储区域,这可以通过每个存储节点所包括的各个存储分配模块之间的通信和协调处理算法来实现,该算法可以例如以使得各个存储节点之间的负载均衡为原则。
在本发明一实施例中,存储介质可以包括但不限于硬盘、闪存、SRAM、DRAM、NVME或NVRAM等其它形式,存储介质的访问接口可以包括但不限于SAS接口、SATA接口、PCI/e接口、DIMM接口、NVMe接口、SCSI接口、AHCI接口。
图5所示为本发明另一实施例提供的存储***的结构示意图。如图5所示,该存储***30中的存储设备被构建成多台JBOD307-310,分别通过SAS数据线连接至两个SAS交换机305和306,这两个SAS交换机构成了存储***所包括的SAS存储网络的交换核心,前端为至少两个服务器301和302。服务器301有至少两个适配器301a和301b,至少两个适配器301a和301b分别与至少两个SAS交换机305和306连接;服务器302有至少两个适配器302a和302b,至少两个适配器302a和302b分别与至少两个SAS交换机305和306连接。基于图5所示的存储***结构,本发明一实施例所提供的访问控制方法可进一步包括:当一个存储节点的任何一个适配器出现故障时,该存储节点通过其他适配器与对应的SAS交换机连接。例如,当服务器302的适配器302a出现故障时,服务器302就无法通过适配器302a与SAS交换机305连接了,此时服务器302仍可通过适配器302b与SAS交换机306连接。
服务器之间存在基本的网络连接用来监控和通信。每台服务器中都有一个存储节点,利用从SAS链路获取的信息,管理所有JBOD磁盘中的部分或全部磁盘。具体而言,可以利用本申请文件以上描述的存储区域、存储组、存储块来将JBOD磁盘划分成不同的存储组。每个存储节点都管理一组或多组这样的存储组。当每个存储组内部采用冗余存储的方式时,可以将冗余存储的元数据存在于磁盘之上,使得冗余存储能够被其他存储节点直接从磁盘识别。
在所示的示例性存储***30中,存储节点可以安装监控和管理模块,负责监控本地存储和其它服务器的状态。当某台JBOD整体异常,或者JBOD上某个磁盘异常时,数据可靠性由冗余存储来确保。当某台服务器故障时,另一台预先设定好的服务器上的存储节点中的管理模块,将按照磁盘上的数据,在本地识别并接管原来由故障服务器的存储节点所管理的磁盘。故障服务器的存储节点原本对外提供的存储服务,也将在新的服务器上的存储节点得到延续。至此,实现了一种全新的高可用的全局存储池结构。
由此可见,所构建的示例性存储***30提供了一种多点可控的、全局访问的存储池。硬件方面使用多台服务器来对外提供服务,使用JBOD来存放磁盘。将多台JBOD各自连接两台SAS交换机,两台交换机再分别连接服务器的两个HBA卡,从而确保JBOD上所有磁盘,能够被所有服务器访问。SAS冗余链路也确保了链路上的高可用性。
在每台服务器本地,利用冗余存储技术,从每台JBOD上选取磁盘组成冗余存储,避免单台JBOD的损失造成数据不可用。当一台服务器失效时,对整体状态进行监控的模块将调度另一台服务器,通过SAS通道访问失效服务器的存储节点所管理的磁盘,快速接管对方负责的这些磁盘,实现高可用的全局存储。
虽然在图5中是以JBOD存放磁盘为例进行了说明,但是应当理解,如图5所示的本发明的实施方式还支持JBOD以外的存储设备。另外,以上是以一块存储介质(整个的)作为一个存储块为例,也同样适用于将一个存储介质的一部分作为一个存储块的情形。
本发明一实施例还提供一种对存储***的访问控制装置,所应用的存储***包括:SAS存储网络,包括至少一个SAS交换机;至少两个存储节点,连接至所述SAS存储网络;至少一个存储设备,连接至所述SAS存储网络;以及至少一个计算节点,每个存储节点对应所述至少一个计算节点中的一个或多个计算节点;其中,每个存储设备包括至少一个具备SAS接口的存储介质,所述SAS存储网络被配置为使得每一个存储节点都能够无需借助其他存储节点而直接访问所有存储介质;该装置包括:
访问路径切换模块,配置为:当任何一个存储节点出现故障时,使与故障存储节点连接的计算节点通过其他存储节点读写存储介质。
在本发明一实施例中,SAS存储网络包括至少两个SAS交换机,每个存储节点所在的物理服务器具备至少两个SAS接口,每个存储节点所在的物理服务器的至少两个SAS接口分别与至少两个SAS交换机对应连接;每个存储设备具备至少两个SAS接口,每个存储设备的至少两个SAS接口分别与至少两个SAS交换机对应连接;此时该访问路径切换模块还可进一步配置为:当任何一条SAS路径出现故障时,使与故障SAS路径连接的存储节点通过其它SAS路径读写存储介质;其中,SAS路径由当前执行访问的存储节点所在的物理服务器的任意一个SAS接口、对应该任意一个SAS接口的SAS交换机、待访问存储设备的SAS接口和待访问存储介质的SAS接口构成。
本发明一实施例还提供一种计算机可读存储介质的计算机程序产品,包括计算机程序代码,当计算机程序代码由处理器执行时,其使得处理器能够按照本发明实施方式的方法来实现如本文实施方式所述的对存储***的访问控制方法。计算机存储介质可以为任何有形媒介,例如软盘、CD-ROM、DVD、硬盘驱动器、甚至网络介质等。
应当理解,虽然以上描述了本发明实施方式的一种实现形式可以是计算机程序产品,但是本发明的实施方式的方法或装置可以被依软件、硬件、或者软件和硬件的结合来实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域的普通技术人员可以理解上述的方法和设备可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本发明的方法和装置可以由诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用由各种类型的处理器执行的软件实现,也可以由上述硬件电路和软件的结合例如固件来实现。
还应当理解,为了不模糊本发明的实施方式,说明书仅对一些关键、未必必要的技术和特征进行了描述,而可能未对一些本领域技术人员能够实现的特征做出说明。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换等,均应包含在本发明的保护范围之内。