(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-21
(45)【発行日】2023-11-30
(54)【発明の名称】ストレージ制御システム
(51)【国際特許分類】
G06F 3/06 20060101AFI20231122BHJP
【FI】
G06F3/06 302E
G06F3/06 301F
G06F3/06 301J
G06F3/06 304R
G06F3/06 304Z
(21)【出願番号】P 2019220131
(22)【出願日】2019-12-05
【審査請求日】2022-08-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】菊地 安仁
(72)【発明者】
【氏名】村田 聖
(72)【発明者】
【氏名】村上 順一
(72)【発明者】
【氏名】山本 徹
(72)【発明者】
【氏名】大多和 章秀
【審査官】田中 啓介
(56)【参考文献】
【文献】特開2008-217575(JP,A)
【文献】特開2019-074897(JP,A)
【文献】特開2015-103195(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06-3/08
G06F13/10-13/14
G06F16/00-16/958
H04L51/00-51/58
H04L67/00-67/75
(57)【特許請求の範囲】
【請求項1】
1以上の第1の記憶装置に対して1以上の第2の記憶装置が増設されたときに、前記1以上の第1の記憶装置および前記1以上の第2の記憶装置に含まれる記憶装置の間で負荷のバランスが平準化されるように前記1以上の第1の記憶装置の中から選択された1以上の第1のデータを前記1以上の第2の記憶装置に移動させるデータ移動処理であって、前記1以上の第1のデータを移動先の記憶装置にコピーし、コピーが完了したデータを移動元の記憶装置から削除する処理を含む前記データ移動処理を実行させるデータ移動制御部と、
前記データ移動処理の過程において、前記1以上の第1の記憶装置のうち第3の記憶装置に記憶された移動対象の1以上の第1のデータの移動が完了した後に、前記第3の記憶装置から前記1以上の第1のデータを削除する処理を開始する際に、前記
1以上の第1の記憶装置および前記1以上の第2の記憶装置を含む複数の記憶装置のうち前記
第3の記憶装置以外の各記憶装置の負荷の検出結果を取得し、前記検出結果に基づいて前記各記憶装置の中から
第4の記憶装置を退避先として決定し、前記1以上の第1のデータの削除処理を開始させるデータ削除制御部と、
前記1以上の第1のデータの削除処理の実行中に、前記
第3の記憶装置に記憶されたデータのうち前記1以上の第1のデータ以外の第2のデータの更新が要求された場合、前記第2のデータを更新する更新データが前記
第4の記憶装置に格納されるように制御するアクセス先制御部と、
を有し、
前記データ削除制御部は、前記1以上の第1のデータすべての削除処理が完了すると、前記
第4の記憶装置に格納された前記更新データを前記
第3の記憶装置に移動させて前記第2のデータを更新させる、
ストレージ制御システム。
【請求項2】
前記データ削除制御部は、前記
第4の記憶装置を退避先として決定すると、前記複数の記憶装置に記憶された各データの格納位置を示す格納位置情報について、前記
第3の記憶装置に記憶されたデータのうち少なくとも前記1以上の第1のデータを除く他のすべてのデータの格納位置が前記
第4の記憶装置を示すように更新し、
前記アクセス先制御部は、前記第2のデータの更新が要求された場合、前記格納位置情報に基づいて前記更新データの格納先を判定する、
請求項1記載のストレージ制御システム。
【請求項3】
前記データ削除制御部は、前記更新データを前記
第3の記憶装置に移動させる処理が完了すると、前記格納位置情報について、前記第2のデータの格納位置が前記
第3の記憶装置を示すように更新する、
請求項2記載のストレージ制御システム。
【請求項4】
前記第2のデータの読み出しを要求したとき、前記1以上の第1のデータの削除処理が実行中である場合には、前記複数の記憶装置のうち前記
第3の記憶装置以外の記憶装置に記憶されたデータのうち、前記第2のデータに冗長性を持たせるために生成されたデータを読み出すアクセス処理部をさらに有する請求項1乃至3のいずれか1項に記載のストレージ制御システム。
【請求項5】
前記データ削除制御部は、
前記データ移動処理の過程において、前記データ移動処理の対象データを前記移動先の記憶装置にコピーする処理が完了したことを示す完了通知をコピー元の記憶装置ごとに受け付け、
前記完了通知を受け付けた前記コピー元の記憶装置を前記
第3の記憶装置として1つずつ選択しながら、前記
第4の記憶装置を決定し、前記1以上の第1のデータの削除処理を開始させ、当該削除処理の完了後に前記更新データを前記
第4の記憶装置から前記
第3の記憶装置に移動させることで、前記コピー元の記憶装置のうちの1つだけで前記1以上の第1のデータの削除処理が実行されるように制御する、
請求項
1乃至4のいずれか1項に記載のストレージ制御システム。
【請求項6】
前記複数の記憶装置は複数のグループに分類されており、前記複数のグループのそれぞれの中ではデータが2以上の記憶装置に冗長化されて記憶されており、
前記データ削除制御部は、前記複数のグループのうち前記
第3の記憶装置が含まれるグループ以外の他のグループに含まれる記憶装置の中から、前記
第4の記憶装置を選択して決定する、
請求項1乃至
5のいずれか1項に記載のストレージ制御システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御システムに関する。
【背景技術】
【0002】
分散型のストレージシステムは、複数の記憶装置と、これら複数の記憶装置に対するアクセスを制御する制御装置とをそれぞれ含む複数のストレージノードをクラスタ化することによって実現される。分散型のストレージシステムは、格納するデータの増加に応じたシステムの拡張性が高いという特徴を有する。
【0003】
このような分散型ストレージシステムの一種として、データをオブジェクトとして取り扱うオブジェクトストレージシステムが広く利用されている。オブジェクトストレージシステムは、データの格納場所の管理が容易であるという特徴を有する。そのため、例えば、ストレージノードの増設や、その増設に伴う記憶装置間の負荷バランス平準化といった目的で、データを記憶装置間で移動させることが頻繁に行われる。
【0004】
また、ストレージシステムに関して次のような提案がある。例えば、システム全体の消費電力やフラッシュメモリの寿命管理の最適化を目的として、HDD(Hard Disk Drive)からフラッシュメモリに対して、あるいはフラッシュメモリからHDDに対してデータを移行させるストレージシステムが提案されている。このストレージシステムでは、移行作業中のデータに関してホストコンピュータからライトが要求されると、ライトが要求されたデータは一時記憶領域に書き込まれる。
【0005】
また、サーバ装置のデータをHDDにバックアップする次のようなシステムが提案されている。このシステムでは、あるバックアップジョブを起動したとき、他のバックアップジョブが終了しておらず、バックアップ装置数が不足している場合には、1次バックアップ用HDDにバックアップデータが保存される。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2007-115232号公報
【文献】特開2004-252829号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、上記のような負荷バランス平準化などを目的として記憶装置間でデータが移動される場合、まず記憶装置間でデータがコピーされた後、元のデータが削除される。近年、記憶されるデータ量の増加に伴って記憶装置の容量も大きくなっており、1つの記憶装置から他の記憶装置に対して大量のデータが移動されるケースが発生している。この場合、移動元の記憶装置では、データコピーの完了後に大量のデータの削除処理が実行される。大量のデータの削除処理を実行中に同一の記憶装置に対して書き込みや読み出しのIO(Input/Output)アクセスが発生した場合、削除処理の負荷によってIO性能の低下や応答遅延が生じるという問題がある。
【0008】
1つの側面では、本発明は、データ削除処理中における記憶装置への書き込み速度の低下を抑制することが可能なストレージ制御システムを提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、次のようなデータ削除制御部とアクセス先制御部とを有するストレージ制御システムが提供される。このストレージ制御システムにおいて、データ削除制御部は、複数の記憶装置に含まれる第1の記憶装置に記憶されたデータのうち1以上の第1のデータを削除する処理を開始する際に、複数の記憶装置のうち第1の記憶装置以外の各記憶装置の負荷の検出結果を取得し、検出結果に基づいて各記憶装置の中から第2の記憶装置を退避先として決定し、1以上の第1のデータの削除処理を開始させる。アクセス先制御部は、1以上の第1のデータの削除処理の実行中に、第1の記憶装置に記憶されたデータのうち1以上の第1のデータ以外の第2のデータの更新が要求された場合、第2のデータを更新する更新データが第2の記憶装置に格納されるように制御する。また、データ削除制御部は、1以上の第1のデータすべての削除処理が完了すると、第2の記憶装置に格納された更新データを第1の記憶装置に移動させて第2のデータを更新させる。
【発明の効果】
【0011】
1つの側面では、データ削除処理中における記憶装置への書き込み速度の低下を抑制できる。
【図面の簡単な説明】
【0012】
【
図1】第1の実施の形態に係るストレージ制御システムの構成例および処理例を示す図である。
【
図2】第2の実施の形態に係るストレージシステムの構成例を示す図である。
【
図3】管理ノードのハードウェア構成例を示す図である。
【
図4】管理ノード、監視ノードおよびゲートウェイノードが備える処理機能の構成例を示すブロック図である。
【
図9】ストレージノード増設に伴うリバランス処理の例を示す図である。
【
図10】データの削除処理の比較例を示す図である。
【
図12】削除待ちリストに対する登録処理の例を示す図である。
【
図14】データ削除および書き込みデータの退避の処理例を示す図である。
【
図15】データ削除処理の実行中における読み出し処理例を示す図である。
【
図17】ストレージノードの故障に伴うデータ復元の処理例を示す比較例である。
【
図18】ストレージノード故障後のリバランス処理の例を示す比較例である。
【
図19】データ削除処理の実行中における書き込みデータの退避処理例を示す図である。
【
図21】ストレージノードが増設された場合の処理例を示すシーケンス図である。
【
図22】データ削除処理の実行が開始される際の処理例を示すシーケンス図である。
【
図23】データ削除処理の実行中における書き込み処理例を示すシーケンス図である。
【
図24】データ削除処理の実行中における読み出し処理例を示すシーケンス図である。
【
図25】データ削除処理の実行が完了した際の処理例を示すシーケンス図である。
【
図26】ストレージノードが故障した場合の処理例を示すシーケンス図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージ制御システムの構成例および処理例を示す図である。
図1に示すストレージ制御システムは、情報処理装置1~3を含む。また、ストレージ制御システムには、記憶装置4a~4fが接続されている。
【0014】
情報処理装置1は、データ削除制御部1aを有する。データ削除制御部1aの処理は、例えば、情報処理装置1が備える図示しないプロセッサがプログラムを実行することで実現される。データ削除制御部1aは、記憶装置4a~4fで実行されるデータ削除処理に関する制御を行う。
【0015】
情報処理装置2は、アクセス先制御部2aを有する。アクセス先制御部2aの処理は、例えば、情報処理装置2が備える図示しないプロセッサがプログラムを実行することで実現される。アクセス先制御部2aは、記憶装置4a~4fに対する書き込み(更新を含む)が要求された際に、書き込みデータの格納先に関する制御を行う。例えば、アクセス先制御部2aは、記憶装置4a~4fに記憶されたデータと、その格納先を示す情報(記憶装置の識別情報)とが対応付けられた格納位置情報5に基づいて、書き込みデータの格納先に関する制御を行う。
【0016】
なお、データ削除制御部1aとアクセス先制御部2aは、同一の装置に備えられてもよい。
アクセス処理部3aは、記憶装置4a~4fに対する書き込み要求(更新要求を含む)が発生したとき、その書き込み処理を実行する。
図1では例として、アクセス処理部3aは、書き込み要求が発生したとき、書き込みデータの格納先をアクセス先制御部2aに問い合わせ、返信された格納先に対して書き込み処理を実行する。したがって
図1の例では、アクセス先制御部2aは、アクセス処理部3aによる書き込み処理における書き込みデータの格納先に関する制御を行う。
【0017】
記憶装置4a~4fは、HDDやSSD(Solid State Drive)などの不揮発性の記憶装置である。記憶装置4a~4fは、例えば、分散型ストレージシステムの記憶領域を実現する。
【0018】
以下、例として、記憶装置4cに記憶されているデータDT1,DT2の削除処理が行われる場合について説明する。このデータ削除処理は、例えば、データDT1,DT2を記憶装置4fに移動させる処理に伴って実行される。この場合、データDT1,DT2が記憶装置4cから記憶装置4fにコピーされた後、記憶装置4cからデータDT1,DT2を削除する処理が実行される。また、このようなデータDT1,DT2の移動は、記憶装置4fが増設されたことに伴って行われるものであってもよい。この場合、例えば、記憶装置4fの増設に伴い、記憶装置4a~4fの間で負荷のバランスが平準化されるようにデータの移動が行われる。データDT1,DT2は、移動対象として選択されたデータの少なくとも一部である。
【0019】
データ削除制御部1aは、データDT1,DT2を削除する処理を開始する際に、次のような処理を実行する。データ削除制御部1aは、記憶装置4a~4fのうち、データDT1,DT2が記憶されている記憶装置4c以外の記憶装置4a,4b,4d~4fの負荷の検出結果を取得する(ステップS1)。データ削除制御部1aは、例えば、他の情報処理装置(例えば情報処理装置2)によって検出された負荷の検出結果を取得してもよい。
【0020】
次に、データ削除制御部1aは、負荷の検出結果に基づいて、記憶装置4a,4b,4d~4fの中から退避先の記憶装置を決定する(ステップS2)。例えば、データ削除制御部1aは、記憶装置4a,4b,4d~4fの中から、負荷が最も低い記憶装置を退避先として決定する。
図1の例では、記憶装置4aが退避先として決定されたものとする。
【0021】
データ削除制御部1aは、例えば、退避先として決定された記憶装置4aの識別情報を、アクセス先制御部2aに通知する。アクセス先制御部2aが格納位置情報5を参照する場合、データ削除制御部1aは、格納位置情報5に登録されたデータのうち、記憶装置4cに格納されている各データの格納位置を、退避先の記憶装置4aを示すように更新する。
【0022】
データ削除制御部1aは、以上のステップS2の処理を終了すると、データDT1,DT2の削除処理を開始させる(ステップS3)。データDT1,DT2の削除処理が開始されることで、記憶装置4cの負荷が高まる。
【0023】
次に、データDT1,DT2の削除処理の実行中に、記憶装置4cに記憶されたデータDT3をデータDT3’に更新する処理が要求されたとする(ステップS4)。すると、アクセス先制御部2aは、データDT3’が退避先の記憶装置4aに格納されるように制御する(ステップS5)。
【0024】
図1の例では、アクセス処理部3aは、データDT3の更新要求に応じて、データDT3の格納位置をアクセス先制御部2aに問い合わせる。アクセス先制御部2aは、格納位置情報5を参照して、データDT3に対応付けられている格納位置の情報をアクセス処理部3aに通知する。格納位置情報5では、ステップS2での上記処理によりデータDT3の格納位置が記憶装置4cから退避先の記憶装置4aに変更されている。このため、アクセス処理部3aには、データDT3の格納位置として退避先の記憶装置4aを示す情報が通知され、アクセス処理部3aは、更新データであるデータDT3’を記憶装置4aに格納する(ステップS6)。このようにして、記憶装置4cに記憶されたデータに対応する更新データは、記憶装置4aに退避される。
【0025】
その後、データDT1,DT2の削除処理が完了すると、データ削除制御部1aは、記憶装置4aに退避されていたデータDT3’を記憶装置4cに移動させて、データDT3’によってデータDT3を更新させる(ステップS7)。
【0026】
ここで、データDT1,DT2の削除処理の実行中では、その処理負荷によって記憶装置4cの負荷が高まる。このため、削除処理の実行中において記憶装置4c上の他の処理を更新しようとした場合、その更新処理速度が低下する可能性がある。これに対して、本実施の形態では、記憶装置4a,4b,4d~4fの負荷の検出結果に基づいて退避先の記憶装置4aが選択される。そして、記憶装置4cでのデータDT1,DT2の削除処理の実行中では、記憶装置4cに対する書き込みデータ(更新データ)が記憶装置4aに退避して書き込まれる。これにより、書き込みデータを記憶装置4cに書き込む場合よりも高速な書き込みを実行できる可能性が高まる。したがって、データ削除処理中における記憶装置への書き込み速度の低下を抑制できる。
【0027】
特に、記憶装置の増設に応じて、記憶装置間で負荷のバランスが平準化されるようにデータの移動が行われた場合、同一の記憶装置上の多数のデータが移動対象となり、その記憶装置において多数のデータの削除処理が実行される可能性がある。この場合、削除処理の実行中における記憶装置の負荷が増大し、その記憶装置に対する書き込み性能が大きく低下し得る。本実施の形態の処理により、このような書き込み性能の低下を抑制できる。
【0028】
〔第2の実施の形態〕
次に、第2の実施の形態に係るストレージシステムについて説明する。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。
【0029】
図2に示すストレージシステムは、ストレージノード10a,10b,10c,・・・、管理ノード20、監視ノード30およびゲートウェイノード40を含む。ストレージノード10a,10b,10c,・・・は、ネットワーク61に接続されており、これらはネットワーク61を介して相互に通信可能となっている。また、ストレージノード10a,10b,10c,・・・、管理ノード20、監視ノード30およびゲートウェイノード40は、ネットワーク62に接続されている。ストレージノード10a,10b,10c,・・・と、管理ノード20、監視ノード30およびゲートウェイノード40との間は、ネットワーク62を介して通信可能になっている。また、管理ノード20、監視ノード30およびゲートウェイノード40は、ネットワーク62を介して相互に通信可能になっている。さらに、ゲートウェイノード40には、ネットワーク63を介してクライアント装置50a,50b,50c,・・・が接続されている。
【0030】
なお、管理ノード20は、
図1の情報処理装置1の一例である。監視ノード30は、
図1の情報処理装置2の一例である。ゲートウェイノード40は、
図1の情報処理装置3の一例である。
【0031】
このストレージシステムでは、ストレージノード10a,10b,10c,・・・に含まれるストレージを記憶領域として用いたオブジェクトストレージシステムが構築されている。オブジェクトストレージシステムでは、データは、URI(Uniform Resource Identifier)などの固有の識別情報(オブジェクトID)がそれぞれ付与されたオブジェクトとして管理される。また、オブジェクトは、アクセス負荷が平準化するようにシステム内で分散配置される。
【0032】
ストレージノード10a,10b,10c,・・・は、それぞれコントローラと1台以上のドライブとを備える。コントローラは、ゲートウェイノード40からの指示にしたがってドライブに対するアクセスを制御するストレージ制御サーバである。ドライブは、オブジェクトストレージシステムのストレージを実現する記憶装置であり、例えば、HDD、SSDとして実現される。
【0033】
例えば、ストレージノード10aは、コントローラ11aとドライブ12a1,12a2,12a3,12a4,・・・を備える。コントローラ11aは、ゲートウェイノード40からの指示にしたがって、ドライブ12a1,12a2,12a3,12a4,・・・に対するアクセスを制御する。同様に、ストレージノード10bは、コントローラ11bとドライブ12b1,12b2,12b3,12b4,・・・を備える。また、ストレージノード10cは、コントローラ11cとドライブ12c1,12c2,12c3,12c4,・・・を備える。
【0034】
このオブジェクトストレージシステムは、ストレージノードを増設可能なスケールアウト型のストレージシステムとなっている。ストレージノード単位の増設により、記憶容量の拡大だけでなく、コントローラの増設によるアクセス性能の拡張も可能となっている。
【0035】
ゲートウェイノード40は、オブジェクトストレージシステム全体のストレージアクセスを制御するストレージ制御サーバである。また、ゲートウェイノード40は、クライアント装置50a,50b,50c,・・・がオブジェクトストレージシステムを利用するためのゲートウェイ装置(インタフェース装置)として動作する。例えば、ゲートウェイノード40は、クライアント装置50a,50b,50c,・・・からオブジェクトIDの指定を受けることで、オブジェクトストレージシステム内のストレージとの間での対応するオブジェクトの読み書きを制御する。あるいは、ゲートウェイノード40は、クライアント装置50a,50b,50c,・・・からファイル単位でデータの読み書きの要求を受けてもよい。この場合、ゲートウェイノード40は、ファイル単位で読み書きが要求されたデータをオブジェクトに変換して、ストレージとの間での読み書きを制御する。例えば、ゲートウェイノード40は、ファイル単位で書き込みが要求されたデータの重複を排除し、重複が排除されたデータをオブジェクトにまとめてストレージに書き込む。
【0036】
クライアント装置50a,50b,50c,・・・は、例えば、データバックアップアプリケーション、業務アプリケーションなど、ストレージアクセスを含む各種処理用のアプリケーションを実行するコンピュータ装置である。
【0037】
管理ノード20は、オブジェクトストレージシステムの運用を管理するサーバコンピュータである。管理ノード20は、管理者が操作する管理端末に対するGUI(Graphical User Interface)の提供や、システム全体の管理を行う。例えば、管理ノード20は、ストレージノードが増設された場合や、ストレージノードの故障が発生した場合に、その事象に応じた処理を実行する。
【0038】
監視ノード30は、ストレージノード10a,10b,10c,・・・の動作の監視や、データ格納位置の管理を行うサーバコンピュータである。例えば、監視ノード30は、オブジェクトIDと格納位置情報との対応関係を示すマップ情報を保持する。ゲートウェイノード40は、オブジェクトにアクセスする際、そのオブジェクトの格納位置を監視ノード30に問い合わせ、通知された情報に基づいてオブジェクトにアクセスする。また、監視ノード30は、ストレージノード10a,10b,10c,・・・に含まれる各ドライブについて、アクセス負荷の状況や残容量を監視する。監視ノード30は、それらの監視結果に基づいて、アクセス負荷や残容量がドライブ間やストレージノード間で平準化するようにオブジェクトの格納位置を変更するリバランス処理を実行する。
【0039】
図3は、管理ノードのハードウェア構成例を示す図である。管理ノード20は、例えば、
図3に示すようなコンピュータとして実現される。
図3に示す管理ノード20は、プロセッサ201、RAM(Random Access Memory)202、HDD203、グラフィックインタフェース(I/F)204、入力インタフェース(I/F)205、読み取り装置206および通信インタフェース(I/F)207を備える。
【0040】
プロセッサ201は、管理ノード20全体を統括的に制御する。プロセッサ201は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ201は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0041】
RAM202は、管理ノード20の主記憶装置として使用される。RAM202には、プロセッサ201に実行させるOS(Operating System)プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、RAM202には、プロセッサ201による処理に必要な各種データが格納される。
【0042】
HDD203は、管理ノード20の補助記憶装置として使用される。HDD203には、OSプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、SSDなどの他の種類の不揮発性記憶装置を使用することもできる。
【0043】
グラフィックインタフェース204には、表示装置204aが接続されている。グラフィックインタフェース204は、プロセッサ201からの命令にしたがって、画像を表示装置204aに表示させる。表示装置としては、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどがある。
【0044】
入力インタフェース205には、入力装置205aが接続されている。入力インタフェース205は、入力装置205aから出力される信号をプロセッサ201に送信する。入力装置205aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0045】
読み取り装置206には、可搬型記録媒体206aが脱着される。読み取り装置206は、可搬型記録媒体206aに記録されたデータを読み取ってプロセッサ201に送信する。可搬型記録媒体206aとしては、光ディスク、半導体メモリなどがある。
【0046】
通信インタフェース207は、ネットワーク62を介して他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、管理ノード20の処理機能を実現することができる。なお、コントローラ11a,11b,11c,・・・、監視ノード30、ゲートウェイノード40、クライアント装置50a,50b,50c,・・・も、
図3に示すような構成のコンピュータとして実現可能である。
【0047】
図4は、管理ノード、監視ノードおよびゲートウェイノードが備える処理機能の構成例を示すブロック図である。
まず、監視ノード30は、記憶部310、システム監視部320、リバランス処理部330およびマップデータ処理部340を備える。記憶部310は、例えば、監視ノード30が備える図示しない記憶装置によって実現される。システム監視部320、リバランス処理部330およびマップデータ処理部340の処理は、例えば、監視ノード30が備える図示しないプロセッサが所定のプログラムを実行することで実現される。
【0048】
記憶部310は、構成情報311とマップ情報312を記憶する。
構成情報311は、ストレージノード10a,10b,10c,・・・に含まれるコントローラやドライブを示す情報を含む。このような情報には、各コントローラの位置情報(アドレス情報)や、各ドライブについての位置情報(アドレス情報)、アクセス性能を示す性能情報、記憶容量を示す情報などが含まれる。また、構成情報311は、ストレージプールの構成を示す情報を含む。ストレージプールとは、記憶領域の管理単位であり、それぞれ複数のドライブを含む。例えば、1つまたは複数のストレージノードに含まれるドライブが1つのストレージプールとして管理される。構成情報311は、例えば、どのストレージプールにどのドライブが含まれるかを示す設定情報を含む。
【0049】
マップ情報312は、オブジェクトごとに、オブジェクトストレージシステムにおける格納場所が対応付けて登録された情報である。格納場所は、ストレージノードを識別するノードIDと、ドライブを識別するドライブIDとによって表される。なお、マップ情報312は、
図1の格納位置情報5の一例である。
【0050】
システム監視部320は、ストレージノード10a,10b,10c,・・・や、それらに含まれるドライブの動作を監視する。また、システム監視部320は、各ドライブのアクセス負荷や残容量を監視する。
【0051】
リバランス処理部330は、システム監視部320による監視結果に基づいて、アクセス負荷や残容量がドライブ間やストレージノード間で平準化するようにオブジェクトの格納位置を変更するリバランス処理を実行する。リバランス処理では、リバランス処理部330は、格納位置を変更すべきオブジェクトを特定すると、そのオブジェクトが現在格納されているドライブを配下に備えるコントローラに対して、そのオブジェクトの格納位置の変更(再配置)を指示する。コントローラは、この指示に応じて該当オブジェクトを変更後の格納位置にコピーした後、元のオブジェクトを削除する。ただし、後述するように、オブジェクトの削除の実行タイミングは、管理ノード20からの指示に応じて決定される。
【0052】
マップデータ処理部340は、ゲートウェイノード40からの問い合わせに応じて、指定されたオブジェクトの格納位置を示す情報をマップ情報312から読み出し、返信する。また、マップデータ処理部340は、管理ノード20からの指示に応じてマップ情報312を更新する。なお、マップデータ処理部340は、
図1のアクセス先制御部2aの一例である。
【0053】
ここで、
図5は、マップ情報の構成例を示す図である。
図5に示すように、マップ情報312には、オブジェクトを識別するオブジェクトIDに対して、その格納先を示すノードIDおよびドライブIDが対応付けて登録されている。これに加えて、マップ情報312には、オブジェクトIDごとに退避フラグが対応付けて登録される。
【0054】
退避フラグは、書き込みデータ(オブジェクト)を退避すべき状態か否かを示すフラグ情報である。退避フラグは、退避すべき状態でない場合は「0」に設定され、退避すべき状態である場合は「1」に設定されるものとする。書き込みデータの退避とは、リバランス処理に伴うデータ削除が実行されているドライブに対するデータの書き込みが発生した場合に、そのデータを他の格納場所に退避することを示す。また、ストレージノードの故障が発生した場合にも、そのストレージノードに含まれるドライブに対する書き込みが発生したときに、書き込みデータが退避される。退避フラグが「1」のとき、ノードIDおよびドライブIDには退避先を示す情報が登録されている。
【0055】
以下、
図4を用いて説明を続ける。
ゲートウェイノード40は、アクセス制御部410を備える。アクセス制御部410の処理は、例えば、ゲートウェイノード40が備える図示しないプロセッサが所定のプログラムを実行することで実現される。なお、アクセス制御部410は、
図1のアクセス処理部3aの一例である。
【0056】
アクセス制御部410は、オブジェクトストレージシステム内のドライブに対するオブジェクトの書き込みや、ドライブからのオブジェクトの読み出しを実行する。アクセス制御部410は、オブジェクトの書き込みまたは読み出しが要求されると、そのオブジェクトの格納位置を監視ノード30に問い合わせる。この問い合わせに応じて、監視ノード30のマップデータ処理部340から、マップ情報312において該当オブジェクトに対応付けられたノードIDおよびドライブIDが送信される。アクセス制御部410は、このようにして取得したノードIDおよびドライブIDを用いて、オブジェクトの読み書きを実行する。
【0057】
次に、管理ノード20は、記憶部210、システム管理部220、データ削除制御部230および故障対応制御部240を備える。記憶部210は、例えば、RAM202、HDD203など、管理ノード20が備える記憶装置によって実現される。システム管理部220、データ削除制御部230および故障対応制御部240の処理は、例えば、プロセッサ201が所定のプログラムを実行することで実現される。
【0058】
記憶部210は、構成情報211、削除待ちリスト212および退避データリスト213を記憶する。
構成情報211は、ストレージノード10a,10b,10c,・・・に含まれるコントローラやドライブを示す情報を含む。このような情報には、各コントローラや各ドライブの位置情報(アドレス情報)が含まれる。また、構成情報311は、ストレージプールの構成を示す情報を含む。これらの情報は、監視ノード30の構成情報311と同期される。
【0059】
削除待ちリスト212については、
図6を用いて説明する。
図6は、削除待ちリストの構成例を示す図である。削除待ちリスト212は、ストレージノードが追加されたとき、その追加に応じて実行されるリバランス処理の制御のために生成される。削除待ちリスト212は、ノードID、ドライブIDおよびステータスの各項目を含む。
【0060】
ノードIDおよびドライブIDは、リバランス処理に伴うデータ削除の実行許諾が要求されたストレージノードおよびドライブを識別する情報である。すなわち、あるドライブにおけるデータ削除の実行許諾が該当するコントローラから要求されたとき、そのドライブを識別するためのノードIDおよびドライブIDが削除待ちリスト212に登録される。そして、削除待ちリスト212は、データ削除の実行許諾が要求されたドライブを順に選択するための、FIFO(First In/First Out)方式のキューとして使用される。ステータスは、対応するドライブにおいてデータ削除を実行中か否かを示すフラグ情報である。ステータスは、データ削除を未実行の場合には「0」に設定され、データ削除を実行中の場合には「1」に設定される。
【0061】
次に、退避データリスト213について、
図7を用いて説明する。
図7は、退避データリストの構成例を示す図である。退避データリスト213は、ストレージノードの追加や、ストレージノードの故障が発生したとき、退避された書き込みデータ(オブジェクト)を管理するために生成される。退避データリスト213には、オブジェクトが退避された(退避先に書き込まれた)場合に、そのオブジェクトを示すオブジェクトIDが登録される。また、ストレージノードが故障した場合には、オブジェクトIDに対して、対応するオブジェクトの退避先を示すノードIDおよびドライブIDが対応付けて登録される。
【0062】
以下、
図4を用いて説明を続ける。
システム管理部220は、オブジェクトストレージシステム全体の管理処理を行う。例えば、システム管理部220は、システムに関する設定変更を図示しない管理端末から受け付け、設定の変更処理を実行する。また、システム管理部220は、ストレージノードの追加や故障が発生した場合に、その事象に応じた処理をデータ削除制御部230に実行させる。
【0063】
データ削除制御部230は、削除待ちリスト212を用いて、リバランス処理に伴うデータ削除の実行を制御する。また、データ削除制御部230は、ストレージノードの追加やストレージノードの故障発生に伴い、書き込みデータの退避先を決定して、監視ノード30のマップ情報312を変更する。データ削除制御部230は、書き込みデータの退避が発生したとき、その書き込みデータを示す情報を退避データリスト213に登録する。そして、データ削除制御部230は、退避が不要な状態になると、退避データリスト213に基づいて、退避されたデータを元の位置に復旧するための復旧処理を実行する。なお、データ削除制御部230は、
図1のデータ削除制御部1aの一例である。
【0064】
故障対応制御部240は、ストレージノードの故障が発生した場合に、故障ノードに対する書き込みデータを退避させる制御を行う。
次に、
図8は、ストレージプールの構成例を示す図である。
【0065】
本実施の形態のオブジェクトストレージシステムでは、複数のドライブがまとめられてストレージプールとして管理される。本実施の形態では、ストレージプールはストレージノードを単位として生成され、1つのストレージプールは、1つまたは複数のストレージノードに含まれるドライブによって実現される。
【0066】
また、1つのストレージプールは同じアクセス性能のドライブによって実現される。これにより、ストレージプールはそれぞれ固有のアクセス性能を備える論理的な記憶装置として利用される。そして、アクセス性能が異なるストレージプールは、アクセス頻度が高いデータを高速なストレージプールに保存し、アクセス頻度が低いデータを低速なストレージプールに保存する、といった目的で使い分けられる。なお、1つのストレージプールに含まれるドライブは、アクセス性能が同じだけでなく、記憶容量が同じであってもよい。
【0067】
図8の上側に示す例では、ストレージノード10a~10cに含まれるドライブによって高速なストレージプール13aが構築され、ストレージノード10d~10fに含まれるドライブによって低速なストレージプール13bが構築されているとする。すなわち、ストレージノード10a~10cに含まれるドライブより、ストレージノード10d~10fに含まれるドライブのアクセス性能が低くなっている。
【0068】
なお、これ以後、説明を簡単にするために、ストレージノード10a~10fは次のような構成であるものとする。ストレージノード10aは、コントローラ11aとドライブ12a1,12a2を備えている。ストレージノード10bは、コントローラ11bとドライブ12b1,12b2を備えている。ストレージノード10cは、コントローラ11cとドライブ12c1,12c2を備えている。ストレージノード10dは、コントローラ11dとドライブ12d1,12d2を備えている。ストレージノード10eは、コントローラ11eとドライブ12e1,12e2を備えている。ストレージノード10fは、コントローラ11fとドライブ12f1,12f2を備えている。
【0069】
ところで、前述のように、このオブジェクトストレージシステムは、ストレージノードを増設可能なスケールアウト型のストレージシステムとなっている。このとき、増設したストレージノードを既存のストレージプールに組み込むことで、ストレージプールの記憶容量を拡大することができる。そして、記憶容量が拡大されたストレージプールにおいては、コントローラ間のアクセス制御負荷やドライブ間のアクセス負荷が平準化するようにデータを再配置すること(リバランス処理)が可能になっている。
【0070】
オブジェクトストレージシステムでは、データがディレクトリ構造で管理されるファイル型のストレージシステムと比較して、データの格納場所の管理が容易であり、データの移動や複製、分散配置をしやすくなっている。このため、ストレージ増設による記憶容量の拡大やリバランス処理が容易であり、一定のアクセス性能を維持しつつ、高い拡張性を実現できる。このような特性から、オブジェクトストレージシステムは、大容量データの保存に適している。近年、保存されるデータ量は増大しており、それに伴ってオブジェクトストレージシステムのスケールアウトが頻繁に行われている。
【0071】
図8の下側では、ストレージノード10gが増設され、低速のストレージプール13bに組み込まれたとする。ストレージノード10gは、コントローラ11gとドライブ12g1,12g2を備えているとする。以下、
図8のようにストレージノード10gが増設されたことに伴うリバランス処理を例示して説明する。
【0072】
図9は、ストレージノード増設に伴うリバランス処理の例を示す図である。
図9の上側に示すように、ストレージプール13aには、データAに対応するデータA1~A3と、データBに対応するデータB1~B3と、データCに対応するデータC1~C3が格納されている。また、ストレージプール13bには、データDに対応するデータD1~D3と、データEに対応するデータE1~E3と、データFに対応するデータF1~F3が格納されている。データA1~A3,B1~B3,C1~C3,D1~D3,E1~E3,F1~F3は、それぞれオブジェクトである。
【0073】
本実施の形態のオブジェクトストレージシステムでは、データは複数のドライブに冗長化されて記憶される。冗長化の方法としては、例えば、レプリケーションやイレージャコーディングが利用される。データA1~A3は、データAを冗長化するために生成されたデータ(オブジェクト)を示す。
【0074】
例えば、レプリケーションが利用される場合、データAはオブジェクトであり、データA1はデータAそのものであり、データA2,A3はデータA1をコピーしたコピーデータ(バックアップデータ)である。ゲートウェイノード40がデータAを書き込む場合、監視ノード30は、データA1~A3の格納場所をゲートウェイノード40に通知して、データAをそれらの3カ所に書き込むように指示する。また、ゲートウェイノード40がデータAを読み出す場合、監視ノード30は通常、データA1の格納場所をゲートウェイノード40に通知して、データA1を読み出すように指示する。
【0075】
また、イレージャコーディングが利用される場合、データA1~A3は、データAにパリティを付加したビット列を分割することで生成されたデータである。ゲートウェイノード40がデータAを書き込む場合、監視ノード30は、データA1~A3の格納場所をゲートウェイノード40に通知し、データAを基にデータA1~A3を生成して該当する格納場所に書き込むように指示する。また、ゲートウェイノード40がデータAを読み出す場合、監視ノード30は例えば、データA1,A2の格納場所をゲートウェイノード40に通知し、データA1,A2を読み出してデータAを復元するように指示する。この例では、データA1~A3のうちの1つが失われても、残りの2つのデータから元のデータAを復元できる。なお、実際には、分割したデータ列のうち少なくとも2つが失われた場合でも残りのデータから元のデータを復元できるようにデータ列の分割数が決定される。
【0076】
データBとデータB1~B3との関係、データCとデータC1~C3との関係、データDデータとD1~D3との関係、データEとデータE1~E3との関係、データFとデータF1~F3との関係も、データAとデータA1~A3との関係と同様である。
【0077】
データA1~A3は、ストレージプール13aに属するストレージノード10a~10cのうち互いに異なるストレージノードに含まれるドライブに格納される。これにより、ドライブの故障だけでなく、コントローラの故障などストレージノード単位の故障が発生した場合におけるデータの消失を防止する。データB1~B3、およびデータC1~C3についても同様である。
【0078】
図9の例では、データA1はドライブ12a1に格納され、データA2はドライブ12b1に格納され、データA3はドライブ12c1に格納されている。データB1はドライブ12a1に格納され、データB2はドライブ12b1に格納され、データB3はドライブ12c1に格納されている。データC1はドライブ12a2に格納され、データC2はドライブ12b2に格納され、データC3はドライブ12c2に格納されている。
【0079】
また、データD1~D3は、ストレージプール13bに属するストレージノード10d~10fのうち互いに異なるストレージノードに含まれるドライブに格納される。データE1~E3、およびデータF1~F3についても同様である。
図9の例では、データD1はドライブ12d1に格納され、データD2はドライブ12e1に格納され、データD3はドライブ12f1に格納されている。データE1はドライブ12d1に格納され、データE2はドライブ12e1に格納され、データE3はドライブ12f1に格納されている。データF1はドライブ12d2に格納され、データF2はドライブ12e2に格納され、データF3はドライブ12f2に格納されている。
【0080】
以上の状態から、ストレージノード10gが増設され、ストレージプール13bに組み込まれたとする。このとき、監視ノード30のリバランス処理部330は、ストレージノード10d~10fに格納されたデータについて、拡張後のストレージプール13b内のドライブ間のアクセス負荷やコントローラ間の制御負荷を平準化させるリバランス処理を実行する。リバランス処理は、ストレージノード10d~10fに格納されたデータのうち再配置すべきデータを、新たな配置先にコピーするコピー処理と、コピー済みの元のデータを削除する削除処理とに大別される。
【0081】
図9の下側に示す例では、データD1,E2,F3が再配置の対象データとして特定されたとする。そして、データD1,E2はストレージノード10gのドライブ12g1にコピーされ、データF3はストレージノード10gのドライブ12g2にコピーされたとする。このとき、データD1は、コントローラ11dによってドライブ12d1から読み出されてネットワーク62を介してコントローラ11gに転送され、コントローラ11gによってドライブ12g1に書き込まれる。また、データE2は、コントローラ11eによってドライブ12e1から読み出されてネットワーク62を介してコントローラ11gに転送され、コントローラ11gによってドライブ12g1に書き込まれる。データF3は、コントローラ11fによってドライブ12f2から読み出されてネットワーク62を介してコントローラ11gに転送され、コントローラ11gによってドライブ12g2に書き込まれる。
【0082】
図10は、データの削除処理の比較例を示す図である。
図10では、
図9の下側に示したようにデータD1,E2,F3のコピー処理が実行された後、すぐにコピー元のデータD1,E2,F3の削除処理が実行されたとする。なお、ドライブ12d1内のデータD1の削除処理は、コントローラ11dによって実行される。また、ドライブ12e1内のデータE2の削除処理は、コントローラ11eによって実行される。ドライブ12f2内のデータF3の削除処理は、コントローラ11fによって実行される。
【0083】
ここで、削除処理の実行中でも、ゲートウェイノード40からのストレージプール13bに対するアクセスが継続しているとする。この場合、データD1の削除処理が行われているドライブ12d1に対するアクセスが行われると、削除処理の負荷のためにそのアクセス速度が低下する可能性がある。データE2,F3の削除処理が行われているドライブ12e1,12f2についても同様である。
【0084】
実際には、ストレージノードの増設に伴う再配置および削除処理の対象データ数は膨大な数になり得る。このため、1つのドライブにおいて大量のデータについての削除処理が実行され得るので、このドライブに対するアクセス負荷や、このドライブを配下に備えるコントローラのアクセス制御負荷は過負荷になり、アクセス性能が大きく低下してしまう。前述のようにオブジェクトストレージシステムは大容量データの格納に向いており、その格納データ量は増大する傾向にある。このため、上記のようなデータの削除処理に伴うアクセス性能低下という問題の発生頻度は高まっている。
【0085】
そこで、本実施の形態では、管理ノード20が、データの削除処理を実行中のドライブに対するゲートウェイノード40からのアクセスを抑止するように制御する。そして、管理ノード20は、ゲートウェイノード40からそのドライブに対するデータの書き込みが発生した場合には、そのデータを他のドライブに書き込む(書き込みデータを他のドライブに退避させる)ように制御する。このように、負荷の小さいドライブの空き領域を書き込みデータの退避領域として有効活用することで、ゲートウェイノード40のアクセス性能の低下を抑制する。その結果として、クライアント装置50a,50b,50c,・・・からのゲートウェイノード40を介したストレージアクセス性能を可能な限り維持できるようにする。
【0086】
図11は、データ退避の比較例を示す図である。書き込みデータの退避先の選択方法としては、例えば、アクセス負荷が十分低く、空き容量も十分大きいドライブを選択する方法が考えられる。
図11では例として、このような方法により退避先として1つのドライブ12a2が選択され、データの削除処理を実行中のドライブに対する書き込みデータが、ドライブ12a2に退避されるとする。
【0087】
また、
図11の例では、データGに対応するデータG1,G2,G3がそれぞれドライブ12d1,12e1,12f2に記憶されていたとする。そして、ゲートウェイノード40においてデータGの更新が発生し、データG1,G2,G3をそれぞれデータG1’,G2’,G3’に更新する処理が要求されたとする。この場合、データG1’~G3’はドライブ12a2に退避されることになる。しかしこのケースでは、データG1’~G3’は同一のドライブ12a2に格納されてしまい、冗長性がなくなってしまうという問題がある。
【0088】
そこで、管理ノード20は、データの削除処理が複数のドライブで同時に実行されず、ドライブ単位で順番に実行されるように制御して、削除処理が実行させるドライブごとに、データの冗長性が保たれるような書き込みデータの適切な退避先を決定する。このような制御の実現のために、削除待ちリスト212が利用される。ストレージノードのコントローラは、リバランス処理に伴う、配下のドライブから他のストレージノードへのデータコピーを実行した後、削除処理の実行許諾を要求するための実行許諾要求を管理ノード20に送信して、実行が許諾されるのを待つ。管理ノード20のデータ削除制御部230は、実行許諾が要求されたドライブを示すレコードを削除待ちリスト212に登録する。そして、データ削除制御部230は、削除待ちリスト212の先頭からレコードを順次取り出し、取り出したレコードが示すドライブについて最適な退避先ドライブを設定した上で、取り出したレコードが示すドライブにおけるデータの削除処理の実行を許諾する。
【0089】
図12は、削除待ちリストに対する登録処理の例を示す図である。本実施の形態では、
図9に示したようにストレージノード10gが増設されてストレージプール13bに組み込まれると、監視ノード30のリバランス処理部330によりリバランス処理が開始される。リバランス処理部330は、ストレージノード10d~10fのドライブに格納されたデータの中からストレージノード10gのドライブに再配置すべきデータを特定する。そして、リバランス処理部330は、ストレージノード10d~10fのコントローラ11d~11fに対して、再配置の対象データとその格納先ドライブのリストを通知する。
【0090】
コントローラ11d~11fは、通知されたリストにしたがって再配置の対象データを格納先ドライブにコピーする。このとき、コントローラ11d~11fは、再配置の対象データが格納されているドライブを単位としてコピー処理を実行する。そして、コントローラ11d~11fは、1つのドライブについてのコピー処理が完了すると、そのドライブについてのデータ削除処理の実行許諾を要求するための実行許諾要求を管理ノード20に送信する。そのドライブについてのデータ削除処理は実行許諾の待ち状態になり、その実行が抑止される。
【0091】
図12の例では、まず、ドライブ12d1からの再配置の対象データのコピー処理が完了し、コントローラ11dから管理ノード20に対して、ドライブ12d1を指定した削除処理の実行許諾要求が送信される。管理ノード20のデータ削除制御部230は、この実行許諾要求に応じて、ストレージノード10dを識別するノードIDとドライブ12d1を識別するドライブIDを含むレコード212aを、削除待ちリスト212に登録する。
【0092】
また、
図12の例では次に、ドライブ12e1からの再配置の対象データのコピー処理が完了し、コントローラ11eから管理ノード20に対して、ドライブ12e1を指定した削除処理の実行許諾要求が送信される。管理ノード20のデータ削除制御部230は、この実行許諾要求に応じて、ストレージノード10eを識別するノードIDとドライブ12e1を識別するドライブIDとを含むレコード212bを、削除待ちリスト212に登録する。
【0093】
さらに、
図12の例では次に、ドライブ12f2からの再配置の対象データのコピー処理が完了し、コントローラ11fから管理ノード20に対して、ドライブ12f2を指定した削除処理の実行許諾要求が送信される。管理ノード20のデータ削除制御部230は、この実行許諾要求に応じて、ストレージノード10fを識別するノードIDとドライブ12f2を識別するドライブIDを含むレコード212cを、削除待ちリスト212に登録する。
【0094】
管理ノード20のデータ削除制御部230は、オブジェクトストレージシステム上の各ドライブについての現在の状況を示す情報を、例えば定期的に、あるいは削除待ちリスト212からレコードを選択するたびに、監視ノード30から収集する。データ削除制御部230は、収集された情報に基づいて書き込みデータの退避先ドライブを決定する。
【0095】
図13は、ドライブリストの例を示す図である。データ削除制御部230は、例えば、各ドライブについて収集された情報をドライブごとにリスト化したドライブリスト214を生成する。ドライブリスト214には、ノードIDおよびドライブIDによって識別されるドライブごとにレコードが登録される。
【0096】
本実施の形態では、ドライブのアクセス性能と、ドライブの現在のアクセス負荷と、ドライブの現在の残容量とが収集される。アクセス性能は、例えば書き込み速度(スループット)で表される。アクセス負荷は、例えば、アクティブな時間の割合を示すディスク使用率で表される。これらのアクセス性能、アクセス負荷および残容量の各情報は、監視ノード30のシステム監視部320によって収集され、管理ノード20のデータ削除制御部230に受け渡される。ただし、アクセス性能は事前にわかる情報であるので、管理ノード20の記憶部210にあらかじめ記憶されていてもよい。
【0097】
データ削除制御部230は、例えば、(1)ドライブのアクセス性能が高い、(2)ドライブのアクセス負荷が低い、(3)ドライブの残容量が大きい、という優先順で、書き込みデータの退避先ドライブを選択する。例えば、データ削除制御部230は、ドライブリスト214のレコードを、まず、アクセス性能の高い順にソートする。次に、データ削除制御部230は、アクセス性能が最高であり、同じ値を有するレコードが複数存在した場合、それらのレコードをアクセス負荷が低い順にソートする。次に、データ削除制御部230は、アクセス負荷が最低であり、同じ値を有するレコードが複数存在した場合、それらのレコードを残容量が大きい順にソートする。このようにして、最も順位の高いレコードが示すドライブが書き込みデータの退避先に決定される。
【0098】
ただし、データ削除制御部230は、データの冗長性が失われないように書き込みデータの退避先ドライブを決定する。そのために、データ削除制御部230は少なくとも、システム内のドライブのうち、データの削除処理が実行されるドライブ内のデータと冗長関係にある他のデータが格納されているドライブを除く他のドライブの中から、退避先ドライブを選択する。
【0099】
本実施の形態では、次のような方法を採用することで、データの冗長性が失われないように書き込みデータの退避先ドライブが決定される。冗長関係にあるデータは、同じストレージプール内の別のドライブに分散して配置される。そこで、データ削除制御部230は、データ削除処理の実行を許諾するドライブと同じストレージプールに含まれているドライブを、書き込みデータの退避先ドライブの候補から除外する。これにより、データ削除処理の実行を許諾するドライブとは別のストレージプールに含まれるドライブが、書き込みデータの退避先として決定されるようにする。
【0100】
図14は、データ削除および書き込みデータの退避の処理例を示す図である。
図14の例では、
図12に示した削除待ちリスト212から、ドライブ12d1を示すレコード212aがデータ削除制御部230によって選択されたとする。このとき、選択されたレコード212aのステータスは「0」から「1」に更新される。また、データ削除制御部230により、書き込みデータの退避先がドライブ12a2に決定されたとする。
【0101】
データ削除制御部230は、監視ノード30に対して、マップ情報312において格納位置がドライブ12d1となっているすべてのオブジェクトについて、格納位置をドライブ12a2に変更するように指示する。監視ノード30のマップデータ処理部340は、該当するオブジェクトについて、ノードIDおよびドライブIDを退避先ドライブを示すように更新する。また、マップデータ処理部340は、該当するオブジェクトについて、退避フラグを「0」から「1」に更新し、更新前の元のノードIDおよびドライブIDを変更前ノードIDおよび変更前ドライブIDの各項目に登録する。
【0102】
データ削除制御部230は、マップ情報312の更新が完了すると、ストレージノード10dのコントローラ11dに対して、データ削除処理の実行を許諾する許諾通知を送信する。コントローラ11dはこの許諾通知に応じて、ドライブ12d1に含まれる再配置の対象データの削除処理を開始する。
【0103】
ここで、ドライブ12d1でのデータ削除処理の実行中に、ゲートウェイノード40においてデータGの更新が発生し、データG1,G2,G3をそれぞれデータG1’,G2’,G3’に更新する処理が要求されたとする。このとき、監視ノード30のマップデータ処理部340は、マップ情報312に基づいて、データG1’,G2’の書き込み先としてそれぞれドライブ12e1,12f2をゲートウェイノード40に通知する。ゲートウェイノード40のアクセス制御部410は、ドライブ12e1,12f2にアクセスしてデータG2,G3をデータG2’,G3’に更新する。
【0104】
しかし、マップデータ処理部340は、上記手順で更新されたマップ情報312に基づき、データG1’の書き込み先としてドライブ12d1ではなく、退避先のドライブ12a2を通知する。これにより、アクセス制御部410は、データG1’を退避先のドライブ12a2に書き込む。このようにして、ドライブ12d1でデータの削除処理が実行されている間、ドライブ12d1に対する書き込みデータはドライブ12a2に退避される。このように、データの削除処理によってアクセス負荷が増大しているドライブ12d1でなく、高速かつ低負荷のドライブ12d1にデータG1’が書き込まれることで、書き込み速度の低下を抑制できる。
【0105】
また、管理ノード20のデータ削除制御部230は、データG1’が退避されると、データG1’を示すオブジェクトIDを退避データリスト213に登録する。この登録処理は、監視ノード30のマップデータ処理部340が、マップ情報312において退避フラグが「1」になっているデータG1’の格納位置の問い合わせをゲートウェイノード40から受けたときに、データG1’を示すオブジェクトIDを管理ノード20に通知することで行われる。退避データリスト213は、ドライブ12d1でのデータの削除処理が完了したときに、退避された書き込みデータをドライブ12d1内に書き戻す(退避データを復旧する)ために利用される。
【0106】
なお、以上の
図14では、データ削除処理が実行されているドライブ12d1に対する書き込みが要求された場合にのみ、書き込みデータが退避先ドライブに退避されるものとした。しかし、他の例として、データ削除処理が実行されているドライブ12d1が含まれるストレージノード10d内のすべてのドライブについて、書き込みが要求された場合に、書き込みデータが退避先ドライブに退避されるようにしてもよい。この場合、マップ情報312の更新では、格納位置としてストレージノード10dのノードIDが登録されているすべてのオブジェクトについて、格納位置がドライブ12a2に変更される。
【0107】
図15は、データ削除処理の実行中における読み出し処理例を示す図である。ドライブ12d1でのデータ削除処理の実行中に、ゲートウェイノード40においてデータEの読み出しが発生したとする。この場合、通常であればデータEに対応するデータE1~E3のうち、少なくとも、ドライブ12d1に格納されているデータE1が読み出される。しかし、ドライブ12d1でのデータ削除処理の実行中では、データE1が格納されているドライブ12d1が故障している場合と同様の読み出し制御が行われる。
【0108】
例えば、レプリケーションによりデータEが冗長化されている場合、通常はデータE1が読み出されるが、ドライブ12d1でのデータ削除処理の実行中では、ドライブ12g1からバックアップデータであるデータE2が読み出される。この制御は、次のように行われる。
【0109】
監視ノード30のマップデータ処理部340は、ゲートウェイノード40のアクセス制御部410からデータE1の格納位置の問い合わせを受けたとき、マップ情報312を参照し、データE1を示すオブジェクトIDに対応付けられた退避フラグを読み出す。退避フラグが「1」の場合、マップデータ処理部340は、データE1の読み出しが不可能であることをアクセス制御部410に通知する。すると、アクセス制御部410は、データE2の格納位置を問い合わせる。データE2のオブジェクトIDに対応する退避フラグは「0」であるので、マップデータ処理部340は、マップ情報312においてデータE2のオブジェクトIDに対応付けられたノードIDおよびドライブIDをアクセス制御部410に通知する。これにより、アクセス制御部410はデータE2の読み出しを実行する。
【0110】
また、イレージャコーディングによりデータEが冗長化されている場合、例えば、通常はデータE1,E2が読み出される。しかし、ドライブ12d1でのデータ削除処理の実行中では、データE2,E3が読み出されてデータEが復元される。この制御は、次のように行われる。
【0111】
監視ノード30のマップデータ処理部340は、ゲートウェイノード40のアクセス制御部410からデータE1,E2の格納位置の問い合わせを受けたとき、マップ情報312から、データE1,E2を示すオブジェクトIDに対応付けられた退避フラグを読み出す。データE1,E2に対応する退避フラグがそれぞれ「1」、「0」の場合、マップデータ処理部340は、データE2の格納位置をアクセス制御部410に通知するとともに、データE1の読み出しが不可能であることを通知する。すると、アクセス制御部410は、データE3の格納位置を問い合わせる。データE3のオブジェクトIDに対応する退避フラグは「0」であるので、マップデータ処理部340は、データE3の格納位置をアクセス制御部410に通知する。これにより、アクセス制御部410はデータE2,E3の読み出しを実行してデータEを復元する。
【0112】
このように、データの削除処理によってアクセス負荷が増大しているドライブ12d1に格納されているデータを読み出さず、それ以外のドライブに格納されているデータを読み出すことで、読み出し速度の低下を抑制できる。
【0113】
図16は、退避データの復旧処理例を示す図である。ドライブ12d1におけるすべてのコピー済みデータの削除処理が完了すると、ストレージノード10dのコントローラ11dは、削除処理が完了したことを示す完了通知を管理ノード20に送信する。管理ノード20のデータ削除制御部230は、退避データリスト213から退避されたデータのオブジェクトIDを取得し、そのオブジェクトIDに対応するデータの復旧処理を実行させる。
【0114】
図16の例では、退避データリスト213からデータG1’のオブジェクトIDが取得される。このオブジェクトIDは、データG1のオブジェクトIDと同一である。データ削除制御部230は、ストレージノード10aのコントローラ11aに対して、取得したオブジェクトIDを指定して、データG1’をドライブ12d1に移動させるように指示する。コントローラ11aはこの指示に応じて、ドライブ12a1からデータG1’を読み出し、このデータG1’をドライブ12d1に書き込むようにコントローラ11dに要求する。これにより、ドライブ12d1のデータG1がデータG1’に更新される。コントローラ11aは、書き込みが完了するとドライブ12a2内のデータG1’を削除して、復旧の完了通知を管理ノード20に送信する。
【0115】
管理ノード20のデータ削除制御部230は、監視ノード30に対してマップ情報312の復旧を指示する。この復旧指示では、ドライブ12d1に格納されていた各データの格納位置を、退避先のドライブ12a2から元のドライブ12d1に戻すように指示される。
【0116】
監視ノード30のマップデータ処理部340は、この指示にしたがい、マップ情報312における該当するオブジェクトに対応付けられたノードIDおよびドライブIDを、元のドライブ12d1を示すように更新する。この更新処理では、マップ情報312において退避フラグが「1」となっているレコードについて、ノードIDおよびドライブIDがそれぞれストレージノード10dおよびドライブ12dのIDに変更される。また、マップデータ処理部340は、該当するオブジェクトについて、退避フラグを「1」から「0」に更新する。
【0117】
以上の処理が完了すると、管理ノード20のデータ削除制御部230は、ドライブ12d1を示すレコード212aを削除待ちリスト212から削除する。これにより、ドライブ12d1についてのリバランス処理が完了し、ゲートウェイノード40からドライブ12d1に対する通常のアクセスが再開される。
【0118】
また、データ削除制御部230は、削除待ちリスト212から次のレコード212bを選択し、レコード212bが示すドライブ12e1におけるデータ削除処理が開始させる。このとき、その時点での最新のドライブリスト214の内容から、書き込みデータの退避先ドライブが決定される。
【0119】
以上の
図12~
図16に示した処理により、ドライブごとにデータ削除処理が実行されるとともに、書き込みデータの退避先ドライブが決定されて書き込みデータが退避される。そして、データ削除処理が完了すると、退避されていた書き込みデータが本来のドライブに移動されて復旧される。このような処理により、ゲートウェイノード40からのデータのアクセス性能を維持し、かつ書き込みデータの安全性を維持した状態で、ストレージノードの増設およびストレージプールの拡張を行うことができる。
【0120】
また、削除待ちリスト212を用いてデータ削除処理をドライブ単位で実行させ、複数のドライブでのデータ削除処理を同時に実行させないことで、データ削除処理を実行中の1つのドライブに対して、1つの退避先ドライブが決定される。このため、データ削除処理中の1つのドライブ内のデータに対応する更新データが1つの退避先ドライブに格納されるようになる。その結果、冗長関係にある複数のデータが同一の退避先ドライブに格納されることがなく、データの冗長性を低下させないようにすることができる。
【0121】
さらに、削除待ちリスト212を用いてデータ削除処理をドライブ単位で実行させ、複数のドライブでのデータ削除処理を同時に実行させないことで、書き込みデータの退避先の管理や、退避されていた書き込みデータを復旧させるための処理を簡易化できる。すなわち、書き込みデータの退避や退避されていた書き込みデータの復旧を、複雑な制御を行うことなく確実に実行できる。特に、書き込みデータの冗長性を低下させないような退避先ドライブを、簡易な処理によって確実に選択できる。
【0122】
次に、ストレージノードが故障した場合について説明する。
図17は、ストレージノードの故障に伴うデータ復元の処理例を示す比較例である。
図17では、上側に示すようにストレージノード10d~10gによってストレージプール13bが構築されている状態から、ストレージノード10dの故障が発生した場合を例示している。この場合、
図17の下側に示すように、ストレージノード10dのドライブ12d1,12d2に格納されていたデータの復元が行われる。
【0123】
図17の下側では例として、イレージャコーディングによりデータが冗長化されているものとし、データE2,E3に基づいてデータE1が復元され、データF2,F3に基づいてデータF1が復元されている。なお、レプリケーションによりデータが冗長化されている場合には、データE1はデータE2,E3のいずれかのコピーによって復元され、データF1はデータF2,F3のいずれかのコピーによって復元される。
【0124】
また、
図17の下側では例として、復元されたデータE1,F1はドライブ12e1に格納されたとする。この後、ストレージノード10e~10gにおいてコントローラ間の制御負荷やドライブ間のアクセス負荷を平準化するためのリバランス処理が実行される。
【0125】
図18は、ストレージノード故障後のリバランス処理の例を示す比較例である。
図18の例では、リバランス処理により、ドライブ12e1に格納されていたデータE1,F1が、それぞれドライブ12f2,12e2に再配置されるとする。この場合、コントローラ11eによって、データE1,F1がドライブ12f2,12e2にコピーされた後、データE1,F1を元のドライブ12e1から削除する削除処理が実行される。
【0126】
ここで、削除処理の実行中でも、ゲートウェイノード40からのストレージプール13bに対するアクセスが継続しているとする。この場合、データE1,F1の削除処理が行われているドライブ12e1に対するアクセスが行われると、削除処理の負荷のためにそのアクセス速度が低下する可能性がある。
【0127】
前述のストレージノードの増設の場合と同様、実際には、ストレージノードの故障に伴う再配置および削除処理の対象データ数は膨大な数になり得る。このため、1つのドライブにおいて大量のデータについての削除処理が実行され得る。その結果、このドライブに対するアクセス負荷や、このドライブを配下に備えるコントローラのアクセス制御負荷は過負荷になり、アクセス性能が大きく低下してしまう。
【0128】
そこで、本実施の形態では、次の
図19、
図20に示すような処理が実行される。
図19は、データ削除処理の実行中における書き込みデータの退避処理例を示す図である。なお、ここでは、レプリケーションまたはイレージャコーディングによるデータの多重度が3以上であるとする。例えば、レプリケーションが利用される場合、元のデータ(オブジェクト)に対応するバックアップデータが2以上生成されて分散配置される。また、イレージャコーディングが利用され、元のデータにパリティを付加したデータ列からm個のデータ(オブジェクト)が生成されて分散配置される場合、m個のデータのうち(m-2)個以下のデータを用いて元のデータを復元できるものとする。
【0129】
本実施の形態では、例えば
図19に示すようにストレージノード10dの故障が検知された場合、ストレージノード10dがいずれ復旧すると考えて、ストレージノード10d内のデータの復旧や、ストレージノード10e~10gでのリバランス処理を実行しない。管理ノード20の故障対応制御部240は、ストレージノード10dの故障が検知された場合、最新のドライブリスト214の内容を基に、ストレージノード10d内のドライブに対応する書き込みデータの退避先ドライブを決定する。
【0130】
このとき、故障対応制御部240は、退避先ドライブを1台のみ決定してもよいが、例えばクライアント装置上のアプリケーションの性質により多数の書き込み要求が発生し得る場合、退避先ドライブを複数台決定してもよい。例えば、故障対応制御部240は、ドライブリスト214の上位から順に退避先ドライブを選択することで、ストレージノード10d内のドライブごとに異なる退避先ドライブを決定する。ただし、前述のストレージノードの増設時と同様に、退避先ドライブは、ストレージノード10dが属するストレージプール13bに含まれないドライブの中から選択される。
【0131】
以下の説明では、ストレージノード10d内のドライブごとにそれぞれ個別の退避先ドライブが割り当てられるものとする。また、退避先ドライブを示すノードIDおよびドライブIDと、退避元ドライブを示すノードIDおよびドライブIDとの対応関係が、退避ドライブリスト215に登録されるものとする。このように退避先ドライブと退避元ドライブとが一対一で対応付けられることで、特にストレージノードが復旧した際のマップ情報312における格納位置の変更処理を単純化できる。なお、退避ドライブリスト215は、記憶部210に記憶される。
【0132】
故障対応制御部240は、このような退避先ドライブの決定結果に基づき、マップ情報312においてストレージノード10dのノードIDが対応付けられているすべてのオブジェクトについて、格納位置を退避先ドライブに変更するように監視ノード30に指示する。監視ノード30のマップデータ処理部340は、ストレージノードの増設の場合と同様に、該当するオブジェクトについて、ノードIDおよびドライブIDを退避先ドライブを示すように更新する。また、マップデータ処理部340は、該当するオブジェクトについて、退避フラグを「0」から「1」に更新する。
【0133】
これにより、ストレージノード10d内のドライブに格納されているデータに対する書き込み(更新)が要求された場合、書き込みデータは退避先ドライブに格納されるようになる。例えば
図19に示すように、ゲートウェイノード40においてデータEの更新が発生し、データE1,E2,E3をそれぞれデータE1’,E2’,E3’に更新する処理が要求されたとする。このとき、監視ノード30のマップデータ処理部340は、マップ情報312に基づいて、データE2’,E3’の書き込み先としてそれぞれドライブ12g1,12f1をゲートウェイノード40に通知する。ゲートウェイノード40のアクセス制御部410は、ドライブ12g1,12f1にアクセスしてデータE2,E3をデータE2’,E3’に更新する。
【0134】
しかし、マップデータ処理部340は、上記手順で更新されたマップ情報312に基づき、データE1’の書き込み先としてドライブ12d1ではなく、退避先のドライブ12a2を通知する。これにより、アクセス制御部410は、データE1’を退避先のドライブ12a2に書き込む。このようにして、ストレージノード10dの動作が停止している間、ドライブ12d1に対する書き込みデータはドライブ12a2に退避される。
【0135】
また、管理ノード20の故障対応制御部240は、データE1’が退避されると、監視ノード30からの通知に応じて、データE1’を示すオブジェクトIDを退避データリスト213に登録する。このとき、退避先を示すストレージノード10aのノードIDおよびドライブ12a2のドライブIDも退避データリスト213に登録される。
【0136】
図20は、退避データの復旧処理例を示す図である。ストレージノード10dが故障から復旧すると、管理ノード20の故障対応制御部240は、退避データリスト213から退避されたデータのオブジェクトIDを取得し、そのオブジェクトIDに対応するデータの復旧処理を実行させる。
【0137】
図20の例では、退避データリスト213からデータE1’のオブジェクトIDが登録されたレコードが取り出される。故障対応制御部240は、取り出したレコードのノードIDおよびドライブIDから、データE1’の現在の格納場所(退避先ドライブ)を判定する。また、故障対応制御部240は、退避ドライブリスト215を参照して、当該退避先ドライブに対応付けられた退避元ドライブを判定する。
図20の例では、ドライブ12a2が退避先ドライブと判定され、ドライブ12d1が退避元ドライブと判定される。故障対応制御部240は、ストレージノード10aのコントローラ11aに対して、ドライブ12a2内のデータE1’をドライブ12d1に移動させるように指示する。これにより、データE1’が本来の格納位置であるドライブ12d1に移動される。
【0138】
このようにして、退避データリスト213に登録されたすべてのオブジェクトIDについてのデータ移動が完了すると、故障対応制御部240は、監視ノード30に対してマップ情報312の更新を指示する。この更新処理では、マップ情報312のレコードのうち、退避フラグが「1」であり、かつ、ノードIDおよびドライブIDが退避ドライブリスト215に登録された退避先ドライブを示しているレコードについて、退避元ドライブを示すようにノードIDおよびドライブIDが変更される。また、該当レコードについて、退避フラグが「1」から「0」に更新される。以上の処理が完了すると、ストレージノード10dへのアクセスが再開される。
【0139】
以上の
図19、
図20に示したように、ストレージノードの故障が発生した場合には、リバランス処理が行われないように制御することで、データ削除処理の負荷に起因するアクセス速度の低下という問題を発生させないようにすることができる。なお、ストレージノードの故障中における読み出し処理の手順は、
図15で説明した、データ削除処理中における読み出し処理の手順と同様である。
【0140】
次に、オブジェクトストレージシステムにおける処理についてシーケンス図を用いて説明する。まず、ストレージノードが増設された場合の処理について、
図21~
図25を用いて説明する。なお、
図21、
図22、
図25では、
図8の下側に示したように、ストレージノード10gが増設され、ストレージプール13bに組み込まれた場合について例示する。
【0141】
図21は、ストレージノードが増設された場合の処理例を示すシーケンス図である。
[ステップS11]管理ノード20のシステム管理部220は、ストレージノード10gが増設されたことを検知する。このとき、増設されたストレージノード10gに含まれるコントローラ11gやドライブの情報が構成情報211,311に設定される。また、システム管理部220は、ストレージプール13bに関する設定の入力を受け付け、増設されたストレージノード10gにストレージプール13bを割り当てる設定情報を構成情報211に登録する。
【0142】
[ステップS12]システム管理部220は、ストレージノード10d~10gについてのリバランス処理の実行を、監視ノード30に依頼する。
[ステップS13]監視ノード30のリバランス処理部330は、コントローラ11d~11g間のアクセス制御負荷や、ストレージノード10d~10gに含まれるドライブ間のアクセス負荷が平準化するように、データ配置を再計算する。リバランス処理部330は、再計算の結果、ストレージノード10d~10fに含まれるドライブに格納されたデータ(オブジェクト)のうち再配置の対象データと、それらの移動先ドライブとを特定する。
【0143】
例えば、システム監視部320により、各ドライブのアクセス負荷と残容量とが定期的に検出される。アクセス負荷の指標としては、前述のディスク使用率や、アクセス頻度を用いることができる。リバランス処理部330は、最新のアクセス負荷および残容量の検出結果に基づいて、ドライブ間でアクセス負荷と残容量が平準化するようにデータ配置を再計算する。例えば、リバランス処理部330は、アクセス負荷の指標が所定の上限閾値以上であり、残容量が所定の下限閾値以下であるドライブから再配置の対象データを選択する。そして、リバランス処理部330は、選択したデータの移動先ドライブとして、アクセス頻度の指標が所定の下限閾値以下であり、残容量が所定の上限閾値以上である他のドライブを選択する。
【0144】
[ステップS14]リバランス処理部330は、ストレージノード10d~10fのコントローラ11d~11fに対して、再配置の対象データの移動を指示する。
すなわち、リバランス処理部330は、ストレージノード10dに含まれるドライブに格納された、再配置の対象データを示すオブジェクトIDと、そのデータが現在格納されているドライブのドライブIDと、そのデータの移動先ドライブを識別するためのノードIDおよびドライブIDとをコントローラ11dに通知して、データ移動を指示する。また、リバランス処理部330は、ストレージノード10eに含まれるドライブに格納された、再配置の対象データを示すオブジェクトIDと、そのデータが現在格納されているドライブのドライブIDと、そのデータの移動先ドライブを識別するためのノードIDおよびドライブIDとをコントローラ11eに通知して、データ移動を指示する。また、リバランス処理部330は、ストレージノード10fに含まれるドライブに格納された、再配置の対象データを示すオブジェクトIDと、そのデータが現在格納されているドライブのドライブIDと、そのデータの移動先ドライブを識別するためのノードIDおよびドライブIDとをコントローラ11fに通知して、データ移動を指示する。
【0145】
[ステップS15a~S19a]ストレージノード10dのコントローラ11dは、データ移動の指示に応じて、再配置の対象データを移動先ドライブにコピーする処理を実行する(ステップS15a)。すなわち、コントローラ11dは、再配置の対象データを該当するドライブから読み出し、移動先ドライブを配下に有するコントローラ(ここではコントローラ11g)に対して移動先ドライブへのデータの格納を依頼する。
【0146】
コントローラ11dは、対象データのコピー処理が完了すると、監視ノード30に対してマップ情報312の変更を指示する(ステップS16a)。この処理では、対象データの格納位置が移動先ドライブを示すように変更する指示が送信される。監視ノード30のマップデータ処理部340は、マップ情報312において対象データのオブジェクトIDに対応付けられたノードIDおよびドライブIDを、移動先ドライブを示すように変更する(ステップS17a)。これによりこの時点から、ゲートウェイノード40が対象データにアクセスする際、移動先ドライブ上の対象データにアクセスされるようになる。
【0147】
また、ストレージノード10dのコントローラ11dは、コピー処理が完了したドライブを識別するノードIDおよびドライブIDを指定して、そのドライブについてのデータ削除処理の実行許諾要求を管理ノード20に送信する(ステップS18a)。管理ノード20のデータ削除制御部230は、実行許諾要求を受信すると、指定されたノードIDおよびドライブIDを含むレコードを削除待ちリスト212に登録する(ステップS19a)。このとき、このレコードのステータスは「0」に設定される。
【0148】
以上のステップS15a~S19aの処理は、ストレージノード10dに含まれるドライブのうち、再配置の対象データが格納されているドライブ(対象ドライブ)のそれぞれについて実行される。例えば、コントローラ11dは、ステップS14でデータ移動の指示を受けると、再配置の対象データの情報を対象ドライブごとにリスト化する。コントローラ11dは、対象ドライブを1つ選択し、その対象ドライブに対応するリストに基づき、対象ドライブから再配置の対象データすべてについてのコピー処理を実行する。コントローラ11dは、コピー処理が完了すると、マップ情報312の更新を監視ノード30に指示するとともに、実行許諾要求を管理ノード20に送信し、当該対象ドライブでのデータ削除処理を実行待ち状態にする。また、このとき、コピー処理済みでない対象ドライブがある場合には、コントローラ11dはその対象ドライブを1つ選択して、同様の処理を実行する。これにより、対象ドライブでのコピー処理が完了するたびに実行許諾要求が送信され、それらの実行許諾要求に対応するレコードが削除待ちリスト212に登録される。
【0149】
[ステップS15b~S19b]ストレージノード10eのコントローラ11eは、ステップS14でデータ移動指示を受けると、再配置の対象データを移動先ドライブにコピーする処理を実行する(ステップS15b)。コントローラ11eは、対象データのコピー処理が完了すると、監視ノード30に対してマップ情報312の変更を指示する(ステップS16b)。この処理では、対象データの格納位置が移動先ドライブを示すように変更する指示が送信される。監視ノード30のマップデータ処理部340は、マップ情報312において対象データのオブジェクトIDに対応付けられたノードIDおよびドライブIDを、移動先ドライブを示すように変更する(ステップS17b)。これによりこの時点から、ゲートウェイノード40が対象データにアクセスする際、移動先ドライブ上の対象データにアクセスされるようになる。
【0150】
ストレージノード10eのコントローラ11eは、コピー処理が完了したドライブを識別するノードIDおよびドライブIDを指定して、そのドライブについてのデータ削除処理の実行許諾要求を管理ノード20に送信する(ステップS18b)。管理ノード20のデータ削除制御部230は、実行許諾要求を受信すると、指定されたノードIDおよびドライブIDを含み、ステータスが「0」に設定されたレコードを削除待ちリスト212に登録する(ステップS19b)。
【0151】
以上のステップS15b~S19bの処理も、ストレージノード10eに含まれるドライブのうち、再配置の対象データが格納されているドライブのそれぞれについて実行される。
【0152】
[ステップS15c~S19c]ストレージノード10fのコントローラ11fは、ステップS14でデータ移動指示を受けると、再配置の対象データを移動先ドライブにコピーする処理を実行する(ステップS15c)。コントローラ11fは、対象データのコピー処理が完了すると、監視ノード30に対してマップ情報312の変更を指示する(ステップS16c)。この処理では、対象データの格納位置が移動先ドライブを示すように変更する指示が送信される。監視ノード30のマップデータ処理部340は、マップ情報312において対象データのオブジェクトIDに対応付けられたノードIDおよびドライブIDを、移動先ドライブを示すように変更する(ステップS17c)。これによりこの時点から、ゲートウェイノード40が対象データにアクセスする際、移動先ドライブ上の対象データにアクセスされるようになる。
【0153】
ストレージノード10eのコントローラ11eは、対象データのコピー処理が完了すると、コピー処理が完了したドライブを識別するノードIDおよびドライブIDを指定して、そのドライブについてのデータ削除処理の実行許諾要求を管理ノード20に送信する(ステップS18c)。管理ノード20のデータ削除制御部230は、実行許諾要求を受信すると、指定されたノードIDおよびドライブIDを含み、ステータスが「0」に設定されたレコードを削除待ちリスト212に登録する(ステップS19c)。
【0154】
以上のステップS15c~S19cの処理も、ストレージノード10fに含まれるドライブのうち、再配置の対象データが格納されているドライブのそれぞれについて実行される。
【0155】
なお、
図21の処理では、再配置の対象データのコピー処理が完了すると、その対象データについてのマップ情報312の格納位置が変更される(ステップS17a~17c)。これにより、ゲートウェイノード40は、コピー元データの削除を待たずに、より負荷の低いドライブ上に移動された対象データに対してアクセスできるようになり、そのアクセス性能が向上する。また、コピーが完了しているコピー元データの更新が行われなくなるため、データの整合性を容易に維持できる。ただし、マップ情報312の変更は、対象データの移動元ドライブにおけるデータ削除処理が完了した後に行われてもよい。
【0156】
図22は、データ削除処理の実行が開始される際の処理例を示すシーケンス図である。
[ステップS21]
図21のステップS11でストレージノード10gの増設が検知されると、管理ノード20のデータ削除制御部230は、
図21の処理と並行して、削除待ちリスト212を一定時間間隔で参照する。データ削除制御部230は、削除待ちリスト212を参照したとき、レコードが1つ以上存在し、かつ全レコードのステータスが「0」の場合に、それらのレコードのうち先頭のレコードを選択する。このとき、データ削除制御部230は、選択したレコードのステータスを「1」に更新する。
【0157】
以下、ストレージノード10dのノードIDとドライブ12d1のドライブIDが登録されたレコードが選択されたものとして説明を続ける。
[ステップS22]データ削除制御部230は、ストレージプール13bを除く他のストレージプールに属する各ドライブについての状況を監視ノード30に問い合わせる。
【0158】
[ステップS23]監視ノード30のシステム監視部320は、該当する各ドライブについてのアクセス性能、アクセス負荷および残容量を収集する。アクセス負荷および残容量については、現在の検出値が収集される。
【0159】
[ステップS24]システム監視部320は、収集された各ドライブについてのアクセス性能、アクセス負荷および残容量を、管理ノード20に送信する。
[ステップS25]管理ノード20のデータ削除制御部230は、送信された情報をリスト化してドライブリスト214を生成し、ドライブリスト214に基づいて書き込みデータの退避先ドライブを決定する。この決定では前述のように、(1)アクセス性能が高い、(2)アクセス負荷が低い、(3)残容量が大きい、という優先順で退避先ドライブが決定される。ただし、ステップS22でストレージプール13bを除く他のストレージプールに属するドライブの状況を問い合わせているので、退避先ドライブはストレージプール13b以外のストレージプールに属するドライブの中から決定される。これにより、書き込みデータを退避したときに、その書き込みデータの冗長性(多重度)を維持して、データの安全性を維持できる。
【0160】
なお、以上のステップS21~S24の例では、削除待ちリスト212からのレコード選択を契機としてドライブの状況を収集したが、例えば、レコード選択のタイミングとは関係なく、定期的にドライブの状況が収集されてもよい。例えば、管理ノード20のデータ削除制御部230は、一定時間間隔で、全ストレージノードに含まれる全ドライブの状況を監視ノード30に問い合わせ、監視ノード30から送信された情報をリスト化してドライブリスト214を生成する。また、データ削除制御部230は、ステップS21でレコードを選択すると、最新のドライブリスト214のレコードのうち、ストレージプール13b以外のストレージプールに属するドライブについてのレコードに基づいて、退避先ドライブを決定する(ステップS25に対応)。
【0161】
以下、ストレージノード10aのドライブ12a2が退避先ドライブに決定されたものとして説明を続ける。
[ステップS26]データ削除制御部230は、監視ノード30に対してマップ情報312の変更を指示する。このとき、データ削除制御部230は、変更前の格納位置としてストレージノード10dのノードIDとドライブ12d1のドライブIDとを送信するとともに、変更後の格納位置としてストレージノード10aのノードIDとドライブ12a2のドライブIDを送信する。
【0162】
[ステップS27]監視ノード30のマップデータ処理部340は、マップ情報312を参照し、ストレージノード10dのノードIDとドライブ12d1のドライブIDとが格納位置として登録されたレコードを特定する。マップデータ処理部340は、特定されたすべてのレコードについて、ノードIDおよびドライブIDを、退避先であるストレージノード10aのノードIDおよびドライブ12a2のドライブIDに更新する。また、マップデータ処理部340は、特定されたすべてのレコードにおける退避フラグを「0」から「1」に更新する。
【0163】
なお、以上のステップS26,S27の処理によれば、データ削除処理が実行されているドライブ12d1に対する書き込みが要求された場合にのみ、書き込みデータが退避先ドライブに退避されるようになる。しかし、他の例として次のような処理が実行されてもよい。
【0164】
ステップS26において、データ削除制御部230は、変更前の格納位置としてストレージノード10dのノードIDのみ送信するとともに、変更後の格納位置としてストレージノード10aのノードIDとドライブ12a2のドライブIDを送信する。ステップS27において、マップデータ処理部340は、マップ情報312から、ノードIDの項目にストレージノード10dのノードIDが登録されているレコードを特定する。マップデータ処理部340は、特定されたすべてのレコードについて、ノードIDおよびドライブIDの項目に登録されているIDを、変更前ノードIDおよび変更前ドライブIDの項目にそれぞれ登録する。また、マップデータ処理部340は、特定されたすべてのレコードについて、ノードIDおよびドライブIDを、退避先であるストレージノード10aのノードIDおよびドライブ12a2のドライブIDに更新する。さらに、マップデータ処理部340は、特定されたすべてのレコードにおける退避フラグを「0」から「1」に更新する。
【0165】
このような更新処理により、データ削除処理が実行されているドライブ12d1が含まれるストレージノード10d内のすべてのドライブについて、書き込みが要求された場合に、書き込みデータが退避先ドライブに退避されるようになる。
【0166】
[ステップS28]マップデータ処理部340は、マップ情報312の更新処理が完了すると、完了通知を管理ノード20に送信する。
[ステップS29]管理ノード20のデータ削除制御部230は、ストレージノード10dのコントローラ11dに対して、ドライブ12d1でのデータ削除処理の実行を許諾する許諾通知を送信する。データ削除制御部230は、後述する
図25のステップS62においてドライブ12d1でのデータ削除処理の完了通知が送信されるのを待つ待ち状態となる。
【0167】
[ステップS30]ストレージノード10dのコントローラ11dは、ドライブ12d1に含まれる再配置の対象データの削除処理を開始する。
図23は、データ削除処理の実行中における書き込み処理例を示すシーケンス図である。
【0168】
[ステップS41]ゲートウェイノード40のアクセス制御部410において、データ(オブジェクト)の書き込み要求が発生する。
[ステップS42]アクセス制御部410は、書き込みが要求されたデータ(書き込みデータ)のオブジェクトIDを監視ノード30に送信して、その格納位置を問い合わせる。
【0169】
[ステップS43]監視ノード30のマップデータ処理部340は、マップ情報312のレコードのうち、アクセス制御部410から受信したオブジェクトIDが登録されたレコードを参照する。
【0170】
[ステップS44]マップデータ処理部340は、参照先のレコードから退避フラグを読み出す。退避フラグが「1」の場合、ステップS45の処理が実行され、退避フラグが「0」の場合、ステップS47の処理が実行される。
【0171】
[ステップS45]マップデータ処理部340は、アクセス制御部410から受信したオブジェクトIDを管理ノード20に送信する。これにより、データ削除処理が実行されているドライブ(または当該ドライブを含むストレージノード内のいずれかのドライブ)に対して書き込み(更新)が要求されたデータの識別情報が管理ノード20に通知される。
【0172】
[ステップS46]管理ノード20のデータ削除制御部230は、アクセス制御部410から送信されたオブジェクトIDを退避データリスト213に登録する。
[ステップS47]監視ノード30のマップデータ処理部340は、ステップS43での参照先のレコードにおいてノードIDおよびドライブIDの各項目に登録されているIDを、ゲートウェイノード40に通知する。この処理では、ステップS44で「Yes」と判定された場合、退避先ドライブを示すノードIDおよびドライブIDが格納位置として通知される。
【0173】
[ステップS48]ゲートウェイノード40のアクセス制御部410は、マップデータ処理部340から通知された格納位置に対する書き込み処理を実行する。すなわち、アクセス制御部410は、通知されたノードIDに対応するストレージノードに対して、通知されたドライブIDに書き込みデータを書き込むように要求する。
【0174】
図24は、データ削除処理の実行中における読み出し処理例を示すシーケンス図である。
[ステップS51]ゲートウェイノード40のアクセス制御部410において、データ(オブジェクト)の読み出し要求が発生する。
【0175】
[ステップS52]アクセス制御部410は、読み出しが要求されたデータ(読み出しデータ)のオブジェクトIDを監視ノード30に送信して、その格納位置を問い合わせる。
【0176】
[ステップS53]監視ノード30のマップデータ処理部340は、マップ情報312のレコードのうち、アクセス制御部410から受信したオブジェクトIDが登録されたレコードを参照する。
【0177】
[ステップS54]マップデータ処理部340は、参照先のレコードから退避フラグを読み出す。退避フラグが「0」の場合、ステップS55aの処理が実行され、退避フラグが「1」の場合、ステップS55bの処理が実行される。
【0178】
[ステップS55a]マップデータ処理部340は、ステップS54での参照先のレコードにおいてノードIDおよびドライブIDの各項目に登録されているIDを、ゲートウェイノード40に通知する。
【0179】
[ステップS56a]ゲートウェイノード40のアクセス制御部410は、マップデータ処理部340から通知された格納位置からのデータ読み出し処理を実行する。
[ステップS55b,56b]このケースでは、読み出しデータが格納されているドライブが故障した場合の読み出し制御が行われる。
【0180】
監視ノード30のマップデータ処理部340は、指定されたデータの読み出しが不可能であることをゲートウェイノード40に通知する(ステップS55b)。ゲートウェイノード40のアクセス制御部410は、読み出し不可能とされたデータに対応する冗長データの格納位置を、監視ノード30に問い合わせる(ステップS56b)。
【0181】
前述した
図15の例において、ステップS52でデータE1のオブジェクトIDが送信されたとすると、次のような処理が実行される。レプリケーションが用いられている場合、ステップS56bにおいて、アクセス制御部410はデータE2(またはデータE3)の格納位置を問い合わせる。アクセス制御部410は、問い合わせに応じて通知された格納位置からデータE2(またはデータE3)を読み出す。一方、イレージャコーディングが用いられている場合、ステップS56bにおいて、アクセス制御部410はデータE3の格納位置を問い合わせる。アクセス制御部410は、問い合わせに応じて通知された格納位置からデータE3を読み出す。実際には、アクセス制御部410は、データE3とともにデータE2も読み出してデータEを復元する。
【0182】
なお、本実施の形態では
図21のステップS17a~S17cに示したように、再配置の対象データのコピーが完了すると、元のデータの削除を待つことなく、マップ情報312における対象データの格納位置がコピー先ディスクを示すように変更される。この場合、
図23での書き込み対象データや
図24での読み出し対象データ(ただし、退避フラグが「1」となっているデータ)は、削除処理の対象となっていないデータとなる。
【0183】
一方、再配置の対象データについて、コピー元のデータを削除した後にマップ情報312の格納位置を変更するように変形することもできる。この場合には、
図23での書き込み対象データや
図24での読み出し対象データ(ただし、退避フラグが「1」となっているデータ)には、削除処理対象のデータも含み得る。しかし、削除処理対象のデータが書き込み対象となった場合には、コピー済みのデータとの整合性を保つための処理が必要となる。
【0184】
図25は、データ削除処理の実行が完了した際の処理例を示すシーケンス図である。この
図25では、
図22のステップS30において実行が開始された、ドライブ12d1でのデータ削除処理が完了した場合について例示する。
【0185】
[ステップS61]ストレージノード10dのコントローラ11dは、ドライブ12d1に格納されている、再配置の対象データすべてについての削除処理の実行を完了する。
[ステップS62]コントローラ11dは、データ削除処理の完了通知を管理ノード20に送信する。
【0186】
[ステップS63]管理ノード20のデータ削除制御部230は、退避データリスト213を参照して、登録されているオブジェクトIDを取得する。
[ステップS64]データ削除制御部230は、取得したオブジェクトIDのそれぞれに対応する退避データ(オブジェクト)の復旧処理を実行する。すなわち、データ削除制御部230は、退避先のドライブ12a1を配下に備えるコントローラ11aに対して、退避データを元のドライブ12d1に移動させるように指示する。これにより、ドライブ12a1に退避されたすべての書き込みデータによって、ドライブ12d1内の対応する旧データが更新される。ドライブ12a1に退避されていた書き込みデータは、削除される。
【0187】
[ステップS65]データ削除制御部230は、監視ノード30に対してマップ情報312の復旧を指示する。具体的には、データ削除制御部230は、マップ情報312において退避フラグが「1」となっているレコードについて、ノードIDおよびドライブIDをそれぞれストレージノード10dおよびドライブ12d1のIDに変更するように、監視ノード30に指示する。
【0188】
[ステップS66]監視ノード30のマップデータ処理部340は、指示にしたがい、マップ情報312において退避フラグが「1」となっているレコードについて、ノードIDおよびドライブIDをそれぞれストレージノード10dおよびドライブ12d1に変更する。また、マップデータ処理部340は、ノードIDおよびドライブIDを変更した各レコードの退避フラグを「0」に更新する。退避フラグが「0」になることで、ゲートウェイノード40からドライブ12d1に対するアクセスの抑止状態が解除され、そのアクセス処理が再開される。
【0189】
[ステップS67]マップデータ処理部340は、マップ情報312の変更が完了したことを管理ノード20に通知する。
[ステップS68]管理ノード20のデータ削除制御部230は、削除待ちリスト212から、データ削除処理が完了したドライブに対応するレコード(
図22のステップS21で選択したレコード)を削除する。
【0190】
この後、データ削除制御部230は、削除待ちリスト212を参照し、レコードが存在する場合には、それらのうち先頭のレコードを選択し、そのレコードに対応するデータ削除処理の制御を開始する(
図22のステップS21)。また、削除待ちリスト212にレコードが存在しない場合、データ削除制御部230は一定時間後に削除待ちリスト212を再度参照する。
【0191】
次に、
図26は、ストレージノードが故障した場合の処理例を示すシーケンス図である。
[ステップS71]監視ノード30のシステム監視部320は、ストレージノードの故障を検出する。ここでは例として、
図19に示したようにストレージノード10dが故障したとする。システム監視部320は、ストレージノードが故障したことを管理ノード20に通知する。
【0192】
[ステップS72]管理ノード20の故障対応制御部240は、通知の受信によりストレージノード10dが故障したことを認識する。
[ステップS73]故障対応制御部240は、ストレージプール13bを除く他のストレージプールに属する各ドライブについての状況を監視ノード30に問い合わせる。
【0193】
[ステップS74]監視ノード30のシステム監視部320は、該当する各ドライブについてのアクセス性能、アクセス負荷および残容量を収集する。アクセス負荷および残容量については、現在の検出値が収集される。
【0194】
[ステップS75]システム監視部320は、収集された各ドライブについてのアクセス性能、アクセス負荷および残容量を、管理ノード20に送信する。
[ステップS76]管理ノード20の故障対応制御部240は、送信された情報をリスト化してドライブリスト214を生成し、ドライブリスト214に基づいて書き込みデータの退避先ドライブを決定する。この決定では、故障対応制御部240は、(1)アクセス性能が高い、(2)アクセス負荷が低い、(3)残容量が大きい、という優先順で、ドライブリスト214内のレコードをソートする。故障対応制御部240は、ソート後のドライブリスト214のレコードを先頭から順に選択しながら、故障したストレージノード10dに含まれるドライブ(退避元ドライブ)のそれぞれに対して退避先ドライブを割り当てる。故障対応制御部240は、退避元ドライブと退避先ドライブとの対応関係を退避ドライブリスト215に登録する。
【0195】
[ステップS77]故障対応制御部240は、監視ノード30に対してマップ情報312の変更を指示する。このとき、故障対応制御部240は、退避ドライブリスト215に基づき、退避先ドライブを示す格納位置を、対応する退避元ドライブを示す格納位置に変更するように指示する。
【0196】
[ステップS78]監視ノード30のマップデータ処理部340は、マップ情報312のレコードのうち、退避フラグが「1」であり、かつ、ノードIDおよびドライブIDが退避先ドライブを示しているレコードについて、対応する退避元ドライブを示すようにノードIDおよびドライブIDを変更する。また、マップデータ処理部340は、該当するすべてのレコードにおける退避フラグを「0」から「1」に更新する。
【0197】
この後、ストレージノード10dの復旧が検出されるまでの期間では、ゲートウェイノード40においてストレージノード10d内のデータに対する書き込みが発生すると、書き込みデータは退避先ドライブに退避されるようになる。このような書き込み発生時の処理は、基本的に
図23と同様である。ただし、
図23におけるデータ削除制御部230の処理は、故障対応制御部240によって実行される。また、
図23のステップS45では、オブジェクトIDとともに、ステップS47で通知される格納位置(ノードIDとドライブID)も管理ノード20に通知される。そして、ステップS46では、通知されたノードIDとドライブIDが、オブジェクトIDとともに退避データリスト213に登録される。また、ゲートウェイノード40においてストレージノード10d内のデータの読み出しが発生した場合には、
図24と同様の処理が行われる。
【0198】
次に、ストレージノード10dが復旧した場合について説明する。
[ステップS81]管理ノード20のシステム管理部220は、ストレージノード10dが復旧したことを検知する。
【0199】
[ステップS82]管理ノード20の故障対応制御部240は、退避データリスト213を参照して、レコードの情報を取得する。
[ステップS83]故障対応制御部240は、取得したレコードのそれぞれに対応する退避データ(オブジェクト)の復旧処理を実行する。この復旧処理では、故障対応制御部240は、取得したレコードのノードIDおよびドライブIDから、退避データの現在の格納場所(退避先ドライブ)を判定する。また、故障対応制御部240は、退避ドライブリスト215を参照して、当該退避先ドライブに対応付けられた退避元ドライブを判定する。故障対応制御部240は、退避先ドライブを配下に備えるコントローラに対して、退避データを退避先ドライブから退避元ドライブに移動させるように指示する。故障対応制御部240は、以上の処理を退避データリスト213のレコードそれぞれについて実行する。
【0200】
[ステップS84]故障対応制御部240は、退避ドライブリスト215に基づき、監視ノード30に対してマップ情報312の復旧を指示する。具体的には、故障対応制御部240は、マップ情報312のレコードのうち、ノードIDおよびドライブIDが退避先ドライブを示しているレコードについて、退避元ドライブを示すようにノードIDおよびドライブIDを更新するように指示する。
【0201】
[ステップS85]監視ノード30のマップデータ処理部340は、マップ情報312のレコードのうち、退避フラグが「1」のレコードについて、ノードIDおよびドライブIDを指示の通りに変更する。また、マップデータ処理部340は、ノードIDおよびドライブIDを変更したレコードの退避フラグを「1」から「0」に更新する。退避フラグが「0」になることで、復旧したストレージノード10d内のドライブに対するゲートウェイノード40からのアクセスの抑止状態が解除され、そのアクセス処理が再開される。
【0202】
なお、上記の各実施の形態に示した装置(例えば、情報処理装置1~3、コントローラ11a~11g、管理ノード20、監視ノード30、ゲートウェイノード40、クライアント装置50a~50c)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0203】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0204】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【0205】
1~3 情報処理装置
1a データ削除制御部
2a アクセス先制御部
3a アクセス処理部
4a~4f 記憶装置
5 格納位置情報
DT1~DT3,DT3’ データ
S1~S7 ステップ