(57)【要約】【課題】フォーマット処理を効率的に行うこと。【解決手段】ストレージ制御装置１０１は、ライト要求に伴うストレージ１０２内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定する。ストレージ制御装置１０１は、ストレージ１０２への入出力要求量に基づいて、シーケンシャルフォーマット要が設定されたチャンクに対するフォーマット処理の実行タイミングを制御する。【選択図】図１
2018092321.tif 000002
【特許請求の範囲】
【請求項１】
ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、前記物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定し、
前記ストレージへの入出力要求量に基づいて、シーケンシャルフォーマット要が設定された物理記憶領域に対するフォーマット処理の実行タイミングを制御する、
制御部を有することを特徴とするストレージ制御装置。
【請求項２】
前記制御部は、
前記ストレージへの入出力要求量が規定値を下回った場合に、シーケンシャルフォーマット要が設定された未フォーマット状態の物理記憶領域に対するフォーマット処理を実行する、ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記制御部は、
未フォーマット状態の物理記憶領域へのライト処理時に、ライトデータ以外の部分をフォーマットパターンでパディングしたデータを用いて書き込みを行う、ことを特徴とする請求項１または２に記載のストレージ制御装置。
【請求項４】
前記制御部は、
前記ライト処理時に、ライト要求範囲が前記物理記憶領域全体の場合は、当該物理記憶領域へのフォーマット処理をスキップして前記ライト処理を実行する、ことを特徴とする請求項３に記載のストレージ制御装置。
【請求項５】
前記ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、当該物理記憶領域に対するチェックコードの値が決定され、
決定された前記チェックコードの値を用いて、前記物理記憶領域へのライト処理が行われる、ことを特徴とする請求項１〜４のいずれか一つに記載のストレージ制御装置。
【請求項６】
ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、前記物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定し、
前記ストレージへの入出力要求量に基づいて、シーケンシャルフォーマット要が設定された物理記憶領域に対するフォーマット処理の実行タイミングを制御する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、およびストレージ制御プログラムに関する。
【背景技術】
【０００２】
従来、物理的な記憶装置のボリューム構成や記憶容量に縛られることなく、自由なボリューム構成、記憶容量の記憶装置を実現することができるストレージシステムとして、仮想化環境向けストレージ、いわゆる仮想化ストレージ装置がある。仮想化ストレージ装置がサーバにボリュームを提供する場合、ボリュームのフォーマット処理が実施される。フォーマット処理では、例えば、ストレージ内の対応する物理記憶領域上にゼロデータが書き込まれる。
【０００３】
関連する先行技術としては、ストレージユニットの性能情報に応じて、ストレージユニットの記憶領域の割当状況を含む割当情報により特定されるストレージユニット内のゼロ初期化対象となる記憶領域に対するゼロ初期化処理の実行を制御するものがある。また、メインストレージ内のコントローラが、外部接続ボリュームについてフォーマット等が指示された場合、それらのコマンドを外部ストレージ内のＡＯＵ（Ａｌｌｏｃａｔｉｏｎ  Ｏｎ  Ｕｓｅ）ボリュームに対するフォーマット指示または領域解放指示に変換する技術がある。また、データトラック上のバージンクラスタにデータを記録するとき、１クラスタ分の書き込みバッファにＮＵＬＬデータを書き込んだ後、書き込みデータを記録するアロケーションブロックに対応する位置に書き込みデータを書き込み、書き込みバッファに書き込んだ１クラスタ分のデータをデータトラック上のクラスタに記録する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１４３９４５号公報
【特許文献２】特開２０１０−５５５５７号公報
【特許文献３】特開平８−１４７１１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ボリュームのフォーマット処理によりストレージへのアクセス負荷が増大して、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）性能が低下するおそれがある。
【０００６】
一つの側面では、本発明は、フォーマット処理を効率的に行うことを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、前記物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定し、前記ストレージへの入出力要求量に基づいて、シーケンシャルフォーマット要が設定された物理記憶領域に対するフォーマット処理の実行タイミングを制御するストレージ制御装置が提供される。
【発明の効果】
【０００８】
本発明の一側面によれば、フォーマット処理を効率的に行うことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかるストレージ制御装置１０１の一実施例を示す説明図である。
【図２】図２は、ストレージシステム２００のシステム構成例を示す説明図である。
【図３】図３は、ストレージ制御装置１０１のハードウェア構成例を示すブロック図である。
【図４】図４は、シーケンシャル管理テーブル４００の記憶内容の一例を示す説明図である。
【図５】図５は、チャンク情報テーブル５００の記憶内容の一例を示す説明図である。
【図６】図６は、ストレージ制御装置１０１の機能的構成例を示すブロック図である。
【図７】図７は、アクセス先アドレスの連続性の判断例を示す説明図である。
【図８】図８は、ワンポイントフォーマットを含むライトバック処理の具体例を示す説明図である。
【図９】図９は、ストレージ制御装置１０１のライト要求処理手順の一例を示すフローチャートである。
【図１０】図１０は、連続性判断処理の具体的処理手順の一例を示すフローチャートである。
【図１１】図１１は、ストレージ制御装置１０１の要求処理手順の一例を示すフローチャートである。
【図１２】図１２は、ストレージ制御装置１０１のライトバック処理手順の一例を示すフローチャートである。
【図１３】図１３は、ストレージ制御装置１０１のシーケンシャルフォーマット処理手順の一例を示すフローチャート（その１）である。
【図１４】図１４は、ストレージ制御装置１０１のシーケンシャルフォーマット処理手順の一例を示すフローチャート（その２）である。
【図１５】図１５は、Ｉ／Ｏ要求パターンに応じたフォーマット動作例を示す説明図である。
【発明を実施するための形態】
【００１０】
以下に図面を参照して、本発明にかかるストレージ制御装置、およびストレージ制御プログラムの実施の形態を詳細に説明する。
【００１１】
（実施の形態）
図１は、実施の形態にかかるストレージ制御装置１０１の一実施例を示す説明図である。図１において、ストレージ制御装置１０１は、ストレージ１０２に対するアクセスを制御するコンピュータである。ストレージ１０２は、１以上の記憶装置を含む。記憶装置は、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどである。
【００１２】
ストレージ制御装置１０１は、例えば、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）構成の仮想化ストレージ装置に適用されるＲＡＩＤコントローラである。仮想化ストレージ装置は、シン・プロビジョニング（Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇ）が適用されたストレージ装置である。
【００１３】
シン・プロビジョニングとは、ストレージリソースを仮想化して割り当てることで、ストレージの物理容量を削減するための技術である。シン・プロビジョニングが導入された環境では、ユーザの要求に応じた容量を物理ディスクに割り当てず、「論理ボリューム（仮想ボリューム）」として割り当てる。物理ディスクは共有のディスクプールとして管理され、論理ボリュームに書き込まれたデータ量に応じて物理ディスク等に容量が割り当てられる。
【００１４】
ここで、仮想化ストレージ装置がサーバにボリュームを提供する場合、ボリュームのフォーマット処理が実施される。フォーマット処理では、例えば、ストレージ内の対応する物理記憶領域上にゼロデータやチェックコードが書き込まれる。ただし、物理ディスクへの実際のゼロデータの書き込みには時間を要するため、ボリュームのフォーマット処理はバックグラウンドで実行される。
【００１５】
バックグラウンドで実行されるフォーマット処理としては、例えば、シーケンシャルフォーマットとワンポイントフォーマットとがある。シーケンシャルフォーマットは、フォーマット対象の物理記憶領域の先頭から順次ゼロデータの書き込みを行うものである。ワンポイントフォーマットは、未フォーマット状態の物理記憶領域へＩ／Ｏが要求された場合に、先行して当該物理記憶領域にゼロデータの書き込みを行い、その後に要求されたＩ／Ｏを処理するものである。
【００１６】
ところが、バックグラウンドで実行されるボリュームのフォーマット処理によりストレージへのアクセス負荷が増大すると、Ｉ／Ｏ性能が低下してしまう。また、ワンポイントフォーマットが動作する場合には、要求されたＩ／Ｏはゼロデータの書き込み後に実行されるため、Ｉ／Ｏレスポンスが悪化するおそれがある。
【００１７】
そこで、本実施の形態では、ストレージ制御装置１０１は、ストレージ１０２への入出力要求量に基づいて、ストレージ１０２内の物理記憶領域に対するフォーマット処理の実行タイミングを制御することで、フォーマット処理を効率的に行う。以下、ストレージ制御装置１０１の処理例について説明する。
【００１８】
（１）ストレージ制御装置１０１は、ライト要求に伴うストレージ１０２内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定する。ここで、物理記憶領域の割り当てとは、ボリューム（例えば、論理ボリュームＶ）に対して、ストレージ１０２内の物理記憶領域を割り当てることである。物理記憶領域の割り当て単位は、あらかじめ決められている。
【００１９】
以下の説明では、物理記憶領域の割り当て単位を「チャンク」と表記する場合がある。
【００２０】
ここで、ライト要求がシーケンシャルなアドレスへの要求であれば、チャンク内のすべての領域に対してライトデータが揃う可能性が高い。したがって、シーケンシャルなアドレスへの要求であれば、フォーマット処理による書き込み時のオーバーヘッドはない可能性が高く、ライトバック時に書き込みを実施すればよいといえる。
【００２１】
一方、ライト要求がランダムなアドレスへの要求であれば、チャンク内のすべての領域に対してライトデータが揃う可能性は低い。したがって、ランダムなアドレスへの要求であれば、フォーマット処理によるオーバーヘッドが発生する。ストレージ制御装置１０１は、ランダムなアドレスへのライト要求により割り当てられたチャンクに対して、シーケンシャルフォーマット要を設定する。
【００２２】
（２）ストレージ制御装置１０１は、ストレージ１０２への入出力要求量に基づいて、シーケンシャルフォーマット要が設定されたチャンクに対するフォーマット処理の実行タイミングを制御する。ここで、ストレージ１０２への入出力要求量は、ストレージ１０２の負荷を表す指標であり、例えば、ストレージ１０２に発行中のコマンド（ライトコマンド、リードコマンド等）の数によって表される。
【００２３】
具体的には、例えば、ストレージ制御装置１０１は、ストレージ１０２への入出力要求量が規定値を下回った場合に、シーケンシャルフォーマット要が設定された未フォーマット状態のチャンクに対するフォーマット処理を実行する。規定値は、任意に設定可能であり、例えば、入出力要求量が規定値を下回っていれば、ストレージ１０２への負荷が高くないといえる値に設定される。これにより、ストレージ１０２への負荷が高い状態でシーケンシャルフォーマットが実施されて、Ｉ／Ｏ性能が低下してしまうのを防ぐことができる。
【００２４】
また、ストレージ制御装置１０１は、単位時間当たりの入出力要求量の増加分が閾値を超えた場合には、たとえ入出力要求量が規定値を下回っていても、チャンクに対するフォーマット処理を実行しないようにしてもよい。閾値は、任意に設定可能であり、例えば、入出力要求量の増加分が閾値を超えると、ストレージ１０２の負荷の急激な増大が見込まれる値に設定される。これにより、この先Ｉ／Ｏ量の急な増加が見込まれるタイミングでのシーケンシャルフォーマットの実施を抑制することができる。
【００２５】
このように、ストレージ制御装置１０１によれば、ストレージ１０２への入出力要求量に基づいて、シーケンシャルフォーマット要のチャンクに対するフォーマット処理の実行タイミングを制御することができる。シーケンシャルフォーマット要のチャンクは、ランダムなアドレスへのライト要求により割り当てられたチャンクである。
【００２６】
これにより、例えば、バックグラウンド処理が実施されてもＩ／Ｏ性能が低下しない程度にストレージ１０２への負荷が低い状態のときに、オーバーヘッドが発生しうるチャンクに対するフォーマット処理を実施することができる。また、ストレージ１０２への負荷が低い状態でチャンクに対するフォーマット処理を進めることで、ワンポイントフォーマットの動作頻度を低減させることができる。
【００２７】
（ストレージシステム２００のシステム構成例）
つぎに、図１に示したストレージ制御装置１０１をストレージシステム２００に適用した場合について説明する。ストレージシステム２００は、例えば、ＲＡＩＤ５の冗長化されたシステムである。
【００２８】
図２は、ストレージシステム２００のシステム構成例を示す説明図である。図２において、ストレージシステム２００は、ストレージ装置２０１と、ホスト装置２０２と、を含む。ストレージシステム２００において、ストレージ装置２０１およびホスト装置２０２は、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。
【００２９】
ここで、ストレージ装置２０１は、ストレージ制御装置１０１とストレージＳＴを含む。ストレージＳＴは、複数のＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）を含む。ただし、ＨＤＤの代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を用いることにしてもよい。ストレージＳＴにおいて、例えば、１以上のＨＤＤからＲＡＩＤグループが作成され、１以上のＲＡＩＤグループからプール（物理的な容量プール）が作成される。図１に示したストレージ１０２は、例えば、ストレージＳＴに対応する。
【００３０】
ストレージ制御装置１０１は、不図示の構成テーブルおよび割当テーブルを有する。構成テーブルには、例えば、装置内に作成された論理ボリュームや、ＲＡＩＤを構成するディスクについての種々の管理情報が格納される。割当テーブルには、例えば、シン・プロビジョニング構成における割り当て単位（チャンク）ごとの情報や、割り当て済みのチャンクに対する論理アドレスと物理アドレスの対応情報が格納される。割当テーブルには、例えば、後述の図５に示すチャンク情報テーブル５００が含まれる。
【００３１】
ホスト装置２０２は、ストレージシステム２００により提供される論理ボリューム（仮想ボリューム）に対するデータのリード／ライトを要求するコンピュータである。例えば、ホスト装置２０２は、ストレージシステム２００を利用する業務サーバや、ストレージシステム２００を管理する管理サーバなどである。
【００３２】
なお、図２の例では、ストレージ制御装置１０１およびホスト装置２０２をそれぞれ１台のみ表記したが、ストレージシステム２００に複数のストレージ制御装置１０１やホスト装置２０２が含まれることにしてもよい。
【００３３】
（ストレージ制御装置１０１のハードウェア構成例）
図３は、ストレージ制御装置１０１のハードウェア構成例を示すブロック図である。図３において、ストレージ制御装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、通信Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、Ｉ／Ｏコントローラ３０４と、を有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００３４】
ここで、ＣＰＵ３０１は、ストレージ制御装置１０１の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００３５】
ＲＡＭには、キャッシュメモリ３０５やワークバッファ３０６が含まれる。キャッシュメモリ３０５には、例えば、ホスト装置２０２から要求されるＩ／Ｏのデータが一時的に格納される。ワークバッファ３０６は、ホスト装置２０２から要求されるＩ／Ｏ以外のデータ処理に使用される。
【００３６】
通信Ｉ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して外部装置（例えば、図２に示したホスト装置２０２）に接続される。そして、通信Ｉ／Ｆ３０３は、ネットワーク２１０と装置内部とのインターフェースを司り、外部装置からのデータの入出力を制御する。通信Ｉ／Ｆ３０３は、例えば、ＣＡ（Ｃｈａｎｎｅｌ  Ａｄａｐｔｅｒ）を含む。Ｉ／Ｏコントローラ３０４は、ＣＰＵ３０１の制御にしたがって、ストレージＳＴ（図２参照）に対するアクセスを行う。
【００３７】
（シーケンシャル管理テーブル４００の記憶内容）
つぎに、ストレージ制御装置１０１が有するシーケンシャル管理テーブル４００の記憶内容について説明する。シーケンシャル管理テーブル４００は、例えば、図３に示したメモリ３０２に記憶される。
【００３８】
図４は、シーケンシャル管理テーブル４００の記憶内容の一例を示す説明図である。図４において、シーケンシャル管理テーブル４００は、論理ボリューム番号、論理アドレスおよび更新時刻のフィールドを有する。各フィールドに情報を設定することで、シーケンシャル管理情報（例えば、シーケンシャル管理情報４００−１，４００−２）がレコードとして記憶される。
【００３９】
ここで、論理ボリューム番号は、ストレージシステム２００により提供される論理ボリュームを識別する識別子である。論理アドレスは、論理ボリューム番号の論理ボリュームにアクセスした際の終端論理アドレスに「１」を加算したものである。したがって、例えば、次回のアクセスがこの論理アドレスへのアクセスであれば、アクセス先アドレスに連続性があると判断することができる。更新時刻は、論理ボリューム番号の論理ボリュームにアクセスした時刻である。更新時刻には、日付が含まれることにしてもよい。
【００４０】
なお、シーケンシャル管理テーブル４００では、１つの論理ボリュームに対して複数のエントリ（例えば、４エントリ）が用意される。
【００４１】
（チャンク情報テーブル５００の記憶内容）
つぎに、ストレージ制御装置１０１が有するチャンク情報テーブル５００の記憶内容について説明する。チャンク情報テーブル５００は、例えば、メモリ３０２に記憶される。
【００４２】
図５は、チャンク情報テーブル５００の記憶内容の一例を示す説明図である。図５において、チャンク情報テーブル５００は、チャンク番号、フォーマット状況、シーケンシャルフォーマット要否、論理ボリューム番号および論理アドレスのフィールドを有する。各フィールドに情報を設定することで、チャンク情報５００−１〜５００−ｎがレコードとして記憶される（ｎ：２以上の自然数）。
【００４３】
ここで、チャンク番号は、ストレージＳＴ内のチャンクを識別する識別子である。チャンクとは、論理ボリュームに割り当てられる物理記憶領域の割り当て単位である。フォーマット状況は、チャンク番号のチャンクがフォーマット済みであるか否かを示す。ここでは、フォーマット状況が「０」の場合に、フォーマット済みであることを示す。一方、フォーマット状況が「１」の場合は、未フォーマット状態であることを示す。
【００４４】
シーケンシャルフォーマット要否は、チャンク番号のチャンクに対してシーケンシャルフォーマットが必要であるか否かを示す。ここでは、シーケンシャルフォーマット要否が「１」の場合に、シーケンシャルフォーマットが必要であることを示す。一方、シーケンシャルフォーマット要否が「０」の場合は、シーケンシャルフォーマットが不要であることを示す。
【００４５】
論理ボリューム番号は、チャンク番号のチャンクが割り当てられた論理ボリューム（ユーザボリューム）を識別する識別子である。なお、論理ボリューム番号「０ｘＦＦＦＦ」は、未割り当てであることを示す。論理アドレスは、チャンク番号のチャンクが割り当てられた論理ボリュームのアドレスを示す。
【００４６】
（ストレージ制御装置１０１の機能的構成例）
図６は、ストレージ制御装置１０１の機能的構成例を示すブロック図である。図６において、ストレージ制御装置１０１は、Ｉ／Ｏ制御部６０１と、シン・プロビジョニング制御部６０２（以下、単に「シンプロ制御部６０２」という）と、キャッシュ制御部６０３と、ＲＡＩＤ制御部６０４と、を含む構成である。Ｉ／Ｏ制御部６０１〜ＲＡＩＤ制御部６０４は制御部となる機能であり、具体的には、例えば、図３に示したメモリ３０２に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、通信Ｉ／Ｆ３０３やＩ／Ｏコントローラ３０４により、その機能を実現する。各機能部の処理結果は、例えば、メモリ３０２やストレージＳＴに記憶される。
【００４７】
Ｉ／Ｏ制御部６０１は、ホスト装置２０２からのＩ／Ｏ要求および応答を処理する。Ｉ／Ｏ要求は、ライト要求またはリード要求である。ライト要求は、論理ボリュームに対してデータの書き込みを要求するものである。リード要求は、論理ボリュームに対してデータの読み込みを要求するものである。
【００４８】
ライト要求には、例えば、ライトデータ（書込対象データ）や、ライト要求範囲（書込要求範囲）を特定する情報が含まれる。ライト要求範囲を特定する情報は、例えば、論理ボリューム番号、ライト要求範囲の開始論理アドレスや、ライトデータのブロック数などである。
【００４９】
具体的には、例えば、Ｉ／Ｏ制御部６０１は、ホスト装置２０２からのＩ／Ｏ要求を受け付けて、シンプロ制御部６０２に通知する。また、Ｉ／Ｏ制御部６０１は、例えば、ライト要求に対するライト完了応答や、リード要求に対するリードデータをホスト装置２０２に通知する。
【００５０】
シンプロ制御部６０２は、ホスト装置２０２に提供する論理ボリュームの論理アドレスと物理アドレスとの管理を行う。論理アドレスは、論理ボリュームにおけるアドレスである。物理アドレスは、例えば、ストレージＳＴ内のＨＤＤにおけるアドレス（ＬＢＡ：Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓｉｎｇ）である。
【００５１】
シンプロ制御部６０２は、ライト要求を受け付けたことに応じて、アクセス先アドレスの連続性を判断する。ここでは、ライト要求がシーケンシャルなアドレスへの要求であれば連続性があると判断される。ライト要求がランダムなアドレスへの要求であれば連続性がないと判断される。
【００５２】
具体的には、例えば、シンプロ制御部６０２は、図４に示したシーケンシャル管理テーブル４００を参照して、受け付けたライト要求のアクセス先アドレスの連続性を判断する。なお、アクセス先アドレスの連続性の判断例については、図７を用いて後述する。
【００５３】
また、シンプロ制御部６０２は、ライト要求を受け付けたことに応じて、ライト要求範囲がチャンクを割り当て済みの範囲であるか否かを判断する。ここで、チャンクを未割り当ての場合は、シンプロ制御部６０２は、論理ボリューム（ライト要求範囲）に未使用のチャンクを割り当てる。
【００５４】
チャンクが割り当てられた場合、例えば、図５に示したチャンク情報テーブル５００内の対応するチャンク情報が更新される。更新対象のチャンク情報は、割り当てられたチャンクのチャンク番号に対応するチャンク情報である。具体的には、例えば、チャンク情報の論理ボリューム番号および論理アドレスに、ライト要求に含まれる論理ボリューム番号およびライト要求範囲の開始論理アドレスが設定される。この時点では、チャンク情報のフォーマット状況は初期値（例えば、１）である。また、チャンク情報のシーケンシャルフォーマット要否は初期値（例えば、０）である。
【００５５】
また、シンプロ制御部６０２は、判断したアクセス先アドレスの連続性に基づいて、割り当てたチャンクにシーケンシャルフォーマット要否を設定する。具体的には、例えば、シンプロ制御部６０２は、アクセス先アドレスの連続性があると判断した場合、割り当てたチャンクにシーケンシャルフォーマット不要を設定する。
【００５６】
一方、シンプロ制御部６０２は、アクセス先アドレスの連続性がないと判断した場合、割り当てたチャンクにシーケンシャルフォーマット要を設定する。設定されたシーケンシャルフォーマット要否は、例えば、チャンク情報テーブル５００内の対応するチャンク情報に設定される。
【００５７】
なお、チャンクが割り当てられた時点で、ライト要求のアクセス先アドレスの連続性を判断できない場合には、シンプロ制御部６０２は、割り当てたチャンクにシーケンシャルフォーマット要を設定することにしてもよい。
【００５８】
また、チャンクに対するチェックコードの値は、例えば、ライト要求に伴って当該チャンクが論理ボリュームに割り当てられた時点で決定される。具体的には、例えば、チェックコードの値は、ストレージ制御装置１０１のＣＡにおいて、アクセス先の論理ボリュームの論理アドレスに基づき決定される。そして、ストレージ制御装置１０１は、決定されたチェックコードの値を用いて、割り当てられたチャンクへのライト処理を行う。チャンクへのライト処理としては、例えば、シーケンシャルフォーマットに伴うライト処理や、ライトバック要求に伴うライト処理がある。
【００５９】
なお、受け付けられたライト要求（ライトデータを含む）は、例えば、キャッシュ制御部６０３によって、図３に示したキャッシュメモリ３０５に格納される。この結果、Ｉ／Ｏ制御部６０１は、ホスト装置２０２に対してライト完了応答を送信する。
【００６０】
キャッシュ制御部６０３は、受け付けたＩ／Ｏデータ（例えば、ライト要求）のキャッシュメモリ３０５上への配置を行う。また、キャッシュ制御部６０３は、ストレージＳＴ内のＨＤＤへのライトバック（Ｗｒｉｔｅｂａｃｋ）や、ストレージＳＴ内のＨＤＤからのステイジング（Ｓｔａｇｉｎｇ）のタイミングの管理を行う。
【００６１】
ＲＡＩＤ制御部６０４は、ストレージＳＴ内のＨＤＤへのコマンド発行を行う。また、ＲＡＩＤ制御部６０４は、ＲＡＩＤの負荷管理を行う。具体的には、例えば、ＲＡＩＤ制御部６０４は、キャッシュ制御部６０３からディスク（ＨＤＤ）のリード／ライトを伴う処理要求を受け付けた場合、当該処理要求に応じてプール内のＨＤＤにコマンドを発行する。ディスクのリード／ライトを伴う処理要求には、例えば、ライトバック要求が含まれる。
【００６２】
この際、ＲＡＩＤ制御部６０４は、処理要求に応じてプール内のＨＤＤに発行したコマンド数を、当該プールに対する発行コマンド数に加算する。また、ＲＡＩＤ制御部６０４は、ディスクのリード／ライトを伴う処理が完了した場合、その処理要求に対応するコマンド数を、プールに対する発行コマンド数から減算する。
【００６３】
これにより、プールに発行中のコマンド数、すなわち、ストレージＳＴ内のプール単位Ｉ／Ｏ要求量を管理することができる。なお、ここでは、ストレージＳＴ内のプール単位で発行コマンド数を管理することにしたが、これに限らない。例えば、ストレージＳＴ内のＨＤＤ単位やＲＡＩＤグループ単位で発行コマンド数を管理することにしてもよい。
【００６４】
また、ＲＡＩＤ制御部６０４は、ストレージＳＴへのＩ／Ｏ要求量に基づいて、シーケンシャルフォーマット要が設定されたチャンクに対するフォーマット処理の実行タイミングを制御する。具体的には、例えば、ＲＡＩＤ制御部６０４は、ストレージＳＴへのＩ／Ｏ要求量が規定値Ｘを下回った場合に、シーケンシャルフォーマット要が設定された未フォーマット状態のチャンクに対するフォーマット処理を実行する。
【００６５】
ストレージＳＴへのＩ／Ｏ要求量は、例えば、上述したプール単位の発行コマンド数である。規定値Ｘは、ＲＡＩＤ構成やディスク種などに応じて任意に設定可能である。例えば、規定値Ｘは、Ｉ／Ｏ要求量が規定値Ｘを下回っていれば、ディスク負荷が高くないといえる値（数個〜数十個程度）に設定される。
【００６６】
より具体的には、例えば、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット要が設定された未フォーマット状態のチャンクにゼロデータおよびチェックコードを書き込む。ここで、チェックコードは、データの整合性確認を行うためにブロック単位（例えば、５１２バイト単位）に付加される情報である。
【００６７】
チャンクに対するチェックコードの値は、ライト要求に伴って当該チャンクが論理ボリュームに割り当てられた時点で決定される。具体的には、例えば、チェックコードの値は、ストレージ制御装置１０１のＣＡにおいて、チャンクに対応する論理ボリュームの論理アドレスに基づき決定される。
【００６８】
そして、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマットを実施したチャンクをフォーマット済みにする。より詳細に説明すると、例えば、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマットを実施したチャンクに対応するチャンク情報テーブル５００内のチャンク情報のフォーマット状況に「０」を設定する。
【００６９】
また、ＲＡＩＤ制御部６０４は、未フォーマット状態のチャンクへのライト処理時に、ライトデータ以外の部分をフォーマットパターンでパディングしたデータを用いて書き込みを行う。ここで、パディングとは、固定長のデータを扱うときに、ライトデータ以外の部分をフォーマットパターンで補うことである。フォーマットパターンは、例えば、ゼロデータである。
【００７０】
具体的には、例えば、ＲＡＩＤ制御部６０４は、キャッシュ制御部６０３から未フォーマット状態のチャンクへのライトバック要求を受け付けたことに応じて、チャンク全体に対するライトバック要求であるか否かを判断する。ライトバック要求には、例えば、ライトデータやライト要求範囲を特定する情報が含まれる。より詳細に説明すると、例えば、ＲＡＩＤ制御部６０４は、ライト要求範囲がチャンク全体の場合に、チャンク全体に対するライトバック要求であると判断する。
【００７１】
ここで、チャンク全体に対するライトバック要求の場合、ＲＡＩＤ制御部６０４は、当該チャンクへのフォーマット処理をスキップしてライト処理を実行する。具体的には、例えば、ＲＡＩＤ制御部６０４は、キャッシュメモリ３０５上のライトデータと、チェックコードとを用いて、ライトバック要求されたチャンクに対して、既存のライトバック処理を実行する。
【００７２】
なお、フォーマット済みのチャンクに対するライトバック要求を受け付けた場合も、ＲＡＩＤ制御部６０４は、キャッシュメモリ３０５上のライトデータと、チェックコードとを用いて、当該チャンクに対して既存のライトバック処理を実行する。
【００７３】
一方、チャンク全体に対するライトバック要求ではない場合、ＲＡＩＤ制御部６０４は、図３に示したワークバッファ３０６を獲得する。つぎに、ＲＡＩＤ制御部６０４は、ワークバッファ３０６上に、ライトバック要求されたチャンク内の未要求範囲（ライト要求範囲外の部分）に対してチェックコード付きのゼロデータを作成する。そして、ＲＡＩＤ制御部６０４は、ワークバッファ３０６上のデータと、キャッシュメモリ３０５上のライトデータとを用いて、ストレージＳＴ内のプールに対するライトコマンドを発行する。
【００７４】
これにより、未フォーマット状態のチャンクへのライト処理時に、当該チャンクに対するワンポイントフォーマットを実施することができる。ライトバック処理が完了した場合には、ＲＡＩＤ制御部６０４は、キャッシュ制御部６０３に対してライトバック完了応答を通知する。
【００７５】
なお、未フォーマット状態のチャンクに対するワンポイントフォーマットを含むライトバック処理の具体例については、図８を用いて後述する。
【００７６】
（アクセス先アドレスの連続性の判断例）
ここで、アクセス先アドレスの連続性の判断例について説明する。
【００７７】
図７は、アクセス先アドレスの連続性の判断例を示す説明図である。図７において、シーケンシャル管理情報４００−１〜４００−４は、ライト要求された論理ボリューム番号「０」の論理ボリュームの情報である。
【００７８】
ここで、ライト要求範囲の開始論理アドレスが「０ｘ１１４４２２３０」であるとする。図７の例では、シーケンシャル管理情報４００−１〜４００−４の中に、開始論理アドレス「０ｘ１１４４２２３０」が論理アドレスに設定されたシーケンシャル管理情報４００−２が存在する。
【００７９】
この場合、今回のライト要求がシーケンシャルなアドレスへの要求であるといえる。したがって、シンプロ制御部６０２は、今回のライト要求をシーケンシャル属性とする。シーケンシャル属性とは、アクセス先アドレスに連続性があることを示す。
【００８０】
また、ライト要求範囲の開始論理アドレスが「０ｘ１１４４２８５０」であるとする。図７の例では、シーケンシャル管理情報４００−１〜４００−４の中に、開始論理アドレス「０ｘ１１４４２８５０」が論理アドレスに設定されたシーケンシャル管理情報は存在しない。
【００８１】
この場合、今回のライト要求がランダムなアドレスへの要求であるといえる。したがって、シンプロ制御部６０２は、今回のライト要求をランダム属性とする。ランダム属性とは、アクセス先アドレスに連続性がないことを示す。
【００８２】
（ワンポイントフォーマットを含むライトバック処理の具体例）
つぎに、未フォーマット状態のチャンクに対するワンポイントフォーマットを含むライトバック処理の具体例について説明する。
【００８３】
図８は、ワンポイントフォーマットを含むライトバック処理の具体例を示す説明図である。図８において、（８−１）は、ストレージＳＴ内のディスク（ＨＤＤ）上での各データ（Ｄａｔａ＃０，Ｄａｔａ＃１，Ｄａｔａ＃２，Ｐａｒｉｔｙ）の初期状態を示している。
【００８４】
この状態で、ライト要求範囲がチャンク全体ではないライトバック要求を受け付けた場合を想定する。この場合、（８−２）に示すように、ＲＡＩＤ制御部６０４は、ワークバッファ３０６上で、ユーザデータ（ライトデータ）にゼロデータをパディングして、新しいパリティデータを生成する。この際、ディスクアクセスは発生しない。
【００８５】
そして、（８−３）に示すように、ＲＡＩＤ制御部６０４は、ユーザデータ、ゼロデータおよび新しいパリティデータをストレージＳＴ内のディスク上に書き込む。なお、図示は省略するが、各種データには、チェックコードが付与される。
【００８６】
これにより、従来のように、Ｉ／Ｏ処理に先立ってフォーマット処理を実施して、その後に要求されたＩ／Ｏ処理を実施する場合に比べて、ワンポイントフォーマットを実施する際のオーバーヘッドを低減することができる。
【００８７】
例えば、ＲＡＩＤ５で構成されたプールに対して、４ＫＢのライトバックが単発で要求されたとする。この場合、従来方式では、チャンクサイズ全体に対してフォーマット処理を実施した後に、ライトバックのためのディスクリードを実施し、パリティ生成を行ってディスクライトを行うことになる。したがって、ライトペナルティを含めると、同一領域に対して３回のディスクアクセスが発生する。
【００８８】
これに対して、図８に示した本方式では、未フォーマット状態のチャンクに対してライトバック要求された場合に、ＲＡＩＤ制御部６０４は、同一チャンク内のＩ／Ｏを要求されていない範囲について、ワークバッファ３０６を用いて「ゼロデータ＋チェックコード」を用意する。その上で、ＲＡＩＤ制御部６０４は、チャンク全体に対して一度にライト処理を実行する。このため、従来方式のワンポイントフォーマットに比べて、レスポンスタイムの軽減が期待できる。
【００８９】
（ストレージ制御装置１０１の各種処理手順）
つぎに、図９〜図１４を用いて、ストレージ制御装置１０１の各種処理手順について説明する。まず、ストレージ制御装置１０１のライト要求処理手順について説明する。
【００９０】
・ライト要求処理手順
図９は、ストレージ制御装置１０１のライト要求処理手順の一例を示すフローチャートである。図９のフローチャートにおいて、まず、ストレージ制御装置１０１のＩ／Ｏ制御部６０１は、ライト要求を受け付けたか否かを判断する（ステップＳ９０１）。ここで、Ｉ／Ｏ制御部６０１は、ライト要求を受け付けるのを待つ（ステップＳ９０１：Ｎｏ）。
【００９１】
ライト要求を受け付けた場合（ステップＳ９０１：Ｙｅｓ）、ストレージ制御装置１０１のシンプロ制御部６０２は、連続性判断処理を実行する（ステップＳ９０２）。連続性判断処理は、ライト要求のアクセス先アドレスの連続性（シーケンシャル属性またはランダム属性）を判断する処理である。連続性判断処理の具体的な処理手順については、図１０を用いて後述する。
【００９２】
つぎに、シンプロ制御部６０２は、論理ボリュームの論理アドレスと物理アドレスとの対応関係から、ライト要求のライト要求範囲がチャンクを割り当て済みの範囲であるか否かを判断する（ステップＳ９０３）。ここで、チャンクを割り当て済みの場合（ステップＳ９０３：Ｙｅｓ）、シンプロ制御部６０２は、ステップＳ９０６に移行する。
【００９３】
一方、チャンクを未割り当ての場合（ステップＳ９０３：Ｎｏ）、シンプロ制御部６０２は、論理ボリューム（ライト要求範囲を含む部分）に未使用のチャンクを割り当てる（ステップＳ９０４）。そして、シンプロ制御部６０２は、チャンク情報テーブル５００内の対応するチャンク情報を更新する（ステップＳ９０５）。
【００９４】
つぎに、シンプロ制御部６０２は、ライト要求がシーケンシャル属性であるか否かを判断する（ステップＳ９０６）。ここで、シーケンシャル属性の場合（ステップＳ９０６：Ｙｅｓ）、シンプロ制御部６０２は、対象チャンクのチャンク情報のシーケンシャルフォーマット要否に「０（否）」を設定して（ステップＳ９０７）、ステップＳ９１１に移行する。
【００９５】
なお、対象チャンクとは、ライト要求範囲に割り当てられたチャンクである。対象チャンクのチャンク情報とは、チャンク情報テーブル５００内のチャンク情報のうち、対象チャンクのチャンク番号が設定されたチャンク情報である。
【００９６】
また、ステップＳ９０６において、シーケンシャル属性ではない場合（ステップＳ９０６：Ｎｏ）、シンプロ制御部６０２は、対象チャンクのチャンク情報のシーケンシャルフォーマット要否に「１（要）」を設定する（ステップＳ９０８）。
【００９７】
そして、シンプロ制御部６０２は、シーケンシャルフォーマット開始位置が設定されているか否かを判断する（ステップＳ９０９）。なお、シーケンシャルフォーマット開始位置とは、シーケンシャルフォーマットを開始するストレージＳＴ内のチャンクを示す情報である。
【００９８】
ここで、シーケンシャルフォーマット開始位置が設定されている場合（ステップＳ９０９：Ｙｅｓ）、ストレージ制御装置１０１は、ステップＳ９１１に移行する。一方、シーケンシャルフォーマット開始位置が未設定の場合（ステップＳ９０９：Ｎｏ）、シンプロ制御部６０２は、シーケンシャルフォーマット開始位置を対象チャンクに設定する（ステップＳ９１０）。
【００９９】
つぎに、ストレージ制御装置１０１のキャッシュ制御部６０３は、キャッシュメモリ３０５にライト要求にかかるデータ（ライト要求、ライトデータ等）を転送する（ステップＳ９１１）。そして、Ｉ／Ｏ制御部６０１は、ホスト装置２０２に対してライト完了応答を通知して（ステップＳ９１２）、本フローチャートによる一連の処理を終了する。
【０１００】
これにより、ライト要求に伴うストレージＳＴ内のチャンクの論理ボリュームへの割り当て時に、アクセス先アドレスの連続性に基づいて、当該チャンクにシーケンシャルフォーマットの要否を設定することができる。
【０１０１】
・連続性判断処理の具体的処理手順
つぎに、図１０を用いて、図９に示したステップＳ９０２の連続性判断処理の具体的な処理手順について説明する。
【０１０２】
図１０は、連続性判断処理の具体的処理手順の一例を示すフローチャートである。図１０のフローチャートにおいて、まず、ストレージ制御装置１０１のシンプロ制御部６０２は、シーケンシャル管理テーブル４００に、ライト要求に含まれる論理ボリューム番号およびライト要求範囲の開始論理アドレスに対応するエントリがあるか否かを判断する（ステップＳ１００１）。
【０１０３】
ここで、エントリがない場合（ステップＳ１００１：Ｎｏ）、シンプロ制御部６０２は、今回のライト要求をランダム属性とする（ステップＳ１００２）。つぎに、シンプロ制御部６０２は、シーケンシャル管理テーブル４００に、ライト要求に含まれる論理ボリューム番号に対応する未使用のエントリがあるか否かを判断する（ステップＳ１００３）。
【０１０４】
なお、ライト要求に含まれる論理ボリューム番号に対応するエントリとは、その論理ボリューム番号の論理ボリューム用にあらかじめ用意された複数のエントリである。
【０１０５】
ここで、未使用のエントリがある場合（ステップＳ１００３：Ｙｅｓ）、シンプロ制御部６０２は、未使用のエントリを更新対象エントリとして（ステップＳ１００４）、ステップＳ１００８に移行する。
【０１０６】
一方、未使用エントリがない場合（ステップＳ１００３：Ｎｏ）、シンプロ制御部６０２は、ライト要求に含まれる論理ボリューム番号に対応する複数のエントリのうち、更新時刻が最も古いエントリを更新対象エントリとして（ステップＳ１００５）、ステップＳ１００８に移行する。
【０１０７】
また、ステップＳ１００１において、エントリがある場合（ステップＳ１００１：Ｙｅｓ）、シンプロ制御部６０２は、今回のライト要求をシーケンシャル属性とする（ステップＳ１００６）。つぎに、シンプロ制御部６０２は、該当エントリを更新対象エントリとする（ステップＳ１００７）。
【０１０８】
そして、シンプロ制御部６０２は、更新対象エントリを更新して（ステップＳ１００８）、連続性判断処理を呼び出したステップに戻る。具体的には、例えば、シンプロ制御部６０２は、更新対象エントリの論理アドレスに「ライト要求範囲の開始論理アドレス＋ブロック数」を設定するとともに、更新対象エントリの更新時刻に現在時刻を設定する。
【０１０９】
これにより、ライト要求のアクセス先アドレスの連続性を判断することができる。
【０１１０】
・要求処理手順
つぎに、図１１を用いて、ストレージ制御装置１０１の要求処理手順について説明する。要求処理は、キャッシュ制御部６０３からＲＡＩＤ制御部６０４へのディスク（ＨＤＤ）のリード／ライトを伴う処理要求（Ｓｔａｇｉｎｇ／Ｗｒｉｔｅｂａｃｋ）に応じて実行される。
【０１１１】
図１１は、ストレージ制御装置１０１の要求処理手順の一例を示すフローチャートである。図１１のフローチャートにおいて、まず、ストレージ制御装置１０１のＲＡＩＤ制御部６０４は、ディスク（ＨＤＤ）のリード／ライトを伴う処理要求を受け付けたか否かを判断する（ステップＳ１１０１）。
【０１１２】
ここで、ＲＡＩＤ制御部６０４は、処理要求を受け付けるのを待つ（ステップＳ１１０１：Ｎｏ）。処理要求を受け付けた場合（ステップＳ１１０１：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、処理要求に応じてプール内のＨＤＤに発行するコマンド数を、当該プールに対する発行コマンド数に加算する（ステップＳ１１０２）。
【０１１３】
そして、ＲＡＩＤ制御部６０４は、ディスクのリード／ライトを伴う処理を実行して（ステップＳ１１０３）、本フローチャートによる一連の処理を終了する。これにより、ディスクのリード／ライトを伴う処理要求に応じて、プールに対する発行コマンド数を更新することができる。
【０１１４】
・ライトバック処理手順
つぎに、図１２を用いて、ストレージ制御装置１０１のライトバック処理手順について説明する。ライトバック処理は、図１１に示したステップＳ１１０３において実行されるディスクのリード／ライトを伴う処理の一例であり、ライトバック要求に応じて実行される。
【０１１５】
図１２は、ストレージ制御装置１０１のライトバック処理手順の一例を示すフローチャートである。図１２のフローチャートにおいて、まず、ストレージ制御装置１０１のＲＡＩＤ制御部６０４は、チャンク情報テーブル５００を参照して、ライトバック要求から特定されるライトバック要求範囲を含むチャンクがフォーマット済みか否かを判断する（ステップＳ１２０１）。
【０１１６】
ここで、未フォーマット状態の場合（ステップＳ１２０１：Ｎｏ）、ＲＡＩＤ制御部６０４は、チャンク全体に対するライトバック要求であるか否かを判断する（ステップＳ１２０２）。ここで、チャンク全体に対するライトバック要求ではない場合（ステップＳ１２０２：Ｎｏ）、ＲＡＩＤ制御部６０４は、ワークバッファ３０６を獲得する（ステップＳ１２０３）。
【０１１７】
そして、ＲＡＩＤ制御部６０４は、ワークバッファ３０６上に、ライトバック要求されたチャンク内の未要求範囲に対してチェックコード付きのゼロデータを作成する（ステップＳ１２０４）。つぎに、ＲＡＩＤ制御部６０４は、ワークバッファ３０６上のデータと、キャッシュメモリ３０５上のデータ（ライトデータ、チェックコード）とを用いて、ストレージＳＴ内のプールに対するライトコマンドを発行する（ステップＳ１２０５）。
【０１１８】
そして、ＲＡＩＤ制御部６０４は、キャッシュ制御部６０３に対してライトバック完了応答を通知して（ステップＳ１２０６）、本フローチャートによる一連の処理を終了する。これにより、未フォーマット状態のチャンクに対するワンポイントフォーマットを含むライトバック処理を実施することができる。
【０１１９】
また、ステップＳ１２０１において、フォーマット済みの場合（ステップＳ１２０１：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、キャッシュメモリ３０５上のデータ（ライトデータ、チェックコード）を用いて、既存のライトバック処理を実行して（ステップＳ１２０７）、ステップＳ１２０６に移行する。
【０１２０】
また、ステップＳ１２０２において、チャンク全体に対するライトバック要求である場合（ステップＳ１２０２：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、ステップＳ１２０７に移行する。これにより、フォーマット処理をスキップしてライトバック処理を実行することができる。
【０１２１】
・シーケンシャルフォーマット処理手順
つぎに、図１３および図１４を用いて、ストレージ制御装置１０１のシーケンシャルフォーマット処理手順について説明する。
【０１２２】
図１３および図１４は、ストレージ制御装置１０１のシーケンシャルフォーマット処理手順の一例を示すフローチャートである。図１３のフローチャートにおいて、まず、ストレージ制御装置１０１のＲＡＩＤ制御部６０４は、ディスクのリード／ライトを伴う処理の完了に応じて、その処理要求に対応するコマンド数を、プールに対する発行コマンド数から減算する（ステップＳ１３０１）。
【０１２３】
つぎに、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット開始位置が設定されているか否かを判断する（ステップＳ１３０２）。ここで、シーケンシャルフォーマット開始位置が未設定の場合（ステップＳ１３０２：Ｎｏ）、ＲＡＩＤ制御部６０４は、本フローチャートによる一連の処理を終了する。
【０１２４】
一方、シーケンシャルフォーマット開始位置が設定されている場合（ステップＳ１３０２：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、ストレージＳＴ内のプールに対する発行コマンド数が規定値Ｘを下回っているか否かを判断する（ステップＳ１３０３）。ここで、発行コマンド数が規定値Ｘを下回っていない場合（ステップＳ１３０３：Ｎｏ）、ＲＡＩＤ制御部６０４は、本フローチャートによる一連の処理を終了する。
【０１２５】
一方、発行コマンド数が規定値Ｘを下回っている場合（ステップＳ１３０３：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、チャンク情報テーブル５００を参照して、シーケンシャルフォーマット開始位置のチャンクがシーケンシャルフォーマット要であるか否かを判断する（ステップＳ１３０４）。
【０１２６】
ここで、シーケンシャルフォーマット不要の場合（ステップＳ１３０４：Ｎｏ）、ＲＡＩＤ制御部６０４は、ステップＳ１３０６に移行する。一方、シーケンシャルフォーマット要の場合（ステップＳ１３０４：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、チャンク情報テーブル５００を参照して、シーケンシャルフォーマット開始位置のチャンクが未フォーマット状態であるか否かを判断する（ステップＳ１３０５）。
【０１２７】
ここで、未フォーマット状態の場合（ステップＳ１３０５：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、図１４に示すステップＳ１４０１に移行する。一方、フォーマット済みの場合（ステップＳ１３０５：Ｎｏ）、ＲＡＩＤ制御部６０４は、チャンク情報テーブル５００を参照して、全チャンクの検索が完了したか否かを判断する（ステップＳ１３０６）。
【０１２８】
ここで、全チャンクの検索が完了していない場合（ステップＳ１３０６：Ｎｏ）、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット開始位置を次チャンクに設定して（ステップＳ１３０７）、ステップＳ１３０４に戻る。一方、全チャンクの検索が完了した場合（ステップＳ１３０６：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、図１４に示すステップＳ１４０５に移行する。
【０１２９】
図１４のフローチャートにおいて、まず、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット開始位置のチャンクのシーケンシャルフォーマットを実行する（ステップＳ１４０１）。そして、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット開始位置のチャンクをフォーマット済みにする（ステップＳ１４０２）。
【０１３０】
つぎに、ＲＡＩＤ制御部６０４は、チャンク情報テーブル５００を参照して、全チャンクの検索が完了したか否かを判断する（ステップＳ１４０３）。ここで、全チャンクの検索が完了していない場合（ステップＳ１４０３：Ｎｏ）、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット開始位置を次チャンクに設定して（ステップＳ１４０４）、図１３に示したステップＳ１３０３に戻る。
【０１３１】
一方、全チャンクの検索が完了した場合（ステップＳ１４０３：Ｙｅｓ）、ＲＡＩＤ制御部６０４は、シーケンシャルフォーマット開始位置をクリアして（ステップＳ１４０５）、本フローチャートによる一連の処理を終了する。これにより、ストレージＳＴへのＩ／Ｏ要求量に応じて、シーケンシャルフォーマット要が設定されたチャンクに対するフォーマット処理の実行タイミングを制御することができる。
【０１３２】
以上説明したように、実施の形態にかかるストレージ制御装置１０１によれば、ライト要求に伴うストレージＳＴ内のチャンクの割り当て時に、アクセス先アドレスの連続性に基づいて、チャンクごとにシーケンシャルフォーマットの要否を設定することができる。そして、ストレージ制御装置１０１によれば、ストレージＳＴへのＩ／Ｏ要求量に基づいて、シーケンシャルフォーマット要が設定されたチャンクに対するフォーマット処理の実行タイミングを制御することができる。
【０１３３】
これにより、バックグラウンド処理が実施されてもＩ／Ｏ性能が低下しない程度にストレージＳＴへの負荷が低い状態のときに、シーケンシャルフォーマット要が設定されたチャンクに対するフォーマット処理を実施することができる。また、ストレージＳＴへの負荷が低い状態でチャンクに対するフォーマット処理を進めることで、ワンポイントフォーマットの動作頻度を低減させることができる。
【０１３４】
また、ストレージ制御装置１０１によれば、ストレージＳＴへのＩ／Ｏ要求量が規定値Ｘを下回った場合に、シーケンシャルフォーマット要が設定された未フォーマット状態のチャンクに対するフォーマット処理を実行することができる。これにより、ストレージＳＴへの負荷が高い状態でシーケンシャルフォーマットが実施されて、Ｉ／Ｏ性能が低下してしまうのを防ぐことができる。
【０１３５】
また、ストレージ制御装置１０１によれば、未フォーマット状態のチャンクへのライト処理時に、ライトデータ以外の部分をフォーマットパターンでパディングしたデータを用いて書き込みを行うことができる。これにより、未フォーマット状態のチャンクへのライト処理時に、当該チャンクに対するワンポイントフォーマットを実施することができる。また、従来方式のワンポイントフォーマットに比べて、ディスクアクセス回数を減らしてレスポンスタイムの短縮化を図ることができる。
【０１３６】
また、ストレージ制御装置１０１によれば、ライト処理時に、ライト要求範囲がチャンク全体の場合は、当該チャンクへのフォーマット処理をスキップしてライト処理を実行することができる。これにより、チャンク全体へのライトバック要求時は、フォーマット処理を省略して負荷を削減することができる。
【０１３７】
また、ストレージ制御装置１０１によれば、ライト要求に伴うストレージＳＴ内のチャンクの割り当て時に、当該チャンクに対するチェックコードの値を決定することができる。そして、ストレージ制御装置１０１によれば、決定したチェックコードの値を用いて、当該チャンクへのライト処理を行うことができる。具体的には、例えば、ストレージ制御装置１０１は、アクセス先の論理ボリュームの論理アドレスに基づいて、チャンクに対するチェックコードの値を決定することができる。これにより、外部サーバ（例えば、ホスト装置２０２）からチェックコードを保証しなければならないような規約のストレージシステムにも適用可能である。
【０１３８】
これらのことから、実施の形態にかかるストレージ制御装置１０１によれば、Ｉ／Ｏ要求パターンに応じたフォーマット動作を行うことで、論理ボリュームのフォーマット処理を効率的に行うことができる。また、物理的な容量プールの新規作成やディスク増設による容量追加をした場合に、従来方式のように、ユーザボリュームへの割り当て状況に関わらず、新たに加えられた全容量に対するフォーマット処理を実施しなくてもよい。
【０１３９】
また、ストレージＳＴ内のディスク故障に伴うリビルド処理の際に、従来方式のように、ユーザボリュームへの割り当て状況に関わらず、ディスクの全容量に対するデータ再構築処理を実施しなくてもよい。具体的には、実際にユーザボリュームに割り当てられてデータが載っているチャンクに対してデータ再構築処理を行えばよくなるため、リビルド処理を効率的に行うことができる。
【０１４０】
ここで、Ｉ／Ｏ要求パターンに応じたフォーマット動作例について説明する。
【０１４１】
図１５は、Ｉ／Ｏ要求パターンに応じたフォーマット動作例を示す説明図である。図１５において、ボリューム＃Ａ，＃Ｂは、ストレージシステム２００により提供されるユーザボリューム（論理ボリューム）である。ここでは、ボリューム＃Ａに対して、シーケンシャル属性のライト要求を受け付けた場合を想定する。また、ボリューム＃Ｂに対して、ランダム属性のライト要求を受け付けた場合を想定する。
【０１４２】
図１５に示すように、ホスト装置２０２からのライト要求は、キャッシュメモリ３０５に格納され、処理の空き時間ができた際に、キャッシュメモリ３０５からストレージＳＴ内のディスク（ＨＤＤ）にデータが書き込まれる（いわゆる、ライトバック）。
【０１４３】
例えば、シーケンシャル属性のライト要求を受け付けたチャンクについては、チャンク全体のデータが揃っているため、フォーマット処理を省略して、ライトバックのタイミングでライト処理を行えばよい。また、ランダム属性のライト要求を受け付けたチャンクについては、チャンク全体のデータが揃わないため、未要求範囲をゼロデータで埋めてライトバック処理を実施することでワンポイントフォーマットとなる。また、シーケンシャルフォーマット要が設定された未フォーマット状態のチャンクについては、ディスク負荷に応じて、ライトバック要求前にシーケンシャルフォーマットを実施可能となる。
【０１４４】
なお、本実施の形態で説明したストレージ制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本ストレージ制御プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本ストレージ制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４５】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１４６】
（付記１）ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、前記物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定し、
前記ストレージへの入出力要求量に基づいて、シーケンシャルフォーマット要が設定された物理記憶領域に対するフォーマット処理の実行タイミングを制御する、
制御部を有することを特徴とするストレージ制御装置。
【０１４７】
（付記２）前記制御部は、
前記ストレージへの入出力要求量が規定値を下回った場合に、シーケンシャルフォーマット要が設定された未フォーマット状態の物理記憶領域に対するフォーマット処理を実行する、ことを特徴とする付記１に記載のストレージ制御装置。
【０１４８】
（付記３）前記制御部は、
未フォーマット状態の物理記憶領域へのライト処理時に、ライトデータ以外の部分をフォーマットパターンでパディングしたデータを用いて書き込みを行う、ことを特徴とする付記１または２に記載のストレージ制御装置。
【０１４９】
（付記４）前記制御部は、
前記ライト処理時に、ライト要求範囲が前記物理記憶領域全体の場合は、当該物理記憶領域へのフォーマット処理をスキップして前記ライト処理を実行する、ことを特徴とする付記３に記載のストレージ制御装置。
【０１５０】
（付記５）前記ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、当該物理記憶領域に対するチェックコードの値が決定され、
決定された前記チェックコードの値を用いて、前記物理記憶領域へのライト処理が行われる、ことを特徴とする付記１〜４のいずれか一つに記載のストレージ制御装置。
【０１５１】
（付記６）ライト要求に伴うストレージ内の物理記憶領域の割り当て時に、アクセス先アドレスの連続性に基づいて、前記物理記憶領域の割り当て単位ごとにシーケンシャルフォーマットの要否を設定し、
前記ストレージへの入出力要求量に基づいて、シーケンシャルフォーマット要が設定された物理記憶領域に対するフォーマット処理の実行タイミングを制御する、
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【０１５２】
（付記７）前記制御する処理は、
前記ストレージへの入出力要求量が規定値を下回った場合に、シーケンシャルフォーマット要が設定された未フォーマット状態の物理記憶領域に対するフォーマット処理を実行する、ことを特徴とする付記６に記載のストレージ制御プログラム。
【０１５３】
（付記８）未フォーマット状態の物理記憶領域へのライト処理時に、ライトデータ以外の部分をフォーマットパターンでパディングしたデータを用いて書き込みを行う、処理を前記コンピュータに実行させることを特徴とする付記６または７に記載のストレージ制御プログラム。
【符号の説明】
【０１５４】
１０１  ストレージ制御装置
１０２，ＳＴ  ストレージ
２００  ストレージシステム
２０１  ストレージ装置
２０２  ホスト装置
２１０  ネットワーク
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  通信Ｉ／Ｆ
３０４  Ｉ／Ｏコントローラ
３０５  キャッシュメモリ
３０６  ワークバッファ
４００  シーケンシャル管理テーブル
５００  チャンク情報テーブル
６０１  Ｉ／Ｏ制御部
６０２  シン・プロビジョニング制御部
６０３  キャッシュ制御部
６０４  ＲＡＩＤ制御部
【図１】
2018092321.tif 000003
【図２】
2018092321.tif 000004
【図３】
2018092321.tif 000005
【図４】
2018092321.tif 000006
【図５】
2018092321.tif 000007
【図６】
2018092321.tif 000008
【図７】
2018092321.tif 000009
【図８】
2018092321.tif 000010
【図９】
2018092321.tif 000011
【図１０】
2018092321.tif 000012
【図１１】
2018092321.tif 000013
【図１２】
2018092321.tif 000014
【図１３】
2018092321.tif 000015
【図１４】
2018092321.tif 000016
【図１５】
2018092321.tif 000017