JP5722990B2 - 計算機システム、計算機時刻管理方法 - Google Patents
計算機システム、計算機時刻管理方法 Download PDFInfo
- Publication number
- JP5722990B2 JP5722990B2 JP2013502096A JP2013502096A JP5722990B2 JP 5722990 B2 JP5722990 B2 JP 5722990B2 JP 2013502096 A JP2013502096 A JP 2013502096A JP 2013502096 A JP2013502096 A JP 2013502096A JP 5722990 B2 JP5722990 B2 JP 5722990B2
- Authority
- JP
- Japan
- Prior art keywords
- time
- computer
- time difference
- stored
- storage
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/14—Time supervision arrangements, e.g. real time clock
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
本発明は、計算機の内部時刻を管理する技術に関するものである。
一般に、サーバ装置などの計算機は、RTC(Real Time Clock)と呼ばれるバッテリーバックアップされた内部時計を保持している。計算機のCPU(Central Processing Unit)は、その内部時計から時刻を電気信号として読み出し、現在時刻を知ることができる。計算機は、OS(Operating System)を起動するときにRTCから時刻を読み出してその時刻をOS上の時刻としてセットし、以後はOS内部で時刻を管理する。また、計算機がOSをシャットダウンするときは、OS上の時刻をRTCに記録し、以後はRTCがバッテリーから電力供給を受けながら計時を継続する。すなわち、RTCはOSが起動するときに現在時刻を知るために用いられ、OSが起動した後はOSが自ら時刻を管理する。
計算機がOSをシャットダウンするときにRTCに記録する時刻は、UTC(Universal Time,Coordinated:協定世界時)のような標準時刻であってもよいし、ローカルタイムであってもよい。ローカルタイムを記録する場合、世界のどの地域のローカルタイムを記録するか(タイムゾーン)によって、RTCに記録される時刻は異なる。どのタイムゾーンの時刻がRTCに記録されるかは、OSの種類や使用言語に依存する。また、ユーザ毎にタイムゾーンを指定することができる場合には、その指定によってもRTCに記録される時刻が異なる。
一般に、標準的な計算機の構成では、1台の計算機に1つのOSがインストールされているが、1台の計算機に複数のOSがインストールされているマルチブート構成を採用した計算機もある。また、計算機の外部に接続された外部記憶装置にOSをインストールしておき、複数の計算機がそのOSを用いることができるようにしている場合もある。
下記特許文献1には、外部のディスク装置を利用してブートするサーバにおいて障害が発生した場合に、ブートディスクの引き継ぎによる業務引き継ぎを実現する方法が記載されている。
計算機がマルチブート構成を採用している場合、あるOS上のタイムゾーンと別のOS上のタイムゾーンが異なる可能性がある。このとき、計算機は各OSをシャットダウンときにそれぞれ異なる時刻をRTCにセットすることになるので、OSを起動する毎に異なるタイムゾーン上の時刻をRTCから読み出してしまい、時刻を正確に管理することが難しくなる。
外部記憶装置にOSをインストールして複数の計算機から共用する場合、同じOSを起動したとしても、各計算機が備えているRTCに記録されている時刻が異なっていると、OSが同じであるにもかかわらず異なる時刻を用いてしまう。また、特許文献1のように待機サーバへ処理を引き継ぐ場合、障害が発生したサーバが備えるRTCに記録されている時刻と、待機サーバが備えるRTCに記録されている時刻とが異なり、引き継ぎがうまくいかない可能性がある。
本発明は、上記のような課題を解決するためになされたものであり、複数のOSが用いられる場合でも、誤った時刻をOS上で用いないようにするための技術を提供することを目的とする。
本発明に係る計算機は、標準時刻と同期が取られた内部クロック上の時刻とOS上の時刻との間の時差を時差情報として保持しておく。計算機は、OSを起動する際に、そのOSに対応する時差を内部クロック上の時刻に加算した時刻を、OS上の時刻としてセットする。
本発明に係る計算機によれば、標準時刻を基準としたOS間の時差を加味した上でOS上の時刻をセットするので、複数のOSが用いられる場合でも、各OS上で正しい時刻を用いることができる。
<実施の形態1>
図1は、本発明の実施形態1に係る計算機100の構成図である。計算機100周辺の装置も併せて示した。計算機100は、外部に接続されている記憶装置211、212、213のいずれかにインストールされているOSを、自己のOSとして用いる。計算機100は複数台存在する場合もある。各計算機100は、LAN(Local Area Network)300を介して接続される。計算機100は、CPUボード110、フラッシュメモリ120、SVP(サービスプロセッサ)130を備える。
図1は、本発明の実施形態1に係る計算機100の構成図である。計算機100周辺の装置も併せて示した。計算機100は、外部に接続されている記憶装置211、212、213のいずれかにインストールされているOSを、自己のOSとして用いる。計算機100は複数台存在する場合もある。各計算機100は、LAN(Local Area Network)300を介して接続される。計算機100は、CPUボード110、フラッシュメモリ120、SVP(サービスプロセッサ)130を備える。
CPUボード110は、CPU111、メモリ112、IO Hub113、HBA(ホストバスアダプタ)114、IO Controller Hub115、BMC(Base Management Controller)116を搭載している。
CPU111は、計算機100のOSを実行する。また、後述するRTC1151とUTC1161を用いて、OS上の時刻を調整する。以下では記載の便宜上、OSや各プログラムコードなどのソフトウェアを動作主体として説明する場合があるが、実際にこれらソフトウェアを実行するのはCPU111などの演算装置であることを付言しておく。
メモリ112は、CPU111が動作する際に一時的に用いるデータなどを保持する記憶装置である。IO Hub113は、CPU111とその他の機能部を接続する。HBA114は、後述するファイバチャネルファブリック200と計算機100を接続するインターフェースである。
IO Controller Hub115は、異なる接続規格で接続されるデバイス同士を相互に接続する装置である。ここではフラッシュメモリ120を接続した例を示した。フラッシュメモリ120が格納している情報については後述する。IO Controller Hub115は、RTC1151を備え、計算機100のOSに時刻を提供する。
BMC116は、計算機100を外部から管理するための処理を実行する装置である。BMC116は、RTC1161を備える。BMC116は、RTC1161が保持する時刻を、UTCなどの標準時刻に同期させる。記載の便宜上、以下ではUTC1161と表記する。
SVP130は、計算機100の外部から計算機を管理するための操作を受け付けるインターフェースとしての役割を有する。SVP130は、LAN300を介して管理サーバ310と接続され、管理サーバ310から管理操作を受け取ってBMC116に通知する。BMC116は、その通知にしたがって計算機100の管理処理を実行する。
ファイバチャネルファブリック200は、記憶装置211〜213を接続するネットワークである。記憶装置211〜213は、各計算機100からアクセスすることができるように構成されている。記憶装置211〜213には、それぞれ異なるOSがインストールされている。各OSのタイムゾーンは同一である場合もあるし、それぞれタイムゾーンが異なる場合もある。各計算機100は、記憶装置211〜213にインストールされているOSを読み出して起動する。ここでは3台の記憶装置211〜213を例示したが、記憶装置の台数は任意でよいし、いずれか1以上の記憶装置を計算機100に内蔵してもよい。また、1台の記憶装置に複数のOSをインストールしてもよい。
本実施形態1における「内部クロック」は、UTC1161が相当する。「演算部」は、CPU111が相当する。「記憶部」は、フラッシュメモリ120が相当する。「記憶装置」は、記憶装置211〜213が相当する。
図2は、フラッシュメモリ120が格納している情報を示す図である。フラッシュメモリ120は、BIOS(Basic Input/Output System)コード121、BIOS変数データ122、時差テーブル123を格納している。
BIOSコード121は、計算機100のBIOS機能を実装したプログラムコード群であり、プラットフォーム初期化コード1211、ランタイムサービスコード1212、OSブート処理コード1213、ブートメニューコード1214を含む。
プラットフォーム初期化コード1211は、後述の図6におけるステップS1101で説明する、計算機100を初期化する処理を記述したプログラムコードである。ランタイムサービスコード1212は、後述の図5で説明する処理を記述したプログラムコードである。OSブート処理コード1213は、後述の図6で説明する処理全体を記述したプログラムコードである。ブートメニューコード1214は、計算機100がいずれのOSを起動すべきかをユーザに選択させるメニュー画面(BIOSメニュー)を画面表示するための処理を記述したプログラムコードである。
BIOS変数データ122は、BIOS機能上で用いられる各種変数を保持するデータであり、BootCurrentデータ1221、BootNextデータ1222、OSブートリスト1223を含む。
OSブートリスト1223は、計算機100が起動することができるOSのリストを保持するデータである。詳細は後述の図3で改めて説明する。BootCurrentデータ1221は、OSブートリスト1223が保持しているレコードのうち、現在起動しているOSに対応するレコード番号を保持する。BootNextデータ1222は、OSブートリスト1223が保持しているレコードのうち、ユーザがBIOSメニュー上で起動すべきOSを指定しなかった場合に計算機100が起動すべきOSに対応するレコード番号を保持する。
時差テーブル123は、OSブートリスト1223が保持しているOSリスト内の各OS上で用いられる時刻と、UTC1161が保持している標準時刻との間の時差を、OS毎に記述したデータである。詳細は後述の図4で改めて説明する。
本実施形態1における「OS識別情報」は、OSブートリスト1223が相当する。「時差情報」は、時差テーブル123が相当する。
図3は、OSブートリスト1223の構成とデータ例を示す図である。OSブートリスト1223は、レコード番号フィールド12231、OS名フィールド12232、デバイスパスフィールド12233、追加データフィールド12234を有する。
レコード番号フィールド12231は、OSブートリスト1223が保持する個々のレコードを識別するための番号を保持する。OS名フィールド12232は、計算機100が記憶装置から読み出して起動することができるOSの名称を記述している。追加データフィールド12234は、任意の予備的なデータを保持するためのフィールドであり、OSが自由に使用することができる。
デバイスパスフィールド12233は、計算機100が読み出すOSが格納されている記憶装置上のアドレスを記述している。本フィールドが記述しているアドレスは、OSがインストールされている記憶装置が計算機100に内蔵されている場合であれば、その記憶装置上のアドレスである。OSがインストールされている記憶装置が、記憶装置211〜213のように計算機100の外部に接続されている場合であれば、本フィールドが記述しているアドレスは、各記憶装置のネットワーク上のアドレスを含む。例えばファイバチャネルファブリック200上のWWN(World Wide Name)とLU番号(Logical Unit Number:論理ユニット番号)などを本フィールドに記述するようにしてもよい。1台の記憶装置に複数のOSがインストールされている場合でも、WWNとLUの組み合わせにより、OSの格納先アドレスを特定することができる。
図3に示すデータ例によれば、計算機100は、それぞれ「パスA」「パスB」「パスC」にインストールされている3つのOS「OS A」「OS B」「OS C」のいずれかを選択して起動することができることが分かる。
図4は、時差テーブル123の構成とデータ例を示す図である。時差テーブル123は、レコード番号フィールド1231、デバイスパスフィールド1232、時差フィールド1233を有する。
レコード番号フィールド1231は、時差テーブル123が保持する個々のレコードを識別するための番号を保持する。デバイスパスフィールド1232は、計算機100が読み出すOSが格納されている記憶装置上のアドレスを記述するフィールドであり、OSブートリスト1223のデバイスパスフィールド12233に対応する。時差フィールド1233は、デバイスパスフィールド1232に記述されているアドレスにインストールされているOS上の時刻と、UTCなどの標準時刻(本実施形態1ではUTC1161の時刻)との間の時差を保持する。
図4のデータ例によれば、「パスA」にインストールされている「OS A」上の時刻はUTC1161の時刻と一致していることが分かる。同様に、「パスB」にインストールされている「OS B」上の時刻はUTC1161よりも9時間進んでいることがわかる。
以上、計算機100およびその周辺機器の構成について説明した。次に、OS間の時刻がずれていることによって生じる不都合について説明する。
「OS A」はシャットダウンするときにRTC1151にUTCをセットするように設定されており、「OS B」はシャットダウンするときにRTC1151に日本標準時をセットするように設定されていると仮定する。「OS B」は日本標準時を用いるように設定されているので、起動するときにRTC1511から時刻を取得すると、その時刻は日本標準時であると想定する。そのため、「OS A」がRTC1511にUTCを記録してシャットダウンした後に「OS B」を起動すると、UTC上の時刻を誤って日本標準時として取り扱ってしまう。
そこで本実施形態1では、RTC1151が保持している時刻をそのままOS上の時刻としてセットするのではなく、OS上の時刻とUTCの時差を時差テーブル123上で管理しておくことにより、いずれのOS上でもUTCからの時差を用いることにした。UTCはどのOS上でも共通であるため、UTCからの時差と各OSの対応関係を正確に管理しておけば、どのOS上でも正確な時刻を提供することができる。
図5は、計算機100のBIOS機能が提供する、時刻設定ランタイムサービスの処理フローを示す図である。時刻設定ランタイムサービスは、RTC1151に時刻を記録する機能である。RTC1151は計算機100の内部的な構成要素であるため、RTC1151に対する操作は一般的にBIOS機能の配下で実施される。OSは、BIOSが提供する時刻設定ランタイムサービスを呼び出すことにより、シャットダウン時にRTC1151に時刻を記録する。以下、図5の各ステップについて説明する。
(図5:ステップS500)
計算機100のOSは、シャットダウンするときに本処理フローを起動する。ランタイムサービスコード1212は、以下のステップS501〜S505を実行する。OSは、本処理フローを起動するとき、RTC1151に記録する時刻を指定してランタイムサービスコード1212に引き渡す。
計算機100のOSは、シャットダウンするときに本処理フローを起動する。ランタイムサービスコード1212は、以下のステップS501〜S505を実行する。OSは、本処理フローを起動するとき、RTC1151に記録する時刻を指定してランタイムサービスコード1212に引き渡す。
(図5:ステップS501)
ランタイムサービスコード1212は、フラッシュメモリ120からBootCurrentデータ1221の値を読み出す。このときのBootCurrentデータ1221の値は、OSブートリスト1223が保持しているレコードのうち、現在計算機100が実行しているOSに対応するレコード番号フィールド12231の値である。
ランタイムサービスコード1212は、フラッシュメモリ120からBootCurrentデータ1221の値を読み出す。このときのBootCurrentデータ1221の値は、OSブートリスト1223が保持しているレコードのうち、現在計算機100が実行しているOSに対応するレコード番号フィールド12231の値である。
(図5:ステップS502)
ランタイムサービスコード1212は、ステップS501で取得したBootCurrentデータ1221の値をキーにして、OSブートリスト1223の対応するレコードからデバイスパスフィールド12233の値を取得する。この値は、現在計算機100が実行しているOSがインストールされている記憶装置211〜213いずれかの格納先アドレスである。
ランタイムサービスコード1212は、ステップS501で取得したBootCurrentデータ1221の値をキーにして、OSブートリスト1223の対応するレコードからデバイスパスフィールド12233の値を取得する。この値は、現在計算機100が実行しているOSがインストールされている記憶装置211〜213いずれかの格納先アドレスである。
(図5:ステップS503)
ランタイムサービスコード1212は、BMC116からUTC1161の時刻を取得する。
ランタイムサービスコード1212は、BMC116からUTC1161の時刻を取得する。
(図5:ステップS504)
ランタイムサービスコード1212は、ステップS500でOSから指定された時刻とUTC1161の時刻との間の時差を計算し、時差テーブル123のうち現在実行しているOSに対応する時差フィールド1233に格納する。
ランタイムサービスコード1212は、ステップS500でOSから指定された時刻とUTC1161の時刻との間の時差を計算し、時差テーブル123のうち現在実行しているOSに対応する時差フィールド1233に格納する。
(図5:ステップS505)
ランタイムサービスコード1212は、ステップS500でOSから指定された時刻をRTC1151にセットする。
ランタイムサービスコード1212は、ステップS500でOSから指定された時刻をRTC1151にセットする。
図6は、計算機100が起動してからOSローダに処理が移行するまでの処理フローである。以下、図6の各ステップについて説明する。
(図6:ステップS601)
OSブート処理コード1213は、プラットフォーム初期化コード1211を起動する。プラットフォーム初期化コード1211は、CPUボード110に搭載されている各構成要素を初期化する。
OSブート処理コード1213は、プラットフォーム初期化コード1211を起動する。プラットフォーム初期化コード1211は、CPUボード110に搭載されている各構成要素を初期化する。
(図6:ステップS602)
計算機100のユーザが自動ブートを選択した場合はステップS604へ進み、手動ブートを選択した場合はステップS603へ進む。
計算機100のユーザが自動ブートを選択した場合はステップS604へ進み、手動ブートを選択した場合はステップS603へ進む。
(図6:ステップS603)
OSブート処理コード1213は、ブートメニューコード1214を起動する。ブートメニューコード1214は、OSブートメニュー画面を画面表示する。ユーザは、いずれのOSを起動するかをOSブートメニュー画面上で手動選択する。
OSブート処理コード1213は、ブートメニューコード1214を起動する。ブートメニューコード1214は、OSブートメニュー画面を画面表示する。ユーザは、いずれのOSを起動するかをOSブートメニュー画面上で手動選択する。
(図6:ステップS604)
OSブート処理コード1213は、フラッシュメモリ120からBootNextデータ1222の値を読み出す。このときのBootNextデータ1222の値は、OSブートリスト1223が保持しているレコードのうち、計算機100が自動起動すべきOSに対応するレコード番号フィールド12231の値である。
OSブート処理コード1213は、フラッシュメモリ120からBootNextデータ1222の値を読み出す。このときのBootNextデータ1222の値は、OSブートリスト1223が保持しているレコードのうち、計算機100が自動起動すべきOSに対応するレコード番号フィールド12231の値である。
(図6:ステップS605)
OSブート処理コード1213は、OSブートリスト1223を読み出し、ステップS603またはステップS604で起動するように指定されたOSに対応するレコードを取得する。
OSブート処理コード1213は、OSブートリスト1223を読み出し、ステップS603またはステップS604で起動するように指定されたOSに対応するレコードを取得する。
(図6:ステップS606)
OSブート処理コード1213は、ステップS605でOSブートリスト1223から取得したレコードのデバイスパスフィールド12233の値をキーにして、時差データ123が保持しているレコードのうちデバイスパスフィールド1232に同じ値が格納されているものを取得する。該当するレコードが見つかれば、時差フィールド1233の値を取得する。該当するレコードが見つからなかった場合は、時差フィールド1233の値が0であるとみなす。
OSブート処理コード1213は、ステップS605でOSブートリスト1223から取得したレコードのデバイスパスフィールド12233の値をキーにして、時差データ123が保持しているレコードのうちデバイスパスフィールド1232に同じ値が格納されているものを取得する。該当するレコードが見つかれば、時差フィールド1233の値を取得する。該当するレコードが見つからなかった場合は、時差フィールド1233の値が0であるとみなす。
(図6:ステップS607)
OSブート処理コード1213は、BMC116からUTC1161の時刻を取得する。
OSブート処理コード1213は、BMC116からUTC1161の時刻を取得する。
(図6:ステップS608)
OSブート処理コード1213は、ステップS607で取得したUTC1161の時刻に、ステップS606で取得した時差フィールド1233の値を加算し、加算後の時刻をRTC1151の時刻としてセットする。
OSブート処理コード1213は、ステップS607で取得したUTC1161の時刻に、ステップS606で取得した時差フィールド1233の値を加算し、加算後の時刻をRTC1151の時刻としてセットする。
(図6:ステップS609)
OSブート処理コード1213は、ステップS603またはステップS604で起動するように指定されたOSに対応する、レコード番号フィールド12231の値を、BootCurrentデータ1221に記録する。
OSブート処理コード1213は、ステップS603またはステップS604で起動するように指定されたOSに対応する、レコード番号フィールド12231の値を、BootCurrentデータ1221に記録する。
(図6:ステップS610)
OSブート処理コード1213は、OSローダをメモリ112上に読み出す。OSローダは、OSを記憶装置から読み出して起動するプログラムである。OSローダは、OSがインストールされている記憶装置から取得することができる。
OSブート処理コード1213は、OSローダをメモリ112上に読み出す。OSローダは、OSを記憶装置から読み出して起動するプログラムである。OSローダは、OSがインストールされている記憶装置から取得することができる。
(図6:ステップS611)
OSブート処理コード1213は、メモリ112上に読み出したOSローダに制御を引き渡す。以後、OSローダは、ステップS603またはステップS604で起動するように指定されたOSを起動する。OSは、RTC1151から時刻を取得してOS上の時刻として用いる。RTC1151の時刻は、ステップS608において「UTC+時差」にセットされているので、当該OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。
OSブート処理コード1213は、メモリ112上に読み出したOSローダに制御を引き渡す。以後、OSローダは、ステップS603またはステップS604で起動するように指定されたOSを起動する。OSは、RTC1151から時刻を取得してOS上の時刻として用いる。RTC1151の時刻は、ステップS608において「UTC+時差」にセットされているので、当該OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。
<実施の形態1:まとめ>
以上のように、本実施形態1に係る計算機100は、OS上の時刻とUTC1161との間の時差を時差テーブル123上に保持しておく。計算機100は、OSを起動する際に、そのOSに対応する時差を時差テーブル123から取得し、これをUTC1161の時刻に加算して得た時刻を、OS上の時刻として用いる。これにより、同一のOSを複数の計算機が利用する場合でも、RTC1151が保持している時刻の差異によらず、OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。同様に、同一の計算機100上で複数のOSを用いる場合でも、各OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。
以上のように、本実施形態1に係る計算機100は、OS上の時刻とUTC1161との間の時差を時差テーブル123上に保持しておく。計算機100は、OSを起動する際に、そのOSに対応する時差を時差テーブル123から取得し、これをUTC1161の時刻に加算して得た時刻を、OS上の時刻として用いる。これにより、同一のOSを複数の計算機が利用する場合でも、RTC1151が保持している時刻の差異によらず、OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。同様に、同一の計算機100上で複数のOSを用いる場合でも、各OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。
また、本実施形態1に係る計算機100は、OSをシャットダウンするとき、OS上の時刻とUTC1161との間の時差を、時差テーブル123に記録する。これにより、新たなOSが追加された場合でも、そのOSを以後用いる際に、OSのタイムゾーンに合致した時刻をOS時刻として用いることができる。
<実施の形態2>
実施形態1において、計算機100が複数存在する場合、いずれかの計算機100を待機系計算機としてスタンバイさせておき、他の計算機100に障害が発生した時点で待機系計算機に処理を引き継ぐことが考えられる。
実施形態1において、計算機100が複数存在する場合、いずれかの計算機100を待機系計算機としてスタンバイさせておき、他の計算機100に障害が発生した時点で待機系計算機に処理を引き継ぐことが考えられる。
ここで、稼動系計算機が使用する「OS A」はシャットダウンするときにRTC1151にUTCを記録するように設定されており、待機系計算機が使用する「OS B」はシャットダウンするときにRTC1151に日本標準時を記録するように設定されていると仮定する。各計算機が使用するOS上の時刻は異なるので、実施形態1で述べたものと同様の課題が生じる。
そこで、実施形態1で説明した時刻管理手法を用いて、稼動系計算機から待機系計算機へOS時刻を引き継ぐことができる。これにより、特許文献1に記載されているようなシステム構成の下における時刻不一致に係る課題を解決することができる。
ただし、OSブートリスト1223と時差テーブル123それぞれの内容は、稼動系計算機と待機系計算機の間で共有しておく必要がある。例えばBIOSメニュー画面上などで各計算機100に同じ内容のOSブートリスト1223と時差テーブル123をそれぞれ個別にセットしてもよいが、作業上の手間がかかる。
そこで、いずれかの計算機100がマスタとなって、他の計算機100にOSブートリスト1223と時差テーブル123を配信するようにするとよい。マスタとなる計算機100は、SVP130およびLAN300などを介して他の計算機にOSブートリスト1223と時差テーブル123を送信する。他の計算機100は、LAN300およびSVP130を介してこれを受信し、フラッシュメモリ120に格納する。
これにより、各計算機100は同一のOSブートリスト1223と時差テーブル123を保持することになるので、稼動系計算機から待機系計算機に処理を引き継いでも、時刻ずれが生じないようにすることができる。
なお、本実施形態2における「送信部」「受信部」は、SVP130が相当する。
<実施の形態3>
実施形態1〜2において、2つのRTC(RTC1151とUTC1161)を用いる構成例を説明したが、これは一般的な計算機100の構成部品であるIO Controller Hub115にRTC1151が備えられているからこれを便宜上用いたものである。必ずしもRTC1151を用いずとも、UTC1161のみを用いて実施形態1〜2と同様の効果を発揮することもできる。
実施形態1〜2において、2つのRTC(RTC1151とUTC1161)を用いる構成例を説明したが、これは一般的な計算機100の構成部品であるIO Controller Hub115にRTC1151が備えられているからこれを便宜上用いたものである。必ずしもRTC1151を用いずとも、UTC1161のみを用いて実施形態1〜2と同様の効果を発揮することもできる。
この場合、計算機100は、OSをシャットダウンするときおよびOSを起動するときに、UTC1161の時刻を更新しない。OS時刻とUTCとの間の時差を時差テーブル123に記録する点、およびUTC1161に時差を加算してOS時刻として用いる点については、実施形態1〜2と同様である。
また、実施形態1〜2では、RTC1161の時刻としてUTCを用いることを説明したが、計算機100間で共有することができるその他の標準時刻を用いてもよい。例えば日本標準時をRTC1161の時刻としてもよい。
<実施の形態4>
実施形態1〜3では、OSが時刻設定ランタイムサービスを呼び出して図5の処理フローが起動されるまで、時差テーブル123は更新されない。時差テーブル123の内容をより頻繁に更新する必要がある場合は、そのためのランタイムサービスを記述したプログラムコードをBIOSコード121に追加し、これを起動するエージェントプログラムをOS上にインストールして適当なタイミングで起動するようにしてもよい。
実施形態1〜3では、OSが時刻設定ランタイムサービスを呼び出して図5の処理フローが起動されるまで、時差テーブル123は更新されない。時差テーブル123の内容をより頻繁に更新する必要がある場合は、そのためのランタイムサービスを記述したプログラムコードをBIOSコード121に追加し、これを起動するエージェントプログラムをOS上にインストールして適当なタイミングで起動するようにしてもよい。
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
また、上記各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。各機能を実現するプログラム、テーブルなどの情報は、メモリやハードディスクなどの記憶装置、ICカード、DVDなどの記憶媒体に格納することができる。
100:計算機、110:CPUボード、111:CPU、112:メモリ、113:IO Hub、114:HBA、115:IO Controller Hub、1151:RTC、116:BMC、1161:RTC(UTC)、120:フラッシュメモリ、121:BIOSコード、1211:プラットフォーム初期化コード、1212:ランタイムサービスコード、1213:OSブート処理コード、1214:ブートメニューコード、122:BIOS変数データ、1221:BootCurrentデータ、1222:BootNextデータ、1223:OSブートリスト、12231:レコード番号フィールド、12232:OS名フィールド、12233:デバイスパスフィールド、12234:追加データフィールド、123:時差テーブル、1231:レコード番号フィールド、1232:デバイスパスフィールド、1233:時差フィールド、130:SVP、200:ファイバチャネルファブリック、211〜213:記憶装置、300:LAN、310:管理サーバ。
Claims (5)
- ネットワークを介して複数の記憶装置に接続された第1計算機であって、
標準時刻と同期がとられた第1内部クロックと、
前記複数の記憶装置にそれぞれ格納されている複数のOSのいずれかを読み出して起動する第1演算部と、
第1記憶部と、
を備える第1計算機、
前記ネットワークを介して前記複数の記憶装置および前記第1計算機に接続された第2計算機であって、
標準時刻と同期がとられた第2内部クロック、
前記複数の記憶装置にそれぞれ格納されている複数のOSのいずれかを読み出して起動する第2演算部、
第2記憶部、
を備える第2計算機、
を有する計算機システムであって、
前記第1記憶部は、
OSが格納されている前記複数の記憶装置それぞれの前記ネットワーク上におけるアドレスと、
各前記記憶装置に格納されるOS上の時刻と前記第1内部クロックが保持する時刻との間の時差を前記アドレスに対応付けて記述した時差情報と、
を格納しており、
前記第1演算部は、前記第1記憶部が格納している前記時差情報を前記第2計算機に対して送信し、
前記第2演算部は、
前記複数の記憶装置に格納されている複数のOSのいずれかを読み出して起動し、
前記第1計算機から受信した前記時差情報を参照し、当該起動したOSが格納される前記記憶装置の前記ネットワーク上におけるアドレスに基づき、当該起動したOSに対応する前記時差を取得し、
前記内部クロックが保持している時刻にその時差を加算した時刻を、当該起動したOSの時刻としてセットする
ことを特徴とする計算機システム。 - 前記第1演算部は、
前記記憶装置から読み出して起動した前記OSを終了する際に、
前記OS上の時刻と前記第1内部クロックが保持している時刻との間の時差を、前記時差情報内に記録する
ことを特徴とする請求項1記載の計算機システム。 - 前記第1計算機は、複数のOSを格納した内蔵記憶装置を備え、
前記第1記憶部は、
前記内蔵記憶装置上における各前記OSの格納先アドレスを記述するOS識別情報、
各前記OS上の時刻と前記第1内部クロックが保持する時刻との間の時差を前記OS識別情報に対応付けて記述した内部時差情報、
を格納しており、
前記第1演算部は、
前記内蔵記憶装置に格納されている前記OSを読み出す際に、前記格納先アドレスに基づき前記OSを識別し、そのOSに対応する前記内部時差情報が記述している時差を取得し、
前記第1内部クロックが保持している時刻にその取得した時差を加算した時刻を、前記読み出したOSの時刻としてセットする
ことを特徴とする請求項1記載の計算機システム。 - 前記第2計算機は、内蔵電池または前記第2計算機の電源から電力供給を受けて時刻を計時するリアルタイムクロックを備え、
前記第2演算部は、
前記記憶装置にインストールされている前記OSを読み出して起動する際に、そのOSに対応する前記時差を前記第2内部クロックの時刻に加算した時刻を前記リアルタイムクロックの時刻としてセットした後、前記リアルタイムクロックから時刻を取得して前記OSの時刻としてセットし、
前記リアルタイムクロックは、
前記OSが終了した後は前記内蔵電池から電力供給を受けて計時を継続する
ことを特徴とする請求項1記載の計算機システム。 - ネットワークを介して複数の記憶装置に接続された第1計算機であって、
標準時刻と同期がとられた第1内部クロックと、
前記複数の記憶装置にそれぞれ格納されている複数のOSのいずれかを読み出して起動する第1演算部と、
第1記憶部と、
を備える第1計算機、
前記ネットワークを介して前記複数の記憶装置および前記第1計算機に接続された第2計算機であって、
標準時刻と同期がとられた第2内部クロック、
前記複数の記憶装置にそれぞれ格納されている複数のOSのいずれかを読み出して起動する第2演算部、
第2記憶部、
を備える第2計算機、
を有する計算機システムの時刻を管理する方法であって、
前記第1記憶部は、
OSが格納されている前記複数の記憶装置それぞれの前記ネットワーク上におけるアドレスと、
各前記記憶装置に格納されるOS上の時刻と前記第1内部クロックが保持する時刻との間の時差を前記アドレスに対応付けて記述した時差情報と、
を格納しており、
前記方法は、
前記第1演算部が、前記第1記憶部が格納している前記時差情報を前記第2計算機に対して送信するステップと、
前記第2演算部が、前記複数の記憶装置に格納されている複数のOSのいずれかを読み出して起動するステップと、
前記第2演算部が、前記第1計算機から受信した前記時差情報を参照し、当該起動したOSが格納される前記記憶装置の前記ネットワーク上におけるアドレスに基づき、当該起動したOSに対応する前記時差を取得するステップと、
前記第2演算部が、前記内部クロックが保持している時刻にその時差を加算した時刻を、当該起動したOSの時刻としてセットするステップと、
を有することを特徴とする計算機時刻管理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2011/054643 WO2012117526A1 (ja) | 2011-03-01 | 2011-03-01 | 計算機、計算機時刻管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2012117526A1 JPWO2012117526A1 (ja) | 2014-07-07 |
JP5722990B2 true JP5722990B2 (ja) | 2015-05-27 |
Family
ID=46757488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013502096A Expired - Fee Related JP5722990B2 (ja) | 2011-03-01 | 2011-03-01 | 計算機システム、計算機時刻管理方法 |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5722990B2 (ja) |
WO (1) | WO2012117526A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113126694B (zh) * | 2021-04-13 | 2023-08-04 | 山东英信计算机技术有限公司 | 计算机管理子系统的对时方法、系统、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0440552A (ja) * | 1990-06-06 | 1992-02-10 | Fujitsu Ltd | 時刻機構制御方法 |
JP2004054815A (ja) * | 2002-07-24 | 2004-02-19 | Nec Corp | 情報処理装置の時刻同期化装置 |
JP2005267321A (ja) * | 2004-03-19 | 2005-09-29 | Hitachi Ltd | 論理計算機システムにおける時刻合わせ方法 |
WO2007099624A1 (ja) * | 2006-03-01 | 2007-09-07 | Fujitsu Limited | コンピュータシステムの時刻管理制御方法及びコンピュータシステム |
JP2011013076A (ja) * | 2009-07-01 | 2011-01-20 | Nec Computertechno Ltd | 標準周波数時報電波による情報機器の時刻補正装置、時刻補正方法及び時刻補正プログラム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0797358B2 (ja) * | 1992-04-22 | 1995-10-18 | 富士通株式会社 | 仮想計算機システムの入出力制御方法及び装置 |
JP2003036123A (ja) * | 2001-07-25 | 2003-02-07 | Meidensha Corp | コンピュータの時刻管理方式 |
-
2011
- 2011-03-01 JP JP2013502096A patent/JP5722990B2/ja not_active Expired - Fee Related
- 2011-03-01 WO PCT/JP2011/054643 patent/WO2012117526A1/ja active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0440552A (ja) * | 1990-06-06 | 1992-02-10 | Fujitsu Ltd | 時刻機構制御方法 |
JP2004054815A (ja) * | 2002-07-24 | 2004-02-19 | Nec Corp | 情報処理装置の時刻同期化装置 |
JP2005267321A (ja) * | 2004-03-19 | 2005-09-29 | Hitachi Ltd | 論理計算機システムにおける時刻合わせ方法 |
WO2007099624A1 (ja) * | 2006-03-01 | 2007-09-07 | Fujitsu Limited | コンピュータシステムの時刻管理制御方法及びコンピュータシステム |
JP2011013076A (ja) * | 2009-07-01 | 2011-01-20 | Nec Computertechno Ltd | 標準周波数時報電波による情報機器の時刻補正装置、時刻補正方法及び時刻補正プログラム |
Also Published As
Publication number | Publication date |
---|---|
JPWO2012117526A1 (ja) | 2014-07-07 |
WO2012117526A1 (ja) | 2012-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10055218B2 (en) | System and method for adding and storing groups of firmware default settings | |
US9875204B2 (en) | System and method for providing a processing node with input/output functionality provided by an I/O complex switch | |
US20150242201A1 (en) | Method for updating firmware and electronic device thereof | |
US9904561B2 (en) | Computer system and method for setting BIOS | |
US10303487B2 (en) | System and method for booting an information handling system | |
EP3015985A1 (en) | Retrieving console messages after device failure | |
US10282190B2 (en) | System and method for updating a UEFI image in an information handling system | |
US20190026126A1 (en) | System and Method for Operating System Initiated Firmware Update via UEFI Applications | |
US11340991B2 (en) | Time keeping system and method therefor | |
US7962735B2 (en) | Servo device auto-booted upon power supply recovery and method thereof | |
US20210072977A1 (en) | Systems and methods for hosting multiple firmware images | |
US20150358213A1 (en) | Systems and methods for sharing a single firmware image in a chassis configured to receive a plurality of modular information handling systems | |
CN109408281A (zh) | 用于无头服务器可管理性和自主日志记录的技术 | |
JP5722990B2 (ja) | 計算機システム、計算機時刻管理方法 | |
TW202131170A (zh) | 韌體損壞恢復技術 | |
CN102591691B (zh) | 硬盘启动方法和基于bios的操作系统启动加载方法 | |
US10955872B2 (en) | System and method to retain baseboard management controller real-time clock time during BMC reboot | |
EP3871087B1 (en) | Managing power request during cluster operations | |
CN107704399B (zh) | 一种存储数据的方法和装置 | |
JP2016045750A (ja) | 情報処理システム、管理制御方法および管理制御プログラム | |
US10140232B2 (en) | Peripheral component interface (PCI) system and method for expanding PCI nodes in an information handling system | |
TWI840849B (zh) | 計算系統、電腦實施方法及電腦程式產品 | |
US20230297390A1 (en) | Systems and methods for memory content sharing between hosts and management controllers | |
US11507383B2 (en) | Configurable boot paths | |
US20230195486A1 (en) | Scaling cluster without re-imaging nodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140826 |
|
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: 20150303 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20150326 |
|
LAPS | Cancellation because of no payment of annual fees |