JP6890675B2 - 複合集合体アーキテクチャー - Google Patents

複合集合体アーキテクチャー Download PDF

Info

Publication number
JP6890675B2
JP6890675B2 JP2019552178A JP2019552178A JP6890675B2 JP 6890675 B2 JP6890675 B2 JP 6890675B2 JP 2019552178 A JP2019552178 A JP 2019552178A JP 2019552178 A JP2019552178 A JP 2019552178A JP 6890675 B2 JP6890675 B2 JP 6890675B2
Authority
JP
Japan
Prior art keywords
storage
data
provider
file system
abstraction layer
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
JP2019552178A
Other languages
English (en)
Other versions
JP2020510265A (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 JP2020510265A publication Critical patent/JP2020510265A/ja
Priority to JP2021087269A priority Critical patent/JP2021168138A/ja
Application granted granted Critical
Publication of JP6890675B2 publication Critical patent/JP6890675B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0643Management of files
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • 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/061Improving I/O performance
    • 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/0653Monitoring storage devices or 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/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
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/402Encrypted data

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)
  • Computer Security & Cryptography (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願
本願は2017年3月23日に出願された「複合集合体アーキテクチャー」と題する米国非仮特許出願第15/467,293号の優先権を主張するものである。同出願の内容はここに参照によって組み込まれる。
多くのストレージ・システムは、クライアントに、複数のストレージ装置内に記憶されているデータへのアクセスを提供する。たとえば、ストレージ・コントローラは、クライアント・データを、ローカルにアクセス可能な(たとえばストレージ・コントローラにローカルに取り付けられている)またはリモートにアクセス可能な(たとえばネットワークを通じてアクセス可能な)一組のストレージ装置内に記憶しうる(たとえばストレージ集合体が、複数のストレージ装置にまたがって記憶されうる)。ストレージ集合体は、ストレージ・ファイル・システムからクライアントにエクスポートされてもよい。ストレージ集合体は、クライアントには、ボリュームまたは論理ユニット番号(logical unit number、lun)のような単一のストレージ・コンテナとして見えてもよい。このようにして、集合体は、該集合体が物理的にどのように一組のストレージ装置の間で記憶されているかの詳細を抽象化してクライアントに見えなくする。
いくつかのストレージ・システムは、複数層のストレージ配置内にデータを記憶しうる。たとえば、ストレージ・コントローラは、ハードディスクドライブ層および固体ストレージ層内にデータを記憶してもよい。ハードディスクドライブ層は、クライアント・データを記憶するための容量層として、入出力動作を処理するために使われてもよい。固体ストレージ層は、ストレージ動作の処理を加速するためのキャッシュとして使われてもよい。残念ながら、ストレージ装置およびメディアの異なるクラスは異なる特性および挙動をもつ(たとえばレイテンシー、サイズ、ガーベージ収集、ランダム記憶動作の効率、逐次記憶動作の効率、I/Oアクセス・サイズ、たとえば4キロバイトのI/Oアクセス・サイズなど)。このように、ストレージ・ファイル・システムは、複数の不均質なストレージ装置およびメディアから集合体を本来的に生成することはできない。
本稿に記載される施策の一つまたは複数に基づく、例示的なクラスター化されたネットワークを示すコンポーネント・ブロック図である。
本稿に記載される施策の一つまたは複数に基づく、例示的なデータ・ストレージ・システムを示すコンポーネント・ブロック図である。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的な方法を示すフローチャートである。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的なコンピューティング装置を示すコンポーネント・ブロック図である。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的なコンピューティング装置において、データが複数のストレージ・プロバイダーのストレージ内に選択的に記憶されることを示すコンポーネント・ブロック図である。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的なコンピューティング装置において、データがログ中に累積されることを示すコンポーネント・ブロック図である。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的なコンピューティング装置において、ログ内の累積されたデータが、記憶のためにストレージ・プロバイダーに送られるストレージ・オブジェクトを生成するために使われることを示すコンポーネント・ブロック図である。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的なコンピューティング装置において、データがストレージ・オブジェクト内でアクセスされることを示すコンポーネント・ブロック図である。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供する例示的なコンピューティング装置において、ガーベージ収集が実行されることを示すコンポーネント・ブロック図である。
本稿に記載される施策の一つまたは複数に基づくコンピュータ可読媒体の例である。
特許請求される主題のいくつかの例がこれから図面を参照して記述される。図面において同様の参照符号は一般に全体を通じて同様の要素を指すために使われる。以下の記述では、説明の目的で、特許請求される主題の理解を与えるために数多くの個別的詳細が記載されるが、特許請求される主題がこれらの個別的詳細なしで実施されうることは明白でありうる。この詳細な記述のどの部分も従来技術として認められるものではない。
複合集合体アーキテクチャー(a composite aggregate architecture)のためのストレージ抽象化層を提供する一つまたは複数の技法および/またはコンピューティング装置が本願で提供される。ストレージ抽象化層は、ファイル・システムと複数の不均質な型のストレージおよびストレージ・プロバイダーを有するストレージ環境との間の間接参照(indirection)層として提供される(たとえばストレージ抽象化層はファイル・システム層の下に存在する)。たとえば、ストレージ抽象化層は、ストレージ環境のストレージ・プロバイダーの特性を取得するよう構成される。ストレージ・プロバイダーは、ハードディスクドライブ層ストレージ・プロバイダー、固体ドライブ層ストレージ・プロバイダー、オブジェクト・ストレージ・プロバイダー(たとえばサードパーティーのクラウド・ストレージ・プロバイダー)、高可用性(high availability、HA)ストレージ・プロバイダー(たとえばノードのHA対)、シングル磁気記録(shingled magnetic recording、SMR)ストレージ・プロバイダーなどである。ストレージ抽象化層はファイル・システム層の下なので、ストレージ抽象化層はファイル・システム層にはできない動作を実行することができる。たとえば、ストレージ抽象化層は、異なるストレージ・プロバイダーによって提供される不均質な型のストレージからストレージ集合体(storage aggregate)(たとえば、異なる特性および挙動をもつ異なるクラスのストレージおよびメディアのストレージからの集合体)を生成することができる。ストレージ集合体は、あたかも均質なストレージからの単一のデータ・コンテナであるかのようにファイル・システムに呈される。ストレージ抽象化層は、どこにデータを格納するか(たとえばあるデータを格納するために特定のストレージ・プロバイダーを選択する)、いつ、どのようにして異なるストレージ・プロバイダーの間でデータを動かすか、どのようにして個々のストレージ・プロバイダーごとにガーベージ収集を実行するか(たとえば、ストレージ・ブロックの解放は、ファイル・システムによってではなく、別個に、ストレージ・プロバイダー/装置ごとに行なうことができる)を決定し、重複除去、暗号化および圧縮といったファイル・システムの記憶効率を保存することができる。
ストレージ抽象化層は、任意の数のノードにまたがることができ、ファイル・システムはそれらのノードのいくつかの上に存在することができる。新しいストレージ・プロバイダーおよび/またはストレージ装置が、たとえばファイル・システムが知らないうちにまたは理解することなく、動的にストレージ抽象化層と統合されることができる。このように、本来的にはファイル・システムと互換でない新しいストレージ・プロバイダーおよび/またはストレージ装置(たとえば、ファイル・システムは4キロバイトのチャンクでI/Oアクセスを実行する一方、クラウド・プロバイダーのような分散式のストレージ・プロバイダーには、メガバイトもしくはギガバイトのチャンクなど、より大きなチャンクでデータを送るほうが、ネットワーク効率および処理効率のために効率的である)でも、ストレージ集合体のために使用されることができる。ストレージ抽象化層がどこに、どのようにデータを格納するかを扱ってくれるからである。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供するために、図1は、クラスター化されたネットワーク環境100またはネットワーク・ストレージ環境の実施形態を示している。しかしながら、本稿に記載される技法等が、クラスター化されたネットワーク環境100、非クラスター・ネットワーク環境および/または多様な他のコンピューティング環境、たとえばデスクトップ・コンピューティング環境内で実装されうることは理解されうる。すなわち、付属の請求項を含む本開示は、本稿で与えられる例に限定されることは意図されていない。後の図面において同じまたは同様のコンポーネント、要素、特徴、項目、モジュールなどが示されるが先の図面に関して先に論じられている場合には、その後の図面を記述するときには(たとえば簡単および理解の容易のために)同様の(たとえば冗長な)議論は割愛されることがあることが理解されるであろう。
図1は、本稿に記載される技法および/またはシステムの少なくともいくつかの実施形態を実装しうるクラスター化されたネットワーク環境100を示すブロック図である。クラスター化されたネットワーク環境100は、クラスター・ファブリック106を通じて結合されているデータ・ストレージ・システム102および104を有する。クラスター・ファブリック106は、プライベートなインフィニバンド(Infiniband)、ファイバーチャネル(Fibre Channel、FC)またはイーサネット〔登録商標〕ネットワークとして具現されるコンピューティング・ネットワークなどであり、データ・ストレージ・システム102と104(およびその中の一つまたは複数のモジュール、コンポーネントなど、たとえばノード116および118)の間の通信を容易にする。二つのデータ・ストレージ・システム102および104および二つのノード116および118が図1に示されているが、任意の好適な数のそのようなコンポーネントが考えられていることが理解されるであろう。一例では、ノード116、118はストレージ・コントローラを有し(たとえば、ノード116は一次またはローカル・ストレージ・コントローラを有していてもよく、ノード118は二次またはリモート・ストレージ・コントローラを有していてもよい)、それらのストレージ・コントローラがホスト装置108、110のようなクライアント装置に、データ・ストレージ装置128、130内に記憶されたデータへのアクセスを提供する。同様に、本稿で特に断わりのない限り、本稿で言及されるおよび/または付属の図面に示される他のモジュール、要素、特徴、項目についても同じことがいえる。すなわち、コンポーネント、モジュール、要素、特徴、項目などの特定の数は、限定するものと解釈されることは意図されていない。
さらに、クラスター化されたネットワークは、いかなる特定の地理的領域にも限定されず、ローカルおよび/またはリモートにクラスター化されることができることが理解されるであろう。このように、ある実施形態では、クラスター化されたネットワークは、複数の地理的位置に位置される複数のストレージ・システムおよび/またはノードにわたって分散されることができる。一方、別の実施形態では、クラスター化されたネットワークは同じ地理的位置に(たとえばデータ・ストレージ装置の単一のオンサイト・ラックに)存在するデータ・ストレージ・システム(たとえば102、104)を含むことができる。
図示した例では、たとえばクライアント装置、パーソナルコンピュータ(PC)、記憶のために使われるコンピューティング装置(たとえばストレージ・サーバー)および他のコンピュータもしくは周辺装置(たとえばプリンター)を含みうる一つまたは複数のホスト装置108、110が、ストレージ・ネットワーク接続112、114によってそれぞれのデータ・ストレージ・システム102、104に結合される。ネットワーク接続は、たとえばデータ・パケットを交換するためにネットワークアタッチトストレージ(Network Attached Storage、NAS)プロトコル、たとえば共通インターネットファイルシステム(Common Internet File System、CIFS)プロトコルまたはネットワークファイルシステム(Network File System、NFS)プロトコルを使うローカルエリアネットワーク(local area network、LAN)または広域ネットワーク(wide area network、WAN)、ストレージエリアネットワーク(Storage Area Network、SAN)プロトコル、たとえばスモールコンピュータシステムインターフェース(Small Computer System Interface、SCSI)またはファイバーチャネルプロトコル(Fiber Channel Protocol、FCP)、S3のようなオブジェクト・プロトコルなどを含みうる。例示的に、ホスト装置108、110は、アプリケーションを実行している汎用コンピュータであってもよく、情報交換のためのクライアント/サーバー・モデルを使ってデータ・ストレージ・システム102、104と対話してもよい。すなわち、ホスト装置がデータ・ストレージ・システム1にデータ(たとえば、ホスト装置によって発される、ストレージ装置のためのI/Oコマンドを処理するよう構成されたネットワーク・ストレージ・コントロールによって管理されるストレージ装置上のデータ)を要求し、データ・ストレージ・システムが、一つまたは複数のストレージ・ネットワーク接続112、114を介して要求の結果をホスト装置に返す。
クラスター化されたデータ・ストレージ・システム102、104上のノード116、118は、クラスターとして相互接続されたネットワークまたはホスト・ノードを含むことができ、該クラスターは、たとえばリモート位置をもつ企業などへのデータ記憶および管理サービス、クラウド・ストレージ(たとえば、ストレージ・エンドポイントがデータ・クラウド内に記憶されてもよい)を提供する。クラスター化されたネットワーク環境100内のそのようなノードは、たとえば接続ポイント、再分配ポイントまたは通信エンドポイントとしてネットワークに取り付けられた装置であることができる。ノードは、ネットワーク通信チャネルを通じて情報を送信、受信および/または転送することができてもよく、これらの基準の任意のものまたは全部を満たす任意の装置を含むことができる。ノードの一例は、ネットワークに取り付けられたデータ記憶および管理サーバーであってもよい。ここで、該サーバーは、データ記憶および管理システム内のサーバーとして動作するよう特に構成された汎用コンピュータまたはコンピューティング装置を含むことができる。
一例では、ノード116、118のようなノードの第一のクラスター(たとえば、一つまたは複数のストレージ装置の第一の論理的なグループ化を含む第一のストレージ集合体へのアクセスを提供するよう構成された第一の組のストレージ・コントローラ)が、第一のストレージ・サイトに位置していてもよい。図示されていないノードの第二のクラスター(一つまたは複数のストレージ装置の第二の論理的なグループ化を含む第二のストレージ集合体へのアクセスを提供するよう構成された第二の組のストレージ・コントローラ)が、第二のストレージ・サイトに位置していてもよい。第一のノード・クラスターおよび第二のノード・クラスターは、災害復旧構成に従って構成されてもよく、災害が被災ノード・クラスターを含む被災ストレージ・サイトで発生した場合に、被災ノード・クラスターのストレージ装置へのスイッチオーバー・アクセスを、生き残っているノード・クラスターが提供する(たとえば、第二のストレージ・サイトで災害が発生した場合に、第一のノード・クラスターが、クライアント装置に、第二のストレージ集合体のストレージ装置へのスイッチオーバー・データ・アクセスを提供する)。
クラスター化されたネットワーク環境100において示されるように、ノード116、118は、クラスターのための分散式ストレージ・アーキテクチャーを提供するよう協調するさまざまな機能コンポーネントを有することができる。たとえば、ノードは、ネットワーク・モジュール120、122およびディスク・モジュール124、126を有することができる。ネットワーク・モジュール120、122は、ノード116、118(たとえばネットワーク・ストレージ・コントローラ)がストレージ・ネットワーク接続112、114を通じてホスト装置108、110に接続することを許容するよう構成されることができる。それによりたとえば、ホスト装置108、110は分散式ストレージ・システムに記憶されたデータにアクセスできる。さらに、ネットワーク・モジュール120、122は、クラスター・ファブリック106を通じて一つまたは複数の他のコンポーネントとの接続を提供することができる。たとえば、図1において、ノード116のネットワーク・モジュール120は、ノード118のディスク・モジュール126を通じて要求を送ることによって、第二のデータ・ストレージ装置にアクセスできる。
ディスク・モジュール124、126は、一つまたは複数のデータ・ストレージ装置128、130、たとえばディスクまたはディスクのアレイ、フラッシュメモリまたは他の何らかの形のデータ・ストレージをノード116、118に接続するよう構成されることができる。ノード116、118はクラスター・ファブリック106によって相互接続されることができ、たとえばクラスターにおけるそれぞれのノードが、クラスター内の異なるノードに接続されたデータ・ストレージ装置128、130上のデータにアクセスできる。しばしば、ディスク・モジュール124、126は、たとえばSCSIまたはFCPのようなSANプロトコルに従ってデータ・ストレージ装置128、130と通信する。こうして、ノード116、118上のオペレーティング・システムから見ると、データ・ストレージ装置128、130は、オペレーティング・システムにローカルに取り付けられているように見えることができる。このようにして、種々のノード116、118などが、抽象ファイルを明示的に要求するのではなく、オペレーティング・システムを通じて、データ・ブロックにアクセスしうる。
クラスター化されたネットワーク環境100は同数のネットワーク・モジュールおよびディスク・モジュールを示しているが、他の実施形態は異なる数のこれらのモジュールを含んでいてもよいことを理解しておくべきである。たとえば、クラスター内で相互接続された複数のネットワーク・モジュールおよびディスク・モジュールがあって、ネットワーク・モジュールとディスク・モジュールとの間に一対一対応がないことがありうる。すなわち、異なるノードは異なる数のネットワーク・モジュールおよびディスク・モジュールを有することができ、同じノードがディスク・モジュールとは異なる数のネットワーク・モジュールをもつことができる。
さらに、ホスト装置108、110はクラスター内のノード116、118と、ストレージ・ネットワーク接続112、114を通じてネットワーク接続されることができる。例として、クラスターにネットワーク接続されるそれぞれのホスト装置108、110はクラスター内のノード116、118にサービス(たとえばデータ・パケットの形の情報の交換)を要求してもよく、ノード116、118は要求されたサービスの結果をホスト装置108、110に返すことができる。ある実施形態では、ホスト装置108、110は、データ・ストレージ・システム102、104内のノード116、118内に存在するネットワーク・モジュール120、122(たとえばネットワーク・ホスト)と情報を交換することができる。
ある実施形態では、データ記憶装置128、130は、ボリューム132を有する。ボリュームは、情報をディスク・ドライブまたはディスク・アレイまたは他のストレージ(たとえばフラッシュ)に記憶したものの、データのためのファイル・システムとしての具現である。一例では、ディスク・アレイはすべての伝統的なハードドライブ、すべてのフラッシュドライブまたは伝統的なハードドライブとフラッシュドライブの組み合わせを含むことができる。ボリュームは、たとえばディスクの一部、複数のディスクの集合または諸ディスクの諸部分にまたがることができ、典型的にはストレージ・システムにおけるディスク・スペース上のファイル記憶の全体的な論理的配置を定義する。ある実施形態では、ボリュームは、記憶されたデータを、ボリューム内の階層的なディレクトリー構造において存在する一つまたは複数のファイルとして含むことができる。
ボリュームは典型的には、特定のストレージ・システムに関連付けられてもよいフォーマットで構成され、それぞれのボリューム・フォーマットは典型的にはボリュームに機能を提供する、たとえばボリュームがクラスターを形成する能力を提供する特徴を有する。たとえば、第一のストレージ・システムはそのボリュームのために第一のフォーマットを利用してもよく、第二のストレージ・システムはそのボリュームのために第二のフォーマットを利用してもよい。
クラスター化されたネットワーク環境100において、ホスト装置108、110はデータ・ストレージ・システム102、104を、ボリューム132からのデータを記憶し、取り出すために利用することができる。この実施形態において、たとえば、ホスト装置108はデータ・パケットをデータ・ストレージ・システム102内のノード116内のネットワーク・モジュール120に送ることができる。ノード116は該データをディスク・モジュール124を使ってデータ・ストレージ装置128に転送することができる。ここで、データ記憶装置128はボリューム132Aを有する。このようにして、この例では、ホスト装置は、ストレージ・ネットワーク接続112によって接続されているデータ・ストレージ・システム102を使ってデータを記憶するおよび/または取り出すために、ボリューム132Aにアクセスすることができる。さらに、この実施形態において、ホスト装置110はデータ・ストレージ・システム104(これはデータ・ストレージ・システム102からリモートであってもよい)内のノード118内のネットワーク・モジュール122とデータを交換することができる。ノード118は該データをディスク・モジュール126を使ってデータ・ストレージ装置130に転送することができ、それにより、データ・ストレージ装置130に関連付けられたボリューム132Bにアクセスすることができる。
複合集合体アーキテクチャーのためにストレージ抽象化層を提供することが、クラスター化されたネットワーク環境100内で実装されうることが理解されうる。一例では、ストレージ抽象化層は、ノード116のデータ・ストレージ装置128(たとえば第一のストレージ・プロバイダー)を管理するための第一のストレージ・ビンと、ノード118のデータ・ストレージ装置130(たとえば第二のストレージ・プロバイダー)を管理するための第二のストレージ・ビンとを生成し、維持してもよい。ストレージ抽象化層は、ストレージ・ファイル・システム層の下にある間接参照層であってもよい。ストレージ抽象化層は、データ・ストレージ装置128、130が不均質な型のストレージであるにもかかわらず、データ・ストレージ装置128およびデータ・ストレージ装置130から導出される単一のストレージ集合体を、ファイル・システムに呈する。複合集合体アーキテクチャーのためのストレージ抽象化層を提供することが、任意の型のコンピューティング環境のためにおよび/または任意の型のコンピューティング環境の間で実装されてもよく、物理的な装置(たとえばノード116、ノード118、デスクトップコンピュータ、タブレット、ラップトップ、ウェアラブル装置、モバイル装置、ストレージ装置、サーバーなど)および/または(たとえばクラスター化されたネットワーク環境100にとってリモートな)クラウド・コンピューティング環境の間で移転可能でありうることが理解されうる。
図2は、データ・ストレージ・システム200(たとえば図1の102、104)の例解用の例であり、本稿に記載される技法および/またはシステムの一つまたは複数を実装しうるコンポーネントの実施形態のさらなる詳細を与えている。データ・ストレージ・システム200はノード202(たとえば図1のノード116、118)およびデータ・ストレージ装置234(たとえば図1のデータ・ストレージ装置128、130)を有する。ノード202はたとえば、ストレージ・サーバーとして動作するよう特に構成された汎用コンピュータまたは他の何らかのコンピューティング装置であってもよい。ホスト装置205(たとえば図1の108、110)はネットワーク216を通じてノード202に接続されて、たとえば、データ・ストレージ装置234上に記憶されたファイルおよび/または他のデータへのアクセスを提供することができる。一例では、ノード202は、ホスト装置205のようなクライアント装置に、データ・ストレージ装置234内に記憶されているデータへのアクセスを提供するストレージ・コントローラを有する。
データ・ストレージ装置234は、ディスク・アレイ218、220、222のディスク224、226、228のような大容量記憶装置を含むことができる。本稿に記載される技法およびシステムがこの例示的実施形態によって限定されないことは理解されるであろう。たとえば、ディスク224、226、228は、磁気ディスク・ドライブ、フラッシュメモリおよびたとえばデータ(D)および/またはパリティ(P)情報を含む情報を記憶するよう適応された他の任意の同様のメディアを含むがそれに限られない、任意の型の大容量記憶装置を含んでいてもよい。
ノード202は、一つまたは複数のプロセッサ204と、メモリ206と、ネットワーク・アダプター210と、クラスター・アクセス・アダプター212と、ストレージ・アダプター214とがシステム・バス242によって相互接続されたものを有する。データ・ストレージ・システム200は、ノード202のメモリ206にインストールされたオペレーティング・システム208をも含み、それがたとえば、アレイ内の故障したディスクのデータの再構成プロセスを最適化するために独立(または安価)なディスクの冗長アレイ(Redundant Array of Independent (またはInexpensive) Disks、RAID)最適化技法を実装することができる。
オペレーティング・システム208は、データ・ストレージ・システムのための通信と、クラスター化されたネットワーク内にありうる、たとえばクラスター・ファブリック215(たとえば図1の106)に取り付けられた、他のデータ・ストレージ・システムの間の通信とを管理することもできる。このように、ネットワーク・ストレージ・コントローラのようなノード202は、ホスト装置要求に応答して、これらのホスト装置要求に従ってデータ・ストレージ装置234(たとえば、または追加的なクラスター化された装置)上のデータを管理することができる。オペレーティング・システム208は、しばしば、データ・ストレージ・システム200上に一つまたは複数のファイル・システムを確立することができる。ここで、ファイル・システムは、たとえばファイルおよびディレクトリーの持続的な階層的な名前空間を実装するデータ構造およびソフトウェア・コードを含むことができる。一例として、クラスター化されたネットワーク・システムに新しいデータ・ストレージ装置(図示せず)が追加されるとき、オペレーティング・システム208は、その新しいデータ・ストレージ装置に関連付けられた新しいファイルが既存のディレクトリー・ツリー内でどこに格納されるべきかを通知される。これはしばしば、ファイル・システムの「マウンティング」と称される。
例示的なデータ・ストレージ・システム200において、メモリ206は、関係したソフトウェア・アプリケーション・コードおよびデータ構造を記憶するための、プロセッサ204およびアダプター210、212、214によってアドレス指定可能な記憶位置を含むことができる。プロセッサ204およびアダプター210、212、214はたとえば、該ソフトウェア・コードを実行し、該データ構造を操作するよう構成された処理要素および/または論理回路を含んでいてもよい。オペレーティング・システム208は典型的にはその一部がメモリ206に常駐し、処理要素によって実行されるが、該オペレーティング・システム208は、ストレージ・システムによって実装されるファイル・サービスをサポートしてストレージ動作を呼び出すことなどによって、ストレージ・システムを機能的に組織する。当業者には、他の処理およびメモリ機構(さまざまなコンピュータ可読媒体を含む)が、本稿に記載される技法に関するアプリケーション命令を記憶および/または実行するために使用されうることは明白であろう。たとえば、オペレーティング・システムは、仮想マシンのプロビジョニングを支援するために、一つまたは複数の制御ファイル(図示せず)をも利用することができる。
ネットワーク・アダプター210は、データ・ストレージ・システム200をネットワーク216を通じてホスト装置205に接続するために必要とされる機械的、電気的および信号伝達の回路を含む。ネットワーク216は、ポイントツーポイント接続または共有される媒体、たとえばローカルエリアネットワークを含んでいてもよい。ホスト装置205(たとえば図1の108、110)はアプリケーションを実行するよう構成された汎用コンピュータであってもよい。上記のように、ホスト装置205は、情報送達のクライアント/ホスト・モデルに従って、データ・ストレージ・システム200と対話してもよい。
ストレージ・アダプター214は、ホスト装置205によって要求された情報にアクセスする(たとえばネットワーク・ストレージ・コントローラによって管理されるストレージ装置上のデータにアクセスする)ために、ノード202上で実行されているオペレーティング・システム208と協働する。該情報は、磁気ディスク・ドライブ、フラッシュメモリおよび/または情報を記憶するよう適応された他の同様のメディアといった書き込み可能なメディアの、任意の型の取り付けられたアレイに記憶されてもよい。例示的なデータ・ストレージ・システム200では、該情報は、ディスク224、226、228上のデータ・ブロックにおいて記憶されることができる。ストレージ・アダプター214は、ストレージエリアネットワーク(SAN)プロトコルのようなI/O相互接続配置(たとえばスモールコンピュータシステムインターフェース(SCSI)、iSCSI、ハイパーSCSI、ファイバーチャネルプロトコル(FCP))を通じて諸ディスクに結合する入出力(I/O)インターフェース回路を含むことができる。該情報はストレージ・アダプター214によって取り出され、必要なら、前記一つまたは複数のプロセッサ204(またはストレージ・アダプター214自身)によって処理されてから、システム・バス242を通じてネットワーク・アダプター210に(および/または、クラスター内の別のノードに送信する場合にはクラスター・アクセス・アダプター212に)転送され、そこで、該情報はデータ・パケットにフォーマットされ、ネットワーク216を通じてホスト装置205に返される(および/またはクラスター・ファブリック215を通じて、クラスターに取り付けられている別のノードに返される)。
ある実施形態では、ディスク・アレイ218、220、222上の情報の記憶は、ディスク・スペースの全体的な論理的配置を定義するディスク224、226、228のクラスターで構成される一つまたは複数のストレージ・ボリューム230、232として実装されることができる。一つまたは複数のボリュームをなすディスク224、226、228は典型的には、RAIDの一つまたは複数のグループとして編成される。一例として、ボリューム230は、ディスク224および226のクラスターを含むディスク・アレイ218および220の集合体を含む。
ある実施形態では、ディスク224、226、228へのアクセスを容易にするために、オペレーティング・システム208は、情報を、ディスク上のディレクトリーおよびファイルの階層構造として論理的に組織化するファイル・システム(たとえばライトエニウェアファイルシステム(write anywhere file system))を実装してもよい。この実施形態では、それぞれのファイルは、情報を記憶するよう構成された一組のディスク・ブロックとして実装されてもよい。一方、ディレクトリーは、他のファイルおよびディレクトリーについての情報が格納される、特別にフォーマットされたファイルとして実装されてもよい。
このデータ・ストレージ・システム200内の根底にある物理的構成がどうであれ、データは、物理的および/または仮想的なボリューム内のファイルとして記憶されることができる。ボリュームはそれぞれのボリューム識別子、たとえば一例では32ビットの長さでありうるファイル・システム識別子(file system identifier、FSID)と関連付けられることができる。
物理的なボリュームは、アドレス、アドレス指定可能なスペース、位置などが変化しない物理的なストレージ装置の少なくとも一部、たとえば一つまたは複数のデータ・ストレージ装置234(たとえば独立な(または安価な)ディスクの冗長アレイ(RAIDシステム))の少なくともいくつかに対応する。典型的には、物理的なボリュームの位置は、それにアクセスするために使われるアドレス(の範囲)が一般には一定のままであるという意味で、変化しない。
対照的に、仮想ボリュームは、異なる物理的なストレージ装置の別個の部分の集合体に記憶される。仮想ボリュームは、異なる物理的なストレージ装置位置の異なる利用可能な部分の集まり、たとえばディスク224、226および/または228のそれぞれからのいくらかの利用可能なスペースであってもよい。仮想ボリュームは、どの一つの特定のストレージ装置にも「結びつけられて」いないので、仮想ボリュームは、抽象化または仮想化の層を含むと言うことができる。そのため、仮想ボリュームは、サイズ変更されるおよび/またはいくつかの点で柔軟であることができる。
さらに、仮想ボリュームは、一つまたは複数の論理ユニット番号(logical unit number、LUN)238、ディレクトリー236、Qツリー235およびファイル240を含むことができる。中でも、これらの特徴、特にLUNSのため、その中にデータが記憶される別個のメモリ位置が、データ記憶ユニットとしてたとえば識別され、グループ化されることができる。よって、LUN 238は、前記集合体内で仮想ボリューム内のデータが記憶されている仮想ディスクまたはドライブを構成するものとして特徴付けられてもよい。たとえば、LUNはしばしば仮想ドライブと称され、実際にはボリュームのさまざまな部分に記憶されたデータ・ブロックを含むのに、汎用コンピュータのハードドライブをエミュレートする。
ある実施形態では、一つまたは複数のデータ記憶装置234は一つまたは複数の物理ポートを有することができる。各物理ポートは目標アドレス〔ターゲット・アドレス〕(たとえばSCSI目標アドレス)を割り当てられることができる。データ・ストレージ装置上に記憶されたそれぞれのボリュームを表わすために、データ・ストレージ装置上の目標アドレスが、一つまたは複数のLUN 238を同定するために使用されることができる。こうして、たとえば、ノード202がストレージ・アダプター214を通じてボリューム230、232に接続するとき、ノード202と、ボリュームの根底にある前記一つまたは複数のLUN 238との間の接続が生成される。
ある実施形態では、それぞれの目標アドレスは複数のLUNを同定することができ、目標アドレスは複数のボリュームを表わすことができる。I/Oインターフェースは、たとえばストレージ・アダプター214内の回路および/またはソフトウェアとして、あるいはメモリ206に存在しプロセッサ204によって実行される実行可能コードとして、実装でき、一つまたは複数のLUN 238を同定する一つまたは複数のアドレスを使ってボリューム230に接続できる。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供することが、データ・ストレージ・システム200について実装されうることが理解されうる。一例では、ストレージ抽象化層は、ノード202(たとえば第一のストレージ・プロバイダー)のストレージを管理するために第一のストレージ・ビンを生成し、維持してもよい。ストレージ抽象化層は、他のノードのストレージ(たとえばノード202のストレージとは異なる特性をもつストレージ装置)を管理するために他のストレージ・ビンを維持してもよい。このようにして、ストレージ抽象化層は、ノード202のストレージおよび/または他のストレージ・プロバイダーのストレージから導出された単一のストレージ集合体を生成し、ファイル・システムに呈する。複合集合体アーキテクチャーのためのストレージ抽象化層を提供することが、任意の型のコンピューティング環境のためにおよび/または任意の型のコンピューティング環境の間で実装されてもよく、物理的な装置(たとえばノード202、ホスト装置205、デスクトップコンピュータ、タブレット、ラップトップ、ウェアラブル装置、モバイル装置、ストレージ装置、サーバーなど)および/または(たとえばノード202および/またはホスト装置205にとってリモートな)クラウド・コンピューティング環境の間で移転可能でありうることが理解されうる。
複合集合体アーキテクチャーのためのストレージ抽象化層を提供することの一つの実施形態が図3の例示的方法300によって示される。ストレージ抽象化層(storage abstraction layer)(たとえば、透明なインターフェースをさまざまなストレージ・プロバイダーに提供することのできる、一組のクラス、機能、プロトコル機能、ポリシー、ネットワーク通信機能、ストレージ管理機能など)は、ファイル・システム(たとえばストレージ・ファイル・システム)とストレージ環境(たとえば、一つまたは複数のネットワークを通じてアクセス可能なストレージ・プロバイダー)との間の間接参照層として利用されることができる。ストレージ抽象化層は、複数の型のストレージ・プロバイダーおよびストレージ装置の間でデータがどこにどのように記憶されるかに関する詳細を抽象化して見えなくする。たとえば、ストレージ抽象化層は、ファイル・システムにとって単一のストレージ・コンテナであるように見えるストレージ集合体/プールを呈してもよい。こうして、ファイル・システムは単にその単一のストレージ・コントローラに対して読み書きを行なうだけである。それでも、ストレージ抽象化層が読み書き要求を受け止めて、どこで、どのようにデータを記憶し、取り出すかを決定する。
302では、ストレージ抽象化層が、ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得する。該特性は、レイテンシー、記憶容量、ストレージ装置/メディアの型(たとえば磁気ストレージ、固体/フラッシュ・ストレージ、クラウド・ストレージ、高可用性ストレージ、メモリまたはNVRAM、ローカルに取り付けられているストレージ、リモート・ストレージ、シングル磁気記録ストレージなど)、I/Oアクセス・サイズ、ガーベージ収集ポリシー、サポートされるストレージ・アクセス・プロトコル、使用される暗号化、どのようにデータが格納されるか(たとえば特定のサイズをもつデータのブロックとして格納される)、どのようにデータが参照/インデックス付けされるか(たとえばオブジェクトIDと、特定のデータについての該オブジェクトID内でのオフセットとによって参照される、物理的なブロック番号によって参照される、論理的なブロック番号によって参照される、ファイル名によって参照される、オフセットによって参照される、など)などに関係していてもよい。
一例では、ストレージ抽象化層は、ノードおよびそのストレージの特性を得るために、ローカルに取り付けられたデータ・ストレージへの高い可用性のアクセスを提供する第一のノードおよび第二のノード(たとえば高可用性ノード対)と通信してもよい。別の例では、ストレージ抽象化層は、分散されたストレージ・プロバイダーおよびオブジェクト・ストレージの特性を得るために、ネットワークを通じて、オブジェクト・ストレージを提供する分散されたオブジェクト・ストレージ・プロバイダー(たとえば、サードパーティー・プロバイダーによって提供されるクラウド・ストレージ)に通信してもよい。このように、前記特性を得るために、多様なストレージ・プロバイダーがアクセスされうる。ストレージ抽象化層は複数の異なる型のストレージ・プロバイダーとインターフェースをもつことができるので、ファイル・システムは任意の数のノードにまたがってホストされることができ、ストレージ抽象化層は、複数の異なる型のノードおよびストレージ・プロバイダーによってホストされるストレージから、集合体を生成することができる。
304では、第一のストレージ・プロバイダーの第一のストレージを管理するために、ストレージ抽象化層によって、第一のストレージ・ビンが生成されてもよい。第一のストレージ・ビンは、第一のストレージ・プロバイダーの第一の特性に基づいて構成されてもよい。たとえば、第一のストレージ・ビンは、第一のストレージ・プロバイダーによって使用される特定のプロトコルおよびI/Oアクセス・サイズを使って、第一のストレージ・プロバイダー(たとえば固体ストレージ・プロバイダー)にアクセスするよう構成されてもよい。第一のストレージ・ビンは、第一のストレージ・プロバイダーに関連付けられたある種の型の圧縮、暗号化、ガーベージ収集ポリシー、データ・フォーマットおよび/またはデータ参照フォーマット(たとえば、物理的なブロック番号、論理的なブロック番号、ファイル名、オブジェクト識別子、オフセットなどによってデータを参照する)を使うよう構成されてもよい。
306では、第二のストレージ・プロバイダーの第二のストレージを管理するために、ストレージ抽象化層によって、第二のストレージ・ビンが生成されてもよい。第二のストレージ・ビンは、第二のストレージ・プロバイダーの第二の特性に基づいて構成されてもよい。たとえば、第二のストレージ・ビンは、第二のストレージ・プロバイダーによって使用されるプロトコルおよびI/Oアクセス・サイズを使って、第二のストレージ・プロバイダー(たとえばクラウド・ストレージ・プロバイダー)にアクセスするよう構成されてもよい。第二のストレージ・ビンは、第二のストレージ・プロバイダーに関連付けられたある種の型の圧縮、暗号化、ガーベージ収集ポリシー、データ・フォーマットおよび/またはデータ参照フォーマット(たとえば、物理的なブロック番号、論理的なブロック番号、ファイル名、オブジェクト識別子、オフセットなどによってデータを参照する)を使うよう構成されてもよい。
ストレージ抽象化層が、任意の数のストレージ・プロバイダーについて、任意の数のストレージ・ビンを生成して、それらのストレージ・プロバイダーについて物理的なデータ記憶の詳細をストレージ抽象化層が抽象化して、ファイル・システムに見えなくすることが理解されうる。ストレージ・プロバイダーは、種々の仕方でデータを記憶し、種々の仕方でデータへのアクセスを提供しうる。たとえば、第一のストレージ・プロバイダーは、データを読み書きするために、4キロバイトI/Oサイズのような第一のI/Oサイズをサポートしてもよい。対照的に、第二のストレージ・プロバイダーは、1ギガバイトまでの制約されない範囲など、第二のI/Oサイズをサポートしてもよい。たとえば、クラウド・ストレージ・プロバイダーには、ネットワーク帯域幅および処理資源をより効率的に利用しうるメガバイトまたはギガバイトの範囲のチャンクなど、より大きなチャンクでデータを送ったほうが効率的であることがある。たとえファイル・システムが第一のI/Oサイズしかサポートしていなくても、ストレージ抽象化層は、第二のストレージ・ビンを仲介インターフェースとして使って、第二のI/Oサイズを使ってデータがどのようにしてクラウド・ストレージ・プロバイダーに送られ、クラウド・ストレージ・プロバイダー内に記憶され、クラウド・ストレージ・プロバイダーからアクセスされるかの詳細を扱うことができる。
308では、第一のストレージ型を有する第一のストレージ(たとえば第一のストレージ・プロバイダーによって提供される固体ドライブ・ストレージ)、第一のストレージ型とは異なる第二のストレージ型を有する第二のストレージ(たとえばクラウド・ストレージ・プロバイダーによって提供されるオブジェクト・ストレージ)および/または他のストレージ・プロバイダーからの他のストレージから、ストレージ抽象化層によってストレージ集合体が生成される。ストレージ抽象化層は、各ストレージ・プロバイダーの各ストレージ内でどこで、どのようにしてデータを記憶し、データにアクセスするかを管理するために、個々のストレージ・ビンを使う。310では、ストレージ集合体がファイル・システムに単一のストレージ・コンテナとして呈される。たとえば、ストレージ抽象化層は、ストレージ集合体が実際には複数のストレージ・プロバイダーからのストレージの諸部分で構成されているという概念を抽象化によって見えなくしつつ、ストレージ集合体を単一のボリューム、単一のLUNまたは他のデータ・コンテナとして呈してもよい。一例では、ストレージ抽象化層はストレージ・プロバイダーの特性の部分集合をファイル・システムに呈するだけであってもよい(たとえば、ストレージの型は呈されるが、どのくらい古い/ステールなデータ・ブロックが解放、上書きされるかなど他の特性は呈されない)。
ストレージ抽象化層は、ファイル・システムからの複数のデータを、ストレージ・ビンを通じて、複数のストレージ・プロバイダーの対応するストレージに、データの特性およびストレージ・プロバイダーの特性に基づいて選択的に記憶するために利用される。特性は、逐次アクセス特性、ランダム・アクセス特性、ユーザー・データ特性、メタデータ特性(たとえば複製ポリシー、バックアップ・ポリシー、LUN構成、パートナー・ノードの識別情報および/またはファイル・システムまたはノードによって動作のために使用される他のメタデータ)、頻繁にアクセスされる特性(たとえば、閾値より高いアクセス頻度/パターンをもつホットなデータ)、低頻度でアクセスされる特性(たとえば、前記閾値を下回るアクセス頻度/パターンをもつコールドなデータ)などに対応してもよい。ストレージ抽象化層は、どの型のストレージおよびストレージ・プロバイダーが、ある種の型のデータを記憶するためにより好適であるかを決定するよう構成される(たとえば、低頻度でアクセスされるユーザー・データを記憶するにはクラウド・ストレージ・プロバイダーがよりコスト効率がよいことがあり、一方、頻繁にアクセスされるメタデータのためにはシングル磁気記録ストレージ・プロバイダーがよりよいことがあり、ミッションクリティカルなデータのためには追加的な冗長性をもつ高可用性ストレージ・プロバイダーのほうがよいことがある)。
一例では、ファイル・システムから、ストレージ集合体内に第一のデータを記憶するという要求が受領されてもよい。ストレージ集合体は単一のストレージ・コンテナとして呈されるので、要求はどのストレージ・プロバイダーおよび/またはどの型のストレージに第一のデータが記憶されるかを指定しない。よって、ストレージ抽象化層は、第一のストレージ・ビンを通じて、第二のストレージではなく第一のストレージの第一の記憶位置に第一のデータを選択的に記憶してもよい。これは、第一のデータのデータ特性が第一のストレージ・プロバイダーの特性(たとえば、第一のストレージは、第二のストレージよりも、逐次アクセスされるデータを記憶するために、より効率的でありうる)に対応することに基づく。何らかの時点において、ストレージ抽象化層は、第一のデータが第一のストレージ内の第一の記憶位置から第二のストレージ・プロバイダーの第二のストレージ内の第二の記憶位置に移されるべきであると決定してもよい。よって、ストレージ抽象化層は、第一のデータを第一のストレージから第二のストレージの第二の記憶位置に移す。ストレージ抽象化層がストレージ集合体のデータの物理的な記憶の詳細を抽象化してファイル・システムから見えなくするので、これは、ファイル・システムには透明に実行されうる。
第一のデータを新しいデータで上書きするという上書き要求が、ファイル・システムから、ストレージ抽象化層によって受領されてもよい。ファイル・システムがライトエニウェアファイルシステムである例では、新しいデータは第一のデータの現在位置(たとえば第二のストレージの前記第二の記憶位置)に書き込まれなくてもよく、空いている/利用可能な異なる位置に書き込まれる。よって、何らかの時点において、その現在位置にある第一のデータはガーベージ収集されて、該現在位置が解放されて他のデータを記憶するために利用可能になるようにする必要がある。ひとたび前記異なる位置に新しいデータが書き込まれたら、前記第二の記憶位置にある前記第一のデータは古くなるからである。ストレージ抽象化層は、前記書き込み要求の前記新しいデータを、第三の記憶位置に新しい第一のデータとして記憶してもよい。第三の記憶位置は、第一のストレージ内の、第一のデータが以前、移動/移行される前に位置していたところであってもよく、あるいは第二のストレージ内の、第一のデータが第二の記憶位置に現在位置しているところであってもよく、あるいは他の任意のストレージ・プロバイダーの他の任意のストレージ内であってもよい。前記第三の記憶位置にある前記新しい第一のデータが最新のバージョンなので前記第二の記憶位置は解放されてデータ記憶のために利用可能になることができるよう、前記第二の記憶位置における前記第一のデータを、ガーベージ収集のためにマークするよう、第二のストレージ・ビンが使われてもよい。ガーベージ収集は、ファイル・システムには透明な仕方で、ストレージ・プロバイダー上で、ストレージ・プロバイダーごとに容易にされうる(たとえば、異なるストレージ・プロバイダーについては異なるガーベージ収集ポリシーが実装されてもよい)。
一例では、ストレージ抽象化層は、データに関するさまざまなメトリックを追跡してもよい。メトリックは、第一のストレージ内のデータ(A)へのアクセスの第一の頻度、第二のストレージ内のデータ(B)へのアクセスの第二の頻度などである。ストレージ抽象化層が第一のアクセス頻度が第一のストレージについて第一のストレージ・ビンによって設定された閾値より低いと判定することに応答して、データ(A)は、第一のストレージから第一のストレージ・ビンのログに累積されてもよい。ストレージ抽象化層が第二のアクセス頻度が第二のストレージについて第二のストレージ・ビンによって設定された閾値より低いと判定することに応答して、データ(B)は、第二のストレージから第二のストレージ・ビンの第二のログに累積されてもよい。
ストレージ抽象化層は、第一のストレージについての第一のストレージ・ビンのログに、閾値量のデータが累積したことを判別してもよい(たとえば、閾値量のコールド・データが固定ドライブ・ストレージ・プロバイダーの固定ドライブ・ストレージから第一のストレージ・ビンに収集されてもよい)。よって、ストレージ抽象化層は、第二のストレージのデータ・フォーマットに対応する、データ(A)のような前記ログからの累積されたデータを含むストレージ・オブジェクトを生成してもよい(たとえば、クラウド・ストレージ・プロバイダーがデータを諸オブジェクト内に格納してもよい)。このようにして、ストレージ・オブジェクトはさまざまなファイル、ディレクトリー、アプリケーションなどのデータを含みうる。ストレージ抽象化層はストレージ・オブジェクトを、第二のストレージ・ビンを通じて、第二のストレージ内での記憶のために、第二のストレージ・プロバイダーに送る。任意の型のストレージ・プロバイダーからの累積されたデータが、累積されたデータの宛先と整合する任意の型のデータ・オブジェクト/コンテナ(たとえば、ブロック・ベースのデータ・フォーマット、ファイル、LUN、ストレージ・オブジェクト、データベース・ファイルなど)を生成するために使用されうることが理解されうる。ストレージ抽象化層は、オブジェクト・メタファイルに、一つまたは複数のエントリー指示を入れてもよい。ストレージ・オブジェクト内にどのデータが記憶されるか(たとえば、データを参照するためにファイル・システムによって使用されるデータ参照情報、たとえば仮想ブロック番号)およびストレージ・オブジェクトのオブジェクト識別子およびそのようなデータのオフセットである。
ストレージ抽象化層は、ファイル・システムからデータ(A)に対するアクセス要求を受領してもよい(たとえば、ファイル・システムは、データ(A)の位置が今は第二のストレージ・プロバイダーの第二のストレージに記憶されているストレージ・オブジェクト内であることを知らなくてもよい)。一例では、アクセス要求は、ストレージ集合体内のデータ(A)を参照するためにファイル・システムによって使用される物理的なボリューム・ブロック番号または他の任意の識別子を含む。ストレージ抽象化層は、物理的なボリューム・ブロック番号を使ってオブジェクト・メタファイルに問い合わせして、ストレージ・オブジェクトのオブジェクト識別子およびストレージ・オブジェクト内のデータ(A)のオフセットを識別してもよい。オブジェクト識別子およびオフセットは、第二のストレージ・プロバイダーによって第二のストレージ内に記憶されているストレージ・オブジェクト内のデータ(A)へのアクセスを第二のストレージ・ビンを通じて提供するために使われてもよい。このようにして、ファイル・システムは、データ(A)が、今第二のストレージ内に記憶されている、無関係であるかもしれない他のデータとともに前記ストレージ・オブジェクト内に含まれているにもかかわらず、データ(A)にアクセスしうる。
ストレージ抽象化層は、ストレージ・プロバイダーのストレージ内に記憶されたデータへの参照の参照回数を追跡してもよい(たとえば、ストレージ抽象化層は、ストレージ集合体についてファイル・システムによって追跡されるものに従うのではなく、それぞれのストレージ・プロバイダーの個々のストレージについて自分自身のガーベージ収集を提供してもよい)。たとえば、第一のストレージ・ビンは、第一のストレージ内のデータへの参照の参照回数を追跡するために使われてもよい。参照回数は、第一のストレージから、参照回数が0のデータを解放するために使用されてもよい。そのようなデータは、データの現在位置に新しいデータを上書きせずオープンな/空いている記憶位置に新しいデータを書き込むライトエニウェアファイルシステムによって他所に書き込まれている新しいデータのために古くなっている/不使用であることがありうるからである。
ストレージ抽象化層は、ファイル・システムのストレージ効率を保存するよう構成されてもよい。一例では、ストレージ抽象化層は、ファイル・システムから圧縮されたデータを受領してもよい。ストレージ抽象化層は該圧縮されたデータを、圧縮された状態で第一のストレージ内に記憶してもよい。あるいはまた、圧縮されるべき未圧縮のデータがファイル・システムから受領されたり、あるいはストレージ・プロバイダーから取得されたりしてもよい。よって、ストレージ抽象化層は(たとえばストレージ・ビンまたはログ内の)未圧縮のデータに対して圧縮を実行し、次いで、圧縮されたデータを特定のストレージ・プロバイダーに送ってもよい。
別の例では、ストレージ抽象化層は、ファイル・システムから暗号化されたデータを受領してもよい。ストレージ抽象化層は暗号化されたデータを、暗号化された状態で第一のストレージ内に記憶してもよい。あるいはまた、暗号化されるべき非暗号化データがファイル・システムから受領されたり、あるいはストレージ・プロバイダーから取得されたりしてもよい。よって、ストレージ抽象化層は(たとえばストレージ・ビンまたはログ内の)非暗号化データを暗号化し、次いで、暗号化されたデータを特定のストレージ・プロバイダーに送ってもよい。
別の例では、ストレージ抽象化層は、ファイル・システムによって提供される重複除去を保存してもよい。たとえば、ストレージ抽象化層はデータに対する参照の、独自の参照回数計数を維持してもよい。
一例では、データがストレージ・プロバイダー間で移動される場合、データはログに入れられてもよく、次いで、ログ内の該データに対して圧縮、暗号化および/または他のストレージ効率機能が、そのような機能を保存するために、実行されてもよい。
図4は、複合ストレージ・アーキテクチャーを有するシステム400の例を示している。ファイル・システムは、ストレージ・ファイル・システム層404で動作してもよい。クライアントは、ストレージ・ファイル・システム・アクセス層402を通じてファイル・システムにアクセスしてもよい。たとえば、クライアントは、ストレージ・ファイル・システム・アクセス層402を通じてファイル・システムに読み出しコマンド、書き込みコマンド、生成コマンドおよび/または他のコマンドを送ってもよい。ストレージ抽象化層406は、ストレージ・ファイル・システム層404のようなファイル・システムとストレージ環境428との間の間接参照/中間層として提供されてもよい。ストレージ抽象化層406はストレージ・ファイル・システム層404の下にあってもよい。
ストレージ抽象化層(storage abstraction layer)406は、ストレージ環境428内のストレージ・プロバイダーの特性を取得してもよい。それらの特性に基づいて、ストレージ抽象化層406は、それらのストレージ・プロバイダーのストレージを管理するためのストレージ・ビンを生成する。各ストレージ・ビン(storage bin)は、特定のストレージ・プロバイダーに合わせて仕立てられている。各ストレージ・プロバイダーによって提供されるストレージの型が異なる特性をもつことがありうるからである(たとえば、ある種のストレージはランダム・アクセスまたは逐次アクセスについて、よりよい性能を発揮しうる;ある種のストレージはよりよい冗長性を提供しうる;ある種のストレージ・プロバイダーはより高い安全性を提供しうる;ある種のストレージ・プロバイダーは、データへの、より高い可用性を提供しうる;など)。たとえば、固体ドライブ・ストレージ・プロバイダー418について、固定ドライブ・ストレージ・ビン408が生成されてもよい。固定ドライブ・ストレージ・ビン408は、固体ドライブ・ストレージ・プロバイダー418の固体ドライブ・ストレージ内でどこでどのようにしてデータを記憶するかを決定し、どんなプロトコルを使用するかを設定し、どんなガーベージ収集技法を使用するかを設定し、固体ドライブ・ストレージ・プロバイダー418のためのコールド/ホット・データを判別するための閾値を設定し、どんな圧縮を使用するかを設定し、冗長性ポリシーを設定し、セキュリティ・ポリシーを設定し、どんなI/Oアクセス・サイズを使用するかを設定し、どんなデータ・フォーマットを使用するかを設定し、どのようにして特定のデータを参照/同定するかを決定するなどしてもよい。
ハードディスクドライブ・ストレージ・プロバイダー420について、ハードディスクドライブ・ストレージ・ビン410が生成されてもよい。ハードディスクドライブ・ストレージ・ビン410は、ハードディスクドライブ・ストレージ・プロバイダー420のハードディスクドライブ・ストレージ内でどこでどのようにしてデータを記憶するかを決定し、どんなプロトコルを使用するかを設定し、どんなガーベージ収集技法を使用するかを設定し、ハードディスクドライブ・ストレージ・プロバイダー420のためのコールド/ホット・データを判別するための閾値を設定し、どんな圧縮を使用するかを設定し、冗長性ポリシーを設定し、セキュリティ・ポリシーを設定し、どんなI/Oアクセス・サイズを使用するかを設定し、どんなデータ・フォーマットを使用するかを設定し、どのようにして特定のデータを参照/同定するかを決定するなどしてもよい。
オブジェクト・ストレージ・プロバイダー422(たとえば、オブジェクト内にデータを記憶するクラウド・ストレージ・プロバイダー)について、オブジェクト・ストレージ・ビン412が生成されてもよい。オブジェクト・ストレージ・ビン412は、オブジェクト・ストレージ・プロバイダー422のオブジェクト・ストレージ内でどこでどのようにしてデータを記憶するかを決定し、どんなプロトコルを使用するかを設定し、どんなガーベージ収集技法を使用するかを設定し、オブジェクト・ストレージ・プロバイダー422のためのコールド/ホット・データを判別するための閾値を設定し、どんな圧縮を使用するかを設定し、冗長性ポリシーを設定し、セキュリティ・ポリシーを設定し、どんなI/Oアクセス・サイズを使用するかを設定し、どんなデータ・フォーマットを使用するかを設定し、どのようにして特定のデータを参照/同定するかを決定するなどしてもよい。
シングル磁気記録ストレージ・プロバイダー424について、シングル磁気記録ストレージ・ビン414が生成されてもよい。シングル磁気記録ストレージ・ビン414は、シングル磁気記録ストレージ・プロバイダー424のストレージ内でどこでどのようにしてデータを記憶するかを決定し、どんなプロトコルを使用するかを設定し、どんなガーベージ収集技法を使用するかを設定し、シングル磁気記録ストレージ・プロバイダー424のためのコールド/ホット・データを判別するための閾値を設定し、どんな圧縮を使用するかを設定し、冗長性ポリシーを設定し、セキュリティ・ポリシーを設定し、どんなI/Oアクセス・サイズを使用するかを設定し、どんなデータ・フォーマットを使用するかを設定し、どのようにして特定のデータを参照/同定するかを決定するなどしてもよい。
高可用性ストレージ・プロバイダー426(たとえば、高い可用性の構成に従って構成された二つのノード)について、高可用性ストレージ・ビン416が生成されてもよい。高可用性ストレージ・ビン416は、高可用性ストレージ・プロバイダー426のストレージ内でどこでどのようにしてデータを記憶するかを決定し、どんなプロトコルを使用するかを設定し、どんなガーベージ収集技法を使用するかを設定し、高可用性ストレージ・プロバイダー426のためのコールド/ホット・データを判別するための閾値を設定し、どんな圧縮を使用するかを設定し、冗長性ポリシーを設定し、セキュリティ・ポリシーを設定し、どんなI/Oアクセス・サイズを使用するかを設定し、どんなデータ・フォーマットを使用するかを設定し、どのようにして特定のデータを参照/同定するかを決定するなどしてもよい。
このようにして、ストレージ抽象化層406は、さまざまなストレージ・プロバイダーによって提供される異なる型のストレージを個々に管理するためにストレージ・ビンを使うことができる。ストレージ抽象化層406は、さまざまなストレージ・プロバイダーが異なる型のストレージをホストし、異なるデータ・フォーマットを使用し、異なる仕方(たとえば物理ブロック番号、ファイル名、オフセット、仮想ブロック番号など)でデータを参照し異なるストレージ・プロトコルを使用し、異なるI/Oアクセス・サイズを使用するなどしているにもかかわらず、該さまざまなストレージ・プロバイダーからのストレージの諸部分からなるストレージ集合体を生成することができる。ストレージ集合体は、ストレージ・ファイル・システム層404のファイル・システムに、単一のストレージ・コンテナとして呈されることができる。このようにして、ストレージ抽象化層406は、それらのストレージ・プロバイダーを横断してデータを物理的に送ること、記憶すること、取り出すことおよび管理することの詳細を抽象化して見えなくする(たとえば、ファイル・システムは単にストレージ集合体に対して書き込みコマンドを発すればよく、ストレージ抽象化層406が、特定のストレージ・プロバイダーにその書き込みコマンドのデータを選択的に記憶するために使用すべき特定のストレージ・ビンを選択してもよい)。
図5A〜図5Eは、複合集合体アーキテクチャーのためのストレージ抽象化層512を提供するためのシステム500の例を示している。ストレージ抽象化層512は、図5Aに示されるように、ファイル・システム506とストレージ環境との間の間接参照層として設けられてもよい。ストレージ環境は、ストレージ抽象化層512にとってアクセス可能なストレージ・プロバイダー、たとえば固体ドライブ・ストレージ・プロバイダー526、ハードディスクドライブ・ストレージ・プロバイダー528、オブジェクト・ストレージ・プロバイダー530(たとえばサードパーティーによってホストされるクラウド・ストレージ・プロバイダー)および/または他のローカルもしくはリモートなストレージ・プロバイダーとして定義されてもよい。
ストレージ抽象化層512は、それらのストレージ・プロバイダーの特性を取得してもよい。特性は、I/Oアクセス・サイズ、レイテンシー、通信プロトコル、ストレージがある種の型のアクセス(たとえばランダム・アクセス、逐次アクセス、頻繁なアクセス、低頻度のアクセスなど)により好適であるかどうかについての指示、どのようにデータがアドレス指定/参照されるか、可用性(たとえばフェイルオーバー動作が提供されるかどうか)、冗長性、バックアップ、ガーベージ収集などである。
ストレージ抽象化層512は、これらの特性を使って、ストレージ・プロバイダーのストレージを管理するためのストレージ・ビン(たとえば機能、方法、ポリシー、クラスなどを構成される)を生成してもよい。固体ドライブ・ストレージ・ビン518、ハードディスクドライブ・ストレージ・ビン520、オブジェクト・ストレージ・ビン522などである。ストレージ・ビン(storage bin)は、データの特性が対応するストレージ・プロバイダーの特性にマッチし、よって対応するストレージ・プロバイダーのストレージ内に格納されるのにふさわしいかどうか、さもなくば異なるストレージ・プロバイダーのストレージ内に格納されるべきかどうかを判定するよう構成されてもよい。ストレージ・ビンは、対応するストレージ・プロバイダーのストレージ内でどこにどのようにデータを記憶するかを決定するよう構成されてもよい。ストレージ・ビンは、冗長性ポリシー情報、バックアップ・ポリシー情報、複製ポリシー情報、圧縮情報、暗号化情報、重複除去情報、ガーベージ収集情報、ホットなデータおよびコールドなデータを識別するために使われるアクセス・メトリック、どんな型のデータが対応するストレージ・プロバイダーのストレージ内に記憶されるか(たとえばユーザー・データ、メタデータ、頻繁にアクセスされるデータ、頻度にアクセスされないデータ、逐次データ、ランダム・データ、暗号化されたデータ、圧縮されたデータ、冗長データまたはバックアップ・データなど)および/または対応するストレージ・プロバイダーのストレージのために実装すべき他の機能およびポリシーを決定するよう構成されてもよい。このようにして、ストレージ抽象化層512は、ファイル・システム506の暗号化、圧縮、重複除去などを保存するなどといった、ストレージ効率保存機能514を有する。
ストレージ抽象化層512は、固体ドライブ・ストレージ・プロバイダー526の固体ドライブ・ストレージ、ハードディスクドライブ・ストレージ・プロバイダー528のハードディスクドライブ・ストレージ、オブジェクト・ストレージ・プロバイダー530のオブジェクト・ストレージおよび/または他のストレージ・プロバイダーの他の型のストレージ(たとえばシングル磁気記録ストレージ、NVRAM、高い可用性のノード対によって提供される高可用性ストレージ、ローカルに取り付けられたストレージ、リモートに取り付けられたストレージ、NASプロトコルを通じてアクセスするストレージ、SANプロトコルを通じてアクセスするストレージなど)からストレージ集合体510を構築してもよい。このようにして、ストレージ集合体510は、不均質な型のストレージから構成され、ファイル・システム506に対しては単一のデータ・コンテナとして呈される。データがどのようにしてどこに記憶され、管理されるかの詳細はストレージ抽象化層512が、抽象化により見えなくする。
ファイル・システム506は、クライアント502にストレージ集合体510へのアクセスを提供してもよい。ファイル・システム506はストレージ集合体を単一のデータ・コンテナとして見るので、ファイル・システム506はストレージ集合体510またはその一部を、クライアント502に対して、単一のデータ・コンテナ(たとえば単一のボリューム、単一のLUNなど)として呈してもよい。一例では、ストレージ集合体510の第一の部分がクライアント502に呈されてもよく、ストレージ集合体510の第二の部分は異なるクライアントに呈されてもよく、こうして、ファイル・システム506はそれらのクライアントに、第二のレベルの間接参照を提供する。
一例では、ファイル・システム506は、クライアント502から、ストレージ集合体510にデータ(A)524を書き込むという書き込み要求504を受領する(たとえば、書き込み要求504は、クライアント502によって、ストレージ集合体510からの、ファイル・システム506によってクライアント502にエクスポートされたボリュームまたはLUNに向けられる)。ファイル・システム506は、データ(A)524をストレージ集合体510に書き込む書き込み動作508を生成してもよい。ストレージ抽象化層512は、その書き込み動作508を受け止めて、データ(A)524のデータ特性(たとえば、データ(A)524は頻繁にアクセスされるデータか、ユーザー・データか、メタデータか、ランダム・データか、逐次データか、など)を決定してもよい。ストレージ抽象化層512は、データ(A)524のデータ特性が、固体ドライブ・ストレージ・プロバイダー526の特性に、よりよくマッチすることを判別してもよい。よって、固体ドライブ・ストレージ・プロバイダー526の固体ドライブ・ストレージ内でどこでどのようにしてデータ(A)524を記憶するかを決定するために、固体ドライブ・ストレージ・ビン518が使われる。
個々のストレージ・ビンのようなストレージ抽象化層512は、特定の型のデータが累積されていくログ516(たとえば、またはストレージ・ビン毎のログ)を維持してもよく、累積されたデータが、諸ストレージ・プロバイダーのストレージ間で移動させられることができる(たとえば、コールド・データがコールド・データを記憶するのにより好適なストレージ・プロバイダーに移されることができるよう、コールド・データが第一のログに累積されてもよい;ホット・データがホット・データを記憶するのにより好適なストレージ・プロバイダーに移されることができるよう、ホット・データが第二のログに累積されてもよい;逐次アクセスされるデータが逐次アクセスされるデータを記憶するのにより好適なストレージ・プロバイダーに移されることができるよう、逐次アクセスされるデータが第三のログに累積されてもよい;ランダム・アクセスされるデータがランダム・アクセスされるデータを記憶するのにより好適なストレージ・プロバイダーに移されることができるよう、ランダム・アクセスされるデータが第四のログに累積されてもよい;ユーザー・データがユーザー・データを記憶するのにより好適なストレージ・プロバイダーに移されることができるよう、ユーザー・データが第五のログに累積されてもよい;メタデータがメタデータを記憶するのにより好適なストレージ・プロバイダーに移されることができるよう、メタデータが第六のログに累積されてもよい;など)。
一例では、データ(X)に対するアクセスの頻度が、特定のストレージ・プロバイダーについての特定のストレージ・ビンによって設定された閾値を下回ることに基づいて、データ(X)はログ516に累積されてもよい。たとえば、ストレージ・ビンがデータ(X)がアクセスされるのが前記閾値より少ないと判定すると、データ(X)はストレージ・プロバイダーのストレージから、そのストレージ・ビンのログ516に累積されてもよい。ひとたび閾値量のコールド・データがログ516内に累積したら、累積したコールド・データは、コールド・データにとってより好適な目標ストレージ・プロダイバーに送られてもよい。目標ストレージ・プロバイダーに送られる前に、累積されたコールド・データに対して、圧縮、重複除去、暗号化、データ・フォーマット(たとえばデータ・ブロックをストレージ・オブジェクトに格納する)および/または他のストレージ動作が実行されてもよい。
図5Bは、ストレージ抽象化層512が、固体ドライブ・ストレージ・プロバイダー526の固体ドライブ・ストレージ内のデータ(A)524へのアクセスの頻度が、固体ドライブ・ストレージ・プロバイダー526のための固体ドライブ・ストレージ・ビン518によって設定された閾値を下回ったことを判別することを示している。よって、固体ドライブ・ストレージ内でデータ(A)524が記憶されている記憶位置が、(たとえば固体ドライブ・ストレージ・ビン518によって)ガーベージ収集のために指定540されてもよい。その記憶位置が、その記憶位置内に新しいデータが記憶されることができるよう、のちに解放されるためである。データ(A)524は、固体ドライブ・ストレージ・ビン518によって固体ドライブ・ストレージから抽出されて、固体ドライブ・ストレージ・ビン518によって維持されているログ516に累積されてもよい。このようにして、固体ドライブ・ストレージ・ビン518によって管理されるコールド・データがログ516に累積される。特定のストレージ・プロバイダーから異なるストレージ・プロバイダーへのデータの移行のために、任意の型のデータがログに累積されうることが理解されうる(たとえば、コールド・データ、ホット・データ、ユーザー・データ、メタデータ、ランダム・アクセスされるデータ、冗長なデータなど)。
図5Cは、固体ドライブ・ストレージ・ビン518のようなストレージ抽象化層512が、閾値量のデータ(たとえばコールド・データ)がログ516に累積されたことを判別することを示している。よって、データ(X)、データ(A)524および/またはログ516に累積された他のデータを含むストレージ・オブジェクト550(たとえばファイル、ブロブ、一連のブロック、データ構造、データ・コンテナ、オブジェクトなど)が生成されてもよい。ストレージ・オブジェクト550を生成する前に、ストレージ抽象化層512はデータをフォーマットする(たとえばデータは、データを記憶するためにオブジェクト・ストレージ・プロバイダー530によって使用される型のストレージ・オブジェクトにフォーマットされてもよい)、データを重複除去する、データを暗号化する、データを圧縮するなどしてもよい。このようにして、ストレージ・オブジェクト550は、複数の関係したまたは関係しないデータが格納されうる単一のデータ・コンテナである(たとえば、データ(X)はメタデータであってもよく、データ(A)524はクライアント・ファイルの一部であってもよい)。
オブジェクト・ストレージ・ビン522は、ストレージ・オブジェクト550を、オブジェクト・ストレージ・プロバイダー530に送ってもよい。オブジェクト・ストレージ・プロバイダー530は、オブジェクト・ストレージ・プロバイダー530によって提供され、オブジェクト・ストレージ・ビンによって管理されるオブジェクト・ストレージ内にストレージ・オブジェクト550を格納する。オブジェクト・ストレージ・ビン552は、オブジェクト・メタファイルに、ストレージ・オブジェクト550のオブジェクト識別子およびストレージ・オブジェクト550中に格納されたデータのオフセットを入れてもよい。
図5Dは、クライアント502が、データ(A)にアクセス560するためにアクセス要求560をファイル・システム506に提出することを示している。一例では、クライアント502および/またはファイル・システム506は、データ(A)524の位置を認識しない(たとえば、ファイル・システム506はストレージ集合体510の、単一のデータ・コンテナとしての概念しか認識しない)。よって、ファイル・システム506はアクセス動作562をストレージ集合体510に提出し、該アクセス動作562はストレージ抽象化層512によって受け止められる〔インターセプトされる〕。一例では、クライアント502および/またはファイル・システム506は、データ(A)524を、物理的なボリューム・ブロック番号または他の任意の識別子(たとえばファイル識別子、仮想ブロック番号など)によって指定しうる。
ストレージ抽象化層512はデータ(A)524が現在、オブジェクト・ストレージ・ビン522によって管理されており、オブジェクト・ストレージ・プロバイダー530のオブジェクト・ストレージ内に記憶されていることを判別する。よって、オブジェクト・ストレージ・ビン522は、ストレージ・オブジェクト550のオブジェクト識別子およびストレージ・オブジェクト550内のデータ(A)524のオフセットを識別するために、物理的なボリューム・ブロック番号を使ってオブジェクト・メタファイルに問い合わせしてもよい。オブジェクト識別子およびオフセットは、オブジェクト・ストレージ・プロバイダー530によってオブジェクト・ストレージ内に記憶されたストレージ・オブジェクト550内のデータ(A)524へのアクセス564を提供するために、オブジェクト・ストレージ・ビン522によって使用されてもよい。
図5Eは、固体ドライブ・ストレージ・プロバイダー526の固体ドライブ・ストレージ上でガーベージ収集570を実行する固体ドライブ・ストレージ・ビン518を示している(ファイル・システム506および/または固体ドライブ・ストレージ・プロバイダー526によって提供されるいかなるガーベージ収集および/または参照回数追跡とも独立)。よって、固体ドライブ・ストレージ・ビン518は、ガーベージ収集のために指定540された記憶位置(たとえば、データ(A)524の古い/ステールな位置)を解放572してもよい。
さらに別の実施形態は、本明細書で提示される技法の一つまたは複数を実装するよう構成されたプロセッサ実行可能命令を含むコンピュータ可読媒体に関わる。これらの仕方で工夫されたコンピュータ可読媒体またはコンピュータ可読デバイスの例示的な実施形態が図6に示されており、実装600は、記録可能コンパクトディスクレコーダブル(CD-R)、記録可能デジタル多用途ディスク(DVD-R)、フラッシュドライブ、ハードディスクドライブの円盤など、その上にコンピュータ読み取り可能なデータ606がエンコードされているコンピュータ可読媒体608を含む。このコンピュータ読み取り可能なデータ606、たとえば0または1の少なくとも一方を含むバイナリー・データは、本明細書に記載の原理の一つまたは複数に従って動作するよう構成されたプロセッサ実行可能コンピュータ命令604を含む。いくつかの実施形態では、プロセッサ実行可能コンピュータ命令604は、たとえば図3の例示的な方法300の少なくともいくつかなどの方法602を実行するよう構成される。いくつかの実施形態では、プロセッサ実行可能コンピュータ命令604は、たとえば図4の例示的なシステム400の少なくともいくつかおよび/または図5A〜5Eの例示的なシステム500の少なくともいくつかなどのシステムを実装するよう構成される。多くのそのようなコンピュータ可読媒体は、本明細書に提示される技法に従って動作することが考えられている。
本明細書で説明されるプロセス、アーキテクチャーおよび/または手順は、ハードウェア、ファームウェア、および/またはソフトウェアで実装できることが理解されるであろう。また、本明細書に記載されている施策は、任意の型の専用コンピュータ(たとえば、ファイルホスト、ストレージ・サーバーおよび/またはストレージ提供アプライアンス)および/またはストレージ・システムとして具現されたまたはストレージ・システムを含むスタンドアローン・コンピューターまたはその一部を含む汎用コンピュータに適用できることも理解されるであろう。さらに、本明細書の教示は、クライアントまたはホストコンピュータに直接取り付けられたネットワーク接続ストレージ環境および/またはストレージエリアネットワークおよびディスク/アレンブリーを含むがこれらに限定されない多様なストレージ・システム・アーキテクチャーに構成することができる。したがって、ストレージ・システムは、ストレージ機能を実行するよう構成され、他の設備またはシステムに関連付けられたサブシステムに加えて、そのような配置を含むように広く解釈されるべきである。
いくつかの実施形態では、本開示で説明および/または図示される方法は、全体または一部がコンピュータ可読媒体上で実現されてもよい。コンピュータ可読媒体は、本明細書に提示される方法の一つまたは複数を実装するよう構成されたプロセッサ実行可能命令を含むことができ、その後コンピュータ・システムによって読み取ることができるこのデータを格納するための任意のメカニズムを含むことができる。コンピュータ可読媒体の例には、(ハード)ドライブ(たとえば、ネットワークアタッチトストレージ(NAS)を介してアクセス可能)、ストレージエリアネットワーク(SAN)、揮発性および不揮発性メモリ、たとえば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)および/またはフラッシュメモリ、コンパクトディスク読み出し専用メモリ(CD-ROM)、CD-R、書き換え可能型コンパクトディスク(CD-RW)、DVD、カセット、磁気テープ、磁気ディスク・ストレージ、光学式または非光学式データ・ストレージ・デバイスおよび/またはデータを格納するために使用できる他の任意の媒体を含む。
主題は構造的特徴または方法論的工程に特有の言辞で記述されてきたが、添付の請求項において定義される主題は必ずしも上記の特定の特徴または工程に限定されないことを理解されたい。むしろ、上記の特定の特徴および工程は、請求項の少なくともいくつかを実装する例示的な形態として開示されている。
本明細書では、実施形態のさまざまな動作が提供される。動作の一部またはすべてが記述される順序は、これらの動作が必ず順序依存であることを含意すると解釈されるべきではない。本稿の恩恵を与えられれば、代替的な順序が理解されるであろう。さらに、本明細書で提供される各実施形態に必ずしもすべての動作が存在するとは限らないことを理解されたい。また、一部の実施形態ではすべての動作が必要なわけではないことも理解されよう。
さらに、特許請求される主題は、開示される主題を実装するようコンピュータを制御するよう、ソフトウェア、ファームウェア、ハードウェア、またはそれらの任意の組み合わせを生成する、標準的なアプリケーションまたはエンジニアリング技術を使用する方法、装置、または製造物として実装される。本明細書で使用される「製造物」という用語は、任意のコンピュータ可読デバイス、担体、または媒体からアクセス可能なコンピュータ・アプリケーションを包含することが意図されている。もちろん、特許請求される主題の範囲または精神から逸脱することなく、この構成に多くの修正を加えることができる。
本出願で使用されるところでは、用語「コンポーネント」、「モジュール」、「システム」、「インターフェース」などは、一般に、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェアまたは実行中のソフトウェアのいずれかであれ、コンピュータ関連エンティティを指すことが意図されている。たとえば、コンポーネントは、プロセッサ上で実行中のプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行スレッド、アプリケーション、またはコンピュータを含む。例として、コントローラで実行されているアプリケーションとコントローラの両方がコンポーネントであることができる。プロセスまたは実行のスレッド内にある一つまたは複数のコンポーネントとコンポーネントは、一つのコンピュータに局在化されても、二つ以上のコンピュータの間で分散されてもよい。
さらに、本明細書では「例示的」は、例、事例、例解などのはたらきをすることを意味するために使用され、必ずしも有利ではない。本願で使用される「または」は、排他的な「または」ではなく、包含的な「または」を意味することが意図されている。さらに、本願で使用される「a」および「an」は、そうでないことが特に明記されない限り、または単数形を対象とすることが文脈から明確でない限り、「一つまたは複数」を意味すると解釈される。また、AおよびBの少なくとも一つなどは一般にAまたはBおよび/またはAとBの両方を意味する。さらに、「含む」、「有する」、「もつ」、「伴う」、またはそれらの変形が使用されるとき、そのような用語は、用語「含む」と同様に包含的であることが意図されている。
特許請求される主題の範囲または精神から逸脱することなく、本開示に対して多くの修正を行なうことができる。特にそうでないことを明記しない限り、「第一」、「第二」などは、時間的側面、空間的側面、順序などを含意することは意図されていない。むしろ、そのような用語は、機能、要素、項目などについての識別子、名称などとして使われているだけである。たとえば、第一の組の情報および第二の組の情報は、一般に、情報セットAおよび情報セットBまたは2つの異なるまたは2つの同一の情報セットまたは同じ情報セットに対応する。
また、本開示は、一つまたは複数の実装に関して示され、説明されてきたが、本明細書および添付図面を読み、理解することに基づいて、当業者には等価な変更および修正が思い浮かぶであろう。本開示は、そのようなすべての修正および変更を含み、添付の特許請求の範囲によってのみ制限される。特に、上記のコンポーネント(たとえば、要素、資源など)によって実行されるさまざまな機能に関して、そのようなコンポーネントを説明するために使用される用語は、特に指定がない限り、たとえ開示されている構造と構造的に等価でなくても、記載されるコンポーネントの指定された機能を実行する(たとえば、機能的に等価な)任意のコンポーネントに対応することが意図されている。さらに、本開示の特定の特徴がいくつかの実装の一つのみに関して開示されていることがあるが、そのような特徴は、任意の所与または特定の用途にとって望ましいおよび有利でありうるよう他の実装の一つまたは複数の他の特徴と組み合わされてもよい。
いくつかの態様を記載しておく。
〔態様1〕
ストレージを提供する方法であって:
ファイル・システムとストレージ環境との間の間接参照層としてストレージ抽象化層を利用して:
前記ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得し;
第一のストレージ・プロバイダーの第一のストレージを管理するための第一のストレージ・ビンを、前記第一のストレージ・プロバイダーの第一の特性に基づいて生成し;
第二のストレージ・プロバイダーの第二のストレージを管理するための第二のストレージ・ビンを、前記第二のストレージ・プロバイダーの第二の特性に基づいて生成し;
第一のストレージ型を有する前記第一のストレージおよび前記第一のストレージ型とは異なる第二のストレージ型を有する前記第二のストレージからストレージ集合体を生成し;
前記ストレージ集合体を単一のストレージ・コンテナとして前記ファイル・システムに呈することを含む、
方法。
〔態様2〕
前記ストレージ抽象化層を利用して:
前記第一のストレージ内の第一のデータへのアクセスの第一の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された閾値より低いことを判別し;
前記第一のデータをログに累積し;
前記第一のストレージ内の第二のデータへのアクセスの第二の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された前記閾値より低いことを判別し;
前記第二のデータを前記ログに累積することを含む、
態様1記載の方法。
〔態様3〕
前記ストレージ抽象化層を利用して:
閾値量のデータが前記ログ内に累積されたことを判別し;
前記ログからの累積されたデータを含み、前記第二のストレージのデータ・フォーマットに対応するストレージ・オブジェクトを生成し;
前記ストレージ・オブジェクトを、前記第二のストレージ・ビンを通じて前記第二のストレージ・プロバイダーに、前記第二のストレージ内での記憶のために送ることを含む、
態様2記載の方法。
〔態様4〕
前記ストレージ抽象化層を利用して:
前記ファイル・システムから、前記第一のデータについての物理ボリューム・ブロック番号を含む、前記第一のデータを求めるアクセス要求を受領し;
前記物理ボリューム・ブロック番号を使ってオブジェクト・メタファイルに問い合わせして、前記ストレージ・オブジェクトのオブジェクト識別子および前記ストレージ・オブジェクト内での前記第一のデータのオフセットを識別し;
前記オブジェクト識別子および前記オフセットを使って、前記第二のストレージ・プロバイダーによって前記第二のストレージ内に記憶されている前記ストレージ・オブジェクト内の前記第一のデータへのアクセスを提供することを含む、
態様3記載の方法。
〔態様5〕
前記ストレージ抽象化層を利用して:
前記第一のストレージ・ビンを使って、前記第一のストレージ内のデータへの参照の参照回数を追跡し、参照回数が0のデータを前記第一のストレージから解放し;
前記第二のストレージ・ビンを使って、前記第二のストレージ内のデータへの参照の参照回数を追跡し、参照回数が0のデータを前記第二のストレージから解放することを含む、
態様1記載の方法。
〔態様6〕
前記ストレージ抽象化層を利用して:
前記ストレージ集合体内に第一のデータを記憶するための、前記ファイル・システムからの要求を受領し;
前記第一のデータのデータ特性が前記第一のストレージ・プロバイダーの特性に対応することに基づいて、前記第一のデータを、前記第一のストレージ・ビンを通じて、前記第二のストレージにではなく、前記第一のストレージの第一の記憶位置に選択的に記憶し;
前記第一のデータを、前記第一のストレージから前記第二のストレージ・プロバイダーの前記第二のストレージの第二の記憶位置に移すことを含む、
態様1記載の方法。
〔態様7〕
前記ストレージ抽象化層を利用して:
前記ファイル・システムから、前記第一のデータについての上書き要求を受領し;
前記上書き要求のデータを新しいデータとして第三の記憶位置に記憶し;
前記第二のストレージ・ビンを使って前記第二の記憶位置にある前記第一のデータを、ガーベージ収集のためにマークすることを含む、
態様6記載の方法。
〔態様8〕
前記第三の記憶位置は前記第一のストレージ内である、態様7記載の方法。
〔態様9〕
前記第三の記憶位置は前記第二のストレージ内である、態様7記載の方法。
〔態様10〕
前記ストレージ抽象化層を利用して、複数のデータを、該データおよびストレージ・プロバイダーの特性に基づいて、諸ストレージ・ビンを通じて、前記複数のストレージ・プロバイダーの対応するストレージに選択的に記憶することを含み、特性は、逐次アクセス特性、ランダム・アクセス特性、ユーザー・データ特性、メタデータ特性、頻繁にアクセスされる特性および頻繁にアクセスされない特性のうちの一つを含む、態様1ないし9のうちいずれか一項記載の方法。
〔態様11〕
機械によって実行されたときに該機械に態様1ないし10のうちいずれか一項記載の方法を実行させる方法を実行するための命令を有している非一時的な機械可読媒体。
〔態様12〕
方法を実行するための命令を有している非一時的な機械可読媒体であって、前記命令は、機械によって実行されたときに該機械に:
ファイル・システムとストレージ環境との間の間接参照層としてストレージ抽象化層を利用して:
前記ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得し;
第一のストレージ・プロバイダーの第一のストレージを管理するための第一のストレージ・ビンを、前記第一のストレージ・プロバイダーの第一の特性に基づいて生成し;
第二のストレージ・プロバイダーの第二のストレージを管理するための第二のストレージ・ビンを、前記第二のストレージ・プロバイダーの第二の特性に基づいて生成し;
第一のストレージ型を有する前記第一のストレージおよび前記第一のストレージ型とは異なる第二のストレージ型を有する前記第二のストレージからストレージ集合体を生成し;
前記ストレージ集合体を単一のストレージ・コンテナとして前記ファイル・システムに呈し;
前記ストレージ集合体内にデータを記憶するための、前記ファイル・システムからの要求を受領し;
前記データの特性が前記第一のストレージ・プロバイダーの特性に対応することに基づいて、前記データが、前記第二のストレージではなく、前記第一のストレージ内に記憶されるべきであると決定することを実行させる、
非一時的な機械可読媒体。
〔態様13〕
前記命令が前記機械に:
前記ストレージ抽象化層を利用して、前記第一の特性の第一の部分集合および前記第二の特性の第二の部分集合を前記ファイル・システムに呈することを実行させる、
態様11記載の非一時的な機械可読媒体。
〔態様14〕
前記第一のストレージ・プロバイダーが第一のノードであり、前記第二のストレージ・プロバイダーが第二のノードであり、前記ストレージ集合体が前記第一のノードおよび前記第二のノードにまたがってホストされる、態様11記載の非一時的な機械可読媒体。
〔態様15〕
前記ファイル・システムが複数のノードにまたがってホストされる、態様11ないし14のうちいずれか一項記載の非一時的な機械可読媒体。
〔態様16〕
方法を実行するための命令が記憶されている、機械実行可能コードを有する機械可読媒体を含むメモリと;
前記メモリに結合されたプロセッサであって、前記プロセッサは、前記プロセッサに態様1ないし10のうちいずれか一項記載の方法を実行させる前記機械実行可能コードを実行するよう構成されている、プロセッサとを有する、
ストレージを提供するためのコンピューティング装置。
〔態様17〕
方法を実行するための命令が記憶されている、機械実行可能コードを有する機械可読媒体を含むメモリと;
前記メモリに結合されたプロセッサとを有する、
ストレージを提供するためのコンピューティング装置であって、
前記プロセッサは:
ファイル・システムとストレージ環境との間の間接参照層としてストレージ抽象化層を利用して:
前記ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得し;
第一のストレージ・プロバイダーの第一のストレージを管理するための第一のストレージ・ビンを、前記第一のストレージ・プロバイダーの第一の特性に基づいて生成し;
第二のストレージ・プロバイダーの第二のストレージを管理するための第二のストレージ・ビンを、前記第二のストレージ・プロバイダーの第二の特性に基づいて生成し;
第一のストレージ型を有する前記第一のストレージおよび前記第一のストレージ型とは異なる第二のストレージ型を有する前記第二のストレージからストレージ集合体を生成し;
前記ストレージ集合体を単一のストレージ・コンテナとして前記ファイル・システムに呈し;
前記特性に基づいてストレージ・プロバイダーをまたいでデータを選択的に記憶することを前記プロセッサに実行させる前記機械実行可能コードを実行するよう構成されている、
コンピューティング装置。
〔態様18〕
前記第一のストレージ・プロバイダーは第一のI/Oサイズをサポートし、前記第二のストレージ・プロバイダーは前記第一のI/Oサイズとは異なる第二のI/Oサイズをサポートする、態様17記載のコンピューティング装置。
〔態様19〕
前記ファイル・システムは前記第一のI/Oサイズをサポートし、前記第二のI/Oサイズをサポートしない、態様18記載のコンピューティング装置。
〔態様20〕
前記機械実行可能コードが前記プロセッサに:
前記ストレージ抽象化層を利用して:
前記ファイル・システムから圧縮されたデータを受領し;
前記圧縮されたデータを、圧縮された状態で、前記第一のストレージ内に記憶することを実行させる、
態様16記載のコンピューティング装置。
〔態様21〕
前記機械実行可能コードが前記プロセッサに:
前記ストレージ抽象化層を利用して:
前記ファイル・システムから暗号化されたデータを受領し;
前記暗号化されたデータを、暗号化された状態で、前記第一のストレージ内に記憶することを実行させる、
態様16記載のコンピューティング装置。
〔態様22〕
前記機械実行可能コードが前記プロセッサに:
前記複数のストレージ・プロバイダーに関し、前記ファイル・システムによって提供される重複除去を保持させる、
態様16ないし21のうちいずれか一項記載のコンピューティング装置。

