linux 6 multipath配置
[font=Helvetica,]1、查看是否有多路径软件
rpm -qa|grep device-mapper
2、如果没有安装,在安装盘的Packages中
device-mapper-multipath
device-mapper
rpm -ivh device-mapper-multipath-libs.*
rpm -ivh device-mapper-****.rpm
rpm -ivh device-mapper-multipath-**8.rpm
3、设置开机启动
查看是否开机自启动
chkconfig --list|grep multipathd
设置成开机自启动
chkconfig --level 2345 multipathd on
检查安装是否正常,内核中是否存在
modprobe -l|grep multipath
kernel/drivers/md/dm-multipath.ko
重启加载内核或手工加载
modprobe dm-multipath
modprobe dm-round-robin
service multipathd start
4、显示有哪些硬盘
ls /sys/class/scsi_host/
RHEL 6 或者 Oracle Linux 6, 不关机识别新添加的scsi硬盘,重新检测硬盘
下面看一下在系统不重启的情况,如何让系统认识新的磁盘,并能对其分区与格式化
1、在开机状态下新增磁盘
2、执行下面的命令
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan
echo "- - -" >> /sys/class/scsi_host/host3/scan
echo "- - -" >> /sys/class/scsi_host/host4/scan
echo "- - -" >> /sys/class/scsi_host/host5/scan
echo "- - -" >> /sys/class/scsi_host/host6/scan
echo "- - -" >> /sys/class/scsi_host/host7/scan
echo "- - -" >> /sys/class/scsi_host/host8/scan
或者
echo "C T L" > /sys/class/scsi_host/hostH/scan
当中:
H 为 SCSI 主机总线接口卡 (HBA, Host Bus Adapter) 的编号
C 为 HBA 的频度 (Channel) 编号
T 为 SCSI target ID
L 为 LUN (Logical Unit Number)
例如:
echo "0 2 00" > /sys/class/scsi_host/host1/scan
如果成功扫瞄新装置,核心将会输出类似以下讯息 (使用命令 dmesg 可以读取或查看日志档案 /var/log/messages):
scsi 1:0:2:0: Direct-Access VMware Virtual disk 1.0 PQ: 0 ANSI: 2
scsi target2:0:2: Beginning Domain Validation
scsi target2:0:2: Domain Validation skipping write tests
scsi target2:0:2: Ending Domain Validation
scsi target2:0:2: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 127)
sd 1:0:2:0: [sdh] 209715200 512-byte logical blocks: (107 GB/100 GiB)
sd 1:0:2:0: [sdh] Write Protect is off
sd 1:0:2:0: [sdh] Mode Sense: 61 00 00 00
sd 1:0:2:0: [sdh] Cache data unavailable
sd 1:0:2:0: [sdh] Assuming drive cache: write through
如果不知道有关装置的 channel、target ID 和 LUN,可以直接使用以下命令扫瞄所有 channel、target ID 和 LUN:
echo "- - -" > /sys/class/scsi_host/host1/scan
特别注意
① “- – -” 这三个-之间是有空格的
② 假如 fdisk -l 还是未发现新硬盘,则将上面命令中的host0,替换为host1,host2,....看看
我们再查看系统日志/var/log/messages,发现对SCSI设备进行了一次重新扫描,用fdisk -l也看到了新增加的磁盘了。上面的命令主要的目的就是scan the SCSI bus。
5、针对RHEL6.0,在/etc/目录下,没有multipath.conf文件,需要从/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf中复制
# multipath -ll
Jun 29 18:48:18 | DM multipath kernel driver not loaded
Jun 29 18:48:18 | /etc/multipath.conf does not exist, blacklisting all devices.
Jun 29 18:48:18 | A sample multipath.conf file is located at
Jun 29 18:48:18 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
Jun 29 18:48:18 | You can run /sbin/mpathconf to create or modify /etc/multipath.conf
Jun 29 18:48:18 | DM multipath kernel driver not loaded
解决为:
cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc
6、 配置multipath服务
chkconfig multipathd on
service multipathd start
7、查看多路径设备
multipath -ll
8、获取系统所有磁盘的wwid:
RHEL6与5在多路径的配置上有一些小区别。scsi_id命令有些参数不再支持。
在RHEL 6中获取磁盘的wwid可以通过–whitelist参数获取:
scsi_id --whitelist /dev/sdg 360060160a2212f00f8139df761ece111
也可以通过一条shell命令来获取系统所有磁盘的wwid:
#for i in `cat /proc/partitions | awk {'print $4'} |grep sd`; do echo "### $i: `scsi_id --whitelist /dev/$i`"; done
在RHEL 5中,可以通过如下方式获取磁盘wwid:
for i in `cat /proc/partitions | awk {'print $4'} |grep sd`; do echo "### $i: `scsi_id -g -u -s /block/$i`"; done
9、配置多路径的配置文件
vi /etc/multipath.conf
修改以下部分,其中blacklist中wwid 36b82a720d25809001b484f9507b5a340 为本机硬盘的id。
blacklist {
wwid 36b82a720d25809001b484f9507b5a340
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
}
multipaths {
multipath {
wwid 36000d310007d9b00000000000000000a
alias Fra01
path_grouping_policy multibus
# path_checker readsector0
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
multipath {
wwid 36000d310007d9b00000000000000000b
alias data01
}
原因: 本地硬盘不存在多路径,所以在排除
在/etc/multipah.conf里排除
blacklist{
devnode "^sda"
}
10、本机重新加载多路径
multipath -v3
在显示的结果中,找到paths list部分,看是否为如下显示:
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/prod
3600507630081080d6800000000000064 1:0:1:0 sdb 8:16 10 undef ready IBM,2145
3600507630081080d6800000000000063 1:0:1:1 sdc 8:32 50 undef ready IBM,2145
3600507630081080d6800000000000062 1:0:1:2 sdd 8:48 10 undef ready IBM,2145
3600507630081080d6800000000000061 1:0:1:3 sde 8:64 50 undef ready IBM,2145
1:0:1:4 sdf 8:80 -1 undef faulty IBM,2145
3600507630081080d6800000000000064 1:0:3:0 sdg 8:96 50 undef ready IBM,2145
3600507630081080d6800000000000063 1:0:3:1 sdh 8:112 10 undef ready IBM,2145
3600507630081080d6800000000000062 1:0:3:2 sdi 8:128 50 undef ready IBM,2145
3600507630081080d6800000000000061 1:0:3:3 sdj 8:144 10 undef ready IBM,2145
1:0:3:4 sdk 8:160 -1 undef faulty IBM,2145
3600507630081080d6800000000000064 3:0:2:0 sdl 8:176 10 undef ready IBM,2145
3600507630081080d6800000000000063 3:0:2:1 sdm 8:192 50 undef ready IBM,2145
3600507630081080d6800000000000062 3:0:2:2 sdn 8:208 10 undef ready IBM,2145
3600507630081080d6800000000000061 3:0:2:3 sdo 8:224 50 undef ready IBM,2145
3:0:2:4 sdp 8:240 -1 undef faulty IBM,2145
3600507630081080d6800000000000064 3:0:3:0 sdq 65:0 50 undef ready IBM,2145
3600507630081080d6800000000000063 3:0:3:1 sdr 65:16 10 undef ready IBM,2145
3600507630081080d6800000000000062 3:0:3:2 sds 65:32 50 undef ready IBM,2145
3600507630081080d6800000000000061 3:0:3:3 sdt 65:48 10 undef ready IBM,2145
3:0:3:4 sdu 65:64 -1 undef faulty IBM,2145
11、scp /etc/multipath.conf到其他连接存储的服务器
在其他服务器上使用multipath -v3得到本地服务器硬盘的id,然后修改/etc/multipath.conf的blacklist中wwid
12、其他服务器启动multipath服务
chkconfig multipathd on
service multipathd start
13、其他服务器重新加载多路径
multipath -v3
在显示的结果中,找到paths list部分,看是否为如下显示:
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/prod
36000d310007d9b000000000000000004 1:0:1:2 sdb 8:16 1 undef ready COMPELNT,
36000d310007d9b000000000000000006 1:0:1:4 sdc 8:32 1 undef ready COMPELNT,
如果uuid的格式显示不一致,重启操作系统解决。
14、重新定义命令清空已有的multipath记录别名后删除不用的路径
重新定义别名后删除不用的路径
multipath -F
重新扫描,格式化路径
multipath -v2
如果新增HBA或者使用fdisk -l命令看不到共享存储,重新加载HBA驱动:
卸载驱动
modprobe -r lpfc
加载驱动
modprobe lpfc
查看是否加载多路径模块
lsmod |grep multipath
dm_multipath 17724 2 dm_round_robin
dm_mod 84209 14 dm_multipath,dm_mirror,dm_log
15、切换多路径链路模式
启动多路径软件
service multipathd start
chkconfig multipathd on
multipath -F #删除现有路径,重新定义别名后删除不用的路径
multipath -v2 #重新扫描,格式化路径
multipath -ll #查看多路径,目前是主备模式。
ath0 (3600c0ff0001982fa95fcfe5101000000) dm-0 HP,P2000 G3 SAS
ze=9.1T features='1 queue_if_no_path' hwhandler='0' wp=rw
+- policy='round-robin 0' prio=130 status=active
- 3:0:0:1 sda 8:0 active ready running
- policy='round-robin 0' prio=10 status=enabled
4:0:0:1 sdb 8:16 active ready running
重启测试
reboot
multipath -ll # 依然是主备模式。
service multipathd start # 再次重启 multipathd.
multipath -ll # 变成主主模式。
size=9.1T features='1 queue_if_no_path' hwhandler='0' wp=rw
-+- policy='round-robin 0' prio=70 status=active
|- 3:0:0:1 sda 8:0 active ready running # 需要重启一次才会变成主主?
- 4:0:0:1 sdb 8:16 active ready running
配置完了之后,重启multipathd服务,之后通过multipath -ll查看经过多路径软件绑定后的磁盘。
注意,如果要对磁盘进行格式化,请采用/dev/mapper/[alias]这类设备名进行fdisk。