JP5387767B2 - 実行中のプログラムの更新技術 - Google Patents

実行中のプログラムの更新技術 Download PDF

Info

Publication number
JP5387767B2
JP5387767B2 JP2012520224A JP2012520224A JP5387767B2 JP 5387767 B2 JP5387767 B2 JP 5387767B2 JP 2012520224 A JP2012520224 A JP 2012520224A JP 2012520224 A JP2012520224 A JP 2012520224A JP 5387767 B2 JP5387767 B2 JP 5387767B2
Authority
JP
Japan
Prior art keywords
communication
program
processes
replacement
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2012520224A
Other languages
English (en)
Other versions
JPWO2011158367A1 (ja
Inventor
数実 小島
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2011158367A1 publication Critical patent/JPWO2011158367A1/ja
Application granted granted Critical
Publication of JP5387767B2 publication Critical patent/JP5387767B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Description

本技術は、実行中のプログラムの更新技術に関する。
従来、運用面と待機面とに二重化された書き換え可能な不揮発性メモリに記録されているファームウエアを更新する場合には、以下のような手順が行われていた。すなわち、(1)待機面のファームウエアを更新し、(2)待機面を運用面に切り替え、リブートして新たなファームウエアを起動する。そして、(3)待機面に切り替えられた旧運用面のファームウエアを更新する。このように、ファームウエアを更新する場合にはリブートが必要となり、一時的にファームウエアの機能を用いることができなくなる。
このような問題を解決するために、大規模装置では、ファームウエアを記録している書き換え可能な不揮発性メモリを有するシステム制御ボードを二重化する場合がある。すなわち、運用系のシステム制御ボードと待機系のシステム制御ボードとを用意しておき、待機系のシステム制御ボードでファームウエアを更新して更新後のファームウエアを起動した後に、運用系に切り替える。その後、待機系に切り替えられた旧運用系のシステム制御ボードでファームウエアを更新して更新後のファームウエアを起動する。このようにすれば、システム制御ができない時間を無くすことができるが、コストがかかる。
一方、サービスプロセスを停止、消滅させないでプログラムを入れ替えるための第1の従来技術が存在している。この第1の従来技術では、モジュール管理ルーチンが、あるプログラムモジュールが呼び出されている第1の数とあるプログラムモジュールが他のモジュールを呼び出している第2の数と入れ替え指示についてのデータとを管理している。また、モジュール管理ルーチンは、このようなデータに基づき入れ替え指示がなされているモジュールが第1及び第2の数から入れ替え可能と判断した場合には、入れ替え指示がなされているモジュールを更新後のモジュールに入れ替えて新たなサービスプロセスを起動する。しかしながら、サービスプロセス間はモジュール管理ルーチンを挟んだ関数呼び出し等となっており、モジュール更新後に通信プロトコル等が変更されるといった問題点については考慮されていない。またこれらの処理はOS(Operating System)層で行われており、OS層の改変が必要となる。
また、新旧ファイル間で変更していないモジュールに関してはファイルの入れ替えを行うことなく、そのままサービスを継続させるための第2の従来技術も存在している。具体的には、基本OS上に仮想サーバOSを配置して、仮想サーバOS上にバーチャルホストを起動する構成を採用している。そして、バーチャルホストの仮想クライアントOS上のモジュールの更新を行う際には、新たにバーチャルホストを生成して、仮想クライアントOS上に新たなモジュールを起動させる。その後、仮想サーバOSがメッセージの中継先を切り替える処理などを実施する。但し、バーチャルホストを二重化するような手法では負荷が高い。また、仮想サーバOSがメッセージの中継を行っているので、バーチャルホスト間では直接通信することはない。すなわち、モジュール更新後に通信プロトコル等が変更されるといった問題点については考慮されていない。また、これらの処理は仮想サーバOS上で行われており、OSの改変が必要となる。
特開平8−95771号公報 特開2004−220151号公報 特開2007−226437号公報 特開平7−104992号公報
従って、本技術の目的は、一側面において、リブートせずに実行中のプログラムの更新を行うための新規な技術を提供することである。
本技術の一側面にかかるプログラム更新方法は、(A)プログラム更新指示に応じて、記憶装置に格納されている複数のプログラムのうち更新対象のプログラムを特定する特定ステップと、(B)特定された更新対象のプログラムに対応し且つ上記複数のプログラムを実行することによって起動される複数のプロセスに含まれるプロセスである入れ替えプロセスと、当該入れ替えプロセスと通信を行ったことがあり且つ上記複数のプロセスに含まれる通信先プロセスとを抽出する抽出ステップと、(C)特定された更新対象のプログラムの新たなプログラムを含む更新データで更新を行ったことに応じて、新たなプログラムを動作メモリ上にロードして入れ替えプロセスの代わりのプロセスを起動すると共に、抽出された通信先プロセスの代わりのプロセスを起動する処理を行う起動ステップと、(D)入れ替えプロセス及び通信先プロセスに関連する通信接続関係を切断すると共に、起動ステップで起動されたプロセスの通信接続関係を構築する接続再構築ステップと、(E)入れ替えプロセス及び通信先プロセスを終了させるプロセス終了ステップとを含む。
図1は、実施の形態におけるシステム概要図である。 図2は、不揮発性メモリに記録されているプログラムモジュールの一例を示す図である。 図3は、プロセスの構成例を示す図である。 図4は、起動されたプロセスの構成及び関係を表す模式図である。 図5は、プロセス構成管理テーブルの一例を示す図である。 図6は、プロセス構成管理テーブルにおいて用いられるグループ分けコードの意味を説明するための図である。 図7は、通信履歴データの一例を示す図である。 図8は、本実施の形態における処理フローを示す図である。 図9は、再起動対象プロセスの選択状態を模式的に示す図である。 図10は、起動されたプロセスの構成及び処理を説明するための模式図である。 図11は、通信切り替え処理の処理フローを示す図である。 図12は、起動されたプロセスの構成及び処理を説明するための模式図である。 図13は、本実施の形態における処理フローを示す図である。 図14は、起動されたプロセスの構成及び処理を説明するための模式図である。 図15は、クリア後の通信履歴データの一例を示す図である。
以下、書き換え可能な不揮発性メモリ(例えばNANDフラッシュメモリ)に格納されているファームウエアをアップデートする場合を一例として本実施の形態を説明する。
図1に、本実施の形態におけるハードウエアのシステム構成を示す。本実施の形態に係る例えばサーバは、その本体装置100と当該本体装置100に接続されている外付けIO装置200等とを含む。外付けIO装置200は必要に応じて接続される。
本体装置100は、(A)1又は複数のシステムボード110と、(B)本体装置100の状態表示などのためのパネル120と、(C)装置冷却のための1又は複数のファン(FAN)130と、(D)1又は複数の電源140と、(E)ネットワークに接続するための1又は複数のクロスバー150と、(F)1又は複数のIOボード160と、(G)本体装置100全体の制御を行うシステム制御ボード170とを有する。
システムボード110は、1又は複数のCPU(Central Processing Unit)と、1又は複数のメモリモジュールである1又は複数のDIMM(Dual Inline Memory Module)とを含む。システムボード110は、システム制御ボード170によって制御されるボードである。
IOボード160は、例えば外付けIO装置200と接続するために用いられたり、1又は複数のPCI(Peripheral Component Interconnect)ボードを有する場合もある。
システム制御ボード170は、プロセッサであるCPU171と、CPU171で実行されるプログラム(ここではファームウエア)及び処理に係るデータを格納する動作メモリ172と、二重化された不揮発性メモリA及びB(173及び174)とを有する。不揮発性メモリA及びB(173及び174)は、書き換え可能な不揮発性メモリであり、それらのうちのいずれかが、運用面として用いられ、他方が待機面として用いられる。また、不揮発性メモリA及びB(173及び174)には、CPU171で実行されるプログラムが同じように記録されている。また、図示していないが、システム制御ボード170には、不揮発性メモリA及びB(173及び174)を書き換えるためのデータを取得するための機構が設けられているものとする。
図2に、不揮発性メモリA及びB(173及び174)に記録されているプログラム・モジュール例を示す。本例では、不揮発性メモリA(173)及びB(174)には、IPMI(Intelligent Platform Management Interface)制御モジュール1731、UI(User Interface)モジュール1732、エラー管理モジュール1733、ハードウエア制御モジュール1734、電源制御モジュール1735、ファームアップデートモジュール1736、初期化モジュール1737、通信制御モジュール1738及び他のプログラムモジュールとが記録されている。また、不揮発性メモリA及びB(173及び174)には、OSやドライバのためのモジュール、図2に示したモジュールが用いるライブラリのモジュールなども記録されている場合がある。
また、図3に、システム制御ボード170を起動させた場合において動作メモリ172上にロードされるプログラムのプロセス構成例を示す。
例えば、OS層には、組み込みOS1729と、ハードウエアに対してアクセスするためのハードアクセスドライバ1730と、初期ブート制御部1720とが含まれる。また、アプリケーション層には、図2に示したモジュール群に対応して、IPMI制御プロセス1721と、UIプロセス1722と、エラー管理プロセス1723と、ハード制御プロセス1724と、電源制御プロセス1725と、ファームアップデートプロセス1726と、初期化プロセス1727と、通信制御プロセス1728とが含まれる。
本実施の形態では、OS層には修正を加えずにアプリケーション層だけでリブートを行わずにモジュールの更新を行うものとする。従って、以下の説明においてOS層については最小限の説明のみとする。
また、本実施の形態では、図4に示すように、例えば初期化プロセス1727である親プロセスは、OS層の例えば初期ブート制御部1720などによって初期起動時に動作メモリ172上にロードされて起動されると、通信制御プロセス1728、ファームアップデートプロセス1726及びその他のプロセス(図4では子プロセス1乃至3)を子プロセスとして起動させる。子プロセス(例えば子プロセス2)は、孫プロセス1を起動させる場合もある。
親プロセス1727は、子プロセスを起動させると、子プロセスの起動状況に応じて、例えば図5に示すようなプロセス構成管理テーブルを、動作メモリ172上のデータベース1719に生成し、管理する。図5の例では、プロセス構成管理テーブルにおいては、グループ分けコードとプロセス名とが対応付けて登録されるようになっている。グループ分けコードの意味を、例えば図6に示す。図6に示すように、本例では、グループ分けコードはビット単位で意味を持たせている。すなわち、最下位ビットは、モジュール入れ替え時に該当モジュールの再起動が必要か否かを示す。具体的にはビットがオンの場合には再起動が要で、ビットがオフの場合には再起動が不要であることを表している。最下位から2番目のビットは、該当プロセスに子プロセス(親プロセスからみて孫プロセス)があるか否かを表す。具体的にはビットがオンの場合には子プロセスありを表し、ビットがオフの場合には子プロセスなしを表している。すべてのビットがオンの場合には終端を表す。
そうすると、図5に示すようなデータが格納されている場合には、子プロセス1及び3、通信制御プロセス1728及びファームアップデートプロセス1726は、モジュール入れ替え時には再起動が必要であるプロセスである。子プロセス2は、モジュール入れ替え時には再起動が必要であると共に、子プロセスが存在しているプロセスである。UIプロセスの一種であるCLI(Command Line Interface)プロセスは、非常駐型のプロセスであり、必要に応じて起動されるプロセスであるため、モジュール入れ替え時に再起動不要のプロセスである。このように非常駐型のプロセスの場合、起動されるとプロセス構成管理テーブルに登録され、終了されるとプロセス構成管理テーブルから削除される。なお、図5中には説明のためCLIプロセスを示しているが、この部分は図4とは対応していない。
また、子プロセスの子プロセス(すなわち親プロセス1727から見て孫プロセス)を生成するか否かについては、例えば親プロセス1727が把握しているものとする。どのプロセスが孫プロセスであるかについては、子プロセスを基準に図5に示すようなプロセス構成管理テーブルを用意すればよい。
さらに、通信制御プロセス1728は、プロセス間の通信接続関係及び通信のやりとりを管理する。そして、以下の処理のために、通信制御プロセス1728は、通信履歴データをデータベース1719に蓄積する。例えば、図7に示すような通信履歴データを蓄積する。図7の例では、送信側プロセス名と、受信側プロセス名と、回数とを対応付けて格納するようになっている。なお、送信側と受信側とで区別しているので、双方向通信の場合には別のレコードが記録される。以下の処理では、いずれかの通信の有無だけを確認するので、送信側と受信側とを区別せずにプロセスのペア毎に記録するようにしてもよい。
なお、本実施の形態におけるプロセス間通信は、例えばソケットを用いたプロセス間通信である。このソケットを用いたプロセス間通信はよく知られているのでここでは詳しく述べない。また、本例では、プロセス間通信が必要となるプロセス間については、予めソケットによる通信接続関係を構築しておくものとする。そのため、通信接続関係があったとしても図7に示したようなデータ通信の履歴データを確認しないと実際にデータ通信が行われたことがあるか否かを判断することはできない。図7の例では、子プロセス1と子プロセス2との間にはデータ通信が行われたことがあるので、通信履歴データにレコードが記録されている。一方、子プロセス2と子プロセス3とは図4に示すように通信接続関係は存在しているが、図7にレコードがないのでデータ通信は行われていない。
また、図4においては、親プロセス1727、通信制御プロセス1728及びファームアップデートプロセス1726は、互いに通信しながら以下の処理を実施する。図4では、点線はプロセス間通信を表しており、通信制御プロセス1728によるプロセス間通信の監視については一点鎖線で示している。
さらに、図4では示していないが、親プロセス1727及び通信制御プロセス1728以外のプロセスもデータベース1719にデータを残す場合もある。
さらに、ファームアップデートプロセス1726は、UIプロセス1722等からの指示に応じて不揮発性メモリA及びB(173及び174)の書き換え指示に係る更新データを、例えばOS層のハードアクセスドライバ1730に含まれる不揮発性メモリの書き換えドライバなどに出力して、ファームアップデートを実施させるためのプロセスである。
以下、図8乃至図15を用いて具体的なファームアップデートの処理について説明する。
まず、UIプロセス1722等は、管理者などから不揮発性メモリA及びB(173及び174)の更新指示を受け付け、ファームアップデートプロセス1726に更新データと共に更新指示を通知する(ステップS1)。更新データは、一部のモジュールのみを更新する場合であっても、例えば図2に示すようなモジュールすべてについてのデータを含むものとする。そうすると、ファームアップデートプロセス1726は、受け取った更新データから、更新のあったモジュールである入れ替えモジュールを抽出する(ステップS3)。例えば、図2に示したような全モジュールについてバイナリコンペアを行い、差分のあるモジュールを入れ替えモジュールとして抽出する。また、改版履歴ファイルなどによって版数管理を行っている場合には、各モジュールについて版数の相違が存在するか否かを判断し、版数に相違があれば入れ替えモジュールとして特定する。
入れ替えモジュールが抽出されると、ファームアップデートプロセス1726は、モジュール名(又は入れ替えモジュールに対応するプロセス名)を通信制御プロセス1728に通知する。通信制御プロセス1728は、入れ替えモジュールに対応するプロセスのプロセス名とデータベース1719に格納されているプロセス構成管理テーブル及び通信履歴データとから、再起動対象プロセスを抽出する(ステップS5)。
具体的には、入れ替えモジュールに対応するプロセス(以下、入れ替えプロセスと呼ぶ)に、プロセス構成管理テーブルにおいて「再起動要」を表すビットがオンにセットされているか確認し、「再起動要」を表すビットがオンにセットされていれば再起動対象プロセスとして特定する。一方、「再起動要」を表すビットがオフにセットされていれば、再起動対象プロセスとして特定しない。例えば、CLIプロセスのような非常駐プロセスの場合には、必要なときに起動されるので、次回起動時に更新が反映されればよいものとする。
さらに、通信履歴データから、入れ替えプロセスを送信側又は受信側とするレコードが記録されているか確認して、対応する受信側プロセス又は送信側プロセスである通信先プロセスを、再起動対象プロセスとして特定する。既に通信が行われているプロセス間通信については、モジュールの更新によってプロトコルなどが変化したりするとソケットを付け替えるだけでは適切なプロセス間通信が行えなくなる場合があるためである。一方、通信接続関係があってもデータ通信が行われていなければ、通信接続関係を設定し直すだけで問題がないので、通信履歴データに通信履歴レコードがない接続先プロセスについては、再起動対象プロセスとして特定することはない。
なお、ダイナミックライブラリを使用しており、ダイナミックライブラリが入れ替えモジュールである場合には、該当ライブラリをリンクしているプロセスを、再起動対象プロセスとして特定するようにする。このため例えばデータベース1719にはダイナミックライブラリとプロセスとのリンク関係を表すデータを格納しておく。通信制御プロセス1728は、このようなデータを確認して再起動対象プロセスを特定する。
また、通信制御プロセス1728は、プロセス構成管理テーブルにおいて、再起動対象プロセスに子プロセス(すなわち孫プロセス)が存在することを表すビットがオンにセットされているか確認する。再起動対象プロセスに子プロセスが存在することを表すビットがオンにセットされている場合には、孫プロセスについても再起動対象プロセスに特定する。孫プロセスを有する子プロセスについてプロセス構成管理テーブルをデータベース1719に格納しておけば孫プロセスを特定できる。
例えば、子プロセス2が入れ替えプロセスとして特定され、図5及び図7に示すデータがデータベース1719に格納されていると、図9においてハッチングを付して示すように、子プロセス1及び2と孫プロセス1とが再起動対象プロセスとして抽出される。なお、子プロセス2と子プロセス3とは点線で示すように通信接続関係が設定されているが、図7の通信履歴データには通信した履歴がないので、後に設定し直すだけにする。
図8の処理の説明に戻って、通信制御プロセス1728は、再起動対象プロセスが、親プロセス1727又は通信制御プロセス1728を含むか判断する(ステップS7)。親プロセス1727又は通信制御プロセス1728が再起動対象プロセスである場合には、大幅な変更であり、本実施の形態にかかる処理を適切に実行できなくなる。従って、全プロセスの再起動(すなわちリブート)を含む従来の更新処理を実施する(ステップS9)。例えば、待機面である不揮発性メモリB(174)の更新を行った後に、待機面を運用面に切り替えた上でリブートし、その後待機面に切り替えられた旧運用面を更新する。ステップS9については従来と同じであり、他の手法を採用してもよい。処理は端子Aを介して終了する。
なお、入れ替えプロセスがファームアップデートプロセス1726である場合もある。ファームアップデートプロセス1726は、本実施の形態における以下の処理において一定の役割を果たしているが、通信制御プロセス1728及び親プロセス1727よりもその役割及び関係機能は小さい。従って、入れ替えプロセスがファームアップデートプロセス1726であっても、ステップS9へは移行しないようになっている。
一方、再起動対象プロセスが、親プロセス1727又は通信制御プロセス1728を含まない場合には、通信制御プロセス1728は、再起動対象プロセスが「空」であるか確認する(ステップS11)。CLIプロセスのような非常駐プロセスのみが入れ替えプロセス又は通信先プロセスである場合には、モジュールの更新は行うことになるが、再起動対象プロセスが「空」となってしまう。そこで、再起動対象プロセスが「空」である場合には、通信制御プロセス1728は、ファームアップデートプロセス1726に、運用面の不揮発性メモリA(173)の更新を行わせ、その後待機面の不揮発性メモリB(174)の更新を行わせる(ステップS13)。なお、この逆であっても問題は発生しない。いずれにせよ、プロセスの再起動は行わずに、次回起動時に新たなモジュールで起動されるようにする。処理は端子Aを介して終了する。
一方、再起動対象プロセスが「空」ではない場合には、通信制御プロセス1728は、ファームアップデートプロセス1726に対して運用面の不揮発性メモリA(173)の更新を指示する。また、通信制御プロセス1728は、親プロセス1727に、再起動対象プロセスのプロセス名を通知する。ファームアップデートプロセス1726は、通信制御プロセス1728からの指示に応じて、更新データによる運用面の不揮発性メモリA(173)の更新を、OS層の例えばハードアクセスドライバ1730等に命じて実施する(ステップS15)。このステップ自体は従来と同じであるのでこれ以上は説明しない。
運用面の不揮発性メモリA(173)の更新が完了すると、親プロセス1727に対して更新完了を通知する。親プロセス1727は、更新完了の通知に応じて、再起動対象プロセスの新たなプロセスを追加で起動する(ステップS17)。模式的に図10に示すように、ファームアップデートプロセス1726から親プロセス1727へ更新完了が通知されると(ステップ(1))、入れ替えモジュール及び入れ替えプロセス以外の再起動対象プロセスに対応するモジュールを動作メモリ172にロードして、親プロセス1727は再起動対象プロセスの新たなプロセス、すなわち子プロセス1、子プロセス2及び孫プロセス1の新たなプロセスを追加で起動する(ステップ(2))。この起動が完了すれば、図10に示すようなプロセス起動状態をデータベース1719のプロセス構成管理テーブルに反映させる。また、この起動が完了すれば、親プロセス1727は通信制御プロセス1728に対して起動完了通知を出力する(ステップ(3))。
通信制御プロセス1728は、親プロセス1727から起動完了通知を受け取ると、通信切り替え処理を実施する(ステップS19)。そして端子Bを介して図13の処理に移行する。なお、通信切り替え処理については、図11及び図12を用いて説明する。
通信制御プロセス1728は、再起動対象プロセスの新たなプロセスの起動完了を、親プロセス1727から通知されると(ステップS21)、再起動対象プロセスのいずれかが現在通信中であるか確認する(ステップS23)。通信制御プロセス1728は、プロセス間通信を監視する機能を有しているので、再起動対象プロセスのいずれかが現在通信中であるかは確認可能である。通信中であれば、通信制御プロセス1728は、通信が完了するまで待機する(ステップS25)。通信中に強制的に通信接続関係を切断するとプロセスの処理に悪影響がある可能性があるためである。
すべての再起動対象プロセスが通信を行っていない場合又はステップS25で通信終了が検出された後に、通信制御プロセス1728は、再起動対象プロセスに関連する通信接続関係を切断させる(ステップS27)。図12の例では、点線で示す範囲の通信接続関係、すなわち、子プロセス1と子プロセス2との間の通信接続関係、子プロセス2と子プロセス3との通信接続関係、子プロセス1と親プロセス1727との通信接続関係、子プロセス1と孫プロセス1との通信接続関係、子プロセス3と孫プロセス1との通信接続関係を切断する(ステップ(4))。本ステップの切断は、例えば接続ポートをクローズすることによって行われる。
そして、通信制御プロセス1728は、再起動対象プロセスの新たなプロセスに関連する通信接続関係を構築し直す(ステップS29)。図12の例では、ハッチングが付された新たなプロセス間の通信接続関係及びそれ以外のプロセスとの通信接続関係を構築し直す(ステップ(5))。本実施の形態において取り扱うモジュールから生成されるプロセスの構成は変化せず、そのため通信制御プロセス1728は、プロセス間の通信接続関係をすべて把握しているものとする。プロセスの構成が大幅に変更される場合には、通信制御プロセス1728は、プロセス間の通信接続関係を把握していないことになるので、通信制御プロセス1728自身も入れ替えプロセスになるものとする。従って、ステップS29は、通信制御プロセス1728が把握している範囲で通信接続関係が新たなプロセスに関連して復元される。具体的には、新子プロセス1と親プロセス1727との間の通信接続関係を構築する。また、新子プロセス1と新子プロセス2との間の通信接続関係を構築する。さらに、新子プロセス2と子プロセス3との間の通信接続関係を構築する。そして、新子プロセス1と新孫プロセス1との間の通信接続関係及び子プロセス3と新孫プロセス1との間の通信接続関係を構築する。なお、本ステップにおける通信接続関係の構築は、例えば接続ポートのオープンによって行われる。
その後、通信制御プロセス1728は、通信処理再開を確認する(ステップS31)。例えば、テスト通信を行わせたり、JOBを実際に送信させたりする。これで問題がなければ、通信制御プロセス1728は、親プロセス1727に対して通信再開を通知する(ステップS33)。図12に模式的に示すように、通信制御プロセス1728から、親プロセス1727に通信再開が通知される(ステップ(6))。
処理は端子Bを介して図13の処理に移行する。通信再開が通知された親プロセス1727は、再起動対象プロセス(すなわち旧プロセス)の終了を指示する(ステップS41)。図14に模式的に示すように、古い子プロセス1、古い子プロセス2及び古い孫プロセス1は、消滅させられる(ステップ(7))。そうすると、親プロセス1727は、ファームアップデートプロセス1726に対して、待機面の不揮発性メモリB(174)を更新するように指示する(ステップ(8))。
ファームアップデートプロセス1726は、親プロセス1727からの指示に応じて、待機面の不揮発性メモリB(174)の更新を更新データで行うように、例えばOS層のハードアクセスドライバ1730などに命じて実施する(ステップS43)。このステップの処理自体は、従来と同じであるからこれ以上述べない。
また、親プロセス1727は、自らの処理完了を通信制御プロセス1728に通知する(ステップ(9))。通信制御プロセス1728は、通信履歴データをクリアする(ステップS45及びステップ(10))。例えば図7に示したデータは、例えば図15に示すように「空」の状態になる。これによって、次回本処理を実行する際に、プロセス間通信が実際に行われたか否かを適切に判断できるようになる。
このような処理を実施すれば、通信制御プロセス1728や親プロセス1727が再起動対象プロセスとならない限り、プロセス全体を再起動させるようなリブートは不要となる。すなわち、完全に運用を停止して、例えばシステム制御ボード170の機能である本体装置100の監視ができなくなるような事態を回避できる可能性が高くなる。また、従来のアップデート方式よりは更新のために必要な時間も短縮されており、処理の遅延などが発生しなくなっている。さらに、OS層に変更を加える必要がない。すなわち、アプリケーション層のモジュール及びプロセスのみで実現することが可能であり、OS層との親和性を意識する必要がない。
以上本技術の実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、初期化プロセスが親プロセスである例を示したが、他の1又は複数のプロセスが上で述べた処理を行うようにしてもよい。
さらに、本技術は不揮発性メモリに記録されているファームウェアについてだけではなく、例えばハードディスクドライブのような装置に格納されているプログラムについても適用可能である。このような場合には、更新対象プログラムのデータのみが更新データとして入力される場合もある。
さらに、本技術の適用対象は、サーバのような装置だけではなく、例えば多数のハードディスクなどを備えたディスク装置を監視する制御ボードなどについても適用可能である。
上で述べた実施の形態をまとめると以下のようになる。
本実施の形態に係るプログラムは、プロセッサに、(A)プログラム更新指示に応じて、記憶装置に格納されている複数のプログラムのうち更新対象のプログラムを特定する特定ステップと、(B)特定された更新対象のプログラムに対応し且つ上記複数のプログラムを実行することによって起動される複数のプロセスに含まれるプロセスである入れ替えプロセスと、当該入れ替えプロセスと通信を行ったことがあり且つ上記複数のプロセスに含まれる通信先プロセスとを抽出する抽出ステップと、(C)特定された更新対象のプログラムの新たなプログラムを含む更新データで更新を行ったことに応じて、新たなプログラムを動作メモリ上にロードして入れ替えプロセスの代わりのプロセスを起動すると共に、抽出された通信先プロセスの代わりのプロセスを起動する処理を行う起動ステップと、(D)入れ替えプロセス及び通信先プロセスに関連する通信接続関係を切断すると共に、起動ステップで起動されたプロセスに関連する通信接続関係を構築する接続再構築ステップと、(E)入れ替えプロセス及び通信先プロセスを終了させるプロセス終了ステップとを実行させるためのプログラムである。
このようにすれば、上記複数のプロセスが実行されている装置をリブートすることなくプログラムの更新を反映させることができるようになる。
また、上記特定ステップと上記抽出ステップと上記起動ステップと上記接続再構築ステップと上記プロセス終了ステップとが、上記複数のプロセスに含まれるプロセスにより実行されるようにしてもよい。上記複数のプロセス以外の外部プロセスからプロセスの入れ替えを行うのではなく、自らの管理範囲について自らプロセスの入れ替えを行うものである。特に、上記複数のプロセスがアプリケーション層のプロセスであれば、OS層などに変更を加えることなく上記処理を行うことができるようになる。
さらに、上で述べた抽出ステップが、入れ替えプロセスの子プロセスを入れ替えプロセスとして抽出するステップを含むようにしてもよい。入れ替えプロセスに依存するプロセスも再起動させて適切に動作させるためである。なお、非常駐プロセスについては、再起動対象プロセスから除外するようにしてもよい。非常駐プロセスであれば、必要に応じて起動されるため、次回起動時にプログラムの更新が反映されれば十分なためである。
また、上記抽出ステップと上記起動ステップと上記接続再構築ステップと上記プロセス終了ステップとのいずれかを実行する、上記複数のプロセスに含まれるプロセスが、上記入れ替えプロセス及び上記通信先プロセスのいずれかに該当しない場合に、上記起動ステップ以降を実施するようにしてもよい。反対の場合には、大規模な更新であるから全プロセスを再起動させることが好ましい。
さらに、上で述べた記憶装置が書き換え可能な不揮発性メモリである場合もある。このような場合、書き換え可能な不揮発性メモリが二重化されている場合もある。そして、上記起動ステップにおいて更新データにより書き換えられる書き換え可能な不揮発性メモリが運用側であり、プロセス終了ステップの後に、更新データによって書き換え可能な不揮発性メモリの待機側を書き換えるようにしてもよい。不揮発性メモリが二重化されている場合には、このような順番で更新することによって、適切に処理を継続させることができるようになる。
本実施の形態における制御ボードは、プロセッサと、複数のプログラムが記録されている書き換え可能な不揮発性メモリと、動作メモリとを備えている。そして、上記複数のプログラムに含まれるプログラムが、(A)不揮発性メモリの書き換え指示に応じて上記複数のプログラムのうち書き換え対象のプログラムを抽出するステップと、(B)抽出された書き換え対象のプログラムに対応し且つ上記複数のプログラムを実行することによって起動される複数のプロセスに含まれるプロセスである入れ替えプロセスと、当該入れ替えプロセスと通信を行ったことがあり且つ上記複数のプロセスに含まれる通信先プロセスとを抽出するステップと、(C)抽出された書き換え対象のプログラムの新たなプログラムを含む更新データで書き換え可能な不揮発性メモリを書き換えたことに応じて、新たなプログラムを動作メモリ上にロードして入れ替えプロセスの代わりのプロセスを起動すると共に、抽出された通信先プロセスの代わりのプロセスを起動する処理を行う起動ステップと、(D)入れ替えプロセス及び通信先プロセスに関連する通信接続関係を切断すると共に、起動ステップで起動されたプロセスに関連する通信接続関係を構築するステップと、(E)入れ替えプロセス及び通信先プロセスを終了させるステップとを上記プロセッサに実行させるものである。
このような制御ボードの動作を停止させることなく、プログラムの更新を反映させることができるようになる。
なお、上記処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。

Claims (6)

  1. プログラム更新指示に応じて、記憶装置に格納されている複数のプログラムのうち更新対象のプログラムを特定する特定ステップと、
    特定された前記更新対象のプログラムに対応し且つ前記複数のプログラムを実行することによって起動される複数のプロセスに含まれるプロセスである入れ替えプロセスと、当該入れ替えプロセスと通信を行ったことがあり且つ前記複数のプロセスに含まれる通信先プロセスとを抽出する抽出ステップと、
    特定された前記更新対象のプログラムの新たなプログラムを含む更新データで更新を行ったことに応じて、前記新たなプログラムを動作メモリ上にロードして前記入れ替えプロセスの代わりのプロセスを起動すると共に、抽出された前記通信先プロセスの代わりのプロセスを起動する処理を行う起動ステップと、
    前記入れ替えプロセス及び前記通信先プロセスに関連する通信接続関係を切断すると共に、前記起動ステップで起動されたプロセスに関連する通信接続関係を構築する接続再構築ステップと、
    前記入れ替えプロセス及び前記通信先プロセスを終了させるプロセス終了ステップと、
    を、プロセッサに実行させるためのプログラム。
  2. 前記特定ステップと前記抽出ステップと前記起動ステップと前記接続再構築ステップと前記プロセス終了ステップとが、前記複数のプロセスに含まれるプロセスにより実行される
    請求項1記載のプログラム。
  3. 前記抽出ステップが、
    前記入れ替えプロセスの子プロセスを前記入れ替えプロセスとして抽出するステップ
    を含む請求項1又は2記載のプログラム。
  4. 前記抽出ステップと前記起動ステップと前記接続再構築ステップと前記プロセス終了ステップとのいずれかを実行する、前記複数のプロセスに含まれるプロセスが、前記入れ替えプロセス及び前記通信先プロセスのいずれかに該当しない場合に、前記起動ステップ以降を実施する
    請求項1乃至3のいずれか1つ記載のプログラム。
  5. 前記記憶装置が書き換え可能な不揮発性メモリであり、
    当該書き換え可能な不揮発性メモリが二重化されており、前記起動ステップにおいて前記更新データにより書き換えられる前記書き換え可能な不揮発性メモリが運用側であり、
    前記プロセス終了ステップの後に、前記更新データによって前記書き換え可能な不揮発性メモリの待機側を書き換えるステップ、
    をさらに前記プロセッサに実行させるための請求項1乃至4のいずれか1つ記載のプログラム。
  6. プロセッサと、
    複数のプログラムが記録されている書き換え可能な不揮発性メモリと、
    動作メモリと、
    を含み、
    前記複数のプログラムに含まれるプログラムが、
    前記不揮発性メモリの書き換え指示に応じて前記複数のプログラムのうち書き換え対象のプログラムを抽出するステップと、
    抽出された前記書き換え対象のプログラムに対応し且つ前記複数のプログラムを実行することによって起動される複数のプロセスに含まれるプロセスである入れ替えプロセスと、当該入れ替えプロセスと通信を行ったことがあり且つ前記複数のプロセスに含まれる通信先プロセスとを抽出するステップと、
    抽出された前記書き換え対象のプログラムの新たなプログラムを含む更新データで前記書き換え可能な不揮発性メモリを書き換えたことに応じて、前記新たなプログラムを前記動作メモリ上にロードして前記入れ替えプロセスの代わりのプロセスを起動すると共に、抽出された前記通信先プロセスの代わりのプロセスを起動する処理を行う起動ステップと、
    前記入れ替えプロセス及び前記通信先プロセスに関連する通信接続関係を切断すると共に、前記起動ステップで起動されたプロセスに関連する通信接続関係を構築するステップと、
    前記入れ替えプロセス及び前記通信先プロセスを終了させるステップと、
    を前記プロセッサに実行させるためのプログラムである
    制御ボード。
JP2012520224A 2010-06-17 2010-06-17 実行中のプログラムの更新技術 Expired - Fee Related JP5387767B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/060316 WO2011158367A1 (ja) 2010-06-17 2010-06-17 実行中のプログラムの更新技術

Publications (2)

Publication Number Publication Date
JPWO2011158367A1 JPWO2011158367A1 (ja) 2013-08-15
JP5387767B2 true JP5387767B2 (ja) 2014-01-15

Family

ID=45347788

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012520224A Expired - Fee Related JP5387767B2 (ja) 2010-06-17 2010-06-17 実行中のプログラムの更新技術

Country Status (4)

Country Link
US (1) US20130111454A1 (ja)
EP (1) EP2584467A4 (ja)
JP (1) JP5387767B2 (ja)
WO (1) WO2011158367A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160154684A1 (en) * 2014-02-19 2016-06-02 Hitachi, Ltd. Data processing system and data processing method
US9898261B1 (en) * 2015-09-30 2018-02-20 Open Text Corporation Method and system for configuring processes of software applications using activity fragments
WO2018032460A1 (zh) * 2016-08-18 2018-02-22 深圳中兴力维技术有限公司 一种设备的远程升级方法、装置及系统
JP6894266B2 (ja) * 2017-03-09 2021-06-30 Necプラットフォームズ株式会社 情報処理装置、管理制御装置のプログラム更新制御方法及びプログラム更新制御プログラム

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005038408A (ja) * 2003-06-30 2005-02-10 Ricoh Co Ltd 電子装置及びパラメータ更新方法
JP2005250892A (ja) * 2004-03-04 2005-09-15 Mitsubishi Electric Corp ソフトウェア機能更新装置
JP2007505409A (ja) * 2003-09-11 2007-03-08 アコニクス・システムズ・インコーポレイテッド プロトコルゲートウェイでソフトウェアを動的に更新するシステム及び方法
JP2007226437A (ja) * 2006-02-22 2007-09-06 Oki Electric Ind Co Ltd 電子交換機のプログラム入替方法
JP2008027004A (ja) * 2006-07-18 2008-02-07 Ricoh Co Ltd 情報装置およびそのプログラム更新方法
US20100058315A1 (en) * 2007-05-17 2010-03-04 Huawei Technologies Co., Ltd. Method and system for process upgrade

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2743792B2 (ja) 1993-10-07 1998-04-22 日本電気株式会社 動的リンクプログラムの実時間置換方式
JP3437284B2 (ja) 1994-09-21 2003-08-18 株式会社エヌ・ティ・ティ・データ サ−ビス処理システム
US6314567B1 (en) * 1998-11-13 2001-11-06 Hewlett-Packard Company Apparatus and method for transferring state data when performing on-line replacement of a running program code and data
US6836657B2 (en) * 2002-11-12 2004-12-28 Innopath Software, Inc. Upgrading of electronic files including automatic recovery from failures and errors occurring during the upgrade
JP4152755B2 (ja) 2003-01-10 2008-09-17 富士通株式会社 新旧プログラムモジュールの切り替え機能を有するサーバ装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005038408A (ja) * 2003-06-30 2005-02-10 Ricoh Co Ltd 電子装置及びパラメータ更新方法
JP2007505409A (ja) * 2003-09-11 2007-03-08 アコニクス・システムズ・インコーポレイテッド プロトコルゲートウェイでソフトウェアを動的に更新するシステム及び方法
JP2005250892A (ja) * 2004-03-04 2005-09-15 Mitsubishi Electric Corp ソフトウェア機能更新装置
JP2007226437A (ja) * 2006-02-22 2007-09-06 Oki Electric Ind Co Ltd 電子交換機のプログラム入替方法
JP2008027004A (ja) * 2006-07-18 2008-02-07 Ricoh Co Ltd 情報装置およびそのプログラム更新方法
US20100058315A1 (en) * 2007-05-17 2010-03-04 Huawei Technologies Co., Ltd. Method and system for process upgrade

Also Published As

Publication number Publication date
EP2584467A4 (en) 2013-08-07
WO2011158367A1 (ja) 2011-12-22
US20130111454A1 (en) 2013-05-02
JPWO2011158367A1 (ja) 2013-08-15
EP2584467A1 (en) 2013-04-24

Similar Documents

Publication Publication Date Title
JP5564956B2 (ja) 情報処理装置及び情報処理装置のファームウェア更新方法
JP5113700B2 (ja) ファームウェア更新装置及び方法
US7284236B2 (en) Mechanism to change firmware in a high availability single processor system
CN102238093B (zh) 防止业务中断的方法和装置
US9703490B2 (en) Coordinated upgrade of a cluster storage system
US7188237B2 (en) Reboot manager usable to change firmware in a high availability single processor system
US11314665B2 (en) Information processing system, information processing device, BIOS updating method for information processing device, and BIOS updating program for information processing device
JP6555096B2 (ja) 情報処理装置およびプログラム更新制御方法
US7065673B2 (en) Staged startup after failover or reboot
CN104823160A (zh) 虚拟机-保留主机更新
JP2008123412A (ja) 計算機システム、システムソフトウェア更新方法及び第1サーバ装置
JP2009140194A (ja) 障害回復環境の設定方法
US7657734B2 (en) Methods and apparatus for automatically multi-booting a computer system
KR20090120541A (ko) 운영체제(os) 자동복구기능을 갖는 임베디드 시스템 및운영체제 자동복구 방법
JP5387767B2 (ja) 実行中のプログラムの更新技術
US10102008B2 (en) Managed boot process system
US7783921B2 (en) Code recovery system and method
JPH117382A (ja) ファームウェアのバージョンアップ方法
CN113934443A (zh) 软件升级系统
JP2010146436A (ja) 監視システム、及びその制御方法、プログラム
JP2019016218A (ja) 情報処理装置、制御装置および情報処理装置の制御方法
JP4571056B2 (ja) 情報処理装置に新たに装置を組み込むための方法、情報処理装置及びプログラム
US7676682B2 (en) Lightweight management and high availability controller
JP2006302312A (ja) リモートローディング実行方法、リモートローディング実行システム、情報処理装置、管理装置及びコンピュータ読み取り可能な記録媒体
JP5304338B2 (ja) 呼制御装置、制御方法及び制御プログラム

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130910

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130923

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees