(57)【要約】【課題】エンドユーザが多い環境下においても各エンドユーザの要求に応じたストレージ管理を実現しつつ、仮想マシンやコンテナ単位でスナップショットの作成やバックアップの取得を可能として効率的に記憶領域を使用すること。【解決手段】ブロックストレージ装置は、複数の仮想マシンやコンテナの識別子ごとに、複数の仮想マシンやコンテナによるボリューム内の各操作対象領域の格納先の領域アドレスを管理するアドレス変換テーブルと、その要求を受け取ると、そのアドレス変換テーブルを参照し、この要求に含まれる仮想マシンまたはコンテナの識別子に対応する格納先の領域アドレスを取得し、格納先の領域アドレスに基づいて所定のブロック単位で、仮想マシン又はコンテナごとにボリュームに対する操作を実行するボリューム操作制御部と、を備える。【選択図】図３
2019101467.tif 000002
【特許請求の範囲】
【請求項１】
要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置と、前記ボリュームを共用する複数の仮想マシンまたはコンテナが搭載された少なくとも１台の業務計算機と、を備えるストレージシステムにおいて、
前記業務計算機は、
前記複数の仮想マシンまたはコンテナのうち前記ボリュームに対する操作を試行しようとする仮想マシンまたはコンテナの識別子を含めて要求を発行する管理ドライバを備え、
前記ブロックストレージ装置は、
前記複数の仮想マシンまたはコンテナの識別子ごとに、前記複数の仮想マシンまたはコンテナによる前記ボリューム内の各操作対象領域の格納先の領域アドレスを管理するアドレス変換テーブルと、
前記要求を受け取ると、前記アドレス変換テーブルを参照し、前記要求に含まれる前記仮想マシンまたはコンテナの識別子に対応する前記格納先の領域アドレスを取得し、前記格納先の領域アドレスに基づいて前記所定のブロック単位で、前記仮想マシン又はコンテナごとに前記ボリュームに対する操作を実行するボリューム操作制御部と、
を備えることを特徴とするストレージシステム。
【請求項２】
前記ブロックストレージ装置は、
前記仮想マシン及びコンテナが格納されるべき記憶領域に関するポリシーを管理する対象物一覧テーブルを備え、
前記対象物一覧テーブルに設定されたポリシーに従って、前記仮想マシン及びコンテナの少なくとも一方の対象物単位で前記ボリュームの階層型プールを採用することを特徴とする請求項１に記載のストレージシステム。
【請求項３】
前記ボリュームに対する操作に関する管理系の要求を前記ブロックストレージ装置に対して発行可能であって前記ポリシーの設定変更が唯一許容されているストレージ管理ソフトウェアが搭載された管理計算機を備え、
前記ブロックストレージ装置は、
前記業務計算機からの要求に対応できない場合、当該要求に対応できない旨の応答を返答することを特徴とする請求項２に記載のストレージシステム。
【請求項４】
前記ブロックストレージ装置は、
前記仮想マシン又はコンテナのスナップショットの作成要求を受け取ると、当該要求を受け取ったタイミングで前記スナップショットの作成を実施することを特徴とする請求項１乃至３のいずれかに記載のストレージシステム。
【請求項５】
前記ブロックストレージ装置は、
前記ストレージ管理ソフトウェアによって発行された要求と、前記業務計算機によって発行された要求とを同時に受け取った場合、両前記要求の内容に基づいて両前記要求の対象処理に影響があるボリュームを特定し、前記ボリュームに関係する処理を中断することを特徴とする請求項３に記載のストレージシステム。
【請求項６】
要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置と、前記ボリュームを共用する複数の仮想マシンまたはコンテナが搭載された少なくとも１台の業務計算機と、を備えるストレージシステムにおけるデータアクセス方法において、
前記業務計算機が、管理ドライバを経由して、前記複数の仮想マシンまたはコンテナのうち前記ボリュームに対する操作を試行しようとする仮想マシンまたはコンテナの識別子を含めて要求を発行する要求発行ステップと、
前記ブロックストレージ装置が、前記要求を受け取ると、前記複数の仮想マシンまたはコンテナの識別子ごとに、前記複数の仮想マシンまたはコンテナによる前記ボリューム内の各操作対象領域の格納先の領域アドレスを管理するアドレス変換テーブルを参照し、前記要求に含まれる前記仮想マシンまたはコンテナの識別子に対応する前記格納先の領域アドレスを取得する格納先領域アドレス取得ステップと、
前記ブロックストレージ装置が、前記格納先の領域アドレスに基づいて前記所定のブロック単位で、前記仮想マシン又はコンテナごとに前記ボリュームに対する操作を実行するボリューム操作ステップと、
を有することを特徴とするストレージシステムにおけるデータアクセス方法。
【請求項７】
前記ブロックストレージ装置は、
前記仮想マシン及びコンテナが格納されるべき記憶領域に関するポリシーを管理する対象物一覧テーブルを備え、
前記対象物一覧テーブルに設定されたポリシーに従って、前記仮想マシン及びコンテナの少なくとも一方の対象物単位で前記ボリュームの階層型プールを採用することを特徴とする請求項６に記載のストレージシステムにおけるデータアクセス方法。
【請求項８】
前記ストレージシステムは、
前記ボリュームに対する操作に関する管理系の要求を前記ブロックストレージ装置に対して発行可能であって前記ポリシーの設定変更が唯一許容されているストレージ管理ソフトウェアが搭載された管理計算機を備え、
前記ブロックストレージ装置は、
前記業務計算機からの要求に対応できない場合、当該要求に対応できない旨の応答を返答することを特徴とする請求項７に記載のストレージシステムにおけるデータアクセス方法。
【請求項９】
前記ブロックストレージ装置は、
前記仮想マシン又はコンテナのスナップショットの作成要求を受け取ると、当該要求を受け取ったタイミングで前記スナップショットの作成を実施することを特徴とする請求項６乃至８のいずれかに記載のストレージシステムにおけるデータアクセス方法。
【請求項１０】
前記ブロックストレージ装置は、
前記ストレージ管理ソフトウェアによって発行された要求と、前記業務計算機によって発行された要求とを同時に受け取った場合、両前記要求の内容に基づいて両前記要求の対象処理に影響があるボリュームを特定し、前記ボリュームに関係する処理を中断することを特徴とする請求項８に記載のストレージシステムにおけるデータアクセス方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージシステム及びストレージシステムにおけるデータアクセス方法に関し、特に、業務計算機からの要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置を備えるストレージシステムに適用して好適なものである。
【背景技術】
【０００２】
従来、業務計算機及びブロックストレージ装置を含むストレージシステムにおいて、そのブロックストレージ装置により仮想マシンやコンテナを用いた環境を構築して運用する場合、スナップショットの作成やバックアップ等のようなストレージ管理として、ストレージ管理者がストレージ管理ソフトウェアを用いてボリューム単位で操作を実施していた。仮想マシンやコンテナのような環境の管理を行う場合、１つの仮想マシンおよびコンテナに対して１つのボリュームとなるように環境構築をしたほうが、効果的にストレージ機能を使用できる。
【０００３】
しかし、SCSI規格の制限により１つのホストにボリュームが２５６個までという制限がある。そのため、１つのボリュームに複数の仮想マシンおよびコンテナを格納し、ホストベースで仮想マシンもしくはコンテナ単位で管理を行う、もしくはボリューム単位でストレージ機能を使用して管理を行う方法で運用されている。このような運用ではボリューム単位でコピーを行うことになり容量効率が悪く、またリストアを行うとボリューム上のすべての仮想マシンが過去の状態に戻ってしまうという問題があった。
【０００４】
先述の問題を解決するためにVMware社がVMware VVolsを開発し、１つの仮想マシンと１つのボリュームを対応付けることが可能となった（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−２１２９０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
VMware VVolsでは１つの仮想マシンに対して少なくとも３〜５台のボリュームが必要であり、ストレージ装置１台に定義できるボリューム数に対して仮想マシン数を大きくすることができない。そのため、ミッドレンジの下位層の製品を１台だけ、かつオールフラッシュアレイのようなＩ／Ｏ性能の高い製品を使用したいというユーザが存在した場合、仮想マシン数がボリューム数の上限によって制限されてしまい、ドライブ性能を限界まで使いきれないという問題がある。また、このように１つの仮想マシンが複数のボリュームを共有する形態においては、仮想マシン単位でこれら複数のボリュームに対してスナップショットの作成やバックアップの取得等の操作を実施しなければならないため、効率的に資源を有効活用することが困難であった。
【０００７】
本発明は以上の点を考慮してなされたもので、エンドユーザが多い環境下においても各エンドユーザの要求に応じたストレージ管理を実現しつつ、仮想マシンやコンテナ単位でスナップショットの作成やバックアップの取得を可能として効率的に記憶領域を使用することができるストレージシステム及びそのデータアクセス方法を提案しようとするものである。
【課題を解決するための手段】
【０００８】
かかる課題を解決するため、本発明においては、要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置と、前記ボリュームを共用する複数の仮想マシンまたはコンテナが搭載された少なくとも１台の業務計算機と、を備えるストレージシステムにおいて、前記業務計算機は、前記複数の仮想マシンまたはコンテナのうち前記ボリュームに対する操作を試行しようとする仮想マシンまたはコンテナの識別子を含めて要求を発行する管理ドライバを備え、前記ブロックストレージ装置は、前記複数の仮想マシンまたはコンテナの識別子ごとに、前記複数の仮想マシンまたはコンテナによる前記ボリューム内の各操作対象領域の格納先の領域アドレスを管理するアドレス変換テーブルと、前記要求を受け取ると、前記アドレス変換テーブルを参照し、前記要求に含まれる前記仮想マシンまたはコンテナの識別子に対応する前記格納先の領域アドレスを取得し、前記格納先の領域アドレスに基づいて前記所定のブロック単位で、前記仮想マシン又はコンテナごとに前記ボリュームに対する操作を実行するボリューム操作制御部と、を備えることを特徴とする。
【０００９】
また、本発明においては、要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置と、前記ボリュームを共用する複数の仮想マシンまたはコンテナが搭載された少なくとも１台の業務計算機と、を備えるストレージシステムにおけるデータアクセス方法において、前記業務計算機が、管理ドライバを経由して、前記複数の仮想マシンまたはコンテナのうち前記ボリュームに対する操作を試行しようとする仮想マシンまたはコンテナの識別子を含めて要求を発行する要求発行ステップと、前記ブロックストレージ装置が、前記要求を受け取ると、前記複数の仮想マシンまたはコンテナの識別子ごとに、前記複数の仮想マシンまたはコンテナによる前記ボリューム内の各操作対象領域の格納先の領域アドレスを管理するアドレス変換テーブルを参照し、前記要求に含まれる前記仮想マシンまたはコンテナの識別子に対応する前記格納先の領域アドレスを取得する格納先領域アドレス取得ステップと、前記ブロックストレージ装置が、前記格納先の領域アドレスに基づいて前記所定のブロック単位で、前記仮想マシン又はコンテナごとに前記ボリュームに対する操作を実行するボリューム操作ステップと、を有することを特徴とする。
【発明の効果】
【００１０】
本発明によれば、エンドユーザが多い環境下においても各エンドユーザの要求に応じたストレージ管理を実現しつつ、仮想マシンやコンテナ単位でスナップショットの作成やバックアップの取得を可能として効率的に記憶領域を使用することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態によるストレージシステムの概略構成の一例を示すブロック図である。
【図２】図１に示すアドレス変換テーブルの構成例を示すテーブル構成図である。
【図３】図１に示す処理管理テーブルの構成例を示すテーブル構成図である。
【図４】図１に示す仮想マシン及びコンテナ一覧テーブルの一例を示すテーブル構成図である。
【図５】仮想マシン作成処理の一例を示すフローチャートである。
【図６】非管理系のＩ／Ｏ要求発行処理の一例を示すフローチャートである。
【図７】管理系のＩＯ要求発行処理の一例を示すフローチャートである。
【図８】階層型プールを採用するストレージ装置においてポリシーベース管理を実施した場合の一例を示すフローチャートである。
【図９】スナップショット作成処理の一例を示すフローチャートである。
【図１０】管理計算機からの管理系の要求と非同期コマンドとが同時に受信された場合における処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面について、本発明の一実施の形態について詳述する。
【００１３】
（１）システム構成例
図１は、本実施の形態によるストレージシステムの概略構成の一例を示す。ストレージシステムは、エンドユーザの操作に応じてボリューム１４０に対する操作に関する要求を発行する業務計算機３００，４００、受け取った要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置（以下「ストレージ装置」という）１００、管理計算機２００、及び、ネットワーク５００，５０１を備えている。ネットワーク５００は、業務計算機３００，４００とストレージ装置１００とを接続する一方、ネットワーク５０１は、管理計算機２００とストレージ装置１００とを接続する。
【００１４】
管理計算機２００は、システム管理者の操作に応じて、ストレージ装置１００に、ボリューム１４０に対する操作に関する管理系の要求を発行可能な管理ソフトウェア２１０を搭載している。管理ソフトウェア２１０は、ＳＣＳＩコマンドを発行可能な管理ドライバ３１０，４１０とやり取りしつつ連携している。管理ドライバ３１０，４１０はＳＣＳＩコマンドを発行可能である。ボリューム１４０に対する操作に関する管理系の要求をストレージ装置１００に対して発行可能である。この管理ソフトウェア２１０は、このストレージ装置１００がいわゆる階層型プール方式を利用している場合、仮想マシン３２０及びコンテナ４２０が格納されるべき記憶領域に関するポリシーの設定変更が唯一許容されている。
【００１５】
業務計算機３００，４００は、エンドユーザによって使用される少なくとも１台の業務計算機の一例であり、本実施の形態では、説明の簡素化の都合上、２台のコンピュータで構成されているものとする。これら業務計算機３００，４００は、上述したようにストレージ装置１００に対して、ボリューム１４０に対する操作に関する要求を発行する。
【００１６】
業務計算機３００，４００には、ボリューム１４０を共用する仮想マシン３２０及びコンテナ４２０が構築されている。具体的には、業務計算機３００は、管理ドライバ３１０を搭載しており仮想マシン３２０が構築されている。一方、業務計算機４００は、管理ドライバ４１０を搭載しておりコンテナ４２０が構築されている。
【００１７】
ここで、「仮想マシン」とは、いわゆる仮想マシン技術を用いて、１台の物理マシン（コンピュータ）に仮想的に構築された複数のアプリケーション実行環境であり、これら複数のアプリケーション実行環境ごとに個別のオペレーティングシステム（以下「ゲストＯＳ」という）が用意されており、これらを制御するオペレーティングシステム（以下「ホストＯＳ」という）が共有されている。一方、「コンテナ」とは、いわゆるコンテナ技術を用いて、ホストＯＳ上において他のプロセスからは隔離するように構築された仮想的なアプリケーション実行環境であり、上述したゲストＯＳが不要であるとともにアプリケーション実行環境のみが独立されている。上述した仮想マシン技術は、ハードウェア上のすべてを仮想的に構築する技術と云える一方、コンテナ技術は、オペレーティングシステム上のアプリケーション実行環境のみを仮想的に構築する技術と云える。このコンテナ技術では、オペレーティングシステム自体を変更できないが、その動作に必要なリソースが少なくて済むという利点がある。
【００１８】
業務計算機３００，４００は、それぞれ、ストレージ装置１００のボリュームに対するデータアクセスに際して要求を発行し、ストレージ装置１００のボリューム１４０からデータを読み出す際にはＲｅａｄ要求を発行する一方、ボリューム１４０にデータを書き込む際にはＷｒｉｔｅ要求を発行する。
【００１９】
一方、ストレージ装置１００は、ストレージコントローラ１１０、処理管理テーブル１２０、仮想マシン及びコンテナ一覧テーブル１３０、ボリューム１４０並びに物理記憶領域１５０を備えている。ボリューム１４０は、物理記憶領域１５０を利用して生成された記憶領域であり、ストレージコントローラ１１０の制御によってデータが書き込まれたり読み出される。
【００２０】
ストレージコントローラ１１０は、非管理系処理実行部１１１、管理系処理実行部１１２及びポリシーベース管理実行部１１３を備えている。
【００２１】
ストレージコントローラ１１０は、いわゆるブロックストレージ機能を有しており、このブロックストレージ機能は、非管理系処理実行部１１１によって実現されている。この非管理系処理実行部１１１は、業務計算機３００，４００からの要求に応じて、所定領域（ブロック）単位でボリューム１４０の格納先の領域アドレスに格納済のデータを読み出したり、ボリューム１４０に対して所定の格納先の領域アドレスにデータを書き込む制御を行う。なお、上述した管理ドライバ３１０，４１０は、このブロックストレージ機能を利用するためにクライアントコンピュータ側にインストールされている管理ドライバである。
【００２２】
非管理系処理実行部１１１は、業務計算機３００によって管理ドライバ３１０を介してまたは業務計算機４００によって管理ドライバ４１０を介して発行された要求を解釈する解釈部として機能し、解釈した情報を、ボリューム１４０内のアドレス変換テーブル１４１に格納する。この情報は、後述するように、仮想マシン３２０やコンテナ４２０のような対象物同士を区別するための識別子、業務計算機３００，４００上の格納先アドレス、及び、ストレージ装置１００のボリューム１４０における格納先の領域アドレスを含んでいる。このアドレス変換テーブル１４１の詳細については後述する。
【００２３】
一方、管理系処理実行部１１２は、管理計算機２００から発行される管理系の要求（後述する非同期コマンドにも相当）を受け取ると、処理管理テーブル１２０を参照しつつ、この管理系の要求に応じた処理を実行する。このような管理系の要求に応じた処理としては、例えば、バックアップの取得を挙げることができる。
【００２４】
仮想マシン及びコンテナ一覧テーブル１３０は、ストレージ装置１００においてボリューム１４０のいわゆる階層型プール方式を採用している場合に、仮想マシン３２０やコンテナ４２０のような対象物ごとに、各対象物が格納されるべき記憶領域に関する少なくとも１つのポリシー設定を管理する。このように管理すると、システム管理者及びエンドユーザによって同一の要求が繰り返し発行された場合でも無駄な処理を回避することができる。
【００２５】
ポリシーベース管理実行部１１３は、仮想マシン及びコンテナ一覧テーブル１３０に設定されたポリシーに従って、仮想マシン３２０及びコンテナ４２０の少なくとも一方の対象物単位でボリューム１４０の階層型プール方式によりボリューム１４０を管理する。
【００２６】
図２は、図１に示すアドレス変換テーブル１４１の構成例を示す。アドレス変換テーブル１４１は、各対象物について業務計算機３００，４００上の格納アドレスと、ストレージ装置１００のボリューム１４０における格納先の領域アドレスとを対応付けて管理している。この格納先の領域アドレスは、例えば、ボリューム１４０においてブロック単位で記憶すべきデータの記憶領域の先頭アドレスを表している。
【００２７】
アドレス変換テーブル１４１は、そのカラムとして、番号、識別子、業務計算機上の格納アドレス、及びストレージ装置内の格納先の領域アドレスを有し、これらの列データで構成されるレコードデータを管理している。なお、図示の例は、概略を説明している都合上、一部レコードデータが省略されている。
【００２８】
番号は、各レコードデータを区別するための識別情報を示している。識別子は、仮想マシン３２０及びコンテナ４２０などの対象物を互いに識別するための識別情報を示している。業務計算機上の格納アドレスは、業務計算機３００において上記対象物が記憶されている格納アドレスを示している。ストレージ装置内の格納先の領域アドレスは、上記対象物のストレージ装置１００内における格納先を表す領域アドレスを示している。
【００２９】
図３は、図１に示す処理管理テーブル１２０の構成例を示す。処理管理テーブル１２０は、処理内容が対象とする対象領域を管理するとともに、その処理内容のステータスを表す処理状態を管理する。
【００３０】
処理管理テーブル１２０は、そのカラムとして、番号、処理内容、対象領域及び処理状態を有し、これらの列データで構成されるレコードデータを管理している。なお、図示の例は、概略を説明している都合上、一部レコードデータが省略されている。
【００３１】
番号は、各レコードデータを区別するための識別情報を示している。処理内容は、上記対象物のための領域に関する操作の内容を示している。対象領域は、上記処理内容が対象とする領域を示している。処理状態は、上記処理内容の状態を示している。
【００３２】
図４は、図１に示す仮想マシン及びコンテナ一覧テーブル１３０の一例を示す。仮想マシン及びコンテナ一覧テーブル１３０は、そのカラムとして、番号、対象物及びポリシーを有し、これらの列データで構成されるレコードデータを管理している。なお、図示の例は、概略を説明している都合上、一部レコードデータが省略されている。
【００３３】
番号は、各レコードデータを区別するための識別情報を示している。対象物は、どの仮想マシン３２０またはどのコンテナ４２０を対象としているのかを表す識別情報である。ポリシーは、使用頻度などに応じてボリューム１４０におけるどの階層で管理されるべきかを表している。
【００３４】
（２）システム動作例
本実施の形態に係るストレージシステムは以上のような構成であり、次にストレージシステムの動作例としてのデータアクセス方法について説明する。このストレージシステムでは、仮想マシン３２０及びコンテナ４２０が搭載された業務計算機３００，４００上においてそれぞれ対応する管理ドライバ３１０，４１０が動作している。
【００３５】
ストレージコントローラ１１０は、管理ドライバ３１０，４１０を経由して仮想マシン３２０及びコンテナ４２０上のオペレーティングシステムから発行された要求を解釈し、解釈した情報に基づいて、その後の動作を制御する。
【００３６】
本実施の形態では、ストレージシステムの動作例について、以下の４つの場合に分けて説明する。
（２−１）仮想マシンまたはコンテナ作成時について
（２−２）通常のＷｒｉｔｅ／Ｒｅａｄ要求処理について
（２−３）管理系のＩＯ要求発行処理について
（２−４）階層型プールなどでポリシーベース管理実施時の処理について
【００３７】
（２−１）仮想マシンもしくはコンテナ作成時
図５は、仮想マシン作成処理の一例を示すフローチャートである。この仮想マシン作成処理では、業務計算機管理者が業務計算機３００上に仮想マシン３２０として、一例として、識別子を「ＶＭ１」、「ＶＭ２」とした仮想マシン３２０を作成するが、その代わりに、識別子を「コンテナ１」としたコンテナ４２０を作成しても良い。
【００３８】
管理ドライバ３１０は、この仮想マシン３２０の識別子「ＶＭ１」を取得し、データをボリューム１４０に書き込む際には、要求発行ステップとして、この識別子「ＶＭ１」を要求に含めてストレージ装置１００に対してＷｒｉｔｅ要求を発行する（ステップＳ１）。なお、管理ドライバ３１０は、データをボリューム１４０から読み出す際には、この識別子「ＶＭ１」を要求に含めてストレージ装置１００に対してＲｅａｄ要求を発行する（要求発行ステップ）。以下では書き込み処理を例示して説明する。
【００３９】
ストレージ装置１００では、ストレージコントローラ１１０の非管理系処理実行部１１１が、格納先領域アドレス取得ステップとして、受け取った要求から仮想マシン３２０の識別子「ＶＭ１」を読み出すとともにこの識別子に基づいてアドレス変換テーブル１４１を参照し、この識別子に対応する格納先の領域アドレスを取得する。さらにストレージコントローラ１１０は、当該取得した格納先の領域アドレスの対象領域へデータを格納、すなわち、識別子「ＶＭ１」の仮想マシン３２０に関する格納を実施すべく（ステップＳ２）、ボリューム１４０に対するＷｒｉｔｅ要求を実施する。
【００４０】
ストレージコントローラ１１０では、非管理系処理実行部１１１が、上述のように読み出し済の識別子「ＶＭ１」と、上述のような格納により判明する格納先の領域アドレス、すなわち、上記Ｗｒｉｔｅ要求によってボリューム１４０に書き込まれた格納先の領域アドレスとを対にしてアドレス変換テーブル１４１に、例えば図２に示す番号「１」のレコードデータとして書き込む（ステップＳ３）。なお、図２の例は、概念図であるため、具体的なアドレス値が省略されている。
【００４１】
ストレージコントローラ１１０は、当該取得した格納先の領域アドレスに基づいてブロック単位で、例えば仮想マシン３２０ごとにボリューム１４０に対する操作として書き込み処理を実行する（ボリューム操作ステップ）。上述したＷｒｉｔｅ要求に応じた書き込み処理が問題なく完了した場合、ストレージコントローラ１１０では、非管理系処理実行部１１１が、その結果を業務計算機３００に対して応答する（ステップＳ４）。
【００４２】
（２−２）通常のＷｒｉｔｅ／Ｒｅａｄ要求処理について
図６は、非管理系のＩ／Ｏ要求発行処理の一例を示すフローチャートである。Ｉ／Ｏ要求発行処理は、エンドユーザが、仮想マシン３２０を使用する過程における操作に応じて要求を発行する処理である。このＩ／Ｏ要求発行処理では、識別子「ＶＭ１」の仮想マシン３２０を使用しているエンドユーザが、この仮想マシン３２０を使用する過程の操作に応じて要求を、以下のようにストレージ装置１００に対して発行する。
【００４３】
業務計算機３００では、管理ドライバ３１０が、仮想マシン３２０（識別子：「ＶＭ１」）から発行された要求を受け取ると、要求発行ステップとして、この要求に、仮想マシン３２０の識別子「ＶＭ１」を付加した後、ストレージ装置１００に対して、この識別子「ＶＭ１」付きの要求を発行する（ステップＳ１１）。
【００４４】
ストレージ装置１００では、ストレージコントローラ１１０が、業務計算機３００の管理ドライバ３１０から受け取った要求がＷｒｉｔｅ要求であるか否かを判定する（ステップＳ１２）。
【００４５】
要求がＷｒｉｔｅ要求である場合、ストレージコントローラ１１０では、受け取った要求から仮想マシン３２０の識別子「ＶＭ１」を読み出し、この識別子に基づいてアドレス変換テーブル１４１を参照し、この要求に含まれる仮想マシン３２０の識別子「ＶＭ１」に対応する格納先の領域アドレスを取得する（格納先領域アドレス取得ステップ）。さらにストレージコントローラ１１０は、ボリューム操作ステップとして、この格納先の領域アドレスの対象領域である保存領域に対してブロック単位でデータの書き込み、すなわち、識別子「ＶＭ１」の仮想マシン３２０の格納を実施する（ステップＳ１３）。
【００４６】
さらにストレージコントローラ１１０では、非管理系処理実行部１１１が、仮想マシン３２０の識別子「ＶＭ１」と、上述のような格納により判明する領域アドレス、すなわち、Ｉ／Ｏの発行対象であるストレージ装置１００内の格納先の領域アドレスとの組み合わせのレコードデータが、アドレス変換テーブル１４１内に存在するか否かを判定する（ステップＳ１４）。
【００４７】
該当するレコードデータがアドレス変換テーブル１４１に存在する場合、ストレージコントローラ１１０では、非管理系処理実行部１１１が、アドレス変換テーブル１４１を更新せず、業務計算機３００に対してその結果を応答する（ステップＳ１５）。
【００４８】
一方、該当するレコードデータがアドレス変換テーブル１４１に存在しない場合、ストレージコントローラ１１０では、非管理系処理実行部１１１が、新たな番号に紐付けて、仮想マシン３２０の識別子「ＶＭ１」と、Ｉ／Ｏ要求の発行対象であるストレージ装置１００内の格納先の領域アドレスとの組み合わせのレコードデータを追加するようアドレス変換テーブル１４１を更新し、その後、業務計算機３００に対して、その結果を応答する（ステップＳ１６）。
【００４９】
一方、ステップＳ１２において受け取った要求がＷｒｉｔｅ要求でない場合（すなわち、Ｒｅａｄ要求である場合）、ストレージコントローラ１１０では、非管理系処理実行部１１１が、アドレス変換テーブル１４１を参照し、当該Ｒｅａｄ要求に基づいてストレージ装置１００内の格納先の領域アドレスに変換し、この変換後の領域アドレスに基づいてデータを取得し、その後、業務計算機３００に対してその結果を含めて応答を返す（ステップＳ１７）。
【００５０】
（２−３）管理系のＩＯ要求発行処理について
図７は、管理系のＩＯ要求発行処理の一例を示すフローチャートである。なお、エンドユーザは、業務計算機３００上の仮想マシン３２０を用いてストレージ装置１００側のボリューム１４０のうちのＶＭ１用領域を使用しているものとする。
【００５１】
この管理系のＩＯ要求発行処理では、エンドユーザが、業務計算機３００を用いて、識別子が「ＶＭ１」である仮想マシン３２０から、管理ドライバ３１０に用意されているコマンドを用いてＶＭ１用領域について設定変更を実施する。以下、エンドユーザによる設定変更の実施に際して入力される情報を「設定変更情報」と称する。
【００５２】
管理ドライバ３１０は、要求発行ステップとして、エンドユーザによって入力された設定変更情報を仮想マシン３２０の識別子「ＶＭ１」とともにＳＣＳＩコマンドに含めて、要求発行ステップとしてストレージ装置１００に対して発行する（ステップＳ２１）。
【００５３】
ストレージ装置１００では、ストレージコントローラ１１０が、受信したＳＣＳＩコマンドから設定変更情報を読み出し（ステップＳ２２）、この設定変更情報の内容が同期コマンドであるかまたは非同期コマンドであるかを判定する（ステップＳ２３）。
【００５４】
ここで、これらのコマンドの具体例としては、次のようなものを挙げることができる。まず、同期コマンドの一例としては、ボリュームの状態確認（容量やポリシーなど）、処理状態または結果の確認、及び、スナップショットの作成を挙げることができる。一方、非同期コマンドの一例としては、ボリューム１４０のポリシー変更、及び、それに伴うボリュームマイグレーション、並びに、ボリューム１４０のバックアップを挙げることができる。
【００５５】
上述したステップＳ２３において設定変更情報の内容が同期コマンドであった場合、ストレージコントローラ１１０は、当該同期コマンドを実行し（ステップＳ２４）、上記同様に識別子「ＶＭ１」に基づいてアドレス変換テーブル１４１を参照して格納先の領域アドレスを取得し（格納先領域アドレス取得ステップ）、この格納先の領域アドレスに基づいてブロック単位でボリューム１４０に対する操作として上記設定変更を実行し（ボリューム操作ステップ）、その実行結果をＳＣＳＩ応答に含めて、識別子が「ＶＭ１」である仮想マシン３２０に対してその結果を返す。
【００５６】
一方、ステップＳ２３において設定変更情報の内容が非同期コマンドであった場合、ストレージコントローラ１１０は、その設定変更情報に応じた処理内容を、上記ＶＭ１用領域に関連付けてその処理状態とともに処理管理テーブル１２０に書き込む（ステップＳ２５）。
【００５７】
次にストレージコントローラ１１０は、非同期コマンドを実行するために、一定時間ごとに、次のようなステップＳ２６〜Ｓ２９を繰り返し実行する。このような繰り返し実行によって、ストレージコントローラ１１０は、定期的に、処理管理テーブル１２０の各レコードデータを確認することになる（ステップＳ２６）。
【００５８】
ストレージ装置１００は、処理状態が「実施中」である処理を表すレコードデータが存在するか否かを判定し（ステップＳ２７）、処理管理テーブル１２０に処理状態が「実施中」である処理を表すレコードデータが存在する場合、何も事項せずに次の周期においてステップＳ２６を実行する。
【００５９】
一方、ストレージコントローラ１１０は、処理管理テーブル１２０に処理状態が「未着手」である処理を表すレコードデータが存在するか否かを判定する（ステップＳ２８）。
【００６０】
ストレージコントローラ１１０は、処理管理テーブル１２０に処理状態が「未着手」である処理を表すレコードデータ存在する場合、例えば、先に書き込まれたレコードデータに対応する処理から順に、非同期コマンドを実行して処理内容を実施していく（ステップＳ２９）。併せて、ストレージコントローラ１１０は、識別子が「ＶＭ１」である仮想マシン３２０からの要求に対応する処理内容の実行を開始すると、処理管理テーブル１２０において識別子「ＶＭ１」の処理内容に対応させて管理されているレコードデータの処理状態を「実施中」に更新する。
【００６１】
さらにストレージコントローラ１１０は、識別子「ＶＭ１」の仮想マシン３２０のためのＶＭ１用領域に対して他の処理を受け付けないよう排他制御を実施する。このようにすると、ストレージコントローラ１１０は、仮に管理ソフトウェア（ストレージ管理ソフトウェア）２１０から要求があった場合でも、この要求タイミングにおいては当該ＶＭ１用領域に対する処理を中断しないように制御することができる。
【００６２】
このような処理内容の実施が完了すると、ストレージコントローラ１１０は、処理管理テーブル１２０において、当該処理内容に該当するレコードデータのうち処理状態を「完了」に更新する。
【００６３】
（２−４）階層型プールなどでポリシーベース管理実施時の処理について
図８は、階層型プールなどにおいてポリシーベース管理を実施した場合の一例を示すフローチャートである。なお、システム管理者は、管理計算機２００を操作して管理ソフトウェア２１０を介して、各仮想マシン３２０及びコンテナ４２０などの対象物ごとに識別子「ＶＭ１」（ここでは仮想マシン３２０を例示）を含めたコマンドを発行することにより（要求発行ステップ）、仮想マシン及びコンテナ一覧テーブル１３０に、仮想マシン３２０などの対象物ごとに対応した対象領域について階層型プールに関するポリシーを設定済である。なお、ここでいう階層型プールに関するポリシーとは、使用頻度などに応じて格納が許可される階層型プール（図示の例では竹、松または梅のようなレベルを例示している）のうちどのプール階層（またはそれ以上若しくはそれ以下のレベル）を用いても良いかの基準を示す。
【００６４】
ストレージコントローラ１１０は、一定時間ごとに定期的に、処理管理テーブル１２０に登録済みの各レコードデータに基づいて仮想マシン及びコンテナ一覧テーブル１３０を更新する（ステップＳ３１）。
【００６５】
ストレージコントローラ１１０は、上述のように定期的に更新される仮想マシン及びコンテナ一覧テーブル１３０において対象物ごとに設定済のポリシーを参照する一方、上記とほぼ同様に対象物の識別子に基づいてアドレス変換テーブル１４１を参照して仮想マシン３２０に対応する格納先の領域アドレスを取得し（格納先領域アドレス取得ステップ）、ボリューム操作ステップとして当該取得した格納先の領域アドレスに基づいてブロック単位でボリューム１４０の対象領域について再配置アルゴリズムなどの処理を実行する（ステップＳ３２）。
【００６６】
このような構成によれば、ボリューム１４０単位でのポリシーベースではなく、仮想マシン３２０及びコンテナ４２０の少なくとも一方の対象物単位で記憶領域を管理することができる。これにより、１つのボリューム１４０を複数の仮想マシン３２０またはコンテナ４２０が共有している構成であっても、ブロックストレージ機能を用いつつ仮想マシン３２０またはコンテナ４２０のような対象物単位でポリシーを設定しておけば、その設定されたポリシーに応じて仮想マシン３２０やコンテナ４２０ごとに再配置を実現することができる。
【００６７】
また、本実施の形態では、ストレージコントローラ１１０は、業務計算機３００からの要求に対応できない場合、当該要求に対応できない旨の応答を返答するようにしている。このようにすると、例えば、階層型プール方式を用いて管理されている「松」の領域を使用できないエンドユーザが業務計算機３００から「松」の領域を指定する要求を掛けてきた場合でも、仮想マシン３２０の再配置が実施されないようにすることができる。
【００６８】
（３）本実施の形態の適用例及び応用例
（３−１）スナップショット静止化のタイミングについて
図９は、スナップショット作成処理の一例を示すフローチャートである。このスナップショット作成処理では、まず、識別子が「ＶＭ１」である仮想マシン３２０を使用するエンドユーザが、業務計算機３００を用いて管理ドライバ３１０に用意されているコマンドを用いて、スナップショットを作成すべき旨の要求に上記識別子「ＶＭ１」を含めてストレージ装置１００に対して発行する。
【００６９】
ストレージコントローラ１１０は、受け取った要求が表す処理内容を解釈し、この処理内容がスナップショットの作成であることを把握する（ステップＳ４１）。さらにストレージコントローラ１１０では、非管理系処理実行部１１１が、受け取った要求に含まれる識別子「ＶＭ１」に基づいてアドレス変換テーブル１４１を参照し、この識別子「ＶＭ１」に対応するストレージ装置１００内の格納先の領域アドレスを取得し、この格納先の領域アドレスによって特定しうる対象領域に対するＩ／Ｏを停止する（ステップＳ４２）。
【００７０】
次にストレージコントローラ１１０では、識別子「ＶＭ１」の仮想マシン３２０に関する当該対象領域のスナップショットを作成し、その後、スナップショットの作成処理が完了した旨の結果を業務計算機３００に対して応答する（ステップＳ４３）。最後に、ストレージコントローラ１１０は、以上のようなスナップショットの作成対象であった当該対象領域に対するＩ／Ｏを再開する（ステップＳ４４）。
【００７１】
以上のように、前述した管理系のＩＯ要求発行処理による方法を用いて、各仮想マシン３２０のスナップショットの作成要求を発行することにより、スナップショットを作成するために必要な静止化は、その要求を送信されてきたタイミングで実施することができる。これにより、管理ソフトウェア２１０のみでスナップショットを取得していた一般的な場合やいわゆるＮＡＳで仮想マシン３２０を管理する場合に比べて、スナップショットの作成処理を簡素化することができる。
【００７２】
（３−２）本実施の形態による非同期コマンドと管理系の要求との同時受信時
図１０は、本実施の形態による非同期コマンドと管理計算機２００からの管理系の要求とが同時に到着した場合における処理の一例を示すフローチャートである。ストレージコントローラ１１０は、同時に、管理ソフトウェア２１０が発行した管理系の要求と、エンドユーザが業務計算機３００から発行した要求とを受け取った場合、以下のような対応を実施する。
【００７３】
まず、ストレージコントローラ１１０は、管理ソフトウェア２１０によって発行された管理系の要求を受け取り、この要求が非同期コマンド（例えばスナップショットの作成要求やバックアップの取得要求）であった場合、この非同期コマンドの処理内容によって影響が及ぶボリューム１４０の対象領域を特定する（ステップＳ５１）。
【００７４】
ストレージコントローラ１１０は、処理管理テーブル１２０を参照し、上述のように特定したボリューム１４０の対象領域に対する処理内容が実行中であるか否かを判定する（ステップＳ５２）。
【００７５】
特定した対象領域を対象とする処理内容が存在する場合、ストレージコントローラ１１０は、当該処理内容を中断し、仮想マシン「ＶＭ１」に対して、当該処理内容が中断された旨の応答を返す（ステップＳ５３）。
【００７６】
一方、特定した対象領域を対象とする処理内容が存在しない場合、ストレージコントローラ１１０は、管理系の要求として非同期コマンドを実行することにより、実質的に排他制御を行うことができる（ステップＳ５４）。
【００７７】
（４）その他の実施形態
上記実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その趣旨を逸脱しない限り、様々な形態で実施することができる。例えば、上記実施形態では、各種プログラムの処理をシーケンシャルに説明したが、特にこれにこだわるものではない。従って、処理結果に矛盾が生じない限り、処理の順序を入れ替え又は並行動作するように構成しても良い。また、上記実施形態における各処理ブロックを含むプログラムは、例えばコンピュータが読み取り可能な非一時的記憶媒体に格納されている形態であっても良い。
【産業上の利用可能性】
【００７８】
本発明は、業務計算機からの要求に応じて所定のブロック単位でボリュームに対する操作を許容するブロックストレージ装置を備えるストレージシステムに広く適用することができる。
【符号の説明】
【００７９】
１００……ストレージ装置、１１１……非管理系処理実行部、１１２……管理系処理実行部、１１３……ポリシーベース管理実行部、１２０……処理管理テーブル、１３０……仮想マシン及びコンテナ一覧テーブル、１４０……ボリューム、１４１……アドレス変換テーブル、１５０……物理記憶領域、２００……管理計算機、２１０……管理ソフトウェア、３００……業務計算機、３１０……管理ドライバ、３２０……仮想マシン、４００……業務計算機、４１０……管理ドライバ、４２０……コンテナ。
【図１】
2019101467.tif 000003
【図２】
2019101467.tif 000004
【図３】
2019101467.tif 000005
【図４】
2019101467.tif 000006
【図５】
2019101467.tif 000007
【図６】
2019101467.tif 000008
【図７】
2019101467.tif 000009
【図８】
2019101467.tif 000010
【図９】
2019101467.tif 000011
【図１０】
2019101467.tif 000012