(57)【要約】【課題】複数のシステムを提供する計算機システムにおいて、各システムの稼働に必要なディスク容量を抑える。【解決手段】複数の環境を提供可能であって、各環境で利用されるファイルを格納する記憶装置を管理する計算機において、ファイルの位置情報、ファイルの識別情報及びファイルの共有情報を含むファイルマッピング情報を環境ごとに記憶し、記憶装置にファイル格納する場合に、当該ファイルのファイル識別情報と同じファイル識別情報を有する他のファイルのファイルマッピング情報が抽出された場合には、当該他のファイルのファイルマッピング情報に含まれるファイル識別情報、ファイル位置情報及びファイルが共有されていることを示す共有情報を含むファイルマッピング情報を当該ファイルのファイルマッピング情報として設定し、抽出された他のファイルマッピング情報に含まれる共有情報にファイルが共有されていることを示す情報を設定する。【選択図】図１
2011018206.tif 000002
【特許請求の範囲】
【請求項１】
複数の環境を提供可能な計算機におけるファイル管理方法であって、
前記計算機は、プロセッサ及び前記プロセッサに接続されるメモリを備え、前記各環境で利用されるファイルを格納する記憶装置を管理し、
前記メモリは、前記ファイルが格納された位置を示すファイル位置情報、前記ファイルを識別するファイル識別情報、及び前記ファイルが他の環境で共有されているか否かを示す共有情報を含むファイルマッピング情報を、前記環境ごとに記憶し、
前記方法は、
前記記憶装置に格納されたファイルを読み出す場合には、前記プロセッサが、前記計算機で提供されている環境に対応するファイルマッピング情報から、当該ファイルに対応するファイル位置情報を特定し、
前記特定されたファイル位置情報に基づいて、前記読み出し対象のファイルを取得し、
前記記憶装置にファイルを格納する場合には、前記プロセッサが、前記格納されるファイルを識別するためのファイル識別情報を生成し、
前記プロセッサが、前記生成されたファイル識別情報と同じファイル識別情報を含み、かつ、前記計算機で提供されている環境とは別の環境に対応するファイルマッピング情報を抽出し、
前記別の環境に対応するファイルマッピング情報が抽出された場合には、前記プロセッサが、前記抽出されたファイルマッピング情報から、前記格納されるファイルに対応するファイル位置情報を取得し、
前記プロセッサが、前記計算機で提供されている環境に対応し、かつ、前記格納されるファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記取得されたファイル位置情報、及び他の環境でファイルが共有されていることを示す共有情報を設定し、
前記プロセッサが、前記別の環境に対応するファイルマッピング情報に含まれる共有情報に、前記他の環境でファイルが共有されていることを示す情報を設定し、
前記別の環境に対応するファイルマッピング情報が抽出されなかった場合には、前記プロセッサが、前記取得されたファイル位置情報を設定し、
前記格納されるファイルに対応するファイルマッピング情報に、ファイルが共有されていないことを示す情報を設定することを特徴とするファイル管理方法。
【請求項２】
前記方法は、さらに、
前記記憶装置に格納されたファイルを更新する場合には、前記プロセッサが、前記計算機で提供されている環境に対応するファイルマッピング情報に基づいて、前記更新されるファイルが前記計算機で提供されている環境とは別の環境で共有されているか否かを判定し、
前記更新されるファイルが別の環境で共有されている場合には、前記プロセッサが、前記更新されるファイルを共有している別の環境の数が１であるか否かを判定し、
前記ファイルを共有している別の環境の数が１である場合には、前記ファイルを共有している別の環境に対応するファイルマッピング情報の共有情報をファイルが共有されていないことを示す情報に更新し、
前記プロセッサが、前記記憶装置に更新後のファイルを格納することを特徴とする請求項１に記載のファイル管理方法。
【請求項３】
前記方法は、
前記記憶装置に格納されたファイルを更新する場合には、前記プロセッサが、更新後のファイルを前記記憶装置に格納し、
前記プロセッサが、前記ファイルの更新を要求した要求元に応答した後に、前記更新後のファイルを識別するためのファイル識別情報を生成し、
前記別の環境に対応するファイルマッピング情報が抽出されなかった場合には、前記プロセッサが、前記計算機で提供されている環境に対応し、かつ、前記更新後のファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記更新後のファイルのファイル位置情報、及び他の環境でファイルが共有されていないことを示す共有情報を設定し、
前記別の環境に対応するファイルマッピング情報が抽出された場合には、前記プロセッサが、前記抽出されたファイルマッピング情報から、前記更新後のファイルに対応するファイル位置情報を取得し、
前記プロセッサが、前記計算機で提供されている環境に対応し、かつ、前記更新後のファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記取得されたファイル位置情報、及び他の環境でファイルが共有されていることを示す共有情報を設定し、
前記プロセッサが、前記更新後のファイルを前記記憶装置から削除することを特徴とする請求項１に記載のファイル管理方法。
【請求項４】
前記ファイル識別情報は、前記ファイルの内容に基づいて生成されたハッシュ値であることを特徴とする請求項１に記載のファイル管理方法。
【請求項５】
前記ハッシュ値のサイズは、前記ファイルのサイズに基づいて生成されることを特徴とする請求項４に記載のファイル管理方法。
【請求項６】
前記ハッシュ値のサイズは、前記計算機によって提供される環境の数に基づいて生成されることを特徴とする請求項４に記載のファイル管理方法。
【請求項７】
前記計算機は、
複数の仮想計算機を実行可能であり、
前記仮想計算機ごとに、前記環境が提供され、外部の管理プログラムによって前記仮想計算機の制御を行うことを可能とすることを特徴とする請求項１に記載のファイル管理方法。
【請求項８】
前記方法は、前記プロセッサが、他の仮想計算機によって利用されうる情報を、高速アクセスが可能な領域に配置することを特徴とする請求項７に記載のファイル管理方法。
【請求項９】
複数の環境を提供可能な計算機であって、
プロセッサ及び前記プロセッサに接続されるメモリを備え、前記各環境で利用されるファイルを格納する記憶装置を管理し、
前記メモリは、前記ファイルが格納された位置を示すファイル位置情報、前記ファイルを識別するファイル識別情報、及び前記ファイルが他の環境で共有されているか否かを示す共有情報を含むファイルマッピング情報を、前記環境ごとに記憶し、
前記プロセッサは、
前記記憶装置に格納されたファイルを読み出す場合には、前記計算機で提供されている環境に対応するファイルマッピング情報から、当該ファイルに対応するファイル位置情報を特定し、
前記特定されたファイル位置情報に基づいて、前記読み出し対象のファイルを取得し、
前記記憶装置にファイルを格納する場合には、前記格納されるファイルを識別するためのファイル識別情報を生成し、
前記生成されたファイル識別情報と同じファイル識別情報を含み、かつ、前記計算機で提供されている環境とは別の環境に対応するファイルマッピング情報を抽出し、
前記別の環境に対応するファイルマッピング情報が抽出された場合には、前記抽出されたファイルマッピング情報から、前記格納されるファイルに対応するファイル位置情報を取得し、
前記計算機で提供されている環境に対応し、かつ、前記格納されるファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記取得されたファイル位置情報、及び他の環境でファイルが共有されていることを示す共有情報を設定し、
前記別の環境に対応するファイルマッピング情報に含まれる共有情報に、前記他の環境でファイルが共有されていることを示す情報を設定し、
前記別の環境に対応するファイルマッピング情報が抽出されなかった場合には、前記格納されるファイルに対応するファイルマッピング情報に、前記ファイル識別情報、前記ファイル位置情報、及び他の環境でファイルが共有されていないことを示す共有情報を設定することを特徴とする計算機。
【請求項１０】
前記プロセッサは、
前記記憶装置に格納されたファイルを更新する場合には、前記計算機で提供されている環境に対応するファイルマッピング情報に基づいて、前記更新されるファイルが前記計算機で提供されている環境とは別の環境で共有されているか否かを判定し、
前記更新されるファイルが別の環境で共有されている場合には、前記更新されるファイルを共有している別の環境の数が１であるか否かを判定し、
前記ファイルを共有している別の環境の数が１である場合には、前記ファイルを共有している別の環境に対応するファイルマッピング情報の共有情報をファイルが共有されていないことを示す情報に更新し、
前記記憶装置に更新後のファイルを格納することを特徴とする請求項９に記載の計算機。
【請求項１１】
前記方法は、
前記記憶装置に格納されたファイルを更新する場合には、更新後のファイルを前記記憶装置に格納し、
前記ファイルの更新を要求した要求元に応答した後に、前記更新後のファイルを識別するためのファイル識別情報を生成し、
前記別の環境に対応するファイルマッピング情報が抽出されなかった場合には、前記計算機で提供されている環境に対応し、かつ、前記更新後のファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記更新後のファイルのファイル位置情報、及び他の環境でファイルが共有されていないことを示す共有情報を設定し、
前記別の環境に対応するファイルマッピング情報が抽出された場合には、前記抽出されたファイルマッピング情報から、前記更新後のファイルに対応するファイル位置情報を取得し、
前記計算機で提供されている環境に対応し、かつ、前記更新後のファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記取得されたファイル位置情報、及び他の環境でファイルが共有されていることを示す共有情報を設定し、
前記更新後のファイルを前記記憶装置から削除することを特徴とする請求項９に記載の計算機。
【請求項１２】
前記ファイル識別情報は、前記ファイルの内容に基づいて生成されたハッシュ値であることを特徴とする請求項９に記載の計算機。
【請求項１３】
前記ハッシュ値のサイズは、前記ファイルのサイズに基づいて生成されることを特徴とする請求項１２に記載の計算機。
【請求項１４】
前記ハッシュ値のサイズは、前記計算機によって提供される環境の数に基づいて生成されることを特徴とする請求項１２に記載の計算機。
【請求項１５】
前記計算機は、
複数の仮想計算機を実行可能であり、
前記仮想計算機ごとに、前記環境が提供され、管理プログラムにより仮想計算機の制御を行うことを可能とすることを特徴とする請求項９に記載の計算機。
【請求項１６】
前記計算機は、他の仮想計算機によって利用されうる情報を、高速アクセスが可能な領域に配置することを特徴とする請求項１５に記載の計算機。
【請求項１７】
複数の環境を提供可能な計算機に実行させるファイル管理プログラムであって、
前記計算機は、
前記各環境で利用されるファイルを格納する記憶装置を管理し、
前記ファイルが格納された位置を示すファイル位置情報、前記ファイルを識別するファイル識別情報、及び前記ファイルが他の環境で共有されているか否かを示す共有情報を含むファイルマッピング情報を、前記環境ごとに記憶し、
前記プログラムは、
前記記憶装置に格納されたファイルを読み出す場合には、前記計算機で提供されている環境に対応するファイルマッピング情報から、当該ファイルに対応するファイル位置情報を特定する手順と、
前記特定されたファイル位置情報に基づいて、前記読み出し対象のファイルを取得する手順と、
前記記憶装置にファイルを格納する場合には、前記格納されるファイルを識別するためのファイル識別情報を生成する手順と、
前記生成されたファイル識別情報と同じファイル識別情報を含み、かつ、前記計算機で提供されている環境とは別の環境に対応するファイルマッピング情報を抽出する手順と、
前記別の環境に対応するファイルマッピング情報が抽出された場合には、前記抽出されたファイルマッピング情報から、前記格納されるファイルに対応するファイル位置情報を取得する手順と、
前記計算機で提供されている環境に対応し、かつ、前記格納されるファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記取得されたファイル位置情報、及び他の環境でファイルが共有されていることを示す共有情報を設定する手順と、
前記別の環境に対応するファイルマッピング情報に含まれる共有情報に、前記他の環境でファイルが共有されていることを示す情報を設定する手順と、含むことを特徴とするファイル管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のＯＳ実行環境を提供することが可能な計算機システムにおいてファイルを管理する技術に関する。
【背景技術】
【０００２】
システム開発におけるテスト工程では、標準的な実行環境を想定してソフトウェアのテストが行われるが、実際にソフトウェアが利用される環境はさまざまである。例えば、開発されたシステムを利用する計算機には、様々なソフトウェアが共存している。利用者の環境で最新バージョンのソフトウェアが利用されているとは限らず、さまざまな環境で開発したアプリケーションのテストを行う必要が生じる場合がある。
【０００３】
しかし、ソフトウェアによっては、複数のバージョンが一つの環境で共存できない場合が多く、テストを行うためには、バージョンごとに複数の環境（システム）を用意する必要がある。
【０００４】
これらの複数の環境では、一部のソフトウェアを除いて、ＯＳなどは共通である。この場合、一台の計算機をマルチブートで利用することによって、ハードウェア資源を共通化することは可能であるが、ソフトウェアの共通部分は環境ごとに保持する必要がある。
【０００５】
すなわち、マルチブートによって類似する複数の環境を構築する場合には、構築する環境の数だけのソフトウェアをインストール及び設定する必要があり、多くのディスク容量を必要とするだけでなく、ＯＳなどの環境設定にも多くの手間が必要となる。
【０００６】
そこで、いわゆるスナップショット方式と呼ばれる技術が提案されている。スナップショット方式では、まず、各環境で共通の状態まで一つの環境を構築し、この時点におけるディスクの状態を固定する。この固定されたディスクの状態をスナップショットという。その後、各環境で新たに更新された部分を環境ごとに別の領域に書き込むことによって、必要なディスク容量を少なくすることができる。
【０００７】
しかし、スナップショット方式では、スナップショットを取得するタイミングによって節約できる容量が相違してしまう。さらに、同じパッケージを追加する場合であっても、スナップショット取得後は環境ごとに保存されるため、ディスク容量を節約することができなくなる。
【０００８】
そこで、記憶領域に格納されたデータをファイル単位で認識し、他の環境に同じファイルが含まれている場合には、基本となるファイルを設定し、複数の環境で基本となるファイルを参照し、残りのファイルを圧縮して保持する技術が開示されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５−２０２４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１に開示された技術では、完全にファイル単位ではなく、基本となるファイルが格納された領域に格納されたデータと、一致しない領域に格納されたデータとがあわせて出力される。したがって、ファイルの取得が要求されるたびにファイルの復元が必要となる。バックアップシステムを対象とする場合には問題なくても、アプリケーションの実行に必要なファイルを読み書きする環境ではファイルの復元が処理全体のボトルネックになってしまう可能性がある。
【００１１】
また、特許文献１に開示された技術では、システム稼働中にファイルが変更された場合であっても動的に共有又は解除を行うことができない。したがって、環境構築後に同じアプリケーションをインストールした場合であっても共有できない場合がある。
【００１２】
本発明は、各ＯＳ実行環境で利用されるファイルを動的に共有することによって、各ＯＳ実行環境を提供するために必要なファイル（各システムを稼働させるためのファイル）を格納するための容量を抑えることを可能とする技術を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の代表的な一形態では、複数のＯＳ実行環境を提供可能な計算機におけるファイル管理方法であって、前記計算機は、プロセッサ及び前記プロセッサに接続されるメモリを備え、前記各環境で利用されるファイルを格納する記憶装置を管理し、前記メモリは、前記ファイルが格納された位置を示すファイル位置情報、前記ファイルを識別するファイル識別情報、及び前記ファイルが他の環境で共有されているか否かを示す共有情報を含むファイルマッピング情報を、前記環境ごとに記憶し、前記方法は、前記記憶装置に格納されたファイルを読み出す場合には、前記プロセッサが、前記計算機で提供されている環境に対応するファイルマッピング情報から、当該ファイルに対応するファイル位置情報を特定し、前記特定されたファイル位置情報に基づいて、前記読み出し対象のファイルを取得し、前記記憶装置にファイルを格納する場合には、前記プロセッサが、前記格納されるファイルを識別するためのファイル識別情報を生成し、前記プロセッサが、前記生成されたファイル識別情報と同じファイル識別情報を含み、かつ、前記計算機で提供されている環境とは別の環境に対応するファイルマッピング情報を抽出し、前記別の環境に対応するファイルマッピング情報が抽出された場合には、前記プロセッサが、前記抽出されたファイルマッピング情報から、前記格納されるファイルに対応するファイル位置情報を取得し、前記プロセッサが、前記計算機で提供されている環境に対応し、かつ、前記格納されるファイルに対応するファイルマッピング情報に、前記生成されたファイル識別情報、前記取得されたファイル位置情報、及び他の環境でファイルが共有されていることを示す共有情報を設定し、前記プロセッサが、前記別の環境に対応するファイルマッピング情報に含まれる共有情報に、前記他の環境でファイルが共有されていることを示す情報を設定し、前記プロセッサが、前記生成されたファイル情報と同じファイル識別情報を含まない、または、前記別の環境に対応するファイルマッピング情報が抽出されない場合には、前記プロセッサが新たなファイル位置情報を設定し、前記プロセッサが、前記ファイルが共有されていないことを示す情報を設定する。
【発明の効果】
【００１４】
本発明の一形態によれば、ＯＳ実行環境ごとにファイルを動的に共有することによって、各環境を提供するために必要なファイルを格納するための容量を抑えることができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施の形態のファイル管理システムを実現するサーバ装置のソフトウェア構成を示すブロック図である。
【図２】本発明の第１の実施の形態のファイル管理システムを実現するサーバ装置のハードウェア構成を示すブロック図である。
【図３】本発明の第１の実施の形態のファイルマッピング制御部の構成を示す図である。
【図４】本発明の第１の実施の形態のマッピング情報管理部の構成を示す図である。
【図５】本発明の第１の実施の形態のマッピング情報制御部の構成を示す図である。
【図６】本発明の第１の実施の形態のファイルマッピングテーブルの構成を示す図である。
【図７】本発明の第１の実施の形態のシステム保存部の構成を示す図である。
【図８】本発明の第１の実施の形態のファイル入出力監視部による処理の手順を示すフローチャートである。
【図９Ａ】本発明の第１の実施の形態のファイルの書き込み処理の前半部分の手順を示すフローチャートである。
【図９Ｂ】本発明の第１の実施の形態のファイルの書き込み処理の後半部分の手順を示すフローチャートである。
【図１０】本発明の第１の実施の形態のファイルの読み出し処理の手順を示すフローチャートである。
【図１１】本発明の第１の実施の形態のファイル情報取得部による処理の手順を示すフローチャートである。
【図１２】本発明の第１の実施の形態の同一ハッシュ探索部による処理の手順を示すフローチャートである。
【図１３Ａ】本発明の第１の実施の形態のハッシュ生成部による処理の手順を示すフローチャートである。
【図１３Ｂ】本発明の第１の実施の形態のファイルシステムアクセス部による処理の手順を示すフローチャートである。
【図１３Ｃ】本発明の第１の実施の形態の位置情報設定部による処理の手順を示すフローチャートである。
【図１３Ｄ】本発明の第１の実施の形態の共有フラグ設定部による処理の手順を示すフローチャートである。
【図１３Ｅ】本発明の第１の実施の形態のハッシュ値設定部による処理の手順を示すフローチャートである。
【図１４】本発明の第１の実施の形態のマッピングシステム制御コマンド受付部による処理の手順を示すフローチャートである。
【図１５】本発明の第１の実施の形態の次回システム設定処理の手順を示すフローチャートである。
【図１６】本発明の第１の実施の形態のシステム削除処理の手順を示すフローチャートである。
【図１７Ａ】本発明の第１の実施の形態のシステム切替処理の手順を示すフローチャートである。
【図１７Ｂ】本発明の第１の実施の形態のシステム複製処理の手順を示すフローチャートである。
【図１８Ａ】本発明の第１の実施の形態のシステム存在確認部による処理の手順を示すフローチャートである。
【図１８Ｂ】本発明の第１の実施の形態のシステム複製部による処理の手順を示すフローチャートである。
【図１８Ｃ】本発明の第１の実施の形態のシステム削除部による処理の手順を示すフローチャートである。
【図１９】本発明の第１の実施の形態のシステム操作部による処理の手順を示すフローチャートである。
【図２０】本発明の第２の実施の形態のファイル管理システムを実現する計算機システムのハードウェア及びソフトウェアの構成を示すブロック図である。
【図２１】本発明の第２の実施の形態の仮想化対応したファイルマッピング制御部２１０６の構成を示す図である。
【図２２】本発明の第２の実施の形態のリモート管理部の構成を示す図である。
【図２３】本発明の第２の実施の形態のファイル入出力監視部による処理の手順を示すフローチャートである。
【図２４】本発明の第２の実施の形態のマッピングシステム制御コマンド受付部による処理の手順を示すフローチャートである。
【図２５】本発明の第２の実施の形態の次回システム設定処理の手順を示すフローチャートである。
【図２６】本発明の第２の実施の形態のシステム削除処理の手順を示すフローチャートである。
【図２７Ａ】本発明の第２の実施の形態のシステム切替処理の手順を示すフローチャートである。
【図２７Ｂ】本発明の第２の実施の形態の仮想計算機追加処理の手順を示すフローチャートである。
【図２７Ｃ】本発明の第２の実施の形態の仮想計算機削除処理の手順を示すフローチャートである。
【図２８】本発明の第２の実施の形態の仮想計算機管理テーブル操作部による処理の手順を示すフローチャートである。
【図２９】本発明の第２の実施の形態の仮想計算機管理テーブルの構成を示す図である。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を、図面を参照しながら詳細に説明する。
【００１７】
本発明では、実行可能なオペレーティングシステムを含む、完結されたファイルのまとまりを「システム」と呼ぶ。システムにはアプリケーションを構成するファイルを含んでもよい。システムは、例えば、「ＤＢシステム」「ＷＥＢアプリケーションシステム」など、特定の機能を備えたサーバ等である。
【００１８】
（第１の実施の形態）
図１は、本発明の第１の実施の形態のファイル管理システムを実現するサーバ装置１０１のソフトウェア構成を示すブロック図である。
【００１９】
サーバ装置１０１は、ファイルマッピングシステム部１０５、ファイル保存部１０９及びマッピング情報保存部１１０を含む。
【００２０】
ファイルマッピングシステム部１０５は、要求されたファイルの読み書きを実行し、本発明の第１の実施の形態のファイル管理システムを制御する。ファイルマッピングシステム部１０５には、ファイルマッピング制御部１０６、マッピング情報管理部１０７及びマッピング情報制御部１０８が含まれる。
【００２１】
ファイルマッピング制御部１０６は、要求されたファイルを読み書きするための制御を行う。例えば、要求されたファイルの格納位置を特定したり、ファイルを共有するか否かを判定したりする。
【００２２】
ファイルマッピング制御部１０６には、ファイル入出力監視部２０１、ファイル情報取得部２０２、同一ハッシュ探索部２０３、ハッシュ生成部２０４、ファイルシステムアクセス部２０５、位置情報設定部２０６、共有フラグ設定部２０７及びハッシュ値設定部２０８が含まれる。ファイルマッピング制御部１０６の各構成については、図３にて後述する。
【００２３】
マッピング情報管理部１０７は、格納されたファイルの位置情報などを含むファイルマッピング情報を管理する。マッピング情報管理部１０７には、ファイルマッピングテーブル３０１及びシステム保存部３０２が含まれる。マッピング情報管理部１０７の各構成については、図４にて後述する。
【００２４】
マッピング情報制御部１０８は、次回起動するシステムを指定するなど、ファイル管理システム全体を制御する。マッピング情報制御部１０８には、マッピングシステム制御コマンド受付部４０１、システム存在確認部４０２、システム操作部４０３、システム複製部４０４及びシステム削除部４０５が含まれる。マッピング情報制御部１０８の各構成については、図５にて後述する。
【００２５】
ファイル保存部１０９は、読み書きされるファイルを格納する。マッピング情報保存部１１０は、読み書きされるファイルを格納するための位置情報などが保存される。具体的には、ファイルマッピングテーブル３０１の実体が格納される。
【００２６】
図２は、本発明の第１の実施の形態のファイル管理システムを実現するサーバ装置１０１のハードウェア構成を示すブロック図である。
【００２７】
本発明の第１の実施の形態のサーバ装置１０１は、メモリ１０２、ＣＰＵ１０３、ディスク装置１０４及びインタフェース１１３を備える。メモリ１０２、ＣＰＵ１０３、ディスク装置１０４及びインタフェース１１３は、内部バスによって接続されている。
【００２８】
メモリ１０２は、ＣＰＵ１０３によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ１０２に記憶されるプログラム及びデータは、ディスク装置１０４に格納されたプログラム及びデータがロードされたものであってもよい。
【００２９】
メモリ１０２には、図１に示したファイルマッピングシステム部１０５が記憶される。前述したように、ファイルマッピングシステム部１０５には、ファイルマッピング制御部１０６、マッピング情報管理部１０７及びマッピング情報制御部１０８が含まれている。ファイルマッピングシステム部１０５は、プログラム及びデータによって構成されている。
【００３０】
ＣＰＵ１０３は、メモリ１０２に記憶されたプログラムを実行することによって、要求された処理を実行する。
【００３１】
ディスク装置１０４は、プログラム及びデータを格納する。ディスク装置１０４は、例えば、磁気記憶装置又は半導体記憶装置などの不揮発性記憶媒体である。前述したように、メモリ１０２にロードされるプログラム及びデータなどが記憶される。
【００３２】
ディスク装置１０４には、ファイル保存部１０９及びマッピング情報保存部１１０が格納される。ファイル保存部１０９には、本発明の第１の実施の形態のファイル管理システムによって管理されるファイルの実体が格納される。また、マッピング情報保存部１１０には、ファイル保存部１０９に格納されたファイルの位置情報を含むマッピング情報が格納される。
【００３３】
なお、本発明の第１の実施の形態では、図２に示すように、ディスク装置１０４がサーバ装置１０１に備えられる構成としているが、外部のストレージ装置にファイル保存部１０９及びマッピング情報保存部１１０、又は一方を格納する構成としてもよい。この場合には、インタフェース１１３を介して外部のストレージ装置に接続してもよいし、ストレージ装置に接続するためのインタフェースを別途備えるようにしてもよい。また、外部のストレージ装置が複数のサーバ装置によってアクセスされる場合には、ファイル保存部１０９及びマッピング情報保存部１１０を各サーバ装置で共有してもよい。こうすることによって、複数のサーバ装置で実行されるシステムを一元的に管理することができる。
【００３４】
インタフェース１１３は、外部に接続するためのインタフェースである。例えば、ディスク装置１０４に格納されたファイルの取得要求を、インタフェース１１３を介して受け付ける。
【００３５】
図３は、本発明の第１の実施の形態のファイルマッピング制御部１０６の構成を示す図である。
【００３６】
ファイルマッピング制御部１０６には、前述のように、ファイル入出力監視部２０１、ファイル情報取得部２０２、同一ハッシュ探索部２０３、ハッシュ生成部２０４、ファイルシステムアクセス部２０５、位置情報設定部２０６、共有フラグ設定部２０７及びハッシュ値設定部２０８が含まれる。
【００３７】
ファイル入出力監視部２０１は、ファイルの入出力要求を受け付け、ファイルの入出力要求に応じた処理を実行する。ファイル入出力監視部２０１による処理の詳細については、図８にて後述する。
【００３８】
ファイル情報取得部２０２は、要求されたファイルの情報を取得する。ファイル情報取得部２０２による処理の詳細については、図１１にて後述する。
【００３９】
同一ハッシュ探索部２０３は、要求されたファイルに対応するハッシュ値と同じハッシュ値を有するファイルを検索する。同一ハッシュ探索部２０３による処理の詳細については、図１２にて後述する。
【００４０】
ハッシュ生成部２０４は、要求されたファイルに対応するハッシュ値を算出する。ハッシュ生成部２０４による処理の詳細については、図１３Ａにて後述する。
【００４１】
ファイルシステムアクセス部２０５は、要求された処理に応じてファイルシステムにアクセスする。ファイルシステムに対するアクセスとは、例えば、ファイルの読み書きである。ファイルシステムアクセス部２０５による処理の詳細については、図１３Ｂにて後述する。
【００４２】
位置情報設定部２０６は、要求されたファイルが格納された位置情報をファイルマッピングテーブル３０１に設定する。位置情報設定部２０６による処理の詳細については、図１３Ｃにて後述する。
【００４３】
共有フラグ設定部２０７は、要求されたファイルが共有されているか否かを示す共有フラグをファイルマッピングテーブル３０１に設定する。共有フラグ設定部２０７による処理の詳細については、図１３Ｄにて後述する。
【００４４】
ハッシュ値設定部２０８は、要求されたファイルに対応するハッシュ値をファイルマッピングテーブル３０１に設定する。ハッシュ値設定部２０８による処理の詳細については、図１３Ｅにて後述する。
【００４５】
図４は、本発明の第１の実施の形態のマッピング情報管理部１０７の構成を示す図である。
【００４６】
マッピング情報管理部１０７には、前述のように、ファイルマッピングテーブル３０１及びシステム保存部３０２が含まれる。
【００４７】
ファイルマッピングテーブル３０１は、ディスク装置１０４のファイル保存部１０９に格納されたファイルの位置情報などが格納される。例えば、ファイルが格納されたアドレス、当該ファイルが共有されているか否かを示す情報などが格納される。ファイルマッピングテーブル３０１の詳細については、図６にて後述する。
【００４８】
システム保存部３０２は、現在、サーバ装置１０１によって提供されている環境、すなわち、実行中のシステムを識別する情報を格納する。また、次回起動するシステムについてもシステム保存部３０２に設定される。システム保存部３０２の詳細については、図７にて説明する。
【００４９】
図５は、本発明の第１の実施の形態のマッピング情報制御部１０８の構成を示す図である。
【００５０】
マッピング情報制御部１０８には、前述のように、マッピングシステム制御コマンド受付部４０１、システム存在確認部４０２、システム操作部４０３、システム複製部４０４及びシステム削除部４０５が含まれる。
【００５１】
マッピングシステム制御コマンド受付部４０１は、ファイル管理システムの管理用コマンドの入力を受け付け、受け付けられた処理を実行する。マッピングシステム制御コマンド受付部４０１による処理の詳細については、図１４にて後述する。
【００５２】
システム存在確認部４０２は、指定されたシステムが存在するか否かを確認する。システム存在確認部４０２による処理の詳細については、図１８Ａにて後述する。
【００５３】
システム操作部４０３は、指定された操作種別に基づいて処理を実行する。具体的には、現在実行中又は次回起動予定のシステムを取得したり、更新したりする。システム操作部４０３による処理の詳細については、図１９にて後述する。
【００５４】
システム複製部４０４は、新たにシステムを生成するために、既存のシステムの情報を複製する。システム複製部４０４による処理の詳細については、図１８Ｂにて後述する。
【００５５】
システム削除部４０５は、指定されたシステムを削除する。システム削除部４０５による処理の詳細については、図１８Ｃにて後述する。
【００５６】
図６は、本発明の第１の実施の形態のファイルマッピングテーブル３０１の構成を示す図である。
【００５７】
ファイルマッピングテーブル３０１は、サーバ装置１０１で提供されるシステム名ごとに定義されるシステム名行３０１１、及び各システムで利用されるファイルごとに定義されるファイル名列３０１０によって構成される。各ファイルの情報は、システムごとに、位置情報３０１２、ハッシュ値３０１３及び共有フラグ３０１４を含む。
【００５８】
各システムが類似している場合、すなわち、利用されるファイルの構成が類似している場合には、図６に示すように、システム名行３０１１及びファイル名列３０１０によってファイルマッピングテーブル３０１を構成すると効率がよい。
【００５９】
しかし、各システムにおいて共通に利用されるファイルが多くない場合には、一つのシステムしか使用しないファイルであっても各システムに含まれるすべてのファイルの数だけ、フィールドを生成する必要があり、容量効率がよくない。このような場合には、例えば、システム名及びファイル名をキーとしてファイル情報（位置情報３０１２、ハッシュ値３０１３及び共有フラグ３０１４）を特定するようにファイルマッピングテーブル３０１を構成するとよい。
【００６０】
また、システム名行３０１１及びファイル名列３０１０によって構成されるファイルマッピングテーブル３０１と、システム名及びファイル名をキーとしてファイル情報を特定するようにファイルマッピングテーブル３０１とを併用してもよい。例えば、各システムでＯＳが共通、かつ、利用されるアプリケーションが相違する場合などには、ＯＳ関連のファイルはシステム名行３０１１及びファイル名列３０１０によって構成し、アプリケーション関連のファイルは、システム名及びファイル名をキーとしてファイル情報を格納するように構成するとよい。また、共有する可能性の高いファイルのみをファイルマッピングテーブル３０１で管理するようにしてもよい。
【００６１】
位置情報３０１２は、ファイルが実際に格納されている場所を示す情報である。例えば、ディスク装置１０４によって提供される記憶領域のアドレスである。したがって、別のシステムで同じファイルを利用する場合には、各システムでファイルの位置情報３０１２を同じ値に設定することによって、当該ファイルの格納場所を一つにすることができ、システムごとにファイルを格納する必要がなくなる。
【００６２】
ハッシュ値３０１３は、ファイルを一意に識別するための情報であって、本発明の第１の実施の形態では、ハッシュ値を利用している。ハッシュ値は、周知の方法で求めればよい。なお、ファイルを一意に識別することが可能であれば、ハッシュ以外の手法を利用してもよい。
【００６３】
共有フラグ３０１４は、当該ファイルが他のシステムに共有されているか否かを示すフラグである。共有されている場合には“ｔｒｕｅ”が設定され、共有されていない場合には“ｆａｌｓｅ”が設定される。
【００６４】
図６のファイルマッピングテーブル３０１についてさらに説明すると、システム２によって利用されるファイルの情報は、レコードセット３０１５に格納されている。また、システム３のファイル名１に対応するファイル情報は、位置情報３０１２、ハッシュ値３０１３及び共有フラグ３０１４を含むセルセット３０１６に格納されている。
【００６５】
図７は、本発明の第１の実施の形態のシステム保存部３０２の構成を示す図である。
【００６６】
システム保存部３０２には、サーバ装置ごとに現在実行中のシステムと次回実行予定のシステムの識別情報が格納される。
【００６７】
システム保存部３０２は、サーバ３０２３、現在システム３０２１及び次回システム３０２２を含む。
【００６８】
サーバ３０２３は、システムを実行しているサーバ装置の識別情報である。なお、サーバ装置１０１に備えられたディスク装置１０４にシステム保存部３０２が格納される場合にはサーバ３０２３はなくてもよい。複数のサーバがシステム保存部３０２を共有する場合には、サーバ３０２３は必要である。
【００６９】
現在システム３０２１は、現在実行中又は直前に実行されていたシステムの識別情報である。次回システム３０２２は、次回起動時に実行されるシステムの識別情報である。
【００７０】
本発明の第１の実施の形態では、システムを切り替える一つの手段としては、現在システムの実行中に次回システムを設定し、再起動後、次回システムに指定されたシステムを実行する。または、システム切替処理によって、明示的に次回システムの内容を現在システムに更新してからシステムを切り替え、サーバ装置１０１起動時には、常に現在システムに設定されているシステムを起動するようにしてもよい。さらに、サーバ装置１０１を再起動する場合には、メニュー画面を表示するなどして、サーバ装置起動時に実行するシステムを選択するようにしてもよい。
【００７１】
以下、本発明の第１の実施の形態のファイル管理システムにおいて、図８から図１３Ｅを参照しながら、共有ファイルを読み書きする手順について説明する。
【００７２】
図８は、本発明の第１の実施の形態のファイル入出力監視部２０１による処理の手順を示すフローチャートである。
【００７３】
本発明の第１の実施の形態では、ユーザからのファイルアクセス（入出力）要求が監視されており、ファイルアクセス要求が検知されると、まず、当該ファイルアクセス要求を受け付けたシステム名を特定する。ファイルアクセス要求には、アクセスされるファイル名（ｆｉｌｅｎａｍｅ）が含まれる。ファイル名及びシステム名に基づいてファイルの格納位置が特定され、ファイルの書き込み処理又は読み出し処理が実行される。ファイルアクセス要求には、さらにデータ（ｄａｔａ）が含まれており、書き込み要求の場合に書き込み内容が格納されている。
【００７４】
ＣＰＵ１０３は、ファイル入出力監視部２０１によって、ユーザからのファイルアクセス要求が検知されると、まず、現在実行されているシステム名を取得する（ステップ２０１１）。システム名は、システム保存部３０２の現在システム３０２１の値を随時取得してもよいし、システム起動時にあらかじめメモリ１０２に記憶しておいてもよい。
【００７５】
ＣＰＵ１０３は、ファイルアクセス要求が書き込み要求か読み出し要求かを判定し（ステップ２０１２）、書き込み処理（ステップ２０１３）又は読み出し処理（ステップ２０１４）を実行する。
【００７６】
ステップ２０１３の書き込み処理は、システム名（ｓｙｓｎａｍｅ）、ファイル名（ｆｉｌｅｎａｍｅ）及び更新内容（ｄａｔａ）が引数として実行される。返り値には、例えば、実行結果が格納される。
【００７７】
一方、ステップ２０１４の読み出し処理は、システム名（ｓｙｓｎａｍｅ）及びファイル名（ｆｉｌｅｎａｍｅ）を引数とし、返り値に読み出された内容が格納される。
【００７８】
ファイルの書き込み処理（ステップ２０１３）又は読み出し処理（ステップ２０１４）が終了すると、本処理は終了する。
【００７９】
図９Ａ及び図９Ｂは、本発明の第１の実施の形態のファイルの書き込み処理（ステップ２０１３）の手順を示すフローチャートである。
【００８０】
ＣＰＵ１０３は、まず、書き込み処理が実行されると、ファイル情報取得部２０２によって、書き込み対象のファイルのファイル情報を取得する（ステップ２０２０）。このとき、引数としてシステム名（ｓｙｓｎａｍｅ）及びファイル名（ｆｉｌｅｎａｍｅ）を渡し、ファイル情報取得処理の結果を変数ｒｅｔに代入する。なお、ファイル情報取得部２０２による処理の詳細については、図１１にて後述する。
【００８１】
ＣＰＵ１０３は、変数ｒｅｔの値が−１であるか否かを判定することによって、書き込み対象のファイルのファイル情報を取得できたか否かを判定する（ステップ２０１３１）。ファイル情報取得処理では、書き込み対象のファイルのファイル情報を取得できた場合には、実行結果としてファイル情報が応答される。一方、書き込み対象のファイルのファイル情報を取得できなかった場合には、−１が応答される。
【００８２】
ＣＰＵ１０３は、変数ｒｅｔの値が−１の場合、すなわち、書き込み対象のファイルのファイル情報を取得できなかった場合には（ステップ２０１３１の結果が「Ｙ」）、書き込み対象のファイルのハッシュ値を生成する処理を実行する（ステップ２０４０）。書き込み対象のファイルが存在しない場合には、例えば、ファイルを新たに作成する場合などが考えられる。
【００８３】
一方、ＣＰＵ１０３は、変数ｒｅｔの値が−１でない場合、すなわち、書き込み対象のファイルのファイル情報を取得できた場合には（ステップ２０１３１の結果が「Ｎ」）、当該ファイルが他のシステムに共有されているか否かを判定する（ステップ２０１３２）。具体的には、ファイル情報取得処理で取得されるファイル情報には、ファイルマッピングテーブル３０１に格納されたファイル情報が含まれている。したがって、ファイルが共有されているか否かは、共有フラグ３０１４の値に基づいて判定することができる。
【００８４】
ＣＰＵ１０３は、書き込み対象のファイルが共有されていない場合、すなわち、共有フラグ３０１４の値がｆａｌｓｅの場合には（ステップ２０１３２の結果が「ｆａｌｓｅ」）、書き込み対象のファイルに対応するハッシュ値を生成する（ステップ２０４０）。
【００８５】
一方、ＣＰＵ１０３は、書き込み対象のファイルが共有されている場合、すなわち、共有フラグ３０１４の値がｔｒｕｅの場合には（ステップ２０１３２の結果が「ｔｒｕｅ」）、ファイルの共有を解除する（ステップ２０７０）。他のシステムと共有しているファイルを更新すると利用されるファイルが相違するため、共有フラグをｆａｌｓｅに設定し、共有を解除する必要がある。
【００８６】
ＣＰＵ１０３は、さらに、書き込み対象のファイルと内容が一致するファイルを探索する（ステップ２０３０）。このとき、探索結果（ｒｅｔ）として、共有されていたファイル数のファイル情報が応答される。応答されたファイル情報は、例えば、ファイル情報の配列となっている。
【００８７】
ＣＰＵ１０３は、ｒｅｔの個数、すなわち、ステップ２０７０による探索結果に含まれるファイル情報の数に基づいて処理を分岐させる（ステップ２０１３３）。ｒｅｔの個数が１以外（より大きい）、すなわち、更新対象のファイルを共有していた他のファイルの数が複数存在する場合には（ステップ２０１３３の結果が「１以外」）、そのままファイルが共有された状態となるため、書き込み対象のファイルのハッシュ値を生成する処理を実行する（ステップ２０４０）。
【００８８】
一方、ＣＰＵ１０３は、ｒｅｔの個数が１、すなわち、書き込み対象のファイルが２つのシステムで共有されていた場合には（ステップ２０１３３の結果が「１」）、当該ファイルは単独のシステムで利用されるため、共有フラグをｆａｌｓｅに設定する（ステップ２０７０）。
【００８９】
以上の処理が終了すると、ＣＰＵ１０３は、ハッシュ生成部２０４によって、書き込み対象のファイルのハッシュ値を生成する（ステップ２０４０）。ハッシュ生成部２０４による処理の詳細については、図１３Ａにて後述する。生成されたハッシュ値は、変数ｈａｓｈに代入される。
【００９０】
さらに、ＣＰＵ１０３は、更新後のファイルのハッシュ値と一致するファイル、すなわち、更新後のファイルと内容が同じファイルを探索し、探索結果を変数ｒｅｔに格納する（ステップ２０３０）。
【００９１】
ＣＰＵ１０３は、変数ｒｅｔの値を評価し、更新後のファイルと内容が同じファイルが存在するか否かを判定する（ステップ２０１３４）。
【００９２】
ＣＰＵ１０３は、更新後のファイルと内容が同じファイルが存在する場合には（ステップ２０１３４の結果が「存在する」）、共有される既存のファイルのファイル情報の共有フラグ３０１４にｔｒｕｅを設定する（ステップ２０７０）。その後、本処理を終了する。なお、この場合には新たに更新後のファイルを格納する必要がない。このように動的にファイルを共有することによって、ファイルを格納するための容量を最小限に抑えることができる。
【００９３】
ＣＰＵ１０３は、更新後のファイルと内容が同じファイルが存在しない場合には（ステップ２０１３４の結果が「存在しない」）、ディスク装置１０４のファイル保存部１０９に当該ファイルを格納する（ステップ２０５０）。さらに、ファイルマッピングテーブル３０１の対応するファイル情報の位置情報３０１２を更新する（ステップ２０６０）。さらに、ステップ２０４０の処理で生成されたハッシュ値を当該ファイル情報のハッシュ値３０１３に設定する（ステップ２０８０）。その後、本処理を終了する。
【００９４】
なお、ファイルの書き込み処理では、書き込み後のファイルが共有されるか否かを判定する前に、一旦、ファイル保存部１０９の新たな領域に書き込み、当該ファイルの書き込み処理の要求元に応答するように処理してもよい。この場合には、要求元に応答した後、ファイルが共有されるか否かを判定する。
【００９５】
具体的には、ファイルの書き込み処理が開始されると、ＣＰＵ１０３は、まず、ファイル保存部１０９に新たな領域を割り当てて書き込み後のファイル（ｄａｔａ）を格納し（ステップ２０５０）、ファイルマッピングテーブル３０１の対応するファイル情報を更新する。具体的には、共有フラグ３０１４をｆａｌｓｅに設定する。
【００９６】
その後、ＣＰＵ１０３は、図９Ａのステップ２０２０から図９Ｂのステップ２０３０までの処理を順次実行し、書き込み後のファイルと同一のファイルが存在するか否かを判定する（ステップ２０１３４）。
【００９７】
ＣＰＵ１０３は、書き込み後のファイルと同一のファイルが存在しなかった場合には（ステップ２０１３４の結果が「存在しない」）、ファイルマッピングテーブル３０１の対応するファイル情報の位置情報３０１２を設定する（ステップ２０６０）。なお、ファイル保存部１０９に更新後のファイルを格納したタイミングで、書き込み後のファイルの位置情報３０１２を設定するようにしてもよい。さらに、ファイルマッピングテーブル３０１のハッシュ値３０１３をステップ２０４０の処理で生成されたハッシュ値に更新する（ステップ２０８０）。
【００９８】
一方、ＣＰＵ１０３は、書き込み後のファイルと同一のファイルが存在した場合には（ステップ２０１３４の結果が「存在する」）、ステップ２０７０及びステップ２０６０の処理を実行し、既に格納されている書き込み後のファイルをファイル保存部１０９から削除する。
【００９９】
こうすることによって、ファイルの書き込み頻度が多い場合であっても、ハッシュ計算などを実行せずにファイルの書き込み要求元に応答することができるため、ファイル書き込み時のオーバヘッドを削減することができる。さらに、要求元に応答した後の処理を別のプロセスで実行したり、ＣＰＵ１０３の負荷が小さいタイミングで実行したりすることによって、サーバ装置１０１の負荷を分散させることができる。
【０１００】
図１０は、本発明の第１の実施の形態のファイルの読み出し処理（ステップ２０１４）の手順を示すフローチャートである。
【０１０１】
ＣＰＵ１０３は、まず、読み出し処理が実行されると、ファイル情報取得部２０２によって、読み出し対象のファイルに対応するファイル情報を取得し、結果を変数ｒｅｔに代入する（ステップ２０２０）。
【０１０２】
ＣＰＵ１０３は、ステップ２０２０の処理で取得されたファイル情報の位置情報３０１２を指定してファイルシステムアクセス処理を実行し、ディスク装置１０４のファイル保存部１０９からファイルの内容を取得して変数ｄａｔａに代入する（ステップ２０５０）。最後に、返り値に変数ｄａｔａの値を設定し、呼び出し元に応答する（ステップ２０１４１）。
【０１０３】
図１１は、本発明の第１の実施の形態のファイル情報取得部２０２による処理（ステップ２０２０）の手順を示すフローチャートである。
【０１０４】
ＣＰＵ１０３は、システム名（ｓｙｓｎａｍｅ）及びファイル名（ｆｉｌｅｎａｍｅ）を受け付け、ファイルマッピングテーブル３０１から指定されたシステムに対応するレコードセットを取得する（ステップ２０２１）。
【０１０５】
ＣＰＵ１０３は、ステップ２０２１の処理で取得されたレコードに、指定されたファイル名に対応するファイル情報（セルセット）が存在するか否かを判定する（ステップ２０２２）。
【０１０６】
ＣＰＵ１０３は、対応するファイル名が存在する場合には（ステップ２０２２の結果が「存在する」）、当該ファイルに対応するセルセット（位置情報３０１２、ハッシュ値３０１３、共有フラグ３０１４）を返り値（ｒｅｔ）に設定する（ステップ２０２３）。一方、対応するファイル名が存在しない場合には（ステップ２０２２の結果が「存在しない」）、返り値（ｒｅｔ）に−１を設定する（ステップ２０２４）。
【０１０７】
図１２は、本発明の第１の実施の形態の同一ハッシュ探索部２０３による処理（ステップ２０３０）の手順を示すフローチャートである。
【０１０８】
ＣＰＵ１０３は、ファイル名（ｆｉｌｅｎａｍｅ）及びハッシュ値（ｈａｓｈ）を受け付け、ファイルマッピングテーブル３０１の指定されたファイル名に対応する列を探索し、受け付けたハッシュ値とハッシュ値３０１３が一致するセルセットを取得する（ステップ２０３１）。
【０１０９】
ＣＰＵ１０３は、ステップ２０３１の処理でセルセットが取得されたか否かを判定する（ステップ２０３２）。セルセットが取得された場合には（ステップ２０３２の結果が「Ｙ」）、取得したセルセットを配列変数に代入して返り値（ｒｅｔ）に設定する（ステップ２０３３）。一方、セルセットが取得されなかった場合には（ステップ２０３２の結果が「Ｎ」）、返り値（ｒｅｔ）に０を設定する（ステップ２０３４）。
【０１１０】
図１３Ａは、本発明の第１の実施の形態のハッシュ生成部２０４による処理（ステップ２０４０）の手順を示すフローチャートである。
【０１１１】
ＣＰＵ１０３は、ファイルの内容（ｄａｔａ）を受け付け、ハッシュ値（ｈａｓｈ）を生成する（ステップ２０４１）。前述したように、従来技術に基づいてハッシュ値を生成すればよい。ハッシュ値が生成されると、生成されたハッシュ値（ｈａｓｈ）を返り値に設定し、本処理の呼び出し元に応答する（ステップ２０４２）。
【０１１２】
ここで、ハッシュの生成についてさらに説明すると、本発明の第１の実施の形態のようにハッシュによってファイルを識別する場合には、ハッシュ値の桁数（ハッシュ長）を適切に設定しなければならない。ハッシュ長が長い場合にはハッシュ値の生成及び検索に要する時間が増大するが、異なるファイルに対して同じハッシュ値が生成される可能性が低くなる。一方、ハッシュ長を短くすると、ハッシュ値の生成及び検索に要する時間は短くなるが、異なるファイルに同じハッシュ値が設定される可能性が高くなる。
【０１１３】
そこで、ファイルごとに異なるハッシュ長を設定可能であることを利用して、ハッシュ値の桁数（ハッシュ長）をファイルサイズごとに決定するようにしてもよい。通常、ファイルサイズが大きいほどファイルが取りうる状態のバリエーションが多く、ファイルサイズが小さいほど少なくなる。そこで、ファイルサイズの平均に基準となるハッシュ長を対応させ、ファイルサイズに応じてハッシュ長を変更する。具体的には、ファイルサイズが大きいほどハッシュ長が長くなるように設定し、小さいほど短くなるように設定すればよい。
【０１１４】
また、サーバ装置１０１が提供する環境（システム）の数に応じてハッシュ長を設定するようにしてもよい。システムの数が多ければ多いほど同じハッシュ値が生成される可能性が高いため、システムの数が多いほどハッシュ長を長くする。  図１３Ｂは、本発明の第１の実施の形態のファイルシステムアクセス部２０５による処理（ステップ２０５０）の手順を示すフローチャートである。
【０１１５】
ＣＰＵ１０３は、処理のタイプ（ｔｙｐｅ）、位置情報（ｐｏｓｉｔｉｏｎ）及びデータ（ｄａｔａ）を受け付け、処理のタイプに応じて処理を分岐させる（ステップ２０５１）。処理のタイプには、データの書き込み（ｗｒｉｔｅ）又はデータの読み出し（ｒｅａｄ）が含まれる。なお、データを新たに書き込む場合には、ファイルシステムによって空き領域を特定し、特定された空き領域にデータを書き込むため、位置情報を設定する必要はない。例えば、位置情報にＮＵＬＬ値を設定してもよいし、新規書き込みであることを明示するために、位置情報に“ｎｅｗ”と設定するようにしてもよい。
【０１１６】
ＣＰＵ１０３は、処理のタイプが書き込み要求の場合には（ステップ２０５１の結果が「ｗｒｉｔｅ」）、受け付けられたデータの書き込みをファイルシステムに要求する（ステップ２０５２）。さらに、データが書き込まれた位置を返り値に設定する（ステップ２０５４）。
【０１１７】
一方、ＣＰＵ１０３は、処理のタイプが読み出し要求の場合には（ステップ２０５１の結果が「ｒｅａｄ」）、受け付けられた位置情報を指定して、ファイルシステムにデータの読み出しを要求する（ステップ２０５３）。さらに、読み出されたデータを変数ｄａｔａに代入する。最後に、返り値にｄａｔａの値を設定する（ステップ２０５５）。
【０１１８】
図１３Ｃは、本発明の第１の実施の形態の位置情報設定部２０６による処理（ステップ２０６０）の手順を示すフローチャートである。
【０１１９】
ＣＰＵ１０３は、システム名（ｓｙｓｎａｍｅ）、ファイル名（ｆｉｌｅｎａｍｅ）及び指定されたファイルの位置情報を示す値（ｖａｌｕｅ）を受け付ける。そして、受け付けられたシステム名及びファイル名に基づいて、ファイルマッピングテーブル３０１のファイル情報（セルセット）を特定し、位置情報３０１２に受け付けられた値を保存する（ステップ２０６１）。
【０１２０】
図１３Ｄは、本発明の第１の実施の形態の共有フラグ設定部２０７による処理（ステップ２０７０）の手順を示すフローチャートである。
【０１２１】
ＣＰＵ１０３は、システム名（ｓｙｓｎａｍｅ）、ファイル名（ｆｉｌｅｎａｍｅ）及び指定されたファイルを共有するか否かを示す値（ｖａｌｕｅ）を受け付ける。そして、受け付けられたシステム名及びファイル名に基づいて、ファイルマッピングテーブル３０１のファイル情報（セルセット）を特定し、共有フラグ３０１４に受け付けられた値を保存する（ステップ２０７１）。
【０１２２】
図１３Ｅは、本発明の第１の実施の形態のハッシュ値設定部２０８による処理（ステップ２０８０）の手順を示すフローチャートである。
【０１２３】
ＣＰＵ１０３は、システム名（ｓｙｓｎａｍｅ）、ファイル名（ｆｉｌｅｎａｍｅ）及び指定されたファイルに対応するハッシュ値（ｖａｌｕｅ）を受け付ける。そして、受け付けられたシステム名及びファイル名に基づいて、ファイルマッピングテーブル３０１のファイル情報（セルセット）を特定し、ハッシュ値３０１３に受け付けられた値を保存する（ステップ２０８１）。
【０１２４】
以上に示した処理によって、ディスク容量を節約しながら、共有されたファイルを読み書きすることができる。以下、本発明の第１の実施の形態のファイル管理システムを管理する手順について、図１４から図１９を参照しながら説明する。
【０１２５】
図１４は、本発明の第１の実施の形態のマッピングシステム制御コマンド受付部４０１による処理の手順を示すフローチャートである。
【０１２６】
ＣＰＵ１０３は、マッピングシステム制御コマンド受付部４０１によって、コマンド（ｃｏｍｍａｎｄ）及び制御対象のシステム名（ｓｙｓｎａｍｅ）の入力を受け付ける。さらに、受け付けたコマンドに応じて処理を分岐する（ステップ４０１１）。
【０１２７】
本発明の第１の実施の形態では、受け付けられるコマンドには、次回起動するシステムを設定するための「次回システム設定」、システムを削除するための「システム削除」、現在のシステムを設定されている次回システムに切り替えるための「システム切替」、システムを複製するための「システム複製」が指定される。なお、これ以外も必要に応じてコマンドを追加してもよい。
【０１２８】
ＣＰＵ１０３は、受け付けられたコマンドが「次回システム設定」の場合には（ステップ４０１１の結果が「次回システム設定」）、次回システム設定処理を実行する（ステップ４０１２）。このとき、受け付けられたシステム名には、次回起動されるシステムの名称が設定されている。次回システム設定処理の詳細については、図１５にて後述する。
【０１２９】
ＣＰＵ１０３は、受け付けられたコマンドが「システム削除」の場合には（ステップ４０１１の結果が「システム削除」）、システム削除処理を実行する（ステップ４０１３）。このとき、受け付けられたシステム名には、削除対象のシステムの名称が設定される。システム削除処理の詳細については、図１６にて後述する。
【０１３０】
ＣＰＵ１０３は、受け付けられたコマンドが「システム切替」の場合には（ステップ４０１１の結果が「システム切替」）、システム切替処理を実行する（ステップ４０１４）。システム切替処理の詳細については、図１７Ａにて後述する。
【０１３１】
ＣＰＵ１０３は、受け付けられたコマンドが「システム複製」の場合には（ステップ４０１１の結果が「システム複製」）、システム複製処理を実行する（ステップ４０１５）。このとき、受け付けられたシステム名には、複製元のシステムの名称が設定される。システム複製処理の詳細については、図１７Ｂにて後述する。なお、複製先のシステム名については、システム複製処理において入力が要求されるようになっているが、本処理において引数として複製先のシステムの入力を受け付け、システム複製処理を実行するようにしてもよい。
【０１３２】
図１５は、本発明の第１の実施の形態の次回システム設定処理（ステップ４０１２）の手順を示すフローチャートである。
【０１３３】
本発明の第１の実施の形態では、システムを切り替えるためには、次回実行するシステムを設定する必要がある。具体的には、システム保存部３０２の次回システム３０２２に次回起動するシステムを設定する。本処理は、次回起動するシステムを設定するための処理である。
【０１３４】
ＣＰＵ１０３は、まず、次回起動するシステムのシステム名の入力を受け付け、当該システム名を有するシステムが存在するか否かを確認する（ステップ４０２０）。システム存在確認処理の詳細については、図１８Ａにて後述する。
【０１３５】
ＣＰＵ１０３は、ステップ４０２０の処理の結果に基づいて、指定されたシステムが存在するか否かを判定する（ステップ４０１２１）。指定されたシステムが存在しない場合には（ステップ４０１２１の結果が「存在しない」）、返り値に−１を設定し（ステップ４０１２２）、本処理を終了する。
【０１３６】
ＣＰＵ１０３は、指定されたシステムが存在する場合には（ステップ４０１２１の結果が「存在する」）、システム操作処理を実行する（ステップ４０３０）。ここで実行されるシステム操作処理は、システム保存部３０２の次回システム３０２２に、指定されたシステム名を書き込む処理である。システム操作処理の詳細については、図１９にて後述する。さらに、返り値に０を設定し（ステップ４０１２３）、本処理を終了する。
【０１３７】
図１６は、本発明の第１の実施の形態のシステム削除処理（ステップ４０１３）の手順を示すフローチャートである。
【０１３８】
システム削除処理において、ＣＰＵ１０３は、まず、システム名を受け付け、当該システムの存在を確認し、結果を変数ｒｅｔに代入する（ステップ４０２０）。
【０１３９】
ＣＰＵ１０３は、変数ｒｅｔの値を評価し、指定されたシステムが存在するか否かを判定する（ステップ４０１３１）。指定されたシステムが存在しない場合には（ステップ４０１３１の結果が「存在しない」）、処理が失敗したことを示す値である−１を返り値に設定し（ステップ４０１３４）、本処理を終了する。
【０１４０】
一方、ＣＰＵ１０３は、指定されたシステムが存在する場合には（ステップ４０１３１の結果が「存在する」）、システム操作処理を実行し、システム保存部３０２から現在システム３０２１の値を取得し、変数ｒｅｔに設定する（ステップ４０３０）。
【０１４１】
さらに、ＣＰＵ１０３は、変数ｒｅｔの値と指定されたシステムとが等しいか否かを判定する（ステップ４０１３２）。現在実行中のシステムを削除することはできないため、変数ｒｅｔの値と指定されたシステムとが等しい場合には（ステップ４０１３２の結果が「等しい」）、返り値に−１を設定し（ステップ４０１３４）、本処理を終了する。
【０１４２】
ＣＰＵ１０３は、変数ｒｅｔの値と指定されたシステムとが等しくない場合には（ステップ４０１３２の結果が「等しくない」）、システム操作処理を実行し、システム保存部３０２から次回システム３０２２の値を取得し、変数ｒｅｔに設定する（ステップ４０３０）。
【０１４３】
次回システムと指定されたシステムとを比較するのは、次回実行予定のシステムを削除することによって、システムを切替又は再起動することができなくなることを防ぐためである。すなわち、次回システムに設定されているシステムを削除する場合には、次回システムを再設定してからシステムを削除する必要がある。なお、削除対象のシステムに次回システムが指定された場合には、現在システム３０２１の値を次回システム３０２２の値に設定するなどして削除を許可するようにしてもよい。
【０１４４】
したがって、ＣＰＵ１０３は、変数ｒｅｔの値と指定されたシステムとが等しい場合には（ステップ４０１３３の結果が「等しい」）、返り値に−１を設定し（ステップ４０１３４）、本処理を終了する。
【０１４５】
ＣＰＵ１０３は、変数ｒｅｔの値と指定されたシステムとが等しくない場合には（ステップ４０１３３の結果が「等しくない」）、システム削除部４０５によって、指定されたシステムを削除する（ステップ４０５０）。システム削除部４０５による処理の詳細については、図１８Ｃにて後述する。最後に、システムの削除処理が成功したことを意味する値０を返り値に設定し（ステップ４０１３５）、本処理を終了する。
【０１４６】
図１７Ａは、本発明の第１の実施の形態のシステム切替処理（ステップ４０１４）の手順を示すフローチャートである。
【０１４７】
ＣＰＵ１０３は、システム操作部４０３によって、まず、システム保存部３０２から次回システム３０２２を取得し、取得されたシステム名を変数ｓｙｓｎａｍｅに代入する（ステップ４０３０）。
【０１４８】
ＣＰＵ１０３は、さらに、ｓｙｓｎａｍｅに設定された次回システムのシステム名を、システム保存部３０２の現在システム３０２１に設定する(ステップ４０３０)。
【０１４９】
以上の処理が終了した後、メモリに常駐しているプログラムなどを切替後のシステムの対応するプログラムと切り替えることによって、システムを切り替えることができる。メモリ内のプログラムの切替ができない場合には、必要に応じてシステムを再起動することによってシステムを切り替えればよい。
【０１５０】
図１７Ｂは、本発明の第１の実施の形態のシステム複製処理（ステップ４０１５）の手順を示すフローチャートである。
【０１５１】
システム複製処理において、ＣＰＵ１０３は、まず、指定された複製元のシステムが存在するか否かを確認し、結果を変数ｒｅｔに代入する（ステップ４０２０）。
【０１５２】
さらに、ＣＰＵ１０３は、変数ｒｅｔの値を評価し、指定されたシステムが存在するか否かを判定する（ステップ４０１５１）。指定されたシステムが存在しない場合には（ステップ４０１５１の結果が「存在しない」）、返り値に−１を設定し（ステップ４０１５２）、本処理を終了する。
【０１５３】
一方、ＣＰＵ１０３は、指定されたシステムが存在する場合には（ステップ４０１５１の結果が「存在する」）、指定されたシステム名を引数として、システム複製部４０４によって、指定されたシステムを複製する（ステップ４０４０）。システム複製部４０４による処理の詳細については、図１８Ｂにて後述する。さらに、返り値に０を設定し（ステップ４０１５３）、本処理を終了する。
【０１５４】
図１８Ａは、本発明の第１の実施の形態のシステム存在確認部４０２による処理（ステップ４０２０）の手順を示すフローチャートである。
【０１５５】
ＣＰＵ１０３は、指定されたシステムがサーバ装置１０１によって提供されるシステムとして存在するか否か判定する（ステップ４０２１）。具体的には、ファイルマッピングテーブル３０１に、指定されたシステム名に対応するレコードセットが含まれているか否かを判定する。対応するレコードセットが存在する場合には返り値ｒｅｔに指定されたシステムが存在することを示す値を設定する。
【０１５６】
図１８Ｂは、本発明の第１の実施の形態のシステム複製部４０４による処理（ステップ４０４０）の手順を示すフローチャートである。
【０１５７】
ＣＰＵ１０３は、まず、複製先のシステム名（ｎｅｗｎａｍｅ）の入力を受け付ける（ステップ４０４１）。さらに、ファイルマッピングテーブル３０１から、入力されたシステム名を探索し、存在するか否かを示す値を変数ｒｅｔに設定する（ステップ４０４２）。
【０１５８】
ＣＰＵ１０３は、変数ｒｅｔの値を評価し、入力されたシステム名がファイルマッピングテーブル３０１に存在するか否かを判定する（ステップ４０４３）。入力されたシステム名が既にファイルマッピングテーブル３０１に存在する場合には（ステップ４０４３の結果が「存在する」）、システムを複製することができないため、返り値に−１を設定し（ステップ４０４６）、本処理を終了する。
【０１５９】
一方、ＣＰＵ１０３は、入力されたシステム名がファイルマッピングテーブル３０１に存在しない場合には（ステップ４０４３の結果が「存在しない」）、指定された複製元のシステムに対応するレコードをファイルマッピングテーブル３０１から取得し、取得されたレコードセットに入力されたシステム名を設定し、新たなレコードセットを登録する（ステップ４０４４）。最後に、返り値に０を設定し（ステップ４０４５）、本処理を終了する。
【０１６０】
図１８Ｃは、本発明の第１の実施の形態のシステム削除部４０５による処理（ステップ４０５０）の手順を示すフローチャートである。
【０１６１】
ＣＰＵ１０３は、指定されたシステム名に対応するレコードをファイルマッピングテーブル３０１から削除する（ステップ４０５１）。このとき、削除されたシステムで利用されるファイルであって、他のシステムに共有されていないファイルを削除してもよい。また、指定されたシステムが削除されたことによって、他のシステムが単独でファイルを利用することになった場合には、対応するセルセットの共有フラグをｔｒｕｅからｆａｌｓｅに変更する。
【０１６２】
具体的な処理としては、削除するシステムに対応するレコードに含まれるすべてのファイルについて、共有フラグ３０１４の値を取得する。共有フラグの値がｆａｌｓｅの場合には、対応するファイルを削除する。
【０１６３】
一方、共有フラグ３０１４の値がｔｒｕｅの場合には、他に共有しているシステムの数を取得する。他に共有しているシステムの数が２以上の場合には、他のシステムのファイル情報を変更する必要はない。他に共有しているシステムの数が１の場合には、対応するファイル情報の共有フラグ３０１４の値をｔｒｕｅからｆａｌｓｅに変更する。これらの処理については、図９Ａに示したステップ２０７０１からステップ２０７０２までの処理と同様である。
【０１６４】
図１９は、本発明の第１の実施の形態のシステム操作部４０３による処理（ステップ４０３０）の手順を示すフローチャートである。
【０１６５】
システム操作部４０３による処理は、システム保存部３０２に格納された情報を読み書きするための処理である。
【０１６６】
ＣＰＵ１０３は、操作種別、変更対象のシステムを示す値（現在又は次回）、及びシステム名（ｓｙｓｎａｍｅ）を受け付け、操作種別によって処理を分岐させる（ステップ４０３１）。
【０１６７】
ＣＰＵ１０３は、操作種別が書き込みの場合には（ステップ４０３１の結果が「ｗｒｉｔｅ」）、さらに、操作対象のシステムが現在システムか次回システムかを判定する（ステップ４０３２１）。
【０１６８】
ＣＰＵ１０３は、対象のシステムが現在の場合には（ステップ４０３２１の結果が「現在」）、システム保存部３０２の現在システム３０２１に、指定されたシステム名を設定する（ステップ４０３３）。一方、対象のシステムが次回の場合には（ステップ４０３２１の結果が「次回」）、システム保存部３０２の次回システム３０２２に、指定されたシステム名を設定する（ステップ４０３４）。
【０１６９】
ＣＰＵ１０３は、操作種別が読み出しの場合には（ステップ４０３１の結果が「ｒｅａｄ」）、さらに、操作対象のシステムが現在システムか次回システムかを判定する（ステップ４０３２２）。
【０１７０】
ＣＰＵ１０３は、対象のシステムが現在システムの場合には（ステップ４０３２２の結果が「現在」）、システム保存部３０２の現在システム３０２１からシステム名を取得し（ステップ４０３５）、返り値に取得されたシステム名を設定する（ステップ４０３７）。
【０１７１】
一方、対象のシステムが次回システムの場合には（ステップ４０３２２の結果が「次回」）、システム保存部３０２の次回システム３０２２からシステム名を取得し（ステップ４０３６）、返り値に取得されたシステム名を設定する（ステップ４０３７）。
【０１７２】
以上の処理によって、サーバ装置１０１で実行されるシステムを切り替えることができる。さらに、サーバ装置１０１が提供するシステムの追加又は削除を行うことができる。
【０１７３】
本発明の第１の実施の形態によれば、ファイルの更新などによって、ファイルの共有状態を動的に変更することによって、ディスク容量を節約することができる。例えば、更新後のファイルと一致するファイルの存在を逐次判定するため、スナップショットのように同期点以降にファイルが更新されると、同じファイルであっても別々に保存されることがない。また、ハッシュを利用してファイルの内容を比較しているため、短時間でファイルを比較することができる。
【０１７４】
また、本発明の第１の実施の形態によれば、システムの複製によって、環境ごとに共通のファイルをインストールする必要がなく、環境を構築するために必要なコストを削減することができる。例えば、各システムのオペレーティングシステム（ＯＳ）が共通であって、ミドルウェアなどのアプリケーションの一部が相違する環境を複数構築する必要が場合にさらに高い効果を発揮することができる。また、システム開発におけるテスト環境を構築する場合以外にも、例えば、学校などで複数の学生が教育用に計算機を同時に利用する環境を構築する場合にも本発明は有効である。
【０１７５】
さらに、本発明の第１の実施の形態によれば、ソフトウェア開発におけるテスト環境に利用すると、システム間で相違するファイルの特定が容易になるため、環境に依存した不具合の原因究明などに役立てることができる。
【０１７６】
（第２の実施の形態）
本発明の第２の実施の形態では、本発明を仮想計算機に適用する。第２の実施の形態のサーバ装置では、１以上の仮想計算機が稼動し、各仮想計算機上でシステムが提供されている。
【０１７７】
なお、第２の実施の形態の説明では、第１の実施の形態と共通する構成及び処理については、同一の符号を付与して説明を省略する。
【０１７８】
図２０は、本発明の第２の実施の形態のファイル管理システムを実現する計算機システムのハードウェア及びソフトウェアの構成を示すブロック図である。
【０１７９】
本発明の第２の実施の形態の計算機システムは、仮想計算機を制御する管理計算機２０００、仮想計算機が稼動するサーバ装置１０１、及びディスク装置１０４を含む。管理計算機２０００及びサーバ装置１０１は、ネットワークなどを介して接続される。
【０１８０】
管理計算機２０００は、メモリ２００２、ＣＰＵ２００３及びインタフェース２０１３を備える。メモリ２００２、ＣＰＵ２００３及びインタフェース２０１３は、内部バスによって接続されている。
【０１８１】
メモリ２００２は、ＣＰＵ２００３によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。具体的には、リモート管理部１１１が記憶される。
【０１８２】
リモート管理部１１１は、サーバ装置１０１で稼動している複数の仮想計算機によって提供されるシステムをネットワーク経由でリモート管理するためのプログラム及びデータである。
【０１８３】
リモート管理部１１１には、マッピングシステム制御コマンド受付部２４０１、システム存在確認部４０２、システム複製部４０４、システム削除部４０５及び仮想計算機管理テーブル操作部４０６を含む。リモート管理部１１１の各構成の詳細については、図２２にて後述する。
【０１８４】
ＣＰＵ２００３は、メモリ２００２に記憶されたプログラムを実行することによって、要求された処理を実行する。インタフェース２０１３は、外部に接続するためのインタフェースである。
【０１８５】
第２の実施の形態のサーバ装置１０１は、第１の実施の形態と同様に、メモリ１０２、ＣＰＵ１０３、ディスク装置１０４及びインタフェース１１３を備える。メモリ１０２、ＣＰＵ１０３、ディスク装置１０４及びインタフェース１１３は、内部バスによって接続されている。
【０１８６】
メモリ１０２は、ＣＰＵ１０３によって実行されるプログラム及び当該プログラムの実行に必要なデータを記憶する。メモリ１０２に記憶されるプログラム及びデータは、ディスク装置１０４に格納されたプログラム及びデータがロードされたものであってもよい。この際、ディスク装置１０４のキャッシュには共通部を含むデータがロードされるため、複数の仮想計算機で共通の情報は高速で読み出せるようになる。
【０１８７】
メモリ１０２には、ハイパバイザ１１７が記憶される。ハイパバイザとは、仮想計算機を実行するための制御プログラムである。ハイパバイザ１１７には、仮想化に対応したファイルマッピング制御部２１０６及びマッピング情報管理部１０７が実行され、仮想計算機管理テーブル１１２が記憶される。
【０１８８】
ファイルマッピング制御部２１０６の機能は、仮想計算機に対応している点を除いて、第１の実施の形態のファイルマッピング制御部１０６と同様である。ファイルマッピング制御部２１０６の詳細については、図２１にて後述する。
【０１８９】
マッピング情報管理部１０７は、第１の実施の形態と同様に、ファイルマッピングテーブル３０１を含む。システム保存部３０２は、仮想計算機ごとに現在実行されているシステムと次回実行されるシステムを格納できるようになっており、後述する仮想計算機管理テーブル１１２と実質的に同じである。
【０１９０】
仮想計算機管理テーブル１１２は、仮想計算機ごとに、現在実行しているシステム及び次回起動するシステムが定義される。仮想計算機管理テーブル１１２の詳細については、図２９にて後述する。
【０１９１】
ＣＰＵ１０３は、メモリ１０２に記憶されたプログラムを実行することによって、要求された処理を実行する。インタフェース１１３は、管理計算機２０００などに接続するためのインタフェースである。
【０１９２】
ディスク装置１０４は、第１の実施の形態と同様に、プログラム及びデータを格納する。具体的には、ファイル保存部１０９及びマッピング情報保存部１１０が格納される。なお、ディスク装置１０４は、サーバ装置１０１に含まれる構成としてもよいし、ネットワークを介してサーバ装置１０１に接続される構成としてもよい。
【０１９３】
図２１は、本発明の第２の実施の形態の仮想化対応したファイルマッピング制御部２１０６の構成を示す図である。
【０１９４】
ファイルマッピング制御部１０６には、ファイル入出力監視部２２０１、ファイル情報取得部２０２、同一ハッシュ探索部２０３、ハッシュ生成部２０４、ファイルシステムアクセス部２０５、位置情報設定部２０６、共有フラグ設定部２０７及びハッシュ値設定部２０８が含まれる。
【０１９５】
ファイル入出力監視部２２０１は、ファイルの入出力要求を受け付け、ファイルの入出力要求に応じた処理を実行する。ファイル入出力監視部２２０１による処理の詳細については、図２３にて後述する。
【０１９６】
ファイル情報取得部２０２、同一ハッシュ探索部２０３、ハッシュ生成部２０４、ファイルシステムアクセス部２０５、位置情報設定部２０６、共有フラグ設定部２０７及びハッシュ値設定部２０８は、第１の実施の形態と同じである。
【０１９７】
図２２は、本発明の第２の実施の形態のリモート管理部１１１の構成を示す図である。
【０１９８】
リモート管理部１１１は、第１の実施の形態のマッピング情報制御部１０８に対応し、前述のように、サーバ装置１０１で稼動している仮想計算機及び当該仮想計算機によって提供されているシステムを管理する。
【０１９９】
リモート管理部１１１は、第１の実施の形態のマッピング情報制御部１０８と同様に、システム存在確認部４０２、システム複製部４０４及びシステム削除部４０５が含まれる。さらに、マッピングシステム制御コマンド受付部２４０１及び仮想計算機管理テーブル操作部４０６が含まれている。
【０２００】
第２の実施の形態のマッピングシステム制御コマンド受付部２４０１は、サーバ装置１０１で稼動している仮想計算機又は当該仮想計算機によって提供されているシステムに対する制御コマンドの入力を受け付ける。マッピングシステム制御コマンド受付部２４０１は、第１の実施の形態ではサーバ装置１０１に含まれていたが、サーバ装置１０１で稼動している複数の仮想計算機を制御するため、第２の実施の形態では、管理計算機２０００で実行される。マッピングシステム制御コマンド受付部２４０１による処理の詳細については、図２４にて後述する。
【０２０１】
仮想計算機管理テーブル操作部４０６は、第１の実施の形態のシステム操作部４０３に対応する。システム操作部４０３では、現在又は次回のシステムの識別情報を読み書きしていたが、仮想計算機管理テーブル操作部４０６では、さらに仮想計算機の指定を受け付ける。
【０２０２】
システム存在確認部４０２、システム複製部４０４及びシステム削除部４０５については、第１の実施の形態と同様である。
【０２０３】
図２３は、本発明の第２の実施の形態のファイル入出力監視部２２０１による処理の手順を示すフローチャートである。
【０２０４】
本発明の第２の実施の形態では、第１の実施の形態と同様に、ユーザからのファイルアクセス要求が監視されている。ハイパバイザ１１７上で実行されているファイル入出力監視部２２０１によってファイルアクセス要求が検知されると、まず、ファイルアクセス要求に対応するシステムを特定する。さらに、処理対象のファイルの実際の格納位置を特定し、当該ファイルの書き込み処理又は読み出し処理を実行する。システムの特定に仮想計算機の識別情報が必要となる点を除いて、第１の実施の形態のファイル入出力監視部２０１による処理と同様である。
【０２０５】
ＣＰＵ１０３は、ファイル入出力監視部２２０１によって、ユーザからのファイルアクセス要求が検知されると、ファイルアクセスが要求された仮想計算機の識別情報に基づいて、仮想計算機管理テーブルから現在実行されているシステム名を取得する（ステップ２０１１Ｂ）。
【０２０６】
ＣＰＵ１０３は、ファイルアクセス要求が書き込み要求か読み出し要求かを判定し（ステップ２０１２）、書き込み処理（ステップ２０１３）又は読み出し処理（ステップ２０１４）を実行する。
【０２０７】
ステップ２０１３の書き込み処理は、システム名（ｓｙｓｎａｍｅ）、ファイル名（ｆｉｌｅｎａｍｅ）及び更新内容（ｄａｔａ）が引数として実行される。一方、ステップ２０１４の読み出し処理は、システム名（ｓｙｓｎａｍｅ）及びファイル名（ｆｉｌｅｎａｍｅ）を引数とし、返り値に読み出された内容が格納される。
【０２０８】
ファイルの書き込み処理（ステップ２０１３）又は読み出し処理（ステップ２０１４）が終了すると、本処理は終了する。
【０２０９】
図２４は、本発明の第２の実施の形態のマッピングシステム制御コマンド受付部２４０１による処理の手順を示すフローチャートである。
【０２１０】
ＣＰＵ２００３は、マッピングシステム制御コマンド受付部２４０１によって、コマンド（ｃｏｍｍａｎｄ）、制御対象のシステム名（ｓｙｓｎａｍｅ）及び仮想計算機の識別情報（ｍａｃｈｉｎｅ）の入力を受け付ける。さらに、受け付けたコマンドに応じて処理を分岐する（ステップ４０１１）。
【０２１１】
本発明の第２の実施の形態では、各仮想計算機に対し、第１の実施の形態と同様に、「次回システム設定」、「システム削除」、「システム切替」及び「システム複製」が指定される。さらに、「仮想計算機の作成（追加）」及び「仮想計算機の削除」を指定することができる。仮想計算機の作成及び削除は、サーバ装置１０１で稼動している仮想計算機を新たに作成したり、不要となった仮想計算機を削除したりする。
【０２１２】
ＣＰＵ２００３は、受け付けられたコマンドが「次回システム設定」の場合には（ステップ４０１１の結果が「次回システム設定」）、第１の実施の形態と同様に、次回システム設定処理を実行する（ステップ４０１２Ｂ）。このとき、次回起動されるシステムの名称の他に、当該システムが稼働する仮想計算機の識別情報も入力される。次回システム設定処理の詳細については、図２５にて後述する。
【０２１３】
ＣＰＵ２００３は、受け付けられたコマンドが「システム削除」の場合には（ステップ４０１１の結果が「システム削除」）、システム削除処理を実行する（ステップ４０１３Ｂ）。このとき、削除対象のシステムの名称の他に、当該システムが稼働する仮想計算機の識別情報も入力される。システム削除処理の詳細については、図２６にて後述する。
【０２１４】
ＣＰＵ２００３は、受け付けられたコマンドが「システム切替」の場合には（ステップ４０１１の結果が「システム切替」）、システム切替処理を実行する（ステップ４０１４Ｂ）。このとき、システムを切り替える対象となる仮想計算機が指定される。システム切替処理の詳細については、図２７Ａにて後述する。
【０２１５】
ＣＰＵ２００３は、受け付けられたコマンドが「システム複製」の場合には（ステップ４０１１の結果が「システム複製」）、システム複製処理を実行する（ステップ４０１５Ｂ）。システム複製処理の手順については、第１の実施の形態と同様である。
【０２１６】
ＣＰＵ２００３は、受け付けられたコマンドが「仮想計算機作成」の場合には（ステップ４０１１の結果が「仮想計算機作成」）、サーバ装置１０１に新たに仮想計算機を追加する（ステップ４０１６）。仮想計算機追加処理の詳細については、図２７Ｂにて後述する。
【０２１７】
ＣＰＵ２００３は、受け付けられたコマンドが「仮想計算機削除」の場合には（ステップ４０１１の結果が「仮想計算機削除」）、サーバ装置１０１で稼動可能な仮想計算機を削除する（ステップ４０１７）。仮想計算機削除処理の詳細については、図２７Ｃにて後述する。
【０２１８】
図２５は、本発明の第２の実施の形態の次回システム設定処理（ステップ４０１２Ｂ）の手順を示すフローチャートである。
【０２１９】
次回システム設定処理は、各仮想計算機で次回起動するシステムを設定するための処理である。
【０２２０】
ＣＰＵ２００３は、仮想計算機の識別情報及び次回起動するシステムのシステム名を受け付け、当該システムが存在するか否かを確認する（ステップ４０２０）。第２の実施の形態のシステム存在確認部４０２では、サーバ装置１０１の仮想計算機管理テーブル１１２を参照することによって、指定されたシステムが存在するか否かを判定する。
【０２２１】
ＣＰＵ２００３は、ステップ４０２０の処理の結果に基づいて、指定されたシステムが存在するか否かを判定する（ステップ４０１２１）。指定されたシステムが存在しない場合には（ステップ４０１２１の結果が「存在しない」）、返り値に−１を設定し（ステップ４０１２２）、本処理を終了する。
【０２２２】
ＣＰＵ２００３は、指定されたシステムが存在する場合には（ステップ４０１２１の結果が「存在する」）、仮想計算機管理テーブル操作部４０６を実行する（ステップ４０６０）。仮想計算機管理テーブル操作部４０６による処理は、第１の実施の形態におけるシステム操作処理と同様である。なお、第２の実施の形態では、設定対象の仮想計算機を指定して、仮想計算機管理テーブル１１２の対応するセルに指定されたシステムを設定するようにサーバ装置１０１に要求する。仮想計算機管理テーブル操作部４０６による処理の詳細については、図２８にて後述する。さらに、返り値に０を設定し（ステップ４０１２３）、本処理を終了する。
【０２２３】
図２６は、本発明の第２の実施の形態のシステム削除処理（ステップ４０１３Ｂ）の手順を示すフローチャートである。
【０２２４】
システム削除処理において、ＣＰＵ２００３は、まず、削除対象のシステム名の指定を受け付け、当該システムの存在を確認し、結果を変数ｒｅｔに代入する（ステップ４０２０）。
【０２２５】
ＣＰＵ２００３は、変数ｒｅｔの値を評価し、指定されたシステムが存在するか否かを判定する（ステップ４０１３１）。指定されたシステムが存在しない場合には（ステップ４０１３１の結果が「存在しない」）、処理が失敗したことを示す値である−１を返り値に設定し（ステップ４０１３４）、本処理を終了する。
【０２２６】
一方、ＣＰＵ２００３は、指定されたシステムが存在する場合には（ステップ４０１３１の結果が「存在する」）、仮想計算機管理テーブル１１２から、各仮想計算機の現在システムを取得し、変数ｒｅｔに設定する（ステップ４０６０）。
【０２２７】
ＣＰＵ２００３は、変数ｒｅｔに含まれるシステム名に指定されたシステム名が含まれるか否かを判定する（ステップ４０１３２）。いずれかの仮想計算機で実行中のシステムを削除することはできないため、変数ｒｅｔに含まれるシステム名に指定されたシステム名が含まれている場合には（ステップ４０１３２の結果が「含まれる」）、返り値に−１を設定し（ステップ４０１３４）、本処理を終了する。
【０２２８】
ＣＰＵ２００３は、変数ｒｅｔに含まれるシステム名に指定されたシステム名が含まれていない場合には（ステップ４０１３２の結果が「含まれない」）、仮想計算機管理テーブル操作処理を実行し、仮想計算機管理テーブル１１２から各仮想計算機の次回システムの値を取得し、変数ｒｅｔに設定する（ステップ４０６０）。さらに、変数ｒｅｔに含まれるシステム名に指定されたシステム名が含まれている場合には（ステップ４０１３３の結果が「含まれる」）、返り値に−１を設定し（ステップ４０１３４）、本処理を終了する。
【０２２９】
ＣＰＵ２００３は、変数ｒｅｔに含まれるシステム名に指定されたシステム名が含まれていない場合には（ステップ４０１３３の結果が「含まれない」）、システム削除部４０５によって指定されたシステムを削除する（ステップ４０５０）。最後に、システムの削除処理が成功したことを意味する値０を返り値に設定し（ステップ４０１３５）、本処理を終了する。
【０２３０】
図２７Ａは、本発明の第２の実施の形態のシステム切替処理（ステップ４０１４Ｂ）の手順を示すフローチャートである。
【０２３１】
ＣＰＵ２００３は、仮想計算機管理テーブル操作部４０６によって、まず、指定された仮想計算機に対応する次回システムをサーバ装置１０１の仮想計算機管理テーブル１１２から取得し、取得されたシステム名を変数ｓｙｓｎａｍｅに代入する（ステップ４０６０）。
【０２３２】
ＣＰＵ２００３は、さらに、ｓｙｓｎａｍｅに設定されたシステム名を、仮想計算機管理テーブル１１２の現在システムに設定するように、サーバ装置１０１に要求する(ステップ４０６０)。
【０２３３】
以上の処理が終了した後、メモリに常駐しているプログラムなどを切替後のシステムの対応するプログラムに切り替えることによって、システムを切り替えることができる。プログラムの切替ができない場合には、必要に応じて指定された仮想計算機を再起動することによってシステムを切り替えればよい。
【０２３４】
図２７Ｂは、本発明の第２の実施の形態の仮想計算機追加処理（ステップ４０１６）の手順を示すフローチャートである。
【０２３５】
仮想計算機追加処理では、ＣＰＵ２００３は、追加する仮想計算機の識別情報の指定を受け付けると、サーバ装置１０１の仮想計算機管理テーブル１１２に指定された仮想計算機を追加する（ステップ４０１６１）。具体的には、指定された仮想計算機の識別情報を仮想計算機管理テーブル１１２に追加するように、サーバ装置１０１に要求する。
【０２３６】
また、追加された仮想計算機を起動する前に、仮想計算機管理テーブル１１２の対応するレコードに次回システムを設定しておく必要があるが、仮想計算機追加時に設定するようにしてもよい。
【０２３７】
図２７Ｃは、本発明の第２の実施の形態の仮想計算機削除処理（ステップ４０１７）の手順を示すフローチャートである。
【０２３８】
仮想計算機追加処理では、ＣＰＵ２００３は、削除対象の仮想計算機の識別情報の指定を受け付けると、サーバ装置１０１の仮想計算機管理テーブル１１２から指定された仮想計算機を削除する（ステップ４０１７１）。具体的には、指定された仮想計算機の識別情報を仮想計算機管理テーブル１１２から削除するように、サーバ装置１０１に要求する。指定された仮想計算機が稼働中の場合には、指定された仮想計算機を終了させてから削除するようにしてもよいし、稼働中の仮想計算機を停止せずに、仮想計算機管理テーブル１１２の該当するレコードを削除し、次回起動できないようにしてもよい。
【０２３９】
図２８は、本発明の第２の実施の形態の仮想計算機管理テーブル操作部４０６による処理（ステップ４０６０）の手順を示すフローチャートである。
仮想計算機管理テーブル操作部４０６による処理は、第１の実施の形態のシステム操作部４０３による処理に対応し、仮想計算機管理テーブル１１２に格納された情報を読み書きするための処理である。
【０２４０】
ＣＰＵ２００３は、操作種別、変更対象のシステムを示す値（現在又は次回）、システム名（ｓｙｓｎａｍｅ）及び仮想計算機の識別情報（ｍａｃｈｉｎｅ）の指定を受け付け、操作種別によって処理を分岐させる（ステップ４０６１）。
【０２４１】
ＣＰＵ２００３は、操作種別が書き込みの場合には（ステップ４０６１の結果が「ｗｒｉｔｅ」）、さらに、操作対象のシステムが現在システムか次回システムかを判定する（ステップ４０６２１）。
【０２４２】
ＣＰＵ２００３は、対象のシステムが現在の場合には（ステップ４０６２１の結果が「現在」）、仮想計算機管理テーブル１１２の指定された仮想計算機に対応する現在システム１１２２に、指定されたシステム名を設定する（ステップ４０６３）。一方、対象のシステムが次回の場合には（ステップ４０６２１の結果が「次回」）、仮想計算機管理テーブル１１２の指定された仮想計算機に対応する次回システム１１２３に、指定されたシステム名を設定する（ステップ４０６４）。
【０２４３】
ＣＰＵ２００３は、操作種別が読み出しの場合には（ステップ４０６１の結果が「ｒｅａｄ」）、さらに、操作対象のシステムが現在システムか次回システムかを判定する（ステップ４０６２２）。
【０２４４】
ＣＰＵ２００３は、操作対象のシステムが現在システムの場合には（ステップ４０６２２の結果が「現在」）、仮想計算機管理テーブル１１２の指定された仮想計算機に対応する現在システム１１２２からシステム名を取得し（ステップ４０６５）、返り値に取得されたシステム名を設定する（ステップ４０６７）。
【０２４５】
一方、ＣＰＵ２００３は、操作対象のシステムが次回システムの場合には（ステップ４０６２２の結果が「次回」）、仮想計算機管理テーブル１１２の指定された仮想計算機に対応する次回システム１１２３からシステム名を取得し（ステップ４０６６）、返り値に取得されたシステム名を設定する（ステップ４０６７）。
【０２４６】
図２９は、本発明の第２の実施の形態の仮想計算機管理テーブル１１２の構成を示す図である。
【０２４７】
仮想計算機管理テーブル１１２には、仮想計算機ごとに現在実行されているシステムと次回実行予定のシステムの識別情報が格納されている。仮想計算機管理テーブル１１２は、仮想計算機１１２１、現在システム１１２２及び次回システム１１２３を含む。
【０２４８】
仮想計算機１１２１は、サーバ装置１０１で稼動可能な仮想計算機の識別情報である。現在システム１１２２は、現在実行中又は直前に実行されていたシステムの識別情報である。次回システム１１２３は、次回起動時に実行されるシステムの識別情報である。
【０２４９】
本発明の第２の実施の形態によれば、仮想計算機上で実行されるシステムを切り替えることが可能となり、複数の環境を一つ仮想計算機上で提供することができる。
【０２５０】
さらに、本発明の第２の実施の形態によれば、各仮想計算機上で提供される各システムで同じファイルを動的に共有することができるため、第１の実施の形態と同様に、ディスク容量を節約することができる。
【符号の説明】
【０２５１】
１０１    サーバ装置
１０２    メモリ
１０３    ＣＰＵ
１０４    ディスク装置
１０５    ファイルマッピングシステム部
１０６    ファイルマッピング制御部
１０７    マッピング情報管理部
１０８    マッピング情報制御部
１０９    ファイル保存部
１１０    マッピング情報保存部
１１１    リモート管理部
１１２    仮想計算機管理テーブル
１１３    インタフェース
１１７    ハイパバイザ
２０１    ファイル入出力監視部
２０２    ファイル情報取得部
２０３    同一ハッシュ探索部
２０４    ハッシュ生成部
２０５    ファイルシステムアクセス部
２０６    位置情報設定部
２０７    共有フラグ設定部
２０８    ハッシュ値設定部
３０１    ファイルマッピングテーブル
３０２    システム保存部
４０１    マッピングシステム制御コマンド受付部
４０２    システム存在確認部
４０３    システム操作部
４０４    システム複製部
４０５    システム削除部
４０６    仮想計算機管理テーブル操作部
２０００    管理計算機
２００２    メモリ
２００３    ＣＰＵ
２０１３    インタフェース
２１０６    ファイルマッピング制御部
２２０１    ファイル入出力監視部
２４０１    マッピングシステム制御コマンド受付部
３０１０    ファイル情報
３０１１    システム名
３０１２    位置情報
３０１３    ハッシュ値
３０１４    共有フラグ
３０１５    レコードセット
３０１６    セルセット
【図１】
2011018206.tif 000003
【図２】
2011018206.tif 000004
【図３】
2011018206.tif 000005
【図４】
2011018206.tif 000006
【図５】
2011018206.tif 000007
【図６】
2011018206.tif 000008
【図７】
2011018206.tif 000009
【図８】
2011018206.tif 000010
【図９Ａ】
2011018206.tif 000011
【図９Ｂ】
2011018206.tif 000012
【図１０】
2011018206.tif 000013
【図１１】
2011018206.tif 000014
【図１２】
2011018206.tif 000015
【図１３Ａ】
2011018206.tif 000016
【図１３Ｂ】
2011018206.tif 000017
【図１３Ｃ】
2011018206.tif 000018
【図１３Ｄ】
2011018206.tif 000019
【図１３Ｅ】
2011018206.tif 000020
【図１４】
2011018206.tif 000021
【図１５】
2011018206.tif 000022
【図１６】
2011018206.tif 000023
【図１７Ａ】
2011018206.tif 000024
【図１７Ｂ】
2011018206.tif 000025
【図１８Ａ】
2011018206.tif 000026
【図１８Ｂ】
2011018206.tif 000027
【図１８Ｃ】
2011018206.tif 000028
【図１９】
2011018206.tif 000029
【図２０】
2011018206.tif 000030
【図２１】
2011018206.tif 000031
【図２２】
2011018206.tif 000032
【図２３】
2011018206.tif 000033
【図２４】
2011018206.tif 000034
【図２５】
2011018206.tif 000035
【図２６】
2011018206.tif 000036
【図２７Ａ】
2011018206.tif 000037
【図２７Ｂ】
2011018206.tif 000038
【図２７Ｃ】
2011018206.tif 000039
【図２８】
2011018206.tif 000040
【図２９】
2011018206.tif 000041