こちらも参考にしてみてください。
---------------------------------------------
参考>>
仮想環境を使って簡単にRHEL6のiscsiマルチパスを検証する
---------------------------------------------
Linux で iSCSI を使う方法と、マルチパス化する方法について記載する。
クライアント:RedHat Enterprise Linux 5.3
ストレージ:Solaris10 ZFS iSCSI
Solaris10側でのiSCSIの準備
(1) ネットワーク環境
テストするSolaris10環境がNIC1枚しかないので少々工夫する。
>ifconfig -a
lo0: flags=2001000849
mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843
mtu 1500 index 2
inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
ether 0:14:4f:4a:bb:6a
vboxnet0: flags=1000843
mtu 1500 index 3
inet 192.168.56.1 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:79:a1:e4
論理インターフェースを作成し、IPを割り当てる。iSCSIはこの論理IPに対してアクセスする。
>ifconfig e1000g0:1 plumb
>ifconfig e1000g0:2 plumb
>ifconfig e1000g0:3 plumb
>ifconfig e1000g0:4 plumb
>ifconfig e1000g0:1 192.168.1.201 netmask 255.255.255.0 up
>ifconfig e1000g0:2 192.168.1.202 netmask 255.255.255.0 up
>ifconfig e1000g0:3 192.168.1.203 netmask 255.255.255.0 up
>ifconfig e1000g0:4 192.168.1.204 netmask 255.255.255.0 up
>ifconfig -a
lo0: flags=2001000849
mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
e1000g0: flags=1000843
mtu 1500 index 2
inet 192.168.1.10 netmask ffffff00 broadcast 192.168.1.255
ether 0:14:4f:4a:bb:6a
e1000g0:1: flags=1000843 mtu 1500 index 2
inet 192.168.1.201 netmask ffffff00 broadcast 192.168.1.255
e1000g0:2: flags=1000843 mtu 1500 index 2
inet 192.168.1.202 netmask ffffff00 broadcast 192.168.1.255
e1000g0:3: flags=1000843 mtu 1500 index 2
inet 192.168.1.203 netmask ffffff00 broadcast 192.168.1.255
e1000g0:4: flags=1000843 mtu 1500 index 2
inet 192.168.1.204 netmask ffffff00 broadcast 192.168.1.255
vboxnet0: flags=1000843
mtu 1500 index 3
inet 192.168.56.1 netmask ffffff00 broadcast 192.168.56.255
ether 8:0:27:79:a1:e4
(2)iSCSIターゲットの起動
>svcs -a |grep iscsi
disabled 18:17:06 svc:/system/iscsitgt:default
>svcadm enable svc:/system/iscsitgt:default
>svcs -a |grep iscsi
online 18:17:13 svc:/network/iscsi/initiator:default
(3)iSCSIボリュームの作成
>zfs create spool/iscsi
>zfs create -V 10gb spool/iscsi/iscsi01
>zfs list |grep iscsi
spool/iscsi 10.0G 4.22T 31.4K /spool/iscsi
spool/iscsi/iscsi01 10G 4.22T 23.9K -
(4)iSCSIの基本設定
>iscsitadm modify admin -d /spool/iscsi
>iscsitadm show admin
iscsitadm:
Base Directory: /spool/iscsi
CHAP Name: Not set
RADIUS Access: Not set
RADIUS Server: Not set
iSNS Access: Not set
iSNS Server: Not set
iSNS Server Status: Not applicable
Fast Write ACK: Not set
(5)iSCSIボリュームの有効化
>iscsitadm show stats
operations bandwidth
device read write read write
-------------------- ----- ----- ----- -----
>iscsitadm list target
表示なし
>zfs set shareiscsi=on spool/iscsi/iscsi01
>iscsitadm show stats
operations bandwidth
device read write read write
-------------------- ----- ----- ----- -----
spool/iscsi/iscsi01 0 0 0K 0K
>iscsitadm list target -v
Target: spool/iscsi/iscsi01
iSCSI Name: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
Alias: spool/iscsi/iscsi01
Connections: 0
ACL list:
TPGT list:
LUN information:
LUN: 0
GUID: 0
VID: SUN
PID: SOLARIS
Type: disk
Size: 10G
Backing store: /dev/zvol/rdsk/spool/iscsi/iscsi01
Status: online
Linux側の作業
# uname -a
Linux rhel5-xvm 2.6.18-128.el5 #1 SMP Wed Dec 17 11:42:39 EST 2008 i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
(1)事前パッケージの準備
iscsiイニシエータ
# rpm -qa |grep iscsi
iscsi-initiator-utils-6.2.0.868-0.18.el5
マルチパス
# rpm -qa |grep multi
device-mapper-multipath-0.4.7-23.el5
インストールメディアに含まれているので、インストールされていない場合はインストールしておく。
(2) LinuxからiSCSIターゲットを認識させる
初期は何も登録されていない。
# iscsiadm -m node
iscsiadm: no records found!
一つのIPを認識させると、付属する他のIPポータルも検索してくれる(余分なもののついてくる
# iscsiadm --mode discovery --type sendtargets --portal 192.168.1.201
192.168.1.10:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.56.1:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
余分なターゲットポータルを削除する。
# iscsiadm -m node -o delete -T iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562 -p 192.168.56.1:3260,1
# iscsiadm -m node -o delete -T iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562 -p 192.168.1.10:3260,1
# iscsiadm -m node
192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
(3)ターゲットへログインする
最初は何もログインしていない
# iscsiadm -m session
iscsiadm: No active sessions.
ログインする
# iscsiadm -m node --login
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.203,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.201,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.204,3260]
Logging in to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.202,3260]
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.203,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.201,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.204,3260]: successful
Login to [iface: default, target: iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562, portal: 192.168.1.202,3260]: successful
ログインしたセッションを確認
# iscsiadm -m session
tcp: [6] 192.168.1.203:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [7] 192.168.1.201:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [8] 192.168.1.204:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
tcp: [9] 192.168.1.202:3260,1 iqn.1986-03.com.sun:02:46de72a8-5705-ec14-c178-9fe760cbf562
ここで余分なセッションへログインしている場合は以下でログオフしておく
# iscsiadm -m node -p 192.168.XX.XX:3260,1 --logout
* iSCSI のセッションタイムアウトについて
パスにエラーが発生した場合、ターゲットポータルから何秒応答がなかったらエラーとみなすかを設定する必要がある。
ここでエラーをハンドルし、マルチパスデーモンに渡され、上位でパスの切り替えが行われる。
標準で120秒でエラーとなるように設定されている。
これを変更するには、
/etc/iscsi/iscsid.conf を編集
node.session.timeo.replacement_timeout = 120
デフォルトで120秒。ここを短くすることでフェイルオーバー速度を上げることができる。
ただし、短くしすぎると高負荷時に頻繁にパスの切り替えが発生してしまうので注意が必要。
(4)ディスクの確認
認識したディスクを確認
# fdisk -l
----------------------------------
Disk /dev/hda: 2199.0 GB, 2199022206976 bytes
255 heads, 63 sectors/track, 267349 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes
デバイス Boot Start End Blocks Id System
/dev/hda1 * 1 65 522081 83 Linux
/dev/hda2 66 326 2096482+ 82 Linux swap / Solaris
/dev/hda3 327 267349 2144862247+ 83 Linux
Disk /dev/sda: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sda は正常な領域テーブルを含んでいません
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdb は正常な領域テーブルを含んでいません
Disk /dev/sdc: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdc は正常な領域テーブルを含んでいません
Disk /dev/sdd: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = シリンダ数 of 2048 * 512 = 1048576 bytes
ディスク /dev/sdd は正常な領域テーブルを含んでいません
----------------------------------
一つのディスクが複数の経路で見えていることが分かる。
(5)マルチパスの設定
ここからの設定は基本的にFC-SANでのマルチパス設定と変わらない。
device-mapper multipathを使用する。詳細は以前のエントリーを参照してください。
マルチパス対象となるデバイスのwwidを識別する。
二つの方法がある
[1.by-idを確認する]
# ls -l /dev/disk/by-id/
合計 0
lrwxrwxrwx 1 root root 9 5月 16 2010 ata-VBOX_CD-ROM_VB2-01700376 -> ../../hdc
lrwxrwxrwx 1 root root 9 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01 -> ../../hda
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part1 -> ../../hda1
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part2 -> ../../hda2
lrwxrwxrwx 1 root root 10 5月 16 2010 ata-VBOX_HARDDISK_VB2b054e7c-64e79e01-part3 -> ../../hda3
lrwxrwxrwx 1 root root 9 5月 15 19:46 scsi-3600144f04bee77860000144f4abb6a00 -> ../../sdc
ここの表示は、fdisk -l で表示される全てのパスは表示されないので注意。
ただし、fdiskで表示されたデバイス名(sda, sdb, sdc, sdd)のどれかが、by-idに表示されるので、
ここでは 3600144f04bee77860000144f4abb6a00 がwwid だとわかる(scsi- の部分はいらない)
[2.scsiコマンドで確認する]
# /sbin/scsi_id -g -u -s /block/sda
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdb
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdc
3600144f04bee77860000144f4abb6a00
# /sbin/scsi_id -g -u -s /block/sdd
3600144f04bee77860000144f4abb6a00
/etc/multipath.conf を編集する。
------------------------------------
blacklist {
devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
devnode "^hd[a-z]"
}
blacklist_exceptions {
wwid "3600144f04bee77860000144f4abb6a00"
}
defaults {
user_friendly_names yes
}
multipaths {
multipath {
wwid "3600144f04bee77860000144f4abb6a00"
alias zfs-iscsi01
path_grouping_policy multibus
path_checker readsector0
path_selector "round-robin 0"
failback manual
rr_weight priorities
no_path_retry 5
}
}
----------------------------------------
# multipath -ll
zfs-iscsi01 (3600144f04bee77860000144f4abb6a00) dm-0 SUN,SOLARIS
[size=10G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=4][enabled]
\_ 0:0:0:0 sda 8:0 [active][ready]
\_ 1:0:0:0 sdb 8:16 [active][ready]
\_ 2:0:0:0 sdc 8:32 [active][ready]
\_ 3:0:0:0 sdd 8:48 [active][ready]
これでマルチパスが設定されていることが確認できる。
# multipath -v 3
dm-0: blacklisted
fd0: blacklisted
hda: blacklisted
hdc: blacklisted
md0: blacklisted
ram0: blacklisted
ram10: blacklisted
ram11: blacklisted
ram12: blacklisted
ram13: blacklisted
ram14: blacklisted
ram15: blacklisted
ram1: blacklisted
ram2: blacklisted
ram3: blacklisted
ram4: blacklisted
ram5: blacklisted
ram6: blacklisted
ram7: blacklisted
ram8: blacklisted
ram9: blacklisted
sda: not found in pathvec
sda: mask = 0x1f
sda: bus = 1
sda: dev_t = 8:0
sda: size = 20971520
sda: vendor = SUN
sda: product = SOLARIS
sda: rev = 1
sda: h:b:t:l = 0:0:0:0
sda: serial =
sda: path checker = readsector0 (config file default)
sda: state = 2
sda: getprio = NULL (internal default)
sda: prio = 1
sda: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sda: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdb: not found in pathvec
sdb: mask = 0x1f
sdb: bus = 1
sdb: dev_t = 8:16
sdb: size = 20971520
sdb: vendor = SUN
sdb: product = SOLARIS
sdb: rev = 1
sdb: h:b:t:l = 1:0:0:0
sdb: serial =
sdb: path checker = readsector0 (config file default)
sdb: state = 2
sdb: getprio = NULL (internal default)
sdb: prio = 1
sdb: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdb: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdc: not found in pathvec
sdc: mask = 0x1f
sdc: bus = 1
sdc: dev_t = 8:32
sdc: size = 20971520
sdc: vendor = SUN
sdc: product = SOLARIS
sdc: rev = 1
sdc: h:b:t:l = 2:0:0:0
sdc: serial =
sdc: path checker = readsector0 (config file default)
sdc: state = 2
sdc: getprio = NULL (internal default)
sdc: prio = 1
sdc: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdc: uid = 3600144f04bee77860000144f4abb6a00 (callout)
sdd: not found in pathvec
sdd: mask = 0x1f
sdd: bus = 1
sdd: dev_t = 8:48
sdd: size = 20971520
sdd: vendor = SUN
sdd: product = SOLARIS
sdd: rev = 1
sdd: h:b:t:l = 3:0:0:0
sdd: serial =
sdd: path checker = readsector0 (config file default)
sdd: state = 2
sdd: getprio = NULL (internal default)
sdd: prio = 1
sdd: getuid = /sbin/scsi_id -g -u -s /block/%n (config file default)
sdd: uid = 3600144f04bee77860000144f4abb6a00 (callout)
===== paths list =====
uuid hcil dev dev_t pri dm_st chk_st vend/pr
3600144f04bee77860000144f4abb6a00 0:0:0:0 sda 8:0 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 1:0:0:0 sdb 8:16 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 2:0:0:0 sdc 8:32 1 [undef][ready] SUN,SOL
3600144f04bee77860000144f4abb6a00 3:0:0:0 sdd 8:48 1 [undef][ready] SUN,SOL
params = 1 queue_if_no_path 0 1 1 round-robin 0 4 1 8:0 1000 8:16 1000 8:32 1000 8:48 1000
status = 2 0 0 0 1 1 E 0 4 0 8:0 A 0 8:16 A 0 8:32 A 0 8:48 A 0
3600144f04bee77860000144f4abb6a00: exception-listed
sda: ownership set to zfs-iscsi01
sda: not found in pathvec
sda: mask = 0xc
sda: state = 2
sda: prio = 1
sdb: ownership set to zfs-iscsi01
sdb: not found in pathvec
sdb: mask = 0xc
sdb: state = 2
sdb: prio = 1
sdc: ownership set to zfs-iscsi01
sdc: not found in pathvec
sdc: mask = 0xc
sdc: state = 2
sdc: prio = 1
sdd: ownership set to zfs-iscsi01
sdd: not found in pathvec
sdd: mask = 0xc
sdd: state = 2
sdd: prio = 1
zfs-iscsi01: pgfailback = -1 (LUN setting)
zfs-iscsi01: pgpolicy = multibus (LUN setting)
zfs-iscsi01: selector = round-robin 0 (LUN setting)
zfs-iscsi01: features = 0 (internal default)
zfs-iscsi01: hwhandler = 0 (internal default)
zfs-iscsi01: rr_weight = 2 (LUN setting)
zfs-iscsi01: minio = 1000 (config file default)
zfs-iscsi01: no_path_retry = 5 (multipath setting)
pg_timeout = NONE (internal default)
zfs-iscsi01: set ACT_NOTHING (map unchanged)
3600144f04bee77860000144f4abb6a00: exception-listed
3600144f04bee77860000144f4abb6a00: exception-listed
3600144f04bee77860000144f4abb6a00: exception-listed
(6)フォーマットしてマウントする
# ll /dev/mpath/
合計 0
lrwxrwxrwx 1 root root 7 5月 15 20:23 mpath0 -> ../dm-0
# parted /dev/mpath/mpath0
GNU Parted 1.8.1
/dev/dm-0 を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) print
エラー: /dev/dm-0 を開けません。ディスクラベルが認識できません。
(parted) mklabel gpt
(parted) print
モデル: Linux device-mapper (dm)
ディスク /dev/dm-0: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
(parted) mkpart primary 0 10G
(parted) print
モデル: Linux device-mapper (dm)
ディスク /dev/dm-0: 10.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt
番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 17.4kB 10.7GB 10.7GB primary
(parted) quit
# kpartx -a /dev/mpath/mpath0
# ll /dev/mpath/
合計 0
lrwxrwxrwx 1 root root 7 5月 15 20:23 mpath0 -> ../dm-0
lrwxrwxrwx 1 root root 7 5月 15 21:11 mpath0p1 -> ../dm-2
# mkfs -t ext3 /dev/mpath/mpath0p1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621431 blocks
131071 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2684354560
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 30 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# mkdir /mnt/mpath0
# mount -t ext3 /dev/mpath/mpath0p1 /mnt/mpath0
# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda3 2.0T 2.6G 1.9T 1% /
/dev/hda1 494M 16M 453M 4% /boot
tmpfs 506M 0 506M 0% /dev/shm
/dev/dm-2 9.9G 151M 9.2G 2% /mnt/mpath0
以上で手順は終了。
後は、パス切断を行ってテストを行ってください。