(57)【特許請求の範囲】
【請求項１】
アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶する記憶部と、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報によって前記記憶領域が使用されている状況が示される場合、自装置による当該書き込みデータに対するリードモディファイライト処理を実行する制御部と、
を有することを特徴とするストレージ制御装置。
【請求項２】
前記制御部は、
自装置がコマンドを前記ストレージに送信したことに応じた前記コマンドの実行結果とともに前記使用情報を受信する、
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記制御部は、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報によって前記記憶領域が使用されていない状況が示される場合、当該書き込みデータの書き込み要求を前記ストレージに送信する処理を実行する、
ことを特徴とする請求項１または２に記載のストレージ制御装置。
【請求項４】
前記制御部は、
前記ストレージへの書き込みデータが発生した際に、前記書き込みデータがアラインドかアンアラインドかを判定し、
前記書き込みデータがアンアラインドであると判定した場合、前記使用情報によって前記記憶領域が使用されている状況が示される場合に、自装置による当該書き込みデータに対するリードモディファイライト処理を実行する、
ことを特徴とする請求項１〜３のいずれか一つに記載のストレージ制御装置。
【請求項５】
前記制御部は、
前記書き込みデータがアンアラインドであると判定した場合、前記使用情報によって前記記憶領域が使用されていない状況が示される場合には、当該書き込みデータの書き込み要求を前記ストレージに送信する処理を実行する、
ことを特徴とする請求項４に記載のストレージ制御装置。
【請求項６】
コンピュータが、
アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶部に記憶させ、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報によって前記記憶領域が使用されている状況が示される場合、自装置による当該書き込みデータに対するリードモディファイライト処理を実行する、
処理を実行することを特徴とするストレージ制御方法。
【請求項７】
コンピュータに、
アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶部に記憶させ、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報によって前記記憶領域が使用されている状況が示される場合、自装置による当該書き込みデータに対するリードモディファイライト処理を実行する、
処理を実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
従来、所定値で割り切れるアドレス範囲へのアクセスだけが行えるストレージに対して、所定値で割り切れないアドレス範囲の書き込みデータであるアンアラインドとなる書き込みデータを書き込む際に、リードモディファイライト処理を行う技術がある。また、リードモディファイライト処理に用いる記憶領域を有するストレージがある。
【０００３】
関連する先行技術として、例えば、データ記憶装置において、リードモディファイライト処理の前にバッファメモリに格納されているサブセクタの各データを結合して、ロングセクタのフォーマットに変換するものがある。また、リードモディファイライト処理の実行主体をホスト制御部とした場合の処理速度と、メディア制御部とした場合の処理速度を計測し、処理速度の速い方をリードモディファイライト処理の実行主体とする技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１５７０６８号公報
【特許文献２】特開２０１０−３３３９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術によれば、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等のストレージの上位となる装置が、ストレージにリードモディファイライト処理を行わせると、アンアラインドとなる書き込みデータの書き込み要求に対する応答性能が低下する場合がある。例えば、リードモディファイライト処理に用いる記憶領域に空き領域がない際に、ストレージにリードモディファイライト処理を行わせると、アンアラインドとなる書き込みデータの書き込み要求に対する応答性能が低下する。
【０００６】
１つの側面では、本発明は、アンアラインドとなる書き込みデータの書き込み要求に対する応答性能の低下を抑制できるストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、アンアラインドとなる書き込みデータの書き込み要求に応じて書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶し、ストレージへのアンアラインドとなる書き込みデータが発生した際に、使用情報に基づいて、書き込みデータの書き込み要求をストレージに送信する処理、または、自装置による書き込みデータに対するリードモディファイライト処理のいずれか一方を実行するストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、アンアラインドとなる書き込みデータの書き込み要求に対する応答性能の低下を抑制できるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、本実施の形態にかかるストレージ制御装置１０１の動作例を示す説明図である。
【図２】図２は、情報処理システム２００の一例を示す説明図である。
【図３】図３は、ディスクアレイ装置２０２のハードウェア構成例を示す説明図である。
【図４】図４は、管理装置２０１のハードウェア構成例を示す説明図である。
【図５】図５は、ＨＤＤ１０２＃０の例を示す説明図である。
【図６】図６は、ＣＭ３０１の機能構成例を示す説明図である。
【図７】図７は、ライトコマンド以外のコマンド発行時処理手順の一例を示すフローチャートである。
【図８】図８は、ライトコマンド発行時処理手順の一例を示すフローチャート（その１）である。
【図９】図９は、ライトコマンド発行時処理手順の一例を示すフローチャート（その２）である。
【図１０】図１０は、ライトコマンド発行時処理手順の一例を示すフローチャート（その３）である。
【図１１】図１１は、メディアキャッシュ状態管理テーブル６１１の記憶内容の一例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、開示のストレージ制御装置、ストレージ制御方法、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１１】
図１は、本実施の形態にかかるストレージ制御装置１０１の動作例を示す説明図である。ストレージ制御装置１０１は、１つ以上のストレージを制御するコンピュータである。ストレージは、データを保存する装置である。例えば、ストレージは、例えば、ＨＤＤやＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等である。以下の例では、ストレージがＨＤＤであるとする。例えば、ストレージ制御装置１０１は、上位となるサーバ等に、ストレージの記憶領域を提供する。
【００１２】
また、ストレージ制御装置１０１は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）技術により、複数のＨＤＤを組み合わせて仮想的なディスクを提供する。ＲＡＩＤ技術には、仮想的なディスクの形成の仕方を表すＲＡＩＤレベルが存在する。ここで、本実施の形態では、ＲＡＩＤ０〜６のうちのいずれのＲＡＩＤレベルであってもよく、また、ＲＡＩＤ１＋５というように、ＲＡＩＤレベルを組み合わせたレベルを対象としてもよい。
【００１３】
また、近年、ＨＤＤの大容量化および１度に処理されるデータ量の増大化に伴い、物理セクタのサイズを、５１２バイト（Ｂｙｔｅｓ）から４キロバイト（ＫＢ：Ｋｉｌｏ−Ｂｙｔｅｓ）に拡張し、ＨＤＤ内のトラック上のギャップを減らすＡｄｖａｎｃｅｄ  Ｆｏｒｍａｔという方法がある。Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応したＨＤＤは、５１２バイトアクセスだけを行うホストに対応するために、ＨＤＤの内部は４ＫＢの物理セクタでありながら、外部からは５１２バイトの論理セクタとしてアクセスが可能なエミュレート機能を有する。
【００１４】
Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応したＨＤＤは、エミュレート機能により、５１２バイト単位でのアクセスが可能である。以下の説明では、単にＨＤＤと記載した場合、Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応したＨＤＤであるとする。ＨＤＤは、物理セクタのサイズである４ＫＢのバウンダリアクセスとならない書き込みにおいては、ＨＤＤの物理セクタへの書き込みは４ＫＢ単位でしか実施できない。ここで、バウンダリアクセスとは、所定値で割り切れるアドレス範囲へのアクセスである。また、所定値で割り切れるアドレス範囲のことを、「所定値＋境界（バウンダリ）」と呼ぶことがある。例えば、４ＫＢで割り切れるアドレス範囲のことを「４ＫＢ境界」と呼ぶことがある。所定値は、４ＫＢ、８ＫＢ、１６ＫＢ等どのような値でもよく、本実施の形態では、所定値は、４ＫＢとなる。
【００１５】
また、所定値で割り切れるアドレス範囲となる条件は、アドレス範囲の先頭のアドレスと末尾のアドレスとが所定値で割り切れるアドレスとなることである。例えば、アドレス範囲の先頭のアドレスが所定値で割り切れるアドレスであり、かつ、アクセス範囲となるデータ長が、所定値で割り切れる値となるアクセスは、バウンダリアクセスとなる。
【００１６】
以下の記載では、バウンダリアクセスとなるアクセス先のデータを、アラインド（Ａｌｉｇｎｅｄ）となるデータと称する。すなわち、アラインドとなるデータは、データの先頭アドレスと末尾のアドレスとが所定値で割り切れるアドレスとなるデータである。これに対し、バウンダリアクセスとならないアクセス先のデータを、アンアラインド（ＵｎＡｌｉｇｎｅｄ）となるデータと称する。すなわち、アンアラインドとなるデータは、データの先頭アドレスまたは末尾のアドレスの少なくともいずれか一方のアドレスが所定値で割り切れないアドレスとなるデータである。
【００１７】
アンアラインドとなる書き込みデータの書き込み要求を受け付けると、ＨＤＤは、以下に示すリードモディファイライト（ＲＭＷ：Ｒｅａｄ  Ｍｏｄｉｆｙ  Ｗｒｉｔｅ）処理を行う。まず、ＨＤＤは、アンアラインドとなる書き込みデータをメディアキャッシュ（Ｍｅｄｉａ  Ｃａｃｈｅ）と呼ばれる領域に書き込む。メディアキャッシュを含めたＨＤＤのハードウェア構成を図５で示す。次に、ＨＤＤは、４ＫＢ境界の物理セクタのデータをＨＤＤ内のＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）に読み出す（Ｒｅａｄ）。ＨＤＤ内のＤＲＡＭは、任意のアドレスにアクセスすることができる記憶領域である。そして、ＨＤＤは、メディアキャッシュ上のデータについて、サーバ等の上位からの書き込み要求のあった論理セクタの書き込みデータを更新する（Ｍｏｄｉｆｙ）。ここで、更新する際に、ＨＤＤは、ＨＤＤ内のＤＲＡＭに書き込まれた４ＫＢ境界の物理セクタのデータに、アンアラインドとなる書き込みデータを上書きすることにより、更新を行う。
【００１８】
次に、ＨＤＤは、更新されたメディアキャッシュ上のデータを物理セクタに書き戻す（Ｗｒｉｔｅ）。なお、アラインドとなる書き込みデータの書き込み要求については、ＨＤＤは、ＲＭＷ処理を行わず、直接磁気ディスクに書き込みデータを書き込む。
【００１９】
また、ＲＭＷ処理を、ＨＤＤの上位となる装置で行うこともできる。一般的に、メディアキャッシュの利用により、ＨＤＤの上位となる装置がＲＭＷ処理を行うよりもＨＤＤがＲＭＷ処理を行う方が、ＨＤＤとＨＤＤの上位となる装置とのインタフェースを介さない分、高い書き込み性能が得られる。
【００２０】
しかしながら、ＨＤＤの上位となる装置が、ＨＤＤにＲＭＷ処理を行わせると、アンアラインドとなる書き込みデータの書き込み要求に対する応答性能が低下する場合がある。例えば、メディアキャッシュの空き領域がない際に、ＨＤＤにＲＭＷ処理を行わせようとすると、メディアキャッシュに空き領域が発生するまで待機することになるため、アンアラインドとなる書き込みデータの書き込み要求に対する応答性能が低下する。ここで、メディアキャッシュの空き領域がなくなる場合は、例えば、アンアラインドとなる書き込みデータの書き込み要求がＨＤＤに連続して送信されて、ＲＭＷ処理が完了しメディアキャッシュ上の書き込みデータを解放する処理が間に合わなくなった場合である。
【００２１】
また、ＨＤＤの上位の装置により、ＨＤＤの性能テストを行い、ＨＤＤの性能テストのデータを基に、メディアキャッシュの枯渇を予測し、ＨＤＤと、ＨＤＤの上位の装置とによるＲＭＷ処理を動的に切り替えることが考えられる。しかしながら、この場合、故障したＨＤＤを交換する運用を前提としていると、故障したＨＤＤを交換するたびに性能テストを行うことになり、性能テスト中は交換したＨＤＤにデータを格納できない時間が発生する。また、性能テストで書き込みを行う場合、性能テストで書き込みを行った場合は通常の書き込みと性能テストによる書き込みとなり、Ｗｒｉｔｅ素子への負荷が性能テストによる書き込みの分大きくなるため、ＨＤＤの寿命を縮めることになる。
【００２２】
そこで、本実施の形態では、ＨＤＤからのメディアキャッシュの使用状況に基づいて、ＲＭＷ処理の主体をストレージ制御装置１０１とＨＤＤとで切り替える方法について説明する。
【００２３】
図１を用いて、ストレージ制御装置１０１の動作を説明する。ストレージ制御装置１０１は、ＨＤＤ１０２＃０〜＃Ｎを制御する。そして、ストレージ制御装置１０１は、ＲＡＩＤ技術によるＨＤＤ１０２＃０〜＃Ｎを組み合わせることにより得られた仮想的なディスクを、ストレージ制御装置１０１を利用する装置に提供する。ここで、ストレージ制御装置１０１は、ＨＤＤ１０２＃０〜＃Ｎにより、１つの仮想的なディスクを形成してもよいし、複数の仮想的なディスクを形成してもよい。例えば、ＨＤＤ１０２＃０〜＃Ｎにより１つの仮想的なディスクを形成する際には、ＨＤＤ１０２＃０〜＃Ｎが１つのＲＡＩＤグループに属することになる。また、ＨＤＤ１０２＃０〜＃Ｎは、Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応しており、それぞれ、メディアキャッシュ１０３＃０〜＃Ｎを有する。なお、ストレージ制御装置１０１は、Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応するＨＤＤと、Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応していないＨＤＤとを混在して制御してもよい。
【００２４】
図１の（１）で示すように、ストレージ制御装置１０１は、ＨＤＤ１０２＃０〜＃Ｎから使用情報１１１を受信する。ストレージ制御装置１０１は、受信した使用情報１１１をストレージ制御装置１０１がアクセス可能な記憶部に記憶する。使用情報１１１は、ＨＤＤ１０２のメディアキャッシュ１０３の使用状況を示す情報である。例えば、使用情報１１１は、メディアキャッシュ１０３が使用されている状況を示す識別子か、メディアキャッシュ１０３が使用されていない状況を示す識別子かのいずれかの識別子となる。ここで、メディアキャッシュ１０３が使用されている状況は、メディアキャッシュ１０３の空き容量が所定の閾値以下である状況である。同様に、メディアキャッシュ１０３が使用されていない状況は、メディアキャッシュ１０３の空き容量が所定の閾値以上である状況である。
【００２５】
以下、メディアキャッシュ１０３が使用されている状況を示す識別子を「Ｂｕｓｙ」とする。同様に、メディアキャッシュ１０３が使用されていない状況を示す識別子を「Ｆｒｅｅ」とする。
【００２６】
また、使用情報１１１を受信するタイミングは、いつでもよい。例えば、ストレージ制御装置１０１は、ＨＤＤ１０２に対してコマンドを送信したことに応じて、ＨＤＤ１０２からコマンドの実行結果を受信するとともに使用情報１１１を受信してもよい。ここで、コマンドは、特定の機能の実行を指示する命令である。例えば、ＨＤＤ１０２に送信するコマンドには、あるアドレスへの書き込みデータの書き込み要求を指示する命令であるライトコマンドや、あるアドレスの読み出し要求を指示する命令であるリードコマンドや、テストユニットレディコマンド等がある。
【００２７】
また、ＨＤＤ１０２は、コマンドの実行結果をストレージ制御装置１０１に送信する際に、メディアキャッシュ１０３の使用状況が変化したときに限り使用情報１１１を送信してもよいし、常に使用情報１１１を送信してもよい。また、ストレージ制御装置１０１が使用情報１１１の送信要求をＨＤＤ１０２に送信し、送信要求を受け付けたＨＤＤ１０２が使用情報１１１をストレージ制御装置１０１に送信してもよい。また、ストレージ制御装置１０１は、メディアキャッシュ１０３の使用状況が変化した際にＨＤＤ１０２が自発的に送信した使用情報１１１を受信してもよい。以下の例では、ストレージ制御装置１０１は、ＨＤＤ１０２に対してコマンドを送信したことに応じて、コマンドの実行結果を受信するとともに、メディアキャッシュ１０３の使用状況が変化したときに限り使用情報１１１を受信するものとする。
【００２８】
図１の例では、ストレージ制御装置１０１は、ＨＤＤ１０２＃０から使用情報１１１＃０を受信し、ＨＤＤ１０２＃１から使用情報１１１＃１を受信し、…、ＨＤＤ１０２＃Ｎから使用情報１１１＃Ｎを受信する。また、図１に示す使用情報１１１＃０は、「Ｆｒｅｅ」を示し、図１に示す使用情報１１１＃１は、「Ｂｕｓｙ」を示すものとする。
【００２９】
そして、ＨＤＤ１０２へのアンアラインドとなる書き込みデータが発生したとする。この際、図１の（２）で示すように、ストレージ制御装置１０１は、使用情報１１１に基づいて、書き込みデータの書き込み要求をＨＤＤ１０２に送信する処理、または、自装置による書き込みデータに対するＲＭＷ処理のいずれか一方を実行する。ここで、書き込みデータが発生する場合とは、例えば、ストレージ制御装置１０１が、ストレージ制御装置１０１の上位となるサーバから書き込み要求を受け付けた場合である。また、ＨＤＤ＃０〜＃Ｎのうち、いずれかのＨＤＤのデータを、他のＨＤＤに移動する場合にも、書き込みデータが発生することになる。
【００３０】
図１の例では、ストレージ制御装置１０１の上位となるサーバから仮想的なディスクへの書き込み要求があったとする。そして、ストレージ制御装置１０１が書き込み先を判断した結果、ＨＤＤ＃０への書き込みデータｗｄ＃０＿ｕとＨＤＤ＃１への書き込みデータｗｄ＃１＿ｕとが発生したとする。ここで、書き込みデータｗｄ＃０＿ｕ、ｗｄ＃１＿ｕは、ともに、アンアラインドであるとする。
【００３１】
書き込みデータｗｄ＃０＿ｕについて、使用情報１１１＃０が「Ｆｒｅｅ」であるので、ストレージ制御装置１０１は、書き込みデータｗｄ＃０＿ｕの書き込み要求となるライトコマンドを、ＨＤＤ１０２＃０に送信する。ライトコマンドを受け付けたＨＤＤ１０２＃０は、書き込みデータｗｄ＃０＿ｕに対するＲＭＷ処理を実行し、アラインドとなる書き込みデータｗｄ＃０＿ａを得る。そして、ＨＤＤ１０２＃０は、書き込みデータｗｄ＃０＿ａを磁気ディスクに書き込む。
【００３２】
また、書き込みデータｗｄ＃１＿ｕについて、使用情報１１１＃１が「Ｂｕｓｙ」であるので、ストレージ制御装置１０１は、書き込みデータｗｄ＃１＿ｕに対するＲＭＷ処理を実行し、アラインドとなる書き込みデータｗｄ＃１＿ａを得る。そして、ストレージ制御装置１０１は、書き込みデータｗｄ＃１＿ａの書き込み要求となるライトコマンドをＨＤＤ１０２＃１に送信する。ライトコマンドを受け付けたＨＤＤ１０２＃１は、書き込みデータｗｄ＃１＿ａを磁気ディスクに書き込む。
【００３３】
なお、図１における書き込みデータｗｄ＃０＿ａ、ｗｄ＃１＿ａについて、塗りつぶした領域が、それぞれ、書き込みデータｗｄ＃０＿ｕ、ｗｄ＃１＿ｕと同一のデータであるところを示し、白抜きの領域が、磁気ディスクから読み出したデータであることを示す。
【００３４】
このように、ストレージ制御装置１０１は、２種類のＲＭＷ処理を最適化することにより、ＨＤＤ１０２への書き込み時の性能を向上させることができる。また、ストレージ制御装置１０１は、ＨＤＤ１０２に対して性能テストを行わないため、ＨＤＤ１０２にデータを格納できない時間を発生させないようにすることができる。また、ストレージ制御装置１０１は、ＨＤＤ１０２に対して性能テストを行わないため、性能テストにより発生したＨＤＤ１０２の寿命を縮めることを抑止することができる。次に、ストレージ制御装置１０１を、ディスクアレイ装置に適用した例を、図２を用いて説明する。
【００３５】
図２は、情報処理システム２００の一例を示す説明図である。情報処理システム２００は、管理装置２０１と、ディスクアレイ装置２０２と、サーバ２０３とを含む。ディスクアレイ装置２０２およびサーバ２０３は、ＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）２０４に接続される。ディスクアレイ装置２０２、管理装置２０１およびサーバ２０３は、ネットワーク２０５に接続される。ネットワーク２０５は、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。
【００３６】
ディスクアレイ装置２０２は、複数のＨＤＤを内蔵し、サーバ２０３の処理に用いられるデータを記憶する。ディスクアレイ装置２０２は、データのライトコマンドをサーバ２０３から受信すると、内蔵のＨＤＤにデータを書き込む。ディスクアレイ装置２０２は、書き込み結果をサーバ２０３に送信する。また、ディスクアレイ装置２０２は、データのリードコマンドをサーバ２０３から受信すると、内蔵のＨＤＤからデータを読み出し、読み出したデータをサーバ２０３に送信する。ディスクアレイ装置２０２は、ＨＤＤと併せてＳＳＤを内蔵してもよい。
【００３７】
管理装置２０１は、ディスクアレイ装置２０２の運用管理を行うサーバコンピュータである。管理装置２０１は、例えば、ネットワーク２０５を介してディスクアレイ装置２０２に動作制御の設定を行う。管理装置２０１は、ディスクアレイ装置２０２により実行されるプログラム、例えば、ファームウェアのプログラムを、ネットワーク２０５を介してディスクアレイ装置２０２に送信することがある。
【００３８】
サーバ２０３は、ディスクアレイ装置２０２に格納されたデータにアクセスするサーバコンピュータである。サーバ２０３は、業務用のアプリケーションのプログラムを実行し、業務処理サービスをユーザに提供する。
【００３９】
図３は、ディスクアレイ装置２０２のハードウェア構成例を示す説明図である。ディスクアレイ装置２０２は、コントローラモジュール（ＣＭ：Ｃｏｎｔｒｏｌｌｅｒ  Ｍｏｄｕｌｅ）３０１、３０２とＤＥ（Ｄｒｉｖｅ  Ｅｎｃｌｏｓｕｒｅ）３０３とを有する。
【００４０】
ＣＭ３０１、３０２は、ＤＥ３０３が有するＨＤＤ１０２の記憶領域の管理や記憶領域に対するデータアクセスを制御する。ＣＭ３０１、３０２はディスクアレイ装置２０２内で冗長化され、データへのアクセス性能や耐故障性の向上が図られる。ＣＭ３０１、３０２は、図１に示したストレージ制御装置１０１の一例である。以下の例では、ＣＭ３０１について説明する。
【００４１】
ＣＭ３０１は、プロセッサ３１１、ＲＡＭ３１２、フラッシュメモリ３１３、ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｏｒ）３１４、ＮＡ（Ｎｅｔｗｏｒｋ  Ａｄａｐｔｏｒ）３１５およびＤＩ（Ｄｒｉｖｅ  Ｉｎｔｅｒｆａｃｅ）３１６を有する。プロセッサ３１１〜ＤＩ３１６は、バス３１７に接続される。ＣＭ３０２もＣＭ３０１と同様のハードウェアを有する。
【００４２】
プロセッサ３１１は、ＣＭ３０１の情報処理を制御するプロセッサである。プロセッサ３１１は、マルチプロセッサであってもよい。プロセッサ３１１は、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）またはＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などである。プロセッサ３１１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００４３】
ＲＡＭ３１２は、ＣＭ３０１の主記憶装置である。ＲＡＭ３１２は、プロセッサ３１１に実行させるファームウェアのプログラムの少なくとも一部を一時的に記憶する。フラッシュメモリ３１３は、ＣＭ３０１の補助記憶装置である。フラッシュメモリ３１３は、不揮発性の半導体メモリである。フラッシュメモリ３１３は、ファームウェアのプログラムなどを記憶する。
【００４４】
ＣＡ３１４は、ＳＡＮ２０４を介してサーバ２０３と通信する通信インタフェースである。ＣＡ３１４の通信インタフェースの種別は、例えばファイバチャネルやＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）などである。ＣＭ３０１は、複数個のＣＡを有して、ＣＡを冗長構成としてもよい。
【００４５】
ＮＡ３１５は、ネットワーク２０５を介して他のコンピュータと通信する通信インタフェースである。ＮＡ３１５の通信インタフェースの種別は、例えばＬＡＮ接続用のＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。ＣＭ３０１は、複数個のＮＡを有して、ＮＡを冗長構成としてもよい。
【００４６】
ＤＩ３１６は、ＤＥ３０３と通信する通信インタフェースである。ＤＩ３１６の通信インタフェースの種別は、例えばファイバチャネルやＳＣＳＩなどである。ＣＭ３０１は、複数個のＤＩを有して、ＤＩを冗長構成としてもよい。
【００４７】
ＤＥ３０３は、ＨＤＤ１０２＃０〜＃Ｎを含む複数のＨＤＤを収容する筐体である。Ｎは、１以上の整数である。そして、ＣＭ３０１、３０２は、ＨＤＤ１０２＃０〜＃Ｎを用いてＲＡＩＤ技術により、データへのアクセス性能や各ＨＤＤの耐障害性を向上した論理的な記憶領域を実現する。
【００４８】
図４は、管理装置２０１のハードウェア構成例を示す説明図である。管理装置２０１は、プロセッサ４０１と、ＲＡＭ４０２と、ＨＤＤ４０３と、画像信号処理部４０４と、入力信号処理部４０５と、読み取り装置４０６と、通信インタフェース４０７とを有する。プロセッサ４０１〜通信インタフェース４０７は管理装置２０１のバス４０８に接続される。
【００４９】
プロセッサ４０１は、管理装置２０１の情報処理を制御する。プロセッサ４０１は、マルチプロセッサであってもよい。プロセッサ４０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ４０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００５０】
ＲＡＭ４０２は、管理装置２０１の主記憶装置である。ＲＡＭ４０２は、プロセッサ４０１に実行させるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ４０２は、プロセッサ４０１による処理に用いる各種データを記憶する。
【００５１】
ＨＤＤ４０３は、管理装置２０１の補助記憶装置である。ＨＤＤ４０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ４０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。管理装置２０１は、フラッシュメモリやＳＳＤなどの他の種類の補助記憶装置を有してもよく、複数の補助記憶装置を有してもよい。
【００５２】
画像信号処理部４０４は、プロセッサ４０１からの命令に従って、管理装置２０１に接続されたディスプレイ４１１に画像を出力する。ディスプレイ４１１としては、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイや液晶ディスプレイなどを用いることができる。
【００５３】
入力信号処理部４０５は、管理装置２０１に接続された入力デバイス４１２から入力信号を取得し、プロセッサ４０１に出力する。入力デバイス４１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００５４】
読み取り装置４０６は、記録媒体４１３に記録されたプログラムやデータを読み取る装置である。記録媒体４１３として、例えば、フレキシブルディスク（ＦＤ：Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）やＨＤＤなどの磁気ディスク、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）やＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの光ディスク、光磁気ディスク（ＭＯ：Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）を使用することができる。また、記録媒体４１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。読み取り装置４０６は、例えば、プロセッサ４０１からの命令に従って、記録媒体４１３から読み取ったプログラムやデータをＲＡＭ４０２またはＨＤＤ４０３に格納する。プロセッサ４０１は、記録媒体４１３から読み取ったプログラムやデータ、例えば、ディスクアレイ装置２０２のファームウェアのプログラムやデータをディスクアレイ装置２０２に送信することもできる。
【００５５】
通信インタフェース４０７は、ネットワーク２０５を介して他の装置と通信を行う。通信インタフェース４０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００５６】
図５は、ＨＤＤ１０２＃０の例を示す説明図である。ＨＤＤ１０２＃０は、プロセッサ５０１と、メディアキャッシュ１０３と、磁気ディスク５０２＿０〜Ｍとを有する。Ｍは０以上の整数である。ＨＤＤ１０２＃１〜＃ＮもＨＤＤ１０２＃０と同様のハードウェアを有する。
【００５７】
プロセッサ５０１は、ＨＤＤ１０２＃０におけるＲＭＷを実行する。プロセッサ５０１は、ＲＭＷ用途のＡＳＩＣやＦＰＧＡなどでもよいし、ＲＭＷ用のプログラムを実行する汎用プロセッサでもよい。
【００５８】
メディアキャッシュ１０３は、プロセッサ５０１によるＲＭＷ処理に用いられる記憶領域である。メディアキャッシュは、ＲＭＷ処理において、データを一時的に記憶するキャッシュとして利用される。メディアキャッシュ１０３は、ＨＤＤ１０２＃０が有する磁気ディスク５０２＿０〜Ｍの記憶領域の一部分でもよいし、磁気ディスク５０２とは別個に設けられた半導体メモリでもよい。ＲＭＷ用のプロセッサ５０１およびメディアキャッシュ１０３の実装方法は、ＨＤＤ１０２のベンダによって異なるものとなる。例えば、メディアキャッシュ１０３が、磁気ディスク５０２＿０〜Ｍの記憶領域の一部分であり、複数の領域に分割して存在してもよい。また、メディアキャッシュ１０３のデータサイズは、ＨＤＤ１０２のベンダによって様々なものとなる。また、メディアキャッシュ１０３が存在しないＨＤＤ１０２も有り得る。
【００５９】
図５では、磁気ディスク５０２＿０を例として、磁気ディスク５０２＿０の内部の例を示す。磁気ディスク５０２＿１〜Ｍも磁気ディスク５０２＿０と同様である。磁気ディスク５０２＿１上の同心円の縁に形成される領域はトラックと呼ばれる。図５で示すトラックＴｒは、磁気ディスク５０２＿０上における複数のトラックのうちの１つである。トラックＴｒ上を所定サイズ単位に物理的に区切った領域は、物理セクタと呼ばれる。物理セクタＳｃは、トラックＴｒ上における複数の物理セクタのうちの１つである。
【００６０】
ＨＤＤ１０２＃１は、Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔに対応しているため、１つの物理セクタのサイズが、４０９６バイト＝４ＫＢとなる。ここで、磁気ディスク５０２上に４ＫＢの物理セクタが配置された構造を４ＫＢのアライメント（Ａｌｉｇｎｍｅｎｔ）と呼称することもある。また、１つの物理セクタのサイズは、８ＫＢ、１６ＫＢなど、他のサイズでもよい。この場合、ＨＤＤ１０２＃０の磁気ディスク５０２に対するデータ書き込みの操作は、４ＫＢの物理セクタ単位に行われる。すなわち、当該物理セクタがＨＤＤ１０２＃０におけるデータの書き込み単位となる。
【００６１】
ここで、サーバ２０３で動作するＯＳなどのソフトウェアによっては、セクタサイズを５１２バイトとしてデータ書き込みを行うものもある。このようなソフトウェアからのライトコマンドでは、５１２バイトの整数倍の書き込みが要求される。すると、ＨＤＤ１０２＃０における物理セクタの４ＫＢアライメントと整合しない書き込みが生じ得る。このような、４ＫＢアライメントと整合しない書き込みが要求された場合に、プロセッサ５０１は、ＲＭＷ処理を実行する。
【００６２】
（ＣＭ３０１の機能構成例）
図６は、ＣＭ３０１の機能構成例を示す説明図である。ＣＭ３０１は、制御部６００を有する。制御部６００は、応答結果受信部６０１と、判定部６０２と、ＲＭＷ実行部６０３と、送信部６０４と、を含む。制御部６００は、記憶装置に記憶されたプログラムをプロセッサ３１１が実行することにより、各部の機能を実現する。記憶装置とは、具体的には、例えば、図３に示したＲＡＭ３１２、フラッシュメモリ３１３などである。また、各部の処理結果は、プロセッサ３１１のレジスタや、プロセッサ３１１のキャッシュメモリ、ＲＡＭ３１２等に格納される。また、ＣＭ３０２も、ＣＭ３０１と同等な機能を有する。
【００６３】
また、ＣＭ３０１は、メディアキャッシュ状態管理テーブル６１１にアクセス可能である。メディアキャッシュ状態管理テーブル６１１の情報は、ＲＡＭ３１２といった記憶装置に格納されている。メディアキャッシュ状態管理テーブル６１１は、ＨＤＤ１０２＃０〜＃Ｎの使用情報１１１を記憶するテーブルである。メディアキャッシュ状態管理テーブル６１１の設定内容の一例は、図１１で示す。
【００６４】
応答結果受信部６０１は、ＨＤＤ１０２＃０〜＃Ｎから使用情報１１１を受信する。また、受信した使用情報１１１は、メディアキャッシュ状態管理テーブル６１１に設定される。
【００６５】
判定部６０２は、ＨＤＤ１０２＃０〜＃Ｎのいずれかへの書き込みデータが発生した際に、書き込みデータがアラインドかアンアラインドかを判定する。例えば、判定部６０２は、書き込みデータの先頭のアドレスと、書き込みデータのデータ長とが、ともに所定値で割り切れれば、書き込みデータがアンアラインドであると判定する。
【００６６】
制御部６００は、判定部６０２がＨＤＤ１０２＃０〜＃Ｎのいずれかへのアンアラインドとなる書き込みデータが発生したと判定した場合に、使用情報１１１に基づいて、送信部６０４による処理、または、ＲＭＷ実行部６０３による処理のいずれか一方を実行する。
【００６７】
例えば、ＨＤＤ１０２＃０〜＃Ｎのいずれかへのアンアラインドとなる書き込みデータが発生した際に、書き込み先のＨＤＤ１０２の使用情報１１１が「Ｂｕｓｙ」であれば、ＲＭＷ実行部６０３は、書き込みデータに対するＲＭＷ処理を実行する。ＲＭＷ処理によって得られたアラインドとなる書き込みデータは、書き込み先のＨＤＤ１０２に送信される。
【００６８】
また、ＨＤＤ１０２＃０〜＃Ｎのいずれかへのアンアラインドとなる書き込みデータが発生した際に、書き込み先のＨＤＤ１０２の使用情報１１１が「Ｆｒｅｅ」であれば、送信部６０４は、書き込みデータの書き込み要求を書き込み先のＨＤＤ１０２に送信する。これにより、書き込み先となるＨＤＤ１０２は、書き込みデータに対するＲＭＷ処理を実行する。
【００６９】
次に、ＣＭ３０１によるＨＤＤ１０２へのコマンド発行時の処理を示したフローチャートを、図７〜図１０を用いて説明する。
【００７０】
図７は、ライトコマンド以外のコマンド発行時処理手順の一例を示すフローチャートである。ライトコマンド以外のコマンド発行時処理は、ライトコマンド以外のコマンドをＣＭ３０１が発行する際に、ＣＭ３０１とＨＤＤ１０２とが行う処理である。
【００７１】
ＣＭ３０１が、コマンド対象のＨＤＤ１０２へライトコマンド以外のコマンドを発行する（ステップＳ７０１）。ここで、ライトコマンド以外のコマンドとは、例えば、リードコマンドや、テストユニットレディコマンド等がある。
【００７２】
コマンドを受け付けたコマンド対象のＨＤＤが、ＣＭ３０１へコマンドの実行結果とメディアキャッシュ１０３の使用状況を示す識別子とを送信する（ステップＳ７０２）。実行結果と識別子とを受け付けたＣＭが、コマンド対象のＨＤＤから受信した識別子を基にメディアキャッシュ状態管理テーブル６１１を更新する（ステップＳ７０３）。メディアキャッシュ状態管理テーブル６１１の更新例は、図１１で示す。ステップＳ７０３の処理終了後、ＣＭ３０１とＨＤＤ１０２とは、ライトコマンド以外のコマンド発行時処理を終了する。
【００７３】
図８は、ライトコマンド発行時処理手順の一例を示すフローチャート（その１）である。また、図９は、ライトコマンド発行時処理手順の一例を示すフローチャート（その２）である。また、図１０は、ライトコマンド発行時処理手順の一例を示すフローチャート（その３）である。ライトコマンド発行時処理は、ＣＭ３０１がライトコマンドをＨＤＤ１０２に発行する際に、ＣＭ３０１とＨＤＤ１０２とが行う処理である。なお、図９で示す各ステップは、ライトデータがアラインドである際の処理を示す。また、図１０で示す各ステップは、ライトデータがアンアラインドであり、かつ、メディアキャッシュ１０３が枯渇していない場合の処理を示す。
【００７４】
ＣＭ３０１が、ＨＤＤ１０２にこれから発行しようとしているライトコマンドのライトデータがアラインドかアンアラインドかを判定する（ステップＳ８０１）。そして、ＣＭ３０１が、ライトコマンドのライトデータがアンアラインドか否かを判断する（ステップＳ８０２）。ライトコマンドのライトデータがアンアラインドである場合（ステップＳ８０２：Ｙｅｓ）、ＣＭ３０１が、メディアキャッシュ状態管理テーブル６１１のうちのアクセス対象のＨＤＤ１０２のフィールドを参照する（ステップＳ８０３）。そして、参照結果に基づいて、ＣＭ３０１は、アクセス対象のＨＤＤ１０２のメディアキャッシュ１０３の状態がＢｕｓｙか否かを判断する（ステップＳ８０４）。アクセス対象のＨＤＤ１０２のメディアキャッシュ１０３の状態がＢｕｓｙである場合（ステップＳ８０４：Ｙｅｓ）、ＣＭ３０１が、ライトコマンドのライトデータに対するＲＭＷ処理を実行する（ステップＳ８０５）。
【００７５】
そして、アクセス対象のＨＤＤ１０２が、ＣＭ３０１へライトコマンドの実行結果とメディアキャッシュ１０３の使用状況を示す識別子とを送信する（ステップＳ８０６）。なお、ステップＳ８０６の処理において、ＣＭ３０１は、ＲＭＷ処理により、リードコマンドとライトコマンドとをＨＤＤ１０２に送信することになる。従って、ＣＭ３０１は、ＲＭＷ処理におけるリードコマンドの実行結果を受け付けた際に識別子を併せて受け付ける場合もあるし、ＲＭＷ処理におけるライトコマンドの実行結果を受け付けた際に識別子を併せて受け付ける場合もある。
【００７６】
実行結果と識別子とを受け付けたＣＭ３０１が、アクセス対象のＨＤＤ１０２から受信した識別子を基にメディアキャッシュ状態管理テーブル６１１を更新する（ステップＳ８０７）。ステップＳ８０７の処理終了後、ＣＭ３０１とＨＤＤ１０２とは、ライトコマンド発行時処理を終了する。
【００７７】
ライトコマンドのライトデータがアンアラインドでない場合（ステップＳ８０２：Ｎｏ）、ＣＭ３０１が、アラインドデータを含むライトコマンドをアクセス対象のＨＤＤ１０２に送信する（ステップＳ９０１）。ライトコマンドを受け付けたアクセス対象のＨＤＤ１０２が、アラインドデータを磁気ディスク５０２に書き込む（ステップＳ９０２）。そして、アクセス対象のＨＤＤ１０２が、ＣＭ３０１へライトコマンドの実行結果とメディアキャッシュの使用状況を示す識別子とを送信する（ステップＳ９０３）。実行結果と識別子とを受け付けたＣＭ３０１が、アクセス対象のＨＤＤ１０２から受信した識別子を基にメディアキャッシュ状態管理テーブル６１１を更新する（ステップＳ９０４）。ステップＳ９０４の処理終了後、ＣＭ３０１とＨＤＤ１０２とは、ライトコマンド発行時処理を終了する。
【００７８】
アクセス対象のＨＤＤのメディアキャッシュ１０３の状態がＦｒｅｅである場合（ステップＳ８０４：Ｎｏ）、ＣＭ３０１が、アンアラインドデータを含むライトコマンドをアクセス対象のＨＤＤ１０２に送信する（ステップＳ１００１）。ライトコマンドを受け付けたアクセス対象のＨＤＤ１０２が、ＲＭＷ処理を実行する（ステップＳ１００２）。そして、アクセス対象のＨＤＤが、ＲＭＷ処理によって得られたアラインドデータを磁気ディスク５０２に書き込む（ステップＳ１００３）。次に、アクセス対象のＨＤＤが、ＣＭ３０１へライトコマンドの実行結果とメディアキャッシュ１０３の使用状況を示す識別子とを送信する（ステップＳ１００４）。
【００７９】
実行結果と識別子とを受け付けたＣＭ３０１が、アクセス対象のＨＤＤ１０２から受信した識別子を基にメディアキャッシュ状態管理テーブル６１１を更新する（ステップＳ１００５）。ステップＳ１００５の処理終了後、ＣＭ３０１とＨＤＤ１０２とは、ライトコマンド発行時処理を終了する。
【００８０】
図１１は、メディアキャッシュ状態管理テーブル６１１の記憶内容の一例を示す説明図である。図１１では、メディアキャッシュ状態管理テーブル６１１の初期状態を示すメディアキャッシュ状態管理テーブル６１１ａと、メディアキャッシュ状態管理テーブル６１１が初期状態から更新された状態を示すメディアキャッシュ状態管理テーブル６１１ｂとを示す。
【００８１】
初期状態を示すメディアキャッシュ状態管理テーブル６１１ａは、ＨＤＤ１０２＃０〜＃Ｎのそれぞれのメディアキャッシュ１０３がＦｒｅｅであることを示す。そして、ＨＤＤ１０２＃１がアンアラインドデータのライトコマンドを受け付けたことによりＢｕｓｙを応答した結果、メディアキャッシュ状態管理テーブル６１１が更新された状態が、メディアキャッシュ状態管理テーブル６１１ｂが示す状態である。メディアキャッシュ状態管理テーブル６１１ｂは、ＨＤＤ１０２＃１のメディアキャッシュ１０３がＢｕｓｙであり、ＨＤＤ１０２＃０、＃２〜＃Ｎのそれぞれのメディアキャッシュ１０３がＦｒｅｅであることを示す。
【００８２】
以上説明したように、ＣＭ３０１は、ＨＤＤ１０２＃０〜＃Ｎから受け付けた使用情報１１１＃０〜＃Ｎに基づいて、ＲＭＷ処理の主体をＣＭ３０１と、書き込み先のＨＤＤ１０２とで切り替える。これにより、ＣＭ３０１は、メディアキャッシュ１０３の枯渇中にＨＤＤ１０２にＲＭＷ処理を行わせることを避けることができ、書き込み要求に対する応答性能の低下を抑えることができる。
【００８３】
また、ＣＭ３０１は、ＣＭ３０１がコマンドをＨＤＤ１０２＃０〜＃Ｎのいずれかに送信したことに応じて、コマンドを送信したＨＤＤ１０２からコマンドの実行結果を受け付けるとともに、使用情報１１１を受け付けてもよい。これにより、ＨＤＤ１０２は、使用情報１１１の送信先を予め設定しなくてよい。例えば、図３で示したように、ディスクアレイ装置２０２内にはＣＭが複数ある。従って、ＨＤＤ１０２が自発的に使用情報１１１を送信する場合には、ディスクアレイ装置２０２の管理者は、複数のＣＭのうちのいずれに使用情報１１１を送信するかを設定することになる。または、ＨＤＤ１０２が、全てのＣＭに使用情報１１１を送信するようにすると、ディスクアレイ装置２０２の負荷が増えることになる。
【００８４】
また、ＨＤＤ１０２は、ＣＭ３０１にコマンドの実行結果を送信する際にメディアキャッシュ１０３の使用状況が変化したときに限り使用情報１１１を送信しつつ、メディアキャッシュ１０３の使用状況が変化した際に使用情報１１１を自発的に送信してもよい。これにより、ＣＭ３０１が、メディアキャッシュ１０３の使用状況をより正確に把握することができて、書き込み要求に対する応答性能を向上することができる。
【００８５】
例えば、ＣＭ３０１が、あるＨＤＤ１０２にライトコマンドを送信し、あるＨＤＤ１０２から、ライトコマンドの実行結果とともに、使用情報１１１として「Ｂｕｓｙ」を受け付けたとする。この後、あるＨＤＤ１０２は、ＲＭＷ処理を完了させてメディアキャッシュ１０３が使用されていない状況となる。この状況となった後、あるＨＤＤ１０２は、使用情報１１１として「Ｆｒｅｅ」をＣＭ３０１に自発的に送信する。この後、ＣＭ３０１があるＨＤＤ１０２にいかなるコマンドも送信しないまま、あるＨＤＤ１０２に対してアンアラインドとなる書き込みデータが発生したとする。この場合、ＣＭ３０１は、メディアキャッシュ状態管理テーブル６１１内の使用情報１１１が「Ｆｒｅｅ」であるため、あるＨＤＤ１０２にアンアラインドとなる書き込みデータを送信し、あるＨＤＤ１０２にＲＭＷ処理を行わせることができる。
【００８６】
これに対し、ＲＭＷ処理を完了させてメディアキャッシュ１０３が使用されていない状況となった後、あるＨＤＤ１０２が、使用情報１１１として「Ｆｒｅｅ」をＣＭ３０１に送信しなかったとする。そして、ＣＭ３０１があるＨＤＤ１０２にいかなるコマンドも送信しないまま、あるＨＤＤ１０２に対してアンアラインドとなる書き込みデータが発生したとする。この場合、ＣＭ３０１は、メディアキャッシュ状態管理テーブル６１１内の使用情報１１１が「Ｂｕｓｙ」であるため、ＣＭ３０１は、あるＨＤＤ１０２にＲＭＷ処理を行わせることが可能であるにも関わらず、自装置でＲＭＷ処理を行うことになる。
【００８７】
また、ＣＭ３０１は、あるＨＤＤ１０２へのアンアラインドとなる書き込みデータが発生した際に、あるＨＤＤ１０２の使用情報１１１が「Ｂｕｓｙ」であれば、自装置によるＲＭＷ処理を実行してもよい。これにより、ＣＭ３０１は、メディアキャッシュ１０３の枯渇中にＨＤＤ１０２にＲＭＷ処理を行わせることを避けることができ、書き込み要求に対する応答性能の低下を抑えることができる。
【００８８】
また、ＣＭ３０１は、あるＨＤＤ１０２へのアンアラインドとなる書き込みデータが発生した際に、あるＨＤＤ１０２の使用情報１１１が「Ｆｒｅｅ」であれば、あるＨＤＤにアンアラインドとなる書き込みデータの書き込み要求を送信してもよい。これにより、ＣＭ３０１は、ＨＤＤ１０２にＲＭＷ処理を行わせることができ、ＣＭ３０１がＲＭＷ処理を実行する場合に比べて書き込み要求に対する応答性能を向上することができる。
【００８９】
また、ＣＭ３０１は、あるＨＤＤ１０２への書き込みデータが発生した際に書き込みデータがアンアラインドであると判断した場合、使用情報１１１に基づいて、ＲＭＷ処理の主体をＣＭ３０１と、書き込み先のＨＤＤ１０２とで切り替えてもよい。このように、ＣＭ３０１は、書き込みデータがアンアラインドであるときに限り使用情報１１１を参照し、書き込みデータがアラインドであれば使用情報１１１を参照するといった無駄な処理を行わずにＨＤＤ１０２への書き込みを行うことができる。
【００９０】
また、本実施の形態では、ストレージがＨＤＤであることが好ましい。Ａｄｖａｎｃｅｄ  Ｆｏｒｍａｔは、ＨＤＤの大容量化および１度に処理されるデータ量の増大化に伴うものであるためである。また、物理セクタのサイズが８ＫＢや１６ＫＢ等に拡張されたＦｏｒｍａｔが出現した場合に、本実施の形態を適用することができる。また、ストレージがＳＳＤであっても、ＳＳＤの物理セクタのサイズが８ＫＢや１６ＫＢ等に拡張されたＦｏｒｍａｔが出現した場合等に、本実施の形態を適用することができる。
【００９１】
また、本実施の形態は、ＨＤＤ＃０〜＃Ｎが、アクセス性能が異なるものであって、ＨＤＤ＃０〜＃Ｎに対してストレージ階層化が適用されたシステムに対しても適用することができる。例えば、ストレージ階層化を管理する装置が、本実施の形態を適用して、ある階層を実現するＨＤＤの状態情報に基づいて、ＨＤＤによるＲＭＷ処理、または、ストレージ階層化を管理する装置によるＲＭＷ処理を動的に切り替えてもよい。
【００９２】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【００９３】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９４】
（付記１）アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶する記憶部と、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報に基づいて、当該書き込みデータの書き込み要求を前記ストレージに送信する処理、または、自装置による当該書き込みデータに対するリードモディファイライト処理のいずれか一方を実行する制御部と、
を有することを特徴とするストレージ制御装置。
【００９５】
（付記２）前記制御部は、
自装置がコマンドを前記ストレージに送信したことに応じた前記コマンドの実行結果とともに前記使用情報を受信する、
ことを特徴とする付記１に記載のストレージ制御装置。
【００９６】
（付記３）前記制御部は、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報によって前記記憶領域が使用されている状況が示される場合、自装置による当該書き込みデータに対するリードモディファイライト処理を実行する、
ことを特徴とする付記１または２に記載のストレージ制御装置。
【００９７】
（付記４）前記制御部は、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報によって前記記憶領域が使用されていない状況が示される場合、当該書き込みデータの書き込み要求を前記ストレージに送信する処理を実行する、
ことを特徴とする付記１〜３のいずれか一つに記載のストレージ制御装置。
【００９８】
（付記５）前記制御部は、
前記ストレージへの書き込みデータが発生した際に、前記書き込みデータがアラインドかアンアラインドかを判定し、
前記書き込みデータがアンアラインドであると判定した場合、前記使用情報に基づいて、当該書き込みデータの書き込み要求を前記ストレージに送信する処理、または、自装置による当該書き込みデータに対するリードモディファイライト処理のいずれか一方を実行する、
ことを特徴とする付記１〜４のいずれか一つに記載のストレージ制御装置。
【００９９】
（付記６）前記ストレージは、ハードディスクドライブである、
ことを特徴とする付記１〜５のいずれか一つに記載のストレージ制御装置。
【０１００】
（付記７）アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージと、前記ストレージに接続されたストレージ制御装置とを含むシステムであって、
前記ストレージは、
前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を前記ストレージ制御装置に送信し、
前記ストレージ制御装置は、
前記ストレージから受信した、前記使用情報を記憶部に記憶させ、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報に基づいて、当該書き込みデータの書き込み要求を前記ストレージに送信する処理、または、自装置による当該書き込みデータに対するリードモディファイライト処理のいずれか一方を実行する、
ことを特徴とするシステム。
【０１０１】
（付記８）コンピュータが、
アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶部に記憶させ、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報に基づいて、当該書き込みデータの書き込み要求を前記ストレージに送信する処理、または、自装置による当該書き込みデータに対するリードモディファイライト処理のいずれか一方を実行する、
処理を実行することを特徴とするストレージ制御方法。
【０１０２】
（付記９）コンピュータに、
アンアラインドとなる書き込みデータの書き込み要求に応じて前記書き込みデータに対するリードモディファイライト処理を行うストレージから受信した、前記リードモディファイライト処理に用いる記憶領域の使用状況を示す使用情報を記憶部に記憶させ、
前記ストレージへのアンアラインドとなる書き込みデータが発生した際に、前記使用情報に基づいて、当該書き込みデータの書き込み要求を前記ストレージに送信する処理、または、自装置による当該書き込みデータに対するリードモディファイライト処理のいずれか一方を実行する、
処理を実行させることを特徴とするストレージ制御プログラム。
【符号の説明】
【０１０３】
１０１  ストレージ制御装置
１０２  ＨＤＤ
１０３  メディアキャッシュ
３０１、３０２  ＣＭ
６００  制御部
６０１  応答結果受信部
６０２  判定部
６０３  ＲＭＷ実行部
６０４  送信部
６１１  メディアキャッシュ状態管理テーブル
【図１】
0006540363.tif 000002
【図２】
0006540363.tif 000003
【図３】
0006540363.tif 000004
【図４】
0006540363.tif 000005
【図５】
0006540363.tif 000006
【図６】
0006540363.tif 000007
【図７】
0006540363.tif 000008
【図８】
0006540363.tif 000009
【図９】
0006540363.tif 000010
【図１０】
0006540363.tif 000011
【図１１】
0006540363.tif 000012