説明

コンピュータシステム、コンピュータ本体、FCスイッチ、起動方法、送信方法、および初期化プログラム

【課題】ブートを行うFCチャネルにブートディスク以外のFCデバイスを接続していても高速にシステム起動が可能であるコンピュータシステムを提供する。
【解決手段】本発明に係るコンピュータシステム1は、コンピュータ本体2と、オペレーションシステムがインストールされている第1のFCデバイス80およびインストールされていない第2のFCデバイス81と、FCデバイスの識別情報とブート識別コードとを含む優先デバイステーブル100と、コンピュータ本体をブートするときに優先デバイステーブルを読み込んでブート識別コードを参照し、ブートデバイスである第1のFCデバイスに対して初期化コマンドを発行し、第1のFCデバイスに対する初期化が完了してから第2のFCデバイスに対する初期化コマンドを発行するデバイスドライバ22とを有することを特徴とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ本体に接続された周辺機器から起動されるコンピュータシステムに関し、特にファイバーチャネルによってコンピュータ本体に接続された周辺機器から起動されるコンピュータシステムに関する。
【背景技術】
【0002】
ファイバーチャネル(Fibre Channel、以後FCという)は、ギガビット級ネットワーク技術の一種であり、主にストレージエリアネットワーク(Storage Area Network)などにおいて大規模ストレージを構築する際に、コンピュータと周辺機器を結ぶためのデータ転送方式の一つとして使用されている。FCは、光ファイバーケーブルのみならず、銅線の同軸ケーブルやツイストペアケーブルなどを使用しても構築可能である。
【0003】
FCは、特に大規模なストレージを必要とするサーバなどのコンピュータ装置に外部記憶装置を接続するのに適した性能を備えている。以後、FCを介してコンピュータ装置に接続される外部記憶装置を、FCデバイスという。
【0004】
FCなどのインターフェイスによって周辺機器が接続されたコンピュータシステムについての技術としては、たとえば次のような技術がある。特許文献1には、複数のI/O処理を優先と非優先に分割して制御し、非優先のI/Oは処理を抑制しながら動作させるという技術が開示されている。特許文献2には、同一のFCデバイスと接続する複数のチャネルで、一方を通常使用するチャネル、他方をリトライ用のチャネルとするという技術が開示されている。特許文献3には、WWN(World Wide Name)と業務識別情報とエリア識別情報とを対応付けてストレージシステム内に記憶しておくことにより、計算機の設定を容易にするという技術が開示されている。非特許文献1は、後述のGID_FTなどのFCにおける代表的なコマンドについて規定している。
【0005】
【特許文献1】特開2002−108567号公報
【特許文献2】特開2005−208971号公報
【特許文献3】特開2007−164305号公報
【非特許文献1】「Fibre Channel - Generic Services-5(FC-GS-5) Rev8.51」The American National Standard Institute T11 technical committee
【発明の開示】
【発明が解決しようとする課題】
【0006】
FCデバイスを接続したコンピュータシステムで、FCデバイスにオペレーティングシステム(OS)をインストールして、ブートディスクとしてとして使用する場合がある。そのような場合、FCデバイスの初期化からOSが起動するまでにかかるシステム起動(ブート)時間は、できるだけ短時間である必要がある。
【0007】
しかし、ブートディスク以外のFCデバイスがブートを行うFCチャネルに接続されていると、それらのFCデバイス全てを初期化してからでないとOSの読み込みを開始することができないので、システムの起動に時間がかかる。特に、多数のFCデバイスを接続されたシステムにおいて、FCデバイスの初期化のために長時間を要する。
【0008】
そこで、FCデバイスの初期化に要する時間を省略するため、該FCチャネルからブートディスクにのみアクセス可能として、他のFCデバイスにはアクセスできないようにすることが普通に行われていた。具体的には、ブートディスクのみをFCチャネルに直結するか、あるいはFCスイッチのゾーニング機能を利用するなどの方法である。
【0009】
しかしながら、そのようにしてブートディスク以外のFCデバイスを接続しないと、転送速度が高速であり、かつ多数のFCデバイスを接続して大規模なストレージを容易に構築できるという、FCのメリットを生かすことができない。
【0010】
また、1つのFCデバイスが複数のコンピュータにおいて共有されることや、1つのコンピュータシステムが複数のFCチャネルを有することも多いが、特定のコンピュータをブートするブートディスクは、1つのFCチャネルからのみ参照可能であるようにする必要がある。そのようにしなければ、コンピュータにおけるOSの動作、およびOSのライセンス(使用許諾)などの面において問題が生じる。そのため、他のFCチャネルからブートディスクを参照できないよう、コンピュータシステムが設定される必要がある。
【0011】
前述の特許文献1〜3および非特許文献1は、ブートを行うFCチャネルにブートディスク以外のFCデバイスを接続していても高速にシステム起動を可能とする構成、および他のFCチャネルからブートディスクを参照不可能とする構成を備えていない。それらの文献を組み合わせた技術においても同様である。
【0012】
本発明の目的は、FCデバイスをブートディスクとしてコンピュータシステムを起動する際に、ブートを行うFCチャネルにブートディスク以外のFCデバイスを接続していても高速にシステム起動が可能なコンピュータシステム、コンピュータ本体、FCスイッチ、起動方法、送信方法、および初期化プログラムを提供することにある。
【課題を解決するための手段】
【0013】
上記目的を達成するため、本発明に係るコンピュータシステムは、コンピュータ本体に接続される第1のFCデバイスおよび第2のFCデバイスの識別情報と、第1のFCデバイスがコンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルと、コンピュータ本体をブートするときに優先デバイステーブルを読み込んでブート識別コードを参照し、ブートデバイスである第1のFCデバイスに対して初期化コマンドを発行し、第1のFCデバイスに対する初期化が完了してから第2のFCデバイスに対する初期化コマンドを発行する初期化手段とを有することを特徴とする。
【0014】
上記目的を達成するため、本発明に係るコンピュータ本体は、第1のFCデバイスおよび第2のFCデバイスと接続可能なコンピュータ本体であって、第1のFCデバイスおよび第2のFCデバイスの識別情報と、第1のFCデバイスがコンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルと、コンピュータ本体をブートするときに優先デバイステーブルを読み込んでブート識別コードを参照し、ブートデバイスである第1のFCデバイスに対して初期化コマンドを発行し、第1のFCデバイスに対する初期化が完了してから第2のFCデバイスに対する初期化コマンドを発行する初期化手段とを有することを特徴とする。
【0015】
上記目的を達成するため、本発明に係るFCスイッチは、ファイバーチャネルを介してコンピュータ本体およびFCデバイスに接続可能なFCスイッチであって、コンピュータ本体からブート識別情報が含まれる初期化コマンドを受信したときに、該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを含むブートディスクテーブルを記憶するローカルメモリを有し、コンピュータ本体からFCスイッチがアクセス可能なFCデバイスリストを要求されたときに、ブートディスクテーブルに含まれるFCデバイスのブート識別コードを含めたFCデバイスリストをコンピュータ本体に返信することを特徴とする。
【0016】
上記目的を達成するため、本発明に係る起動方法は、第1のFCデバイスおよび第2のFCデバイスがコンピュータ本体に接続されているコンピュータシステムを起動する方法であって、第1のFCデバイスおよび第2のFCデバイスの識別情報と、第1のFCデバイスがコンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルをコンピュータ本体に記憶する優先デバイステーブル記憶工程と、優先デバイステーブルを読み込んでブート識別コードを参照するブート識別コード参照工程と、ブートデバイスである第1のFCデバイスに対して初期化コマンドを発行する第1の初期化工程と、第1の初期化工程が完了したことを確認する完了確認工程と、完了確認工程の後で第2のFCデバイスに対する初期化コマンドを発行する第2の初期化工程とを有することを特徴とする。
【0017】
上記目的を達成するため、本発明に係る送信方法は、ファイバーチャネルを介してコンピュータ本体およびFCデバイスに接続可能なFCスイッチがコンピュータ本体にFCデバイスリストを送信する方法であって、コンピュータ本体からブート識別情報が含まれる初期化コマンドを受信したときに、FCスイッチがあらかじめ備えるFCデバイスリストに該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを記憶する記憶工程と、コンピュータ本体からFCスイッチがアクセス可能なFCデバイスリストを要求されたときに、記憶工程で記憶されたFCデバイスのブート識別コードを含めたFCデバイスリストをコンピュータ本体に返信する返信工程とを有することを特徴とする。
【0018】
上記目的を達成するため、本発明に係る初期化プログラムは、第1のFCデバイスおよび第2のFCデバイスがコンピュータ本体に接続されているコンピュータシステムを起動する際に、第1のFCデバイスおよび第2のFCデバイスを初期化する初期化プログラムであって、コンピュータ本体に、第1のFCデバイスおよび第2のFCデバイスの識別情報と、第1のFCデバイスがコンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルを読み込んでブート識別コードを参照する処理と、ブートデバイスである第1のFCデバイスに対して初期化コマンドを発行する第1の初期化処理と、第1の初期化工程が完了したことを確認する確認処理と、確認処理の後で第2のFCデバイスに対する初期化コマンドを発行する第2の初期化処理とを実行させることを特徴とする。
【0019】
上記目的を達成するため、本発明に係る別の初期化プログラムは、ファイバーチャネルを介してコンピュータ本体およびFCデバイスに接続可能なFCスイッチが備えるコンピュータに、コンピュータ本体からブート識別情報が含まれる初期化コマンドを受信したときに、FCスイッチがあらかじめ備えるFCデバイスリストに該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを記憶する記憶処理と、コンピュータ本体からFCスイッチがアクセス可能なFCデバイスリストを要求されたときに、記憶処理で記憶されたFCデバイスのブート識別コードを含めたFCデバイスリストをコンピュータ本体に返信する処理とを実行させることを特徴とする。
【発明の効果】
【0020】
本発明は、上記したように優先デバイステーブルを読み込んでブート識別コードを参照し、まずブートデバイスに対して初期化コマンドを発行するように構成しているので、ブートデバイスの初期化を完了してから、ブートの動作を継続しつつその他のFCデバイスの初期化を行うことができ、さらにブートを行わないFCチャネルからブートディスクを参照できないようにすることができる。これによって、ブートを行うFCチャネルにブートディスク以外のFCデバイスを接続していても高速にシステム起動が可能な、従来にない優れたコンピュータシステム、コンピュータ本体、FCスイッチ、起動方法、送信方法、および初期化プログラムを提供することができる。
【発明を実施するための最良の形態】
【0021】
[第1の実施の形態]
図1は、本発明の第1の実施の形態に係るコンピュータシステム1の構成を示すブロック図である。コンピュータシステム1は、コンピュータ本体2、FCスイッチ70、およびディスク装置80〜82とで構成される。コンピュータ本体2は、CPU10、メインメモリ20、チップセット30、I/Oポート50、およびコンピュータ本体2に内蔵されるFCカード60および61とで構成される。
【0022】
CPU10は、コンピュータ本体2の中枢機能を担う演算処理装置で、OS、BIOS、アプリケーションプログラムなどを実行する。CPU10は、外部バスを介してチップセット30に接続され、そこから各デバイスに接続されて信号の送受を行っている。
【0023】
メインメモリ20は、やはりチップセット30に接続されており、CPU10が実行するプログラムの読み込み領域、処理データを書き込む作業領域として利用されるRAMである。
【0024】
I/Oポート50は、複数のスロット51〜54を有し、各種周辺機器を接続することが可能である。なお、スロットの数は4つに限定されない。CPU10およびメインメモリ20は、チップセット30を経由して、スロット51〜54に接続された周辺機器にアクセスすることができる。
【0025】
いま、スロット51にはFCデバイスを接続するためのインターフェイスであるFCカード60が接続されている。同様にスロット53にもFCカード61が接続されている。なお、接続に使用されるスロットの選択はこの形態に限定されず、図1で空いているスロット52および54を使用してもよい。FCカード60および61は、FCスイッチ70と接続され、それぞれが異なるFCチャネルとして形成されている。以後、FCカード60のFCチャネルを第1のFCチャネルとし、FCカード61のFCチャネルを第2のFCチャネルとする。
【0026】
コンピュータ本体2をブートすることが可能であるように設定されているFCチャネルを、ブートチャネルという。第1のFCチャネルはブートチャネルであり、第2のFCチャネルにはブートチャネルではない。特定のFCチャネルをブートチャネルとして設定する方法は後述する。
【0027】
FCスイッチ70は、ローカルメモリエリア71を有し、ローカルメモリエリア71に後述のブートディスクテーブル110が記憶される。
【0028】
FCスイッチ70には、FCデバイスであるディスク装置80〜82が接続されている。FCスイッチ70により、FCカード60および61のいずれからも、ディスク装置80〜82のいずれにもアクセスできる。ディスク装置80には、コンピュータ本体2で動作するOSの本体がインストールされている。以後、OSの本体がインストールされているディスク装置をブートディスクという。ディスク装置80はブートディスクであり、ディスク装置81および82はブートディスクではない。
【0029】
チップセット30は、サービスプロセッサ40(以後SP40という)を有する。SP40は、このコンピュータシステム1を制御する組み込みシステムであり、SP40を介して外部からこのコンピュータシステム1のブートおよび診断などの制御を行うことができる。また、SP40の記憶領域にはBIOS41、ブートプログラム42、および後述する優先デバイステーブル100などか記憶されている。
【0030】
コンピュータシステム1をブートするときには、SP40の制御によって、まずBIOS41によるセルフテストなどを行った後、FCカード60に対応するデバイスドライバであるFCドライバ22が、メインメモリ20上に確保されたFCドライバ領域22bにロードされる。FCカード61に対応するFCドライバ23も、メインメモリ20上のFCドライバ22とは異なる領域にロードされる。
【0031】
そしてSP40の制御によって、ブートプログラム42がメインメモリ20上のOS用領域にロードされ、このブートプログラム42によってブートディスクが接続されるFCチャネルの初期化が指示される。FCチャネルに接続されたブートディスクからOS21の本体がOS用領域にロードされ、それによってOS21の動作が開始される。
【0032】
また、BIOS41およびブートプログラム42に、第1のFCチャネルをブートチャネルとする旨の設定があらかじめされている。第2のFCチャネルには、そのような設定はない。なお、特定のFCチャネルをブートチャネルとする設定方法はこれに限定されず、コンピュータシステムの構成によって様々な方法がとられ得る。
【0033】
また、FCドライバ22の領域には、優先デバイステーブル100がやはりSP40から読み出されて、FCドライバ22と共にFCドライバ領域22bに記憶される。第1のFCチャネルはブートチャネルであるので、優先デバイステーブル100を読み出すが、ブートチャネルでない第2のFCチャネルでは、FCドライバ23は優先デバイステーブル100を読み出さない。
【0034】
ちなみに、図1は本実施の形態を説明するために、主要なハードウェアの構成および接続関係を簡素化して記載したに過ぎないものである。コンピュータシステム1を構成するためには、これら以外にも多くのデバイスが使われるが、それらは当業者には周知であるので詳しく言及しない。また、図1で記載した複数のブロックを1個の装置や回路としたり、逆に1個のブロックを複数の装置や回路に分割して構成したりすることも、当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。
【0035】
図2は、図1で示したSP40に記憶されている優先デバイステーブル100の構成を示す概念図である。優先デバイステーブル100は、FCデバイスの識別番号であるDID(Device ID)番号101と、各々のDID番号101に対応するブート識別コード102からなる。
【0036】
ブート識別コード102が「1(000001b)」であれば、そのデバイスはブートディスクとして設定される。ブート識別コード102が「0(000000b)」であれば、そのデバイスはブートディスクとはならない。なお、DID番号101の代わりに、FCデバイスを識別するWWN(World Wide Name)を使用してもよい。
【0037】
図1に示した例では、ディスク装置80のみがブートディスクとして設定されており、ディスク装置81および82はブートディスクとはならない。しかし、ディスク装置81および82は優先デバイステーブル100に載ることにより、後述する優先初期化デバイスとして設定されることになる。
【0038】
FCチャネルの初期化処理において、通常ブートプログラムはFCスイッチ70にGID_FTコマンドを発行してアクセス可能なFCデバイスのDID番号101の一覧を取得し、取得されたすべてのDID番号101のFCデバイスに対して一斉にPLOGIコマンドおよびPRLIコマンドなどの初期化コマンドを実行して、それらのFCデバイスを初期化する。コマンドを発行したすべてのFCデバイスから応答が帰ってくるまでは、他の制御を行うことはできない。そのため、ブートディスクに対して発行されたI/Oコマンドを実行できない。
【0039】
本実施の形態では、FCドライバ22は優先デバイステーブル100を読み出し、FCスイッチ70にGID_FTコマンドを発行して、アクセス可能なFCデバイスの一覧を取得する。ブート識別コード102が「1」である(ブートディスクである)DID番号101が、FCスイッチ70から取得したアクセス可能なFCデバイスの一覧の中に存在するか否かを確認する。存在すれば該ブートディスクのみに対してI/Oコマンドを発行し、該ブートディスクのみの初期化処理をまず行う。
【0040】
ブートディスクではないその他のFCデバイスの初期化処理は、ブートディスクのみの初期化処理が完了し、そのことがFCドライバ22に通知された後に行われる。従って、OSの立ち上げなどに伴うブートディスクに対するI/Oコマンドの実行がブートディスク以外のFCデバイスよりも優先され、該I/Oコマンドが発行されていないタイミングでブートディスク以外のFCデバイスに対する初期化処理が行われる。
【0041】
本実施の形態では、初期化コマンドをすべてのDID番号101に対して一斉に発行せず、GID_FTコマンドによって得られたDID番号101の一覧の先頭から一つずつ初期化コマンドを発行する。また初期化コマンドの発行の前に、ブートディスクに対するI/Oコマンドが発行されているか否かを確認し、I/Oコマンドがあれば該I/Oコマンドを実行し、なければその他のFCデバイスに初期化コマンドを一つずつ発行する。これによって、ブートディスクに対するI/Oコマンドを優先しつつ、その他のFCデバイスの初期化処理が可能であるので、OSの立ち上げなどが滞ることはない。
【0042】
図3は、図1で示したFCスイッチ70に、ブート識別コード112が登録される処理を示す概念図である。ここでは、第1のFCチャネル(FCカード60)によって、ディスク装置80からコンピュータシステム1をブートする。本実施の形態では、ブートするFCチャネルから他のFCチャネルにあるFCデバイスに接続可能であるよう、FCスイッチ70のゾーニング機能は使用しない。
【0043】
しかし、ブートディスクはブートするFCチャネル以外のFCチャネルからアクセスできないように保護する必要がある。図3の例で言うなら、ブートディスクであるディスク装置80はブートチャネルである第1のFCチャネル(FCカード60)からのみアクセス可能とし、ブートチャネルではない第2のFCチャネル(FCカード61)からはアクセス不能とする必要がある。そしてブートディスクでないディスク装置81および82には、第1および第2のFCチャネルのいずれからもアクセスできるようにする必要がある。
【0044】
具体的には、ブートディスクに対する初期化は、前述のPLOGIコマンドにブート識別コード102を付加した専用コマンドを発行することによって行われる。この専用コマンドをBoot-PLOGIコマンドという。FCスイッチ70は、PLOGIコマンドにブート識別コード102が付加されていればBoot-PLOGIコマンドであると認識し、FCスイッチ70内のローカルメモリエリア71に設けたブートディスクテーブル110に、ブートディスクのDID番号101とともに登録する。
【0045】
ブートディスクテーブル110は、優先デバイステーブル100と同様にDID番号111と、ブート識別コード112とを有する。FCドライバ22は、FCスイッチ70にコマンドを発して、現在アクセス可能なFCデバイスリスト113を取得することができる。ブートディスクテーブル110に登録されたFCデバイスのDID番号111とブート識別コード112が、FCデバイスリスト113に含まれてFCドライバ22に返信される。
【0046】
FCスイッチ70では、接続されているFCチャネルからGID_FTコマンドなどによってアクセス可能なFCデバイスのリストを要求されたら、送信するFCデバイスリスト113で、返信データ180の中のリザーブ領域を利用して、ブート識別コードを送信するように制御する。
【0047】
図4は、図3で示したFCスイッチ70がGID_FTコマンドに対する返信(Accept)でFCチャネルに送信する返信データ180のフォーマットを示す概念図である。このデータの1エントリーはコントロール181が1バイト、ポート識別子182が3バイトの計4バイトからなる。ポート識別子182にDID番号111が設定され、コントロール181の先頭ビットが1の場合、そのエントリーが最後のエントリーであることを示す。このとき、コントロール181の先頭ビットの1以外の7ビットは使用されず、リザーブ領域(rで表現される)となっている。このリザーブ領域の7ビットに、ブート識別コード112を設定することができる。
【0048】
ブートチャネルは、優先デバイステーブル100からブート識別コード102を読み出した場合、ブート識別コード102の値をFCチャネルのブート識別コード22cとして保持する。ブートチャネルでないFCチャネルのブート識別コード22cは「0」である。従って、FCスイッチ70からコマンドを使用してブートディスクテーブル110を読み出すと、ブートチャネルでないFCチャネルのブート識別コード22cは、ブートディスクテーブル110のブート識別コード112と不一致となる。
【0049】
ブート識別コード22cとブート識別コード112とが一致しない場合は、該FCデバイスは他のFCチャネルもしくはコンピュータによってブートディスクとして既に使用されていることを意味する。そのため、FCスイッチ70はブート識別コード22cと112が一致しないFCデバイスにはアクセスしないように制御する。このようにして、ブートディスクをブートチャネルからのみアクセス可能にしている。
【0050】
図5は、図3および4で示したFCスイッチ70が、FCドライバ22からのコマンドに対応して行う処理を表すフローチャートである。処理が起動すると(ステップS500)、FCスイッチ70がFCドライバ22からのコマンドの受信を待つ(ステップS501)。コマンドを受信したら、該コマンドがBoot-PLOGIコマンドであるかGID_FTコマンドであるかを判断する(ステップS502およびS504)。
【0051】
Boot-PLOGIコマンドであれば、ブートディスクテーブル110にブート識別コード102をDID番号101とともに登録して(ステップS503)、ステップS501に戻る。GID_FTコマンドであれば、ブートディスクテーブル110のDID番号111とブート識別コード112をFCデバイスリスト113に含めてFCドライバ22に返信して(ステップS504)、ステップS501に戻る。その他のコマンドであれば、該コマンドに対応する通常の処理をして(ここでは図示しない)、ステップS501に戻る。
【0052】
なお、図5のフローチャートに係る各ステップの動作内容は、FCスイッチ70があらかじめ備えるコンピュータで動作するプログラム(ファームウェアなど)として実行させるように構成することができる。
【0053】
図6は、図1で示したコンピュータシステム1において、ブートディスクのみを初期化する処理、およびブートディスクへのI/Oコマンド実行中にその他のFCデバイスを初期化する処理の実行イメージを示すイメージ図である。まず、SP40からメインメモリ20のOS21の領域に、OS本体をブートディスクであるディスク装置80から読み出すブートプログラムがロードされる。ブートプログラムは、スロット51に接続されたFCカード60を制御するFCチャネルの初期化処理開始を指示する(矢印(A))。
【0054】
FCドライバ22は、ブートチャネルの初期化であるので、初期化処理開始の指示に対して、FCドライバ22の領域に格納された優先デバイステーブル100を読み出し(矢印(B))、そこからブートディスクのブート識別コード102を取り出し、FCドライバ領域22bに、FCドライバ22のブート識別コード22cとして保存する。そして、FCスイッチ70に対してGID_FTコマンドを発行し、優先デバイステーブル100のDID番号101のFCデバイスが存在するか否かを確認する。
【0055】
FCスイッチ70から受け取ったアクセス可能なFCデバイスリストの中に、優先デバイステーブル100のDID番号101で示されるFCデバイスが存在していれば、ブートプログラムはBoot-PLOGIコマンドをFCスイッチ70に送る(矢印(C))。FCスイッチ70はBoot-PLOGIコマンドを認識し、図3に示したブートディスクテーブル110にブート識別コード112とそれに対応するDID番号111を保存する。
【0056】
ブートディスクであるディスク装置80の初期化が完了すると、ディスク装置80からFCドライバ22を介してブートプログラムに初期化完了が報告される(矢印(D))。これによって、ブートディスクの初期化は完了したことになるので、ブートプログラムはOS本体をディスク装置80から読み出すI/Oコマンドを発行する(矢印(F))。
【0057】
その一方で、ブートディスクの初期化が完了したことを受けたFCドライバ22は、ブートディスク以外のFCデバイスの初期化を行う(矢印(E))。ブートディスク以外のFCデバイスの初期化処理は、FCスイッチ70から受け取ったFCデバイスリストから、図2の(b)に示したようなブートディスクを除いたFCデバイスリストを作成し、その先頭のDID番号101から順番に初期化を行っていく。その際、初期化処理を実行する前に、矢印(F)で示すブートディスクに対するI/Oコマンドが発行されているかを確認し、発行されていれば該I/Oコマンドの処理を優先して実行するように制御する(矢印(G))。
【0058】
ブートディスク以外のFCデバイスの初期化が完了すれば、FCデバイスの接続構成が変更されたことを、ブートが完了して立ち上がったOSに通知する(矢印(H))。
【0059】
図7〜8は、図1で示した本実施の形態のFCカード60〜61の初期化に係る、FCドライバ22〜23による処理を表すフローチャートである。FCカード60はブートチャネルであり、FCカード61はブートチャネルではない。しかし、それぞれのFCカードに対応するFCドライバ22と23は同一のコンピュータプログラムであり、自らが初期化しているFCチャネルがブートチャネルであるか否かを動作の中で判断して、ブートチャネルである場合とそうでない場合のそれぞれに対応した動作を行う。従って、以後の説明においては、FCドライバ22が動作の主体であるとして説明を行うが、FCドライバ23もそれと同一の動作を行うことができるものとして理解されたい。
【0060】
FCドライバ22の処理が起動すると(ステップS200)、ブートプログラム42内部の初期設定を判断することにより、現在の処理がブートプログラムによるブートチャネルの初期化処理であるか否かを判断する(ステップS201)。
【0061】
ブートを行うFCチャネルの初期化処理であれば、SP40から優先デバイステーブル100を取得し、ブート識別コード102とブートディスクのDID番号101を取り出してFCドライバ領域22bのブート識別コード22cとして(ステップS202)、ステップS204に進む。ブートを行うFCチャネルの初期化処理でなければ、ブート識別コード22c=0と設定して(ステップS203)、ステップS204に進む。
【0062】
FCドライバ22は、FCスイッチ70からFCデバイスリスト113を取得し(ステップS204)、優先デバイステーブル100に含まれるブート識別コード102が0であるか否かを判定する(ステップS205)。ブート識別コード102=0であればステップS206に、0でなければステップS207に進む。ブート識別コード102=0であれば、優先デバイステーブル100にブートディスクが指定されていないということである。
【0063】
ブートディスクが指定されていない状態であれば、ステップS206でブート識別コード22c=0とする(ステップS206)。続いて、優先デバイステーブル100に優先初期化としてディスクが指定されているか否かを判断する(ステップS208)。ブートディスク以外で、優先デバイステーブル100に掲載されているFCデバイスは、優先初期化として指定されていることを意味する。指定されているディスクがなければ、FCチャネルの通常の初期化処理を行って(ステップS209、詳細は後述の図9に示す)、OSに初期化完了を通知し(ステップS210)、処理を終了する(ステップS216)。
【0064】
ステップS208で、優先初期化として指定されているディスクがあれば、そのディスクが現在接続されているかを判断する(ステップS211)。接続されていなければ、ステップS209に戻る。接続されていれば、後述のステップS212に進む。
【0065】
ステップS205で、ブートディスクが指定されていれば、FCチャネルが保持するブート識別コード22cに、優先デバイステーブル100に指定されたブート識別コード102を設定し(ステップS207)、後述のステップS212に進む。
【0066】
ブートディスクまたは優先して初期化するディスクがある場合、該ディスクに対して初期化処理を行って(ステップS212、詳細は後述の図9に示す)、OSに初期化完了を通知する(ステップS213)。初期化完了を通知されたOSは、ブートプログラム42によってブートディスクからOSの本体をロードし、ブートを続行する。FCドライバ22は、それと並行して残りのFCデバイスに対しても初期化処理を行って(ステップS214、詳細は後述の図10に示す)、OSにFCデバイスの構成変化を通知し(ステップS215)、処理を終了する(ステップS217)。
【0067】
図9は、図7〜8のステップS209および212として示した、FCデバイスの初期化処理の詳細を表すフローチャートである。処理を開始すると(ステップS300)、FCドライバ22はFCチャネルが保持するブート識別コード22cが0であるか否かを判別する(ステップS301)。ステップS209からこの処理が呼び出された場合はブート識別コード22c=0であるので、ステップS304に進み、ステップS204で取得したFCデバイスリスト113に掲載されている全てのデバイスに初期化コマンドを発行してステップS306に進む。
【0068】
ステップS301でブート識別コード22c≠0の場合はステップS302に進み、ステップS204で取得したFCデバイスリスト113にあるブートディスクのブート識別コード112によって判定する。ブートディスクのブート識別コード112が0であるか、またはブートディスクのブート識別コード112がFCチャネルのブート識別コード22cと一致している場合は、ステップS303に進み、ブートディスクのみに対してブート識別子付きの初期化コマンド(Boot-PLOGI)を発行してステップS306に進む。
【0069】
ステップS302で、ブートディスクのブート識別コード112が0でなく、かつブートディスクのブート識別コード112がFCチャネルのブート識別コード22cと一致しない場合は、ステップS305に進み、ブートディスク以外に対して通常の初期化コマンドを発行してステップS306に進む。
【0070】
ステップS303(または304、305)で初期化コマンドを発行したFCドライバ22は、初期化コマンドを発行したFCデバイスからのリプライを待ち、全てのFCデバイスから正常なリプライがあったか否かを判定する(ステップS306)。全てのFCデバイスから正常なリプライがあった場合、全てのFCデバイスについて報告用FCデバイスリストを作成して(ステップS307)終了する(ステップS309)。正常なリプライがなく、初期化に失敗したFCデバイスがある場合、正常なリプライがあったFCデバイスのみについて報告用FCデバイスリストを作成して(ステップS308)終了する(ステップS309)。報告用FCデバイスリストは、ステップS210または213で、OSに初期化完了を通知する際に使用される。
【0071】
図10は、図8のステップS214として示した、残りのFCデバイスの初期化処理の詳細を表すフローチャートである。処理を開始すると(ステップS400)、FCドライバ22は既に初期化が完了しているブートディスクを除くFCデバイスのリストを作成し(ステップS401)、該デバイスリストを格納したエリアの先頭アドレスをポインタとして設定する(ステップS402)。
【0072】
続いてブートディスクに対するI/Oコマンドが発行されているか否かを判別し(ステップS403)、発行されていれば該I/Oコマンドを実行して(ステップS404)ステップS403に戻る。ブートディスクに対するI/Oコマンドが発行されていないことを確認したら、ポインタの示すFCデバイスに対して通常の初期化コマンドを発行し(ステップS405)、それに対する該FCデバイスからのリプライを待つ(ステップS406)。
【0073】
ステップS406で正常なリプライがあった場合、該FCデバイスを報告用FCデバイスリストに掲載し、ポインタを次のFCデバイスを示すように更新して(ステップS407)、ステップS409に進む。正常なリプライがなかった場合、ポインタのみを次のFCデバイスを示すように更新して(ステップS408)、ステップS409に進む。
【0074】
ステップS409で、全てのFCデバイスの初期化を完了したか否かを判断し、完了していなければステップS403に戻り、完了していれば終了する(ステップS410)。報告用FCデバイスリストは、ステップS215で、OSにFCデバイスの構成変化を通知する際に使用される。
【0075】
なお、図7〜10の各フローチャートに係る各ステップの動作内容は、コンピュータ本体2で動作するプログラムであるFCドライバ22として実行させるように構成することもできるし、それ以外のプログラムや形態で実行させるように構成してもよい。
【0076】
以上の構成を取ることにより、ブートディスクのみを先行して初期化するので、FCデバイスが多数接続されている構成であっても、初期化処理を高速に完了してシステムを高速に起動することができる。また、FCスイッチのゾーニング機能を使用しなくても、ブート処理中にブートチャネル以外からブートディスクへのアクセスが防ぐことができる。もちろん、FCデバイスの初期化が完了した後は、ブートチャネルからブートディスク以外のFCデバイスへのアクセスが可能である。その際、ブートディスクへのI/O処理が優先されるので、ブートディスクにおけるOSの立ち上げなどの処理が滞ることもない。
【0077】
[第2の実施の形態]
次に、本発明の第2の実施の形態について説明する。システムの構成および動作は図1〜10で図示した第1の実施の形態とほぼ同一であるので、図示せず、相違点を簡単に説明するのみにとどめる。
【0078】
第1の実施の形態では、図1〜2に示す優先デバイステーブル100はSP40に記憶され、ブートディスクを接続するFCドライバ22のみが初期化処理の際に読み出す。ブートチャネルでないFCドライバ23は優先デバイステーブル100を読み出さず、図7のステップS203でブート識別コード22c=0と設定している。
【0079】
それに対して第2の実施の形態では、FCカード60および61が、各々のFCチャネルに対応する優先デバイステーブル100を持つ。各々の優先デバイステーブル100は、SP40に記憶されていてもよいし、また各々のFCカード60および61に記憶するようにしてもよい。ブートチャネルでないFCチャネルに対応する優先デバイステーブル100には、ブート識別コード102=0が最初から記憶されている。そのため、図7のステップ201および203は省略される。
【0080】
上記以外は、第1の実施の形態と構成および処理の内容は同一であるので、説明を省略する。ただし、第2の実施の形態は、初期化の処理はFCチャネルごとに行うことができるので、多数のFCチャネルが接続されたコンピュータシステムであっても、FCデバイスを全て初期化することによるFCチャネルの初期化処理の遅延を考慮する必要がなくなるという点で、第1の実施の形態と比べて優位である。
【0081】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることは言うまでもないことである。
【産業上の利用可能性】
【0082】
ファイバーチャネルによって周辺機器が接続可されるコンピュータシステム全般に適用できる。特に、多数のFCデバイスが接続されたコンピュータシステムに好適である。
【図面の簡単な説明】
【0083】
【図1】本発明の第1の実施の形態に係るコンピュータシステムの構成を示すブロック図である。
【図2】図1で示したSPに記憶されている優先デバイステーブルの構成を示す概念図である。
【図3】図1で示したFCスイッチに、ブート識別コードが登録される処理を示す概念図である。
【図4】図3で示したFCスイッチがGID_FTコマンドに対する返信(Accept)でFCチャネルに送信する返信データのフォーマットを示す概念図である。
【図5】図3および4で示したFCスイッチが、FCドライバからのコマンドに対応して行う処理を表すフローチャートである。
【図6】図1で示したコンピュータシステムにおいて、ブートディスクのみを初期化する処理、およびブートディスクへのI/Oコマンド実行中にその他のFCデバイスを初期化する処理の実行イメージを示すイメージ図である。
【図7】図1で示した本実施の形態のFCカードの初期化に係る、FCドライバによる処理を表すフローチャートである。
【図8】図7の続きである。
【図9】図7〜8のステップS209および212として示した、FCデバイスの初期化処理の詳細を表すフローチャートである。
【図10】図8のステップS214として示した、残りのFCデバイスの初期化処理の詳細を表すフローチャートである。
【符号の説明】
【0084】
1 コンピュータシステム
2 コンピュータ本体
10 CPU
20 メインメモリ
21 OS
22 FCドライバ(初期化手段、初期化プログラム)
22b FCドライバ領域(ブート識別記憶域)
22c、102、112 ブート識別コード
23 FCドライバ
30 チップセット
40 サービスプロセッサ(SP)
41 BIOS
42 ブートプログラム
50 I/Oポート
60 FCカード(第1のFCチャネル)
61 FCカード(第2のFCチャネル)
70 FCスイッチ
71 ローカルメモリエリア(ローカルメモリ)
80 ディスク装置(第1のFCデバイス)
81〜82 ディスク装置(第2のFCデバイス)
100 優先デバイステーブル
101、111 DID番号(FCデバイスの識別情報)
110 ブートディスクテーブル
113 FCデバイスリスト

