(57)【特許請求の範囲】
【請求項１】
移築元の実ボリューム上に構築された仮想ボリュームを移築先の実ボリューム上に移築
する仮想ボリューム移築プログラムであって、
前記移築元の実ボリュームを管理する移築元仮想ボリューム管理装置から、前記移築元の実ボリューム構成の移築元実ボリューム情報を含む移築元仮想ボリューム情報を取得する移築元情報取得手順と、
前記移築先の実ボリュームを管理する移築先仮想ボリューム管理装置から、前記移築先の実ボリューム構成の移築先実ボリューム情報を取得する移築先情報取得手順と、
前記移築先実ボリューム情報を用いて前記移築元仮想ボリューム情報から、前記移築先の実ボリューム構成を反映した移築先仮想ボリューム情報を生成する生成手順と、
前記移築先仮想ボリューム情報に基づいて、前記移築元の実ボリューム上に構築された前記仮想ボリュームを前記移築先の実ボリューム上に構築する構築手順とをコンピュータに実行させ、
前記生成手順は、
前記移築元実ボリューム情報を前記移築先実ボリューム情報に置き換えるルール情報を
前記移築先仮想ボリューム管理装置から取得し、該取得したルール情報に基づき、前記移築先実ボリューム情報に含まれる実ボリュームの内、前記移築元仮想ボリューム情報に含まれない実ボリュームがある場合に、前記移築先仮想ボリューム情報に対して当該実ボリュームの情報を自動設定することで、前記移築元仮想ボリューム情報から、前記移築先実ボリューム情報を反映した前記移築先仮想ボリューム情報を生成することを特徴とする仮想ボリューム移築プログラム。
【請求項２】
前記生成手順は、前記移築先仮想ボリューム情報として仮想ボリュームを構築するため
のコマンドを生成し、前記構築手順は、前記生成手順が生成した前記コマンドを実行する
ことにより移築先の仮想ボリュームを構築することを特徴とする請求項１に記載の仮想ボリューム移築プログラム。
【請求項３】
前記生成手順にて前記移築先仮想ボリューム情報を生成すると、この生成した移築先仮
想ボリューム情報を記憶部に記憶する記憶手順と、
移出要求に応じて、前記記憶部に記憶された前記移築先仮想ボリューム情報を移築元仮想ボリューム情報として前記移築先仮想ボリューム管理装置に移出する移出手順と
をコンピュータに実行させることを特徴とする請求項１に記載の仮想ボリューム移築プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、実ボリューム上に構築された仮想ボリュームを移築する仮想ボリューム移築プログラムに関し、特に、実ボリューム構成が異なる環境間であっても、仮想ボリュームを効率的に移築することができる仮想ボリューム移築プログラムに関する。
【背景技術】
【０００２】
従来、ディスク装置やＲＡＩＤ（Redundant  Array  of  Independent  Disks）装置といった実ボリューム上に仮想ボリュームを構成し、かかる仮想ボリュームを上位アプリケーションに提供する仮想ボリューム管理プログラムが知られている。
【０００３】
たとえば、非特許文献１には、サーバ装置に接続された複数のディスク装置上に仮想ボリュームを構成してミラーリングやストライピングをおこなう仮想ボリューム管理プログラムが開示されている。なお、特許文献１には、仮想ボリュームの管理を業務アプリ単位でおこなう技術が開示されている。
【０００４】
かかる仮想ボリューム管理プログラムを用いることにより、上位アプリケーションは、実ボリューム構成を意識することなく、仮想ボリューム上にデータの書き込みおよび読み出しをおこなうことができる。また、ミラーリングによりディスク装置故障に対する耐障害性を高めたり、ストライピングによりディスク装置へのアクセス負荷を分散したりすることができる。
【０００５】
【特許文献１】特開平５−１７３８７３号公報
【非特許文献１】富士通株式会社、“ＰＲＩＭＥＣＬＵＳＴＥＲ  ＧＤＳ４．Ｘ”、［online］、［平成１６年１１月１９日検索］、インターネット＜URL：http://primeserver.fujitsu.com/primepower/products/soft/opt/pcl_gds_4x/＞
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の仮想ボリューム管理プログラムでは、サーバ装置上に構築された仮想ボリュームを他のサーバ装置上に移築する場合には、サーバ管理者などが実ボリュームの構成の差異を認識したうえで、移築先の仮想ボリュームを構築する必要があった。すなわち、仮想ボリュームの移築は人手を介しておこなう必要があり、仮想ボリュームの移築が非効率であるという問題があった。
【０００７】
このため、移築元の仮想ボリュームの構成情報を読み出して移築先に反映させることも考えられるが、かかる構成情報は仮想ボリュームと実ボリュームとの対応関係を含む情報であるため、実ボリューム構成が異なる環境にそのまま反映させることはできない。
【０００８】
本発明は、上記に鑑みてなされたものであって、実ボリューム構成が異なる環境間であっても、仮想ボリュームを効率的に移築することができる仮想ボリューム移築プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、実ボリューム上に構築された仮想ボリュームを移築する仮想ボリューム移築プログラムであって、移築元仮想ボリューム情報を取得する移築元情報取得手順と、移築先実ボリューム情報を取得する移築先情報取得手順と、前記移築先実ボリューム情報を用いて前記移築元仮想ボリューム情報から移築先仮想ボリューム情報を生成する生成手順と、前記移築先仮想ボリューム情報に基づいて移築先の仮想ボリュームを構築する構築手順とをコンピュータに実行させることを特徴とする。
【００１０】
また、本発明は、実ボリューム上に構築された仮想ボリュームを移築する仮想ボリューム移築方法であって、移築元仮想ボリューム情報を取得する移築元情報取得工程と、移築先実ボリューム情報を取得する移築先情報取得工程と、前記移築先実ボリューム情報を用いて前記移築元仮想ボリューム情報から移築先仮想ボリューム情報を生成する生成工程と、前記移築先仮想ボリューム情報に基づいて移築先の仮想ボリュームを構築する構築工程とを含んだことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、移築元仮想ボリューム情報を取得するとともに、移築先実ボリューム情報を取得し、取得した移築先実ボリューム情報を用いてかかる移築元仮想ボリューム情報から移築先仮想ボリューム情報を生成し、移築先仮想ボリューム情報に基づいて移築先の仮想ボリュームを構築するよう構成したので、移築元の実ボリューム構成と移築先の実ボリューム構成とが異なる場合であっても、仮想ボリュームの移築処理を効率的におこなうことができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明に係る仮想ボリューム移築プログラムの好適な実施の形態を詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００１３】
図１は、本発明にかかる仮想ボリューム移築処理の概念を示す図である。同図に示す仮想ボリューム管理装置は、実ボリュームの構成を反映した仮想ボリュームを構築し、構築した仮想ボリュームの構成情報を仮想ボリューム情報として管理している。かかる仮想ボリューム情報は、実ボリュームと仮想ボリュームとの対応関係を含む情報であり、たとえば、２個の実ボリュームをミラーリングすることにより１つの仮想ボリュームを構成するといった実ボリュームと仮想ボリュームとの対応関係を含んでいる。
【００１４】
かかる仮想ボリュームを他の仮想ボリューム管理装置に移築する場合には、移築元と移築先との実ボリューム構成の差異が問題となる。すなわち、移築元の仮想ボリューム情報は、移築元の実ボリューム構成を反映した情報であるので、移築元の仮想ボリューム情報をそのまま移築先に適用しても移築先に仮想ボリュームを移築することはできない。
【００１５】
たとえば、同図に示したように、移築元の仮想ボリューム管理装置は、２個の実ボリュームを有しているのに対し、移築先の仮想ボリューム管理装置は、３個の実ボリュームを有している。移築元の仮想ボリューム情報には、２個の実ボリュームについての情報しか含まれていないので、３個の実ボリュームを有する移築先で、どのような仮想ボリュームを構築するか不明となってしまう。たとえ移築元と移築先の実ボリュームの個数が同数である場合であっても、移築元の実ボリュームのサイズと移築先の実ボリュームのサイズが異なれば同様の問題が発生してしまう。
【００１６】
このように、実ボリューム構成の差異がある場合に、仮想ボリュームの移築処理を自動的におこなうことは容易ではない。従来、かかる仮想ボリュームの移築は、システム管理者などの人手を介しておこなわれており、仮想ボリュームの移築作業が効率的ではないという問題があった。
【００１７】
そこで、本発明にかかるボリューム移築処理では、移築先の仮想ボリューム管理装置において自装置に接続された実ボリュームに係るハードウェア構成情報を取得するとともに、このハードウェア構成情報を用いて移築元の仮想ボリューム情報を編集することとした。また、編集にあたっては、移築元と移築先との実ボリューム構成の差異や、実ボリュームを共有するノードの差異がある場合の編集ルールを用いることとし、かかる編集ルールに従って編集処理をおこなうこととした。このようにすることで、実ボリューム構成が異なる環境間であっても、仮想ボリュームの移築処理を効率的におこなうことができる。
【００１８】
次に、本発明にかかる仮想ボリューム管理プログラムを搭載した仮想ボリューム管理装置の構成について図２を用いて説明する。図２は、仮想ボリューム管理装置１の構成を示す機能ブロック図である。同図に示すように、仮想ボリューム管理装置１は、入力部２と、ディスク制御ＩＦ部３と、出力部４と、仮想ボリューム移築処理部１０と、記憶部２０とを備えている。
【００１９】
また、仮想ボリューム移築処理部１０は、移入情報読込み部１１と、ハードウェア構成情報読込み部１２と、生成ルール読込み部１３と、仮想ボリューム情報生成部１４と、仮想ボリューム構築部１５と、移出処理部１６とをさらに備えており、記憶部２０は、ハードウェア構成情報記憶部２１と、生成ルール記憶部２２と、仮想ボリューム情報記憶部２３とをさらに備えている。
【００２０】
入力部２は、ＣＤ−ＲＯＭ（Compact  Disc  Read  Only  Memory）装置などの可搬媒
体装置や、通信インタフェース装置といった装置から構成され、他の仮想ボリューム管理装置１から読み出された移築元の仮想ボリューム情報を受け取り、仮想ボリューム移築処理部１０に渡す処理をおこなう処理部である。
【００２１】
また、ディスク制御ＩＦ部３は、仮想ボリューム管理装置１に接続されるディスク装置やＲＡＩＤ装置といったストレージデバイスとの入出力処理をおこなう処理部であり、出力部４は、ＣＤ−ＲＯＭ装置などの可搬媒体装置や、通信インタフェース装置といった装置から構成され、仮想ボリューム移築処理部１０から受け取った仮想ボリューム情報を、他の仮想ボリューム管理装置１へ提供する処理をおこなう処理部である。
【００２２】
仮想ボリューム移築処理部１０は、移築元の仮想ボリューム情報を受け取り、受け取った仮想ボリューム情報を、ハードウェア構成情報と、生成ルールとを用いて編集することにより自装置のハードウェア環境に適合した仮想ボリューム情報を生成するとともに、生成した仮想ボリューム情報を自装置に反映させることにより仮想ボリュームを構築する処理部である。また、この仮想ボリューム移築処理部１０は、生成した仮想ボリューム情報を記憶部２０に書き込み、要求があった場合に、かかる仮想ボリューム情報を他の仮想ボリューム管理装置１に提供する処理をおこなう処理部でもある。
【００２３】
移入情報読込み部１１は、入力部２から移築元の仮想ボリューム情報を受け取って仮想ボリューム情報生成部１４に渡す処理をおこなう処理部である。また、ハードウェア構成情報読込み部１２は、ハードウェア構成情報記憶部２１から自装置に係るハードウェア構成情報を読み出して仮想ボリューム情報生成部１４に渡す処理をおこなう処理部であり、生成ルール読込み部１３は、生成ルール記憶部２２から生成ルールを受け取って仮想ボリューム情報生成部１４に渡す処理をおこなう処理部である。
【００２４】
仮想ボリューム情報生成部１４は、移入情報読込み部１１、ハードウェア構成情報読込み部１２および生成ルール読込み部１３から渡された、移築元の仮想ボリューム情報、自装置に係るハードウェア構成情報および生成ルールを用いて自装置に係る仮想ボリューム情報を生成する処理部である。具体的には、この仮想ボリューム情報生成部１４は、移築元の仮想ボリューム情報に含まれる移築元の実ボリューム情報を、自装置に係るハードウェア構成情報に含まれる実ボリューム情報に置き換えるなどの編集処理をおこなう。この場合、生成ルールに含まれる編集ルールに従って、自装置に係るハードウェア構成情報を反映した仮想ボリューム情報を生成する。なお、本実施例においては、かかる仮想ボリューム情報として仮想ボリューム構築コマンドを生成する場合について説明するが、コマンドではなく仮想ボリュームの構成を示すデータファイルを生成することとしてもよい。
【００２５】
仮想ボリューム構築部１５は、仮想ボリューム情報生成部１４が生成した仮想ボリューム情報を自装置に反映させることにより仮想ボリュームを構築する処理をおこなう処理部である。なお、本実施例においては、仮想ボリューム情報として受け取ったコマンド列を実行することにより仮想ボリュームを構築する場合について説明するが、コマンド列の実行ではなく、仮想ボリュームの構成を示すデータファイルを各実ボリュームに転送することにより仮想ボリュームを構築することとしてもよい。
【００２６】
移出処理部１６は、管理者からの要求があった場合などに、仮想ボリューム情報記憶部２３から仮想ボリューム情報を取り出し、取り出した仮想ボリューム情報を、出力部４を介して他の仮想ボリューム管理装置に提供する処理をおこなう処理部である。
【００２７】
記憶部２０は、ハードディスク装置などのストレージデバイスから構成され、ハードウェア構成情報、生成ルールおよび自装置に係る仮想ボリューム情報の記憶をおこなう記憶部である。なお、図２においては、記憶部２０は、仮想ボリューム管理装置１に含まれるものとして説明しているが、ディスク制御ＩＦ部３に接続されるハードディスク装置やＲＡＩＤ装置上に、かかる記憶部２０を構成することとしてもよい。
【００２８】
ハードウェア構成情報記憶部２１は、仮想ボリューム管理装置１に含まれるディスク装置や、ディスク制御ＩＦ部３に接続されるディスク装置の識別名、領域サイズ、共有ノード名といったハードウェア構成情報を記憶しておく記憶部である。また、生成ルール記憶部２２は、移築元の仮想ボリューム情報に含まれる移築元の実ボリューム情報を、自装置に係るハードウェア構成情報に含まれる実ボリューム情報に置き換える編集処理をおこなう際のルールを記憶しておく記憶部である。
【００２９】
仮想ボリューム情報記憶部２３は、仮想ボリューム情報生成部１４が生成した自装置に係る仮想ボリューム情報を記憶する記憶部であり、かかる仮想ボリューム情報は、他の環境に仮想ボリュームを移築する場合に、移出処理部１６によって読み出され出力部４を介して他の仮想ボリューム管理装置１に提供されることになる。
【００３０】
次に、仮想ボリューム移築処理の処理手順の概要について図３を用いて説明する。図３は、仮想ボリューム移築処理の処理手順の概要を示すフローチャートである。まず、移入情報読込み部１１は、入力部２を介して移築元仮想ボリューム情報を読み込む（ステップＳ１０１）。ここで、この仮想ボリューム情報の例について図４を用いて説明しておく。図４は、仮想ボリューム情報の一例を示す図である。
【００３１】
図４に示すように、仮想ボリューム情報は、クラス情報と、クラスに属する物理ディスク情報と、グループ情報と、ボリューム情報とを含む情報である。このように、仮想ボリューム情報は階層化されており、その最上位の階層が「クラスオブジェクト」と呼ばれる階層である。なお、図４には仮想ボリューム情報にクラスオブジェクトが１つのみ含まれる場合を示しているが、複数のクラスオブジェクトを含むこともできる。
【００３２】
クラス情報は、オブジェクトの種別を示す「ＯＢＪ」、クラス名を示す「ＮＡＭＥ」、クラスの種別を示す「ＴＹＰＥ」、クラスの共有先を示す「ＳＣＯＰＥ」を含む情報である。図４に示した場合について説明すると、「ＯＢＪ」が「ｃｌａｓｓ」であるのでオブジェクトの種別はクラスであり、「ＮＡＭＥ」が「ＳＨ＿Ｃｌａｓｓ１」であるのでクラス名がＳＨ＿Ｃｌａｓｓ１であり、「ＴＹＰＥ」が「ｓｈａｒｅｄ」であるのでクラスの種別が共有クラスであり、「ＳＣＯＰＥ」が「ｎｏｄｅ１、ｎｏｄｅ２」であるのでクラスの共有先がｎｏｄｅ１およびｎｏｄｅ２であることを示している。
【００３３】
物理ディスク情報は、オブジェクトの種別を示す「ＯＢＪ」、物理ディスク名を示す「ＮＡＭＥ」、物理ディスクの種別を示す「ＴＹＰＥ」、物理ディスクの所属先グループを示す「ＧＲＯＵＰ」、物理ディスクのデバイス名を示す「ＤＥＶＮＡＭ」、物理ディスクのブロック数を示す「ＤＥＶＢＬＫＳ」を含む情報である。図４に示した場合について説明すると、「ＯＢＪ」が「ｄｉｓｋ」であるのでオブジェクトの種別は物理ディスクであり、「ＮＡＭＥ」が「ＳＨＤｉｓｋ１」および「ＳＨＤｉｓｋ２」であるので物理ディスク名がＳＨＤｉｓｋ１およびＳＨＤｉｓｋ２であることを示している。
【００３４】
また、「ＴＹＰＥ」が「ｍｉｒｒｏｒ」であるのでＳＨＤｉｓｋ１とＳＨＤｉｓｋ２から二面ミラーが構成されており、ＳＨＤｉｓｋ１およびＳＨＤｉｓｋ２はＧｒｏｕｐ１に所属しており、デバイス名はｃ１ｔ２ｄ０およびｃ２ｔ２ｄ０であり、ブロック数は双方とも８３８０８００であることを示している。
【００３５】
グループ情報は、オブジェクトの種別を示す「ＯＢＪ」、グループ名を示す「ＮＡＭＥ」、グループに所属する物理ディスクを示す「ＤＩＳＫＳ」を含む情報である。図４に示した場合について説明すると、オブジェクトの種別はグループであり、グループ名はＧｒｏｕｐ１であり、グループに所属する物理ディスクはＳＨＤｉｓｋ１およびＳＨＤｉｓｋ２であることを示している。
【００３６】
ボリューム情報は、オブジェクトの種別を示す「ＯＢＪ」、ボリューム名を示す「ＮＡＭＥ」、所属先グループ名を示す「ＧＲＯＵＰ」、ボリュームのサイズを示す「ＳＩＺＥ」を含む情報である。図４に示した場合について説明すると、オブジェクトの種別はボリュームであり、Ｖｏｌｕｍｅ１〜Ｖｏｌｕｍｅ４の４つのボリュームがあり、これらのボリュームはＧｒｏｕｐ１に所属し、いずれのボリュームのサイズも１０００であることを示している。
【００３７】
図３の説明に戻り、ステップＳ１０２以降の処理手順について説明する。上述した仮想ボリューム情報を読み込むと、読み込んだ仮想ボリューム情報の書式チェックをおこなうことにより内容が正常であるか否かを判定する（ステップＳ１０２）。そして、内容が正常ではない場合には（ステップＳ１０２否定）、エラー情報の表示や送信といったエラー処理をおこなったうえで（ステップＳ１０９）処理を終了する。一方、内容が正常である場合には（ステップＳ１０２肯定）、ハードウェア構成情報記憶部２１から自装置に係るハードウェア構成情報を読み込む（ステップＳ１０３）。
【００３８】
ここで、このハードウェア構成情報の例について図５を用いて説明しておく。図５は、ハードウェア構成情報の一例を示す図である。同図に示すように、ハードウェア構成情報は、オブジェクトの種別を示す「ＯＢＪ」、物理ディスクのデバイス名を示す「ＤＥＶＮＡＭ」、物理ディスクのブロック数を示す「ＤＥＶＢＬＫＳ」、物理ディスクを共有するノード名を示す「ＤＥＶＣＯＮＮＥＣＴ」を含む情報である。
【００３９】
図５に示した場合について説明すると、自装置には４つの物理ディスクが接続されており、物理ディスクのデバイス名はそれぞれ、ｃ１ｔ１ｄ０、ｃ２ｔ１ｄ０、ｃ１ｔ２ｄ０およびｃ２ｔ２ｄ０であり、デバイス名がｃ１ｔ１ｄ０およびｃ２ｔ１ｄ０の物理ディスクのブロック数は８３８０８００であり、デバイス名がｃ１ｔ２ｄ０およびｃ２ｔ２ｄ０の物理ディスクのブロック数は１７６８２０８４であり、いずれの物理ディスクもｎｏｄｅＡ、ｎｏｄｅＢおよびｎｏｄｅＣの３つのノードから共有されていることを示している。
【００４０】
図３の説明に戻って、ステップＳ１０４以降の処理手順について説明する。上述したハードウェア構成情報を読み込むと、読み込んだハードウェア構成情報をチェックすることにより内容が正常であるか否かを判定する（ステップＳ１０４）。そして、内容が正常ではない場合には（ステップＳ１０４否定）、ハードウェア構成情報を再度取得して（ステップＳ１１０）ステップＳ１０４の判定処理をおこなう。なお、本実施例においてはハードウェア構成情報が正常ではない場合に、ハードウェア構成情報を再取得することとしたが、再取得をおこなわずにエラー処理（ステップＳ１０９）をおこない処理を終了することとしてもよい。
【００４１】
一方、ハードウェア構成情報の内容が正常である場合には（ステップＳ１０４肯定）、生成ルール記憶部２２から生成ルールを含むルールファイルを読み込む（ステップＳ１０５）。ここで、この生成ルールの例について図６を用いて説明しておく。図６は生成ルールの一例を示す図である。図６に示すように、生成ルールは、ルールの種別を示すタグとルールの内容とを「＝」記号の両側に記載した形式をとる。
【００４２】
図６に示したタグには、上述した「クラス情報」に対応する「ＣＬＡＳＳ＿」で始まるタグと、上述した「グループ情報」に対応する「ＧＲＯＵＰ＿」で始まるタグと、上述した「ボリューム情報」に対応する「ＶＯＬＵＭＥ＿」で始まるタグとがあり、クラス情報、グループ情報およびボリューム情報ごとの編集ルールを規定することができる。
【００４３】
図７は、図６に示したタグとルール内容とを説明するための図である。たとえば、「ＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＦＦＥＲＥＮＣＥ＿ＤＩＳＫ」タグは、移築元の仮想ボリューム情報に含まれない物理ディスクが、自装置に係るハードウェア構成情報に含まれる場合に、かかる物理ディスクの所属先となるクラスの指定ルールを示すタグである。また、「ＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＳＫ＿ＮＡＭＥ」タグは、移築元の仮想ボリューム情報に含まれない物理ディスクが、自装置に係るハードウェア構成情報に含まれる場合に、かかる物理ディスクの命名ルールを示すタグであり、「ＧＲＯＵＰ＿ＭＡＫＥ＿ＤＩＦＦＥＲＥＮＣＥ＿ＧＲＯＵＰ」タグは、移築元の仮想ボリューム情報に含まれないグループが、自装置に係るハードウェア構成情報に含まれる場合に、かかるグループの命名ルールを示すタグである。
【００４４】
図４に示した移築元の仮想ボリューム情報の物理ディスク情報と、図５に示した自装置に係るハードウェア構成情報とを対比すると、図５のＤＥＶＮＡＭがｃ１ｔ２ｄ０の物理ディスクと、ｃ２ｔ２ｄ０の物理ディスクは、図４の物理ディスク情報には含まれない。図６に示したルールにおいて、「ＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＳＫ＿ＮＡＭＥ」タグのルール内容は「ｄｅｆａｕｌｔ」であるので、図７に示したように、移築先では物理ディスク名を自動的に作成するルールとなっている。したがって、図５のＤＥＶＮＡＭがｃ１ｔ２ｄ０の物理ディスク名およびｃ２ｔ２ｄ０の物理ディスク名は、たとえば、移築元の物理ディスク名（ＳＨＤｉｓｋ１およびＳＨＤｉｓｋ２）と連番となり、ＳＨＤｉｓｋ３およびＳＨＤｉｓｋ４と命名される。
【００４５】
また、図６に示したルールにおいて、「ＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＦＦＥＲＥＮＣＥ＿ＤＩＳＫ」タグのルール内容は「“ＬＯＣＡＬ＝Ｃｌａｓｓ１”、“ＳＨＡＲＥＤ＝ＳＨ＿Ｃｌａｓｓ１”」であるので、図７に示したように、移築元にない物理ディスクの所属先は、ローカルディスクであれば「Ｃｌａｓｓ１」、共有ディスクであれば「ＳＨ＿Ｃｌａｓｓ１」とするルールとなっている。上述したＳＨＤｉｓｋ３およびＳＨＤｉｓｋ４は、共有ディスクであるのでこれらの物理ディスクの所属先クラスはＳＨ＿Ｃｌａｓｓ１となる。
【００４６】
図３の説明に戻って、ステップＳ１０６以降の処理手順について説明する。上述したルールファイルを読み込むと、読み込んだルールファイルをチェックすることにより内容が正常であるか否かを判定する（ステップＳ１０６）。そして、内容が正常ではない場合には（ステップＳ１０６否定）、デフォルトの生成ルールを適用する（ステップＳ１１１）。なお、デフォルトの生成ルールとは、図７の備考の欄に示した「ｄｅｆａｕｌｔ」のように各タグの指定を省略した場合に適用される生成ルールのことをいう。
【００４７】
一方、ルールファイルの内容が正常である場合には（ステップＳ１０６肯定）、仮想ボリューム情報生成部１４は仮想ボリューム情報の生成処理をおこない（ステップＳ１０７）、仮想ボリューム構築部１５は仮想ボリューム情報に含まれるコマンドを実行することにより（ステップＳ１０８）仮想ボリュームを構築して処理を終了する。
【００４８】
ここで、仮想ボリューム情報生成部１４が生成したコマンドの例について図８を用いて説明する。図８は、仮想ボリューム構築コマンドの一例を示す図である。たとえば、コマンド１は、ＳＨＤｉｓｋ１〜ＳＨＤｉｓｋ４の４つの物理ディスクからＳＨ＿Ｃｌａｓｓ１を構成し、ＳＨ＿Ｃｌａｓｓ１をｎｏｄｅＡ、ｎｏｄｅＢおよびｎｏｄｅＣが共有することを指示するコマンドである。仮想ボリューム生成部１４がこれらのコマンド列を生成し、生成したコマンドを仮想ボリューム構築部１５が実行することにより自装置に仮想ボリュームを構築する。
【００４９】
次に、図３に示した仮想ボリューム情報生成処理（ステップＳ１０７）についてさらに詳細に説明する。図９は、仮想ボリューム情報生成処理の処理手順を示すフローチャートである。同図に示すように、この仮想ボリューム情報生成処理では、クラス情報生成処理（ステップＳ２０１）、グループ情報生成処理（ステップＳ２０２）、ボリューム情報生成処理（ステップＳ２０３）をおこなう。なお、ステップＳ２０１〜ステップＳ２０３の処理の詳細については後述する。
【００５０】
つづいて、移築元仮想ボリューム情報の同一グループ内に他のボリュームがあるか否かを判定し（ステップＳ２０４）、他のボリュームがある場合には（ステップＳ２０４肯定）、再度、ボリューム情報生成処理（ステップＳ２０３）をおこなう。このようにして、移築元仮想ボリューム情報の同一グループに含まれるボリュームをすべて読み込むまでステップＳ２０３〜ステップＳ２０４の処理手順を繰り返す。
【００５１】
そして、移築元仮想ボリューム情報の同一グループに含まれるボリュームをすべて読み込んだならば（ステップＳ２０４否定）、移築元仮想ボリューム情報の同一クラス内に他のグループがあるか否かを判定し（ステップＳ２０５）、他のグループがある場合には（ステップＳ２０５肯定）、ステップＳ２０２〜ステップＳ２０４の処理手順を繰り返すことにより、移築元仮想ボリューム情報の同一クラスに含まれるすべてのグループと、各グループに含まれるすべてのボリュームに対応する移築先の仮想ボリューム情報を生成する。
【００５２】
つづいて、移築元仮想ボリューム情報の同一クラスに含まれるグループおよびボリュームをすべて読み込んだならば（ステップＳ２０５否定）、移築元仮想ボリューム情報に他のクラスがあるか否かを判定し（ステップＳ２０６）、他のクラスがある場合には（ステップＳ２０６肯定）、ステップＳ２０１〜ステップＳ２０５の処理手順を繰り返すことにより、移築元仮想ボリューム情報に含まれるクラス、グループおよびボリュームに対応する移築先の仮想ボリューム情報を生成する。そして、移築先の仮想ボリューム情報の生成をすべて完了したならば（ステップＳ２０６否定）、処理を終了する。
【００５３】
次に、図９に示したクラス情報生成処理（ステップＳ２０１）について図１０を用いてさらに詳細に説明する。図１０は、クラス情報生成処理の処理手順を示すフローチャートである。同図に示すように、クラス情報生成処理では、移築元仮想ボリューム情報（以下、「移築元情報」と呼ぶ）のクラス情報を取得し（ステップＳ３０１）、移築元情報の物理ディスク情報を取得し（ステップＳ３０２）、ルールファイルから「ＣＬＡＳＳ＿」で始まるタグを取得する（ステップＳ３０３）。
【００５４】
つづいて、ルールファイルから取得したＣＬＡＳＳ＿ＭＡＫＥ＿ＫＩＮＤタグにｄｅｆａｕｌｔが設定されているか否かを判定する（ステップＳ３０４）。そして、このタグにｄｅｆａｕｌｔが設定されている場合には（ステップＳ３０４肯定）、移築元情報のクラス属性を使用する（ステップＳ３０５）。一方、ｄｅｆａｕｌｔが設定されていない場合には（ステップＳ３０４否定）、かかるタグに指定されたクラス属性を使用する（ステップＳ３０６）。
【００５５】
つづいて、ルールファイルから取得したＣＬＡＳＳ＿ＭＡＫＥ＿ＣＬＡＳＳ＿ＮＡＭＥタグにｄｅｆａｕｌｔが設定されているか否かを判定する（ステップＳ３０７）。そして、このタグにｄｅｆａｕｌｔが設定されている場合には(ステップＳ３０７肯定)、移築元情報のクラス名を使用する（ステップＳ３０８）。一方、ｄｅｆａｕｌｔが設定されていない場合には（ステップＳ３０７否定）、かかるタグに指定されたクラス名を使用する（ステップＳ３０９）。
【００５６】
つづいて、自装置に係るハードウェア構成情報のディスク情報およびノード情報を取得し（ステップＳ３１０）、ルールファイルから取得したＣＬＡＳＳ＿ＳＣＯＰＥタグにａｌｌ＿ｎｏｄｅが設定されているか否かを判定する（ステップＳ３１１）。そして、このタグにａｌｌ＿ｎｏｄｅが設定されている場合には（ステップＳ３１１肯定）、自装置に係るハードウェア構成情報に含まれる物理ディスクのうち、移築元情報の物理ディスクと同名であって、かつ、全ノードから共用されている物理ディスクを抽出し、かかる物理ディスクのスコープを全ノードに設定する（ステップＳ３１２）。
【００５７】
一方、ＣＬＡＳＳ＿ＳＣＯＰＥタグにａｌｌ＿ｎｏｄｅが設定されていない場合には（ステップＳ３１１否定）、自装置に係るハードウェア構成情報に含まれる物理ディスクのうち、移築元情報の物理ディスクと同名であって、かつ、ＣＬＡＳＳ＿ＳＣＯＰＥタグに指定されたノードから共用されている物理ディスクを抽出し、かかる物理ディスクのスコープを指定されたノードとする。
【００５８】
つづいて、ルールファイルから取得したＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＦＦＥＲＥＮＣＥタグにｎｏｎｅが設定されているか否かを判定する（ステップＳ３１４）。そして、このタグにｎｏｎｅが設定されている場合には（ステップＳ３１４肯定）、ステップＳ３１５の処理手順をおこなう。一方、かかるタグにｎｏｎｅが設定されていない場合には（ステップＳ３１４否定）、自装置に係るハードウェア構成情報に含まれる物理ディスクのうち、移築元情報には含まれない物理ディスクを抽出し、かかる物理ディスクの所属クラスをＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＦＦＥＲＮＣＥタグに指定されたクラスとする。
【００５９】
つづいて、ルールファイルから取得したＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＳＫ＿ＮＡＭＥタグにｄｅｆａｕｌｔが設定されているか否かを判定する（ステップＳ３１６）。そして、このタグにｄｅｆａｕｌｔが設定されている場合には（ステップＳ３１６肯定）、自装置に係るハードウェア構成情報に含まれる物理ディスクのうち、移築元情報には含まれない物理ディスクの命名を自動的におこなう（ステップＳ３１７）。たとえば、移築元情報に含まれる物理ディスク名がＤｉｓｋ１およびＤｉｓｋ２であり、自装置に係るハードウェア構成情報に含まれる物理ディスクが３つである場合には、物理ディスク名をＤｉｓｋ１、Ｄｉｓｋ２およびＤｉｓｋ３などとする。
【００６０】
一方、ＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＳＫ＿ＮＡＭＥタグにｄｅｆａｕｌｔが設定されていない場合には（ステップＳ３１６否定）、自装置に係るハードウェア構成情報に含まれる物理ディスクのうち、移築元情報には含まれない物理ディスクの命名を指定に従っておこなう（ステップＳ３１９）。たとえば、移築元情報に含まれる物理ディスク名がＤｉｓｋ１およびＤｉｓｋ２であり、自装置に係るハードウェア構成情報に含まれる物理ディスクが３つであり、物理ディスク名としてＤｉｓｋ１０が指定された場合には、物理ディスク名をＤｉｓｋ１、Ｄｉｓｋ２およびＤｉｓｋ１０とする。
【００６１】
そして、上述した各判定手順の判定結果に基づいてクラス情報を生成し（ステップＳ３１９）、生成したクラス情報に対応するクラス作成コマンドを生成する（ステップＳ３２０）。たとえば、図８に例示したコマンド１が、このクラス作成コマンドに該当する。
【００６２】
次に、図９に示したグループ情報生成処理（ステップＳ２０２）について図１１を用いてさらに詳細に説明する。図１１は、グループ情報生成処理の処理手順を示すフローチャートである。同図に示すように、グループ情報生成処理では、移築元情報から該当するクラス内のディスクに関連したグループ情報を取得する（ステップＳ４０１）。そして、ルールファイルから「ＧＲＯＵＰ＿」で始まるタグを取得する（ステップＳ４０２）。
【００６３】
つづいて、ルールファイルから取得したＧＲＯＵＰ＿ＭＡＫＥ＿ＧＲＯＵＰ＿ＮＡＭＥタグにｄｅｆａｕｌｔが設定されているか否かを判定する（ステップＳ４０３）。そして、このタグにｄｅｆａｕｌｔが設定されている場合には（ステップＳ４０３肯定）、移築元情報のグループ名を使用する（ステップＳ４０４）。一方、かかるタグにｄｅｆａｕｌｔが設定されていない場合には（ステップＳ４０３否定）、タグに指定されたグループ名を使用する（ステップＳ４０５）。
【００６４】
つづいて、ルールファイルから取得したＧＲＯＵＰ＿ＭＡＫＥ＿ＭＩＲＲＯＲ＿ＮＵＭタグに２が設定されているか否かを判定する（ステップＳ４０６）。そして、このタグに２が設定されている場合には（ステップＳ４０６肯定）、２面ミラーを構成する（ステップＳ４０７）。一方、かかるタグに２が設定されていない場合には（ステップＳ４０６否定）、タグに指定された数に対応したミラー構成とする（ステップＳ４０８）。
【００６５】
つづいて、自装置に係るハードウェア構成情報のグループ情報を取得し（ステップＳ４０９）、ルールファイルから取得したＣＬＡＳＳ＿ＭＡＫＥ＿ＤＩＦＦＥＲＥＮＣＥ＿ＧＲＯＵＰタグにｎｏｎｅが設定されているか否かを判定する（ステップＳ４１０）。そして、このタグにｎｏｎｅが設定されている場合には（ステップＳ４１０肯定）、ステップＳ４１２の処理手順をおこなう。一方、かかるタグにｎｏｎｅが設定されていない場合には（ステップＳ４１０否定）、自装置に係るハードウェア構成情報に含まれるボリュームのうち、移築元情報には含まれないディスクを抽出して同一サイズのディスク間でミラー構成をおこなう（ステップＳ４１１）。
【００６６】
そして、上述した各判定手順の判定結果に基づいてグループ情報を生成し（ステップＳ４１２）、生成したグループ情報に対応するグループ作成コマンドを生成する（ステップＳ４１３）。たとえば、図８に示したコマンド２およびコマンド３が、このグループ作成コマンドに該当する。
【００６７】
次に、図９に示したボリューム情報生成処理（ステップＳ２０３）について図１２を用いてさらに詳細に説明する。図１２は、ボリューム情報生成処理の処理手順を示すフローチャートである。同図に示すように、ボリューム情報生成処理では、移築元情報から該当するグループ内のボリューム情報を取得する（ステップＳ５０１）。そして、ルールファイルから「ＶＯＬＵＭＥ＿」で始まるタグを取得する（ステップＳ５０２）。
【００６８】
つづいて、ルールファイルから取得したＶＯＬＵＭＥ＿ＭＡＫＥ＿ＣＬＡＳＳ＿ＫＩＮＤタグにｄｅｆａｕｌｔが設定されているか否かを判定する（ステップＳ５０３）。そして、このタグにｄｅｆａｕｌｔが設定されている場合には（ステップＳ５０３肯定）、移築元情報のボリューム属性を使用する。一方、かかるタグにｄｅｆａｕｌｔが設定されていない場合には（ステップＳ５０３否定）、タグに指定されたボリューム属性を使用する（ステップＳ５０５）。
【００６９】
つづいて、ルールファイルから取得したＶＯＬＵＭＥ＿ＭＡＫＥ＿ＣＬＡＳＳ＿ＮＡＭＥタグにｄｅｆａｕｌｔが設定されているか否かを判定する（ステップＳ５０６）。そして、このタグにｄｅｆａｕｌｔが設定されている場合には（ステップＳ５０６肯定）、移築元情報の所属先クラスを使用する（ステップＳ５０７）。一方、かかるタグにｄｅｆａｕｌｔが設定されていない場合には（ステップＳ５０６否定）、タグに指定された所属先クラスを使用する（ステップＳ５０８）。
【００７０】
つづいて、自装置に係るハードウェア構成情報のボリューム情報を取得し（ステップＳ５０９）、ハードウェア構成情報に含まれる物理ディスクに空き領域があるか否かを判定する（ステップＳ５１０）。そして、空き領域がある場合には（ステップＳ５１０）、上述した各判定手順の判定結果に基づいてボリューム情報を生成し（ステップＳ５１１）、生成したボリューム情報に対応するボリューム作成コマンドを生成する（ステップＳ５１２）。たとえば、図８に例示したコマンド４〜コマンド８が、このボリューム作成コマンドに該当する。なお、ハードウェア構成情報に含まれる物理ディスクに空き領域がない場合には（ステップＳ５１０否定）、ボリューム情報およびボリューム作成コマンドを生成することなく処理を終了する。
【００７１】
上述してきたように、本実施例では、移築先の仮想ボリューム管理装置において、ハードウェア構成情報読込み部が自装置に接続された実ボリュームに係るハードウェア構成情報を取得するとともに、仮想ボリューム情報生成部がこのハードウェア構成情報を用いることにより移入情報読込み部が読込んだ移築元の仮想ボリューム情報を編集することとし、編集にあたっては、移築元と移築先との実ボリュームの個数やサイズの差異や、実ボリュームを共有するノードの差異がある場合の編集ルールを用いることとし、生成ルール読込部が読込んだ編集ルールに従って編集処理をおこなうことにより自装置に係る仮想ボリューム情報を生成するとともに、仮想ボリューム構築部がこの仮想ボリューム情報を実ボリュームに反映させることにより仮想ボリュームの移入処理をおこなうよう構成したので、移築元の実ボリューム構成と移築先の実ボリューム構成とが異なる場合であっても、仮想ボリュームの移築処理を効率的におこなうことができる。
【００７２】
ところで、上記の実施例で説明した各種の処理は、あらかじめ用意されたプログラムをコンピュータで実行することによって実現することができる。そこで、以下では、図１３を用いて、上記の実施例と同様の機能を有する仮想ボリューム移築プログラムを実行するコンピュータの一例を説明する。図１３は、仮想ボリューム移築プログラムを実行するコンピュータを示す図である。
【００７３】
同図に示すように仮想ボリューム移築装置としてのコンピュータ５０は、入力装置５１、モニタ５２、出力装置５３、ディスク制御Ｉ／Ｆ５４、ＣＰＵ（Central  Processing  Unit）５５、ＲＡＭ（Random  Access  Memory）５６およびＨＤＤ（Hard  Disk  Drive）５７をバス５８で接続して構成される。ここで、入力装置５１は、図２に示した入力
部２に対応し、モニタ５２および出力装置５３は同じく出力部４に対応する。また、ディスク制御Ｉ／Ｆ５４は同じくディスク制御ＩＦ部３に対応する。
【００７４】
そして、ＨＤＤ５７には、ハードウェア構成情報５７ａ、生成ルール５７ｂおよび仮想ボリューム移築プログラム５７ｃがあらかじめ記憶されている。なお、ハードウェア構成情報５７ａは図２に示したハードウェア構成情報記憶部２１に、生成ルール５７ｂは同じく生成ルール記憶部２２に、それぞれ対応している。
【００７５】
ＣＰＵ５５が、ＨＤＤ５７の仮想ボリューム移築プログラム５７ｃを読み出して実行することで、図１３に示すように、仮想ボリューム移築プログラム５７ｃは仮想ボリューム移築プロセス５５ａとして機能するようになる。そして、仮想ボリューム移築プロセス５５ａが機能すると、ＨＤＤ５７のハードウェア構成情報５７ａおよび生成ルール５７ｂはＲＡＭ５６に展開され、ハードウェア構成情報５６ａおよび生成ルール５６ｂとして記憶される。
【００７６】
なお、仮想ボリューム移築プロセス５５ａが生成した仮想ボリューム情報５６ｃは、ＲＡＭ５６に記憶されるとともに、ディスク制御Ｉ／Ｆ５４をとおして各ディスク装置に送信される。また、サーバ管理者などから要求があった場合には出力装置５３を介して他のコンピュータ５０に提供される。
【００７７】
（付記１）実ボリューム上に構築された仮想ボリュームを移築する仮想ボリューム移築プログラムであって、
移築元仮想ボリューム情報を取得する移築元情報取得手順と、
移築先実ボリューム情報を取得する移築先情報取得手順と、
前記移築先実ボリューム情報を用いて前記移築元仮想ボリューム情報から移築先仮想ボリューム情報を生成する生成手順と、
前記移築先仮想ボリューム情報に基づいて移築先の仮想ボリュームを構築する構築手順と
をコンピュータに実行させることを特徴とする仮想ボリューム移築プログラム。
【００７８】
（付記２）前記移築先実ボリューム情報を前記移築元仮想ボリューム情報に反映させる際のルール情報を記憶する記憶手順をさらにコンピュータに実行させ、
前記生成手順は、前記ルール情報に基づいて前記移築先仮想ボリューム情報を生成することを特徴とする付記１に記載の仮想ボリューム移築プログラム。
【００７９】
（付記３）前記生成手順は、前記ルール情報に基づいて前記移築元仮想ボリューム情報に含まれる実ボリューム情報を前記移築先実ボリューム情報に置換することを特徴とする付記２に記載の仮想ボリューム移築プログラム。
【００８０】
（付記４）前記生成手順は、前記移築先仮想ボリューム情報として仮想ボリュームを構築するためのコマンドを生成し、前記構築手順は、前記生成手順が生成した前記コマンドを実行することにより移築先の仮想ボリュームを構築することを特徴とする付記１、２または３に記載の仮想ボリューム移築プログラム。
【００８１】
（付記５）前記記憶手順に記憶された前記移築先仮想ボリューム情報を読み出して出力することにより該移築先仮想ボリューム情報を移出する移出手順をさらにコンピュータに実行させることを特徴とする付記２または３に記載の仮想ボリューム移築プログラム。
【００８２】
（付記６）実ボリューム上に構築された仮想ボリュームを移築する仮想ボリューム移築方法であって、
移築元仮想ボリューム情報を取得する移築元情報取得工程と、
移築先実ボリューム情報を取得する移築先情報取得工程と、
前記移築先実ボリューム情報を用いて前記移築元仮想ボリューム情報から移築先仮想ボリューム情報を生成する生成工程と、
前記移築先仮想ボリューム情報に基づいて移築先の仮想ボリュームを構築する構築工程と
を含んだことを特徴とする仮想ボリューム移築方法。
【００８３】
（付記７）前記移築先実ボリューム情報を前記移築元仮想ボリューム情報に反映させる際のルール情報を記憶する記憶工程をさらに含み、
前記生成工程は、前記ルール情報に基づいて前記移築先仮想ボリューム情報を生成することを特徴とする付記６に記載の仮想ボリューム移築方法。
【００８４】
（付記８）前記生成工程は、前記ルール情報に基づいて前記移築元仮想ボリューム情報に含まれる実ボリューム情報を前記移築先実ボリューム情報に置換することを特徴とする付記７に記載の仮想ボリューム移築方法。
【００８５】
（付記９）前記生成工程は、前記移築先仮想ボリューム情報として仮想ボリュームを構築するためのコマンドを生成し、前記構築工程は、前記生成工程が生成した前記コマンドを実行することにより移築先の仮想ボリュームを構築することを特徴とする付記６、７または８に記載の仮想ボリューム移築方法。
【００８６】
（付記１０）前記記憶工程に記憶された前記移築先仮想ボリューム情報を読み出して出力することにより該移築先仮想ボリューム情報を移出する移出工程をさらにコンピュータに実行させることを特徴とする付記７または８に記載の仮想ボリューム移築方法。
【産業上の利用可能性】
【００８７】
以上のように、本発明にかかる仮想ボリューム移築プログラムは、仮想ボリュームの移築に有用であり、特に、実ボリュームの構成が異なるサーバ装置間における仮想ボリュームの移築に適している。
【図面の簡単な説明】
【００８８】
【図１】図１は、本発明にかかるボリューム移築処理の概念を示す図である。
【図２】図２は、仮想ボリューム管理装置の構成を示す機能ブロック図である。
【図３】図３は、仮想ボリューム移築処理の処理手順の概要を示すフローチャートである。
【図４】図４は、仮想ボリューム情報の一例を示す図である。
【図５】図５は、ハードウェア構成情報の一例を示す図である。
【図６】図６は、生成ルールの一例を示す図である。
【図７】図７は、図６に示したタグとルール内容とを説明するための図である。
【図８】図８は、仮想ボリューム構築コマンドの一例を示す図である。
【図９】図９は、仮想ボリューム情報生成処理の処理手順を示すフローチャートである。
【図１０】図１０は、クラス情報生成処理の処理手順を示すフローチャートである。
【図１１】図１１は、グループ情報生成処理の処理手順を示すフローチャートである。
【図１２】図１２は、ボリューム情報生成処理の処理手順を示すフローチャートである。
【図１３】図１３は、仮想ボリューム移築プログラムを実行するコンピュータを示す図である。
【符号の説明】
【００８９】
１  仮想ボリューム管理装置
２  入力部
３  ディスク制御ＩＦ部
４  出力部
１０  仮想ボリューム移築処理部
１１  移入情報読込み部
１２  ハードウェア構成情報読込み部
１３  生成ルール読込み部
１４  仮想ボリューム情報生成部
１５  仮想ボリューム構築部
１６  移出処理部
２０  記憶部
２１  ハードウェア構成情報記憶部
２２  生成ルール記憶部
２３  仮想ボリューム情報記憶部
５０  コンピュータ
５１  入力装置
５２  モニタ
５３  出力装置
５４  ディスク制御Ｉ／Ｆ
５５  ＣＰＵ
５５ａ  仮想ボリューム移築プロセス
５６  ＲＡＭ
５６ａ  ハードウェア構成情報
５６ｂ  生成ルール
５６ｃ  仮想ボリューム情報
５７  ＨＤＤ
５７ａ  ハードウェア構成情報
５７ｂ  生成ルール
５７ｃ  仮想ボリューム移築プログラム
５８  バス
【図１】
0004643590.tif 000002
【図２】
0004643590.tif 000003
【図３】
0004643590.tif 000004
【図４】
0004643590.tif 000005
【図５】
0004643590.tif 000006
【図６】
0004643590.tif 000007
【図７】
0004643590.tif 000008
【図８】
0004643590.tif 000009
【図９】
0004643590.tif 000010
【図１０】
0004643590.tif 000011
【図１１】
0004643590.tif 000012
【図１２】
0004643590.tif 000013
【図１３】
0004643590.tif 000014