(57)【要約】【課題】  キャッシュメモリを有する複数のディスクコントローラと、前記複数のディスクコントローラからアクセス可能な共有ボリウム有するディスクアレイからなるディスク装置において、キャッシュメモリ間のデータ一致を確保できるディスク装置を提供する。【解決手段】  チャネルアダプタとキャッシュメモリとディスクアダプタを有する複数のディスクコントローラＤＫＣと、ディスクコントローラＤＫＣから同時にアクセス可能な共有ボリウムＫＶＯＬを有するディスクアレイＤＡとを備えるディスク装置において、複数のディスクコントローラＤＫＣとディスクアレイＤＡとを接続するスイッチＳＷを備え、スイッチＳＷはディスクコントローラＤＫＣから共有ボリウムＫＶＯＬへの書込みデータを一時記憶するメモリを有する。【選択図】        図１
2006072634.tif 000002
【特許請求の範囲】
【請求項１】
チャネルアダプタとキャッシュメモリとディスクアダプタを有する複数のディスクコントローラと、前記複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有するディスクアレイとを備えるディスク装置において、
前記複数のディスクコントローラと前記ディスクアレイとを接続するスイッチを備え、該スイッチは前記ディスクコントローラから前記共有ボリウムへの書込みデータを一時記憶するメモリを有することを特徴とするディスク装置。
【請求項２】
チャネルアダプタとキャッシュメモリとディスクアダプタを有する複数のディスクコントローラと、前記複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有するディスクアレイと、前記複数のディスクコントローラと前記ディスクアレイとを接続するスイッチとを備えるディスク装置において、
前記スイッチは、前記複数のディスクコントローラから前記共有ボリウムへの書き込みに対する排他アクセス制御と、前記複数のディスクコントローラ内キャッシュメモリ間の未書き込みデータ以外のデータの一致制御を行うことを特徴とするディスク装置。
【請求項３】
前記スイッチは、前記ディスクコントローラの一つから前記共有ボリウムへ書き込みアクセスを受けると、前記書き込みを発行したディスクコントローラ以外のすべてのディスクコントローラに、前記共有ボリウムに対応するキャッシュメモリ領域内書き込み済みデータを無効化する指示を送信する請求項２記載のディスク装置。
【請求項４】
前記スイッチは、前記ディスクコントローラの一つから前記共有ボリウムへ書き込みアクセス中に、他のディスクコントローラが前記共有ボリウムに対するアクセスを受けると、前記共有ボリウムを構成するターゲットデバイスに代わり前記他のディスクコントローラへビジーを返信する請求項２記載のディスク装置。
【請求項５】
前記スイッチは、前記ディスクコントローラの一つから前記共有ボリウムへ書き込みアクセスを受けると、書き込みデータをスイッチ内部のメモリに一時保存するとともに、アクセスしていないすべてのディスクコントローラへ前記書き込みデータを送信し、該書き込みデータを受信したディスクコントローラは、前記共有ボリウムに対応するキャッシュメモリ内の未書き込みデータ以外のデータを更新する請求項２記載のディスク装置。
【請求項６】
前記スイッチは、該スイッチをイニシエータとし、かつ、前記書き込みデータを受信するディスクコントローラ内ディスクアダプタをターゲットとして、前記ディスクコントローラへのＳＣＳＩ書き込み処理により前記書き込みデータを送信する請求項５記載のディスク装置。
【請求項７】
前記ターゲットにアクセスすることにより、前記共有ボリウムに対応するキャッシュメモリ領域へアクセスできる請求項６記載のディスク装置。
【請求項８】
前記スイッチは、共有メモリ型のスイッチである請求項２記載のディスク装置。
【請求項９】
前記ディスクコントローラと前記スイッチとに接続され、かつ、共有ボリウム設定情報をディスクコントローラと前記スイッチに設定する保守端末を備える請求項２記載のディスク装置。
【請求項１０】
チャネルアダプタとキャッシュメモリとディスクアダプタを有する複数のディスクコントローラと、ディスクアレイと、前記複数のディスクコントローラと前記ディスクアレイとを接続するスイッチとを備えるディスク装置において、
前記複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有し、かつ、前記スイッチと接続するサブディスク装置を備えており、前記スイッチは、前記複数のディスクコントローラから前記共有ボリウムへの書き込みに対する排他アクセス制御を行い、前記サブディスク装置は、前記複数のディスクコントローラ内キャッシュメモリ間の未書き込みデータ以外のデータの一致制御を行うことを特徴とするディスク装置。
【請求項１１】
チャネルアダプタとキャッシュメモリとディスクアダプタを有する複数のディスクコントローラと、前記複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有するディスクアレイと、前記複数のディスクコントローラと前記ディスクアレイとを接続するスイッチとを備えるディスク装置において、
保守端末を備えており、前記ディスクコントローラのチャネルアダプタ及びディスクアダプタは、前記保守端末と接続し、前記スイッチは、前記複数のディスクコントローラ及びディスクアレイと接続するクロスバスイッチと、前記クロスバスイッチと接続するメモリと、前記保守端末と接続するスイッチコントローラとを有することを特徴とするディスク装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおける２次記憶装置に関し、さらに詳しくは、複数のディスクコントローラとディスクアレイからなるディスク装置に関する。
【背景技術】
【０００２】
現在の高性能コンピュータシステムは、大容量の２次記憶装置を備えている。ＣＰＵ（中央処理装置）等の上位装置が必要とするデ−タは２次記憶装置に保存され、ＣＰＵ等が随時に書き込み及び読み出しを行う。この２次記憶装置としては、一般に不揮発な記憶媒体が使用され、代表的なものとして磁気ディスク装置や、光ディスクなどのディスク装置がある。
【０００３】
近年の高度情報化に伴い、このディスク装置の高性能化が要求されている。ディスク装置の高性能化のためには、特にデータ入出力スループットを向上させ、かつディスクドライブの接続台数を増加させることが望ましい。
【０００４】
ディスク装置のスループットを向上させる方法の一つは、ディスクアレイに複数のディスクコントローラを接続して、ディスク装置のキャッシュメモリ容量と上位装置に接続するポート数を増加させる方法がある。
【０００５】
この種のディスク装置としては、例えば、特許文献１に開示されているディスクアレイ装置がある。以下、該公報に記載の従来技術を第１の従来技術と呼ぶ。第１の従来技術では、複数のディスクドライブを複数のコントローラで共有する。
【０００６】
また、特にディスクドライブ接続台数増加を目的として、ディスク装置内のディスクコントローラとディスクアレイの接続に、スイッチ接続を適用することが検討されている。この種のスイッチ接続に適用可能なスイッチとして、例えば、特許文献２に開示されているスイッチがある。以下、該公報に記載の従来技術を第２の従来技術と呼ぶ。第２の従来技術では、スイッチに接続した複数の計算機が共有する記憶領域へのアクセスをスイッチが排他制御する。また、複数の計算機内ライトスルー・キャッシュメモリ間で不一致が生じた際に、不一致データを無効化する指示をスイッチが計算機へ送信する。
【特許文献１】特開２００１−３４４１８８号公報
【特許文献２】特開２００３−１９６１４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
図１９に、複数のディスクコントローラを有する従来のディスク装置のブロック図を示す。図１９において、ディスク装置は２台のディスクコントローラＤＫＣ０、ＤＫＣ１とディスクアレイＤＡで構成される。ディスクコントローラの構成を、ＤＫＣ０を例に説明する。ディスクコントローラＤＫＣ０は、上位側ＣＰＵ（図示せず）とディスク装置を接続するチャネルアダプタＣＨＡ０と、ディスクアレイＤＡに対して読み書きするデータを一時保存するキャッシュメモリＣＭ０と、ディスクコントローラＤＫＣ０とディスクアレイＤＡとを接続するディスクアダプタＤＫＡ０からなる。チャネルアダプタＣＨＡ０とキャッシュメモリＣＭ０とディスクアダプタＤＫＡ０は、バスまたはスイッチで相互接続されている。チャネルアダプタＣＨＡ０は、チャネルＣ００でＣＰＵと接続している。ディスクアダプタＤＫＡ０はチャネルＤ００でディスクアレイＤＡと接続している。上位側ＣＰＵからチャネルＣ００を経て入力された書き込みデータは、キャッシュメモリＣＭ０に一時的に保存される。キャッシュメモリの動作がライトバックに設定されている場合は、書き込みデータがキャッシュメモリに書き込まれた時点で、ディスクコントローラＤＫＣ０が上位装置に対して書き込み完了を通知する。その後、ディスクコントローラＤＫＣ０は、キャッシュメモリＣＭ０に保存された書き込みデータを、チャネルＤ００を介してディスクアダプタＤＫＡ０からディスクアレイＤＡへ送信する。データ読み出し時は、先ずキャッシュメモリＣＭ０内に該当データの有無を調べる。有る場合は、キャッシュメモリＣＭ０からチャネルアダプタＣＨＡ０を介してキャッシュメモリ内読み出しデータを上位側ＣＰＵへ送信する。キャッシュメモリＣＭ０内に無い場合に、ディスクアダプタＤＫＡ０は、チャネルＤ００を介してディスクアレイＤＡからデータを読み出し、チャネルアダプタＣＨＡ０を介して読み出しデータを上位側ＣＰＵへ送信する。ディスクコントローラＤＫＣ１は、ディスクコントローラＤＫＣ０と同様であり、チャネルアダプタＣＨＡ１と、キャッシュメモリＣＭ１と、ディスクアダプタＤＫＡ１とからなり、チャネルＣ１０を介してＣＰＵ（図示せず）と接続し、チャネルＤ１０を介してディスクアレイと接続する。動作はディスクコントローラＤＫＣ０と同様である。
【０００８】
ここでディスクアレイＤＡに共有ボリウムがある場合を考える。共有ボリウムとは、複数のディスクコントローラからアクセス可能なディスク領域であり、図１９の例では、ディスクコントローラＤＫＣ０とＤＫＣ１のどちらからも読み出し書き込みが可能なディスク領域である。このような共有ボリウムを使用する場合の主な課題の一つは、複数ディスクコントローラからの全くの同時書き込みを禁止する排他制御である。複数のディスクコントローラから、全く同時に、同じディスク領域への書き込みが発生すると、どのコントローラからの書き込みも無効になってしまう可能性があるので、共有ボリウムへの書き込みは排他制御する必要がある。また、前記主な課題の他の一つは、複数ディスクコントローラ内キャッシュメモリ間の一致性確保である。キャッシュの不一致とは次のような状態を言う。例えば、ディスクコントローラＤＫＣ０から共有ボリウムへの書き込みが発生すると、最新のデータがディスクコントローラＤＫＣ０内キャッシュメモリＣＭ０に保存されることになる。しかし、ディスクコントローラＤＫＣ１内キャッシュメモリＣＭ１には保存されないので、キャッシュメモリＣＭ０とキャッシュメモリＣＭ１上の共有ボリウムに対応する領域のキャッシュデータに不一致が発生することになる。
【０００９】
上記第１の従来技術に開示されているディスクアレイ装置では、ディスクコントローラ毎に排他制御部を設け、各ディスクコントローラ間を排他制御およびキャッシュ一致制御用の信号線で接続している。しかし、共有ボリウムへアクセスするディスクコントローラ数が増大した場合、ディスクコントローラ毎に排他制御部を設ける方式では、部品点数増加によるコスト高と制御の複雑さ招く。
【００１０】
一方、そもそも、ストレージシステムにおいて、複数のディスクコントローラとディスクアレイとの間にスイッチを接続し、このスイッチを用いて複数のディスクコントローラに共有されるボリュームを制御することは考慮されていない。また、上記第２の従来技術に開示されているスイッチを、複数のディスクコントローラとディスクアレイとの接続に適用することを考えたとすると、スイッチにおいて集中的に排他制御を行うので、第１の従来技術より排他制御は容易になる。しかし、キャッシュメモリの一致制御に関してはライトスルー方式キャッシュメモリの使用しか考慮されていない。従って、第２の従来技術を、通常ライトバック方式が使用されるディスクコントローラのキャッシュメモリ一致制御に適用することは困難である。さらに、第２の従来技術におけるキャッシュメモリの一致制御では、不一致データの無効化方法については開示されているが、キャッシュメモリ間のデータ一致をとる方法については開示されていない。
【００１１】
本発明の目的は、それぞれがキャッシュメモリを有する複数のディスクコントローラと、前記複数のディスクコントローラからアクセス可能な共有ボリウム有するディスクアレイからなるディスク装置において、キャッシュメモリ間のデータ一致を確保できるディスク装置を提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、キャッシュメモリを有する複数のディスクコントローラと、複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有するディスクアレイからなるディスク装置において、複数のディスクコントローラとディスクアレイをスイッチで接続する。
【００１３】
また本発明は、キャッシュメモリを有する複数のディスクコントローラと、複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有するディスクアレイとをスイッチで接続したディスク装置において、スイッチが、複数のディスクコントローラから共有ボリウムへの書き込みに対する排他アクセス制御と、キャッシュメモリ間の未書き込み以外のデータの一致制御を行う。
【００１４】
さらに本発明は、キャッシュメモリを有する複数のディスクコントローラと、ディスクアレイとをスイッチで接続したディスク装置において、複数のディスクコントローラから同時にアクセス可能な共有ボリウムを有するサブディスク装置をスイッチに接続し、スイッチが複数のディスクコントローラから共有ボリウムへの書き込みに対する排他アクセス制御を行い、サブディスク装置が複数のディスクコントローラ内キャッシュメモリ間の未書き込み以外のデータの一致制御を行う。
【発明の効果】
【００１５】
本発明によれば、ディスクコントローラとディスクアレイを接続するスイッチにおいて、複数ディスクコントローラ内キャッシュメモリ間の一致制御を行うようにしたので、共有ボリウムへのアクセス性能のディスクコントローラ数に対するスケーラビィリティを向上させることができる。
【発明を実施するための最良の形態】
【００１６】
本発明を実施するための最良の形態を説明する。
以下、図面を参照して本発明に係る実施の形態を詳細に説明する。図１に、本実施の形態であるディスク装置を示す。ディスク装置は、３台のディスクコントローラＤＫＣ０、ＤＫＣ１、ＤＫＣ２と、ディスクアレイＤＡと、それらを接続するスイッチＳＷからなる。本実施の形態において、ディスクコントローラとスイッチの間と、スイッチとディスクアレイの間のデータ転送方式は、ファイバチャネルを使用している。保守端末ＳＶＰは、ディスクコントローラＤＫＣ０、ＤＫＣ１、ＤＫＣ２とスイッチＳＷに設定する管理情報を入力するための端末である。なお、図１はディスクコントローラ３台の構成を示すが、本発明のディスク装置におけるディスクコントローラ数を３台に限るものではない。ディスクコントローラＤＫＣ０、ＤＫＣ１、ＤＫＣ２は、それぞれ通信路（以下、「チャネル」と称する）Ｃ００、Ｃ１０、Ｃ２０を介して上位側ＣＰＵ（中央処理装置）であるＨｏｓｔ０、Ｈｏｓｔ１、Ｈｏｓｔ２に接続する。ディスクアレイＤＡ内のディスク領域には、非共有ボリウムＨＶＯＬと共有ボリウムＫＶＯＬがある。非共有ボリウムとは、そのボリウムにアクセス可能なディスクコントローラが予め決められているディスク領域である。例えば、ディスクコントローラＤＫＣ０に割り当てられた非共有ボリウムは、他のディスクコントローラＤＫＣ１、ＤＫＣ２からはアクセスできない。それに対して、共有ボリウムは複数のディスクコントローラからアクセス可能なディスク領域である。本実施の形態においては、共有ボリウムＫＶＯＬに対する複数のディスクコントローラからのアクセスの排他制御と、複数のディスクコントローラ内キャッシュメモリ間の一致制御を、スイッチＳＷが行う。
【００１７】
次に、本実施の形態であるディスク装置の内部構成を、ディスクコントローラＤＫＣ０を代表として図２に示す。他のディスクコントローラＤＫＣ１、ＤＫＣ２も同様の構成である。ディスクコントローラＤＫＣ０は、チャネルアダプタＣＨＡ０と、キャッシュメモリＣＭ０と、ディスクアダプタＤＫＡ０からなる。チャネルアダプタＣＨＡ０とキャッシュメモリＣＭ０とディスクアダプタＤＫＡ０は、相互接続網ＮＷ０で接続されている。チャネルアダプタＣＨＡ０は、チャネルＣ００を介して上位装置（図示せず）と接続する。ディスクアダプタＤＫＡ０は、チャネルＤ００を介してスイッチＳＷのポートＰ０と接続する。また、スイッチＳＷのポートＰ３はチャネルＤ３０を介して、ポートＰ４はチャネルＤ４０を介して、それぞれディスクアレイＤＡと接続する。他のディスクコントローラＤＫＣ１、ＤＫＣ２は、チャネルＤ１０、Ｄ２０を介してスイッチＳＷと接続する。さらに保守端末ＳＶＰは、スイッチＳＷのポートＮＰと接続する。ディスクコントローラＤＫＣ０とスイッチＳＷは、保守端末ＳＶＰから設定情報を入力することができる。
【００１８】
本実施の形態におけるディスクアレイＤＡの構成を述べる。ディスクアレイＤＡは、チャネルＤ３０上に接続した４個のディスクドライブからなるディスクアレイと、チャネルＤ４０上に接続した４個のディスクドライブからなるディスクアレイからなる。チャネルＤ３０には、ディスクドライブＤＫ０、ＤＫ１、ＤＫ２、ＤＫ３が接続されている。チャネルＤ４０には、ディスクドライブＤＫ４、ＤＫ５、ＤＫ６、ＤＫ７が接続されている。このように、多数のドライブを一つのチャネル上に接続してディスクドライブにアクセスする方法としては、ファイバチャネル・アービトレイテッド・ループ（ＦＣ−ＡＬ）がある。
【００１９】
図３は、チャネルアダプタＣＨＡ０の構成を示す。チャネルアダプタＣＨＡ０は、チャネルＣ００に接続されたホストチャネルインターフェイス６１と、相互結合網ＮＷ０に接続されたキャッシュメモリインターフェイス６２と、保守端末ＳＶＰに接続するためのネットワークインターフェイス６３と、上位装置との間でのデータ転送を制御するためのプロセッサ６４と、該プロセッサが参照する各種のテーブルや実行すべきソフトウェアを格納したローカルメモリ６５と、これらの要素間の相互接続するプロセッサ周辺制御部６６からなる。プロセッサ６４、７４（後出）が参照する上記各種テーブルの設定、変更、あるいはディスク装置の稼働状況のモニタ等に、保守端末ＳＶＰを使用する。
【００２０】
ホストチャネルインターフェイス６１は、チャネルＣ００上のデータ転送プロトコルと、ディスクコントローラ内部のデータ転送プロトコルとの間の変換機能を有している。ホストチャネルインターフェイス６１とキャッシュメモリインターフェイス６２との間は、信号線６７によって接続されている。
【００２１】
図４は、ディスクアダプタＤＫＡ０の構成を示す。ディスクアダプタＤＫＡ０は、相互結合網ＮＷ０に接続されたキャッシュメモリインターフェイス７１と、ディスクチャネルＤ００に接続されたディスクチャネルインターフェイス７２と、保守端末ＳＶＰに接続するためのネットワークインターフェイス７３と、プロセッサ７４と、該プロセッサが参照する各種のテーブルや実行すべきソフトウェアを格納したローカルメモリ７５と、これらの要素間の相互接続するプロセッサ周辺制御部７６とからなる。
【００２２】
キャッシュメモリインターフェイス７１とディスクチャネルインターフェイス７２との間は信号線７７によって接続されている。ディスクチャネルインターフェイス７２は、ディスクコントローラ内部のデータ転送プロトコルと、チャネルＤ００上のデータ転送プロトコル、例えば、ＦＣＰ−ＳＣＳＩとの間の変換機能を備えている。上述した構成では、ディスクアダプタとチャネルアダプタを含むディスクコントローラ構成について説明したが、他の構成、例えば一つの制御部でディスクアダプタとチャネルアダプタの処理を行う構成でも、ディスクアダプタとディスクアダプタからプロセッサを独立させ、各インターフェースとプロセッサとをスイッチで相互に接続する構成のディスクコントローラでも良い。
【００２３】
図５にスイッチＳＷの構成を示す。スイッチＳＷは、この実施の形態の例では、Ｐ０、Ｐ１、Ｐ２、Ｐ３、Ｐ４の５個のポートを持ち、クロスバスイッチＸＳＷとスイッチコントローラＳＣと共有メモリＳＭからなる。スイッチＳＷのポートＰ０〜Ｐ４は、クロスバスイッチのポートＰ＿０〜Ｐ＿４とそれぞれ信号線Ｄ０〜Ｄ４で接続する。共有メモリＳＭは、クロスバスイッチＸＳＷのポートＰ＿５と信号線Ｄ５で接続する。また、スイッチＳＷのポートＰ０〜Ｐ４は、スイッチコントローラＳＣとそれぞれ信号線Ｃ０〜Ｃ４で接続する。共有メモリＳＭは、スイッチコントローラＳＣと信号線Ｃ５で接続する。さらに、スイッチコントローラＳＣとクロスバスイッチＸＳＷのポートＳＥＬＥＣＴを、信号線ＳＥＬで接続する。また、スイッチコントローラＳＣは、信号線Ｃ６を介して、スイッチＳＷのポートＮＰと接続する。信号線Ｄ０〜Ｄ５は、ポートＰ０〜Ｐ４および共有メモリ間で送受されるフレームと制御信号を送受する信号線である。信号線Ｃ０〜Ｃ５は、ポートＰ０〜Ｐ４および共有メモリＳＭと、スイッチコントローラＳＣとの間でフレームのヘッダ情報を送受するための信号線である。信号線ＳＥＬは、スイッチコントローラＳＣからクロスバスイッチＸＳＷへ、切り換え制御信号を送受するための信号線である。信号線Ｃ６は、スイッチ外部から設定情報を送受するため信号線である。また、ポートＰ０〜Ｐ４および共有メモリＳＭへの設定情報は、スイッチコントローラＳＣから信号線Ｃ０〜Ｃ５を通して分配される。
【００２４】
スイッチＳＷのポートＰ０〜Ｐ４の構成を、ポートＰ１を例に説明する。ポートＰ１は、受信機Ｒｘ、送信機Ｔｘ、シリアルパラレル変換器ＳＰ、パラレルシリアル変換器ＰＳ、バッファメモリＢＭを有するプロトコルＩＣ（集積回路）  Ｐ＿ＩＣからなる。プロトコルＩＣ  Ｐ＿ＩＣは、ファイバチャネルのＦＣ−１層、ＦＣ−２層を実現する集積回路である。バッファメモリＢＭは、ポートがフレームヘッダ解析等のために送受信するフレームを一時的に保存するメモリである。受信機Ｒｘにて受信した信号は、シリアルパラレル変換器ＳＰでパラレル信号に変換され、プロトコルＩＣ  Ｐ＿ＩＣに入力される。また、プロトコルＩＣ  Ｐ＿ＩＣから出力される信号は、パラレルシリアル変換器ＰＳでシリアル信号に変換されて送信機ＴｘからスイッチＳＷ外へ送信される。
【００２５】
図６は、クロスバスイッチＸＳＷの構成を示す図である。クロスバスイッチＸＳＷは、セレクタＳ０、Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５からなる。ポートＳＥＬＥＣＴとセレクタＳ０〜Ｓ５は、信号線ＳＥＬ０〜ＳＥＬ５で接続する。ここで信号線ＳＥＬ０〜ＳＥＬ５は、図５における信号線ＳＥＬと接続している。クロスバスイッチＸＳＷのポートＰ＿０〜Ｐ＿５は送受信可能なポートであり、受信信号は信号線Ｄ０＿ｉｎ〜Ｄ５＿ｉｎを介して全セレクタＳ０〜Ｓ５へ分配される。セレクタＳ０〜Ｓ５の出力は、信号線Ｄ０＿ｏｕｔ〜Ｄ５＿ｏｕｔを介して、クロスバスイッチＸＳＷのポートＰ＿０〜Ｐ＿５へ各々接続する。セレクタＳ０〜Ｓ５を信号線ＳＥＬ０〜ＳＥＬ５上の信号で制御することにより、クロスバスイッチＸＳＷの任意のポート間の接続が実現できる。
【００２６】
次に、図７から図１２のフローチャートと、図１３から図１６の管理テーブルにより、スイッチＳＷによる共有ボリウムへの排他アクセス制御と、ディスクコントローラのキャッシュメモリ制御方法について説明する。なお、図１３から図１６の管理テーブルは、保守端末ＳＶＰから設定、変更が可能である。制御方法の概要を述べると、スイッチＳＷがディスクコントローラ（ＤＫＣ０〜ＤＫＣ２）とディスクアレイＤＡ間のエクスチェンジを監視しておき、共有ボリウムＫＶＯＬへのＷｒｉｔｅアクセスを検出するとフレームをスイッチＳＷ内の共有メモリＳＭへ一時保存する。共有ボリウムＫＶＯＬ以外へのＷｒｉｔｅエクスチェンジやＲｅａｄエクスチェンジの殆どは、クロスバスイッチＸＳＷのみで経路変更され、共有メモリＳＭを経由しない。共有メモリＳＭ内に一時保存されたフレームは、共有ボリウムＫＶＯＬへのアクセス権を獲得後、共有ボリウムＫＶＯＬへ向けて再送信される。また、Ｗｒｉｔｅエクスチェンジに含まれる書き込みデータは、プロセッサＭＰＵによりＷｒｉｔｅエクスチェンジを発行しなかったディスクコントローラへ送信され、キャッシュメモリ間の一致制御に使用される。
【００２７】
図７は、スイッチＳＷで行われるフレーム処理のフローチャートの一例である。ステップ７０１では、ポートにスイッチ外部から入力してきたフレームの種類を調べる。フレームがＦＣＰ−ＣＭＮＤならステップ７０２へ進む。それ以外のフレームならステップ７１２へ進む。
【００２８】
ステップ７０２では、共有ボリウムへのアクセスかどうかを判定する。この判定のため、図１５の管理テーブルが参照される。図１５の管理テーブルは、共有ボリウムを適切な領域の大きさで分割して番号付けした共有ボリウム領域番号１５０１毎に、対応するディスクドライブのターゲットＩＤ１５０２、論理ユニット番号（ＬＵＮ）１５０３、開始ブロックアドレスと終点ブロックアドレスとからなるブロックアドレスの範囲１５０４の各情報が格納されている。ＦＣＰ−ＣＭＮＤフレームに納められているアクセス情報が、図１５のテーブル内に記載されている領域情報と一致すれば、共有ボリウムへのアクセスするエクスチェンジが開始した判定することが出来る。ステップ７０２においてＮｏならステップ７０９へ、Ｙｅｓならステップ７０３へ進む。
【００２９】
ステップ７０９では、図８に示す処理１が実行される。ステップ７０２でＮｏと判定された場合は、共有ボリウムへのアクセスではないので、フレームはクロスバスイッチＸＳＷにより経路変更される。
【００３０】
処理１を説明する。図８のステップ８０１において、入力ポートは、フレームヘッダの送信先ポートＩＤを抽出し、スイッチコントローラＳＣへ送信する。次にステップ８０２において、スイッチコントローラＳＣは、送信先ポートＩＤに従い、クロスバスイッチＸＳＷを切り換える。その後、切り換え完了を入力ポートに送信する。次にステップ８０３において、入力ポートは、出力ポートへフレームを転送する。最後にステップ８０４において、出力ポートは、フレーム転送完了をスイッチコントローラＳＣへ送信する。そして、処理１は終了となる。
【００３１】
ステップ７０２の判定結果がＹｅｓとなりステップ７０３へ進んだ場合は、図１０の処理３が実行される。この場合、フレームは共有メモリＳＭに一時保存される。
【００３２】
処理３を説明する。図１０のステップ１００１において、入力ポートは、フレーム転送先を共有メモリＳＭへ切り換える要求を、スイッチコントローラＳＣへ送信する。次にステップ１００２において、スイッチコントローラＳＣは、クロスバスイッチＸＳＷの接続先を共有メモリＳＭへ切り換える。さらに、切り換え完了を入力ポートに送信する。次にステップ１００３において、入力ポートは、共有メモリＳＭへフレームを転送する。最後にステップ１００４において、共有メモリＳＭは、フレーム転送完了をスイッチコントローラＳＣへ送信する。そして、処理３は終了となる。
【００３３】
ステップ７０３の処理３が終了すると、ステップ７０４において共有ボリウムへのアクセス可否を判定する。この判定のため、図１５と図１６の管理テーブルを参照する。図１５の１５０５、１５０６には、現在進行中のエクスチェンジの情報が格納されている。具体的には、ＲｅａｄとＷｒｉｔｅの区別（Ｒ／Ｗ）、エクスチェンジＩＤ（ＯＸ−ＩＤ）、送信元ポートＩＤ（Ｓ−ＩＤ）、送信先ポートＩＤ（Ｄ−ＩＤ）である。図１６は、アクセス可否の判定条件を示す。アクセス可否は、現在進行中のエクスチェンジのＲｅａｄ／Ｗｒｉｔｅ種別と、新規に開始するエクスチェンジのＲｅａｄ／Ｗｒｉｔｅ種別の組み合わせによって決定される。先ず、新規エクスチェンジのアクセス先の領域番号に対応する１５０５、１５０６の内容を確認する。現在進行中のエクスチェンジが無い場合は、図１６の１６０１の条件となり、判定結果はＹｅｓである。つまり共有ボリウムにアクセス可能である。次に、現在進行中のエクスチェンジがある場合は、１６０２の組み合わせのみ、つまり現在進行中のエクスチェンジと新規エクスチェンジが共にＲｅａｄの場合は、共有ボリウムへアクセス可能である。しかし、１６０３のように、現在進行中のエクスチェンジまたは新規エクスチェンジのどちらか又は両方がＷｒｉｔｅの場合は、共有ボリウムへアクセス可能ではない。
【００３４】
ステップ７０４でＮｏ（アクセス可能ではない）と判定された場合は、ステップ７１０に進む。ここでアクセス権に空きができるまで、フレームは待つことになる。タイムアウトの条件は、ＦＣＰ−ＳＣＳＩのタイムアウトよりも短い時間に設定しておくことが望ましい。タイムアウトするとステップ７１１に進み、処理４が実行される。
【００３５】
処理４を説明する。図１１に処理４のフローチャートを示す。処理４の目的は、本来のフレームの送信先であったディスクドライブ（ターゲット）に代って、スイッチＳＷがディスクコントローラ内ディスクアダプタ（イニシエータ）にビジーを報告することである。この処理は、共有メモリ内一時保存されたフレーム内の情報を基に、プロセッサＭＰＵが実行する。図１１のステップ１１０１において、タイムアウトしたフレームから、送信先ポートＩＤ（Ｄ−ＩＤ）、送信元ポートＩＤ（Ｓ−ＩＤ）を抽出する。次にステップ１１０２において、上記抽出したＳ−ＩＤを新規送信先、上記抽出したＤ−ＩＤを新規送信元として、ビジーを示すＦＣＰ−ＲＳＰフレームを組み立てる。次にステップ１１０３において、メモリコントローラＭＣは、上記ＦＣＰ−ＲＳＰフレームの送信先ポートＩＤをスイッチコントローラＳＣへ送信する。次にステップ１１０４において、スイッチコントローラＳＣは、受取った送信先ポートＩＤに従い、クロスバスイッチＸＳＷを切り換える。切り換え完了をメモリコントローラＭＣに送信する。次にステップ１１０５において、メモリコントローラＭＣは、出力ポートへ上記ＦＣＰ−ＲＳＰフレームを転送する。次にステップ１１０６において、出力ポートは、上記ＦＣＰ−ＲＳＰフレーム転送完了をスイッチコントローラＳＣへ送信する。最後にステップ１１０７において、共有メモリＳＭ上の上記タイムアウトしたフレームを破棄する。そして、処理４は終了となる。
【００３６】
ステップ７０４でアクセス可能と判定されステップ７０５へ進んだ場合は、フレームからＯＸ−ＩＤ、Ｓ−ＩＤ、Ｄ−ＩＤ、共有ボリウムのアクセス領域を読み取り、図１５のテーブルの１５０５または１５０６を作成する。図１６の条件１６０２の場合は、図１５の１５０５と１５０６にＲｅａｄエクスチェンジの情報が格納されることになる。条件１６０１の場合は、１５０５にＲｅａｄまたはＷｒｉｔｅエクスチェンジの情報が格納される。
【００３７】
次にステップ７０６で、新規エクスチェンジがＷｒｉｔｅの場合はステップ７０７へ、Ｗｒｉｔｅ以外の場合（Ｒｅａｄ）はステップ７０８へ進む。ステップ７０８では、処理５が実行される。
【００３８】
処理５を説明する。図１２に示す処理５では、共有メモリＳＭに一時保存されたフレームが、本来の送信先へ向けて送信される。ステップ１２０１において、メモリコントローラＭＣは、送信先ポートＩＤをスイッチコントローラＳＣへ送信する。次にステップ１２０２において、スイッチコントローラＳＣは、受取った送信先ポートＩＤに従い、クロスバスイッチＸＳＷを切り換える。その後、切り換え完了をメモリコントローラＭＣに送信する。次にステップ１２０３において、メモリコントローラＭＣは、出力ポートへフレームを転送する。最後にステップ１２０４において、出力ポートは、フレーム転送完了をスイッチコントローラＳＣへ送信する。そして、処理５は終了となる。
【００３９】
ステップ７０７ではディスクコントローラ内キャッシュメモリの一致制御を目的として、処理６が実行される。この際、図１３と図１４に示す管理テーブルが参照される。図１３はディスクコントローラ内で管理される、共有ボリウムに対応するキャッシュメモリの管理テーブルである。このテーブルには、図１５の共有ボリウム領域番号１５０１に対応した、キャッシュメモリ上のアドレス範囲１３０１と、キャッシュ属性１３０２が格納される。キャッシュ属性１３０２は、Ｃｌｅａｎ、Ｄｉｒｔｙ、Ｉｎｖａｌｉｄの３状態で示す。Ｃｌｅａｎは既にディスクに書き込み済みのキャッシュデータを表す。Ｄｉｒｔｙは、ディスクには未書き込みのキャッシュデータを表す。Ｉｎｖａｌｉｄは、無効なキャッシュデータを表す。図１４は、スイッチＳＷからディスクコントローラ内キャッシュメモリを操作するための管理テーブルである。スイッチからキャッシュメモリをアクセスするため、ディスクアダプタをＳＣＳＩのターゲットデバイスとして動作させる。そして、ターゲットデバイス空間とキャッシュメモリ空間とをマッピングし、かつ、スイッチを仮想的なイニシエータデバイスとして動作させることにより、スイッチからキャッシュメモリがアクセス可能となる。図１４には、図１５の共有ボリウム領域番号に対応するターゲットデバイス空間が、ディスクコントローラ毎に示されている。ディスクコントローラＤＫＣ０を例にとると、ディスクコントローラ内ディスクアダプタにアクセスするためのターゲットＩＤ１４０１、論理ユニット番号１４０２、ブロックアドレス範囲１４０３が、図１４の管理デーブルに格納されている。
【００４０】
処理６を説明する。処理６におけるスイッチ動作の例を図１７に示す。ここでは、ディスクコントローラＤＫＣ２から共有ボリウムＫＶＯＬへのＷｒｉｔｅアクセスがあり、他のディスクコントローラＤＫＣ０、ＤＫＣ１は共有ボリウムＫＶＯＬへのアクセスが無かった場合を示す。スイッチＳＷは、プロセッサＭＰＵが共有メモリＳＭ上で動作させるプログラムとして仮想イニシエータ１７０４を作る。Ｗｒｉｔｅエクスチェンジは共有メモリＳＭに一時保存された後、共有ボリウムＫＶＯＬへ送信される（１７０１）。図７のフローに従い、スイッチＳＷが共有ボリウムへのＷｒｉｔｅアクセスを検知すると、仮想イニシエータ１７０４から、ディスクコントローラＤＫＣ０、ＤＫＣ１内ディスクアダプタをターゲットとしてＷｒｉｔｅコマンドを送信する（１７０２）。仮想イニシエータ１７０４からのＷｒｉｔｅコマンドを受信したディスクコントローラＤＫＣ０、ＤＫＣ１は、Ｗｒｉｔｅコマンドの対象となっているキャッシュメモリ空間で、Ｃｌｅａｎ属性のキャッシュデータをＩｎｖａｌｉｄ属性に変更する。次に、仮想イニシエータ１７０４は、共有メモリＳＭ内に一時保存された１７０１の書き込みデータをディスクコントローラＤＫＣ０、ＤＫＣ１内ディスクアダプタへ送信する（１７０３）。書き込みデータを受信したディスクコントローラＤＫＣ０、ＤＫＣ１は、書き込み対象となっているキャッシュデータの内Ｄｉｒｔｙ属性以外のデータのみ（つまりＩｎｖａｌｉｄ属性のデータ）を、スイッチから受信した書き込みデータで上書きする。その後、上書きしたキャッシュデータの属性をＣｌｅａｎに変更する。このようにキャッシュのＤｉｒｔｙ属性のデータを上書きしないことにより、キャッシュメモリのライトバック動作によってキャッシュメモリ上に残されたディスク未保存データを保持することが出来る。以上により、ディスクコントローラＤＫＣ０、ＤＫＣ１、ＤＫＣ２間で、Ｄｉｒｔｙ属性のデータを除きキャッシュメモリのデータが一致する。
なお、ディスクコントローラは、前記属性変更中や前記上書き中のキャッシュ領域に対してロックを施して上位ＣＰＵからのアクセスを禁止し、そして前記属性変更と前記データ上書き終了後に前記ロックを解除する。
【００４１】
ステップ７０７の処理６の終了後、共有メモリＳＭ内のフレームは、図１２の処理５と同じ手順により、スイッチ外へ送信される。
【００４２】
ステップ７０１においてＮｏと判定された場合は、ステップ７１２においてエクスチェンジ終了状況を判定する。エクスチェンジが終了した場合には、ステップ７１４において、図１５の管理テーブルから終了したエクスチェンジに関連するエントリを削除する。
【００４３】
ステップ７１２でエクスチェンジが進行中の場合は、ステップ７１３へ進み、処理２を実行する。図９に処理２のフローチャートを示す。処理２では、共有ボリウムに対する書き込みエクスチェンジに属するフレームのみを、共有メモリＳＭ経由とするための制御を行う。処理２により、共有メモリＳＭを使用するフレームを限定することが出来るので、共有メモリ容量を節約することができる。ステップ９０１でＮｏと判定された場合は、共有メモリＳＭを経由しないフレーム転送をするため、ステップ９０６で処理１を実行する。ステップ９０１でＹｅｓと判定した場合、つまり共有メモリＳＭを経由する場合は、ステップ９０２へ進む。ステップ９０２において、入力ポートは、フレーム転送先を共有メモリＳＭへ切り換える要求を、スイッチコントローラＳＣへ送信する。次にステップ９０３において、スイッチコントローラＳＣは、クロスバスイッチＸＳＷの接続先を共有メモリＳＭへ切り換える。その後、切り換え完了を入力ポートに送信する。次にステップ９０４において、入力ポートは、共有メモリＳＭへフレームを転送する。最後にステップ９０５において、共有メモリＳＭは、フレーム転送完了をスイッチコントローラＳＣへ送信する。
【００４４】
図１８に、共有ボリウムＫＶＯＬとして、ディスクコントローラを有するディスク装置をスイッチＳＷに接続した例を示す。図１８のディスク装置は、サブディスク装置１８０１が共有ボリウムＫＶＯＬとしてスイッチＳＷに接続されている。サブディスク装置１８０１はディスクコントローラを内蔵しており、ＫＶＯＬを構成するディスクドライブによってＲＡＩＤ構成をとることが可能である。例えばＲＡＩＤレベル５の共有ボリウムＫＶＯＬに適用することにより、高信頼で高速な共有ボリウムを有するディスク装置を実現できる。また、図１のディスク装置におけるスイッチＳＷの機能の内、共有ボリウムへの排他アクセス制御機能をスイッチＳＷに残し、キャッシュ一致制御機能をサブディスク装置１８０１に代行させることも可能である。この場合は、サブディスク装置内のディスクコントローラがイニシエータとなって共有ボリウムへの書き込みデータをディスクコントローラＤＫＣ０、ＤＫＣ１、ＤＫＣ２へ送信する。スイッチＳＷとサブディスク装置１８０１間で負荷を分散することにより、ディスク装置全体の性能向上が図れる。
【００４５】
以上説明したように、本実施の形態におけるディスク装置は、複数のディスクコントローラ間でキャッシュメモリの整合性が確保できているので、ディスクコントローラ数を増加させることにより、共有ボリウムに対するアクセス性能が向上する。
【図面の簡単な説明】
【００４６】
【図１】本実施の形態におけるディスク装置を示す図。
【図２】本実施の形態によるディスク装置の構成を示す図。
【図３】チャネルアダプタＣＨＡ０の構成を示す図。
【図４】ディスクアダプタＤＫＡ０の構成を示す図。
【図５】スイッチＳＷの構成を示す図。
【図６】クロスバスイッチＸＳＷの構成を示す図。
【図７】スイッチＳＷの制御フローチャートの一例を示す図。
【図８】スイッチＳＷの制御フローチャートにおける処理１の動作の一例を示す図。
【図９】スイッチＳＷの制御フローチャートにおける処理２の動作の一例を示す図。
【図１０】スイッチＳＷの制御フローチャートにおける処理３の動作の一例を示す図。
【図１１】スイッチＳＷの制御フローチャートにおける処理４の動作の一例を示す図。
【図１２】スイッチＳＷの制御フローチャートにおける処理５の動作の一例を示す図。
【図１３】ディスクコントローラに記憶されるキャッシュメモリ管理テーブルの一例を示す図。
【図１４】スイッチＳＷに記憶されるキャッシュメモリ管理テーブルの一例を示す図。
【図１５】スイッチＳＷに記憶される共有ボリウム管理テーブルの一例を示す図。
【図１６】ステップ７０４の判定基準の一例を示す図。
【図１７】処理６の動作の一例を示す図。
【図１８】一実施形態によるディスク装置の構成を示す図。
【図１９】従来の技術を示す図。
【符号の説明】
【００４７】
Ｈｏｓｔ０、Ｈｏｓｔ１、Ｈｏｓｔ２・・・上位側ＣＰＵ
ＳＷ・・・スイッチ
ＤＫＣ０、ＤＫＣ１、ＤＫＣ２・・・ディスクコントローラ
ＣＨＡ０、ＣＨＡ１・・・チャネルアダプタ
ＣＭ０、ＣＭ１・・・キャッシュメモリ
ＤＫＡ０、ＤＫＡ１・・・ディスクアダプタ
ＤＡ・・・ディスクアレイ
ＤＫ０〜ＤＫ７・・・ディスクドライブ
Ｃ０〜Ｃ６、Ｄ０〜Ｄ５、ＳＥＬ、ＳＥＬ０〜ＳＥＬ５、Ｄ０＿ｉｎ〜Ｄ５＿ｉｎ、Ｄ０＿ｏｕｔ〜Ｄ５＿ｏｕｔ・・・信号線
Ｓ０〜Ｓ５・・・セレクタ
Ｃ００〜Ｃ２０、Ｄ００〜Ｄ４０・・・チャネル
Ｐ＿ＩＣ・・・プロトコルＩＣ
ＮＰ・・・ネットワークポート
Ｐ０〜Ｐ４・・・スイッチポート
Ｐ＿０〜Ｐ＿５、ＳＥＬＥＣＴ・・・クロスバスイッチポート
ＸＳＷ・・・クロスバスイッチ
ＳＣ・・・スイッチコントローラ
ＳＭ・・・共有メモリ
ＭＣ・・・メモリコントローラ
ＳＰ・・・シリアルパラレル変換装置
ＰＳ・・・パラレルシリアル変換装置
ＢＭ・・・バッファメモリ
Ｔｘ・・・送信機
Ｒｘ・・・受信機
ＮＷ０・・・相互結合網
ＳＶＰ・・・保守端末
６１・・・ホストチャネルインターフェイス
７２・・・ディスクチャネルインターフェイス
６２、７１・・・キャッシュメモリインターフェイス
６３、７３・・・ネットワークインターフェイス
６４、７４、ＭＰＵ・・・プロセッサ
６６、７６・・・プロセッサ周辺制御部
６５、７５・・・ローカルメモリ
ＨＶＯＬ・・・非共有ボリウム
ＫＶＯＬ・・・共有ボリウム
１７０４・・・仮想イニシエータ
１８０１・・・サブディスク装置
【図１】
2006072634.tif 000003
【図２】
2006072634.tif 000004
【図３】
2006072634.tif 000005
【図４】
2006072634.tif 000006
【図５】
2006072634.tif 000007
【図６】
2006072634.tif 000008
【図７】
2006072634.tif 000009
【図８】
2006072634.tif 000010
【図９】
2006072634.tif 000011
【図１０】
2006072634.tif 000012
【図１１】
2006072634.tif 000013
【図１２】
2006072634.tif 000014
【図１３】
2006072634.tif 000015
【図１４】
2006072634.tif 000016
【図１５】
2006072634.tif 000017
【図１６】
2006072634.tif 000018
【図１７】
2006072634.tif 000019
【図１８】
2006072634.tif 000020
【図１９】
2006072634.tif 000021