Claims (20)

  1. ストレージを提供する方法であって:
    ファイル・システムとストレージ環境との間の間接参照層としてストレージ抽象化層を利用して:
    前記ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得し;
    第一のストレージ・プロバイダーの第一のストレージを管理するための第一のストレージ・ビンを、前記第一のストレージ・プロバイダーの第一の特性に基づいて生成し;
    第二のストレージ・プロバイダーの第二のストレージを管理するための第二のストレージ・ビンを、前記第二のストレージ・プロバイダーの第二の特性に基づいて生成し;
    第一のストレージ型を有する前記第一のストレージおよび前記第一のストレージ型とは異なる第二のストレージ型を有する前記第二のストレージからストレージ集合体を生成し;
    前記ストレージ集合体を単一のストレージ・コンテナとして前記ファイル・システムに呈することを含
    当該方法がさらに、前記ストレージ抽象化層を利用して:
    前記第一のストレージ内の第一のデータへのアクセスの第一の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された閾値より低いことを判別し;
    前記第一のデータをログに累積し;
    前記第一のストレージ内の第二のデータへのアクセスの第二の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された前記閾値より低いことを判別し;
    前記第二のデータを前記ログに累積し;
    閾値量のデータが前記ログ内に累積されたことを判別し;
    前記ログからの累積されたデータを含み、前記第二のストレージのデータ・フォーマットに対応するストレージ・オブジェクトを生成し;
    前記ストレージ・オブジェクトを、前記第二のストレージ・ビンを通じて前記第二のストレージ・プロバイダーに、前記第二のストレージ内での記憶のために送ることを含む
    方法。
  2. 前記ストレージ抽象化層を利用して:
    前記ファイル・システムから、前記第一のデータについての物理ボリューム・ブロック番号を含む、前記第一のデータを求めるアクセス要求を受領し;
    前記物理ボリューム・ブロック番号を使ってオブジェクト・メタファイルに問い合わせして、前記ストレージ・オブジェクトのオブジェクト識別子および前記ストレージ・オブジェクト内での前記第一のデータのオフセットを識別し;
    前記オブジェクト識別子および前記オフセットを使って、前記第二のストレージ・プロバイダーによって前記第二のストレージ内に記憶されている前記ストレージ・オブジェクト内の前記第一のデータへのアクセスを提供することを含む、
    請求項記載の方法。
  3. 前記ストレージ抽象化層を利用して:
    前記第一のストレージ・ビンを使って、前記第一のストレージ内のデータへの参照の参照回数を追跡し、参照回数が0のデータを前記第一のストレージから解放し;
    前記第二のストレージ・ビンを使って、前記第二のストレージ内のデータへの参照の参照回数を追跡し、参照回数が0のデータを前記第二のストレージから解放することを含む、
    請求項1記載の方法。
  4. 前記ストレージ抽象化層を利用して:
    前記ストレージ集合体内に第一のデータを記憶するための、前記ファイル・システムからの要求を受領し;
    前記第一のデータのデータ特性が前記第一のストレージ・プロバイダーの特性に対応することに基づいて、前記第一のデータを、前記第一のストレージ・ビンを通じて、前記第二のストレージにではなく、前記第一のストレージの第一の記憶位置に選択的に記憶し;
    前記第一のデータを、前記第一のストレージから前記第二のストレージ・プロバイダーの前記第二のストレージの第二の記憶位置に移すことを含む、
    請求項1記載の方法。
  5. 前記ストレージ抽象化層を利用して:
    前記ファイル・システムから、前記第一のデータについての上書き要求を受領し;
    前記上書き要求のデータを新しいデータとして第三の記憶位置に記憶し;
    前記第二のストレージ・ビンを使って前記第二の記憶位置にある前記第一のデータを、ガーベージ収集のためにマークすることを含む、
    請求項記載の方法。
  6. 前記第三の記憶位置は前記第一のストレージ内である、請求項記載の方法。
  7. 前記第三の記憶位置は前記第二のストレージ内である、請求項記載の方法。
  8. 前記ストレージ抽象化層を利用して、複数のデータを、該データおよびストレージ・プロバイダーの特性に基づいて、諸ストレージ・ビンを通じて、前記複数のストレージ・プロバイダーの対応するストレージに選択的に記憶することを含み、特性は、逐次アクセス特性、ランダム・アクセス特性、ユーザー・データ特性、メタデータ特性、頻繁にアクセスされる特性および頻繁にアクセスされない特性のうちの一つを含む、請求項1ないしのうちいずれか一項記載の方法。
  9. 機械によって実行されたときに該機械に請求項1ないしのうちいずれか一項記載の方法を実行させる方法を実行するための命令を有している非一時的な機械可読媒体。
  10. 方法を実行するための命令を有している非一時的な機械可読媒体であって、前記命令は、機械によって実行されたときに該機械に:
    ファイル・システムとストレージ環境との間の間接参照層としてストレージ抽象化層を利用して:
    前記ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得し;
    第一のストレージ・プロバイダーの第一のストレージを管理するための第一のストレージ・ビンを、前記第一のストレージ・プロバイダーの第一の特性に基づいて生成し;
    第二のストレージ・プロバイダーの第二のストレージを管理するための第二のストレージ・ビンを、前記第二のストレージ・プロバイダーの第二の特性に基づいて生成し;
    第一のストレージ型を有する前記第一のストレージおよび前記第一のストレージ型とは異なる第二のストレージ型を有する前記第二のストレージからストレージ集合体を生成し;
    前記ストレージ集合体を単一のストレージ・コンテナとして前記ファイル・システムに呈し;
    前記ストレージ集合体内にデータを記憶するための、前記ファイル・システムからの要求を受領し;
    前記データの特性が前記第一のストレージ・プロバイダーの特性に対応することに基づいて、前記データが、前記第二のストレージではなく、前記第一のストレージ内に記憶されるべきであると決定することを実行させるものであり
    前記命令は、機械によって実行されたときに該機械にさらに、前記ストレージ抽象化層を利用して:
    前記第一のストレージ内の第一のデータへのアクセスの第一の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された閾値より低いことを判別し;
    前記第一のデータをログに累積し;
    前記第一のストレージ内の第二のデータへのアクセスの第二の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された前記閾値より低いことを判別し;
    前記第二のデータを前記ログに累積し;
    閾値量のデータが前記ログ内に累積されたことを判別し;
    前記ログからの累積されたデータを含み、前記第二のストレージのデータ・フォーマットに対応するストレージ・オブジェクトを生成し;
    前記ストレージ・オブジェクトを、前記第二のストレージ・ビンを通じて前記第二のストレージ・プロバイダーに、前記第二のストレージ内での記憶のために送ることを実行させるものである、
    非一時的な機械可読媒体。
  11. 前記命令が前記機械に:
    前記ストレージ抽象化層を利用して、前記第一の特性の第一の部分集合および前記第二の特性の第二の部分集合を前記ファイル・システムに呈することを実行させる、
    請求項10記載の非一時的な機械可読媒体。
  12. 前記第一のストレージ・プロバイダーが第一のノードであり、前記第二のストレージ・プロバイダーが第二のノードであり、前記ストレージ集合体が前記第一のノードおよび前記第二のノードにまたがってホストされる、請求項記載の非一時的な機械可読媒体。
  13. 前記ファイル・システムが複数のノードにまたがってホストされる、請求項ないし12のうちいずれか一項記載の非一時的な機械可読媒体。
  14. 方法を実行するための命令が記憶されている、機械実行可能コードを有する機械可読媒体を含むメモリと;
    前記メモリに結合されたプロセッサであって、前記プロセッサは、前記プロセッサに請求項1ないしのうちいずれか一項記載の方法を実行させる前記機械実行可能コードを実行するよう構成されている、プロセッサとを有する、
    ストレージを提供するためのコンピューティング装置。
  15. 方法を実行するための命令が記憶されている、機械実行可能コードを有する機械可読媒体を含むメモリと;
    前記メモリに結合されたプロセッサとを有する、
    ストレージを提供するためのコンピューティング装置であって、
    前記プロセッサは:
    ファイル・システムとストレージ環境との間の間接参照層としてストレージ抽象化層を利用して:
    前記ストレージ環境の不均質な型のストレージへのアクセスを提供する複数のストレージ・プロバイダーの特性を取得し;
    第一のストレージ・プロバイダーの第一のストレージを管理するための第一のストレージ・ビンを、前記第一のストレージ・プロバイダーの第一の特性に基づいて生成し;
    第二のストレージ・プロバイダーの第二のストレージを管理するための第二のストレージ・ビンを、前記第二のストレージ・プロバイダーの第二の特性に基づいて生成し;
    第一のストレージ型を有する前記第一のストレージおよび前記第一のストレージ型とは異なる第二のストレージ型を有する前記第二のストレージからストレージ集合体を生成し;
    前記ストレージ集合体を単一のストレージ・コンテナとして前記ファイル・システムに呈し;
    前記特性に基づいてストレージ・プロバイダーをまたいでデータを選択的に記憶することを前記プロセッサに実行させる前記機械実行可能コードを実行するよう構成されており
    前記プロセッサはさらに、前記ストレージ抽象化層を利用して:
    前記第一のストレージ内の第一のデータへのアクセスの第一の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された閾値より低いことを判別し;
    前記第一のデータをログに累積し;
    前記第一のストレージ内の第二のデータへのアクセスの第二の頻度が前記第一のストレージについて前記第一のストレージ・ビンによって設定された前記閾値より低いことを判別し;
    前記第二のデータを前記ログに累積し;
    閾値量のデータが前記ログ内に累積されたことを判別し;
    前記ログからの累積されたデータを含み、前記第二のストレージのデータ・フォーマットに対応するストレージ・オブジェクトを生成し;
    前記ストレージ・オブジェクトを、前記第二のストレージ・ビンを通じて前記第二のストレージ・プロバイダーに、前記第二のストレージ内での記憶のために送るよう構成されている、
    コンピューティング装置。
  16. 前記第一のストレージ・プロバイダーは第一のI/Oサイズをサポートし、前記第二のストレージ・プロバイダーは前記第一のI/Oサイズとは異なる第二のI/Oサイズをサポートする、請求項15記載のコンピューティング装置。
  17. 前記ファイル・システムは前記第一のI/Oサイズをサポートし、前記第二のI/Oサイズをサポートしない、請求項16記載のコンピューティング装置。
  18. 前記機械実行可能コードが前記プロセッサに:
    前記ストレージ抽象化層を利用して:
    前記ファイル・システムから圧縮されたデータを受領し;
    前記圧縮されたデータを、圧縮された状態で、前記第一のストレージ内に記憶することを実行させる、
    請求項14記載のコンピューティング装置。
  19. 前記機械実行可能コードが前記プロセッサに:
    前記ストレージ抽象化層を利用して:
    前記ファイル・システムから暗号化されたデータを受領し;
    前記暗号化されたデータを、暗号化された状態で、前記第一のストレージ内に記憶することを実行させる、
    請求項14記載のコンピューティング装置。
  20. 前記機械実行可能コードが前記プロセッサに:
    前記複数のストレージ・プロバイダーに関し、前記ファイル・システムによって提供される重複除去を保持させる、
    請求項14ないし19のうちいずれか一項記載のコンピューティング装置。
