(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2016-212819(P2016-212819A)
(43)【公開日】2016年12月15日
(54)【発明の名称】分散仮想アレイを用いるデータストレージシステム
(51)【国際特許分類】
G06F 3/06 20060101AFI20161118BHJP
G06F 13/10 20060101ALI20161118BHJP
G06F 12/00 20060101ALI20161118BHJP
【FI】
G06F3/06 540
G06F3/06 301G
G06F13/10 340A
G06F3/06 302A
G06F12/00 514E
G06F12/00 514M
【審査請求】未請求
【請求項の数】17
【出願形態】OL
【外国語出願】
【全頁数】17
(21)【出願番号】特願2015-130381(P2015-130381)
(22)【出願日】2015年6月29日
(31)【優先権主張番号】14/710541
(32)【優先日】2015年5月12日
(33)【優先権主張国】US
(71)【出願人】
【識別番号】515178225
【氏名又は名称】ダトリウム インコーポレーテッド
【氏名又は名称原語表記】Datrium, Inc.
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100169823
【弁理士】
【氏名又は名称】吉澤 雄郎
(74)【代理人】
【識別番号】100163511
【弁理士】
【氏名又は名称】辻 啓太
(72)【発明者】
【氏名】アール ヒューゴ パターソン ザ サード
(72)【発明者】
【氏名】ブライアン バイルズ
(72)【発明者】
【氏名】ボリス ワイスマン
(72)【発明者】
【氏名】サザーラ レディ
(72)【発明者】
【氏名】ガネシュ ベンキタキャラム
(57)【要約】 (修正有)
【課題】分散ストレージシステムにおいてフレキシビリティ、スケーラビリティを提供するとともに、サーバ間の効率的なデータ共有を実現する。
【解決手段】データストレージシステムは、複数のホストサーバ100を備え、各ホストサーバはデータをキャッシュするキャッシュ113を有し、ネットワーク200を介して複数のストレージノード300と通信し、各ストレージノードは永続性ストレージ装置340−1、340−N、ストレージコントローラ320−1、320−2、320−N及び不揮発性メモリ装置330を有する。ホストサーバ内のプロセスはデータストレージへの書込み/読出し要求を発行し、書込み要求に対応するデータは最初に不揮発性メモリ装置に書き込んで圧縮、重複排除等の処理機能を実行する。ストレージノードに書き込まれたデータは、異なるホストサーバによるその後の読出しに利用できる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
複数のホストサーバ(100)を備え、各ホストサーバは少なくとも1つのプロセッサ(111)を含み、少なくとも1つのネットワーク(200)を介して複数のストレージノード(300)と通信し、少なくとも1つのストレージノードは少なくとも1つの永続性ストレージ装置(340−1,340−N)及び少なくとも1つのストレージコントローラ(320−1,320−2,..,320−N)を含む、データストレージシステムであって、
前記ホストサーバの少なくとも1つは、
データストレージ読出し/書込み要求を発行する少なくとも1つのプロセスと、
前記ストレージノードの少なくとも1つに格納されたデータをキャッシュするように構成されたキャッシュ(113)を構成するメモリ装置と、
書込み要求に対応するデータを少なくとも1つのリモート不揮発性メモリ装置(330)に書き込むように構成されたシステムソフトウェア(115)コンポーネントと、
前記少なくとも1つのプロセッサで実行されたとき、前記プロセッサに少なくとも1つのストレージ処理機能を実行させるコンピュータ実行可能なコードを備える分散仮想アレイ(DVA)サブシステム(405)と、
を含む、ことを特徴とするシステム。
【請求項2】
前記ホストサーバは前記ストレージノードの選択された一つにデータを書き込み、前記ノードは前記ホストサーバの異なる一つからのその後の読出しに使用可能である、ことを特徴とする請求項1記載のシステム。
【請求項3】
前記少なくとも1つのストレージ処理機能は、
書き込まれるデータのフィンガープリントを計算し、前記フィンガープリントを前記ストレージノード(300)の選択された一つに格納する処理、
書き込まれるデータを圧縮し、そのデータを圧縮した形で前記ストレージノード(300)の少なくとも1つに格納のために送信する処理、
書き込まれるデータにわたって誤り訂正データを計算し、書き込まれるデータと計算した誤り訂正の両方を前記ストレージノード(300)の少なくとも1つに格納する処理、
前記複数のストレージノード(300)に既に格納されているデータを重複排除する処理、
データがログ構造ファイルシステムに従って前記ストレージノードに格納される場合には、
格納されたデータに関してガーベイジコレクションを実行する処理、
データの書込みをログし、対応するログ情報を少なくとも1つのノードのストレージコントローラ(320−1,320−2,..,320−N)内のログに送信する処理、
データ再構成処理、
データリバランス処理、及び
データスクラブ処理、
のうちの少なくとも1つを含む、
ことを特徴とする請求項1又は2記載のシステム。
【請求項4】
前記キャッシュ(113)を構成する前記メモリ装置は、フラッシュSSD又はフラッシュPCIe接続フラッシュ装置である、ことを特徴とする請求項1−3の何れかに記載のシステム。
【請求項5】
前記ホストは、前記ストレージ処理機能により生成されたデータをあるストレージノード(310)内のある永続性ストレージ装置(340−1,340−2,..,340−N)に書き込み、それによって前記リモート不揮発性メモリ装置(330)が一時的なバックアップデータストレージシステムを構成する、ことを特徴とする請求項1−4の何れかに記載のシステム。
【請求項6】
前記ホスト(100)は、前記ストレージ処理機能により生成されたデータを書き込んだ後に、前記書込み要求に対応するデータを前記リモート不揮発性メモリ装置から除去する、ことを特徴とする請求項1−5の何れかに記載のシステム。
【請求項7】
前記ホストシステムソフトウェアコンポーネント(405)は、前記ストレージ処理機能により生成されたデータが前記永続性ストレージ装置に書き込まれる前に、新たな書込みを承認する、ことを特徴とする請求項1−6のいずれかに記載のシステム。
【請求項8】
前記ホストは、前記ホストから離れた複数のリモート不揮発性メモリ装置にデータを書き込み、その後前記不揮発性メモリ装置に格納された前記データに対してECCコードを計算し、前記ECCデータを異なる永続性ストレージ装置に書き込む、ことを特徴とする請求項1−7の何れかに記載のシステム。
【請求項9】
前記ホストシステム(100)は、新たな書込みを承認し、その後前記少なくとも1つのストレージ処理機能を実行する、ことを特徴とする請求項1−8の何れかに記載のシステム。
【請求項10】
複数のホストサーバ(100)を備え、各ホストサーバは少なくとも1つのプロセッサ(111)を含み、少なくとも1つのネットワーク(200)を介して複数のストレージノード(300)と通信し、少なくとも1つのストレージノードは少なくとも1つの永続性ストレージ装置(340−1,340−N)及び少なくとも1つのストレージコントローラ(320−1,320−2,..,320−N)を含む、データストレージシステムにおいて、
少なくとも1つのプロセスからデータストレージ読出し/書込み要求を受信するステップ、
キャッシュ(113)を構成するメモリ装置において、前記ストレージノードの少なくとも1つに格納されたデータをキャッシュするステップ、
プロセス書込み要求に対応するデータを少なくとも1つのリモート不揮発性メモリ(330)に書き込むステップ、及び
少なくとも1つのストレージ処理機能を実行するステップ、
を備えることを特徴とするデータストレージ方法。
【請求項11】
前記ホストサーバにより前記ストレージノード(300)の選択された一つにデータを書き込むステップを更に備え、前記ノードは前記ホストサーバの異なる一つからのその後の読出しに使用可能である、ことを特徴とする請求項10記載の方法。
【請求項12】
前記少なくとも1つのストレージ処理機能は、
書き込まれたデータのフィンガープリントを計算し、前記フィンガープリントを前記ストレージノード(300)の選択された一つに格納する処理、
書き込むべきデータを圧縮し、そのデータを圧縮した形で前記ストレージノード(300)の少なくとも1つに格納のために送信する処理、
書き込むべきデータにわたって誤り訂正データを計算し、書き込むべきデータと計算した誤り訂正の両方を前記ストレージノード(300)の少なくとも1つに格納する処理、
前記複数のストレージノード(300)に既に格納されているデータを重複排除する処理、
データがログ構造ファイルシステムに従って前記ストレージノードに格納される場合には、
格納されたデータに関してガーベイジコレクションを実行する処理、
データの書込みをログし、対応するログ情報を少なくとも1つのノードのストレージコントローラ内のログに送信する処理、
データ再構成処理、
データリバランス処理、及び
データスクラブ処理、
のうちの少なくとも1つを含む、
ことを特徴とする請求項10又は11記載の方法。
【請求項13】
前記ストレージ処理機能により発生されたデータをあるストレージノード(310)内のある永続性ストレージ装置(340−1,340−2,..,340−N)に書き込むステップを更に備え、それによって前記リモート不揮発性メモリ装置(330)が一時的なバックアップデータストレージシステムを構成する、ことを特徴とする請求項10−12の何れかに記載の方法。
【請求項14】
前記ホストが前記ストレージ処理機能により発生されたデータを書き込んだ後に、前記書込み要求に対応するデータを前記リモート不揮発性メモリ装置から除去するステップを更に備える、ことを特徴とする請求項10−13の何れかに記載の方法。
【請求項15】
前記ストレージ処理機能により発生されたデータを前記永続性ストレージ装置に書き込む前に、新たな書込みを承認するステップを更に備える、ことを特徴とする請求項10−14のいずれかに記載の方法。
【請求項16】
前記ホストから離れた複数のリモート不揮発性メモリ装置にデータを書き込み、その後前記不揮発性メモリ装置に格納された前記データに対してECCコードを計算し、前記ECCデータを異なる永続性ストレージ装置に書き込むステップを更に備える、ことを特徴とする請求項10−15の何れかに記載の方法。
【請求項17】
前記少なくとも1つのストレージ処理機能を実行する前に、新たな書込みを承認するステップを更に備える、ことを特徴とする請求項10−16の何れかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は分散データストレージシステムに関する。
【背景技術】
【0002】
大量のデータのための効率的なストレージシステム及び方法の必要性が増大し続けている。現在、大型データセンタは、メモリデバイス(ディスク及び/又はフラッシュ)の物理的シェルフとストレージコントローラのスケーラブル配列を含む従来のストレージシステムにアクセスするブレードサーバを一般に採用している。典型的には、ブレードサーバはネットワーク(インターネット、ロールーカルエリアネットワーク(LAN)、ストレージエリアネットワーク(SAN)等)を介してストレージコントローラにアクセスするが、ストレージコントローラは専用のバックプレーンを介してそれらの間で通信するとともに、ファイバチャネル又は直列結合SCSIを介してシェルフと通信する。これらのサーバは一般にホストアプリケーション又はバーチャルマシン(VM)をホストし、ハードウェアリソースの動的配分を可能にし、現代のデータセンタの特徴になっている。
【0003】
これらの従来のストレージシステムは、最近では、多様な計算集約的ストレージ処理機能、例えば重複排除をサポートするためのSHA−1フィンガープリント、蓄積容量を節約するためのデータ圧縮、セキュリティーのためのデータの暗号化、障害回復のためのデータの複製、RAIDのための消去コードの計算、データ保全性を確保するためのチェックサムの計算、ログ構造ファイルシステムにおけるガベッジ収集、複数段のメモリデバイス(例えば、RAM、フラッシュ及びディスク)の間で性能が最大になるようにデータを移転させる等の複数段のメモリデバイスの管理、及びスナップショット、高速クローン作成及びシン・プロビジョンニング(thin-provisioning)をサポートするための複数のデータ構造の維持を採用するようになってきている。これらの増加する負荷をサポートするために、ストレージコントローラはもっと多数の高性能のCPU及び多量のRAMを用いてもっと高性能になってきており、時にはストレージコントローラがコンピュータサーバ自体より高性能で高価なものになることさえある。
【0004】
従来のストレージシステムの共通の特徴は、それらはディスクドライブ等の多くの永続性記憶装置の高い書き込みレイテンシの問題に対処するために何らかの形の不揮発性メモリを含むことにある。上述した計算集約的ストレージ処理は、書き込みデータが処理された形で永続性記憶装置に書き込まれる前に実行されなければならない場合には、書き込みレイテンシを更に増大することになる。この不揮発性メモリは、すべての処理が生起し終る前でも又はデータ又は処理されたデータが永続性記憶装置に書き込まれ終わる前でも、ストレージシステムが新しい書き込みを「安全」と認識することを可能にする。従来のストレージシステムでは、不揮発性メモリはデータを書き込むサーバに透明である。コンピュータサーバはデータをストレージシステムに書き込み、ストレージシステムはデータを不揮発性メモリにバッファし、その書き込みをサーバに承認する。バックグラウンドでは、ストレージシステムはデータのストレージ処理を実行し、そのデータを永続性記憶装置に書き込むことができ、コンピュータサーバは如何なる追加の処理もデータに実行する必要はない。典型的には、コンピュータサーバはこのような不揮発性メモリを含まない。
【0005】
コンピュータサーバは、これらの従来のストレージシステムのリソース、例えばメモリ装置の容量及び性能並びにストレージコントローラのストレージ処理能力を共有する。この構成の一つの欠点は共有リソースの競合に起因する減速である。例えば、格納すべきデータは圧縮され、関連する計算されたフィンガープリントで重複排除され、暗号化されるものと仮定する。所要の計算をストレージコントローラ内で実行する必要がある場合、1つのサーバに対する所要の計算の実行は他のサーバからの要求に対するサービスの実行に許容し得ない又は少なくとも望ましくない遅延を生じ得る。このような競合を検出もしくは管理することは容易でなく、性能及び任意の特定の作業負荷を保証することは不可能ではないが難しい。ノードにおけるこの計算リソースの過負荷の危険性を低減する一つの自明の方法は、それらの計算能力を高めることである。特に多数のストレージコントローラを使用するものとすると、このアプローチは費用がかかるのみならず、概してほとんどの通常の記憶操作に対して無駄な過剰供給をもたらす。更に、ストレージコントローラが性能不足であることが判明した場合に、それらをより高性能のモデルと交換することは、費用がかかり、交換中に停止時間を必要とし、また新しいストレージシステムにすべてのデータを移行させる必要もあり、それは長い中断を生じ、一般的に完了まで数週間から数ヶ月を要する。
【0006】
現代のデータセンタの別の特徴は、1秒当たりのI/O処理回数(IOPS)を高めるためにストレージアーキテクチャ内の様々な点でデータをキャッシュするソリッドステートドライブ(SSD)装置(例えばフラッシュメモリ)の使用を増やしている。VM用の現在の従来型のストレージアーキテクチャは旧設計を改良しているが、それらはいくつかのレガシー特性を保持し、これらのレガシー特性はこれらのアーキテクチャがコストと使いよさの2つの点で最適に有効になるのを妨げている。例えば、現在のストレージシステムは複雑なデータ記憶構造(LUN、ボリューム等)を定義しなければならない。いくつかの現在のシステムはまた、複数の転送プロトコルを1つのプロプリエタリプロトコル(例えば、SpinNP及びNetApp)に変換するソフトウェアの層も必要とする。
【0007】
仮想化されたストレージを含む環境では、今日見られる一つのトレンドは従来のストレージアーキテクチャ及び構造から離れ、物理的メモリ装置及びサーバ計算リソースを単一の物理的ユニットに含めた「ハイパーコンバージド」アーキテクチャとして知られるものを目指している。このアーキテクチャの宣伝利点は、専用のストレージコントローラの費用を回避できること、及びより多くのこのような複合ユニットがシステムに追加されるにつれてストレージ処理に利用可能な処理能力が増大することにある。別の宣伝利点は、仮想サーバを備えた環境におけるプロビショニングのより大きな制御にあり、多数のコンポーネントからの情報を統合ディスプレイ(「シングルペインオブグラス」とも呼ばれる)に統合するマネジメントコンソールを可能にする。ハイパーコンバージドストレージプロダクトの例には、VMware社による「Virtual SAN」、SimpliVity社による「OmniCube」、NimBoxx社による「Atomic Unit」、及びNutanix社による「Virtual Compute Platformがある。
【0008】
しかしながら、ハイパーコンバージェンスにも欠点がある。第1に、異なるホストプラットフォームが共通ストレージリソースにアクセスすることが予想されるとき、一つのホストがそのデータにアクセスできるかどうかは他のホスト次第である場合、性能は他のホスト上のVM(バーチャルマシン)がどのくらいビジーであるかにより決まる。この「ノイジーネイバー問題」のために、1つの特にビジーなVMは同じホスト上の他のVMの性能を低下し得るとともに、それがプールされる場合、そのノイジネスはそのホストの境界を越えてプール全体に広がる。所定のVMに必要なデータが別のホスト上にある場合、そのVMは必要とされる記憶装置を含むハイパーコンバージドホスト上の異なるVMにより減速されるために待たなければならなくなる。要するに、所定のVMの性能は他のホスト上の他のVMにより抑制され得る。
【0009】
ハイパーコンバージドシステムの別の欠点は、ストレージとコンピュータリソースを独立にスケーリングするのが難しいことにある。環境がより大きな記憶容量を必要とする場合、たとえホストの計算リソースが必要とされなくても、ホスト全体をその内蔵メモリ装置と一緒にシステムに追加する必要があり得る。逆に、より多くの計算リソースが必要とされる場合には、それらは必要であろうとなかろうと追加の記憶容量を備えることになる。
【0010】
従って、分散ストレージシステムは、フレキシビリティのみならずスケーラビリティも提供すること、ストレージ処理のための各サーバの計算能力及びローカルフラッシュメモリ装置の高性能を活用すること、及び独立にスケーラブルなストレージプールからのグループ内のすべてのサーバ間のデータ共有を提供するが、ノイジーネイバー問題を最小化するためにサーバ間協調及び通信を最小化することが必要である。
【図面の簡単な説明】
【0011】
【
図1】分散仮想アレイ(DVA)システムの主なコンポーネントを示す。
【
図2】DVAシステムのいくつかのコンポーネントを詳細に示す。
【
図3】書込み要求の受信時におけるワークフローの一例のフローチャートである。
【
図4】読出し要求の受信時におけるワークフローの一例のフローチャートである。
【発明を実施するための形態】
【0012】
図1は、本発明の一般的な実施形態を示し、DVAの2つの主な物理的「サイド」の間、即ち任意の数(1つを含む)のホスト100(例えばサーバ)の側と、ストレージプール300の側との関係を図解している。ストレージプール300はストレージノード310−1,310−2,...,310−N(まとめて310)を含み、これらのストレージノードは、ホストの観点からすると、単一の未分散ストレージシステムを形成し得る。ホスト100内のエンティティは、不揮発性メモリ(NVRAM330として示されている)に最初に格納され、ノード内に位置する永続性記憶装置340−1,...,340−Nに最終的に格納されるデータを書き込む。
【0013】
読出し及び書込みエンティティは任意のタイプのものとすることができ、例えば仮想マシン130(VM130−1,...,130−Nとして別々に示されている)又はより一般的には、ユーザレベルアプリケーション140のような非仮想化プロセスとすることができる。データを読み書きするのに必要なソフトウェア及びハードウェアエンティティはここでは「クライアント」という。
【0014】
各ホストは、システムハードウェア110を含み、システムハードウェア110は、1以上のプロセッサ(CPU)111と、これらのCPUで実行し得るデータ及び/又はコードの非永続的、揮発的及び/又は永続的、不揮発的、非一時的ストレージのためのいくつかの装置112を含む。伝統的には、「メモリ」と「ストレージ」との間には比較的明確な技術的区別があり、前者は一般に高速で、揮発性の固体装置を包含し、後者は一般に低速で不揮発性の機械的又はオプトメカニカル装置を包含する。しかしながら、大容量の永続性ストレージに対する現代技術の広範囲の利用によって、この区別はどんどん不明確になってきている。例えば、多くの現代のサーバは、特に不連続のストレージ位置に対して、スループット及び一般にIOPS(1秒当たりの入力/出力処理回数)の名で測定されている速度を増大するために、「サーバフラッシュ」などの様々なソリッドステートストレージデバイス(SSD)を使用している。相変化メモリ(PRAM)などの先端技術が区別をさらに不明確にしている。ここに記載する実施形態を実装するために特定のタイプのホスト側ストレージ又はメモリ技術は必要とされず、すべてのホストに同じストレージ技術を使用する必要はない。
【0015】
システムハードウェア110は、システムの様々なコンポーネント間でデータを1以上のネットワーク200を介して転送するためのネットワーク接続装置114等の他の従来の機構を含む。ネットワーク200は任意の周知の公衆ネットワーク、又はインターネット、内部企業網などの専用ローカル又はワイドエリアネットワークとすることができる。唯一の要件は、どのようなネットワークが使用されようとも、すべてのクライアントがアクセスする必要があるストレージノードにアクセスできることである(下記参照)。従って、前記ネットワーク200とは、異なるネットワーク間のデータ転送に必要なスイッチング又は他の通信装置も含めて、実装される異なるネットワークの集合と解釈すべきである。
【0016】
各ホストは、従来のシステムソフトウェア115、例えば実装に応じて、オペレーティングシステム(OS)、デバイスドライバ等も含む。図示の構成では、ホスト100の1つは仮想化プラットフォームをサポートするものとして示され、典型的には、ある種のハイパーバイザー120又は類似のインタフェース層をシステムハードウェア110と(図示の実施形態では)少なくとも一つの仮想マシン(VM)130−1,...,130−nとの間に含む。周知のように、VMは実際の物理的コンピュータシステムのソフトウェアの抽象概念である。
【0017】
VMは単に簡単のために
図1ではホスト内に示され、ほとんどの実施形態では、仮想マシンはハイパーバイザー/ハードウェアホスト上で動作する「ゲスト」である。一部の仮想化されたシステムでは、「仮想マシンモニタ」がハイパーバイザー又はホストOS等の下位のソフトウェア層に対するインタフェースとして含まれる。VMware社の製品のESXサーバファミリー等の多くのハイパーバイザーは、ホストOSとのインタラクションの必要なしに、直接「ベアメタル」上で、即ち直接システムハードウェア10上で動作する。他の仮想化プラットフォームでは、ハイパーバイザーはホストOS上で又はこれと同じレベルで作動し、ハイパーバイザーからの要求時にいくつかの動作を実行しサポートする。ここに記載する種々の実施形態は、VMであろうと、ハイパーバイザーであろうと、又は他の仮想化層であろうと、任意の特定の仮想化アーキテクチャに依存しない。実際には、VMは全く前提とされず、むしろ、ソフトウェア及びハードウェアエンティティ(クライアント)からのデータストレージの読出し/書込み要求を処理するある種のシステムソフトウェア層が前提とされる。従って、「ホスト」は、以下に記載する分散ストレージ装置へのデータの書込み及び/又は読出しを希望するプロセス(VMのプロセスは特別の場合)を実行する任意のプラットフォームである。
【0018】
プール300内の種々のストレージノード310は個別のユニットとして示され、異なる物理的サーバとすることができるが、それらはアドレス指定のために単一の論理的境界内にあるものとみなすこともできる。しかしながら、アドレス可能なストレージプールの論理的な概念境界は、図示の物理的ストレージノード310−1,310−2,...,310−Nのセットを超えて広がるストレージコンポーネント及びプロセスも含むことができる。
【0019】
所望のDVA機能に応じて、ノード310に対するいくつかの分散機能及び制御機能を処理してノード310に共通の管理データ及び他のデータを維持するためにプールマネージャ350を含めることができる。このようなプールマネージャは1以上のストレージノード内で、1以上のホスト内で、又は同じネットワークに結合された別個のコンピューティングシステム内で動作する。それらは独立のエンティティとして実装することもできるが、プールマネージャは他の管理コンポーネント、例えばプール内に格納されたファイル(例えば仮想ディスク)のファイルネームスペースを管理するためのコンポーネント、クラスタ管理機能のためのコンポーネント、及び他のノード管理機能のためのコンポーネントを含むこともできる。
【0020】
ストレージノードを実装するために選択できる多くの現在入手可能な実例のうちの2つは、複数のディスクコントローラを備えるXyratexシャーシ、又はシングルディスク「FAWN」(Fast array of Wimpy Nodes)とすることができ、これは集中的な入力/出力タスクのための低能力のサーバアーキテクチャである。より一般的には、ノードは、任意の形のバス又はネットワーク接続を介して少なくとも1つのディスクと通信する任意の形のコンピュータを用いて実装することができる。実際には、ノード自体をストレージプールにデータを書き込むエンティティとすることもできる。
【0021】
各ノードは1以上のストレージコントローラ320−1,320−2,...,320−N(まとめて320)を含み、各コントローラは1以上のディスク、フラッシュ又は他のSSD装置又は永続性ストレージ装置340(2以上の物理的装置を備える)を含む他の装置を制御する通常の処理回路を備える。コントローラはまた、ネットワーク200に接続するために必要な回路も含む。いくつかの実施形態では、コントローラはストレージ装置と一体化して単一の複合モジュールにすることができる。ホスト100と同様に、ストレージプール300のノード内で使用される種々のソフトウェアコンポーネントは、プール内の各ハードウェアプラットフォーム上のプロセッサで実行できるように、任意の方法でロード及び/又は格納される。これらの媒体及びプロセッサは簡単のために図に別個に示されていないが、当然のことながら、当業者であればそれらの存在は理解されよう。これまで記載したシステムコンポーネントは多くの従来のシステムにも見られるものである。
【0022】
好ましい実施形態では、コントローラ320の少なくとも1つは、極めて低いレイテンシで新たに書き込まれるデータを受け取り、永続的に格納するために、ある種の不揮発性メモリ330(NVRAM:
図2)も含むか、或いはこのメモリにアクセス可能である。いくつかのシステムでは、NVRAMはPCIEスロット内の特別のカード上に設けることができる。いくつかの実装では、コントローラはバッテリーバックアップを有し、停電時に、コントローラはシステムメモリの一部分をフラッシュドライブにコピーするのに十分な時間を有する。この場合には、NVRAM330は別個の物理的コンポーネントにする必要はなく、代わりにコントローラ内の他の標準目的のための汎用RAMの論理部分とすることができる。いくつかのシステムでは、NVRAMは低いレイテンシのSSDとすることができる。本発明の実施形態の実装はディスクとNVRAMの両方を有する必要があるわけではなく、むしろ、任意の所定のノードはこれらの2つのタイプの永続性ストレージ装置の一つのみを有するか、少なくともそれにアクセスし得るように構成することができる。従って、
図1に示すように、本システムは、1以上のノード(例えば、ノード310−1)は永続性ストレージ装置と不揮発性メモリの両方を含むが、1以上の他のノード(例えば、ノード310−2)は永続性ストレージ装置を含まず、更に他のノードは不揮発性メモリコンポーネント330を全く含まない実装することができる。また、ノード310−Nに対して
図1に示されるように、1以上のノードは1つ以上の永続性ストレージ装置(340−N)を有することもできる。更に、いくつかの実施形態では、NVRAMはホスト内に設けることもできる。
【0023】
好ましい実施形態では、ホストはネットワークを介してデータを、永続性ストレージ装置に書き込むのではなく、ストレージノード又はホスト内のNVRAMに書き込むことができ、また前記NVRAMからデータを除去するコマンドを与えることもできる。これは、従来のストレージシステムの構成と大きく相違し、従来のストレージシステムではNVRAMは永続性ストレージ装置へ向かう途中のデータに対してトランスペアレントなバッファである。
【0024】
上述したように、2つの主要なストレージフィロソフィは両極端のトレードオフ関係になる。ハイパーコンバージドシステムでは、ほぼ全記憶及び計算負荷が相互依存ホスト内に集中するが、他のシステムでは、計算負荷の殆どはリモートストレージユニットに置かれ、ホストは直接互いに依存しない。本発明の実施形態は異なるアプローチを採用し、このアプローチでは、ホストの通常大きな計算リソースは多くのストレージ関連機能のために使用されるが、大きなホスト間通信及び調整を必要としない方法で使用され、主ストレージ能力は主としてリモートノードに維持され、如何なるホストも別のホストを経由することなくそのリモートノードにアクセスすることができる。
【0025】
この目的のために、ホスト及びノードは、それぞれDVAコンポーネントを含み、即ちホストにはシステムソフトウェアレベルにDVAh405モジュールを含み、ノードにはDVAnモジュールを含む。
図1にオーバラップさせて示すように、DVAh405は、システムソフトウェア115の一部分として、又は制御ソフトウェア(例えばハイパーバイザー120)の一部分として、又は両者の共働コンポーネントとして実装することができる。オプションとして、DVAhコンポーネントをシステムソフトウェア115内又はハイパーバイザー120内のドライバとして構成し、ホストオペレーティングシステム(システムソフトウェア)に必要に応じ呼びかけるようにすることもできる。また、DVAh405コンポーネントは異なるユーザレベル又はシステムレベルプロセス内に、又は「ヘルパー」VM内に構成することもできる。DVAh及びDVAnの構成にかかわらず、それらは一般に、不揮発性ストレージに格納され、ホストCPU111による実行のためにメモリにロードされる、プロセッサ実行可能コードの対応する部分として実装される。
【0026】
同様に、ノード内のDVAn425コンポーネントもそれぞれのストレージコントローラ320上で作動するソフトウェアとして、又はストレージコントローラから分離されているがそれと共働するソフトウェアモジュールとして実装することができ、また不揮発性ストレージに格納され、ノード310内のプロセッサによる実行のためにメモリにロードされる、プロセッサ実行可能コードの対応する部分として実装することもできる。
【0027】
少なくとも1つのホストには、好ましくはメモリ/ストレージコンポーネント112の一部分としてキャッシュ113を設けるのが好ましい。キャッシュは、任意の従来の十分に高速のストレージ技術、例えば1以上のフラッシュメモリ装置、相変化ランダムアクセスメモリ(PRAM)、メインシステムメモリの一部分などを用いて実装することができる。キャッシュは個別にパッケージ化されたソリッドステートディスク(SSD)、サーバ内のバスにプラグ接続される回路カード、サーバマザーボード上のモジュールなどとして実装することもできる。
【0028】
図2は
図1に示す主要なシステムコンポーネントの簡略表示であるが、DVAモジュールの種々の任意選択サブコンポーネントをより詳細に示す。1つのホスト及び1つのノードのみを示すが、同様のサブコンポーネントを他のホスト/ノードにも含めることができる。すべてのホスト又はノードが
図2に示すものと同一のDVAサブコンポーネントを含む必要はなく、任意の所定のホスト内には、図示のサブコンポーネントの任意の数(1〜全部)を、任意の所定の実装の必要に応じて、任意の所望の組み合わせで含めることができる点に注意されたい。それゆえ、
図2に示すDVAサブコンポーネントのセットは例示及び説明のためにすぎない。更に、これらの種々のサブコンポーネントは
図2に別個のものとして示されているが、これは例示及び説明のためにすぎず、それらのいずれか又はすべてを実行可能なコードの単位部分に組み合わせることができる。
【0029】
DVAサブコンポーネント及びそれらの機能は、バックグラウンドストレージマネジメント機能、データ変換機能及び/又は以下に概説する他の機能を含む種々のストレージ処理機能のいずれか又はすべてを実行する。従来のストレージシステムではこれらの機能は典型的にはストレージコントローラ内で実行され、ホスト内で実行されない点に注意されたい。DVAhサブコンポーネントは優先的に下記のものを含む。
【0030】
キャッシュマネージャ513は既知の技術を用いてキャッシュ113への書込み及び読出しを処理する。一実施形態では、キャッシュはフィンガープリント化されたデータブロックを備えるため、キャッシュ内のブロックをブロックのフィンガープリントに基づいて見つけ出すことができる。
【0031】
ファイルマネージャ530はホスト上のVM(又は仮想化されている又はされていない他のプロセス)からのデータを受け取り、それをプール300内のストレージのために設計されたフォーマットに処理する。ファイルマネージャはデータを読み出す要求も受け取り、キャッシュ又はプールからデータを検索し、それを処理してもとの記憶フォーマットにし、要求されたデータを返送する。ファイルマネージャはデータのキャッシュ、処理、格納又は検索を援助する他のコンポーネントを呼び出すこともできる。
【0032】
ファイルマネージャ530はマッピングモジュール524を呼び出すことができ、マッピングモジュール524はマップをリファレンス(基準点)に対するファイルオフセットからプール300に格納された対応するデータアイテムへ更新する。いくつかの実施形態では、データアイテムリファレンスはそのデータアイテムを含むブロックのフィンガープリントを備える。いくつかの実施形態では、ホストはフィンガープリントを計算する。いくつかの実施形態では、データアイテムリファレンスはそのデータアイテムに関するロケータを備える。ファイル内のあるオフセットに対する読み出し要求を満たすために、ファイルマネージャはマッピングモジュール524を呼び出して、ファイル内のそのオフセットに対して格納されたデータアイテムに対するリファレンスを得る。この場合、そのリファレンスを用いてキャッシュからデータアイテムを検索することができ、またそのデータアイテムがそこにない場合には、そのデータアイテムをプールから検索することができる。
【0033】
周知のように、仮想マシンのストレージシステムも仮想化される。従って、VM上で作動するプロセスは、それらが「考えている」のは物理的ストレージであるが、実際には「仮想ディスク」(vDisk)内の仮想アドレスにアドレスし、この仮想アドレスは対応するアドレスマップを用いて1以上のレベルのアドレスリディレクションを受け、最終的に物理空間内のアドレスになる。分散ストレージシステムとの関係において、VMの読出し及び書込みはプール300内の1つの(又は例えばデータがミラーリングされている場合には2つ以上の)物理的ストレージ装置内の対応するアドレスに最終的にマップされる。
【0034】
好適には、圧縮、暗号化、データ完全性を保証するためのチェックサム、イレージャコードストライプへの受信データのパック化、例えばRAIDストライプの一部としての誤り訂正コード(ECC)値の計算、及び/又はフィンガープリント、即ち受信データブロックの一意の識別情報の計算などの既知のデータ変換機能の一部又は全部を実行するために、データ処理コンポーネント(処理エンジン520)が含められる。可能なフィンガープリント技術の一例はハッシュであり、例えばSHA法のいずれか(例えばSHA−1)を用いることができる。選択したフィンガープリント法が耐衝突性である(即ち、同じフィンガープリント出力を発生する2つの異なる入力の確率が十分に低い)と仮定すると、同じフィンガープリントを有する異なるデータブロックは同じ内容を有し、よって重複であると推測することができる。
【0035】
一実施形態では、入力データはフィンガープリント化され、その入力ブロックのフィンガープリントをキャッシュ113内、即ちホスト100内に格納されているブロックのフィンガープリントと比較することによって重複排除され、これにより、プール300に格納されているデータを分析し、重複排除する必要がなくなる。この構成はこれらの計算集約タスクを通常の高性能のホスト内で実行することができるのみならず、さもなければ、ホストが最初にリモートストレージノード310からフィンガープリントを検索しなければならに場合に経験されるレイテンシの大部分を回避することもできる。
【0036】
フィンガープリント化されたブロックのキャッシュは、読出し要求に応答してプールからデータブロックをフェッチする際のレイテンシを避けることもできる。2つの別個のファイルの各々が、同じ内容、よって同じフィンガープリントを有するブロックを含み得る。重複ブロックは1つのファイルに対する読出し又は書込み要求を満足させるためにキャッシュに挿入しておくことができ、別のファイルの重複ブロックに対するその後の読出し要求はそのキャッシュから満足させることができ、プールからそのブロックをフェッチするレイテンシを招くことはない。
【0037】
フィンガープリント又はチェックサムはデータ完全性を保証するため及び不完全な書込みを検出するために使用することもできる。例えば、フィンガープリントはバッファしたデータに対して計算することができる。可能なホスト障害及び不完全な書込みの何らかの兆候がある場合には、現データのフィンガープリントをバッファしたデータのフィンガープリントと比較することができ、両者が同じでない場合、バッファしたデータは格納しようとするデータと同一でないため、システムは書き込みは不完全であったことを知ることができる。
【0038】
ログ構造ファイルシステムを使用するDVA内には、ガーベイジコレクション機能、例えば、一部の実施形態では、今後コピーすべきデータを識別すること及び、一部の実施形態では、このようなデータを新しいストライプにコピーすることなど、を実行するためにガーベイジコレクションモジュール522を含めることができる。
【0039】
ストライプを用いてデータを格納するシステムには、ストライプマネージャ523を含めることができる。ストライプマネージャは、ECC値を計算するためにECCエンジン532を使用もしくは含むことができ、そのECC値をストライプに加え、設計者が実施のために選択するマッピング又は割り当て方式に従って複数のストレージノードに分散することができる。
【0040】
ホストには、データ完全性を保証するために、データ再構成(例えば、ECC情報からの紛失RAIDストライプ要素の再構成)、データリバランス、又はデータスクラブなどの機能を実行するモジュール526も含めることができる。このモジュール、又は1以上の他のホストモジュールは、ホストフラッシュキャッシュへのデータのプリフェッチ、データクランプの形成及び所定の粒度での重複排除、その後のこのようなクランプのリパッキング、ホストフラッシュ障害の処理、ホスト上でのvDiskマップの更新、などの操作を実行することもできる。
【0041】
DVAnサブコンポーネントは下記のものを含む。
【0042】
フィンガープリントインデックス521はフィンガープリントからデータブロックロケータ又は他の識別子へのマッピングを行う。ホストがフィンガープリント化されたデータブロックをストライプに格納し、そのストライプをプールに書き込むとき、ホストはそのフィンガープリント及び対応するデータブロックロケータをフィンガープリントインデックス521に知らせる。ホストがフィンガープリント化されたブロックをプールから読み出す必要があるとき、ホストは最初にインデックス521からブロックロケータに要求し、次いでプールからそのブロックを読み出す。インデックス521はホスト内に実装してもよいが、コントローラ320内に実装する方が好ましい。なぜなら、インデックスのサイズはストレージ容量に比例するため、インデックスのためのメモリは対応するストレージユニットと一緒にするのが一般に最も効率的であるからである。
【0043】
ログ325は、最近書き込まれたデータ及びホスト上のロギングモジュール525からの他のデータを受信し、そのデータを不揮発性で低レイテンシのNVRAMモジュール330に格納する。NVRAMモジュール330は
図2ではノード310の内部モジュールとして示されているが、これは一つの実装例にすぎない。他の例として、NVRAMモジュール330は異なる専用のノード又は任意の他の場所に含めることができる。最近書き込まれたデータをログとして又はさもなければNVRAMに格納することによって、ディスクドライブのような高いレイテンシのストレージ装置340への書込みのレイテンシを被ることなく、その書込みを「安全」として承認することができる。このようなデータをホストの外部(例えばログ325)に格納することによって、ホストがそれを複数のストレージ装置340のうちの一つの永久位置に格納する前に故障しても、別のエンティティ(例えばストレージノードのうちの一つ、故障してないホストのうちの一つ、又は最初にデータを受信したホスト以外の任意の他のエンティティ)が不揮発性装置330からデータを読出し、そのデータを処理してストレージ装置340の一つに格納することができる。これは、データのコピーが現在故障中のホストを介してのみアクセスし得るホストの内部のキャッシュ113に格納されるのみである場合には不可能である。
【0044】
NVRAMモジュール330を含み、それをLOG325のようなインタフェースを介してホストに公開する一つの他の利点は、ホストはデータをストレージノード上のNVRAMに書き込み、急速承認を可能にすることによってそのデータを「安全」にすることができ、その後その計算リソースを、場合により遅れた追加のストレージ処理、例えば十分な量のデータがストライプからバッチされた後などの追加のストレージ処理、のために活用することができることにある。いくつかの実施形態では、NVRAMに書き込まれたデータの一部はホストによる追加のストレージ処理によらずに永続性ストレージに書き込むことはできない。いくつかの実施形態では、NVRAM装置の一つ又はそれが接続されたコントローラの故障から保護するためにデータを複数のNVRAM装置に書き込むことができる。ホスト自体が複数のNVRAM装置に書き込むことができ、またコントローラが単一のホスト書込みを同じ又は異なるノード内の複数のNVRAM装置に又は複数の他のコントローラ及びそれらのNVRAM装置に反映させる(ミラーリング)ことができる。
【0045】
一例として、VMが少なくとも1つの仮想化ディスクvDisk又はファイルにデータを書き込みたいと仮定する。VMがゲストであるホストが故障すると、新たに書き込まれたデータのコピーはあるストレージノード上のログ及びNVRAM内で生き残る。書込みデータは、そのデータがプールに、場合により書込みに関するログデータを保持しない1以上のストレージノードに、書き込まれる前に、ある最小ストレージ単位、例えば(RAIDのようなシステムにおける)フルストライプに十分なデータが満たされるまで、ファイルマネージャでバッファする、又はVMホストのキャッシュ113に格納することもできる。新たな書込みデータも、vDisk内の同じ位置の以後の上書きのための時間を与えるために充分長い期間に亘ってVMホスト上でバッファし、ストライプに上書きされたデータを書き出す必要性を除去することもできる。ホスト(例えばそのオペレーティングシステム内のDVAhコンポーネントの一部分又はある他のホストエンティティのいずれか)は書込み単位に対して少なくとも1つの消去符号化ブロックを計算し、その後それをストレージノードに書き込むこともできる。
【0046】
操作がREAD(読出し)の場合には、所望のデータをキャッシュ113内で検索することができる。データがキャッシュされている場合、そのデータはキャッシュから読み出し、要求元プロセス、例えばVMに戻すことができる。データがキャッシュされていない場合、そのデータは(任意の中間アドレスマップを用いて)直接ストレージノードから読み出し、要求元プロセスに戻すことができる。READデータをキャッシュに書き込むこともできる。
【0047】
管理及び計算負荷をホストに集中させることによって、ストレージ側における専用のバックプレーン及びファイバチャネル接続が不要になり、ストレージノードは比較的簡単且つ安価に保つことができ、更に、ストレージ側全体は標準のネットワーク接続を介して直接ホストと通信することができる。更に、ホストがプールと通信するが、たまにしか通信しない場合には、一つのホストは別のホストのノイジーネイバーに煩わされない。最後に、ホストが大きなキャッシュを含む場合、それらはプール内のノードにたまにコンタクトしなければならなくなるだけであり、ノイジーレイバー問題が更に減少する。ホストはVM及びVM内のアプリケーションにデータを供給する権限を持つため、システム内の他の場所の性能問題に影響されにくい。
【0048】
本明細書に開示される種々の機能又はプロセスは種々の不揮発性コンピュータ可読媒体に具体化されるデータ及び/又は命令として記述することができ、DVAシステムの実施形態を実装したい人々にコンピュータプログラム製品として提供することができることに注意されたい。
【0049】
図3は書込み要求の一つの実施例を示す。書込み要求が受信されると、その要求はノード上のNVRAMモジュール330にログされる。書込みのロギングは書き込み中のファイルの指示及びファイル内のオフセットを含む。書込みデータ自体は書込みバッファに書き込まれ、その要求は承認される。書込みバッファが処理をトリガするのに十分なほど、例えばブロックを形成するのに十分なほど満杯でなければ、その処理は追加の書込み要求の受信に戻り、そうでなければ、書込みデータはブロックに形成することができ、(単一のフィンガープリントが全データセットに対して使用されるのか別々のフィンガープリントがブロック毎に使用されるのかに応じて)1以上のフィンガープリントを計算することができる。フィンガープリントの計算前、後又はそれと同時に、ブロックデータを、例えば圧縮、暗号化などで処理することもできる。所定のブロックが既にホストキャッシュにある場合(これはフィンガープリントの比較により決定できる)、ファイルマップをブロックに対するリファレンスで更新することができ、処理は追加の書込みの受信に戻ることができる。ブロックのフィンガープリントがホストキャッシュ又はグローバルフィンガープリントインデックス521内で見つからない場合には、ブロックは現在構成中のストライプに加えられる。ストライプがまだ完全でない場合、システムは追加の書込み要求の受信に戻ることができる。現在のストライプが完全である場合、ECCストライプ要素がそのブロックに対して計算され、ストレージのために分配され得る。その後、ストライプ内のブロックのフィンガープリントがグローバルフィンガープリントインデックス521に加えられる。このとき、ブロックもキャッシュに加えることができ、その後ファイルマップがストライプに格納されたブロックをリファレンスするように更新される。この時点で、書き込まれたデータはホスト故障に直面しても安全であるため、NVRAM内のデータの一時的コピーはもはや必要ない。従って、例えばログモジュール525を使用するホストはログ325に、そのデータをトランケートしてNVRAMから除去してよいことを知らせることができる。コントローラ自体はNVRAM内に一時的に格納されたデータをもっと永久的な位置に書き換える必要はないことに注意されたい。最後に、処理は追加の書込み要求の受信に戻る。他の実施形態では、DVAhコンポーネントはフィンガープリントを計算し、そのフィンガープリントがホストキャッシュ及び/又はグローバルフィンガープリントインデックスに存在するかチェックし、対応するファイル及びそのファイル内のオフセットに対して、書込みを承認する前に、データ自体の代わりに、先に格納されたデータに対する新しいリファレンスのみをリモートNVRAMにログする。
【0050】
図4は読み出し要求を処理する一実施例を示す。読み出し要求が受信され、データを含むブロックに対するリファレンスが要求されたオフセットを提供するファイルマップモジュールから検索される。リファレンスされたブロックがキャッシュ113内にある場合、そのブロックが検索され、読み取り要求を達成するためにそのデータを返送することができる。そのブロックがキャッシュにない場合には、そのブロックはプールから検索しなければならない。これは、ブロックロケータをフィンガープリントインデックスから検索することによって達成することができる。ブロックが検索されたなら、そのブロックをキャッシュに加えることができ、要求されたデータを返送することができる。
【外国語明細書】