以下、本発明の実施の形態を、図面を参照して説明する。
図1は、本発明の第1の実施の形態の計算機システムの構成を示すブロック図である。
本実施の形態の計算機システムは、仮想化装置13A、仮想化装置13B、ホスト計算機12、管理サーバ16、管理コンソール14及び一つ以上のストレージ装置133を備える。
ローカルエリアネットワーク(LAN)15は、管理サーバ16、ホスト計算機12、仮想化装置13A及び仮想化装置13Bを相互に接続し、これらが相互に通信するために使用される通信路である。
ストレージエリアネットワーク(SAN)17は、ホスト計算機12、仮想化装置13A、仮想化装置13B及び各ストレージ装置133を相互に接続し、これらがデータを送受信するために使用される通信路である。本実施の形態のSAN17上では、例えば、ファイバーチャネル(FC)プロトコルによる通信が実行される。
ホスト計算機12、仮想化装置13A及び仮想化装置13Bは、ストレージエリアネットワーク(SAN)17を介して接続さる。さらに、仮想化装置13A、仮想化装置13B及び各ストレージ装置133は、SAN17を介して接続される。
仮想化装置13Aは、ストレージ装置133内の記憶領域を仮想化した論理ボリューム131(図2参照)としてホスト計算機12に提供する装置である。論理ボリューム131については、後で図2を参照して説明する。
仮想化装置13Aは、制御装置132及びSANインターフェース(SAN_I/F)172を備える。
制御装置132は、CPU134、メモリ135、ネットワークインターフェースカード(NIC)151及びSANインターフェース172を備える。
CPU134は、メモリ135に格納されたプログラムを実行するプロセッサである。
メモリ135は、例えば半導体メモリであり、CPU134によって実行される各種のプログラム及びそれらのプログラムが参照するテーブルを格納する。本実施の形態のメモリ135は、少なくとも、Inquiry応答プログラム136、ボリューム管理プログラム137及びボリューム管理テーブル138を格納する。
Inquiry応答プログラム136は、仮想化装置13Aがホスト計算機12からInquiry要求(SCSIのINQUIRYコマンド、オペレーションコード12h)を受信したとき、Inquiry情報を作成し、そのInquiry情報をホスト計算機12に送信するプログラムである。Inquiry情報とは具体的にはSCSIのINQUIRYコマンドの応答情報である。好ましくは、SCSI−1規格で定められているStandard INQUIRY dataの一部、またはSCSI−2規格で定められているVital product data parameters、特にPage code 80h (Unit serial number page)またはPage code C0h - FFhのベンダスペシフィックのテーブルである。
Inquiry要求は、ホスト計算機12が仮想化装置13Aの論理ボリューム131に関する情報(Inquiry情報)を取得するために仮想化装置13Aに送信する要求である。
Inquiry情報は、論理ボリューム131に関する情報を含む。具体的には、Inquiry情報は、論理ボリューム131を計算機システム内で一意に識別する識別情報として、仮想化装置13Aの製造番号及び論理ボリューム131の論理ボリューム番号を含む。ホスト計算機12は、Inquiry情報を参照して、各論理ボリューム131を識別する。Inquiry情報については、後で詳細に説明する(図4A及び図4B参照)。
ボリューム管理プログラム137は、管理サーバ16等からの指示に従って、論理ボリューム131の生成、削除、名前変更及び移行等を実行するプログラムである。
ボリューム管理テーブル138は、論理ボリューム131を管理するテーブルである。ボリューム管理テーブル138には、仮想化装置13Aがホスト計算機12に提供する論理ボリューム131に関する情報が登録される。
これらのプログラム及びテーブルについては、後で詳細に説明する。
NIC151は、LAN15に接続され、管理サーバ16等と通信するインターフェースである。
SANインターフェース172は、SAN17に接続され、ホスト計算機12、仮想化装置13B及びストレージ装置133と通信するインターフェースである。具体的には、SANインターフェース172は、ファイバーチャネル(FC)のホストバスアダプタ(HBA)である。ただし、本実施の形態のホスト計算機12、仮想化装置13A及びストレージ装置133の間の接続には、FC以外のプロトコル(例えば、SCSI、iSCSI又はInfiniBand等)を使用してもよい。その場合、SANインターフェース172は、これらのプロトコルに対応するアダプタであってもよい。
仮想化装置13Bの構成は、仮想化装置13Aと同じである。このため、仮想化装置13Bの構成については、説明を省略する。以下の説明において、仮想化装置13A及び13Bを特に区別する必要がない場合、これらを総称して、仮想化装置13と記載する。
ホスト計算機12は、仮想化装置13が提供する論理ボリューム131のデータ(すなわち、ストレージ装置133の記憶領域に格納されたデータ)を使用する計算機である。ホスト計算機12は、CPU121、メモリ122、NIC151及びSANインターフェース172を備える。
CPU121は、メモリ122に格納されたプログラムを実行するプロセッサである。
メモリ122は、例えば半導体メモリであり、CPU121によって実行される各種のプログラム及びそれらのプログラムが参照するテーブルを格納する。本実施の形態のメモリ122は、少なくとも、アプリケーションプログラム(AP)123、ファイルシステム(FS)124、パス管理プログラム125、マウントテーブル126及び仮想デバイス管理テーブル127を格納する。
AP123は、仮想デバイス(図示省略)上のファイルを使用して業務を実行するプログラム(例えば、データベース管理プログラム等)である。仮想デバイスとは、FS124が認識する仮想的なデバイスである。一つの仮想デバイスは、後述するパス管理プログラム125によって、一つの論理ボリューム131と対応付けられる。
FS124は、仮想デバイス上の領域と、AP123が読み出し又は書き込みするファイルとを対応付けるプログラムである。
パス管理プログラム125は、仮想デバイスと論理ボリューム131とを対応付けるプログラムである。
マウントテーブル126は、仮想デバイスと、その仮想デバイスに格納されるファイルの名前との対応を管理するテーブルである。具体的には、マウントテーブル126には、仮想デバイス名と、その仮想デバイス上のファイルに与えられるファイル名の先頭文字列とが登録される。マウントテーブル126は、FS124によって参照される。
仮想デバイス管理テーブル127は、仮想デバイスと論理ボリューム131との対応を管理するテーブルである。具体的には、仮想デバイス管理テーブル127には、仮想化装置13の製造番号及び論理ボリューム名と、それらに対応する仮想デバイス名とが登録される。仮想デバイス管理テーブル127は、パス管理プログラム125によって参照及び更新される。
パス管理プログラム125、マウントテーブル126及び仮想デバイス管理テーブル127については、後で詳細に説明する。
管理サーバ16は、仮想化装置13の設定の確認及び変更をする計算機である。
本実施の形態の管理サーバ16は、CPU161、メモリ162及びNIC151を備える。
CPU161は、メモリ162に格納されたプログラムを実行するプロセッサである。
メモリ162は、例えば半導体メモリであり、CPU161によって実行される各種のプログラム等を格納する。本実施の形態のメモリ162には、少なくとも、仮想化装置13に、論理ボリューム131の作成、削除及び移行の要求(図7A参照)を発行するプログラムが格納される(図示省略)。
管理コンソール14は、システム管理者が管理サーバを操作するために使用する入出力端末である。
ストレージ装置133は、SAN17を介して仮想化装置13に接続される。各ストレージ装置133は、少なくとも一つの独立した装置として扱うことができる。各ストレージ装置133は、一つのディスクドライブであってもよいし、複数のディスクドライブを含むディスクアレイ装置であってもよい。各ストレージ装置133は、一つ以上の実ボリューム139(後述)を含む。実ボリューム139には、AP123が使用するファイルのデータが格納される。
図2は、本発明の第1の実施の形態の概要の説明図である。
図2を参照して、本発明の概要を説明する。図2において、図1に示すハードウエア構成は、図示を省略する。
図2において、各仮想化装置13は、装置識別子によって識別される。装置識別子は、例えば、仮想化装置13の製造番号である。図2の例において、仮想化装置13Aの製造番号は「U1」、仮想化装置13Bの製造番号は「U2」である。以下の本実施の形態では、製造番号を装置識別子として使用するが、各仮想化装置13を一意に識別するものであれば、製造番号以外の識別子を使用してもよい。
なお、説明の便宜上、製造番号として「U1」「U2」等の文字列を使用するが、実際の製造番号は、任意の文字及び数字の列であってもよい。また、製造番号には、各仮想化装置の機種を特定する情報(機種情報)が含まれてもよい。
図2の例において、仮想化装置13Aには、当初、二つの論理ボリューム131が設定されている。論理ボリューム131とは、一つ以上の実ボリューム139(後述)と対応する仮想的な記憶領域である。仮想化装置13は、一つ以上の論理ボリューム131をホスト計算機12に対して提供することができる。
各論理ボリューム131は、ボリューム番号(識別子)によって識別される。仮想化装置13Aの二つの論理ボリューム131のボリューム番号は、それぞれ、「VOL−A」及び「VOL−B」である。以下、ボリューム番号が「VOL−A」である論理ボリューム131を、単に「VOL−A」と記載する。他の論理ボリューム131についても同様である。
各仮想化装置13は、各仮想化装置13内で一意のボリューム番号を各論理ボリューム131に与える。仮想化装置の製造番号及びボリューム番号の組み合わせは、各論理ボリューム131を計算機システム内で一意に識別する識別情報として使用される。
VOL−A及びVOL−Bは、それぞれ、所定の一つ以上の実ボリューム139と対応する。実ボリューム139とは、ストレージ装置133上の記憶領域からなり、データが実際に格納されるボリュームである。
ホスト計算機12は、論理ボリューム131にアクセス要求を発行する。要求されたアクセスは、実際には、その論理ボリューム131に対応する実ボリューム139を対象として実行される。
例えば、ホスト計算機12がVOL−Aに対するデータの書き込み要求を発行した場合、そのデータは、実際にはVOL−Aに対応する実ボリューム139に格納される。このとき、ホスト計算機12からは、データが仮想化装置13AのVOL−Aに格納されているように見える。以下の説明において、VOL−Aに対応する実ボリューム139にデータが格納されることを、単に「VOL−Aにデータが格納される」と記載する。VOL−B、VOL−Cについても同様である。
なお、以下の説明では、全ての論理ボリューム131が実ボリューム139と対応することを仮定しているが、実ボリューム139自体が論理ボリューム131として認識されてもよい。
図2の例において、VOL−Bは、仮想化装置13BのVOL−Cに移行する。具体的には、VOL−Bと、VOL−Bに対応する実ボリューム139との対応関係が解除される。そして、その実ボリューム139が、VOL−Cと新たに対応付けられる。結局、VOL−Cに対応する実ボリューム139は、VOL−Bに対応していた実ボリューム139と同じものである。このため、VOL−BがVOL−Cに移行しても、データは移動しない。しかし、ホスト計算機12からは、VOL−Bに格納されていたデータがVOL−Cに移動したように見える。
このような論理ボリューム131の移行は、例えば、仮想化装置13のアクセス負荷を分散するために実行される。例えば、ホスト計算機12がVOL−A及びVOL−Bに対して大量のアクセス要求を発行し、一方、仮想化装置13Bの論理ボリューム131にはわずかのアクセス要求しか発行しない場合がある。このような場合、VOL−Bを仮想化装置13Bに移行することによって、仮想化装置13Aのアクセス負荷の一部が仮想化装置13Bに分散される。その結果、計算機システム全体のデータ処理性能が改善される。
VOL−BからVOL−Cへの移行が完了すると、VOL−Bに対するアクセスは禁止される。この時点で、VOL−Cには、かつてVOL−Bに格納されていたものと全く同じデータが格納されている。AP123が使用するファイルがVOL−Bに格納されていた場合、AP123がそのファイルにアクセスするためのアクセス要求は、VOL−Cに発行される必要がある。従来、このようなアクセス要求の発行先を変更するために、FS124が参照するマウントテーブル126を、システム管理者が手動で更新する必要があった。
具体的には、ホスト計算機12がVOL−Cに対するInquiry要求を発行すると、従来の仮想化装置13Bは、仮想化装置13Bの製造番号「U2」とVOL−Cのボリューム名「VOL−C」からなるInquiry情報を応答した。このため、VOL−BとVOL−Cが同じ実ボリューム139と対応しているにも関らず、ホスト計算機12のパス管理プログラム125は、VOL−CをVOL−Bとは異なる論理ボリューム131であると認識し、VOL−Bとは異なる仮想デバイス名をVOL−Cに割り当てた。このため、システム管理者は、VOL−Bの仮想デバイス名(図2の例では、「/dev/dsk/vol0002」)と、ファイル名(図2の例では、「/home2」)との対応関係を解除し、VOL−Cの仮想デバイス名(例えば、「/dev/dsk/vol0003」)とファイル名「/home2」とを新たに対応させるように、マウントテーブル126を更新する必要があった。
本発明の第1の実施の形態によれば、移行先のVOL−Cは、移行元の仮想化装置13Aの製造番号「U1」及び移行元の論理ボリューム131のボリューム名「VOL−B」を引き継ぐ(図3A及び図3B参照)。そして、仮想化装置13Bは、ホスト計算機12からのInquiry要求に対して、引き継いだ「U1」及び「VOL−B」を応答する。このため、パス管理プログラム125は、VOL−CをVOL−Bと同じ論理ボリューム131であると認識し、VOL−Bと同じ仮想デバイス名をVOL−Cに割り当てる。その結果、システム管理者がマウントテーブル126を更新せずに、AP123がVOL−Cに格納されたファイルを使用することができる。
なお、本実施の形態を実施するためには、各論理ボリューム131に関するInquiry情報が、計算機システム内で一意である必要がある。このため、仮想化装置13Bが仮想化装置13Aから「U1」及び「VOL−B」を引き継いだ後、仮想化装置13Aは、新たに作成した論理ボリューム131にボリューム名「VOL−B」を与えることができない。
以下、本実施の形態の各テーブル及び各プログラムについて、詳細に説明する。
図3Aは、本発明の第1の実施の形態の移行元の仮想化装置13Aのボリューム管理テーブル138の説明図である。
このボリューム管理テーブル138は、仮想化装置13Aに格納されている論理ボリューム131を管理するテーブルである。図3Aの例は、VOL−BからVOL−Cへの移行が完了した後のボリューム管理テーブル138を示す。
ボリューム管理テーブル138は、仮想化装置内ボリューム番号301、作成元仮想化装置の製造番号302及び作成時のボリューム番号303を含む。これらのうち、作成元仮想化装置の製造番号302及び作成時のボリューム番号303は、従来のボリューム管理テーブルには含まれておらず、本発明の実施の形態において追加されたものである。
仮想化装置内ボリューム番号301は、仮想化装置13Aに格納されている論理ボリューム131の論理ボリューム番号である。
仮想化装置13Aには、当初、VOL−A及びVOL−Bの二つの論理ボリューム131が格納されている(図2参照)。この時点で、仮想化装置内ボリューム番号301として「VOL−A」及び「VOL−B」が登録されている。その後、VOL−BがVOL−Cに移行し、仮想化装置13AからVOL−Bが削除される。
従来は、VOL−Bの削除に伴って、仮想化装置内ボリューム番号301から「VOL−B」が削除された。しかし、本実施の形態では、仮想化装置内ボリューム番号301から「VOL−B」が削除されない。これは、仮想化装置13Aが新たに作成した論理ボリューム131にボリューム番号「VOL−B」を与えることを防ぐためである。「U1」及び「VOL−B」は移行先のVOL−Cに引き継がれて使用されるので、仮想化装置13Aが新たに作成した論理ボリューム131にボリューム番号「VOL−B」を与えると、Inquiry情報が計算機システム内で一意でなくなるためである。
作成元仮想化装置の製造番号302には、論理ボリューム131が一つの仮想化装置13から別の仮想化装置13に移行した場合、移行元の仮想化装置13の製造番号が登録される。この移行元の仮想化装置13の製造番号は、移行した論理ボリューム131のボリューム番号と関連付けて登録される。
図2の例において、仮想化装置13AのVOL−A及びVOL−Bは、いずれも仮想化装置13Aによって作成されたものである。この場合、当初、VOL−A及びVOL−Bの作成元仮想化装置の製造番号302は、いずれも空欄(「−」)である。その後、VOL−BがVOL−Cに移行し、仮想化装置13AからVOL−Bが削除される。このとき、VOL−Bの作成元仮想化装置の製造番号302として、仮想化装置13Aの製造番号「U1」が登録される。
作成時のボリューム番号303には、論理ボリューム131が他の仮想化装置13の論理ボリューム131の移行先である場合、移行元の論理ボリューム番号が格納される。
図2の例において、VOL−A及びVOL−Bは、いずれも、他の仮想化装置13の論理ボリューム131の移行先でない。このため、VOL−A及びVOL−Bの作成時のボリューム番号303は、いずれも空欄(「−」)である。
図3Bは、本発明の第1の実施の形態の移行先の仮想化装置13Bのボリューム管理テーブル138の説明図である。
このボリューム管理テーブル138は、仮想化装置13Bに格納されている論理ボリューム131を管理するテーブルである。図3Bの例は、VOL−BからVOL−Cへの移行が完了した後のボリューム管理テーブル138を示す。図3Bにおいて、図3Aと同様の部分については、説明を省略する。
仮想化装置13Bには、VOL−Cが格納されている(図2参照)。このため、仮想化装置内ボリューム番号301として「VOL−C」が登録される。
VOL−Cは、仮想化装置13BのVOL−Bの移行先として作成された論理ボリュームである。このため、VOL−Cの作成元仮想化装置の製造番号302として、移行元の仮想化装置13Aの製造番号「U1」が登録される。さらに、VOL−Cの作成時のボリューム番号303として、移行元の論理ボリューム131のボリューム番号「VOL−B」が登録される。
図4Aは、本発明の第1の実施の形態のInquiry情報の例の説明図である。
図4Aは、図2のホスト計算機12が仮想化装置13AのVOL−Aを対象としたInquiry要求を発行したときに仮想化装置13Aが応答するInquiry情報400を示す。
Inquiry情報400は、Inquiry応答プログラム136によって作成される。Inquiry応答プログラム136が実行する処理の手順については、後で詳細に説明する(図8参照)。
本実施の形態のInquiry情報400は、装置識別子(製造番号)401及びボリューム番号402を含む。
仮想化装置13Aのボリューム管理テーブル138において、VOL−Aの作成元仮想化装置の製造番号302は、空欄である(図3A参照)。この場合、装置識別子401には、VOL−Aを管理する仮想化装置13Aの製造番号「U1」が登録され、ボリューム番号402には、仮想化装置13AがVOL−Aに与えたボリューム番号「VOL−A」が登録される。
図4Bは、本発明の第1の実施の形態のInquiry情報の別の例の説明図である。
図4Bは、図2のホスト計算機12が仮想化装置13BのVOL−Cを対象としたInquiry要求を発行したときに仮想化装置13Bが応答するInquiry情報400を示す。図4Bにおいて、図4Aと同様の部分については、説明を省略する。
図2に示すように、VOL−Cは、仮想化装置13Bによって管理されている。従来のInquiry応答プログラム136は、装置識別子401及びボリューム番号402として、それぞれ、VOL−Cを管理する仮想化装置13Bの製造番号「U2」及び仮想化装置13BがVOL−Cに与えたボリューム番号「VOL−C」を登録する。しかし、本実施の形態のInquiry応答プログラム136は、移行元から引き継いだ製造番号及びボリューム番号を登録して、ホスト計算機12に応答する。
具体的には、仮想化装置13Bのボリューム管理テーブル138において、VOL−Cの作成元仮想化装置の製造番号302及び作成時のボリューム番号303には、それぞれ、「U1」及び「VOL−B」が格納されている(図3B参照)。すなわち、VOL−Cは、仮想化装置13BのVOL−Bの移行先として作成された論理ボリューム131である。そして、「U1」及び「VOL−B」は、仮想化装置13Bが移行元の仮想化装置13Aから引き継いだものである。この場合、装置識別子401及びボリューム番号402には、それぞれ、「U1」及び「VOL−B」が登録される。
図5は、本発明の第1の実施の形態の仮想デバイス管理テーブル127の説明図である。
図5は、図2に示すホスト計算機12の仮想デバイス管理テーブル127を示す。
仮想デバイス管理テーブル127は、パス管理プログラム125によって参照及び更新される。パス管理プログラム125が実行する処理の手順については、後で詳細に説明する(図9参照)。
仮想デバイス管理テーブル127は、装置識別子(製造番号)501、ボリューム番号502、仮想デバイス名503及びSAN上の識別子504を含む。
装置識別子501及びボリューム番号502には、ホスト計算機12がInquiry要求を発行して取得したInquiry情報の値が登録される。ホスト計算機12は、仮想化装置13Aから、製造番号「U1」及びボリューム名「VOL−A」を取得する(図4A参照)。このため、仮想デバイス管理テーブル127の第1のエントリ(行)には、装置識別子501として「U1」、ボリューム番号502として「VOL−A」が登録される。一方、ホスト計算機12は、仮想化装置13Bから、製造番号「U1」及びボリューム名「VOL−B」を取得する(図4B参照)。このため、仮想デバイス管理テーブル127の第2のエントリには、装置識別子501として「U1」、ボリューム番号502として「VOL−B」が登録される。
仮想デバイス名503は、論理ボリューム131を仮想デバイスとしてホスト計算機12に認識させるために使用される名前である。図5の例では、VOL−Aに対応する仮想デバイス名503として「/dev/dsk/vol0001」が登録され、VOL−Bに対応する仮想デバイス名503として「/dev/dsk/vol0002」が登録される。
SAN上の識別子504は、各論理ボリューム131をSAN17上で識別するために使用される識別子である。図5の例では、VOL−Aに対応するSAN上の識別子504として「0x90abcdef」が登録され、VOL−Bに対応するSAN上の識別子504として「0x12345678」が登録される。
図6は、本発明の第1の実施の形態のマウントテーブル126の説明図である。
図6は、図2に示すホスト計算機12のマウントテーブル126を示す。
マウントテーブル126は、FS124によって参照される。FS124が実行する処理の手順については、後で詳細に説明する(図10参照)。
マウントテーブル126は、仮想デバイス名601及びファイル名の先頭文字列602を含む。
図5に示すように、ホスト計算機12は、二つの仮想デバイスを認識する。このため、マウントテーブル126の仮想デバイス名601には、これら二つの仮想デバイスの名前「/dev/dsk/vol0001」及び「/dev/dsk/vol0002」が登録される。
ファイル名の先頭文字列602は、各仮想デバイス上にあるファイルに与えられるファイル名の先頭の文字列である。図6の例では、仮想デバイス名「/dev/dsk/vol0001」に対応するファイル名の先頭文字列602として「home1」が登録され、仮想デバイス名「/dev/dsk/vol0002」に対応するファイル名の先頭文字列602として「home2」が登録される。この場合、例えば、仮想デバイス名601が「/dev/dsk/vol0002」である仮想デバイス上のファイルに、「/home2/testuser/file1.txt」というファイル名が与えられる。その仮想デバイス上の他のファイルにも、同様にして、「/home2/」で始まるファイル名が与えられる。
一方、仮想デバイス名601が「/dev/dsk/vol0001」である仮想デバイス上のファイルには、「/home1/」で始まるファイル名が与えられる。
次に、本実施の形態の各プログラムが実行する処理について、フローチャートを参照して説明する。以下の説明において各プログラムが実行する処理は、実際には、各プログラムを実行するCPU121等によって実行される。具体的には、FS124及びパス管理プログラム125の処理は、ホスト計算機12のCPU121によって実行される。一方、Inquiry応答プログラム136及びボリューム管理プログラム137の処理は、仮想化装置13のCPU134によって実行される。
また、以下の説明において、Inquiry要求及びInquiry情報400は、SANインターフェース172及びSAN17を経由して、ホスト計算機12及び仮想化装置13の間で送受信される。論理ボリューム131の識別情報は、SANインターフェース172及びSAN17を経由して、仮想化装置13の間で送受信される。あるいは、論理ボリューム131の識別情報は、NIC151及びLAN15を経由して、仮想化装置13の間で送受信されてもよい。
図7Aから図7Eは、本発明の第1の実施の形態のボリューム管理プログラム137の処理を示すフローチャートである。
本実施の形態のボリューム管理プログラム137は、管理サーバ16からボリューム作成要求、ボリューム削除要求又はボリューム移行要求を受信したとき、これらの要求に従って処理を実行する。さらに、本実施の形態のボリューム管理プログラム137は、別の仮想化装置13からボリューム移行要求を受信したとき、その要求に従って処理を実行する。以下、これらの処理について説明する。
ボリューム管理プログラム137は、実行が開始されると、イベントを待つ(図7Aのステップ701)。
ボリューム管理プログラム137は、いずれかの要求を受信してイベントが発生すると、受信した要求が管理サーバ16から発行されたボリューム作成要求であるか否かを判定する(ステップ702)。
ステップ702において、受信した要求が管理サーバ16から発行されたボリューム作成要求であると判定された場合、ボリューム管理プログラム137は、要求された論理ボリューム131の作成を実行する(図7Bのステップ706)。具体的には、作成を要求された論理ボリューム131に対応する実ボリューム139をストレージ装置133上に確保し、その実ボリューム139と論理ボリューム131とを対応付ける。なお、論理ボリュームと対応する実ボリューム139上の領域は、一つ以上の実ボリューム139全体であっても良いし、実ボリューム139の部分領域又はその部分領域の集合であっても良い。
次に、ボリューム管理プログラム137は、作成した論理ボリューム131にボリューム管理テーブル138のエントリ(行)を割り当てる(ステップ707)。このとき、仮想化装置内ボリューム番号301には、作成された論理ボリューム131に新たに与えられたボリューム番号が登録される。一方、この時点で、作成された論理ボリューム131に対応する作成元仮想化装置の製造番号302及び作成時のボリューム番号303は空である。
例えば、仮想化装置13Aのボリューム管理プログラム137は、VOL−Aを作成する要求を受信した場合、VOL−Aに対応する実ボリューム139を確保し、その実ボリューム139をVOL−Aと対応付ける(ステップ706)。そして、VOL−Aにボリューム管理テーブル138の一つのエントリを割り当てる(ステップ707)。このとき、VOL−Aに対応する作成元仮想化装置の製造番号302及び作成時のボリューム番号303は空である(図3A参照)。
ボリューム管理プログラム137は、ステップ707を実行した後、ステップ701に戻る。
一方、ステップ702において、受信した要求が管理サーバ16から発行されたボリューム作成要求でないと判定された場合、ボリューム管理プログラム137は、受信した要求が管理サーバ16から発行されたボリューム削除要求であるか否かを判定する(ステップ703)。
ステップ703において、受信した要求が管理サーバ16から発行されたボリューム削除要求であると判定された場合、ボリューム管理プログラム137は、ボリューム管理テーブル138から、削除を要求された論理ボリューム131に対応するエントリを削除する(図7Cのステップ708)。
次に、ボリューム管理プログラム137は、要求された論理ボリューム131の削除を実行する(ステップ709)。具体的には、削除を要求された論理ボリューム131と実ボリューム139との対応を解除する。
ボリューム管理プログラム137は、ステップ709を実行した後、ステップ701に戻る。
一方、ステップ703において、受信した要求が管理サーバ16から発行されたボリューム削除要求でないと判定された場合、ボリューム管理プログラム137は、受信した要求が管理サーバ16から発行されたボリューム移行要求であるか否かを判定する(ステップ704)。ここで、管理サーバ16から発行されたボリューム移行要求とは、論理ボリューム131を、他の仮想化装置13の論理ボリューム131に移行させる要求である。
ステップ704において、受信した要求が管理サーバ16から発行されたボリューム移行要求であると判定された場合、ボリューム管理プログラム137は、ボリューム管理テーブル138を参照し、これから移行する論理ボリューム131に対応する仮想化装置内ボリューム番号301を取得する(図7Dのステップ710)。
次に、ボリューム管理プログラム137は、論理ボリューム131の構成情報、自仮想化装置の製造番号、及び、ステップ710において取得した仮想化装置内ボリューム番号301を、移行先の仮想化装置13に送信する(ステップ711)。ここで、論理ボリューム131の構成情報は、これから移行する論理ボリューム131と、その論理ボリューム131に書き込まれたデータが実際に格納される実ボリューム139との対応関係を示す情報を含む。また、自仮想化装置の製造番号とは、移行元の仮想化装置13(すなわち、ステップ711において情報の送信元となる仮想化装置13)の製造番号である。これらの情報は、ボリューム移行要求として、移行先の仮想化装置13に送信される。
次に、ボリューム管理プログラム137は、移行先の仮想化装置13からの応答を待つ(ステップ712)。この応答は、後述する図7Eのステップ718において送信されるものである。この応答が送信されたことは、論理ボリューム131の移行が終了したことを意味する。
ボリューム管理プログラム137は、移行先の仮想化装置13からの応答を受信すると、移行した論理ボリューム131に対応するボリューム管理テーブル138の作成元仮想化装置の製造番号302に、自仮想化装置の製造番号を登録する(ステップ713)。ここで、移行した論理ボリューム131とは、ステップ710における「これから移行する論理ボリューム131」と同じものである。
次に、ボリューム管理プログラム137は、移行した論理ボリュームに対するアクセスを禁止する(ステップ714)。
ボリューム管理プログラム137は、ステップ714を実行した後、ステップ701に戻る。
ここで、図7Dの処理の例として、仮想化装置13Aのボリューム管理プログラム137が、VOL−Bを仮想化装置13Bに移行させる要求を管理サーバ16から受信した場合(ステップ704)について説明する。
この場合、ステップ710において、ボリューム管理プログラム137は、ボリューム管理テーブル138を参照して、「VOL−B」を取得する(図3A参照)。
次に、ステップ711において、ボリューム管理プログラム137は、VOL−Bの構成情報、仮想化装置13Aの製造番号「U1」、及び、ステップ710において取得した「VOL−B」を、仮想化装置13Bに送信する。
ボリューム管理プログラム137は、ステップ712において応答を受信した後、ステップ713において、ボリューム管理テーブル138の「VOL−B」に対応する作成元仮想化装置の製造番号302に、仮想化装置13Aの製造番号「U1」を登録する(図3A参照)。
次に、ボリューム管理プログラム137は、VOL−Bに対するアクセスを禁止して(ステップ714)、ステップ701に戻る。
一方、ステップ704において、受信した要求が管理サーバ16から発行されたボリューム移行要求でないと判定された場合、ボリューム管理プログラム137は、受信した要求が他の仮想化装置13から発行されたボリューム移行要求であるか否かを判定する(ステップ705)。ここで、他の仮想化装置13から発行されたボリューム移行要求とは、他の仮想化装置13の論理ボリューム131を、自仮想化装置13(すなわち、その要求を受信した仮想化装置13)の論理ボリューム131に移行させる要求である。この要求は、具体的には、図7Dのステップ711において送信されたボリューム移行要求である。
ステップ705において、受信した要求が他の仮想化装置13から発行されたボリューム移行要求であると判定された場合、ボリューム管理プログラム137は、論理ボリューム131の構成情報、移行元の仮想化装置13の製造番号、及び、仮想化装置内ボリューム番号301を受信する(ステップ715)。これらの情報は、図7Dのステップ711において送信されたものである。
次に、ボリューム管理プログラム137は、新たな論理ボリューム131を構成する(ステップ716)。具体的には、ステップ715において受信した論理ボリューム131の構成情報を参照して、移行元の論理ボリューム131と対応する実ボリューム139と、新たに作成した論理ボリューム131とを対応させる。
次に、ボリューム管理プログラム137は、新たに構成された論理ボリューム131に、ボリューム管理テーブル138の一つのエントリを割り当てる(ステップ717)。このとき、そのエントリの仮想化装置内ボリューム番号301には、新たに構成された論理ボリュームに与えられたボリューム番号が格納される。一方、そのエントリの作成元仮想化装置の製造番号302には、ステップ715で受信した移行元の仮想化装置13の製造番号が格納される。さらに、そのエントリの作成時のボリューム番号303には、ステップ715で受信した仮想化装置内ボリューム番号301が格納される。
次に、ボリューム管理プログラム137は、移行元の仮想化装置13に、ボリューム移行応答を返送する(ステップ718)。この応答は、論理ボリューム131の移行が終了したことを通知するものである。
ボリューム管理プログラム137は、ステップ718を実行した後、ステップ701に戻る。
ここで、図7Eの処理の例として、仮想化装置13Bのボリューム管理プログラム137が、仮想化装置13AのVOL−Bを仮想化装置13Bに移行させる要求を、仮想化装置13Aから受信した場合(ステップ705)について説明する。
この場合、ステップ715において、仮想化装置13Bのボリューム管理プログラム137は、VOL−Bの構成情報、移行元の仮想化装置13Aの製造番号「U1」、及び、仮想化装置内ボリューム番号「VOL−B」を受信する。
次に、ステップ716において、ボリューム管理プログラム137は、新たな論理ボリュームとしてVOL−Cを構成する。VOL−Cは、VOL−Bが対応していた実ボリューム139と対応付けられる。
次に、ステップ717において、VOL−Cにボリューム管理テーブル138の一つのエントリが割り当てられる。このエントリの仮想化装置内ボリューム番号301には「VOL−C」、作成元仮想化装置の製造番号302には「U1」、作成時のボリューム番号303には「VOL−B」が格納される(図3B参照)。
次に、ボリューム管理プログラム137は、移行元の仮想化装置13Aにボリューム移行応答を送信して(ステップ718)、ステップ701に戻る。
図8は、本発明の第1の実施の形態のInquiry応答プログラム136の処理を示すフローチャートである。
仮想化装置13がいずれかの論理ボリューム131に対するInquiry要求をホスト計算機12から受信すると、Inquiry応答プログラム136の処理が開始される(ステップ801)。
次に、Inquiry応答プログラム136は、ボリューム管理テーブル138を参照する(ステップ802)。具体的には、ボリューム管理テーブル138において、Inquiry要求の対象の論理ボリューム131に対応するエントリを参照する。
次に、Inquiry応答プログラム136は、ステップ802において参照したエントリの作成元仮想化装置の製造番号302が空であるか否かを判定する(ステップ803)。
ステップ803において、作成元仮想化装置の製造番号302が空であると判定された場合、そのエントリに対応する論理ボリューム131は、他の仮想化装置13の論理ボリューム131からの移行先ではなく、かつ、他の仮想化装置13の論理ボリューム131への移行元でもない。この場合、Inquiry応答プログラム136は、自仮想化装置(すなわち、そのInquiry応答プログラム136を含む仮想化装置13)の製造番号を装置識別子401とし、自仮想化装置がその論理ボリュームに与えたボリューム番号をボリューム番号402としたInquiry情報400を作成する(ステップ804)。
一方、ステップ803において、作成元仮想化装置の製造番号302が空でないと判定された場合、そのエントリに対応する論理ボリューム131は、他の仮想化装置13の論理ボリューム131からの移行先であるか、又は、他の仮想化装置13の論理ボリューム131への移行元である。この場合、Inquiry応答プログラム136は、ステップ802において参照したエントリの作成元仮想化装置の製造番号302が自仮想化装置の製造番号であるか否かを判定する(ステップ805)。
ステップ805において、作成元仮想化装置の製造番号302が自仮想化装置の製造番号でないと判定された場合、そのエントリに対応する論理ボリューム131は、他の仮想化装置13の論理ボリューム131からの移行先である。この場合、Inquiry応答プログラム136は、移行元の論理ボリューム131から引き継いだ情報を使用してInquiry情報400を作成する(ステップ806)。具体的には、そのエントリの作成元仮想化装置の製造番号302に登録されている値を装置識別子401とし、作成元のボリューム番号303に登録されている値をボリューム番号402としたInquiry情報400を作成する(ステップ806)。
一方、ステップ805において、作成元仮想化装置の製造番号302が自仮想化装置の製造番号であると判定された場合、そのエントリに対応する論理ボリューム131は、他の仮想化装置13の論理ボリューム131への移行元である。言い換えると、そのエントリに対応する論理ボリューム131は、既に他の仮想化装置13に移行されており、自仮想化装置には存在していない。この場合、Inquiry応答プログラム136は、Inquiry情報400を作成せず、エラー応答をホスト計算機12に送信する(ステップ807)。
ステップ804又はステップ806においてInquiry情報400が作成された後、Inquiry応答プログラム136は、作成されたInquiry情報400をホスト計算機12に送信する(ステップ808)。
以上で、受信したInquiry要求に対する応答が終了する。ステップ808においてInquiry情報400を送信した後、又は、ステップ807においてエラー応答を送信した後、Inquiry応答プログラム136は、ホスト計算機12から次回のInquiry要求を受信するのを待つ(ステップ809)。次回のInquiry要求を受信すると、Inquiry応答プログラム136の処理は、ステップ801に戻る。
例えば、仮想化装置13AがVOL−Aを対象としたInquiry要求を受信した場合(ステップ801)、仮想化装置13AのInquiry応答プログラム136は、仮想化装置13Aのボリューム管理テーブル138(図3A)を参照する(ステップ802)。ボリューム管理テーブル138のVOL−Aに関するエントリの作成元仮想化装置の製造番号302は空である(ステップ803)。このため、Inquiry応答プログラム136は、仮想化装置13Aの製造番号「U1」を装置識別子401とし、VOL−Aのボリューム番号「VOL−A」をボリューム番号402としたInquiry情報400を作成して、ホスト計算機12に送信する(ステップ804、808)。
一方、VOL−BをVOL−Cに移行する前に、仮想化装置13AがVOL−Bを対象としたInquiry要求を受信した場合(ステップ801)、仮想化装置13AのInquiry応答プログラム136は、仮想化装置13Aのボリューム管理テーブル138(図3A)を参照する(ステップ802)。VOL−BをVOL−Cに移行する前、ボリューム管理テーブル138のVOL−Bに関するエントリの作成元仮想化装置の製造番号302は、空である(ステップ803)。「U1」は、仮想化装置13A(すなわち、自仮想化装置)の製造番号である(ステップ805)。このため、Inquiry応答プログラム136は、仮想化装置13Aの製造番号「U1」を装置識別子401とし、VOL−Bのボリューム番号「VOL−B」をボリューム番号402としたInquiry情報400を作成して、ホスト計算機12に送信する(ステップ804、808)。
一方、VOL−BをVOL−Cに移行した後に、仮想化装置13AがVOL−Bを対象としたInquiry要求を受信した場合(ステップ801)、仮想化装置13AのInquiry応答プログラム136は、仮想化装置13Aのボリューム管理テーブル138(図3A)を参照する(ステップ802)。ボリューム管理テーブル138のVOL−Bに関するエントリの作成元仮想化装置の製造番号302は、空ではなく、「U1」である(ステップ803)。「U1」は、仮想化装置13A(すなわち、自仮想化装置)の製造番号である(ステップ805)。このため、Inquiry応答プログラム136は、Inquiry情報400を作成せず、エラー応答をホスト計算機12に送信する(ステップ807)。
一方、仮想化装置13BがVOL−Cを対象としたInquiry要求を受信した場合(ステップ801)、仮想化装置13BのInquiry応答プログラム136は、仮想化装置13Bのボリューム管理テーブル138(図3B)を参照する(ステップ802)。ボリューム管理テーブル138のVOL−Cに関するエントリの作成元仮想化装置の製造番号302は、空ではなく、「U1」である(ステップ803)。「U1」は、仮想化装置13B(すなわち、自仮想化装置)の製造番号ではない(ステップ805)。このため、Inquiry応答プログラム136は、作成元仮想化装置の製造番号302に登録された値「U1」を装置識別子401とし、作成時のボリューム番号303に登録された値「VOL−B」をボリューム番号402としたInquiry情報400を作成して、ホスト計算機12に送信する(ステップ806、808)。これらの値は、VOL−BをVOL−Cに移行する前に、VOL−Bを対象としたInquiry要求が発行されたときに作成されるInquiry情報400と同じである。
従来は、仮想化装置13BがVOL−Cを対象としたInquiry要求を受信した場合、仮想化装置13Bは、仮想化装置13Bの製造番号「U2」及びVOL−Cのボリューム名「VOL−C」を、Inquiry情報400として送信した。しかし、本実施の形態の仮想化装置13Bは、上記のように、移行元から引き継いだ製造番号「U1」及びボリューム名「VOL−B」をInquiry情報400として送信する。
図9は、本発明の第1の実施の形態のパス管理プログラム125の処理を示すフローチャートである。
パス管理プログラム125は、実行が開始されると、イベントを待つ(ステップ901)。
パス管理プログラム125は、いずれかのイベントが発生すると、発生したイベントが仮想デバイス管理テーブル更新イベントであるか否かを判定する(ステップ902)。仮想デバイス管理テーブル更新イベントとは、仮想デバイス管理テーブル127の更新の契機となるイベントである。
具体的には、タイマ(図示省略)が所定の時間間隔の経過をパス管理プログラム125に通知し、パス管理プログラム125がその通知を仮想デバイス管理テーブル更新イベントとして検出してもよい。あるいは、論理ボリューム131が作成、削除又は移行されたとき等、SAN17上の状態が変化したときにSANインターフェース172に発生する割り込みが、仮想デバイス管理テーブル更新イベントとして検出されてもよい。あるいは、いずれかの論理ボリューム131に対するアクセス要求にエラーが応答されたとき(すなわち、その論理ボリューム131にアクセスすることができなかったとき)、そのエラーが仮想デバイス管理テーブル更新イベントとして検出されてもよい。
ステップ902において、発生したイベントが仮想デバイス管理テーブル更新イベントであると判定された場合、定期的に仮想デバイス管理テーブル127を更新するタイミングが到来したか、又は、SAN17上の状態が変更された(具体的には、論理ボリューム131が作成、削除又は移行等された)。この場合、パス管理プログラム125は、仮想化装置13又は名前管理サーバ(図示省略)から、論理ボリューム131のSAN上の識別子を取得する(ステップ903)。名前管理サーバとは、SAN17上に存在するデバイスのSAN上の識別子を管理するサーバであり、要求に応じてSAN上の識別子の一覧を提供する。本実施の形態の計算機システムは、このような名前管理サーバを含んでもよい。
次に、パス管理プログラム125は、取得したSAN上の識別子を指定して、仮想化装置13にInquiry要求を発行(送信)する(ステップ904)。このInquiry要求を受信した仮想化装置13のInquiry応答プログラムが実行する処理は、図8に示した通りである。
次に、パス管理プログラム125は、仮想化装置13からInquiry情報400を受信する(ステップ905)。
次に、パス管理プログラム125は、仮想化装置13から受信したInquiry情報400を参照して、仮想デバイス管理テーブル127を更新する(ステップ906)。具体的には、受信したInquiry情報400の装置識別子401及びボリューム番号402を、指定されたSAN上の識別子504に対応するエントリの装置識別子501及びボリューム番号502に登録する。
次に、パス管理プログラム125は、全ての仮想化装置13の論理ボリューム131について仮想デバイス管理テーブル127の更新が終了したか否かを判定する(ステップ907)。
ステップ907において、全ての仮想化装置13の論理ボリューム131について仮想デバイス管理テーブル127の更新が終了したと判定された場合、処理はステップ901に戻り、次回のイベントを待つ。
一方、ステップ907において、全ての仮想化装置13の論理ボリューム131について仮想デバイス管理テーブル127の更新が終了していないと判定された場合、次の論理ボリューム131について仮想デバイス管理テーブル127を更新するために、ステップ903に戻る。
一方、ステップ902において、発生したイベントが仮想デバイス管理テーブル更新イベントでないと判定された場合、パス管理プログラム125は、発生したイベントがFS124からの入出力要求であるか否かを判定する(ステップ908)。
ステップ908において、発生したイベントがFS124からの入出力要求であると判定された場合、パス管理プログラム125は、仮想デバイス管理テーブル127を参照して、SAN上の識別子504を取得する(ステップ909)。
次に、パス管理プログラム125は、取得したSAN上の識別子504を指定して、論理ボリューム131に対して、要求されたデータの書き込み又は読み出しを実行する(ステップ910)。
パス管理プログラム125は、ステップ910を実行した後、ステップ901に戻り、次回のイベントを待つ。
一方、ステップ908において、発生したイベントがFS124からの入出力要求でないと判定された場合、パス管理プログラム125は、ステップ901に戻り、次回のイベントを待つ。
ここで、例として、VOL−BがVOL−Cに移行した後にパス管理プログラム125が実行する処理を説明する。
VOL−BがVOL−Cに移行した後、ホスト計算機12がVOL−Bにアクセスしようとした場合、そのアクセスに失敗するため、仮想デバイス管理テーブル更新イベントが検出される(ステップ902)。
この場合、パス管理プログラム125は、SAN上の識別子を取得して(ステップ903)、仮想化装置13BのVOL−Cを対象とするInquiry要求を送信する(ステップ904)。
次に、パス管理プログラム125は、Inquiry情報400を受信する(ステップ905)。従来、仮想化装置13BのVOL−Cを対象とするInquiry要求に対して、「U2」及び「VOL−C」からなるInquiry情報400が作成された。しかし、本実施の形態では、VOL−BがVOL−Cに移行した場合、仮想化装置13BのVOL−Cを対象とするInquiry要求に対して、「U1」及び「VOL−B」からなるInquiry情報400が作成される。これは、VOL−BがVOL−Cに移行する前に、移行元のVOL−Bを対象とするInquiry要求が発行されたときに作成されるInquiry情報400と同じである(図8参照)。
次に、パス管理プログラム125は、受信したInquiry情報400に基づいて、仮想デバイス管理テーブル127を更新する(ステップ906)。ここで、移行前のVOL−Bに対して、仮想デバイス名503「/dev/dsk/vol0002」が与えられている。ステップ906においてInquiry情報400として受信した「U1」及び「VOL−B」は、移行元のVOL−Bに関するInquiry情報400と同じである。このため、パス管理プログラム125は、VOL−CをVOL−Bと同じ論理ボリューム131であると認識し、「U1」及び「VOL−B」に対して、引き続き、仮想デバイス名503「/dev/dsk/vol0002」を与える。一方、これらに対応するSAN上の識別子504は、現在のVOL−Cに対応する値に更新される。
図10は、本発明の第1の実施の形態のファイルシステム(FS)124の処理を示すフローチャートである。
FS124は、最初に、AP123から、ファイル名を指定したファイルのオープン要求を受ける(ステップ1001)。
次に、FS124は、マウントテーブル126を参照して、要求されたファイルがどの仮想デバイスに格納されているかを特定する(ステップ1002)。具体的には、FS124は、ファイル名の先頭文字列602から、指定されたファイル名の先頭の文字列と一致するものを検索する。例えば、ステップ1001において指定されたファイル名が「/home2/testuser/file1.txt」である場合、FS124は、ファイル名の先頭文字列602が「/home2」である仮想デバイス(すなわち、仮想デバイス名601が「/dev/dsk/vol0002」である仮想デバイス)を特定する。
次に、FS124は、特定された仮想デバイスから、ファイル名とファイル位置との対応情報を読み出す(ステップ1003)。この情報は、特定された仮想デバイス上のデータに含まれている。
次に、FS124は、ステップ1003の読み出しが成功したか否かを判定する(ステップ1004)。
ステップ1004において、読み出しが成功したと判定された場合、FS124は、ファイルハンドル(図示省略)をAP123に返す(ステップ1005)。ファイルハンドルとは、ファイルの管理番号である。AP123は、以後、このファイルハンドルを使用して、ファイルに対する読み出し及び書き込みを実行することができる。
一方、ステップ1004において、読み出しに失敗したと判定された場合、FS124は、エラーをAP123に返す(ステップ1007)。
FS124は、ステップ1005又はステップ1007を実行した後、AP123からの次回の要求を待つ(ステップ1006)。FS124は、AP123から次回の要求を受けると、ステップ1001に戻る。
図11は、本発明の第1の実施の形態における論理ボリューム131の移行の手順を示すシーケンス図である。
図11は、論理ボリューム131を移行する際に、移行元の仮想化装置13のボリューム管理プログラム137(以下、移行元のボリューム管理プログラム137と記載する)、移行先の仮想化装置13のボリューム管理プログラム137(以下、移行先のボリューム管理プログラム137と記載する)、及び、ホスト計算機12のパス管理プログラム125が実行する処理の相互の関係を示す。図11に示す各ステップは、図7D、図7E及び図9に示すステップと対応する。このため、各ステップについての詳細な説明は省略する。また、図11は、各プログラムが実行する処理の相互の関係を説明するものであるため、この説明に必要でないステップについては図示を省略する。
最初に、移行元のボリューム管理プログラム137は、管理サーバ16からボリューム移行要求を受けると、移行対象の論理ボリューム131に対応する仮想化装置内ボリューム番号301を取得する(ステップ710)。
次に、移行元のボリューム管理プログラム137は、論理ボリューム131の構成情報、自仮想化装置の製造番号、及び、ステップ710において取得した仮想化装置内ボリューム番号301を、移行先のボリューム管理プログラム137に送信する(ステップ711)。自仮想化装置の製造番号及び仮想化装置内ボリューム番号301は、移行対象の論理ボリューム131の識別情報である。
移行先のボリューム管理プログラム137は、論理ボリューム131の識別情報等を受信すると(ステップ715)、受信した情報を参照して、新たな論理ボリューム131を構成する(ステップ716)。
次に、移行先のボリューム管理プログラム137は、新たに構成された論理ボリューム131に、ボリューム管理テーブル138の一つのエントリを割り当てる(ステップ717)。
次に、移行先のボリューム管理プログラム137は、移行元のボリューム管理プログラム137に、ボリューム移行応答を返送する(ステップ718)。
移行元のボリューム管理プログラム137は、応答を受信すると、ボリューム管理テーブル138の作成元仮想化装置の製造番号302に、自仮想化装置の製造番号を登録する(ステップ713)。
次に、移行元のボリューム管理プログラム137は、移行した論理ボリューム131へのアクセスを禁止する(ステップ714)。
ホスト計算機12のパス管理プログラム125は、例えば、移行元の論理ボリューム131にアクセスできなくなったことを検出すると、論理ボリューム131のSAN上の識別子を取得する(ステップ903)。
次に、パス管理プログラム125は、取得したSAN上の識別子を指定して、仮想化装置13にInquiry要求を送信する(ステップ904)。
パス管理プログラム125は、仮想化装置13からInquiry情報400を受信すると(ステップ905)、受信したInquiry情報400を参照して、仮想デバイス管理テーブル127を更新する(ステップ906)。
本実施の形態によれば、移行元と移行先の論理ボリューム131のInquiry情報400が同一である。このため、仮想デバイス管理テーブル127において、SAN上の識別子504以外の内容は更新されない。その結果、システム管理者がファイル名と仮想デバイス名との対応関係を更新しなくても、ホスト計算機12のAP123は、移行先の論理ボリューム131のファイルにアクセスすることができる。
次に、本発明の第2の実施の形態について説明する。
本発明の第2の実施の形態の計算機システムの構成は、第1の実施の形態と同様であるため、説明を省略する(図1参照)。
図12は、本発明の第2の実施の形態の概要の説明図である。
図12において、図2と同様の部分については、説明を省略する。
本発明の第1の実施の形態において、VOL−BがVOL−Cに移行すると、VOL−Cは、作成元仮想化装置の製造番号302「U1」及び作成時のボリューム番号「VOL−B」を、VOL−Bから引き継ぐ。この場合、Inquiry情報400が計算機システム内で一意である必要があるため、仮想化装置13Aは、新たに作成した論理ボリューム131にボリューム番号「VOL−B」を与えることができない。
また、第1の実施の形態では、VOL−BがVOL−Cに移行した後も、ホスト計算機12は、VOL−Cを仮想化装置13A上のVOL−Bであると認識する。このため、仮想化装置13Aが持たない機能を仮想化装置13Bが持っていたとしても、その機能をVOL−Cに適用することができない。
本発明の第2の実施の形態では、論理ボリューム131が移行した後、適当な時期に、移行先の仮想化装置13が、移行元の仮想化装置13に、引き継いだ情報を返却する。適当な時期とは、例えば、計算機システムが計画停止するときである。このとき、システム管理者は、ホスト計算機12の設定を変更する。
例えば、図12において、VOL−BがVOL−Cに移行すると、VOL−Cは、「U1」及び「VOL−B」をVOL−Bから引き継ぐ。その後、計算機システムが計画停止したとき、仮想化装置13Bは、仮想化装置13Aに「U1」及び「VOL−B」を返却する。具体的には、仮想化装置13Bは、ボリューム管理テーブル138から、VOL−Cに対応する「U1」及び「VOL−B」を削除する。
その後、ホスト計算機12がVOL−Cに対するInquiry要求を発行すると、仮想化装置13Bは、仮想化装置13Bの製造番号「U2」とVOL−Cのボリューム名「VOL−C」からなるInquiry情報を応答する。このため、VOL−BとVOL−Cが同じ実ボリューム139と対応しているにも関らず、ホスト計算機12のパス管理プログラム125は、VOL−CをVOL−Bとは異なる論理ボリューム131であると認識する。VOL−Bに仮想デバイス名「/dev/dsk/vol0002」が割り当てられている場合、パス管理プログラム125は、それと異なる仮想デバイス名(例えば、「/dev/dsk/vol0003」)をVOL−Cに割り当てる。
このとき、システム管理者は、VOL−Bの仮想デバイス名「/dev/dsk/vol0002」と、ファイル名(図12の例では、「/home2」)との対応関係を解除し、VOL−Cの仮想デバイス名「/dev/dsk/vol0003」とファイル名「/home2」とを新たに対応させるように、マウントテーブル126を更新する。
その結果、ホスト計算機12のAP123は、引き続き、VOL−Cに格納されたファイルにアクセスすることができる。一方、仮想化装置13Aは、新たに作成した論理ボリューム131にボリューム番号「VOL−B」を与えることができる。さらに、仮想化装置13Bの機能をVOL−Cに適用することができる。
以下、本実施の形態について詳細に説明する。
本実施の形態のボリューム管理テーブル138、Inquiry情報400、仮想デバイス管理テーブル127及びマウントテーブル126は、本発明の第1の実施の形態と同様であるので、説明を省略する(図3Aから図6参照)。また、本実施の形態のInquiry応答プログラム136、パス管理プログラム125及びFS124が実行する処理は、本発明の第1の実施の形態と同様であるので、説明を省略する(図8から図10参照)。
図13Aから図13Cは、本発明の第2の実施の形態のボリューム管理プログラム137の処理を示すフローチャートである。
本実施の形態のボリューム管理プログラム137は、管理サーバ16からボリューム番号返却要求、ボリューム作成要求、ボリューム削除要求又はボリューム移行要求を受信したとき、これらの要求に従って処理を実行する。さらに、本実施の形態のボリューム管理プログラム137は、別の仮想化装置13からボリューム番号返却要求又はボリューム移行要求を受信したとき、その要求に従って処理を実行する。以下、これらの処理について説明する。
なお、図13Aから図13Cにおいて、本発明の第1の実施の形態のボリューム管理プログラム137と同じ手順については、同じステップ番号を付与する。
ボリューム管理プログラム137は、実行が開始されると、イベントを待つ(図13Aのステップ701)。
ボリューム管理プログラム137は、いずれかの要求を受信してイベントが発生すると、受信した要求が管理サーバ16から発行されたボリューム番号返却要求であるか否かを判定する(ステップ1301)。
ステップ1301において、受信した要求が管理サーバ16から発行されたボリューム番号返却要求であると判定された場合、ボリューム管理プログラム137は、ボリューム管理テーブル138を参照し、返却対象のボリューム番号に対応する作成元仮想化装置の製造番号302を取得する(図13Bのステップ1303)。返却対象のボリューム番号とは、ボリューム番号返却要求によって指定されたボリューム番号である。
次に、ボリューム管理プログラム137は、作成元の仮想化装置13に、返却対象のボリューム番号を送信する(ステップ1304)。
次に、ボリューム管理プログラム137は、作成元の仮想化装置13からの応答を待つ(ステップ1305)。この応答は、後述する図13Cのステップ1308において送信されるものである。
ボリューム管理プログラム137は、作成元の仮想化装置13から応答を受信すると、返却対象のボリューム番号に対応する作成元仮想化装置の製造番号302を、ボリューム管理テーブル138から削除する(ステップ1306)。
ボリューム管理プログラム137は、ステップ1306を実行した後、図13Aのステップ701に戻る。
一方、ステップ1301において、受信した要求が管理サーバ16から発行されたボリューム番号返却要求でないと判定された場合、ボリューム管理プログラム137は、受信した要求が他の仮想化装置13から発行されたボリューム番号返却要求であるか否かを判定する(ステップ1302)。
ステップ1302において、受信した要求が他の仮想化装置13から発行されたボリューム番号返却要求であると判定された場合、ボリューム管理プログラム137は、ボリューム管理テーブル138を参照し、返却対象のボリューム番号に対応するエントリを削除する(図13Cのステップ1307)。
次に、ボリューム管理プログラム137は、ボリューム番号の返却が終了したことを示す応答を、ボリューム番号返却要求を発行した仮想化装置13に送信する(ステップ1308)。
ボリューム管理プログラム137は、ステップ1308を実行した後、図13Aのステップ701に戻る。
一方、ステップ1302において、受信した要求が他の仮想化装置13から発行されたボリューム番号返却要求であると判定された場合、ボリューム管理プログラム137は、ステップ702に進む。
以下、ステップ702からステップ718までの処理は、本発明の第1の実施の形態と同じであるため、説明を省略する(図7Aから図7E参照)。
なお、本実施の形態のボリューム管理プログラム137が図7Bから図7Eに示す処理を実行した場合、それらの処理が終了した後、処理は図13Aのステップ701に戻る。
ここで、図13B及び図13Cの処理の具体例を説明する。この例において、仮想化装置13AのVOL−Bが仮想化装置13BのVOL−Cに移行している。そして、VOL−CがVOL−Bから「U1」及び「VOL−B」を引き継いでいる(図12参照)。
最初に、仮想化装置13Bのボリューム管理プログラム137は、ボリューム番号「VOL−B」を返却対象として指定したボリューム番号返却要求を管理サーバ16から受信する(ステップ1301)。
次に、仮想化装置13Bのボリューム管理プログラム137は、ボリューム管理テーブル138を参照する(図3B参照)。ボリューム管理テーブル138において、作成時のボリューム番号303の値「VOL−B」に対応する作成元仮想化装置の製造番号302の値は、「U1」である。このため、ボリューム管理プログラム137は、返却対象のボリューム番号「VOL−B」に対応する作成元仮想化装置の製造番号302の値として、「U1」を取得する(ステップ1303)。
次に、仮想化装置13Bのボリューム管理プログラム137は、返却対象のボリューム番号「VOL−B」を、作成元の仮想化装置13Aに送信して、応答を待つ(ステップ1304及び1305)。
この返却対象のボリューム番号「VOL−B」を受信した仮想化装置13Aのボリューム管理プログラム137は、ボリューム管理テーブル138(図3A参照)から、仮想化装置内ボリューム番号301が「VOL−B」であるエントリを削除する(ステップ1307)。
次に、仮想化装置13Aのボリューム管理プログラム137は、仮想化装置13Bに応答を送信する(ステップ1308)。
仮想化装置13Bのボリューム管理プログラム137は、仮想化装置13Aから応答を受信すると、返却対象のボリューム番号「VOL−B」に対応する作成元仮想化装置の製造番号302の値「U1」を、ボリューム管理テーブル138から削除する。
以後、仮想化装置13BがVOL−Cを対象とするInquiry要求を受信した場合、Inquiry応答プログラム136は、VOL−Cに対応する作成元仮想化装置の製造番号302が空であるため、仮想化装置13Bの製造番号「U2」及びVOL−Cのボリューム名「VOL−C」からなるInquiry情報を作成する(図8のステップ803及び804参照)。
一方、仮想化装置13Aのボリューム管理テーブル138には、仮想化装置内ボリューム番号301が「VOL−B」であるエントリがない。このため、仮想化装置13Aは、新たに作成した論理ボリューム131に、ボリューム番号「VOL−B」を与えることができる。
次に、本発明の第3の実施の形態について説明する。
本発明の第3の実施の形態の計算機システムの構成は、第1の実施の形態と同様であるため、説明を省略する(図1参照)。
図14は、本発明の第3の実施の形態の概要の説明図である。
図14において、図2と同様の部分については、説明を省略する。
本発明の第1の実施の形態において、論理ボリューム131が他の論理ボリューム131から仮想化装置13の製造番号及びボリューム番号を引き継いでいる場合、Inquiry応答プログラム136は、引き継いだ情報を使用してInquiry情報400を作成する。一方、論理ボリューム131が他の論理ボリューム131から仮想化装置13の製造番号等を引き継いでいない場合、Inquiry応答プログラム136は、自仮想化装置の製造番号及びその論理ボリューム131のボリューム番号を使用してInquiry情報400を作成する。
パス管理プログラム125は、Inquiry応答プログラム136が作成したInquiry情報400を参照して、論理ボリューム131に仮想デバイス名503を割り当てる。
しかし、ホスト計算機12がパス管理プログラム125以外の管理ソフトウエア128を保持し、この管理ソフトウエア128がInquiry情報400を参照する場合がある。
管理ソフトウエア128は、ホスト計算機12のメモリ122に格納され、CPU121によって実行されるプログラムである。本実施の形態の管理ソフトウエア128は、仮想化装置13の設定変更をするプログラムである。しかし、管理ソフトウエア128は、仮想化装置13を管理するための他の機能を備えてもよい。
なお、パス管理プログラム125も仮想化装置を管理するプログラムであるため、管理ソフトウエアの一種と分類することができる。本実施の形態の管理ソフトウエア128は、パス管理プログラム125以外の管理ソフトウエアである。
管理ソフトウエア128が仮想化装置13の設定変更を実行するために、その仮想化装置13が特別な機能を備えることを要する場合がある。特別な機能とは、例えば、仮想化装置13が管理する論理ボリューム131の容量を動的に変更する機能である。このような場合、管理ソフトウエア128は、Inquiry情報400内の製造番号に含まれる機種情報を参照して、設定変更しようとする仮想化装置13がその必要な機能を備えるか否かを判定する。そして、管理ソフトウエア128は、仮想化装置13がその必要な機能を備えないと判定した場合、設定変更を実行しない。
例えば、図2において、仮想化装置13Aが、必要な機能を備えない旧型の機種であり、仮想化装置13Bが、必要な機能を備える新型の機種である場合がある。このような場合に本発明の第1の実施の形態を適用すると、仮想化装置13Bの論理ボリューム131について作成されたInquiry情報400が、仮想化装置13Aの製造番号「U1」を含む。そして、管理ソフトウエア128は、製造番号「U1」を参照して、仮想化装置13Bが、旧型の機種であると判定する。その結果、管理ソフトウエア128は、仮想化装置13Bの設定変更を実行することができない。
本発明の第2の実施の形態を適用した場合も、VOL−Cから仮想化装置13Aに「U1」が返却されるまでの間は、同様に、仮想化装置13Bの設定変更を実行することができない(図12等参照)。
本発明の第3の実施の形態のInquiry情報1400は、論理ボリューム131が他の論理ボリューム131から製造番号を引き継いでいる場合、その引き継いだ製造番号を含む。さらに、本実施の形態のInquiry情報1400は、Inquiry要求を受けた仮想化装置13の製造番号も含む。以下、本実施の形態のInquiry情報1400について、図14を参照して説明する。
図14は、仮想化装置13BのVOL−Cを対象としたInquiry要求が発行されたときに、本実施の形態の仮想化装置13BのInquiry応答プログラム136が作成して応答するInquiry情報1400を示す。ここで、VOL−Cは、仮想化装置13AのVOL−Bの移行先である。そして、VOL−Cは、仮想化装置13Aの製造番号「U1」及びVOL−Bのボリューム番号「VOL−B」を引き継いでいる。
本実施の形態のInquiry情報1400は、少なくとも、領域1401から領域1404までの四つの領域を含む。
領域1401は、従来のInquiry情報において仮想化装置13の製造番号が登録される領域と同じ領域である。また、領域1401は、本発明の第1及び第2の実施の形態において仮想化装置13の製造番号(すなわち、装置識別子401)が登録される領域とも同じ領域である。
領域1402は、従来のInquiry情報において論理ボリューム131のボリューム番号が登録される領域と同じ領域である。また、領域1402は、本発明の第1及び第2の実施の形態において論理ボリューム131のボリューム番号(すなわち、ボリューム番号402)が登録される領域とも同じ領域である。
本実施の形態の領域1401及び領域1402には、第1及び第2の実施の形態と同様の情報が登録される。すなわち、論理ボリューム131が移行元から仮想化装置13の製造番号等を引き継いでいる場合、領域1401及び領域1402には、それぞれ、作成元仮想化装置の製造番号302及び作成時のボリューム番号303が登録される。一方、論理ボリューム131が移行元から仮想化装置13の製造番号等を引き継いでいない場合、領域1401及び領域1402には、それぞれ、その論理ボリューム131を格納する仮想化装置13の製造番号及びその論理ボリューム131の仮想化装置内ボリューム番号301が登録される。
図14の例では、VOL−Cが製造番号「U1」及びボリューム番号「VOL−B」を引き継いでいる。このため、領域1401及び領域1402には、それぞれ、「U1」及び「VOL−B」が登録される。
一方、領域1403及び領域1404は、従来のInquiry情報における空き領域に割り当てられる。
論理ボリューム131が移行元から仮想化装置13の製造番号等を引き継いでいない場合、領域1403及び領域1404は、空である。
論理ボリューム131が移行元から仮想化装置13の製造番号等を引き継いでいる場合、領域1403及び領域1404には、それぞれ、その論理ボリューム131を格納する仮想化装置13の製造番号及びその論理ボリューム131の仮想化装置内ボリューム番号301が登録される。
図14の例では、VOL−Cが製造番号「U1」等を引き継いでいる。このため、領域1403及び領域1404には、それぞれ、VOL−Cを格納する仮想化装置13Bの製造番号「U2」及びVOL−Cのボリューム番号「VOL−C」が登録される。
以下、領域1401及び領域1402を「従来領域」と記載する。一方、領域1403及び領域1404を「拡張領域」と記載する。
本実施の形態のパス管理プログラム125は、Inquiry情報1400の従来領域を参照する。その結果、第1及び第2の実施の形態と同様、ホスト計算機12の設定を変更することなく、AP123がVOL−C上のファイルにアクセスすることができる。
一方、本実施の形態の管理ソフトウエア128は、Inquiry情報1400の拡張領域を参照する。その結果、管理ソフトウエア128は、新型の仮想化装置13Bが備える機能を使用して、仮想化装置13Bの設定変更を実行することができる。
以下、本実施の形態の各プログラムが実行する処理について説明する。
本実施の形態のFS124、パス管理プログラム125及びボリューム管理プログラム137が実行する処理は、本発明の第1の実施の形態と同じであるため、説明を省略する。
図15は、本発明の第3の実施の形態のInquiry応答プログラム136の処理を示すフローチャートである。
本実施の形態のInquiry応答プログラム136の処理のうち、ステップ801からステップ809は、本発明の第1の実施の形態のInquiry応答プログラム136のステップ801からステップ809と同じである。このため、これらのステップについては説明を省略する。ただし、ステップ804及び806において、Inquiry情報1400が作成される。また、ステップ808において、Inquiry情報1400が送信される。
本実施の形態のInquiry応答プログラム136は、ステップ806が終了すると、次に、現在論理ボリューム131を管理している仮想化装置13の製造番号及びInquiry要求の対象の論理ボリューム131のボリューム番号を、Inquiry情報1400の拡張領域に登録する(ステップ1501)。
例えば、仮想化装置13Bが、VOL−Cを対象とするInquiry要求をホスト計算機12から受信した場合、VOL−Cは仮想化装置13AのVOL−Bの移行先である。この場合、仮想化装置13Bのボリューム管理テーブル138は、図3Bに示す通りである。この場合、本実施の形態のInquiry応答プログラム136は、VOL−Cを管理する仮想化装置13Bの製造番号「U2」を領域1403に登録する。さらに、Inquiry応答プログラム136は、VOL−Cのボリューム番号「VOL−C」を領域1404に登録する。
図16は、本発明の第3の実施の形態の管理ソフトウエア128の処理を示すフローチャートである。
管理ソフトウエア128は、実行が開始されると、イベントを待つ(ステップ1601)。
管理ソフトウエア128は、いずれかのイベントが発生すると、発生したイベントがInquiry情報の受信であるか否かを判定する(ステップ1602)。
ステップ1602において、発生したイベントがInquiry情報の受信であると判定された場合、ホスト計算機12がInquiry情報1400を受信している。Inquiry情報1400は、ホスト計算機12がいずれかの仮想化装置13のいずれかの論理ボリューム131を対象として発行したInquiry要求に対する応答として送信されたものである。この場合、管理ソフトウエア128は、受信したInquiry情報1400の拡張領域を参照する(ステップ1603)。
なお、図16の説明において、上記のInquiry要求の送信先の仮想化装置13を「対象仮想化装置13」、Inquiry要求の対象の論理ボリューム131を「対象論理ボリューム131」と記載する。
次に、管理ソフトウエア128は、拡張領域があるか否かを判定する(ステップ1604)。例えば、拡張領域に有効な値が登録されている場合、拡張領域があると判定される。
ステップ1604において拡張領域があると判定された場合、対象論理ボリューム131は、他の論理ボリューム131から製造番号等を引き継いでいる。すなわち、そのInquiry情報1400の従来領域には移行元から引き継いだ製造番号等が登録され、拡張領域には対象仮想化装置13の製造番号及び対象論理ボリューム131のボリューム番号が登録されている。
このため、管理ソフトウエア128は、拡張領域に登録された対象仮想化装置13の製造番号に含まれる機種情報を読み出す。そして、管理ソフトウエア128は、読み出した機種情報をホスト計算機12の所定の領域(図示省略)に格納する(ステップ1606)。
一方、ステップ1604において拡張領域がないと判定された場合、対象論理ボリューム131は、他の論理ボリューム131から製造番号等を引き継いでいない。すなわち、そのInquiry情報1400の従来領域には対象仮想化装置13の製造番号及び対象論理ボリューム131のボリューム番号が登録されている。
このため、管理ソフトウエア128は、Inquiry情報1400の従来領域を参照する(ステップ1605)。そして、従来領域に登録された対象仮想化装置13の製造番号に含まれる機種情報を読み出す。
次に、管理ソフトウエア128は、読み出した機種情報をホスト計算機12の所定の領域(図示省略)に格納する(ステップ1606)。
管理ソフトウエア128は、機種情報を格納した後、ステップ1601に戻る。
一方、ステップ1602において、発生したイベントがInquiry情報の受信でないと判定された場合、管理ソフトウエア128は、発生したイベントが設定変更要求の受信であるか否かを判定する(ステップ1607)。
ステップ1607において、発生したイベントが設定変更要求の受信でないと判定された場合、管理ソフトウエア128は、実行できない要求を受信している。この場合、管理ソフトウエア128は、エラー応答を要求元に送信して(ステップ1611)、ステップ1601に戻る。
一方、ステップ1607において、発生したイベントが設定変更要求の受信であると判定された場合、管理ソフトウエア128は、ホスト計算機12のユーザ又は管理サーバ16等から、いずれかの仮想化装置13を対象とする設定変更要求を受信している。この場合、管理ソフトウエア128は、ステップ1606において格納された機種情報を参照して、設定変更される仮想化装置13の機種を判定する(ステップ1608)。
ステップ1608において、設定変更される仮想化装置13が、設定変更の実行のために必要な機能を備える機種であると判定された場合、その仮想化装置13において設定変更を実行することができる。このため、管理ソフトウエア128は、設定変更を実行して(ステップ1609)、ステップ1601に戻る。
一方、ステップ1608において、設定変更される仮想化装置13が、設定変更の実行のために必要な機能を備えない機種であると判定された場合、その仮想化装置13において設定変更を実行することができない。このため、管理ソフトウエア128は、エラーを表示して(ステップ1610)、ステップ1601に戻る。
以上の本実施の形態によれば、管理ソフトウエア128は、常に、Inquiry情報に登録された対象仮想化装置13の製造番号を参照して、対象仮想化装置13の機種情報を読み出す。このため、対象論理ボリューム131が他の仮想化装置13の製造番号を引き継いでいる場合であっても、対象仮想化装置13自体が所定の機能を備えるか否かを判定することができる。その結果、対照仮想化装置13が備える機能を使用して設定変更を実行することができる。
本実施の形態には、上記のように、本発明の第1の実施の形態のボリューム管理プログラム137が適用されている。しかし、本実施の形態には、本発明の第2の実施の形態のボリューム管理プログラム137が適用されてもよい。その場合、対象論理ボリューム131が他の仮想化装置13の製造番号を返却する前であっても、対照仮想化装置13が備える機能を使用して設定変更を実行することができる。
次に、本発明の第4の実施の形態について説明する。
図17は、本発明の第4の実施の形態の計算機システムにおける管理サーバ16の構成の説明図である。
なお、本実施の形態の計算機システムの管理サーバ16以外の部分の構成は、第1の実施の形態と同様であるため、説明を省略する(図1参照)。また、本実施の形態の管理サーバ16のうち、第1の実施の形態の管理サーバと同じ部分については、説明を省略する。
本実施の形態の管理サーバ16のメモリ162には、論理ボリューム作成制御プログラム1701が格納される。論理ボリューム作成制御プログラム1701は、CPU161によって実行される。
図18は、本発明の第4の実施の形態の論理ボリューム作成制御プログラム1701の処理を示すフローチャートである。
論理ボリューム作成制御プログラム1701は、実行が開始されると、イベントを待つ(ステップ1801)。
論理ボリューム作成制御プログラム1701は、いずれかのイベントが発生すると、発生したイベントが論理ボリューム作成要求の受信であるか否かを判定する(ステップ1802)。
ステップ1802において、発生したイベントが論理ボリューム作成要求の受信でないと判定された場合、論理ボリューム作成制御プログラム1701は、論理ボリューム作成要求以外の要求を受信している。この場合、論理ボリューム作成制御プログラム1701は、要求された処理を実行して(ステップ1805)、ステップ1801に戻る。
一方、ステップ1802において、発生したイベントが論理ボリューム作成要求の受信であると判定された場合、論理ボリューム作成制御プログラム1701は、論理ボリューム作成要求を受信している。この場合、論理ボリューム作成制御プログラム1701は、計算機システム内で一意の新たなボリューム番号を生成する(ステップ1803)。
次に、論理ボリューム作成制御プログラム1701は、生成されたボリューム番号を使用して論理ボリューム131を作成する指示を仮想化装置13に発行して(ステップ1804)、ステップ1801に戻る。
仮想化装置13は、この指示を受信すると、新たな論理ボリューム131を作成し、その生成された論理ボリューム131に、ステップ1803において生成されたボリューム番号を与える。
以上の本発明の第1から第4の実施の形態は、図1に示すように、複数の仮想化装置13が一つ以上のストレージ装置133とSAN17を介して接続された計算機システムにおいて実現される。しかし、これらの実施の形態は、仮想化装置の機能をストレージ装置に組み込むことによって実現することもできる。
図19は、本発明の実施の形態の仮想化装置の機能が組み込まれたストレージ装置を備える計算機システムのブロック図である。
図19は、図1に示す計算機システムの仮想化装置13の一つを仮想化機能付きストレージ装置1901によって置き換えたものである。図19において、図1と同様の部分の説明は省略する。なお、図1の仮想化装置13の二つ以上又は全部を仮想化機能付きストレージ装置1901によって置き換えてもよい。
仮想化機能付きストレージ装置1901は、図1の仮想化装置13と同様、LAN15及びSAN17を介して、ホスト計算機12及び管理サーバ16に接続される。管理サーバ16には、管理コンソール14が接続される。図19では、ホスト計算機12、管理コンソール14、LAN15及び管理サーバ16の図示を省略する。
さらに、仮想化機能付きストレージ装置1901は、SAN17を介してストレージ装置133と接続される。
仮想化機能付きストレージ装置1901は、制御装置132、SANインターフェース(I/F)172及びディスク装置1902を備える。これらのうち、制御装置132及びSANインターフェース172は、図1の仮想化装置13が備えるものと同様であるため、説明を省略する。
ディスク装置1902は、一つ以上のディスクドライブを備える。それらのディスクドライブがディスクアレイを構成してもよい。ディスク装置1902の記憶領域によって、一つ以上の実ボリューム139が構成される。
仮想化機能付きストレージ装置1901は、仮想化装置13と同様、論理ボリューム131をホスト計算機12に提供する。仮想化機能付きストレージ装置1901が提供する論理ボリューム131は、ディスク装置1902上の実ボリューム139と対応してもよいし、ストレージ装置133上の実ボリューム139と対応してもよい。あるいは、仮想化機能付きストレージ装置1901は、ディスク装置1902上の実ボリューム139自体を論理ボリューム131としてホスト計算機12に提供してもよい。
このような仮想化機能付きストレージ装置1901を含む計算機システムにおいても、図2から図18において説明した処理を実行することによって、本発明の第1から第4の実施の形態を実現することができる。
以上、本発明の第1の実施の形態によれば、論理ボリューム131が移行した後、移行元の仮想化装置13は、移行した論理ボリューム131のボリューム番号をボリューム管理テーブル138に保持し続ける必要がある。これによって、Inquiry情報の一意性が維持される。
また、本発明の第2の実施の形態によれば、移行先の仮想化装置13は、適当な時期に、移行元の仮想化装置13から引き継いだボリューム番号を返却する。これによって、Inquiry情報の一意性を維持しながら、移行したボリューム番号を再利用することができる。
本発明の第4の実施の形態によれば、計算機システム内の全ての論理ボリューム131が、管理サーバ16によって生成された計算機システム内で一意のボリューム番号を与えられる。すなわち、仮想化装置13の製造番号と組み合わせずに、ボリューム番号を、論理ボリューム131を計算機システム内で一意に識別する識別情報として使用することができる。
したがって、本実施の形態によれば、Inquiry情報の一意性を維持するために、移行元の仮想化装置13が移行した論理ボリューム131のボリューム番号を保持する必要がない。また、移行先の仮想化装置13は、引き継いだボリューム番号を移行元に返却する必要がない。