JP2019552178A 2017-03-23 2018-03-13 複合集合体アーキテクチャー Active JP6890675B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021087269A JP2021168138A (ja) 2017-03-23 2021-05-24 複合集合体アーキテクチャー

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/467,293 2017-03-23
US15/467,293 US10521143B2 (en) 2017-03-23 2017-03-23 Composite aggregate architecture
PCT/US2018/022140 WO2018175144A1 (en) 2017-03-23 2018-03-13 Composite aggregate architecture

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2021087269A Division JP2021168138A (ja) 2017-03-23 2021-05-24 複合集合体アーキテクチャー

Publications (2)

Publication Number Publication Date
JP2020510265A JP2020510265A (ja) 2020-04-02
JP6890675B2 true JP6890675B2 (ja) 2021-06-18

Family

ID=61868868

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2019552178A Active JP6890675B2 (ja) 2017-03-23 2018-03-13 複合集合体アーキテクチャー
JP2021087269A Pending JP2021168138A (ja) 2017-03-23 2021-05-24 複合集合体アーキテクチャー

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2021087269A Pending JP2021168138A (ja) 2017-03-23 2021-05-24 複合集合体アーキテクチャー

Country Status (5)

Country Link
US (4) US10521143B2 (ja)
EP (1) EP3602267A1 (ja)
JP (2) JP6890675B2 (ja)
CN (1) CN110603518B (ja)
WO (1) WO2018175144A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10521143B2 (en) 2017-03-23 2019-12-31 Netapp Inc. Composite aggregate architecture
US10552389B2 (en) * 2017-04-28 2020-02-04 Oath Inc. Object and sequence number management
CN108829344A (zh) * 2018-05-24 2018-11-16 北京百度网讯科技有限公司 数据存储方法、装置及存储介质
US10884627B2 (en) * 2018-09-26 2021-01-05 International Business Machines Corporation Compacting data in a dispersed storage network
JP7323801B2 (ja) * 2019-11-06 2023-08-09 富士通株式会社 情報処理装置および情報処理プログラム
US20220398282A1 (en) * 2021-06-10 2022-12-15 Fidelity Information Services, Llc Systems and methods for multi-vendor storage infrastructure in a dashboard
US11567900B1 (en) * 2021-07-23 2023-01-31 Databricks, Inc. Scaling delta table optimize command
US20230130019A1 (en) * 2021-10-27 2023-04-27 Bank Of America Corporation Abstraction Layer for Efficient Transliteration of Machine Interpretable Languages

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216460A (ja) * 2002-01-21 2003-07-31 Hitachi Ltd 階層ストレージ装置及びその制御装置
JP3748847B2 (ja) * 2002-10-30 2006-02-22 コナミ株式会社 格納装置、プログラム、ならびに、格納方法
JP4322031B2 (ja) * 2003-03-27 2009-08-26 株式会社日立製作所 記憶装置
US8412685B2 (en) * 2004-07-26 2013-04-02 Riverbed Technology, Inc. Method and system for managing data
WO2008018446A1 (fr) * 2006-08-08 2008-02-14 Panasonic Corporation Contrôleur de mémoire, dispositif de mémoire non-volatile, dispositif d'accès, et système de mémoire non-volatile
US7660959B2 (en) * 2006-09-28 2010-02-09 International Business Machines Corporation Managing encryption for volumes in storage pools
EP2074544A2 (en) * 2006-10-09 2009-07-01 SanDisk IL Ltd. Application dependent storage control
EP2115593B1 (en) * 2007-01-26 2018-10-24 Intel Corporation Hierarchical immutable content-addressable memory processor
US7657572B2 (en) * 2007-03-06 2010-02-02 Microsoft Corporation Selectively utilizing a plurality of disparate solid state storage locations
KR101517761B1 (ko) * 2008-07-30 2015-05-06 시게이트 테크놀로지 엘엘씨 데이터 저장 위치 관리 방법 및 이를 데이터 저장 시스템
US7653797B1 (en) * 2008-12-31 2010-01-26 International Business Machines Corporation Optimizing a marking phase in mark-sweep garbage collectors by reducing paging activity
US8452932B2 (en) * 2010-01-06 2013-05-28 Storsimple, Inc. System and method for efficiently creating off-site data volume back-ups
US8443153B1 (en) * 2010-01-06 2013-05-14 Netapp, Inc. Dynamic balancing of performance with block sharing in a storage system
US8463825B1 (en) * 2010-04-27 2013-06-11 Tintri Inc. Hybrid file system for virtual machine storage
US8732426B2 (en) * 2010-09-15 2014-05-20 Pure Storage, Inc. Scheduling of reactive I/O operations in a storage environment
US8621161B1 (en) * 2010-09-23 2013-12-31 Amazon Technologies, Inc. Moving data between data stores
US8732518B2 (en) 2011-04-13 2014-05-20 Netapp, Inc. Reliability based data allocation and recovery in a storage system
US8539008B2 (en) * 2011-04-29 2013-09-17 Netapp, Inc. Extent-based storage architecture
US8600949B2 (en) * 2011-06-21 2013-12-03 Netapp, Inc. Deduplication in an extent-based architecture
US9294564B2 (en) * 2011-06-30 2016-03-22 Amazon Technologies, Inc. Shadowing storage gateway
US8832035B2 (en) * 2011-08-30 2014-09-09 Netapp, Inc. System and method for retaining deduplication in a storage object after a clone split operation
US8918378B1 (en) * 2011-08-31 2014-12-23 Netapp, Inc. Cloning using an extent-based architecture
US8886910B2 (en) * 2011-09-12 2014-11-11 Microsoft Corporation Storage device drivers and cluster participation
US9495173B2 (en) * 2011-12-19 2016-11-15 Sandisk Technologies Llc Systems and methods for managing data in a device for hibernation states
US8782344B2 (en) * 2012-01-12 2014-07-15 Fusion-Io, Inc. Systems and methods for managing cache admission
US8751725B1 (en) * 2012-01-27 2014-06-10 Netapp, Inc. Hybrid storage aggregate
US20130238851A1 (en) 2012-03-07 2013-09-12 Netapp, Inc. Hybrid storage aggregate block tracking
US9043530B1 (en) * 2012-04-09 2015-05-26 Netapp, Inc. Data storage within hybrid storage aggregate
JP6035991B2 (ja) 2012-08-15 2016-11-30 富士通株式会社 ストレージ制御方法、およびストレージ制御装置
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
WO2014101117A1 (zh) 2012-12-28 2014-07-03 华为技术有限公司 数据存储方法和存储设备
US8959263B2 (en) * 2013-01-08 2015-02-17 Apple Inc. Maintaining I/O priority and I/O sorting
US9329789B1 (en) * 2013-10-14 2016-05-03 Marvell International Ltd. Methods and apparatus for efficiently operating on a storage device
US20150269032A1 (en) * 2014-03-18 2015-09-24 Netapp, Inc. Backing up data to cloud data storage while maintaining storage efficiency
CN106030499B (zh) * 2014-05-28 2019-03-05 株式会社日立制作所 计算机系统以及计算机系统控制方法
JP6406920B2 (ja) 2014-08-21 2018-10-17 三菱電機株式会社 表示装置およびその駆動方法
US10521124B1 (en) * 2014-09-26 2019-12-31 EMC IP Holding Company LLC Application-specific workload-based I/O performance management
JP6005116B2 (ja) 2014-09-30 2016-10-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 特定のアプリケーションによってリコールされたファイルの自動化されたマイグレーション
US9588977B1 (en) * 2014-09-30 2017-03-07 EMC IP Holding Company LLC Data and metadata structures for use in tiering data to cloud storage
US9471228B2 (en) * 2014-11-20 2016-10-18 Red Hat, Inc. Caching policies for solid state disks
US10191914B2 (en) * 2015-03-31 2019-01-29 EMC IP Holding Company LLC De-duplicating distributed file system using cloud-based object store
US9645885B2 (en) * 2015-05-14 2017-05-09 Amplidata Nv Hybrid distributed storage system
KR102509540B1 (ko) * 2015-06-30 2023-03-14 삼성전자주식회사 저장 장치 및 그것의 가비지 컬렉션 방법
US10771550B2 (en) * 2016-12-28 2020-09-08 Amazon Technologies, Inc. Data storage system with redundant internal networks
US10521143B2 (en) 2017-03-23 2019-12-31 Netapp Inc. Composite aggregate architecture

