説明

クラウドコンピューティングシステム、その制御方法、およびそのプログラム

【課題】画像形成装置のファームウェア配信前に、ユーザーのデータや機器の設定を反映した形で機能テスト及びパフォーマンステストをできるようにする。
【解決手段】クラウドコンピューティングシステムは、ファームウェアの配信を受けようとする画像形成装置の各種パラメータ(CPU、メモリー、ストレージ、アプリケーション種類、ユーザー情報、ユーザー設定)を受信する(501)と仮想マシンを起動し(505)、受信したパラメータに応じた仮想デバイスを自動的に用意し、仮想MFP上でファームウェアの機能テスト(510)及びパフォーマンステスト(512)を実行し、問題があればエラーメッセージを作成し(516)、問題がなければファームウェアを画像形成装置にダウンロードする(519)。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想マシンを有するクラウドコンピューティングシステム、その制御方法、およびそのプログラムに関する。
【背景技術】
【0002】
従来のソフトウェア、ファームウェア配信管理システムには、ネットワークを介して複数の非汎用コンピュータデバイスのソフトウェア機能を動的に管理する方法がある。(例えば、特許文献1参照)
特許文献1には、非汎用コンピュータデバイスの夫々から状態表示を受信し、修正パッケージの送信を遅延させることが開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2008−123518(P2008−123518A) 株式会社リコー
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし従来のソフトウェア、ファームウェア配信管理システムでは、ファームウェア配信前に事前にユーザーのデータや、機器の設定を反映した形で機能テスト、パフォーマンステストをするような機能はなかった。
基本的に、ファームウェア、およびファーム上で動作するアプリケーションなど、デバイス上で動作するソフトウェアはメーカーにより動作保障が行われる。PCなどの高度に互換性を保障されたデバイス群や、ゲーム機、スマートフォンなどプラットフォームが固定されたデバイスについては事前のテストによる保障などは有効と考えられる。しかし一般に、MFP(Multifunction Peripheral)などプラットフォームの設計が比較的変わる可能性のあるデバイスにおいては、過去機種の設定において現行機種全てが動作することを保障するのは困難な場合がある。そのような場合、クラウド上にさまざまな機種の仮想環境を用意して事前にテストできるようにすると、実機買い替え前、ファームウェア配信前に動作保障、パフォーマンス検証が可能となる。
【0005】
(例1)ずっと以前の機種から最新の廉価版機種に乗り換える場合、システムリソースの問題から同時起動できるアプリの件数が減ってしまっていた
(例2)障害対策の新ファームをリリースしたが、顧客の特殊なアプリ(開発、品保で事前入手が困難)が動作しなくなってしまった。
【0006】
また、ユーザーが既存MFPを新機種に置き換える場合、同じ機能を持つ新機種でも、システムリソース(CPU、メモリー、ストレージ、OS設定(スレッド数など))の異なる場合がある。そのとき、置き換えた新機種上でのファームウェア機能のパフォーマンスや、MFP上で動作するアプリケーションのパフォーマンス、動作を予め検証できない、という課題がある。
【課題を解決するための手段】
【0007】
本発明の一実施系に係るクラウドコンピューティングシステムは、画像形成装置から、前記画像形成装置のリソース情報、および前記画像形成装置のOSとは異なるプラットフォームに関する情報とを受信したことに応じて、前記情報に対応するメッセージを記憶手段に格納する、要求受信プログラムを実行することにより実現される要求受信手段と、前記記憶手段に対し前記メッセージの取得要求を定期的に行い、前記記憶手段から前記メッセージを取得した場合は仮想マシンの生成を指示する、バックエンド処理プログラムを実行することにより実現される指示手段と、前記指示手段により生成された仮想マシンであって、前記指示手段によりインポートされた情報を基に、前記画像形成装置のリソース状況、および前記画像形成装置のプラットフォームに関連する状況を再現する、バックエンド処理プログラムを実行することにより実現されるバックエンド処理手段と、を有し、前記バックエンド処理手段は、前記画像形成装置に関連するファームウェアのアップデートを検知したことに応じて、アップデートされたファームウェアを実行し、ファームウェアを正常に実行できなかった場合は、前記アップデートされたファームウェアを前記画像形成装置にインストールさせないためにエラーメッセージを前記画像形成装置へ送信し、ファームウェアを正常にできた場合は、前記アップデートされたファームウェアを前記画像形成装置にインストールさせるために前記アップデートされたファームウェアを前記画像形成装置へ送信することを特徴とする。
【発明の効果】
【0008】
新ファームウェアは、一連のバックエンド処理により実際のユーザーデータ、設定を使ったテストで正常動作が確認され、ユーザーデータが既にインポートされた状態となっている。したがって、前記画像形成装置104に前記新ファームウェアがインストールされると、ユーザーデータやデバイス設定がファームウェア更新以前と同様にされた状態でシステムを起動することができる。また、事前に前記サーバーコンピューター群102上で機能テストをしているので、ファームウェアアップデートに伴う機能エラー等を防止することができる。また、事前に前記サーバーコンピューター群102上でパフォーマンステストをおこなっているので、旧ファームウェアとの処理速度の比較ができることも特徴である。
【図面の簡単な説明】
【0009】
【図1】全体構成を示す図である
【図2】画像形成装置の内部構成を示す図である
【図3】情報処理装置の内部構成を示す図である
【図4】サーバーコンピューター群のプラットフォームシステムを示す図である
【図5】バックエンド処理部における処理を示すフローチャートである
【図6】ファームウェアアップデート処理を示したフローチャートである
【図7】要求受信部のリクエスト受付処理を示すフローチャートである
【図8】画像形成装置のリクエスト内容の一部である
【図9】リクエスト処理部が作成したキューメッセージ内容である
【発明を実施するための形態】
【0010】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【0011】
[全体構成]
実施例1のプリントシステムを構成している各装置について、図1を参照して詳細に説明する。図1には、プリントシステムを構成している各装置がネットワーク100を介して接続されている様子が示されている。プリントシステムを構成している各装置とは、サーバーコンピュータ群102、文書サーバー103、画像形成装置104、クライアントコンピュータ105である。サーバーコンピュータ群102は、クラウドコンピューティングシステムに相当する。
【0012】
ネットワーク100は、上述の各装置の間で情報をやり取りするための通信回線である。インターネット101は、ファイアウォールを越えて上述の各装置間で情報をやり取りするための通信回線である。インターネット101により、サーバーコンピュータ群102と文書サーバー103が属するネットワーク100と、画像形成装置104とクライアントコンピュータ105が属するネットワーク100とは、ファイアウォールを越えて通信が可能である。ネットワーク100、インターネット101は、例えば、TCP/IPプロトコルなどをサポートする通信回線網であり有線・無線は問わない。実施例1の図1において、サーバーコンピュータ群102は、1台のサーバーとして示されているが複数台のサーバーコンピュータで構成されている。
【0013】
[画像形成装置の説明]
次に、図1のプリントシステムを構成している各装置の内部構成について詳細に説明する。始めに、画像形成装置104の内部構成について図2を用いて説明する。図2は、画像形成装置104の内部構成を例示するブロック図である。
画像形成装置104は、画像処理ユニット1041、および印刷ユニット1042から構成される。画像処理ユニット1041は、CPU1043、直接記憶部1044、間接記憶部1045、ユーザーインターフェース1047、外部インターフェース1048から構成されている。
【0014】
CPU1043は、所定のプログラムを実行し、画像処理装置104の各種制御を指示するユニットである。CPU1043は、CPU(Central Processing Unit)により実現される。直接記憶部1044は、CPU1043がプログラムを実行する際に使用するワークメモリであり、CPU1043が実行するプログラムは直接記憶部1044にロードされる。直接記憶部1044は、RAM(Random Access Memory)により実現される。間接記憶部1045は、アプリケーションプログラム、およびプラットフォームプログラムを含む各種プログラムが記憶されている。また関節記憶部1045にはデバイスの設定やアプリケーションの設定、後述するプラットフォームアプリケーションの設定等が組み込みデータベースのストレージファイルとして保存されている。間接記憶部1045に記憶されている各種プログラムは、CPU1043がプログラムを実行する際に直接記憶部1044へ移動する。間接記憶部1045は、SSD(Solid State Drive)、または、HDD(Hard Disc Drive)により実現される。なお、CPU1043はマルチプロセッサでも良い。
【0015】
ここで、プラットフォームについて詳細に説明する。プラットフォームの実現により、ユーザーが独自に開発した新しいアプリケーションを画像形成装置102上で実行できる他、画像形成装置102の操作画面をカスタマイズすることが可能になる。
プラットフォームの実現方法について説明する。CPU1043は、間接記憶部1045に記憶されたプラットフォームプログラムを直接記憶部1044に移動する。移動が完了するとCPU1043は、プラットフォームプログラムを実行することができる状態になる。本発明の実施例1では、CPU1043がプラットフォームプログラムを実行することを、プラットフォームが起動すると称する。なお、プラットフォームは、画像形成装置104のファームウェア上で動作することになる。プラットフォームプログラムは、オブジェクト指向で記述されたアプリケーションプログラムを実行するための環境を提供するものである。
【0016】
プラットフォーム上でアプリケーションプログラムを実行する方法について詳細に説明する。本発明の実施例1において、プラットフォーム上には、印刷要求を受け付ける印刷ソフトウェアが動作している。印刷ソフトウェアは、ネットワークを介して接続されているデバイスから、例えば、HTTP(Hyper Text Transfer Protocol)と言った通信プロトコルによって印刷データを受信できる。印刷ソフトウェアは、受信した印刷データをファームウェアに送信し、印刷データを受信したファームウェアは印刷データ処理を開始する。なお、印刷データが処理をせずに印刷できるようなものであれば、ファームウェアは印刷データ処理を省く。このように、プラットフォームでアプリケーションプログラムを実行することによって、画像形成装置104の制御を実現することができる。例えば、スキャナユニットを制御する他、プリントユニットを制御することが可能になる。
【0017】
アプリケーションプログラムの実行方法について説明する。起動したプラットフォームは、間接記憶部1045に記憶されたアプリケーションプログラムを直接記憶部1044に移動する。移動が完了すると、プラットフォームはアプリケーションプログラムを実行することができる状態になる。そして、プラットフォームはアプリケーションプログラムを実行する。このように、アプリケーションプログラムを実行することで提供できるプラットフォームの機能を、本発明の実施例1ではプラットフォームアプリケーションと呼ぶ。さらに、プラットフォームは、本発明の実施例1で開示するフローチャートの各処理の一部を行うことが可能である。
【0018】
ユーザーインターフェース1047は、ユーザーからの処理依頼を受け付けるために必要なユニットである。例えば、キーボード、マウス等を通してユーザーが入力した指示に応じた信号を受け付ける。外部インターフェース1048は、外部装置からのデータの受信や外部装置へのデータの送信が可能となっている。例えば、外部装置としては、外付けHDDや外付けUSBメモリ等の外付け記憶装置、またはネットワークを介して接続された別体のホストコンピュータや画像形成装置等の別体装置が含まれる。画像形成装置102は、ネットワーク100、およびインターネット101を介して、クライアントコンピュータ105、サーバーコンピュータ群102等と通信可能である。
2番目に、サーバーコンピュータ群102、文書サーバー103、クライアントコンピュータ105を含む情報処理装置の内部構成について図3を用いて説明する。図3は、情報処理装置106の内部構成を例示するブロック図である。情報処理装置106は、ユーザーインターフェース1061、CPU1062、直接記憶部1063、間接記憶部1064、外部インターフェース1065から構成されている。
ユーザーインターフェース1061は、ユーザーからの処理依頼を受け付けるために必要なユニットである。例えば、キーボード、マウス等を通してユーザーが入力した指示に応じた信号を受け付ける。
CPU1062は、所定のプログラムを実行し情報処理装置106の各種制御を指示するユニットである。CPU1062は、CPUにより実現される。直接記憶部1063は、CPU1062がプログラムを実行する際に使用するワークメモリであり、CPU1062が実行するプログラムは直接記憶部1063にロードされる。直接記憶部1063は、RAMで構成されている。間接記憶部1064は、アプリケーションプログラム、およびOS(Operating System)を含む各種プログラムが記憶されている。間接記憶部1064に記憶されている各種プログラムは、CPU1062がプログラムを実行する際に直接記憶部1063へ移動する。間接記憶部1064は、ROM、または、HDDで構成されている。外部インターフェース1065は、ネットワーク100に接続されており、ネットワーク100に接続されている他の装置と通信が可能となる。
【0019】
[仮想マシンの説明]
次に、サーバーコンピュータ群102のプラットフォームシステムについて図4を参照しながら詳細に説明する。図4は、サーバーコンピュータ群102内の各種機能を示した図である。図4において、サーバーコンピュータ群102内にある物理ハードウェア・リソースは、サーバーコンピュータ群102のプラットフォームに使用される。サーバーコンピュータ群102のプラットフォーム利用者は、このサーバーコンピュータ群102内にある物理ハードウェア・リソースをコンピューティング・リソースとして使用できる。
サーバーコンピュータ群102のプラットフォームシステム(Operating System)は、次のような機能を持つ。仮想マシン(Virtual Machines)401、および402。ファブリックコントローラ(Fabric Controller)403。ロードバランサー(Load Balancer)404。キューサービス(Queue)405。ストレージ(Storage)406。管理仮想マシン407である。
サーバーコンピュータ群102上で動作するプラットフォームシステムの内部には、仮想マシン401、402が複数存在する。仮想マシンとは、仮想化技術によって物理的なサーバーコンピュータ群102を論理的なコンピュータに分割し、分割された中で独立したオペレーティングシステムをもって動作する論理的なコンピュータのことである。この論理的なコンピュータの単位は、インスタンスとして数えられる。本発明の実施例1では、インスタンス数1つに対し、サーバーコンピュータ群102内の1台のサーバーコンピュータ上で動作する。
【0020】
仮想マシン401は、要求受信部(Web Role Instance)4011、要求受信部エージェント(Agent)4012で構成される。要求受信部4011は、後述するロードバランサ−404を介してユーザーからの処理依頼を受信する。また、要求受信部4011は、キューサービス405を介してバックエンド処理部402への処理依頼を送信する。
要求受信部4011の高い可用性を確保するために、外部ネットワークからの要求(ここではHTTPによる通信)は、仮想マシン401の外部にあるロードバランサー404を通じて行われる。ロードバランサー404は、外部ネットワークからの要求を一元的に管理し、同等な要求受信部の機能を有する複数の仮想マシンに対し、選択的に要求を転送するものである。要求受信部エージェント4012は、仮想マシン401の使用状況、要求受信部4011の稼動状態、仮想マシン401のリソースの使用状況、および要求受信部4011のエラーを含む各種情報を収集し、ファブリックコントローラ403に定期的に送信する。
要求受信部4011、バックエンド処理部4021の各インスタンスは、ファブリックコントローラ403によって管理されている。そのため、各インスタンスの拡張性と可用性が保証される。例えば、要求受信部4011、またはバックエンド処理部4021において、ある特定のインスタンスがサーバーの故障によって停止したとする。この場合、ファブリックコントローラ403は、要求受信部エージェント4012、またはバックエンド処理部エージェント4022から定期通知を受け取れなくなる。定期通知を受け取らなくなったファブリックコントローラ403は、新しいインスタンスに処理が委譲されるように仮想マシンに指示を出す。結果、処理を実行しているインスタンス数が一定に保たれるため、処理の遅延を抑えることができる。
【0021】
仮想マシン402は、バックエンド処理部(Worker Role Instance)4021、バックエンド処理部エージェント(Agent)4022で構成される。バックエンド処理部4021は、キューサービス405を介して要求受信部4011からの処理依頼を受信する。バックエンド処理部4021は、キューサービス405を介して要求受信部4011から受信した処理依頼を実行する。また、バックエンド処理部4021は、スケールアウトする。スケールアウトとは、仮想マシン402が増加し、バックエンド処理部4021のインスタンスが増加すること指す。バックエンド処理部4021のインスタンスが増加すると、バックエンド処理部1つ当たりのデータ処理量が減少する。これにより、ユーザーからの処理依頼に対する結果をより早く返すことができる。なお、要求受信部4011は仮想マシンが要求受信プログラムを実行することで実現され、バックエンド処理プログラムは仮想マシンがバックエンド処理プログラムを実行することで実現可能となる。
キューサービス405は、要求受信部4011とバックエンド処理部4021とが非同期でデータ通信するためのサービスを提供する。要求受信部4011、およびバックエンド処理部4021は、キューサービス405に対し各種指示を出すことで、非同期でデータ通信する。これについて、具体的に説明する。要求受信部4011がキューサービス405に対して行う指示とは、キューメッセージの追加指示である。バックエンド処理部4021がキューサービス405に対して行う指示とは、キューメッセージの取得指示、キューメッセージの削除指示である。
【0022】
要求受信部4011とバックエンド処理部4021が非同期でデータ通信する一連の動作について説明する。要求受信部4011は、ユーザーからの処理依頼に応じたキューメッセージを作成し、キューメッセージをキューに追加するようにキューサービス405に追加指示を送信する。追加指示を受信したキューサービス405は、キューにキューメッセージを追加する。バックエンド処理部4021は、キューメッセージを取得するために、キューサービス405に取得指示を出す。取得指示を受けたキューサービス405は、キューメッセージと、キューメッセージ毎に固有に割り振られたメッセージIDと、受取IDとを取得指示に対するレスポンスとしてバックエンド処理部4021に返す。メッセージIDとは、キューメッセージを一意に定めるためにキューメッセージごとに割り振られた固有の情報である。受取IDは、処理が終了したバックエンド処理部4021がキューメッセージを削除指示する際に使用する。キューメッセージと、メッセージIDと、受取IDは、関連付けされて保存されることになる。バックエンド処理部4021は、処理依頼を完了すると、受取IDに対応するキューメッセージの削除指示をキューサービス405に対して行う。削除指示を受けたキューサービス405は、バックエンド処理部4021が指示した受取IDに対応するキューメッセージをキューから削除する。これにより、削除指示を出したバックエンド処理部4021以外のバックエンド処理部4021が同じキューメッセージを処理するという冗長な処理を防ぐことができる。
【0023】
また、キューサービス405は、キューに追加されているキューメッセージを不可視、または可視にする機能を持つ。不可視とは、バックエンド処理部4021がキューに追加されているキューメッセージの取得要求をした場合に、キューサービス405はバックエンド処理部4021に対してキューメッセージを渡さないことを指す。バックエンド処理部4021がキューからキューメッセージを取得すると、取得されたキューメッセージはキューサービス405によって不可視になる。可視とは、バックエンド処理部4021がキューに追加されているキューメッセージの取得要求した場合に、キューサービス405がバックエンド処理部4021に対してキューメッセージを渡すことを指す。バックエンド処理部4021に取得され不可視になっているキューメッセージは、処理を行っているバックエンド処理部4021から処理結果が一定時間返ってこない場合にキューサービス405によって可視になる。
【0024】
ストレージサービス406は、データ保存に利用されるストレージを提供する。バイナリデータの集合を保存する機能を提供する。また、後述する処理確認テーブル、およびキュー管理テーブルを保持する機能も提供する。
仮想マシン407は、要求受信部4011、要求受信部エージェント4012で構成される。仮想マシン401との違いは、管理ユーザーのみが利用できる要求受信部4011のインスタンスを持つ仮想マシンということである。この仮想マシンの要求受信部4011により管理ユーザーは、キュー管理テーブルを操作することができる。
【0025】
本実施例においては、前記仮想マシン402に画像形成装置104のメインコントローラーと同等の状況を実現させる。画像形成装置104には処理能力、機能の違いに応じて様々なタイプがある。サーバーコンピュータ群102においては、バックエンド処理部4021が前記キューサービス405を経由して前記画像形成装置104からの要求を受け付ける。前記バックエンド処理部4021は、後述するパラメータに沿って前記画像形成装置104の処理能力、機能に応じ、前記複数タイプの仮想マシン402のイメージから最適なものを選択し、新たなファームウェアが実行される画像形成装置104を擬態した仮想マシン402の実態を生成する(後述)。
【0026】
[要求受信部処理]
図7は、本実施例の仮想マシン401における、要求受信部(Web Role Instance)4011の、リクエスト受付処理を示したフローチャートである。要求受信部4011が、画像形成装置104からのリクエストを受信することから本フローチャートは開始する(ステップ701)。画像形成装置のリクエストを、図8に示す。図8は画像形成装置104のリクエスト内容の一部である。リクエストは画像形成装置104がHTTPプロトコルで送信し、要求受信部4011が受け取る。本リクエストは、図8のデバイスに関する情報のXML文書と、前記画像形成装置104の各種ユーザーデータを含む組込みデータベースをエクスポートしたバイナリデータを圧縮した部分と、前記画像形成装置にインストールされたプラットフォームアプリケーション群から成る。
【0027】
デバイスに関する情報は画像形成装置104を表す<device>要素の子要素として、機種名を示す<name>要素、インストールされているファームウェアのバージョンを示す<firmver>要素、デバイスシリアル番号を示す<serialno>要素を含む。また前記画像形成装置104のハードウェア情報、即ちリソース情報を表す<hardware−info>要素の子要素として、<cpu>要素、<memory>要素、<storage>要素がある。
前記<cpu>要素は画像形成装置104のCPU1043の属性を表す。前記<cpu>要素には子要素として、該CPU1043のコア数を示す<vcpu>要素と、該CPU1043のアーキテクチャを示す<type>要素と、該CPU1043のクロックをMHzで示す<clock>要素がある。前記<memory>要素は前記画像形成装置104のメインコントローラーボードに搭載された直接記憶部1044のメモリ容量をメガバイト単位で表す。前記<storage>要素は前記画像形成装置104のメインコントローラーボードに搭載された間接記憶部1045であるHDD(ハードディスクドライブ)やSSD(ソリッドステートドライブ)の容量をギガバイト単位で表す。
【0028】
また図8の<applications>要素は、ファームウェアとは別に画像形成装置104に後からインストールしたプラットフォームアプリケーション群を示す、プラットフォームに関する情報である。前記<applications>要素の子要素として、インストールされたプラットフォームアプリケーションの各々を示す<application>要素がある。前記<application>要素には、子要素としてプラットフォームアプリケーション名を示す<name>要素と、該プラットフォームアプリケーションの識別子を示す
<uuid>要素と、該プラットフォームアプリケーションのバージョンを示す<version>要素がある。
本実施例図8の場合、Application_A(バージョン1.0.0)、Application_C(バージョン2.0.1)、Application_F(バージョン1.7.2)の3つのプラットフォームアプリケーションがインストールされていることを示す。
図8に示されるリクエストを受信した(ステップ701)要求受信部4011は、次に、リクエストに含まれるユーザーデータをストレージサービス406に格納する(ステップ702)。格納先は、要求受信部4011が前記リクエストに含まれるデバイスデータからデバイス名とデバイスシリアル番号を読み取り、以下のように/var/data の下のデバイス名、デバイスシリアル番号の下となる。
【0029】
/var/data/XX3000/ABC12345/user.db
図8に示されるリクエストを受信した(ステップ701)要求受信部4011は、次に、リクエストにバイナリを添付した形で含まれるプラットフォームアプリケーションをストレージサービス406に格納する(ステップ703)。格納先は、要求受信部4011が前記リクエストに含まれるデバイスデータからデバイス名とデバイスシリアル番号を読み取り、以下のように/var/data の下のデバイス名、デバイスシリアル番号の下となる。
/var/data/XX3000/ABC12345/Application_A
/var/data/XX3000/ABC12345/Application_C
/var/data/XX3000/ABC12345/Application_F
要求受信部4011は次に、キューサービス405の参照を取得し(ステップ704)、キューメッセージを作成する(ステップ705)。該キューメッセージは図9のように作成される。
【0030】
図9は、要求受信部4011が該リクエストを受信し作成したキューメッセージである。図8に示した画像形成装置104のリクエスト内容に、各<application>要素の子要素として、前記ストレージサービス406にプラットフォームアプリケーションを格納した際の格納先パスである<path>要素を加える。また、前記ユーザーデータを表す<userdata>要素を加える。<userdata>要素の子要素には前記ストレージサービス406に格納した際の格納先パスである<path>要素が含まれる。要求受信部4011は、上記キューメッセージを作成すると、前記キューサービス405に前記キューメッセージを挿入し(ステップ706)、処理を終える。
【0031】
[バックエンド処理]
図5は、本実施例の前記バックエンド処理部4021における処理を示したフローチャートである。
前記バックエンド処理部4021は、前記キューサービス405から前記画像形成装置104のリクエストを受け付ける(ステップ501)。本リクエストは図9に示したキューメッセージから成る。バックエンド処理部4021は受信した前記リクエストを解析し、XML文書の要素で示された各パラメーターが後述する仮想マシンのインストールイメージと合致するかどうか確認する。また、バックエンド処理部4021は、ユーザーデータがストレージサービス406の指定のパスに格納されているかどうか確認する(ステップ502)。
【0032】
もし受信した前記キューメッセージ(図9)が後述する仮想マシンに合致しない、あるいはユーザーデータがストレージサービス406の指定のパスに存在しないのであれば(ステップ503)、リクエストパラメーター異常、あるいはユーザーデータ異常のエラーメッセージを作成し(ステップ516)、メッセージを前記画像形成装置104に送信して(ステップ515)処理を終える。もしキューメッセージに問題がなければ(ステップ503)、該キューメッセージから<hardware−info>要素以下の子要素の各々を取り出し(ステップ504)、仮想マシンを作成、実態生成する(ステップ505)。この仮想マシンは、画像形成装置104のリソース状況、および画像形成装置のプラットフォームに関連する状況を再現する。
【0033】
[仮想マシンイメージの作成、実態生成]
本実施例においては、仮想マシン402の制御にオープンソースの仮想マシン制御 APIを用いる。仮想マシン制御 APIは仮想マシンの制御を抽象化したライブラリで、Xen、KVM、QEMUなどの仮想マシンをサポートしている。またCPUとしてx86、x86?64、IA64、Powerなどをサポートしており、ビット(32/64)およびエンディアンを問わない、事実上の標準となっているAPIである。
本実施例の場合、仮想マシンイメージは、画像形成装置104の種類に応じて以下の3種類である。もちろん本仮想マシンイメージは、サーバーコンピュータ群の能力と、画像形成装置104の他のタイプに応じてパラメータを変更することによりさらに多くのパターンを作り出すことができる。
【0034】
インストールイメージ(1)
割当てるCPU数:1
メモリサイズ:512MB
ディスクサイズ:4GB
ディスクパス: /var/lib/firm_images/XX3000/Version/XX3000.img
仮想マシン名:XX3000
インストールイメージ(2)
割当てるCPU数:2
メモリサイズ:1GB
ディスクサイズ:20GB
ディスクパス: /var/lib/firm_images/XX4000/Version/XX4000.img
仮想マシン名:XX4000
インストールイメージ(3)
割当てるCPU数:4
メモリサイズ:2GB
ディスクサイズ:80GB
ディスクパス: /var/lib/firm_images/XX5000/Version/XX5000.img
仮想マシン名:XX5000
各々のディスクパスに収められるイメージは、以下のように作成する。各機種(本実施例の場合上記1,2,3)向け新ファームウェアがリリースされると、ストレージサービス406の所定のパスにアップロードされる。例えば(1)の場合でファームウェアバージョン1.1.2がリリースされた場合、以下パスにファームウェア一式のインストールイメージがアップロードされる。
【0035】
/var/lib/firm_images/XX3000/V1.1.2/XX3000.img
上記インストールイメージは、オペレーティングシステム、各種ライブラリ、各種アプリケーションモジュールをファームウェアとして構成し、dd コマンド等で起動可能イメージを作成したものである。前記インストールイメージは、libvirt APIを実装したコマンドより次のように起動され、仮想マシンの実態が生成される。以下は前記インストールイメージ(1)を起動する場合のコマンド例である。
【0036】
virt−install −−accelerate −−hvm −−connect qemu:///system −−network
network:default −−name XX3000 −−ram=512 −−os−type=Linux
−−os−variant=unix −−file=/var/lib/firm_images/XX3000/V1.1.2/XX3000.img
−−file−size=4
バックエンド処理部4021は、画像形成装置104からのリクエストを受信し、リクエスト内容(後述)に応じて上記コマンドを実行し、新たな仮想マシン402を生成する(ステップ505)。もし前記仮想マシン402が正常に起動しなかったら(ステップ506)、仮想マシン起動失敗のエラーメッセージを作成し(ステップ516)、該メッセージを前記画像形成装置104に送信して(ステップ515)処理を終える。
【0037】
前記仮想マシン402が正常に起動したら(ステップ506)、次にバックエンド処理部4021は、ステップ504にて前記キューメッセージから取り出した<userdata>要素の子要素である<path>要素に指定されたストレージサービス406のディレクトリ下にあるユーザーデータのデータベースファイルを、前記仮想マシン402にインポートする(ステップ507)。本実施例の場合、組み込みデータベース(SQLite)の .import コマンドを用いてデータベースをインポートする。
【0038】
もし前記仮想マシン402へのデータベースのインポートに失敗したら、(ステップ509)、ユーザーデータインポート失敗のエラーメッセージを作成し(ステップ516)、該メッセージを前記画像形成装置104に送信して(ステップ515)処理を終える。
もし前記仮想マシン402へのデータベースのインポートに成功したら、(ステップ509)、次にバックエンド処理部4021は、ステップ504にて前記キューメッセージから取り出した<application>要素の子要素である<path>要素に指定されたストレージサービス406のディレクトリ下にあるプラットフォームアプリケーションを、前記仮想マシン402にインストールする(ステップ517)。本実施例の場合、前記仮想マシン402のアプリケーションディレクトリへの、前記プラットフォームアプリケーションのコピーによりインストールを行う。
もし前記仮想マシン402へのプラットフォームアプリケーションのインストールに失敗したら、(ステップ509)、プラットフォームアプリケーションインストール失敗のエラーメッセージを作成し(ステップ516)、該メッセージを前記画像形成装置104に送信して(ステップ515)処理を終える。
もし前記仮想マシン402へのプラットフォームアプリケーションのインストールに成功したら、前記仮想マシン402は、新ファームウェアにユーザーデータをインポートし、プラットフォームアプリケーションをインストールした状態となる。これは前記リクエスト元の画像形成装置104に新ファームウェアをインストールし、ユーザーデータをインポートしてプラットフォームアプリケーションをインストールした状態を、サーバー上に仮想的に作り上げた状態である。この状態で、次に前記仮想マシン402は、本仮想マシン402の機能テストを行う(ステップ510)。
【0039】
機能テストは、次のように行う。本実施例の画像形成装置104におけるファームウェアは、syslog ライブラリによるログ出力を行う。ファームウェアの各ライブラリ、アプリケーションは、syslog の info レベルで各関数の呼び出し開始、終了を出力する。通常、画像形成装置104上で実行するファームウェアのログ出力レベルは、ログ出力量、パフォーマンスを考慮してwarnレベルまでの出力となる。
【0040】
しかし前記仮想マシン402の機能テストを行う場合、バックエンド処理部4021は、syslogd のログ出力レベルプライオリティを debug レベルまで出力するように設定してテストを行う。ここで前記仮想マシン402のファームウェアをテストすると、infoレベルのログが出力され、関数レベルでの動作を確認することができる。テスト項目は、ファームウェア開発時の各種結合テストを行う。例えばPDFファイル生成機能の場合、本機能テストは、ストレージサービス406に予め用意されたスキャンデータを、前記仮想マシン402のPDF生成機能関数に入力し、ログをログ出力ファイルに記録する。
【0041】
ここでバックエンド処理部4021がログ出力ファイルを確認し、もしsyslog 出力にエラーや例外が出力されていたら、機能テスト失敗のエラーメッセージを作成し、メッセージを前記画像形成装置104に送信し(ステップ515)処理を終える。ここでバックエンド処理部4021が前記ログ出力ファイルを確認し、もしsyslog 出力にエラーや例外が出力されていなければ(ステップ511)、次にパフォーマンステストを行う(ステップ512)。
【0042】
パフォーマンステストは、次のように行う。バックエンド処理部4021は、受信した前記キューメッセージ(図9)に含まれる<device>要素の子要素である<firmver>要素から、画像形成装置104のファームウェアバージョンを取得する。そしてそのファームウェアバージョンから、過去のファームウェアインストールイメージを検索して、ファームウェアアップデート前の画像形成装置104に相当する仮想マシン402を生成する。
【0043】
過去のファームウェアも、新規ファームウェア同様に、ストレージサービス406の所定のパスにアップロードされている。本実施例の場合、以下パスにファームウェア一式のインストールイメージがアップロードされている。
/var/lib/firm_images/XX3000/V1.1.1/XX3000.img
上記インストールイメージは、オペレーティングシステム、各種ライブラリ、各種アプリケーションモジュールをファームウェアとして構成し、dd コマンド等で起動可能イメージを作成したものである。
前記インストールイメージは、libvirt APIを実装したコマンドより次のように起動され、仮想マシンの実態が生成される。以下は前記インストールイメージを起動する場合のコマンド例である。
【0044】
virt−install −−accelerate −−hvm −−connect qemu:///system −−network
network:default −−name XX3000 −−ram=512 −−os−type=Linux
−−os−variant=unix −−file=/var/lib/firm_images/XX3000/V1.1.1/XX3000.img
−−file−size=4
バックエンド処理部4021は上記コマンドを実行し、新たな仮想マシン402を生成する。ここでバックエンド処理部4021は、前記ステップ507、517、510と同様に、前記仮想マシン402に対してユーザーデータをインポートし、プラットフォームアプリケーションをインストールし、機能テストを行う。
【0045】
上記機能テストが終了したら、新旧ファームウェアのsyslog 出力を比較して相対的なパフォーマンスを評価する。例えばPDF生成機能の場合、バックエンド処理部4021は、新ファームウェア上のsyslog出力から関数の開始時間から終了時間までを計算し、旧ファームウェア上のsyslog 出力からも同様の計算を行なって、相対速度を計算する。
【0046】
ここでもしパフォーマンステストの結果、syslog 出力にエラーや例外が出力されていたら(ステップ513)、パフォーマンステスト失敗のエラーメッセージを作成し(ステップ516)、該メッセージを前記画像形成装置104に送信して(ステップ515)処理を終える。
ここでもしパフォーマンステストの結果、syslog 出力にエラーや例外が出力されていなければ(ステップ513)、バックエンド処理部4021は、次にテスト結果を作成する(ステップ514)。
【0047】
この時点でバックエンド処理部4021は、新バージョンのファームウェアで動作する前記仮想マシンのsyslogd のログ出力レベルプライオリティを warnレベルに再設定する。通常、画像形成装置104上で実行するファームウェアのログ出力レベルは、ログ出力量、パフォーマンスを考慮してwarnレベルまでの出力である。バックエンド処理部4021はさらに、前記仮想マシンのイメージを dd コマンドで作成し、ストレージサービス406の、画像形成装置がアクセス可能なダウンロード可能ディレクトリにコピーする(ステップ519)。
本実施例の場合、上記ダウンロード可能ディレクトリにコピーされたファームウェアイメージは以下のようである。
【0048】
/var/lib/downloadable/firm_images/XX3000/V1.1.2/AAA12345/XX3000.img
この後バックエンド処理部4021は、ステップ514で作成したメッセージを前記画像形成装置104に送信して(ステップ515)処理を終える。
【0049】
[画像形成装置処理]
図6は、画像形成装置104のファームウェアアップデート処理を示したフローチャートである。本実施例で画像形成装置104のファームウェアアップデートがあった場合、前記サーバーコンピュータ群102の前記仮想マシン401の前記要求受信部4011に、アップデートした新規ファームウェア情報を掲載する。前記画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、前記サーバーコンピュータ群102の前記ファームウェアアップデート情報を掲載する仮想マシン401の前記要求受信部4011を定期的に監視することで行う。
【0050】
画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションがサーバーコンピュータ群102と通信し、ファームウェアアップデートを検知した場合にその情報を受信することで本フローチャートは開始する(ステップ601)。画像形成装置104において、ファームウェアアップデート用プラットフォームアプリケーションは、間接記憶部1045に記憶されたデバイスの設定やアプリケーションの設定、プラットフォームアプリケーションの設定等が組み込みデータベースのストレージファイルを取得する。また、デバイス情報取得手段により、デバイスのハードウェア情報を取得し、図8の画像形成装置104のファームウェアアップデートリクエスト内容のXML文書を作成する(ステップ602)。ファームウェアアップデートプラットフォームアプリケーションは、データベースファイルとリクエスト内容のXML文書を、サーバーコンピュータ群のファームウェアアップデート要求を受け付ける要求受信部4011に送信する(ステップ603)。
【0051】
ここでもしデータベースファイルとリクエスト内容のXML文書の送信に失敗したら(ステップ604)、ファームウェアアップデートプラットフォームアプリケーションは、送信失敗のエラーメッセージを作成し、メッセージを画像形成装置104に表示して(ステップ612)処理を終える。(図示せず)
ここでデータベースファイルとリクエスト内容のXML文書の送信に成功した場合(ステップ604)、次の様な処理を行う。前記画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、前記サーバーコンピュータ群102のバックエンド処理部4021からの機能パフォーマンステスト結果の通知を待ち受ける。前記通知の待ち受けは、前記画像形成装置104の前記ファームウェアアップデート用プラットフォームアプリケーションが前記サーバーコンピュータ群102の所定の仮想マシン401の要求受信部4011を定期的に監視することで行ってもよい。
【0052】
前記画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションがステップ603、604にて前記画像形成装置104のファームウェアアップデート情報を送信した場合、次の様な処理を行う。図5のフローチャートで示したバックエンド処理のステップ515の処理完了、結果通知を待ち受け(ステップ605)、該メッセージを前記画像形成装置104に表示する(ステップ606)。
【0053】
ここでもし前記図5のフローチャートで示したバックエンド処理のステップ515の処理が失敗であったら(ステップ607)、次の様な処理を行う。画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、ファームウェアアップデートテスト失敗のエラーメッセージを作成し、メッセージを画像形成装置104に表示して(ステップ612)処理を終える。(図示せず)
ここでもし前記図5のフローチャートで示したバックエンド処理のステップ515の処理が成功した場合(ステップ607)、次の様な処理を行う。画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、ストレージサービス406の、画像形成装置がアクセス可能なダウンロード可能ディレクトリにコピーされた新ファームウェアをダウンロードする(ステップ608)。
【0054】
ここでもしステップ608の新ファームウェアダウンロードの処理が失敗したら(ステップ609)、次の様な処理を行う。前記画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、新ファームウェアダウンロード失敗のエラーメッセージを作成し、該メッセージを画像形成装置104に表示して(ステップ612)処理を終える。(図示せず)即ち、ファームウェアを画像形成装置104へ送信することなく処理を終える。
【0055】
ここでもしステップ608の新ファームウェアダウンロードの処理が成功したら(ステップ609)、画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、新ファームウェアをアップデートする(ステップ610)。ファームウェアアップデートは、前記ダウンロードした新ファームウェアをファームウェアアップデート用領域にコピーし、次回再起動時に新ファームウェアを展開して実行することにより実現する。
【0056】
ここでもしステップ610の新ファームウェアアップデートの処理が失敗したら(ステップ611)、次の様な処理を行う。画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは、新ファームウェアダウンロード失敗のエラーメッセージを作成し、メッセージを画像形成装置104に表示して(ステップ612)処理を終える。(図示せず)
ここでもしステップ610の新ファームウェアアップデートの処理が成功したら(ステップ611)、画像形成装置104上のファームウェアアップデートプラットフォームアプリケーションは処理を終える。
【0057】
新ファームウェアは、図5のフローチャートで示した一連のバックエンド処理により実際のユーザーデータ、設定を使ったテストで正常動作が確認され、ユーザーデータが既にインポートされた状態となっている。したがって、画像形成装置104に新ファームウェアがインストールされると、ユーザーデータやデバイス設定がファームウェア更新以前と同様にされた状態でシステムを起動することができる。
【0058】
従来ファームウェアアップデート時に必要であった、ファームウェアインストール後の設定更新作業や、ユーザーデータの事前のエクスポート、ファーム更新事後のインポート作業などの処理を省くことができ、利便性を高めることができる。また事前にサーバーコンピュータ群102上で機能テストをしているので、ファームウェアアップデートに伴う機能エラー等を防止することができる。また事前に前記サーバーコンピュータ群102上でパフォーマンステストをおこなっているので、旧ファームウェアとの処理速度の比較ができることも特徴である。
【符号の説明】
【0059】
102 本実施例における、サーバーコンピュータ群である
104 本実施例における、画像形成装置である
401 本実施例における、要求受信部の仮想マシンである
4011 本実施例における、要求受信部(Web Role Instance)である
402 本実施例における、バックエンド処理部の仮想マシンである
4021 本実施例における、バックエンド処理部(Worker Role Instance)である

