(57)【要約】  本発明は、複数のＯＳが用いられる場合でも、誤った時刻をＯＳ上で用いないようにするための技術を提供することを目的とする。  本発明に係る計算機は、標準時刻と同期が取られた内部クロック上の時刻とＯＳ上の時刻との間の時差を時差情報として保持しておく。計算機は、ＯＳを起動する際に、そのＯＳに対応する時差を内部クロック上の時刻に加算した時刻を、ＯＳ上の時刻としてセットする（図２）。
2012117526.tif 000002
【特許請求の範囲】
【請求項１】
標準時刻と同期がとられた内部クロックと、
前記内部クロックが保持する時刻を調整する演算部と、
ＯＳ上の時刻を調整する際に用いられる情報を記憶する記憶部と、
を備え、
前記記憶部は、
記憶装置にインストールされている１以上のＯＳを個別に識別するＯＳ識別情報と、
前記内部クロックが保持する時刻と前記ＯＳ上の時刻との間の時差を、前記ＯＳ識別情報が識別する前記ＯＳ毎に記述した時差情報と、
を格納しており、
前記演算部は、
前記記憶装置にインストールされているＯＳを読み出して起動し、
起動したＯＳに対応する前記時差を前記時差情報から取得し、前記内部クロックが保持している時刻にその時差を加算した時刻を、起動したＯＳの時刻としてセットする
ことを特徴とする計算機。
【請求項２】
前記演算部は、
前記記憶装置から読み出して起動した前記ＯＳを終了する際に、
前記ＯＳ上の時刻と前記内部クロックが保持している時刻との間の時差を、前記時差情報内に記録する
ことを特徴とする請求項１記載の計算機。
【請求項３】
前記記憶装置は、前記計算機に内蔵されており、
前記ＯＳ識別情報は、
前記記憶装置上における各前記ＯＳの格納先アドレスを記述しており、
前記演算部は、
前記記憶装置にインストールされている前記ＯＳを読み出す際に、前記格納先アドレスに基づき前記ＯＳを識別し、そのＯＳに対応する前記時差を前記時差情報から取得する
ことを特徴とする請求項１記載の計算機。
【請求項４】
前記記憶装置は、
複数の計算機が前記ＯＳを読み出すことができるように構成されており、
前記ＯＳ識別情報は、
前記記憶装置の外部から認識することのできる各前記ＯＳの格納先アドレスを記述しており、
前記演算部は、
前記記憶装置にインストールされている前記ＯＳを読み出す際に、前記格納先アドレスに基づき前記ＯＳを識別し、そのＯＳに対応する前記時差を前記時差情報から取得する
ことを特徴とする請求項１記載の計算機。
【請求項５】
前記時差情報を他の計算機に対して送信する送信部を備えたことを特徴とする請求項４記載の計算機。
【請求項６】
前記時差情報を他の計算機から受信する受信部を備えたことを特徴とする請求項４記載の計算機。
【請求項７】
内蔵電池または前記計算機の電源から電力供給を受けて時刻を計時するリアルタイムクロックを備え、
前記演算部は、
前記記憶装置にインストールされている前記ＯＳを読み出して起動する際に、そのＯＳに対応する前記時差を前記内部クロックの時刻に加算した時刻を前記リアルタイムクロックの時刻としてセットした後、前記リアルタイムクロックから時刻を取得して前記ＯＳの時刻としてセットし、
前記リアルタイムクロックは、
前記ＯＳが終了した後は前記内蔵電池から電力供給を受けて計時を継続する
ことを特徴とする請求項１記載の計算機。
【請求項８】
計算機の時刻を管理する方法であって、
前記計算機は、
標準時刻と同期がとられた内部クロックと、
前記内部クロックが保持する時刻を調整する演算部と、
ＯＳ上の時刻を調整する際に用いられる情報を記憶する記憶部と、
を備え、
前記記憶部は、
記憶装置にインストールされている１以上のＯＳを個別に識別するＯＳ識別情報と、
前記内部クロックが保持する時刻と前記ＯＳ上の時刻との間の時差を、前記ＯＳ識別情報が識別する前記ＯＳ毎に記述した時差情報と、
を格納しており、
前記記憶装置にインストールされているＯＳを読み出して起動するステップと、
起動したＯＳに対応する前記時差を前記時差情報から取得し、前記内部クロックが保持している時刻にその時差を加算した時刻を、起動したＯＳの時刻としてセットするステップと、
を有することを特徴とする計算機時刻管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機の内部時刻を管理する技術に関するものである。
【背景技術】
【０００２】
一般に、サーバ装置などの計算機は、ＲＴＣ（Ｒｅａｌ  Ｔｉｍｅ  Ｃｌｏｃｋ）と呼ばれるバッテリーバックアップされた内部時計を保持している。計算機のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）は、その内部時計から時刻を電気信号として読み出し、現在時刻を知ることができる。計算機は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を起動するときにＲＴＣから時刻を読み出してその時刻をＯＳ上の時刻としてセットし、以後はＯＳ内部で時刻を管理する。また、計算機がＯＳをシャットダウンするときは、ＯＳ上の時刻をＲＴＣに記録し、以後はＲＴＣがバッテリーから電力供給を受けながら計時を継続する。すなわち、ＲＴＣはＯＳが起動するときに現在時刻を知るために用いられ、ＯＳが起動した後はＯＳが自ら時刻を管理する。【０００３】
計算機がＯＳをシャットダウンするときにＲＴＣに記録する時刻は、ＵＴＣ（Ｕｎｉｖｅｒｓａｌ  Ｔｉｍｅ，Ｃｏｏｒｄｉｎａｔｅｄ：協定世界時）のような標準時刻であってもよいし、ローカルタイムであってもよい。ローカルタイムを記録する場合、世界のどの地域のローカルタイムを記録するか（タイムゾーン）によって、ＲＴＣに記録される時刻は異なる。どのタイムゾーンの時刻がＲＴＣに記録されるかは、ＯＳの種類や使用言語に依存する。また、ユーザ毎にタイムゾーンを指定することができる場合には、その指定によってもＲＴＣに記録される時刻が異なる。【０００４】
一般に、標準的な計算機の構成では、１台の計算機に１つのＯＳがインストールされているが、１台の計算機に複数のＯＳがインストールされているマルチブート構成を採用した計算機もある。また、計算機の外部に接続された外部記憶装置にＯＳをインストールしておき、複数の計算機がそのＯＳを用いることができるようにしている場合もある。【０００５】
下記特許文献１には、外部のディスク装置を利用してブートするサーバにおいて障害が発生した場合に、ブートディスクの引き継ぎによる業務引き継ぎを実現する方法が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−１６３９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
計算機がマルチブート構成を採用している場合、あるＯＳ上のタイムゾーンと別のＯＳ上のタイムゾーンが異なる可能性がある。このとき、計算機は各ＯＳをシャットダウンときにそれぞれ異なる時刻をＲＴＣにセットすることになるので、ＯＳを起動する毎に異なるタイムゾーン上の時刻をＲＴＣから読み出してしまい、時刻を正確に管理することが難しくなる。【０００８】
外部記憶装置にＯＳをインストールして複数の計算機から共用する場合、同じＯＳを起動したとしても、各計算機が備えているＲＴＣに記録されている時刻が異なっていると、ＯＳが同じであるにもかかわらず異なる時刻を用いてしまう。また、特許文献１のように待機サーバへ処理を引き継ぐ場合、障害が発生したサーバが備えるＲＴＣに記録されている時刻と、待機サーバが備えるＲＴＣに記録されている時刻とが異なり、引き継ぎがうまくいかない可能性がある。【０００９】
本発明は、上記のような課題を解決するためになされたものであり、複数のＯＳが用いられる場合でも、誤った時刻をＯＳ上で用いないようにするための技術を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る計算機は、標準時刻と同期が取られた内部クロック上の時刻とＯＳ上の時刻との間の時差を時差情報として保持しておく。計算機は、ＯＳを起動する際に、そのＯＳに対応する時差を内部クロック上の時刻に加算した時刻を、ＯＳ上の時刻としてセットする。
【発明の効果】
【００１１】
本発明に係る計算機によれば、標準時刻を基準としたＯＳ間の時差を加味した上でＯＳ上の時刻をセットするので、複数のＯＳが用いられる場合でも、各ＯＳ上で正しい時刻を用いることができる。
【図面の簡単な説明】
【００１２】
【図１】実施形態１に係る計算機１００の構成図である。
【図２】フラッシュメモリ１２０が格納している情報を示す図である。
【図３】ＯＳブートリスト１２２３の構成とデータ例を示す図である。
【図４】時差テーブル１２３の構成とデータ例を示す図である。
【図５】計算機１００のＢＩＯＳ機能が提供する、時刻設定ランタイムサービスの処理フローを示す図である。
【図６】計算機１００が起動してからＯＳローダに処理が移行するまでの処理フローである。
【発明を実施するための形態】
【００１３】
＜実施の形態１＞
図１は、本発明の実施形態１に係る計算機１００の構成図である。計算機１００周辺の装置も併せて示した。計算機１００は、外部に接続されている記憶装置２１１、２１２、２１３のいずれかにインストールされているＯＳを、自己のＯＳとして用いる。計算機１００は複数台存在する場合もある。各計算機１００は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）３００を介して接続される。計算機１００は、ＣＰＵボード１１０、フラッシュメモリ１２０、ＳＶＰ（サービスプロセッサ）１３０を備える。
【００１４】
ＣＰＵボード１１０は、ＣＰＵ１１１、メモリ１１２、ＩＯ  Ｈｕｂ１１３、ＨＢＡ（ホストバスアダプタ）１１４、ＩＯ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ１１５、ＢＭＣ（Ｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｃｏｎｔｒｏｌｌｅｒ）１１６を搭載している。
【００１５】
ＣＰＵ１１１は、計算機１００のＯＳを実行する。また、後述するＲＴＣ１１５１とＵＴＣ１１６１を用いて、ＯＳ上の時刻を調整する。以下では記載の便宜上、ＯＳや各プログラムコードなどのソフトウェアを動作主体として説明する場合があるが、実際にこれらソフトウェアを実行するのはＣＰＵ１１１などの演算装置であることを付言しておく。
【００１６】
メモリ１１２は、ＣＰＵ１１１が動作する際に一時的に用いるデータなどを保持する記憶装置である。ＩＯ  Ｈｕｂ１１３は、ＣＰＵ１１１とその他の機能部を接続する。ＨＢＡ１１４は、後述するファイバチャネルファブリック２００と計算機１００を接続するインターフェースである。
【００１７】
ＩＯ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ１１５は、異なる接続規格で接続されるデバイス同士を相互に接続する装置である。ここではフラッシュメモリ１２０を接続した例を示した。フラッシュメモリ１２０が格納している情報については後述する。ＩＯ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ１１５は、ＲＴＣ１１５１を備え、計算機１００のＯＳに時刻を提供する。
【００１８】
ＢＭＣ１１６は、計算機１００を外部から管理するための処理を実行する装置である。ＢＭＣ１１６は、ＲＴＣ１１６１を備える。ＢＭＣ１１６は、ＲＴＣ１１６１が保持する時刻を、ＵＴＣなどの標準時刻に同期させる。記載の便宜上、以下ではＵＴＣ１１６１と表記する。
【００１９】
ＳＶＰ１３０は、計算機１００の外部から計算機を管理するための操作を受け付けるインターフェースとしての役割を有する。ＳＶＰ１３０は、ＬＡＮ３００を介して管理サーバ３１０と接続され、管理サーバ３１０から管理操作を受け取ってＢＭＣ１１６に通知する。ＢＭＣ１１６は、その通知にしたがって計算機１００の管理処理を実行する。
【００２０】
ファイバチャネルファブリック２００は、記憶装置２１１〜２１３を接続するネットワークである。記憶装置２１１〜２１３は、各計算機１００からアクセスすることができるように構成されている。記憶装置２１１〜２１３には、それぞれ異なるＯＳがインストールされている。各ＯＳのタイムゾーンは同一である場合もあるし、それぞれタイムゾーンが異なる場合もある。各計算機１００は、記憶装置２１１〜２１３にインストールされているＯＳを読み出して起動する。ここでは３台の記憶装置２１１〜２１３を例示したが、記憶装置の台数は任意でよいし、いずれか１以上の記憶装置を計算機１００に内蔵してもよい。また、１台の記憶装置に複数のＯＳをインストールしてもよい。
【００２１】
本実施形態１における「内部クロック」は、ＵＴＣ１１６１が相当する。「演算部」は、ＣＰＵ１１１が相当する。「記憶部」は、フラッシュメモリ１２０が相当する。「記憶装置」は、記憶装置２１１〜２１３が相当する。
【００２２】
図２は、フラッシュメモリ１２０が格納している情報を示す図である。フラッシュメモリ１２０は、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）コード１２１、ＢＩＯＳ変数データ１２２、時差テーブル１２３を格納している。
【００２３】
ＢＩＯＳコード１２１は、計算機１００のＢＩＯＳ機能を実装したプログラムコード群であり、プラットフォーム初期化コード１２１１、ランタイムサービスコード１２１２、ＯＳブート処理コード１２１３、ブートメニューコード１２１４を含む。
【００２４】
プラットフォーム初期化コード１２１１は、後述の図６におけるステップＳ１１０１で説明する、計算機１００を初期化する処理を記述したプログラムコードである。ランタイムサービスコード１２１２は、後述の図５で説明する処理を記述したプログラムコードである。ＯＳブート処理コード１２１３は、後述の図６で説明する処理全体を記述したプログラムコードである。ブートメニューコード１２１４は、計算機１００がいずれのＯＳを起動すべきかをユーザに選択させるメニュー画面（ＢＩＯＳメニュー）を画面表示するための処理を記述したプログラムコードである。
【００２５】
ＢＩＯＳ変数データ１２２は、ＢＩＯＳ機能上で用いられる各種変数を保持するデータであり、ＢｏｏｔＣｕｒｒｅｎｔデータ１２２１、ＢｏｏｔＮｅｘｔデータ１２２２、ＯＳブートリスト１２２３を含む。
【００２６】
ＯＳブートリスト１２２３は、計算機１００が起動することができるＯＳのリストを保持するデータである。詳細は後述の図３で改めて説明する。ＢｏｏｔＣｕｒｒｅｎｔデータ１２２１は、ＯＳブートリスト１２２３が保持しているレコードのうち、現在起動しているＯＳに対応するレコード番号を保持する。ＢｏｏｔＮｅｘｔデータ１２２２は、ＯＳブートリスト１２２３が保持しているレコードのうち、ユーザがＢＩＯＳメニュー上で起動すべきＯＳを指定しなかった場合に計算機１００が起動すべきＯＳに対応するレコード番号を保持する。
【００２７】
時差テーブル１２３は、ＯＳブートリスト１２２３が保持しているＯＳリスト内の各ＯＳ上で用いられる時刻と、ＵＴＣ１１６１が保持している標準時刻との間の時差を、ＯＳ毎に記述したデータである。詳細は後述の図４で改めて説明する。
【００２８】
本実施形態１における「ＯＳ識別情報」は、ＯＳブートリスト１２２３が相当する。「時差情報」は、時差テーブル１２３が相当する。
【００２９】
図３は、ＯＳブートリスト１２２３の構成とデータ例を示す図である。ＯＳブートリスト１２２３は、レコード番号フィールド１２２３１、ＯＳ名フィールド１２２３２、デバイスパスフィールド１２２３３、追加データフィールド１２２３４を有する。
【００３０】
レコード番号フィールド１２２３１は、ＯＳブートリスト１２２３が保持する個々のレコードを識別するための番号を保持する。ＯＳ名フィールド１２２３２は、計算機１００が記憶装置から読み出して起動することができるＯＳの名称を記述している。追加データフィールド１２２３４は、任意の予備的なデータを保持するためのフィールドであり、ＯＳが自由に使用することができる。
【００３１】
デバイスパスフィールド１２２３３は、計算機１００が読み出すＯＳが格納されている記憶装置上のアドレスを記述している。本フィールドが記述しているアドレスは、ＯＳがインストールされている記憶装置が計算機１００に内蔵されている場合であれば、その記憶装置上のアドレスである。ＯＳがインストールされている記憶装置が、記憶装置２１１〜２１３のように計算機１００の外部に接続されている場合であれば、本フィールドが記述しているアドレスは、各記憶装置のネットワーク上のアドレスを含む。例えばファイバチャネルファブリック２００上のＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）とＬＵ番号（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ：論理ユニット番号）などを本フィールドに記述するようにしてもよい。１台の記憶装置に複数のＯＳがインストールされている場合でも、ＷＷＮとＬＵの組み合わせにより、ＯＳの格納先アドレスを特定することができる。
【００３２】
図３に示すデータ例によれば、計算機１００は、それぞれ「パスＡ」「パスＢ」「パスＣ」にインストールされている３つのＯＳ「ＯＳ  Ａ」「ＯＳ  Ｂ」「ＯＳ  Ｃ」のいずれかを選択して起動することができることが分かる。
【００３３】
図４は、時差テーブル１２３の構成とデータ例を示す図である。時差テーブル１２３は、レコード番号フィールド１２３１、デバイスパスフィールド１２３２、時差フィールド１２３３を有する。
【００３４】
レコード番号フィールド１２３１は、時差テーブル１２３が保持する個々のレコードを識別するための番号を保持する。デバイスパスフィールド１２３２は、計算機１００が読み出すＯＳが格納されている記憶装置上のアドレスを記述するフィールドであり、ＯＳブートリスト１２２３のデバイスパスフィールド１２２３３に対応する。時差フィールド１２３３は、デバイスパスフィールド１２３２に記述されているアドレスにインストールされているＯＳ上の時刻と、ＵＴＣなどの標準時刻（本実施形態１ではＵＴＣ１１６１の時刻）との間の時差を保持する。
【００３５】
図４のデータ例によれば、「パスＡ」にインストールされている「ＯＳ  Ａ」上の時刻はＵＴＣ１１６１の時刻と一致していることが分かる。同様に、「パスＢ」にインストールされている「ＯＳ  Ｂ」上の時刻はＵＴＣ１１６１よりも９時間進んでいることがわかる。
【００３６】
以上、計算機１００およびその周辺機器の構成について説明した。次に、ＯＳ間の時刻がずれていることによって生じる不都合について説明する。
【００３７】
「ＯＳ  Ａ」はシャットダウンするときにＲＴＣ１１５１にＵＴＣをセットするように設定されており、「ＯＳ  Ｂ」はシャットダウンするときにＲＴＣ１１５１に日本標準時をセットするように設定されていると仮定する。「ＯＳ  Ｂ」は日本標準時を用いるように設定されているので、起動するときにＲＴＣ１５１１から時刻を取得すると、その時刻は日本標準時であると想定する。そのため、「ＯＳ  Ａ」がＲＴＣ１５１１にＵＴＣを記録してシャットダウンした後に「ＯＳ  Ｂ」を起動すると、ＵＴＣ上の時刻を誤って日本標準時として取り扱ってしまう。
【００３８】
そこで本実施形態１では、ＲＴＣ１１５１が保持している時刻をそのままＯＳ上の時刻としてセットするのではなく、ＯＳ上の時刻とＵＴＣの時差を時差テーブル１２３上で管理しておくことにより、いずれのＯＳ上でもＵＴＣからの時差を用いることにした。ＵＴＣはどのＯＳ上でも共通であるため、ＵＴＣからの時差と各ＯＳの対応関係を正確に管理しておけば、どのＯＳ上でも正確な時刻を提供することができる。
【００３９】
図５は、計算機１００のＢＩＯＳ機能が提供する、時刻設定ランタイムサービスの処理フローを示す図である。時刻設定ランタイムサービスは、ＲＴＣ１１５１に時刻を記録する機能である。ＲＴＣ１１５１は計算機１００の内部的な構成要素であるため、ＲＴＣ１１５１に対する操作は一般的にＢＩＯＳ機能の配下で実施される。ＯＳは、ＢＩＯＳが提供する時刻設定ランタイムサービスを呼び出すことにより、シャットダウン時にＲＴＣ１１５１に時刻を記録する。以下、図５の各ステップについて説明する。
【００４０】
（図５：ステップＳ５００）
計算機１００のＯＳは、シャットダウンするときに本処理フローを起動する。ランタイムサービスコード１２１２は、以下のステップＳ５０１〜Ｓ５０５を実行する。ＯＳは、本処理フローを起動するとき、ＲＴＣ１１５１に記録する時刻を指定してランタイムサービスコード１２１２に引き渡す。
【００４１】
（図５：ステップＳ５０１）
ランタイムサービスコード１２１２は、フラッシュメモリ１２０からＢｏｏｔＣｕｒｒｅｎｔデータ１２２１の値を読み出す。このときのＢｏｏｔＣｕｒｒｅｎｔデータ１２２１の値は、ＯＳブートリスト１２２３が保持しているレコードのうち、現在計算機１００が実行しているＯＳに対応するレコード番号フィールド１２２３１の値である。
【００４２】
（図５：ステップＳ５０２）
ランタイムサービスコード１２１２は、ステップＳ５０１で取得したＢｏｏｔＣｕｒｒｅｎｔデータ１２２１の値をキーにして、ＯＳブートリスト１２２３の対応するレコードからデバイスパスフィールド１２２３３の値を取得する。この値は、現在計算機１００が実行しているＯＳがインストールされている記憶装置２１１〜２１３いずれかの格納先アドレスである。
【００４３】
（図５：ステップＳ５０３）
ランタイムサービスコード１２１２は、ＢＭＣ１１６からＵＴＣ１１６１の時刻を取得する。
【００４４】
（図５：ステップＳ５０４）
ランタイムサービスコード１２１２は、ステップＳ５００でＯＳから指定された時刻とＵＴＣ１１６１の時刻との間の時差を計算し、時差テーブル１２３のうち現在実行しているＯＳに対応する時差フィールド１２３３に格納する。
【００４５】
（図５：ステップＳ５０５）
ランタイムサービスコード１２１２は、ステップＳ５００でＯＳから指定された時刻をＲＴＣ１１５１にセットする。
【００４６】
図６は、計算機１００が起動してからＯＳローダに処理が移行するまでの処理フローである。以下、図６の各ステップについて説明する。
【００４７】
（図６：ステップＳ６０１）
ＯＳブート処理コード１２１３は、プラットフォーム初期化コード１２１１を起動する。プラットフォーム初期化コード１２１１は、ＣＰＵボード１１０に搭載されている各構成要素を初期化する。
【００４８】
（図６：ステップＳ６０２）
計算機１００のユーザが自動ブートを選択した場合はステップＳ６０４へ進み、手動ブートを選択した場合はステップＳ６０３へ進む。
【００４９】
（図６：ステップＳ６０３）
ＯＳブート処理コード１２１３は、ブートメニューコード１２１４を起動する。ブートメニューコード１２１４は、ＯＳブートメニュー画面を画面表示する。ユーザは、いずれのＯＳを起動するかをＯＳブートメニュー画面上で手動選択する。
【００５０】
（図６：ステップＳ６０４）
ＯＳブート処理コード１２１３は、フラッシュメモリ１２０からＢｏｏｔＮｅｘｔデータ１２２２の値を読み出す。このときのＢｏｏｔＮｅｘｔデータ１２２２の値は、ＯＳブートリスト１２２３が保持しているレコードのうち、計算機１００が自動起動すべきＯＳに対応するレコード番号フィールド１２２３１の値である。
【００５１】
（図６：ステップＳ６０５）
ＯＳブート処理コード１２１３は、ＯＳブートリスト１２２３を読み出し、ステップＳ６０３またはステップＳ６０４で起動するように指定されたＯＳに対応するレコードを取得する。
【００５２】
（図６：ステップＳ６０６）
ＯＳブート処理コード１２１３は、ステップＳ６０５でＯＳブートリスト１２２３から取得したレコードのデバイスパスフィールド１２２３３の値をキーにして、時差データ１２３が保持しているレコードのうちデバイスパスフィールド１２３２に同じ値が格納されているものを取得する。該当するレコードが見つかれば、時差フィールド１２３３の値を取得する。該当するレコードが見つからなかった場合は、時差フィールド１２３３の値が０であるとみなす。
【００５３】
（図６：ステップＳ６０７）
ＯＳブート処理コード１２１３は、ＢＭＣ１１６からＵＴＣ１１６１の時刻を取得する。
【００５４】
（図６：ステップＳ６０８）
ＯＳブート処理コード１２１３は、ステップＳ６０７で取得したＵＴＣ１１６１の時刻に、ステップＳ６０６で取得した時差フィールド１２３３の値を加算し、加算後の時刻をＲＴＣ１１５１の時刻としてセットする。
【００５５】
（図６：ステップＳ６０９）
ＯＳブート処理コード１２１３は、ステップＳ６０３またはステップＳ６０４で起動するように指定されたＯＳに対応する、レコード番号フィールド１２２３１の値を、ＢｏｏｔＣｕｒｒｅｎｔデータ１２２１に記録する。
【００５６】
（図６：ステップＳ６１０）
ＯＳブート処理コード１２１３は、ＯＳローダをメモリ１１２上に読み出す。ＯＳローダは、ＯＳを記憶装置から読み出して起動するプログラムである。ＯＳローダは、ＯＳがインストールされている記憶装置から取得することができる。
【００５７】
（図６：ステップＳ６１１）
ＯＳブート処理コード１２１３は、メモリ１１２上に読み出したＯＳローダに制御を引き渡す。以後、ＯＳローダは、ステップＳ６０３またはステップＳ６０４で起動するように指定されたＯＳを起動する。ＯＳは、ＲＴＣ１１５１から時刻を取得してＯＳ上の時刻として用いる。ＲＴＣ１１５１の時刻は、ステップＳ６０８において「ＵＴＣ＋時差」にセットされているので、当該ＯＳのタイムゾーンに合致した時刻をＯＳ時刻として用いることができる。
【００５８】
＜実施の形態１：まとめ＞
以上のように、本実施形態１に係る計算機１００は、ＯＳ上の時刻とＵＴＣ１１６１との間の時差を時差テーブル１２３上に保持しておく。計算機１００は、ＯＳを起動する際に、そのＯＳに対応する時差を時差テーブル１２３から取得し、これをＵＴＣ１１６１の時刻に加算して得た時刻を、ＯＳ上の時刻として用いる。これにより、同一のＯＳを複数の計算機が利用する場合でも、ＲＴＣ１１５１が保持している時刻の差異によらず、ＯＳのタイムゾーンに合致した時刻をＯＳ時刻として用いることができる。同様に、同一の計算機１００上で複数のＯＳを用いる場合でも、各ＯＳのタイムゾーンに合致した時刻をＯＳ時刻として用いることができる。
【００５９】
また、本実施形態１に係る計算機１００は、ＯＳをシャットダウンするとき、ＯＳ上の時刻とＵＴＣ１１６１との間の時差を、時差テーブル１２３に記録する。これにより、新たなＯＳが追加された場合でも、そのＯＳを以後用いる際に、ＯＳのタイムゾーンに合致した時刻をＯＳ時刻として用いることができる。
【００６０】
＜実施の形態２＞
実施形態１において、計算機１００が複数存在する場合、いずれかの計算機１００を待機系計算機としてスタンバイさせておき、他の計算機１００に障害が発生した時点で待機系計算機に処理を引き継ぐことが考えられる。
【００６１】
ここで、稼動系計算機が使用する「ＯＳ  Ａ」はシャットダウンするときにＲＴＣ１１５１にＵＴＣを記録するように設定されており、待機系計算機が使用する「ＯＳ  Ｂ」はシャットダウンするときにＲＴＣ１１５１に日本標準時を記録するように設定されていると仮定する。各計算機が使用するＯＳ上の時刻は異なるので、実施形態１で述べたものと同様の課題が生じる。
【００６２】
そこで、実施形態１で説明した時刻管理手法を用いて、稼動系計算機から待機系計算機へＯＳ時刻を引き継ぐことができる。これにより、特許文献１に記載されているようなシステム構成の下における時刻不一致に係る課題を解決することができる。
【００６３】
ただし、ＯＳブートリスト１２２３と時差テーブル１２３それぞれの内容は、稼動系計算機と待機系計算機の間で共有しておく必要がある。例えばＢＩＯＳメニュー画面上などで各計算機１００に同じ内容のＯＳブートリスト１２２３と時差テーブル１２３をそれぞれ個別にセットしてもよいが、作業上の手間がかかる。
【００６４】
そこで、いずれかの計算機１００がマスタとなって、他の計算機１００にＯＳブートリスト１２２３と時差テーブル１２３を配信するようにするとよい。マスタとなる計算機１００は、ＳＶＰ１３０およびＬＡＮ３００などを介して他の計算機にＯＳブートリスト１２２３と時差テーブル１２３を送信する。他の計算機１００は、ＬＡＮ３００およびＳＶＰ１３０を介してこれを受信し、フラッシュメモリ１２０に格納する。
【００６５】
これにより、各計算機１００は同一のＯＳブートリスト１２２３と時差テーブル１２３を保持することになるので、稼動系計算機から待機系計算機に処理を引き継いでも、時刻ずれが生じないようにすることができる。
【００６６】
なお、本実施形態２における「送信部」「受信部」は、ＳＶＰ１３０が相当する。
【００６７】
＜実施の形態３＞
実施形態１〜２において、２つのＲＴＣ（ＲＴＣ１１５１とＵＴＣ１１６１）を用いる構成例を説明したが、これは一般的な計算機１００の構成部品であるＩＯ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ１１５にＲＴＣ１１５１が備えられているからこれを便宜上用いたものである。必ずしもＲＴＣ１１５１を用いずとも、ＵＴＣ１１６１のみを用いて実施形態１〜２と同様の効果を発揮することもできる。
【００６８】
この場合、計算機１００は、ＯＳをシャットダウンするときおよびＯＳを起動するときに、ＵＴＣ１１６１の時刻を更新しない。ＯＳ時刻とＵＴＣとの間の時差を時差テーブル１２３に記録する点、およびＵＴＣ１１６１に時差を加算してＯＳ時刻として用いる点については、実施形態１〜２と同様である。
【００６９】
また、実施形態１〜２では、ＲＴＣ１１６１の時刻としてＵＴＣを用いることを説明したが、計算機１００間で共有することができるその他の標準時刻を用いてもよい。例えば日本標準時をＲＴＣ１１６１の時刻としてもよい。
【００７０】
＜実施の形態４＞
実施形態１〜３では、ＯＳが時刻設定ランタイムサービスを呼び出して図５の処理フローが起動されるまで、時差テーブル１２３は更新されない。時差テーブル１２３の内容をより頻繁に更新する必要がある場合は、そのためのランタイムサービスを記述したプログラムコードをＢＩＯＳコード１２１に追加し、これを起動するエージェントプログラムをＯＳ上にインストールして適当なタイミングで起動するようにしてもよい。
【００７１】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【００７２】
また、上記各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。各機能を実現するプログラム、テーブルなどの情報は、メモリやハードディスクなどの記憶装置、ＩＣカード、ＤＶＤなどの記憶媒体に格納することができる。
【符号の説明】
【００７３】
１００：計算機、１１０：ＣＰＵボード、１１１：ＣＰＵ、１１２：メモリ、１１３：ＩＯ  Ｈｕｂ、１１４：ＨＢＡ、１１５：ＩＯ  Ｃｏｎｔｒｏｌｌｅｒ  Ｈｕｂ、１１５１：ＲＴＣ、１１６：ＢＭＣ、１１６１：ＲＴＣ（ＵＴＣ）、１２０：フラッシュメモリ、１２１：ＢＩＯＳコード、１２１１：プラットフォーム初期化コード、１２１２：ランタイムサービスコード、１２１３：ＯＳブート処理コード、１２１４：ブートメニューコード、１２２：ＢＩＯＳ変数データ、１２２１：ＢｏｏｔＣｕｒｒｅｎｔデータ、１２２２：ＢｏｏｔＮｅｘｔデータ、１２２３：ＯＳブートリスト、１２２３１：レコード番号フィールド、１２２３２：ＯＳ名フィールド、１２２３３：デバイスパスフィールド、１２２３４：追加データフィールド、１２３：時差テーブル、１２３１：レコード番号フィールド、１２３２：デバイスパスフィールド、１２３３：時差フィールド、１３０：ＳＶＰ、２００：ファイバチャネルファブリック、２１１〜２１３：記憶装置、３００：ＬＡＮ、３１０：管理サーバ。
【図１】
2012117526.tif 000003
【図２】
2012117526.tif 000004
【図３】
2012117526.tif 000005
【図４】
2012117526.tif 000006
【図５】
2012117526.tif 000007
【図６】
2012117526.tif 000008
【国際調査報告】
2012117526.tif 000009
2012117526.tif 000010
2012117526.tif 000011
2012117526.tif 000012