(57)【要約】      （修正有）【課題】ポ−トがＳＣＳＩ−ＯＳＤ可能なストレージサブシステム上でＦＣ−ＳＣＳＩプロトコルの使用を可能にする。【解決手段】装置、システム、および方法は、同じポートとストレージサブシステム上でＳＣＳＩオブジェクトベースのストレージデバイス（ＯＳＤ）コマンドをファイバチャネル（ＦＣ）ＳＣＳＩコマンドと区別することによってストレージシステムへのアクセスを可能にする。ストレージサブシステムは対応するコマンドからストレージプロトコルを特定する能力を有し、従って対応するストレージプロトコルの使用のためにフォーマッティングされたストレージデバイスに対するコマンドを処理する。ストレージサブシステムはいくつかの専用のコマンドポートから単一の物理ポートにデータをまとめることが可能で、また、単一のストレージシステムが複数の異なるストレージプロトコルフォーマットでデータを保存しアクセスすることを可能にする。【選択図】図１
2007141216.tif 000002
【特許請求の範囲】
【請求項１】
ストレージシステムにおいて、ＳＣＳＩ−ＯＳＤとＦＣ−ＳＣＳＩプロトコルの両方を使用したデータの保存を可能にする方法において、
ホストからコマンド記述ブロック（ＣＤＢ）を含むコマンドを受信するステップと、
前記のＣＤＢがＳＣＳＩ−ＯＳＤオペレーションコードとＳＣＳＩ−ＯＳＤサービスアクションコードを含むかを決定するステップと、
から成り、
もしも前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードの両方を含むと、論理ユニットは前記のＳＣＳＩ−ＯＳＤプロトコルを使用したデータの保存のために用意された論理ユニットのリストから選択され、
もしも前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードの両方は含まないと、論理ユニットは前記のＦＣ−ＳＣＳＩプロトコルを使用したデータの保存のために用意された論理ユニットのリストから選択されることを特徴とする方法。
【請求項２】
前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードを含むかを決定する前に、前記のコマンドがＳＣＳＩベースのプロトコルまたはカウントキーデータ（ＣＫＤ）のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
もしも前記のヘッダの前記のタイプフィールドがＳＣＳＩプロトコルコマンドに対するコードを含まないことが決定されると、前記のヘッダの前記のタイプフィールドがＣＫＤコマンドに対するコードを含むかを決定するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
もしも前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードの両方は含まないと、前記のコマンドを処理し応答するＦＣ−ＳＣＳＩモジュールと、およびもしも前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードの両方を含むと、前記のコマンドを処理し応答するＳＣＳＩ−ＯＳＤモジュールとを提供するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記のコマンドを実行するために必要に応じて選択された論理ユニット上の論理デバイスをアクセスするためにロジカルデバイスマネジャを提供するステップをさらに含むことを特徴とする請求項４に記載の方法。
【請求項６】
もしも前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードの両方は含まないと、前記のコマンドを処理し応答するＦＣ−ＳＣＳＩモジュールと、およびもしも前記のＣＤＢが前記のＳＣＳＩ−ＯＳＤオペレーションコードと前記のＳＣＳＩ−ＯＳＤサービスアクションコードの両方を含むと、前記のコマンドを処理し応答するＳＣＳＩ−ＯＳＤモジュールとを提供するステップをさらに含むことを特徴とする請求項２に記載の方法。
【請求項７】
前記のコマンドを実行するために必要に応じて選択された論理ユニット上の論理デバイスをアクセスするためにロジカルデバイスマネジャを提供するステップをさらに含むことを特徴とする請求項６に記載の方法。
【請求項８】
ＦＣ−ＳＣＳＩプロトコルに従ってデータを保存するための一つ以上の第一の論理ユニット（ＬＵ）と、ＳＣＳＩ−ＯＳＤプロトコルに従ってデータを保存するための一つ以上の第二のＬＵとを有するストレージシステムをアクセスする方法において、
ホストからコマンドヘッダ内のＬＵ番号（ＬＵＮ）を受信するステップと、
前記のＬＵＮがＳＣＳＩ−ＯＳＤプロトコルグループに属するか、またはＦＣ−ＳＣＳＩプロトコルグループに属するかを保存された情報から決定するステップと、
もしも前記のＬＵＮが前記のＳＣＳＩ−ＯＳＤプロトコルグループに属すると、ＳＣＳＩ−ＯＳＤコマンドとしてコマンドを処理するステップと、
もしも前記のＬＵＮが前記のＦＣ−ＳＣＳＩプロトコルグループに属すると、ＦＣ−ＳＣＳＩコマンドとしてコマンドを処理するステップと、
から成ることを特徴とする方法。
【請求項９】
前記のＬＵＮがＳＣＳＩ−ＯＳＤプロトコルグループに属するか、またはＦＣ−ＳＣＳＩプロトコルグループに属するかを保存された情報から決定する前記のステップが、前記のプロトコルグループと前記のＬＵＮに関するマッピング情報を含むメモリ内に保存されたテーブルを調査するステップを含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記のＬＵＮがＳＣＳＩ−ＯＳＤプロトコルグループに属するか、またはＦＣ−ＳＣＳＩプロトコルグループに属するかを決定する前に、前記のコマンドがＳＣＳＩベースのプロトコルまたはカウントキーデータ（ＣＫＤ）のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項８に記載の方法。
【請求項１１】
もしも前記のＬＵＮが前記のＦＣ−ＳＣＳＩグループに属すると、前記のコマンドを処理し応答するＦＣ−ＳＣＳＩモジュールと、およびもしも前記のＬＵＮが前記のＳＣＳＩ−ＯＳＤグループに属すると、前記のコマンドを処理し応答するＳＣＳＩ−ＯＳＤモジュールとを提供するステップをさらに含むこと特徴とする請求項８に記載の方法。
【請求項１２】
選択された論理ユニット上の論理デバイスをアクセスするためにロジカルデバイスマネジャを提供するステップをさらに含むことを特徴とする請求項１１に記載の方法。
【請求項１３】
もしも前記のＬＵＮが前記のＦＣ−ＳＣＳＩグループに属すると、前記のコマンドを処理し応答するＦＣ−ＳＣＳＩモジュールと、およびもしも前記のＬＵＮが前記のＳＣＳＩ−ＯＳＤグループに属すると、前記のコマンドを処理し応答するＳＣＳＩ−ＯＳＤモジュールとを提供するステップをさらに含むこと特徴とする請求項１０に記載の方法。
【請求項１４】
ＦＣ−ＳＣＳＩプロトコルに従ってデータを保存するための一つ以上の第一の論理ユニット（ＬＵ）と、ＳＣＳＩ−ＯＳＤプロトコルに従ってデータを保存するための一つ以上の第二のＬＵとを有するストレージシステムをアクセスする方法において、
ホストからコマンド内のＬＵ番号（ＬＵＮ）を受信するステップと、
前記のＬＵＮがＳＣＳＩ−ＯＳＤプロトコルグループに属するか、またはＦＣ−ＳＣＳＩプロトコルグループに属するかを決定するステップと、
から成り、
もしも前記のＬＵＮが前記のＦＣ−ＳＣＳＩプロトコルグループに属すると、前記のＬＵはＦＣ−ＳＣＳＩプロトコルに対して用意された論理ユニットのグループから選択され、
もしも前記のＬＵＮが前記のＳＣＳＩ−ＯＳＤプロトコルグループに属すると、前記のホストから前記のコマンド内のコマンド記述ブロック（ＣＤＢ）を取得するステップと、および前記のＣＤＢがＳＣＳＩ−ＯＳＤオペレーションコードとＳＣＳＩ−ＯＳＤサービスアクションコードを含むかを決定するステップとを実行し、
もしも前記のＣＤＢが前記のオペレーションコードと前記のサービスアクションコードの両方を含むと、論理ユニット（ＬＵ）はＳＣＳＩ−ＯＳＤオペレーションに対して用意された論理ユニットのリストから選択されることを特徴とする方法。
【請求項１５】
もしも前記のＣＤＢが前記のオペレーションコードと前記のサービスアクションコードの両方は含まないと、前記のＬＵＮによって特定された前記のＬＵに対するモード設定は、前記の選択されたＬＵがＦＣ−ＳＣＳＩコマンドによってアクセスされることを許可されたかを決定するためにチェックされることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記の選択されたＬＵからデータをバックアップするステップをさらに含み、前記のＬＵが前記のＳＣＳＩ−ＯＳＤプロトコルに対してフォーマッティングされ、前記のコマンドが前記のＦＣ−ＳＣＳＩプロトコルを使用するコマンドであること特徴とする請求項１５に記載の方法。
【請求項１７】
もしも前記のモード設定が、前記の選択されたＬＵがＦＣ−ＳＣＳＩコマンドによってアクセスされることを許可されてないことを示すと、エラーメッセージが前記のホストに返されるステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記のＬＵＮがＳＣＳＩ−ＯＳＤプロトコルグループに属するか、またはＦＣ−ＳＣＳＩプロトコルグループに属するかを決定する前に、前記のコマンドがＳＣＳＩベースのプロトコルまたはカウントキーデータ（ＣＫＤ）のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記のＬＵＮがＳＣＳＩ−ＯＳＤプロトコルグループに属するか、またはＦＣ−ＳＣＳＩプロトコルグループに属するかを決定する前に、前記のコマンドがＳＣＳＩベースのプロトコルまたはカウントキーデータ（ＣＫＤ）のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項１４に記載の方法。
【請求項２０】
複数のデータアクセスプロトコルを取り扱うストレージシステムにおいて、
少なくとも一つのホストコンピュータに接続されたＩ／Ｏインタフェースを含むストレージコントローラと、
前記のストレージコントローラと接続された第一のストレージボリュームと、
前記のストレージコントローラと接続された第二のストレージボリュームと、
を備え、
前記のストレージコントローラが第一のデータアクセスプロトコルに従って前記のホストコンピュータから前記のＩ／Ｏインタフェース経由で第一のＩ／Ｏ要求を受信する時に、前記のストレージシステムが前記の第一のストレージボリュームをアクセスし、
前記のストレージコントローラが第二のデータアクセスプロトコルに従って前記のＩ／Ｏインタフェース経由で第二のＩ／Ｏ要求を受信する時に、前記のストレージシステムが前記の第二のストレージボリュームをアクセスすることを特徴とするストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は一般的にはストレージサブシステムをアクセスすることに関係し、より詳細には、複数のプロトコルアクセス可能なオブジェクトベースのストレージデバイスのストレージシステムに関係する。
【背景技術】
【０００２】
０００２    近年、ストレージシステムとファイバチャネルベースのストレージエリアネットワーク（ＦＣ−ＳＡＮ）に対するファイバチャネル（ＦＣ）接続性はストレージ産業においてより普通になってきた。ファイバチャネルは米国規格協会（ＡＮＳＩ）の標準として採用され、これはサーバ、ディスクアレイ、およびバックアップデバイスを接続する高速ＳＡＮのために本来、意図されたものである。最初のファイバチャネルプロトコルは、１００Ｍｂ／ｓで動作し、ＡＮＳＩ標準委員会によって１９９４年に承認された。より最近の革新の下に、ＦＣ−ＳＡＮの速度は１０Ｇｂ／ｓ、およびそれ以上に拡大した。多くのネットワークアーキテクチャがファイバチャネルで可能であり、その中で一つの良く知られたやり方は一つまたは二つ（冗長性のため）の中央ファイバチャネルスイッチに接続されたいくつかのデバイスを含み、ホストとサーバがディスクストレージアレイ、テープライブラリ、等を共有することを可能にする信頼できる下部構造を生成する。
【０００３】
０００３    現在のストレージサブシステムは、ＡＮＳＩ  ＦＣＰ−３（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｒｏｔｏｃｏｌ  ３）に対する接続能力を含む。（例えば、Ｔｈｅ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｃｏｍｍｉｔｔｅｅ  ｆｏｒ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｓｔａｎｄａｒｄｓ（ＩＮＣＩＴＳ）  Ｔ１０，Ｐｒｏｊｅｃｔ  １５６０−Ｄ，Ｒｅｖｉｓｉｏｎ  ３ｇ、http://www.t10.org/ftp/t10/drafts/fcp3/fcp3r03g.pdf、ここより以降は、“ＡＮＳＩ  ＦＣＰ−３”、を参照のこと）現在のストレージシステムは、ＲＡＩＤテクノロジを使用してデータを保存し保護することが可能であり、ＣＩＦＳ、ＮＦＳ、ＦＣ−ＳＣＳＩ、およびＦＩＣＯＮ（ｒ）（メインフレームコンピュータでの使用のためにＩＢＭによって開発された専有のファイバ接続プロトコル）のようなさまざまな他のプロトコルも経由してデータのストレージに備える。これらのさまざまなデータアクセスプロトコルはストレージシステムで機能するための異なる調整を必要とする。例えば、ＦＣ−ＳＣＳＩプロトコルはストレージにＦＢＡ（ｆｉｘｅｄ  ｂｌｏｃｋ  ａｒｃｈｉｔｅｃｔｕｒｅ）フォーマットを使用し、一方で、ＦＩＣＯＮ（ｒ）プロトコルはストレージシステムとメインフレームの間コミュニケーションに一般的に使用されるＣＫＤ（カウントキーデータ）フォーマットを使用する。Ｋｉｔａｍｕｒａその他の米国特許ＮＯ６，４９９，０５６は、この開示内容はここに参照によって組み込まれるが、ＦＢＡインタフェースとＣＫＤインタフェースの両方を含むストレージシステムを開示する。
【０００４】
０００４    ＦＣ−ＳＣＳＩプロトコルに使用されたＦＢＡフォーマットにおいて、データは“ブロック”として知られる特定の領域内に保存される。ブロックのそれぞれは典型的には５１２バイトのような固定長を有する。論理ブロックアドレス（ＬＢＡ）は各ブロックに割り当てられ、ＬＢＡはブロック内のデータをアクセスする時に使用される。反対に、ＣＫＤフォーマットにおいて、ＦＩＣＯＮ（Ｒ）プロトコルにおいて使用されるように、シリンダ番号（ＣＣ）、ヘッド番号（ＨＨ）、およびレコード番号（Ｒ）がアクセスを可能にするために関連するレコードに割り当てられる。従って、ＣＫＤフォーマットを使用してアクセスされることができるデータの最小量はレコード全体である。
【０００５】
０００５    さらに、ストレージシステムに接続された複数の外部ストレージシステムは、あたかも複数のストレージシステムが1つのストレージシステムのソフトウエアツールによって管理される、共通のストレージプール内の単に追加の内部ストレージのように、ユーザに提供される。この外部ストレージシステムは性能、可用性、回復性、およびコストの属性をベースにしたクラスにグループ分けされることが可能であるが、しかしデータ移動と複製に対するソフトウエアあるいはホストベースのソフトウエアに関する限り、内部ストレージに機能的に等しい。
【０００６】
０００６    また、近年、ＳＣＳＩオブジェクトベースのストレージデバイスコマンドはＡＮＳＩとＩＮＣＩＴＳによって標準化されてきた。オブジェクトベースのストレージデバイス（ＯＳＤ）で使用するためのＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｉｎｔｅｒｆａｃｅ）コマンドセットは可変サイズのデータストレージ“オブジェクト”の割り当て、配置、アクセスを管理する入力／出力論理ユニットの有効なオペレーションに備える。現在のＯＳＤアーキテクチャは伝統的なブロックでもファイルでもなく、データとデータの属性で構成されたオブジェクトとしてストレージを扱う。例えば、オブジェクトは、オブジェクトを仕立て上げるデータに関する属性情報と共に、一つのファイルの一部分、多くのファイル、または多くのファイルの複数の部分である場合がある。ＯＳＤはオブジェクトの内容を典型的には知っており、ブロック割り当てのようなデバイス管理のより低いレベルの詳細を取り扱うことができる（参照、例えば、米国規格協会標準“ＡＮＳＩ  ＩＮＣＩＴＳ  ４００−２００４”（http://www.ansi.org）および“ＳＣＳＩ  Ｏｂｊｅｃｔ−Ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅ  Ｃｏｍｍａｎｄｓ−２（ＯＳＤ−２）”（http://www.t10.org/ftp/t10/drafts/osd2/osd2r00.pdf）ここより以降は“ＯＳＤ−２”）。ＯＳＤの仕様によると、ＯＳＤはＳＣＳＩ仕様をベースにしたＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤを特定するデータに対するアクセス方法を提供し、これはＳＣＳＩ−ＯＳＤフォーマットと呼ばれる場合がある。以下では、“ＯＳＤ”はＳＣＳＩ−ＯＳＤを指す。
【０００７】
【特許文献１】米国特許第６，４９９，０５６号
【発明の開示】
【発明が解決しようとする課題】
【０００８】
０００７    一般的に、ＳＣＳＩ−ＯＳＤ可能な（すなわち、一つ以上のオブジェクトベースのボリュームを提供する）ストレージサブシステム上のいくつかのストレージまたはデータのアクセスプロトコルをアクセスするために、各データアクセスプロトコルに別のストレージサブシステムを提供する必要がある。例えば、ホストがＳＣＳＩ−ＯＳＤボリュームへのアクセスを要求する時に、ストレージサブシステムはホストに対してＳＣＳＩ−ＯＳＤストレージサブシステムを用意する。ホストが、ＳＣＳＩ−ＯＳＤストレージサブシステム上でファイバチャネルを通して論理ブロックアドレスを提供するＦＣ−ＳＣＳＩベースのボリュームへのアクセスを要求する時に、ストレージサブシステムにはＦＣ−ＳＣＳＩベース（ＬＢＡ）のボリュームを提供する能力はなく、ＦＣ−ＳＣＳＩフォーマットのデータを保存するために新しいストレージサブシステムを用意することが必要になる。これは時間を消費し、非能率である。さらに、従来のストレージシステムとネットワークは単一のポートにおいてＳＣＳＩ−ＯＳＤプロトコルとＦＣ−ＳＣＳＩプロトコルを共有する何らの方法も提供しない。
【課題を解決するための手段】
【０００９】
０００８    本発明の目的は、ポートがＳＣＳＩ−ＯＳＤ可能なストレージサブシステム上でＦＣ−ＳＣＳＩプロトコル、または他のデータアクセスプロトコルの使用を可能にする能力を提供される方法と装置を提供することである。
【００１０】
０００９    本発明の他の目的は各実行可能な論理ユニット（ＬＵ）上においてＦＣ−ＳＣＳＩとＳＣＳＩ−ＯＳＤのコマンドを実行する方法と装置を提供することである。
【００１１】
００１０    上記に述べられた目的を達成するための処理手順の一つの例は、ホストから目標の周辺装置に発行され、実行されるべきオペレーションとそのオペレーションに関連するパラメータを含むＣＤＢ（Ｃｏｍｍａｎｄ  Ｄｅｓｃｒｉｐｔｏｒ  Ｂｌｏｃｋ、コマンド記述ブロック）を受信するＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタが提供されることを含む。セレクタは、ＣＤＢ内のＯＰＥＲＡＴＩＯＮ  ＣＯＤＥがＳＣＳＩ−ＯＳＤを特定するコードであるかどうか、およびＳＣＳＩ−ＯＳＤのサービスアクションコードが規定された範囲の間で使用されるかどうかをチェックする。もしもそうならば、セレクタはフォーマットがＳＣＳＩ−ＯＳＤであることを決定し、ＳＣＳＩ−ＯＳＤストレージに対するＬＵのリストから論理ユニット（ＬＵ）を選択し、セレクタはＳＣＳＩ−ＯＳＤオペレータとしてＣＤＢを実行する。もしもセレクタが、ＣＤＢはＳＣＳＩ−ＯＳＤフォーマット内にないと決定すると、セレクタはＦＣ−ＳＣＳＩに対するＬＵのリストからＬＵを選択し、セレクタはＦＣ−ＳＣＳＩオペレータとしてＣＤＢを実行する。
【００１２】
００１１    本発明のいろいろな他の目的、特徴、および利点は、好適な実施例の次の詳細な説明を考慮することで、この技術に通常程度に精通した人達に明確になる。
【発明を実施するための最良の形態】
【００１３】
００３２    本発明の次の詳細な説明において、開示内容の一部分を形成する添付の図面が参照され、および本発明が実施される特定の実施例が図示によって示されるが、限定されることはない。図面において、同じ参照番号はいくつかの図を通して実質的に同様な構成部分を示す。
【００１４】
００３３    次の内容は、オブジェクトベースのアクセス可能なボリュームをアクセスするためのＩ／Ｆを含むＳＣＳＩ−ＯＳＤストレージサブシステム上で、論理ブロックアドレス（ＬＢＡ）ボリュームをアクセスするためのＩ／ＦであるＦＣ−ＳＣＳＩＩ／Ｆ、および他のプロトコルのＩ／Ｆを提供することを実現するための本発明の実施例を説明する。第一の実施例はＣＤＢによってＳＣＳＩ−ＯＳＤまたはＦＣ−ＳＣＳＩフレームを選択する方に指向している。これは、ストレージサブシステムが、ＣＫＤオペレーションと同じく、各専用の論理ユニット（ＬＵ）に対してＳＣＳＩ−ＯＳＤとＦＣ−ＳＣＳＩオペレーションを処理する能力を有するポートを提供可能であるという利点を有する。第二の実施例は同じ利点を有するが、しかしＦＣフレームによってＳＣＳＩ−ＯＳＤまたはＦＣ−ＳＣＳＩを選択する方に指向している。
【００１５】
第一の実施例
（１）物理構成
００３４    図１は本発明の第一の実施例によるシステムの物理構成の例を示す。システムは一つ以上のＰＣベースのホスト１０（図１のホスト１と２）、一つ以上のメインフレームホスト２０（図１のホスト３）、ホストとコミュニケーションを行うストレージサブシステム４０、およびストレージサブシステム４０を管理するための管理コンソール４００を含む。各ホスト１０はＷｉｎｄｏｗｓ（Ｒ）ベースのＰＣサーバまたはＵｎｉｘ（Ｒ）サーバのような一般的なサーバであることができる。ホスト１０はＣＰＵ３２、メモリ３３、およびホストバスアダプタ（ＨＢＡ）のようなファイバチャネルベースのネットワークインタフェース（Ｉ／Ｆ）１１を含む。ホスト１０はまたＬＡＮ（示されていない）を経由して他のホストとコミュニケーションを行うためのＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）（示されていない）を有することができ、オペレーティングシステム（ＯＳ）データ、ユーザデータ、等を保存するために使用されるローカルストレージ（また、示されていない）を含むことができる。
【００１６】
００３５    ホスト２０はＩＢＭＺシリーズメインフレームのような一般的なメインフレームホストであることができる。ホスト２０はＣＰＵ３４、メモリ３５、およびＦＩＣＯＮ（ｒ）（Ｒ）ベースのＨＢＡのようなネットワークＩ／Ｆ２１を含む。ホスト２０はまた他のホストとコミュニケーションを行うためのＮＩＣ（示されていない）を有することができ、ＯＳデータ、ユーザデータ、等を保存するためのローカルストレージ（また、示されていない）を含むことができる。
【００１７】
００３６    ストレージサブシステム４０はＲＡＩＤテクノロジベースのストレージサブシステムであることが望ましい。ストレージサブシステム４０は物理ディスク４１とコントローラ４５を含む。コントローラ４５はＣＰＵ３６、メモリ３７、スイッチ／ハブ３０に接続するネットワークインタフェース（Ｉ／Ｆ）２８、および一つ以上の物理ディスク４１に接続するディスクインタフェース２９を含む。この技術において知られているように、メモリ３７はディスク４１から読まれるか、またはディスク４１に書かれるデータをキャッシングするためのキャッシュメモリを含むことができ、またさらに、停電、キャッシュ障害等の場合にデータ損失を避けるために、バッテリバックアップを有する冗長性不揮発ＲＡＭ部分、および二重の冗長性コントローラを有するキャッシュミラーを含むことができる。  従って、複数のコントローラ４５がストレージサブシステム４０内に含まれることができる。
【００１８】
００３７    スイッチ／ハブ３０はホスト１０、２０からストレージサブシステム４０へ接続するための能力を提供する。スイッチ／ハブ３０はＦＣ−ＳＣＳＩプロトコルまたはＦＩＣＯＮ（Ｒ）プロトコルの場合にファイバチャネルスイッチとして物理的に実施可能である。ｉＳＣＳＩ（インターネットＳＣＳＩ）の場合に、スイッチ／ハブ３０はＥｔｈｅｒｎｅｔ（Ｒ）スイッチとして物理的に実施可能である。システムはまた、ｉｎｆｉｎｉＢａｎｄ（Ｒ）、Ｔｏｋｅｎ  Ｒｉｎｇ（Ｒ）、ＦＤＤＩ、ワイヤレスＬＡＮ（すなわち、ＩＥＥＥ８０２：１１Ａ／Ｂ／Ｇにおいて定義されるようなＷｉＦｉ（Ｒ））、等を含む、他のタイプの接続によって実現可能である。
【００１９】
００３８    ストレージシステム管理コンソール４００はまたストレージサブシステム４０を管理するために提供されることができ、Ｗｉｎｄｏｗｓ（Ｒ）ベースのＰＣサーバまたはＵｎｉｘ（Ｒ）サーバのような一般的なサーバであることができる。コンソール４００は有効なデータコミュニケーションを確実にするためにＴＣＰ／ＩＰプロトコルを動作させるＥｔｈｅｒｎｅｔ（Ｒ）プロトコルを使用するＮＩＣ４０１を有することが望ましい。第二のスイッチ／ハブ４１０はＮＩＣ４１２を経由してストレージサブシステム４０にコンソール４００を接続する能力を提供する。スイッチ／ハブ４１０はＥｔｈｅｒｎｅｔ（Ｒ）スイッチとして物理的に実施されることが望ましい。しかし、ｉｎｆｉｎｉＢａｎｄ（Ｒ）、Ｔｏｋｅｎ  Ｒｉｎｇ（Ｒ）、ＦＤＤＩ、ワイヤレスＬＡＮ等を含む他のタイプの接続を実施することもできる。コンソール４００はまたＣＰＵ４１３とメモリ４１４を含み、オペレーティングシステム、ユーザ情報等を保存するためのローカルストレージ（示されていない）を含むことができる。コンソール４００はＬＡＮ４１１を経由してコントローラ４５に接続され、ストレージサブシステム４０を管理するためのＧＵＩの能力を有する。
【００２０】
（２）論理構成
００３９    図２は第一の実施例によるシステムの論理構成の例を示す。システムは、ストレージエリアネットワーク（ＳＡＮ）３１を経由してストレージサブシステム４０とコミュニケーションを行う、ＰＣベースのホスト１０のハードウエアを使用するＦＣ−ＳＣＳＩイニシエータ１２、これもＰＣベースのホスト１０のハードウエアを使用するＳＣＳＩ−ＯＳＤイニシエータ１５、およびメインフレームベースのホスト２０のハードウエアを使用するカウントキーデータ（ＣＫＤ）イニシエータ２２を含む。
【００２１】
００４０    ＦＣ−ＳＣＳＩイニシエータホスト１２はＩ／Ｆ１１としてファイバチャネルＨＢＡ（ＦＣ−ＨＢＡ）１３を含み、データベース管理システム（ＤＢＭＳ）、ファイルシステム、等であるアプリケーション１４を含む。ＦＣ−ＳＣＳＩイニシエータホストはまたＷｉｎｄｏｗｓ（Ｒ）またはＵｎｉｘ（Ｒ）のようなオペレーティングシステム（ＯＳ）（示されていない）、およびＦＣ−ＨＢＡ１３と他の周辺装置に対するデバイスドライバ（示されていない）を動作させる。ホストがＳＡＮ３１に接続するためにＥｔｈｅｒｎｅｔ（Ｒ）を使用する時に、ホストは、ＦＣ−ＨＢＡ１３よりもむしろ、Ｉ／Ｆ１１に対するソフトウエアベースのｉＳＣＳＩデバイスドライバでｉＳＣＳＩＨＢＡまたは標準ＮＩＣカードを使用する場合がある。
【００２２】
００４１    ＳＣＳＩ−ＯＳＤイニシエータホスト１５はＩ／Ｆ１１としてＦＣ−ＨＢＡ１３を含み、ＤＢＭＳ、ファイルシステム等のようなＳＣＳＩ−ＯＳＤアクセス可能なアプリケーション１７を含むことが望ましい。ＦＣ−ＳＣＳＩイニシエータホスト１２のように、ＳＣＳＩ−ＯＳＤイニシエータホスト１５はまたＷｉｎｄｏｗｓ（Ｒ）またはＵｎｉｘ（Ｒ）のようなオペレーティングシステム（ＯＳ）（示されていない）、およびＦＣ−ＨＢＡ１３と他の任意の周辺装置に対するデバイスドライバ（示されていない）を動作させる。ホストがＳＡＮ３１に接続するためにＥｔｈｅｒｎｅｔ（Ｒ）を使用する時に、ホストは、ＦＣ−ＨＢＡ１３よりもむしろ、Ｉ／Ｆ１１としてソフトウエアベースのＳＣＳＩ−ＯＳＤ可能なｉＳＣＳＩデバイスドライバでＳＣＳＩ−ＯＳＤ可能なｉＳＣＳＩＨＢＡまたは標準ＮＩＣカードを使用する場合がある。
【００２３】
００４２    ＣＫＤイニシエータホスト２２はメインフレームホスト２０のハードウエアを使用し、Ｉ／Ｆ２１として、チャネル側にＮ＿ＰＯＲＴ（ｎｏｄｅ  ｐｏｒｔ）を提供可能なＦＩＣＯＮ（Ｒ）Ｉ／Ｆ２３を含む。ＣＫＤイニシエータホスト２２はまたＤＢＭＳ等のようなＣＫＤアクセス可能なアプリケーション２４を含む。ホスト２２はまたＩＢＭ  Ｚ−ＯＳのようなＯＳ（示されていない）、およびＦＩＣＯＮ（Ｒ）Ｉ／Ｆ２３を制御するためのデバイスドライバを有する。ホストがＳＡＮ３１に接続するためにＥｔｈｅｒｎｅｔ（Ｒ）を使用する時に、ホスト２２はＩ／Ｆ２１としてイーサネット（Ｒ）ベースのＣＫＤ可能なＩ／Ｆを使用する場合がある。
【００２４】
００４３    ＳＡＮ３１はストレージサブシステム４０、ホスト１２、１５、２２の間のコミュニケーションを可能にするために、ストレージサブシステム４０にと同じく、ホスト１２、１５、２２にも接続される。ＳＡＮ接続は、ストレージサブシステム４０への接続に依存して、ファイバチャネルスイッチ３０によるかまたはＥｔｈｅｒｎｅｔ（Ｒ）接続によって実現可能である。
【００２５】
００４４    ストレージサブシステム４０はコントローラ４５と論理ボリューム４２、４３、４４を含む。一般的に、一つ以上の論理デバイス（ＬＤＥＶ）３９が物理ディスク４１から生成される。次にＬＤＥＶは望みの容量の論理ボリュームを生成するために分割されるかまたは連結される場合がある。論理ユニット番号（ＬＵＮ）が論理ボリュームに割り当てられている時に、論理ボリュームはまた論理ユニットと呼ばれる場合がある。一般的に、ＬＵＮは各論理ボリュームに割り当てられ、各ＬＤＥＶはＦＣプロトコルを使用するためにポートにマッピングされる。ＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）は、多数のＩＴ標準の設定および維持に責任がある世界的な組織であるＩＥＥＥ（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）、によって定義されたフォーマットに従って、ポートとＳＡＮの他の構成部分に割り当てられる。ＷＷＮを割り当てる各企業はそれらの製品のＷＷＮを使用するためのユニークなコードを取得するためにＩＥＥＥに登録する必要がある。
【００２６】
００４５    コントローラ４５上のポート５２は一つ以上の物理Ｉ／Ｆ２８によって実施される論理ポートであり、ホスト１２、１５、および２２に対していくつかのプロトコルへのアクセス能力を提供する。その様なアクセス能力を提供するために、コントローラ４５はいくつかのモジュールに対するマイクロコードを含む。モジュールはポート５２、仮想ポートセレクタ５１、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０、およびＦＣ−ＳＣＳＩモジュール４７、ＳＣＳＩ−ＯＳＤモジュール４８、ＣＫＤモジュール４９のような、各プロトコルを処理するためのモジュールを含む。他のモジュールは論理デバイス（ＬＤＥＶ）マネジャ４６（これは後でより詳細に説明される）、パリティグループマネジャ（示されていない）、およびＬＤＥＶとのコミュニケーションのための物理Ｉ／Ｆ２９として実施されるポート５３を含む。モジュールは以下により詳細にそれぞれ説明される。
【００２７】
００４６    ポート５２はＳＡＮ３１を通してのホストからのアクセスに対して少なくとも一つのワールドワイドネーム（ＷＷＮ）を有する。図３はポート５２にＷＷＮを関連付けるための典型的なテーブル５４の例を示す。テーブル５４はポート番号１０１とポートに割り当てられたＷＷＮ１０２を含む。テーブル５４の値は典型的には固定の値としてハードウエアベンダから提供される。しかし、テーブル５４は管理コンソール４００を経由して管理者によって修正される場合があり、これは後で説明される。
【００２８】
００４７    仮想ポートセレクタ５１はＦＣ−ＰＨ（Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ  Ｐｈｙｓｉｃａｌ  ａｎｄ  ｓｉｇｎａｌｉｎｇ  ｉｎｔｅｒｆａｃｅ）プロトコルを実行し、ＣＤＢ（Ｃｏｍｍａｎｄ  Ｄｅｓｃｒｉｐｔｏｒ  Ｂｌｏｃｋ、コマンド記述ブロック）に対してＳＣＳＩとＣＫＤプロトコルの間で区別することによってポート５２上の適切なプロトコルを選択する。仮想ポートセレクタ５１に関する処理手順の詳細は以下により詳細に論じられる。
【００２９】
００４８    ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は、ＣＤＢがＦＣ−ＳＣＳＩフォーマットに対するものか、またはＳＣＳＩ−ＯＳＤオペレーションコードをベースにしているかを区別する。ＳＣＳＩ−ＯＳＤの仕様によると、８８００ｈから８Ｆ７ＦｈのＳＣＳＩ−ＯＳＤのサービスアクションコードが使用される時に、ＳＣＳＩ−ＯＳＤオペレーションコードは基本のＳＣＳＩ−ＯＳＤのＣＤＢ上のバイト０内に７Ｆｈとして定義される。ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０に対する処理手順の詳細は以下でさらに議論される。ＬＵを選択するために、セレクタ５０は各プロトコルグループに利用可能なＬＵのリストをアクセス可能である必要がある。マイクロコードは、図４のテーブル１１０内に示されるように、ＬＵに対するプロトコルグループのマッピングを有する。マッピングは、各論理デバイス（ＬＤＥＶ）にアクセスするために使用されるプロトコルグループ１１１、各プロトコル内のアドレススペース１１２、例えば、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤフォーマット内のＬＵＮ、またはＣＫＤフォーマット内のコントロールユニット：コントロールユニットイメージ（ＣＵ：ＣＵＩ）、およびＬＤＥＶを特定しそこにデータを保存するためのＬＤＥＶ番号１１３を特定する。プロトコルグループ１１１は各ＬＤＥＶに対してＦＣ−ＳＣＳＩ、ＳＣＳＩ−ＯＳＤ、ＣＫＤ等のようなプロトコルを割り当てる。ＬＤＥＶに対するＬＵＮは各プロトコルグループにおいてユニークであり、コンソール４００を経由して管理者によって定義される。
【００３０】
００４９    ＦＣ−ＳＣＳＩモジュール４７は、ＣＤＢ（Ｃｏｍｍａｎｄ  Ｄｅｓｃｒｉｐｔｏｒ  Ｂｌｏｃｋ）をベースにしたＬＢＡフォーマットを使用するデバイスの場合にＳＣＳＩに対するファイバチャネルのためのＡＮＳＩ標準をベースにしたＬＵに対するＦＣ−ＳＣＳＩ基本コマンドとＳＣＳＩブロックコマンドにおいて定義されるＦＣ−ＳＣＳＩコマンドセットを処理する。例えば、ＦＣ−ＳＣＳＩモジュール４７は論理ブロックアドレス（ＬＢＡ）と転送長によって特定されるＬＵ上でＲＥＡＤとＷＲＩＴＥコマンドを処理する。ＦＣ−ＳＣＳＩモジュール４７はまたＦＯＲＭＡＴ、ＩＮＱＵＩＲＹ、等のような他のコマンドを処理することができる。
【００３１】
００５０    ＳＣＳＩ−ＯＳＤモジュール４８はＡＮＳＩオブジェクトベースのストレージデバイスコマンド（ＳＣＳＩ−ＯＳＤ）仕様内において定義されるＳＣＳＩ−ＯＳＤコマンドセットを処理する。例えば、ＳＣＳＩ−ＯＳＤモジュール４８はパーティション内のユーザオブジェクトに対するＣＲＥＡＴＥ、ＲＥＡＤ、およびＷＲＩＴＥオペレーションを処理する。ＯＳＤはＬＵに対するコマンドを処理する。しかし、ＳＣＳＩ−ＯＳＤはアクセス識別子としてＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤを使用するので、そのようなコマンドに対するオペレーションはＦＣ−ＳＣＳＩコマンドセットとは異なる。従って、ＳＣＳＩ−ＯＳＤモジュール４８はＯＳＤとしての使用に対する特別のＬＵを必要とする。
【００３２】
００５１    ＳＣＳＩ−ＯＳＤのＬＵはＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤ、およびＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤと保存セグメントの間のマッピングを提供する。パーティションはセキュリティグループ内において管理するための一セットのユーザオブジェクトを含み、ＳＣＳＩ−ＯＳＤ内のＰＡＲＴＩＴＩＯＮ＿ＩＤによって管理される。ＳＣＳＩ−ＯＳＤホストはユーザオブジェクトに対するセキュリティグループを作成するためにＰＡＲＴＩＴＩＯＮ＿ＩＤを特定しなければならない。
【００３３】
００５２    ユーザオブジェクトはＳＣＳＩ−ＯＳＤストレージサブシステム内にデータ保存するためのデータセットの単位であり、そのオブジェクトに対するＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤによって管理される。ＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤはＣＲＥＡＴＥコマンドオペレーションを使用することによってユーザまたはシステムによって各オブジェクトに対して生成される。もしもＣＲＥＡＴＥコマンドがＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤとして０を有するならば、ＳＣＳＩ−ＯＳＤモジュールはパーティション内の生成されたＩＤを返す。例えば、ＳＣＳＩ−ＯＳＤモジュールは各ＬＵに対して割り当て済および未割り当てＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤを管理する。ＰＡＲＴＩＴＩＯＮ＿ＩＤによって定義されたパーティション内の未割り当てＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤはＳＣＳＩ−ＯＳＤフォーマットの使用のためにＬＵの生成で生成される。ＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤに対する番号付けは１００００ｈから開始される。ＣＲＥＡＴＥコマンドが受信された時に、ＳＣＳＩ−ＯＳＤモジュール４８はＩＤ番号を返し、ＰＡＲＴＩＴＩＯＮ＿ＩＤ内の次の割り当て可能なＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤに対するポインタを増やす。
【００３４】
００５３    ホストが生成されたＬＵをアクセスする時に、ＳＣＳＩ−ＯＳＤモジュール４８は、ＰＡＲＴＩＴＩＯＮ＿ＩＤ内のＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤと保存セグメントとの間のマッピングを管理する必要がある。図５において、典型的なテーブル１３０はＰＡＲＴＩＴＩＯＮ＿ＩＤ内のＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤと割り当て済セグメントとの間の関係を管理するために示される。テーブル１３０はＳＣＳＩ−ＯＳＤプロトコル内のＬＵ番号１３１、ＰＡＲＴＩＴＩＯＮ＿ＩＤ１３２、ＯＳＤ仕様内のＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤに対応するＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤ１３３、オブジェクト内のデータに対する長さ１３４、およびセグメントプールからの割り当て済セグメント１３５を含む。セグメントはＬＤＥＶ上の論理ブロックアドレス（ＬＢＡ）ブロックの集合体である。ＬＤＥＶ上のＬＢＡはある一定のサイズによって分割される。例として、この開示内容は分割されたサイズとして８ＫＢ（８１９２バイト）を使用する。各分割されたＬＢＡはセグメントとして使用される。各セグメントはセグメントを識別するための番号を有する。各セグメント番号に対するＬＢＡの計算は次のようである：
ＬＢＡ  ＝  セグメント番号  ｘ  ８１９２バイト／５１２バイト
００５４    ＳＣＳＩ−ＯＳＤのＬＵの生成の際に、ＳＣＳＩ−ＯＳＤモジュール４８はセグメントプールを生成する。図６は典型的なプール１２０を示す。プールは、図４のテーブル１１０内のプロトコルグループ１１１から決定されるＳＣＳＩ−ＯＳＤプロトコルグループ内のＬＵ１２１と、未割り当てセグメント１２２から成る。ＳＣＳＩ−ＯＳＤのＬＵの最初の生成の際に、ＳＣＳＩ−ＯＳＤモジュール４８は未割り当てセグメントの列１２２内へ生成されたセグメントの全てを配置する。
【００３５】
００５５    ＳＣＳＩ−ＯＳＤモジュール４８を通してのＳＣＳＩ−ＯＳＤのＬＵ４３へのホストアクセスに関して、他の主要なアクセスコマンドはＲＥＡＤとＷＲＩＴＥコマンドである。ＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤを指定するＷＲＩＴＥコマンドがホストから受信される時に、ＳＣＳＩ−ＯＳＤモジュールは図５のテーブル１３０内の一致するＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤの存在をチェックする。もしもエントリがないと、モジュールはエラーを返す。もしも一致するエントリがあると、モジュールはバイト３６からバイト３７のＷＲＩＴＥ  ＣＤＢ内の長さをチェックし、指定された長さのサイズを含むことが可能なセグメントをセグメントプール１２２から割り当て、ＳＣＳＩ−ＯＳＤグループのＬＵ上の適切な論理ユニットに対して図５のテーブル１３０の列１３５にこれらを加える。例えば、もしも長さが１５３６０バイトを示し、セグメントサイズが８ＫＢであると、割り当てられるセグメントの数は２である。ＳＣＳＩ−ＯＳＤモジュールはセグメントプール１２２からセグメント２０、２１のような二つのセグメントを集める。テーブル１３０の割り当て済セグメントの列１３５内のセグメント番号の順序はＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤに対するアドレスの順序である。次にＳＣＳＩ−ＯＳＤモジュール４８はＳＣＳＩ  ＷＲＩＴＥコマンド経由でセグメント上にデータを書き込み、もしもＳＣＳＩ−ＯＳＤ  ＷＲＩＴＥオペレーションが成功であると、ＳＣＳＩセンスコードによってＷＲＩＴＥコマンドの成功を返す。
【００３６】
００５６    ＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤを指定するＲＥＡＤコマンドが受信された時に、ＳＣＳＩ−ＯＳＤモジュール４８は図５上のテーブル１３０内の指定されたＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤの存在をチェックする。例えば、もしもエントリがないと、モジュールはエラーを返す。もしもエントリがあると、ＳＣＳＩ−ＯＳＤモジュール４８はテーブル１３０から取り出された割り当て済セグメント番号をベースに割り当て済セグメントからデータを読み出す。従って、ＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤを使用して、ホストからのアプリケーションはＲＥＡＤとＷＲＩＴＥコマンドを使用してオブジェクトベースのフォーマットでデータを読み出しおよび書き込み可能である。
【００３７】
００５７    ＣＫＤモジュール４９はＦＩＣＯＮ（Ｒ）プロトコルを処理し、ＬＤＥＶにカウントキーデータ（ＣＫＤ）フォーマットとしてデータを保存する。ＦＩＣＯＮ（Ｒ）プロトコルに関して、ＡＮＳＩ  ＦＣ−ＳＢ仕様内に単一バイトコマンドコードセット（Ｓｉｎｇｌｅ  Ｂｙｔｅ  Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｓｅｔｓ（ＳＢＣＣＳ））として標準文書がある。ＣＫＤモジュールが仮想ポートセレクタ５１によって選択されると、ポート５２はＮ＿ＰＯＲＴとして動作し、データアクセスに対してコントロールユニット（Ｃｏｎｔｒｏｌ  Ｕｎｉｔ（ＣＵ））とコントロールユニットイメージ（Ｃｏｎｔｒｏｌ  Ｕｎｉｔ  Ｉｍａｇｅ（ＣＵＩ））を提供する。ＦＣプロトコル内のＮ＿ＰＯＲＴはポイントツーポイントリンクを経由して単一Ｎ＿ＰＯＲＴか単一Ｆ＿ＰＯＲＴ（ｆａｂｒｉｃ  ｐｏｒｔ）のいずれかに接続する“ノード”ポートである。Ｎ＿ＰＯＲＴは接続されたシステムへのおよび接続されたシステムからのメッセージユニットの生成、検出および流れを取り扱う。Ｎ＿ＰＯＲＴはファブリックを通しての仮想のポイントツーポイントリンク内の最終ポートであり、例えば、Ｎ＿ＰＯＲＴからＦ＿ＰＯＲＴまたはＦ＿ＰＯＲＴからＮ＿ＰＯＲＴは単一のファイバチャネルファブリックスイッチを通過しての一つのノードから他へのコミュニケーションである場合がある。
【００３８】
００５８    プロトコルグループとＬＤＥＶに対するマップはデータ保存を特定するためのＬＤＥＶとＣＵ：ＣＵＩの間の関係を使用する。ＬＢＡアドレススペースを使用したＣＫＤに対するフォーマットの詳細に関係して、上記のＫｉｔａｍｕｒａその他の米国特許ＮＯ６，４９９，０５６、の例えば、カラム３ライン５０からカラム４ライン４６、および図２を参照。Ｋｉｔａｍｕｒａその他の特許において、ＣＫＤデータはＥＳＣＯＮ（Ｒ）プロトコルを使用してＬＢＡアドレススペース上に保存される。本発明において、ストレージサブシステム４０とホスト２２の間の接続はＥＳＣＯＮ（Ｒ）の代わりにＦＩＣＯＮ（Ｒ）であり、しかし、ＦＩＣＯＮ（Ｒ）プロトコルはＥＳＣＯＮ（Ｒ）プロトコルと同じ方法でＣＫＤフォーマットアクセスを実行するので、この違いはＦＩＣＯＮ（Ｒ）を使用する時のＣＫＤアクセスの方法に影響しない。さらに、本発明において、論理ブロックアドレスはＬＤＥＶによって提供され、次にＣＫＤモジュール４９は米国特許ＮＯ６，４９９，０５６によって教示された方法でＣＫＤフォーマットとＬＢＡフォーマットの間で変換する。
【００３９】
００５９    ＬＤＥＶマネジャ４６はパリティグループを管理し、ＬＤＥＶ３９を提供する。ＬＤＥＶマネジャ４６はＲＡＩＤ０／１／２／３／４／５／６テクノロジを使用したディスクからのいくつかのパリティグループを含む。ＲＡＩＤ６は、ＲＡＩＤ５テクノロジをベースに、二重パリティ保護を使用する。生成されたパリティグループは図７に示されるＬＤＥＶ構成テーブル１４０に載せられる。テーブル１４０はストレージサブシステム内のパリティグループを識別するパリティグループ番号に対する列１４１、ＲＡＩＤテクノロジから生成された使用可能容量サイズ１４２、ＲＡＩＤ構成１４３、および各ＲＡＩＤグループに対する物理ディスクのリスト１４４を含む。各ＬＤＥＶに対して、ＬＤＥＶマネジャ４６はＬＢＡに対して読み出し／書き込みアクセスを提供する。読み出しと書き込みアクセスは開始ＬＢＡから最終ＬＢＡまでの一単位のＬＢＡにより、これは以下により詳細に説明される。
【００４０】
００６０    ＦＣ−ＳＣＳＩモジュール４７もまた定義されたパリティグループから生成されたＬＤＥＶ３９を管理する。各ＬＤＥＶ３９は、ＬＵまたはコントロールユニットイメージがホストから／へデータを保存および返すために論理ストレージ領域を提供する。ＬＤＥＶはパリティグループの一部であり、管理者はＬＤＥＶの番号を加えることによってＬＤＥＶの範囲を定義し、初期的にフォーマッティングをする。ＬＤＥＶとパリティグループの間のマッピングはコントローラ４５によってＬＤＥＶ構成テーブル１４０に従って管理される。列１４１によるパリティグループ番号において、ＬＤＥＶ構成テーブル１４０内の記録はストレージサブシステム４０内のＬＤＥＶ３９を識別するためのＬＤＥＶ番号１４５、パリティグループ上の適切なＬＤＥＶ開始アドレスを表す開始ＬＢＡ１４６、およびパリティグループ上の特定のＬＤＥＶ終了アドレスを表す終了ＬＢＡ１４７を含む。
【００４１】
００６１    ストレージサブシステム４０のモジュール４６−５３のそれぞれは、コントローラ（ＣＴＬ）上で実行され、管理コンソール４００または内部サービスコンソール（示されていない）経由でメモリ、光媒体、フロッピディスク、または他の交換可能なデバイスのような、コンピュータで読み取り可能な媒体からインストールされたか、またはこの媒体上に保存されたプログラムコードとして提供されるマイクロコードにて実現可能である。
【００４２】
（３）セレクタの振る舞い
００６２    本発明は各プロトコルグループ内の適切なＬＤＥＶに対してプロトコルを選択する方法を提供する。適切なＬＤＥＶを選択するために、仮想ポートセレクタモジュール５１とＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタモジュール５０は重要な役割を演じる。これらのモジュールの機能動作の詳細は以下に論じられる。
【００４３】
（４）仮想ポートセレクタ
００６３    図８に関して、仮想ポートセレクタモジュール５１がＦＣ−２ヘッダからの情報を使用してコマンドを取り扱うための適切なプロトコルモジュールを選択する処理フローが示される。典型的なＦＣ−２ヘッダ８０１のフォーマットは図１７に示され、ＦＣ−ＦＳ（Ｆｒａｍｅ  ａｎｄ  Ｓｉｇｎａｌ）２仕様をベースにしている。ＴＹＰＥフィールド８０２に関して、もしもエントリが“０８ｈ”であると、フォーマットはＦＣ−ＳＣＳＩまたはＳＣＳＩ−ＯＳＤであると考えられることができ、これは、コマンドがＦＣ−ＳＣＳＩをベースにしており、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０に進められるべきであることを示しているからである。しかし、もしもＴＹＰＥフィールド８０２内のエントリが“１８ｈ”、“１Ｃｈ”、または“１Ｂｈ”であると、コマンドはＳＢＣＣＳ（Ｓｉｎｇｌｅ  Ｂｙｔｅ  Ｃｏｍｍａｎｄ  Ｃｏｄｅ  Ｓｅｔｓ）に関係しており、これはコマンドがＣＫＤモジュール４９によって処理されるべきであることを示している。
【００４４】
００６４    コマンドが仮想ポートセレクタモジュール５１に送られる時に、セレクタモジュール５１は図８に示されるように、次のステップを実行する。
【００４５】
００６５    ステップ２１１：仮想ポートセレクタモジュール５１がコマンドに対するＦＣ−フレームのヘッダを取得する。
【００４６】
００６６    ステップ２１２：仮想ポートセレクタモジュール５１がプロトコルのＴＹＰＥ８０２をチェックする。もしもＴＹＰＥが“０８ｈ”であると、コマンドがＳＣＳＩコマンドであると決定され、処理手順はステップ２１３に進み、コマンドがＦＣ−ＳＣＳＩであるか、またはＳＣＳＩ−ＯＳＤであるかを決定する。もしもＴＹＰＥ８０２が“０８ｈ”以外であると、コマンドはＣＫＤコマンドであることが明らかであると決定され、処理手順はステップ２１４に進む。
【００４７】
００６７    ステップ２１３：仮想ポートセレクタモジュール５１はオペレーションをＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０に進める。ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は、図９に関して以下により詳細に説明されているように、コマンドがＦＣ−ＳＣＳＩであるか、またはＳＣＳＩ−ＯＳＤであるかを決定するためにＣＤＢオペレーションを実行する。
【００４８】
００６８    ステップ２１４：仮想ポートセレクタモジュール５１はコマンドのプロトコルのＴＹＰＥ８０２をチェックする。もしもＴＹＰＥが、ＳＢＣＣＳとＣＫＤフォーマットを処理する“１８ｈ”、“１Ｃｈ”、または“１Ｂｈ”、であると、処理手順はステップ２１５に進む。もしもプロトコルがそれ以外であると、処理手順はステップ２１６に進む。
【００４９】
００６９    ステップ２１５：仮想ポートセレクタモジュール５１はオペレーションをＣＫＤモジュール４９に進める。ＣＫＤモジュール４９はＣＫＤオペレーションを実行する。
【００５０】
００７０    ステップ２１６：要求されたプロトコルを処理できないので、仮想ポートセレクタモジュール５１はエラーを返す。
【００５１】
（５）ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ
００７１    図９に関して、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタモジュール５０に対する処理フローが示されている。ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は、ＦＣ−ＳＣＳＩオペレーションコードの一部分をベースに、ＣＤＢがＦＣ−ＳＣＳＩに対するものか（すなわち、ＦＢＡフォーマット）、またはオブジェクトータイプのフォーマットであるかを区別する。テーブル８１１は、図１８に示されているが、ＡＮＳＩ  ＯＳＤ仕様に従ったＣＤＢの一般的な例である。ＡＮＳＩ  ＯＳＤ仕様によって、ＳＣＳＩ−ＯＳＤのオペレーションコードは標準ＳＣＳＩ−ＯＳＤのＣＤＢ上の第０バイト内に“７Ｆ”として定義され、第８バイトから第９バイトのサービスアクション８１４は８８００ｈから８Ｆ７Ｆｈである。オペレーションコードはＯＳＤタイプのデバイスに対するコマンドを処理するためのコマンド識別子であり、ＯＳＤに対するＡＮＳＩ標準仕様に従って設定されている。この標準によって定義されるコマンドに対して、ＣＤＢ内のサービスアクションフィールドは各コマンド機能をユニークに特定する。ＳＣＳＩ−ＯＳＤコマンドをＦＣ−ＳＣＳＩコマンドから区別するためのこれらの要求をベースに、コマンドのフォーマットを選択する処理手順は以下のようである。
【００５２】
００７２    ステップ２２０：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＣＤＢを処理する要求を受信する。
【００５３】
００７３    ステップ２２１：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＣＤＢコマンドを調べる。もしも第０バイト内のオペレーションコード８１２が“７Ｆｈ”であり、第７バイトから第８バイトのサービスアクション８１４が８８００ｈと８Ｆ７Ｆｈの間であると、ＣＤＢはＳＣＳＩ−ＯＳＤに対するものであり、処理手順はステップ２２３に進む。もしもオペレーションコード８１２が７Ｆｈ以外であると、処理手順はステップ２２５に進む。
【００５４】
００７４    ステップ２２３：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＣＤＢで指定されたＬＵを選択する。セレクタ５０がＬＵを選択する時に、図４のＬＵ−ＬＤＥＶマッピングテーブル１１０からＬＵを選択する。テーブル１１０のマッピングはプロトコルのグループ、ＬＵ、ＬＤＥＶ番号を含む。このステップで、セレクタ５０は、コマンドがＳＣＳＩ−ＯＳＤタイプであると決定する。セレクタ５０はＳＣＳＩ−ＯＳＤグループ内のＬＵからＣＤＢによって指定されたＬＵを選択する。
【００５５】
００７５    ステップ２２４：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は、コマンドを実行するためにＣＤＢ処理をＳＣＳＩ−ＯＳＤモジュール４８に進める。
【００５６】
００７６    ステップ２２５：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は、コマンドがＳＣＳＩ−ＯＳＤフォーマットの中にないと決定し、従ってセレクタ５０は、コマンドがＦＣ−ＳＣＳＩフォーマットに対するものであると決定する。セレクタ５０はテーブル１１０を使用してＣＤＢによって指定されたＬＵを選択する。セレクタ５０がＬＵを選択する時に、テーブル１１０のＬＵ−ＬＤＥＶマッピングから、およびＦＣ−ＳＣＳＩグループからＬＵを選択する。セレクタ５０はＦＣ−ＳＣＳＩグループからＣＤＢ内において指定されたＬＵを選択する。
【００５７】
００７７    ステップ２２６：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はコマンドを実行するためにＣＤＢ処理をＦＣ−ＳＣＳＩモジュール４７に進める。
【００５８】
（６）各プロトコルの振る舞い
００７８    仮想ポートセレクタ５１とＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０を含む本発明のモジュールを使用して、ストレージサブシステム４０はポート上の各適切なＬＤＥＶに対するいくつかのプロトコルを処理可能である。
【００５９】
００７９    図１０は、ポートがいくつかのプロトコル、ＦＣ−ＳＣＳＩ、ＳＣＳＩ−ＯＳＤ、およびＣＫＤによって共有される時の一例を示す。この例において、三つのタイプのホスト、ＦＣ−ＳＣＳＩイニシエータホスト１２、ＳＣＳＩ−ＯＳＤイニシエータホスト１５、およびＣＫＤホスト２２がある。これらのホストはＳＡＮ３１に接続可能である。ストレージサブシステムもまたポート５２からＳＡＮ３１に接続可能であり、管理者等によって構成された各プロトコルに対する論理デバイスを構成する。この構成において、ＬＤＥＶ１はＦＣ−ＳＣＳＩグループ内にＬＵ−０４２を含み、ＬＤＥＶ２はＳＣＳＩ−ＯＳＤグループ内にＬＵ−０４３を含み、ＬＤＥＶ１０はＣＫＤグループ内にあり、ＣＵ０：ＣＵＩ０４４を含む。ホスト１２、１５、２２はそれらの特定のフォーマットに対する各アクセス可能なＬＤＥＶをアクセス可能である。例えば、ＦＣ−ＳＣＳＩイニシエータホスト１２はＬＤＥＶ１にアクセスし（矢印８２０）、ＳＣＳＩ−ＯＳＤイニシエータホスト１５はＬＤＥＶ２にアクセスし（矢印８２２）、ＣＫＤホスト２２はＬＤＥＶ１０にアクセスする（矢印８２４）。
【００６０】
００８０    図１１Ａ−１１Ｃは図１０内の各フォーマットタイプに対するホストによるアクセスの処理手順の詳細を示す。すべてのケースに対して、処理手順はファイバチャネルプロトコル内のポートログイン（ＰＬＯＧＩ）、プロセスログイン（ＰＲＬＩ）の後に開始する。ＦＣ−ＳＣＳＩのケースに関して、  図１１Ａに示されるように、処理手順は以下のようである：
００８１    ステップ９０１：ホストはＦＣヘッダを有するＦＣ−ＳＣＳＩコマンドを仮想ポートセレクタ５１に発行する。
【００６１】
００８２    ステップ９０２：仮想ポートセレクタ５１は、コマンドがＳＣＳＩコマンドであるか、またはＣＫＤコマンドであるかを決定し、コマンドがＳＣＳＩコマンドであると決定すると、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０にコマンドを進めて、コマンドがＦＣ−ＳＣＳＩマンドであるかまたはＳＣＳＩ−ＯＳＤコマンドであるかを決定する。
【００６２】
００８３    ステップ９０３：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はコマンドがＦＣ−ＳＣＳＩコマンドであるか、またはＳＣＳＩ−ＯＳＤコマンドであるかを決定し、コマンドがＦＣ−ＳＣＳＩコマンドであると決定すると、ＲＥＡＤまたはＷＲＩＴＥコマンドのようなコマンドをＦＣ−ＳＣＳＩモジュール４７に進める。
【００６３】
００８４    ステップ９０４：ＦＣ−ＳＣＳＩモジュール４７はＦＣ−ＳＣＳＩコマンドを処理する。もしもＦＣ−ＳＣＳＩモジュールがＬＤＥＶ、すなわちＬＤＥＶ１上のデータへのアクセスを有する必要があると、ＬＤＥＶマネジャ４６は対象ＬＤＥＶ上の要求されたブロックに対する読み出しまたは書き込みコールを実行する。もしも、ＩＮＱＵＩＲＹコマンドのケースのように、コマンドがＦＣ−ＳＣＳＩモジュール４７で処理可能であると、コマンドは処理され、処理手順はステップ９０６に進む。
【００６４】
００８５    ステップ９０５：ＬＤＥＶマネジャモジュール４６は結果をＦＣ−ＳＣＳＩモジュール４７に返す。
【００６５】
００８６    ステップ９０６：ＦＣ−ＳＣＳＩモジュールはホストにＣＨＥＣＫ  ＣＯＮＤＩＴＩＯＮとして結果を返す。もしもエラーがあると、ＳＣＳＩセンスキーはエラーに関する詳細情報を示すために含まれる。
【００６６】
００８７    ステップ９０７：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は仮想ポートセレクタ５１にまたは直接ポート５２にＦＣ−ＳＣＳＩセンスキーによって結果を送る。
【００６７】
００８８    ステップ９０８：ＦＣヘッダを有するＦＣ−ＳＣＳＩコマンドの結果は次にホストに送られる。ステップ９０１からステップ９０８までのＦＣ−ＳＣＳＩの実行の後で、ＦＣ−ＳＣＳＩイニシエータホスト１２は他のＦＣ−ＳＣＳＩコマンドを処理し続けることができる。
【００６８】
００８９    次に、図１１Ｂを参照して、ＳＣＳＩ−ＯＳＤコマンドを処理するケースに対して、処理手順は以下のようである。
【００６９】
００９０    ステップ９１１：ホスト１５はＦＣヘッダを有するＳＣＳＩ−ＯＳＤコマンドを仮想ポートセレクタ５１に発行する。
【００７０】
００９１    ステップ９１２：仮想ポートセレクタ５１はコマンドがＳＣＳＩかまたはＣＫＤかを決定し、コマンドがＳＣＳＩであると決定すると、コマンドをＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０に進める。
【００７１】
００９２    ステップ９１３：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はコマンドがＦＣ−ＳＣＳＩであるかまたはＳＣＳＩ−ＯＳＤであるかを決定し、コマンドがＳＣＳＩ−ＯＳＤであると決定すると、コマンドをＳＣＳＩ−ＯＳＤモジュール４８に送る。
【００７２】
００９３    ステップ９１４：ＳＣＳＩ−ＯＳＤモジュール４８はＣＲＥＡＴＥ、ＲＥＡＤ、およびＷＲＩＴＥのようなＳＣＳＩ−ＯＳＤコマンドセットをベースに、コマンドを処理する。ＲＥＡＤとＷＲＩＴＥのケースにおいて、ＬＤＥＶ内のデータへのアクセスは、テーブル１３０に関して上記に説明されたようにＰＡＲＴＩＴＩＯＮ＿ＩＤとＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤによって指定されたセグメント情報を使用して行われる。ＳＣＳＩ−ＯＳＤモジュール４８は各要求されたセグメントに対してＬＤＥＶマネジャ４６に読み出しまたは書き込み要求を発行する。もしもいくつかのセグメントがあると、ＳＣＳＩ−ＯＳＤモジュール４８はＬＤＥＶマネジャ４６に各セグメントに対するいくつかのＳＣＳＩ−ＯＳＤコマンドを発行できる。もしもコマンドがＬＤＥＶへのデータアクセスを要求せず、さらにＳＣＳＩ−ＯＳＤモジュール４８がコマンドを内部的に処理可能である場合、処理はステップ９１６に進む。
【００７３】
００９４    ステップ９１５：ＬＤＥＶマネジャモジュールはＳＣＳＩ−ＯＳＤモジュール４８に任意の要求された結果を返す。
【００７４】
００９５    ステップ９１６：ＳＣＳＩ−ＯＳＤモジュールは返されたオブジェクトデータをベースにオブジェクトに対するデータを再組み立てし、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０に結果を返す。もしもセグメントに対してＦＣ−ＳＣＳＩアクセスのエラーがあると、ＳＣＳＩ−ＯＳＤモジュールはエラーコンディションを有するＣＯＮＤＩＴＩＯＮ  ＳＴＡＴＵＳであるエラーを返す。
【００７５】
００９６    ステップ９１７：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は仮想ポートセレクタ５１にまたは直接ポート５２にＦＣ−ＳＣＳＩセンスキーによって結果を送る。
【００７６】
００９７    ステップ９１８：ＦＣヘッダを有するＳＣＳＩ−ＯＳＤコマンドの結果は次にホスト１５に送られる。ステップ９１１からステップ９１８までのＦＣ−ＳＣＳＩの実行の後に、ＳＣＳＩ−ＯＳＤイニシエータホスト１５は他のＳＣＳＩ−ＯＳＤコマンドを処理続行可能である。
【００７７】
００９８    図１１Ｃに示されるように、ＣＫＤコマンドを処理するケースは次のようである。
【００７８】
００９９    ステップ９２１：ホスト２２は、フレームのＴＹＰＥ８０２として“１８ｈ”、“１Ｃｈ”または“１Ｂｈ”であるＦＣヘッダを有するＣＫＤコマンドを仮想ポートセレクタ５１に発行する。
【００７９】
０１００    ステップ９２２：仮想ポートセレクタ５１はコマンドがＣＫＤコマンドであると決定し、ＣＫＤモジュール４９にコマンドを進める。
【００８０】
０１０１    ステップ９２３：ＣＫＤモジュール４９はＣＫＤコマンドを処理し、必要に応じて、読み出し／書き込み機能がＬＤＥＶ１０内の適切なＬＢＡをアクセスするためにＬＤＥＶマネジャ４６をコールする。もしもＣＫＤモジュールがＬＤＥＶ１０に対していくつかの読み出し／書き込みアクセスを必要とすると、ＣＫＤモジュールはＬＢＡアドレススペースをベースにしてＬＤＥＶ１０へのいくつかの読み出し／書き込みコールを実行できる。
【００８１】
０１０２    ステップ９２４：ＬＤＥＶマネジャモジュール４６はＣＫＤモジュール４９に結果を返す。
【００８２】
０１０３    ステップ９２５：ＣＫＤモジュールはＣＫＤオペレーションの結果を仮想ポートセレクタ５１にまたは直接ポート５２に返す。もしも読み出し／書き込みコールの間にエラーが発生すると、ＣＫＤモジュール４９はエラーを返す。
【００８３】
０１０４    ステップ９２６：ＦＣヘッダを有するＣＫＤコマンドの結果は次にホストに送られる。
【００８４】
第二の実施例
０１０５    第二の実施例の下で、ストレージシステムは、第一の実施例においてのようなＣＤＢ内の情報をチェックする代わりに、ＦＣ情報ユニットフレーム内のＦＣＰ＿ＬＵＮエントリをベースに、コマンドをＦＣ−ＳＣＳＩコマンドとして、またはＳＣＳＩ−ＯＳＤコマンドとして処理するべきかを決定する。このＦＣ情報ユニットフレームは、単一のシーケンスＣＭＭＮＤペイロードとして転送されるためにファイバチャネルプロトコルによって特定されたデータの組織化された集合体である。
【００８５】
０１０６    従って、第二の実施例は、ＬＵの番号付けが各ＳＣＳＩ−ＯＳＤのＬＵとＦＣ−ＳＣＳＩのＬＵに対して提供される点において第一の実施例と異なる。この例において、各ＬＵＮは別個の番号を受信し、特定のタイプの処理、すなわちＦＣ−ＳＣＳＩかまたはＳＣＳＩ−ＯＳＤのいずれか、に対して特定される。このマッピングテーブルの修正版は図１２のテーブル１１０ａとして示される。例えば、テーブル１１０ａの列１１２内に示されるように、ＬＵＮ１はＦＣ−ＳＣＳＩストレージに対して生成されることができ、ＬＵＮ２はＳＣＳＩ−ＯＳＤストレージに対して生成されることができる。ＬＵＮとＬＵＮの処理の間のこのマッピングを示すために、各ＬＵＮに割り当てられた番号はストレージシステムに対してユニークである必要がある。グループをフォーマッティングするためのＬＵＮのマッピングは管理コンソール４００を使用して管理者によって定義されることができる。
【００８６】
０１０７    この実施例と上記に説明された実施例との間のさらなる違いは、コマンドがＦＣ−ＳＣＳＩプロトコル内か、またはＳＣＳＩ−ＯＳＤプロトコル内かを決定するために使用される処理手順である。上記に説明された第一の実施例において、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＣＤＢ内に含まれた情報をチェックし、グループ内のＬＵを選択する（図９内のステップ２２２、２２３、２２５を参照）。しかし第二の実施例において、ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＦＣフレーム内において特定されたＦＣＰ＿ＬＵＮをチェックし、各ＬＵＮに対して適切なプロトコルを選択する。図１９はＦＣ−ＳＣＳＩのＡＮＳＩファイバチャネルプロトコル、第三版ＦＣＰ−３に対する典型的なペイロード８２０のフォーマットを示す。ペイロード８２０はそのコマンドに対して特定されたＦＣＰ＿ＬＵＮ８２２をバイト０から７に含み、これは、どのＬＵＮがホストによって指定されたかを決定し、それによって、コマンドのプロトコルを決定するために使用されることができる。仮想ポートセレクタモジュール５１によって実行される処理手順は第二の実施例において同じである。従って、図８に述べられた処理手順のその部分はここで繰り返される必要はない。従って、第二の実施例のＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０によって実行される処理手順は図１３に示され、以下に説明される。
【００８７】
０１０８    ステップ３２０：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＦＣ情報ユニット８２０を受信する。これは、ファイバチャネルサービスインタフェースによって単一のシーケンスとして転送されるためにファイバチャネルプロトコルによって特定されたデータの組織化された集合体である。
【００８８】
０１０９    ステップ３２１：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は対象のＬＵＮ番号を取得するためにＦＣ情報ユニット８２０内のＦＣＰ＿ＬＵＮフィールド８２２を調べる。セレクタ５０は次に、図１２の列１１２内において指定されたＬＵＮをベースに、指定されたＬＵＮを選択し、列１１１から一致したプロトコルグループを見つけるために図１２のテーブル１１０ａにアクセスする。
【００８９】
０１１０    ステップ３２２：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は見つけられたプロトコルグループをチェックする。もしもグループがＳＣＳＩ−ＯＳＤであると、処理手順はステップ３２３に進む。もしもグループがＳＣＳＩ−ＯＳＤではないと、処理手順はステップ３２４に進む。
【００９０】
０１１１    ステップ３２３：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は選択されたＬＵＮに対してＳＣＳＩ−ＯＳＤモジュール４８にＣＤＢ処理を進める。
【００９１】
０１１２    ステップ３２４：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は選択されたＬＵＮに対してＦＣ−ＳＣＳＩモジュール４７にＣＤＢ処理を進める。処理の残りは第一の実施例に関して上記で説明されたものと同様である。
【００９２】
第三の実施例
０１１３    第三の実施例におけるアクセス方法は、ＯＳＤデバイスがオブジェクトベースのストレージデバイスとしてだけでなく、ＯＳＤデバイスのバックアップの目的のためのＦＣ−ＳＣＳＩデバイスとしてもアクセスされることができること以外は、第二の実施例に関して説明されたものと同様である。ＯＳＤデバイスをバックアップするために、ＦＢＡフォーマットを使用してデータをコピーし保存する（すなわち、データのブロックをコピーする）ことが望ましい。何故ならば、これは典型的には、各オブジェクを個別にコピーし保存するよりもずっと少ない時間しか必要としないからである。
【００９３】
０１１４    第三の実施例において、第二の実施例に対して図１２に示されたマッピングテーブル１１０ａの代わりに、ストレージコントローラ４５は図１４に示されるように、マッピングテーブル１１０ｂを管理する。テーブル１１０ｂはＭＯＤＥ１１４に対するエントリを含む。対応するＬＤＥＶ１１３のＭＯＤＥ１１４の値が１である時に、ＬＤＥＶはＦＣ−ＳＣＳＩコマンドを使用してホストによってアクセスされることが可能である。ＬＤＥＶがＯＳＤとして定義される時に、ＭＯＤＥ１１４は管理コンソール４００を経由して管理者によって設定されることが可能である。
【００９４】
０１１５    第三の実施例において、オブジェクトとセグメントの間のマッピングは、第一の実施例において図５に関して説明されたように、各ＬＤＥＶ内に保存される。図１５はＯＳＤに対して第三の実施例において使用されることができるＬＤＥＶ５００の構成を示す。ＬＤＥＶ５００は、オブジェクト（ＯＳＤ内の）が保存される範囲であるオブジェクト領域５０１を含む。ＬＤＥＶ５００はさらにマッピングテーブル（図５）とプールテーブル（図６）を保存するために使用されることができるテーブル領域５０２を含む。ＬＤＥＶがＯＳＤとして使用される時に、オブジェクト領域５０１だけがホストからオブジェクトを保存／読み出しをするために使用可能である。しかし、ＬＤＥＶがＬＤＥＶをバックアップする目的でＦＣ−ＳＣＳＩデバイスとしてアクセスされる時に、ストレージコントローラ４５はホストがオブジェクト領域５０１とテーブル領域５０２の両方をアクセスすることを可能にする。
【００９５】
０１１６    図１６は第三の実施例に対するＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０の処理フローを示す。処理は、ステップ３３１から３３２が追加された以外は、第二の実施例に関して図１３に述べられた内容と同様である。
【００９６】
０１１７    ステップ３２０：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＦＣ情報ユニット８２０を受信する。
【００９７】
０１１８    ステップ３２１：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は対象ＬＵＮ番号を取得するためにＦＣ情報ユニット８２０内のＦＣＰ＿ＬＵＮフィールド８２２を調査し、図１４のテーブル１１０ｂ内のＬＵＮ列１１２から一致したプロトコルグループ１１１を見つけるためにＬＵＮを選択する。
【００９８】
０１１９    ステップ３２２：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は見つけられたプロトコルグループをチェックする。もしもグループがＳＣＳＩ−ＯＳＤであると、処理手順はステップ３３１に進む。もしもグループがＳＣＳＩ−ＯＳＤではないと、処理手順はステップ３２４に進む。
【００９９】
０１２０    ステップ３３１：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０はＣＤＢコマンドを調査する。もしもオペレーションコードとサービスアクションが、図９のステップ２２２に述べられている処理で上記に説明されているように、ＳＣＳＩ−ＯＳＤプロトコルに一致すると、処理はＳＣＳＩ−ＯＳＤコマンドであり、処理はステップ３２３に進む。もしもそうでないと、コマンドはＦＣ−ＳＣＳＩフォーマット内のバックアップコマンドである場合があり、処理はステップ３３２に進む。
【０１００】
０１２１    ステップ３３２：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は図１４のテーブル１１０ｂ内のＭＯＤＥ１１４をチェックする。もしもＭＯＤＥ１１４が１であると、処理はＦＣ−ＳＣＳＩコマンドとしてフレームを処理するためにステップ３２４に進む。これは、コマンドがＦＣ−ＳＣＳＩプロトコルを使用してＯＳＤをバックアップするためのバックアップコマンドであることを示す。しかし、もしもＭＯＤＥ１１４が１でないと、ＯＳＤに対するＬＤＥＶはＦＣ−ＳＣＳＩコマンドを使用することによる以外の方法でアクセスされるべきでないので、セレクタ５０はコマンドを送ったホストにエラーを返す。
【０１０１】
０１２２      ステップ３２４：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は選択されたＬＵＮで処理するためにＦＣ−ＳＣＳＩモジュール４７にＣＤＢコマンドを進める。
【０１０２】
０１２３    ステップ３２３：ＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタ５０は選択されたＬＵＮで処理するためにＳＣＳＩ−ＯＳＤモジュール４８にＣＤＢコマンドを進める。
【０１０３】
０１２４    第三の実施例において、ＯＳＤとして使用されるＬＤＥＶ５００はＦＣ−ＳＣＳＩイニシエータホスト１２によってアクセス可能である。これは、オブジェクトベースのフォーマットで保存されたデータをＦＣ−ＳＣＳＩプロトコル（ＦＢＡフォーマット）に従ってバックアップデバイス（テープのような）にバックアップするのに有用である。ＬＤＥＶ５００内の範囲全体（テーブルエリア５０２を含む）を読むこと、およびバックアップデバイスにそれらを書き込むことによって、オブジェクトとオブジェクト−セグメントマッピングの両方が一緒にバックアップされることが可能なので、バックアップはより速く実行可能である。データをリストアする時に、ユーザまたはホスト１０がＯＳＤとして使用されるＬＤＥＶに全データを書き戻すことを完了した後に、ＬＤＥＶはＳＣＳＩ−ＯＳＤプロトコルを使用してアクセスされることが可能である。
【０１０４】
０１２５    上記に説明された処理において、そのＭＯＤＥ１１４が１であるＯＳＤはＦＣ−ＳＣＳＩイニシエータホスト１２から読み出しまたは書き込みされることが可能である。しかし、他の実施例において、ストレージコントローラ４５はイニシエータデバイスとして動作できる。すなわち、テープライブラリのようなバックアップデバイスがＳＡＮ３１に接続される環境において（ＦＣスイッチ／ハブ３０を経由してのような）、ＯＳＤ（そのＭＯＤＥ１１４が１）内のデータをバックアップするために、ストレージコントローラ４５はＯＳＤ内のデータをコピーし、バックアップデバイスに直接書き込むことが可能である。また、そのＭＯＤＥ１１４が１であるＯＳＤにデータをリストアするために、リストアオペレーションがホストコンピュータの介入無しに実行可能なように、ストレージコントローラ４５はバックアップデバイスからデータを読み出し、それをＯＳＤに書き戻すことが可能である。バックアップまたはリストアオペレーションの起動がコンソール４００から実行可能である。または他の実施例において、バックアップまたはリストア命令はホスト１０から発行可能である。
【０１０５】
０１２６    特定の実施例がこの明細書において図示され説明されたが、この技術に通常程度に精通した人達は、同じ目的を達成するために計画された任意の調整が開示された特定の実施例を置き換えることができることを理解する。この開示内容は本発明の任意のおよび全ての適応と変更を包括することを意図し、上記の説明は説明的な形式で行われたが、限定的なものではないことを理解されるべきである。従って、本発明の範囲は添付の特許請求項に関して、その特許請求項に与えられた権利と同等内容の全範囲とともに、適切に決定されるべきである。
【図面の簡単な説明】
【０１０６】
【図１】００１３    図１は第一の実施例によるシステムの物理構成の例を示す。
【図２】００１４    図２は第一の実施例によるシステムの論理構成の例を示す。
【図３】００１５    図３はポートの構成に対する従来のテーブルの例を示す。
【図４】００１６    図４は本発明の一実施例によるデータアクセスプロトコルグループとローカルユニットのマッピングを示す。
【図５】００１７    図５はＰＡＲＴＩＴＩＯＮ＿ＩＤ、ＵＳＥＲ＿ＯＢＪＥＣＴ＿ＩＤ、長さおよび割り当て済セグメントの関係の典型的なテーブルを示す。
【図６】００１８    図６はＬＵと未割り当てセグメントのセグメントプールを示す。
【図７】００１９    図７はパリティグループ、ディスクおよびＬＤＥＶの間の関係を示すテーブルを示す。
【図８】００２０    図８は仮想ポートセレクタのオペレーションの例のフローチャートを示す。
【図９】００２１    図９はＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタのオペレーションの例のフローチャートを示す。
【図１０】００２２    図１０は異なるプロトコルのホストによるポートへの共有されたアクセスの例を示す。
【図１１Ａ】００２３    図１１Ａは図１０内の各ホストタイプのそれぞれに対するアクセス処理手順を示す。
【図１１Ｂ】図１１Ｂは図１０内の各ホストタイプのそれぞれに対するアクセス処理手順を示す。
【図１１Ｃ】図１１Ｃは図１０内の各ホストタイプのそれぞれに対するアクセス処理手順を示す。
【図１２】００２４    図１２は図４とは異なる実施例によるプロトコルグループと論理ユニットをマッピングする修正版を示す。
【図１３】００２５    図１３は図９内に示されたセレクタのオペレーションとは異なるＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタのオペレーションの別の例のフローチャートを示す。
【図１４】００２６    図１４は図４と図１２のそれは異なる実施例によるプロトコルグループと論理ユニットをマッピングするさらに修正した版を示す。
【図１５】００２７    図１５は本発明の実施例によるＬＤＥＶの例を示す。
【図１６】００２８    図１６は図９と図１３内に示されたオペレーションとは異なるＦＣ−ＳＣＳＩ／ＳＣＳＩ−ＯＳＤセレクタのオペレーションのさらに他の例のフローチャートを示す。
【図１７】００２９    図１７はＦＣ−２ヘッダの典型的なフォーマットを示す。
【図１８】００３０    図１８はＣＤＢの一般的な例を示す。
【図１９】００３１    図１９はＦＣＰコマンド情報ユニット（ＩＵ）フォーマットの典型的な例を示す。
【図１】
2007141216.tif 000003
【図２】
2007141216.tif 000004
【図３】
2007141216.tif 000005
【図４】
2007141216.tif 000006
【図５】
2007141216.tif 000007
【図６】
2007141216.tif 000008
【図７】
2007141216.tif 000009
【図８】
2007141216.tif 000010
【図９】
2007141216.tif 000011
【図１０】
2007141216.tif 000012
【図１１Ａ】
2007141216.tif 000013
【図１１Ｂ】
2007141216.tif 000014
【図１１Ｃ】
2007141216.tif 000015
【図１２】
2007141216.tif 000016
【図１３】
2007141216.tif 000017
【図１４】
2007141216.tif 000018
【図１５】
2007141216.tif 000019
【図１６】
2007141216.tif 000020
【図１７】
2007141216.tif 000021
【図１８】
2007141216.tif 000022
【図１９】
2007141216.tif 000023
【外国語明細書】
2007141216000001.pdf