(57)【特許請求の範囲】
【請求項１】
データが記憶される個別記憶装置を複数個収容し、外部装置と接続されて、該外部装置からの書込みデータを受信して該個別記憶装置に書き込むとともに、該外部装置からのデータ読出し指示を受信し該個別記憶装置からデータを読み出して該外部装置に送信するストレージシステムにおいて、
当該ストレージシステムは、データ書込み速度の異なる複数種類の個別記憶装置を収容したものであり、
前記個別記憶装置への書込みデータを該個別記憶装置に書き込むまでの間、格納しておくキャッシュメモリと、
外部装置から受信した前記個別記憶装置への書込みデータを前記キャッシュメモリに格納する格納部と、
前記キャッシュメモリから前記個別記憶装置への書込みデータを取り出して該個別記憶装置に書き込む書込部とを有し、
前記格納部が、外部装置から受信した前記個別記憶装置への書込みデータを、前記キャッシュメモリの、前記個別記憶装置の種類毎に区分された複数の格納領域のうちの、該書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納し、
前記書込部が、前記キャッシュメモリ上の前記複数の格納領域の中から順次選択された格納領域から前記書込みデータを順次取り出して前記個別記憶装置に書き込むものであって、さらに
前記書込部は、前記キャッシュメモリから前記書込みデータを取り出すにあたって今回取り出そうとしている書込みデータの書込先の前記個別記憶装置がビジー状態にあるときには、当該書込みデータが格納されている格納領域に格納されている書込みデータの中での今回取り出そうとしていた書込みデータの読出優先度を下げて、当該格納領域に格納されている書込みデータの中で読出優先度が次に高い書込みデータを読み出すことを特徴とするストレージシステム。
【請求項２】
データが記憶される個別記憶装置を複数個収容し、外部装置と接続されて、該外部装置からの書込みデータを受信して該個別記憶装置に書き込むとともに、該外部装置からのデータ読出し指示を受信し該個別記憶装置からデータを読み出して該外部装置に送信するストレージシステムにおいて、
当該ストレージシステムは、データ書込み速度の異なる複数種類の個別記憶装置を収容したものであり、
前記個別記憶装置への書込みデータを該個別記憶装置に書き込むまでの間、格納しておくキャッシュメモリと、
外部装置から受信した前記個別記憶装置への書込みデータを前記キャッシュメモリに格納する格納部と、
前記キャッシュメモリから前記個別記憶装置への書込みデータを取り出して該個別記憶装置に書き込む書込部とを有し、
前記格納部が、外部装置から受信した前記個別記憶装置への書込みデータを、前記キャッシュメモリの、前記個別記憶装置の種類毎に区分された複数の格納領域のうちの、該書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納し、
前記書込部が、前記キャッシュメモリ上の前記複数の格納領域の中から順次選択された格納領域から前記書込みデータを順次取り出して前記個別記憶装置に書き込むものであって、さらに
前記個別記憶装置が並ぶエンクロージャを複数有し、前記キャッシュメモリと前記個別記憶装置との間の通信量が該エンクロージャごとに制限を受けるものであって、
前記書込部は、前記キャッシュメモリから前記書込みデータを取り出すにあたり、今回取り出そうとしている第１の書込データの書込先の前記個別記憶装置が並ぶエンクロージャと次回取り出す予定の第２の書込データの書込先の前記個別記憶装置が並ぶエンクロージャとの異同を調べ、双方のエンクロージャが同一であった場合は、次回の取出し時に、前記第２の書込みデータの取出しに代えて、該第２の書込データと同じ格納領域に格納されている書込みデータのうちの該第２の書込みデータの次に読出優先度が高い第３の書込みデータを取り出すことを特徴とするストレージシステム。
【請求項３】
データが記憶される個別記憶装置を複数個収容し、外部装置と接続されて、該外部装置からの書込みデータを受信して該個別記憶装置に書き込むとともに、該外部装置からのデータ読出し指示を受信し該個別記憶装置からデータを読み出して該外部装置に送信するストレージシステムにおいて、
当該ストレージシステムは、データ書込み速度の異なる複数種類の個別記憶装置を収容したものであり、
前記個別記憶装置への書込みデータを該個別記憶装置に書き込むまでの間、格納しておくキャッシュメモリと、
外部装置から受信した前記個別記憶装置への書込みデータを前記キャッシュメモリに格納する格納部と、
前記キャッシュメモリから前記個別記憶装置への書込みデータを取り出して該個別記憶装置に書き込む書込部とを有し、
前記格納部が、外部装置から受信した前記個別記憶装置への書込みデータを、前記キャッシュメモリの、前記個別記憶装置の種類毎に区分された複数の格納領域のうちの、該書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納し、
前記書込部が、前記キャッシュメモリ上の前記複数の格納領域の中から順次選択された格納領域から前記書込みデータを順次取り出して前記個別記憶装置に書き込むものであって、さらに
前記格納部は、前記通信部で受信した書き込みデータを前記キャッシュメモリに格納するにあたり、該書込みデータの書込先の前記個別記憶装置の種類に対応する格納領域が満杯であって、該種類よりも書込み速度が速い種類に対応する格納領域が存在しかつ該速い種類に対応する格納領域に空き領域が存在する場合に、該書込みデータを、該速い種類に対応する格納領域に格納することを特徴とするストレージシステム。
【請求項４】
データが記憶される個別記憶装置を複数個収容し、外部装置と接続されて、該外部装置からの書込みデータを受信して該個別記憶装置に書き込むとともに、該外部装置からのデータ読出し指示を受信し該個別記憶装置からデータを読み出して該外部装置に送信するストレージシステムにおいて、
当該ストレージシステムは、データ書込み速度の異なる複数種類の個別記憶装置を収容したものであり、
前記個別記憶装置への書込みデータを該個別記憶装置に書き込むまでの間、格納しておくキャッシュメモリと、
外部装置から受信した前記個別記憶装置への書込みデータを前記キャッシュメモリに格納する格納部と、
前記キャッシュメモリから前記個別記憶装置への書込みデータを取り出して該個別記憶装置に書き込む書込部とを有し、
前記格納部が、外部装置から受信した前記個別記憶装置への書込みデータを、前記キャッシュメモリの、前記個別記憶装置の種類毎に区分された複数の格納領域のうちの、該書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納し、
前記書込部が、前記キャッシュメモリ上の前記複数の格納領域の中から順次選択された格納領域から前記書込みデータを順次取り出して前記個別記憶装置に書き込むものであって、さらに
前記書込部は、前記キャッシュメモリの、満杯状態にある格納領域から書込みデータを読み出した際、該満杯状態にあった第１の格納領域に対応する種類の前記個別記憶装置に書き込まれる書込みデータが該第１の格納領域以外の第２の格納領域に記憶されている場合に、該第２の格納領域に記憶されている該第１の格納領域に対応する種類の前記個別記憶装置に書き込まれる書込みデータを該第１の格納領域に移動させることを特徴とするストレージシステム。
【請求項５】
データが記憶される個別記憶装置を複数個収容し、外部装置と接続されて、該外部装置からの書込みデータを受信して該個別記憶装置に書き込むとともに、該外部装置からのデータ読出し指示を受信し該個別記憶装置からデータを読み出して該外部装置に送信するストレージシステムにおける、受信した書込みデータの該個別記憶装置へのデータ書込み方法であって、
当該ストレージシステムは、データの書込み速度の異なる複数種類の個別記憶装置を収容したものであり、前記個別記憶装置への書込みデータを該個別記憶装置に書き込むまでの間、格納しておくキャッシュメモリを有し、
外部装置から受信した前記個別記憶装置への書込みデータを前記キャッシュメモリに格納するにあたり、該書込みデータを、該キャッシュメモリの、前記個別記憶装置の種類毎に区分された複数の格納領域のうちの、該書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納し、
前記キャッシュメモリから前記個別記憶装置への書込みデータを取り出して該個別記憶装置に書き込むにあたり、前記キャッシュメモリ上の前記複数の格納領域の中から順次選択された格納領域から前記書込みデータを順次取り出し、該書込みデータの取出しにあたって今回取り出そうとしている書込みデータの書込先の前記個別記憶装置がビジー状態にあるときには、当該書込みデータが格納されている格納領域に格納されている書込みデータの中での今回取り出そうとしていた書込みデータの読出優先度を下げて、当該格納領域に格納されている書込みデータの中で読出優先度が次に高い書込みデータを読み出して前記個別記憶装置に書き込むことを特徴とするデータ書込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、ハードディスクドライブ（ＨＤＤ）等の記憶装置を複数個収容したストレージシステム、およびストレージシステムにおける、記憶装置へのデータ書込み方法に関する。
【背景技術】
【０００２】
ＲＡＩＤ装置など、複数の記憶装置が収容されたストレージシステムが知られている。このＲＡＩＤ装置は、ホスト等の外部装置から受け取った書込みデータを一時的に格納しておくキャッシュメモリを有し、外部装置から書込みデータを受け取ると一旦キャッシュメモリに格納し、キャッシュメモリからＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式やＬＲＵ（Ｌｅａｓｔ  Ｒｅｓｅｎｔｌｙ  Ｕｓｅｄ）方式等の方式に従ってその書込みデータを取り出して、収容されている記憶装置に記憶する。
【０００３】
近年、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＡＴＡ（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）といった様々な種類の記憶装置が登場し、ＲＡＩＤ装置にそれら様々な種類の記憶装置が混在して収容される場合が生じてきている。
【０００４】
それらの記憶装置は、その種類によってデータ書込み速度が異なる。例えばＳＳＤは最も高速なデータ書込み速度を有し、ＨＤＤはその次、ＳＡＴＡは書込み速度が最も遅い。
【０００５】
ＲＡＩＤ装置に外部装置から多数の書込みデータが送られてきたとき、キャッシュメモリには、書込み速度が遅い種類の記憶装置に書き込まれるべき書込みデータが滞りがちである。このためキャッシュメモリが書込み速度の遅い種類の記憶装置に書き込むべきデータで溢れ、その状態で書込み速度の速いＳＳＤに書き込むべきデータが送られてきても、ＳＳＤへの書込みがなかなか開始されずに長時間待たされる。その結果、ＳＳＤ本来の高速書込みの特性が発揮されず、ＳＳＤの性能の低下(いわゆる「沈み込み」)が発生することがある。
【０００６】
従来、性能差のある記憶装置に対する入出力応答時間を速めるために、キャッシュメモリの一部領域を記憶装置の応答時間に応じて割り当てることが提案されている。
【０００７】
しかしながら、キャッシュメモリの領域を記憶装置の応答時間に応じて分けたとして、それらの複数領域に格納されている複数の書込みデータをどの順で取り出してディスクに書き込むかが問題となる。応答時間が短い高速アクセス可能な記憶装置への書込みを優先すると、応答時間が長い低速アクセスの記憶装置への書込みが極端に遅れてしまう結果となりかねない。
【０００８】
また、この提案のほか、ＨＤＤと半導体ディスクの双方を備えて同じデータを双方に書き込んでおき、読出し指示を受けてその読出し指示に応じたデータが半導体ディスクに存在するときは半導体ディスクからそのデータを読み出すことで高速化を狙った提案や、ＨＤＤに障害が発生した時のシステム低下を抑える提案などが存在する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−１４０１６９号公報
【特許文献２】特開平１０−４０１７０号公報
【特許文献３】特開２００１−４３０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本件開示のストレージシステムおよび書込み方法の課題は、データ書込速度の速い記憶装置からデータ書込速度の遅い記憶装置までの全体のパフォーマンスを向上させることにある。
【課題を解決するための手段】
【００１１】
本件開示のストレージシステムは、データが記憶される個別記憶装置であって、データ書込み速度の異なる複数種類の個別記憶装置を収容した装置である。そしてこのストレージシステムは、外部装置と接続されて、外部装置からの書込みデータを受信して個別記憶装置に書き込むとともに、外部装置からのデータ読出し指示を受信し個別記憶装置からデータを読み出して外部装置に送信する。
【００１２】
ここで、このストレージシステムは、キャッシュメモリと、格納部と、書込部とを有する。
【００１３】
キャッシュメモリは、個別記憶装置への書込みデータを個別記憶装置に書き込むまでの間、格納しておく。
【００１４】
また、格納部は、外部装置から受信した個別記憶装置への書込みデータをキャッシュメモリに格納する。
【００１５】
また、書込部は、キャッシュメモリから個別記憶装置への書込みデータを取り出して個別記憶装置に書き込む。
【００１６】
ここで、上記格納部は、外部装置から受信した個別記憶装置への書込みデータを、キャッシュメモリの、個別記憶装置の種類毎に区分された複数の格納領域のうちの、その書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納する。
【００１７】
また、上記書込部は、キャッシュメモリ上の複数の格納領域の中から順次選択された格納領域から書込みデータを順次取り出して個別記憶装置に書き込む。
【００１８】
また、本件開示のデータ書込み方法は、本件のストレージシステムで実行されるデータ書込み方法である。すなわち、外部装置から受信した個別記憶装置への書込みデータをキャッシュメモリに格納する。その際は、その書込みデータを、キャッシュメモリの、個別記憶装置の種類毎に区分された複数の格納領域のうちの、その書込みデータの書込先の個別記憶装置の種類に応じた格納領域に格納する。また、キャッシュメモリから個別記憶装置への書込みデータを取り出して個別記憶装置に書き込む。その際には、キャッシュメモリ上の複数の格納領域の中から順次選択された格納領域から書込みデータを順次取り出して個別記憶装置に書き込む。
【発明の効果】
【００１９】
本件開示のストレージシステムおよびデータ書込み方法によれば、キャッシュメモリ上の複数の格納領域の中から順次選択された格納領域から書込みデータが順次取り出されて個別記憶装置に書き込まれる。このため、データ書込み速度が速い個別記憶装置の性能の低下（沈み込み）が抑えられ、また、データ書込み速度が遅い個別記憶装置への書込みの大幅な遅れも抑えられる。
【図面の簡単な説明】
【００２０】
【図１】本件のストレージシステムの一実施形態としてのＲＡＩＤ装置の概要図である。
【図２】図１に示すＲＡＩＤ装置を構成するコントローラのブロック図である。
【図３】流量管理テーブルの概念図である。
【図４】キャッシュメモリおよびフラグ記憶部を示した図である。
【図５】ホストから新たに送信されてきた書込みデータ一覧を示す図である。
【図６】図４に示す状態にあるキャッシュメモリに図５に示すデータが格納された状態のキャッシュメモリを示す図である。
【図７】以上のルールに従う格納部の処理を示すフローチャートである。
【図８】書込部の処理を示すフローチャートである。
【図９】キャッシュメモリと各エンクロージャに並んだディスクとの間のデータの流れを示している図である。
【図１０】図６に示す状態にあるキャッシュメモリからの書込みデータの取出し順序示す図である。
【発明を実施するための形態】
【００２１】
以下、本件の実施形態を説明する。
【００２２】
図１は、本件のストレージシステムの一実施形態としてのＲＡＩＤ装置の概要図である。
【００２３】
このＲＡＩＤ装置１０は、コントローラ２０と複数のエンクロージャ３０を有する。エンクロージャ３０は、棚の形状を有し、各エンクロージャ３０には個別記憶装置（ここでは、ディスク３１と称する）が搭載される。各エンクロージャ３０には、そのエンクロージャ３０に搭載されるディスク３１が接続される複数のコネクタが並んでいる。また各エンクロージャ３０には、そのエンクロージャ３０に搭載されたディスク３１を制御するための制御回路が配置されている。各エンクロージャ３０には、そのエンクロージャ３０に配列された複数のコネクタのそれぞれに複数のディスク３１のそれぞれを接続することにより、１つのエンクロージャ３０あたり複数のディスク３１を搭載することができる。
【００２４】
ここでは、各エンクロージャ３０には、それぞれ複数のディスク３１がそれぞれコネクタに接続された状態で並んでいる。コントローラ２０と、各エンクロージャ３０との間は、配線４０で接続されている。この配線４０は、エンクロージャ３０のコネクタに接続されたディスク３１とコントローラ２０との間の通信を担っている。ただし、この配線４０は、各エンクロージャ３０ごとに通信容量の上限に制限がある。
【００２５】
このＲＡＩＤ装置１０は、外部装置であるホスト９０との間が通信線９１で接続されている。このＲＡＩＤ装置のコントローラ２０は、ディスク３１に書き込むべき書込みデータをホスト９０から受け取ってディスク３１に書き込んだり、ホスト９０からの指示に応じてディスク３１からデータを読み出してホスト９０に送る。
【００２６】
このＲＡＩＤ装置１０には、データの書込み速度が異なる複数種類のディスク３１が収容されている。本実施形態のＲＡＩＤ装置１００は、具体的にはＳＳＤ、ＨＤＤ、ＳＡＴＡの３種類のディスクが収容されている。尚、ＳＡＴＡはＨＤＤの一形態であるが、アクセス速度が異なるため、ここではあえて通常のＨＤＤ（例えば、ＳＡＳ接続やＦＣ接続のＨＤＤ）とは種類が異なるものとして説明している。それら３種類のディスク３１の中でＳＳＤは、データ書込み速度が最も速く、ＳＡＴＡが最も遅い。
【００２７】
図２は、図１に示すＲＡＩＤ装置を構成するコントローラのブロック図である。
【００２８】
このコントローラ２０は、通信部２１、格納部２２、キャッシュメモリ２３、書込部２４、および制御・監視部２５を有する。
【００２９】
キャッシュメモリ２３は、ホスト９０から受け取ったディスク３１（図１参照）に書き込むべき書込みデータをディスク３１に書き込むまでの間、格納しておくメモリである。このキャッシュメモリ２３は、書込みデータの書込み先のディスク３１の種類ごとに格納領域が分かれている。
【００３０】
通信部２１は、ホスト９０との間の通信を担っている。
【００３１】
格納部２２は、通信部２１で受信したディスク３１（図１参照）への書込みデータをキャッシュメモリ２３に格納する。この格納部２２は、通信部２１で受信したディスク３１への書込みデータをキャッシュメモリ２３のディスク３１の種類ごとに区分された複数の格納領域のうちの、その書込みデータの書込み先のディスク３１の種類に応じた格納領域に格納する。
【００３２】
書込部２４は、キャッシュメモリ２３から書込みデータを取り出してディスク３１に書き込む。この書込部２４は、キャッシュメモリ２３から書込みデータを取り出すにあたっては、キャッシュメモリ２３上の複数の格納領域の中から選択された循環的に異なる格納領域から書込みデータを順次取り出してディスク３１に書き込む。
【００３３】
制御・監視部２５は、このコントローラ２０の制御全般やデータの流れの監視等を行っている。この制御・監視部２５は、各エンクロージャ３０に収容されている各ディスク３１のＩＤや、各ディスク３１の種類の情報を持っている。そしてこの制御・監視部２５は、通信部２１で受信した書込みデータの書込先のディスク３１を認識して格納部２２や書込部２４に格納先や書込先の指示を与える。また、この制御・監視部２５では、各ディスク３１ごとのデータの流量を常に監視する。そして各ディスク３１ごとの流量を表わす流量管理テーブル２５１を更新する。
【００３４】
図３は、流量管理テーブルの概念図である。
【００３５】
ここには、ある１つのエンクロージャ３０に＃０〜＃１５からなる１６個のディスクが並んでおり、＃０〜＃１５の各ディスクの流量が、それぞれ１０％、５０％、６０％、１００％、・・・・・・１０％であることが記録されている。ここで、＃３のディスクの「１００％」は、その＃３のディスクが、その＃３のディスクへの新たなアクセスの開始が不能なビジー状態にあることを表わしている。この流量管理テーブルは、各エンクロージャ３０ごとに作成され、制御・監視部２５による時々刻々変化する流量の監視結果が反映されるように定期的に更新されている。この流量管理テーブル２５１は本件における状態管理テーブルの一例に相当し、制御・監視部２５は本件における更新部一例に相当する。
【００３６】
図２に戻って説明を続ける。
【００３７】
さらに、制御・監視部２５には、キャッシュメモリ２３の複数の格納領域それぞれに対応して、その格納領域に書込みデータが格納されているか否かを表わすフラグが記憶されるフラグ記憶部２５２を有する。ここではこのフラグを空フラグと称する。具体的には、フラグオンは、その格納領域に書込みデータの格納のない空の状態にあることを表わし、フラグオフは、その格納領域に書込みデータが格納されている状態にあることを表わしている。
【００３８】
次に、格納部２２および書込部２４の作用について具体的に記述する。
【００３９】
図４は、キャッシュメモリおよびフラグ記憶部を示した図である。
【００４０】
キャッシュメモリ２３１は、ディスクの種類（ＳＳＤ、ＨＤＤ、ＳＡＴＡ）ごとに区分された複数（ここでは３つ）の格納領域２３１ａ，２３１ｂ，２３１ｃを有する。
【００４１】
また、フラグ記憶部２５２は、キャッシュメモリ２３１の３つの格納領域２３１ａ、２３１ｂ、２３１ｃのそれぞれに対する３つのフラグ領域２５２ａ，２５２ｂ，２５２ｃを有する。これら３つのフラグ領域２５２ａ，２５２ｂ，２５２ｃのそれぞれには、その対応する格納領域２３１ａ，２３１ｂ，２３１ｃに書込みデータが存在しない空の状態にあるときにオン、その対応する格納領域に書込みデータが存在する状態にあるときにオフとなる空きフラグが格納される。
【００４２】
ここでは、キャッシュメモリ２３１に、図４に示す書込みデータが既に格納されているものとする。すなわち、ＳＳＤへの書込みデータが格納される格納領域２３１ａには、（１）Ｄ１，（２）Ｄ２，（３）Ｄ３，（４）Ｄ２Ｂの４つの書込みデータが並んでいる。ここでは、各格納領域２３１ａ，２３１ｂ，２３１ｃごとの書込みデータの列を「キュー」と称する。
【００４３】
ここで、（１），（２），…，（４）は、この格納領域２５１ａの中でのキャッシュメモリ２３１から取り出される優先順位を表わしている。（１）が優先順位が最も高く、（２），（３），（４）の順に優先順位が下がっていく。また、Ｄ１，Ｄ２，Ｄ３は、その書込みデータを書き込むべきディスク（ここではＳＳＤ）が収納されているエンクロージャを表わしている。ここでは、ディスク（ＳＳＤ，ＨＤＤ，ＳＡＴＡ）が収納されるエンクロージャは、一例としてＤ１，Ｄ２，Ｄ３の３つである。さらに（４）Ｄ２Ｂの「Ｂ」は、この書込みデータを書き込むべきディスク（ここではＳＳＤ）が現在ビジー状態にあることを表わしている。ビジー状態にあるか否かの情報はキャッシュメモリ２５１上に書かれているのではないが、ここでは分かり易さのため、「Ｂ」を付して示している。あるディスクがビジー状態にあるか否かは、図２，図３に示す流量管理テーブル２５１が参照され、その流量管理テーブル２５１に１００％が記入されていることをもって、そのディスクがビジー状態にあることが認識される。
【００４４】
ここでは、格納領域２３１ａ，２３１ｂ，２３１ｃのいずれにおいても、１つの格納領域に格納されている書込みデータ下に配置された書込みデータほど取出しの優先順位が高く、見かけ上ＦＩＦＯ方式のように示されている。これは単に優先順位を示したに過ぎず、その格納領域内に実際にこの順序で格納されている必要はない。すなわち、ここでは、格納領域２３１ａに格納されている書込みデータの取り出し順序は、ＬＲＵ方式等ＦＩＦＯ方式以外の方式に従うものであってもよく、図４は採用した方式における取出しの優先順位を示している。ただし、分かり易さのために、ここではＦＩＦＯ方式を採用したものとして説明を続ける。
【００４５】
また、キャッシュメモリ２３１のＨＤＤ用の格納領域２３１ｂには、（５）Ｄ１，（６）Ｄ３，（７）Ｄ２Ｂ，（８）Ｄ１，（９）Ｄ３の各書込みデータが示されている。（５）〜（９）は、この格納領域２３１ｂ内での書込みデータの取り出しの優先順位を示している。（１）〜（５）としない理由は、格納領域２３１ａの（１）〜（４）と区別するためであり、（１）〜（４）よりも優先順位が低いことを意味するものではない。
【００４６】
キャッシュメモリ２３１のＳＡＴＡ用の格納領域２３１ｃについても同様である。ここには、（１０）Ｄ２〜（１６）Ｄ３の書込みデータが格納されている。
【００４７】
図４に示す状態では、キャッシュメモリ２３１の３つの格納領域２３１ａ，２３１ｂ，２３１ｃのいずれにも書込みデータが格納されているため、フラグ記憶部２５２の３つのフラグ領域２３１ａ，２３１ｂ，２３１ｃはいずれもフラグオフの状態にある。
【００４８】
図５は、ホストから新たに送信されてきた書込みデータ一覧を示す図である。
【００４９】
キャッシュメモリ２３１に図４に示す書込みデータが格納されている状態にあるときに、ホスト９０から新たに、この図５に示す（１７）〜（２１）の順に、ここに示す各エンクロージャにある各種類のディスクに書き込まれる書込みデータが送信されてきたものとする。
【００５０】
図６は、図４に示す状態にあるキャッシュメモリに図５に示す書込みデータが格納された状態のキャッシュメモリを示す図である。
【００５１】
ここでは、格納部２２が書込みデータをキャッシュメモリに格納する際のルールとして、以下のルールが定められている。
【００５２】
（１）キャッシュメモリ２３１の自領域に空き領域があるときは格納部２２は通信部２１で受信した書込みデータをその空き領域に格納する。ここで「自領域」は、ＳＳＤへの書込みデータであれば格納領域２３１ａ，ＨＤＤへの書込みデータであれば格納領域２３１ｂ，ＳＡＴＡへの書込みデータであれば格納領域２３１ｃを意味する。
【００５３】
（２）格納部２２は、通信部２１で受信した書き込みデータをキャッシュメモリ２３に格納するにあたり、その書込みデータの書込先のディスクの種類に対応する格納領域が満杯であるときは、以下の通りとする。すなわち、その種類よりも書込み速度が速い種類に対応する格納領域が存在し、かつその速い種類に対応する格納領域に空き領域が存在する場合に、その書込みデータを、その速い種類に対応する格納領域に格納する。ここでは、この速い種類に対応する格納領域を「乗込み領域」と称する。ただし、本実施形態では、その速い種類に対応する格納領域に格納できる他の種類のディスクへの書込みデータの格納受入れ数には上限があり、ここでは３個以内と定められている。この受入れ数は格納領域への書込みデータの格納率の統計等により、他の種類のディスク向けの書込みデータを受入れても支障を生じる可能性が低いレベルに設定される。
【００５４】
（３）さらに、速い種類に対応する格納領域が複数存在し、それらの双方に空き領域があるときは、空き領域が広い方の格納領域に格納する。双方の空き領域の広さが同一のときは、データ書込速度のより速い種類のディスクに対応する格納領域に格納される。
【００５５】
本実施形態では、ホスト９０からＳＡＴＡに書き込まれる書込みデータを受け取り、ＳＡＴＡに対応する格納領域２３１ｃが満杯であって、ＳＳＤ，ＨＤＤに対応する２つの格納領域２３１ａ，２３１ｂの双方に空き領域が存在する場合に、このルールが適用されることになる。
【００５６】
（４）自領域に空きがなく、乗込み領域が存在しない場合、および、乗込み領域が存在していても自領域と乗込み領域のいずれにも空きがないときは、格納部２２は、通信部２１に、ホスト９０に向けて空きが無いことを通知させる。
【００５７】
（５）格納部２２は、通信部２１で受信した書込みデータを、キャッシュメモリ２３１の、その書込みデータの書込先のディスクの種類に応じた格納領域に格納するにあたり、少なくとも今回の書込み直前にその格納領域が書込みデータの格納のない空の状態であった場合に、フラグ記憶部２５２の、その格納領域に対応する空きフラグを、その格納領域に書込みデータが存在することを表すオフ状態に更新する。
【００５８】
図７は、以上のルールに従う格納部の処理を示すフローチャートである。
【００５９】
通信部２１で書込みデータの受信があると（ステップＳ０１）、キャッシュメモリの、その書込みデータの書込先のディスクの種類に応じた自領域に空きがあるか否かが判定される（ステップＳ０２）。自領域に空きがある場合は、その書込みデータを自領域に格納し、自領域に対応する空フラグをオフにする（ステップＳ０３）。
【００６０】
自領域が満杯であって自領域には空きが無いときは、自領域よりもデータ書込速度の速いディスク種に対応する乗込み領域の空きの有無が調べられる（ステップＳ０４）。乗込み領域にも空きが無いときは、空き領域ができるまで待ちとなる（ステップＳ０５）。すなわち、ここでは通信部２１に、ホスト９０に向けてキャッシュメモリ２３１が満杯である旨通知させ、ホスト９０が時期を見て乗込みデータを再度送信してきた時点で図７に示す処理を再度実行することになる。
【００６１】
乗込み領域に空きがあるときは書込みデータはその乗込み領域に格納される。ただし、本実施形態では、ＳＡＴＡに対応する格納領域２３１ｃを自領域とする場合は複数（ここでは２つ）の乗込み領域が存在する。したがって今回受信した書込みデータの書込先がＳＡＴＡであって、ＳＡＴＡに対応する格納領域２３１ｃが満杯であたっときは、複数の乗込み領域それぞれの空き領域の大小が比較され、空き領域の大小に差があるときは、大きな空き領域を持つ乗込み領域に格納される（ステップＳ０７）。その際、そのデータが格納された乗込み領域に対応する空フラグがオフとなる。複数の乗込み領域に関し、空き領域の大小に差がないときは、それら複数の乗込み領域のうちの、より高速書込み可能なディスク種に対応する乗込み領域に格納される（ステップＳ８）。その際、その格納された乗込み領域に対応する空フラグがオフとなる。
【００６２】
尚、この図７に示す処理では、書込みデータを格納領域に格納するごとに、その格納領域に既に他の書込みデータが格納されている（すなわち空フラグが既にオフである）か否かにかかわらず、その格納領域に対応する空フラグがオフされる。ただし、空フラグをオフにする必要があるのは、その空フラグに対応する格納領域が空の状態から最初に書込みデータが格納される場面である。そこで、空フラグのオン、オフを判定することによりこの場面である（空フラグオン）か否かを判定して空フラグをその場面でのみオフにしてもよい。
【００６３】
ここで、キャッシュメモリ２３１が図４に示す状態にあるときに、通信部２１で図５に示す書込みデータを受信した場合にキャッシュメモリ２３１が図６に示す状態になることを説明する。
【００６４】
図５に示す（１７）の書込みデータは、Ｄ３のエンクロージャにあるＳＡＴＡに書き込まれるデータであるが、図４に示すようにＳＡＴＡの自領域である格納領域２３１ｃは既に満杯の状態にある。そこで、ＳＳＤに対応する格納領域２３１ａとＨＤＤに対応する格納領域２３１ｂの空き領域が調べられる。それら双方の格納領域２３１ａ，２３１ｂに空き領域が存在し、ＳＳＤの格納領域２３１ａの空き領域の方が広い。そこで（１７）の書込みデータはＳＳＤの格納領域２３１ａに格納される。
【００６５】
次の（１８）の書込みデータは、Ｄ２のエンクロージャにあるＳＡＴＡに書き込まれるデータである。ＳＡＴＡの格納領域２３１ｃは既に満杯である。ＳＳＤの格納領域２３１ａには、図４に示す状態からさらに（１７）Ｄ３の書込みデータが格納された状態にある。したがって現段階では、ＳＳＤの格納領域２３１ａとＨＤＤの格納領域２３１ｂには互いに同一の広さの空き領域が存在する。この場合、（１８）の書込みデータも、データ書込速度のより速いＳＳＤの空き領域に格納される。
【００６６】
次の（１９）の書込みデータもＳＡＴＡに書き込まれるデータであるが、ＳＡＴＡの格納領域２３１ｃは満杯であって、現段階ではＨＤＤの格納領域２３１ｂの方がＳＳＤの格納領域よりも広い空き領域を有する。そこで（１９）の書込みデータは、ＨＤＤの格納領域２３１ｂに格納される。
【００６７】
さらに次の（２０）の書込みデータもＳＡＴＡ用である。ＳＡＴＡの格納領域２３１ｃは満杯であって、ＳＳＤの格納領域２３１ａとＨＤＤの格納領域２３１ｂは共に１つずつの空き領域を有する。そこで、（２０）の書込みデータは、データ書込速度のより速いＳＳＤの格納領域２３１ａに格納される。
【００６８】
さらに次の（２１）の書込みデータはＨＤＤ用である。ＨＤＤの自領域である格納領域２３１ｂには空き領域が有り、したがって（２１）の書込みデータはＨＤＤの格納領域２３１ｂに格納される。
【００６９】
以上により、キャッシュメモリ２３１は図６に示した状態となる。
【００７０】
次に、書込みデータをキャッシュメモリから取り出してディスクに書き込む書込部について説明する。
【００７１】
書込部２４は、以下のルールに従う。
【００７２】
（１）書込部２４は、キャッシュメモリ２３１にある３つの格納領域２３１ａ，２３１ｂ，２３１ｃの中から循環的に選択された格納領域から書込みデータを取り出してディスクに書き込む。
【００７３】
ここでは、データ書込み速度の速い順とし、ＳＳＤの格納領域２３１ａ→ＨＤＤの格納領域２３１ｂ→ＳＡＴＡの格納領域２３１ｃ→ＳＳＤの格納領域２３１ａ→…の順に書込みデータが１つ取り出されては各ディスクに書き込まれる。
【００７４】
（２）ただし、書込部２４は、キャッシュメモリ２３１から書込みデータを取り出すにあたって流量管理テーブル２５１（図３参照）を参照し、今回取り出そうとしている書込みデータの書込先のディスク３１がビジー状態にあるか否かを判定する。そして書込部２４は、書込先のディスク３１がビジー状態にあるときは、その書込みデータが格納されている格納領域に格納されている書込みデータの中での今回取り出そうとしていた書込みデータの読出優先度を下げる。具体的には本実施形態では、その読出優先度を、その格納領域に現在格納されている書込みデータの中の最低の優先度とする。そして書込部２４は、その格納領域に格納されている書込みデータの中で読出優先度が次に高い書込みデータを読み出す。
【００７５】
（３）前述の通り、このＲＡＩＤ装置１０は、ディスク３１が並ぶエンクロージャ３０を複数有し、コントローラ２０とディスク３１との間の通信量は各エンクロージャ３０ごとに制限を受ける。
【００７６】
そこで、書込部２４は、キャッシュメモリ２３から書込みデータを取り出すにあたり、今回取り出す又は取り出した第１の書込データの書込先のディスク３１が並ぶエンクロージャ３０と次回取り出す第２の書込データの書込先のディスク３１が並ぶエンクロージャ３０との異同を調べる。そして書込部２４は、双方のエンクロージャ３０が同一であった場合は、次回の取出し時には、第２の書込みデータの取出しは行なわない。書込部２４は、この時点では、その第２の書込データと同じ格納領域に格納されている書込みデータのうちの第２の書込みデータの次に読出優先度が高い第３の書込みデータを読み出す。
【００７７】
（４）さらに書込部２４は、満杯状態にある格納領域から書込みデータを読み出した際、その満杯状態にあった格納領域に対応する種類のディスクに書き込まれる書込みデータがその満杯状態にあった格納領域以外の他の格納領域に記憶されているか否かを判定する。そして書込部２４は、その書込みデータが他の格納領域に記憶されている場合には、他の領域に格納されていた書込みデータを、その満杯状態にあった格納領域に移動する。
【００７８】
（５）さらに書込部２４は、キャッシュメモリ２３から書込みデータを取り出すにあたり、その書込みデータを今回取り出すことによって、キャッシュメモリ２３の、その書込みデータの今回の取出し対象の格納領域が書込みデータの格納のない空の状態に移行するか否かを判定する。そして書込部２４は、その格納領域が空の状態に移行することになる場合に、その格納領域に対応する空フラグを、その格納領域に書込みデータが存在しないことを表すオン状態に更新する。また書込部２４は、キャッシュメモリ２３から書込みデータを取り出すにあたり、フラグ記憶部２５２の空フラグが書込みデータが存在することを表すオフ状態にある格納領域について読出し処理を行なう。一方、空フラグが書込みデータが存在しないことを表すオン状態にある領域については読出し処理は行なわない。
【００７９】
図８は、書込部の処理を示すフローチャートである。
【００８０】
ここでは、先ず、各エンクロージャ３０に並ぶ各ディスクの種類の確認が行なわれる（ステップＳ２１）。この確認は、ＲＡＩＤ装置１０へのディスクの収納状態の変更が生じるたびに、あるいは変更が生じた可能性があるたびに行なわれる。
【００８１】
次いで、書込みデータのキャッシュメモリ２３への格納状態が調べられて、ディスク３１への書込み順序が決定される（ステップＳ２２）。ここでは、今回読み出すべき書込みデータと、その次に読み出すべき書込みデータが決定される。
【００８２】
次に、今回決定された書込み順序の先頭の書込みデータについて、その書込みデータの書込先のディスクがビジー状態にあるか否かが判定される。この判定は、前述の通り、流量管理テーブル２５１（図３）を参照して行なわれる。今回の書込みデータの書込先のディスクがビジー状態にあるときは、その書込みデータがその格納領域に並ぶ書込みデータのキューの最後尾に移動される。すなわち、その書込みデータの読出しの優先順位がそのキューに並ぶ書込みデータの中で最も低いレベルにまで下げられる。
【００８３】
そして、そのキューと同じキューに他の書込みデータがあるときは、次の優先順位にあった書込みデータが取り出される。そのキューには、他の書込みデータがないときは、ステップＳ２２に戻り、書込みデータの取出し順序の再決定が行なわれる。
【００８４】
ステップＳ２６では、キャッシュメモリ２３から今回取り出そうとしている書込みデータの書込先のディスク３１が搭載されたエンクロージャ３０の確認が行なわれ、ステップＳ２７ではキャッシュメモリ２３から次回に取り出そうとしている書込みデータの書込先のディスク３１が置かれたエンクロージャ３０の確認が行なわれる。ステップＳ２８では、それらのエンクロージャ３０が互いに同一であるか否かが判定され、同一であったときは、次回の分のキュー内の優先順位が変更される（ステップＳ２９）。具体的には、次回の分のキューの先頭（優先順位の先頭）にある書込みデータと、そのキューと同じキューの２番目（優先順位の２番目）にある書込みデータの、キューの中での並ぶ順序（優先順位上の順序）が交替される。
【００８５】
ステップＳ３０では、今回の取出し対象の書込みデータがキャッシュメモリ２３から取り出され、その書込みデータがディスク３１に書き込まれる。
【００８６】
次いで、書込みデータを今回取り出したキューに並ぶべき書込みデータが他のキュー、すなわち、他の格納領域に存在するか否かが調べられる（ステップＳ３１）。これは、本来であれば今回のキューに並ぶべき書込みデータであっても、そのキューが並ぶ格納領域が満杯であったときには他の格納領域に格納される（すなわち他のキューに並ぶ）ことがあるからである。
【００８７】
今回のキューに並ぶべき書込みデータが他のキューにあったときは、その書込みデータが今回のキューに移動される（ステップＳ３２）。ただし、今回のキューに並ぶ書込みデータが格納されている格納領域が満杯になってもなお、今回のキューに並ぶ書込みデータが他のキューに並んでいる場合もある。そのときは、他のキューに並ぶ残りの書込みデータは、他のキューに並んだまま取り出されることもある。
【００８８】
さらにステップＳ３３では、書込みデータを今回取り出したキューが空になったか否かが調べられ（ステップＳ３３）、空になったときは、その格納領域に対応する空フラグがオンに変更される（ステップＳ３４）。
【００８９】
図９は、キャッシュメモリと各エンクロージャとの間のデータの流れを示している。ここでは、エンクロージャ３０は、ＤＥ（Ｄｅｖｉｃｅ  Ｅｎｃｌｏｓｕｒｅ）とＣＥ（Ｃｏｎｔｒｏｌｌｅｒ  Ｅｎｃｌｏｓｕｒｅ）との２種類存在し、ＤＥは、ＤＥ＃１，ＤＥ＃２，ＤＥ＃３の３台存在する。各ＤＥには、前述したように、複数のディスクが搭載されている。ＣＥには、物理的にはコントローラ２０（図１参照）が置かれていている。ここでは、ＣＥにはディスクは置かれていないものとする。ＤＥ＃１，ＤＥ＃２，ＤＥ＃３に示されている（１），（２），…等の符号は、図６に示す各書込みデータの、（１），（２），…等の符号と合致している。すなわち、この図９は、ある符号の書込みデータが書き込まれるディスクがその符号と同じ符号が示されたエンクロージャに置かれていることを示している。キャッシュメモリ２３に格納されている書込みデータは、キャッシュメモリ２３から取り出され、ルータ２６を介してその書込みデータの書込先のディスクが配置されたエンクロージャ３０に送られ、そのエンクロージャ３０の、その書込先のディスクに書き込まれる。
【００９０】
図１０は、図６に示す状態にあるキャッシュメモリからの書込みデータの取出し順序を示す図である。
【００９１】
１．先ず最初に、図６に示す（１）の書込みデータが取り出されて、ＤＥ＃１のエンクロージャに置かれているＳＳＤに書き込まれる。その際、（１）の書込みデータの書込先のエンクロージャと、次に取り出されるはずの（５）の書込みデータの書込先のエンクロージャとの異同が調べられる。ここではいずれの書込みデータも同じエンクロージャＤＥ＃１であるため、（５）と（６）の書込みデータの、キャッシュメモリ２３１からの取出し順位が入れ替えられる。
【００９２】
２．したがって次には（６）の書込みデータが取り出され、その取り出された書込みデータがエンクロージャＤＥ＃３に並ぶＨＤＤに書き込まれる。
【００９３】
３．次に、（１０）の書込みデータが取り出されてエンクロージャＤＥ＃２に置かれたＳＡＴＡに書き込まれる。（１０）と（２）の書込みデータは同じエンクロージャＤＥ＃２に書き込まれるため、（２）と（３）の書込みデータの取出し順位が入れ替えられる。さらに、（１０）Ｄ２の取出しによってＳＡＴＡの格納領域２３１ｃに空き領域が生じるため、ＳＡＴＡに書き込まれる書込みデータである（１７）Ｄ３がＳＡＴＡの格納領域２３１ｃに移されてＳＡＴＡのキューに並べられる。
【００９４】
４．次に、（３）の書込みデータが取り出されてエンクロージャＤＥ＃３に置かれたＳＳＤに書き込まれる。
【００９５】
５．次に、（６）と入れ替えられた（５）の書込みデータが取り出されて、エンクロージャＤＥ＃１に置かれたＨＤＤに書き込まれる。
【００９６】
６．次は（１１）の書込みデータの順番であるが、この（１１）の書込みデータが書き込まれるべきディスクは現在ビジー状態にある。このため、この（１１）の書込みデータの取出し順位がＳＡＴＡのキューの最後尾（（１６）Ｄ３の後ろ）に並べられる。そして、（１１）の書込みデータに代えて（１２）の書込みデータが取り出されエンクロージャＤＥ＃３のＳＡＴＡに書き込まれる。また、ＳＡＴＡに書き込まれるべき（１８）の書込みデータがＳＡＴＡの格納領域２３１ｃに書き戻される。
【００９７】
７．（２）Ｄ２が取り出されてエンクロージャＤＥ＃２のＳＳＤに書き込まれる。
【００９８】
８．（７）Ｄ２Ｂはビジー状態にあるため、この書込みデータの取出しはそのキューの最後尾に回わされ、（７）の書込みデータに代えて（８）の書込みデータが読み出され、エンクロージャＤＥ＃１のＨＤＤに書き込まれる。
【００９９】
９．さらに、（１３）Ｄ２Ｂがそのキューの最後尾に回され、（１４）Ｄ２が取り出されてエンクロージャＤＥ＃２のＳＡＴＡに書き込まれる。また、（１９）Ｄ１が自領域（ＳＡＴＡの格納領域２３１ｃ）に書き戻される。
【０１００】
以下、同様にして、図８の処理手順に従ってキャッシュメモリ２３１から書込みデータが取り出されては各ディスク３１に書き込まれる。
【０１０１】
ここで、図１０の例えば「１３」では、（４）Ｄ２の書込みデータを取り出した際、ＳＳＤの格納領域２３１ａが空になる。このため、ここでは、ＳＳＤの格納領域２３１ａに対応する空フラグ２５２ａがその格納領域２３１ａが空になったことを表わすオン状態に設定される。
【０１０２】
図１０の「１６」および「２１」も同様である。
【０１０３】
以上の実施形態によれば、ＳＳＤへの書込みについては、最大限ＨＤＤへの１つの書込みデータの書き込みとＳＡＴＡへの１つの書込みデータの書き込みの間待たされることになるが、それを超えて大きくは待たされずに済む。したがって、ＳＳＤの性能の「沈み込み」が抑制される。
【０１０４】
また、ＨＤＤやＳＡＴＡについても書込みの順番が確実に回ってくるため極端な遅れを生じることなく書込みが行なわれる。このＲＡＩＤ装置１０では、このようにして全体のパフォーマンスの向上が図られている。
【０１０５】
尚、ここではＲＡＩＤ装置を取り上げて説明したが、本件は、ＲＡＩＤ装置と呼ばれる装置に限られるものではなく、個別記憶装置を複数個収容したストレージシステムに広く適用することができる。
【符号の説明】
【０１０６】
１０    ＲＡＩＤ装置
２０    コントロール
２１    通信部
２２    格納部
２３    キャッシュメモリ
２４    書込部
２５    制御・監視部
２６    ルータ
３０    エンクロージャ
３１    ディスク
４０    配線
９０    ホスト
９１    通信線
２３１ａ，２３１ｂ，２３１ｃ    格納領域
２５１    流量管理テーブル
２５２    フラグ記憶部
２５２ａ，２５２ｂ，２５２ｃ    フラグ領域
【図１】
0005549260.tif 000002
【図２】
0005549260.tif 000003
【図３】
0005549260.tif 000004
【図４】
0005549260.tif 000005
【図５】
0005549260.tif 000006
【図６】
0005549260.tif 000007
【図７】
0005549260.tif 000008
【図８】
0005549260.tif 000009
【図９】
0005549260.tif 000010
【図１０】
0005549260.tif 000011