Linux下多路径Multipath的简单配置

1、启用Multipath:

(1)启动multipathd服务#service multipathd start或者#/etc/init.d/multipathd start

(2)修改multipath配置文件/etc/multipath.conf:a默认情况下所以的设备都在multipath的黑名单中,所以即使启动了multipathd服务并加在了内核模块,multipath也不会对链路进行聚合,找到下面的3行并注释掉(在行首加上#号)#devnode_blacklist {

\# devnode "*"

\#}

b默认情况下multipath生成dm设备之后,会同时在/dev/mapper/下生成以磁盘wwid为名的符号链接指向对应的dm设备。如果想生成mpath设备,则需要打开user_friendly_names选项,将配置文件中下面3行的注释取消(去掉行首的#号)defaults {

user_friendly_names yes

}

(3)重启multipathd服务(修改multipath.conf文件之后都应该重启multipath服务)

(4)扫描磁盘#multipath -v2使用上面命令之后,系统中会出现链路聚合之后的dm设备,同时也会在/dev/mapper/、/dev/mpath/目录下生成相应的设备。查看multipath拓扑结构#multipath -ll另外一个重要的文件是/var/lib/multipath/bindings,这个文件中是磁盘的别名和wwid的对应关系,典型的例子是:mpath0 3600508b4000c3af700008000002d0000

(5)需要注意的问题,multipath也会为本地的磁盘生成相应的dm设备,所以需要在multipath.conf中将本地磁盘加入到黑名单,配置的方法可以参考下面的示例

devnode_blacklist {

wwid 36005076b08164f4011ae88b23efb95fe

devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"

devnode "^hd[a-z]"

}如上例所示,可以通过wwid或者设备名将本地磁盘加入到黑名单中。

2、固定multipath设备的命名:通过wwid和设备别名一一对应的方式固定multipath设备的名称,这些和别名对应的设备会被创建到/dev/mapper/目录下,使用时直接使用这个目录的的设备。

(1)通过/var/lib/multipath/bindings可以获取所有磁盘的wwid,确定每个磁盘的别名之后,在/etc/multipath.conf中的multipaths段中加入相应的配置,如将wwid为3600508b4000c3b910000c00000330000的磁盘命名为etl01,wwid为3600508b4000c3b910000c00000390000的磁盘命名为etl02,配置文件如下所示

multipaths {

multipath {

wwid 3600508b4000c3b910000c00000330000

alias etl01

}

multipath {

wwid 3600508b4000c3b910000c00000390000

alias etl02

}

}

(2)配置完成之后,重启multipathd服务,使用下面的命令清空已有的multipath记录#multipath -F然后使用multipath -v2重新扫描设备,这时会在/dev/mapper/目录下生成和别名对应的设备文件。#ls /dev/mapper/

control etl01 eth02

(3)如果多台服务器的存储链路完全相同,并希望各服务器上同一磁盘的设备名相同,可以在一台服务器上配置好别名绑定之后,将multipaths { }中间的配置复制到其他服务器,这样各台服务器/dev/mapper/下面的设备将会保持一致。

\# multipath -ll

会看到类似下面的信息:

mpath0 (360060e80058e980000008e9800000007)

[size=20 GB][features="0"][hwhandler="0"]

\_ round-robin 0 [prio=1][active]

\_ 3:0:0:7 sdaa 65:160 [active][ready]

\_ round-robin 0 [prio=1][enabled]

\_ 4:0:0:7 sdas 66:192 [active][ready]

\_ round-robin 0 [prio=1][enabled]

\_ 5:0:0:7 sdbk 67:224 [active][ready]

\_ round-robin 0 [prio=1][enabled]

\_ 2:0:0:7 sdi 8:128 [active][ready]

这说明,已由四条链路

sdaa/sdas/sdbk/sdi

复合成一条链路,设备名为

mpath0

状态正常的话,把

multipathd

设置为自启动:

\# chkconfig multipathd on

\# mkdir /oradata

\# mkfs.ext3 /dev/mapper/mpath0

\# mkfs.ext3 /dev/mapper/mpath1

\# blkid /dev/mapper/mpath0

生成该存储设备的

UUID

\# blkid /dev/mapper/mpath1

\# vim /etc/fstab

(

修改该配置文件并添加如下

)

UUID=47931c90-140b-45fe-9dfa-5a0f56810db3 /oradata ext3 defaults 0 0

保存退出

\# mount -a

我配置过的一个 multipath.conf文件# multipath.conf written by anaconda

defaults {

user_friendly_names yes

}

blacklist {

devnode "^sda"

devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]"

devnode "^hd[a-z]"

devnode "^dcssblk[0-9]*"

device {

vendor "DGC"

product "LUNZ"

}

device {

vendor "IBM"

product "S/390.*"

}

\# don't count normal SATA devices as multipaths

device {

vendor "ATA"

}

\# don't count 3ware devices as multipaths

device {

vendor "3ware"

}

device {

vendor "AMCC"

}

\# nor highpoint devices

device {

vendor "HPT"

}

wwid "3600605b005b8812019307e740f15a897"

device {

vendor IBM_SATA

product DEVICE_81Y3657

}

wwid "*"

}

blacklist_exceptions {

wwid "360080e50002c74ee00000865519c22bf"

wwid "360050763008182d11800000000000007"

}

multipaths {

multipath {

uid 0

gid 0

wwid "360080e50002c74ee00000865519c22bf"

mode 0600

}

}

multipaths {

multipath {

uid 0

gid 0

wwid "360050763008182d11800000000000007"

mode 0600

}

}