(57)【要約】【課題】低コストで記憶装置のアクセス性能を向上させる。【解決手段】記憶装置２１の記憶領域によって実現される論理記憶領域３１に対するデータの書き込みが要求されたとき、判定部１１は、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定する。制御部１２は、書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを論理記憶領域３１に書き込む。一方、制御部１２は、書き込みのパターンがランダムアクセスである場合には、記憶装置２１よりアクセス速度の高い記憶装置２２の記憶領域を仮想化した仮想記憶領域３２に、書き込みデータを書き込む。【選択図】図１
2014041471.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と、
前記第１の記憶装置よりアクセス速度の高い第２の記憶装置と、
前記第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するストレージ制御装置と、
を備え、
前記ストレージ制御装置は、
前記論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定する判定部と、
前記書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを前記論理記憶領域に書き込み、前記書き込みのパターンがランダムアクセスである場合には、前記第２の記憶装置の記憶領域を仮想化した仮想記憶領域に前記書き込みデータを書き込む制御部と、
を有することを特徴とするストレージシステム。
【請求項２】
前記制御部は、前記仮想記憶領域への前記書き込みデータの書き込みとは非同期に、前記仮想記憶領域に書き込まれたデータを、前記論理記憶領域における対応する位置に書き込むことを特徴とする請求項１記載のストレージシステム。
【請求項３】
前記制御部は、前記論理記憶領域を分割して得られる複数の分割領域のうち、データが所定割合以上前記仮想記憶領域に書き込まれている分割領域を選択し、前記選択された分割領域のうち前記仮想記憶領域に書き込まれているデータを、前記論理記憶領域における対応する位置に書き込むことを特徴とする請求項２記載のストレージシステム。
【請求項４】
前記制御部は、前記仮想記憶領域に書き込まれたデータのうち、アクセス頻度が所定のしきい値以下のデータを、前記論理記憶領域における対応する位置に書き込むとともに、当該データを前記仮想記憶領域から削除することを特徴とする請求項２または３記載のストレージシステム。
【請求項５】
前記制御部は、前記第２の記憶装置の残容量が所定のしきい値以下になったとき、前記仮想記憶領域に書き込まれたデータを前記論理記憶領域におけるそれぞれ対応する位置に書き込むとともに、選択した各データを前記仮想記憶領域から削除することを特徴とする請求項２記載のストレージシステム。
【請求項６】
前記制御部は、前記論理記憶領域からのデータの読み出しが要求されたとき、読み出し対象のすべてのデータが前記仮想記憶領域に格納されている場合には、当該データを前記仮想記憶領域から読み出すことを特徴とする請求項１〜５のいずれか１つに記載のストレージシステム。
【請求項７】
前記制御部は、前記論理記憶領域に書き込まれたデータのアクセス頻度を、前記論理記憶領域を分割して得られる分割領域ごとに検出し、アクセス頻度が所定のしきい値を超えた分割領域のデータを前記仮想記憶領域に複写することを特徴とする請求項６記載のストレージシステム。
【請求項８】
前記制御部は、前記書き込みデータを前記論理記憶領域に書き込む際、前記書き込みデータの一部が前記仮想記憶領域に格納済みである場合には、前記仮想記憶領域に格納済みのデータを新たなデータで上書きすることを特徴とする請求項６または７記載のストレージシステム。
【請求項９】
前記ストレージシステムは、前記第１の記憶装置を複数備え、
前記論理記憶領域は、複数の前記第１の記憶装置の記憶領域によって実現され、
前記制御部は、前記論理記憶領域へのデータの書き込みを、データが異なる前記第１の記憶装置に冗長化されるように制御する、
ことを特徴とする請求項１〜８のいずれか１つに記載のストレージシステム。
【請求項１０】
前記ストレージシステムは、第３の記憶装置を備え、
前記制御部は、前記書き込みデータを前記仮想記憶領域に書き込む際、前記書き込みデータを前記第３の記憶装置にも書き込む、
ことを特徴とする請求項９記載のストレージシステム。
【請求項１１】
第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するためのストレージ制御方法において、
コンピュータが、
前記論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定し、
前記書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを前記論理記憶領域に書き込み、前記書き込みのパターンがランダムアクセスである場合には、前記第１の記憶装置よりアクセス速度の高い第２の記憶装置の記憶領域を仮想化した仮想記憶領域に前記書き込みデータを書き込む、
ことを特徴とするストレージ制御方法。
【請求項１２】
第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するためのストレージ制御プログラムにおいて、
コンピュータに、
前記論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定し、
前記書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを前記論理記憶領域に書き込み、前記書き込みのパターンがランダムアクセスである場合には、前記第１の記憶装置よりアクセス速度の高い第２の記憶装置の記憶領域を仮想化した仮想記憶領域に前記書き込みデータを書き込む、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
ＨＤＤ（Hard Disk Drive）は、比較的大容量のストレージ装置として広く使用されている。特に、ニアラインディスク（Near Line Disk）と呼ばれるＨＤＤは、アクセス速度は劣るものの、データ容量当たりの価格が安いことで知られる。一方、近年では、他の種類のストレージ装置としてＳＳＤ（Solid State Drive）が普及しつつある。ＳＳＤは、ＨＤＤと比較して、データ容量当たりの価格が高いものの、特にランダムアクセス性能が高いという特徴がある。
【０００３】
このような高い性能を生かしたＳＳＤの様々な使用方法が考えられている。例えば、ＳＳＤを複数のＨＤＤの共用キャッシュとして使用したシステムがある。また、シーケンシャルアクセスか、あるいはランダムアクセスかというアクセス特性に応じて、ＨＤＤまたはＳＳＤのいずれかに対してデータを選択的に書き込むようにしたシステムもある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１９１６７２号公報
【特許文献２】特開２００８−０１５６２３号公報
【特許文献３】特表２０１１−５１５７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、多くのストレージシステムでは、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）技術を用いて、データが２つ以上の記憶装置に冗長化されるような記録制御が行われる。特に、ＲＡＩＤレベルとしてＲＡＩＤ−４，５，６などを用いて制御されるストレージシステムは、多数の記憶装置を備えることになり、必要な記憶容量が大きくなる。
【０００６】
一方、ＲＡＩＤ技術を用いたストレージシステムは、記憶装置としてＨＤＤとＳＳＤのいずれも搭載可能であるが、ＳＳＤが搭載されることでアクセス速度を高めることができる。しかしながら、ＳＳＤを用いた大容量の記憶領域が必要になることで、ストレージシステムのコストが増大するという問題がある。
【０００７】
１つの側面では、本発明は、低コストで記憶装置のアクセス性能を向上させたストレージシステム、ストレージ制御方法およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、第１の記憶装置と、第１の記憶装置よりアクセス速度の高い第２の記憶装置と、第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するストレージ制御装置と、を備えるストレージシステムが提供される。このストレージシステムにおいて、ストレージ制御装置は、判定部および制御部を有する。判定部は、論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定する。制御部は、書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを論理記憶領域に書き込み、書き込みのパターンがランダムアクセスである場合には、第２の記憶装置の記憶領域を仮想化した仮想記憶領域に書き込みデータを書き込む。
【０００９】
また、１つの案では、上記のストレージ制御装置と同様の処理が実行されるストレージ制御方法が提供される。
さらに、１つの案では、上記のストレージ制御装置と同様の処理をコンピュータに実行させるストレージ制御プログラムが提供される。
【発明の効果】
【００１０】
１態様によれば、ストレージシステム、ストレージ制御方法およびストレージ制御プログラムにおいて、低コストで記憶装置のアクセス性能を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るストレージシステムの構成例および動作例を示す図である。
【図２】第２の実施の形態に係るストレージシステムの全体構成例を示す図である。
【図３】ＣＭのハードウェア構成例を示す図である。
【図４】ボリュームの構成例を示す図である。
【図５】ランダムデータの書き込み処理を示す図である。
【図６】シーケンシャルデータの書き込み処理を示す図である。
【図７】ＳＳＤＶＯＬに格納されたランダムデータのマージ処理を示す図である。
【図８】ＳＳＤＶＯＬとＮＬＶＯＬとの間のデータ転送の他の例を示す図である。
【図９】ＣＭが備える処理機能の例を示すブロック図である。
【図１０】ＲＡＩＤ管理テーブルに登録されるデータの例を示す図である。
【図１１】格納場所管理テーブルに登録されるデータの例を示す図である。
【図１２】状態管理テーブルに登録されるデータの例を示す図である。
【図１３】仮想領域管理テーブルに登録されるデータの例を示す図である。
【図１４】書き込み処理の例を示すフローチャートである。
【図１５】読み出し処理の例を示すフローチャートである。
【図１６】マージ処理の例を示すフローチャートである。
【図１７】アクセス頻度に応じたＳＳＤ解放処理の例を示すフローチャートである。
【図１８】ＮＬＶＯＬからＳＳＤＶＯＬへのコピー処理の例を示すフローチャートである。
【図１９】ＳＳＤの残容量に応じたＳＳＤ解放処理の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係るストレージシステムの構成例および動作例を示す図である。ストレージシステム１は、ストレージ制御装置１０と、１つ以上の記憶装置２１（第１の記憶装置）と、記憶装置２１よりアクセス性能の高い記憶装置２２（第２の記憶装置）とを備える。
【００１３】
ストレージ制御装置１０は、１つ以上の記憶装置２１の記憶領域によって実現される論理記憶領域３１に対するアクセス要求を受け付けて、論理記憶領域３１に対するデータの読み書きを制御する。なお、論理記憶領域３１が複数の記憶装置２１の記憶領域によって実現される場合、ストレージ制御装置１０は、例えば、論理記憶領域３１に対するデータの書き込みを、データが異なる記憶装置２１に冗長化されるように制御する。例えば、ストレージ制御装置１０は、ＲＡＩＤ−１、ＲＡＩＤ−４、ＲＡＩＤ−５、ＲＡＩＤ−６、ＲＡＩＤ−（１＋０）などのＲＡＩＤ技術を用いて、論理記憶領域３１に対するデータの読み書きを制御する。
【００１４】
記憶装置２２は、上記のように、記憶装置２１よりもアクセス速度の高い記憶装置である。例えば、記憶装置２１がＨＤＤである場合、記憶装置２２としてＳＳＤを用いることができる。記憶装置２２の容量当たりの価格は、記憶装置２１の容量当たりの価格より高額である。
【００１５】
ストレージ制御装置１０は、記憶装置２２の記憶領域を仮想化した仮想記憶領域３２を作成し、仮想記憶領域３２に対するデータの読み書きを制御する。ストレージ制御装置１０は、例えば、記憶装置２２の空き記憶領域から、必要な分だけの記憶領域を仮想記憶領域３２に対して随時割り当てることができる。
【００１６】
ストレージ制御装置１０は、判定部１１および制御部１２を有する。判定部１１および制御部１２の処理は、例えば、ストレージ制御装置１０が備えるプロセッサが所定のプログラムを実行することによって実現される。
【００１７】
判定部１１は、論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスか、あるいはランダムアクセスかを判定する。
制御部１２は、判定された書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを論理記憶領域３１に書き込む。この場合、少なくとも１つの記憶装置２１に対するデータの書き込みが行われることになる。
【００１８】
一方、制御部１２は、判定された書き込みのパターンがランダムアクセスである場合には、書き込みデータを仮想記憶領域３２に書き込む。これにより、書き込みデータを論理記憶領域３１に書き込む場合と比較して、書き込みに要する時間が短縮され、全体として書き込み性能が向上する。
【００１９】
上記のように、ストレージ制御装置１０は、ランダムアクセスの際の書き込みデータを、アクセス性能が高く容量当たりのコストが高い記憶装置２２を仮想化した仮想記憶領域３２に書き込む。このため、ランダムアクセスの際のデータの書き込み先として、論理記憶領域３１と同じ容量分の記憶装置２２を用意しておく必要がない。従って、ストレージ制御装置１０は、低コストでアクセス性能を向上させることができる。
【００２０】
〔第２の実施の形態〕
図２は、第２の実施の形態に係るストレージシステムの全体構成例を示す図である。ストレージシステム１００は、ＣＭ（Controller Module）１０１と、複数のＨＤＤ２１０と、少なくとも１台のＳＳＤ２２０とを備える。なお、本実施の形態では例として、ＨＤＤ２１０はすべて低コストのニアラインディスクであるものとする。以下、ＨＤＤ２１０のことを「ＮＬディスク２１０」と呼称する。なお、ＣＭ１０１は、処理の信頼性を向上させるために、ストレージシステム１００内に複数設けられて冗長化されてもよい。
【００２１】
ＣＭ１０１には、ホストサーバ３００が接続されている。ＣＭ１０１は、ホストサーバ３００からのＩ／Ｏ（In/Out）要求に応じて、ＮＬディスク２１０やＳＳＤ２２０に対するＩ／Ｏ処理を行う。また、ＣＭ１０１は、ＮＬディスク２１０によって実現される物理記憶領域をＲＡＩＤによって管理し、これらの物理記憶領域へのアクセスを制御する。
【００２２】
図３は、ＣＭのハードウェア構成例を示す図である。
ＣＭ１０１は、プロセッサ１１１によって装置全体が制御されている。プロセッサ１１１は、マルチプロセッサであってもよい。プロセッサ１１１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１１１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２３】
プロセッサ１１１には、メモリ１１２および複数の周辺機器が、バス１１５を介して接続されている。メモリ１１２は、プロセッサ１１１に実行させるプログラムの少なくとも一部や、このプログラムによる処理に必要な各種データを記憶する。
【００２４】
プロセッサ１１１には、周辺機器の例として、ＣＡ（Channel Adapter）１１３およびＤＩ（Drive Interface）１１４が接続されている。
ＣＡ１１３は、ホストサーバ３００とＣＭ１０１との間でデータを送受信するインタフェース処理を実行する。ＣＡ１１３とホストサーバ３００とは、例えば、ＦＣ（Fibre Channel）、ｉＳＣＳＩ（Internet Small Computer System Interface）、ＦＣｏＥ（FC over Ethernet，Ethernet：登録商標）、ＳＡＳ（Serial Attached SCSI）などのインタフェース規格に従って通信する。
【００２５】
ＤＩ１１４は、ストレージシステム１００内のＮＬディスク２１０やＳＳＤ２２０との間でデータを送受信するインタフェース処理を実行する。ＤＩ１１４とＮＬディスク２１０およびＳＳＤ２２０とは、例えば、ＳＡＳなどのインタフェース規格に従って通信する。
【００２６】
以上のハードウェア構成によって、ＣＭ１０１の処理機能が実現される。なお、ホストサーバ３００も、図３に示すようなハードウェア構成を有するコンピュータとして実現可能である。
【００２７】
次に、ＣＭ１０１によるアクセス制御処理について詳しく説明する。まず、図４は、ボリュームの構成例を示す図である。
図４に示すニアラインボリュームＮＬＶＯＬ＃１〜＃５（以下、「ＮＬＶＯＬ＃１〜＃５」と略称する）は、ホストサーバ３００からのアクセスの対象となる論理ボリュームであり、ＣＭ１０１によって設定される。ＮＬＶＯＬ＃１〜＃５は、ストレージシステム１００に搭載される複数のＮＬディスク（図２のＮＬディスク２１０）の実記憶領域を用いて実現される論理ボリュームである。そして、ＣＭ１０１は、ＮＬＶＯＬ＃１〜＃５へのデータの書き込みを、データが異なるＮＬディスクに冗長化されるように制御する。
【００２８】
本実施の形態では例として、ＮＬＶＯＬ＃１〜＃５は、ＮＬディスク２１１〜２１６の実記憶領域を用いて実現される。また、ＮＬディスク２１１〜２１６は、例として、ＲＡＩＤ−５によって制御されるＲＡＩＤグループを構成し、ＮＬＶＯＬ＃１〜＃５に書き込まれるデータは、ＣＭ１０１の制御によってパリティを用いて冗長化される。
【００２９】
なお、ＮＬディスク２１１〜２１６のそれぞれの記憶容量を１ＴＢ（テラバイト）とすると、ＮＬＶＯＬ＃１〜＃５の合計の記憶容量は、ＮＬディスク２１１〜２１６におけるパリティの記憶領域を除く５ＴＢとなる。ＮＬＶＯＬ＃１〜＃５は、例えば、ＮＬディスク２１１〜２１６の実記憶領域によって実現される５ＴＢの論理ボリュームＬＶ＃１を、分割することによって得られる。
【００３０】
本実施の形態では、ＮＬＶＯＬ＃１〜＃５は、論理ボリュームＬＶ＃１を先頭から１ＴＢずつ分割することで得られるものとする。ＣＭ１０１は、ＮＬＶＯＬ＃１〜＃５のそれぞれにおける論理アドレスの指定を受けると、指定された論理アドレスを論理ボリュームＬＶ＃１の論理アドレスに変換する。ＣＭ１０１はさらに、変換された論理アドレスと、実記憶領域を実現するＮＬディスク２１１〜２１６の数（６台）と、ストライプサイズとに基づいて、アクセス先の物理アドレスを決定する。これにより、ＣＭ１０１は、ＮＬＶＯＬ＃１〜＃５のそれぞれにおける論理アドレスの指定を受けると、指定された論理アドレスからアクセス先の物理アドレスを一意に決定できる。
【００３１】
以上のように、アクセス対象の論理記憶領域の実記憶領域を実現する記憶装置として、ＨＤＤ、特に、アクセス速度は比較的低いもののデータ容量当たりのコストが低いＮＬディスクを使用することで、記憶装置にかかるコストを低減することができる。特に、論理記憶領域に書き込むデータをＲＡＩＤを用いて冗長化する場合には、論理記憶領域の容量より大きな実記憶領域が必要となり、実記憶領域を実現する記憶装置の台数も増加する。上記のように、ＲＡＩＤグループを構成する記憶装置としてＨＤＤ、好適にはＮＬディスクを使用することで、ストレージシステム１００に搭載される記憶装置の台数が増加することによるコストの上昇を抑制することができる。
【００３２】
ところで、ＣＭ１０１は、ホストサーバ３００から書き込みを要求された書き込みデータを、ＮＬＶＯＬ＃１〜＃５のいずれかに書き込む際に、書き込みパターンがシーケンシャルアクセスかランダムアクセスかを判定する。以下、書き込みパターンがシーケンシャルアクセスである場合の書き込みデータを「シーケンシャルデータ」と呼ぶ。また、書き込みパターンがランダムアクセスである場合の書き込みデータを「ランダムデータ」と呼ぶ。
【００３３】
ＣＭ１０１は、書き込みパターンの判定結果に基づき、シーケンシャルデータをＮＬＶＯＬ＃１〜＃５に書き込む。この場合、ＮＬディスク２１１〜２１６に対する書き込み動作が行われる。一方、ＣＭ１０１は、ランダムデータを、ＮＬＶＯＬ＃１〜＃５の代わりにＳＳＤ２２１に書き込む。これにより、ランダムデータをＮＬＶＯＬ＃１〜＃５に書き込む場合と比較して、書き込みに要する時間が短縮される。なお、ＳＳＤ２２１は、ストレージシステム１００に搭載されたＳＳＤ２２０（図２に参照）の１つである。
【００３４】
ＣＭ１０１は、ランダムデータの書き込み先として、図４に示すＳＳＤボリュームＳＳＤＶＯＬ＃１〜＃５（以下、「ＳＳＤＶＯＬ＃１〜＃５」と略称する）を設定する。ＳＳＤＶＯＬ＃１〜＃５は、ＮＬＶＯＬ＃１〜＃５にそれぞれ対応付けて生成される。例えば、ＣＭ１０１は、書き込み先がＮＬＶＯＬ＃１であるランダムデータをＳＳＤＶＯＬ＃１に書き込み、書き込み先がＮＬＶＯＬ＃２であるランダムデータをＳＳＤＶＯＬ＃２に書き込む。
【００３５】
また、ＣＭ１０１は、ＳＳＤＶＯＬ＃１〜＃５に書き込んだランダムデータを、所定のタイミングで、ＮＬＶＯＬ＃１〜＃５のうちの対応するボリューム内の対応する位置に書き込み、ランダムデータをミラーリングする。例えば、ＣＭ１０１は、ＳＳＤＶＯＬ＃１に書き込んだランダムデータを、ＮＬＶＯＬ＃１における対応する位置に書き込む。
【００３６】
ＳＳＤＶＯＬ＃１〜＃５は、ＳＳＤ２２１を仮想化した仮想ボリュームであり、ＣＭ１０１は、ＳＳＤＶＯＬ＃１〜＃５のそれぞれに対して、ＳＳＤ２２１の空き領域を必要に応じて割り当てる。従って、ＳＳＤＶＯＬ＃１〜＃５のそれぞれの大きさは適宜変化する。ここで、ＳＳＤＶＯＬ＃１〜＃５の実記憶領域を実現するＳＳＤ２２１は１台用意されても、あるいは複数台用意されてもよいが、用意される実記憶領域の総容量はＮＬＶＯＬ＃１〜＃５の総容量より小さくてよい。
【００３７】
このように、ランダムデータの書き込み先がＳＳＤ２２１を仮想化した仮想ボリュームとされることで、ランダムデータの書き込み先として、ＮＬＶＯＬ＃１〜＃５の総容量と同じ容量のＳＳＤを用意する必要がなくなる。従って、書き込み速度を高速化しつつ、ＳＳＤの容量が増大することによるコストの増加を抑制することができる。
【００３８】
ここで、図５〜図８を用いて、例としてＮＬＶＯＬ＃１に対するデータの書き込みについて説明する。なお、ＮＬＶＯＬ＃１の記憶領域は、所定長のブロックごとに割り振られた論理アドレスであるＬＢＡ（Logical Block Address）によって管理されるものとする。また、所定数の連続するブロックは「トラック」として管理されるものとする。例えば、１ブロックの長さは５１２Ｂｙｔｅであり、１トラックの長さは６４ＫＢ（キロバイト）である。ただし、以下の図５〜図８では、説明をわかりやすくするために、１トラックには８ブロックが含まれるものとする。
【００３９】
図５は、ランダムデータの書き込み処理を示す図である。
ＮＬＶＯＬ＃１への書き込みデータがランダムデータである場合、ＣＭ１０１は、その書き込みデータをＮＬＶＯＬ＃１に対応するＳＳＤＶＯＬ＃１に書き込む。図５では例として、ＮＬＶＯＬ＃１への１回の書き込み要求コマンドにより、２トラック内の不連続な３ブロックのデータの書き込みが要求されたものとする。この場合、ＣＭ１０１は、書き込みが要求された３ブロック分の実記憶領域を、ＳＳＤ２２１からＳＳＤＶＯＬ＃１に割り当ててＳＳＤＶＯＬ＃１を拡張し、拡張されたＳＳＤＶＯＬ＃１に対して書き込み対象の３ブロックを書き込む。
【００４０】
また、ＣＭ１０１は、書き込みデータをＳＳＤＶＯＬ＃１に書き込むとともに、同じデータをホットスペア（Hot Spare）のＮＬディスク２１７（以下、「ホットスペアディスク２１７」と略称する）にも書き込み、ランダムデータを二重化する。ホットスペアディスク２１７は、ストレージシステム１００に搭載されたＮＬディスク２１０（図２参照）のうち、ＲＡＩＤグループを構成するＮＬディスクが故障したときの代替用に用意された記憶装置である。
【００４１】
このように、ＣＭ１０１は、書き込みデータがランダムデータである場合、その書き込みデータをＳＳＤＶＯＬだけでなくホットスペアディスク２１７にも書き込むことで、書き込みデータを冗長化する。これにより、記憶装置の故障によって書き込みデータが失われる危険性が低下する。
【００４２】
なお、ＣＭ１０１は、例えば、ランダムデータをＳＳＤＶＯＬに書き込んだ後、同じデータをホットスペアディスク２１７に書き込む前に、書き込み完了の応答を行ってもよい。これにより、書き込み要求に対する応答時間を短縮することができる。
【００４３】
図６は、シーケンシャルデータの書き込み処理を示す図である。
ＮＬＶＯＬ＃１への書き込みデータがシーケンシャルデータである場合、ＣＭ１０１は、その書き込みデータをＮＬＶＯＬ＃１に書き込む。図６では例として、ＮＬＶＯＬ＃１への１回の書き込み要求コマンドにより、３トラック分のデータの書き込みが要求されたものとする。
【００４４】
また、ＣＭ１０１は、書き込みデータの中に、すでに対応するＳＳＤＶＯＬ＃１に書き込み済みのブロックがある場合には、そのブロックについての新たなデータを、ＮＬＶＯＬ＃１だけでなく、対応するＳＳＤＶＯＬ＃１にも上書きする。図６では、書き込みデータのうちＳＳＤＶＯＬ＃１にすでに書き込まれているブロックを、黒く塗りつぶした状態で表している。
【００４５】
ＣＭ１０１は、ＮＬＶＯＬ＃１からのデータの読み出しが要求された場合、できる限りＳＳＤＶＯＬ＃１からデータを読み出そうとする。例えば、ＣＭ１０１は、ＮＬＶＯＬ＃１からの読み出しが要求されたデータのすべてがＳＳＤＶＯＬ＃１に格納されている場合に、データをＳＳＤＶＯＬ＃１から読み出す。これにより、読み出しに要する時間が短縮される。
【００４６】
図６に示すように、ＣＭ１０１は、書き込みデータがシーケンシャルデータである場合でも、ＳＳＤＶＯＬ＃１に書き込み済みのブロックについてはこれを上書きしておく。これにより、ＳＳＤＶＯＬ＃１に一度書き込まれたランダムデータが常に最新に保たれ、データ読み出し時にＳＳＤＶＯＬ＃１から読み出し可能になる確率が高くなる。従って、全体として読み出し性能を向上させることができる。
【００４７】
図７は、ＳＳＤＶＯＬに格納されたランダムデータのマージ処理を示す図である。
ＣＭ１０１は、ＳＳＤＶＯＬ＃１に書き込んだランダムデータを、所定のタイミングで対応するＮＬＶＯＬ＃１にも書き込む。ＳＳＤＶＯＬ＃１内のランダムデータをＮＬＶＯＬ＃１に書き込むタイミングを決定するための１つのパラメータとして、１つのトラックのデータのうち、ＳＳＤＶＯＬ＃１に格納されているデータの割合を示す「ＳＳＤ格納率」が用いられる。
【００４８】
ＣＭ１０１は、ＮＬＶＯＬ＃１内のトラックごとにＳＳＤ格納率を検知し、ＳＳＤ格納率が所定のしきい値以上になったトラックについて、図７に示すようなマージ処理を行う。マージ処理は、ＮＬＶＯＬ＃１およびＳＳＤＶＯＬ＃１のそれぞれにおける同一トラックのデータをＣＭ１０１上で統合し、ＮＬＶＯＬ＃１に書き直す処理である。
【００４９】
図７の例では、トラック＃１のブロックのうち、先頭から２番目、３番目、５番目、７番目および８番目の各ブロックのデータが、ＳＳＤＶＯＬ＃１に格納されている。例えばＳＳＤ格納率５０％が判定しきい値であるとすると、図７の状態ではＳＳＤ格納率が判定しきい値以上になっている。このとき、ＣＭ１０１は、ＮＬＶＯＬ＃１からトラック＃１のデータを読み出すとともに、ＳＳＤＶＯＬ＃１からもトラック＃１のデータを読み出す。
【００５０】
ここで、図６に示したＳＳＤＶＯＬ＃１への書き込み処理により、ＳＳＤＶＯＬ＃１には常に最新データが格納されていることになる。このため、ＣＭ１０１は、ＳＳＤＶＯＬ＃１から読み出したトラック＃１の各ブロックのデータを、ＮＬＶＯＬ＃１から読み出したトラック＃１のデータにおける対応するブロックに上書きし、トラック＃１全体の最新データを生成する。ＣＭ１０１は、生成したトラック＃１の最新データを、ＮＬＶＯＬ＃１に上書きする。
【００５１】
このように、トラック内の一部を構成するランダムデータがＳＳＤＶＯＬに書き込まれた場合でも、そのランダムデータがＳＳＤＶＯＬからＮＬＶＯＬに書き込まれる際に、ＮＬＶＯＬに元々格納されていたデータとマージされることで、ＮＬＶＯＬ上にシーケンシャルデータが格納される確率が高くなる。これにより、該当トラックのデータの読み出しが要求された場合に、ＮＬＶＯＬからのデータ読み出し速度を向上させることができる。
【００５２】
また、ＣＭ１０１は、ＳＳＤ格納率が所定のしきい値以上になったトラックのみをＳＳＤＶＯＬからＮＬＶＯＬに転送することで、ＳＳＤＶＯＬからＮＬＶＯＬへのデータ転送が発生する頻度を必要最小限に抑えることができる。従って、ＣＭ１０１の処理負荷や、ＣＭ１０１とＮＬディスクおよびＳＳＤとの間の伝送負荷が低減され、ＳＳＤＶＯＬからＮＬＶＯＬへの転送処理が、ＣＭ１０１からＮＬＶＯＬへの通常のアクセス処理に与える影響を軽減することができる。
【００５３】
図８は、ＳＳＤＶＯＬとＮＬＶＯＬとの間のデータ転送の他の例を示す図である。
上記の図７では、ＳＳＤ格納率が所定のしきい値以上になったトラックのデータを、ＳＳＤＶＯＬ＃１からＮＬＶＯＬ＃１に転送した。これに加えて、ＣＭ１０１は、ＳＳＤＶＯＬ＃１に格納されたデータのアクセス頻度が低下した場合に、そのデータをＮＬＶＯＬ＃１に転送する。この場合、ＣＭ１０１は、アクセス頻度が低下したＳＳＤＶＯＬ＃１のデータを無効化して、そのデータが記録されていたＳＳＤ２２１の実記憶領域を解放する。解放された実記憶領域は、その後にＳＳＤＶＯＬ＃１〜＃５のいずれかに対して新たに割り当てることが可能になる。このような処理により、仮想ボリュームに対して必要な分だけＳＳＤ２２１の実記憶領域を割り当てることができ、ＳＳＤ２２１の実記憶領域を効率的に利用可能になるとともに、ＳＳＤ２２１に必要な容量を小さくし、コストを低減することができる。
【００５４】
なお、後述するように、ＣＭ１０１はさらに、ＳＳＤ２２１の残容量が所定量以下になったときに、ＳＳＤＶＯＬに格納されたデータを対応するＮＬＶＯＬに転送するとともに、ＳＳＤＶＯＬの対応する領域を解放する。
【００５５】
一方、ＣＭ１０１は、ＮＬＶＯＬ＃１に格納されたデータのアクセス頻度が高くなった場合に、そのデータを対応するＳＳＤＶＯＬ＃１に複写する。これにより、ＣＭ１０１は、アクセス頻度の高いデータをＳＳＤＶＯＬ＃１に格納しておき、それらのデータの読み出しが要求された場合に、データをＳＳＤＶＯＬ＃１から高速に読み出すことができるようになる。
【００５６】
なお、本実施の形態では、ＣＭ１０１は、アクセス頻度をトラックごとに検知し、ＳＳＤＶＯＬとＮＬＶＯＬとの間のデータ転送をトラック単位で実行するものとする。
次に、図９は、ＣＭが備える処理機能の例を示すブロック図である。
【００５７】
ＣＭ１０１は、キャッシュ制御部１２１、パターン判定部１２２、Ｉ／Ｏ制御部１２３、転送制御部１２４、ＲＡＩＤ制御部１２５およびディスクアクセス制御部１２６を備える。これらの各部の処理は、例えば、ＣＭ１０１が備えるプロセッサ１１１が所定のプログラムを実行することで実現される。
【００５８】
また、ＣＭ１０１の記憶装置には、キャッシュ領域１３１が確保される。さらに、ＣＭ１０１の記憶装置には、ＲＡＩＤ管理テーブル１４１、格納場所管理テーブル１４２、状態管理テーブル１４３および仮想領域管理テーブル１４４が記憶される。
【００５９】
キャッシュ制御部１２１は、ＮＬＶＯＬのデータをキャッシュ領域１６０にキャッシュするための制御を行う。キャッシュ領域１６０は、例えば、ＣＭ１０１が備えるＳＳＤ１１３に確保される。
【００６０】
キャッシュ制御部１２１は、キャッシュ領域１６０に格納されたデータをライトバックする際、対応するＮＬＶＯＬへのデータの書き込みを要求するための書き込みコマンドを、パターン判定部１２２を通じてＩ／Ｏ制御部１２３に通知する。また、キャッシュ制御部１２１は、キャッシュミスしたデータをＮＬＶＯＬから読み出す際、対応するＮＬＶＯＬからのデータの読み出しを要求するための読み出しコマンドを、Ｉ／Ｏ制御部１２３に通知する。
【００６１】
パターン判定部１２２は、キャッシュ制御部１２１から書き込みコマンドを受け付けると、書き込みコマンドによるアクセスパターンがシーケンシャルアクセスか、あるいはランダムアクセスかを判定する。なお、パターン判定部１２２は、例えば、シーケンシャルアクセスかランダムアクセスかを、連続性を示すフラグなどの、受信したコマンドに含まれる情報によって判断することができる。
【００６２】
Ｉ／Ｏ制御部１２３は、パターン判定部１２２による判定結果に応じて、ライトバック対象のデータの書き込み先を判定し、書き込み制御を行う。図５および図６に示したように、Ｉ／Ｏ制御部１２３は、基本的に、シーケンシャルデータの書き込み先をＮＬＶＯＬと判定し、ランダムデータの書き込み先をＳＳＤＶＯＬおよびホットスペアディスクと判定する。また、Ｉ／Ｏ制御部１２３は、キャッシュ制御部１２１から読み出しコマンドを受け付けると、格納場所管理テーブル１４２を参照して、データの読み出し場所を判別し、読み出し制御を行う。
【００６３】
転送制御部１２４は、格納場所管理テーブル１４２、状態管理テーブル１４３および仮想領域管理テーブル１４４を参照しながら、ＳＳＤＶＯＬとＮＬＶＯＬとの間のデータ転送を制御する。
【００６４】
ここで、Ｉ／Ｏ制御部１２３および転送制御部１２４は、ともに次のような書き込みまたは読み出しの制御を行う。
Ｉ／Ｏ制御部１２３および転送制御部１２４は、データをＮＬＶＯＬに書き込む際には、書き込み先のＮＬＶＯＬの識別番号と、書き込みデータのＮＬＶＯＬにおける論理アドレス（ＬＢＡ）とをＲＡＩＤ制御部１２５に通知して、書き込みを依頼する。また、Ｉ／Ｏ制御部１２３および転送制御部１２４は、データをＳＳＤＶＯＬに書き込む際には、対応するＳＳＤＶＯＬに対し、書き込みデータの容量分の実記憶領域をＳＳＤ２２１の空き領域から割り当てる。そして、Ｉ／Ｏ制御部１２３および転送制御部１２４は、割り当てた実記憶領域のアドレスをディスクアクセス制御部１２６に通知して、ＳＳＤ２２１への書き込みを依頼する。なお、Ｉ／Ｏ制御部１２３は、データをホットスペアディスクに書き込む際は、書き込み先の実アドレスをディスクアクセス制御部１２６に通知して、ホットスペアディスクへの書き込みを依頼する。
【００６５】
一方、Ｉ／Ｏ制御部１２３および転送制御部１２４は、データをＮＬＶＯＬから読み出す場合には、ＮＬＶＯＬの識別番号と、読み出しデータのＮＬＶＯＬにおける論理アドレス（ＬＢＡ）とをＲＡＩＤ制御部１２５に通知して、読み出しを依頼する。また、Ｉ／Ｏ制御部１２３および転送制御部１２４は、データをＳＳＤＶＯＬから読み出す場合には、仮想領域管理テーブル１４４を参照して、ＳＳＤ２２１における読み出しアドレスを判別する。そして、Ｉ／Ｏ制御部１２３および転送制御部１２４は、判別した読み出しアドレスをディスクアクセス制御部１２６に通知して、データの読み出しを依頼する。
【００６６】
ＲＡＩＤ制御部１２５は、ＲＡＩＤ管理テーブル１４１を参照しながら、Ｉ／Ｏ制御部１２３および転送制御部１２４からの要求に応じたＮＬＶＯＬへのアクセスを、ＲＡＩＤを用いて制御する。ＲＡＩＤ制御部１２５は、アクセス先のＮＬディスクまたはＳＳＤにおける実アドレスをディスクアクセス制御部１２６に通知して、データの書き込みまたはデータの読み出しを依頼する。
【００６７】
ディスクアクセス制御部１２６は、Ｉ／Ｏ制御部１２３、転送制御部１２４およびＲＡＩＤ制御部１２５からの要求に応じて、ＮＬディスクやＳＳＤへのデータの書き込み、あるいはＮＬディスクやＳＳＤからのデータの読み出しを行う。
【００６８】
図１０は、ＲＡＩＤ管理テーブルに登録されるデータの例を示す図である。ＲＡＩＤ管理テーブル１４１は、ＲＡＩＤグループごとに生成されて、例えばＣＭ１０１のＳＳＤ１１３に格納される。各ＲＡＩＤ管理テーブル１４１には、ＲＡＩＤグループ番号、ＲＡＩＤレベル、ストライプサイズ、ディスク数、ディスク番号およびＮＬＶＯＬ情報の各項目に対応する情報が登録される。
【００６９】
ＲＡＩＤグループ番号は、ＲＡＩＤグループの識別番号を示す。ＲＡＩＤレベルは、対応するＲＡＩＤグループの制御に使用されるＲＡＩＤレベルを示す。ストライプサイズは、ストライプが使用されるＲＡＩＤレベル（例えば、ＲＡＩＤ−４，５，６など）が設定された場合に、１ストライプにおける記憶装置ごとの記憶領域のサイズを示す。
【００７０】
ディスク数は、対応するＲＡＩＤグループに属するＮＬディスクの数を示す。ディスク番号は、対応するＲＡＩＤグループに属する各ＮＬディスクの識別番号を示す。従って、ディスク番号は、ディスク数の欄に設定された数だけ登録される。
【００７１】
ＮＬＶＯＬ情報は、ＲＡＩＤグループ番号に対応付けられた唯一の論理ボリュームＬＶ（図４の論理ボリュームＬＶ＃１に対応）を分割して得られる各ＮＬＶＯＬについての情報を示す。ＮＬＶＯＬの情報としては、ＮＬＶＯＬの識別番号、ＲＡＩＤグループ番号が示す論理ボリュームにおけるＮＬＶＯＬの先頭論理アドレス、ＮＬＶＯＬのサイズなどがある。
【００７２】
ＲＡＩＤ制御部１２５は、Ｉ／Ｏ制御部１２３および転送制御部１２４からＮＬＶＯＬの識別番号およびＬＢＡが通知されたとき、ＮＬＶＯＬ情報に基づいて、通知されたＮＬＶＯＬおよびＬＢＡに対応する論理ボリュームＬＶ上の論理アドレスを判別する。さらに、ＲＡＩＤ制御部１２５は、ＲＡＩＤレベル、ストライプサイズ、ディスク数およびディスク番号に基づいて、アクセス先の実アドレスを判別し、実アドレスをディスクアクセス制御部１２６に通知してアクセスを要求する。また、ＲＡＩＤ制御部１２５は、データの書き込みが要求された場合には、データの分割やパリティの計算などのＲＡＩＤレベルに応じた処理も実行する。
【００７３】
図１１は、格納場所管理テーブルに登録されるデータの例を示す図である。格納場所管理テーブル１４２は、ＮＬＶＯＬごとに生成されて、例えばＣＭ１０１のＳＳＤ１１３に格納される。
【００７４】
格納場所管理テーブル１４２は、対応するＮＬＶＯＬ内の各ブロックの最新データがどこに格納されているかを管理するためのテーブルである。各格納場所管理テーブル１４２には、対応するＮＬＶＯＬ内の各ＬＢＡに対応付けて、ＳＳＤ格納フラグ、ＨＳ格納フラグおよびＮＬ格納フラグが登録される。
【００７５】
ＳＳＤ格納フラグは、対応するブロックの最新データがＳＳＤＶＯＬに格納されているか否かを示す。ＳＳＤ格納フラグの値は、最新データがＳＳＤＶＯＬに格納されている場合に「１」とされ、格納されていない場合に「０」とされる。
【００７６】
ＨＳ格納フラグは、対応するブロックの最新データがホットスペアディスクに格納されているか否かを示す。ＨＳ格納フラグの値は、最新データがホットスペアディスクに格納されている場合に「１」とされ、格納されていない場合に「０」とされる。
【００７７】
ＮＬ格納フラグは、対応するブロックの最新データがＮＬＶＯＬに格納されているか否かを示す。ＮＬ格納フラグの値は、最新データがＮＬＶＯＬに格納されている場合に「１」とされ、格納されていない場合に「０」とされる。
【００７８】
図１２は、状態管理テーブルに登録されるデータの例を示す図である。状態管理テーブル１４３は、ＮＬＶＯＬごとに生成されて、例えばＣＭ１０１のＲＡＭ１１２に一時的に格納される。
【００７９】
状態管理テーブル１４３は、対応するＮＬＶＯＬ内の各トラックの状態を管理するためのテーブルである。状態管理テーブル１４３には、対応するＮＬＶＯＬ内の各トラック番号に対応付けて、ＳＳＤ格納率、ＳＳＤアクセス頻度およびＮＬアクセス頻度が登録される。ＳＳＤ格納率、ＳＳＤアクセス頻度およびＮＬアクセス頻度は、例えば、Ｉ／Ｏ制御部１２３によって検出されて、状態管理テーブル１４３に登録される。
【００８０】
ＳＳＤ格納率は、対応するトラックのデータのうち、ＳＳＤＶＯＬに格納されているデータの割合を示す。ＳＳＤ格納率は、例えばブロック単位で計算され、トラック内のブロック数に対する、ＳＳＤＶＯＬにデータが格納されているブロック数の割合（単位：％）として計算される。
【００８１】
ＳＳＤアクセス頻度は、対応するトラックにおける少なくとも１ブロックのデータがＳＳＤＶＯＬに格納されている場合に、ＳＳＤＶＯＬに格納されているデータに対するアクセス頻度を示す。ＮＬアクセス頻度は、対応するトラックにおける少なくとも１ブロックのデータがＮＬＶＯＬに格納されている場合に、ＮＬＶＯＬに格納されているデータに対するアクセス頻度を示す。
【００８２】
ここで、アクセス頻度とは、例えば、直近の所定時間におけるトラック単位の書き込みまたは読み出しの回数を示す。また、アクセス頻度は、例えば、キャッシュ制御部１２１からの１回のＩ／Ｏ要求に応じて、該当トラック内の少なくとも１つのブロックに対するアクセスが発生した場合に、インクリメントされる。
【００８３】
なお、ＳＳＤアクセス頻度の欄には、対応するトラックのデータがＳＳＤＶＯＬに格納されていない場合には、例えば、有効な数値が登録されていないことを示す「ＮＵＬＬ」が登録される。同様に、ＮＬアクセス頻度の欄には、対応するトラックのデータがＮＬＶＯＬに格納されていない場合には、有効な数値が登録されていないことを示す「ＮＵＬＬ」が登録される。
【００８４】
図１３は、仮想領域管理テーブルに登録されるデータの例を示す図である。仮想領域管理テーブル１４４は、ＮＬＶＯＬごとに生成されて、例えばＣＭ１０１のＳＳＤ１１３に格納される。
【００８５】
仮想領域管理テーブル１４４は、対応するＮＬＶＯＬ内の各ブロックのデータが、ＳＳＤ内のどの実記憶領域に格納されているかを管理するためのテーブルである。これとともに、仮想領域管理テーブル１４４は、ＳＳＤ内の実記憶領域のうち、仮想ボリュームに割り当て済みの領域を管理するための役割も担う。
【００８６】
仮想領域管理テーブル１４４には、対応するＮＬＶＯＬ内の各ＬＢＡに対応付けて、ＳＳＤにおける物理アドレスが登録されている。なお、仮想領域管理テーブル１４４においては、格納場所管理テーブル１４２のＳＳＤ格納フラグが「１」になっているＬＢＡに対してのみ、ＳＳＤの物理アドレスが登録される。
【００８７】
次に、ＣＭ１０１の処理について、フローチャートを用いて説明する。以下、例として、ＮＬＶＯＬ＃１に対するアクセスが行われる場合の処理について説明する。
図１４は、書き込み処理の例を示すフローチャートである。図１４の処理は、キャッシュ制御部１２１がパターン判定部１２２に対して、ＮＬＶＯＬ＃１に対してデータを書き込むための書き込みコマンドを発行した場合に実行される。
【００８８】
［ステップＳ１１］パターン判定部１２２は、発行された書き込みコマンドによるアクセスパターンを判定し、判定結果を書き込みコマンドとともにＩ／Ｏ制御部１２３に通知する。アクセスパターンがシーケンシャルアクセスである場合、ステップＳ１２の処理が実行され、アクセスパターンがランダムアクセスの場合、ステップＳ１５の処理が実行される。
【００８９】
［ステップＳ１２］Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２を参照して、書き込みが要求された書き込みデータの少なくとも一部が、対応するＳＳＤＶＯＬ＃１に格納済みであるかを判定する。Ｉ／Ｏ制御部１２３は、書き込み先領域に含まれる各ＬＢＡに対応付けられたＳＳＤ格納フラグのうち１つでも「１」である場合、書き込みデータの一部がＳＳＤＶＯＬ＃１に格納済みであると判定する。
【００９０】
Ｉ／Ｏ制御部１２３は、書き込みデータの少なくとも一部がＳＳＤＶＯＬ＃１に格納済みである場合、ステップＳ１３の処理を実行し、書き込みデータ全体がＳＳＤＶＯＬ＃１に格納されていない場合には、ステップＳ１４の処理を実行する。
【００９１】
［ステップＳ１３］Ｉ／Ｏ制御部１２３は、書き込み先領域に含まれる各ＬＢＡのうちＳＳＤ格納フラグが「１」であるＬＢＡのデータを、ＳＳＤＶＯＬ＃１内の対応する格納済みデータに上書きする。
【００９２】
Ｉ／Ｏ制御部１２３は、仮想領域管理テーブル１４４を参照して、ＳＳＤ格納フラグが「１」であったＬＢＡに対応付けられたＳＳＤ上の物理アドレスを読み出すことで、対応する書き込み済みデータのＳＳＤにおける実記憶領域を判別する。Ｉ／Ｏ制御部１２３は、ディスクアクセス制御部１２６に対して、上書き対象の物理アドレスと各アドレスに対応する上書きデータとを通知して、書き込みを依頼する。
【００９３】
これにより、キャッシュ制御部１２１から書き込みが要求されたシーケンシャルデータのうち、ＳＳＤＶＯＬ＃１に格納済みのデータが新たなデータによって更新される。従って、シーケンシャルデータが書き込まれる場合でも、そのシーケンシャルデータのうちＳＳＤＶＯＬ＃１に格納済みのデータについては、ＳＳＤＶＯＬ＃１上のデータも最新のデータに更新され、ＳＳＤＶＯＬ＃１から読み出し可能になる。
【００９４】
なお、ステップＳ１３で上書き対象となるデータは、次のステップＳ１４でＮＬＶＯＬ＃１にも書き込まれて冗長化される。このため、Ｉ／Ｏ制御部１２３は、ＳＳＤＶＯＬ＃１に上書きしたデータをホットスペアディスクに二重化しなくてよい。Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２における、上書きされたＬＢＡに対応するＮＬ格納フラグを、すべて「０」に更新する。
【００９５】
［ステップＳ１４］Ｉ／Ｏ制御部１２３は、書き込みデータをＮＬＶＯＬ＃１に書き込むようにＲＡＩＤ制御部１２５に依頼する。ＲＡＩＤ制御部１２５は、ＲＡＩＤレベルに応じたＮＬディスクに対する書き込み制御を行う。また、Ｉ／Ｏ制御部１２３は、ＮＬＶＯＬ＃１における書き込み対象のＬＢＡのうち、格納場所管理テーブル１４２においてＳＳＤ格納フラグが「０」であるＬＢＡを判別し、判別したＬＢＡに対応するＳＳＤ格納フラグを「１」に更新する。
【００９６】
［ステップＳ１５］Ｉ／Ｏ制御部１２３は、書き込みデータをＳＳＤＶＯＬ＃１およびホットスペアディスクに書き込むように、ディスクアクセス制御部１２６に依頼する。
ここで、Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２を参照し、書き込みデータのうち、ＳＳＤＶＯＬ＃１に書き込み済みでないブロック（ＳＳＤ格納フラグが「０」であるブロック）については、それらのブロックのデータを格納するための新たな実記憶領域をＳＳＤＶＯＬ＃１に割り当てて、ＳＳＤＶＯＬ＃１の実記憶領域を拡張する。具体的には、Ｉ／Ｏ制御部１２３は、書き込みデータの書き込み先ＬＢＡのうちＳＳＤＶＯＬ＃１に書き込み済みでないＬＢＡに対応するＳＳＤ上の空きアドレスを、仮想領域管理テーブル１４４に基づいて取得する。Ｉ／Ｏ制御部１２３は、取得したアドレスを、仮想領域管理テーブル１４４における書き込み済みでないＬＢＡに対応付けて登録する。これにより、ＳＳＤＶＯＬ＃１が拡張される。また、Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２における書き込み済みでないＬＢＡに対応するＳＳＤ格納フラグおよびＨＳ格納フラグを、「１」に更新する。
【００９７】
また、Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２を参照し、書き込み対象のＬＢＡのうち、ＮＬＶＯＬ＃１に古いデータが書き込まれているＬＢＡ（ＮＬ格納フラグが「１」であるＬＢＡ）を抽出する。Ｉ／Ｏ制御部１２３は、抽出したＬＢＡに対応付けられていたＮＬ格納フラグを「０」に更新して、ＮＬＶＯＬ＃１上の古いデータを無効化する。
【００９８】
なお、Ｉ／Ｏ制御部１２３は、ＳＳＤＶＯＬ＃１への書き込みが完了した時点で、ホットスペアディスクへの書き込みが完了していなくても、キャッシュ制御部１２１に対して書き込み完了を通知してもよい。これにより、キャッシュ制御部１２１によるライトバック処理時間を短縮することができる。
【００９９】
［ステップＳ１６］Ｉ／Ｏ制御部１２３は、状態管理テーブル１４３において、書き込み先のＬＢＡが含まれるトラックに対応付けられたアクセス頻度をインクリメントするとともに、ＳＳＤ格納率を必要に応じて更新する。Ｉ／Ｏ制御部１２３は、ＳＳＤＶＯＬ＃１に書き込みを行った場合には、書き込み先に対応するトラックに対応付けられたＳＳＤアクセス頻度をインクリメントするとともに、ＳＳＤ格納率を更新する。また、Ｉ／Ｏ制御部１２３は、ＮＬＶＯＬ＃１に書き込みを行った場合には、書き込み先に対応するトラックに対応付けられたＮＬアクセス頻度をインクリメントする。
【０１００】
なお、Ｉ／Ｏ制御部１２３は、書き込みの完了をキャッシュ制御部１２１に通知した後に、ステップＳ１６の処理を実行してもよい。
図１５は、読み出し処理の例を示すフローチャートである。図１５の処理は、キャッシュ制御部１２１がＩ／Ｏ制御部１２３に対して、ＮＬＶＯＬ＃１からデータを読み出すための読み出しコマンドを発行した場合に実行される。
【０１０１】
［ステップＳ２１］Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２において読み出し対象のＬＢＡに対応付けられたＳＳＤ格納フラグを参照して、読み出し対象のデータがすべてＳＳＤＶＯＬ＃１に格納されているかを判定する。Ｉ／Ｏ制御部１２３は、読み出し対象のデータがすべてＳＳＤＶＯＬ＃１に格納されている場合には、ステップＳ２２の処理を実行する。一方、Ｉ／Ｏ制御部１２３は、読み出し対象のデータの少なくとも一部がＳＳＤＶＯＬ＃１に格納されていない場合には、ステップＳ２３の処理を実行する。
【０１０２】
［ステップＳ２２］Ｉ／Ｏ制御部１２３は、読み出し対象のデータをＳＳＤＶＯＬ＃１から読み出すように、ディスクアクセス制御部１２６に依頼する。このとき、Ｉ／Ｏ制御部１２３は、仮想領域管理テーブル１４４から、読み出し対象のデータの格納場所を示す実アドレスを読み出して、ディスクアクセス制御部１２６に通知する。
【０１０３】
［ステップＳ２３］Ｉ／Ｏ制御部１２３は、格納場所管理テーブル１４２において読み出し対象のＬＢＡに対応付けられたＮＬ格納フラグを参照して、読み出し対象のデータがすべてＮＬＶＯＬ＃１に格納されているかを判定する。Ｉ／Ｏ制御部１２３は、読み出し対象のデータがすべてＮＬＶＯＬ＃１に格納されている場合には、ステップＳ２５の処理を実行する。一方、Ｉ／Ｏ制御部１２３は、読み出し対象のデータの少なくとも一部がＮＬＶＯＬ＃１に格納されていない場合には、ステップＳ２４の処理を実行する。
【０１０４】
［ステップＳ２４］Ｉ／Ｏ制御部１２３は、読み出し対象のデータのうち、ＳＳＤＶＯＬ＃１に格納されているデータの読み出しを、ディスクアクセス制御部１２６に依頼する。このとき、Ｉ／Ｏ制御部１２３は、仮想領域管理テーブル１４４から対応するデータの格納場所を示す実アドレスを読み出して、ディスクアクセス制御部１２６に通知する。
【０１０５】
［ステップＳ２５］Ｉ／Ｏ制御部１２３は、読み出し対象のデータのうち、ＮＬＶＯＬ＃１に格納されているデータの読み出しを、ＲＡＩＤ制御部１２５に依頼する。
なお、ステップＳ２４，Ｓ２５の両方が実行される場合、Ｉ／Ｏ制御部１２３はステップＳ２５において、ＳＳＤＶＯＬ＃１から読み出されたデータとＮＬＶＯＬ＃１から読み出されたデータとをマージして読み出しデータを生成し、その読み出しデータをキャッシュ制御部１２１に転送する。
【０１０６】
［ステップＳ２６］Ｉ／Ｏ制御部１２３は、状態管理テーブル１４３において、読み出し元のＬＢＡが含まれるトラックに対応付けられたアクセス頻度をインクリメントする。Ｉ／Ｏ制御部１２３は、ＳＳＤＶＯＬ＃１から読み出しを行った場合には、読み出し元に対応するトラックに対応付けられたＳＳＤアクセス頻度をインクリメントする。また、Ｉ／Ｏ制御部１２３は、ＮＬＶＯＬ＃１から読み出しを行った場合には、読み出し元に対応するトラックに対応付けられたＮＬアクセス頻度をインクリメントする。
【０１０７】
なお、Ｉ／Ｏ制御部１２３は、読み出しデータをキャッシュ制御部１２１に転送して応答した後に、ステップＳ２６の処理を実行してもよい。
図１６は、マージ処理の例を示すフローチャートである。転送制御部１２４は、Ｉ／Ｏ制御部１２３がキャッシュ制御部１２１から書き込み要求コマンドを受信するたびに、図１６に示す処理を実行する。ただし、図１６の処理の実行開始タイミングは、Ｉ／Ｏ制御部１２３がキャッシュ制御部１２１に、書き込み要求コマンドに対する応答を行った後である。これにより、書き込み要求に対する応答の遅延を抑制することができる。
【０１０８】
［ステップＳ３１］転送制御部１２４は、書き込み要求コマンドによって指定された書き込み先領域を含むトラックを先頭のトラックから順に選択し、ステップＳ３１からループ端のステップＳ３５までの処理をトラックごとに繰り返す。
【０１０９】
［ステップＳ３２］転送制御部１２４は、状態管理テーブル１４３から、選択したトラックに対応付けられたＳＳＤ格納率を読み出し、ＳＳＤ格納率が所定の割合以上かを判定する。転送制御部１２４は、ＳＳＤ格納率が所定割合以上の場合には、ステップＳ３３の処理を実行し、所定割合未満の場合には、ステップＳ３５の処理を実行する。
【０１１０】
［ステップＳ３３］転送制御部１２４は、格納場所管理テーブル１４２に基づき、選択したトラックについてのデータをＳＳＤＶＯＬ＃１とＮＬＶＯＬ＃１から読み出す。転送制御部１２４は、ＳＳＤＶＯＬ＃１からのデータの読み出しをディスクアクセス制御部１２６に依頼し、ＮＬＶＯＬ＃１からのデータの読み出しをＲＡＩＤ制御部１２５に依頼する。
【０１１１】
［ステップＳ３４］転送制御部１２４は、ステップＳ３３で読み出したトラックのデータをマージし、マージされたデータをＮＬＶＯＬ＃１上の同じトラックに上書きするようにＲＡＩＤ制御部１２５に依頼する。
【０１１２】
［ステップＳ３５］転送制御部１２４は、書き込み先領域を含む全トラックについてステップＳ３１〜Ｓ３５の処理を繰り返した後、マージ処理を終了する。
なお、マージ処理は、例えば、書き込み要求コマンドの受信に関係なく実行されてもよい。例えば、転送制御部１２４は、図１６のステップＳ３２〜Ｓ３４の処理を状態管理テーブル１４３に登録された全トラックについて実行することでマージ処理を行い、このようなマージ処理を一定時間ごとに繰り返す。
【０１１３】
図１７は、アクセス頻度に応じたＳＳＤ解放処理の例を示すフローチャートである。
［ステップＳ４１］転送制御部１２４は、状態管理テーブル１４３を先頭のトラックから順に選択し、ステップＳ４１からループ端のステップＳ４６までの処理をトラックごとに繰り返す。
【０１１４】
［ステップＳ４２］転送制御部１２４は、選択したトラックに対応付けられたＳＳＤアクセス頻度を読み出し、ＳＳＤアクセス頻度が所定のしきい値以下かを判定する。転送制御部１２４は、ＳＳＤアクセス頻度が所定のしきい値以下である場合には、ステップＳ４３の処理を実行し、所定のしきい値を超えている場合には、ステップＳ４６の処理を実行する。
【０１１５】
［ステップＳ４３］転送制御部１２４は、格納場所管理テーブル１４２に基づき、選択したトラックについてのＳＳＤＶＯＬ＃１上のデータが、すべてＮＬＶＯＬ＃１に書き込み済みであるかを判定する。転送制御部１２４は、ＳＳＤＶＯＬ＃１上のデータがすべてＮＬＶＯＬ＃１にも書き込み済みである場合には、ステップＳ４５の処理を実行する。一方、転送制御部１２４は、ＳＳＤＶＯＬ＃１上のデータの中にＮＬＶＯＬ＃１に書き込み済みでないデータがある場合には、ステップＳ４４の処理を実行する。
【０１１６】
このステップＳ４３では、転送制御部１２４は、格納場所管理テーブル１４２における、選択したトラックに含まれるＬＢＡのレコードから、ＳＳＤ格納フラグおよびＮＬ格納フラグを読み取る。転送制御部１２４は、ＳＳＤ格納フラグが「１」であり、かつＳＳＤ格納フラグが「０」であるＬＢＡがある場合、そのＬＢＡについてのＳＳＤＶＯＬ＃１上のデータはＮＬＶＯＬ＃１に書き込まれていないと判定する。一方、転送制御部１２４は、ＳＳＤ格納フラグが「１」であり、かつＮＬ格納フラグが「１」であるＬＢＡについては、そのＬＢＡについてのデータがＳＳＤＶＯＬ＃１とＮＬＶＯＬ＃１の両方に書き込まれていると判定する。
【０１１７】
［ステップＳ４４］転送制御部１２４は、ＳＳＤ格納フラグが「１」であり、かつＮＬ格納フラグが「０」であるＬＢＡのデータについて、ＳＳＤＶＯＬ＃１から読み出すようにディスクアクセス制御部１２６に依頼する。転送制御部１２４は、読み出されたデータをＮＬＶＯＬ＃１に書き込むようにＲＡＩＤ制御部１２５に依頼する。
【０１１８】
なお、このステップＳ４４では、転送制御部１２４は例えば、図１６のステップＳ３３，Ｓ３４のように、該当トラックについてＳＳＤＶＯＬ＃１とＮＬＶＯＬ＃１からデータを読み出してマージし、マージされたデータをＮＬＶＯＬ＃１に上書きしてもよい。
【０１１９】
［ステップＳ４５］転送制御部１２４は、選択したトラックについてのＳＳＤＶＯＬ＃１上のデータを削除する。このステップＳ４５では、転送制御部１２４は、格納場所管理テーブル１４２における、選択したトラックに含まれるＬＢＡに対応付けられたＳＳＤ格納フラグを、すべて「０」に更新する。また、転送制御部１２４は、仮想領域管理テーブル１４４における、選択したトラックに含まれるＬＢＡに対応付けられた物理アドレスを、すべて消去する。後者の処理により、ステップＳ４４でＳＳＤＶＯＬ＃１から読み出されたデータの格納のためにＳＳＤＶＯＬ＃１に割り当てられていたＳＳＤの物理記憶領域が解放されて、その物理記憶領域が未使用領域に変更される。
【０１２０】
［ステップＳ４６］転送制御部１２４は、状態管理テーブル１４３の全トラックについてステップＳ４１〜Ｓ４６の処理を繰り返した後、ＳＳＤ解放処理を終了する。
なお、以上の図１７の処理は、例えば、一定時間ごとに繰り返される。
【０１２１】
図１８は、ＮＬＶＯＬからＳＳＤＶＯＬへのコピー処理の例を示すフローチャートである。転送制御部１２４は、Ｉ／Ｏ制御部１２３が、キャッシュ制御部１２１からの書き込み要求コマンドに応じてＮＬＶＯＬに書き込みを行うか、あるいは、キャッシュ制御部１２１からの読み出し要求コマンドに応じてＮＬＶＯＬまたはＳＳＤＶＯＬから読み出しを行ったときに、図１８に示す処理を実行する。ただし、図１８の処理の実行開始タイミングは、Ｉ／Ｏ制御部１２３がキャッシュ制御部１２１に、書き込み要求コマンドまたは読み出し要求コマンドに対する応答を行った後である。これにより、書き込み要求または読み出し要求に対する応答の遅延を抑制することができる。
【０１２２】
［ステップＳ５１］転送制御部１２４は、書き込み要求コマンドによって指定された書き込み先領域または読み出し要求コマンドによって指定された読み出し元領域を含むトラックを、先頭のトラックから順に選択し、ステップＳ５１からループ端のステップＳ５４までの処理をトラックごとに繰り返す。
【０１２３】
［ステップＳ５２］転送制御部１２４は、状態管理テーブル１４３から、選択したトラックに対応付けられたＮＬアクセス頻度を読み出し、ＮＬアクセス頻度が所定のしきい値を超えるかを判定する。転送制御部１２４は、ＮＬアクセス頻度が所定のしきい値を超える場合には、ステップＳ５３の処理を実行し、所定のしきい値以下である場合には、ステップＳ５４の処理を実行する。
【０１２４】
［ステップＳ５３］転送制御部１２４は、選択したトラックのデータをＮＬＶＯＬ＃１からＳＳＤＶＯＬ＃１にコピーするための処理を実行する。
このステップＳ５３では、転送制御部１２４は、格納場所管理テーブル１４２を参照して、該当トラックに含まれる各ＬＢＡのデータのうち、ＮＬＶＯＬ＃１に格納されているがＳＳＤＶＯＬ＃１に格納されていないデータを判別する。転送制御部１２４は、判別したデータをＮＬＶＯＬ＃１から読み出すように、ＲＡＩＤ制御部１２５に依頼する。転送制御部１２４は、ＮＬＶＯＬ＃１から読み出したデータを格納するためのＳＳＤの実記憶領域をＳＳＤＶＯＬ＃１に割り当て、割り当てたＳＳＤＶＯＬ＃１にＮＬＶＯＬ＃１から読み出したデータを書き込むように、ディスクアクセス制御部１２６に依頼する。
【０１２５】
［ステップＳ５４］転送制御部１２４は、書き込み先領域または読み出し元領域を含む全トラックについてステップＳ５１〜Ｓ５４の処理を繰り返した後、コピー処理を終了する。
【０１２６】
なお、ＮＬＶＯＬからＳＳＤＶＯＬへのコピー処理は、例えば、書き込み要求コマンドまたは読み出し要求コマンドの受信に関係なく実行されてもよい。例えば、転送制御部１２４は、図１８のステップＳ５２〜Ｓ５３の処理を状態管理テーブル１４３に登録された全トラックについて実行することで上記コピー処理を行い、このようなコピー処理を一定時間ごとに繰り返す。
【０１２７】
図１９は、ＳＳＤの残容量に応じたＳＳＤ解放処理の例を示すフローチャートである。
転送制御部１２４は、キャッシュ制御部１２１からの書き込み要求コマンドに応じてＩ／Ｏ制御部１２３がＳＳＤＶＯＬへ書き込みを行ったとき、あるいは、転送制御部１２４が図１８に示したＮＬＶＯＬからＳＳＤＶＯＬへのコピー処理を実行することによりＳＳＤＶＯＬへ書き込みを行ったときに、図１９の処理を実行する。ただし、前者の場合、図１９の処理の実行開始タイミングは、Ｉ／Ｏ制御部１２３がキャッシュ制御部１２１に、書き込み要求コマンドに対する応答を行った後である。
【０１２８】
なお、図１９の処理は、上記のようなＳＳＤＶＯＬへの書き込みタイミングに関係なく行われてもよい。例えば、転送制御部１２４は、一定時間ごとに図１９の処理を繰り返し実行してもよい。
【０１２９】
［ステップＳ６１］転送制御部１２４は、ＳＳＤの残容量が所定の第１のしきい値以下かを判定する。転送制御部１２４は、ＳＳＤの残容量が第１のしきい値以下である場合に、ステップＳ６２の処理を実行し、残容量が第１のしきい値を超えている場合には、ＳＳＤ解放処理を終了する。
【０１３０】
なお、転送制御部１２４は、仮想領域管理テーブル１４４に基づいて、各ＳＳＤＶＯＬに割り当てられていないＳＳＤの実記憶領域を判別することで、ＳＳＤの残容量を検出することができる。
【０１３１】
［ステップＳ６２］転送制御部１２４は、Ｉ／Ｏ制御部１２３によるデータの書き込み先をＮＬＶＯＬに限定し、ＳＳＤＶＯＬへの新規データの書き込みを禁止する。
［ステップＳ６３］転送制御部１２４は、全ＮＬＶＯＬについての状態管理テーブル１４３から、ＳＳＤアクセス頻度が最低であるトラックを選択する。
【０１３２】
［ステップＳ６４］転送制御部１２４は、ステップＳ６３で選択したトラックのデータをＳＳＤＶＯＬから読み出してＮＬＶＯＬに書き込むための処理を実行する。
このステップＳ６４では、転送制御部１２４は、格納場所管理テーブル１４２を参照して、該当トラックに含まれる各ＬＢＡのデータのうち、ＳＳＤＶＯＬに格納されているがＮＬＶＯＬに格納されていないデータを判別する。転送制御部１２４は、判別したデータをＳＳＤＶＯＬから読み出すように、ディスクアクセス制御部１２６に依頼する。転送制御部１２４はさらに、ＳＳＤＶＯＬから読み出したデータを対応するＮＬＶＯＬに書き込むように、ＲＡＩＤ制御部１２５に依頼する。
【０１３３】
［ステップＳ６５］転送制御部１２４は、ステップＳ６４でＳＳＤＶＯＬから読み出したデータを、ＳＳＤＶＯＬから削除する。このステップＳ６５では、転送制御部１２４は、格納場所管理テーブル１４２における、該当トラックに含まれるＬＢＡに対応付けられたＳＳＤ格納フラグを、すべて「０」に更新する。また、転送制御部１２４は、仮想領域管理テーブル１４４における、該当トラックに含まれるＬＢＡに対応付けられた物理アドレスを、すべて消去する。後者の処理により、ステップＳ６５でＳＳＤＶＯＬから読み出されたデータの格納のためにＳＳＤＶＯＬに割り当てられていたＳＳＤの物理記憶領域が解放されて、その物理記憶領域が未使用領域に変更される。
【０１３４】
［ステップＳ６６］転送制御部１２４は、ステップＳ６５でのデータ削除後におけるＳＳＤ残容量を計算し、算出されたＳＳＤ残容量が、第１のしきい値より大きい所定の第２のしきい値以上であるかを判定する。転送制御部１２４は、ＳＳＤ残容量が第２のしきい値未満である場合には、ステップＳ６３の処理を再度実行し、ＳＳＤ残容量が第２のしきい値以上である場合には、ＳＳＤ解放処理を終了する。
【０１３５】
上記の図１９の処理によれば、転送制御部１２４は、ＳＳＤＶＯＬに格納された全データのうち、アクセス頻度が低い順に一定量（第２のしきい値と第１のしきい値との差分）のデータがＳＳＤから削除され、ＳＳＤの残容量が増加する。
【０１３６】
なお、ＳＳＤからのデータ削除の方法としては、他の方法を用いることもできる。例えば、転送制御部１２４は、ＳＳＤＶＯＬから、アクセス頻度ではなく書き込み時刻が古い順に一定量のデータを削除してもよい。あるいは、転送制御部１２４は、ＳＳＤＶＯＬごとに一定量のデータをＳＳＤから削除してもよい。この場合、転送制御部１２４は、例えば、ＳＳＤＶＯＬごとにアクセス頻度の低い順に、あるいは書き込み時刻が古い順に、一定量だけデータを削除する。
【０１３７】
なお、上記の各実施の形態に示したストレージ制御装置の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。
【０１３８】
コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。なお、プログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
【０１３９】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１４０】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１４１】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
以上の各実施の形態に関し、さらに以下の付記を開示する。
【０１４２】
（付記１）  第１の記憶装置と、
前記第１の記憶装置よりアクセス速度の高い第２の記憶装置と、
前記第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するストレージ制御装置と、
を備え、
前記ストレージ制御装置は、
前記論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定する判定部と、
前記書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを前記論理記憶領域に書き込み、前記書き込みのパターンがランダムアクセスである場合には、前記第２の記憶装置の記憶領域を仮想化した仮想記憶領域に前記書き込みデータを書き込む制御部と、
を有することを特徴とするストレージシステム。
【０１４３】
（付記２）  前記制御部は、前記仮想記憶領域への前記書き込みデータの書き込みとは非同期に、前記仮想記憶領域に書き込まれたデータを、前記論理記憶領域における対応する位置に書き込むことを特徴とする付記１記載のストレージシステム。
【０１４４】
（付記３）  前記制御部は、前記論理記憶領域を分割して得られる複数の分割領域のうち、データが所定割合以上前記仮想記憶領域に書き込まれている分割領域を選択し、前記選択された分割領域のうち前記仮想記憶領域に書き込まれているデータを、前記論理記憶領域における対応する位置に書き込むことを特徴とする付記２記載のストレージシステム。
【０１４５】
（付記４）  前記制御部は、前記仮想記憶領域に書き込まれたデータのうち、アクセス頻度が所定のしきい値以下のデータを、前記論理記憶領域における対応する位置に書き込むとともに、当該データを前記仮想記憶領域から削除することを特徴とする付記２または３記載のストレージシステム。
【０１４６】
（付記５）  前記制御部は、前記第２の記憶装置の残容量が所定のしきい値以下になったとき、前記仮想記憶領域に書き込まれたデータを前記論理記憶領域におけるそれぞれ対応する位置に書き込むとともに、選択した各データを前記仮想記憶領域から削除することを特徴とする付記２記載のストレージシステム。
【０１４７】
（付記６）  前記制御部は、前記論理記憶領域からのデータの読み出しが要求されたとき、読み出し対象のすべてのデータが前記仮想記憶領域に格納されている場合には、当該データを前記仮想記憶領域から読み出すことを特徴とする付記１〜５のいずれか１つに記載のストレージシステム。
【０１４８】
（付記７）  前記制御部は、前記論理記憶領域に書き込まれたデータのアクセス頻度を、前記論理記憶領域を分割して得られる分割領域ごとに検出し、アクセス頻度が所定のしきい値を超えた分割領域のデータを前記仮想記憶領域に複写することを特徴とする付記６記載のストレージシステム。
【０１４９】
（付記８）  前記制御部は、前記書き込みデータを前記論理記憶領域に書き込む際、前記書き込みデータの一部が前記仮想記憶領域に格納済みである場合には、前記仮想記憶領域に格納済みのデータを新たなデータで上書きすることを特徴とする付記６または７記載のストレージシステム。
【０１５０】
（付記９）  前記ストレージシステムは、前記第１の記憶装置を複数備え、
前記論理記憶領域は、複数の前記第１の記憶装置の記憶領域によって実現され、
前記制御部は、前記論理記憶領域へのデータの書き込みを、データが異なる前記第１の記憶装置に冗長化されるように制御する、
ことを特徴とする付記１〜８のいずれか１つに記載のストレージシステム。
【０１５１】
（付記１０）  前記ストレージシステムは、第３の記憶装置を備え、
前記制御部は、前記書き込みデータを前記仮想記憶領域に書き込む際、前記書き込みデータを前記第３の記憶装置にも書き込む、
ことを特徴とする付記９記載のストレージシステム。
【０１５２】
（付記１１）  第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するためのストレージ制御方法において、
コンピュータが、
前記論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定し、
前記書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを前記論理記憶領域に書き込み、前記書き込みのパターンがランダムアクセスである場合には、前記第１の記憶装置よりアクセス速度の高い第２の記憶装置の記憶領域を仮想化した仮想記憶領域に前記書き込みデータを書き込む、
ことを特徴とするストレージ制御方法。
【０１５３】
（付記１２）  前記コンピュータが、前記仮想記憶領域への前記書き込みデータの書き込みとは非同期に、前記仮想記憶領域に書き込まれたデータを、前記論理記憶領域における対応する位置に書き込む、
処理をさらに含むことを特徴とする付記１１記載のストレージ制御方法。
【０１５４】
（付記１３）  前記仮想記憶領域に書き込まれたデータを前記論理記憶領域に書き込む処理では、前記論理記憶領域を分割して得られる複数の分割領域のうち、データが所定割合以上前記仮想記憶領域に書き込まれている分割領域を選択し、前記選択された分割領域のうち前記仮想記憶領域に書き込まれているデータを、前記論理記憶領域における対応する位置に書き込むことを特徴とする付記１２記載のストレージ制御方法。
【０１５５】
（付記１４）  前記仮想記憶領域に書き込まれたデータを前記論理記憶領域に書き込む処理では、前記仮想記憶領域に書き込まれたデータのうち、アクセス頻度が所定のしきい値以下のデータを、前記論理記憶領域における対応する位置に書き込むとともに、当該データを前記仮想記憶領域から削除することを特徴とする付記１２または１３記載のストレージ制御方法。
【０１５６】
（付記１５）  前記コンピュータが、前記論理記憶領域からのデータの読み出しが要求されたとき、読み出し対象のすべてのデータが前記仮想記憶領域に格納されている場合には、当該データを前記仮想記憶領域から読み出す、
処理をさらに含むことを特徴とする付記１１〜１４のいずれか１つに記載のストレージ制御方法。
【０１５７】
（付記１６）  前記コンピュータが、前記論理記憶領域に書き込まれたデータのアクセス頻度を、前記論理記憶領域を分割して得られる分割領域ごとに検出し、アクセス頻度が所定のしきい値を超えた分割領域のデータを前記仮想記憶領域に複写する、
処理をさらに含むことを特徴とする付記１５記載のストレージ制御方法。
【０１５８】
（付記１７）  前記書き込みデータを前記論理記憶領域に書き込む処理では、前記書き込みデータの一部が前記仮想記憶領域に格納済みである場合には、前記仮想記憶領域に格納済みのデータを新たなデータで上書きすることを特徴とする付記１５または１６記載のストレージ制御方法。
【０１５９】
（付記１８）  前記論理記憶領域は、複数の前記第１の記憶装置の記憶領域によって実現され、
前記論理記憶領域に対するデータの書き込みは、データが異なる前記第１の記憶装置に冗長化されるように制御される、
ことを特徴とする付記１１〜１７のいずれか１つに記載のストレージ制御方法。
【０１６０】
（付記１９）  前記書き込みデータを前記仮想記憶領域に書き込む処理では、同じ前記書き込みデータを第３の記憶装置にも書き込むことを特徴とする付記１８記載のストレージ制御方法。
【０１６１】
（付記２０）  第１の記憶装置の記憶領域によって実現される論理記憶領域に対するデータの書き込みを制御するためのストレージ制御プログラムにおいて、
コンピュータに、
前記論理記憶領域へのデータの書き込みが要求されたとき、書き込みのパターンがシーケンシャルアクセスであるかランダムアクセスであるかを判定し、
前記書き込みのパターンがシーケンシャルアクセスである場合には、書き込みデータを前記論理記憶領域に書き込み、前記書き込みのパターンがランダムアクセスである場合には、前記第１の記憶装置よりアクセス速度の高い第２の記憶装置の記憶領域を仮想化した仮想記憶領域に前記書き込みデータを書き込む、
処理を実行させることを特徴とするストレージ制御プログラム。
【符号の説明】
【０１６２】
１  ストレージシステム
１０  ストレージ制御装置
１１  判定部
１２  制御部
２１，２２  記憶装置
３１  論理記憶領域
３２  仮想記憶領域
【図１】
2014041471.tif 000003
【図２】
2014041471.tif 000004
【図３】
2014041471.tif 000005
【図４】
2014041471.tif 000006
【図５】
2014041471.tif 000007
【図６】
2014041471.tif 000008
【図７】
2014041471.tif 000009
【図８】
2014041471.tif 000010
【図９】
2014041471.tif 000011
【図１０】
2014041471.tif 000012
【図１１】
2014041471.tif 000013
【図１２】
2014041471.tif 000014
【図１３】
2014041471.tif 000015
【図１４】
2014041471.tif 000016
【図１５】
2014041471.tif 000017
【図１６】
2014041471.tif 000018
【図１７】
2014041471.tif 000019
【図１８】
2014041471.tif 000020
【図１９】
2014041471.tif 000021