【特許請求の範囲】
【請求項1】
画像形成装置から、前記画像形成装置のリソース情報、および前記画像形成装置のOSとは異なるプラットフォームに関する情報とを受信したことに応じて、前記情報に対応するメッセージを記憶手段に格納する、要求受信プログラムを実行することにより実現される要求受信手段と、
前記記憶手段に対し前記メッセージの取得要求を定期的に行い、前記記憶手段から前記メッセージを取得した場合は仮想マシンの生成を指示する、バックエンド処理プログラムを実行することにより実現される指示手段と、
前記指示手段により生成された仮想マシンであって、前記指示手段によりインポートされた情報を基に、前記画像形成装置のリソース状況、および前記画像形成装置のプラットフォームに関連する状況を再現する、バックエンド処理プログラムを実行することにより実現されるバックエンド処理手段と、を有し、
前記バックエンド処理手段は、前記画像形成装置に関連するファームウェアのアップデートを検知したことに応じて、アップデートされたファームウェアを実行し、
ファームウェアを正常に実行できなかった場合は、前記アップデートされたファームウェアを前記画像形成装置に送信することなくエラーメッセージを前記画像形成装置へ送信し、ファームウェアを正常にできた場合は、前記アップデートされたファームウェアを前記画像形成装置にインストールさせるために前記アップデートされたファームウェアを前記画像形成装置へ送信することを特徴とするクラウドコンピューティングシステム。
【請求項2】
リソース情報は、CPU数、CPUの処理能力、メモリサイズ、およびディスクサイズの内、少なくとも1つの情報を含み、前記プラットフォームに関する情報は、前記プラットフォームで動作するアプリケーション名、前記プラットフォームで動作するアプリケーションの識別子、および前記プラットフォームのアプリケーションのバージョンの内、少なくとも1つの情報を含み、前記プラットフォームで動作するアプリケーションは前記画像形成装置のスキャナユニット、またはプリントユニットを制御することを特徴とする請求項1に記載のクラウドコンピューティングシステム。
【請求項3】
要求受信プログラムを実行することにより実現される要求受信手段は、画像形成装置から、前記画像形成装置のリソース情報、および前記画像形成装置のOSとは異なるプラットフォームに関する情報とを受信したことに応じて、前記情報に対応するメッセージを記憶手段に格納し、
バックエンド処理プログラムを実行することにより実現される指示手段は、前記記憶手段に対し前記メッセージの取得要求を定期的に行い、前記記憶手段から前記メッセージを取得した場合は仮想マシンの生成を指示し、
バックエンド処理プログラムを実行することにより実現されるバックエンド処理手段は、前記指示手段により生成された仮想マシンであって、前記指示手段によりインポートされた情報を基に、前記画像形成装置のリソース状況、および前記画像形成装置のプラットフォームに関連する状況を再現することを特徴とし、
更に、前記バックエンド処理手段は、前記画像形成装置に関連するファームウェアのアップデートを検知したことに応じて、アップデートされたファームウェアを実行し、
ファームウェアを正常に実行できなかった場合は、前記アップデートされたファームウェアを前記画像形成装置にインストールさせないためにエラーメッセージを前記画像形成装置へ送信し、ファームウェアを正常にできた場合は、前記アップデートされたファームウェアを前記画像形成装置にインストールさせるために前記アップデートされたファームウェアを前記画像形成装置へ送信することを特徴とするクラウドコンピューティングシステムを制御する制御方法。
【請求項4】
請求項3に記載の制御方法をクラウドコンピューティングシステムで実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2012−174196(P2012−174196A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−38440(P2011−38440)
【出願日】平成23年2月24日(2011.2.24)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】