Storageの仕事に携わる方々であれば知っていることばかりかもしれませんが、
Broadcom(旧Brocade)系SANスイッチのカスケード接続におけるFAQについて改めてご紹介します。
1. カスケード接続に必要なライセンスこれは現行機器であれば殆どが標準機能として装備されていますが、フルファブリック・ライセンスが両方のSANスイッチに必要です。
【確認する方法】
・CLIの場合: licenseshowコマンドで”Fabric License”と出力されていればOK
・GUI(Web Tools)の場合: Switch Admin画面でLicenseタブを開き、Feature(s)列に“Fabric”と表示
2. 両スイッチ間におけるFabric OSの互換性2台のSANスイッチのFabric OSで、バージョンが高い方のRelease Notesを参照します。
Release NotesのPDFをダウンロードしたら、
「Supported Products and FOS Interoperability」という表のあるページを参照してください。
左の列がスイッチ名(※)、右の列がFabric OSのバージョンになります。
この組み合わせにあるスイッチが今回接続するSANスイッチに該当すれば、接続互換性があるということになります。
(※)このNotesにはBroadcom(Brocade)名でのスイッチ名が表記されていますが、IBMの該当するSANスイッチ・モデルであれば接続互換性があるということになります。
Broadcom(Broacde)スイッチ名とIBMモデルの対照は、以下のリファレンスガイドなどを参照ください。
3. カスケード接続の前提条件接続を行う前に、以下の前提を再確認ください。
カスケード接続に失敗する原因の多くが、重複名で内容が異なるゾーン構成によるものです。
(1) 両方のスイッチにフルファブリック・ライセンスが適用されている。
(2) ファブリック内でDomain IDが重複しないこと。
(3) カスケード前の2つのゾーン・コンフィグレーションに、例にあるような重複名で内容の異なる構成エントリーが存在しないこと。
【重複するケースの例】
|
スイッチA |
スイッチB |
1.エントリー内容が異なる場合 |
zoneA: aliasA; aliasB alias: aixfcs0, 1000xxxxxx |
zoneA: aliasA; aliasC alias: aixfcs0, 1000xxxxZZ |
2.エントリー内容が同じでも順番が異なる場合 |
zoneA: aliasA; aliasB |
zoneA: aliasB; aliasA |
3.エイリアス、ゾーン、ゾーン・コンフィグレーションのいずれかが異なる場合 |
cfg: testA |
zone: testA |
4. カスケード接続の手順最後にカスケード接続の手順についてまとめます。
(1) 両方のスイッチにフルファブリック・ライセンスが適用されていることを確認(licenseshowコマンド)。
(2) カスケード後も、ファブリック内でDomain IDが重複しないことを確認(switchshowコマンド)。
(3) 両方のスイッチに重複名の構成エントリーがある場合、片方の定義を削除または別名に変更する。
-名前、メンバー、メンバーの順序、種類の4つ全てが同じ構成エントリーには操作不要
-構成エントリーの名前変更は、zoneObjectRenameコマンドを利用(後述の使用例参照)
-ゾーン・コンフィグレーション、ゾーン、エイリアスの全てを、内容を変えずに名前変更
-対象をメンバーに含む他の構成エントリーにも、メンバーの名前変更を反映
(4) 片方のSANスイッチでゾーン構成を無効化(cfgDisableコマンド)
-有効化できるゾーン・コンフィグレーションは一時点で1つのみであるため、片方を無効化
-カスケードされていたスイッチが一時的に切断され、切断中に構成変更がない場合は不要
(5) 結線を行い、カスケード接続が成功したことを確認(switchShowコマンド)
(6) ゾーン・コンフィグレーションに必要に応じてゾーンをcfgAddコマンドで追加し、cfgEnableコマンドで再有効化
(zoneObjectRenameコマンド使用例)
sansw:admin> cfgshow | grep -E "zone(A|B)"
cfg: cfg0 zoneA; zoneB
zone: zoneA initA; storA
zone: zoneB initB; storB
sansw:admin> zoneobjectrename zoneB,zoneC
sansw:admin> cfgshow | grep -E "zone(A|B)"
cfg: cfg0 zoneA; zoneC
zone: zoneA initA; storA
zone: zoneC initB; storB