説明

ストレージ装置、制御装置及び制御方法

【課題】アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置、並びにストレージ装置をそのように制御する制御装置及び制御方法を提案する。
【解決手段】ストレージ装置に、データを記憶するための記憶領域を提供するフラッシュメモリと、フラッシュメモリよりもデータ書込み可能回数が多いディスク状記憶デバイスと、フラッシュメモリよりもアクセス速度が速いキャッシュメモリとを設け、上位装置から与えられるデータをキャッシュメモリに格納すると共に、当該データを所定のタイミングでキャッシュメモリから読み出し、キャッシュメモリから読み出されたデータをディスク状記憶デバイスに格納すると共に、所定条件が満たされたときには、当該データをディスク状記憶デバイスから読み出し、ディスク状記憶デバイスから読み出されたデータをフラッシュメモリに格納する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ装置、制御装置及び制御方法に関し、特に記憶デバイスとしてフラッシュメモリが採用されたストレージ装置に適用して好適なものである。
【背景技術】
【0002】
従来、ストレージ装置における記憶デバイスとして、半導体メモリやハードディスクドライブが用いられている。半導体メモリは、アクセス速度が速く、小型、低消費電力及び高信頼性という利点を有する反面、単位ビット当たりのコストが高価という欠点を有する。一方、ハードディスクドライブは、半導体メモリに比べてアクセス速度が遅く、大型、高消費電力及び低信頼性という欠点がある反面、単位ビット当たりのコストが半導体メモリに比べて格段的に安価という利点を有する。
【0003】
このため、近年では、ストレージシステムにおける記憶デバイスとしてはハードディスクドライブが主流となっており、これに伴ってハードディスクドライブに関する技術革新が相次いで行なわれ、ハードディスクドライブにおける単位面積当たりの記憶容量も飛躍的に向上している。
【0004】
またハードディスクドライブの弱点である信頼性についても、RAID(Redundant Array of Inexpensive Disks)技術の適用により向上しており、近年では、数TBの容量を有する大型記憶システムも市場に登場している。
【0005】
ところで、近年では、データの書き換えが自由に行なえ、かつ電源を切ってもデータが消滅しない半導体メモリであるフラッシュメモリが記憶デバイスとして広く利用されるようになってきている。そしてこのような普及に伴って、フラッシュメモリの単位ビット当たりのコストも低下してきている。
【0006】
かかる状況のもと、今後、記憶デバイスとしてフラッシュメモリを搭載したストレージ装置が登場することが予想される。そして、このような構成を採用することによって、アクセス速度が速く、かつ消費電力が少ないストレージ装置を構築できるものと考えられる。
【0007】
なお下記特許文献1には、フラッシュメモリとハードディスクドライブとを混載したストレージが提案されている。
【特許文献1】特開2004−21811号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、フラッシュメモリは、10万回程度の書込み回数しか保証されていない。このためフラッシュメモリをストレージシステムの記憶デバイスとして採用する場合、このようなフラッシュメモリの特性を考慮した対策を講じておかなければ、フラッシュメモリの故障が頻発することが予想される。この結果、かかる対策を講じなければ、フラッシュメモリの交換作業に多くの費用及び労力が必要となって、ストレージ装置の運用コストが激増することになるばかりでなく、データ保護の観点からもストレージ装置の信頼性を失墜させるおそれもある。
【0009】
本発明は以上の点を考慮してなされたもので、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置、並びにストレージ装置をそのように制御する制御装置及び制御方法を提案しようとするものである。
【課題を解決するための手段】
【0010】
かかる課題を解決するため本発明においては、上位装置に接続されるストレージ装置であって、前記上位装置から送受信されるデータを格納する不揮発メモリと、前記上位装置から送受信されるデータを格納するディスク装置と、前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリと、前記不揮発メモリに対する前記データの読み書きを制御する第1の制御部と、前記ディスク装置に対する前記データの読み書きを制御する第2の制御部と、前記キャッシュメモリに対する前記データの読み書きを制御する第3の制御部とを備え、前記第1、第2及び第3の制御部は、相互接続網を介して接続され、 前記第3の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第2の制御部に送信し、前記第2の制御部は、前記第3の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第1の制御部に送信し、前記第1の制御部は、前記第2の制御部から送信される前記データを前記不揮発メモリに格納することを特徴とする。
【0011】
また本発明においては、上位装置に接続されるストレージ装置を制御する制御装置であって、前記上位装置から送受信されるデータを格納する不揮発メモリに対する前記データの読み書きを制御する第1の制御部と、前記上位装置から送受信されるデータを格納するディスク装置に対する前記データの読み書きを制御する第2の制御部と、前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリに対する前記データの読み書きを制御する第3の制御部とを備え、前記第1、第2及び第3の制御部は、相互接続網を介して接続され、前記第3の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第2の制御部に送信し、前記第2の制御部は、前記第3の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第1の制御部に送信し、前記第1の制御部は、前記第2の制御部から送信される前記データを前記不揮発メモリに格納することを特徴とする。
【0012】
さらに本発明においては、上位装置に接続されるストレージ装置を制御する制御方法であって、前記ストレージ装置は、前記上位装置から送受信されるデータを格納する不揮発メモリと、前記上位装置から送受信されるデータを格納するディスク装置と、前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリとを有し、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、当該データを所定の契機で前記キャッシュメモリから読み出す第1のステップと、前記キャッシュメモリから読み出された前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出す第2のステップと、前記ディスク装置から読み出された前記データを前記不揮発メモリに格納する第3のステップとを備えることを特徴とする。
【発明の効果】
【0013】
本発明によれば、フラッシュメモリを長寿命化させて、フラッシュメモリの故障に起因する不具合の発生を未然に防止することができるため、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を提供することができる。
【発明を実施するための最良の形態】
【0014】
以下図面について、本発明の一実施の形態を詳述する。
【0015】
(1)本実施の形態によるストレージシステムの構成
(1−1)ストレージシステムの外観構成
図1において、1は全体として本実施の形態によるストレージシステムを示す。このストレージシステム1は、データの入出力制御を行なうデータ入出力制御機能が搭載された記憶制御装置2と、複数のフラッシュメモリパッケージ13が収納された記憶装置3とを備えて構成される。
【0016】
記憶制御装置2は、直方体形状のラックフレーム10内に、それぞれ複数の冷却ファンユニット11、ハードディスクドライブユニット12、フラッシュメモリパッケージ13及び論理基板14と、電源バッテリユニット15とが複数収容されて構成される。
【0017】
冷却ファンユニット11は、1又は複数のファンを内蔵するユニットであり、フラッシュメモリパッケージ13や、ハードディスクドライブユニット12及び論理基板14等において発生した熱をラックフレーム10の外部に排出するために用いられる。
【0018】
ハードディスクドライブユニット12は、所定大きさの筐体に例えば3.5インチのハードディスクドライブが収納されて構成される。かかる筐体の後端部側にはコネクタ(図示せず)が設けられており、このコネクタをラックフレーム10内に配置された図示しないバックボード上のコネクタに嵌め合わせることにより、当該ハードディスクドライブユニット12をバックボードに物理的及び電気的に接続した状態に装填することができるようになされている。
【0019】
フラッシュメモリパッケージ13は、例えば図2に示すように、それぞれ複数のフラッシュメモリチップ(以下、フラッシュメモリとも呼ぶ)20が実装された複数のフラッシュメモリモジュール21が、所定大きさの配線基板22上に交換自在に装着されて構成される。この配線基板22の一端側にはフラッシュメモリ制御LSI(Large Scale Integration circuit)23が実装されており、このフラッシュメモリ制御LSI23内に形成された後述のフラッシュメモリ制御部33によって、そのフラッシュメモリパッケージ13内の各フラッシュメモリチップ20に対するデータの入出力を制御し得るようになされている。
【0020】
またフラッシュメモリパッケージ13の後端部側には図示しないコネクタが設けられており、このコネクタをラックフレーム10内に配置された図示しないバックボード上の対応するコネクタに嵌め合わせることによって、当該フラッシュメモリパッケージ13をバックボードに物理的及び電気的に接続した状態に装填することができるようになされている。
【0021】
論理基板14は、図3について後述するチャネル制御部31、ディスク制御部32、キャッシュメモリ34、キャッシュメモリ制御部35、接続部36、プロセッサ部37等が形成されて構成される。これら論理基板14は、ラックフレーム10内に配置された図示しないバックボードに挿抜自在に接続されており、このバックボードを介してラックフレーム10内に装填された他の論理基板14等と通信を行い得るようになされている。
【0022】
電源バッテリユニット15は、電源ユニット部15A及びバッテリユニット部15Bから構成される。このうち電源ユニット部15Aは、外部から供給される商用交流電力を直流電力に変換し、これを記憶制御装置2内の各部位にそれぞれ供給する。またバッテリユニット部15Bは、停電時や電源ユニット部15Aの異常時に、記憶制御装置2内の各部位に電力を供給するための予備電源として用いられる。
【0023】
ラックフレーム10は、その内部が仕切り板によって複数段に区分けできるように構成されている。本実施の形態においては、ラックフレーム10内が全部で9段に区分けされており、その最上段及び上から6段目に冷却ファンユニット11、上から2段目及び3段目にハードディスクユニット12、上から4段目及び5段目にフラッシュメモリパッケージ13、上から7段目及び8段目に論理基板14、最下段に電源バッテリユニット15がそれぞれ収納されている。
【0024】
一方、記憶装置3は、ラックフレーム16内に、冷却ファンユニット11、複数のフラッシュメモリパッケージ13及び電源バッテリユニット15が収容されて構成される。この記憶装置3は、ファイバーチャネル(Fibre channel)などからなる図示しない通信ケーブルを介して記憶制御装置2と接続されており、これにより記憶制御装置2内の論理基板14がかかる通信ケーブルを介して記憶装置3に搭載された各フラッシュメモリパッケージ13と通信を行ない得るようになされている。
【0025】
ラックフレーム16は、記憶制御装置2のラックフレーム11とほぼ同様の構成を有する。本実施の形態においては、ラックフレーム16内が全部で8段に区分けされており、その最上段に冷却ファンユニット11、最下段に電源バッテリユニット15がそれぞれ収納され、これら最上段及び最下段以外の各段部にそれぞれフラッシュメモリパッケージ13が収納されている。
【0026】
(1−2)ストレージシステムの内部構成
図3は、本実施の形態によるストレージシステム1の内部構成を示す。この図3に示すように、ストレージシステム1は、チャネル制御部31、ハードディスクドライブ41、ディスク制御部32、フラッシュメモリ20、フラッシュメモリ制御部33、キャッシュメモリ34、キャッシュメモリ制御部35、接続部36及びプロセッサ部37を備えて構成される。
【0027】
チャネル制御部31は、ホスト30との間のインタフェースとして機能し、当該ホスト30との間で各種コマンドやデータを送受する。
【0028】
ハードディスクドライブ41は、上述のようにハードディスクドライブユニット12内に収納された状態でストレージシステム1に搭載され、マイクロプロセッサ39によりRAID方式で運用される。ハードディスクドライブ41としては、例えばSCSI(Small Computer System Interface)ディスク等の高価なハードディスクドライブや、SATA(Serial AT Attachment)ディスク等の安価なハードディスクが適用される。
【0029】
ディスク制御部32は、例えばファイバーチャネルケーブルを介して記憶制御装置2及び記憶装置3にそれぞれ搭載された各ハードディスクドライブと接続されている。ディスク制御部32は、これらハードディスクドライブ41に対するインタフェースとして機能し、ハードディスクドライブ41に対するデータの入出力を制御する。
【0030】
フラッシュメモリ20は、書き換え可能な不揮発性の半導体メモリであり、上述のようにフラッシュメモリパッケージ13としてストレージシステム1に搭載される。1又は複数のフラッシュメモリ20により1つのパリティグループが形成され、このパリティグループが提供する物理的な記憶領域上に1又は複数の論理的なボリューム(以下、これを論理ボリュームと呼ぶ)が設定される。ホスト30からのデータは、この論理ボリュームに、フラッシュメモリ20上のデータ管理単位である所定大きさのブロックを単位として読み書きされる。
【0031】
各論理ボリュームには、それぞれ固有の識別番号(LUN:Logical Unit Number)が割り当てられる。そしてデータの入出力は、このLUNと、各ブロックにそれぞれ割り当てられるそのブロックに固有のブロック番号とを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
【0032】
フラッシュメモリ制御部33は、上述のように各フラッシュメモリパッケージ13にそれぞれ実装されたフラッシュメモリ制御LSI23内に形成される。フラッシュメモリ制御部33は、フラッシュメモリ20に対するインタフェースとして機能し、同じフラッシュメモリパッケージ13内の各フラッシュメモリ20に対するデータの入出力を制御する。
【0033】
キャッシュメモリ34は、例えばSDRAM(Synchronous Dynamic Random Access Memory)等の揮発メモリから構成される。またキャッシュメモリ制御部35は、キャッシュメモリ34に対するデータの入出力を制御する。
【0034】
接続部36は、例えば相互接続可能なスイッチ又はバス等で構成される。チャネル制御部31、ディスク制御部32、フラッシュメモリ制御部33、キャッシュメモリ制御部35及びプロセッサ部37間のデータやコマンドの授受は、この接続部36を介して行われる。
【0035】
プロセッサ部37は、メモリ38及び2つのマイクロプロセッサ39がノースブリッジ40に接続されて構成される。
【0036】
メモリ38は、チャネル制御部31、ディスク制御部32、フラッシュメモリ制御部33、キャッシュメモリ制御部35及び各マイクロプロセッサ39により共有される半導体メモリである。このメモリ38は、主にシステム構成情報及び各種制御プログラムなどの制御情報を記憶するために利用される。後述のデータ管理テーブル50は、このメモリ38に保持される。なお、プロセッサ部37内にこのメモリ38を複数も受けるようにしてもよい。
【0037】
マイクロプロセッサ39は、ストレージシステム1全体の動作制御を司るプロセッサである。各マイクロプロセッサ39には、それぞれそのマイクロプロセッサ39が担当すべきフラッシュメモリ20上の記憶領域(全フラッシュメモリ20がそれぞれ提供する記憶領域の一部)が割り当てられる。そしてマイクロプロセッサ39は、メモリ38に格納された各種制御プログラムに基づいて、キャッシュメモリ20上の自己に割り当てられた記憶領域に関連する各種のジョブを実行する。
【0038】
ノースブリッジ40は、メモリ38及びマイクロプロセッサ39間を接続すると共に、これらメモリ38及びマイクロプロセッサ39を接続部36に接続する。
【0039】
なお、本実施の形態によるストレージシステム1では、冗長性をもたせるため、チャネル制御部31、ディスク制御部32、フラッシュメモリ制御部33、キャッシュメモリ制御部34及びプロセッサ部37がそれぞれ2つずつ設けられている。
【0040】
(1−3)ストレージシステムにおけるデータ読書き処理
(1−3−1)データ読書き処理の概要及びデータ管理テーブルの構成
次に、かかるストレージシステム1におけるデータ書込み処理及びデータ読出し処理の概要について説明する。
【0041】
本実施の形態によるストレージシステム1は、データの読出し特性を向上させるため、従来のハードディスクドライブに代えてフラッシュメモリ20を記憶デバイスとして採用すると共に、フラッシュメモリ20に対するデータ書込み回数を抑制するため、ハードディスクドライブ41をデータ書込み時におけるバッファとして採用している点を1つの特徴としている。
【0042】
そして、このストレージシステム1においては、ホスト30からデータ書込み要求及び書込み対象のデータ(以下、適宜、これを書込み対象データと呼ぶ)が与えられた場合、図4(A)に示すように、この書込み対象データがまずキャッシュメモリ34に格納される。
【0043】
このキャッシュメモリ34に格納された書込み対象データは、この後、ハードディスクドライブ41に移動され、この後所定のタイミングでフラッシュメモリ20に移行される。
【0044】
一方、ストレージシステム1においては、ホスト30からデータ読出し要求が与えられた場合、まず、キャッシュメモリ34、ハードディスクドライブ41及びフラッシュメモリ20のうちのどこに読出し対象のデータ(以下、適宜、これを読出し対象データと呼ぶ)が格納されているかが判定される。
【0045】
そして、かかる読出し対象データがキャッシュメモリ34に格納されていた場合(キャッシュヒット)には、図4(B)に示すように、当該読出し対象データがキャッシュメモリ34から読み出されてホスト30に送信される。この場合には、高速のデータ読み出しが可能である。
【0046】
また、かかる読出し対象データがキャッシュメモリ34には格納されておらず(キャッシュミス)、ハードディスクドライブ41に格納されていた場合(HDDヒット)には、図4(C)に示すように、当該読出し対象データがハードディスクドライブ41から読み出されて一端キャッシュメモリ34に格納され、この後このキャッシュメモリ34から読み出されてホスト30に送信される。
【0047】
他方、読出し対象データがキャッシュメモリ34及びハードディスクドライブ41のいずれにも格納されておらず(キャッシュミス及びHDDミス)、フラッシュメモリ20に格納されている場合における読出し対象データの読出し方法としては、以下の第1及び第2のデータ読出し方法が考えられる。
【0048】
このうち第1のデータ読出し方法は、図4(D−1)に示すように、読出し対象データをフラッシュメモリ20から読み出して一端キャッシュメモリ34に格納し、この後この読出し対象データをキャッシュメモリ34から読み出してホスト30に送信する方法である。この第1のデータ読出し方法によれば、レーテンシが増加するものの、同一のデータを繰り返し読み出す場合には、2度目以降のデータの読み出しがキャッシュメモリ34から行われるため、データの読出し速度を高速化させることができるという利点がある。
【0049】
また第2のデータ読出し方法は、図4(D−2)に示すように、読出し対象データをフラッシュメモリ34から読み出して、直接ホスト30に送信する方法である。この第2のデータ読出し方法によれば、レーテンシが少なく、またキャッシュメモリ34のメモリ資源を消費しないという利点がある。また、この第2のデータ読み出し方法によると、フラッシュメモリ20のデータ読み出し速度がキャッシュメモリ34と同等以上の場合、読み出し対象データはキャッシュメモリ34を介さずに読み出されるため、高速化することができるという利点がある。このような場合、例えば、読み出し対象データがキャッシュメモリ34またはハードディスクドライブ41にあっても、フラッシュメモリ20にデータを移行して、第2のデータ読み出し方法を用いて読み出すように設定する形態(フラッシュメモリ優先)としてもよい。
【0050】
ここで、このようなデータの読書き制御を行なうための手段として、ストレージシステム1では、図5に示すようなデータ管理テーブル50がメモリ38(図1)に格納されている。
【0051】
データ管理テーブル50は、フラッシュメモリ20内のブロックにそれぞれ格納された又は格納されるべきデータ(そのデータが更新された場合には更新後のデータ)がキャッシュメモリ(CM)34、ハードディスクドライブ(HDD)12及びフラッシュメモリ(FM)20のいずれに存在するかを管理するために用いられるテーブルである。
【0052】
このデータ管理テーブル50は、「FMブロック番号」フィールド50A、「CMヒットミス情報」フィールド50B、「HDDヒットミス情報」フィールド50C、「CMアドレス」フィールド50D、「HDDアドレス」フィールド50E、「HDDデータ移行中フラグ」フィールド50F及び「FMでデータ移行フラグ」フィールド50Fから構成される。
【0053】
このうち「FMブロック番号」フィールド50Aには、すべてのフラッシュメモリ20内に存在するすべてのブロックのブロック番号がそれぞれ格納される。
【0054】
また「CMヒットミス情報」フィールド50Bには、フラッシュメモリ20内の対応するブロックに格納されたデータ又は当該ブロックに格納されるべきデータが、キャッシュメモリ34上に存在するか否かを表す情報(以下、これをCMヒットミス情報と呼ぶ)が格納される。具体的には、かかるデータがキャッシュメモリ34上に存在するときにはヒット(Hit)、存在しないときにはミス(Miss)を表す情報(例えばフラグ)が格納されることとなる。
【0055】
さらに「HDDヒットミス情報」フィールド50Cには、フラッシュメモリ20内の対応するブロックに格納されたデータ又は当該ブロックに格納されるべきデータが、いずれかのハードディスクドライブ41上に存在するか否かを表す情報(以下、これをHDDヒットミス情報と呼ぶ)が格納される。具体的には、かかるデータがいずれかのハードディスクドライブ41上に存在するときにはヒット(Hit)、存在しないときにはミス(Miss)を表す情報(例えばフラグ)が格納されることとなる。
【0056】
さらに「CMアドレス」フィールド50Dには、フラッシュメモリ20内の対応するブロックに格納されたデータ又は格納されるべきデータがキャッシュメモリ34上に存在する場合に、そのデータが存在するキャッシュメモリ34上のアドレスが格納される。
【0057】
同様に、「HDDアドレス」フィールド50Eには、フラッシュメモリ20内の対応するフラッシュメモリ20に格納されたデータがハードディスクドライブ41上に存在する場合に、そのデータが存在するハードディスクドライブ41上のアドレスが格納される。
【0058】
一方、「HDDデータ移行中フラグ」フィールド50Fには、キャッシュメモリ34に格納されたデータをハードディスクドライブ41に移行させている間フラグ(以下、これをHDDデータ移行中フラグと呼ぶ)が格納される。
【0059】
また「FMデータ移行中フラグ」フィールド50Gには、ハードディスクドライブ41に格納されたデータをフラッシュメモリ20に移行させている間フラグ(以下、これをFMデータ移行中フラグと呼ぶ)が格納される。
【0060】
そしてストレージシステム1では、このデータ管理テーブル50を用いて後述のようなデータ読書き制御を実行する。
【0061】
(1−3−2)データ書込み処理の詳細
次に、本実施の形態によるストレージシステム1におけるデータ書込み処理の詳細について説明する。
【0062】
本実施の形態のストレージシステム1には、書込み対象データをキャッシュメモリ34及びハードディスクドライブ41を順次介してフラッシュメモリ20に書き込む動作モードとして、第1〜第4のデータ書込みモードが存在する。そして、ストレージシステム1では、データ書込みモードとして、上述の第1〜第4のデータ書込みモードの中から所望のモードをユーザが自由に選択して設定できるようになされている。
【0063】
このうち第1のデータ書込みモードでは、図6に示すように、ホスト30から送信される書込み対象データをキャッシュメモリ34に二重書き(2箇所の記憶領域にそれぞれ別々に書き込むこと)することにより冗長化する。また第1のデータ書込みモードでは、この書込み対象データをハードディスクドライブ41やフラッシュメモリ20に移行させる都度、キャッシュメモリ34においてパリティを生成し、これら書込み対象データ及びパリティをハードディスクドライブ41やフラッシュメモリ20に格納する。
【0064】
この第1のデータ書込みモードによれば、書込み対象データの二重書きがキャッシュメモリ34においてのみ行なわれるため、ハードディスクドライブ41及びフラッシュメモリ20の使用効率が良く、またハードディスクドライブ41へのデータ書込み時のみならず、フラッシュメモリ20へのデータ書込み時にもパリティにより冗長化するため、ハードディスクドライブ41へのデータ書込み時におけるパリティ演算を単純化できる利点がある。
【0065】
また第2のデータ書込みモードでは、図7に示すように、ホスト30から送信されてきた書込み対象データをキャッシュメモリ34に二重書きすることにより冗長化する一方、この書込み対象データをハードディスクドライブ41に移行する際にはパリティを生成し、このパリティをデータと共にハードディスクドライブ41に格納する。また第2のデータ書込みモードでは、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移行する際には、当該書込み対象データをハードディスクドライブ41に移動するときに生成したパリティをそのまま用いて冗長化する。
【0066】
この第2のデータ書込みモードによれば、第1のデータ書込みモード時と同様に、ハードディスクドライブ41及びフラッシュメモリ20の使用効率が良く、さらにパリティに演算を1度だけしか行なわないため、第1のデータ書込みモード時に比べて、パリティ演算処理に関するストレージシステム1全体としての負荷を低減させることができる。
【0067】
さらに第3のデータ書込みモードでは、図8に示すように、ホスト30から送信されてきた書込み対象データをキャッシュメモリ34に格納する際、及び当該書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移行する際には、書込み対象データをキャッシュメモリ34又はハードディスク12に二重書きすることにより冗長化する一方、この書込み対象データをさらにハードディスクドライブ41からフラッシュメモリ20に移動する際にはキャッシュメモリ34にいてパリティを生成し、このパリティを書込み対象データと共にフラッシュメモリ20に格納する。
【0068】
この第3のデータ書込みモードによれば、第2のデータ書込みモード時と同様に、書込み対象データをフラッシュメモリ20に二重書きしないため、フラッシュメモリ20の使用効率を向上させることができ、またパリティ演算を1度だけしか行なわないため、第1及び第2のデータ書込みモード時に比べて、パリティ演算処理に関するストレージシステム1全体としての負荷を低減させることができる。
【0069】
さらに第4のデータ書込みモードでは、図9に示すように、ホスト30から送信されてきた書込み対象データを、キャッシュメモリ34に格納する際や、キャッシュメモリ34からハードディスクドライブ41に移行する際、及びハードディスクドライブ41からフラッシュメモリ20に移行させる際に、当該書込み対象データを常に二重書きする。
【0070】
この第4のデータ書込みモードによれば、パリティ演算の必要がないため、冗長化に関するストレージシステム1全体としての負荷を第1〜第4のデータ書込みモードの中で最も低減させることができる。
【0071】
以上の第1〜第4のデータ書き込みモードは、ストレージシステム1の構成仕様・使用目的・稼動状態、格納されるデータの種類やホスト30からのアクセス特性などに応じて、ストレージシステムの起動時に、ユーザや管理計算機(図示せず)が選択して、指定する。また、ストレージシステム1の稼動中の任意の契機において、マイクロプロセッサ39が自動的に選択する形態であってもよい。例えば、ハードディスクドライブ41、フラッシュメモリ20の容量に比べてキャッシュメモリ34の容量が大きく、データ保証を重視する場合は、第1のデータ書き込みモードが選択される。例えば、ハードディスクドライブ41の容量が比較的大きく、フラッシュメモリ20の容量が比較的小さく、ストレージシステム1の性能を重視する場合は、第3のデータ書き込みモードが選択される。
【0072】
また、選択されたデータ書き込みモードの情報は、メモリ38に登録され、各マイクロプロセッサ39はメモリ38にアクセスすることで、データ書き込みモードを参照する。
【0073】
以下、データ書込みモードとして、これら第1〜第4のデータ書込みモードがそれぞれ設定された場合におけるストレージシステム1の動作について説明する。
【0074】
(1−3−2−1)第1のデータ書込みモード
(1−3−2−1−1)第1のデータ書込みモード時における処理の流れ
ストレージシステム1においては、データ書込みモードとして第1のデータ書込みモードが設定された場合、図10及び図11に示す流れで書込み対象データのフラッシュメモリ20への書き込みが行なわれる。
【0075】
すなわち、ストレージシステム1においては、ホスト30からデータ書込み要求及び書込み対象データが送信されると、まず、当該データ書込み要求を受信した旨の通知がチャネル制御部31からマイクロプロセッサ39に与えられる(SP1)。
【0076】
マイクロプロセッサ39は、かかる通知を受信すると、メモリ38に格納されたデータ管理テーブル50上の対応する「CMヒットミス情報」フィールド50B、具体的には書込み対象データを格納すべきフラッシュメモリ20内のブロックに対応する「CMヒットミス情報」フィールド50Bを参照して、当該書込み対象データにより更新される元の書込み対象データ(以下、これを旧書込み対象データと呼ぶ)がキャッシュメモリ34に格納されているか否かを判定する(SP2)。
【0077】
そしてマイクロプロセッサ39は、かかる旧書込み対象データがキャッシュメモリ34に格納されていないと判定した場合には、書込み対象データを二重書きするのに必要な容量分の記憶領域をキャッシュメモリ34上に確保し(SP3)、この後、この書込み対象データをキャッシュメモリ34に転送すべき旨の指示をチャネル制御部31に与える(SP4)。
【0078】
チャネル制御部31は、かかる指示が与えられると、ホスト30から送信される書込み対象データをキャッシュメモリ34に転送する。また、キャッシュメモリ制御部35は、チャネル制御部31から送信される書込み対象データを、キャッシュメモリ34上のステップSP3において確保された記憶領域に順次二重書きする(SP5)。
【0079】
そしてキャッシュメモリ制御部35は、やがて書込み対象データをすべてキャッシュメモリ34に二重書きし終えると、かかる書き込みを終了した旨の報告である終了ステータスを、チャネル制御部31を介してマイクロプロセッサ39に送信する(SP6,SP7)。
【0080】
マイクロプロセッサ39は、この終了ステータスを受信すると、メモリ38に格納されているデータ管理テーブル50(図5)上の対応する「CMヒットミス情報」フィールド50Bに格納されたCMヒットミス情報を「ヒット」に設定すると共に、「HDDヒットミス情報」フィールド50Cに格納されたHDDヒットミス情報を「ミス」に設定する。またマイクロプロセッサ39は、かかる書込み対象データを格納したキャッシュメモリ34上のアドレスをデータ管理テーブル50上の対応する「CMアドレス」フィールド50Dに格納する。さらにマイクロプロセッサは39、この後に行うべき「ジョブ(JOB)」をメモリ38に登録し、この後キャッシュメモリ34に対する書込み対象データの書込み処理を終了する(SP8)。
【0081】
一方、マイクロプロセッサ39は、この後適当なタイミングでメモリ38に登録された上述の「ジョブ」を読み込む(SP9)。そしてマイクロプロセッサ39は、この「ジョブ」に応じて、まず、データ管理テーブル50上の対応する「HDDヒットミス情報」フィールド50Cを参照して、その書込み対象データに対応する旧書込み対象データがハードディスクドライブ41に格納されているか否かを判定する(SP10)。
【0082】
そしてマイクロプロセッサ39は、例えば、かかる旧書込み対象データがハードディスクドライブ41に格納されていると判定した場合には、後述のパリティ演算(SP16参照)を実行するために必要な容量の記憶領域をキャッシュメモリ34上に確保する(SP11)。またマイクロプロセッサ39は、この後、データ管理テーブル50上の対応する「HDDアドレス」フィールド50Eに格納されているアドレスを指定して、ハードディスクドライブ41の当該アドレス位置に格納されている旧書込み対象データ及び当該旧書込み対象データのパリティをキャッシュメモリ34に移動すべき旨の指示をディスク制御部32に与える(SP12)。
【0083】
ディスク制御部32は、かかる指示が与えられると、ハードディスクドライブ41における指定されたアドレス位置から上述の旧書込み対象データ及び当該旧書込み対象データのパリティを読み出し、これらをキャッシュメモリ制御部35に送信する。またキャッシュメモリ制御部35は、かかる旧書込み対象データ及び当該旧書込み対象データのパリティを受信すると、これらをキャッシュメモリ34に書き込む(SP13)。
【0084】
そしてキャッシュメモリ制御部35は、やがて、上述の旧書込み対象データ及び当該旧書込み対象データのパリティをすべてキャッシュメモリ34に書き込み終えると、これに応じた終了ステータスをディスク制御部32を介してマイクロプロセッサ30に送信する(SP14,SP15)。
【0085】
マイクロプロセッサ39は、この終了ステータスを受信すると、キャッシュメモリ34に格納されている書込み対象データ、旧書込み対象データ及び旧書込み対象データのパリティに基づき、ステップSP11において確保したキャッシュメモリ34上の記憶領域を用いて、書込み対象データに対するパリティを順次算出すると共に、得られたパリティをキャッシュメモリ制御部35に送信する(SP16)。またキャッシュメモリ制御部35は、かかるパリティを順次ディスク制御部32に送信する(SP17)。これにより、かかる書込み対象データのパリティがハードディスクドライブ41に格納される。
【0086】
さらにキャッシュメモリ制御部35は、このようにしてマイクロプロセッサ39により算出された書込み対象データのパリティをディスク制御部32に転送し終えると、これに応じた終了ステータスをマイクロプロセッサ39に送信する(SP18)。またマイクロプロセッサ39は、この終了ステータスを受信すると、キャッシュメモリ制御部35に対して、書込み対象データをハードディスクドライブ41に転送すべき旨の指示を与える(SP19)。
【0087】
かくしてキャッシュメモリ制御部35は、かかる指示を受信すると、書込み対象データをキャッシュメモリ34から順次読み出してディスク制御部32に送信する。また、ディスク制御部32は、キャッシュメモリ制御部35から送信される書込み対象データを、ハードディスクドライブ41に順次書き込む(SP20)。
【0088】
そしてディスク制御部32は、やがてキャッシュメモリ制御部35から送信される書込み対象データをすべてハードディスクドライブ41に書き込み終えると、これに応じた終了ステータスをキャッシュメモリ制御部35を介してマイクロプロセッサ39に送信する(SP21,SP22)。
【0089】
マイクロプロセッサ39は、この終了ステータスを受信すると、メモリ38にアクセスして、データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されているCMヒットミス情報を「ミス」に設定すると共に、「HDDヒットミス情報」フィールド50Cに格納されているHDDヒットミス情報を「ヒット」に設定する。またマイクロプロセッサ39は、当該データ管理テーブル50上の対応する「HDDアドレス」フィールド50Eに、かかる書込み対象データを格納したハードディスクドライブ41上のアドレスを格納する。さらにマイクロプロセッサ39は、この後に行うべき「ジョブ」をメモリ38に登録した後(SP24)、ハードディスクドライブ41への書込み対象データのデータ移行処理を終了する。
【0090】
他方、マイクロプロセッサ39は、この後、図24について後述する所定のタイミングでメモリ38にアクセスし、当該メモリ38に登録された上述の「ジョブ」を読み込む(SP24)。そしてマイクロプロセッサ39は、この「ジョブ」に基づいて、データ管理テーブル50の各「CMアドレス」フィールド50Dを参照して、後述のパリティ演算(SP34)を実行するために必要な容量の記憶領域をキャッシュメモリ34上に確保する(SP25)。さらにマイクロプロセッサ39、この後、データ管理テーブル50上の対応する「HDDアドレス」フィールド50Eに格納されているアドレスを指定して、ハードディスクドライブ41の当該アドレス位置に格納されている書込み対象データをキャッシュメモリ34に転送すべき旨の指示をディスク制御部32に与える(SP26)。
【0091】
ディスク制御部32は、かかる指示が与えられると、対応するハードディスクドライブ41における指定されたアドレス位置から書込み対象データを読み出し、これをキャッシュメモリ制御部35に送信する。またキャッシュメモリ制御部35は、かかる書込み対象データを受信すると、これをキャッシュメモリ34に順次書き込む(SP27)。
【0092】
そしてキャッシュメモリ制御部35は、やがてディスク制御部32から送信される書込み対象データをすべてキャッシュメモリ34に書き込み終えると、これに応じた終了ステータスをディスク制御部32を介してマイクロプロセッサ39に送信する(SP28,SP29)。
【0093】
マイクロプロセッサ39は、この終了ステータスを受信すると、ハードディスクドライブ41に格納されている旧書込み対象データ及び当該書込み対象データのパリティをキャッシュメモリ34に転送すべき旨の指示をフラッシュメモリ制御部33に与える(SP30)。
【0094】
そしてフラッシュメモリ制御部33は、かかる指示が与えられると、かかる旧書込み対象データ及び旧書込み対象データのパリティをフラッシュメモリ20から読み出し、これらをキャッシュメモリ制御部35に送信する。またキャッシュメモリ制御部35は、かかる旧書込み対象データ及び当該書込み対象データのパリティを受信すると、これらをキャッシュメモリ34に書き込む(SP31)。
【0095】
そしてキャッシュメモリ制御部35は、やがてフラッシュメモリ制御部33から送信される旧書込み対象データ及び当該書込み対象データのパリティをすべてキャッシュメモリ34に書き込み終えると、これに応じた終了ステータスをフラッシュメモリ制御部33を介してマイクロプロセッサ39に送信する(SP32,SP33)。
【0096】
そしてマイクロプロセッサ39は、この終了ステータスを受信すると、キャッシュメモリ34に格納されている書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティとに基づいて書込み対象データについての新たなパリティを順次生成し、これをキャッシュメモリ制御部35に順次送信する(SP34)。またキャッシュメモリ制御部35は、このときマイクロプロセッサ39から与えられた書込み対象データについての新たなパリティを順次キャッシュメモリ34に格納する。
【0097】
そしてキャッシュメモリ制御部35は、このようにしてマイクロプロセッサ39により算出された新たなパリティをキャッシュメモリ34に書き込み終えると、かかる書き込みを終えた旨の報告でなる終了ステータスをマイクロプロセッサ39に送信する(SP36)。またマイクロプロセッサ39は、この終了ステータスを受信すると、フラッシュメモリ20に書込み対象データを転送すべき旨の指示を、キャッシュメモリ制御部35に与える(SP37)。
【0098】
キャッシュメモリ制御部35は、かかる指示を受信すると、書込み対象データ及びその新たなパリティをキャッシュメモリ34から順次読み出してフラッシュメモリ制御部33に送信する。また、フラッシュメモリ制御部33は、キャッシュメモリ制御部35から送信される書込み対象データ及びその新たなパリティを、フラッシュメモリ20に順次書き込む(SP38)。
【0099】
そしてフラッシュメモリ制御部33は、やがてキャッシュメモリ制御部35から送信される書込み対象データ及びその新たなパリティをすべてフラッシュメモリ20に書き込み終えると、これに応じた終了ステータスをキャッシュメモリ制御部35を介してマイクロプロセッサ39に送信する(SP39,SP40)。
【0100】
かくしてマイクロプロセッサ39は、この終了ステータスを受信すると、メモリ38にアクセスして、データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されたCMヒットミス情報を「ミス」に、また対応する「HDDヒットミス情報」フィールド50Cに格納されているHDDヒットミス情報を「ミス」にそれぞれ設定し、この後、この第1のデータ書込みモードによるデータ書込み処理を終了する。
【0101】
(1−3−2−1−2)第1のデータ書込みモード時におけるマイクロプロセッサの処理
図12〜図14は、上述のような第1のデータ書込みモード時におけるマイクロプロセッサ39の具体的な処理内容を示すフローチャートである。
【0102】
図12は、ホスト30から送信される書込み対象データをキャッシュメモリ34に書き込む際の処理内容(図10のステップSP1〜ステップSP8)、図13は、キャッシュメモリ34に格納されたかかる書込み対象データをハードディスクドライブ41に移動する際の処理内容(図10のステップSP9〜ステップSP23)、図14は、ハードディスクドライブ41に格納されたかかる書込み対象データをフラッシュメモリ20に移動する際の処理内容(図10のステップSP24〜ステップSP41)をそれぞれ示している。そしてマイクロプロセッサ39は、これらの処理をメモリ40(図2)に格納された対応する制御プログラムに基づいて実行する。
【0103】
すなわちマイクロプロセッサ39は、ホスト30からデータ書込み要求及び書込み対象データが与えられると図12に示す第1モード時キャッシュ書込み処理を開始し、まず、メモリ38に格納されたデータ管理テーブル50に基づいて、その書込み対象データに対応する旧書込み対象データがキャッシュメモリ34に格納されているか否かを判定する(SP50)。
【0104】
そしてマイクロプロセッサ39は、このヒットミス判定において、かかる旧書込み対象データがキャッシュメモリ34に格納されていないという判定結果(キャッシュミス)を得ると、必要量の記憶領域をキャッシュメモリ34上に確保し(SP51)、その後チャネル制御部31及びキャッシュメモリ制御部35を制御して、かかる書込み対象データをキャッシュメモリ34に二重書きさせる(SP52)。
【0105】
これに対してマイクロプロセッサ39は、ステップSP50のヒットミス判定において、対応する旧書込み対象データがキャッシュメモリ34に格納されているという判定結果(キャッシュヒット)を得ると、チャネル制御部31及びキャッシュメモリ制御部34を制御して、かかる書込み対象データをキャッシュメモリ34上の対応する旧書込み対象データ上に上書きさせる(SP53)。
【0106】
そしてマイクロプロセッサ39は、この後、書込み対象データをキャッシュメモリ34に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部から与えられると、これに応じた「ジョブ」をメモリ38に登録すると共にデータ管理テーブル50の更新を行ない、この後この第1モード時キャッシュ書込み処理を終了する。
【0107】
一方、マイクロプロセッサ39は、この後、他の処理等を含めた自己の負荷状況に応じて適当なタイミングで図13に示す第1モード時ハードディスク書込み処理を開始し、まず、メモリ38に登録されている上述の「ジョブ」を読み込む(SP60)。
【0108】
続いてマイクロプロセッサ39は、データ管理テーブル50に基づいて、かかる書込み対象データに対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41に格納されているか否かを判定する(SP61)。
【0109】
マイクロプロセッサは、このヒットミス判定において旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41に格納されているという判定結果(HDDヒット)を得ると、後述のパリティ演算(SP64)に必要な容量の記憶領域をキャッシュメモリ34上に確保し(SP62)、その後ディスク制御部32及びキャッシュメモリ制御部35を制御して、旧書込み対象データ及び当該旧書込み対象データのパリティをハードディスクドライブ41からキャッシュメモリ34に移動させる(SP63)。
【0110】
さらにマイクロプロセッサ39は、この後、キャッシュメモリ34に格納された書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて、書込み対象データについての新たなパリティを生成する(SP64)。
【0111】
これに対してマイクロプロセッサ39は、かかるステップSP61のヒットミス判定において、対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41に格納されていないという判定結果(HDDミス)を得ると、後述のパリティ演算(SP66)に必要な容量の記憶領域をキャッシュメモリ34上に確保し(SP65)、その後、キャッシュメモリ34に格納された書込み対象データについての新たなパリティを生成する(SP66)。
【0112】
そしてマイクロプロセッサ39は、上述のように書込み対象データについての新たなパリティを生成し終えると、キャッシュメモリ制御部35及びディスク制御部32を制御して、ステップSP64又はステップSP66において生成した新たなパリティと、書込み対象データとをハードディスクドライブ41に移動させる(SP67)。
【0113】
またマイクロプロセッサ39は、この後、書込み対象データ及び当該書込み対象データの新たなパリティをハードディスクドライブ41に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部35から与えられると、これに応じたジョブ登録及びデータ管理テーブル50の更新を行ない(SP68)、この後この第1モード時ハードディスク書込み処理を終了する。
【0114】
他方、マイクロプロセッサ39は、この後、図24について後述する所定のタイミングで図14に示す第1モード時フラッシュメモリ書込み処理を開始し、まず、メモリ38に登録されている上述の「ジョブ」を読み込む(SP70)。
【0115】
そしてマイクロプロセッサ39は、この後、後述のパリティ演算(SP74)に必要な容量の記憶領域をキャッシュメモリ34上に確保し(SP71)、この後ディスク制御部32及びキャッシュメモリ制御部35を制御して、書込み対象データをハードディスクドライブ41からキャッシュメモリ34に移動させる(SP72)。
【0116】
またマイクロプロセッサ39は、フラッシュメモリ制御部33及びキャッシュメモリ制御部35を制御して、対応する旧書込み対象データ及び当該旧書込み対象データのパリティをフラッシュメモリ20からキャッシュメモリ34に移動させ(SP73)、この後、キャッシュメモリ20に格納されている書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて書込み対象データに対する新たなパリティを生成する(SP74)。
【0117】
次いで、マイクロプロセッサ39は、キャッシュメモリ制御部35及びフラッシュメモリ制御部33を制御して、書込み対象データ及び当該書込み対象データの新たなパリティをキャッシュメモリ34からフラッシュメモリ20に移動させ(SP75)、この後これに応じてデータ管理テーブル76を更新した後に(SP76)、この第1モード時フラッシュメモリ書込み処理を終了する。
【0118】
(1−3−2−2)第2のデータ書込みモード
(1−3−2−2−1)第2のデータ書込みモード時における処理の流れ
一方、ストレージシステム1においては、データ書込みモードとして第2のデータ書込みモードが設定されている場合、図15に示す流れで書込み対象データをフラッシュメモリ20に書き込む。
【0119】
すなわち、ストレージシステム1においては、ホスト30からデータ書込み要求及び書込み対象データが送信されると、この図15に示す第2のデータ書込み処理を開始し、まず、当該データ書込み要求を受信したチャネル制御部31がその旨の通知をマイクロプロセッサ39に与える(SP80)。そしてストレージシステム1では、この通知に応じて、図10及び図11について上述した第1のデータ書込みモード処理のステップSP2〜ステップSP8と同様にして、かかる書込み対象データをキャッシュメモリ34に二重書きすると共に、これに応じたジョブ登録及びデータ管理テーブル50の更新を実行する(SP81〜SP87)。
【0120】
またマイクロプロセッサ39は、この後、メモリ38に登録された上述の「ジョブ」を適当なタイミングで読み込む(SP88)。そしてマイクロプロセッサ39は、この「ジョブ」に応じて、まず、データ管理テーブル50上の対応する「HDDヒットミス情報」フィールド50Cを参照して、かかる書込み対象データに対応する旧書込み対象データがハードディスクドライブ41及びフラッシュメモリ20のいずれかに格納されているか否かを判定する(SP89)。
【0121】
そしてマイクロプロセッサ39は、例えば旧書込み対象データがハードディスクドライブ41又はフラッシュメモリ20に格納されていると判定した場合には、後述のパリティ演算(SP95)を実行するために必要な容量の記憶領域をキャッシュメモリ34上に確保し(SP90)、この後、かかる旧書込み対象データ及び当該旧書込み対象データのパリティをキャッシュメモリ34に移動すべき旨の指示をディスク制御部32又はフラッシュメモリ制御部33に与える(SP91)。なお、図15は、旧書込み対象データがフラッシュメモリ20に格納されていると判定された場合を示している。
【0122】
ディスク制御部32又はフラッシュメモリ制御部33は、かかる指示が与えられると、ハードディスクドライブ41又はフラッシュメモリ20からかかる旧書込み対象データ及び当該旧書込み対象データのパリティを読み出し、これをキャッシュメモリ制御部35に送信する。またキャッシュメモリ制御部35は、かかる旧書込み対象データ及び当該旧書込み対象データのパリティを受信すると、これらをキャッシュメモリ34に書き込む(SP92)。
【0123】
そしてキャッシュメモリ制御部35は、やがてかかる旧書込み対象データ及び当該旧書込み対象データのパリティをすべてキャッシュメモリ34に書き込み終えると、これに応じた終了ステータスをそのディスク制御部32又はフラッシュメモリ制御部33に送信する(SP93)。またディスク制御部32又はフラッシュメモリ制御部33は、この終了ステータスを受信すると、これに応じた終了ステータスをマイクロプロセッサ39に送信する(SP94)。
【0124】
マイクロプロセッサ39は、この終了ステータスを受信すると、キャッシュメモリ34に格納されている書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて書込み対象データについての新たなパリティを順次算出し、これをキャッシュメモリ制御部35に送信する(SP95)。またキャッシュメモリ制御部35は、このときマイクロプロセッサ39から与えられたかかる書込み対象データについての新たなパリティを順次ディスク制御部32に送信する(SP96)。この結果、この新たなパリティが順次ハードディスクドライブ41に格納される。
【0125】
さらにキャッシュメモリ制御部35は、このようにしてマイクロプロセッサ39により算出された書込み対象データについての新たなパリティをディスク制御部32に転送し終えると、これに応じた終了ステータスをマイクロプロセッサ39に送信する(SP97)。またマイクロプロセッサ39は、この終了ステータスを受信すると、キャッシュメモリ制御部35に対して、書込み対象データをハードディスクドライブ41に転送すべき旨の指示を与える(SP98)。
【0126】
かくしてストレージシステム1では、この後、第1のデータ書込みモード(図10及び図11)のステップSP20〜ステップSP23と同様にして、キャッシュメモリ34に格納された書込み対象データ及び当該書込み対象データの新たなパリティがハードディスクドライブ41に移動されると共に、これに応じたジョブ登録及びデータ管理テーブル50の更新が行なわれる(SP99〜SP102)。
【0127】
他方、マイクロプロセッサ39は、この後、図24について後述する所定のタイミングでメモリ38にアクセスし、当該メモリ38に登録された上述の「ジョブ」を読み込む(SP103)。そしてマイクロプロセッサ39は、この「ジョブ」に基づいて、ハードディスクドライブ41に格納された書込み対象データ及び当該書込み対象データの新たなパリティをフラッシュメモリ20に移動すべき旨の指示をディスク制御部32及びフラッシュメモリ制御部33に与える(SP104)。
【0128】
ディスク制御部32は、かかる指示が与えられると、ハードディスクドライブ41から上述の書込み対象データ及び当該書込み対象データの新たなパリティを読み出し、これをフラッシュメモリ制御部33に送信する。またフラッシュメモリ制御部33は、かかる書込み対象データ及び当該書込み対象データの新たなパリティを受信すると、これをフラッシュメモリ20に順次書き込む(SP105)。
【0129】
そしてフラッシュメモリ制御部33は、やがて書込み対象データ及び当該書込み対象データの新たなパリティをフラッシュメモリ20に書き込み終えると、これに応じた終了ステータスをディスク制御部32を介してマイクロプロセッサ39に送信する(SP106,SP107)。
【0130】
かくしてマイクロプロセッサ30は、この終了ステータスを受信すると、メモリ38にアクセスして、データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されているCMヒットミス情報及び「HDDヒットミス情報」フィールド50Cに格納されているHDDヒットミス情報を共に「ミス」に設定し、この後、この第2のデータ書込みモードによるデータ書込み処理を終了する。
【0131】
(1−3−2−2−2)第2のデータ書込みモード時におけるマイクロプロセッサの処理
図16及び図17は、上述のような第2のデータ書込みモード時におけるマイクロプロセッサ39の具体的な処理内容を示すフローチャートである。
【0132】
図16は、キャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に移動する際の処理内容(図15のステップSP88〜ステップSP102)、図17は、ハードディスクドライブ41に格納されたかかる書込み対象データをフラッシュメモリ20に移動する際の処理内容(図15のステップSP103〜ステップSP108)をそれぞれ示している。なお、ホスト30から送信される書込み対象データをキャッシュメモリ34に書き込む際の処理内容(図15のステップSP80〜ステップSP87)は、図12について上述した第1モード時キャッシュ書込み処理と同様であるため、ここでの説明は省略する。マイクロプロセッサ39は、これらの処理をメモリ40(図2)に格納された対応する制御プログラムに基づいて実行する。
【0133】
すなわちマイクロプロセッサ39は、図12について上述した第1モード時キャッシュ書込み処理を実行後、他の処理等を含めた自己の負荷状況に応じて適当なタイミングで図16に示す第2モード時ハードディスク書込み処理を開始し、まず、メモリ38に登録されている「ジョブ」を読み込む(SP110)。
【0134】
続いてマイクロプロセッサ39は、データ管理テーブル50に基づいて、書込み対象データに対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41に格納されているか否かを判定する(SP111)。
【0135】
マイクロプロセッサ39は、このヒットミス判定において、かかる旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41に格納されているという判定結果(HDDヒット)を得ると、後述のパリティ演算(SP116)に必要な容量の記憶領域をキャッシュメモリ34上に確保し(SP112)、その後ディスク制御部32及びキャッシュメモリ制御部35を制御して、かかる旧書込み対象データ及び当該旧書込み対象データのパリティをハードディスクドライブ41からキャッシュメモリ34に移動させる(SP113)。
【0136】
これに対してマイクロプロセッサ39は、ステップSP111のヒットミス判定において、対応する旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41に格納されていないという判定結果(HDDミス)を得ると、後述のパリティ演算(SP116)に必要な容量の記憶領域をキャッシュメモリ34上に確保し(SP114)、この後フラッシュメモリ制御部33及びキャッシュメモリ制御部35を制御して、旧書込み対象データ及び当該旧書込み対象データのパリティをフラッシュメモリ20からキャッシュメモリ34に移動させる(SP115)。
【0137】
なお、例えば、かかる旧書込み対象データ及び当該旧書込み対象データのパリティがハードディスクドライブ41及びフラッシュメモリ20のいずれにも格納されていないとき、つまり書込み対象データがすでにフラッシュメモリ20に格納されているデータの更新データではなく、当該書込み対象データが新たにフラッシュメモリ20に書き込むデータであったときには、ステップSP115において、いわゆるゼロデータが旧書込み対象データ及び当該旧書込み対象データのパリティとしてフラッシュメモリ20から読み出されてキャッシュメモリ34に移動されることとなる。
【0138】
そしてマイクロプロセッサ39は、この後、キャッシュメモリ34に移動された書込み対象データ、旧書込み対象データ及び当該旧書込み対象データのパリティに基づいて書込み対象データについての新たなパリティを生成する(SP116)。またマイクロプロセッサ39は、キャッシュメモリ制御部35及びディスク制御部32を制御して、ステップSP116において生成した新たなパリティと、書込み対象データとをハードディスクドライブ41に移動させる(SP117)。
【0139】
さらにマイクロプロセッサ39は、この後、書込み対象データ及び当該書込み対象データの新たなパリティをハードディスクドライブ41に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部35から与えられると、これに応じたジョブ登録及びデータ管理テーブル50の更新を行ない(SP118)、この後この第2モード時ハードディスク書込み処理を終了する。
【0140】
一方、マイクロプロセッサ39は、この後、図24について後述する所定のタイミングで図17に示す第2モード時フラッシュメモリ書込み処理を開始し、まず、メモリ38に登録されている上述の「ジョブ」を読み込む(SP120)。
【0141】
続いてマイクロプロセッサ39は、ディスク制御部32及びフラッシュメモリ制御部33を制御して、書込み対象データ及びパリティをハードディスクドライブ41からフラッシュメモリ20に移動させる(SP121)。またマイクロプロセッサ39は、この後、かかるステップSP120及びステップSP121の処理に応じてデータ管理テーブル50を更新し(SP122)、この第2モード時フラッシュメモリ書込み処理を終了する。
【0142】
(1−3−2−3)第3のデータ書込みモード
(1−3−2−3−1)第3のデータ書込みモード時における処理の流れ
他方、ストレージシステム1においては、データ書込みモードとして第3のデータ書込みモードが設定されている場合、図18及び図19に示す流れで書込み対象のデータをフラッシュメモリ20に書き込む。
【0143】
すなわち、ストレージシステム1においては、ホスト30からデータ書込み要求及び書込み対象データが送信されると、この図18及び図19に示す第3のデータ書込み処理を開始し、まず、当該データ書込み要求を受信したチャネル制御部31がその旨の通知をマイクロプロセッサ39に与える(SP130)。そしてストレージシステム1では、この通知に応じて、図10及び図11について上述した第1のデータ書込みモード処理のステップSP2〜ステップSP8と同様にして、かかる書込み対象データをキャッシュメモリ34に二重書きすると共に、これに応じたジョブ登録及びデータ管理テーブル50の更新を実行する(SP131〜SP137)。
【0144】
またマイクロプロセッサ39は、この後、メモリ38に格納された上述の「ジョブ」を適当なタイミングで読み込む(SP138)。そしてマイクロプロセッサ39は、この「ジョブ」に応じて、まず、データ管理テーブル50上の対応する「HDDヒットミス情報」フィールド50Cを参照して、かかる書込み対象データに対応する旧書込み対象データがハードディスクドライブ41に格納されているか否かを判定する(SP139)。
【0145】
そしてマイクロプロセッサ39は、例えば旧書込み対象データがハードディスクドライブ41に格納されていないと判定した場合には、書込み対象データを二重書きするために必要な容量の記憶領域をハードディスクドライブ41上に確保し(SP140)、この後、書込み対象データをハードディスク12に転送すべき旨の指示をキャッシュメモリ制御部35に与える(SP141)。
【0146】
キャッシュメモリ制御部35は、かかる指示が与えられると、キャッシュメモリ34から書込み対象データを順次読み出し、これをディスク制御部32に順次送信する。またディスク制御部32は、ステップSP140において確保したハードディスクドライブ41上の記憶領域にこの書込み対象データを二重書きする(SP142)。
【0147】
そしてストレージシステム1では、この後、第1のデータ書込みモードのステップSP21〜ステップSP23と同様にして、終了ステータスがマイクロプロセッサ39に与えられ、この終了ステータスに基づいて、対応するジョブ登録及びデータ管理テーブル50の更新が行なわれる(SP143〜SP145)。
【0148】
さらにストレージシステム1では、この後、図10及び図11について上述した第1のデータ書込み処理のステップSP24〜ステップSP41と同様にして、ハードディスクドライブ41に格納された書込み対象データの新たなパリティが生成されると共に、これら書込み対象データ及び当該書込み対象データの新たなパリティがフラッシュメモリ20に移動され、この後これに応じてデータ管理テーブル50が更新される(SP146〜SP163)。
【0149】
(1−3−2−3−2)第3のデータ書込みモード時におけるマイクロプロセッサの処理
図20は、上述のような第3のデータ書込みモード時におけるマイクロプロセッサ39の具体的な処理内容を示すフローチャートである。
【0150】
実際上、図20は、キャッシュメモリ34に格納された書込み対象の書込み対象データをハードディスクドライブ41に移動する際の処理内容(図18のステップSP138〜ステップSP145)を示している。なお、ホスト30から送信される書込み対象データをキャッシュメモリ34に書き込む際の処理内容(図18のステップSP131〜ステップSP137)は、図12について上述した第1モード時キャッシュ書込み処理と同様であり、またハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に格納する際の処理内容(図19のステップSP146〜ステップSP163)は、図14について上述した第1モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。マイクロプロセッサ39は、かかる図20の処理をメモリ40(図2)に格納された対応する制御プログラムに基づいて実行する。
【0151】
すなわちマイクロプロセッサ39は、図12について上述した第1モード時キャッシュ書込み処理を実行後、他の処理等を含めた自己の負荷状況に応じて適当なタイミングで図20に示す第3モード時ハードディスク書込み処理を開始し、まず、メモリ38に登録されている「ジョブ」を読み込む(SP170)。
【0152】
続いてマイクロプロセッサ39は、データ管理テーブル50に基づいて、書込み対象データに対応する旧書込み対象データ12がハードディスクドライブに格納されているか否かを判定する(SP171)。
【0153】
マイクロプロセッサ39は、このヒットミス判定において、かかる旧書込み対象データがハードディスクドライブ41に格納されていないという判定結果(HDDミス)を得ると、書込み対象データを二重書きするための記憶領域をハードディスクドライブ41上に確保し(SP172)、その後キャッシュメモリ制御部35及びディスク制御部32を制御して、書込み対象データをキャッシュメモリ34から読み出させ、これをステップSP172において確保したハードディスクドライブ41上の記憶領域に二重書きさせる(SP173)。
【0154】
これに対してマイクロプロセッサ39は、かかるヒットミス判定において、かかる旧書込み対象データがハードディスクドライブ41に格納されているという判定結果(HDDヒット)を得ると、キャッシュメモリ制御部35及びディスク制御部32を制御して、書込み対象データをキャッシュメモリ34から読み出させ、これをハードディスクドライブ41上の旧書込み対象データ上に上書きさせる(SP174)。
【0155】
そしてマイクロプロセッサ39は、この後、書込み対象データをハードディスクドライブ41に書き込み終えた旨の終了ステータスがキャッシュメモリ制御部35から与えられると、これに応じたジョブ登録及びデータ管理テーブル50の更新を行ない、この後この第3モード時ハードディスク書込み処理を終了する。
【0156】
(1−3−2−4)第4のデータ書込みモード
図21は、データ書込みモードとして第4のデータ書込みモードが設定されている場合のストレージシステム1における処理の流れを示している。
【0157】
この第4のデータ書込みモードでは、ホスト30から与えられた書込み対象データが、図18及び図19について上述した第3のデータ書込みモードのステップSP130〜ステップSP145と同様にして、キャッシュメモリ34及びハードディスクドライブ41に順次二重書きされる(SP180〜SP195)。
【0158】
またストレージシステム1においては、ハードディスクドライブ41に二重書きされた書込み対象データが、図15について上述した第2のデータ書込みモードのステップSP103〜ステップSP108と同様にして、ハードディスクドライブ41から読み出されてフラッシュメモリ20に二重書きされる(SP196〜SP201)。
【0159】
なお、この第4のデータ書込みモード時におけるマイクロプロセッサ39の具体的な処理内容については、ホスト30からの書込み対象データをキャッシュメモリ34に書き込む際の処理内容(図21のステップSP180〜ステップSP187)が図12について上述した第1モード時キャッシュ書込み処理と同様であり、キャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に移動する際の処理内容(図21のステップSP188〜ステップSP195)が図20について上述した第3モード時ハードディスク書込み処理と同様であり、さらにハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移動する際の処理内容(図21のステップSP196〜ステップSP201)が図17について上述した第2モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。
【0160】
(1−3−2−5)データ移行処理
ところで、かかるストレージシステム1においては、上述のようにキャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に移行した場合、データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されたCMヒットミス情報が「ミス」、対応する「HDDヒットミス情報」フィールド50Cに格納されたHDDヒットミス情報が「ヒット」にそれぞれ設定される。そして、マイクロプロセッサ39は、この後、これらCMヒットミス情報及びHDDヒットミス情報に基づいて、書込み対象データがハードディスクドライブ41に格納されていると判定することとなる。
【0161】
ところが、例えばキャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に移動中に、当該書込み対象データよりも更に新しい最新の書込み対象データがホスト30から送信されてキャッシュメモリ34に格納された場合、何らの手当てもしなければ、最新の書込み対象データがキャッシュメモリ34上に存在するにも係わらず、データ管理テーブル50上では最新の書込み対象データがハードディスクドライブ41上に存在するかのごとく設定されることとなる。
【0162】
そしてこのような事態が発生した場合、その書込み対象のデータのデータ読出し要求がホスト30から与えられたときに、最新の書込み対象データがキャッシュメモリ34上に存在するにも係わらず、1つ前のバージョンの書込み対象データがハードディスクドライブ41から読み出されてホスト30に送信されるという不具合が生じる。
【0163】
これは、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移行させる際にも同様のことが言える。
【0164】
そこで、本実施の形態においては、図5について上述したようにデータ管理テーブル50に「HDDデータ移行中フラグ」フィールド50F及び「FMデータ移行中フラグ」フィールド50Gが設けられており、書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移動させている最中は、対応する「HDDデータ移行中フラグ」フィールド50FにHDDデータ移行中フラグとして「1」を格納(以下、これをフラグを立てると呼ぶ)する。
【0165】
そしてストレージシステム1においては、かかる書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移動させている最中にその書込み対象データよりも新しい書込み対象データがホスト30から与えられ、この書込み対象データをキャッシュメモリ34に書き込む場合には、かかる「HDDデータ移行中フラグ」フィールド50F内のHDDデータ移行中フラグを「0」に変更(以下、これをフラグをクリアすると呼ぶ)する。
【0166】
またこの場合には、かかる書込み対象データの移動が完了しても、データ管理テーブル50上の対応する「キャッシュヒットミス情報」フィールド50G内に格納されたCMヒットミス情報を更新せず、これを元のままにしておく。
【0167】
同様に、ストレージシステム1においては、書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動させている最中は、対応する「FMデータ移行中フラグ」フィールド50GにFMデータ移行中フラグを立てる。
【0168】
そして、ストレージシステム1においては、かかる書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動させている最中にその書込み対象データよりも新しい書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移動させる場合には、かかる「FMデータ移行中フラグ」フィールド50G内のFMデステージ中フラグをクリアする。
【0169】
またこの場合には、かかる書込み対象データの移動が完了しても、データ管理テーブル50上の対応する「HDDヒットミス情報」フィールド50F内に格納されたHDDヒットミス情報を更新せず、これをそれぞれ元のままにしておく。
【0170】
そして、ストレージシステム1においては、このような制御を行なうことによって、最新の書込み対象データがキャッシュメモリ34又はハードディスクドライブ41にあるにも係わらず、それよりも前バージョンの書込み対象データがハードディスクドライブ41又はフラッシュメモリ20から読み出されてホスト30に送信されるという不具合が発生するのを未然にかつ有効に防止できるようになされている。
【0171】
図22は、このような書込み対象データの移行処理(データ移行処理)のうち、書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移行させる際のマイクロプロセッサ39の処理内容を示すフローチャートである。
【0172】
マイクロプロセッサ39は、キャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に移動させる場合、この図22に示すHDDデータ移行処理を開始し、まず、対象となる書込み対象データを指定したデータ移行要求をディスク制御部32に送信する(SP210)。
【0173】
続いてマイクロプロセッサ39は、かかる書込み対象データを移動するための記憶領域をハードディスクドライブ41上に確保すると共に、このとき確保したハードディスクドライブ41上の記憶領域のアドレスをデータ管理テーブル50上の対応する「HDDアドレス」フィールド50Eに格納する(SP211)。
【0174】
次いでマイクロプロセッサ39は、データ管理テーブル50上の対応する「HDDデータ移行中フラグ」フィールド50F内にHDDデータ移行中フラグを立て(SP212)、この後、キャッシュメモリ制御部35及びディスク制御部32を制御して、書込み対象データをキャッシュメモリ34からハードディスクドライブ41上のステップSP213において確保した記憶領域に移動させる(SP213)。
【0175】
そしてマイクロプロセッサ39は、所定データ量の書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移動させ終えると、フラッシュメモリ20における当該書込み対象データの格納先のアドレスと同じアドレスを格納先とする新たな書込み対象データをキャッシュメモリ34に格納するデータ書込み要求がホスト30から与えられたか否かを判断する(SP214)。
【0176】
マイクロプロセッサ39は、この判断において否定結果を得るとステップSP216に進み、これに対して肯定結果を得ると、データ管理テーブル50上の対応する「HDDデータ移行中フラグ」フィールド50Fに格納されているHDDデータ移行中フラグをクリアする(SP215)。
【0177】
そしてマイクロプロセッサ39は、この後、書込み対象データをフラッシュメモリ34からハードディスクドライブ41に移動し終えたか否かを判断する(SP216)。そしてマイクロプロセッサ39は、この判断において否定結果を得るとステップSP213に戻り、この後ステップSP216において肯定結果を得るまで同様の処理を繰り返す(SP213〜SP216−SP213)。
【0178】
またマイクロプロセッサ39は、やがて書込み対象データをフラッシュメモリ34からハードディスクドライブ41に移動し終えることにより、ステップSP213において肯定結果を得ると、「HDDデータ移行中フラグ」フィールド50FにHDDデータ移行中フラグが立っているか否か(「1」が格納されているか否か)を判断する(SP217)。
【0179】
そしてマイクロプロセッサ39は、この判断において肯定結果を得るとステップSP219に進み、これに対して否定結果を得ると、データ管理テーブル50上の対応する「HDDヒットミス情報」フィールド50Cに格納されたヒットミス情報を「ヒット」に更新すると共に、当該データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されたヒットミス情報を「ミス」に更新する(SP218)。
【0180】
次いで、マイクロプロセッサ39は、データ管理テーブル50上の対応する「HDDデータ移行中フラグ」フィールド50Fに格納されたHDDデータ移行中フラグをクリアし(SP219)、この後、このHDDデータ移行処理を終了する。
【0181】
一方、図23は、書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動させる際のマイクロプロセッサ39の処理内容を示すフローチャートである。
【0182】
マイクロプロセッサ39は、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移動させる場合、この図23に示すFMデータ移行処理を開始し、まず、対象となる書込み対象データを指定したデータ移行要求をフラッシュメモリ制御部33に送信する(SP220)。
【0183】
続いてマイクロプロセッサ39は、そのときデータ書込みモードとして上述の第1〜第4のデータ書込みモードのいずれのモードが設定されているかを判定する(SP221)。そしてマイクロプロセッサ39は、データ書込みモードとして第4のデータ書込みモードが設定されている場合には、ステップSP223に進み、これに対して第1〜第3のデータ書込みモードのいずれかが設定されている場合には、パリティ演算の際に使用する記憶領域をキャッシュメモリ34上に確保する(SP222)。
【0184】
次いでマイクロプロセッサ39は、データ管理テーブル50上の対応する「FMデータ移行中フラグ」フィールド50G内にHDDデータ移行中フラグを立て(SP223)、この後、ディスク制御部32及びフラッシュメモリ制御部33を制御して、書込み対象データをハードディスクドライブ41からフラッシュメモリ20上のホスト30により指定されたブロックに移動させる(SP224)。
【0185】
そしてマイクロプロセッサ39は、所定データ量の書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動させ終えると、フラッシュメモリ20における当該書込み対象データの格納先のアドレスと同じアドレスを格納先とする新たな書込み対象データをハードディスクドライブ41に格納する処理が実行され始めたか否かを判断する(SP225)。
【0186】
マイクロプロセッサ39は、この判断において否定結果を得るとステップSP227に進み、これに対して肯定結果を得ると、データ管理テーブル50上の対応する「FMデータ移行中フラグ」フィールド50Gに格納されているFMデータ移行中フラグをクリアする(SP226)。
【0187】
そしてマイクロプロセッサ39は、この後、書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動し終えたか否かを判断する(SP227)。そしてマイクロプロセッサ39は、この判断において否定結果を得るとステップSP224に戻り、この後ステップSP227において肯定結果を得るまで同様の処理を繰り返す(SP224〜SP227−SP224)。
【0188】
またマイクロプロセッサ39は、やがて書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動し終えることにより、ステップSP227において肯定結果を得ると、「FMデータ移行中フラグ」フィールド50GにFMデータ移行中フラグが立っているか否かを判断する(SP228)。
【0189】
そしてマイクロプロセッサ39は、この判断において肯定結果を得るとステップSP230に進み、これに対して否定結果を得ると、データ管理テーブル50上の対応する「HDDヒットミス情報」フィールド50Cに格納されたヒットミス情報を「ミス」に更新する(SP229)。
【0190】
次いで、マイクロプロセッサ39は、データ管理テーブル50上の対応する「FMデータ移行フラグ」フィールド50Gに格納されたFMデータ移行中フラグをクリアし(SP230)、この後、このFMデータ移行処理を終了する。
【0191】
(1−3−2−6)FM書込みタイミング検出処理
次に、第1〜第4のデータ書込みモードにおいて、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移行するタイミングについて説明する。
【0192】
本実施の形態によるストレージシステム1では、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移動するタイミングが早すぎるとフラッシュメモリ20への書込み回数が増加するという問題がある。一方で、かかるストレージシステム1では、かかるタイミングが遅すぎるとデータ読出し性能が良いというフラッシュメモリ20の特性を有効活用できなかったり、又はキャッシュメモリ34からハードディスクドライブ41に移行されるデータ量がハードディスクドライブ41からフラッシュメモリ20に移行されるデータ量を上回り、ハードディスクドライブ41がオーバーフローするという事態が発生する問題がある。従って、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移動するタイミングは、フラッシュメモリ20のコストパフォーマンス等を考慮したうえで、できる限り早いタイミングで行なうことが好ましい。
【0193】
この場合において、書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動するタイミングを決定する方法としては、かかるハードディスクドライブ41からフラッシュメモリ20への書込み対象データの移動を一定時間ごとに行なう第1の方法(以下、これを第1のタイミング決定方法と呼ぶ)と、各ハードディスクドライブ41に格納された書込み対象データの合計データ量が予め定められた閾値を超えたときに行なう第2の方法(以下、これを第2のタイミング決定方法と呼ぶ)とが考えられる。
【0194】
このうち第1のタイミング決定方法では、フラッシュメモリ20への書込み回数が制限しやすく、かかる書込み対象データの移動を行なうタイミングのばらつきを抑えられる利点があるものの、例えばハードディスクドライブ41の容量が小さく、書込み対象データのデータ量が多い場合に、ハードディスクドライブ41がオーバーフローするおそれがある。このため、この第1のタイミング決定方法を採用する場合には、ハードディスクドライブ41をある程度多めにストレージシステム1に搭載する必要がある。
【0195】
一方、第2のタイミング決定方法では、ハードディスクドライブ41がオーバーフローするおそれがなく、搭載するハードディスクドライブ数を抑えられる利点があるものの、ホスト30からのデータ書込み要求が少ない場合には、書込み対象データが長期間ハードディスクドライブ41に格納されたままの状態となるため、データの読出し性能が低くなる問題がある。
【0196】
そこで、本実施の形態のストレージシステム1では、かかる第1及び第2のタイミング決定方法のメリット及びデメリットを考慮して、前回、書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移行させてからの経過時間と、ハードディスクドライブ41上に存在する書込み対象データのデータ量との両方を、書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動させるタイミングの条件としている。
【0197】
そしてマイクロプロセッサ39は、上述した第1〜第4のデータ書込み処理と並行して、かかる経過時間と、ハードディスクドライブ41内の書込み対象データのデータ量との両方を常時監視し、いずれか一方の条件が満たされたときにハードディスクドライブ41に格納されている書込み対象データをフラッシュメモリ20に移動させるように、ディスク制御部32及びフラッシュメモリ制御部33を制御するようになされている。
【0198】
図24は、このような書込み対象データをハードディスクドライブ41からフラッシュメモリ20に移動させるタイミングを検出する処理(以下、これをFM書込みタイミング検出処理と呼ぶ)に関するマイクロプロセッサ39の具体的な処理内容を示すフローチャートである。
【0199】
マイクロプロセッサ39は、第1〜第4のデータ書込み処理モード時において、書込み対象データをキャッシュメモリ34からハードディスクドライブ41に移動させ、これに応じたジョブ登録及びデータ管理テーブル50の更新を終えると(図10のステップSP23、図15のステップSP102、図18のステップSP145又は図21のステップSP195)、この図24に示すFM書込みタイミング検出処理を開始する。
【0200】
そしてマイクロプロセッサ39は、まず、最後にハードディスクドライブ41内の書込み対象データをフラッシュメモリ20に移行させてから、予め設定された所定時間が経過したか否かを判断する(SP240)。
【0201】
マイクロプロセッサ39は、この判断において否定結果を得ると、ハードディスクドライブ41に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超えたか否かを判断する(SP241)。
【0202】
そしてマイクロプロセッサ39は、この判断において否定結果を得ると、他の処理を実行(SP243)した後にステップSP240に戻り、この後ステップSP240又はステップSP241において肯定結果を得るまで、同様の処理を繰り返す(SP240−SP241−SP243−SP240)。
【0203】
やがてマイクロプロセッサ39は、ステップSP240又はステップSP241の判断において肯定結果を得ると、図14について上述した第1モード時フラッシュメモリ書込み処理と、図17について上述した第2モード時フラッシュメモリ書込み処理とのうち、現在設定されているデータ書込みモードに対応する方を実行することにより、ハードディスクドライブ41に格納された書込み対象データをフラッシュメモリ20に移動させる(SP242)。
【0204】
次いで、マイクロプロセッサ39は、他の処理を実行(SP243)し、この後同様の処理を繰り返す(SP240〜SP243−SP240)。なお、一定時間の経過または書き込みデータのデータ量を契機とする形態について上述したが、この他に、例えば、センサなどによってストレージシステム1の構成部位(ハードディスクドライブ41、各制御部)の障害を検知したタイミングを契機として実行する形態でもよい。
【0205】
(1−3−3)データ読出し処理の詳細
次に、本実施の形態によるストレージシステム1におけるデータ読出し処理の詳細について説明する。
【0206】
本実施の形態のストレージシステム1では、データ読出しモード時、フラッシュメモリ20に格納された読出し対象データを図4(D−1)及び図4(D−2)について上述した第1及び第2のデータ読出し方法により読み出して対応するホスト30に送信する。
【0207】
図25に示すように、第2のデータ読出し方法の場合は、読み出し対象データがフラッシュメモリ20から読み出されて、直接ホスト30に送信される。
【0208】
また、第1のデータ読出し方法の場合は、読出し対象データがキャッシュメモリ34に存在するとき、読出し対象データがキャッシュメモリ34から読み出されてホスト30に送信される。また、読出し対象データがキャッシュメモリ34に存在せず、ハードディスクドライブ41またはフラッシュメモリ20に存在するとき、読出し対象データがハードディスクドライブ41またはフラッシュメモリ20から読み出された後、キャッシュメモリ34を介してホスト30に送信される。
【0209】
以上の第1及び第2のデータ読出し方法は、ストレージシステム1の構成仕様・使用目的・稼動状態、格納されるデータの種類やホスト30からのアクセス特性などに応じて、ストレージシステムの起動時に、ユーザや管理計算機(図示せず)が選択して、指定する。また、ストレージシステム1の稼動中の任意の契機において、マイクロプロセッサ39が自動的に選択する形態であってもよい。例えば、キャッシュメモリ34の読出し性能に比べてフラッシュメモリ20の読出し性能が良い場合や、フラッシュメモリ20に格納されるデータがランダムアクセスデータある場合は、フラッシュメモリ20から直接読み出す第1のデータ読出し方法を設定する。また、例えば、ストレージシステムの接続部36がクロスバススイッチの場合、第2のデータ読出し方法を設定する。
【0210】
なお、選択されたデータ読出し方法の情報は、メモリ38に登録され、各マイクロプロセッサ39はメモリ38にアクセスすることで、データ読出し方法を参照する。
【0211】
図26は、上述のデータ読出しモード時におけるストレージシステム1での処理の流れを示している。
【0212】
すなわち、ストレージシステム1では、ホスト30からデータ読出し要求が与えられると、当該データ読出し要求がチャネル制御部31からマイクロプロセッサ39に転送される。
【0213】
マイクロプロセッサ39は、このデータ読出し要求を受信すると、まず、現在、データ読出し方法として上述の第1及び第2のデータ読出し方法のいずれが設定されているかを判定する(SP250)。
【0214】
そしてマイクロプロセッサ39は、かかるデータ読出し方法として第1のデータ読出し方法が設定されていると判定した場合、メモリ38に格納されたデータ管理テーブル50(図5)における対応する「CMヒットミス情報」フィールド50B及び「HDDヒットミス情報」フィールド50Cを参照して、読出し対象データがキャッシュメモリ34及びハードディスクドライブ41のいずれかに存在するか否かを判定する(SP251)。
【0215】
そしてマイクロプロセッサ39は、かかる読出し対象データがキャッシュメモリ34上に存在すると判定した場合には(キャッシュヒット)、これに応じてキャッシュメモリ制御部35及びチャネル制御部31を制御する。この結果、キャッシュメモリ制御部35は、読出し対象データをキャッシュメモリ34から読み出してチャネル制御部31に送信する一方、チャネル制御部31は、キャッシュメモリ制御部35から与えられるかかる読出し対象データを順次対応するホスト30に転送する(SP252)。
【0216】
一方、マイクロプロセッサ39は、ステップSP251において、かかる読出し対象データがハードディスクドライブ41上に存在すると判定した場合には(HDDヒット)、ディスク制御部32及びキャッシュメモリ制御部35を制御して、この読出し対象データをハードディスクドライブ41からキャッシュメモリ34に移動させる(SP253)。
【0217】
またマイクロプロセッサ39は、メモリ38にアクセスして、データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されたCMヒットミス情報を「ヒット」、対応する「HDDヒットミス情報」フィールド50Cに格納されたHDDヒットミス情報を「ミス」にそれぞれ設定する(SP254)。
【0218】
さらにマイクロプロセッサ39は、ステップSP252と同様にキャッシュメモリ制御部35及びチャネル制御部31を制御する。この結果、キャッシュメモリ34に移動された読出し対象データがチャネル制御部31を介して対応するホスト30に転送される(SP257)。
【0219】
他方、マイクロプロセッサ39は、ステップSP251において、読出し対象データがキャッシュメモリ34上及びハードディスクドライブ41上のいずれにも存在しないと判定した場合には(キャッシュミス及びHDDミス)、フラッシュメモリ制御部33及びキャッシュメモリ制御部35を制御して、当該読出し対象データをフラッシュメモリ20からキャッシュメモリ34に移動させる(SP255)。
【0220】
またマイクロプロセッサ39は、メモリ38にアクセスして、データ管理テーブル50上の対応する「CMヒットミス情報」フィールド50Bに格納されたCMヒットミス情報を「ヒット」、対応する「HDDヒットミス情報」フィールド50Cに格納されたHDDヒットミス情報を「ミス」にそれぞれ設定する(SP256)。
【0221】
そしてストレージシステム1では、この後、キャッシュメモリ34に格納された読出し対象データが読み出されてチャネル制御部31を介して対応するホスト30に転送される(SP257)。
【0222】
これに対して、マイクロプロセッサ39は、ステップSP250において、現在、データ読出し方法として第2のデータ読出し方法が設定されていると判定した場合、フラッシュメモリ制御部33及びチャネル制御部31を制御することにより、フラッシュメモリ20に格納された読出し対象データをチャネル制御部31を介して対応するホスト30に転送させる(SP258)。
【0223】
(1−3―4)本ストレージシステムにおけるデータ保護
次に、ストレージシステム1におけるデータ保護方法について説明する。
【0224】
フラッシュメモリ20は、半導体メモリであるため、メモリモジュール21(図2)内において1つのフラッシュメモリチップ20の故障等が頻発するおそれがある。
【0225】
そこで、本実施の形態においては、図27に示すように、メモリモジュール21ごと又は数十枚のフラッシュメモリチップ20ごとにECC(Error Correcting Code)グループ55を形成し、そのECCグループ55内においてECCによるデータの保護を行なっている。この場合におけるECC計算は、そのECCグループ55と同じフラッシュメモリパッケージ13内のフラッシュメモリ制御部33が行なう。
【0226】
また本実施の形態においては、複数のフラッシュメモリパッケージ13間において、各フラッシュメモリパッケージ13内の対応するフラッシュメモリチップ20によってパリティグループ56を形成し、このパリティグループ56内においてパリティによるデータ保護を行なう。この場合におけるパリティ演算は、上述のようにマイクロプロセッサ39が行なう。
【0227】
(1−4)本実施の形態の効果
以上のように本実施の形態によるストレージシステム1は、フラッシュメモリ20を記憶デバイスとして採用すると共に、その前段に当該フラッシュメモリ20よりもデータ書込み可能回数が多いハードディスクドライブ41をバッファとして配置するようにしているため、フラッシュメモリ20に対するデータの書込み回数を低減させることができ、その分、フラッシュメモリ20を長寿命化させて、フラッシュメモリ20の故障に起因する不具合の発生を格段的に低減させることができる。かくするにつき、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を実現できる。
【0228】
またこのストレージシステム1では、ハードディスクドライブ41の前段にさらにキャッシュメモリ34を配置するようにしているため、ハードディスクドライブ41をバッファとして使用した場合のデータ性能の低下を防止することができる。
【0229】
(2)第2の実施の形態
(2−1)本実施の形態によるストレージシステムの構成
図3との対応部分に同一符号を付した図28は、第2の実施の形態によるストレージシステム60を示す。このストレージシステム60では、各チャネル制御部61、各ディスク制御部62及び各フラッシュメモリ制御部63にそれぞれマイクロプロセッサ61A〜63A及びメモリ61B〜63Bが搭載されている。各メモリ61B〜63Bには、それぞれ各種制御プログラムが格納されており、これら制御プログラムをマイクロプロセッサ61A〜63Aが実行することにより、チャネル制御部61、ディスク制御部72及びフラッシュメモリ制御部63がそれぞれ全体として後述のような各種処理を実行する。
【0230】
また各チャネル制御部61、各ディスク制御部62及び各フラッシュメモリ制御部63は、データラインが接続部36と接続されており、これにより第1の実施の形態のストレージシステム1と同様に、これらチャネル制御部61、ディスク制御部62及びフラッシュメモリ制御部63と、キャッシュメモリ制御部35とが接続部36を介してデータの授受を行い得るようになされている。
【0231】
さらに各チャネル制御部61、各ディスク制御部62及び各フラッシュメモリ制御部63は、共有メモリ制御部64を介して共有メモリ65と接続されている。この共有メモリ65は、主にシステム構成情報及び各種制御プログラムなどの制御情報を記憶するために用いられる。これによりこのストレージシステム60では、チャネル制御部61、ディスク制御部62及びフラッシュメモリ制御部63がそれぞれ共有メモリ制御部64を介して共有メモリ65にアクセスして、当該共有メモリ65に必要な制御情報を読み書きすることができるようになされている。
【0232】
(2−2)ストレージシステムにおけるデータ読書き処理
(2−2−1)データ書込み処理の詳細
次に、かかるストレージシステム60におけるデータ読書き処理の処理内容について説明する。このストレージシステム60は、図10〜図24について上述した第1〜第4のデータ書込みモードと同様の第1〜第4のデータ書込みモードを有する。
【0233】
この場合において、第1の実施の形態では、ストレージシステム1を一元管理する複数のマイクロプロセッサ39(図3)の制御のもとに、チャネル制御部31(図3)、ディスク制御部32(図3)及びフラッシュメモリ制御部33(図3)がキャッシュメモリ34やハードディスクドライブ41及びフラッシュメモリ20へのデータの読み書きを行なっていた。
【0234】
これに対して本実施の形態によるストレージシステム60は、チャネル制御部61、ディスク制御部62及びフラッシュメモリ制御部63内の各マイクロプロセッサ61A〜63Aがそれぞれメモリ61B〜63Bに格納された制御プログラムなどの制御情報に基づいて必要な処理を実行することにより、チャネル制御部61、ディスク制御部62及びフラッシュメモリ制御部63がそれぞれ自律的に順次ジョブを引き継ぎながら、対応するキャッシュメモリ34やハードディスクドライブ41又はフラッシュメモリ20へのデータ読み書きを行う点を特徴としている。
【0235】
以下、このような第2の実施の形態によるストレージシステム60における第1〜第4のデータ書込みモードについて説明する。
【0236】
(2−2−1−1)第1のデータ書込みモード
図29及び図30は、ストレージシステム60における第1のデータ書込みモード時における処理の流れを示す。
【0237】
ストレージシステム60においては、データ書込みモードとして第1のデータ書込みモードが設定されている場合において、ホスト30からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部61が図10のステップSP2〜ステップSP7について上述した処理とほぼ同様の処理を実行することにより、かかる書込み対象データをキャッシュメモリ34に二重書きする(SP260〜SP263)。またチャネル制御部61は、この後図10のステップSP8と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共に、データ管理テーブル50(図5)を更新する(SP264)。
【0238】
一方、ディスク制御部62は、定期的に共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に登録されたことを検出すると、図10のステップSP9〜ステップSP20と同様の処理を実行することにより、かかるキャッシュメモリ34に格納された書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ41に格納する(SP265〜SP275)。またディスク制御部62は、この後図10のステップSP23と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共に、データ管理テーブル50を更新する(SP276)。
【0239】
続いてディスク制御部62は、かかる「ジョブ」が共有メモリ65に登録されたことを検出すると、キャッシュメモリ制御部35を制御しながら、図11のステップSP24〜ステップSP28について上述した処理と同様の処理を実行することにより、かかるハードディスクドライブ41に格納された書込み対象データをキャッシュメモリ34に移動させる(SP277〜SP280)。そしてディスク制御部62は、この後続きの「ジョブ」を実行すべきことをフラッシュメモリ制御部63に依頼する(SP281)。
【0240】
フラッシュメモリ制御部63は、かかる「ジョブ」の依頼を受けると、図11のステップSP31〜ステップSP40について上述した処理とほぼ同様の処理を実行することにより、ステップSP279においてハードディスクドライブに移動された書込み対象データのパリティ(新パリティ)を生成して、これら書込み対象データ及び新パリティをフラッシュメモリ20に移動させる(SP282〜SP288)。またフラッシュメモリ制御部73は、この後図11のステップSP41と同様にデータ管理テーブル50を更新する(SP289)。
【0241】
ここで、図31及び図32は、このような第1のデータ書込みモード時におけるディスク制御部62のマイクロプロセッサ62Aの具体的な処理内容(図31)及びフラッシュメモリ制御部73のマイクロプロセッサ63Aの具体的な処理内容(図32)をそれぞれ示すフローチャートである。なお、第1のデータ書込みモード時におけるチャネル制御部61のマイクロプロセッサ61Aの具体的な処理内容は、図12について上述した第1モード時キャッシュ書込み処理と同様であるため、ここでの説明は省略する。
【0242】
ディスク制御部62のマイクロプロセッサ62Aは、対応する「ジョブ」が共有メモリ65に格納されているのを検出すると、この図31に示す第1モード時ハードディスク書込み処理を開始し、まず、共有メモリ65から上述の「ジョブ」を読み込み(SP290)、この後、データ管理テーブル50を参照して、旧書込み対象データがハードディスクドライブ41に格納されているか否かを判定する(SP291)。
【0243】
そしてマイクロプロセッサ62Aは、旧書込み対象データがハードディスクドライブ41に格納されていると判定した場合には(HDDヒット)、図13について上述した第1モード時ハードディスク書込み処理のステップSP62〜ステップSP64−ステップSP67と同様にして、書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ41に移動させる(SP290〜SP297)。
【0244】
これに対してマイクロプロセッサ62Aは、旧書込み対象データがハードディスクドライブ41に格納されていないと判定した場合には(HDDミス)、図13のステップSP65−ステップSP66−ステップSP67と同様にして、書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ41に移動させる(SP295−ステップSP296−ステップSP297)。
【0245】
またマイクロプロセッサ62Aは、この後、図13のステップSP68と同様に「ジョブ」を共有メモリ65に登録すると共にデータ管理テーブル50を更新する(SP298)。
【0246】
続いて、マイクロプロセッサ62Aは、図24について上述したFM書込みタイミング検出処理と同様にして、最後にハードディスクドライブ41内の書込み対象データをフラッシュメモリ20に移行させてから、予め設定された所定時間が経過し(第1の条件)、又はハードディスクドライブ41に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超える(第2の条件)のを待ち受ける(SP299)。
【0247】
そしてマイクロプロセッサ62Aは、やがて、これら2つの条件のうちのいずれか一方の条件が満たされると、図14について上述した第1モード時フラッシュメモリ書込み処理のステップSP70〜ステップSP72と同様にして、ハードディスクドライブ41に格納されている書込み対象データをキャッシュメモリ34に移動させる(SP300〜SP302)。またマイクロプロセッサ62Aは、これに続く「ジョブ」をフラッシュメモリ制御部63に依頼し(SP303)、この第1モード時のハードディスク書込み処理を終了する。
【0248】
他方、フラッシュメモリ制御部63のマイクロプロセッサ63Aは、ディスク制御部62から上述のジョブ依頼が与えられると、図32に示す第1モード時フラッシュメモリ書込み処理を開始し、この後図14について上述した第1モード時フラッシュメモリ書込み処理のステップSP73〜ステップSP75と同様にして、書込み対象データのパリティ(新パリティ)を生成すると共に、これら書込み対象データ及び新パリティをフラッシュメモリ20に移動する(SP310〜SP312)。またマイクロプロセッサ73Aは、図14のステップSP76と同様にデータ管理テーブル50を更新し(SP313)、この後、この第1モード時ハードディスク書込み処理を終了する。
【0249】
(2−2−1−2)第2のデータ書込みモード
図33は、ストレージシステム60の第2のデータ書込みモード時における処理の流れを示している。
【0250】
ストレージシステム60においては、データ書込みモードとして第2のデータ書込みモードが設定されている場合において、ホスト30からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部61が図15のステップSP81〜ステップSP86について上述した処理とほぼ同様の処理を実行することにより、かかるデータをキャッシュメモリ34に二重書きする(SP320〜SP323)。またチャネル制御部61は、この後図15のステップSP87と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共に、データ管理テーブル50を更新する(SP324)。
【0251】
一方、ディスク制御部62は、定期的に共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に登録されたことを検出すると、必要に応じてフラッシュメモリ制御部63に「ジョブ」を依頼しながら、図15のステップSP88〜ステップSP101について上述した処理とほぼ同様の処理を実行することにより、かかるキャッシュメモリ34に格納された書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ41に格納する(SP325〜SP337)。またこのディスク制御部62は、この後図15のステップSP102と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共に、データ管理テーブル50を更新する(SP338)。
【0252】
さらにディスク制御部62は、この後、最後に書込み対象データ及び新パリティをフラッシュメモリ20に移行してから一定時間が経過し又はハードディスクドライブ41に所定量の書込み対象データ及び新パリティが蓄積すると、ハードディスクドライブ41からの書込み対象データ及び新パリティの読み出しを開始し(SP339)、図15のステップSP104〜ステップSP105と同様の処理を実行することにより、ハードディスクドライブ41から読み出した書込み対象データ及び新パリティを順次フラッシュメモリ20に格納する(SP340〜SP342)。またディスク制御部62は、この後図15のステップSP108と同様にデータ管理テーブル50を更新する(SP343)。
【0253】
図34及び図38は、このような第2のデータ書込みモード時におけるディスク制御部62のマイクロプロセッサ62Aの具体的な処理内容(図34)及びフラッシュメモリ制御部63のマイクロプロセッサ63Aの具体的な処理内容(図35)をそれぞれ示すフローチャートである。なお、第2のデータ書込みモード時におけるチャネル制御部61のマイクロプロセッサ61Aの具体的な処理内容は、図12に示す第1モード時キャッシュ書込み処理と同様であるため、ここでの説明は省略する。
【0254】
ディスク制御部62のマイクロプロセッサ72Aは、図33のステップSP325において対応する「ジョブ」が共有メモリ65に格納されていることを検出すると、図34に示す第2モード時ハードディスク書込み処理を開始し、この「ジョブ」を共有メモリ65から読み出す。
【0255】
そしてマイクロプロセッサ62Aは、対応する旧書込み対象データ及びそのパリティ(旧パリティ)がハードディスクドライブ41に格納されていか否かの判定を行い(SP351)、当該旧書込み対象データ及び旧パリティがハードディスクドライブ41に格納されている場合には、図16について上述した第2モード時ハードディスク書込み処理のステップSP112−ステップSP113−ステップSP116−SP117と同様にして、これら新旧書込み対象データ及び旧パリティに基づいて書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ41に格納する(SP352−SP353−SP356−SP357)。
【0256】
これに対してマイクロプロセッサ62Aは、対応する旧書込み対象データ及び旧パリティがハードディスクドライブ41に格納されていない場合には、これら旧書込み対象データ及び旧パリティをフラッシュメモリ20からハードディスクドライブ41に移行すべきことをフラッシュメモリ制御部63に依頼し(SP354)、この後旧書込み対象データ及び旧パリティをフラッシュメモリ20から受領する(SP355)。
【0257】
そしてマイクロプロセッサ62Aは、この後、このフラッシュメモリ20から読み出された旧書込み対象データ及び旧パリティと、書込み対象データとに基づいて書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをハードディスクドライブ41に格納する(SP356,SP357)。
【0258】
この後、マイクロプロセッサ62Aは、図16のステップSP118と同様に、対応する「ジョブ」を共有メモリ65に登録し、さらにデータ管理テーブル50を更新する(SP358)。
【0259】
次いで、マイクロプロセッサ62Aは、図24について上述したFM書込みタイミング検出処理と同様にして、最後にハードディスクドライブ41内の書込み対象データをフラッシュメモリ20に移行させてから、予め設定された所定時間が経過し(第1の条件)、又はハードディスクドライブ41に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超える(第2の条件)のを待ち受ける(SP359)。
【0260】
そしてマイクロプロセッサ62Aは、やがて、これら2つの条件のうちのいずれか一方の条件が満たされると、図14について上述した第1モード時フラッシュメモリ書込み処理のステップSP70〜ステップSP72と同様にして、ハードディスクドライブ41に格納されている書込み対象データ及び新パリティを書き込むように、フラッシュメモリ制御部63に指示するジョブを共有メモリ65に登録し(SP360)、この第2モード時ハードディスク書込み処理を終了する。
【0261】
一方、フラッシュメモリ制御部63のマイクロプロセッサ63Aは、ディスク制御部63から書込み対象データ及び新パリティが送信されると、図35に示す第2モード時フラッシュメモリ書込み処理を開始し、図17について上述した第1モード時フラッシュメモリ書込み処理のステップSP120〜ステップSP122と同様にして、ディスク制御部62から与えられる書込み対象データ及び新パリティを順次フラッシュメモリ20に格納する(SP361〜SP363)。
【0262】
そしてマイクロプロセッサ63Aは、かかる書込み対象データ及び新パリティをフラッシュメモリ20に格納し終えると、この第2モード時フラッシュメモリ書込み処理を終了する。
【0263】
以上の処理において、ハードディスクドライブ41からフラッシュメモリ20へのデータ移行は、ディスク制御部72からフラッシュメモリ制御部73に対する書き込み対象データおよび新パリティを送信することによって実行する形態であってもよい。また、ディスク制御部72内のマイクロプロセッサ72Aが、フラッシュメモリ20内に対する書き込み対象データおよび新パリティの格納を実行する形態であってもよい。
【0264】
(2−2−1−3)第3のデータ書込みモード
図36及び図37は、ストレージシステム60における第3のデータ書込みモード時における処理の流れを示している。
【0265】
ストレージシステム60においては、データ書込みモードとして第3のデータ書込みモードが設定されている場合において、ホスト30からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部61が図18のステップSP31〜ステップSP134について上述した処理とほぼ同様の処理を実行することにより、かかる書込み対象データをキャッシュメモリ34に二重書きする(SP370〜SP372)。またチャネル制御部61は、この後図18のステップSP137と同様に、対応する「ジョブ」を共有メモリ65に登録すると共にデータ管理テーブル50を更新する(SP374)。
【0266】
一方、ディスク制御部62は、定期的に共有メモリ65を監視しており、対応する「ジョブ」が共有メモリ65に登録されたことを検出すると、図18のステップSP138〜ステップSP142について上述した処理とほぼ同様にして、かかるキャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に二重書きする(SP375〜SP379)。
【0267】
またディスク制御部62は、この後図18のステップSP145と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共にデータ管理テーブル50を更新する(SP380)。
【0268】
さらにディスク制御部62は、この後、最後に書込み対象データ及び新パリティをフラッシュメモリ34に移行してから一定時間が経過し又はハードディスクドライブ41に所定量の書込み対象データ及び新パリティが蓄積すると、ハードディスクドライブ41に格納された書込み対象データをキャッシュメモリ34に移動させ(SP381〜SP383)、この後、フラッシュメモリ制御部63に続きの処理を依頼(ジョブ依頼)する(SP385)。
【0269】
他方、フラッシュメモリ制御部63は、かかるジョブ依頼を受けると、この後図19のステップSP153〜ステップSP160と同様の処理を実行することにより、書込み対象データのパリティ(新パリティ)を生成し、これら書込み対象データ及び新パリティをフラッシュメモリ20に格納する(SP386〜SP392)。またフラッシュメモリ制御部63は、図19のステップSP163と同様にデータ管理テーブル50を更新する(SP393)。
【0270】
ここで図38は、このような第3のデータ書込みモード時におけるディスク制御部62のマイクロプロセッサ62Aの具体的な処理内容を示すフローチャートである。なお、第3のデータ書込みモード時におけるチャネル制御部61のマイクロプロセッサ61Aの具体的な処理内容は、図12について上述した第1モード時キャッシュメモリ書込み処理と同様であり、当該第3のデータ書込みモード時におけるフラッシュメモリ制御部63のマイクロプロセッサ63Aの具体的な処理内容は、図32について上述した第1モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。
【0271】
ディスク制御部62のマイクロプロセッサ62Aは、対応する「ジョブ」が共有メモリ65に格納されているのを検出すると、この図38に示す第3モード時ハードディスク書込み処理を開始し、まず、共有メモリ65から上述の「ジョブ」を読み込み(SP400)、この後、データ管理テーブル50を参照して、旧書込み対象データがハードディスクドライブ41に格納されているか否かを判定する(SP351)。
【0272】
そしてマイクロプロセッサ62Aは、旧書込みデータがハードディスクドライブ41に格納されていると判定した場合には(HDDヒット)、図20について上述した第3モード時ハードディスク書込み処理のステップSP172及びSP173と同様にして、キャッシュメモリ34に格納された書込み対象データをハードディスクドライブ41に二重書きさせる(SP402,SP403)。
【0273】
これに対してマイクロプロセッサ62Aは、旧書込みデータがハードディスクドライブ41に格納されていないと判定した場合には(HDDミス)、図20のステップSP174と同様にして、かかる書込み対象データをハードディスクドライブ41上の旧書込み対象データ上に上書きさせる(SP404)。
【0274】
そしてマイクロプロセッサ62Aは、この後、図20のステップSP175と同様に、対応する「ジョブ」を共有メモリ65に登録すると共にデータ管理テーブル50を更新する(SP405)。
【0275】
この後、かかるマイクロプロセッサ62Aは、図24について上述したFM書込みタイミング検出処理と同様にして、最後にハードディスクドライブ41内の書込み対象データをフラッシュメモリ20に移行させてから、予め設定された所定時間が経過し(第1の条件)、又はハードディスクドライブ41に格納されている書込み対象データのデータ量が、予め設定された所定データ量を超える(第2の条件)のを待ち受ける(SP406)。
【0276】
そしてマイクロプロセッサ62Aは、やがて、これら2つの条件のうちのいずれか一方の条件が満たされると、図14について上述した第1モード時フラッシュメモリ書込み処理のステップSP70〜ステップSP72と同様にして、ハードディスクドライブ41に格納されている書込み対象データをキャッシュメモリ20に移動させ(SP407〜SP409)、この後、続く「ジョブ」の実行をフラッシュメモリ制御部73に依頼した後(SP410)、この第3モード時ハードディスク書込み処理を終了する。
【0277】
(2−2−1−4)第4のデータ書込みモード
図39は、ストレージシステム60の第4のデータ書込みモード時における処理の流れを示している。
【0278】
ストレージシステム60においては、データ書込みモードとして第4のデータ書込みモードが設定されている場合において、ホスト30からデータ書込み要求及び書込み対象データが送信されると、このデータ書込み要求を受信したチャネル制御部61が図21について上述した第4のデータ書込み処理のステップSP181〜ステップSP184について上述した処理とほぼ同様の処理を実行することにより、かかる書込み対象データをキャッシュメモリ34に二重書きする(SP420〜SP422)。またチャネル制御部61は、この後図21のステップSP187と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共にデータ管理テーブル50を更新する(SP424)。
【0279】
またディスク制御部62は、定期的に共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に登録されたことを検出すると、図21のステップSP188〜ステップSP192と同様にして、かかるキャッシュメモリ34に二重書きされたデータをハードディスクドライブ41に二重書きする(SP425〜SP429)。またディスク制御部62は、この後図21のステップSP195と同様にして、対応する「ジョブ」を共有メモリ65に登録すると共にデータ管理テーブル50を更新する(SP434)。
【0280】
さらにフラッシュメモリ制御部63は、定期的に共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に登録されたことを検出すると、図21のステップSP196〜ステップSP198と同様にして、かかるハードディスクドライブ41に二重書きされた書込み対象データをフラッシュメモリ34に二重書きする(SP431〜SP433)。またフラッシュメモリ制御部63は、この後図21のステップSP201と同様にデータ管理テーブル50を更新する(SP434)。
【0281】
なお、この第4のデータ書込みモード時において、チャネル制御部61のマイクロプロセッサ61Aの具体的な処理内容は、図12について上述した第1モード時キャッシュ書込み処理と同様であり、ディスク制御部62のマイクロプロセッサ72Aの具体的な処理内容は、図38について上述した第3モード時ハードディスク書込み処理と同様であり、フラッシュメモリ制御部63のマイクロプロセッサ63Aの具体的な処理内容は、図35について上述した第2モード時フラッシュメモリ書込み処理と同様であるため、ここでの説明は省略する。
【0282】
(2−2−2)データ読出し処理の詳細
次に、本実施の形態によるストレージシステム60におけるデータ読出し処理の詳細について説明する。
【0283】
本実施の形態によるストレージシステム60の場合、第1の実施の形態のストレージシステム1(図3)と同様に、データ読出しモードとして図4(D−1)及び図4(D−2)について上述した第1及び第2のデータ読出し方法を適用したデータ読出しモードを有している。
【0284】
そして本実施の形態によるストレージシステム60の場合も、かかる第1及び第2のデータ読出し方法は、ストレージシステム1の構成仕様・使用目的・稼動状態、格納されるデータの種類やホスト30からのアクセス特性などに応じて、ストレージシステムの起動時に、ユーザや管理計算機(図示せず)が選択して、指定する。また、ストレージシステム1の稼動中の任意の契機において、マイクロプロセッサ39が自動的に選択する形態であってもよい。例えば、キャッシュメモリ34の読出し性能に比べてフラッシュメモリ20の読出し性能が良い場合や、フラッシュメモリ20に格納されるデータがランダムアクセスデータある場合は、フラッシュメモリ20から直接読み出す第1のデータ読出し方法を設定する。また、例えば、ストレージシステムの接続部36がクロスバススイッチの場合、第2のデータ読出し方法を設定する。
【0285】
なお、選択されたデータ読出し方法の情報は、共有メモリ65に登録され、各マイクロプロセッサ39は共有メモリ65にアクセスすることで、データ読出し方法を参照する。
【0286】
図40は、このような本実施の形態によるストレージシステム60のデータ読出しモード時における処理の流れを示すフローチャートである。
【0287】
本ストレージシステム1において、ホスト30からデータ読出し要求が与えられた場合、そのデータ読出し要求を受信したチャネル制御部61のマイクロプロセッサ61Aは、まず、現在、データ読出し方法として上述の第1及び第2のデータ読出し方法のいずれが設定されているかを判定する(SP440)。
【0288】
そして、かかるマイクロプロセッサ61Aは、かかるデータ読出し方法として第1のデータ読出し方法が設定されていると判定した場合、図26について上述した第1のデータ読出し処理のステップSP250と同様にしてヒットミス判定を行なう(SP441)。
【0289】
マイクロプロセッサ61Aは、読出し対象データがキャッシュメモリ34に格納されていると判定した場合には(キャッシュヒット)、これに応じてキャッシュ制御部35を制御することにより、その読出し対象データをキャッシュメモリ34から読み出させてホスト30に送信させる(SP442)。
【0290】
一方、マイクロプロセッサ61Aは、ステップSP441において、読出し対象データがハードディスクドライブ41に格納されていると判定した場合には(HDDヒット)、これに応じた「ジョブ」を共有メモリ65に格納する(SP443)。
【0291】
このときディスク制御部62のマイクロプロセッサ62Aは、共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に格納されたことを検出すると、この「ジョブ」を読み込み(SP444)、この後、読出し対象データをハードディスクドライブ41から読み出してキャッシュメモリ制御部35に転送する(SP445)。かくしてキャッシュメモリ制御部35は、ディスク制御部62から与えられる読出し対象データをキャッシュメモリ34に格納する。
【0292】
さらにディスク制御部62のマイクロプロセッサ62Aは、上述のような読出し対象データのハードディスクドライブ41からキャッシュメモリ34への移行に応じた「ジョブ」を共有メモリ65に登録すると共に、これに応じてデータ管理テーブル50を更新する(SP446)。
【0293】
このときチャネル制御部61のマイクロプロセッサ61Aは、共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に格納されたことを検出すると、この「ジョブ」を共有メモリ65から読み込み(SP447)、読み込んだ「ジョブ」に基づいて、読出し対象データをキャッシュメモリ34から読み出してホスト30に送信する(SP448)。
【0294】
他方、かかるチャネル制御部61のマイクロプロセッサ61Aは、ステップSP441において、読出し対象データがキャッシュメモリ34及びハードディスクドライブ41のいずれにも格納されていないと判定した場合には(キャッシュミス、HDDミス)、これに応じた「ジョブ」を共有メモリ65に登録する(SP449)。
【0295】
このときフラッシュメモリ制御部63のマイクロプロセッサ63Aは、共有メモリ65を監視しており、かかる「ジョブ」が共有メモリ65に格納されたことを検出すると、この「ジョブ」を共有メモリ65から読み込み(SP450)、この「ジョブ」に基づいて、読出し対象データをフラッシュメモリ20から読み出してキャッシュメモリ34に移行させる(SP451)。かくして、この読出し対象データは、この後チャネル制御部61のマイクロプロセッサ61Aの制御のもとに、キャッシュメモリ34から読み出されてホスト30に送信される(SP448)。
【0296】
これに対してチャネル制御部61のマイクロプロセッサ61Aは、ステップSP440において、かかるデータ読出し方法として第2のデータ読出し方法が設定されていると判定した場合には、これに応じた「ジョブ」を共有メモリ65に登録する(SP452)。
【0297】
そしてフラッシュメモリ制御部63のマイクロプロセッサ63Aは、かかる「ジョブ」が共有メモリ65に格納されたことを検出すると、この「ジョブ」を共有メモリ65から読み込み(SP453)、この「ジョブ」に基づいて、読出し対象データをフラッシュメモリ20から読み出して直接チャネル制御部61を介してホスト30に送信する(SP454)。
【0298】
(2−3)本実施の形態の効果
以上の構成によれば、図28のような構成のストレージシステム60についても第1の実施の形態によるストレージシステム1と同様に、フラッシュメモリ20を長寿命化させて、フラッシュメモリ20の故障に起因する不具合の発生を格段的に低減させることができる。かくするにつき、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を実現できる。
【0299】
(3)第3の実施の形態
(3−1)第3の実施の形態によるストレージシステムの構成
図3との対応部分に同一符号を付して示す図41は、第3の実施の形態によるストレージシステム70を示す。このストレージシステム70は、「0系」及び「1系」の2つのコントローラ部71A,71Bと、これらコントローラ部71A,71Bにそれぞれ対応させて設けられたノースブリッジ72、メモリ93及びマイクロプロセッサ74と、キャッシュメモリ34、フラッシュメモリ20及びハードディスクドライブ41とを備えて構成される。
【0300】
各コントローラ部71A,71Bは、それぞれチャネル制御部80、ディスク制御部81、キャッシュメモリ制御部82及びフラッシュメモリ制御部83を備える。これらチャネル制御部80、ディスク制御部81、キャッシュメモリ制御部82及びフラッシュメモリ制御部83は、いずれも図3に示す第1の実施の形態によるストレージシステム1のチャネル制御部31、ディスク制御部32、キャッシュメモリ制御部35及びフラッシュメモリ制御部33と同様の機能を有するものであるので、ここでの説明は省略する。
【0301】
またノースブリッジ72、メモリ73及びマイクロプロセッサ74も、それぞれ第1の実施の形態によるストレージシステム1のノースブリッジ37、メモリ40及びマイクロプロセッサ39と同様の機能を有するものであるので、ここでの説明は省略する。なお図41において、太線は制御ライン、細線はデータラインをそれぞれ示している。
【0302】
従って、このストレージシステム70においては、図10〜図26について上述した第1の実施の形態のストレージシステム1と同様のデータ書込み処理及びデータ読出し処理が行われることとなる。
【0303】
(3−2)本実施の形態の効果
以上の構成によれば、図41のような構成のストレージシステム70についても第1の実施の形態によるストレージシステム1と同様に、フラッシュメモリ20を長寿命化させて、フラッシュメモリ20の故障に起因する不具合の発生を格段的に低減させることができる。かくするにつき、アクセス速度が速く、低消費電力でありながら、信頼性の高いストレージ装置を実現できる。
【0304】
(4)他の実施の形態
なお上述の第1〜第3の実施の形態においては、フラッシュメモリパッケージ13をハードディスクドライブユニット12との互換を考慮せずに作成するようにした場合について述べたが、本発明はこれに限らず、例えば図1との対応部分に同一符号を付した図42に示すように、フラッシュメモリパッケージ90とハードディスクドライブ41との互換性をもたせるように、フラッシュメモリパッケージ90及びハードディスクドライブ41を同じ大きさ及び同じ形状に形成するようにしてもよい。
【0305】
また上述の第1及び第2の実施の形態においては、フラッシュメモリ20よりもデータ書込み可能回数が多いディスク状記憶デバイスとしてハードディスクドライブ41を適用するようにした場合について述べたが、本発明はこれに限らず、この他種々のディスク状記憶デバイスを広く適用することができる。
【0306】
さらに上述の第1及び第3の実施の形態においては、フラッシュメモリ20に対するデータの読み書きを制御する第1の制御部をフラッシュメモリ制御部33及びマイクロプロセッサ39により構成し、第2の実施の形態においては、かかる第1の制御部をフラッシュメモリ制御部61により構成するようにした場合について述べたが、かかる第1の制御部の構成としては、この他種々の構成を広く適用することができる。
【0307】
同様に、上述の第1及び第3の実施の形態においては、ハードディスクドライブ41に対するデータの読み書きを制御する第2の制御部をディスク制御部32及びマイクロプロセッサ39により構成し、第2の実施の形態においては、かかる第2の制御部をディスク制御部62により構成するようにした場合について述べたが、かかる第2の制御部の構成としては、この他種々の構成を広く適用することができる。
【0308】
さらに上述の第1〜第3の実施の形態においては、キャッシュメモリ34に対するデータの読み書きを制御する第3の制御部をキャッシュメモリ制御部35及びマイクロプロセッサ39により構成するようにした場合について述べたが、かかる第3の制御部の構成としては、この他種々の構成を広く適用することができる。
【0309】
なお、上述の第1〜第3の実施の形態においては、図4(A)に示すように、ホスト30から送信された書込み対象データは、キャッシュメモリ34に格納された後、ハードディスクドライブ41を経由して、所定のタイミングでフラッシュメモリ20に移行される。ここで、キャッシュメモリ34の容量が大きい場合や、データの種類やアクセス特性によっては、キャッシュメモリ34からフラッシュメモリ20にデータを移行する形態であってもよい。また、上述した実施の形態におけるストレージシステム1、ストレージシステム60、またはストレージシステム70の構成において、データや制御情報の送受信は、実現可能な全ての構成部位間で実行することができる。
【産業上の利用可能性】
【0310】
本発明は、各種用途に用いられる種々のストレージシステムに広く適用することができる。
【図面の簡単な説明】
【0311】
【図1】第1〜第5の実施の形態によるストレージシステムの外観構成を略線的に示す斜視図である。
【図2】フラッシュメモリパッケージの構成を略線的に示す斜視図である。
【図3】第1の実施の形態によるストレージシステムの内部構成を示すブロック図である。
【図4】(A)‐(D−2)は、データ読書き処理の概要説明に供する概念図である。
【図5】データ管理テーブルを示す図表である。
【図6】第1の実施の形態の第1のデータ書込みモードの概要説明に供する概念図である。
【図7】第1の実施の形態の第2のデータ書込みモードの概要説明に供する概念図である。
【図8】第1の実施の形態の第3のデータ書込みモードの概要説明に供する概念図である。
【図9】第1の実施の形態の第4のデータ書込みモードの概要説明に供する概念図である。
【図10】第1の実施の形態の第1のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図11】第1の実施の形態の第1のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図12】第1の実施の形態の第1のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図13】第1の実施の形態の第1のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図14】第1の実施の形態の第1のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図15】第1の実施の形態の第2のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図16】第1の実施の形態の第2のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図17】第1の実施の形態の第2のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図18】第1の実施の形態の第3のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図19】第1の実施の形態の第3のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図20】第1の実施の形態の第3のデータ書込みモード時におけるマイクロプロセッサの処理の説明に供するフローチャートである。
【図21】第1の実施の形態の第4のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図22】HDDデータ移行処理の説明に供するフローチャートである。
【図23】FMデータ移行処理の説明に供するフローチャートである。
【図24】FM書込みタイミング検出処理の説明に供するフローチャートである。
【図25】第1の実施の形態におけるデータ読出しモード時の読出しデータの流れを示す概念図である。
【図26】第1の実施の形態のデータ読出しモード時におけるストレージシステムでの処理の流れを示すフローチャートである。
【図27】ストレージシステムにおけるデータ保護の説明に供する概念図である。
【図28】第2の実施の形態によるストレージシステムの内部構成を示すブロック図である。
【図29】第2の実施の形態の第1のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図30】第2の実施の形態の第1のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図31】第2の実施の形態の第1のデータ書込みモード時におけるディスク制御部のマイクロプロセッサの処理内容の説明に供するフローチャートである。
【図32】第2の実施の形態の第1のデータ書込みモード時におけるフラッシュメモリ制御部の処理内容の説明に供するフローチャートである。
【図33】第2の実施の形態の第2のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図34】第2の実施の形態の第2のデータ書込みモード時におけるディスク制御部の処理内容の説明に供するフローチャートである。
【図35】第2の実施の形態の第2のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図36】第2の実施の形態の第3のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図37】第2の実施の形態の第3のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図38】第2の実施の形態の第3のデータ書込みモード時におけるディスク制御部の処理内容の説明に供するフローチャートである。
【図39】第2の実施の形態の第4のデータ書込みモード時における処理の流れの説明に供するラダーチャートである。
【図40】第2の実施の形態のデータ読出しモード時における処理の流れを示すフローチャートである。
【図41】第3の実施の形態によるストレージシステムの内部構成を示すブロック図である。
【図42】他の実施の形態によるストレージシステムの外観構成を略線的に示す斜視図である。
【符号の説明】
【0312】
1,60,70……ストレージシステム、12……ハードディスクドライブユニット、13……フラッシュメモリパッケージ、20……フラッシュメモリ(フラッシュメモリチップ)、21……フラッシュメモリモジュール、23……フラッシュメモリ制御LSI、30……ホスト、31,61,80……チャネル制御部、32,62,81……ディスク制御部、33,63,83……フラッシュメモリ制御部、34……キャッシュメモリ、35,82……キャッシュメモリ制御部、36……接続部、38……メモリ、39,61A〜63A,74……マイクロプロセッサ、40,61B〜63B,73……メモリ、41……ハードディスク、50……データ管理テーブル、55……ECCグループ、56……パリティグループ。

