雑談のネタがないので、技術系の雜話をします。どっちも雑ですが。。。
さて、Linuxを趣味で使用する方に、無縁かもしれませんが、エンタープライズにLinuxを使用すると、性能以外に、拡張性、耐故障性などが求められます。今回は、Qlogicのfailoverについて触れます。
ファイバーチャンネルでQlogic社のHBAのQlogicを使われる方が多いと思います。ポートが二つ以上あると、多チャンネル構成が出来ますので、ドライバのバージ>ョンによってI/Oのfailoverやloadbalanceが可能になります。最新のバージョンは両方できるようになっています。
2ポート以上の構成は見たことがないので、2ポートについての動作を書きます。この場合、チャンネルはそれぞれアクティブパス(Active Path)、スタンバイパス(Standby Path)を構成します。この構成がシステムのブート時に決まります。
Linuxブートプロセスで、PCIスキャンの時に最初に見つかったHBAのポートのチャンネルがディフォルトのActive Pathになります。その後見つかったものがStandby Pathになります。ここで、最初に見つかったHBAを0、次に見つかったHBAを1とします。
まず、カードが認識されていることをprocファイルから確認します。
次のprocファイルが存在します。
#ls /proc/scsi/qla2300/
/proc/scsi/qla2300/0
/proc/scsi/qla2300/1
次に、カードの情報を確認します。
#cat /proc/scsi/qla2300/0
QLogic PCI to Fibre Channel Host Adapter for QLA2340 :
Firmware version: 3.03.06, Driver version 7.03.00-fo
:
:
Number of retries for empty slots = 0
Number of reqs in pending_q= 0, retry_q= 0, done_q= 0, scsi_retry_q= 0
Number of reqs in failover_q= 0
Host adapter:loop state= <READY>, flags= 0x860a33 <--この行に注目(1)
:
:
SCSI LUN Information: <---- この情報に注目(2)
(Id:Lun) * - indicates lun is not registered with the OS.
( 0: 0): Total reqs 12, Pending reqs 0, flags 0x0, 0:0:00,
( 0: 1): Total reqs 5, Pending reqs 0, flags 0x0, 0:0:00,
( 0: 2): Total reqs 5, Pending reqs 0, flags 0x0, 0:0:00,
( 0: 3): Total reqs 5, Pending reqs 0, flags 0x0, 0:0:00,
loop stateには、<READY>, <DOWN>, <DEAD>があります。それぞれは
<READY> => チャンネルのリンクが正常
<DOWN> => チャンネルのリンクが異常 (リトライ中)
<DEAD> => チャンネルのリンクが断線
上記(1)の情報から、HBA0のチャンネルが正常で、(2)からHBA0にディフォルのアクティブパスがあるということが分ります。
#cat /proc/scsi/qla2300/1
QLogic PCI to Fibre Channel Host Adapter for QLA2340
Firmware version: 3.03.06, Driver version 7.03.00-fo
:
:
Host adapter:loop state= <READY>, flags= 0x860a33 <-- リンクOK。
:
:
SCSI LUN Information: <---- なにもない。
(Id:Lun) * - indicates lun is not registered with the OS.
SCSI LUN Information には、OSに登録されたSCSI ID - LUNの情報があります。起動時にディフォルトのアクティブパスから読み取った情報がカーネルに登録されます。スタンバイパスから読み取ったSCSI ID - LUN情報は、ドライバ内部で先に登録された情報にマージされます。このため、RAID上でLUNが4つがある場合、4 x 2 = 8個のディスクが見える筈ですが、failoverモードを使用すると、その半分の4つのディスクに構成されます。dupしたディスクが1つになったわけです。
ちょっとした実験ですが、アクティブパスのファイバーを抜いて、暫くして差し戻すと以下のdmesgの出力を確認出来ます。
#dmesg
:
:
qla2x00: FAILOVER device 0 from 5006xxxxxxxx7910 -> 5006xxxxxxxx7912 - LUN 00, reason=0x1
qla2x00: FROM HBA 1 to HBA 0
:
:
qla2x00: FAILBACK device 0 -> 5006xxxxxxxx7910 LUN 00
qla2x00: FROM HBA 0 to HBA 1
:
:
尚、このブログに書いた情報はMIRACLE LINUX 3.0 , kernel-2.4.21-20.29AXsmpの環境でQlogic 2340カードを使った時のものです。
最近のコメント