【特許請求の範囲】
【請求項1】
コンピュータ本体に接続される第1のFCデバイスおよび第2のFCデバイスの識別情報と、第1のFCデバイスが前記コンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルと、
前記コンピュータ本体をブートするときに前記優先デバイステーブルを読み込んで前記ブート識別コードを参照し、ブートデバイスである前記第1のFCデバイスに対して初期化コマンドを発行し、前記第1のFCデバイスに対する初期化が完了してから前記第2のFCデバイスに対する初期化コマンドを発行する初期化手段と
を有することを特徴とするコンピュータシステム。
【請求項2】
前記第2のFCデバイスに対する初期化コマンドは、前記第1のFCデバイスに対するI/Oコマンドが発行されていないタイミングで発行されることを特徴とする、請求項1に記載のコンピュータシステム。
【請求項3】
前記初期化手段が、前記優先デバイステーブルの前記ブート識別コードを前記コンピュータ本体内のブート識別記憶域に記憶することを特徴とする、請求項2に記載のコンピュータシステム。
【請求項4】
前記コンピュータ本体は、
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能であり、前記第1のFCデバイスから前記コンピュータ本体をブートする第1のFCチャネルと、
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能である第2のFCチャネルと
を有し、
前記第2のFCチャネルを初期化するとき、前記初期化手段は前記優先デバイステーブルを参照せず、前記ブート識別記憶域にブート識別コードを記憶しないことを特徴とする、請求項3に記載のコンピュータシステム。
【請求項5】
前記コンピュータ本体は、
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能であり、前記第1のFCデバイスから前記コンピュータ本体をブートする第1のFCチャネルと、
前記第1のFCチャネルに対応し、前記ブート識別コードを含む第1の優先デバイステーブルと、
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能である第2のFCチャネルと、
前記第2のFCチャネルに対応し、前記ブート識別コードを含まない第2の優先デバイステーブルと
を有することを特徴とする、請求項3に記載のコンピュータシステム。
【請求項6】
前記初期化手段が前記第1のFCデバイスに対して発する初期化コマンドにはブート識別情報が含まれ、
前記第1のFCチャネルおよび前記第2のFCチャネルは、FCスイッチを介して前記コンピュータ本体と接続されており、
前記FCスイッチは、前記ブート識別情報が含まれる初期化コマンドを受信したときに、該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを含むブートディスクテーブルを記憶するローカルメモリを有することを特徴とする、請求項4および請求項5のうちいずれか1項に記載のコンピュータシステム。
【請求項7】
前記FCスイッチは、前記初期化手段から前記FCスイッチがアクセス可能なFCデバイスリストを要求されたときに、前記ブートディスクテーブルに含まれるFCデバイスのブート識別コードを含めた前記FCデバイスリストを前記初期化手段に返信し、
前記第2のFCチャネルに対応する初期化手段は、前記FCスイッチから返信されたFCデバイスリストに含まれるブート識別コードと、前記ブート識別記憶域に記憶されたブート識別コードとを比較し、異なっていれば前記ブート識別コードに該当するFCデバイスにはアクセスしないよう前記オペレーションシステムに対して設定することを特徴とする、請求項6に記載のコンピュータシステム。
【請求項8】
前記第1のFCデバイスおよび前記第2のFCデバイスのうち一方もしくは両方が複数のFCデバイスを含むことを特徴とする、請求項1ないし請求項7のうちいずれか1項に記載のコンピュータシステム。
【請求項9】
前記優先デバイステーブルは前記ブートデバイスでない優先初期化FCデバイスの識別情報を少なくとも1つ以上含み、前記初期化手段は前記ブートデバイスに対する初期化が完了した直後に前記優先初期化FCデバイスを優先的に初期化することを特徴とする、請求項1ないし請求項8のうちいずれか1項に記載のコンピュータシステム。
【請求項10】
第1のFCデバイスおよび第2のFCデバイスと接続可能なコンピュータ本体であって、
前記第1のFCデバイスおよび前記第2のFCデバイスの識別情報と、第1のFCデバイスが前記コンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルと、
前記コンピュータ本体をブートするときに前記優先デバイステーブルを読み込んで前記ブート識別コードを参照し、ブートデバイスである前記第1のFCデバイスに対して初期化コマンドを発行し、前記第1のFCデバイスに対する初期化が完了してから前記第2のFCデバイスに対する初期化コマンドを発行する初期化手段と
を有することを特徴とするコンピュータ本体。
【請求項11】
前記第2のFCデバイスに対する初期化コマンドは、前記第1のFCデバイスに対するI/Oコマンドが発行されていないタイミングで発行されることを特徴とする、請求項10に記載のコンピュータ本体。
【請求項12】
前記初期化手段が前記優先デバイステーブルの前記ブート識別コードを記憶するブート識別記憶域を有することを特徴とする、請求項11に記載のコンピュータ本体。
【請求項13】
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能であり、前記第1のFCデバイスから前記コンピュータ本体をブートする第1のFCチャネルと、
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能である第2のFCチャネルと
を有し、
前記第2のFCチャネルを初期化するとき、前記初期化手段は前記優先デバイステーブルを参照せず、前記ブート識別記憶域にブート識別コードを記憶しないことを特徴とする、請求項12に記載のコンピュータ本体。
【請求項14】
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能であり、前記第1のFCデバイスから前記コンピュータ本体をブートする第1のFCチャネルと、
前記第1のFCチャネルに対応し、前記ブート識別コードを含む第1の優先デバイステーブルと、
前記第1のFCデバイスおよび前記第2のFCデバイスとアクセス可能である第2のFCチャネルと、
前記第2のFCチャネルに対応し、前記ブート識別コードを含まない第2の優先デバイステーブルと
を有することを特徴とする、請求項12に記載のコンピュータ本体。
【請求項15】
前記第1のFCチャネルおよび前記第2のFCチャネルは、FCスイッチを介して前記コンピュータ本体と接続可能であり、
前記初期化手段が前記第1のFCデバイスに対して発する初期化コマンドにはブート識別情報が含まれることを特徴とする、請求項13および請求項14のうちいずれか1項に記載のコンピュータ本体。
【請求項16】
前記第2のFCチャネルに対応する初期化手段は、前記FCスイッチから取得したFCデバイスリストに含まれるブート識別コードと、前記ブート識別記憶域に記憶されたブート識別コードとを比較し、異なっていれば前記ブート識別コードに該当するFCデバイスにはアクセスしないよう前記オペレーションシステムに対して設定することを特徴とする、請求項15に記載のコンピュータ本体。
【請求項17】
ファイバーチャネルを介してコンピュータ本体およびFCデバイスに接続可能なFCスイッチであって、
前記コンピュータ本体からブート識別情報が含まれる初期化コマンドを受信したときに、該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを含むブートディスクテーブルを記憶するローカルメモリを有し、
前記コンピュータ本体から前記FCスイッチがアクセス可能なFCデバイスリストを要求されたときに、前記ブートディスクテーブルに含まれるFCデバイスのブート識別コードを含めた前記FCデバイスリストを前記コンピュータ本体に返信することを特徴とするFCスイッチ。
【請求項18】
第1のFCデバイスおよび第2のFCデバイスがコンピュータ本体に接続されているコンピュータシステムを起動する方法であって、
前記第1のFCデバイスおよび前記第2のFCデバイスの識別情報と、第1のFCデバイスが前記コンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルを前記コンピュータ本体に記憶する優先デバイステーブル記憶工程と、
前記優先デバイステーブルを読み込んで前記ブート識別コードを参照するブート識別コード参照工程と、
ブートデバイスである前記第1のFCデバイスに対して初期化コマンドを発行する第1の初期化工程と、
前記第1の初期化工程が完了したことを確認する完了確認工程と、
前記完了確認工程の後で前記第2のFCデバイスに対する初期化コマンドを発行する第2の初期化工程と
を有することを特徴とする起動方法。
【請求項19】
前記第2の初期化工程は、前記第1のFCデバイスに対するI/Oコマンドが発行されていないタイミングで前記第2のFCデバイスに対する初期化コマンドを発行することを特徴とする、請求項18に記載の起動方法。
【請求項20】
ファイバーチャネルを介してコンピュータ本体およびFCデバイスに接続可能なFCスイッチが前記コンピュータ本体にFCデバイスリストを送信する方法であって、
前記コンピュータ本体からブート識別情報が含まれる初期化コマンドを受信したときに、前記FCスイッチがあらかじめ備えるFCデバイスリストに該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを記憶する記憶工程と、
前記コンピュータ本体から前記FCスイッチがアクセス可能なFCデバイスリストを要求されたときに、前記記憶工程で記憶されたFCデバイスのブート識別コードを含めたFCデバイスリストを前記コンピュータ本体に返信する返信工程と
を有することを特徴とする送信方法。
【請求項21】
第1のFCデバイスおよび第2のFCデバイスがコンピュータ本体に接続されているコンピュータシステムを起動する際に、前記第1のFCデバイスおよび前記第2のFCデバイスを初期化する初期化プログラムであって、前記コンピュータ本体に、
前記第1のFCデバイスおよび前記第2のFCデバイスの識別情報と、第1のFCデバイスが前記コンピュータ本体で動作するオペレーションシステムがインストールされているブートデバイスである旨のブート識別コードとを含む優先デバイステーブルを読み込んで前記ブート識別コードを参照する処理と、
ブートデバイスである前記第1のFCデバイスに対して初期化コマンドを発行する第1の初期化処理と、
前記第1の初期化工程が完了したことを確認する確認処理と、
前記確認処理の後で前記第2のFCデバイスに対する初期化コマンドを発行する第2の初期化処理と
を実行させることを特徴とする初期化プログラム。
【請求項22】
前記第2の初期化処理は、前記第1のFCデバイスに対するI/Oコマンドが発行されていないタイミングで前記第2のFCデバイスに対する初期化コマンドを発行することを特徴とする、請求項21に記載の初期化プログラム。
【請求項23】
ファイバーチャネルを介してコンピュータ本体およびFCデバイスに接続可能なFCスイッチが備えるコンピュータに、
前記コンピュータ本体からブート識別情報が含まれる初期化コマンドを受信したときに、前記FCスイッチがあらかじめ備えるFCデバイスリストに該初期化コマンドの対象であるFCデバイスの識別情報およびブート識別コードを記憶する記憶処理と、
前記コンピュータ本体から前記FCスイッチがアクセス可能なFCデバイスリストを要求されたときに、前記記憶処理で記憶されたFCデバイスのブート識別コードを含めた前記FCデバイスリストを前記コンピュータ本体に返信する処理と
を実行させることを特徴とする初期化プログラム。

【図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

【図10】
image rotate


【公開番号】特開2009−163575(P2009−163575A)
【公開日】平成21年7月23日(2009.7.23)
【国際特許分類】
【出願番号】特願2008−1604(P2008−1604)
【出願日】平成20年1月8日(2008.1.8)
【出願人】(000004237)日本電気株式会社 (19,353)
【Fターム(参考)】