主流厂商存储多路径软件的安装与使用

  在生产环境中,为保证存储访问的可靠性(当然也为负载均衡),一般会用 2 张甚至更多的光纤卡,通过 2 条或更多的 FC 路径,接在磁盘阵列的两个控制器上,当一条路径出现故障的时候也能够保证系统与存储的不间断访问。但是这会导致一个问题,一个实际的 LUN 在一条路径过来在系统层面来看,就会有一个设备,同一个 LUN 从不同的路径过来就会有多个设备,也就是说你在存储上划的一个 LUN 给你的系统,通过多个路径过来,在操作系统上就会看到多个盘,这就需要多路径软件来将这些盘虚拟成一个设备。本文将介绍各个多路径软件的安装与配置。
  一般来说,主流厂商的存储都会有自家的多路径软件,例如,日立 (HITACHI) 存储使用的多路径软件为 HDLM,EMC (戴尔收购) 存储使用的多路径软件为 PowerPath,华为存储为 UltraPath ,其他厂商 Linux 下大多会使用红帽家的 multipath,AIX 或是 Windows 下使用 mpio

日立

  日立存储 (HDS) 使用的多路径是 HDLM(Hitachi Dynamic Link Manager),本文仅记录 Linux 环境下的安装与使用,其他平台大同小异。

安装

  手上目前只有 RHEL 6 的安装包与 license,下文都是在该环境下完成的,RHEL 7 下的安装大同小异,后期有相关需求的时候再补上。

运行环境

安装 HDLM 前需要安装如下软件包:

1
2
3
4
5
6
7
- libstdc++-RPM package version.i386.rpm  
- libgcc-RPM package version.i386.rpm
- glibc-RPM package version.i686.rpm

- libstdc++-RPM package version.i686.rpm
- libgcc-RPM package version.i686.rpm
- glibc-RPM package version.i686.rpm
1
2
3
4
5
6
7
# 注意 i686 i386 均要安装
yum install -y libstdc++
yum install -y libgcc
yum install -y glibc-
yum install -y glibc.i686
yum install -y libgcc.i686
yum install -y libstdc++.i686

否则将出现如下报错:   

1
2
3
4
5
6
[root@localhost HDLM_Linux]# ./installhdlm 
KAPL09210-I installhdlm will now start.
KAPL09093-I HDLM 8.7.0-00 will be installed. Is this OK ? [y/n]: y
KAPL09098-E An attempt to install /tmp/HDLM_Linux/rpm/HDLM-8.7.0.0.808-3.x86_64.rpm has failed. Code = 1
KAPL09212-E installhdlm ended abnormally.
[root@localhost HDLM_Linux]#
上传安装包

  上传 HDLM_Linux 文件夹到 /tmp 目录,上传 /licence/hdlm_license 到 /var/tmp。

1
2
3
cd /tmp/HDLM_Linux  
chmod -R 755 * # 给权限
./installhdlm
环境变量配置
1
vim ~/.bash_profile

在 PATH 字段后追加:

1
:/opt/DynamicLinkManager/bin 

source 让其生效:

1
source ~/.bash_profile

安装后需要重启系统 reboot 完成安装。

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 创建HDLM设备
/sbin/dlmcfgmgr -r

# 启动HDLM
/etc/init.d/DLMManager start

# 查看 HDLM 配置
dlnkmgr view -sys

# 查看路磁盘路径
dlnkmgr view -path

# 设置路径的自动 Failback 功能
dlnkmgr set -afb on

华为

  华为 OceanStor,对应使用华为自己的 UltraPath 多路径软件。

安装

静默安装配置

  上传并解压 UltraPath 的安装包后,进入其解压目录,修改 “unattend_install.conf” 的如下字段:

1
2
3
4
5
6
7
8
# 启动类型,1 为本地启动(Local Boot),2 为 SAN 存储(SAN Boot)启动,前者即操作系统装在本地磁盘,后者为操作系统装在 SAN 网络中。一般都为前者。
boot_type = 1

# 安装完是否重启
restart = y

# 当系统自带多路径DM-multipath已经启用时,是否继续安装UltraPath多路径。
continue_when_dm_enable = y

