(57)【要約】  データの消失を容易に防止することができる。  属性収集手段（２）により、ストレージノード（６ａ）〜（６ｄ）の属性が収集される。グループ作成手段（４）により、属性収集手段（２）によって収集されたストレージノード（６ａ）〜（６ｄ）の属性に基づいて、ストレージノード（６ａ）〜（６ｄ）が属する少なくとも２つのグループが作成される。データ割り当て手段（５）により、グループ作成手段（４）によって作成された各グループ内において、分散データと同一の冗長分散データが存在しないように、分散データおよび冗長分散データが各グループに割り当てられる。
2008114441.tif 000002
【特許請求の範囲】
【請求項１】
データを分散した分散データおよび前記データと同一内容の冗長データを分散した冗長分散データの分散管理を行うために設けられ、それぞれネットワーク経由で接続された複数のストレージノード、を備える分散ストレージシステムの前記ストレージノードにストレージノードを管理させるためのストレージ管理プログラムにおいて、
コンピュータを、
前記ストレージノードの属性を収集する属性収集手段、
前記属性収集手段により収集された前記ストレージノードの属性に基づいて、前記ストレージノードが属する少なくとも２つのグループを作成するグループ作成手段、
前記グループ作成手段により作成された前記各グループ内において、前記分散データと同一の前記冗長分散データが存在しないように、前記分散データおよび前記冗長分散データを前記各グループに割り当てるデータ割り当て手段、
として機能させることを特徴とするストレージ管理プログラム。
【請求項２】
前記属性収集手段は、前記ストレージノードが管理する前記ストレージノードの属性を収集することを特徴とする請求の範囲第１項記載のストレージ管理プログラム。
【請求項３】
前記データ割り当て手段は、空の前記データの記憶領域の存在する前記ストレージノードに前記分散データを割り当て、
前記分散データを割り当てた前記ストレージノードが属するグループとは別のグループの空の前記データの記憶領域の存在する前記ストレージノードに、割り当てた前記分散データと同一の前記冗長分散データを割り当てることを特徴とする請求の範囲第１項記載のストレージ管理プログラム。
【請求項４】
前記データ割り当て手段は、前記ストレージノードに格納された前記分散データの位置情報と前記冗長分散データの位置情報とを記憶する管理情報に基づいて、割り当てを行うことを特徴とする請求の範囲第１項記載のストレージ管理プログラム。
【請求項５】
前記コンピュータを、さらに、全ての前記ストレージノードの前記管理情報を記憶する管理情報記憶手段、として機能させ、前記データ割り当て手段は、前記管理情報記憶手段から前記分散データの位置情報および前記冗長分散データの位置情報を取得することを特徴とする請求の範囲第４項記載のストレージ管理プログラム。
【請求項６】
前記属性収集手段は、ハートビート行う通信路を介して前記属性を収集することを特徴とする請求の範囲第１項記載のストレージ管理プログラム。
【請求項７】
データを分散した分散データおよび前記データと同一内容の冗長データを分散した冗長分散データの分散管理を行うために設けられ、それぞれネットワーク経由で接続された複数のストレージノード、を備える分散ストレージシステムの前記ストレージノードにストレージノードを管理させるためのストレージ管理方法において、
属性収集手段が、前記ストレージノードの属性を収集し、
グループ作成手段が、前記属性収集手段により収集された前記ストレージノードの属性に基づいて、前記ストレージノードが属する少なくとも２つのグループを作成し、
データ割り当て手段が、前記グループ作成手段により作成された前記各グループ内において、前記分散データと同一の前記冗長分散データが存在しないように、前記分散データおよび前記冗長分散データを前記各グループに割り当てる、
ことを特徴とするストレージ管理方法。
【請求項８】
前記属性収集手段は、前記ストレージノードが管理する前記ストレージノードの属性を収集することを特徴とする請求の範囲第７項記載のストレージ管理方法。
【請求項９】
前記データ割り当て手段は、空の前記データの記憶領域の存在する前記ストレージノードに前記分散データを割り当て、
前記分散データを割り当てた前記ストレージノードが属するグループとは別のグループの空の前記データの記憶領域の存在する前記ストレージノードに、割り当てた前記分散データと同一の前記冗長分散データを割り当てることを特徴とする請求の範囲第７項記載のストレージ管理方法。
【請求項１０】
前記データ割り当て手段は、前記ストレージノードに格納された前記分散データの位置情報と前記冗長分散データの位置情報とを記憶する管理情報に基づいて、割り当てを行うことを特徴とする請求の範囲第７項記載のストレージ管理方法。
【請求項１１】
前記コンピュータを、さらに、全ての前記ストレージノードの前記管理情報を記憶する管理情報記憶手段、として機能させ、前記データ割り当て手段は、前記管理情報記憶手段から前記分散データの位置情報および前記冗長分散データの位置情報を取得することを特徴とする請求の範囲第１０項記載のストレージ管理方法。
【請求項１２】
前記属性収集手段は、ハートビート行う通信路を介して前記属性を収集することを特徴とする請求の範囲第７項記載のストレージ管理方法。
【請求項１３】
データを分散した分散データおよび前記データと同一内容の冗長データを分散した冗長分散データの分散管理を行うために設けられ、それぞれネットワーク経由で接続された複数のストレージノード、を備える分散ストレージシステムの前記ストレージノードにストレージノードを管理させるためのストレージ管理装置において、
前記ストレージノードの属性を収集する属性収集手段と、
前記属性収集手段により収集された前記ストレージノードの属性に基づいて、前記ストレージノードが属する少なくとも２つのグループを作成するグループ作成手段と、
前記グループ作成手段により作成された前記各グループ内において、前記分散データと同一の前記冗長分散データが存在しないように、前記分散データおよび前記冗長分散データを前記各グループに割り当てるデータ割り当て手段と、
を有することを特徴とするストレージ管理装置。
【請求項１４】
前記属性収集手段は、前記ストレージノードが管理する前記ストレージ装置の属性を収集することを特徴とする請求の範囲第１３項記載のストレージ管理装置。
【請求項１５】
前記データ割り当て手段は、空の前記データの記憶領域の存在する前記ストレージノードに前記分散データを割り当て、
前記分散データを割り当てた前記ストレージノードが属するグループとは別のグループの空の前記データの記憶領域の存在する前記ストレージノードに、割り当てた前記分散データと同一の前記冗長分散データを割り当てることを特徴とする請求の範囲第１３項記載のストレージ管理装置。
【請求項１６】
前記データ割り当て手段は、前記ストレージノードに格納された前記分散データの位置情報と前記冗長分散データの位置情報とを記憶する管理情報に基づいて、割り当てを行うことを特徴とする請求の範囲第１３項記載のストレージ管理装置。
【請求項１７】
前記コンピュータを、さらに、全ての前記ストレージノードの前記管理情報を記憶する管理情報記憶手段、として機能させ、前記データ割り当て手段は、前記管理情報記憶手段から前記分散データの位置情報および前記冗長分散データの位置情報を取得することを特徴とする請求の範囲第１６項記載のストレージ管理装置。
【請求項１８】
前記属性収集手段は、ハートビート行う通信路を介して前記属性を収集することを特徴とする請求の範囲第１３項記載のストレージ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置に関し、特に、分散データおよび冗長分散データの分散管理を行う際に用いるストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置に関する。
【背景技術】
【０００２】
様々な場所で大量に発生するデータを蓄積するとともに、その運用管理を行うため、複数のストレージを備え、これらのストレージにデータを分散して（多重化して）格納するストレージシステムが用いられている。近年、利用範囲の拡大や情報量の増大が続いており、記憶容量の大容量化とともに、安定したサービスの提供や信頼性、セキュリティへの対応が求められている。そのため、データ消失確率や、障害時の性能低下の度合いに応じて、分散して障害回復処理を行うストレージシステムが知られている（例えば、特許文献１参照）。【０００３】
このようなストレージシステムの一例として、ストレージシステム自体の判断でデータの複製や移動等を行うオーガニックストレージが知られている。一般的なオーガニックストレージは、論理ボリュームを構成し、ユーザからのアクセスは、その論理ボリュームに対して行われる。論理ボリューム自体は、複数のセグメントで構成され、セグメントは２つのスライスで構成される。スライスはストレージノードが持つディスクを一定の大きさで分割したものであり、セグメントは異なるストレージノードに属するスライスで構成される。セグメントを構成するスライスはプライマリスライスとセカンダリスライスとに区別される。
【特許文献１】特開平７−２６１９４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、プライマリスライスとセカンダリスライスの割当においては個々のストレージノードの属性（使用年数、稼働時間、使用環境等）が考慮されることは少ない。例えば、ストレージノードの使用年数が異なる場合でも新旧のノードが同じように扱われ、古いストレージノード同士でデータ二重化を行ってしまう可能性もある。一般的に古いストレージノード程、故障率が上昇し、古いストレージノードでデータの二重化を行うと両方のノードが同時期に壊れることによるデータロストの可能性が高くなってしまう。【０００５】
本発明はこのような点に鑑みてなされたものであり、データの消失を容易に防止することができるストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明では上記問題を解決するために、図１に示すような処理をコンピュータに実行させるためのストレージ管理プログラムが提供される。
本発明に係るストレージ管理プログラムは、データを分散した分散データおよびデータと同一内容の冗長データを分散した冗長分散データの分散管理を行うために設けられ、それぞれネットワーク経由で接続された複数のストレージノード、を備える分散ストレージシステムのストレージノードにストレージ装置を管理させるためのプログラムである。【０００７】
このストレージ管理プログラムを実行するコンピュータ１は、以下の機能を有する。
属性収集手段２は、ストレージノード６ａ〜６ｄの属性を収集する。ストレージノードの属性には配下のストレージ装置の属性を含んでも良い。【０００８】
グループ作成手段４は、属性収集手段２により収集されたストレージノード６ａ〜６ｄの属性に基づいて、ストレージノード６ａ〜６ｄが属する少なくとも２つのグループを作成する。【０００９】
データ割り当て手段５は、グループ作成手段４により作成された各グループ内において、分散データと同一の冗長分散データが存在しないように、分散データおよび冗長分散データを各グループに割り当てる。【００１０】
このようなストレージ管理プログラムによれば、属性収集手段２により、ストレージノード６ａ〜６ｄの属性が収集される。グループ作成手段４により、属性収集手段２によって収集されたストレージノード６ａ〜６ｄの属性に基づいて、ストレージノード６ａ〜６ｄが属する少なくとも２つのグループが作成される。【００１１】
データ割り当て手段５により、グループ作成手段４によって作成された各グループ内において、分散データと同一の冗長分散データが存在しないように、分散データおよび冗長分散データが各グループに割り当てられる。
【発明の効果】
【００１２】
本発明によれば、グループ作成手段が、ストレージノードを属性によってグループ分けし、データ割り当て手段が、そのグループ間で同一の分散データおよび冗長分散データが存在しないようにデータ分けするようにしたので、同一グループのデータが複数壊れた場合においても他のグループにおいてデータを復元することができるため、データの消失を容易に防止することができる。【００１３】
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
【図面の簡単な説明】
【００１４】
【図１】本発明の概要を示す図である。
【図２】本実施の形態の分散ストレージシステム構成例を示す図である。
【図３】本実施の形態に用いるストレージノードのハードウェア構成例を示す図である。
【図４】論理ボリュームのデータ構造を示す図である。
【図５】分散ストレージシステムの各装置の機能を示すブロック図である。
【図６】コントロールノードの機能を示すブロック図である。
【図７】スライス管理情報のデータ構造例を示す図である。
【図８】スライス管理情報群記憶部のデータ構造例を示す図である。
【図９】グループがない状態で論理ボリュームを行った後にグループ分けを行った場合にグループ分けどおりのデータ配置にするための分散データの移動処理を示すフローチャートである。
【図１０】分散データの移動処理の具体例を説明する図である。
【図１１】グループに分けた後でストレージノードに論理ボリュームを新規に割り当てる様子を示す図である。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
まず、本発明の概要について説明し、その後、実施の形態を説明する。
図１は、本発明の概要を示す図である。【００１６】
分散ストレージシステムは、コンピュータ１と、ストレージノード６ａ〜６ｄと、ストレージ装置３ａ〜３ｄを有している。
コンピュータ１には、ストレージノード６ａ〜６ｄが接続されている。【００１７】
コンピュータ１は、ストレージノード６ａ〜６ｄに、ストレージ装置３ａ〜３ｄを管理させるためのコンピュータである。
ストレージノード６ａ〜６ｄは、データを分散した分散データおよびデータと同一内容の冗長データを分散した冗長分散データの分散管理を行うために設けられており、それぞれがネットワーク経由で接続されている。このストレージノード６ａ〜６ｄには、それぞれ冗長データおよび冗長分散データが格納されるストレージ装置３ａ〜３ｄが接続されている。【００１８】
コンピュータ１は、属性収集手段２と、グループ作成手段４と、データ割り当て手段５とを有している。
属性収集手段２は、ストレージノード６ａ〜６ｄの属性を収集する。この属性には、例えばそれぞれのストレージノードが管理するストレージ装置３ａ〜３ｄに関する属性も含まれる。属性としては、特に限定されないが、例えば製造年月日、稼働時分、設置環境、周囲温度等が挙げられる。【００１９】
グループ作成手段４は、属性収集手段２により収集されたストレージノード６ａ〜６ｄの属性に基づいて、ストレージノード６ａ〜６ｄが属する少なくとも２つのグループを作成する。【００２０】
データ割り当て手段５は、グループ作成手段４により作成された各グループ内において、分散データと同一の冗長分散データが存在しないように、分散データおよび冗長分散データを各グループに割り当てる。【００２１】
このようなストレージ管理プログラムによれば、属性収集手段２により、ストレージノード６ａ〜６ｄの属性が収集される。グループ作成手段４により、属性収集手段２によって収集されたストレージノード６ａ〜６ｄの属性に基づいて、ストレージノード６ａ〜６ｄが属する少なくとも２つのグループが作成される。【００２２】
データ割り当て手段５により、グループ作成手段４によって作成された各グループ内において、分散データと同一の冗長分散データが存在しないように、分散データおよび冗長分散データが各グループに割り当てられる。【００２３】
以下、本発明の実施の形態を説明する。
図２は、本実施の形態の分散ストレージシステム構成例を示す図である。本実施の形態では、ネットワーク２０を介して、複数のストレージノード１００，２００，３００，４００、コントロールノード５００、およびアクセスノード６００が接続されている。ストレージノード１００，２００，３００，４００それぞれには、ストレージ装置１１０，２１０，３１０，４１０が接続されている。【００２４】
ストレージ装置１１０には、複数のハードディスク装置（ＨＤＤ）１１１，１１２，１１３，１１４が実装されている。ストレージ装置２１０には、複数のＨＤＤ２１１，２１２，２１３，２１４が実装されている。ストレージ装置３１０には、複数のＨＤＤ３１１，３１２，３１３，３１４が実装されている。ストレージ装置４１０には、複数のＨＤＤ４１１，４１２，４１３，４１４が実装されている。ストレージ装置１１０，２１０，３１０，４１０は、内蔵するＨＤＤを用いたＲＡＩＤシステムである。本実施の形態では、ストレージ装置１１０，２１０，３１０，４１０のＲＡＩＤ５のディスク管理サービスを提供する。【００２５】
ストレージノード１００，２００，３００，４００は、例えば、ＩＡ（Intel Architecture）と呼ばれるアーキテクチャのコンピュータである。ストレージノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納された分散データを管理している。【００２６】
また、ストレージノード１００，２００，３００，４００は、冗長性を有する分散データ（冗長分散データ）を管理している。同一の分散データは、異なるストレージノードで管理されている。【００２７】
さらに、ストレージノード１００，２００，３００，４００は、二重化した分散データの整合性をチェックする二重化保全処理を行う。なお、ストレージノード１００，２００，３００，４００は個々の判断に基づいてデータ二重化保全処理を行ってもよいし、外部からの指示によりデータ二重化保全処理を行ってもよい。本実施の形態では、コントロールノード５００からの指示により二重化保全処理を行うものとする。以下、このデータ二重化保全処理をパトロールと呼ぶ。【００２８】
パトロールでは、二重化したそれぞれの分散データを保持するストレージノード同士が互いに通信し合い、冗長性のある分散データの整合性がチェックされる。その際、あるストレージノードで管理されている分散データの不具合が検出されれば、他のストレージノードの対応する分散データ（冗長分散データ）を用いてデータの復旧が行われる。【００２９】
コントロールノード５００は、ストレージノード１００，２００，３００，４００とハートビート通信を行い、ストレージノード１００，２００，３００，４００を管理する。例えば、コントロールノード５００は、所定のタイミングで、各ストレージノード１００，２００，３００，４００に対してパトロールの指示を出力する。【００３０】
アクセスノード６００には、ネットワーク２０を介して複数の端末装置２１，２２，２３が接続されている。
アクセスノード６００は、受け取ったデータを決められた単位に分割して分散データを作成し、書き込み要求をストレージノード１００，２００，３００，４００に送る。書き込み要求を受け取ったストレージノード１００，２００，３００，４００では、自身のスライス管理情報から、データ二重化を行うべき相手のストレージノード１００，２００，３００，４００を判断して、そのストレージノードに書き込み要求を送る。書き込み要求を受け取ったストレージノードは、自身に接続されたストレージ装置に分散データの書き込みをスケジューリングし、書き込み要求を送ったストレージノードに応答を返す。応答を受け取ったストレージノードは、同じように分散データの書き込みをスケジューリングし、アクセスノード６００に応答を返す。【００３１】
また、アクセスノード６００は、ストレージノード１００，２００，３００，４００それぞれが管理している分散データの格納場所を認識しており、端末装置２１，２２，２３からの要求に応答して、ストレージノード１００，２００，３００，４００へデータアクセスを行う。【００３２】
図３は、本実施の形態に用いるストレージノードのハードウェア構成例を示す図である。ストレージノード１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ＨＤＤインタフェース１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。【００３３】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。【００３４】
ＨＤＤインタフェース１０３には、ストレージ装置１１０が接続されている。ＨＤＤインタフェース１０３は、ストレージ装置１１０に内蔵されたＲＡＩＤコントローラ１１５と通信し、ストレージ装置１１０に対する分散データの入出力を行う。ストレージ装置１１０内のＲＡＩＤコントローラ１１５は、ＲＡＩＤ０〜５の機能を有し、複数のＨＤＤ１１１〜１１４をまとめて１台のハードディスクとして管理する。【００３５】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。【００３６】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。【００３７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、ストレージノード１００とストレージ装置１１０との構成のみを示したが、他のストレージノード２００，３００，４００や他のストレージ装置２１０，３１０，４１０も同様のハードウェア構成で実現できる。【００３８】
さらに、コントロールノード５００、アクセスノード６００、および端末装置２１〜２３も、ストレージノード１００とストレージ装置１１０との組合せと同様のハードウェア構成で実現できる。ただし、コントロールノード５００、アクセスノード６００、および端末装置２１〜２３については、ストレージ装置１１０のようなＲＡＩＤシステムではなく、単体のＨＤＤがＨＤＤコントローラに接続されていてもよい。【００３９】
図２に示すように、複数のストレージノード１００，２００，３００，４００がネットワーク１０に接続され、それぞれのストレージノード１００，２００，３００，４００は他のストレージノードとの間で通信を行う。この分散ストレージシステムは、端末装置２１〜２３に対して、仮想的なボリューム（以下、論理ボリュームと呼ぶ）として機能する。【００４０】
図４は、論理ボリュームのデータ構造を示す図である。
論理ボリューム７００には、「ＬＶＯＬ−Ａ」という識別子（論理ボリューム識別子）が付与されている。また、ネットワーク経由で接続された４台のストレージノード１００，２００，３００，４００には、個々のストレージノードの識別のためにそれぞれ「ＳＮ−Ａ」、「ＳＮ−Ｂ」、「ＳＮ−Ｃ」、「ＳＮ−Ｄ」というノード識別子が付与されている。【００４１】
各ストレージノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０，４１０それぞれにおいてＲＡＩＤ５の論理ディスクが構成されている。この論理ディスクは５つのスライスに分割され個々のストレージノード内で管理されている。【００４２】
図４の例では、ストレージ装置１１０内の記憶領域は、５つのスライス１２１〜１２５に分けられている。ストレージ装置２１０内の記憶領域は、５つのスライス２２１〜２２５に分けられている。ストレージ装置３１０内の記憶領域は、５つのスライス３２１〜３２５に分けられている。ストレージ装置４１０内の記憶領域は、５つのスライス４２１〜４２５に分けられている。【００４３】
なお、論理ボリューム７００は、セグメント７１０，７２０，７３０，７４０という単位で構成される。セグメント７１０，７２０，７３０，７４０の記憶容量は、ストレージ装置１１０，２１０，３１０，４１０における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が１ギガバイトとするとセグメントの記憶容量も１ギガバイトである。論理ボリューム７００の記憶容量はセグメント１つ当たりの記憶容量の整数倍である。セグメントの記憶容量が１ギガバイトならば、論理ボリューム７００の記憶容量は４ギガバイトといったものになる。【００４４】
セグメント７１０，７２０，７３０，７４０は、それぞれプライマリスライス７１１，７２１，７３１，７４１とセカンダリスライス７１２，７２２，７３２，７４２との組から構成される。同じセグメントに属するスライスは別々のストレージノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがあり、そのフラグにはプライマリあるいはセカンダリ等を表す値が格納される。【００４５】
図４の例では、スライスの識別子を、「Ｐ」または「Ｓ」のアルファベットと数字との組合せで示している。「Ｐ」はプライマリスライスであることを示している。「Ｓ」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、１番目のセグメント７１０のプライマリスライスが「Ｐ１」で示され、セカンダリスライスが「Ｓ１」で示される。【００４６】
このような構造の論理ボリューム７００の各プライマリスライスおよびセカンダリスライスが、ストレージ装置１１０，２１０，３１０，４１０内のいずれかのスライスに対応付けられる。例えば、セグメント７１０のプライマリスライス７１１は、ストレージ装置４１０のスライス４２４に対応付けられ、セカンダリスライス７１２は、ストレージ装置２１０のスライス２２２に対応付けられている。【００４７】
そして、ストレージ装置１１０，２１０，３１０，４１０では、自己のスライスに対応するプライマリスライスまたはセカンダリスライスの分散データを格納する。
図５は、分散ストレージシステムの各装置の機能を示すブロック図である。【００４８】
アクセスノード６００は、論理ボリュームアクセス制御部６１０を有している。論理ボリュームアクセス制御部６１０は、端末装置２１，２２，２３からの論理ボリューム７００内のデータを指定したアクセス要求に応じて、対応する分散データを管理するストレージノードに対してデータアクセスを行う。具体的には、論理ボリュームアクセス制御部６１０は、論理ボリューム７００の各セグメントのプライマリスライスまたはセカンダリスライスと、ストレージ装置１１０，２１０，３１０，４１０内のスライスとの対応関係を記憶している。そして、論理ボリュームアクセス制御部６１０は、端末装置２１，２２，２３からセグメント内のデータアクセスの要求を受け取ると、該当するセグメントのプライマリスライスに対応するスライスを有するストレージ装置に対してデータアクセスを行う。【００４９】
図６は、コントロールノードの機能を示すブロック図である。
コントロールノード５００は、論理ボリューム管理部５１０とスライス管理情報群記憶部５２０と、属性収集部５３０と、グループ作成部５４０とを有している。【００５０】
論理ボリューム管理部５１０は、ストレージノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０，４１０内のスライスを管理する。例えば、論理ボリューム管理部５１０は、システム起動時に、ストレージノード１００，２００，３００，４００に対してスライス管理情報取得要求を送信する。そして、論理ボリューム管理部５１０は、スライス管理情報取得要求に対して返信されたスライス管理情報を、スライス管理情報群記憶部５２０に格納する。【００５１】
また、論理ボリューム管理部５１０は、論理ボリューム７００におけるセグメントごとに、パトロールを実行するタイミングを管理する。パトロールは、所定の時間間隔で実行したり、あらかじめスケジュールされた時刻に実行したりする。また、分散ストレージシステムの負荷状況を監視し、負荷が少ない時間にパトロールを実行することもできる。論理ボリューム管理部５１０は、パトロールの実行時間になると、実行対象のセグメントのプライマリスライスを管理するストレージノードに対して、パトロール実行指示を送信する。【００５２】
さらに、論理ボリューム管理部５１０は、スライス管理情報および作成されたグループ（後述）に基づいて、分散データの移動（スライスの配置換え）を行う機能を有している。【００５３】
スライス管理情報群記憶部５２０は、ストレージノード１００，２００，３００，４００から収集されたスライス管理情報を記憶する記憶装置である。例えば、コントロールノード５００内のＲＡＭの記憶領域の一部がスライス管理情報群記憶部５２０として使用される。【００５４】
属性収集部５３０は、ストレージノード１００，２００，３００，４００それぞれの属性を収集する。属性収集部５３０は、ハートビート通信路でストレージノード１００，２００，３００，４００に属性の照会を行うことで属性を収集する。【００５５】
収集される属性としては特に限定されないが、前述したものに加え、例えばストレージノード１００，２００，３００，４００のハードウェアベンダー、ＯＳのバージョン等が挙げられる。また、ストレージ装置１１０，２１０，３１０，４１０の情報としては、例えばＳ．Ｍ．Ａ．Ｒ．Ｔ（Self-Monitoring, Analysis and Reporting Technology）で得られる情報（通電時間、セクタ再割当回数等）等が挙げられる。【００５６】
グループ作成部５４０は、属性収集部５３０が収集した属性を用いてストレージノード１００，２００，３００，４００のグループ分けを行う。このグループ分けについては後に詳述する。【００５７】
再び図５に戻って説明する。
ストレージノード１００は、データアクセス部１３０、データ管理部１４０、スライス管理情報記憶部１５０および属性管理部１６０を有している。【００５８】
データアクセス部１３０は、アクセスノード６００からの要求に応答して、ストレージ装置１１０内の分散データにアクセスする。具体的には、データアクセス部１３０は、アクセスノード６００からデータのリード要求を受け取った場合、リード要求で指定された分散データをストレージ装置１１０から取得し、アクセスノード６００に送信する。また、データアクセス部１３０は、アクセスノード６００からデータのライト要求を受け取った場合、ライト要求に含まれる分散データをデータ二重化を行うために他のストレージノードへ送り出して正常のレスポンスを受け取った後、ストレージ装置１１０内に格納する。【００５９】
データ管理部１４０は、ストレージ装置１１０内の分散データを管理する。具体的には、データ管理部１４０はコントロールノード５００からの指示に従って、ストレージ装置１１０内の分散データのパトロールを行う。パトロールを行う場合、データ管理部１４０は、チェック対象のプライマリスライスに対応するセカンダリスライスを管理する他のストレージノードに対して、チェック要求メッセージを送信する。また、データ管理部１４０は、他のストレージノードからチェック要求メッセージを受け取ると、指定されたスライス内の分散データのパトロールを行う。【００６０】
さらに、データ管理部１４０は、論理ボリューム管理部５１０からのスライス管理情報取得要求に応答して、スライス管理情報記憶部１５０に記憶されたスライス管理情報を論理ボリューム管理部５１０に対して送信する。【００６１】
スライス管理情報記憶部１５０は、スライス管理情報を記憶する記憶装置である。例えば、ＲＡＭ１０２内の記憶領域の一部がスライス管理情報記憶部１５０として使用される。なお、スライス管理情報記憶部１５０に格納されるスライス管理情報は、システム停止時にはストレージ装置１１０内に格納され、システム起動時にスライス管理情報記憶部１５０に読み込まれる。【００６２】
属性管理部１６０は、前述した属性を格納しており、属性収集部５３０から属性の照会があると、格納されている属性をハートビートに搭載する。
他のストレージノード２００，３００，４００は、ストレージノード１００と同様の機能を有している。すなわち、ストレージノード２００は、データアクセス部２３０、データ管理部２４０、スライス管理情報記憶部２５０、および属性管理部２６０を有している。ストレージノード３００は、データアクセス部３３０、データ管理部３４０、およびスライス管理情報記憶部３５０、および属性管理部３６０を有している。ストレージノード４００は、データアクセス部４３０、データ管理部４４０、スライス管理情報記憶部４５０、および属性管理部４６０を有している。ストレージノード２００，３００，４００内の各要素は、ストレージノード１００内の同名の要素と同じ機能を有している。【００６３】
図７は、スライス管理情報のデータ構造例を示す図である。
スライス管理情報記憶部１５０に格納されたスライス管理情報１５１の構成要素は、左側の要素から順に以下の通りである。
・スライス番号
・開始ブロック位置（該当スライスの先頭に当たるブロックの番号）
・ブロック数（スライス内のブロック数）
・フラグ（プライマリ／セカンダリ）
・論理ボリューム識別子
・セグメント番号
・論理ボリューム開始ブロック位置
・論理ボリューム内でのブロック数
・ペアを組むストレージノード識別子
・ペアを組むスライス番号
図７で示したスライス管理情報１５１は、図４で示した論理ボリューム７００を構成している。例えば、ノード識別子「ＳＮ−Ａ」のスライス管理情報１５１におけるスライス番号「４」のスライスは「ＬＶＯＬ−Ａ」のセグメント番号「４」のプライマリスライスであり、ペアを組んでいるのは「ＳＮ−Ｄ」のセグメント番号「１」のスライスである、ということを意味する。また、プライマリスライスにもセカンダリスライス対応づけられていないにもスライスについては、そのフラグが「Ｆ」（フリー）になっており、論理ボリューム識別子以降は、空欄になっている。【００６４】
同様のスライス管理情報が、他のストレージノード２００，３００，４００のスライス管理情報記憶部２５０，３５０，４５０にも格納されている。そして、コントロールノード５００が、システム起動時に各ストレージノード１００，２００，３００，４００からスライス管理情報を収集し、スライス管理情報群記憶部５２０に格納する。【００６５】
図８は、スライス管理情報群記憶部のデータ構造例を示す図である。
スライス管理情報群記憶部５２０には、収集したスライス管理情報１５１，２５１，３５１，４５１が格納されている。スライス管理情報１５１はストレージノード１００（ノード識別子を「ＳＮ−Ａ」とする）から取得したものである。スライス管理情報２５１はストレージノード２００（ノード識別子を「ＳＮ−Ｂ」とする）から取得したものである。スライス管理情報３５１はストレージノード３００（ノード識別子を「ＳＮ−Ｃ」とする）から取得したものである。スライス管理情報４５１はストレージノード４００（ノード識別子を「ＳＮ−Ｄ」とする）から取得したものである。【００６６】
次に、グループ作成部５４０の機能について詳しく説明する。
グループ作成部５４０は、収集した属性が離散値の場合は、以下に示す「方法１」にて２つの大グループを作成し、収集した属性が連続値の場合は、以下に示す「方法２」および「方法３」にて２つの大グループを作成する。【００６７】
＜方法１＞
グループ作成部５４０は、離散値毎にストレージノード１００，２００，３００，４００をまとめ、小グループを作成する。ここで小グループとは、３つ以上のグループをいう。【００６８】
次に、グループ作成部５４０は、小グループを組み合わせて２つの大グループを作成する。ここで、２つの大グループにしたときに、ストレージ装置数の差が最も少ない組み合わせを採用する。【００６９】
例えば、グループ分けに用いる属性をＯＳのバージョンとし、ＯＳ−Ａのストレージノードが３台、ＯＳ−Ｂのストレージノードが４台、ＯＳ−Ｃのストレージノードが１台だったときは、各バージョンをそれぞれグループとする３つの小グループを作成する。そして、３台のＯＳ−Ａのストレージノードと１台のＯＳ−Ｃのストレージノードとで１つの大グループを構成し、４台のＯＳ−Ｂのストレージノードで１つの大グループを構成する。【００７０】
＜方法２＞
グループ作成部５４０は、連続値をキーにして、ストレージノード１００，２００，３００，４００を整列させる。そして、整列させたストレージノード１００，２００，３００，４００の数が等しくなるところを境界としてグループ分けする。【００７１】
例えば、６つのストレージノードが存在し、得られた属性が経過年数である場合において、６つのストレージノードの連続値を小さい順に整列したとき、連続値が、１．０／１．１／２．０／２．０／２．１／２．３であるとする。このとき、最初の３つの属性値を備えるストレージノードで１つの大グループを構成し、残りの３つの属性値を備えるストレージノードで１つの大グループを構成する。【００７２】
＜方法３＞
グループ作成部５４０は、属性値をキーにして、ストレージノード１００，２００，３００，４００を整列させる。そして、整列させたストレージノード１００，２００，３００，４００を２つのグループに分けて、各グループの属性の分散をとり、その２つの分散の和が一番小さくなるものでグループ分けをする。ただし、１つの大グループは、２つ以上のストレージノードで構成されるものとする。【００７３】
例えば、６つのストレージノードが存在し、得られた属性が経過年数である場合において、６つのストレージノードの連続値を小さい順に整列したとき、１．０／１．１／２．０／２．０／２．１／２．３であるとする。上記のステップで分散値を計算するグループ分けと、そのときの和は、以下の通りになる。【００７４】
（１．０／１．１）＋（２．０／２．０／２．１／２．３）＝０．００５＋０．０２＝０．０２５
（１．０／１．１／２．０）＋（２．０／２．１／２．３）＝０．３０３＋０．０２３＝０．３２６
（１．０／１．１／２．０／２．０）＋（２．１／２．３）＝０．３０３＋０．０２＝０．３２３
この場合、０．０２５が一番小さな値となるため、１，２番目で構成されるストレージノードを１つの大グループとし、３，４，５，６番目のストレージノードで構成されるグループを１つの大グループとする。【００７５】
上記方法１〜方法３のようにグループ分けすることで、一方のグループを構成するストレージ装置が同時に故障するリスクを分散させることができ、安全性、信頼性を向上させることができる。【００７６】
次に、論理ボリューム管理部５１０が行う分散データの移動処理について説明する。
図９は、グループがない状態で論理ボリュームを行った後にグループ分けを行った場合にグループ分けどおりのデータ配置にするための分散データの移動処理を示すフローチャートである。【００７７】
まず、グループＡ（一方のグループ）内でのみのスライスで構成される１つのセグメントを検索する（ステップＳ１）。
セグメントを発見できなかった場合（ステップＳ２のＮｏ）、ステップＳ６に移行する。一方、セグメントを発見した場合（ステップＳ２のＹｅｓ）、グループＢ（他方のグループ）から１つの空スライスを検索する（ステップＳ３）。【００７８】
空スライスを発見できなかった場合（ステップＳ４のＮｏ）、ステップＳ６に移行する。一方、空スライスを発見した場合（ステップＳ４のＹｅｓ）、移動処理を行う（ステップＳ５）。具体的には、グループＢで発見した空スライスに、グループＡで発見したセグメントを構成するスライスから分散データをコピーする。そして、コピー元となったグループＡのスライスを破棄し、コピー先となったグループＢのスライスを、セグメントを構成するスライスとする。【００７９】
次に、グループＢ内でのみのスライスで構成される１つのセグメントを検索する（ステップＳ６）。
セグメントを発見できなかった場合（ステップＳ７のＮｏ）、ステップＳ１１に移行する。一方、セグメントを発見した場合（ステップＳ７のＹｅｓ）、グループＢから１つの空スライスを検索する（ステップＳ８）。【００８０】
空スライスを発見できなかった場合（ステップＳ９のＮｏ）、ステップＳ１１に移行する。一方、空スライスを発見した場合（ステップＳ９のＹｅｓ）、移動処理を行う（ステップＳ１０）。具体的には、グループＡで発見した空スライスに、グループＢで発見したセグメントを構成するスライスから分散データをコピーする。そして、コピー元となったグループＢのスライスを破棄し、コピー先となったグループＡのスライスを、セグメントを構成するスライスとする。【００８１】
次に、データコピーが行われ（ステップＳ５またはステップＳ１０にて述べた処理のうち少なくともいずれか一方が実行され）たかどうかを判断する（ステップＳ１１）。
データコピーが行われていれば（ステップＳ１１のＹｅｓ）、さらに別のデータ移動が行えるかどうかを調べるため、ステップＳ１に移行し、上述の動作を継続して行う。【００８２】
一方、データコピーが行われていなければ（ステップＳ１１のＮｏ）、グループ内に両方のスライスがあるセグメントが無くなったかデータ移動が行えなくなったと判断して、処理を終了する。【００８３】
このように、分散データの移動処理では、一度に１つの分散データを移動する。移動対象の分散データが複数存在する場合には、この処理が複数回繰り返される。
なお、分散データの移動処理の結果は、各ストレージノード１００，２００，３００，４００のデータ管理部１４０とアクセスノード６００の論理ボリュームアクセス制御部６１０とに通知される。【００８４】
次に、分散データの移動処理について具体例を用いて説明する。
図１０は、分散データの移動処理の具体例を説明する図である。
図１０（ａ）に示す例では、まず、スライス２２４のプライマリスライスＰ４の分散データをスライス４２３に移動し、スライス４２３をプライマリスライスＰ４とする。【００８５】
次に、スライス４２５のプライマリスライスＰ２の分散データをスライス２２４に移動し、スライス２２４をプライマリスライスＰ２とする。
次に、スライス１２５のプライマリスライスＰ６の分散データをスライス４２５に移動し、スライス４２５をプライマリスライスＰ６とする。これにより、図１０（ｂ）に示すように、グループＡおよびグループＢそれぞれにおいて、分散データと冗長分散データとが同一グループ内に存在しないように、分散データおよび冗長分散データとが割り当てられる。【００８６】
次に、分散ストレージシステムの初期設定の例として、ストレージ装置１１０，２１０，３１０，４１０の代わりに、データが格納されていないストレージ装置１１１０，１２１０，１３１０，１４１０をストレージノード１００〜４００に接続してシステムの運用を行う場合について説明する。【００８７】
この場合についてもまず、グループ分けを行う。グループ分けについては前述した方法と同様にして行うことができるため、以下、論理ボリューム管理部５１０の論理ボリュームの新規割当方法について説明する。【００８８】
図１１は、グループに分けた後でストレージノードに論理ボリュームを新規に割り当てる様子を示す図である。
図１１では、グループＣ、Ｄの２つのグループが作成されている。ストレージノードは省略するが、グループＣはストレージ装置１１１０，１２１０で構成されており、グループＤはストレージ装置１３１０，１４１０で構成されている。【００８９】
ストレージ装置１１１０，１２１０，１３１０，１４１０を配下に置くストレージノードには、個々のストレージノードの識別のためにそれぞれ「ＳＮ−Ｅ」、「ＳＮ−Ｆ」、「ＳＮ−Ｇ」、「ＳＮ−Ｈ」というノード識別子が付与されている。【００９０】
まず、論理ボリューム管理部５１０は、用意されたプライマリスライスＰ１１〜Ｐ１６をグループに関係なく、空スライスのあるストレージ装置１１１０〜１４１０に割り当てる。【００９１】
図１１（ａ）では、ストレージ装置１１１０のスライス１１２１、１１２３にそれぞれプライマリスライスＰ１１、Ｐ１５を割り当て、ストレージ装置１２１０のスライス１２２３にプライマリスライスＰ１２を割り当て、ストレージ装置１３１０のスライス１３２３にプライマリスライスＰ１３を割り当て、ストレージ装置１４１０のスライス１４２３、１４２５それぞれにプライマリスライスＰ１４、Ｐ１６を割り当てている。【００９２】
そして、プライマリスライスが属するグループとは別のグループのストレージ装置の空スライスにセカンダリスライスを割り当てる。
グループＣには、プライマリスライスＰ１１、Ｐ１２、Ｐ１５が割り当てられているため、グループＤにセカンダリスライスＳ１１、Ｓ１２、Ｓ１５を割り当てる。図１１（ｂ）では、ストレージ装置１３１０のスライス１３２２、１３２５にそれぞれセカンダリスライスＳ１１、Ｓ１２を割り当て、ストレージ装置１４１０のスライス１４２１にセカンダリスライスＳ１５を割り当てる。一方、グループＤには、プライマリスライスＰ１３、Ｐ１４、Ｐ１６が割り当てられているため、グループＣにセカンダリスライスＳ１３，Ｓ１４，Ｓ１６を割り当てる。図１１（ｂ）では、ストレージ装置１１１０のスライス１１２４にセカンダリスライスＳ１４を割り当て、ストレージ装置１２１０のスライス１２２２、１２２４にそれぞれセカンダリスライスＳ１３、Ｓ１６を割り当てる。【００９３】
また、上述した方法の他に、コントロールノード５００は、プライマリスライスＰ１１〜Ｐ１６をグループＣのストレージ装置１１１０、１２１０のみに割り当て、セカンダリスライスＳ１１〜Ｓ１６をグループＤのストレージ装置１３１０、１４１０のみに割り当てるようにしてもよい。【００９４】
このようにグループ分けすることで、一方のグループを構成するストレージ装置が同時に故障した場合においても、他方のグループを構成するストレージ装置からデータを取り出すことができるため、安全性、信頼性を向上させることができる。【００９５】
以上述べたように、本実施の形態の分散ストレージシステムによれば、論理ボリューム管理部５１０が、ストレージ装置１１０〜４１０を属性によって２つにグループ分けし、そのグループ間でセグメントを構成するようにしたので、同じグループのストレージ装置が全て壊れても、データの消滅を容易に防止することができる。【００９６】
また、システム（ストレージノード）の運用中にグループ分けの解除、再構成も容易である。
また、システム（ストレージノード）の運用中に新たなストレージ装置が加わった場合も容易にグループを再構成することができる。【００９７】
以上、本発明のストレージ管理プログラム、ストレージ管理方法およびストレージ管理装置を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。【００９８】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
また、本発明は、グループが運用される前に運用されていた（グループの概念を有していない）システムにおいても容易に適用することができる。【００９９】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コントロールノード５００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等が挙げられる。磁気記録装置としては、例えば、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープ等が挙げられる。光ディスクとしては、例えば、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。光磁気記録媒体としては、例えば、ＭＯ（Magneto-Optical disk）等が挙げられる。【０１００】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。【０１０１】
ストレージ管理プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。【０１０２】
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【符号の説明】
【０１０３】
１  コンピュータ
２  属性収集手段
３ａ〜３ｄ，１１０，２１０，３１０，４１０，１１１０，１２１０，１３１０，１４１０  ストレージ装置
４  グループ作成手段
５  データ割り当て手段
６ａ〜６ｄ，１００，２００，３００，４００  ストレージノード
２１，２２，２３  端末装置
１３０，２３０，３３０，４３０  データアクセス部
１４０，２４０，３４０，４４０  データ管理部
１５０，２５０，３５０，４５０  スライス管理情報記憶部
１５１，２５１，３５１，４５１  スライス管理情報
１６０，２６０，３６０，４６０  属性管理部
５００  コントロールノード
５１０  論理ボリューム管理部
５２０  スライス管理情報群記憶部
５３０  属性収集部
５４０  グループ作成部
６００  アクセスノード
６１０  論理ボリュームアクセス制御部
７００  論理ボリューム
７１０，７２０，７３０，７４０  セグメント
７１１，７２１，７３１，７４１  プライマリスライス
７１２，７２２，７３２，７４２  セカンダリスライス
【図１】
2008114441.tif 000003
【図２】
2008114441.tif 000004
【図３】
2008114441.tif 000005
【図４】
2008114441.tif 000006
【図５】
2008114441.tif 000007
【図６】
2008114441.tif 000008
【図７】
2008114441.tif 000009
【図８】
2008114441.tif 000010
【図９】
2008114441.tif 000011
【図１０】
2008114441.tif 000012
【図１１】
2008114441.tif 000013
【国際調査報告】
2008114441.tif 000014
2008114441.tif 000015