金曜日, 5月 18, 2012

MultiPathの設定方法



・Multipathとは
iscsiとは、玄箱などのNASに似て、リモートからアクセス可能なファイルサーバーの一種で、Multipathは、それらiscsiのシステム上で、ターゲットに対して同時に2本以上のLANケーブルやネットワークを使い、冗長性や帯域を増やす方法です。

・検証環境
RHEL 5.3~5.6(たぶん5.7や5.8も同じ) 64bit

・インストール
yum install device-mapper-multipath.x86_64

・MultiPathの設定
※ブラックリストはMultiPathでマウントしたくないローカルディスクなどを
指定しますが、デフォルト全部禁止のため、コメントアウトしました。
商用などのときはきちんと考えましょう(笑)
デバイスはvendorとproductをターゲット側と適宜合わせましょう。

vi /etc/multipath.conf
#blacklist {
#        devnode "*"
#}
devices {
        device {
                vendor "SAKURA Suisan Inc."
                product "doraemon"
                path_grouping_policy multibus
                getuid_callout "/sbin/scsi_id -g -u -s /block/%n"
                path_checker readsector0
                failback immediate
                path_selector "round-robin 0"
                rr_min_io 10
                rr_weight priorities
        }
}

・MultiPath有効化
/etc/init.d/multipathd start

[root@SV ~]# /etc/init.d/multipathd start
multipathd デーモンを起動中:                               [  OK  ]
[root@SV ~]#

MultiPathを初めて起動したときは、mpathとWWIDの結びつきはバラバラです。
たとえば以下のようになっているのを

mpath1=1IET_00020002
mpath2=1IET_00010001
mpath3=1IET_00050005

下記のように揃えたいと思います。

mpath1=1IET_00010001
mpath2=1IET_00020002
mpath3=1IET_00030003


