(57)【要約】【課題】スナップショットにおいてディスク容量を効率的に利用できる。【解決手段】記憶部１ａは、更新情報３と確認情報４を記憶する。更新情報３は、スナップショットにおけるコピー元記憶領域（第１の記憶領域２ａ）のデータ更新の有無を示す。確認情報４は、スナップショットにおけるコピー元記憶領域（第１の記憶領域２ａ）の初期データの確認の有無を示す。制御部１ｂは、コピー元記憶領域のデータを更新することにより更新情報３をデータ更新無しからデータ更新有りに更新する更新処理を実行する。更新処理は、データ転送を伴う第１更新処理とデータ転送を伴わない第２更新処理とがあり、制御部１ｂは、確認情報４にもとづいて第１更新処理または第２更新処理を選択して実行する。【選択図】図１
2016151803.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶領域をコピー元として第２の記憶領域をコピー先とするスナップショットにおける前記第１の記憶領域のデータ更新の有無を示す更新情報と、前記第１の記憶領域が記憶する初期データの確認の有無を示す確認情報とを記憶する記憶部と、
前記第１の記憶領域のデータを更新することにより前記更新情報をデータ更新無しからデータ更新有りに更新する場合、前記第１の記憶領域から読み出したデータを前記第２の記憶領域に書き込むデータ転送を伴う前記更新情報の更新をおこなう第１更新処理、または前記データ転送を伴わない前記更新情報の更新をおこなう第２更新処理を、前記確認情報にもとづいて選択して実行する制御部と、
を備えるストレージ制御装置。
【請求項２】
前記制御部は、前記確認情報が前記初期データの確認有りを示す場合、前記第２更新処理において前記第１の記憶領域からデータを読み出すことなしに前記更新情報の更新をおこなう、
請求項１記載のストレージ制御装置。
【請求項３】
前記制御部は、前記スナップショットの作成時に、前記初期データの確認無しを示す前記確認情報を生成する、
請求項１記載のストレージ制御装置。
【請求項４】
前記制御部は、前記第１の記憶領域が仮想ボリュームであって物理記憶領域が未割り当ての場合に、前記初期データの確認有りを示す前記確認情報を生成する、
請求項１記載のストレージ制御装置。
【請求項５】
前記確認情報は、前記第１の記憶領域について所定単位のブロックごとの前記初期データの確認の有無を示すものであって、
前記制御部は、前記ブロックごとにデータを読み出して、読み出した前記データが前記初期データである場合に、前記ブロックに対応する前記確認情報を前記初期データの確認無しから前記初期データの確認有りに更新する、
請求項１記載のストレージ制御装置。
【請求項６】
コンピュータに、
第１の記憶領域をコピー元として第２の記憶領域をコピー先とするスナップショットにおける前記第１の記憶領域のデータ更新の有無を示す更新情報と、前記第１の記憶領域が記憶する初期データの確認の有無を示す確認情報とを生成し、
前記第１の記憶領域のデータを更新することにより前記更新情報をデータ更新無しからデータ更新有りに更新する場合、前記第１の記憶領域から読み出したデータを前記第２の記憶領域に書き込むデータ転送を伴う前記更新情報の更新をおこなう第１更新処理、または前記データ転送を伴わない前記更新情報の更新をおこなう第２更新処理を、前記確認情報にもとづいて選択して実行する、
処理を実行させるストレージ制御プログラム。
【請求項７】
コンピュータが、
第１の記憶領域をコピー元として第２の記憶領域をコピー先とするスナップショットにおける前記第１の記憶領域のデータ更新の有無を示す更新情報と、前記第１の記憶領域が記憶する初期データの確認の有無を示す確認情報とを生成し、
前記第１の記憶領域のデータを更新することにより前記更新情報をデータ更新無しからデータ更新有りに更新する場合、前記第１の記憶領域から読み出したデータを前記第２の記憶領域に書き込むデータ転送を伴う前記更新情報の更新をおこなう第１更新処理、または前記データ転送を伴わない前記更新情報の更新をおこなう第２更新処理を、前記確認情報にもとづいて選択して実行する、
処理を実行するストレージ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法に関する。
【背景技術】
【０００２】
ファイルなどのバックアップ技術として、ある時点のデータイメージのコピーを瞬時に作成するスナップショットが知られている。スナップショットは、スナップショット時におけるデータイメージを論理的にコピーして、スナップショット時のコピー元の情報を、コピー先から参照できる機能である。
【０００３】
スナップショットは、コピー元でデータ更新があった場合に、更新前データをコピー先に差分情報として物理的にコピーして記録する。また、スナップショットは、データイメージを区分した所定の領域ごとに物理的なコピーが完了しているか否かを、たとえばビットマップ形式で記録している。これにより、スナップショットは、コピーのために確保するディスク容量を、データ差分程度にまで削減できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１８６４７１号公報
【特許文献２】特開２０１０−０８６４７４号公報
【特許文献３】特開２０１４−０３８５５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、このようなスナップショットは、コピー元に記録されているデータが初期データ（たとえば、ゼロデータ）である場合まで、コピー元のデータ更新により初期データをコピー先にコピーしている。たとえば、コピー元に記録されているデータが初期データである場合とは、初めてのディスク使用である初期状態や、仮想ボリュームに物理割り当てがされたばかりの状態がある。
【０００６】
このような初期データのコピーは、コピー先にとって意味のない情報としてディスク容量を無駄に消費することとなる場合がある。
１つの側面では、本発明は、スナップショットにおいてディスク容量を効率的に利用可能なストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、以下に示すような、ストレージ制御装置が提供される。ストレージ制御装置は、記憶部と、制御部とを備える。記憶部は、第１の記憶領域をコピー元として第２の記憶領域をコピー先とするスナップショットにおける第１の記憶領域のデータ更新の有無を示す更新情報と、第１の記憶領域が記憶する初期データの確認の有無を示す確認情報とを記憶する。制御部は、第１の記憶領域のデータを更新することにより更新情報をデータ更新無しからデータ更新有りに更新する場合、第１の記憶領域から読み出したデータを第２の記憶領域に書き込むデータ転送を伴う更新情報の更新をおこなう第１更新処理、またはデータ転送を伴わない更新情報の更新をおこなう第２更新処理を、確認情報にもとづいて選択して実行する。
【発明の効果】
【０００８】
１態様によれば、ストレージ制御装置、ストレージ制御プログラム、およびストレージ制御方法において、スナップショットにおいてディスク容量を効率的に利用できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態のストレージ制御装置の構成の一例を示す図である。
【図２】第２の実施形態のストレージシステムの構成の一例を示す図である。
【図３】第２の実施形態のストレージ装置の構成の一例を示す図である。
【図４】第２の実施形態のＣＭの処理機能の構成の一例を示すブロック図である。
【図５】第２の実施形態のゼロデータビットマップ生成処理のフローチャートを示す図である。
【図６】第２の実施形態の通常ボリュームのゼロデータビットマップイメージの一例を示す図である。
【図７】第２の実施形態の仮想ボリュームの物理割り当て未割り当ての領域がある場合のゼロデータビットマップイメージの一例を示す図である。
【図８】第２の実施形態のゼロデータ領域確認処理のフローチャートを示す図である。
【図９】第２の実施形態の読み出したデータがゼロデータでない場合のゼロデータビットマップイメージの一例を示す図である。
【図１０】第２の実施形態の読み出したデータがゼロデータである場合のゼロデータビットマップイメージの一例を示す図である。
【図１１】第２の実施形態のゼロデータコピー削減処理のフローチャートを示す図である。
【図１２】第２の実施形態の差分コピー時に読み出したデータがゼロデータでない場合のゼロデータビットマップイメージの一例を示す図である。
【図１３】第２の実施形態の差分コピー時に読み出したデータがゼロデータである場合のゼロデータビットマップイメージの一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施の形態を詳細に説明する。
［第１の実施形態］
まず、第１の実施形態のストレージ制御装置について図１を用いて説明する。図１は、第１の実施形態のストレージ制御装置の構成の一例を示す図である。
【００１１】
ストレージ制御装置１は、外部装置（たとえばホストやサーバなど）から受け付けるアクセス要求に応じてストレージデバイスを制御する。ストレージデバイスは、たとえばＳＳＤ（Solid State Drive）やＨＤＤ（Hard Disk Drive）などがある。
【００１２】
ストレージ制御装置１は、記憶部１ａと、制御部１ｂとを備える。記憶部１ａは、更新情報３と確認情報４を記憶する。記憶部１ａは、たとえば、ＲＡＭ（Random Access Memory）などがある。
【００１３】
更新情報３と確認情報４は、スナップショット作成時にスナップショットのメタデータとして生成される。たとえば、ストレージ制御装置１は、第１の記憶領域２ａをコピー元として第２の記憶領域２ｂをコピー先とするスナップショットを作成したとき、更新情報３と確認情報４を生成して記憶部１ａに記憶する。
【００１４】
更新情報３は、スナップショットにおけるコピー元記憶領域（第１の記憶領域２ａ）のデータ更新の有無を示す情報である。更新情報３は、たとえばブロック単位のデータ更新の有無を、対応する１ビットで表わすビットマップ（第１のビットマップ）である。第１のビットマップにおいて各ビットは、データ更新無しを「１」で表わし、データ更新有りを「０」で表わす。したがって、スナップショット作成時に生成される更新情報３は、すべてのビットが「１」のビットマップである。
【００１５】
確認情報４は、スナップショットにおけるコピー元記憶領域（第１の記憶領域２ａ）の初期データの確認の有無を示す情報である。確認情報４は、たとえばブロック単位の初期データの確認の有無を、対応する１ビットで表わすビットマップ（第２のビットマップ）である。初期データは、初期状態のディスクに記録されているデータである。たとえば、初期データは、初めてのディスク使用時や、仮想ボリュームに物理割り当てがされたばかりの時に、記憶領域に記憶されている意味のないデータであり、一般に全ビットが「０」であるゼロデータである。第２のビットマップにおいて各ビットは、初期データの確認無しを「１」で表わし、初期データの確認有りを「０」で表わす。すなわち、第２のビットマップにおいて、ビット「１」はデータ未確定を示し、ビット「０」はゼロデータ確定を示す。したがって、スナップショット作成時に生成される確認情報４は、すべてのビットが「１」のビットマップである。
【００１６】
制御部１ｂは、コピー元記憶領域へのデータの書き込みにより、コピー元記憶領域のデータを更新することがある。制御部１ｂは、コピー元記憶領域のデータを更新することにより更新情報３をデータ更新無しからデータ更新有りに更新する更新処理を実行する。更新処理は、第１更新処理と第２更新処理とがあり、制御部１ｂは、確認情報４にもとづいて第１更新処理または第２更新処理を選択して実行する。
【００１７】
第１更新処理は、コピー元記憶領域（第１の記憶領域２ａ）から読み出したデータをコピー先記憶領域（たとえば、第２の記憶領域２ｂ）に書き込むデータ転送を伴う更新処理である。第２更新処理は、コピー元記憶領域（第１の記憶領域２ａ）から読み出したデータをコピー先記憶領域（第２の記憶領域２ｂ）に書き込むデータ転送を伴わない更新処理である。
【００１８】
このようなストレージ制御装置１によれば、スナップショット作成時に、更新情報３と確認情報４は、制御部１ｂによって生成されて記憶部１ａに記憶される。たとえば、スナップショットのコピー元のサイズが８ブロックのとき、制御部１ｂは、各ビットの初期値が「１」で８ビットのサイズの更新情報３を生成する。同様に、制御部１ｂは、各ビットの初期値が「１」で８ビットのサイズの確認情報４を生成する。
【００１９】
確認情報４は、コピー元記憶領域（第１の記憶領域２ａ）のうち各ビットに対応するブロックで初期データの確認がされた場合に当該ビットが「０」になる。たとえば、コピー元記憶領域から読み出されたデータが初期データである場合や、コピー元記憶領域が物理割り当てのない領域である場合に、確認情報４は、初期データの確認がされたとして対応するビットが「１」から「０」に更新される。
【００２０】
ここで、コピー元記憶領域（第１の記憶領域２ａ）へのデータ更新（たとえば、データ書き込み）があった場合、制御部１ｂは、更新情報３の対応するビットを「１」から「０」に更新する。さらに、制御部１ｂは、確認情報４の対応するビットを参照し、確認情報４の対応するビットが「１」であれば第１更新処理を選択して実行し、確認情報４の対応するビットが「０」であれば第２更新処理を選択して実行する。たとえば、制御部１ｂは、更新情報３から更新情報３ａに更新するとき、確認情報４を参照し確認情報４ａであれば第１更新処理を実行する。また、制御部１ｂは、更新情報３から更新情報３ａに更新するとき、確認情報４を参照し確認情報４ｂであれば第２更新処理を実行する。
【００２１】
これにより、ストレージ制御装置１は、第２更新処理を実行するときにコピー元記憶領域（第１の記憶領域２ａ）からコピー先記憶領域（第２の記憶領域２ｂ）へのデータ転送を要しない。これは、データ転送の対象となるデータが初期データであることが確認されているため、初期データを差分情報としてデータ転送することを要しないことによる。したがって、ストレージ制御装置１は、コピー先記憶領域（第２の記憶領域２ｂ）に物理割り当てをおこなうことも要しない。よって、ストレージ制御装置１は、スナップショットにおいてディスク容量を効率的に利用できる。
【００２２】
［第２の実施形態］
次に、第２の実施形態のストレージシステムについて図２を用いて説明する。図２は、第２の実施形態のストレージシステムの構成の一例を示す図である。
【００２３】
ストレージシステム５は、サーバ６と、ネットワーク（伝送路）７と、ストレージ装置１０とを含む。ネットワーク７は、たとえば１または複数のストレージ装置１０と、１または複数のサーバ６を接続する。ストレージ装置１０は、ネットワーク７を介してサーバ６と通信可能に接続する。サーバ６は、ストレージ装置１０にデータを書き込み、またストレージ装置１０からデータを読み出すことができる。
【００２４】
次に、第２の実施形態のストレージ装置について図３を用いて説明する。図３は、第２の実施形態のストレージ装置の構成の一例を示す図である。
ストレージ装置１０は、チャネルアダプタ１１，１２と、リモートアダプタ１３，１４と、コントローラモジュール（以下、ＣＭ（Controller Module））２０，３０と、ドライブエンクロージャ（以下、ＤＥ（Drive Enclosure））５０を含む。
【００２５】
ストレージ装置１０は、チャネルアダプタ１１，１２を介してサーバ６と接続する。チャネルアダプタ１１は、ＣＭ２０に対応して備えられ、チャネルアダプタ１２は、ＣＭ３０に対応して備えられる。ストレージ装置１０は、リモートアダプタ１３，１４を介して他のストレージ装置と接続できる。リモートアダプタ１３は、ＣＭ２０に対応して備えられ、リモートアダプタ１４は、ＣＭ３０に対応して備えられる。
【００２６】
ＤＥ５０は、ＨＤＤ５１，５２，５３，５４を含む。なお、ＤＥ５０は、ＳＳＤなどその他のストレージデバイスを含むものであってもよい。
ＣＭ２０とＣＭ３０は、相互に接続して負荷を分担することができる。なお、ストレージ装置１０は、２つのＣＭ２０，３０を含むが、これに限らず、ＣＭ２０とＣＭ３０のいずれか一方を含むものであってもよいし、３つ以上のＣＭを含むものであってもよく、たとえば、４つあるいは８つのＣＭを含むものであってもよい。
【００２７】
ＣＭ２０は、プロセッサ２１と、メモリ２２と、ディスクアダプタ２３，２４を含む。ＣＭ３０は、プロセッサ３１と、メモリ３２と、ディスクアダプタ３３，３４を含む。なお、ＣＭ３０はＣＭ２０と同様の構成を有するため、以下、ＣＭ２０の説明をもってＣＭ３０の説明に代える。
【００２８】
プロセッサ２１、メモリ２２、およびディスクアダプタ２３，２４は、図示しないバスを介して接続されている。プロセッサ２１は、ＣＭ２０全体を制御し、階層制御を含むストレージ制御をおこなう。なお、プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ２１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２９】
メモリ２２は、ＨＤＤ５１，５２，５３，５４からデータを読み出したときにデータを保持するほか、ＨＤＤ５１，５２，５３，５４にデータを書き込むときのバッファとなる。また、メモリ２２は、ユーザデータや制御情報を格納する。
【００３０】
たとえば、メモリ２２は、ＲＡＭ（Random Access Memory）や不揮発性メモリを含む。ＲＡＭは、ＣＭ２０の主記憶装置として使用される。ＲＡＭには、プロセッサ２１に実行させるオペレーティングシステム（Operating System）のプログラムやファームウェア、アプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭには、プロセッサ２１による処理に必要な各種データが格納される。また、ＲＡＭは、各種データの格納に用いるメモリと別体にキャッシュメモリを含む。
【００３１】
不揮発性メモリは、ストレージ装置１０の電源遮断時においても記憶内容を保持する。不揮発性メモリは、たとえば、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）やフラッシュメモリなどの半導体記憶装置や、ＨＤＤなどである。また、不揮発性メモリは、ＣＭ２０の補助記憶装置として使用される。不揮発性メモリには、オペレーティングシステムのプログラムやファームウェア、アプリケーションプログラム、および各種データが格納される。
【００３２】
バスに接続される周辺機器としては、入出力インタフェース、および通信インタフェースがある。入出力インタフェースは、入出力装置と接続して入出力をおこなう。入出力インタフェースは、ＨＤＤなどの記憶装置から送られてくる信号やデータをプロセッサ２１やメモリ２２に送信する。また、入出力インタフェースは、たとえば、プロセッサ２１から受信した信号を、他の制御部や、ＣＭ２０と接続する出力装置に出力する。通信インタフェースは、ストレージ装置１０内の他のＣＭ（ＣＭ３０）との間でデータの送受信をおこなう。
【００３３】
ディスクアダプタ２３，２４は、ＨＤＤ５１，５２，５３，５４とのインタフェース制御（アクセス制御）をおこなう。
以上のようなハードウェア構成によって、ストレージ装置１０、あるいはＣＭ２０，３０の処理機能を実現することができる。なお、第１の実施形態に示したストレージ制御装置１も、ストレージ装置１０、あるいはＣＭ２０，３０と同様のハードウェアにより実現することができる。
【００３４】
次に、ＣＭの処理機能の構成について図４を用いて説明する。図４は、第２の実施形態のＣＭの処理機能の構成の一例を示すブロック図である。
ＣＭ２０は、記憶部１００と、制御部１１０としての機能を備える。制御部１１０は、ゼロデータビットマップ生成部１１１と、ゼロデータ領域確認部１１２と、ゼロデータコピー削減部１１３としての機能を含む。ＣＭ２０は、ストレージ制御装置の一形態である。制御部１１０は、たとえば、ＣＭ２０のプロセッサ２１が所定のプログラムを実行することで実現される。
【００３５】
記憶部１００は、更新ビットマップ２００とゼロデータビットマップ２１０を記憶する。更新ビットマップ２００とゼロデータビットマップ２１０は、スナップショット作成時にスナップショットのメタデータとして生成される。ゼロデータビットマップ２１０は、確認情報４に相当する。更新ビットマップ２００は、スナップショットにおいて一般にビットマップとして称されるが、第２の実施形態ではゼロデータビットマップ２１０と区別するためにこのように称する。記憶部１００は、たとえば、ＣＭ２０のメモリ２２の所定の記憶領域によって実現される。
【００３６】
更新ビットマップ２００は、スナップショットにおけるコピー元記憶領域のブロック単位のデータ更新の有無を、対応する１ビットで表わす。更新ビットマップ２００は、各ビットの「１」が対応する記憶領域でデータ更新がないことを示し、各ビットの「０」が対応する記憶領域でデータ更新があることを示す。スナップショット作成時に生成される更新ビットマップ２００は、すべてのビットが「１」である。更新ビットマップ２００は、第１の実施形態の更新情報３に相当する。
【００３７】
ゼロデータビットマップ２１０は、スナップショットにおけるコピー元記憶領域のブロック単位の初期データの確認の有無を、対応する１ビットで表わす。ゼロデータビットマップ２１０は、各ビットの「１」が対応する記憶領域でゼロデータ（初期データ）の確認がなされていないことを示し、各ビットの「０」が対応する記憶領域でゼロデータの確認がなされていることを示す。スナップショット作成時に生成されるゼロデータビットマップ２１０は、すべてのビットが「１」である。ゼロデータビットマップ２１０は、第１の実施形態の確認情報４に相当する。
【００３８】
更新ビットマップ２００およびゼロデータビットマップ２１０の１ビットに対応するブロックは、あらかじめ定めるサイズの記憶領域であり、たとえば１００ＬＢＡ（Logical Block Addressing）である。
【００３９】
ゼロデータビットマップ生成部１１１は、スナップショット作成時にゼロデータビットマップ２１０を生成する。ゼロデータビットマップ生成部１１１は、初期値として各ビット「１」で更新ビットマップ２００と同じ容量のゼロデータビットマップ２１０を生成する。ゼロデータビットマップ生成部１１１は、プロセッサ２１が後述するゼロデータビットマップマップ生成処理を実行することで実現される。
【００４０】
ゼロデータ領域確認部１１２は、スナップショット作成後、ゼロデータビットマップ２１０のビット「１」に対応する領域のデータがゼロデータであるか否かを確認する。ゼロデータ領域確認部１１２は、ゼロデータビットマップ２１０のビット「１」に対応する領域のデータがゼロデータである場合に、ゼロデータビットマップ２１０のビット「１」をビット「０」に更新する。ゼロデータ領域確認部１１２は、ゼロデータビットマップ２１０のビット「１」に対応する領域のデータがゼロデータでない場合に、ゼロデータビットマップ２１０のビット「１」をそのままとする。ゼロデータ領域確認部１１２は、プロセッサ２１が後述するゼロデータ領域確認処理を実行することで実現される。
【００４１】
ゼロデータコピー削減部１１３は、コピー元記憶領域のデータが更新される場合、コピー元記憶領域からデータを読み出してコピー先記憶領域にデータを転送する必要の是非を判定する。ゼロデータコピー削減部１１３は、コピー元記憶領域のデータがゼロデータである場合に転送不要と判定し、コピー先記憶領域へのデータ転送をおこなわない。これにより、ゼロデータコピー削減部１１３は、コピー元記憶領域からコピー先記憶領域へのゼロデータコピーを削減する。ゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０を参照してデータ転送の是非を判定する。ゼロデータコピー削減部１１３は、プロセッサ２１が後述するゼロデータコピー削減処理を実行することで実現される。
【００４２】
次に、第２の実施形態のゼロデータビットマップ生成処理について図５を用いて説明する。図５は、第２の実施形態のゼロデータビットマップ生成処理のフローチャートを示す図である。
【００４３】
ゼロデータビットマップ生成処理は、スナップショット作成を契機に、ゼロデータビットマップ生成部１１１が実行する処理である。
［ステップＳ１１］ゼロデータビットマップ生成部１１１は、更新ビットマップ２００と同じ容量のゼロデータビットマップ２１０を獲得（生成）する。
【００４４】
［ステップＳ１２］ゼロデータビットマップ生成部１１１は、ゼロデータビットマップ２１０のすべてのビットに「１」をセットすることにより、ゼロデータビットマップ２１０の初期化をおこなう。
【００４５】
［ステップＳ１３］ゼロデータビットマップ生成部１１１は、コピー元記憶領域が仮想ボリュームであるか否かを判定する。ゼロデータビットマップ生成部１１１は、コピー元記憶領域が仮想ボリュームである場合にステップＳ１４にすすみ、コピー元記憶領域が仮想ボリュームでない場合にゼロデータビットマップ生成処理を終了する。
【００４６】
［ステップＳ１４］ゼロデータビットマップ生成部１１１は、ゼロデータビットマップ２１０のうちの１ビットに対応する領域を確認対象領域として選択する。
［ステップＳ１５］ゼロデータビットマップ生成部１１１は、確認対象領域への物理割り当てが未割り当てであるか否かを判定する。ゼロデータビットマップ生成部１１１は、確認対象領域への物理割り当てが未割り当てである場合にステップＳ１６にすすみ、確認対象領域への物理割り当てが未割り当てでない場合にステップＳ１７にすすむ。
【００４７】
［ステップＳ１６］ゼロデータビットマップ生成部１１１は、確認対象領域に対応するゼロデータビットマップ２１０の１ビットを「０」に更新（ビットクリア）する。このようなビットクリアは、仮想ボリュームの物理割り当てが未割り当てのコピー元記憶領域でゼロデータが保証がされていることによる。
【００４８】
［ステップＳ１７］ゼロデータビットマップ生成部１１１は、すべての確認対象領域における物理割り当ての有無の確認が終了したか否かを判定する。すなわち、ゼロデータビットマップ生成部１１１は、ゼロデータビットマップ２１０のうちのすべてのビットに対応する領域を確認対象領域として選択したか否かを判定する。ゼロデータビットマップ生成部１１１は、未だ確認対象領域として選択していない領域がある場合にステップＳ１４にすすみ、すべての領域を確認対象領域として選択している場合にゼロデータビットマップ生成処理を終了する。
【００４９】
ここで、ゼロデータビットマップ生成部１１１が生成するゼロデータビットマップ２１０について図６と図７を用いて説明する。図６は、第２の実施形態の通常ボリュームのゼロデータビットマップイメージの一例を示す図である。
【００５０】
ゼロデータビットマップイメージ２２０は、通常ボリュームをコピー元記憶領域とするスナップショット作成時に生成された更新ビットマップ２００とゼロデータビットマップ２１０を示す。ゼロデータビットマップイメージ２２０に示す更新ビットマップ２００とゼロデータビットマップ２１０は、コピー元記憶領域のサイズに応じたビット数であり、たとえば８ビットである。ゼロデータビットマップイメージ２２０に示す更新ビットマップ２００は、コピー元記憶領域で未だデータ更新がない状態であることから、すべてのビットが「１」である。ゼロデータビットマップイメージ２２０に示すゼロデータビットマップ２１０は、コピー元記憶領域が通常ボリュームであり、コピー元記憶領域のデータがゼロデータであるか否かが未確定であることから、すべてのビットが「１」である。
【００５１】
図７は、第２の実施形態の仮想ボリュームの物理割り当て未割り当ての領域がある場合のゼロデータビットマップイメージの一例を示す図である。
ゼロデータビットマップイメージ２２１は、仮想ボリュームをコピー元記憶領域とするスナップショット作成時に生成された更新ビットマップ２００とゼロデータビットマップ２１０を示す。ゼロデータビットマップイメージ２２１に示す更新ビットマップ２００とゼロデータビットマップ２１０は、コピー元記憶領域のサイズに応じたビット数であり、たとえば８ビットである。ゼロデータビットマップイメージ２２１に示す更新ビットマップ２００は、コピー元記憶領域で未だデータ更新がない状態であることから、すべてのビットが「１」である。ゼロデータビットマップイメージ２２１に示すゼロデータビットマップ２１０は、コピー元記憶領域が仮想ボリュームであり、オフセット「１」，「３」，「４」，「７」に対応する領域への物理割り当てが未割り当てである。したがって、ゼロデータビットマップイメージ２２１に示すゼロデータビットマップ２１０は、オフセット「１」，「３」，「４」，「７」に対応するビットが「０」である。
【００５２】
なお、ゼロデータビットマップ生成処理のステップＳ１３からＳ１７において、ゼロデータビットマップ２１０のビットクリアをおこなったが、当該処理はコピー元記憶領域へのデータ更新が行われた場合に実行されるようにしてもよい。
【００５３】
次に、第２の実施形態のゼロデータ領域確認処理について図８を用いて説明する。図８は、第２の実施形態のゼロデータ領域確認処理のフローチャートを示す図である。
ゼロデータビットマップ生成処理は、スナップショット作成後に、コピー元記憶領域のデータ更新をおこなう更新処理と非同期に、ゼロデータ領域確認部１１２が実行する処理である。
【００５４】
［ステップＳ２１］ゼロデータ領域確認部１１２は、ゼロデータビットマップ２１０のうちの１ビットに対応する領域を確認対象領域として選択する。
［ステップＳ２２］ゼロデータ領域確認部１１２は、確認対象領域に対応するビットがビットセット（ビット「１」）であるか否かを判定する。ゼロデータ領域確認部１１２は、確認対象領域に対応するビットがビットセットである場合にステップＳ２３にすすみ、確認対象領域に対応するビットがビットセットでない場合にステップＳ２６にすすむ。
【００５５】
［ステップＳ２３］ゼロデータ領域確認部１１２は、確認対象領域（たとえば、ＨＤＤ５１などの物理記憶領域）からデータを読み出す。
［ステップＳ２４］ゼロデータ領域確認部１１２は、読み出したデータがゼロデータであるか否かを判定する。ゼロデータ領域確認部１１２は、読み出したデータがゼロデータである場合にステップＳ２５にすすみ、読み出したデータがゼロデータでない場合にステップＳ２６にすすむ。
【００５６】
［ステップＳ２５］ゼロデータ領域確認部１１２は、確認対象領域に対応するゼロデータビットマップ２１０の１ビットを「０」に更新（ビットクリア）する。このようなビットクリアは、読み出したデータからコピー元記憶領域がゼロデータであることを確認したことによる。
【００５７】
［ステップＳ２６］ゼロデータ領域確認部１１２は、すべての確認対象領域におけるゼロデータの確認が終了したか否かを判定する。すなわち、ゼロデータ領域確認部１１２は、ゼロデータビットマップ２１０のうちのすべてのビットに対応する領域を確認対象領域として選択したか否かを判定する。ゼロデータ領域確認部１１２は、未だ確認対象領域として選択していない領域がある場合にステップＳ２１にすすみ、すべての領域を確認対象領域として選択している場合にゼロデータ領域確認処理を終了する。
【００５８】
なお、ゼロデータ領域確認部１１２は、ゼロデータビットマップ生成処理を更新処理と非同期に実行するとしたが、たとえば、スループットへの影響が低減するタイミングを選択して実行してもよい。また、ゼロデータ領域確認部１１２は、すべての確認対象領域について一括してゼロデータ確認をおこなうものであってもよいし、所定サイズあるいは所定時間で処理できるサイズごとに分割してゼロデータ確認をおこなうものであってもよい。
【００５９】
ここで、ゼロデータ領域確認部１１２がゼロデータ確認により更新するゼロデータビットマップ２１０について図９と図１０を用いて説明する。図９は、第２の実施形態の読み出したデータがゼロデータでない場合のゼロデータビットマップイメージの一例を示す図である。図１０は、第２の実施形態の読み出したデータがゼロデータである場合のゼロデータビットマップイメージの一例を示す図である。
【００６０】
ゼロデータビットマップイメージ２３０，２３１は、ゼロデータビットマップイメージ２２０に示した更新ビットマップ２００とゼロデータビットマップ２１０を初期状態として、ゼロデータ領域確認後の様子を示す。
【００６１】
ゼロデータビットマップイメージ２３０は、確認対象領域から読み出したデータがゼロデータでない場合の更新ビットマップ２００とゼロデータビットマップ２１０を示す。ゼロデータビットマップイメージ２３０に示すゼロデータビットマップ２１０によれば、制御部１１０は、すべてのコピー元記憶領域について、データ更新時にコピー先記憶領域へのデータ転送を伴う更新ビットマップ２００の更新をおこなう。
【００６２】
ゼロデータビットマップイメージ２３１は、確認対象領域から読み出したデータがゼロデータである場合の更新ビットマップ２００とゼロデータビットマップ２１０を示す。ゼロデータビットマップイメージ２３１に示すゼロデータビットマップ２１０は、オフセット「２」に対応する領域から読み出したデータがゼロデータであったことを示す。ゼロデータビットマップイメージ２３１に示すゼロデータビットマップ２１０によれば、制御部１１０は、オフセット「２」に対応するコピー元記憶領域について、データ更新時にコピー先記憶領域へのデータ転送を伴わない更新ビットマップ２００の更新をおこなう。また、制御部１１０は、オフセット「２」以外のオフセットに対応するコピー元記憶領域について、データ更新時にコピー先記憶領域へのデータ転送を伴う更新ビットマップ２００の更新をおこなう。
【００６３】
次に、第２の実施形態のゼロデータコピー削減処理について図１１を用いて説明する。図１１は、第２の実施形態のゼロデータコピー削減処理のフローチャートを示す図である。
【００６４】
ゼロデータコピー削減処理は、コピー元記憶領域についてデータ更新があったときに、ゼロデータコピー削減部１１３が実行する処理である。
［ステップＳ３１］ゼロデータコピー削減部１１３は、更新ビットマップ２００におけるデータ更新があった領域に対応するビットが「１」（ビットセット）であるか否かを判定する。ゼロデータコピー削減部１１３は、対応するビットが「１」である場合にステップＳ３２にすすみ、対応するビットが「０」である場合にゼロデータコピー削減処理を終了する。
【００６５】
［ステップＳ３２］ゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０におけるデータ更新があった領域に対応するビットが「１」（ビットセット）であるか否かを判定する。ゼロデータコピー削減部１１３は、対応するビットが「１」である場合にステップＳ３３にすすみ、対応するビットが「０」である場合にステップＳ３７にすすむ。
【００６６】
［ステップＳ３３］ゼロデータコピー削減部１１３は、データ更新があった領域からデータを読み出す。
［ステップＳ３４］ゼロデータコピー削減部１１３は、読み出したデータがゼロデータであるか否かを判定する。ゼロデータコピー削減部１１３は、読み出したデータがゼロデータである場合にステップＳ３５にすすみ、読み出したデータがゼロデータでない場合にステップＳ３６にすすむ。
【００６７】
［ステップＳ３５］ゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０における対応するビットを「０」に更新（ビットクリア）する。
［ステップＳ３６］ゼロデータコピー削減部１１３は、差分コピー処理を動作させ、差分コピー処理の終了確認をおこなう。差分コピー処理は、コピー元記憶領域からコピー先記憶領域への更新前のデータの転送を含む処理である。
【００６８】
［ステップＳ３７］ゼロデータコピー削減部１１３は、更新ビットマップ２００におけるデータ更新があった領域に対応するビットを「０」に更新（ビットクリア）してゼロデータコピー削減処理を終了する。
【００６９】
このように、ゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０を参照してデータ更新があった領域がゼロデータである場合（ステップＳ３２で［ＮＯ］）に、データ転送を伴うことなく更新ビットマップ２００の更新をおこなう。このような処理は、第１の実施形態に示した第２更新処理に相当する。この場合、ゼロデータコピー削減部１１３は、コピー元記憶領域からのデータの読み出しをおこなうことも要しない。
【００７０】
また、ゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０を参照してデータ更新があった領域がゼロデータであるか否かを確認できない場合（ステップＳ３２で［ＹＥＳ］）に、コピー元記憶領域からのデータの読み出しをおこなう（ステップＳ３３）。ここで、ゼロデータコピー削減部１１３は、読み出したデータがゼロデータでない場合（ステップＳ３４で［ＮＯ］）に、データ転送を伴う更新ビットマップ２００の更新をおこなう。このような処理は、第１の実施形態に示した第１更新処理に相当する。
【００７１】
また、ゼロデータコピー削減部１１３は、読み出したデータがゼロデータである場合（ステップＳ３４で［ＹＥＳ］）に、データ転送を伴わない更新ビットマップ２００の更新をおこなう。このような処理は、第１の実施形態に示した第２更新処理の一態様に相当する。この場合、ゼロデータコピー削減部１１３は、コピー元記憶領域からのデータの読み出しをおこなうが、コピー先記憶領域へのデータ転送を要しない。
【００７２】
このように、ゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０にもとづいて第１更新処理または第２更新処理の実行を選択する。ゼロデータコピー削減部１１３は、第２更新処理の実行を選択した場合にデータ転送を要しないので、スナップショットにおけるコピー元記憶領域のデータ更新時の処理負担を軽減する。さらにゼロデータコピー削減部１１３は、ゼロデータビットマップ２１０によりゼロデータが確認できる場合にコピー元記憶領域からのデータの読み出しを不要とすることから、スナップショットにおけるコピー元記憶領域のデータ更新時の処理負担を一層軽減する。
【００７３】
また、ゼロデータコピー削減部１１３は、コピー先記憶領域へのデータ転送を要しないことからコピー先記憶領域への物理割り当てをおこなうことも要しない。よって、ストレージ装置１０は、スナップショットにおいてディスク容量を効率的に利用できる。
【００７４】
ここで、ゼロデータビットマップ２１０によってあらかじめゼロデータが確認されていない場合のゼロデータビットマップ２１０の更新について図１２と図１３を用いて説明する。図１２は、第２の実施形態の差分コピー時に読み出したデータがゼロデータでない場合のゼロデータビットマップイメージの一例を示す図である。図１３は、第２の実施形態の差分コピー時に読み出したデータがゼロデータである場合のゼロデータビットマップイメージの一例を示す図である。
【００７５】
ゼロデータビットマップイメージ２４０，２４１は、ゼロデータビットマップイメージ２２０に示した更新ビットマップ２００とゼロデータビットマップ２１０を初期状態として、差分コピー時のゼロデータ領域確認後の様子を示す。
【００７６】
ゼロデータビットマップイメージ２４０は、差分コピー時に対象領域（たとえば、オフセット「２」の領域）から読み出したデータがゼロデータでない場合の更新ビットマップ２００とゼロデータビットマップ２１０を示す。ゼロデータビットマップイメージ２４０に示すゼロデータビットマップ２１０は、読み出されたデータがゼロデータでないことから、オフセット「２」に対応するビットが更新されない。したがって、オフセット「２」に対応する更新ビットマップ２００の更新は、データ転送を伴う。ゼロデータビットマップイメージ２４０に示す更新ビットマップ２００のオフセット「２」に対応するビットは、差分コピーの終了確認後に、「０」に更新される。
【００７７】
一方、ゼロデータビットマップイメージ２４１は、差分コピー時に対象領域（たとえば、オフセット「２」の領域）から読み出したデータがゼロデータである場合の更新ビットマップ２００とゼロデータビットマップ２１０を示す。ゼロデータビットマップイメージ２４１に示すゼロデータビットマップ２１０は、読み出されたデータがゼロデータであることから、オフセット「２」に対応するビットが「０」に更新される。したがって、オフセット「２」に対応する更新ビットマップ２００の更新は、データ転送を伴わない。ゼロデータビットマップイメージ２４１に示す更新ビットマップ２００のオフセット「２」に対応するビットは、差分コピーがおこなわれることなく「０」に更新される。
【００７８】
次に、差分コピー時に対象領域がすでにゼロデータ確認されている場合について説明する。たとえば、オフセット「２」の領域でゼロデータ確認されている場合、更新ビットマップ２００とゼロデータビットマップ２１０の初期状態は、ゼロデータビットマップイメージ２３１（図１０）のようになる。ゼロデータビットマップイメージ２３１に示すゼロデータビットマップ２１０は、オフセット「２」に対応するビットが「０」であることから、すでに対象領域のデータがゼロデータであることを確認済みであることを示す。したがって、ゼロデータビットマップイメージ２３１に示すゼロデータビットマップ２１０は、対象領域からのデータの読み出しを要しない。また、オフセット「２」に対応する更新ビットマップ２００の更新は、データ転送を伴わない。ゼロデータビットマップイメージ２３１に示す更新ビットマップ２００のオフセット「２」に対応するビットは、対象領域からのデータの読み出しも、差分コピーもおこなわれることなく「０」に更新される。
【００７９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、ストレージ制御装置１、ストレージ装置１０、ＣＭ２０，３０が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disk）、ＤＶＤ−ＲＡＭ、ＣＤ（Compact Disc）−ＲＯＭ、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【００８０】
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【００８１】
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【００８２】
また、上記の処理機能の少なくとも一部を、ＤＳＰ、ＡＳＩＣ、ＰＬＤなどの電子回路で実現することもできる。
【符号の説明】
【００８３】
１  ストレージ制御装置
１ａ  記憶部
１ｂ  制御部
２ａ  第１の記憶領域
２ｂ  第２の記憶領域
３，３ａ，３ｂ  更新情報
４，４ａ，４ｂ  確認情報
５  ストレージシステム
６  サーバ
７  ネットワーク
１０  ストレージ装置
１１，１２  チャネルアダプタ
１３，１４  リモートアダプタ
２０，３０  コントローラモジュール（ＣＭ）
２１，３１  プロセッサ
２２，３２  メモリ
２３，２４，３３，３４  ディスクアダプタ
５０  ドライブエンクロージャ（ＤＥ）
５１，５２，５３，５４  ＨＤＤ
１００  記憶部
１１０  制御部
１１１  ゼロデータビットマップ生成部
１１２  ゼロデータ領域確認部
１１３  ゼロデータコピー削減部
２００  更新ビットマップ
２１０  ゼロデータビットマップ
２２０，２２１，２３０，２３１，２４０，２４１  ゼロデータビットマップイメージ
【図１】
2016151803.tif 000003
【図２】
2016151803.tif 000004
【図３】
2016151803.tif 000005
【図４】
2016151803.tif 000006
【図５】
2016151803.tif 000007
【図６】
2016151803.tif 000008
【図７】
2016151803.tif 000009
【図８】
2016151803.tif 000010
【図９】
2016151803.tif 000011
【図１０】
2016151803.tif 000012
【図１１】
2016151803.tif 000013
【図１２】
2016151803.tif 000014
【図１３】
2016151803.tif 000015