以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るストレージクラスタ構成のストレージシステムの構成を示すブロック図である。図1のストレージシステム(以下、ストレージクラスタと称する)は、複数、例えば3台のストレージ装置(以下、ノードと称する)10-1,10-2及び10-3(#1,#2及び#3)から構成される。ノード10-1,10-2及び10-3は、ファイバチャネル、イーサネット(登録商標)、SCSI(Small Computer System Interface)またはiSCSIのようなインタフェイス20によって、ストレージクラスタを利用するホスト(ホストコンピュータ)と接続されている。
ノード10-1,10-2及び10-3は、それぞれ、コントローラ部11-1,11-2及び11-3と、ストレージ部12-1,12-2及び12-3とから構成される。ストレージ部12-i(i=1,2,3)は、論理エクステントを物理ボリューム上に格納する。つまりストレージ部12-iを含むノード10-iは、論理エクステントを所有する。
コントローラ部11-i(i=1,2,3)は、ストレージ部12-1,12-2及び12-3の物理ボリュームを統合することで、ホストに対して論理ボリュームを提供する。つまり、コントローラ部11-iを含む各ノード10-iは、ホストに対して論理エクステントから構成される論理ボリュームを提供する。換言するならば、各ノード10-iは論理ボリュームを構成する。コントローラ部11-iはホストからのアクセス要求を受け付ける。アクセス要求は、アクセスされるべき論理ボリューム内の位置を示す論理アドレス、例えばアクセスされるべき論理ボリューム内の論理ブロックを示す論理ブロックアドレス(LBA)を含む。コントローラ部11-iは、要求された論理ブロックを含む論理エクステントが格納されている(物理ボリュームを有する)ノードを探し出し、そのノードのストレージに対してアクセスを行う。
図1のストレージクラスタは、当該ストレージクラスタを構成するノード10-1〜10-3とは別に、当該ストレージクラスタの構成(当該ストレージクラスタによってホストに提供される論理ボリュームの構成)を計画・管理する構成管理部30を有する。構成管理部30は、ユーザからの論理ボリュームの作成/削除の要求の受け付け、クラスタ全体の状態監視を行う。構成管理部30はまた、例えばパフォーマンス向上のために、ある論理エクステントを管理するノードを別のノードに変更する場合、つまり、ある論理エクステントを別のノードに移動する場合に、移動元ノード及び移動先ノードの選択と移動元ノード及び移動先ノードへの移動指示を行う。構成管理部30は、パーソナルコンピュータ(PC)などを用いて実現される管理用の端末、或いはノード10-1〜10-3のいずれか1つの上で動作することが好ましい。図1の例では、構成管理部30はノード10-1で動作する。もしノード10-1が故障した場合、構成管理部30は周知のクラスタ制御により、ノード10-2またはノード10-3に移動して動作する。
コントローラ部11-1,11-2,11-3は、それぞれ、ターゲットインタフェイス111-1,111-2,111-3、IO(入出力)マネージャ112-1,112-2,112-3、TCP/IP(Transmission Control Protocol/Internet Protocol)モジュール113-1,113-2,113-3及びイーサネットコントローラ114-1,114-2,114-3の各処理部と、論理ボリューム管理テーブル(LVMT:Logical Volume Management Table)115-1,115-2,115-3、イーサネットインタフェイス管理テーブル(EIMT:Ethernet(登録商標) Interface Management Table)116-1,116-2,116-3及びアドレス解決プロトコル(ARP:Address Resolution Protocol)テーブル117-1,117-2,117-3の各テーブルを含む。
ノード10-1,10-2,10-3は、それぞれイーサネットコントローラ114-1,114-2,114-3を介してネットワーク40に接続されている。本実施形態において、ネットワーク40は、イーサネットと呼ばれる、CSMA/CD(Carrier Sense Multiple Access with Collision Detection)方式のローカルエリアネットワークである。ネットワーク40では、下位レイヤプロトコル(下位レイヤ通信プロトコル)としてイーサネットが用いられ、上位レイヤプロトコル(上位レイヤ通信プロトコル)としてTCP/IPが用いられるものとする。下位レイヤプロトコル(イーサネット)で送受信される情報(イーサネットフレーム)の送信元アドレス及び送信先(宛先)アドレスには、MACアドレスと呼ばれる物理アドレス(下位レイヤアドレス)が用いられる。上位レイヤプロトコル(TCP/IP)で送受信される情報(TCP/IPパケット)の送信元アドレス及び送信先(宛先)アドレスには、IPアドレスと呼ばれる上位レイヤアドレスが用いられる。TCP/IPパケットは、イーサネットフレームに包まれて送信される。
ストレージ部12-1,12-2,12-3は、それぞれ、IOドライバ121-1,121-2,121-3、論理エクステント−物理エクステントマッピングテーブル(LPMT:Logical Extent to Physical Extent Mapping Table)122-1,122-2,122-3及びディスク(ディスク装置)123-1,123-2,123-3を含む。ここでは、各ストレージ部12-iに含まれるディスク123-iの数が2であり、各ディスク123-iが物理ボリュームを提供するものとする。
次に、ノード10-i(i=1,2,3)の中で管理・参照される各テーブル、即ちLVMT115-i、EIMT116-i、ARPテーブル117-i及びLPMT122-iについて説明する。
まず、LVMT115-iについて説明する。LVMT115-iは、論理ボリュームの基本的な管理情報(論理ボリューム管理情報)を保持する。構成管理部30は論理ボリュームを作成する際に、ユーザからの指示に従い、論理ボリュームID、論理ボリュームサイズ、論理エクステントサイズ、論理ボリュームに割り当てるネットワークアドレス及び論理ボリュームを構成可能な最大ノード数を決定する。決定された情報は、論理ボリューム管理情報を構成する。構成管理部30は、論理ボリューム管理情報を格納したLVMTを生成し、当該LVMTを、図1のストレージクラスタを構成する全てのノード10-iにLVMT115-iとして一律に配布して設定する。
図2は、LVMT115-iのデータ構造例を示す。LVMT115-iのエントリは、LVID(Logical Volume ID:論理ボリュームID)、LVSIZE(Logical Volume Size:論理ボリュームサイズ)、LESIZE(Logical Extent Size:論理エクステントサイズ)、LVNA(Logical Volume Network Address)及びLVNODEの各項目を有する。
LVIDには、ホストに提供される論理ボリュームに固有のID(論理ボリュームID)が設定される。LVSIZEには、論理ボリュームのサイズ(を表す情報)が設定される。LESIZEには、論理ボリュームを構成する論理エクステントのサイズ(を表す情報)が設定される。LVSIZE/LESIZEにより、論理ボリュームを構成する論理エクステントの数が求められる。
LVNAには、論理ボリュームに割り当てられたネットワークアドレス(IPネットワークアドレス)及びサブネットマスクが設定される。本実施形態では、ネットワークアドレスで指定される仮想的なネットワークに後述する最大ノード数と論理ボリュームを構成する論理エクステント数(LVSIZE/LESIZE)を収容できるだけのホストアドレス(IPアドレス)の空間(論理ボリュームのネットワークアドレス空間)を確保する必要がある。LVNODEは、論理ボリュームを構成する論理エクステントを所有可能なノード数として最大何ノードまで含めるか(つまり最大ノード数)を定義する。この定義により、論理ボリュームのネットワークアドレス空間(IPネットワークアドレス空間)の中から、先頭からLVNODE個分までのホストアドレス(IPアドレス)が、当該論理ボリュームを提供するストレージクラスタを構成する各ノードに1つずつ割り当てられる。また、LVNODE+1個目以降のホストアドレス(IPアドレス)が、論理ボリュームを構成する各論理エクステントに1つずつ割り当てられる。
図3はLVMT115-iによって管理される論理ボリュームの例を示す。図3に示される論理ボリュームは、2TBのサイズを持ち(LVSIZE=2TB)、そのサイズを512MBの4つの論理エクステントに切り分けることによって管理される(LESIZE=512MB)。この論理ボリュームには、論理ボリュームIDとして1(LVID=1)が割り当てられている。図3の例では、この論理ボリュームを構成する(論理エクステントを所有できる)ノードの最大数(最大ノード数)は、将来の論理エクステント数増加(論理ボリュームサイズの拡張)を見越して10ノード(LVnode=10)と定義されている。論理ボリュームを構成する各論理エクステントには、識別情報としての例えばシリアルの論理エクステント番号が当該論理ボリューム内の配置順に割り当てられる。また論理ボリュームのネットワークアドレス(論理ボリュームネットワークアドレス)として、192.168.1.0/24が割り当てられている。ここでは、IPアドレスとしてIPv4(IP version 4)アドレスが用いられている。192.168.1.0/24における“24”は、サブネットマスクのビット数を示す。なお、IPアドレスに、IPv4アドレス以外のアドレス、例えばIPv6(IP version 6)アドレスを用いることも可能である。
図3の論理ボリュームを管理するLVMT115-iの例を図4に示す。ここでは、図3の論理ボリューム以外の論理ボリュームは図1のストレージクラスタに存在しないものとする。
本実施形態において、1つの論理ボリュームには、1つのユニークなネットワークアドレス空間(IPネットワークアドレス空間)を設定しなければならない(この例ではLVNA=192.168.1.0/24)。先に述べたように、このネットワークアドレス空間内のホストアドレス(IPアドレス)のうち、先頭ホストアドレス(この例では192.168.1.1/24)から最大ノード数分(LVNODE=10)のホストアドレスが、論理ボリューム(を提供するストレージクラスタ)を構成するノード1つずつに割り当てられる。このホストアドレス(IPアドレス)を「コンテナIPアドレス」と呼ぶ。この例では、192.168.1.1/24〜192.168.1.10/24までがコンテナIPアドレスとして使用される。
また、上述のネットワークアドレス空間内のホストアドレス(IPアドレス)のうち、コンテナIPアドレスとして使用されていないホストアドレス(この例では192.168.1.11/24〜192.168.1.254/24)が、論理エクステントの先頭から順に、1つずつ割り当てられる。このホストアドレス(IPアドレス)を「論理エクステントIPアドレス」と呼ぶ。例えば、図3に示す論理ボリュームの先頭に位置する論理エクステント1、つまり論理エクステント番号が1の論理エクステントは、論理エクステントIPアドレス192.168.1.11/24を持つ。
以上を定式化すると、論理エクステントIPアドレスは、次式
論理エクステントIPアドレス
={ネットワークアドレス,ホストアドレス}
={論理ボリュームネットワークアドレス,最大ノード数+論理エクステント番号}
但し、論理エクステント番号=(LBA/LESIZE)+1
(1)
によって表される。
例えば、図3に示した論理ボリューム1(LVID=1)において、論理ブロックアドレス(LBA)256MBに対するアクセスを行う場合、この論理ボリューム1の論理エクステントサイズは512MBであるため、論理エクステント1に対するアクセスとなる。論理エクステント1の論理エクステントIPアドレスは、上記のように192.168.1.11/24である。
次に、EIMT116-i(i=1,2,3)について説明する。EIMT116-iは、ノード10-i毎に作成される。つまりEIMT116-iは各ノード10-iに固有のテーブルである。ノード10-iのEIMT116-iは、当該ノード10-iが管理する論理エクステント(論理ボリュームを構成する論理エクステント)の1つずつに割り当てられたIPアドレスを当該論理エクステントに対応付けて保持する。
前記したように、構成管理部30は論理ボリュームを作成する際に、各ノード10-iに共通のLVMTを生成して、当該LVMTを各ノード10-iにLVMT115-iとして配布する。その後、構成管理部30は、作成した論理ボリュームを構成する論理エクステントを、それぞれどのノード10-iが管理するかを決定する。構成管理部30はこの決定結果に基づいて、ノード10-i毎に固有のEIMT116-iを生成して、そのノード10-iに配布する。
図5はEIMT116-iのデータ構造例を示す。EIMT116-iの各エントリは、LEIP(Logical Extent IP-Address:論理エクステントIPアドレス)/CIP(Container IP-Address:コンテナIPアドレス)及びLEMAC(Logical Extent MAC-Address:論理エクステントMACアドレス)/CMAC(Container MAC-Address:コンテナMACアドレス)の各項目を有する。
LEIP/CIPには、該当するノード10-iが管理する論理エクステントに割り当てられるIPアドレス(論理エクステントIPアドレス)または当該ノード10-iに割り当てられるIPアドレス(コンテナIPアドレス)が設定される。LEMAC/CMACには、当該LEMAC/CMACと対をなすLEIP/CIPに設定されているIPアドレスに対応付けて該当するノード10-iのイーサネットコントローラ部114-iに割り当てられている物理アドレスとしてのMAC(Media Access Control)アドレスが設定される。なお、以下の説明では、「論理エクステントに割り当てられるIPアドレス」を「論理エクステントが持つ(または有する)IPアドレス」と呼ぶこともある。
図6はEIMT116-1〜116-3の具体例を説明する際の前提となる、図3のLVID(論理ボリュームID)が1の論理ボリュームを構成するノード10-1〜10-3と当該ノード10-1〜10-3によって管理される当該論理ボリューム内の論理エクステントとの関係とを示す。図6の例では、ノード10-1,10-2,10-3(のイーサネットコントローラ114-1,114-2,114-3)は、それぞれMACアドレスMAC1,MAC2,MAC3を持つ。
図6において、ノード10-1、つまりMACアドレスMAC1を持つノード10-1は、コンテナIPアドレス192.168.1.1/24を所有し、論理エクステントIPアドレス192.168.1.11/24を持つ論理エクステント1及び論理エクステントIPアドレス192.168.1.14/24を持つ論理エクステント4を管理する。この場合、ノード10-1が持つMACアドレスMAC1を、コンテナIPアドレス192.168.1.1/24のMACアドレスMAC1、または論理エクステントIPアドレス192.168.1.11/24(を持つ論理エクステント1)のMACアドレスMAC1、または論理エクステントIPアドレス192.168.1.14/24(を持つ論理エクステント4)のMACアドレスMAC1と呼ぶこともある。
ノード10-2、つまりMACアドレスMAC2を持つノード10-2は、コンテナIPアドレス192.168.1.2/24を所有し、論理エクステントIPアドレス192.168.1.12/24を持つ論理エクステント2を管理する。この場合、ノード10-2が持つMACアドレスMAC2を、コンテナIPアドレス192.168.1.2/24のMACアドレスMAC2、または論理エクステントIPアドレス192.168.1.12/24(を持つ論理エクステント1)のMACアドレスMAC2と呼ぶこともある。
ノード10-3、つまりMACアドレスMAC3を持つノード10-3は、コンテナIPアドレス192.168.1.3/24を所有し、論理エクステントIPアドレス192.168.1.13/24を持つ論理エクステント3を管理する。この場合、ノード10-3が持つMACアドレスMAC3を、コンテナIPアドレス192.168.1.3/24のMACアドレスMAC3、または論理エクステントIPアドレス192.168.1.13/24(を持つ論理エクステント1)のMACアドレスMAC3と呼ぶこともある。
図6の状態において、ノード10-1,10-2,10-3が管理するEIMT116-1,116-2,116-3の例を図7に示す。
次に、ARPテーブル117-iについて説明する。ARPテーブル117-iはノード10-iのコントローラ部11-iに含まれているTCP/IPモジュール113-iによって管理される。ARPテーブル117-iは、従来から知られているARP解決済みのアドレス情報、つまりIPアドレス及びMACアドレスの対を保持する。
次に、LPMT122-iについて説明する。LPMT122-iは、従来技術で適用されるLPMTとは異なって、各ノード10-iに固有のテーブルである。つまり各ノード10-iは、固有のLPMT122-iを保持・管理する。LPMT122-iは、当該LPMT122-iを保持するノード10-iが管理する論理エクステントを、当該ノード10-iが有するどの物理ボリュームのどの物理エクステントに格納しているかを示すのに用いられる。本実施形態では、論理ボリュームを構成する論理エクステントをどのノード10-iが管理するかは構成管理部30によって決定される。しかし、ノード10-iが管理すると決定された論理エクステントを、当該ノード10-iが有するどの物理ボリュームのどの物理エクステントに格納するかは、構成管理部30が決定しても、ノード10-iのストレージ部12-iが自立的に決定しても良い。構成管理部30またはノード10-iは、上述の決定に基づいてLPMT122-iを生成し、当該LPMT122-iをノード10-iに設定する。
図8はLPMT122-iのデータ構造例を示す。LPMT122-iの各エントリは、LEIP(Logical Extent IP-Address:論理エクステントIPアドレス)、PVID(Physical Volume ID:物理ボリュームID)及びPEID(Physical Extent ID:物理エクステントID)の各項目を有する。
LEIPには、EIMT116-iにおけるLEIPと同様に、該当するノード10-iが管理する論理エクステントに割り当てられたIPアドレス(論理エクステントIPアドレス)が設定される。PVIDには、当該PVIDと組をなすLEIPの示す論理エクステントIPアドレスに対応付けられる物理ボリュームのID(物理ボリュームID)が設定される。PEIDには、当該PEIDと組をなすLEIPの示す論理エクステントIPアドレスに対応付けられる物理エクステントのID(物理エクステントID)が設定される。LEIPの示す論理エクステントIPアドレスの論理エクステントは、当該LEIPと組をなすPVID及びPEIDで示される物理ボリューム内の物理エクステントに格納される。
図9はLPMT122-1〜122-3の具体例を説明する際の前提となる、ノード10-1〜10-3によって管理される論理ボリューム内の論理エクステントと当該論理エクステントが格納される物理ボリューム内の物理エクステントとの関係を示す。
図9の例では、ノード10-1〜10-3は、いずれもPVID(物理ボリュームID)が1,2の物理ボリュームを有する。各物理ボリュームは、PEID(物理エクステントID)が1,2,3の物理エクステントから構成される。ノード10-iのPVIDが1,2の物理ボリュームは、例えば当該ノード10-iに含まれている2つのディスク(ディスク装置)123-iによって提供される。
図9において、論理エクステントIPアドレス192.168.1.11/24を持つ論理エクステント1及び論理エクステントIPアドレス192.168.1.14/24を持つ論理エクステント4は、それぞれ、ノード10-1に含まれている、PVIDが1の物理ボリューム内のPEIDが3の物理エクステント及びPVIDが2の物理ボリューム内のPEIDが2の物理エクステントに格納される。論理エクステントIPアドレス192.168.1.12/24を持つ論理エクステント2は、ノード10-2に含まれている、PVIDが1の物理ボリューム内のPEIDが2の物理エクステントに格納される。論理エクステントIPアドレス192.168.1.13/24を持つ論理エクステント3は、ノード10-3に含まれている、PVIDが2の物理ボリューム内のPEIDが3の物理エクステントに格納される。
図9の状態において、ノード10-1,10-2,10-3が管理するLPMT122-1,122-2,122-3の例を図10に示す。
次に、ホストからノード10-1にアクセス要求が与えられた場合の当該ノード10-1の動作について、図11A及び図11Bのフローチャートを参照して説明する。
今、ホストからノード10-1〜10-3のうちの例えばノード10-1に対してパスが張られている状態で、当該ホストからノード10-1に対してアクセス要求が与えられたものとする。するとノード10-1のターゲットインタフェイス111-1は、FC/SCSIやイーサネット/iSCSIなどの任意のメディア/プロトコルによりホストからのアクセス要求を受け付ける(ステップS1)。アクセス要求は、アクセスされるべき論理ボリューム内の論理ブロックを示す論理ブロックアドレスを含む。ここではアクセス要求により、論理ボリュームIDがLVIDの論理ボリューム(以下、論理ボリュームLVIDと称する)の論理ブロックアドレスLBA(で指定される論理ブロック)へのアクセスが要求されているものとする。ターゲットインタフェイス111-1は、このアクセス要求をIOマネージャ112-1に渡すことにより、当該IOマネージャ112-1にアクセスを要求する。
IOマネージャ112-1は、ターゲットインタフェイス111-1から渡されたアクセス要求で指定される論理ボリュームLVIDの論理ブロックアドレスLBAが属する論理エクステントを特定するための処理を行う。ここでは、IOマネージャ112-1は論理エクステントIPアドレス特定手段として機能してLVMT115-1を参照し、LVID及びLBAに対応する論理エクステントに割り当てられている論理エクステントIPアドレスLEIPを求める(ステップS2)。
具体的には、IOマネージャ112-1はまず、LVMT115-1を参照して、LVIDと対応付けられているLVNA(論理ボリュームネットワークアドレス)、LVSIZE(論理ボリュームサイズ)、LESIZE(論理エクステントサイズ)及びLVNODE(最大ノード数)を取得する。次にIOマネージャ112-1は、アクセス要求で指定されるLBA(論理ブロックアドレス)と上記取得されたLESIZE(論理エクステントサイズ)とに基づき、“論理エクステント番号=(LBA/LESIZE)+1”の演算を行って、アクセスされるべき論理ボリューム内の論理エクステントの論理エクステント番号を求める。そしてIOマネージャ112-1は、上記取得された、LVNA(論理ボリュームネットワークアドレス)及びLVNODE(最大ノード数)と、演算により求められた論理エクステント番号とに基づき、前記(1)式に従う演算を行うことにより、アクセスされるべき論理ボリューム内の論理エクステントに割り当てられている論理エクステントIPアドレスLEIPを求める(特定する)。
次にIOマネージャ112-1は判定手段として機能して、ステップS2で求められた論理エクステントIPアドレスLEIPが割り当てられている論理エクステント(以下、論理エクステントLEIPと称する)を、当該IOマネージャ112-1を含むノード10-1(自ノード)が管理しているかを判定する(ステップS3)。この判定は、LPMT122-1を参照して、ステップS2で求められた論理エクステントIPアドレスLEIPが当該LPMT122-1に格納されているかを調べることによって行われる。
まず、ステップS3において、論理エクステントLEIPをノード10-1(自ノード)が管理していると判定されたものとする。この場合、IOマネージャ112-1はノード10-1内のIOドライバ121-1に、当該論理エクステントLEIPに対するアクセスを指定するアクセス要求(論理エクステントLEIPへのアクセス要求)を渡す(ステップS4)。
これに対し、ステップS3において、論理エクステントLEIPをノード10-1(自ノード)が管理していないと判定されたものとする。この場合、IOマネージャ112-1は、ノード10-1以外のノード(他ノード)で管理されている論理エクステントLEIPにアクセスするために、当該論理エクステントLEIPに割り当てられている論理エクステントIPアドレスLEIPをアクセス先とするアクセス(つまり論理エクステントLEIPへのアクセス)を、ノード10-1内のTCP/IPモジュール113-1に要求する(ステップS5)
TCP/IPモジュール113-1は、他ノードとのイーサネット(下位レイヤ)を利用した高信頼通信路を構築するためのTCP/IPの処理を行い、イーサネットコントローラ114-1を制御してTCP/IPパケットを包んだイーサネットフレームの送受信を行う。本実施形態においてTCP/IPモジュール113-1は、IOマネージャ112-1から他ノードが管理する論理エクステントLEIPへのアクセスが要求されると、EIMT116-1を参照して、ノード10-1(自ノードのイーサネットコントローラ114-1)が所有するコンテナIPアドレスCIPを取得する(ステップS6)。このステップS6において、TCP/IPモジュール113-1はTCP/IPパケット生成手段として機能して、取得されたコンテナIPアドレスCIPを送信元とし、論理エクステントIPアドレスLEIPを送信先とする、アクセス要求を含むTCP/IPパケットを生成する。
次にTCP/IPモジュール113-1はアドレス解決処理として機能して、生成されたTCP/IPパケットをイーサネットフレームに包み込むのに必要な、送信先の論理エクステントIPアドレスLEIPに対応するMACアドレスLEMACを解決するためのアドレス解決処理を行う(ステップS7)。このアドレス解決処理の詳細については後述する。
TCP/IPモジュール113-1は、ステップS7のアドレス解決処理により、送信先の論理エクステントIPアドレスLEIPに対応するMACアドレスLEMACを解決(決定)すると、EIMT116-1を参照して、送信元コンテナIPアドレス(自ノードのコンテナIPアドレス)に対応するMACアドレスCMACを取得する(ステップS8)。次にTCP/IPモジュール113-1は、先に生成されたTCP/IPパケットを包み込むイーサネットフレームであって、上記取得されたMACアドレスCMACを送信元MACアドレスとし、上記解決されたMACアドレスLEMAC(つまり送信先論理エクステントIPアドレスLEIPに対応するMACアドレスLEMAC)を送信先MACアドレスとするイーサネットフレームを生成し、当該イーサネットフレームをイーサネットコントローラ114-1を介してネットワーク40上に送信する(ステップS9)。つまりTCP/IPモジュール113-1は、アクセス要求が含まれるTCP/IPパケットを包み込むイーサネットフレームを送信する。ここで、アクセス要求の複数パケットへの分割、パケット到着順序制御、パケット再送制御などの周知の処理は、TCP/IPモジュール113-1にて行われる。イーサネットコントローラ114-1はMACアドレスを持ち、イーサネットフレームの送受信制御を行う。ノード10-2,10-3のイーサネットコントローラ114-2,114-3も同様である。
さて、TCP/IPモジュール113-1(ノード10-1のTCP/IPモジュール113-1)からイーサネットコントローラ114-1を介してネットワーク40に送信されたイーサネットフレームの送信先MACアドレス(LEMAC)が、例えばノード10-2(のイーサネットコントローラ114-2)に割り当てられているものとする。この場合、上記イーサネットフレームは、ノード10-2のイーサネットコントローラ114-2で受信される。
イーサネットコントローラ114-2は、イーサネットフレームを受信すると、即ちアクセス要求が含まれているTCP/IPパケットを包み込むイーサネットフレームを受信すると、ノード10-2のTCP/IPモジュール113-2に当該イーサネットフレームを渡して処理を依頼する(ステップS10)。このステップS10において、TCP/IPモジュール113-2は、イーサネットフレームに包み込まれているTCP/IPパケットからアクセス要求を抽出して、当該アクセス要求をIOドライバ121-2に送ることで、要求されたアクセス処理を依頼する。
IOドライバ121-2は、IOマネージャ112-2(自ノードからのアクセス要求時)またはTCP/IPモジュール113-2(他ノードからのアクセス要求時)から論理エクステントに対するアクセス要求を受け付ける。ここでは、TCP/IPモジュール113-2からIOドライバ121-2にアクセス要求が送られたものとする(ステップS10)。この場合、IOドライバ121-2は、TCP/IPモジュール113-2から送られたアクセス要求を受け付けて、当該アクセス要求で指定された論理エクステントLEIPに対するアクセス処理を行う(ステップS11)。このIOドライバ121-2によるアクセス処理の詳細については後述する。
IOドライバ121-2は、TCP/IPモジュール113-2から送られたアクセス要求の指定するアクセス処理を実行すると、当該アクセス要求に対する応答をTCP/IPモジュール113-2に返す。TCP/IPモジュール113-2は、IOドライバ121-2からアクセス要求に対する応答を受け取ると、イーサネットコントローラ114-2を介して、アクセス要求元のノード10-1のTCP/IPモジュール113-1に応答を返す(ステップS12)。
アクセス要求元のノード10-1のTCP/IPモジュール113-1は、アクセス要求先のノード10-2のTCP/IPモジュール113-2からの応答をイーサネットコントローラ114-1を介して受け取ると、IOマネージャ112-1に対して応答を返す(ステップS13)。するとIOマネージャ112-1は、TCP/IPモジュール113-1からの応答(つまりアクセス要求に対する応答)を受け取る(ステップS14)。ターゲットインタフェイス111-1は、IOマネージャ112-1がアクセス要求に対する応答を受け取ると、ホストに対して応答(アクセス応答)を返す(ステップS15)。
一方、ステップS3で論理エクステントLEIPをノード10-1(自ノード)が管理していると判定された結果、当該ノード10-1内でIOマネージャ112-1からIOドライバ121-1にアクセス要求が送られた場合には(ステップS4)、当該IOドライバ121-1が論理エクステントLEIPに対するアクセス処理を行う(ステップS16)。このIOドライバ121-1によるアクセス処理の詳細については後述する。
IOドライバ121-1は、IOマネージャ112-1から送られたアクセス要求の指定するアクセス処理を実行すると、当該アクセス要求に対する応答をIOマネージャ112-1に返す。するとIOマネージャ112-1は、IOドライバ121-1からの応答(つまりアクセス要求に対する応答)を受け取る(ステップS17)。ターゲットインタフェイス111-1は、IOマネージャ112-1がアクセス要求に対する応答を受け取ると、ホストに対して応答(アクセス応答)を返す(ステップS15)。
次に、TCP/IPモジュール113-1による論理エクステントIPアドレスLEIPに対応するMACアドレスLEMACを解決するためのアドレス解決処理(図11AステップS7)の詳細について、図12のフローチャートを参照して説明する。
まずTCP/IPモジュール113-1は、ARPテーブル参照手段として機能してARPテーブル117-1を参照することにより、当該ARPテーブル117-1に論理エクステントIPアドレスLEIPのARP解決済みのエントリが既に存在する(キャッシュされている)かを判定する(ステップS21)。もし、存在するならば、TCP/IPモジュール113-1は、ARPテーブル117-1の該当するエントリから、論理エクステントIPアドレスLEIPに対応するMACアドレスLEMACを取得する(ステップS22)。TCP/IPモジュール113-1は、このMACアドレスLEMACを論理エクステントLEIPのMACアドレスLEMACとする(ステップS23)。
これに対し、ARPテーブル117-1に論理エクステントIPアドレスLEIPのARP解決済みのエントリが存在しないならば(ステップS21)、TCP/IPモジュール113-1はARP要求手段として機能して、EIMT116-1を参照することによりノード10-1(自ノード)が持つコンテナIPアドレスCIP及びMACアドレスCMACを取得する(ステップS24)。このステップS24において、TCP/IPモジュール113-1は、取得されたコンテナIPアドレスCIP及びMACアドレスCMACを送信元とし、論理エクステントIPアドレスLEIPを送信先とするARP要求パケットを生成し、当該ARP要求パケットをイーサネットコントローラ114-1によりネットワーク40上にブロードキャストさせるために、当該ARP要求パケットをイーサネットコントローラ114-1に送る。
イーサネットコントローラ114-1は、TCP/IPモジュール113-1からARP要求パケットを受け取ると、当該ARP要求パケット(ARP要求フレーム)をネットワーク40上にブロードキャストする(ステップS25)。そしてイーサネットコントローラ114-1は、ARP要求に対する応答を待つ。
ノード10-1のイーサネットコントローラ114-1からネットワーク40上にブロードキャストされたARP要求パケットは、ストレージクラスタ内の他のノードのイーサネットコントローラ、即ちノード10-2,10-3のイーサネットコントローラ114-2,114-3で受信される。すると、ノード10-2,10-3ではARP要求に対する処理が行われ、ノード10-2,10-3のうちARP要求パケットの送信先のIPアドレスLEIPで指定される論理エクステントを管理するノード、例えばノード10-2が、ARP応答パケット(ARP応答フレーム)をARP要求パケットの送信元に返す。このARP応答パケットは、当該ARP応答パケットの送信元(ARP要求パケットに対する応答元)として、論理エクステントIPアドレスLEIP及び当該IPアドレスLEIPに対応付けてEIMTに保持されているMACアドレスLEMACを含む。ARP要求に対する処理の詳細は後述する。
ノード10-1のイーサネットコントローラ114-1は、論理エクステントLEIPを管理するノードのイーサネットコントローラ(ここではノード10-2のイーサネットコントローラ114-2)から返されたARP応答パケットを受信する(ステップS26)。イーサネットコントローラ114-1で受信されたARP応答パケットはTCP/IPモジュール113-1に渡される。TCP/IPモジュール113-1は、イーサネットコントローラ114-1からARP応答パケットを受け取るとARPテーブル登録手段として機能して、当該ARP応答パケットの送信元の論理エクステントIPアドレスLEIP及びMACアドレスLMAC、即ちアクセスされるべき論理エクステントIPアドレスLEIP及び当該IPアドレスLEIPで指定される論理エクステントLEIPを管理するノードのMACアドレスLMAC(論理エクステントLEIPのMACアドレスLMAC)を、ARPテーブル117-1に追加(登録)する(ステップS27)。このようにしてTCP/IPモジュール113-1は、論理エクステントLEIPを管理するノードのMACアドレスLMACを論理エクステントLEIPのMACアドレスLEMACとして取得する(ステップS23)。
次に、ARP要求に対する処理(ARP要求処理)の詳細について、当該処理がノード10-2で行われる場合を例に、図13のフローチャートを参照して説明する。
前記ステップS25(図12参照)で、ノード10-1のイーサネットコントローラ114-1からARP要求パケットがブロードキャストされると、ノード10-2のイーサネットコントローラ114-2は当該ARP要求パケットを受信する(ステップS31)。このARP要求パケットはノード10-3のイーサネットコントローラ114-3でも受信される。
イーサネットコントローラ114-2で受信されたARP要求パケットはノード10-2のTCP/IPモジュール113-2に渡される。これにより、イーサネットコントローラ114-2からTCP/IPモジュール113-2にARP要求に対する応答処理が依頼される。すると、TCP/IPモジュール113-2はARPモジュール(ARP要求処理モジュール)として機能する。
まずTCP/IPモジュール113-2は、ARPテーブル117-2にARP要求パケットの送信元のコンテナIPアドレスCIPのエントリが既に存在する場合、当該ARP要求パケットの送信元のMACアドレスCMACで当該ARPテーブル117-2を更新する(ステップS32)。
次にTCP/IPモジュール113-2は、ARP要求パケットの送信先の論理エクステントIPアドレスLEIPのエントリがEIMT116-2に存在するかにより、ノード10-2(自ノード)が当該論理エクステントIPアドレスLEIPで指定される論理エクステントLEIPを管理しているかを判定する(ステップS33)。もし、論理エクステントIPアドレスLEIPのエントリがEIMT116-2に存在するならば、即ちノード10-2(自ノード)が論理エクステントLEIPを管理しているならば、TCP/IPモジュール113-2は、ARP要求パケットの送信元のIPアドレス(コンテナIPアドレス)CIP及び送信元のMACアドレスCMACの対をARPテーブル117-2に登録する(ステップS34)。
論理エクステントIPアドレスLEIPのエントリがEIMT116-2に存在する場合、LPMT122-2にも論理エクステントIPアドレスLEIPのエントリが存在する。したがってステップS33の判定は、LPMT122-2を参照することによって、ノード10-2(自ノード)が当該論理エクステントIPアドレスLEIPで指定される論理エクステントLEIPを管理しているかを判定することと等価である。
TCP/IPモジュール113-2はステップS34を実行すると、EIMT116-2を参照して、ARP要求パケットの送信先のIPアドレス、即ち論理エクステントIPアドレスLEIPに対応付けられているMACアドレスLEMACを取得する(ステップS35)。このステップS35において、TCP/IPモジュール113-2はARP要求に対して論理エクステントIPアドレスLEIPのMACアドレス(つまり取得されたMACアドレスLEMAC)を応答するために、論理エクステントIPアドレスLEIP及びMACアドレスLEMACを送信元とし、IPアドレスCIP及びMACアドレスCMACを送信先とするARP応答パケットを組み立てて、当該ARP応答パケットをイーサネットコントローラ114-2に渡す。するとイーサネットコントローラ114-2は、TCP/IPモジュール113-2から渡されたARP応答パケットをネットワーク40上に送信する(ステップS36)。
一方、論理エクステントIPアドレスLEIPのエントリがEIMT116-2(LPMT122-2)に存在しないならば、即ちノード10-2(自ノード)が論理エクステントLEIPを管理していないならば(ステップS33)、TCP/IPモジュール113-2はARP要求を無視し、応答不要をイーサネットコントローラ114-2に通知する(ステップS37)。この場合、ARP要求パケットの送信元にはイーサネットコントローラ114-2から何も応答は返されない。
次に、IOドライバによるアクセス処理(図11BステップS11またはS16)の詳細について、図14のフローチャートを参照して説明する。
今、ノード10-2のTCP/IPモジュール113-2からIOドライバ121-2に対して、論理エクステントLEIPへのアクセス要求(論理エクステントIPアドレスLEIPが割り当てられた論理エクステントLEIPに対するアクセスを指定するアクセス要求)が渡されたものとする(図11BステップS10)。するとIOドライバ121-2は、図11BのステップS11の処理(アクセス処理)を、図14のフローチャートに従って次のように実行する。
まず、IOドライバ121-2は、TCP/IPモジュール113-2から渡された論理エクステントLEIPへのアクセス要求を受け付ける(ステップS41)。次にIOドライバ121-2は、論理エクステントIPアドレスLEIPをキーとしてLPMT122-2を検索することにより、当該IPアドレスLEIPに対応付けられている、物理ボリュームID(PVID)及び物理エクステントID(PEID)を取得する(ステップS42)。
論理エクステントIPアドレスLEIPが割り当てられている論理エクステントLEIPは、取得されたPVIDで指定される物理ボリュームの取得されたPEIDで指定される物理エクステントに格納されている。そこでIOドライバ121-2は、PVIDで指定される物理ボリュームのPEIDで指定される物理エクステントに対してアクセスする(ステップS43)。そしてIOドライバ121-2はアクセスが完了すると、アクセス要求に対する応答(アクセス処理完了の応答)を当該アクセス要求の直接の要求元、つまりTCP/IPモジュール113-2に返す(ステップS44)。
以上、図11BステップS11のアクセス処理の詳細について説明した。次に図11BステップS16のアクセス処理について説明する。今、ノード10-1のIOマネージャ112-1からIOドライバ121-1に対して、論理エクステントLEIPへのアクセス要求が渡されたものとする(図11AステップS4)。この場合、IOドライバ121-1は、図11BステップS16のアクセス処理を、上述したIOドライバ121-2による図11BステップS11のアクセス処理と同一手順(図14ステップS41〜S44)で実行する。但し、IOドライバ121-1は、アクセス要求をTCP/IPモジュール113-1ではなくてIOマネージャ112-1から受け取り(ステップS41)、アクセス要求に対する応答をTCP/IPモジュール113-1ではなくてIOマネージャ112-1に返す(ステップS44)。
図15は、図1のストレージクラスタにおいて、LVMT115-1〜115-3、EIMT116-1〜116-3及びLPMT122-1〜122-3が、それぞれ図4、図7及び図10のように構成され、ARPテーブル117-1〜117-3のエントリが空である状態において、ホストからノード10-1に対して、論理ボリューム1の論理ブロックアドレス(LBA)768MBへのアクセスを指定するアクセス要求が与えられた場合の動作の流れを示す。以下、図15の動作の流れについて、図11A及び図11Bのフローチャートを併用して説明する。
今、図15において矢印501で示されるように、ホストからストレージクラスタ内のノード10-1に対して、論理ボリューム1(LVID=1)の論理ブロックアドレス(LBA)“768MB”(LBA=768MB)へのアクセスを指定するアクセス要求が与えられたものとする。
ノード10-1のターゲットインタフェイス111-1は、ホストからの上記アクセス要求を受け付け、当該アクセス要求に対する処置を、矢印502で示されるように当該ノード10-1のIOマネージャ112-1に要求する(図11AステップS1)。
IOマネージャ112-1は、図4に示されるLVMT115-1に基づき、論理ボリューム1の論理ブロックアドレス(LBA)“768MB”が、論理エクステントIPアドレス(LEIP)“192.168.1.12/24”を持つ論理エクステントに位置することを求める(図11AステップS2)。
次にIOマネージャ112-1は、図10に示すLPMT122-1を参照することで、論理エクステントIPアドレス(LEIP)“192.168.1.12/24”(を持つ論理エクステントLEIP)をノード10-1(自ノード)が管理しているかを判定する(図11AステップS3)。図10に示すLPMT122-1の例では、“192.168.1.12/24”はノード10-1(自ノード)では管理されていない(他ノードで管理されている)ことから、IOマネージャ112-1は矢印503で示されるように、ノード10-1のTCP/IPモジュール113-1にアクセス要求の処理を依頼する(図11AステップS5)。
TCP/IPモジュール113-1は、図7に示すEIMT116-1を参照して、ノード10-1(自ノード)が所有するコンテナIPアドレス(CIP)“192.168.1.1/24”を取得し、当該コンテナIPアドレスCIP=192.168.1.1/24を送信元とし、論理エクステントIPアドレスLEIP=192.168.1.12を送信先とする、アクセス要求のTCP/IPパケットを生成する(図11AステップS6)。
次にTCP/IPモジュール113-1は、送信先の論理エクステントIPアドレスLEIP=192.168.1.12/24のMACアドレスを解決するためのアドレス解決処理を行う(図11AステップS7)。このアドレス解決処理において、TCP/IPモジュール113-1はARPテーブル117-1を参照する。しかし、当該ARPテーブル117-1には“192.168.1.12/24”のMACアドレスはキャッシュされていない(図12ステップS21)。
そこでTCP/IPモジュール113-1は、EIMT116-1を参照して、ノード10-1(自ノード)のコンテナIPアドレスCIP=192.168.1.1/24とそのMACアドレスCMAC=MAC1を送信元とし、論理エクステントIPアドレスLEIP=192.168.1.12/24を送信先とするARP要求パケットを生成する(図12ステップS24)。TCP/IPモジュール113-1は、生成されたARP要求パケットを、ノード10-1のイーサネットコントローラ114-1により矢印504aで示されるようにブロードキャストさせる(図12ステップS25)。
すると、図1のストレージクラスタの中で、論理ボリューム1を構成している(つまり192.168.1.0/24のネットワークに参加している)ノード10-1〜10-3 のうち、ノード10-1以外のノード10-2,10-3で当該ノード10-1からのARP要求パケットが受信される(図13ステップS31)。ノード10-2,10-3で受信されたARPパケットは、それぞれ当該ノード10-2,10-3のイーサネットコントローラ114-2,114-3から当該ノード10-2,10-3のTCP/IPモジュール113-2,113-3に矢印504bで示されるように送られる。
ノード10-3のTCP/IPモジュール113-3は、ARPテーブル117-3を参照する。この時点において、ARPテーブル117-3には未だ送信元のIPアドレスCIP=192.168.1.1/24は存在しない。このためTCP/IPモジュール113-3は、ARPテーブル117-3の更新(図13ステップS32)を行わない。また、EIMT116-3には送信先のIPアドレス(論理エクステントIPアドレス)LEIP=192.168.1.12/24のエントリは存在しない(図7参照)。このためTCP/IPモジュール113-3は、ARP要求に対する応答は行わない(図12ステップS37)。
一方、ノード10-2のTCP/IPモジュール113-2は、ARPテーブル117-2を参照する。この時点において、ARPテーブル117-2には未だ送信元のIPアドレスCIP=192.168.1.1/24は存在しない。このためTCP/IPモジュール113-2は、ARPテーブル117-3の更新(図13ステップS32)を行わない。次にTCP/IPモジュール113-2はEIMT116-2を参照して、当該EIMT116-2に送信先のIPアドレス(論理エクステントIPアドレス)LEIP=192.168.1.12/24のエントリが存在するか判定する(図13ステップS33)。ここでは、EIMT116-2には、論理エクステントIPアドレスLEIP=192.168.1.12/24のエントリが存在する(図7参照)。この場合、TCP/IPモジュール113-2は、ARPテーブル117-2に送信元のIPアドレスCIP=192.168.1.1/24及びMACアドレスCMAC=MAC1を登録する(図13ステップS34)。そしてTCP/IPモジュール113-2は、EIMT116-2を参照することで、論理エクステントLEIP=192.168.1.12/24に対応付けられているMACアドレスLEMAC=MAC2を取得して、論理エクステントIPアドレスLEIP=192.168.1.12/24及びMACアドレスLEMAC=MAC2を送信元(応答元)とし、IPアドレス(コンテナIPアドレス)CIP=192.168.1.1/24及びMACアドレスCMAC=MAC1を送信先(応答先)とするARP応答パケットを生成する(図13ステップS35)。TCP/IPモジュール113-2は、生成されたARP応答パケットを、ノード10-2のイーサネットコントローラ114-2により矢印505aで示されるようにARP要求パケットの送信元に返す(図13ステップS36)。
ノード10-2から返されたARP応答パケットは、ノード10-1のイーサネットコントローラ114-1で受け取られる(図12ステップS26)。イーサネットコントローラ114-1は、受け取ったARP応答パケットの解析を矢印505bで示されるようにTCP/IPモジュール113-1に依頼する。これを受けてTCP/IPモジュール113-1は、ARP応答パケットの送信元(応答元)のIPアドレス(論理エクステントIPアドレス)LEIP=192.168.1.12/24及びMACアドレスLEMAC=MAC2をARPテーブル117-1に登録して(図12ステップS27)、当該IPアドレス(論理エクステントIPアドレス)LEIPで指定される論理エクステントLEIPのMACアドレスLEMAC=MAC2を得る(図12ステップS23)。これにより、TCP/IPモジュール113-1におけるアドレス解決処理(図11AステップS7)は終了する。
次にTCP/IPモジュール113-1は、論理エクステントLEIP=192.168.1.12/24に対するアクセス要求を含むTCP/IPパケットを、CMAC=MAC1を送信元MACアドレスとし、LEMAC=MAC2を送信先MACアドレスするイーサネットフレームで包む。TCP/IPモジュール113-1は、このイーサネットフレームを、矢印506aで示されるようにノード10-1のイーサネットコントローラ114-1を介して送信する(図12ステップS9)。
ノード10-1から送信されたイーサネットフレームは、ノード10-2のイーサネットコントローラ114-2で受け取られる。イーサネットコントローラ114-2は、受け取ったイーサネットフレームを矢印506bで示されるようにノード10-2のTCP/IPモジュール113-2に送る。
TCP/IPモジュール113-2は、イーサネットフレームを分解して、当該フレーム中のTCP/IPパケットに含まれているアクセス要求を、矢印506cで示されるように、ノード10-2のIOドライバ121-2に渡すことにより、当該アクセス要求で指定されるアクセス処理を当該IOドライバ121-2に依頼する(図12ステップS10)。IOドライバ121-2は、TCP/IPモジュール113-2からアクセス要求を受け取ると、図10に示すLPMT122-2を参照することにより、当該アクセス要求で指定されている論理エクステントLEIP=192.168.1.12/24に対応付けられている物理ボリュームID(PVID)=1及び物理エクステントID(PEID)=2を取得する(図14ステップS41,S42)。これによりIOドライバ121-2は、矢印508で示されるように、ディスク123-2に確保されているPVID=1の物理ボリューム内のPEID=2の物理エクステントにアクセスする(図14ステップS43)。
次にIOドライバ121-2は、アクセスの結果を戻り値として、矢印509aで示すようにノード10-2のTCP/IPモジュール113-2にアクセス要求に対する応答を返す(図14ステップS44)。するとTCP/IPモジュール113-2は、矢印509bで示すように、イーサネットコントローラ114-2を介して、アクセス要求元のノード10-1のTCP/IPモジュール113-1に応答を返す(図11BステップS12)。
ノード10-1のTCP/IPモジュール113-1はノード10-2のTCP/IPモジュール113-2からの応答をイーサネットコントローラ114-1を介して受け取ると、矢印509cで示すようにIOマネージャ112-1に応答を返す(図11BステップS13)。これを受けてIOマネージャ112-1は、矢印509dで示すようにターゲットインタフェイス111-1に応答を返す(図11BステップS14)。するとターゲットインタフェイス111-1は、矢印509eで示すようにホストに応答を返す(図11BステップS15)。
このように本実施形態においては、ノード10-i(i=1,2,3)が有する物理ボリューム/物理エクステント分のエントリだけをLPMT122-iに持たせる構成を適用しながら、当該ノード10-iに対するホストからのアクセス要求に従ってアクセスされるべき論理エクステントが他ノードで管理されている場合でも、当該論理エクステントが格納されている物理ボリューム/物理エクステントにアクセスすることができる。よってストレージクラスタを構成するノード10-1〜10-3の各々は、従来技術とは異なって、全てのノード10-1〜10-3の物理ボリューム/物理エクステント分のエントリを持ったLPMTを管理する必要がない。これにより、従来技術と比較して、ストレージクラスタを構成する各ノード10-1〜10-3が管理しなければならない情報量を減らすことができる。また、以下に述べる論理エクステントの移動(またはコピー)に際して、各ノードが管理する情報の更新作業量を少なくして、アクセス性能を向上させることもできる。
次に、論理エクステントの移動(マイグレーション)について説明する。
ストレージクラスタでは、当該ストレージクラスタの性能向上や運用上の課題解決のために、あるノードの論理エクステントを、当該論理エクステントが含まれる論理ボリュームを(当該ノードと共に)構成する別のノードの物理ボリューム/物理エクステントに移動することが行われる。このときには、ホストからのアクセスを継続させながら高速に且つ安全に移動を実現させるため、移動に必要な、ストレージクラスタ内のノードの更新情報量を極力少なくすることが望ましい。本実施形態では、移動対象論理エクステント(移動元論理エクステント)を含む論理ボリュームのネットワークアドレス空間の中から、未使用のホストアドレス(IPアドレス)を選択し、これを仮論理エクステントIPアドレスとして一時的に使用することで、論理エクステントの移動を実現する。
以下、論理エクステントの移動について、図16A乃至図16C及び図17を参照して説明する。図16A乃至図16Cは論理エクステント移動処理の手順を示すフローチャート、図17は論理エクステント移動を説明するための図である。
まず、図1のストレージクラスタにおいて、LVMT115-1〜115-3、EIMT116-1〜116-3及びLPMT122-1〜122-3が、それぞれ図4、図7及び図10のように構成されているものとする。この状態で、構成管理部30が、ある論理エクステントLEIP(つまり、論理エクステントIPアドレスLEIPが割り当てられている論理エクステント)を移動対象(移動元)として決定すると共に、当該論理エクステントLEIPの移動先となる、ノード、物理ボリュームTPVID及び物理エクステントTPEIDを決定したものとする(ステップS51)。TPVID及びTPEID中の“T”は移動先を表す記号であり、物理ボリュームTPVID及び物理エクステントTPEIDは、それぞれ物理ボリュームIDがTPVID(PVID)の物理ボリューム及び物理エクステントIDがTPEID(PEID)の物理エクステントを指す。
本実施形態では、ノード10-1によって管理されている論理エクステント4(論理エクステントIPアドレスLEIP=192.168.1.14)を、ノード10-3の物理ボリューム2(TPVID=2)/物理エクステント1(TPEID=1)に移動することが決定されたものとする。本実施形態において論理エクステント4は、ノード10-1の物理ボリューム2(PVID=2)/物理エクステント2(PEID=2)に格納(配置)されている。即ち、ノード10-1の物理ボリューム2(PVID=2)/物理エクステント2(PEID=2)に格納されている論理エクステント4(論理エクステントIPアドレスLEIP=192.168.1.14)を、図17において矢印700で示されるように、ノード10-3の物理ボリューム2(TPVID=2)/物理エクステント1(TPEID=1)に移動するものとする。
構成管理部30は、上記ステップS51において、移動に使用する仮論理エクステントIPアドレスTLEIPとして、移動対象(移動元)論理エクステントを含む論理ボリュームLVIDのネットワークアドレス空間の中から未使用のホストアドレスを選択して割り当てる。移動対象論理エクステントが論理エクステント4(LEIP=192.168.1.14/24)の例では、論理ボリューム1(LVID=1)のネットワークアドレス空間192.168.1.0/24の中から未使用のホストアドレスが選択される。ここでは、仮論理エクステントIPアドレスとしてTLEIP(LEIP)=192.168.1.101/24が選択されたものとする。なお、未使用のホストアドレスが存在しない場合には、論理エクステント移動不可と判定される。
次に構成管理部30は、移動先ノード10-3が有するLPMT122-3の中から移動先とする物理ボリューム2(TPVID=2)/物理エクステント1(TPEID=1)のエントリを探し、当該物理ボリューム2(TPVID=2)/物理エクステント1(TPEID=1)の論理エクステントIPアドレスLEIPとして、仮論理エクステントIPアドレス“192.168.1.101/24”(TLEIP=192.168.1.101/24)を割り当てる(ステップS52)。このときのLPMT122-1〜122-3の状態を図18に示す。図18において、ハッチングが施されている部分が、仮論理エクステントIPアドレスが割り当てられた箇所を示す。
次に構成管理部30は、移動元のノード10-1のEIMT116-1に、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24と、それにバインドするノード10-3の(イーサネットコントローラ114-3が持つ)MACアドレスTLEMAC=MAC3とを含むエントリを追加設定する(ステップS53)。このときのEIMT116-1〜116-3の状態を図19に示す。図19において、ハッチングが施されている部分が、追加設定されたエントリを示す。
次に構成管理部30は、移動先のノード10-3のTCP/IPモジュール113-3により、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24とそのMACアドレスTLEMAC=MAC3のGratuitous ARP要求を、イーサネットコントローラ114-3を介してブロードキャストさせる(ステップS54)。Gratuitous ARP(以下、G−ARPと称する)要求は、周知のように、IPアドレスが付け変わったことを他のノードに通知するのに用いられる特別のARPである。
このノード10-3のTCP/IPモジュール113-3によるG−ARP要求の送出により、当該ノード10-3を除くストレージクラスタの全ノード、つまりノード10-1,10-2の、ARPテーブル117-1,117-2の該当するエントリが初期化される。即ち、ARPテーブル117-1,117-2に既に仮論理エクステントIPアドレスTLEIP=192.168.1.101/24を含むエントリが存在する場合、当該エントリ中のMACアドレスがTLEMAC=MAC3に更新される。
次に構成管理部30は、移動元のノード10-1のIOドライバ121-1に対して、移動元論理エクステントLEIP=192.168.1.14/24のデータを、仮論理エクステントTLEIP=192.168.1.101/24にコピーするよう要求する(ステップS55)。これを受けてIOドライバ121-1は、論理エクステントLEIP=192.168.1.14/24のデータを読み込んで、ノード10-1のTCP/IPモジュール113-1に対して当該データを仮論理エクステントTLEIP=192.168.1.101/24に書き込むように要求する(ステップS56)。
するとTCP/IPモジュール113-1は、移動元論理エクステントLEIP=192.168.1.14/24を管理するノード10-1(自ノード)のコンテナIPアドレスCIP=192.168.1.1/24を送信元とし、移動先の仮論理エクステントIPアドレスTLEIP=192.168.1.101/24を送信先とするTCP/IPパケットを生成する(ステップS57)。このTCP/IPパケットは、移動元論理エクステントLEIP=192.168.1.14/24のデータを仮論理エクステントTLEIPに書き込むための書き込み要求を含む。
次にTCP/IPモジュール113-1は、生成されたTCP/IPパケットをイーサネットフレームで包むため、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24のMACアドレスTLEMACを解決するためのアドレス解決処理を行う(ステップS58)。このアドレス解決処理は図10のフローチャートと同様の手順で行われる。即ちノード10-1のARPテーブル117-1に仮論理エクステントTLEIPのエントリ(目的エントリ)が存在するならば、TCP/IPモジュール113-1は当該エントリからMACアドレスTLEMACを取得する。これに対し、ARPテーブル117-1に目的エントリが存在しないならば、TCP/IPモジュール113-1は、仮論理エクステントTLEIPを管理するノード10-3(移動先ノード10-3)に対するARP要求及び当該ノード10-3からのARP応答により、仮論理エクステントTLEIPのMACアドレスTLEMAC=MAC3を取得する。この場合、TCP/IPモジュール113-1は、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24及びMACアドレスTLEMAC=MAC3の対をARPテーブル117-1に登録する。
次にTCP/IPモジュール113-1は、送信元(移動元)MACアドレスをコンテナIPアドレスCIP=102.168.1.1/24(を有するノード10-1のイーサネットコントローラ114-1)のMACアドレスCMAC=MAC1とし、送信先(移動先)MACアドレスを仮論理エクステントIPアドレスTLEIP=192.168.1.101/24(を管理するノード10-3のイーサネットコントローラ114-3)のMACアドレスTLEMAC=MAC3とする(つまりノード10-3を宛先とする)、TCP/IPパケットを包んだイーサネットフレームを生成する(ステップS59)。このステップS59においてTCP/IPモジュール113-1は、生成されたイーサネットフレームをイーサネットコントローラ114-1を介して移動先のノード、つまりノード10-3に送信する。このイーサネットフレームは、移動先のノード10-3のイーサネットコントローラ114-3で受信されて、当該ノード10-3のTCP/IPモジュール113-3に渡される。
移動先のノード10-3のTCP/IPモジュール113-3は、通常のIO処理と同様にして、移動元のノード10-1から送られたイーサネットフレームに包まれているTCP/IPパケットからアクセス要求を抽出し、当該アクセス要求をノード10-3のIOドライバ121-3に送ることで、要求されたアクセス処理を依頼する(ステップS60)。するとIOドライバ121-3は、ノード10-3(自ノード)のLPMT122-3を参照することで、書き込み先の仮論理エクステントTLEIP=192.168.1.101/24が配置(格納)されている物理ボリューム2/物理エクステント1の物理ボリュームID(TPVID=2)/物理エクステントID(TPEID=1)を取得する(ステップS61)。このステップS61において、IOドライバ121-3は、取得された物理ボリュームID(TPVID=2)/物理エクステントID(TPEID=1)で指定される、物理ボリューム2(TPVID=2)内の物理エクステント1(TPEID=1)にデータを書き込む。
アクセス要求で指定されたデータ書き込み(アクセス処理)が完了すると、IOドライバ121-3は処理完了をノード10-3のTCP/IPモジュール113-3に応答する(ステップS62)。このステップS62において、TCP/IPモジュール113-3は、処理完了をノード10-3のイーサネットコントローラ114-3、並びに移動元のノード10-1のイーサネットコントローラ114-1及びTCP/IPモジュール113-1を介して、当該移動元のノード10-1のIOドライバ121-1に応答する。これを受けて、IOドライバ121-1から構成管理部30に処理完了(コピー完了)が通知される。
構成管理部30は、IOドライバ121-1からコピー完了通知を受け取ると、現在、移動対象論理エクステントLEIP=192.168.1.14/24を含む論理ボリュームLVID=1に対するホストからのアクセス要求を受け付けているターゲットインタフェイス、つまりノード10-1のターゲットインタフェイス111-1を、論理エクステントLEIP=192.168.1.14/24に対するアクセス要求の受け付けの一時待ち状態に設定する(ステップS63)。この一時待ち状態の期間にホストから与えられる論理エクステントLEIP=192.168.1.14/24に対するアクセス要求はターゲットインタフェイス111-1で受け付けられずに待たされる。
次に構成管理部30は、移動先のノード10-3のTCP/IPモジュール113-3により、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24とそのMACアドレスをNULLとするG−ARP要求をイーサネットコントローラ114-3を介してブロードキャストさせる(ステップS64)。このノード10-3のTCP/IPモジュール113-3によるG−ARP要求の送出により、既に仮論理エクステントIPアドレスTLEIP=192.168.1.101/24のエントリを含むARPテーブル117-iを持つ(図1のストレージクラスタ内の)全てのノード10-iは、当該エントリを初期化する。
次に構成管理部30は、移動先のノード10-3のEIMT116-3から、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24とそのMACアドレスTLEMAC=MAC3との対が保持されているエントリを検索し、そのエントリ中のIPアドレス“192.168.1.101/24”、つまり仮論理エクステントIPアドレス(192.168.1.101/24)を、移動対象論理エクステントIPアドレスLEIP=192.168.1.14/24で書き換える(ステップS65)。このときのEIMT116-1〜116-3の状態を図20に示す。図20において、ハッチングが施されている部分は、仮論理エクステントIPアドレス(192.168.1.101/24)が移動対象論理エクステントIPアドレスLEIP=192.168.1.14/24で書き換えられたエントリを示す。
次に、構成管理部30は、移動先のノード10-3のLPMT122-3から、物理ボリューム2(TPVID=2)/物理エクステント1(TPEID=1)に付与した仮論理エクステントIPアドレスTLEIP=192.168.1.101/24を検索して、当該仮論理エクステントIPアドレスTLEIP=192.168.1.101/24を移動対象論理エクステントIPアドレスLEIP=192.168.1.14/24で置き換える(ステップS66)。これにより、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24は、未使用として解放される。このときのLPMT122-1〜122-3の状態を図21に示す。図21において、ハッチングが施されている部分は、仮論理エクステントIPアドレスTLEIP=192.168.1.101/24が移動対象論理エクステントIPアドレスLEIP=192.168.1.14/24で置き換えられた箇所を示す。
次に構成管理部30は、移動元のノード10-1のEIMT116-1から、論理エクステントIPアドレスLEIP=192.168.1.14/24とそのMACアドレスLEMAC=MAC1とを含むエントリを検索して、当該エントリを削除する(ステップS67)。このときのEIMT116-1〜116-3の状態を図22に示す。図22において、ハッチングが施されている部分は、削除されたエントリを示す。
次に構成管理部30は、移動元のノード10-1のLPMT122-1から、論理エクステントIPアドレスLEIP=192.168.1.14/24を含むエントリを検索し、当該論理エクステントIPアドレスLEIPをNULLに設定することで、当該エントリを論理的に削除する(ステップS68)。これにより、論理エクステントLEIP=192.168.1.14/24が配置されていたノード10-1内の物理ボリューム2(PVID=2)の物理エクステント2(PEID=2)が解放される。このときのLPMT122-1〜122-3の状態を図23に示す。図23において、ハッチングが施されている部分は、論理エクステントIPアドレスLEIPがNULLに設定された箇所を示す。
次に構成管理部30は、移動先のノード10-3のTCP/IPモジュール113-3により、論理エクステントIPアドレスLEIP=192.168.1.14/24とそのMACアドレスTLEMAC=MAC3に関するG−ARP要求をイーサネットコントローラ114-3を介してブロードキャストさせる(ステップS69)。これにより、論理エクステントLEIP=192.168.1.14/24の移動が完了したことが、ノード10-3を除くストレージクラスタの全ノード、つまりノード10-1,10-2に通知され。この結果、ノード10-1,10-2のARPテーブル117-1,117-2の該当するエントリが初期化される。即ち、ノード10-1,10-2のARPテーブル117-1,117-2に既に論理エクステントIPアドレスTLEIP=192.168.1.14/24を含むエントリが存在する場合、当該エントリ中のMACアドレスがTLEMAC=MAC3に更新される。
次に構成管理部30は、移動が完了した論理エクステントLEIP=192.168.1.14/24に対するホストからのアクセス要求の受け付けの一時待ち状態にあるターゲットインタフェイス、つまりノード10-1のターゲットインタフェイス111-1に対して、当該一時待ち状態を解除する(ステップS70)。これにより一連の論理エクステント移動処理は終了する。
[変形例]
次に、上記実施形態の変形例について説明する。
上記実施形態では、ホストから要求されたアクセス先を示す論理ブロックアドレス(論理アドレス)LBAが属する論理ボリューム内の論理エクステントに割り当てられたIPアドレス(論理エクステントIPアドレス)LEIPが、前記(1)式に従う演算によって求められる(特定される)。
本変形例の特徴は、このような演算を行うことなく、論理ブロックアドレスLBAが属する論理ボリューム内の論理エクステントに割り当てられた論理エクステントIPアドレスLEIPを求める点にある。そのため、本変形例では、図1に示すストレージクラスタ内の各ノード10-i(i=1,2,3)に、図24に示す構造の論理エクステント管理テーブル(LEMT:Logical Extent Management Table)118-iが設けられる。
LEMT118-iの各エントリは、論理ボリュームを構成する論理エクステントの論理ブロックアドレスLBA(論理アドレス)の範囲(論理ブロックアドレス範囲:Logical Block Address Range)LBARANGEと当該論理エクステントに割り当てられる論理エクステントIPアドレス(Logical Extent IP-Address)LEIPの各項目を有する。IOマネージャ112-iはLEMT118-iから、アクセス要求で指定される論理ブロックアドレスLBAを含む論理ブロックアドレス範囲LBARANGEが設定されているエントリを検索することにより、当該論理ブロックアドレス範囲LBARANGEと対をなす論理エクステントIPアドレスLEIPを取得(特定)する。ここで、LVMT115-iの各エントリに、論理エクステントサイズ(LESIZE)に代えて、論理ボリュームを構成する論理エクステントの数を持たせると良い。
本変形例によれば、上記実施形態と異なって、論理ボリュームを構成する複数の論理エクステントのサイズが一定でなくても(つまり論理エクステント毎にサイズが異なっていても)、また論理ボリュームを構成する複数の論理エクステントの配置順に、連続する論理エクステントIPアドレス(ホストアドレス)が割り当てられなくても、論理ブロックアドレスLBAが属する論理ボリューム内の論理エクステントに割り当てられた論理エクステントIPアドレスLEIPを、LEMT118-iから速やかに取得することができる。但し、LEMT118-iのエントリ数は、論理ボリュームを構成する論理エクステントの数に比例する。
なお、本発明は、上記実施形態またはその変形例そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態またはその変形例に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態またはその変形例に示される全構成要素から幾つかの構成要素を削除してもよい。
10-1〜10-3…ノード(ストレージ装置)、11-1〜11-3…コントローラ部、12-1〜12-3…ストレージ部、30…構成管理部、40…ネットワーク、111-1〜111-3…ターゲットインタフェイス、112-1〜112-3…IOマネージャ、113-1〜113-3…TCP/IPモジュール(アドレス解決プロトコルモジュール)、114-1〜114-3…イーサネットコントローラ、115-1〜115-3,115-i…論理ボリューム管理テーブル(LVMT)、116-1〜116-3,116-i…イーサネットインタフェイス管理テーブル(EIMT)、117-1〜117-3…アドレス解決プロトコル(ARP)テーブル、118-i…論理エクステント管理テーブル(LEMT)、121-1〜121-3…IOドライバ、122-1〜122-3,122-i…論理エクステント−物理エクステントマッピングテーブル(LPMT、IPアドレステーブル)、123-1〜123-3…ディスク。