(57)【特許請求の範囲】
【請求項１】
コンピュータに、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムの管理処理を実行させるストレージ管理プログラムにおいて、
前記コンピュータを、
前記同一内容の複数のデータから、リード要求時に読み込み先として使用されると共にライト要求を受けて更新される主データと前記ライト要求を受けて更新される副データとを指定し、前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段、
前記複数のストレージノードを少なくとも２つのグループに分割し、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一グループに属さないようにデータの配置先を割り当てるデータ割当手段、
前記データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられているデータのうち前記主データに指定されているデータに対する指定を前記副データに変更すると共に、当該データと同一内容のデータであって前記副データに指定されているデータに対する指定を前記主データに変更する運用モード切換手段、
前記省電力モードへの切換後、前記停止対象のグループに属するストレージノードに割り当てられているデータを対象とした前記ライト要求があると、書き込み内容を所定のデータ記憶手段に記憶しておき、前記データ記憶手段に記憶された前記書き込み内容の量が所定の閾値を超えると、前記停止対象のグループに属するストレージノードを一時的に稼働させて、前記データ記憶手段に記憶された前記書き込み内容を当該ストレージノードの前記副データに指定されたデータに反映させる冗長化管理手段、
として機能させることを特徴とするストレージ管理プログラム。
【請求項２】
前記運用モード切換手段は、前記省電力モードからの復帰命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記省電力モードへの切換時に行った前記主データと前記副データとの間の指定の変更を戻すことを特徴とする請求項１記載のストレージ管理プログラム。
【請求項３】
同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムを管理するストレージ管理装置において、
前記同一内容の複数のデータから、リード要求時に読み込み先として使用されると共にライト要求を受けて更新される主データと前記ライト要求を受けて更新される副データとを指定し、前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段と、
前記複数のストレージノードを少なくとも２つのグループに分割し、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一グループに属さないようにデータの配置先を割り当てるデータ割当手段と、
前記データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられているデータのうち前記主データに指定されているデータに対する指定を前記副データに変更すると共に、当該データと同一内容のデータであって前記副データに指定されているデータに対する指定を前記主データに変更する運用モード切換手段と、
前記省電力モードへの切換後、前記停止対象のグループに属するストレージノードに割り当てられているデータを対象とした前記ライト要求があると、書き込み内容を所定のデータ記憶手段に記憶しておき、前記データ記憶手段に記憶された前記書き込み内容の量が所定の閾値を超えると、前記停止対象のグループに属するストレージノードを一時的に稼働させて、前記データ記憶手段に記憶された前記書き込み内容を当該ストレージノードの前記副データに指定されたデータに反映させる冗長化管理手段と、
を有することを特徴とするストレージ管理装置。
【請求項４】
同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムを管理するストレージ管理方法において、
前記複数のストレージノードと前記ネットワークで接続されたストレージ管理装置のデータ割当手段が、前記複数のストレージノードを少なくとも２つのグループに分割し、前記同一内容の複数のデータからリード要求時に読み込み先として使用されると共にライト要求を受けて更新される主データと前記ライト要求を受けて更新される副データとを指定し前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した、前記ストレージ管理装置の管理情報記憶手段に記憶された管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一グループに属さないようにデータの配置先を割り当て、
前記ストレージ管理装置の運用モード切換手段が、前記データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられているデータのうち前記主データに指定されているデータに対する指定を前記副データに変更すると共に、当該データと同一内容のデータであって前記副データに指定されているデータに対する指定を前記主データに変更し、
前記ストレージ管理装置の冗長化管理手段が、前記省電力モードへの切換後、前記停止対象のグループに属するストレージノードに割り当てられているデータを対象とした前記ライト要求があると、書き込み内容を前記ストレージ管理装置または前記ネットワークに接続された他の装置の所定のデータ記憶手段に記憶しておき、前記データ記憶手段に記憶された前記書き込み内容の量が所定の閾値を超えると、前記停止対象のグループに属するストレージノードを一時的に稼働させて、前記データ記憶手段に記憶された前記書き込み内容を当該ストレージノードの前記副データに指定されたデータに反映させる、
ことを特徴とするストレージ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストレージシステムを管理するストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法に関し、特に複数のストレージノードに分散してデータを配置する分散ストレージシステムを管理するストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法に関する。
【背景技術】
【０００２】
現在、コンピュータを用いたデータ処理が広く行われるようになり、データを蓄積・利用するためのストレージ技術が一層重要となっている。この点、データアクセスの高速化およびデータ保管に対する高信頼化を実現するストレージ技術として、従来はＲＡＩＤ（Redundant Arrays of Independent Disks）が一般的に利用されてきた。ＲＡＩＤでは、データを必要に応じて分割・複製して、複数のディスク装置に分散して配置する。これにより、複数のディスク装置間で負荷が分散されることによる高速化、データが冗長化されることによる高信頼化が実現されている。
【０００３】
そして近年では、更に高速化・高信頼化を図るため、ＲＡＩＤの考え方を応用した分散ストレージシステムが構築されるようになっている。分散ストレージシステムは、複数のストレージノードと、ストレージノード間を接続するネットワークを備えている。各ストレージノードは、内部でディスク装置を管理していると共に、ネットワーク通信機能を備えている。複数のストレージノードにデータを分散して配置することで、システム全体として一層の高速化・高信頼化が実現される。
【０００４】
ここで、分散ストレージシステムにおいてデータが冗長化されている場合、すなわち、同一内容のデータが複数のストレージノードに配置されている場合を考える。このとき、データの書き込み要求に対しては、データの一貫性を維持するため、同一内容の全てのデータを更新する必要がある。一方、データの読み出し要求に対しては、以下の２つの制御方法が考えられる。第１の方法は、ストレージノードの負荷などに基づいて、読み出し要求時に動的に読み出し先を決定する方法である。第２の方法は、予め運用データとバックアップデータとの役割を決めておき、通常運用時は運用データを読み出し先とする方法である。一般的には、制御方法が簡潔であり、データアクセスを高速化しやすいことから、後者の制御方法が採用されることが多い。
【０００５】
ところで、分散ストレージシステムでは、多数のストレージノードに対して電力を供給することが必要となり、消費電力が大きくなるという問題がある。これに対し、運用データとバックアップデータとにデータが冗長化されている場合について、以下の省電力化の方法が知られている。すなわち、複数のストレージノードを運用データのみを保持する現用系とバックアップデータのみを保持する待機系とに分けておき、通常運用時は待機系への電力の供給を停止して現用系のみでシステムを稼働させ、運用データへの書き込みをバックアップデータに反映させるときのみ待機系へ電力を供給する方法が知られている（例えば、特許文献１参照）。また、データの読み出し時に待機系を完全に停止させておくのではなく、運用データの読み読み出しが失敗する場合を考慮して、運用データの読み出しが終わる前の所定時間だけ待機系へも電力を供給する方法も知られている（例えば、特許文献２参照）。
【特許文献１】特開２００４−３２６２４４号公報
【特許文献２】特開平０３−２２６８２１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１，２に記載の省電力化技術では、データの読み出しが正常に行われる限り待機系のストレージノードは使用されないため、ハードウェアの処理能力を有効に利用できていないという問題がある。すなわち、負荷分散という観点からは、ストレージノードを現用系と待機系とに分けておくのではなく、運用データを全てのストレージノードに分散させて配置し、高負荷時には全てのストレージノードを利用して処理を行えるようにすることが望ましい。一方で、運用データを全てのストレージノードに分散させてしまうと、バックアップデータのみを保持するストレージノードが存在しないことになり、低負荷時であっても一部のストレージノードを停止させて省電力化を図ることが困難になるという問題が生じる。
【０００７】
本発明はこのような点に鑑みてなされたものであり、データが冗長化されて管理されている分散ストレージシステムにおいて、高負荷時には全てのストレージノードを用いて負荷分散を行い、低負荷時には一部のストレージノードを停止させて省電力化を図ることが可能なストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明では、上記課題を解決するために、図１に示すような処理をコンピュータに実行させるためのストレージ管理プログラムが提供される。このストレージ管理プログラムは、リード要求時の読み込み先に使用されると共にライト要求を受けて更新される主データとライト要求を受けて更新される副データとを、ネットワークで接続された複数のストレージノード２，３，４，５に分散して配置する分散ストレージシステムを管理するためのプログラムである。このストレージ管理プログラムを実行するコンピュータ１は、管理情報記憶手段１ａ、データ割当手段１ｂおよび運用モード切換手段１ｃを有する。管理情報記憶手段１ａは、主データおよび副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する。データ割当手段１ｂは、ストレージノード２，３，４，５を少なくとも２つのグループに分割し、管理情報記憶手段１ａに記憶された管理情報を操作して、主データの配置先とその主データに対応する副データの配置先とが同一グループに属さないようにデータの配置先を割り当てる。運用モード切換手段１ｃは、データ割当手段１ｂにて定義されたグループの１つを停止させる省電力モードへの切換命令があると、管理情報記憶手段１ａに記憶された管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられているデータのうち主データに指定されているデータに対する指定を副データに変更すると共に、当該データと同一内容のデータであって副データに指定されているデータに対する指定を主データに変更する。更に、ストレージ管理プログラムを実行するコンピュータ１は、省電力モードへの切換後、停止対象のグループに属するストレージノードに割り当てられているデータを対象としたライト要求があると、書き込み内容を所定のデータ記憶手段に記憶しておき、データ記憶手段に記憶された書き込み内容の量が所定の閾値を超えると、停止対象のグループに属するストレージノードを一時的に稼働させて、データ記憶手段に記憶された書き込み内容を当該ストレージノードの副データに指定されたデータに反映させる冗長化管理手段を有する。
【０００９】
このようなストレージ管理プログラムを実行するコンピュータ１によれば、データ割当手段１ｂにより、ストレージノード２，３，４，５が少なくとも２つのグループに分割され、主データの配置先とその主データに対応する副データの配置先とが同一グループに属さないようにデータの配置先が割り当てられる。ここで、グループの１つを停止させる省電力モードへの切換命令があると、運用モード切換手段１ｃにより、停止対象のグループに属するストレージノードに割り当てられている主データの指定が副データに変更されると共にその主データと同一内容の副データの指定が主データに変更される。この結果、停止対象のグループに属するストレージノードには、主データが配置されていない状態となる。また、冗長化管理手段により、省電力モードへの切換後、ライト要求があると、書き込み内容が所定のデータ記憶手段に記憶され、書き込み内容の量が所定の閾値を超えると、停止対象のグループに属するストレージノードが一時的に稼働して書き込み内容が反映される。
【００１０】
また、上記課題を解決するために、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムを管理するストレージ管理装置において、同一内容の複数のデータから、リード要求時に読み込み先として使用されると共にライト要求を受けて更新される主データとライト要求を受けて更新される副データとを指定し、主データおよび副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段と、複数のストレージノードを少なくとも２つのグループに分割し、管理情報記憶手段に記憶された管理情報を操作して、主データの配置先と当該主データと同一内容の副データの配置先とが同一グループに属さないようにデータの配置先を割り当てるデータ割当手段と、データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、管理情報記憶手段に記憶された管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられているデータのうち主データに指定されているデータに対する指定を副データに変更すると共に、当該データと同一内容のデータであって副データに指定されているデータに対する指定を主データに変更する運用モード切換手段と、省電力モードへの切換後、停止対象のグループに属するストレージノードに割り当てられているデータを対象としたライト要求があると、書き込み内容を所定のデータ記憶手段に記憶しておき、データ記憶手段に記憶された書き込み内容の量が所定の閾値を超えると、停止対象のグループに属するストレージノードを一時的に稼働させて、データ記憶手段に記憶された書き込み内容を当該ストレージノードの副データに指定されたデータに反映させる冗長化管理手段と、を有することを特徴とするストレージ管理装置が提供される。
【００１１】
このようなストレージ管理装置によれば、データ割当手段により、ストレージノードが少なくとも２つのグループに分割され、主データの配置先とその主データに対応する副データの配置先とが同一グループに属さないようにデータの配置先が割り当てられる。ここで、グループの１つを停止させる省電力モードへの切換命令があると、運用モード切換手段により、停止対象のグループに属するストレージノードに割り当てられている主データの指定が副データに変更されると共にその主データと同一内容の副データの指定が主データに変更される。この結果、停止対象のグループに属するストレージノードには、主データが配置されていない状態となる。また、冗長化管理手段により、省電力モードへの切換後、ライト要求があると、書き込み内容が所定のデータ記憶手段に記憶され、書き込み内容の量が所定の閾値を超えると、停止対象のグループに属するストレージノードが一時的に稼働して書き込み内容が反映される。
【００１２】
また、上記課題を解決するために、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムを管理するストレージ管理方法において、複数のストレージノードとネットワークで接続されたストレージ管理装置のデータ割当手段が、複数のストレージノードを少なくとも２つのグループに分割し、同一内容の複数のデータからリード要求時に読み込み先として使用されると共にライト要求を受けて更新される主データとライト要求を受けて更新される副データとを指定し主データおよび副データそれぞれの配置先のストレージノードを定義した、ストレージ管理装置の管理情報記憶手段に記憶された管理情報を操作して、主データの配置先と当該主データと同一内容の副データの配置先とが同一グループに属さないようにデータの配置先を割り当て、ストレージ管理装置の運用モード切換手段が、データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、管理情報記憶手段に記憶された管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられているデータのうち主データに指定されているデータに対する指定を副データに変更すると共に、当該データと同一内容のデータであって副データに指定されているデータに対する指定を主データに変更し、ストレージ管理装置の冗長化管理手段が、省電力モードへの切換後、停止対象のグループに属するストレージノードに割り当てられているデータを対象としたライト要求があると、書き込み内容をストレージ管理装置またはネットワークに接続された他の装置の所定のデータ記憶手段に記憶しておき、データ記憶手段に記憶された書き込み内容の量が所定の閾値を超えると、停止対象のグループに属するストレージノードを一時的に稼働させて、データ記憶手段に記憶された書き込み内容を当該ストレージノードの副データに指定されたデータに反映させる、ことを特徴とするストレージ管理方法が提供される。
【００１３】
このようなストレージ管理方法によれば、ストレージノードが少なくとも２つのグループに分割され、主データの配置先とその主データに対応する副データの配置先とが同一グループに属さないようにデータの配置先が割り当てられる。その後、グループの１つを停止させる省電力モードへの切換命令があると、停止対象のグループに属するストレージノードに割り当てられている主データの指定が副データに変更されると共にその主データと同一内容の副データの指定が主データに変更される。この結果、停止対象のグループに属するストレージノードには、主データが配置されていない状態となる。また、省電力モードへの切換後、ライト要求があると、書き込み内容が所定のデータ記憶手段に記憶され、書き込み内容の量が所定の閾値を超えると、停止対象のグループに属するストレージノードが一時的に稼働して書き込み内容が反映される。
【発明の効果】
【００１４】
本発明では、省電力モードへの切換命令があると、データの配置状況を管理する管理情報を操作して、停止対象のグループのストレージノードに割り当てられている主データの指定を副データに変更すると共に他のグループのストレージノードに割り当てられている副データの指定を主データに変更することとした。
【００１５】
これにより、停止対象のグループに属するストレージノードは主データが配置されていない状態となり、データアクセスを阻害することなく停止させることが可能となる。また、省電力モードへの切換時には管理情報を操作するだけでよく、データ自体の移動は必要としないため、迅速なモード切換が可能となる。従って、高負荷時には全てのストレージノードを用いて負荷分散を行い、低負荷時には一部のストレージノードを停止させて省電力化を図ることが、容易に実現できる。また、省電力モード中には、書き込み内容を保持しておき、その後にストレージノードを一時的に稼働させて書き込み内容を反映させるため、省電力モード中のデータの冗長性が維持される。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態を図面を参照して説明する。まず、本実施の形態の概要について説明し、その後、本実施の形態の具体的な内容を説明する。
図１は、本実施の形態の概要を示す図である。図１に示す分散ストレージシステムは、同一内容の複数のデータを、ストレージノード２，３，４，５に分散させて管理するストレージシステムである。この分散ストレージシステムは、コンピュータ１およびストレージノード２，３，４，５から構成される。
【００１７】
コンピュータ１は、ストレージノード２，３，４，５におけるデータの配置状況を管理するコンピュータである。コンピュータ１は、管理情報記憶手段１ａ、データ割当手段１ｂ、運用モード切換手段１ｃおよび電源制御手段１ｄを有する。これらの手段は、例えば、コンピュータ１に所定のストレージ管理プログラムを実行させることで実現される。
【００１８】
管理情報記憶手段１ａには、データの配置状況を管理する管理情報が格納される。管理情報では、同一内容の複数のデータのうち、主データおよび副データそれぞれの配置先のストレージノードが指定されている。主データはデータへのアクセス要求時にアクセス先として使用するものであり、副データはバックアップとして使用するものである。
【００１９】
データ割当手段１ｂは、ストレージノード２，３，４，５にデータを割り当てる際に、ストレージノード２，３，４，５を少なくとも２つのグループに分割する。そして、データ割当手段１ｂは、主データの配置先とそれに対応する副データの配置先とが同一グループに属さないように各データの配置先を割り当てる。その後、データ割当手段１ｂは、割り当て結果に基づいて、管理情報記憶手段１ａに格納された管理情報を更新する。以降、管理情報記憶手段１ａに格納された管理情報に基づいて、データの書き込みや読み出しが行われることになる。
【００２０】
運用モード切換手段１ｃは、省電力モードへの切換命令があると、管理情報記憶手段１ａに格納された管理情報を操作して、省電力モードへ切り換えるために必要な準備を行う。省電力モードとは、ストレージノード２，３，４，５の一部を停止させた状態の運用モードである。
【００２１】
具体的には、まず運用モード切換手段１ｃは、データ割当手段１ｂで定義されたグループのうち、停止対象とするグループを特定する。そして、運用モード切換手段１ｃは、管理情報記憶手段１ａに格納された管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられている主データの役割を副データに変換する。これと同時に、運用モード切換手段１ｃは、変換前の主データに対応する副データ（停止対象のグループ以外のグループに属するストレージノードに割り当てられている）の役割を主データに変換する。
【００２２】
電源制御手段１ｄは、停止対象のグループに属するストレージノード、すなわち、運用モード切換手段１ｃの処理により副データのみが割り当てられている状態となったストレージノードに対して、電源ＯＦＦの通知を行う。これにより、通知先のストレージノードが停止し、分散ストレージシステムが省電力モードに切り換わる。このとき、全ての主データは稼働中のストレージノードに割り当てられているため、データアクセスは阻害されない。
【００２３】
ここで、省電力モードへの切換命令の発行方法としては、種々の方法が考えられる。例えば、分散ストレージシステムの管理者がコンピュータ１または管理者用端末を操作して、手動で切換命令を発行する方法が考えられる。また、管理者が切換命令の発行時刻をコンピュータ１または管理者用端末に設定しておき、その発行時刻になると自動的に切換命令が発行されるようにする方法も考えられる。また、コンピュータ１または管理者用端末にストレージノード２，３，４，５の負荷を継続的に監視する手段を設け、負荷が所定の閾値を下回ると、自動的に切換命令が発行されるようにする方法も考えられる。
【００２４】
また、省電力モードへの切換時に停止対象とするグループを選択する方法も、種々の方法が考えられる。例えば、管理者がその都度停止対象のグループを明示的に選択するようにする方法が考えられる。また、複数のグループの中からランダムに１つグループを選択して、停止対象のグループを決める方法も考えられる。また、停止対象のグループを予め固定的に決めておく方法も考えられる。また、ラウンドロビン方式により、前回と異なるグループを順次選択していく方法も考えられる。この方法では、グループ間でストレージノードの稼働時間が不均等になることを防ぎ、特定のストレージノードの性能劣化が他のストレージノードよりも早く進行することを防止できる。
【００２５】
ここで、図１に示した例について説明する。ここでは、データ＃１，＃２，＃３，＃４が、主データおよび副データとして冗長化されて、ストレージノード２，３，４，５に分散されて配置されている。具体的には、データ割当手段１ｂによって、データ＃１の主データがストレージノード２（図１では“Ａ”と表記）に、副データがストレージノード４（図１では“Ｃ”と表記）に配置され、データ＃２の主データがストレージノード４に、副データがストレージノード２に配置され、データ＃３の主データがストレージノード３（図１では“Ｂ”と表記）に、副データがストレージノード５（図１では“Ｄ”と表記）に配置され、データ＃４の主データがストレージノード５に、副データがストレージノード３に配置されている。
【００２６】
また、データ割当手段１ｂにより、ストレージノード２，３，４，５が、グループ１，２の２つのグループに分割されている。具体的には、ストレージノード２，３がグループ１を構成し、ストレージノード４，５がグループ２を構成している。
【００２７】
このとき、グループ２を停止対象とする省電力モードへの切換命令があると、運用モード切換手段１ｃにより、管理情報記憶手段１ａに記憶された管理情報が操作されて、データ＃２，＃４の配置状況が変更される。すなわち、ストレージノード２に配置されたデータ＃２の副データが主データに、ストレージノード４に配置されたデータ＃２の主データが副データに変換される。また、ストレージノード３に配置されたデータ＃４の副データが主データに、ストレージノード５に配置されたデータ＃４の主データが副データに変換される。
【００２８】
この結果、ストレージノード２にはデータ＃１，＃２の主データが配置され、ストレージノード３にはデータ＃３，４の主データが配置され、ストレージノード４にはデータ＃１，＃２の副データが配置され、ストレージノード５にはデータ＃３，４の副データが配置された状態となる。従って、グループ２に属するストレージノード４，５に対しては、データへのアクセス要求が発生しなくなる。その後、電源制御手段１ｄにより、ストレージノード４，５を停止させ、分散ストレージシステムが省電力モードに切り換わる。
【００２９】
なお、上記ではコンピュータ１をストレージノード２，３，４，５と別個の装置として説明したが、コンピュータ１が備える機能をストレージノード２，３，４，５のいずれかが備えるようにしてもよい。
【００３０】
このようなコンピュータ１によれば、データ割当手段１ｂにより、ストレージノード２，３，４，５が少なくとも２つのグループに分割され、主データの配置先とその主データに対応する副データの配置先とが同一グループに属さないようにデータの配置先が割り当てられる。ここで、グループの１つを停止させる省電力モードへの切換命令があると、運用モード切換手段１ｃにより、停止対象のグループに属するストレージノードに割り当てられている主データとその主データと同一内容の副データとの役割が交換される。この結果、停止対象のグループに属するストレージノードには、主データが配置されていない状態となる。
【００３１】
これによって、データアクセス時のアクセス先が、一方のグループに属するストレージノードのみとなり、電源制御手段１ｄによりアクセス先として使用されていないグループに属するストレージノードを停止させることが可能となる。従って、高負荷時には全てのストレージノード２，３，４，５を用いて負荷分散を行い、低負荷時には一部のストレージノードを停止させて省電力化を図ることができる。
【００３２】
以下、本実施の形態を図面を参照して詳細に説明する。
図２は、本実施の形態のシステム構成を示す図である。図２に示す分散ストレージシステムは、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置することで、信頼性と処理性能とを向上させたストレージシステムである。
【００３３】
本実施の形態に係る分散ストレージシステムでは、ストレージノード１００，２００，３００，４００、コントロールノード５００、アクセスノード６００および管理ノード３０がネットワーク１０を介して相互に接続されている。また、端末装置２１，２２，２３が、ネットワーク２０を介してアクセスノード６００に接続されている。
【００３４】
ストレージノード１００，２００，３００，４００には、それぞれストレージ装置１１０，２１０，３１０，４１０が接続されている。ストレージノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由でアクセスノード６００に提供する。また、ストレージノード１００，２００，３００，４００は、データに冗長性をもたせて管理している。すなわち、同一内容のデータが、少なくとも２つのストレージノードで管理されている。
【００３５】
ストレージ装置１１０には、ハードディスク装置（ＨＤＤ）１１１，１１２，１１３，１１４が実装されている。ストレージ装置２１０には、ＨＤＤ２１１，２１２，２１３，２１４が実装されている。ストレージ装置３１０には、ＨＤＤ３１１，３１２，３１３，３１４が実装されている。ストレージ装置４１０には、ＨＤＤ４１１，４１２，４１３，４１４が実装されている。ストレージ装置１１０，２１０，３１０，４１０は、内蔵する複数のＨＤＤを用いたＲＡＩＤシステムである。本実施の形態では、ストレージ装置１１０，２１０，３１０，４１０は、ＲＡＩＤ５のディスク管理サービスを提供する。
【００３６】
コントロールノード５００は、ストレージノード１００，２００，３００，４００を管理する。具体的には、コントロールノード５００は、データの配置状況を示す論理ボリュームを保持している。コントロールノード５００は、ストレージノード１００，２００，３００，４００からデータの管理に関する情報を取得し、必要に応じて論理ボリュームを更新する。また、コントロールノード５００は、論理ボリュームが更新されると、その影響を受けるストレージノードに対して更新内容を通知する。論理ボリュームに関しては、後で詳細に説明する。
【００３７】
アクセスノード６００は、端末装置２１，２２，２３に対して、ストレージノード１００，２００，３００，４００が管理するデータを利用した情報処理のサービスを提供する。すなわち、アクセスノード６００は、端末装置２１，２２，２３からの要求に応答して所定のプログラムを実行し、必要に応じてストレージノード１００，２００，３００，４００にアクセスする。ここで、アクセスノード６００は、コントロールノード５００から論理ボリュームを取得し、取得した論理ボリュームに基づいてアクセスすべきストレージノードを特定する。
【００３８】
管理ノード３０は、分散ストレージシステムの管理者が操作する端末装置である。分散ストレージシステムの管理者は、管理ノード３０を操作して、ストレージノード１００，２００，３００，４００、コントロールノード５００およびアクセスノード６００にアクセスし、運用に必要な各種設定を行うことができる。
【００３９】
次に、ストレージノード１００，２００，３００，４００、コントロールノード５００、アクセスノード６００、端末装置２１，２２，２３および管理ノード３０のハードウェア構成について説明する。
【００４０】
図３は、ストレージノードのハードウェア構成を示す図である。ストレージノード１００は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Random Access Memory）１０２、ＨＤＤインタフェース１０３、グラフィック処理装置１０４、入力インタフェース１０５および通信インタフェース１０６が接続されている。
【００４１】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。
【００４２】
ＨＤＤインタフェース１０３には、ストレージ装置１１０が接続されている。ＨＤＤインタフェース１０３は、ストレージ装置１１０に内蔵されたＲＡＩＤコントローラ１１５と通信し、ストレージ装置１１０に対するデータの入出力を行う。ストレージ装置１１０内のＲＡＩＤコントローラ１１５は、ＲＡＩＤ０〜ＲＡＩＤ５の機能を有し、ＨＤＤ１１１〜１１４をまとめて１台のハードディスクとして管理する。
【００４３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００４４】
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４５】
なお、ストレージノード２００，３００，４００も、ストレージノード１００と同様のハードウェア構成によって表現できる。
図４は、コントロールノードのハードウェア構成を示す図である。コントロールノード５００は、ＣＰＵ５０１によって装置全体が制御されている。ＣＰＵ５０１には、バス５０７を介してＲＡＭ５０２、ＨＤＤ５０３、グラフィック処理装置５０４、入力インタフェース５０５および通信インタフェース５０６が接続されている。
【００４６】
ＲＡＭ５０２には、ＣＰＵ５０１に実行させるＯＳのプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ５０２には、ＣＰＵ５０１による処理に必要な各種データが格納される。ＨＤＤ５０３には、ＯＳやアプリケーションのプログラムが格納される。
【００４７】
グラフィック処理装置５０４には、モニタ５１が接続されている。グラフィック処理装置５０４は、ＣＰＵ５０１からの命令に従って、画像をモニタ５１の画面に表示させる。入力インタフェース５０５には、キーボード５２とマウス５３とが接続されている。入力インタフェース５０５は、キーボード５２やマウス５３から送られてくる信号をバス５０７を介してＣＰＵ５０１に送信する。通信インタフェース５０６は、ネットワーク１０に接続されている。通信インタフェース５０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００４８】
なお、アクセスノード６００、端末装置２１，２２，２３および管理ノード３０も、コントロールノード５００と同様のハードウェア構成によって実現できる。ただし、アクセスノード６００は、ネットワーク１０と接続するための通信インタフェースに加えて、ネットワーク２０と接続するためのインタフェースを更に備えている。
【００４９】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
ここで、コントロールノード５００がアクセスノード６００に対して提供する論理ボリュームについて説明する。論理ボリュームは、ストレージノード１００，２００，３００，４００によって分散管理されているデータを、アクセスノード６００から容易に利用できるようにするための仮想的なボリュームである。
【００５０】
図５は、論理ボリュームの第１のデータ構造例を示す図である。論理ボリューム７００には、“ＶＶ−Ａ”という論理ボリュームＩＤが付与されている。また、ストレージノード１００，２００，３００，４００には、それぞれ“ＳＮ−Ａ”，“ＳＮ−Ｂ”，“ＳＮ−Ｃ”，“ＳＮ−Ｄ”というノードＩＤが付与されている。
【００５１】
更に、ストレージノード１００，２００には、“グループ１”というグループＩＤが付与されている。すなわち、ストレージノード１００，２００が、１つのグループを構成している。また、ストレージノード３００，４００には、“グループ２”というグループＩＤが付与されている。すなわち、ストレージノード３００，４００が、ストレージノード１００，２００とは異なるグループを構成している。
【００５２】
ストレージノード１００，２００，３００，４００に接続されたストレージ装置１１０，２１０，３１０，４１０それぞれにおいて、ＲＡＩＤ５の論理ディスクが構成されている。この論理ディスクは６つのスライスに分割されて、各ストレージノード内で一元的に管理されている。
【００５３】
図５の例では、ストレージ装置１１０内の記憶領域は、６つのスライス１２１〜１２６に分割されている。ストレージ装置２１０内の記憶領域は、６つのスライス２２１〜２２６に分割されている。ストレージ装置３１０内の記憶領域は、６つのスライス３２１〜３２６に分割されている。ストレージ装置４１０内の記憶領域は、６つのスライス４２１〜４２６に分割されている。
【００５４】
論理ボリューム７００は、セグメント７１０，７２０，７３０，７４０，７５０，７６０という単位で構成される。セグメント７１０，７２０，７３０，７４０，７５０，７６０は、プライマリスライス７１１，７２１，７３１，７４１，７５１，７６１とセカンダリスライス７１２，７２２，７３２，７４２，７５２，７６２との組で構成される。同じセグメントに属するスライスは、グループＩＤの異なるストレージノードに属するように配置される。
【００５５】
図５の例では、スライスＩＤを、“Ｐ”または“Ｓ”のアルファベットと数字との組み合わせで示している。“Ｐ”はプライマリスライスであることを示している。“Ｓ”はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば１番目のセグメント７１０のプライマリスライス７１１が“Ｐ１”で示され、セカンダリスライスが“Ｓ１”で示される。
【００５６】
このような構造の論理ボリューム７００の各プライマリスライスおよびセカンダリスライスが、ストレージ装置１１０，２１０，３１０，４１０内のいずれかのスライスに対応付けられる。例えば、セグメント７１０のプライマリスライス７１１がストレージ装置２１０のスライス２２５に対応付けられ、セカンダリスライス７１２がストレージ装置３１０のスライス３２２に対応付けられる。
【００５７】
そして、ストレージ装置１１０，２１０，３１０，４１０には、自己のスライスに対応付けられたプライマリスライスまたはセカンダリスライスのデータが格納される。なお、論理ボリュームは、データの用途やアクセス元の権限などに応じて、複数作成することができる。論理ボリュームに現れないスライスはアクセスノード６００から認識することができないため、論理ボリュームを使い分けることはセキュリティの向上にも寄与する。
【００５８】
次に、ストレージノード１００，２００，３００，４００、コントロールノード５００およびアクセスノード６００のモジュール構成について説明する。
図６は、分散ストレージシステムを構成する各ノードの機能を示すブロック図である。なお、図６ではストレージノード１００のモジュール構成を示しているが、ストレージノード２００，３００，４００もストレージノード１００と同様のモジュール構成によって実現できる。
【００５９】
ストレージノード１００は、スライス情報記憶部１３０、データアクセス部１４０およびスライス管理部１５０を有する。
スライス情報記憶部１３０には、ストレージ装置１１０が有するスライスについてのスライス情報が格納される。スライス情報には、スライスを特定するためのアドレスやスライスへの割り当ての種別（プライマリスライスまたはセカンダリスライスのいずれか）などが含まれる。また、各スライスについて、同一セグメントに属する対応するスライス（プライマリスライスに対応するセカンダリスライスまたはセカンダリスライスに対応するプライマリスライス）を管理しているストレージノードに関する情報も含まれる。
【００６０】
データアクセス部１４０は、アクセスノード６００からのアクセスを受け付けると、スライス情報記憶部１３０に格納されたスライス情報を参照して、ストレージ装置１１０に格納されたデータを操作する。
【００６１】
具体的には、データアクセス部１４０は、アクセスノード６００からアドレスを指定したデータの読み込み要求（Ｒｅａｄ要求）を受け付けると、指定されたアドレスが属するスライスがプライマリスライスであるか否か判断する。プライマリスライスである場合には、データアクセス部１４０は、指定されたアドレスに対応するデータをストレージ装置１１０から取得し、アクセスノード６００に送信する。プライマリスライスでない場合には、データアクセス部１４０は、アドレスの指定が不適切である旨をアクセスノード６００に通知する。
【００６２】
また、データアクセス部１４０は、アクセスノード６００からアドレスおよび書き込み内容を指定したデータの書き込み要求（Ｗｒｉｔｅ要求）を受け付けると、ストレージ装置１１０内の指定されたアドレスに対応する位置にデータの書き込みを試みる。そして、データアクセス部１４０は、書き込みの結果をアクセスノード６００に通知する。
【００６３】
更に、データアクセス部１４０は、指定されたアドレスが属するスライスがプライマリスライスである場合、対応するセカンダリスライスを管理するストレージノードに対して、同様の書き込みを行うよう指示する。これによって、プライマリスライスとセカンダリスライスとの内容が一致するように維持される。ただし、セカンダリスライスを管理するストレージノードが停止中の場合には、データアクセス部１４０は、コントロールノード５００に対して書き込み内容の一時保存を指示する。
【００６４】
スライス管理部１５０は、ストレージノード１００の稼働状態を定期的にコントロールノード５００に通知する。また、スライス管理部１５０は、コントロールノード５００からスライス情報の取得要求があると、スライス情報記憶部１３０に格納されたスライス情報を送信する。また、スライス管理部１５０は、スライス情報の更新の指示を受け付けると、指示された更新内容を、スライス情報記憶部１３０に格納されたスライス情報に反映させる。
【００６５】
また、スライス管理部１５０は、省電力モード（２つのグループの一方が停止している状態の運用モード）への移行通知を受け取ると、必要に応じてスライス情報記憶部１３０に格納されたスライス情報を操作して、スライスの設定を変更する。また、スライス管理部１５０は、通常モード（全てのストレージノードが停止している状態の運用モード）への復帰通知を受け取ると、必要に応じてスライス情報記憶部１３０に格納されたスライス情報を操作して、通常モードへの移行準備を行う。
【００６６】
コントロールノード５００は、スライス情報群記憶部５１０、論理ボリューム管理部５２０、冗長データ記憶部５３０および運用モード制御部５４０を有する。
スライス情報群記憶部５１０には、ストレージノード１００，２００，３００，４００が管理するスライス情報が格納される。スライス情報群記憶部５１０に格納されるスライス情報は、ストレージノード１００，２００，３００，４００が保持している情報を収集したものである。
【００６７】
論理ボリューム管理部５２０は、ストレージノード１００，２００，３００，４００から稼働状態を示す通知をネットワーク１０経由で受信する。これにより、論理ボリューム管理部５２０は、各ストレージノードが正常に稼働しているか否かを知る。また、論理ボリューム管理部５２０は、必要に応じてストレージノード１００，２００，３００，４００からスライス情報を取得し、スライス情報群記憶部５１０に格納されたスライス情報を更新する。また、論理ボリューム管理部５２０は、スライス情報群記憶部５１０のスライス情報に基づいて、アクセスノード６００に格納される論理ボリュームを作成する。
【００６８】
また、論理ボリューム管理部５２０は、新たなセグメントを作成する場合、スライス情報群記憶部５１０に格納されたスライス情報を参照して、ストレージノード１００，２００，３００，４００に存在する空きスライスを調べる。そして、論理ボリューム管理部５２０は、空きスライスの中から新たなセグメントのプライマリスライスとセカンダリスライスとを割り当て、スライス情報および論理ボリュームを更新する。なお、新たなセグメントの作成は、例えば、管理者が操作する管理ノード３０からセグメント作成の指示を受けて実行する。
【００６９】
冗長データ記憶部５３０には、省電力モード中に行われたプライマリスライスに対する書き込みの内容を示す冗長データが一時的に格納される。冗長データには、その冗長データがどのセグメントについての書き込み内容かを示す情報や、Ｗｒｉｔｅ要求のあった時刻を示すタイムスタンプが付加される。
【００７０】
運用モード制御部５４０は、ストレージノード１００，２００，３００，４００の起動および停止を制御する。具体的には、運用モード制御部５４０は、省電力モードへの移行命令を受け付けると、移行準備のための設定変更を行い、停止対象のグループに属するストレージノードの電源をＯＦＦにする。また、運用モード制御部５４０は、通常モードへの復帰命令を受け付けると、停止させていたストレージノードの電源をＯＮにすると共に、復帰のための設定変更を行う。
【００７１】
また、運用モード制御部５４０は、省電力モード中にストレージノード１００，２００，３００，４００から書き込み内容の一時保存要求を受け付けると、冗長データとして冗長データ記憶部５３０に格納する。その際、運用モード制御部５４０は、冗長データに、タイムスタンプなどの情報を付加しておく。
【００７２】
また、運用モード制御部５４０は、冗長データ記憶部５３０に格納された冗長データが所定量を超えると、停止中のストレージノードを一時的に起動させて、冗長データが示す書き込み内容をセカンダリスライスに反映させる。そして、セカンダリスライスに反映済みの冗長データを、冗長データ記憶部５３０から削除する。
【００７３】
アクセスノード６００は、論理ボリューム記憶部６１０とデータアクセス制御部６２０を有する。
論理ボリューム記憶部６１０には、論理ボリュームが格納される。論理ボリュームでは、ストレージ装置１１０，２１０，３１０，４１０が管理する記憶領域を一元的に扱うために、仮想的なアドレスである論理アドレスによって各セグメントが管理されている。論理ボリュームには、セグメントを特定するための論理アドレスやセグメントに属するプライマリスライスおよびセカンダリスライスを特定するための情報が含まれる。論理ボリュームは、コントロールノード５００によって作成および更新がなされる。
【００７４】
データアクセス制御部６２０は、実行中のプログラムからデータへのアクセス要求があると、まず論理ボリューム記憶部６１０に論理ボリュームが格納されているか否か確認する。論理ボリュームが格納されていない場合、データアクセス制御部６２０は、コントロールノード５００から論理ボリュームを取得し、取得した論理ボリュームを論理ボリューム記憶部６１０に格納する。
【００７５】
そして、データアクセス制御部６２０は、論理ボリュームに基づいてアクセス先となるストレージノードを特定する。すなわち、利用するデータが属するセグメントを特定し、特定したセグメントのプライマリスライスを管理するストレージノードを特定する。その後、データアクセス制御部６２０は、特定したストレージノードにアクセスする。
【００７６】
ここで、アクセスに失敗した場合、コントロールノード５００から論理ボリュームを取得した後にデータの配置状況が変化したことが考えられるため、データアクセス制御部６２０は、コントロールノード５００から最新の論理ボリュームを取得して、再びストレージノードへのアクセスを試みる。
【００７７】
図７は、スライス情報テーブルのデータ構造を示す図である。図７に示すスライス情報テーブル１３１は、ストレージノード１００のスライス情報記憶部１３０に格納されている。すなわち、スライス情報テーブル１３１は、ストレージノード１００が管理するスライスについての情報を記載したものである。
【００７８】
スライス情報テーブル１３１には、ストレージノード１００のノードＩＤ“ＳＮ−Ａ”と、ストレージノード１００が属するグループのグループＩＤ“グループ１”とが記載されている。
【００７９】
また、スライス情報テーブル１３１には、スライスＩＤを示す項目、実アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ボリュームＩＤを示す項目、セグメントＩＤを示す項目、リンクを示す項目、フラグを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、１つのスライスについてのスライス情報を構成する。
【００８０】
スライスＩＤを示す項目には、スライスＩＤが設定される。実アドレスを示す項目には、スライスの先頭ブロックを示す物理的なアドレスが設定される。ブロック数を示す項目には、スライスに含まれるブロックの数が設定される。種別を示す項目には、“Ｐ”，“Ｓ”，“Ｆ”のいずれかの値が設定される。“Ｐ”はプライマリスライスを意味し、“Ｓ”はセカンダリスライスを意味し、“Ｆ”はセグメントが対応付けられてないこと（フリー）を意味する。ボリュームＩＤを示す項目には、スライスに対応付けられたセグメントが属する論理ボリュームの論理ボリュームＩＤが設定される。セグメントＩＤを示す項目には、スライスに対応付けられたセグメントのセグメントＩＤが設定される。
【００８１】
リンクを示す項目には、種別が“Ｐ”であるスライスについては、対応するセカンダリスライスが配置されたストレージノードのストレージノードＩＤとスライスＩＤとが設定される。また、種別が“Ｓ”であるスライスについては、対応するプライマリスライスが配置されたストレージノードのストレージノードＩＤとスライスＩＤとが設定される。
【００８２】
フラグを示す項目には、“Ｙ”または“Ｎ”のいずれかの値が設定される。“Ｙ”は、省電力モードへの移行に伴って、プライマリスライスとセカンダリスライスの役割が交換されているスライスであることを意味する。“Ｎ”は、プライマリスライスとセカンダリスライスの役割が交換されていないことを意味する。通常モード時には、全て“Ｎ”が設定されている。
【００８３】
スライス情報テーブル１３１に格納されるスライス情報は、スライス管理部１５０によって適宜更新される。また、コントロールノード５００のスライス情報群記憶部５１０にも、同様のテーブルが格納されている。
【００８４】
例えば、スライスＩＤが“１”、実アドレスが“０”、ブロック数が“１０２４”、種別が“Ｓ”、ボリュームＩＤが“ＶＶ−１”、セグメントＩＤが“２”、リンクが“ＳＮ−Ｄ，１”、フラグが“Ｎ”という情報が格納される。
【００８５】
これは、ストレージノード１００が管理する０ブロックから１０２３ブロックまでの記憶領域が１つのスライスを構成しており、論理ボリューム“ＶＶ−１”の２番目のセグメントのセカンダリスライスが割り当てられていることを示している。また、そのセカンダリスライスに対応するプライマリスライスが、ストレージノード“ＳＮ−Ｄ”の１番目のスライスに割り当てられていることを示している。
【００８６】
図８は、論理ボリュームテーブルのデータ構造を示す図である。図８に示す論理ボリュームテーブル６１１は、論理ボリューム“ＶＶ−１”についてのテーブルである。論理ボリュームテーブル６１１は、アクセスノード６００の論理ボリューム記憶部６１０に格納されている。
【００８７】
論理ボリュームテーブル６１１には、セグメントＩＤを示す項目、論理アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ノードＩＤを示す項目および実アドレスを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
【００８８】
セグメントＩＤを示す項目には、セグメントを識別するセグメントＩＤが設定される。論理アドレスを示す項目には、セグメントの先頭ブロックを示す論理ボリューム上の仮想的なアドレスが設定される。ブロック数を示す項目には、セグメントに含まれるブロックの数が設定される。
【００８９】
種別を示す項目には、“Ｐ”または“Ｓ”のいずれかの値が設定される。ノードを示す項目には、割り当て先のストレージノードを識別するノードＩＤが設定される。実アドレスを示す項目には、割り当て先のスライスの先頭ブロックを示す物理的なアドレスが設定される。
【００９０】
論理ボリュームテーブル６１１に格納される情報は、コントロールノード５００のスライス情報群記憶部５１０に格納されたスライス情報に基づいて、論理ボリューム管理部５２０によって生成される。
【００９１】
図９は、冗長データを格納するリングバッファの構造例を示す図である。コントロールノード５００の冗長データ記憶部５３０は、冗長データをリングバッファ５３１に格納して管理する。
【００９２】
リングバッファ５３１では、記憶領域としてサイズＮの固定領域が割り当てられている。すなわち、アドレスが０からＮ−１までの記憶領域が割り当てられている。ここで、リングバッファ５３１にデータを格納する場合は、記憶領域の先頭（アドレスが０の位置）から開始して、データ格納済み領域の末尾に順にデータを追加していく。また、リングバッファ５３１からデータを取り出す場合は、データ格納済み領域の先頭から順にデータを取り出す。
【００９３】
リングバッファ５３１では、データ格納済み領域の先頭を示すＨｅａｄポインタと、データ格納済み領域の末尾を示すＴａｉｌポインタとが設定される。Ｈｅａｄポインタは、データが取り出される毎に、次のデータの先頭に移動する。Ｔａｉｌポインタは、データが追加される毎に、新たに追加されたデータの末尾の位置に移動する。そして、Ｔａｉｌポインタは、記憶領域の末尾（アドレスがＮ−１）を超えると、記憶領域の先頭（アドレスが０）に戻る。このようにして、リングバッファ５３１では、固定領域が順次再利用される。
【００９４】
リングバッファ５３１には、省電力モード中に行われた書き込みの内容が、冗長データとして一時的に格納される。これは、省電力モード中では、プライマリスライスへの書き込み内容をセカンダリスライスへ随時反映させることができないためである。リングバッファ５３１には、書き込み内容を示す冗長データが時系列に格納される。その際、冗長データには、論理ボリュームのセグメントを識別するセグメントＩＤと、Ｗｒｉｔｅ要求のあった時刻を示すタイムスタンプとが付加される。
【００９５】
ところで、リングバッファ５３１の記憶領域は有限であるため、冗長データの量の許容サイズをリングバッファ５３１に予め設定しておく。現在格納されている冗長データの量は、例えば、ＨｅａｄポインタからＴａｉｌポインタまでの距離に基づいて計算することができる。冗長データの量は、コントロールノード５００の運用モード制御部５４０によって継続的に監視される。
【００９６】
なお、リングバッファ５３１に格納される冗長データとしては、データ操作の内容でもよいし、更新対象となったブロックの更新後のデータそのものでもよいし、更新対象となったセグメント全体の更新後のデータそのものでもよい。
【００９７】
次に、以上のような構成およびデータ構造の分散ストレージシステムにおいて実行される処理の詳細を説明する。最初に、コントロールノード５００の運用モード制御部５４０が、省電力モードへの移行命令を受けて省電力モードへ移行する処理について説明する。
【００９８】
図１０は、省電力モードへの移行処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］運用モード制御部５４０は、省電力モードへの移行命令を受け付ける。ここで、移行命令が発行される場合としては、以下の３つが考えられる。１つ目は、管理者が管理ノード３０を操作して、手動でコントロールノード５００に対して移行命令を発行する場合である。２つ目は、省電力モードへ移行する時刻（例えば、ストレージノード１００，２００，３００，４００のアクセス負荷が低くなると予測される時刻）を管理ノード３０またはコントロールノード５００に設定させ、設定された時刻に自動的に移行命令が発行される場合である。３つ目は、コントロールノード５００や管理ノード３０にストレージノード１００，２００，３００，４００のアクセス負荷を監視させ、アクセス負荷が閾値を下回った場合に自動的に移行命令が発行される場合である。
【００９９】
［ステップＳ１２］運用モード制御部５４０は、省電力モードへ移行するに際して停止させるストレージノードのグループを特定する。ここで、停止対象のグループの特定方法は、以下の４つの方法から１つが選択されて、運用モード制御部５４０に予め設定されている。１つ目は、管理ノード３０からその都度停止対象のグループを指定させる方法である。２つ目は、グループ１，２の一方をランダムに選択する方法である。３つ目は、停止対象のグループをグループ１，２のいずれか一方に固定する方法である。４つ目は、ラウンドロビン方式により、グループ１，２を交互に選択する方法である。
【０１００】
［ステップＳ１３］運用モード制御部５４０は、ストレージノード１００，２００，３００，４００に対して、省電力モードへの移行通知を行う。ストレージノード１００，２００，３００，４００では、移行通知を受けて、各自が管理するスライス情報が更新される。すなわち、必要に応じてプライマリスライスとセカンダリスライスの種別の交換が行われ、停止対象のグループに属するストレージノードにプライマリスライスが割り当てられていない状態にする。
【０１０１】
［ステップＳ１４］運用モード制御部５４０は、ステップＳ１３と同様の更新を、スライス情報群記憶部５１０に格納されたスライス情報に対して行う。その後、論理ボリューム管理部５２０は、更新後のスライス情報に基づいて論理ボリュームを更新する。
【０１０２】
［ステップＳ１５］運用モード制御部５４０は、ステップＳ１２で特定したグループに属するストレージノードに対して電源ＯＦＦ通知を行う。通知先のストレージノードでは、電源ＯＦＦ通知を受けて、自身の電源をＯＦＦにする。
【０１０３】
このようにして、コントロールノード５００は、省電力モードへの移行命令があると、停止対象のグループを特定する。そして、コントロールノード５００は、スライス情報および論理ボリュームを更新して、停止対象のグループに属するストレージノードにプライマリスライスが割り当てられていない状態にする。その後、コントロールノード５００は、停止対象のグループに属するストレージノードの電源をＯＦＦにさせる。
【０１０４】
なお、上記ではコントロールノード５００は、ストレージノード１００，２００，３００，４００へ移行通知を行い（上記ステップＳ１３）、その後にコントロールノード５００のスライス情報および論理ボリュームを更新する（上記ステップＳ１４）こととしたが、その順序を逆にしてもよい。
【０１０５】
また、コントロールノード５００がストレージノード１００，２００，３００，４００に通知してスライス情報を更新させる（上記ステップＳ１４）ための具体的な方法としては、コントロールノード５００がストレージノード１００，２００，３００，４００に対して詳細に更新内容を指示する方法と、省電力モードへ移行する旨を通知して更新内容の判断はストレージノード１００，２００，３００，４００に行わせる方法とが考えられる。このような２つの方法を取り得るのは、コントロールノード５００とストレージノード１００，２００，３００，４００とが、共通のスライス情報を保持しているためである。以下、後者の方法による具体的な通信の流れを示す。
【０１０６】
図１１は、省電力モードへの移行の流れの具体例を示すシーケンス図である。なお、ここでは、ストレージノード３００，４００が属するグループ２が停止対象となっているものとする。以下、図１１に示す処理をステップ番号に沿って説明する。
【０１０７】
［ステップＳ２１］コントロールノード５００は、ストレージノード１００，２００，３００，４００に対して省電力モードへの移行通知を行う。移行通知では、停止対象のグループのグループＩＤ“グループ２”が指定されている。
【０１０８】
［ステップＳ２２］ストレージノード１００は、自己が停止対象でない（稼働を継続する）グループに属することを確認する。すると、ストレージノード１００は、スライス情報を検索して、自己に割り当てられているセカンダリスライスが属するセグメント４とセグメント２とを特定する。その後、ストレージノード１００は、セグメント４のプライマリスライスが割り当てられているストレージノード３００に対して、スライス種別の交換を指示する。
【０１０９】
［ステップＳ２３］ストレージノード３００は、セグメント４のスライス種別をプライマリスライスからセカンダリスライスに変更する。そして、ストレージノード３００は、ストレージノード１００に対して完了応答を行う。ストレージノード１００は、完了応答を受けて、セグメント４のスライス種別をセカンダリスライスからプライマリスライスに変更する。
【０１１０】
［ステップＳ２４］ストレージノード１００は、セグメント２のプライマリスライスが割り当てられているストレージノード４００に対して、スライス種別の交換を指示する。
［ステップＳ２５］ストレージノード４００は、セグメント２のスライス種別をプライマリスライスからセカンダリスライスに変更する。そして、ストレージノード４００は、ストレージノード１００に対して完了応答を行う。ストレージノード１００は、完了応答を受けて、セグメント２のスライス種別をセカンダリスライスからプライマリスライスに変更する。
【０１１１】
［ステップＳ２６］ストレージノード１００は、コントロールノード５００に対して、ストレージノード１００が管理するスライスの種別交換が完了したことを示す完了応答を行う。
【０１１２】
［ステップＳ２７］ストレージノード２００は、自己が停止対象でないグループに属することを確認する。すると、ストレージノード２００は、スライス情報を検索して、自己に割り当てられているセカンダリスライスが属するセグメント６を特定する。その後、ストレージノード２００は、セグメント６のプライマリスライスが割り当てられているストレージノード４００に対して、スライス種別の交換を指示する。
【０１１３】
［ステップＳ２８］ストレージノード４００は、セグメント６のスライス種別をプライマリスライスからセカンダリスライスに変更する。そして、ストレージノード４００は、ストレージノード２００に対して完了応答を行う。ストレージノード２００は、完了応答を受けて、セグメント６のスライス種別をセカンダリスライスからプライマリスライスに変更する。
【０１１４】
［ステップＳ２９］ストレージノード２００は、コントロールノード５００に対して、ストレージノード２００が管理するスライスの種別交換が完了したことを示す完了応答を行う。
【０１１５】
［ステップＳ３０］コントロールノード５００は、ステップＳ２６およびステップＳ２９の完了応答によってスライス種別の交換が完了したことを確認すると、ストレージノード３００，４００に対してそれぞれ電源ＯＦＦ通知を行う。なお、停止対象のグループに属するストレージノード３００，４００からは、完了応答は来ない。
【０１１６】
［ステップＳ３１］ストレージノード３００，４００は、それぞれ電源がＯＦＦとなる直前にコントロールノード５００に対して完了応答を行う。
このようにして、ストレージノード１００，２００，３００，４００が管理するスライス情報が更新されて、ストレージノード３００，４００に割り当てられたプライマリスライスのスライス種別が全てセカンダリスライスに変更される。そして、ストレージノード３００，４００の電源がＯＦＦとなる。なお、上記ステップＳ２２〜Ｓ２６の処理とステップＳ２７〜Ｓ２９の処理とは、並行して行うことができる。
【０１１７】
ここで、図１１に示した方法では、コントロールノード５００からストレージノード１００，２００，３００，４００へ移行通知が行われた後は、ストレージノード間の通信のみでスライス情報の更新が行われる。また、スライス種別の交換は、指示情報のみを送受信すればよく、スライス上のデータそのものを送受信する必要がない。そのため、コントロールノード５００の処理の負荷およびネットワーク１０の通信負荷を抑制することができる。
【０１１８】
図１２は、論理ボリュームの第２のデータ構造例を示す図である。図１２に示すプライマリスライスおよびセカンダリスライスの割り当て状況は、図１１に示した処理が実行されることで、図５に示した割り当て状況が変化したものである。
【０１１９】
具体的には、プライマリスライス７２１の配置先とセカンダリスライス７２２の配置先とが交換されている。また、プライマリスライス７４１の配置先とセカンダリスライス７４２の配置先とが交換されている。更に、プライマリスライス７６１の配置先とセカンダリスライス７６２の配置先とが交換されている。ただし、プライマリスライス７２１，７４１，７６１とセカンダリスライス７２２，７４２，７６２の内容はそれぞれ同一であるため、実質的にはデータの移動は生じていない。
【０１２０】
そして、図１２に示すように、グループ２に属するストレージノード３００，４００には、セカンダリスライスのみが割り当てられた状態となる。従って、データアクセスを阻害することなく、ストレージノード３００，４００の電源をＯＦＦとすることができる。
【０１２１】
次に、省電力モード時にＷｒｉｔｅ要求が発生した場合に、コントロールノード５００に冗長データを格納する処理の流れについて説明する。
図１３は、省電力モード時の書き込みの流れの具体例を示すシーケンス図である。以下、図１３に示す処理をステップ番号に沿って説明する。
【０１２２】
［ステップＳ３１］アクセスノード６００は、データの書き込みが必要になると、論理ボリュームを参照して、書き込み先が属するセグメントを特定する。ここでは、セグメント２が書き込み先であるとする。すると、アクセスノード６００は、セグメント２のプライマリスライスが割り当てられているストレージノード１００に対して、Ｗｒｉｔｅ要求を行う。
【０１２３】
［ステップＳ３２］ストレージノード１００は、Ｗｒｉｔｅ要求を受けて、ストレージ装置１１０に対してデータの書き込み操作を行う。ここで、データ操作時にこの分散ストレージシステムが省電力モードであるため、ストレージノード１００は、コントロールノード５００に対してセグメント２に対する書き込み内容の一時保存を要求する。
【０１２４】
［ステップＳ３３］コントロールノード５００は、一時保存要求を受けて、セグメント２への書き込み内容を冗長データとして保存する。そして、コントロールノード５００は、ストレージノード１００に対して完了応答を行う。
【０１２５】
［ステップＳ３４］ストレージノード１００は、アクセスノード６００に対して、Ｗｒｉｔｅ要求に対する完了応答を行う。
［ステップＳ３５］アクセスノード６００は、ステップＳ３１と同様に、セグメント３へのデータの書き込みが必要になると、セグメント３のプライマリスライスが割り当てられているストレージノード２００に対して、Ｗｒｉｔｅ要求を行う。
【０１２６】
［ステップＳ３６］ストレージノード２００は、Ｗｒｉｔｅ要求を受けて、ストレージ装置２１０に対してデータの書き込み操作を行う。ここで、データ操作時にこの分散ストレージシステムが省電力モードであるため、ストレージノード２００は、コントロールノード５００に対してセグメント３に対する書き込み内容の一時保存を要求する。
【０１２７】
［ステップＳ３７］コントロールノード５００は、一時保存要求を受けて、セグメント３への書き込み内容を冗長データとして保存する。そして、コントロールノード５００は、ストレージノード２００に対して完了応答を行う。
【０１２８】
［ステップＳ３８］ストレージノード２００は、アクセスノード６００に対して、Ｗｒｉｔｅ要求に対する完了応答を行う。
このようにして、ストレージノード３００，４００が停止した状態でストレージノード１００，２００へのＷｒｉｔｅ要求があると、書き込み内容がストレージノード１００，２００からコントロールノード５００へ通知されて保存される。すなわち、コントロールノード５００には、書き込み内容を示す冗長データが蓄積される。
【０１２９】
次に、コントロールノード５００が、冗長データの内容をセカンダリスライスに反映させる処理について説明する。
図１４は、冗長データの書き戻し処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１３０】
［ステップＳ４１］運用モード制御部５４０は、冗長データ記憶部５３０に格納された冗長データの量を継続的に監視する。そして、運用モード制御部５４０は、冗長データの量が予め設定された許容量を超過していることを検知する。
【０１３１】
［ステップＳ４２］運用モード制御部５４０は、省電力モードへの移行によって電源がＯＦＦとなったストレージノードに対して、電源ＯＮ通知を行う。これによって、通知先のストレージノードが停止状態から稼働状態になる。
【０１３２】
［ステップＳ４３］運用モード制御部５４０は、冗長データ記憶部５３０に格納された冗長データを、Ｈｅａｄポインタを参照して先頭から１つ取り出す。そして、運用モード制御部５４０は、Ｈｅａｄポインタを次の冗長データの先頭に移動させる。
【０１３３】
［ステップＳ４４］運用モード制御部５４０は、ステップＳ４３で取り出した冗長データに付加されているセグメントＩＤに基づいて、書き込み対象のセグメントを特定する。そして、運用モード制御部５４０は、特定したセグメントに属するセカンダリスライスに、冗長データの内容を反映させる。
【０１３４】
［ステップＳ４５］運用モード制御部５４０は、ステップＳ４３で冗長データ記憶部５３０に格納されている全ての冗長データを取り出してセカンダリスライスに反映させたか否か判断する。全て取り出した場合には、処理がステップＳ４６に進められる。取り出していない冗長データがある場合には、処理がステップＳ４３に進められる。
【０１３５】
［ステップＳ４６］運用モード制御部５４０は、ステップＳ４２で電源ＯＮ通知を行ったストレージノードに対して電源ＯＦＦ通知を行い、再び停止させる。
このようにして、コントロールノード５００は、省電力モード中であっても、停止しているストレージノードを一時的に起動させ、書き込み内容をセカンダリスライスに書き戻す。これにより、データの冗長性が確保される。
【０１３６】
なお、上記ではこのコントロールノード５００は、蓄積された冗長データの量が閾値を超えた場合にセカンダリスライスへの書き戻し処理を行うこととしたが、先頭の冗長データが格納されてから所定時間以上経過した場合に書き戻し処理を行うようにしてもよい。
【０１３７】
また、コントロールノード５００がセカンダリスライスを更新させる（上記ステップＳ４４）ための具体的な方法としては、コントロールノード５００が更新対象のセカンダリスライスが割り当てられているストレージノードに対して書き戻し内容を通知する方法と、更新対象のセカンダリスライスに対応するプライマリスライスが割り当てられているストレージノードに対して同期通知を行う方法とが考えられる。以下、後者の方法による具体的な通信の流れを示す。
【０１３８】
図１５は、冗長データの書き戻しの流れの具体例を示すシーケンス図である。ここでは、省電力モードへの移行に伴って、グループ２に属するストレージノード３００，４００が停止しているとする。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１３９】
［ステップＳ５１］コントロールノード５００は、停止中のストレージノード３００，４００に対して、それぞれ電源ＯＮ通知を行う。電源ＯＮ通知を受けて、ストレージノード３００，４００が起動する。
【０１４０】
［ステップＳ５２］ストレージノード３００，４００は、起動処理が完了すると、それぞれコントロールノード５００に対して完了応答を行う。
［ステップＳ５３］コントロールノード５００は、蓄積された冗長データのうち最も古いものを取り出し、取り出した冗長データに付加されているセグメントＩＤから、書き込み対象となったセグメントを特定する。ここでは、セグメント２が特定されたとする。すると、コントロールノード５００は、セグメント２のプライマリスライスが割り当てられているストレージノード１００に対して、セグメント２の同期通知を行う。
【０１４１】
［ステップＳ５４］ストレージノード１００は、セグメント２の同期通知を受けて、セグメント２のデータをストレージ装置１１０から取得する。そして、ストレージノード１００は、セグメント２のセカンダリスライスが割り当てられているストレージノード４００に対して、セグメント２のＷｒｉｔｅ要求を行う。
【０１４２】
［ステップＳ５５］ストレージノード４００は、セグメント２のＷｒｉｔｅ要求を受けて、ストレージ装置４１０に対してデータの書き込み操作を行う。そして、ストレージノード４００は、ストレージノード１００に対して完了応答を行う。
【０１４３】
［ステップＳ５６］ストレージノード１００は、コントロールノード５００に対して、同期通知に対する完了応答を行う。
［ステップＳ５７］コントロールノード５００は、ステップＳ５３と同様に、次の冗長データを取り出し、書き込み対象となったセグメントを特定する。ここでは、セグメント３が特定されたとする。すると、コントロールノード５００は、セグメント３のプライマリスライスが割り当てられているストレージノード２００に対して、セグメント３の同期通知を行う。
【０１４４】
［ステップＳ５８］ストレージノード２００は、セグメント３の同期通知を受けて、セグメント３のデータをストレージ装置２１０から取得する。そして、ストレージノード２００は、セグメント３のセカンダリスライスが割り当てられているストレージノード４００に対して、セグメント３のＷｒｉｔｅ要求を行う。
【０１４５】
［ステップＳ５９］ストレージノード４００は、セグメント３のＷｒｉｔｅ要求を受けて、ストレージ装置４１０に対してデータの書き込み操作を行う。そして、ストレージノード４００は、ストレージノード２００に対して完了応答を行う。
【０１４６】
［ステップＳ６０］ストレージノード２００は、コントロールノード５００に対して、同期通知に対する完了応答を行う。
［ステップＳ６１］コントロールノード５００は、冗長データを全て取り出したことを確認すると、ストレージノード３００，４００に対してそれぞれ電源ＯＦＦ通知を行う。
【０１４７】
［ステップＳ６２］ストレージノード３００，４００は、それぞれ電源がＯＦＦとなる直前にコントロールノード５００に対して完了応答を行う。
このようにして、コントロールノード５００は、省電力モードへの移行に伴って停止させたストレージノードを一時的に起動させる。そして、コントロールノード５００は、書き込みが行われたセグメントのプライマリスライスが割り当てられているストレージノードに対して、データの同期を指示する。これにより、ストレージノード１００，２００，３００，４００の間でデータの同期処理が行われ、プライマリスライスとセカンダリスライスの内容が同一になる。
【０１４８】
次に、コントロールノード５００の運用モード制御部５４０が、省電力モードからの復帰命令を受けて通常モードへ移行する処理について説明する。
図１６は、省電力モードからの復帰処理の手順を示すフローチャートである。図１６に示す処理は、以下、図１６に示す処理をステップ番号に沿って説明する。
【０１４９】
［ステップＳ７１］運用モード制御部５４０は、省電力モードからの復帰命令を受け付ける。ここで、復帰命令が発行される場合としては、省電力命令への移行命令の場合と同様、以下の３つが考えられる。１つ目は、管理者が管理ノード３０を操作して、手動でコントロールノード５００に対して復帰命令を発行する場合である。２つ目は、通常モードへ移行する時刻（例えば、ストレージノード１００，２００，３００，４００のアクセス負荷が高くなると予測される時刻）を管理ノード３０またはコントロールノード５００に設定させ、設定された時刻に自動的に復帰命令が発行される場合である。３つ目は、コントロールノード５００や管理ノード３０にストレージノード１００，２００，３００，４００のアクセス負荷を監視させ、アクセス負荷が閾値以上になった場合に自動的に復帰命令が発行される場合である。
【０１５０】
［ステップＳ７２］運用モード制御部５４０は、省電力モードへの移行の際に停止対象にしたグループを特定する。そして、運用モード制御部５４０は、特定したグループに属するストレージノードに対して、電源ＯＮ通知を行う。これにより、通知先のストレージノードが稼働状態になる。
【０１５１】
［ステップＳ７３］運用モード制御部５４０は、ストレージノード１００，２００，３００，４００に対して、省電力モードからの復帰通知を行う。ストレージノード１００，２００，３００，４００では、復帰通知を受けて、各自が管理するスライス情報が更新される。すなわち、必要に応じてプライマリスライスとセカンダリスライスの種別が元に戻され、プライマリスライスがストレージノード１００，２００，３００，４００に分散されて割り当てられている状態にする。なお、省電力モード時にスライス種別が交換されたスライスか否かは、スライス情報のフラグに基づいて判断することができる。
【０１５２】
［ステップＳ７４］運用モード制御部５４０は、ステップＳ７３と同様の更新を、スライス情報群記憶部５１０に格納されたスライス情報に対して行う。その後、論理ボリューム管理部５２０は、更新後のスライス情報に基づいて論理ボリュームを更新する。
【０１５３】
このようにして、コントロールノード５００は、省電力モードからの復帰命令があると、停止対象としたグループに属するストレージノードを起動させる。そして、コントロールノード５００は、スライス情報および論理ボリュームを更新して、省電力モードへ移行する前のデータの配置状況に戻す。
【０１５４】
なお、上記ではコントロールノード５００は、ストレージノード１００，２００，３００，４００へ復帰通知を行い（上記ステップＳ７３）、その後にコントロールノード５００のスライス情報および論理ボリュームを更新する（上記ステップＳ７４）こととしたが、その順序を逆にしてもよい。
【０１５５】
また、コントロールノード５００がストレージノード１００，２００，３００，４００に通知してスライス情報を更新させる（上記ステップＳ７３）ための具体的な方法としては、コントロールノード５００がストレージノード１００，２００，３００，４００に対して詳細に更新内容を指示する方法と、省電力モードから復帰する旨を通知して更新内容の判断はストレージノード１００，２００，３００，４００に行わせる方法とが考えられる。以下、後者の方法による具体的な通信の流れを示す。
【０１５６】
図１７は、省電力モードからの復帰の流れの具体例を示すシーケンス図である。ここでは、省電力モード中にグループ２が電源ＯＦＦの対象となっているものとする。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１５７】
［ステップＳ８１］コントロールノード５００は、省電力モード中に停止させていたストレージノード３００，４００に対して、それぞれ電源ＯＮ通知を行う。
［ステップＳ８２］ストレージノード３００，４００は、起動処理が完了すると、それぞれコントロールノード５００に対して完了応答を行う。
【０１５８】
［ステップＳ８３］コントロールノード５００は、ストレージノード１００，２００，３００，４００に対して、省電力モードからの復帰通知を行う。
［ステップＳ８４］ストレージノード１００は、自己が停止対象でなかった（省電力モード中も稼働していた）グループに属することを確認する。すると、ストレージノード１００は、スライス情報を検索して、省電力モードへの移行に伴ってスライス種別が交換されたセグメント４とセグメント２とを特定する。その後、ストレージノード１００は、セグメント４のセカンダリスライスが割り当てられているストレージノード３００に対して、スライス種別の交換を指示する。
【０１５９】
［ステップＳ８５］ストレージノード３００は、セグメント４のスライス種別をセカンダリスライスからプライマリスライスに変更する。そして、ストレージノード３００は、ストレージノード１００に対して完了応答を行う。ストレージノード１００は、完了応答を受けて、セグメント４のスライス種別をプライマリリスライスからセカンダリスライスに変更する。
【０１６０】
［ステップＳ８６］ストレージノード１００は、セグメント２のセカンダリスライスが割り当てられているストレージノード４００に対して、スライス種別の交換を指示する。
［ステップＳ８７］ストレージノード４００は、セグメント２のスライス種別をセカンダリスライスからプライマリスライスに変更する。そして、ストレージノード４００は、ストレージノード１００に対して完了応答を行う。ストレージノード１００は、完了応答を受けて、セグメント２のスライス種別をプライマリスライスからセカンダリスライスに変更する。
【０１６１】
［ステップＳ８８］ストレージノード１００は、コントロールノード５００に対して、ストレージノード１００が管理するスライスの種別交換が完了したことを示す完了応答を行う。
【０１６２】
［ステップＳ８９］ストレージノード２００は、自己が停止対象でなかったグループに属することを確認する。すると、ストレージノード２００は、スライス情報を検索して、省電力モードへの移行に伴ってスライス種別が交換されたセグメント６を特定する。その後、ストレージノード２００は、セグメント６のセカンダリスライスが割り当てられているストレージノード４００に対して、スライス種別の交換を指示する。
【０１６３】
［ステップＳ９０］ストレージノード４００は、セグメント６のスライス種別をセカンダリスライスからプライマリスライスに変更する。そして、ストレージノード４００は、ストレージノード２００に対して完了応答を行う。ストレージノード２００は、完了応答を受けて、セグメント６のスライス種別をプライマリスライスからセカンダリスライスに変更する。
【０１６４】
［ステップＳ９１］ストレージノード２００は、コントロールノード５００に対して、ストレージノード２００が管理するスライスの種別交換が完了したことを示す完了応答を行う。これによって、コントロールノード５００は、通常モードへの復帰が完了したことを知る。なお、停止対象であったグループに属するストレージノード３００，４００からは、完了応答は来ない。
【０１６５】
このようにして、ストレージノード１００，２００，３００，４００が管理するスライス情報が更新されて、省電力モードへの移行に伴って交換されたスライスの種別が全て元に戻される。なお、上記ステップＳ８４〜Ｓ８８の処理とステップＳ８９〜Ｓ９１の処理とは、並行して行うことができる。
【０１６６】
ここで、図１７に示した方法では、コントロールノード５００からストレージノード１００，２００，３００，４００へ復帰通知が行われた後は、ストレージノード間の通信のみでスライス情報の更新が行われる。また、スライス種別の交換は、指示情報のみを送受信すればよく、スライス上のデータそのものを送受信する必要がない。そのため、省電力モードへの移行時と同様に、コントロールノード５００の処理の負荷およびネットワーク１０の通信負荷を抑制することができる。
【０１６７】
このような分散ストレージシステムを用いることで、ストレージノード１００，２００，３００，４００へのアクセス負荷が低い時間帯には、半分の数のストレージノードで運用する省電力モードに移行させることができる。また、アクセス負荷が高い時間帯には、全てのストレージノードを用いて運用する通常モードに復帰させることが可能となる。すなわち、省電力化が図れる省電力モードとハードウェア資源を十分に活用した負荷分散が図れる通常モードとを、必要に応じて使い分けることができる。そして、このようなモード切換は、スライス情報および論理ボリュームを更新するだけでよく、データ自体の移動は不要であるため、迅速な切換が可能となる。
【０１６８】
また、上記の分散ストレージシステムでは、省電力モード中にデータの書き込みが行われた場合、停止中のストレージノードとは異なる装置に、書き込み内容を一時的に保持させる。そして、この書き込み内容は、所定のタイミングで、セカンダリスライスに反映される。このため、省電力モードによる運用が長時間にわたっても、データの冗長性が維持され、ストレージシステムの信頼性の低下が防止される。また、データの書き込みがある毎に同期処理が行われるわけではないため、データの書き込みが多い場合でも省電力の効果を維持できる。
【０１６９】
なお、本実施の形態ではストレージノード１００，２００，３００，４００を２つのグループに分割することとしたが、ストレージノードの数がより多い場合にそれらを３つ以上のグループに分割するようにしてもよい。また、本実施の形態では冗長データをコントロールノード５００に格納するようにしたが、ストレージノード１００，２００，３００，４００からアクセス可能な他の装置に格納するようにしてもよい。
【０１７０】
また、本実施の形態ではコントロールノード５００がストレージノード１００，２００，３００，４００を集中管理するようにしたが、管理者が操作する管理ノード３０などの他の装置からコントロールノード５００を経由せずに直接ストレージノード１００，２００，３００，４００に対して各種通知を行うようにし、コントロールノード５００はストレージノード１００，２００，３００，４００からスライス情報の更新結果を取得して論理ボリュームに反映させるようにしてもよい。また、逆に、ストレージノード１００，２００，３００，４００にスライス情報を配置せず、コントロールノード５００がデータの配置状況をよりより集中的に管理するようにしてもよい。
【０１７１】
以上、本発明のストレージ管理プログラム、ストレージ管理装置およびストレージ管理方法を図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や行程が付加されてもよい。また、本発明は前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【０１７２】
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、管理ノード３０、ストレージノード１００，２００，３００，４００、コントロールノード５００およびアクセスノード６００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
【０１７３】
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体には、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ＨＤＤ、フレキシブルディスク（ＦＤ）、磁気テープ（ＭＴ）などがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto - Optical disk）などがある。
【０１７４】
上記プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータに格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１７５】
上記プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラム若しくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１７６】
以上、説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）コンピュータに同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムの管理処理を実行させるストレージ管理プログラムにおいて、
前記コンピュータを、
前記同一内容の複数のデータから、アクセス要求時にアクセス先として使用する主データとバックアップとして使用する副データとを指定し、前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段、
前記複数のストレージノードを少なくとも２つのグループに分割し、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一グループに属さないようにデータの配置先を割り当てるデータ割当手段、
前記データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられている前記主データと当該主データと同一内容の前記副データとの役割を交換する運用モード切換手段、
として機能させることを特徴とするストレージ管理プログラム。
【０１７７】
（付記２）  前記コンピュータを、更に、前記省電力モードへの切換後、前記停止対象のグループに属するストレージノードに割り当てられている前記副データと同一内容の前記主データに対して書き込み要求があると、書き込み内容を所定のデータ記憶手段に記憶させる冗長化管理手段として機能させることを特徴とする付記１記載のストレージ管理プログラム。
【０１７８】
（付記３）  前記冗長化管理手段は、前記所定のデータ記憶手段に記憶された前記書き込み内容の量が所定の閾値を超えると、前記停止対象のグループに属するストレージノードを一時的に稼働させ、前記書き込み内容を前記副データに反映させることを特徴とする付記２記載のストレージ管理プログラム。
【０１７９】
（付記４）  前記運用モード切換手段は、前記省電力モードからの復帰命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記省電力モードへの切換時に交換した前記主データと前記副データとの役割を戻すことを特徴とする付記１記載のストレージ管理プログラム。
【０１８０】
（付記５）  前記管理情報では、データの特定に用いる論理ボリュームのアドレス空間が複数の論理セグメントに分割され、前記論理セグメント単位で前記同一内容の複数のデータが管理されており、
前記運用モード切換手段は、前記論理セグメント単位で前記主データと前記副データとの役割を交換する、
ことを特徴とする付記１記載のストレージ管理プログラム。
【０１８１】
（付記６）  同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムを管理するストレージ管理装置において、
前記同一内容の複数のデータから、アクセス要求時にアクセス先として使用する主データとバックアップとして使用する副データとを指定し、前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報を記憶する管理情報記憶手段と、
前記複数のストレージノードを少なくとも２つのグループに分割し、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一グループに属さないようにデータの配置先を割り当てるデータ割当手段と、
前記データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられている前記主データと当該主データと同一内容の前記副データとの役割を交換する運用モード切換手段と、
を有することを特徴とするストレージ管理装置。
【０１８２】
（付記７）  前記省電力モードへの切換後、前記停止対象のグループに属するストレージノードに割り当てられている前記副データと同一内容の前記主データに対して書き込み要求があると、書き込み内容を所定のデータ記憶手段に記憶させる冗長化管理手段を更に有することを特徴とする付記６記載のストレージ管理装置。
【０１８３】
（付記８）  前記冗長化管理手段は、前記所定のデータ記憶手段に記憶された前記書き込み内容の量が所定の閾値を超えると、前記停止対象のグループに属するストレージノードを一時的に稼働させ、前記書き込み内容を前記副データに反映させることを特徴とする付記７記載のストレージ管理装置。
【０１８４】
（付記９）  前記運用モード切換手段は、前記省電力モードからの復帰命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記省電力モードへの切換時に交換した前記主データと前記副データとの役割を戻すことを特徴とする付記６記載のストレージ管理装置。
【０１８５】
（付記１０）  前記管理情報では、データの特定に用いる論理ボリュームのアドレス空間が複数の論理セグメントに分割され、前記論理セグメント単位で前記同一内容の複数のデータが管理されており、
前記運用モード切換手段は、前記論理セグメント単位で前記主データと前記副データとの役割を交換する、
ことを特徴とする付記６記載のストレージ管理装置。
【０１８６】
（付記１１）  同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置する分散ストレージシステムを管理するストレージ管理方法において、
データ割当手段が、前記複数のストレージノードを少なくとも２つのグループに分割し、前記同一内容の複数のデータからアクセス要求時にアクセス先として使用する主データとバックアップとして使用する副データとを指定し前記主データおよび前記副データそれぞれの配置先のストレージノードを定義した管理情報記憶手段に記憶された管理情報を操作して、前記主データの配置先と当該主データと同一内容の前記副データの配置先とが同一グループに属さないようにデータの配置先を割り当て、
運用モード切換手段が、前記データ割当手段にて定義されたグループの１つを停止させる省電力モードへの切換命令があると、前記管理情報記憶手段に記憶された前記管理情報を操作して、停止対象のグループに属するストレージノードに割り当てられている前記主データと当該主データと同一内容の前記副データとの役割を交換する、
ことを特徴とするストレージ管理方法。
【０１８７】
（付記１２）  前記省電力モードへの切換後、前記停止対象のグループに属するストレージノードに割り当てられている前記副データと同一内容の前記主データに対して書き込み要求があると、冗長化管理手段が、書き込み内容を所定のデータ記憶手段に記憶させることを特徴とする付記１１記載のストレージ管理方法。
【０１８８】
（付記１３）  前記所定のデータ記憶手段に記憶された前記書き込み内容の量が所定の閾値を超えると、前記冗長化管理手段が、前記停止対象のグループに属するストレージノードを一時的に稼働させ、前記書き込み内容を前記副データに反映させることを特徴とする付記１２記載のストレージ管理方法。
【０１８９】
（付記１４）  前記省電力モードへの切換後、前記省電力モードからの復帰命令があると、前記運用モード切換手段が、前記管理情報記憶手段に記憶された前記管理情報を操作して、前記省電力モードへの切換時に交換した前記主データと前記副データとの役割を戻すことを特徴とする付記１１記載のストレージ管理方法。
【０１９０】
（付記１５）  前記管理情報では、データの特定に用いる論理ボリュームのアドレス空間が複数の論理セグメントに分割され、前記論理セグメント単位で前記同一内容の複数のデータが管理されており、
前記運用モード切換手段は、前記論理セグメント単位で前記主データと前記副データとの役割を交換する、
ことを特徴とする付記１１記載のストレージ管理方法。
【図面の簡単な説明】
【０１９１】
【図１】本実施の形態の概要を示す図である。
【図２】本実施の形態のシステム構成を示す図である。
【図３】ストレージノードのハードウェア構成を示す図である。
【図４】コントロールノードのハードウェア構成を示す図である。
【図５】論理ボリュームの第１のデータ構造例を示す図である。
【図６】分散ストレージシステムを構成する各ノードの機能を示すブロック図である。
【図７】スライス情報テーブルのデータ構造を示す図である。
【図８】論理ボリュームテーブルのデータ構造を示す図である。
【図９】冗長データを格納するリングバッファの構造例を示す図である。
【図１０】省電力モードへの移行処理の手順を示すフローチャートである。
【図１１】省電力モードへの移行の流れの具体例を示すシーケンス図である。
【図１２】論理ボリュームの第２のデータ構造例を示す図である。
【図１３】省電力モード時の書き込みの流れの具体例を示すシーケンス図である。
【図１４】冗長データの書き戻し処理の手順を示すフローチャートである。
【図１５】冗長データの書き戻しの流れの具体例を示すシーケンス図である。
【図１６】省電力モードからの復帰処理の手順を示すフローチャートである。
【図１７】省電力モードからの復帰の流れの具体例を示すシーケンス図である。
【符号の説明】
【０１９２】
１  コンピュータ
１ａ  管理情報記憶手段
１ｂ  データ割当手段
１ｃ  運用モード切換手段
１ｄ  電源制御手段
２，３，４，５  ストレージノード
【図１】
0004386932.tif 000002
【図２】
0004386932.tif 000003
【図３】
0004386932.tif 000004
【図４】
0004386932.tif 000005
【図５】
0004386932.tif 000006
【図６】
0004386932.tif 000007
【図７】
0004386932.tif 000008
【図８】
0004386932.tif 000009
【図９】
0004386932.tif 000010
【図１０】
0004386932.tif 000011
【図１１】
0004386932.tif 000012
【図１２】
0004386932.tif 000013
【図１３】
0004386932.tif 000014
【図１４】
0004386932.tif 000015
【図１５】
0004386932.tif 000016
【図１６】
0004386932.tif 000017
【図１７】
0004386932.tif 000018