(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-04
(45)【発行日】2022-03-14
(54)【発明の名称】分散ストレージネットワークにおけるデータ経路モニタリング
(51)【国際特許分類】
G06F 13/10 20060101AFI20220307BHJP
G06F 13/14 20060101ALI20220307BHJP
G06F 3/06 20060101ALI20220307BHJP
G06F 11/07 20060101ALI20220307BHJP
【FI】
G06F13/10 340A
G06F13/14 330C
G06F3/06 304R
G06F11/07 140A
G06F11/07 157
【外国語出願】
(21)【出願番号】P 2018070718
(22)【出願日】2018-04-02
【審査請求日】2021-03-30
(32)【優先日】2017-04-03
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-06-07
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【識別番号】100109335
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(74)【代理人】
【識別番号】100176418
【氏名又は名称】工藤 嘉晃
(72)【発明者】
【氏名】ジェフリー ザバルスキー
(72)【発明者】
【氏名】ゴークル サウンダララジャン
(72)【発明者】
【氏名】アレクサンドル ミルゴロツキー
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2002-278909(JP,A)
【文献】特開2005-010956(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/10-13/14
G06F 3/06
G06F 11/07
(57)【特許請求の範囲】
【請求項1】
特定のストレージノード上の複数のネットワークインターフェイスの各ネットワークインターフェイスから、複数のホストマシンの各ホストマシンにストレージノードメッセージを送信するステップであって、
前記特定のストレージノードは、前記複数のネットワークインターフェイスのうちのいずれか1つに接続性を有する各ホストマシン
からアクセス
可能な1又は2以上の記憶装置に動作可能に結合されており、
前記複数のネットワークインターフェイスは、前記特定のストレージノードの特定のストレージコントローラの少なくとも2つのネットワークインターフェイスを含む、ステップと、
前記ストレージノードメッセージに応答して、前記特定のストレージノードが、前記複数のホストマシンのうちの少なくとも1つのホストマシンからホストメッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも1つのホストマシンから受け取った前記ホストメッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のホストマシンの各ホストマシンとの間の、ネットワークインターフェイスとホストマシンとの接続性情報を判定するステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも1つのホストマシンから受け取った前記ホストメッセージとから判定された、前記ネットワークインターフェイスとホストマシンとの接続性情報を含む接続性マップを生成するステップであって、
前記ネットワークインターフェイスとホストマシンとの接続性情報は
、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスと前記複数のホストマシンのうちの特定のホストマシンとの間の接続性が
、前記特定のホストマシンからホストメッセージが受け取られることなく前記特定のネットワークインターフェイスから前記特定のホストマシンに特定の数のストレージノードメッセージが送信された場合、停止中である旨を示し、
前記ネットワークインターフェイスとホストマシンとの接続性情報は、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のホストマシンの各ホストマシンとの間のレイテンシ情報
を含み、前記レイテンシ情報は特定のストレージノードメッセージの送信と前記特定のストレージノードメッセージへの応答として特定のホストメッセージの受信との間の期間に基づ
いている、ステップと、
前記特定のストレージノードが、前記複数のホストマシンのうちの特定のホストマシンから接続性状態要求を受け取るステップであって、
前記接続性状態要求に応答して、前記特定のストレージノードは前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のホストマシンの各ホストマシンとの間のネットワークインターフェイスとホストマシンとの接続性情報を、前記特定のホストマシンに提供し、
前記特定のストレージノードから受け取った前記ネットワークインターフェイスとホストマシンとの接続性情報に基づいて、前記特定のホストマシンは、データを求める要求を前記特定のストレージノードに送信するために、前記複数のネットワークインターフェイスのうちのターゲットネットワークインターフェイスを選択する、ステップと、
前記特定のホストマシンが、前記データを求める要求を前記選択されたターゲットネットワークインターフェイスに送信するステップと、
前記複数のネットワークインターフェイスのうちのターゲットネットワークインターフェイスにおいて、前記1又は2以上の記憶装置に記憶されている前記データを求める要求を受け取るステップと、
を含む、
ことを特徴とする方法。
【請求項2】
前記複数のホストマシンは、各々がホストメッセージの送信とストレージノードメッセージの受信とを行うことができる複数のホストネットワークインターフェイスを含む、
請求項1に記載の方法。
【請求項3】
前記特定のストレージノードが、
特定の時間にわたって
、特定の数のストレージノードメッセージを送信してホストメッセージ応答を受信しないことに基づいて停止していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの停止中の接続経路についてのブラックリストを生成するステップと、
前記特定のストレージノードが、前記停止中の接続経路についてのブラックリストを前記複数のホストマシンに送信するステップと、
をさらに含む、請求項1に記載の方法。
【請求項4】
前記特定のストレージノードが、
特定の時間にわたって
、特定の数のストレージノードメッセージを送信してそれに対するホストメッセージ応答を受信することに基づいて作動していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの作動中の接続経路についてのホワイトリストを生成するステップと、
前記特定のストレージノードが、前記作動中の接続経路についてのホワイトリストを前記複数のホストマシンに送信するステップと、
をさらに含む、請求項1に記載の方法。
【請求項5】
前記ストレージノードメッセージは、前記複数のホストマシンの各ホストマシンと前記複数のネットワークインターフェイスの各ネットワークインターフェイスとの間の
接続経路の到達可能性と品質を判定するために使用される第1のタイプのテストメッセージ
と、前記複数のホストマシンの各ホストマシンと前記複数のネットワークインターフェイスの各ネットワークインターフェイスとの間の接続経路の到達可能性及びラウンドトリップ時間を判定するために使用される第2のタイプのテストメッセージとを含み、
前記第1のタイプのテストメッセージは、前記複数のホストマシンに第1の閾値回数だけ送信されるようにスケジュールされ、
前記第2のタイプのテストメッセージは、前記複数のホストマシンに第2の閾値回数だけ送信されるようにスケジュールされ、
前記第1のタイプのテストメッセージは
、前記第2のタイプのテストメッセージと比較して大き
い、請求項1に記載の方法。
【請求項6】
前記特定のストレージノードが、前記特定の
ネットワークインターフェイス内の関連する物理アドレスにフローティングIPアドレスを関連付けるステップと、
前記
特定のホストマシンから
前記接続性
状態要求を、前記フローティングIPアドレスに関連付けられた前記特定のネットワークインターフェイスにおいて受け取るステップと、
をさらに含む、請求項3に記載の方法。
【請求項7】
前記特定のストレージノードは、複数のストレージノードのうちの第1のストレージノードであり、前記複数のネットワークインターフェイスは、第1の複数のネットワークインターフェイスであり、
第2のストレージノード上の第2の複数のネットワークインターフェイスの各ネットワークインターフェイスから前記複数のホストマシンの各ホストマシンにさらなるストレージノードメッセージを送信するステップを含み、
前記第2のストレージノードは、前記第2の複数のネットワークインターフェイスのうちのいずれか1つを通じて前記複数のホストマシンがアクセスできる前記1又は2以上の記憶装置に動作可能に結合されており、
前記第2のストレージノードが、前記複数のホストマシンのうちの少なくとも1つのホストマシンから第2のホストメッセージを受け取るステップと、
前記第2のストレージノードが、前記第2の複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも1つのホストマシンから受け取った前記第2のホストメッセージとに基づいて、前記第2の複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のホストマシンの各ホストマシンとの間の接続性に関する情報を含めるように前記接続性マップを更新する
ための接続性マップ更新メッセージを生成するステップと、
をさらに含む、請求項1に記載の方法。
【請求項8】
前記特定のストレージノードが、
前記接続性マップ内の前記ネットワークインターフェイスとホストマシンとの接続性情報
に基づいて接続状態正常性レポートを生成するステップをさらに含
む、請求項1に記載の方法。
【請求項9】
前記接続状態正常性レポートを生成するステップは、
状態を変化させる接続経路の閾値数
によってトリガされ
、
各接続経路は、前記複数のネットワークインターフェイスの特定のネットワークインターフェイスと前記複数のホストマシンの特定のホストマシンとの間にある、請求項8に記載の方法。
【請求項10】
前記特定のストレージノード上の前記複数のネットワークインターフェイスの各ネットワークインターフェイスから複数のストレージノードにさらなるストレージノードメッセージを送信するステップをさらに含み、
前記複数のストレージノードは、前記複数のホストマシンが前記複数のストレージノードのうちのいずれか1つに付属するいずれかのネットワークインターフェイスを通じてアクセスできる前記1又は2以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記複数のストレージノードのうちの少なくとも1つのストレージノードから応答メッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記さらなるストレージノードメッセージと、前記複数のストレージノードのうちの前記少なくとも1つのストレージノードから受け取った前記応答メッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のストレージノードに付属する前記ネットワークインターフェイスの各々との間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
をさらに含む、請求項1に記載の方法。
【請求項11】
命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、実行時に請求項1から10のいずれか1項に記載の方法の実行を引き起こす、
ことを特徴とする非一時的コンピュータ可読媒体。
【請求項12】
1又は2以上のプロセッサと、メモリと、1又は2以上の記憶装置とを備えたコンピュータシステムであって、前記1又は2以上のプロセッサは、前記メモリ内の命令を実行して、前記コンピュータシステムに請求項1から10のいずれか1項に記載の方法を実行させるように構成される、
ことを特徴とするコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【0001】
〔利益の主張〕
本出願は、2017年4月3日に出願された米国仮特許出願第62/481,098号の合衆国法典第35編第119条(e)に基づく利益を主張するものであり、この文献の内容はその全体が本明細書に完全に記載されているかのように全ての目的で引用により本明細書に組み入れられる。
【0002】
本発明は、分散ストレージネットワークにおけるエンドポイント間の接続経路状態のモニタリングに関する。
【背景技術】
【0003】
ネットワークアグリゲーションは、持続的な稼働時間を必要とするネットワークシステムにおいて速度を高めて耐故障性をもたらす目的で、複数の物理リンクを1つのリンクに集約する技術である。具体的に言えば、リンクアグリゲーション技術は、スループットを単一接続の限界よりも高めるとともに、ネットワーク障害時におけるネットワーク耐性を高めるために、複数のネットワーク接続を並行して組み合わせる。このようなリンクアグリゲーションの1つの実装が、リンクアグリゲーション制御プロトコル(LACP)である。LACP構成は、サーバ、ネットワークスイッチ及びその他のネットワーク装置上に集約されたリンクを構成することによって、サーバへのネットワーク帯域幅を拡大する。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、帯域幅は、ネットワーク経路内の単一の装置の最大帯域幅に制限され得るので、リンクアグリゲーションプロトコルの使用時には高帯域幅の維持が次第に困難になる。また、構成されたネットワーク経路上のネットワーク装置が予想外に増加した場合にボトルネックを引き起こし得るネットワーク負荷の変化に起因して、構成されたネットワーク経路上の帯域幅が制限されることもある。LACPなどのリンクアグリゲーションプロトコルは、複数のネットワーク装置の構成を必要とし、これらが構成されると、ネットワークを横切るデータフローの変化を考慮するようにネットワーク装置を再構成するために相当な労力を要する。
【課題を解決するための手段】
【0005】
従って、ネットワーク装置をモニタして現在のネットワーク状態を考慮するように構成する方法及びシステムが望まれている。
【図面の簡単な説明】
【0006】
【
図1】ネットワークスイッチを介してホストマシンに接続されたストレージコントローラを含む分散ストレージシステムのネットワーク構成の実施形態例を示す図である。
【
図2】接続性情報を判定し、接続性マップを生成して、ホストマシンに接続性状態情報を送信する実施形態例を示す図である。
【
図3】ホストマシンとネットワークインターフェイスとの間の接続を行列として表す接続性マップの実施形態例を示す図である。
【
図4】複数のストレージ管理サーバを有するストレージ管理プールを含む分散ストレージシステムのネットワーク構成の実施形態例を示す図である。
【
図5】分散型仮想アレイ(DVA)システムの実施形態を示す図である。
【
図6】DVA内の選択コンポーネントの詳細な実施形態を示す図である。
【
図7】書き込み要求の受信時におけるワークフローの実施形態を示す図である。
【
図8】読み出し要求の受信時におけるワークフローの実施形態を示す図である。
【
図9】実施形態を実装できるコンピュータシステム例を示すブロック図である。
【発明を実施するための形態】
【0007】
以下の説明では、本発明を完全に理解できるようにするために、説明を目的として数多くの特定の詳細を記載する。しかしながら、これらの特定の詳細を伴わずに本発明を実施できることが明らかであろう。その他の場合、本発明を不必要に曖昧にしないために、周知の構造及び装置についてはブロック図形式で示す。
【0008】
全体的概要
本明細書では、1又は2以上のホストマシンと、ストレージノードに付属する1又は2以上のネットワークインターフェイスとの間の接続経路をモニタしてその接続性情報を送信する技術について説明する。1つの実施形態によれば、特定のストレージノードが、複数の付属するネットワークインターフェイスを含む。特定のストレージノードは、特定のストレージノードに付属する複数のネットワークインターフェイスのうちのいずれか1つを通じて1又は2以上のホストマシンがアクセスできる1又は2以上の記憶装置に動作可能に結合される。ネットワークインターフェイスの各々は、1又は2以上のホストマシンの各々にメッセージを送信する。特定のストレージノードは、1又は2以上のホストマシンのうちの少なくとも1つのホストマシンからのメッセージも受け取る。特定のストレージノードは、ホストマシンとの間で送受信されるメッセージを用いて接続性情報を判定する。接続性情報は、複数のネットワークインターフェイスの各ネットワークインターフェイスと各ホストマシンとの間の接続性に基づく。ストレージノードは、ホストマシンが接続性情報に基づいて選択したターゲットネットワークインターフェイスにおいて、データを記憶するための要求、或いは1又は2以上の記憶装置に記憶されている記憶データを検索するための要求をホストマシンから受け取る。
【0009】
構造の概要
分散ストレージシステムネットワークは、以下に限定するわけではないが、1又は2以上のホストマシン、ネットワークスイッチ及び1又は2以上のストレージ管理サーバを含む、通信可能に結合されたコンピュータ装置で構成される。1又は2以上のストレージ管理サーバは、1又は2以上のストレージコントローラ及びストレージプールを含むことができる。
図1に、ネットワークスイッチを介してホストマシンに接続されたストレージコントローラを含む分散ストレージシステムのネットワーク構成の実施形態例を示す。
図1に示す実施形態では、ホストマシン102、104及び106が、ストレージプール160内にデータを記憶するように構成された1又は2以上のアプリケーション及び/又は1又は2以上のオペレーティングシステムを実装するように構成されたコンピュータ装置を表す。ホストマシン102、104及び106の各々は、冗長リンクを介してネットワークスイッチ110及び112に通信可能に結合される。ある実施形態では、ホストマシン102、104及び106の各々が、多経路ネットワークルーティングを目的としてネットワークスイッチ110及び112に接続された2又は3以上のネットワークインターフェイスを備える。ある実施形態では、2又は3以上のネットワークインターフェイスを、同じ物理アドレスを共有していずれかの所与の時点で2又は3以上のネットワークインターフェイスのうちの1つのみが作動中となるように結合することができる。別の実施形態では、ホストマシン102、104及び106内のネットワークインターフェイスを、各ネットワークインターフェイスへの異なるIPアドレスの割り当てを可能にする一意の物理アドレスを有する別個の物理装置として構成することができる。
【0010】
ある実施形態では、ネットワークスイッチ110及び112が、ホストマシン102、104及び106とストレージ管理サーバ120とに通信可能に結合されたネットワークスイッチを表す。スイッチ110及び112は、ホストマシン102、104及び106とストレージ管理サーバ120との間でデータパケットをルーティングするように構成される。
【0011】
ある実施形態では、ストレージ管理サーバ120が、ストレージコントローラ122及び124を実装する複数のハードウェアコンポーネント及びソフトウェアコンポーネントを含むように構成された1又は2以上のサーバ装置を表す。ストレージコントローラ122及び124の各々は、ホストマシンからストレージプール160内の記憶装置へのデータストレージ要求を管理するように構成される。ストレージ管理サーバ120は、ネットワーク及びホストマシンの利用可能性及び構成データを含むストレージコントローラデータの局所的及び遠隔的記憶を可能にするハードウェアを含むように構成される。ある実施形態では、ストレージ管理サーバ120が、ストレージコントローラ122及び124の能動的使用及び受動的使用の役割を実装するように構成され、能動的ストレージコントローラは、ホストマシンからのデータ要求に対処し、受動的ストレージコントローラは、能動的ストレージコントローラのバックアップストレージコントローラとして指定される。別の実施形態では、ストレージ管理サーバ120が、両コントローラがホストマシン102、104及び106からのデータ要求を能動的に処理する、ストレージコントローラ122及び124の併用を実装するように構成される。また、ストレージ管理サーバ120は、ストレージ管理サーバ120の物理ハードウェアの利用可能性及び設定に基づいて、さらなるストレージコントローラを実装するように構成することもできる。
図1は、ストレージ管理サーバ120、並びにストレージ管理サーバ120と、ホストマシン102、104及び106と、ストレージプール160との間の接続の1つの実施形態例を表すものである。
【0012】
他の実施形態では、ストレージ管理サーバ120と並行して動作するように、又はストレージ管理サーバ120のバックアップシステムとしての役割を果たすように構成できる複数のストレージ管理サーバを実装することができる。
図4に、複数のストレージ管理サーバを含むストレージ管理プール405を含む分散ストレージシステムのネットワーク構成の別の実施形態を示す。ある実施形態では、ストレージ管理プール405が、ストレージ管理サーバ120、410及び420を含む。ストレージ管理サーバ120、410及び420の各々は、複数のストレージコントローラを実装する複数のハードウェア及びソフトウェアコンポーネントを含むように構成される。ストレージ管理サーバ120、410及び420の各々は、ネットワークスイッチ110及び112に通信可能に結合される。ある実施形態では、ストレージ管理サーバ120、410及び420の各々が、ストレージプール160、170及び180内に独自の記憶装置の組を含む。別の実施形態では、ストレージ管理サーバ120、410及び420の各々を外部記憶装置の組と通信するように構成することができる。ある実施形態では、ストレージ管理サーバ120を、ホストマシン102~106から特定のデータ要求を受け取って、この特定のデータ要求に関連する記憶装置と通信するように構成された適切なストレージ管理サーバ410及び420にルーティングする制御管理サーバとして構成することができる。
【0013】
ある実施形態では、ホストマシンが、ストレージコントローラ122及び124を通じて、ストレージプール160内の接続されたファイルシステムと通信する。ストレージコントローラ122及び124の各々は、ストレージプール160内の1又は2以上のディスク装置、フラッシュデバイス又はその他のSSDデバイス、或いは永続記憶装置を含む他の装置を制御するための処理回路を含む。ストレージコントローラ122及び124の各々は、ネットワークへの接続に必要なネットワークインターフェイスを含む。ある実施形態では、ネットワークインターフェイス132、134、136及び138の各々が、ネットワークスイッチ110及び112に接続されたネットワークインターフェイスを表す。ネットワークインターフェイス132、134、136及び138の各々は、ストレージコントローラ122及び124への異なるネットワーク経路を表すことを可能にする別個のIPアドレスを有するように構成される。例えば、ホストマシンは、ネットワークインターフェイス132及び134のための異なるIPアドレスを用いて2つの異なるネットワーク経路を介してストレージコントローラ122にデータを送信することができる。
【0014】
図1を参照すると、ある実施形態では、ストレージコントローラ122及び124が、他の装置への接続正常性を判定する目的で、ホストマシン102~106と、ストレージ管理サーバ410及び420などの他のストレージ管理サーバ上に実装できる他のストレージコントローラとに複数のタイプのテストメッセージを送信するように構成される。ストレージコントローラ122及び124は、ネットワークインターフェイス132、134、136及び138と要求元装置との間の接続経路の接続性状態要求を受け取って接続性情報を送信するように構成することができる。
【0015】
ある実施形態では、ホストマシン102~106を、ストレージ管理サーバ120、410及び420上に存在するストレージコントローラに複数のタイプのテストメッセージを送信するようにさらに構成することができる。ホストマシン102~106を、テストメッセージを開始して送信するように構成することにより、方向的接続性状態(directional connectivity statuses)を確立することができる。例えば、ホストマシンからストレージコントローラにデータを送信するための接続情報と、ストレージコントローラからホストマシンにデータを送信するための接続情報とを指定する接続経路の接続性情報を生成することができる。
【0016】
ストレージプール160は、ストレージノード710-1、710-2、...及び710-Nを含み、これらのストレージノードは、データを物理的に記憶するために使用される記憶装置をさらに含む。ストレージプール160、記憶装置、並びにホストマシンと、データの書き込み、読み出し及び更新を行うことができるストレージコントローラとの間の相互接続性の実装の詳細な説明については、本明細書の分散型仮想アレイ(DISTRIBUTED VIRTUAL ARRAY)の節において説明する。
【0017】
機能の概要
本明細書では、ホストマシン102~106と、ストレージコントローラ122~124と、ストレージプール160との間の使用可能な接続経路を判定するために使用できる、ホストマシン102~106とネットワークインターフェイス132~138との間の接続性状態をストレージコントローラが判定する技術について説明する。
図2に、接続性情報を判定し、ホストマシンとストレージコントローラとの間の接続状態の接続性マップを生成し、接続性状態情報をホストマシンに送信する実施形態例を示す。
【0018】
テストメッセージ
ある実施形態では、ストレージコントローラ122及び124がテストメッセージを生成し、ネットワークインターフェイス132~138の各々からホストマシン102、104及び106に送信する。例えば、テストメッセージが生成され、ネットワークインターフェイス132~138からホストマシン102、104及び106の各々に送信される。ある実施形態では、ホストマシン102、104及び106を、それぞれが別個のIPアドレスを有するように構成された複数の結合されていないネットワークインターフェイスを含むように構成することができる。ホストマシン102、104及び106上の複数の結合されていないネットワークインターフェイスの各々は、ネットワークインターフェイス132~138からテストメッセージを受け取るように構成される。
【0019】
ある実施形態では、テストメッセージが、ターゲットへの接続性を判定するとともにソースからテストメッセージが送信されてターゲットがソースにメッセージをエコーバックするまでのラウンドトリップ時間を測定する目的で、ソースから特定のターゲットに送信されるデータの1又は2以上のデータパケットを表す。テストメッセージの例としては、ホスト装置からリモートターゲット装置に送信されるインターネットコントロールメッセージプロトコル(ICMP)エコー要求パケットであるpingメッセージが挙げられる。この時、リモートターゲット装置は、ホスト装置にICMPエコー応答メッセージを返送する。テストメッセージの実施形態は、以下に限定するわけではないが、主にネットワークインターフェイスからホストマシンへの到達可能性及びラウンドトリップ時間をテストするように構成された小容量テストメッセージ、メッセージ自体のエラー及びパケットロスに基づいてホストマシンへの到達可能性及び接続品質をテストするように構成された大容量テストメッセージ、並びにネットワークインターフェイス132~138とホストマシン102~106との間の接続の接続速度、信頼性及び利用可能性を判定するために使用される他のいずれかのタイプのテストメッセージを含むことができる。
【0020】
図2のステップ205には、ストレージコントローラが各ホストマシンにテストメッセージを送信することを示す。ある実施形態では、ネットワークインターフェイス132~138の各々からホストマシン102~106の各々にテストメッセージが送信される。ネットワークインターフェイス132~138の各々からホストマシン102~106の各々にテストメッセージを送信することにより、各ネットワークインターフェイス132~138から各ホストマシン102~106への各ネットワーク経路の接続性がテストされる。例えば、ネットワークインターフェイス132~138からホストマシン102に送信されるテストメッセージを用いて、ネットワークインターフェイス132~138のうちのどのネットワークインターフェイスが現在ホストマシン102への接続性を有しているかを判定することができる。また、ネットワークインターフェイス132~138からホストマシン102に送信されるテストメッセージを用いて、どのネットワークインターフェイスが現在ホストマシン102への接続性を有していないかを判定することもできる。
【0021】
ある実施形態では、ストレージコントローラ122及び124を、ホストマシン102~106の各々に定期的にテストメッセージを送信するように構成することができる。例えば、ストレージコントローラ122及び124は、テストメッセージを3秒毎にホストマシンに送信するように構成することができる。ストレージコントローラ122及び124は、小容量テストメッセージと大容量テストメッセージの送信を定期的にスケジュールするように構成することもできる。例えば、小容量テストメッセージは、毎分3回ホストマシンに送信するようにスケジュールすることができ、大容量テストメッセージは、毎分1回ホストマシンに送信するようにスケジュールすることができる。
【0022】
テストメッセージは、ホストマシン102~106への接続性をテストすることに限定されるものではない。ある実施形態では、ストレージコントローラ122及び124を、ストレージ管理サーバ410及び420に実装されたストレージコントローラにテストメッセージを送信するように構成することができる。これらのテストメッセージを用いて、複数のストレージコントローラ間の接続性を判定することができる。また、ストレージ管理サーバ410及び420上のストレージコントローラは、ホストマシン102~106、並びにストレージコントローラ122及び124などの他のストレージコントローラにテストメッセージを送信することもできる。さらに別の実施形態では、現在の分散ストレージシステムネットワークを複製するように実装できる複製環境に複製データを送信する接続経路を特定する目的で、ストレージコントローラ122及び124から遠隔の複製された分散ストレージシステムネットワークにテストメッセージを送信することもできる。
【0023】
ホストマシン102~106の各々は、ネットワークインターフェイス132~138の各々からテストメッセージを受け取ったことに応答して、テストメッセージを送信したネットワークインターフェイスに応答メッセージを返送するように構成される。例えば、ホストマシン102は、ネットワークインターフェイス132~138の各々からテストメッセージを受け取った後に応答メッセージを生成してネットワークインターフェイス132~138に返送するように構成される。一例としてICMPメッセージを挙げると、ネットワークインターフェイス132によって送信されたテストメッセージがICMPエコー要求メッセージの場合、応答メッセージは、ホストマシン102によって送信されるICMPエコー応答メッセージとすることができる。テストメッセージ及び応答メッセージの実施形態はICMPメッセージに限定されず、例えばカスタムの又は専用のテストメッセージ及び応答メッセージを使用することもできる。別の実施形態では、テストメッセージ自体が、特定のメッセージ又は特定のメッセージタイプに限定されない。ネットワークインターフェイス132~138によって送信されホストマシン102、104及び106によって受け取られるデータパケットを用いて、エンドポイント間の接続性を示すことができる。例えば、接続経路をテストするためにネットワークインターフェイス132からホストマシン102に特定のデータパケットを送信することができる。この特定のデータパケットは、要求又は応答に関する実際のデータ、接続経路のテストに特化して使用されるダミーデータ、或いはエンドポイント間で送信される、接続経路のテストに使用される要求メッセージ又は応答メッセージに追加される特定のデータパケットを含むことができる。
【0024】
ステップ210には、ネットワークインターフェイス132~138のうちのあるネットワークインターフェイスがホストマシンから応答メッセージを受け取ることを示す。例えば、ネットワークインターフェイス132がホストマシン102からICMPエコー応答メッセージを受け取る。このICMPエコー応答メッセージを使用して、ネットワークインターフェイス132とホストマシン102との間に接続性が存在することを示すことができる。
【0025】
ある実施形態では、特定のネットワークインターフェイスが特定の時間後に応答メッセージを受け取らなかった場合、この特定のネットワークインターフェイスは、特定のホストマシンからの応答メッセージがないことに基づいて、この特定のホストマシンへの有効な接続を有していないと判断することができる。例えば、ストレージコントローラ122上のネットワークインターフェイス134がホストマシン104にテストメッセージを送信し、特定の時間後にホストマシン104から応答メッセージが受け取られなかった場合、ストレージコントローラ122は、ネットワークインターフェイス134からホストマシン104への接続が現在停止中であると結論付けることができる。
【0026】
接続性マップ
ある実施形態では、ストレージコントローラ122及び124を、ネットワークインターフェイス132~138における応答メッセージの受信時に、送信したテストメッセージと受信した応答メッセージとに関連する情報をストレージ管理サーバ120に記憶するように構成することができる。ストレージ管理サーバ120は、ストレージコントローラ122及び124に付属するネットワークインターフェイス132~138から送信したテスメッセージの接続性指標と、これらのネットワークインターフェイスが受信した応答メッセージの接続性指標とを記憶するように構成されたローカルメモリを含むことができる。別の実施形態では、ストレージ管理サーバ120を、接続性指標をストレージプール130内のリモート位置に記憶するように構成することができる。
【0027】
ある実施形態では、ストレージ管理サーバ120が、ネットワークインターフェイス132~138とホストマシン102~106との間の接続経路の接続性状態情報を記憶するように構成される。接続経路の接続性状態情報は、1又は複数のローカルデータベーステーブル又は他のいずれかのストレージフォーマットに記憶することができる。
【0028】
再び
図2を参照すると、ステップ215において、ホストマシンとネットワークインターフェイスとの間の接続状態の接続性マップが生成される。ある実施形態では、ストレージ管理サーバ120が、ネットワークインターフェイス132~138とホストマシン102~106との間の接続性状態及び接続特性をマッピングする接続性マップを生成して維持する。接続性マップは、ホストマシンとネットワークインターフェイスとの間の接続経路のアクティブなレジストリとしての役割を果たす。接続性マップは、送信したテストメッセージと受信した応答メッセージとに基づく接続経路に関する最新の状態情報を含む。例えば、ストレージ管理サーバ120は、ネットワークインターフェイス132~138から送信された各テストメッセージと、ネットワークインターフェイス132~138において受け取られた各応答メッセージとに対応するデータを記憶することができる。ストレージ管理サーバ120は、記憶されたテストメッセージ及び応答メッセージデータに基づいて、ネットワークインターフェイス132~138とホストマシン102~106との間の各接続経路の接続性状態及び接続性特性を含む1又は2以上のデータベーステーブルの形の接続性マップを生成することができる。接続状態及び接続特性は、ネットワークインターフェイスから送信されたテストメッセージに対応する応答メッセージがホストマシンから受け取られたかどうか、及びテストメッセージの送信と対応する応答メッセージの受信との間のレイテンシに基づくことができる。
【0029】
図3に、ホストマシンとネットワークインターフェイスとの間の接続を行列として表す接続性マップの実施形態例を示す。接続性マップ305では、行310が、現在のネットワーク設定内の異なるホストマシンを表し、列315の各々が、ストレージコントローラ122及び124からのネットワークインターフェイスを表す。ある実施形態では、ホストマシンとネットワークインターフェイスとの間の接続経路状態が、特定のホストマシンと特定のネットワーク経路との交わりによって表される。例えば、接続性マップ305では、ホストマシン102とネットワークインターフェイス132との間の接続経路が現在「作動中(up)」であり、ホストマシン102とネットワークインターフェイス134との間の接続経路が現在「停止中(down)」である。ホストマシン102は、接続性マップ305における現在の接続性状態を使用して、ホストマシン102とネットワークインターフェイス132との間の経路が現在作動中であるという理由でネットワークインターフェイス132を介してストレージコントローラ122と通信することができる。
【0030】
ある実施形態では、特定のネットワークインターフェイスと特定のホストマシンとの間の接続が作動中であるか、それとも停止中であるかについての判定が、テストメッセージの特定の試行回数に基づくことができる。例えば、ストレージコントローラ122は、3つの連続するテストメッセージと応答メッセージの送受信に基づいて、ネットワークインターフェイス132とホストマシン102との間の接続が作動中であると判定することができる。同様に、ストレージコントローラ122は、3つの連続するテストメッセージを送信し、特定の時間にわたって応答メッセージが受け取られなかったことに基づいて、ネットワークインターフェイス134とホストマシン104との間の接続が停止中であると判定することができる。ある実施形態では、ネットワークインターフェイスとホストマシンとの間の接続性の判定が、以下に限定するわけではないが、テストメッセージの試行に連続して成功した又はしなかった回数、テストメッセージの送信と応答メッセージの受信との間の時間、異なるタイプのテストメッセージについて正常に受け取られた応答メッセージ、及び受け取った応答メッセージにおいて報告される他のいずれかの測定可能な応答指標を含む一連の構成基準に基づくことができる。
【0031】
ある実施形態では、ストレージ管理サーバ120を、特定のレイテンシ閾値に基づいてホストマシンとネットワークインターフェイスとの間の特定の接続状態が停止中であると判定するように構成することができる。例えば、テストメッセージの送信と対応する応答メッセージの受信との間のレイテンシ時間が1000ミリ秒(ms)を超えた場合、ストレージ管理サーバ120は、特定のホストと特定のネットワークインターフェイスとの間の接続経路が通信にとって遅すぎ、従って「停止中」と見なされると判定することができる。再び
図3を参照すると、ホストマシン102とネットワークインターフェイス134との間の接続経路は、テストメッセージの送信と応答メッセージの受信との間の平均レイテンシが1000msを超えたことによって停止中と判定することができる。
【0032】
接続性マップ305の他の実施形態は、ホストマシンとネットワークインターフェイスとの間の接続経路に関するさらなる接続詳細を含むことができる。例えば、ストレージ管理サーバ120は、接続経路が作動中であるか、それとも停止中であるかの判定と共に、レイテンシに基づく接続速度、応答メッセージの成功回数及び不成功回数に基づく接続品質、並びに各接続経路の現在のネットワーク負荷などの特性を判定することもできる。例えば、各接続経路は、接続経路上のデータトラフィック量に基づいて、接続経路の現在の使用率が高いか、それとも低いかを指定する情報を含むことができる。
【0033】
接続性マップ305は、ネットワークインターフェイス132~138とホストマシン102~106との間の接続経路に限定されるものではない。ある実施形態では、ストレージ管理サーバ120が、接続性マップ305内に、複数のストレージ管理サーバ120、410及び420と、その対応するストレージコントローラ及びネットワークインターフェイスとの間の接続経路情報を含むことができる。別の実施形態では、ストレージ管理サーバ120が、分散ストレージシステムネットワークを複製するように構成された複製ネットワークへの接続経路情報を含むことができる。さらに他の実施形態では、ストレージ管理サーバ120が、各々がストレージコントローラとホストマシンとの間、ストレージコントローラとストレージコントローラとの間、及び作動中の装置と複製装置との間などの異なるタイプの接続経路間の接続情報を含むように構成された複数の接続性マップを生成することができる。
【0034】
ストレージ管理サーバ120は、他のストレージ管理サーバ上のストレージコントローラ、ホストマシン及び複製装置などの他の装置から接続性マップ更新メッセージを受け取るように構成することができる。接続性マップ更新メッセージを受け取る詳細については、本明細書の接続性マップの更新(UPDATING CONNECTIVITY MAP)の節において詳細に説明する。
【0035】
ある実施形態では、接続性マップを用いて、ストレージコントローラに付属する複数のネットワークインターフェイス上におけるネットワークトラフィックを可能にすることによってストレージコントローラ122及び124とホストマシン102~106との間の総帯域幅を拡大することを含め、ストレージコントローラ122及び124とホストマシン102~106との間の通信にどのネットワークインターフェイスを使用すべきかを判断することができる。例えば、各ホストがネットワークインターフェイス132及び134にわたってネットワークトラフィックを広げた場合、ホストマシン102及び104が利用できるコントローラネットワーク帯域幅は2倍になる。ホストマシン102が2つのネットワークインターフェイスを有する場合、ネットワークインターフェイス132及び134にわたってトラフィックを広げることによって、ホストマシン102への帯域幅は2倍になる。
【0036】
ある実施形態では、接続性マップを用いて、特定のクライアントプロセスと特定のサーバプロセスとの間でデータ要求を通信するための、特定のネットワークインターフェイスと特定のホストマシンとの間の安定した接続経路を特定することができる。例えば、接続性マップを用いて、ネットワークインターフェイス132を介してストレージコントローラ122と通信するホストマシン102上の特定のプロセスのための安定した接続経路を確立することができる。接続がリセットされた場合には、ホストマシン102とネットワークインターフェイス132との間に新たな接続を確立することによって、ホストマシン102とストレージコントローラ122との間の接続経路を再び判定する必要性を避けることができる。
【0037】
ある実施形態では、どのネットワークインターフェイスがデータ要求を送信すべきかを決定する乱数割り当て技術を用いてホストマシン上の特定のプロセスに特定のネットワークインターフェイスを割り当てることによって安定した接続経路を構成することができる。例えば、ハッシュソルト内でサーバプロセス識別子を使用するような技術を用いて、ホストマシン上のプロセスに特定のネットワークインターフェイスを宛先インターフェイスとして割り当てることができる。そうすることにより、データ要求を開始する特定のプロセスに基づいて特定のホストマシンからのデータ要求を複数のネットワークインターフェイスにわたって広げることができる。この方法では、特定のホストマシン上の異なるプロセスに基づいて複数の異なるネットワークインターフェイスにデータ要求が送信されるので、特定のホストマシンが不適切な量のデータを送信した場合にクライアントスキューの存在が低減される。
【0038】
ある実施形態では、利用可能なネットワークインターフェイスへの接続経路の判定が、サーバスキュー又はクライアントスキューのいずれかに基づいて不均等な負荷分散を解決する技術を含むことができる。クライアントスキューは、複数のクライアントからの不均等な負荷分散を引き起こすことがある。1つの実施形態では、ターゲットネットワークインターフェイスの割り当て時にハッシュソルトにサーバプロセス識別子を含めることによってクライアントスキューを低減することができる。サーバプロセス識別子を使用すると、単一のビジーなクライアントからのトラフィックを含むクライアントからのトラフィックが単一のネットワークインターフェイスに送信されないことを確実にすることができる。代わりに、一意のサーバプロセス識別子を含む異なるハッシュソルトに基づいて、異なるサービスと異なるネットワークインターフェイスとの間で接続が分散される。
【0039】
サーバスキューは、ストレージコントローラ122上のサービス間に不均等な負荷分散を引き起こすことがある。潜在的なサーバスキューの事例を低減するために、各ホストマシン102~106は、そのプロセスの有効期限にわたり、ハッシュソルトも含む乱数を生成する。これによって異なるホストマシン102~106による異なるターゲットネットワークインターフェイスの割り当てが可能になることにより、ストレージコントローラ122上で実行中の最もビジーなサービスへの接続がストレージコントローラ122の異なるネットワークインターフェイスにわたって均等に分散するようになる。
【0040】
ストレージコントローラへの役割の割り当て
ある実施形態では、ストレージ管理サーバ120が、接続性マップ内の接続性状態情報を用いて、ストレージコントローラ122及び124の能動的役割及び受動的役割を決定するように構成される。ストレージコントローラの能動的役割とは、特定のストレージコントローラを、ホストマシンから受け取ったデータ要求を処理してストレージプール160内の適切な宛先にルーティングするストレージコントローラとして指定することを意味する。ストレージコントローラの受動的役割とは、特定のストレージコントローラを、能動的ストレージコントローラのバックアップとしての役割を果たすストレージコントローラとして指定することを意味する。受動的ストレージコントローラは、能動的ストレージコントローラに障害が起きた場合に利用することができる。例えば、ストレージ管理サーバ120は、どのネットワークインターフェイスが作動中の接続経路を有しているかに基づいてストレージコントローラの能動的役割と受動的役割とを決定することができる。
図4を参照すると、ストレージ管理サーバ120、410及び420上のストレージコントローラとホストマシン102、104及び106との間の接続性状態情報を用いて、どのストレージコントローラを能動的にし、どのストレージコントローラを受動的にすべきかを決定することができる。例えば、ストレージ管理サーバ120は、ストレージ管理サーバ120内のどのストレージコントローラによってストレージ管理サーバ間の接続性がより良好になるかに基づいて、ストレージコントローラ122を能動的コントローラとして割り当て、ストレージコントローラ124を受動的コントローラとして割り当てることができる。また、能動的/受動的フェイルオーバは、ストレージコントローラ122及び124と、ホストマシン102、104及び106との間のホスト接続性に基づくこともできる。接続性状態情報の決定は、接続性マップに記載される接続経路に基づくことができる。
【0041】
ある実施形態では、ストレージコントローラと外部記憶装置との間の接続性に関連してストレージコントローラに能動的役割及び受動的役割を割り当てることができる。例えば、接続先の記憶装置が外部に配置されている場合、接続性状態情報は、ストレージ管理サーバ120、410及び420の各々におけるストレージコントローラと外部記憶装置との間の接続性マップ内に存在することができる。能動的役割及び受動的役割は、接続先の各記憶装置の組について各ストレージ管理サーバ上の各ストレージコントローラに割り当てることができる。
【0042】
ストレージコントローラ120は、ホストマシン102、104及び106への接続性のためにストレージコントローラ122又は124のいずれかに能動的役割を割り当てることに限定されるものではない。ある実施形態では、接続性マップ内の現在の接続性状態が、ストレージ管理サーバ410及び420上のストレージコントローラのうちの1つがホストマシン102~106への優れた接続性を有することを示すことができる。この時、ストレージ管理サーバ120は、残りのストレージ管理サーバ410及び420の一方に存在するストレージコントローラの一方に能動的役割を割り当てることもできる。
【0043】
他の実施形態では、ストレージ管理サーバ120が、どのストレージコントローラが能動的ストレージコントローラであり、どのストレージコントローラが受動的ストレージコントローラであるかを決定するために、ネットワークインターフェイスからの接続経路の作動/停止状態、並びに接続速度又は接続品質などの他の接続特性を用いて能動的役割及び受動的役割を決定することができる。
【0044】
さらに他の実施形態では、ストレージ管理サーバ120を、接続性マップ内の現在の接続性情報に基づいて、ストレージコントローラ122及び124の両方に能動的役割を割り当てるように構成することができる。例えば、接続性情報は、作動中として示されるホストマシンへの接続経路をストレージコントローラ122及び124の両方が有している旨を示すことがある。従って、ストレージ管理サーバ120は、ストレージ管理サーバ120内への帯域幅を拡大するために、ストレージコントローラ122及び124の両方に能動的役割を割り当てる。この能動的/能動的の設定を用いて、ストレージ管理サーバ120を、ホストマシンの各々にトラフィックを向ける経路を接続性情報に基づいて決定するようにさらに構成することができる。
【0045】
フローティングIPアドレス
ある実施形態では、ストレージコントローラ122及び124に付属するネットワークインターフェイス132~138の各々にIPアドレスが割り当てられる。これらのIPアドレスは、ホストマシンがストレージコントローラと通信するために使用する。ある実施形態では、ストレージ管理サーバ120が、ネットワークインターフェイスのうちの1つにさらなるIPアドレスを割り当てるように構成される。このさらなるIPアドレスは、ネットワークインターフェイスのうちのいずれか1つにいつでも割り当てることができるフローティングIPアドレスである。フローティングIPアドレスは、ネットワークインターフェイスなどの物理位置に割り当てた後に異なるネットワークインターフェイスなどの異なる物理位置にいつでも割り当て直すことができる仮想IPアドレスである。ある実施形態では、ストレージ管理サーバ120が、接続性マップ305からの接続性情報に基づいて、ネットワークインターフェイス132~138のうちの1つにフローティングIPアドレスを割り当てるように構成される。ストレージ管理サーバ120は、接続性マップにアクセスして、ホストマシンへの最も利用可能性の高い接続経路にどのネットワークインターフェイスが関連するかを判断することができる。例えば、ストレージ管理サーバ120は、接続性マップ305を参照して、ネットワークインターフェイス134からホストマシン102~106への接続経路が全て作動中であるため、ネットワークインターフェイス134にフローティングIPアドレスを割り当てるべきであると判断することができる。ストレージ管理サーバ120は、ネットワークインターフェイスと接続性マップ305とに関連する他の接続特性を用いて、フローティングIPアドレスをどこに割り当てるべきであるかを判断することもできる。また、ストレージ管理サーバ120は、現在能動的である特定のストレージコントローラに付属するネットワークインターフェイスにフローティングIPアドレスを割り当てることもできる。能動的として指定されたストレージコントローラは、接続経路の利用可能性が高いストレージコントローラである可能性が高いので、ストレージ管理サーバ120は、能動的ストレージコントローラ上のネットワークインターフェイスのうちの1つにフローティングIPアドレスを割り当てるように構成することができる。例えば、ストレージ管理サーバ120は、最初に能動的ストレージコントローラをストレージコントローラ122として決定することができる。次に、ストレージ管理サーバ120は、接続性が良好な方のネットワークインターフェイス(ネットワークインターフェイス132又は134のいずれか)にフローティングIPアドレスを割り当てると決定することができる。ストレージ管理サーバ120は、能動的ストレージコントローラを割り当て直すべきであると判断した場合、ストレージコントローラ124に能動的役割を割り当てた後に、接続性情報に基づいて、ストレージコントローラ124に付属するネットワークインターフェイスの一方(ネットワークインターフェイス136又は138のいずれか)にフローティングIPアドレスを割り当て直す。
【0046】
他の実施形態では、ストレージ管理サーバ120が、接続性マップのみに基づいてフローティングIPアドレスの割り当てを決定することができ、この決定は、受動的ストレージコントローラに付属するネットワークインターフェイスにフローティングIPアドレスを割り当てることを含むことができる。現在受動的であるストレージコントローラに付属するネットワークインターフェイスへのフローティングIPアドレスの割り当ては、ストレージ管理サーバ120によるストレージコントローラの能動的/受動的役割の再割り当てをトリガすることができる。例えば、ストレージ管理サーバ120は、受動的ストレージコントローラ124に付属するネットワークインターフェイス136にフローティングIPアドレスを割り当てるべきであると判断した場合、次はストレージコントローラ124が能動的になり、ストレージコントローラ122が受動的になるようにストレージコントローラの能動的/受動的役割を切り替えることもできる。
【0047】
フローティングIPアドレスは、接続状態クエリのための指定IPアドレスとして使用することができる。例えば、ホストマシン102~106は、どの接続経路が作動中であってストレージコントローラがデータ要求の受け取りに利用できるかに関する接続状態情報を受け取るために、フローティングIPアドレスに接続性状態クエリ要求を送信することができる。
【0048】
接続性状態クエリ
ある実施形態では、ストレージ管理サーバ120が、フローティングIPアドレスが割り当てられた特定のネットワークインターフェイスに関連する接続状態インターフェイスを開始するように構成される。接続状態インターフェイスは、ホストマシン及びネットワーク内の他の装置から接続性状態クエリを受け取って、クエリを送信したホストマシン又は他の装置に関連する接続経路情報を照会するようにプログラムされる。
【0049】
ある実施形態では、ホストマシン102~106が、ストレージコントローラにデータ要求を送信するのにどの接続経路が最適であるかを決定するために、接続性マップ305を照会するように構成される。ホストマシン102~106は、ホストマシンに関連する接続情報について接続性マップ305を照会するために使用される接続性状態要求メッセージを生成するように構成される。接続性状態要求メッセージは、接続性状態要求と、メッセージの要求元であるホストマシンを識別する情報とを含むことができる。例えば、ホストマシン102が接続性状態要求メッセージを生成する場合、接続性状態要求メッセージは、ホストマシン102を識別する識別情報を含むことができる。ストレージ管理サーバ120における接続状態インターフェイスは、この識別情報を使用してホストマシン102に関する接続情報を照会することができる。ホストマシン102~106は、接続性状態要求メッセージを生成した後に、フローティングIPアドレスをターゲットIPアドレスとして使用して接続状態インターフェイスに接続性状態要求メッセージを送信するように構成される。他の実施形態では、接続性状態要求メッセージの生成及び送信がホストマシン102~106に限定されない。接続性状態要求メッセージは、異なるストレージ管理サーバ間の接続経路を判定する目的で、ストレージ管理サーバ410及び420上の他のストレージコントローラなどの他の装置から送信することもできる。
【0050】
ある実施形態では、ホストマシン102~106が、(1)一定時間毎に、(2)ホストマシンの初期起動時に、及び(3)データ要求の失敗後に、接続性状態要求メッセージを生成して送信するように構成される。例えば、ホストマシン102は、起動時にはネットワーク内の接続経路の現在の接続性状態が分からない。従って、ホストマシン102は、どの接続経路が利用可能であるかを判定するために、接続性状態要求メッセージを生成してフローティングIPアドレスにおける接続状態インターフェイスに送信するように構成される。接続経路の状態は時間と共に変化し得るので、ホストマシン102は、ホストマシン102内の接続状態情報が最新であることを保証するために定期的に接続性状態要求メッセージを生成して接続状態インターフェイスに送信するように構成される。また、ホストマシン102は、データ要求の失敗後に接続性状態要求メッセージを生成して送信するように構成することもできる。例えば、ホストマシン102は、特定の接続経路を用いてストレージコントローラ122にデータ要求を送信し、このデータ要求が確認応答されなかった場合、使用した特定の接続経路が現在停止中の可能性があると結論付けることができる。このシナリオでは、ホストマシン102が、最新の接続状態情報を受け取るために接続性状態要求メッセージを生成して接続状態インターフェイスに送信することができる。
【0051】
再び
図2を参照すると、ステップ220において、ホストマシンから接続性状態要求メッセージが受け取られる。ある実施形態では、接続性状態要求メッセージが、フローティングIPアドレスが割り当てられた特定のネットワークインターフェイスによって受け取られる。例えば、フローティングIPアドレスがネットワークインターフェイス134に割り当てられている場合、接続状態要求メッセージはネットワークインターフェイス134において受け取られる。ネットワークインターフェイス134は、接続状態要求メッセージを受け取って処理のために接続状態インターフェイスにルーティングする。
【0052】
図2のステップ225において、接続状態インターフェイスは、受け取った接続状態要求メッセージを処理し、接続状態結果セットを生成して要求元のホストマシンに送信する。ある実施形態では、接続状態インターフェイスが、要求元のホストマシンに関する接続性状態情報を含む接続状態結果セットメッセージを生成する。例えば、接続状態要求メッセージがホストマシン102から送信された場合、接続状態インターフェイスは、ホストマシン102をエンドポイントとして含む接続経路について接続性マップ305を照会することができる。その後、接続状態インターフェイスは、接続状態結果セットをホストマシン102に送信する。ある実施形態では、接続状態結果セットが、現在どのストレージコントローラが能動的であるか、及び現在どのストレージコントローラが受動的であるかを指定する情報を含むこともできる。
【0053】
その後、接続状態結果セットを受け取ったホストマシン102~106は、接続経路情報を用いて能動的ストレージコントローラに適切にデータ要求をルーティングすることができる。この結果、能動的ストレージコントローラは、ストレージプール160内の適切なデータ記憶装置にデータ要求を送信するように構成される。
【0054】
ある実施形態では、ホストマシン102~106が、接続経路情報をホストマシン102内のローカルキャッシュストアに記憶するように構成される。ホストマシン102は、接続経路情報をローカルキャッシュに記憶することにより、各データ要求の送信前に接続性状態要求メッセージを送信する必要なく、能動的ストレージコントローラへのデータ要求の送信に使用すべき適切な接続経路を決定することができる。また、接続性マップ内で接続性情報が変化した場合に接続状態が古くなった旨をホストマシン102、104及び106に警告するようにストレージコントローラ122が構成されるように、ホストマシン102、104及び106を、接続性情報に気を配るように構成することもできる。その後、ホストマシン102、104及び106は、別の接続性状態要求メッセージを送信するように構成することができる。
【0055】
接続状態リストの生成
ある実施形態では、接続状態インターフェイスを、接続性マップ305を定期的に照会して、停止中であることが分かっている接続経路の組を特定するように構成することができる。例えば、現在ネットワークインターフェイス132が停止中である場合、接続性マップ305は、ホストマシン102~106とネットワークインターフェイス132との間の接続経路が停止中である旨を示す。次に、接続状態インターフェイスは、ネットワークインターフェイスとホストマシンとの間の停止中の接続についての「ブラックリスト」を作成することができる。このブラックリストは、現在停止中であるネットワークインターフェイスとホストマシンのペアのIPアドレスのリストを含むことができる。その後、接続状態インターフェイスを、生成したブラックリストをホストマシン102~106に送信するように構成して、ホストマシン102~106がその接続経路情報のローカルキャッシュを更新できるようにすることができる。
【0056】
別の実施形態では、接続状態インターフェイスを、接続性マップ305を定期的に照会して現在作動中の接続経路を特定するように構成することもできる。接続状態インターフェイスは、ホストマシン102~106から能動的ストレージコントローラへのデータ要求に使用すべき、現在作動中のネットワークインターフェイスとホストマシンのペアのIPアドレスについての「ホワイトリスト」を作成することができる。
【0057】
ホストマシン102~106は、受け取ったブラックリスト又はホワイトリストに基づいて、自機のローカルキャッシュに記憶された接続経路情報を更新するように構成することができる。また、ホストマシン102~106は、ブラックリスト又はホワイトリストメッセージのいずれかを受け取ったことに応答して、新たな接続状態要求メッセージを生成して送信するように構成することができる。例えば、ホストマシン102は、ローカルキャッシュの更新後にホストマシン102が能動的ストレージコントローラにデータ要求を送信するための明確な接続経路を有さない状態にするネットワークインターフェイスとホストマシンのペアのブラックリストを受け取ることもある。このシナリオでは、ホストマシン102が、ホストマシン102に関する全ての接続経路状態情報を指定する接続情報の結果セットを受け取るために、フローティングIPアドレスに新たな接続状態要求メッセージを送信することができる。
【0058】
ある実施形態では、ストレージ管理サーバ120を、接続性マップ305内の接続情報に基づいて正常性状態レポートを生成するように構成することができる。正常性状態レポートは、ネットワークの状態をモニタするシステム管理者及びその他のネットワークエンジニアのために生成される接続状態レポートである。例えば、1又は2以上のストレージコントローラとホストマシン102~106との間の接続が停止している場合には、正常性状態レポートを用いていずれかの潜在的な緊急事態をシステム管理者に警告することができる。ある実施形態では、接続性マップ305のいずれかの変化によって正常性状態レポートをトリガすることができる。例えば、ホワイトリスト又はブラックリストが生成された場合には、正常性状態レポートの詳細を含む正常性状態レポートを生成することもできる。別の例では、閾値数の接続経路が状態を変化させることによって正常性状態レポートの生成をトリガすることができる。
【0059】
ある実施形態では、ストレージ管理サーバ120を、異なるタイプの正常性状態レポートを生成するように構成することができる。例えば、ストレージ管理サーバ120は、定期的な正常性状態レポート、特定のブラックリスト又はホワイトリストのトリガに基づく高優先度の正常性状態レポート、及びホストマシン、ストレージ管理サーバ又は複製サイト間の接続に固有のカスタマイズされた正常性状態レポートを作成することができる。
【0060】
接続性マップの更新
ある実施形態では、ストレージ管理サーバ410及び420内のストレージコントローラを、ホストマシン102~106及び他のストレージコントローラにテストメッセージを送信し、ホストマシン102~106及び他のストレージコントローラから応答メッセージを受け取るように構成することができる。ストレージ管理サーバ410及び420は、応答メッセージを受け取ると、接続性マップ更新メッセージを生成してストレージ管理サーバ120に送信するように構成することができる。接続性マップ更新メッセージは、以下に限定するわけではないが、接続経路に関する接続性状態情報、レイテンシ情報及び接続エラー情報を含む接続性情報と、テストメッセージ及び応答メッセージとを含むことができる。ある実施形態では、ストレージ管理サーバ120を、接続性マップ更新メッセージを受け取り、これに従って接続性マップ305を更新するように構成することができる。
【0061】
ストレージ管理サーバ120は、ストレージ管理サーバ410及び420から接続性マップ更新メッセージを受け取ることに加えて、ホストマシン102~106から接続性マップ更新メッセージを受け取るように構成することができる。ある実施形態では、ホストマシン102~106を、テスメッセージを生成し、ストレージコントローラに送信し、ストレージコントローラから応答メッセージを受け取るように構成することができる。ホストマシン102~106においてテスメッセージを送信して応答メッセージを受け取る能力は、非対称の接続経路モニタリングを可能にする。ホストマシン102~106は、ホストマシンからストレージコントローラへの方向接続経路をテストするように構成することができ、ストレージコントローラは、ストレージコントローラからホストマシンへの方向経路をテストするように構成することができる。この時、接続性マップ更新メッセージを用いてストレージ管理サーバ120に方向的接続性及び接続速度を送信することができる。その後、ストレージ管理サーバ120を、方向接続経路情報を含むように接続性マップ305を更新するよう構成することができる。
【0062】
分散型仮想アレイ
図5に示すDVAの一般的な実施形態に、DVAの2つの主要な物理的「側面」である、(1つを含む)いずれかの数のサーバなどのホスト102と、ホスト側から見れば単一の、ただし分散したストレージシステムを形成できるストレージノード710-1、710-2、...、710-N(まとめて「710」)を含むストレージプール160との間の関係を示す。ホスト102内のエンティティが書き込んだデータは、最初に(NVRAM730として示す)不揮発性メモリに記憶され、最終的にはノード内に位置する永続記憶装置740-1、...、740-N(まとめて「740」)に記憶される。
【0063】
読み出し及び書き込みエンティティは、(「VM」1030-1、...、1030-nとして別個に示す)仮想マシン1030、又はユーザレベルアプリケーション540などのさらに一般的な非仮想化プロセスを含むあらゆるタイプのものとすることができる。ここでは、データの読み出し及び/又は書き込みを行う必要があるソフトウェアエンティティ及びハードウェアエンティティを「クライアント」と呼ぶ。
【0064】
各ホストは、1又は2以上のプロセッサ(CPU)511と、CPU上で実行できるデータ及び/又はコードの非永続的な揮発性の、及び/又は永続的な不揮発性の非一時的記憶を行ういくつかの装置512とを含むシステムハードウェア510を含む。従来、一般にメモリは高速で揮発性の固体装置を構成していたのに対し、一般にストレージは低速で不揮発性の機械的又は光学機械的装置を構成していたことから、「メモリ」と「ストレージ」との間には比較的明確な技術的区別があった。しかしながら、現代技術が大容量の永続ストレージに幅広く使用されるにつれ、この区別は次第に曖昧になってきている。例えば、多くの最新のサーバは、特に非連続的な記憶位置については、一般にIOPS(1秒当たりの入出力操作)の観点で測定したスループット及び速度を高めるために「サーバフラッシュ」などの様々な固体記憶装置(SSD)を使用する。相変化メモリ(PRAM)などの最先端技術では、この区別がさらに曖昧になっている。ここで説明する実施形態の実装には、特定のタイプのホスト側ストレージ技術又はメモリ技術は不要であり、全てのホストが同じストレージ技術を利用する必要もない。
【0065】
ハードウェア510は、インターネット、企業内ネットワークなどのいずれかの既知の公衆ネットワーク、専用ローカルネットワーク又は広域ネットワークとすることができる1又は2以上のネットワーク600を介してシステムの様々なコンポーネント間でデータを転送できるように、ネットワーク接続装置514などの他の従来の機構を含む。唯一の要件は、どのようなネットワークを使用するとしても、アクセスする必要があるストレージノード(以下を参照)に全てのクライアントがアクセスできることである。従って、「この」ネットワーク600は、異なるネットワーク間でデータを転送する必要がある場合にはあらゆる必要なスイッチング装置又はその他の通信装置を伴う、実装されたあらゆるネットワークの集合体であると解するべきである。
【0066】
各ホストは、例えば実装、オペレーティングシステム(OS)、デバイスドライバなどに応じて、従来のシステムソフトウェア515も含む。図示の構成では、ホスト102のうちの1つを、通常はシステムハードウェア510と(図示の実施形態では)少なくとも1つの仮想マシン(VM)1030-1、...1030-nとの間に何らかの形のハイパーバイザ1020又は同様のインターフェイスレイヤを含む仮想化プラットフォームをサポートするものとして示す。周知のように、VMは、実際の物理的コンピュータシステムのソフトウェア抽象概念である。
【0067】
図5では、簡潔さのみを目的としてVMをホスト内に示しているが、ほとんどの実装では、仮想マシンはハイパーバイザ/ハードウェアホスト上で動作する「ゲスト」である。一部の仮想化システムには、ハイパーバイザ又はホストOSなどの基本ソフトウェア層へのインターフェイスとして「仮想マシンモニタ」が含まれる。VMware社のESXサーバ製品ファミリなどの多くのハイパーバイザは、ホストOSと相互作用する必要なく「ベアメタル」上で、すなわちシステムハードウェア510上で直接動作する。他の仮想化プラットフォームでは、ハイパーバイザが、ハイパーバイザからの呼び出し時にいくつかの動作をサポートして実行するホストOS上で、又はこのようなホストOSと同じレベルで動作することができる。ここで説明する本発明の様々な実施形態は、VMであろうと、(単複の)ハイパーバイザであろうと、又は他の仮想化レイヤであろうと、いずれかの特定の仮想化アーキテクチャに依存しない。実際のところ、VMは全く前提としておらず、むしろ想定されるのは、ソフトウェアエンティティ及びハードウェアエンティティ(「クライアント」)からのデータストレージ読み出し/書き込み要求を処理する何らかのシステムソフトウェア層である。従って、「ホスト」は、後述する分散ストレージ構成に対してデータの書き込み及び/又は読み出しを行いたいと望むことができるプロセス(VMはその特殊な例である)が実行されるいずれかのプラットフォームである。
【0068】
ストレージプール160内の個別のユニットとして示す様々なストレージノード710は、異なる物理サーバとすることができるが、アドレス指定のために単一の論理境界に含まれていると考えることができる。しかしながら、アドレス指定可能なストレージプールの論理的概念境界は、図示の物理ストレージノード710-1、710-2、...、710-Nの組に留まらないストレージコンポーネント及びプロセスを含むこともできる。
【0069】
所望のDVA機能に応じて、ノード710のいくつかの分散機能及び制御機能を操作してノード710に共通する管理データ及びその他のデータなどを維持するプールマネージャ750を含めることもできる。このようなプールマネージャは、1又は2以上のストレージノード内、1又は2以上のホスト内、又は同じネットワークに接続された別個のコンピューティングシステム内で動作することができる。プールマネージャは、プールに記憶されている(仮想ディスクなどの)ファイルのファイル名空間の管理、クラスタ管理、及び他のノード管理機能などのための他の管理コンポーネントを含むこともできるが、これらは独立エンティティとして実装することもできる。
【0070】
ストレージノードを実装するための多くの現在利用可能な考えられる選択肢の例のうちの2つとして、複数のディスクコントローラを含むXyratexシャーシ、或いは集約的入力/出力タスクのための低電力サーバアーキテクチャである単一ディスク「FAWN」(Fast Array of Wimpy Nodes)を挙げることができる。より一般的には、ノードは、いずれかの形態のバス又はネットワーク接続を介して少なくとも1つのディスクと通信するいずれかの形態のコンピュータを用いて実装することができる。実際には、ノード自体を、ストレージプールにデータを書き込むエンティティとすることもできる。
【0071】
各ノードは、1又は2以上のストレージコントローラ720-1、720-2、...、720-N(まとめて720)を含み、これらの各々は、1又は2以上のディスク、フラッシュ又はその他のSSDデバイス、又は(複数の物理装置を含む)永続記憶装置740を含むその他のデバイスを制御する従来の処理回路を含む。コントローラは、ネットワーク600に接続するために必要な回路も含む。いくつかの実施形態では、単一の複合モジュールにおいてコントローラを記憶装置と一体化することもできる。ホスト102と同様に、ストレージプール160のノード内で使用される様々なソフトウェアコンポーネントは、プール内の各ハードウェアプラットフォーム上の(単複の)プロセッサ上で実行できるようにいずれかの従来の方法でロード及び/又は記憶され、これらの媒体及びプロセッサは、簡潔にするために図には別個に示していないが、当業者であれば当然ながらこれらの存在を理解するであろう。これまでに説明したシステムコンポーネントは、多くの先行技術のシステムにも見られるものである。
【0072】
好ましい実施形態では、コントローラ720のうちの少なくとも1つが、新たに書き込まれたデータを非常に低いレイテンシで受け取って永続的に記憶する何らかの不揮発性メモリ730(NVRAM-
図6)も含み、又はこのメモリにアクセスすることができる。いくつかのシステムでは、NVRAMが、PCIeスロット内の特殊なカード上に存在することができる。いくつかの実装では、コントローラがバッテリバックアップを有することができ、停電時には、コントローラがシステムメモリの一部をフラッシュドライブにコピーするのに十分な時間を有する。この場合、NVRAM730は、別個の物理コンポーネントである必要はなく、代わりに他の標準的な目的でコントローラ内に存在する汎用RAMの論理部分とすることができる。いくつかのシステムでは、NVRAMを単に低レイテンシのSSDとすることができる。本発明の実施形態の全ての実装においてノードがディスクとNVRAMの両方を有する必要はなく、むしろいずれかの所与のノードを、これらの2つのタイプの永続記憶装置の一方のみを有し、又は少なくとも一方にアクセスできるように構成することができる。従って、
図5に示すように、1又は2以上のノード(例えば、ノード710-1)が永続記憶装置と不揮発性メモリの両方を有し、1又は2以上の他のノード(例えば、ノード710-2)が永続記憶装置を含まず、さらに他の(単複の)ノードが不揮発性メモリコンポーネント730を全く有さないようにシステムを実装することができる。また、やはり
図5のノード710-Nに示すように、1又は2以上のノードが複数の永続記憶装置(740-N)を有することもできる。さらに、いくつかの実施形態では、NVRAMがホスト内に存在することもできる。
【0073】
好ましい実施形態では、ホストが、ネットワークを介して永続記憶装置にではなくストレージノード又はホスト内のNVRAMに特別にデータを書き込むとともに、このNVRAMからデータを削除するコマンドを与えることもできる。この点は、永続記憶装置に向かっているデータにとってNVRAMが透過的なバッファである従来のストレージシステムの構成とは大きく異なる。
【0074】
上述したように、2つの主なストレージフィロソフィは、トレードオフ領域のほぼ両極端に収まる。ハイパーコンバージドシステムでは、実質的に全ての記憶負荷及び計算負荷が相互依存ホスト内に集中するのに対し、他のシステムでは、計算負荷のほとんどがリモートストレージユニット自体に置かれて、ホストが互いに直接的に依存しない。本発明の実施形態が採用する異なる方法では、通常は大きなホストの計算リソースが多くのストレージ関連機能のために、ただしホスト間の顕著な通信及び調整を必要としない形で使用され、メインストレージ能力が主にリモートノードに留まり、あらゆるホストが別のホストを介さずにリモートノードにアクセスすることができる。
【0075】
この目的のために、ホスト及びノードは、システムソフトウェアレベルにおけるDVAh805モジュールと、ノードにおけるDVAn825というそれぞれのDVAコンポーネントを含む。DVAh805は、
図5に重ね合わせによって示すように、システムソフトウェア515の一部として、仮想化プラットフォームの(ハイパーバイザ1020などの)制御ソフトウェアの一部として、又はこれらの両方の協働コンポーネントとして実装することができる。選択肢としては、DVAhコンポーネントをシステムソフトウェア515内又はハイパーバイザ1020内のドライバとして構成し、必要に応じてホストオペレーティングシステム(システムソフトウェア)に呼び掛けることが挙げられる。DVAh805コンポーネントは、異なるユーザレベルプロセス又はシステムレベルプロセス内に、或いは「ヘルパー」VM内に構成することもできる。一般に、DVAh及びDVAnは、その構成に関わらず、非一時的ストレージに記憶されメモリにロードされてホストCPU511によって実行されるプロセッサ実行可能コードの対応部分として実装される。
【0076】
同様に、ノード内のDVAn825コンポーネントは、それぞれのストレージコントローラ720上で実行されるソフトウェアとして、又はストレージコントローラから分離しているがストレージコントローラと協働するソフトウェアモジュールとして実装することもでき、非一時的ストレージに記憶されメモリにロードされてノード710内の(単複の)プロセッサによって実行されるプロセッサ実行可能コードの対応部分としても実装される。
【0077】
ある実施形態では、ストレージコントローラ720が、ホスト上に存在するDVAh805に暗号鍵を配布することによってデータ暗号化を管理する。安全性を維持するために、ホストによって使用される暗号鍵は定期的に循環させることができる。ストレージコントローラ720は、異なるホストが異なる時点でデータ暗号化のために使用できる複数の暗号鍵を含む暗号化テーブルを維持する。ある実施形態では、この暗号化テーブルが、暗号鍵値と、暗号鍵値を識別するために使用される暗号化インデックス値とを指定する列を含む。ストレージコントローラ720は、特定のホスト上のDVAh805に暗号化値を送信する際に、暗号鍵値と暗号化インデックス値とを送信する。暗号化テーブルは、暗号鍵に関連する暗号化アルゴリズムを指定する列を含むこともできる。ストレージコントローラ720は、暗号化テーブル内に暗号化アルゴリズムを記憶することによって異なるタイプの暗号化アルゴリズムをサポートすることができ、暗号鍵値と、暗号化アルゴリズムタイプと、暗号化インデックス値とを単純にDVAh805に送信することによって、データの暗号化に使用される暗号化アルゴリズムのタイプの変更を可能にすることができる。ある実施形態では、DVAh805内の1又は2以上のモジュールが、ストレージコントローラ720から暗号鍵値を受け取ることによってデータの暗号化を管理するように構成される。
【0078】
少なくとも1つのホストには、好ましくは(単複の)メモリ/ストレージコンポーネント512の一部としてキャッシュ513を含めることが好ましい。キャッシュは、1又は2以上のフラッシュメモリデバイス、相変化ランダムアクセスメモリ(PRAM)、メインシステムメモリの一部などを使用することなどのいずれかの従来の十分に高速な技術を用いて実装することができる。キャッシュは、個別にパッケージ化された固体ディスク(SSD)、サーバ内のバスにプラグ接続された回路カード、サーバマザーボード上のモジュールなどとして実装することもできる。
【0079】
図6は、
図5に示す主要システムコンポーネントの簡略表現であるが、DVAモジュールの様々な任意のサブコンポーネントのさらなる詳細を含む。1つのホストと1つのノードしか示していないが、他のホスト/ノードにも同様のサブコンポーネントを含めることができる。なお、全てのホスト又はノードが
図6に示すものと同じDVAサブコンポーネントを含む必要はなく、いずれかの所与の実装ニーズに応じて、図示のサブコンポーネントのうちのいずれかの数(1つ~全部)をいずれかの所与のホストにあらゆる所望の組み合わせで含めることができる。従って、
図6に示すDVAサブコンポーネントの組は、例示及び説明を目的とするものにすぎない。さらに、
図6には、様々なサブコンポーネントを別個のものとして示しているが、これは例示及び説明を目的とするものにすぎず、これらの一部又は全部を単一の実行可能コード部分に組み合わせることもできる。
【0080】
DVAサブコンポーネント及びその機能は、バックグラウンドストレージ管理機能、データ変換機能及び/又は以下で概説するその他の機能を含む様々なストレージ処理機能の一部又は全部を実行する。なお、従来のストレージシステムでは、通常、これらの機能はストレージコントローラ内で実行され、ホストでは実行されない。DVAhサブコンポーネントは、以下を優先的に含む。
【0081】
既知の技術を用いてキャッシュ513に対する読み出し及び書き込みを操作するキャッシュマネージャ1013。1つの実施形態では、キャッシュが、ブロックのフィンガープリントに基づいてキャッシュ内のブロックを発見できるようにフィンガープリント化されたデータブロックを含む。
【0082】
ホスト上のVM(或いは仮想化された又はされていない他のプロセス)からデータを受け取り、ストレージプール160に記憶できるように設計されたいずれかのフォーマットにデータを処理するファイルマネージャコンポーネント1030。ファイルマネージャコンポーネント530は、データを読み出すための要求を受け取り、キャッシュ又はプールからデータを検索して処理し、元々記憶されていたフォーマットに戻して要求データを返送する。ファイルマネージャは、データのキャッシュ、処理、記憶又は検索を行うのに役立つ他のコンポーネントを呼び出すこともできる。
【0083】
ファイルマネージャ1030は、ファイルオフセットからストレージプール160に記憶されている対応するデータ項目への参照にマップを更新するマッピングモジュール1024を呼び出すことができる。いくつかの実施形態では、このデータ項目参照が、データ項目を含むブロックのフィンガープリントを含む。いくつかの実施形態では、ホストがフィンガープリントを計算する。いくつかの実施形態では、データ項目参照が、データ項目のロケータを含む。ファイルマネージャは、ファイル内の何らかのオフセットのための読み出し要求を満たすために、マッピングモジュール1024を呼び出して、ファイル内のそのオフセットについて記憶されているデータ項目への参照を取得する。その後、ファイルマネージャは、この参照を用いてキャッシュからデータ項目を検索し、或いはそこにデータ項目が存在しない場合には、プールからデータ項目を検索することができる。
【0084】
周知のように、仮想マシンのストレージシステムも仮想化される。従って、VM上で実行中のプロセスは、物理ストレージであると「思っている」が実際には「仮想ディスク」(vDisk)内の仮想アドレスであるものをアドレス指定した後に、対応するアドレスマップを用いて1又は2以上のレベルのアドレスリダイレクトを行って、最終的に物理空間内のアドレスに至る。分散ストレージシステムの文脈では、VMの読み出し及び書き込みが、最終的にストレージプール160内の1つの(又は、例えばデータがミラーリングされている場合には複数の)物理記憶装置内の対応するアドレスにマッピングされる。
【0085】
好ましくは、圧縮、暗号化、データの完全性を保証するためのチェックサム、抹消符号化されたストライプへの受信データの圧縮、例えばRAIDストライプの一部としての誤り訂正符号(ECC)値の計算、及び/又はフィンガープリント、すなわち受信データブロックの一意の識別情報の計算などの、既知のデータ変換機能の一部又は全部を実行するデータ処理コンポーネントである処理エンジン1020が含まれる。考えられるフィンガープリント技術の1つの例に、いずれかのSHA法(例えば、SHA-1)などを使用するハッシュがある。選択したフィンガープリント法に十分に衝突耐性がある(すなわち、2つの異なる入力が同じフィンガープリント出力を生じる確率が十分に低い)と仮定すれば、同じフィンガープリントを有する異なるデータブロックを、同じコンテンツを有するもの、従って重複するものと推測することができる。
【0086】
1つの実施形態では、到着データがフィンガープリント化され、到着ブロックのフィンガープリントをキャッシュ513内に、すなわちホスト102内に記憶されているブロックのフィンガープリントと比較することによって重複排除されることにより、ストレージプール160に記憶されているデータを分析して重複排除する必要性が避けられる。この構成では、通常はさらに強力なホストにおいてこれらの計算集約型タスクを実行できるだけでなく、ホストが最初にリモートストレージノード710からフィンガープリントを検索する必要があった場合に被ったはずの大部分のレイテンシも避けられる。
【0087】
フィンガープリント化されたブロックのキャッシュは、読み出し要求に応答してプールからデータブロックをフェッチするレイテンシを避けることもできる。2つの異なるファイルの各々が、同じコンテンツ、従って同じフィンガープリントを有するブロックを含むこともある。この重複ブロックは、1つのファイルの読み出し要求又は書き込み要求を満たすようにキャッシュ513に挿入しておくことができ、その後の別のファイル内の重複ブロックの読み出し要求は、プールからブロックをフェッチするレイテンシを伴うことなくキャッシュから満たすことができる。
【0088】
フィンガープリント化又はチェックサムを用いてデータの完全性を保証し、不完全な書き込みを検出することもできる。例えば、バッファデータについてフィンガープリントを計算することができる。潜在的なホスト障害及び不完全な書き込みのいずれかの兆候がある場合には、現在のデータのフィンガープリントをバッファデータのフィンガープリントと比較することができ、値が同じでなければ、システムは、バッファデータと記憶対象のデータとが同一でないので書き込みが不完全であったと分かる。
【0089】
ログ構造ファイルシステムを使用するDVAには、実施形態によってはコピーフォワードすべきデータを識別し、実施形態によってはこのようなデータを新たなストライプにコピーすることを含む、従来のガベージコレクション機能を実行するガベージコレクションモジュール1022を含めることができる。
【0090】
ストライプを用いてデータを記憶するシステムには、ストライプマネージャ1023を含めることができる。ストライプマネージャは、設計者が選択して実装するどのようなマッピングスキーム又は割り当てスキームにも従って複数のストレージノードにわたって分配したストライプに追加するECC値を計算するECCエンジン1032を使用し、又は含めることができる。
【0091】
ホストには、(例えば、ECC情報から失われたRAIDストライプ要素の)データ再構成、データリバランシング又はデータスクラビングなどの機能を実行してデータの完全性を保証するモジュール1026を含めることもできる。このモジュール、或いは1又は2以上の他のホストモジュールは、ホストのフラッシュキャッシュ内にデータをプリフェッチし、データクランプを形成してその細粒度で重複排除を行い、その後にこのようなクランプをリパックし、ホストフラッシュ障害を処理し、ホスト上のvDiskマップを更新することなどの動作を実行することもできる。
【0092】
DVAnサブコンポーネントは、以下を含むことができる。
【0093】
フィンガープリントからデータブロックロケータ又はその他の識別子へのマッピングを行うフィンガープリントインデックス1021。ホストは、フィンガープリント化されたデータブロックをストライプに記憶してストライプをプールに書き込む際に、フィンガープリントと対応するデータブロックロケータとをフィンガープリントインデックスに伝える。ホストは、フィンガープリント化されたブロックをプールから読み出す必要がある時には、まずインデックスにブロックロケータを要求した後にプールからブロックを読み出す。インデックス1021は、ホスト内に実装することもできるが、インデックスのサイズは記憶容量に比例し、一般的にはインデックスのためのメモリをその対応するストレージユニットとバンドルすることが最も効率的であると思われるので、コントローラ720に実装されることが好ましい。
【0094】
最近書き込まれたデータ及びその他のイベントをホスト上のロギングモジュール1025から受け取ってこれらのデータを不揮発性の低レイテンシNVRAMモジュール730に記憶するログ725。
図6には、NVRAMモジュール730がノード710の内部に存在するように示しているが、これは1つの実装例にすぎない。他の可能性としては、NVRAMモジュール730を異なる専用ノード内又は他のいずれかの場所に配置することが挙げられる。最近書き込まれたデータをNVRAMにログとして又は別様に記憶することにより、ディスクドライブなどの高レイテンシ装置740に書き込むレイテンシを伴うことなく、書き込みを「安全」なものとして承認することができる。ログ725を含むホスト外にこのようなデータを記憶することにより、記憶装置740のうちの1つの永続的な位置にデータを記憶する前にホストに障害が生じた場合に、(ストレージノードのうちの1つ、障害が生じていないホストのうちの1つ、又は最初にデータを受け取ったホスト以外の他のいずれかのエンティティなどの)別のエンティティが不揮発性デバイス730からデータを読み出し、再処理して記憶装置740のうちの1つに記憶することができる。これは、現在障害が生じているホストを介してしかアクセスできないホスト内部のキャッシュ513に唯一のデータコピーが記憶されていた場合には不可能である。
【0095】
NVRAMモジュール730を含み、LOG725などのインターフェイスを介してこれをホストに公開するもう1つの利点は、ホストがストレージノード上のNVRAMにデータを書き込むことによってデータを「安全」にして素早い承認を可能にし、その後、例えばストライプを形成するのに十分な量のデータがバッチ処理された後などに、場合によっては遅れたさらなる記憶処理のために自機の計算リソースを利用できる点である。いくつかの実施形態では、ホストによるさらなる記憶処理が行われない限り、NVRAMに書き込まれたデータの一部が決して永続記憶装置に書き込まれないようにすることができる。いくつかの実施形態では、複数のNVRAMデバイスにデータを書き込んで、これらのNVRAMデバイスのうちの1つ、又はその接続先のコントローラの障害から保護することができる。ホスト自体が複数のNVRAMデバイスに書き込みを行うことも、或いはコントローラが、ホストの単一の書き込みを同じノード又は異なるノードにおける複数のNVRAMデバイスに、又は他の複数のコントローラとこれらのNVRAMデバイスとにミラーリングすることもできる。
【0096】
一例として、VMが少なくとも1つの仮想化ディスクvDisk又はファイルにデータの書き込みを望んでいると仮定する。VMがゲストであるホストに障害が生じた場合には、新たに書き込まれたデータのコピーが、何らかのストレージノード上のログ又はNVRAMに残る。書き込みデータは、場合によっては書き込みのログデータを保持していなかった1又は2以上のストレージノードを含むプールにデータが書き込まれる前に、(例えば、RAID様のシステムでは)フルストライプなどの何らかの最小記憶単位を満たすのに十分なデータが存在するまでファイルマネージャにバッファ処理し、又はVMホストのキャッシュ513に記憶しておくこともできる。新たな書き込みデータを、後でvDisk内の同じ場所に上書きするための時間を与えるようにさらに長い期間にわたってVMホスト上にバッファ処理することにより、ストライプ内の上書きデータを書き出す必要性を排除することもできる。DVAhコンポーネントの一部、又はオペレーティングシステム内などにおける他の何らかのホストエンティティとしてのホストは、少なくとも1つの抹消符号化ブロックを書き込み単位について計算し、これをストレージノードに書き込むこともできる。
【0097】
動作がREAD(読み出し)である場合には、キャッシュ513内で所望のデータを検索することができる。データがキャッシュされている場合には、このデータをキャッシュから読み出してVMなどの要求元プロセスに戻すことができる。データがキャッシュされていない場合には、(いずれかの中間アドレスマップを用いて)ストレージノードから直接データを読み出して要求元プロセスに戻すことができる。READデータをキャッシュに書き込むこともできる。
【0098】
管理及び計算負荷をホストに集中させることにより、ストレージノードを比較的単純かつ安価に保ってストレージ側の専用バックプレーン及びファイバーチャネル接続を不要にし、さらにはストレージ側全体が標準的なネットワーク接続を介してホストと直接通信できるようにすることができる。さらに、ホストがプールとの間で互いにまれにしか通信しない場合には、1つのホストが別のホスト上のノイジーネイバー(noisy neighbor)に煩わされることがない。最後に、ホストは、大きなキャッシュを含む場合にはプール内のノードにもまれに接触すればよく、これによってノイジーネイバー問題がさらに抑えられる。ホストは、VM及びVM内で実行中のアプリケーションにデータを供給する権限を有し、従ってシステム内の他の場所の性能問題に影響されにくい。
【0099】
なお、本明細書に開示する様々な機能又はプロセスは、様々な不揮発性コンピュータ可読媒体に具体化されるデータ及び/又は命令として説明することができ、DVAシステムの実施形態を実装したいと望む人々にコンピュータプログラム製品として提供することができる。
【0100】
図7に、書き込み要求を処理する1つの実装を示す。書き込み要求が受け取られると、この要求がノード上のNVRAMモジュール730にロギングされる。書き込みのロギングは、書き込み中のファイルの指示とファイル内のオフセットとを含む。書き込みデータ自体は書き込みバッファに書き込まれ、要求が承認される。書き込みバッファが処理を引き起こすほど十分に、例えばブロックを形成するほど十分に満杯でなければ、処理はさらなる書き込み要求の受け取りに戻り、満杯であれば、書き込まれたデータをブロックに形成して(データセット全体に1つのフィンガープリントを使用するか、それともブロック毎に別個のフィンガープリントを使用するかに応じて)1又は2以上のフィンガープリントを計算することができる。ブロックデータは、フィンガープリントの計算前、計算後又は計算と同時に、圧縮、暗号化などによって処理することもできる。ホストキャッシュ内に既に所与のブロックが存在する場合(これはフィンガープリントの比較によって判断することができる)には、ブロックへの参照でファイルマップを更新し、処理はさらなる書き込みの受け取りに戻ることができる。ホストキャッシュ又はグローバルフィンガープリントインデックス1021内でブロックのフィンガープリントが見つからない場合には、このブロックを現在構築中のストライプに追加する。ストライプが未だ不完全である場合、システムは、さらなる書き込み要求の受け取りに戻ることができる。現在のストライプが完全である場合、このストライプのECCストライプ要素を計算し、配布して記憶することができる。その後、ストライプ内のブロックのフィンガープリントをグローバルフィンガープリントインデックス1021に追加する。この時、ブロックをキャッシュにも追加し、その後にファイルマップを更新して、ストライプに記憶されたブロックが参照されるようにすることもできる。この時点で、ホストに障害が生じても書き込みデータは安全であり、従ってもはやNVRAM内の一時的なデータコピーは不要である。従って、ホストは、例えばロギングモジュール1025を使用して、データを切り捨ててNVRAMから削除できる旨をログ725に伝えることができる。なお、NVRAMに一時的に記憶されているデータをコントローラ自体がさらに永続的な位置に書き換える必要はない。最後に、処理は、さらなる書き込みの受け取りに戻る。他の実施形態では、DVAhコンポーネントが、フィンガープリントを計算し、そのフィンガープリントがホストキャッシュ及び/又はグローバルフィンガープリントインデックス内に存在するかをチェックし、対応するファイル及びファイル内のオフセットについて、データ自体ではなくそれまでに記憶されているデータへの新たな参照のみをリモートNVRAMにロギングした後で書き込みを承認する。
【0101】
図8に、書き込み要求を処理する別の実装を示す。書き込み要求が受け取られると、この要求がノード上のNVRAMモジュール730にロギングされて要求が承認される。書き込みのロギングは、書き込み中のファイルの指示とファイル内のオフセットとのロギングを含む。書き込みデータがデータブロックを完全にカバーしていない場合には、ブロックの残り部分をホストキャッシュ及び/又はプールから読み出し、書き込みデータと融合して書き込みブロックを形成することができる。ブロックは、NVRAMモジュール730にロギングする前に、圧縮、暗号化などによって処理することができる。未処理のブロックについてもフィンガープリントを計算して、重複排除を可能にすることができる。ホストキャッシュ内に既に所与のブロックが存在する場合(これはフィンガープリントの比較によって判断することができる)には、ブロックへの参照でファイルマップを更新し、処理はさらなる書き込みの受け取りに戻ることができる。ホストキャッシュ又はグローバルフィンガープリントインデックス1021内でブロックのフィンガープリントが見つからない場合には、このブロックを現在構築中のストライプに追加する。ストライプが未だ不完全である場合、システムは、さらなる書き込み要求の受け取りに戻ることができる。現在のストライプが完全である場合、このストライプのECCストライプ要素を計算し、配布して記憶することができる。その後、ストライプ内のブロックのフィンガープリントをグローバルフィンガープリントインデックス1021に追加する。この時、ブロックをキャッシュにも追加し、その後にファイルマップを更新して、ストライプに記憶されたブロックが参照されるようにすることもできる。この時点で、ホストに障害が生じても書き込みデータは安全であり、従ってもはやNVRAM内の一時的なデータコピーは不要である。従って、ホストは、例えばロギングモジュール1025を使用して、データを切り捨ててNVRAMから削除できる旨をログ725に伝えることができる。最後に、処理は、さらなる書き込みの受け取りに戻る。
【0102】
図8に、読み出し要求を処理する1つの実装を示す。読み出し要求が受け取られ、要求されたオフセットをもたらすデータを含むブロックへの参照をファイルマップモジュールから検索する。参照されるブロックがキャッシュ513内に存在する場合には、このブロックを検索し、データを戻して読み出し要求を満たすことができる。ブロックがキャッシュ内に存在しない場合には、ブロックをプールから検索しなければならない。この検索は、フィンガープリントインデックスからブロックロケータを検索することによって行うことができる。ブロックが検索されると、そのブロックをキャッシュに追加して、要求されたデータを戻すことができる。
【0103】
ハードウェアの概要
1つの実施形態によれば、本明細書で説明する技術が、1又は2以上の専用コンピュータ装置によって実装される。この専用コンピュータ装置は、これらの技術を実行するためのハードウェア組み込み型とすることもでき、或いはこれらの技術を実行するように永続的にプログラムされた1又は2以上の特定用途向け集積回路(ASIC)又はフィールドプログラマブルゲートアレイ(FPGA)などのデジタル電子装置を含むこともでき、或いはファームウェア、メモリ、その他の記憶装置、又はこれらの組み合わせに含まれるプログラム命令に従ってこれらの技術を実行するようにプログラムされた1又は2以上の汎用ハードウェアプロセッサを含むこともできる。このような専用コンピュータ装置は、カスタムハードワイヤードロジック、ASIC又はFPGAと、これらの技術を実現するためのカスタムプログラミングとを組み合わせることもできる。この専用コンピュータ装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルド装置、ネットワーク装置、又はこれらの技術を実装するためのハードワイヤードロジック及び/又はプログラムロジックを組み込んだ他のいずれかの装置とすることもできる。
【0104】
例えば、
図9は、実施形態を実装できるコンピュータシステム900を示すブロック図である。コンピュータシステム900は、情報を通信するためのバス902又はその他の通信機構、及びバス902に結合された、情報を処理するためのハードウェアプロセッサ904を含む。ハードウェアプロセッサ904は、例えば汎用マイクロプロセッサとすることができる。
【0105】
コンピュータシステム900は、バス902に結合された、情報とプロセッサ904が実行すべき命令とを記憶するランダムアクセスメモリ(RAM)又はその他の動的記憶装置などのメインメモリ906も含む。メインメモリ906は、プロセッサ904が実行すべき命令の実行中に一時的変数又はその他の中間情報を記憶するために使用することもできる。このような命令は、プロセッサ904がアクセスできる非一時的記憶媒体に記憶された時に、コンピュータシステム900を、命令内で指示される動作を実行するようにカスタマイズされた専用機械の状態にする。
【0106】
コンピュータシステム900は、バス902に結合された、静的情報とプロセッサ904のための命令とを記憶するリードオンリメモリ(ROM)908又はその他の静的記憶装置をさらに含む。情報及び命令を記憶するための磁気ディスク、光学ディスク又は固体ディスクなどの記憶装置910も設けられ、バス902に結合される。
【0107】
コンピュータシステム900は、バス902を介して、コンピュータユーザに情報を表示するブラウン管(CRT)などのディスプレイ912に結合することができる。バス902には、プロセッサ904に情報及びコマンド選択を伝える英数字キー及びその他のキーを含む入力装置914も結合される。別のタイプのユーザ入力装置には、プロセッサ904に方向情報及びコマンド選択を伝えてディスプレイ912上のカーソルの動きを制御するマウス、トラックボール又はカーソル方向キーなどのカーソル制御916がある。通常、この入力装置は、装置が平面内の位置を特定できるようにする第1の軸(例えば、x)及び第2の軸(例えば、y)という2つの軸における2つの自由度を有する。
【0108】
コンピュータシステム900は、カスタマイズされたハードワイヤードロジック、1又は2以上のASIC又はFPGA、ファームウェア、及び/又はコンピュータシステムと組み合わせてコンピュータシステム900を専用機械にする、又はそのようにプログラムするプログラム論理を用いて、本明細書で説明した技術を実装することができる。1つの実施形態によれば、本明細書の技術が、メインメモリ906に含まれる1又は2以上の命令の1又は2以上のシーケンスをプロセッサ904が実行したことに応答してコンピュータシステム900によって実行される。このような命令は、記憶装置910などの別の記憶媒体からメインメモリ906に読み込むことができる。プロセッサ904は、メインメモリ906に含まれる命令シーケンスを実行することにより、本明細書で説明した処理ステップを実行するようになる。別の実施形態では、ソフトウェア命令の代わりに又はこれと組み合わせてハードワイヤード回路を使用することができる。
【0109】
本明細書で使用する「記憶媒体」という用語は、データ及び/又は特定の方法で機械を動作させる命令を記憶するあらゆる非一時的媒体を意味する。このような記憶媒体は、不揮発性媒体及び/又は揮発性媒体を含むことができる。不揮発性媒体は、例えば記憶装置910などの光学ディスク、磁気ディスク又は固体ドライブを含む。揮発性媒体は、メインメモリ906などの動的メモリを含む。一般的な記憶媒体としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、固体ドライブ、磁気テープ、又は他のあらゆる磁気データ記憶媒体、CD-ROM、他のあらゆる光学データ記憶媒体、穴パターンを有するあらゆる物理媒体、RAM、PROM、及びEPROM、FLASH-EPROM、NVRAM、他のあらゆるメモリチップ又はカートリッジが挙げられる。
【0110】
記憶媒体は送信媒体とは異なるが、送信媒体と共に使用することもできる。送信媒体は、記憶媒体間の情報の転送に関与する。例えば、送信媒体としては、バス902を構成する配線を含む、同軸ケーブル、銅線及び光ファイバが挙げられる。送信媒体は、電波及び赤外線によるデータ通信中に生成されるような音波又は光波の形をとることもできる。
【0111】
実行のためにプロセッサ904に1又は2以上の命令の1又は2以上のシーケンスを搬送することには、様々な形の媒体が関与することができる。例えば、最初にリモートコンピュータの磁気ディスク又は固体ドライブ上で命令を搬送することができる。リモートコンピュータは、その動的メモリにこれらの命令をロードし、モデムを用いて電話回線を介してこの命令を送信することができる。コンピュータシステム900のローカルモデムは、電話回線上でデータを受け取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。この赤外線信号において搬送されるデータを赤外線検出器が受け取り、適切な回路がこのデータをバス902上に配置することができる。バス902は、このデータをメインメモリ706に搬送し、ここからプロセッサ904が命令を取り出して実行する。任意に、メインメモリ906が受け取った命令は、プロセッサ904による実行前又は実行後に記憶装置910に記憶することもできる。
【0112】
コンピュータシステム900は、バス902に結合された通信インターフェイス918も含む。通信インターフェイス918は、ローカルネットワーク922に接続されたネットワークリンク920に結合して双方向データ通信を提供する。例えば、通信インターフェイス918は、総合デジタル通信網(ISDN)カード、ケーブルモデム、衛星モデム、又は対応するタイプの電話回線へのデータ通信接続を提供するモデムとすることができる。別の例として、通信インターフェイス918を、互換性のあるLANにデータ通信接続を提供するローカルエリアネットワーク(LAN)カードとすることもできる。無線リンクを実装することもできる。このようなあらゆる実装では、通信インターフェイス918が、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号又は光信号を送受け取る。
【0113】
通常、ネットワークリンク920は、1又は2以上のネットワークを介して他のデータ装置にデータ通信を提供する。例えば、ネットワークリンク920は、ローカルネットワーク922を介したホストコンピュータ924への、又はインターネットサービスプロバイダ(ISP)926によって動作するデータ設備への接続を提供することができる。さらに、ISP926は、今では一般的に「インターネット」928と呼ばれるワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク922及びインターネット928は、いずれもデジタルデータストリームを搬送する電気信号、電磁信号又は光信号を使用する。コンピュータシステム900との間でデジタルデータを搬送する、様々なネットワークを介した信号及びネットワークリンク920上の通信インターフェイス918を介した信号は、送信媒体の形態例である。
【0114】
コンピュータシステム900は、(単複の)ネットワーク、ネットワークリンク920及び通信インターフェイス918を介してメッセージを送信し、プログラムコードを含むデータを受け取ることができる。インターネットの例では、サーバ930が、インターネット928、ISP926、ローカルネットワーク922及び通信インターフェイス918を介して、アプリケーションプログラムのための要求されたコードを送信することができる。
【0115】
プロセッサ904は、この受け取ったコードを受信時に実行することも、及び/又は後で実行できるように記憶装置910又はその他の不揮発性記憶装置に記憶することもできる。
【0116】
上述した明細書では、実装によって異なり得る数多くの特定の詳細を参照しながら本発明の実施形態を説明した。従って、明細書及び図面については、限定的な意味ではなく例示的な意味でとらえるべきである。本発明の範囲、及び出願人が発明の範囲として意図するものを示す唯一かつ排他的なものは、本出願から特定の形で生じる一連の請求項の逐語的及び等価的範囲であり、これにはあらゆる今後の補正が含まれる。