(57)【要約】ストレージ・エリア・ネットワークのネットワーク装置上で記憶の仮想化を実施する方法及び装置が開示される。フレーム又はパケットが、ネットワーク装置のポートで受け取られる。次に、フレーム又はパケットが、ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係することが判断される。次に、１つ又はそれ以上の物理的記憶位置と仮想記憶位置との間の仮想・物理的マッピングが獲得される。次に、新しい又は修正されたフレーム又はパケットが、仮想・物理的マッピングにより特定されたイニシエータ又はターゲットに送られる。
2005525619.tif 000002
【特許請求の範囲】
【請求項１】
ストレージ・エリア・ネットワークのネットワーク装置上で記憶の仮想化を実施する方法であって、
（ａ）前記ネットワーク装置のポートでフレーム又はパケットを受け取り、
（ｂ）前記フレーム又はパケットが、前記ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係することを判断し、
（ｃ）前記１つ又はそれ以上の物理的記憶位置と前記仮想記憶位置との間の仮想・物理的マッピングを獲得し、
（ｄ）新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定されたイニシエータ又はターゲットに送る、
段階を含むことを特徴とする方法。
【請求項２】
前記ネットワーク装置が、スイッチ、ルータ、ｉＳＣＳＩゲートウェイ、又はスイッチング機能を実行するように構成された他のネットワーク・ノードであることを特徴とする請求項１に記載の方法。
【請求項３】
前記仮想ストレージ・ユニットが、ＶＬＵＮ、又は前記ストレージ・エリア・ネットワーク上のストレージの他の仮想表現を含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記ステップ（ｂ）、前記ステップ（ｃ）、及び前記ステップ（ｄ）が、前記ネットワーク装置の前記ポート専用の論理によって実行されることを特徴とする請求項１に記載の方法。
【請求項５】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、ファイバー・チャンネル・フレームであることを特徴とする請求項１に記載の方法。
【請求項６】
前記ネットワーク装置の前記ポートで受け取られた前記フレームが、ｉＳＣＳＩフレームであることを特徴とする請求項１に記載の方法。
【請求項７】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、読み取り又は書き込みコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、ＳＣＳＩ読み取り又は書き込みコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項９】
前記フレーム又はパケットが仮想記憶位置のアクセスに関係することの判断が、前記イニシエータからの該フレーム又はパケットにおいて、前記仮想ストレージ・ユニットのアドレスを識別する段階を含むことを特徴とする請求項１に記載の方法。
【請求項１０】
前記アドレスが宛先アドレスであることを特徴とする請求項９に記載の方法。
【請求項１１】
前記フレーム又はパケットが仮想記憶位置のアクセスに関係することの判断が、前記ターゲットからの該フレーム又はパケットの宛先アドレス・フィールドにおいて、前記ポートのアドレスを識別する段階を含むことを特徴とする請求項１に記載の方法。
【請求項１２】
前記仮想ストレージ・ユニットが仮想論理ユニットであり、前記１つ又はそれ以上の物理的ストレージ・ユニットが物理的論理ユニットであることを特徴とする請求項１に記載の方法。
【請求項１３】
前記仮想・物理的マッピングが、仮想化モデルによって定められることを特徴とする請求項１に記載の方法。
【請求項１４】
１つ又はそれ以上の新しいパケット又はフレームを生成し、或いは前記仮想ストレージ・ユニットの宛先アドレスを、前記１つ又はそれ以上の物理的ストレージ・ユニットの１つ又はそれ以上の宛先アドレスと置き換える方法で、前記受け取ったパケット又はフレームを修正する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１５】
新しいパケット又はフレームを生成し、或いは物理的ストレージ・ユニットのソース・アドレスを前記仮想ストレージ・ユニットのソース・アドレスと置き換える方法で、前記受け取ったパケット又はフレームを修正する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１６】
新しいパケット又はフレームを生成し、或いは前記イニシエータのソース・アドレスを前記ネットワーク装置上の前記ポートのアドレスと置き換える方法で、前記受け取ったパケット又はフレームを修正する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１７】
新しいパケット又はフレームを生成し、或いは前記ネットワーク装置上の前記ポートの宛先アドレスを前記ストレージ・ユニットの宛先アドレスと置き換える方法で、前記受け取ったパケット又はフレームを修正する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１８】
前記ステップ（ｂ）、前記ステップ（ｃ）、及び前記ステップ（ｄ）が、前記ネットワーク装置の前記ポート専用のプロセッサによって実行されることを特徴とする請求項１に記載の方法。
【請求項１９】
読み取り又は書き込みコマンドを前記１つ又はそれ以上の物理的記憶位置にサブミットする前に、１つ又はそれ以上の物理的記憶位置のロックを要求する段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項２０】
前記１つ又はそれ以上の物理的記憶位置のロックの要求が、前記仮想記憶位置のロックを要求する段階を含むことを特徴とする請求項１９に記載の方法。
【請求項２１】
前記１つ又はそれ以上の物理的記憶位置のロックの要求が、
ロック要求を、前記ストレージ・エリア・ネットワーク内のネットワーク装置の別のポートに送る、
段階を含むことを特徴とする請求項１９に記載の方法。
【請求項２２】
前記ストレージ・エリア・ネットワーク内の前記ネットワーク装置の前記別のポートから、ロック許可を受け取る、
段階をさらに含むことを特徴とする請求項２１に記載の方法。
【請求項２３】
前記許可されたロックが、前記仮想記憶位置への少なくとも１つの排他的な読み取り及び書き込みアクセスが許可されたことを示すことを特徴とする請求項２２に記載の方法。
【請求項２４】
前記ロック許可を受け取った時に、転送可能メッセージを前記イニシエータに送る、
段階をさらに含むことを特徴とする請求項２２に記載の方法。
【請求項２５】
前記ストレージ・エリア・ネットワーク内の前記ネットワーク装置の前記別のポートから、前記許可されたロックの解除を要求する、
段階をさらに含むことを特徴とする請求項２２に記載の方法。
【請求項２６】
前記許可されたロックが前記別のポートによって解除されたという通知を受け取る、
段階をさらに含むことを特徴とする請求項２５に記載の方法。
【請求項２７】
前記許可されたロックの解除の要求が、前記読み取り又は書き込みコマンドがうまく完了した時に実行されることを特徴とする請求項２５に記載の方法。
【請求項２８】
前記コマンドがうまくいったことを示すステータスを前記イニシエータ又は前記ターゲットから受け取った時に、前記コマンドがうまく完了したことを特徴とする請求項２７に記載の方法。
【請求項２９】
前記ネットワーク装置のポートで受け取られた前記フレーム又はパケットが、読み取られるべき、又は書き込まれるべきメモリの量を示す読み取り又は書き込みコマンドを含み、前記方法が、
該ネットワーク装置において前記メモリの量を割り当てる、
段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３０】
前記新しい又は修正されたフレーム又はパケットを前記ターゲットに送った後、該ターゲットからステータスを受け取り、
前記コマンドがうまくいったことを前記ステータスが示す時に、前記ネットワーク装置における前記メモリの量を割り当て解除する、
段階をさらに含むことを特徴とする請求項２９に記載の方法。
【請求項３１】
前記ネットワーク装置のポートで受け取られた前記フレーム又はパケットが、読み取り又は書き込みコマンドを含み、前記方法が、
前記新しい又は修正されたフレーム又はパケットを送った後に、前記ターゲットから、該ターゲットがデータ転送を受信可能であることを示す転送可能信号を受け取る、
段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３２】
前記新しい又は修正されたフレーム又はパケットを送った後に、前記イニシエータから、前記ネットワーク装置が該イニシエータからのデータ転送を受信可能であることを示す転送可能信号を送る、
段階をさらに含み、
前記イニシエータへの前記転送可能信号の送信が、前記ターゲットから転送可能信号を受け取る前に実行されることを特徴とする請求項３１に記載の方法。
【請求項３３】
前記ネットワーク装置のポートで受け取られた前記フレーム又はパケットが、読み取り又は書き込みコマンドを含み、前記方法が、
前記新しい又は修正されたフレーム又はパケットを送った後に、前記コマンドがうまくいったかどうかを示すステータスを受け取る、
段階をさらに含むことを特徴とする請求項１に記載の方法。
【請求項３４】
前記ステータスを前記イニシエータに送る、
段階をさらに含むことを特徴とする請求項３３に記載の方法。
【請求項３５】
第２の新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定されたイニシエータ又はターゲットに送り、
前記第２の新しい又は修正されたフレーム又はパケットを送った後に、前記コマンドがうまくいったかどうかを示す第２のステータスを受け取り、
前記ステータスと前記第２のステータスを併合し、
前記併合されたステータスを前記イニシエータに送る、
段階をさらに含むことを特徴とする請求項３３に記載の方法。
【請求項３６】
前記コマンドがうまくいったかどうかを前記ステータスから判断し、
前記コマンドがうまくいかなかったと判断された時に、前記新しい又は修正されたフレーム又はパケットを再送信する、
段階をさらに含むことを特徴とする請求項３３に記載の方法。
【請求項３７】
前記コマンドがうまくいったと判断された時に、前記ステータスを前記イニシエータに送る、
段階をさらに含むことを特徴とする請求項３６に記載の方法。
【請求項３８】
前記新しい又は修正されたフレーム又はパケットが、データを含むことを特徴とする請求項３６に記載の方法。
【請求項３９】
前記新しい又は修正されたフレーム又はパケットが、読み取り又は書き込みコマンドを含むことを特徴とする請求項３６に記載の方法。
【請求項４０】
前記ネットワーク装置のポートで受け取られた前記フレーム又はパケットがデータを含み、前記方法が、
前記データをメモリ位置に格納する、
段階をさらに含み、
前記新しい又は修正されたフレーム又はパケットの再送信が、
前記メモリ位置から前記データを獲得し、
前記獲得されたデータを含む新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定された前記イニシエータ又は前記ターゲットに送る、
段階を含むことを特徴とする請求項３６に記載の方法。
【請求項４１】
前記仮想・物理的マッピングによって特定された前記ターゲットからデータを受け取り、
前記データをメモリ位置に格納する、
段階をさらに含むことを特徴とする請求項３６に記載の方法。
【請求項４２】
前記新しい又は修正されたフレーム又はパケットの再送信が、
前記メモリ位置から前記データを獲得し、
前記獲得されたデータを含む新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定された前記イニシエータに送る、
段階をさらに含むことを特徴とする請求項４１に記載の方法。
【請求項４３】
前記新しい又は修正されたフレーム又はパケットの再送信が、該新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定され別のターゲットに送る段階を含み、前記方法が、
前記仮想・物理的マッピングによって特定された前記別のターゲットから別のデータを受け取り、
前記別のデータを、前記メモリ位置に格納された前記データと比較する、
段階をさらに含むことを特徴とする請求項４１に記載の方法。
【請求項４４】
前記別のターゲットを選択するために、ミラー・アルゴリズムを用いる、
段階をさらに含むことを特徴とする請求項４３に記載の方法。
【請求項４５】
前記ネットワーク装置のポートで受け取られた前記フレーム又はパケット及び該ネットワーク装置によって送られる前記新しい又は修正されたフレーム又はパケットは、標準プロトコルと両立性があることを特徴とする請求項１に記載の方法。
【請求項４６】
前記標準プロトコルがＳＣＳＩであることを特徴とする請求項４５に記載の方法。
【請求項４７】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケット及び該ネットワーク装置によって送られた前記新しい又は修正されたフレーム又はパケットは、該フレーム又はパケットによって運ばれることになるトラフィックのタイプと両立性があることを特徴とする請求項４５に記載の方法。
【請求項４８】
前記トラフィックのタイプがファイバー・チャンネルであることを特徴とする請求項４７に記載の方法。
【請求項４９】
前記トラフィックのタイプがｉＳＣＳＩであることを特徴とする請求項４７に記載の方法。
【請求項５０】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、ＳＣＳＩ読み取りコマンドを含み、該ネットワーク装置によって送られた前記新しい又は修正されたフレーム又はパケットが、ＳＣＳＩ読み取りコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項５１】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、ＳＣＳＩ書き込みコマンドを含み、該ネットワーク装置によって送られた前記新しい又は修正されたフレーム又はパケットが、ＳＣＳＩ書き込みコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項５２】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、読み取りコマンドを含み、該ネットワーク装置によって送られた前記新しい又は修正されたフレーム又はパケットが、読み取りコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項５３】
前記ネットワーク装置の前記ポートで受け取られた前記フレーム又はパケットが、書き込みコマンドを含み、該ネットワーク装置によって送られた前記新しい又は修正されたフレーム又はパケットが、書き込みコマンドを含むことを特徴とする請求項１に記載の方法。
【請求項５４】
ストレージ・エリア・ネットワークのネットワーク装置上で記憶の仮想化を実施するための命令を格納するコンピュータ可読媒体であって、前記コンピュータ可読媒体が、
（ａ）前記ネットワーク装置のポートでフレーム又はパケットを受け取るための命令と、
（ｂ）前記フレーム又はパケットが、前記ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係することを判断するための命令と、
（ｃ）前記１つ又はそれ以上の物理的記憶位置と前記仮想記憶位置との間の仮想・物理的マッピングを獲得するための命令と、
（ｄ）新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定されたイニシエータ又はターゲットに送るための命令と、
を備えることを特徴とするコンピュータ可読媒体。
【請求項５５】
記憶の仮想化を実施するようになったストレージ・エリア・ネットワークのネットワーク装置であって、
（ａ）前記ネットワーク装置のポートでフレーム又はパケットを受け取るための手段と、
（ｂ）前記フレーム又はパケットが、前記ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係することを判断するための手段と、
（ｃ）前記１つ又はそれ以上の物理的記憶位置と前記仮想記憶位置との間の仮想・物理的マッピングを獲得するための手段と、
（ｄ）新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定されたイニシエータ又はターゲットに送るための手段と、
を備えることを特徴とするネットワーク装置。
【請求項５６】
記憶の仮想化を実施するようになったストレージ・エリア・ネットワークのネットワーク装置であって、
プロセッサと、
メモリと、
を備え、
前記プロセッサ及び前記メモリのうちの少なくとも１つが、
（ａ）前記ネットワーク装置のポートでフレーム又はパケットを受け取り、
（ｂ）前記フレーム又はパケットが、前記ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係することを判断し、
（ｃ）前記１つ又はそれ以上の物理的記憶位置と前記仮想記憶位置との間の仮想・物理的マッピングを獲得し、
（ｄ）新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定されたイニシエータ又はターゲットに送る、
ようになったことを特徴とするネットワーク装置。
【請求項５７】
仮想化をサポートするストレージ・エリア・ネットワークに用いるためのネットワーク装置であって、前記ネットワーク装置が複数のポートを備え、
前記ポートの少なくとも１つの幾つかが、
（ｉ）ストレージ・エリア・ネットワーク上のパケット又はフレームを送受信するためのインターフェースと、
（ｉｉ）前記ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係するフレーム又パケットを識別し、
前記１つ又はそれ以上の物理的記憶位置と前記仮想記憶位置との間の仮想・物理的マッピングを実施するための、前記ネットワーク装置の前記ポート専用の論理と、
を含むことを特徴とするネットワーク装置。
【請求項５８】
ストレージ・エリア・ネットワークのネットワーク装置上で記憶の仮想化を実施する方法であって、
（ａ）前記ネットワーク装置のポートにおいてフレーム又はパケットを受け取り、
（ｂ）前記ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係し、前記物理的位置又は前記１つ又はそれ以上の物理的記憶位置を表す仮想記憶位置の１つ又はそれ以上を識別する、前記フレーム又はパケットからの情報を獲得し、
（ｃ）前記１つ又はそれ以上の物理的記憶位置と前記仮想記憶位置との間の仮想・物理的マッピングを獲得し、
（ｄ）新しい又は修正されたフレーム又はパケットを、前記仮想・物理的マッピングによって特定された識別に送る、
段階を含むことを特徴とする方法。
【請求項５９】
前記新しい又は修正されたフレーム又はパケットが、前記仮想・物理的マッピングから得られたソース・アドレス及び宛先アドレスのうちの少なくとも１つを含むこと特徴とする請求項５８に記載の方法。
【請求項６０】
前記受け取られたフレーム又はパケットが、ソース・アドレス及び宛先アドレスを含み、前記獲得された情報が前記ソース・アドレス及び前記宛先アドレスのうちの少なくとも１つを含むこと特徴とする請求項５８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワーク技術に関する。より具体的には、本発明は、ストレージ・エリア・ネットワーク内で記憶（記憶装置，storage）の仮想化をサポートする方法及び装置に関する。
【背景技術】
【０００２】
近年、ストレージ装置の容量は、記憶に対する要求と同じ速さでは増加しなかった。したがって、所定のサーバ又は他のホストは、多数の物理的に別箇のストレージ・ノード（一般的には、ディスク）にアクセスしなければならない。これらの記憶の制限を解決するために、ストレージ・エリア・ネットワーク（ＳＡＮ）が開発された。一般に、ストレージ・エリア・ネットワークは、より大きいユーザネットワークに代わって、異なるデータ・ストレージ装置及び関連したデータ・ホストを相互接続する高速の特殊用途ネットワークである。しかしながら、ＳＡＮは、ストレージ装置が、ネットワーク内の種々のネットワーク装置及び／又はエンティティにより用いるように構成されることを可能にするが、データの記憶の必要性は、静的なものではなく動的なものであることが多い。
【０００３】
図１Ａは、例示的な従来のストレージ・エリア・ネットワークを示す。より具体的には、ストレージ・エリア・ネットワーク１０２内では、１組のホスト（例えば、サーバ又はワークステーション）１０４、１０６、１０８を、ストレージ装置（例えば、ディスク）のプールに接続することが可能である。ＳＣＳＩ用語では、ホストを「イニシエータ」とみなし、ストレージ装置を「ターゲット」とみなすことができる。記憶のプールは、例えば、１組のストレージ・アレイ又はディスク・アレイ１１０、１１２、１１４によって、実施することができる。各々のディスク・アレイ１１０、１１２、１１４は、さらに１組のディスクに対応する。この例においては、第１のディスク・アレイ１１０は、ディスク１１６、１１８に対応し、第２のディスク・アレイ１１２は、ディスク１２０に対応し、第３のディスク・アレイ１１４は、ディスク１２２、１２４に対応する。全てのディスク１１６−１２４にアクセスするために全てのホスト１０４−１０８をイネーブルにするのではなく、ディスク・アレイ１１０、１１２、１１４を介して、該ホスト１０４−１０８の各々への動的で目に見えない記憶（例えば、ディスク）の割り当てを可能にすることが望ましい。言い換えれば、仮想メモリ（例えば、仮想ディスク）の概念によって、物理的メモリ（例えば、物理的ディスク）を割り当てることができる。このことにより、動的でトランスペアレントな記憶の割り当てを可能にする方法で、異種のイニシエータを分散された異種の組のターゲット（記憶のプール）に接続することが可能になる。
【０００４】
従来より、仮想メモリの概念を用いて、物理的メモリが、該物理的メモリ内の物理的アドレスと仮想メモリ内の仮想アドレスとの間の変換によって仮想化されることが可能であった。近年、「仮想化」の概念は、種々のメカニズムを通じて、ストレージ・エリア・ネットワークにおいて実施された。仮想化は、ストレージ・ネットワーク上で、物理的記憶と仮想記憶を相互転換する。ホスト（イニシエータ）は、仮想ディスクをターゲットとみなす。仮想ディスクは、明確であるが幾分柔軟な方法で、利用可能な物理的記憶を表す。仮想化は、ホストに、記憶の特定の物理的構成／割り当てによって制限されない利用可能な物理的記憶の表現を提供するものである。
【０００５】
１つの初期の技術である独立ディスクの冗長アレイ（ＲＡＩＤ）は、幾つかの限られた仮想化の特徴を提供する。様々なＲＡＩＤサブタイプが実施された。ＲＡＩＤ１においては、仮想ディスクは、両方が同じデータを格納する（又は他の方法で同じデータの回復をサポートする）２つの物理的ディスク１１６、１１８に対応することができ、これによりストレージ・エリア・ネットワーク内で冗長性をサポートすることが可能になる。ＲＡＩＤ０においては、単一の仮想ディスクが、多数の物理的ディスクにわたってストライピングされる。他の幾つかのタイプの仮想化は、連結、スペアリングなどを含む。仮想化の幾つかの態様が、近年、ストレージ・エリア・ネットワーク内の種々の位置に仮想化機能を実装することによって達成された。３つのこうした位置が、幾つかのレベルの許容、すなわちホスト（例えば、１０４−１０８）における仮想化、ディスク・アレイ又はストレージ・アレイ（例えば、１１０−１１４）における仮想化、並びにホスト及び記憶のプールから分離したストレージ装置１２６における仮想化を獲得した。不幸なことに、これらの実施スキームの各々は、望ましくない性能の制限を有する。
【０００６】
ストレージ・アレイにおける仮想化は、今日使用されている最も一般的な記憶の仮想化の解決法の１つである。この手法によって、仮想ボリュームが、特定のストレージ・サブシステム（例えば、ディスク・アレイ）の記憶空間にわたって形成される。記憶プールの仮想化がホストには見えないので、ストレージ・サブシステム・レベルにおいて仮想ボリュームを形成することは、ホストの独立性を提供する。さらに、ストレージ・システム・レベルの仮想化は、メモリ・アクセスの最適化、よって高性能を可能にする。しかしながら、こうした仮想化スキームは、一般に、同種の記憶環境のためだけの、さらに限られた柔軟性だけを有する、一様な管理構造を可能にするものである。さらに、仮想化は、ストレージ・サブシステム・レベルで行われるので、該ストレージ・サブシステム・レベルにおける物理的・仮想制限の組が、ストレージ・エリア・ネットワーク内の全てのホストに課される。さらに、各々のストレージ・サブシステム（又はディスク・アレイ）は、独立して管理される。したがって、記憶レベルにおける仮想化は、仮想ボリュームが多数のストレージ・サブシステムにわたることをほとんど可能にせず、よって記憶ベースの手法の拡張性が制限される。
【０００７】
仮想化が各々のホストで実施された場合には、多数のストレージ・サブシステム（例えば、ディスク・アレイ）にわたることが可能である。ホスト・ベースの手法は、ストレージ・エリア・ネットワークにおいて、１つのホストについての制限が、他のホストの作業に影響を与えないという点で、さらなる利点を有する。しかしながら、ホスト・レベルの仮想化は、仮想化機能を実装する各々のホスト（例えば、サーバ）上で実行しているソフトウェア層の存在を必要とする。したがって、このソフトウェアを実行することが、該ソフトウェアを実行しているホストの性能に影響を与える。この方法による別の重要な問題は、この方法が、種々のホストへの利用可能な記憶の従来のパーティションを仮定するという点である。こうしたパーティションは、ホスト・レベルでサポートされ、各々のホストの仮想化機能は、ストレージ・エリア・ネットワーク内の他のホストと関係なく実行されるので、ホスト全体にわたって記憶のアクセスを調整するのは困難である。したがって、ホスト・ベースの手法は、適切なレベルのセキュリティを提供することができない。このセキュリティの制限のため、読み取り及び書き込み作業の際に、メモリの「ロッキング」を必要とするＲＡＩＤのような種々の冗長スキームを実装するのは困難である。さらに、ミラーリングが実行された時、ホストは、データを何回も複製しなければならず、入出力及びＣＰＵの負荷を増加させ、ＳＡＮにわたるトラフィックを増加させる。
【０００８】
ホストとストレージ装置との間に配置されたストレージ・エリア・ネットワーク装置における仮想化は、ホスト・ベースの手法及び記憶ベースの手法の問題の幾つかを解決する。ストレージ装置は、物理的記憶の仮想ボリュームへのマッピング及び割り当てを全体的に管理する。一般的に、ストレージ装置は、仮想への物理的の現在のマッピングを提供する中央テーブルを管理する。したがって、ストレージ装置ベースの手法は、ストレージ・エリア・ネットワーク上で、ホスト及びストレージ・サブシステムの両方から独立して、仮想ボリュームを実施することを可能にし、これにより高レベルのセキュリティがもたらされる。さらに、この手法は、多数のストレージ・サブシステムにわたって仮想化をサポートする。このアーキテクチャを何度も実施することの重要な欠点は、あらゆるホストのあらゆる入力・出力（Ｉ／Ｏ）を、ストレージ・エリア・ネットワーク装置を通して送らなければならず、著しい性能の劣化及びストレージ・エリア・ネットワークの障害を引き起こすという点である。このことは、多数のディスクにわたってデータをミラーリングしなければならないので、ＲＡＩＤのような冗長スキームをサポートするシステムにおいて特に不利な点である。別のストレージ装置ベースの手法において、この装置は、全てのホストが、現在のバージョンのテーブルを受け取ることを確認する。したがって、ホストが装置からテーブルを受け取ることを可能にするために、該装置からホストへのソフトウェア・シムが必要とされ、システムに複雑さを付加する。さらに、ソフトウェア層がホスト上に実装されるので、ホスト・ベースの手法の欠点の多くも存在する。
【０００９】
上を考慮して、種々のストレージ装置又はその一部が、ネットワーク内の種々の装置及び／又はエンティティに論理的かつ動的に割り当てられることが望ましい。さらに、従来の仮想化手法の不利な点なしに、ＳＡＮ内の記憶の仮想化をサポートするために、こうした機構を実装できることが望ましい。
【発明の開示】
【００１０】
ストレージ・エリア・ネットワークにおいて記憶の仮想化を実施する方法及び装置が開示される。このことは、ホストとストレージ装置との間のデータ経路内に配置することができる１つ又はそれ以上のネットワーク装置の使用によって達成することができる。その結果、記憶の仮想化をサポートするために、ストレージ装置もホストも、付加的なソフトウェア又はハードウェアを必要としない。このように、本発明は、仮想化機能を実施するために、付加的なソフトウェアにより各々のホストが負担を負うことを必要とするホスト・ベースの手法より優れている。さらに、本発明は、多数のネットワーク装置が、異種のストレージ装置の仮想化を同時に管理することを可能にする。重要なことに、スイッチ・ベースの仮想化は、ポート毎のベースで実施することができる。スイッチ上の多数のポートが、ポート自体のトラフィックを管理することができる。このことは、ネットワークの仮想化容量が、ポートの数を拡大縮小することを可能にする。いずれのネットワークシステムにも多数のポートがあるので、仮想化のために十分な帯域幅があることが常である。したがって、従来の仮想化スキームに存在する多くの欠点なしで、記憶の仮想化を達成することができる。
【００１１】
本発明の１つの態様によると、ストレージ・エリア・ネットワークのネットワーク上で記憶の仮想化を実施する方法及び装置が開示される。最初に、フレーム又はパケットが、ネットワーク装置のポートで受け取られる。次に、フレーム又はパケットが、ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係することが判断される。次に、１つ又はそれ以上の物理的記憶位置と仮想記憶位置との間の仮想・物理的マッピングが獲得される。次に、新しい又は修正されたフレーム又はパケットが、仮想・物理的マッピングにより特定されたイニシエータ又はターゲットに送られる。
本発明の別の態様によると、本発明は、ポート毎のベースで実施される。言い換えれば、１つ又はそれ以上のネットワーク装置の選択された仮想化ポートが、ハードウェア及び／又はソフトウェアにおいて仮想化機能を実装することができる。このことにより、仮想化処理が、ポートの数を拡大縮小することが可能になる。したがって、本発明は、仮想化のために、ホスト・ベース又は記憶ベースの仮想化スキームにより提供できるものより、はるかに大きい帯域幅を提供する。
【００１２】
本発明のさらに別の態様によると、仮想化ポートは、仮想記憶位置により表される１つ又はそれ以上の物理的記憶位置へのアクセスが、それらの記憶位置にアクセスする前に「ロックされる」を保証する。このように、仮想化ポートは、他のネットワーク・ノードが、同じデータ位置に同時にアクセスしようとしないことを保証する。次に、アクセス（例えば、読み取り及び／又は書き込みアクセス）が完了した時に、ロックを解除することができる。１つの実施形態において、このことは、仮想化ポートによってサブミットされるメモリ・アクセスを同期させることによって達成される。より具体的には、仮想化ポートは、（該仮想化ポート自体がマスターでない限り）マスター仮想化ポートにロック要求をサブミットする。マスター仮想化ポートは、全てのロック要求を管理し、要求しているスレーブ仮想化ポートに、ロック要求が許可された時期を知らせる。マスター仮想化ポートは、同様に「ロック解除」要求を処理する。
パケット又はフレームをインターセプトし、生成し、修正し、送信するように、種々のネットワーク装置を構成し、適合させ、開示された仮想化機能を実装することができる。これらのネットワーク装置は、これらに限られるものではないが、サーバ（例えば、ホスト）、ルータ、及びスイッチを含む。さらに、上述の仮想化プロセスための機能は、ソフトウェアにもハードウェアにも実装することができる。
【００１３】
本発明のさらに別の態様が、上述の方法又は技術を全体的又は部分的に実施するためのプログラム命令を提供する機械可読媒体を含む、コンピュータ・プログラム製品に関係する。本発明の何らかの方法を、こうした機械可読媒体上で提供できるプログラム命令として、全体的又は部分的に表すことができる。さらに、ここに説明されるように、本発明は、生成され、及び／又は使用されたデータの種々の組み合わせ及び構成に関係する。例えば、ここで説明されるフォーマットを有し、適切な媒体上に提供されたパケット及びフレームは、本発明の一部である。
本発明のこれら及び他の特徴は、本発明の詳細な説明において、以下の図と共に、以下に詳細に説明されるであろう。
【発明を実施するための最良の形態】
【００１４】
以下の説明において、本発明の完全な理解を提供するために、多くの特定の詳細が述べられる。しかしながら、当業者であれば、これらの特定の詳細の一部又は全てなしで、本発明を実行できることが明らかであろう。他の例においては、本発明を不必要に分かりにくくしないように、周知のプロセス段階については詳細に説明しなかった。
本発明の種々の実施形態によると、ストレージ・エリア・ネットワーク内の記憶の仮想化を、ここでは仮想化スイッチと呼ばれる１つ又はそれ以上のネットワーク装置内で実行することができる。より具体的には、図３Ａを参照して以下にさらに詳細に説明される、仮想化スイッチのようなネットワーク装置が、フレーム又はパケットをインターセプトし、該フレーム又は該パケット（例えば、仮想アドレス）から情報を獲得する。次に、ネットワーク装置は、獲得された情報から仮想・物理的マッピングを突き止める。例えば、ネットワーク装置は、フレーム又はパケットをどのように修正し、及び／又は付加的なフレーム又はパケットを生成するかどうかを決定するために、獲得された情報を、仮想・物理的マッピング・テーブル又はアルゴリズムの「手がかり」として用いることができる。
【００１５】
次に、仮想・物理的マッピングから獲得された情報を用いて、新しい又は修正されたフレーム又はパケットを構成することができる。次に、この新しい又は修正されたフレーム又はパケットは、インターセプトされたフレーム又はパケットの意図された受信者に送られる。例えば、１つ又はそれ以上のフレーム又はパケットを生成し、インターセプトされたフレーム又はパケットにおいて特定された仮想アドレスに対応する１つ又はそれ以上の物理的アドレスに送ることができる。このように、以下にさらに詳細に説明されるように、本発明の実施形態をパケット又はフレームに適用することができる。便宜上、次の説明では、本発明の実施形態をフレームに関して説明する。スイッチは、フレームに作用し、ＳＡＮについての情報を用いて、スイッチングを決定する。
【００１６】
仮想化スイッチによって受送信されるフレームが、イーサネット（登録商標）又はファイバー・チャンネルのような標準プロトコルのために特定されたフレーム・フォーマットを持つことに注意されたい。したがって、こうしたフレームを生成するのに従来から用いられるソフトウェア及びハードウェアを、本発明と共に用いることができる。本発明によると、標準プロトコルと両立性があるフレームを修正及び／又は生成するために、付加的なハードウェア及び／又はソフトウェアが用いられる。当業者であれば、下に説明されるような仮想化を可能にするために、必要なハードウェア及びソフトウェアをどのように開発するかを理解するであろう。
【００１７】
フレームは、ホスト、スイッチ、又はストレージ装置のようなネットワーク装置によって生成される。明らかに、仮想化機能を実行するために、適切なソフトウェア及び／又はハードウェアを用いて適切なネットワーク装置を構成すべきである。もちろん、ストレージ・エリア・ネットワーク内の全てのネットワーク装置を、仮想化機能をもつように構成する必要はない。寧ろ、選択されたスイッチ及び／又はポートを、仮想化機能をもつように又は仮想化機能のために適合された状態で構成することができる。同様に、種々の実施形態においては、種々のモードを選択することによって、こうした仮想化機能をイネーブル又はディスエーブルにすることができる。さらに、連続的に又は仮想化イネーブル状態にある場合にだけ仮想化を実行できる仮想化可能ポートとして、ネットワーク装置の選択されたポートを構成することが望ましい。
必ずしも必要ではないが、ストレージ・エリア・ネットワーク内で用いられる標準プロトコル（すなわち、データをフレーム化するために用いられるプロトコル）は、一般に、ネットワークによって運ばれる「トラフィックのタイプ」と同義語である。以下に説明されるように、幾つかのカプセル化フォーマットにおいて、トラフィックのタイプが定められる。トラフィックのタイプの例は、一般に、層２又はイーサネット、ファイバー・チャネル、及びインフィニバンドのような対応する層のフォーマットである。
【００１８】
上述のように、ストレージ・エリア・ネットワーク（ＳＡＮ）は、より大きいユーザネットワークに代わって、異なるデータ・ストレージ装置を関連したネットワーク・ホスト（例えば、データ・サーバ又はエンドユーザの機械）と相互接続する高速の特殊用途ネットワークである。ＳＡＮは、システムの物理的構成によって定められる。言い換えれば、ＳＡＮ内の装置は、物理的に相互接続されていなければならない。図１Ｂに示されるもののようなストレージ・エリア・ネットワーク１３１内では、同種のもの（例えば、同じ装置タイプ、大きさ、又は構成）及び異種のもの（例えば、異なる装置タイプ、大きさ、又は構成）とすることができる種々のストレージ装置１３２、１３４、１３６、１３８、１４０、及び１４２を実装することができる。ホスト１４４及び１４６により送られる命令に応答して、ストレージ装置１３２−１４２の種々の部分からデータを読み込むこと、及び該ストレージ装置１３２−１４２の種々の部分にデータを書き込むことができる。ストレージ装置とホストの間の通信は、１つ又はそれ以上のスイッチ、ルータ、又はスイッチング機能を実行するように構成された他のネットワーク・ノードを介して、該ストレージ装置及び該ホストを互いに接続することによって達成される。この例においては、スイッチ１４８、１５０、及び１５２は、インタースイッチ・リンク１５４及び１５６を介して互いに通信する。
【００１９】
上に示されるように、本発明は、ストレージ・ネットワークにおける「仮想化」に関する。従来の方法とは違って、本発明における仮想化は、ストレージ・エリア・ネットワークのスイッチ又は他の「内部の」ネットワーク・ノード上で実施される。ネットワーク・ファブリックを構成する多数のスイッチが協働して、所定のストレージ・エリア・ネットワークの仮想化モデルを実施する。さらに、本発明の仮想化は、一般に、ポート毎のベースで実施される。言い換えれば、多数のポート・スイッチでは、仮想化が、そのポートの１つ又はそれ以上で別箇に実施される。個々のポートは、該個々のポートが処理するパケット又はフレームのための、仮想化機能を処理する専用の論理を有する。このことは、仮想化の処理により、ポートの数を拡大縮小することが可能になり、ホスト・ベース又は記憶ベースの仮想化スキームがもたらし得るものよりはるかに大きい仮想化のための帯域幅をもたらすことが可能になる。こうした従来技術の手法においては、少なくともネットワーク・ファブリック内のポートの数と比較すると、ホストと該ネットワーク・ファブリックとの間、又はストレージ・ノードと該ネットワーク・ファブリックとの間の接続の数が制限される。
【００２０】
本発明の特定の好ましい実施形態においては、スイッチの全てのポートについて中央処理を行うのではなく、所定のスイッチの個々のポートにおいて、仮想化論理を別箇に実施することができる。このことにより、仮想化処理の容量を、ポート毎のベースで正確なスイッチの必要性と厳密に一致させることが可能になる。スイッチ全体（多数のポートの役目を果たす）のために中央処理装置が用いられた場合には、全てのポートにおいて最大トラフィックを処理するように、該処理装置を設計／選択することができる。多くの用途の場合には、このことは、極めて高い処理要求、及び非常に大きい／高価な処理装置を表す。中央処理装置が小さすぎる場合には、スイッチは、時々、ネットワークのスイッチング／仮想化要求に対応できないであろう。
【００２１】
仮想化は、多くの形態をとることができる。一般に、仮想化は、ストレージ・ネットワーク上の物理的記憶及び仮想記憶に相互関連する論理又は手続きとして定めることができる。ホストは、そのストレージにおいて固有の物理的構成又は割り当てによって制約されない利用可能な物理的記憶の表現を参照する。仮想化により超越される物理的制約の１つの例は、構成要素の物理的ストレージ・ブロックのサイズ及び位置を含む。例えば、スモール・コンピュータ・システム・インターフェース（ＳＣＳＩ）規格は、精密な物理的サイズ（例えば、３６ＧＢ及び７２ＧＢ）の形で売られている。仮想化は、定められたサイズの物理的論理ユニットより小さいか又は大きい仮想論理ユニットにおいて、記憶を表すことができる。さらに、仮想化は、往々にして異なる供給業者からの装置上に提供された、２つ又はそれ以上の異なる物理的論理ユニットからの領域から成る仮想論理ユニットを表すことができる。仮想化作業は、少なくとも幾つかのネットワーク・エンティティ（例えば、ホスト）に対してトランスペアレントであることが好ましい。幾つかの一般的な方法において、ストレージ・エリア・ネットワーク上の仮想化は、典型的なコンピュータ・システム上の仮想メモリに類似している。しかしながら、ネットワーク上の仮想化は、はるかに大きい複雑さと柔軟性をもたらす。この複雑さは、別箇に相互接続された多数のネットワーク・ノードが存在するという事実から直接生じるものである。仮想化は、これらのノードの橋渡しをしなければならない。ノードは、ホスト、ストレージ・サブシステム、及びスイッチ（又はルータのような比較対象ネットワーク・トラフィック制御装置）を含む。ホスト及び／又はストレージ・サブシステムは、異なる供給業者からもたらされた異種のものであることが多い。供給業者は、明白に異なるプロトコル（標準プロトコル又は自社開発のプロトコル）を用いることができる。したがって、多くの場合、仮想化は、異種のイニシエータ（例えば、ホスト又はサーバ）を、分散された異種の組のターゲット（ストレージ・サブシステム）に接続する能力を提供し、動的でトランスペアレントな記憶の割り当てを可能にする。
【００２２】
ネットワーク特有の仮想化作業の例は、次のＲＡＩＤ０からＲＡＩＤ５まで、物理的メモリの２つ又はそれ以上の別箇の論理ユニットからのメモリの連結、スペアリング（故障した物理的媒体の自動置換え）、物理的メモリの遠隔ミラーリング、ロギング情報（例えば、エラー及び／又は統計）、多数の物理的メモリシステムの中での負荷平衡化、ストライピング（例えば、ＲＡＩＤ０）、物理的メモリにアクセスするためのアクセス制御アルゴリズムのようなセキュリティ手段、仮想メモリ・ブロックのサイズ変更、任意のＬＵＮがブート装置として働くのを可能にする論理ユニット（ＬＵＮ）マッピング、物理的メモリのバックアップ（コピー時）などを含む。これらは、仮想化機能の例にすぎない。本発明は、これらの完全な組又はその特定のサブセットに限られるものではない。
【００２３】
ここでの議論の大部分において、本発明の仮想化スイッチの機能は、ＳＣＳＩプロトコルに関して説明される。これは、商業目的のための多くのストレージ・エリア・ネットワークが、ＳＣＳＩを実行して保管場所にアクセスするためである。往々にして、ストレージ・エリア・ネットワークは、ファイバー・チャンネル（ＦＣ−ＰＨ（ＡＮＳＩ  Ｘ３．２３０−１９９４、ファイバー・チャンネル−物理的・信号インターフェース）を低レベルのプロトコルとして用い、ファイバー・チャンネル上でＩＰ及びＳＣＳＩを実行する。本発明が、これらのプロトコルのいずれかに限定されるものでないことに注意されたい。例えば、ファイバー・チャンネルは、イーサネット、インフィニバンドなどと置き換えることができる。さらに高レベルのプロトコルは、ＳＣＳＩを含む必要がない。例えば、記憶にアクセスするために、ホストによって他のプロトコルを用いることができる。さらに、ＦＣ上のＳＣＳＩ、ｉＳＣＳＩ（ＩＰ上のＳＣＳＩ）、パラレルＳＣＳＩ（パラレル・ケーブル上のＳＣＳＩ）、シリアルＳＣＳＩ（シリアル・ケーブル上のＳＣＳＩ）のあらゆる実装、及び他の全てのＳＣＳＩの具体化に関して、ここでＳＣＳＩが用いられることに注意することが重要である。
【００２４】
ＳＣＳＩが、ストレージ・エリア・ネットワークに非常に広く用いられるので、ここで用いられる用語の大部分がＳＣＳＩ用語である。ＳＣＳＩ用語（例えば、「イニシエータ」及び「ターゲット」）を使用することで、説明する手順又は装置がＳＣＳＩを使用しなければならないことを意味するわけではない。先に進む前に、この議論に用いられる幾つかのＳＣＳＩ用語を説明する価値がある。最初に、「イニシエータ」は、別の装置によって実行されることになる作業を要求する装置（通常は、ホスト・システム）である。一般に、本明細書の文脈において、ホスト・イニシエータは、仮想又は物理的メモリの領域上で実行される読み取り又は書き込み作業を要求する。次に、「ターゲット」は、イニシエータによって要求された作業を実行する装置である。例えば、ターゲット物理的メモリ・ディスクは、ホスト・イニシエータによって最初に要求されたようにデータを獲得するか又は書き込む。ホスト・イニシエータは、仮想アドレスを有する「仮想」ターゲットから読み取るための命令、又は該「仮想」ターゲットに書き込むための命令を与えることができるが、本発明のスイッチは、ターゲットに命令する前に、まずこれらの命令を物理的ターゲット・アドレスに変換しなければならないことに注意されたい。
【００２５】
ターゲットは、物理的又は仮想「論理ユニット」に分けることができる。これらは、ターゲットによってアドレス指定可能な特定の装置である。例えば、物理的ストレージ・サブシステムを、多数の別箇の論理ユニットに構成することができる。本明細書においては、ホストは、仮想メモリを別箇の仮想論理ユニットとみなす。時々ここでは、論理ユニットを、「ＬＵＮ」と呼ぶ。ＳＣＳＩ規格においては、ＬＵＮは、論理ユニットの数を指す。しかしながら、俗に、ＬＵＮは論理ユニット自体も指す。
【００２６】
仮想化の中心となるのは、「仮想化モデル」の概念である。これは、ストレージ・サブシステム（ディスク・アレイのような）上に設けられた物理的ストレージ装置が、ネットワーク上のホスト又は他のイニシエータにより参照される仮想ストレージ装置に関係する方法である。上述のように、この関係は、多くの形態をとり、様々な用語によって特徴付けられるが、ＳＣＳＩベースの用語が用いられる。したがって、ストレージ・エリア・ネットワークの物理的サイドは、物理的ＬＵＮとして説明される。ホスト・サイドは、物理的ＬＵＮの仮想表現である１つ又はそれ以上の仮想ＬＵＮを参照する。仮想ＬＵＮへの物理的ＬＵＮのマッピングは、１つ、２つ、又はそれ以上のレベルにわたって論理的に行うことができる。最終的には、物理的ＬＵＮアドレスと仮想ＬＵＮアドレスとの間で相互変換するための、本発明のスイッチにより用いることができるマッピング機能がある。
【００２７】
図２は、本発明の種々の実施形態により、ストレージ・エリア・ネットワーク内に実装することができる仮想化モデルの例を示すブロック図である。示されるように、ストレージ・エリア・ネットワークの物理的ストレージが、ここでは物理的ディスク２０２として示される１つ又はそれ以上の物理的ＬＵＮで構成される。各々の物理的ＬＵＮは、個別にかつ直接アクセス可能な１つ又はそれ以上の連続したブロックに格納されたデータを含むことができる装置である。例えば、物理的ＬＵＮ内のメモリの各ブロックは、ディスク・ユニット（Ｄｕｎｉｔ）と呼ぶこともできるブロック２０４と表すことができる。
【００２８】
マッピング機能２０６によって、物理的ＬＵＮ２０２と関連した物理的ＬＵＮアドレスを仮想ＬＵＮアドレスに変換することができ、逆の場合も同様である。より具体的には、上述のように、仮想化、よってマッピング機能を１つ又はそれ以上のレベルにわたって行うことができる。例えば、示されるように、第１の仮想化レベルにおいて、１つ又はそれ以上の仮想ＬＵＮ２０８の各々が、１つ又はそれ以上の物理的ＬＵＮ２０２又はその一部を表す。協働して単一の仮想ＬＵＮ２０８を構成する物理的ＬＵＮ２０２が、連続したものである必要はない。同様に、仮想ＬＵＮ２０８にマッピングされた物理的ＬＵＮ２０２が、単一のターゲット内に配置される必要はない。このように、仮想化によって、物理的に別箇のターゲット内に配置された物理的メモリを表す仮想ＬＵＮ２０８を生成することができ、この仮想ＬＵＮ２０８は、異なる供給業者からのものとしてもよく、よって異なるプロトコル及びトラフィックのタイプをサポートすることができる。
単一のレベルを用いて仮想化モデルを実施するができるが、本発明の種々の実施形態によって、如何なる数のレベルの階層構成をサポートすることもできる。例えば、示されるように、図２の仮想化モデル内の第２の仮想化レベルは、高レベルのＶＬＵＮすなわちボリューム２１０と呼ばれる。一般に、データにアクセスする際、イニシエータ装置は、ＶＬＵＮ２１０だけを「参照する」。
【００２９】
この例において、ＶＬＵＮ２１０は、「論理」ＲＡＩＤアレイの仮想ＬＵＮ２０８として実施される。さらに、こうした仮想化レベルは、ストライピング及び／又はミラーリングの使用などによって、さらに実施することができる。例えば、図１０Ａ乃至図１０に関連して下にさらに詳細に説明されるように、ＲＡＩＤ１＋０又はＲＡＩＤ０＋１作業を連続的に行うことができる。さらに、マッピング機能２０６をサポートするために、仮想化レベルの数を特定する必要はないことに注意することが重要である。寧ろ、例えば、階層マッピング機能によって、任意の数のレベルの仮想化をサポートすることができる。例えば、ツリー・データ構造、リンクされたリスト、又はトラバースすることができる他の適切なデータ構造内に、種々のレベルのノードを構築し、維持することができる。
【００３０】
したがって、各々のイニシエータは、いずれかのレベルの階層仮想化モデルに配置されたノードを介して、物理的ＬＵＮにアクセスすることができる。所定のストレージ・エリア・ネットワーク内に実装された所定の仮想化レベルの階層モデルの内のノードは、許容された組のイニシエータ（図示せず）に見えるようにも、アクセス可能にもすることができる。特定の仮想化レベル（例えば、ＶＬＵＮ）内のノードは、機能（例えば、読み取り、書き込み）をこれらのノード上で作動させる前に、生成される必要がある。このことは、例えば、特定のイニシエータのマスター・ブート記録によって達成することができる。さらに、種々のイニシエータは、特定の仮想化レベル内の特定のノード（例えば、ＶＬＵＮ）に関して、読み取り及び／又は書き込み特権を割り当てることができる。このように、特定の仮想化レベル内のノードは、選択されたイニシエータに見えるようにも、該選択されたイニシエータによってアクセス可能にもすることができる。
【００３１】
上述のように、ストレージ・エリア・ネットワーク内の種々のスイッチを、仮想化機能をサポートする仮想化スイッチとしてもよい。図３Ａは、本発明の種々の実施形態を実施することができる例示的な仮想化スイッチを示すブロック図である。示されるように、データが、双方向コネクタ３０２を介して、インテリジェントな仮想化ポートによって受毛取られる。受信ポートに関連して、イーサネット又はファイバー・チャンネルのような種々のプロトコルのフレームを受け取ることを可能にする媒体アクセス制御（ＭＡＣ）ブロック３０４が設けられる。さらに、仮想化インターセプト・スイッチ３０６が、受信フレームにおいて特定されたアドレスが、ストレージ・エリア・ネットワークの１つ又はそれ以上の物理的ストレージ・ユニット上の１つ又はそれ以上の物理的記憶位置を表す仮想ストレージ・ユニットの仮想記憶位置のアクセスに関係するかどうかを判断する。この例において、フレームは、双方向コネクタ３０２を介して受け取られ、新しい又は修正されたフレームが、スイッチ・ファブリック３２０から出ていく。しかしながら、仮想化スイッチを別の方法で実施できることに注意することが重要である。例えば、フレームを、ファブリック３２０から受け取り、３０６によって３０８に再配向し、仮想化し、該スイッチ・ファブリック３２０に送り返すことができる。このことは、ホスト及びディスクが、図３Ｂに示されるもののような標準的なライン・カードに接続され、該ホスト及び該ディスクが、図３Ａに示されるもののような幾つかの仮想化カードを共有する際に重要である。
【００３２】
仮想化インターセプト・スイッチ３０６が、受信フレームにおいて特定されたアドレスが、物理的記憶位置ではなく仮想記憶位置のアクセスに関係することを判断すると、該フレームが、上述のようなマッピング機能を実行することができる仮想化プロセッサ３０８によって処理される。より具体的には、仮想化プロセッサ３０８は、１つ又はそれ以上の物理的記憶位置と仮想記憶位置との間の仮想・物理的マッピングを獲得する。このように、仮想化プロセッサ３０８は、必要に応じて、物理的アドレス又は仮想アドレスのいずれかを調べることができる。例えば、マッピングは、物理的アドレスから仮想アドレスに、或いは代わりに仮想アドレスから１つ又はそれ以上の物理的アドレスに実行することが必要である。
【００３３】
仮想・物理的マッピングが獲得されると、次に、仮想化プロセッサ３０８は、獲得されたマッピングを用いて、新しいフレームを生成するか又は既存のフレームを修正することができ、これによりフレームが、該仮想・物理的マッピングにより特定されたイニシエータ又はターゲットに送られることが可能になる。例えば、ミラーリング書き込みの場合には、フレームを何回も複製することができる。この複製要求は、仮想・物理的マッピングによって特定することができる。さらに、必要に応じて、ソース・アドレス及び宛先アドレスが修正される。例えば、ターゲットからのデータの場合、仮想化プロセッサは、元は対応する仮想ＬＵＮ及び仮想アドレスを有する物理的ＬＵＮアドレスであったソース・アドレスを置き換える。
宛先アドレスにおいて、ポートは、該ポート自体のアドレスをイニシエータのアドレスと置き換える。イニシエータからのデータの場合、ポートは、ソース・アドレスを、該イニシエータのアドレスから該ポート自体のアドレスに変える。ポートはまた、宛先アドレスを、仮想ＬＵＮ／アドレスから対応する物理的ＬＵＮ／アドレスにも変える。次に、新しいフレーム又は修正されたフレームを仮想化インターセプト・スイッチ３０６に提供することができ、該フレームが、意図された宛先に送られることを可能にする。
【００３４】
仮想化プロセッサ３０８が、仮想・物理的マッピングを獲得し、適用する間、フレーム又は関連したデータを一時的なメモリ位置（例えば、バッファ）３１０に格納することができる。さらに、所望の読み取り又は書き込み作業がうまく完了したことが確認されるまで、送信され又は受け取られたデータを格納することが必要であるか又は望ましい。１つの例として、多数のフレームで別個に送信しなければならない大量のデータを仮想ＬＵＮに書き込むことが望ましい。したがって、データ受信の確認が受け取られるまで、データを一時的にバッファに入れることが望ましい。別の例として、多数のフレームで別個に受け取る信ことができる大量のデータを仮想ＬＵＮから読み取ることが望ましい。さらに、このデータは、該データを読み取られたコマンドのイニシエータに送るべき順序と一致しない順序で受け取ることができる。この例において、データをイニシエータに送信する前に、該データをバッファに入れ、該データが、送信前に順序付けすることを可能にするのが有利である。同様に、イニシエータ（又はターゲット）に送られたデータの完全性を検証するために必要となる場合には、該データをバッファに入れることが望ましい。
【００３５】
次に、新しい又は修正されたフレームが、ソース・アドレス及び宛先アドレスのような、フレームの種々のフィールドからの情報を獲得する転送エンジン３１２によって受け取られる。次に、転送エンジン３１２は、転送テーブル３１４にアクセスし、ソース・アドレスが特定の宛先アドレスへのアクセスを有するかどうかを判断する。より具体的には、転送テーブル３１４は、物理的ＬＵＮアドレス及び仮想ＬＵＮアドレスを含むことができる。転送エンジン３１２はまた、フレームを送るのに適切なスイッチのポートを判断し、該フレームに適した経路指定タグを生成する。
【００３６】
フレームが送信のために適切にフォーマットされると、該フレームは、送信前にバッファ・キューイング・ブロック３１６によって受け取られる。フレームが受け取られた時に該フレームを送信するのではなく、該フレームをバッファ又はキュー３１８に一時的に格納することが望ましい。例えば、各々が異なる優先順位のレベルに対応する１組のキューの１つにおいて、サービスの品質に基づいて、パケットを一時的に格納することが望ましい。次に、フレームは、スイッチ・ファブリック３２０を介して適切なポートに送信される。示されるように、発信ポートは、それ自体のＭＡＣブロック３２２と、フレームを送ることができる双方向コネクタ３２４とを有する。
【００３７】
上述のように、ストレージ・エリア・ネットワーク内の全てのスイッチが、仮想化スイッチである必要はない。言い換えれば、スイッチは、ポートのいずれも「インテリジェントな」仮想化機能を実装しない標準スイッチとしてもよい。図３Ｂは、本発明の種々の実施形態を実施することができる例示的な標準スイッチを示すブロック図である。示されるように、標準ポート３２６は、ＭＡＣブロック３０４を有する。しかしながら、図３Ａに示されるもののような仮想化インターセプト・スイッチ及び仮想化プロセッサは、実装されていない。受信ポートで受け取られたフレームは、転送エンジン３１２及び関連した転送テーブル３１４によって処理されるだけである。送信前に、フレームをバッファ又はキュー３１８に入れることができる。次に、フレームは、スイッチ・ファブリック３２０を介して送信ポートに転送される。示されるように、送信ポートはまた、関連したＭＡＣブロック３２２及び双方向コネクタ３２４も有する。
【００３８】
上述のように、仮想化スイッチによって、本発明を少なくとも部分的に実施することができる。仮想化は、スイッチ毎ではなく、ポート毎のベースで実行することが好ましい。このように、各々の仮想化スイッチは、仮想化機能を実行することができる１つ又はそれ以上の仮想化ポート、及びこうした仮想化機能を実行することができないポートを有することができる。１つの実施形態において、スイッチは、図３Ａ及び図３Ｂに関連して上述されたようなライン・カードの組み合わせを有するハイブリッドである。
図３Ａ及び図３Ｂに関連して上述されたネットワーク装置は、スイッチとして説明されたが、これらのネットワーク装置は、単に実例である。したがって、ルータのような他のネットワーク装置を実装して、ストレージ・エリア・ネットワークにおける送信のために上述のような機能を有するパケット又はフレームを受け取り、処理し、修正し、及び／又は生成することができる。さらに、上述のネットワーク装置は単に実例であり、よって他のタイプのネットワーク装置を実装して、開示された仮想化機能を実行することができる。
【００３９】
上述のように、仮想化機能及び標準スイッチを実装するように適合された仮想化スイッチを用いて、ストレージ・エリア・ネットワークを実施することができる。図４は、本発明の種々の実施形態を実施することができる例示的なシステム・アーキテクチャを示すブロック図である。この例においては、ストレージ・エリア・ネットワーク内のフレーム送信をサポートするために、２つの仮想化スイッチ４０２及び４０４が実装される。各々の仮想化スイッチは、１つ又はそれ以上の「インテリジェントな」仮想化ポート及び１つ又はそれ以上の標準ポートを含むことができる。より具体的には、この例における仮想化スイッチ４０２及び４０４は、それぞれ仮想化ポート４０６及び４０８を有する。さらに、仮想化スイッチ４０２は多数の標準ポート４１０、４１２、４１４、４１６を有し、仮想化スイッチ４０４は、多数の標準ポート４１８、４２０、４２２、４２４を有する。仮想・物理的マッピング、及び多数のアプリケーション及び／又はホストによるメモリのアクセス可能性をサポートするために、仮想化スイッチ４０２と４０４との間のメモリ・アクセスを調整することが望ましい。スイッチ４０２と４０４との間の通信は、２つのスイッチ間のインタースイッチ・リンク４２６によって達成することができる。示されるように、インタースイッチ・リンク４２６は、２つの標準ポートの間にしてもよい。言い換えれば、２つのスイッチによるメモリ・アクセスの同期は、スイッチ間の通信を必要とするだけである。この通信は、インテリジェントな仮想化ポートを介して実行することができるが、仮想化ポートを介して、或いは２つの仮想化ポート間で実行する必要はない。
【００４０】
記憶の仮想化は、ミラーリングのような種々の理由で行うことができる。例えば、４つの物理的ＬＵＮすなわちＰＬＵＮ１  ４２８、ＰＬＵＮ２  ４３０、ＰＬＵＮ３  ４３２、及びＰＬＵＮ４  ４３４を考える。多くの場合、冗長性のために２つの物理的ＬＵＮをグループ分けすることが望ましい。したがって、示されるように、２つの物理的ＬＵＮすなわちＰＬＵＮ１  ４２８及びＰＬＵＮ２  ４３０が、単一の仮想ＬＵＮすなわちＶＬＵＮ４３６によって表される。データがミラーリングされた時、該データは多数の物理的ＬＵＮにミラーリングされ（例えば、格納され）、物理的ＬＵＮのうちの１つの故障時に該データを取り出すことが可能になる。
データが１組の「ミラー」の一方に書き込まれるか、該１組の「ミラー」の一方から読み取られる時に、種々の問題が生じ得る。例えば、同じホスト又は異なるホスト上で実行している多数のアプリケーションは、リンク４３８、４４０として示される同じデータ又はメモリ位置（例えば、ディスク位置又はディスク・ブロック）に同時にアクセスすることができる。同様に、４３８、４４０及び４４２、４４３で示される、２つの異なるホストから送られる、読み取り又は書き込みコマンドのようなコマンドを、同じ時間枠で送ることができる。示されるように、各々のホストは、対応するホスト・バス・アダプタ（ＨＢＡ）を有することができる。理想的には、アプリケーション又はホストによってアクセス又は格納されるデータは、ミラーを完全なままにしておくべきである。より具体的には、ミラーの一方に対する書き込み作業の後でさえ、全てのミラー内に格納されたデータは、整合性をもったままである。言い換えれば、ミラーは、該ミラーの一方が故障した場合には、他方のミラーのための冗長な物理的ＬＵＮとして機能し続けるべきである。
【００４１】
ミラーリングがイネーブルにされる従来のシステムにおいては、２つの異なるソースによる相対的に同時になされるアクセスが、固有の競合状態をもたらすことが多い。例えば、２つの異なるクライアントが、同じ仮想ＬＵＮに書き込みコマンドを送るという状況を考える。示されるように、ホスト１  ４２４上で実行しているアプリケーション１  ４４４が、データ「Ａ」を有する書き込みコマンドを送り、ホスト２  ４２６上で実行しているアプリケーション２  ４４６が、データ「Ｂ」を有する書き込みコマンドを送る。第１のアプリケーション４４４が、データ「Ａ」を最初にＶＬＵＮ１  ４３６に送る場合には、該データ「Ａ」は、例えばＰＬＵＮ１  ４２８に書き込むことができる。しかしながら、ＰＬＵＮ２  ４３０にミラーリングできる前に、第２のアプリケーション４４６が、データ「Ｂ」を送ることができる。データ「Ｂ」は、ＰＬＵＮ１  ４２８にミラーリングされる前に、ＰＬＵＮ２  ４３０に書き込むことができる。次に、データ「Ａ」は、ＰＬＵＮ２  ４３０にミラーリングされる。同様に、データ「Ｂ」は、ＰＬＵＮ１  ４２８にミラーリングされる。このように、示されるように、最後の書き込み作業が、特定の物理的ＬＵＮに格納されることになるデータを制御する。この例において、両方のミラーリング作業の完了時に、ＰＬＵＮ１  ４２８はデータ「Ｂ」を格納し、ＰＬＵＮ２  ４３０はデータ「Ａ」を格納する。このように、２つの物理的ＬＵＮは、もはや互いにミラーリングせず、あいまいなデータをもたらす。
【００４２】
従来のシステム内に存在する固有の競合状態を解決するために、仮想化ポートは、４２６のようなインタースイッチ・リンクを介して、上述のように互いに通信する。言い換えれば、ポートは、仮想ＬＵＮのアクセスを互いに同期させる。１つの実施形態において、このことは、マスター・ポートとして他の仮想化ポートに知られている単一のマスター仮想化ポートの確立によって達成される。マスター・ポートの識別は、種々の機構によって確立することができる。１つの例として、マスター・ポートは、マルチキャスト・メッセージを他の仮想化ポートに送り出し、該マスター・ポートがマスター仮想化ポートであることを示すことができる。別の例として、マスター・ポートの識別を用いて、仮想化ポートを初期化することができる。さらに、マスター仮想化ポートが故障した場合には、スレーブ仮想化ポートの１つをマスター・ポートとして置き換えることを可能にするのが望ましい。
マスター仮想化ポートは、固有の競合状態のために引き起こされた問題を様々な方法で解決することができる。１つの解決法は、ここで説明されるロック機構である。別の手法は、仮想・物理的マッピング及び適切なインターロックを担当するＳＣＳＩコマンドを、マスター仮想化ポートに再び向けることである。次に、スレーブ・ポートは、マスター・ポートからマッピングを学習することも、データを処理することもできる。
【００４３】
仮想ＬＵＮにアクセスする前に、スレーブ仮想化ポートは、マスター仮想化ポートとの対話を開始し、該仮想ＬＵＮにアクセスするための許可を要求する。このことは、ロックが解除されるまで、仮想ＬＵＮへのアクセスをロックするロック機構により達成される。例えば、スレーブ仮想化ポート（例えば、ポート４０６）は、マスター仮想ポート（例えば、ポート４０８）からロックの許可を要求することができる。次に、マスター仮想化ポートは、スレーブ仮想化ポートに、いつロックが許可されるかを知らせる。ロックが許可されると、該ロックが解除されるまで、対応する物理的記憶位置へのアクセスが「ロックされる」。言い換えれば、ロックの保持者は、それらの物理的位置に格納されたデータへの排他的な読み取り及び書き込みアクセスを有する。この例において、次に、データ「Ａ」は、物理的ＬＵＮ１  ４２８及び物理的ＬＵＮ２  ４３０の両方に格納される。スレーブ仮想化ポート４０６が、仮想ＬＵＮへの書き込み作業がうまくいったことを示すＳＴＡＴＵＳ  ＯＫメッセージを受け取ると、ロックを解除することができる。次に、マスター仮想化ポート４０８は、データ「Ｂ」がＶＬＵＮ１  ４３６の両方のミラーに格納されるまで、仮想ＬＵＮのアクセスに対するロックを獲得することができる。このように、仮想化ポートは、仮想ＬＵＮへのアクセスを同期させ、基本的な物理的記憶媒体に格納されたデータの完全性を保証する。
【００４４】
通常、メモリ・アクセスのためのＳＣＳＩプロトコルにおいて、読み取り又は書き込み作業を行うために、コマンドが、イニシエータ及びターゲットによって送られる。ターゲットへの読み取り又は書き込みアクセスを要求するために、イニシエータは、要求コマンド（ＣＭＤ）を送る。より具体的には、コマンドは、ターゲット内の特定のメモリ位置へのアクセスを要求する。この目的のために、要求コマンドは、以下の情報、すなわちＳＣＳＩ  ＬＵＮ、論理ユニット内でアクセスされることになるデータについての開始メモリ・アドレス（論理ユニットの開始アドレスからのオフセット）、メモリ・アクセスの長さ（例えば、ブロック又はバイトで）、及びコマンドのタイプ（読み取り又は書き込み）を含む。要求コマンドを受け取ると、ターゲット装置は、（一般的には、メモリ・コントローラを介して）要求されたメモリ位置にアクセスできるかどうかを判断する。要求されたメモリ位置にアクセスでき、該アクセスが書き込み作業である場合には、ターゲットは、転送できるデータ量をも示す転送可能信号（ＸＦＲ＿ＲＤＹ）を用いて、イニシエータに応答する。その後、イニシエータは、データの１つ又はそれ以上のフレームをターゲットに送る。ターゲットのコントローラは、受信データを特定されたメモリ位置に書き込もうとする。コマンド完了時には（うまくいっても、うまくいかなくても）、ターゲットは、状態バイトをイニシエータに戻す。大部分のエラー及び例外条件は、単一の状態バイトを用いて適切に説明することができないので、１つの状態コードであるＣＨＥＣＫ  ＣＯＮＤＩＴＩＯＮが、付加的な情報が利用可能であることを示す。書き込み作業が成功であると仮定すると、次に、ターゲットは、ＳＴＡＴＵＳ  ＯＫ信号を用いて応答する。作業を終えるために、ターゲットは、ＣＯＭＭＡＮＤ  ＣＯＭＰＬＥＴＥメッセージをイニシエータに送る。次に、ＳＣＳＩ書き込み作業が完了する。
【００４５】
要求コマンドが読み取り作業を特定する場合には、次に、要求された位置から読み取られたデータを用いて、ターゲットが直接応答する。転送可能信号は要求されない。全ての要求されたデータが送られると、ターゲットは、ＳＴＡＴＵＳ  ＯＫ及びＣＯＭＭＡＮＤ  ＣＯＭＰＬＥＴＥ信号を用いて応答する。本発明との比較のために、以下に説明される図５及び図６が、標準的なＳＣＳＩの読み取り及び書き込み作業について述べる。
本発明によると、仮想化スイッチが、ターゲットとイニシエータ（通常はストレージ・サブシステムとホスト）との間に置かれる。場合に応じて、これらのスイッチ上の仮想化ポートは、ＳＣＳＩコマンドをインターセプトし、イニシエータ又はターゲットに通知する前に特定の動作をとる。以下に説明される図７乃至図１０は、仮想化スイッチがＳＣＳＩコマンドを処理する種々のシナリオを示す。
【００４６】
一般に、要求コマンド（読み取り又は書き込み）の場合には、仮想化ポートは、３つの動作をとる。第１に、仮想化ポートは、仮想ＬＵＮ及び関連したアドレス並びに要求の長さを、対応する物理的ＬＵＮ及び関連したアドレス並びに長さに変換する。もちろん、ミラーリング及びストライピングの場合には、仮想ＬＵＮ、アドレス、及び長さからのこの変換の結果が、対応する多数の組の物理的ＬＵＮ、アドレス、及び長さを生成する。このことは、内部テーブル、又は仮想位置と物理的位置との間のマッピングのリストを調べることによって達成することができる。もちろん、リスト及びツリーのような他の適切なデータ構造を用いることもできる。さらに、アルゴリズム（例えば、ストライピングの場合）を用いて、仮想・物理的マッピングを計算することも可能である。データの単一の仮想ブロックが、多数のＬＵＮにわたるデータの２つ又はそれ以上の物理的ブロックに対応できることに注意されたい。この場合、仮想化ポートは、物理的マッピングが２つの別箇の物理的位置を特定することを理解しなければならない。
【００４７】
第２に、物理的ＬＵＮ、アドレス、及び長さが、仮想化ポートによって識別された後、次に、該ポートは、他のノードが同時に同じデータ位置にアクセスしようとしないことを保証しなければならない。したがって、１つの実施形態によると、仮想化により、アクセスが完了するまで、物理的データ位置がロックされることが要求される。このことは、要求しているポート自体がマスターでない限り、ロック要求をマスター仮想化ポートにサブミットすることによって達成することができる。仮想アドレス空間又は物理的アドレス空間のどちらにおいてもロックを処理できることに注意することが重要である。言い換えれば、ＶＬＵＮ内又はＰＬＵＮ上でバイトの範囲をロックすることが可能である。さらに、仮想から物理的への変換前、又は変換が実行された後のどちらにも、ロックを実行することが可能である。いずれの場合も結果は同じである。
【００４８】
第３に、ロックが許可された後、仮想化ポートは、１つ又はそれ以上の新しい（置換え）ＳＣＳＩ要求コマンドを準備する。これらのコマンドは、イニシエータからのインターセプトされた要求コマンドにおいて特定された仮想位置に対応する物理的位置を含む。コマンドはまた、ソース・アドレスとして仮想化ポート・アドレスをも含む。そのように、ターゲットからの応答は、ホストではなく仮想化ポートに戻る。例えば、仮想化ポートが、ターゲットから転送可能（ＸＦＲ＿ＲＤＹ）コマンドを受け取った場合には、該仮想化ポートは、対応する転送可能コマンドをイニシエータに送り返す。しかしながら、一般に、ＬＵＮフィールド（ＶＬＵＮ又はＰＬＵＮのいずれかを含む）は、転送可能コマンド又は転送されたデータ内に存在しない。こうしたＬＵＮフィールドは、ＳＣＳＩコマンド内にだけ存在する。寧ろ、１つの実施形態においては、インテリジェントなポートは、ファイバー・チャンネル・フレーム内の他のフィールドを用いて、転送可能コマンド及びＳＣＳＩコマンドを有するデータを相互に関連させることができる。
【００４９】
幾つかの場合、仮想化ポートは、単一の読み取り／書き込み要求に対して多数の転送可能コマンドを受け取る。これは、一般に、仮想メモリ位置が、多数の別箇の物理的ＬＵＮにマッピングする場合である。この場合、各々の物理的ＬＵＮは、仮想化ポートによって送られた読み取り／書き込み要求に応答して、転送可能コマンドを用いて応答する。このように、幾つの物理的ＬＵＮが要求内に含まれているかに関係なく、イニシエータが単一の要求コマンドだけを送る際、仮想化ポートが該イニシエータに単一の転送可能コマンドだけを送ることができるようにすべきである。仮想化ポートは、転送可能コマンドを処理するのと同時に、ステータス・コマンドを処理する。
イニシエータとターゲットとの間の実際のデータ転送について、仮想化スイッチは、単にデータフレームをインターセプトし、必要に応じてソース及び宛先アドレスを置き換える。ターゲットからのデータの場合には、ポートは、もともと対応する物理的ＬＵＮであってソース・アドレスを、対応する仮想ＬＵＮ及び仮想アドレスと置き換える。
【００５０】
宛先アドレスにおいて、ポートは、それ自体のアドレスをイニシエータのアドレスと置き換える。イニシエータからのデータの場合には、ポートは、ソース・アドレスを、該イニシエータのアドレスから該ポート自体のアドレスに変える。ポートはまた、宛先アドレスを、仮想ＬＵＮ／アドレスから対応する物理的ＬＵＮ／アドレスに変える。この処理がより複雑である場合もある。例えば、１つの実施形態において、ミラーリング又はストライピングの場合、ステータスは、単に再書き込みされ、イニシエータに送られるのではない。寧ろ、ＰＬＵＮに向けて送られた全てのコマンドについての全てのステータスが、集められる。全てのステータスがＳＵＣＣＥＳＳである場合には、ＳＵＣＣＥＳＳのステータスは、イニシエータに戻される。
【００５１】
記憶の仮想化をサポートするために、ＳＣＳＩコマンドがインターセプトされ、修正され、生成され、送られる方法を示す前に、従来のＳＣＳＩ読み取り・書き込み作業について説明するのは有用なことである。図５は、従来のＳＣＳＩ書き込み作業を示す、例示的なトランザクションの流れ図である。示されるように、トランザクションは、それぞれ縦線５０２及び５０４で示されるホストと物理的ＬＵＮとの間で実行される。ホスト上で実行しているアプリケーションが、データをディスク内に格納したいと望む場合には、該アプリケーションは、オペレーティング・システム・ライブラリを通して、書き込みコマンド５０６を出す。書き込みコマンドは、ＳＣＳＩドライバに送られ、該ＳＣＳＩドライバは、該書き込みコマンドを適切なディスクに向けて転送する。示されるように、書き込みコマンドは、一般に、格納されることになるデータ、メモリ内の特定の物理的アドレス、及びその物理的アドレスで必要とされるメモリの量を格納する。この例においては、要求されるメモリの量は４ＫＢである。
【００５２】
ドライバ５０２によって書き込みコマンド受け取られた時に、このことが、ＳＣＳＩ交換をトリガする。より具体的には、ドライバ５０２は、物理的ＬＵＮ（ＰＬＵＮ）、物理的アドレス（すなわち、オフセット）、要求されるメモリの長さ（例えば、４ＫＢ）を特定し、該コマンドが書き込みコマンドであることを示すＳＣＳＩ書き込みコマンド５０８を送る。ＰＬＵＮがデータ受信できる状態になると、次に、ＰＬＵＮ５０４は、該ＰＬＵＮ５０４が４ＫＢのデータの受信が可能であることを示す転送可能コマンド５１０を送る。一般的に、多くの場合全体のデータが単一のフレームで送られるように設定されることを禁止する最大サイズのフレームがある。したがって、この例においては、ホスト５０２は、各々が元の４ＫＢのデータの２ＫＢを送信する、２つの連続的なフレーム５１２、５1４でデータを送る。次に、書き込みがうまくいくか、又はエラーの際のＣＨＥＣＫ＿ＣＯＮＤＩＴＩＯＮメッセージの場合、ＰＬＵＮ５０４は、ＳＴＡＴＵＳ（ＯＫ）メッセージ５１６を用いて応答する。
【００５３】
同様に、従来のＳＣＳＩ読み取り作業の際に実行される段階が、図６に示される。クライアントが、物理的アドレスから特定量のデータを読み取ろうと望む場合には、該クライアントは、書き込みコマンド６０２を送る。上述のように、ホスト５０２による読み取りコマンドの受信が、ＳＣＳＩ交換をトリガする。次に、ホスト５０２は、物理的ＬＵＮ、物理的アドレス（すなわち、オフセット）、長さを示すＳＣＳＩ読み取りコマンド６０４を送り、このコマンドが書き込みコマンドではなく読み取りコマンドであることを示す。次に、ＰＬＮ５０４は、各々が２ＫＢのデータを含む２つの連続的なフレームを用いて応答する。読み取り作業がうまくいったと仮定すると、ＰＬＵＮ５０４は、ＳＴＡＴＵＳ（ＯＫ）メッセージ６１０をホスト５０４に送る。
【００５４】
ストレージ・エリア・ネットワーク内で記憶の仮想化をサポートするために、ＳＣＳＩメッセージ（例えば、フレーム）が、ここでは仮想化スイッチと呼ばれる仮想化可能装置によってインターセプトされる。仮想化スイッチは、該仮想化が、ホスト（例えば、イニシエータ）及び物理的ＬＵＮ（例えば、ターゲット）の両方に対してトランスペアレントとなるように、受け取ったＳＣＳＩフレームを生成又は修正することが好ましい。言い換えれば、本発明の開示された実施形態をサポートするために、ホスト及び物理的ストレージ装置を修正する必要はない。
本発明の種々の実施形態によると、仮想化スイッチは、ストレージ・エリア・ネットワーク内の記憶の仮想化をサポートする。図７は、ＳＣＳＩ書き込み作業を実行する記憶の仮想化のアプリケーションを示し、図８は、ＳＣＳＩ読み取り作業を実行する記憶の仮想化のアプリケーションを示し、これらの両方を、以下にさらに詳細に説明する。
【００５５】
図７は、本発明の１つの実施形態に従って実行される例示的なＳＣＳＩ書き込み作業を示すトランザクションの流れ図である。示されるように、ホスト７０２、仮想化ポート７０４、物理的ＬＵＮ１  ７０６、及び物理的ＬＵＮ２  ７０８は、縦線で示される。この例においては、データは、２つの物理的ＬＵＮにミラーリングされる。示されるように、ホスト７０２は、仮想ＬＵＮ、仮想ＬＵＮ内のアドレス、書き込まれるべきデータの長さ（例えば、４ＫＢ）を識別するＷＲＩＴＥコマンド７１０を送り、該コマンドが書き込みコマンドであることを示す。仮想化ポート７０４がＷＲＩＴＥコマンドをインターセプトすると、該仮想化ポート７０４は、仮想・物理的マッピング７１２を獲得し、１つ又はそれ以上の物理的ＬＵＮ、及び該仮想・物理的マッピングによって特定される関連した物理的アドレス（例えば、仮想ＬＵＮ及び仮想アドレスに関連した）を識別する。さらに、データがミラーリングされるべき時には、どの物理的ＬＵＮが最初に書き込まれるべきかを示すミラー選択アルゴリズム７１４を実行することができる。例えば、アルゴリズムは、ランダムに又はラウンドロビン順に作動することができる。次に、仮想化ポートは、ロック７１６を獲得し、該仮想化ポートは、物理的ＬＵＮ７０６及び７０８の両方にデータ転送を始めることができるようになる。
【００５６】
仮想化ポート７０４がロックを獲得すると、該仮想化ポート７０４は、ＷＲＩＴＥコマンドを、７１８で示されるような第１の物理的ＬＵＮ及び７２０で示されるような第２の物理的ＬＵＮに送る。各々のフレームは、物理的ＬＵＮ、該物理的ＬＵＮ内の物理的アドレス、要求されるメモリの長さ（例えば、４ＫＢ）を識別し、コマンドがＷＲＩＴＥコマンドであることを示す。仮想化ポートによって送られるフレームが、イニシエータからの仮想化ポートによって受けフレームの標準プロトコル（例えば、トラフィックのタイプ）と両立性があることに注意することが重要である。この例においては、データがミラーリングされるので、イニシエータからの仮想化ポートによる単一のＷＲＩＴＥコマンドを受け取った時に、該仮想化ポートによって送られる多数のＷＲＩＴＥコマンドがある。したがって、この例において、仮想化ポートが、送信のために受信フレームを修正することが可能であるが、該仮想化ポートはまた、送信のために少なくとも１つの新しいフレームをも生成する。
【００５７】
上述のように、ターゲットによってＳＣＳＩ  ＷＲＩＴＥコマンドが受け取られると、一般に、イニシエータからデータの転送を受信することが可能になると、該ターゲットは、ＸＦＲ＿ＲＤＹ信号を送る。したがって、ＸＦＲ＿ＲＤＹ信号を、仮想化ポートからイニシエータ（ホスト）に送ることも望ましい。しかしながら、本発明の１つの実施形態によると、いずれかの物理的ＬＵＮから対応するＸＦＲ＿ＲＤＹ信号を受け取る前に、ＸＦＲ＿ＲＤＹ信号７２２は、仮想化ポート７０４によってホスト７０２に送られる。このように、仮想化ポート７０４は、物理的ＬＵＮがデータを受信可能になる前に、転送されるべきデータを獲得することができる。このように、ＸＦＲ＿ＲＤＹ信号が物理的ＬＵＮの１つから受け取られるやいなや、データを直ちに信号物理的ＬＵＮに送ることができる。
【００５８】
例えば、示されるように、ＸＦＲ＿ＲＤＹ信号７２２が、ホスト７２２によって受け取られ、仮想ＬＵＮが４ＫＢのデータを受信可能になったことを示すと、該ホスト７０２は、該４ＫＢのデータを、各々が２ＫＢのデータを含む２つの連続したフレーム７２４及び７３０で転送する。第１のフレーム７２４が仮想化ポート７０４に送られた後、ＸＦＲ＿ＲＤＹ信号７２６が、第１の物理的ＬＵＮ７０６から受け取られる。このように、７２８において、データの第１フレームを第１の物理的ＬＵＮに送ることによって、仮想化ポート７０４から第１の物理的ＬＵＮまでのデータ送信を直ちに開始することができる。同様に、データの第２フレーム７３０が、仮想化ポート７０４によってホスト７０２から受け取られるとすぐに、該仮想化ポート７０４が、第２のデータフレーム７３２を第１の物理的ＬＵＮ７０６に送る。同様に、ＸＦＲ＿ＲＤＹメッセージ７３４が、第２の物理的ＬＵＮ７０８から受け取られ、４ＫＢのデータ全体を受信可能になったことを示すとすぐに、該データは、２つのフレーム７３６、７４０で第２の物理的ＬＵＮ７０８に送られる。この間に、仮想化ポート７０４は、第１の物理的ＬＵＮ７３８からＳＴＡＴＵＳ（ＯＫ)メッセージ７３８を受け取ることができる。同様に、第２の物理的ＬＵＮ７０８へのデータ転送がうまく完了すると、第２の仮想ＬＵＮ７０８が、ＳＴＡＴＵＳ（ＯＫ)メッセージ７４２を仮想化ポートに送る。次に、仮想化ポート７０４は、データがうまくメモリに格納されたことを示す、単一のＳＴＡＴＵＳ（ＯＫ)メッセージ７４４をホスト７０２に送る。もちろん、ステータスが、コマンドがうまくいかなかったことを示す場合には、１つ又はそれ以上のフレームを適切な物理的ＬＵＮに再送する。したがって、物理的ＬＵＮへの二重の書き込み作業を必要とするミラーリング作業は、ホスト７０２に対してトランスペアレントである。
【００５９】
図７に関連して上述されたように、データが２つ又はそれ以上の物理的ＬＵＮにミラーリングされると、ＳＣＳＩ読み取り作業が、ミラーの１つからのデータの読み取りをトリガする。図８は、本発明の１つの実施形態に従って実行された例示的なＳＣＳＩ読み取り作業を示すトランザクションの流れ図である。示されるように、ホスト７０２は、ＳＣＳＩ読み取りコマンド８０２を仮想化ポート７０４に送り、そこで該読み取りコマンドは、仮想ＬＵＮ、関連した仮想アドレス、獲得されるべきデータの長さを識別し、該コマンドが（書き込み作業ではなく）読み取り作業であることを示す。仮想化ポート７０４による読み取りコマンドの受信が、仮想化ポート７０４によって実行される幾つかの作業をトリガする。より具体的には、仮想化ポートは、該仮想化ポートによって受け取られたデータを格納するために、メモリ８０４を割り当てることができる。例えば、読み取られるべき（又は書き込まれるべき）メモリの量を割り当てることが望ましい。このことは、幾つかの理由で重要である。例えば、仮想化ポートで受け取られたデータは、読み取り作業のイニシエータにデータを送るべき順序と整合性のない順序で受け取ることができる。さらに、読み取り作業が失敗した場合には、データを保持し、前もってホストに送られたデータの完全性を保証することが望ましい。このことは、例えば、前もって送られたデータと比較するために別のミラーからデータを読み取ることによって達成することができる。
【００６０】
複数のミラー（例えば、物理的ＬＵＮ）の１つからのデータを読み取る前に、仮想化ポート７０４によってミラー選択アルゴリズム８０６を実施して幾つかのミラーの１つを選択し、そこからデータを読み取ることができる。上述のように、ミラーの各々に格納されたデータは、他のミラーに格納されたデータを反映（例えば、複写）すべきである。ミラー選択アルゴリズムは、例えば、ミラーの１つをランダムに選択するか、好ましいミラー（例えば、物理的ＬＵＮ１）を選択し、そこからデータを読み取ることができる。
【００６１】
仮想化書き込みコマンドに関連して上述されたように、８０８においてロックが得られ、特定のメモリ位置への排他的なアクセスを保証する。さらに、８１０において、仮想・物理的マッピングが得られる。次に、仮想化ポート７０４は、読み取りコマンド８１２を、選択されたミラーすなわち物理的ＬＵＮ１  ７０６に送る。図７に関連して上述された書き込み仮想化作業と同様に、コマンドは、物理的ＬＵＮ（例えば、ＰＬＵＮ１）、及び関連した物理的アドレス、読み取られるべきデータの長さを特定し、この作業が読み取り作業であることを示す。図７に関連して上述されたように、大きなブロックのデータは、２つ又はそれ以上のフレームで送られる必要がある。したがって、ＰＬＵＮ１  ７０６は、２つの別箇のフレーム８１４及び８１６の要求されたデータを用いて、仮想化ポートに応答する。次に、８１８において、仮想化ポート７０４は、前もって割り当てられたメモリにデータを格納する。次に、データは、仮想化ポート７０４によって、２つの別個のフレーム８２０及び８２２でホスト７０２に送ることができる。８２６において、ＳＴＡＴＵＳ８２４が、ＰＬＵＮ１  ７０６から仮想化ポート７０４によって受け取られた時に、仮想化ポート７０４は、コマンド及び／又はデータが、再送信される必要があるかどうかを判断することができる。言い換えれば、作業がうまくいかなかったことをＳＴＡＴＵＳが示す場合には、前もってホストに送られた（及び割り当てられたメモリに格納された）データと比較するために、別のミラー（例えば、物理的ＬＵＮ）からデータを読み取ることが望ましい。次に、ＳＴＡＴＵＳ８２８をホスト７０２に送ることができる。例えば、仮想化ポート７０４は、ステータスをホストに送る前に、コマンドがうまく完了されるまで待つことができる。
【００６２】
本発明を適用して、ミラーリング及びストライピングなどの種々の仮想化作業を達成することができる。例えば、ＲＡＩＤ１＋０作業は、ミラーリング作業に続いて、ストライピング作業を含む。図９Ａは、本発明の１つの実施形態に従って実行されたＲＡＩＤ１＋０作業のアプリケーションから生じる例示的なストレージ構成を示す、例示的なブロック図である。示されるように、データＡ−Ｅがデータのブロック内に格納されている多数の物理的ＬＵＮが示される。より具体的には、データは、対応する１から１０までの数によって示される順序で格納される。ＲＡＩＤ１＋０作業は、データが、物理的ＬＵＮすなわちＰＬＵＮ１  ９０２、ＰＬＵＮ２  ９０４、ＰＬＵＮ３  ９０６、及びＰＬＵＮ４  ９０８内に格納され、物理的ＬＵＮすなわちＰＬＵＮ５  ９１０及びＰＬＵＮ６  ９１２にミラーリングされるように実行される。最初にミラーリングが実行されるので、データのブロックをストライピングする前に、該データの各ブロックが、物理的ＬＵＮすなわちＰＬＵＮ５  ９１０及びＰＬＵＮ６  ９１２にミラーリングされる。言い換えれば、データの単一の部分が、ミラーにわたってデータのブロック全体を「ストライピング」する前に、多数の物理的ＬＵＮにミラーリングされる。この例において、データＡはＬＵＮ９０２内に格納され、次にＬＵＮ９１０にミラーリングされる。示されるように、次にデータＢは、ＬＵＮ９０４内に格納され、ＬＵＮ０１２にミラーリングされ、このことが該ＬＵＮにわたって「ストライプ」を生成する。示されるように、データＣ、Ｄ、及びＥを格納するために、連続的なミラーリング及びストライピング作業が実行される。
【００６３】
別の例においては、ストライピング作業に続いて、ミラーリング作業を含むＲＡＩＤ０＋１作業を実行することができる。図９Ｂは、本発明の１つの実施形態に従って実行されるＲＡＩＤ０＋１作業のアプリケーションから生じる例示的なストレージ構成を示す、例示的なブロック図である。示されるように、データＡ−Ｅがデータのブロック内に格納されている多数の物理的ＬＵＮが示される。より具体的には、データは、対応する１から１０までの数によって示される順序で格納される。ＲＡＩＤ０＋１作業は、データが、物理的ＬＵＮすなわちＰＬＵＮ１  ９１４、ＰＬＵＮ３  ９１８、ＰＬＵＮ５  ９２２、及びＰＬＵＮ７  ９２６内に格納され、物理的ＬＵＮすなわちＰＬＵＮ２  ９１６、ＰＬＵＮ４  ９２０、ＰＬＵＮ６  ９２４、ＰＬＵＮ８  ９２８にミラーリングされるように実行される。示されるように、最初にストライピングが実行されるので、データの全てのブロックは、多数の物理的ＬＵＮにおいて該データの単一のブロックをミラーリングする前に、物理的ＬＵＮにわたって「ストライピング」される。この例において、全体の組のデータＡ−Ｅは、１から５までの数で示されるように、物理的ＬＵＮ９１４、９１８、９２２、９２６、及び９１４にわたってストライピングされる。次に、対応する６から１０までの数で示されるように、データＡ、Ｂ、Ｃ、Ｄ、及びＥの各々の部分が、それぞれ物理的ＬＵＮ９１６、９２０、９２４、９２８、及び９１６に個別にミラーリングされる。
【００６４】
図１０Ａは、本発明の１つの実施形態に従って実行されるＲＡＩＤ１＋０作業のアプリケーションから生じる例示的なストレージ構成を示す、別の例示的なブロック図である。上述のように、ＲＡＩＤ１＋０作業は、ストライピング作業に続いて、ミラーリング作業を含む。示されるように、仮想ＬＵＮ１００２が、３つの物理的ＬＵＮすなわちＰＬＵＮ１  １００４、ＰＬＵＮ２  １００６、及びＰＬＵＮ３  １００８を表すことができる。示されるように、物理的ＬＵＮは、異種のものであってもよく、よって異なるメモリ量を含むことができる。この例においては、データＡ、Ｂ、及びＣの各々のブロックは、１００バイトである。データは、１から６までの数で示される順序でミラーリングされ、ストライピングされる。示されるように、データの各ブロックは、個別にＰＬＵＮ３  １００８にミラーリングされる。このプロセス中、データＡ−Ｃは、ＰＬＵＮ１００４及び１００６にわたってストライピングされる。
【００６５】
図１０Ｂ及び１０Ｃは共に、ミラーリングにストライピングが続く、図１０ＡのＲＡＩＤ１＋０作業中に実行される段階を表すトランザクションの流れ図を表す。示されるように、ホスト、スレーブ仮想化ポート、マスター仮想化ポート、及び物理的ＬＵＮすなわちＰＬＵＮ１乃至ＰＬＵＮ３によって実行される段階が、それぞれ縦線１０１０、１０１２、１０１４、１０１６、１０１８、及び１０１９による表される。１０２０で示されるように、ホスト１０１０は、仮想ＬＵＮ（例えば、ＶＬＵＮ１）、該仮想ＬＵＮ内のアドレス（例えば、０）、転送されるべきデータの長さ（例えば、３００バイト）を示す書き込みコマンドを最初に送り、該コマンドが書き込みコマンドであることを示す。読み取りコマンドに関して上述されたように、仮想化ポート１０１２がコマンドを受け取ると、該仮想化ポート１０１２は、書き込まれるべきデータについてのメモリ１０２２を割り当てることができる。
【００６６】
上述のように、仮想化ポートがマスター・ポートでない場合には、該仮想化ポートは、仮想ＬＵＮにアクセスする前に、マスター・ポートからロックを獲得する。したがって、スレーブ仮想化ポート１０１２は、ロック要求１０２４をマスター仮想化ポート１０１４に送る。例えば、ロック要求は、特定のアドレスにおける仮想ＬＵＮへのアクセスを要求するように働き、ロックされるべきメモリ量を示すことができる。ロック許可１０２６が、マスター仮想化ポート１０１４から受け取られると、スレーブ仮想化ポート１０１２は、仮想化プロセスを最適化するために、ＸＦＲ＿ＲＤＹ信号１０２８をホスト１０１０に送ることを望む。
【００６７】
次に、図１０Ａに示されるように、仮想化ポート１０１２は、データが送られるべき順序で、書き込みコマンドを３つのＰＬＵＮに送る。より具体的には、データＡは、アドレス０においてＰＬＵＮ１に格納され、続いてアドレス０においてＰＬＵＮ３に格納される。このように、対応する書き込みコマンド１０３０及び１０３２が、ＰＬＵＮ１  １０１６及びＰＬＵＮ３  １０１９に送られ、両方のコマンドは、１００バイトのデータが対応する物理的ＬＵＮ内の物理的アドレス０で書き込まれることを示す。同様に、図１０Ａに示されるように、書き込みコマンド１０３４及び１０３６は、ＰＬＵＮ２及びＰＬＵＮ３内のデータＢのミラーリングに対応し、１００バイトのデータが、それぞれアドレス０及び１００で書き込まれることになることを示す。次に、書き込みコマンド１０３８及び１０４０は、転送されるべきデータの量と、該データが物理的ＬＵＮ内に格納されることになる物理的アドレス１００及び２００と示すデータＣに対応するＰＬＵＮ１  １０６９及びＰＬＵＮ３  １０１９にそれぞれ送られる。各々の書き込みコマンドに対応する転送可能信号１０４２乃至１０５２は、物理的ＬＵＮがデータの転送を受信可能になった時に、それぞれＰＬＵＮ１、ＰＬＵＮ２、及びＰＬＵＮ３によって送られる。
【００６８】
上述の例において、各々の書き込みコマンド及び関連したＸＦＲ＿ＲＤＹコマンドが示される。しかしながら、メモリが、１０２２において割り当てられ、よってデータは、仮想化ポート上でバッファに入れられる。その結果、上述のように、図１０Ａに示されるようなＡ１・Ｃ５のようなデータ及びデータＡ２・Ｂ４・Ｃ６の書き込み（及び関連したＸＦＲ＿ＲＤＹコマンド）は、別箇に実行されるのではなく、単一の段階に併合することができる。例えば、段階１０３０及び１０３８は、２００バイトの単一の書き込みに併合することができ、段階１０３２、１０３６、及び１０４０は、３００バイトの単一の書き込みに併合することができる。同様に、段階１０４２及び１０４４は、２００バイトのＰＬＵＮ１からの単一のＸＦＲ＿ＲＤＹコマンドに併合することができ、段階１０４８及び１０５０、及び１０５２は、３００バイトのＰＬＵＮ３からの単一のＸＦＲ＿ＲＤＹコマンドに併合することができる。
【００６９】
ＸＦＲ＿ＲＤＹ信号が受け取られたので、仮想化ポート１０１２は、データがホスト１０１０から受け取られるとすぐに、該データを対応する物理的ＬＵＮに送り始めることができる。このように、１０５３においてデータＡがホストから受け取られると、データは、１０５４においてＰＬＵＮ１  １０１６に送られ、１０５６においてＰＬＵＮ３  １０１９に送られる。同様に、それぞれ１０５８及び１０６０で示されるように、データＢをホストから受け取ると、該データＢをＰＬＵＮ２  １０１８及びＰＬＵＮ３  １０１９の両方に送ることができる。この間、１０５９で示されるように、データＣを、ホスト１０１０から受け取ることができる。次に、それぞれ１０６２及び１０６４で示されるように、データＣは、ＰＬＵＮ１及びＰＬＵＮ３に送られる。書き込みコマンドがうまくいったと仮定すると、ＳＴＡＴＵＳ（ＯＫ）メッセージ１０６６乃至１０７６が、それぞれＰＬＵＮ１、ＰＬＵＮ２、及びＰＬＵＮ３から受け取られる。次に、ＳＴＡＴＵＳ（ＯＫ）メッセージ１０７７が、ホストに戻される。コマンドがうまく完了したことを通知すると、１０８０において割り当てられたメモリを割り当て解除することができる。
【００７０】
システム内の種々の制約のために、最大転送ユニットがある。例えば、仮想化ポートは、特定の転送のために割り当てるために、限定された量のメモリを有することができる。図１０Ｂに示される例を修正することで、ホストは、データＡ乃至Ｄを送るために、最初に要求された４００バイトのメモリ（示されるような３００バイトのメモリでなく）を有することができ、仮想化ポートは、割り当てのために使用可能な３００バイトだけを有することができる。したがって、上述のように、仮想化ポートは、３００バイトだけを転送できることを示すＸＦＲ＿ＲＤＹメッセージを送ることができる。例えば、１０８２において、メモリが割り当て解除されるとすぐに、仮想化ポートによって残りの１００バイトのメモリが割り当てられる。例えば、第２のロック要求が、仮想ＬＵＮ、該仮想ＬＵＮ内のアドレス、書き込まれるべきデータの長さを識別し、該データがＶＬＵＮに書き込まれるべきことを示す。１０８６においてロックが許可されると、残りの１００バイトのデータを転送できることを示す、転送可能信号１０８７がホストに送られる。同様に、それぞれ１０８８及び１０９０において、物理的アドレス及び書き込み作業に必要とされるメモリの量を示す、ＰＬＵＮ２  １０１８及びＰＬＵＮ３  １０１９への書き込みコマンドが送られる。１０９２及び１０９４において示されるように、転送可能信号が、対応する物理的ＬＵＮから受け取られると、１０９５でホストから受け取ったデータＤが、１０９６及び１０９８で２つの物理的ＬＵＮに送られる。１１００及び１１０２で示されるように、２つの物理的ＬＵＮからのステータスを受け取ると、適切なステータスが、１１０３でホストに送られる。また、コマンドがうまく完了すると、１１０４でメモリが割り当て解除される。
【００７１】
ロックが、ストレージ・エリア・ネットワーク内の「マスター・ポート」によって許可されると、もはや必要とされなくなった場合に該ロックを「解除する」ことができる。解除されると、別のネットワーク・エンティティ又はプロセスが、仮想ＬＵＮに、よって対応する物理的ＬＵＮにアクセスすることができる。例えば、書き込み（又は読み取り）コマンドがうまく完了すると、スレーブ仮想化ポートによって、ロック解除又はアンロック要求１１０６を、マスター仮想化ポートに送ることができる。上述のように、対応するターゲットからのＳＴＡＴＵＳを受け取った時に、コマンドの完了がうまくいったことを示すことができる。次に、１１０８において、マスター仮想化ポートにより、許可されたロックが解除されたという通知をスレーブ仮想化ポートに与えることができる。
【００７２】
本発明の例証となる実施形態及びアプリケーションがここに示され、説明されるが、本発明の概念、範囲、及び精神の範囲内にとどまる多くの変形及び修正が実行可能であり、これらの変形は、本明細書の熟読後、当業者には明らかになるであろう。例えば、本発明は、フレームに適用されるものとして説明される。しかしながら、本発明は、こうした実施に限定されるものではなく、代わりにパケットにも同様に適用されることを理解すべきである。さらに、本発明は、実施される文脈及びシステムに関係なく適用することができる。このように、一般的に言うと、本発明は、上述の仮想化作業を用いて実行する必要はないが、ストレージ・エリア・ネットワーク内の他の仮想化作業をサポートするために用いることができる。
【００７３】
さらに、例示的なスイッチが説明されているが、上述の実施形態は、種々のネットワーク装置（例えば、サーバ）及び種々の媒体において実施することができる。例えば、上述の発明を実施するための命令及びデータは、ディスク・ドライブ、ハード・ドライブ、フロッピィ・ディスク、サーバ・コンピュータ、又は遠隔ネットワーク化されたコンピュータ上に格納することができる。したがって、本実施形態は、制限的なものではなく例証と考えるべきであり、本発明は、ここで与えられた詳細に限定されるものではなく、添付の特許請求の範囲の範囲及び等価物の範囲内で修正することができる。
【図面の簡単な説明】
【００７４】
【図１Ａ】例示的なストレージ・エリア・ネットワークを示すブロック図である。
【図１Ｂ】従来技術の仮想化機能の種々の実施形態を実施することができるストレージ・エリア・ネットワークを示すブロック図である。
【図２】本発明の種々の実施形態に従って実施することができる仮想化モデルを示すブロック図である。
【図３Ａ】本発明の種々の実施形態を実施することができる例示的な仮想化スイッチを示すブロック図である。
【図３Ｂ】本発明の種々の実施形態を実施することができる例示的な標準スイッチを示すブロック図である。
【図４】本発明の種々の実施形態を実施することができる例示的なシステム・アーキテクチャを示すブロック図である。
【図５】従来のＳＣＳＩ書き込み作業を示す例示的なトランザクションの流れ図である。
【図６】従来のＳＣＳＩ読み取り作業を示す例示的なトランザクションの流れ図である。
【図７】本発明の１つの実施形態に従って実行される例示的なＳＣＳＩ書き込み作業を示すトランザクションの流れ図である。
【図８】本発明の１つの実施形態に従って実行される例示的なＳＣＳＩ読み取り作業を示すトランザクションの流れ図である。
【図９Ａ】本発明の１つの実施形態に従って実行されるＲＡＩＤ１＋０作業の適用から生じる例示的なストレージ構成を示す、例示的なブロック図である。
【図９Ｂ】本発明の１つの実施形態に従って実行されるＲＡＩＤ０＋１作業の適用から生じる例示的なストレージ構成を示す、例示的なブロック図である。
【図１０Ａ】ミラーリングの後にストライピングが続く、本発明の１つの実施形態に従って実行されるＲＡＩＤ１＋０作業の適用から生じる例示的なストレージ構成を示す、別の例示的なブロック図である。
【図１０Ｂ】図１０ＡのＲＡＩＤ１＋０作業中に実行される段階を表すトランザクションの流れ図を表す。
【図１０Ｃ】図１０ＡのＲＡＩＤ１＋０作業中に実行される段階を表すトランザクションの流れ図を表す。
【図１Ａ】
2005525619.tif 000003
【図１Ｂ】
2005525619.tif 000004
【図２】
2005525619.tif 000005
【図３Ａ】
2005525619.tif 000006
【図３Ｂ】
2005525619.tif 000007
【図４】
2005525619.tif 000008
【図５】
2005525619.tif 000009
【図６】
2005525619.tif 000010
【図７】
2005525619.tif 000011
【図８】
2005525619.tif 000012
【図９Ａ】
2005525619.tif 000013
【図９Ｂ】
2005525619.tif 000014
【図１０Ａ】
2005525619.tif 000015
【図１０Ｂ】
2005525619.tif 000016
【図１０Ｃ】
2005525619.tif 000017
【国際調査報告】
2005525619.tif 000018
2005525619.tif 000019