Japan IBM Storage User Group

SVC・Storwize・Spectrum Virtualize系のNPIV機能と注意点

By Keitaro Imai posted Thu June 11, 2020 05:07 AM

  
SVCやSpectrum VirtualizeにはNPIV(N_port ID Virtualization)機能というものが提供されています。(ソフトウェア・バージョンV7.7から)
これは、言葉は同じですがサーバー仮想化環境においてハイパーバイザーの物理アダプターのポートをパススルーして、
仮想マシンの仮想アダプターにストレージを直接見せるような一般的なNPIV機能とは似てはいますが、若干異なります。
どういう機能かというと、SVC系は通常、サーバー接続に物理アダプターのWWPNを使用してSAN Switch上でゾーンを組みます(WWPNゾーンの場合)。
しかし、この物理アダプターに仮想的なWWPNを持たせてサーバーとの接続にはこの仮想WWPNを使用するのがSVC系のNPIVです。
言葉だけ聞くとサーバーのNPIVと同じようなものです。
この機能の挙動、メリットについては以下の図で説明します。
まず、P1-1の物理ポートというポートがある場合、NPIVを有効にするとP1-1'という仮想のWWPNがアサインされます。
他も同様にPx-x'という仮想WWPNがアサインされます。
サーバーはこの仮想WWPNとゾーンを組みます。
ノード1にあるボリュームへはP1-1'、P1-2'を経由してI/Oが行われます。


この状態の時に、例えばノード1の障害が起こると、以下のようにP1-1'、P1-2'の仮想WWPNがノード2に移動します。
サーバーから見るとポートは継続して同じポートが見えているという状態なので、ノード障害に気づかずにI/Oが継続されるということになります。
サーバーのデバイスドライバーは多少のリトライはするものの、パスが切れたということには気づきませんので、Failoverもせずに切り替え時間もより短縮されるというメリットがあります。


また、Storwize系などの箱型筐体を除くSVCやSpectrum Virtualizeにおいては、ソフトウェアバージョン8.1.0からホットスペア・ノードというものが使用可能となりました。
これはノードをスペアとして立てておき、ノード障害時には元のノードの受け持っていたものをスペアが引き継ぐというものですが、この際にも以下のようにNPIVの機能が使用されます。




この機能は、ノードのバージョンアップ時にも使用可能です。
便利な機能のNPIV機能ですが、実装においては多少確認しておく項目があります。
まず、NPIVが有効かどうかですが、これはlsiogrpで分かります。fctargetportmodeがdisabled、enabled、transitionalで判断できます。
IBM_Storwize:V7KG2_2:superuser>lsiogrp 0
id 0
name io_grp0
node_count 2
vdisk_count 124
host_count 32
flash_copy_total_memory 1024.0MB
flash_copy_free_memory 1023.6MB
remote_copy_total_memory 127.0MB
remote_copy_free_memory 126.5MB
mirroring_total_memory 20.0MB
mirroring_free_memory 19.9MB
raid_total_memory 40.0MB
raid_free_memory 25.5MB
maintenance no
compression_active yes
accessible_vdisk_count 122
compression_supported yes
max_enclosures 21
encryption_supported yes
flash_copy_maximum_memory 2048.0MB
site_id
site_name
fctargetportmode disabled
compression_total_memory 37817.9MB
transitionalというのは、物理も仮想も両方使えるというモードですが、通常enable⇔disableを一度にやってしまうとホストからはいきなり見えなくなってしまう可能性があるので、
流れとしてはenable⇔transitional(+SANの変更)⇔disableという変更手順を踏むことになります。
モードの変更はchiogrpで可能です。
また、lstargetportfcコマンドで有効無効、物理、仮想WWPNも確認できます。host_io_permitted及び、virtualizedがYes/Noで状態を判断できます。
以下の例では、NPIVがDisabled状態のアウトプットですが、id 1が物理(virtualized=no)、id 2が仮想(virtualized=yes)というような順で並んでいます。

NPIVが有効になれば、仮想の方がhost_io_permitted=yesとなり、物理のほうがhost_io_permitted=noとなります。transitionalの時はどちらもyesとなります。
NPIV有効時には、WWPNゾーンは仮想WWPNとゾーンしなければストレージのボリュームは見えません。物理のWWPNだけを意識してゾーンしてしまうと見えませんのでご注意ください。
導入時にはこのNPIVが有効となっているかどうかを確認したほうが良いでしょう。ボリュームが見えていない場合は、ゾーンを誤っている可能性があります。
なお、この仮想ポートはホストI/Oのみに使用可能です。ノード間通信等には物理ポートのゾーンを作成するようにしてください。
 

また、fctargetportmodeは、V8.2未満ではDisabledがデフォルトで、V8.2からEnabledがデフォルトとなっています。
V8.2未満からバージョンアップした場合もDisabledがデフォルトとなります。
今後は新規導入時にはV8.2以降が適用されてくると思いますが、念のために導入時に確認しておくことを推奨します。
なお、ゾーンですが、ノード1とノード2、(スペアノード)にゾーンする場合、サーバーのアダプターは各ノードの同じ番号のポート(上記で言うところのP1-1、P2-1、PS-1)にゾーンするようにしてください。
Zoning requirements for N_Port ID Virtualization
NPIVの詳細については以下のRedpaperを御覧ください。
IBM Spectrum Virtualize: Hot-Spare Node and NPIV Target Ports

#SpectrumVirtualize
#flashsystem
#NPIV
#N_portIDVirtualization
0 comments
26 views

Permalink