下面对配置好的多路径进行测试,查看多路径:
[root@elt1 ~]# multipath -ll
mpathe (3600c0ff00026402cf4cf5d5601000000) dm-1 DotHill,DH3000
size=47G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:0 sdb 8:16 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:0 sdi 8:128 active ready running
mpathd (3600c0ff00026402cf5cf5d5601000000) dm-0 DotHill,DH3000
size=47G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:1 sdc 8:32 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:1 sdj 8:144 active ready running
mpathc (3600c0ff00026402cdbc95d5601000000) dm-4 DotHill,DH3000
size=1.8T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:2 sdd 8:48 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:2 sdk 8:160 active ready running
mpathb (3600c0ff00026402cdbc95d5602000000) dm-3 DotHill,DH3000
size=1.8T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:3 sde 8:64 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:3 sdl 8:176 active ready running
mpathh (3600c0ff00026402ce0c95d5604000000) dm-6 DotHill,DH3000
size=1.8T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:6 sdh 8:112 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:6 sdo 8:224 active ready running
mpathg (3600c0ff00026402ce0c95d5603000000) dm-5 DotHill,DH3000
size=1.8T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:5 sdg 8:96 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:5 sdn 8:208 active ready running
mpathf (3600c0ff00026402cdcc95d5601000000) dm-2 DotHill,DH3000
size=1.8T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:4 sdf 8:80 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:4 sdm 8:192 active ready running
[root@elt1 ~]#
选择一块多路径存储进行测试,这里选择multipath alias name为mpathh的设备进行测试,此设备的device name为dm-6
下面针对mpathh进行写数据:
在第一个命令窗口执行如下命令对存储mpathh进行写数据:
[root@elt1 ~]# dd if=/dev/zero of=/dev/mapper/mpathh bs=1M count=10240
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB) copied, 23.1829 s, 463 MB/s
[root@elt1 ~]#
在第二个命令窗口查看dm-6的数据读写:
[root@elt1 ~]# iostat -m 1 20|grep -E "dm-6|Device"
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 0.85 0.00 0.27 3 62464
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 0.00 0.00 0.00 0 0
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 0.00 0.00 0.00 0 0
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 0.00 0.00 0.00 0 0
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1447.00 0.00 667.48 0 667
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1718.00 0.00 752.73 0 752
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1706.00 0.00 774.46 0 774
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1692.00 0.00 772.90 0 772
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1647.00 0.00 771.52 0 771
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1627.00 0.00 770.36 0 770
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1560.00 0.00 656.56 0 656
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1770.00 0.00 667.85 0 667
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1816.00 0.00 724.60 0 724
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1585.00 0.00 767.54 0 767
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1732.00 0.00 747.78 0 747
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1708.00 0.00 714.46 0 714
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1625.00 0.00 639.34 0 639
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 1585.00 0.00 629.34 0 629
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 494.00 0.00 183.08 0 183
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
dm-6 0.00 0.00 0.00 0 0
[root@elt1 ~]#
通过上面的输出,可以很明显的看到dm-6的读写大约每s为700M左右。
在第三个窗口查看多路径存储dm-6对应的sdh和sdo的数据读写情况:
[root@elt1 ~]# iostat -m 1 20|grep -E "sdh|sdo|Device"
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.24 0.00 0.09 47 21504
sdo 1.05 0.00 0.36 23 82944
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 0.00 0.00 0.00 0 0
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 0.00 0.00 0.00 0 0
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 774.00 0.00 361.76 0 361
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1688.00 0.00 764.74 0 764
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 1.00 0.00 0.00 0 0
sdo 1729.00 0.00 766.57 0 766
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1732.00 0.00 768.75 0 768
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1682.00 0.00 777.05 0 777
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1606.00 0.00 770.20 0 770
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1599.00 0.00 700.81 0 700
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1673.00 0.00 663.91 0 663
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1760.00 0.00 674.52 0 674
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1666.00 0.00 772.66 0 772
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1755.00 0.00 777.40 0 777
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1727.00 0.00 729.57 0 729
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1637.00 0.00 651.99 0 651
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1580.00 0.00 623.55 0 623
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 1105.00 0.00 436.52 0 436
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 0.00 0.00 0.00 0 0
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sdh 0.00 0.00 0.00 0 0
sdo 0.00 0.00 0.00 0 0
[root@elt1 ~]#
发现只有sdo写磁盘了,sdh没有对存储进行写数据。
从多路径的输出可以看出,sdo为active状态,而sdh为enabled状态:
mpathh (3600c0ff00026402ce0c95d5604000000) dm-6 DotHill,DH3000
size=1.8T features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=1 status=enabled
| `- 3:0:0:6 sdh 8:112 active ready running
`-+- policy='round-robin 0' prio=1 status=active
`- 4:0:0:6 sdo 8:224 active ready running
通过查看多路径的配置,进一步分析:
multipathd> show config
defaults {
verbosity 2
polling_interval 5
udev_dir "/dev"
multipath_dir "/lib64/multipath"
path_selector "round-robin 0"
path_grouping_policy failover
getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
prio const
features "0"
path_checker directio
failback manual
rr_min_io 1000
rr_min_io_rq 1
max_fds 1048576
rr_weight uniform
queue_without_daemon no
hwtable_regex_match no
flush_on_last_del no
user_friendly_names no
find_multipaths no
log_checker_err always
retain_attached_hw_handler no
detect_prio no
reload_readwrite no
replace_wwid_whitespace no
force_sync no
config_dir "/etc/multipath/conf.d"
delay_watch_checks no
delay_wait_checks no
}
multipaths {
multipath {
wwid 3600c0ff00026402cdbc95d5602000000
alias mpathb
}
multipath {
wwid 3600c0ff00026402cdbc95d5601000000
alias mpathc
}
multipath {
wwid 3600c0ff00026402cf5cf5d5601000000
alias mpathd
}
multipath {
wwid 3600c0ff00026402cf4cf5d5601000000
alias mpathe
}
multipath {
wwid 3600c0ff00026402cdcc95d5601000000
alias mpathf
}
multipath {
wwid 3600c0ff00026402ce0c95d5603000000
alias mpathg
}
multipath {
wwid 3600c0ff00026402ce0c95d5604000000
alias mpathh
}
}
此多路径配置中的大多数配置为默认配置。
参数path_grouping_policy 的值为failover,表示分组策略为故障转移,这种策略将多路径中的多个设备分成两组,一组为主一组为备,sdo为主设备,所以它能够对存储进行数据的读写,而sdh为从设备,只有当主设备sdo失败后它才会变成主设备对存储进行读写。
如果想让sdh和sdo都进行读写,则要将path_grouping_policy改为multibus
此外上面的配置中failback为manual,它表示手动切换,多路径中的主设备失败后还不能实现自动切换,要实现自动切换得将此值设为immediate