まえおき

SANの共有ドライブをHBA間(サーバとFCスイッチとストレージ間をFCケーブル1本の1経路でつないだら、サーバでは1個のデバイス(LUN)が見えますわな。それをマウントしたりアンマウントして、サーバ側で共有ドライブとして利用します。

でも、1パスだから共有ドライブが意図せず見えなくなったらシステム落ちちゃうね。データ消えちゃうしどうしようか。。とするならばケーブルとかHBAとか接続経路を偏らないよう分散して冗長構成にするわけですね。

するとパスが増えI/O処理も増えた結果、サーバ側では、ひとつの共有ドライブ(LUN)が複数あるように見えるんですね。

じゃあ束ねよう![DM-Multipath] ってのは、この複数のパスを一つにして、かつパスに障害が発生した場合にまともな経路を選択切替してくれる冗長技術のことなんです。

multipath-server2.png
※経路イメージはRHさんの絵をパクリ

本書の目的

マニュアル読みながら現場でSAN環境はつくったことはあるんだけど、2年くらい触ってないから忘れちゃったんでメモってますのん

お抱えSEになった今、単一点障害が発生して業務は継続できたとして、壊れた箇所の修復をするってなったときに、交換したら設定変わっちゃうのかな。サーバとめるだけなのか。単純にFO/FBだけですむのか。
また真っ白になってお客さんに怒られるのか..「担当者変えてくれないか」...震える;

構築の流れのおさらいとして、Lifekeeperに特化していますが、クラスタとマルチパス構築についての手順を紹介します。
これをやっとけば80点くらいまでは構築できるとおもいます。
(構築手順参考URL)http://sios.jp/products/lkdk/product/pdf/lk740_rhel61_p2000g3msafc.pdf
予断ですが本書で例として紹介している構成は、8パスあったりします。

ruby.(amachan小話)
最近はどこのベンダもオープンテクニカルしまくって助かりますね。

「ストレージ迷子かぁ、遠慮するな俺の胸に飛び込め後輩。」
「あ、さっきぐぐったんで~。なんちゃって先輩ちぃ~す(口くせーしお前)」
「きいぃぃぃぃぃーー、お前を蝋人形にしてやろうかぁあ」

さあ本題

参考として、実際の環境でマルチパスデバイスの構成と、クラスタ側との連携がわかるようコマンド結果を記載しています。

マルチパスのコマンド表示例

※いちおう補足ですが(*)でマスキングしてますよん。

一部のマルチパスデバイスを抜粋
[root@rhel-5.10-OS~]# multipath -ll
multipath.conf line 11, invalid keyword: prio
mpath2 (**005076****100c050000****00000**) dm-2 IBM,**** ←☆wwidでそのデバイスのことね。
[size=.0G][features=1 queue_if_no_path][hwhandler=0][rw]
\_ round-robin 0 [prio=1][active]
 \_ 6:0:*:1* sdac 6*:1** [active][ready]
 \_ 7:0:*:1* sdah 6*:1*  [active][ready]
 \_ 6:0:*:1* sdao 6*:1** [active][ready]
 \_ 6:0:*:1* sdau 6*:2** [active][ready]
 \_ 7:0:*:1* sde  8:6*   [active][ready]
 \_ 7:0:*:1* sdk  8:1**  [active][ready]
 \_ 6:0:*:1* sdq  6*:0   [active][ready]
 \_ 7:0:*:1* sdv  6*:8*  [active][ready]

※他マルチパス割愛

⇒はい。一つのマルチパスデバイスに贅沢8パスある構成ですね~。わたしの残業代はでないのに~、一般的は4パスになります。通例どおり一般的な冗長構成となっており、ステータス良好です。
8つの論理的に表示されているデバイス(sde,sdau,sdah,sdk,sdv,sdao,sdac,sdq) を wwid "**005076****100c050000****00000**" にまとめてますね。
 inbalidキーワードとありますが、設定がおかしかったようで別途修正しました。
 まあここではwwidが以下クラスタソフトで見られてるってことをわかるようにしただけです。

冗長ミドルウェアの保護リソースの状態表示例

LifeKeeperdmmp状態抜粋
[root@rhel-5.10-OS~]# lcdstatus
dmmp***: id=**005076****100c050000****00000**)  app=scsi type=dmmp state=ISP ←☆上とおんなじwwidでそのデバイスを保護してるね。
    initialize=(AUTORES_ISP) automatic restore to IN-SERVICE by LifeKeeper
    info=disk_hint=/dev/dm-2 regMethod=allpaths=sde,sdau,sdah,sdk,sdv,sdao,sdac,sdq notResponding=0 ←ここ
    reason=restore action has succeeded
    these resources are dependent: ****vg****
    Local priority = 1
    SHARED equivalency with "dmmp***" on "servername", priority = 10
        FAILOVER ALLOWED

