・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!