Also Published As

Publication number Publication date
US11880578B2 (en) 2024-01-23
US10521143B2 (en) 2019-12-31
CN110603518B (zh) 2023-08-18
US11188246B2 (en) 2021-11-30
JP2020510265A (ja) 2020-04-02
US20200089422A1 (en) 2020-03-19
EP3602267A1 (en) 2020-02-05
US20240184470A1 (en) 2024-06-06
WO2018175144A1 (en) 2018-09-27
US20180275907A1 (en) 2018-09-27
US20220083247A1 (en) 2022-03-17
JP2021168138A (ja) 2021-10-21
CN110603518A (zh) 2019-12-20

Similar Documents

Publication Publication Date Title
JP6890675B2 (ja) 複合集合体アーキテクチャー
US11620064B2 (en) Asynchronous semi-inline deduplication
US10769024B2 (en) Incremental transfer with unused data block reclamation
US11080237B2 (en) Stale data detection
US10761750B2 (en) Selectively storing data into allocation areas using streams
US11347605B2 (en) Cross-platform replication
EP4139802B1 (en) Methods for managing input-ouput operations in zone translation layer architecture and devices thereof
US11709603B2 (en) Multi-tier write allocation
US11487723B2 (en) Object and sequence number management
US11221928B2 (en) Methods for cache rewarming in a failover domain and devices thereof

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191128

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210409

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: 20210427

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210525

R150 Certificate of patent or registration of utility model

Ref document number: 6890675

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250