(57)【要約】【課題】個々のバーチャルマシン毎に行われるアクセスの優先度制御等の処理指定を、多くのバーチャルマシンが存在するシステム化でも、ストレージの大きな負担、例えばメモリ所要量の増加や処理負荷の増大無しに実現する。【解決手段】各コンピュータは、バーチャルマシンに１つのタグを設定し、コンピュータからストレージへのアクセスについて、アクセスがタグ付きのアクセスであるコンピュータ及びタグを識別する管理コンピュータを備え、コンピュータは、コンピュータのアクセスがタグ付きのアクセスであれば、アクセスコマンドのアドレスの一部分を用いて、タグを埋め込むタグエンコード部を備え、ストレージは、複数のディスクと、アクセスコマンドのアドレスをデコードし、タグを取り出すタグデコード部と、タグに対応する優先度を割り当てる優先度割り当て部と、タグ及び優先度に従いコマンドの実行制御を行うコマンド実行部と備える。【選択図】図１
2013205870.tif 000002
【特許請求の範囲】
【請求項１】
１台乃至は複数台のコンピュータ・ストレージを有するシステムであって、
各コンピュータは、
仮想的な複数のバーチャルマシンが設定可能であり、
システム上の複数のバーチャルマシンに１つのタグを設定し、
前記コンピュータから前記ストレージへのアクセスについて、該アクセスがタグ付きのアクセスであるコンピュータ、及びタグを識別する管理コンピュータを備え、
前記コンピュータは、
前記コンピュータのアクセスがタグ付きのアクセスであれば、アクセスコマンドのアドレスの一部分を用いて、タグを埋め込むタグエンコード部
を備え、
前記ストレージは、
複数のディスクと、
前記アクセスコマンドのアドレスをデコードし、タグを取り出すタグデコード部と、
前記タグに対応する優先度を制御する優先度制御部と、
該タグ及び前記優先度に従いコマンドの実行制御を行うコマンド実行部と
を備えるコンピュータ・ストレージシステム。
【請求項２】
前記タグエンコード部は、前記アクセスコマンドのアドレス部分へのタグの埋め込み、コマンドで指定可能なアドレス空間の最上位ビットから用いる
請求項１に記載のコンピュータ・ストレージシステム。
【請求項３】
前記タグエンコード部は、前記アクセスコマンドのアドレス部分へのタグの埋め込み、コマンドで指定可能なアドレス空間の最下位ビットから用いる
請求項１に記載のコンピュータ・ストレージシステム。
【請求項４】
前記ストレージは、
前記タグ付きアクセスの優先度を登録する優先度管理テーブルと、
前記優先度に基づいてアクセスを制御する優先度管理部と
を備える請求項１から３のいずれか一項に記載のコンピュータ・ストレージシステム。
【請求項５】
前記管理コンピュータは、
前記ディスクに対して、アクセス可能なバーチャルマシンのグループを管理するグループ管理テーブル
を備え、
前記ストレージは、
前記コンピュータからディスクへのアクセスがあった場合に、前記管理テーブルを参照して、該アクセスが前記ディスクへのアクセス権を有するかを判別して、アクセスを制御する制御部
を備える請求項１から４のいずれか一項に記載のコンピュータ・ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・ストレージシステムに関する。
【背景技術】
【０００２】
従来のコンピュータシステム、あるいは、サーバ、ストレージから成るシステムは、それぞれのサーバで用いるデータをストレージに一元的に集約し、個別のサーバで記憶媒体を持つ場合に比べて、媒体の利用率向上やメンテナンス性の向上を図った物が多い。また、これら複数媒体から成るストレージは、論理的に複数の領域（ボリューム）をサーバ等に提供している。
【０００３】
更に、バーチャルマシン技術に於けるストレージへのアクセスはバーチャルディスクを管理するバーチャルマシンモニタを介して、サーバに実装されるネットワークインターフェースを介してストレージにアクセスすることが多い。
【０００４】
この為、それぞれのバーチャルマシンのストレージへのアクセスは、複数のバーチャルマシンが同一のストレージにアクセスすることとなり、ストレージ側では、どのバーチャルマシンからのアクセスか判定することは困難である。
【０００５】
これらを解決する手法として、特許文献１の様に、仮想的なポートを用いる方法、あるいは、アクセス方法が知られている。より具体的に説明すると、ｉＳＣＳＩプロトコルを用いたストレージであれば、仮想的なネットワークのデバイスを定義し、これに仮想的なＴＣＰ／ＩＰアドレスを割り付ける。そして、バーチャルマシン毎に、少なくともシステム内で唯一の仮想ポート／アドレスを割り付け、ストレージは実ボリューム、又は仮想的なボリュームをこの仮想ポート／アドレス毎に割り当て、どのバーチャルマシンからのアクセスであるか判定する。ここで、仮想ポート／アドレスとは、物理的なデバイス等に割り当てるポート／アドレスを仮想的に割り付けたものである。
【０００６】
この方法は、バーチャルマシンが少ない場合では問題無い。しかしながら、今後、予想されるシステム内のサーバ増加あるいはＣＰＵコア数増加によるバーチャルマシンの加速度的な増加に対し、それぞれの仮想ポート／アドレスの管理領域が膨大な物になり、それに伴うストレージ側の処理時間の増加が避けられない。
【０００７】
さらに、これらバーチャルマシン毎のアクセスの区別を行うことで、それぞれのバーチャルマシン毎に、ストレージ内部で処理の優先度を設けることが考えられる。
【０００８】
例えば、あるバーチャルマシンがデータベース等の他の処理に比して、優先順位が高く、システム全体として処理を優先したいことがある。その場合、バーチャルマシン毎に、仮想ポート／アドレスを割り付け、データベースに相当する処理の仮想ポート／アドレスからのアクセスであれば、ストレージ内部で優先制御を行う等が考えられる。
【０００９】
この方法は、ストレージ内部で持つどの仮想ポート／アドレスから、どのバーチャルマシンからのアクセスか判定し、その優先順位を判定するプロセスを経る為、バーチャルマシンの増加に対して前に示した通り処理時間の増加は避けられない。
【００１０】
また、特許文献２には、テーブルに、仮想化機構識別子、優先度や用途付加することにより、仮想化サーバからメモリへのアクセスを制御することが記載されている。
【００１１】
特許文献３には、テーブルに、サーバの識別子とグループ番号を格納し、サーバをグループ制御することが記載されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特許第４６３６６２５号公報
【特許文献２】特開２００９−２３０５９８６号公報
【特許文献３】特開２０１０−０９７４０２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
コンピュータ上に存在する複数のバーチャルマシンから、バーチャルマシン毎にアクセス先を、ストレージ上に作られた同一ボリューム内の仮想ディスクに対して行うバーチャルマシンのストレージへのアクセス方法について考える。コンピュータから単一のデバイスを介して行われた場合においては、それぞれのバーチャルマシン毎に仮想ポート／アドレスの設定を行い、仮想ポート／アドレス毎に優先度制御等のストレージ側で行う。しかしながら、このような方法では、バーチャルマシンが増える従い、仮想ポート／アドレス毎に処理の記述を行うテーブルが大きくなり、メモリ量が増えるだけでなく、テーブルにアクセスを行うオーバーヘッドも増加するという問題点がある。
【００１４】
特許文献２には、テーブルに、仮想化機構識別子、優先度や用途付加することにより、仮想化サーバからメモリへのアクセスを制御することが記載されているが、具体的にメモリへのアクセス手法や優先度制御については、記載されていない。
【００１５】
特許文献３には、テーブルに、サーバの識別子とグループ番号を格納し、サーバをグループ制御することが記載されているが、具体的にメモリのアクセス手法や優先度制御については、記載されていない。
【００１６】
本発明の目的は、上述した課題を解決するコンピュータ・ストレージシステムを提供することにある。
【課題を解決するための手段】
【００１７】
本発明は、１台乃至は複数台のコンピュータ・ストレージを有するシステムであって、各コンピュータは、仮想的な複数のバーチャルマシンが設定可能であり、システム上の複数のバーチャルマシンに１つのタグを設定し、前記コンピュータから前記ストレージへのアクセスについて、アクセスがタグ付きのアクセスであるコンピュータ及びタグを識別する管理コンピュータと、前記コンピュータは、前記コンピュータのアクセスがタグ付きのアクセスであれば、アクセスコマンドのアドレスの一部分を用いて、タグを埋め込むタグエンコード部と、ストレージは、複数のディスクと、前記アクセスコマンドのアドレスをデコードし、タグを取り出すタグデコード部と、前記タグに対応する優先度を制御する優先度制御部と、タグ及び前記優先度に従いコマンドの実行制御を行うコマンド実行部とを具備したことを特徴とするコンピュータ・ストレージシステムが提供される。
【発明の効果】
【００１８】
本発明は、全てのバーチャルマシンに、仮想ポート／アドレスを割り当てること無く、優先制御やマスキング等の処理が実現可能となり、ストレージ側のメモリ消費量の軽減や処理量の軽減が可能となる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施形態の構成を示すブロック図である。
【図２】本発明の第１実施形態の管理コンピュータの管理テーブルの構成を示す図である。
【図３】本発明の実施形態のストレージのデコードテーブルの構成を示コンピュータ
【図４】本発明の第２実施形態の管理コンピュータの管理テーブルの構成を示す図である。
【図５】本発明を実施形態のストレージのデコードテーブルの構成を示す図である。
【図６】本発明を実施形態のストレージのコマンドキューの構成を示す図である。
【発明を実施するための形態】
【００２０】
次に、発明を実施するための最良の形態について図１〜６を参照して詳細に説明する。
【００２１】
本発明の実施の形態は、複数のコンピュータ１００とストレージ１１６から成るシステムである。コンピュータ１００はバーチャルマシン１０１を持ち、バーチャルマシン１０１は、コンピュータ上で複数のバーチャルマシンが実行される。
【００２２】
バーチャルマシン１０１は、タグエンコード部１０２を介して、バーチャルマシンモニタ１０３に対し、アクセスを行う。タグエンコード部１０２は、ネットワーク１０６を介して、管理コンピュータと通信可能で、ストレージ管理部１０７とネットワーク１０６を介して接続されている。
【００２３】
ストレージ管理部１０７は、コンピュータ１００上にバーチャルマシン１０１を構築する場合、バーチャルマシン１０１がストレージアクセスする際に、必要となるタグ情報をタグエンコード部１０２に通知する。
【００２４】
タグエンコード部１０２は、ストレージ管理部１０７から受け取ったタグを保持する。ストレージ管理部１０７は、同時に、ストレージ１１６側のタグデコード部１１０にも、タグの通知を行い、タグデコード部１１０によりタグの格納を行う。
【００２５】
コンピュータ１００上の全てのバーチャルマシン１０１からのアクセスは、バーチャルマシンモニタ１０３を介し、外部とのインターフェースを司るストレージインターフェース１０４を介して、スイッチ１０５を経て、ストレージ１１６にアクセスを行う。
【００２６】
図２は、管理コンピュータ１２０上の管理テーブル１０８のフォーマットを示しており、管理コンピュータ１２０に於いて複数台のコンピュータ１００のタグの管理を行っている。その為、タグ管理テーブル２０１はどのコンピュータ１００に設定されたタグなのかを示すコンピュータ識別子２０３と、コンピュータ１００上のどのバーチャルマシン１０１に割り当てたタグなのかを示すバーチャルマシン識別子２０４とタグ２０５から成る。そして、それぞれがテーブルの形で紐づけられている。
【００２７】
それぞれのタグに対する処理内容を記述した優先度管理テーブル（ＶＭ）２０２も併せて記録されており、バーチャルマシン１０１からストレージ１１６に対するアクセスの優先度を示す優先度２０６とタグ２０７の形で同じくテーブルの形で記録されている。
【００２８】
図４は、管理テーブル１０８を示す。タグ管理テーブル４０１は、優先制御では無く、バーチャルマシン１０１のグループ毎に対するマスキング処理を記述するテーブルで、それぞれコンピュータ識別子４０３、バーチャルマシン識別子４０４、タグ４０５から成る。また、優先度管理テーブル（ＶＭ）２０２の代わりにグループ管理テーブル（ＶＭ）４０２が格納されている。
【００２９】
グループ管理テーブル（ＶＭ）４０２は、マスキング処理を行う一連のグループを示すグループ４０６とタグ４０７のテーブルの形から成る。グループ管理テーブル（ＶＭ）４０２上、同一グループのテーブルに対しては、ストレージ１１６上のボリュームに対するアクセスを許可し、グループの異なるバーチャルマシン１０１に対しては、アクセスを拒絶するなどの処理を行う為の識別子としている。同様に、バーチャルマシン１０１をグループ毎にまとめて、処理可能なものについては、同様のテーブルフォーマットで対処する。
【００３０】
タグエンコード部１０２では、バーチャルマシン１０１からのアクセスに対して、アドレスに対して、タグを埋め込む加工を行う。通常のストレージ１１６に対するアクセスはブロック単位（５１２バイト）に指定可能であるが、実際のアクセスは複数ブロック（例えば４ｋバイト単位）まとめてアクセスを行う。その為、実際のアドレス指定には、下位のビットに利用されないビットが出てくる（４ｋバイト単位のアクセスであれば３ビット）。
【００３１】
また、ストレージのアドレス空間は、実際に利用される空間よりも大きな物が指定可能になっており、先ほどの例とは逆に上位ビットが余っている。
【００３２】
タグエンコード部１０２は、通常のアクセスに於いて、利用されないビットを用い、この利用されないビットにタグを書き込むことで、バーチャルマシンモニタ１０３やストレージインターフェース１０４に対して、透過的にタグを持つアクセス要求を出す。
【００３３】
実際には、リード、もしくはライト要求を行う際に、リードもしくはライトアクセスのアドレスにこれらタグを埋め込むミドルウェアをバーチャルマシンとゲストＯＳの間に配置することで実現する。
【００３４】
ストレージでは、コンピュータからのアクセスを受信部１０９で受信し、受信部１０９は、タグデコード部１１０にアクセス要求を通知する。先ほどのタグエンコード部１０２によりアドレスに埋め込まれたタグは、タグデコード部１１０にてデコードされる。
【００３５】
その際、タグデコード部１１０は、デコードテーブル１１４の内容を参照し、アクセス要求のタグデコード部１１０に対する通知には、どのコンピュータからのアクセスであるかも併せて通知される。
【００３６】
どのコンピュータ１００からアクセスを行ったかは、コンピュータ１００とストレージ１１６を接続するストレージインターフェース１０４によって規定される。これは、装置毎（コンピューターやストレージの装置毎）に割り付けられたポートアドレスやＩＰアドレスが指定されて送られる為、コンピュータ毎の識別は、可能である。
【００３７】
受信部１０９からアクセス要求を受信したタグデコード部１１０は、デコードテーブル１１４の内容を参照し、タグで記述される処理と元々要求として存在する該当アドレスのリードもしくはライトの実行を行う。
【００３８】
これには、タグデコード部１１０が、コンピュータ管理テーブル３０５とタグ管理テーブル（ストレージ）３０１を参照して行う。コンピュータ管理テーブル３０５はどのコンピュータがタグによる優先制御を行うか示す為に用いられる。
【００３９】
同様にマスキングなどのグループを行う為にはコンピュータ管理テーブル５０５を用いる。さらに、タグ管理テーブル（ストレージ）３０１は、タグ３０２の内容に対応して実際に処理が実行される内容、例えば、優先度２０６で示される優先度制御を行うグループが記述されている。
【００４０】
グループ管理テーブル（ストレージ）５０１についても同様に、グループ５０３の内容に対応してマスキングを行うグループが記述されている。タグデコード部１１０でのタグの取り出しは、タグエンコード部１０２でタグが書き込まれたビット（アクセス要求のアドレスの下位ビットか上位ビット）を取り出すことにより行われる。
【００４１】
タグとして用いるビット長や位置（上位ビットか下位ビットか）はシステム全体で最初に定義しておき、それぞれのコンピュータ１００、ストレージ１１６間で齟齬の無いようにしておく。また、本タグのデコードは、コンピュータ管理テーブル３０５及びコンピュータ管理テーブル５０５で示されるコンピュータ識別子に一致するコンピュータ１００を対象に行われる。
【００４２】
タグデコード部１１０で取り出されたタグは、タグに相当するビットに零を書き込んだ後に、優先度制御実行部１１１に送られて、コマンドの優先度制御が行われる。コマンド実行部１１２では、リードもしくはライトのコマンドであれば、ディスク１１３（１台乃至複数台数持つ）に対して媒体へのリードもしくはライトが実行される。
【００４３】
優先度制御実行部１１１では、複数のリードもしくはライトのコマンドを一時保持するコマンドキュー１１５を持ち、コマンドキュー１１５では、図６に示される様なキューを用いて制御を行う。即ち、優先度毎に、コマンドキュー１１５のテーブルに、コマンドが格納され、優先度の高いコマンドから実行される。
【００４４】
それには、タグデコード部１１０でのコマンドからのタグのデコードを行い、その際、優先度管理テーブル（ＶＭ）２０２を参照して、タグ３０２に該当する優先度３０３に相当する値を取り出し、コマンドと共に優先度制御実行部１１１に送られる。優先度制御実行部１１１では、優先度の値に従いコマンドを格納するキューの割り振りを行う。
【００４５】
ここでは、優先度を１〜４までに設定し、優先度の値が１のコマンドであれば優先度１キュー６０１に格納し、優先度が２であれば優先度２キュー６０２に格納する。同様に、優先度の値が３であれば、優先度３キュー６０３に格納し、４であれば優先度４キュー６０４に格納する。
【００４６】
また、Ｑｕｅｕｅ選択テーブル６０５は、どの優先度を示すキューからコマンドを取り出すが示しており、予め取り出すべき優先度のキューの値が設定されたテーブルとなっている。
【００４７】
図６では、優先度が１〜４まで記述されているが、更に、優先度を増やすことも可能であり、優先度が増えるに従い、キューの個数が増え、同じくＱｕｅｕｅ選択テーブルのテーブル内の値の個数が増える。
【００４８】
Ｑｕｅｕｅ選択テーブル６０５は、それぞれの優先度に応じてコマンドの実行ができれば良い。本方式では優先度１のコマンドが実行される確率が高く、優先度４のコマンドが実行される確率が一番低く設定されており、この制御は、Ｑｕｅｕｅ選択テーブル６０５の値の出現頻度によりコントロールされる。
【００４９】
ここでは、優先度１のコマンドの実行頻度が４／１０、優先度２が３／１０、優先度３が２／１０、優先度４が１／１０となっている。コマンドを実行する毎に、ポインタ６０６が隣接のテーブルに移動し、ポインタの優先度のキューからコマンドを取り出しコマンド実行部１１２にコマンドを送り実行される。
【００５０】
優先度の増減を行いたい場合は、優先度をＮ個設定する場合、優先度１から優先度Ｎまでの値の総和分の優先度を格納するテーブルをＱｕｅｕｅ選択テーブル上に用意すれば良い。また、テーブル中の優先度の値の設定は次の様になる。
【００５１】
設定を行いたい優先度がＭであれば、Ｎ−Ｍ＋１個のテーブルに優先度Ｍの値をＱｕｅｕｅ選択テーブル６０５に設定すれば良い。
【００５２】
次に、図２及び図１、図３、図６を用いて、本実施の形態の全体の動作について詳細に説明する。
【００５３】
図２は、管理コンピュータ上の管理テーブル１０８のフォーマットを示しており、管理コンピュータに於いて、複数台のコンピュータのタグの管理を行っている。その為、管理コンピュータのタグの管理はどのコンピュータに設定されたタグなのかを示すコンピュータ識別子２０３と、コンピュータ上のどのバーチャルマシンに割り当てたタグなのかを示すバーチャルマシン識別子２０４とタグ２０５から成る。そして、それぞれがテーブルの形で紐づけられている。
【００５４】
さらに、それぞれのタグに対する処理内容を記述した優先度管理テーブル（ＶＭ）２０２も併せて記録されており、バーチャルマシンからストレージに対するアクセスの優先度を示す優先度２０６とタグ２０７の形で同じくテーブルの形で記録されている。
【００５５】
管理テーブルは、コンピュータ１００及びストレージ１１６のシステムを構築した際に、初期設定がなされるか、構成変更のあった場合に更新され、常に、最新の設定状況が保持される。例えば、コンピュータ１００上のＶＭが追加／削除された場合や、コンピュータ１００そのものの追加／削除された場合や、ストレージ１１６が追加／削除された場合に更新される。更には、コンピュータあるいはストレージの装置に紐づけられて設定されるポートアドレスやＩＰアドレスの変更、あるいはタグの値の変更のあった際にも更新される。
【００５６】
また、初期設定時、あるいは、更新が行われた際には、ストレージ管理部１０７は、バーチャルマシン１０１毎に設定されるタグに変更のあるバーチャルマシン１０１のタグエンコード部１０２に対してタグの２０５の送信を行い、タグの更新を行う。管理コンピュータ１２０は外部からの操作（人間あるいは他の管理装置により）によりバーチャルマシン１０１毎の優先度を設定する。
【００５７】
ストレージ管理部１０７はシステム内の全てのバーチャルマシン１０１に対して、ユニークな識別子（バーチャルマシンが異なれば、必ず異なる識別子が付与される）が設定されている。
【００５８】
また、バーチャルマシン１０１の存在するコンピュータ１００を認識する為の識別子がコンピュータ識別子２０３に格納されている。コンピュータ識別子２０３はポートアドレスやＩＰアドレスなどの個別の装置（コンピュータやストレージに対して割り当てられる）のアドレスを設定する。
【００５９】
外部からの入力があった場合、バーチャルマシン識別子２０４に対して、同一のバーチャルマシン識別子２０４が無いか検索を行う。そして、存在すれば入力された優先度に一致する優先度管理テーブル（ＶＭ）２０２の優先度２０６を探しだし、優先度２０６に相当するタグ２０７を取り出す。
【００６０】
更に、タグの値をバーチャルマシン識別子２０４に相当するテーブルのタグ２０５に書き込み、コンピュータ識別子２０３をストレージ１１６に送信し、コンピュータ識別子２０３で示されるバーチャルマシン１０１が優先度管理を行っていることを通知する。また、バーチャルマシン識別子２０４がタグ管理テーブル２０１上に存在しなければ、タグ管理テーブル２０１の空いている箇所に、コンピュータ識別子２０３、バーチャルマシン識別子２０４とタグ２０５を書き込む。そして、ストレージ１１６に対してコンピュータ識別子２０３の送信を行う。
【００６１】
ストレージに受信部１０９で受信したコンピュータ識別子が、タグデコード部１１０がコンピュータ識別子３０４に無いか探しだし、存在すればそのまま処理を終了し、存在しなければコンピュータ管理テーブル３０５上にコンピュータ識別子を登録する。
【００６２】
また、これと併せて、優先度管理テーブル（ＶＭ）２０２の初期設定、あるいは、変更のあった際には、変更あるいは追加のあった優先度２０６とタグ２０７のペアをシステム内に存在する全てのストレージ１１６に送信する。ストレージ１１６側では、これらの情報を受信部１０９で受信する。受信部１０９はタグデコード部１１０に情報を渡す。タグデコード部１１０は、受信したタグがタグ管理テーブル（ストレージ）３０１のタグ３０２に無いか探し、存在すれば、受け取ったタグの優先度をタグ管理テーブル（ストレージ）３０１の優先度３０３に書き込む。
【００６３】
これらの各テーブルあるいは値がそれぞれのコンピュータ、ストレージで更新された状態で、実際に、バーチャルマシン１０１からのアクセスに対する動作について、詳細に説明する。
【００６４】
コンピュータ１００はバーチャルマシン１０１を持つ。コンピュータ１００上で複数のバーチャルマシン１０１が実行され、バーチャルマシン１０１はタグエンコード部１０２を介して、バーチャルマシンモニタ１０３に対し、ディスク１１３上に対してリードもしくはライトのアクセスを行うよう指示する。その際に、タグエンコード部１０２では、バーチャルマシン１０１からのアクセスに対して、アドレスに対して、タグを埋め込む加工を行う。
【００６５】
通常のストレージ１１６に対するアクセスはブロック単位（５１２バイト）に指定可能であるが、実際のアクセスは、複数ブロック（例えば４ｋバイト単位）まとめてアクセスを行う。その為、実際のアドレス指定には、下位のビットに利用されない物が出てくる（４ｋバイト単位のアクセスであれば３ビット）。また、ストレージ１１６のアドレス空間は実際に利用される空間より大きな物が指定可能になっており、先ほどの例とは逆に上位ビットが余っている。
【００６６】
タグエンコード部１０２は、通常のアクセスに於いて、利用されないビットを用い、この利用されないビットにタグを書き込むことで、バーチャルマシンモニタ１０３やストレージインターフェース１０４に対して、透過的にタグを持つアクセス要求を出す。
【００６７】
これらのタグは設定のプロセスでタグエンコード部１０２に記録されたタグを用いて行う。ストレージではこれらタグが埋め込まれたコマンドを受信部１０９で受信すると、受信部１０９はタグデコード部１１０にアクセス要求を通知する。
【００６８】
先ほどのタグエンコード部１０２にアドレスに書き込まれたタグは、タグデコード部１１０にてデコードされる。
【００６９】
その際、タグデコード部１１０は、デコードテーブル１１４の内容を参照し、アクセス要求のタグデコード部１１０に対する通知には、どのコンピュータからのアクセスであるかも併せて通知される。
【００７０】
これにはコンピュータ識別子が用いられる。どのコンピュータ１００からアクセスを行ったかは、コンピュータ１００とストレージ１１６とを接続するストレージインターフェース１０４により異なる。コンピュータ１００やストレージ１１６の装置毎に割り付けられたポートアドレスやＩＰアドレスを用いれば、個別に識別は可能である。
【００７１】
タグデコード部１１０では、コンピュータ識別子がコンピュータ管理テーブル３０５にあるかどうか検索を行う。そして、無ければタグのデコードを行わず、通常のアクセスとしてコマンド実行部１１２にコマンドを通知し、コマンド実行部１１２は通常のリードもしくはライト動作をディスクに対して行う。一方、受信したコンピュータ識別子が存在すれば、これはコマンドにタグが埋め込まれていることを示しており、タグデコード部１１０でコマンドからのタグのデコードを行う。
【００７２】
タグデコード部１１０でのタグの取り出しは、タグエンコード部１０２でタグが書き込まれたビット（アクセス要求のアドレスの下位ビットか上位ビット）を取り出すことに行われる。
【００７３】
タグとして用いるビット長や位置（上位ビットか下位ビットか）はシステム全体で最初に定義しておき、それぞれのコンピュータ１００、ストレージ１１６間で齟齬の無いようにしておく。タグデコード部１１０は、取り出したタグに相当する優先度をタグ管理テーブル（ストレージ）３０１から検索を行い、該当する優先度３０３とタグに相当するビットに零を書き込んだコマンドを優先度制御実行部１１１に渡す。
【００７４】
優先度制御実行部１１１では、複数のリードもしくはライトのコマンドを一時保持するコマンドキュー１１５を持ち、コマンドキュー１１５では、図６に示される様なキューを用いて制御を行う。
【００７５】
優先度制御実行部１１１では、優先度の値に従いコマンドを格納するキューの割り振りを行う。
【００７６】
ここでは優先度を１〜４までに設定し、優先度の値が１のコマンドであれば優先度１キュー６０１に格納し、優先度が２であれば優先度２キュー６０２に格納する。同様に、優先度の値が３であれば優先度３キュー６０３、４であれば優先度４キュー６０４に格納する。また、Ｑｕｅｕｅ選択テーブル６０５は、どの優先度を示すキューからコマンドを取り出すが示しており、予め、取り出すべき優先度のキューの値が設定されたテーブルとなっている。
【００７７】
図では優先度が１〜４までで記述されているが、更に優先度を増やすことも可能であり、優先度が増えるに従い、キューの個数が増え、同じくＱｕｅｕｅ選択テーブルのテーブル内の値の個数が増える。
【００７８】
Ｑｕｅｕｅ選択テーブル６０５は、それぞれの優先度に応じて、コマンドの実行ができれば良い。本方式では優先度１のコマンドが実行される確率が高く、優先度４のコマンドが実行される確率が一番低く設定されており、この制御はＱｕｅｕｅ選択テーブル６０５の値の出現頻度によりコントロールされる。
【００７９】
ここでは、優先度１のコマンドの実行頻度が４／１０、優先度２が３／１０、優先度３が２／１０、優先度４が１／１０となっている。コマンドを実行する毎にポインタ６０６が隣接のテーブルに移動し、概ポインタの優先度のキューからコマンドを取り出しコマンド実行部１１２にコマンドを送り実行される。
【００８０】
優先度の増減を行いたい場合は、優先度をＮ個設定する場合、優先度１から優先度Ｎまでの値の総和分の優先度を格納するテーブルをＱｕｅｕｅ選択テーブル上に用意すれば良い。またテーブル中の優先度の値の設定は次の様になる。設定を行い体優先度がＭであれば、Ｎ−Ｍ＋１個のテーブルに優先度Ｍの値をＱｕｅｕｅ選択テーブル６０５に設定すれば良い。
【００８１】
コマンドの実行時には、優先度制御実行部１１１は現在のポインタ６０６で示されるＱｕｅｕｅ選択テーブル６０５の優先度の値を読み出し、該当するする優先度を示すキューからのコマンドの取り出しを行う。
【００８２】
例えば、ポインタ６０６で示されるＱｕｅｕｅ選択テーブル６０５の値が１であれば、優先度１キューからコマンドを取り出す。この際、取り出すコマンドが無ければ、ポインタ６０６を隣にインクリメントし、ポインタ６０６に該当するコマンドの取り出し、ポインタ６０６をインクリメントすると共に該当するコマンドをコマンド実行部１１２に渡す。コマンド実行部１１２はディスク１１３に対し、リードもしくはライトの実行を行う。ポインタ６０６がＱｕｅｕｅ選択テーブル６０５の端まで来ると、Ｑｕｅｕｅ選択テーブル６０５の最初にポインタ６０６がリセットされる。
【００８３】
これらを繰り返すことでコンピュータ上のバーチャルマシン１０１上のコマンドをストレージで優先度付きで制御可能となる。
【００８４】
以上説明した第１実施形態によれば、バーチャルマシンにタグを付与し、バーチャルマシンからストレージにアクセスする際にタグを用い、タグと優先度とを紐づけすることにより、ストレージへのアクセスに優先度制御できる。
【００８５】
次に、図１及び図４、図５を用いて本実施の別の形態の全体の動作について説明する。
【００８６】
図４は、管理テーブル１０８を示す。これは、優先制御では無く、バーチャルマシン１０１のグループ毎に、マスキング処理を記述するテーブルで、それぞれコンピュータ識別子４０３、バーチャルマシン識別子４０４、タグ４０５からなる。また、優先度管理テーブル（ＶＭ）２０２の代わりにグループ管理テーブル（ＶＭ）４０２が格納されている。
【００８７】
グループ管理テーブル（ＶＭ）４０２は、マスキング処理を行う一連のグループを示すグループ４０６とタグ４０７のテーブルの形から成る。グループ管理テーブル（ＶＭ）４０２上、同一グループのテーブルに対しては、ストレージ１１６上のボリュームに対するアクセスを許可し、グループの異なるバーチャルマシン１０１に対しては、アクセスを拒絶するなどの処理を行う為の識別子としている。同様に、バーチャルマシン１０１をグループ毎にまとめて、処理可能なものについては、同様のテーブルフォーマットで対処する。
【００８８】
即ち、図４は、管理テーブル１０８を示す図であり、優先度２０６の代わりに、バーチャルマシン１０１のアクセスのマスキングを行うグループを示す値をグループ４０６として格納する。値は設定したグループそれぞれが認識できれば良い。
【００８９】
また、それ以外の図４のテーブルに関しては、全く同じで、管理コンピュータによる処理や、コンピュータ１００側のバーチャルマシン１０１、タグエンコード部１０２の処理は全く同じである。
【００９０】
異なるのはストレージの優先度制御実行部１１１の処理である。より具体的に説明すると、リードライトのアクセスを行うディスク１１３上の領域に対して、アクセス可能なグループを１つ乃至複数設定しておく管理コンピュータから指示しても良い）。そして、ディスク１１３に対するアクセス可能なグループでは無いコマンドが合った場合に、コマンドの実行を行わず終了する。ここで、あるディスクにアクセス可能なグループは、グループとタグとディスク識別子を管理テーブルに登録すれば良い。
【００９１】
本発明によれば、複数のバーチャルマシンを実行可能なコンピュータと、１台以上の磁気ディスク装置や光ディスク装置を持つストレージに於いて適用可能である。
【符号の説明】
【００９２】
１０１  バーチャルマシン
１０２  タグエンコード部
１０３  バーチャルマシンモニタ
１０４  ストレージインターフェース
１０５  スイッチ
１０６  ネットワーク
１０７  ストレージ管理部
１０８  管理テーブル
１０９  受信部
１１０  タグデコード部
１１１  優先度制御実行部
１１２  コマンド実行部
１１３  ディスク
２０１  タグ管理テーブル
２０２  優先度管理テーブル（ＶＭ）
２０３  コンピュータ識別子
２０４  バーチャルマシン識別子
２０５  タグ
２０６  優先度
２０７  タグ
３０１  タグ管理テーブル（ストレージ）
３０２  タグ
３０３  優先度
３０４  コンピュータ識別子
３０５  コンピュータ管理テーブル
４０１  タグ管理テーブル
４０２  グループ管理テーブル（ＶＭ）
４０３  コンピュータ識別子
４０４  バーチャルマシン識別子
４０５  タグ
４０６  グループ
４０７  タグ
５０１  グループ管理テーブル（ストレージ）
５０２  タグ
５０３  グループ
５０４  コンピュータ識別子
５０５  コンピュータ管理テーブル
６０１  優先度１キュー
６０２  優先度２キュー
６０３  優先度３キュー
６０４  優先度４キュー
６０５  Ｑｕｅｕｅ選択テーブル
６０６  ポインタ
【図１】
2013205870.tif 000003
【図２】
2013205870.tif 000004
【図３】
2013205870.tif 000005
【図４】
2013205870.tif 000006
【図５】
2013205870.tif 000007
【図６】
2013205870.tif 000008