(57)【要約】【課題】ストレージシステムにおいて、実際に使用される物理的な記憶領域を節約し、さらに、書き込み処理を高速化する。【解決手段】サーバと、ストレージシステムと、を含む計算機システムにおいて、ディスクドライブの物理的な記憶領域を、所定の大きさの一つ以上の物理ブロックごとに管理し、所定の大きさの複数の論理ブロックへの前記一つ以上の物理ブロックの割り当てを管理し、前記ストレージシステムは、前記第１論理ブロックに書き込まれたデータを、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納し、前記第１物理ブロックを、さらに、前記第１物理ブロックに格納されたデータと同一のデータが書き込まれるべき前記第２論理ブロックに割り当てる。【選択図】図２
2008065445.tif 000002
【特許請求の範囲】
【請求項１】
サーバと、ストレージシステムと、を含む計算機システムにおいて、
前記サーバは、前記ストレージシステムに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ストレージシステムは、
データを格納するディスクドライブと、前記ディスクドライブを制御するコントローラと、を備え、
前記ディスクドライブの物理的な記憶領域を、所定の大きさの一つ以上の物理ブロックごとに管理し、
所定の大きさの複数の論理ブロックへの前記一つ以上の物理ブロックの割り当てを管理し、
前記一つ以上の物理ブロックは、少なくとも、一つの第１物理ブロックを含み、
前記複数の論理ブロックは、少なくとも、一つの第１論理ブロック及び一つ以上の第２論理ブロックを含み、
前記ストレージシステムは、
前記第１論理ブロックに書き込まれたデータを、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納し、
前記第１物理ブロックを、さらに、前記第１物理ブロックに格納されたデータと同一のデータが書き込まれるべき前記第２論理ブロックに割り当てることを特徴とする計算機システム。
【請求項２】
前記サーバは、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納されたデータと同一のデータを前記第２論理ブロックに書き込むために、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てる要求を前記ストレージシステムに対して発行することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記ストレージシステムは、所定の数の前記論理ブロックからなる割り当てブロックごとに、前記論理ブロックへの前記物理ブロックの割り当てを管理し、
前記サーバは、
前記割り当てブロックの大きさを示す情報と、前記割り当てブロックの先頭の位置を示す情報と、を前記ストレージシステムから取得し、
前記ストレージシステムから取得した情報に基づいて、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てる要求を前記ストレージシステムに対して発行することを特徴とする請求項２に記載の計算機システム。
【請求項４】
前記サーバは、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納されたデータと同一のデータを複数の前記第２論理ブロックに書き込むために、前記第１物理ブロックをさらに複数の前記第２論理ブロックに割り当てる要求を前記ストレージシステムに対して発行することを特徴とする請求項１に記載の計算機システム。
【請求項５】
前記サーバは、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納されたデータと同一のデータを前記第２論理ブロックに書き込むために、前記第１論理ブロックに格納されたデータを前記第２論理ブロックにコピーする要求を前記ストレージシステムに対して発行することを特徴とする請求項１に記載の計算機システム。
【請求項６】
前記要求は、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可するか否かを示す情報を含むことを特徴とする請求項５に記載の計算機システム。
【請求項７】
前記サーバは、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納されたデータと同一のデータを複数の前記第２論理ブロックに書き込むために、前記第１論理ブロックに格納されたデータを複数の前記第２論理ブロックにコピーする要求を前記ストレージシステムに対して発行することを特徴とする請求項１に記載の計算機システム。
【請求項８】
前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納されたデータと同一のデータを前記一つ以上の第２論理ブロックに書き込むために、前記第１論理ブロック及び前記一つ以上の第２論理ブロックにデータを書き込む要求を前記ストレージシステムに対して発行することを特徴とする請求項１に記載の計算機システム。
【請求項９】
前記ストレージシステムは、前記第１論理ブロックに格納されたデータを前記第２論理ブロックにコピーする要求を受けると、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを特徴とする請求項１に記載の計算機システム。
【請求項１０】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記コピー要求は、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可するか否かを示す情報を含み、
前記ストレージシステムは、
前記情報が、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可することを示す場合、前記第１物理ブロックをさらに前記第２論理ブロックに割り当て、
前記情報が、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可しないことを示す場合、前記第２物理ブロックを前記第２論理ブロックに割り当て、前記第２物理ブロックに前記コピー要求の対象のデータを格納することを特徴とする請求項９に記載の計算機システム。
【請求項１１】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記ストレージシステムは、
所定の数の前記論理ブロックからなる割り当てブロックごとに、前記論理ブロックへの前記物理ブロックの割り当てを管理し、
前記第１論理ブロックに格納されたデータを前記第２論理ブロックにコピーする要求を受けると、前記コピー要求によって指定された前記第１論理ブロックと前記割り当てブロックの先頭との間の位置関係と、前記コピー要求によって指定された前記第２論理ブロックと前記割り当てブロックの先頭との間の位置関係を比較し、
前記比較された位置関係が同じである場合、前記第１物理ブロックをさらに前記第２論理ブロックに割り当て、
前記比較された位置関係が同じでない場合、前記第２物理ブロックを前記第２論理ブロックに割り当て、前記第２物理ブロックに前記コピー要求の対象のデータを格納することを特徴とする請求項１に記載の計算機システム。
【請求項１２】
前記ストレージシステムは、
前記比較された位置関係が同じである場合、前記割り当てブロックが前記コピー要求の対象でない論理ブロックを含むか否かを判定し、
前記割り当てブロックが前記コピー要求の対象でない論理ブロックを含まない場合、前記第１物理ブロックをさらに前記第２論理ブロックに割り当て、
前記割り当てブロックが前記コピー要求の対象でない論理ブロックを含む場合、前記第２物理ブロックを前記第２論理ブロックに割り当て、前記第２物理ブロックに前記コピー要求の対象のデータを格納することを特徴とする請求項１１に記載の計算機システム。
【請求項１３】
前記ストレージシステムは、前記第１物理ブロックが割り当てられた前記第２論理ブロックを対象とする読み出し要求を受けると、前記第１物理ブロックに格納されたデータを読み出し、前記読み出されたデータを要求元に返すことを特徴とする請求項１に記載の計算機システム。
【請求項１４】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記ストレージシステムは、
前記第１物理ブロックが割り当てられた論理ブロックを対象とする書き込み要求を受けると、前記第１物理ブロックが前記書き込み要求の対象でない論理ブロックにも割り当てられているか否かを判定し、
前記第１物理ブロックが前記書き込み要求の対象でない論理ブロックに割り当てられていると判定された場合、前記第１物理ブロックに格納されたデータを前記第２物理ブロックにコピーし、
前記第１物理ブロックに格納されたデータがコピーされた前記第２物理ブロックに、前記書き込み要求の対象のデータを書き込み、
前記第２物理ブロックを前記書き込み要求の対象の論理ブロックに割り当てることを特徴とする請求項１に記載の計算機システム。
【請求項１５】
サーバに接続されるストレージシステムにおいて、
前記ストレージシステムは、
データを格納するディスクドライブと、前記ディスクドライブを制御するコントローラと、を備え、
前記コントローラは、
前記ディスクドライブの物理的な記憶領域を、所定の大きさの一つ以上の物理ブロックごとに管理し、
所定の大きさの複数の論理ブロックへの前記一つ以上の物理ブロックの割り当てを管理し、
前記一つ以上の物理ブロックは、少なくとも、一つの第１物理ブロックを含み、
前記複数の論理ブロックは、少なくとも、一つの第１論理ブロック及び一つ以上の第２論理ブロックを含み、
前記コントローラは、
前記第１論理ブロックに書き込まれたデータを、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納し、
前記第１物理ブロックを、さらに、前記第１物理ブロックに格納されたデータと同一のデータが書き込まれるべき前記第２論理ブロックに割り当てることを特徴とするストレージシステム。
【請求項１６】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記コントローラは、
前記第１論理ブロックに格納されたデータを前記第２論理ブロックにコピーする要求を受けると、前記要求に含まれるフラグを参照し、
前記フラグが、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可することを示す場合、前記第１物理ブロックをさらに前記第２論理ブロックに割り当て、
前記フラグが、前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可しないことを示す場合、前記第２物理ブロックを前記第２論理ブロックに割り当て、前記第２物理ブロックに前記コピー要求の対象のデータを格納することを特徴とする請求項１５に記載のストレージシステム。
【請求項１７】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記コントローラは、
前記第１物理ブロックが割り当てられた論理ブロックを対象とする書き込み要求を受けると、前記第１物理ブロックが前記書き込み要求の対象でない論理ブロックにも割り当てられているか否かを判定し、
前記第１物理ブロックが前記書き込み要求の対象でない論理ブロックに割り当てられていると判定された場合、前記第１物理ブロックに格納されたデータを前記第２物理ブロックにコピーし、
前記第１物理ブロックに格納されたデータがコピーされた前記第２物理ブロックに、前記書き込み要求の対象のデータを書き込み、
前記第２物理ブロックを前記書き込み要求の対象の論理ブロックに割り当てることを特徴とする請求項１５に記載のストレージシステム。
【請求項１８】
サーバと、ストレージシステムと、を含む計算機システムを制御する方法であって、
前記サーバは、前記ストレージシステムに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、
前記ストレージシステムは、データを格納するディスクドライブと、前記ディスクドライブを制御するコントローラと、を備え、
前記ストレージシステムは、
前記ディスクドライブの物理的な記憶領域を、所定の大きさの一つ以上の物理ブロックごとに管理し、
所定の大きさの複数の論理ブロックへの前記一つ以上の物理ブロックの割り当てを管理し、
前記一つ以上の物理ブロックは、少なくとも、一つの第１物理ブロックを含み、
前記複数の論理ブロックは、少なくとも、一つの第１論理ブロック及び一つ以上の第２論理ブロックを含み、
前記方法は、
前記第１論理ブロックに書き込まれたデータを、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納し、
前記第１物理ブロックを、さらに、前記第１物理ブロックに格納されたデータと同一のデータが書き込まれるべき前記第２論理ブロックに割り当てることを特徴とする方法。
【請求項１９】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記方法は、さらに、
前記ストレージシステムが前記第１論理ブロックに格納されたデータを前記第２論理ブロックにコピーする要求を受けると、前記要求に含まれるフラグを参照し、
前記フラグが前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可することを示す場合、前記第１物理ブロックをさらに前記第２論理ブロックに割り当て、
前記フラグが前記第１物理ブロックをさらに前記第２論理ブロックに割り当てることを許可しないことを示す場合、前記第２物理ブロックを前記第２論理ブロックに割り当て、前記第２物理ブロックに前記コピー要求の対象のデータを格納することを特徴とする請求項１８に記載の方法。
【請求項２０】
前記一つ以上の物理ブロックは、さらに、前記第１物理ブロックと異なる第２物理ブロックを含み、
前記ストレージシステムは、
前記第１物理ブロックが割り当てられた論理ブロックを対象とする書き込み要求を受けると、前記第１物理ブロックが前記書き込み要求の対象でない論理ブロックにも割り当てられているか否かを判定し、
前記第１物理ブロックが前記書き込み要求の対象でない論理ブロックに割り当てられていると判定された場合、前記第１物理ブロックに格納されたデータを前記第２物理ブロックにコピーし、
前記第１物理ブロックに格納されたデータがコピーされた前記第２物理ブロックに、前記書き込み要求の対象のデータを書き込み、
前記第２物理ブロックを前記書き込み要求の対象の論理ブロックに割り当てることを特徴とする請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願明細書で開示される技術は、同一データの書き込みに対して、格納領域を節約するように連携するストレージアプリケーション及びストレージシステムに関する。
【背景技術】
【０００２】
ストレージシステムの機能の一つとして、ボリュームの自動拡張技術が開示されている（例えば、特許文献１参照）。特許文献１によれば、複数の仮想ボリュームからなるボリュームプールにおいて、仮想ボリューム作成時には、仮想ボリュームを構成するブロックに物理ブロックが割り当てられない。その後、実際に使用要求（書き込みＩ／Ｏ要求等）が発行された時に、その要求の対象のブロックに対して、ボリュームプールから物理ブロックが割り当てられる。ボリュームの自動拡張技術を用いて、仮想ボリュームのサイズを十分に大きく確保し、ボリュームプールのサイズを適度な大きさとすることによって、管理者は基本的にボリュームプールの空き状況の監視のみを行っていればよく、仮想ボリュームの容量拡張作業から解放される。上記の技術は、ＡＯＵ（Ａｌｌｏｃａｔｉｏｎ  Ｏｎ  Ｕｓｅ）と呼ばれる。
【０００３】
このような仮想ボリュームは、ボリュームの使用開始時にはほとんど物理ボリュームの容量を使用していない。ボリュームの使用開始時には、ストレージアプリケーションによって通常なんらかの初期化処理が行われる。例えば、ファイルシステムは、初期化処理としてファイルシステム作成処理（ｍｋｆｓ）を実行する。論理ボリュームマネージャは、初期化処理としてボリュームグループ作成処理（ｖｇｃｒｅａｔｅ）を実行する。これらの初期化処理によって、ボリュームの構成情報に関する内容であるメタデータが、ボリューム上に書き込まれることになる。そのため、初期化処理直後のボリュームは、物理ボリュームの容量を使用することになる。特に、ボリュームの構成情報の量は、ボリュームサイズに依存することが多い。このため、大容量ボリュームは、実質的に使用されていないにもかかわらず、ある程度の物理ボリューム容量を消費してしまうことになる。
【０００４】
特許文献２には、このメタデータの個々の書き込みサイズがユーザデータに対して小さいことに着目し、初期化処理時のボリューム割り当てサイズを運用時のボリューム割り当てサイズよりも小さくする技術が開示されている。これによって、初期化直後の物理ボリュームの使用容量を抑える事ができる。
【特許文献１】特開２００３−１５９１５号公報
【特許文献２】特開２００５−１１３１６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記特許文献２は、仮想ボリューム上の未使用領域に物理領域を割り当てず、割り当て単位を小さくすることによって、なるべく割り当てた物理領域の未使用部分を極小化している。その結果、容量の使用効率が向上する。
【０００６】
初期化処理においては、同一内容のデータが繰り返し書き込まれることが多い。ただし、上記特許文献１に開示された技術では、書き込まれる内容が同一である場合への配慮は特にない。このため、同一内容の書き込みのそれぞれについて物理領域を確保する必要があった。
【課題を解決するための手段】
【０００７】
本願で開示する代表的な発明は、サーバと、ストレージシステムと、を含む計算機システムにおいて、前記サーバは、前記ストレージシステムに接続されるインターフェースと、前記インターフェースに接続されるプロセッサと、前記プロセッサに接続されるメモリと、を備え、前記ストレージシステムは、データを格納するディスクドライブと、前記ディスクドライブを制御するコントローラと、を備え、前記ディスクドライブの物理的な記憶領域を、所定の大きさの一つ以上の物理ブロックごとに管理し、所定の大きさの複数の論理ブロックへの前記一つ以上の物理ブロックの割り当てを管理し、前記一つ以上の物理ブロックは、少なくとも、一つの第１物理ブロックを含み、前記複数の論理ブロックは、少なくとも、一つの第１論理ブロック及び一つ以上の第２論理ブロックを含み、前記ストレージシステムは、前記第１論理ブロックに書き込まれたデータを、前記第１論理ブロックに割り当てられた前記第１物理ブロックに格納し、前記第１物理ブロックを、さらに、前記第１物理ブロックに格納されたデータと同一のデータが書き込まれるべき前記第２論理ブロックに割り当てることを特徴とする。
【発明の効果】
【０００８】
本発明の一実施形態によれば、コンテンツの初期化処理又はコピー処理、あるいは、ファイルシステム、データベース又は論理ボリュームマネージャ等のボリューム初期化処理のように、同一のデータを複数の箇所に繰り返し書き込む処理を高速に完了することができる。さらに、本発明の一実施形態によれば、上記のように同一のデータを複数の箇所に繰り返し書き込む場合に、物理ボリュームの使用量を抑えることができる。
【発明を実施するための最良の形態】
【０００９】
図１は、本発明の第１の実施の形態の計算機システムのハードウェア構成を示すブロック図である。
【００１０】
図１には、サーバ１０１とストレージシステム１１１とが分離した構成を示す。この場合、サーバ１０１のストレージコントローラ１５６とストレージシステム１１１のディスクコントローラ１５７とがファイバーチャネル等によって接続される。しかし、本発明は、サーバ１０１とストレージシステム１１１とが分離している形態に限定されない。例えば、ストレージシステム１１１内にサーバ１０１が内蔵されている構成にも、本発明を適用することができる。この場合、サーバ１０１とストレージシステム１１１とは専用バス等によって接続される。
【００１１】
また、図１に示すサーバ１０１は、ＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）等の専用サーバであってもよい。
【００１２】
サーバ１０１は、ＣＰＵ１５１、メモリコントローラ１５２、サーバ主記憶１５３、Ｉ／Ｏコントローラ１５４、ネットワークコントローラ１５５及びストレージコントローラ１５６を備える計算機である。
【００１３】
メモリコントローラ１５２は、ＣＰＵ１５１、サーバ主記憶１５３及びＩ／Ｏコントローラ１５４と接続される。
【００１４】
サーバ主記憶１５３は、例えば、半導体記憶装置であり、ＣＰＵ１５１によって実行されるプログラム及びその実行の際に参照される情報を格納する。
【００１５】
Ｉ／Ｏコントローラ１５４は、さらに、ネットワークコントローラ１５５及びストレージコントローラ１５６と接続される。
【００１６】
ネットワークコントローラ１５５は、外部ネットワーク１６０に接続されるインターフェースである。外部ネットワーク１６０は、例えば、ローカルエリアネットワーク（ＬＡＮ）であるが、他の種類のネットワークであってもよい。サーバ１０１がＮＡＳサーバである場合、外部ネットワーク１６０には、ＮＡＳクライアント計算機（図示省略）が接続されてもよい。
【００１７】
ストレージコントローラ１５６は、ストレージシステム１１１内のディスクコントローラ１５７とファイバーチャネル等を介して接続されるインターフェースである。
【００１８】
ストレージシステム１１１は、ディスクコントローラ１５７、ストレージ装置主記憶１５８及び一つ以上のディスクドライブ１５９を備える。
【００１９】
ディスクコントローラ１５７は、ストレージ装置主記憶１５８と一つ以上のディスクドライブ１５９とを接続する。ディスクコントローラ１５７は、ストレージ装置主記憶１５８に格納されたプログラムを実行することによって、ディスクドライブ１５９に対するデータのＩ／Ｏコマンド（すなわち、書き込みコマンド及び読み込みコマンド）を処理するプロセッサである。ディスクコントローラ１５７は、さらに、ストレージコントローラ１５６と通信するインターフェース（図示省略）を含んでもよい。
【００２０】
ストレージ装置主記憶１５８は、例えば、半導体記憶装置であり、ディスクコントローラ１５７によって実行されるプログラム及びその実行の際に参照される情報を格納する。
【００２１】
ディスクドライブ１５９は、例えば、ハードディスクドライブであるが、その他の記憶装置（例えば、フラッシュメモリ等の半導体記憶装置）であってもよい。ストレージシステム１１１が複数のディスクドライブ１５９を備える場合、それらのディスクドライブは、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）を構成してもよい。
【００２２】
ストレージシステム１１１は、ディスクドライブ１５９上の物理的な記憶領域を、所定の大きさの物理ブロック１６１ごとに管理する。図１には二つの物理ブロック１６１のみを示すが、実際には、各ディスクドライブ１５９が任意の数の物理ブロック１６１を含む。
【００２３】
図２は、本発明の第１の実施の形態の計算機システムの機能ブロック図である。
【００２４】
サーバ１０１上のサーバ主記憶１５３に、ユーザアプリケーション２０１、ストレージアプリケーション２０２及びデバイスドライバ２０３のプログラムが格納される。これらのプログラムは、ＣＰＵ１５１によって実行される。実際にはここで示した以外のプログラムもサーバ主記憶１５３に格納され、ＣＰＵ１５１によって実行される。しかし、それらのプログラムは本発明との関係がないため省略している。
【００２５】
一方、ストレージシステム１１１のストレージ装置主記憶１５８には、マイクロプログラム２１１、ブロック割り当てテーブル２１６及びブロックリファレンステーブル２１７が格納される。マイクロプログラム２１１は、ディスクコントローラ１５７によって実行される。
【００２６】
ブロック割り当てテーブル２１６及びブロックリファレンステーブル２１７は、ディスクコントローラ１５７が実行するマイクロプログラム２１１によって参照及び更新される。
【００２７】
マイクロプログラム２１１は、少なくとも、コマンド受付部２１２、Ｉ／Ｏ制御部２１３、構成情報応答部２１４及び割り当てテーブル管理部２１５からなる。ここでも、本発明との関係がないプログラムは省略されている。
【００２８】
図２に示すストレージシステム１１１は、さらに、一つ以上のボリューム２１８を備える。各ボリューム２１８は、サーバ１０１によって一つの記憶装置と認識される仮想的な記憶領域である。
【００２９】
各ボリューム２１８は、一つ以上の論理ブロック２１９を含む。論理ブロック２１９は、所定の大きさの論理的な記憶領域である。図２には、四つの論理ブロック２１９のみを示すが、実際には、各ボリューム２１８は任意の数の論理ブロック２１９を含む。各論理ブロック２１９には、それぞれ、物理ブロック１６１が割り当てられてもよい。
【００３０】
ストレージシステム１１１は、ディスクドライブ１５９の物理的な記憶領域を、所定の大きさの物理ブロック１６１ごとに管理する一方、論理ブロック２１９に対するサーバ１０１からのアクセス要求を受け付ける。ストレージシステム１１１は、論理ブロック２１９への物理ブロック１６１の割り当てを管理する。サーバ１０１から各論理ブロック２１９に書き込まれたデータは、実際には、その論理ブロック２１９に割り当てられた物理ブロック１６１に格納される。
【００３１】
後で説明するように、論理ブロック２１９への物理ブロック１６１の割り当ては、割り当てブロック２２０ごとに管理される。図２には、一つの割り当てブロック２２０が四つの論理ブロック２１９によって構成される場合を示すが、実際には、一つの割り当てブロック２２０は、一つ以上の任意の所定の数の論理ブロック２１９によって構成される。また、図２には、一つの割り当てブロック２２０のみを示すが、実際には、各ボリューム２１８は任意の数の割り当てブロック２２０を含む。
【００３２】
本実施の形態のボリューム２１８には、ＡＯＵ（Ａｌｌｏｃａｔｉｏｎ  Ｏｎ  Ｕｓｅ）が適用される。このため、ボリューム２１８内の論理ブロック２１９を対象とする書き込み要求が最初に発行されたとき、その論理ブロック２１９に物理ブロック１６１が割り当てられる。
【００３３】
図３は、本発明の第１の実施の形態のブロック割り当てテーブル２１６のフォーマットを示す説明図である。
【００３４】
ブロック割り当てテーブル２１６は、ボリューム２１８毎に生成される。各ブロック割り当てテーブルは、論理ブロック番号毎にエントリを持つ。初めからすべての論理ブロック２１９に対応するエントリが用意されてもよいし、論理ブロック２１９に実際に物理ブロック１６１が割り当てられたときに、その論理ブロック２１９に対応するエントリが用意されてもよい。
【００３５】
各エントリのフィールドは、論理ブロック番号３０１、物理デバイス番号３０２、物理ブロック番号３０３及びＣＯＷビット３０４からなる。
【００３６】
論理ブロック番号３０１は、各論理ブロック２１９を識別する番号である。
【００３７】
物理デバイス番号３０２及び物理ブロック番号３０３は、論理ブロック番号３０１によって識別される論理ブロック２１９に割り当てられた物理ブロック１６１を一意に識別する。すなわち、物理デバイス番号３０２は、論理ブロック２１９に割り当てられた物理ブロック１６１が属する物理デバイスを識別する番号である。物理ブロック番号３０３は、論理ブロック２１９に割り当てられた物理ブロック１６１を、物理デバイス番号３０２が示す物理デバイス内で識別する番号である。
【００３８】
つまり、ブロック割り当てテーブル２１６によって、ある論理ブロック２１９がどの物理デバイスのどの物理ブロック１６１に対応しているかを知ることができる。
【００３９】
ここで、物理デバイスとは、物理的な記憶領域の管理単位として設定される物理的なボリュームである。一つ又は複数のディスクドライブ１５９が一つの物理デバイスであってもよいし、一つ又は複数のディスクドライブ１５９の記憶領域の一部が一つの物理デバイスであってもよい。
【００４０】
なお、一つの割り当てブロック２２０が複数の連続した論理ブロック２１９からなる場合、論理ブロック番号３０１には、各割り当てブロック２２０の先頭の論理ブロック２１９の番号が登録されてもよい。その場合、割り当てブロック２２０を構成する複数の論理ブロック２１９には、複数の連続した物理ブロック１６１が割り当てられる。そして、物理デバイス番号３０２及び物理ブロック番号３０３には、割り当てられた複数の連続した物理ブロック１６１のうち、先頭の物理ブロック１６１を識別する情報が登録される。
【００４１】
ＣＯＷビット３０４には、複数の論理ブロック２１９に単一の物理ブロック１６１が割り当てられているか否かを示す値が登録される。ＣＯＷビット３０４は、ライトコマンドを実行する際に参照される。
【００４２】
図４は、本発明の第１の実施の形態のブロックリファレンステーブル２１７のフォーマットを示す説明図である。
【００４３】
ブロックリファレンステーブル２１７は、物理ブロック１６１毎にエントリを持つ。各エントリのフィールドは、物理デバイス番号４０１、物理ブロック番号４０２及びリファレンスカウンタ４０３からなる。
【００４４】
物理デバイス番号４０１及び物理ブロック番号４０２は、図３の物理デバイス番号３０２及び物理ブロック番号３０３と同様、各物理ブロック１６１を一意に識別する。
【００４５】
リファレンスカウンタ４０３には、物理デバイス番号４０１及び物理ブロック番号４０２によって識別される物理ブロック１６１が、いくつの論理ブロック２１９に割り当てられているかを示す値が登録される。リファレンスカウンタ４０３の値が「０」である場合、その値に対応する物理ブロック１６１はどの論理ブロック２１９にも割り当てられていない。すなわち、未使用のブロックである。
【００４６】
ブロック割り当てテーブル２１６と同様、初めからすべての物理ブロック１６１に対応するエントリが用意されてもよいし、物理ブロック１６１が実際に論理ブロック２１９に割り当てられたときに、その物理ブロック１６１に対応するエントリが用意されてもよい。
【００４７】
以下、本発明の第１の実施の形態において実行される処理を説明する。以下の説明は、ストレージシステム１１１がＡＯＵ機能を備えることを前提としている。これは、ＡＯＵ機能を備えるストレージシステム１１１において、本実施の形態の効果がより顕著だからである。しかし、本実施の形態は、ＡＯＵ機能を備えなくとも、ボリュームが複数の物理デバイスのブロックから構成されるストレージシステムに適用することができる。後で説明する第２及び第３の実施の形態も、同様に、ＡＯＵ機能を備えないボリュームに適用することができる。
【００４８】
本発明の第１の実施の形態では、ストレージアプリケーション２０２が割り当て構成情報を取得し、その情報に基づいてマッピング更新コマンドをストレージシステム１１１に発行する事によって、複数の論理ブロック２１９にまたがる同一内容の書き込みを、単一の物理ブロック１６１に集約する。
【００４９】
図５は、本発明の第１の実施の形態のサーバ１０１が実行する処理を示すフローチャートである。
【００５０】
具体的には、図５は、同一の初期化データが、ボリューム２１８内の複数の箇所に書き込まれた状態を実現するために実行される処理を示す。
【００５１】
最初に、ストレージアプリケーション２０２が処理を開始する（５０１）。
【００５２】
次に、ストレージアプリケーション２０２は、ブロック割り当ての構成情報をデバイスドライバ２０３に要求する（５０２）。
【００５３】
次に、デバイスドライバ２０３は、ストレージシステム１１１に対して構成情報取得コマンドを発行する（５０３）。ストレージシステム１１１における構成情報取得コマンドの処理については、後ほど図６を用いて説明する。
【００５４】
次に、ストレージアプリケーション２０２は、取得した構成情報に含まれる割り当てアライン及び割り当てサイズ（後述）に合わせて初期化データの書き込みを実行する（５０４）。ステップ５０４の処理は、同一の初期化データが書き込まれるべき複数の箇所のうち、最初の箇所に対する初期化データの書き込み処理である。その結果、書き込み対象の論理ブロック２１９に割り当てられた物理ブロック１６１に、初期化データが格納される。
【００５５】
ここで、割り当てサイズ及び割り当てアラインについて説明する。
【００５６】
論理ブロック２１９への物理ブロック１６１の割り当ては、論理ブロック２１９ごとに管理されてもよいが、複数の論理ブロック２１９からなるグループごとに管理されてもよい。このような割り当ての管理単位は、割り当てブロック２２０と呼ばれる。一つの割り当てブロック２２０は、所定の数の論理ブロック２１９からなる。例えば、一つの割り当てブロック２２０は、一つの論理ブロック２１９によって構成されてもよいし、任意の複数の論理ブロック２１９によって構成されてもよい。
【００５７】
割り当てサイズは、割り当てブロック２２０のサイズ、すなわち、各割り当てブロック２２０に含まれる論理ブロック２１９の数を示す情報である。
【００５８】
割り当てアラインは、割り当てブロック２２０の先頭の位置を示す情報である。
【００５９】
構成情報応答部２１４から割り当てサイズ及び割り当てアラインを取得したストレージアプリケーション２０２は、取得したこれらの情報に基づいて、どの論理ブロック２１９がどの割り当てブロック２２０に属するかを正確に知ることができる。
【００６０】
次に、ストレージアプリケーション２０２は、ステップ５０４においてデータが書き込まれた領域をソースとして指定し、ソースと同一の内容が書き込まれるべき領域をデスティネーション（書き込み先）として指定して、デバイスドライバ２０３に対してマッピング更新を指示する（５０５）。この指示は、ソースとして指定された論理ブロック２１９に割り当てられた物理ブロック１６１を、その割り当てを維持したまま、さらに、デスティネーションとして指定された論理ブロック２１９に割り当てることを要求するものである。
【００６１】
また、ステップ５０５において、デスティネーションは、ステップ５０３において取得された割り当てサイズ及び割り当てアラインに基づいて指定される。具体的には、デスティネーションとして指定された論理ブロック２１９と割り当てブロック２２０の先頭との位置関係と、ソースとして指定された論理ブロック２１９と割り当てブロック２２０の先頭との位置関係とが同じになるように、デスティネーションが指定される。これらの位置関係が異なる場合、ソースとデスティネーションに同一の物理ブロック１６１を割り当てることができないためである。
【００６２】
例えば、ソースとして指定された論理ブロック２１９が割り当てブロック２２０の先頭である場合、その論理ブロック２１９に対応するデスティネーションの論理ブロック２１９として、別の割り当てブロック２２０の先頭の論理ブロック２１９が指定される。
【００６３】
次に、デバイスドライバ２０３は、ストレージシステム１１１に対してマッピング更新コマンドを発行する（５０６）。ストレージシステム１１１におけるマッピング更新コマンドの処理については、後ほど図８を用いて説明する。
【００６４】
その後、同一の内容を書き込みたい領域のすべてに対して、ステップ５０５〜５０７の処理を繰り返して実行し、処理を終了する（５０８）。
【００６５】
上記図５のフローチャートのステップ５０５から５０７の繰り返し処理を省略することによって、処理を高速化することができる。そのために、例えば、複数のデスティネーションを指定するマッピング更新指示コマンドが使用されてもよいし、複数のデスティネーションを指定する書き込みコマンドが使用されてもよい。
【００６６】
図６は、本発明の第１の実施の形態のストレージシステム１１１が実行する構成情報取得コマンド処理を示すフローチャートである。
【００６７】
図６の処理は、図５のステップ５０３において発行された構成情報取得コマンドを受けたストレージシステム１１１が実行する処理である。
【００６８】
コマンド受付部２１２が構成情報取得コマンドを受けると、構成情報取得コマンド処理が開始される（６０１）。
【００６９】
構成情報応答部２１４は、指定されたボリュームの構成情報、具体的には、指定されたボリュームの割り当てサイズ及び割り当てアラインを応答する（６０２）。
【００７０】
以上で、構成情報取得コマンド処理が終了する（６０３）。
【００７１】
次に、図５のステップ５０６において発行されるマッピング更新コマンドのストレージシステム１１１における処理について、図７のコマンドフォーマット及び図８のフローチャートを参照して説明する。
【００７２】
図７は、本発明の第１の実施の形態のマッピング更新コマンドのフォーマットの説明図である。
【００７３】
マッピング更新コマンドのフォーマット７００は、マッピング更新オペコード７０１、ソース論理ブロック番号７０２、ブロック数７０３及びデスティネーション論理ブロック番号７０４からなる。
【００７４】
マッピング更新オペコード７０１は、そのコマンドがマッピング更新コマンドであることを示すコードである。ソース論理ブロック番号７０２及びデスティネーション論理ブロック番号７０４は、それぞれ、ステップ５０５においてソース及びデスティネーションとして指定された領域の先頭の論理ブロック２１９の番号である。
【００７５】
ブロック数７０３は、マッピング更新の対象となる連続した論理ブロック２１９の数である。具体的には、ソース論理ブロック番号７０２及びデスティネーション論理ブロック番号７０４によって指定された論理ブロック２１９を先頭とする、ブロック数７０３が示す数の連続した論理ブロック２１９が、マッピング更新の対象の領域である。
【００７６】
図８は、本発明の第１の実施の形態の割り当てテーブル管理部２１５が実行するマッピング更新コマンド処理を示すフローチャートである。
【００７７】
マッピング更新コマンド処理が開始すると（８０１）、最初に、割り当てテーブル管理部２１５は、ブロック割り当てテーブル２１６を参照することによって、指定されたソース論理ブロック番号３０１に対応する物理ブロック番号３０３及び物理デバイス番号３０２を取得する（８０２）。
【００７８】
次に、割り当てテーブル管理部２１５は、指定されたデスティネーション論理ブロック番号に対応するエントリがブロック割り当てテーブル２１６にあるか否かを判定する（８０３）。
【００７９】
ステップ８０３において、エントリがないと判定された場合、デスティネーション論理ブロック２１９にはまだ物理ブロック１６１が割り当てられていない。この場合、割り当てテーブル管理部２１５は、デスティネーション論理ブロック２１９に対応するエントリをブロック割り当てテーブル２１６に追加し（８０４）、ステップ８０６へ処理を移す。
【００８０】
一方、ステップ８０３において、エントリがあると判定された場合、デスティネーション論理ブロック２１９に既に物理ブロック１６１が割り当てられている。この場合、割り当てテーブル管理部２１５は、デスティネーション論理ブロック２１９に対応する物理ブロック１６１を解放し（８０５）、ステップ８０６へ処理を移す。
【００８１】
ステップ８０６において、割り当てテーブル管理部２１５は、デスティネーション論理ブロック２１９のエントリに、ソース論理ブロック２１９に対応する物理ブロック番号と物理デバイス番号を登録する。ステップ８０６が実行された結果、ソース論理ブロック２１９に割り当てられていた物理ブロック１６１が、ソース論理ブロック２１９への割り当てを維持したまま、さらに、デスティネーション論理ブロック２１９にも割り当てられる。その結果、一つの物理ブロック１６１が複数の論理ブロック２１９に割り当てられる。
【００８２】
次に、割り当てテーブル管理部２１５は、ソース及びデスティネーションの両方のエントリのＣＯＷビット３０４に「１」を登録する（８０７）。
【００８３】
次に、割り当てテーブル管理部２１５は、ブロックリファレンステーブルの該当のエントリのリファレンス数をインクリメントして（８０８）、処理を終了する（８０９）。
【００８４】
以上の処理は、ブロック数７０３に指定された連続ブロック数と同じ回数、繰り返し実行される（図５のステップ５０５から５０７参照）。
【００８５】
図７に示すマッピング更新コマンドは、一つのソースに対応して一つのデスティネーションしか指定することができない。しかし、一つのソースに対応して複数のデスティネーションを指定するコマンドフォーマットを適用することによって、図５のステップ５０５から５０７の繰り返し処理を省略することができる。
【００８６】
図９は、本発明の第１の実施の形態の、複数のデスティネーションを指定するマッピング更新コマンドのフォーマットの説明図である。
【００８７】
図９に示すマッピング更新コマンドのフォーマット９００は、複数マッピング更新オペコード９０１、ソース論理ブロック番号９０２、ブロック数９０３、デスティネーション数９０４、及び、デスティネーション数９０４で指定された数のデスティネーション論理ブロック番号９０５等からなる。
【００８８】
複数マッピング更新オペコード９０１は、そのコマンドが複数のデスティネーションを指定するマッピング更新コマンドであることを示すコードである。ソース論理ブロック番号９０２及びブロック数９０３は、それぞれ、ソース論理ブロック番号７０２及びブロック数７０３と同様であるので、説明を省略する。
【００８９】
デスティネーション数９０４は、マッピング更新の対象となるデスティネーション領域の数を示す。デスティネーション数９０４には、任意の値を設定することができる。
【００９０】
デスティネーション論理ブロック番号９０５等は、デスティネーションとして指定された各領域の先頭の論理ブロック２１９の番号である。フォーマット９００は、デスティネーション数９０４によって指定された数のデスティネーション論理ブロック番号９０５等を含む。図９には、例として、第１デスティネーション論理ブロック番号９０５及び第２デスティネーション論理ブロック番号９０６を示す。仮にデスティネーション数９０４に「３」が設定されている場合、フォーマット９００は、さらに、第３デスティネーション論理ブロック番号（図示省略）を含む。
【００９１】
次に、ボリューム２１８に対する読み出し処理及び書き込み処理を実行するストレージシステム１１１内の処理について説明する。
【００９２】
図１６は、本発明の第１の実施の形態のストレージシステム１１１が実行するリードコマンド処理のフローチャートである。
【００９３】
ストレージシステム１１１がホスト１０１から読み出し要求のためのコマンド（リードコマンド）を受けると、Ｉ／Ｏ制御部２１３がリードコマンド処理を開始する（１６０１）。リードコマンドは、少なくとも、読み出し要求の対象の論理ブロックを示す論理ブロック番号を指定する。
【００９４】
最初に、Ｉ／Ｏ制御部２１３は、リードコマンドによって指定された論理ブロック番号３０１に対応するブロック割り当てテーブル２１６のエントリを参照し、物理デバイス番号３０２及び物理ブロック番号３０３を取得する（１６０２）。
【００９５】
次に、Ｉ／Ｏ制御部２１３は、ステップ１６０２において取得した物理デバイス番号３０２及び物理ブロック番号３０３が示す記憶領域に格納されているデータを読み出す（１６０３）。
【００９６】
次に、Ｉ／Ｏ制御部２１３は、ステップ１６０３において読み出されたデータをサーバに応答し（１６０４）、リードコマンド処理を終了する（１６０５）。
【００９７】
図１７は、本発明の第１の実施の形態のストレージシステム１１１が実行するライトコマンド処理のフローチャートである。
【００９８】
ストレージシステム１１１がホスト１０１から書き込み要求のためのコマンド（ライトコマンド）を受けると、Ｉ／Ｏ制御部２１３がライトコマンド処理を開始する（１７０１）。リードコマンドは、少なくとも、書き込み要求の対象の論理ブロックを示す論理ブロック番号、及び、書き込み要求の対象のデータ（書き込みデータ）を指定する。
【００９９】
最初に、Ｉ／Ｏ制御部２１３は、ブロック割り当てテーブル２１６に、ライトコマンドによって指定された論理ブロック２１９に対応するエントリが存在するか否かを判定する（１７０２）。
【０１００】
ステップ１７０２において、指定された論理ブロック２１９に対応するエントリが存在しないと判定された場合、書き込み要求の対象の論理ブロック２１９にまだ物理ブロック１６１が割り当てられていない。この場合、ステップ１７０３に処理を移す。
【０１０１】
ステップ１７０３において、Ｉ／Ｏ制御部２１３は、新たに物理ブロック１６１を確保し、確保した物理ブロック１６１に対応するエントリを、ブロック割り当てテーブル２１６及びブロックリファレンステーブル２１７に追加する。そして、ステップ１７０４に処理を移す。
【０１０２】
一方、ステップ１７０２において、指定された論理ブロック２１９に対応するエントリが存在すると判定された場合、書き込み要求の対象の論理ブロック２１９に既に物理ブロック１６１が割り当てられている。この場合、Ｉ／Ｏ制御部２１３は、ライトコマンドによって指定された論理ブロック２１９に対応するブロック割り当てテーブル２１６のエントリのＣＯＷビット３０４が“１”であるか否かを判定する（１７１１）。
【０１０３】
ステップ１７１１において、ＣＯＷビット３０４が“１”であると判定された場合、書き込み要求の対象の論理ブロック２１９に既に割り当てられている物理ブロック１６１は、他の論理ブロック２１９（すなわち、書き込み要求の対象でない論理ブロック２１９）にも割り当てられている。したがって、その物理ブロック１６１にデータを書き込むと、書き込み要求の対象でない他の論理ブロック２１９に書き込まれたデータも同時に書き換えられる結果となる。このような意図しない書き換えが発生することを防ぐため、集約ブロックライト処理が実行される。集約ブロックライト処理については、図１８を参照して後ほど説明する。Ｉ／Ｏ制御部２１３は、集約ブロックライト処理を実行すると、ライトコマンド処理を終了する（１７２１）。
【０１０４】
一方、ステップ１７１１において、ＣＯＷビット３０４が“０”であると判定された場合、書き込み要求の対象の論理ブロック２１９に既に割り当てられている物理ブロック１６１は、他の論理ブロック２１９に割り当てられていない。この場合、書き込み要求の対象でない論理ブロック２１９に影響を与えずに、その物理ブロック１６１にデータを書き込むことができる。このため、ステップ１７０４に処理を移す。
【０１０５】
ステップ１７０３の後にステップ１７０４が実行される場合、Ｉ／Ｏ制御部２１３は、ライトコマンドによって指定されたデータを、ステップ１７０３において新たに確保された物理ブロック１６１に書き込む（１７０４）。ステップ１７１１の後にステップ１７０４が実行される場合、Ｉ／Ｏ制御部２１３は、ライトコマンドによって指定されたデータを、ライトコマンドによって指定された論理ブロック２１９に対応する物理ブロック１６１へ書き込む。ライトコマンドによって指定された論理ブロック２１９に対応する物理ブロック１６１とは、その論理ブロック２１９に対応するブロック割り当てテーブル２１６のエントリに登録されている物理ブロック１６１である。
【０１０６】
そして、Ｉ／Ｏ制御部２１３はライトコマンド処理を終了する（１７２１）。
【０１０７】
図１８は、本発明の第１の実施の形態のストレージシステム１１１が実行する集約ブロックライト処理のフローチャートである。
【０１０８】
図１７のステップ１７１１において、ＣＯＷビット３０４が“１”であると判定された場合、Ｉ／Ｏ制御部２１３は、集約ブロックライト処理を開始する（１８０１）。
【０１０９】
最初に、Ｉ／Ｏ制御部２１３は、新しい物理ブロック１６１を確保し、ライトコマンドによって指定された論理ブロック２１９に対応する物理ブロック１６１の内容を、新規に確保した物理ブロック１６１へコピーする（１８０２）。なお、割り当てブロック２２０全体が書き込み要求の対象として指定されている場合、その割り当てブロック２２０については、ステップ１８０２のコピー処理を省略することができる。ただし、その場合も、新しい物理ブロック１６１の確保は必要である。
【０１１０】
次に、Ｉ／Ｏ制御部２１３は、ライトコマンドによって指定された書き込みデータを、ステップ１８０２において新規に確保された物理ブロック１６１へ書き込む（１８０３）。
【０１１１】
次に、割り当てテーブル管理部２１５は、ライトコマンドによって指定された論理ブロック２１９に対応するブロック割り当てテーブル２１６のエントリの物理デバイス番号３０２及び物理ブロック番号３０３を、ステップ１８０２において新規に確保された物理ブロック１６１を示す情報に置き換える（１８０４）。
【０１１２】
次に、割り当てテーブル管理部２１５は、ステップ１８０２において新規に確保された物理ブロック１６１に対応するブロックリファレンステーブル２１７のエントリを追加し、そのエントリのリファレンスカウンタ４０３の値をインクリメントする（１８０５）。なお、新規に追加されたエントリのリファレンスカウンタ４０３の初期値は“０”である。このため、ステップ１８０５が終了した時点で、新規に追加されたエントリのリファレンスカウンタ４０３の値は“１”である。
【０１１３】
次に、割り当てテーブル管理部２１５は、ステップ１８０２のコピー元となった物理ブロック１６１に対応するブロックリファレンステーブル２１７のエントリのリファレンスカウンタ４０３の値をデクリメントする（１８０６）。
【０１１４】
次に、コピー元となった物理ブロック１６１に対応するリファレンスカウンタ４０３の値が“１”になっているか否かを判定する（１８０７）。
【０１１５】
ステップ１８０７において、リファレンスカウンタ４０３の値が“１”になっていると判定された場合、コピー元となった物理ブロック１６１は、現在、一つの論理ブロック２１９のみに割り当てられている。この場合、割り当てテーブル管理部２１５は、コピー元となった物理ブロック１６１が割り当てられている論理ブロック２１９に対応するブロック割り当てテーブル２１６のエントリのＣＯＷビット３０４の値を“０”にして（１８０８）、処理を終了する（１８０９）。
【０１１６】
一方、ステップ１８０７において、リファレンスカウンタ４０３の値が“１”になっていない（すなわち、リファレンスカウンタ４０３の値が“２”以上である）と判定された場合、コピー元となった物理ブロック１６１は、まだ複数の論理ブロック２１９に割り当てられている。この場合、割り当てテーブル管理部２１５はステップ１８０８の処理をスキップして処理を終了する（１８０９）。
【０１１７】
上記の本発明の第１の実施の形態は、サーバ１０１が初期化データを書き込む場合を例として説明した。これは、初期化データの書き込みが、同一の内容を記憶領域の複数の箇所に繰り返し書き込む処理の典型的な例だからである。しかし、初期化データ以外のデータの書き込みであっても、同一の内容を複数の箇所に繰り返し書き込む場合には、本実施の形態を適用することができる。
【０１１８】
以上の本発明の第１の実施の形態によれば、複数の論理ブロック２１９に同一のデータが書き込まれるとき、それらの複数の論理ブロック２１９に同一の物理ブロック１６１が割り当てられる。その結果、実際に使用される物理ブロック１６１の数が抑制されるため、記憶領域を節約することができる。さらに、書き込み処理が省略されるため、処理を高速化することができる。
【０１１９】
次に、本発明の第２の実施の形態について説明する。
【０１２０】
第２の実施の形態のストレージアプリケーション２０２は、割り当て構成を意識せず、同一の書き込みデータをコピーコマンドによって処理する。コピーコマンドを受けたストレージシステムは、可能な場合、コピー処理をマッピング更新処理に変換する。
【０１２１】
第２の実施の形態の計算機システムの構成は、第１の実施の形態と同様、図１から図４に示す通りであるため、説明を省略する。また、第２の実施の形態において、ボリューム２１８に対する読み出し及び書き込み要求が発行された場合の処理は、図１６から図１８に示す通りであるため、説明を省略する。
【０１２２】
図１０は、本発明の第２の実施の形態のサーバ１０１が実行する処理を示すフローチャートである。
【０１２３】
最初に、ストレージアプリケーション２０２が処理を開始する（１００１）。
【０１２４】
次に、ストレージアプリケーション２０２は、初期化データを書き込む（１００２）。
【０１２５】
次に、ストレージアプリケーション２０２は、ステップ１００２においてデータが書き込まれた領域をソース（コピー元）として指定し、ソースと同一の内容を書き込みたい領域をデスティネーション（コピー先）として指定することによって、デバイスドライバ２０３にコピーを指示する（１００３）。
【０１２６】
次に、デバイスドライバ２０３は、拡張コピーコマンドをストレージシステム１１１に発行する（１００４）。拡張コピーコマンドのフォーマットとその処理については、後ほど図１１Ｂ及び図１２を用いて説明する。
【０１２７】
その後、同一の内容を書き込みたい領域のすべてに対して、ステップ１００３〜１００５の繰り返し処理を実行し、処理を終了する（１００６）。
【０１２８】
図１１Ａは、従来のコピーコマンドのフォーマット１１００の説明図である。
【０１２９】
従来のコピーコマンドのフォーマット１１００は、コマンドの種類を示すコピーオペコード１１０１、コピー元開始オフセット１１０２、コピー先開始オフセット１１０３及びコピーサイズ１１０４からなる。ここで、コピー元開始オフセット１１０２及びコピー先開始オフセット１１０３は、それぞれ、コピー元の論理ブロック２１９の位置情報及びコピー先の論理ブロック２１９の位置情報（例えば、論理ブロック番号）である。これに対し、本実施の形態の拡張コピーコマンドのフォーマット１１１０は、図１１Ｂに示す通りである。
【０１３０】
図１１Ｂは、本発明の第２の実施の形態の拡張コピーコマンドのフォーマット１１１０の説明図である。
【０１３１】
従来のフォーマット１１００と比較すると、拡張コピーコマンドのフォーマット１１１０には、集約フラグ１１１２が追加されている。この集約フラグ１１１２は、ブロックの集約が可能な場合に集約を許可するか否かを決定するためのフラグである。ここで、ブロックの集約とは、既に論理ブロック２１９に割り当てられている物理ブロック１６１を、さらに他の論理ブロック２１９にも割り当てる事を意味する。
【０１３２】
コピー処理は、データに冗長性を与えることによってデータの信頼性及び可用性を向上させるために実行されることもある。その場合にもブロックが集約されては冗長性が損なわれるため、ブロックの集約を許可するか否かを示す集約フラグ１１１２が設けられる。したがって、デバイスドライバ２０３は、冗長性が必要なコピーを実行するとき、集約フラグ１１１２を“０”に設定し、冗長性が必要でないコピーを実行するとき、集約フラグを“１”に設定する。冗長性が必要でないコピーとは、例えば、図１０において説明した、初期化データの書き込みのためのコピーである。この集約フラグ１１１２は、拡張コピーオペコード１１１１に内包されてもよい。
【０１３３】
拡張コピーオペコード１１１１は、このコマンドが拡張コピーコマンドであることを示す。コピー元開始オフセット１１１３、コピー先開始オフセット１１１４及びコピーサイズ１１１５は、それぞれ、従来のコピー元開始オフセット１１０２、コピー先開始オフセット１１０３及びコピーサイズ１１０４と同じであるため、説明を省略する。
【０１３４】
図１２は、本発明の第２の実施の形態のマイクロプログラム２１１が実行する拡張コピーコマンド処理を示すフローチャートである。
【０１３５】
拡張コピーコマンドを受けたマイクロプログラム２１１は、拡張コピーコマンド処理を開始する（１２０１）。
【０１３６】
次に、マイクロプログラム２１１は、コマンドの集約フラグ１１１２をチェックする（１２０２）。
【０１３７】
ステップ１２０２において、集約フラグ１１１２が“０”であると判定された場合、集約が許可されていないため、ステップ１２０６へ処理を移す。ステップ１２０２において、集約フラグ１１１２が“１”であると判定された場合、集約が許可されているため、１２０３へ処理を移す。
【０１３８】
次に、マイクロプログラム２１１は、指定されたコピー元とコピー先の先頭オフセットの差が割り当てブロック２２０のサイズの倍数になっているか否かを判定する（１２０３）。
【０１３９】
ステップ１２０３において、先頭オフセットの差が割り当てブロックサイズの倍数になっていないと判定された場合、コピー先における論理ブロック２１９と割り当てブロック２２０との位置関係が、コピー元における論理ブロック２１９と割り当てブロック２２０との位置関係と異なる。この場合をより具体的に説明すると、例えば、コピー元の論理ブロック２１９が割り当てブロック２２０の先頭に位置しているとき、その論理ブロック２１９のデータのコピー先の論理ブロック２１９は割り当てブロック２２０の先頭以外に位置している。このような場合には、コピー元の論理ブロック２１９とコピー先の論理ブロック２１９とに同じ物理ブロック１６１を割り当てることができない。このため、ステップ１２０６へ処理を移す。
【０１４０】
一方、ステップ１２０３において、先頭オフセットの差が割り当てブロックサイズの倍数になっていると判定された場合、コピー元の論理ブロック２１９とコピー先の論理ブロック２１９とに同じ物理ブロック１６１を割り当てることができる。この場合、ステップ１２０４へ処理を移す。
【０１４１】
次に、マイクロプログラム２１１は、コピー元として指定された範囲内に少なくとも一つ以上の割り当てブロック２２０全体が含まれているか否かを判定する（１２０４）。
【０１４２】
論理ブロック２１９への物理ブロック１６１の割り当ては、割り当てブロック２２０ごとに管理される。したがって、割り当てブロック２２０にコピー元でない論理ブロック２１９が含まれる場合に、その割り当てブロック２２０について物理ブロック１６１の割り当てを変更すると、コピー元でない論理ブロック２１９に割り当てられている物理ブロック１６１までもが変更される。その結果、コピー元でない論理ブロック２１９に格納されているデータが、意図していないにも関らず、変更される。このようにコピー元でない論理ブロック２１９への物理ブロック１６１の割り当てが変更されることを防ぐ必要がある。このため、コピー元でない論理ブロック２１９を含む割り当てブロック２２０については、物理ブロック１６１の割り当てを変更することができない。
【０１４３】
ステップ１２０４において、ＮＯと判定された場合、全ての割り当てブロック２２０が、コピー元でない論理ブロック２１９を含む。この場合、物理ブロック１６１の割り当てを変更することができないため、ステップ１２０６へ処理を移す。
【０１４４】
一方、ステップ１２０４において、ＹＥＳと判定された場合、コピー元の論理ブロック２１９のみからなる割り当てブロック２２０が少なくとも一つ存在する。この場合ステップ１２０５へ処理を移す。
【０１４５】
ステップ１２０５において、マイクロプログラム２１１は、割り当てブロック２２０全体を含んでいる領域（すなわち、コピー元の論理ブロック２１９のみを含む割り当てブロック２２０）について、マッピング更新処理を実行する。具体的なマッピング更新処理は、図８に示した通りである。
【０１４６】
次に、拡張コピーコマンドの対象の領域のうち、以上のステップ１２０５までの処理によってマッピングを更新できなかった領域については、従来のコピー処理を実行する（１２０６）。具体的には、コピー元の論理ブロック２１９に割り当てられている物理ブロック１６１以外の物理ブロック１６１をコピー先の論理ブロック２１９に割り当て、そのコピー先の論理ブロック２１９に割り当てられた物理ブロック１６１にコピー対象のデータを格納する。あるいは、コピー元の論理ブロック２１９に割り当てられている物理ブロック１６１以外の物理ブロック１６１にコピー対象のデータを格納し、そのコピー対象のデータが格納された物理ブロック１６１をコピー先の論理ブロック２１９に割り当ててもよい。
【０１４７】
以上で処理を終了する（１２０７）。
【０１４８】
以上の図１０から図１２は、ストレージアプリケーション２０２が初期化データを書き込む場合を例として説明した。しかし、ストレージアプリケーション２０２が通常のコピー処理を実行する場合にも、上記の手順を応用することができる。
【０１４９】
例えば、既に論理ブロック２１９に格納されているオリジナルデータをコピーする場合、ストレージアプリケーション２０２は、ステップ１００２を実行しない。そして、ストレージアプリケーション２０２は、ステップ１００３において、オリジナルデータが格納された論理ブロック２１９をコピー元として指定し、いずれかの論理ブロック２１９をコピー先として指定したコピー指示を発行する。そして、デバイスドライバ２０３は、ステップ１００４において、拡張コピーコマンドを発行する。この拡張コピーコマンドを受けたストレージシステム１１１が実行する処理は、図１２において説明した通りである。
【０１５０】
以上の図１０から図１２に示した方法では、ステップ１００３〜１００５の繰り返し処理の回数が大きいと、サーバ１０１とストレージシステム１１１の間のコマンドのやり取りの回数が多くなってしまう。コマンドのやり取りの回数を削減するためのコマンドフォーマットとして、図１３に示す複数デスティネーション書き込みコマンド、及び、図１４に示す複数デスティネーション拡張コピーコマンドがある。
【０１５１】
図１３は、本発明の第２の実施の形態の複数デスティネーション書き込みコマンドの説明図である。
【０１５２】
複数デスティネーション書き込みコマンドは、複数の書き込み先（デスティネーション）を指定する書き込みコマンドである。複数デスティネーション書き込みコマンドのフォーマット１３００は、複数書き込みオペコード１３０１、集約フラグ１３０２、書き込みサイズ１３０３、書き込みデータ１３０４、一つのコマンドによって指定される書き込み先の領域の数を示すデスティネーション数１３０５、及び、デスティネーション数１３０５によって指定された数の書き込み先開始オフセット１３０６等からなる。
【０１５３】
複数書き込みオペコード１３０１は、そのコマンドが複数デスティネーション書き込みコマンドであることを示すコードである。
【０１５４】
集約フラグ１３０２は、図１１Ｂの集約フラグ１１１２と同様、ブロックの集約を許可するか否かを示す。
【０１５５】
書き込みサイズ１３０３は、複数デスティネーション書き込みコマンドによって書き込まれるデータのサイズを示す。
【０１５６】
書き込みデータ１３０４は、複数デスティネーション書き込みコマンドによって書き込まれるデータである。
【０１５７】
デスティネーション数１３０５は、複数デスティネーション書き込みコマンドによる書き込み先の領域の数を示す。デスティネーション数１３０５には、任意の値を設定することができる。
【０１５８】
書き込み先開始オフセット１３０６等は、書き込み先として指定された各領域の先頭のオフセットである。図１３には、第１書き込み先開始オフセット１３０６及び第２書き込み先開始オフセット１３０７を示すが、フォーマット１３００は、第３書き込み先開始オフセット（図示省略）等を含んでもよい。
【０１５９】
図１３に示す複数デスティネーション書き込みコマンドを利用すれば、ステップ１００２の処理を１回実行することによって、所定の回数の書き込み処理が実行される。その結果、ステップ１００３から１００５までの処理を省略することができる。
【０１６０】
図１９は、本発明の第２の実施の形態のマイクロプログラム２１１が実行する複数デスティネーション書き込みコマンド処理を示すフローチャートである。
【０１６１】
複数デスティネーション書き込みコマンドを受けたマイクロプログラム２１１は、複数デスティネーション書き込みコマンド処理を開始する（１９０１）。
【０１６２】
まず、マイクロプログラム２１１は、初期化データを、第１書き込み先（すなわち、コマンドによって指定された第１書き込み先オフセット１３０６が示す位置）に書き込む（１９０２）。
【０１６３】
次に、マイクロプログラム２１１は、ｎ＝２と設定する（１９０３）。ｎは、コマンドのデスティネーション（書き込み先）の順番に対応する。例えば、ｎ＝２のとき、第２書き込み先に対する書き込みが実行される。
【０１６４】
次に、マイクロプログラム２１１は、コマンドの集約フラグ１３０２をチェックする（１９０４）。集約フラグ１３０２が“０”であると判定された場合、集約が許可されていないため、ステップ１９０８へ処理を移す。集約フラグ１３０２が“１”であると判定された場合、集約が許可されているため、１９０５へ処理を移す。
【０１６５】
ステップ１９０５において、マイクロプログラム２１１は、第１書き込み先と第ｎ書き込み先の先頭オフセットの差が割り当てブロック２２０のサイズの倍数になっているか否かを判定する。その結果、先頭オフセットの差が割り当てブロックサイズの倍数になっていないと判定された場合、ステップ１９０８へ処理を移す。一方、先頭オフセットの差が割り当てブロックサイズの倍数であると判定された場合、ステップ１９０６へ処理を移す。
【０１６６】
ステップ１９０６において、マイクロプログラム２１１は、第１書き込み先として指定された範囲内に少なくとも一つ以上の割り当てブロック２２０が含まれているか否かを判定する。その結果、含まれていないと判定された場合、ステップ１９０８へ処理を移す。一方、含まれていると判定された場合、マイクロプログラム２１１は、割り当てブロック全体を含んでいる領域について、マッピング更新処理を行う（１９０７）。具体的なマッピング更新処理は図８に示した通りである。
【０１６７】
次に、マイクロプログラム２１１は、マッピング更新処理を行わなかった領域について、書き込み処理を行う（１９０８）。
【０１６８】
次に、マイクロプログラム２１１は、ｎがコマンドのデスティネーション数１３０５と一致したか否かを判定する（１９０９）。
【０１６９】
ｎがコマンドのデスティネーション数１３０５と一致しない場合、まだ書き込み先が残っている。このため、マイクロプログラム２１１は、ｎをインクリメントし（１９１０）、ステップ１９０４に戻る。その結果、上記と同様の処理が繰り返し実行される。一方、ｎがコマンドのデスティネーション数１３０５と一致した場合、すべての書き込み先について書き込みが完了した。このため、複数デスティネーション書き込みコマンド処理が終了する（１９１１）。
【０１７０】
図１４は、本発明の第２の実施の形態の複数デスティネーション拡張コピーコマンドの説明図である。
【０１７１】
複数デスティネーション拡張コピーコマンドは、複数のコピー先（デスティネーション）を指定する書き込みコマンドである。複数デスティネーション拡張コピーコマンドのフォーマット１４００は、複数コピーオペコード１４０１、集約フラグ１４０２、コピー元開始オフセット１４０３、コピーサイズ１４０４、一つのコマンドがコピー先として指定する領域の数を示すデスティネーション数１４０５、及び、デスティネーション数１４０５によって指定された数のコピー先開始オフセット１４０６等からなる。
【０１７２】
複数コピーオペコード１４０１は、そのコマンドが複数デスティネーション拡張コピーコマンドであることを示すコードである。
【０１７３】
集約フラグ１４０２、コピー元開始オフセット１４０３及びコピーサイズ１４０４は、それぞれ、集約フラグ１１１２、コピー元開始オフセット１１１３及びコピーサイズ１１１５と同様であるため、説明を省略する。
【０１７４】
デスティネーション数１４０５は、複数デスティネーション拡張コピーコマンドによるコピー先の領域の数を示す。デスティネーション数１４０５には、任意の値を設定することができる。
【０１７５】
コピー先開始オフセット１４０６等は、コピー先として指定された各領域の先頭のオフセットである。図１４には、第１コピー先開始オフセット１４０６及び第２コピー先開始オフセット１４０７を示すが、フォーマット１４００は、第３コピー先開始オフセット（図示省略）等を含んでもよい。
【０１７６】
図１４に示す複数デスティネーション拡張コピーコマンドを利用すれば、ステップ１００３から１００５までの処理を１回実行することによって、所定の回数のコピー処理が実行される。その結果、ステップ１００３から１００５までの処理の繰り返しを省略することができる。
【０１７７】
図２０は、本発明の第２の実施の形態のサーバ１０１が複数デスティネーション拡張コピーコマンドを利用する処理を示すフローチャートである。
【０１７８】
最初に、ストレージアプリケーション２０２が処理を開始する（２００１）。
【０１７９】
次に、ストレージアプリケーション２０２は、初期化データを書き込む（２００２）。
【０１８０】
次に、ストレージアプリケーション２０２は、ステップ２００２においてデータが書き込まれた領域をソース（コピー元）として指定し、ソースと同一の内容を書き込みたい領域をデスティネーション（コピー先）として指定することによって、デバイスドライバ２０３にコピーを指示する（２００３）。この際、同一の内容を書き込みたい領域が複数ある場合には、複数の領域をデスティネーションとして指定する。
【０１８１】
デバイスドライバ２０３は、複数デスティネーション拡張コピーコマンドをストレージシステム１１１に発行する（２００４）。複数デスティネーション拡張コピーコマンドのフォーマットは図１４に示した通りである。複数デスティネーション拡張コピーコマンドを受けたストレージシステム１１１において実行される処理は、図２１に示す通りである。
【０１８２】
以上で図２０の処理が終了する（２００５）。
【０１８３】
図２１は、本発明の第２の実施の形態のマイクロプログラム２１１が実行する複数デスティネーション拡張コピーコマンド処理を示すフローチャートである。
【０１８４】
複数デスティネーション拡張コピーコマンドを受けたマイクロプログラム２１１は、複数デスティネーション拡張コピーコマンド処理を開始する（２１０１）。
【０１８５】
まず、マイクロプログラム２１１は、ｎ＝１と設定する（２１０２）。ｎは、コマンドのデスティネーションの順番に対応する。例えば、ｎ＝１のとき、第１コピー先に対するコピーが実行される。
【０１８６】
次に、マイクロプログラム２１１は、コマンドの集約フラグ１４０２をチェックする（２１０３）。集約フラグ１４０２が“０”であると判定された場合、集約が許可されていないため、ステップ２１０７へ処理を移す。集約フラグ１４０２が“１”であると判定された場合、集約が許可されているため、２１０４へ処理を移す。
【０１８７】
ステップ２１０４において、マイクロプログラム２１１は、指定されたコピー元とコピー先の先頭オフセットの差が割り当てブロック２２０のサイズの倍数になっているか否かを判定する。その結果、先頭オフセットの差が割り当てブロックサイズの倍数になっていないと判定された場合、ステップ２１０７へ処理を移す。一方、先頭オフセットの差が割り当てブロックサイズの倍数であると判定された場合、ステップ２１０５へ処理を移す。
【０１８８】
ステップ２１０５において、マイクロプログラム２１１は、コピー元として指定された範囲内に少なくとも一つ以上の割り当てブロック２２０が含まれているか否かを判定する。その結果、含まれていないと判定された場合、ステップ２１０７へ処理を移す。一方、含まれていると判定された場合、マイクロプログラム２１１は、割り当てブロック全体を含んでいる領域について、マッピング更新処理を行う（２１０６）。具体的なマッピング更新処理は図８に示した通りである。
【０１８９】
次に、マイクロプログラム２１１は、マッピング更新処理を行わなかった領域について、コピー処理を行う（２１０７）。
【０１９０】
次に、マイクロプログラム２１１は、ｎがコマンドのデスティネーション数１４０５と一致したか否かを判定する（２１０８）。
【０１９１】
ｎがコマンドのデスティネーション数１４０５と一致しない場合、まだコピー先が残っている。このため、マイクロプログラム２１１は、ｎをインクリメントし（２１０９）、ステップ２１０３に戻る。その結果、上記と同様の処理が繰り返し実行される。一方、ｎがコマンドのデスティネーション数１４０５と一致した場合、すべてのコピー先についてコピーが完了した。このため、複数デスティネーション拡張コピーコマンド処理が終了する（２１１０）。
【０１９２】
以上の第２の実施の形態によれば、第１の実施の形態と同様、記憶領域を節約し、さらに、処理を高速化することができる。また、第２の実施の形態によれば、物理ブロック１６１の論理ブロック２１９への割り当ての変更は、コピー要求を受けたストレージシステム１１１によって実行される。このため、サーバ１０１は、物理ブロック１６１の論理ブロック２１９への割り当てを制御する必要がない。
【０１９３】
次に、本発明の第３の実施の形態について説明する。
【０１９４】
第３の実施の形態のユーザアプリケーション２０１は、ｆｃｎｔｌ等を利用してストレージアプリケーション２０２にコピー指示を行い、その指示を受けたストレージアプリケーション２０２は、第２の実施の形態と同様の方法によって、拡張コピーコマンドを発行する。
【０１９５】
第３の実施の形態の計算機システムの構成は、第１の実施の形態と同様、図１から図４に示す通りであるため、説明を省略する。また、第３の実施の形態において、ボリューム２１８に対する読み出し及び書き込み要求が発行された場合の処理は、図１６から図１８に示す通りであるため、説明を省略する。
【０１９６】
図１５は、本発明の第３の実施の形態のサーバ１０１が実行する処理を示すフローチャートである。
【０１９７】
処理が開始すると（１５０１）、ユーザアプリケーション２０１は、初期化データを書き込む（１５０２）。
【０１９８】
次に、ユーザアプリケーション２０１は、ステップ１５０２において初期化データが書き込まれた領域をソースとして指定して、ストレージアプリケーション２０２に対して、ｆｃｎｔｌ等を利用してコピー指示を行う（１５０３）。
【０１９９】
次に、ストレージアプリケーション２０２は、ステップ１５０３において指定されたコピーを、デバイスドライバ２０３に対して指示する（１５０４）。
【０２００】
次に、デバイスドライバ２０３は、ストレージシステム１１１に対して拡張コピーコマンドを発行する（１５０５）。拡張コピーコマンドを受けたストレージシステム１１１が実行する処理は、図１２において説明した通りである。
【０２０１】
その後、同一の内容を書き込みたい領域のすべてに対して、ステップ１５０３〜１５０６の繰り返し処理を実行し、処理を終了する（１５０７）。
【０２０２】
以上の図１５は、ユーザアプリケーション２０１が初期化データを書き込む場合を例として説明した。しかし、第２の実施の形態と同様、ユーザアプリケーション２０１が通常のコピー処理を実行する場合にも、上記の手順を応用することができる。
【０２０３】
例えば、既に論理ブロック２１９に格納されているオリジナルデータをコピーする場合、ユーザアプリケーション２０１は、ステップ１５０２を実行しない。そして、ユーザアプリケーション２０１は、ステップ１５０３において、オリジナルデータが格納された論理ブロック２１９をコピー元として指定し、いずれかの論理ブロック２１９をコピー先として指定したコピー指示を発行する。デバイスドライバ２０３は、ステップ１５０５において、拡張コピーコマンドを発行する。この拡張コピーコマンドを受けたストレージシステム１１１が実行する処理は、図１２において説明した通りである。
【０２０４】
以上の第３の実施の形態によれば、ユーザアプリケーション２０１がコンテンツを初期化する場合にも、第１及び第２の実施の形態と同様、記憶領域を節約し、さらに、処理を高速化することができる。
【０２０５】
以上の本発明の第１から第３の実施の形態は、ストレージシステムを含む計算機システムに広く適用することができる。
【図面の簡単な説明】
【０２０６】
【図１】本発明の第１の実施の形態の計算機システムのハードウェア構成を示すブロック図である。
【図２】本発明の第１の実施の形態の計算機システムの機能ブロック図である。
【図３】本発明の第１の実施の形態のブロック割り当てテーブルのフォーマットを示す説明図である。
【図４】本発明の第１の実施の形態のブロックリファレンステーブルのフォーマットを示す説明図である。
【図５】本発明の第１の実施の形態のサーバが実行する処理を示すフローチャートである。
【図６】本発明の第１の実施の形態のストレージシステムが実行する構成情報取得コマンド処理を示すフローチャートである。
【図７】本発明の第１の実施の形態のマッピング更新コマンドのフォーマットの説明図である。
【図８】本発明の第１の実施の形態の割り当てテーブル管理部が実行するマッピング更新コマンド処理を示すフローチャートである。
【図９】本発明の第１の実施の形態の、複数のデスティネーションを指定するマッピング更新コマンドのフォーマットの説明図である。
【図１０】本発明の第２の実施の形態のサーバが実行する処理を示すフローチャートである。
【図１１Ａ】従来のコピーコマンドのフォーマットの説明図である。
【図１１Ｂ】本発明の第２の実施の形態の拡張コピーコマンドのフォーマットの説明図である。
【図１２】本発明の第２の実施の形態のマイクロプログラムが実行する拡張コピーコマンド処理を示すフローチャートである。
【図１３】本発明の第２の実施の形態の複数デスティネーション書き込みコマンドの説明図である。
【図１４】本発明の第２の実施の形態の複数デスティネーション拡張コピーコマンドの説明図である。
【図１５】本発明の第３の実施の形態のサーバが実行する処理を示すフローチャートである。
【図１６】本発明の第１の実施の形態のストレージシステムが実行するリードコマンド処理のフローチャートである。
【図１７】本発明の第１の実施の形態のストレージシステムが実行するライトコマンド処理のフローチャートである。
【図１８】本発明の第１の実施の形態のストレージシステムが実行する集約ブロックライト処理のフローチャートである。
【図１９】本発明の第２の実施の形態のマイクロプログラムが実行する複数デスティネーション書き込みコマンド処理を示すフローチャートである。
【図２０】本発明の第２の実施の形態のサーバが複数デスティネーション拡張コピーコマンドを利用する処理を示すフローチャートである。
【図２１】本発明の第２の実施の形態のマイクロプログラムが実行する複数デスティネーション拡張コピーコマンド処理を示すフローチャートである。
【符号の説明】
【０２０７】
１０１  サーバ
１１１  ストレージシステム
１５１  ＣＰＵ
１５２  メモリコントローラ
１５３  サーバ主記憶
１５４  Ｉ／Ｏコントローラ
１５５  ネットワークコントローラ
１５６  ストレージコントローラ
１５７  ディスクコントローラ
１５８  ストレージ装置主記憶
１５９  ディスクドライブ
１６０  外部ネットワーク
２０１  ユーザアプリケーション
２０２  ストレージアプリケーション
２０３  デバイスドライバ
２１１  マイクロプログラム
２１２  コマンド受付部
２１３  Ｉ／Ｏ制御部
２１４  構成情報応答部
２１５  割り当てテーブル管理部
２１６  ブロック割り当てテーブル
２１７  ブロックリファレンステーブル
２１８  ボリューム
【図１】
2008065445.tif 000003
【図２】
2008065445.tif 000004
【図３】
2008065445.tif 000005
【図４】
2008065445.tif 000006
【図５】
2008065445.tif 000007
【図６】
2008065445.tif 000008
【図７】
2008065445.tif 000009
【図８】
2008065445.tif 000010
【図９】
2008065445.tif 000011
【図１０】
2008065445.tif 000012
【図１１Ａ】
2008065445.tif 000013
【図１１Ｂ】
2008065445.tif 000014
【図１２】
2008065445.tif 000015
【図１３】
2008065445.tif 000016
【図１４】
2008065445.tif 000017
【図１５】
2008065445.tif 000018
【図１６】
2008065445.tif 000019
【図１７】
2008065445.tif 000020
【図１８】
2008065445.tif 000021
【図１９】
2008065445.tif 000022
【図２０】
2008065445.tif 000023
【図２１】
2008065445.tif 000024