(57)【要約】記憶装置に格納された情報にアクセスするためのファイル・プロトコルおよびブロック・プロトコルを、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントとストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントの両方に対し、統一的方法でサービス提供するマルチプロトコル・ストレージ・アプライアンス。該アプライアンスのストレージ・オペレーティング・システムは、新規の仮想化モジュールと協働するファイルシステムを実施し、記憶装置によって提供された記憶空間を「仮想化」する仮想システムを提供する。特に、ファイルシステムは、記憶装置に格納された情報をブロック・アクセスをする際に使用されるボリューム管理機能を提供する。仮想化システムは、ファイルシステムが情報を名前付きのファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）ストレージ・オブジェクトとして論理編成できるようにし、ファイルやディレクトリに対するファイル単位のアクセスを可能にするとともに、ｖｄｉｓｋに対するブロック単位のアクセスを更に可能にすることにより、ＮＡＳアプライアンスとＳＡＮアプライアンスの統一的記憶方法を提供する。
2005535961.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置に格納された情報にアクセスするためのファイル・プロトコルおよびブロック・プロトコルを、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントと、ストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントとの両方に対し、統一的態様でサービス提供するように構成されたマルチプロトコル・ストレージ・アプライアンスであって、
仮想化モジュールと協働するファイルシステムを実施し、記憶装置によって提供される記憶空間を仮想化するように構成されたストレージ・オペレーティング・システムを含む、マルチプロトコル・ストレージ・アプライアンス。
【請求項２】
前記ファイルシステムは、情報をファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）として論理編成し、ファイルおよびディレクトリに対するファイル単位のアクセスを可能にするとともに、ｖｄｉｓｋに対するブロック単位のアクセスを可能にすることにより、ＮＡＳアプライアンスとＳＡＮアプライアンスの統一的記憶方法を提供する、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項３】
前記仮想化モジュールは、ｖｄｉｓｋモジュールと、ＳＣＳＩ（Small Computer Systems Interface）ターゲット・モジュールとを含む、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項４】
前記ｖｄｉｓｋモジュールは、ファイルシステム上に層として形成され、システム管理者によってマルチプロトコル・ストレージ・アプライアンスに発行されたコマンドに応答して、管理インタフェースによるアクセスを有効にする、請求項３に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項５】
前記管理インタフェースはユーザ・インタフェース（ＵＩ）を含む、請求項４に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項６】
前記ｖｄｉｓｋモジュールは、前記ＵＩを通じて発行された一連のｖｄｉｓｋコマンドを実行することにより、前記ＳＡＮデプロイメントを管理する、請求項５に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項７】
前記ｖｄｉｓｋコマンドは、原始的なファイルシステム処理に変換され、ファイルシステムおよびＳＣＳＩターゲット・モジュールに作用し、前記ｖｄｉｓｋを実施する、請求項６に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項８】
前記ＳＣＳＩターゲット・モジュールは、論理ユニット番号（ＬＵＮ）をｖｄｉｓｋに変換するマッピング手順を提供することにより、ディスクまたはＬＵＮのエミュレーションを開始する、請求項７に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項９】
前記ＳＣＳＩターゲット・モジュールは、ＳＡＮブロック空間と、ファイルシステム空間との間の変換層を提供する、請求項８に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１０】
前記ファイルシステムによる汎用空間管理に関し、前記仮想化記憶空間は、ＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトの共存を可能にする、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１１】
前記ファイルシステムは前記仮想化モジュールと協働して仮想化システムを提供し、前記仮想化記憶空間内に共存するＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトに信頼性保証を提供する、請求項１０に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１２】
前記ファイルシステムは、前記記憶装置に格納された情報に対してブロック単位のアクセスをする際に使用されるボリューム管理機能を提供する、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１３】
前記記憶装置はディスクである、請求項１２に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１４】
前記ファイルシステムは、(i)ストレージ・オブジェクトの名前付けなどのファイルシステム・セマンティックと、(ii)ボリューム・マネージャに関連する機能とを提供する、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１５】
前記ボリューム・マネージャに関連する機能は、
前記記憶装置を集める機能、
前記記憶装置の記憶帯域幅を集める機能、および
ミラーリングやＲＡＩＤ（Redundant Array of Independent Disks）などの信頼性保証機能、
のうちの少なくとも１つを含む、請求項１４に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１６】
マルチプロトコル・ストレージ・アプライアンスに接続された記憶装置上での情報の編成に関連するストレージ・サービスを提供するための方法であって、
マルチプロトコル・ストレージ・アプライアンス上で実行されているストレージ・オペレーティング・システムの仮想化モジュールと協働するファイルシステムを用いて、記憶装置によって提供される記憶空間を仮想化するステップと、
情報をファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）として前記仮想化記憶空間内に論理編成することにより、ネットワーク・アタッチド・ストレージ（ＮＡＳ）とストレージ・エリア・ネットワーク（ＳＡＮ）の統一的記憶方法を提供し、前記仮想化記憶空間内の前記ファイルシステムによる汎用空間管理に関し、前記オブジェクトの共存を可能にするステップと、
前記マルチプロトコル・ストレージ・アプライアンスの統合型ネットワーク・プロトコル・スタックによって提供されたデータ・パスを介し、ブロック・アクセス・プロトコルおよびファイル・アクセス・プロトコルを用いて、前記記憶装置に論理編成されて格納された情報にアクセスするステップと、
からなる方法。
【請求項１７】
前記仮想化記憶空間内に共存する前記ファイル、ディレクトリおよび仮想オブジェクトに対して信頼性保証を与えるステップをさらに含む、請求項１６に記載の方法。
【請求項１８】
マルチプロトコル・ストレージ・アプライアンスに接続された記憶装置上に格納される情報の編成に関連するストレージ・サービスを提供するように構成された、マルチプロトコル・ストレージ・アプライアンスのストレージ・オペレーティング・システムであって、
前記マルチプロトコル・ストレージ・アプライアンスに格納された情報をクライアントがブロック・アクセス・プロトコルおよびファイル・アクセス・プロトコルを用いてアクセスするためのデータ・パスを提供する統合型ネットワーク・プロトコル・スタックと、
仮想化モジュールと協働し、前記記憶装置によって提供される記憶空間を仮想化するファイルシステムと、
からなるストレージ・オペレーティング・システム。
【請求項１９】
前記ファイルシステムは、情報をファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）として論理編成することにより、ファイル単位のアクセス・プロトコルと、ブロック単位のアクセス・プロトコルとを用いた、ネットワーク・アタッチド・ストレージ（ＮＡＳ）アプライアンスとストレージ・エリア・ネットワーク（ＳＡＮ）の統一的方法を提供する、請求項１８に記載のストレージ・オペレーティング・システム。
【請求項２０】
前記ブロック単位のアクセス・プロトコルは、「ＳＣＳＩ  ｅｎｃａｐｕｓｕｌａｔｅｄ  ｏｖｅｒ  ＴＣＰ」（ｉＳＣＳＩ）および「ＳＣＳＩ  ｅｎｃａｐｕｓｕｌａｔｅｄ  ｏｖｅｒ  Ｆｉｂｅｒ  Ｃｈａｎｎｅｌ」（ＦＣＰ）のようなＳＣＳＩ（Small Computer Systems Interface）系プロトコルを含む、請求項１９に記載のストレージ・オペレーティング・システム。
【請求項２１】
前記統合型ネットワーク・プロトコル・スタックは、
ネットワーク・プロトコル層と、
前記ネットワーク・プロトコル層に作用し、前記ファイルシステムによって編成されたファイルおよびディレクトリに対するファイル単位のプロトコル・アクセスを提供するファイルシステム・プロトコル層と、
前記ネットワーク・プロトコル層を介して配置され、前記ファイルシステムによって編成されたｖｄｉｓｋに対するブロック単位のプロトコル・アクセスを提供するｉＳＣＳＩドライバと、
を含む、請求項２０に記載のストレージ・オペレーティング・システム。
【請求項２２】
前記統合型ネットワーク・プロトコル・スタックは、前記ファイルシステム・プロトコル層のファイル・アクセス・プロトコルに対する直接アクセス搬送機能を提供する仮想インタフェース層をさらに含む、請求項２１に記載のストレージ・オペレーティング・システム。
【請求項２３】
前記統合型ネットワーク・プロトコル・スタックは、前記ファイルシステムによって編成されたｖｄｉｓｋにアクセスするためのブロックアクセス要求を送受信するように構成されたファイバ・チャネル（ＦＣ）ドライバをさらに含む、請求項２１に記載のストレージ・オペレーティング・システム。
【請求項２４】
前記ＦＣドライバおよびｉＳＣＳＩドライバは、前記ｖｄｉｓｋに対してＦＣ特有のアクセス制御およびｉＳＣＳＩ特有のアクセス制御を提供し、マルチプロトコル・ストレージ・アプライアンス上のｖｄｉｓｋにアクセスするときに、ｉＳＣＳＩおよびＦＣＰに対するｖｄｉｓｋのエクスポートの管理を提供する、請求項２３に記載のストレージ・オペレーティング・システム。
【請求項２５】
マルチプロトコル・ストレージ・アプライアンスの記憶装置に格納された情報にアクセスするためのファイル・プロトコルおよびブロック・プロトコルを、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントと、ストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントとの両方に対し、統一的態様でサービス提供する方法であって、
(i)前記アプライアンスを第１のネットワークに接続するネットワーク・アダプタと、(ii)ＮＡＳクライアントがファイルとして格納された情報にアクセスするために発行したファイル単位の要求に対し、前記アプライアンスが応答できるようにするためのファイルシステム機能とを用いて、ＮＡＳサービスを提供するステップと、
(i)前記アプライアンスを第２のネットワークに接続するネットワーク・アダプタと、ＳＡＮクライアントが仮想ディスク（ｖｄｉｓｋ）として格納された情報にアクセスするために発行したブロックベースの要求に対し、前記アプライアンスが応答できるようにするためのボリューム管理機能とを用いて、ＳＡＮサービスを提供するステップと、
からなる方法。
【請求項２６】
前記マルチプロトコル・ストレージ・アプライアンスに格納されたファイルおよびｖｄｉｓｋの名前による管理を提供することにより、ファイル単位およびブロック単位のストレージに対して一様な名前付けを提供するステップと、
前記記憶装置に格納された名前付きファイルおよびｖｄｉｓｋの階層構造を提供するステップと、
【請求項２７】
マルチプロトコル・ストレージ・アプライアンスの記憶装置に格納されたストレージ・オブジェクトにアクセスするためのファイル・プロトコルおよびブロック・プロトコルを、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントと、ストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントとの両方に対し、統一的態様でサービス提供する方法であって、
前記記憶装置を汎用記憶空間内を表す１以上のボリュームとして編成するステップと、
前記汎用記憶空間内でのＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトの共存を可能にするステップと、
前記ストレージ・アプライアンスのマルチプロトコル・エンジンにおいて、前記ＳＡＮストレージ・オブジェクトおよび前記ＮＡＳストレージ・オブジェクトにアクセスするためのブロック単位の要求およびファイル単位の要求を受信するステップと、
前記ブロック単位の要求およびファイル単位の要求に応答して、前記ＳＡＮストレージ・オブジェクトおよびＮＡＳストレージ・オブジェクトにアクセスし、それらを返すステップと、
からなる方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ・システムに関し、詳しくは、ファイル・プロトコルとブロック・プロトコルをサポートするマルチプロトコル・ストレージアプライアンスに関する。
【背景技術】
【０００２】
ストレージ・システムとは、メモリ、テープ、ディスクのような書き込み可能な持続性記憶装置における情報編成に関するストレージサービスを提供するコンピュータである。ストレージ・システムは一般に、ストレージ・エリア・ネットワーク（ＳＡＮ）環境や、ネットワーク・アタッチド・ストレージ（ＮＡＳ）環境に配置される。ＮＡＳ環境で使用される場合、ストレージ・システムはオペレーティングシステムを含むファイルサーバとして実施され、情報をディレクトリやファイルの階層構造として（例えばディスク上に）論理編成するファイルシステムを実施する。「ディスク上」の各ファイルは、ファイルの実際のデータ等の情報を格納するように構成された、例えばディスクブロックのような一連のデータ構造として実施される。一方、ディレクトリは、他のファイルやディレクトリに関する情報を格納する特別な形のファイルとして実施される。
【０００３】
さらに、ファイルサーバまたはファイラは、クライアント／サーバモデルの情報配送に従って動作するように構成される。そのため、多数のクライアントシステム（クライアント）が、ファイラに格納されたファイル等の共有リソースにアクセスすることができる。ファイルの共有はＮＡＳシステムの特徴であり、これはファイルやファイルシステムに対する意味レベルのアクセスによって実施される。ＮＡＳシステム上の情報ストレージは一般に、地理的に分散されたイーサネット（登録商標）のような相互接続通信リンクの集まりを含むコンピュータネットワーク全体にわたって配置される。クライアントは一般に、ＴＣＰ／ＩＰのような所定のプロトコルに従って個々のデータフレームやデータパケットをやり取りすることによってファイラと通信する。
【０００４】
クライアント／サーバモデルの場合、クライアントは、ポイント・ツー・ポイントリンク、共有ローカルエリアネットワーク、ワイドエリアネットワーク、あるいはインターネット等の公共ネットワーク上に実施された仮想私設ネットワークなどのコンピュータネットワークを介してクライアントをファイラに「接続」するためのアプリケーションを、コンピュータ上で実行している。ＮＡＳシステムは一般に、ファイル単位のアクセス・プロトコルを使用している。従って各クライアントは、アクセスしたい１以上のファイルをそのデータがディスク上に格納されている位置（例えばブロック）とは無関係に識別し、ネットワークを介してファイルシステム・プロトコル・メッセージを（パケットの形で）ファイルシステムに発行することにより、ファイラにサービスを要求する。従来のＣＩＦＳ(Common Internet File System）プロトコル、ＮＦＳ（Network File System）プロトコル、ＤＡＦＳ（Direct Access File System）プロトコルといった複数のファイルシステムプロトコルをサポートするために、クライアントと通信するファイラの機能は拡張される場合もある。
【０００５】
ＳＡＮは、ストレージ・システムと該ストレージ・システムが有する記憶装置との間にダイレクト接続を確立することが可能な高速ネットワークである。ＳＡＮは、ストレージ・バスに対する拡張のように見える。そのため、ストレージ・システムのオペレーティングシステムは、「拡張バス」を介して、ブロック単位のアクセス・プロトコルにより、格納された情報にアクセスすることができる。その場合、拡張バスは一般に、「ＳＣＳＩ  ｅｎｃａｐｓｕｌａｔｅｄ  ｏｖｅｒ  ＦＣ」または「ＳＣＳＩ  ｅｎｃａｐｓｕｌａｔｅｄ  ｏｖｅｒ  ＴＣＰ／ＩＰ／Ｅｔｈｅｒｎｅｔ」のようなブロックアクセスプロトコルを用いて動作するように構成されたファイバチャネル（ＦＣ）またはイーサネット（登録商標）媒体（すなわちネットワーク）として実施される。
【０００６】
ＳＡＮ構成すなわちＳＡＮデプロイメントでは、アプリケーションサーバ等のストレージ・システムからストレージを切り離し、ある程度の情報ストレージをアプリケーションサーバレベルで共有することができる。しかしながら、ＳＡＮが１つのサーバに対して専用になっている環境もある。ＳＡＮ環境の中には、情報をデータベース形態に編成するものもあれば、ファイル単位の編成を使用するものもある。情報がファイルとして編成される場合、情報を要求するクライアントは、ファイルマッピングを保持し、ファイルセマンティックを管理するとともに、その要求（およびサーバ応答）をディスク上のブロックアドレスによって、例えば論理ユニット番号（ＬＵＮ）によってアドレス指定する。
【０００７】
従来の方法は一般に、２つの異なる手法を用いてＳＡＮ環境とＮＡＳ環境に対処する。両方の環境に対して１つの手法を提供するそれらの方法の場合、ＮＡＳ機能は通常、ＳＡＮストレージ・プラットフォームに取り付けられた例えば「サイドカー」デバイスを用いて、ＳＡＮストレージ・プラットフォーム上に配置される。しかしながら、それらの従来システムは通常、ストレージをＳＡＮストレージ・ドメインとＮＡＳストレージ・ドメインのそれぞれに分割してしまう。すなわち、ＳＡＮドメインの記憶空間とＮＡＳドメインの記憶空間が共存することはなく、それらが、例えばユーザ（システム管理者）によって実施される構成プロセスにより物理的に区分される。
【０００８】
そのような従来システムの一例は、ＥＭＣ（登録商標）社から市販されているＳｙｍｍｅｔｒｉｘ（登録商標）  ｓｙｓｔｅｍプラットフォームである。大まかに言えば、ＳＡＮストレージ・システム（Ｓｙｍｍｅｔｒｉｘ  ｓｙｓｔｅｍ）の個々のディスクは、ＮＡＳ・サイドカー・デバイス（例えば、Ｃｅｌｅｒｒａ（登録商標）デバイス）に割り当てられ、次いでそれらのディスクが、例えばＮＦＳプロトコルやＣＩＦＳプロトコルによってＮＡＳクライアントにエクスポートされる。システム管理者は、「ユーザ定義ボリューム」を構築するために集めるそれらのディスクの「スライス」（エクステント）の位置およびディスク数を決定した後、それらのボリュームをどう使うかを決定する。従来からＳＡＮ環境で使用されている「ボリューム」という用語は、物理ディスクと、それらのディスク内のエクステントとを指定し、それらのエクステント／ディスクをユーザ定義ボリュームエンティティに結合させる処理によって構築されたストレージ・エンティティを意味する。注意すべき点は、ユーザ定義ボリュームを含むＳＡＮ系ディスクとＮＡＳ系ディスクとが、システムプラットフォーム内で物理的に区分される点である。
【０００９】
一般にシステム管理者は、その決定を、システムの基礎物理態様に関する知識を有するユーザ向けの複雑なユーザ・インタフェースを通じて実施する。つまり、クライアントに代わってＳＡＮプラットフォームのビューを提供するために、システム管理者がユーザ・インタフェースで操作しなければならないものは、物理的ディスク構造や管理が中心となる。例えば、ユーザ・インタフェースは、物理ディスクの指定を促すとともに、ユーザ定義ボリュームを構築するのに必要とされるそれらのディスク内のエクステントのサイズの指定を促す場合がある。さらに、ユーザ・インタフェースは、そうしたエクステントやディスクの物理的位置の指定を促すだけでなく、それらを「相互接合」（編成）し、それらをディスクまたはＬＵＮに対応するユーザ定義ボリュームとしてＳＡＮクライアントから見えるようにする（エククスポートする）態様の指定を促す。物理ディスクおよびそれらのエクステントが選択され、ボリュームが構築された後、それらのディスク／エクステントだけが、そのボリュームを含む。システム管理者は、構築されたボリュームに対し、信頼性の形、例えば、ＲＡＩＤ（Redundant Array of Independent Disks）保護レベルおよび／またはミラーリングなどをさらに指定しなければならない。そして、ＲＡＩＤグループが、それらの選択されたディスク／エクステントの最上部に置かれる。
【００１０】
要するに、従来システムの方法では、システム管理者が、ディスクの物理レイアウトやディスクの編成を詳細に設定し、ＳＡＮクライアントに対して１つのＬＵＮとしてエクスポートされるユーザ定義ボリュームを作成しなければならない。この従来の方法に関連する管理はすべて、物理ディスク単位で行なわれる。システム管理者がユーザ定義ボリュームのサイズを拡大する場合、ディスクを追加し、ボリュームを構成するディスクに格納されたデータに関連する冗長情報を含めるようにＲＡＩＤ計算を再計算する。明らかに、これは複雑でコストのかかる方法である。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、ＳＡＮストレージ環境およびＮＡＳストレージ環境に対し、簡単で効率的な統合型ソリューションを提供することを目的としている。
【課題を解決するための手段】
【００１２】
本発明は、記憶装置に格納された情報にアクセスするためのファイル・プロトコルおよびブロック・プロトコルを、ネットワーク・アタッチド・ストレージ（ＮＡＳ）環境とストレージ・エリア・ネットワーク（ＮＡＳ）環境の両方に対し、統一された態様でサービス提供するマルチプロトコル・ストレージ・アプライアンスに関する。このアプライアンスのストレージ・オペレーティングシステムは、新規の仮想化モジュールと協働するファイルシステムを実施し、記憶装置によって提供される記憶空間を「仮想化」する仮想化システムを提供する。特に、ファイルシステムは、記憶装置に格納された情報に対するブロック単位のアクセスに使用されるボリューム管理機能を提供する。仮想化システムは、ファイルシステムが、情報を名前付きのファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）・ストレージ・オブジェクトとして論理編成できるようにし、ファイルやディレクトリに対するファイル単位のアクセスを可能にすると同時に、ｖｄｉｓｋに対するブロック単位のアクセスをさらに可能にすることにより、ＮＡＳアプライアンスとＳＡＮアプライアンスの統一的記憶方法を提供する。
【００１３】
実施例において、仮想化モジュールは、例えばｖｄｉｓｋモジュールおよびＳＣＳＩ（Small Computer Systems Interface)ターゲット・モジュールとして実施される。ｖｄｉｓｋモジュールは、ブロックベースのＳＣＳＩターゲット・モジュールからファイルシステムによって管理されるブロックへのデータ・パスを提供する。また、ｖｄｉｓｋモジュールは、システム管理者によってマルチプロトコル・ストレージ・アプライアンスに発行されたコマンドに応答し、ファイルシステムに作用し、簡易ユーザ・インタフェース（ＵＩ）などの管理インタフェースによるアクセスを有効にする。さらに、ｖｄｉｓｋ管理モジュールは、とりわけ、システム管理者によってＵＩを通じて発行された一連のｖｄｉｓｋコマンドを実行することにより、ＳＡＮデプロイメントを管理する。それらのｖｄｉｓｋコマンドは原始的なファイルシステム処理に変換され、ファイルシステムおよびＳＣＳＩターゲット・モジュールに作用し、ｖｄｉｓｋを実施する。
【００１４】
次にＳＣＳＩターゲット・モジュールは、アクセス要求に対する応答として、アクセス要求の中で指定されたＬＵＮに対する論理ブロックアクセスをｖｄｉｓｋに対する仮想ブロックアクセスに変換し、ｖｄｉｓｋをＬＵＮに変換する。次にＳＣＳＩターゲット・モジュールは、ＳＡＮブロック（ＬＵＮ）空間と、ＬＵＮがブロックとして表現されるファイルシステム空間との間の、仮想化システムの変換層として機能する。ＳＡＮ仮想化をファイルシステム上に「配置」することにより、マルチプロトコル・ストレージ・アプライアンスは、従来のシステムで行なわれている方法を逆にすることにより、実質的に全てのストレージ・アクセス・プロトコルについて単一の統一されたストレージプラットフォームを提供する。
【００１５】
有利なことに、統合型マルチプロトコル・ストレージ・アプライアンスは、データの完全性を維持しつつ、アクセス制御を提供し、適当であれば、全てのプロトコルについてファイルおよびｖｄｉｓｋの共有を提供する。さらに、ストレージ・アプライアンスは、ＮＡＳストレージ・オブジェクトやＳＡＮストレージ・オブジェクトを作成するときにユーザがストレージリソースを配分する必要性を無くす埋め込み型／一体型仮想化機能を提供する。それらの機能は、アプライアンス内の汎用空間管理に関し、ＳＡＮオブジェクトとＮＡＳオブジェクトとを共存させることが可能な仮想化記憶空間を含む。さらに、統合型マルチプロトコル・ストレージ・アプライアンスは、同一ディスクに対する複数のブロックアクセスプロトコルの同時サポートを提供するだけでなく、クラスタリングをサポートする異種のＳＡＮ環境も提供する。
【００１６】
本発明の上記の利点およびその他の利点は、添付の図面とともに下記の説明を参照することで、さらによく理解できるであろう。図中、同一の参照符号は、同一要素または機能的に類似の要素を指している。
【発明を実施するための最良の形態】
【００１７】
本発明は、記憶装置に格納された情報にアクセスするためのファイル・プロトコルおよびブロックプロトコルを、統一的態様でサービス提供するマルチプロトコル・ストレージ・アプライアンスに関する。これに関し、統合型マルチプロトコル・アプライアンスとは、ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントやストレージ・エリア・ネットワーク（ＳＡＮ）のユーザ（システム管理者）およびクライアントにとって記憶空間が再利用可能であることを含めて、ストレージ・サービスの管理が容易であることや、記憶装置の再構成が簡単であること等の特徴を有するコンピュータを意味する。ストレージ・アプライアンスは、ファイルシステムを通してＮＡＳサービスを提供するとともに、ＳＡＮ仮想化を通じて論理ユニット番号（ＬＵＮ）のエミュレーションを含むＳＡＮサービスを提供する。
【００１８】
図１は、ディスク１３０などの記憶装置上での情報編成に関するストレージ・サービスを提供するように構成されたマルチプロトコル・ストレージ・アプライアンス１００を示す略ブロック図である。ストレージ・アプライアンス１００は例えば、システム・バス１２３によって相互接続された、プロセッサ１２２、メモリ１２４、複数のネットワーク・アダプタ１２５，１２６、ストレージ・アダプタ１２８を含むストレージ・システムとして実施される。また、マルチプロトコル・ストレージ・アプライアンス１００は、情報を名前付きのディレクトリ、ファイルおよび仮想ディスク（ｖｄｉｓｋ）・ストレージ・オブジェクトの階層構造としてディスク１３０上に論理編成する仮想化システム（および、特にファイルシステム）として機能するストレージ・オペレーティング・システム２００をさらに含む。
【００１９】
ＮＡＳ系ネットワーク環境のクライアントは、ファイルの視点からストレージを見るのに対し、ＳＡＮ系ネットワーク環境のクライアントは、ブロックまたはディスクの視点からストレージを見る。そのため、マルチプロトコル・ストレージ・アプライアンス１００は、ＬＵＮまたはｖｄｉｓｋオブジェクトを作成することにより、ディスクをＳＡＮクライアントに見せる（エクスポートする）。ｖｄｉｓｋオブジェクト（以下「ｖｄｉｓｋ」）は、仮想化システムによって実施される特殊なファイルタイプであり、ＳＡＮクライアントから見るとエミュレート・ディスクとして解釈される。後で詳しく説明するように、マルチプロトコル・ストレージ・アプライアンスは、エクスポートを制御することにより、ＳＡＮクライアントがそれらのエミュレート・ディスクにアクセスできるようにする。
【００２０】
図示の実施形態において、メモリ１２４は、本発明に関係するソフトウェアプログラムやデータ構造を格納するための、プロセッサやアダプタによってアドレス指定可能な複数の格納場所を有する。そして、プロセッサおよびアダプタは、ソフトウェアプログラムを実行し、データ構造を操作するように構成された処理要素および／または論理回路を含む。ストレージ・オペレーティング・システム２００の一部は通常、メモリに常駐し、それらの処理要素によって実行され、特に、ストレージ・アプライアンスによって実施されるストレージサービスを支える記憶処理を実施することにより、ストレージ・アプライアンスの機能を構成する。本明細書に記載されている本発明のシステムおよび方法に関係するプログラム命令を記憶または実行するために、他の処理手段や、種々のコンピュータ読取可能媒体のような他の記憶手段を使用してもよいことは、当業者にとって明らかであろう。
【００２１】
ネットワークアダプタ１２５は、以下で例示的なイーサネット（登録商標）ネットワーク１６５と呼ぶポイント・ツー・ポイントリンク、ワイドエリアネットワーク、公共ネットワーク上で実施される仮想私設ネットワーク、または共有ローカルエリアネットワークを介して、ストレージ・アプライアンスを複数のクライアント１６０ａ，１６０ｂに接続する。従って、ネットワークアダプタ１２５は、ストレージ・アプライアンスを従来のイーサネット（登録商標）・スイッチ１７０のようなネットワークスイッチに接続するために必要となる機械的電気的信号回路を備えたネットワークインタフェースカード（ＮＩＣ）を含む。このＮＡＳ系ネットワーク環境の場合、クライアントは、マルチプロトコル・ストレージ・アプライアンス上にファイルとして格納された情報にアクセスするように構成される。クライアント１６０は、ＴＣＰ／ＩＰのような所定のプロトコルに従って個々のデータフレームまたはデータパケットをやり取りすることにより、ネットワーク１６５を介してストレージ・アプライアンスと通信する。
【００２２】
クライアント１６０は、ＵＮＩＸ（登録商標）やＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）のような種々のオペレーティング・システム上でアプリケーションを実行するように構成された汎用コンピュータであってよい。クライアント・システムは一般に、ＮＡＳ系ネットワークを介して（ファイルやディレクトリの形の）情報にアクセスする場合、ファイル単位のアクセス・プロトコルを使用する。従って、各クライアント１６０は、ネットワーク１６５を介してファイル・アクセス・プロトコル・メッセージを（パケットの形で）ストレージ・アプライアンス１００に発行することにより、ストレージ・プライアンスにサービスを要求する。例えば、Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システムを実行しているクライアント１６０ａは、「ＣＩＦＳ ｏｖｅｒ  ＴＣＰ／ＩＰ」プロトコルを用いてストレージ・アプライアンス１００と通信することができる。一方、ＵＮＩＸオペレーティング・システムを実行しているクライアント１６０ｂは、「ＮＦＳ  ｏｖｅｒ  ＴＣＰ／ＩＰ」プロトコルを用いて、若しくは「ＲＤＭＡ  ｏｖｅｒ  ＶＩ」プロトコルに従って転送を行なう「ＤＡＦＳ  ｏｖｅｒ  ＶＩ」プロトコルを用いて、マルチプロトコル・ストレージ・アプライアンスと通信することができる。他のタイプのオペレーティング・システムを実行する他のクライアントが、他のファイル・アクセス・プロトコルを用いて統合型マルチプロトコル・ストレージ・アプライアンスと通信することも可能であることは、当業者にとって明らかであろう。
【００２３】
ストレージ・ネットワーク・「ターゲット」・アダプタ１２６も、マルチプロトコル・ストレージ・アプライアンス１００をクライアント１６０に接続する。クライアント１６０はさらに、ブロックまたはディスクとして格納された情報にアクセスするように構成される場合もある。ＳＡＮ系ネットワーク環境の場合、ストレージ・アプライアンスは、ファイバ・チャネル（ＦＣ）・ネットワーク１８５に接続される。ＦＣとは、ＳＡＮデプロイメントで主に使用される適当なプロトコルや媒体が記載されているネットワーク規格である。ネットワーク・ターゲット・アダプタ１２６は、ストレージ・アプライアンス１００を従来のＦＣスイッチ１８０のようなＳＡＮ・ネットワーク・スイッチに接続するために必要となる機械的電気的信号回路を備えたＦＣホストバスアダプタ（ＨＢＡ）を含む。ＦＣ  ＨＢＡは、ＦＣアクセスを可能にするだけでなく、ストレージ・アプライアンスのファイバ・チャネル・ネットワーク処理動作の負荷も軽減する。
【００２４】
クライアント１６０は一般に、ＳＡＮ系ネットワークを介して情報にアクセスするときにＳＣＳＩプロトコルのようなブロック単位のアクセス・プロトコルを使用する。ＳＣＳＩは、装置に依存しない標準的プロトコルを備えた周辺装置入出力（Ｉ／Ｏ）インタフェースであり、ディスク１３０のような種々の周辺装置をストレージアプライアンス１００に接続できるようにする。ＳＡＮ環境で動作するクライアント１６０は、ＳＣＳＩ用語で「イニシエータ」と呼ばれ、データの要求やコマンドを開始する。従って、マルチプロトコル・ストレージ・アプライアンスは、要求／応答プロトコルに従ってイニシエータによって発行された要求に応答するように構成された「ターゲット」である。ＦＣプロトコルによれば、イニシエータおよびターゲットは、終点アドレスを有し、ワールド・ワイド・ネーム（ＷＷＮ）を有する。ＷＷＮは一意の識別子であり、例えば８バイトの数からなるノード名またはポート名である。
【００２５】
マルチプロトコル・ストレージ・アプライアンス１００は、「ＳＣＳＩ  ｅｎｃａｐｓｕｌａｔｅｄ  ｏｖｅｒ  ＴＣＰ（ｉＳＣＳＩ）」や、「ＳＣＳＩ  ｅｎｃａｐｓｕｌａｔｅｄ  ｏｖｅｒ  ＦＣ（ＦＣＰ）」のような、ＳＡＮ環境で使用される種々のＳＣＳＩ系のプロトコルをサポートする。従って、イニシエータ（以下、クライアント１６０）は、ネットワーク１８５を介してｉＳＣＳＩメッセージやＦＣＰメッセージを発行することにより、ターゲット（以下、ストレージ・アプライアンス１００）にサービスを要求し、ディスク上に格納された情報にアクセスする。クライアントが他のブロック・アクセス・プロトコルを用いて一体化マルチプロトコル・ストレージ・アプライアンスにサービスを要求してもよいことは、当業者にとって明らかであろう。マルチプロトコル・ストレージ・アプライアンスは、複数のブロック・アクセス・プロトコルをサポートすることで、異種のＳＡＮ環境においても、ｖｄｉｓｋ／ＬＵＮに対する統一的で一貫性のあるアクセス方法を提供することができる。
【００２６】
ストレージ・アダプタ１２８は、ストレージ・アプライアンス上で実行されているストレージ・オペレーティング・システム２００と協働し、クライアントから要求された情報を取得する。この情報は、ディスク１３０に格納されている場合もあれば、情報を格納するように構成された他の似たような媒体に格納されている場合もある。ストレージ・アダプタは、従来の高性能ＦＣシリアルリンクトポロジのようなＩ／Ｏ相互接続構成を介してストレージ・アダプタをディスクに接続するためのＩ／Ｏインタフェースを有する。情報は、ストレージ・アダプタによって取得された後、システム・バス１２３を介してネットワーク・アダプタ１２５、１２６に転送される前に、必要に応じてプロセッサ１２２（若しくはアダプタ１２８自体）によって処理される。そしてネットワーク・アダプタ１２５、１２６は、その情報をパケットまたはメッセージの形にフォーマットし、クライアントに返送する。
【００２７】
アプライアンス１００に対する情報の格納は、ディスク空間の全体的論理構成を定義しつつ、物理ストレージディスク１３０の集まりからなる１以上のストレージボリューム（例えば、ＶＯＬ１〜２  １５０）として実施することが好ましい。ボリューム内のディスクは通常、１以上のＲＡＩＤグループに編成される。ＲＡＩＤ実施形態は、ＲＡＩＤグループ内の所与の数の物理ディスクにわたってデータを「ストライプ」状に書き込み、さらにそのストライプ状のデータに関する冗長情報を適当に記憶することによって、データ記憶の信頼性／完全性を向上させる。記憶装置が故障した場合でも、冗長情報によって、失われたデータを復元することが可能になる。本発明に従ってミラーリング等の他の冗長技術を使用することも可能であることは、当業者にとって明らかであろう。
【００２８】
具体的には、各ボリューム１５０は、ＲＡＩＤグループ１４０、１４２、１４４として編成された物理ディスク１３０のアレイから構成される。ＲＡＩＤ４レベル構成の場合、各ＲＡＩＤグループの物理ディスクは、ストライプ・データ（Ｄ）を格納するように構成された物理ディスクと、それらのデータのパリティ（Ｐ）を格納するように構成された物理ディスクとを含む。ただし、他のＲＡＩＤレベル構成（例えば、ＲＡＩＤ５など）も可能であるものと考えられる。図示の実施形態では、１台のパリティディスクと、１台のデータディスクとからなる最小構成を採用する場合がある。しかしながら、典型的な実施形態は、１つのＲＡＩＤグループ当たり３台のデータディスクと１台のパリティディスクとを含み、１つのボリューム当たり少なくとも１つのＲＡＩＤグループを含む実施形態であろう。
【００２９】
ディスク１３０に対するアクセスを容易にするために、ストレージ・オペレーティング・システム２００は、新規の仮想化システムのＷｒｉｔｅ−ａｎｙｗａｒｅファイルシステムを実施し、ディスク１３０によって提供される記憶空間を「仮想化」する機能を提供する。ファイルシステムは、情報を名前付きのディレクトリおよびファイル・オブジェクト（以下、「ディレクトリ」および「ファイル」）の階層構造としてディスク上に編成する。「ディスク上」の各ファイルは、データ等の情報を格納するように構成された一連のディスク・ブロックとして実施される一方、ディレクトリは、他のファイルまたはディレクトリの名称や、それらに対するリンクを格納する特別な形のファイルとして実施される。仮想化システムは、ファイルシステムが、情報を名前付きｖｄｉｓｋの階層構造としてディスク上にさらに論理編成できるようにし、名前付きのファイルおよびディレクトリに対するファイル単位のアクセス（ＮＡＳ）を可能にすると同時に、ファイルベースのストレージ・プラットフォーム上のｖｄｉｓｋに対するブロック単位のアクセス（ＳＡＮ）をさらに可能にすることにより、ＮＡＳアプライアンスとＳＡＮアプライアンスの統一的記憶方法を提供する。ファイルシステムは、ＳＡＮデプロイメントにおける基礎物理ストレージの構成の複雑さを単純化する。
【００３０】
上記のように、ｖｄｉｓｋは、普通（通常）のファイルのうち、ディスクのエミュレーションを支援するエクスポート制御および動作制限に関連するファイルに由来する、ボリューム内の特別なファイルタイプである。ｖｄｉｓｋは、クライアントにより例えばＮＦＳプロトコルやＣＩＦＳプロトコルを用いて作成される可能性があるファイルとは異なり、例えばユーザ・インタフェース（ＵＩ）を介して特別なタイプのファイル（オブジェクトとしてマルチプロトコル・ストレージ・アプライアンス上に作成される。例えば、ｖｄｉｓｋは、データを保持する特別なファイルｉｎｏｄｅと、セキュリティ情報のような属性を保持する少なくとも１つの関連ストリームｉｎｏｄｅとを含む、マルチｉｎｏｄｅオブジェクトである。特別なファイルｉｎｏｄｅは、エミュレート・ディスクに関連するアプリケーション・データのようなデータを格納するためのメインコンテナとして機能する。ストリームｉｎｏｄｅには、例えば何回ものリブート処理の間、ＬＵＮをエクスポートし続けるとともに、ｖｄｉｓｋをＳＡＮクライアントに関連する１つのディスク・オブジェクトとして管理できるようにする属性が格納される。本発明に使用するのに都合がよいｖｄｉｓｋおよびそれに関連するｉｎｏｄｅの一例については、「Storage Virtualization by Layering Vdisks on a File System」と題する本発明と同じ譲受人の同時係属中の米国特許出願第（１１２０５６−００６９）号に記載されており、この特許出願は、ここで参照することにより完全に説明されたものとして本明細書に取り込まれる。
【００３１】
図示の実施形態において、ストレージ・オペレーティング・システムは、カリフォルニア州、サニーベイルにあるネットワーク・アプライアンス・インコーポレイテッドから市販されているＮｅｔＡｐｐ  Ｄａｔａ  ＯＮＴＡＰ（登録商標）オペレーティング・システムであることが好ましい。ＮｅｔＡｐｐ  Ｄａｔａ  ＯＮＴＡＰ（登録商標）オペレーティング・システムは、ＷＡＦＬ（登録商標）（Write Anywhere File Layout）ファイルシステムを実施する。ただし、書き込み場所固定式ファイルシステムのような、何らかの適当なオペレーティング・システムを、本発明に記載された発明の原理に従って拡張して使用することも可能である。従って、「ＷＡＦＬ］という用語が使用された場合、その用語は、本発明の教示に適合する任意のストレージ・オペレーティング・システムを指すものとして広い意味で解釈しなければならない。
【００３２】
「ストレージ・オペレーティング・システム」という用語が本明細書で使用される場合、その用語は通常、データアクセスの管理を行なう、コンピュータ上で動作するコンピュータ実行可能コードを意味し、マルチプロトコル・ストレージ・アプライアンスの場合、ストレージ・オペレーティング・システムは、マイクロカーネルとして実施されるＤａｔａ  ＯＮＴＡＰストレージ・オペレーティング・システムのように、データ・アクセス・セマンティックを実施する場合がある。また、ストレージ・オペレーティング・システムは、ＵＮＩＸ（登録商標）やＷｉｎｄｏｗｓ（登録商標）などの汎用オペレーティング・システム上で動作するアプリケーションプログラムとして実施することもでき、あるいは、本明細書に記載されるようなストレージ・アプリケーションに合わせて構成される機能構成可能な汎用オペレーティング・システムとして実施することもできる。
【００３３】
さらに、本明細書に記載される本発明のシステムおよび方法が、スタンドアロンのコンピュータやその一部を含むストレージ・システムとして実施される、またはストレージ・システムを含む、いかなるタイプの特殊用途のコンピュータ（例えば、ストレージ・サービス・アプライアンスなど）および汎用コンピュータにも適用できるものであることは、当業者にとって明らかであろう。さらに、本発明の教示は、限定はしないが、ＮＡＳ環境、ＳＡＮ環境、および、クライアントまたはホストコンピュータに直接取り付けられたディスク・アセンブリなどを含む、種々のストレージ・システム・アーキテクチャに適合させることができる。従って、「ストレージ・システム」という用語は、他の装置またはシステムに接続され、ストレージ機能を実施するように構成された何らかのサブシステムだけでなく、それらの構成も含むものとして広い意味で解釈しなければならない。
【００３４】
図２は、本発明で使用するのに都合がよいストレージ・オペレーティング・システム２００を示す略ブロック図である。ストレージ・オペレーティング・システムは、統合型ネットワーク・プロトコル・スタックを形成するように構成された一連のソフトウェア層を含む。すなわち、一般には、ストレージ・オペレーティング・システムは、マルチプロトコル・ストレージ・アプライアンス上に格納された情報をクライアントがブロック・アクセス・プロトコルやファイル・アクセス・プロトコルを用いてアクセスできるようにするためのデータパスを提供するマルチプロトコル・エンジンを含む。プロトコルスタックは、ネットワーク・ドライバ（例えば、ギガビット・イーサネット（登録商標）・ドライバなど）からなるメディア・アクセス層２１０を含み、メディア・アクセス層２１０は、ＩＰ層２１２や、その支援搬送手段であるＴＣＰ層２１４およびユーザ・データグラム・プロトコル（ＵＤＰ）層２１６などのネットワーク・プロトコル層と連絡する。マルチプロトコル・ファイル・アクセス機能を提供するファイルシステム・プロトコル層は、その目的のために、ＤＡＦＳプロトコル２１８、ＮＦＳプロトコル２２０、ＣＩＦＳプロトコル２２２およびハイパーテキスト・トランスファ・プロトコル（ＨＴＴＰ）プロトコル２２４を含む。ＶＩ層２２６は、ＶＩアーキテクチャを実施し、ＤＡＦＳプロトコル２１８に必要とされるＲＤＭＡのようなＤＡＴ（Direct Access Transport)機能を提供する。
【００３５】
ｉＳＣＳＩドライバ層２２８は、ＴＣＰ／ＩＰネットワークプロトコル層を介したブロック・プロトコル・アクセス機能を提供し、ＦＣドライバ層２３０は、ＦＣ  ＨＢＡ１２６とともに動作し、ブロックアクセス要求の送受信と、統合型ストレージ・アプライアンスに対する応答とを行なう。ＦＣドライバおよびｉＳＣＳＩドライバは、ＬＵＮ（ｖｄｉｓｋ）に対して、ＦＣ特有のアクセス制御およびｉＳＣＳＩ特有のアクセス制御を行なう。すなわち、ＦＣドライバおよびｉＳＣＳＩドライバは、マルチプロトコル・ストレージ・アプライアンス上の１つのｖｄｉｓｋをアクセスするときに、ｉＳＣＳＩとＦＣＰのどちらか一方に対するｖｄｉｓｋのエクスポート、または、両方に対するｖｄｉｓｋのエクスポートを管理する。さらに、ストレージ・オペレーティング・システムは、ＲＡＩＤプロトコルなどのディスク・ストレージ・プロトコルを実施するディスク・ストレージ層２４０と、ＳＣＳＩプロトコルなどのディスク・アクセス・プロトコルを実施するディスク・ドライバ層２５０とを含む。
【００３６】
それらのディスク・ソフトウェア層を統合型ネットワーク・プロトコル・スタック層に橋渡しするのが、本発明による仮想化システム３００である。図３は、仮想化モジュールと交信するファイルシステム３２０によって実施される仮想化システム３００を示す略ブロック図である。仮想化モジュールは、例えばｖｄｉｓｋモジュール３３０およびＳＣＳＩターゲット・モジュール３１０として実施される。ｖｄｉｓｋモジュール３３０、ファイルシステム３２０およびＳＣＳＩターゲット・モジュール３１０が、ソフトウェアで実施することも、ハードウェアで実施することも、ファームウェアで実施することもでき、さらにそれらの組み合わせで実施することも可能であることは、当業者にとって明らかであろう。ｖｄｉｓｋモジュール３３０は、ファイルシステム３２０上に階層化され（およびファイルシステム３２０と交信し）、ブロックベースのＳＣＳＩターゲット・モジュールからファイルシステムによって管理されるブロックへのデータ・パスを提供する。また、ｖｄｉｓｋモジュールは、システム管理者がマルチプロトコル・ストレージ・アプライアンスに対して発行したコマンドに応答して、簡易ユーザ・インタフェース（ＵＩ３５０）のような管理インタフェースによるアクセスを有効にする。要するに、ｖｄｉｓｋモジュール３３０は、システム管理者がＵＩ３５０を通じて発行した様々な一連のｖｄｉｓｋコマンドを実施することにより、特にＳＡＮデプロイメントを管理する。それらのｖｄｉｓｋコマンドは、原始的なファイルシステム処理（「プリミティブ」）に変換され、ファイルシステム３２０およびＳＣＳＩターゲット・モジュール３１０に作用し、ｖｄｉｓｋを実施する。
【００３７】
次いでＳＣＳＩターゲット・モジュール３１０は、アクセス要求に対し、そのアクセス要求の中で指定されたＬＵＮに対する論理ブロックアクセスを特別なｖｄｉｓｋファイルタイプに対する仮想ブロックアクセスに変換し、ｖｄｉｓｋをＬＵＮに変換する。ＳＣＳＩターゲット・モジュールは、例えばＦＣドライバやｉＳＣＳＩドライバ２２８と、ファイルシステム３２０との間に配置され、仮想化システム３００にとって、ＳＡＮブロック（ＬＵＮ）空間とファイルシステム空間との間の変換層として機能する。その際、ＬＵＮはｖｄｉｓｋ３２２として表現される。マルチプロトコル・ストレージ・アプライアンスは、ＳＡＮ仮想化をファイルシステム３２０全体に「配置」することにより、従来のシステムで行なわれていた方法を逆転させ、実質的に全てのストレージ・アクセス・プロトコルに対して１つの統一されたストレージ・プラットフォームを提供する。
【００３８】
本発明によれば、ファイルシステムは、ディスクなどの記憶装置に格納された情報に対してファイル単位のアクセスをする際に使用される機能を提供する。さらに、ファイルシステムは、格納された情報に対してブロック単位のアクセスをする際に使用されるボリューム管理機能を提供する。すなわち、ファイルシステム３２０は、ファイルシステム・セマンティック（ストレージを個々のオブジェクトに区別することや、それらのストレージ・オブジェクトの名前付けなど）を提供する他に、通常ならばボリューム・マネージャに関連する機能も提供する。そのような機能には、(i)ディスクを集める機能、(ii)ディスクの記憶帯域幅を集める機能、(iii)ミラーリングおよび／またはパリティ（ＲＡＩＤ）のような信頼性保証機能などがあり、それらによって１以上のストレージ・オブジェクトをファイルシステム上に階層化して表現する。マルチプロトコル・ストレージ・アプライアンスの特徴は、マルチプロトコル・ストレージ・アプライアンスを特にＳＡＮデプロイメントで使用したときの、それらのボリューム管理機能に関する使用の簡単さにある。
【００３９】
ファイルシステム３２０は、例えばブロック単位のディスク上フォーマット表現を有するＷＡＦＬファイルシステム、例えば４キロバイト（ｋＢ）ブロックを使用し、ｉｎｏｄｅを用いてファイルを表現するようなＷＡＦＬファイルシステムを実施する。ＷＡＦＬファイルシステムは、ファイルを用いてファイルシステムのレイアウトを表すメタデータを格納する。それらのメタデータ・ファイルには、特に、ｉｎｏｄｅファイルが含まれる。ファイルハンドル、すなわちｉｎｏｄｅ番号を含む識別子を用いて、ディスクからｉｎｏｄｅを取得する。ｉｎｏｄｅファイルを有するファイルシステムの構造に関する説明については、１９９８年１０月６日にＤａｖｉｄ  Ｈｉｔｚ他に付与された「Method for Maintaining Consistent States of a File System and for Creating User Accessible Read-Only Copies of a File System」と題する米国特許第５，８１９，２９２号に記載されており、この特許は、ここで参照することにより、完全に説明されたものとして本明細書に取り込まれる。
【００４０】
大まかに言えば、ファイルシステムの全てのｉｎｏｄｅは、ｉｎｏｄｅファイルとして編成される。ファイルシステム（ＦＳ）情報ブロックは、ファイルシステム内の情報のレイアウトを指定するためのものであり、ファイルシステム内の他の全てのｉｎｏｄｅを含むファイルのｉｎｏｄｅを有する。各ボリュームはＦＳ情報ブロックを有し、ＦＳ情報ブロックは、例えばファイルシステムのＲＡＩＤグループ内の固定位置に格納することが望ましい。ルートＦＳ情報ブロックのｉｎｏｄｅは、ｉｎｏｄｅファイルの直接参照（指し示す）ブロックであってもよいし、ｉｎｏｄｅファイルの間接参照ブロック、すなわち、次いでｉｎｏｄｅファイルを直接参照するブロックであってもよい。ｉｎｏｄｅファイルの各直接参照ブロックは埋め込みｉｎｏｄｅであり、それらの各々が、間接ブロックをさらに参照し、次いでファイルまたはｖｄｉｓｋのデータブロックを参照する場合がある。
【００４１】
本発明の一態様によれば、ファイルシステムは、ｖｄｉｓｋ３２２並びにファイル３２４およびディレクトリ（ｄｉｒ３２６）に対するアクセス処理と同時に、ボリューム１５０および／またはｑｔｒｅｅ３２８のようなストレージ・ユニットの汎用記憶空間管理を実施する。ｑｔｒｅｅ３２８は、物理ボリュームの名前空間内の論理サブボリュームの属性を有する特別なディレクトリである。各ファイルシステム・ストレージ・オブジェクト（ファイル、ディレクトリ、またはｖｄｉｓｋ）は、例えば１つのｑｔｒｅｅ、クオータ、セキュリティ・プロパティに関連付けられ、他の項目は、ｑｔｒｅｅごとに割り当てられる。ｖｄｉｓｋおよびファイル／ディレクトリは、ｑｔｒｅｅ３２８の一番上の層に配置され、次いでそれらは、ファイルシステム「仮想化」層３２０による抜粋に従って、ボリューム１５０の一番上の層に配置される。
【００４２】
ファイルシステム３２０内のｖｄｉｓｋストレージ・オブジェクトは、マルチプロトコル・ストレージ・アプライアンスのＳＡＮデプロイメントに関連する一方、ファイル・ストレージ・オブジェクトおよびディレクトリ・ストレージ・オブジェクトは、アプライアンスのＮＡＳデプロイメントに関連する点に注意して欲しい。それらのファイルおよびディレクトリは一般に、ＦＣアクセス・プロトコルやＳＣＳＩブロック・アクセス・プロトコルによってアクセスすることができない。しかしながら、ファイルをｖｄｉｓｋにコンバートしてから、ＳＡＮプロトコルやＮＡＳプロトコルによってアクセスすることは可能である。ｖｄｉｓｋは、ＳＡＮ（ＦＣおよびＳＣＳＩ）プロトコルによってＬＵＮとしてアクセスされる場合もあれば、ＮＡＳ（ＮＦＳおよびＣＩＦＳ）プロトコルによってファイルとしてアクセスされる場合もある。
【００４３】
本発明の他の実施形態において、仮想化システム３００は、ファイルシステム３２０による汎用空間管理に関し、ＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトの共存が可能な仮想記憶空間を提供する。その目的のために、仮想化システム３００は、ファイルシステムが本来備えている能力を含む、ファイルシステムの特性を利用して、ディスクを集め、それらを１つのストレージ・プールに抽出する。例えば、システム３００は、ファイルシステムのボリューム管理機能を利用して、ディスク１３０の集まりを汎用記憶空間のプールを表す１以上のボリューム１５０として構成する。次いで、ｖｄｉｓｋ３２２およびファイル３２４をそれぞれ作成することにより、その汎用記憶プールをＳＡＮデプロイメントとＮＡＳデプロイメントの両方にとって利用可能にする。ＳＡＮおよび／またはＮＡＳデプロイメントを展開したときに、ｖｄｉｓｋおよびファイルは、同一の汎用記憶空間を共有するだけでなく、同一の空き記憶プールを利用する。従来のシステムとは違い、マルチプロトコル・ストレージ・アプライアンスの汎用記憶空間内には、ディスクの物理的区分が無い。
【００４４】
マルチプロトコル・ストレージ・アプライアンスは、ユーザが単一のストレージ・リソース・プールを用いてＮＡＳストレージ・オブジェクトとＳＡＮストレージ・オブジェクトの両方を管理できるようにすることで、汎用記憶空間の管理を実質的に単純化する。特に、ＳＡＮデプロイメントとＮＡＳデプロイメントの両方について、汎用フリー・プールからの空きブロック空間が、細粒ブロックごとに管理される。仮にそれらのストレージ・オブジェクトを個別（別々）に管理したとすれば、ユーザは、例えば業務目的などに応じて、目的の各タイプについて特定量の「予備」ディスクを保持しなければならないであろう。そのような個別アプローチを維持するために必要とされるオーバヘッドは、業務命令に応じて拡張可能な単一グループの予備ディスクだけを用いて、それらのオブジェクトを単一のリソースプールから管理できる場合に比べて、大きくなるであろう。ｖｄｉｓｋ処理によって個別に開放されたブロックは、ＮＡＳオブジェクトによって即座に再使用することができる（そして、その逆も可）。そのような管理の詳細を管理者が意識する必要はない。これは、統合型マルチプロトコル・ストレージ・アプライアンスの「所有権の総コスト」利点を表す。
【００４５】
仮想化システム３００は更に、マルチプロトコル・ストレージ・アプライアンスの汎用記憶空間内に共存するそれらのＳＡＮストレージ・オブジェクトおよびＮＡＳストレージ・オブジェクトに対し、信頼性保証を提供する。特に、従来のＳＡＮシステムにおいて物理ブロックレベルで実施されているＲＡＩＤやミラーリングのような技術による、ディスク故障に直面したときの信頼性保証は、アプライアンス１００のファイルシステム３２０から継承された特徴である。これによって、管理者は、ファイルシステム内のｖｄｉｓｋとＮＡＳオブジェクトに等しく使用される基礎冗長物理ストレージの全体的判断を行なうことが可能となるため、管理が簡単になる。
【００４６】
上記のように、ファイルシステム３２０は、情報をファイル、ディレクトリ、およびｖｄｉｓｋとしてｄｉｓｋ１３０のボリューム１５０内に編成する。各ボリューム１５０の基礎となるのは、ボリューム内のディスク故障（複数の場合もあり）に対する保護および信頼性を提供するＲＡＩＤグループ１４０〜１４４の集まりである。マルチプロトコル・ストレージ・アプライアンスによってサービス提供される情報は、例えばＲＡＩＤ４構成に従って保護される。このレベルの保護は、例えばアプライアンス・プラットフォーム上の同期ミラーリングにまで拡張される場合もある。ボリューム１５０に対し後者の保護が指定された場合、ボリューム上に作成され、ＲＡＩＤ４によって保護されるｖｄｉｓｋ３２２は、さらに同期ミラーリング保護を「継承」する。この場合、同期ミラーリング保護は、ｖｄｉｓｋの特徴ではなく、基礎ボリュームの特徴およびファイルシステム３２０の信頼性保証である。マルチプロトコル・ストレージ・アプライアンスのこの「継承」特性によれば、システム管理者が信頼性問題を扱う必要がなくなるので、ｖｄｉｓｋの管理は簡単になる。
【００４７】
さらに、仮想化システム３００は、ディスク１３０の物理構成に関するユーザの知識を必要とせずに、ディスク１３０の帯域幅を集める。ファイルシステム３２０は、データが格納されるボリュームの全ディスクの帯域を集める入出力（Ｉ／Ｏ）記憶処理に従って、データを長い連続的なストライプとしてそれら複数のディスクにわたってディスクに書き込む（格納する）。ディスクに対して情報を格納または取り出しする場合、ディスクに対するそれらのＩ／Ｏ処理は、ユーザによって指定されるものではない。そうではなく、それらの処理はユーザにとって透過的である。なぜなら、ファイルシステムが、ｗｒｉｔｅ  ａｎｙｗｈｅｒｅレイアウト・ポリシーに従って、そのデータをボリュームの全ディスクにわたって信頼性の高い態様に「ストライプ化」するからである。ブロック・ストレージの仮想化によって、ｖｄｉｓｋに対するＩ／Ｏ帯域幅をｖｄｉｓｋのサイズとは無関係にファイルシステムの基礎物理ディスクの最大帯域幅にすることが可能になる（従来のブロックアクセス製品における一般的なＬＵＮの物理実施形態とは異なる）。
【００４８】
さらに、仮想化システムは、ファイルシステム配置ポリシー、管理ポリシーおよびブロック管理ポリシーに影響を与え、マルチプロトコル・ストレージ・アプライアンス内でｖｄｉｓｋを正しく機能させる。ｖｄｉｓｋブロック配置ポリシーは基礎となる仮想化ファイルシステムの機能であり、変更に直面したときに、ファイルシステム・ブロックとＳＣＳＩ論理ブロックアドレスとの間に、永久的な結び付けは何もない。ｖｄｉｓｋは、透過的に再構成され、おそらくデータ・アクセス・パターン動作を変更する。
【００４９】
ＳＡＮデプロイメントとＮＡＳデプロイメントのどちらの場合でも、ブロック割当てポリシーは、ディスクの物理特性（例えば、幾何配置、サイズ、シリンダ、セクタサイズ）とは無関係である。本発明によれば、ファイルシステムは、ボリューム１５０内に存在するファイル３２４、ディレクトリ３２６およびｖｄｉｓｋ３２２に関するファイル単位の管理を提供する。マルチプロトコル・ストレージ・アプライアンスに取り付けられたアレイにディスクを追加する場合、そのディスクは既存のボリュームに組み込まれ、ボリューム空間全体を増加させる。その空間は、任意の目的に、例えば更なるｖｄｉｓｋまたは更なるファイルのために使用される。
【００５０】
統合型マルチプロトコル・ストレージ・アプライアンス１００の管理は、システム管理者にとって利用可能なＵＩ３５０およびｖｄｉｓｋコマンド群を使用することにより、簡単になる。ＵＩ３５０は例えば、コマンド・ライン・インタフェース（ＣＬＩ）とグラフィカル・ユーザ・インタフェース（ＧＵＩ）との両方を含む。ＵＩは、ｖｄｉｓｋコマンド群の実行に使用され、とりわけ、ｖｄｉｓｋの作成、ｖｄｉｓｋのサイズの増減、および／または、ｖｄｉｓｋの破壊に使用される。アプライアンス１００の仮想化記憶空間の特徴によれば、破壊されたｖｄｉｓｋの記憶空間は、例えばＮＡＳ系ファイルのために再利用することができる。ｖｄｉｓｋは、そのアプリケーション・データに対するブロックおよびＮＡＳマルチプロトコル・アクセスを維持したまま、ユーザ制御によって増加（「拡大」）または減少（「縮小」）させることができる。
【００５１】
ＵＩ３５０は、ｖｄｉｓｋを作成する際に使用すべきディスクをシステム管理者が明示的に構成および指定する必要性を無くすことにより、マルチプロトコルＳＡＮ／ＮＡＳストレージ・アプライアンスの管理を簡単にする。例えばｖｄｉｓｋを作成する場合、システム管理者は、例えばＣＬＩ３５２またはＧＵＩ３５４を通じて、単にｖｄｉｓｋ（「ＬＵＮ作成」）コマンドを発行するだけでよい。ｖｄｉｓｋコマンドは、ｖｄｉｓｋの作成を指示するとともに、そのｖｄｉｓｋの所望のサイズおよびそのｖｄｉｓｋのパス記述子（パス名）を指定する。これに応答して、ファイルシステム３２０はｖｄｉｓｋモジュール３３０と協働し、基礎ディスクによって提供された記憶空間を「仮想化」し、作成コマンドの指示通りにｖｄｉｓｋを作成する。具体的には、ｖｄｉｓｋモジュール３３０は、ｖｄｉｓｋコマンドを処理し、ファイルシステム３２０内の原始的な処理（「プリミティブ」を「呼び出し」、ｖｄｉｓｋ（ＬＵＮ）の高レベル概念を実施する。例えば、「ＬＵＮ作成コマンド」は、ｖｄｉｓｋを正しい情報およびサイズで、正しい位置に作成する一連のファイルシステム・プリミティブに変換される。それらのファイルシステム・プリミティブには、ファイルｉｎｏｄｅを作成する処理（ｃｒｅａｔｅ＿ｆｉｌｅ）、ストリームｉｎｏｄｅを作成する処理（ｃｒｅａｔｅ＿ｓｔｒｅａｍ）、情報をストリームｉｎｏｄｅに格納する処理（ｓｔｒｅａｍ＿ｗｒｉｔｅ）などが含まれる。
【００５２】
ＬＵＮ作成コマンドの結果、指定サイズのｖｄｉｓｋが作成され、明示的に指定しなくとも、そのｖｄｉｓｋはＲＡＩＤによって保護される。マルチプロトコル・ストレージ・アプライアンスのディスク上のストレージ情報はタイプされない。「未加工」のビットだけがディスク上に格納される。ファイルシステムは、それらのビットをボリューム内の全ディスクにわたって、ｖｄｉｓｋおよびＲＡＩＤグループとして編成する。従って、作成されるｖｄｉｓｋ３２２を明示的に構成する必要はない。なぜなら、仮想化システム３００は、ｖｄｉｓｋをユーザにとって透過的な態様で作成するからである。作成されたｖｄｉｓｋは、ファイルシステムによって作成された基礎ボリュームの信頼性や記憶帯域幅などの高性能の特徴を継承する。
【００５３】
また、ＣＬＩ３５２および／またはＧＵＩ３５４は、ｖｄｉｓｋモジュール３３０と対話し、属性や、作成されたｖｄｉｓｋに番号を割り当てる永久ＬＵＮマップ・バインディングを導入する。その後、それらのＬＵＮマップ・バインディングは、ディスクのエクスポートに使用され、クライアントに対して特定のＳＣＳＩ識別子（ＩＤ）として使用される。特に、作成されたｖｄｉｓｋは、ＬＵＮマッピング技術によってエクスポートすることができ、ＳＡＮクライアントはディスクを「見る」（アクセスする）ことができる。ＳＡＮ環境では一般にｖｄｉｓｋ（ＬＵＮ）に対するアクセスを厳密に制御しなければならないため、ＳＡＮ環境におけるＬＵＮの共有は通常、クラスタ化ファイルシステム、クラスタ化オペレーティング・システムおよびマルチパス・構成などの限られた環境でしか行なわれない。マルチプロトコル・ストレージ・アプライアンスのシステム管理者は、どのｖｄｉｓｋ（ＬＵＮ）がＳＡＮクライアントにエクスポート可能であるかを判断する。ｖｄｉｓｋをＬＵＮとしてエクスポートした後、クライアントは、ＳＡＮネットワークを介してＦＣＰやｉＳＣＳＩなどのブロックアクセスプロトコルを用いて、そのｖｄｉｓｋにアクセスすることができる。
【００５４】
ＳＡＮクライアントは通常、論理番号すなわちＬＵＮを用いてディスクを識別および宛先指定する。しかしながら、マルチプロトコル・ストレージ・アプライアンスの「管理の容易性」特徴は、システム管理者がｖｄｉｓｋを論理名で管理し、宛先指定できるようにする。その目的のために、マルチプロトコル・ストレージ・アプライアンスのｖｄｉｓｋモジュール３３０は、論理名をｖｄｉｓｋにマッピングする。例えばｖｄｉｓｋを作成する場合、システム管理者はそのｖｄｉｓｋに「正しいサイズ」を割り当て、そのｖｄｉｓｋに、そのｖｄｉｓｋの目的とする用途を一般的に表すような名前（例えば、データベースを保持する場合、/vol/vol0/databeseなど）を割り当てる。管理インタフェースは、ストレージ・アプライアンスからクライアントにエクスポートされるＬＵＮ／ｖｄｉｓｋ（およびファイル）を名前によって管理し、それによって、ブロック単位（およびファイルベース）のストレージに対する一貫性のある統一された名前付け方式を提供する。
【００５５】
マルチプロトコル・ストレージ・アプライアンスは、イニシエータ・グループ（ｉＧＲＯＵＰ）を用いて論理名によるｖｄｉｓｋのエクスポート制御を管理する。ｉＧＲＯＵＰは、１以上のイニシエータ（クラスタ化環境が構成されているか否かに応じて異なる）に関連する１以上の宛先に割り当てられた論理名付きのエンティティである。「ｉＧＲＯＵＰ作成」コマンドは、それらの宛先を実質的に「バインド」する（関連付ける）コマンドである。宛先には、論理名またはｉＧＲＯＵＰに対するＷＷＮアドレスやｉＳＣＳＩ  ＩＤが含まれる。そして、「ＬＵＮマップ」コマンドを用いて、１以上のｖｄｉｓｋをｉｇｒｏｕｐにエクスポートする。すなわち、ｖｄｉｓｋがｉｇｒｏｕｐから「見える」ようにする。その意味では、「ＬＵＮマップ」コマンドは、ＮＦＳのエクスポートや、ＣＩＦＳのシェアと同等のコマンドである。従って、ＷＮＮアドレスまたはｉＳＣＳＩ  ＩＤは、ＬＵＮマップコマンドによって指定された、それらのディスクに対するアクセスが許可されているクライアントを識別する。その後、ストレージ・オペレーティング・システムの内部の全ての処理に、論理名が使用される。この論理名の概念は、ユーザとマルチプロトコル・ストレージ・アプライアンスとの間の対話を含む、ｖｄｉｓｋコマンド群全体に行き渡る。特に、以後のエクスポート処理にはすべて、ｉｇｒｏｕｐ名変換が使用され、種々のＳＡＮクライアントにエクスポートされたＬＵＮのリストが作成される。
【００５６】
図４は、マルチプロトコル・ストレージ・アプライアンスに格納された情報をＳＡＮネットワークを介してアクセスするときに必要とされる各ステップのシーケンスを示す略フロー図である。ここで、クライアントは、ストレージ・アプライアンス１００に接続されたネットワークを介し、ブロック・アクセス・プロトコルを用いてアストレージ・アプライアンス１００と通信するものとする。クライアント１６０が、Ｗｉｎｄｏｗｓ（登録商標）・オペレーティング・システムを実行しているクライアント１６０ａである場合、ネットワーク１８５を介して例えばブロック・アクセス・プロトコルが使用される。一方、クライアントがＵＮＩＸ（登録商標）・オペレーティング・システムを実行しているクライアント１６ｂである場合、ネットワーク１６５を介して例えばｉＳＣＳＩプロトコルが使用される。シーケンスはステップ４００で始まり、ステップ４０２へ進み、そこで、クライアントは、マルチプロトコル・ストレージ・アプライアンス内の情報にアクセスするための要求を生成、ステップ４０４で、その要求が、、ネットワーク１８５、１６５を介して、従来のＦＣＰ・プロトコルまたはｉＳＣＳＩ・プロトコルのアクセス要求として転送される。
【００５７】
ステップ４０６で、その要求はストレージ・アプライアンス１００のネットワーク／アダプタ１２６，１２５によって受信され、そこで統合ネットワーク・プロトコル・スタックによって処理され、ステップ４８０で、それが仮想化システム３００に渡される。具体的には、要求がＦＣＰ要求であった場合、その要求は、例えばＦＣドライバ２３０によってデータをアクセス（すなわち、読み書き）する４ｋブロック要求として処理される。要求がｉＳＣＳＩプロトコル要求であった場合、その要求は、メディア・アクセス層（Ｉｎｔｅｌ  ギガビット・イーサネット（登録商標））で受信され、ＴＣＰ／ＩＰネットワーク・プロトコル層を通して仮想化システムに渡される。
【００５８】
ＳＣＳＩプロトコルに関連するアドレス情報を含むコマンドおよび制御処理は一般に、ディスクまたはＬＵＮに対して行なわれる。しかしながら、ファイルシステムはＬＵＮを認識しない。従って、その要求に含まれるＳＣＳＩコマンドに応答するために、仮想化システムのＳＣＳＩターゲット・モジュール３１０は、ＬＵＮのエミュレーションを開始する（ステップ４１０）。その目的のために、ＳＣＳＩターゲット・モジュールは、ＳＣＳＩプロトコルを利用する一連のアプリケーション・プログラム・インタフェース（ＡＰＩ３６０）であって、ｉＳＣＳＩドライバ２２８とＦＣドライバ２３０の両方に対する一貫性のあるインタフェースを実施する一連のアプリケーション・プログラム・インタフェースを有する。ＳＣＳＩターゲット・モジュールは更に、ＬＵＮをｖｄｉｓｋに実質的に変換するマッピング／変換手順を実施する。ステップ４１２で、ＳＣＳＩターゲット・モジュールは、その要求に関する例えばＦＣルーティング情報などのアドレス情報をファイルシステムの内部構造にマッピングする。
【００５９】
ファイルシステム３２０は例えばメッセージを利用したシステムである。従って、ＳＣＳＩターゲット・モジュール３１０は、ＳＣＳＩ要求をファイルシステムに対する処理を表すメッセージに変換する。ＳＣＳＩターゲット・モジュールによって生成されるメッセージには、例えば、ファイルシステム上に表現されたｖｄｉｓｋオブジェクトのパス名（例えば、パス記述子など）およびファイル名（例えば、特別なファイル名など）を伴なう処理のタイプ（例えば、読出し、書込みなど）がある。ＳＣＳＩターゲット・モジュールは、メッセージを例えばファンクションコール３６５としてファイルシステム３２０に渡し、そこでその処理が実施される。
【００６０】
ファイルシステム３２０は、メッセージの受信に応答して、パス名をｉｎｏｄｅ構造にマッピングし、ｖｄｉｓｋ３２２に対応するファイル・ハンドルを得る。ファイル・ハンドルを得た後、ストレージ・オペレーティング・システム２００は、そのハンドルをディスク・ブロックに変換する。すなわち、そのブロック（ｉｎｏｄｅ）をディスクから取り出す。大まかに言えば、ファイル・ハンドルとは、ファイルシステムの内部で使用されるデータ構造の内部表現、すなわちｉｎｏｄｅデータ構造の内部表現である。ファイル・ハンドルは通常、ファイルＩＤ（ｉｎｏｄｅ番号）、スナップショットＩＤ、生成ＩＤ、およびフラグを含む複数の構成要素からなる。ファイルシステムは、ファイル・ハンドルを用いて、特別なファイルｉｎｏｄｅと、ディスク１３０上で実施されるファイルシステム構造内のｖｄｉｓｋを含む少なくとも１つの関連ストリーム・ｉｎｏｄｅとを取得する。
【００６１】
要求されたデータがコア内に、すなわちメモリ１３４内に無かった場合、ステップ４１４で、ファイルシステムは、要求されたデータをディスク１３０から読み込む（取り出す０処理を生成する。情報がメモリ内に無かった場合、ファイルシステム３２０は、ｉｎｏｄｅファイル内の索引としてｉｎｏｄｅ番号を使用し、適当なエントリにアクセスし、論理ボリューム・ブロック番号（ＶＢＮ）を取り出す。次にファイルシステムは、その論理ＶＢＮをディスク・ストレージ（ＲＡＩＤ）層２４０に渡し、そこで、その論理番号をブロック番号にマッピングし、それをディスク・ドライバ層２５０の適当なドライバ（例えば、ＳＣＳＩ）に送る。ディスク・ドライバは、ディスク１３０からそのディスク・ブロック番号にアクセスし、それをメモリ１２４内の要求データブロック（複数の場合もあり）に読み込む。ステップ４１６で、要求されたデータは仮想化システム３００によって処理される。例えば、そのデータは、ｖｄｉｓｋに対する読出しまたは書込み処理に関連して、または、ｖｄｉｓｋに対する照会コマンドに関連して処理される。
【００６２】
ＳＣＳＩターゲット・モジュールは、要求されたｖｄｉｓｋに関する重要な意味を「シミュレート」することによって、従来のＳＣＳＩプロトコルのサポートをエミュレートする。そのような情報は、ＳＣＳＩターゲット・モジュールによって計算することもできるし、例えばｖｄｉｓｋの属性ストリームｉｎｏｄｅに永久的に格納しておいてもよい。ステップ４１８で、ＳＣＳＩターゲット・モジュール３１０は、要求されたブロック単位の情報（ファイルシステム３２０によって提供されたファイル単位の情報から変換されるようなもの）をブロック・アクセス（ＳＣＳＩ）・プロトコル・メッセージの中にロードする。例えば、ＳＣＳＩターゲット・モジュール３１０は、ＳＣＳＩ照会コマンド要求に応答して、ｖｄｉｓｋのサイズ等の情報をＳＣＳＩプロトコル・メッセージの中にロードすることができる。要求が完了すると、ストレージ・アプライアンス（およびオペレーティング・システム）は、ネットワークを介して応答（例えば、ＳＣＳＩ「容量」応答メッセージ）をクライアントに返す（ステップ４２０）。そして、シーケンスはステップ４２２で終了する。
【００６３】
マルチプロトコル・ストレージ・アプライアンスで受信されたクライアント要求について、データ記憶アクセスを実施するために必要とされる、上で説明したストレージ・オペレーティング・システム層を通るソフトウェア「パス」は、代替としてハードウェアで実施してもよいことに注意して欲しい。すなわち、本発明の代替実施形態において、オペレーティング・システム層（仮想化システム３００を含む）を通るストレージ・アクセス・要求データ・パスは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）または特定用途向けＩＣ（ＡＳＩＣ）の中に論理回路として実施することもできる。この種のハードウェア実施形態は、クライアント１６０によって発行されたファイル・アクセス要求やブロック・アクセス要求に応答してアプライアンス１００により提供されるストレージ・サービスの能力を向上させる。さらに、本発明の他の実施形態において、ネットワークやストレージ・アダプタ１２５〜１２８などの処理要素は、プロセッサ１２２からパケット処理やストレージ・アクセス処理などの負荷の全部または一部を分担することにより、マルチプロトコル・ストレージ・アプライアンスによって提供されるストレージ・サービスの能力を向上させるように構成される場合がある。当然ながら、本明細書に記載される種々の処理、アーキテクチャおよび手順は、ハードウェアで実施することも、ファームウェアで実施することも、あるいはソフトウェアで実施することも可能である。
【００６４】
有利なことに、統合型マルチプロトコル・ストレージ・アプライアンスは、データの完全性を確保しつつ、アクセス制御を行なうことができ、必要であれば、全てのプロトコルについてファイルおよびｖｄｉｓｋの共有を行なうこともできる。さらに、ストレージ・アプライアンスは、埋め込み型／統合型の仮想化機能を備え、ＮＡＳストレージ・オブジェクトおよびＳＡＮストレージ・オブジェクトを作成するときに、ユーザがストレージ・リソースを分配する必要性が無い。それらの機能は、アプライアンス内の汎用空間管理に関し、ＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトの共存を可能にする仮想化記憶空間を含む。さらに、統合型ストレージ・アプライアンスは、同一のｖｄｉｓｋに対するブロック・アクセス・プロトコル（ｉＳＣＳＩやＦＣＰ）の同時サポートを提供するだけでなく、クラスタリングをサポートする異種ＳＡＮ環境も提供する。要するに、マルチプロトコル・ストレージ・アプライアンスは、全てのストレージ・アクセス・プロトコルについて、単一の統一されたストレージ・プラットフォームを提供する。
【００６５】
上記の説明は、本発明の特定の実施形態に関するものである。しかしながら、記載した実施形態に対して他の変更および修正を施し、それらの実施形態の利点のうちの一部または全部が得られるようにすることも可能であることは、明らかである。例えば、本発明の教示は、コンピュータ上で実行されるプログラム命令を有するコンピュータ読取可能媒体も含めて、ソフトウェアで実施することも、ハードウェアで実施することも、ファームウェアで実施することもでき、それらの組み合わせで実施することもできるものと当然ながら考えられる。従って、この説明は、単なる例として解釈すべきものであり、発明の範囲を制限するものとして解釈してはならない。従って、特許請求の範囲のねらいは、それらの変更および修正が、本発明の真の思想および範囲に含まれるようにカバーすることにある。
【図面の簡単な説明】
【００６６】
【図１】ストレージ・エリア・ネットワーク（ＳＡＮ）環境およびネットワーク・アタッチド・ストレージ（ＮＡＳ）環境で動作するように構成された本発明によるマルチプロトコル・ストレージ・アプライアンスを示す略ブロック図である。
【図２】本発明で使用するのに都合がよいマルチプロトコル・ストレージ・アプライアンスのストレージ・オペレーティング・システムを示す略ブロック図である。
【図３】ファイルシステムによって実施され、仮想化モジュールに作用する本発明による仮想化システムを示す略ブロック図である。
【図４】ＳＡＮネットワークを介してマルチプロトコル・ストレージ・アプライアンスに格納された情報にアクセスするときに必要とされる各ステップのシーケンスを示すフロー図である。
【図１】
2005535961.tif 000003
【図２】
2005535961.tif 000004
【図３】
2005535961.tif 000005
【図４】
2005535961.tif 000006
【手続補正書】
【提出日】平成17年6月22日(2005.6.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントと、ストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントとの両方に対し、記憶装置に格納された情報に対するファイル・プロトコル・アクセスおよびブロック・プロトコル・アクセスを提供するように構成されたマルチプロトコル・ストレージ・アプライアンスであって、
仮想化モジュールと協働し、前記記憶装置によって提供される記憶空間を仮想化するように構成されたストレージ・オペレーティングシステムであって、ファイル・プロトコル・アクセス要求とブロック・プロトコル・アクセス要求の両方からの情報を前記記憶空間に統一的態様で格納する、ストレージ・オペレーティング・システムを含む、マルチプロトコル・ストレージ・アプライアンス。
【請求項２】
前記ファイルシステムは、情報をファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）として論理編成し、ファイルおよびディレクトリに対するファイル単位のアクセスを可能にするとともに、ｖｄｉｓｋに対するブロック単位のアクセスをさらに可能することにより、ＮＡＳアプライアンスとＳＡＮアプライアンスの統一的記憶方法を提供し、前記ｖｄｉｓｋのそれぞれは、エミュレート・ディスクとして解釈される特別なファイルタイプである、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項３】
前記仮想化モジュールは、ｖｄｉｓｋモジュールと、ＳＣＳＩ（Small Computer Systems Interface）ターゲット・モジュールとを含む、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項４】
前記ｖｄｉｓｋモジュールは、前記ファイルシステム上に層として形成され、システム管理者がマルチプロトコル・ストレージ・アプライアンスに対して発行したコマンドに応答して、管理インタフェースによるアクセスが有効にされる、請求項３に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項５】
前記管理インタフェースは、ユーザ・インタフェース（ＵＩ）を含む、請求項４に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項６】
前記ｖｄｉｓｋモジュールは、前記ＵＩを通じて発行された一連のｖｄｉｓｋコマンドを実行することにより、ＳＡＮデプロイメントを管理する、請求項５に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項７】
前記ｖｄｉｓｋコマンドは、前記ファイルシステムおよび前記ＳＣＳＩターゲット・モジュールに作用し、前記ｖｄｉｓｋを実施する原始的なファイルシステム処理に変換される、請求項６に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項８】
前記ＳＣＳＩターゲット・モジュールは、論理ユニット番号（ＬＵＮ）をｖｄｉｓｋに変換するマッピング手順を提供することにより、ディスクまたは前記ＬＵＮのエミュレーションを開始する、請求項７に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項９】
前記ＳＣＳＩターゲット・モジュールは、ＳＡＮブロック空間とファイルシステム空間との間の変換層を提供する、請求項８に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１０】
前記ファイルシステムによる汎用記憶空間管理に関し、前記仮想化記憶空間は、ＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトを共存させることが可能である、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１１】
前記ファイルシステムは前記仮想化モジュールと協働し、前記仮想化記憶空間内に共存する前記ＳＡＮストレージ・オブジェクトおよび前記ＮＡＳストレージ・オブジェクトに信頼性保証を与える、請求項１０に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１２】
前記ファイルシステムは、前記記憶装置に格納された情報に対するブロック単位のアクセスをする際に使用されるボリューム管理機能を提供する、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１３】
前記記憶装置はディスクである、請求項１２に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１４】
前記ファイルシステムは、(i)ストレージ・オブジェクトの名前付けなどのファイルシステム・セマンティック、および、(ii)ボリューム・マネージャに関連する機能を提供する、請求項１に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１５】
前記ボリューム・マネージャに関連する機能は、
前記記憶装置を集める機能と、
前記記憶装置の記憶帯域幅を集める機能と、
ミラーリングまたはＲＡＩＤ（Redundant Array of Independent Disks）のような信頼性保証機能と
のうちの少なくとも１つを含む、請求項１４に記載のマルチプロトコル・ストレージ・アプライアンス。
【請求項１６】
マルチプロトコル・ストレージ・アプライアンスに接続された記憶装置上での情報の編成に関するストレージ・サービスを提供するように構成されたマルチプロトコル・ストレージ・アプライアンスのストレージ・オペレーティング・システムであって、
ブロック単位のアクセス・プロトコルまたはファイル単位のアクセス・プロトコルを用いて前記マルチプロトコル・ストレージ・アプライアンスに格納された情報にアクセスするクライアントに対し、データ・パスを提供する統合型ネットワーク・プロトコル・スタックと、
仮想化モジュールと協働し、前記記憶装置によって提供される記憶空間を仮想化するファイルシステムと、
からなるストレージ・オペレーティング・システム。
【請求項１７】
前記ファイルシステムは、情報をファイル、ディレクトリおよび仮想ディスク（ｖｄｉｓｋ）として論理編成することにより、ファイル単位のアクセス・プロトコルとブロック単位のアクセス・プロトコルを用いた、ネットワーク・アタッチド・ストレージ（ＮＡＳ）アプライアンスとストレージ・エリア・ネットワーク（ＳＡＮ）アプライアンスの統一的記憶方法を提供し、前記ｖｄｉｓｋのそれぞれが、エミュレート・ディスクとして解釈される特別なファイルタイプである、請求項１６に記載のストレージ・オペレーティング・システム。
【請求項１８】
前記ブロック単位のアクセス・プロトコルは、「ＳＣＳＩ  ｅｎｃａｐｓｕｌａｔｅｄ  ｏｖｅｒ  ＴＣＰ（ｉＳＣＳＩ）」および「ＳＣＳＩ  ｅｎｃａｐｓｕｌａｔｅｄ  ｏｖｅｒ  ＦＣ（ＦＣＰ）」のようなＳＣＳＩ（Small Computer Systems Interface）系のプロトコルを含む、請求項１７に記載のストレージ・オペレーティング・システム。
【請求項１９】
前記統合型ネットワーク・プロトコル・スタックは、
ネットワーク・プロトコル層と、
前記ネットワーク・プロトコル層に接し、前記ファイルシステムにより編成されたファイルおよびディレクトリに対するファイル単位のプロトコル・アクセスを提供するファイルシステム・プロトコル層と、
前記ネットワーク・プロトコル層の上に配置され、前記ファイルシステムによって編成されたｖｄｉｓｋに対するブロック単位のプロトコル・アクセスを提供するｉＳＣＳＩドライバと、
を含む、請求項１８に記載のストレージ・オペレーティング・システム。
【請求項２０】
前記統合型ネットワーク・プロトコル・スタックは、前記ファイルシステム・プロトコル層のファイル・アクセス・プロトコルのための直接アクセス搬送機能を提供する仮想インタフェース層をさらに含む、請求項１９に記載のストレージ・オペレーティング・システム。
【請求項２１】
前記統合型ネットワーク・プロトコル・スタックは、前記ファイルシステムによって編成されたｖｄｉｓｋに対するブロックアクセス要求を送受信するように構成されたファイバ・チャネル（ＦＣ）ドライバをさらに含む、請求項２０に記載のストレージ・オペレーティング・システム。
【請求項２２】
前記ＦＣドライバおよび前記ｉＳＣＳＩドライバは、ＦＣ特有のアクセス制御およびｉＳＣＳＩ特有のアクセス制御をｖｄｉｓｋに提供し、マルチプロトコル・ストレージ・アプライアンス上のｖｄｉｓｋにアクセスするときの、ｉＳＣＳＩおよびＦＣＰに対するｖｄｉｓｋのエクスポートの管理をさらに提供する、請求項２１に記載のストレージ・オペレーティング・システム。
【請求項２３】
ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントと、ストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントとの両方に対し、マルチプロトコル・ストレージ・アプライアンスの記憶装置に格納された情報にアクセスするためのファイル・プロトコル・アクセスおよびブロック・プロトコル・アクセスを提供する方法であって、
格納された情報を保持するための単一の記憶空間を提供するステップと、
(i)前記アプライアンスを第１のネットワークに接続するネットワーク・アダプタと、(ii)ＮＡＳクライアントが前記格納された情報をファイルとしてアクセスするために発行するファイル単位の要求に対し、前記アプライアンスが応答できるようにするためのファイルシステム機能とを用いて、ＮＡＳサービスを提供するステップと、
(i)前記アプライアンスを第２のネットワークに接続するネットワーク・ターゲット・アダプタと、(ii)ＳＡＮクライアントが前記格納された情報を仮想ディスク（ｖｄｉｓｋ）としてアクセスするために発行するブロック単位の要求に対し、前記アプライアンスが応答できるようにするためのボリューム管理機能とを用いて、ＳＡＮサービスを提供するステップと、
からなる方法。
【請求項２４】
前記マルチプロトコル・ストレージ・アプライアンスに格納されたファイルおよびｖｄｉｓｋの名前による管理を提供することにより、ファイル単位のストレージおよびブロック単位のストレージのための一様な名前付け方式を提供するステップと、
前記記憶装置に格納された名前付きファイルおよびｖｄｉｓｋの階層構造を提供するステップと、
をさらに含み、前記ｖｄｉｓｋのそれぞれが、エミュレート・ディスクとして解釈される特別なファイルタイプである、請求項２３に記載の方法。
【請求項２５】
ネットワーク・アタッチド・ストレージ（ＮＡＳ）デプロイメントと、ストレージ・エリア・ネットワーク（ＳＡＮ）デプロイメントとの両方に対し、マルチプロトコル・ストレージ・アプライアンスの記憶装置に格納されたストレージ・オブジェクトにアクセスするためのファイル・プロトコル・アクセスおよびブロック・プロトコル・アクセスを提供する方法であって、
前記記憶装置を汎用記憶空間を表す１以上のいボリュームとして編成するステップと、
前記汎用記憶空間内でのＳＡＮストレージ・オブジェクトとＮＡＳストレージ・オブジェクトの共存を許可するステップと、
前記ＳＡＮストレージ・オブジェクトおよび前記ＮＡＳストレージ・オブジェクトにアクセスするためのブロック単位の要求およびファイル単位の要求を前記ストレージ・アプライアンスのマルチプロトコル・エンジンで受信するステップと、
前記ブロック単位の要求および前記ファイル単位の要求に応答し、前記ＳＡＮストレージ・オブジェクトおよび前記ＮＡＳストレージ・オブジェクトにアクセスし、それらを返すステップと、
からなる方法。
【国際調査報告】
2005535961.tif 000007
2005535961.tif 000008