(57)【要約】【課題】対応テーブルを使用すること無くデバイスファイル名と異なるデバイス識別値とデバイスとの対応付けを固定化する。【解決手段】計算機に、デバイスに関する値であるデバイス関連値（例えばＬＵＮ）を取得するデバイス関連値取得部と、デバイス関連値が代入される第一の変数を含んだ計算式と、取得されたデバイス関連値を第一の変数に代入することで、そのデバイス関連値に対応したデバイスのデバイス識別値を算出するデバイス識別値計算部と、電子的な情報資源に、算出したデバイス識別値と取得されたデバイス関連値とを登録する対応登録部とを備える。【選択図】図９
2008250591.tif 000002
【特許請求の範囲】
【請求項１】
デバイスに関する値であるデバイス関連値を取得するデバイス関連値取得部と、
デバイス関連値が代入される第一の変数を含んだ計算式と、
前記取得されたデバイス関連値を前記第一の変数に代入することで、そのデバイス関連値に対応したデバイスのデバイス識別値を算出するデバイス識別値計算部と、
電子的な情報資源に前記算出したデバイス識別値と前記取得されたデバイス関連値とを登録する対応登録部と
を備える計算機。
【請求項２】
ターゲットに関する値であるターゲット関連値を取得するターゲット関連値取得部、を更に備え、
前記計算式が、ターゲット関連値が代入される第二の変数を更に含み、
前記デバイス識別値計算部は、前記取得されたターゲット関連値を前記第二の変数に代入することで、前記デバイスに対応したデバイス識別値を算出する、
請求項１記載の計算機。
【請求項３】
一つのターゲットについてのデバイスの最大数を表す予め用意された値であるデバイス最大数を取得するデバイス最大数取得部、を更に備え、
前記計算式が、デバイス最大数が代入される第三の変数を更に含み、
前記デバイス識別値計算部は、前記取得されたデバイス最大数を前記第三の変数に代入することで、前記デバイスに対応したデバイス識別値を算出する、
請求項２記載の計算機。
【請求項４】
前記計算式は、デバイス識別値＝前記第二の変数×前記第三の変数＋前記第一の変数、である、
請求項３記載の計算機。
【請求項５】
前記ターゲット関連値は、ターゲットの識別子であるターゲットＩＤであり、
前記取得されたターゲットＩＤは、前記ターゲットのＷＷＮ（ワールドワイドネーム）にパーシステントバインディング設定で予め対応付けられているＩＤである、
請求項２記載の計算機。
【請求項６】
前記算出されたデバイス識別値を含んだデバイスファイル名を作成するファイル名作成部、を更に備えた、
請求項１記載の計算機。
【請求項７】
ターゲットの最大数を表す予め用意された値であるターゲット最大数と、前記ターゲット最大数との積が、デバイス識別値の最大数以下である、
請求項１記載の計算機。
【請求項８】
ターゲットの最大数を表す予め用意された値であるターゲット最大数を取得するターゲット最大数取得部と、
算出済みのデバイス識別値の数が、前記取得されたターゲット最大数と前記取得されたデバイス最大数との積より小さいか否かの判定を行う判定部と
を更に備え、
前記デバイス関連値取得部が、一のデバイスについてデバイス識別値が算出された場合に、別の一のデバイスについてのデバイス関連値を取得し、
前記デバイス識別値計算部が、前記判定の結果が否定的であれば、前記取得された一のデバイスのデバイス関連値についてのデバイス識別値を算出することなく終了となる、
請求項１記載の計算機。
【請求項９】
ターゲットの最大数を表す予め用意された値であるターゲット最大数と、前記デバイス最大数との積が、デバイス識別値の最大数より大きいか否かの判定を行う判定部と、
前記判定の結果が肯定的な場合、デバイス識別値を含んだデバイス識別情報において、そのデバイス識別情報の空間サイズを変更することなく、デバイス識別値を表す空間サイズを大きくするフォーマット変更部と、を更に備える、
請求項１記載の計算機。
【請求項１０】
デバイス識別値を含んだデバイス識別情報において、そのデバイス識別情報中に、デバイス識別値を表す空間にシフトすることが可能な空間であるシフト可能空間が存在するか否かの判定を行う判定部と、
前記判定の結果が肯定的の場合に、前記デバイス識別情報中の前記シフト可能空間を前記デバイス識別値を表す空間にシフトするフォーマット変更部と、を更に備える、
請求項１記載の計算機。
【請求項１１】
前記デバイス識別情報の空間において、前記デバイス識別値の空間以外の或る空間を、有意でなく且つ連続した一以上の所定値が占めている場合に、該或る空間が、前記シフト可能空間である、
請求項１０記載の計算機。
【請求項１２】
ストレージシステムのポートのターゲットのＷＷＮ（ワールドワイドネーム）にパーシステントバインディング設定により前もって対応付けられたターゲットＩＤを取得するターゲットＩＤ取得部と、
前記ストレージシステムの一ポートについての論理ユニット（ＬＵ）の最大数を表す予め用意された値であるＬＵ最大数を取得するＬＵ最大数取得部と
を更に備え、
前記デバイス関連値取得部は、ＬＵＮ（論理ユニット番号）を取得し、
デバイス識別値は、ＵＮＩＸ系のＯＳで管理される、メジャー空間とマイナー空間とで構成された空間で表されるデバイス番号において、前記マイナー空間の所定位置の空間で表される特定の番号であり、
前記計算式は、前記特定の番号＝第二の変数×第三の変数＋第一の変数、であり、
前記第一の変数が、前記取得されたＬＵＮが代入される変数であり、
前記第二の変数が、前記取得されたＬＵ最大数が代入される変数であり、
前記第三の変数が、前記取得されたターゲット最大数が代入される変数である、
請求項１記載の計算機。
【請求項１３】
算出済みの前記特定の番号の数が、前記取得されたターゲット最大数と前記取得されたＬＵ最大数との積より小さいか否かの判定を行う判定部、を更に備え、
前記デバイス関連値取得部が、一のデバイスである一のＬＵについて前記特定の番号が算出された場合に、別の一のＬＵについてのＬＵＮを取得し、
前記デバイス識別値計算部が、前記判定の結果が否定的であれば、前記取得された一のＬＵＮについての前記特定の番号を算出することなく終了となる、
請求項１２記載の計算機。
【請求項１４】
パーシステントバインディング設定が終了した後の前記ＯＳの特定の処理中に、前記デバイス関連値取得部、前記デバイス識別値計算部及び前記対応登録部がそれぞれ処理を実行し、前記デバイス識別値計算部が行う処理が終了となった後に、前記ＯＳの前記特定の処理が完了する、
請求項１２記載の計算機。
【請求項１５】
前記ＯＳが、ＳＣＳＩドライバを有し、前記ＳＣＳＩドライバが、前記デバイス関連値取得部、前記デバイス識別値計算部及び前記対応登録部を有する、
請求項１２記載の計算機。
【請求項１６】
ターゲットの最大数を表す予め用意された値であるターゲット最大数と、前記ＬＵ最大数との積が、前記特定の番号の最大数である２ｎ（ｎは、前記特定の番号を表す空間のサイズとしてのビット数であり、自然数）より大きい場合に、前記特定の番号を表す空間である特定番号空間にシフト可能なｋ個（ｋは自然数）のビットが前記メジャー空間に存在するか否かの第一の判定を行う第一の判定部と、
前記第一の判定の結果が肯定的の場合に、前記メジャー空間中の前記シフト可能なｋ個のビットを前記特定番号空間にシフトすることで、デバイス番号の空間サイズを変更することなく、前記特定番号空間のサイズをｎビットからｎ＋ｋビットに拡大するフォーマット変更部と、を更に備える、
請求項１２記載の計算機。
【請求項１７】
前記第一の判定の結果が否定的の場合に、算出済みの前記特定の番号の数が、前記取得されたターゲット最大数と前記取得されたＬＵ最大数との積より小さいか否かの第二の判定を行う第二の判定部、を更に備え、
前記デバイス関連値取得部が、一のデバイスである一のＬＵについて前記特定の番号が算出された場合に、別の一のＬＵについてのＬＵＮを取得し、
前記デバイス識別値計算部が、前記第二の判定の結果が否定的であれば、前記取得された一のＬＵＮについての前記特定の番号を算出することなく終了となる、
請求項１６記載の計算機。
【請求項１８】
デバイスを有するストレージシステムと、
前記ストレージシステムと通信する計算機と
を備え、
前記計算機が、
前記デバイスに関する値であるデバイス関連値を取得するデバイス関連値取得部と、
デバイス関連値が代入される第一の変数を含んだ計算式と、
前記取得されたデバイス関連値を前記第一の変数に代入することで、そのデバイス関連値に対応したデバイスのデバイス識別値を算出するデバイス識別値計算部と、
電子的な情報資源に前記算出したデバイス識別値と前記取得されたデバイス関連値とを登録する対応登録部と、を備える、
コンピュータシステム。
【請求項１９】
前記計算機が、
前記ストレージシステムのポートのターゲットのＷＷＮ（ワールドワイドネーム）にパーシステントバインディング設定により前もって対応付けられたターゲットＩＤを取得するターゲットＩＤ取得部と、
前記ストレージシステムの一ポートについての論理ユニット（ＬＵ）の最大数である予め用意された値であるＬＵ最大数を取得するＬＵ最大数取得部と、を更に備え、
前記デバイス関連値取得部は、ＬＵＮ（論理ユニット番号）を取得し、
デバイス識別値は、ＵＮＩＸ系のＯＳで管理される、メジャー空間とマイナー空間とで構成された空間で表されるデバイス番号において、前記マイナー空間の所定位置の空間で表される特定の番号であり、
前記計算式は、前記特定の番号＝第二の変数×第三の変数＋第一の変数、であり、
前記第一の変数が、前記取得されたＬＵＮが代入される変数であり、
前記第二の変数が、前記取得されたＬＵ最大数が代入される変数であり、
前記第三の変数が、前記取得されたターゲット最大数が代入される変数である、
請求項１８記載のコンピュータシステム。
【請求項２０】
デバイスに関する値であるデバイス関連値を取得し、
デバイス関連値が代入される第一の変数を含んだ計算式の該第一の変数に、前記取得されたデバイス関連値を代入することで、そのデバイス関連値に対応したデバイスのデバイス識別値を算出し、
電子的な情報資源に前記算出したデバイス識別値と前記取得されたデバイス関連値とを登録する、
デバイス管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバイスの管理に関する。
【背景技術】
【０００２】
例えば、ＳＡＮ（Storage Area Network）に接続された一以上のストレージシステム及び一以上のサーバでコンピュータシステムが構成される。
【０００３】
一般に、ストレージシステムは、一以上のポートと、複数の物理的な記憶装置とを備える。それら複数の物理的な記憶装置が提供する記憶空間を基に、論理的な記憶装置として複数の論理ユニット（ＬＵ）が形成される。ストレージシステムでは、通常、各ＬＵに対応した各ＬＵＮ（Logical Unit Number）が管理される。
【０００４】
サーバに搭載されるＯＳ（Operating System）としては、例えば、ＵＮＩＸ（登録商標）系のＯＳ（以下、便宜上、「ＵＮＩＸ」と省略する）がある。ＵＮＩＸでは、例えば、ストレージシステムのポートがターゲットとして認識され、ＬＵがデバイスとして認識される。ＵＮＩＸでは、ＳＣＳＩ（Small Computer System Interface）ドライバが、認識されたデバイスについてのマイナー番号及びデバイスファイル名を決定する。マイナー番号とは、デバイス番号のデータ空間を構成するメジャー空間（上位部分）とマイナー空間（下位部分）とのうちのマイナー空間（例えば２０ビット）の一部（例えば１６ビット）又は全部で表される値である。
【０００５】
ＵＮＩＸでは、ＳＣＳＩドライバは、各デバイスについてのマイナー番号及びデバイスファイル名を、認識したデバイスの順序で決定する。また、ＵＮＩＸでは、一つのターゲットに属する一以上のデバイスを連続的に認識してから、別のターゲットに属する一以上のデバイスを連続的に認識することもある。これらの理由から、ストレージシステムでターゲット及び／又はデバイスの数が変更された後、ＵＮＩＸ（つまりＯＳ）のリブートやフェイルオーバ等があると、マイナー番号及びデバイスファイル名とデバイスとの対応が変更されることがある。
【０００６】
具体的には、例えば、図１Ａに例示するように、第一のストレージシステム０に、ターゲットとしてポート（Ｐ００）があり、Ｐ００にＬＵ０及びＬＵ１が属しており、サーバにおいて、ＵＮＩＸが、Ｐ００及びＰ００に属するＬＵ０及びＬＵ１を認識できるとする。また、第二のストレージシステム１に、ターゲットとしてポート（Ｐ１０）があり、Ｐ１０にＬＵ０及びＬＵ１が属しており、サーバにおいて、ＵＮＩＸが、Ｐ１０及びＰ１０に属するＬＵ０及びＬＵ１を認識できるとする。このような環境において、ＵＮＩＸが、Ｐ００に属する複数のＬＵを、例えばＬＵ０、ＬＵ１の順序で連続的に認識し、次に、Ｐ１０に属する複数のＬＵを、例えば、ＬＵ０、ＬＵ１の順番で連続的に認識したとする。この場合、Ｐ１０に属するＬＵ０は、３番目に認識されたことになるので、マイナー番号として“２”が決定され（minor:2というのはマイナー番号が“２”であることを示す）、デバイスファイル名として、３番目に認識されたことに対応した値“/dev/sdc”が決定される。
【０００７】
この後に、例えば、図１Ｂに示すように、ストレージシステム０で、Ｐ００に属するＬＵとしてＬＵ２が追加され、その後に、ＵＮＩＸのリブートが行われたとする。そうすると、図１Ａと同様の手順でＬＵが認識された場合、追加されたＬＵ２が３番目に認識され、Ｐ１０に属するＬＵ０は４番目に認識されることになる。そのため、図１Ｂに示すように、Ｐ１０に属するＬＵ０のマイナー番号として、４番目に認識されたことを表す“３”が決定され、デバイスファイル名として、４番目に認識されたことに対応した値“/dev/sdd”が決定される。すなわち、Ｐ１０に属するＬＵ０について言えば、ＬＵ２の追加前と追加後で、対応付けられるマイナー番号及びデバイスファイル名が、マイナー番号“２”及びデバイスファイル名“/dev/sdc”から、マイナー番号“３”及びデバイスファイル名“/dev/sdd”に変更されたことになる。
【０００８】
同様に、例えば、図１Ｂに示した環境において、Ｐ００に属するＬＵ２が障害などによりアクセス不能になった後、ＵＮＩＸがリブートされた場合には、図１Ａに示した環境になるため、そのような場合でも、マイナー番号及びデバイスファイル名とデバイスとの対応付けが変更される。
【０００９】
このように、マイナー番号及びデバイスファイル名とデバイスとの対応付けが変更されると、同一デバイスに必ずしもアクセスできない（例えば、同一のマイナー番号及びデバイスファイル名に対して異なるデバイスがマウントされる、或いは、マウントに失敗する）という問題が生じる。このため、例えば、サーバに対してクライアントが所望のデバイスに対応するデバイスファイル名を指定したアクセス要求を送信した場合、サーバでは、ＵＮＩＸが、そのデバイスファイル名に対応付けられているＬＵを指定したアクセス要求を送信することになるが、上記のように、対応付けが変更されてしまっていると、対応付けの変更前と変更後とでは、異なるＬＵにアクセスすることになるか、或いは、アクセスできないことがあり得る。
【００１０】
デバイスファイル名については、デバイスとの対応付けを固定化する方法が知られている（例えば特許文献１）。特許文献１によれば、全てのデバイスにそれぞれ対応したシリアル番号等及びデバイスファイル名とが記録された対応テーブルが用意され、ＳＣＳＩのinquiryコマンドでデバイスのシリアル番号等が取得され、そのシリアル番号等に対応したデバイスファイル名が対応テーブルからサーチされ、デバイスファイル名が見つかったならば、そのデバイスにそのデバイスファイル名が対応付けられる。
【００１１】
【特許文献１】米国公開特許明細書２００４／００６４４５９号
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上述した特許文献１には、デバイスファイル名とデバイスとの対応付けを固定化する方法の開示はあるものの、デバイス番号のマイナー番号とデバイスとの対応付けを固定化する方法については何も開示が無い。ＵＮＩＸは、デバイスファイル名ではなくデバイス番号を指定した要求を受ける場合もある。この場合には、上述したような問題が生じ得る。
【００１３】
また、特許文献１では、ストレージシステムに存在する全てのデバイスについてシリアル番号等とデバイスファイル名とを記録した対応テーブルが必要となる。ストレージシステムの規模や台数などによっては、デバイスが多数（例えば数千〜数万）になることがある。この場合、対応テーブルのサイズは大きくなり、また、シリアル番号等に対応するデバイスファイル名のサーチの負荷が高くなる。
【００１４】
これらと同種の問題は、マイナー番号に限らず、デバイスファイル名と異なるデバイス識別値をデバイスに対応付けて管理する環境があれば、その環境で同様に存在し得る。
【００１５】
従って、本発明の目的は、対応テーブルを使用すること無くデバイスファイル名と異なるデバイス識別値とデバイスとの対応付けを固定化することにある。
【００１６】
本発明の他の目的は、後述の説明から明らかになるであろう。
【課題を解決するための手段】
【００１７】
デバイス関連値が代入される第一の変数を含んだ計算式を準備し、取得されたデバイス関連値をその第一の変数に代入することで、そのデバイス関連値に対応したデバイスに固有のデバイス識別値を算出し、算出したデバイス識別値と上記取得されたデバイス関連値とを登録する。
【発明を実施するための最良の形態】
【００１８】
一つの実施形態では、計算機が、デバイスに関する値であるデバイス関連値を取得するデバイス関連値取得部と、デバイス関連値が代入される第一の変数を含んだ計算式と、取得されたデバイス関連値を前記第一の変数に代入することで、そのデバイス関連値に対応したデバイスのデバイス識別値を算出するデバイス識別値計算部と、電子的な情報資源に前記算出したデバイス識別値と前記取得されたデバイス関連値とを登録する対応登録部と
を備えることができる。
【００１９】
一つの実施形態では、計算機が、ターゲットに関する値であるターゲット関連値を取得するターゲット関連値取得部を更に備えることができる。計算式が、ターゲット関連値が代入される第二の変数を更に含む。デバイス識別値計算部は、取得されたターゲット関連値を第二の変数に代入することで、デバイス識別値を算出することができる。
【００２０】
一つの実施形態では、計算機が、一つのターゲットについてのデバイスの最大数を表す予め用意された値であるデバイス最大数を取得するデバイス最大数取得部を更に備えることができる。計算式が、デバイス最大数が代入される第三の変数を更に含む。デバイス識別値計算部は、取得されたデバイス最大数を第三の変数に代入することで、デバイス識別値を算出することができる。
【００２１】
一つの実施形態では、計算式は、デバイス識別値＝第二の変数×第三の変数＋第一の変数、である。
【００２２】
一つの実施形態では、ターゲット関連値は、ターゲットの識別子であるターゲットＩＤである。ターゲットＩＤは、ターゲットのＷＷＮ（ワールドワイドネーム）にパーシステントバインディング設定で予め対応付けられているＩＤである。
【００２３】
一つの実施形態では、計算機が、算出されたデバイス識別値を含んだデバイスファイル名を作成するファイル名作成部を更に備えることができる。
【００２４】
一つの実施形態では、ターゲットの最大数を表す予め用意された値であるターゲット最大数と、デバイス最大数との積が、デバイス識別値の最大数以下である。
【００２５】
一つの実施形態では、計算機が、ターゲット最大数取得部と、判定部とを備えることができる。ターゲット最大数取得部は、ターゲットの最大数を表す予め用意された値であるターゲット最大数を取得することができる。判定部は、算出済みのデバイス識別値の数が、取得されたターゲット最大数と前記取得されたデバイス最大数との積より小さいか否かの判定を行うことができる。デバイス関連値取得部が、一のデバイスについてデバイス識別値が算出された場合に、別の一のデバイスについてのデバイス関連値を取得するよう構成される。デバイス識別値計算部が、判定の結果が否定的であれば、取得された一のデバイスのデバイス関連値についてのデバイス識別値を算出することなく終了とすることができる。
【００２６】
一つの実施形態では、計算機が、判定部と、フォーマット変更部とを備えることができる。判定部は、ターゲットの最大数を表す予め用意された値であるターゲット最大数と、前記デバイス最大数との積が、デバイス識別値の最大数より大きいか否かの判定を行うことができる。フォーマット変更部は、その判定の結果が肯定的な場合、デバイス識別値を含んだデバイス識別情報において、そのデバイス識別情報の空間サイズを変更することなく、デバイス識別値を表す空間サイズを大きくすることができる。
【００２７】
一つの実施形態では、計算機が、判定部と、フォーマット変更部とを備えることができる。その判定部は、デバイス識別値を含んだデバイス識別情報において、そのデバイス識別情報中に、デバイス識別値を表す空間にシフトすることが可能な空間であるシフト可能空間が存在するか否かの判定を行うことができる。フォーマット変換部は、その判定の結果が肯定的の場合に、デバイス識別情報中のシフト可能空間を、デバイス識別値を表す空間にシフトすることができる。
【００２８】
一つの実施形態では、デバイス識別情報の空間において、デバイス識別値の空間以外の或る空間を、有意でなく且つ連続した一以上の所定値が占めている場合に、該或る空間が、上記シフト可能空間である。
【００２９】
一つの実施形態では、計算機が、ターゲットＩＤ取得部と、ＬＵ最大数取得部とを更に備えることができる。ターゲットＩＤ取得部は、ストレージシステムのポートであるターゲットのＷＷＮ（ワールドワイドネーム）にパーシステントバインディング設定により前もって対応付けられたターゲットＩＤを取得することができる。ＬＵ最大数取得部は、ストレージシステムの一ポートについての論理ユニット（ＬＵ）の最大数を示す予め用意された値であるＬＵ最大数を取得することができる。デバイス関連値取得部は、ＬＵＮ（論理ユニット番号）を取得することができる。デバイス識別値は、ＵＮＩＸ系のＯＳで管理される、メジャー空間とマイナー空間とで構成された空間で表されるデバイス番号において、マイナー空間の所定位置の空間（例えば上位の連続した所定ビット分の空間）で表される特定の番号である。特定の番号とは、例えば、マイナー空間全体により表される番号（一般的には、この番号を「マイナー番号」と呼ぶ）のうちの所定部分（例えばパーティション番号と呼ばれる部分）を除いた部分の番号である。より具体的には、特定の番号とは、例えば、後述の第一及び第二の実施形態で、便宜上、「マイナー番号」と呼ぶ番号である。計算式は、特定の番号＝第二の変数×第三の変数＋第一の変数、である。第一の変数が、取得されたＬＵＮが代入される変数である。第二の変数が、取得されたＬＵ最大数が代入される変数である。第三の変数が、取得されたターゲット最大数が代入される変数である。
【００３０】
一つの実施形態では、計算機が、算出済みの上記特定の番号の数が、取得されたターゲット最大数と前記取得されたＬＵ最大数との積より小さいか否かの判定を行う判定部、を更に備えることができる。デバイス関連値取得部が、一のデバイスである一のＬＵについて上記特定の番号が算出された場合に、別の一のＬＵについてのＬＵＮを取得することができる。デバイス識別値計算部が、上記判定の結果が否定的であれば、取得された一のＬＵＮについての上記特定の番号を算出することなく終了とすることができる。
【００３１】
一つの実施形態では、パーシステントバインディング設定が終了した後の上記ＯＳの特定の処理中（例えば、ＯＳのリブート中、又は、ＯＳの設定の再読込み中）に、デバイス関連値取得部、デバイス識別値計算部及び対応登録部がそれぞれ所定の処理（つまり、前述した処理）を実行し、デバイス識別値計算部が終了となった後に、ＯＳの上記特定の処理（例えば、ＯＳのリブート、又は、ＯＳの設定の再読込み）が完了する。ＯＳが、ＳＣＳＩドライバを有し、ＳＣＳＩドライバが、デバイス関連値取得部、デバイス識別値計算部及び対応登録部を有することができる。
【００３２】
一つの実施形態では、計算機が、第一の判定部と、フォーマット変更部とを更に備えることができる。第一の判定部は、ターゲットの最大数を表す予め用意された値であるターゲット最大数と、ＬＵ最大数との積が、特定の番号の最大数である２ｎ（ｎは、特定の番号を表す空間のサイズとしてのビット数であり、自然数）より大きい場合に、特定の番号を表す空間である特定番号空間にシフト可能なｋ個（ｋは自然数）のビットがメジャー空間に存在するか否かの第一の判定を行うことができる。フォーマット変更部は、第一の判定の結果が肯定的の場合に、メジャー空間中のシフト可能なｋ個のビットを特定番号空間にシフトすることで、デバイス番号の空間サイズを変更することなく、特定番号空間のサイズをｎビットからｎ＋ｋビットに拡大することができる。
【００３３】
一つの実施形態では、計算機が、第二の判定部を更に備えることができる。第二の判定部は、第一の判定の結果が否定的の場合に、算出済みの特定の番号の数が、取得されたターゲット最大数と取得されたＬＵ最大数との積より小さいか否かの第二の判定を行うことができる。デバイス関連値取得部が、一のデバイスである一のＬＵについて特定の番号が算出された場合に、別の一のＬＵについてのＬＵＮを取得するよう構成されている。デバイス識別値計算部が、第二の判定の結果が否定的であれば、取得された一のＬＵＮについての特定の番号を算出することなく終了とすることができる。
【００３４】
上述した複数の実施形態のうちの任意の二以上の実施形態を組み合わせても良い。また、上述した各部（例えば、デバイス関連値取得部、デバイス識別値計算部及び対応登録部等）は、ハードウェア、コンピュータプログラム又はそれらの組み合わせ（例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること）により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、ＣＤ−ＲＯＭ等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
【００３５】
また、前述したデバイス関連値取得部、デバイス識別値計算部、対応登録部、ターゲット関連値取得部、デバイス最大数取得部、ファイル名作成部、ターゲット最大数取得部、判定部、第一の判定部、第二の判定部、フォーマット変更部、ＬＵ最大数取得部及びターゲットＩＤ取得部のうちの少なくとも一つで、後述するデバイス番号設定部を構成することができる。
【００３６】
以下、図面を参照して、本発明の幾つかの実施形態を詳細に説明する。
【００３７】
＜第一の実施形態＞。
【００３８】
図２は、本発明の第一の実施形態に係るコンピュータシステムの構成例を示す。
【００３９】
ＬＡＮ（Local Area Network）１０２に、一以上のクライアント端末１０３と、管理端末１０１と、一以上のサーバ２０１とが接続されている。ＳＡＮ（若しくは、例えばＩＰ−ＳＡＮ等）１０４に、一以上のサーバ２０１と一以上のストレージシステム４０１とが接続されている。ＬＡＮ１０２とＳＡＮ１０４は、通常、それぞれ、異なる種類の通信ネットワークであるが、同じ種類の通信ネットワークであっても良い。また、ＬＡＮ１０２とＳＡＮ１０４のように別れているのではなく、一つの通信ネットワークに、クライアント１０３、管理端末１０１、サーバ２０１及びストレージシステム４０１が接続されていてもよい。
【００４０】
クライアント１０３は、サーバ２０１に対してファイルアクセス要求を送信する計算機である。そのファイルアクセス要求では、例えば、デバイスファイル名或いはデバイス番号が指定される。
【００４１】
管理端末１０１は、一以上のサーバ２０１を管理する計算機である。管理端末１０１は、管理者からの要求により、サーバ２０１にアクセスし、後述のパーシステントバインディング設定等を行う。管理端末１０１からストレージシステム４０１が管理されても良い。
【００４２】
サーバ２０１は、例えば、クライアント１０３に対してファイルサービスを提供するファイルサーバ（一例としてＮＡＳ（Network Attached Storage）ヘッド）である。サーバ２０１は、例えば、複数個有り、複数のサーバ２０１のうちの少なくとも一つが、クライアント１０３に対して、複数のサーバ２０１が管理する複数の共有単位（論理的な公開単位、ファイルシステムの全部又は一部）を仮想的に一つの名前空間（グローバルネームスペース（ＧＮＳ））として提供する機能を有しても良い。
【００４３】
サーバ２０１には、ＬＡＮ１０２を介した通信を行うための通信インタフェース装置であるネットワークインタフェース２０９と、ＳＡＮ１０４を介した通信を行うための通信インタフェース装置である一以上のホストバスアダプタ（例えば２つのＨＢＡ０、ＨＢＡ１）２１５と、ハードディスクドライブ等のディスク型記憶装置（ディスク型記憶装置に限らず他種の記憶装置でも良い）であるローカルディスク２０５と、メモリ（他種の記憶装置でも良い）２０７と、ＣＰＵ２０３とが備えられる。メモリ２０７には、ＣＰＵ２０３で実行されるコンピュータプログラムとして、例えば、サーバソフトウェア２１１が記憶される。また、メモリ２０７には、番号ファイル名管理テーブル２１４と、マイナー番号管理テーブル２１３と、パーシステントバインディング（Persistent Binging）設定テーブル２１７とが記憶される。
【００４４】
ＳＡＮ１０４は、一以上のＦＣ（Fibre Channel）スイッチ３０１で構成される。ＦＣスイッチ３０１の各々のポート３０３が、ＨＢＡ２１５、他のＦＣスイッチ３０１、或いはストレージシステム４０１のポート４０３に接続される。
【００４５】
ストレージシステム４０１には、複数の物理的な記憶装置（例えば、ハードディスクドライブ或いはフラッシュメモリデバイス等）４１３と、複数の物理的な記憶装置４１３へのアクセスを制御するコントローラ４０６とが備えられている。
【００４６】
複数の物理的な記憶装置４１３により一又は複数のＲＡＩＤグループが構成される。ＲＡＩＤグループは、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）を構成する二以上の記憶装置である。ＲＡＩＤグループが提供する記憶空間を基に、論理的な記憶装置として論理ユニット（ＬＵ）４１５が形成される。ストレージシステム４０１は、複数のＬＵ４１５を備えても良い。
【００４７】
コントローラ４０６は、複数のポート４０３や、ＣＰＵ４０５や、メモリ４０７や、物理的な記憶装置４１３との通信を制御する通信インタフェース装置であるストレージＩ／Ｆ４１１を備える。メモリ４０７は、例えば、ＣＰＵの処理結果を一時的に記憶するキャッシュメモリ領域や、ストレージシステム４０１の構成に関する構成情報等を記憶した制御領域を有する。制御領域には、例えば、構成情報の一つとして、ＬＵ管理テーブル４０９が記憶される。
【００４８】
以下、サーバソフトウェア２１１、番号ファイル名管理テーブル２１４、マイナー番号管理テーブル２１３、パーシステントバインディング設定テーブル２１７、ポート管理テーブル４１０及びＬＵ管理テーブル４０９について説明する。
【００４９】
図３は、サーバソフトウェア２１１の構成例を示す。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するＣＰＵによって処理が行われるものとする。
【００５０】
サーバソフトウェア２１１には、例えば、ファイル共有プログラム２４５、サーバＯＳ２２３が含まれる（ファイル共有プログラム２４５及びサーバＯＳ２２３は、一つのパッケージである必要は無い）。ファイル共有プログラム２４５は、サーバＯＳ２２３に含まれていても良い。
【００５１】
ファイル共有プログラム２４５は、一以上のクライアント１０３にファイル共有プロトコル（例えば、ＮＦＳ（Network File System）或いはＣＩＦＳ（Common Internet File System））を提供し、一以上のクライアント１０３の間でファイル共有機能を提供するものである。ファイル共有プログラム２４５は、クライアント１０３からファイルアクセス要求を受付け、サーバＯＳ２２３に対して、そのファイルアクセス要求に従うファイルアクセス命令（write / read命令）を送信する。
【００５２】
サーバＯＳ２２３は、例えばＵＮＩＸ系のＯＳ（Operating System）である。サーバＯＳ２２３は、所定種類の照会コマンド（例えば、inquriyコマンド、Report LUNコマンド）を送信することで、ターゲット（例えば、ストレージシステム４０１のポート４０３）やデバイス（例えば、ストレージシステム４０１のＬＵ４１５）を認識する。また、サーバＯＳ２２３は、例えば、ファイル共有プログラム２４５からのファイルアクセス命令に応答して、そのファイルアクセス命令で指定されたファイルを構成するデータブロックにアクセスするためのブロックアクセス要求を作成し、そのブロックアクセス要求を、ＨＢＡ２１５から送信する。サーバＯＳ２２３は、例えば、要求受付部２３３と、デバイス番号設定部２２５と、パーシステントバインディング設定部２２７と、マックスターゲット２２９と、マックスＬＵ２３１とを有する。マックスターゲット２２９は、認識可能なターゲットの最大数を示す情報である。マックスＬＵ２３１は、一つのターゲットについての認識可能なＬＵの最大数を示す情報である。マックスターゲット２２９及びマックスＬＵ２３１の少なくとも一つは、サーバＯＳ２２３のソースコードに埋め込まれていても良いし、サーバＯＳ２２３から独立してメモリ２０７に記憶されても良い。要求受付部２３３は、デバイスファイル名或いはデバイス番号を指定した要求を受け付けるコンピュータプログラムであり、番号ファイル名管理テーブル２１４を利用する。デバイス番号設定部２２５は、ＳＣＳＩドライバに相当するコンピュータプログラムであり、マイナー番号管理テーブル２１３を利用する。パーシステントバインディング設定部２２７は、パーシステントバインディング設定をパーシステントバインディング設定テーブル２１７に対して行うコンピュータプログラムである。
【００５３】
図４Ａは、番号ファイル名管理テーブル２１４の構成例を示す。
【００５４】
番号ファイル名管理テーブル２１４は、認識されたデバイスについてのデバイス番号とデバイスファイル名との対応を管理するためのテーブルである。番号ファイル名管理テーブル２１４における一つのエントリセット（一つの行）は、一つのデバイスに対応する。一つのエントリセットは、デバイス番号部分２１４１及びデバイスファイル名２１４２で構成される。デバイス番号部分２１４１とは、デバイス番号の一部分であり、ここでは、ドライバ種別番号及びマイナー番号のセットである。このセットには、更に、後述のパーティション番号が含まれていても良い。つまり、デバイス番号それ自体が登録されても良い。
【００５５】
図４Ｂは、マイナー番号管理テーブル２１３の構成例を示す。
【００５６】
マイナー番号管理テーブル２１３は、認識されたデバイスと決定されたマイナー番号との対応を管理するためのテーブルである。マイナー番号管理テーブル２１３における一つのエントリセット（一つの行）は、一つのデバイスに対応する。一つのエントリセット（行）は、マイナー番号２１３１、ターゲット（target）ＩＤ２１３２及びＬＵＮ２１３３で構成される。
【００５７】
図４Ｃは、パーシステントバインディング設定テーブル２１７の構成例を示す。
【００５８】
パーシステントバインディング設定テーブル２１７は、ターゲットのＷＷＮとＩＤとの対応を管理するためのテーブルである。パーシステントバインディング設定テーブル２１７における一つのエントリセットは、一つのターゲットに対応する。一つのエントリセットは、アダプタ（Adapter）番号２１７１、ＷＷＮ２１７２及びターゲット（target）ＩＤ２１７３で構成される。アダプタ番号２１７１は、ＨＢＡ２１５を識別するための番号である。ＷＷＮ２１７２は、ポート４０３のＷＷＮである。ターゲットＩＤ２１７３は、ＷＷＮ２１７２に対応付けられた、ＷＷＮとは別種の識別子である。
【００５９】
図５Ａは、ポート管理テーブル４１０の構成例を示す。
【００６０】
ポート管理テーブル４１０は、ストレージシステム４０１に存在するポート４０３を管理するためのテーブルである。ポート管理テーブル４１０における一つエントリセットは、一つのポート４０３に対応する。一つのエントリセットは、ポート番号４１０１及びＷＷＮ４１０２で構成される。ポート番号４１０１は、ポート４０３を識別するための番号である。ＷＷＮ４１０２は、ポート４０３のＷＷＮである。
【００６１】
図５Ｂは、ＬＵ管理テーブル４０９の構成例を示す。
【００６２】
ＬＵ管理テーブル４０９は、ストレージシステム４０１に存在するＬＵを管理するためのテーブルである。ＬＵ管理テーブル４０９における一つエントリセットは、一つのＬＵに対応する。一つのエントリセットは、ＬＤＥＶ番号４０９１、ポート番号４０９２及びＬＵＮ４０９３で構成される。ＬＤＥＶ番号４０９１は、ＬＵ４１５を識別するためにストレージシステム４０１が使用する、ＬＵの識別子である。一つのＬＵは、例えば、一以上の論理的なサブ記憶デバイス（ＬＤＥＶ）で構成されており、ＬＤＥＶ番号４０９１は、ＬＤＥＶの番号である。ポート番号４０９２は、当該ＬＤＥＶをＬＵとしてサーバにアクセスさせる際に経由させるポートの番号である。ＬＵＮ４０９３は、所定の照会コマンドに応答して回答される、ＬＵの番号である。
【００６３】
以上が、サーバソフトウェア２１１、マイナー番号管理テーブル２１３、パーシステントバインディング設定テーブル２１７、ポート管理テーブル４１０及びＬＵ管理テーブル４０９についての説明である。
【００６４】
この第一の実施形態では、パーシステントバインディング設定と、マイナー番号及びデバイスファイル名の決定とが行われた後に、サーバ２０１の稼動となる。以下、それぞれの処理について詳細に説明する。
【００６５】
＜＜パーシステントバインディング設定＞＞。
【００６６】
例えば、管理端末１０１からの指示により、インストール後初めてサーバＯＳ２２３がブートした場合、サーバＯＳ２２３のパーシステントバインディング設定部２２７が、管理端末１０１から、パーシステントバインディング設定を受け付けることができる。パーシステントバインディング設定とは、各ポート４０３のＷＷＮにターゲットＩＤを対応付けることである。パーシステントバインディング設定によれば、ＷＷＮとターゲットＩＤとの対応関係は固定化される。ポート４０３のＷＷＮは、例えば、所定の或いは任意のＨＢＡ２１５を通じて所定の照会コマンドを発行することにより、その照会コマンドに対する応答として、取得することができる。パーシステントバインディング設定部２２７は、取得された各ＷＷＮを表示し、各ＷＷＮに対応付ける各ターゲットＩＤを管理端末１０１から受け付ける。パーシステントバインディング設定部２２７は、各ＷＷＮに対応付けられる各ターゲットＩＤが入力されたならば、各ＷＷＮについて、ＷＷＮに対応付けるターゲットＩＤと、そのＷＷＮの通知を受けたＨＢＡに対応したアダプタ番号とを、パーシステントバインディング設定テーブル２１７に登録する。これにより、パーシステントバインディング設定が完了する。なお、パーシステントバインディング設定部２２７は、各ＷＷＮに対応付ける各ターゲットＩＤを所定の規則で自動決定し、決定した各ターゲットＩＤをパーシステントバインディング設定テーブル２１７に登録してもよい。
【００６７】
パーシステントバインディング設定が完了したならば、サーバＯＳ２２３は、特定の処理（例えば、リブート、又は、設定の再読込み）を実行し、該特定の処理中に、マイナー番号及びデバイスファイル名の決定のための処理（図８に示す処理）を実行することができる。
【００６８】
＜＜マイナー番号及びデバイスファイル名の決定＞＞。
【００６９】
サーバＯＳ２２３によって管理されるデバイス番号のフォーマットは、例えば、図６Ａに例示するようなフォーマットである。すなわち、デバイス番号は、３２ビットの空間で表現され、その空間は、上位の空間であるメジャー空間と下位の空間であるマイナー空間とで構成されている。メジャー空間は、例えば１２ビットであり、マイナー空間は、例えば２０ビットである。メジャー空間で、所定の有意の情報、例えばドライバ種別番号が表現される。マイナー空間の上位（例えば１６ビット）が、マイナー番号を表し、下位（例えば４ビット）が、パーティション番号を表す。マイナー番号は１６ビットなので、２１６＝６５５３６個のマイナー番号を割り当て可能であり、パーティション番号は、４ビットなので、２４＝１６個のパーティション（例えば、サーバＯＳ２２３で認識されたＬＵ４１５のパーティション）を作成可能である。なお、一般には、パーティション番号（４ビット）も含めた２０ビットを「マイナー番号」と呼ぶが、第一の実施形態及び後述の第二の実施形態の説明では、便宜上、上位１６ビットを「マイナー番号」と呼ぶことにする。
【００７０】
第一の実施形態では、マイナー番号は、図６Ｂに例示するマイナー番号計算式（以下の（１）式）で算出される。
マイナー番号（つまり、割当てる番号）＝ターゲットＩＤ×マックスＬＵ＋ＬＵＮ・・・（１）
このマイナー番号計算式には、ターゲットＩＤ、マックスＬＵ及びＬＵＮといった３つの変数がある。変数であるマックスＬＵには、サーバＯＳ２２３で管理されているマックスＬＵ２３１が代入される。
【００７１】
このマイナー番号計算式によれば、どのポート４０３に属するどのＬＵ４１５であるかに基づいて、マイナー番号が決定される。一つのサーバ２０１において、パーシステントバインディング設定部２１７は、異なるＷＷＮに同一のターゲットＩＤの対応付けを禁止し、故に、パーシステントバインディング設定テーブル２１７には、同一のターゲットＩＤが登録されることはない。このため、一つのサーバ２０１において、ターゲットＩＤ及びＬＵＮの組み合わせは、他のそれと重複することのない、一意の組み合わせである。そして、上記（１）の計算式により、ターゲットＩＤ及びＬＵＮの組み合わせに一意に対応したマイナー番号が算出される。
【００７２】
また、このマイナー番号計算式によれば、ＷＷＮではなくターゲットＩＤが変数として採用される。
【００７３】
図７Ａ乃至図７Ｃを参照して、マイナー番号計算式の意義を説明する。
【００７４】
マイナー番号の空間のサイズをｎビット（ｎは自然数）とした場合、マイナー番号の範囲のサイズ（以下、マイナー番号範囲サイズ）を、２ｎ（２のｎ乗）で表すことができる。本実施形態では、マイナー番号の空間のサイズは１６ビットなので、マイナー番号範囲サイズは、前述したように、２１６＝６５５３６である。このサイズが表す範囲で、マイナー番号の割り当てが行われる。具体的には、上記のマイナー番号計算式によれば、マイナー番号範囲が、マックスＬＵ２３１が示すサイズ毎に区切られ、区切りと区切りとの間であるサブ範囲が、一つのターゲットＩＤに割り当てられ、そのサブ範囲内で、そのサブ範囲に対応するターゲットＩＤに属した各ＬＵにマイナー番号が割り当てられる。
【００７５】
以上の構成であるため、マックスＬＵ２３１が示す値や、マックスターゲット２２９が示す値によって、マイナー番号範囲サイズが丁度となる、余る、或いは不足することがある。
【００７６】
マイナー番号範囲サイズが丁度となるケースとしては、図７Ａに示すように、マックスＬＵ２３１とマックスターゲット２２９の積が、マイナー番号範囲サイズと一致するケースである。図７Ａは、マックスＬＵ２３１＝２５６で、マックスターゲット２２９＝２５６の場合を示す。この場合、マイナー番号範囲が、２５６サイズずつ２５６個のサブ範囲に区切られ、一つのサブ範囲が、一つのターゲットＩＤに割り当てられる。つまり、一つのターゲットＩＤに、２５６個の固有のマイナー番号（つまり、一つのポートについての最大ＬＵ数分の固有のマイナー番号）が割り当てられることになる。
【００７７】
マイナー番号範囲サイズが余るケースとしては、図７Ｂに示すように、マックスＬＵ２３１とマックスターゲット２２９の積が、マイナー番号範囲サイズ未満となるケースである。この場合、マイナー番号範囲において、２１６とマックスＬＵ２３１及びマックスターゲット２２９の積との範囲が、余剰分となる。
【００７８】
マイナー番号範囲サイズが不足するケースとしては、図７Ｃに示すように、マックスＬＵ２３１とマックスターゲット２２９の積が、マイナー番号範囲サイズを超えたケースである。この場合、マイナー番号範囲において、２１６とマックスＬＵ２３１及びマックスターゲット２２９の積との範囲が、不足分となる。また、図７Ｃは、一つのターゲットＩＤ（例えば、ターゲットＩＤ＝マックスターゲット２２９が示す値−１）についてマックスＬＵ２３１分フルに割り当てられないこともあることを示している。
【００７９】
以下、図８を参照して、サーバＯＳ２２３によって行われる、マイナー番号及びデバイスファイル名の決定の処理を説明する。なお、図８では、ステップを“Ｓ”と略記している。
【００８０】
この処理は、パーシステントバインディング設定が完了した後のサーバＯＳ２２３の特定の処理中（例えば、リブート中、又は、設定の再読込み中）に行われる。
【００８１】
デバイス番号設定部２２５が、マックスＬＵ２３１を取得しメモリ２０７のワーク領域に設定する（Ｓ１０１）。また、デバイス番号設定部２２５が、マイナー番号計算式を例えばＣＰＵ２０３内のレジスタに設定する（Ｓ１０２）。
【００８２】
次に、デバイス番号設定部２２５は、認識可能なＨＢＡをサーチする処理であるアダプタスキャンを実行する（Ｓ１０３）。その結果、認識可能なＨＢＡ（未選択のＨＢＡ）があれば（Ｓ１０４：ＹＥＳ）、Ｓ１０５に進み、無ければ（Ｓ１０４：ＮＯ）、終了する。
【００８３】
Ｓ１０５で、デバイス番号設定部２２５は、認識可能なターゲットをサーチする処理であるターゲットスキャンを実行する。例えば、デバイス番号設定部２２５は、Ｓ１０３により認識されたＨＢＡから、所定の照会コマンドを送信し、その照会コマンドに対する応答を受信し、解析する。このターゲットスキャンの結果、認識可能なターゲットが無ければ（Ｓ１０６：ＮＯ）、Ｓ１０３に戻り、認識可能なターゲットがあれば（例えばポート４０３のＷＷＮを受信したならば）（Ｓ１０６：ＹＥＳ）、Ｓ１０８に進む。
【００８４】
Ｓ１０８で、デバイス番号設定部２２５は、パーシステントバインディング設定部２２７に、認識されたターゲット（ポート４０３）のＷＷＮに対応したターゲットＩＤを問い合わせる。パーシステントバインディング設定部２２７は、そのＷＷＮに対応したターゲットＩＤをパーシステントバインディング設定テーブル２１７から探し、見つかれば、見つかったターゲットＩＤをデバイス番号設定部２２５に返し、無ければ、その旨をデバイス番号設定部２２５に回答する。デバイス番号設定部２２５は、無しの旨を受けた場合（Ｓ１０８：ＮＯ）、Ｓ１０５に戻り、ターゲットＩＤを受けた場合（Ｓ１０８：ＹＥＳ）、ターゲットＩＤをメモリ２０７のワーク領域に設定し（Ｓ１０９）、Ｓ１１０に進む。
【００８５】
Ｓ１１０で、デバイス番号設定部２２５は、ターゲットスキャンにより取得されたＷＷＮに属するＬＵをサーチする処理であるＬＵスキャンを実行する。具体的には、例えば、デバイス番号設定部２２５は、所定の照会コマンド（例えばReport LUN）を、そのＷＷＮに対応するポート４０３を有したストレージシステム４０１に発行し、そのコマンドに対する応答をそのストレージシステム４０１から受信し、その応答を解析する。このＬＵスキャンの結果、デバイス番号設定部２２５は、認識可能なＬＵが無ければ（Ｓ１１１：ＮＯ）、Ｓ１０５に戻り、認識可能なＬＵが有れば（例えば一つのＬＵＮを受けたならば）（Ｓ１１１：ＹＥＳ）、Ｓ１１２に進む。
【００８６】
Ｓ１１２で、デバイス番号設定部２２５は、マイナー番号の既割り当て数が２１６より少ないか否かの判定を行う。ここで言う「既割り当て数」とは、マイナー番号の実際に割り当てられた個数ではなく、前述したマイナー番号範囲（図７Ａ乃至図７Ｃ参照）におけるどの位置まで現在使用されたかを示す値とみなすことができる。なぜなら、マイナー番号範囲における或るサブ範囲について、そのサブ範囲に対応したターゲットに属するＬＵの数（認識されたＬＵの数）が、Ｓ１０１で取得されたマックスＬＵ２３１が示す数と同数であれば、サブ範囲の全てが使用されたことになるが、認識されたＬＵの数が、マックスＬＵ２３１が示す数未満であれば、サブ範囲に未使用部分が生じるためである。
【００８７】
Ｓ１１２の判定の結果が、肯定的であれば（Ｓ１１２：ＹＥＳ）、Ｓ１１３に進み、Ｓ１１２の判定の結果が、否定的であれば（Ｓ１１２：ＮＯ）、終了となる。Ｓ１１２：ＮＯによる終了となった場合、例えば、図７Ａ又は図７Ｃに例示した結果となる。一方、それ以外の理由で終了になった場合、例えば、図７Ｂに例示した結果となる。つまり、この第一の実施形態では、マックスターゲット２２９の値に関わらず、既割り当て数がマイナー番号範囲より少ないか否かにより、Ｓ１１３に進むか終了になるかが決定される。
【００８８】
Ｓ１１３で、デバイス番号設定部２２５が、Ｓ１０１で取得されたマックスＬＵ２３１と、Ｓ１０９で設定された一つのターゲットＩＤと、Ｓ１１０のＬＵスキャンにより取得された一つのＬＵＮとを用いて、Ｓ１０２で設定されたマイナー番号計算式の計算を実行する。これにより、その一つのターゲットＩＤとその一つのＬＵＮとの組み合わせに固有のマイナー番号が算出される。
【００８９】
Ｓ１１４で、デバイス番号設定部２２５が、その算出されたマイナー番号を含んだデバイスファイル名を作成し、そのデバイスファイル名を有したデバイスファイルを作成して、そのデバイスファイルを格納する。そのデバイスファイルの格納先は、例えば、ファイルシステムである。ファイルシステムが、例えば、ストレージシステム４０１のＬＵ４１５に存在するならば、そのＬＵ４１５にデバイスファイルが格納されるし、ローカルディスク２０５に存在するならば、そのローカルディスク２０５にデバイスファイルが格納される。
【００９０】
Ｓ１１５で、デバイス番号設定部２２５が、マイナー番号管理テーブル２１３に、算出されたマイナー番号２１３１と、そのマイナー番号２１３１の算出に使用したターゲットＩＤ２１３２及びＬＵＮ２１３３を登録する。また、デバイス番号設定部２２５が、そのマイナー番号とデバイス番号設定部２２５を表すドライバ種別番号とを含んだデバイス番号を生成し、そのマイナー番号及びドライバ種別番号のセットであるデバイス番号部分２１４１と、Ｓ１１４で生成したデバイスファイル名２１４２とを、番号ファイル名管理テーブル２１４に登録する。
【００９１】
このＳ１１５の後、Ｓ１１０に戻る。
【００９２】
以上の一連の処理が終了した後に、サーバＯＳ２２３の特定の処理（例えば、リブート、又は、設定の再読込み）が完了し、サーバＯＳ２２３が稼動状態となる。
【００９３】
以上の、マイナー番号及びデバイスファイル名の決定の処理の結果を、図９Ａ及び図９Ｂに示す。図９Ａは、ストレージシステム０のポート４０３（Ｐ００）に、ＬＵＮ２に対応したＬＵ（ＬＵ２）が追加される前（言い換えれば、ＬＵ２に障害があった後）の、ＬＵとマイナー番号及びデバイスファイル名との対応の一例を示す。図９Ｂは、Ｐ００にＬＵ２が追加された後（言い換えれば、ＬＵ２に障害がある前）の、ＬＵとマイナー番号及びデバイスファイル名との対応の一例を示す。図９Ａ及び図９Ｂによれば、図１Ａ及び図１Ｂと違って、ＬＵ２の追加前と追加後で（言い換えれば、ＬＵ２に障害発生後と障害発生前で）、ＬＵとマイナー番号との対応付けが固定化されている（つまり変更されていない）ことがわかる。マイナー番号が変更されないのは、マイナー番号は、前述した（１）式により算出されるためである。
【００９４】
また、この実施形態では、前述したように、算出されたマイナー番号を示す数値を含んだデバイスファイル名が、そのマイナー番号に対応したデバイスについて作成される。図示のデバイスファイル名においてアンダーラインを付した箇所が、マイナー番号に対応した数値である。デバイスファイル名には、マイナー番号を所定の規則（例えば１６進数）で表した数値が含まれる。これにより、マイナー番号のみならず、デバイスファイル名とデバイスとの対応関係も固定化することができる。また、その固定化のために、対応テーブルや対応テーブル上のレコードを辿る処理を必要としないので、消費記憶容量やサーバ２０１の負荷を抑えることができる。また、デバイスファイル名を解析することで、そのデバイスファイル名から一意にマイナー番号を特定することが可能となる。
【００９５】
上記生成されたデバイスファイル名及びデバイス番号のうちの少なくとも一方が、サーバＯＳ２２３の上位（例えばクライアント１０３）に通知される。これにより、サーバ２０１が稼動した後、デバイスファイル名或いはデバイス番号を指定した要求をサーバＯＳ２２３が受けることができる。
【００９６】
＜＜サーバ２０１の稼動＞＞。
【００９７】
サーバ２０１が稼動している状態である場合、サーバＯＳ２２３の要求受付部２３３が、デバイスファイル名或いはデバイス番号を指定した要求をクライアント１０３から受け付ける。
【００９８】
要求受付部２３３が受けた要求が、デバイスファイル名を指定した要求である場合、要求受付部２３３は、そのデバイスファイル名と一致するデバイスファイル名２１４２に対応したデバイス番号部分２１４１を番号ファイル名管理テーブル２１４から取得する。要求受付部２３３は、取得したデバイス番号部分２１４１におけるドライバ種別番号から、そのデバイス番号部分２１４１におけるマイナー番号の提供先ドライバを特定し、特定したドライバに、そのマイナー番号を提供する。ここでは、そのドライバは、ＳＣＳＩドライバであるデバイス番号設定部２２５とする。デバイス番号設定部２２５は、要求受付部２３３から提供されたマイナー番号と一致するマイナー番号２１３１に対応したターゲットＩＤ２１３２及びＬＵＮ２１３３をデバイス番号管理テーブル２１３から取得する。そのターゲットＩＤ２１３２に一致するターゲットＩＤ２１７３に対応したＷＷＮ２１７２が、パーシステントバインディング設定部２２７により、パーシステントバインディング設定テーブル２１７から取得される。それにより、サーバＯＳ２２３から、取得されたＷＷＮ２１７２と取得されたＬＵＮ２１３３とを含んだ要求が、そのＷＷＮ２１７２に対応したアダプタ番号２１７１に対応するＨＢＡ２１５から、送信される。
【００９９】
要求受付部２３３が受けた要求が、デバイス番号を指定した要求である場合、要求受付部２３３は、そのデバイス番号中のドライバ種別番号から、そのデバイス番号中のマイナー番号の提供先ドライバを特定し、特定したドライバに、そのマイナー番号を提供する。ここでは、そのドライバは、ＳＣＳＩドライバであるデバイス番号設定部２２５とする。その後の処理は、要求受付部２３３が受けた要求が、デバイスファイル名を指定した要求である場合と同様である。
【０１００】
以上が、第一の実施形態についての説明である。なお、第一の実施形態では、デバイスファイル名に、マイナー番号に加えて、ドライバ種別番号が含まれても良い。これにより、番号ファイル名管理テーブル２１４を不要にすることができる。なぜなら、デバイスファイル名中の所定位置の文字列（コード群）から、ドライバ種別番号やマイナー番号を特定することが可能となるためである。
【０１０１】
以上、上述した第一の実施形態によれば、パーシステントバインディング設定によりＷＷＮ及びターゲットＩＤの対応が固定され、そのターゲットＩＤと、マックスＬＵと、スキャンされたＬＵＮとを用いた計算式で、そのターゲットＩＤとＬＵＮとの組み合わせに固有のマイナー番号が算出される。これにより、デバイスとマイナー番号との対応を固定（不変）とすることができる。また、その固有のマイナー番号が上記のように計算式で算出されるので、消費記憶容量やサーバ２０１の負荷を抑えることができる。
【０１０２】
＜第二の実施形態＞。
【０１０３】
以下、本発明の第二の実施形態を説明する。その際、第一の実施形態との相違点を主に説明し、第一の実施形態との共通点については説明を省略或いは簡略する。
【０１０４】
第二の実施形態では、マックスＬＵ２３１とマックスターゲット２２９の積が、マイナー番号範囲サイズを超えたケースにおいて、図７Ｃの他に、図１０のようなデバイス番号フォーマット変更処理で対応することが可能である。例えば、メジャー空間のうちの使用可能なｍビット（ｍは自然数）をマイナー番号空間にシフトする（つまり、マイナー番号空間のサイズを（ｎ＋ｍ）ビットとする）ことで、マイナー番号範囲のサイズを、２ｎから２ｎ＋ｍに拡大する。
【０１０５】
使用可能なｍビットとは、例えば、メジャー空間のうちの、有意の情報（上記例ではドライバ種別番号）の表現に使用されている部分以外の部分を構成するビットである。使用可能なｍビットは、例えば、連続したビットであり、全てが同じ数値（例えば１或いは０）である。使用可能なｍビットは、メジャー空間の特定の位置（例えば、先頭から連続したｍビット分の範囲、或いは、最後尾から連続したｍビット分の範囲）にある。
【０１０６】
以下、図１１は、本発明の第二の実施形態における、マイナー番号及びデバイスファイル名の決定の処理の流れの一例を示す。
【０１０７】
デバイス番号設定部２２５が、マックスＬＵ２３１を取得しメモリ２０７のワーク領域に設定する（Ｓ２０１）。また、デバイス番号設定部２２５が、マックスターゲット２２９を取得しメモリ２０７のワーク領域に設定し、且つ、マイナー番号計算式を例えばＣＰＵ２０３内のレジスタに設定する（Ｓ２０２）。
【０１０８】
次に、デバイス番号設定部２２５が、マイナー番号空間溢れが生じるか否かの判定を行う（Ｓ２０３）。具体的には、例えば、デバイス番号設定部２２５は、マックスターゲット２２９及びマックスＬＵ２３１の積がマイナー番号範囲サイズ（２１６）を超えるか否かの判定を行う。この判定の結果が否定的であれば（Ｓ２０３：ＮＯ）、図８のＳ１０３以降の処理が行われる。この判定の結果が肯定的であれば（Ｓ２０３：ＹＥＳ）、Ｓ２０４に進む。
【０１０９】
Ｓ２０４で、デバイス番号設定部２２５は、マイナー番号が追加可能か否かの判定を行う。具体的には、例えば、デバイス番号設定部２２５は、メジャー空間に使用可能なｍビットがあり、且つ、そのｍビットをマイナー番号空間にシフトすることで、マイナー番号範囲サイズをマックスターゲット２２９及びマックスＬＵ２３１の積以上にすることが可能か否かの判定を行う。この判定の結果が否定的であれば、（Ｓ２０４：ＮＯ）、図８のＳ１０３以降の処理が行われる。この判定の結果が肯定的であれば（Ｓ２０４：ＹＥＳ）、Ｓ２０５に進む。
【０１１０】
Ｓ２０５で、デバイス番号設定部２２５は、デバイス番号フォーマット変更を行う。具体的には、例えば、デバイス番号設定部２２５は、メジャー空間の使用可能なｍビットをマイナー番号空間にシフトする。
【０１１１】
その後、図８のＳ１０３、Ｓ１０４、Ｓ１０５、Ｓ１０６、Ｓ１０８、Ｓ１０９、Ｓ１１０、Ｓ１１１、Ｓ１１３、Ｓ１１４及びＳ１１５にそれぞれ対応したＳ２０６、Ｓ２０７、Ｓ２０８、Ｓ２０９、Ｓ２１１、Ｓ２１２、Ｓ２１３、Ｓ２１４、Ｓ２１５、Ｓ２１６及びＳ２１７が行われる。
【０１１２】
この第二の実施形態によれば、マックスＬＵ２３１及びマックスターゲット２２９の積がデフォルトのマイナー番号範囲サイズを超えても、メジャー空間に使用可能なｍビットがあり、ｍの値によっては、デバイス番号のフォーマットを変更することで、そのマイナー番号範囲サイズをマックスＬＵ２３１及びマックスターゲット２２９の積以上に拡大することができる。これにより、マックスＬＵ２３１及びマックスターゲット２２９の積と同数のデバイスの各々に固有のマイナー番号を割り当て管理することができる。
【０１１３】
以上、本発明の幾つかの好適な実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、ＬＵＮ及びターゲットＩＤのうちの少なくとも一方は、必ずしも０から連続した番号である必要はない。また、例えば、サーバは、ファイルサーバである必要は無く、ストレージシステム４０１にとっての別種の上位装置、例えばホスト計算機であっても良い。ホスト計算機内にアプリケーションプログラムがあって、ホスト計算機内のＯＳが、そのアプリケーションプログラムから、デバイスファイル名或いはデバイス番号を指定した要求を受けても良い。
【図面の簡単な説明】
【０１１４】
【図１】図１Ａは、従来の方法でマイナー番号及びデバイスファイル名が付与された場合のＬＵとマイナー番号及びデバイスファイル名との対応の一例を示す。図１Ｂは、図１ＡにおいてＬＵが追加された場合の、ＬＵとマイナー番号及びデバイスファイル名との対応の一例を示す。
【図２】図２は、本発明の第一の実施形態に係るコンピュータシステムの構成例を示す。
【図３】図３は、サーバソフトウェア２１１の構成例を示す。
【図４】図４Ａは、番号ファイル名管理テーブル２１４の構成例を示す。図４Ｂは、マイナー番号管理テーブル２１３の構成例を示す。図４Ｃは、パーシステントバインディング設定テーブル２１７の構成例を示す。
【図５】図５Ａは、ポート管理テーブル４１０の構成例を示す。図５Ｂは、ＬＵ管理テーブル４０９の構成例を示す。
【図６】図６Ａは、デバイス番号のフォーマットの一例を示す。図６Ｂは、マイナー番号計算式を示す。
【図７】図７Ａは、マックスターゲットとマックスＬＵの積がマイナー番号範囲サイズと同じであるケースにおけるマイナー番号範囲の取り扱いの一例を示す。図７Ｂは、マックスターゲットとマックスＬＵの積がマイナー番号範囲サイズ未満のケースにおけるマイナー番号範囲の取り扱いの一例を示す。図７Ｃは、マックスターゲットとマックスＬＵの積がマイナー番号範囲サイズを超えるケースにおけるマイナー番号範囲の取り扱いの一例を示す。
【図８】図８は、マイナー番号及びデバイスファイル名の決定の処理の流れの一例を示す。
【図９】図９Ａは、本発明の第一の実施形態において、ストレージシステム０のポート（Ｐ００）にＬＵ２が追加される前の、ＬＵとマイナー番号及びデバイスファイル名との対応の一例を示す。図９Ｂは、Ｐ００にＬＵ２が追加された後の、ＬＵとマイナー番号及びデバイスファイル名との対応の一例を示す。
【図１０】図１０は、本発明の第二の実施形態において、マックスターゲットとマックスＬＵの積がマイナー番号範囲サイズを超えるケースでのマイナー番号範囲の取り扱いの一例を示す。
【図１１】図１１は、第二の実施形態での、マイナー番号及びデバイスファイル名の決定の処理の流れの一例を示す。
【符号の説明】
【０１１５】
２１１…サーバソフトウェア  ２２３…サーバＯＳ  ２２５…デバイス番号設定部  ２２７…パーシステントバインディング設定部
【図１】
2008250591.tif 000003
【図２】
2008250591.tif 000004
【図３】
2008250591.tif 000005
【図４】
2008250591.tif 000006
【図５】
2008250591.tif 000007
【図６】
2008250591.tif 000008
【図７】
2008250591.tif 000009
【図８】
2008250591.tif 000010
【図９】
2008250591.tif 000011
【図１０】
2008250591.tif 000012
【図１１】
2008250591.tif 000013