(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-20
(45)【発行日】2024-05-28
(54)【発明の名称】情報処理方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20240521BHJP
G06F 13/10 20060101ALI20240521BHJP
G06F 11/16 20060101ALI20240521BHJP
G06F 11/20 20060101ALI20240521BHJP
【FI】
G06F3/06 304Z
G06F3/06 301X
G06F3/06 305C
G06F3/06 540
G06F13/10 340A
G06F11/16 666
G06F11/20 653
(21)【出願番号】P 2019238200
(22)【出願日】2019-12-27
【審査請求日】2022-11-02
【前置審査】
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100124811
【氏名又は名称】馬場 資博
(74)【代理人】
【識別番号】100088959
【氏名又は名称】境 廣巳
(74)【代理人】
【識別番号】100097157
【氏名又は名称】桂木 雄二
(74)【代理人】
【識別番号】100187724
【氏名又は名称】唐鎌 睦
(72)【発明者】
【氏名】庄司 諒
【審査官】松平 英
(56)【参考文献】
【文献】国際公開第2017/149581(WO,A1)
【文献】特開2016-099659(JP,A)
【文献】特開2007-233903(JP,A)
【文献】特開2019-036163(JP,A)
【文献】特開2011-154428(JP,A)
【文献】国際公開第2018/188618(WO,A1)
【文献】米国特許第06609176(US,B1)
【文献】LI,Peng et al,ProCode: Aproactive Erasure Coding Scheme for Cloud Storage Systems,2016 IEEE 35thSymposium on Reliable Distributed Systems,米国,IEEE,2016年,pp. 219-228
【文献】NUNOME, Atsushi et al,A Data Migration Scheme Considering Node Reliability for an Autonomous Distributed Storage System,2018 5th International Conference on ComputationalScience/Intelligence and Applied Informatics,米国,IEEE,2018年,pp. 160-165
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
11/08-11/10
11/16-11/20
12/00-12/128
13/00-13/18
16/00-16/958
(57)【特許請求の範囲】
【請求項1】
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードが、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報として、記憶装置が故障する時期を示す故障時期情報を計算し、
計算した結果に基づいて、前記故障時期情報が示す故障する時期が所定値以下となる記憶装置から前記フラグメントデータを他の記憶装置に移動させ
、
書き込みまたは読み出しからの経過時間に基づいて判断される前記フラグメントデータの使用頻度と、前記フラグメントデータと予め関連づけられたメタデータに含まれる、前記フラグメントデータを生成する際に生成した冗長データの数を表すパリティ数と同一のデータ内容であると判断され参照されている数を表す被参照数とのうちの少なくとも一方と、に応じて、前記フラグメントデータの優先度を計算し、
計算した前記フラグメントデータの優先度と、前記故障時期情報と、に応じて、前記フラグメントデータを他の記憶装置に移動させる
情報処理方法。
【請求項2】
請求項1に記載の情報処理方法であって、
計算した結果に基づいて移動が必要であると判断される記憶装置から、移動が必要でないと判断される他の記憶装置へと、前記フラグメントデータを移動させる
情報処理方法。
【請求項3】
請求項1または請求項2に記載の情報処理方法であって、
計算した結果と、記憶装置の空き容量を示す情報と、に基づいて、移動先の記憶装置を選択する
情報処理方法。
【請求項4】
請求項1から請求項3までのいずれか1項に記載の情報処理方法であって、
事前に定めた記憶装置への要求数を超えないように、前記フラグメントデータの移動を行う
情報処理方法。
【請求項5】
請求項
1に記載の情報処理方法であって、
優先度の高い前記フラグメントデータから順番に他の記憶装置に移動させる
情報処理方法。
【請求項6】
請求項1から請求項
5までのいずれか1項に記載の情報処理方法であって、
ストレージノードは、複数の記憶装置を有するとともに、他のストレージノードと通信可能に接続されており、
ストレージノード自身が有する他の記憶装置と、他のストレージノードが有する記憶装置と、のうちのいずれかに、前記フラグメントデータを移動させる
情報処理方法。
【請求項7】
請求項1から請求項
6までのいずれか1項に記載の情報処理方法であって、
ストレージノードは、複数の他のストレージノードと通信可能に接続されることでストレージシステムを構成しており、
ストレージシステム全体の空き容量を示す容量情報を取得し、
取得した前記容量情報に基づいて、前記フラグメントデータを移動した後、移動元の前記フラグメントデータを削除するか否か判断する
情報処理方法。
【請求項8】
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードであって、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報として、記憶装置が故障する時期を示す故障時期情報を計算する計算部と、
前記計算部が計算した結果に基づいて、前記故障時期情報が示す故障する時期が所定値以下となる記憶装置から前記フラグメントデータを他の記憶装置に移動させる移動部と、
書き込みまたは読み出しからの経過時間に基づいて判断される前記フラグメントデータの使用頻度と、前記フラグメントデータと予め関連づけられたメタデータに含まれる、前記フラグメントデータを生成する際に生成した冗長データの数を表すパリティ数と同一のデータ内容であると判断され参照されている数を表す被参照数とのうちの少なくとも一方と、に応じて、前記フラグメントデータの優先度を計算する優先度計算部と、
を有し、
前記移動部は、計算した前記フラグメントデータの優先度と、前記故障時期情報と、に応じて、前記フラグメントデータを他の記憶装置に移動させる
ストレージノード。
【請求項9】
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードに、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報として、記憶装置が故障する時期を示す故障時期情報を計算する計算部と、
前記計算部が計算した結果に基づいて、前記故障時期情報が示す故障する時期が所定値以下となる記憶装置から前記フラグメントデータを他の記憶装置に移動させる移動部と、
書き込みまたは読み出しからの経過時間に基づいて判断される前記フラグメントデータの使用頻度と、前記フラグメントデータと予め関連づけられたメタデータに含まれる、前記フラグメントデータを生成する際に生成した冗長データの数を表すパリティ数と同一のデータ内容であると判断され参照されている数を表す被参照数とのうちの少なくとも一方と、に応じて、前記フラグメントデータの優先度を計算する優先度計算部と、
を実現させ、
前記移動部は、計算した前記フラグメントデータの優先度と、前記故障時期情報と、に応じて、前記フラグメントデータを他の記憶装置に移動させる
プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理方法、ストレージノード、プログラムに関する。
【背景技術】
【0002】
データを複数ノード上の複数ディスクに分散して格納するストレージが知られている。
【0003】
上記のようなデータを分散して格納するストレージの一例として、例えば、特許文献1がある。特許文献1には、複数の記憶手段(記憶装置)と、分散記憶処理手段と、データ再生成手段と、を備えるストレージシステムが記載されている。特許文献1によると、分散記憶処理手段は、分割データおよび冗長データからなる複数のフラグメントデータを生成して、生成した複数のフラグメントデータを複数の記憶手段に分散して記憶する。また、データ再生成手段は、障害が発生した記憶手段に記憶されていた記憶対象データを構成するフラグメントデータを、障害が発生していない他の記憶手段に記憶されている記憶対象データを構成する他のフラグメントデータに基づいて再生成する。具体的には、データ再生成手段は、記憶対象データを構成するフラグメントデータのうちの冗長データの数に基づく優先順位にて、記憶対象データを構成するフラグメントデータの再生成を行う。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に記載の技術の場合、故障が発生した後にデータの再生成を行う。そのため、データの再生成が完了するまでの間、ストレージシステムの耐障害性、読み込み性能、書き込み性能、などの各種性能が悪化してしまう。
【0006】
このように、記憶装置に障害が発生した際に、復元処理が完了するまでの間ストレージシステムの性能が悪化するおそれがある、という課題が生じていた。
【0007】
そこで、本発明の目的は、記憶装置に障害が発生した際に、復元処理が完了するまでの間ストレージシステムの性能が悪化するおそれがある、という課題を解決する情報処理方法、ストレージノード、プログラムを提供することにある。
【課題を解決するための手段】
【0008】
かかる目的を達成するため本発明の一形態である情報処理方法は、
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードが、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算し、
計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる
という構成をとる。
【0009】
また、本発明の他の形態であるストレージノードは、
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードであって、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算する計算部と、
前記計算部が計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる移動部と、
を有する
という構成をとる。
【0010】
また、本発明の他の形態であるプログラムは、
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードに、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算する計算部と、
前記計算部が計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる移動部と、
を実現するためのプログラムである。
【発明の効果】
【0011】
本発明は、以上のように構成されることにより、記憶装置に障害が発生した際に、復元処理が完了するまでの間ストレージシステムの性能が悪化するおそれがある、という課題を解決する情報処理方法、ストレージノード、プログラムを提供することが可能となる。
【図面の簡単な説明】
【0012】
【
図1】本発明の第1の実施形態におけるシステム全体の構成の一例を示すブロック図である。
【
図2】
図1で示すアクセラレータノードの構成の一例を示すブロック図である。
【
図3】分散記憶処理の一例を説明するための図である。
【
図4】
図1で示すストレージノードの構成の一例を示すブロック図である。
【
図5】データ移動処理の一例を説明するための図である。
【
図7】データ移動処理の一例を説明するための図である。
【
図8】ストレージノードが故障時期リストを生成する際の動作の一例を示すフローチャートである。
【
図9】ストレージノードがフラグメントデータの移動または複製を行う際の動作の一例を示すフローチャートである。
【
図10】本発明の第2の実施形態におけるストレージノードのハードウェア構成を示すブロック図である。
【
図11】本発明の第2の実施形態におけるストレージノードの構成の一例を示すブロック図である。
【発明を実施するための形態】
【0013】
[第1の実施形態]
本発明の第1の実施形態を
図1から
図9までを参照して説明する。
図1は、システム全体の構成の一例を示すブロック図である。
図2は、アクセラレータノード110の構成の一例を示すブロック図である。
図3は、ストレージシステム100において行われる分散記憶処理の一例を説明するための図である。
図4は、ストレージノード120の構成の一例を示すブロック図である。
図5は、データ移動処理の一例を説明するための図である。
図6は、故障時期リスト126の一例を示す図である。
図7は、データ移動処理の一例を説明するための図である。
図8は、ストレージノード120が故障時期リスト126を生成する際の動作の一例を示すフローチャートである。
図9は、ストレージノード120がフラグメントデータの移動または複製を行う際の動作の一例を示すフローチャートである。
【0014】
本発明の第1の実施形態においては、記憶対象のデータを複数ディスクに分散して格納するストレージシステム100について説明する。ストレージシステム100は、記憶対象のデータを分割したブロックデータから、当該ブロックデータをさらに分割した複数のフラグメントデータ(冗長データを含む)を生成して、複数ディスクに分散して記憶する。また、ストレージシステム100は、ディスクやストレージノード120が故障する可能性に応じた情報として、ディスクやストレージノード120の故障時期を計算する。そして、ストレージシステム100は、計算した結果に基づいて、ディスクに格納したフラグメントデータを他のディスクに移動させる。
【0015】
図1は、ストレージシステム100を含むシステムの構成の一例を示している。
図1を参照すると、ストレージシステム100は、ネットワークなどを介して、データ格納・参照装置200と互いに通信可能に接続されている。データ格納・参照装置200は、外部装置などから記憶対象のデータを取得する。すると、データ格納・参照装置200は、取得した記憶対象のデータを記憶するようストレージシステム100に対して要求する。この要求に応じて、ストレージシステム100は、要求された記憶対象のデータを記憶する。
【0016】
ストレージシステム100は、記憶対象のデータを分割、冗長化、分散して複数の記憶装置に記憶する。また、ストレージシステム100は、記憶するデータの内容に応じて設定される固有のコンテンツアドレスによって、当該データを格納した格納位置を特定する。上記のような処理を行うため、ストレージシステム100は、コンテンツアドレスストレージシステムとも呼ばれうる。
【0017】
図1で示すように、ストレージシステム100は、例えば、複数のサーバ装置が接続された構成を有している。具体的には、ストレージシステム100は、1つまたは複数のアクセラレータノード110と、1つまたは複数のストレージノード120と、が接続された構成を有している。なお、本実施形態においては、ストレージシステム100が有するアクセラレータノード110の数やストレージノード120の数は特に限定しない。ストレージシステム100は、任意の数のアクセラレータノード110やストレージノード120を有することが出来る。
【0018】
アクセラレータノード110は、ストレージシステム100における記憶再生動作を制御するサーバ装置である。
図2は、アクセラレータノード110の構成の一例を示している。
図2を参照すると、アクセラレータノード110は、例えば、ファイルシステムサービス部111と、ブロック分割処理部112と、重複排除処理部113と、分散処理部114と、を有している。
【0019】
例えば、アクセラレータノード110は、CPU(Central Processing Unit)などの演算装置と、記憶装置と、を有している。例えば、アクセラレータノード110は、記憶装置に格納されたプログラムを演算装置が実行することで、上述した各処理部を実現する。
【0020】
ファイルシステムサービス部111は、データ格納・参照装置200から受信した記憶対象のデータをストレージノード120に格納する動作やデータをストレージノード120から読み出す動作を制御するファイルシステムとして機能する。
【0021】
例えば、ファイルシステムサービス部111は、データ格納・参照装置200から記憶対象のデータを受信する。すると、ファイルシステムサービス部111は、受信した記憶対象のデータの格納処理を開始する。
【0022】
また、例えば、ファイルシステムサービス部111は、データ格納・参照装置200からデータの読み出し要求を受信する。すると、ファイルシステムサービス部111は、データを読み出す処理を開始する。例えば、ファイルシステムサービス部111は、記憶対象となるデータのファイル名などの識別情報と、コンテンツアドレスなどのデータの格納位置を示す情報と、を対応付けて管理している。ファイルシステムサービス部111は、データ格納・参照装置200からファイルの読み出し要求を受けると、上記対応付けて管理する情報を参照して、要求されたファイルに対応するコンテンツアドレスを特定するとともに、特定したコンテンツアドレスにて指定される格納位置を特定する。そして、ファイルシステムサービス部111は、特定された格納位置に格納されている各フラグメントデータを、読み出し要求されたデータとして読み出す。
【0023】
なお、後述するように、記憶対象のデータを分割したブロックデータ1つから冗長データを含む複数のフラグメントデータが生成される。ファイルシステムサービス部111は、冗長データを含むすべてのフラグメントデータに対して読み込み要求を発行して、先行して結果が返ってきたフラグメントデータを利用するよう構成することが出来る。ファイルシステムサービス部111は、データを復元するために必要な最低限の数のフラグメントデータのみを読み込むよう構成しても構わない。例えば、ファイルシステムサービス部111は、後述するストレージノード120で作成される故障時期リスト126が示す各ディスクの故障時期などに基づいて、フラグメントデータの読込先を絞るよう構成しても構わない。
【0024】
図3は、データの格納処理を行う際のブロック分割処理部112、重複排除処理部113、分散処理部114の処理の一例を説明するための図である。
図3を参照すると、ブロック分割処理部112は、記憶対象のデータを固定長(例えば、64KB)または可変長のブロックデータに分割する。
【0025】
重複排除処理部113は、ブロック分割処理部112が分割したブロックデータのデータ内容に基づいて、当該データ内容を代表するハッシュ値を算出する。例えば、重複排除処理部113は、予め設定されたハッシュ関数(例えば、SHA-2などの暗号学的ハッシュ関数など)を用いて、ブロックデータのデータ内容からハッシュ値を算出する。
【0026】
また、重複排除処理部113は、算出したブロックデータのハッシュ値を用いて、重複排除処理を行う。例えば、アクセラレータノード110は、既に格納したブロックデータの内容に基づいて算出したハッシュ値と、格納位置を表す情報と、を組み合わせたコンテンツアドレスなどの重複排除情報を記憶している。重複排除処理部113は、重複排除情報を参照することで、同一内容のブロックデータが既にストレージノード120に格納されているか否か判断する。例えば、記憶対象のブロックデータに基づいて算出したハッシュ値が重複排除情報に含まれる場合、重複排除処理部113は、既に同一内容のブロックデータがストレージノード120に格納されていると判断する。この場合、重複排除処理部113は、算出したハッシュ値と一致するハッシュ値を有するコンテンツアドレスを重複排除情報から取得する。そして、重複排除処理部113は、取得したコンテンツアドレスを、記憶対象のブロックデータのコンテンツアドレスとしてファイルシステムサービス部111などに返却する。このような処理により、重複排除処理部113は、既に記憶していると判断したブロックデータをストレージノード120に再度格納しないようにする。
【0027】
また、例えば、記憶対象のブロックデータに基づいて算出したハッシュ値が重複排除情報に含まれない場合、重複排除処理部113は、記憶対象のブロックデータがストレージノード120にまだ格納されていないと判断する。この場合、分散処理部114などにて、かかるブロックデータをストレージノード120に格納する処理を行う。
【0028】
分散処理部114は、ブロックデータを複数のフラグメントデータに分割する。例えば、分散処理部114は、ブロックデータを9個のフラグメントデータに分割する。また、分散処理部114は、分割したフラグメントデータのうちいくつかが欠けた場合であっても、元となるブロックデータを復元可能なよう、冗長データを生成する。例えば、分散処理部114は、3個の冗長データを生成する。例えば、以上のような処理により、分散処理部114は、9個の分割データと3個の冗長データとにより構成される12個のフラグメントデータを生成する(
図3参照)。なお、分散処理部114が生成するフラグメントデータの数や冗長データの数は、上記例示した以外であっても構わない。
【0029】
また、分散処理部114は、後述するストレージノード120が有するデータ保存部121と協同して、各ストレージノード120に形成された各コンポーネントに、フラグメントデータを分散記憶させる。例えば、分散処理部114は、ストレージノード120に形成されたデータ格納領域である各コンポーネントに、各フラグメントデータを1個ずつそれぞれ格納する。
【0030】
例えば、以上のように、アクセラレータノード110が有するブロック分割処理部112、重複排除処理部113、分散処理部114と、ストレージノード120が有するデータ保存部121とは、協働して、記憶対象のデータを分割したブロックデータから、当該ブロックデータをさらに分割した複数のフラグメントデータ(冗長データを含む)を生成すして、複数の記憶装置に分散して記憶する分散記憶処理手段として機能する。
【0031】
ストレージノード120は、データを格納する記憶装置を備えたサーバ装置である。
図4は、ストレージノード120の構成の一例を示している。
図4を参照すると、ストレージノード120は、例えば、データ保存部121と、故障時期計算部122と、故障時期同期部123と、優先度計算部124と、データ移動部125と、を有している。また、ストレージノード120は、記憶装置127である複数のディスクを有するとともに、故障時期リスト126を記憶している。
【0032】
例えば、ストレージノード120は、CPUなどの演算装置と、記憶装置と、を有している。例えば、ストレージノード120は、記憶装置に格納されたプログラムを演算装置が実行することで、上述した各処理部を実現する。
【0033】
データ保存部121は、上述したように、アクセラレータノード110が有する分散処理部114と協同して、フラグメントデータをコンポーネントに格納する。なお、コンポーネントとは、ハッシュ値などに基づいてフラグメントデータをまとめるグループのことをいう。ストレージノード120が有する複数のディスクそれぞれにはコンポーネントの格納領域が1つまたは複数形成されており、フラグメントデータは、コンポーネントに格納される。
【0034】
なお、データ保存部121は、フラグメントデータをコンポーネントに格納する際、フラグメントデータと関連する情報を含むメタデータをフラグメントデータと関連付けて、同一のコンポーネントに格納するよう構成しても構わない。フラグメントデータと関連付けられるメタデータには、例えば、フラグメントデータの元となるブロックデータが所属するコンポーネントの構成を表すコンポーネント構成情報、ブロックデータからフラグメントデータを生成する際に生成した冗長データの数を表すパリティ数、同一のデータ内容であると判断され他のブロックデータとして参照されている数(つまり、重複するハッシュ値が算出された回数)を表す被参照数、などを含むことが出来る。メタデータには、上記例示した情報以外を含んでも構わない。
【0035】
故障時期計算部122は、ストレージノード120が有する記憶装置127であるディスクやストレージノード120自体が故障する可能性に応じた情報を計算する。例えば、故障時期計算部122は、故障する可能性に応じた情報として、ディスクやストレージノード120自体が故障する時期を示す故障時期を計算する。
【0036】
例えば、故障時期計算部122は、記憶装置127に含まれる各ディスクからS.M.A.R.T(Self-Monitoring, Analysis and Reporting Technology)情報を取得する。そして、故障時期計算部122は、取得したS.M.A.R.T情報に基づいて、ディスクの故障時期を計算する。また、例えば、故障時期計算部122は、BMC(Baseboard Management Controller)などを介して、ストレージノード120が有するOS(Operating System)、ディスクのエラー、警告情報などを取得する。そして、故障時期計算部122は、取得した情報の内容および出力頻度などに基づいて、ディスクやストレージノード120の故障時期を計算する。また、例えば、故障時期計算部122は、定期的に各ディスクへ読み込み要求を行い、応答時間遅延の推移などからディスクの故障時期を計算する。
【0037】
故障時期計算部122は、上述したような情報のうちの一つ、または、複数の組み合わせにより、ディスクやストレージノード120の故障時期を計算する。これにより、故障時期計算部122は、自装置が有するディスクや自装置自身であるストレージノード120の故障時期を示す自装置の故障時期リスト126(故障時期情報)を生成する。
【0038】
なお、本実施形態においては、故障時期計算部122が取得した各種情報に基づいて故障時期を計算する際の処理の詳細については特に限定しない。例えば、故障時期計算部122は、過去に起きた実際の故障例に基づいて用意した正例サンプルと負例サンプルとを機械学習することによって生成した判別モデルに基づいて故障時期を計算するなど、既知の方法を用いて故障時期を計算するよう構成して構わない。
【0039】
故障時期同期部123は、故障時期計算部122が計算・生成した自装置の故障時期リスト126を他のストレージノード120における計算結果と同期する。例えば、故障時期同期部123は、自装置の故障時期リスト126を他のストレージノード120に対して送信するとともに、ストレージシステム100に含まれる他のストレージノード120から各ストレージノード120における故障時期リスト126を受信する。このような同期処理を行うことで、故障時期同期部123は、ストレージシステム100に含まれる各ストレージノード120が有する各ディスクの故障時期、各ストレージノード120の故障時期、を示す故障時期リスト126を生成する。
【0040】
優先度計算部124は、ディスクに格納された各フラグメントデータの優先度を計算する。
【0041】
例えば、優先度計算部124は、直近の書き込み・読み出しからの経過時間に基づいて、各フラグメントデータの優先度を計算する。例えば、直近に利用したデータは再び使われる可能性がある(LRU(Least Recently Used))と想定される。そこで、優先度計算部124は、フラグメントデータの読み出しまたは書き込み時に、読み出しまたは書き込みを行ったフラグメントデータに対応する優先度を所定値上げる。また、優先度計算部124は、例えば、一定時間経過するごとに全ての優先度を均一に下げる。例えば、以上のように、優先度計算部124は、直近で使用頻度の高いフラグメントデータほど優先度が高くなるように、各フラグメントデータに対応する優先度を計算する。なお、フラグメントデータの書き込み時には、新規にフラグメントデータを書き込む場合の他に、ブロックデータが重複していると判断された場合を含むことが出来る。
【0042】
また、優先度計算部124は、上記例示した以外の方法でフラグメントデータの優先度を計算するよう構成しても構わない。例えば、優先度計算部124は、パリティ数、被参照数、などのメタデータが示す情報に応じて優先度を計算するよう構成しても構わない。例えば、優先度計算部124は、パリティ数が少ないほど高い優先度を計算するよう構成することが出来る。また、例えば、優先度計算部124は、被参照数が多くなるほど高い優先度を計算するように構成することが出来る。
【0043】
例えば、優先度計算部124は、上記例示した方法のうちのいずれか、または、組み合わせにより、各フラグメントデータの優先度を計算するよう構成することが出来る。優先度計算部124は、上記例示した以外の方法により優先度を計算するよう構成しても構わない。
【0044】
データ移動部125は、故障時期同期部123が同期した故障時期リスト126と優先度計算部124による計算結果とに基づいて、データの移動または複製を行う。
【0045】
例えば、データ移動部125は、故障時期リスト126を参照して、故障時期が予め定められた閾値以下となるディスク、または、ストレージノード120が故障時期リスト126に含まれるか否か確認する。そして、故障時期が予め定められた閾値以下となるディスク、または、ストレージノード120が故障時期リスト126に含まれる場合、データ移動部125は、故障時期が予め定められた閾値以下となるディスク、または、ストレージノード120は移動が必要な記憶装置であると判断して、当該記憶装置に格納されるフラグメントデータが移動の対象となる可能性があるフラグメントデータであると判断する。また、移動の対象となる可能性があるフラグメントデータがあると判断される場合、データ移動部125は、フラグメントデータの移動先を選定、フラグメントデータの移動方式を決定した後、優先度計算部124による計算結果に応じたフラグメントデータの移動処理を行う。
【0046】
移動先の選定は、例えば、所定の条件を満たすディスクの中からラウンドロビン方式で選定することにより行われる。例えば、データ移動部125は、故障時期リスト126から故障時期が予め定められた第2閾値以上あるディスクを移動が不要なディスクと判断して抽出する。そして、データ移動部125は抽出したディスクの中からラウンドロビン方式で移動先となるディスクを選定する。なお、データ移動部125は、上記選定を行う際、各ディスクの空き容量を示す情報を活用しても構わない。例えば、データ移動部125は、故障時期が予め定められた第2閾値以上あるディスクのうち空き容量が容量閾値以上であるディスクの中からラウンドロビン方式で選定するよう構成しても構わないし、例えば、最も空き容量があるディスクを選定するよう構成しても構わない。また、データ移動部125は、自装置以外のストレージノード120が有するディスクよりも自装置であるストレージノード120が有するディスクを優先して選定するよう構成しても構わない。例えば、データ移動部125は、自装置が有するディスクの中に上記条件を満たすディスクが存在しない場合に、自装置以外のストレージノード120が有するディスクから移動先を選定するよう構成しても構わない。
【0047】
また、移動方式の決定は、例えば、ストレージシステム100全体の空き容量に基づいて行われる。ここで、移動方式とは、例えば、データを移動するか、複製するかのうちのいずれかの方式を示している。例えば、ストレージノード120は、他のストレージノード120などと通信を行って、ストレージシステム100全体の空き容量を示す情報を取得する。そして、ストレージシステム100全体の空き容量(または割合)が予め定められた基準値以上の場合、データ移動部125は、フラグメントデータを複製すると決定する。この場合、データ移動部125は、複製元のディスクから複製対象のフラグメントデータを削除しない。一方、ストレージシステム100全体の空き容量が予め定められた基準値未満の場合、データ移動部125は、フラグメントデータを移動すると決定する。この場合、データ移動部125は、移動元のディスクから移動対象のフラグメントデータを削除する。例えば、このように、データ移動部125は、ストレージシステム100全体の空き容量が少ないと判断される場合に、複製ではなくフラグメントデータの移動を行うよう構成することが出来る。
【0048】
以上説明したように、移動の対象となる可能性があるフラグメントデータがあると判断される場合、データ移動部125は、移動先の選定、移動方式の決定を行う。その後、データ移動部125は、優先度計算部124による計算結果に応じたフラグメントデータの移動処理を行う。例えば、データ移動部125は、選定した移動先に対して決定した移動方式で、優先度の高いフラグメントデータから順番にフラグメントデータの移動・複製を行う。この際、データ移動部125は、事前に定めた単位時間あたりのディスクへの要求数を超えない範囲内でデータの移動・複製を行うよう構成することが出来る。このように、データの移動・複製を単位時間あたりのディスクへの要求数を超えない範囲内で予め行うことで、データ移動処理の負荷による読み出し要求の応答遅延を抑制しつつ、課題を解決することが出来る。なお、データ移動部125は、故障時期が予め定められた閾値以下となるディスク、または、ストレージノード120に格納されたフラグメントデータのうち、全てのフラグメントデータを優先度に応じて移動または複製するよう構成しても構わないし、例えば、優先度が所定値以上のフラグメントデータのみを優先度に応じて移動または複製するよう構成しても構わない。なお、データ移動部125が移動させるフラグメントデータを決める際に用いる上記所定値は、予め定められていても構わないし、例えば、ストレージシステム100全体の空き容量などに応じて適宜調整可能であっても構わない。
【0049】
以上が、データ移動部125の処理の一例である。例えば、データ移動部125は、上述したような処理によりデータの移動・複製を行った後、移動先を示す情報などをアクセラレータノード110などに返却することが出来る。ここで、データ移動部125によるフラグメントデータの移動・複製について、
図5から
図7までを参照してより具体的に説明する。
【0050】
図5は、フラグメントデータ移動・複製前の状況の一例を示している。
図5を参照すると、例えば、ストレージシステム100は、ストレージノード120-1、ストレージノード120-2、ストレージノード120-3、ストレージノード120-4の4つのストレージノード120を有している。また、ストレージノード120-1は、コンポーネントD1が形成されたディスク1、コンポーネントD2が形成されたディスク2、コンポーネントD3が形成されたディスク3、コンポーネントが形成されていないディスク4を有している。同様に、ストレージノード120-2は、コンポーネントD4が形成されたディスク1、コンポーネントD5が形成されたディスク2、コンポーネントD6が形成されたディスク3、コンポーネントが形成されていないディスク4を有している。また、ストレージノード120-3は、コンポーネントD7が形成されたディスク1、コンポーネントD8が形成されたディスク2、コンポーネントD9が形成されたディスク3、コンポーネントが形成されていないディスク4を有している。また、ストレージノード120-4は、コンポーネントD10が形成されたディスク1、コンポーネントD11が形成されたディスク2、コンポーネントD12が形成されたディスク3、コンポーネントが形成されていないディスク4を有している。
【0051】
上記のような状況で、故障時期リスト126に
図6で示すような情報が含まれるとする。
図6は、故障時期リスト126に含まれる情報の一例を示している。例えば、
図6の1行目は、ストレージノード120-1が有するディスク1の故障時期が300日後であることを示している。
図6で示す場合において、例えば故障時期と比較する閾値として50日が予め定められているとすると、ストレージノード120-1が有するディスク3とストレージノード120-4が有するディスク3とが閾値以下のディスクになる。そのため、データ移動部125は、ストレージノード120-1が有するディスク3内のコンポーネントD3に格納されたフラグメントデータと、ストレージノード120-4が有するディスク3内のコンポーネントD12に格納されたフラグメントデータと、が移動の対象となる可能性があるフラグメントデータであると判断する。
【0052】
上記判断に応じて、データ移動部125は、移動先の選定、移動方式の決定を行う。例えば、第2閾値が150日であるとすると、データ移動部125は、データの移動・複製先として、例えば、ストレージノード120-1が有するディスク4と、ストレージノード120-2が有するディスク4とを選定する。また、ストレージシステム100全体の空き容量が基準値以上であるため、データ移動部125は、フラグメントデータを複製すると決定したとする。この場合、
図7で示すように、データ移動部125は、ストレージノード120-1が有するディスク3からディスク4へと、優先度の高い順にフラグメントデータの複製を行う。また、データ移動部125は、ストレージノード120-4が有するディスク3からストレージノード120-2が有するディスク4へと、優先度の高い順にフラグメントデータの複製を行う。その結果、
図7で示すように、ストレージノード120-1が有するディスク3に形成されたコンポーネントD3内に格納されたフラグメントデータと、ストレージノード120-4が有するディスク3に形成されたコンポーネントD12内に格納されたフラグメントデータと、が、他のディスクに複製された状態となる。
【0053】
以上が、データ移動部125によるフラグメントデータの移動・複製の一例である。
【0054】
故障時期リスト126は、ディスクやストレージノード120が故障する時期を計算、推定した結果を示している。一般に、故障時期が近いほど故障する可能性も高いといえる。そのため、故障時期リスト126は、ディスクやストレージノード120が故障する可能性に応じた情報を示している、ということも出来る。例えば、
図6で示したように、故障時期リスト126には、ディスクやストレージノード120を識別するための情報と、ディスクやストレージノード120の故障時期を示す情報と、が含まれている。
【0055】
記憶装置127は、フラグメントデータを格納するディスクを例えば複数含んでいる。例えば、フラグメントデータは、ディスクに形成されるコンポーネントの内部に格納される。
【0056】
以上が、ストレージノード120の構成の一例である。
【0057】
続いて、
図8、
図9を参照して、ストレージノード120の動作の一例について説明する。まずは、
図8を参照して、ストレージノード120が故障時期リスト126を生成する際の動作の一例について説明する。
【0058】
図8を参照すると、故障時期計算部122は、ストレージノード120が有する記憶装置127であるディスクやストレージノード120自体の故障時期を計算する(ステップS101)。例えば、故障時期計算部122は、各ディスクから取得したS.M.A.R.T情報、BMCなどを介して取得した情報、ディスクに対する読み込み要求の結果、などに基づいて、自装置が有する各ディスクや自装置であるストレージノード120の故障時期を計算する。これにより、故障時期計算部122は、自装置の故障時期リスト126を生成する。
【0059】
故障時期同期部123は、故障時期計算部122が計算・生成した自装置の故障時期リスト126を他のストレージノード120における計算結果と同期する(ステップS102)。例えば、故障時期同期部123は、自装置の故障時期リスト126を他のストレージノード120に対して送信するとともに、ストレージシステム100に含まれる他のストレージノード120から各ストレージノード120における故障時期リスト126を受信する。このような処理により、故障時期同期部123は、ストレージシステム100に含まれる各ストレージノード120が有する各ディスクの故障時期、各ストレージノード120の故障時期、を示す故障時期リスト126を生成する。
【0060】
以上が、ストレージノード120が故障時期リスト126を生成する際の動作の一例である。続いて、
図9を参照して、ストレージノード120がフラグメントデータの移動または複製を行う際の動作の一例について説明する。
【0061】
図9を参照すると、データ移動部125は、故障時期リスト126を参照して、故障時期が予め定められた閾値以下となるディスク、または、ストレージノード120が故障時期リスト126に含まれるか否か確認する(ステップS201)。
【0062】
故障時期が閾値以下となるディスク、または、ストレージノード120が故障時期リスト126に含まれる場合(ステップS201、Yes)、データ移動部125は、移動先の選定、および、移動方式の決定を行う(ステップS202)。例えば、データ移動部125は、故障時期リスト126から故障時期が予め定められた第2閾値以上あるディスクを抽出して、抽出したディスクの中からラウンドロビン方式で移動先となるディスクを選定する。データ移動部125は、上記選定を行う際、各ディスクの空き容量を示す情報や、自装置が有するディスクであるか否かなどの情報、などを参照しても構わない。また、例えば、データ移動部125は、ストレージシステム100全体の空き容量に基づいて、データを移動するか、複製するかのうちのいずれかを示す移動方式を決定する。
【0063】
また、データ移動部125は、移動先の選定、および、移動方式の決定を受けて、フラグメントデータの移動を行う。例えば、データ移動部125は、優先度の高いフラグメントデータから順番にフラグメントデータの移動・複製を行う(ステップS203)。なお、データ移動部125は、優先度に応じて移動・複製するフラグメントデータを絞り込むよう構成しても構わない。
【0064】
以上が、ストレージノード120がフラグメントデータの移動または複製を行う際の動作の一例である。
【0065】
このように、ストレージノード120は、故障時期計算部122と故障時期同期部123とデータ移動部125とを有している。このような構成により、故障時期計算部122と故障時期同期部123とは、故障時期リスト126を生成することが出来る。また、データ移動部125は、故障時期リスト126に基づくフラグメントデータの移動・複製を行うことが出来る。その結果、データ移動部125は、例えば、故障する時期が近い(または、故障する可能性が高い)と判断されるディスクやストレージノード120に格納されているフラグメントデータを、ディスクやストレージノード120が実際に故障する前に他のディスクなどに移動・複製することが出来る。これにより、ディスクやストレージノード120に障害が発生した場合に性能が劣化するおそれを低減させることが出来る。
【0066】
また、ストレージノード120は、優先度計算部124を有している。このような構成により、データ移動部125は、優先度が高いフラグメントデータから順番に移動・複製するなど、優先度計算部124が計算した結果に応じたデータの移動・複製処理を行うことが出来る。その結果、より優先度の高いフラグメントデータを優先的に他のディスクなどに移動させることが出来る。これにより、ディスクやストレージノード120に障害が発生した場合に性能の低下が問題となるおそれをより低減させることが出来る。
【0067】
なお、本実施形態においては、ストレージシステム100が複数のサーバ装置を有する場合について説明した。しかしながら、ストレージシステム100が有する各機能は、例えば、1台のサーバ装置により実現されても構わない。
【0068】
また、本実施形態においては、ストレージノード120は、故障する可能性に応じた情報として故障時期リスト126を生成する場合について例示した。しかしながら、ストレージノード120は、例えば、所定時間経過するまでに故障する確率などを故障時期の代わりに計算するよう構成しても構わない。このように、故障する可能性に応じた情報は、故障時期に限定されない。
【0069】
また、ストレージノード120は、必ずしも優先度計算部124としての機能を有していなくても構わない。ストレージノード120が優先度計算部124としての機能を有さない場合、データ移動部125は、優先度を考慮せずにフラグメントデータの移動・複製を行うことが出来る。
【0070】
また、本実施形態において、優先度計算部124は、フラグメントデータごとの優先度を計算するとした。しかしながら、優先度計算部124は、コンポーネントごとの優先度を計算するよう構成しても構わない。例えば、優先度計算部124は、コンポーネント内に含まれるフラグメントデータの優先度に基づいて、優先度の平均値などを計算することにより、コンポーネントの優先度を計算するよう構成しても構わない。また、データ移動部125は、各コンポーネントの優先度に応じたデータの移動・複製を行うよう構成しても構わない。
【0071】
[第2の実施形態]
次に、本発明の第2の実施形態について、
図10、
図11を参照して説明する。
図10、
図11は、ストレージノード300の構成の一例を示している。
【0072】
図10は、ストレージノード300のハードウェア構成の一例を示している。
図10を参照すると、ストレージノード300は、1台又は複数台のサーバ装置にて構成されており、一例として、以下のようなハードウェア構成を有している。
・CPU(Central Processing Unit)301(演算装置)
・ROM(Read Only Memory)302(記憶装置)
・RAM(Random Access Memory)303(記憶装置)
・RAM303にロードされるプログラム群304
・プログラム群304を格納する記憶装置305
・情報処理装置外部の記録媒体310の読み書きを行うドライブ装置306
・情報処理装置外部の通信ネットワーク311と接続する通信インタフェース307
・データの入出力を行う入出力インタフェース308
・各構成要素を接続するバス309
【0073】
また、ストレージノード300は、プログラム群304をCPU301が取得して当該CPU301が実行することで、
図11に示す計算部321、移動部322としての機能を実現することが出来る。なお、プログラム群304は、例えば、予め記憶装置305やROM302に格納されており、必要に応じてCPU301がRAM303にロードして実行する。また、プログラム群304は、通信ネットワーク311を介してCPU301に供給されてもよいし、予め記録媒体310に格納されており、ドライブ装置306が該プログラムを読み出してCPU301に供給してもよい。なお、計算部321、移動部322としての機能は、電子回路などにより実現されても構わない。
【0074】
なお、
図10は、ストレージノード300であるサーバ装置のハードウェア構成の一例を示しており、サーバ装置のハードウェア構成は上述した場合に限定されない。例えば、サーバ装置は、ドライブ装置106を有さないなど、上述した構成の一部から構成されてもよい。
【0075】
ストレージノード300は、記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納する。
図11で示すように、ストレージノード300は、計算部321と、移動部322と、を有している。
【0076】
計算部321は、フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算する。
【0077】
移動部322は、計算部321が計算した結果に基づいて、フラグメントデータを他の記憶装置に移動させる。
【0078】
このように、ストレージノード300は、計算部321と移動部322とを有している。このような構成により、移動部322は、計算部321による計算の結果に基づいて、フラグメントデータを移動させることが出来る。その結果、移動部322は、例えば、故障する可能性が高いと判断される記憶装置に格納されているフラグメントデータを、記憶装置が実際に故障する前に他の記憶装置に移動・複製することが出来る。これにより、記憶装置に障害が発生した場合に性能が劣化するおそれを低減させることが出来る。
【0079】
なお、上述したストレージノード300は、当該ストレージノード300に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノード300に、フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算する計算部321と、計算部321が計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる移動部322と、を実現するためのプログラムである。
【0080】
また、上述したストレージノード300により実行される情報処理方法は、記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノード300が、フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算し、計算した結果に基づいて、フラグメントデータを他の記憶装置に移動させる、という方法である。
【0081】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記ストレージノード300と同様の作用・効果を有するために、上述した本発明の目的を達成することが出来る。
【0082】
<付記>
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明における情報処理方法などの概略を説明する。但し、本発明は、以下の構成に限定されない。
【0083】
(付記1)
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードが、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算し、
計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる
情報処理方法。
(付記2)
付記1に記載の情報処理方法であって、
計算した結果に基づいて移動が必要であると判断される記憶装置から、移動が必要でないと判断される他の記憶装置へと、前記フラグメントデータを移動させる
情報処理方法。
(付記3)
付記1または付記2に記載の情報処理方法であって、
計算した結果と、記憶装置の空き容量を示す情報と、に基づいて、移動先の記憶装置を選択する
情報処理方法。
(付記4)
付記1から付記3までのいずれか1項に記載の情報処理方法であって、
事前に定めた記憶装置への要求数を超えないように、前記フラグメントデータの移動を行う
情報処理方法。
(付記5)
付記1から付記4までのいずれか1項に記載の情報処理方法であって、
記憶装置が故障する可能性に応じた情報として、記憶装置が故障する時期を示す故障時期情報を計算する
情報処理方法。
(付記6)
付記1から付記5までのいずれか1項に記載の情報処理方法であって、
前記フラグメントデータの優先度を計算し、
計算した前記フラグメントデータの優先度に応じて、前記フラグメントデータを他の記憶装置に移動させる
情報処理方法。
(付記7)
付記6に記載の情報処理方法であって、
優先度の高い前記フラグメントデータから順番に他の記憶装置に移動させる
情報処理方法。
(付記8)
付記1から付記7までのいずれか1項に記載の情報処理方法であって、
ストレージノードは、複数の記憶装置を有するとともに、他のストレージノードと通信可能に接続されており、
ストレージノード自身が有する他の記憶装置と、他のストレージノードが有する記憶装置と、のうちのいずれかに、前記フラグメントデータを移動させる
情報処理方法。
(付記9)
付記1から付記8までのいずれか1項に記載の情報処理方法であって、
ストレージノードは、複数の他のストレージノードと通信可能に接続されることでストレージシステムを構成しており、
ストレージシステム全体の空き容量を示す容量情報を取得し、
取得した前記容量情報に基づいて、前記フラグメントデータを移動した後、移動元の前記フラグメントデータを削除するか否か判断する
情報処理方法。
(付記10)
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードであって、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算する計算部と、
前記計算部が計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる移動部と、
を有する
ストレージノード。
(付記11)
記憶対象のデータを複数に分割した分割データと記憶対象のデータを復元するための復元データとからなるフラグメントデータを、複数の記憶装置のうちのいずれかに格納するストレージノードに、
前記フラグメントデータを格納する記憶装置が故障する可能性に応じた情報を計算する計算部と、
前記計算部が計算した結果に基づいて、前記フラグメントデータを他の記憶装置に移動させる移動部と、
を実現するためのプログラム。
【0084】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【0085】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【0086】
100 ストレージシステム
110 アクセラレータノード
111 ファイルシステムサービス部
112 ブロック分割処理部
113 重複排除処理部
114 分散処理部
120 ストレージノード
121 データ保存部
122 故障時期計算部
123 故障時期同期部
124 優先度計算部
125 データ移動部
126 故障時期リスト
127 記憶装置
200 データ格納・参照装置
300 ストレージノード
301 CPU
302 ROM
303 RAM
304 プログラム群
305 記憶装置
306 ドライブ装置
307 通信インタフェース
308 入出力インタフェース
309 バス
310 記録媒体
311 通信ネットワーク
321 計算部
322 移動部