(57)【要約】【課題】ホストマシンへの接続経路のネットワーク接続性情報をモニタして送信する技術を提供する。【解決手段】ストレージノードが、複数の付属するネットワークインターフェイスを含み、ストレージノードに付属するネットワークインターフェイスを通じてホストマシンがアクセスできる記憶装置に動作可能に結合される。ネットワークインターフェイスの各々は、ホストマシンにメッセージを送信する。ストレージノードは、少なくとも１つのホストマシンからホストメッセージを受け取る。ストレージノードは、ネットワークインターフェイスとホストマシンとの間の接続性に関する接続性情報を判定する。ストレージノードは、ホストマシンが接続性情報に基づいて選択したターゲットネットワークインターフェイスにおいて、１又は２以上の記憶装置に記憶されたデータを求める要求をホストマシンから受け取る。【選択図】図１
2018181325.tif 000002
【特許請求の範囲】
【請求項１】
特定のストレージノード上の複数のネットワークインターフェイスの各ネットワークインターフェイスから、１又は２以上のホストマシンの各ホストマシンにストレージノードメッセージを送信するステップを含み、
前記特定のストレージノードは、前記１又は２以上のホストマシンが前記複数のネットワークインターフェイスのうちのいずれか１つを通じてアクセスできる１又は２以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記１又は２以上のホストマシンのうちの少なくとも１つのホストマシンからホストメッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記ホストメッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の接続性情報を判定するステップと、
前記複数のネットワークインターフェイスのうちの前記接続性情報に基づいて選択されたターゲットネットワークインターフェイスにおいて、前記１又は２以上の記憶装置に記憶されているデータを求める要求を前記１又は２以上のホストマシンのうちの特定のホストマシンから受け取るステップと、
をさらに含む、ことを特徴とする方法。
【請求項２】
前記１又は２以上のホストマシンは、各々がホストメッセージの送信とストレージノードメッセージの受信とを行うことができる１又は２以上のホストネットワークインターフェイスを含む、
請求項１に記載の方法。
【請求項３】
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記ホストメッセージとから判定された前記接続性情報を含む接続性マップを生成するステップをさらに含み、
前記接続性マップは、前記特定のホストマシンから応答メッセージが受け取られることなく前記特定のネットワークインターフェイスから前記特定のホストマシンに特定の数のストレージノードメッセージが送信された場合、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスと前記１又は２以上のホストマシンのうちの特定のホストマシンとの間の接続性が停止中である旨を示す接続性情報を含む、
請求項１に記載の方法。
【請求項４】
前記特定のストレージノードが、前記接続性マップに基づいて特定の時間にわたって停止していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの停止中の接続経路についてのブラックリストを生成するステップと、
前記特定のストレージノードが、前記停止中の接続経路についてのブラックリストを前記１又は２以上のホストマシンに送信するステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記特定のストレージノードが、前記接続性マップに基づいて特定の時間にわたって作動していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの作動中の接続経路についてのホワイトリストを生成するステップと、
前記特定のストレージノードが、前記作動中の接続経路についてのホワイトリストを前記１又は２以上のホストマシンに送信するステップと、
をさらに含む、請求項３に記載の方法。
【請求項６】
前記接続性マップにおける前記接続性情報は、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の、特定のテストメッセージの送信と特定の応答メッセージの受信との間の期間に基づくレイテンシ情報を含む、
請求項３に記載の方法。
【請求項７】
前記ストレージノードメッセージは、前記１又は２以上のホストマシンの各ホストマシンと前記複数のネットワークインターフェイスの各ネットワークインターフェイスとの間の接続性が大容量データパケットを送信できるものであるかどうかを判定するために使用される大容量テストメッセージである、
請求項３に記載の方法。
【請求項８】
前記特定のストレージノードが、前記接続性マップに基づいて、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスに関連するマップ公開インターフェイスを生成するステップと、
前記特定のストレージノードが、前記マップ公開インターフェイス内の関連する物理アドレスにフローティングＩＰアドレスを関連付けるステップと、
を含み、前記フローティングＩＰアドレスにおける前記マップ公開インターフェイスは、前記１又は２以上のホストマシンから前記接続性情報を求める要求を受け取るように構成されており、
前記１又は２以上のホストマシンのうちの特定のホストマシンから、前記接続性マップからの前記特定のホストマシンに関する前記接続性情報を求める要求を受け取るステップと、
前記特定のホストマシンからの前記要求に応答して、前記特定のホストマシンに前記接続性情報を送信して、前記特定のホストマシンが前記１又は２以上の記憶装置に記憶されているデータを求める要求を送信すべき特定のターゲットネットワークインターフェイスを前記複数のネットワークインターフェイスの中から選択できるようにするステップと、
をさらに含む、請求項３に記載の方法。
【請求項９】
前記特定のストレージノードは、複数のストレージノードのうちの第１のストレージノードであり、前記複数のネットワークインターフェイスは、第１の複数のネットワークインターフェイスであり、
第２のストレージノード上の第２の複数のネットワークインターフェイスの各ネットワークインターフェイスから前記１又は２以上のホストマシンの各ホストマシンにさらなるストレージノードメッセージを送信するステップを含み、
前記第２のストレージノードは、前記第２の複数のネットワークインターフェイスのうちのいずれか１つを通じて前記１又は２以上のホストマシンがアクセスできる前記１又は２以上の記憶装置に動作可能に結合されており、
前記第２のストレージノードが、前記１又は２以上のホストマシンのうちの少なくとも１つのホストマシンから第２のホストメッセージを受け取るステップと、
前記第２のストレージノードが、前記第２の複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記第２のホストメッセージとに基づいて、前記第２の複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
をさらに含む、請求項３に記載の方法。
【請求項１０】
前記特定のストレージノードが、ネットワークインターフェイスとホストマシンとのペアの接続のための接続性情報の接続状態正常性レポートを生成するステップをさらに含み、前記接続状態正常性レポートは、ネットワークインターフェイスとホストマシンとのペアの組と、前記接続が作動中であるか、それとも停止中であるか、及び前記接続性マップに基づく接続品質を記載した、前記ネットワークインターフェイスとホストマシンとのペアの組における各ネットワークインターフェイスとホストマシンとのペアの接続性情報とを含む、
請求項３に記載の方法。
【請求項１１】
前記接続状態正常性レポートを生成するステップは、前記ネットワークインターフェイスとホストマシンとのペア間の閾値数の接続状態変更によってトリガされる、
請求項１０に記載の方法。
【請求項１２】
前記特定のストレージノード上の前記複数のネットワークインターフェイスの各ネットワークインターフェイスから複数のストレージノードにさらなるストレージノードメッセージを送信するステップをさらに含み、
前記複数のストレージノードは、前記１又は２以上のホストマシンが前記複数のストレージノードのうちのいずれか１つに付属するいずれかのネットワークインターフェイスを通じてアクセスできる前記１又は２以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記複数のストレージノードのうちの少なくとも１つのストレージノードから応答メッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記さらなるストレージノードメッセージと、前記複数のストレージノードのうちの前記少なくとも１つのストレージノードから受け取った前記応答メッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のストレージノードに付属する前記ネットワークインターフェイスの各々との間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１３】
ネットワークシステムにおける装置間の接続性情報を判定するための命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、１又は２以上のプロセッサによって実行された時に、
特定のストレージノード上の複数のネットワークインターフェイスの各ネットワークインターフェイスから、１又は２以上のホストマシンの各ホストマシンにストレージノードメッセージを送信するステップの実行を引き起こし、
前記特定のストレージノードは、前記１又は２以上のホストマシンが前記複数のネットワークインターフェイスのうちのいずれか１つを通じてアクセスできる１又は２以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記１又は２以上のホストマシンのうちの少なくとも１つのホストマシンからホストメッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記ホストメッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の接続性情報を判定するステップと、
前記複数のネットワークインターフェイスのうちの前記接続性情報に基づいて選択されたターゲットネットワークインターフェイスにおいて、前記１又は２以上の記憶装置に記憶されているデータを求める要求を前記１又は２以上のホストマシンのうちの特定のホストマシンから受け取るステップと、
の実行をさらに引き起こす、ことを特徴とする非一時的コンピュータ可読媒体。
【請求項１４】
前記１又は２以上のホストマシンは、各々がホストメッセージの送信とストレージノードメッセージの受信とを行うことができる１又は２以上のホストネットワークインターフェイスを含む、
請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記１又は２以上のプロセッサによって実行された時に、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記ホストメッセージとから判定された前記接続性情報を含む接続性マップを生成するステップの実行を引き起こす命令をさらに含み、
前記接続性マップは、前記特定のホストマシンから応答メッセージが受け取られることなく前記特定のネットワークインターフェイスから前記特定のホストマシンに特定の数のストレージノードメッセージが送信された場合、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスと前記１又は２以上のホストマシンのうちの特定のホストマシンとの間の接続性が停止中である旨を示す接続性情報を含む、
請求項１３に記載の非一時的コンピュータ可読媒体。
【請求項１６】
前記１又は２以上のプロセッサによって実行された時に、
前記特定のストレージノードが、前記接続性マップに基づいて特定の時間にわたって停止していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの停止中の接続経路についてのブラックリストを生成するステップと、
前記特定のストレージノードが、前記停止中の接続経路についてのブラックリストを前記１又は２以上のホストマシンに送信するステップと、
の実行を引き起こす命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１７】
前記１又は２以上のプロセッサによって実行された時に、
前記特定のストレージノードが、前記接続性マップに基づいて特定の時間にわたって作動していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの作動中の接続経路についてのホワイトリストを生成するステップと、
前記特定のストレージノードが、前記作動中の接続経路についてのホワイトリストを前記１又は２以上のホストマシンに送信するステップと、
の実行を引き起こす命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１８】
前記接続性マップにおける前記接続性情報は、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の、特定のテストメッセージの送信と特定の応答メッセージの受信との間の期間に基づくレイテンシ情報を含む、
請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項１９】
前記ストレージノードメッセージは、前記１又は２以上のホストマシンの各ホストマシンと前記複数のネットワークインターフェイスの各ネットワークインターフェイスとの間の接続性が大容量データパケットを送信できるものであるかどうかを判定するために使用される大容量テストメッセージである、
請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項２０】
前記１又は２以上のプロセッサによって実行された時に、
前記特定のストレージノードが、前記接続性マップに基づいて、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスに関連するマップ公開インターフェイスを生成するステップと、
前記特定のストレージノードが、前記マップ公開インターフェイス内の関連する物理アドレスにフローティングＩＰアドレスを関連付けるステップと、
の実行を引き起こし、前記フローティングＩＰアドレスにおける前記マップ公開インターフェイスは、前記１又は２以上のホストマシンから前記接続性情報を求める要求を受け取るように構成されており、
前記１又は２以上のホストマシンのうちの特定のホストマシンから、前記接続性マップからの前記特定のホストマシンに関する前記接続性情報を求める要求を受け取るステップと、
前記特定のホストマシンからの前記要求に応答して、前記特定のホストマシンに前記接続性情報を送信して、前記特定のホストマシンが前記１又は２以上の記憶装置に記憶されているデータを求める要求を送信すべき特定のターゲットネットワークインターフェイスを前記複数のネットワークインターフェイスの中から選択できるようにするステップと、
の実行をさらに引き起こす命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項２１】
前記１又は２以上のプロセッサによって実行された時に、
前記特定のストレージノードは、複数のストレージノードのうちの第１のストレージノードであり、前記複数のネットワークインターフェイスは、第１の複数のネットワークインターフェイスであり、
第２のストレージノード上の第２の複数のネットワークインターフェイスの各ネットワークインターフェイスから前記１又は２以上のホストマシンの各ホストマシンにさらなるストレージノードメッセージを送信するステップの実行を引き起こし、
前記第２のストレージノードは、前記第２の複数のネットワークインターフェイスのうちのいずれか１つを通じて前記１又は２以上のホストマシンがアクセスできる前記１又は２以上の記憶装置に動作可能に結合されており、
前記第２のストレージノードが、前記１又は２以上のホストマシンのうちの少なくとも１つのホストマシンから第２のホストメッセージを受け取るステップと、
前記第２のストレージノードが、前記第２の複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記第２のホストメッセージとに基づいて、前記第２の複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
の実行をさらに引き起こす命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項２２】
前記１又は２以上のプロセッサによって実行された時に、前記特定のストレージノードが、ネットワークインターフェイスとホストマシンとのペアの接続のための接続性情報の接続状態正常性レポートを生成するステップの実行を引き起こす命令をさらに含み、前記接続状態正常性レポートは、ネットワークインターフェイスとホストマシンとのペアの組と、前記接続が作動中であるか、それとも停止中であるか、及び前記接続性マップに基づく接続品質を記載した、前記ネットワークインターフェイスとホストマシンとのペアの組における各ネットワークインターフェイスとホストマシンとのペアの接続性情報とを含む、
請求項１５に記載の非一時的コンピュータ可読媒体。
【請求項２３】
前記接続状態正常性レポートを生成するステップは、前記ネットワークインターフェイスとホストマシンとのペア間の閾値数の接続状態変更によってトリガされる、
請求項２２に記載の非一時的コンピュータ可読媒体。
【請求項２４】
前記１又は２以上のプロセッサによって実行された時に、
前記特定のストレージノード上の前記複数のネットワークインターフェイスの各ネットワークインターフェイスから複数のストレージノードにさらなるストレージノードメッセージを送信するステップの実行を引き起こし、
前記複数のストレージノードは、前記１又は２以上のホストマシンが前記複数のストレージノードのうちのいずれか１つに付属するいずれかのネットワークインターフェイスを通じてアクセスできる前記１又は２以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記複数のストレージノードのうちの少なくとも１つのストレージノードから応答メッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記さらなるストレージノードメッセージと、前記複数のストレージノードのうちの前記少なくとも１つのストレージノードから受け取った前記応答メッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のストレージノードに付属する前記ネットワークインターフェイスの各々との間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
の実行をさらに引き起こす命令をさらに含む、請求項１５に記載の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
〔利益の主張〕
本出願は、２０１７年４月３日に出願された米国仮特許出願第６２／４８１，０９８号の合衆国法典第３５編第１１９条（ｅ）に基づく利益を主張するものであり、この文献の内容はその全体が本明細書に完全に記載されているかのように全ての目的で引用により本明細書に組み入れられる。
【０００２】
本発明は、分散ストレージネットワークにおけるエンドポイント間の接続経路状態のモニタリングに関する。
【背景技術】
【０００３】
ネットワークアグリゲーションは、持続的な稼働時間を必要とするネットワークシステムにおいて速度を高めて耐故障性をもたらす目的で、複数の物理リンクを１つのリンクに集約する技術である。具体的に言えば、リンクアグリゲーション技術は、スループットを単一接続の限界よりも高めるとともに、ネットワーク障害時におけるネットワーク耐性を高めるために、複数のネットワーク接続を並行して組み合わせる。このようなリンクアグリゲーションの１つの実装が、リンクアグリゲーション制御プロトコル（ＬＡＣＰ）である。ＬＡＣＰ構成は、サーバ、ネットワークスイッチ及びその他のネットワーク装置上に集約されたリンクを構成することによって、サーバへのネットワーク帯域幅を拡大する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、帯域幅は、ネットワーク経路内の単一の装置の最大帯域幅に制限され得るので、リンクアグリゲーションプロトコルの使用時には高帯域幅の維持が次第に困難になる。また、構成されたネットワーク経路上のネットワーク装置が予想外に増加した場合にボトルネックを引き起こし得るネットワーク負荷の変化に起因して、構成されたネットワーク経路上の帯域幅が制限されることもある。ＬＡＣＰなどのリンクアグリゲーションプロトコルは、複数のネットワーク装置の構成を必要とし、これらが構成されると、ネットワークを横切るデータフローの変化を考慮するようにネットワーク装置を再構成するために相当な労力を要する。
【課題を解決するための手段】
【０００５】
従って、ネットワーク装置をモニタして現在のネットワーク状態を考慮するように構成する方法及びシステムが望まれている。
【図面の簡単な説明】
【０００６】
【図１】ネットワークスイッチを介してホストマシンに接続されたストレージコントローラを含む分散ストレージシステムのネットワーク構成の実施形態例を示す図である。
【図２】接続性情報を判定し、接続性マップを生成して、ホストマシンに接続性状態情報を送信する実施形態例を示す図である。
【図３】ホストマシンとネットワークインターフェイスとの間の接続を行列として表す接続性マップの実施形態例を示す図である。
【図４】複数のストレージ管理サーバを有するストレージ管理プールを含む分散ストレージシステムのネットワーク構成の実施形態例を示す図である。
【図５】分散型仮想アレイ（ＤＶＡ）システムの実施形態を示す図である。
【図６】ＤＶＡ内の選択コンポーネントの詳細な実施形態を示す図である。
【図７】書き込み要求の受信時におけるワークフローの実施形態を示す図である。
【図８】読み出し要求の受信時におけるワークフローの実施形態を示す図である。
【図９】実施形態を実装できるコンピュータシステム例を示すブロック図である。
【発明を実施するための形態】
【０００７】
以下の説明では、本発明を完全に理解できるようにするために、説明を目的として数多くの特定の詳細を記載する。しかしながら、これらの特定の詳細を伴わずに本発明を実施できることが明らかであろう。その他の場合、本発明を不必要に曖昧にしないために、周知の構造及び装置についてはブロック図形式で示す。
【０００８】
全体的概要
本明細書では、１又は２以上のホストマシンと、ストレージノードに付属する１又は２以上のネットワークインターフェイスとの間の接続経路をモニタしてその接続性情報を送信する技術について説明する。１つの実施形態によれば、特定のストレージノードが、複数の付属するネットワークインターフェイスを含む。特定のストレージノードは、特定のストレージノードに付属する複数のネットワークインターフェイスのうちのいずれか１つを通じて１又は２以上のホストマシンがアクセスできる１又は２以上の記憶装置に動作可能に結合される。ネットワークインターフェイスの各々は、１又は２以上のホストマシンの各々にメッセージを送信する。特定のストレージノードは、１又は２以上のホストマシンのうちの少なくとも１つのホストマシンからのメッセージも受け取る。特定のストレージノードは、ホストマシンとの間で送受信されるメッセージを用いて接続性情報を判定する。接続性情報は、複数のネットワークインターフェイスの各ネットワークインターフェイスと各ホストマシンとの間の接続性に基づく。ストレージノードは、ホストマシンが接続性情報に基づいて選択したターゲットネットワークインターフェイスにおいて、データを記憶するための要求、或いは１又は２以上の記憶装置に記憶されている記憶データを検索するための要求をホストマシンから受け取る。
【０００９】
構造の概要
分散ストレージシステムネットワークは、以下に限定するわけではないが、１又は２以上のホストマシン、ネットワークスイッチ及び１又は２以上のストレージ管理サーバを含む、通信可能に結合されたコンピュータ装置で構成される。１又は２以上のストレージ管理サーバは、１又は２以上のストレージコントローラ及びストレージプールを含むことができる。図１に、ネットワークスイッチを介してホストマシンに接続されたストレージコントローラを含む分散ストレージシステムのネットワーク構成の実施形態例を示す。図１に示す実施形態では、ホストマシン１０２、１０４及び１０６が、ストレージプール１６０内にデータを記憶するように構成された１又は２以上のアプリケーション及び／又は１又は２以上のオペレーティングシステムを実装するように構成されたコンピュータ装置を表す。ホストマシン１０２、１０４及び１０６の各々は、冗長リンクを介してネットワークスイッチ１１０及び１１２に通信可能に結合される。ある実施形態では、ホストマシン１０２、１０４及び１０６の各々が、多経路ネットワークルーティングを目的としてネットワークスイッチ１１０及び１１２に接続された２又は３以上のネットワークインターフェイスを備える。ある実施形態では、２又は３以上のネットワークインターフェイスを、同じ物理アドレスを共有していずれかの所与の時点で２又は３以上のネットワークインターフェイスのうちの１つのみが作動中となるように結合することができる。別の実施形態では、ホストマシン１０２、１０４及び１０６内のネットワークインターフェイスを、各ネットワークインターフェイスへの異なるＩＰアドレスの割り当てを可能にする一意の物理アドレスを有する別個の物理装置として構成することができる。
【００１０】
ある実施形態では、ネットワークスイッチ１１０及び１１２が、ホストマシン１０２、１０４及び１０６とストレージ管理サーバ１２０とに通信可能に結合されたネットワークスイッチを表す。スイッチ１１０及び１１２は、ホストマシン１０２、１０４及び１０６とストレージ管理サーバ１２０との間でデータパケットをルーティングするように構成される。
【００１１】
ある実施形態では、ストレージ管理サーバ１２０が、ストレージコントローラ１２２及び１２４を実装する複数のハードウェアコンポーネント及びソフトウェアコンポーネントを含むように構成された１又は２以上のサーバ装置を表す。ストレージコントローラ１２２及び１２４の各々は、ホストマシンからストレージプール１６０内の記憶装置へのデータストレージ要求を管理するように構成される。ストレージ管理サーバ１２０は、ネットワーク及びホストマシンの利用可能性及び構成データを含むストレージコントローラデータの局所的及び遠隔的記憶を可能にするハードウェアを含むように構成される。ある実施形態では、ストレージ管理サーバ１２０が、ストレージコントローラ１２２及び１２４の能動的使用及び受動的使用の役割を実装するように構成され、能動的ストレージコントローラは、ホストマシンからのデータ要求に対処し、受動的ストレージコントローラは、能動的ストレージコントローラのバックアップストレージコントローラとして指定される。別の実施形態では、ストレージ管理サーバ１２０が、両コントローラがホストマシン１０２、１０４及び１０６からのデータ要求を能動的に処理する、ストレージコントローラ１２２及び１２４の併用を実装するように構成される。また、ストレージ管理サーバ１２０は、ストレージ管理サーバ１２０の物理ハードウェアの利用可能性及び設定に基づいて、さらなるストレージコントローラを実装するように構成することもできる。図１は、ストレージ管理サーバ１２０、並びにストレージ管理サーバ１２０と、ホストマシン１０２、１０４及び１０６と、ストレージプール１６０との間の接続の１つの実施形態例を表すものである。
【００１２】
他の実施形態では、ストレージ管理サーバ１２０と並行して動作するように、又はストレージ管理サーバ１２０のバックアップシステムとしての役割を果たすように構成できる複数のストレージ管理サーバを実装することができる。図４に、複数のストレージ管理サーバを含むストレージ管理プール４０５を含む分散ストレージシステムのネットワーク構成の別の実施形態を示す。ある実施形態では、ストレージ管理プール４０５が、ストレージ管理サーバ１２０、４１０及び４２０を含む。ストレージ管理サーバ１２０、４１０及び４２０の各々は、複数のストレージコントローラを実装する複数のハードウェア及びソフトウェアコンポーネントを含むように構成される。ストレージ管理サーバ１２０、４１０及び４２０の各々は、ネットワークスイッチ１１０及び１１２に通信可能に結合される。ある実施形態では、ストレージ管理サーバ１２０、４１０及び４２０の各々が、ストレージプール１６０、１７０及び１８０内に独自の記憶装置の組を含む。別の実施形態では、ストレージ管理サーバ１２０、４１０及び４２０の各々を外部記憶装置の組と通信するように構成することができる。ある実施形態では、ストレージ管理サーバ１２０を、ホストマシン１０２〜１０６から特定のデータ要求を受け取って、この特定のデータ要求に関連する記憶装置と通信するように構成された適切なストレージ管理サーバ４１０及び４２０にルーティングする制御管理サーバとして構成することができる。
【００１３】
ある実施形態では、ホストマシンが、ストレージコントローラ１２２及び１２４を通じて、ストレージプール１６０内の接続されたファイルシステムと通信する。ストレージコントローラ１２２及び１２４の各々は、ストレージプール１６０内の１又は２以上のディスク装置、フラッシュデバイス又はその他のＳＳＤデバイス、或いは永続記憶装置を含む他の装置を制御するための処理回路を含む。ストレージコントローラ１２２及び１２４の各々は、ネットワークへの接続に必要なネットワークインターフェイスを含む。ある実施形態では、ネットワークインターフェイス１３２、１３４、１３６及び１３８の各々が、ネットワークスイッチ１１０及び１１２に接続されたネットワークインターフェイスを表す。ネットワークインターフェイス１３２、１３４、１３６及び１３８の各々は、ストレージコントローラ１２２及び１２４への異なるネットワーク経路を表すことを可能にする別個のＩＰアドレスを有するように構成される。例えば、ホストマシンは、ネットワークインターフェイス１３２及び１３４のための異なるＩＰアドレスを用いて２つの異なるネットワーク経路を介してストレージコントローラ１２２にデータを送信することができる。
【００１４】
図１を参照すると、ある実施形態では、ストレージコントローラ１２２及び１２４が、他の装置への接続正常性を判定する目的で、ホストマシン１０２〜１０６と、ストレージ管理サーバ４１０及び４２０などの他のストレージ管理サーバ上に実装できる他のストレージコントローラとに複数のタイプのテストメッセージを送信するように構成される。ストレージコントローラ１２２及び１２４は、ネットワークインターフェイス１３２、１３４、１３６及び１３８と要求元装置との間の接続経路の接続性状態要求を受け取って接続性情報を送信するように構成することができる。
【００１５】
ある実施形態では、ホストマシン１０２〜１０６を、ストレージ管理サーバ１２０、４１０及び４２０上に存在するストレージコントローラに複数のタイプのテストメッセージを送信するようにさらに構成することができる。ホストマシン１０２〜１０６を、テストメッセージを開始して送信するように構成することにより、方向的接続性状態（ｄｉｒｅｃｔｉｏｎａｌ  ｃｏｎｎｅｃｔｉｖｉｔｙ  ｓｔａｔｕｓｅｓ）を確立することができる。例えば、ホストマシンからストレージコントローラにデータを送信するための接続情報と、ストレージコントローラからホストマシンにデータを送信するための接続情報とを指定する接続経路の接続性情報を生成することができる。
【００１６】
ストレージプール１６０は、ストレージノード７１０−１、７１０−２、．．．及び７１０−Ｎを含み、これらのストレージノードは、データを物理的に記憶するために使用される記憶装置をさらに含む。ストレージプール１６０、記憶装置、並びにホストマシンと、データの書き込み、読み出し及び更新を行うことができるストレージコントローラとの間の相互接続性の実装の詳細な説明については、本明細書の分散型仮想アレイ（ＤＩＳＴＲＩＢＵＴＥＤ  ＶＩＲＴＵＡＬ  ＡＲＲＡＹ）の節において説明する。
【００１７】
機能の概要
本明細書では、ホストマシン１０２〜１０６と、ストレージコントローラ１２２〜１２４と、ストレージプール１６０との間の使用可能な接続経路を判定するために使用できる、ホストマシン１０２〜１０６とネットワークインターフェイス１３２〜１３８との間の接続性状態をストレージコントローラが判定する技術について説明する。図２に、接続性情報を判定し、ホストマシンとストレージコントローラとの間の接続状態の接続性マップを生成し、接続性状態情報をホストマシンに送信する実施形態例を示す。
【００１８】
テストメッセージ
ある実施形態では、ストレージコントローラ１２２及び１２４がテストメッセージを生成し、ネットワークインターフェイス１３２〜１３８の各々からホストマシン１０２、１０４及び１０６に送信する。例えば、テストメッセージが生成され、ネットワークインターフェイス１３２〜１３８からホストマシン１０２、１０４及び１０６の各々に送信される。ある実施形態では、ホストマシン１０２、１０４及び１０６を、それぞれが別個のＩＰアドレスを有するように構成された複数の結合されていないネットワークインターフェイスを含むように構成することができる。ホストマシン１０２、１０４及び１０６上の複数の結合されていないネットワークインターフェイスの各々は、ネットワークインターフェイス１３２〜１３８からテストメッセージを受け取るように構成される。
【００１９】
ある実施形態では、テストメッセージが、ターゲットへの接続性を判定するとともにソースからテストメッセージが送信されてターゲットがソースにメッセージをエコーバックするまでのラウンドトリップ時間を測定する目的で、ソースから特定のターゲットに送信されるデータの１又は２以上のデータパケットを表す。テストメッセージの例としては、ホスト装置からリモートターゲット装置に送信されるインターネットコントロールメッセージプロトコル（ＩＣＭＰ）エコー要求パケットであるｐｉｎｇメッセージが挙げられる。この時、リモートターゲット装置は、ホスト装置にＩＣＭＰエコー応答メッセージを返送する。テストメッセージの実施形態は、以下に限定するわけではないが、主にネットワークインターフェイスからホストマシンへの到達可能性及びラウンドトリップ時間をテストするように構成された小容量テストメッセージ、メッセージ自体のエラー及びパケットロスに基づいてホストマシンへの到達可能性及び接続品質をテストするように構成された大容量テストメッセージ、並びにネットワークインターフェイス１３２〜１３８とホストマシン１０２〜１０６との間の接続の接続速度、信頼性及び利用可能性を判定するために使用される他のいずれかのタイプのテストメッセージを含むことができる。
【００２０】
図２のステップ２０５には、ストレージコントローラが各ホストマシンにテストメッセージを送信することを示す。ある実施形態では、ネットワークインターフェイス１３２〜１３８の各々からホストマシン１０２〜１０６の各々にテストメッセージが送信される。ネットワークインターフェイス１３２〜１３８の各々からホストマシン１０２〜１０６の各々にテストメッセージを送信することにより、各ネットワークインターフェイス１３２〜１３８から各ホストマシン１０２〜１０６への各ネットワーク経路の接続性がテストされる。例えば、ネットワークインターフェイス１３２〜１３８からホストマシン１０２に送信されるテストメッセージを用いて、ネットワークインターフェイス１３２〜１３８のうちのどのネットワークインターフェイスが現在ホストマシン１０２への接続性を有しているかを判定することができる。また、ネットワークインターフェイス１３２〜１３８からホストマシン１０２に送信されるテストメッセージを用いて、どのネットワークインターフェイスが現在ホストマシン１０２への接続性を有していないかを判定することもできる。
【００２１】
ある実施形態では、ストレージコントローラ１２２及び１２４を、ホストマシン１０２〜１０６の各々に定期的にテストメッセージを送信するように構成することができる。例えば、ストレージコントローラ１２２及び１２４は、テストメッセージを３秒毎にホストマシンに送信するように構成することができる。ストレージコントローラ１２２及び１２４は、小容量テストメッセージと大容量テストメッセージの送信を定期的にスケジュールするように構成することもできる。例えば、小容量テストメッセージは、毎分３回ホストマシンに送信するようにスケジュールすることができ、大容量テストメッセージは、毎分１回ホストマシンに送信するようにスケジュールすることができる。
【００２２】
テストメッセージは、ホストマシン１０２〜１０６への接続性をテストすることに限定されるものではない。ある実施形態では、ストレージコントローラ１２２及び１２４を、ストレージ管理サーバ４１０及び４２０に実装されたストレージコントローラにテストメッセージを送信するように構成することができる。これらのテストメッセージを用いて、複数のストレージコントローラ間の接続性を判定することができる。また、ストレージ管理サーバ４１０及び４２０上のストレージコントローラは、ホストマシン１０２〜１０６、並びにストレージコントローラ１２２及び１２４などの他のストレージコントローラにテストメッセージを送信することもできる。さらに別の実施形態では、現在の分散ストレージシステムネットワークを複製するように実装できる複製環境に複製データを送信する接続経路を特定する目的で、ストレージコントローラ１２２及び１２４から遠隔の複製された分散ストレージシステムネットワークにテストメッセージを送信することもできる。
【００２３】
ホストマシン１０２〜１０６の各々は、ネットワークインターフェイス１３２〜１３８の各々からテストメッセージを受け取ったことに応答して、テストメッセージを送信したネットワークインターフェイスに応答メッセージを返送するように構成される。例えば、ホストマシン１０２は、ネットワークインターフェイス１３２〜１３８の各々からテストメッセージを受け取った後に応答メッセージを生成してネットワークインターフェイス１３２〜１３８に返送するように構成される。一例としてＩＣＭＰメッセージを挙げると、ネットワークインターフェイス１３２によって送信されたテストメッセージがＩＣＭＰエコー要求メッセージの場合、応答メッセージは、ホストマシン１０２によって送信されるＩＣＭＰエコー応答メッセージとすることができる。テストメッセージ及び応答メッセージの実施形態はＩＣＭＰメッセージに限定されず、例えばカスタムの又は専用のテストメッセージ及び応答メッセージを使用することもできる。別の実施形態では、テストメッセージ自体が、特定のメッセージ又は特定のメッセージタイプに限定されない。ネットワークインターフェイス１３２〜１３８によって送信されホストマシン１０２、１０４及び１０６によって受け取られるデータパケットを用いて、エンドポイント間の接続性を示すことができる。例えば、接続経路をテストするためにネットワークインターフェイス１３２からホストマシン１０２に特定のデータパケットを送信することができる。この特定のデータパケットは、要求又は応答に関する実際のデータ、接続経路のテストに特化して使用されるダミーデータ、或いはエンドポイント間で送信される、接続経路のテストに使用される要求メッセージ又は応答メッセージに追加される特定のデータパケットを含むことができる。
【００２４】
ステップ２１０には、ネットワークインターフェイス１３２〜１３８のうちのあるネットワークインターフェイスがホストマシンから応答メッセージを受け取ることを示す。例えば、ネットワークインターフェイス１３２がホストマシン１０２からＩＣＭＰエコー応答メッセージを受け取る。このＩＣＭＰエコー応答メッセージを使用して、ネットワークインターフェイス１３２とホストマシン１０２との間に接続性が存在することを示すことができる。
【００２５】
ある実施形態では、特定のネットワークインターフェイスが特定の時間後に応答メッセージを受け取らなかった場合、この特定のネットワークインターフェイスは、特定のホストマシンからの応答メッセージがないことに基づいて、この特定のホストマシンへの有効な接続を有していないと判断することができる。例えば、ストレージコントローラ１２２上のネットワークインターフェイス１３４がホストマシン１０４にテストメッセージを送信し、特定の時間後にホストマシン１０４から応答メッセージが受け取られなかった場合、ストレージコントローラ１２２は、ネットワークインターフェイス１３４からホストマシン１０４への接続が現在停止中であると結論付けることができる。
【００２６】
接続性マップ
ある実施形態では、ストレージコントローラ１２２及び１２４を、ネットワークインターフェイス１３２〜１３８における応答メッセージの受信時に、送信したテストメッセージと受信した応答メッセージとに関連する情報をストレージ管理サーバ１２０に記憶するように構成することができる。ストレージ管理サーバ１２０は、ストレージコントローラ１２２及び１２４に付属するネットワークインターフェイス１３２〜１３８から送信したテスメッセージの接続性指標と、これらのネットワークインターフェイスが受信した応答メッセージの接続性指標とを記憶するように構成されたローカルメモリを含むことができる。別の実施形態では、ストレージ管理サーバ１２０を、接続性指標をストレージプール１３０内のリモート位置に記憶するように構成することができる。
【００２７】
ある実施形態では、ストレージ管理サーバ１２０が、ネットワークインターフェイス１３２〜１３８とホストマシン１０２〜１０６との間の接続経路の接続性状態情報を記憶するように構成される。接続経路の接続性状態情報は、１又は複数のローカルデータベーステーブル又は他のいずれかのストレージフォーマットに記憶することができる。
【００２８】
再び図２を参照すると、ステップ２１５において、ホストマシンとネットワークインターフェイスとの間の接続状態の接続性マップが生成される。ある実施形態では、ストレージ管理サーバ１２０が、ネットワークインターフェイス１３２〜１３８とホストマシン１０２〜１０６との間の接続性状態及び接続特性をマッピングする接続性マップを生成して維持する。接続性マップは、ホストマシンとネットワークインターフェイスとの間の接続経路のアクティブなレジストリとしての役割を果たす。接続性マップは、送信したテストメッセージと受信した応答メッセージとに基づく接続経路に関する最新の状態情報を含む。例えば、ストレージ管理サーバ１２０は、ネットワークインターフェイス１３２〜１３８から送信された各テストメッセージと、ネットワークインターフェイス１３２〜１３８において受け取られた各応答メッセージとに対応するデータを記憶することができる。ストレージ管理サーバ１２０は、記憶されたテストメッセージ及び応答メッセージデータに基づいて、ネットワークインターフェイス１３２〜１３８とホストマシン１０２〜１０６との間の各接続経路の接続性状態及び接続性特性を含む１又は２以上のデータベーステーブルの形の接続性マップを生成することができる。接続状態及び接続特性は、ネットワークインターフェイスから送信されたテストメッセージに対応する応答メッセージがホストマシンから受け取られたかどうか、及びテストメッセージの送信と対応する応答メッセージの受信との間のレイテンシに基づくことができる。
【００２９】
図３に、ホストマシンとネットワークインターフェイスとの間の接続を行列として表す接続性マップの実施形態例を示す。接続性マップ３０５では、行３１０が、現在のネットワーク設定内の異なるホストマシンを表し、列３１５の各々が、ストレージコントローラ１２２及び１２４からのネットワークインターフェイスを表す。ある実施形態では、ホストマシンとネットワークインターフェイスとの間の接続経路状態が、特定のホストマシンと特定のネットワーク経路との交わりによって表される。例えば、接続性マップ３０５では、ホストマシン１０２とネットワークインターフェイス１３２との間の接続経路が現在「作動中（ｕｐ）」であり、ホストマシン１０２とネットワークインターフェイス１３４との間の接続経路が現在「停止中（ｄｏｗｎ）」である。ホストマシン１０２は、接続性マップ３０５における現在の接続性状態を使用して、ホストマシン１０２とネットワークインターフェイス１３２との間の経路が現在作動中であるという理由でネットワークインターフェイス１３２を介してストレージコントローラ１２２と通信することができる。
【００３０】
ある実施形態では、特定のネットワークインターフェイスと特定のホストマシンとの間の接続が作動中であるか、それとも停止中であるかについての判定が、テストメッセージの特定の試行回数に基づくことができる。例えば、ストレージコントローラ１２２は、３つの連続するテストメッセージと応答メッセージの送受信に基づいて、ネットワークインターフェイス１３２とホストマシン１０２との間の接続が作動中であると判定することができる。同様に、ストレージコントローラ１２２は、３つの連続するテストメッセージを送信し、特定の時間にわたって応答メッセージが受け取られなかったことに基づいて、ネットワークインターフェイス１３４とホストマシン１０４との間の接続が停止中であると判定することができる。ある実施形態では、ネットワークインターフェイスとホストマシンとの間の接続性の判定が、以下に限定するわけではないが、テストメッセージの試行に連続して成功した又はしなかった回数、テストメッセージの送信と応答メッセージの受信との間の時間、異なるタイプのテストメッセージについて正常に受け取られた応答メッセージ、及び受け取った応答メッセージにおいて報告される他のいずれかの測定可能な応答指標を含む一連の構成基準に基づくことができる。
【００３１】
ある実施形態では、ストレージ管理サーバ１２０を、特定のレイテンシ閾値に基づいてホストマシンとネットワークインターフェイスとの間の特定の接続状態が停止中であると判定するように構成することができる。例えば、テストメッセージの送信と対応する応答メッセージの受信との間のレイテンシ時間が１０００ミリ秒（ｍｓ）を超えた場合、ストレージ管理サーバ１２０は、特定のホストと特定のネットワークインターフェイスとの間の接続経路が通信にとって遅すぎ、従って「停止中」と見なされると判定することができる。再び図３を参照すると、ホストマシン１０２とネットワークインターフェイス１３４との間の接続経路は、テストメッセージの送信と応答メッセージの受信との間の平均レイテンシが１０００ｍｓを超えたことによって停止中と判定することができる。
【００３２】
接続性マップ３０５の他の実施形態は、ホストマシンとネットワークインターフェイスとの間の接続経路に関するさらなる接続詳細を含むことができる。例えば、ストレージ管理サーバ１２０は、接続経路が作動中であるか、それとも停止中であるかの判定と共に、レイテンシに基づく接続速度、応答メッセージの成功回数及び不成功回数に基づく接続品質、並びに各接続経路の現在のネットワーク負荷などの特性を判定することもできる。例えば、各接続経路は、接続経路上のデータトラフィック量に基づいて、接続経路の現在の使用率が高いか、それとも低いかを指定する情報を含むことができる。
【００３３】
接続性マップ３０５は、ネットワークインターフェイス１３２〜１３８とホストマシン１０２〜１０６との間の接続経路に限定されるものではない。ある実施形態では、ストレージ管理サーバ１２０が、接続性マップ３０５内に、複数のストレージ管理サーバ１２０、４１０及び４２０と、その対応するストレージコントローラ及びネットワークインターフェイスとの間の接続経路情報を含むことができる。別の実施形態では、ストレージ管理サーバ１２０が、分散ストレージシステムネットワークを複製するように構成された複製ネットワークへの接続経路情報を含むことができる。さらに他の実施形態では、ストレージ管理サーバ１２０が、各々がストレージコントローラとホストマシンとの間、ストレージコントローラとストレージコントローラとの間、及び作動中の装置と複製装置との間などの異なるタイプの接続経路間の接続情報を含むように構成された複数の接続性マップを生成することができる。
【００３４】
ストレージ管理サーバ１２０は、他のストレージ管理サーバ上のストレージコントローラ、ホストマシン及び複製装置などの他の装置から接続性マップ更新メッセージを受け取るように構成することができる。接続性マップ更新メッセージを受け取る詳細については、本明細書の接続性マップの更新（ＵＰＤＡＴＩＮＧ  ＣＯＮＮＥＣＴＩＶＩＴＹ  ＭＡＰ）の節において詳細に説明する。
【００３５】
ある実施形態では、接続性マップを用いて、ストレージコントローラに付属する複数のネットワークインターフェイス上におけるネットワークトラフィックを可能にすることによってストレージコントローラ１２２及び１２４とホストマシン１０２〜１０６との間の総帯域幅を拡大することを含め、ストレージコントローラ１２２及び１２４とホストマシン１０２〜１０６との間の通信にどのネットワークインターフェイスを使用すべきかを判断することができる。例えば、各ホストがネットワークインターフェイス１３２及び１３４にわたってネットワークトラフィックを広げた場合、ホストマシン１０２及び１０４が利用できるコントローラネットワーク帯域幅は２倍になる。ホストマシン１０２が２つのネットワークインターフェイスを有する場合、ネットワークインターフェイス１３２及び１３４にわたってトラフィックを広げることによって、ホストマシン１０２への帯域幅は２倍になる。
【００３６】
ある実施形態では、接続性マップを用いて、特定のクライアントプロセスと特定のサーバプロセスとの間でデータ要求を通信するための、特定のネットワークインターフェイスと特定のホストマシンとの間の安定した接続経路を特定することができる。例えば、接続性マップを用いて、ネットワークインターフェイス１３２を介してストレージコントローラ１２２と通信するホストマシン１０２上の特定のプロセスのための安定した接続経路を確立することができる。接続がリセットされた場合には、ホストマシン１０２とネットワークインターフェイス１３２との間に新たな接続を確立することによって、ホストマシン１０２とストレージコントローラ１２２との間の接続経路を再び判定する必要性を避けることができる。
【００３７】
ある実施形態では、どのネットワークインターフェイスがデータ要求を送信すべきかを決定する乱数割り当て技術を用いてホストマシン上の特定のプロセスに特定のネットワークインターフェイスを割り当てることによって安定した接続経路を構成することができる。例えば、ハッシュソルト内でサーバプロセス識別子を使用するような技術を用いて、ホストマシン上のプロセスに特定のネットワークインターフェイスを宛先インターフェイスとして割り当てることができる。そうすることにより、データ要求を開始する特定のプロセスに基づいて特定のホストマシンからのデータ要求を複数のネットワークインターフェイスにわたって広げることができる。この方法では、特定のホストマシン上の異なるプロセスに基づいて複数の異なるネットワークインターフェイスにデータ要求が送信されるので、特定のホストマシンが不適切な量のデータを送信した場合にクライアントスキューの存在が低減される。
【００３８】
ある実施形態では、利用可能なネットワークインターフェイスへの接続経路の判定が、サーバスキュー又はクライアントスキューのいずれかに基づいて不均等な負荷分散を解決する技術を含むことができる。クライアントスキューは、複数のクライアントからの不均等な負荷分散を引き起こすことがある。１つの実施形態では、ターゲットネットワークインターフェイスの割り当て時にハッシュソルトにサーバプロセス識別子を含めることによってクライアントスキューを低減することができる。サーバプロセス識別子を使用すると、単一のビジーなクライアントからのトラフィックを含むクライアントからのトラフィックが単一のネットワークインターフェイスに送信されないことを確実にすることができる。代わりに、一意のサーバプロセス識別子を含む異なるハッシュソルトに基づいて、異なるサービスと異なるネットワークインターフェイスとの間で接続が分散される。
【００３９】
サーバスキューは、ストレージコントローラ１２２上のサービス間に不均等な負荷分散を引き起こすことがある。潜在的なサーバスキューの事例を低減するために、各ホストマシン１０２〜１０６は、そのプロセスの有効期限にわたり、ハッシュソルトも含む乱数を生成する。これによって異なるホストマシン１０２〜１０６による異なるターゲットネットワークインターフェイスの割り当てが可能になることにより、ストレージコントローラ１２２上で実行中の最もビジーなサービスへの接続がストレージコントローラ１２２の異なるネットワークインターフェイスにわたって均等に分散するようになる。
【００４０】
ストレージコントローラへの役割の割り当て
ある実施形態では、ストレージ管理サーバ１２０が、接続性マップ内の接続性状態情報を用いて、ストレージコントローラ１２２及び１２４の能動的役割及び受動的役割を決定するように構成される。ストレージコントローラの能動的役割とは、特定のストレージコントローラを、ホストマシンから受け取ったデータ要求を処理してストレージプール１６０内の適切な宛先にルーティングするストレージコントローラとして指定することを意味する。ストレージコントローラの受動的役割とは、特定のストレージコントローラを、能動的ストレージコントローラのバックアップとしての役割を果たすストレージコントローラとして指定することを意味する。受動的ストレージコントローラは、能動的ストレージコントローラに障害が起きた場合に利用することができる。例えば、ストレージ管理サーバ１２０は、どのネットワークインターフェイスが作動中の接続経路を有しているかに基づいてストレージコントローラの能動的役割と受動的役割とを決定することができる。図４を参照すると、ストレージ管理サーバ１２０、４１０及び４２０上のストレージコントローラとホストマシン１０２、１０４及び１０６との間の接続性状態情報を用いて、どのストレージコントローラを能動的にし、どのストレージコントローラを受動的にすべきかを決定することができる。例えば、ストレージ管理サーバ１２０は、ストレージ管理サーバ１２０内のどのストレージコントローラによってストレージ管理サーバ間の接続性がより良好になるかに基づいて、ストレージコントローラ１２２を能動的コントローラとして割り当て、ストレージコントローラ１２４を受動的コントローラとして割り当てることができる。また、能動的／受動的フェイルオーバは、ストレージコントローラ１２２及び１２４と、ホストマシン１０２、１０４及び１０６との間のホスト接続性に基づくこともできる。接続性状態情報の決定は、接続性マップに記載される接続経路に基づくことができる。
【００４１】
ある実施形態では、ストレージコントローラと外部記憶装置との間の接続性に関連してストレージコントローラに能動的役割及び受動的役割を割り当てることができる。例えば、接続先の記憶装置が外部に配置されている場合、接続性状態情報は、ストレージ管理サーバ１２０、４１０及び４２０の各々におけるストレージコントローラと外部記憶装置との間の接続性マップ内に存在することができる。能動的役割及び受動的役割は、接続先の各記憶装置の組について各ストレージ管理サーバ上の各ストレージコントローラに割り当てることができる。
【００４２】
ストレージコントローラ１２０は、ホストマシン１０２、１０４及び１０６への接続性のためにストレージコントローラ１２２又は１２４のいずれかに能動的役割を割り当てることに限定されるものではない。ある実施形態では、接続性マップ内の現在の接続性状態が、ストレージ管理サーバ４１０及び４２０上のストレージコントローラのうちの１つがホストマシン１０２〜１０６への優れた接続性を有することを示すことができる。この時、ストレージ管理サーバ１２０は、残りのストレージ管理サーバ４１０及び４２０の一方に存在するストレージコントローラの一方に能動的役割を割り当てることもできる。
【００４３】
他の実施形態では、ストレージ管理サーバ１２０が、どのストレージコントローラが能動的ストレージコントローラであり、どのストレージコントローラが受動的ストレージコントローラであるかを決定するために、ネットワークインターフェイスからの接続経路の作動／停止状態、並びに接続速度又は接続品質などの他の接続特性を用いて能動的役割及び受動的役割を決定することができる。
【００４４】
さらに他の実施形態では、ストレージ管理サーバ１２０を、接続性マップ内の現在の接続性情報に基づいて、ストレージコントローラ１２２及び１２４の両方に能動的役割を割り当てるように構成することができる。例えば、接続性情報は、作動中として示されるホストマシンへの接続経路をストレージコントローラ１２２及び１２４の両方が有している旨を示すことがある。従って、ストレージ管理サーバ１２０は、ストレージ管理サーバ１２０内への帯域幅を拡大するために、ストレージコントローラ１２２及び１２４の両方に能動的役割を割り当てる。この能動的／能動的の設定を用いて、ストレージ管理サーバ１２０を、ホストマシンの各々にトラフィックを向ける経路を接続性情報に基づいて決定するようにさらに構成することができる。
【００４５】
フローティングＩＰアドレス
ある実施形態では、ストレージコントローラ１２２及び１２４に付属するネットワークインターフェイス１３２〜１３８の各々にＩＰアドレスが割り当てられる。これらのＩＰアドレスは、ホストマシンがストレージコントローラと通信するために使用する。ある実施形態では、ストレージ管理サーバ１２０が、ネットワークインターフェイスのうちの１つにさらなるＩＰアドレスを割り当てるように構成される。このさらなるＩＰアドレスは、ネットワークインターフェイスのうちのいずれか１つにいつでも割り当てることができるフローティングＩＰアドレスである。フローティングＩＰアドレスは、ネットワークインターフェイスなどの物理位置に割り当てた後に異なるネットワークインターフェイスなどの異なる物理位置にいつでも割り当て直すことができる仮想ＩＰアドレスである。ある実施形態では、ストレージ管理サーバ１２０が、接続性マップ３０５からの接続性情報に基づいて、ネットワークインターフェイス１３２〜１３８のうちの１つにフローティングＩＰアドレスを割り当てるように構成される。ストレージ管理サーバ１２０は、接続性マップにアクセスして、ホストマシンへの最も利用可能性の高い接続経路にどのネットワークインターフェイスが関連するかを判断することができる。例えば、ストレージ管理サーバ１２０は、接続性マップ３０５を参照して、ネットワークインターフェイス１３４からホストマシン１０２〜１０６への接続経路が全て作動中であるため、ネットワークインターフェイス１３４にフローティングＩＰアドレスを割り当てるべきであると判断することができる。ストレージ管理サーバ１２０は、ネットワークインターフェイスと接続性マップ３０５とに関連する他の接続特性を用いて、フローティングＩＰアドレスをどこに割り当てるべきであるかを判断することもできる。また、ストレージ管理サーバ１２０は、現在能動的である特定のストレージコントローラに付属するネットワークインターフェイスにフローティングＩＰアドレスを割り当てることもできる。能動的として指定されたストレージコントローラは、接続経路の利用可能性が高いストレージコントローラである可能性が高いので、ストレージ管理サーバ１２０は、能動的ストレージコントローラ上のネットワークインターフェイスのうちの１つにフローティングＩＰアドレスを割り当てるように構成することができる。例えば、ストレージ管理サーバ１２０は、最初に能動的ストレージコントローラをストレージコントローラ１２２として決定することができる。次に、ストレージ管理サーバ１２０は、接続性が良好な方のネットワークインターフェイス（ネットワークインターフェイス１３２又は１３４のいずれか）にフローティングＩＰアドレスを割り当てると決定することができる。ストレージ管理サーバ１２０は、能動的ストレージコントローラを割り当て直すべきであると判断した場合、ストレージコントローラ１２４に能動的役割を割り当てた後に、接続性情報に基づいて、ストレージコントローラ１２４に付属するネットワークインターフェイスの一方（ネットワークインターフェイス１３６又は１３８のいずれか）にフローティングＩＰアドレスを割り当て直す。
【００４６】
他の実施形態では、ストレージ管理サーバ１２０が、接続性マップのみに基づいてフローティングＩＰアドレスの割り当てを決定することができ、この決定は、受動的ストレージコントローラに付属するネットワークインターフェイスにフローティングＩＰアドレスを割り当てることを含むことができる。現在受動的であるストレージコントローラに付属するネットワークインターフェイスへのフローティングＩＰアドレスの割り当ては、ストレージ管理サーバ１２０によるストレージコントローラの能動的／受動的役割の再割り当てをトリガすることができる。例えば、ストレージ管理サーバ１２０は、受動的ストレージコントローラ１２４に付属するネットワークインターフェイス１３６にフローティングＩＰアドレスを割り当てるべきであると判断した場合、次はストレージコントローラ１２４が能動的になり、ストレージコントローラ１２２が受動的になるようにストレージコントローラの能動的／受動的役割を切り替えることもできる。
【００４７】
フローティングＩＰアドレスは、接続状態クエリのための指定ＩＰアドレスとして使用することができる。例えば、ホストマシン１０２〜１０６は、どの接続経路が作動中であってストレージコントローラがデータ要求の受け取りに利用できるかに関する接続状態情報を受け取るために、フローティングＩＰアドレスに接続性状態クエリ要求を送信することができる。
【００４８】
接続性状態クエリ
ある実施形態では、ストレージ管理サーバ１２０が、フローティングＩＰアドレスが割り当てられた特定のネットワークインターフェイスに関連する接続状態インターフェイスを開始するように構成される。接続状態インターフェイスは、ホストマシン及びネットワーク内の他の装置から接続性状態クエリを受け取って、クエリを送信したホストマシン又は他の装置に関連する接続経路情報を照会するようにプログラムされる。
【００４９】
ある実施形態では、ホストマシン１０２〜１０６が、ストレージコントローラにデータ要求を送信するのにどの接続経路が最適であるかを決定するために、接続性マップ３０５を照会するように構成される。ホストマシン１０２〜１０６は、ホストマシンに関連する接続情報について接続性マップ３０５を照会するために使用される接続性状態要求メッセージを生成するように構成される。接続性状態要求メッセージは、接続性状態要求と、メッセージの要求元であるホストマシンを識別する情報とを含むことができる。例えば、ホストマシン１０２が接続性状態要求メッセージを生成する場合、接続性状態要求メッセージは、ホストマシン１０２を識別する識別情報を含むことができる。ストレージ管理サーバ１２０における接続状態インターフェイスは、この識別情報を使用してホストマシン１０２に関する接続情報を照会することができる。ホストマシン１０２〜１０６は、接続性状態要求メッセージを生成した後に、フローティングＩＰアドレスをターゲットＩＰアドレスとして使用して接続状態インターフェイスに接続性状態要求メッセージを送信するように構成される。他の実施形態では、接続性状態要求メッセージの生成及び送信がホストマシン１０２〜１０６に限定されない。接続性状態要求メッセージは、異なるストレージ管理サーバ間の接続経路を判定する目的で、ストレージ管理サーバ４１０及び４２０上の他のストレージコントローラなどの他の装置から送信することもできる。
【００５０】
ある実施形態では、ホストマシン１０２〜１０６が、（１）一定時間毎に、（２）ホストマシンの初期起動時に、及び（３）データ要求の失敗後に、接続性状態要求メッセージを生成して送信するように構成される。例えば、ホストマシン１０２は、起動時にはネットワーク内の接続経路の現在の接続性状態が分からない。従って、ホストマシン１０２は、どの接続経路が利用可能であるかを判定するために、接続性状態要求メッセージを生成してフローティングＩＰアドレスにおける接続状態インターフェイスに送信するように構成される。接続経路の状態は時間と共に変化し得るので、ホストマシン１０２は、ホストマシン１０２内の接続状態情報が最新であることを保証するために定期的に接続性状態要求メッセージを生成して接続状態インターフェイスに送信するように構成される。また、ホストマシン１０２は、データ要求の失敗後に接続性状態要求メッセージを生成して送信するように構成することもできる。例えば、ホストマシン１０２は、特定の接続経路を用いてストレージコントローラ１２２にデータ要求を送信し、このデータ要求が確認応答されなかった場合、使用した特定の接続経路が現在停止中の可能性があると結論付けることができる。このシナリオでは、ホストマシン１０２が、最新の接続状態情報を受け取るために接続性状態要求メッセージを生成して接続状態インターフェイスに送信することができる。
【００５１】
再び図２を参照すると、ステップ２２０において、ホストマシンから接続性状態要求メッセージが受け取られる。ある実施形態では、接続性状態要求メッセージが、フローティングＩＰアドレスが割り当てられた特定のネットワークインターフェイスによって受け取られる。例えば、フローティングＩＰアドレスがネットワークインターフェイス１３４に割り当てられている場合、接続状態要求メッセージはネットワークインターフェイス１３４において受け取られる。ネットワークインターフェイス１３４は、接続状態要求メッセージを受け取って処理のために接続状態インターフェイスにルーティングする。
【００５２】
図２のステップ２２５において、接続状態インターフェイスは、受け取った接続状態要求メッセージを処理し、接続状態結果セットを生成して要求元のホストマシンに送信する。ある実施形態では、接続状態インターフェイスが、要求元のホストマシンに関する接続性状態情報を含む接続状態結果セットメッセージを生成する。例えば、接続状態要求メッセージがホストマシン１０２から送信された場合、接続状態インターフェイスは、ホストマシン１０２をエンドポイントとして含む接続経路について接続性マップ３０５を照会することができる。その後、接続状態インターフェイスは、接続状態結果セットをホストマシン１０２に送信する。ある実施形態では、接続状態結果セットが、現在どのストレージコントローラが能動的であるか、及び現在どのストレージコントローラが受動的であるかを指定する情報を含むこともできる。
【００５３】
その後、接続状態結果セットを受け取ったホストマシン１０２〜１０６は、接続経路情報を用いて能動的ストレージコントローラに適切にデータ要求をルーティングすることができる。この結果、能動的ストレージコントローラは、ストレージプール１６０内の適切なデータ記憶装置にデータ要求を送信するように構成される。
【００５４】
ある実施形態では、ホストマシン１０２〜１０６が、接続経路情報をホストマシン１０２内のローカルキャッシュストアに記憶するように構成される。ホストマシン１０２は、接続経路情報をローカルキャッシュに記憶することにより、各データ要求の送信前に接続性状態要求メッセージを送信する必要なく、能動的ストレージコントローラへのデータ要求の送信に使用すべき適切な接続経路を決定することができる。また、接続性マップ内で接続性情報が変化した場合に接続状態が古くなった旨をホストマシン１０２、１０４及び１０６に警告するようにストレージコントローラ１２２が構成されるように、ホストマシン１０２、１０４及び１０６を、接続性情報に気を配るように構成することもできる。その後、ホストマシン１０２、１０４及び１０６は、別の接続性状態要求メッセージを送信するように構成することができる。
【００５５】
接続状態リストの生成
ある実施形態では、接続状態インターフェイスを、接続性マップ３０５を定期的に照会して、停止中であることが分かっている接続経路の組を特定するように構成することができる。例えば、現在ネットワークインターフェイス１３２が停止中である場合、接続性マップ３０５は、ホストマシン１０２〜１０６とネットワークインターフェイス１３２との間の接続経路が停止中である旨を示す。次に、接続状態インターフェイスは、ネットワークインターフェイスとホストマシンとの間の停止中の接続についての「ブラックリスト」を作成することができる。このブラックリストは、現在停止中であるネットワークインターフェイスとホストマシンのペアのＩＰアドレスのリストを含むことができる。その後、接続状態インターフェイスを、生成したブラックリストをホストマシン１０２〜１０６に送信するように構成して、ホストマシン１０２〜１０６がその接続経路情報のローカルキャッシュを更新できるようにすることができる。
【００５６】
別の実施形態では、接続状態インターフェイスを、接続性マップ３０５を定期的に照会して現在作動中の接続経路を特定するように構成することもできる。接続状態インターフェイスは、ホストマシン１０２〜１０６から能動的ストレージコントローラへのデータ要求に使用すべき、現在作動中のネットワークインターフェイスとホストマシンのペアのＩＰアドレスについての「ホワイトリスト」を作成することができる。
【００５７】
ホストマシン１０２〜１０６は、受け取ったブラックリスト又はホワイトリストに基づいて、自機のローカルキャッシュに記憶された接続経路情報を更新するように構成することができる。また、ホストマシン１０２〜１０６は、ブラックリスト又はホワイトリストメッセージのいずれかを受け取ったことに応答して、新たな接続状態要求メッセージを生成して送信するように構成することができる。例えば、ホストマシン１０２は、ローカルキャッシュの更新後にホストマシン１０２が能動的ストレージコントローラにデータ要求を送信するための明確な接続経路を有さない状態にするネットワークインターフェイスとホストマシンのペアのブラックリストを受け取ることもある。このシナリオでは、ホストマシン１０２が、ホストマシン１０２に関する全ての接続経路状態情報を指定する接続情報の結果セットを受け取るために、フローティングＩＰアドレスに新たな接続状態要求メッセージを送信することができる。
【００５８】
ある実施形態では、ストレージ管理サーバ１２０を、接続性マップ３０５内の接続情報に基づいて正常性状態レポートを生成するように構成することができる。正常性状態レポートは、ネットワークの状態をモニタするシステム管理者及びその他のネットワークエンジニアのために生成される接続状態レポートである。例えば、１又は２以上のストレージコントローラとホストマシン１０２〜１０６との間の接続が停止している場合には、正常性状態レポートを用いていずれかの潜在的な緊急事態をシステム管理者に警告することができる。ある実施形態では、接続性マップ３０５のいずれかの変化によって正常性状態レポートをトリガすることができる。例えば、ホワイトリスト又はブラックリストが生成された場合には、正常性状態レポートの詳細を含む正常性状態レポートを生成することもできる。別の例では、閾値数の接続経路が状態を変化させることによって正常性状態レポートの生成をトリガすることができる。
【００５９】
ある実施形態では、ストレージ管理サーバ１２０を、異なるタイプの正常性状態レポートを生成するように構成することができる。例えば、ストレージ管理サーバ１２０は、定期的な正常性状態レポート、特定のブラックリスト又はホワイトリストのトリガに基づく高優先度の正常性状態レポート、及びホストマシン、ストレージ管理サーバ又は複製サイト間の接続に固有のカスタマイズされた正常性状態レポートを作成することができる。
【００６０】
接続性マップの更新
ある実施形態では、ストレージ管理サーバ４１０及び４２０内のストレージコントローラを、ホストマシン１０２〜１０６及び他のストレージコントローラにテストメッセージを送信し、ホストマシン１０２〜１０６及び他のストレージコントローラから応答メッセージを受け取るように構成することができる。ストレージ管理サーバ４１０及び４２０は、応答メッセージを受け取ると、接続性マップ更新メッセージを生成してストレージ管理サーバ１２０に送信するように構成することができる。接続性マップ更新メッセージは、以下に限定するわけではないが、接続経路に関する接続性状態情報、レイテンシ情報及び接続エラー情報を含む接続性情報と、テストメッセージ及び応答メッセージとを含むことができる。ある実施形態では、ストレージ管理サーバ１２０を、接続性マップ更新メッセージを受け取り、これに従って接続性マップ３０５を更新するように構成することができる。
【００６１】
ストレージ管理サーバ１２０は、ストレージ管理サーバ４１０及び４２０から接続性マップ更新メッセージを受け取ることに加えて、ホストマシン１０２〜１０６から接続性マップ更新メッセージを受け取るように構成することができる。ある実施形態では、ホストマシン１０２〜１０６を、テスメッセージを生成し、ストレージコントローラに送信し、ストレージコントローラから応答メッセージを受け取るように構成することができる。ホストマシン１０２〜１０６においてテスメッセージを送信して応答メッセージを受け取る能力は、非対称の接続経路モニタリングを可能にする。ホストマシン１０２〜１０６は、ホストマシンからストレージコントローラへの方向接続経路をテストするように構成することができ、ストレージコントローラは、ストレージコントローラからホストマシンへの方向経路をテストするように構成することができる。この時、接続性マップ更新メッセージを用いてストレージ管理サーバ１２０に方向的接続性及び接続速度を送信することができる。その後、ストレージ管理サーバ１２０を、方向接続経路情報を含むように接続性マップ３０５を更新するよう構成することができる。
【００６２】
分散型仮想アレイ
図５に示すＤＶＡの一般的な実施形態に、ＤＶＡの２つの主要な物理的「側面」である、（１つを含む）いずれかの数のサーバなどのホスト１０２と、ホスト側から見れば単一の、ただし分散したストレージシステムを形成できるストレージノード７１０−１、７１０−２、．．．、７１０−Ｎ（まとめて「７１０」）を含むストレージプール１６０との間の関係を示す。ホスト１０２内のエンティティが書き込んだデータは、最初に（ＮＶＲＡＭ７３０として示す）不揮発性メモリに記憶され、最終的にはノード内に位置する永続記憶装置７４０−１、．．．、７４０−Ｎ（まとめて「７４０」）に記憶される。
【００６３】
読み出し及び書き込みエンティティは、（「ＶＭ」１０３０−１、．．．、１０３０−ｎとして別個に示す）仮想マシン１０３０、又はユーザレベルアプリケーション５４０などのさらに一般的な非仮想化プロセスを含むあらゆるタイプのものとすることができる。ここでは、データの読み出し及び／又は書き込みを行う必要があるソフトウェアエンティティ及びハードウェアエンティティを「クライアント」と呼ぶ。
【００６４】
各ホストは、１又は２以上のプロセッサ（ＣＰＵ）５１１と、ＣＰＵ上で実行できるデータ及び／又はコードの非永続的な揮発性の、及び／又は永続的な不揮発性の非一時的記憶を行ういくつかの装置５１２とを含むシステムハードウェア５１０を含む。従来、一般にメモリは高速で揮発性の固体装置を構成していたのに対し、一般にストレージは低速で不揮発性の機械的又は光学機械的装置を構成していたことから、「メモリ」と「ストレージ」との間には比較的明確な技術的区別があった。しかしながら、現代技術が大容量の永続ストレージに幅広く使用されるにつれ、この区別は次第に曖昧になってきている。例えば、多くの最新のサーバは、特に非連続的な記憶位置については、一般にＩＯＰＳ（１秒当たりの入出力操作）の観点で測定したスループット及び速度を高めるために「サーバフラッシュ」などの様々な固体記憶装置（ＳＳＤ）を使用する。相変化メモリ（ＰＲＡＭ）などの最先端技術では、この区別がさらに曖昧になっている。ここで説明する実施形態の実装には、特定のタイプのホスト側ストレージ技術又はメモリ技術は不要であり、全てのホストが同じストレージ技術を利用する必要もない。
【００６５】
ハードウェア５１０は、インターネット、企業内ネットワークなどのいずれかの既知の公衆ネットワーク、専用ローカルネットワーク又は広域ネットワークとすることができる１又は２以上のネットワーク６００を介してシステムの様々なコンポーネント間でデータを転送できるように、ネットワーク接続装置５１４などの他の従来の機構を含む。唯一の要件は、どのようなネットワークを使用するとしても、アクセスする必要があるストレージノード（以下を参照）に全てのクライアントがアクセスできることである。従って、「この」ネットワーク６００は、異なるネットワーク間でデータを転送する必要がある場合にはあらゆる必要なスイッチング装置又はその他の通信装置を伴う、実装されたあらゆるネットワークの集合体であると解するべきである。
【００６６】
各ホストは、例えば実装、オペレーティングシステム（ＯＳ）、デバイスドライバなどに応じて、従来のシステムソフトウェア５１５も含む。図示の構成では、ホスト１０２のうちの１つを、通常はシステムハードウェア５１０と（図示の実施形態では）少なくとも１つの仮想マシン（ＶＭ）１０３０−１、．．．１０３０−ｎとの間に何らかの形のハイパーバイザ１０２０又は同様のインターフェイスレイヤを含む仮想化プラットフォームをサポートするものとして示す。周知のように、ＶＭは、実際の物理的コンピュータシステムのソフトウェア抽象概念である。
【００６７】
図５では、簡潔さのみを目的としてＶＭをホスト内に示しているが、ほとんどの実装では、仮想マシンはハイパーバイザ／ハードウェアホスト上で動作する「ゲスト」である。一部の仮想化システムには、ハイパーバイザ又はホストＯＳなどの基本ソフトウェア層へのインターフェイスとして「仮想マシンモニタ」が含まれる。ＶＭｗａｒｅ社のＥＳＸサーバ製品ファミリなどの多くのハイパーバイザは、ホストＯＳと相互作用する必要なく「ベアメタル」上で、すなわちシステムハードウェア５１０上で直接動作する。他の仮想化プラットフォームでは、ハイパーバイザが、ハイパーバイザからの呼び出し時にいくつかの動作をサポートして実行するホストＯＳ上で、又はこのようなホストＯＳと同じレベルで動作することができる。ここで説明する本発明の様々な実施形態は、ＶＭであろうと、（単複の）ハイパーバイザであろうと、又は他の仮想化レイヤであろうと、いずれかの特定の仮想化アーキテクチャに依存しない。実際のところ、ＶＭは全く前提としておらず、むしろ想定されるのは、ソフトウェアエンティティ及びハードウェアエンティティ（「クライアント」）からのデータストレージ読み出し／書き込み要求を処理する何らかのシステムソフトウェア層である。従って、「ホスト」は、後述する分散ストレージ構成に対してデータの書き込み及び／又は読み出しを行いたいと望むことができるプロセス（ＶＭはその特殊な例である）が実行されるいずれかのプラットフォームである。
【００６８】
ストレージプール１６０内の個別のユニットとして示す様々なストレージノード７１０は、異なる物理サーバとすることができるが、アドレス指定のために単一の論理境界に含まれていると考えることができる。しかしながら、アドレス指定可能なストレージプールの論理的概念境界は、図示の物理ストレージノード７１０−１、７１０−２、．．．、７１０−Ｎの組に留まらないストレージコンポーネント及びプロセスを含むこともできる。
【００６９】
所望のＤＶＡ機能に応じて、ノード７１０のいくつかの分散機能及び制御機能を操作してノード７１０に共通する管理データ及びその他のデータなどを維持するプールマネージャ７５０を含めることもできる。このようなプールマネージャは、１又は２以上のストレージノード内、１又は２以上のホスト内、又は同じネットワークに接続された別個のコンピューティングシステム内で動作することができる。プールマネージャは、プールに記憶されている（仮想ディスクなどの）ファイルのファイル名空間の管理、クラスタ管理、及び他のノード管理機能などのための他の管理コンポーネントを含むこともできるが、これらは独立エンティティとして実装することもできる。
【００７０】
ストレージノードを実装するための多くの現在利用可能な考えられる選択肢の例のうちの２つとして、複数のディスクコントローラを含むＸｙｒａｔｅｘシャーシ、或いは集約的入力／出力タスクのための低電力サーバアーキテクチャである単一ディスク「ＦＡＷＮ」（Ｆａｓｔ  Ａｒｒａｙ  ｏｆ  Ｗｉｍｐｙ  Ｎｏｄｅｓ）を挙げることができる。より一般的には、ノードは、いずれかの形態のバス又はネットワーク接続を介して少なくとも１つのディスクと通信するいずれかの形態のコンピュータを用いて実装することができる。実際には、ノード自体を、ストレージプールにデータを書き込むエンティティとすることもできる。
【００７１】
各ノードは、１又は２以上のストレージコントローラ７２０−１、７２０−２、．．．、７２０−Ｎ（まとめて７２０）を含み、これらの各々は、１又は２以上のディスク、フラッシュ又はその他のＳＳＤデバイス、又は（複数の物理装置を含む）永続記憶装置７４０を含むその他のデバイスを制御する従来の処理回路を含む。コントローラは、ネットワーク６００に接続するために必要な回路も含む。いくつかの実施形態では、単一の複合モジュールにおいてコントローラを記憶装置と一体化することもできる。ホスト１０２と同様に、ストレージプール１６０のノード内で使用される様々なソフトウェアコンポーネントは、プール内の各ハードウェアプラットフォーム上の（単複の）プロセッサ上で実行できるようにいずれかの従来の方法でロード及び／又は記憶され、これらの媒体及びプロセッサは、簡潔にするために図には別個に示していないが、当業者であれば当然ながらこれらの存在を理解するであろう。これまでに説明したシステムコンポーネントは、多くの先行技術のシステムにも見られるものである。
【００７２】
好ましい実施形態では、コントローラ７２０のうちの少なくとも１つが、新たに書き込まれたデータを非常に低いレイテンシで受け取って永続的に記憶する何らかの不揮発性メモリ７３０（ＮＶＲＡＭ−図６）も含み、又はこのメモリにアクセスすることができる。いくつかのシステムでは、ＮＶＲＡＭが、ＰＣＩｅスロット内の特殊なカード上に存在することができる。いくつかの実装では、コントローラがバッテリバックアップを有することができ、停電時には、コントローラがシステムメモリの一部をフラッシュドライブにコピーするのに十分な時間を有する。この場合、ＮＶＲＡＭ７３０は、別個の物理コンポーネントである必要はなく、代わりに他の標準的な目的でコントローラ内に存在する汎用ＲＡＭの論理部分とすることができる。いくつかのシステムでは、ＮＶＲＡＭを単に低レイテンシのＳＳＤとすることができる。本発明の実施形態の全ての実装においてノードがディスクとＮＶＲＡＭの両方を有する必要はなく、むしろいずれかの所与のノードを、これらの２つのタイプの永続記憶装置の一方のみを有し、又は少なくとも一方にアクセスできるように構成することができる。従って、図５に示すように、１又は２以上のノード（例えば、ノード７１０−１）が永続記憶装置と不揮発性メモリの両方を有し、１又は２以上の他のノード（例えば、ノード７１０−２）が永続記憶装置を含まず、さらに他の（単複の）ノードが不揮発性メモリコンポーネント７３０を全く有さないようにシステムを実装することができる。また、やはり図５のノード７１０−Ｎに示すように、１又は２以上のノードが複数の永続記憶装置（７４０−Ｎ）を有することもできる。さらに、いくつかの実施形態では、ＮＶＲＡＭがホスト内に存在することもできる。
【００７３】
好ましい実施形態では、ホストが、ネットワークを介して永続記憶装置にではなくストレージノード又はホスト内のＮＶＲＡＭに特別にデータを書き込むとともに、このＮＶＲＡＭからデータを削除するコマンドを与えることもできる。この点は、永続記憶装置に向かっているデータにとってＮＶＲＡＭが透過的なバッファである従来のストレージシステムの構成とは大きく異なる。
【００７４】
上述したように、２つの主なストレージフィロソフィは、トレードオフ領域のほぼ両極端に収まる。ハイパーコンバージドシステムでは、実質的に全ての記憶負荷及び計算負荷が相互依存ホスト内に集中するのに対し、他のシステムでは、計算負荷のほとんどがリモートストレージユニット自体に置かれて、ホストが互いに直接的に依存しない。本発明の実施形態が採用する異なる方法では、通常は大きなホストの計算リソースが多くのストレージ関連機能のために、ただしホスト間の顕著な通信及び調整を必要としない形で使用され、メインストレージ能力が主にリモートノードに留まり、あらゆるホストが別のホストを介さずにリモートノードにアクセスすることができる。
【００７５】
この目的のために、ホスト及びノードは、システムソフトウェアレベルにおけるＤＶＡｈ８０５モジュールと、ノードにおけるＤＶＡｎ８２５というそれぞれのＤＶＡコンポーネントを含む。ＤＶＡｈ８０５は、図５に重ね合わせによって示すように、システムソフトウェア５１５の一部として、仮想化プラットフォームの（ハイパーバイザ１０２０などの）制御ソフトウェアの一部として、又はこれらの両方の協働コンポーネントとして実装することができる。選択肢としては、ＤＶＡｈコンポーネントをシステムソフトウェア５１５内又はハイパーバイザ１０２０内のドライバとして構成し、必要に応じてホストオペレーティングシステム（システムソフトウェア）に呼び掛けることが挙げられる。ＤＶＡｈ８０５コンポーネントは、異なるユーザレベルプロセス又はシステムレベルプロセス内に、或いは「ヘルパー」ＶＭ内に構成することもできる。一般に、ＤＶＡｈ及びＤＶＡｎは、その構成に関わらず、非一時的ストレージに記憶されメモリにロードされてホストＣＰＵ５１１によって実行されるプロセッサ実行可能コードの対応部分として実装される。
【００７６】
同様に、ノード内のＤＶＡｎ８２５コンポーネントは、それぞれのストレージコントローラ７２０上で実行されるソフトウェアとして、又はストレージコントローラから分離しているがストレージコントローラと協働するソフトウェアモジュールとして実装することもでき、非一時的ストレージに記憶されメモリにロードされてノード７１０内の（単複の）プロセッサによって実行されるプロセッサ実行可能コードの対応部分としても実装される。
【００７７】
ある実施形態では、ストレージコントローラ７２０が、ホスト上に存在するＤＶＡｈ８０５に暗号鍵を配布することによってデータ暗号化を管理する。安全性を維持するために、ホストによって使用される暗号鍵は定期的に循環させることができる。ストレージコントローラ７２０は、異なるホストが異なる時点でデータ暗号化のために使用できる複数の暗号鍵を含む暗号化テーブルを維持する。ある実施形態では、この暗号化テーブルが、暗号鍵値と、暗号鍵値を識別するために使用される暗号化インデックス値とを指定する列を含む。ストレージコントローラ７２０は、特定のホスト上のＤＶＡｈ８０５に暗号化値を送信する際に、暗号鍵値と暗号化インデックス値とを送信する。暗号化テーブルは、暗号鍵に関連する暗号化アルゴリズムを指定する列を含むこともできる。ストレージコントローラ７２０は、暗号化テーブル内に暗号化アルゴリズムを記憶することによって異なるタイプの暗号化アルゴリズムをサポートすることができ、暗号鍵値と、暗号化アルゴリズムタイプと、暗号化インデックス値とを単純にＤＶＡｈ８０５に送信することによって、データの暗号化に使用される暗号化アルゴリズムのタイプの変更を可能にすることができる。ある実施形態では、ＤＶＡｈ８０５内の１又は２以上のモジュールが、ストレージコントローラ７２０から暗号鍵値を受け取ることによってデータの暗号化を管理するように構成される。
【００７８】
少なくとも１つのホストには、好ましくは（単複の）メモリ／ストレージコンポーネント５１２の一部としてキャッシュ５１３を含めることが好ましい。キャッシュは、１又は２以上のフラッシュメモリデバイス、相変化ランダムアクセスメモリ（ＰＲＡＭ）、メインシステムメモリの一部などを使用することなどのいずれかの従来の十分に高速な技術を用いて実装することができる。キャッシュは、個別にパッケージ化された固体ディスク（ＳＳＤ）、サーバ内のバスにプラグ接続された回路カード、サーバマザーボード上のモジュールなどとして実装することもできる。
【００７９】
図６は、図５に示す主要システムコンポーネントの簡略表現であるが、ＤＶＡモジュールの様々な任意のサブコンポーネントのさらなる詳細を含む。１つのホストと１つのノードしか示していないが、他のホスト／ノードにも同様のサブコンポーネントを含めることができる。なお、全てのホスト又はノードが図６に示すものと同じＤＶＡサブコンポーネントを含む必要はなく、いずれかの所与の実装ニーズに応じて、図示のサブコンポーネントのうちのいずれかの数（１つ〜全部）をいずれかの所与のホストにあらゆる所望の組み合わせで含めることができる。従って、図６に示すＤＶＡサブコンポーネントの組は、例示及び説明を目的とするものにすぎない。さらに、図６には、様々なサブコンポーネントを別個のものとして示しているが、これは例示及び説明を目的とするものにすぎず、これらの一部又は全部を単一の実行可能コード部分に組み合わせることもできる。
【００８０】
ＤＶＡサブコンポーネント及びその機能は、バックグラウンドストレージ管理機能、データ変換機能及び／又は以下で概説するその他の機能を含む様々なストレージ処理機能の一部又は全部を実行する。なお、従来のストレージシステムでは、通常、これらの機能はストレージコントローラ内で実行され、ホストでは実行されない。ＤＶＡｈサブコンポーネントは、以下を優先的に含む。
【００８１】
既知の技術を用いてキャッシュ５１３に対する読み出し及び書き込みを操作するキャッシュマネージャ１０１３。１つの実施形態では、キャッシュが、ブロックのフィンガープリントに基づいてキャッシュ内のブロックを発見できるようにフィンガープリント化されたデータブロックを含む。
【００８２】
ホスト上のＶＭ（或いは仮想化された又はされていない他のプロセス）からデータを受け取り、ストレージプール１６０に記憶できるように設計されたいずれかのフォーマットにデータを処理するファイルマネージャコンポーネント１０３０。ファイルマネージャコンポーネント５３０は、データを読み出すための要求を受け取り、キャッシュ又はプールからデータを検索して処理し、元々記憶されていたフォーマットに戻して要求データを返送する。ファイルマネージャは、データのキャッシュ、処理、記憶又は検索を行うのに役立つ他のコンポーネントを呼び出すこともできる。
【００８３】
ファイルマネージャ１０３０は、ファイルオフセットからストレージプール１６０に記憶されている対応するデータ項目への参照にマップを更新するマッピングモジュール１０２４を呼び出すことができる。いくつかの実施形態では、このデータ項目参照が、データ項目を含むブロックのフィンガープリントを含む。いくつかの実施形態では、ホストがフィンガープリントを計算する。いくつかの実施形態では、データ項目参照が、データ項目のロケータを含む。ファイルマネージャは、ファイル内の何らかのオフセットのための読み出し要求を満たすために、マッピングモジュール１０２４を呼び出して、ファイル内のそのオフセットについて記憶されているデータ項目への参照を取得する。その後、ファイルマネージャは、この参照を用いてキャッシュからデータ項目を検索し、或いはそこにデータ項目が存在しない場合には、プールからデータ項目を検索することができる。
【００８４】
周知のように、仮想マシンのストレージシステムも仮想化される。従って、ＶＭ上で実行中のプロセスは、物理ストレージであると「思っている」が実際には「仮想ディスク」（ｖＤｉｓｋ）内の仮想アドレスであるものをアドレス指定した後に、対応するアドレスマップを用いて１又は２以上のレベルのアドレスリダイレクトを行って、最終的に物理空間内のアドレスに至る。分散ストレージシステムの文脈では、ＶＭの読み出し及び書き込みが、最終的にストレージプール１６０内の１つの（又は、例えばデータがミラーリングされている場合には複数の）物理記憶装置内の対応するアドレスにマッピングされる。
【００８５】
好ましくは、圧縮、暗号化、データの完全性を保証するためのチェックサム、抹消符号化されたストライプへの受信データの圧縮、例えばＲＡＩＤストライプの一部としての誤り訂正符号（ＥＣＣ）値の計算、及び／又はフィンガープリント、すなわち受信データブロックの一意の識別情報の計算などの、既知のデータ変換機能の一部又は全部を実行するデータ処理コンポーネントである処理エンジン１０２０が含まれる。考えられるフィンガープリント技術の１つの例に、いずれかのＳＨＡ法（例えば、ＳＨＡ−１）などを使用するハッシュがある。選択したフィンガープリント法に十分に衝突耐性がある（すなわち、２つの異なる入力が同じフィンガープリント出力を生じる確率が十分に低い）と仮定すれば、同じフィンガープリントを有する異なるデータブロックを、同じコンテンツを有するもの、従って重複するものと推測することができる。
【００８６】
１つの実施形態では、到着データがフィンガープリント化され、到着ブロックのフィンガープリントをキャッシュ５１３内に、すなわちホスト１０２内に記憶されているブロックのフィンガープリントと比較することによって重複排除されることにより、ストレージプール１６０に記憶されているデータを分析して重複排除する必要性が避けられる。この構成では、通常はさらに強力なホストにおいてこれらの計算集約型タスクを実行できるだけでなく、ホストが最初にリモートストレージノード７１０からフィンガープリントを検索する必要があった場合に被ったはずの大部分のレイテンシも避けられる。
【００８７】
フィンガープリント化されたブロックのキャッシュは、読み出し要求に応答してプールからデータブロックをフェッチするレイテンシを避けることもできる。２つの異なるファイルの各々が、同じコンテンツ、従って同じフィンガープリントを有するブロックを含むこともある。この重複ブロックは、１つのファイルの読み出し要求又は書き込み要求を満たすようにキャッシュ５１３に挿入しておくことができ、その後の別のファイル内の重複ブロックの読み出し要求は、プールからブロックをフェッチするレイテンシを伴うことなくキャッシュから満たすことができる。
【００８８】
フィンガープリント化又はチェックサムを用いてデータの完全性を保証し、不完全な書き込みを検出することもできる。例えば、バッファデータについてフィンガープリントを計算することができる。潜在的なホスト障害及び不完全な書き込みのいずれかの兆候がある場合には、現在のデータのフィンガープリントをバッファデータのフィンガープリントと比較することができ、値が同じでなければ、システムは、バッファデータと記憶対象のデータとが同一でないので書き込みが不完全であったと分かる。
【００８９】
ログ構造ファイルシステムを使用するＤＶＡには、実施形態によってはコピーフォワードすべきデータを識別し、実施形態によってはこのようなデータを新たなストライプにコピーすることを含む、従来のガベージコレクション機能を実行するガベージコレクションモジュール１０２２を含めることができる。
【００９０】
ストライプを用いてデータを記憶するシステムには、ストライプマネージャ１０２３を含めることができる。ストライプマネージャは、設計者が選択して実装するどのようなマッピングスキーム又は割り当てスキームにも従って複数のストレージノードにわたって分配したストライプに追加するＥＣＣ値を計算するＥＣＣエンジン１０３２を使用し、又は含めることができる。
【００９１】
ホストには、（例えば、ＥＣＣ情報から失われたＲＡＩＤストライプ要素の）データ再構成、データリバランシング又はデータスクラビングなどの機能を実行してデータの完全性を保証するモジュール１０２６を含めることもできる。このモジュール、或いは１又は２以上の他のホストモジュールは、ホストのフラッシュキャッシュ内にデータをプリフェッチし、データクランプを形成してその細粒度で重複排除を行い、その後にこのようなクランプをリパックし、ホストフラッシュ障害を処理し、ホスト上のｖＤｉｓｋマップを更新することなどの動作を実行することもできる。
【００９２】
ＤＶＡｎサブコンポーネントは、以下を含むことができる。
【００９３】
フィンガープリントからデータブロックロケータ又はその他の識別子へのマッピングを行うフィンガープリントインデックス１０２１。ホストは、フィンガープリント化されたデータブロックをストライプに記憶してストライプをプールに書き込む際に、フィンガープリントと対応するデータブロックロケータとをフィンガープリントインデックスに伝える。ホストは、フィンガープリント化されたブロックをプールから読み出す必要がある時には、まずインデックスにブロックロケータを要求した後にプールからブロックを読み出す。インデックス１０２１は、ホスト内に実装することもできるが、インデックスのサイズは記憶容量に比例し、一般的にはインデックスのためのメモリをその対応するストレージユニットとバンドルすることが最も効率的であると思われるので、コントローラ７２０に実装されることが好ましい。
【００９４】
最近書き込まれたデータ及びその他のイベントをホスト上のロギングモジュール１０２５から受け取ってこれらのデータを不揮発性の低レイテンシＮＶＲＡＭモジュール７３０に記憶するログ７２５。図６には、ＮＶＲＡＭモジュール７３０がノード７１０の内部に存在するように示しているが、これは１つの実装例にすぎない。他の可能性としては、ＮＶＲＡＭモジュール７３０を異なる専用ノード内又は他のいずれかの場所に配置することが挙げられる。最近書き込まれたデータをＮＶＲＡＭにログとして又は別様に記憶することにより、ディスクドライブなどの高レイテンシ装置７４０に書き込むレイテンシを伴うことなく、書き込みを「安全」なものとして承認することができる。ログ７２５を含むホスト外にこのようなデータを記憶することにより、記憶装置７４０のうちの１つの永続的な位置にデータを記憶する前にホストに障害が生じた場合に、（ストレージノードのうちの１つ、障害が生じていないホストのうちの１つ、又は最初にデータを受け取ったホスト以外の他のいずれかのエンティティなどの）別のエンティティが不揮発性デバイス７３０からデータを読み出し、再処理して記憶装置７４０のうちの１つに記憶することができる。これは、現在障害が生じているホストを介してしかアクセスできないホスト内部のキャッシュ５１３に唯一のデータコピーが記憶されていた場合には不可能である。
【００９５】
ＮＶＲＡＭモジュール７３０を含み、ＬＯＧ７２５などのインターフェイスを介してこれをホストに公開するもう１つの利点は、ホストがストレージノード上のＮＶＲＡＭにデータを書き込むことによってデータを「安全」にして素早い承認を可能にし、その後、例えばストライプを形成するのに十分な量のデータがバッチ処理された後などに、場合によっては遅れたさらなる記憶処理のために自機の計算リソースを利用できる点である。いくつかの実施形態では、ホストによるさらなる記憶処理が行われない限り、ＮＶＲＡＭに書き込まれたデータの一部が決して永続記憶装置に書き込まれないようにすることができる。いくつかの実施形態では、複数のＮＶＲＡＭデバイスにデータを書き込んで、これらのＮＶＲＡＭデバイスのうちの１つ、又はその接続先のコントローラの障害から保護することができる。ホスト自体が複数のＮＶＲＡＭデバイスに書き込みを行うことも、或いはコントローラが、ホストの単一の書き込みを同じノード又は異なるノードにおける複数のＮＶＲＡＭデバイスに、又は他の複数のコントローラとこれらのＮＶＲＡＭデバイスとにミラーリングすることもできる。
【００９６】
一例として、ＶＭが少なくとも１つの仮想化ディスクｖＤｉｓｋ又はファイルにデータの書き込みを望んでいると仮定する。ＶＭがゲストであるホストに障害が生じた場合には、新たに書き込まれたデータのコピーが、何らかのストレージノード上のログ又はＮＶＲＡＭに残る。書き込みデータは、場合によっては書き込みのログデータを保持していなかった１又は２以上のストレージノードを含むプールにデータが書き込まれる前に、（例えば、ＲＡＩＤ様のシステムでは）フルストライプなどの何らかの最小記憶単位を満たすのに十分なデータが存在するまでファイルマネージャにバッファ処理し、又はＶＭホストのキャッシュ５１３に記憶しておくこともできる。新たな書き込みデータを、後でｖＤｉｓｋ内の同じ場所に上書きするための時間を与えるようにさらに長い期間にわたってＶＭホスト上にバッファ処理することにより、ストライプ内の上書きデータを書き出す必要性を排除することもできる。ＤＶＡｈコンポーネントの一部、又はオペレーティングシステム内などにおける他の何らかのホストエンティティとしてのホストは、少なくとも１つの抹消符号化ブロックを書き込み単位について計算し、これをストレージノードに書き込むこともできる。
【００９７】
動作がＲＥＡＤ（読み出し）である場合には、キャッシュ５１３内で所望のデータを検索することができる。データがキャッシュされている場合には、このデータをキャッシュから読み出してＶＭなどの要求元プロセスに戻すことができる。データがキャッシュされていない場合には、（いずれかの中間アドレスマップを用いて）ストレージノードから直接データを読み出して要求元プロセスに戻すことができる。ＲＥＡＤデータをキャッシュに書き込むこともできる。
【００９８】
管理及び計算負荷をホストに集中させることにより、ストレージノードを比較的単純かつ安価に保ってストレージ側の専用バックプレーン及びファイバーチャネル接続を不要にし、さらにはストレージ側全体が標準的なネットワーク接続を介してホストと直接通信できるようにすることができる。さらに、ホストがプールとの間で互いにまれにしか通信しない場合には、１つのホストが別のホスト上のノイジーネイバー（ｎｏｉｓｙ  ｎｅｉｇｈｂｏｒ）に煩わされることがない。最後に、ホストは、大きなキャッシュを含む場合にはプール内のノードにもまれに接触すればよく、これによってノイジーネイバー問題がさらに抑えられる。ホストは、ＶＭ及びＶＭ内で実行中のアプリケーションにデータを供給する権限を有し、従ってシステム内の他の場所の性能問題に影響されにくい。
【００９９】
なお、本明細書に開示する様々な機能又はプロセスは、様々な不揮発性コンピュータ可読媒体に具体化されるデータ及び／又は命令として説明することができ、ＤＶＡシステムの実施形態を実装したいと望む人々にコンピュータプログラム製品として提供することができる。
【０１００】
図７に、書き込み要求を処理する１つの実装を示す。書き込み要求が受け取られると、この要求がノード上のＮＶＲＡＭモジュール７３０にロギングされる。書き込みのロギングは、書き込み中のファイルの指示とファイル内のオフセットとを含む。書き込みデータ自体は書き込みバッファに書き込まれ、要求が承認される。書き込みバッファが処理を引き起こすほど十分に、例えばブロックを形成するほど十分に満杯でなければ、処理はさらなる書き込み要求の受け取りに戻り、満杯であれば、書き込まれたデータをブロックに形成して（データセット全体に１つのフィンガープリントを使用するか、それともブロック毎に別個のフィンガープリントを使用するかに応じて）１又は２以上のフィンガープリントを計算することができる。ブロックデータは、フィンガープリントの計算前、計算後又は計算と同時に、圧縮、暗号化などによって処理することもできる。ホストキャッシュ内に既に所与のブロックが存在する場合（これはフィンガープリントの比較によって判断することができる）には、ブロックへの参照でファイルマップを更新し、処理はさらなる書き込みの受け取りに戻ることができる。ホストキャッシュ又はグローバルフィンガープリントインデックス１０２１内でブロックのフィンガープリントが見つからない場合には、このブロックを現在構築中のストライプに追加する。ストライプが未だ不完全である場合、システムは、さらなる書き込み要求の受け取りに戻ることができる。現在のストライプが完全である場合、このストライプのＥＣＣストライプ要素を計算し、配布して記憶することができる。その後、ストライプ内のブロックのフィンガープリントをグローバルフィンガープリントインデックス１０２１に追加する。この時、ブロックをキャッシュにも追加し、その後にファイルマップを更新して、ストライプに記憶されたブロックが参照されるようにすることもできる。この時点で、ホストに障害が生じても書き込みデータは安全であり、従ってもはやＮＶＲＡＭ内の一時的なデータコピーは不要である。従って、ホストは、例えばロギングモジュール１０２５を使用して、データを切り捨ててＮＶＲＡＭから削除できる旨をログ７２５に伝えることができる。なお、ＮＶＲＡＭに一時的に記憶されているデータをコントローラ自体がさらに永続的な位置に書き換える必要はない。最後に、処理は、さらなる書き込みの受け取りに戻る。他の実施形態では、ＤＶＡｈコンポーネントが、フィンガープリントを計算し、そのフィンガープリントがホストキャッシュ及び／又はグローバルフィンガープリントインデックス内に存在するかをチェックし、対応するファイル及びファイル内のオフセットについて、データ自体ではなくそれまでに記憶されているデータへの新たな参照のみをリモートＮＶＲＡＭにロギングした後で書き込みを承認する。
【０１０１】
図８に、書き込み要求を処理する別の実装を示す。書き込み要求が受け取られると、この要求がノード上のＮＶＲＡＭモジュール７３０にロギングされて要求が承認される。書き込みのロギングは、書き込み中のファイルの指示とファイル内のオフセットとのロギングを含む。書き込みデータがデータブロックを完全にカバーしていない場合には、ブロックの残り部分をホストキャッシュ及び／又はプールから読み出し、書き込みデータと融合して書き込みブロックを形成することができる。ブロックは、ＮＶＲＡＭモジュール７３０にロギングする前に、圧縮、暗号化などによって処理することができる。未処理のブロックについてもフィンガープリントを計算して、重複排除を可能にすることができる。ホストキャッシュ内に既に所与のブロックが存在する場合（これはフィンガープリントの比較によって判断することができる）には、ブロックへの参照でファイルマップを更新し、処理はさらなる書き込みの受け取りに戻ることができる。ホストキャッシュ又はグローバルフィンガープリントインデックス１０２１内でブロックのフィンガープリントが見つからない場合には、このブロックを現在構築中のストライプに追加する。ストライプが未だ不完全である場合、システムは、さらなる書き込み要求の受け取りに戻ることができる。現在のストライプが完全である場合、このストライプのＥＣＣストライプ要素を計算し、配布して記憶することができる。その後、ストライプ内のブロックのフィンガープリントをグローバルフィンガープリントインデックス１０２１に追加する。この時、ブロックをキャッシュにも追加し、その後にファイルマップを更新して、ストライプに記憶されたブロックが参照されるようにすることもできる。この時点で、ホストに障害が生じても書き込みデータは安全であり、従ってもはやＮＶＲＡＭ内の一時的なデータコピーは不要である。従って、ホストは、例えばロギングモジュール１０２５を使用して、データを切り捨ててＮＶＲＡＭから削除できる旨をログ７２５に伝えることができる。最後に、処理は、さらなる書き込みの受け取りに戻る。
【０１０２】
図８に、読み出し要求を処理する１つの実装を示す。読み出し要求が受け取られ、要求されたオフセットをもたらすデータを含むブロックへの参照をファイルマップモジュールから検索する。参照されるブロックがキャッシュ５１３内に存在する場合には、このブロックを検索し、データを戻して読み出し要求を満たすことができる。ブロックがキャッシュ内に存在しない場合には、ブロックをプールから検索しなければならない。この検索は、フィンガープリントインデックスからブロックロケータを検索することによって行うことができる。ブロックが検索されると、そのブロックをキャッシュに追加して、要求されたデータを戻すことができる。
【０１０３】
ハードウェアの概要
１つの実施形態によれば、本明細書で説明する技術が、１又は２以上の専用コンピュータ装置によって実装される。この専用コンピュータ装置は、これらの技術を実行するためのハードウェア組み込み型とすることもでき、或いはこれらの技術を実行するように永続的にプログラムされた１又は２以上の特定用途向け集積回路（ＡＳＩＣ）又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）などのデジタル電子装置を含むこともでき、或いはファームウェア、メモリ、その他の記憶装置、又はこれらの組み合わせに含まれるプログラム命令に従ってこれらの技術を実行するようにプログラムされた１又は２以上の汎用ハードウェアプロセッサを含むこともできる。このような専用コンピュータ装置は、カスタムハードワイヤードロジック、ＡＳＩＣ又はＦＰＧＡと、これらの技術を実現するためのカスタムプログラミングとを組み合わせることもできる。この専用コンピュータ装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、ハンドヘルド装置、ネットワーク装置、又はこれらの技術を実装するためのハードワイヤードロジック及び／又はプログラムロジックを組み込んだ他のいずれかの装置とすることもできる。
【０１０４】
例えば、図９は、実施形態を実装できるコンピュータシステム９００を示すブロック図である。コンピュータシステム９００は、情報を通信するためのバス９０２又はその他の通信機構、及びバス９０２に結合された、情報を処理するためのハードウェアプロセッサ９０４を含む。ハードウェアプロセッサ９０４は、例えば汎用マイクロプロセッサとすることができる。
【０１０５】
コンピュータシステム９００は、バス９０２に結合された、情報とプロセッサ９０４が実行すべき命令とを記憶するランダムアクセスメモリ（ＲＡＭ）又はその他の動的記憶装置などのメインメモリ９０６も含む。メインメモリ９０６は、プロセッサ９０４が実行すべき命令の実行中に一時的変数又はその他の中間情報を記憶するために使用することもできる。このような命令は、プロセッサ９０４がアクセスできる非一時的記憶媒体に記憶された時に、コンピュータシステム９００を、命令内で指示される動作を実行するようにカスタマイズされた専用機械の状態にする。
【０１０６】
コンピュータシステム９００は、バス９０２に結合された、静的情報とプロセッサ９０４のための命令とを記憶するリードオンリメモリ（ＲＯＭ）９０８又はその他の静的記憶装置をさらに含む。情報及び命令を記憶するための磁気ディスク、光学ディスク又は固体ディスクなどの記憶装置９１０も設けられ、バス９０２に結合される。
【０１０７】
コンピュータシステム９００は、バス９０２を介して、コンピュータユーザに情報を表示するブラウン管（ＣＲＴ）などのディスプレイ９１２に結合することができる。バス９０２には、プロセッサ９０４に情報及びコマンド選択を伝える英数字キー及びその他のキーを含む入力装置９１４も結合される。別のタイプのユーザ入力装置には、プロセッサ９０４に方向情報及びコマンド選択を伝えてディスプレイ９１２上のカーソルの動きを制御するマウス、トラックボール又はカーソル方向キーなどのカーソル制御９１６がある。通常、この入力装置は、装置が平面内の位置を特定できるようにする第１の軸（例えば、ｘ）及び第２の軸（例えば、ｙ）という２つの軸における２つの自由度を有する。
【０１０８】
コンピュータシステム９００は、カスタマイズされたハードワイヤードロジック、１又は２以上のＡＳＩＣ又はＦＰＧＡ、ファームウェア、及び／又はコンピュータシステムと組み合わせてコンピュータシステム９００を専用機械にする、又はそのようにプログラムするプログラム論理を用いて、本明細書で説明した技術を実装することができる。１つの実施形態によれば、本明細書の技術が、メインメモリ９０６に含まれる１又は２以上の命令の１又は２以上のシーケンスをプロセッサ９０４が実行したことに応答してコンピュータシステム９００によって実行される。このような命令は、記憶装置９１０などの別の記憶媒体からメインメモリ９０６に読み込むことができる。プロセッサ９０４は、メインメモリ９０６に含まれる命令シーケンスを実行することにより、本明細書で説明した処理ステップを実行するようになる。別の実施形態では、ソフトウェア命令の代わりに又はこれと組み合わせてハードワイヤード回路を使用することができる。
【０１０９】
本明細書で使用する「記憶媒体」という用語は、データ及び／又は特定の方法で機械を動作させる命令を記憶するあらゆる非一時的媒体を意味する。このような記憶媒体は、不揮発性媒体及び／又は揮発性媒体を含むことができる。不揮発性媒体は、例えば記憶装置９１０などの光学ディスク、磁気ディスク又は固体ドライブを含む。揮発性媒体は、メインメモリ９０６などの動的メモリを含む。一般的な記憶媒体としては、例えば、フロッピーディスク、フレキシブルディスク、ハードディスク、固体ドライブ、磁気テープ、又は他のあらゆる磁気データ記憶媒体、ＣＤ−ＲＯＭ、他のあらゆる光学データ記憶媒体、穴パターンを有するあらゆる物理媒体、ＲＡＭ、ＰＲＯＭ、及びＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、他のあらゆるメモリチップ又はカートリッジが挙げられる。
【０１１０】
記憶媒体は送信媒体とは異なるが、送信媒体と共に使用することもできる。送信媒体は、記憶媒体間の情報の転送に関与する。例えば、送信媒体としては、バス９０２を構成する配線を含む、同軸ケーブル、銅線及び光ファイバが挙げられる。送信媒体は、電波及び赤外線によるデータ通信中に生成されるような音波又は光波の形をとることもできる。
【０１１１】
実行のためにプロセッサ９０４に１又は２以上の命令の１又は２以上のシーケンスを搬送することには、様々な形の媒体が関与することができる。例えば、最初にリモートコンピュータの磁気ディスク又は固体ドライブ上で命令を搬送することができる。リモートコンピュータは、その動的メモリにこれらの命令をロードし、モデムを用いて電話回線を介してこの命令を送信することができる。コンピュータシステム９００のローカルモデムは、電話回線上でデータを受け取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。この赤外線信号において搬送されるデータを赤外線検出器が受け取り、適切な回路がこのデータをバス９０２上に配置することができる。バス９０２は、このデータをメインメモリ７０６に搬送し、ここからプロセッサ９０４が命令を取り出して実行する。任意に、メインメモリ９０６が受け取った命令は、プロセッサ９０４による実行前又は実行後に記憶装置９１０に記憶することもできる。
【０１１２】
コンピュータシステム９００は、バス９０２に結合された通信インターフェイス９１８も含む。通信インターフェイス９１８は、ローカルネットワーク９２２に接続されたネットワークリンク９２０に結合して双方向データ通信を提供する。例えば、通信インターフェイス９１８は、総合デジタル通信網（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、又は対応するタイプの電話回線へのデータ通信接続を提供するモデムとすることができる。別の例として、通信インターフェイス９１８を、互換性のあるＬＡＮにデータ通信接続を提供するローカルエリアネットワーク（ＬＡＮ）カードとすることもできる。無線リンクを実装することもできる。このようなあらゆる実装では、通信インターフェイス９１８が、様々なタイプの情報を表すデジタルデータストリームを搬送する電気信号、電磁信号又は光信号を送受け取る。
【０１１３】
通常、ネットワークリンク９２０は、１又は２以上のネットワークを介して他のデータ装置にデータ通信を提供する。例えば、ネットワークリンク９２０は、ローカルネットワーク９２２を介したホストコンピュータ９２４への、又はインターネットサービスプロバイダ（ＩＳＰ）９２６によって動作するデータ設備への接続を提供することができる。さらに、ＩＳＰ９２６は、今では一般的に「インターネット」９２８と呼ばれるワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク９２２及びインターネット９２８は、いずれもデジタルデータストリームを搬送する電気信号、電磁信号又は光信号を使用する。コンピュータシステム９００との間でデジタルデータを搬送する、様々なネットワークを介した信号及びネットワークリンク９２０上の通信インターフェイス９１８を介した信号は、送信媒体の形態例である。
【０１１４】
コンピュータシステム９００は、（単複の）ネットワーク、ネットワークリンク９２０及び通信インターフェイス９１８を介してメッセージを送信し、プログラムコードを含むデータを受け取ることができる。インターネットの例では、サーバ９３０が、インターネット９２８、ＩＳＰ９２６、ローカルネットワーク９２２及び通信インターフェイス９１８を介して、アプリケーションプログラムのための要求されたコードを送信することができる。
【０１１５】
プロセッサ９０４は、この受け取ったコードを受信時に実行することも、及び／又は後で実行できるように記憶装置９１０又はその他の不揮発性記憶装置に記憶することもできる。
【０１１６】
上述した明細書では、実装によって異なり得る数多くの特定の詳細を参照しながら本発明の実施形態を説明した。従って、明細書及び図面については、限定的な意味ではなく例示的な意味でとらえるべきである。本発明の範囲、及び出願人が発明の範囲として意図するものを示す唯一かつ排他的なものは、本出願から特定の形で生じる一連の請求項の逐語的及び等価的範囲であり、これにはあらゆる今後の補正が含まれる。
【図１】
2018181325.tif 000003
【図２】
2018181325.tif 000004
【図３】
2018181325.tif 000005
【図４】
2018181325.tif 000006
【図５】
2018181325.tif 000007
【図６】
2018181325.tif 000008
【図７】
2018181325.tif 000009
【図８】
2018181325.tif 000010
【図９】
2018181325.tif 000011
【手続補正書】
【提出日】平成30年4月17日(2018.4.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
特定のストレージノード上の複数のネットワークインターフェイスの各ネットワークインターフェイスから、１又は２以上のホストマシンの各ホストマシンにストレージノードメッセージを送信するステップを含み、
前記特定のストレージノードは、前記１又は２以上のホストマシンが前記複数のネットワークインターフェイスのうちのいずれか１つを通じてアクセスできる１又は２以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記１又は２以上のホストマシンのうちの少なくとも１つのホストマシンからホストメッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記ホストメッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の接続性情報を判定するステップと、
前記複数のネットワークインターフェイスのうちの前記接続性情報に基づいて選択されたターゲットネットワークインターフェイスにおいて、前記１又は２以上の記憶装置に記憶されているデータを求める要求を前記１又は２以上のホストマシンのうちの特定のホストマシンから受け取るステップと、
をさらに含む、ことを特徴とする方法。
【請求項２】
前記１又は２以上のホストマシンは、各々がホストメッセージの送信とストレージノードメッセージの受信とを行うことができる１又は２以上のホストネットワークインターフェイスを含む、
請求項１に記載の方法。
【請求項３】
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記ホストメッセージとから判定された前記接続性情報を含む接続性マップを生成するステップをさらに含み、
前記接続性マップは、前記特定のホストマシンから応答メッセージが受け取られることなく前記特定のネットワークインターフェイスから前記特定のホストマシンに特定の数のストレージノードメッセージが送信された場合、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスと前記１又は２以上のホストマシンのうちの特定のホストマシンとの間の接続性が停止中である旨を示す接続性情報を含む、
請求項１に記載の方法。
【請求項４】
前記特定のストレージノードが、前記接続性マップに基づいて特定の時間にわたって停止していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの停止中の接続経路についてのブラックリストを生成するステップと、
前記特定のストレージノードが、前記停止中の接続経路についてのブラックリストを前記１又は２以上のホストマシンに送信するステップと、
をさらに含む、請求項３に記載の方法。
【請求項５】
前記特定のストレージノードが、前記接続性マップに基づいて特定の時間にわたって作動していると判定されたネットワークインターフェイスとホストマシンとのペアの組を含む、ネットワークインターフェイスとホストマシンとのペアの作動中の接続経路についてのホワイトリストを生成するステップと、
前記特定のストレージノードが、前記作動中の接続経路についてのホワイトリストを前記１又は２以上のホストマシンに送信するステップと、
をさらに含む、請求項３に記載の方法。
【請求項６】
前記接続性マップにおける前記接続性情報は、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の、特定のテストメッセージの送信と特定の応答メッセージの受信との間の期間に基づくレイテンシ情報を含む、
請求項３に記載の方法。
【請求項７】
前記ストレージノードメッセージは、前記１又は２以上のホストマシンの各ホストマシンと前記複数のネットワークインターフェイスの各ネットワークインターフェイスとの間の接続性が大容量データパケットを送信できるものであるかどうかを判定するために使用される大容量テストメッセージである、
請求項３に記載の方法。
【請求項８】
前記特定のストレージノードが、前記接続性マップに基づいて、前記複数のネットワークインターフェイスのうちの特定のネットワークインターフェイスに関連するマップ公開インターフェイスを生成するステップと、
前記特定のストレージノードが、前記マップ公開インターフェイス内の関連する物理アドレスにフローティングＩＰアドレスを関連付けるステップと、
を含み、前記フローティングＩＰアドレスにおける前記マップ公開インターフェイスは、前記１又は２以上のホストマシンから前記接続性情報を求める要求を受け取るように構成されており、
前記１又は２以上のホストマシンのうちの特定のホストマシンから、前記接続性マップからの前記特定のホストマシンに関する前記接続性情報を求める要求を受け取るステップと、
前記特定のホストマシンからの前記要求に応答して、前記特定のホストマシンに前記接続性情報を送信して、前記特定のホストマシンが前記１又は２以上の記憶装置に記憶されているデータを求める要求を送信すべき特定のターゲットネットワークインターフェイスを前記複数のネットワークインターフェイスの中から選択できるようにするステップと、
をさらに含む、請求項３に記載の方法。
【請求項９】
前記特定のストレージノードは、複数のストレージノードのうちの第１のストレージノードであり、前記複数のネットワークインターフェイスは、第１の複数のネットワークインターフェイスであり、
第２のストレージノード上の第２の複数のネットワークインターフェイスの各ネットワークインターフェイスから前記１又は２以上のホストマシンの各ホストマシンにさらなるストレージノードメッセージを送信するステップを含み、
前記第２のストレージノードは、前記第２の複数のネットワークインターフェイスのうちのいずれか１つを通じて前記１又は２以上のホストマシンがアクセスできる前記１又は２以上の記憶装置に動作可能に結合されており、
前記第２のストレージノードが、前記１又は２以上のホストマシンのうちの少なくとも１つのホストマシンから第２のホストメッセージを受け取るステップと、
前記第２のストレージノードが、前記第２の複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記ストレージノードメッセージと、前記少なくとも１つのホストマシンから受け取った前記第２のホストメッセージとに基づいて、前記第２の複数のネットワークインターフェイスの各ネットワークインターフェイスと前記１又は２以上のホストマシンの各ホストマシンとの間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
をさらに含む、請求項３に記載の方法。
【請求項１０】
前記特定のストレージノードが、ネットワークインターフェイスとホストマシンとのペアの接続のための接続性情報の接続状態正常性レポートを生成するステップをさらに含み、前記接続状態正常性レポートは、ネットワークインターフェイスとホストマシンとのペアの組と、前記接続が作動中であるか、それとも停止中であるか、及び前記接続性マップに基づく接続品質を記載した、前記ネットワークインターフェイスとホストマシンとのペアの組における各ネットワークインターフェイスとホストマシンとのペアの接続性情報とを含む、
請求項３に記載の方法。
【請求項１１】
前記接続状態正常性レポートを生成するステップは、前記ネットワークインターフェイスとホストマシンとのペア間の閾値数の接続状態変更によってトリガされる、
請求項１０に記載の方法。
【請求項１２】
前記特定のストレージノード上の前記複数のネットワークインターフェイスの各ネットワークインターフェイスから複数のストレージノードにさらなるストレージノードメッセージを送信するステップをさらに含み、
前記複数のストレージノードは、前記１又は２以上のホストマシンが前記複数のストレージノードのうちのいずれか１つに付属するいずれかのネットワークインターフェイスを通じてアクセスできる前記１又は２以上の記憶装置に動作可能に結合されており、
前記特定のストレージノードが、前記複数のストレージノードのうちの少なくとも１つのストレージノードから応答メッセージを受け取るステップと、
前記特定のストレージノードが、前記複数のネットワークインターフェイスの各ネットワークインターフェイスから送信された前記さらなるストレージノードメッセージと、前記複数のストレージノードのうちの前記少なくとも１つのストレージノードから受け取った前記応答メッセージとに基づいて、前記複数のネットワークインターフェイスの各ネットワークインターフェイスと前記複数のストレージノードに付属する前記ネットワークインターフェイスの各々との間の接続性に関する情報を含めるように前記接続性マップを更新するステップと、
をさらに含む、請求項１に記載の方法。
【請求項１３】
命令を記憶する非一時的コンピュータ可読媒体であって、前記命令は、実行時に請求項１から１２のいずれか１項に記載の方法の実行を引き起こす、
ことを特徴とする非一時的コンピュータ可読媒体。
【請求項１４】
１又は２以上のプロセッサと、メモリと、１又は２以上の記憶装置とを備えたコンピュータシステムであって、前記１又は２以上のプロセッサは、前記メモリ内の命令を実行して、前記コンピュータシステムに請求項１から１２のいずれか１項に記載の方法を実行させるように構成される、
ことを特徴とするコンピュータシステム。
【外国語明細書】
2018181325000001.pdf