认识SLUA和ALUA
先了解一个存储端多路径优化的选项--SLUA和ALUA.如图
解释汇总如下:
ALUA多路径技术
Asymmetric Logical Unit Access,非对称逻辑单元存取,其提供了一个路径发现和确定优先次序的标准化机制,实现主机和存储设备的路径自协商和动态管理。
特点:对于特定的LUN来说,在它的路径中,一个控制器的目标端口处于主动/优化状态,另一个控制器的目标端口处于主动/非优状态。在某一个时刻,某个LUN只是属于某一个控制器,要想实现两边的负载均衡,就是将任务A扔给控制器A,将任务B扔给控制器B,对于同一个任务来说,任何时候只有一个控制器在控制。
SLUA多路径技术
SymmetricLogical Unit Access,对称逻辑单元存取,是多路径的基本特性。
特点:对于特定的LUN来说,在它的路劲中,两个存储控制器的目标端口均处于主动/优化状态。两个控制器之间实现高速互联的通讯,一个IO发到控制器端,两个控制器可同时参与处理;当一个控制器繁忙,系统不需要主机端的负载均衡软件参与就可以自动实现负载均衡。
使用multipath,在系统中配置多路径
操作步骤
准备内容
1.确定lun是ALUA还是ALUA类型
2.确定多路径软件使用multipath还是厂家自带软件
3.确定新划分的lunID信息
第一步:热加载,发现新加入的lun
参考https://blog.51cto.com/chier11/2611454 确定哪个是新加入的磁盘,通过存储端的LUN-id识别.
#热扫描磁盘
for i in $(ls /sys/class/scsi_host/);
do
echo '- - -' > /sys/class/scsi_host/$i/scan;
done
第二步:安装multipath和生成multipath.conf文件
#yum安装multipath
yum install -y device-mapper-multipath
#生成multipath.conf文件,并加载dm_multipath模块到内核
/sbin/mpathconf --enable
第三步:启动服务,查看wwid(磁盘id)
systemctl enable multipathd.service
systemctl start multipathd.service
multipath -ll
cat /etc/multipath/bindings #是否一致
cat /etc/multipath/wwids #是否一致
ls -l /dev/disk/by-id #查看所有磁盘的
以下是默认multipath.conf文件,启动multipath服务的显示.得出新加的LUN-id信息.这个id在配置文件中需要.
使用ls -l /dev/disk/by-id #查看所有磁盘的WWID, 如下图-- sda1-sda2-sda3是sda磁盘的三个分区,sdg是新加的lun.
以上通过multipath服务的bindings文件和wwid文件,与multipath服务的multipath -ll命令,以及/dev/disk/by-id查看结果等得出本地盘和存储lun的ID信息.如下
#三个显示 得出结论:
3600b34288e011f166bc989054d000037 #宏杉LUN
3600508b1001c82d39e292d1e0f166186 ##本地盘
第四步:获取黑名单和配置文件 multipath.conf
#修改默认配置文件
echo > /etc/multipath.conf #清空默认配置文件
vi /etc/multipath.conf
宏杉的多路径配置文件-multipath.conf
blacklist {
wwid 3600508b1001c82d39e292d1e0f166186 ##本地盘
}
defaults {
user_friendly_names yes
polling_interval 10
queue_without_daemon no
flush_on_last_del yes
checker_timeout 120
}
devices {
device {
vendor "MacroSAN"
product "LU"
path_grouping_policy "group_by_prio"
no_path_retry 30
prio "alua"
path_checker tur
path_selector "service-time 0"
hardware_handler "0"
failback 15
fast_io_fail_tmo 0
}
}
multipaths {
multipath {
wwid 3600b34288e011f166bc989054d000037 #宏杉
alias mpatha
}
}
第五步:重启服务,查看磁盘大小
#通过multipath命令查看
multipath -ll
以下是配置完的多路径显示,是最终--正常的多路径.
常见的默认多路径配置
与上面区别在于,不用在配置文件multipath.conf中指定磁盘id和单独的优化参数, 完全配置全局模式的优化参数,磁盘id全部自动识别无需添加磁盘id信息.
###安装多路径
yum install -y device-mapper-multipath
modprobe dm-multipath
modprobe dm-round-robin
##新建文件
cat >> /etc/multipath.conf << EOF
blacklist {
devnode "^sda" ##存在一定的风险,可能出现路径不完整.慎用
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
defaults {
user_friendly_names yes
path_grouping_policy multibus
failback immediate
no_path_retry fail
}
EOF
##启动服务
service multipathd start
chkconfig multipathd on
systemctl enable multipathd
关于黑名单-blacklist中盘符别名的写法,参考如下:
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
假如只写devnode "^sda" 将会出现多路径不完整,比如因该出现的路径数为偶数,结果出现单数.因此"偷懒"会出现其他问题.
下图是黑名单中排除了"sda和adb开头的盘符",因此多路径中出现sda或sdab,sdac等将不会显示,就出现了单条路径.