JP5027877B2 - ストレージシステム用コマンドの生成 - Google Patents

ストレージシステム用コマンドの生成 Download PDF

Info

Publication number
JP5027877B2
JP5027877B2 JP2009516584A JP2009516584A JP5027877B2 JP 5027877 B2 JP5027877 B2 JP 5027877B2 JP 2009516584 A JP2009516584 A JP 2009516584A JP 2009516584 A JP2009516584 A JP 2009516584A JP 5027877 B2 JP5027877 B2 JP 5027877B2
Authority
JP
Japan
Prior art keywords
storage
group
command
partition
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2009516584A
Other languages
English (en)
Other versions
JP2009541854A (ja
Inventor
アダムス,マーク
ルードウイツグ,トーマス・アール
ボーグマン,サミユエル・ケイ
ウイツチー,ニコラス
サドリイ,ナウザツド
Original Assignee
ラテゼ・リモート・エム・ジー・エム・テイ・エル・エル・シー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ラテゼ・リモート・エム・ジー・エム・テイ・エル・エル・シー filed Critical ラテゼ・リモート・エム・ジー・エム・テイ・エル・エル・シー
Publication of JP2009541854A publication Critical patent/JP2009541854A/ja
Application granted granted Critical
Publication of JP5027877B2 publication Critical patent/JP5027877B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0607Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Description

本出願は、「Disaggregated Resources and Access Methods」という名称で2005年8月16日に出願された共同所有の米国特許出願第11/205,895号の一部継続出願である。
本発明の分野は、ストレージデバイスのためのコマンドの生成に関する。
仮想化ストレージシステムは、クライアントが複数の物理ストレージデバイスに、それらが単一の論理ボリュームであるかのようにアクセスできるようにする。一部のストレージシステムは、クライアントが、専用の管理サーバを必要とせずに、直接、物理ストレージデバイスにアクセスする分散方式で機能する。Zetera CorporationのZ−SAN(商標)テクノロジーは、クライアントが物理ストレージデバイスと直接対話できるようにした、そのような1つの実施態様である。
仮想ストレージシステムは、クライアントが、データストレージに堅固なアクセスができるようにしなければならない。システムは、システムが動的に変更される場合に、複数のクライアントがシステムへのアクセスを共用できれば、堅固であると考えることができる。さらに、システムは、クライアントが相互に独立して機能できるようにし、また、物理ストレージデバイスも相互に独立して機能できるようにしなければならない。独立したクライアントは、他のクライアントからの情報を必要とせずにシステム内の変更に適応できるとき、最も効率がよい。例えば、仮想ストレージシステム内の論理ボリュームを共用する2つのクライアントは、その論理ボリュームの異なるビューを持つことができる。往々にして、一方のクライアントは、論理ボリュームに関連付けられた、ある物理ストレージデバイスを見ることができるのに、他方のクライアントは同じ物理デバイスを見ることができないことがある。しかし、それでも、その論理ボリュームは両方のクライアントに有用であることがありえる。論理ボリュームが、それぞれ異なる物理デバイス上に冗長なデータを有している場合、両方のクライアントが読み取りアクセスの目的で論理ボリュームにアクセスできても、書き込みアクセスは、データが非同期にならないように制限が必要な場合がある。
クライアントは、仮想ストレージシステムの要素を発見できる機能を有していなければならない。この場合の要素には、論理デバイス、物理ストレージデバイス、パーティション、プロキシ、サービス、または仮想ストレージシステムの他の構成要素がある。仮想ストレージシステムの要素の発見については、引用により本明細書に全体が組み込まれる、「Disaggregated Resources and Access Methods」という名称で2005年8月16日に出願された共同所有の米国特許出願第11/205,895号明細書で説明されている。この引用された出願は、仮想ストレージシステムを含めて、論理デバイスのマップを発見する態様を説明している。仮想ストレージシステムの変更に応じて、マップも変更できる。仮想ストレージシステムのマップの発見に関連して、仮想ストレージシステムは、動的環境、特に、クライアントまたはデバイスが通知なしに現れる、または消えることができる環境でストレージコマンドを生成するための方法も提供しなければならない。仮想ストレージシステムまたは論理ボリュームが変更されるとき、変更は仮想ストレージシステムのボリュームレベルのビューより下で行われるので、論理ボリュームに関連付けられた高水準のストレージコマンドは必ずしも変更されるわけではない。しかし、物理デバイスを対象にする低水準のストレージコマンドは、システムの更新を反映するために変更される可能性が高い。これらの問題および他の問題は、想定された動的環境で対処される必要がある。
ストレージコマンドを生成するための好ましい解決法は、以下の機能を提供しなければならない。
・ コマンドの生成は、共用ストレージエリアの一部分の可視性を一部のクライアントは解放するが他のクライアントは解放しない、シナリオを扱わなければならない。
・ クライアントは、データの一部をミラーリングする物理デバイスが失われている場合のように、データセットを保管した論理ボリュームの一部分が欠落していても、整合性のあるデータセットにアクセスできなければならない。
・ システムは、ストレージサービスを管理するための追加機器の導入を必要としないで、より多くのクライアントまたはストレージデバイスを有する、より大きい展開に規模を拡大しなければならない。
・ コマンドは、RAIDグループを含めて、論理ボリュームに関連付けられた異質なストレージグループタイプの混在をサポートするような形で生成されなければならない。
・ コマンド生成システムは、コマンド移送から独立し、標準プロトコルまたはプロプラエタリプロトコルを使用する環境を含めて、複数のストレージ環境で作動しなければならない。
動的環境での論理ボリュームの変更への対応を含めて、仮想化ストレージの様々な態様に対処している他の解決法もある。例えば、「Distributed network system with virtualization」という名称の米国特許第6,732,171号明細書および、やはり、「Distributed network system with virtualization」という名称の米国特許公開第2005/00144199号明細書は、ストレージサーバおよび管理サーバに保管されたストレージ構成識別子を使用したストレージ仮想化を教示している。その識別子は、アプリケーションクライアントとストレージシステム間で交換される、ストレージシステム内のストレージ構成または割り振りの変更がいつ行われたかを示すタイムスタンプである。そのため、アプリケーションクライアントは、識別子が変更されると、ストレージシステムの、そのクライアントのビューを更新することができる。しかし、これらの参考文献は、ストレージシステムが、ストレージシステム内のストレージエリアのタイプに関連付けられたコマンドハンドラを用いてコマンドを生成する方法は教示していない。
上記の参考文献に加えて、次の参考文献は、様々なストレージ媒体に関連付けられた仮想ストレージシステムのためにマップを作成する多様な取り組みを記載している。すなわち、係属中の米国特許公開第2005/0270856号明細書、第2005/0246401号明細書、第2003/0172157号明細書および第2003/0023811号明細書、ならびに発行済みの米国特許第6,775,673号明細書、第6,775,672号明細書、第6,772,161号明細書、第6,732,230号明細書、第5,758,050号明細書、および第5,129,088号明細書。これらの参考文献は、その文献が意図されている特定の問題に対処しているが、論理ボリュームを構成するストレージグループタイプに応じて構築される論理ボリュームのマップを使用するストレージコマンドの生成には対処していない。いくつかのケースでは、これらの参考文献はコマンドまたはコマンドセットを説明しているが、それでも、コマンドの生成方法は教示していない。
したがって、仮想化ストレージには、ストレージ環境が変更されるときにストレージコマンドを生成できる方法および装置の必要性が相当に残っている。
米国特許第6,732,171号明細書 米国特許公開第2005/00144199号明細書 米国特許公開第2005/0270856号明細書 米国特許公開第2005/0246401号明細書 米国特許公開第2003/0172157号明細書 米国特許公開第2003/0023811号明細書 米国特許第6,775,673号明細書 米国特許第6,775,672号明細書 米国特許第6,772,161号明細書 米国特許第6,732,230号明細書 米国特許第5,758,050号明細書 米国特許第5,129,088号明細書 米国特許第11/173765号明細書
本発明の主題は、ストレージシステムのためのコマンドを生成するシステムおよび方法に関する。
ストレージシステムは1つまたは複数の論理ボリュームを有しており、論理ボリュームは、第1のストレージデバイスに第1のストレージエリアを有し、第2のストレージデバイスに第2のストレージエリアを有している。一般的には、ストレージエリアはパーティションを有している。方法は、第1または第2のストレージエリアのストレージエリアタイプに関連付けられた情報から論理ボリュームのマップを提供するステップを含む。特に、好ましい実施形態としては、ストレージエリアの第1のタイプが、ストレージエリアの第2のタイプとは異なる実施形態がある。また、方法は、ストレージエリアのタイプに応じてコマンドハンドラを論理ボリュームのマップに組み込むステップも含む。コマンドハンドラは、論理ボリュームを対象にするストレージコマンドをストレージエリアの1つを対象にするストレージコマンドに変換する。他の実施形態は、論理ボリュームが変更されたことの標識が受信されると、論理ボリューム内の変更にマップを更新することにより対応する機能を備えている。コマンドが生成されるとき、一部の実施形態は、マップ内のボリュームアドレスによって参照されるデータアドレスを、ストレージエリアアドレスによって参照されるデータアドレスに変換する。
用語解説
以下は、本明細書内で使用される用語についての説明である。用語は、本発明の主題の様々な態様を暗黙の制限なしに論ずる際に、明瞭さを確保するために提供される。
用語「ストレージグループ」は、あるタイプのストレージ機能を提供する1つまたは複数のストレージエリアのグループを意味し、ストレージエリアは、パーティションまたは関連したパーティションのグループを有する。ストレージ機能としては、RAID機能、スパニング、パリティの提供、またはデータのアクセスに関連する機能がある。
用語「ストレージコマンド」は、データアクセス関連の、ストレージエリアを対象にするコマンドを意味する。一般的に、ストレージコマンドは、データアドレス、データ要求サイズ、またはそのストレージコマンドに関連付けられたデータを保管するバッファなどを含む、そのコマンドを定義するいくつかのパラメータを有する。他の可能なパラメータとしては、ストレージエリア識別子、実行されるコマンドの標識、またはストレージコマンドの処理時に有用な他の情報がある。好ましい実施形態では、データアドレスは論理ブロックアドレス(LBA)である。バッファは、書き込みを行うときにデータを保管するため、または読み取りを行うときにデータを受信するために使用され、少なくともデータ要求サイズを保管できるだけのスペースを有する。バッファは、通常、メモリエリアを指すポインタによって参照される。ストレージエリア識別子は、特定のストレージエリアをアドレスするために使用され、IPアドレスまたは論理ユニット番号(LUN)を含むことができる。
本明細書における教示は、ストレージプロダクトまたはストレージ関連のテクノロジーの開発者によって有利に使用できる。開示された、ストレージコマンドを生成する方法は、ストレージシステムの要素が動的に変更される可能性のある仮想環境で機能するストレージプロダクトを作成するために使用できる。
同様の番号は同様の構成要素を表す添付の図面を参照しながら以下の本発明の好ましい実施形態の詳細な説明を読めば、本発明の様々な目的、特徴、態様および利点が、より明らかになろう。
仮想ストレージシステムの実施形態の例を示した図である。 複数のパーティションを有する論理ボリュームの実施形態の例を示した図である。 論理ボリュームがストレージグループをどのように有することができるかを示した図である。 グループタイプの組織化の実施形態の例を示した図である。 ストレージグループデータ構造体の実施形態の例を示した図である。 リンクされたストレージグループのコマンドスタックによって表された論理ボリュームのマップの実施形態の例を示した図である。 ミラーコマンドハンドラによるボリュームレベルコマンドの変換の実施形態の例を示した図である。 ストレージコマンドがどのように1つまたは複数のストライプレベルストレージコマンドに変換されるかの実施形態の例を示した図である。 ストレージコマンドがどのように1つまたは複数のスパンレベルストレージコマンドに変換されるかの実施形態の例を示した図である。 ストレージコマンドがどのように1つまたは複数のパーティションレベルストレージコマンドに変換されるかの実施形態の例を示した図である。
以下の詳細な説明は、本発明の主題の複数の実施例を提示している。具体的な実施例は、主題を明瞭にするために示されているが、伝えられる提示された概念を限定するものではない。読者は、読者自身のできるだけ広い範囲で概念を解釈すべきである。
仮想ストレージシステム
図1は、仮想ストレージシステムの実施形態の例を示している。一部の実施形態では、仮想ストレージシステム120は、通信リンク115を介して1つまたは複数のストレージデバイス110Aから110Mにアクセスするクライアント100Aから100Nのうちの1つまたは複数を有する。好ましい仮想ストレージシステム120は、各クライアント100Aから100Nが、論理ボリュームに関連付けられた各ストレージデバイス110Aから110Mに直接アクセスできるようにする。
クライアント100Aから100Nは、ストレージデバイス110Aから110M上のデータストレージにアクセスする、またはそれを利用するホストを表す。クライアント100Aは、汎用コンピュータシステムまたは専用コンピューティングデバイスを備えることができる。汎用コンピュータシステムは、オペレーティングシステム、おそらくWindows(登録商標)またはLinuxを稼働させ、好ましくはファイルシステムを備えている。汎用コンピュータシステムは、ストレージスペースへのアクセスを必要とする可能性がある多くの異なるタイプのアプリケーションを実行することができる。専用コンピューティングデバイスとしては、限定されたアプリケーションセットを有する組み込み型システム、例えば、メディアプレイヤ、メディアレコーダ、ゲームコンソール、または他の同様のシステムがある。好ましい実施形態は、ストレージデバイス110Aから110Mのうちの1つまたは複数にまたがった論理ボリュームをマウントできるファイルシステムを備えた汎用コンピュータシステムを利用する。
ストレージデバイス110A、110Bから110Mは、1つまたは複数のストレージ媒体へのアクセスを提供する物理的構成要素を表す。ストレージ媒体は、磁気または非磁気であることが可能である。磁気ストレージの例としては、ディスクドライブまたはテープがあり、非磁気媒体の例としては、光システム、フラッシュ、RAM、または他のタイプのメモリがある。ストレージデバイス110Aから110Mは、異質なストレージデバイスの混在である必要はないが、多数の異なるタイプのストレージデバイスを備えることができる。好ましい実施形態では、ストレージデバイス110Aから110Mは、ディスクドライブ上でデータストレージを提供する専用ストレージデバイスである。専用ストレージデバイスとしては、ラックマウントシステム、デスクトップエンクロージャ、または他のタイプのエンクロージャがある。好ましいエンクロージャは、複数のディスクドライブのサポート、例えば、2台、4台、8台、16台、またはそれより多いディスクドライブをサポートするサポートを提供する。一部の実施形態では、ストレージデバイス110Aは、ディスクがクライアント100A内に組み込まれたディスクドライブそのものを表す。さらに、クライアント100Aは、それのストレージ媒体へのアクセスを例えばクライアント100Nに提供する場合、ストレージデバイスを表すことができる。
通信リンク115は、通信上、クライアント100Aから100Nをストレージデバイス110Aから110Mに結合する。好ましい実施形態では、通信リンク115は、イーサネット(登録商標)を介してデータグラムが交換されるインターネットワーキングプロトコル(IP)ネットワークを利用する。しかし、通信リンク115には他の実施形態も可能である。通信リンク115は、クライアント100A内の内部リンク、またはクライアント100Aに関係のある外部リンクであってもよい。内部リンクとは、ATA、SATA、SAS、SCSI、PCIまたは他のバスなど、ストレージデバイスとのインターフェースのことである。外部リンクは、有線または無線リンクを含むことができる。有線リンクの例としては、イーサネット(登録商標)、USB、Fibre Channel(ファイバチャネル)、Firewire(ファイヤワイヤ)、シリアルリンクまたは他の有線通信システムがある。無線リンクの例としては、Bluetooth、無線USB、802.11、IrDA、または他の非物理リンクがある。
仮想ストレージシステム120の好ましい実施形態は、Zetera(商標)CorporationのZ−SAN(商標)テクノロジーを利用する。Z−SANテクノロジーは、クライアント100Aから100Nのそれぞれが、ストレージコマンドを転送するために、UDPベースのストレージプロトコルで各ストレージデバイス110Aから110Mと通信するIPベースのストレージエリアネットワーク(SAN)環境に備えている。Z−SANテクノロジーは、ストレージデバイス内の各パーティションにIPアドレスを割り当てる。その結果、クライアントは、追加パーティション識別情報を必要としないで各パーティションと直接に通信できる。クライアントは各パーティションからの情報を集約し、その情報を使用して、それらのパーティションを含む論理ボリュームのマップを形成する。好ましい実施形態はストレージコマンドを移送するためにブロックレベルストレージプロトコルを使用するが、本発明の主題は移送プロトコルから独立して稼働する。したがって、本発明の主題は、標準に基づいたiSCSI、iFCP、FCIPなどの他のストレージプロトコル、またはATA、SATA、SAS、SCSIなどの低水準のプロトコルまたはインターフェース、または他のストレージデバイスプロトコルでも同じように十分に稼働する。さらに、開示された手法は、NFS、CIFSなどのファイルシステムレベルストレージプロトコル、または他のファイル指向プロトコルでも稼働することが想定されている。
仮想ストレージシステム120では、クライアント100Aから100Nは、多くの場合、論理ボリュームを、論理ボリュームがローカルに接続されたストレージエリアのように見えるようにマウントする。例えば、クライアント100AはCIFSプロトコルをサポートすることができて、ディスクをストレージデバイス110Bにマウントすることができる。論理ボリュームとは、ストレージデバイス110Aから110Mのうちの1つまたは複数に存在する1つまたは複数のストレージエリアの仮想の表現を表している。本明細書のコンテキストでは、用語「パーティション」は、ストレージデバイス内のストレージエリアを意味する。例えば、パーティションは、ハードディスクドライブの単一の一部分(portion)であってよいが、エクステントは、ディスクドライブの容量の一部分(fraction)である。あるいは、パーティションは、複数のディスクドライブを収容するシャーシ内の2つ以上のディスクにまたがったストレージエリアを表すこともできる。パーティションは、プロキシによって提示されるストレージエリアを表し、ストレージエリアは複数のリモートパーティションを含むことが想定されている。シャーシまたはプロキシは、集約ストレージエリアを単一のストレージエリアとして見せかける。
論理ボリューム
図2は、複数のパーティションを有する論理ボリュームの実施形態の例を示している。論理ボリューム230は、パーティション220Aから220Mを有し、パーティションは、ストレージデバイス210Aから210M間に広がっている。好ましくは、論理ボリューム230は、パーティション220Aから220M上に広がったゼロから最大値までのLBAのエクステントを表す。一部の実施形態では、LBAは48ビット値で表される。しかし、他のLBAサイズも想定されている。パーティション220Aは、ストレージデバイス210Aが、論理ボリューム230に加わっている単一のストレージエリアを有している例を示している。パーティション220Bおよび220Cは、ストレージデバイス210Bが、論理ボリューム230に属する2つ以上のストレージエリアをどのように備えることができるかを示す例を挙げている。さらに、パーティション220Mは、ストレージデバイス210M全体が論理ボリューム230のストレージエリアになれることを示している。
示された論理ボリューム230はパーティション220Aから220Mにわたって線形スパンを示しているが、論理ボリュームを構成するパーティションから他のさらに複雑な構造体が形成できる。好ましい実施形態では、論理ボリューム230は、ミラーリング、ストライピング、スパニング、パリティ、またはRAID機能を提供する構造体など、複数の異なるタイプのストレージ構造体を有する。各タイプのストレージ構造体は、パーティションのグループを有する。したがって、論理ボリューム230はストレージグループのグループであると考えることができ、ストレージグループは、論理ボリューム230を管理するための1組の共通のルールをシステムに提供するように組織化される。
ストレージグループ
図3は、論理ボリュームがストレージグループをどのように有することができるかを示している。論理ボリューム300は1つまたは複数のストレージグループを有しており、ストレージグループは最終的に1つまたは複数のパーティションを有する。好ましい実施形態では、ストレージグループは1つまたは複数のメンバを有し、各メンバはストレージグループでもある。例えば、グループ310Aは2つのメンバを有している。グループ310Aの第1のメンバはグループ310Cであり、グループ310Aの第2のメンバはパーティション320である。パーティション320は、実質的にはストレージデバイス上のパーティションの特性を体現する単一のメンバを有するストレージグループを表す。図示されているように、論理ボリュームグループ300は、グループ310A、310Bおよびパーティション320を含む3つのメンバがある。グループ310Bは、グループ310Dおよびパーティション320を有する。
好ましくは、パーティション320は、ストレージグループの最小の表現であるという意味で要素的グループを表す。ストレージグループはすべて、クライアントがストレージデバイス上のストレージ媒体にアクセスできるようにするために、最終的に少なくとも1つのパーティションを有していなければならない。一実施形態では、パーティション320は、クライアントのメモリに保管されているデータ構造体で表すことができ、この場合のデータ構造体は、ストレージデバイス上のパーティションに関連した情報を有する。例えば、データ構造体は、好ましくは、パーティションをアドレスするために使用されるパーティション識別子、パーティションが期待するデータ転送サイズ、パーティションに関連付けられた属性、またはパーティションのアクセス時に有用な他の情報を有する。好ましい実施形態では、パーティション識別子は、クライアントに関係のある、IPアドレス(IPv4またはIPv6)またはLUNなどの外部アドレスを含む。しかし、パーティション識別子は、パーティションがクライアント内でアクセスされる内部アドレスを含むことも想定されている。SCSI IDは、内部アドレスを表すこともできる。
ストレージグループ:グループタイプ
好ましくは、ストレージグループは、それらが論理ボリューム内で提供するストレージ機能に応じて分類される。タイプ別のストレージグループを組織化すると、仮想ストレージシステムの要素によって理解される共通のルールシステムをすべてのクライアントがデータに整合的にアクセスできるように確立するのに役立つ。各グループタイプはストレージコマンドを別のグループタイプとは独立して処理できるので、ルールは、論理ボリューム用のストレージコマンドを生成するときにクライアントに役立つ。好ましいストレージグループタイプとしては、RAIDグループタイプまたは非RAIDグループタイプがある。RAIDグループタイプには、ストレージグループに関連付けられたストレージデバイスに保管されたデータを保護するために何らかの形の冗長性が利用されるストレージグループがある。RAIDグループタイプの例としては、ミラーグループ、パリティグループ、Z−RAIDグループ、または他の冗長な構成がある。非RAIDグループタイプの例としては、スパングループ、ストライプグループ、またはパーティショングループがある。
ストレージデバイスの当業者は、「Redundant Array of Independent Disks」を表す用語RAIDの使い方は理解されよう。ストライピングは、多くの場合、RAIDレベル0と分類されるが、ストライピングは冗長な情報を運ばないので、本明細書では、非RAIDタイプと分類されている。RAIDは、多くの場合、ディスクレベルのストレージ構造体に関連していることにも留意すべきである。本明細書の目的上、RAID機能はパーティションレベルで適用される。ミラーグループは、ミラーグループの各メンバが他のグループメンバ上にデータの複製を有するメンバを含むストレージグループを表す。言い換えれば、ミラーグループの各メンバは、論理ボリュームのLBAのエクステントの複製を有する。ストライプグループは、個々のストライプ化要素であるメンバを含むストレージグループを表す。パリティグループは、パリティ情報を有するメンバを含むストレージグループを表す。パリティグループは、ストライプグループの変形として体現される。Z−RAIDグループは、引用により本明細書に全体が組み込まれる、「Topology Independent Storage Arrays and Methods」という名称の共同所有の米国特許出願第11/173,765号明細書で説明されているスタッガ式ミラー化要素を形成するメンバを含むストレージループを表す。パーティショングループは、前に説明されているように、単に、パーティションに関する情報を含む要素的グループである。アーカイブグループ、バックアップグループ、据え置きミラーグループ、QoSグループ、または追加ストレージ機能を提供できる他のストレージグループを含むすべてのストレージグループタイプが想定されている。
ストレージグループ:グループタイプ組織化
図4は、グループタイプの組織化の実施形態の例を示している。グループは、グループが提供する機能に応じて異なるタイプに分類できるが、すべてのクライアントが動作するときに従う、およびすべてのパーティションがストレージデバイス上にインスタンス化されるときに従う1組の共通のルールを確立することにより、ストレージコマンドの生成を容易にするようにストレージグループタイプを組織化することも好ましい。特に好ましい組織化は、ストレージグループタイプの階層を含む。図4に提示された実施例は、明瞭にするために示されており、ミラー、ストライプ、スパン、およびパーティションに焦点を合わせている。しかし、概念は、追加のストレージグループタイプを扱うようにも拡大できる。この実施例では、ミラーグループ400は、論理的に、階層の最高レベルに置かれている。ストレージシステム内の各論理ボリュームは、1つまたは複数のメンバを有するミラーグループを含むことができる。ミラーグループ400の各メンバは、ミラータイプ以外の別の下位タイプのグループでもよい。さらに、ミラーグループ400の各メンバは、各メンバは論理ボリュームのインスタンスを表すという意味で論理ボリュームの複製を表す。ストライプグループ410はそのデータをスパングループ420Bにミラーリングし、スパングループ420Bも、そのデータをパーティショングループ430Fにミラーリングする。これは、ミラーグループ400などのミラーグループは、タイプがストライプグループタイプ、スパングループタイプ、またはこの特定の実施形態のグループ組織化用のパーティションタイプであるかどうかに関わらず、下位タイプの他のグループを含むことができることを表している。
ミラーグループを含む論理ボリュームにストレージコマンドが出されると、そのストレージコマンドは、ミラーグループの各メンバに対して複製される。例えば、ボリュームレベルストレージコマンドが、ミラーグループ400によって表される論理ボリュームに出されると、そのボリュームレベルストレージコマンドは、そのグループの各メンバに対して複製される。すなわち、ストライプグループ410に対して1回、スパングループ420Bに対して1回、パーティション430Fに対して1回である。この意味で、ミラーグループは、単一のストレージコマンドを複数の複製ストレージコマンドに変換する。
例のストレージグループタイプ階層内で次に高いレベルは、ストライプグループ410で示されているストライプタイプである。ストライプグループは、スパングループ420Aおよびパーティション430Cによって示されているように、スパングループまたはパーティションである2つ以上のメンバを含む。ストライプグループ410の各メンバは、完全なストライプのストライプ化要素を表す。したがって、データが、ストライプグループ410に関連付けられたパーティションに保管されるとき、データは、ストライプ要素0を表すスパングループ420A全体にストライピングされ、次にストライプ要素1であるパーティション430Cにストライピングされる。
ストライプグループは、そのストライプグループの特性を定義する1組のパラメータを有する。パラメータには、次のメンバに進む前に各メンバに書き込まれるデータブロックの数を表すストライプブロックサイズがある。ストレージコマンドがストライプグループに出されると、そのコマンドは、グループの各メンバを対象にする1つまたは複数のストライプレベルコマンドに変換される。ストライプコマンドは、従来のストライプ化RAIDシステムで行われていたように、ストライプブロックサイズに関してモジュロ算術によってデータアクセスサイズを計算することにより、データアクセスがグループのストライプ構造体と揃うようにしている。しかし、データアクセスはディスクレベルではなくグループまたはパーティションレベルで実行される。ストライプ化グループの各メンバは、均一のストライピングを得るために同じ容量を備える。
階層の例内の3番目のレベルは、スパングループ420Aおよび420Bに示されているスパンタイプである。スパングループは2つ以上のメンバを結合して、そのスパングループ用のゼロから最大値までのLBAの範囲によって表される単一の線形論理ストレージエリアにする。例えば、スパングループ420Aは、パーティション430Aによって示された第1の部分およびパーティション430Bによって示された第2の部分を含み、それぞれ、スパングループ420Aのスパン要素0およびスパン要素1を表す。同様に、スパングループ420Bは、パーティション430Dおよびパーティション430Eを含み、単一の論理ストレージエリアを形成する。
スパングループは、パーティション間をつなぐために、ストレージコマンド内のデータはどこで分離されるべきかに関する情報を含む。スパングループがストレージコマンドを受信すると、ストレージコマンドのデータおよびデータサイズが検査されて、データのアクセスには、そのコマンドはスパングループの2つ以上のメンバに出される必要があるかが調べられる。必要な場合、そのコマンドは、データアクセスがメンバの境界に確実に揃うような形で1つまたは複数のスパンコマンドに変換される。
パーティショングループタイプは、階層の例の最下位レベルにある。パーティション430Aから430Fは、それぞれ、1つのメンバを有するグループであって、その1つのメンバ要素は、ストレージデバイス上の個々のパーティションを表す。パーティションのそれぞれは一律のサイズである必要はなく、むしろ、互いに関係のある任意のサイズであってよいことに留意されたい。
好ましい実施形態は、ミラー、ストライプ、スパンおよびパーティションを含む階層を設定しているが、他の階層も可能であることに留意されたい。例えば、ミラータイプは、ボリュームレベルでのミラーリングとは違って、各パーティションが個別にミラーリングされるようにパーティションの下に配置することもできる。あるいは、ストライプおよびスパンは、階層内でレベルを切り替えることもできる。
ストレージグループ:共通ルール
論理ボリューム内のストレージグループの組織化上の構成を形成すると、ストレージコマンドを処理するための1組のルールの土台になる。もう一度、図4の階層の例を参照すると、ボリュームレベルコマンドは、ミラーレベルにストレージグループがあれば、最初はミラーレベルで処理される。ミラーレベルの処理は、ストレージコマンドを生成すること、およびそのストレージコマンドを下位レベルに渡すことを含む。ストライプグループのメンバがある場合、データが必ずそのストライプグループに関連付けられたストライピングルールに従ってアクセスされるようにするために、ストレージコマンドはストライプレベルで処理される。例えば、データは、ストライプブロックサイズおよびストライプグループのメンバの数に基づいてモジュロ算術を用いてアクセスされる。ストライプレベルの処理も、ストレージコマンドを生成すること、およびそのストレージコマンドを下位レベルに渡すことを含む。スパングループがある場合、ストレージコマンドはスパンレベルで処理され、スパンレベルでは、データアクセスは、スパンメンバの境界に揃えられる。最後に、パーティションレベルコマンドは、データアクセスがパーティションの特性に揃うように処理される。例えば、パーティションに適切な転送サイズを有するコマンドが形成される。ストレージコマンドの処理については、本明細書で、より詳しく後述する。
ストレージグループ:グループデータ構造体
一部の実施形態では、ストレージグループは、グループ間にリンクを提供するグループデータ構造体によって表される。好ましくは、ストレージグループは、親子関係またはピア関係を形成するために互いにリンクされる。親グループは、各メンバが親の子と考えられる1つまたは複数のメンバを有するグループを表す。同じ親のそれぞれの子は、他の子達のピアである。好ましい実施形態では、親グループは、グループ階層内で子より高いレベルにある。しかし、ピアは、それぞれについて同じレベルまたは下位レベルであってよい。例えば、ミラーグループは3つの子を有することができる。それぞれの子は、論理ボリュームのインスタンスである。子達は、ストライプ化グループ、スパングループ、またはパーティショングループを任意に組み合わせて有することができるが、ミラーグループ内で子達のそれぞれは、ピアと考えられる。
好ましい実施形態では、グループデータ構造体は、他のグループおよび関数ポインタとのリンクを表す汎用データ構造体を有する。汎用構造体は、特定のグループタイプ、すなわち、ミラータイプ、ストライプタイプ、スパンタイプ、または他のストレージグループタイプに関する情報を有する追加データ構造体に組み込まれる。この手法は、組み込み型システム用のCでの実施に役立つ。しかし、コンピュータプログラミングの当業者は、グループデータ構造体を形成するには多くの代替手法があることが理解できよう。オブジェクト指向の手法を含めて、すべての代替手法が想定されている。
図5は、ストレージグループデータ構造体の実施形態の例を示している。ストレージグループは、そのストレージグループに関連付けられたストレージグループタイプを表す特性を定義するグループパラメータ群510を含むグループデータ構造体500によって表すことができる。グループパラメータ群510は、グループのタイプ、またはそのデータ構造体が表す特定のグループの特性に応じて異なる。さらに、データ構造体500は、いくつかのポインタも有している。グループポインタは、ストレージコマンドの処理を容易にするためにグループのリンクリストを形成する。好ましいグループポインタには、オプションの親グループポインタ520またはオプションの直前ピアグループポインタ530がある。親グループポインタ520は、現行グループを、そのストレージグループがメンバになっている親グループにリンクする。そのストレージグループが論理ボリューム内の最高レベルのグループである場合、親ポインタ520は値NULLを持つ。親グループは、好ましい実施形態では、グループ階層内の上位レベルのストレージグループを表す。例えば、ストレージグループがパーティションであり、ストライプグループのメンバである場合、親ポインタ520はストライプグループに戻ってリンクする。直前ピアポインタ530は、ストレージグループのピアであるグループに戻ってリンクする。例えば、現行グループがパーティションであり、ストライプ化グループの3番目のメンバである場合、直前ピアポインタ530は、ストライプ化グループの2番目のメンバに戻ってリンクする。親ポインタ520および直前ピアポインタ530は、好ましい実施形態ではオプションである。
特に好ましいポインタとしては、ピアグループポインタ540、子グループポインタ550、または関数ポインタ560がある。ピアポインタ540は、ストレージグループを同じ親グループ内の次のメンバにリンクする。子ポインタ550は、ストレージグループの最初のメンバを指す。ピアポインタ540および子ポインタ550を提供することにより、コマンドの処理時、グループのリンク化リストがトラバースできる。
データ構造体500内のグループポインタのそれぞれは、別のグループを指すのとは違って、値NULLも有することができる。値NULLは、リンクのチェーンの終わりが検出されたことを表す。例えば、ストレージグループに関連付けられたストレージコマンドの処理中、ストレージグループのそれぞれの子は、NULLが検出されるまで、ピアポインタ540リンクをトラバースすることにより調べられる。NULLは、ストレージグループのすべての子達の処理が終了したことを表す。
コンピュータプログラミングの当業者は、ストレージグループ間の関係を設定する可能な実施形態は多数あることが理解できよう。例えば、ピアリンクリストの代わりにピアレベルストレージグループのアレイが使用できる。ストレージグループの関係を形成するすべての実施形態が想定されている。
関数ポインタ560は、ストレージグループのタイプ用のストレージコマンドを処理する、ストレージグループタイプ固有のコマンドハンドラを指すポインタを表す。好ましい実施形態では、ストレージグループの各タイプは、少なくとも1つの関連付けられたコマンドハンドラを有する。コマンドハンドラ関数は、好ましくは、ストレージコマンドを処理するためにグループパラメータ510を使用し、それによって、そのグループ用のストレージコマンドを生成する。さらに、コマンドハンドラは、実行されるとき、ストレージグループの特定のタイプ用のルールに従ってストレージコマンドを変換し、子メンバのそれぞれに対してコマンドハンドラによって処理される1つまたは複数のストレージコマンドを生成する。
各グループは、区画から、単一の論理ボリュームを形成する複数のミラーまでの論理ストレージエリアを表す。好ましい実施形態は、各論理ストレージエリア内のデータに、そのストレージエリアに関連付けられたデータアドレッシング方式によってアクセスする。好ましい方式は、そのストレージエリア内でデータの各ブロックが固有にアドレスされるブロックレベルのアドレッシングを使用することである。好ましい実施形態は、512バイトのサイズを有する各データブロックをアドレスするためにLBAを使用する。ストレージグループタイプのコマンドハンドラは、コマンドのデータ、およびコマンドのデータに関連付けられたLBAに対する変換機能と考えることができる。また、好ましい実施形態では、ストレージグループによって表される各ストレージエリアは、範囲がゼロから最大値までのLBAのエクステントを有する。各ストレージグループのLBAのエクステントは、パラメータ群510にも保管される。各ストレージグループをLBAの個別のエクステントと定義することにより、各コマンドハンドラは、親グループから独立した形でストレージコマンドを処理することができる。この独立というレベルは、ストレージグループまたはコマンドハンドラを所望どおりに互いにリンクして論理ボリュームを形成する能力を与える。
コマンドハンドラによって提供される機能は、ストレージグループのタイプに関連付けられた機能を表す。しかし、これは、コマンドハンドラの動作をストレージグループタイプの機能のみに限定するのではない。コマンドハンドラは、ストレージコマンドの処理を助けるため、または他の機能を提供するために追加の命令を実行することができる。例えば、RAID5システム用のパリティグループコマンドハンドラは、そのグループメンバに読み取り・変更・書き込み動作を実行し、ストライプグループコマンドハンドラと同様に機能する命令を含む。そのような命令は、パリティグループのメンバに対してXORパリティを計算することを含む。さらに、追加命令は、OOB(out of band)管理、仮想ストレージシステムのモニタ、エラーチェック、リモート関数の呼び出しもしくは実行、または任意の他の機能を組み込むことができる。
ストレージグループ:コマンドスタック
リンクされたストレージグループが、ストレージグループタイプに関連付けられたコマンドハンドラに結合されることは、ストレージコマンドを生成するためのコマンドスタックを確立する備えとなる。コマンドスタックは、データ構造体が関数へのポインタを含むデータ構造体コンストラクトを表す。関数ポインタを用いて関数を呼び出すと、ポインタを変更することにより、実行中に関数の再割り当てが可能になり、オンザフライで構成できる動的呼び出しチェーンが提供できる。コマンドハンドラ手法を用いると、ホストは、他の論理ボリュームを処理するための追加オーバーヘッドを発生させずに論理ボリューム固有のコマンドスタックを作成することができる。言い換えれば、システム内の各論理ボリュームは、ボリュームのトポロジーを反映するコマンドスタックを有する。しかし、どんなトポロジーが使われても、各コマンドスタックは、同じ1組のコマンドハンドラにアクセスする。例えば、ストレージグループの各タイプ(ミラー、ストライプ、スパンまたはパーティション)用の4つのコマンドハンドラがある場合、ストレージグループは、ストレージグループのグループのコンテキストをストレージグループのデータ構造体パラメータに入れて運ぶので、システムはその4つのコマンドハンドラが必要なだけである。好ましい実施形態では、クライアントが論理ボリュームを発見すると、クライアントは、階層のルールに従って、ストレージグループのリンク化リストをまとめて作成する。ストレージグループがリンクされて、まとめられると、各ストレージグループ用のパラメータおよびコマンドハンドラを有するリンク化構造体は、論理ボリュームのマップになる。さらに、リンク化構造体は、論理ボリュームのコマンドスタックを表す。すると、クライアントは、同じコマンドハンドラを再使用しながら追加論理ボリュームを発見することができる。追加論理ボリュームは、追加論理ボリューム自身のストレージグループのリンク化構造体によって、追加論理ボリュームのマップ情報を運ぶからである。
論理ボリュームの変更が発見された場合、リンク化構造体は速やかに更新できることに注意されたい。例えば、追加スパンが追加された場合、追加ストレージグループが構造体の適切なスポットにリンクされ、それにより、論理ボリュームのアクセスをほとんど混乱させることなく論理ボリュームを更新する。
代替リンク
ストレージグループ構造体内では、他のリンクも想定されている。一実施形態では、特にミラーグループメンバがストライプグループを含む場合、ミラーグループメンバを相互リンクするために代替リンクが提供される。そのような代替リンクでは、ストレージ構造体と同様に、RAID 10を確立することができる。一部の実施形態では、要求されたデータへのアクセスが可能な代替ストレージグループを検出するためにストライプ化グループメンバに必ずアクセスできるとは限らない場合、代替リンクをトラバースするためにRAID 10コマンドハンドラも提供されている。代替リンクは、パーティションレベルのミラーリングを行うためにパーティションレベルでも機能できる。
論理ボリュームのマップ:コマンドスタック
好ましい実施形態では、論理ボリュームのコマンドスタックは入力として高水準のストレージコマンドを受け入れる。コマンドスタックはストレージコマンドを処理して、そのストレージコマンドを最高レベルのコマンドハンドラに渡す。各コマンドハンドラは、ストレージコマンドを階層内の各レベルに合った1つまたは複数のストレージコマンドに変換する。次に、これらのストレージコマンドのそれぞれが、パーティションレベルの最下部に到達するまで、次のレベルのコマンドハンドラに渡される。パーティションレベルコマンドハンドラはパーティションレベルストレージコマンドを生成し、それらを、後でパッケージングするため、またはパーティションに送信するためにキューに入れる。
図6は、リンクされたストレージグループのコマンドスタックによって表された論理ボリュームのマップの実施形態の例を示している。この具体的な例は、明瞭にするために、リンクされたストレージグループおよびコマンドハンドラの概念がどのように組み合わされてコマンドスタックによって表されるような論理ボリュームのマップを形成するかを示すように構成されている。この例は、包括的なものではない。しかし、概念は、より大きい、複雑で異質な論理ボリュームに普遍的に適用できる。論理ボリュームはストレージグループにマッピングされ、ストレージグループはパーティションにマッピングされる。ストレージコマンド生成プロセスの各ステップにおいて、ストレージコマンドは、データをチャンク(chunk)に分割しながら高水準データアドレスを低水準データアドレスに変換することにより変換されると考えることができる。例えば、論理ボリュームのLBAはストレージグループのLBAに変換され、ストレージグループのLBAは最終的にパーティションのLBAに変換される。好ましい実施形態では、次に、ストレージデバイスがパーティションのLBAをそのストレージデバイスのストレージ媒体内のデータアドレスに変換する。
論理ボリュームのマップ:ミラーレベル
この実施例では、論理ボリュームはミラーグループ600によって表されている。この実施例では、論理ボリュームに関連付けられた2つのミラーがある。最初のミラーはストライプグループ620によって表され、2番目のミラーはパーティショングループ680によって表されている。様々なストレージグループのパラメータ、ストレージグループのグループのリンク、およびストレージグループのコマンドハンドラを指すストレージグループのポインタを保管するためにグループデータ構造体が使用される。ミラーグループ600は、ミラーコマンドハンドラ、ピアポインタ605および子ポインタ607を指す関数ポインタ603を含む。ピアポインタ605は、このミラーグループに関連付けられたピアはないことを示す値NULLを有する。子ポインタ607はストライプグループ620を指し、ストライプグループ620は、ミラーグループ600のメンバを表すリンクのチェーンを開始する。
システムが論理ボリュームのデータにアクセスする場合、システムは、ボリュームレベルコマンドを出し、関数ポインタ603によってミラーコマンドハンドラを呼び出す。コマンドが読み取りコマンドの場合、そのボリュームコマンドは、データで満杯のバッファではなく、受信バッファへのポインタを有することができる。好ましい実施形態では、ミラーコマンドハンドラは、そのコマンドを処理するためにミラーグループ600のパラメータを使用する。ミラーコマンドハンドラは、ボリュームコマンドへのポインタをミラーグループの子達のそれぞれのコマンドハンドラに渡すことにより、ボリュームレベルコマンドを複写する。例えば、ミラーコマンドハンドラは、まず、ストライプグループ620の関数ポインタ623によってストライプコマンドハンドラを呼び出し、ボリュームレベルコマンドをストライプコマンドハンドラに渡す。ストライプコマンドハンドラが戻ると、ミラーコマンドハンドラは、パーティショングループ680の関数ポインタ683によってパーティションコマンドハンドラを呼び出し、この場合も、ボリュームレベルコマンドをパーティションコマンドハンドラに渡す。パーティションハンドラは、そのボリュームレベルコマンドを処理し、それを1つまたは複数のパーティションレベルコマンドに変換する。このとき、各パーティションレベルコマンドは、パーティションDとの通信に適した形式になっている。パーティショングループ680は、NULL値を有するピアポインタ685によって示されているようにピアチェーン内の最後であり、子ポインタ687のNULL値によって示されているように子はない。パーティションコマンドハンドラは、ボリュームレベルコマンドをパーティションレベルコマンドのリンク化リストに変換し、そのパーティションレベルコマンドはパッケージングできる、またはターゲットパーティションに送信できる。
好ましいボリュームレベルコマンドは、ファイルシステムから出される。ファイルシステムは、マルチイニシエータファイルシステムまたは非マルチイニシエータファイルシステムを含むことが想定されている。マルチイニシエータファイルシステムは、データが破壊されることなく、複数のクライアントがストレージデバイス上の同じデータに共用アクセスできるようにする。好ましいマルチイニシエータファイルシステムの例としては、DataPlow(商標)San File System (SFS)がある。非マルチイニシエータファイルシステムは、単一クライアントのためのアクセスを提供し、例えば、NTFSがある。
論理ボリュームのマップ:ストライプレベル
この実施例では、ストライプグループ620はミラーグループ600の子であり、したがって、論理ボリュームの1つのインスタンスである。ピアポインタ625は次のミラーを指し、次のミラーは、この実施例では、パーティショングループ680である。この実施形態では、ストライプグループ620は2つのストライプ化要素、すなわち、スパングループ640およびパーティショングループ670を有している。ストライプグループ620は、グループデータ構造体を用いてメモリにも保管される。
ストライプコマンドハンドラは、ストライプコマンドハンドラが関数ポインタ623によって呼び出された場合、ボリュームレベルコマンドを受信する。ストライプコマンドハンドラは、ボリュームレベルコマンドをストライプグループの子達のそれぞれ用に、ストライプのストライプブロックサイズを用いてボリュームレベルコマンドのLBAを子達のLBAエクステントにマッピングすることにより、1つまたは複数のコマンドに変換する。この実施例では、ストライプコマンドハンドラは、ストライプグループのパラメータ情報を用いてボリュームレベルコマンドのLBAをストライプグループの子グループのそれぞれへのオフセットに変換する。各グループは、好ましい実施形態では、各グループをその親グループから独立させておくために、ゼロから最大値までのLBAのエクステントを有することを思い出されたい。ストライプグループの場合、ストライプコマンドハンドラは、ストライプグループのブロックサイズおよびストライプグループ内のメンバの数に基づいたモジュロ算術を用いることにより、それぞれの子へのオフセットを計算する。オフセットが計算されて、それぞれの子にとって必要な場合にデータがチャンクに分割されると、ストライプコマンドハンドラは、コマンドハンドラ群の中をストライプグループの子達のそれぞれを探してウォーキングを開始する。ストライプコマンドハンドラは、第1の子に第1のストライプレベルストレージコマンドを渡し、第2の子に第2のストライプレベルストレージコマンドを渡すなどする。さらに、ストライプコマンドハンドラは、必要な場合、第1の子にループバックする。この実施例の場合、ストライプコマンドハンドラは、関数ポインタ643によってスパンコマンドハンドラを呼び出し、次に、グループ670に関連付けられた関数ポインタ673によってパーティションコマンドハンドラを呼び出し、必要ならば、グループ640に戻ることもある。関数ポインタ673は、関数ポインタ683と同じパーティションコマンドハンドラを指す。パーティションコマンドハンドラは、パーティションの好ましいデータ転送サイズを含むパーティショングループ670のパラメータ情報を用いてストライプレベルコマンドを、ターゲットパーティションに合った適切な転送サイズを有する1つまたは複数のパーティションレベルコマンドに変換する。パーティションレベルコマンドは、送信の準備ができているパーティションレベルコマンドのキューにリンクされる。パーティションレベルコマンドは、実質的には、ストレージデバイス上のターゲットパーティションに提出される準備ができている。通信リンクを介して送信されるパケットまたはデータグラムには、おそらく輻輳回避のために、さらに処理が必要なことがある。
パーティショングループ670はスパングループ640の最後のメンバであることに留意されたい。ピアポインタ675は、ストライプコマンドハンドラに、処理のためのこれ以上の子はいないことを示す値NULLを有している。さらに、パーティショングループ670はパーティションC、すなわち、要素的メンバを表すので、パーティショングループ670には子がない。その結果、子ポインタ677は値NULLを有する。したがって、パーティションコマンドハンドラは、それ以上のコマンドハンドラ呼び出しを行わず、ストライプコマンドハンドラによる各呼び出し後にストライプコマンドハンドラに戻る。
論理ボリュームのマップ:スパンレベル
スパングループ640はストライプグループ620の子であり、ストライプ化グループの単一のストライプ化要素である。スパングループ640は、パーティショングループ650およびパーティショングループ660によって表される2つのパーティションを有する。ミラーグループ600およびストライプグループ620の場合とちょうど同じように、スパングループ640は、スパングループ用のパラメータを有するグループデータ構造体としてメモリに保管される。この実施例では、パラメータは、各パーティショングループのエクステント、およびデータアクセスがどこでパーティション間をつなぐべきかの場所を含む。
現在の実施例では、スパンコマンドハンドラがストライプコマンドハンドラから呼び出されたとき、スパンコマンドハンドラはストライプレベルコマンドを受信する。スパンコマンドハンドラはストライプレベルコマンドを、スパングループ640のそれぞれの子を対象にした1つまたは複数のスパンレベルコマンドに変換する。変換は、高水準のLBAを子達のLBAエクステントにマッピングすることにより行われる。パーティショングループ650は最初の子であり、ピアポインタ655によってパーティショングループ660にリンクする。パーティショングループ660は、ピアポインタ665のNULL値によって示されているように、スパングループメンバのうちの最後のメンバである。スパンコマンドハンドラは、高水準コマンドのLBAおよびデータ要求のサイズを子達のLBAエクステントと比較して、必要な場合、データはどこで分割されるべきかを判定する。次に、スパンコマンドハンドラは、関数ポインタ653および663によって子達のパーティションハンドラの呼び出しを開始する。関数ポインタ653および663は、関数ポインタ673および683とも同じパーティションコマンドハンドラを指す。パーティションコマンドハンドラは、前に説明されているように、スパンレベルコマンドをパーティションAおよびB用のパーティションレベルコマンドに変換する。パーティショングループ650および660は、それらの子ポインタ657および667がそれぞれNULL値を有しているので、コマンドスタック内の最後のメンバである。パーティションハンドラはパーティションレベルコマンドを、ストレージデバイスに送信されるパーティションレベルコマンド用のキューにリンクし、処理を完了すると、スパンハンドラに戻る。
図6に示された実施例は、コマンドスタックが、最初にパーティションレベルまで降下することにより、ストレージコマンドを処理する実施形態を示している。この降下手法は、パーティションレベルコマンドのキューを形成できるようにし、最小の処理オーバーヘッドを提供する。
図6に示された実施例の場合、パーティションA、B、CおよびDは、論理ボリューム内で異なる機能的保管の役割を果たすので、同一の構造を有している必要はない。しかし、この特定の実施例の場合、パーティションA、B、CおよびDは、互いに関連付けられた容量を有しているべきである。例えば、パーティションDは、パーティションA、BおよびCの結合された容量と同じストレージ容量を有すべきであるが、それは、パーティションDが論理ボリュームの1つの完全なインスタンスであり、A、BおよびCは、論理ボリュームの別の完全なインスタンスを形成するからである。さらに、パーティションCは、パーティションAおよびBの結合された容量と同じ容量を有すべきであり、それは、パーティションCが1つのストライプ化要素を表し、結合されたパーティションAおよびBは、ストライプ化グループのさらに別のストライプ化要素を表すからである。パーティションAおよびBは、それらの結合された容量がパーティションCと同等である限り、異なる容量であってよい。この実施例は、論理ボリュームが異質なパーティションまたはストレージグループタイプの混在をどのように有することができるかを示している。
好ましい実施形態は、ストレージグループ間の関係を形成するためにリンク化リストを使用するが、コンピュータプログラミングの当業者は、他の実施形態も可能であることが理解できよう。例えば、メンバ間のピア関係は、階層内の同じレベルのメンバをアレイ内に置くことに代えることができる。その結果、コマンドハンドラは、ピアリンクチェーン内をウォーキングするのではなく、アレイのインデックスを繰り返し見ることができる。コマンドスタックのすべての実施形態が想定されている。
コマンドハンドラ
コマンドハンドラは、ストレージコマンドを形成し、そのストレージコマンドを下位レベルのコマンドハンドラに渡すことにより、ストレージコマンドを処理する。ストレージコマンドは、好ましくは、ボリュームレベルのLBA、ストレージグループへのオフセットを表すグループLBA、データ要求サイズ、またはメモリにデータを保管するためのバッファを指すポインタなど、いくつかのメンバを有するデータ構造体に保管される。好ましい実施形態では、ボリュームレベルのLBAは、ストライプグループまたはスパングループの子達を対象にしたストレージコマンドを生成するためにストレージコマンドの処理方法を適切に計算するためにストライプコマンドハンドラまたはスパンコマンドハンドラによって使用される。グループのLBAは、グループのゼロからのオフセットを表す値である。さらに、ストレージグループは、ストレージコマンドに関連付けられたパーティションレベルコマンドキューへのリンクを有する。
ストレージグループのタイプに関連付けられたコマンドハンドラは、ストレージグループの機能を表すルールに従ってストレージコマンドを変換する。好ましいコマンドハンドラは、それらが処理するコマンドのコンテキストを運ばないで、むしろ、ストレージグループおよびコマンドハンドラに渡されるコマンドからコンテキスト情報を入手するという意味で汎用である。以下の説明は、好ましいコマンドハンドラはストレージコマンドをどのように処理するかについての追加の詳細である。コマンドハンドラは、読み取りまたは書き込みなどの様々なタイプのストレージコマンドを、ストレージコマンドに関連付けられたデータバッファをパーティション化することにより処理する。好ましい実施形態では、低水準のストレージコマンドがストレージグループまたは、最終的には、パーティションに送信できるように、コマンドハンドラはデータアクセスを高水準から低水準へ分割する責務を有する。
コマンドハンドラ:ミラーコマンドハンドラ
図7Aは、ミラーコマンドハンドラによるボリュームレベルコマンドの変換の実施形態の例を示している。ミラーコマンドハンドラ725はストレージコマンド700を処理する。ミラーは論理的にストレージグループタイプの階層の最高位に置かれているので、この好ましい実施形態ではストレージコマンド700はミラーハンドラ725用のボリュームレベルストレージコマンドを表す。言い換えれば、ミラーハンドラ725は、この好ましい実施形態では、ボリュームレベルストレージコマンドのみを受信する。各コマンドハンドラは、ストレージコマンド700によって表されるようなストレージコマンドを処理することができる。しかし、コマンド構造体内の要素の値は、以前のコマンドハンドラがある場合、それらがストレージコマンドをどのように処理したかに応じて異なってよい。
ストレージコマンド700は、バッファポインタ703、ボリュームLBA 705、グループLBA 707、要求データサイズ709、グループポインタ711、およびコマンドポインタ713を含んでいる。バッファポインタ703は、ストレージコマンド700に関連付けられたデータを保管するために使用されるバッファ720の先頭を指す。ストレージコマンド700がデータ書き込みを表す場合、バッファ720は、書き込まれるデータを保管する。しかし、ストレージコマンド700がデータ読み取りを表す場合、バッファ720は、ストレージデバイスから読み取られたデータを保管するためのストレージエリアである。好ましくは、バッファ720はデータのブロック単位で組織化される。ボリュームLBA 705は、ストレージコマンド700に関連付けられたボリュームレベルデータアドレスを表し、例えば、いくつかのコマンドハンドラ、ストライプおよびスパンコマンドハンドラによって使用される。グループLBA 707は、現行ストレージグループへのオフセットを表す。各ストレージグループは、ゼロから最大値までの範囲の固有のLBA範囲を有することを思い出されたい。データサイズ709は、バッファ720内のブロックの数を表す。グループポインタ711は、どのグループがストレージコマンドの処理対象の現行ストレージグループであるかを引用しているだけである。コマンドポインタ713はパーティションレベルコマンドキューのアンカーを表し、そのため、コマンドスタックがストレージコマンドの処理を完了したら、システムはパーティションレベルコマンドの送信を開始することができる。
ストレージコマンド700は、ストレージエリアを対象にする任意のタイプのコマンドを表す。コマンド700は、読み取りコマンド、書き込みコマンド、状況チェックコマンド、または論理ボリューム、もしくは論理ボリュームの部分を対象にすることができる他のコマンドであってよい。好ましい実施形態では、ボリュームレベルストレージコマンドはファイルシステム、特にマルチイニシエータファイルシステムから発信される。
ミラーコマンドハンドラ725は、ボリュームレベルストレージコマンドを、ミラーグループの子達のそれぞれに関連付けられたコマンドハンドラに渡す責務を有する。その結果、ミラーコマンドハンドラは、ストレージコマンド700Aから700Nによって示されているような1つまたは複数のストレージコマンドを形成するが、これらのコマンドは、実質的には、ストレージコマンド700の複製である。ストレージコマンド700Aは最初のミラーメンバのコマンドハンドラに対して形成されて渡される。そのコマンドハンドラが戻ったら、次のストレージコマンドが次のミラーメンバのコマンドハンドラに対して形成されて渡され、ストレージコマンド700Nが処理され終わるまで同様に続けられる。ストレージコマンド700Aから700Nは、それぞれが、ミラーリングされたボリュームの所有物である論理ボリュームのインスタンスを対象にするので、実質的には同じである。例えば、バッファポインタ703Aから703Nは、データバッファ720の最初のブロックを指す。また、ボリュームLBA 705Aから705Nは、ボリュームLBA 705と同じ値、すなわち、この実施例では値VLBAを有する。さらに、ミラーグループの各メンバは、ボリュームレベルLBAの範囲と同じサイズまたはエクステントであるグループLBA範囲を有するので、グループLBA 707Aから707NはボリュームLBA 705と同じ値、すなわち、この実施例では値VLBAを有する。さらに、データサイズ709Aから709Nは、ストレージコマンド700のデータサイズ709と同じ値を有する。グループポインタ711Aは、最初のメンバに関連付けられたグループを指し、グループポインタ711Nは、N番目のメンバに関連付けられたグループを指す。また、コマンドポインタ713もストレージコマンドと共に伝搬されて、パーティションレベルに到達した時に、パーティションコマンドハンドラが、パーティションレベルコマンドの中でコマンドポインタ713にリンクすることにより、パーティションレベルコマンドキューを生成するようになっている。
ミラーコマンドハンドラ725はボリュームレベルストレージコマンドを生成して、その子達のそれぞれ用にコマンドハンドラを呼び出す。子のコマンドハンドラが呼び出されると、ミラーコマンドハンドラ725は、新しく生成されたストレージコマンドをその子用のコマンドハンドラに渡す。子コマンドハンドラが戻ると、子に送られたストレージコマンドは、もはや不要になり、次のストレージコマンドが形成および処理できる。パーティションコマンドハンドラは、コマンドスタック処理の結果を保管するパーティションコマンドキューを生成するので、ストレージコマンドは、もはや不要になる。
コマンドハンドラ:ストライプコマンドハンドラ
図7Bは、ストレージコマンドがどのように1つまたは複数のストライプレベルストレージコマンドに変換されるかの実施形態の例を示している。ストライプコマンドハンドラ745は、ストレージコマンド730Aから730Nによって示されているような1つまたは複数のストライプレベルストレージコマンドを作成することにより、ストレージコマンド700を処理する。好ましい実施形態では、ストレージコマンド700は、ミラーコマンドハンドラから発信されることもあるし、ミラーがない場合、ファイルシステムから直接に送られることもある。
ストレージコマンドハンドラ745は、ストライプグループメンバのコマンドハンドラによって処理されるストレージコマンド730A、730Bから730Nを形成するために、ストライプブロックサイズおよびストライプ化メンバの数などのストライプグループ固有の情報を使用する。ストライプレベルコマンド730A、730Bから730Nのそれぞれは、ストライプの配置のために、論理ボリューム内の異なるストレージエリア部分を対象にする異なるストレージコマンドを表す。その結果、データサイズ709が十分なデータがあることを示していると仮定すると、ストレージコマンド730Aから730Nは、ストライプグループメンバ全体のデータアクセスを表す。RAIDシステム、特にストライプ化の当業者は、本明細書に提示された単純な実施例以外に他の可能なデータアクセス処置があることが理解できよう。そのような処置のすべてが想定されている。
ストレージコマンド730Aは、グループポインタ741Aによって参照されたストライプグループメンバに関連付けられた第1のストライプレベルストレージコマンドを表す。バッファポインタ733Aは、ストライプコマンド730Aが、処理される最初のストライプレベルコマンドなので、バッファ720の先頭を指す。さらに、ボリュームLBA 735Aは、やはり、ストライプストレージコマンド730Aがデータアクセスの最初の部分なので、ボリュームLBA 705と同じ値を有する。グループLBA 737Aは、ボリュームLBA 735Aに応じて計算される値、ストライプメンバの数、およびディスクとは違ってデータがストレージグループ全体にわたってストライピングされることを除いて従来のストライピングで行われていたと同じストライプブロックサイズを有する。結果の値は、ストライプグループメンバのLBAエクステントへのオフセットを表す。データサイズ739Aは、データサイズ709がストライプブロックサイズより大きいか、等しいと仮定して、ゼロからストライプブロックサイズまでの範囲である。コマンドポインタ713は、やはり、パーティションレベルコマンドハンドラによって使用されるようにするために、コマンドスタックを介して下位に渡される。
ストレージコマンド730Aが処理され、そのコマンドハンドラが戻ると、ストライプコマンドハンドラ745がストレージコマンド730Bを形成し、次のストライプグループメンバのコマンドハンドラを呼び出す。バッファポインタ733Bは、バッファ720内のデータの、ストライプブロックサイズの次のチャンクを指す。ボリュームLBA 735Bは、次のストライプブロックのデータに関連付けられたボリュームレベルLBAを参照し、ボリュームLBA 705プラスブロックサイズの値を有する。グループLBA 737Bも、グループLBA 737Aの場合と同じように計算される。この実施例では、グループ737Bおよびグループ737Aの両方のコマンドがストライプ内の同じ深さでデータにアクセスしていると仮定すると、グループ737Bはグループ737Aと同じ値を有する。この実施例でのデータサイズ739Bも、ストライプブロックサイズのサイズを有する。グループポインタ741Bは、そのストライプグループメンバに関連付けられたターゲットグループを指し、最終的に、ストレージコマンド730Bはコマンドポインタ713を運ぶ。
ストライプコマンドハンドラ745は、最後のストライプレベルストレージコマンド730Nに到達するまで、このやり方で、次のストライプレベルコマンドの形成および次のメンバのコマンドハンドラの呼び出しを続ける。バッファポインタ733Nは、最後のチャンクのサイズを表す値を有するデータサイズ739Nによって示される、ストライプブロックサイズに等しいか、より小さいサイズを有するバッファ720の最後の部分を指す。また、ストライプコマンドハンドラ745はボリュームLBA 735Nを、ストライプメンバ全体にわたっていくつのブロックが書かれているかに応じて計算する。ストライプコマンドハンドラ745は1つの全ストライプのコマンドを完了して別の周回を開始し、結果として、ストライプグループメンバのLBAエクステントの中のより深いデータにアクセスすることが可能なので、グループLBA 737Nは、グループLBA 737Aとは異なる値を有してよい。同様に、グループポインタ741Nは、前に使用されたグループを指すこともできる。複数のストレージデバイスにまたがったデータのストライピングに精通した人達は、この単純な実施例で説明されたものを超えた、適切なデータストライピングに必要な様々な計算および様々なシナリオを理解できるであろう。それらはすべて、本発明の主題に適用される。
ストライプコマンドハンドラ745は、RAID 4、RAID 5、RAID 6、または他のパリティ構成をサポートするためのパリティRAIDハンドラを提供するためにパリティ計算を行うように変更できることが想定されている。好ましくは、パリティコマンドハンドラは、パリティ情報を求める読み取り要求を出し、次に、いずれかの書き込み要求に基づいてパリティ値を変更し、次に、パリティグループのメンバに書き込みコマンドを出す。一部の実施形態では、パリティのための追加処理は、別のデバイスに置かれたプロキシを用いて扱うことができる。
コマンドハンドラ:スパンコマンドハンドラ
図7Cは、ストレージコマンドがどのように1つまたは複数のスパンレベルストレージコマンドに変換されるかの実施形態の例を示している。スパンコマンドハンドラ765は、ストレージコマンド750Aおよび750Bによって示されているように、ストレージコマンド700を1つまたは複数のスパンレベルストレージコマンドに変換することにより、ストレージコマンド700を処理する。好ましい実施形態では、スパンコマンドハンドラ765は、ストレージグループタイプ組織化においてファイルシステム、ミラーコマンドハンドラ、またはストライプコマンドハンドラのそれぞれより下位なので、スパンコマンドハンドラ765はストレージコマンド700をファイルシステムから直接、ミラーコマンドハンドラから、またはストライプコマンドハンドラから受信することができる。
スパンコマンドハンドラ765は、スパン境界はスパングループのLBAエクステント内のどこであるかを計算するために、その子達のそれぞれのLBAエクステントに関する情報を利用する。次に、この情報は、ストレージコマンド700がパーティション間をつなぐときに、ストレージコマンド750Aおよび750Bを形成するために使用される。ストレージコマンド750Aは、第1のパーティションからデータをアクセスする第1のスパンレベルストレージコマンドを表し、ストレージコマンド750Bは、第1のパーティションの後の第2のパーティションからデータをアクセスする第2のスパンレベルストレージコマンドを表す。
ストレージコマンド750Aは、第1のパーティションアクセスに関する情報を有する。バッファポインタ753Aは、先頭バッファ720を指す。ボリュームLBA 755Aは、それがデータアクセスの最初の部分を表すので、ボリュームLBA 705と同じである。グループLBA 757Aは、スパンハンドラ765によって計算される値を有しており、スパンメンバのグループへのオフセットを表す。この値は、ボリュームLBA 705から、およびスパングループメンバのLBAエクステントのそれぞれのエクステントから計算される。同様に、データサイズ759Aも、特にスパン境界がボリュームLBA 755Aと関係がある場合、同じ情報から計算される。当然ながら、この実施例は、スパン境界の値はボリュームレベルLBAエクステントと同じマップスペース内にあると仮定している。グループポインタ761Aは、ストレージコマンド750Aが対象にしているパーティショングループを指すが、それでもやはり、パーティションレベルコマンドハンドラにコマンドポインタ713が渡される。
ストレージコマンド750Aが処理されると、パーティションコマンドハンドラは戻り、次いでスパンコマンドハンドラ765がストレージコマンド750Bを処理する。ストレージコマンド750Bは、次のパーティションを対象にするストレージコマンド700の2番目の部分を表している。バッファポインタ753Bは、パーティション境界755によって示されているように、データがパーティション間をつなぐバッファ720内の場所を指す。ボリュームLBA 755Bは、前のパーティションのスパン境界はどこで「プラス1」であったかの値を有する。さらに、グループLBA 757Bは、アクセスはパーティションの先頭で行われることを示す値ゼロを有する。データサイズ759Bも、スパン境界の使い方を含むパーティションエクステント情報から計算される。グループポインタ761Bは、ストレージコマンド750Bの宛先であるパーティションを指す。
前の好ましいコマンドハンドラの場合と同じように、スパンコマンドハンドラ765はストレージコマンド750Aを生成し、グループポインタ761Aに関連付けられたコマンドハンドラを呼び出す。ストレージコマンド750Aは、処理されると、もはや不要になる。スパンコマンドハンドラ765は、次いで、ストレージコマンド750Bの生成に進み、次にそのコマンドを処理する。
コマンドハンドラ:パーティションコマンドハンドラ
図7Dは、ストレージコマンドがどのように1つまたは複数のパーティションレベルコマンドに変換されるかの実施形態の例を示している。パーティションレベルコマンドを生成することは、好ましい実施形態では、ストレージグループ階層の最下部を表し、データにアクセスするためのパーティションレベルコマンドを、ストレージデバイスを対象にして生成するための実際の構造を提供する。パーティションコマンドハンドラ785はストレージコマンド700を、パーティションレベルストレージコマンド770A、770Bから770Nによって表される1つまたは複数のパーティションレベルコマンドに変換する。好ましい実施形態では、パーティションコマンドハンドラ785は、コマンドポインタ713によって参照されるコマンドのリストにパーティションコマンド770Aから770Nを追加することにより、パーティションコマンドキュー790を形成する。このリストは、論理ボリュームのコマンドスタックによってボリュームレベルストレージコマンドが完全に処理されるにつれて大きくなり続ける。好ましくは、ストレージコマンド700は、ストレージグループの提示の好ましい階層があるとすると、ボリュームレベルストレージコマンド、ストライプレベルストレージコマンド、またはスパンレベルストレージコマンドを表す。
パーティションコマンドハンドラ785は、パーティションの特性に関する情報を使用して、ストレージコマンド770Aから770Nの生成方法を決定する。好ましい実施形態では、パーティションコマンドは明確にストレージエリアを対象とし、パッケージされるか、またはストレージデバイスに送信されるので、パーティションコマンドは、汎用のストレージコマンドとは少し異なる。
パーティション関連のパラメータとしては、データ転送サイズ、パーティションのブロック単位でのサイズ、またはパーティション識別子がある。好ましい転送サイズは、広く普及しているストレージデバイスのブロックサイズと一致するように、512バイト単位のブロックである。特に好ましい転送サイズとしては、単一のデータグラムでの転送に合うように、1、2、4、8、16、32または64データブロックがある。しかし、他のブロックサイズも想定されている。パーティションサイズ情報は、パーティションへの高水準ストレージコマンドデータアクセスを適切にマッピングするためにコマンドハンドラによって使用される。前に説明されているように、パーティション識別子は、特定のパーティションをアドレスするために使用される。好ましくは、パーティション識別子はIPアドレスである。しかし、適用可能性を失うことなく、LUNまたは他のアドレスも使用できる。iSCSIを使用する一実施形態では、ストレージデバイスへのストレージコマンドをアドレスするためにIPアドレスを使用することができ、ストレージデバイス上の特定のストレージエリアをアドレスするためにLUNが使用される。
パーティションコマンドハンドラ785は、データの多くても1つの転送サイズを要求する単一アクセスを表す、パーティションコマンド770Aから770Nのそれぞれを形成するために転送サイズ情報を使用する。パーティションコマンド770Aは、第1のパーティションコマンドを表す。バッファポインタ773Aは、バッファ720の最初の部分を指す。パーティションコマンド770Aは、ボリュームレベルのすべての処理が前の層(複数)によって完了されているので、その要求の中にボリュームLBA 707情報を必要としない。グループLBA 777Aは、ターゲットパーティション内のオフセットを参照し、データサイズ779Aは、要求されたデータアクセスは、少なくとも、パーティションの期待される転送サイズであることを示す。コマンドリンク783Aは、コマンドリンク783Bと同様に、次のパーティションレベルコマンドにリンクすることにより、パーティションコマンドキュー790を形成し続ける。パーティションコマンドハンドラ785は、パーティションコマンド770Aの生成を完了すると、パーティションコマンド770Bを生成する。
パーティションコマンド770Bは、パーティションコマンド770Aと同様な方法で生成される。バッファポインタ773Bは、バッファ720の、次のデータチャンクの先頭から1つの転送サイズだけ深い場所を指す。グループLBA 777Bは、前のパーティションコマンドより1つの転送サイズだけ大きい値を有し、データサイズ779Bは、やはり、転送サイズである。パーティションコマンドハンドラ785は、バッファ720のすべてのデータが処理され終わるまでパーティションコマンドを生成し続ける。パーティションコマンド770Nによって表される最後のパーティションコマンドは、バッファポインタ773Nがバッファ720の最後の部分を指すようにすることにより、バッファ720の末尾部分を扱う。グループLBA 777Nは、ストレージコマンド700を処理するために必要なチャンクの数に応じて計算される値を有する。データサイズ779Nは、パーティションの転送サイズより小さいか、等しい値を有する。最終的に、コマンドリンク783Nは、必要な場合,NULLで終了し、それは、コマンドキュー790の終わりを表す。
ストレージデバイスは、パーティションレベルコマンドを受信すると、パーティションレベルLBAを、物理ストレージデバイスに関連付けられたデバイスレベルLBAに変換する。例えば、ストレージコマンド770Aは、関連付けられたグループLBA 777Aを有しており、グループLBA 777Aは、そのターゲットパーティション用の0から最大値までの範囲の値を有する。しかし、ストレージデバイスは、ストレージコマンド770Aを受信すると、グループLBA 777Aを、おそらく実際のハードディスクドライブ内の絶対LBA基準にマッピングする。
コマンドハンドラ:コマンドスタックの処理
リンクされたストレージグループおよびコマンドハンドラによって形成されるコマンドスタックは、高水準ストレージコマンドを、パーティションを担当するストレージデバイスによって処理できる低水準ストレージコマンドに変換する。コマンドスタックは、高水準コマンドを、パーティションの様々なストレージグループによって提供される機能にマッピングすることにより、コマンドを生成する。コンピュータプログラミングの当業者は、ストレージコマンドを処理するための可能な実施形態は多数あることが理解できよう。
好ましい実施形態では、ストレージコマンドは、コマンドデータ構造体へのポインタを介してコマンドスタックまたはグループコマンドハンドラに渡される。コマンドデータ構造体は、コマンドの特質に関連する情報、すなわち、要求のタイプ(読み取り、書き込み、状況など)、データ要求のサイズ(ある場合)、またはデータを保持するためのバッファへのポインタなどを有する。データバッファへのポインタを使用すると、コマンドハンドラは、書き込み要求および読み取り要求を実質的に同じ方法で扱うことができる。コマンドハンドラは、高水準ストレージコマンドを低水準ストレージコマンドに変換するとき、低水準ストレージコマンドを、好ましくはパーティションレベルで、ストレージコマンドのリンク化リストに入れる。ストレージコマンドリストは、最終的には、パーティションレベルストレージコマンドのリストのみになり、それらのコマンドはパッケージされて、ストレージデバイスに送信されることができる。リスト内のパーティションレベルストレージコマンドのそれぞれは、バッファへのオフセット、要求サイズ、パーティションLBA、パーティション識別子、またはパーティションレベルストレージコマンドをパッケージングするときに有用な他の情報を有する。
コマンドスタック自体は複雑な構造体であってよいが、構造体は数個の関数、すなわち、ストレージグループのタイプごとに1つの関数を呼び出す。このことは、論理ボリュームが4つのストレージグループタイプ、すなわち、ミラー、ストライプ、スパン、またはパーティションをサポートする場合、コマンドスタックは4つの関数、ミラーコマンドハンドラ、ストライプコマンドハンドラ、スパンコマンドハンドラ、またはパーティションコマンドハンドラを呼び出すだけであることを意味する。各グループは、コマンドハンドラが使用するための、そのグループのコンテキスト定義情報をグループデータ構造体に入れて収容する。このように機能するコマンドスタックを開発すると、反復を使用する必要性が減少するので、メモリ制限がある組み込み型システムにとって有益である。
ストレージコマンドのパッケージ化
最終的には、低水準ストレージコマンドは、ストレージデバイスへの送信のためにパッケージされる。好ましい実施形態では、パーティションレベルコマンドは、ストレージデバイスによって理解されるストレージプロトコルに従ってパッケージされる。しかし、コマンドスタックをさらに処理するために、より高水準のストレージコマンドをパッケージして、それらを、プロキシを含めて、他のデバイスに送信することも可能である。例えば、ZeteraのZ−SANプロトコルでは、各パーティションレベルコマンドは、Z−SANコマンド、適切な転送サイズのデータペイロード、およびパーティションのIPアドレスを有するUDPデータグラムにパッケージされる。Z−SAN使用可能なデバイスは、複数のIPアドレス、すなわち、そのデバイスが担当するパーティションごとに1つのIPアドレスを有することができる。Z−SAN使用可能なデバイスは、パーティションとIP層を区別するためにZ−SANデータグラムのIPアドレスを使用する。あるいは、パーティションレベルコマンドはiSCSIプロトコルを使用してパッケージすることもできる。パーティションを識別するためにIPアドレスを使用するのではなく、iSCSIはストレージデバイスをアドレスするためにIPアドレスを使用し、パーティションをアドレスするためにLUNを使用する。iSCSIは、より高水準のストレージコマンドを転送するためにも使用できるiSCSIセッション内で、パーティションレベルコマンドもTCP/IP接続を介して転送する。パーティションレベルストレージコマンドまたは他のストレージコマンドの移送の方法はコマンドの生成とは独立していることに留意されたい。したがって、FCIP、iFCP、SATA、ATA、SAS、SCSI、USB、無線USB、IEEE 1394、802.11、またはストレージコマンドを運ぶことができる他のプロトコルなど、任意のプロトコルが使用できる。
一実施形態では、パーティションレベルストレージコマンドを、コマンドのキューを表すリンク化リストにリンクするのとは違って、生成されたストレージコマンドをパッケージするためのパーティションハンドラを提供する。パーティションレベルストレージコマンドは、生成されると、パケットにパッケージされて、パーティションに送ることができる。これはストレージシステム内で最も迅速な応答を行うので、有利である。しかし、送信された各コマンドに応答を期待するトランザクションプロトコルの場合、システムは、コールバックが戻されない場合、応答を待つ間、ストレージコマンドの処理をブロックする。
好ましい実施形態において、パーティションハンドラがパーティションレベルストレージコマンドのリンク化リストを介して後で送信するためのコマンドをキューに入れる場合、パーティションレベルストレージコマンドはパッケージされて、送信される。この手法の利点は、コマンド処理がストレージプロトコル処理と分離されているので、コマンド生成がストレージプロトコルの処理によって中断されないことである。例えば、iSCSIプロトコルでパッケージされた各パーティションレベルコマンドがパーティションまたはストレージデバイスからの応答を必要とする場合、パーティションコマンドハンドラは、次のパーティションレベルストレージコマンドを送信する前に応答を待つ必要がない。
論理ボリュームマップの構成
リンクされたストレージグループおよびコマンドハンドラによって表されるコマンドスタックは、論理ボリュームのマップを表す。クライアントおよびストレージデバイスが通知することなく現れ、消えることが期待されている想定された分散仮想環境では、クライアントにシステムの事前知識は必要ない。好ましくは、クライアントは、1つまたは複数のパーティションを発見することにより、ストレージシステムにアクセスする。システムに入るクライアントは、おそらくUDPブロードキャストを使用して、発見メッセージをストレージデバイスに送信し、ストレージデバイスはパーティション情報で応答する。パーティション情報は、クライアントが使用するための論理ボリュームマップ情報を表す属性を含む。すると、クライアントは、発見されたマップデータに応じて論理ボリュームのマップを構成する。例えば、パーティションは、ストレージグループタイプの階層内におけるそのパーティションのグループ所属を定義する属性で応答できる。属性は、例えば、名前を含むが、そのパーティションが所属するグループに関する階層関係の情報を含んでよい。クライアントは、パーティションからの属性情報を解析して、パーティションがどのように組み合わされて論理ボリュームを形成しているかを理解する。属性は、ストレージグループの組織化に関する一般ルール情報を、クライアントが理解できて、論理ボリュームを構成できるような方法で符号化する。クライアントは、組織化上のルールおよび属性情報から論理ボリュームのマップを表すコマンドスタックを構築する。ある意味で、属性は、論理ボリューム用のコマンドスタックの構成方法に関する、クライアントへの指示と考えることができる。「Disaggregated Resources and Access Methods」という名称の共同所有の米国特許出願第11/205895号明細書で、クライアント発見パーティション情報、階層上の名前、またはストレージグループ組織化を符号化する属性の使い方に関して詳細が記載されている。
クライアントは論理ボリュームのコマンドスタックを構築しながら属性情報を解釈するので、オプションの親ポインタまたはオプションの透過ピアポインタを使用することが有利である。これらのポインタを使用することは、穴(hole)またはエラーがないことを確認するためにグループ構造体の中をウォーキングする備えとなる。
仮想ストレージシステム内のストレージエリアは、発見要求に個別にまたは一括で応答することが想定されている。個別の応答は、各パーティションからの単一の応答を表し、その応答はパーティション情報を有する。一括応答は、システム内の要素からの、複数のパーティションに関する情報を有する応答を表す。一部の実施形態では、プロキシが多数のパーティションからの個別の応答を集約し、クライアント発見に対して、それが単一のストレージエリアであるかのように1つの個別の応答で応答する。例えば、プロキシが、ストライプ化ストレージグループを集約した場合、プロキシはそのストライプ化ストレージグループをそれが単一のパーティションであるかのように扱い、クライアントにそのグループは個別のパーティションであるかのような発見応答を提示する。他の実施形態では、ストレージデバイスまたは他のデバイスがパーティションに関する情報を収集し、複数のパーティション用の情報を有するメッセージを形成する。例えば、単一のストレージデバイスが、発見要求に対して、各個別パーティションの名前または属性を有するメッセージで応答する。
結果のコマンドスタックは単純にも、複雑にもなりうる。単純なコマンドスタックとは、論理ボリューム内のすべてのストレージグループに対して単一のコマンドハンドラを使用するコマンドスタックを表す。例えば、パーティションに直接にマッピングされる論理ボリュームは、パーティションコマンドハンドラが必要なだけである。複雑なコマンドスタックは、ミラー、ストライプ、スパン、パーティション、パリティ、または他のコマンドハンドラの混在など、ストレージグループの異なるタイプに対する複数のコマンドハンドラを含む。
論理ボリュームマップの更新
論理ボリュームのマップは、ストレージグループのリンク化構造体を有する。どのリンク化リストとも同じように、メンバは、リスト内のポインタを調整することにより更新できる。ストレージグループは、追加ストレージグループをリンクすることにより論理ボリュームに追加できる、またはストレージグループをリンク解除することにより論理ボリュームから除去される。
ストレージグループを追加する例として、論理ボリュームに追加パーティションを追加することにより、論理ボリュームの容量を増やすことが挙げられる。例えば、論理ボリュームが3つのメンバを有するスパングループのみを有する場合、その論理ボリュームは、スパングループのピアリンクに第4のメンバをリンクすることにより、容量を増やすことができる。クライアントは、論理ボリュームを取り外すことなく論理ボリュームの容量が増えたことに気付くだろう。
ストレージグループを除去する例として、失われたパーティションの処理が挙げられる。ボリュームが2つ以上のメンバを有するミラーグループを有している場合、各メンバは、論理ボリュームのインスタンスを表す。クライアントは、ある1つのメンバに関連付けられたパーティションにアクセスできなくなった場合でも、他のミラーグループメンバの1つまたは複数のパーティションからのデータにはアクセスできる。クライアントは、失われたパーティションとのリンク、または失われたパーティションが関連付けられているグループを、ピアリンクまたは子リンクをNULL終了させることにより除去し、それにより論理マップを更新できる。その場合でも、コマンドスタックは有効であり、ストレージコマンドを通常に処理する。ただし、コマンドスタックは、単純に、除去されたストレージグループを検出しない。クライアントが破壊されたミラー化ボリュームへの書き込みを続行するか否かを決定するための命令をクライアントが組み込むことが想定されている。
好ましい実施形態では、クライアントは、データについての論理ボリュームの整合性に関するパーティション情報を入手する。整合性とは、論理ボリュームの部分がアクセスできない場合でも、クライアントが、論理ボリュームのLBAの範囲によって表されるとおりの論理ボリュームの完全なインスタンスにアクセスできることを指す。一実施形態では、クライアントは、論理ボリュームに関連付けられたパーティションが使用可能であることを確認するために、パーティションの属性についてシステムを定期的にプローブする。クライアントが属性情報を分析することによって論理ボリュームの構成体の変更を検出した場合、そのクライアントは、適切なストレージグループを追加または除去することにより、論理ボリュームのマップを更新することができる。
クライアントがLBA範囲に関して整合性のある論理ボリュームマップを形成し終わると、そのクライアントは、ローカルに接続されたストレージデバイスとしてその論理ボリュームをマウントできる。好ましい実施形態では、クライアントが論理ボリュームの変更を検出した場合、そのクライアントは、論理ボリュームを取り外さずに論理ボリュームマップを更新できる。ストレージグループはオペレーティングシステムまたはファイルシステムに影響を与えることなくリンクまたはリンク解除できるので、クライアントが論理ボリュームを取り外す必要はない。
補足の考察
好ましい実施形態では、パーティションレベルストレージコマンドはストレージデバイスへの送信用にパッケージされるが、賢明な読者は、パッケージングについてはパーティションレベルストレージコマンドと、より高水準のストレージコマンドとの間にはほとんど違いがないことを理解できるだろう。したがって、本発明の主題は、ストレージデバイス、またはストレージデバイス上のストレージエリアへの送信用にすべてのレベルのストレージコマンドをパッケージする概念をも含む。そのような手法は、コマンドハンドラが、クライアント、プロキシ、ストレージデバイス、またはメモリ内にコマンドハンドラを保管する他のデバイスを接続する通信リンクを介して機能できる分散コマンドスタックを確立する備えとなる。プロキシとは、別のデバイスには1つまたは複数の単一ストレージエリアに見えるが、他のストレージデバイス(複数)から1つまたは複数のストレージデバイスを集約しているデバイスを表す。プロキシはストレージデバイスに対してはクライアントとして機能する。しかし、クライアントに対してはストレージデバイスのようにも機能する。
実際的な意味では、ストレージグループのタイプに関連付けられたストレージコマンドを処理するコマンドハンドラに結合されるストレージグループ組織化は、LBA変換を定義する「数学」と考えることができる。コマンドハンドラは、LBAおよびデータ要求サイズを入力として受け入れる様々な演算子を表す。その後、コマンドハンドラは、1つまたは複数の変換済みLBAおよびデータ要求サイズを出力する。したがって、データアドレスおよび要求サイズを変換するすべてのコマンドハンドラが想定されている。例えば、本発明の主題は、ストレージグループのタイプのための追加機能を反映する機能をコマンドハンドラ内に追加することの備えとなる。コマンドハンドラは論理ボリュームの構造体から十分に分離されているので、コマンドハンドラ機能への変更は、論理ボリュームのトポロジーを変更させることはない。パリティを扱うようにストライプコマンドハンドラを変更することは、1つの例である。
別の例として、論理ボリュームのパフォーマンスを向上させるためにミラーコマンドハンドラを変更することが挙げられる。2つ以上のメンバを含むミラーグループを有する論理ボリュームは、2組以上のLBAを使用してアクセスされる2組以上の論理ボリュームのデータを有する。したがって、ミラーコマンドハンドラは、読み取りストレージコマンドをミラーグループメンバ全体に拡散するように変更できる。ミラーコマンドハンドラは、ボリュームレベル読み取りコマンドを処理するとき、負荷を複数のストレージデバイスに分散するために、ストレージコマンド、またはストレージコマンドの部分を各ミラーメンバの全体にわたって回転(rotate)させることができる。ミラーメンバに関連付けられているパーティションが別々のストレージデバイスに置かれている場合、読み取りのパフォーマンスは、同じストレージデバイスに置かれているミラーメンバからデータを読み取るより優れている。一実施形態では、変更されたミラーコマンドハンドラは、ミラーメンバ上のデータを、ミラーグループメンバがストライプ化グループに属しているかのように扱う。そのような手法は、一方のディスクが他方のディスクをミラーリングする2つのハードディスクを備えたコンピュータなど、内部ストレージデバイスを有するクライアントで有利に展開できる。さらに、コマンドハンドラは、要求のタイプ間で差異があってよい。例えば、コマンドハンドラは、追加機能を得るために、書き込み要求または読み取り要求の処理を変えてよい。
本明細書で開示された構造体は、ストレージを超えた他のテクノロジーに適用できる。概念は、分散デバイスまたは非集約型デバイスにコマンド処理を提供するように汎用化できる。クライアントは非集約型デバイスの構造体を発見して、発見情報に基づいてコマンドスタックを形成できる。他の実施形態では、クライアントは、必要な通信インフラストラクチャのみが確実に使用されるようにするために、サーバからの情報を使用して通信スタックを構成できる。例えば、クライアントおよびサーバが同じイーサネット(登録商標)LAN上で接続されている場合、クライアントは、効率的な通信のために、通信用の完全TCP/IPスタックではなくイーサネット(登録商標)のみを使用する通信スタックをサーバの命令から作成できることもあり得る。そのようなコマンドスタックは、アトミックなコマンド応答アプリケーションプロトコルによく適合する。
コマンドスタックをチェーンすることも想定されている。前に説明されているように、コマンドスタックは、クライアント、プロキシ、ストレージデバイス、またはストレージシステム内の他の要素間で拡散できる。これは、ストレージ機能にさらにアクセスするために、クライアントが、自身がコマンドスタックを使用するストレージデバイスと対話する概念を含む。例えば、クライアントは、論理ボリュームがパーティションのスパングループを有していることに気付くことができる。しかし、各パーティションは、実際には、ストレージデバイス内のRAID−5ストライプグループである。ストレージデバイスはRAID−5コマンドハンドラを使用してローカルパーティションと対話するが、クライアントはスパンコマンドハンドラを使用してストレージデバイス上のパーティションと対話する。基本的には、スパンレベルコマンドはストレージデバイスに送信され、ストレージデバイスはスパンレベルコマンドを高水準コマンドとして扱い、さらにスパンレベルコマンドを、RAID−5コマンドハンドラを使用して処理する。
パーティションのLBA範囲はストレージグループの範囲から独立しているので、各ストレージデバイスは各パーティションを、0からストレージエリアの最大LBAまでのLBA範囲を有するストレージエリアとして扱うことができる。これは、ストレージデバイスが追加計算を行う必要がある場合と違って、ストレージデバイスに高速処理を提供する。さらに、このことは、ストレージデバイスは、ストレージグループ組織化のルールに従ってどのように機能するかを理解する能力を必要としないことを意味する。パーティションがインスタンス化される時、パーティションの名前または属性は、論理ボリュームのマップを構成するためにクライアントによって使用されるルール情報を運ぶように更新される。パーティションは、単に、データをLBAの線形範囲に保管する。
利点
コマンドハンドラを含む論理ボリュームマップからストレージコマンドを生成することを利用して多数の利点が実現される。各クライアントが相互に独立して機能するシステムでは、各クライアントは、論理ボリュームのクライアント自身のビューを確立するが、論理ボリュームを構成するためにすべてのクライアントが同じ共通ルールを使用するので、クライアントのそれぞれは実質的には同じマップを有する。1つのクライアントが論理ボリュームの一部を見ることができなくなって、論理ボリュームマップが更新されることになった場合、他のクライアントは影響を受けない。さらに、論理ボリュームが、2つ以上のメンバを有するミラーグループを含んでいるシナリオでは、ミラーリングされたメンバの一部分がアクセス不能になった場合でも、クライアントは、論理ボリューム上のデータの整合性のあるビューを保持できている。異なるミラーグループメンバからであっても完全なデータセットまたはボリュームレベルのLBA範囲が使用可能な場合、クライアントはデータにアクセスする能力を保持している。アクセス不能になったグループまたはパーティションのみを、それらを論理ボリュームマップからリンク解除することにより、論理ボリュームの再マウントを必要としないでマップから除去される。
開示された技術を使用するストレージシステムは、多くのストレージデバイスまたは多くのクライアントを有する、より大きい展開へ規模が拡大される。前に説明されているように、各クライアントは独立して機能し、ストレージデバイスに負担をかけることなく参加することができる。システムは、クライアントとストレージデバイス間の通信リンク帯域幅の限界まで規模を拡大する。さらに、論理ボリュームコマンドスタックは、単一のホストから他のデバイス(複数)に拡大できる。例えば、クライアントがコマンドスタックの一部を有すことができて、おそらく、リモート関数を実行するためのWebサービスを使用することにより、そのコマンドスタックの一部は、ストレージコマンドの生成を続行するプロキシデバイス上のコマンドスタックに呼び込まれる。開示された方法は、ストレージコマンドを移送するために使用されるプロトコルとは独立していて、そのことは、iSCSIなどの標準ベースの実施態様だけでなく、プロプラエタリストレージ実施態様による採用の備えとなる。
ストレージグループタイプに関連付けられたコマンドハンドラの使用は、異質なストレージグループタイプの混在の備えとなる。前に説明されているように、ミラー、ストライプ、スパンまたはパーティションは、単一の論理ボリュームを作成するために様々な方法で結合できる。異質なストレージグループの混在を、要求のタイプを様々に扱うコマンドハンドラの能力に結合することは、特殊な特性を有する論理ボリュームを確立する備えとなる。例えば、ストライプグループおよびスパングループを含む論理ボリュームは、アーカイブの目的でスパングループが使用されてもよい場合に両方のグループに書き込む一方で、優先的にストライプグループから読み取られてもよい。
さらに、論理ボリュームコマンドスタックは、ストレージコマンド移送とは独立したストレージコマンドを生成し、各プロトコルが異なるタイプのストレージデバイスを対象にする異質の移送プロトコルの混在をサポートすることが可能である。一実施形態では、例えば、単一の論理ボリュームが、内部コントローラを介してアクセスされる直接接続のデバイスに置かれているパーティション、またはネットワークストレージプロトコルを介してアクセスされるリモートデバイスに置かれているパーティションを含むことができる。パーティションコマンドハンドラは、各タイプのプロトコルの特定の詳細を扱うように構成されることができる。特定の実施形態の例では、直接接続のSATAハードディスクドライブ上のパーティション、iSCSIを介してアクセスされるパーティション、およびZeteraのZ−SANプロトコルを介してアクセスされるパーティションを含む論理ボリュームを備えてよい。
ストレージグループタイプの組織化に関連したルールに従って論理ボリュームマップが構成されるので、クライアントはストレージコマンドを迅速に生成する。好ましい実施形態では、高水準のボリュームコマンドは、反復を使用することなく、最大限4レベルのコマンドハンドラ内で1つまたは複数のパーティションレベルコマンドに変換される。これは、ストレージコマンドの高速処理を提供する。
ハードウェア
他の態様は、本発明の主題に関係のあるハードウェアに関する。保管、プロトタイプ化、製作、操作、管理、パッケージ化、テスト、物理的制御またはサポートのためのハードウェア、または本発明の主題の物理的態様に関係のある他のアクティビティのためのハードウェアを開発できることが想定されている。したがって、本発明の主題は、そのようなハードウェアを開発、創作、製造または稼働するためのシステム、方法、または装置を含む。この意味において、そのようなハードウェアは本発明の主題の範囲内である。
ソフトウェア
さらに別の態様では、本発明の主題の様々な態様およびその関連インフラストラクチャを構成、シミュレート、または管理するソフトウェアを書けることが想定されている。この観点から、本発明の主題は、そのようなソフトウェアを書く方法、そのソフトウェアを機械可読形式で記録すること、そのようなソフトウェアの使用許諾、販売、配布、導入、または適切なハードウェア上での稼働を含む。さらに、そのようなソフトウェア自体が本発明の主題の範囲内であると見なされる。
このように、具体的な構成およびストレージコマンドを生成するための方法が開示されている。しかし、当業者には、本明細書における発明の概念から逸脱することなく、すでに記載されたもの以外に、さらに多くの変更が可能であることは明らかであろう。したがって、本発明の主題は、開示の精神であることを除いて限定されることはない。さらに、本開示を解釈する際、すべての用語は、コンテキストと矛盾しない、可能な限り広い意味で解釈されるべきである。特に、用語「含む、有する、備える(compriseおよびcomprising)」は、要素、構成要素またはステップを非排他的に指していて、言及された要素、構成要素またはステップが存在できる、または利用できる、または明示的に言及されていない他の要素、構成要素またはステップと組み合わせることができることを表していると解釈すべきである。

Claims (17)

  1. 複数のストレージパーティションのそれぞれが複数のストレージグループのうちの選択された1つに関連付けられ、複数のストレージグループのそれぞれが、階層に組織化された複数のグループタイプのうちの選択された1つに関係付けられた、複数のストレージグループとして組織化される複数のストレージパーティションと、
    複数のストレージグループをリンクした論理ボリュームのマップを使用することにより、複数のストレージパーティションにアクセスするためのコントローラであって、該マップがグループデータ構造体を含み、該グループデータ構造体が、複数のストレージグループのストレージグループを表し、そのストレージグループが関連付けられた第1のグループタイプ用のコマンドハンドラを指すように構成された関数ポインタ、そのストレージグループのピアストレージグループを指すように構成されたピアグループポインタ、およびそのストレージグループの、階層上で第1のグループタイプより下に組織化される第2のグループタイプに関連付けられた子ストレージグループを指すように構成された子グループポインタを有する、コントローラ
    を備えた、ストレージシステム。
  2. ピアストレージグループが、階層上で第1のグループタイプより下に組織化される第3のグループタイプに関連付けられる、請求項1に記載のストレージシステム。
  3. ストレージグループが、そのピアストレージグループを含む複数のピアストレージグループを有し、ピアグループポインタは、そのピアストレージグループを指すようにのみ構成される、請求項1に記載のストレージシステム。
  4. ストレージグループが、その子ストレージグループを含む複数の子ストレージグループを有し、子グループポインタは、その子ストレージグループを指すようにのみ構成される、請求項1に記載のストレージシステム。
  5. 複数のグループタイプのそれぞれ用のコマンドハンドラをさらに含む、請求項1に記載のストレージシステム。
  6. 複数のストレージパーティションのそれぞれがパーティショングループタイプに関連付けられ、パーティショングループタイプは、最下位の階層上で組織化されたグループタイプである、請求項1に記載のストレージシステム。
  7. 複数のストレージパーティションのうちの少なくとも2つのストレージパーティションを有するストレージデバイスをさらに含む、請求項6に記載のストレージシステム。
  8. 前記コントローラが、そのストレージグループ宛ての第1のコマンドを受信し、少なくとも部分的に第1のコマンドに基づいて、その子ストレージグループ宛ての第2のコマンドを生成するように構成されたコマンドハンドラを有し、前記コントローラが、
    その子ストレージグループを表し、第2のグループタイプ用のパラメータを有する別のデータ構造体と、
    少なくとも部分的にそのパラメータに基づいて第2のコマンドを生成するように構成されたコマンドハンドラと
    をさらに使用する、請求項1に記載のストレージシステム。
  9. コマンドハンドラは、少なくとも部分的に第1のコマンドに基づいて、その第2のコマンドを含む複数の第2のコマンドを順次に生成するように構成されている、請求項8に記載のストレージシステム。
  10. 複数のパーティションのうちの第1のパーティションを有し、この第1のパーティションがそのストレージグループのメンバである第1のストレージデバイスと、
    複数のパーティションのうちの第2のパーティションを有し、この第2のパーティションがその複数のストレージグループのうちの別のストレージグループのメンバである第2のストレージデバイスと、
    そのストレージグループに関連付けられた第1のストレージコマンドを、該別のストレージグループに関連付けられた第2のストレージコマンドに変換するように構成されたコマンドハンドラと
    をさらに含む、請求項1に記載のストレージシステム。
  11. そのストレージデバイスをストレージシステムに結合するように構成された通信インターフェースと、
    その通信インターフェースに結合され、
    ストレージグループを表し、そのストレージグループが関連付けられたグループタイプ用のコマンドハンドラを指すように構成された関数ポインタ、そのストレージグループのピアストレージグループを指すように構成されたピアグループポインタ、およびそのストレージグループの子ストレージグループを指すように構成された子グループポインタを有するグループデータ構造体を受信し、
    少なくとも部分的にそのグループデータ構造体に基づいて、そのストレージグループ、そのピアストレージグループ、およびその子ストレージグループを含み、複数のストレージグループのそれぞれが、階層に組織化された複数のグループタイプのうちの選択された1つに関連付けられた、複数のストレージグループのボリュームマップを構成するように構成されたコントローラと
    を備えた、ストレージデバイス。
  12. そのグループタイプが第1のグループタイプであって、その子ストレージグループが、階層上で第1のグループタイプの下に組織化される第2のグループタイプに関連付けられた、請求項11に記載のストレージデバイス。
  13. そのストレージグループが、そのピアストレージグループを含む複数のピアストレージグループを有し、そのピアグループポインタは、そのピアストレージグループを指すようにのみ構成される、請求項11に記載のストレージデバイス。
  14. ストレージシステムが、複数のストレージグループとして組織化され、それぞれのストレージパーティションが、グループタイプの中にあって階層上で最下位のグループタイプとして組織化されるパーティショングループタイプに関連付けられた複数のストレージパーティションを備え、コントローラが、少なくとも部分的にボリュームマップに基づいて複数のストレージパーティションにアクセスするようにさらに構成されている、請求項11に記載のストレージデバイス。
  15. ストレージグループを表し、そのストレージグループが関連付けられたグループタイプ用のコマンドハンドラを指すように構成された関数ポインタ、そのストレージグループのピアストレージグループを指すように構成されたピアグループポインタ、およびそのストレージグループの子ストレージグループを指すように構成された子グループポインタを有するグループデータ構造体を受信するステップと、
    少なくとも部分的にそのグループデータ構造体に基づいて、第1のストレージグループ、ピアストレージグループ、および子ストレージグループを含み、複数のストレージグループのうちのそれぞれが、階層に組織化されている複数のグループタイプのうちの選択された1つに関連付けられた、複数のストレージグループにアクセスするための複数のストレージグループのボリュームマップを構成するステップと
    を含む、ストレージグループにアクセスする方法。
  16. 複数のストレージパーティションが複数のストレージグループとして組織化され、その複数のストレージパーティションのそれぞれが、グループタイプの中にあって階層上で最下位のグループタイプとして組織化されるパーティショングループタイプに関連付けられており、
    少なくとも部分的にボリュームマップに基づいて、複数のストレージパーティションにアクセスするステップをさらに含む、請求項15に記載の方法。
  17. そのグループタイプが第1のグループタイプであり、その子ストレージグループが第2のグループタイプに関連付けられており、
    コマンドハンドラで、そのストレージグループ宛ての第1のコマンドを受信するステップと、
    少なくとも部分的にその第1のコマンドに基づいて、その子ストレージグループ宛ての第2のコマンドを生成するステップと、
    コマンドハンドラで、その第2のグループタイプ用のパラメータを受信するステップと、
    少なくとも部分的にそのパラメータに基づいて、第2のコマンドを生成するステップと
    をさらに含む、請求項15に記載の方法。
JP2009516584A 2006-06-20 2007-06-20 ストレージシステム用コマンドの生成 Active JP5027877B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/472,198 2006-06-20
US11/472,198 US7743214B2 (en) 2005-08-16 2006-06-20 Generating storage system commands
PCT/US2007/014572 WO2007149563A2 (en) 2006-06-20 2007-06-20 Generating storage system commands

Publications (2)

Publication Number Publication Date
JP2009541854A JP2009541854A (ja) 2009-11-26
JP5027877B2 true JP5027877B2 (ja) 2012-09-19

Family

ID=38834145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009516584A Active JP5027877B2 (ja) 2006-06-20 2007-06-20 ストレージシステム用コマンドの生成

Country Status (9)

Country Link
US (1) US7743214B2 (ja)
EP (1) EP2035933B1 (ja)
JP (1) JP5027877B2 (ja)
KR (1) KR101053967B1 (ja)
CN (1) CN101506779B (ja)
AT (1) ATE508414T1 (ja)
CA (1) CA2657221C (ja)
DE (1) DE602007014366D1 (ja)
WO (1) WO2007149563A2 (ja)

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005918B2 (en) 2002-11-12 2011-08-23 Rateze Remote Mgmt. L.L.C. Data storage devices having IP capable partitions
US7620981B2 (en) 2005-05-26 2009-11-17 Charles William Frank Virtual devices and virtual bus tunnels, modules and methods
US8819092B2 (en) 2005-08-16 2014-08-26 Rateze Remote Mgmt. L.L.C. Disaggregated resources and access methods
US20070143352A1 (en) * 2005-12-21 2007-06-21 International Business Machines Corporation Method and system for implementing database migration using a staged approach
US7683801B2 (en) * 2007-05-28 2010-03-23 Tyson York Winarski Multicolor visual feedback for portable, non-volatile storage
US9064132B1 (en) * 2008-03-31 2015-06-23 Symantec Operating Corporation Method for writing hardware encrypted backups on a per set basis
US20100146000A1 (en) * 2008-12-04 2010-06-10 International Business Machines Corporation Administering Blade Servers In A Blade Center
US8452934B2 (en) * 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US8452846B2 (en) * 2010-08-12 2013-05-28 Talari Networks Incorporated Adaptive private network asynchronous distributed shared memory services
US8555022B1 (en) 2010-01-06 2013-10-08 Netapp, Inc. Assimilation of foreign LUNS into a network storage system
US20130046845A1 (en) * 2010-04-28 2013-02-21 Nec Corporation Storage system, control method for storage system, and computer program
US8874746B1 (en) 2010-05-24 2014-10-28 Datacore Software Corporation Collaboration between discrete systems and a shared system to consolidate shared storage-related services
US8990536B2 (en) * 2011-06-01 2015-03-24 Schneider Electric It Corporation Systems and methods for journaling and executing device control instructions
US9069467B2 (en) * 2011-06-01 2015-06-30 Microsoft Technology Licensing, Llc Isolation of virtual machine I/O in multi-disk hosts
JP5685210B2 (ja) * 2012-01-30 2015-03-18 富士通フロンテック株式会社 記憶システム、バックアップ方法、および、データ復元方法
CN102868779B (zh) * 2012-09-20 2016-01-20 北京锐安科技有限公司 一种IPv6数据分区及快速查找方法
CN103077098B (zh) * 2012-12-25 2015-11-18 深圳市安云信息科技有限公司 基于iscsi卷的文件备份方法和装置
US9276973B2 (en) * 2013-03-29 2016-03-01 Philip Scott Lyren Peer-to-peer data storage
US9940019B2 (en) 2013-06-12 2018-04-10 International Business Machines Corporation Online migration of a logical volume between storage systems
US8819317B1 (en) * 2013-06-12 2014-08-26 International Business Machines Corporation Processing input/output requests using proxy and owner storage systems
US9779003B2 (en) 2013-06-12 2017-10-03 International Business Machines Corporation Safely mapping and unmapping host SCSI volumes
US9769062B2 (en) 2013-06-12 2017-09-19 International Business Machines Corporation Load balancing input/output operations between two computers
US9112890B1 (en) 2014-08-20 2015-08-18 E8 Storage Systems Ltd. Distributed storage over shared multi-queued storage device
US9274720B1 (en) * 2014-09-15 2016-03-01 E8 Storage Systems Ltd. Distributed RAID over shared multi-queued storage devices
US9519666B2 (en) 2014-11-27 2016-12-13 E8 Storage Systems Ltd. Snapshots and thin-provisioning in distributed storage over shared storage devices
US10613933B2 (en) 2014-12-09 2020-04-07 Hitachi Vantara Llc System and method for providing thin-provisioned block storage with multiple data protection classes
US9529542B2 (en) 2015-04-14 2016-12-27 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM caching of compressed data in a highly-distributed shared topology with direct memory access capable interconnect
US9525737B2 (en) 2015-04-14 2016-12-20 E8 Storage Systems Ltd. Lockless distributed redundant storage and NVRAM cache in a highly-distributed shared topology with direct memory access capable interconnect
US9930116B2 (en) * 2015-06-01 2018-03-27 Oracle International Corporation Method and system for selecting a transport mechanism and a storage process
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US10102138B2 (en) * 2015-10-22 2018-10-16 Western Digital Technologies, Inc. Division of data storage in single-storage device architecture
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
US10031872B1 (en) 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
CN107888689B (zh) * 2017-11-16 2019-04-30 无锡地铁集团有限公司 基于共享存储的加锁资源配置方法
WO2020014836A1 (zh) * 2018-07-16 2020-01-23 华为技术有限公司 获取光模块链路协商信息的方法、设备和系统
CN110572184B (zh) 2019-08-02 2021-03-05 华为技术有限公司 发电系统及用于发电系统的通信装置

Family Cites Families (186)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6024647A (ja) 1983-07-20 1985-02-07 Hitachi Ltd システムの自律化資源管理方式
US5129088A (en) 1987-11-30 1992-07-07 International Business Machines Corporation Data processing method to create virtual disks from non-contiguous groups of logically contiguous addressable blocks of direct access storage device
JPH0792775B2 (ja) 1989-12-11 1995-10-09 株式会社日立製作所 外部記憶装置群のスペース管理方法
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
EP0485110B1 (en) 1990-11-09 1999-08-25 Emc Corporation Logical partitioning of a redundant array storage system
JPH05505263A (ja) 1991-02-05 1993-08-05 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクション・コマンドの経路指定
EP0551009B1 (en) 1992-01-08 2001-06-13 Emc Corporation Method for synchronizing reserved areas in a redundant storage array
JP2868141B2 (ja) 1992-03-16 1999-03-10 株式会社日立製作所 ディスクアレイ装置
US5457683A (en) 1993-05-07 1995-10-10 Apple Computer, Inc. Link and discovery protocols for a ring interconnect architecture
WO1995013583A1 (en) 1993-11-09 1995-05-18 Conner Kenneth H First come memory accessing without conflict
JP3249868B2 (ja) 1993-11-19 2002-01-21 株式会社日立製作所 アレイ形式の記憶装置システム
US5506969A (en) 1993-11-29 1996-04-09 Sun Microsystems, Inc. Method and apparatus for bus bandwidth management
DE69533764T2 (de) * 1994-06-22 2005-12-01 Hewlett-Packard Development Co., L.P., Houston Verfahren zum Gebrauch von Speicherplatten unterschiedlicher Inhalte in einem Einzelvolumen einer hierarchischen Speicherplattenanordnung
US5623605A (en) 1994-08-29 1997-04-22 Lucent Technologies Inc. Methods and systems for interprocess communication and inter-network data transfer
US5615352A (en) 1994-10-05 1997-03-25 Hewlett-Packard Company Methods for adding storage disks to a hierarchic disk array while maintaining data availability
US6396480B1 (en) * 1995-07-17 2002-05-28 Gateway, Inc. Context sensitive remote control groups
US5930786A (en) * 1995-10-20 1999-07-27 Ncr Corporation Method and apparatus for providing shared data to a requesting client
US5948062A (en) 1995-10-27 1999-09-07 Emc Corporation Network file server using a cached disk array storing a network file directory including file locking information and data mover computers each having file system software for shared read-write file access
US5758188A (en) 1995-11-21 1998-05-26 Quantum Corporation Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal
US5758050A (en) * 1996-03-12 1998-05-26 International Business Machines Corporation Reconfigurable data storage system
US5742604A (en) 1996-03-28 1998-04-21 Cisco Systems, Inc. Interswitch link mechanism for connecting high-performance network switches
US6044444A (en) * 1996-05-28 2000-03-28 Emc Corporation Remote data mirroring having preselection of automatic recovery or intervention required when a disruption is detected
US6886035B2 (en) * 1996-08-02 2005-04-26 Hewlett-Packard Development Company, L.P. Dynamic load balancing of a network of client and server computer
US5949977A (en) * 1996-10-08 1999-09-07 Aubeta Technology, Llc Method and apparatus for requesting and processing services from a plurality of nodes connected via common communication links
US6202060B1 (en) 1996-10-29 2001-03-13 Bao Q. Tran Data management system
US6157935A (en) 1996-12-17 2000-12-05 Tran; Bao Q. Remote data access and management system
US5991891A (en) 1996-12-23 1999-11-23 Lsi Logic Corporation Method and apparatus for providing loop coherency
US6710786B1 (en) * 1997-02-03 2004-03-23 Oracle International Corporation Method and apparatus for incorporating state information into a URL
WO1998036585A2 (en) * 1997-02-18 1998-08-20 Northern Telecom Inc. Sponsored call and cell service
US5884038A (en) * 1997-05-02 1999-03-16 Whowhere? Inc. Method for providing an Internet protocol address with a domain name server
US6198479B1 (en) 1997-06-25 2001-03-06 Samsung Electronics Co., Ltd Home network, browser based, command and control
US6295584B1 (en) * 1997-08-29 2001-09-25 International Business Machines Corporation Multiprocessor computer system with memory map translation
US6385638B1 (en) * 1997-09-04 2002-05-07 Equator Technologies, Inc. Processor resource distributor and method
US7237036B2 (en) 1997-10-14 2007-06-26 Alacritech, Inc. Fast-path apparatus for receiving data corresponding a TCP connection
US6434620B1 (en) 1998-08-27 2002-08-13 Alacritech, Inc. TCP/IP offload network interface device
JPH11122301A (ja) * 1997-10-20 1999-04-30 Fujitsu Ltd アドレス変換接続装置
US6101559A (en) * 1997-10-22 2000-08-08 Compaq Computer Corporation System for identifying the physical location of one or more peripheral devices by selecting icons on a display representing the one or more peripheral devices
US5937169A (en) 1997-10-29 1999-08-10 3Com Corporation Offload of TCP segmentation to a smart adapter
US6081879A (en) * 1997-11-04 2000-06-27 Adaptec, Inc. Data processing system and virtual partitioning method for creating logical multi-level units of online storage
US6018779A (en) 1997-12-15 2000-01-25 Emc Corporation System for encapsulating a plurality of selected commands within a single command and transmitting the single command to a remote device over a communication link therewith
US6029168A (en) * 1998-01-23 2000-02-22 Tricord Systems, Inc. Decentralized file mapping in a striped network file system in a distributed computing environment
US6105122A (en) * 1998-02-06 2000-08-15 Ncr Corporation I/O protocol for highly configurable multi-node processing system
US6253273B1 (en) 1998-02-06 2001-06-26 Emc Corporation Lock mechanism
US6246683B1 (en) 1998-05-01 2001-06-12 3Com Corporation Receive processing with network protocol bypass
KR100272165B1 (ko) 1998-05-20 2000-11-15 윤종용 캐쉬 메모리 시스템 및 그의 운영 방법
US6330236B1 (en) 1998-06-11 2001-12-11 Synchrodyne Networks, Inc. Packet switching method with time-based routing
US6157955A (en) 1998-06-15 2000-12-05 Intel Corporation Packet processing system including a policy engine having a classification unit
US6260120B1 (en) 1998-06-29 2001-07-10 Emc Corporation Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement
US6542909B1 (en) * 1998-06-30 2003-04-01 Emc Corporation System for determining mapping of logical objects in a computer system
US6449607B1 (en) * 1998-09-11 2002-09-10 Hitachi, Ltd. Disk storage with modifiable data management function
US6330615B1 (en) 1998-09-14 2001-12-11 International Business Machines Corporation Method of using address resolution protocol for constructing data frame formats for multiple partitions host network interface communications
DE69836326T2 (de) 1998-09-18 2007-06-14 Alcatel Canada Inc., Kanata Verfahren zur zellularen Datenübertragung, Zelle, Kommunikationssystem und entsprechendes Netz-Endgerät
US6473774B1 (en) 1998-09-28 2002-10-29 Compaq Computer Corporation Method and apparatus for record addressing in partitioned files
JP4412685B2 (ja) 1998-09-28 2010-02-10 株式会社日立製作所 記憶制御装置及びこれを用いたデータ格納システムの取り扱い方法
US6618743B1 (en) * 1998-10-09 2003-09-09 Oneworld Internetworking, Inc. Method and system for providing discrete user cells in a UNIX-based environment
US6654891B1 (en) * 1998-10-29 2003-11-25 Nortel Networks Limited Trusted network binding using LDAP (lightweight directory access protocol)
US6502135B1 (en) 1998-10-30 2002-12-31 Science Applications International Corporation Agile network protocol for secure communications with assured system availability
US6571274B1 (en) * 1998-11-05 2003-05-27 Beas Systems, Inc. Clustered enterprise Java™ in a secure distributed processing system
US6360270B1 (en) * 1998-11-16 2002-03-19 Hewlett-Packard Company Hybrid and predictive admission control strategies for a server
FR2786892B3 (fr) * 1998-12-07 2000-12-29 Schneider Automation Coupleur d'automate programmable
JP2000242434A (ja) * 1998-12-22 2000-09-08 Hitachi Ltd 記憶装置システム
US6466571B1 (en) * 1999-01-19 2002-10-15 3Com Corporation Radius-based mobile internet protocol (IP) address-to-mobile identification number mapping for wireless communication
US6470342B1 (en) * 1999-03-12 2002-10-22 Compaq Computer Corporation Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps
IE20000203A1 (en) * 1999-03-25 2001-02-21 Converge Net Technologies Inc Storage domain management system
US6701432B1 (en) 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6401183B1 (en) * 1999-04-01 2002-06-04 Flash Vos, Inc. System and method for operating system independent storage management
US6487555B1 (en) 1999-05-07 2002-11-26 Alta Vista Company Method and apparatus for finding mirrored hosts by analyzing connectivity and IP addresses
US6275898B1 (en) * 1999-05-13 2001-08-14 Lsi Logic Corporation Methods and structure for RAID level migration within a logical unit
JP3685651B2 (ja) * 1999-06-04 2005-08-24 沖電気工業株式会社 相互接続装置及びアクティブQoSマッピング方法
US7206805B1 (en) * 1999-09-09 2007-04-17 Oracle International Corporation Asynchronous transcription object management system
JP4331835B2 (ja) 1999-09-22 2009-09-16 パナソニック株式会社 画像データ伝送方法
US7333451B1 (en) * 1999-10-18 2008-02-19 Nortel Networks Limited Buffer management for mobile internet protocol
US6732230B1 (en) * 1999-10-20 2004-05-04 Lsi Logic Corporation Method of automatically migrating information from a source to an assemblage of structured data carriers and associated system and assemblage of data carriers
US6711164B1 (en) * 1999-11-05 2004-03-23 Nokia Corporation Method and apparatus for performing IP-ID regeneration to improve header compression efficiency
JP2001160828A (ja) * 1999-12-03 2001-06-12 Matsushita Electric Ind Co Ltd セキュリティ・ゲートウェイ装置におけるvpn通信方法
US6389448B1 (en) 1999-12-06 2002-05-14 Warp Solutions, Inc. System and method for load balancing
JP3959583B2 (ja) * 1999-12-10 2007-08-15 ソニー株式会社 レコーディングシステム
JP2001166993A (ja) * 1999-12-13 2001-06-22 Hitachi Ltd 記憶制御装置およびキャッシュメモリの制御方法
AU2001231244A1 (en) * 2000-01-28 2001-08-07 Morphics Technology, Inc. A method of generating a configuration for a configurable spread spectrum communication device
FR2804816B1 (fr) 2000-02-03 2003-10-31 Gemplus Card Int Transport d'unites de protocole d'objet electronique portable par protocole pour peripheriques de micro- ordinateur
US6834326B1 (en) 2000-02-04 2004-12-21 3Com Corporation RAID method and device with network protocol between controller and storage devices
US7324228B2 (en) * 2000-02-25 2008-01-29 Hewlett-Packard Development Company, L.P. System and method for downloading and for printing data from an external content source
US6601101B1 (en) 2000-03-15 2003-07-29 3Com Corporation Transparent access to network attached devices
US6947430B2 (en) 2000-03-24 2005-09-20 International Business Machines Corporation Network adapter with embedded deep packet processing
US6882648B2 (en) * 2000-03-29 2005-04-19 Fujitsu Limited Communication device
US6629264B1 (en) 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
US7463582B2 (en) 2000-04-14 2008-12-09 Hughes Network Systems, Llc System and method for scaling a two-way satellite system
US6826561B2 (en) 2000-05-22 2004-11-30 Broadcom Corporation Method and apparatus for performing a binary search on an expanded tree
US7720928B2 (en) * 2000-06-02 2010-05-18 Hewlett-Packard Development Company, L.P. Centralized fine-grained enhancements for distributed table driven I/O mapping
JP4168574B2 (ja) 2000-06-02 2008-10-22 株式会社日立製作所 パケット転送装置、パケット転送制御方法、及びパケット転送装置の設定方法
US7051087B1 (en) * 2000-06-05 2006-05-23 Microsoft Corporation System and method for automatic detection and configuration of network parameters
US6681244B1 (en) 2000-06-09 2004-01-20 3Com Corporation System and method for operating a network adapter when an associated network computing system is in a low-power state
JP3890856B2 (ja) 2000-06-12 2007-03-07 ヤマハ株式会社 無線オーディオ機器
US6894976B1 (en) * 2000-06-15 2005-05-17 Network Appliance, Inc. Prevention and detection of IP identification wraparound errors
US6880064B1 (en) 2000-06-21 2005-04-12 Mosaid Technologies, Inc. Method and apparatus for physical width expansion of a longest prefix match lookup table
WO2002009458A2 (en) * 2000-07-24 2002-01-31 Bluesocket, Inc. Method and system for enabling seamless roaming in a wireless network
US6754662B1 (en) 2000-08-01 2004-06-22 Nortel Networks Limited Method and apparatus for fast and consistent packet classification via efficient hash-caching
US7278142B2 (en) 2000-08-24 2007-10-02 Veritas Operating Corporation Dynamic computing environment using remotely allocable resources
JP3555568B2 (ja) * 2000-09-04 2004-08-18 日本電気株式会社 Ip電話録音システム
US6928473B1 (en) * 2000-09-26 2005-08-09 Microsoft Corporation Measuring network jitter on application packet flows
US6854021B1 (en) * 2000-10-02 2005-02-08 International Business Machines Corporation Communications between partitions within a logically partitioned computer
US6853382B1 (en) * 2000-10-13 2005-02-08 Nvidia Corporation Controller for a memory system having multiple partitions
JP3522250B2 (ja) * 2000-10-27 2004-04-26 株式会社ソニー・コンピュータエンタテインメント パーティション作成方法および削除方法、プログラムを記録した記録媒体、情報処理装置
US6862648B2 (en) * 2000-10-30 2005-03-01 Sun Microsystems, Inc. Interface emulation for storage devices
US6978271B1 (en) 2000-10-31 2005-12-20 Unisys Corporation Mechanism for continuable calls to partially traverse a dynamic general tree
US6985956B2 (en) * 2000-11-02 2006-01-10 Sun Microsystems, Inc. Switching system
US6434683B1 (en) * 2000-11-07 2002-08-13 Storage Technology Corporation Method and system for transferring delta difference data to a storage device
ITBO20000653A1 (it) * 2000-11-14 2002-05-14 Sichera Di Sichera Gianni Metodo per l'inserimento di un foglio di copertina tra una pellicola trsparente e un contenitore con apertura a libro e dispositivo che attu
US6601135B1 (en) * 2000-11-16 2003-07-29 International Business Machines Corporation No-integrity logical volume management method and system
US7406523B1 (en) * 2000-11-21 2008-07-29 Microsoft Corporation Client-server communications system and method using a semi-connectionless protocol
US7065568B2 (en) 2000-11-30 2006-06-20 Microsoft Corporation System and method for managing states and user context over stateless protocols
US6757845B2 (en) 2000-11-30 2004-06-29 Bitmicro Networks, Inc. Method and apparatus for testing a storage device
US6876657B1 (en) 2000-12-14 2005-04-05 Chiaro Networks, Ltd. System and method for router packet control and ordering
US7234029B2 (en) * 2000-12-28 2007-06-19 Intel Corporation Method and apparatus for reducing memory latency in a cache coherent multi-node architecture
US7200641B1 (en) * 2000-12-29 2007-04-03 Emc Corporation Method and system for encoding SCSI requests for transmission using TCP/IP
JP3392828B2 (ja) * 2001-01-10 2003-03-31 株式会社東芝 分散処理システム、該システムにおける描画命令転送方法、及びコンピュータ読み取り可能な記憶媒体
WO2002057917A2 (en) * 2001-01-22 2002-07-25 Sun Microsystems, Inc. Peer-to-peer network computing platform
US7260633B2 (en) * 2001-01-25 2007-08-21 Microsoft Corporation System and method for processing requests from newly registered remote application consumers
US7203730B1 (en) * 2001-02-13 2007-04-10 Network Appliance, Inc. Method and apparatus for identifying storage devices
WO2002065329A1 (en) * 2001-02-14 2002-08-22 The Escher Group, Ltd. Peer-to peer enterprise storage
JP2002252880A (ja) 2001-02-26 2002-09-06 Sanyo Electric Co Ltd 液晶プロジェクタ
US7145866B1 (en) 2001-03-01 2006-12-05 Emc Corporation Virtual network devices
JP3470756B2 (ja) * 2001-03-06 2003-11-25 日本電気株式会社 主装置アドレス制限通知システム
JP3972596B2 (ja) 2001-04-20 2007-09-05 株式会社日立製作所 ディスクアレイシステム
US20020165978A1 (en) 2001-05-07 2002-11-07 Terence Chui Multi-service optical infiniband router
US20020184327A1 (en) 2001-05-11 2002-12-05 Major Robert Drew System and method for partitioning address space in a proxy cache server cluster
US7145919B2 (en) * 2001-06-01 2006-12-05 Telefonaktienbolaget Lm Ericsson (Publ) Method and apparatus for transporting different classes of data bits in a payload over a radio interface
US20030026246A1 (en) 2001-06-06 2003-02-06 Zarlink Semiconductor V.N. Inc. Cached IP routing tree for longest prefix search
US7613806B2 (en) * 2001-06-28 2009-11-03 Emc Corporation System and method for managing replication sets of data distributed over one or more computer systems
KR100392382B1 (ko) * 2001-07-27 2003-07-23 한국전자통신연구원 동적 크기 변경 및 메타 데이터 양의 최소화를 위한 논리볼륨 관리 방법
US7363310B2 (en) 2001-09-04 2008-04-22 Timebase Pty Limited Mapping of data from XML to SQL
US7437493B2 (en) * 2001-09-28 2008-10-14 Dot Hill Systems Corp. Modular architecture for a network storage controller
US20030069995A1 (en) 2001-10-05 2003-04-10 Fayette Brad K. Method and system for communicating among heterogeneous systems
US6775672B2 (en) * 2001-12-19 2004-08-10 Hewlett-Packard Development Company, L.P. Updating references to a migrated object in a partition-based distributed file system
US6772161B2 (en) * 2001-12-19 2004-08-03 Hewlett-Packard Development Company, L.P. Object-level migration in a partition-based distributed file system
US6775673B2 (en) * 2001-12-19 2004-08-10 Hewlett-Packard Development Company, L.P. Logical volume-level migration in a partition-based distributed file system
US7599360B2 (en) * 2001-12-26 2009-10-06 Cisco Technology, Inc. Methods and apparatus for encapsulating a frame for transmission in a storage area network
EP1329809B1 (en) 2002-01-18 2008-08-06 Hewlett-Packard Company, A Delaware Corporation Distributed computing system and method
US7283527B2 (en) * 2002-02-27 2007-10-16 International Business Machines Corporation Apparatus and method of maintaining two-byte IP identification fields in IP headers
US7539991B2 (en) * 2002-03-21 2009-05-26 Netapp, Inc. Method and apparatus for decomposing I/O tasks in a raid system
US7149769B2 (en) 2002-03-26 2006-12-12 Hewlett-Packard Development Company, L.P. System and method for multi-destination merge in a storage area network
US6912622B2 (en) * 2002-04-15 2005-06-28 Microsoft Corporation Multi-level cache architecture and cache management method for peer-to-peer name resolution protocol
US7188194B1 (en) * 2002-04-22 2007-03-06 Cisco Technology, Inc. Session-based target/LUN mapping for a storage area network and associated method
US6895461B1 (en) 2002-04-22 2005-05-17 Cisco Technology, Inc. Method and apparatus for accessing remote storage using SCSI and an IP network
US7146427B2 (en) 2002-04-23 2006-12-05 Lsi Logic Corporation Polling-based mechanism for improved RPC timeout handling
US20030202510A1 (en) 2002-04-26 2003-10-30 Maxxan Systems, Inc. System and method for scalable switch fabric for computer network
US20030204611A1 (en) 2002-04-29 2003-10-30 Mccosh John C. Communications tester and method of using same
US6732171B2 (en) * 2002-05-31 2004-05-04 Lefthand Networks, Inc. Distributed network storage system with virtualization
US7111303B2 (en) * 2002-07-16 2006-09-19 International Business Machines Corporation Virtual machine operating system LAN
US7263108B2 (en) * 2002-08-06 2007-08-28 Netxen, Inc. Dual-mode network storage systems and methods
US6741554B2 (en) * 2002-08-16 2004-05-25 Motorola Inc. Method and apparatus for reliably communicating information packets in a wireless communication network
US20040047367A1 (en) 2002-09-05 2004-03-11 Litchfield Communications, Inc. Method and system for optimizing the size of a variable buffer
JP4202709B2 (ja) * 2002-10-07 2008-12-24 株式会社日立製作所 ストレージ装置を有するネットワークにおける、ボリューム及び障害管理方法
US7152069B1 (en) 2002-10-15 2006-12-19 Network Appliance, Inc. Zero copy writes through use of mbufs
US7774466B2 (en) * 2002-10-17 2010-08-10 Intel Corporation Methods and apparatus for load balancing storage nodes in a distributed storage area network system
US7120666B2 (en) 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
US7616638B2 (en) * 2003-07-29 2009-11-10 Orbital Data Corporation Wavefront detection and disambiguation of acknowledgments
US8005918B2 (en) 2002-11-12 2011-08-23 Rateze Remote Mgmt. L.L.C. Data storage devices having IP capable partitions
US7170890B2 (en) * 2002-12-16 2007-01-30 Zetera Corporation Electrical devices with improved communication
US20040181476A1 (en) * 2003-03-13 2004-09-16 Smith William R. Dynamic network resource brokering
US20040184455A1 (en) * 2003-03-19 2004-09-23 Institute For Information Industry System and method used by a gateway for processing fragmented IP packets from a private network
US6904470B1 (en) * 2003-03-26 2005-06-07 Emc Corporation Device selection by a disk adapter scheduler
US7130975B2 (en) * 2003-06-27 2006-10-31 Hitachi, Ltd. Data processing system
JP4124348B2 (ja) * 2003-06-27 2008-07-23 株式会社日立製作所 記憶システム
US7526577B2 (en) * 2003-09-19 2009-04-28 Microsoft Corporation Multiple offload of network state objects with support for failover events
US7415018B2 (en) * 2003-09-17 2008-08-19 Alcatel Lucent IP Time to Live (TTL) field used as a covert channel
GB2406742B (en) 2003-10-03 2006-03-22 3Com Corp Switching fabrics and control protocols for them
US7436789B2 (en) 2003-10-09 2008-10-14 Sarnoff Corporation Ad Hoc wireless node and network
JP4397675B2 (ja) * 2003-11-12 2010-01-13 株式会社日立製作所 計算機システム
US7333994B2 (en) 2003-12-18 2008-02-19 Microsoft Corporation System and method for database having relational node structure
US20050166022A1 (en) * 2004-01-28 2005-07-28 Hitachi, Ltd. Method and apparatus for copying and backup in storage systems
KR100600862B1 (ko) * 2004-01-30 2006-07-14 김선권 인터넷상의 정보자원에 대한 접근 경로를 체계적으로수집하고 검색하는 방법, 및 이 방법을 실행할 수 있는컴퓨터 프로그램을 수록한 기록매체
US8990430B2 (en) * 2004-02-19 2015-03-24 Cisco Technology, Inc. Interface bundles in virtual network devices
US7447209B2 (en) 2004-03-09 2008-11-04 The University Of North Carolina Methods, systems, and computer program products for modeling and simulating application-level traffic characteristics in a network based on transport and network layer header information
JP2005265914A (ja) 2004-03-16 2005-09-29 Ricoh Co Ltd ズームレンズ、カメラおよび携帯情報端末装置
US7409494B2 (en) 2004-04-30 2008-08-05 Network Appliance, Inc. Extension of write anywhere file system layout
US7886299B2 (en) 2004-06-01 2011-02-08 Hitachi, Ltd. Method of dynamically balancing workload of a storage system
US20050270856A1 (en) 2004-06-03 2005-12-08 Inphase Technologies, Inc. Multi-level format for information storage
US8155117B2 (en) 2004-06-29 2012-04-10 Qualcomm Incorporated Filtering and routing of fragmented datagrams in a data network
US20060036602A1 (en) * 2004-08-13 2006-02-16 Unangst Marc J Distributed object-based storage system that stores virtualization maps in object attributes
US20060077902A1 (en) * 2004-10-08 2006-04-13 Kannan Naresh K Methods and apparatus for non-intrusive measurement of delay variation of data traffic on communication networks
US7564843B2 (en) * 2004-12-16 2009-07-21 International Business Machines Corporation Method, system and article for improved network performance by avoiding IP-ID wrap-arounds causing data corruption on fast networks
US7467189B2 (en) * 2005-01-21 2008-12-16 Microsoft Corporation Resource identifier zone translation
EP1861949A2 (en) * 2005-03-24 2007-12-05 Nokia Corporation Notification of a receiving device about a forthcoming transmission session
US20070101023A1 (en) * 2005-10-28 2007-05-03 Microsoft Corporation Multiple task offload to a peripheral device
US20070208760A1 (en) * 2006-03-06 2007-09-06 Reuter James M Data-state-describing data structures

Also Published As

Publication number Publication date
JP2009541854A (ja) 2009-11-26
WO2007149563A2 (en) 2007-12-27
CN101506779B (zh) 2012-01-04
CA2657221C (en) 2012-11-20
CN101506779A (zh) 2009-08-12
DE602007014366D1 (de) 2011-06-16
CA2657221A1 (en) 2007-12-27
WO2007149563A3 (en) 2008-08-14
EP2035933B1 (en) 2011-05-04
KR20090026342A (ko) 2009-03-12
ATE508414T1 (de) 2011-05-15
US20070168396A1 (en) 2007-07-19
US7743214B2 (en) 2010-06-22
EP2035933A4 (en) 2009-07-08
EP2035933A2 (en) 2009-03-18
KR101053967B1 (ko) 2011-08-04

Similar Documents

Publication Publication Date Title
JP5027877B2 (ja) ストレージシステム用コマンドの生成
JP5507670B2 (ja) ストライプ化ファイルシステムにおける能力平準化によるデータ分散
JP5026283B2 (ja) 協調的共用ストレージアーキテクチャ
JP5054531B2 (ja) 暫定的に設けられたデータコンテナから未使用空間を返還要求するシステム、及び方法
RU2302034C2 (ru) Многопротокольное устройство хранения данных, реализующее интегрированную поддержку файловых и блочных протоколов доступа
US7849274B2 (en) System and method for zero copy block protocol write operations
JP5068252B2 (ja) ストレージシステムクラスタの複数のボリュームにわたってデータコンテナをストライピングするためのデータ配置技術
EP1291755A2 (en) Storage system, a method of file data back up and a method of copying of file data
US11860791B2 (en) Methods for managing input-output operations in zone translation layer architecture and devices thereof
US9244822B2 (en) Automatic object model generation
JP2021168138A (ja) 複合集合体アーキテクチャー
US11966611B2 (en) Methods for handling storage devices with different zone sizes and devices thereof
US10782889B2 (en) Fibre channel scale-out with physical path discovery and volume move
WO2014077451A1 (ko) Iscsi 스토리지 시스템을 이용한 네트워크 분산 파일 시스템 및 방법
US10768834B2 (en) Methods for managing group objects with different service level objectives for an application and devices thereof
US12032830B2 (en) Host path selection utilizing address range distribution obtained from storage nodes for distributed logical volume
US20230350572A1 (en) Host path selection utilizing address range distribution obtained from storage nodes for distributed logical volume
US11481147B1 (en) Buffer allocation techniques
Gerasimov et al. Design and implementation of a block storage multi-protocol converter

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110516

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20110531

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110726

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111024

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120605

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120622

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5027877

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250