一种基于交换网络的磁盘阵列发现方法、主机总线适配器和磁盘框的制作方法
【技术领域】
[0001] 本发明涉及存储技术领域,尤其涉及一种基于交换网络的磁盘阵列发现方法、主 机总线适配器和磁盘框。
【背景技术】
[0002] 随着存储技术的发展,构建大型高容量高性能的磁盘阵列系统有利于大数据的传 输和存储。如图1所示为传统的磁盘阵列系统架构图,包括主控、扩展器(包括分列扩展 器和边缘扩展器)、主机总线适配器(Host Bus Adapter, HBA)和终端装置(end device), 该终端装置中包括若干个磁盘,例如包括串行连接小型计算机系统接口(Serial Attached Small Computer System Interface, SAS),通过扩展器(expander)技术实现了磁盘容量的 扩展。如图1所示的系统中,主控下的设备与主控有明确的归属关系,一般由主控发现系统 中的磁盘阵列,构建磁盘拓扑,具体方法为:主控主动发起"SMP REPORT GENERAL request" 命令给拓扑结构下的扩展器、终端装置、主机总线适配器等设备,这些设备通过回复"SMP REPORT GENERAL Response"命令来告知主控自身信息,从而完成磁盘发现的过程,构建起 磁盘拓扑。
[0003] 然而,由于支持SRS协议的磁盘与主控之间的传输距离较短,通常只能在6米以 内,且扩展存储容量也需要基于扩展器,使得传输距离和存储容量受到限制,传统的磁盘阵 列系统已经渐渐不能满足应用需求。随着大数据的发展,对磁盘阵列存储容量和传输距离 的要求也在不断提高,将存储设备网络化的需求应运而生。在基于交换网络的磁盘阵列系 统中,主控和存储设备平等的处于交换网络中,没有了扩展器,存储容量理论上可以无限扩 展,主控与磁盘阵列没有明确的归属关系。然而,因为交换网络的隔离,管理软件上电初始 化时无法明确的得知磁盘框的位置与个数,传统的磁盘发现方案不再适合于新的应用场 景。所以传统方式下管理软件无法一对一主动发命令读取磁盘信息完成磁盘阵列发现的过 程。
【发明内容】
[0004] 本发明实施例提供了一种基于交换网络的磁盘阵列发现方法、主机总线适配器和 磁盘框,可以简单有效地发现基于交换网络的磁盘阵列。
[0005] 第一方面,提供了一种基于交换网络的磁盘阵列发现方法,主机总线适配器HBA 和至少一个磁盘框通过所述交换网络连接,所述磁盘框中的磁盘构成所述磁盘阵列;所述 方法包括:
[0006] 所述HBA通过所述交换网络广播第一心跳广播包,所述第一心跳广播包包括所述 HBA的交换网络地址;
[0007] 所述HBA接收至少一个所述磁盘框发送的第一心跳响应包,所述第一心跳响应包 包括至少一个所述磁盘框的磁盘阵列信息,获取至少一个所述磁盘框的磁盘阵列信息;其 中,所述磁盘框的磁盘阵列信息包括所述磁盘框的交换网络地址。
[0008] 在第一种可能的实现方式中,所述方法还包括:
[0009] 所述HBA将所述获取的至少一个所述磁盘框的磁盘阵列信息记录在所述磁盘阵 列信息表中。
[0010] 结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述磁盘 框的磁盘阵列信息还包括所述磁盘框中的磁盘的内部地址;则所述HBA将所述获取的至少 一个所述磁盘框的磁盘阵列信息记录在所述磁盘阵列信息表中,包括:
[0011] 所述HBA将至少一个所述磁盘框的交换网络地址记录在所述磁盘阵列信息表中;
[0012] 所述HBA以至少一个所述磁盘框的交换网络地址为索引,将至少一个所述磁盘框 中的磁盘的内部地址记录在所述磁盘阵列信息表中。
[0013] 结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在 第三种可能的实现方式中,所述方法还包括:
[0014] 所述HBA通过所述交换网络广播第二心跳广播包,所述第二心跳广播包包括所述 HBA的交换网络地址;
[0015] 所述HBA接收至少一个所述磁盘框发送的第二心跳响应包,所述第二心跳响应包 包括所述磁盘框的磁盘阵列信息;
[0016] 所述HBA根据所述接收到的所述第二心跳响应包,确定所述交换网络中是否有磁 盘框的磁盘阵列信息发生更新;
[0017] 如果所述交换网络中有磁盘框的磁盘阵列信息发生更新,则所述HBA根据所述接 收到的所述第二心跳响应包,对所述磁盘阵列信息表中记录的磁盘框的磁盘阵列信息进行 更新。
[0018] 结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述HBA 根据所述接收到的所述第二心跳响应包,确定所述交换网络中是否有磁盘框的磁盘阵列信 息发生更新;如果所述交换网络中有磁盘框的磁盘阵列信息发生更新,则所述HBA根据所 述接收到的所述第二心跳响应包,对所述磁盘阵列信息表中记录的磁盘框的磁盘阵列信息 进行更新,包括:
[0019] 所述HBA将所述接收的所述第二心跳响应中的磁盘框的磁盘阵列信息与所述磁 盘阵列信息表中记录的信息进行比较;
[0020] 如果所述磁盘阵列信息表中未记录所述接收的所述第二心跳响应中的磁盘框的 磁盘阵列信息,则所述HBA确定所述交换网络中有磁盘框的磁盘阵列信息发生更新;
[0021] 所述HBA将所述接收的所述第二心跳响应中的磁盘框的磁盘阵列信息记录在所 述磁盘阵列信息表中。
[0022] 结合第一方面的第三种可能的实现方式,在第五种可能的实现方式中,所述HBA 根据所述接收到的所述第二心跳响应包,确定所述交换网络中是否有磁盘框的磁盘阵列信 息发生更新;如果所述交换网络中有磁盘框的磁盘阵列信息发生更新,则所述HBA根据所 述接收到的所述第二心跳响应包,对所述磁盘阵列信息表中记录的磁盘框的磁盘阵列信息 进行更新,包括:
[0023] 所述HBA将所述接收的所述第二心跳响应中的磁盘框的磁盘阵列信息与所述磁 盘阵列信息表中记录的信息进行比较;
[0024] 如果所述磁盘阵列信息表中记录了所述接收的所述第二心跳响应中的磁盘框的 交换网络地址,但所述磁盘阵列信息表中以所述接收的所述第二心跳响应中的磁盘框的交 换网络地址为索引对应记录的磁盘框中的磁盘的内部地址,与所述接收的所述第二心跳响 应中的磁盘框中的磁盘的内部地址不一致,则所述HBA确定所述交换网络中有磁盘框的磁 盘阵列信息发生更新;
[0025] 所述HBA根据所述接收的所述第二心跳响应中的磁盘框中的磁盘的内部地址,以 所述第二心跳响应中的磁盘框的交换网络地址为索引,更新所述磁盘阵列信息表中记录的 磁盘框中的磁盘的内部地址。
[0026] 结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在 第六种可能的实现方式中,所述方法还包括:
[0027] 所述HBA通过所述交换网络周期性地广播所述第二心跳广播包;
[0028] 所述HBA根据接收到的第二心跳响应包确定是否有磁盘框发生交换网络断链;
[0029] 如果有磁盘框发生交换网络断链,则所述HBA删除所述磁盘阵列信息表中记录的 发生交换网络断链的所述磁盘框的磁盘阵列信息。
[0030] 结合第一方面或第一方面的第一种可能的实现方式或第一方面的第二种可能的 实现方式,在第七种可能的实现方式中,所述交换网络为以太网;则所述第一心跳广播包和 所述第一心跳响应包为以太网报文。
[0031] 第二方面,提供了一种基于交换网络的磁盘阵列发现方法,主机总线适配器HBA 和磁盘框通过所述交换网络连接,所述磁盘框中的磁盘构成所述磁盘阵列;所述方法包 括:
[0032] 所述磁盘框接收所述HBA通过所述交换网络广播的心跳广播包,所述心跳广播包 包括所述HBA的交换网络地址;
[0033] 所述磁盘框根据所述HBA的交换网络地址,向所述HBA发送心跳响应包,所述心跳 响应包包括所述磁盘框的磁盘阵列信息;其中,所述磁盘框的磁盘阵列信息包括所述磁盘 框的交换网络地址。
[0034] 在第一种可能的实现方式中,所述方法还包括:
[0035] 所述磁盘框记录所述HBA的交换网络地址。
[0036] 结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述方法 还包括:
[0037] 如果所述磁盘框确定与所述HBA发生交换网络断链,则删除记录的发生交换网络 断链的所述HBA的交换网络地址。
[0038] 结合第二方面或第二方面的第一种可能的实现方式或第二方面的第二种可能的 实现方式,在第三种可能的实现方式中,所述交换网络为以太网;则所述心跳广播包和所述 心跳响应包为以太网报文。
[0039] 第三方面,提供了一种主机总线适配器HBA,所述HBA和至少一个磁盘框通过交换 网络连接,所述磁盘框中的磁盘构成磁盘阵列;所述HBA包括:
[0040] 广播单元,用于通过所述交换网络广播第一心跳广播包,所述第一心跳广播包包 括所述HBA的交换网络地址;
[0041] 接收单元,用于接收至少一个所述磁盘框发送的第一心跳响应包,所述第一心跳 响应包包括至少一个所述磁盘框的磁盘阵列信息,获取至少一个所述磁盘框的磁盘阵列信 息;其中,所述磁盘框的磁盘阵列信息包括所述磁盘框的交换网络地址。
[0042] 在第一种可能的实现方式中,所述HBA还包括:
[0043] 第一记录单元,用于将所述获取的至少一个所述磁盘框的磁盘阵列信息记录在所 述磁盘阵列信息表中。
[0044] 结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述磁盘 框的磁盘阵列信息还包括所述磁盘框中的磁盘的内部地址;则所述第一记录单元包括:
[0045] 磁盘框地址记录单元,用于将至少一个所述磁盘框的交换网络地址记录在所述磁 盘阵列信息表中;
[0046] 磁盘地址记录单元,用于以至少一个所述磁盘框的交换网络地址为索引,将至少 一个所述磁盘框中的磁盘的内部地址记录在所述磁盘阵列信息表中。
[0047] 结合第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在 第三种可能的实现方式中:
[0048] 所述广播单元还用于通过所述交换网络广播第二心跳广播包,所述第二心跳广播 包包括所述HBA的交换网络地址;
[0049] 所述接收单元还用于接收至少一个所述磁盘框发送的第二心跳响应包,所述第二 心跳响应包包括所述磁盘框的磁盘阵列信息;
[0050] 所述HBA还包括:
[0051] 更新单元,用于根据所述接收到的所述第二心跳响应包,确定所述交换网络中是 否有磁盘框的磁盘阵列信息发生更新;以及
[0052] 所述更新单元还用于如果所述交换网络中有磁盘框的磁盘阵列信息发生更新,则 根据所述接收到的所述第二心跳响应包,对所述磁盘阵列信息表中记录的磁盘框的磁盘阵 列信息进行更新。
[0053] 结合第三方面的第三种可能的实现方式,在第四种可能的实现方式中,所述更新 单元包括:
[0054] 第一比较单元,用于将所述接收的所述第二心跳响应中的磁盘框的磁盘阵列信息 与所述磁盘阵列信息表中记录的信息进行比较;
[0055] 第二确定单元,用于如果所述磁盘阵列信息表中未记录所述接收的所述第二心跳 响应中的磁盘框的磁盘阵列信息,则确定所述交换网络中有磁盘框的磁盘阵列信息发生更 新;
[0056] 第二记录单元,用于将所述接收的所述第二心跳响应中的磁盘框的磁盘阵列信息 记录在所述磁盘阵列信息表中。
[0057] 结合第三方面的第三种可能的实现方式,在第五种可能的实现方式中,所述更新 单元包括:
[0058] 第二比较单元,用于将所述接收的所述第二心跳响应中的磁盘框的磁盘阵列信息 与所述磁盘阵列信息表中记录的信息进行比较;
[0059] 第二确定单元,用于如果所述磁盘阵列信息表中记录了所述接收的所述第二心跳 响应中的磁盘框的交换网络地址,但所述磁盘阵列信息表中以所述接收的所述第二心跳响 应中的磁盘框的交换网络地址为索引对应记录的磁盘框中的磁盘的内部地址,与所述接收 的所述第二心跳响应中的磁盘框中的磁盘的内部地址不一致,则确定所述交换网络中有磁 盘框的磁盘阵列信息发生更新;
[0060] 磁盘内部地址更新单元,用于根据所述接收的所述第二心跳响应中的磁盘框中的 磁盘的内部地址,以所述第二心跳响应中的磁盘框的交换网络地址为索引,更新所述磁盘 阵列信息表中记录的磁盘框中的磁盘的内部地址。
[0061] 结合第三方面的第一种可能的实现方式或第三方面的第二种可能的实现方式,在 第六种可能的实现方式中:
[0062] 所述广播单元还用于通过所述交换网络周期性地广播所述第二心跳广播包;
[0063] 所述HBA还包括:
[0064] 第三确定单元,用于根据接收到的第二心跳响应包确定是否有磁盘框发生交换网 络断链;
[0065] 删除单元,用于如果有磁盘框