【特許請求の範囲】
【請求項1】
上位装置に接続されるストレージ装置であって、
前記上位装置から送受信されるデータを格納する不揮発メモリと、
前記上位装置から送受信されるデータを格納するディスク装置と、
前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリと、
前記不揮発メモリに対する前記データの読み書きを制御する第1の制御部と、
前記ディスク装置に対する前記データの読み書きを制御する第2の制御部と、
前記キャッシュメモリに対する前記データの読み書きを制御する第3の制御部と
を備え、
前記第1、第2及び第3の制御部は、相互接続網を介して接続され、
前記第3の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第2の制御部に送信し、
前記第2の制御部は、前記第3の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第1の制御部に送信し、
前記第1の制御部は、前記第2の制御部から送信される前記データを前記不揮発メモリに格納する
ことを特徴とするストレージ装置。
【請求項2】
前記上位装置との間のデータの送受信を制御する第4の制御部を備え、
前記第4の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリに格納されているときには、前記第3の制御部により当該データを前記キャッシュメモリから読み出させ、読み出された当該データを前記上位装置に送信する
ことを特徴とする請求項1に記載のストレージ装置。
【請求項3】
前記上位装置との間のデータの送受信を制御する第4の制御部を備え、
前記第4の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記ディスク装置に格納されているときには、前記第2の制御部により当該データを前記ディスク装置から読み出させ、読み出された当該データを前記キャッシュメモリを介して前記上位装置に送信する
ことを特徴とする請求項1に記載のストレージ装置。
【請求項4】
前記上位装置との間のデータの送受信を制御する第4の制御部を備え、
前記第4の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれにも格納されていないときには、前記第1の制御部により当該データを前記不揮発メモリから読み出させ、読み出された当該データを前記キャッシュメモリを介して又は直接的に前記上位装置に送信する
ことを特徴とする請求項1に記載のストレージ装置。
【請求項5】
前記所定の条件は、
最後に前記ディスク装置に格納された前記データを前記不揮発メモリに移動させてから一定時間が経過したこと、及び前記ディスク装置に格納されている前記データのデータ量が所定量を超過したことの少なくとも一方である
ことを特徴とする請求項1に記載のストレージ装置。
【請求項6】
前記第2及び又は第1の制御部は、
前記データを、二重書き又はパリティにより冗長化して、対応する前記ディスク装置又は前記不揮発メモリに格納する
ことを特徴とする請求項1に記載のストレージ装置。
【請求項7】
上位装置に接続されるストレージ装置を制御する制御装置であって、
前記上位装置から送受信されるデータを格納する不揮発メモリに対する前記データの読み書きを制御する第1の制御部と、
前記上位装置から送受信されるデータを格納するディスク装置に対する前記データの読み書きを制御する第2の制御部と、
前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリに対する前記データの読み書きを制御する第3の制御部と
を備え、
前記第1、第2及び第3の制御部は、相互接続網を介して接続され、
前記第3の制御部は、前記上位装置から送信される前記データを前記キャッシュメモリに格納し、所定の契機で前記キャッシュメモリから読み出して前記第2の制御部に送信し、
前記第2の制御部は、前記第3の制御部から送信される前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出して前記第1の制御部に送信し、
前記第1の制御部は、前記第2の制御部から送信される前記データを前記不揮発メモリに格納する
ことを特徴とする制御装置。
【請求項8】
前記上位装置との間のデータの送受信を制御する第4の制御部を備え、
前記第4の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリに格納されているときには、前記第3の制御部により当該データを前記キャッシュメモリから読み出させ、読み出された当該データを前記上位装置に送信する
ことを特徴とする請求項7に記載の制御装置。
【請求項9】
前記上位装置との間のデータの送受信を制御する第4の制御部を備え、
前記第4の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記ディスク装置に格納されているときには、前記第2の制御部により当該データを前記ディスク装置から読み出させ、読み出された当該データを前記キャッシュメモリを介して前記上位装置に送信する
ことを特徴とする請求項7に記載の制御装置。
【請求項10】
前記上位装置との間のデータの送受信を制御する第4の制御部を備え、
前記第4の制御部は、
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれにも格納されていないときには、前記第1の制御部により当該データを前記不揮発メモリから読み出させ、読み出された当該データを前記キャッシュメモリを介して又は直接的に前記上位装置に送信する
ことを特徴とする請求項7に記載の制御装置。
【請求項11】
前記所定の条件は、
最後に前記ディスク装置に格納された前記データを前記不揮発メモリに移動させてから一定時間が経過したこと、及び前記ディスク装置に格納されている前記データのデータ量が所定量を超過したことの少なくとも一方である
ことを特徴とする請求項7に記載の制御装置。
【請求項12】
前記第2及び又は第1の制御部は、
前記データを、二重書き又はパリティにより冗長化して、対応する前記ディスク装置又は前記不揮発メモリに格納する
ことを特徴とする請求項7に記載の制御装置。
【請求項13】
上位装置に接続されるストレージ装置を制御する制御方法であって、
前記ストレージ装置は、
前記上位装置から送受信されるデータを格納する不揮発メモリと、
前記上位装置から送受信されるデータを格納するディスク装置と、
前記上位装置から送受信されるデータを一時的に格納するキャッシュメモリと
を有し、
前記上位装置から送信される前記データを前記キャッシュメモリに格納し、当該データを所定の契機で前記キャッシュメモリから読み出す第1のステップと、
前記キャッシュメモリから読み出された前記データを前記ディスク装置に格納し、所定の条件を満たす場合、該データを前記ディスク装置から読み出す第2のステップと、
前記ディスク装置から読み出された前記データを前記不揮発メモリに格納する第3のステップと
を備えることを特徴とする制御方法。
【請求項14】
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリに格納されているときには、当該データを前記キャッシュメモリから読み出し、読み出した当該データを前記上位装置に送信する第4のステップを備える
ことを特徴とする請求項13に記載の制御方法。
【請求項15】
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記ディスク装置に格納されているときには、当該データを前記ディスク装置から読み出し、読み出した当該データを前記キャッシュメモリを介して前記上位装置に送信する第4のステップを備える
ことを特徴とする請求項13に記載の制御方法。
【請求項16】
前記上位装置から前記データの読出し要求が与えられたときに、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれかに記憶されているか否かを判定し、当該データが前記キャッシュメモリ及び前記ディスク装置のいずれにも格納されていないときには、前記第1の制御部により当該データを前記不揮発メモリから読み出させ、読み出された当該データを前記キャッシュメモリを介して又は直接的に前記上位装置に送信する第4のステップを備える
ことを特徴とする請求項13に記載の制御方法。
【請求項17】
前記所定の条件は、
最後に前記ディスク装置に格納された前記データを前記不揮発メモリに移動させてから一定時間が経過したこと、及び前記ディスク装置に格納されている前記データのデータ量が所定量を超過したことの少なくとも一方である
ことを特徴とする請求項13に記載の制御方法。
【請求項18】
前記第2及び又は第1のステップでは、
前記データを、二重書き又はパリティにより冗長化して、対応する前記ディスク装置又は前記不揮発メモリに格納する
ことを特徴とする請求項13に記載の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate


【公開番号】特開2008−97225(P2008−97225A)
【公開日】平成20年4月24日(2008.4.24)
【国際特許分類】
【出願番号】特願2006−276917(P2006−276917)
【出願日】平成18年10月10日(2006.10.10)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】