⇒上記で宣言したとおりクラスタソフトの管理コマンドで見ているデバイスとmultipathコマンドで表示したデバイスは同じです。wwidで判断されるわけですね。

本家の技術資もみました

が脳みそが少ない私の頭に言葉が入ってこない
https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html-single/DM_Multipath/index.html

用語は整理しておかないと

・マルチパスとは、サーバとストレージ間の複数のI/Oパス(物理SAN接続)を、単一のデバイスに見せること
 ・アクティブ/パッシブのフェイルオーバで実装が標準
 ・I/Oにはパスの半分だけが常に使用される
 ・問題発生時には代替パスに切り替わる

そういえばさらっとつこてるWWIDって用語はFCやSCSIネットワークにおける識別子とのこと。
っていわれてもわからんw

■WWID
ちゅごくのことば「WWID(World Wide Identifier)」というあるね、これ「scsi_id」のことよ。multipath.confに記述があるらしいよ。。でもね。意識してここに記述するわけではなくてRHELでmultipathdをインストールしたときにマルチパスデバイスの状態をみて、自動で設定するのことよ。手動でも設定できると思うけど上記の構築手順を見るのことよ、この小国民(日本人)どもが。

■WWNN(World Wide Node Name)
ノード内のファイバーチャネルポートで共通な値で設定される名前である。ただし、ノードの定義は各社異なり、装置であったり、アダプタであったりと統一がなされていない。ノードWWNとも呼ばれる。

■WWPN(World Wide Port Name)
それぞれのファイバーチャネルポート(HBA、CA、ファイバーチャネルスイッチポート等)にユニークな値で設定されている名前でIEEEのMACグーロバルアドレスである。同じWWPNのファイバーチャネルポートは世界に二つ存在しないので、ファイバーチャネルポートLOGIN時の識別子として利用されている。ポートWWNとも呼ばれる。

ブラックリストってなんだ

マルチパス設定ファイルの blacklist セクションは、システムがマルチパスデバイスを設定する際に使用されないデバイスを指定します。ブラックリスト化されたデバイスはマルチパスデバイスにグループ化されません。 (RHELポータルより)
従って、
blacklist:(DM-multipathで管理しないもの)

・ローカルドライブなどDM-multipathで管理しないLUのWWIDを記述する。
・共有ドライブの複数wwidを束ねるため「blacklist」に、除外するwwidを全て記載する。もしくはアスタリスクで記述。多くは*

blacklist_exceptions: (DM-multipathで管理するもの)
・共有ドライブで使用するwwidを記載する。つまり上記流れでいうと8パス中1つの代表wwidをホワイトリスト化する。

blacklist {               
wwid "ローカルドライブのwwid" 
}
blacklist_exceptions {
wwid "000050760000100c05000000000000000"
}


ポイント整理 (工事中)

・user_friendly_names オプション=yes
 yesにするとエイリアスを mpathn 形式のノードに一意の名前に設定される。
・新規デバイスが DM-Multipath 管理下に置かれる場合、その新規デバイスは /dev ディレクトリー下の /dev/mapper/mpathn および /dev/dm-n の 2 つの別々の位置で確認することができます。 

まとめ

まだ工事中です。。まとめるにはもうちっと勉強する時間が必要だということがわかりました。。
それではさよならまた合いましょう。