(57)【要約】      （修正有）【課題】ＯＳやアプリケーションをインストールした組込メディアに障害が生じたとしても、度重なるインストールで発展を重ねたコンテナ仮想環境を、早期に復旧することができるサービス提供装置を提供する。【解決手段】サービス提供装置において、バックアップ作成プログラム３１１は、組み込みメディアであるＨＤＤ１０１において、マウントポイントにより隔離された専用領域のサブディレクトリにゲストアプリケーションがインストールされた際及びマウントポイントにより隔離された専用領域にインストールされたゲストアプリケーションがアップデートされた際、ＵＳＢメモリ１０２がスロット３に装着されていることを要件にして、マウントポイントの配下となるサブディレクトリのバックアップを作成してＵＳＢメモリ１０２に書き込む。ＵＳＢメモリ１０２に書き込まれたバックアップは、ＨＤＤ１０１の復旧に用いられる。【選択図】図２
2019219866.tif 000002
【特許請求の範囲】
【請求項１】
コンテナ仮想環境を構築し、その環境下でゲストアプリケーションを動作させて、サービス提供を行うサービス提供装置であって、
木構造をなす複数のディレクトリからなるファイルシステムを有し、その領域の中の何れかのディレクトリに、仮想化プログラムが記録されている組込メディアと、
可搬メディアの装着及び脱着が可能なスロットと、
バックアップ作成プログラムが予め記録されたプリインストールメディアと、
プロセッサとを備え、
前記仮想化プログラムは、
前記木構造をなす複数のディレクトリのうち、特定のディレクトリをマウントポイントとして定めたマウント処理をプロセッサに実行させ、前記特定ディレクトリの配下となるサブディレクトリを、コンテナ仮想環境の専用領域として確保させ、
前記バックアップ作成プログラムは、
前記コンテナ仮想環境の専用領域にゲストアプリケーションがインストールされた際、及び、前記専用領域にインストール済みゲストアプリケーションがアップデートされた際、前記スロットに可搬メディアが装着されていることを要件にして、前記特定ディレクトリの配下となるサブディレクトリのバックアップを、前記可搬メディアに作成する処理をプロセッサに実行させる
ことを特徴とするサービス提供装置。
【請求項２】
前記仮想化プログラムは、
複数カテゴリーのそれぞれに対応するサービス専用のルートディレクトリと、その配下のサブディレクトリを形成して、前記配下となるサブディレクトリに、ゲストアプリケーションをインストールする処理をプロセッサに実行させ、
前記マウントポイントとなる特定ディレクトリは、複数のサービス専用のルートディレクトリのそれぞれである
ことを特徴とする請求項１に記載のサービス提供装置。
【請求項３】
前記組込メディアには更に、オペレーティングシステムがインストールされ、
前記プリインストールメディアには、
前記組込メディアからオペレーティングシステムのブートストラップを行うブートストラッププログラムが記録されており、
前記仮想化プログラムは、
前記ブートストラップにより、オペレーティングシステムが正常にロードされた場合、前記コンテナ仮想環境を構築した上、前記ゲストアプリケーションを起動し、
前記可搬メディアには更に、オペレーティングシステムのディスクイメージと、リカバリープログラムとが記録されており、
前記リカバリープログラムは、
前記組込メディアの記録領域のうち、オペレーティングシステムが記録された領域が欠陥領域であった場合、前記組込メディアを初期化して、前記欠陥領域を代替領域に置き換えた上、可搬メディアに記録されたディスクイメージ、及び、バックアップを用いた再インストールを前記プロセッサに実行させる
ことを特徴とする請求項１に記載のサービス提供装置。
【請求項４】
前記オペレーティングシステムのディスクイメージ及びリカバリープログラムは、前記可搬メディアの主たるパーティションに書き込まれており、
前記ゲストアプリケーションのバックアップは前記可搬メディアの従たるパーティションに書き込まれており、
前記主たるパーティションは、前記可搬メディアの起動ドライブとなるパーティションである
ことを特徴とする請求項３に記載のサービス提供装置。
【請求項５】
前記サービス提供装置のプリインストールメディアには、領域関係調整プログラムが記録されており、
前記領域関係調整プログラムは、
前記可搬メディアの前記従たるパーティションに書き込まれたバックアップのデータサイズが、所定の基準を満たすかどうかを判定し、
前記データサイズが所定の基準と満たす場合、前記主たるパーティションにゲストアプリケーションのバックアップを書き込んで、その後、前記従たるパーティションからゲストアプリケーションのバックアップを削除する処理をプロセッサに実行させる
ことを特徴とする請求項４に記載のサービス提供装置。
【請求項６】
前記ファイルシステムにおける複数ディレクトリのうち、前記特定ディレクトリの配下となるサブディレクトリには、パッケージマネージャープログラムがインストールされ、
前記パッケージマネージャープログラムは、ゲストアプリケーションを配信するアプリケーション配信サーバーから、インストール済みゲストアプリケーションの改訂が告知されたかの改訂監視、及び、インストール済みゲストアプリケーションの改訂があった場合の改訂後ゲストアプリケーションのダウンロードをプロセッサに実行させ、
前記改訂監視は、前記アプリケーション配信サーバーから送信される提供者情報を受信して、インストール済みゲストアプリケーションの改訂の告知が、前記提供者情報の中に存在するかどうかを判定することでなされる
ことを特徴とする請求項１に記載のサービス提供装置。
【請求項７】
前記アプリケーション配信サーバーから送信される提供者情報は更に組合せ禁止ルールを含み、前記組合せ禁止ルールは、ゲストアプリケーションを構成するプログラム資材であるパッケージのうちオペレーティングシステムを構成するパッケージとの組み合わせが禁じられているものを示し、
前記パッケージマネージャープログラムによるダウンロードでは、ゲストアプリケーションを構成するパッケージのうち、オペレーティングシステムを構成するパッケージとの組み合わせが禁じられているものを除外する
ことを特徴とする請求項６に記載のサービス提供装置。
【請求項８】
前記組込メディアには、複数サービスのそれぞれについてのゲストアプリケーションがインストールされており、
前記サービス提供装置は更に、
サービス毎のゲストアプリケーションのうち、アップデートを禁止すべきものの設定をユーザーから受け付けて、サービス毎のアップデート禁止の有無を示すユーザー設定情報を生成する設定受付手段を備え、
前記仮想化プログラムは、サービス毎の複数のゲストアプリケーションのうち、前記ユーザー設定情報により、アップデートが禁止されているもの以外をダウンロードして、組込メディアにインストールする
ことを特徴とする請求項１に記載のサービス提供装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、組込メディアからオペレーティングシステム（以下ＯＳと呼ぶ）をロードして、様々なアプリケーションを動作させることで、サービス提供を行うサービス提供装置に関し、特に、アプリケーションが、ファイルシステムをアクセスする際のマウント処理の改良に関する。
【背景技術】
【０００２】
Ｌｉｎｕｘ（登録商標）を始めとする一部のオペレーティングシステムでは、アプリケーションによるファイルシステムの直接アクセスを許容していない。上述したマウント処理とは、ユーザーアプリケーションと、ファイルシステムの一部のディレクトリとを一時的に結び付け、限定的なアクセスを可能とする処理である。こうしたマウント処理を発展させたサービス提供装置の仮想化技術として、コンテナ仮想化が近年注目を浴びている。
【０００３】
コンテナ仮想化は、名前空間によるプロセスの隔離と、コントローラのグループ化とにより、ユーザーアプリケーションを起動させる仮想化技術であり、サービス提供装置へのゲストＯＳのインストールを必須としない。ゲストＯＳをインストールするためのライセンスが不要となり、様々なアプリケーションをサービス提供装置に導入する際の導入コストが低廉になるので、コンテナ仮想化を行うサービス提供装置では、様々なゲストＯＳに対応するユーザーアプリケーション（ゲストアプリケーション）のインストールが可能になる。
【０００４】
事業動向に応じて、提供するサービスの内容を動的に変更したり、追加することが容易になるので、コンテナ仮想化によりサービス提供を行うサービス提供装置は、拡張性・発展性に富むという利点がある。
【０００５】
尚、ダウンロードに伴う付随的な処理に関しては、以下の特許文献１、２に記載された先行技術文献がある。特許文献１は、最新版シンクライアントＯＳのダウンロードが完了した後、ＵＳＢメモリカードのパーティション領域にコピーするシンクライアントシステムを開示する。
【０００６】
特許文献２は、ホームページのデータをダウンロードして、改竄の有無をチェックし、改竄が検知されれば、オリジナルのデータをホームページにアップロードするデータベース修復システムを開示する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開2012-68803号公報
【特許文献２】特開2004-318820号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、コンテナ仮想環境を構築して、度重なるゲストアプリケーションのインストールで発展を重ねたサービス提供装置のバックアップや保全は、サービス提供装置を事業所に導入した顧客事業者に委ねられることが一般的であった。サービス提供装置のメーカーは、必要最低限のリカバリー（納入時期のＯＳが導入された状態に復旧する機能）を提供するものの、度重なるインストールで発展を重ねたサービス提供装置の組込メディアのバックアップは、顧客事業者によるサービス提供装置の利用の問題であるとして、関与しない立場をとることが一般的であった。
【０００９】
しかし、顧客事業者が、実際に組込メディアの障害に直面して、様々なゲストアプリケーションがインストールされた状態への復旧に、長期の時間を費やした場合、業務中断の長期化が原因で顧客事業者の収益が悪化する。そうした顧客事業者の苦境を傍観していると、サービス提供装置を開発するメーカーの収益が悪化して、共倒れとなる事態に発展してしまう。
【００１０】
尚、特許文献１、２に記載された先行技術文献は、何れもコンテナ仮想環境についての言及を有さず、上述した復旧長期化の問題を解消し得るものではない。
【００１１】
本発明の目的は、ＯＳやアプリケーションをインストールした組込メディアに障害が生じたとしても、度重なるインストールで発展を重ねたコンテナ仮想環境を、早期に復旧することができるサービス提供装置を提供することである。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、コンテナ仮想環境を構築し、その環境下でゲストアプリケーションを動作させて、サービス提供を行うサービス提供装置は、木構造をなす複数のディレクトリからなるファイルシステムを有し、その領域の中の何れかのディレクトリに、仮想化プログラムが記録されている組込メディアと、可搬メディアの装着及び脱着が可能なスロットと、バックアップ作成プログラムが予め記録されたプリインストールメディアと、プロセッサとを備え、前記仮想化プログラムは、前記木構造をなす複数のディレクトリのうち、特定のディレクトリをマウントポイントとして定めたマウント処理をプロセッサに実行させ、前記特定ディレクトリの配下となるサブディレクトリを、コンテナ仮想環境の専用領域として確保させ、前記バックアップ作成プログラムは、前記コンテナ仮想環境の専用領域にゲストアプリケーションがインストールされた際、及び、前記専用領域にインストール済みゲストアプリケーションがアップデートされた際、前記スロットに可搬メディアが装着されていることを要件にして、前記特定ディレクトリの配下となるサブディレクトリのバックアップを、前記可搬メディアに作成する処理をプロセッサに実行させることを特徴とする。
【００１３】
前記仮想化プログラムは、複数カテゴリーのそれぞれに対応するサービス専用のルートディレクトリと、その配下のサブディレクトリを形成して、前記配下となるサブディレクトリに、ゲストアプリケーションをインストールする処理をプロセッサに実行させ、前記マウントポイントとなる特定ディレクトリは、複数のサービス専用のルートディレクトリのそれぞれとしてもよい。
【００１４】
前記組込メディアには更に、オペレーティングシステムがインストールされ、前記プリインストールメディアには、前記組込メディアからオペレーティングシステムのブートストラップを行うブートストラッププログラムが記録されており、前記仮想化プログラムは、前記ブートストラップにより、オペレーティングシステムが正常にロードされた場合、前記コンテナ仮想環境を構築した上、前記ゲストアプリケーションを起動し、前記可搬メディアには更に、オペレーティングシステムのディスクイメージと、リカバリープログラムとが記録されており、前記リカバリープログラムは、前記組込メディアの記録領域のうち、オペレーティングシステムが記録された領域が欠陥領域であった場合、前記組込メディアを初期化して、前記欠陥領域を代替領域に置き換えた上、可搬メディアに記録されたディスクイメージ、及び、バックアップを用いた再インストールを前記プロセッサに実行させてもよい。
【００１５】
前記オペレーティングシステムのディスクイメージ及びリカバリープログラムは、前記可搬メディアの主たるパーティションに書き込まれており、前記ゲストアプリケーションのバックアップは前記可搬メディアの従たるパーティションに書き込まれており、前記主たるパーティションは、前記可搬メディアの起動ドライブとなるパーティションであるとしてもよい。
【００１６】
前記サービス提供装置のプリインストールメディアには、領域関係調整プログラムが記録されており、前記領域関係調整プログラムは、前記可搬メディアの前記従たるパーティションに書き込まれたバックアップのデータサイズが、所定の基準を満たすかどうかを判定し、前記データサイズが所定の基準と満たす場合、前記主たるパーティションにゲストアプリケーションのバックアップを書き込んで、その後、前記従たるパーティションからゲストアプリケーションのバックアップを削除する処理をプロセッサに実行させるとしてもよい。
【００１７】
前記ファイルシステムにおける複数ディレクトリのうち、前記特定ディレクトリの配下となるサブディレクトリには、パッケージマネージャープログラムがインストールされ、前記パッケージマネージャープログラムは、ゲストアプリケーションを配信するアプリケーション配信サーバーから、インストール済みゲストアプリケーションの改訂が告知されたかの改訂監視、及び、インストール済みゲストアプリケーションの改訂があった場合の改訂後ゲストアプリケーションのダウンロードをプロセッサに実行させ、前記改訂監視は、前記アプリケーション配信サーバーから送信される提供者情報を受信して、インストール済みゲストアプリケーションの改訂の告知が、前記提供者情報の中に存在するかどうかを判定することでなされるとしてもよい。
【００１８】
前記アプリケーション配信サーバーから送信される提供者情報は更に組合せ禁止ルールを含み、前記組合せ禁止ルールは、ゲストアプリケーションを構成するプログラム資材であるパッケージのうちオペレーティングシステムを構成するパッケージとの組み合わせが禁じられているものを示し、前記パッケージマネージャープログラムによるダウンロードでは、ゲストアプリケーションを構成するパッケージのうち、オペレーティングシステムを構成するパッケージとの組み合わせが禁じられているものを除外するとしてもよい。
【００１９】
前記組込メディアには、複数サービスのそれぞれについてのゲストアプリケーションがインストールされており、前記サービス提供装置は更に、サービス毎のゲストアプリケーションのうち、アップデートを禁止すべきものの設定をユーザーから受け付けて、サービス毎のアップデート禁止の有無を示すユーザー設定情報を生成する設定受付手段を備え、前記仮想化プログラムは、サービス毎の複数のゲストアプリケーションのうち、前記ユーザー設定情報により、アップデートが禁止されているもの以外をダウンロードして、組込メディアにインストールするとしてもよい。
【発明の効果】
【００２０】
コンテナ仮想環境の専用領域であるサブディレクトリを、バックアップ作成の対象として選び、ゲストアプリケーションのアップデートがなされた場合、サブディレクトリの内容のバックアップを、可搬メディアに作成するので、可搬メディアには、コンテナ仮想環境の専用領域であるサブディレクトリにおける最新のアップデート状況が反映されることになる。
【００２１】
組込メディアのファイルシステムのうち、オペレーティングシステムがインストールされた領域が欠陥になり、組込メディアを初期化して、何もインストールされていない状態に戻す必要が生じたとしても、可搬メディアに格納されたバックアップを用いることで、マウントポイントが設定される特定ディレクトリ配下のサブディレクトリの格納内容を、欠陥発生の直近の状態にまで遡って復元することができる。
【００２２】
コンテナ仮想環境の専用領域の内容の、早期復元を可能にすることで、サービス提供装置が起動不能になることによる業務提供の中断期間の最小化を図ることができる。
【図面の簡単な説明】
【００２３】
【図１】サービス提供装置が属するネットワーク環境を示す。
【図２】サービス提供装置３００１のハードウェア構成を示す。
【図３】図３（ａ）は、ＨＤＤ１０１におけるファイルシステムの木構造を示す。図３（ｂ）は、ＵＳＢメモリ１０２における記録領域を示す。
【図４】ＨＤＤ１０１のファイルシステムにおけるサービスＡインストール領域１１２の配置を示す。
【図５】サービス提供装置３００１の制御階層を示す。
【図６】コンテナ仮想環境２０１、２０２、２０３と、アプリケーション配信サーバー２００１との間で伝送制御を行うための構成要素を示す。
【図７】（ａ）、（ｂ）は、ＵＳＢメモリ１０２を用いたＫｉｔｔｉｎｇの過程を示す。
【図８】（ａ）、（ｂ）は、ゲストアプリケーションを構成するパッケージのインストール、及び、アップデートの過程を示す。
【図９】サービスＡのパッケージマネージャー２０１ｍによりなされるインストール手順を示すフローチャートである。
【図１０】（ａ）〜（ｄ）は、ＵＳＢメモリ１０２を用いた、ＯＳインストール領域１１０、サービスＡ〜Ｃのインストール領域１１２〜１１４のリカバリーの過程を示す。
【図１１】ＵＳＢメモリ１０２を用いたリカバリー手順を示すフローチャートである。
【図１２】変形例１にかかるＵＳＢメモリ１０２の書込権限を引き継いだコンフィグレーションファイルの一例を示す。
【図１３】（ａ）、（ｂ）は、変形例２にかかるＵＳＢメモリ１０２の領域関係の調整過程を示す。
【図１４】変形例２にかかるＵＳＢメモリ１０２の領域関係を調整する領域関係調整プログラムの手順を示すフローチャートである。
【図１５】変形例３に係る組合せ禁止ルールに基づく限定的なパッケージのダウンロードを示す。
【図１６】変形例３に係る組合せ禁止ルールに基づく限定的なパッケージのダウンロード手順を示すフローチャートである。
【図１７】変形例４に係るユーザー設定情報の禁止設定に基づく限定的なパッケージのダウンロード手順を示す。
【図１８】変形例４に係るユーザー設定情報の禁止設定に基づく限定的なパッケージのダウンロード手順を示すフローチャートである。
【図１９】画像形成装置と一体化されたサービス提供装置３００１の構成を示す。
【発明を実施するための形態】
【００２４】
以下、図面を参照しながら、サービス提供装置の実施形態について説明する。
【００２５】
［１］サービス提供装置が属するネットワーク環境
図１は、サービス提供装置が属するシステムを示す。図１に示すように、サービス提供装置３００１が属するシステムは、仮想化プライベートネットワークシステムであり、アプリケーション配信サーバー２００１（サーバープログラム２０１４、２０１５、２０１６を含む）、ベースＯＳ配信サーバー２０１１、仮想化プログラム配信サーバー２０２１により構成される。
【００２６】
（アプリケーション配信サーバー２００１）
アプリケーション配信サーバー２００１は、クラウドサーバーであり、ハードウェアリソース（図１ではＨＷと表記する）２００２の上に、ハイパーバイザー２００３を起動させ、更に、ゲストＯＳ２００４、２００５、２００６を起動させるという制御階層においてサーバープログラム２０１４、２０１５、２０１６を動作させることで、開発部門のクライアント機器１００１、１００２、１００３から、ゲストアプリケーションのアップロードを受け付ける。
【００２７】
（サーバープログラム２０１４、２０１５、２０１６）
サーバープログラム２０１４、２０１５、２０１６は、ゲストＯＳ２００４、２００５、２００６のそれぞれに対応するプログラムであり、開発部門のクライアント機器１００１、１００２、１００３からサービスアプリケーションのアップロードを受け付けると、アップロードされたサービスアプリケーションをリリース用ストレージ２００７に格納する。また、サーバープログラム２０１４、２０１５、２０１６は、こうしてリリース用ストレージ２００７に格納したサービスアプリケーションについての提供者情報２００７Ｄを作成して、サービス提供装置３００１に送信する。提供者情報２００７Ｄは、リリース用ストレージ２００７に格納され、リリース可能になっているサービスアプリケーションのプログラム資材（パッケージ）を示す情報である。提供者情報２００７Ｄに示される何れかのパッケージのダウンロード要求がサービス提供装置３００１から発せられると、サーバープログラム２０１４、２０１５、２０１６は、要求に係るサービスアプリケーションのパッケージを、要求元のサービス提供装置３００１に配信する。
【００２８】
（ベースＯＳ配信サーバー２０１１）
ベースＯＳ配信サーバー２０１１は、ベースＯＳ２００を構成するパッケージを格納しており、サービス提供装置３００１からの要求に応じて、ベースＯＳ２００を構成するパッケージをサービス提供装置３００１に送信する。
【００２９】
（仮想化プログラム配信サーバー２０２１）
仮想化プログラム配信サーバー２０２１は、仮想化プログラム３００を構成するパッケージを格納しており、サービス提供装置３００１からの要求に応じて、ベースＯＳ２００を構成するパッケージをサービス提供装置３００１に送信する。
【００３０】
（サービス提供装置３００１）
サービス提供装置３００１は、ベースＯＳ配信サーバー２０１１、仮想化プログラム配信サーバー２０２１から、ベースＯＳ２００、仮想化プログラム３００をダウンロードして、これらのパッケージを自装置の組込メディアにインストールする。また、様々なサービスアプリケーションをインストールして、コンテナ仮想環境２０１、２０２、２０３において、これらサービスアプリケーションを動作させる。これにより、顧客事業者の構内ネットワーク３０１０に属する顧客事業者の端末３０１１、３０１２に、様々なサービスを提供する。
【００３１】
［２］サービス提供装置３００１のハードウェア構成
サービス提供装置３００１のハードウェア構成を図２に示す本図に示すように、サービス提供装置３００１は、組込メディアの一例であるＨＤＤ１０１と、可搬メディアの一例であるＵＳＢメモリ１０２と、ＵＳＢメモリ１０２の装着１０２Ｓ・脱着１０２Ｅを可能にするスロット１０３と、ＨＤＤ１０１、ＵＳＢメモリ１０２の何れかからのブートストラップを実行させるためのプリインストールメディアであるブートＲＯＭ１０４と、ＨＤＤ１０１、ＵＳＢメモリ１０２の何れかから読み出されたプログラムを格納するＲＡＭ１０５と、ＲＡＭ１０５に読み出されたプログラムを構成する命令コードをフェッチし、デコードして、実行するＣＰＵ１０６と、ＨＤＤ１０１、サービス提供装置３００１のメーカーにより開発された組込みプログラムのパッケージを格納したプリインストールメディアであるＥＥＰＲＯＭ１０７と、顧客事業者の構内ネットワーク３０１０との物理的な接続を規定するネットワークインターフェイスカード（ＮＩＣ）１０８と、対話的な操作環境をユーザーに提供するＧＵＩデバイス１０９（ディスプレイデバイス１０９Ｄ、キャラクターデバイス１０９Ｃ、ポインティングデバイス１０９Ｐを含む）とで構成される。
【００３２】
［３］ＨＤＤ１０１のファイルシステム
アプリケーション配信サーバー２００１、ベースＯＳ配信サーバー２０１１、仮想化プログラム配信サーバー２０２１からダウンロードした各種プログラムのパッケージは、ＨＤＤ１０１のファイルシステムにインストールされる。図３（ａ）は、ＨＤＤ１０１のファイルシステムの構成を示す。
【００３３】
ＨＤＤ１０１は、ファイルシステム管理情報（ISO/IEC13346に規定されたファイルセット記述子、終端記述子、ファイルエントリ等の情報要素）で管理された記録領域を有し、木構造をなす複数ディレクトリを含む。具体的には、図３（ａ）に示すように、rootディレクトリと、Linux(登録商標)の形成規則に従い、形成された複数のディレクトリ（binディレクトリ、bootディレクトリ、devディレクトリ、libディレクトリ、procディレクトリ、homeディレクトリ、sbinディレクトリ、usrディレクトリ、varディレクトリ）を有しており、ＯＳインストール領域１１０、仮想化プログラムインストール領域１１１、サービスＡ〜Ｃのインストール領域１１２〜１１４を含む。
【００３４】
（ＯＳインストール領域１１０）
ＯＳインストール領域１１０は、ＨＤＤ１０１のファイルシステムのうち、rootディレクトリの直下に配されたディレクトリの１つである、libディレクトリに配され、ベースＯＳ２００を含む。ベースＯＳ２００は、アプリケーションの動作のためのプラットフォーム機能を提供する基盤プログラムであり、プロセスの生成や起動、削除を管理するカーネル２００Ｃ、ＧＵＩデバイス１０９に対してユーザーが入力したコマンドを解釈・実行し、プロセスについての指示をカーネルに発するコマンドシェル２００Ｓ、サービス提供装置３００１の基本的な入出力を制御する基本I/O部２００Ｂを含む。本実施形態では、ベースＯＳ２００としてLinux(登録商標)を用いる。
【００３５】
（仮想化プログラムインストール領域１１１）
仮想化プログラムインストール領域１１１は、rootディレクトリの配下となる１のディレクトリ（varディレクトリ）に配置され、仮想化プログラム３００が記録される。仮想化プログラム３００は、ベースＯＳ２００によるプラットフォーム機能の追加として、ゲストＯＳの介在なしにゲストアプリケーションを動作させる動作環境をアプリケーションに提供するシステムプログラムであり、コンフィグレーションファイル３０１、サービスインストーラー３０２、コンテナエンジン３０３、コントロールグループ３０４を含む。本実施形態では、ベースＯＳ２００としてLinux(登録商標)を用いるので、Linux（登録商標）に特化した仮想化プログラムとして、LXC(LinuX(登録商標)-Container）を用いる。
【００３６】
（サービスＡ〜Ｃのインストール領域１１２〜１１４）
サービスＡ〜Ｃのインストール領域１１２〜１１４は、ベースＯＳインストール領域のうち、比較的下位の階層（root/home/hroot）に形成され、アプリケーション配信サーバ２００１におけるゲストＯＳ２００４〜２００６のそれぞれに対応するサービスアプリケーション（以下、サービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇという）と、各ゲストアプリケーションに対応するパッケージマネージャー（サービスＡ〜Ｃのパッケージマネージャー２０１ｍ〜２０３ｍ）とが記録される。
【００３７】
図４を参照しながら、サービスＡインストール領域１１２の内部構成を説明する。
【００３８】
図４に示すようにサービスＡインストール領域１１２は、サービスディレクトリ(serviceＡディレクトリ)を含み、その配下に、複数のサブディレクトリの階層を有する。この複数のサブディレクトリの階層とは、図４に示すようにサービス専用のrootＦＳディレクトリを最上位の階層とし、更にその下に、Linux(登録商標)の形成規則に従って形成された複数のサブディレクトリ（binAディレクトリ、devAディレクトリ、libAディレクトリ、sysAディレクトリ、usrAディレクトリ、varAディレクトリ、）を配置するというものである。サービスＡ〜Ｃのインストール領域１１２〜１１４は、マウントポイントとなるサービス専用のルートディレクトリから、上記binAディレクトリ、devAディレクトリ、libAディレクトリ、sysAディレクトリを経由して、ファイルシステムの木構造の末端に至る複数のディレクトリからなる。これら、マウントポイントから、木構造の末端に至る複数のディレクトリに、サービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇを構成する実行ファイルのパッケージや、サービスＡ〜Ｃのパッケージマネージャー部２０１ｍ〜２０３ｍを構成する実行ファイルのパッケージ、その他、サービスＡ〜Ｃの実行に必要なプログラムやデータを格納したパッケージが書き込まれる。
【００３９】
仮想化プログラム３００は、上記のサービス専用のrootFSディレクトリをマウントポイントとして選んでマウント処理を実行し、当該マウントポイントで隔離される名前空間を定義することで、コンテナ仮想環境を構築する。図４のファイルシステム１１２ｍは、コンテナ仮想環境２０１の構築時のマウント処理を経て、認識されるファイルシステムを示す。上記のマウントにより、rootFSディレクトリ領域の配下に、Linux（登録商標）の形成規則に従い形成された複数のサブディレクトリ（binAディレクトリ、devAディレクトリ、libAディレクトリ、sysAディレクトリ、usrAディレクトリ、varDディレクトリ、尚、ディレクトリ名に含まれる「A」は区別のために挿入された文字）が、rootディレクトリの直下に存在するものとして認識される。
【００４０】
［４］サービス提供装置３００１の制御階層
ベースＯＳ２００、仮想化プログラム３００が起動され、ＲＡＭ１０５にロードされた際、サービス提供装置３００１は、図５に示すような制御階層をなす。図５は、サービス提供装置３００１の制御階層を示す。以下、サービス提供装置３００１の制御階層を構成する、個々の制御要素について説明する。
【００４１】
（サービスＡの名前空間２０１ｓ、２０２ｓ、２０３ｓ）
サービスＡの名前空間２０１ｓ、２０２ｓ、２０３ｓは、ＨＤＤ１０１のファイルシステムのうち、マウントポイントで隔離された名前空間であり、ファイルシステムのうち、サービス専用のrootFSディレクトリにマウントポイントを設定してその配下のサブディレクトリをマウント処理を行うことで構成される。
【００４２】
（サービスインストーラー３０２）
サービスインストーラー３０２は、ＥＥＰＲＯＭ１０７に格納された、後述するテンプレート３１０に従いコンテナ構築のためのパッケージをダウンロードして、サービス専用のrootFSディレクトリにインストールする。また、ＥＥＰＲＯＭ１０７のテンプレート３１０に従い、コンフィグレーションファイル３０１を作成して、コンテナ向けに調整する。
【００４３】
（コンテナエンジン３０３）
コンテナエンジン３０３は、ＧＵＩデバイス１０９（図２参照）が、コンテナについてのコマンド（コンテナコマンド）の入力を受け付け、ベースＯＳ２００のコマンドシェル２０２Ｓ（図３（ａ）参照）が、かかるコンテナコマンドを解釈した場合、当該コマンドに基づく、コンテナ仮想環境についての処理を実行する。具体的にいうと、コンテナコマンドに基づく、コンテナ仮想環境の構築や自動起動、一時停止、削除を制御する。コンテナ仮想環境を構築する際の諸条件はコンフィグレーションファイル３０１に従う。コンテナコマンドが、サービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇの起動指示を伴っていた場合は、これらのゲストアプリケーションについてのプロセスを生成して、コンテナ仮想環境２０１〜２０３のうち、対応するものに関連付ける。
【００４４】
（コントロールグループ３０４）
コントロールグループ３０４は、サービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇをロードすることで得られる複数のプロセスを、単一又は複数のサブシステムに接続する。サブシステムとは、サービス提供装置３００１のリソース（図２に示したＲＡＭ１０５、ＣＰＵ１０６、ＮＩＣ１０８、ＵＳＢメモリ１０２）のそれぞれを制御するための制御プロセスであり、ＣＰＵ１０６に対応するＣＰＵサブシステム２０１ｃ、２０２ｃ、２０３ｃ、ＲＡＭ１０５に対応するＲＡＭサブシステム２０１ｒ、２０２ｒ、２０３ｒ、ＮＩＣ１０８に対応するネットワーク(ＮＷ)サブシステム２０１ｎ、２０２ｎ、２０３ｎ、ＵＳＢメモリ１０２に対応するＵＳＢサブシステム２０１ｕ、２０２ｕ、２０３ｕがある。これらのサブシステムは、対応するリソースの利用配分やリソースの利用制限を担う。個々のサブシステムによる利用配分や利用制限は、ゲストアプリケーションのインストール時に生成されたコンフィグレーションファイル３０１に従う。
【００４５】
（サービスＡ〜Ｃのパッケージマネージャー２０１ｍ〜２０３ｍ）
サービスＡ〜Ｃのパッケージマネージャー２０１ｍ〜２０３ｍは、各サービスについてのrootFSディレクトリの配下にインストールされたパッケージの１つであり、サービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇを構成するパッケージの関係を、依存、推奨、提案、衝突に分類して管理し、インストールすべきパッケージ、削除すべきパッケージを決定する。アプリケーション配信サーバー２００１から送信される提供者情報２００７Ｄ(図１参照)に示されるアップデート状況を定期的に監視して、インストールすべきパッケージが利用可能になれば、当該パッケージをダウンロードして、サービスインストール領域をアップデートする。
【００４６】
以上が、サービス提供装置３００１の制御階層の説明である。次に、図６を参照しながら、コンテナ仮想環境２０１、２０２、２０３において、伝送制御を行うための構成要素について説明する。伝送制御のための構成要素として、図６に示す仮想ブリッジ３０５、仮想イーサネット(登録商標)デバイス３０６、３０７、３０８がある。
【００４７】
（仮想ブリッジ３０５）
仮想ブリッジ３０５は、コンテナ仮想環境間の接続を規定する。
【００４８】
（仮想イーサネット(登録商標)デバイス３０６、３０７、３０８）
仮想イーサネット(登録商標)デバイス３０６、３０７、３０８(VETH:Virtual ETHernet デバイスと呼ばれる)は、レイヤ２の仮想ネットワークインターフェイスであり、コンテナ仮想環境２０１、２０２、２０３と、仮想ブリッジ３０５との間のペアリングを規定する。このペアリングにより、コンテナ仮想環境２０１、２０２、２０３のそれぞれは、仮想ネットワークインターフェイスカード（ＮＩＣ）２０１ｖ、２０２ｖ、２０３ｖの使用が可能になり、固有のホスト情報及び固有のＩＰアドレスが割り当てられる。これらのホスト情報、ＩＰアドレスを用いて、アプリケーション配信サーバー２００１からのサービスアプリケーションのダウンロードを実行する。
【００４９】
［５］可搬メディアについての説明
可搬メディアの一例である、ＵＳＢメモリ１０２について、図２を参照しながら説明する。
【００５０】
（ＵＳＢメモリ１０２）
ＵＳＢメモリ１０２は、サービス提供装置３００１の納入段階において、Ｋｉｔｔｉｎｇメディアとして使用され、サービス提供装置３００１の運用段階ではバックアップ先、障害発生時には、リカバリーメディアとして使用される可搬メディアである。ＵＳＢメモリ１０２の記録領域は、ISO/IEC 9293に準拠したファイルシステム情報等、簡易なタイプのファイルシステム情報により管理されており、図２に示すように、ＵＳＢメモリ１０２を物理的な媒体として認識させるためのマスターブートレコード１０２Ｍと、 各パーティションへのエントリーとなるパーティションテーブル１０２Ｐと、２以上のパーティション（パーティション領域Ａ１２１、パーティション領域Ｂ１２２）とを含む。
【００５１】
（パーティション領域Ａ１２１、パーティション領域Ｂ１２２）
パーティション領域Ａ１２１、パーティション領域Ｂ１２２のそれぞれは、パーティション領域の細目を示すパーティションブートセクター１２１Ｐ、１２２Ｐと、クラスタを記録単位として、データの記録位置を管理するファイルアロケーションテーブル（図中のＦＡＴ）１２１Ｆ、１２２Ｆと、パーティション領域Ａ１２１、パーティション領域Ｂ１２２におけるディレクトリの管理のためのディレクトリエントリー（図中のＲＤＥ）１２１Ｄ、１２２Ｄとを含む。これらにおいてパーティションテーブル１０２Ｐは、ＵＳＢメモリ１０２のパーティション領域Ａ１２１が起動ドライブとして用いられる旨を示す。
【００５２】
パーティション領域Ａ１２１に起動ドライブとして用途が与えられているので、図３（ｂ）に示すように、パーティション領域Ａ１２１をＯＳインストール領域のディスクイメージ１３０、メディア間インストールプログラム１２３の格納場所とする。ＯＳインストール領域のディスクイメージ１３０は、図３（ｂ）に示すように、ＯＳインストール領域１１０のみが形成された状態のＨＤＤ１０１のファイルシステムの内容をＵＳＢメモリ１０２のパーティション領域Ａ１２１に再現したものであり、Linux(登録商標)の形成規則に従い形成された複数のサブディレクトリ(binディレクトリ、bootディレクトリ、devディレクトリ、libディレクトリ、procディレクトリ、homeディレクトリ、sbinディレクトリ、usrディレクトリ、varディレクトリ)と、ＯＳインストール領域１１０とを含む。
【００５３】
パーティション領域Ｂ１２２には、起動ドライブとしての用途がないので、図３（ｂ）に示すように、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４の格納場所とする。サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４は、図３（ｂ）に示すように、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２のルートディレクトリの配下に配置され、サービスＡ〜Ｃのインストール領域１１２〜１１４の内容（図３（ｂ）参照）を再現したデータであり、サービス専用のルートディレクトリと、その配下のサブディレクトリとを含む。
【００５４】
続いて、メディア間インストールプログラム１２３について説明する。
【００５５】
（メディア間インストールプログラム１２３）
メディア間インストールプログラム１２３は、Ｋｉｔｔｉｎｇ時において、ＯＳインストール領域のディスクイメージ１３０を、ＵＳＢメモリ１０２からＨＤＤ１０１にコピーする。これにより、サービス提供装置３００１は、ＨＤＤ１０１から起動することが可能になる。一方、障害発生時において、メディア間インストールプログラム１２３はリカバリーを実行する。具体的にいうと、ＨＤＤ１０１を初期化した後、ベースＯＳの起動不能の原因になった欠陥セクターを代替セクターに置き換えて、ＯＳインストール領域のディスクイメージ１３０、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４をＵＳＢメモリ１０２からＨＤＤ１０１にコピーする。これにより、サービス提供装置３００１のリカバリーを行う。
【００５６】
［６］サービス提供装置３００１の組込みプログラム
サービス提供装置３００１には、プリインストールメディアとして、ブートＲＯＭ１０４、ＥＥＰＲＯＭ１０７が設けられている。ＥＥＰＲＯＭ１０７には、図２に示すようにサービス提供装置３００１を開発したメーカーが作成した組込み型のプログラム資材として、テンプレート３１０と、バックアップ作成プログラム３１１とが格納されている。
【００５７】
（テンプレート３１０）
テンプレート３１０は、ダウンロード可能な複数のサービスアプリケーションのそれぞれに対応付けられており、図２に示すように、サービスアプリケーションのダウンロード先となるＵＲＬ３１０Ｕと、ダウンロードされるべきゲストアプリケーションの指定３１０Ｄと、ｈｔｔｐ、ｆｔｐの何れかをダウンロードプロトコルとして示すダウンロードスキーム３１０Ｓと、コンテナ仮想環境を構築するにあたっての構築条件３１０Ｃとを含む。テンプレート３１０による構築条件として、サービス提供装置３００１のハードウェアリソースであるＨＤＤ１０１、ＥＥＰＲＯＭ１０７、ＮＩＣ１０８に依拠した内容の利用制限が記述されている。コンフィグレーションファイル３０１は、このテンプレート３１０を雛形としているので、ＨＤＤ１０１、ＥＥＰＲＯＭ１０７、ＮＩＣ１０８に依拠した構築条件は、コンフィグレーションファイル３０１に引き継がれる。
【００５８】
（バックアップ作成プログラム３１１）
バックアップ作成プログラム３１１は、ＨＤＤ１０１のファイルシステムの何れのディレクトリをもアクセスし得る特権を有する特権プログラムであり、インストールやアップデートの対象となったサービス専用のrootFSディレクトリの配下の更新の有無を定期的に監視している。サービスＡのゲストアプリケーション２０１ｇ〜２０３ｇのインストール又はアップデートにより、サービスＡ〜Ｃのインストール領域１１２〜１１４が更新された際、サービスＡ〜Ｃのインストール領域１１２〜１１４のバックアップ１３２〜１３４を、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２に作成する。バックアップ作成プログラム３１１によるバックアップの対象は、バックアップサービスＡ〜Ｃのインストール領域１１２〜１１４なので、マウントポイントとなるサービス専用のルートディレクトリから、ファイルシステムの木構造の末端に至る全てのディレクトリと、これらのディレクトリに配置されている全てのパッケージとが、バックアップ対象としてパーティション領域Ｂ１２２に書き込まれる。
【００５９】
バックアップ作成プログラム３１１によるバックアップには、ＨＤＤ１０１のＯＳインストール領域１１０やサービスＡ〜Ｃのインストール領域１１２〜１１４をそのままコピーしたコピーデータや、ＩＳＯディスクイメージ（ＯＳインストール領域におけるディレクトリ構造を示すバイナリデータ）、サービスＡ〜Ｃのインストール領域１１２〜１１４の取得先を示すリンク情報がある。説明の簡略化のため、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４は、サービスＡ〜Ｃのインストール領域１１２〜１１４のコピーであるものとする。
【００６０】
尚、仮想化プログラムインストール領域１１１のバックアップは作成しない。仮想化プログラム３００はサービス提供装置３００１の起動に必須とされている訳ではなく、また、サービスＡのパッケージマネージャー２０１ｍ〜２０３ｍによる高度なアップデートが施されている訳ではないとの理由による。
【００６１】
［７］サービス提供装置３００１の動作説明
以上のように構成されたサービス提供装置３００１の動作を説明する。
【００６２】
７−１）ｋｉｔｔｉｎｇ時の動作
始めに、ｋｉｔｔｉｎｇ時の動作を説明する。図７（ａ）は、サービス提供装置３００１が事業所に導入された状態を示す。かかる導入状態において、ＨＤＤ１０１には何も記録されていない初期状態になっており、またＵＳＢメモリ１０２には、パーティション領域Ｂ１２２が空き状態になっている。パーティション領域Ａ１２１にＯＳインストール領域のディスクイメージ１３０が記録され、ベースＯＳ２００を構成するパッケージとして、パッケージＸ１のバージョン１．０、パッケージＸ２のバージョン１．０、パッケージＸ３のバージョン１．０が記録された状態になっている。かかる状態で、ＵＳＢメモリ１０２がスロット１０３に装着されると（図７（ａ）における矢印１０２Ｓ参照）、ブートＲＯＭ１０４に記録されたブートストラッププログラム１４１(図２参照)が、ＵＳＢメモリ１０２のパーティション領域Ａ１２１に記録されたメディア間インストールプログラム１２３をＲＡＭ１０５にロードして起動する。
【００６３】
起動されたメディア間インストールプログラム１２３が、ＵＳＢメモリ１０２をコピー元とし、ＨＤＤ１０１をコピー先としたＯＳインストール領域のディスクイメージ１３０のコピー（図７（ｂ）におけるコピー１１０Ｃ）を実行することで、ＨＤＤ１０１には、ＯＳインストール領域１１０が得られ、ベースＯＳ２００を構成するパッケージＸ１のバージョン１．０、パッケージＸ２のバージョン１．０、パッケージＸ３のバージョン１．０がＨＤＤ１０１に記録される。ベースＯＳ２００がインストールされると、仮想化プログラム配信サーバー２０２１(図１参照)から、仮想化プログラム３００をダウンロードして、ＨＤＤ１０１に書き込み、仮想化プログラムインストール領域１１１を得る(図２参照)。
【００６４】
仮想化プログラムインストール領域１１１に仮想化プログラム３００をインストールした後、サービスインストーラー３０２を起動する。サービスインストーラー３０２は、図９のフローチャートに従い、サービスＡのゲストアプリケーション２０１ｇを構成するパッケージのダウンロードを行う。図９は、サービスＡのパッケージマネージャー２０１ｍによりなされるインストール手順を示すフローチャートである。本フローチャートにおける変数Ｃは、サービス提供装置３００１により提供される複数サービスのそれぞれのカテゴリーを示す変数である。また定数ｎは、サービス提供装置３００１により提供される複数サービスの総数を示す。
【００６５】
始めに、ＨＤＤ１０１にサービスＡのゲストアプリケーション２０１ｇのパッケージを一時的に格納するためのキャッシュディレクトリを作成し（ステップＳ１０１）、テンプレート３１０のダウンロードスキーム３１０Ｓに応じて、ダウンロードの深度を決定する。ダウンロードの深度とは、パッケージ間のリンクに従って、再帰的に複数パッケージをダウンロードするための繰り返し回数を示す。ステップＳ１０２では、テンプレート３１０に示されるダウンロードスキームが、ｈｔｔｐであるか、ｆｔｐであるかの違いにより、異なるダウンロード深度ｄを決定する。こうしてダウンロード深度ｄを決定した後、ステップＳ１０３〜Ｓ１０６のループを実行する。
【００６６】
始めに、変数Ｃを初期値「１」で初期化し（ステップＳ１０３）、カテゴリーＣに属するパッケージを、深度ｄで再帰的にダウンロードする（ステップＳ１０４）。ステップＳ１０５は、ループの継続要件であり、変数Ｃが、カテゴリー総数ｎを下回る場合（ステップＳ１０５でYes）、ループの継続条件を満たすとして、変数Ｃをインクリメントし（ステップＳ１０６）、ステップＳ１０４にまで戻る。以下、ステップＳ１０５がＮｏと判定されるまで、ステップＳ１０４〜Ｓ１０６の処理を繰り返す。
【００６７】
ステップＳ１０５がＮｏになり、各サービスを構成するパッケージが、キャッシュディレクトリに格納されれば、キャッシュディレクトリに格納されたパッケージに基づき、サービスＡ〜Ｃのインストール領域１１２〜１１４のインストールを実行する（ステップＳ１０７）。
【００６８】
先ずはじめに、ＨＤＤ１０１のファイルシステムにおけるrootディレクトリからサービスＡ〜Ｃのインストール領域１１２〜１１４に至る部分のディレクトリを形成する。具体的にいうと、図４に示すhomeディレクトリの配下に複数サービスについての共通のrootディレクトリ（hrootディレクトリ）を作成して、かかるhrootディレクトリに、サービスＡについてのディレクトリ（ServiceＡディレクトリ）と、サービスＡについてのサービス専用のルートディレクトリ（rootFSディレクトリ）を設け、Linux(登録商標)の形成規則に従った用途別のサブディレクトリ（binA、devA、libA、sysA、usrA、varAディレクトリ）を形成する。
【００６９】
上記形成規則に従ったサブディレクトリを構成した後、キャッシュディレクトリに書き込まれたパッケージを、これらのインストール領域に書き込んでゆく。本実施形態においてサービスＡのゲストアプリケーション２０１ｇの初期バージョンは、３つのパッケージ（図８（ａ）に示すパッケージＡ１バージョン１．０、パッケージＡ２バージョン１．０、パッケージＡ３バージョン１．０）により構成され、これらがＨＤＤ１０１に書き込まれることで動作可能になるものとする。サービスインストーラー３０２は、図８（ａ）に示すように、rootFSディレクトリの配下となるbinAディレクトリに、パッケージＡ１バージョン１．０、パッケージＡ２バージョン１．０、パッケージＡ３バージョン１．０の書き込みを行い（図８（ａ）の１１２Ｗ）、サービスＡインストール領域１１２を形成してゆく。同様の書き込みにより、サービスＢインストール領域１１３、サービスＣインストール領域１１４を形成してゆく。
【００７０】
以上の処理の後、バックアップ作成プログラム３１１は、ＨＤＤ１０１における各インストール領域のバックアップをＵＳＢメモリ１０２のパーティション領域Ｂ１２２に記録する（図９のステップＳ１０８）。具体的にいうと、サービスＡのサービスアプリケーションのためのパッケージ一式（パッケージＡ１バージョン１．０、パッケージＡ２バージョン１．０、パッケージＡ３バージョン１．０）をＵＳＢメモリ１０２のパーティション領域Ｂ１２２に書き込み（図８（ａ）の１３２Ｃ）、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２に、サービスＡインストール領域のバックアップ１３２を得る（図３（ｂ）参照）。
【００７１】
サービスＢインストール領域１１３、サービスＣインストール領域１１４についても、同様の書き込みを行い、サービスＢインストール領域のバックアップ１３３、サービスＣインストール領域のバックアップ１３４を得る（図３（ｂ）参照）。
【００７２】
各サービスのインストールが終了すると、仮想サービスＡについてのコンテナ２０１を構築し、サービスＡのゲストアプリケーション２０１ｇを起動して、処理を開始する。サービスＡのゲストアプリケーション２０１ｇの起動に併せて、サービスＡのパッケージマネージャー２０１ｍを起動し、アプリケーション配信サーバー２００１によるサービスＡのゲストアプリケーション２０１ｇの最新バージョンのリリースの監視を開始する。
【００７３】
７−２）アップデート時の動作
アップデート時のサービス提供装置３００１の動作について説明する。この動作では、サービスＡのゲストアプリケーション２０１ｇを構成する複数パッケージの一部であるパッケージＡ３バージョン１．０に改訂があり、新たなバージョンであるパッケージＡ３バージョン２．０がリリース用ストレージ２００７に格納され、リリース可能な状態になったとする。同じく、追加のパッケージＡ４バージョン１．０がリリース用ストレージ２００７に格納され、リリース可能な状態となる。この場合、サービスＡのパッケージマネージャー２０１ｍ(図５参照)は、アプリケーション配信サーバー２００１からこれらパッケージＡ３バージョン２．０、パッケージＡ４バージョン１．０をダウンロードして、サービスＡインストール領域１１２のアップデートを行う。具体的にいうと、サービスＡインストール領域１１２に既に記録されているパッケージＡ３バージョン１．０を、パッケージＡ３バージョン２．０で上書きし（図８（ｂ）の１１２Ｏ）、また、新たなパッケージとして、パッケージＡ４バージョン１．０を書き込む（図８（ｂ）の１１２Ａ）。
【００７４】
その一方、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２におけるサービスＡインストール領域のバックアップ１３２に、上記アップデートを反映する。つまり、サービスＡインストール領域のバックアップ１３２におけるパッケージＡ３バージョン１．０を、ダウンロードで得られたパッケージＡ３バージョン２．０で上書きし（図８（ｂ）の１３２Ｏ）、また、パッケージＡ４バージョン１．０を追加で書き込む（図８（ｂ）の１３２Ａ）。
【００７５】
以上の過程を経て、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２には、パッケージＡ３バージョン２．０、パッケージＡ４バージョン１．０によるアップデートが反映される。
【００７６】
尚、ＯＳインストール領域１１０にインストールされたベースＯＳ２００を構成するパッケージに改訂があった場合、その改訂版のパッケージをゲストＯＳ配信サーバー２０１１からダウンロードし、当該パッケージを用いて、ＯＳインストール領域１１０をアップデートする。また、ＯＳインストール領域１１０のアップデートに併せて、ＵＳＢメモリ１０２のパーティション領域Ａ１２１におけるＯＳインストール領域のディスクイメージ１３０にも、当該アップデートを反映する。こうしたアップデートにより、ＯＳインストール領域のディスクイメージ１３０を絶えず最新の内容にする。仮想化プログラムインストール領域１１１についても同様であり、仮想化プログラム配信サーバー２０２１において、最新のパッケージが準備されれば、当該最新のパッケージをダウンロードして、仮想化プログラムインストール領域１１１をアップデートする。
【００７７】
７−３）リストア時の動作
続いて、リストアを実行する場合のサービス提供装置３００１の動作について説明する。かかる動作では、図１０（ａ）の状況を想定する。
【００７８】
図１０（ａ）は、サービスアプリケーションを構成するパッケージのアップデートが繰り返された後、ＯＳインストール領域１１０に欠陥セクター１１０Ｄが発生して、ＨＤＤ１０１からのベースＯＳ２００の起動が不可能になった（図１０（ａ）の１０５Ｕ）との状況を示す。この場合、ＵＳＢメモリ１０２をスロット１０３から引き抜き、再装着した上（図１０（ｂ）の１０２Ｓ）、サービス提供装置３００１の電源をシャットダウンし、再度電源を投入する。図１１は、ＵＳＢメモリ１０２を用いたリカバリー手順を示すフローチャートである。
【００７９】
再度の電源投入により、ブートＲＯＭ１０４に記録されたブートストラッププログラム１４１(図２参照)は、スロット１０３に装着されたＵＳＢメモリ１０２を起動ディスクとしたブートストラップを行う。ブートストラップにより、ＵＳＢメモリ１０２に記録されていたメディア間インストールプログラム１２３(図３参照)をＲＡＭ１０５にロードして起動する（図１１のステップＳ２０１）。これにより、メディア間インストールプログラム１２３はＲＡＭ１０５に読み出される（図１０（ｂ）のロード１２３Ｌ）。メディア間インストールプログラム１２３は、ＨＤＤ１０１の初期化１０１Ｉを実行し、またＨＤＤ１０１のＯＳインストール領域１１０の欠陥セクターを代替セクターに置き換える（ステップＳ２０２、図１０（ｂ）の１０１Ｒ）。この置換えは、欠陥セクターの物理アドレスに割り当てられていた論理アドレスを、正常な代替セクターの物理アドレスに割り当てて、物理アドレスと、論理アドレスとの対応関係を変化させることでなされる。
【００８０】
その後、ＵＳＢメモリ１０２からＨＤＤ１０１へのメディア間コピーを行い、ＵＳＢメモリ１０２からＨＤＤ１０１に、ベースＯＳ２００をインストールする（ステップＳ２０３）。ステップＳ２０３を実行することで、図１０（ｃ）に示すように、ＵＳＢメモリ１０２のパーティション領域Ａ１２１からＨＤＤ１０１に、ＯＳインストール領域のディスクイメージ１３０のコピー１１０Ｃがなされ、ＨＤＤ１０１に、復元後のＯＳインストール領域１１０ｒが得られる。続いて、仮想化プログラム配信サーバー２０２１をアクセスして、仮想化プログラム３００をダウンロードしてインストールし、仮想化プログラムインストール領域１１１(図３（ａ）参照)を得るのと共に、ＵＳＢメモリ１０２からＨＤＤ１０１にサービスをインストールする（図１１のステップＳ２０４）。具体的にいうと、図１０（ｄ）に示すようにＵＳＢメモリ１０２からサービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４を読み出し、ＨＤＤ１０１にコピー（図１０（ｄ）の１１２Ｃ、１１３Ｃ、１１４Ｃ）することで、サービスＡ〜Ｃのインストール領域１１２〜１１４を得る。以降、ＵＳＢメモリ１０２の格納内容のアップデートを行う。
【００８１】
次に、ベースＯＳ２００、サービスＡ〜Ｃのインストール領域１１２〜１１４にインストールされたゲストアプリケーションの新バージョンがベースＯＳ配信サーバー２０１１、アプリケーション配信サーバー２００１に準備されているかどうかを判定する（図１１のステップＳ２０５）。存在しない場合（ステップＳ２０５でNo）、ステップＳ２０６〜ステップＳ２０７をスキップして、本フローチャートの処理を終了する。存在する場合(ステップＳ２０５でYes)、ベースＯＳ配信サーバー２０１１、アプリケーション配信サーバー２００１からベースＯＳ２００、各サービスのゲストアプリケーションをダウンロードして、ＯＳインストール領域１１０、サービスＡ〜Ｃのインストール領域１１２〜１１４の格納内容をアップデートする（図１１のステップＳ２０６）。続いて、ＯＳインストール領域のディスクイメージ１３０、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４をＵＳＢメモリ１０２に書き込む（図１１のステップＳ２０７）。
【００８２】
［８］まとめ
本実施形態によれば、ＨＤＤ１０１のＯＳインストール領域１１０に欠陥が生じて、ベースＯＳ２００のロードが不可能になったとしても、欠陥発生時にもっとも近い時点でなされた、アップデート後のサービスＡ〜Ｃのインストール領域１１２〜１１４の格納内容のバックアップ１３２〜１３４が、ＵＳＢメモリ１０２に書き込まれているので、メディア間インストールプログラム１２３によるリカバリー時において、障害発生直前のサービスＡ〜Ｃのインストール領域１１２〜１１４の内容を再現することができる。ＵＳＢメモリ１０２からのバックアップ１３２〜１３４のコピーにより、障害発生直前の状態への復旧を早期に完遂することができ、更に、より新しいバージョンのゲストアプリケーションがアプリケーション配信サーバー２００１に準備されていた場合は、当該ゲストアプリケーションを用いて、コンテナ仮想環境２０１〜２０３の対象となるゲストアプリケーションを最新の内容にアップデートするので、上記復旧に伴う業務の中断を最小にすることができる。
【００８３】
また、高度かつ高頻度なアップデートの対象となる、サービスＡ〜Ｃのインストール領域１１２〜１１４をバックアップ対象として選び、バックアップの対象を絞り込んでいるので、可搬メディアであるＵＳＢメモリ１０２と、組込メディアであるＨＤＤ１０１とに大きな容量差が存在する場合でも、リカバリーに有益なバックアップを得ることができる。
【００８４】
（変形例１）
上記実施形態では、バックアップ作成プログラム３１１がサービスＡ〜Ｃのインストール領域１１２〜１１４のバックアップを、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２に書き込んだ。これに対し、本変形例は、サービスＡ〜Ｃのパッケージマネージャー２０２ｍ〜２０４ｍが、アップデートの処理の一部として、ＵＳＢメモリ１０２へのバックアップの書き込みを実行させる変形例である。本変形例では、ＥＥＰＲＯＭ１０７に格納されているテンプレート３１０に、ＵＳＢメモリ１０２の書き込み権限を設けている。そのため、このテンプレート３１０を基礎として生成される各コンフィグレーションファイルは、当該書き込み権限を引き継ぐ。
【００８５】
図１２は、ＵＳＢメモリ１０２の書込権限を引き継いだコンフィグレーションファイルの一例を示す。本図におけるコンフィグレーションファイルは、対象となるＣＰＵ１０６のアーキテクチャの表示（図中のarch：amd64）、ＣＰＵ１０６に内蔵された複数のマルチコアで、並列処理を実行する際の制限（cpulimit:1、cpuunits:1024）、ホスト名（図中のlxc6）、使用するメモリサイズ（memor:1000）、レイヤ２のブリッジ（bridge=vmbr0,name=eth0,type=veth）、ゲートウェイアドレス（gw=192.168.0.1）、ＭＡＣアドレス（hwaddr=62:39:35:35:62:31）、IPアドレス(ip=192.168.0.6/24)、仮想イーサネット(登録商標)の指定(name=eth0,type=veth)、ＯＳタイプ(debian)、ルートファイルシステムの表示（rootFS：Mount  Point１０６）、メモリスワップサイズ(swap:512)含む。これらに加え、図１２のコンフィグレーションファイルは、ＵＳＢメモリ１０２のアクセス権限の設定（+ lxc.cgroup.devices.allow = c 189:* rwm）を含む。尚、c 189は、ＵＳＢメモリ１０２のデバイス番号、ノード番号の組を意味する。
【００８６】
各コンテナ仮想環境で動作するサービスＡ〜Ｃのパッケージマネージャー２０２ｍ〜２０４ｍは、テンプレート３１０から引き継がれ、コンフィグレーションファイル３０１に記載されたＵＳＢメモリ１０２の書込権限に従い、サービスＡ〜Ｃのインストール領域１１２〜１１４のバックアップ１３２〜１３４をＵＳＢメモリ１０２に書き込む。つまり、アプリケーション配信サーバー２００１においてゲストアプリケーションの改訂が通知された際、その改訂後のゲストアプリケーションを構成するパッケージをダウンロードして、サービスＡ〜Ｃのインストール領域１１２〜１１４をアップデートするのと共に、アップデート後のゲストアプリケーションを構成するパッケージのバックアップをＵＳＢメモリ１０２のパーティション領域Ｂ１２２に書き込む。
【００８７】
この変形例では、各サービスのパッケージマネージャーに、バックアップの作成を委ねることで、最新のアップデート状況を、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４に反映することができる。
【００８８】
（変形例２）
上記実施形態では、ＯＳインストール領域のディスクイメージ１３０と、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４とを、ＵＳＢメモリ１０２の別々のパーティション領域（パーティション領域Ａ１２１、パーティション領域Ｂ１２２）に記録し、サービスＡ〜Ｃのインストール領域のバックアップを、ＯＳインストール領域のディスクイメージから隔離した。これに対し本変形例は、ＯＳインストール領域のディスクイメージ１３０と、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４との関係の見直しをＣＰＵ１０６に実行させるプログラム（領域関係調整プログラム）をＥＥＰＲＯＭ１０７に記録し、ディスクイメージ、バックアップの配置変更を実行させる。
【００８９】
領域関係調整プログラムがパーティション領域Ａ１２１と、パーティション領域Ｂ１２２との関係を調整するための基準（関係調整基準）として、ＵＳＢメモリ１０２において、サービスインストール領域のバックアップが占める占有量の閾値を用いる。
【００９０】
ＥＥＰＲＯＭ１０７に格納される領域関係調整プログラムは、パーティション領域Ｂ１２２に書き込まれたバックアップの総サイズが、所定の閾値を上回るかどうかの判定をＣＰＵ１０６に行わせる。これらのバックアップの総サイズが、所定の閾値を上回る場合、ＵＳＢメモリ１０２におけるパーティション領域の関係を見直す。
【００９１】
以下、変形例１にかかるサービス提供装置３００１の動作について説明する。この動作は、図１３（ａ）に示す状況を想定する。この図１３（ａ）の状況は、ＵＳＢメモリ１０２のパーティション領域Ａ１２１に、ＯＳインストール領域のディスクイメージ１３０が記録され、パーティション領域Ｂ１２２に、サービスＡ〜Ｄのインストール領域のバックアップ１３２〜１３５が記録されたというものである。
【００９２】
領域関係調整プログラムは、キャッシュディレクトリにおけるパッケージのバックアップをＵＳＢメモリ１０２に記録した後、図１４に示す一連の処理を実行する。
【００９３】
始めに、領域関係調整プログラムが、パーティション領域Ｂ１２２におけるサービスＡ〜Ｄのインストール領域のバックアップ１３２〜１３５の総サイズは、閾値（図１３（ａ）に示す閾値Th）以下かどうかの判定を行う（ステップＳ１１１）。閾値以下であれば（ステップＳ１１１でYes）、本フローチャートの処理を終了する。閾値を上回る場合（ステップＳ１１１でNo）、パーティション領域Ｂ１２２に記録されたサービスＡ〜Ｄのインストール領域のバックアップ１３２〜１３５の何れかにおけるパッケージをパーティション領域Ａ１２１のディスクイメージ１３０にコピーする（ステップＳ１１２）。図１３（ｂ）の一例では、ＵＳＢメモリ１０２のパーティション領域Ａ１２１のファイルシステムのうち、homeディレクトリ配下のhrootディレクトリに、もっとも古くインストールされたサービスＡインストール領域１３２ｄをパーティション領域Ａ１２１に配置する。こうすることで、サービスＡのインストール領域のバックアップ１３２を、ベースＯＳインストール領域のバックアップ１３０の一部にする。その上で、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２から、サービスＡのインストール領域のバックアップ１３２を削除する（ステップＳ１１３）。以降、最新バージョンのパッケージをダウンロードした際、ベースＯＳインストール領域のバックアップの一部となった、サービスインストール領域のバックアップ部分に、最新バージョンのパッケージを用いたアップデートを施す。
【００９４】
上記実施形態では、パーティション領域Ａ１２１をディスクイメージの格納用、パーティション領域Ｂ１２２をバックアップの格納用に割り当てるので、パーティション領域Ａ１２１には容量の空きが生じる反面、パーティション領域Ｂ１２２は容量が不足するという、アンバランスが発生する傾向がある。これに対し本変形例では、パーティション領域Ｂ１２２に記録された複数バックアップのデータサイズが関係調整基準を上回ることを契機にして、パーティション領域Ｂ１２２における複数バックアップの一部をパーティション領域Ａ１２１に移動するので、パーティション領域Ａ１２１の空きを有効に活用することができる。
【００９５】
尚、本変形例では、関係調整基準として、ＵＳＢメモリ１０２において、サービスインストール領域のバックアップが占める占有量を用いたが、これに限らない。バックアップとして記録されたサービスインストール領域の個数を、所定の閾値と比較することで、パーティション領域Ａ１２１におけるＯＳインストール領域のディスクイメージ１３０と、パーティション領域Ｂ１２２におけるサービスＡ〜Ｄのインストール領域のバックアップ１３２〜１３５との関係を見直してもよい。
【００９６】
また、事前判断により、パーティション領域Ａ１２１におけるＯＳインストール領域のディスクイメージ１３０と、パーティション領域Ｂ１２２におけるサービスＡ〜Ｄのインストール領域のバックアップ１３２〜１３５との関係を見直してもよい。事前判断に用いられる関係調整基準には、サービスＡ〜Ｄのインストール領域のバックアップ１３２〜１３５のコピー速度がある。事前判断用の関係調整基準であるコピー速度は、ある決められた単位時間において、全てのサービスインストール領域を書き込むのに要する速度であり、上記単位時間で、全てのサービスインストール領域の総サイズを割ることにより算出される。こうして得られたコピー速度が、所定の閾値を上回る場合、サービスインストール領域のバックアップの書き込みが、単位時間に完遂しないとして、パーティション領域の関係を見直す。
【００９７】
また、もっとも古く書き込まれたサービスＡインストール領域のバックアップ１３２をパーティション領域Ａ１２１に移動する移動対象として選んだがこれに限らない。アップデートの頻度が低いものや、動作不調がないものを移動対象として選んでもよい。
【００９８】
（変形例３）
本変形例では、サービス提供者が定めた設定情報に基づくインストールを実行する。提供者情報は、各サービスのそれぞれのバージョンについて、組合せ禁止ルールを対応付けた内容になっている。
【００９９】
組合せ禁止ルールは、ベースＯＳ２００を構成するパッケージのうち、サービスアプリケーションのパッケージとの組み合わせが禁止されているものを、サービス提供装置３００１により提供されるサービスの各バージョン毎に示す。組合せ禁止ルールには、１）機能重複に起因する組合せ禁止、２）契約対象に起因する組合せ禁止、３）動作安定化に起因する組合せ禁止がある。
【０１００】
１）機能重複に起因する組合せ禁止の具体例としては、認証機能による重複がある。あるサービスが認証機能のためのパッケージを含んでおり、また、ＨＤＤ１０１にインストールされたベースＯＳ２００も、認証機能のためのパッケージを含んでいる場合、上記サービスのパッケージをインストールすると、機能的な重複が発生する。そこで組合せ禁止ルールでは、機能的に重複するパッケージとして、上記サービスにおける認証機能のパッケージの全てのバージョンと、ベースＯＳ２００の認証機能のためのパッケージの全てのバージョンとの組み合わせを禁ずる。
【０１０１】
２）契約対象に起因する組合せ禁止の具体例としては、サービス種別による重複がある。あるサービスが電子メールの送受信パッケージを有しているものとする。一方、ＨＤＤ１０１にインストールされたベースＯＳ２００は、電子メールとは代替的なサービスを提供していて、電子メールサービスは契約対象になっていないものとする。この場合、組合せ禁止ルールは、契約対象外パッケージとして、上記サービスにおける電子メールの送受信機能のためのパッケージの全てのバージョンと、ベースＯＳ２００の電子メールの送受信のためのパッケージの全てのバージョンとの組み合わせを禁ずる。
【０１０２】
３）動作安定化に起因する組合せ禁止の具体例としては、特定バージョンの除外に起因した組合せ禁止がある。あるゲストアプリケーションには、複数回のバージョンアップを重ねたパッケージがあり、そのうち、最新バージョンのパッケージにおける実行形式プログラムは、ベースＯＳ２００の管理下において動作が不安定になるものとする。そうした場合、その最新バージョンのパッケージと、ベースＯＳ２００のパッケージの組み合わせを禁止するよう、提供者情報の組合せ禁止情報を記述する。
【０１０３】
図１５を参照しながら、提供者情報２０１７に基づく、サービスインストーラー３０２のダウンロード処理について説明する。開発部門のクライアント機器１００１は、サービスＡのゲストアプリケーション２０１ｇを構成するパッケージＡ１バージョン１．３、パッケージＡ２バージョン１．２、パッケージＡ３バージョン１．１をリリース用ストレージ２００７にアップロードした際、提供者情報２０１７をアップロードしたものとする。この提供者情報２０１７は、組合せ禁止ルールとして、サービスＡのゲストアプリケーション２０１ｇ（図５参照）のパッケージＡ２バージョン１．２、パッケージＡ３バージョン１．１と、ベースＯＳ２００のパッケージＸ１バージョン２．０との組み合わせは許可しつつも、サービスＡのゲストアプリケーション２０１ｇのパッケージＡ１バージョン１．３と、ベースＯＳ２００のパッケージＸ１バージョン２．０との組合せを禁じる内容になっている。サービスインストーラー３０２は、この組合せ禁止ルールに基づく限定的な送受信を行う。
【０１０４】
図１６は、組合せ禁止ルールに従った限定的な受信処理を記載したフローチャートである。この図１６の処理は、変数Ｃを制御変数としたループ処理を構成する。先ず、変数Ｃで特定されるカテゴリーＣを１で初期化して（ステップＳ１０３）、ベースＯＳ２００のパッケージとの組み合わせが禁じられたバージョンのパッケージが、カテゴリーＣのサービスに対応するゲストアプリケーションに存在するかどうかを判定する（ステップＳ１１１）。存在しない場合（ステップＳ１１１でＮｏ）、カテゴリーＣのサービスに属するパッケージを、深度ｄで再帰的にダウンロードする（ステップＳ１０４）。ステップＳ１０５は、ループ継続要件であり、変数Ｃがカテゴリー総数ｎを下回る場合（ステップＳ１０５でＹｅｓ）、変数Ｃをインクリメントして（ステップＳ１０６）、ステップＳ１１１に移行する。
【０１０５】
ベースＯＳ２００のパッケージとの組み合わせが禁じられたバージョンのパッケージが、カテゴリーＣのサービスに対応するゲストアプリケーションに存在する場合（ステップＳ１１１でＹｅｓ）、組合せ禁止ルールにより組み合わせが禁じられたパッケージを除外しつつも、カテゴリーＣのサービスに属する
パッケージを、深度ｄで再帰的にダウンロードして（ステップＳ１１２）、ステップＳ１０５に移行する。以下、ステップＳ１０５のループ継続要件が満たされる限り、ステップＳ１０４〜Ｓ１０６、Ｓ１１１〜Ｓ１１２の処理を繰り返す。変数Ｃがカテゴリー総数ｎに達すると（ステップＳ１０５でＮｏ）、処理を終了する。
【０１０６】
図１５の一例を対象として、上記限定的な送信がなされると、パッケージＡ３バージョン１．１、パッケージＡ２バージョン１．２を受信するものの、パッケージＡ１バージョン１．３を受信しない。
【０１０７】
パッケージＡ１バージョン１．３を転送から除外することで、パッケージＡ１についてはアップデートがなされず、昔のバージョンを維持する。
【０１０８】
コンテナ仮想環境２０１が構築された際、サービスＡのパッケージマネージャー２０１ｍは、アプリケーション配信サーバー２００１から送信された提供者情報２０１７を引き継ぐ。具体的にいうと、サービスＡのゲストアプリケーションを構成するパッケージの最新バージョンがリリース用ストレージ２００７に用意されたとしても、サービスＡインストール領域１１２に格納された提供者情報２０１７の組合せ禁止ルールが、当該最新バージョンのパッケージと、インストール済みのベースＯＳ２００を構成するパッケージとの組み合わせを禁じる内容に設定されている場合、当該最新バージョンのダウンロードを行わない。一方、インストール済みのベースＯＳ２００のパッケージのアップデートされた場合、もはや提供者情報２０１７の組合せ禁止ルールの適用はないとして、上記最新バージョンのパッケージをダウンロードする。以上の処理は、アプリケーション配信サーバー２００１のリリース用ストレージ２００７から、新たな提供者情報２０１７が提供されるまで継続してなされる。新たな提供者情報２０１７がアプリケーション配信サーバー２００１から提供されれば、サービスＡインストール領域１１２、サービスＡインストール領域のバックアップ１３２に格納した提供者情報２０１７を上書きして同様の処理を繰り返す。
【０１０９】
尚、図１５における提供者情報２０１７の記述は一例に過ぎない。他の形式により、提供者情報２０１７を規定してもよい。例えば、ベースＯＳ２００をインストールしているサービス提供装置の機種コードに、当該ベースＯＳのパッケージとの組み合わせが禁止されていないサービス及びパッケージの情報を対応付けることで、パッケージの組み合わせを規定してもよい。
【０１１０】
この場合、ベースＯＳ２００を構成するパッケージとの組み合わせの可否を、サービス提供装置３００１の機種単位で管理することができ、開発者の負担軽減を図ることができる。
【０１１１】
（変形例４）
変形例１では、サービス提供者が定めた提供者情報２０１７に従い、インストールを避けるべきサービスアプリケーションのパッケージを規定した。これに対して変形例４は、サービス提供装置３００１のＧＵＩデバイス１０９におけるキャラクターデバイス１０９Ｃを通じて、ユーザーが設定した設定情報（ユーザー設定情報）に基づく、サービスアプリケーションのインストールや、サービスアプリケーションのアップデートを実行する。ユーザー設定情報は禁止情報の設定を含む。禁止情報は、複数のサービスのうち、インストールすべきでないものを示す。
【０１１２】
図１７は、ユーザー設定情報３２２の作成及びユーザー設定情報３２２に基づくダウンロード制御を示す。
【０１１３】
サービスインストーラー３０２は、GUIデバイス１０９におけるキャラクターデバイス１０９Ｃからの入力操作に基づき、禁止情報を含むユーザー設定情報を作成する。こうした禁止情報には、機能重複の観点から、インストール・アップデートを禁止すべきサービスを指定するもの、契約対象の観点から、インストール・アップデートを禁止すべきサービスを指定するもの、動作安定化の観点からインストール・アップデートを禁止すべきサービスを指定するものがある。例えば、２つのサービスアプリケーションのうち一方のバージョンを上げると、他方のアプリケーションが動かなくなることがある。このような場合、サービス提供装置３００１のシステム管理者は、キャラクターデバイス１０９Ｃを用いて一方のサービスアプリケーションのバージョンアップを禁じる内容のユーザー設定情報３２２を作成する。
【０１１４】
キャラクターデバイス１０９Ｃがユーザーからの操作入力に従って情報入力を行うことで、図１７におけるユーザー設定情報３２２が入力されたとする。ユーザー設定情報３２２は、サービス毎のゲストアプリケーションのうち、サービスＡ〜Ｃについてのもののインストールは許可しつつも、サービスＤについてのゲストアプリケーションは、許可しない内容になっている。キャラクターデバイス１０９Ｃへの入力により、ユーザー設定情報３２２が作成されると、ユーザー設定情報３２２をＨＤＤ１０１のサービスＡ〜Ｃのインストール領域１１２〜１１４、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２に書き込む。
【０１１５】
ユーザー設定情報３２２がこのように設定されている場合、サービスインストーラー３０２は、図１８のフローチャートに従い、限定的なダウンロードを行う。本図のフローチャートは、変数Ｃを制御変数としたループ構造を構成している。変数Ｃは、複数カテゴリーのそれぞれを特定する。具体的にいうと、カテゴリーＣを１に初期化して（ステップＳ１０３）、変数Ｃで指示されるカテゴリーＣは禁止情報がオンに設定されているかどうかを判定する（ステップＳ１２１）。カテゴリーＣの禁止情報がＯＮに設定されている場合（ステップＳ１２１でＹｅｓ）、ダウンロードを行うことなく、ステップＳ１０５に移行する。
【０１１６】
カテゴリーＣの禁止情報がＯＮに設定されていない場合（ステップＳ１２１でＮｏ）、カテゴリーＣのサービスに属するパッケージを深度ｄで再帰的にダウンロードする（ステップＳ１０４）。このようにダウンロードを実行した後、ステップＳ１０５に移行する。ステップＳ１０５では、ループ継続要件であり、変数Ｃが、カテゴリー総数ｎを下回るかどうかを判定する。下回る場合（ステップＳ１０５でYes）、変数Ｃをインクリメントして（ステップＳ１０６）、テップＳ１２１に戻る。以下、ステップＳ１０５のループ継続要件が満たされなくなるまで、ステップＳ１２１、ステップＳ１０４〜Ｓ１０６の処理を繰り返す。変数Ｃが、カテゴリー総数ｎを上回ると（ステップＳ１０５でNo）、上記の繰り返しを終了する。
【０１１７】
コンテナ仮想環境におけるサービスＡ〜Ｃのパッケージマネージャー２０２ｍ〜２０４ｍは、サービスＡインストール領域１１２に記録されたユーザー設定情報３２２の内容を引き継ぐ。つまり、自身に対応するサービスの提供が、ユーザー設定情報３２２において許可されている場合、対応するサービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇのアップデートを監視し、最新バージョンがリリース用ストレージ２００７に格納されれば、当該ゲストアプリケーションの最新バージョンをダウンロードしてサービスＡ〜Ｃのインストール領域１１２〜１１４に書き込む。併せて、これらのアップデートを、ＵＳＢメモリ１０２におけるサービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４に反映する。
【０１１８】
一方、自身に対応するサービスの提供が、ユーザー設定情報３２２において禁止されている場合、対応するサービスＡ〜Ｃのゲストアプリケーション２０１ｇ〜２０３ｇのアップデートの監視や最新バージョンのダウンロードを行わない。
【０１１９】
（変形例５）
ＯＳインストール領域のディスクイメージ１３０、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４が格納されたＵＳＢメモリ１０２は、複数台のサービス提供装置を対象としたＫｉｔｔｉｎｇ作業に用いてもよい。
【０１２０】
この際、１台目のサービス提供装置のＫｉｔｔｉｎｇにおいて、上記実施形態と同様の処理を行い、ＵＳＢメモリ１０２に、ＯＳインストール領域のディスクイメージ１３０、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４を書き込む。
【０１２１】
２台目以降のサービス提供装置のＫｉｔｔｉｎｇ時においては、これらＵＳＢメモリ１０２に格納されたバックアップを用いる。ＵＳＢメモリ１０２に格納されたＯＳインストール領域のディスクイメージ１３０をＨＤＤ１０１にコピーすることで、ベースＯＳ２００のインストールを行う。更に、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２に記録されたサービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４をＨＤＤ１０１にコピーすることで、サービスＡ〜Ｃについてのインストールを行う。ＯＳインストール領域のディスクイメージ１３０、サービスＡ〜Ｃのインストール領域のバックアップ１３２〜１３４には、一台目のサービス提供装置３００１のＫｉｔｔｉｎｇがなされた時点までの改訂が反映されているので、２台目以降のｋｉｔｔｉｎｇの際、インストールにおいては、アプリケーション配信サーバー２００１、ベースＯＳ配信サーバー２０１１からのダウンロードを省略することができる。
【０１２２】
（変形例６）
複数枚のＵＳＢメモリ１０２のうち、１枚をＯＳインストール領域１１０のバックアップ格納用に用い、残りの２枚以上のものを、サービスＡ〜Ｃのインストール領域１１２〜１１４のバックアップ格納用に用いてもよい。この場合、一枚のＵＳＢメモリ１０２の３２Ｇバイト〜６４Ｇバイトという容量全体を、ゲストアプリケーションのバックアップ格納に用いることができる。
【０１２３】
上記実施形態では、可搬メディアがＵＳＢメモリ１０２であるとして説明したが、カード型のデバイスであれば、ＳＤメモリカード（ＳＤＨＣメモリカード等を含む）であってもよい。また、デバイス以外の光学媒体（ＣＤ―ＲＷ、ＤＶＤ−ＲＷ、ＢＤ―ＲＥ）であってもよいし、光磁気媒体（ＭＯ）であってもよい。
【０１２４】
また組込メディアは、ＨＤＤ１０１であるとして説明したが、内蔵型メディアであれば、ＳＳＤであってもよい。また、組込みプログラムの格納を目的としたプリインストールメディアは、ＨＤＤ１０１とは別のメディア（ＥＥＰＲＯＭ１０７）であるとしたが、ＨＤＤ１０１の記録領域を２以上のパーティション領域に分割して、そのうち起動ドライブを組込メディア、起動ドライブ以外のパーティション領域をプリインストールメディアとしてもよい。
【０１２５】
（変形例７）
コンテナエンジン３０３は、コンテナ仮想環境２０１〜２０３が構築された際、子プロセスの１つとして、バックアップ作成プログラム３１１を起動するよう、起動ルールを規定してもよい。具体的にいうと、コンテナエンジン３０３は、コンテナ仮想環境２０１、２０２、２０３を起動した際、ｉｎｉｔプロセスを最初に起動し、ｉｎｉｔプロセスを親プロセスとする複数の子プロセスを起動するとの起動手順を実行する。子プロセスには、ディスクトップ処理を規定するディスクトッププロセス、主としてバッググラウンドで動作するプロセス（デーモン）がある。代表的なデーモンとして、システムログを実行するデーモン（ｓｙｓｔｅｍｄ）、セキュリティシェル（Ｓｅｃｕｒｉｔｙ  ＳＨｅｌｌ）接続要求を実行するデーモン（ｓｓｈｄ）等がある。デーモンの１つとして、バックアップ作成プログラム３１１を起動し、サービスＡ〜Ｃのインストール領域１１２〜１１４のアップデート監視を実行して、定期的なバックアップの作成を行わせるようにしてもよい。つまり、サービスインストーラー３０２が、マウントポイント配下のディレクトリにダウンロードした際、及び、サービスＡのパッケージマネージャー２０１ｍが、これらのプロセスについてのパッケージをアップデートした際、これらのパッケージのバックアップを、ＵＳＢメモリ１０２のパーティション領域Ｂ１２２に書き込んでもよい。
【０１２６】
アプリケーション配信サーバー２００１は、複数カテゴリーのサービスをまとめた形態で、コンテナでの動作に必要なパッケージを配信してもよい。そのように、サービスＡ〜Ｃのインストール領域１１２〜１１４に記録すべき複数のパッケージのまとまりを、「コンテナイメージ」という。リリース用ストレージ２００７において、複数サービスについてのコンテナイメージをデフォルトバリアントのコンテナイメージ、ミニバリアントのコンテナイメージ、フルバリアントのコンテナイメージをリリース用ストレージ２００７に分類して提供してもよい。デフォルトバリアントのコンテナイメージは、必須となるカテゴリーのコンテナ仮想環境にインストールされるべきパッケージから構成される。ミニバリアントは、必須となるカテゴリーの他、追加のカテゴリーのコンテナ仮想環境にインストールされるべきパッケージから構成される。フルバリアントは、全てのカテゴリーのコンテナ仮想環境にインストールされるべきパッケージから構成される。
【０１２７】
サービスインストーラー３０２は、これらデフォルトバリアントのコンテナイメージ、ミニバリアントのコンテナイメージ、フルバリアントのコンテナイメージをＨＤＤ１０１にインストールして、サービスＡ〜Ｃのインストール領域１１２〜１１４を得る。バックアップ作成プログラム３１１は、コンテナイメージから作成されたサービスＡ〜Ｃのインストール領域１１２〜１１４のバックアップをＵＳＢメモリ１０２のパーティション領域Ｂ１２２に書き込む。
【０１２８】
（変形例８）
バックアップ作成プログラム３１１は、コピー元、コピー先の指定を示すスクリプトファイルに基づき、バックアップを実行してもよい、スクリプトファイルは、コピー元のファイルパス、コピー先のファイルパスを含む。コピー元として、ＯＳインストール領域１１０のファイルパス、仮想化プログラムインストール領域１１１のファイルパスを記述し、コピー先として、ＵＳＢメモリ１０２のパーティション領域Ａ１２１、パーティション領域Ｂ１２２を記述することで、必要なコピーをバックアップ作成プログラム３１１に実行させてもよい。また、スクリプトファイルを示すコピー元ファイルパスを書き換えることで、バックアップの対象を変更してもよい。また、コピー先のファイルパスを書き換えることで、バックアップの保存先を変更してもよい。
【０１２９】
（変形例９）
上記実施形態に示したサービス提供装置３００１を、画像形成装置と一体になった一体機として構成してもよい。図１９は、サービス提供装置３００１と一体化された画像形成装置の構成を示す概略正面図である。同図に示す画像形成装置は、スキャンユニット１１００と、露光部１２０１と、イエロー（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）、ブラック（Ｋ）の再現色に対応した感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋと、現像装置１３００Ｙ、Ｍ、Ｃ、Ｋと、一次転写ローラー１４００Ｙ、Ｍ、Ｃ、Ｋと、中間転写ベルト１４０１と、用紙載置台１５０１と、ピックアップローラー１５０２と、給紙ローラー１５０３と、タイミングローラー１５０４と、二次転写ローラー１５０５と、定着部１６００とを備えている。
【０１３０】
スキャンユニット１１００は、ＡＤＦ（Ａｕｔｏ  Ｄｏｃｕｍｅｎｔ  Ｆｅｅｄｅｒ）１１０１を用いた読み取り、スキャンユニット１１００の移動による読み取りを実行して、画像データを得る。前者の読み取りでは、ＡＤＦ１１０１によってスリッドガラス１１０２に送り込まれた原稿に、スキャン部１１１０の光源１１０３が発する光を照射させ、反射光をミラー１１０４、１１０５、１１０６を用いてラインセンサー１１０７に導くことで、上記原稿を光学的に読み取る。後者の読み取りでは、スキャン部１１１０を移動させることで、プラテンガラス１１１１に載置された原稿の全域に、光源１１０３が発する照射光を照射させ、反射光をミラー１１０４、１１０５、１１０６を用いてラインセンサー１１０７に導くことで、上記原稿を光学的に読み取る。
【０１３１】
露光部１２０１は、不図示の帯電器によって帯電された感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋの周面を、レーザー光で走査することで、感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋの周面の電位レベルを低下させ、感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋの周面に、静電潜像を形成させる。
【０１３２】
現像装置１３００Ｙ、Ｍ、Ｃ、Ｋは、現像剤に循環・撹拌を施し、感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋの周面に送り込むことで、感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋの周面に形成された静電潜像を顕像化してトナー像を得る。
【０１３３】
一次転写ローラー１４００Ｙ、Ｍ、Ｃ、Ｋは、感光体ドラム１２１０Ｙ、Ｍ、Ｃ、Ｋ上に形成されたＹ、Ｍ、Ｃ、Ｋ色のトナー像を中間転写ベルト１４０１に一次転写する。
【０１３４】
ピックアップローラー１５０２は、揺動アーム１５０２ａの自由端に設けられ、用紙載置台１５０１に載置された用紙束１５０１ｓの最上位に位置する用紙を繰り出す。
【０１３５】
給紙ローラー１５０３はピックアップローラー１５０２の用紙繰り出し方向下流に位置し、ピックアップローラー１５０２によって繰り出された用紙を受け継いでタイミングローラー１５０４に送り出す。
【０１３６】
タイミングローラー１５０４は、中間転写ベルト１４０１上に多重転写されたＹ、Ｍ、Ｃ、Ｋ色のトナー像が二次転写位置１５０５Ａに搬送されるタイミングに合わせて回転を開始し、給紙ローラー１５０３によって搬送された用紙を二次転写位置５０５Ａに搬送する。
【０１３７】
二次転写ローラー１５０５は、用紙が二次転写位置１５０５Ａを通過する際に、中間転写ベルト１４０１上で多重転写されたＹ、Ｍ、Ｃ、Ｋ色のトナー像に静電作用を施すことで、当該トナー像を用紙上に二次転写する。
【０１３８】
定着部１６００は、加熱ローラー１６０２と、これに圧接して定着ニップ１６０２ｎを形成する加圧ローラー１６０３とを有し、二次転写ローラー１５０５により搬送されて来る用紙が定着ニップ１６０２ｎを通過する際、用紙上の未定着トナー像に加熱・加圧を施し、用紙に定着させる。
【０１３９】
図２に示したＨＤＤ１０１やスロット１０３、ブートＲＯＭ１０４、ＲＡＭ１０５、ＣＰＵ１０６、ＥＥＰＲＯＭ１０７は、本図の制御基板３００１ｂに実装され、画像形成装置の筐体内に収容される。かかる一体機の構成において、サービス提供装置３００１のサービスインストーラー３０２は、スキャンユニットにより光学的に読み取られた画像に文字、背景を挿入する機能を実現するゲストアプリケーション、スキャンユニットにより光学的に読み取られた画像を動画像に変換するゲストアプリケーションをインストールして、コンテナ仮想環境２０１、２０２、２０３の何れかで動作させる。スキャンユニットによる原稿読み取りに連動したサービスの提供が可能になる。
【０１４０】
また、画像形成装置のＷｉ−Ｆｉ(登録商標)接続機能を通じて、事業所内の機器と接続し、それらのデバイスのデータを集約して管理するという集約管理機能や、ＡＩによるリアルタイム分析を実行してもよい。更に、サービス提供装置３００１と一体になった画像形成装置の選択操作や実行指示操作のログ解析を行うようなゲストアプリケーションをインストールしてもよい。
【０１４１】
（変形例１０）
コンフィグレーションファイル３０１は、仮想化プログラムインストール領域１１１に格納されるものとしたが、仮想化プログラムインストール領域１１１とは別のディレクトリに格納されるとしてもよい。またコンフィグレーションファイルは、１つのサービスにつき１つ作成するとしたが、１つのサービスについて、複数のコンフィグレーションファイルを作成してもよい。
【０１４２】
（変形例１１）
実施形態では、マウントポイントで隔離された名前空間により、各サービスに対応するゲストアプリケーションを動作させたが、これに限らない。ホスト名及びドメイン名により隔離されるＵＴＳ（Unix Time-sharing System）名前空間、プロセスＩＤにより隔離されるＰＩＤ名前空間において、複数サービスのそれぞれに対応するゲストアプリケーションを動作させてもよい。また、仮想化プログラム配信サーバー２０２１から送信される仮想化プログラム３００のバックアップを、ＵＳＢメモリ１０２に記録してもよい。この場合、仮想化プログラム３００のバックアップは、起動ドライブであるパーティション領域Ａ１２１に記録してもよいし、ゲストアプリケーションと共に、パーティション領域Ｂ１２２に記録してもよい。
【０１４３】
（変形例１２）
ベースＯＳ２００、仮想化プログラム３００、ゲストアプリケーションのプログラム資材であるパッケージは、実行形式のバイナリーファイル、データファイルをアーカイブファイルに収録して、改竄検出コードを付すことで構成してもよい。アップデートのためのパッケージは、前回送付されたパッケージとの差分（置換対象、追加対象となるファイルやパッチデータ）から構成されてもよい。
【０１４４】
また、ゲストアプリケーションのインストールにあたって、開発部門のクライアント機器１００１〜１００３により作成された実行プログラムと、その実行プログラムが参照するライブラィとを別々にサービスＡ〜Ｃのインストール領域１１２〜１１４に格納してもよい。
【０１４５】
また、本実施形態において、サービス提供装置３００１は、提供するサービスの数を「３つ」とし、各サービスのそれぞれに対応するゲストアプリケーション２０１ｇ〜２０３ｇをコンテナ仮想環境２０１〜２０３で動作させたが、これに限らない。つまり、２以下のサービスに対応するゲストアプリケーションをインストールして、２以下のコンテナ仮想環境で動作させてもよいし、４以上のサービスに対応するゲストアプリケーションをインストールして、４以上のコンテナ仮想環境で動作させてもよい。また、ベースＯＳ２００として、Linux(登録商標)を一例としたがこれに限らない。仮想化プログラム３００を動作させ得るオペレーティングシステムであれば、他のオペレーティングシステムを採用してもよい。
【産業上の利用可能性】
【０１４６】
本発明は、コンテナ仮想環境を構築して、様々なゲストアプリケーションを起動させるとの動作形態で、継続的なサービス提供が可能になるので、ＯＡ機器産業を始めとする様々な業種の産業分野で利用される可能性がある、
【符号の説明】
【０１４７】
１０１    ＨＤＤ
１０２    ＵＳＢメモリ
１０３    スロット
１０４    ブートＲＯＭ
１０５    ＲＡＭ
１０６    ＣＰＵ
１０７    ＥＥＰＲＯＭ
１０８    ＮＩＣ
１１０    ＯＳインストール領域
１１１    仮想化プログラムインストール領域
１１２〜１１４  サービスＡ〜Ｃのインストール領域
１２３    メディア間インストールプログラム
１３０    ディスクイメージ
１３２〜１３４  サービスＡ〜Ｃのインストール領域のバックアップ
１４１    ブートストラッププログラム
２００    ベースＯＳ
２０１〜２０３  コンテナ仮想環境
２０１ｓ〜２０３ｓ  名前空間
２０１ｇ〜２０３ｇ  ゲストアプリケーション
２０１ｍ〜２０３ｍ  パッケージマネージャー
３００    仮想化プログラム
３０１    コンフィグレーションファイル
３０２    サービスインストーラー
３０３    コンテナエンジン
３０４    コントロールグループ
３１０    テンプレート
３１１    バックアップ作成プログラム
３２２    ユーザー設定情報
２００１    アプリケーション配信サーバー
２００２    ハードウェアリソース
２００３    ハイパーバイザー
２００４〜２００６    ゲストＯＳ
２００７    リリース用ストレージ
２０１１    ゲストＯＳ配信サーバー
２０１４〜２０１６    サーバープログラム
２０１７    提供者情報
２０２１    仮想化プログラム配信サーバー
３００１    サービス提供装置
【図１】
2019219866.tif 000003
【図２】
2019219866.tif 000004
【図３】
2019219866.tif 000005
【図４】
2019219866.tif 000006
【図５】
2019219866.tif 000007
【図６】
2019219866.tif 000008
【図７】
2019219866.tif 000009
【図８】
2019219866.tif 000010
【図９】
2019219866.tif 000011
【図１０】
2019219866.tif 000012
【図１１】
2019219866.tif 000013
【図１２】
2019219866.tif 000014
【図１３】
2019219866.tif 000015
【図１４】
2019219866.tif 000016
【図１５】
2019219866.tif 000017
【図１６】
2019219866.tif 000018
【図１７】
2019219866.tif 000019
【図１８】
2019219866.tif 000020
【図１９】
2019219866.tif 000021