現状確認
[root@SV ~]# /sbin/multipath -ll
mpath2 (1IET_00010001) dm-1 SAKURA S,doraemon
[size=10M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 4:0:0:1 sdc 8:32  [active][ready]
mpath1 (1IET_00020002) dm-0 SAKURA S,doraemon
[size=20M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 3:0:0:2 sdb 8:16  [active][ready]
mpath5 (1IET_00030003) dm-4 SAKURA S,doraemon
[size=30M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 7:0:0:3 sdf 8:80  [active][ready]
mpath4 (1IET_00040004) dm-3 SAKURA S,doraemon
[size=40M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 6:0:0:4 sde 8:64  [active][ready]
mpath3 (1IET_00050005) dm-2 SAKURA S,doraemon
[size=50M][features=0][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 5:0:0:5 sdd 8:48  [active][ready]
[root@SV ~]#


【再起動後も同じデバイスに紐づける方法】

dmesg |grep "SCSI device"
OSが認識したデバイス名を調べる。

SCSI device sde: 40960 512-byte hdwr sectors (21 MB)
SCSI device sdf: 61440 512-byte hdwr sectors (31 MB)
SCSI device sdc: 81920 512-byte hdwr sectors (42 MB)
SCSI device sdd: 20480 512-byte hdwr sectors (10 MB)
SCSI device sdb: 102400 512-byte hdwr sectors (52 MB)

ls -l /dev/disk/by-path
iqnと結び付けられている(エイリアスになっている)デバイス名を調べる。

ls -l /dev/disk/by-id/
WWIDと結び付けられているデバイス名を調べる。

①~③で同じデバイスに結び付けられているものを探し、「/var/lib/multipath/bindings」で、正しいmpathとWWIDに書きかえる。

「/etc/udev/rules.d/60-raw.rules」は、WWIDの順にrawデバイスを並べる。


作業ログ
[root@SV9 ~]# dmesg |grep "SCSI device"
SCSI device sde: 40960 512-byte hdwr sectors (21 MB)
SCSI device sdf: 61440 512-byte hdwr sectors (31 MB)
SCSI device sdc: 81920 512-byte hdwr sectors (42 MB)
SCSI device sdd: 20480 512-byte hdwr sectors (10 MB)
SCSI device sdb: 102400 512-byte hdwr sectors (52 MB)

ls -l /dev/disk/by-path

[root@SV9 ~]# ls -l /dev/disk/by-path
ip-x.x.x.x:3260-iscsi-iqn.2012-05.dq1.local:SV9-vol01-10M-lun-1 -> ../../sdc
ip-x.x.x.x:3260-iscsi-iqn.2012-05.dq1.local:SV9-vol02-20M-lun-2 -> ../../sdb
ip-x.x.x.x:3260-iscsi-iqn.2012-05.dq1.local:SV9-vol03-30M-lun-3 -> ../../sdf
ip-x.x.x.x:3260-iscsi-iqn.2012-05.dq1.local:SV9-vol04-40M-lun-4 -> ../../sde
ip-x.x.x.x:3260-iscsi-iqn.2012-05.dq1.local:SV9-vol05-50M-lun-5 -> ../../sdd
pci-0000:00:1f.1-ide-0:0 -> ../../hda
pci-0000:02:0e.0-scsi-0:2:0:0 -> ../../sda
pci-0000:02:0e.0-scsi-0:2:0:0-part1 -> ../../sda1
pci-0000:02:0e.0-scsi-0:2:0:0-part2 -> ../../sda2
pci-0000:02:0e.0-scsi-0:2:0:0-part3 -> ../../sda3
[root@SV9 ~]#

ls -l /dev/disk/by-path

[root@SV9 ~]# ls -l /dev/disk/by-id/
合計 0
scsi-1IET_00010001 -> ../../sdc
scsi-1IET_00020002 -> ../../sdb
scsi-1IET_00030003 -> ../../sdf
scsi-1IET_00040004 -> ../../sde
scsi-1IET_00050005 -> ../../sdd
scsi-3600188b03f30f3000cf157c554d9c0d3 -> ../../sda
scsi-3600188b03f30f3000cf157c554d9c0d3-part1 -> ../../sda1
scsi-3600188b03f30f3000cf157c554d9c0d3-part2 -> ../../sda2
scsi-3600188b03f30f3000cf157c554d9c0d3-part3 -> ../../sda3
[root@SV9 ~]#

vi /etc/udev/rules.d/60-raw.rules

ACTION=="add", ENV{ID_SERIAL}=="1IET_00010001",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{ID_SERIAL}=="1IET_00020002",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{ID_SERIAL}=="1IET_00030003",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", ENV{ID_SERIAL}=="1IET_00040004",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", ENV{ID_SERIAL}=="1IET_00050005",RUN+="/bin/raw /dev/raw/raw5 %N"

[root@SV1 ~]# raw -qa
/dev/raw/raw1:  bound to major 8, minor 48
/dev/raw/raw2:  bound to major 8, minor 64
/dev/raw/raw3:  bound to major 8, minor 80
/dev/raw/raw4:  bound to major 8, minor 32
/dev/raw/raw5:  bound to major 8, minor 16
[root@SV1 ~]#

ここで再起動

SCSI device sde: 102400 512-byte hdwr sectors (52 MB)
SCSI device sdc: 61440 512-byte hdwr sectors (31 MB)
SCSI device sdd: 40960 512-byte hdwr sectors (21 MB)
SCSI device sdb: 81920 512-byte hdwr sectors (42 MB)
SCSI device sdf: 20480 512-byte hdwr sectors (10 MB)

確認(デバイス名は前回と違えど、結び付けたいデバイスとくっついていること)

lrwxrwxrwx 1 root root   9  5月 18 05:32 scsi-1IET_00010001 -> ../../sdf
lrwxrwxrwx 1 root root   9  5月 18 05:32 scsi-1IET_00020002 -> ../../sdd
lrwxrwxrwx 1 root root   9  5月 18 05:32 scsi-1IET_00030003 -> ../../sdc
lrwxrwxrwx 1 root root   9  5月 18 05:32 scsi-1IET_00040004 -> ../../sdb
lrwxrwxrwx 1 root root   9  5月 18 05:32 scsi-1IET_00050005 -> ../../sde

OK!