ALUA,AA,多路径
多路径
主机上每个SCSI设备都具有一个SCSI地址,该地址由initiator ID(或称为host ID)、bus ID、target ID以及LUN(逻辑单元号)组成;
在实际组网中,initiator ID一般对应主机HBA端口,target ID一般对应存储阵列控制器端口(bus ID适用于老旧的并行SCSI总线,在SAN环境中一般固定为0)。
如,主机的两个HBA端口连接到存储阵列的4个控制器端口,存储映射了两个LUN给主机,则主机上会生成8个SCSI设备阵列端口ALUA启用是为了是标准主机多路径软件识别ALUA阵列,进行路径优选。如果没有启用ALUA选项,主机回认为是AA阵列,路径选择会有问题,影响性能。
通俗的来讲,主机会把每一条路径识别成一个设备,但是存储只划分了一个块设备,所以需要通过多路径软件进行聚合,告诉主机哪几条路径是一个设备。
AA/ALUA
ALUA即“Asymmetric Logical Unit Access(异步逻辑单元访问)”的缩写,它是前端控制器多路径机制之一。
前端控制器多路径机制一定程度上决定存储的读写性能和可靠性,现有的前端控制器多路径机制可分为三大类:
-
A/A:Symmetric Active/Acivie,对于特定的LUN来说,在它的路劲中,两个存储控制器的目标端口均处于主动/优化(active/optimized)状态。两个控制器之间实现高速互联的通讯,一个IO发到控制器端,两个控制器可同时参与处理;当一个控制器繁忙,系统不需要主机端的负载均衡软件参与就可以自动实现负载均衡。
-
ALUA:Asymmetric Active/Active,对于特定的LUN来说,在它的路径中,一个控制器的目标端口处于主动/优化(active/optimized)状态,另一个控制器的目标端口处于主动/非优化(active/unoptimized)状态。在某一个时刻,某个LUN只是属于某一个控制器,要想实现两边的负载均衡,就是将任务A扔给控制器A,将任务B扔给控制器B,对于同一个任务来说,任何时候只有一个控制器在控制。
-
A/P:Active/Passive,对于特定的LUN来说,在它的路径中,一个控制器的目标端口处于主动/优化(active/optimized)状态,另一个控制器的目标端口处于备用(standby)状态。其负载均衡及任务处理方式与ALUA类似。
对称型(A/A-S)和非对称型(A/A-A)
在active-active存储设备中,LUN可以同时通过两个I/O控制器或者端口来访问,唯一的限制在于通过两个控制器(端口)访问LUN的性能是否有差别。
如果通过secondary控制器或者端口对LUN进行I/O的性能要比通过primary控制器(端口)低得多,则为非对称型;如果两者性能相同,则为对称型。
- Active-Active/Asymmetric形态的阵列与路径组优先级
对于Active-Active/Asymmetric形态的阵列来说,每个LUN都能够被任意控制器访问,但通过不同的控制器访问其效率是不同的,通常一个LUN会有一个优选控制器,通过该控制器来访问该LUN效率最高,通过其他控制器来访问该LUN则会有效率的损失,因此UltraPath会识别出LUN的优选控制器,并优先通过对应路径组中的路径来访问该LUN。
AA形态阵列,多路径软件在所有路径范围内进行负载均衡。
对于Active-Active/Asymmetric形态的阵列,多路径软件在路径组范围内进行负载均衡;如下图所示,LUN A只由path1和path2分担,LUN B的IO只由path3和path4分担:
AO&AN
当ALUA工作时,主机多路径会将对磁盘的物理路径划分优先级,主要分为AO(Active Optimized)及AN(Active Non-optimized),优先选择从存储的AO路径下发业务。
- AO路径:最佳IO访问路径,对应工作控制器上的路径。
- AN路径:次优IO访问路径,对应非工作控制器上的路径。
非双活ALUA工作原理及故障切换
当其中一条AO路径无法提供访问时,主机I/O将下发到另外的AO路径;
当工作控制器的所有AO路径断开无法提供访问时,主机I/O将从非工作控制器上的AN路径下发,如图6-1所示;
当AO路径所在控制器故障时,另一个控制器将转换为工作控制器,如图
双活ALUA工作原理及故障切换
当工作在负载均衡模式时,主机多路径将选择双活存储的所有阵列的工作控制器上的路径为AO路径,其他所有控制器上的路径为AN路径;两端阵列的AO路径提供访问,当其中一条AO路径无法提供访问时,主机I/O将下发到另外的AO路径;当其中一台阵列AO路径所在控制器故障时,另一个控制器将转换为工作控制器,继续维持负载均衡,如图所示:
当工作在本端优选模式时,主机多路径将选择本端阵列工作控制器上的路径为AO路径,保证IO只在本端阵列的工作控制器下发,减小链路消耗;当本端阵列工作控制器的所有AO路径断开无法提供访问时,主机I/O将从非工作控制器上的AN路径下发。当工作控制器故障时,另一个控制器将转换为工作控制器,继续维持本端优选,如图所示
Redhat 系统在双活场景下配置操作系统自带多路径最佳实践
主机侧配置
步骤一,安装多路径软件,加载驱动并生成配置文件
1. 执行以下命令安装多路径软件:
yum install device-mapper* -y
注意:该操作需要提前在主机操作系统上配置 yum 源,若系统已安装多路径软件,可忽略此步骤。
2. 执行以下命令加载 dm-multipath 驱动:
modprobe dm-multipath
3. 执行以下命令生成 /etc/multipath.conf 多路径配置文件:
mpathconf --enable
步骤二,修改 /etc/multipath.conf 多路径配置文件
对于 RHEL 6.x 和 RHEL 7.x 系统,执行命令 vi /etc/multipath.conf 编辑多路径配置文件,并在配置文件中添加以下内容:
devices {
device{
vendor "EISOO"
product "XSG1"
path_grouping_policy group_by_prio
path_checker tur
path_selector "round-robin 0"
prio alua
failback immediate
dev_loss_tmo 30
fast_io_fail_tmo 5
}
}
说明:dev_loss_tmo 和 fast_io_fail_tmo 参数控制链路故障时的重试时间及切换时间,图中提供的是推荐的值,可根据实际需要进行调整。
步骤三,配置检查
1. 重启多路径服务并设置服务开机自动启动。
· 对于 RHEL6 及之前的系统,执行如下命令:
/etc/init.d/multipathd restart
chkconfig multipathd on
· 对于 RHEL7 及以后的系统,执行如下命令:
systemctl restart multipathd.service
systemctl enable multipathd.service
2. 执行 multipath -ll 命令查看多路径配置是否生效。
下图示例中,多路径已经生效,其中 status=active 的路径对应 AO 路径,status=enabled 的路径对应 AN 路径,说明 ALUA 配置已经生效,一般来说 linux 系统上 AO 路径的 prio 值为50,AN 路径的 prio 值为10。
存储配置不使用ALUA配置检查
配置完成后执行multipath -ll命令来确认配置是否生效,如图所示:
参考和转载
https://blog.csdn.net/u011639902/article/details/50434471
https://support.huawei.com/enterprise/zh/doc/EDOC1000150152/c6f0b988
https://support.huawei.com/enterprise/zh/doc/EDOC1000150153/96e5ef4c
https://www.aishu.cn/cn/knowledges/KB-0535