以下に、本発明を実施するための形態について図面を用いて説明する。ただし、以下に述べる実施形態には、本発明を実施するために技術的に好ましい限定がされているが、発明の範囲を以下に限定するものではない。なお、以下の実施形態の説明に用いる全図においては、特に理由が無い限り、同様箇所には同一符号を付す。また、以下の実施形態において、同様の構成・動作に関しては繰り返しの説明を省略する場合がある。
(第1の実施形態)
[構成]
まず、本発明の第1の実施形態に係るストレージシステムの構成について図面を参照しながら説明する。なお、図面においては、同じ機能を有する構成要素については代表的な符号を付与するとともに、個別の要素を区別するための識別番号をハイフン「−」に続けて付与することがある。例えば、後述するストレージ21−11に関しては、ハイフン「−」の前の「21」が代表的な符号であり、ハイフン「−」の後の「11」が識別番号である。
図1は、本実施形態に係るストレージシステムの全体構成を示す概念図である。なお、図1は、多重化されたストレージシステムの一例として、三重ミラーストレージシステムを示す。これ以降、三重ミラーストレージシステムを例として説明していくが、本実施形態に係るストレージシステムは三重以上に多重化されたストレージシステムにも適用することができる。
図1のように、本実施形態に係るストレージシステムは、少なくとも一つの管理サーバ11、複数のゾーン20に分散された複数のストレージ21、ロードバランサ40を備える。管理サーバ11、ストレージ21およびロードバランサ40は、フロントエンドLAN71(Local Area Network)によって互いに接続されている。フロントエンドLAN71は、クライアント50にサービスを提供するためのLANである。また、フロントエンドLAN71には、少なくとも一つのクライアント50が接続される。なお、クライアント50は、ストレージシステムの構成の一部とみなしてもよいし、ストレージシステムを外部から利用するものとみなしてもよい。
管理サーバ11は、クライアント50からのデータを含むファイルへのアクセス要求に応じて、クライアント50の要求するファイルが格納されているストレージ21をクライアント50に通知する。管理サーバ11は、一般的なサーバの機能を有する管理サーバ装置である。
管理サーバ11は、各ゾーン20内のストレージ21間におけるファイルのレプリケーションに関する情報(レプリケーション/ステータス情報とも呼ぶ)を、そのファイルのレプリケート先のストレージ21から取得する。
図1のように、複数の管理サーバ11のうち管理サーバ11−1がレプリケートされたファイルに関するレプリケーション情報を受信した場合、管理サーバ11−1は、他の管理サーバ11−2および11−3にそのレプリケーション情報を送信する。
管理サーバ11は、クライアント50からファイルへのアクセス要求があった場合、ストレージから受信した情報に基づいて、適切なアクセス先となるストレージ21をクライアント50に通知する。
なお、図1は、本実施形態に係るストレージシステムが3つの管理サーバ11を備える例を示すが、管理サーバ11は一つであってもよいし、三つ以上であってもよい。
複数のストレージ21は、複数のゾーン20に分散されて配置される。各ストレージ21は、一般的なストレージの機能を有するストレージ装置である。
複数のゾーン20は、互いに離れた場所に配置される。例えば、ゾーン20−1(以下、ゾーン1)で障害が発生した場合であっても、その障害の影響が及ばないような場所にゾーン20−2(以下、ゾーン2)やゾーン20−3(以下、ゾーン3)は配置される。自然災害に対しての冗長性を持たせるためには、各ゾーン20を互いに遠隔して配置することが好ましい。また、施設内で起こる障害に対しての冗長性を持たせるためには、施設内において各ゾーン20を離れた位置に配置するように構成してもよい。
各ゾーン20は、インターネットやLAN、WAN(Wide Area Network)などのネットワーク80によって互いに接続される。各ゾーン20を接続するネットワーク80は、単一のネットワークであってもよいし、複数の異なるネットワークであってもよい。なお、ネットワーク80がインターネットである場合は、ネットワーク80は本実施形態に係るストレージシステムの構成に含まない。一方、ネットワーク80がLANやWANである場合は、ネットワーク80を本実施形態に係るストレージシステムの構成に含んでもよい。
図1の例では、ゾーン1にはストレージ21−11および21−12、ゾーン2にはストレージ22−21および22−22、ゾーン3にはストレージ22−31が配置されている。また、図1には、各ゾーン20にファイルA、B、C、DおよびEが3重化されて格納されている。
図2には、本実施形態に係るストレージシステムに関して、ゾーン2のみを抜き出して図示している。図2において、各ゾーン2内の各ストレージ21(21−21、21−22および21−23)は、フロントエンドLAN71を含むネットワーク80に接続される。また、各ゾーン2内の各ストレージ21は、フロントエンドLAN71とは異なるバックエンドLAN72によって互いに接続されている。各ゾーン2内の各ストレージは、バックエンドLAN72を介して同期している。なお、ゾーン2以外の各ゾーン20(ゾーン1および3)も、ゾーン2と同様の接続状態をもつ。
図3に、ゾーン2内におけるファイルのレプリケーションの一例を示す。図3は、ストレージ21−21(以下、ストレージ1)のファイルAをストレージ21−22(以下、ストレージ2)にレプリケートし、ストレージ21−22のファイルBをストレージ21−23(以下、ストレージ3)にレプリケートする例を示す。ゾーン2内の各ストレージ21は、バックエンドLAN72を介してファイルをレプリケートする。
なお、ファイルのレプリケーションは二つのストレージ間で行えばよいが、ゾーン2に含まれる三つ以上のストレージ21間でレプリケーションを行ってもよい。また、ゾーン2以外のゾーン1および3においても、ゾーン2と同様にレプリケーションが行われる。
ロードバランサ40は、クライアント50からのファイルアクセス要求に対応させて、ネットワーク80上の負荷を分散する負荷分散装置である。ロードバランサ40は、一般的な負荷分散装置であり、例えば、ラウンドロビン方式や最小接続方式、最速時間応答方式などの方式によって要求の割り当てを行う。
ロードバランサ40は、管理サーバ11およびクライアント50が接続されるフロントエンドLAN71に接続される。なお、ロードバランサ40は、管理サーバ11と各ゾーン20との間に挿入するように配置してもよい。また、ロードバランサ40は、冗長構成を有していてもよい。
クライアント50は、ファイルにアクセスするクライアント装置である。クライアント50は、所望するファイルにアクセスするため、そのファイルへのアクセス要求を管理サーバ11に送信する。また、クライアント50は、管理サーバ11から通知されたストレージ21にアクセスする。
[ストレージ]
次に、ストレージ21の内部構成について図4を用いて説明する。複数のストレージ21のうち所定条件に達したデータを格納するストレージ21(第1のストレージ)は、そのファイルを同じゾーン20内部の他のストレージ21(第2のストレージ)にレプリケートする。なお、所定条件とは、データへのアクセスが許容される上限値であり、任意に設定することができる。
例えば、あるクライアント50がストレージ21のデータにアクセスしていれば、ストレージ21が格納するそのデータへのアクセスが所定条件に達したとみなせる。また、例えば、あるクライアント50がストレージ21のデータにアクセスする頻度が一定の閾値を超えた段階で、ストレージ21が格納するそのデータへのアクセスが所定条件に達したとみなしてもよい。また、例えば、あるクライアント50がストレージ21のデータにアクセスする単位時間当たりの頻度が一定の閾値を超えた段階で、ストレージ21が格納するそのデータへのアクセスが所定条件に達したとみなしてもよい。また、例えば、あるクライアント50がストレージ21のデータにアクセスし、そのデータを更新する頻度が一定の閾値を超えた段階で、ストレージ21が格納するそのデータへのアクセスが所定条件に達したとみなしてもよい。
図4は、ストレージ21内部の制御手段30の構成を示すブロック図である。図4のように、ストレージ21は、負荷検知部31、レプリケーション制御部32、ステータス制御部33、情報送信部34を有する。また、ストレージ21は、同一ゾーン20内の各ファイルのレプリケーションに関するレプリケーション情報と、レプリケートされた各ファイルが最新であるか否かを示すステータス情報とを生成し、管理する。なお、レプリケーション情報とステータス情報とを併せてレプリケーション/ステータス情報とも呼ぶ。また、レプリケーション/ステータス情報は、レプリケーション/ストアオーナー(replication/store owner)情報ともよぶ。
なお、図4のストレージ21内の構成においては、ファイルを格納する格納部、ファイルの送受信を行う送受信部などは省略している。また、ゾーン2以外のゾーン1および3の各ストレージ21も、ゾーン2と同様の構成をもつ。
負荷検知部31は、ファイルへのアクセスによる負荷を検知する。
例えば、ファイルAへのアクセス頻度が大きくなった場合、負荷検知部31は、ファイルAへのアクセスが高頻度であると検知する。負荷検知部31が負荷の大きいファイルを検知すると、ストレージ21は、自身のレプリケーション機能によって、対象ファイルを同一ゾーン20内の他のストレージ21にレプリケートする。すなわち、負荷検知部31によって負荷が大きいと判定されたファイルは、ゾーン20内の他のストレージ21にレプリケートされることになる。なお、負荷検知部31は、ファイルAへのアクセス頻度以外の所定条件に基づいてレプリケートするファイルを判定してもよい。
レプリケーション制御部32は、同一ゾーン20内のストレージ21間でレプリケートされたファイルに関するレプリケーション/ステータス情報を生成し、管理する。具体的には、レプリケート先のレプリケーション制御部32は、レプリケートされたファイルを格納するストレージ21に関する情報を含むレプリケーション/ステータス情報を生成し、生成した情報を管理する。
図5に、レプリケーション直後に生成されるレプリケーション/ステータス情報を格納する情報テーブル200の一例(レプリケーション/ステータス情報201および202)を示す。以下、レプリケーション/ステータス情報201を情報テーブル201、レプリケーション/ステータス情報202を情報テーブル202と記載する。例えば、情報テーブル201はゾーン2内のストレージ1に格納され、情報テーブル202はストレージ2に格納される。
図5の情報テーブル201は、レプリケートされたファイルに関するレプリケーション情報として、ストレージ1が格納するファイルのファイル名、ストレージ1の属するゾーン20のゾーン番号を格納する。また、図5の情報テーブル201は、各ストレージ21に格納されたファイルが最新であるか否かを示すステータス情報を格納する。
図5のように、情報テーブル201は、各ストレージ21に格納されたファイルのステータス情報を格納する。ファイルのステータス情報は、ストレージ21に格納されたファイルが最新である場合はvalid(有効)、最新ではない場合はinvalid(無効)になる。図5の例では、ストレージ1からストレージ2へとファイルAをレプリケーションした直後は、ストレージ1および2に格納されたファイルAは共に最新であるため、情報テーブル201および202のステータス状態は共にvalidである。
図5の情報テーブル201には、ストレージ1が格納するファイルAのファイル名の欄に「/mnt/home/dirA/fileA」、ストレージ1が属するゾーン20の番号の欄にゾーン2の番号「2」が格納されている。同様に、図5の情報テーブル201には、ストレージ1が格納するファイルBのファイル名の欄に「/mnt/home/dirB/fileB」、ストレージ1が属するゾーン20の番号の欄にゾーン2の番号「2」が格納されている。
情報テーブル202についても、情報テーブル201と同様の情報が格納される。
なお、図5の情報テーブル201および202においては、ファイルAのレプリケーション/ステータス情報に関して、ストレージ1およびストレージ2のいずれがレプリケート元・レプリケート先になるのかを区別せずに格納している。図5の情報テーブル201および202は、いずれのストレージ21がレプリケート元・レプリケート先であるのか明確にする情報を含んでいてもよい。これ以降、レプリケート元のストレージ21(第1のストレージとも呼ぶ)と、レプリケート先のストレージ21(第2のストレージとも呼ぶ)とを併せて、レプリケーション関係にあるストレージ21とも呼ぶ。
例えば、ゾーン2内のストレージ1からストレージ2にファイルAがレプリケートされたものとする。このとき、ストレージ2のレプリケーション制御部32は、ファイルAのレプリケート元であるストレージ1の情報と、レプリケート先であるストレージ2の情報とを含むレプリケーション情報を生成する。併せて、ストレージ2のレプリケーション制御部32は、ストレージ1および2に格納されたファイルAが最新であるか(valid)否か(invalid)を示すステータス情報を生成する。すなわち、ストレージ2のレプリケーション制御部32は、レプリケートされたファイルAのレプリケーション/ステータス情報を生成する。この段階では、ストレージ2のレプリケーション制御部32によって、図5の下段の情報テーブル202に記載された内容のレプリケーション/ステータス情報が生成されている。
この後、ストレージ1とストレージ2との間で同期がとられ、図5の上段の情報テーブル201に記載された内容のレプリケーション/ステータス情報がストレージ1にも生成される。なお、レプリケーション/ステータス情報は、図5のようなテーブル形式をもたなくてもよい。
レプリケーション制御部32は、レプリケーション/ステータス情報を生成すると、生成したレプリケーション/ステータス情報を情報送信部34に出力する。
ステータス制御部33は、ストレージ21に格納された各ファイルのレプリケーション/ステータス情報に含まれるステータス情報を生成し、管理する。
具体的には、レプリケートされたファイルが更新された際に、そのファイルを格納するストレージ21のステータス制御部33は、各ストレージ21に格納されたそのファイルに関するステータス情報を生成する。ステータス制御部33は、自身が生成したステータス情報に基づいて、レプリケーション制御部32によって生成されたレプリケーション/ステータス情報に含まれるステータス情報を更新する。
例えば、既にファイルAのレプリケーション/ステータス情報が生成されている状況において、ストレージ2に格納されたファイルAがクライアント50−1(以下、クライアント1)によって更新されたものとする。このとき、ストレージ2のステータス制御部33は、ストレージ2に格納されたファイルAは最新であり(valid)、ストレージ1に格納されたファイルAは最新ではない(invalid)というステータス情報を生成する。なお、このとき変更されたステータス情報は、ストレージ2からストレージ1に送信されることによって、ストレージ1とストレージ2の同期がとられる。
ファイル変更時における情報テーブル201および202のステータス情報の一例を図6に示す。図6は、ストレージ2のファイルAが変更され、ストレージ1のファイルBが変更された例を示す。このとき、ファイルAに関しては、ストレージ2の方が最新であるためにvalidになり、ストレージ1の方は最新ではないためにinvalidになる。一方、ファイルBに関しては、ストレージ1の方が最新であるためにvalidになり、ストレージ2の方は最新ではないためにinvalidになる。なお、このとき変更されたステータス情報は、ストレージ1とストレージ2との間で同期がとられるため、情報テーブル201と202のステータス情報は同じになる。
通常、いずれかのストレージ21でファイルに変更があった場合、当該ファイルのステータス情報を変更した後に、再度ストレージ21間でレプリケーションを行い、当該ファイルのステータス情報を最新(valid)に戻す。再びレプリケーションされた後のファイルのステータス情報は、図5の情報ファイル201および202のように全て最新(valid)に戻る。
情報送信部34は、ストレージ21内でファイルのレプリケーションが行われると、そのファイルがレプリケートされたことを管理サーバ11に通知する。すなわち、情報送信部34は、レプリケーション制御部32によって生成されたレプリケーション/ステータス情報を管理サーバ11に送信する。なお、情報送信部34は、レプリケーション情報のみを管理サーバ11に送信するように設定してもよい。また、情報送信部34は、レプリケーション情報およびステータス情報のうち少なくとも一方を管理サーバ11に送信するように設定してもよい
例えば、ファイルAがストレージ1からストレージ2にレプリケートされた場合、情報送信部34は、ファイルAがストレージ1とストレージ2との間でレプリケートされたことを管理サーバ11に通知する。このとき、ファイルAのレプリケート先であるストレージ2の情報送信部34は、レプリケーション/ステータス情報を管理サーバ11に送信する。
また、情報送信部34は、クライアント50からファイルへのアクセスがあった場合、自装置が格納する当該ファイルが最新であればそのファイルへのアクセスを受け付ける。一方、情報送信部34は、自装置が格納する当該ファイルが最新でなければ、当該ファイルのステータス情報が最新(valid)であるストレージ21の情報をクライアント50に対して通知する。
例えば、図6の情報テーブル201のようなステータスの場合、クライアント1からストレージ1のファイルAへのアクセスがあったものとする。ストレージ1の情報送信部34は、ストレージ1のファイルAは最新ではない(invalid)ため、ファイルAのステータス情報と、最新のファイルAがストレージ2に格納されているという情報とをクライアント1に通知する。
[管理サーバ]
次に、管理サーバ11の内部構成について図7および図8を用いて説明する。
図7は、管理サーバ11が内部にハッシュ手段13を含むこと示すブロック図である。また、図8は、ハッシュ手段13内部の機能構成を示すが概念図である。
図7のように、各管理サーバ11−1〜3(以下、管理サーバ11)は、それぞれハッシュ手段13−1〜3(ハッシュ手段13)を含む。ハッシュ手段13は、クライアント50からファイルへのアクセス要求を受けた際に、そのファイルを格納するストレージ21の情報をクライアント50に返す。例えば、ハッシュ手段13は、ファイル名にいずれかのストレージ21を対応させた情報を含むハッシュ表を有し、そのハッシュ表に基づいてクライアント50からの要求に応える。
図8のように、ハッシュ手段13は、データ三重ミラーストレージシステム用ハッシュ手段131(以下、通常モード用ハッシュ手段131)、レプリケートモード用ハッシュ手段133を有する。ハッシュ手段13は、ファイルのレプリケーションが行われたストレージ21から受信したレプリケーション/ステータス情報を格納する。
ハッシュ手段13は、図9のレプリケーション情報テーブル300(以下、情報テーブル300)に含まれるようなレプリケーション情報を管理する。図9に示す管理サーバ11の情報テーブル300は、ファイルAがゾーン#2のストレージ1とストレージ2とに分散配置され、レプリケートモードであるという情報を有する。なお、情報テーブル300は、対象ファイルがどこのストレージ21においてレプリケートされたのかという情報を含むが、いずれのストレージ21に格納されたファイルが最新であるか否かを示す情報は含まない。また、情報テーブル300にレプリケート元とレプリケート先の情報を追加してもよい。
通常モード用ハッシュ手段131は、レプリケートされていないファイルに関して、ファイル名から格納場所を検索するハッシュ手段である。すなわち、レプリケートされていないファイルについては、通常モード用ハッシュ手段131が、ファイル名からファイルの格納場所を検索し、そのファイルが格納されるゾーン20およびストレージ21に関する情報を確定する。
レプリケートモード用ハッシュ手段133は、レプリケートされているファイルに関して、情報テーブル300を参照し、そのファイルのファイル名に紐付けられた格納場所を検索するハッシュ手段である。なお、レプリケートモード用ハッシュ手段133は、ファイル名に紐付けられた格納場所として、レプリケート元およびレプリケート先のいずれを選択してもよい。
ファイルがレプリケートされていない場合、レプリケートモード用ハッシュ手段133は、そのファイルのファイル名を用いて情報テーブル300から格納先を検索できない。なぜならば、情報テーブル300には、そのファイルに関するレプリケーション/ステータス情報が含まれないためである。そのため、レプリケートされていないファイルについては、通常モード用ハッシュ手段131が格納場所を検索する。
例えば、クライアント1からファイルAおよびBへのアクセス要求があったとする。ただし、ファイルAはレプリケートされており、ファイルBはレプリケートされていないものとする。
このとき、ファイルAはレプリケートされているため、レプリケートモード用ハッシュ手段133がファイルAのファイル名から情報テーブル300を参照し、レプリケート先の格納場所(ストレージ2)を検出する。また、ファイルBはレプリケーションされていないため、通常モード用ハッシュ手段131が、ファイル名から格納場所(ストレージ1)を確定する。
そして、ハッシュ手段13は、通常モード用ハッシュ手段131およびレプリケートモード用ハッシュ手段133が確定した格納先のうち、低負荷であるレプリケート先ストレージ2の情報をクライアント1に通知する。レプリケート元のストレージ1においてファイルAへのアクセスが高負荷となり、低負荷であるレプリケート先のストレージ2へのレプリケーションが行われたため、レプリケート先であるストレージ2のファイルAの方が低負荷であることになる。
以上が、本実施形態に係るストレージシステムの構成に関する説明である。
次に、本実施形態に係るストレージシステムにおける特徴的な処理について例を挙げて説明する。なお、以下の例においては、レプリケーション/ステータス情報に基づいて情報テーブル201、202および300が生成されるものとして説明する。
<レプリケーション処理>
ゾーン2のストレージ1に格納するファイルA(mnt/home/dirA/fileA)に対するクライアント1または2からのアクセスが高頻度であり、ストレージ1において高負荷が発生する例について説明する。なお、以下の例においては、ファイルB(mnt/home/dirB/fileB)へのアクセスについても同様である。
ストレージ1は、ファイルAをゾーン2内のストレージ2に対してバックエンドLAN72を介してレプリケートする。
ファイルAがレプリケートされるとき、ファイルAがレプリケートされ、そのレプリケート先がストレージ2であるというレプリケーション情報を含む情報テーブル202(図5下側)がストレージ2において生成される。情報テーブル202には、レプリケート元あるいはレプリケート先のいずれのファイルが最新であるのかをしめすステータス情報も格納される。ステータス情報は、レプリケート直後においては、いずれのファイルも最新である(valid)。ただし、レプリケーション情報は、情報テーブル202のようなテーブル形式ではなくてもよい。
ストレージ2が情報テーブル202の情報をストレージ1に伝播させると、ストレージ1はストレージ2から伝播された情報を情報テーブル201(図5上側)に格納する。ストレージ1が格納する情報テーブル201(図5上側)と、ストレージ2が格納する情報テーブル202(図5下側)とに格納された情報は、ストレージ1とストレージ2とが同期された段階で同じ情報を含む。
<ファイル更新>
クライアント1がストレージ2にアクセスし、ファイルAを更新しようとする例について説明する。
クライアント1がストレージ2のファイルAにアクセスすると、ストレージ2の情報テーブル202におけるファイルAのステータス情報は、ストレージ1の欄がinvalid、ストレージ2の欄がvalidに変更される(図6下側)。ストレージ2の情報テーブル202におけるファイルAのステータス情報はストレージ1にも伝播される。その結果、ストレージ1の情報テーブル201におけるファイルAのステータス情報も、ストレージ1の欄がinvalid、ストレージ2の欄がvalidに変更される(図6上側)。
ステータス情報の伝播後、ストレージ2のファイルAはクライアント1により変更可能となる。クライアント1によるストレージ2のファイルAの変更完了後、ファイルAがストレージ1とストレージ2との間でレプリケートされると、ストレージ1および2のステータス情報はともにvalidに遷移する(図5)。
同様に、クライアント2がストレージ1にアクセスし、ファイルBを更新しようとする場合について説明する。
クライアント2がストレージ1のファイルBを更新すると、ストレージ1の情報テーブル201におけるファイルBのステータス情報は、ストレージ1の欄がvalid、ストレージ2の欄がinvalidに変更される(図6下側)。ストレージ1の情報テーブル201におけるファイルBのステータス情報はストレージ2にも伝播される。その結果、ストレージ2の情報テーブル202におけるファイルBのステータス情報も、ストレージ1の欄がvalid、ストレージ2の欄がinvalidに変更される(図6上側)。
ステータス情報の伝播後、ストレージ1のファイルBはクライアント2により変更可能となる。クライアント2によるストレージ1のファイルBの変更完了後、ファイルBがストレージ1とストレージ2との間でレプリケーションされると、各ストレージのステータス情報はともにvalidに遷移する(図5)。
<負荷分散アクセス>
次に、ストレージ1が、ファイルAをゾーン2内の他のストレージ2に対してバックエンドLAN72を使用してファイルAをレプリケートするときの負荷分散アクセスの例について説明する。なお、ファイルB(mnt/home/dirB/fileB)へのアクセスについても同様である。
ファイルAがレプリケートされると、レプリケート先のストレージ2において、情報テーブル202(図5下段)が生成される。
ストレージ2は、情報テーブル202の情報に基づいて、ファイルAがストレージ1とストレージ2との間でレプリケートされたことを管理サーバ1に対して通知する。
管理サーバ1は、ファイルAがストレージ1とストレージ2との間でレプリケートされたという情報をストレージ2から受信し、受信した情報に基づいて情報テーブル300を生成し、生成した情報テーブル300を格納する。管理サーバ1は、ファイルAがレプリケートされ、そのレプリケート先のストレージがストレージ2であるという情報を含む情報テーブル300を管理サーバ2に伝播する。なお、この段階では、情報テーブル300が管理サーバ3には伝播していないものとする。
ここで、クライアント1がファイルAへのアクセスを管理サーバ2に要求する。
管理サーバ2は、レプリケートモード用ハッシュ手段133によって情報テーブル300を参照し、ファイルAのファイル名を用いてファイルAのレプリケート先の格納情報場所(ストレージ2)を引き出す。
ところで、ファイルAがレプリケートされていない場合、管理サーバ2は、クライアント1からのファイルAへのアクセス要求を受信すると、通常モード用ハッシュ手段131によってファイルAの格納場所(ストレージ1)を引き出す。
管理サーバ2は、クライアント1に対して、ゾーン2におけるファイルAの格納場所のうち、低負荷であるストレージ2にレプリケートされたファイルAがあることを通知する。この通知を受け、クライアント1は、ストレージ2のファイルAにアクセスするように誘導される。その結果、クライアント1は、ストレージ2のファイルAにアクセスし、ファイルAを変更することが可能になる。
ここで、情報テーブル300が管理サーバ1から管理サーバ3には未だ伝播していない段階で、クライアント2がファイルAに対するアクセスを管理サーバ3に要求する例について説明する。
クライアント2がファイルAに対するアクセスを管理サーバ3に要求すると、管理サーバ3は、通常モード用ハッシュ手段131によって、ファイルAのファイル名を用いてファイルAの格納場所(ストレージ1)を引き出す。
管理サーバ3の情報テーブル300には、ファイルAがレプリケートされたことに関する情報が伝播されていないため、レプリケートモード用ハッシュ手段133はファイルAのファイル名からレプリケート先の格納情報場所を引き出せない。そのため、管理サーバ3は、ストレージ1のファイルAへのアクセスをするようにクライアント2を誘導する。この場合、クライアント2は、ファイルAに対して負荷分散アクセスをすることができない。
ここで、情報テーブル300が管理サーバ1から管理サーバ3には伝播した後の段階で、クライアント2がファイルAに対するアクセスを管理サーバ3に要求する例について説明する。
クライアント2がファイルAに対するアクセスを管理サーバ3に要求すると、管理サーバ3は、レプリケートモード用ハッシュ手段133によってファイルAの格納場所(ストレージ2)を引き出す。
管理サーバ3は、ファイルAの格納場所(ストレージ2)に関する情報をクライアント2に送信する。クライアント2は、管理サーバ3からファイルAの格納場所に関する情報を受信するとき、ゾーン2におけるファイルAの格納場所のうち、低負荷のストレージ2にレプリケートされたファイルAにアクセスするように誘導される。クライアント2は、管理サーバ3からの情報によって、ファイルAへのアクセスおよび変更が可能となる。
すなわち、ファイルAがレプリケートされ、かつレプリケート先情報を含む情報テーブル300が管理サーバ1から管理サーバ3に伝播された後は、クライアント2はファイルAに対して負荷分散アクセスすることができる。
<最新ファイルへの誘導>
次に、クライアント1がストレージ2のファイルAを更新する例について説明する。
ストレージ2にクライアント1がアクセスし、ファイルAにアクセスすると、ストレージ2の情報テーブル202におけるファイルAのステータス情報は、ストレージ1の欄がinvalid、ストレージ2の欄がvalidに変更される。ストレージ2の情報テーブル202におけるステータス情報は、ストレージ1の情報テーブル201にも伝播される。
ここで、クライアント2がストレージ2のファイルAにアクセスすると、ストレージ2は、情報テーブル202を参照することによって、ストレージ2のファイルAのステータス情報がvalidであることから、当該ファイルが最新であることを知る。その結果、クライアント2は、ストレージ2のファイルAにアクセスし、ファイルAの変更が可能になる。
一方、クライアント2がストレージ1のファイルAにアクセスすると、ストレージ1は、情報テーブル201を参照することによって、ストレージ1のファイルAのステータスがinvalidであることから、当該ファイルが最新ではないことを知る。ストレージ1は、ストレージ2に格納されたファイルAのステータス情報がvalidであることから、ストレージ1のファイルAは最新ではなく、ストレージ2のファイルAで最新があるということをクライアント2に通知する。すなわち、ストレージ1は、クライアント2をストレージ2へアクセスするように誘導する。その結果、クライアント2は、ストレージ2に格納された最新のファイルAにアクセスし、ファイルAの変更が可能になる。
以上が、本実施形態に係るストレージシステムにおける特徴的な処理についての説明である。
[動作]
次に、本実施形態に係るストレージシステムの動作について、図10〜図13のシーケンス図を用いて説明する。なお、図10〜図13のシーケンス図において、ストレージ1および2はゾーン2に配置され、ファイルAはストレージ1に格納されているものとする。また、図10〜図13のシーケンス図においては、ストレージシステムは図2の構成を持つものとする。
<通常時>
図10は、クライアント1が、レプリケーションの行われていないファイルAにアクセスする場合のシーケンス図である。すなわち、図10は、通常用モードにおいて、管理サーバ1がファイルAを格納するストレージ1をクライアント1に通知する例である。
まず、図10において、クライアント1からファイルAにアクセスするために、クライアント1は、管理サーバ1にファイルAへのアクセスを要求する(ステップS101)。
管理サーバ1は、クライアント1からの要求に応じて、ファイルAにアクセスするためには、ゾーン2のストレージ1にアクセスするように通知する(ステップS102)。なお、管理サーバ1は、自身が有するファイルAの格納情報に基づいて、ファイルAの格納先がゾーン2のストレージ1であることを検知する。
クライアント1は、管理サーバ11の通知に基づいて、ゾーン2のストレージ1にアクセスする(ステップS103)。
以上のステップS101〜S103の処理によって、クライアント1はレプリケーションの行われていないストレージ1のファイルAにアクセスできる。
<レプリケーション時>
図11は、クライアント1がストレージ1のファイルAに高頻度にアクセスし、ストレージ1のファイルAに高負荷が発生している状況において、クライアント2がファイルAにアクセスする場合のシーケンス図である。すなわち、図11は、レプリケーション用モードにおいて、管理サーバ1が最新のファイルAを格納するストレージ2をクライアント2に通知する例である。
まず、図11において、クライアント1はストレージ1のファイルAに頻繁にアクセスをする(ステップS201)。
そのため、ストレージ1のファイルAは高負荷状態になる(ステップS202)。
このとき、ストレージ1は、ファイルAの高負荷を検知し、ファイルAをストレージ2にレプリケートする(ステップS203)。
ストレージ2は、ファイルAに関するレプリケーション/ステータス情報を生成する(ステップS204)。
ストレージ2は、ストレージ2のレプリケーション/ステータス情報をストレージ1に送信し、その情報をストレージ1に格納させる(ステップS205)。
併せて、ストレージ2は、レプリケーション/ステータス情報を管理サーバ1に送信する(ステップS206)。
管理サーバ1は、受信したレプリケーション/ステータス情報に基づいて、レプリケーション/ステータス情報を生成・格納する(ステップS207)。
管理サーバ1は、生成したレプリケーション/ステータス情報を、管理サーバ2に送信して格納させる(ステップS208)とともに、管理サーバ3に送信して格納させる(ステップS209)。その結果、管理サーバ1が生成したレプリケーション/ステータス情報は、各管理サーバ11間において同期格納される。
ここで、クライアント2がファイルAにアクセスするために、管理サーバ1にファイルAへのアクセスを要求する。(ステップS210)。
管理サーバ1は、情報テーブル300の情報に基づいて、低負荷のストレージであるストレージ2にアクセスするようにクライアント2を誘導する(ステップS211)。
そして、クライアント2は、管理サーバ1の誘導を受け、ストレージ2のファイルAにアクセスし、ファイルAを変更する(ステップS212)。
以上のステップS201〜S212の処理によって、ストレージ1に格納されたファイルAに高負荷が発生する状況下において、クライアント2は低負荷であるストレージ2のファイルAにアクセスできる。
<ファイル変更時>
図12は、クライアント1がストレージ2のファイルAを変更することによって、ストレージ2のファイルAが最新(valid)となった状況において、クライアント2がファイルAにアクセスする場合のシーケンス図である。すなわち、図12は、管理サーバ11の通知に応じてストレージ1にアクセスしたクライアント2が、最新のファイルAはストレージ2に格納されていることをストレージ1から通知され、その通知に応じてストレージ2にアクセスする例である。
まず、図12において、クライアント1がストレージ2のファイルAを変更しようとして、ストレージ2にアクセスする(ステップS301)。
クライアント1は、ストレージ2のファイルAを変更する(ステップS302)。
ストレージ2は、自装置が格納する当該ファイルのステータス情報(情報テーブル202)を変更する(ステップS303)。
ストレージ2は、変更した当該ファイルのステータス情報をレプリケート関係にあるストレージ1に送信し、ストレージ1が格納する当該ファイルのステータス情報(情報テーブル201)を変更させる(ステップS304)。
ここで、クライアント2がファイルAにアクセスするために、管理サーバ1に対してファイルAへのアクセスを要求する。(ステップS305)。
管理サーバ1は、自身のレプリケーション/ステータス情報(情報テーブル300)に基づいて、ストレージ1にアクセスするようにクライアント2を誘導する(ステップS306)。なお、ステップ306では、情報テーブル300においてvalidとされたストレージ1に接続されるものとする。
そして、クライアント2は、管理サーバ1の誘導を受け、ストレージ1のファイルAにアクセスしようとする(ステップS307)。
このとき、ストレージ1に格納されたステータス情報(情報テーブル201)においては、ストレージ1のファイルAはinvalidであり、ストレージ1のファイルAはvalidである。そのため、ストレージ1は、情報テーブル201のステータス情報に基づいて、クライアント2に対してストレージ2にアクセスするように通知する(ステップS308)。
クライアント2は、ストレージ1の通知を受け、ストレージ1のファイルAにアクセスし、ファイルAを変更する(ステップS309)。
以上のステップS301〜S309の処理によって、ストレージ2のファイルAが変更されて最新である(valid)状況において、クライアント2は最新のファイルAに正しくアクセスできる。
<ステータス情報の遷移>
図13は、ストレージ1および2に格納されたファイルAに関するレプリケーション/ステータス情報のステータス情報が、レプリケーション時およびファイル変更時に遷移する様子を示す。なお、初期状態においては、ストレージ1のステータス情報はvalid、ストレージ2のステータス情報はinvalidあったものとする。
図13において、まず、レプリケート元ストレージ1とレプリケート先ストレージ2との間でレプリケートが開始された段階では(ステップS401)、ストレージ1のステータス情報はvalid、ストレージ2のステータス情報はinvalidである。
レプリケート元ストレージ1とレプリケート先ストレージ2との間でレプリケートが完了し、同期する(ステップS402)と、ストレージ1およびストレージ2のステータス情報は共にvalidとなる。
クライアント1からストレージ1のファイルAが変更されることになる(ステップS403)と、ストレージ1のステータス情報はvalid、ストレージ2のステータス情報はinvalidに遷移する。その結果、ストレージ1のステータス情報はvalid、ストレージ2のステータス情報はinvalidとなり、クライアント1は、ストレージ1のファイルAを変更することが可能となる。
そして、ストレージ1のファイルAが変更完了した段階(ステップS404)では、ストレージ1のステータス情報はvalid、ストレージ2のステータス情報はinvalidである。
ストレージ1とストレージ2との間でレプリケートが開始された段階(ステップS405)では、情報テーブル201におけるストレージ1のステータス情報はvalid、ストレージ2のステータス情報はinvalidである。
レプリケートが完了し、同期すると(ステップS406)、情報テーブル201におけるファイルAのステータス情報は、ストレージ1および2のいずれにおいてもvalidに遷移する。
以上が、レプリケーション/ステータス情報のステータス情報の遷移に関する説明である。
以上のように、本実施形態に係るストレージシステムによれば、遠隔された複数のゾーンにデータを分散して格納する場合において、データへの負荷集中が発生した際に、性能劣化することなく、負荷分散することが可能になる。なぜならば、近傍ゾーンのデータに負荷集中が発生しても、負荷集中が発生したデータがその近傍ゾーン内にレプリケートされているため、遠方ゾーンのデータにアクセスする必要がなくなるためである。遠方ゾーンのデータにアクセスする必要がなくなれば、レイテンシが悪化に起因する性能劣化は起こらない。
本実施形態では、負荷分散させるデータを同一ゾーン内でレプリケートし、レプリケーションに関する情報をレプリケーション関係にあるストレージ間で同期させるとともに、そのレプリケーションに関する情報を管理サーバに通知する。その結果、クライアントの近傍ゾーンのファイルにアクセス負荷が発生している状況であっても、クライアントをその近傍ゾーン内の低負荷のファイルに導くことによって、性能劣化せずに負荷分散することができる。
本実施形態では、レプリケートされたデータの更新時に、レプリケーション関係にあるストレージ間においては最新のデータの格納場所を共有するため、管理サーバには最新のデータの格納場所を通知しなくてもよい。
上述の効果から、本実施形態によれば、ゾーンを遠隔地に配備することによる冗長性の確保と、近傍ゾーンにおいて負荷集中したデータに対する性能劣化のない負荷分散とを両立することができる。
また、本実施形態に係るストレージシステムによれば、ゾーン全体をレプリケートするこれまでの方法と比較して、物理的なデータ格納領域を大幅に節約できるという効果も得られる。
ここで、本実施形態に係るストレージシステムの機能や効果について列挙する。
本実施形態に係るストレージシステムでは、データ三重ミラーストレージにおけるゾーンを遠隔地に配備する構成はそのままに、高頻度アクセスのファイルを同一ゾーン内の他のストレージにレプリケートして分散配置する。
本実施形態に係るストレージシステムにおいては、レプリケートされた情報をレプリケート元とレプリケート先の各ストレージ、管理サーバで共有する。その結果、本実施形態に係るストレージシステムの管理サーバは、クライアントから当該ファイルへのアクセスが要求された際に、低負荷のレプリケート先ストレージにクライアントを効率的に誘導することができる。
また、本実施形態においては、レプリケート先の該当ファイルが更新される場合、当該ファイルが最新であるかどうかを示す情報をレプリケート関係にあるレプリケート元とレプリケート先の各ストレージで共有する。その結果、別のクライアントが、当該ファイルの最新版が格納されたレプリケート先にアクセスした場合、ストレージの当該情報に基づいて当該ファイルが最新であることがわかるためアクセスが継続される。また、別のクライアントが、当該ファイルが最新版ではないレプリケート元にアクセスした場合、ストレージの当該情報に基づいて当該ファイルが最新でないことがわかる。そのため、そのクライアントのアクセスを受けたストレージは、そのクライアントに対して当該ファイルが最新ではないことを通知するとともに、最新版がレプリケート先に格納されていることを通知し、そのクライアントを正しく最新のファイルへと誘導する。
その結果、本実施形態に係るストレージシステムにおいて、クライアントは、低負荷のストレージのファイルにアクセスし、かつ常に正しく最新のファイルにアクセスすることが可能となる。
本実施形態のストレージシステムのストレージは、レプリケーションおよびファイル更新に必要な情報を常に自身で生成し、格納する。また、本実施形態のストレージシステムの管理サーバは、どのファイルがレプリケートされ、そのレプリケート先における当該ストレージ情報を格納するだけで、クライアントからのアクセスを効率的に負荷分散することを可能とする。
以下に、本実施形態の主な特徴についてまとめる。
まず、データを複数ゾーンに多重化するストレージシステムにおいて、特定のゾーンに着目する。
特定ファイルの高頻度アクセス・負荷情報に基づいて、同一のゾーンに属する複数のストレージ間においてレプリケーションを行うことによってファイルを分散配置し、クライアントからのアクセスを平準化する。
このとき、特定ファイルの分散配置情報をストレージと管理サーバのみに配備することによって、クライアントによるアクセスの平準化を効率的にする。
また、分散先のファイルの最新情報をストレージのみに配備することによって、クライアントが最新ではないファイルにアクセスしても、ストレージが最新のファイル格納場所にクライアントを誘導することが可能とする。
以上の特徴により、本実施形態によれば、管理サーバを含めたシステム全体の負荷を軽減することが可能となる。
以下に、本実施形態に係る効果を列挙する。なお、以下の効果には、本実施形態に係るストレージシステムの本質的な効果だけではなく、副次的な効果も記載している。
一般的なストレージシステムのシステム構成におけるレプリケーション機構をそのまま使用しながら、ゾーン内においてアクセスが集中するファイルをレプリケートし、クライアントからのアクセス平準化を容易に実現する。
近傍ゾーンのストレージ内のファイルにアクセスが集中している際に、同一ゾーン内の別のストレージにクライアントを誘導させることが可能となるため、遠方ゾーンのストレージにアクセスを分散させることで想定される性能劣化を解消する。
レプリケート関係のストレージおよび管理サーバのみに、ストレージがファイルをレプリケーションしたという情報と、レプリケート先の情報とを保有する機能を追加するため、一般的なシステム構成を大きく変更する必要がない。
各ストレージは、所属するゾーンのストレージとのみ通信すればよく、他のゾーンに属するストレージの存在情報を有する必要がない。そのため、各ストレージは、他のゾーンのストレージと通信しなくてもよい。
ファイルをレプリケートした場合、低負荷のストレージにクライアントをアクセスさせるため、管理サーバにレプリケートしたという情報を共有させることで容易であり、効率的にアクセスを平準化することができる。
当該ストレージにアクセスするようにコントロールした管理サーバのみにレプリケートしたという情報を共有させ、当該情報を管理サーバ間で拡散配置させる。そのため、管理サーバが複数ある場合であっても、ストレージシステムが全ての管理サーバの存在情報を有する必要がない。
ストレージ内のファイルが更新される場合には、当該ストレージのファイルが最新であり、レプリケート先のストレージのファイルは最新ではないという情報がレプリケート関係にあるストレージ間において共有される。クライアントのアクセスを受けたストレージが格納するファイルが最新ではない場合、そのストレージは当該ファイルの最新版が格納されたストレージに関する情報をクライアントに返却し、クライアントを正しく最新のストレージにコントロールできる。
マスタストレージの障害時に、その障害範囲が同一ゾーン内のストレージにレプリケートされたファイルにまで及んでいる場合、障害が発生したストレージが近傍に存在することになる。そのため、障害を復旧するためにそのゾーンに到着するまでのルートが短距離ですむことから、短時間で復旧することが期待できる。
以上、実施形態を参照して本発明を説明してきたが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明のスコープ内で当業者が理解し得る様々な変更をすることができる。