JP2009053946A - 二重化コントーラ構成ブロックデバイス制御装置 - Google Patents
二重化コントーラ構成ブロックデバイス制御装置 Download PDFInfo
- Publication number
- JP2009053946A JP2009053946A JP2007220253A JP2007220253A JP2009053946A JP 2009053946 A JP2009053946 A JP 2009053946A JP 2007220253 A JP2007220253 A JP 2007220253A JP 2007220253 A JP2007220253 A JP 2007220253A JP 2009053946 A JP2009053946 A JP 2009053946A
- Authority
- JP
- Japan
- Prior art keywords
- controller
- write
- interconnect
- inter
- signal line
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【課題】インタコネクト経由のリードを発行せずに、キャッシュミラーリングを行うことが可能な二重化コントーラ構成ブロックデバイス制御装置を提供する。
【解決手段】コントローラ3(#1,#2)が、インタコネクト7及びコントローラ間信号線8によって相互接続される。コントローラ3(#1)は、インタコネクト経由によるライトと、ライトされた値の保持とが可能な記憶手段を備える。コントローラ3(#2)は、コントローラ間信号線を介して記憶手段に保持されている値をリードする手段と、コントローラ3(#1)をターゲットとするインタコネクトを介したライトを発行する第1ステップ、記憶手段に対してインタコネクト経由でライトを発行する第2ステップ、前記リード手段によって、第2ステップでライトしたデータがリードできたことで、第1ステップで発行したライトの遅延書き込みの完了を確認する第3ステップを実行する手段とを備える。
【選択図】図1
【解決手段】コントローラ3(#1,#2)が、インタコネクト7及びコントローラ間信号線8によって相互接続される。コントローラ3(#1)は、インタコネクト経由によるライトと、ライトされた値の保持とが可能な記憶手段を備える。コントローラ3(#2)は、コントローラ間信号線を介して記憶手段に保持されている値をリードする手段と、コントローラ3(#1)をターゲットとするインタコネクトを介したライトを発行する第1ステップ、記憶手段に対してインタコネクト経由でライトを発行する第2ステップ、前記リード手段によって、第2ステップでライトしたデータがリードできたことで、第1ステップで発行したライトの遅延書き込みの完了を確認する第3ステップを実行する手段とを備える。
【選択図】図1
Description
本発明は、ストレージ装置へのアクセスを制御する、二重化して用いられるコントローラに係り、特に、二重化されたコントローラ間におけるキャッシュデータの冗長化制御に好適な二重化コントーラ構成ブロックデバイス制御装置に関する。
近年、ストレージ装置に対する高信頼性化の要求が高まっており、RAID(Redundant Array of Inexpensive Disks)によるデータの冗長化だけでなく、ストレージ装置内のコントローラを冗長化することで、障害発生時のシステム停止を回避する手段が用いられる。この種の冗長構成を持つストレージ装置では、キャッシュメモリの保全性を高めるために、ライトバック制御されたキャッシュデータの二重化(キャッシュミラーリング)を行う。ライトデータは他系コントローラのキャッシュメモリにコピーされ、ライトデータをディスクアレイへ書き込む前にコントローラが停止しても、他系コントローラがディスクアレイへ書き込む処理を引き継ぐことで、ライトデータ消失は回避される。この種のストレージ装置のコントローラは、ホストコンピュータからのライト要求を受信すると、キャッシュミラーリング処理が完了してからホストコンピュータに対してライト要求の応答を返すことが通常である。
I/O処理に伴うキャッシュミラーリング処理は性能上のボトルネックとなり得るため、高速な専用ハードウェアを介して行われることが多い。例えば、特許文献1では専用バスで結合されたキャッシュ制御回路によって、キャッシュミラーリングおよび論理ディスク領域の排他制御処理を高速化する手法が開示されている。
一方で、ストレージ装置の低価格化を実現するために、専用ハードウェアを実装せず、PCI-Express等の汎用バスをインタコネクトとして結合し、インタコネクトを介したコントローラ間通信によってキャッシュミラーリングを行うストレージ装置も存在する。
PCI-Expressは、PCI-SIG(Peripheral Component Interconnect-Special Interest Group)が策定した装置間を接続するバスの標準規格である。PCI-Expressバスは、ルート・コンプレックスと呼ばれる単一のデバイスとエンド・ポイントと呼ばれる複数のデバイスが、それぞれスイッチのポートにポイント・トゥ・ポイント接続されたトポロジを構成する。それぞれのデバイスとスイッチのポートの接続はリンクと呼ばれる。それぞれのデバイスはパケットの送受信によって通信を行う。送受信されるパケットの種類として、要求元(リクエスタ)が要求先(コンプリータ)に送信するメモリ・リード・リクエストやメモリ・ライト・リクエストやメッセージ・リクエスト、コンプリータがリクエスタへ処理の完了を通知するコンプリーションなどが定義されている。
この種のインタコネクトによって結合される構成を持つストレージ装置において、キャッシュミラーリングは自系コントローラからインタコネクト経由のDMA(Direct Memory Access)によって他系コントローラのキャッシュメモリに転送することで実現される。ホストコンピュータからライト要求を受信したコントローラは、二重化のためのDMA完了後に、ホストコンピュータへライト要求への応答を返す。
しかし、PCI-Expressにはリクエスタがコンプリータからのコンプリーションの受信を待たないポステッド・メモリ・ライト機能やフロー制御機能があるため、自系コントローラ上のプロセッサやDMAコントローラがライト処理を完了しても、データ転送経路中のスイッチ等がバッファリングしている可能性があり、他系コントローラのメモリまで到達していないかもしれない。ホストコンピュータへ応答を先に返してしまうことで、ライトデータがメモリに到達する間に自系コントローラが停止し、ライトデータ消失によるデータ化けが起こる可能性が残る。
このため、通常はデータ転送のためのライトを行った後に、自系コントローラが他系コントローラ上のメモリをリードすることで上記問題を回避する。PCI-Expressの規格上、同一の仮想チャネルを使用している場合、PCI-Expressバス上のメモリ・リード・リクエストは先行するメモリ・ライト・リクエストを追い越すことができず、かつコンプリータからコンプリーションを受信するまで完了しない。即ち、PCI-Expressバス越しのリードの完了によって、先行して発行されたライトが全て完了しており、二重化するライトデータがメモリに到達していることが保証される。
登録特許第3719976号公報
しかしながら、上記のように、PCI-Expressのような汎用バスをインタコネクトとするストレージ装置では、I/O処理に付随するキャッシュミラーリング処理において、インタコネクト経由で他系コントローラをターゲットとするリード処理が発生する。これらのリード処理は専用のハードウェアを実装せず、汎用バスをインタコネクトとしたために止むを得ず行われるが、ソフトウェアがインタコネクト経由のリード処理を行うことにより以下の問題がある。
まず、プロセッサがインタコネクト経由でリードを発行する場合、データ転送が完了するまで時間がかかるためプロセッサが長時間ストールしてしまい、プロセッサのパイプライン処理を妨げる。また、PCI-Expressは全二重通信が可能であるが、自系コントローラのリードデータ転送と他系コントローラからのライトデータ転送が競合して相互干渉する等、インタコネクト経由のリードそのものが性能劣化の要因になり得る。
更に、コントローラ間でリードを発行することによってPCI-Expressのエラー処理が複雑化する問題がある。冗長構成を持つストレージ装置は、他系コントローラ異常の場合はシングルコントローラモードへ遷移して動作を継続し、自系コントローラ異常の場合は直ちに停止して他系コントローラに処理を委譲する必要がある。
PCI-Expressバス上のデバイス(コンプリータ)が故障して通信エラーが発生すると、リードのときは経路上のPCI-Expressスイッチのポートからエラー情報を含むコンプリーションがリクエスタに向けて送信され、ライトのときは経路上のPCI-Expressスイッチのポートからエラー情報を含むメッセージ・リクエストがリクエスタに向けて送信される。リクエスタは、コンプリーションまたはメッセージ・リクエストを受信することでエラーを検知する。
ソフトウェアはコントローラ間通信を行うだけでなく、PCI-Express経由で自系コントローラ内のハードウェアのレジスタ等をリード/ライトする必要もある。よって、リードを発行してエラー情報を含むコンプリーションを受信すると、リードの対象が自系コントローラ上のハードウェアか他系コントローラ上のハードウェアであるかを判断し、対象が他系コントローラ上のハードウェアであれば自系コントローラ上のハードウェア異常が原因であるのか、他系コントローラ異常が原因であるのかを判断して動作継続の可否を決定する必要が発生する。この判断を誤ると、両コントローラともに停止するか、または両コントローラともにシングルコントローラモードで動作するスプリットブレインに陥る可能性もあり、何れにしろ致命的な状態となる。エラー処理が複雑化し、動作継続の判定を行うための要因が増えることでレースコンディションによる誤動作等のソフトウェアの不具合が潜む確率が増加する。
また、エラー情報を含むコンプリーションが受信した後に、シングルコンローラモードへ遷移して動作を継続するためには、ソフトウェアは常にリード発行後にプロセッサ例外が発生する可能性を考慮する必要がある。PCI-Express経由で他系コントローラに対するリードを発行する全ての処理において、プロセッサ例外から正しく復帰できるようにコンテキストを退避してチェックポイントを予め作成しておき、プロセッサ例外が発生するとコンテキストを復元してチェックポイントにロールバックし、シングルコントローラモードへ分岐する等の手順が必要となり、ソフトウェアの処理が煩雑となり、これもまた性能劣化の要因になり得る。
仮に、他系コントローラへのインタコネクト経由のリード処理を省略することができれば、エラー情報を含むコンプリーションを受信したときは、エラー要因が自系コントローラ異常に限定できるため、直ちに動作を停止することができる。このようにエラー処理の複雑化が緩和され、例外からの復帰のための処理も不要となる。
本発明はこのような事情に鑑みてなされたものであり、コントローラ間インタコネクトに単純なハードウェアを追加し、もって、性能劣化やエラー処理複雑化の要因となり得るインタコネクト経由のリードを発行せずに、キャッシュミラーリングを行うことが可能な二重化コントーラ構成ブロックデバイス制御装置を提供することを目的とする。
上記の目的を達成するために、本発明では、以下のような手段を講じる。
すなわち、請求項1の発明は、少なくとも1台のディスク装置から構成されるディスクアレイへのアクセスを制御する第1及び第2のコントローラからなる二重化コントローラ構成ブロックデバイス制御装置である。この装置では、前記第1のコントローラと前記第2のコントローラとは、インタコネクトによって、及び前記インタコネクトとは異なるコントローラ間信号線によって接続され、前記インタコネクトは遅延書き込み機能を有し、前記インタコネクトのライト・リクエストの実行順序が保証されている。そして、前記第1のコントローラに備えられ、前記インタコネクト経由によるライトと、前記ライトされた値の保持とが可能であり、かつ前記コントーラ間信号線に接続された第1の記憶手段と、前記第2のコントローラに備えられ、前記コントローラ間信号線を介して前記第1の記憶手段に保持されている値をリードするリード手段と、前記第2のコントローラに備えられ、前記第1のコントローラをターゲットとする前記インタコネクトを介したライトを発行する第1のステップと、前記第1の記憶手段に対して前記インタコネクト経由でライトを発行する第2のステップと、前記リード手段によって、前記第2のステップでライトしたデータがリードできたことで、前記第1のステップで発行したライトの遅延書き込みの完了を確認する第3のステップとを実行する確認手段とを備えている。
従って、請求項1の発明の二重化コントローラ構成ブロックデバイス制御装置においては、以上のような手段を講じることにより、第2のコントローラが、インタコネクト経由で第1のコントローラの第1の記憶手段をライトし、コントローラ間信号線経由で第1の記憶手段の値をリードすることで、遅延書き込みの完了を確認することができるため、インタコネクト経由のリード発行に伴う性能劣化やエラー処理の複雑化を回避することが可能となる。
また、請求項2の発明は、請求項1に記載の二重化コントローラ構成ブロックデバイス制御装置において、前記第1及び第2のコントローラはそれぞれ主記憶装置を備えている。更に、前記第2のコントローラは、外部装置からライト要求を受信すると、ライトデータを、自己に備えられた主記憶装置に格納し、前記確認手段における前記第1のステップによって前記第1のコントローラに備えられた主記憶装置へ前記ライトデータを前記インタコネクトを介してライトし、前記第2のステップと前記第3のステップとを実行することにより、前記発行した前記第1のコントローラに備えられた主記憶装置への前記ライトデータのライトの遅延書き込みの完了を確認し、前記外部装置へ前記ライト要求の完了通知を行うことによって、ライトバック制御されたキャッシュデータの二重化を行う。
従って、請求項2の発明の二重化コントローラ構成ブロックデバイス制御装置においては、以上のような手段を講じることにより、キャッシュミラーリング処理において、インタコネクト経由のリードを使用しないことで、リード発行に伴う性能劣化やエラー処理の複雑化を回避することが可能となる。
請求項3の発明は、請求項1に記載の二重化コントローラ構成ブロックデバイス制御装置において、前記第2のコントローラに備えられ、前記第1のコントローラに備えられた前記記憶手段の値が更新されたことを、前記コントローラ間信号線を介して検知すると、前記第2のコントローラに対してその旨を通知するための割り込みを生成する割込生成手段とを更に備える。
従って、請求項3の発明の二重化コントローラ構成ブロックデバイス制御装置においては、以上のような手段を講じることにより、遅延書き込みの完了が割り込みで通知されることによって、処理の並列実行が可能となる。
本発明によれば、コントローラ間インタコネクトに単純なハードウェアを追加し、もって、性能劣化やエラー処理複雑化の要因となり得るインタコネクト経由のリードを発行せずに、キャッシュミラーリングを行うことが可能な二重化コントーラ構成ブロックデバイス制御装置を実現することができる。
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
図1は、第1の実施の形態に係る二重化コントーラ構成ブロックデバイス制御装置の構成例を示すブロック図である。
図1に示すように、二重化コントローラ構成ブロックデバイス制御装置(以下、単に「ブロックデバイス制御装置」と称する)2は、2台のコントローラ3(#1,#2)を備えている。そして、各コントローラ3(#1,#2)は、スイッチ4を介してN台のホストコンピュータ1(#1)〜1(#N)と接続している。更に、各コントローラ3(#1,#2)は、スイッチ5を介してディスクアレイ6と接続している。
ホストコンピュータ1とブロックデバイス制御装置2との間を接続するインタコネクトとして、限定される訳ではないが、SCSIプロトコルに基づくブロックデバイス用インタフェース(I/F)であるFC(Fibre Channel)やiSCSI(Internet SCSI)を想定している。FCの場合、スイッチ4の部分がファブリック・スイッチとなり、iSCSIの場合はイーサネット(登録商標)のスイッチング・ハブとなる。また、ブロックデバイス制御装置2とディスクアレイ6との間を接続するインタコネクトとして、限定される訳ではないが、FCやSAS(Serial Attached SCSI)、SATA(Serial ATA)を想定している。FCの場合、スイッチ5の部分がファブリック・スイッチとなり、SASやSATAの場合はエクスパンダとなる。
各コントローラ3(#1,#2)はPCI-Expressリンク7によって相互に接続される。また、各コントローラ3(#1,#2)には他系のコントローラへ出力するコントローラ間信号線8(8ビット幅)、および他系のコントローラから入力されるコントローラ間信号線8(8ビット幅)も接続される。
自系コントローラ3(以下、例えば、コントローラ3(#1)とする)は、他系コントローラ3(以下、例えば、コントローラ3(#2)とする)の起動を検知するとデュアルコントローラモードに遷移し、コントローラ間ハートビート通信を行いながら互いの状態を監視する。コントローラ間ハートビート通信はPCI-Expressリンク7を介して行われる。自系コントローラ3(#1)の異常を検出した場合には処理を中止、ハートビート通信の応答をしないことで他系コントローラ3(#2)がシングルコントローラモードに遷移することを促す。一方、他系コントローラ3(#2)の異常を検出した場合には、他系コントローラ3(#2)の処理を引継ぎ、シングルコントローラモードで動作する。
図2は、このようなコントローラ3の詳細構成例を示すブロック図である。
コントローラ3はI/Oプロセッサ201上で動作するソフトウェアにより制御される。このソフトウェアはROM202に格納され、起動時にメモリ203にロードされI/Oプロセッサ201上で実行される。メモリ203は、バッテリ204により停電時もバックアップされ、ホストコンピュータ1に提供するブロックデバイスのディスクキャッシュとしても使用される。
I/Oプロセッサ201は、PCI-Expressスイッチ207を介してホストI/F 205、ディスクI/F 206、他系コントローラ3上のPCI-Expressスイッチ207と接続する。I/Oプロセッサ201はルート・コンプレックスとして動作し、ホストI/F 205、ディスクI/F 206はエンド・ポイントとして動作する。ホストI/F 205はスイッチ4を介してホストコンピュータ1に接続され、ディスクI/F 206はスイッチ5を介してディスクアレイ6に接続される。ホストI/F 205としては、限定される訳ではないが、FCやiSCSIコントローラ、ディスクI/F 206としては、限定される訳ではないが、FCやSAS、SATAコントローラを想定している。
PCI-Expressスイッチ207のポートは、コントローラ3(#1)と他系コントローラ3(#2)を結合するPCI-Expressリンク7の片側が接続されたポートのみノントランスペアレント接続し、その他はトランスペアレント接続することで、PCI-Expressバス上に複数のルート・コンプレックスが混在することを許可する。またノントランスペアレント接続されたポートのパケット転送機能とアドレス変換機能を使用することで、I/Oプロセッサ201は他系コントローラ3に内在するPCI-Expressバスのメモリ空間にアクセス可能である。
また、I/Oプロセッサ201はバス209を介して信号線制御モジュール208に接続され、信号線制御モジュール208から入力/出力ともに8ビット幅のコントローラ間信号線8によって他方のコントローラ3(#2)に接続される。
ソフトウェアは、I/Oプロセッサ201等の内部ハードウェアとホストI/F 205、ディスクI/F 206等の外部ハードウェアを制御し、複数のHDDで構成するディスクアレイ6を論理ユニットとしてホストコンピュータ1に提供する。
図3は、I/Oプロセッサ201の一般的な内部構成例を示すブロック図である。
I/Oプロセッサ201の内部では、ソフトウェアを実行するI/Oプロセッサコア301やメモリコントローラ302、バスI/F 303、割り込みコントローラ304、DMAコントローラ305、PCI-Express I/F 306が内部バス307によって接続されている。PCI-Express I/F 306は、内部バス307の任意のアドレスをPCI-Expressバス上のメモリ空間にマップする機能を持ち、メモリコントローラ302やバスI/F 303と連携することによって、内部バス307にマップされたメモリ203やROM202、信号線制御モジュール208内のレジスタをPCI-Expressバスのメモリ空間にマップすることができる。これにより、他方のコントローラ3(#2)のI/Oプロセッサコア301やDMAコントローラ305はメモリ空間にマップされたメモリ203やROM202、信号線制御モジュール208内のレジスタ等にI/Oプロセッサコア301を介さずに直接リード/ライトすることが可能となっている。
ソフトウェアは、PCI-Expressバス上のライト・リクエストの実行順序を保証するために、全てのライト・リクエストが同一仮想チャネルを使用し、Relaxed Ordering機能を使用しないようにPCI-Express I/F 306及びPCI-Expressスイッチ207の各ポートを設定する。
図4は、信号線制御モジュール208の詳細構成例を示すブロック図である。
信号線制御モジュール208は、コントローラ間信号線8及び割り込み信号線407を制御する制御回路で、限定される訳ではないが、PLD(Programmable Logic Device)内に定義された論理回路の一部である。I/Oプロセッサ201に対する割り込み信号を制御するための割り込み制御回路401、割り込み制御回路401に接続されたマスクレジスタ402とステータスレジスタ404、出力のコントローラ間信号線8に接続された送信レジスタ405、入力のコントローラ間信号線8及び割り込み制御回路401に接続された受信レジスタ406、各レジスタとバス209を接続するバスI/F 403によって構成される。
バスI/F 403は各レジスタをバス209のアドレスにマップする機能を持つ。これにより、I/Oプロセッサ201内のバスI/F 303と連携することで各レジスタは内部バス307にマップされ、I/Oプロセッサコア301が各レジスタをリード/ライトすることが可能となると同時に、上記の通りコントローラ3(#2)のI/Oプロセッサコア301やDMAコントローラ305が直接リード/ライトすることが可能となる。
送信レジスタ405および受信レジスタ406は8ビット幅で、それぞれ出力/入力のコントローラ間信号線8が直結しており、コントローラ間信号線8の値とレジスタの値は常に一致する。即ち、自系コントローラ3(#1)の送信レジスタ405と他系コントローラ3(#2)の受信レジスタ406の値は一致し、自系コントローラ3(#1)の受信レジスタ406と他系コントローラ3(#2)の送信レジスタ405の値は一致する。
マスクレジスタ402にはInterrupt Mask Bitがあり、バスI/F 403を介してリード/ライト可能である。Interrupt Mask Bitが1に設定されているときは、割り込み制御回路401は決して割り込み信号線407をアサートしない。
ステータスレジスタ404にはInterrupt Pending Bitがあり、バスI/F 403を介したライトは無視して、リードに対してはデータを返した後に0クリアする。
割り込み制御回路401は、受信レジスタ406の値を内部で保持しており、受信レジスタ406の値が更新されたことを検知することができ、検知するとステータスレジスタ404のInterrupt Pending Bitに1を設定する。ステータスレジスタ404のInterrupt Pending Bitが1で、かつマスクレジスタ402のInterrupt Mask Bitが0のとき、割り込み信号線407をアサートし、それ以外のときはネゲートする。
上記の通り、自系コントローラ3(#1)の信号線制御モジュール208内の各レジスタは、自系コントローラ3(#1)および他系コントローラ3(#2)のI/Oプロセッサコア301とDMAコントローラ305からリード/ライト可能である。他系コントローラ3(#2)の送信レジスタ405の値が更新されると自系コントローラ3(#1)の受信レジスタ406の値も更新され、信号線制御モジュール401は更新を検知する。このときステータスレジスタ404のInterrupt Pending Bitに1が設定され、マスクレジスタ402のInterrupt Mask Bitが0であれば割り込み信号線407がアサートされ、ステータスレジスタ404がバスI/F 403経由でリードされるまでネゲートされない。
次に、ホストコンピュータからライト要求を受信してキャッシュメモリ上のライトデータを二重化するキャッシュミラーリング処理を例にとり、I/Oプロセッサ上のソフトウェアの動作について説明する。
ソフトウェアは、自系コントローラ3(#1)の信号線制御モジュール208とペアで8ビット長のカウンタ変数を管理する。ソフトウェアは自系コントローラ3(#1)の信号線制御モジュール208およびカウンタ変数を予め初期化しておく。初期化処理は、ソフトウェアのスタートアップ中や他系コントローラ3(#2)の起動検出後など、デュアルコントローラモードに遷移するときに一度だけ実行され、以下の手順でなされる。
まず、自系コントローラ3(#1)のキャッシュデータをコピーするPCI-Express上のメモリ空間アドレス(他系コントローラ3(#2)のキャッシュメモリがマップされたアドレス)を決定する。このアドレスは、予め静的に定められたアドレスを割り振られても良いし、他系コントローラ3(#2)とのネゴシエーションによって決定されても構わない。同様に、他系コントローラ3(#2)の送信レジスタ405がマップされたPCI-Express上のメモリ空間アドレスも決定する。自系コントローラ3(#1)のマスクレジスタ402のInterrupt Mask Bitに1をライトし、ステータスレジスタ404をリードすることでInterrupt Pending Bitを0に設定する。受信レジスタ406をリードして、その値をカウンタ変数の初期値に設定し、マスクレジスタ402のInterrupt Mask Bitに0を設定する。
図5は、ソフトウェアにおけるライト要求受信処理の動作フローチャートである。
ホストコンピュータ1からホストI/F 205を経由して、ライト要求を受信する(ステップ501)。このとき、ライト要求受信処理を行うために必要となる情報を保持するためにメモリ領域(コンテキスト)を確保する。次に、自系コントローラ3(#1)のキャッシュメモリからブロックを確保して、ホストコンピュータ1からホストI/F 205を経由して、ライトデータを受信する(ステップ502)。
そして、オペレーティングシステムやハードウェアの機能を利用して、異なるコンテキストを持つ処理にプリエンプトされることを禁止する(ステップ503)。更に、カウンタ変数の値をインクリメントする(ステップ504)。そして、ステップ502で確保したキャッシュメモリブロックを他系コントローラ3(#2)上のキャッシュメモリにコピーするべく、ディスクリプタを設定してDMAコントローラ305をドライブする(ステップ505)。同様に、他系コントローラ3(#2)の送信レジスタ405に、自系コントローラ3(#1)が管理するカウンタ変数の値をライトするべく、ディスクリプタを設定してDMAコントローラ305をドライブする(ステップ506)。
更に、コンテキストにステップ506でライトしたカウンタ変数の値を格納する(ステップ507)。ステップ503で変更された状態を元に戻して、異なるコンテキストを持つ処理にプリエンプトされることを許可する(ステップ508)。
その後、コンテキストを退避してライト要求受信処理の実行を中断し、キャッシュミラーリングが完了するのを待つ(ステップ509)。即ち、信号線制御モジュール208から割り込みが入り、割り込み処理において受信レジスタ406の値がステップ506でライトしたカウンタ変数の値よりも大きいことが確認できるまで待つ。信号線制御モジュール208からの割り込み処理については後ほど説明する。
キャッシュミラーリングが完了した後に、ホストコンピュータ1へ応答を返して、コンテキストを解放する(ステップ510)。
図6は、信号線制御モジュール208からの割り込み処理の動作フローチャートである。
まず、自系コントローラ3(#1)のマスクレジスタ402のInterrupt Mask Bitに1を設定して、信号線制御モジュール208からの割り込みを禁止する(ステップ601)。次に、自系コントローラ3(#1)のステータスレジスタ404のInterrupt Pending Bitの値が1であることをリードして確認する(ステップ602)。ステップ602の結果が偽であれば、自系コントローラ3(#1)のマスクレジスタ402のInterrupt Mask Bitに0を設定して(ステップ605)、処理を完了する。ステップ602の結果が真であれば、ステップ603以下を実行する。
更に、自系コントローラ3(#1)の受信レジスタ406をリードする(ステップ603)。そして、中断されている全てのライト要求受信処理の中で、ステップ507においてコンテキストに格納されたカウンタ変数の値が、受信レジスタ406の値よりも小さいか等しい処理に関して、処理の実行を再開させる(ステップ604)。その後、ステップ602に戻る。
次に、自系コントローラ3(#1)がPCI-Expressバスの異常を検出した場合の処理について説明する。
PCI-Expressスイッチ207のポートからエラー情報を含んだメッセージ・リクエスト受信した場合、そのメッセージ・リクエストのリクエスタがPCI-Expressリンク7が接続されたポートであれば、シングルコントローラモードに遷移して、中断中の全てのライト要求受信処理に関して処理の実行を再開する。リクエスタがPCI-Expressリンク7が接続されたポートでなければ、直ちに処理を停止して他系コントローラ3(#2)がシングルコントローラモードに遷移することを促す。
また、PCI-Expressスイッチ207のポートからエラー情報を含んだコンプリーションを受信した場合、直ちに処理を停止して他系コントローラ3(#2)がシングルコントローラモードに遷移することを促す。PCI-Expressスイッチ207が故障して、PCI-Express I/F 306がPCI-Expressリンク210のリンクダウンを検出した場合も同様に処理を停止する。
上記の構成、作用により、キャッシュミラーリング機能が実現される。
自系コントローラ3(#1)のソフトウェアはPCI-Expressリンク7上のリードを発行せず、ライトデータのDMAを行った後に他系コントローラ3(#2)の送信レジスタ405をライトすることで、自系コントローラ3(#1)の受信レジスタ406の値が更新されることを待つ。受信レジスタ406の値が更新された後、ホストコンピュータ1へライト要求の応答を返す。
PCI-Expressバス上のライト・リクエストに着目すると、キャッシュミラーリングのためのライト・リクエストに続いて、他系コントローラ3(#2)の送信レジスタ405に対するライト・リクエストの順序で発行される。バス上のライト・リクエストの順序は保証されているため、受信レジスタ406の値が更新されることで、キャッシュミラーリングのライトデータが他系コントローラ3(#2)のキャッシュメモリに到達していることが保証される。
また、自系コントローラ3(#1)のソフトウェアではライト要求受信処理は並列実行されるが、それぞれの処理に対して、キャッシュミラーリングする際に単純増加するカウンタ変数を用いてユニークな値が関連付けられる。他系コントローラ3(#2)の送信レジスタ405にこの値をライトすることで、自系コントローラ3(#1)の受信レジスタ406の値よりも小さな値に関連付けられたライト要求受信処理は、キャッシュミラーリング処理が完了していることが保証される。
また、PCI-Expressバス上のリード・リクエストのコンプリータは自系コントローラ3(#1)内のハードウェアのみであるため、エラー情報を含んだコンプリーションを受信した場合、自系コントローラ3(#1)のハードウェア異常が原因であることを断定できるため、直ちにソフトウェアの実行を停止することができる。
本実施の形態では、信号線制御モジュール208からの割り込みを使用しているが、割り込みを使用せずに受信レジスタ406の値が変化するまでビジーウェイトして、ライト要求受信処理を継続することも可能である。また、コントローラ間信号線8、送信レジスタ405、受信レジスタ406、マスクレジスタ402のInterrupt Mask Bit、ステータスレジスタ404のInterrupt Pending Bit、カウンタ変数を多重化することで、並列動作することも可能である。
本実施の形態で示した通り、二重化されたコントローラ3(#1,#2)間の接続において、インタコネクトであるPCI-Expressリンク7とは別にコントローラ間信号線8を配し、各コントローラ3(#1,#2)内部に単純な送信レジスタ405及び受信レジスタ406を含む信号線制御モジュール208を実装することで、PCI-Expressリンク7経由のライトのみでキャッシュミラーリング機能が実現され、PCI-Expressリンク7経由のリードに伴う性能劣化やエラー処理が複雑化することを避けることができる効果が得られる。
以上、本発明を実施するための最良の形態について、添付図面を参照しながら説明したが、本発明はかかる構成に限定されない。特許請求の範囲の発明された技術的思想の範疇において、当業者であれば、各種の変更例及び修正例に想到し得るものであり、それら変更例及び修正例についても本発明の技術的範囲に属するものと了解される。
1…ホストコンピュータ、2…二重化コントローラ構成ブロックデバイス制御装置、3…コントローラ、4…スイッチ、5…スイッチ、6…ディスクアレイ、7…PCI-Expressリンク、8…コントローラ間信号線、201…I/Oプロセッサ、202…ROM、203…メモリ、204…バッテリ、205…ホストI/F、206…ディスクI/F、207…PCI-Expressスイッチ、208…信号線制御モジュール、209…バス、210…PCI-Expressリンク、301…I/Oプロセッサコア、302…メモリコントローラ、303…バスI/F、304…割り込みコントローラ、305…DMAコントローラ、306…PCI-ExpressI/F、307…内部バス、401…割り込み制御回路、402…マスクレジスタ、403…バスI/F、404…ステータスレジスタ、405…送信レジスタ、406…受信レジスタ、407…割り込み信号線
Claims (3)
- 少なくとも1台のディスク装置から構成されるディスクアレイへのアクセスを制御する第1及び第2のコントローラからなる二重化コントローラ構成ブロックデバイス制御装置であって、
前記第1のコントローラと前記第2のコントローラとは、インタコネクトによって、及び前記インタコネクトとは異なるコントローラ間信号線によって接続され、
前記インタコネクトは遅延書き込み機能を有し、前記インタコネクトのライト・リクエストの実行順序が保証されており、
前記第1のコントローラに備えられ、前記インタコネクト経由によるライトと、前記ライトされた値の保持とが可能であり、かつ前記コントーラ間信号線に接続された第1の記憶手段と、
前記第2のコントローラに備えられ、前記コントローラ間信号線を介して前記第1の記憶手段に保持されている値をリードするリード手段と、
前記第2のコントローラに備えられ、前記第1のコントローラをターゲットとする前記インタコネクトを介したライトを発行する第1のステップと、前記第1の記憶手段に対して前記インタコネクト経由でライトを発行する第2のステップと、前記リード手段によって、前記第2のステップでライトしたデータがリードできたことで、前記第1のステップで発行したライトの遅延書き込みの完了を確認する第3のステップとを実行する確認手段と
を備えたことを特徴とする二重化コントローラ構成ブロックデバイス制御装置。 - 前記第1及び第2のコントローラはそれぞれ主記憶装置を備え、
前記第2のコントローラは、外部装置からライト要求を受信すると、ライトデータを、自己に備えられた主記憶装置に格納し、前記確認手段における前記第1のステップによって前記第1のコントローラに備えられた主記憶装置へ前記ライトデータを前記インタコネクトを介してライトし、前記第2のステップと前記第3のステップとを実行することにより、前記発行した前記第1のコントローラに備えられた主記憶装置への前記ライトデータのライトの遅延書き込みの完了を確認し、前記外部装置へ前記ライト要求の完了通知を行うことによって、ライトバック制御されたキャッシュデータの二重化を行うことを特徴とする請求項1に記載の二重化コントローラ構成ブロックデバイス制御装置。 - 前記第2のコントローラに備えられ、前記第1のコントローラに備えられた前記記憶手段の値が更新されたことを、前記コントローラ間信号線を介して検知すると、前記第2のコントローラに対してその旨を通知するための割り込みを生成する割込生成手段を更に備えたことを特徴とする請求項1に記載の二重化コントローラ構成ブロックデバイス制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007220253A JP2009053946A (ja) | 2007-08-27 | 2007-08-27 | 二重化コントーラ構成ブロックデバイス制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007220253A JP2009053946A (ja) | 2007-08-27 | 2007-08-27 | 二重化コントーラ構成ブロックデバイス制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009053946A true JP2009053946A (ja) | 2009-03-12 |
Family
ID=40504972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007220253A Pending JP2009053946A (ja) | 2007-08-27 | 2007-08-27 | 二重化コントーラ構成ブロックデバイス制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009053946A (ja) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011170589A (ja) * | 2010-02-18 | 2011-09-01 | Nec Corp | ストレージ制御装置、ストレージ装置およびストレージ制御方法 |
JP2012133456A (ja) * | 2010-12-20 | 2012-07-12 | Fujitsu Ltd | ストレージ装置及びストレージ装置の制御方法 |
JP2012191511A (ja) * | 2011-03-11 | 2012-10-04 | Nec Corp | 記憶装置制御システム及び記憶装置制御システムの記憶装置管理方法 |
US8296516B2 (en) | 2009-10-20 | 2012-10-23 | Hitachi, Ltd. | Storage controller for mirroring data written to cache memory area |
JP2013515980A (ja) * | 2010-06-01 | 2013-05-09 | 株式会社日立製作所 | データ転送装置およびその制御方法 |
US8938567B2 (en) | 2010-03-11 | 2015-01-20 | Ricoh Company, Limited | Communication apparatus, communication system and adapter |
JP2017037500A (ja) * | 2015-08-11 | 2017-02-16 | 富士通株式会社 | ストレージ制御装置 |
JP2018190368A (ja) * | 2017-04-28 | 2018-11-29 | 株式会社日立製作所 | ストレージシステム |
WO2024103967A1 (zh) * | 2022-11-16 | 2024-05-23 | 苏州元脑智能科技有限公司 | Raid控制器恢复元数据的方法、装置、设备及非易失性可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08305500A (ja) * | 1995-04-19 | 1996-11-22 | Internatl Business Mach Corp <Ibm> | 記憶制御装置、それを含むデータ記憶システムおよび二重ペア抑止方法 |
JP2001043026A (ja) * | 1999-07-29 | 2001-02-16 | Toshiba Corp | 系間情報通信システム |
JP2005025371A (ja) * | 2003-06-30 | 2005-01-27 | Toshiba Corp | ディスクアレイ装置及びデータ書き込み制御方法 |
JP2007011682A (ja) * | 2005-06-30 | 2007-01-18 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のパス切替方法 |
-
2007
- 2007-08-27 JP JP2007220253A patent/JP2009053946A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08305500A (ja) * | 1995-04-19 | 1996-11-22 | Internatl Business Mach Corp <Ibm> | 記憶制御装置、それを含むデータ記憶システムおよび二重ペア抑止方法 |
JP2001043026A (ja) * | 1999-07-29 | 2001-02-16 | Toshiba Corp | 系間情報通信システム |
JP2005025371A (ja) * | 2003-06-30 | 2005-01-27 | Toshiba Corp | ディスクアレイ装置及びデータ書き込み制御方法 |
JP2007011682A (ja) * | 2005-06-30 | 2007-01-18 | Hitachi Ltd | 記憶制御装置及び記憶制御装置のパス切替方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296516B2 (en) | 2009-10-20 | 2012-10-23 | Hitachi, Ltd. | Storage controller for mirroring data written to cache memory area |
JP2011170589A (ja) * | 2010-02-18 | 2011-09-01 | Nec Corp | ストレージ制御装置、ストレージ装置およびストレージ制御方法 |
US8938567B2 (en) | 2010-03-11 | 2015-01-20 | Ricoh Company, Limited | Communication apparatus, communication system and adapter |
US9361249B2 (en) | 2010-03-11 | 2016-06-07 | Ricoh Company, Ltd. | Communication apparatus, communication system and adapter |
JP2013515980A (ja) * | 2010-06-01 | 2013-05-09 | 株式会社日立製作所 | データ転送装置およびその制御方法 |
JP2012133456A (ja) * | 2010-12-20 | 2012-07-12 | Fujitsu Ltd | ストレージ装置及びストレージ装置の制御方法 |
JP2012191511A (ja) * | 2011-03-11 | 2012-10-04 | Nec Corp | 記憶装置制御システム及び記憶装置制御システムの記憶装置管理方法 |
JP2017037500A (ja) * | 2015-08-11 | 2017-02-16 | 富士通株式会社 | ストレージ制御装置 |
JP2018190368A (ja) * | 2017-04-28 | 2018-11-29 | 株式会社日立製作所 | ストレージシステム |
WO2024103967A1 (zh) * | 2022-11-16 | 2024-05-23 | 苏州元脑智能科技有限公司 | Raid控制器恢复元数据的方法、装置、设备及非易失性可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8607230B2 (en) | Virtual computer system and migration method of virtual computer | |
JP2009053946A (ja) | 二重化コントーラ構成ブロックデバイス制御装置 | |
KR101455016B1 (ko) | 고가용성 솔리드 스테이트 드라이브를 제공하는 방법 및 장치 | |
JP4817783B2 (ja) | Raidシステム及びそのリビルド/コピーバック処理方法 | |
JP6074056B2 (ja) | 計算機システムおよびデータ制御方法 | |
US7093043B2 (en) | Data array having redundancy messaging between array controllers over the host bus | |
EP1674980B1 (en) | Redundant SAS storage virtualization subsystem and system using the same, and controller and method therefor | |
US20110197011A1 (en) | Storage apparatus and interface expansion authentication method therefor | |
JP5903801B2 (ja) | 通信装置およびid設定方法 | |
US7870417B2 (en) | Apparatus, system, and method for adapter card failover | |
US20060277445A1 (en) | Disk array apparatus and method for controlling the same | |
US20110246720A1 (en) | Storage system with multiple controllers | |
EP3608791B1 (en) | Non-volatile memory switch with host isolation | |
WO2003030006A9 (en) | Controller data sharing using a modular dma architecture | |
US8775867B2 (en) | Method and system for using a standby server to improve redundancy in a dual-node data storage system | |
US11372552B2 (en) | Storage device | |
US20160239371A1 (en) | System and method for peripheral bus device failure management | |
JP2008225753A (ja) | 計算機システム、アクセス制御方法及び管理計算機 | |
JP3987241B2 (ja) | 系間情報通信システム | |
US20110282963A1 (en) | Storage device and method of controlling storage device | |
WO2014094250A1 (zh) | 数据处理方法和设备 | |
US20120331199A1 (en) | Computer system, host-bus-adaptor control method, and program thereof | |
JPWO2010100757A1 (ja) | 演算処理システム、再同期方法、およびファームプログラム | |
US20060265523A1 (en) | Data transfer circuit and data transfer method | |
EP1895427B1 (en) | Data processing system, data processing apparatus, and data processing method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100420 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20101005 |