给 “install.sh” 执行权限:

1
chmod +x install.sh

开始安装:

1
./install.sh -f unattend_install.conf

安装完成后需要重启操作系统。

检查

检查是否在内核加载成功:

1
lsmod | grep nxup

显示类似如下即可:

1
2
nxupext_a 4008975 0
nxup 477464 1 nxupext_a

检查服务进程是否开启:

1
ps -ef | grep upservice | grep -v grep

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 重新启动 UltraPath 服务  
service nxup restart

# 获取软件版本
upadmin show version

# 查看服务器所连接的存储系统信息
upadmin show array

# 查看存储系统映射到服务器上的 LUN 信息
upadmin show lun

# 查看物理路径的工作状态
upadmin show path

# 禁用/启用指定物理路径
upadmin set pathstate=enable/disable path_id=路径ID

# 查看存储系统、虚拟 LUN 的 IOPS、带宽信息、响应时间等性能信息
upadmin show iostat

# 查看运行过程中的关键事件信息
upadmin show event

EMC

  EMC 存储用的多路径软件为 PowerPath,相比其他厂商的多路径软件,PowerPath 多了负载均衡的优势。

安装

安装rpm包

  上传对应版本的 rpm 包,使用 rpm -Uvh 安装:

1
rpm -Uvh EMCPower.LINUX-6.3.0.01.00-001.RHEL6.x86_64.rpm
注册
1
emcpreg -install # 将提示输入license

启动

1
/etc/init.d/PowerPath start  

检查

查看是否有 emcpower 伪设备:

1
fdisk -l |grep emcpower

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 列出 PowerPath 配置的 HBA 状态
powermt display dev=all

# 获取软件版本
powermt version

# 手工检查 PowerPath 通道
powermt check

# 手工恢复 PowerPath 通道
powermt restore

# 保存 PowerPath 设备数据库文件
powermt save

# 加载以前保存的配置
powermt load

# 删除配置中的一条路径
powermt remove

# 识别 PowerPath 设备
powermt config

其他

安装

  在厂商没有自己的多路径软件的时候(如华三),一般用红帽的 multipath,其安装十分简单,直接通过 yum 安装 device-mapper-multipath device-mapper 即可:

1
yum install -y device-mapper-multipath

multipath 针对不同的存储有不同的更优配置,并且提供了相关的模板文件,需要根据不同的存储,配置不同的参数。在 RHEL 6 下,其模板文件位置为 “/usr/share/doc/device-mapper-multipath-xxx/multipath.conf.defaults”,部分存储厂家也会提供其对应型号的推荐配置。

常用命令

1
2
3
4
5
6
7
8
9
10
11
# 启动  
/etc/init.d/multipathd start

# 删除现有路径
multipath -F

# 格式化路径
multipath -v2

# 查看多路径
multipath -ll

配置文件

/etc/multipath/bindings: wwid 和盘 alias 的绑定
/etc/multipath/wwids: multipath 发现的所有 wwid

/etc/multipath.conf 配置解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

# 【blacklist】 -- 【default】 -- 【devices】 -- 【multipaths】 -- 【multipath】
# 黑名单 -- 默认配置 --厂商存储配置 -- 多路径设备配置 -- 子设备配置

########## 黑名单配置
blacklist {
wwid 3600605b009d63a801ca59ff70e55ce7a
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
}


####### 厂商存储配置
devices {
device {
vendor "EMC"
product "SYMMETRIX"
path_grouping_policy "multibus"
getuid_callout "/lib/udev/scsi_id --page=pre-spc3-83 --whitelisted --device=/dev/%n"
path_selector "round-robin 0"
path_checker "tur"
features "0"
hardware_handler "0"
prio "const"
rr_weight "uniform"
no_path_retry "6"
rr_min_io "1000"
rr_min_io_rq "1"
}
}


########## 多路径设备配置
multipaths {

#####单独设备配置
multipath {
wwid 1111111111111111111111111111111111111111111111111
alias asm1
}

multipath {
wwid 22222222222222222222222222
alias asm2
}

multipath {
wwid 33333333333333333333
alias asm3
}

}