トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 複数のプロトコルアクセス可能なOSDストレージサブシステムのためのシステム、方法および装置
【発明者】 【氏名】加納 義樹

【氏名】北村 学

【要約】 【課題】ポ−トがSCSI−OSD可能なストレージサブシステム上でFC−SCSIプロトコルの使用を可能にする。

【解決手段】装置、システム、および方法は、同じポートとストレージサブシステム上でSCSIオブジェクトベースのストレージデバイス(OSD)コマンドをファイバチャネル(FC)SCSIコマンドと区別することによってストレージシステムへのアクセスを可能にする。ストレージサブシステムは対応するコマンドからストレージプロトコルを特定する能力を有し、従って対応するストレージプロトコルの使用のためにフォーマッティングされたストレージデバイスに対するコマンドを処理する。ストレージサブシステムはいくつかの専用のコマンドポートから単一の物理ポートにデータをまとめることが可能で、また、単一のストレージシステムが複数の異なるストレージプロトコルフォーマットでデータを保存しアクセスすることを可能にする。
【特許請求の範囲】
【請求項1】
ストレージシステムにおいて、SCSI−OSDとFC−SCSIプロトコルの両方を使用したデータの保存を可能にする方法において、
ホストからコマンド記述ブロック(CDB)を含むコマンドを受信するステップと、
前記のCDBがSCSI−OSDオペレーションコードとSCSI−OSDサービスアクションコードを含むかを決定するステップと、
から成り、
もしも前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードの両方を含むと、論理ユニットは前記のSCSI−OSDプロトコルを使用したデータの保存のために用意された論理ユニットのリストから選択され、
もしも前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードの両方は含まないと、論理ユニットは前記のFC−SCSIプロトコルを使用したデータの保存のために用意された論理ユニットのリストから選択されることを特徴とする方法。
【請求項2】
前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードを含むかを決定する前に、前記のコマンドがSCSIベースのプロトコルまたはカウントキーデータ(CKD)のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項3】
もしも前記のヘッダの前記のタイプフィールドがSCSIプロトコルコマンドに対するコードを含まないことが決定されると、前記のヘッダの前記のタイプフィールドがCKDコマンドに対するコードを含むかを決定するステップをさらに含むことを特徴とする請求項2に記載の方法。
【請求項4】
もしも前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードの両方は含まないと、前記のコマンドを処理し応答するFC−SCSIモジュールと、およびもしも前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードの両方を含むと、前記のコマンドを処理し応答するSCSI−OSDモジュールとを提供するステップをさらに含むことを特徴とする請求項1に記載の方法。
【請求項5】
前記のコマンドを実行するために必要に応じて選択された論理ユニット上の論理デバイスをアクセスするためにロジカルデバイスマネジャを提供するステップをさらに含むことを特徴とする請求項4に記載の方法。
【請求項6】
もしも前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードの両方は含まないと、前記のコマンドを処理し応答するFC−SCSIモジュールと、およびもしも前記のCDBが前記のSCSI−OSDオペレーションコードと前記のSCSI−OSDサービスアクションコードの両方を含むと、前記のコマンドを処理し応答するSCSI−OSDモジュールとを提供するステップをさらに含むことを特徴とする請求項2に記載の方法。
【請求項7】
前記のコマンドを実行するために必要に応じて選択された論理ユニット上の論理デバイスをアクセスするためにロジカルデバイスマネジャを提供するステップをさらに含むことを特徴とする請求項6に記載の方法。
【請求項8】
FC−SCSIプロトコルに従ってデータを保存するための一つ以上の第一の論理ユニット(LU)と、SCSI−OSDプロトコルに従ってデータを保存するための一つ以上の第二のLUとを有するストレージシステムをアクセスする方法において、
ホストからコマンドヘッダ内のLU番号(LUN)を受信するステップと、
前記のLUNがSCSI−OSDプロトコルグループに属するか、またはFC−SCSIプロトコルグループに属するかを保存された情報から決定するステップと、
もしも前記のLUNが前記のSCSI−OSDプロトコルグループに属すると、SCSI−OSDコマンドとしてコマンドを処理するステップと、
もしも前記のLUNが前記のFC−SCSIプロトコルグループに属すると、FC−SCSIコマンドとしてコマンドを処理するステップと、
から成ることを特徴とする方法。
【請求項9】
前記のLUNがSCSI−OSDプロトコルグループに属するか、またはFC−SCSIプロトコルグループに属するかを保存された情報から決定する前記のステップが、前記のプロトコルグループと前記のLUNに関するマッピング情報を含むメモリ内に保存されたテーブルを調査するステップを含むことを特徴とする請求項8に記載の方法。
【請求項10】
前記のLUNがSCSI−OSDプロトコルグループに属するか、またはFC−SCSIプロトコルグループに属するかを決定する前に、前記のコマンドがSCSIベースのプロトコルまたはカウントキーデータ(CKD)のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項8に記載の方法。
【請求項11】
もしも前記のLUNが前記のFC−SCSIグループに属すると、前記のコマンドを処理し応答するFC−SCSIモジュールと、およびもしも前記のLUNが前記のSCSI−OSDグループに属すると、前記のコマンドを処理し応答するSCSI−OSDモジュールとを提供するステップをさらに含むこと特徴とする請求項8に記載の方法。
【請求項12】
選択された論理ユニット上の論理デバイスをアクセスするためにロジカルデバイスマネジャを提供するステップをさらに含むことを特徴とする請求項11に記載の方法。
【請求項13】
もしも前記のLUNが前記のFC−SCSIグループに属すると、前記のコマンドを処理し応答するFC−SCSIモジュールと、およびもしも前記のLUNが前記のSCSI−OSDグループに属すると、前記のコマンドを処理し応答するSCSI−OSDモジュールとを提供するステップをさらに含むこと特徴とする請求項10に記載の方法。
【請求項14】
FC−SCSIプロトコルに従ってデータを保存するための一つ以上の第一の論理ユニット(LU)と、SCSI−OSDプロトコルに従ってデータを保存するための一つ以上の第二のLUとを有するストレージシステムをアクセスする方法において、
ホストからコマンド内のLU番号(LUN)を受信するステップと、
前記のLUNがSCSI−OSDプロトコルグループに属するか、またはFC−SCSIプロトコルグループに属するかを決定するステップと、
から成り、
もしも前記のLUNが前記のFC−SCSIプロトコルグループに属すると、前記のLUはFC−SCSIプロトコルに対して用意された論理ユニットのグループから選択され、
もしも前記のLUNが前記のSCSI−OSDプロトコルグループに属すると、前記のホストから前記のコマンド内のコマンド記述ブロック(CDB)を取得するステップと、および前記のCDBがSCSI−OSDオペレーションコードとSCSI−OSDサービスアクションコードを含むかを決定するステップとを実行し、
もしも前記のCDBが前記のオペレーションコードと前記のサービスアクションコードの両方を含むと、論理ユニット(LU)はSCSI−OSDオペレーションに対して用意された論理ユニットのリストから選択されることを特徴とする方法。
【請求項15】
もしも前記のCDBが前記のオペレーションコードと前記のサービスアクションコードの両方は含まないと、前記のLUNによって特定された前記のLUに対するモード設定は、前記の選択されたLUがFC−SCSIコマンドによってアクセスされることを許可されたかを決定するためにチェックされることを特徴とする請求項14に記載の方法。
【請求項16】
前記の選択されたLUからデータをバックアップするステップをさらに含み、前記のLUが前記のSCSI−OSDプロトコルに対してフォーマッティングされ、前記のコマンドが前記のFC−SCSIプロトコルを使用するコマンドであること特徴とする請求項15に記載の方法。
【請求項17】
もしも前記のモード設定が、前記の選択されたLUがFC−SCSIコマンドによってアクセスされることを許可されてないことを示すと、エラーメッセージが前記のホストに返されるステップをさらに含むことを特徴とする請求項15に記載の方法。
【請求項18】
前記のLUNがSCSI−OSDプロトコルグループに属するか、またはFC−SCSIプロトコルグループに属するかを決定する前に、前記のコマンドがSCSIベースのプロトコルまたはカウントキーデータ(CKD)のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項17に記載の方法。
【請求項19】
前記のLUNがSCSI−OSDプロトコルグループに属するか、またはFC−SCSIプロトコルグループに属するかを決定する前に、前記のコマンドがSCSIベースのプロトコルまたはカウントキーデータ(CKD)のプロトコルを使用するかを前記のコマンドのヘッダのタイプフィールドから決定するステップをさらに含むことを特徴とする請求項14に記載の方法。
【請求項20】
複数のデータアクセスプロトコルを取り扱うストレージシステムにおいて、
少なくとも一つのホストコンピュータに接続されたI/Oインタフェースを含むストレージコントローラと、
前記のストレージコントローラと接続された第一のストレージボリュームと、
前記のストレージコントローラと接続された第二のストレージボリュームと、
を備え、
前記のストレージコントローラが第一のデータアクセスプロトコルに従って前記のホストコンピュータから前記のI/Oインタフェース経由で第一のI/O要求を受信する時に、前記のストレージシステムが前記の第一のストレージボリュームをアクセスし、
前記のストレージコントローラが第二のデータアクセスプロトコルに従って前記のI/Oインタフェース経由で第二のI/O要求を受信する時に、前記のストレージシステムが前記の第二のストレージボリュームをアクセスすることを特徴とするストレージシステム。
【発明の詳細な説明】【技術分野】
【0001】
0001 本発明は一般的にはストレージサブシステムをアクセスすることに関係し、より詳細には、複数のプロトコルアクセス可能なオブジェクトベースのストレージデバイスのストレージシステムに関係する。
【背景技術】
【0002】
0002 近年、ストレージシステムとファイバチャネルベースのストレージエリアネットワーク(FC−SAN)に対するファイバチャネル(FC)接続性はストレージ産業においてより普通になってきた。ファイバチャネルは米国規格協会(ANSI)の標準として採用され、これはサーバ、ディスクアレイ、およびバックアップデバイスを接続する高速SANのために本来、意図されたものである。最初のファイバチャネルプロトコルは、100Mb/sで動作し、ANSI標準委員会によって1994年に承認された。より最近の革新の下に、FC−SANの速度は10Gb/s、およびそれ以上に拡大した。多くのネットワークアーキテクチャがファイバチャネルで可能であり、その中で一つの良く知られたやり方は一つまたは二つ(冗長性のため)の中央ファイバチャネルスイッチに接続されたいくつかのデバイスを含み、ホストとサーバがディスクストレージアレイ、テープライブラリ、等を共有することを可能にする信頼できる下部構造を生成する。
【0003】
0003 現在のストレージサブシステムは、ANSI FCP−3(Fibre Channel Protocol 3)に対する接続能力を含む。(例えば、The International Committee for Information Technology Standards(INCITS) T10,Project 1560−D,Revision 3g、http://www.t10.org/ftp/t10/drafts/fcp3/fcp3r03g.pdf、ここより以降は、“ANSI FCP−3”、を参照のこと)現在のストレージシステムは、RAIDテクノロジを使用してデータを保存し保護することが可能であり、CIFS、NFS、FC−SCSI、およびFICON(r)(メインフレームコンピュータでの使用のためにIBMによって開発された専有のファイバ接続プロトコル)のようなさまざまな他のプロトコルも経由してデータのストレージに備える。これらのさまざまなデータアクセスプロトコルはストレージシステムで機能するための異なる調整を必要とする。例えば、FC−SCSIプロトコルはストレージにFBA(fixed block architecture)フォーマットを使用し、一方で、FICON(r)プロトコルはストレージシステムとメインフレームの間コミュニケーションに一般的に使用されるCKD(カウントキーデータ)フォーマットを使用する。Kitamuraその他の米国特許NO6,499,056は、この開示内容はここに参照によって組み込まれるが、FBAインタフェースとCKDインタフェースの両方を含むストレージシステムを開示する。
【0004】
0004 FC−SCSIプロトコルに使用されたFBAフォーマットにおいて、データは“ブロック”として知られる特定の領域内に保存される。ブロックのそれぞれは典型的には512バイトのような固定長を有する。論理ブロックアドレス(LBA)は各ブロックに割り当てられ、LBAはブロック内のデータをアクセスする時に使用される。反対に、CKDフォーマットにおいて、FICON(R)プロトコルにおいて使用されるように、シリンダ番号(CC)、ヘッド番号(HH)、およびレコード番号(R)がアクセスを可能にするために関連するレコードに割り当てられる。従って、CKDフォーマットを使用してアクセスされることができるデータの最小量はレコード全体である。
【0005】
0005 さらに、ストレージシステムに接続された複数の外部ストレージシステムは、あたかも複数のストレージシステムが1つのストレージシステムのソフトウエアツールによって管理される、共通のストレージプール内の単に追加の内部ストレージのように、ユーザに提供される。この外部ストレージシステムは性能、可用性、回復性、およびコストの属性をベースにしたクラスにグループ分けされることが可能であるが、しかしデータ移動と複製に対するソフトウエアあるいはホストベースのソフトウエアに関する限り、内部ストレージに機能的に等しい。
【0006】
0006 また、近年、SCSIオブジェクトベースのストレージデバイスコマンドはANSIとINCITSによって標準化されてきた。オブジェクトベースのストレージデバイス(OSD)で使用するためのSCSI(Small Computer Systems Interface)コマンドセットは可変サイズのデータストレージ“オブジェクト”の割り当て、配置、アクセスを管理する入力/出力論理ユニットの有効なオペレーションに備える。現在のOSDアーキテクチャは伝統的なブロックでもファイルでもなく、データとデータの属性で構成されたオブジェクトとしてストレージを扱う。例えば、オブジェクトは、オブジェクトを仕立て上げるデータに関する属性情報と共に、一つのファイルの一部分、多くのファイル、または多くのファイルの複数の部分である場合がある。OSDはオブジェクトの内容を典型的には知っており、ブロック割り当てのようなデバイス管理のより低いレベルの詳細を取り扱うことができる(参照、例えば、米国規格協会標準“ANSI INCITS 400−2004”(http://www.ansi.org)および“SCSI Object−Based Storage Device Commands−2(OSD−2)”(http://www.t10.org/ftp/t10/drafts/osd2/osd2r00.pdf)ここより以降は“OSD−2”)。OSDの仕様によると、OSDはSCSI仕様をベースにしたUSER_OBJECT_IDを特定するデータに対するアクセス方法を提供し、これはSCSI−OSDフォーマットと呼ばれる場合がある。以下では、“OSD”はSCSI−OSDを指す。
【0007】
【特許文献1】米国特許第6,499,056号
【発明の開示】
【発明が解決しようとする課題】
【0008】
0007 一般的に、SCSI−OSD可能な(すなわち、一つ以上のオブジェクトベースのボリュームを提供する)ストレージサブシステム上のいくつかのストレージまたはデータのアクセスプロトコルをアクセスするために、各データアクセスプロトコルに別のストレージサブシステムを提供する必要がある。例えば、ホストがSCSI−OSDボリュームへのアクセスを要求する時に、ストレージサブシステムはホストに対してSCSI−OSDストレージサブシステムを用意する。ホストが、SCSI−OSDストレージサブシステム上でファイバチャネルを通して論理ブロックアドレスを提供するFC−SCSIベースのボリュームへのアクセスを要求する時に、ストレージサブシステムにはFC−SCSIベース(LBA)のボリュームを提供する能力はなく、FC−SCSIフォーマットのデータを保存するために新しいストレージサブシステムを用意することが必要になる。これは時間を消費し、非能率である。さらに、従来のストレージシステムとネットワークは単一のポートにおいてSCSI−OSDプロトコルとFC−SCSIプロトコルを共有する何らの方法も提供しない。
【課題を解決するための手段】
【0009】
0008 本発明の目的は、ポートがSCSI−OSD可能なストレージサブシステム上でFC−SCSIプロトコル、または他のデータアクセスプロトコルの使用を可能にする能力を提供される方法と装置を提供することである。
【0010】
0009 本発明の他の目的は各実行可能な論理ユニット(LU)上においてFC−SCSIとSCSI−OSDのコマンドを実行する方法と装置を提供することである。
【0011】
0010 上記に述べられた目的を達成するための処理手順の一つの例は、ホストから目標の周辺装置に発行され、実行されるべきオペレーションとそのオペレーションに関連するパラメータを含むCDB(Command Descriptor Block、コマンド記述ブロック)を受信するFC−SCSI/SCSI−OSDセレクタが提供されることを含む。セレクタは、CDB内のOPERATION CODEがSCSI−OSDを特定するコードであるかどうか、およびSCSI−OSDのサービスアクションコードが規定された範囲の間で使用されるかどうかをチェックする。もしもそうならば、セレクタはフォーマットがSCSI−OSDであることを決定し、SCSI−OSDストレージに対するLUのリストから論理ユニット(LU)を選択し、セレクタはSCSI−OSDオペレータとしてCDBを実行する。もしもセレクタが、CDBはSCSI−OSDフォーマット内にないと決定すると、セレクタはFC−SCSIに対するLUのリストからLUを選択し、セレクタはFC−SCSIオペレータとしてCDBを実行する。
【0012】
0011 本発明のいろいろな他の目的、特徴、および利点は、好適な実施例の次の詳細な説明を考慮することで、この技術に通常程度に精通した人達に明確になる。
【発明を実施するための最良の形態】
【0013】
0032 本発明の次の詳細な説明において、開示内容の一部分を形成する添付の図面が参照され、および本発明が実施される特定の実施例が図示によって示されるが、限定されることはない。図面において、同じ参照番号はいくつかの図を通して実質的に同様な構成部分を示す。
【0014】
0033 次の内容は、オブジェクトベースのアクセス可能なボリュームをアクセスするためのI/Fを含むSCSI−OSDストレージサブシステム上で、論理ブロックアドレス(LBA)ボリュームをアクセスするためのI/FであるFC−SCSII/F、および他のプロトコルのI/Fを提供することを実現するための本発明の実施例を説明する。第一の実施例はCDBによってSCSI−OSDまたはFC−SCSIフレームを選択する方に指向している。これは、ストレージサブシステムが、CKDオペレーションと同じく、各専用の論理ユニット(LU)に対してSCSI−OSDとFC−SCSIオペレーションを処理する能力を有するポートを提供可能であるという利点を有する。第二の実施例は同じ利点を有するが、しかしFCフレームによってSCSI−OSDまたはFC−SCSIを選択する方に指向している。
【0015】
第一の実施例
(1)物理構成
0034 図1は本発明の第一の実施例によるシステムの物理構成の例を示す。システムは一つ以上のPCベースのホスト10(図1のホスト1と2)、一つ以上のメインフレームホスト20(図1のホスト3)、ホストとコミュニケーションを行うストレージサブシステム40、およびストレージサブシステム40を管理するための管理コンソール400を含む。各ホスト10はWindows(R)ベースのPCサーバまたはUnix(R)サーバのような一般的なサーバであることができる。ホスト10はCPU32、メモリ33、およびホストバスアダプタ(HBA)のようなファイバチャネルベースのネットワークインタフェース(I/F)11を含む。ホスト10はまたLAN(示されていない)を経由して他のホストとコミュニケーションを行うためのNIC(Network Interface Card)(示されていない)を有することができ、オペレーティングシステム(OS)データ、ユーザデータ、等を保存するために使用されるローカルストレージ(また、示されていない)を含むことができる。
【0016】
0035 ホスト20はIBMZシリーズメインフレームのような一般的なメインフレームホストであることができる。ホスト20はCPU34、メモリ35、およびFICON(r)(R)ベースのHBAのようなネットワークI/F21を含む。ホスト20はまた他のホストとコミュニケーションを行うためのNIC(示されていない)を有することができ、OSデータ、ユーザデータ、等を保存するためのローカルストレージ(また、示されていない)を含むことができる。
【0017】
0036 ストレージサブシステム40はRAIDテクノロジベースのストレージサブシステムであることが望ましい。ストレージサブシステム40は物理ディスク41とコントローラ45を含む。コントローラ45はCPU36、メモリ37、スイッチ/ハブ30に接続するネットワークインタフェース(I/F)28、および一つ以上の物理ディスク41に接続するディスクインタフェース29を含む。この技術において知られているように、メモリ37はディスク41から読まれるか、またはディスク41に書かれるデータをキャッシングするためのキャッシュメモリを含むことができ、またさらに、停電、キャッシュ障害等の場合にデータ損失を避けるために、バッテリバックアップを有する冗長性不揮発RAM部分、および二重の冗長性コントローラを有するキャッシュミラーを含むことができる。 従って、複数のコントローラ45がストレージサブシステム40内に含まれることができる。
【0018】
0037 スイッチ/ハブ30はホスト10、20からストレージサブシステム40へ接続するための能力を提供する。スイッチ/ハブ30はFC−SCSIプロトコルまたはFICON(R)プロトコルの場合にファイバチャネルスイッチとして物理的に実施可能である。iSCSI(インターネットSCSI)の場合に、スイッチ/ハブ30はEthernet(R)スイッチとして物理的に実施可能である。システムはまた、infiniBand(R)、Token Ring(R)、FDDI、ワイヤレスLAN(すなわち、IEEE802:11A/B/Gにおいて定義されるようなWiFi(R))、等を含む、他のタイプの接続によって実現可能である。
【0019】
0038 ストレージシステム管理コンソール400はまたストレージサブシステム40を管理するために提供されることができ、Windows(R)ベースのPCサーバまたはUnix(R)サーバのような一般的なサーバであることができる。コンソール400は有効なデータコミュニケーションを確実にするためにTCP/IPプロトコルを動作させるEthernet(R)プロトコルを使用するNIC401を有することが望ましい。第二のスイッチ/ハブ410はNIC412を経由してストレージサブシステム40にコンソール400を接続する能力を提供する。スイッチ/ハブ410はEthernet(R)スイッチとして物理的に実施されることが望ましい。しかし、infiniBand(R)、Token Ring(R)、FDDI、ワイヤレスLAN等を含む他のタイプの接続を実施することもできる。コンソール400はまたCPU413とメモリ414を含み、オペレーティングシステム、ユーザ情報等を保存するためのローカルストレージ(示されていない)を含むことができる。コンソール400はLAN411を経由してコントローラ45に接続され、ストレージサブシステム40を管理するためのGUIの能力を有する。
【0020】
(2)論理構成
0039 図2は第一の実施例によるシステムの論理構成の例を示す。システムは、ストレージエリアネットワーク(SAN)31を経由してストレージサブシステム40とコミュニケーションを行う、PCベースのホスト10のハードウエアを使用するFC−SCSIイニシエータ12、これもPCベースのホスト10のハードウエアを使用するSCSI−OSDイニシエータ15、およびメインフレームベースのホスト20のハードウエアを使用するカウントキーデータ(CKD)イニシエータ22を含む。
【0021】
0040 FC−SCSIイニシエータホスト12はI/F11としてファイバチャネルHBA(FC−HBA)13を含み、データベース管理システム(DBMS)、ファイルシステム、等であるアプリケーション14を含む。FC−SCSIイニシエータホストはまたWindows(R)またはUnix(R)のようなオペレーティングシステム(OS)(示されていない)、およびFC−HBA13と他の周辺装置に対するデバイスドライバ(示されていない)を動作させる。ホストがSAN31に接続するためにEthernet(R)を使用する時に、ホストは、FC−HBA13よりもむしろ、I/F11に対するソフトウエアベースのiSCSIデバイスドライバでiSCSIHBAまたは標準NICカードを使用する場合がある。
【0022】
0041 SCSI−OSDイニシエータホスト15はI/F11としてFC−HBA13を含み、DBMS、ファイルシステム等のようなSCSI−OSDアクセス可能なアプリケーション17を含むことが望ましい。FC−SCSIイニシエータホスト12のように、SCSI−OSDイニシエータホスト15はまたWindows(R)またはUnix(R)のようなオペレーティングシステム(OS)(示されていない)、およびFC−HBA13と他の任意の周辺装置に対するデバイスドライバ(示されていない)を動作させる。ホストがSAN31に接続するためにEthernet(R)を使用する時に、ホストは、FC−HBA13よりもむしろ、I/F11としてソフトウエアベースのSCSI−OSD可能なiSCSIデバイスドライバでSCSI−OSD可能なiSCSIHBAまたは標準NICカードを使用する場合がある。
【0023】
0042 CKDイニシエータホスト22はメインフレームホスト20のハードウエアを使用し、I/F21として、チャネル側にN_PORT(node port)を提供可能なFICON(R)I/F23を含む。CKDイニシエータホスト22はまたDBMS等のようなCKDアクセス可能なアプリケーション24を含む。ホスト22はまたIBM Z−OSのようなOS(示されていない)、およびFICON(R)I/F23を制御するためのデバイスドライバを有する。ホストがSAN31に接続するためにEthernet(R)を使用する時に、ホスト22はI/F21としてイーサネット(R)ベースのCKD可能なI/Fを使用する場合がある。
【0024】
0043 SAN31はストレージサブシステム40、ホスト12、15、22の間のコミュニケーションを可能にするために、ストレージサブシステム40にと同じく、ホスト12、15、22にも接続される。SAN接続は、ストレージサブシステム40への接続に依存して、ファイバチャネルスイッチ30によるかまたはEthernet(R)接続によって実現可能である。
【0025】
0044 ストレージサブシステム40はコントローラ45と論理ボリューム42、43、44を含む。一般的に、一つ以上の論理デバイス(LDEV)39が物理ディスク41から生成される。次にLDEVは望みの容量の論理ボリュームを生成するために分割されるかまたは連結される場合がある。論理ユニット番号(LUN)が論理ボリュームに割り当てられている時に、論理ボリュームはまた論理ユニットと呼ばれる場合がある。一般的に、LUNは各論理ボリュームに割り当てられ、各LDEVはFCプロトコルを使用するためにポートにマッピングされる。WWN(World Wide Name)は、多数のIT標準の設定および維持に責任がある世界的な組織であるIEEE(The Institute of Electrical and Electronics Engineers)、によって定義されたフォーマットに従って、ポートとSANの他の構成部分に割り当てられる。WWNを割り当てる各企業はそれらの製品のWWNを使用するためのユニークなコードを取得するためにIEEEに登録する必要がある。
【0026】
0045 コントローラ45上のポート52は一つ以上の物理I/F28によって実施される論理ポートであり、ホスト12、15、および22に対していくつかのプロトコルへのアクセス能力を提供する。その様なアクセス能力を提供するために、コントローラ45はいくつかのモジュールに対するマイクロコードを含む。モジュールはポート52、仮想ポートセレクタ51、FC−SCSI/SCSI−OSDセレクタ50、およびFC−SCSIモジュール47、SCSI−OSDモジュール48、CKDモジュール49のような、各プロトコルを処理するためのモジュールを含む。他のモジュールは論理デバイス(LDEV)マネジャ46(これは後でより詳細に説明される)、パリティグループマネジャ(示されていない)、およびLDEVとのコミュニケーションのための物理I/F29として実施されるポート53を含む。モジュールは以下により詳細にそれぞれ説明される。
【0027】
0046 ポート52はSAN31を通してのホストからのアクセスに対して少なくとも一つのワールドワイドネーム(WWN)を有する。図3はポート52にWWNを関連付けるための典型的なテーブル54の例を示す。テーブル54はポート番号101とポートに割り当てられたWWN102を含む。テーブル54の値は典型的には固定の値としてハードウエアベンダから提供される。しかし、テーブル54は管理コンソール400を経由して管理者によって修正される場合があり、これは後で説明される。
【0028】
0047 仮想ポートセレクタ51はFC−PH(Fibre Channel Physical and signaling interface)プロトコルを実行し、CDB(Command Descriptor Block、コマンド記述ブロック)に対してSCSIとCKDプロトコルの間で区別することによってポート52上の適切なプロトコルを選択する。仮想ポートセレクタ51に関する処理手順の詳細は以下により詳細に論じられる。
【0029】
0048 FC−SCSI/SCSI−OSDセレクタ50は、CDBがFC−SCSIフォーマットに対するものか、またはSCSI−OSDオペレーションコードをベースにしているかを区別する。SCSI−OSDの仕様によると、8800hから8F7FhのSCSI−OSDのサービスアクションコードが使用される時に、SCSI−OSDオペレーションコードは基本のSCSI−OSDのCDB上のバイト0内に7Fhとして定義される。FC−SCSI/SCSI−OSDセレクタ50に対する処理手順の詳細は以下でさらに議論される。LUを選択するために、セレクタ50は各プロトコルグループに利用可能なLUのリストをアクセス可能である必要がある。マイクロコードは、図4のテーブル110内に示されるように、LUに対するプロトコルグループのマッピングを有する。マッピングは、各論理デバイス(LDEV)にアクセスするために使用されるプロトコルグループ111、各プロトコル内のアドレススペース112、例えば、FC−SCSI/SCSI−OSDフォーマット内のLUN、またはCKDフォーマット内のコントロールユニット:コントロールユニットイメージ(CU:CUI)、およびLDEVを特定しそこにデータを保存するためのLDEV番号113を特定する。プロトコルグループ111は各LDEVに対してFC−SCSI、SCSI−OSD、CKD等のようなプロトコルを割り当てる。LDEVに対するLUNは各プロトコルグループにおいてユニークであり、コンソール400を経由して管理者によって定義される。
【0030】
0049 FC−SCSIモジュール47は、CDB(Command Descriptor Block)をベースにしたLBAフォーマットを使用するデバイスの場合にSCSIに対するファイバチャネルのためのANSI標準をベースにしたLUに対するFC−SCSI基本コマンドとSCSIブロックコマンドにおいて定義されるFC−SCSIコマンドセットを処理する。例えば、FC−SCSIモジュール47は論理ブロックアドレス(LBA)と転送長によって特定されるLU上でREADとWRITEコマンドを処理する。FC−SCSIモジュール47はまたFORMAT、INQUIRY、等のような他のコマンドを処理することができる。
【0031】
0050 SCSI−OSDモジュール48はANSIオブジェクトベースのストレージデバイスコマンド(SCSI−OSD)仕様内において定義されるSCSI−OSDコマンドセットを処理する。例えば、SCSI−OSDモジュール48はパーティション内のユーザオブジェクトに対するCREATE、READ、およびWRITEオペレーションを処理する。OSDはLUに対するコマンドを処理する。しかし、SCSI−OSDはアクセス識別子としてPARTITION_IDとUSER_OBJECT_IDを使用するので、そのようなコマンドに対するオペレーションはFC−SCSIコマンドセットとは異なる。従って、SCSI−OSDモジュール48はOSDとしての使用に対する特別のLUを必要とする。
【0032】
0051 SCSI−OSDのLUはUSER_OBJECT_ID、およびUSER_OBJECT_IDと保存セグメントの間のマッピングを提供する。パーティションはセキュリティグループ内において管理するための一セットのユーザオブジェクトを含み、SCSI−OSD内のPARTITION_IDによって管理される。SCSI−OSDホストはユーザオブジェクトに対するセキュリティグループを作成するためにPARTITION_IDを特定しなければならない。
【0033】
0052 ユーザオブジェクトはSCSI−OSDストレージサブシステム内にデータ保存するためのデータセットの単位であり、そのオブジェクトに対するUSER_OBJECT_IDによって管理される。USER_OBJECT_IDはCREATEコマンドオペレーションを使用することによってユーザまたはシステムによって各オブジェクトに対して生成される。もしもCREATEコマンドがUSER_OBJECT_IDとして0を有するならば、SCSI−OSDモジュールはパーティション内の生成されたIDを返す。例えば、SCSI−OSDモジュールは各LUに対して割り当て済および未割り当てUSER_OBJECT_IDを管理する。PARTITION_IDによって定義されたパーティション内の未割り当てUSER_OBJECT_IDはSCSI−OSDフォーマットの使用のためにLUの生成で生成される。USER_OBJECT_IDに対する番号付けは10000hから開始される。CREATEコマンドが受信された時に、SCSI−OSDモジュール48はID番号を返し、PARTITION_ID内の次の割り当て可能なUSER_OBJECT_IDに対するポインタを増やす。
【0034】
0053 ホストが生成されたLUをアクセスする時に、SCSI−OSDモジュール48は、PARTITION_ID内のUSER_OBJECT_IDと保存セグメントとの間のマッピングを管理する必要がある。図5において、典型的なテーブル130はPARTITION_ID内のUSER_OBJECT_IDと割り当て済セグメントとの間の関係を管理するために示される。テーブル130はSCSI−OSDプロトコル内のLU番号131、PARTITION_ID132、OSD仕様内のUSER_OBJECT_IDに対応するUSER_OBJECT_ID133、オブジェクト内のデータに対する長さ134、およびセグメントプールからの割り当て済セグメント135を含む。セグメントはLDEV上の論理ブロックアドレス(LBA)ブロックの集合体である。LDEV上のLBAはある一定のサイズによって分割される。例として、この開示内容は分割されたサイズとして8KB(8192バイト)を使用する。各分割されたLBAはセグメントとして使用される。各セグメントはセグメントを識別するための番号を有する。各セグメント番号に対するLBAの計算は次のようである:

LBA = セグメント番号 x 8192バイト/512バイト

0054 SCSI−OSDのLUの生成の際に、SCSI−OSDモジュール48はセグメントプールを生成する。図6は典型的なプール120を示す。プールは、図4のテーブル110内のプロトコルグループ111から決定されるSCSI−OSDプロトコルグループ内のLU121と、未割り当てセグメント122から成る。SCSI−OSDのLUの最初の生成の際に、SCSI−OSDモジュール48は未割り当てセグメントの列122内へ生成されたセグメントの全てを配置する。
【0035】
0055 SCSI−OSDモジュール48を通してのSCSI−OSDのLU43へのホストアクセスに関して、他の主要なアクセスコマンドはREADとWRITEコマンドである。PARTITION_IDとUSER_OBJECT_IDを指定するWRITEコマンドがホストから受信される時に、SCSI−OSDモジュールは図5のテーブル130内の一致するPARTITION_IDとUSER_OBJECT_IDの存在をチェックする。もしもエントリがないと、モジュールはエラーを返す。もしも一致するエントリがあると、モジュールはバイト36からバイト37のWRITE CDB内の長さをチェックし、指定された長さのサイズを含むことが可能なセグメントをセグメントプール122から割り当て、SCSI−OSDグループのLU上の適切な論理ユニットに対して図5のテーブル130の列135にこれらを加える。例えば、もしも長さが15360バイトを示し、セグメントサイズが8KBであると、割り当てられるセグメントの数は2である。SCSI−OSDモジュールはセグメントプール122からセグメント20、21のような二つのセグメントを集める。テーブル130の割り当て済セグメントの列135内のセグメント番号の順序はPARTITION_IDとUSER_OBJECT_IDに対するアドレスの順序である。次にSCSI−OSDモジュール48はSCSI WRITEコマンド経由でセグメント上にデータを書き込み、もしもSCSI−OSD WRITEオペレーションが成功であると、SCSIセンスコードによってWRITEコマンドの成功を返す。
【0036】
0056 PARTITION_IDとUSER_OBJECT_IDを指定するREADコマンドが受信された時に、SCSI−OSDモジュール48は図5上のテーブル130内の指定されたPARTITION_IDとUSER_OBJECT_IDの存在をチェックする。例えば、もしもエントリがないと、モジュールはエラーを返す。もしもエントリがあると、SCSI−OSDモジュール48はテーブル130から取り出された割り当て済セグメント番号をベースに割り当て済セグメントからデータを読み出す。従って、PARTITION_IDとUSER_OBJECT_IDを使用して、ホストからのアプリケーションはREADとWRITEコマンドを使用してオブジェクトベースのフォーマットでデータを読み出しおよび書き込み可能である。
【0037】
0057 CKDモジュール49はFICON(R)プロトコルを処理し、LDEVにカウントキーデータ(CKD)フォーマットとしてデータを保存する。FICON(R)プロトコルに関して、ANSI FC−SB仕様内に単一バイトコマンドコードセット(Single Byte Command Code Sets(SBCCS))として標準文書がある。CKDモジュールが仮想ポートセレクタ51によって選択されると、ポート52はN_PORTとして動作し、データアクセスに対してコントロールユニット(Control Unit(CU))とコントロールユニットイメージ(Control Unit Image(CUI))を提供する。FCプロトコル内のN_PORTはポイントツーポイントリンクを経由して単一N_PORTか単一F_PORT(fabric port)のいずれかに接続する“ノード”ポートである。N_PORTは接続されたシステムへのおよび接続されたシステムからのメッセージユニットの生成、検出および流れを取り扱う。N_PORTはファブリックを通しての仮想のポイントツーポイントリンク内の最終ポートであり、例えば、N_PORTからF_PORTまたはF_PORTからN_PORTは単一のファイバチャネルファブリックスイッチを通過しての一つのノードから他へのコミュニケーションである場合がある。
【0038】
0058 プロトコルグループとLDEVに対するマップはデータ保存を特定するためのLDEVとCU:CUIの間の関係を使用する。LBAアドレススペースを使用したCKDに対するフォーマットの詳細に関係して、上記のKitamuraその他の米国特許NO6,499,056、の例えば、カラム3ライン50からカラム4ライン46、および図2を参照。Kitamuraその他の特許において、CKDデータはESCON(R)プロトコルを使用してLBAアドレススペース上に保存される。本発明において、ストレージサブシステム40とホスト22の間の接続はESCON(R)の代わりにFICON(R)であり、しかし、FICON(R)プロトコルはESCON(R)プロトコルと同じ方法でCKDフォーマットアクセスを実行するので、この違いはFICON(R)を使用する時のCKDアクセスの方法に影響しない。さらに、本発明において、論理ブロックアドレスはLDEVによって提供され、次にCKDモジュール49は米国特許NO6,499,056によって教示された方法でCKDフォーマットとLBAフォーマットの間で変換する。
【0039】
0059 LDEVマネジャ46はパリティグループを管理し、LDEV39を提供する。LDEVマネジャ46はRAID0/1/2/3/4/5/6テクノロジを使用したディスクからのいくつかのパリティグループを含む。RAID6は、RAID5テクノロジをベースに、二重パリティ保護を使用する。生成されたパリティグループは図7に示されるLDEV構成テーブル140に載せられる。テーブル140はストレージサブシステム内のパリティグループを識別するパリティグループ番号に対する列141、RAIDテクノロジから生成された使用可能容量サイズ142、RAID構成143、および各RAIDグループに対する物理ディスクのリスト144を含む。各LDEVに対して、LDEVマネジャ46はLBAに対して読み出し/書き込みアクセスを提供する。読み出しと書き込みアクセスは開始LBAから最終LBAまでの一単位のLBAにより、これは以下により詳細に説明される。
【0040】
0060 FC−SCSIモジュール47もまた定義されたパリティグループから生成されたLDEV39を管理する。各LDEV39は、LUまたはコントロールユニットイメージがホストから/へデータを保存および返すために論理ストレージ領域を提供する。LDEVはパリティグループの一部であり、管理者はLDEVの番号を加えることによってLDEVの範囲を定義し、初期的にフォーマッティングをする。LDEVとパリティグループの間のマッピングはコントローラ45によってLDEV構成テーブル140に従って管理される。列141によるパリティグループ番号において、LDEV構成テーブル140内の記録はストレージサブシステム40内のLDEV39を識別するためのLDEV番号145、パリティグループ上の適切なLDEV開始アドレスを表す開始LBA146、およびパリティグループ上の特定のLDEV終了アドレスを表す終了LBA147を含む。
【0041】
0061 ストレージサブシステム40のモジュール46−53のそれぞれは、コントローラ(CTL)上で実行され、管理コンソール400または内部サービスコンソール(示されていない)経由でメモリ、光媒体、フロッピディスク、または他の交換可能なデバイスのような、コンピュータで読み取り可能な媒体からインストールされたか、またはこの媒体上に保存されたプログラムコードとして提供されるマイクロコードにて実現可能である。
【0042】
(3)セレクタの振る舞い
0062 本発明は各プロトコルグループ内の適切なLDEVに対してプロトコルを選択する方法を提供する。適切なLDEVを選択するために、仮想ポートセレクタモジュール51とFC−SCSI/SCSI−OSDセレクタモジュール50は重要な役割を演じる。これらのモジュールの機能動作の詳細は以下に論じられる。
【0043】
(4)仮想ポートセレクタ
0063 図8に関して、仮想ポートセレクタモジュール51がFC−2ヘッダからの情報を使用してコマンドを取り扱うための適切なプロトコルモジュールを選択する処理フローが示される。典型的なFC−2ヘッダ801のフォーマットは図17に示され、FC−FS(Frame and Signal)2仕様をベースにしている。TYPEフィールド802に関して、もしもエントリが“08h”であると、フォーマットはFC−SCSIまたはSCSI−OSDであると考えられることができ、これは、コマンドがFC−SCSIをベースにしており、FC−SCSI/SCSI−OSDセレクタ50に進められるべきであることを示しているからである。しかし、もしもTYPEフィールド802内のエントリが“18h”、“1Ch”、または“1Bh”であると、コマンドはSBCCS(Single Byte Command Code Sets)に関係しており、これはコマンドがCKDモジュール49によって処理されるべきであることを示している。
【0044】
0064 コマンドが仮想ポートセレクタモジュール51に送られる時に、セレクタモジュール51は図8に示されるように、次のステップを実行する。
【0045】
0065 ステップ211:仮想ポートセレクタモジュール51がコマンドに対するFC−フレームのヘッダを取得する。
【0046】
0066 ステップ212:仮想ポートセレクタモジュール51がプロトコルのTYPE802をチェックする。もしもTYPEが“08h”であると、コマンドがSCSIコマンドであると決定され、処理手順はステップ213に進み、コマンドがFC−SCSIであるか、またはSCSI−OSDであるかを決定する。もしもTYPE802が“08h”以外であると、コマンドはCKDコマンドであることが明らかであると決定され、処理手順はステップ214に進む。
【0047】
0067 ステップ213:仮想ポートセレクタモジュール51はオペレーションをFC−SCSI/SCSI−OSDセレクタ50に進める。FC−SCSI/SCSI−OSDセレクタ50は、図9に関して以下により詳細に説明されているように、コマンドがFC−SCSIであるか、またはSCSI−OSDであるかを決定するためにCDBオペレーションを実行する。
【0048】
0068 ステップ214:仮想ポートセレクタモジュール51はコマンドのプロトコルのTYPE802をチェックする。もしもTYPEが、SBCCSとCKDフォーマットを処理する“18h”、“1Ch”、または“1Bh”、であると、処理手順はステップ215に進む。もしもプロトコルがそれ以外であると、処理手順はステップ216に進む。
【0049】
0069 ステップ215:仮想ポートセレクタモジュール51はオペレーションをCKDモジュール49に進める。CKDモジュール49はCKDオペレーションを実行する。
【0050】
0070 ステップ216:要求されたプロトコルを処理できないので、仮想ポートセレクタモジュール51はエラーを返す。
【0051】
(5)FC−SCSI/SCSI−OSDセレクタ
0071 図9に関して、FC−SCSI/SCSI−OSDセレクタモジュール50に対する処理フローが示されている。FC−SCSI/SCSI−OSDセレクタ50は、FC−SCSIオペレーションコードの一部分をベースに、CDBがFC−SCSIに対するものか(すなわち、FBAフォーマット)、またはオブジェクトータイプのフォーマットであるかを区別する。テーブル811は、図18に示されているが、ANSI OSD仕様に従ったCDBの一般的な例である。ANSI OSD仕様によって、SCSI−OSDのオペレーションコードは標準SCSI−OSDのCDB上の第0バイト内に“7F”として定義され、第8バイトから第9バイトのサービスアクション814は8800hから8F7Fhである。オペレーションコードはOSDタイプのデバイスに対するコマンドを処理するためのコマンド識別子であり、OSDに対するANSI標準仕様に従って設定されている。この標準によって定義されるコマンドに対して、CDB内のサービスアクションフィールドは各コマンド機能をユニークに特定する。SCSI−OSDコマンドをFC−SCSIコマンドから区別するためのこれらの要求をベースに、コマンドのフォーマットを選択する処理手順は以下のようである。
【0052】
0072 ステップ220:FC−SCSI/SCSI−OSDセレクタ50はCDBを処理する要求を受信する。
【0053】
0073 ステップ221:FC−SCSI/SCSI−OSDセレクタ50はCDBコマンドを調べる。もしも第0バイト内のオペレーションコード812が“7Fh”であり、第7バイトから第8バイトのサービスアクション814が8800hと8F7Fhの間であると、CDBはSCSI−OSDに対するものであり、処理手順はステップ223に進む。もしもオペレーションコード812が7Fh以外であると、処理手順はステップ225に進む。
【0054】
0074 ステップ223:FC−SCSI/SCSI−OSDセレクタ50はCDBで指定されたLUを選択する。セレクタ50がLUを選択する時に、図4のLU−LDEVマッピングテーブル110からLUを選択する。テーブル110のマッピングはプロトコルのグループ、LU、LDEV番号を含む。このステップで、セレクタ50は、コマンドがSCSI−OSDタイプであると決定する。セレクタ50はSCSI−OSDグループ内のLUからCDBによって指定されたLUを選択する。
【0055】
0075 ステップ224:FC−SCSI/SCSI−OSDセレクタ50は、コマンドを実行するためにCDB処理をSCSI−OSDモジュール48に進める。
【0056】
0076 ステップ225:FC−SCSI/SCSI−OSDセレクタ50は、コマンドがSCSI−OSDフォーマットの中にないと決定し、従ってセレクタ50は、コマンドがFC−SCSIフォーマットに対するものであると決定する。セレクタ50はテーブル110を使用してCDBによって指定されたLUを選択する。セレクタ50がLUを選択する時に、テーブル110のLU−LDEVマッピングから、およびFC−SCSIグループからLUを選択する。セレクタ50はFC−SCSIグループからCDB内において指定されたLUを選択する。
【0057】
0077 ステップ226:FC−SCSI/SCSI−OSDセレクタ50はコマンドを実行するためにCDB処理をFC−SCSIモジュール47に進める。
【0058】
(6)各プロトコルの振る舞い
0078 仮想ポートセレクタ51とFC−SCSI/SCSI−OSDセレクタ50を含む本発明のモジュールを使用して、ストレージサブシステム40はポート上の各適切なLDEVに対するいくつかのプロトコルを処理可能である。
【0059】
0079 図10は、ポートがいくつかのプロトコル、FC−SCSI、SCSI−OSD、およびCKDによって共有される時の一例を示す。この例において、三つのタイプのホスト、FC−SCSIイニシエータホスト12、SCSI−OSDイニシエータホスト15、およびCKDホスト22がある。これらのホストはSAN31に接続可能である。ストレージサブシステムもまたポート52からSAN31に接続可能であり、管理者等によって構成された各プロトコルに対する論理デバイスを構成する。この構成において、LDEV1はFC−SCSIグループ内にLU−042を含み、LDEV2はSCSI−OSDグループ内にLU−043を含み、LDEV10はCKDグループ内にあり、CU0:CUI044を含む。ホスト12、15、22はそれらの特定のフォーマットに対する各アクセス可能なLDEVをアクセス可能である。例えば、FC−SCSIイニシエータホスト12はLDEV1にアクセスし(矢印820)、SCSI−OSDイニシエータホスト15はLDEV2にアクセスし(矢印822)、CKDホスト22はLDEV10にアクセスする(矢印824)。
【0060】
0080 図11A−11Cは図10内の各フォーマットタイプに対するホストによるアクセスの処理手順の詳細を示す。すべてのケースに対して、処理手順はファイバチャネルプロトコル内のポートログイン(PLOGI)、プロセスログイン(PRLI)の後に開始する。FC−SCSIのケースに関して、 図11Aに示されるように、処理手順は以下のようである:
0081 ステップ901:ホストはFCヘッダを有するFC−SCSIコマンドを仮想ポートセレクタ51に発行する。
【0061】
0082 ステップ902:仮想ポートセレクタ51は、コマンドがSCSIコマンドであるか、またはCKDコマンドであるかを決定し、コマンドがSCSIコマンドであると決定すると、FC−SCSI/SCSI−OSDセレクタ50にコマンドを進めて、コマンドがFC−SCSIマンドであるかまたはSCSI−OSDコマンドであるかを決定する。
【0062】
0083 ステップ903:FC−SCSI/SCSI−OSDセレクタ50はコマンドがFC−SCSIコマンドであるか、またはSCSI−OSDコマンドであるかを決定し、コマンドがFC−SCSIコマンドであると決定すると、READまたはWRITEコマンドのようなコマンドをFC−SCSIモジュール47に進める。
【0063】
0084 ステップ904:FC−SCSIモジュール47はFC−SCSIコマンドを処理する。もしもFC−SCSIモジュールがLDEV、すなわちLDEV1上のデータへのアクセスを有する必要があると、LDEVマネジャ46は対象LDEV上の要求されたブロックに対する読み出しまたは書き込みコールを実行する。もしも、INQUIRYコマンドのケースのように、コマンドがFC−SCSIモジュール47で処理可能であると、コマンドは処理され、処理手順はステップ906に進む。
【0064】
0085 ステップ905:LDEVマネジャモジュール46は結果をFC−SCSIモジュール47に返す。
【0065】
0086 ステップ906:FC−SCSIモジュールはホストにCHECK CONDITIONとして結果を返す。もしもエラーがあると、SCSIセンスキーはエラーに関する詳細情報を示すために含まれる。
【0066】
0087 ステップ907:FC−SCSI/SCSI−OSDセレクタ50は仮想ポートセレクタ51にまたは直接ポート52にFC−SCSIセンスキーによって結果を送る。
【0067】
0088 ステップ908:FCヘッダを有するFC−SCSIコマンドの結果は次にホストに送られる。ステップ901からステップ908までのFC−SCSIの実行の後で、FC−SCSIイニシエータホスト12は他のFC−SCSIコマンドを処理し続けることができる。
【0068】
0089 次に、図11Bを参照して、SCSI−OSDコマンドを処理するケースに対して、処理手順は以下のようである。
【0069】
0090 ステップ911:ホスト15はFCヘッダを有するSCSI−OSDコマンドを仮想ポートセレクタ51に発行する。
【0070】
0091 ステップ912:仮想ポートセレクタ51はコマンドがSCSIかまたはCKDかを決定し、コマンドがSCSIであると決定すると、コマンドをFC−SCSI/SCSI−OSDセレクタ50に進める。
【0071】
0092 ステップ913:FC−SCSI/SCSI−OSDセレクタ50はコマンドがFC−SCSIであるかまたはSCSI−OSDであるかを決定し、コマンドがSCSI−OSDであると決定すると、コマンドをSCSI−OSDモジュール48に送る。
【0072】
0093 ステップ914:SCSI−OSDモジュール48はCREATE、READ、およびWRITEのようなSCSI−OSDコマンドセットをベースに、コマンドを処理する。READとWRITEのケースにおいて、LDEV内のデータへのアクセスは、テーブル130に関して上記に説明されたようにPARTITION_IDとUSER_OBJECT_IDによって指定されたセグメント情報を使用して行われる。SCSI−OSDモジュール48は各要求されたセグメントに対してLDEVマネジャ46に読み出しまたは書き込み要求を発行する。もしもいくつかのセグメントがあると、SCSI−OSDモジュール48はLDEVマネジャ46に各セグメントに対するいくつかのSCSI−OSDコマンドを発行できる。もしもコマンドがLDEVへのデータアクセスを要求せず、さらにSCSI−OSDモジュール48がコマンドを内部的に処理可能である場合、処理はステップ916に進む。
【0073】
0094 ステップ915:LDEVマネジャモジュールはSCSI−OSDモジュール48に任意の要求された結果を返す。
【0074】
0095 ステップ916:SCSI−OSDモジュールは返されたオブジェクトデータをベースにオブジェクトに対するデータを再組み立てし、FC−SCSI/SCSI−OSDセレクタ50に結果を返す。もしもセグメントに対してFC−SCSIアクセスのエラーがあると、SCSI−OSDモジュールはエラーコンディションを有するCONDITION STATUSであるエラーを返す。
【0075】
0096 ステップ917:FC−SCSI/SCSI−OSDセレクタ50は仮想ポートセレクタ51にまたは直接ポート52にFC−SCSIセンスキーによって結果を送る。
【0076】
0097 ステップ918:FCヘッダを有するSCSI−OSDコマンドの結果は次にホスト15に送られる。ステップ911からステップ918までのFC−SCSIの実行の後に、SCSI−OSDイニシエータホスト15は他のSCSI−OSDコマンドを処理続行可能である。
【0077】
0098 図11Cに示されるように、CKDコマンドを処理するケースは次のようである。
【0078】
0099 ステップ921:ホスト22は、フレームのTYPE802として“18h”、“1Ch”または“1Bh”であるFCヘッダを有するCKDコマンドを仮想ポートセレクタ51に発行する。
【0079】
0100 ステップ922:仮想ポートセレクタ51はコマンドがCKDコマンドであると決定し、CKDモジュール49にコマンドを進める。
【0080】
0101 ステップ923:CKDモジュール49はCKDコマンドを処理し、必要に応じて、読み出し/書き込み機能がLDEV10内の適切なLBAをアクセスするためにLDEVマネジャ46をコールする。もしもCKDモジュールがLDEV10に対していくつかの読み出し/書き込みアクセスを必要とすると、CKDモジュールはLBAアドレススペースをベースにしてLDEV10へのいくつかの読み出し/書き込みコールを実行できる。
【0081】
0102 ステップ924:LDEVマネジャモジュール46はCKDモジュール49に結果を返す。
【0082】
0103 ステップ925:CKDモジュールはCKDオペレーションの結果を仮想ポートセレクタ51にまたは直接ポート52に返す。もしも読み出し/書き込みコールの間にエラーが発生すると、CKDモジュール49はエラーを返す。
【0083】
0104 ステップ926:FCヘッダを有するCKDコマンドの結果は次にホストに送られる。
【0084】
第二の実施例
0105 第二の実施例の下で、ストレージシステムは、第一の実施例においてのようなCDB内の情報をチェックする代わりに、FC情報ユニットフレーム内のFCP_LUNエントリをベースに、コマンドをFC−SCSIコマンドとして、またはSCSI−OSDコマンドとして処理するべきかを決定する。このFC情報ユニットフレームは、単一のシーケンスCMMNDペイロードとして転送されるためにファイバチャネルプロトコルによって特定されたデータの組織化された集合体である。
【0085】
0106 従って、第二の実施例は、LUの番号付けが各SCSI−OSDのLUとFC−SCSIのLUに対して提供される点において第一の実施例と異なる。この例において、各LUNは別個の番号を受信し、特定のタイプの処理、すなわちFC−SCSIかまたはSCSI−OSDのいずれか、に対して特定される。このマッピングテーブルの修正版は図12のテーブル110aとして示される。例えば、テーブル110aの列112内に示されるように、LUN1はFC−SCSIストレージに対して生成されることができ、LUN2はSCSI−OSDストレージに対して生成されることができる。LUNとLUNの処理の間のこのマッピングを示すために、各LUNに割り当てられた番号はストレージシステムに対してユニークである必要がある。グループをフォーマッティングするためのLUNのマッピングは管理コンソール400を使用して管理者によって定義されることができる。
【0086】
0107 この実施例と上記に説明された実施例との間のさらなる違いは、コマンドがFC−SCSIプロトコル内か、またはSCSI−OSDプロトコル内かを決定するために使用される処理手順である。上記に説明された第一の実施例において、FC−SCSI/SCSI−OSDセレクタ50はCDB内に含まれた情報をチェックし、グループ内のLUを選択する(図9内のステップ222、223、225を参照)。しかし第二の実施例において、FC−SCSI/SCSI−OSDセレクタ50はFCフレーム内において特定されたFCP_LUNをチェックし、各LUNに対して適切なプロトコルを選択する。図19はFC−SCSIのANSIファイバチャネルプロトコル、第三版FCP−3に対する典型的なペイロード820のフォーマットを示す。ペイロード820はそのコマンドに対して特定されたFCP_LUN822をバイト0から7に含み、これは、どのLUNがホストによって指定されたかを決定し、それによって、コマンドのプロトコルを決定するために使用されることができる。仮想ポートセレクタモジュール51によって実行される処理手順は第二の実施例において同じである。従って、図8に述べられた処理手順のその部分はここで繰り返される必要はない。従って、第二の実施例のFC−SCSI/SCSI−OSDセレクタ50によって実行される処理手順は図13に示され、以下に説明される。
【0087】
0108 ステップ320:FC−SCSI/SCSI−OSDセレクタ50はFC情報ユニット820を受信する。これは、ファイバチャネルサービスインタフェースによって単一のシーケンスとして転送されるためにファイバチャネルプロトコルによって特定されたデータの組織化された集合体である。
【0088】
0109 ステップ321:FC−SCSI/SCSI−OSDセレクタ50は対象のLUN番号を取得するためにFC情報ユニット820内のFCP_LUNフィールド822を調べる。セレクタ50は次に、図12の列112内において指定されたLUNをベースに、指定されたLUNを選択し、列111から一致したプロトコルグループを見つけるために図12のテーブル110aにアクセスする。
【0089】
0110 ステップ322:FC−SCSI/SCSI−OSDセレクタ50は見つけられたプロトコルグループをチェックする。もしもグループがSCSI−OSDであると、処理手順はステップ323に進む。もしもグループがSCSI−OSDではないと、処理手順はステップ324に進む。
【0090】
0111 ステップ323:FC−SCSI/SCSI−OSDセレクタ50は選択されたLUNに対してSCSI−OSDモジュール48にCDB処理を進める。
【0091】
0112 ステップ324:FC−SCSI/SCSI−OSDセレクタ50は選択されたLUNに対してFC−SCSIモジュール47にCDB処理を進める。処理の残りは第一の実施例に関して上記で説明されたものと同様である。
【0092】
第三の実施例
0113 第三の実施例におけるアクセス方法は、OSDデバイスがオブジェクトベースのストレージデバイスとしてだけでなく、OSDデバイスのバックアップの目的のためのFC−SCSIデバイスとしてもアクセスされることができること以外は、第二の実施例に関して説明されたものと同様である。OSDデバイスをバックアップするために、FBAフォーマットを使用してデータをコピーし保存する(すなわち、データのブロックをコピーする)ことが望ましい。何故ならば、これは典型的には、各オブジェクを個別にコピーし保存するよりもずっと少ない時間しか必要としないからである。
【0093】
0114 第三の実施例において、第二の実施例に対して図12に示されたマッピングテーブル110aの代わりに、ストレージコントローラ45は図14に示されるように、マッピングテーブル110bを管理する。テーブル110bはMODE114に対するエントリを含む。対応するLDEV113のMODE114の値が1である時に、LDEVはFC−SCSIコマンドを使用してホストによってアクセスされることが可能である。LDEVがOSDとして定義される時に、MODE114は管理コンソール400を経由して管理者によって設定されることが可能である。
【0094】
0115 第三の実施例において、オブジェクトとセグメントの間のマッピングは、第一の実施例において図5に関して説明されたように、各LDEV内に保存される。図15はOSDに対して第三の実施例において使用されることができるLDEV500の構成を示す。LDEV500は、オブジェクト(OSD内の)が保存される範囲であるオブジェクト領域501を含む。LDEV500はさらにマッピングテーブル(図5)とプールテーブル(図6)を保存するために使用されることができるテーブル領域502を含む。LDEVがOSDとして使用される時に、オブジェクト領域501だけがホストからオブジェクトを保存/読み出しをするために使用可能である。しかし、LDEVがLDEVをバックアップする目的でFC−SCSIデバイスとしてアクセスされる時に、ストレージコントローラ45はホストがオブジェクト領域501とテーブル領域502の両方をアクセスすることを可能にする。
【0095】
0116 図16は第三の実施例に対するFC−SCSI/SCSI−OSDセレクタ50の処理フローを示す。処理は、ステップ331から332が追加された以外は、第二の実施例に関して図13に述べられた内容と同様である。
【0096】
0117 ステップ320:FC−SCSI/SCSI−OSDセレクタ50はFC情報ユニット820を受信する。
【0097】
0118 ステップ321:FC−SCSI/SCSI−OSDセレクタ50は対象LUN番号を取得するためにFC情報ユニット820内のFCP_LUNフィールド822を調査し、図14のテーブル110b内のLUN列112から一致したプロトコルグループ111を見つけるためにLUNを選択する。
【0098】
0119 ステップ322:FC−SCSI/SCSI−OSDセレクタ50は見つけられたプロトコルグループをチェックする。もしもグループがSCSI−OSDであると、処理手順はステップ331に進む。もしもグループがSCSI−OSDではないと、処理手順はステップ324に進む。
【0099】
0120 ステップ331:FC−SCSI/SCSI−OSDセレクタ50はCDBコマンドを調査する。もしもオペレーションコードとサービスアクションが、図9のステップ222に述べられている処理で上記に説明されているように、SCSI−OSDプロトコルに一致すると、処理はSCSI−OSDコマンドであり、処理はステップ323に進む。もしもそうでないと、コマンドはFC−SCSIフォーマット内のバックアップコマンドである場合があり、処理はステップ332に進む。
【0100】
0121 ステップ332:FC−SCSI/SCSI−OSDセレクタ50は図14のテーブル110b内のMODE114をチェックする。もしもMODE114が1であると、処理はFC−SCSIコマンドとしてフレームを処理するためにステップ324に進む。これは、コマンドがFC−SCSIプロトコルを使用してOSDをバックアップするためのバックアップコマンドであることを示す。しかし、もしもMODE114が1でないと、OSDに対するLDEVはFC−SCSIコマンドを使用することによる以外の方法でアクセスされるべきでないので、セレクタ50はコマンドを送ったホストにエラーを返す。
【0101】
0122 ステップ324:FC−SCSI/SCSI−OSDセレクタ50は選択されたLUNで処理するためにFC−SCSIモジュール47にCDBコマンドを進める。
【0102】
0123 ステップ323:FC−SCSI/SCSI−OSDセレクタ50は選択されたLUNで処理するためにSCSI−OSDモジュール48にCDBコマンドを進める。
【0103】
0124 第三の実施例において、OSDとして使用されるLDEV500はFC−SCSIイニシエータホスト12によってアクセス可能である。これは、オブジェクトベースのフォーマットで保存されたデータをFC−SCSIプロトコル(FBAフォーマット)に従ってバックアップデバイス(テープのような)にバックアップするのに有用である。LDEV500内の範囲全体(テーブルエリア502を含む)を読むこと、およびバックアップデバイスにそれらを書き込むことによって、オブジェクトとオブジェクト−セグメントマッピングの両方が一緒にバックアップされることが可能なので、バックアップはより速く実行可能である。データをリストアする時に、ユーザまたはホスト10がOSDとして使用されるLDEVに全データを書き戻すことを完了した後に、LDEVはSCSI−OSDプロトコルを使用してアクセスされることが可能である。
【0104】
0125 上記に説明された処理において、そのMODE114が1であるOSDはFC−SCSIイニシエータホスト12から読み出しまたは書き込みされることが可能である。しかし、他の実施例において、ストレージコントローラ45はイニシエータデバイスとして動作できる。すなわち、テープライブラリのようなバックアップデバイスがSAN31に接続される環境において(FCスイッチ/ハブ30を経由してのような)、OSD(そのMODE114が1)内のデータをバックアップするために、ストレージコントローラ45はOSD内のデータをコピーし、バックアップデバイスに直接書き込むことが可能である。また、そのMODE114が1であるOSDにデータをリストアするために、リストアオペレーションがホストコンピュータの介入無しに実行可能なように、ストレージコントローラ45はバックアップデバイスからデータを読み出し、それをOSDに書き戻すことが可能である。バックアップまたはリストアオペレーションの起動がコンソール400から実行可能である。または他の実施例において、バックアップまたはリストア命令はホスト10から発行可能である。
【0105】
0126 特定の実施例がこの明細書において図示され説明されたが、この技術に通常程度に精通した人達は、同じ目的を達成するために計画された任意の調整が開示された特定の実施例を置き換えることができることを理解する。この開示内容は本発明の任意のおよび全ての適応と変更を包括することを意図し、上記の説明は説明的な形式で行われたが、限定的なものではないことを理解されるべきである。従って、本発明の範囲は添付の特許請求項に関して、その特許請求項に与えられた権利と同等内容の全範囲とともに、適切に決定されるべきである。
【図面の簡単な説明】
【0106】
【図1】0013 図1は第一の実施例によるシステムの物理構成の例を示す。
【図2】0014 図2は第一の実施例によるシステムの論理構成の例を示す。
【図3】0015 図3はポートの構成に対する従来のテーブルの例を示す。
【図4】0016 図4は本発明の一実施例によるデータアクセスプロトコルグループとローカルユニットのマッピングを示す。
【図5】0017 図5はPARTITION_ID、USER_OBJECT_ID、長さおよび割り当て済セグメントの関係の典型的なテーブルを示す。
【図6】0018 図6はLUと未割り当てセグメントのセグメントプールを示す。
【図7】0019 図7はパリティグループ、ディスクおよびLDEVの間の関係を示すテーブルを示す。
【図8】0020 図8は仮想ポートセレクタのオペレーションの例のフローチャートを示す。
【図9】0021 図9はFC−SCSI/SCSI−OSDセレクタのオペレーションの例のフローチャートを示す。
【図10】0022 図10は異なるプロトコルのホストによるポートへの共有されたアクセスの例を示す。
【図11A】0023 図11Aは図10内の各ホストタイプのそれぞれに対するアクセス処理手順を示す。
【図11B】図11Bは図10内の各ホストタイプのそれぞれに対するアクセス処理手順を示す。
【図11C】図11Cは図10内の各ホストタイプのそれぞれに対するアクセス処理手順を示す。
【図12】0024 図12は図4とは異なる実施例によるプロトコルグループと論理ユニットをマッピングする修正版を示す。
【図13】0025 図13は図9内に示されたセレクタのオペレーションとは異なるFC−SCSI/SCSI−OSDセレクタのオペレーションの別の例のフローチャートを示す。
【図14】0026 図14は図4と図12のそれは異なる実施例によるプロトコルグループと論理ユニットをマッピングするさらに修正した版を示す。
【図15】0027 図15は本発明の実施例によるLDEVの例を示す。
【図16】0028 図16は図9と図13内に示されたオペレーションとは異なるFC−SCSI/SCSI−OSDセレクタのオペレーションのさらに他の例のフローチャートを示す。
【図17】0029 図17はFC−2ヘッダの典型的なフォーマットを示す。
【図18】0030 図18はCDBの一般的な例を示す。
【図19】0031 図19はFCPコマンド情報ユニット(IU)フォーマットの典型的な例を示す。
【出願人】 【識別番号】000005108
【氏名又は名称】株式会社日立製作所
【出願日】 平成18年8月31日(2006.8.31)
【代理人】 【識別番号】100100310
【弁理士】
【氏名又は名称】井上 学

【識別番号】100091720
【弁理士】
【氏名又は名称】岩崎 重美

【識別番号】100094271
【弁理士】
【氏名又は名称】渡邊 孝弘

【識別番号】100091719
【弁理士】
【氏名又は名称】忰熊 嗣久


【公開番号】 特開2007−141216(P2007−141216A)
【公開日】 平成19年6月7日(2007.6.7)
【出願番号】 特願2006−234891(P2006−234891)