(57)【要約】【課題】  Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した仮想ボリュームに対する、割り当てが可能な最大容量を超える容量の書き込みを防ぐストレージ管理装置を提供する。【解決手段】  本発明のストレージ管理装置は、仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得する取得手段と、前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する設定手段とを含む。【選択図】      図９
2014119898.tif 000002
【特許請求の範囲】
【請求項１】
仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得する取得手段と、
前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する設定手段と
を含むストレージ管理装置。
【請求項２】
前記ストレージ制御部は、優先順位が設定された複数の前記仮想ボリュームの、使用中の前記区画に、前記実ボリュームの領域を割り当て、
前記取得手段は、前記第２の空き容量と、前記仮想ボリュームの各々の、前記優先順位と前記第１の空き容量を取得し、
前記設定手段は、前記仮想ボリュームの各々に対して、当該仮想ボリュームである対象ボリュームの前記優先順位より高い前記優先順位の、前記仮想ボリュームの前記第１の空き容量の和を、取得された前記第２の空き容量から除外し、当該除外後の前記第２の空き容量が前記対象ボリュームの前記第１の空き容量より小さい場合、前記第１の空き容量と前記除外後の前記第２の空き容量の差分を、前記対象ボリュームにアクセス要求を行う前記サーバに送信する
請求項１に記載のストレージ管理装置。
【請求項３】
前記設定手段は、前記第２の空き容量が前記対象ボリュームの前記第１の空き容量以上である場合、前記差分として０を前記サーバに送信する
請求項１又は２に記載のストレージ管理装置。
【請求項４】
前記実ボリュームと、前記ストレージ制御部と、前記サーバと、請求項１乃至３のいずれかに記載のストレージ管理装置を含む情報処理システム。
【請求項５】
仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得し、
前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する
ストレージ管理方法。
【請求項６】
優先順位が設定された複数の前記仮想ボリュームの、使用中の前記区画に、前記実ボリュームの領域を割り当てる前記ストレージ制御部から、前記第２の空き容量と、前記仮想ボリュームの各々の、前記優先順位と前記第１の空き容量を取得し、
前記仮想ボリュームの各々に対して、当該仮想ボリュームである対象ボリュームの前記優先順位より高い前記優先順位の、前記仮想ボリュームの前記第１の空き容量の和を、取得された前記第２の空き容量から除外し、当該除外後の前記第２の空き容量が前記対象ボリュームの前記第１の空き容量より小さい場合、前記第１の空き容量と前記除外後の前記第２の空き容量の差分を、前記対象ボリュームにアクセス要求を行う前記サーバに送信する
請求項５に記載のストレージ管理方法。
【請求項７】
前記第２の空き容量が前記対象ボリュームの前記第１の空き容量以上である場合、前記差分として０を前記サーバに送信する
請求項５又は６に記載のストレージ管理方法。
【請求項８】
コンピュータを、
仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得する取得手段と、
前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する設定手段と
して動作させるストレージ管理プログラム。
【請求項９】
コンピュータを、
優先順位が設定された複数の前記仮想ボリュームの、使用中の前記区画に、前記実ボリュームの領域を割り当てる前記ストレージ制御部から、前記第２の空き容量と、前記仮想ボリュームの各々の、前記優先順位と前記第１の空き容量を取得する前記取得手段と、
前記仮想ボリュームの各々に対して、当該仮想ボリュームである対象ボリュームの前記優先順位より高い前記優先順位の、前記仮想ボリュームの前記第１の空き容量の和を、取得された前記第２の空き容量から除外し、当該除外後の前記第２の空き容量が前記対象ボリュームの前記第１の空き容量より小さい場合、前記第１の空き容量と前記除外後の前記第２の空き容量の差分を、前記対象ボリュームにアクセス要求を行う前記サーバに送信する前記設定手段と
して動作させる請求項８に記載のストレージ管理プログラム。
【請求項１０】
前記第２の空き容量が前記対象ボリュームの前記第１の空き容量以上である場合、前記差分として０を前記サーバに送信する前記設定手段と
して動作させる請求項８又は９に記載のストレージ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ管理装置、ストレージ管理方法、及びストレージ管理プログラムに関し、特に、仮想ボリュームを利用するシステムにおけるストレージ管理装置、ストレージ管理方法、及びストレージ管理プログラムに関する。
【背景技術】
【０００２】
近年情報量が爆発的に増加しているために、ストレージに保存されるデータ量の将来の飛躍的な増大を見込んだストレージへの投資が行われることがある。その場合、将来のデータ量の予測に基づくストレージの容量と、現在のデータ量の乖離により、ストレージの利用効率の低下が起こる。ストレージの利用効率の低下を軽減する方法に、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇと呼ばれる方法がある。Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇでは、例えば将来的に必要な容量の、サーバがストレージとして認識する仮想ボリュームが、サーバに割り当てられる。仮想ボリュームには、仮想ボリュームの容量以下の物理容量のストレージが割り当てられる。サーバが仮想ボリュームに格納したデータは、仮想ボリュームに割り当てられているストレージに格納される。仮想ボリュームに対するストレージの割り当ては、適宜追加される。
【０００３】
このように、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用している場合、サーバが実際にデータを格納できる、仮想ボリュームに割り当てられいるストレージの物理容量は、サーバが仮想ボリュームの容量として認識する容量以下である。
【０００４】
特許文献１には、シン・プロビジョニング・ボリュームへのディスク割当量やシン・プロビジョニング・ボリュームのホスト使用量を監視する容量監視サーバが記載されている。そして、容量監視サーバは、同容量の論理ボリュームを静的に割り当てる場合と比べて、シン・プロビジョニング・ボリュームによって節約される物理ディスクの容量を算出する。また、容量監視サーバは、シン・プロビジョニング・ボリュームに割り当てられた物理ディスクのうち、使用されていない容量を算出する。容量監視サーバは、算出したこれらの容量を表示する。
【０００５】
特許文献２には、業務サーバと、ストレージ装置と、管理サーバを含む計算機システムが記載されている。ストレージ装置は、一つ以上の論理ユニットの記憶領域をストレージプールとして管理する。ストレージ装置は、シン・プロビジョニングによって実現されたボリュームを業務サーバ上のアプリケーションプログラムに提供する。ストレージ装置は、シン・プロビジョニング・ボリュームへの書き込み要求を受けると、ストレージプールの未使用領域を、書き込み要求を受けたシン・プロビジョニング・ボリュームに割り当てる。ストレージプールの未使用領域は、どのシン・プロビジョニング・ボリュームにも割り当てられていない領域である。管理サーバは、ストレージプールの未使用領域の容量である未使用容量を監視する。管理サーバは、ストレージプールの使用容量の増加速度と未使用領域の容量から、業務サーバが所定の期間稼働するために必要な記憶容量がストレージプールに存在するか否かを判定する。存在しないと判定された場合、管理サーバは、優先度の低いアプリケーションの書き込みの制限や稼働停止の指示を行う。あるいは、管理サーバは、優先度の低いアプリケーションから書き込み要求が行われたボリュームへの記憶領域の割り当ての禁止や、優先度の高いアプリケーションから書き込み要求が行われたボリュームへの記憶領域の優先的な割り当てを行う。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３１６７２５号公報
【特許文献２】特開２００８−０９７５０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇには、容量の利用効率の向上と導入時のＨＤＤ（Ｈａｒｄ  ｄｉｓｋ  ｄｒｉｖｅ）数を抑えてスモールスタートを可能とする利点がある。しかし、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇには、以下のような大きな課題もある。
【０００８】
前述のようにＴｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した仮想ボリュームには、その仮想ボリュームの容量以下の容量の記憶領域が割り当てられる。仮想ボリュームに書き込みを行うサーバが、仮想ボリュームの容量として認識する容量は、仮想ボリュームに割り当てられている記憶領域の容量以上の容量である。
【０００９】
サーバが、仮想ボリュームに割り当てられている記憶領域に書き込み可能な容量を超えるサイズの書き込みを、仮想ボリュームに対して行うと、一般に、仮想ボリュームに割り当てられている記憶領域が増やされる。しかし、サーバが、仮想ボリュームに対して、仮想ボリュームに割り当て可能な記憶領域の容量を超えるサイズの書き込みを行うことも考えられる。そのような場合、仮想ボリュームに書き込みを行ったアプリケーションのクラッシュや、仮想ボリュームのファイルシステムの破壊などの、重大な不具合が発生することがある。
【００１０】
例えば、仮想ボリュームがＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）によってサーバに提供されている場合、サーバは、未割り当ての記憶領域の容量を含む、仮想ボリュームに割り当てられる記憶領域の最大容量を必ずしも認識できない。仮想ボリュームの容量として設定されている容量が、仮想ボリュームに割り当てられる記憶領域の最大容量より大きくても、サーバは、設定されている容量を、仮想ボリュームの容量として認識する。サーバが、そのような仮想ボリュームに、仮想ボリュームに割り当てられる最大容量を超える書き込みを行った場合、仮想ボリュームを提供するストレージシステムは、書き込みを行える空き容量がないので、サーバにエラーを返す。一方、サーバは、設定されている仮想ボリュームの容量まで、仮想ボリュームへの書き込みが可能であると認識している。仮想ボリュームの容量を超えない書き込みに対してエラーが返されると、サーバは、仮想ボリュームのファイルシステムの管理情報と、仮想ボリュームの実際の状態に、不整合が生じたと認識する。そのため、仮想ボリュームに書き込みを行ったアプリケーションのクラッシュが発生する場合がある。また、仮想ボリュームのファイルシステムの破壊や、ファイルシステムの破壊に伴うデータの損失が発生するおそれもある。
【００１１】
また、ストレージシステムでは、仮想ボリュームに割り当てるための記憶領域である仮想プールが、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）により構成されることも多い。また、サーバが、複数の仮想ボリュームに対して、一つの仮想プールから記憶領域の割り当てを行うことがある。すなわち、複数の仮想ボリュームが一つの仮想プールを共有することがある。この場合、いずれかの仮想ボリュームに、仮想プール未割り当ての記憶領域の容量を超える記憶領域の追加が必要な書き込みが発生すると、その仮想ボリュームにファイルシステムの破壊などの重大な不具合が発生する。また、その仮想ボリュームに仮想プールの未割り当ての記憶領域が全て割り当てられるので、その仮想プールには、仮想ボリュームに割り当てることが可能な、未割り当ての記憶領域が無くなる。以降、その仮想プールを共有する仮想ボリュームに、記憶領域の割り当ての追加が必要な書き込みが発生すると、その仮想ボリュームには、重大な不具合が発生する。すなわち、未割り当ての記憶領域が無くなった仮想プールを共有する仮想ボリュームの全てに、連鎖的に、ファイルシステムの破壊などの重大な不具合が発生する可能性がある。
【００１２】
特許文献１及び特許文献２の技術では、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した仮想ボリュームに対する、書き込みが可能な最大容量を超える容量の書き込みを防ぐことはできない。
【００１３】
本発明の目的は、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した仮想ボリュームに対する、割り当てが可能な最大容量を超える容量の書き込みを防ぐストレージ管理装置を提供することにある。
【課題を解決するための手段】
【００１４】
本発明のストレージ管理装置は、仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得する取得手段と、前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する設定手段とを含む。
【００１５】
本発明のストレージ管理方法は、仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得する取得手段と、前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する設定手段とを含む。
【００１６】
本発明のストレージ管理プログラムは、コンピュータを、仮想ボリュームの使用中の区画に実ボリュームの領域を割り当て、サーバから前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリュームの空き容量である第２の空き容量を取得する取得手段と、前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバに送信する設定手段として動作させる。
【発明の効果】
【００１７】
本発明には、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した仮想ボリュームに対する、割り当てが可能な最大容量を超える容量の書き込みを防ぐことができるという効果がある。
【図面の簡単な説明】
【００１８】
【図１】図１は、第１の実施形態の情報処理システム１００の構成を表すブロック図である。
【図２】図２は、仮想ボリュームと仮想プール３０の例を表す図である。
【図３】図３は、仮想ボリュームの構成の推移の例を表す図である。
【図４】図４は、第１の実施形態のストレージ管理装置１の動作を表すフローチャートである。
【図５】図５は、第１の実施形態の割り当て記憶部１１に記憶されている、未割り当て容量と空き容量の組を含む値の例を表す図である。
【図６】図６は、第２の実施形態のストレージ管理装置１の動作を表すフローチャートである。
【図７】図７は、第２の実施形態の割り当て記憶部１１に記憶されている、未割り当て容量と空き容量の組を含む値の例を表す図である。
【図８】図８は、第１の実施形態の構成例の情報処理装置１００Ａの構成を表すブロック図である。
【００１９】
【図９】図９は、第３の実施形態のストレージ管理装置１Ｂの構成を表すブロック図である。
【発明を実施するための形態】
【００２０】
（第１の実施形態）
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００２１】
図１は、本実施形態の情報処理システム１００の構成を表すブロック図である。
【００２２】
図１を参照すると、情報処理システム１００は、ストレージ管理装置１と、サーバ２と、ストレージシステム３を含む。ストレージ管理装置１は、サーバ２と、ストレージシステム３にそれぞれ接続されている。サーバ２と、ストレージシステム３は、ネットワーク４を介して接続されている。ストレージ管理装置１は、サーバ２に含まれていてもよい。ストレージシステム３は、サーバ２に含まれていても構わない。ネットワーク４は、例えば、ファイバーチャネルによって実現される。
【００２３】
また、情報処理システム１００は、複数のサーバ２を含んでいてもよい。その場合、ストレージ管理装置１は、それぞれのサーバ２に対して、以下で説明する動作を行えばよい。情報処理システム１００は、複数のストレージシステム３を含んでいてもよい。その場合、ストレージ管理装置１は、ストレージシステム３毎に、以下で説明する動作を行えばよい。
【００２４】
ストレージ管理装置１は、取得部１０と、割り当て記憶部１１と、設定部１２を含む。
【００２５】
サーバ２は、ファイル管理部２０を含む。
【００２６】
ストレージシステム３は、記憶領域である仮想プール３０と、ストレージ制御部３１を含む。
【００２７】
仮想プール３０は、ストレージシステム３が一つの記憶装置として扱える、論理的な記憶装置である。仮想プール３０は、ＨＤＤやその他の記憶装置、すなわち記憶デバイスを、１個以上使用して構成される。仮想プール３０は、例えばＲＡＩＤにより構成された論理記憶装置である。仮想プール３０は、例えばＲＡＩＤにより構成された論理記憶装置を、複数使用して構成されていてもよい。仮想プール３０は、ストレージプールとも、実ボリュームとも呼ばれる。
【００２８】
ストレージ制御部３１は、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用して構成された仮想的な記憶装置である仮想ボリュームを、サーバ２に提供する。サーバ２は仮想ボリュームを記憶装置として認識する。ストレージ制御部３１は、仮想ボリュームの、サーバ２がデータを格納した領域に、仮想プール３０内の領域を割り当てる。ストレージ制御部３１は、仮想ボリュームを、複数の区画に分割し、区画毎に仮想プール３０内の領域を割り当てればよい。ストレージ制御部３１は、サーバ２により仮想ボリュームに書き込まれたデータを、仮想ボリュームに割り当てられた仮想プール３０内の領域に格納する。
【００２９】
ストレージ制御部３１は、仮想ボリューム内の、データが格納されていない区画には、仮想プール３０内の領域を必ずしも割り当てない。ストレージ制御部３１が仮想ボリュームに仮想プール３０内の領域を割り当てる方法は、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した既存の任意の方法でよい。例えば、ストレージ制御部３１は、仮想ボリューム内のデータが格納されている区画にだけ、仮想プール３０内の領域を割り当てる。そして、ストレージ制御部３１は、仮想ボリュームに対するデータの書き込みが発生した場合に、データの書き込み先に仮想プール３０内の領域を割り当てる。あるいは、ストレージ制御部３１は、仮想ボリューム内の、データが格納されていない区画の一部と、データが格納されている区画に、仮想プール３０内の領域を割り当てる。ストレージ制御部３１は、仮想ボリューム内の、仮想プール３０内の領域が割り当てられている領域の、データが格納されていない領域が所定容量未満になった場合に、所定容量の仮想プール３０内の領域を仮想ボリュームに割り当てる。仮想プール３０の領域が割り当てられていない、仮想ボリューム内の領域は、空き領域とも呼ばれる。仮想プール３０の領域が割り当てられていない、仮想ボリューム内の領域の容量は、空き容量とも呼ばれる。仮想プール３０の領域が割り当てられている、仮想ボリューム内の領域あるいは区画は、使用中の領域あるいは使用中の区画とも呼ばれる。
【００３０】
ストレージ制御部３１は、１台以上のサーバ２のそれぞれに、１台以上の仮想ボリュームを提供していてもよい。１つの仮想ボリュームは、１台のサーバ２に提供される。ストレージ制御部３１は、複数の仮想ボリュームに、１つの仮想プールから領域を割り当ててもよい。
【００３１】
図２は、仮想ボリュームと仮想プール３０の例を表す図である。
【００３２】
図２の例では、ストレージシステム３は、少なくとも一部の領域に、仮想プール３０の領域が割り当てられた、仮想ボリューム２００をサーバ２に提供する。仮想ボリューム２００の、仮想プール３０のサーバ２用の領域３０２が割り当てられている領域が、割り当て済み領域２０２である。仮想プール３０のの領域が割り当てられていない領域が、未割り当て領域２０１である。
【００３３】
図２の例では、ストレージシステム３は、他のサーバ２に対しても、少なくとも一部の領域に、仮想プール３０の領域が割り当てられた、仮想ボリューム２００とは別の仮想ボリューム２００Ａを提供する。仮想ボリューム２００Ａの、仮想プール３０の他のサーバ２用の領域３０２Ａが割り当てられている領域が、割り当て済み領域２０２Ａである。仮想プール３０のの領域が割り当てられていない領域が、未割り当て領域２０１Ａである。
【００３４】
仮想プール３０の、どの仮想ボリュームにも割り当てられていない領域が、空き領域３０１である。
【００３５】
割り当て済み領域２０２にデータを格納するための余地が無くなった場合、ストレージシステム３は、空き領域３０１から仮想ボリューム２００に、領域を新しく割り当てる。図２の例では、ストレージシステム３は、空き領域３０１内の領域３０３を、仮想ボリューム２００の未割り当て領域２０１内の領域２０３に割り当てる。
【００３６】
さらに、ストレージ制御部３１は、仮想プール３０内の、いずれの仮想ボリュームにも割り当てられていない領域である、空き領域の容量を、ストレージ管理装置１に送信する。また、ストレージ制御部３１は、仮想ボリューム内の、仮想プール３０内の領域が割り当てられていない領域である、未割り当て領域の容量を、ストレージ管理装置１に送信する。仮想プール３０が複数存在する場合、ストレージ制御部３１は、さらに、仮想プール３０の識別子を、ストレージ管理装置１に送信する。サーバ２が使用する仮想ボリュームが複数存在する場合、さらに、仮想ボリュームの識別子を、ストレージ管理装置１に送信する。サーバ２が複数存在する場合、ストレージ制御部３１は、さらに、仮想ボリュームを使用するサーバ２の識別子を、ストレージ管理装置１に送信する。
【００３７】
ファイル管理部２０は、サーバ２の図示されないプロセッサから、仮想ボリュームへのデータの入出力の指示を受信し、指示に従って仮想ボリュームへのデータの入出力を行う。ファイル管理部２０は、ファイルシステムを利用して、仮想ボリュームに対して、書き込みや読み出しや削除等のデータの操作を行う。ファイル管理部２０は、データを、ファイルとして、仮想ボリュームに格納する。仮想ボリュームにファイルとして格納されたデータの管理情報は、仮想ボリュームのファイル管理領域に格納される。
【００３８】
また、ファイル管理部２０は、プロテクト領域を作成する指示を、設定部１２から受信する。プロテクト領域を作成する指示は、サーバ２が書き込みを行えない領域であるプロテクト領域の容量の情報を含む。プロテクト領域を作成する指示を受信したファイル管理部２０は、受信した容量のプロテクト領域を、仮想ボリュームの未割り当て領域内に設定する。ファイル管理部２０は、仮想ボリューム内の未割り当て領域の範囲を、例えばストレージシステム３から取得してもよい。そして、ファイル管理部２０は、仮想ボリューム内の未割り当て領域内に、プロテクト領域を設定すればよい。仮想ボリュームで、仮想プール３０の領域が割り当てられる順序が、例えば仮想ボリュームの先頭あるいは末尾から順次割り当てるように、予め定まっている場合、ファイル管理部２０は、仮想ボリューム内の未割り当て領域の範囲を取得しなくて良い。ファイル管理部２０は、仮想ボリューム内の、仮想プールの領域が割り当てられる順番が最も遅い方から、受信したプロテクト領域の容量分の領域を選択し、選択された領域をプロテクト領域に設定すればよい。
【００３９】
ファイル管理部２０によるプロテクト領域の設定方法は、プロテクト領域として設定された仮想ボリューム内の領域に、サーバ２が書き込めないようにする方法であれば、任意でよい。ファイル管理部２０は、仮想ボリュームのファイル管理領域の管理情報を変更して、受信した容量のアクセスできない領域を、仮想ボリュームの空き領域内に生成すればよい。例えば、ファイル管理部２０は、仮想ボリュームのファイル管理領域に格納されている管理情報に、プロテクト領域全体を占め、書き込みを行えないファイルの、エントリだけを生成する。ただし、ファイル管理部２０は、プロテクト領域には書き込みなどのアクセスを行わない。ストレージシステム３は、プロテクト領域に、仮想プールの領域を割り当てない。
【００４０】
また、ファイル管理部２０は、プロテクト領域の容量を含む、プロテクト領域の容量を変更する指示を、ストレージ管理装置１の設定部１２から受信する。プロテクト領域の容量を変更する指示を受信したファイル管理部２０は、プロテクト領域の容量を、受信した容量に変更する。また、ファイル管理部２０は、プロテクト領域を削除する指示を受信する。プロテクト領域を削除する指示を受信したファイル管理部２０は、プロテクト領域を削除する。
【００４１】
なお、プロテクト領域を生成する指示、プロテクト領域の容量を変更する指示、及びプロテクト領域を削除する指示は、いずれも、プロテクト領域の容量そのものであってもよい。プロテクト領域の容量を受信した場合、ファイル管理部２０は、プロテクト領域が無ければ、受信した容量のプロテクト領域を生成する。ファイル管理部２０は、受信した容量と仮想ボリュームに存在するプロテクト領域の容量が異なっていれば、プロテクト領域の容量を受信した容量に変更する。ファイル管理部２０は、受信したプロテクト領域の容量が０であり、仮想ボリュームにプロテクト領域が存在している場合、プロテクト領域を削除する。受信したプロテクト領域の容量と、仮想ボリュームに存在するプロテクト領域の容量が等しければ、ファイル管理部２０は何もしない。
【００４２】
ファイル管理部２０は、例えば取得部１０からの要求に応じて、仮想ボリューム内に存在するプロテクト領域の容量を、取得部１０に送信してもよい。
【００４３】
図３は、仮想ボリュームの構成の推移の例を表す図である。
【００４４】
図３の例では、仮想ボリュームは１から１５までの区画に分割されている。（ａ）の状態では、１から４の区画に仮想プール３０の領域が割り当てられている。これらの区画が、図２の割り当て済み領域２０２である。６から１５までの区画には、仮想プール３０の領域は割り当てられていない。これらの区画が、図２の未割り当て領域２０１である。
【００４５】
（ａ）の状態と（ｂ）の状態の間で、仮想ボリュームの区画に新しく仮想プール３０の領域が割り当てられている。
【００４６】
（ｂ）の状態では、区画５にも仮想プールの領域が割り当てられている。区画５が、図２の領域２０３に相当する。６から１５までの区画が、未割り当て領域２０１である。また、区画２は、格納されていたデータが削除された区画である。仮想ボリューム内の一旦仮想プール３０の領域が割り当てられると、その領域に格納されていたデータが削除されても、仮想プール３０の領域の割り当ては解除されない。
【００４７】
（ｂ）の状態と（ｃ）の状態の間で、ファイル管理部２０はストレージ管理装置１の設定部１２から、プロテクト領域を設定する指示を受信する。
【００４８】
（ｃ）の状態では、１３から１５までの領域が、プロテクト領域である。プロテクト領域は、未割り当て領域２０１内に設定されている。
【００４９】
取得部１０は、ストレージ制御部３１から、仮想プール３０内の、いずれの仮想ボリュームにも割り当てられていない、空き領域の容量を取得する。空き領域の容量は、空き容量とも表記される。また、取得部１０は、ストレージ制御部３１から、仮想プール３０から領域が割り当てられる仮想ボリューム内の、仮想プール３０内の領域が割り当てられていない、未割り当て領域の容量を取得する。未割り当て領域の容量は、未割り当て容量とも表記される。取得部１０は、取得された空き領域の容量及び未割り当て領域の容量の組を、割り当て記憶部１１に格納する。
【００５０】
割り当て記憶部１１は、空き領域の容量及び未割り当て領域の容量の組をを記憶する。
【００５１】
設定部１２は、未割り当て領域の容量より空き領域の容量が小さい場合、未割り当て領域から空き領域を引いた容量のプロテクト領域を生成する指示を、サーバ２に送信する。
【００５２】
次に、本実施形態のストレージ管理装置１の動作について、図面を参照して詳細に説明する。
【００５３】
図４は、本実施形態のストレージ管理装置１の動作を表すフローチャートである。
【００５４】
ストレージ管理装置１は、例えば所定の時間毎に、図４の動作を行う。一つの仮想プールから、複数の仮想ボリュームに領域が割り当てられている場合、全ての仮想ボリュームに対して、図４の動作を行えばよい。さらに、複数の仮想プールが存在する場合は、仮想プール毎に、図４の動作を行えばよい。
【００５５】
まず、取得部１０が、ストレージシステム３のストレージ管理部３１から、仮想ボリュームの未割り当て領域の容量と、仮想プール３０の空き領域の容量を取得する（ステップＳ１０１）。仮想プール３０の空き領域の容量である空き容量は、仮想ボリュームに新たに割り当てることが可能な領域の容量である割り当て可能容量である。取得部１０は、取得された、未割り当て容量と空き容量の組を、割り当て記憶部１１に格納する。同じ仮想ボリュームと仮想プールの組み合わせの、未割り当て容量と空き容量の組が、割り当て記憶部１１に格納されている場合、取得部１０は、値を上書きすればよい。
【００５６】
ストレージシステム３が複数の仮想ボリュームを提供する場合、取得部１０は、さらに、仮想ボリュームの識別子（ＩＤ、Ｉｄｅｎｔｉｆｉｅｒ）を取得する。複数のサーバ２が存在する場合、取得部１０は、さらに、サーバ２の識別子を取得する。取得部１０は、さらに、仮想ボリュームの容量を取得してもよい。それぞれ別の仮想プール３０を含む複数のストレージシステム３が存在していたり、１台のストレージシステム３が複数の仮想プール３０を含んでいる場合、取得部１０は、さらに、仮想プールの識別子を取得する。これらの場合、取得部１０は、さらに、取得された上述の、仮想ボリュームの識別子や、サーバ２の識別子や、仮想ボリュームの容量や仮想プールの識別子を、前述の未割り当て容量と空き容量の組に対応付けて、割り当て記憶部１１に格納する。
【００５７】
取得部１０は、さらに、サーバ２から、仮想ボリュームの識別子と、例えばサーバ２で動作するアプリケーションプログラムが、その仮想ボリュームを識別するためのディスクの識別子を取得してもよい。また、取得部１０は、サーバ２から、サーバ２がまだデータを格納していない、仮想ボリュームの領域の容量である、仮想ボリュームの空き容量を取得してもよい。ディスクの識別子は、例えば、ディスクのドライブ番号や取得部１０は、設定されているプロテクト領域の容量を取得してもよい。この場合、取得部１０は、さらに、取得されたディスクの識別子や、仮想ボリュームの空き容量や、プロテクト領域の容量を、前述の組に対応付けて、割り当て記憶部１１に格納してもよい。
【００５８】
図５は、割り当て記憶部１１に記憶されている、未割り当て容量と空き容量の組を含む値の例を表す図である。以下では、図５の例で表される情報は、統合マップとも表記される。
【００５９】
図５の「仮想プール番号」が、仮想プール３０の識別子である。「仮想プール未割り当て物理容量」が、仮想プール３０の空き容量である。「仮想ボリューム未割り当て容量」が、仮想ボリュームの未割り当て容量である。「サーバ割り当てディスク情報」が、ディスクの識別子である。「ファイルシステム空き容量」が、仮想ボリュームの、データが格納されていない領域の容量である。「プロテクト領域」が、プロテクト領域の容量である。
【００６０】
次に、未割り当て領域の容量が、空き領域（割り当て可能領域）の容量より小さい場合（ステップＳ１０２、Ｙ）、ストレージ管理装置１は、処理を終了する。
【００６１】
未割り当て領域の容量が、空き領域（割り当て可能領域）の容量より大きい場合（ステップＳ１０２、Ｎ）、設定部１２は、未割り当て領域の容量から空き領域の容量を引いた容量を算出する（ステップＳ１０３）。
【００６２】
設定部１２は、算出された容量のプロテクト領域を、仮想ボリュームの未割り当て領域内に設定する指示を、サーバ２のファイル管理部２０に送信する（ステップＳ１０４）。前述のようにプロテクト領域を設定する指示は、算出された容量（設定される仮想ボリュームの容量）そのものであってもよい。
【００６３】
指示を受信したファイル管理部２０は、前述のように、仮想ボリュームのみ割り当て領域内に、受信した容量のプロテクト領域を設定する。
【００６４】
以上で説明した本実施形態には、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用した仮想ボリュームに対する、割り当てが可能な最大容量を超える容量の書き込みを防ぐことができるという第１の効果がある。
【００６５】
その理由は、設定部１２が、仮想ボリュームの未割り当て領域内に、サーバ２が書き込めないプロテクト領域を設定する指示を、サーバ２に対して送信するからである。設定部１２は、プロテクト領域の容量を、仮想ボリュームの未割り当て領域の容量から仮想プールの空き領域の容量を引いた容量に設定する。仮想プールの空き領域の容量は、ストレージが仮想ボリュームに新たに割り当てることができる仮想プールの領域の容量である。仮想ボリュームの未割り当て領域内に上述の容量のプロテクト領域を設定することで、サーバ２は、仮想ボリュームに仮想プールの空き容量を全て割り当てた場合の仮想ボリュームのデータの書き込みが可能な容量が、仮想ボリュームの残り容量であると認識する。そのため、サーバ２は、仮想ボリュームに対して、書き込みが可能な最大容量を超える容量のデータを書き込むことが無くなる。
【００６６】
さらに、本実施形態には、仮想ボリュームに、割り当てが可能な最大容量を超える容量のデータが書き込まれることによって生じる、データの損失を防ぐことができるという第２の効果がある。
【００６７】
その理由は、第１の効果の理由と同じである。
【００６８】
仮想ボリュームに対して実際に書き込みが可能な範囲は、仮想プールから領域を割り当てることが可能な範囲に限られる。従って、サーバ２が、仮想ボリュームに対して、仮想プールから仮想ボリュームに領域を割り当てることが可能な容量を超える容量の書き込みを行った場合、仮想プールから領域が割り当てられていない領域にデータが書き込まれる、エラーが発生する。一方、サーバ２は、仮想ボリューム全体に書き込みが可能であると認識している。全体が書き込み可能であると認識されている仮想ボリュームへの書き込みによりエラーが発生した場合、サーバ２は、仮想ボリュームの状態と、仮想ボリュームのファイルシステムの管理情報に、不整合があると認識する。その場合、例えばサーバ２が自動的に仮想ボリュームのファイルシステムの修復を行おうとすることにより、ファイルシステムの管理情報が破壊され、仮想ボリュームに格納されているデータが失われることがある。設定部１２が、前述のような容量のプロテクト領域を仮想ボリュームの未割り当て領域に設定することにより、仮想プールから仮想ボリュームに領域を割り当てることが可能な容量を超える容量の書き込みが、仮想ボリュームに対して行われなくなる。従って、データの損失を防ぐことができる。
【００６９】
また、本実施形態には、同一の仮想プールから複数の仮想ボリュームに領域が割り当てられる場合でも、上述の各効果がある。
【００７０】
その理由は、取得部１０が、仮想ボリュームの未割り当て領域の容量と、仮想プールの空き領域の容量を、ストレージシステム３から取得するからである。従って、他の仮想ボリュームに仮想プールから領域が割り当てられ、仮想プールの空き領域の容量が変化しても、設定部１２は、仮想プールの空き容量に応じた容量のプロテクト領域を設定することができる。
【００７１】
また、本実施形態には、同一の仮想プールから複数の仮想ボリュームに領域が割り当てられる場合に、各仮想ボリュームにおける連鎖的なエラーの発生やデータの損失を防ぐことができるという効果もある。いずれかの仮想ボリュームに対して、例えば仮想プールの空き領域が全て割り当てられる量のデータの書き込みが発生すると、他の仮想ボリュームに新たに割り当てることができる仮想プールの領域がなくなる。この場合、いずれかの仮想ボリュームに、さらに、新たに仮想プールの領域の割り当てが必要な量の書き込みが発生すると、前述のようにエラーが発生する。そして、その仮想ボリュームで、データの損失が発生するおそれがある。したがって、いずれかの仮想ボリュームで、仮想プールの空き領域が全て割り当てられる量のデータの書き込みが発生すると、他の仮想ボリュームでも、連鎖的にエラーが発生し、さらに、データの損失が発生するおそれがある。
【００７２】
本実施形態のストレージ管理装置１は、各仮想ボリュームに対して前述のプロテクト領域を設定することにより、いずれの仮想ボリュームでもエラーの発生やデータの損失を防ぐことができる。すなわち、本実施形態のストレージ管理装置１は、同一の仮想プールから複数の仮想ボリュームに領域が割り当てられる場合に、各仮想ボリュームにおける連鎖的なエラーの発生やデータの損失を防ぐことができる。
【００７３】
（第２の実施形態）
次に、本発明の第２の実施形態について、図面を参照して詳細に説明する。
【００７４】
本実施形態の情報処理システム１００の構成は、図１の、第１の実施形態の情報処理システム１００の構成と同じである。
【００７５】
本実施形態では、ストレージシステム３は、複数の仮想ボリュームを、１台以上のサーバ２に提供する。各サーバ２に提供される仮想ボリュームは、１つであっても、複数であってもよい。また、各仮想ボリュームには優先順位が設定されている。複数の仮想ボリュームの優先順位が同じであってもよい。
【００７６】
取得部１０は、仮想ボリュームの未割り当て容量と、その仮想ボリュームに領域が割り当てられる仮想プール３０の空き容量の組と、仮想ボリュームの識別子と、その仮想ボリュームの優先順位を、ストレージシステム３から取得する。取得部１０は、取得された組と優先順位とを対応付けて、割り当て記憶部１１に格納する。取得部１０は、さらに、複数のサーバ２の存在する場合はサーバ２の識別子を、複数の仮想プール３０が存在する場合は仮想プール３０の識別子を、ストレージシステム３から取得してもよい。その場合、取得部１０は、取得されたサーバ２の識別子や仮想プール３０の識別子を、未割り当て容量と空き容量の組に対応付けて、割り当て記憶部１１に格納する。
【００７７】
設定部１２は、各仮想ボリュームに対して、その仮想ボリュームの優先順位より優先順位が高い仮想ボリュームの未割り当て領域の容量の和を算出する。そして、空き領域の容量から、算出された容量の和を引いた容量を、その仮想ボリュームに対するプロテクト領域の容量にする。そして、その仮想ボリュームの提供先のサーバ２に対して、算出された容量のプロテクト領域を、仮想ボリュームの未割り当て領域内に設定する指示を送信する。
【００７８】
次に、本実施形態のストレージ制御装置１の動作について、図面を参照して詳細に説明する。
【００７９】
図６は、本実施形態のストレージ制御装置１の動作を表すフローチャートである。
【００８０】
ストレージ制御装置１は、例えば所定の時間毎に、スケジュールに従って、図６の動作を行う。仮想プールが複数存在する場合、ストレージ制御装置１は、各仮想プールに対して、図６の動作を行えばよい。
【００８１】
まず、取得部１０は、仮想プールの空き容量（割り当て可能容量）と、その仮想プールから領域が割り当てられる各仮想ボリュームの、未割り当て領域の容量を、ストレージシステム３のストレージ制御部３１から取得する（ステップＳ２０１）。本実施形態では、前述のように、取得部１０は、さらに、各仮想ボリュームの識別子と優先順位を取得する。取得部１０は、仮想ボリュームの識別子と、仮想ボリュームの未割り当て領域と、仮想ボリュームに領域が割り当てられる仮想プールの空き容量と、仮想ボリュームの優先順位を対応付けて、割り当て記憶部１１に格納する。
【００８２】
複数の仮想プールが存在する場合、取得部１０は、さらに、仮想プールの識別子を取得する。取得部１０は、仮想ボリュームの容量や、仮想ボリュームのデータが格納されていない領域の容量や、設定されているプロテクト領域の容量や、仮想ボリュームのディスク番号を取得してもよい。この場合、取得部１０は、ストレージ管理部３１から取得した値を、仮想ボリューム毎に対応付けて、割り当て記憶部１１に格納する。
【００８３】
図７は本実施形態の割り当て記憶部１１に記憶されている、未割り当て容量と空き容量の組を含む値の例を表す図である。図７の例では、割り当て記憶部１１は、図５の例に加えて、仮想ボリュームの優先順位を記憶している。
【００８４】
未選択の仮想ボリュームがある場合（ステップＳ２０２、Ｙ）、設定部１２は、未選択の仮想ボリュームから一つの仮想ボリュームを選択する（ステップＳ２０３）。設定部１２は、例えば、優先順位が高い方から仮想ボリュームを選択することができる。
【００８５】
次に、設定部１２は、選択された仮想ボリュームより優先順位が高い仮想ボリュームの、未割り当て領域の容量の和を算出する（ステップＳ２０４）。
【００８６】
設定部１２は、仮想プールの空き容量から、算出された和を除外した除外後の空き容量を算出する（ステップＳ２０５）。ステップＳ２０５では、仮想プールの空き容量より算出された和が小さい場合、設定部１２は、仮想プールの空き容量から算出された和を引くことで、除外後の空き容量を算出する。仮想プールの空き容量が算出された和以下である場合、設定部１２は、仮想プールの空き容量から、空き容量を全て除外する。すなわち、この場合の除外後の空き容量は０である。この除外後の空き容量は、選択された仮想ボリュームより優先順位が高い仮想ボリュームの全ての未割り当て領域に、仮想プールから領域を割り当てた場合の、仮想プールの空き領域の容量である。ステップＳ２０５の動作は、優先順位が高い仮想ボリュームから順に、仮想ボリュームに仮想プール３０の領域が割り当てられるようにするための動作である。
【００８７】
選択された仮想ボリュームの未割り当て容量が、除外後の空き容量以下である場合（ステップＳ２０６、Ｎ）、動作はステップＳ２０２に戻る。
【００８８】
選択された仮想ボリュームの未割り当て容量より、除外後の空き容量が小さい場合（ステップＳ２０６、Ｙ）、設定部１２は、選択された仮想ボリュームの未割り当て容量から除外後の空き容量を引いた容量を算出する（ステップＳ２０７）。
【００８９】
設定部１２は、ステップＳ２０７で算出された容量のプロテクト領域を、選択された仮想ボリュームの未割り当て領域内に設定する指示を、選択された仮想ボリュームを利用するサーバ２のファイル管理部２０に送信する（ステップＳ２０８）。前述のように、設定部１２がサーバ２に送信するプロテクト領域を設定する指示は、設定されるプロテクト領域の容量を含む。設定部１２がサーバ２に送信するプロテクト領域を設定する指示は、プロテクト領域の容量そのものであってもよい。サーバ２が複数の仮想ボリュームを利用している場合、設定部１２は、加えて、仮想ボリュームの識別子を、サーバ２のファイル管理部２０に送信すればよい。
【００９０】
指示を受信したサーバ２のファイル管理部２０は、受信した容量のプロテクト領域を、仮想ボリュームの未割り当て領域内に設定する。
【００９１】
ステップＳ２０８の後、動作はステップＳ２０２に戻る。
【００９２】
設定部１２が全ての仮想ボリュームを選択し終え、未選択の仮想ボリュームが存在しない場合（ステップＳ２０２、Ｎ）、ストレージ管理装置１は動作を終了する。
【００９３】
以上で説明した本実施形態には、第１の実施形態の各効果に加えて、優先順位の高い仮想ボリュームにおける、容量超過による書き込みの失敗を減少させることができるという効果がある。
【００９４】
その理由は、設定部１２が、各仮想ボリュームに対して、仮想ボリュームの優先順位に応じて、上述ように算出された容量のプロテクト領域を設定するからである。上述のように、設定部１２は、プロテクト領域を設定する対象の仮想ボリュームより優先順位が高い仮想ボリュームの、未割り当て領域の容量の和を算出する。そして、設定部１２は、仮想プールの空き容量から、算出された和を除外した除外後の空き容量を算出する。前述のように、この除外後の空き容量は、プロテクト領域を設定する対象の仮想ボリュームより優先順位が高い仮想ボリュームの全ての未割り当て領域に、仮想プールから領域を割り当てた場合の、仮想プールの空き領域の容量である。プロテクト領域を設定する対象の仮想ボリュームの未割り当て容量より、除外後の空き容量が小さい場合、設定部１２は、その仮想ボリュームの未割り当て容量から除外後の空き容量を引いた容量を、プロテクト領域の容量として算出する。設定部１２は、算出された容量のプロテクト領域を、プロテクト領域を設定する対象の仮想ボリュームの未割り当て領域に設定する。
【００９５】
以上のように、仮想ボリュームのそれぞれに対して、その仮想ボリュームより優先順位が高い全ての仮想ボリュームの未割り当て領域に仮想プールから領域を割り当てられた状態における、プロテクト領域の容量が算出される。従って、優先順位が高い仮想ボリュームほど、プロテクト領域が設定されることによる書き込み可能な容量の減少が起きにくい。よって、優先順位が高い仮想ボリュームほど、プロテクト領域の設定によって生じる書き込み可能な容量の減少に起因する、容量超過による書き込みの失敗が減少する。
【００９６】
（第３の実施形態）
次に、本発明の第３の実施形態について、図面を参照して詳細に説明する。
【００９７】
図９は、本実施形態のストレージ管理装置１Ｂの構成を表すブロック図である。
【００９８】
図９を参照すると、本実施形態のストレージ管理装置１Ｂは、仮想ボリュームの使用中の区画に実ボリューム３０の領域を割り当て、サーバ２から前記区画へのアクセス要求を取得して、前記区画に割り当てられた前記領域へのアクセスを行うストレージ制御部３１から、前記仮想ボリュームの空き容量である第１の空き容量と、前記実ボリューム３０の空き容量である第２の空き容量を取得する取得部１０と、前記第２の空き容量が前記第１の空き容量より小さい場合に両者の差分を、前記仮想ボリュームの全容量のうち前記差分を差し引いて使用する前記サーバ２に送信する設定部１２とを含む。
【００９９】
以上で説明した本実施形態には、第１の実施形態の第１の効果と同じ効果がある。
【０１００】
その理由は、第１の実施形態の第１の効果の理由と同じである。
【０１０１】
（第１の実施形態の構成例）
次に、第１の実施形態の構成例について、図面を参照して詳細に説明する。
【０１０２】
図８は、本構成例の情報処理装置１００Ａの構成を表すブロック図である。
【０１０３】
図８を参照すると、情報処理装置１００Ａは、サーバ２Ａと、ストレージシステム３を含む。サーバ２Ａとストレージシステム３は接続されている。本構成例では、第１の実施形態のストレージ管理装置１として動作する連携モジュール１Ａはサーバ２Ａに含まれる。本構成例では、サーバ２Ａに含まれるプロセッサと、そのプロセッサを第１の実施形態のストレージ管理装置１として動作させるプログラムにより、連携モジュール１Ａが実現される。
【０１０４】
提携モジュール１Ａは、例えば図５の例のような統合マップである統合マップ１０１を記憶する割り当て記憶部１１と、統合モジュール１０２と、ＳＴ（Ｓｔｏｒａｇｅ）モジュール１０３と、ＳＶ（Ｓｅｒｖｅｒ）モジュール１０４を含む。
【０１０５】
ＳＴモジュール１０３は、ストレージシステム３から仮想ボリュームの物理容量等の情報入手を行う。ＳＶモジュール１０４は、サーバ２Ａ上のディスク情報やファイルシステム情報の入手を行い、ファイルシステム上にプロテクト領域を確保する指示を情報処理部２１０に送信する。統合モジュール１０２は、各モジュールへの指示を行い、ストレージシステム３の情報とサーバ２Ａの情報を統合し統合マップ１０１として管理する。
【０１０６】
統合モジュール１０２と、ＳＴモジュール１０３と、ＳＶモジュール１０４が、第１の実施形態の取得部１０として動作する。また、統合モジュール１０２と、ＳＶモジュール１０４が、第１の実施形態の設定部１２として動作する。
【０１０７】
サーバ２Ａは、第１の実施形態のファイル管理部２０として動作する、情報処理部２１０を含む。本構成例では、サーバ２Ａに含まれるプロセッサと、プロセッサが実行するＯＳと、プロセッサをファイル管理モジュール２１２として動作させるプログラムにより、情報処理部２１０が実現される。
【０１０８】
ストレージシステム３は、ストレージアクセスモジュール３１１とメインコントローラ３１２を含むストレージ制御部３１と、仮想プール３０を含む。
【０１０９】
まず、本変形例の概要を説明する。
【０１１０】
連携モジュール１Ａ内の統合モジュール１０２は、ＳＴモジュール１０３に、ストレージシステム３へのアクセスを、定期的に指示する。指示を受けたＳＴモジュール１０３は、仮想ボリュームでまだ割当てられていない物理容量、仮想プールでまだ仮想ボリュームに割当てられていない書き込み利用可能な物理容量を、ストレージシステム３から取得する。また、ＳＴモジュール１０３は、さらに、サーバ２Ａに割当てられている仮想ボリューム番号、仮想ボリュームの仮想容量、仮想ボリュームを作成した仮想プール番号の情報等を、ストレージシステム３から取得する。
【０１１１】
なお、本変形例の説明において、仮想ボリュームでまだ割当てられていない物理容量、仮想ボリュームでまだ割当てが発生していない未割当て仮想容量等は、上述の各実施形態の説明における、仮想ボリュームの未割り当て領域の容量である。また、仮想ボリュームに割り当てられている物理容量、仮想ボリュームの割り当て済み物理容量等は、上述の各実施形態の説明における、仮想ボリュームの割り当て済み領域の容量である。さらに、仮想プールの利用できる物理容量、仮想プールの利用可能な物理容量、仮想プールの割り当て可能な物理容量等は、上述の各実施形態の説明における、仮想プールの空き領域の容量である。
【０１１２】
また同様に統合モジュール１０２は、ＳＶモジュール１０４に、サーバ２ＡのＯＳ２１１及びファイル管理モジュール２１２を含む情報処理部２１０へのアクセスを、定期的に指示する。指示を受けたＳＶモジュール１０４は、ストレージから割当てられたディスクの情報、ファイルシステムの空き容量の情報等を取得する。ＳＴモジュール１０３とＳＶモジュール１０４は、取得した情報を、統合モジュール１０２に渡す。統合モジュール１０２は、ＳＴモジュール１０３及びＳＶモジュール１０４から渡された情報を統合する。すなわち、統合モジュール１０２は、どの仮想ボリュームがＯＳ上のどのディスクに割当てられているか、そのディスクの使用量がどの程度か、仮想ボリュームに割り当てられているかを、統合マップ１０１に入力する。
【０１１３】
次に統合モジュール１０２は統合マップ１０１を確認し、仮想ボリュームでまだ割当てが発生していない未割当て仮想容量と、仮想プールの利用できる物理容量を比較する。このとき未割当て仮想容量が利用可能な物理容量より少ない場合は、連携モジュール１Ａは、次の情報確認処理まで処理を停止する。未割当て仮想容量が物理容量より多い場合は、統合モジュール１０２は、仮想ボリュームの未割当て仮想容量と利用可能な物理容量の差を算出する。そして、統合モジュール１０２は、算出された差と等しいサイズのプロテクト領域を、仮想ボリューム上のファイル管理モジュール２１２と連携して確保するよう、ＳＶモジュール１０４に指示する。
【０１１４】
指示を受けたＳＶモジュール１０４は、ファイル管理モジュール２１２に働きかけて、プロテクト領域を確保させる。このときファイル管理モジュール２１２は、ファイルシステム上でまだ書き込みが発生しておらず、仮想プールから領域が割り当てられていない領域に、プロテクト領域を確保する。その理由は、仮想ボリュームに割り当てられている物理容量の情報と、ファイル管理モジュール２１２が認識している使用容量が異なることがあるためである。この現象は、Ｔｈｉｎ  Ｐｒｏｖｉｓｉｏｎｉｎｇを利用する場合、一度仮想プールから割当てられた物理容量は、仮想ボリュームから開放されないために生じる。ファイルシステム上では、ファイルなどが削除されてそのファイルの領域が開放されても、ストレージシステム３上では、仮想プールから仮想ボリュームに割り当てられた領域は、開放さない。そのため、仮想ボリュームの、ファイルシステム上では空き領域となっており、仮想プールの領域が既に割り当てられている領域に、サーバ２が書き込みを行っても、障害が発生することはない。しかし、ファイルシステム上では空き領域となっており、仮想プールの領域が既に割り当てられている、仮想ボリュームの領域に、プロテクト領域が確保された場合、サーバ２Ａがその領域を利用できなくなる。さらに、仮想ボリュームの未割当て仮想容量と、仮想プールの利用可能な物理容量の差と等しいサイズのプロテクト領域が確保されていても、仮想ボリュームに仮想プールの領域が割り当てられない領域が生じる。そのため、ファイルシステム上利用できる容量の全てをサーバ２Ａが利用しようとすると、障害が発生するおそれがある。そのため、ファイル管理モジュール２１２は、一度でもファイルシステムで割当てた領域が除外された空き領域に、プロテクト領域を確保する。
【０１１５】
このプロテクト領域は、ファイルシステム上の容量の枠を確保するだけのための、実データがない領域である。ファイル管理モジュール２１２は、プロテクト領域のサイズ分の論理容量及び物理容量を、仮想ボリュームに実際に割当てない。しかし、プロテクト領域が確保されると、ファイルシステム上、確保した容量と同じだけ、仮想ボリュームの空き領域が使用されたように見える。そのため、プロテクト領域を確保することにより、書き込みできる容量を、仮想ボリュームに割り当て可能な物理容量に制限することができる。これにより、サーバ２Ａからは、仮想ボリュームに割り当て可能な物理容量より大きい空き容量が、仮想ボリュームに存在しないように見える。そのため、サーバ２Ａは、仮想ボリュームで実際に利用可能な物理容量以上の書き込みを、仮想ボリュームに行えない。その際、例えばサーバ２Ａで動作するプログラムにより、サーバ２Ａが、仮想ボリュームで実際に利用可能な物理容量以上の書き込みを行おうとした場合、ファイル管理モジュール２１２が、データが書き込まれることを防ぐ。そのため、容量超過になる書き込み自体は失敗するが、ファイルシステム自体が不整合を起こすことはない。そして、ファイルシステム上のデータが破壊されることはなくなる。そして、失敗した書き込み以外のデータを保護することが出来る。
【０１１６】
また、提携モジュール１Ａは、仮想ボリュームでまだ割当てられていない物理容量や、仮想プールでまだ仮想ボリュームに割当てられていない書き込み利用可能な物理容量の取得からプロテクト領域の確保までの処理を、定期的に繰り返す。これにより統合マップ１０１の情報は更新さる。そして、仮想ボリュームの空き容量と利用可能な物理容量との差が、確保されているプロテクト領域の容量と異なる場合、プロテクト領域の容量は変更される。これにより、同じ仮想プールから領域が割り当てられる他の仮想ボリュームを利用しているほかのサーバからの書き込みによる、仮想プールの利用可能な物理容量の変化にも対応することができる。前述のように、通常、サーバによるボリュームの管理はサーバ内で閉じているため、サーバは別のサーバの書き込み量に関しては感知できない。しかし、本発明の各実施形態では、別サーバの書き込みについても柔軟に対応することができる。これにより、物理容量を超える書き込みが発生した場合、ファイルシステム上、利用可能な物理容量より大きい空き容量は無いので、発生するエラーは、一般的な書き込み失敗と同様に、書き込み中のファイルの書き込み失敗だけである。サーバ２Ａは、ファイルシステムが破壊されることを防ぐことができる。そして、サーバ２Ａは、データ損失を最小限に抑えることができる。また一般的に困難とされている複数サーバ間での物理容量の使用率に合わせたデータ保護も実現される。
【０１１７】
次に、本変形例について詳細に説明する。
【０１１８】
割り当て記憶部１１は、ストレージシステム３上の情報とサーバ２Ａ上の情報が紐付けされている統合マップ１０１を記憶する。前述のように、図５は統合マップ１０１の一例を表す。統合マップ１０１は、プロテクト領域を確保するための情報を含む。統合マップ１０１は、例えば、、仮想プール番号、仮想プール未割当て容量、仮想ボリューム番号、仮想ボリュームサイズ、仮想ボリューム未割当て物理容量、サーバ割当てディスク番号、ファイルシステム空き容量を含む。仮想プール番号は、ストレージシステム３内で仮想プールを判別するための、一意に割り当てられた番号である。仮想プール番号により、ストレージシステム３内において対象の仮想プールがどの仮想プールであるか、判別することが可能である。仮想プール未割当て容量は、仮想プール内で、まだ仮想ボリュームに割当てられていない物理容量である。仮想プール未割当て容量により、あとどの位仮想ボリュームに領域を割当てられるか判断することが可能である。仮想ボリューム番号は、ストレージシステム３内で仮想ボリュームを判別するための、一意に割り当てられた番号である。仮想ボリューム番号により、対象の仮想ボリュームがどの仮想ボリュームであるか、ストレージシステム３内で判別することができる。仮想ボリュームサイズは、仮想ボリュームに設定されているボリュームサイズである。仮想ボリュームサイズにより、対象の仮想ボリュームが利用できる容量を判別することができる。仮想ボリューム未割当て物理容量は、仮想ボリュームでまだ割当てられない物理容量である。仮想ボリューム未割当て物理容量により、仮想ボリュームに設定されているサイズの内、まだ物理容量が割当てられていない容量が分かる。サーバ割当てディスク情報は、サーバ２Ａ上で仮想ボリュームが割当てられているディスク情報である。サーバ割当てディスク情報により、ＳＶモジュール１０４が連携するファイル管理モジュール２１２は、対象の仮想ボリュームがサーバ２Ａ上のどのディスクとして割当てられているか判別できる。ファイルシステム空き容量は、対象の仮想ボリューム上に作成されたファイルシステム領域の空き容量である。ファイルシステム空き容量により、ファイルシステム内とストレージシステム３内の情報の差異の確認かできる。差異がある場合、プロテクト領域を確保する時、ファイルシステム上で書き込みが発生していない領域に、プロテクト領域を確保するように働きかけることができる。図５のプロテクト領域は、既に作成したプロテクト領域の容量である。まだプロテクト領域が確保されていない場合、プロテクト領域の容量は含まれない。プロテクト領域の容量により、物理容量が足りないボリュームに対して保護が働いているか確認することができる。また、次回の処理で実際の空き容量に変化があった場合、既に確保されている容量と算出された容量を比較することで、プロテクト領域のサイズ変更を行うことができる。そして、データを保護することができる。
【０１１９】
統合モジュール１０２は、ＳＴモジュール１０３とＳＶモジュール１０４に、それぞれストレージシステム３の情報とサーバ２Ａの情報を入手するように指示する第一の機能を有する。統合モジュール１０２は、ＳＴモジュール１０３とＳＶモジュール１０４が取得した情報を統合し、統合された情報を統合マップ１０１に入力する第二の機能を有する。統合モジュール１０２は、統合マップ１０１の情報を確認し、ＳＶモジュール１０４へプロテクト領域を必要なサイズ確保する指示を出す第三の機能を有する。統合モジュール１０２は、確保、変更、または削除する指示が行われたプロテクト領域の容量情報を、統合マップ１０１に入力する第四の機能を有する。統合モジュール１０２は、ＳＴモジュール１０３及びＳＶモジュール１０４が情報を取得する間隔のタイムテーブルを管理し、定期的に各モジュールに情報を取得するように指示する第五の機能を有する。統合モジュール１０２は、既にプロテクト領域が確保されている場合、最新の統合マップ１０１の情報によって、確保されているプロテクト領域のサイズ変更が必要か判断し、サイズ変更が必要な場合サイズ変更をＳＶモジュール１０４に指示する第六の機能を有する。統合モジュール１０２は、プロテクト領域が確保されているボリュームの未割当て物理容量が、仮想ボリュームの未割当て容量を超えた場合、プロテクト領域を削除するように、ＳＶモジュール１０４に指示する第七の機能を有する。
【０１２０】
ＳＴモジュール１０３は、ストレージシステム３のストレージアクセスモジュール３１１にアクセスし、ストレージシステム３内の仮想プール及び仮想ボリュームについての情報を取得する第一の機能を有する。ＳＴモジュール１０３は、ストレージシステム３から取得した情報を統合モジュール１０２に渡す第二の機能を有する。
【０１２１】
ＳＶモジュール１０４は、サーバ２Ａ上のＯＳ２１１、ファイル管理モジュール２１２にアクセスて、ＯＳ及びファイルシステムについての情報を取得する第一の機能を有する。ＳＶモジュール１０４は、入手した情報を統合モジュール１０２に渡す第二の機能を有する。ＳＶモジュール１０４は、統合モジュール１０２からプロテクト領域の確保を指示された場合、ファイル管理モジュール２１２と連携して、ファイル管理モジュール２１２に、ファイルシステム上にプロテクト領域を確保させる第三の機能を有する。ＳＶモジュール１０４は、ファイル管理モジュール２１２と連携して、ファイル管理モジュール２１２に、確保されているプロテクト領域の容量を変更させる第四の機能を有する。ＳＶモジュール１０４は、ファイル管理モジュール２１２と連携して、ファイル管理モジュール２１２に、確保されているプロテクト領域を削除させる第五の機能を有する。
【０１２２】
ＳＶモジュール１０４の第三の機能の動作について、図４を用いて説明する。ファイル管理モジュール２１２は、例えばサーバ２Ａで動作するプログラムやＯＳ２１１からの指示に基づき、仮想ボリュームの割り当て済み領域２０２にデータを書き込む（図４（ａ））。ファイル管理モジュール２１２は、データを削除する指示を受信すると、ファイルシステムでデータが格納されていた領域（図４の例では、（ｂ）の区画２）を開放することにより、データを論理的に削除する。但し、ファイル管理モジュール２１２は、ストレージシステム３と連携して物理領域を開放するわけではない。したがって、ストレージシステム３が仮想ボリュームに割り当てた割当て容量が、データの削除により変化することはない。ＳＶモジュール１０４が、プロテクト領域を作成する指示を統合モジュール１０２から受信した場合、ＳＶモジュール１０４は、プロテクト領域を確保する指示をファイル管理モジュール２１２に送信する。その際、ＳＶモジュール１０４は、ファイル管理モジュール２１２に、データの書き込みが一度も行われておらず、仮想プールから領域（物理容量）が割り当てられていない領域に、プロテクト領域を確保させる。これにより、サーバ２Ａ上とストレージシステム３上の割当て情報の差異に起因する物理領域不足が防止される。ＳＶモジュール１０４の第四の機能でプロテクト領域の容量を増加させる場合、ＳＶモジュール１０４は、仮想プールから領域（物理容量）が割り当てられていない領域を、プロテクト領域に追加する。
【０１２３】
ＯＳ２１１は、第一の機能として、サーバ２ＡのＯＳとしてＨＷ（Ｈａｒｄｗａｒｅ）やアプリケーションを制御する一般的なＯＳ機能を有する。ＯＳ２１１は、ＳＶモジュール１０４からの指示を受け、ＯＳ上のディスク情報をＳＶモジュール１０４に渡す第二の機能を有する。
【０１２４】
ファイル管理モジュール２１２は、第一の機能として、サーバ２Ａの、仮想ボリュームを含むディスク領域に対して、ファイルシステムを作成し管理する一般的なファイル管理機能を有する。ファイル管理モジュール２１２は、ＳＶモジュール１０４からの指示に基づき、ファイルシステム上の情報をＳＶモジュール１０４に渡す第二の機能を有する。ファイル管理モジュール２１２は、プロテクト領域を確保する指示をＳＶモジュール１０４から受信した場合、一度も書き込みが行われていない、物理容量が割り当てられてない領域に、指定された容量のプロテクト領域を確保する第三の機能を有する。ファイル管理モジュール２１２は、プロテクト領域の容量を変更する指示をＳＶモジュール１０４から受信した場合、プロテクト領域の容量を、指示された容量に変更する第四の機能を有する。ファイル管理モジュール２１２は、プロテクト領域の容量を増加させる場合、プロテクト領域の作成時と同様、物理容量が割り当てられてない領域をプロテクト領域に割り当てる。ファイル管理モジュール２１２は、プロテクト領域を削除する指示をＳＶモジュール１０４から受信した場合、プロテクト領域を削除する第五の機能を有する。
【０１２５】
ストレージアクセスモジュール３１１は、ＳＴモジュール１０３から受信した指示に基づき、指示された情報を収集する指示を、ストレージシステム３のメインコントローラ３１２に送信する第一の機能を有する。ストレージアクセスモジュール３１１は、収集された情報をメインコントローラ３１２から取得し、ＳＴモジュール１０３に渡す第二の機能を有する。
【０１２６】
メインコントローラ３１２は、ストレージシステム３のメインコントローラとしてメモリ情報の管理やＨＤＤの管理等一般的なストレージシステム３の管理を行う第一の機能を有する。メインコントローラ３１２は、ストレージアクセスモジュール３１１から受信した指示によって指定された情報を、収集してストレージアクセスモジュール３１１に渡す第二の機能を有する。
【０１２７】
次に、本変形例の動作について図面を参照して説明する。
【０１２８】
以下では、連携モジュール１Ａによるプロテクト領域の確保までの動作について説明する。
【０１２９】
まず、統合モジュール１０２は、統合モジュール１０２内にあるタイムテーブルに従って処理を開始する。次に、統合モジュール１０２は、ＳＴモジュール１０３にストレージシステム３の情報を取得する指示を送信し、ＳＶモジュール１０４にサーバ２Ａの情報を取得する指示を送信する。ＳＴモジュール１０３は、まず、ストレージアクセスモジュール３１１に、ストレージシステム３の情報の取得を指示する。
【０１３０】
指示を受信したストレージアクセスモジュール３１１、ストレージシステム３を管理しているメインコントローラ３１２に、ストレージシステム３の情報の取得を指示する。メインコントローラ３１２は、ストレージアクセスモジュール３１１に情報を送信する。情報を取得したストレージアクセスモジュール３１１は、ＳＴモジュール１０３にストレージシステム３の情報を送信する。
【０１３１】
ＳＶモジュール１０４は、ＯＳ２１１とファイル管理モジュール２１２に、情報の取得を指示する。指示を受信したＯＳ２１１とファイル管理モジュール２１２は、それぞれＯＳ２１１とファイルシステムの情報を、ＳＶモジュール１０４へ送信する。
【０１３２】
情報を取得したＳＴモジュール１０３とＳＶモジュール１０４は、それぞれ、統合モジュール１０２に取得した情報を送信する。２つのモジュールから情報を取得した統合モジュール１０２は、取得した情報を統合マップ１０１に入力する。その際、統合マップ１０１が存在しなければ、統合モジュール１０２は統合マップ１０１を生成する。
【０１３３】
その後、統合モジュール１０２は統合マップ１０１の情報を確認する。情報を確認した統合モジュール１０２は、仮想プールの未割当て容量が仮想プールの未割当て物理容量を超えているかを確認する。
【０１３４】
仮想プールの未割当て物理容量より仮想ボリュームの未割当て容量のほうが大きい場合、統合モジュール１０２は、プロテクト領域が存在するか確認する。
【０１３５】
プロテクト領域が存在しない場合、統合モジュール１０２は、割当てが出来ない物理容量分のプロテクト領域を作成する指示をＳＶモジュール１０４に送信する。このとき、統合モジュール１０２は、プロテクト領域の情報を統合マップ１０１に入力する。指示を受信したＳＶモジュール１０４は、仮想プールから領域が割り当てられていない、仮想ボリュームの未割当て領域に、指定したサイズのプロテクト領域を作成する指示を、ファイル管理モジュール２１２に送信する。ファイル管理モジュール２１２は、仮想ボリュームの未割当て領域にプロテクト領域を確保する。プロテクト領域の確保の完了後、統合モジュール１０２は、統合マップ１０１に、プロテクト領域の情報を入力する。そして、連携モジュール１Ａは、統合モジュール１０２内のタイムテーブルによって処理が再開されるまで、処理を停止する。
【０１３６】
プロテクト領域が存在する場合、統合モジュール１０２は、統合マップ１０１を確認して、既存のプロテクト領域の容量と、算出されたプロテクト領域の容量を比較する。双方の容量が異なる場合、統合モジュール１０２は、算出された容量のプロテクト領域が確保されるように、プロテクト領域の容量を変更する指示をＳＶモジュール１０４に送信する。指示を受信したＳＶモジュール１０４は、ファイル管理モジュール２１２に、プロテクト領域の容量を変更する指示を送信する。ファイル管理モジュール２１２は、指示された容量のプロテクト領域を確保する。このとき、プロテクト領域の容量が増加する場合、ファイル管理モジュール２１２に、増加部分を含めたプロテクト領域全体を、未割当て領域内に確保する。処理の完了後、統合モジュール１０２は、統合マップ１０１にプロテクト領域の情報を入力する。そして、連携モジュール１Ａは、統合モジュール１０２内のタイムテーブルによって処理が再開されるまで、処理を停止する。
【０１３７】
仮想ボリュームの未割当て容量が仮想プールの未割当て物理容量を超えていない場合、統合モジュール１０２は、プロテクト領域が存在するか確認する。プロテクト領域が存在しない場合、連携モジュール１Ａは、一旦処理を停止する。そして、連携モジュール１Ａは、統合モジュール１０２内のタイムテーブルに沿って処理を再開する。プロテクト領域が存在する場合、統合モジュール１０２は、ＳＶモジュール１０４にプロテクト領域を削除する指示を送信する。ＳＶモジュール１０４は、プロテクト領域を削除する指示をファイル管理モジュール２１２に送信する。ファイル管理モジュール２１２は、プロテクト領域を削除する。プロテクト領域が削除されると、ス統合モジュール１０２は、統合マップ１０１にプロテクト領域の情報を入力する。そして、連携モジュール１Ａは、統合モジュール１０２内のタイムテーブルによって処理が再開されるまで、処理を停止する。
【０１３８】
ストレージ管理装置１、サーバ２、ストレージシステム３は、それぞれ、コンピュータ及びコンピュータを制御するプログラム、専用のハードウェア、又は、コンピュータ及びコンピュータを制御するプログラムと専用のハードウェアの組合せにより実現することができる。
【０１３９】
取得部１０、設定部１２、ファイル管理部２０、ストレージ制御部３１は、例えば、プログラムを記憶する記録媒体からメモリに読み込まれた、各部の機能を実現するための専用のプログラムと、そのプログラムを実行するプロセッサにより実現することができる。また、割り当て記憶部１１、仮想プール３０は、コンピュータが含むメモリやハードディスク装置により実現することができる。あるいは、取得部１０、割り当て記憶部１１、設定部１２、ファイル管理部２０、仮想プール３０、ストレージ制御部３１の一部又は全部を、各部の機能を実現する専用の回路によって実現することもできる。
【０１４０】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０１４１】
１、１Ｂ    ストレージ管理装置
１Ａ    連携モジュール
２、２Ａ    サーバ
３    ストレージシステム
４    ネットワーク
１０    取得部
１１    割り当て記憶部
１２    設定部
２０    ファイル管理部
３０    仮想プール（記憶デバイス）、実ボリューム
３１    ストレージ制御部
１０１    統合マップ
１０２    統合モジュール
１０３    ＳＴモジュール
１０４    ＳＶモジュール
２００、２００Ａ    仮想ボリューム
２０１、２０１Ａ    未割り当て領域
２０２、２０２Ａ    割り当て済み領域
２０３    領域
２１０    情報処理部
２１１    ＯＳ
２１２    ファイル管理モジュール
３０１    空き領域
３０２    サーバ２用の領域
３０２Ａ    他のサーバ２用の領域
３１１    ストレージアクセスモジュール
３１２    メインコントローラ
【図１】
2014119898.tif 000003
【図２】
2014119898.tif 000004
【図３】
2014119898.tif 000005
【図４】
2014119898.tif 000006
【図５】
2014119898.tif 000007
【図６】
2014119898.tif 000008
【図７】
2014119898.tif 000009
【図８】
2014119898.tif 000010
【図９】
2014119898.tif 000011