(57)【要約】【課題】キャッシュを２重化するストレージシステムで書き込みを高速化する。【解決手段】ディスクドライブ群１２、上位装置からディスクドライブ群へ書き込むデータ及びその複製を一時的に格納するキャッシュメモリ１０１ａ及び１０１ｂ、データの複製をキャッシュ１０１ａからキャッシュ１０１ｂに送るために一時的に格納するＦＩＦＯバッファ１０２ａ、データの複製をキャッシュ１０１ｂからキャッシュ１０１ａに送るために一時的に格納するＦＩＦＯバッファ１０２ｂを備える。上位装置からディスクドライブ群へ書き込むデータをキャッシュ１０１ａに格納し、データの複製をキャッシュ１０１ｂに格納する前に、キャッシュ１０１ａ及びＦＩＦＯバッファ１０２ａに書き込みデータ及び複製が格納された時点で書き込みの完了報告を行う。その後、ＦＩＦＯバッファ１０２ａに格納されたデータの複製をキャッシュ１０１ｂに格納する。【選択図】  図１
2005044010.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置、及び
前記記憶装置及び上位装置と接続される第一及び第二の制御部とを有し、
前記第一の制御部は、
第一のメモリ及び第二のメモリを有し、
前記第二の制御部は、
第三のメモリを有し、
前記第一の制御部が前記上位装置からデータを受信した場合は、前記第一の制御部は、前記第一及び第二のメモリに前記データを各々格納して前記上位装置に応答を送信し、
その後、前記第一の制御部は、前記第二のメモリに格納されたデータを前記第三のメモリに転送することを特徴とするストレージシステム。
【請求項２】
更に第一の電源及び第二の電源を有し、
前記第一の制御部のうち、前記第一のメモリは前記第一の電源から電源供給を受け、
前記第一の制御部の前記第二のメモリ及び前記第二の制御部の前記第三のメモリは前記第二の電源から電源供給を受けることを特徴とする請求項１記載のストレージシステム。
【請求項３】
更に第一、第二及び第三の電源を有し、
前記第一のメモリは前記第一の電源から電源供給を受け、
前記第二のメモリは前記第二の電源から電源供給を受け、
前記第三のメモリは前記第三の電源から電源供給をうけることを特徴とする請求項１記載のストレージシステム。
【請求項４】
更に電源を有し、
前記第一のメモリ及び前記第二のメモリは前記電源から電源供給を受け、
前記第二のメモリは更に充電池を有し、前記第二のメモリは前記電源を用いて前記充電池を充電することを特徴とする請求項１記載のストレージシステム。
【請求項５】
前記電源に障害が発生した場合、前記第二のメモリは、前記電源からの電源供給を前記充電力の電源供給に切り替える手段を有することを特徴とする請求項４記載のストレージシステム。
【請求項６】
前記第二のメモリはＦＩＦＯバッファであることを特徴とする請求項２記載のストレージシステム。
【請求項７】
前記記憶装置は複数あることを特徴とする請求項６記載のストレージシステム。
【請求項８】
前記第二のメモリは、当該第二のメモリに格納されているデータの有無を示す手段を有することを特徴とする請求項７記載のストレージシステム。
【請求項９】
上位装置と接続されるホストインターフェース部と、
前記ホストインターフェースと接続されるスイッチ部と
前記スイッチ部と接続される第一及び第二の制御部と、
前記第一及び第二の制御部と接続される記憶装置とを有し、
前記第一の制御部は、
第一のメモリ及び第二のメモリを有し、
前記第二の制御部は、
第三のメモリを有し、
前記第一の制御部が前記上位装置からデータを受信した場合は、前記第一の制御部は、前記第一及び第二のメモリに前記データを各々格納して前記上位装置に応答を送信し、
その後、前記第一の制御部は、前記第二のメモリに格納されたデータを前記第三のメモリに転送することを特徴とするストレージシステム。
【請求項１０】
ディスクドライブと、
上位装置から前記ディスクドライブへ書き込むデータを一時的に格納する第一のキャッシュ手段と、
前記ディスクドライブへ書き込むデータの複製を格納する第二のキャッシュ手段と、
前記第二のキャッシュ手段へ上位装置からの書き込みデータの複製を送るために一時的に格納するＦＩＦＯバッファ手段有し、
前記第一のキャッシュ手段に前記上位装置からの書き込みデータを格納し、前記ＦＩＦＯバッファ手段に前記上位装置からの書き込みデータの複製が格納された時点において上位装置にデータ書き込みの完了の通知を行うことを特徴とするストレージシステム
【請求項１１】
前記第一のキャッシュ手段に接続する第一の電源と、前記第一の電源と独立した、前記第二のキャッシュ手段に接続する第二の電源を備え、前記ＦＩＦＯバッファ手段は前記第二の電源に接続することを特徴とする請求項１０記載のストレージシステム
【請求項１２】
前記第一のキャッシュ手段に接続する第一の電源と、前記第一の電源と独立した、前記第二のキャッシュ手段に接続する第二の電源と、前記第一の電源と独立した、前記ＦＩＦＯバッファ手段に接続する第三の電源を備えることを特徴とする請求項１０記載のストレージシステム
【請求項１３】
前記第一のキャッシュ手段に接続する第一の電源と、前記第一の電源と独立した、前記第二のキャッシュ手段に接続する第二の電源を備え、前記ＦＩＦＯバッファ手段が前記第一の電源に接続し、かつ前記第一の電源が障害を生じた時に前記ＦＩＦＯバッファに前記第一の電源に代わって電力を供給するバッテリ手段を備えること特徴とする請求項１０記載のストレージシステム。
【請求項１４】
前記ＦＩＦＯバッファ手段から前記第二のキャッシュ手段に前記上位装置からの書き込みデータの複製をすべて書き込んだかどうかを表示する残データ有無表示手段を備えることを特徴とする請求項１１記載のストレージシステム。
【請求項１５】
二重化キャッシュを有するストレージシステムにおいてデータを書き込む方法であって、
上位装置からの書き込みデータを２重化して蓄える２重化キャッシュメモリの一方にデータを書き込むステップと、
前記２重化キャッシュメモリの他方よりも高速に書き込みを行えるＦＩＦＯバッファにデータを書き込むステップと、
前記２重化キャッシュメモリの一方とＦＩＦＯバッファにデータが正しく書き込めたことを確認して上位装置にデータ書き込みの完了を報告するステップと、
上位装置にデータ書き込みの完了を報告した後で前記ＦＩＦＯバッファに書き込んだデータを前記２重化キャッシュメモリの他方に書き込んでデータの２重化を完了するステップを有することを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ディスクドライブ等の記憶装置を複数備えるストレージシステムに係わり、特に、計算機等の上位装置からのデータの書き込みを高速化する制御技術に関する。
【０００２】
【従来の技術】
多数の記憶装置を搭載するストレージシステムでは、従来から半導体メモリ等のキャッシュメモリを用いて上位装置と記憶装置との間で授受されるデータを一時的に格納することで、データの読み出し及び書き込みを高速化することが行われてきた。例えば、上位装置からのデータの書き込みの際は、ストレージシステムは書き込みデータを一旦キャッシュメモリに格納し、その時点において上位装置に書き込み処理完了を通知する。その後、ストレージシステムは、上位装置の動作とは独立に、キャッシュメモリに格納したデータを実際に記憶装置に書き込む。
【０００３】
このように、キャッシュメモリを用いてストレージシステムのデータの授受の高速化を行う場合、ストレージシステムは、キャッシュメモリに一旦データを書き込むと記憶装置にデータを書き込むことなく上位装置に書き込み完了を報告してしまう。従って、キャッシュメモリの障害等で記憶装置に書き込む前にキャッシュメモリ内のデータが消失すると、データの回復は非常に困難である。このため、データの消失の可能性を低減しストレージシステムの信頼性を向上させる目的で、ストレージシステムが有するキャッシュメモリ（又はそれを含んだ制御部）を二重化し、データはキャッシュメモリの両方に書き込むという技術が特許文献１及び２に開示されている。
【０００４】
又、キャッシュメモリ又はその冗長化されたメモリを不揮発にすることで、データの損失を防止する技術が、非特許文献１  ８８頁〜８９頁に開示されている。
【０００５】
【特許文献１】
特開２００１−３１８７６６号公報
【特許文献２】
特開平９−１４６８４２号公報
【非特許文献１】
「ＩＢＭ  ＴｏｔａｌＳｔｏｒａｇｅ  Ｅｎｔｅｒｐｒｉｓｅ  Ｓｔｏｒａｇｅ  Ｓｅｒｖｅｒ  Ｍｏｄｅｌ  ８００」  ＩＢＭ  Ｒｅｄｂｏｏｋｓ、  ＳＧ２４−６４２４−０１、  Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ  （Ｏｃｔｏｂｅｒ  ２００２）、ＩＢＭ  Ｃｏｒｐ．、  ＩＳＢＮ  ０７３８４２８２５６
【０００６】
【発明が解決しようとする課題】
特許文献１及び２に開示されたストレージシステムでは、２重化されたキャッシュメモリの双方へのデータの書き込み完了を待って上位装置に完了報告を行うので、時間がかかり、レスポンス性能の向上には限界がある。具体的には、上位装置との間のデータ転送を行う一方の制御部が、２重化された他系の制御部のキャッシュメモリにデータを転送し、かつ他系の制御部のデータの書き込み完了の報告を受けるため、２重系の一方と他方との間の通信の送受が発生し、上位装置からみたストレージシステムのレスポンス性能を下げる主要因となる。一般に２重系では、一方の系と他方の系とは、障害時に相互に影響が出るのを避けるため、電源系を分離するなど、独立性を高めている。このため、一方の系と他方の系の間の通信は時間がかかり、これを高速化することは難しい。
【０００７】
非特許文献１では、一方の制御部内にキャッシュメモリ用のバックアップメモリとして不揮発性メモリを設けているので、上述のような問題、即ち二重系間でのデータ転送による遅延は発生しない。しかし、一般にバッテリで電源を確保している不揮発性メモリでは、不揮発性メモリの容量を大きくすると、バッテリも大容量のものが必要となるので、不揮発メモリの記憶容量を、キャッシュメモリのような大容量にはできない。
【０００８】
このため、キャッシュメモリに書き込むデータの量を不揮発性メモリに格納できる大きさに制限する必要があり、やはり上位装置から見たストレージシステムの書き込み性能を充分高めることは困難である。即ち、書き込むデータの量が不揮発性メモリに格納できる大きさを超えると、キャッシュメモリに書き込んだデータを記憶装置に書き込んでしまうまでは、ストレージシステムは次の上位装置からの書き込みを受け付けることができず、大幅に性能が低下する。
【０００９】
本発明の目的は、キャッシュメモリを用いるストレージシステムにおいて、信頼性向上のためにキャッシュメモリを２重化したときに、上位装置からのデータの書き込みを高速化することである。
【００１０】
【課題を解決するための手段】
本発明では、上記の課題を解決するために、以下の構成を有する。すなわち、ストレージシステムにおいて、複数の制御部及び記憶装置を有する構成とする。ここで、制御部は第一のメモリ及び第二のメモリを有する。第二のメモリは、ＦＩＦＯバッファ等の第一のメモリよりも容量が少ないメモリでも良い。上記構成において、上位装置からデータの書き込み要求を受けたストレージシステムの制御部は、自己が有する第一のメモリ及び第二のメモリに、書き込み要求に対応するデータを格納する。この時点で、上位装置にデータの書き込み完了を通知する。その後、この制御部は、他の制御部の第一のメモリへ、第二のメモリに格納されたデータを転送する。
【００１１】
本発明では、更に、上記構成において複数の電源を有し、個々の電源が個々の制御部に電源を供給する。ただし、個々の制御部が有する第二のメモリは、その第二のメモリを有する制御部に電源供給している電源とは別の電源から電源供給を受ける構成とする。
【００１２】
尚、第二のメモリも制御部と同一の電源から電源供給を受けるが、第二のメモリが充電池を有し、万一電源が遮断された際には、電源供給元を充電池に切り替える構成としても良い。
【００１３】
更に、複数の制御部と上位装置とを接続するために、ストレージ装置がスイッチ及びインターフェース部を有する構成としても良い。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態を図面を用いて説明する。
図１は、本発明を適用したストレージシステムの第一の実施形態を示す図である。ストレージシステムは、二つの制御部（以下「コントローラ」）１０、二つの電源１１及び複数の記憶装置（以下「ディスクドライブ」）１２を有する。ここでディスクドライブ１２とは、ハードディスクや光ディスク等の記憶媒体を用いた装置である。一つのディスクドライブ１２は、各々双方のコントローラ１２と接続されている。又、電源１１ａ及び電源１１ｂは各々独立な電源であり、電源１１ａはコントローラ１０ａに電源を供給し、電源１１ｂはコントローラ１０ｂに電源を供給する。したがって、一方の電源１１が故障したとしても、他方の電源１１がコントローラ１０に電源を供給することで、ストレージシステムが動作することが出来る。
【００１５】
各々のコントローラ１０は、ホストインターフェース部１００、ＦＩＦＯバッファ１０２、データ書き込み完了監視部１０３及びキャッシュメモリ１０１を有する。尚、ホストインターフェース部やデータ書込み完了監視部は、汎用の演算装置とソフトウエアの組み合わせで実現されても良いし，専用のハードウェアで実現されても良い。
【００１６】
本実施形態のストレージシステムは２重系を構成している。キャッシュメモリ１０１は、ディスクドライブ１２と上位装置との間で授受されるデータを一時的に格納する揮発性の記憶媒体である。
【００１７】
尚、コントローラ１０ａ内のホストインターフェース部１００ａ、キャッシュメモリ１０１ａ及びデータ書き込み完了監視部１０３ａは電源線１２０ａを介して電源１１ａと接続される。又、コントローラ１０ｂ内のホストインターフェース部１００ｂ、キャッシュメモリ１０１ｂ及びデータ書き込み完了監視部１０３ｂは、電源線１２０ｂを介して電源１１ｂと接続される。
【００１８】
このとき、コントローラ１０ａ内のＦＩＦＯバッファ１０２ａは、電源線１２１ｂを介して電源１１ｂと接続される。更に、コントローラ１０ｂ内のＦＩＦＯバッファ１０２ｂは、電源線１２１ａを介して電源１１ａと接続される。このように電源線を接続することにより、コントローラ１０ａのＦＩＦＯバッファ１０２ａは、コントローラ１０ａ内の他の構成部分の電源とは異なる、独立した電源に接続されるので、ＦＩＦＯバッファ１０２ａは、コントローラ１０ａ内のキャッシュメモリ１０１ａと２重系をなす、即ち、一方の電源１１が故障した場合にも、他方の電源１１から電源供給を受けている部分（キャッシュメモリ１０１又はＦＩＦＯバッファ１０２）はデータを保持することができる。同様に、コントローラ１０ｂ内のＦＩＦＯバッファ１０２ｂは、コントローラ１０ｂ内のキャッシュメモリ１０１ｂと２重系をなすことができる。
【００１９】
以下、図１におけるデータ書き込みの手順について簡単に説明する。例えばコントローラ１０ａに接続される上位装置からデータの書き込みが行われた場合、まずデータをホストインターフェース部１００ａが受信する。尚、コントローラ１０ｂがデータを受信しても以下の説明と同様の処理が行われる。
【００２０】
ホストインターフェース部１００ａが受信したデータは、信号線１１０ａを介してＦＩＦＯバッファ１０２ａ及びキャッシュメモリ１０１ａに送られ、それぞれに書き込まれる。ＦＩＦＯバッファ１０２ａは、データの書き込みが障害なく完了すると、信号線１１１ａを介して、書き込みの完了をデータ書き込み完了監視部１０３ａに通知する。
【００２１】
キャッシュメモリ１０１ａは、データの書き込みが障害なく完了すると、信号線１１２ａを介して、書き込みの完了をデータ書き込み完了監視部１０３ａに通知する。データ書き込み完了監視部１０３ａは、信号線１１１ａ及び信号線１１２ａの両方から書き込み完了の通知を受信したら、信号線１１３ａを介してホストインターフェース部１００ａに書き込み完了を通知する。通知を受信したホストインターフェース部１００ａは、上位装置へ書き込み完了を報告する。このとき、コントローラ１０ａとコントローラ１０ｂの間では特に通信を行わないので、上位装置から見たストレージシステムの書き込み処理を高速化することができる。
【００２２】
ＦＩＦＯバッファ１０２ａに格納されたデータは、ホストインターフェース部１００ａより上位装置へ書き込み完了が報告された後、信号線１１４ａを介してコントローラ１０ｂ内のキャッシュメモリ１０１ｂへ転送され、キャッシュメモリ１０１ｂに書き込まれる。このように、コントローラ１０ａとコントローラ１０ｂとの間のデータ転送に関する通信は、上位装置への書き込み完了が報告された後に行われる。また、ＦＩＦＯバッファ１０２ａに格納されたデータはキャッシュメモリ１０１ｂに移されるので、ＦＩＦＯバッファ１０２ａを上位装置からの次のデータ書き込みのために空けることができる。このため、ＦＩＦＯバッファ１０２ａの容量が不足してディスクドライブ１２にデータを書き込むまで上位装置からの次の書き込みを受け付けられなくなるようなことはなく、さらに書き込み処理の性能を高めることができる。
【００２３】
図２は、ＦＩＦＯバッファ１０２ａの構成例を示した図である。尚、ＦＩＦＯバッファ１０２ｂも同様の構成となるが、電源１１ａと１１ｂとが入れ替わった構成となる。ＦＩＦＯバッファ１０２ａは、電源Ａ監視部３０１ａ、書き込み制御部３０２ａ、読み出し制御部３０３ａ、ＦＩＦＯメモリ３０４ａ、データ確認部３０５ａ及び残データ有無指示器３３０ａを有する。
【００２４】
データ確認部３０５ａは、上位装置から送信されてきた書き込みデータが途中で障害を生じて誤ったデータになっていないかＣＲＣ等で確認する。データ確認部３１１ａで誤りがないことが確認されると、その結果は信号線３１１ａを介して書き込み制御部３０２ａへ通知される。書き込み制御部３０２ａは、データ確認部３０５ａから誤りがないことが通知されると、書き込み指示信号を信号線３１３ａを介して出力する。書き込み指示信号を受信したＦＩＦＯメモリ３０４ａは、上位装置から転送されたデータを格納する。
【００２５】
転送されたデータの格納を終了したＦＩＦＯメモリ３０４ａは、信号線１１１ａを介して書き込み完了をデータ書き込み完了監視部１０３ａへ通知する。又、ＦＩＦＯメモリ３０４ａは、信号線３１３ａを介して、データ書き込みの完了を書き込み制御部３０２ａに通知する。通知を受けた書き込み制御部３０２ａは、信号線３１５ａを介して、読み出し制御部３０３ａにＦＩＦＯメモリ３０４ａにデータが格納されたことを通知する。
【００２６】
信号線３１５ａからデータがＦＩＦＯメモリ３０４ａに格納されたことを通知された読み出し制御部３０３ａは、信号線３１４ａを介して読み出し指示信号を出力する。読み出し指示信号を受信したＦＩＦＯメモリ３０４ａは、格納されたデータを信号線１１４ａに出力し、コントローラ１０ｂ内のキャッシュメモリ１０１ｂへ送信する。
【００２７】
電源Ａ監視部３０１ａは、図１では図示しない監視信号線３１０ａを用いて電源１１ａの状態を監視する。尚、本例において電源１１ａの状態を監視するのは、以下の理由による。もし、電源１１ａの完全な障害で給電停止になればホストインターフェース部１００ａからの信号が消失するので、ＦＩＦＯバッファ１０２ａは、ホストインターフェース部１００ａからの信号の有無のみで、電源１１ａの障害が発見できる。しかし、電源１１ａが正規の電圧でない不正な電圧を給電するなどすると、ホストインターフェース部１００ａからの信号が単に消失するのではなく、誤動作を起こしてなんらかの異常な信号となることが予想される。この場合には、ホストインターフェース部１００ａからの信号のみを監視していては判定がつかない。そこで電源Ａ監視部３０１ａは、電源１１ａを直接監視することによってホストインターフェース部１００ａからの信号が正常と期待できるかどうかを判定する。
【００２８】
電源１１ａに障害が発生し、ホストインターフェース部１００ａからデータが正常に伝わってこない状態となると、電源Ａ監視部３０１ａは、信号線３１２ａを介して書き込み抑止信号を書き込み制御部３０２ａへ出力し、誤ったデータがＦＩＦＯメモリ３０４ａに格納されるのを抑止する。尚、電源１１ａに障害が発生しても、ＦＩＦＯバッファ１０２ａ内の各部は電源線３２０ａ及び電源線１２１ｂを介して電源１１ｂに接続されているので、障害なく動作を継続することができる。
【００２９】
また、ＦＩＦＯバッファ１０２ａは、ＦＩＦＯメモリ３０４ａ内にまだコントローラ１０ｂのキャッシュメモリ１０１ｂへ送出されていないデータがあるかどうかを表示する残データ有無指示器３３０ａを備える。この残データ有無指示器３３０ａによって、ストレージシステムの使用者又は管理者は、コントローラ１０ａで障害が発生した際にコントローラ１０ａを交換して障害回復を行う時には、データがコントローラ１０ｂのキャッシュメモリ１０１ｂへ送出が完了しているかどうかを確認し、データ転送の完了を待って、コントローラ１０ａを交換することができる。
【００３０】
尚、本発明の第二の実施形態として、ストレージシステムが第一の実施形態の構成に加えて電源４３ａ及びｂを有し、ＦＩＦＯバッファ４０２ａが電源４３ｂに、ＦＩＦＯバッファ４０２ｂが電源４３ａに接続されている形態も考えられる。本実施形態では、電源４３ａ及び電源４３ｂは、それぞれＦＩＦＯバッファ１０２ａ及び１０２ｂに電源を供給するだけで良いので、電源１１ａ及び電源１１ｂに比べ、容量を小さくすることができる。
【００３１】
図３は、本発明を適用したストレージシステムの第三の実施形態を示す図である。第三の実施形態は、第一の実施形態と異なり、ストレージシステムは、バッテリ付きＦＩＦＯバッファ５０２ａ及び５０２ｂを有する。又、第一の実施形態と異なり、本実施形態では、バッテリ付きＦＩＦＯバッファ５０２ａは、電源線５２１ｂを介して電源１１ａに、バッテリ付きＦＩＦＯバッファ５０２ｂは、電源線５２１ａを介して電源１１ｂに接続される。バッテリ付きＦＩＦＯバッファ５０２ａ及び５０２ｂは、それぞれ電源１１ａ、電源１１ｂの障害発生時には、内蔵しているバッテリにより動作を継続する。その他の構成及び動作は第一の実施形態と同様である。
【００３２】
図４は、バッテリ付きＦＩＦＯバッファ５０２ａの構成例を示す図である。尚、バッテリ付きＦＩＦＯバッファ５０２ｂもほぼ同一の構成だが、電源１１ａが電源１１ｂとなる。バッテリ付きＦＩＦＯバッファ５０２ａは、電源Ａ監視部３０１ａ、書き込み制御部３０２ａ、読み出し制御部３０３ａ、ＦＩＦＯメモリ３０４ａ、データ確認部６０５ａ、残データ有無指示器３３０ａ、バッテリ６０６ａ、充電監視部６０７ａ及び電源セレクタ６０８ａを有する。
【００３３】
電源Ａ監視部３１０ａは、図３に図示しない監視信号線３１０ａを使用して、電源１１ａの状態を監視している。電源１１ａに障害が発生したことを監視信号線３１０ａを通じて検出すると、電源Ａ監視部３１０ａは、第一の実施形態と同様に、信号線３１２ａを介して書き込み抑止信号を書き込み制御部３０２ａへ出力し、ＦＩＦＯメモリ３０４ａへの新たな書き込みデータの格納を抑止させる。また、本実施形態では、電源Ａ監視部３０１は、書き込み抑止信号の出力にあわせて、信号線６１６ａを介して電源切り替え信号を電源セレクタ６０８ａに出力する。電源切り替え信号を受信した電源セレクタ６０８ａは、各部への電源線６２０ａに接続する電源を電源１１ａからバッテリ６０６ａに切り替える。
【００３４】
バッテリ６０６ａは、電源１１ａが正常である間は、充電監視部６０７ａによって充電されている。これにより、バッテリ６０６ａは、いつでも電源１１ａに代わって各部に電源を供給する準備が整えられている。電源Ａ監視部３０１ａより電源切り替え信号が出力されると、バッテリ６０６ａは、電源線６２０を介してＦＩＦＯバッファ５０２ａ内の各部へ電源を供給する。このバッテリ６０６ａからの電源の供給は、電源１１ａからバッテリ６０６ａへ電源が切り替わった時点にＦＩＦＯメモリ３０４ａ内に格納されていたデータがすべてコントローラ５０ｂのキャッシュメモリ１０１ｂに送出し終わるまでで良い。何故なら、バッテリ６０６ａに電源が切り替わった後は、電源Ａ監視部３０１ａより書き込み抑止信号が出力されるので、新たなデータのＦＩＦＯメモリへの格納が生じないからである。このため、バッテリ６０６ａは大きな容量を必要とせず、ごく小さな容量のバッテリで充分である。
尚、上述以外のバッテリ付きＦＩＦＯバッファ５０２ａの動作は、第一の実施形態と同様である。
【００３５】
図５は、図３のコントローラ５０の具体的な実装例を示す図である。マザーボード７０上に、上位装置からの信号線と接続されるホスト接続用コネクタ７１、ホストインターフェース部に対応するＬＳＩ７２、書き込み完了監視部に相当するＬＳＩ７４、ＤＩＭＭ（Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）基板で実装されるキャッシュメモリ７３及びＦＩＦＯバッファ用ドータカード７５が装着される。さらに、ＦＩＦＯバッファ用ドータカード７５には、ＦＩＦＯメモリに相当するＬＳＩ  ７５１、書き込み制御部、読み出し制御部、電源Ａ監視部、データ確認部及び充電監視部を含むＬＳＩ  ７５２並びにバッテリ７５３が搭載されている。
【００３６】
マザーボード７０は、カードエッジ接続部７６を介して、他のコントローラ５０、ディスクドライブ１２、電源１１ａ及び電源１１ｂに接続される。これは、マザーボード７０上の各装置には電源１１ａ又は電源１１ｂにより電源が供給されることを意味する。ＦＩＦＯバッファ用ドータカード７５上の各装置には、電源１１ａ、電源１１ｂ又はバッテリ７５３により電源が供給される。
【００３７】
図５では更に、残データ有無指示器７５４がＬＥＤでマザーボード７０のホスト接続用コネクタ７１が配置された方のカードエッジに並べて実装される。こうすることにより、実際のストレージシステムにコントローラ５０を組み込む時には、マザーボード７０のホスト接続用コネクタ７１のあるカードエッジだけがストレージシステム外部から観察可能なようにしておくことが出来る。このようにすることによって、ストレージシステムの使用者又は管理者が、ストレージシステム外部から観察して、当該コントローラ５０が障害時に交換可能になったかどうかを容易に知ることができる。
【００３８】
さらに、残データ有無指示器７５４をＦＩＦＯバッファ用ドータカード７５上ではなくてマザーボード７０上に搭載するため、マザーボード７０に電源を配給する電源１１からの電源供給が停止しても残データ有無指示器７５４にＦＩＦＯバッファ用ドータカード７５からの信号線を介して電源供給ができるように、残データ有無指示器７５４とＦＩＦＯバッファ用ドータカード７５とを配線しておく。
【００３９】
又、万一誤ってＦＩＦＯメモリに未だデータが存在するのに残データ無しで交換可能との表示になってしまわないように、例えば残データ有無指示器７５４をＬＥＤで実装するときは、点灯が交換可能であることを意味し、消灯が交換不可を意味するとしておく。これを逆に点灯が交換不可、消灯が交換可能という意味にすると、使用者又は管理者は、マザーボード７０上の障害によりＦＩＦＯバッファ用ドータカード７５からの信号線がマザーボード７０上で断線して残データ有無指示器７５４が消灯した状態と、交換可能で残データ有無指示器７５４が消灯した状態とが区別できなくなる。
【００４０】
尚、マザーボード７０上の障害により残データ有無指示器７５４が消灯している状態と交換不可で残データ有無指示器７５４が消灯している状態との区別は、別の手段で行う事もできる。例えば、ＦＩＦＯメモリから他方のコントローラ５０のキャッシュメモリへすべてのデータを送出するまでにかかる最大時間を予め測定等を行い調べておけば、データを送出する最大時間を超えて残データ有無指示器７５４が消灯したままであるときは、マザーボード７０上の障害と考えることができる。
【００４１】
あるいは、上位装置から最後に書き込まれたデータが何であるかが上位装置において知ることができれば、書き込まれたデータが他方のコントローラのキャッシュメモリまたはディスクドライブに格納されているかどうか、他方のコントローラ５０から調べるという方法もある。
【００４２】
図６は、本発明を適用したストレージシステムにおけるデータの書き込み方法の手順を示したフローチャートである。本フローチャートは、上述した全ての実施形態で共通である。
【００４３】
まずストレージシステムのコントローラ１０ａは、ホストインターフェース部１００ａを介して、上位装置から書き込みコマンドを受信する（ステップ８０１）。次にコントローラ１０ａは、書き込みコマンドで指示されたデータの大きさの分だけキャッシュメモリ１０１ａの空き領域を確保する（ステップ８０２）。次にコントローラ１０ａは、ＦＩＦＯバッファ１０２ａの空きを検査し（ステップ８０３、８０４）、空きがない場合には、コントローラ１０ａは、ステップ８０３及び８０４の処理をＦＩＦＯバッファ１０２ａが空くまで繰り返す。
【００４４】
ＦＩＦＯバッファに空きが有る場合又はできた場合には、コントローラ１０ａは、上位装置に書き込み準備完了を通知する（ステップ８０５）。その後、コントローラ１０ａは、実際に上位装置からデータを受信する（ステップ８０６）。データを受信したコントローラ１０ａは、ホストインターフェース部１００ａで受信したデータの複製を行う。ただし、データの複製は、他の部分で行われても良い（ステップ８０７）。その後、ホストインターフェース部１００ａは、複製したデータの一方をキャッシュメモリ１０１ａに、他方のデータをＦＩＦＯバッファ１０２ａに転送する（ステップ８０８）。
【００４５】
次にコントローラ１０ａは、キャッシュメモリ１０１ａ及びＦＩＦＯバッファ１０２ａのいずれかの書き込みでエラーが発生しなかったかどうか検査する（ステップ８０９）。もしいずれかの書き込みでエラーが発生した時には、コントローラ１０ａは、上位装置に書き込みエラーを報告する（ステップ８１０）。また両方の書き込みでエラーが生じなかった場合には、コントローラ１０ａは、上位装置からデータを受信し終わったかどうか検査する（ステップ８１１）。もし受信し終わっていなければ、コントローラ１０ａは、全てのデータを受信し終わるまでステップ８０６〜８１１までの処理を繰り返す。
【００４６】
全データを受信し終わった場合、コントローラ１０ａは、上位装置に書き込みの完了を報告する（ステップ８１２）。その後、コントローラ１０ａは、他系（バックアップ側）のコントローラ１０ｂのキャッシュメモリ１０１ｂに空き領域を確保するよう、他系のコントローラ１０ｂに指示を出す。具体的には、例えばＦＩＦＯバッファ１０２ａが、書き込み要求信号を直接他系コントローラ１０ｂに出しても良い（ステップ８１３）。空き領域を確保したコントローラ１０ａは、ＦＩＦＯバッファ１０２ａから書き込みデータをバックアップ側のキャッシュメモリ１０１ｂに転送して処理を終了する（ステップ８１４）。
【００４７】
このように処理することにより、ストレージシステムは、データをバックアップ側のキャッシュメモリに格納する前に、上位装置へ書き込み完了を報告することが可能である。
【００４８】
図７は、本発明を適用したストレージシステムの第四の実施形態を示す図である。本実施形態のストレージシステムは、コントローラ９０を９０ａ、９０ｂ、９０ｃ、及び９０ｄの４個有する。それぞれのコントローラ９０は、９０ａと９０ｂが２重系、９０ｃと９０ｄが２重系となっている。即ち、電源１１ａがコントローラ９０ａ及び９０ｃに、電源１１ｂがコントローラ９０ｂ及び９０ｃに電力を供給している。又、本実施形態のストレージシステムは、第三の実施形態の構成に加え、交換スイッチ部９０５及び独立したホストインターフェース部９００を有する。
【００４９】
更に各コントローラ９０は、他の実施形態のコントローラが有していたホストインターフェース部１００の代わりに接続スイッチ部９０４を有する。各ホストインターフェース部９００と各コントローラ９０の接続スイッチ部９０４との間は、交換スイッチ部９０５を介して相互に接続される。尚、ホストインターフェース部９００及び交換スイッチ部９０４は、単数でも複数あっても良い。このようにすることにより、上位装置がホストインターフェース部９００ａ及び９００ｂのどちらに接続されても、４個のコントローラ９０ａ、９０ｂ、９０ｃ、９０ｄのうち任意のコントローラを利用することができる。
【００５０】
本実施形態では、例えばホストインターフェース部９００ａに接続される上位装置からデータの書き込みが行われた場合、まず当該データが例えば交換スイッチ部９０５ａを経て、コントローラ９０ａの接続スイッチ部９０４ａに転送される。接続スイッチ部９０４ａが受信したデータは、信号線１１０ａを介してバッテリ付きＦＩＦＯバッファ５０２ａとキャッシュメモリ１０１ａに転送される。
【００５１】
データの書き込みを障害なく完了したバッテリ付きＦＩＦＯバッファ５０２ａは、信号線１１１ａを介して、書き込みの完了をデータ書き込み完了監視部１０３ａに通知する。又、データの書き込みを障害なく完了したキャッシュメモリ１０１ａは、信号線１１２ａを介して、書き込みの完了をデータ書き込み完了監視部１０３ａに通知する。データ書き込み完了監視部１０３ａは、信号線１１１ａ及び信号線１１２ａの双方を介して書き込み完了の通知を受信したら、信号線１１３ａを介して接続スイッチ部９０４ａに書き込み完了を通知する。接続スイッチ部９０４ａは、交換スイッチ部９０５ａ及びホストインターフェース部９００ａを介して上位装置へ書き込み完了を報告する。このとき、コントローラ９０ａと他のコントローラ９０ｂ、９０ｃ、９０ｄの間ではデータ転送のための通信が何ら発生しないので、上位装置から見たストレージシステムの書き込み処理を高速化することができる。
【００５２】
ＦＩＦＯバッファ５０２ａに格納されたデータは、ホストインターフェース部９００ａより上位装置へ書き込み完了が報告された後、信号線１１４ａを介してコントローラ９０ｂ内のキャッシュメモリ１０１ｂへ送信され、キャッシュメモリ１０１ｂへ書き込まれる。このように、コントローラ９０ａとコントローラ９０ｂとの間の通信は、上位装置へ書き込み完了が報告された後に行われる。また、バッテリ付きＦＩＦＯバッファ５０２ａに格納されたデータは、キャッシュメモリ１０１ｂに転送されるので、バッテリ付きＦＩＦＯバッファ５０２ａを上位装置からの次のデータ書き込みのために空けることができる。このため、バッテリ付きＦＩＦＯバッファ５０２ａの容量が不足し、ディスクドライブ１２にデータを書き込むまで上位装置からの次の書き込みを受け付けられなくなるようなことはない。以上のようにすることによって、ストレージシステムの書き込み処理の性能を高めることが可能である。
【００５３】
尚、本実施形態のバッテリ付きＦＩＦＯバッファ５０２の動作は、図３の第三の実施形態におけるバッテリ付きＦＩＦＯバッファ５０２と同様である。
【００５４】
【発明の効果】
本発明により、キャッシュメモリを２重化するストレージシステムにおいて、上位装置からみたデータ書き込みの時間を短縮することができる。これにより上位装置からみたデータ書き込み性能を向上させることができる。
【図面の簡単な説明】
【図１】ストレージシステムの実施の形態の第一の例を示す図である。
【図２】ストレージシステムに用いられるＦＩＦＯバッファの構成の例を示す図である。
【図３】ストレージシステムの実施の形態の第三の例を示す図である。
【図４】ストレージシステムに用いられるバッテリ付きＦＩＦＯバッファの構成の例を示す図である。
【図５】ストレージシステムに用いられるコントローラのマザーボードの概観の例を示す図である。
【図６】ストレージシステムの書き込みを高速化する方法の実施の形態の例を示す図である。
【図７】ストレージシステムの実施の形態の第四の例を示す図である。
【符号の説明】
１０…コントローラ、１１ａ…電源Ａ、１１ｂ…電源Ｂ、１２…ディスクドライブ、４３ａ…小電源Ａ、４３ｂ…小電源Ｂ、１００…ホストインターフェース部、１０１…キャッシュメモリ、１０２…ＦＩＦＯバッファ、５０２…バッテリ付きＦＩＦＯバッファ、１０３…データ書き込み完了監視部、６０６…バッテリ、６０７…充電監視部、６０８…電源セレクタ。
【図１】
2005044010.tif 000003
【図２】
2005044010.tif 000004
【図３】
2005044010.tif 000005
【図４】
2005044010.tif 000006
【図５】
2005044010.tif 000007
【図６】
2005044010.tif 000008
【図７】
2005044010.tif 000009