wiki:linux/multipath

Version 3 (modified by yuna, 9 years ago) (diff)

--

multipathメモ

multipathは、ストレージデバイスへのアクセス経路を複数にすることによって、冗長化する技術です。multipathを利用することによって、ストレージの信頼性を向上させることができます。ここでは、iscsiを利用したmultipathの使い方について紹介します。

ネットワークの設定

複数の経路でpingが飛ぶように設定しておいてください。

multipathの設定

iscsiadmでターゲットを認識させる際に、ストレージのIPアドレスを全て指定します。例えば、ストレージに192.168.121.1と192.168.122.1の2つのipでアクセスできる場合、

# iscsiadm -m discovery --type sendtargets -p 192.168.121.1
# iscsiadm -m discovery --type sendtargets -p 192.168.122.1

とします。あとは、

# iscsiadm  -m node -T iqn.2001-04.org.ultimana:storage.disk1 --login
Logging in to [iface: default, target: iqn.2001-04.org.ultimana:storage.disk1, portal: 192.168.122.1,3260]
Login to [iface: default, target: iqn.2001-04.org.ultimana:storage.disk1, portal: 192.168.122.1,3260]: successful
Logging in to [iface: default, target: iqn.2001-04.org.ultimana:storage.disk1, portal: 192.168.121.1,3260]
Login to [iface: default, target: iqn.2001-04.org.ultimana:storage.disk1, portal: 192.168.121.1,3260]: successful

のようにしてiscsiを認識させてしてください。この段階では、複数のパスがあると別々のデバイスにマッピングされます(例えば、192.168.121.1>/dev/sdb、192.168.122.1>/dev/sdc)。次に認識したディスクのscsi idを確認します。

# scsi_id --whitelisted --device=/dev/sdc
  00010001

iscsiストレージに対して1つのidが割り振られているので、/dev/sdbとしても同じ値です。

次に/etc/multipath.confに該当scsi idを登録します。

blacklist_exceptions {
    wwid 00010001
}

multipathコマンドでマルチを有効にします。

# multipath -ll
00010001 dm-0 IET,VIRTUAL-DISK
size=10G features='0' hwhandler='0' wp=rw
|-+- policy='round-robin 0' prio=0 status=enabled
| `- 4:0:0:1 sdb 8:16 failed faulty running
`-+- policy='round-robin 0' prio=1 status=active
  `- 3:0:0:1 sdc 8:32 active ready  running

でマルチパスを認識させると/dev/dm-0にmultipath用のデバイスが作成されているので、dm-0をディスクとして利用します。

追加ボリュームのスキャン

FCを利用したストレージ装置などで、ボリュームを追加した場合、下記のコマンドでスキャンすることができる。host0は、 ホストバスアダプタ。echoでディスクをりスキャンし、multipath -r でマルチパスをりスキャンする。

# echo "- - -" > /sys/class/scsi_host/host0/scan
# multipath -r    

ディスクの削除手順

下記の手順でマルチパスデバイスを削除後、マルチパスに設定されえたディスクを削除する。

# multipath -f mpatha
# echo "1" >  /sys/block/sdj/device/delete
# echo "1" >  /sys/block/sdk/device/delete

その後、ストレージマネージャなどからボリュームを削除する。