(57)【要約】【課題】コンピュータ機器をネットワーク経由で複数のデバイスに連結した、コンピュータ機器に実装されるデータ構造に複数のデバイスに対応する複数のファイルへの複数の参照が格納される、方法、システム、およびコンピュータプログラムを提供する。【解決手段】分散アプリケーションにデータ構造へのアクセスができるようにして、分散アプリケーションがデータ構造に格納される参照を使ってデバイスに対応するファイルを判定し、分散アプリケーションが判定したファイル経由でデバイスに関するデータ転送操作を行う。【選択図】  図１
2007538327.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ機器に実装されるデータ構造に、複数のデバイスに対応する複数のファイルへの複数の参照を格納するステップであって、コンピュータ機器がネットワーク経由で複数のデバイスに連結される、前記格納するステップと、
分散アプリケーションにデータ構造へのアクセスを提供するステップであって、分散アプリケーションがデータ構造に格納される参照を使ってデバイスに対応するファイルを判定し、分散アプリケーションが判定したファイル経由でデバイスに関するデータ転送操作を行う、前記提供するステップとを有する
方法。
【請求項２】
データ構造がディレクトリであり、ファイルがデバイスファイルであり、参照がデバイスファイルへのソフトリンクである、請求項１の方法。
【請求項３】
データ構造がレジストリであり、レジストリのエントリが参照を含む、請求項１の方法。
【請求項４】
別のコンピュータ機器から、ネットワークに追加される追加デバイスに対応する追加ファイルに対応する追加参照を判定するために使える情報を受け取るステップと、追加参照を含むようにデータ構造を更新するステップとをさらに有する、請求項１、２、又は３の方法。
【請求項５】
ネットワークに追加した追加デバイスを検出するステップと、追加デバイスに対応する追加ファイルに対応する追加参照を判定するステップと、追加参照を含むようにデータ構造を更新するステップとをさらに有する、請求項１、２、又は３の方法。
【請求項６】
ネットワークがストレージエリアネットワークであり、分散アプリケーションが複数のコンピュータ機器経由で複数のデバイスにアクセスできる、請求項１から５のいずれかの方法。
【請求項７】
コンピュータ機器が第１コンピュータ機器であり、データ構造が第１データ構造である方法であって、第２コンピュータ機器に実装される第２データ構造に、複数のデバイスに対応する複数のファイルへの複数の参照のうちの少なくとも１つを格納するステップをさらに有し、第２コンピュータ機器がネットワーク経由で複数のデバイスに連結され、分散アプリケーションが第１および第２データ構造経由で複数のデバイスにアクセスできる、請求項１から６ののいずれかの方法。
【請求項８】
データ構造が複数の異種オペレーティングシステムに実装でき、複数のデバイスが異種混成である、請求項１から７のいずれかの方法。
【請求項９】
データ構造がコンピュータ機器にローカルに実装され、分散アプリケーションが、コンピュータ機器にローカルに実装されるデータ構造にアクセスすることにより、コンピュータ機器からリモートに実装されるデータ構造にアクセスするのに比べて速くデバイスに関するデータ転送操作を開始できる、請求項１から８のいずれかの方法。
【請求項１０】
コンピュータ機器のオペレーティングシステムとドライバが分散アプリケーションに、デバイスに関するデータ転送操作を行う情報へのアクセスを直接提供できない、請求項１の方法。
【請求項１１】
ファイルがデバイスファイルであり、デバイスが仮想記憶デバイスであり、ネットワークがストレージエリアネットワークであり、デバイスファイルがストレージエリアネットワークから仮想記憶デバイスへのパスを表す、請求項１の方法。
【請求項１２】
システムがネットワーク上で複数のデバイスおよび分散アプリケーションと通信できるデータ処理システムであって、前記システムが、
コンピュータ機器と、コンピュータ機器に連結されるメモリと、
コンピュータ機器に実装されるデータ構造に、複数のデバイスに対応する複数のファイルへの複数の参照を格納する操作を制御する手段と、
分散アプリケーションにデータ構造へのアクセスを提供する手段とを有し、
分散アプリケーションがデータ構造に格納される参照を使ってデバイスに対応するファイルを判定し、
分散アプリケーションが判定したファイル経由でデバイスに関するデータ転送操作を行う、
データ処理システム。
【請求項１３】
データ構造がディレクトリであり、ファイルがデバイスファイルであり、参照がデバイスファイルへのソフトリンクである、請求項１２のシステム。
【請求項１４】
データ構造がレジストリであり、レジストリのエントリが参照を含む、請求項１２のシステム。
【請求項１５】
システムがネットワークに追加される別のコンピュータ機器と通信できるシステムであって、別のコンピュータ機器から、追加デバイスに対応する追加ファイルに対応する追加参照を判定するために使える情報を受け取る手段と、追加参照を含むようにデータ構造を更新する手段とをさらに有する、請求項１２のシステム。
【請求項１６】
ネットワークに追加された追加デバイスに応答して、追加デバイスを検出するステップと、追加デバイスに対応する追加ファイルに対応する追加参照を判定するステップと、追加参照を含むようにデータ構造を更新するステップとを行う手段をさらに有する、請求項１２のシステム。
【請求項１７】
ネットワークがストレージエリアネットワークであり、分散アプリケーションが複数のコンピュータ機器経由で複数のデバイスにアクセスできる、請求項１２のシステム。
【請求項１８】
コンピュータ機器が第１コンピュータ機器であり、第２コンピュータ機器がネットワークに連結され、データ構造が第１データ構造であるシステムであって、第２コンピュータ機器に実装される第２データ構造に、複数のデバイスに対応する複数のファイルへの複数の参照の少なくとも１つを格納する手段をさらに有し、第２コンピュータ機器がネットワーク経由で複数のデバイスに連結され、分散アプリケーションが第１および第２データ構造経由で複数のデバイスにアクセスできる、請求項１２のシステム。
【請求項１９】
データ構造が複数の異種オペレーティングシステムに実装でき、複数のデバイスが異種混成である、請求項１２のシステム。
【請求項２０】
データ構造がコンピュータ機器にローカルに実装され、分散アプリケーションが、コンピュータ機器にローカルに実装されるデータ構造にアクセスすることにより、コンピュータ機器からリモートに実装されるデータ構造にアクセスするのに比べて速くデバイスに関するデータ転送操作を開始できる、請求項１２のシステム。
【請求項２１】
コンピュータ機器のオペレーティングシステムとドライバが分散アプリケーションに、デバイスに関するデータ転送操作を行う情報へのアクセスを直接提供できない、請求項１２のシステム。
【請求項２２】
ファイルがデバイスファイルであり、デバイスが仮想記憶デバイスであり、ネットワークがストレージエリアネットワークであり、デバイスファイルがストレージエリアネットワークから仮想記憶デバイスへのパスを表す、請求項１２のシステム。
【請求項２３】
コンピュータ機器に実装されるデータ構造に、複数のデバイスに対応する複数のファイルへの複数の参照を格納する方法ステップと、
分散アプリケーションにデータ構造へのアクセスを提供する方法ステップとを行うコンピュータ機器を制御するために、ネットワークで複数のデバイスに連結されるコンピュータ機器内で実行するコンピュータプログラムであって、
分散アプリケーションがデータ構造に格納される参照を使ってデバイスに対応するファイルを判定し、
分散アプリケーションが判定したファイル経由でデバイスに関するデータ転送操作を行う、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、デバイス情報を格納し、格納した情報へのアクセスを提供する方法、システム、およびコンピュータプログラムに関係する。
【背景技術】
【０００２】
ストレージエリアネットワーク（strage area network：ＳＡＮ）は、複数の記憶デバイスを関連するデータサーバに相互に接続する特別な目的のネットワークである。ある実装では、ＳＡＮは共有記憶デバイスの高速サブネットワークである。記憶デバイスは、複数のディスク、テープ、又はデータを格納するその他記憶媒体を有することができる。
【０００３】
ＳＡＮは、ホストがファイルサーバである場合に、複数のホストを複数の記憶デバイスに連結できる。ある実装では、ＳＡＮはインターネットプロトコル（ＩＰ）ベースのネットワークとは異なるストレージネットワークである。
【０００４】
ＳＡＮはＩＢＭ（Ｒ）ｚ９９０メインフレームなど他のコンピューティングリソースの近傍にクラスタされることがあるが、一部のＳＡＮはＷＡＮのキャリア技術を使ってバックアップと大容量保管のために遠隔地にまで及ぶことがある。ＳＡＮはＩＢＭの光ファイバーベースのEnterpriseSystem Connection（ＥＳＣＯＮ（Ｒ））、ファイバーチャネル技術等の通信技術を使うことができる。ＳＡＮはディスクのミラーリング、バックアップと復元、データの保管と検索、記憶デバイス間のデータの移行、ネットワーク内の様々なサーバ間のデータの共有をサポートできる。一部のＳＡＮはネットワーク接続ストレージ（network-attachedstorage：ＮＡＳ）システムを備えたサブネットワークを組み込むこともできる。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
データを格納し、格納したデータへのアクセスを提供する方法、システム、およびコンピュータプログラムを提供する。複数のデバイスに対応する複数のファイルへの複数の参照を、コンピュータ機器に実装されるデータ構造に格納する。コンピュータ機器はネットワーク経由で複数のデバイスに連結する。分散アプリケーションにデータ構造へのアクセスができるようにし、分散アプリケーションはデータ構造に格納される参照を使ってデバイスに対応するファイルを判定し、また分散アプリケーションは判定したファイル経由でデバイスに関するデータ転送操作を行う。
【課題を解決するための手段】
【０００６】
ある実施例ではデータ構造はディレクトリであり、ファイルはデバイスファイルで、参照はデバイスファイルのソフトリンクである。
【０００７】
ある別の実施例ではデータ構造はレジストリであり、レジストリのエントリが参照を含む。
【０００８】
さらに別の実施例では別のコンピュータ機器から情報を受け取り、その情報を使ってネットワークに追加される追加デバイスに対応する追加ファイルに対応する追加参照を判定できる。データ構造は追加参照を含むように更新される。
【０００９】
別の実施例では、ネットワークに追加した追加デバイスを検出する。追加デバイスに対応する追加ファイルに対応する追加参照を判定する。データ構造は追加参照を含むように更新される。
【００１０】
別の実施例ではネットワークはストレージエリアネットワークであり、分散アプリケーションは複数のコンピュータ機器経由で複数のデバイスにアクセスできる。
【００１１】
さらに別の実施例ではコンピュータ機器は第１コンピュータ機器であり、データ構造は第１データ構造である。第２コンピュータ機器に実装される第２データ構造は、複数のデバイスに対応する複数のファイルへの複数の参照のうちの少なくとも１つを格納し、第２コンピュータ機器はネットワーク経由で複数のデバイスに連結し、また分散アプリケーションは第１および第２データ構造経由で複数のデバイスにアクセスできる。
【００１２】
別の実施例では、データ構造は複数の異種オペレーティングシステムに実装でき、複数のデバイスは異種混成である。
【００１３】
さらに別の実施例では、データ構造はコンピュータ機器にローカルに実装され、分散アプリケーションは、コンピュータ機器からリモートに実装されるデータ構造にアクセスするのに比べ、コンピュータ機器にローカルに実装されるデータ構造にアクセスすることによって、デバイスとのデータ転送操作を高速に開始できる。
【００１４】
別の実施例では、コンピュータ機器のオペレーティングシステムとドライバは、分散アプリケーションにデバイスとのデータ転送操作を行うために情報へのアクセスを直接提供できない。
【００１５】
別の実施例ではファイルはデバイスファイルであり、デバイスは仮想記憶デバイスで、ネットワークはストレージエリアネットワークで、デバイスファイルはストレージエリアネットワークから仮想記憶デバイスへのパスを表す。
【００１６】
発明の実施例を例として添付の図面を参照しながら以下説明する。以下の説明において、本明細書の一部をなし、いくつかの実施例を図示する添付の図面を参照する。図面において同じ参照番号は全体を通し一致する部分を表す。他の実施例も利用でき、構造や操作上の変更を行うことができることは理解される。
【発明を実施するための最良の形態】
【００１７】
図１はある実施例を実装するコンピューティング環境を図示する。複数のホスト１００ａ．．．１００ｎは、ＳＡＮ１０４などのネットワーク上で複数のデバイス１０２ａ．．．１０２ｍに連結される。ある実施例では、ホスト１００ａ．．．１００ｎおよびデバイス１０２ａ．．．１０２ｍに関する操作を行うことができる管理サーバ１０６もＳＡＮ１０４に連結される。
【００１８】
複数のホスト１００ａ．．．１００ｎおよび管理サーバ１０６は、ワークステーション、デスクトップコンピュータ、ラップトップ、メインフレーム、電話機、携帯型コンピュータ、サーバ、ブレードコンピュータ等、あらゆる種類のコンピュータ機器を有することができる。複数のホスト１００ａ．．．１００ｎは複数のデバイスディレクトリ１０８ａ．．．１０８ｎを含むことができ、ある実施例では少なくとも１つのホストが１つのデバイスディレクトリを含む。例えば、ホスト１００ａはデバイスディレクトリ１０８ａを含み、ホスト１００ｂはデバイスディレクトリ１０８ｂを含み、ホスト１００ｎはデバイスディレクトリ１０８ｎを含むことができよう。ある実施例では、デバイスディレクトリ１０８ａ．．．１０８ｎはファイルディレクトリであり、複数のデバイス１０２ａ．．．１０２ｍのうちのひとつ又は複数に対応するデバイスファイルへの参照を含む。ある実施例では、ホスト１００ａ．．．１００ｎは異種混成で、複数のオペレーティングシステムをランすることができる。
【００１９】
デバイス１０２ａ．．．１０２ｍは、ディスクドライブ、テープドライブ、ＣＤＲＯＭドライブ等、業界で周知のあらゆる種類の記憶デバイスを有することができる。デバイス１０２ａ．．．１０２ｍはＳＡＮ１０４経由でホスト１００ａ．．．１００ｎおよび管理サーバ１０６からアクセスできる異種グループの記憶デバイスを有することができる。ある実施例では、複数のデバイス１０２ａ．．．１０２ｍは複数のホスト１００ａ．．．１００ｎの間で共有される。
【００２０】
ＳＡＮ１０４は業界で周知のあらゆるストレージエリアネットワークを有することができる。ある実施例では、ＳＡＮ１０４はインターネット、イントラネット、ＬＡＮ、ＷＡＮ等、業界で周知のあらゆる他のネットワーク（図示せず）に連結できる。
【００２１】
分散アプリケーション１１０は複数のホスト１００ａ．．．１００ｎのうちのひとつ又は複数のホストのソフトウェアエレメントをランし、それと対話できる。分散アプリケーション１１０は複数のホスト１００ａ．．．１００ｎのうちのひとつ又は複数のホストと対話でき、又はそこで実行できる。ある実施例では、分散アプリケーション１１０はＳＡＮ１０４内の複数のホストおよびデバイスを利用するあらゆるＳＡＮアプリケーションを含むことができる。分散アプリケーション１１０は災害復旧アプリケーション、データ交換アプリケーション、データボールティング（datavaulding）アプリケーション、データ保護アプリケーション等を含むことができる。
【００２２】
分散アプリケーション１１０は複数の異種デバイス１０２ａ．．．１０２ｍおよびホスト１００ａ．．．１００ｎ内の異種ホストオペレーティングシステムと対話しなければならないことがあるため、分散アプリケーション１１０はＳＡＮ１０４でデバイス１０２ａ．．．１０２ｍの使用の管理又は許可を、ホストオペレーティングシステム、クラスタマネージャ、論理ボリュームマネージャ等に直接依存できないことがある。加えて、デバイス１０２ａ．．．１０２ｍをホスト１００ａ．．．１００ｎ間で共有する場合、ホストオペレーティングシステム、クラスタマネージャ等がデバイス１０２ａ．．．１０２ｍを管理するのに必要な情報をもたないことがある。さらに、アプリケーションのベンダーがホストオペレーティングシステム、ホストバスアダプタドライバ、又は記憶デバイスドライバのすべての組合せに合わせてカスタマイズしたエンジニアサポートを行うのは負担が大きいであろう。そのため、能力不足のために、またホストオペレーティングシステム、ホストバスアダプタドライバ、記憶デバイスドライバ等の複数の組合せに合わせてカスタマイズしたサポートの作成に伴う費用のために、デバイス１０２ａ．．．１０２ｍの管理がホストオペレーティングシステム、クラスタマネージャ、論理ボリュームマネージャ等を介してできないことがある。
【００２３】
図１は、デバイスディレクトリ１０８ａ．．．１０８ｎが分散アプリケーション１１０からアクセスできる場合に、デバイス１０２ａ．．．１０２ｍに関係する情報をデバイスディレクトリ１０８ａ．．．１０８ｎに格納する実施例を図示する。さらに、デバイスディレクトリ１０８ａ．．．１０８ｎは、デバイスディレクトリがオペレーティングシステム中立で、デバイス関連の情報を分散アプリケーション１１０とインターフェースするのに適した形態で格納するように実装される。ある実施例は、ホスト１００ａ．．．１００ｎおよびデバイス１０２ａ．．．１０２ｍをクラスタに分割したコンピューティング環境に実装できる。分散アプリケーション１１０はクラスタベースのオペレーティングシステム上でランし、デバイス１０２ａ．．．１０２ｍにアクセスするためにデバイスディレクトリ１０８ａ．．．１０８ｎを利用できる。
【００２４】
図２はホスト２００のブロック図を示し、ホスト２００はホスト１００ａ．．．１００ｎのどれかを表す。ホスト２００はシステムソフトウェア２０２、デバイスディレクトリ２０４を含み、分散アプリケーション１１０と対話できるが、ある実施例では、分散アプリケーション１１０はひとつ又は複数のホスト１００ａ．．．１００ｎに実装されることもある。ホスト２００に含まれるシステムソフトウェア２０２はホスト２００のオペレーティングシステム、ホスト２００でランする様々なドライバ、ホスト２００でランするクラスタマネージャ、ホスト２００でランする論理ボリュームマネージャ等を含むことができる。デバイスディレクトリ２０４はデバイスディレクトリ１０８ａ．．．１０８ｎのどれを表してもよい。例えば、ある実施例では、ホスト２００がホスト１００ａを表すとき、デバイスディレクトリ２０４はデバイスディレクトリ１０８ａを表す。
【００２５】
デバイスディレクトリ２０４は複数のファイルリンク２０６ａ．．．２０６ｐを含み、デバイスファイルリンク２０６ａ．．．２０６ｐはデバイス１０２ａ．．．１０２ｍに対応するデバイスファイルへの参照であり、分散アプリケーション１１０がデバイスファイルを使って、デバイスファイルに対応するデバイスに関するデータ転送操作を行うことができる。例えば、ある実施例では、「ｘ」と名づけたデバイスファイルがデバイス１０２ｍに対応するとき、デバイスファイルリンク２０６ａはデバイスファイル「ｘ」へのソフトリンクとなろう。ソフトリンクはＳＡＮ１０４におけるデバイスファイル「ｘ」の位置を示すことができる。例えば、ソフトリンクは「／ｄｅｖ／ｈｏｍｅ／ｘ」と表すことができ、その場合「ｘ」と名づけたファイルは「ｄｅｖ」の「ｈｏｍｅ」ディレクトリに格納され、「ｄｅｖ」はコンピュータ機器１００ａ．．．１００ｎ、管理サーバ１０６、デバイス１０２ａ．．．１０２ｍ、又はＳＡＮ１０４に連結されるファイル「ｘ」を格納できるあらゆる他のエレメントのいずれをも含むことができる。ある実施例では、デバイスファイルはホスト１００ａ．．．１００ｎなどのホストに存在し、ＳＡＮ１０４から記憶デバイス１０２ａ．．．１０２ｎなどの記憶デバイスへのパス又はパス候補のセットを識別し、記憶デバイスはストレージサーバがサービスを提供する仮想ディスクを含むことができる。あるオペレーティングシステムでは、デバイスファイルでアプリケーションはデバイスファイルを開く、読み込む、あるいは書き込むことによって対応するデバイスを使用させることができる。例えば、デバイスファイルに書き込むことによって、分散アプリケーション１１０などのアプリケーションはドライバおよびＳＡＮ１０４経由で記憶デバイス１０２ａ．．．１０２ｍに書き込む。アプリケーションは、対応するデバイスファイルに対して操作を実行することによって、デバイスのＳＡＮアドレスなど、デバイスに関するある情報を取得することもできる。ある実施例では、デバイスファイルへのリンクは、実際のデバイスファイルの代わりに、ファイルがデバイスファイルのプロキシとして機能するオペレーティングシステム機能である。アプリケーションはリンクを開くことができ、リンクが指すデバイスファイルで操作と同様に、リンクで操作を行うことができる。アプリケーションはまたリンクが指すデバイスファイルがどれかを判定するようオペレーティングシステムに要求を出すこともできる。
【００２６】
ある実施例では、デバイスディレクトリ２０４はデバイスファイルリンク２０６ａ．．．２０６ｐを含むファイルディレクトリである。別の実施例では、デバイスディレクトリ２０４はデバイス１０２ａ．．．１０２ｍに関する情報への参照を格納できればどのようなデータ構造でもよい。ある実施例では、デバイスファイルリンクを特定のデバイスと対応付ける識別子など、追加フィールドをデバイスディレクトリ２０４に含める。
【００２７】
ある実施例では、分散アプリケーション１１０は、デバイスディレクトリ２０４に格納されたデバイスファイルリンク２０６ａ．．．２０６ｐ経由でデバイス１０２ａ．．．１０２ｍに対応するデバイスファイルにアクセスすることによって、デバイス１０２ａ．．．１０２ｍに関し、Ｉ／Ｏ操作など、データ転送操作を行う。ある実施例では、分散アプリケーション１１０がデバイスファイルリンクの使用を試みる前に、デバイスディレクトリ２０４を作成して、デバイスファイルリンク２０６ａ．．．２０６ｐに配置する。デバイスディレクトリ２０４はホスト２００にローカルに格納されるため、分散アプリケーション１１０は、デバイス１０２ａ．．．１０２ｍへの参照がホスト２００でローカルに利用できない実装と比べ、デバイス１０２ａ．．．１０２ｍに関するデータ転送操作を速く開始できる。デバイス１０２ａ．．．１０２ｍがデバイスディレクトリ２０４にローカルに格納されない場合、ＳＡＮ１０４のデバイスの数が増えるにつれて、デバイス１０２ａ．．．１０２ｍを探すのにかかる時間は大幅に増えるであろう。さらに、ＳＡＮ１０４内の冗長パスの数が増えると、探し出すべきデバイスファイルの数も増え、その結果デバイス１０２ａ．．．１０２ｍを探すのにかかる時間が増える。
【００２８】
加えて、ある実施例では、デバイスディレクトリ２０４はオペレーティングシステム中立であり、すなわちデバイスディレクトリは複数のオペレーティングシステムのファイルシステムに格納できる。デバイスディレクトリ２０４がオペレーティングシステム中立である場合、ホスト１００ａ．．．１００ｎが異種オペレーティングシステムをもつ実施例では、分散アプリケーション１１０はデバイスディレクトリ２０４にアクセスできる。
【００２９】
図３は、ある実施例に従い、分散アプリケーション１１０がデバイスディレクトリ２０４を使用して、ＳＡＮ１０４内の複数のデバイスにアクセスする方法を示すブロック図を示す。
【００３０】
分散アプリケーション１１０はデバイスに関しデータ転送操作を行う必要があることがある。ある実施例では、分散アプリケーション１１０はホスト２００内のデバイスディレクトリ２０４経由でデバイスファイルリンク２０６ａ．．．２０６ｐにアクセスする。ある実施例では、デバイスファイルリンク２００ａ．．．２００ｐは、デバイス１０２ａ．．．１０２ｐに対応するデバイスファイル３００ａ．．．３００ｐを参照できる。ある実施例では、デバイス１０２ａ．．．１０２ｐは図１に示すデバイス１０２ａ．．．１０２ｍのサブセットのことがある。例えば、デバイスファイルリンク２０６ａはデバイスファイル３００ａを参照し、デバイスファイルリンク２０６ｐはデバイスファイル３００ｐを参照できる。ある実施例では、デバイスファイル３００ａ．．．３００ｐはＳＡＮ１０４から記憶デバイスへの特定の個々のパス、又は記憶デバイス１０２ａ．．．１０２ｐへのパスの選択肢のいずれかを表すことがある。ある実施例では、記憶デバイス１０２ａ．．．１０２ｐは、ＩＢＭ  EnterpriseStorage Server（Ｒ）などのストレージサーバがサービスを提供する仮想記憶デバイスを含むことができる。
【００３１】
ある実施例では、分散アプリケーション１１０はデバイスファイルリンク２０６ａ．．．２０６ｐなどのデバイスファイルリンクを判定する。分散アプリケーション１１０はデバイスファイル３００ａ、３００ｐに関して、開く３０２ａ、３０４ａ、閉じる３０２ｂ、３０４ｂ、更新３０２ｃ、３０４ｃ、読み出す（図示せず）、書き込む（図示せず）、添付（図示せず）等の様々な操作を行うことができる。例えば、分散アプリケーション１１０はデバイスファイルリンク２０６ａを使って、デバイス１０２ａに関するデータ転送操作を開始するためにデバイスファイル３００ａを開く３０２ａことができる。
【００３２】
そのため、図３は、デバイスディレクトリ２０４を使うことによって、分散アプリケーション１１０がＳＡＮ１０４のデバイス１０２ａ．．．１０２ｐにアクセスする実施例を図示する。
【００３３】
図４は、本発明のある実施例に従い、デバイスディレクトリ２０４を生成し、デバイスディレクトリ２０４を使ってＳＡＮ１０４内のデバイスに関するＩ／Ｏ操作を行う操作を図示する。図４に説明する操作は図１に図示するコンピューティング環境に実装できる。
【００３４】
制御はブロック４００から始まり、ホスト２００などのホストにデバイスディレクトリ２０４を作成する。デバイスディレクトリ２０４はデバイスディレクトリ１０８ａ．．．１０８ｎのいずれをも表すことができ、ホスト２００は対応するホスト１００ａ．．．１００ｎを表すことができる。ホスト内のデバイスディレクトリ２０４の作成は、ホスト又は管理サーバ１０６で行うことができる。ある実施例では、分散アプリケーション１１０がデバイスディレクトリ２０４を作成できる。
【００３５】
デバイスディレクトリ２０４をデバイスファイルリンク２０６ａ．．．２０６ｐなどのデバイスファイルリンクに配置又は更新する必要があるかどうかの判定を行う（ブロック４０２）。例えば、デバイスディレクトリ２０４が空であるか、又はホスト２００内のプロセスがデバイスディレクトリ２０４に存在しないデバイスへのアクセスを要求する場合、デバイスディレクトリ２０４を配置又は更新する必要があるだろう。ある実施例では、デバイス検出を行う必要がある場合、又は他のホストもしくは管理サーバ１０６がデバイスディレクトリ２０４に更新を含むメッセージの送信を開始する場合、デバイスディレクトリ２０４は定期的に配置又は更新する必要があるだろう。デバイスディレクトリを配置又は更新する必要がある場合、デバイスディレクトリ２０４は、ブロック４０４ａ、４０４ｂ、４０４ｃのひとつ又は複数のブロックで説明される操作を実行した後、ブロック４０６で説明される操作を実行することによって配置又は更新できる。ある実施例では、デバイスディレクトリ２０４を更新又は配置する必要があるかの判定を行うまで、プロセスは４０２で待機する。
【００３６】
ある実施例では、ホスト２００内で実行する分散アプリケーション１１０は管理サーバ１０６からデバイスディレクトリ２０４を配置又は更新するメッセージを受け取る（ブロック４０４ａ）。ホスト２００内で実行する分散アプリケーション１１０はＳＡＮ１０４の問題のひとつ又は複数のデバイス１０２ａ．．．１０２ｍを検出することもできる（ブロック４０４ｂ）。ホスト２００内で実行する分散アプリケーション１１０は、ＳＡＮ１０４内の他のホストからデバイスディレクトリ２０４を配置又は更新するひとつ又は複数のメッセージを受け取ることもできる（ブロック４０４ｃ）。例えば、ある実施例では、分散アプリケーション１１０を実行するホスト１００ａはホスト１００ｂからデバイスディレクトリ１０８ａを配置又は更新するメッセージを受け取ることができる。ホスト１００ａが受け取ったメッセージには、受取側のホスト１００ａが対応する問題のデバイスを見つけられる情報を含むことができる。例えば、情報にはデバイスのワールドワイドポートネーム（WorldWide Port Name）が含まれ、受取側のホスト１００ａはストレージドライバに対応付けるデバイスのワールドワイドポートネームを使って、問題のデバイスファイルを見つけることができる。その結果、受取側のホスト１００ａのデバイスディレクトリ１０８ａに対応するデバイスファイルへのリンクが作成できる。
【００３７】
分散アプリケーション１１０は、ブロック４０４ａ、４０４ｂ、４０４ｃで受け取ったメッセージ又は行ったデバイス検出に基づいて、対応するデバイスのデバイスファイルリンクにデバイスディレクトリ２０４を配置又は更新できる（ブロック４０６）。例えば、ある実施例では、分散アプリケーション１１０は、デバイス１００ａ．．．１００ｐに対応するデバイスファイル３００ａ．．．３００ｐを参照するデバイスファイルリンク２０６ａ．．．２０６ｐにデバイスディレクトリ２０４を配置又は更新できる。そのため、ある実施例では、デバイスディレクトリ２０４の配置および更新は分散アプリケーション１１０で行うことができる。ある別の実施例では、分散アプリケーション１１０とは異なるアプリケーションがデバイスディレクトリを配置又は更新できる。
【００３８】
分散アプリケーション１１０は、選択したデバイスに関し操作を行うかどうかを判定する（ブロック４０８）。行うなら、分散アプリケーション１１０はデバイスディレクトリ２０４から選択したデバイスに対応するデバイスファイルにアクセスすることによって選択したデバイスに関する操作を行い（ブロック４１０）、制御はデバイスディレクトリ２０４を配置又は更新するブロック４０２に戻る。例えば、ある実施例では、分散アプリケーション１１０は、デバイスディレクトリ２０４のデバイスファイルリンク２０６ｐを使って、デバイス１０２ｐに対応するデバイスファイル３０４ｐで開く３０４ａを行うことができる。
【００３９】
分散アプリケーション１１０が選択したデバイスに関し操作を何も行わないと判定したら（ブロック４０８）、制御はデバイスディレクトリ２０４を配置又は更新するブロック４０２に戻る。ある実施例では、ブロック４０２、４０４ａ、４０４ｂ、４０４ｃ、４０６、４０８、および４１０で説明するプロセスはホスト２００で繰返し実行できる。別の実施例では、ホスト２００の異常、エラー状態、シャットダウン、又は再起動が図４に説明するプロセスを終了させることができる。
【００４０】
そのため、図４はデバイス１００ａ．．．１００ｐに対応するデバイスファイル３００ａ．．．３００ｐへの参照を含むデバイスディレクトリ２０４を作成、配置、および更新する実施例を示す。デバイスディレクトリ２０４が存在するホストは、デバイスディレクトリ２０４を使って分散アプリケーション１１０にデバイス１００ａ．．．１００ｐに関する操作を行わせる。デバイスディレクトリ２０４はホスト２００内にローカルに格納されるため、分散アプリケーション１１０は、デバイスへの参照がホスト２００からリモートに位置する実装に比べて速くデバイスにアクセスできる。そのため、ある実施例では、ホストオペレーティングシステムなどのシステムソフトウェア２０２がデバイスファイルを管理するかもしれないが、分散アプリケーションがデバイスディレクトリ２０４を管理する。
【００４１】
図５は、ある実施例に従い、ＳＡＮ１０４内のデバイス１０２ａ．．．１０２ｍに関しＩ／Ｏ操作を行うために、分散アプリケーション１１０にデバイスディレクトリ２０４を使わせる、ホスト２００などのホストに実装される操作を図示する。
【００４２】
制御はブロック５００から始まり、コンピュータ機器２００がコンピュータ機器２００に実装されるデータ構造２０４に、複数のデバイス１００ａ．．．１００ｐに対応する複数のファイル３００ａ．．．３００ｐへの複数の参照２０６ａ．．．２０６ｐを格納し、コンピュータ機器２００がネットワーク１０４経由で複数のデバイス１００ａ．．．１００ｐに連結される。
【００４３】
コンピュータ機器２００は分散アプリケーション１１０にデータ構造２０４へアクセスできるようにし（ブロック５０２）、分散アプリケーション１１０がデータ構造２０４に格納される参照を使ってデバイスに対応するファイルを判定し、分散アプリケーション１１０は判定したファイル経由でデバイスに関するデータ転送操作を行う。
【００４４】
そのため、図５はホスト２００などのコンピュータ機器が、データ転送操作を行うために分散アプリケーション１１０にデバイスディレクトリ２０４を使わせる方法を図示する。
【００４５】
ある実施例では、ＳＡＮのデバイスに関する知識はホスト内にローカルにキャッシュされる結果、アドミニストレーター又は分散アプリケーション１１０は候補又は使用済みのデバイスに素早くアクセスし、可視できる。ある実施例では、指定されたディレクトリをＳＡＮ環境の複数のホスト全体で分散アプリケーションが共有するデバイスを管理するプラットフォーム独立、ベンダー独立の技術として使用し、指定されたディレクトリをホストにローカルに格納することによって、適切なデバイスのためにスキャンする時間と複雑さが減る。指定されたディレクトリは、ホストが必須操作を行っていないときにデバイスへの参照で更新でき、ここでいう必須操作とはできる限りすぐに完了するべき操作である。ある実施例では、分散アプリケーション１１０はデバイスディレクトリ１０８ａ．．．１０８ｎに情報をキャッシュし、キャッシュした情報は分散アプリケーション１１０又は他のアプリケーションがアクセスできるデバイス又はすでに使用しているデバイスに関係付けられる。ある実施例では、デバイスディレクトリ１０８ａ．．．１０８ｎの位置は分散アプリケーション１１０が指定できる。別のある実施例では、汎用デバイスファイルを格納するために、どの記憶デバイスベンダーもどのホストシステムソフトウェアもデバイスディレクトリを使用しない。ある別の実施例では、アドミニストレーターは管理サーバ１０６を使って、デバイスディレクトリ１０８ａ．．．１０８ｎを手動で構成できる。管理サーバ１０６で自動化スクリプトをランして、デバイスディレクトリ１０８ａ．．．１０８ｎを構成することもできる。加えて、別の実施例では、管理サーバ１０６に加えて、ホスト１００ａ．．．１００ｎで管理を行うこともできる。例えば、アドミニストレーターは選択したホストにログオンして、分散アプリケーション１１０が使うデバイスディレクトリ２０４に新たなリンクを追加し、選択したホストで分散アプリケーション１１０が使えるデバイスを分散アプリケーション１１０に示すことができよう。
【００４６】
ある実施例では、分散アプリケーション１１０は必須操作中デバイス１０２ａ．．．１０２ｍのスキャンに必要な時間を短縮できるようになされる。ある別の実施例では、ホスト１００ａ．．．１００ｎ、分散アプリケーション１１０、又は管理サーバ１０６は、必須操作を処理していないときに、ＳＡＮ１０４内のデバイスをスキャンすることによってデバイスディレクトリ１０８ａ．．．１０８ｎを作成、配置、又は更新できる。
【００４７】
ある実施例では、分散アプリケーション１１０は一般的な方法でデバイス１０２ａ．．．１０２ｍと対話する。ある別の実施例では、分散アプリケーション１１０は、分散アプリケーションが設計、テスト、又は文書化された時点で利用できなかったデバイス１０２ａ．．．１０２ｍを使えるようにすることができる。別の実施例では、分散アプリケーション１１０が図１から図５に説明するもの以外の追加の操作を使って、デバイスを位置づけることができる。例えば、分散アプリケーション１１０は他のデバイスの位置を探す、又はあるベンダーのデバイスもしくはドライバを使用もしくは選好するようにカスタマイズする、又はホストのオペレーティングシステムと対話してデータ転送用のデバイスを判定することができる。ある実施例では、システムソフトウェア２０２を使わずにデバイスディレクトリを使用するために、デバイス１０２ａ．．．１０２ｍにラベル付けをする。複数のホスト１００ａ．．．１００ｎの各ホストに存在するシステムソフトウェアは異なることがあるため、各ホストのシステムソフトウェアがデバイス１０２ａ．．．１０２ｍにラベル付けを行うと矛盾が生じたり、分散アプリケーション１１０によるデバイス１０２ａ．．．１０２ｎの使用を妨げることがある。
【００４８】
説明した技術は、ソフトウェア、ファームウェア、マイクロコード、ハードウェア、又はそのあらゆる組合せに関わる方法、装置、又は製造物として実装できる。ここで使う「製造物」という用語は、回路素子（例、集積回路チップ、プログラマブルゲートアレイ（ProgramableGate Array：ＰＧＡ）、ＡＳＩＣ等）又はコンピュータ読取可能媒体（例、ハードディスクドライブ、フレキシブルディスク、テープなどの磁気記憶媒体）もしくはその両方、光学記憶デバイス（例、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光ディスク等）、揮発性および不揮発性のメモリデバイス（例、電気的消去可能プログラム可能読み出し専用メモリ（ＥＥＰＲＯＭ）、読み出し専用メモリ（ＲＯＭ）、プログラム可能読み出し専用メモリ（ＰＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、フラッシュ、ファームウェア、プログラム可能ロジック等）に実装されるプログラム命令、コード又はロジックもしくはそれらの組み合わせをいう。コンピュータ読取可能媒体に実装されるコードはプロセッサなどのマシンでアクセス、実行できる。ある実施例では、実施例が実装されるコードはさらに、伝送媒体を介して、又はネットワーク経由でファイルサーバからアクセスできる。このような場合、コードを実装する製造物は、ネットワーク伝送路、ワイヤレス伝送媒体、空間、電波、赤外線信号等を伝播する信号などの伝送媒体を有することができる。当然ながら、当業者には実施例の範囲を逸脱することなく数多くの変更を行うことができ、製造物が業界で周知のあらゆる情報伝達媒体を有することができることは認識されるであろう。例えば、製造物は、マシンが実行すれば操作が行われるという結果をもたらす命令を格納した記憶媒体を有する。
【００４９】
図６は、ある実施例を実装できるコンピュータアーキテクチャ６００のブロック図を示す。ある実施例では、ホスト１００ａ．．．１００ｎおよび管理サーバ１０６をコンピュータアーキテクチャ６００に従い実装できる。コンピュータアーキテクチャ６００はプロセッサ又は回路素子６０２、メモリ６０４（例、揮発性メモリデバイス）、ストレージ６０６を含むことができる。コンピュータアーキテクチャ６００の一部のエレメントはホスト１００ａ．．．１００ｎおよび管理サーバ１０６内にあってもよいし、なくてもよい。ストレージ６０６は、不揮発性メモリデバイス（例、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、フラッシュ、ファームウェア、プログラム可能ロジック等）、磁気ディスクドライブ、光ディスクドライブ、テープディスクドライブ等を含むことができる。ストレージ６０６は内部記憶デバイス、外付け記憶デバイス、又はネットワークアクセス可能記憶デバイスもしくはそれらの組み合わせを有することができる。ストレージ６０６内のプログラムはメモリ６０４にロードして、プロセッサ６０２で実行できる。ある実施例では、回路素子６０２はメモリ６０４と通信接続することができ、回路素子６０２が操作を実行できる。さらに、アーキテクチャは、ストレージエリアネットワーク１０４などのネットワークとの通信を可能にするネットワークカード６０８を含むことができる。アーキテクチャは、キーボード、タッチスクリーン、ペン、音声入力等の少なくとも１つの入力デバイス６１０と、ディスプレイ装置、スピーカー、プリンター等の少なくとも１つの出力デバイス６１２を含むこともできる。
【００５０】
図４および図５の操作の少なくとも一部は平行でも連続でも行うことができる。別の実施例では、操作の一部は別の順番で行ってもよく、あるいは変更又は省略してもよい。
【００５１】
また、ソフトウェアおよびハードウェアのコンポーネントの多くを例示のために個々のモジュールで説明してきた。当該コンポーネントはより少数のコンポーネントに統合したり、より多くの数のコンポーネントに分割してもよい。加えて、具体的なコンポーネントで行うように説明したある操作は別のコンポーネントで行ってもよい。
【００５２】
図１から図６に示された、又は参照されたデータ構造およびコンポーネントは特定の種類の情報をもつように説明している。別の実施例では、データ構造およびコンポーネントはこれとは違う構造にしてもよく、また図に示す又は参照するものよりも少数、多数、もしくは別のフィールドや別の機能をもってもよい。
【００５３】
そのため、前述の実施例の説明は例示および説明のために提示してきた。すべてを網羅する意図も、また実施例を開示したそのままの形態に限定する意図もない。上記教唆に鑑みて数多くの変更や変型が可能である。
【００５４】
ＩＢＭ、ＥＳＣＯＮ、およびEnterprise Storage Seerverは、ＩＢＭ Corporationの登録商標又は商標である。
【図面の簡単な説明】
【００５５】
【図１】ある実施例に従うコンピューティング環境のブロック図である。
【図２】ある実施例に従うデバイスディレクトリを含むホストのブロック図である。
【図３】ある実施例に従い、分散アプリケーションがデバイスディレクトリを使ってＳＡＮ内の複数のデバイスにアクセスする方法を示すブロック図である。
【図４】ある実施例に従い、デバイスディレクトリを生成し、デバイスディレクトリを使ってＳＡＮ内のデバイスに関し入出力（Ｉ／Ｏ）操作を行う操作を示す図である。
【図５】ある実施例に従い、ＳＡＮ内のデバイスに関しＩ／Ｏ操作を行うデバイスディレクトリを分散アプリケーションが使えるようにするためにホストに実装する操作を示す図である。
【図６】ある実施例を実装するコンピューティングアーキテクチャを示す図である。
【図１】
2007538327.tif 000003
【図２】
2007538327.tif 000004
【図３】
2007538327.tif 000005
【図４】
2007538327.tif 000006
【図５】
2007538327.tif 000007
【図６】
2007538327.tif 000008
【国際調査報告】
2007538327.tif 000009
2007538327.tif 000010
2007538327.tif 000011