(57)【特許請求の範囲】
【請求項１】
データの入出力を要求するホストとネットワークを介して接続されたストレージ装置であって、
前記ホストにより読み書きされるデータを格納する記憶部と、
仮想化された論理ボリュームを前記ホストに提供し、前記記憶部により提供される記憶領域をプールとして管理し、前記ホストからのデータの入出力要求に基づいて、前記論理ボリュームに前記プールの記憶領域を割り当てる制御部と、
を備え、
前記制御部は、
前記プールをデータが格納される複数のページが含まれる複数のチャンクに分割し、
前記ホストにより前記論理ボリュームに書き込まれたデータを圧縮して、前記圧縮されたデータが格納された圧縮データ用論理ボリュームに前記複数のチャンクのうち１のチャンクを割り当て、
前記チャンク内の各ページのデータ格納アドレスと、前記圧縮データ用論理ボリュームの論理アドレスとを対応付けてマッピングテーブルで管理し、
前記各ページのデータ格納アドレスは、前記チャンク内のオフセットアドレスに対応して設定され、
前記圧縮データ用論理ボリュームを複製する際に、前記ホストから複製元の前記圧縮データ用論理ボリュームと複製先の圧縮データ用論理ボリュームの情報を含む複製指示を受領して、前記複製元の前記圧縮データ用論理ボリュームに対応する複製先の圧縮データ用論理ボリュームを見つけ出し、これら複製元の前記圧縮データ用論理ボリュームに割り当てられる前記チャンクのページ長と、複製先の圧縮データ用論理ボリュームに割り当てられる前記チャンクのページ長とを同じ長さに設定するとともに、前記マッピングテーブルで管理される複製元の前記圧縮データ用論理ボリューム及び複製先の圧縮データ用論理ボリュームの前記オフセットアドレスを同じアドレスに設定し、続いて、前記複製元の前記圧縮データ用論理ボリュームのチャンクの先頭から前記オフセットアドレス順に圧縮データをキャッシュ領域へ読み出し、その読み出した圧縮データをそのまま前記複製先の圧縮データ用論理ボリュームのキャッシュ領域に複製する
ことを特徴とする、ストレージ装置。
【請求項２】
前記制御部は、
前記圧縮されたデータを格納している１の前記圧縮データ用論理ボリュームに割り当てられた前記チャンクを、該圧縮論理ボリューム以外の圧縮論理ボリュームに割り当てない
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項３】
前記制御部は、
前記チャンクと前記圧縮データ用論理ボリュームとを対応付けてチャンク管理テーブルで管理する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項４】
前記制御部は、
前記圧縮データ用論理ボリュームを複製する際に、
複製元の圧縮データが格納されている前記チャンク内の未使用ページを使用ページと同様に複製する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項５】
前記制御部は、
前記チャンク管理テーブルの各チャンクの識別情報と、該チャンクの情報が格納された前記マッピングテーブルの格納位置情報とを対応付けて管理し、
前記圧縮データ用論理ボリュームを複製する際に、
前記チャンク管理テーブルに前記複製先のデータを格納する前記チャンクの情報が追加され、前記複製元のデータが格納された前記チャンクの格納位置情報を前記マッピングテーブルの格納位置情報とする
ことを特徴とする、請求項３に記載のストレージ装置。
【請求項６】
前記制御部は、
前記圧縮データ用論理ボリュームを複製する際に、
前記複製元の圧縮データ用論理ボリュームと前記複製先の圧縮データ用論理ボリュームのペア状態が保持されて、前記ホストから前記複製元の圧縮データ用論理ボリュームに対するライト要求を受領した場合、
前記ライト要求に対応するライトデータを圧縮し、圧縮されたデータを複製する
ことを特徴とする、請求項１に記載のストレージ装置。
【請求項７】
データの入出力を要求するホストとネットワークを介して接続されたストレージ装置におけるデータ管理方法において、
前記ストレージ装置は、前記ホストにより読み書きされるデータを格納する記憶部と、前記記憶部により提供される記憶領域をプールとして管理し、仮想化された論理ボリュームを前記ホストに提供し、前記記憶部により提供される記憶領域をプールとして管理し、前記ホストからのデータの入出力要求に基づいて、前記論理ボリュームに前記プールの記憶領域を割り当てる制御部と、を備え、
前記制御部が、前記プールをデータが格納される複数のページが含まれる複数のチャンクに分割する第１のステップと、
前記制御部が、前記ホストにより前記論理ボリュームに書き込まれたデータを圧縮して、前記圧縮されたデータが格納された圧縮データ用論理ボリュームに前記複数のチャンクのうち１のチャンクを割り当てる第２のステップ、
前記制御部が、前記チャンク内のオフセットアドレスに対応して設定される前記チャンク内の各ページのデータ格納アドレスと、前記圧縮データ用論理ボリュームの論理アドレスとを対応付けてマッピングテーブルで管理する第３のステップと、
前記制御部が、前記圧縮データ用論理ボリュームを複製する際に、前記ホストから複製元の前記圧縮データ用論理ボリュームと複製先の圧縮データ用論理ボリュームの情報を含む複製指示を受領して、前記複製元の前記圧縮データ用論理ボリュームに対応する複製先の圧縮データ用論理ボリュームを見つけ出し、これら複製元の前記圧縮データ用論理ボリュームに割り当てられる前記チャンクのページ長と、複製先の圧縮データ用論理ボリュームに割り当てられる前記チャンクのページ長とを同じ長さに設定するとともに、前記マッピングテーブルで管理される複製元の前記圧縮データ用論理ボリューム及び複製先の圧縮データ用論理ボリュームの前記オフセットアドレスを同じアドレスに設定し、続いて、前記複製元の前記圧縮データ用論理ボリュームのチャンクの先頭から前記オフセットアドレス順に圧縮データをキャッシュ領域へ読み出し、その読み出した圧縮データをそのまま前記複製先の圧縮データ用論理ボリュームのキャッシュ領域に複製する第３のステップと、
を含むことを特徴とする、データ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置及びデータ管理方法に関し、データを圧縮して格納するストレージ装置及びデータ管理方法に適用して好適なるものである。
【背景技術】
【０００２】
ホスト装置からの大規模データを記憶するシステムとして、ホスト装置からのデータ入出力を制御するストレージ装置が用いられる。ストレージ装置は、アレイ状に配列した多数のドライブをＲＡＩＤ（Redundant Array of Independent Inexpensive Disks）管理する装置である。ストレージ装置に搭載した多数のドライブにより提供される物理的な記憶領域には、少なくとも１つ以上の論理的な領域（以降、当該領域を論理ボリュームと称して説明する場合もある）が形成され、この論理ボリュームがホスト装置に提供される。
【０００３】
ストレージ装置は、ホスト装置からの大規模データを記憶するために、大容量な記憶領域を保持しているが、ホスト装置からのデータは、年々増加の一途をたどっており、ストレージ装置のサイズやコストの問題から、大規模データを効率的に記憶する必要がある。
そこで、データの実質的な性質である情報量を保ったまま、データ量を減らし、サイズの小さい別のデータに置き換える可逆なデータ圧縮方式がストレージ装置に適用されている。
【０００４】
例えば、特許文献１には、データを圧縮し、圧縮されたデータサイズに基づいて最適な格納位置を選択するストレージシステムが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１２−５０４７９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、非圧縮のデータボリューム（非圧縮ＶＯＬ）が圧縮され、圧縮されたデータボリューム（圧縮ＶＯＬ）となった場合、記憶領域の使用容量が減少する。このため、非圧縮ＶＯＬに比べ圧縮ＶＯＬを複製する時間は短くなることが期待される。しかし、特許文献１のストレージシステムでは、記憶領域におけるデータの連続性を保証することができず、圧縮ＶＯＬの複製を高速に行うことができない場合があった。
【０００７】
本発明は以上の点を考慮してなされたもので、圧縮されたデータボリュームを高速に複製することが可能なストレージ装置及びデータ管理方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するために本発明においては、データの入出力を要求するホストとネットワークを介して接続されたストレージ装置であって、前記ホストにより読み書きされるデータを格納する記憶部と、仮想化された論理ボリュームを前記ホストに提供し、前記記憶部により提供される記憶領域をプールとして管理し、前記ホストからのデータの入出力要求に基づいて、前記論理ボリュームに前記プールの記憶領域を割り当てる制御部と、を備え、前記制御部は、前記プールをデータが格納される複数のページが含まれる複数のチャンクに分割し、前記ホストにより前記論理ボリュームに書き込まれたデータを圧縮して、前記圧縮されたデータが格納された圧縮データ用論理ボリュームに前記複数のチャンクのうち１のチャンクを割り当て、前記チャンク内の各ページのデータ格納アドレスと、前記圧縮データ用論理ボリュームの論理アドレスとを対応付けてマッピングテーブルで管理し、前記各ページのデータ格納アドレスは、前記チャンク内のオフセットアドレスに対応して設定され、前記圧縮データ用論理ボリュームを複製する際に、前記ホストから複製元の前記圧縮データ用論理ボリュームと複製先の圧縮データ用論理ボリュームの情報を含む複製指示を受領して、前記複製元の前記圧縮データ用論理ボリュームに対応する複製先の圧縮データ用論理ボリュームを見つけ出し、これら複製元の前記圧縮データ用論理ボリュームに割り当てられる前記チャンクのページ長と、複製先の圧縮データ用論理ボリュームに割り当てられる前記チャンクのページ長とを同じ長さに設定するとともに、前記マッピングテーブルで管理される複製元の前記圧縮データ用論理ボリューム及び複製先の圧縮データ用論理ボリュームの前記オフセットアドレスを同じアドレスに設定し、続いて、前記複製元の前記圧縮データ用論理ボリュームのチャンクの先頭から前記オフセットアドレス順に圧縮データをキャッシュ領域へ読み出し、その読み出した圧縮データをそのまま前記複製先の圧縮データ用論理ボリュームのキャッシュ領域に複製することを特徴とする、ストレージ装置が提供される。
【０００９】
かかる構成によれば、ストレージ装置は、仮想化された論理ボリュームをホストに提供し、記憶部により提供される記憶領域をプールとして管理し、ホストからのデータの入出力要求に基づいて、論理ボリュームにプールの記憶領域を割り当るストレージ装置が提供される。ストレージ装置は、プールをデータが格納される複数のページが含まれる複数のチャンクに分割し、ホストにより論理ボリュームに書き込まれたデータを圧縮して、圧縮されたデータが格納された圧縮データ用論理ボリュームに複数のチャンクのうち一のチャンクを割り当て、圧縮データ用論理ボリュームを複製する際に、複製元の圧縮用論理ボリュームに割り当てられるチャンクのページ長と、複製先の圧縮データ用論理ボリュームに割り当てられるチャンクのページ長とを同じ長さにする。これにより、圧縮データが格納された論理ボリュームの複製の際に、ランダムアクセスによる読み出し、圧縮データの伸長、圧縮ＬＵ用マッピングテーブルの再構築などが必要なくなり、高速な複製が可能となる。
【発明の効果】
【００１０】
本発明によれば、圧縮されたデータボリュームを高速に複製することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る計算機システムのハードウェア構成を示すブロック図である。
【図２】同実施形態にかかる管理端末の構成を示すブロック図である。
【図３】同実施形態にかかるＬＵ管理画面の一例を示す概念図である。
【図４】同実施形態にかかる初期圧縮処理を説明する概念図である。
【図５】同実施形態にかかる圧縮ＬＵ用マッピングテーブルの内容を示す図表である。
【図６】同実施形態にかかる空き領域管理用ビットマップの内容を示す概念図である。
【図７】同実施形態にかかるチャンク管理テーブルの内容を示す図表である。
【図８】同実施形態にかかる初期圧縮手順を示すフローチャートである。
【図９】同実施形態にかかるデータリード処理を説明する概念図である。
【図１０】同実施形態にかかるデータリード処理を示すフローチャートである。
【図１１】同実施形態にかかるデータライト処理を説明する概念図である。
【図１２Ａ】同実施形態にかかるデータライト処理を示すフローチャートである。
【図１２Ｂ】同実施形態にかかる圧縮処理を示すフローチャートである。
【図１３】同実施形態にかかる圧縮Ｐ−ＶＯＬの複製処理を説明した概念図である。
【図１４】同実施形態にかかる圧縮Ｐ−ＶＯＬの複製処理を示すフローチャートである。
【図１５】同実施形態にかかるＰａｉｒｅｄ状態の場合のライト処理について説明する概念図である。
【図１６Ａ】同実施形態にかかるＰａｉｒｅｄ状態の場合のライト処理を示すフローチャートである。
【図１６Ｂ】同実施形態にかかるＰａｉｒｅｄ状態の場合の圧縮処理を示すフローチャートである。
【図１７】従来技術の圧縮データの複製処理について説明する概念図である。
【発明を実施するための形態】
【００１２】
以下図面について、本発明の一実施の形態を詳述する。
【００１３】
（１）計算機システムの構成
図１は、本発明の第１の実施形態に係る計算機システムのハードウェア構成を示すブロック図である。図１に示すように、例えばＳＡＮ（Storage  Area  Network）などのネットワーク１０３に、複数のホスト１０１と、ストレージ装置１１０が接続されている。また、例えばＬＡＮ（Local  Area  Network）などの管理ネットワーク１０４に、管理端末１０２と、ストレージ装置１１０が接続されている。
【００１４】
ホスト１０１は、ストレージ装置１１０にＩ／Ｏ要求（ライト要求又はリード要求）を発行する計算機である。管理端末１０２は、ストレージ装置１１０を管理するための端末である。
【００１５】
（２）ストレージ装置の構成
ストレージ装置１１０は、コントローラ１２０と記憶装置群１１２を備えている。記憶装置群１１２は、複数のＨＤＤ１１１で構成されている。なお、ＨＤＤ１１１に代えて、他種の物理記憶装置、例えばフラッシュメモリデバイスなどが採用されても良い。
【００１６】
コントローラ１２０は、ホスト１０１から発行されたＩ／Ｏ要求を受け付け、そのＩ／Ｏ要求の処理に伴い、何れか一つ以上のＨＤＤ１１１にアクセスする。コントローラ１２０は、複数のホストＩＦ１２１と、管理ＩＦ１２２と、ＣＰＵ１２３と、主メモリ１２４と、キャッシュメモリ１２５と、不揮発性メモリ１３０と、ＨＤＤ  ＩＦ１２６とを備える。また、それらは全て内部バス１２７によって接続される。
【００１７】
ホストＩＦ１２１は、ＳＡＮ１０３を通じてホスト１０１等の外部の装置と通信するためのインタフェース回路である。ホストＩＦ１２１が、ホスト１０１からのＩ／Ｏ要求を受け付ける。管理ＩＦ１２２は、管理ネットワーク１０４を通じて管理端末１０２等の外部の装置と通信するためのインタフェース回路である。ＨＤＤ  ＩＦ１２６は、ＨＤＤ１１１と通信するためのインタフェース回路である。
【００１８】
キャッシュメモリ１２５は、例えば揮発性のメモリである。このキャッシュメモリ１２５には、ホスト１０１から受け付けたライト要求に応じたライト対象のデータ、及び、ホスト１０１から受け付けたリード要求に応じたリード対象のデータが一時的に記憶される。
【００１９】
不揮発性メモリ１３０には、管理端末通信プログラム１３１、プール管理プログラム１３２、Ｉ／Ｏ処理プログラム１３３、ＬＵ複製プログラム１３４、圧縮伸長プログラム１３５、圧縮ＬＵ用マッピングテーブル１３６、空き領域管理用ビットマップ１３７及びチャンク管理テーブル１３８が格納されている。不揮発性メモリ１３０に記憶されているコンピュータプログラムが主メモリ１２４にロードされ、ＣＰＵ１２４によってそれらのプログラムが実行される。
【００２０】
管理端末通信プログラム１３１は、管理端末１０２（具体的には後述する管理端末１０２のストレージ通信プログラム２１２）と通信するためのプログラムである。プール管理プログラム１３２は、複数ＨＤＤの仮想化などプール管理に関する処理を行うためのプログラムである。Ｉ／Ｏ処理プログラム１３３は、プールからのデータのリードライトなどのＩ／Ｏに関する処理を行うためのプログラムである。ＬＵ複製プログラム１３４は、管理端末１０２からの指示により、データボリュームであるＬＵ（Logical  Unit）を複製するプログラムである。圧縮伸長プログラム１３５は、入力されたデータ要素を圧縮又は伸張する。なお、圧縮及び伸張の少なくとも一方が、ハードウェア回路によって実現されていてもよい。各種プログラム及び各種テーブルについては、後で詳細に説明する。また、以下の説明において、コンピュータプログラムが行う処理は、実際には、そのコンピュータプログラムを実行するＣＰＵ１２３によって行われる。
【００２１】
（３）管理端末の構成
図２は、管理端末１０２の構成を示すブロック図である。
管理端末１０２は、計算機であり、図２に示すように、例えば、入力装置２０１、出力装置２０２、ＣＰＵ２０３、主メモリ２０４、管理ＩＦ２０５及びＨＤＤ２１０を備えている。これらは、それぞれ、内部バス２２０に接続されている。
【００２２】
入力装置２０１は、ポインティングデバイス（例えばマウス）やキーボード等である。また、出力装置２０２は、例えば表示装置である。
【００２３】
ＨＤＤ２１０（他種の記憶装置でも良い）には、ユーザインタフェース（Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）制御プログラム（以下、「ＵＩ制御プログラム」という）２１１及びストレージ通信プログラム２１２が格納されている。これらのコンピュータプログラムは、主メモリ２０４にロードされ、ロードされたプログラムがＣＰＵ２０３によって実行される。
【００２４】
管理ＩＦ２０５は、管理ネットワーク１０４を通じてストレージ装置１１０等の外部装置と通信するためのインタフェース回路である。ＵＩ制御プログラム２１１は、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を出力装置２０２に表示するためのプログラムである。ストレージ通信プログラム２１２は、ストレージ装置１１０と通信するためのコンピュータプログラムである。ＵＩ制御プログラム２１１及びストレージ通信プログラム２１２については、後で詳細に説明する。
【００２５】
図３は、ＬＵ管理画面の一例を示す概念図である。
ＬＵ管理画面３０１は、ＵＩ制御プログラム２１２によって表示されるＧＵＩである。ＬＵ管理画面３０１には、ＬＵ＃（ＬＵ番号）の入力欄３０２と、そのＬＵの容量の入力欄３０３と、ＬＵに格納されるデータを圧縮するか否かを選択する圧縮選択ボタン３０４が設けられている。ユーザは、図２で示した入力装置２０１を用いて、ＬＵ＃入力欄３０２に、所望の論理ボリュームの番号（ＬＵ番号）を入力し、そのＬＵの容量をＬＵ容量入力欄３０３に入力する。さらに、ユーザは、「圧縮ｏｎ」或いは「圧縮ｏｆｆ」の圧縮選択ボタン３０４を選択して押下する。
【００２６】
ユーザによって「ＯＫ」ボタンが押下されると、ストレージ通信プログラム２１２が、ＬＵ＃入力欄３０２に入力されたＬＵ番号と、ＬＵ容量入力欄３０３に入力された容量を表す情報と、指定された圧縮選択ボタン３０４に対応する情報（圧縮ｏｎ又は圧縮ｏｆｆ）をストレージ装置１１０に通知する。管理端末通信プログラム１３１が、それらの情報を受け、プール管理プログラム１３２がユーザに指定されたＬＵが使用するストレージ領域を割り当てる。
【００２７】
一方、ＬＵ管理画面３０１において、ユーザがＬＵ＃入力欄３０２に既に生成済みのＬＵ＃を指定した場合は、ＬＵ容量入力欄３０３にはユーザからの入力を受け付けない状態とし、現在のＬＵ使用量が表示されるとしてもよい。さらに、圧縮選択ボタン３０４も現在の選択状態（圧縮ｏｎ又は圧縮ｏｆｆ）が選択された状態で表示されてもよい。
【００２８】
例えば、圧縮ｏｆｆ状態のＬＵに対して圧縮ｏｎに選択し直すために「ＯＫ」ボタンが押されるとする。この場合、ストレージ通信プログラム２１２が、入力された情報をストレージ装置１１０に通知する。そして、ストレージ装置１１０は、非圧縮データを格納していたＬＵに対して「圧縮ｏｎ」が指定されると、既に格納済みの非圧縮データを圧縮し、圧縮データを再度プールに格納する。
【００２９】
具体的には、管理端末通信プログラム１３１が、管理端末１０２からの情報を受け、プール管理プログラム１３２が圧縮データを格納するためのストレージ領域を割り当てる。Ｉ／Ｏ処理プログラム１３３が管理端末１０２から指定されたＬＵ番号の非圧縮データを読み出し、圧縮伸長プログラム１３５がデータを圧縮して圧縮データを生成し、再びＩ／Ｏ処理プログラム１３３がプール管理プログラム１３２の割り当てた圧縮データ格納用領域（圧縮ＬＵ用チャンク）に格納する。全ての非圧縮データに対し上記の処理を繰り返し実行した後、非圧縮データが格納されていた領域は空になる。したがって、空になった領域はプール管理プログラム１３２によって未使用と認識され、ＬＵ管理画面３０１に表示されるＬＵ使用量には、圧縮データ格納領域の使用量が表示される。
【００３０】
また、圧縮ｏｎ状態のＬＵに対して圧縮ｏｆｆに選択し直すために「ＯＫ」ボタンが押下されるとする。この場合、ストレージ通信プログラム２１２が、入力された情報をストレージ装置１１０に通知する。ストレージ装置１１０は、圧縮データを格納していた圧縮ＬＵに対して「圧縮ｏｆｆ」が指定されると、既に格納済みの圧縮データを伸長し、伸長データを再度プールに格納する。
【００３１】
具体的には、管理端末通信プログラム１３１が、管理端末１０２からの情報を受け、プール管理プログラム１３２が非圧縮データを格納するためのストレージ領域を割り当てる。Ｉ／Ｏ処理プログラム１３３が、管理端末１０２から指定されたＬＵ番号の圧縮データを読み出し、圧縮伸長プログラム１３５がデータを伸長して非圧縮データを生成し、再びＩ／Ｏ処理プログラム１３３がプール管理プログラム１３２の割り当てた非圧縮データ格納用領域（非圧縮ＬＵ用チャンク）に格納する。全ての圧縮データに対し、上記の処理を繰り返し実行後、圧縮データが格納されていた領域は空になる。したがって、空になった領域はプール管理プログラム１３２によって未使用と認識され、ＬＵ管理画面３０１に表示されるＬＵ使用量には、非圧縮データ格納領域の使用量が表示される。
【００３２】
（４）圧縮処理の概要
図４は、初期圧縮処理を説明する概念図である。具体的には、図４は、図３のＬＵ管理画面３０１で非圧縮データが格納されたＬＵ（非圧縮ＬＵ４０１）に対して、「圧縮ｏｎ」が指定された場合の、ストレージ装置１１０内の初期圧縮処理の概念を示している。
【００３３】
非圧縮ＬＵ４０１は、非圧縮データが格納されたＬＵである。圧縮ＬＵ４０２は、非圧縮ＬＵ４０１内に格納されていた非圧縮データを圧縮し、圧縮データを格納したＬＵである。非圧縮ＬＵ４０１及び圧縮ＬＵ４０２を識別するＬＵ番号は同一でも良いし、異なるＬＵ番号でも良い。つまり、非圧縮ＬＵ４０１と圧縮ＬＵ４０２が同じＬＵ番号であるということは、初期圧縮処理が終われば、非圧縮ＬＵ４０１のＬＵ番号が圧縮ＬＵ４０２に引き継がれることを意味する。一方、非圧縮ＬＵ４０１と圧縮ＬＵ４０２が異なるＬＵ番号である場合には、圧縮ＬＵ４０２のＬＵ番号が管理端末１０２により指定される。
【００３４】
プール４０３は、非圧縮ＬＵ４０１と圧縮ＬＵ４０２にライトされた実データを格納するプール領域である。プール４０３は、容量を動的に少量ずつ割り当てる、いわゆるシンプロビジョニングボリュームであってもよい。また、プール４０３は複数のチャンクに分割され使用される。チャンクにはそれぞれページ長が設定され、チャンクへのＩ／Ｏ処理はページ長を最小単位として処理される。
【００３５】
非圧縮ＬＵ用チャンク４１０は、非圧縮ＬＵ４０１へのライトデータを格納する領域である。非圧縮ＬＵ用チャンク４１０には、複数の非圧縮ＬＵ４０１に対するライトデータを格納することができる。
【００３６】
圧縮ＬＵ用チャンク４１１は、圧縮ＬＵ４０２へのライトデータを格納する領域である。また、管理端末１０２から非圧縮ＬＵ４０１の圧縮を指示された場合に、非圧縮ＬＵ用チャンク４１０に格納されたデータを圧縮し、その圧縮データを格納する領域である。圧縮ＬＵ用チャンク４１１は、非圧縮ＬＵ用チャンク４１０とは異なり、１つの圧縮ＬＵ用チャンク４１１には、１つの圧縮ＬＵ４０２に対するライトデータのみが格納され、複数の圧縮ＬＵ４０２のライトデータは格納されない。このように、圧縮ＬＵ用チャンクには１種類の圧縮ＬＵのデータのみが格納される。これにより、圧縮ＬＵを複製する際に、チャンクをシーケンシャルに複製することができるため、複製に要する速度を向上させることが可能となる。
【００３７】
例えば、管理端末１０２を介して、非圧縮ＬＵ４０１に「圧縮ｏｎ」が指定されると、ストレージ装置１１０は非圧縮ＬＵ４０１の実データが格納されている非圧縮ＬＵ用チャンク４１０から非圧縮データをキャッシュメモリ１２５に読み出す。そして、ストレージ装置１１０は、読み出した非圧縮データの圧縮処理を行い、圧縮されたデータを圧縮ＬＵ用チャンク４１１に格納する。また、ストレージ装置１１０は、ホスト１０１により圧縮ＬＵ４０２から圧縮ＬＵ用チャンク４１１内のデータにアクセス可能とするために、各種テーブルの作成または更新を行う。具体的に、ストレージ装置１１０は、圧縮ＬＵ４０２の論理アドレスと圧縮ＬＵ用チャンク４１１の格納アドレスを対応付けた圧縮ＬＵ用マッピングテーブル（以下の図５で説明）、空き領域管理用ビットマップ（以下の図６で説明）を作成したり更新したりする。また、ストレージ装置１１０は、チャンク管理テーブル（以下の図７で説明）を更新する。
【００３８】
（５）各種テーブルの内容
図５は、圧縮ＬＵ用マッピングテーブルの内容を示す図表である。圧縮ＬＵ用マッピングテーブル１３６は、圧縮ＬＵ４０２の論理アドレスと圧縮ＬＵ用チャンク４１１の格納アドレスとの対応関係を管理するテーブルである。図５に示すように、圧縮ＬＵ用マッピングテーブル１３６は、論理アドレス欄１３６１、圧縮フラグ欄１３６２及び格納アドレス欄１３６３から構成される。
【００３９】
論理アドレス欄１３６１には、圧縮ＬＵ４０２の論理アドレスが格納される。ホスト１０１はこの論理アドレスを用いてストレージ装置１１０に対してＩ／Ｏ処理を依頼する。
【００４０】
圧縮フラグ欄１３６２には、当該データが圧縮されているか否かを示す情報が格納される。データが圧縮されていない場合は０が格納され、データが圧縮されている場合は１が格納される。
【００４１】
格納アドレス欄１３６３には、圧縮ＬＵ用チャンク４１１内のオフセットアドレスが格納される。格納アドレス欄１３６３に圧縮ＬＵ用チャンク４１１のオフセットアドレスが格納されることによって、圧縮ＬＵ４０２を複製した際に、圧縮ＬＵ用マッピングテーブルを共用できるため、メモリ消費量が抑えられる。
【００４２】
圧縮対象データのサイズは固定長であるのに対し、圧縮後のデータは可変長である。したがって、論理アドレス欄１３６１には、固定長の圧縮対象データサイズ毎にテーブルにエントリが追加される。圧縮対象データサイズの単位は非圧縮ＬＵ用チャンク４１０のページサイズと同一でも良いし、該ページサイズの倍数でも良い。
【００４３】
一方、格納アドレス欄１３６３には、圧縮ＬＵ用チャンク４１１のページサイズ単位でテーブルに追加される。したがって、例えば圧縮対象データサイズが６４ｋＢであり、圧縮ＬＵ用チャンク４１１のページサイズが１６ｋＢであった場合、圧縮ＬＵ用マッピングテーブル１３６の論理アドレス欄１３６１の１エントリに対し、格納アドレス欄１３６３は４エントリ保持されることになる。
【００４４】
また、圧縮後のデータは可変長であるため、格納アドレス欄１３６３全てに情報が格納されるとは限らない。例えば、圧縮効果が大きい場合には、圧縮ＬＵ用チャンク４１１のページ使用数が少ないため、格納アドレス欄１３６３に保持される情報も少ない。格納アドレス欄１３６３の未使用エントリ５１０にはＮＵＬＬが保持される。
【００４５】
一方、圧縮効果が小さい場合には、圧縮ＬＵ用チャンク４１１のページ使用数が多くなると、格納アドレス欄１３６３の全てに情報が格納される。図５のエントリ５１１に示すように、圧縮効果がない場合には、非圧縮のまま圧縮ＬＵ用チャンク４１１にデータが書き込まれる。圧縮フラグ欄１３６２には、非圧縮データなのか圧縮データなのかを示す情報が格納される。圧縮フラグ欄１３６２を参照することにより、データが圧縮されているのか否かを判断することができる。
【００４６】
図６は、空き領域管理用ビットマップの内容を示す概念図である。空き領域管理用ビットマップ１３７は、圧縮ＬＵ用チャンク１つに対し１つ存在する。空き領域管理用ビットマップ１３７はチャンク内のページ使用状態を記憶しておくビットマップである。図６に示すように、空き領域管理用ビットマップには、ページを使用している場合は１、空いている場合は０が格納される。
【００４７】
図４で示したように、非圧縮ＬＵから圧縮ＬＵへの初期圧縮が実行される場合には、圧縮ＬＵ用チャンク４１１が新たに確保されるため、圧縮した順番に連続的に格納される。したがって、空き領域管理用ビットマップ１３７は先頭から１が連続的に書き込まれるが、圧縮ＬＵ４０２に対してライト処理を繰り返すと、既格納データの更新により、再圧縮後のデータサイズの増減が発生する。
【００４８】
再圧縮後のサイズが大きくなった場合には、空き領域管理用ビットマップ１３７から０を検出し、対応する未使用ページに増加分のデータを格納し、空き領域管理用ビットマップ１３７の当該エントリを１に更新する。また、再圧縮後のサイズが小さくなり、圧縮ＬＵ用チャンク４１１に未使用ページが発生した場合には、未使用ページに対応する空き領域管理用ビットマップ１３７のエントリを１から０に更新する。
【００４９】
図７は、チャンク管理テーブルの内容を示す図表である。チャンク管理テーブル１３８は、チャンクに関する情報を管理するテーブルである。チャンク管理テーブル１３８は、チャンク番号欄１３８１、ページサイズ欄１３８２、ＬＵ番号欄１３８３、圧縮ＬＵ用マッピングテーブルアドレス欄１３８４及び空き領域管理用ビットマップアドレス欄１３８５から構成される。
【００５０】
チャンク番号欄１３８１には、対象チャンクの識別子を表す情報が格納される。ページサイズ欄１３８２には、当該チャンクのページサイズが格納される。例えば、非圧縮ＬＵ用チャンク４１０の場合には、ページサイズ欄１３８２に６４ｋＢを示す情報が格納され、圧縮ＬＵ用チャンク４１１の場合には、ページサイズ欄１３８２には１６ｋＢを示す情報が格納される。
【００５１】
ＬＵ番号欄１３８３には、チャンク内のデータに対応したＬＵ番号が格納される。ＬＵ番号欄１３８３は、圧縮ＬＵ用チャンクである場合にのみ追加される情報である。非圧縮ＬＵ用チャンクの場合、上記したように１つのチャンク内に複数ＬＵのデータが格納されるため、圧縮ＬＵチャンクのように、１つのチャンクに対して１つのＬＵが特定されない。したがって、非圧縮ＬＵチャンクに対応するＬＵ番号は空欄を示すＮＵＬＬが格納される。
【００５２】
圧縮ＬＵ用マッピングテーブルアドレス欄１３８４には、当該チャンクに対応する圧縮ＬＵ用マッピングテーブルが格納されているアドレスが格納される。また、空き領域管理用ビットマップアドレス欄１３８５には、当該チャンクに対応する空き領域管理用ビットマップ１３７が格納されているアドレスが格納される。圧縮ＬＵ用マッピングテーブルアドレス１３８４及び空き領域管理用ビットマップアドレス１３８５は、当該チャンクが圧縮ＬＵ用チャンクである場合にのみ追加される情報である。これは、非圧縮ＬＵ用チャンクに対応する圧縮ＬＵ用マッピングテーブル１３６や空き領域管理用ビットマップ１３７は存在しないためである。
【００５３】
（６）圧縮処理の詳細
（６−１）初期圧縮処理の詳細
図８は、管理端末１０２から非圧縮ＬＵ４０１に対して圧縮が指示された場合の、初期圧縮手順を示すフローチャートである。
【００５４】
まず、ストレージ装置１１０は、管理端末１０２から初期圧縮指示を受領する（Ｓ１０１）。そして、ストレージ装置１１０のプール管理プログラム１３２は、圧縮ＬＵ用チャンクに空きがあるか否かを判定する（Ｓ１０２）。
【００５５】
ステップＳ１０２において、圧縮ＬＵチャンクに空きがないと判定された場合には、プール管理プログラム１３２は、圧縮ＬＵ用チャンクを確保して、チャンク管理テーブル１３８を更新する（Ｓ１０３）。例えば、管理端末１０２から初期圧縮指示があった直後は、圧縮ＬＵ用チャンクが生成されていない状態のため、圧縮ＬＵ用チャンクを確保する。圧縮ＬＵ用チャンクが使い切られて、圧縮ＬＵチャンクに空きがない場合にも圧縮ＬＵ用チャンクを新たに確保する。また、圧縮ＬＵ用チャンクを新たに確保した場合は、プール管理プログラム１３２は、チャンク管理テーブル１３８に確保したチャンク情報を追加する。
【００５６】
一方、圧縮ＬＵ用チャンクに少なくとも圧縮対象データサイズが格納できると判定された場合には、プール管理プログラム１３２は、ステップＳ１０４の処理を実行する。
【００５７】
そして、ストレージ装置１１０のＩ／Ｏ処理プログラム１３３は、非圧縮ＬＵの先頭アドレスから少なくとも圧縮対象データサイズ分をキャッシュメモリ１２５へリードする（Ｓ１０４）。
【００５８】
そして、ストレージ装置１１０の圧縮伸長プログラム１３５は、ステップＳ１０４でリードされたキャッシュメモリ１２５上の非圧縮データを圧縮する（Ｓ１０５）。そして、圧縮伸長プログラム１３５は、ステップＳ１０５において実行された圧縮後のデータサイズから、圧縮効果があるか否かを判定する（Ｓ１０６）。圧縮伸長プログラム１３５は、圧縮後のデータについて圧縮効果があると判定した場合には、以降の処理は圧縮データを対象として実行する。一方、圧縮効果がないと判定した場合には、圧縮データを破棄し、以降の処理は非圧縮データを対象として実行する。
【００５９】
そして、ストレージ装置１１０のプール管理プログラム１３２は、空き領域管理用ビットマップ１３７から圧縮ＬＵ用チャンク内の格納位置を特定する（Ｓ１０７）。続いて、プール管理プログラム１３２は、直前に処理したデータに対するエントリを圧縮ＬＵ用マッピングテーブル１３６に追加する。また、空き領域管理用ビットマップ１３７を更新する（Ｓ１０８）。
【００６０】
そして、ストレージ装置１１０のＩ／Ｏ処理プログラム１３３は、データをステップＳ１０７において特定した圧縮ＬＵ用チャンクに格納する（Ｓ１０９）。
【００６１】
そして、ストレージ装置１１０のプール管理プログラム１３２は、非圧縮ＬＵに圧縮対象データが残っているか否かを判定する（Ｓ１１０）。ステップＳ１１０において、非圧縮ＬＵに圧縮対象データが残っていると判定された場合には、プール管理プログラム１３２は、ステップＳ１０２以降の処理を繰り返す。一方、ステップＳ１１０において、非圧縮ＬＵに圧縮対象データが残っていないと判定された場合には、プール管理プログラム１３２は、非圧縮ＬＵ用チャンクが解放できる場合は解放し、チャンク管理テーブル１３８から該当する非圧縮ＬＵ用チャンクのエントリを削除する（Ｓ１１１）。
【００６２】
（６−２）リード処理の詳細
図９は、圧縮ＬＵからのデータリード処理を説明する概念図である。図９に示すように、ホスト１０１から圧縮ＬＵ４０２のリード要求を受領したストレージ装置１１０は、圧縮ＬＵ用マッピングテーブル１３６（図示せず）を参照し、圧縮ＬＵ用チャンク４１１から当該データをキャッシュメモリ１２５へリードする。そして、キャッシュメモリ１２５からリードしたデータが圧縮されたデータである場合は、伸長処理を実行し、伸長データからリード範囲のみをホスト１０１へ転送する。
【００６３】
図１０は、圧縮ＬＵ４０２からのデータリード処理を示すフローチャートである。図１０に示すように、ストレージ装置１１０は、ホスト１０１からリード要求を受領する（Ｓ２０１）。そして、ストレージ装置１１０のＩ／Ｏ処理プログラム１３３は、リードデータ（未圧縮データ）に対するキャッシュヒット・ミス判定を実施し、キャッシュメモリ１２５上にリードデータが存在するか否かを判定する（Ｓ２０２）。
【００６４】
ステップＳ２０２において、キャッシュヒットしたと判定された場合、すなわち、キャッシュメモリ１２５上にリードデータが存在している場合には、Ｉ／Ｏ処理プログラム１３３は、ステップＳ２０６の処理を実行する。
【００６５】
一方、ステップＳ２０２において、キャッシュミスしたと判定された場合、すなわち、キャッシュメモリ１２５上にリードデータが存在しないと判定された場合には、圧縮データに対するキャッシュヒット・ミス判定を実施する（Ｓ２０３）。具体的に、Ｉ／Ｏ処理プログラム１３３は、圧縮ＬＵ用マッピングテーブル（図示せず）を参照し、圧縮データの格納アドレスを取得し、対応するキャッシュメモリアドレスに圧縮データがあるかを判定する。
【００６６】
ステップＳ２０３において、キャッシュヒットしたと判定された場合、すなわち、キャッシュメモリ１２５上にリードデータに対応する圧縮データが存在している場合には、Ｉ／Ｏ処理プログラム１３３は、ステップＳ２０５の処理を実行する。一方、ステップＳ２０３において、キャッシュミスしたと判定された場合、すなわち、キャッシュメモリ１２５上にリードデータに対応する圧縮データが存在しない場合には、Ｉ／Ｏ処理プログラム１３３は、圧縮ＬＵ用マッピングテーブルを参照し、圧縮ＬＵ用チャンクからデータをキャッシュメモリ１２５へリードする（Ｓ２０４）。
【００６７】
続いて、圧縮伸長プログラム１３５は、ステップＳ２０４で読み出されたデータが圧縮されている場合には伸長処理を実行し(Ｓ２０５)、ステップＳ２０４において読み出されたデータが非圧縮である場合には、伸長処理を行わない。
【００６８】
そして、Ｉ／Ｏ処理プログラム１３３は、キャッシュメモリ１２５上の非圧縮データからリード範囲を特定し、ホストへ転送して（Ｓ２０６）リード処理を終了する。
【００６９】
（６−３）ライト処理の詳細
図１１は、圧縮ＬＵ４０２へのデータライト処理を説明する概念図である。図１１に示すように、ホスト１０１から圧縮ＬＵ４０２へのライト要求を受領したストレージ装置１１０は、即座にライトデータをキャッシュメモリ１２５へ転送する。そして、ストレージ装置１１０は、ホスト１０１へはライト処理が完了したことを意味するステータス応答を送信する。
【００７０】
ストレージ装置１１０は、ホスト１０１からのＩ／Ｏ処理とは非同期に圧縮処理を開始する。圧縮処理の開始契機はキャッシュメモリ１２５上のダーティデータ（ＨＤＤに書き込まれていないデータ）が閾値以上になった場合や、ＣＰＵ負荷の低い場合（ホストからのＩ／Ｏ要求が少ない場合）等である。
【００７１】
圧縮処理が開始されると、Ｉ／Ｏ処理プログラム１３３が圧縮データの補完処理を行う。Ｉ／Ｏ処理プログラム１３３による圧縮データ補完処理は、圧縮対象データのサイズを一定のサイズに揃える処理である。非圧縮データを圧縮する場合、上記の通り、圧縮対象データサイズ単位で圧縮するが、ホストからのライトサイズは圧縮対象データサイズとは無関係であるため、圧縮対象データサイズと比較して小さいサイズで上書きされる可能性もある。上書きするデータと既格納データとの整合性を取るためには、圧縮して格納されている圧縮データを一旦読み出し、伸長して、ホストからライトされた範囲のみ伸長データに上書きする。
【００７２】
補完処理によって圧縮対象データサイズが揃った非圧縮データを圧縮し、再び圧縮ＬＵ用チャンク４１１に格納する。このとき、圧縮後のデータが既格納データのサイズから増減する可能性がある。圧縮後のデータが既格納データより大きく、圧縮ＬＵ用チャンクのページ使用量が増えた場合、Ｉ／Ｏ処理プログラム１３３は、空き領域管理用ビットマップ１３７を参照し、空きページを確保する。そして、確保したページに圧縮データの増加分を格納し、空き領域管理用ビットマップ１３７の当該ページを１に更新する。また、圧縮ＬＵ用マッピングテーブル１３６を更新する。
【００７３】
図１２Ａは、圧縮ＬＵ４０２へのデータライト処理を示すフローチャートである。図１２Ａに示すように、まず、ストレージ装置１１０は、ホスト１０１からライト要求を受領する（Ｓ３０１）。そして、Ｉ／Ｏ処理プログラム１３３は、ライトデータをキャッシュメモリ１２５に転送して（Ｓ３０２）、ホスト１０１へライト完了を表すステータス応答を送信する（Ｓ３０３）。
【００７４】
図１２Ｂは、圧縮処理を示すフローチャートである。ストレージ装置１１０は、ホスト１０１のＩ／Ｏ要求に対するライト処理とは非同期に圧縮処理を開始する。圧縮処理が開始されると、まず、圧縮伸長プログラム１３５は、キャッシュメモリ１２５上に圧縮対象データがあるか否かを判定する（Ｓ３１０）。圧縮対象データとは、ホスト１０１からキャッシュメモリ１２５へ転送され、まだＨＤＤ１１１に書き込まれていないデータ（ダーティデータ）を意味する。
【００７５】
ステップＳ３１０において、圧縮対象データがないと判定された場合には、圧縮伸長プログラム１３５は、処理を終了する。
【００７６】
ステップ３１０において、圧縮対象データがあると判定された場合には、圧縮ＬＵ用チャンク４１１のリード処理によって、圧縮データ補完処理を実行する（Ｓ３１１）。ステップＳ３１１における圧縮データの補完処理は、図１０に示すステップＳ２０２〜ステップＳ２０５の処理（処理Ａ）と同様である。すなわち、圧縮対象データの近傍アドレスであり、圧縮対象データサイズの不足部分に対して、圧縮ＬＵ用チャンク４１１からのリード処理、圧縮データの伸長処理を実行する。
【００７７】
そして、圧縮伸長プログラム１３５は、ステップＳ３１１において伸長したデータに更新データを上書きする（Ｓ３１２）。
【００７８】
そして、圧縮伸長プログラム１３５は、ステップＳ３１２において上書きしたデータを再度圧縮し、圧縮ＬＵ用チャンク４１１に格納する（Ｓ３１３）。圧縮ＬＵ用チャンクへのライト処理は、図８のステップＳ１０５〜Ｓ１０９の処理（処理Ｂ）と同様である。すなわち、圧縮伸長プログラム１３５は、圧縮処理を実行し、場合によっては空き領域管理用ビットマップ１３７を参照して、格納領域を特定し、圧縮ＬＵ用チャンクに圧縮データを格納する。また、圧縮ＬＵ用マッピングテーブル１３６や空き領域管理用ビットマップ１３７を更新する。
【００７９】
（７）複製処理の詳細
次に、ＬＵの複製処理について説明する。非圧縮ＬＵの複製処理は、管理端末１０２からストレージ装置１１０に対して複製元ＬＵ番号（Ｐ−ＶＯＬ）及び複製先ＬＵ番号（Ｓ−ＶＯＬ（Ｓｅｃｏｎｄａｒｙ  Ｖｏｌｕｍｅ））を指定した複製指示が送信される。複製指示を受けたストレージ装置１１０は、複製元となるＰ−ＶＯＬの論理アドレス先頭からシーケンシャルにキャッシュメモリ１２５へデータを読み出し、キャッシュ上でＳ−ＶＯＬ用領域にコピーし、複製先となるＳ−ＶＯＬの格納先へ格納する。
【００８０】
（７−１）従来の複製処理の詳細
ここで、図１７を参照して、特許文献１に開示されている圧縮データの複製処理について説明する。図１７は、従来のストレージ装置１７００で圧縮データが格納されたＬＵの複製を実行した場合の概念図を示している。圧縮Ｐ−ＶＯＬ１７０１は、複製元のＬＵを示す。また、圧縮Ｐ−ＶＯＬ１７０１に格納されているデータは圧縮データである。圧縮Ｓ−ＶＯＬ１７０２は複製先のＬＵを示す。圧縮Ｐ−ＶＯＬ１７０１から圧縮Ｓ−ＶＯＬ１７０２への複製が行われた場合、圧縮Ｓ−ＶＯＬ１７０２には圧縮されたデータが格納される。
【００８１】
圧縮ＬＵ用チャンク１７０３は圧縮データを格納するチャンクである。特許文献１では、圧縮後のデータサイズに応じて最適なチャンクを選択するため、２つのＬＵのデータが同じチャンクに格納される場合がある。
【００８２】
ストレージ装置１７００は、管理端末１０２から圧縮Ｐ−ＶＯＬ１７０１と圧縮Ｓ−ＶＯＬ１７０２が指定された複製指示を受けると、圧縮ＬＵ用マッピングテーブル（図示せず）を参照して、圧縮Ｐ−ＶＯＬ１７０１の論理アドレス先頭から圧縮データをキャッシュメモリ１２５に読み出す。圧縮データは複数チャンクに離散的に格納されているため、圧縮Ｐ−ＶＯＬ１７０１の論理アドレス順に読み出しても、物理的にはランダムアクセス読み出しとなる。
【００８３】
また、特許文献１では、圧縮データを複製する仕組みを備えていないため、読み出した圧縮データを伸長してから複製する必要がある。さらに、複製したデータを再度圧縮して、圧縮Ｓ−ＶＯＬ１７０２の格納データとする必要がある。また、圧縮ＬＵ用マッピングテーブル（図示せず）は圧縮Ｓ−ＶＯＬ用に再構築する必要がある。
【００８４】
以上のように、特許文献１に開示されているストレージ装置１７００で圧縮Ｐ−ＶＯＬ１７０１の複製を行うと、ランダムアクセス読み出し、伸長処理、圧縮ＬＵ用マッピングテーブルの再構築等が発生し、圧縮されてデータサイズが小さくなっているにもかかわらず、非圧縮ＬＵより複製時間が長くなるという問題があった。そこで、本実施の形態では、以下に示す複製処理により圧縮ボリュームの複製時間を短縮させている。
【００８５】
（７−２）本実施形態の複製処理の概要
図１３は、本発明における、圧縮Ｐ−ＶＯＬの複製処理を説明した概念図である。圧縮Ｐ−ＶＯＬ１３０１は、圧縮データが格納された複製元ＬＵを示す。圧縮Ｓ−ＶＯＬ１３０２は複製先ＬＵを示す。圧縮Ｐ−ＶＯＬ１３０１から圧縮Ｓ−ＶＯＬ１３０２への複製が行われた場合、圧縮Ｓ−ＶＯＬ１３０２には圧縮Ｐ−ＶＯＬと同様、圧縮されたデータが格納される。なお、複製を行う場合、圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２はＰａｉｒｅｄ状態となり、圧縮Ｓ−ＶＯＬへのライトは禁止される。圧縮Ｐ−ＶＯＬ用チャンク１３０３は圧縮Ｐ−ＶＯＬ１３０１に対応したチャンクであり、圧縮データが格納されている。圧縮Ｓ−ＶＯＬ用チャンク１３０４は圧縮Ｓ−ＶＯＬ１３０２に対応したチャンクである。圧縮Ｐ−ＶＯＬ用チャンク１３０３と圧縮Ｓ−ＶＯＬ用チャンク１３０４のページサイズ７０３には同じ値が設定される。
【００８６】
管理端末１０２から圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２を指定された複製指示を受けると、ストレージ装置１１０はＬＵ複製プログラム１３４を起動する。
【００８７】
ＬＵ複製プログラム１３４は、チャンク管理テーブル１３８を参照し、圧縮Ｐ−ＶＯＬ１３０１に対応するＬＵ＃から圧縮データが格納されているチャンク＃（圧縮Ｐ−ＶＯＬ用チャンク１３０３）を取得する。その後、圧縮Ｐ−ＶＯＬ１３０１の論理アドレス順ではなく、圧縮Ｐ−ＶＯＬ用チャンク１３０３の格納アドレス順にキャッシュメモリ１２５へ読み出す。
【００８８】
続いて、ＬＵ複製プログラム１３４は、読み出した圧縮データを伸長せずにそのまま圧縮Ｓ−ＶＯＬ用領域へコピーし、圧縮Ｓ−ＶＯＬ用チャンク１３０４へ格納する。この際、圧縮Ｐ−ＶＯＬ用チャンク１３０３にデータが格納されていないページがある場合には、圧縮Ｓ−ＶＯＬ用チャンク１３０４の同一ページには圧縮Ｐ−ＶＯＬ用チャンク１３０３と同様にデータを格納しない。
【００８９】
このように、圧縮Ｐ−ＶＯＬ用チャンク１３０３と圧縮Ｓ−ＶＯＬ用チャンク１３０４を、全く同じ状態でコピーすることによって、チャンク内アドレス順にシーケンシャルなコピーを実現することができる。また、論理アドレス順にコピーを行わないため、圧縮データを伸長する必要が無くなる。以上のように、本実施の形態によれば、高速な複製処理を実現することが可能となる。
【００９０】
（７−３）コピー処理の詳細
図１４は、圧縮Ｐ−ＶＯＬ１３０１の複製処理を示すフローチャートである。図１４に示すように、まず、ストレージ装置１１０は、管理端末１０２から圧縮Ｐ−ＶＯＬと圧縮Ｓ−ＶＯＬの情報を含む複製指示を受領する（Ｓ４０１）。
【００９１】
そして、ＬＵ複製プログラム１３４は、チャンク管理テーブル１３８を参照し、圧縮Ｐ−ＶＯＬ１３０１に対応するＬＵ番号から該当チャンクがあるか否かを判定する（Ｓ４０２）。初期コピーの場合、チャンク管理テーブル１３８から指定のＬＵ番号が見つからなければ、管理端末１０２のＬＵ番号指定が間違っている旨を管理端末１０２に通知し、処理を終了する。
【００９２】
ステップＳ４０２において、チャンク管理テーブル１３８から指定のＬＵ番号が見つかったと判定された場合には、ＬＵ複製プログラム１３４は、複製先の領域である圧縮Ｓ−ＶＯＬ用チャンク１３０４を確保する（Ｓ４０３）。
【００９３】
具体的に、ＬＵ複製プログラム１３４は、チャンク管理テーブル１３８に圧縮Ｓ−ＶＯＬ用チャンク１３０４の情報を追加する。圧縮Ｓ−ＶＯＬ用チャンク１３０４のページサイズは、圧縮Ｐ−ＶＯＬ用チャンク１３０３と同じ値に設定する。また、圧縮ＬＵ用マッピングテーブルアドレス７０５及び空き領域管理用ビットマップアドレスの７０６の値は、圧縮Ｐ−ＶＯＬ用チャンク１３０３に対応する情報と同じアドレスを設定する。これにより、圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２のデータ格納状態を同様の状態とすることが出来るため、圧縮データのままシーケンシャルなコピー処理を実行することができる。また圧縮Ｓ−ＶＯＬ１３０２用の圧縮ＬＵ用マッピングテーブル１３６を再構築する必要がなく、圧縮Ｐ−ＶＯＬ１３０１用の圧縮ＬＵ用マッピングテーブル１３６を圧縮Ｓ−ＶＯＬ１３０２用として利用することができる。
【００９４】
また、圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２に対応する圧縮ＬＵ用マッピングテーブル１３６および空き領域管理用ビットマップ１３７を共通にすることで、メモリ使用量を削減することが出来る。
【００９５】
また、圧縮Ｐ−ＶＯＬと圧縮Ｓ−ＶＯＬのＰａｉｒｅｄ状態を解除（Ｓｐｌｉｔ状態）した場合には、圧縮Ｐ−ＶＯＬおよび圧縮Ｓ−ＶＯＬへのライトは独立して実行される。この場合、圧縮Ｓ−ＶＯＬに対応した圧縮ＬＵ用マッピングテーブル１３６および空き領域管理用ビットマップ１３７を複製し、チャンク管理テーブル１３８の圧縮ＬＵ用マッピングテーブルアドレス欄１３８４および空き領域管理用ビットマップアドレス欄１３８５の値を更新する。これにより、Ｓｐｌｉｔ状態における圧縮Ｓ−ＶＯＬへのライトも正常に実行することが可能となる。
【００９６】
そして、ＬＵ複製プログラム１３４は、チャンク管理テーブル１３８を参照し、圧縮Ｐ−ＶＯＬのデータが格納されている圧縮Ｐ−ＶＯＬ用チャンク１３０３を取得し、そのチャンクの先頭から格納アドレス順に圧縮データをキャッシュメモリ１２５へ読み出す（Ｓ４０４）。
【００９７】
続いて、ＬＵ複製プログラム１３４は、ステップＳ４０４において読み出した圧縮データをそのまま圧縮Ｓ−ＶＯＬ用キャッシュ領域へコピーする（Ｓ４０５）。次に、ＬＵ複製プログラム１３４は、圧縮Ｓ−ＶＯＬ用キャッシュ領域にコピーした圧縮データを圧縮Ｓ−ＶＯＬ用チャンク１３０４に格納する（Ｓ４０６）。この際、圧縮Ｓ−ＶＯＬ用チャンク１３０４の格納アドレスは、圧縮Ｐ−ＶＯＬ用チャンク１３０３と全く同じオフセット（当該チャンク内のオフセットアドレス）が設定される。
【００９８】
次に、ＬＵ複製プログラム１３４は、圧縮Ｐ−ＶＯＬ用チャンク１３０３に複製すべきデータがまだあるか否かを判定する（Ｓ４０７）。ステップＳ４０７において、圧縮Ｐ−ＶＯＬ用チャンク１３０３内に複製すべきデータがあると判定された場合には、ＬＵ複製プログラム１３４は、ステップＳ４０４以降の処理を繰り返す。一方、圧縮Ｐ−ＶＯＬ用チャンク１３０３内のデータを全てコピーし終わっている場合には、チャンク管理テーブル１３８の圧縮Ｓ−ＶＯＬ用チャンク１３０４の情報を更新する（Ｓ４０８）。
【００９９】
ＬＵ複製プログラムは、ステップＳ４０８の処理を実行した後、再び、ステップＳ４０２に戻り、チャンク管理テーブル１３８を参照し、圧縮Ｐ−ＶＯＬ１３０１に対応するＬＵ番号から該当チャンクがあるか否かを判定する。ステップＳ４０２において、該当チャンクがないと判定された場合には、ＬＵ複製プログラムは、全てのコピー処理が完了したと判断し、ＬＵ複製処理を終了する。
【０１００】
（８）Ｐａｉｒｅｄ状態のライト処理
次に、ＬＵの複製処理後、Ｐ−ＶＯＬとＳ−ＶＯＬがＰａｉｒｅｄ状態の場合のライト処理について説明する。非圧縮ＬＵの複製処理後、Ｐ−ＶＯＬとＳ−ＶＯＬがＰａｉｒｅｄ状態の場合、Ｓ−ＶＯＬにはライトが許されない場合が多いが、Ｐ−ＶＯＬへのライトが行われると、Ｓ−ＶＯＬにも同一内容がライトされる。
【０１０１】
ストレージ装置１１０内部では、ホスト１０１から受領したライトデータをキャッシュメモリ上で複製し、それぞれＰ−ＶＯＬ、Ｓ−ＶＯＬの格納先ディスクへ格納している。上記した特許文献１では、圧縮Ｐ−ＶＯＬと圧縮Ｓ−ＶＯＬがＰａｉｒｅｄ状態の場合、Ｐ−ＶＯＬへのライト処理の際には、キャッシュメモリ上でライトデータを複製する。したがって、キャッシュメモリ上のＰ−ＶＯＬ領域及びＳ−ＶＯＬ領域でのいずれのライトデータに対しても圧縮処理を実行し、それぞれの格納先に格納している。すなわち、圧縮処理が合計２回実行され、処理負荷が大きいという問題があった。本実施の形態では、以下に説明するように、圧縮処理を１回だけ実行することにより、処理負荷を軽減させている。
【０１０２】
図１５は、本実施の形態にかかる圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２がＰａｉｒｅｄ状態の場合のライト処理について説明する概念図である。まず、ホスト１０１から圧縮Ｐ−ＶＯＬ１３０１に対してライト要求がなされると、キャッシュメモリ１２５にライトデータが転送される。ストレージ装置１１０は、ホストＩ／Ｏからのライト要求とは非同期に圧縮処理を開始し、圧縮対象データサイズの補完処理を行い、圧縮処理を実行する。
【０１０３】
その後、キャッシュメモリ上のＳ−ＶＯＬ用領域に圧縮データをコピーし、圧縮Ｐ−ＶＯＬ用チャンク１３０３及び圧縮Ｓ−ＶＯＬ用チャンク１３０４へ圧縮データを格納する。この処理手順によれば、圧縮処理は１回で済み、かつ圧縮Ｓ−ＶＯＬ１３０２への複製も正常に行うことができる。
【０１０４】
図１６Ａ及び図１６Ｂは、圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２がＰａｉｒｅｄ状態の場合の圧縮Ｐ−ＶＯＬ１３０１へのライト処理及び圧縮処理を示すフローチャートである。
【０１０５】
図１６Ａに示すように、ストレージ装置１１０は、ホスト１０１から圧縮Ｐ−ＶＯＬ１３０１へのライト要求を受領する（Ｓ５０１）。そして、Ｉ／Ｏ処理プログラム１３３は、キャッシュメモリ１２５へライトデータを転送する（Ｓ５０２）。
【０１０６】
続いて、ＬＵ複製プログラム１３４は、キャッシュメモリ１２５のライトデータをキャッシュメモリのＳ−ＶＯＬ領域にコピーする（Ｓ５０３）。圧縮Ｓ−ＶＯＬ１３０２へ複製するべきデータは圧縮データなので、ステップＳ５０３は省略可能である。しかし、圧縮Ｐ−ＶＯＬ１３０１と圧縮Ｓ−ＶＯＬ１３０２のＰａｉｒｅｄ状態が解除された際には、ホストから圧縮Ｓ−ＶＯＬ１３０２へのＩ／Ｏが許されるので、キャッシュメモリのＳ−ＶＯＬ領域にライトデータをコピーしておくと、キャッシュヒット率が向上するというメリットがある。
【０１０７】
その後、ホストへライト完了を表すステータス応答を送信する（Ｓ５０４）。
【０１０８】
また、ストレージ装置１１０はホスト１０１のＩ／Ｏ要求とは非同期に圧縮処理を開始する。圧縮処理の開始契機は、上記した圧縮処理と同様に、キャッシュメモリ１２５上のダーティデータ（ＨＤＤに書き込まれていないデータ）が閾値以上になった場合や、ＣＰＵ負荷の低い場合（ホストからのＩ／Ｏ要求が少ない場合）などである。
【０１０９】
図１６Ｂに示すように、圧縮処理が開始されると、圧縮伸長プログラム１３５がキャッシュメモリ１２５上に圧縮対象データがあるか否かを判定する（Ｓ５１０）。圧縮対象データとは、ホスト１０１からキャッシュメモリ１２５へ転送され、まだＨＤＤ１１１に書き込まれていないデータ（ダーティデータ）のことである。
【０１１０】
ステップＳ５１０において、キャッシュメモリ１２５上に圧縮対象データがないと判定された場合には、圧縮伸長プログラム１３５は、処理を終了する。
【０１１１】
一方、ステップＳ５１０において、キャッシュメモリ１２５上に圧縮対象データがあると判定された場合には、圧縮伸長プログラム１３５は、圧縮ＬＵ用チャンク１３０３のリード処理によって、圧縮データ補完処理を実行する（Ｓ５１１）。ステップＳ５１１における圧縮データの補完処理は、図１０のステップＳ２０２〜ステップＳ２０５の処理（処理Ａ）と同様である。すなわち、圧縮対象データの近傍アドレスであり、圧縮対象データサイズの不足部分に対して、圧縮ＬＵ用チャンク４１１からのリード処理、圧縮データの伸長処理を実行する。
【０１１２】
そして、圧縮伸長プログラム１３５は、ステップ１６０６で伸長されたデータに更新データを上書きする（Ｓ５１２）。
【０１１３】
そして、圧縮伸長プログラム１３５は、ステップＳ５１２において上書きしたデータを再度圧縮する（Ｓ５１３）。ステップＳ５１３の圧縮処理は、図８のステップＳ１０５〜ステップＳ１０８（処理Ｃ）と同様である。つまり、圧縮伸長プログラム１３５は、圧縮処理を実行し、場合によっては空き領域管理用ビットマップ１３７を参照して、格納領域を特定する。また、圧縮ＬＵ用マッピングテーブル１３６や空き領域管理用ビットマップ１３７を更新する。
【０１１４】
続いて、圧縮伸長プログラム１３５は、ステップＳ５１３において圧縮した圧縮データをキャッシュメモリ１２５のＳ−ＶＯＬ用領域へコピーして（Ｓ５１４）、圧縮Ｐ−ＶＯＬ用チャンク１３０３及び圧縮Ｓ−ＶＯＬ用チャンク１３０４へそれぞれ圧縮データを格納する（Ｓ５１５）。
【０１１５】
（９）本実施の形態の効果
以上のように本実施の形態によれば、ストレージ装置１１０のプール管理プログラム１３２は、仮想化された論理ボリューム４０１をホスト１０１に提供し、ＨＤＤ１１１により提供される記憶領域をプール４０３として管理し、ホスト１０１からのデータの入出力要求に基づいて、論理ボリューム４０１にプール４０３の記憶領域を割り当るストレージ装置１１０が提供される。ストレージ装置１１０は、プール４０３をデータが格納される複数のページが含まれる複数のチャンクに分割し、ホスト１０１により論理ボリューム４０１に書き込まれたデータを圧縮して、圧縮されたデータが格納された圧縮データ用論理ボリューム４０２に複数のチャンクのうち一のチャンクを割り当て、圧縮データ用論理ボリューム４０２を複製する際に、複製元の圧縮用論理ボリュームに割り当てられるチャンクのページ長と、複製先の圧縮データ用論理ボリュームに割り当てられるチャンクのページ長とを同じ長さにする。これにより、圧縮データが格納された論理ボリュームの複製の際に、ランダムアクセスによる読み出し、圧縮データの伸長、圧縮ＬＵ用マッピングテーブルの再構築などが必要なくなり、高速な複製が可能となる。
【０１１６】
（１０）他の実施の形態
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、各種プログラムや管理テーブル、ビットマップは不揮発性メモリ１３０に記録されるものとしたが、ＨＤＤ１１１に記録してもよい。上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施例の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１７】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ＨＤＤ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１１８】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１１９】
１０１    ホスト
１０２    管理端末
１１０    ストレージ装置
１２３    ＣＰＵ
１２４    主メモリ
１２５    キャッシュメモリ
１３０    不揮発性メモリ
１３１    管理端末通信プログラム
１３２    プール管理プログラム
１３３    Ｉ／Ｏ処理プログラム
１３４    ＬＵ複製プログラム
１３５    圧縮伸長プログラム
１３６    圧縮ＬＵ用マッピングテーブル
１３７    空き領域管理用ビットマップ
１３８    チャンク管理テーブル
【図１】
0005826949.tif 000002
【図２】
0005826949.tif 000003
【図３】
0005826949.tif 000004
【図４】
0005826949.tif 000005
【図５】
0005826949.tif 000006
【図６】
0005826949.tif 000007
【図７】
0005826949.tif 000008
【図８】
0005826949.tif 000009
【図９】
0005826949.tif 000010
【図１０】
0005826949.tif 000011
【図１１】
0005826949.tif 000012
【図１２Ａ】
0005826949.tif 000013
【図１２Ｂ】
0005826949.tif 000014
【図１３】
0005826949.tif 000015
【図１４】
0005826949.tif 000016
【図１５】
0005826949.tif 000017
【図１６Ａ】
0005826949.tif 000018
【図１６Ｂ】
0005826949.tif 000019
【図１７】
0005826949.tif 000020