(57)【要約】【課題】データの書き込みを高速化すること。【解決手段】ストレージ装置１００は、過去に第１の記憶部１１０に対してＲＭＷによりデータを書き込んだ場合に、書き込んだデータを第１の記憶部１１０より応答性能がよい第２の記憶部１２０に格納しておく。ストレージ装置１００は、過去にＲＭＷによりデータを書き込んだ記憶領域と同一の記憶領域に対して、ＲＭＷが必要なデータを書き込む場合は、第２の記憶部１２０に記憶されているデータと、ＲＭＷが必要なデータと、から、ＲＭＷが不要なデータを作成する。ストレージ装置１００は、作成したＲＭＷが不要なデータを第１の記憶部１１０に書き込む。【選択図】図１
2014137749.tif 000002
【特許請求の範囲】
【請求項１】
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第１の記憶部と、
前記第１の記憶部のいずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第２の記憶部と、
前記第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が前記いずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定する判定部と、
前記判定部によって前記いずれかの記憶領域の先頭または末尾に一致しないと判定された場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを前記第２の記憶部から抽出する抽出部と、
前記抽出部によって抽出されたデータと、前記ライトデータと、を用いて、前記第１の記憶部に書き込むデータを作成する作成部と、
前記作成部によって作成されたデータの前記第１の記憶部への書き込みを制御する制御部と、
を有することを特徴とするストレージ装置。
【請求項２】
前記抽出部は、
前記判定部によって前記いずれかの記憶領域の先頭に一致しないと判定された場合に、前記いずれかの記憶領域の先頭から前記書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータを前記第２の記憶部から抽出し、
前記作成部は、
前記抽出部によって抽出されたデータを前記ライトデータの先頭に付加することにより、前記第１の記憶部に書き込むデータを作成することを特徴とする請求項１に記載のストレージ装置。
【請求項３】
前記抽出部は、
前記判定部によって前記いずれかの記憶領域の末尾に一致しないと判定された場合に、前記書込先となる記憶領域の末尾から前記いずれかの記憶領域の末尾までの記憶領域に記憶されているデータと同一内容のデータを前記第２の記憶部から抽出し、
前記作成部は、
前記抽出部によって抽出されたデータを前記ライトデータの末尾に付加することにより、前記第１の記憶部に書き込むデータを作成することを特徴とする請求項１または２に記載のストレージ装置。
【請求項４】
前記作成部によって作成されたデータに基づいて、前記第２の記憶部において前記いずれかの記憶領域に対応付けられたデータを更新する更新部を有することを特徴とする請求項１〜３のいずれか一つに記載のストレージ装置。
【請求項５】
コンピュータが、
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第１の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第２の記憶部から抽出し、
抽出したデータと、前記ライトデータと、を用いて、前記第１の記憶部に書き込むデータを作成し、
作成したデータの前記第１の記憶部への書き込みを制御する、
処理を実行することを特徴とする書込制御方法。
【請求項６】
コンピュータに、
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第１の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第２の記憶部から抽出し、
抽出したデータと、前記ライトデータと、を用いて、前記第１の記憶部に書き込むデータを作成し、
作成したデータの前記第１の記憶部への書き込みを制御する、
処理を実行させることを特徴とする書込制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置、書込制御方法、および書込制御プログラムに関する。
【背景技術】
【０００２】
従来、セクタ単位でデータが読み書きされるディスクに書き込まれるライトデータを、セクタ単位で書き込むために加工してからディスクに書き込むリードモディファイライト（ＲＭＷ：Ｒｅａｄ−Ｍｏｄｉｆｙ−Ｗｒｉｔｅ）の技術がある。リードモディファイライトとは、ライトデータの書込先の記憶領域を含む整数個のセクタのデータをディスクから読み出し、読み出したデータのうちの書込先の記憶領域に対応するデータをライトデータに書き換え、書き換えたデータをディスクに書き込む技術である。
【０００３】
関連する技術としては、例えば、ＲＭＷが必要なデータを受信するとＲＭＷをディスクが１回転する時間以内でＲＭＷが間に合う時間まで待機させ、連続するライト要求と共に残りデータを受信するとＲＭＷの代わりに複数回受信したデータを書き込むものがある。また、サブキャッシュの考えられる全ての最大サイズおよび最小サイズの集合として、参照されたオブジェクトでなるＬＲＵリストおよびオブジェクトのトレースから区画の割振りデータでなるマルチプレナアレイを作成し、動的プログラミングヒューリスティック法を適用する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２６７３４５号公報
【特許文献２】特開平０６−１６１８９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術によれば、ディスクに対してセクタ単位でライトデータを書き込む場合、ライトデータを加工するためのデータをディスクから読み出すことになり、ライトデータの書込処理にかかる処理時間が増大してしまう。
【０００６】
１つの側面では、本発明は、データの書き込みを高速化することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一側面によれば、所定長単位で区切られた記憶領域に対して所定長のデータの読み書きが行われる第１の記憶部と、第１の記憶部のいずれかの記憶領域に対応付けていずれかの記憶領域に記憶されている所定長のデータと同一内容のデータが記憶される第２の記憶部と、を有し、第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾がいずれかの記憶領域に含まれる場合に、書込先となる記憶領域の先頭または末尾が、いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、いずれかの記憶領域のうちの書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを第２の記憶部から抽出し、抽出したデータと、ライトデータと、を用いて、第１の記憶部に書き込むデータを作成し、作成したデータの第１の記憶部への書き込みを制御するストレージ装置、書込制御方法、および書込制御プログラムが提案される。
【発明の効果】
【０００８】
本発明の一態様によれば、データの書き込みを高速化することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるストレージ装置１００の書込制御処理の内容を示す説明図である。
【図２】図２は、ストレージ装置１００のハードウェア構成例を示すブロック図である。
【図３】図３は、ＭＲＵテーブル３００の記憶内容の一例を示す説明図である。
【図４】図４は、ＭＦＵテーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、ストレージ装置１００の機能的構成を示すブロック図である。
【図６】図６は、第１の動作例を示す説明図（その１）である。
【図７】図７は、第１の動作例を示す説明図（その２）である。
【図８】図８は、第１の動作例を示す説明図（その３）である。
【図９】図９は、第２の動作例を示す説明図（その１）である。
【図１０】図１０は、第２の動作例を示す説明図（その２）である。
【図１１】図１１は、第２の動作例を示す説明図（その３）である。
【図１２】図１２は、書込制御処理手順の一例を示すフローチャートである。
【図１３】図１３は、データ更新処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかるストレージ装置、書込制御方法、および書込制御プログラムの実施の形態を詳細に説明する。
【００１１】
（ストレージ装置１００の書込制御処理の内容）
図１は、実施の形態にかかるストレージ装置１００の書込制御処理の内容を示す説明図である。図１において、ストレージ装置１００は、第１の記憶部１１０と第２の記憶部１２０とを有するコンピュータである。
【００１２】
第１の記憶部１１０は、所定長単位で区切られた記憶領域を有し、区切られた記憶領域ごとに所定長単位のデータが読み書きされる記憶媒体である。第１の記憶部１１０は、例えば、５１２Ｂ（Ｂｙｔｅ）の論理セクタの８個分の集合を４ｋＢ（ｋｉｌｏ−Ｂｙｔｅ）の物理セクタとして扱うディスクである。第１の記憶部１１０は、フラッシュロムであってもよい。図１の例では、第１の記憶部１１０は、物理アドレス「０」により識別される記憶領域と物理アドレス「１」により識別される記憶領域とを有する。以下の説明では、物理アドレスを、ＰＢＡ（Ｐｈｙｓｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）と表記する場合がある。また、以下の説明では、ＰＢＡにより識別される記憶領域を「記憶領域Ｐ＃（＃はＰＢＡの値）」と表記する場合がある。例えば、ＰＢＡ「０」により識別される記憶領域を「記憶領域Ｐ０」と表記する場合がある。
【００１３】
ＰＢＡ「０」により識別される記憶領域Ｐ０は、論理アドレス「０」〜「７」が割り当てられ、論理アドレス「０」〜「７」により識別される記憶領域の集合として扱われる。同様に、ＰＢＡ「１」により識別される記憶領域Ｐ１は、論理アドレス「８」〜「Ｆ」が割り当てられ、論理アドレス「８」〜「Ｆ」により識別される記憶領域の集合として扱われる。以下の説明では、論理アドレスを、ＬＢＡ（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）と表記する場合がある。また、以下の説明では、ＬＢＡにより識別される記憶領域を「記憶領域Ｌ＃（＃はＬＢＡの値）」と表記する場合がある。例えば、ＬＢＡ「０」により識別される記憶領域を「記憶領域Ｌ０」と表記する場合がある。
【００１４】
第２の記憶部１２０は、第１の記憶部１１０より応答性能がよく、所定長未満の単位でデータが読み書きされる記憶媒体である。第２の記憶部１２０は、過去にストレージ装置１００がＲＭＷにより第１の記憶部１１０に書き込んだデータと同一内容のデータが記憶される。第２の記憶部１２０は、例えば、５１２Ｂ単位のデータが読み書きされるキャッシュメモリである。図１の例では、第２の記憶部１２０の各部分に付された数字は、当該部分に記憶されているデータが、第１の記憶部１１０のどの記憶領域に記憶されているデータと同一内容のデータであるかを示す。例えば、第２の記憶部１２０において、「０」が付された部分に記憶されているデータは、第１の記憶部１１０においてＬＢＡ「０」により識別される記憶領域Ｌ０に記憶されているデータと同一内容のデータである。
【００１５】
以下では、ストレージ装置１００が、ライトデータ１３０を受け付けた場合を例に挙げて、ライトデータ１３０の第１の記憶部１１０への書き込みを制御する処理の一例について示す。図１の例では、ライトデータ１３０の各部分に付された数字は、ライトデータ１３０の各部分の書込先となる記憶領域を識別するＬＢＡを示す。例えば、ライトデータ１３０の「０」が付された部分は、第１の記憶部１１０において論理アドレス「０」により識別される記憶領域Ｌ０に書き込むデータである。
【００１６】
ここで、ストレージ装置１００は、ＬＢＡ「０」〜「９」により識別される記憶領域Ｌ０〜Ｌ９が書込先となる記憶領域であるライトデータ１３０を受け付ける。ストレージ装置１００は、ライトデータ１３０を受け付けると、ライトデータ１３０の書込先となる記憶領域の先頭または末尾が、第１の記憶部１１０の所定長単位で区切られた記憶領域の先頭または末尾に一致しているか否かを判定する。図１の例では、書込先となる記憶領域Ｌ０〜Ｌ９の先頭は記憶領域Ｐ０の先頭に一致しているが、書込先となる記憶領域Ｌ０〜Ｌ９の末尾は記憶領域Ｐ０，Ｐ１のいずれの末尾にも一致していない。
【００１７】
以下の説明では、書込先となる記憶領域の先頭が第１の記憶部１１０の所定長単位で区切られたいずれかの記憶領域の先頭に一致することを「先頭がアラインである」と表記する場合がある。同様に、末尾が一致することを「末尾がアラインである」と表記する場合がある。また、書込先となる記憶領域の先頭が第１の記憶部１１０の所定長単位で区切られたいずれの記憶領域の先頭にも一致しないことを「先頭がアンアラインである」と表記する場合がある。同様に、末尾が一致しないことを「末尾がアンアラインである」と表記する場合がある。
【００１８】
ストレージ装置１００は、末尾がアンアラインであるため、ライトデータ１３０の末尾側を補完して、末尾がアラインであるデータに変換してから、第１の記憶部１１０への書き込みを行う。ストレージ装置１００は、例えば、第２の記憶部１２０から、ライトデータ１３０の末尾側に付加すべきＬＢＡ「Ａ」〜「Ｆ」により識別される記憶領域ＬＡ〜ＬＦに記憶されているデータを探索し、探索されたデータをライトデータ１３０の末尾に付加する。これにより、ストレージ装置１００は、末尾がアンアラインであるライトデータ１３０を、末尾がアラインであるデータに変換することができる。
【００１９】
そして、ストレージ装置１００は、先頭および末尾がアラインである変換後のデータのディスクへの書き込みを制御する。ストレージ装置１００は、例えば、変換後のデータのうちのＬＢＡ「０」〜「７」により識別される領域に書き込まれるデータを、ＬＢＡ「０」〜「７」が割り当てられたＰＢＡ「０」により識別される記憶領域Ｐ０に書き込む。また、ストレージ装置１００は、変換後のデータのうちのＬＢＡ「８」〜「Ｆ」により識別される領域に書き込まれるデータを、ＬＢＡ「８」〜「Ｆ」が割り当てられたＰＢＡ「１」により識別される記憶領域Ｐ１に書き込む。これにより、ストレージ装置１００は、ライトデータ１３０の第１の記憶部１１０への書き込みにおける第１の記憶部１１０へのアクセス回数を減らし、第１の記憶部１１０へのデータの書き込みを高速化することができる。
【００２０】
（ストレージ装置１００のハードウェア構成例）
図２は、ストレージ装置１００のハードウェア構成例を示すブロック図である。図２において、ストレージ装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１と、メモリ２０２と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２０３と、磁気ディスク２０４と、インターフェース（Ｉｎｔｅｒｆａｃｅ）２０５と、を有する。また、各構成部はバス２００によってそれぞれ接続されている。
【００２１】
ここで、ＣＰＵ２０１は、ストレージ装置１００の全体の制御を司る。メモリ２０２は、ブートプログラムなどのプログラムを記憶している。メモリ２０２は、ＣＰＵ２０１のワークエリアとして使用される。メモリ２０２は、第２の記憶部１２０を実現する記憶媒体である。メモリ２０２は、図３に示すＭＲＵテーブル３００や図４に示すＭＦＵテーブル４００を記憶する。メモリ２０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などである。
【００２２】
磁気ディスクドライブ２０３は、ＣＰＵ２０１の制御にしたがって磁気ディスク２０４に対するデータのリード／ライトを制御する。磁気ディスク２０４は、磁気ディスクドライブ２０３の制御で書き込まれたデータを記憶する。磁気ディスク２０４は、第１の記憶部１１０を実現する記憶媒体である。
【００２３】
インターフェース（以下、「Ｉ／Ｆ」と略する。）２０５は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク２１０に接続され、このネットワーク２１０を介して他の装置に接続される。そして、Ｉ／Ｆ２０５は、ネットワーク２１０と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ２０５には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００２４】
また、ストレージ装置１００は、フラッシュメモリに対するリード／ライトを制御するＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）と、フラッシュメモリと、を有してもよい。ストレージ装置が、フラッシュメモリに対するリード／ライトを制御するＳＳＤと、フラッシュメモリと、を有する場合は、上述した磁気ディスクドライブ２０３と、磁気ディスク２０４と、はなくてもよい。
【００２５】
（ＭＲＵ（Ｍｏｓｔ  Ｒｅｃｅｎｔ  Ｕｓｅｄ）テーブル３００の記憶内容）
図３は、ＭＲＵテーブル３００の記憶内容の一例を示す説明図である。ＭＲＵテーブル３００は、上述したように、メモリ２０２によって記憶される。ＭＲＵテーブル３００は、第２の記憶部１２０に記憶されているデータを管理するテーブルであって、最近のＲＭＷによって利用された第２の記憶部１２０に記憶されているデータを管理するテーブルである。
【００２６】
ＭＲＵテーブル３００は、アドレス項目と、有効フラグ項目と、を有し、アドレスごとに各項目の値がレコードとして記憶される。アドレス項目には、第１の記憶部１１０におけるＬＢＡの範囲が記憶される。アドレス項目における「ｈ」は、ＬＢＡが１６進数表記されていることを示す接尾語である。
【００２７】
有効フラグ項目には、アドレス項目のＬＢＡの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが、第２の記憶部１２０に記憶されているか否かを示す有効フラグが記憶される。図３の例では、有効フラグ「１」は、第２の記憶部１２０に記憶されていることを示す。一方で、有効フラグ「０」は、第２の記憶部１２０に記憶されていないことを示す。
【００２８】
ＭＲＵテーブル３００は、さらに、アドレス項目のＬＢＡの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが記憶されている第２の記憶部１２０の記憶領域を識別するＬＢＡの範囲が記憶される項目を有してもよい。
【００２９】
また、ＭＲＵテーブル３００は、レコード数に上限があってもよい。ストレージ装置１００は、ＭＲＵテーブル３００のレコード数が上限に達した時に、新たにレコードを追加する場合は、ＭＲＵテーブル３００に最古に追加されたレコードを削除する。ここで、ストレージ装置１００は、ＭＲＵテーブル３００からレコードを削除する場合、当該レコードに対応する第２の記憶部１２０に記憶されているデータも削除する。
【００３０】
（ＭＦＵ（Ｍｏｓｔ  Ｆｒｅｑｕｅｎｔ  Ｕｓｅｄ）テーブル４００の記憶内容）
図４は、ＭＦＵテーブル４００の記憶内容の一例を示す説明図である。ＭＦＵテーブル４００は、上述したように、メモリ２０２によって記憶される。ＭＦＵテーブル４００は、第２の記憶部１２０に記憶されているデータを管理するテーブルであって、高頻度にＲＭＷによって利用される第２の記憶部１２０に記憶されているデータを管理するテーブルである。
【００３１】
ＭＦＵテーブル４００は、アドレス項目と、有効フラグ項目と、を有し、アドレスごとに各項目の値がレコードとして記憶される。アドレス項目には、ディスクにおけるＬＢＡの範囲が記憶される。アドレス項目における「ｈ」は、ＬＢＡが１６進数表記されていることを示す接尾語である。
【００３２】
有効フラグ項目には、アドレス項目のＬＢＡの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが、第２の記憶部１２０に記憶されているか否かを示す有効フラグが記憶される。図４の例では、有効フラグ「１」は、第２の記憶部１２０に記憶されていることを示す。一方で、有効フラグ「０」は、第２の記憶部１２０に記憶されていないことを示す。
【００３３】
ＭＦＵテーブル４００は、さらに、アドレス項目のＬＢＡの範囲により識別される記憶領域に記憶されているデータと同一内容の複製データが記憶されている第２の記憶部１２０の記憶領域を識別するＬＢＡの範囲が記憶される項目を有してもよい。
【００３４】
また、ＭＦＵテーブル４００は、レコード数に上限があってもよい。ストレージ装置１００は、ＭＦＵテーブル４００のレコード数が上限に達した時に、新たにレコードを追加する場合は、ＭＦＵテーブル４００に最古に追加されたレコードを削除する。ここで、ストレージ装置１００は、ＭＦＵテーブル４００からレコードを削除する場合、当該レコードに対応する第２の記憶部１２０に記憶されているデータも削除する。
【００３５】
（ストレージ装置１００の機能的構成例）
次に、図５を用いて、ストレージ装置１００の機能的構成例について説明する。
【００３６】
図５は、ストレージ装置１００の機能的構成を示すブロック図である。ストレージ装置１００は、第１の記憶部１１０と、第２の記憶部１２０と、判定部５０１と、抽出部５０２と、作成部５０３と、制御部５０４と、更新部５０５と、を含む。
【００３７】
第１の記憶部１１０は、所定長単位で区切られた記憶領域に対して所定長のデータの読み書きが行われる記憶媒体である。第１の記憶部１１０は、例えば、４ｋＢ単位で区切られた記憶領域に対して、４ｋＢ単位でデータの読み書きが行われるディスクである。第１の記憶部１１０がディスクである場合、所定長単位で区切られた記憶領域とは、例えば、ディスクの物理セクタである。
【００３８】
ディスクには、例えば、ストレージ装置１００に対するインターフェース上では５１２Ｂ単位でデータを扱い、記憶媒体上では４ｋＢ単位でデータを扱う種類のものがある。以下の説明では、インターフェース上では５１２Ｂ単位でデータを扱い記憶媒体上では４ｋＢ単位でデータを扱う種類を「第１の種類」と表記する場合がある。
【００３９】
ディスクには、例えば、ストレージ装置１００に対するインターフェース上でも記憶媒体上でも４ｋＢ単位でデータを扱う種類のものがある。以下の説明では、インターフェース上でも記憶媒体上でも４ｋＢ単位でデータを扱う種類を「第２の種類」と表記する場合がある。第１の記憶部１１０は、例えば、図２に示した磁気ディスク２０４により、その機能を実現する。以下の説明では、第１の記憶部１１０がディスクであって、所定長単位の記憶領域がディスクの物理セクタである場合を例に挙げて説明を行う。
【００４０】
第２の記憶部１２０は、ディスクのいずれかの物理セクタに記憶されている所定長のデータと同一内容のデータが記憶される記憶媒体である。第２の記憶部１２０は、例えば、ディスクより応答性能がよく、５１２Ｂ単位でデータの読み書きが行われるキャッシュメモリである。第２の記憶部１２０の記憶内容は、例えば、上述したＭＲＵテーブル３００やＭＦＵテーブル４００により識別される。第２の記憶部１２０は、例えば、図２に示したメモリ２０２により、その機能を実現する。以下の説明では、第２の記憶部１２０がキャッシュメモリである場合を例に挙げて説明を行う。
【００４１】
判定部５０１は、ディスクに書き込むライトデータ１３０の書込先となる記憶領域の先頭または末尾がいずれかの物理セクタに含まれる場合に、書込先となる記憶領域の先頭または末尾が、いずれかの物理セクタの先頭または末尾に一致するか否かを判定する。ここで、ライトデータ１３０は、例えば、Ｉ／Ｆ２０５を介して他の装置から受信したデータである。また、ライトデータ１３０は、ストレージ装置１００のキーボード（不図示）によって入力されたデータであってもよい。
【００４２】
判定部５０１は、例えば、書込先となる記憶領域の先頭がディスクのいずれかの物理セクタの先頭に一致するか否かと、書込先となる記憶領域の末尾がディスクのいずれかの物理セクタの末尾に一致するか否かと、の少なくともいずれかを判定する。これにより、抽出部５０２は、判定部５０１によって一致しないと判定されたことを、データを抽出するトリガとして取得することができる。判定部５０１は、図２に示したメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。判定部５０１による判定結果は、例えば、メモリ２０２に記憶される。
【００４３】
抽出部５０２は、判定部５０１によっていずれかの物理セクタの先頭または末尾に一致しないと判定された場合に、いずれかの物理セクタのうちの書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータをキャッシュメモリから抽出する。抽出部５０２は、例えば、判定部５０１によっていずれかの物理セクタの先頭に一致しないと判定された場合に、いずれかの物理セクタの先頭から書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータをキャッシュメモリから抽出する。
【００４４】
抽出部５０２は、例えば、判定部５０１によっていずれかの物理セクタの末尾に一致しないと判定された場合に、書込先となる記憶領域の末尾からいずれかの物理セクタの末尾までの記憶領域に記憶されているデータと同一内容のデータをキャッシュメモリから抽出する。これにより、作成部５０３は、ディスクに書き込むデータの作成に使用するデータを、抽出部５０２から取得することができる。抽出部５０２は、図２に示したメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。抽出部５０２によって抽出されたデータは、例えば、メモリ２０２に記憶される。
【００４５】
作成部５０３は、抽出部５０２によって抽出されたデータと、ライトデータ１３０と、を用いて、ディスクに書き込むデータを作成する。例えば、抽出部５０２によっていずれかの物理セクタの先頭から書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータが抽出された場合について説明する。この場合には、作成部５０３は、先頭がアンアラインであるため、取得したデータをライトデータ１３０の先頭に付加することにより、ディスクに書き込む先頭がアラインであるデータを作成する。
【００４６】
また、例えば、抽出部５０２によって書込先となる記憶領域の末尾からいずれかの物理セクタの末尾までの記憶領域に記憶されているデータと同一内容のデータが抽出された場合について説明する。この場合には、作成部５０３は、末尾がアンアラインであるため、取得したデータをライトデータ１３０の末尾に付加することにより、ディスクに書き込むデータを作成する。これにより、作成部５０３は、物理セクタ単位で書き込むことができるデータを作成することができる。物理セクタ単位で書き込むことができるデータとは、例えば、整数個の物理セクタ分のデータであって先頭および末尾がアラインであるデータである。
【００４７】
以下の説明では、整数個の物理セクタ分のデータであって先頭および末尾がアラインであるデータを、単に「アラインなデータ」と表記する場合がある。また、先頭または末尾がアンアラインであるデータを、単に「アンアラインなデータ」と表記する場合がある。作成部５０３は、例えば、図２に示したメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００４８】
制御部５０４は、作成部５０３によって作成されたデータのディスクへの書き込みを制御する。また、制御部５０４は、判定部５０１によって先頭および末尾が一致すると判定された場合に、ライトデータ１３０のディスクへの書き込みを制御してもよい。また、制御部５０４は、作成部５０３によって先頭および末尾がアラインであるデータを作成できなかった場合は、ＲＭＷによってライトデータ１３０をディスクに書き込んでもよい。
【００４９】
制御部５０４は、例えば、書き込み対象がディスクである場合には、書き込み対象とするディスクの種類によって異なる書き込み動作を行うことができる。以下の説明では、書き込み対象とするディスクが上述した第１の種類のディスクである場合の書き込み動作を「第１の書き込み動作」と表記する場合がある。また、書き込み対象とするディスクが上述した第２の種類のディスクである場合の書き込み動作を「第２の書き込み動作」と表記する場合がある。
【００５０】
＜第１の書き込み動作＞
制御部５０４は、ディスクの種類が第１の種類である場合には、第１の書き込み動作を行う。制御部５０４は、例えば、作成部５０３によって作成されたデータがアラインなデータである場合は、作成部５０３によって作成されたデータを５１２Ｂずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、作成部５０３によって作成されたデータを５１２Ｂずつ受信して、受信したデータを４ｋＢ分のデータに纏めて、ディスクの物理セクタに書き込む。
【００５１】
また、制御部５０４は、例えば、作成部５０３によって作成されたデータがアラインなデータではない場合は、作成部５０３によって作成されたデータを５１２Ｂずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、作成部５０３によって作成されたデータを５１２Ｂずつ受信して、受信したデータからＲＭＷによりアラインなデータを作成して、ディスクの物理セクタに書き込む。
【００５２】
また、制御部５０４は、例えば、判定部５０１によって先頭および末尾が一致すると判定された場合には、ライトデータ１３０を、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信したライトデータ１３０を、ディスクの物理セクタに書き込む。
【００５３】
また、制御部５０４は、例えば、作成部５０３によって作成できなかった場合には、ライトデータ１３０をライトコマンドとしてディスクに送信する。これにより、ディスクは、受信したライトデータ１３０から、ＲＭＷによりアラインなデータを作成して、ディスクの物理セクタに書き込む。
【００５４】
＜第２の書き込み動作＞
制御部５０４は、ディスクの種類が第２の種類である場合には、第２の書き込み動作を行う。制御部５０４は、例えば、作成部５０３によって作成されたデータがアラインなデータである場合は、作成部５０３によって作成されたアラインなデータを４ｋＢずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した４ｋＢずつのデータをディスクの物理セクタに書き込む。
【００５５】
また、制御部５０４は、例えば、作成部５０３によって作成されたデータがアラインなデータではない場合は、作成部５０３によって作成されたデータからＲＭＷによりアラインなデータを作成する。次に、制御部５０４は、作成したアラインなデータを４ｋＢずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した４ｋＢずつのデータをディスクの物理セクタに書き込む。
【００５６】
また、制御部５０４は、例えば、判定部５０１によって先頭および末尾が一致すると判定された場合には、ライトデータ１３０をライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した物理セクタ単位のライトデータ１３０をディスクの物理セクタに書き込む。
【００５７】
また、制御部５０４は、例えば、作成部５０３によって作成できなかった場合には、ライトデータ１３０からＲＭＷによりアラインなデータを作成して、作成したアラインなデータを４ｋＢずつ、ライトコマンドとしてディスクに送信する。これにより、ディスクは、受信した４ｋＢずつのデータをディスクの物理セクタに書き込む。制御部５０４は、例えば、図２に示したメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００５８】
更新部５０５は、作成部５０３によって作成されたデータに基づいて、キャッシュメモリにおいていずれかの物理セクタに対応付けられたデータを更新する。更新部５０５は、例えば、制御部５０４の制御によって物理セクタに作成部５０３によって作成されたデータを書き込む場合に、キャッシュメモリに当該物理セクタのデータと同一内容のデータが記憶されていれば、書き込むデータと同一内容のデータに更新する。これにより、制御部５０４は、キャッシュメモリに記憶されているデータを、物理セクタに記憶されている最新のデータと同一内容のデータに更新することができる。
【００５９】
また、更新部５０５は、書込先となる記憶領域の先頭または末尾がいずれかの物理セクタとは異なる他の記憶領域に含まれる場合に、他の記憶領域に記憶されているデータをディスクから読み出して他の記憶領域と対応付けてキャッシュメモリに格納する。更新部５０５は、例えば、制御部５０４によってＲＭＷが行われた場合に、ＲＭＷの対象になった物理セクタに記憶されているデータと同一内容のデータを、キャッシュメモリに格納する。これにより、制御部５０４は、次回に当該物理セクタにデータを書き込む際には、ＲＭＷなしに、データを書き込むことができる。更新部５０５は、例えば、図２に示したメモリ２０２に記憶されたプログラムをＣＰＵ２０１に実行させることにより、その機能を実現する。
【００６０】
また、更新部５０５は、キャッシュメモリに所定数以上のデータが記憶されている場合に、所定数以上のデータのうちの最古のデータを削除してもよい。これにより、更新部５０５は、キャッシュメモリの使用量を抑制した上で、キャッシュメモリのデータに最新のデータを記憶しておくことができる。
【００６１】
また、更新部５０５は、キャッシュメモリの中に、抽出部５０２によってデータが抽出されていないデータが第１の数以上記憶されている場合に、抽出部５０２によってデータが抽出されていないデータのうちの最古のデータを削除してもよい。これにより、更新部５０５は、キャッシュメモリの使用量を抑制した上で、キャッシュメモリのデータに最新のデータを記憶しておくことができる。
【００６２】
また、更新部５０５は、キャッシュメモリの中に、抽出部５０２によってデータが抽出されたデータが第２の数以上記憶されている場合に、抽出部５０２によってデータが抽出されたデータのうちの最古のデータを削除してもよい。これにより、更新部５０５は、キャッシュメモリの使用量を抑制した上で、キャッシュメモリのデータに最新のデータを記憶しておくことができる。
【００６３】
（ストレージ装置１００の動作例）
次に、図６〜図１１を用いて、ストレージ装置１００の動作例について説明する。以下の説明では、上述した第１の書き込み動作を行う場合のストレージ装置１００の動作例を「第１の動作例」と表記する場合がある。また、上述した第２の書き込み動作を行う場合のストレージ装置１００の動作例を「第２の動作例」と表記する場合がある。
【００６４】
＜第１の動作例＞
図６〜図８は、第１の動作例を示す説明図である。まず、図６を用いて、第１の動作例におけるディスクへの書き込み制御内容の一例を示す。図６に示すように、ストレージ装置１００は、ディスク６１０とキャッシュメモリ６２０とを有する。
【００６５】
ディスク６１０は、所定長単位で区切られた物理セクタを有し、物理セクタごとに所定長単位のデータが読み書きされる記憶媒体である。図６の例では、ディスク６１０は、５１２Ｂの論理セクタの８個分の集合を、４ｋＢの物理セクタとして扱う。従って、ディスク６１０には、４ｋＢ単位でデータが読み書きされる。
【００６６】
より具体的には、ディスク６１０は、ＬＢＡ「０」〜「７」により識別される各々５１２Ｂの論理セクタＬ０〜Ｌ７を、ＰＢＡ「０」により識別される４ｋＢの物理セクタＰ０として扱う。また、ディスク６１０は、ＬＢＡ「８」〜「Ｆ」により識別される各々５１２Ｂの論理セクタＬ８〜ＬＦの集合を、ＰＢＡ「１」により識別される４ｋＢの物理セクタＰ１として扱う。
【００６７】
キャッシュメモリ６２０は、ディスク６１０より応答性能がよく、５１２Ｂ単位のデータが読み書きされる記憶媒体である。キャッシュメモリ６２０には、過去にストレージ装置１００がＲＭＷによりディスク６１０に書き込んだデータと同一内容の複製データが記憶される。ストレージ装置１００は、ライトデータ１３０を受け付けて、ライトデータ１３０のディスク６１０への書き込みを制御する。
【００６８】
以下では、ストレージ装置１００が、アンアラインなライトデータ１３０を受け付けた場合を例に挙げて、ライトデータ１３０のディスク６１０への書き込みを制御する処理の一例について示す。アンアラインなライトデータ１３０は、ライトデータ１３０の書込先となる記憶領域の先頭または末尾がディスク６１０のいずれかの物理セクタの先頭または末尾に一致しないデータである。図６の例では、ストレージ装置１００は、ＬＢＡ「０」〜「９」により識別される書込先となる記憶領域Ｌ０〜Ｌ９に書き込むライトデータ１３０を受け付ける。
【００６９】
ストレージ装置１００は、ライトデータ１３０を受け付けると、ライトデータ１３０がアラインなデータであるか否かを判定する。ストレージ装置１００は、例えば、書込先となる記憶領域の先頭または末尾が、ディスク６１０のセクタの先頭または末尾に一致しているか否かを判定する。ここで、書込先となる記憶領域Ｌ０〜Ｌ９の先頭は物理セクタＰ０の先頭に一致しているが、書込先となる記憶領域Ｌ０〜Ｌ９の末尾は物理セクタＰ０，Ｐ１のいずれの末尾にも一致していない。換言すれば、ライトデータ１３０は、アラインなデータではない。
【００７０】
従って、ストレージ装置１００は、ライトデータ１３０の末尾側を補完してアラインなデータに変換してから、ディスク６１０への書き込みを制御する。ストレージ装置１００は、例えば、キャッシュメモリ６２０から、ライトデータ１３０の末尾側に付加すべき、論理セクタＬ８〜ＬＦに記憶されているデータを探索する。次に、ストレージ装置１００は、探索できた場合は、探索されたデータをキャッシュメモリ６２０から抽出し、抽出したデータをライトデータ１３０の末尾に付加する。これにより、ストレージ装置１００は、ライトデータ１３０からアラインなデータを作成することができる。
【００７１】
そして、ストレージ装置１００は、作成したアラインなデータのディスク６１０への書き込みを制御する。ストレージ装置１００は、例えば、作成したアラインなデータのうちの物理セクタＰ０が書込先となる記憶領域である４ｋＢのデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを４ｋＢのデータに纏めて、物理セクタＰ０にＲＭＷなしに書き込む。
【００７２】
また、ストレージ装置１００は、作成したアラインなデータのうちの物理セクタＰ１が書込先となる記憶領域であるデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを４ｋＢのデータに纏めて、物理セクタＰ１にＲＭＷなしに書き込む。このように、ストレージ装置１００は、ライトデータ１３０の書き込みにおけるディスク６１０へのアクセス回数を減らすることができる。結果として、ストレージ装置１００は、ＲＭＷによるディスク６１０の回転待ち時間の発生を抑制し、データの書き込みを高速化することができる。
【００７３】
一方で、ストレージ装置１００は、ライトデータ１３０の末尾側に付加すべきデータを探索できなかった場合は、アンアラインなライトデータ１３０のディスク６１０への書き込みを制御する。ストレージ装置１００は、例えば、アンアラインなライトデータ１３０のうちの物理セクタＰ０が書込先となる記憶領域であるデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを４ｋＢのデータに纏めて、物理セクタＰ０にＲＭＷなしに書き込む。
【００７４】
また、ストレージ装置１００は、アンアラインなライトデータ１３０のうちの物理セクタＰ１が書込先となる記憶領域であるデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータが４ｋＢ分ないため、受信したデータからＲＭＷによりアラインなデータを作成して、物理セクタＰ１に書き込む。この後、ストレージ装置１００は、ディスク６１０によってＲＭＷされた物理セクタＰ１のデータを読み出して、キャッシュメモリ６２０に格納する。このように、ストレージ装置１００は、ディスク６１０によりＲＭＷが行われた場合、次回の書き込み時に探索できるように、キャッシュメモリ６２０に格納する。
【００７５】
次に、図７および図８を用いて、第１の動作例におけるキャッシュメモリ６２０の更新内容の一例について示す。図７において、ストレージ装置１００は、論理セクタＬ２〜Ｌ１１が書込先となる記憶領域であるライトデータ１３０を受け付ける。次に、ストレージ装置１００は、書込先となる記憶領域Ｌ２〜Ｌ１１の先頭がディスク６１０の物理セクタＰ０〜Ｐ２のいずれの先頭にも一致しないと判定し、書込先となる記憶領域Ｌ２〜Ｌ１１の末尾がディスク６１０の物理セクタＰ０〜Ｐ２のいずれの末尾にも一致しないと判定する。
【００７６】
そして、ストレージ装置１００は、ＭＲＵテーブル３００とＭＦＵテーブル４００とを用いて、キャッシュメモリ６２０から、ライトデータ１３０の先頭側に付加すべき論理セクタＬ０〜Ｌ７に記憶されているデータを探索する。ストレージ装置は、例えば、ＭＲＵテーブル３００とＭＦＵテーブル４００との各レコードの中から、アドレス項目にＬＢＡ「０」〜「７」が含まれるレコードを探索する。
【００７７】
また、ストレージ装置１００は、ＭＲＵテーブル３００とＭＦＵテーブル４００とを用いて、キャッシュメモリ６２０から、ライトデータ１３０の末尾側に付加すべき、ＬＢＡ「１２」〜「１７」により識別される論理セクタに記憶されているデータを探索する。ストレージ装置１００は、例えば、ＭＲＵテーブル３００とＭＦＵテーブル４００との各レコードの中から、アドレス項目にＬＢＡ「１２」〜「１７」が含まれるレコードを探索する。
【００７８】
ここで、ストレージ装置１００は、ＭＲＵテーブル３００にアドレス項目にＬＢＡ「０」〜「７」が含まれるレコードがあるため、キャッシュメモリ６２０に論理セクタＬ０〜Ｌ７に記憶されているデータが記憶されていると判定する。次に、ストレージ装置１００は、キャッシュメモリ６２０から論理セクタＬ０〜Ｌ７に記憶されているデータを抽出する。そして、ストレージ装置１００は、抽出したデータをライトデータ１３０の先頭に付加する。ここで、図８の説明に移行する。
【００７９】
図８において、ストレージ装置１００は、論理セクタＬ０〜Ｌ７が書込先となる記憶領域であるデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信した論理セクタＬ０〜Ｌ７が書込先となる記憶領域である４ｋＢのデータを纏めて、論理セクタＬ０〜Ｌ７が割り当てられた物理セクタＰ０にＲＭＷなしに書き込む。
【００８０】
また、ストレージ装置１００は、論理セクタＬ８〜ＬＦが書込先となる記憶領域であるデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信した論理セクタＬ８〜ＬＦが書込先となる記憶領域である４ｋＢのデータを纏めて、論理セクタＬ８〜ＬＦが割り当てられた物理セクタＰ１にＲＭＷなしに書き込む。
【００８１】
また、ストレージ装置１００は、論理セクタＬ１０〜Ｌ１１が書込先となる記憶領域であるデータを５１２Ｂずつ、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータが４ｋＢ分ないため、受信したデータからＲＭＷによりアラインなデータを作成して物理セクタＰ２に書き込む。
【００８２】
そして、ストレージ装置１００は、ＭＲＵテーブル３００に記憶されているＬＢＡ「０」〜「７」の範囲を示すレコードが利用されたため、ＬＢＡ「０」〜「７」の範囲を示すレコードをＭＦＵテーブル４００に移行する。また、ストレージ装置１００は、ＭＲＵテーブル３００にＲＭＷが行われたＬＢＡ「１２」〜「１７」の範囲を示すレコードがないため、ＭＲＵテーブル３００にＬＢＡ「１２」〜「１７」の範囲と有効フラグ「０」とを示すレコードを追加する。
【００８３】
この後、ストレージ装置１００は、有効フラグが「０」であるレコードが示すＬＢＡ「１０」〜「１７」により識別される論理セクタＬ１０〜Ｌ１７に記憶されているデータを、ディスク６１０から読み出して、キャッシュメモリ６２０に格納する。ここで、ストレージ装置１００は、有効フラグを「０」から「１」に更新する。このように、ストレージ装置１００は、ディスク６１０によってＲＭＷされた物理セクタＰ２のデータを、次回の書き込み時に探索できるように、キャッシュメモリ６２０に格納する。
【００８４】
＜第２の動作例＞
図９〜図１１は、第２の動作例を示す説明図である。まず、図９を用いて、第２の動作例におけるディスク６１０への書き込み制御内容の一例を示す。図９に示すように、ストレージ装置１００は、ディスク６１０とキャッシュメモリ６２０とを有する。
【００８５】
ディスク６１０は、所定長単位で区切られた物理セクタを有し、物理セクタごとに所定長単位のデータが読み書きされる記憶媒体である。図９の例では、ディスク６１０は、４ｋＢ単位の物理セクタを有する。従って、ディスク６１０には、４ｋＢ単位でデータが読み書きされる。より具体的には、ディスク６１０は、ＰＢＡ「０」により識別される４ｋＢの物理セクタと、ＰＢＡ「１」により識別される４ｋＢの物理セクタと、を有する。キャッシュメモリ６２０は、図６と同様のため説明を省略する。
【００８６】
ストレージ装置１００は、ディスク６１０のＰＢＡ「０」により識別される４ｋＢの物理セクタＰ０に、ＬＢＡ「０」〜「７」により識別される各々５１２Ｂの論理セクタＬ０〜Ｌ７を割り当てている。また、ストレージ装置１００は、ディスク６１０のＰＢＡ「１」により識別される４ｋＢの物理セクタＰ１に、ＬＢＡ「８」〜「Ｆ」により識別される各々５１２Ｂの論理セクタＬ８〜ＬＦを割り当てている。
【００８７】
以下では、ストレージ装置１００が、アンアラインなライトデータ１３０を受け付けた場合を例に挙げて、ライトデータ１３０のディスク６１０への書き込みを制御する処理の一例について示す。図９の例では、ストレージ装置１００は、図６と同様に、ＬＢＡ「０」〜「９」により識別される書込先となる記憶領域Ｌ０〜Ｌ９に書き込むライトデータ１３０を受け付ける。
【００８８】
ストレージ装置１００は、ライトデータ１３０を受け付けると、ライトデータ１３０がアラインなデータであるか否かを判定する。ストレージ装置１００は、例えば、書込先となる記憶領域の先頭または末尾が、ディスク６１０のセクタの先頭または末尾に一致しているか否かを判定する。ここで、図６と同様に、ライトデータ１３０は、アラインなデータではない。
【００８９】
従って、ストレージ装置１００は、ライトデータ１３０の末尾側を補完してアラインなデータに変換してから、ディスク６１０への書き込みを制御する。ストレージ装置１００は、例えば、キャッシュメモリ６２０から、ライトデータ１３０の末尾側に付加すべき、論理セクタＬ８〜ＬＦに記憶されているデータを探索する。次に、ストレージ装置１００は、探索できた場合は、探索されたデータをキャッシュメモリ６２０から抽出し、抽出したデータをライトデータ１３０の末尾に付加する。これにより、ストレージ装置１００は、ライトデータ１３０からアラインなデータを作成することができる。
【００９０】
そして、ストレージ装置１００は、作成したアラインなデータのディスク６１０への書き込みを制御する。ストレージ装置１００は、例えば、作成したアラインなデータのうちの物理セクタＰ０が書込先となる記憶領域である４ｋＢのデータを、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを物理セクタＰ０に書き込む。
【００９１】
また、ストレージ装置１００は、作成したアラインなデータのうちの物理セクタＰ１が書込先となる記憶領域である４ｋＢのデータを、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを、物理セクタＰ１に書き込む。このように、ストレージ装置１００は、ライトデータ１３０の書き込みにおけるディスク６１０へのアクセス回数を減らすることができる。結果として、ストレージ装置１００は、ＲＭＷによるディスク６１０の回転待ち時間の発生を抑制し、データの書き込みを高速化することができる。
【００９２】
一方で、ストレージ装置１００は、ライトデータ１３０の末尾側に付加すべきデータを探索できなかった場合は、アンアラインなライトデータ１３０のディスク６１０への書き込みを制御する。ストレージ装置１００は、例えば、アンアラインなライトデータ１３０のうちの物理セクタＰ０が書込先となる記憶領域である４ｋＢのデータを、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを物理セクタＰ０に書き込む。
【００９３】
また、ストレージ装置１００は、ライトデータ１３０の末尾側に付加すべき論理セクタＬＡ〜ＬＦに記憶されているデータを含む物理セクタＰ１に記憶されているデータを、ディスク６１０から抽出する。次に、ストレージ装置１００は、抽出したデータから、論理セクタＬＡ〜ＬＦに記憶されているデータを抽出する。そして、ストレージ装置１００は、抽出したデータを、アンアラインなライトデータ１３０のうちの物理セクタＰ１が書込先となる記憶領域であるデータの末尾に付加する。次に、ストレージ装置１００は、付加したデータをライトコマンドとしてディスク６１０に送信する。ここで、ディスク６１０は、受信したデータを物理セクタＰ１に書き込む。
【００９４】
この時、ストレージ装置１００は、ディスク６１０から抽出した物理セクタＰ１に記憶されているデータを、キャッシュメモリ６２０に格納する。このように、ストレージ装置１００は、ＲＭＷを行った場合、次回の書き込み時に探索できるように、キャッシュメモリ６２０に格納する。
【００９５】
次に、図１０および図１１を用いて、第２の動作例におけるキャッシュメモリ６２０の更新内容の一例について示す。図１０において、ストレージ装置１００は、論理セクタＬ２〜Ｌ１１が書込先となる記憶領域であるライトデータ１３０を受け付ける。次に、ストレージ装置１００は、書込先となる記憶領域Ｌ２〜Ｌ１１の先頭がディスク６１０の物理セクタＰ０〜Ｐ２のいずれの先頭にも一致しないと判定し、書込先となる記憶領域Ｌ２〜Ｌ１１の末尾がディスク６１０の物理セクタＰ０〜Ｐ２のいずれの末尾にも一致しないと判定する。
【００９６】
そして、ストレージ装置１００は、ＭＲＵテーブル３００とＭＦＵテーブル４００とを用いて、キャッシュメモリ６２０から、ライトデータ１３０の先頭側に付加すべき論理セクタＬ０〜Ｌ７に記憶されているデータを探索する。ストレージ装置は、例えば、ＭＲＵテーブル３００とＭＦＵテーブル４００との各レコードの中から、アドレス項目にＬＢＡ「０」〜「７」が含まれるレコードを探索する。
【００９７】
また、ストレージ装置１００は、ＭＲＵテーブル３００とＭＦＵテーブル４００とを用いて、キャッシュメモリ６２０から、ライトデータ１３０の末尾側に付加すべき、ＬＢＡ「１２」〜「１７」により識別される論理セクタに記憶されているデータを探索する。ストレージ装置１００は、例えば、ＭＲＵテーブル３００とＭＦＵテーブル４００との各レコードの中から、アドレス項目にＬＢＡ「１２」〜「１７」が含まれるレコードを探索する。
【００９８】
ここで、ストレージ装置１００は、ＭＲＵテーブル３００にアドレス項目にＬＢＡ「０」〜「７」が含まれるレコードがあるため、キャッシュメモリ６２０に論理セクタＬ０〜Ｌ７に記憶されているデータが記憶されていると判定する。次に、ストレージ装置１００は、キャッシュメモリ６２０から論理セクタＬ０〜Ｌ７に記憶されているデータを抽出する。そして、ストレージ装置１００は、抽出したデータをライトデータ１３０の先頭に付加する。ここで、図１１の説明に移行する。
【００９９】
図１１において、ストレージ装置１００は、論理セクタＬ０〜Ｌ７が割り当てられた物理セクタＰ０が書込先となる記憶領域である４ｋＢのデータを、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信した４ｋＢのデータを、物理セクタＰ０に書き込む。
【０１００】
また、ストレージ装置１００は、論理セクタＬ８〜ＬＦが割り当てられた物理セクタＰ１が書込先となる記憶領域である４ｋＢのデータを、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信した４ｋＢのデータを、物理セクタＰ１に書き込む。
【０１０１】
また、ストレージ装置１００は、ライトデータ１３０の末尾側に付加すべき論理セクタＬ１２〜Ｌ１７に記憶されているデータが含まれる物理セクタＰ２に記憶されているデータを、ディスク６１０から抽出する。次に、ストレージ装置１００は、抽出したデータから、論理セクタＬ１２〜Ｌ１７に記憶されているデータを抽出する。そして、ストレージ装置１００は、抽出したデータを、ライトデータ１３０のうちの論理セクタＬ１０〜Ｌ１１が書込先となる記憶領域であるデータの末尾に付加する。
【０１０２】
次に、ストレージ装置１００は、付加後の４ｋＢのデータを、ライトコマンドとして、ディスク６１０に送信する。ここで、ディスク６１０は、受信した４ｋＢのデータを、物理セクタＰ２にＲＭＷなしに書き込む。
【０１０３】
次に、ストレージ装置１００は、ＭＲＵテーブル３００に記憶されているＬＢＡ「０」〜「７」の範囲を示すレコードが利用されたため、ＬＢＡ「０」〜「７」の範囲を示すレコードをＭＦＵテーブル４００に移行する。そして、ストレージ装置１００は、ディスク６１０から抽出した物理セクタＰ２に書き込んだデータと同一内容のデータを、キャッシュメモリ６２０に格納する。また、ストレージ装置１００は、ＭＲＵテーブル３００にＲＭＷが行われたＬＢＡ「１２」〜「１７」の範囲を示すレコードがないため、ＭＲＵテーブル３００にＬＢＡ「１２」〜「１７」の範囲と有効フラグ「１」とを示すレコードを追加する。
【０１０４】
このように、ストレージ装置１００は、ＲＭＷされた物理セクタＰ２のデータを、次回の書き込み時に探索できるように、キャッシュメモリ６２０に格納する。また、例えば、第２の動作例においては、ＭＲＵテーブル３００の有効フラグ項目はなくてもよい。
【０１０５】
（書込制御処理手順）
図１２は、書込制御処理手順の一例を示すフローチャートである。書込制御処理は、上述した第１の動作例または第２の動作例を実行する処理である。
【０１０６】
図１２において、ストレージ装置１００は、ライトデータ１３０を受け付けたか否かを判定する（ステップＳ１２０１）。ここで、ライトデータ１３０を受け付けていない場合（ステップＳ１２０１：Ｎｏ）、ストレージ装置１００は、ステップＳ１２０１に戻り、ライトデータ１３０を受け付けるのを待つ。
【０１０７】
一方、ライトデータ１３０を受け付けた場合（ステップＳ１２０１：Ｙｅｓ）、ストレージ装置１００は、ライトデータ１３０の先頭がアラインであるか否かを判定する（ステップＳ１２０２）。ここで、アラインである場合（ステップＳ１２０２：Ｙｅｓ）、ストレージ装置１００は、ステップＳ１２０５に移行する。
【０１０８】
一方、アラインではない場合（ステップＳ１２０２：Ｎｏ）、ストレージ装置１００は、ＭＲＵテーブル３００とＭＦＵテーブル４００とを用いて、ライトデータ１３０の先頭側に付加すべきディスク６１０のセクタに記憶されているデータと同一内容のデータが、キャッシュメモリ６２０上にあるか否かを判定する（ステップＳ１２０３）。ここで、キャッシュメモリ６２０上にない場合（ステップＳ１２０３：Ｎｏ）、ストレージ装置１００は、ステップＳ１２０５に移行する。
【０１０９】
一方、キャッシュメモリ６２０上にある場合（ステップＳ１２０３：Ｙｅｓ）、ストレージ装置１００は、キャッシュメモリ６２０上の当該データを抽出して、抽出したデータをライトデータ１３０の先頭に付加して（ステップＳ１２０４）、ステップＳ１２０５に移行する。
【０１１０】
ステップＳ１２０５において、ストレージ装置１００は、ライトデータ１３０の末尾がアラインであるか否かを判定する（ステップＳ１２０５）。ここで、アラインである場合（ステップＳ１２０５：Ｙｅｓ）、ストレージ装置１００は、ステップＳ１２０８に移行する。
【０１１１】
一方、アラインではない場合（ステップＳ１２０５：Ｎｏ）、ストレージ装置１００は、ＭＲＵテーブル３００とＭＦＵテーブル４００とを用いて、ライトデータ１３０の末尾側に付加すべきディスク６１０のセクタに記憶されているデータと同一内容のデータが、キャッシュメモリ６２０上にあるか否かを判定する（ステップＳ１２０６）。ここで、キャッシュメモリ６２０上にない場合（ステップＳ１２０６：Ｎｏ）、ストレージ装置１００は、ステップＳ１２０８に移行する。
【０１１２】
一方、キャッシュメモリ６２０上にある場合（ステップＳ１２０６：Ｙｅｓ）、ストレージ装置１００は、キャッシュメモリ６２０上の当該データを抽出して、抽出したデータをライトデータ１３０の末尾に付加して（ステップＳ１２０７）、ステップＳ１２０８に移行する。
【０１１３】
ステップＳ１２０８において、ストレージ装置１００は、ライトデータ１３０のディスク６１０への書き込みを制御する（ステップＳ１２０８）。例えば、ディスク６１０が第１の種類であれば、ストレージ装置１００は、ライトデータ１３０を５１２Ｂずつライトコマンドとしてディスク６１０に送信する。また、例えば、ディスク６１０が第２の種類であれば、ストレージ装置１００は、ライトデータ１３０を４ｋＢずつライトコマンドとしてディスク６１０に送信する。ストレージ装置１００は、ライトデータ１３０が４ｋＢずつ送信できない場合は、ライトデータ１３０からＲＭＷにより物理セクタ単位で書き込みできるデータに作成して、４ｋＢずつ送信する。次に、ストレージ装置１００は、図１３に後述するデータ更新処理を実行する（ステップＳ１２０９）。そして、ストレージ装置１００は、書込制御処理を終了する。
【０１１４】
これにより、ストレージ装置１００は、ライトデータ１３０のディスク６１０への書き込みを制御する場合におけるディスク６１０へのアクセス回数を減らすることができる。また、例えば、図１２において、ステップＳ１２０２とステップＳ１２０３との処理は実行順序が逆であってもよいし、ステップＳ１２０５とステップＳ１２０６との処理は実行順序が逆であってもよい。
【０１１５】
（データ更新処理手順）
図１３は、データ更新処理手順の一例を示すフローチャートである。データ更新処理は、上述したステップＳ１２０９の処理であって、キャッシュメモリ６２０とＭＲＵテーブル３００とＭＦＵテーブル４００との記憶内容を更新する処理である。
【０１１６】
図１３において、ストレージ装置１００は、ステップＳ１２０４およびステップＳ１２０７の少なくともいずれかにおいてライトデータ１３０に付加されたデータがあるか否かを判定する（ステップＳ１３０１）。ここで、ステップＳ１２０４およびステップＳ１２０７において付加されたデータがない場合（ステップＳ１３０１：Ｎｏ）、ストレージ装置１００は、ステップＳ１３０５に移行する。
【０１１７】
一方、ステップＳ１２０４およびステップＳ１２０７の少なくともいずれかにおいて付加されたデータがある場合（ステップＳ１３０１：Ｙｅｓ）、ストレージ装置１００は、ライトデータ１３０に付加されたデータに基づいて、キャッシュメモリ６２０の記憶内容を更新する（ステップＳ１３０２）。
【０１１８】
次に、ストレージ装置１００は、付加されたデータが、ＭＲＵテーブル３００のアドレス項目が示すＬＢＡの範囲により識別される論理セクタに記憶されているデータと同一内容のデータであるか否かを判定する（ステップＳ１３０３）。ここで、ＭＲＵテーブル３００のアドレス項目が示すＬＢＡの範囲により識別される論理セクタに記憶されているデータと同一内容のデータではない場合（ステップＳ１３０３：Ｎｏ）、ストレージ装置１００は、ステップＳ１３０５に移行する。
【０１１９】
一方、ＭＲＵテーブル３００のアドレス項目が示すＬＢＡの範囲により識別される論理セクタに記憶されているデータと同一内容のデータである場合（ステップＳ１３０３：Ｙｅｓ）、ストレージ装置１００は、当該アドレス項目を含むレコードをＭＦＵテーブル４００に移行する（ステップＳ１３０４）。そして、ストレージ装置１００は、ステップＳ１３０５に移行する。
【０１２０】
ステップＳ１３０５において、ストレージ装置１００は、ステップＳ１２０８においてＲＭＷが行われたか否かを判定する（ステップＳ１３０５）。ここで、行われていない場合（ステップＳ１３０５：Ｎｏ）、ストレージ装置１００はデータ更新処理を終了する。
【０１２１】
一方、行われた場合（ステップＳ１３０５：Ｙｅｓ）、ストレージ装置１００は、ＲＭＷが行われたセクタに記憶されているデータをキャッシュメモリ６２０に格納する（ステップＳ１３０６）。そして、ストレージ装置１００は、データ更新処理を終了する。これにより、ストレージ装置１００は、次回のデータのディスク６１０への書き込みに備えて、キャッシュメモリ６２０とＭＲＵテーブル３００とＭＦＵテーブル４００との記憶内容を更新することができる。
【０１２２】
以上説明したように、ストレージ装置１００によれば、ライトデータ１３０の先頭または末尾がアンアラインであれば、ライトデータ１３０と第２の記憶部１２０のデータとを用いて先頭または末尾がアラインであるデータを作成して第１の記憶部１１０に書き込む。これにより、ストレージ装置１００は、ライトデータ１３０の第１の記憶部１１０への書き込みにおけるディスク６１０へのアクセス回数を減らし、第１の記憶部１１０へのデータの書き込みを高速化することができる。
【０１２３】
例えば、先頭がアンアラインである場合がある。この場合に、ストレージ装置１００は、例えば、第１の記憶部１１０のいずれかの記憶領域の先頭からライトデータ１３０の書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータを、ライトデータ１３０の先頭に付加する。これにより、ストレージ装置１００は、先頭がアンアラインであるライトデータ１３０から先頭がアラインであるデータを作成することができる。そして、ストレージ装置１００は、作成したデータを、ＲＭＷなしに第１の記憶部１１０に書き込むことができる。
【０１２４】
例えば、末尾がアンアラインである場合がある。この場合に、ストレージ装置１００は、例えば、ライトデータ１３０の書込先となる記憶領域の末尾から第１の記憶部１１０のいずれかの記憶領域の末尾までの記憶領域に記憶されているデータと同一内容のデータを、ライトデータ１３０の末尾に付加する。これにより、ストレージ装置１００は、先頭がアンアラインであるライトデータ１３０から先頭がアラインであるデータを作成することができる。そして、ストレージ装置１００は、作成したデータを、ＲＭＷなしに第１の記憶部１１０に書き込むことができる。
【０１２５】
例えば、先頭および末尾がアラインである場合に、ストレージ装置１００は、ライトデータ１３０をそのまま第１の記憶部１１０に書き込む。これにより、ストレージ装置１００は、ＲＭＷなしにライトデータ１３０を第１の記憶部１１０に書き込むことができる。
【０１２６】
また、ストレージ装置１００は、データを作成して第１の記憶部１１０の記憶領域に書き込んだ場合に、当該記憶領域に対応付けられた第２の記憶部１２０に記憶されているデータを、書き込んだデータに基づいて更新する。これにより、ストレージ装置１００は、第１の記憶部１１０に記憶されているデータと、当該データに対応する第２の記憶部１２０に記憶されているデータと、を同一内容のデータにすることができる。
【０１２７】
また、ストレージ装置１００は、ＲＭＷを行った場合には、ＲＭＷにより第１の記憶部１１０に書き込んだデータと同一内容のデータを第２の記憶部１２０に格納する。これにより、ストレージ装置１００は、今回ＲＭＷにより書き込んだ記憶領域と同一の記憶領域に次回書き込む場合に、ＲＭＷなしに書き込むことができる。
【０１２８】
ストレージ装置１００は、第２の記憶部１２０に記憶されているデータが所定数以上ある場合に、所定数以上あるデータのうち、第２の記憶部１２０に最古に格納されたデータを削除する。これにより、ストレージ装置１００は、第２の記憶部１２０の記憶領域の使用量を抑制した上で、第２の記憶部１２０に最近格納されたデータを所定数記憶しておくことができる。
【０１２９】
ストレージ装置１００は、第２の記憶部１２０に記憶されてから利用されていないデータが所定数以上ある場合に、所定数以上ある利用されていないデータのうち、第２の記憶部１２０に最古に格納されたデータを削除する。また、ストレージ装置１００は、第２の記憶部１２０に記憶されてから利用されたデータが所定数以上ある場合に、所定数以上ある利用されたデータのうち、最古に利用されたデータを削除する。これにより、ストレージ装置１００は、第２の記憶部１２０の記憶領域の使用量を抑制した上で、第２の記憶部１２０に最近格納されたデータを所定数記憶しておくことができ、最近利用されたデータを所定数記憶しておくことができる。
【０１３０】
なお、本実施の形態で説明した書込制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本書込制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本書込制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１３１】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１３２】
（付記１）所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第１の記憶部と、
前記第１の記憶部のいずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第２の記憶部と、
前記第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が前記いずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定する判定部と、
前記判定部によって前記いずれかの記憶領域の先頭または末尾に一致しないと判定された場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを前記第２の記憶部から抽出する抽出部と、
前記抽出部によって抽出されたデータと、前記ライトデータと、を用いて、前記第１の記憶部に書き込むデータを作成する作成部と、
前記作成部によって作成されたデータの前記第１の記憶部への書き込みを制御する制御部と、
を有することを特徴とするストレージ装置。
【０１３３】
（付記２）前記抽出部は、
前記判定部によって前記いずれかの記憶領域の先頭に一致しないと判定された場合に、前記いずれかの記憶領域の先頭から前記書込先となる記憶領域の先頭までの記憶領域に記憶されているデータと同一内容のデータを前記第２の記憶部から抽出し、
前記作成部は、
前記抽出部によって抽出されたデータを前記ライトデータの先頭に付加することにより、前記第１の記憶部に書き込むデータを作成することを特徴とする付記１に記載のストレージ装置。
【０１３４】
（付記３）前記抽出部は、
前記判定部によって前記いずれかの記憶領域の末尾に一致しないと判定された場合に、前記書込先となる記憶領域の末尾から前記いずれかの記憶領域の末尾までの記憶領域に記憶されているデータと同一内容のデータを前記第２の記憶部から抽出し、
前記作成部は、
前記抽出部によって抽出されたデータを前記ライトデータの末尾に付加することにより、前記第１の記憶部に書き込むデータを作成することを特徴とする付記１または２に記載のストレージ装置。
【０１３５】
（付記４）前記制御部は、
前記判定部によって先頭および末尾が一致すると判定された場合に、前記ライトデータの前記第１の記憶部への書き込みを制御することを特徴とする付記１〜３のいずれか一つに記載のストレージ装置。
【０１３６】
（付記５）前記作成部によって作成されたデータに基づいて、前記第２の記憶部において前記いずれかの記憶領域に対応付けられたデータを更新する更新部を有することを特徴とする付記１〜４のいずれか一つに記載のストレージ装置。
【０１３７】
（付記６）前記書込先となる記憶領域の先頭または末尾が前記いずれかの記憶領域とは異なる他の記憶領域に含まれる場合に、前記他の記憶領域に記憶されているデータを前記第１の記憶部から読み出して前記他の記憶領域と対応付けて前記第２の記憶部に格納する更新部を有することを特徴とする付記１〜５のいずれか一つに記載のストレージ装置。
【０１３８】
（付記７）前記更新部は、前記第２の記憶部に記憶されているデータの数が所定数以上である場合に、前記第２の記憶部に記憶されている所定数以上のデータのうちの最古のデータを削除することを特徴とする付記５または６に記載のストレージ装置。
【０１３９】
（付記８）前記更新部は、前記第２の記憶部の中に、前記抽出部によってデータが抽出されていないデータが第１の数以上記憶されている場合に、前記抽出部によってデータが抽出されていないデータのうちの最古のデータを削除し、前記第２の記憶部の中に、前記抽出部によってデータが抽出されたデータが第２の数以上記憶されている場合に、前記抽出部によってデータが抽出されたデータのうちの最古のデータを削除することを特徴とする付記５または６に記載のストレージ装置。
【０１４０】
（付記９）コンピュータが、
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第１の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第２の記憶部から抽出し、
抽出したデータと、前記ライトデータと、を用いて、前記第１の記憶部に書き込むデータを作成し、
作成したデータの前記第１の記憶部への書き込みを制御する、
処理を実行することを特徴とする書込制御方法。
【０１４１】
（付記１０）コンピュータに、
所定長単位で区切られた記憶領域に対して前記所定長のデータの読み書きが行われる第１の記憶部に書き込むライトデータの書込先となる記憶領域の先頭または末尾が、前記第１の記憶部のいずれかの記憶領域に含まれる場合に、前記書込先となる記憶領域の先頭または末尾が、前記いずれかの記憶領域の先頭または末尾に一致するか否かを判定し、
前記いずれかの記憶領域の先頭または末尾に一致しないと判定した場合に、前記いずれかの記憶領域のうちの前記書込先となる記憶領域と重複していない記憶領域に記憶されているデータと同一内容のデータを、前記いずれかの記憶領域に対応付けて前記いずれかの記憶領域に記憶されている前記所定長のデータと同一内容のデータが記憶される第２の記憶部から抽出し、
抽出したデータと、前記ライトデータと、を用いて、前記第１の記憶部に書き込むデータを作成し、
作成したデータの前記第１の記憶部への書き込みを制御する、
処理を実行させることを特徴とする書込制御プログラム。
【符号の説明】
【０１４２】
１００  ストレージ装置
１１０  第１の記憶部
１２０  第２の記憶部
５０１  判定部
５０２  抽出部
５０３  作成部
５０４  制御部
５０５  更新部
【図１】
2014137749.tif 000003
【図２】
2014137749.tif 000004
【図３】
2014137749.tif 000005
【図４】
2014137749.tif 000006
【図５】
2014137749.tif 000007
【図６】
2014137749.tif 000008
【図７】
2014137749.tif 000009
【図８】
2014137749.tif 000010
【図９】
2014137749.tif 000011
【図１０】
2014137749.tif 000012
【図１１】
2014137749.tif 000013
【図１２】
2014137749.tif 000014
【図１３】
2014137749.tif 000015