JP2010277342A - 管理プログラム、管理装置および管理方法 - Google Patents

管理プログラム、管理装置および管理方法 Download PDF

Info

Publication number
JP2010277342A
JP2010277342A JP2009129212A JP2009129212A JP2010277342A JP 2010277342 A JP2010277342 A JP 2010277342A JP 2009129212 A JP2009129212 A JP 2009129212A JP 2009129212 A JP2009129212 A JP 2009129212A JP 2010277342 A JP2010277342 A JP 2010277342A
Authority
JP
Japan
Prior art keywords
data
storage
cache
write
slice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2009129212A
Other languages
English (en)
Inventor
Yoshihiro Tsuchiya
芳浩 土屋
Yasuo Noguchi
泰生 野口
Kazutaka Ogiwara
一隆 荻原
Masatoshi Tamura
雅寿 田村
Tetsutaro Maruyama
哲太郎 丸山
Takashi Watanabe
高志 渡辺
Tatsuo Kumano
達夫 熊野
Kazuichi Oe
和一 大江
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009129212A priority Critical patent/JP2010277342A/ja
Publication of JP2010277342A publication Critical patent/JP2010277342A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】一次記憶装置の記憶領域を効率的に利用すること。
【解決手段】管理手段1bは、データの分散配置を伴う処理要求3に応答し、処理の対象となるデータを格納するための記憶領域1dを一次記憶装置1aに設ける。管理手段1bは、処理要求3に基づく分散配置処理の種別に応じたデータを記憶領域1dに格納する。通信手段1cは、管理手段1bが設けた記憶領域1dに格納されたデータを分散して配置するためにコンピュータ2に送信する。そして、管理手段1bは、分散配置処理の種別に応じたタイミングで記憶領域1dを再利用可能とする。
【選択図】図1

Description

本発明は、ネットワークを介して分散ストレージシステムを管理する管理プログラム、管理装置および管理方法に関する。
現在、コンピュータを用いたデータ処理が広く行われるようになり、データを保存・利用するためのストレージ技術が一層重要となっている。従来、データアクセスの高速化およびデータ保管に対する高信頼化を実現するストレージ技術として、RAID(Redundant Arrays of Independent Disks)が一般的に利用されてきた。RAIDでは、データを必要に応じて分割・複製して、複数のディスク装置に分散して配置する。そして、複数のディスク装置間での負荷分散による高速化、データの冗長管理による高信頼化が実現されている。
ここで、ディスク装置の高速化を図るために、ディスク装置にディスクキャッシュが設けられる。ディスクキャッシュは、例えば磁気ディスクよりも高速にアクセス可能な半導体メモリにより実現される。コンピュータは、ディスク装置に記憶されたデータをディスクキャッシュに配置し、ディスクキャッシュ上のデータにアクセスすることで高速化を図ることができる。
しかし、ディスクキャッシュは高速アクセスが可能な反面、高価であり、利用可能な容量に制限がある。そこで、ディスクキャッシュ上のデータへのヒット率を向上しつつ、キャッシュ容量を効率的に利用する方法が考えられている。例えば、順次アクセス済データをキャッシュメモリから優先的に削除する方法がある。また、ディスクキャッシュを所定容量で区切った区域ごとにアクセス頻度を取得し、アクセス頻度の低い区域から解放する方法がある。更に、アプリケーションプログラム(以下、単にアプリケーションという)のコマンド種別に応じた方法でキャッシュの管理(先読みや解放など)を行うことでアプリケーションの特性にあわせたキャッシュ制御を行う方法がある。
ところで、近年では、RAIDの考え方を応用した分散ストレージシステムが構築されている。分散ストレージシステムは、複数のストレージノードがネットワークを介して接続される。各ストレージノードは、内部でディスク装置を管理すると共に、他のストレージノードとのネットワークを介した通信を行う。複数のストレージノードにデータを分散して配置することで、システム全体として一層の高速化・高信頼化を図ることができる。
例えば、分散ストレージシステムにおけるデータの冗長化では、マスタとして管理される主データの複製である副データを他のストレージノードに配置することが考えられる。このようにすると、主データを記憶するストレージノードに障害が発生しても、他のストレージノードに記憶された副データをバックアップとして利用することができる。
特開平03−097053号公報 国際公開第99/040516号パンフレット 特開2005−309653号公報
ここで、分散ストレージシステムにおいて、データアクセスを行う上位装置の負荷を軽減するために、冗長化の処理をストレージノードの責任で実行することが考えられる。すなわち、ストレージノードが、自ノードで管理する主データに対応する副データの書き込みを、他のストレージノードに指示する。
このような冗長化の処理は、例えば、次のような第1,2の冗長化処理が考えられる。
すなわち、第1の冗長化処理は、主データの書き込みが行われる場合に実行される。この場合、主データの書き込みに応じて、他のストレージノードに主データと同一内容の副データが書き込まれる。
また、第2の冗長化処理は、障害などが原因で、主データを管理するストレージノードと副データを管理するストレージノードとが変更された場合に実行される。この場合、新たに対応付けられたストレージノード同士で、一群の主データと副データとの同期が取られる(冗長化回復)。
ところで、分散ストレージシステムにおいて、データアクセスに対する応答性(書き込みや読み出しの速さなど)を補償するためにディスク装置の前段に一次記憶装置を利用したキャッシュを設けることが考えられる。この場合、ストレージノードはデータの冗長化に際して、ディスク装置に書き込むデータやディスク装置から読み出したデータを一時的にキャッシュに格納する。そして、ストレージノードは、キャッシュから読み出したデータを副データとして他のストレージノードに送信する。
しかし、例えば、オペレーティングシステム(Operating System)で行われるような一般的なキャッシュ処理では、分散ストレージシステムでの処理の都合でキャッシュの寿命や容量などの設定を変更することが困難であった。
特に、データの冗長化処理では、例えば上述した第1,2の冗長化処理では処理の手順や冗長化対象のデータ量が異なる。具体的には、第1の冗長化処理では、自ノードのディスク装置へのデータの書き込みを行うと共に他のストレージノードへの該当データの書き込み指示を行う。一方、第2の冗長化処理では、自ノードのディスク装置から読み出したデータを他のストレージノードに書き込み指示を行うのみである。また、第2の冗長化処理では一群の主データを同期するため、第1の冗長化処理よりも処理対象のデータサイズが大きくなる。
このため、各処理一律の設定でキャッシュ管理を行うと、例えば、第1の冗長化処理では、処理完了後にもキャッシュの寿命が余ってしまい、キャッシュに無駄なデータが保持されるという問題がある。また、例えば、第2の冗長化処理では、先読みを行う場合にも、キャッシュ容量が制限されてディスク装置へのアクセス回数を所定回数までしか低減できないという問題がある。
これらの問題は、キャッシュ容量の不足やディスク装置へのアクセスの頻発化を招き、データアクセスの応答性を損なう要因となる。
本発明はこのような点に鑑みてなされたものであり、一次記憶装置の記憶領域を効率的に利用することが可能な管理プログラム、管理装置および管理方法を提供することを目的とする。
上記課題を解決するために、コンピュータに格納するデータと同一内容の複数のデータをコンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムをコンピュータに管理させる管理プログラムが提供される。この管理プログラムを実行するコンピュータは、管理手段および通信手段として機能する。管理手段は、データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、処理要求に基づく分散配置処理の種別に応じたデータを記憶領域に格納し、分散配置処理の種別に応じたタイミングで記憶領域を再利用可能とする。通信手段は、管理手段が設けた記憶領域に格納されたデータを分散して配置するために他のコンピュータに送信する。
また、上記課題を解決するために上記管理プログラムを実行するコンピュータと同様の機能を有する管理装置が提供される。また、上記管理プログラムにより実現される処理と同様の処理を行う管理方法が提供される。
上記管理プログラム、管理装置および管理方法によれば、一次記憶装置の記憶領域を効率的に利用することができる。
本実施の形態に係るコンピュータの機能を示す図である。 分散ストレージシステムの構成を示す図である。 ストレージノードのハードウェア構成を示す図である。 論理ボリュームの第1のデータ構造例を示す図である。 各ノードの機能構成を示す図である。 キャッシュの構成を示す図である。 各リストのデータ構造例を示す図である。 スライス管理テーブルのデータ構造例を示す図である。 論理ボリューム管理テーブルのデータ構造例を示す図である。 リクエストパケットの構造例を示す図である。 データアクセス処理の手順を示すフローチャートである。 書き込み処理の手順を示すフローチャートである。 副データの書き込み処理の手順を示すフローチャートである。 読み出し処理の手順を示すフローチャートである。 冗長化回復処理の手順を示すフローチャートである。 キャッシュ管理処理の手順を示すフローチャートである。 データの書き込みの流れの具体例を示すシーケンス図である。 副データの書き込みの流れの具体例を示すシーケンス図である。 データの読み出しの流れの具体例を示すシーケンス図である。 論理ボリュームの第2のデータ構造例を示す図である。 冗長化回復の流れの具体例を示すシーケンス図である。
以下、実施の形態を図面を参照して詳細に説明する。
図1は、本実施の形態に係るコンピュータの機能を示す図である。コンピュータ1は、コンピュータ2とネットワークを介して接続される。コンピュータ1は、データの入力を受け付ける。コンピュータ1は、データを主データとして管理する。コンピュータ2は、コンピュータ1が受け付けたデータの複製である副データを記憶する。すなわち、コンピュータ2は、データに関してコンピュータ1のバックアップデータを保持する。
コンピュータ1は、一次記憶装置1a、管理手段1bおよび通信手段1cを有する。
一次記憶装置1aは、HDD(Hard Disk Drive)などの二次記憶装置よりも高速にアクセス可能な記憶装置である。一次記憶装置1aは、例えば、半導体メモリである。
管理手段1bは、データの分散配置を伴う処理要求3に応答し、処理の対象となるデータを格納するための記憶領域1dを一次記憶装置1aに設ける。そして、管理手段1bは、処理要求3に基づく分散配置処理の種別に応じたデータを記憶領域1dに格納する。ここで、分散配置処理の種別とは、例えば書き込みデータの多重書き込み処理や、障害発生時の冗長化回復処理などである。管理手段1bは、例えば処理要求3がデータの書き込みを要求するものである場合、処理要求3に含まれるデータを記憶領域1dに格納する。また、管理手段1bは、例えば処理要求3がデータの読み出しを要求するものである場合、二次記憶装置から読み出し対象のデータを取得して、記憶領域1dに格納する。
そして、管理手段1bは、分散配置処理の種別に応じたタイミングで記憶領域1dを再利用可能とする。
通信手段1cは、記憶領域1dに格納されたデータを副データとしてコンピュータ2に送信する。
コンピュータ1によれば、管理手段1bにより、処理要求3に応答し、処理の対象となるデータを格納するための記憶領域1dが一次記憶装置1aに設けられる。管理手段1bにより、処理要求3に基づく分散配置処理の種別に応じたデータが記憶領域1dに格納される。通信手段1cにより、記憶領域1dに格納されたデータが副データとしてコンピュータ2に送信される。そして、管理手段1bにより、分散配置処理の種別に応じたタイミングで記憶領域1dが再利用可能とされる。
これにより、一次記憶装置1aの記憶領域を効率的に利用することが可能となる。具体的には、コンピュータ1は、処理要求3で要求される処理の内容に応じて、記憶領域1dを解放して再利用可能とするタイミングを変更する。例えば、処理要求3がデータ書き込み要求である場合には、管理手段1bは、コンピュータ2への副データの送信と二次記憶装置へのデータの格納とが完了したタイミングで記憶領域1dを再利用可能とすることが考えられる。また、例えば、処理要求3が冗長化回復処理の要求である場合には、管理手段1bは、書き込み要求である場合よりも容量を多く確保して記憶領域1dを設け、最終アクセス時間が古いなどの条件により記憶領域1dを再利用可能とすることが考えられる。
このように、コンピュータ1では、コンピュータ2に副データを送信する複数の場合に応じて効率的に一次記憶装置1aを利用することができる。その結果、二次記憶装置へのアクセス頻度を低減することが可能となり、コンピュータ1のデータアクセスの応答性を向上することができる。
ところで、コンピュータ1は、分散ストレージシステムにおいてデータを管理するストレージノードに適用できる。ストレージノードは、一時的に多量のデータ書き込みを受け付けることも考えられ、コンピュータ1の機能が特に有用となる。以下、コンピュータ1を分散ストレージシステムに適用する場合を例に採り、更に具体的に説明する。
図2は、分散ストレージシステムの構成を示す図である。分散ストレージシステムは、同一内容の複数のデータをネットワークで接続された複数のストレージノードに分散して配置することで、信頼性と処理性能とを向上させたストレージシステムである。
この分散ストレージシステムでは、ストレージノード100,200,300,400、コントロールノード500、アクセスノード600および管理ノード30がネットワーク10を介して相互に接続されている。また、端末装置21,22,23が、ネットワーク20を介してアクセスノード600に接続されている。
ストレージノード100,200,300,400には、それぞれストレージ装置110,210,310,410が接続されている。ストレージノード100,200,300,400は、接続されたストレージ装置110,210,310,410に格納されたデータを管理し、管理しているデータをネットワーク10経由でアクセスノード600に提供する。また、ストレージノード100,200,300,400は、データに冗長性をもたせて管理している。すなわち、同一内容のデータが、少なくとも2つのストレージノードで管理されている。このようにデータを冗長化させて管理することで、高信頼化を図っている。
コントロールノード500は、ストレージノード100,200,300,400を管理する。具体的には、コントロールノード500は、データの配置状況を示す論理ボリューム情報を保持している。コントロールノード500は、ストレージノード100,200,300,400からデータの管理に関する情報を取得し、必要に応じて論理ボリュームを更新する。また、コントロールノード500は、論理ボリュームが更新されると、その影響を受けるストレージノードに対して更新内容を通知する。論理ボリュームの詳細は、後述する。
アクセスノード600は、端末装置21,22,23に対して、ストレージノード100,200,300,400が管理するデータを利用した情報処理のサービスを提供する。すなわち、アクセスノード600は、端末装置21,22,23からの要求に応答して所定のプログラムを実行し、必要に応じてストレージノード100,200,300,400にアクセスする。ここで、アクセスノード600は、コントロールノード500から論理ボリューム情報を取得し、取得した論理ボリュームに基づいてアクセスすべきストレージノードを特定する。
管理ノード30は、分散ストレージシステムの管理者が操作する端末装置である。分散ストレージシステムの管理者は、管理ノード30を操作して、ストレージノード100,200,300,400、コントロールノード500およびアクセスノード600にアクセスし、運用に必要な各種設定を行うことができる。
図3は、ストレージノードのハードウェア構成を示す図である。ストレージノード100は、CPU(Central Processing Unit)101、RAM(Random Access Memory)102、HDDインタフェース103、グラフィック処理装置104、入力インタフェース105および通信インタフェース106を有する。
CPU101は、ストレージノード100全体の動作を制御する。
RAM102は、CPU101に実行させるOSのプログラムやアプリケーションソフトウェア(以下、アプリケーションという)のプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、CPU101による処理に必要な各種データを記憶する。
HDDインタフェース103は、ストレージ装置110と接続される。HDDインタフェース103は、ストレージ装置110に内蔵されたRAIDコントローラ115と通信し、ストレージ装置110に対するデータの入出力を行う。
ストレージ装置110には、ハードディスク装置111,112,113,114が設けられている。ストレージ装置110は、HDD111,112,113,114を用いたRAIDシステムである。RAIDコントローラ115は、例えばRAID5の機能を有し、HDD111,112,113,114を所定の単位で束ねた記憶装置として管理する。ストレージ装置110は、OSのプログラム、アプリケーションのプログラムを記憶する。OSのプログラム、アプリケーションのプログラムは、例えばストレージノード100に別個に設けられた他の記憶装置に格納されてもよい。また、ストレージ装置110は、アクセスノード600が扱うデータを記憶する。
グラフィック処理装置104は、モニタ11と接続される。グラフィック処理装置104は、CPU101からの命令に従って画像をモニタ11の画面に表示させる。
入力インタフェース105は、キーボード12とマウス13と接続される。入力インタフェース105は、キーボード12やマウス13から送られてくる信号をCPU101に送信する。
通信インタフェース106は、ネットワーク10と接続され、ストレージノード200,300,400、コントロールノード500やアクセスノード600とのデータの送受信を行う。
なお、ストレージノード200,300,400、コントロールノード500、アクセスノード600、管理ノード30および端末装置21,22,23についてもストレージノード100と同様のハードウェア構成により実現できる。ただし、アクセスノード600は、ネットワーク10と接続するための通信インタフェースに加えて、ネットワーク20と接続するための通信インタフェースを更に備えている。また、コントロールノード500、アクセスノード600、管理ノード30および端末装置21,22,23は、HDDインタフェース103の代わりにHDDやSSD(Solid State Drive)などを備えている。
次に、コントロールノード500がアクセスノード600に対して提供する論理ボリュームについて説明する。論理ボリュームは、ストレージノード200,300,400によって分散管理されているデータを、アクセスノード600から容易に利用できるようにするための仮想的なボリュームである。
図4は、論理ボリュームの第1のデータ構造例を示す図である。論理ボリューム700には、“VV−A”という論理ボリュームIDが付与されている。また、ストレージノード100,200,300,400には、それぞれ“SN−A”,“SN−B”,“SN−C”,“SN−D”というノードIDが付与されている。
ストレージノード100,200,300,400に接続されたストレージ装置110,210,310,410それぞれにおいて、例えばRAID5の論理ディスクが構成されている。この論理ディスクは6つのスライスに分割されて、各ストレージノード内で一元的に管理されている。
ストレージ装置110内の記憶領域は、6つのスライス121〜126に分割されている。ストレージ装置210内の記憶領域は、6つのスライス221〜226に分割されている。ストレージ装置310内の記憶領域は、6つのスライス321〜326に分割されている。ストレージ装置410内の記憶領域は、6つのスライス421〜426に分割されている。
論理ボリューム700は、セグメント710,720,730,740,750,760という単位で構成される。セグメント710,720,730,740,750,760は、プライマリスライス711,721,731,741,751,761とセカンダリスライス712,722,732,742,752,762との組で構成される。
図4では、スライスIDを“P”または“S”のアルファベットと数字との組み合わせで示している。“P”はプライマリスライス(主データを格納するためのスライス)であることを示している。“S”はセカンダリスライス(副データを格納するためのスライス)であることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば1番目のセグメント710のプライマリスライス711が“P1”で示され、セカンダリスライスが“S1”で示される。そして、“P1”と“S1”のスライスには、同一のデータが格納され、データの冗長化が図られる。
このような構造の論理ボリューム700の各プライマリスライスおよびセカンダリスライスが、ストレージ装置110,210,310,410内の何れかのスライスに対応付けられる。例えば、セグメント710のプライマリスライス711がストレージ装置110のスライス121に対応付けられ、セカンダリスライス712がストレージ装置310のスライス322に対応付けられる。
そして、ストレージ装置110,210,310,410には、自己のスライスに対応付けられたプライマリスライスまたはセカンダリスライスのデータが格納される。なお、論理ボリュームは、データの用途やアクセス元の権限などに応じて、複数作成することができる。論理ボリューム情報に現れないスライスはアクセスノード600から認識することができないため、論理ボリュームを使い分けることはセキュリティの向上にも寄与する。
図5は、各ノードの機能構成を示す図である。ストレージノード100は、キャッシュ130、制御情報記憶部140、データアクセス受付部150、データアクセス制御部160、キャッシュ管理部170、ディスクアクセス部180、冗長化処理部190およびスライス管理部195を有する。
キャッシュ130は、ストレージノード100のデータの書き込み処理や読み出し処理などの際に、該当のデータを一時的に格納するためのメモリ領域である。キャッシュ130は、RAM102上に設けられ、ストレージ装置110に記憶されたデータが配置される。
制御情報記憶部140は、キャッシュ130の利用状況を管理するための管理情報を記憶する。管理情報としては、例えば、LRU(Least Recently Used)を管理するための情報が考えられる。また、制御情報記憶部140には、ストレージ装置110が有するスライスについてのスライス情報が格納される。スライス情報には、スライスを特定するためのアドレスやスライスへの割り当ての種別(プライマリスライスまたはセカンダリスライスの何れか)などが含まれる。また、各スライスについて、同一セグメントに属する対応するスライスを管理しているストレージノードを特定するための情報も含まれる。
データアクセス受付部150は、アクセスノード600からのアクセス要求やコントロールノード500からの冗長化回復処理の要求を受け付けると、受け付けた要求をデータアクセス制御部160に出力する。データアクセス受付部150が受け付ける要求には、ストレージノード200,300,400からの副データの書き込み要求も含まれる。また、データアクセス受付部150は、データアクセス制御部160からデータを受け付けた旨の通知や読み出したデータを受け付けると、受け付けた情報をアクセスノード600に送信する。
なお、冗長化回復処理は、プライマリスライスとセカンダリスライスとの同期を取るための処理である。例えば、ストレージノード200が障害によって通信不能となった場合には、ストレージノード100,300,400がストレージノード200に記憶されていたプライマリスライスとセカンダリスライスとの役割を引き継ぐ。この場合、コントロールノード500からの指示によりストレージノード100,300,400の間で冗長化回復処理が実行される。
データアクセス制御部160は、データアクセス受付部150から受け付けたアクセス要求や冗長化回復処理の要求に応じて、以下の処理を行う。
(1)書き込み処理
データアクセス制御部160は、アドレスを指定したデータの書き込み要求(Write要求)を受け付けると、Write要求に含まれる書き込み対象のデータ(以下、書き込みデータという)とアドレスとをキャッシュ管理部170に出力する。そして、データアクセス制御部160は、Write要求の受付応答をデータアクセス受付部150に出力する。そして、データアクセス制御部160は、所定のタイミングでキャッシュ管理部170から書き込みデータを取得し、ディスクアクセス部180にストレージ装置110への該当のデータの格納を指示する。なお、ストレージノード200,300,400から受け付ける副データの書き込み要求に対しても、この書き込み処理が行われる。
(2)読み出し処理
データアクセス制御部160は、アドレスを指定したデータの読み出し要求(Read要求)を受け付けると、Read要求に含まれる読み出し対象のデータ(以下、読み出しデータという)がキャッシュ130から取得可能であるか否かをキャッシュ管理部170に確認する。データアクセス制御部160は、キャッシュ130から取得可能である場合、キャッシュ管理部170を介して読み出しデータを取得しデータアクセス受付部150に出力する。データアクセス制御部160は、キャッシュ130から取得不可能である場合、ディスクアクセス部180を介してストレージ装置110から読み出しデータを取得し、データアクセス受付部150に出力する。なお、データアクセス制御部160は、Read要求で指定された読み出しデータに応じてストレージ装置110から次にRead要求を受け付ける先読み対象のデータ(以下、先読みデータという)を取得して、キャッシュ管理部170に出力する。
(3)冗長化回復処理
データアクセス制御部160は、冗長化回復処理の要求を受け付けると、ディスクアクセス部180を介してストレージ装置110から該当のスライスのデータ(以下、冗長化スライスデータという)の一部を取得し、キャッシュ管理部170に出力する。その後、データアクセス制御部160は、キャッシュ130の空き容量に応じてストレージ装置110から残りのデータを順次先読みし、キャッシュ管理部170に出力する。
キャッシュ管理部170は、キャッシュ130に対するデータの入出力を管理する。また、キャッシュ管理部170は、キャッシュ130のキャッシュ容量を管理し、必要に応じてキャッシュ130のメモリ領域を解放する。
また、データアクセス制御部160は、Write要求で指定されたアドレスが属するスライスがプライマリスライスである場合、セカンダリスライスを管理するストレージノードに対して、副データの書き込みを行う旨を送信するよう冗長化処理部190に指示する。
キャッシュ管理部170は、データアクセス制御部160から取得した書き込みデータをキャッシュ130に格納する。キャッシュ管理部170は、書き込みデータのストレージ装置110上の書き込み対象アドレスや、キャッシュ130上のアドレスを管理するため書き込みリストを設定して、制御情報記憶部140に格納する。
また、キャッシュ管理部170は、データアクセス制御部160から取得した読み出し要求に応じた読み出しデータをキャッシュ130から抽出してデータアクセス制御部160に出力する。キャッシュ管理部170は、該当の読み出しデータをキャッシュ130から抽出できなかった場合には、その旨をデータアクセス制御部160に通知する。
キャッシュ管理部170は、データアクセス制御部160から先読みデータを取得した場合、取得した先読みデータをキャッシュ130に格納する。そして、キャッシュ管理部170は、先読みデータのストレージ装置110上のアドレスや、キャッシュ130上のアドレスを管理するための読み出しリストを設定して、制御情報記憶部140に格納する。
また、キャッシュ管理部170は、冗長化回復処理に伴ってデータアクセス制御部160から冗長化スライスデータを受け付けると、受け付けた冗長化スライスデータをキャッシュ130に格納する。キャッシュ管理部170は、データを格納したアドレスを管理するための冗長化処理用リストを設定して、制御情報記憶部140に格納する。更に、キャッシュ管理部170は、冗長化スライスデータをキャッシュ130から順次読み出して、冗長化処理部190に出力する。
更に、キャッシュ管理部170は、キャッシュ130の使用量を定期的に監視し、必要に応じてキャッシュ130に格納されているデータを削除し、該当のデータが格納されていた領域を再利用可能とする。
ディスクアクセス部180は、データアクセス制御部160から取得する書き込みデータをストレージ装置110に格納する。また、ディスクアクセス部180は、データアクセス制御部160の指示に応じて、ストレージ装置110から読み出しデータを取得し、データアクセス制御部160に出力する。
冗長化処理部190は、ストレージノード200,300,400に対する副データの書き込み指示を行う。例えば、冗長化処理部190は、ストレージノード100が管理するプライマリスライスにWrite要求があると、データアクセス制御部160からセカンダリ側のストレージノードに対する副データの書き込み要求を受け付ける。そして、冗長化処理部190は、この要求を受け付けると、該当のプライマリスライスに対応するセカンダリスライスを管理するストレージノードにも書き込みデータと同一のデータ(副データ)の書き込みを行うよう指示する。
スライス管理部195は、ストレージノード100の稼動状態を定期的にコントロールノード500に通知する。スライス管理部195は、コントロールノード500からスライス情報の取得要求があると、制御情報記憶部140に記憶されたスライス情報をコントロールノード500に送信する。スライス管理部195は、コントロールノード500からスライス情報の更新の指示を受け付けると、指示された更新内容を、制御情報記憶部140に記憶されたスライス情報に反映させる。
なお、ストレージノード200,300,400に関しても、ストレージノード100と同一の機能構成により実現できる。
コントロールノード500は、スライス情報群記憶部510および論理ボリューム管理部520を有する。
スライス情報群記憶部510には、ストレージノード100,200,300,400が管理するスライス情報が格納される。スライス情報群記憶部510に格納されるスライス情報は、ストレージノード100,200,300,400が保持している情報を収集したものである。
論理ボリューム管理部520は、ストレージノード100,200,300,400から稼働状態を示す通知をネットワーク10経由で受信する。これにより、論理ボリューム管理部520は、各ストレージノードが正常に稼働しているか否かを知る。また、論理ボリューム管理部520は、必要に応じてストレージノード100,200,300,400からスライス情報を取得し、スライス情報群記憶部510に格納されたスライス情報を更新する。また、論理ボリューム管理部520は、スライス情報群記憶部510のスライス情報に基づいて、アクセスノード600に格納される論理ボリュームを作成する。
また、論理ボリューム管理部520は、ストレージノード100,200,300,400の何れかで障害が発生した場合、スライス情報および論理ボリューム情報を更新する。例えば、論理ボリューム管理部520は、セカンダリスライスをプライマリスライスに変更する。また、変更後のプライマリスライスに対応するセカンダリスライスを稼動中のストレージノードの空きスライスから特定する。そして、論理ボリューム管理部520は、特定したスライスをセカンダリスライスに割り当て、スライス情報および論理ボリューム情報を更新する。論理ボリューム管理部520は、稼動中のストレージノードに対して更新後のスライス構成となるよう変更を促す。すなわち、論理ボリューム管理部520は、ストレージノード100,200,300,400に対して冗長化回復処理の要求を送信する。
アクセスノード600は、論理ボリューム記憶部610とデータアクセス制御部620を有する。
論理ボリューム記憶部610には、論理ボリューム情報が格納される。論理ボリュームでは、ストレージ装置110,210,310,410が管理する記憶領域を一元的に扱うために、仮想的なアドレスである論理アドレスによって各セグメントが管理されている。論理ボリューム情報には、セグメントを特定するための論理アドレスやセグメントに属するプライマリスライスおよびセカンダリスライスを特定するための情報が含まれる。論理ボリュームは、コントロールノード500によって作成され、更新される。
データアクセス制御部620は、実行中のプログラムからデータへのアクセス要求があると、まず論理ボリューム記憶部610に論理ボリューム情報が格納されているか否か確認する。論理ボリューム情報が格納されていない場合、データアクセス制御部620は、コントロールノード500から論理ボリューム情報を取得し、取得した論理ボリューム情報を論理ボリューム記憶部610に格納する。
そして、データアクセス制御部620は、論理ボリューム情報に基づいてアクセス先となるストレージノードを特定する。すなわち、利用するデータが属するセグメントを特定し、特定したセグメントのプライマリスライスを管理するストレージノードを特定する。その後、データアクセス制御部620は、特定したストレージノードにアクセスする。
ここで、アクセスに失敗した場合、コントロールノード500から論理ボリューム情報を取得した後にデータの配置状況が変化したことが考えられるため、データアクセス制御部620は、コントロールノード500から最新の論理ボリューム情報を取得して、再びストレージノードへのアクセスを試みる。
図6は、キャッシュの構成を示す図である。キャッシュ130には、必要に応じて書き込みキャッシュ131、読み出しキャッシュ132および冗長化回復処理用キャッシュ133が設けられる。
書き込みキャッシュ131は、書き込みデータを格納するためのキャッシュである。
読み出しキャッシュ132は、先読みデータを格納するためのキャッシュである。
冗長化回復処理用キャッシュ133は、冗長化スライスデータを格納するためのキャッシュである。
キャッシュ管理部170は、RAM102上にキャッシュ130を設ける。なお、OSを介してキャッシュ130のデータをストレージ装置110に格納する処理は、例えば、ダイレクトIO(Input / Output)の手法により実行される。
図7は、各リストのデータ構造例を示す図である。キャッシュ管理用リスト141は、制御情報記憶部140に格納される。キャッシュ管理用リスト141には、書き込みリスト141a、読み出しリスト141bおよび冗長化回復処理用リスト141cが含まれる。キャッシュ管理用リスト141は、キャッシュ管理部170により設定され、制御情報記憶部140に格納される。
書き込みリスト141aは、書き込みデータのストレージ装置110における書き込み対象アドレスと書き込みキャッシュ131におけるアドレスとを管理するための管理情報である。書き込みリスト141aには、ノードL1,L2,・・・,Lnが設けられる。
ノードL1は、先頭のノードであり、最も新しくWrite要求を受け付けた書き込みデータAに関する情報を示している。ノードLnは、最後尾のノードであり、最も過去にWrite要求を受け付けた書き込みデータNに関する情報を示している。ノードL1,L2,・・・,Lnには、各書き込みデータのストレージ装置110への書き込み対象アドレスと、キャッシュ130の書き込みアドレスと、を示す情報が設定される。また、ノードL1,L2,・・・,Lnには、リストの次のノードを示すポインタが設定される。
読み出しリスト141bおよび冗長化回復処理用リスト141cも、書き込みリスト141aと同様のデータ構造により実現できる。
ただし、読み出しリスト141bでは、各先読みデータについてのストレージ装置110におけるアドレスと読み出しキャッシュ132におけるアドレスとを管理するための情報が設定される。読み出しリスト141bでは、最も新しく登録された、または、アクセスのあった先読みデータがリストの先頭に設定される。したがって、読み出しリスト141bの最後尾側に向かうほど、アクセス時が過去になる。すなわち、読み出しリスト141bの最後尾に設定されている先読みデータは、最後のアクセス時から最も長時間が経過しているデータとなる。
また、冗長化回復処理用リスト141cでは、冗長化スライスデータについてのストレージ装置110におけるアドレスと冗長化回復処理用キャッシュ133におけるアドレスとを管理するための情報が設定される。冗長化回復処理用リスト141cでは、最も新しく登録された冗長化スライスデータがリストの先頭に設定される。したがって、冗長化回復処理用リスト141cの最後尾側に向かうほど、過去に登録されたものとなる。すなわち、冗長化回復処理用リスト141cの最後尾に設定されている冗長化スライスデータは、最後のアクセス時から最も長時間が経過しているデータとなる。
図8は、スライス管理テーブルのデータ構造例を示す図である。スライス管理テーブル142は、制御情報記憶部140に格納される。スライス管理テーブル142には、ストレージノード100のノードID“SN−A”が設定されている。
また、スライス管理テーブル142には、スライスIDを示す項目、実アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ボリュームIDを示す項目、セグメントIDを示す項目、リンクを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられて、1つのスライスについてのスライス情報を示す。
スライスIDを示す項目には、スライスIDが設定される。実アドレスを示す項目には、スライスの先頭ブロックを示す物理的なアドレスが設定される。ブロック数を示す項目には、スライスに含まれるブロックの数が設定される。種別を示す項目には、“P”,“S”,“F”の何れかの値が設定される。“P”はプライマリスライスを意味し、“S”はセカンダリスライスを意味し、“F”はセグメントが対応付けられてないこと(フリー)を意味する。ボリュームIDを示す項目には、スライスに対応付けられたセグメントが属する論理ボリュームの論理ボリュームIDが設定される。セグメントIDを示す項目には、スライスに対応付けられたセグメントのセグメントIDが設定される。
リンクを示す項目には、種別が“P”であるスライスについては、対応するセカンダリスライスが配置されたストレージノードのストレージノードIDとスライスIDとが設定される。また、種別が“S”であるスライスについては、対応するプライマリスライスが配置されたストレージノードのストレージノードIDとスライスIDとが設定される。
スライス管理テーブル142に格納されるスライス情報は、スライス管理部195によって適宜更新される。また、コントロールノード500のスライス情報群記憶部510にも、同様のテーブルが格納される。
スライス管理テーブル142には、例えば、スライスIDが“1”、実アドレスが“0”、ブロック数が“1024”、種別が“P”、ボリュームIDが“VV−1”、セグメントIDが“1”、リンクが“SN−C,2”という情報が格納される。
これは、ストレージノード100が管理する0ブロックから1023ブロックまでの記憶領域が1つのスライスを形成しており、論理ボリューム“VV−1”の1番目のセグメントのプライマリスライスが割り当てられていることを示している。また、そのプライマリスライスに対応するセカンダリスライスが、ストレージノード“SN−C”の2番目のスライスに割り当てられていることを示している。
図9は、論理ボリューム管理テーブルのデータ構造例を示す図である。論理ボリューム管理テーブル611は、論理ボリューム記憶部610に格納される。論理ボリューム管理テーブル611は、論理ボリューム“VV−1”についてのテーブルである。
論理ボリューム管理テーブル611には、セグメントIDを示す項目、論理アドレスを示す項目、ブロック数を示す項目、種別を示す項目、ノードIDを示す項目および実アドレスを示す項目が設けられている。各項目の横方向に並べられた情報同士が互いに関連付けられている。
セグメントIDを示す項目には、セグメントを識別するセグメントIDが設定される。論理アドレスを示す項目には、セグメントの先頭ブロックを示す論理ボリューム上の仮想的なアドレスが設定される。ブロック数を示す項目には、セグメントに含まれるブロックの数が設定される。
種別を示す項目には、“P”または“S”の何れかの値が設定される。ノードIDを示す項目には、割り当て先のストレージノードを識別するノードIDが設定される。実アドレスを示す項目には、割り当て先のスライスの先頭ブロックを示す物理的なアドレスが設定される。
論理ボリューム管理テーブル611に格納される情報は、コントロールノード500のスライス情報群記憶部510に格納されたスライス情報に基づいて、論理ボリューム管理部520によって生成される。
図10は、リクエストパケットの構造例を示す図である。リクエストパケット900は、コントロールノード500およびアクセスノード600により生成され、ストレージノード100,200,300,400に送信される。
アクセスノード600は、例えば、アクセスノード600で実行されるアプリケーションの処理に応じて、リクエストパケット900を用いてWrite要求またはRead要求を生成する。そして、アクセスノード600は、生成したWrite要求またはRead要求をストレージノード100,200,300,400に送信する。
また、コントロールノード500は、例えば、ストレージノード100,200,300,400の何れかが通信不能となった場合、論理ボリューム700におけるプライマリスライスとセカンダリスライスとの割り当てを変更する。コントロールノード500は、変更結果への反映を促す冗長化回復要求をリクエストパケット900を用いて生成し、稼動中のストレージノードに送信する。
リクエストパケット900は、ヘッダ部910およびデータ部920を有する。
ヘッダ部910には、領域911,912,913が含まれている。
領域911には、プロセス種別を示す情報が設定される。プロセス種別を示す情報とは、例えば、Write要求、Read要求および冗長化回復要求などを示す情報である。
領域912には、対象アドレスを示す情報が設定される。対象アドレスとは、例えばストレージノード100に対するWrite要求であれば、ストレージ装置110における書き込みデータの書き込み対象アドレスを示す情報である。また、ストレージノード100に対するRead要求であれば、ストレージノード110における読み出しデータの読み出し対象アドレスを示す情報である。
領域913には、データサイズを示す情報が設定される。データサイズを示す情報とは、データ部920に設定されたデータのデータ量を示す情報である。
データ部920には、領域911に格納された内容に応じたデータが設定される。例えば、領域911にWrite要求を示す情報が設定される場合、データ部920には、書き込みデータが設定される。また、例えば、領域911に冗長化回復要求を示す情報が設定される場合、データ部920には、冗長化回復処理の対象とするスライスを示す情報が設定される。
次に、以上のような構成およびデータ構造のストレージノード100,200,300,400において実行される処理の詳細を説明する。なお、以下では、ストレージノード100の構成により説明するが、ストレージノード200,300,400に関しても同様の処理となる。
図11は、データアクセス処理の手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
[ステップS11]データアクセス受付部150は、コントロールノード500またはアクセスノード600からリクエストパケット900を受け付ける。
[ステップS12]データアクセス受付部150は、リクエストパケット900の領域911のプロセス種別がWrite要求を示す情報であるか否かを判定する。Write要求を示す情報である場合、処理がステップS13に移される。Write要求を示す情報でない場合、処理がステップS14に移される。
[ステップS13]データアクセス制御部160は、Write要求に含まれる書き込みデータの書き込み処理を実行する。
[ステップS14]データアクセス受付部150は、リクエストパケット900の領域911のプロセス種別がRead要求を示す情報であるか否かを判定する。Read要求を示す情報である場合、処理がステップS15に移される。Read要求を示す情報でない場合、処理がステップS16に移される。
[ステップS15]データアクセス制御部160は、Read要求で指定される読み出しデータの読み出し処理を実行する。
[ステップS16]データアクセス受付部150は、リクエストパケット900の領域911のプロセス種別が冗長化回復要求を示す情報であるか否かを判定する。冗長化回復要求を示す情報である場合、処理がステップS17に移される。冗長化回復要求を示す情報でない場合、処理が完了する。
[ステップS17]データアクセス制御部160は、冗長化回復要求に応じて冗長化回復処理を実行する。
このように、ストレージノード100は、受け付けたリクエストに応じて、書き込み処理、読み出し処理および冗長化回復処理などを実行する。
なお、各リクエストに応じて、キャッシュ130の利用方法が異なる。以下では、各リクエストに応じた処理の手順を詳細に説明する。
まず、上記ステップS13の書き込み処理を説明する。
図12は、書き込み処理の手順を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図11のステップS13の処理を詳細に示すものである。
[ステップS21]データアクセス受付部150は、アクセスノード600から受信したWrite要求を取得し、データアクセス制御部160に出力する。データアクセス制御部160は、取得したWrite要求をキャッシュ管理部170に出力する。
[ステップS22]キャッシュ管理部170は、取得したWrite要求に含まれる書き込みデータを書き込みキャッシュ131に格納する。そして、キャッシュ管理部170は、Write要求に含まれるストレージノード110の書き込み対象アドレスと書き込みキャッシュ131に実際に書き込んだアドレスとを該当の書き込みデータの管理情報として書き込みリスト141aに設定する。このとき、キャッシュ管理部170は、該当のデータを書き込みリスト141aの先頭に配置する。
[ステップS23]キャッシュ管理部170および冗長化処理部190は、上記ステップS22でキャッシュに格納した書き込みデータに対する副データの他のストレージノードへの書き込み処理を指示する。すなわち、冗長化処理部190は、キャッシュ管理部170から副データと副データを送信すべきストレージノードを特定する情報(例えば、IP(Internet Protocol)アドレス)とを取得し、該当のストレージノードに副データの書き込みを指示する。該当のストレージノード(プライマリスライスに対応するセカンダリスライスを管理するストレージノード)は、この指示に応じて副データの書き込み処理を実行する。
[ステップS24]冗長化処理部190は、セカンダリスライスを管理するストレージノードから副データの受信応答を受け付ける。冗長化処理部190は、受信応答を受け付けた旨をキャッシュ管理部170に通知する。
[ステップS25]キャッシュ管理部170は、書き込みキャッシュ131への書き込みデータの書き込みが完了したことをデータアクセス制御部160を介してデータアクセス受付部150に通知する。データアクセス受付部150は、書き込みの完了を示す書き込み完了応答をアクセスノード600に送信する。
[ステップS26]キャッシュ管理部170は、該当の副データに対応する主データを書き込みキャッシュ131から読み出す。そして、キャッシュ管理部170は、制御情報記憶部140に記憶された書き込みリスト141aを参照して、主データのストレージ装置110に対する書き込み対象のアドレスを特定する。キャッシュ管理部170は、特定した書き込み対象のアドレスを指定して、読み出した主データをデータアクセス制御部160に出力する。データアクセス制御部160は、ストレージ装置110の指定されたアドレスへの主データの書き込みをディスクアクセス部180に指示する。ディスクアクセス部180は、ストレージ装置110への主データの書き込みを実行する。
[ステップS27]キャッシュ管理部170は、上記ステップS26で読み出した主データを記憶していた書き込みキャッシュ131上の領域を再利用可能とする。
[ステップS28]キャッシュ管理部170は、上記ステップS26で読み出した主データに関する管理情報を書き込みリスト141aから削除する。
このように、ストレージノード100は、書き込みデータを書き込みキャッシュ131に格納した後、セカンダリスライスを管理する他のストレージノードに副データの書き込みを指示する。また、ストレージノード100は、書き込みキャッシュ131から読み出した書き込みデータをストレージ装置110に格納する。そして、ストレージノード100は、副データの送信に対して他のストレージノードから受信応答を受け付け、かつ、対応する主データのストレージ装置110への格納が完了すると、書き込みキャッシュ131の該当の書き込みデータを記憶していた領域を再利用可能とする。
なお、ストレージノード100がストレージ装置110に主データを格納するタイミングは、任意に設定することができる。例えば、ストレージ装置110に対する負荷を監視して、負荷が小さいときにストレージ装置110への主データの書き込みを実行することが考えられる。また、所定の周期でストレージ装置110への主データの書き込みを実行することが考えられる。このようにすると、ストレージ装置110へのデータアクセスの頻度が低減されるので、ストレージノード100のデータアクセスに対する応答性を向上することができる。
また、アクセスノード600に対する応答性を高めるために、ステップS25の書き込み完了応答の処理をステップS22の後に行うようにすることも考えられる。
次に、上記ステップS23の処理を説明する。ここで、以下ではストレージノード100の構成を用いて説明するが、ストレージノード200,300,400でも同様の処理となる。
図13は、副データの書き込み処理の手順を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図13のステップS23の処理を詳細に示すものである。
[ステップS31]データアクセス受付部150は、プライマリスライスを管理する他のストレージノードから、自ノードのセカンダリスライスに対する副データの書き込み要求を受信する。データアクセス受付部150は、受信した書き込み要求を取得し、データアクセス制御部160に出力する。データアクセス制御部160は、取得した書き込み要求をキャッシュ管理部170に出力する。
[ステップS32]キャッシュ管理部170は、書き込み要求に含まれる副データを書き込みキャッシュ131に格納する。また、キャッシュ管理部170は、書き込み要求で指定されるストレージ装置110の書き込み対象アドレスと、書き込みキャッシュ131の副データを格納したアドレスとを取得し、これらを該当の副データの管理情報として書き込みリスト141aに設定する。
[ステップS33]データアクセス受付部150は、書き込み要求の送信元のストレージノードに、副データの受け付けが完了した旨を示す受付応答を送信する。
[ステップS34]キャッシュ管理部170は、受信した副データを書き込みキャッシュ131から読み出す。そして、キャッシュ管理部170は、制御情報記憶部140に記憶された書き込みリスト141aを参照して、副データのストレージ装置110に対する書き込み対象のアドレスを特定する。キャッシュ管理部170は、特定した書き込み対象のアドレスを指定して、読み出した副データをデータアクセス制御部160に出力する。データアクセス制御部160は、ストレージ装置110の指定されたアドレスへの副データの書き込みをディスクアクセス部180に指示する。ディスクアクセス部180は、ストレージ装置110への副データの書き込みを実行する。
[ステップS35]キャッシュ管理部170は、上記ステップS34で読み出した副データを記憶していた書き込みキャッシュ131上の領域を再利用可能とする。
[ステップS36]キャッシュ管理部170は、上記ステップS34で読み出した副データに関する管理情報を書き込みリスト141aから削除する。
このように、ストレージノード100は、副データの書き込み要求を受け付けると、書き込みキャッシュ131に副データを格納した後、プライマリスライスを管理する他のストレージノードに副データの受付応答を送信する。そして、ストレージノード100は、書き込みキャッシュ131から読み出した書き込みデータをストレージ装置110に格納する。その後、ストレージノード100は、書き込みキャッシュ131の該当の副データを記憶していた領域を再利用可能とする。
なお、ストレージノード100がストレージ装置110に主データを格納するタイミングは、図12でも説明したように任意に設定することができる。例えば、ストレージ装置110に対する負荷を監視して、負荷が小さいときにストレージ装置110への主データの書き込みを実行することが考えられる。また、所定の周期でストレージ装置110への主データの書き込みを実行することが考えられる。このようにすると、ストレージ装置110へのデータアクセスの頻度が低減されるので、ストレージノード100のデータアクセスに対する応答性を向上することができる。
次に、図11のステップS15の読み出し処理を説明する。
図14は、読み出し処理の手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図11のステップS15の処理を詳細に示すものである。
[ステップS41]データアクセス受付部150は、アクセスノード600から受信したRead要求を取得し、データアクセス制御部160に出力する。データアクセス制御部160は、取得したRead要求をキャッシュ管理部170に出力する。キャッシュ管理部170は、Read要求を参照して、読み出しデータが先読みデータとして読み出しキャッシュ132に格納済みであるか否かを判定する。格納済みである場合、処理がステップS42に移される。格納済みでない場合、処理がステップS45に移される。なお、キャッシュ管理部170は、例えば、Read要求のリクエストパケット900に含まれる領域912の対象アドレスの情報と、読み出しリスト141bのストレージ装置110におけるアドレスと、を比較することでこの判定を行うことができる。すなわち、キャッシュ管理部170は、双方のアドレスが一致するものをRead要求で要求されているデータとして特定できる。
[ステップS42]キャッシュ管理部170は、Read要求で要求されている先読みデータを読み出しキャッシュ132から取得する。
[ステップS43]データアクセス受付部150は、データアクセス制御部160を介してキャッシュ管理部170から先読みデータを取得して、アクセスノード600に送信する。
[ステップS44]キャッシュ管理部170は、上記ステップS42で取得した先読みデータを読み出しリスト141bの先頭に設定する。そして、処理がステップS51に移される。
[ステップS45]キャッシュ管理部170は、Read要求で要求されている読み出しデータが読み出しキャッシュ131bに格納されていないことを通知する。データアクセス制御部160は、Read要求に含まれる領域912を参照して、読み出し対象アドレスを取得し、ディスクアクセス部180に該当のアドレスに格納されたデータの読み出しを指示する。ディスクアクセス部180は、データアクセス制御部160からの読み出し指示に応じて、ストレージ装置110から読み出しデータを取得し、データアクセス制御部160に出力する。
[ステップS46]データアクセス制御部160は、ディスクアクセス部180から取得した読み出しデータをデータアクセス受付部150に出力する。データアクセス受付部150は、読み出しデータをアクセスノード600に送信する。
[ステップS47]データアクセス制御部160は、先読みを行うか否かを判定する。例えば、データアクセス制御部160は、上記ステップS46で取得した読み出しデータの後に読み出される可能性の高いデータ(例えば、順次アクセスの後の方に読み出されるデータ)が存在するか否かによって先読みを行うか否かの判定を行うことができる。先読みを行う場合、処理がステップS48に移される。先読みを行わない場合、処理がステップS51に移される。
[ステップS48]データアクセス制御部160は、読み出しキャッシュ132の使用量が予め定められた所定のしきい値に達していないか、すなわち、読み出しキャッシュ132に空きがあるか否かをキャッシュ管理部170に問い合わせる。読み出しキャッシュ132に空きがある場合、処理がステップS49に移される。読み出しキャッシュ132に空きがない場合、処理がステップS51に移される。
[ステップS49]データアクセス制御部160は、ディスクアクセス部180を介して、ストレージ装置110から先読みデータを取得する。データアクセス制御部160は、取得した先読みデータをキャッシュ管理部170に出力する。
[ステップS50]キャッシュ管理部170は、取得した先読みデータを読み出しキャッシュ132に格納する。キャッシュ管理部170は、該当の先読みデータのストレージ装置110上のアドレスと読み出しキャッシュ130上のアドレスとを読み出しリスト141bに設定する。このとき、キャッシュ管理部170は、該当の先読みデータを読み出しリスト141bの先頭のノードとする。
[ステップS51]データアクセス制御部160は、データアクセス受付部150を介して後続のRead要求があるか否かを判定する。後続のRead要求がある場合、処理がステップS41に移される。後続のRead要求がない場合、処理が完了する。
このように、ストレージノード100は、Read要求で要求されるデータが読み出しキャッシュ132に先読みデータとして格納されている場合には、読み出しキャッシュ132から該当の先読みデータを取得して、アクセスノード600に応答する。また、ストレージノード100は、Read要求で要求されるデータが読み出しキャッシュ132に格納されていない場合には、ストレージ装置110から該当の読み出しデータを取得してアクセスノード600に応答する。そして、読み出したデータに続いてRead要求を受け付ける可能性の高いデータを先読みして読み出しキャッシュ132に格納する。
次に、図11のステップS17の冗長化回復処理を説明する。
図15は、冗長化回復処理の手順を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。なお、以下に示す処理は、図11のステップS17の処理を詳細に示すものである。
[ステップS61]データアクセス受付部150は、コントロールノード500から受信した冗長化回復要求をデータアクセス制御部160に出力する。
[ステップS62]データアクセス制御部160は、冗長化回復要求のリクエストパケット900を参照して、ストレージノード100で管理するプライマリスライスのうち、セカンダリスライスを管理するストレージノードと同期すべきスライスを特定する。
[ステップS63]データアクセス制御部160は、セカンダリスライスを管理するストレージノードを特定する。データアクセス制御部160は、特定した冗長化処理対象のストレージノードの情報をキャッシュ管理部170に出力する。
[ステップS64]データアクセス制御部160は、該当のスライスの冗長化スライスデータが冗長化回復処理用キャッシュ133に格納済みであるか否かをキャッシュ管理部170に問い合わせる。格納済みである場合、処理がステップS65に移される。格納済みでない場合、処理がステップS66に移される。
[ステップS65]キャッシュ管理部170は、冗長化回復処理用キャッシュ133から冗長化スライスデータを読み出す。
[ステップS66]データアクセス制御部160は、ディスクアクセス部180を介して、ストレージ装置110から該当のスライスの冗長化スライスデータを読み出す。データアクセス制御部160は、読み出した冗長化スライスデータをキャッシュ管理部170に出力する。キャッシュ管理部170は、データアクセス制御部160から冗長化スライスデータを取得する。そして、キャッシュ管理部170は、冗長化回復処理用キャッシュ133に取得した冗長化スライスデータを格納する。更に、キャッシュ管理部170は、該当の冗長化スライスデータを冗長化回復処理用リスト141cの先頭のノードに設定する。
[ステップS67]冗長化処理部190は、キャッシュ管理部170から冗長化スライスデータの送信単位であるデータブロックを取得する。冗長化処理部190は、取得したデータブロックをセカンダリスライスを管理するストレージノードに送信する。
[ステップS68]冗長化処理部190は、他のストレージノードから副データの受信応答を受け付ける。冗長化処理部190は、受信応答を受け付けた旨をキャッシュ管理部170を介してデータアクセス制御部160に通知する。
[ステップS69]データアクセス制御部160は、ステップS68で受け付けた受信応答に対応する送信済みのデータブロックを冗長化回復処理用キャッシュ133から削除する。
[ステップS70]データアクセス制御部160は、冗長化回復処理用キャッシュ133の使用量が予め定められた所定のしきい値に達していないか、すなわち、冗長化回復処理用キャッシュ133に所定量の空きがあるか否かをキャッシュ管理部170に問い合わせる。冗長化回復処理用キャッシュ133に空きがある場合、処理がステップS71に移される。冗長化回復処理用キャッシュ133に空きがない場合、処理がステップS73に移される。
[ステップS71]データアクセス制御部160は、ディスクアクセス部180を介して、ストレージ装置110から次に送信すべき冗長化スライスデータを、冗長化回復処理用キャッシュ133の空き容量に応じたサイズだけ先読みで取得する。データアクセス制御部160は、取得した冗長化スライスデータをキャッシュ管理部170に出力する。
[ステップS72]キャッシュ管理部170は、取得した冗長化スライスデータを冗長化回復処理用キャッシュ133に格納する。キャッシュ管理部170は、該当の冗長化スライスデータのストレージ装置110上のアドレスと読み出しキャッシュ130上のアドレスとを冗長化回復処理用リスト141cに設定する。このとき、キャッシュ管理部170は、該当の冗長化スライスデータを冗長化回復処理用リスト141cの先頭のノードとする。
[ステップS73]データアクセス制御部160は、未送信の冗長化スライスデータが存在するか否かを判定する。存在する場合、処理がステップS74に移される。存在しない場合、処理が完了する。
[ステップS74]データアクセス制御部160は、次に送信すべき冗長化スライスデータを特定する。そして、処理がステップS64に移される。
このように、ストレージノード100は、冗長化回復処理に際して、セカンダリスライスを管理するストレージノードに冗長化スライスデータをデータブロック単位で順次送信する。このとき、ストレージノード100は、冗長化回復処理用キャッシュ133の容量に応じて、冗長化スライスデータを先読みする。これにより、ストレージ装置110へのアクセス頻度を低減して、データアクセスの応答性を向上することができる。
また、上記ステップS71,72について、全ての冗長化スライスデータを送信済みであるなどの理由で、先読み対象のデータが存在しない場合には、これらデータ先読みの処理が行われないようにすることも考えられる。
次に、キャッシュ管理部170によるキャッシュ130の使用量の管理処理を説明する。この処理は、例えば、所定の周期で繰り返し実行される。
図16は、キャッシュ管理処理の手順を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
[ステップS81]キャッシュ管理部170は、読み出しキャッシュ132が利用されているか否かを判定する。利用されている場合、処理がステップS82に移される。利用されていない場合、処理がステップS85に移される。
[ステップS82]キャッシュ管理部170は、読み出しキャッシュ132の使用量を取得する。
[ステップS83]キャッシュ管理部170は、使用量が所定のしきい値よりも大きいか否かを判定する。しきい値よりも大きい場合、処理がステップS84に移される。しきい値以下である場合、処理がステップS85に移される。
[ステップS84]キャッシュ管理部170は、読み出しリスト141bを参照して、先読みデータのうち、最終アクセス時が古い先読みデータを所定量削除し、該当の先読みデータを格納していた読み出しキャッシュ132のメモリ領域を再利用可能とする。ここで、キャッシュ管理部170は、読み出しリスト141bの最後尾から先頭に向かって、順に所定量分の先読みデータを削除することで、この処理を行うことができる。
このように、キャッシュ管理部170は、定期的にキャッシュ130の使用量を監視し、必要に応じて、アクセスがないまま長時間が経過しているデータを古いものから削除する。これにより、読み出しキャッシュ132の使用量が過大となって、キャッシュ容量不足となることを防止することができる。
次に、ストレージノード100における上記各処理の具体的な流れを説明する。
まず、データの書き込み処理の具体例を説明する。なお、以下では、ストレージノード100が管理するストレージ装置110のスライス126(スライスID“P6”)に対するデータの書き込みが行われる場合を例示する。
図17は、データの書き込みの流れの具体例を示すシーケンス図である。以下、図17に示す処理をステップ番号に沿って説明する。
[ステップS101]データアクセス受付部150は、アクセスノード600からWrite要求を受け付ける。
[ステップS102]データアクセス受付部150は、データアクセス制御部160にWrite要求を出力する。
[ステップS103]データアクセス制御部160は、Write要求に含まれる書き込みデータを書き込みキャッシュ131に書き込むようキャッシュ管理部170に指示する。
[ステップS104]キャッシュ管理部170は、書き込みデータを書き込みキャッシュ131に格納する。キャッシュ管理部170は、Write要求で指定されるストレージ装置110の書き込み対象アドレスと書き込みキャッシュ131におけるアドレスとを対応付けて、書き込みリスト141aの先頭のノードに設定する。そして、キャッシュ管理部170は、キャッシュへの記録が完了した旨の応答をデータアクセス制御部160に出力する。
[ステップS105]データアクセス制御部160は、スライスID“S6”であるスライス225を管理するストレージノード200への副データの書き込み要求を冗長化処理部190に出力する。
[ステップS106]冗長化処理部190は、受け付けた書き込み要求をストレージノード200に送信する。
[ステップS107]冗長化処理部190は、ストレージノード200から書き込み要求を受信した旨を示す受信応答を受信する。
[ステップS108]冗長化処理部190は、受信応答を受け付けた旨をデータアクセス制御部160に通知する。
[ステップS109]キャッシュ管理部170は、セカンダリスライスを管理するストレージノードへの副データの送信が完了したことをデータアクセス制御部160に通知する。
[ステップS110]データアクセス制御部160は、書き込みデータの書き込み完了応答をデータアクセス受付部150に出力する。
[ステップS111]データアクセス受付部150は、アクセスノード600に書き込み完了応答を送信する。
[ステップS112]データアクセス制御部160は、キャッシュ管理部170に書き込みデータを要求する。
[ステップS113]キャッシュ管理部170は、書き込みリスト141aを参照して、書き込みキャッシュ131から書き込みデータを取得してデータアクセス制御部160に出力する。また、キャッシュ管理部170は、書き込みリスト141aを参照して、該当の書き込みデータのストレージ装置110における書き込み対象アドレスを取得し、データアクセス制御部160に出力する。
[ステップS114]データアクセス制御部160は、取得した書き込みデータのストレージ装置110への書き込み指示をディスクアクセス部180に出力する。
[ステップS115]ディスクアクセス部180は、書き込み指示に応じて書き込みデータをストレージ装置110に記録し、その記録が完了した旨の応答をデータアクセス制御部160に出力する。
[ステップS116]データアクセス制御部160は、書き込みキャッシュ131において、ストレージ装置110に記録済みの書き込みデータを記憶した領域を解放するようキャッシュ管理部170に指示する。
[ステップS117]キャッシュ管理部170は、書き込みキャッシュ131の指示された領域を再利用可能とし、解放完了をデータアクセス制御部160に通知する。
このように、ストレージノード100は、アクセスノード600からのWrite要求に含まれる書き込みデータを書き込みキャッシュ131に格納する。そして、ストレージノード100は、書き込みキャッシュ131から読み出した書き込みデータをセカンダリスライスを管理するストレージノードに送信する。そして、ストレージノード100は、セカンダリスライスを管理するストレージノードから副データの受信応答を受け付ける。その後、ストレージノード100は、ストレージ装置110に主データの格納が完了すると、書き込みキャッシュ131における該当の書き込みデータのために設けた領域を再利用可能とする。
すなわち、ストレージノード100は、冗長化の処理に必要な期間のみ書き込みデータを書き込みキャッシュ131に保持する。このため、不必要な書き込みデータで書き込みキャッシュ131が使用されることを防止することができ、キャッシュ130を効率的に利用することができる。
なお、上記ステップS112のタイミングは任意とすることができる。例えば、データアクセス制御部160は、ストレージ装置110の負荷を監視し、ストレージ装置110の負荷が所定値よりも小さい場合に、書き込みキャッシュ131に格納された書き込みデータをストレージ装置110に書き込むことが考えられる。このとき、データアクセス制御部160は、書き込みリスト141aを参照して、書き込みキャッシュ131に格納された書き込みデータを他の書き込みデータとまとめてストレージ装置110に書き込むことが考えられる。
これにより、ストレージノード100では、データの書き込み処理の際、ストレージ装置110へのアクセス頻度を低減することができる。その結果、アクセスノード600に対するデータアクセスの応答性を向上することができる。
次に、上記ステップS106,S107の間で、ストレージノード200で実行される副データの書き込みの流れの具体例を説明する。なお、以下では、ストレージノード200が、データアクセス受付部250、データアクセス制御部260、キャッシュ管理部270およびディスクアクセス部280を有するものとする。ただし、データアクセス受付部250、データアクセス制御部260、キャッシュ管理部270およびディスクアクセス部280は、それぞれがデータアクセス受付部150、データアクセス制御部160、キャッシュ管理部170およびディスクアクセス部180に対応する。
図18は、副データの書き込みの流れの具体例を示すシーケンス図である。以下、図18に示す処理をステップ番号に沿って説明する。
[ステップS121]データアクセス受付部250は、ストレージノード100から副データの書き込み要求を受け付ける。
[ステップS122]データアクセス受付部250は、受け付けた書き込み要求をデータアクセス制御部260に出力する。
[ステップS123]データアクセス制御部260は、書き込み要求に含まれる副データを書き込みキャッシュに書き込むようキャッシュ管理部270に指示する。
[ステップS124]キャッシュ管理部270は、副データを書き込みキャッシュに格納する。キャッシュ管理部270は、書き込み要求で指定されるストレージ装置210の書き込み対象アドレスと書き込みキャッシュにおけるアドレスとを対応付けて、書き込みリストの先頭のノードに設定する。そして、キャッシュ管理部270は、キャッシュへの記録が完了した旨の応答をデータアクセス制御部260に出力する。
[ステップS125]データアクセス制御部260は、副データの書き込み完了応答をデータアクセス受付部250に出力する。
[ステップS126]データアクセス受付部250は、ストレージノード100に副データの書き込み完了応答を送信する。
[ステップS127]データアクセス制御部260は、キャッシュ管理部270に副データを要求する。
[ステップS128]キャッシュ管理部270は、書き込みリストを参照して、書き込みキャッシュから副データを取得してデータアクセス制御部260に出力する。また、キャッシュ管理部270は、書き込みリストを参照して、該当の副データのストレージ装置210における書き込み対象アドレスを取得し、データアクセス制御部260に出力する。
[ステップS129]データアクセス制御部260は、取得した副データのストレージ装置210への書き込み指示をディスクアクセス部280に出力する。
[ステップS130]ディスクアクセス部280は、書き込み指示に応じて副データをストレージ装置210に記録し、その記録が完了した旨の応答をデータアクセス制御部260に出力する。
[ステップS131]データアクセス制御部260は、書き込みキャッシュにおいて、ストレージ装置210に記録済みの副データを記憶した領域を解放するようキャッシュ管理部270に指示する。
[ステップS132]キャッシュ管理部270は、書き込みキャッシュの指示された領域を再利用可能とし、解放完了をデータアクセス制御部260に通知する。
このように、ストレージノード200は、プライマリスライスを管理するストレージノード100から受け付けた副データを書き込みキャッシュに格納する。そして、ストレージノード200は、副データを受け付けた旨をストレージノード100に応答する。その後、ストレージノード200は、ストレージ装置210に副データの格納が完了すると、書き込みキャッシュにおける該当の副データのために設けた領域を再利用可能とする。
なお、上記ステップS127のタイミングは、図17のステップS112と同様に任意とすることができる。例えば、ストレージ装置210の負荷が小さい場合に、ストレージノード200が管理する他の主データや副データと共にストレージ装置210に書き込むことが考えられる。これにより、ストレージノード200において、データの書き込み処理の際、ストレージ装置210へのアクセス頻度を低減することができる。その結果、アクセスノード600に対するデータアクセスの応答性を向上することができる。
次に、ストレージノード100におけるデータの読み出し処理の具体的な流れを説明する。なお、以下では、ストレージノード100が管理するストレージ装置110のスライス121(スライスID“P1”)に対するデータの読み出しが行われる場合を例示する。
図19は、データの読み出しの流れの具体例を示すシーケンス図である。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS141]データアクセス受付部150は、アクセスノード600からRead要求を受け付ける。
[ステップS142]データアクセス受付部150は、データアクセス制御部160にRead要求を出力する。
[ステップS143]データアクセス制御部160は、Read要求で指定されるストレージ装置110の読み出し対象アドレスを指定してキャッシュ管理部170に読み出し指示を出力する。
[ステップS144]キャッシュ管理部170は、ストレージ装置110における読み出し対象アドレスに基づき、該当のアドレスに対応するデータが読み出しキャッシュ132に格納されているかを判定する。そして、キャッシュ管理部170は、読み出しキャッシュ132に格納されていないと判定すると、データ無し応答をデータアクセス制御部160に出力する。
[ステップS145]データアクセス制御部160は、キャッシュ管理部170からデータ無し応答を受け付けると、ディスクアクセス部180に読み出し対象アドレスを指定して、読み出しデータの読み出し要求を出力する。
[ステップS146]ディスクアクセス部180は、指定された読み出し対象アドレスに基づいて、ストレージ装置110から読み出しデータを取得する。そして、ディスクアクセス部180は、取得した読み出しデータをデータアクセス制御部160に出力する。
[ステップS147]データアクセス制御部160は、取得した読み出しデータをデータアクセス受付部150に出力する。
[ステップS148]データアクセス受付部150は、取得した読み出しデータをアクセスノード600に送信する。
[ステップS149]データアクセス制御部160は、上記ステップS147で取得した読み出しデータを読み出しキャッシュ132に格納するようキャッシュ管理部170に指示する。
[ステップS150]キャッシュ管理部170は、読み出しデータを読み出しキャッシュ132に記録した旨をデータアクセス制御部160に応答する。
[ステップS151]データアクセス制御部160は、ディスクアクセス部180に先読みデータの読み出しを要求する先読み要求を出力する。
[ステップS152]ディスクアクセス部180は、ストレージ装置110から指定された先読みデータを取得する。ディスクアクセス部180は、取得した先読みデータをデータアクセス制御部160に取得する。
[ステップS153]データアクセス制御部160は、取得した先読みデータを読み出しキャッシュ132に格納するようキャッシュ管理部170に指示する。
[ステップS154]キャッシュ管理部170は、先読みデータを読み出しキャッシュ132に記録した旨をデータアクセス制御部160に出力する。
[ステップS155]データアクセス受付部150は、アクセスノード600からRead要求を受け付ける。
[ステップS156]データアクセス受付部150は、取得したRead要求をデータアクセス制御部160に出力する。
[ステップS157]データアクセス制御部160は、Read要求で指定されるストレージ装置110の読み出し対象アドレスを指定してキャッシュ管理部170に読み出し指示を出力する。
[ステップS158]キャッシュ管理部170は、ストレージ装置110における読み出し対象アドレスに基づき、該当のアドレスに対応するデータが読み出しキャッシュ132に格納されているかを判定する。そして、キャッシュ管理部170は、読み出しキャッシュ132に格納されていると判定すると、該当の先読みデータを読み出しキャッシュ132から取得して、データアクセス制御部160に出力する。
[ステップS159]データアクセス制御部160は、取得した先読みデータをデータアクセス受付部150に出力する。
[ステップS160]データアクセス受付部150は、取得した先読みデータをアクセスノード600に送信する。
このように、ストレージノード100は、アクセスノード600からRead要求を受け付けると、読み出しキャッシュ132に先読みデータとして格納済みであるか否かを判定する。そして、ストレージノード100は、先読みデータとして格納済みである場合には、読み出しキャッシュ132から該当の先読みデータを取得してアクセスノード600に送信する。これにより、ストレージ装置110へのアクセス頻度を低減して、アクセスノード600に対するデータアクセスの応答性を向上することができる。
なお、読み出しキャッシュ132は、キャッシュ管理部170によって、定期的に使用量が監視される。そして、読み出しキャッシュ132の使用量がしきい値を超過した場合、ストレージノード100は、読み出しリスト141bを参照して、アクセスがないまま長時間が経過しているデータを古いものから削除する。これにより、読み出しキャッシュ132の使用量が過大となって、キャッシュ容量不足となることを防止することができる。
次に、ストレージノード100,200,300,400で実行される冗長化回復処理の具体例について説明する。
図20は、論理ボリュームの第2のデータ構造例を示す図である。図20では、図4で示した論理ボリューム700について、ストレージ装置110で障害が発生した場合のコントロールノード500によるスライス配置変更後の状態を例示している。
まず、コントロールノード500は、ストレージノード100のストレージ装置110で障害が発生した旨を検知する。そして、コントロールノード500は、ストレージノード100で管理されていたスライス121〜126の各役割(プライマリスライスやセカンダリスライス)をストレージノード200,300,400に委譲する。コントロールノード500は、例えば、以下の手順によって委譲を行うことが考えられる。
(1)ストレージ装置110でのプライマリスライスに対応するセカンダリスライスを、プライマリスライスに変更する。具体的には、例えば、スライス225のスライスIDを“S6”から“P6”に変更する。また、スライス322のスライスIDを“S1”から“P1”に変更する。また、スライス421のスライスIDを“S5”から“P5”に変更する。
(2)新たなプライマリスライスにスライスに対応するセカンダリスライスを設ける。具体的には、例えば、スライス221のスライスIDを“S5”とする。また、スライス324のスライスIDを“S4”とする。また、スライス422のスライスIDを“S1”とする。更に、スライス425のスライスIDを“S6”とする。
このように、コントロールノード500は、ストレージ装置110で障害が発生した場合、ストレージノード200,300,400でストレージノード100の肩代わりするよう論理ボリュームの各スライスの配置を変更する。コントロールノード500は、変更後のスライス情報をストレージノード200,300,400に送信し、ストレージ装置210,310,410上のスライスの配置を変更するよう指示する(冗長化回復要求)。
ストレージノード200,300,400では、変更後のスライス情報に基づいて、自ノードで管理する各スライスの設定を変更する。また、ストレージノード200,300,400は、必要に応じて自ノードで管理するプライマリスライスのデータを、対応するセカンダリスライスに送信する。
例えば、ストレージノード200は、新たにスライスID“P6”となったスライス225に格納されているデータ(冗長化スライスデータ)を、ストレージノード400に送信する。ストレージノード400では、新たにスライスID“S6”となったスライス425に、ストレージノード200から受信したスライスID“P6”のデータを副データとして格納する。
以下では、このようなストレージノード200からストレージノード400に対する冗長化回復処理の流れを具体的に説明する。
図21は、冗長化回復の流れの具体例を示すシーケンス図である。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS161]データアクセス受付部250は、コントロールノード500から冗長化回復要求を受け付ける。
[ステップS162]データアクセス受付部250は、冗長化回復要求をデータアクセス制御部260に出力する。
[ステップS163]データアクセス制御部260は、冗長化回復要求を参照して、自ノードの新たなプライマリスライス“P6”について、ストレージノード400のセカンダリスライスとの同期が必要であることを認識する。そして、データアクセス制御部260は、スライスID“P6”のスライス225の冗長化スライスデータをストレージ装置210から読み出すようディスクアクセス部280に要求する。
[ステップS164]ディスクアクセス部280は、スライス225から読み出した冗長化スライスデータ(一次)をデータアクセス制御部260に出力する。なお、ここでは、ディスクアクセス部280がスライス225から読み出す冗長化スライスデータは、スライス225に格納されたデータのうちの一部であるとする。これは、冗長化回復処理用キャッシュ133の容量には限度があり、スライス225に格納された全データを一度に冗長化回復処理用キャッシュ133に格納することが難しいためである。このため、データアクセス制御部260は、スライス225に格納されたデータを一次、二次、・・・と複数回に分けて読み出して、冗長化回復処理用キャッシュ133に格納するよう制御する。
[ステップS165]データアクセス制御部260は、取得した冗長化スライスデータ(一次)の書き込みをキャッシュ管理部270に指示する。
[ステップS166]キャッシュ管理部270は、冗長化スライスデータ(一次)の冗長化回復処理用キャッシュへの記録が完了した旨をデータアクセス制御部260に応答する。
[ステップS167]キャッシュ管理部270は、ストレージノード400への冗長化スライスデータ(一次)の書き込み要求を冗長化処理部290に出力する。キャッシュ管理部270は、この書き込み要求に冗長化回復処理用キャッシュに書き込んだ冗長化スライスデータ(一次)の送信単位であるデータブロックを含める。
[ステップS168]冗長化処理部290は、ストレージノード400に冗長化スライスデータ(一次)の書き込み要求を送信する。なお、冗長化処理部290は、ストレージノード400から書き込み要求に対する受信応答を受け付けるたびに、次に送信すべきデータブロックをストレージノード400に順次送信する。また、キャッシュ管理部270は、受信応答を受け付けると、冗長化回復処理用キャッシュの送信済みデータブロックを格納した領域を再利用可能とする。
[ステップS169]データアクセス制御部260は、キャッシュ管理部270に、冗長化回復処理用キャッシュの空き容量を問い合わせる。
[ステップS170]キャッシュ管理部270は、冗長化回復処理用キャッシュ133で利用可能な空き容量をデータアクセス制御部260に応答する。
[ステップS171]データアクセス制御部260は、空き容量が所定のしきい値を超えていないことを認識する。すると、データアクセス制御部260は、ディスクアクセス部280に、上記ステップS164で読み出した冗長化スライスデータ(一次)に続く冗長化スライスデータ(二次)の先読みをディスクアクセス部280に要求する。
[ステップS172]ディスクアクセス部280は、ストレージ装置210から先読みデータをデータアクセス制御部260に出力する。
[ステップS173]データアクセス制御部260は、取得した先読みデータを冗長化回復処理用キャッシュ133に書き込むようキャッシュ管理部270に指示する。
[ステップS174]キャッシュ管理部270は、先読みデータの冗長化回復処理用キャッシュへの記録が完了した旨をデータアクセス制御部260に応答する。
[ステップS175]冗長化処理部290は、ストレージノード400から、冗長化スライスデータ(一次)の最後に送信したデータブロックに対する受信応答を受信する。
[ステップS176]冗長化処理部290は、ストレージノード400への冗長化スライスデータ(一次)の送信が完了した旨をキャッシュ管理部270に出力する。
[ステップS177]キャッシュ管理部270は、ストレージノード400への冗長化スライスデータ(二次)の書き込み要求を冗長化処理部290に出力する。データアクセス制御部260は、この書き込み要求に冗長化回復処理用キャッシュに書き込んだ冗長化スライスデータ(二次)の送信単位であるデータブロックを含める。
[ステップS178]冗長化処理部290は、ストレージノード400に冗長化スライスデータ(二次)の書き込み要求を送信する。なお、冗長化処理部290は、ストレージノード400から書き込み要求に対する受信応答を受け付けるたびに、次に送信すべきデータブロックをストレージノード400に順次送信する。以降、スライス225に格納された全データをストレージノード400に送信するまで、上記ステップS169〜S178の処理が繰り返し実行される。
このように、ストレージノード200は、スライス単位で冗長化回復を行う場合にも、冗長化回復処理用キャッシュに先読みしたデータを格納する。そして、ストレージノード200は、冗長化回復処理用キャッシュから読み出したデータをストレージノード400に順次送信する。これにより、ストレージ装置210へのアクセス頻度を低減して、アクセスノード600に対するデータアクセスの応答性を向上することができる。
なお、上記ステップS171において、データアクセス制御部260は、キャッシュ(または冗長化回復処理用キャッシュとして予め許容されたキャッシュ容量)の空き容量に応じて、先読みするデータ量を変更することが考えられる。例えば、データアクセス制御部260は、キャッシュの空き容量が、前回の先読み時よりも多い場合には、前回の先読み時よりも多量に先読みを行うことが考えられる。これにより、スライス225の全データを送信完了するまでの上記ステップS169〜S172の実行回数を低減することができる。すなわち、ストレージ装置210へのアクセス頻度が低減されて、冗長化回復処理の実行時のアクセスノード600に対するデータアクセスの応答性をより向上することができる。
また、冗長化回復処理用キャッシュは、キャッシュ管理部270によって、定期的に使用量が監視される。そして、冗長化回復処理用キャッシュの使用量がしきい値を超過した場合、ストレージノード200は、冗長化回復処理用リストを参照して、アクセスがないまま長時間が経過しているデータを古いものから削除する。これにより、冗長化回復処理用キャッシュの使用量が過大となって、キャッシュ容量不足となることを防止することができる。
以上で説明したようにストレージノード100は、コントロールノード500やアクセスノード600から受け付けたリクエストの内容に応じて、キャッシュ130のキャッシュ処理の方法を変更して冗長化の処理を行う。
例えば、ストレージノード100は、Write要求に対しては、Write要求の処理に応じたタイミングにより、書き込みキャッシュ131で使用する領域を再利用可能とする。
また、例えば、ストレージノード100は、Read要求に対しては、読み出しデータに応じて、読み出しキャッシュ132に先読みデータを格納しておく。そして、ストレージノード100は、次のRead要求に対して読み出しキャッシュ132から先読みデータを読み出してアクセスノード600に応答する。
また、例えば、ストレージノード100は、冗長化回復要求に対しては、冗長化回復処理用キャッシュ133に冗長化スライスデータを先読みして格納しておく。そして、ストレージノード100は、セカンダリスライスを管理する他のストレージノードに、冗長化回復処理用キャッシュ133から読み出した冗長化スライスデータを順次送信する。
更に、ストレージノード100は、読み出しキャッシュ132および冗長化回復処理用キャッシュ133の使用量を定期的に監視して、使用量が所定のしきい値を超過している場合には、該当のキャッシュに格納されたデータを削除する。このとき、ストレージノード100は、読み出しリスト141bや冗長化回復処理用リスト141cを参照して、アクセスがないまま長時間が経過しているデータを古いものから削除する。
このように、分散ストレージシステムで実行されるデータの冗長化の処理に応じてキャッシュ130の再利用可能とするタイミングを変更する。これにより、キャッシュ130に無駄なデータが格納された状態を抑止し、キャッシュ130を効率的に利用できる。その結果、キャッシュ130での容量不足を防止して、ストレージ装置110に対するアクセス頻度を低減することができ、アクセスノード600に対するデータアクセスの応答性を向上することができる。
また、上述の例では、2重に冗長化する場合を例示して説明したが、3重以上に冗長化を図ることもできる。
なお、ストレージノード100の機能は、その機能の処理内容を記述したプログラムをコンピュータに実行させることで実現できる。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などがある。光磁気記録媒体には、MO(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上、本件の管理プログラム、管理装置および管理方法を図示の実施の形態に基づいて説明したが、これらに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。更に、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
(付記1) コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを前記コンピュータに管理させる管理プログラムであって、
前記コンピュータを、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段、
前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信する通信手段、
として機能させることを特徴とする管理プログラム。
(付記2) 前記コンピュータを更に、前記記憶領域に格納されたデータを二次記憶装置に格納する格納手段として機能させ、
前記管理手段は、前記処理要求が書き込みデータの書き込み要求である場合、前記通信手段が前記他のコンピュータから前記記憶領域に格納された前記書き込みデータの受信応答を受け付け、前記格納手段が前記記憶領域に格納された前記書き込みデータを前記二次記憶装置に格納すると、前記記憶領域を再利用可能とする、
ことを特徴とする付記1記載の管理プログラム。
(付記3) 前記格納手段は、前記通信手段が前記受信応答を受け付けた後、前記二次記憶装置に対する負荷が所定負荷よりも小さくなった場合に前記書き込みデータを前記二次記憶装置に格納することを特徴とする付記2記載の管理プログラム。
(付記4) 前記管理手段は、前記処理要求が書き込みデータの書き込み要求である場合、前記記憶領域に前記書き込みデータを格納すると、前記書き込みデータの書き込み完了応答を前記書き込み要求の送信元である情報処理装置に送信することを特徴とする付記3記載の管理プログラム。
(付記5) 前記管理手段は、前記処理要求が二次記憶装置に格納されたデータを前記他のコンピュータに分散して配置する旨を要求する冗長化回復要求である場合、当該冗長化回復要求に応じた処理による前記一次記憶装置の使用量に応じて、前記記憶領域を再利用可能とすることを特徴とする付記1記載の管理プログラム。
(付記6) 前記通信手段は、前記記憶領域に格納されたデータを所定サイズのデータブロックに分割して前記他のコンピュータに送信し、
前記管理手段は、前記通信手段が前記他のコンピュータから前記データブロックの受信応答を受け付けると、前記記憶領域のうち当該データブロックを格納した領域を再利用可能とする、
ことを特徴とする付記5記載の管理プログラム。
(付記7) 前記管理手段は、前記冗長化回復要求に応じて、前記二次記憶装置に格納されたデータを順次先読みして、前記一次記憶装置の前記記憶領域に格納することを特徴とする付記6記載の管理プログラム。
(付記8) 前記管理手段は、前記一次記憶装置の使用量に応じて、前記記憶領域に先読みで格納可能なデータ量を変更することを特徴とする付記7記載の管理プログラム。
(付記9) 前記管理手段は、前記処理要求が二次記憶装置に格納された読み出しデータの読み出し要求である場合、当該読み出し要求に応じた処理による前記一次記憶装置の使用量に応じて、前記記憶領域を再利用可能とすることを特徴とする付記1記載の管理プログラム。
(付記10) 前記管理手段は、前記一次記憶装置の使用量を所定の周期で監視し、当該一次記憶装置の使用量が所定量よりも大きい場合に、前記記憶領域を再利用可能とすることを特徴とする付記9記載の管理プログラム。
(付記11) 前記管理手段は、前記記憶領域のうち、前回アクセスがあった時点から最も時間が経過している記憶領域を優先して再利用可能とすることを特徴とする付記10記載の管理プログラム。
(付記12) 前記管理手段は、前記読み出し要求に応じて、前記読み出しデータに続いて読み出される先読みデータを特定し、当該先読みデータを前記二次記憶装置から読み出して前記記憶領域に格納することを特徴とする付記9乃至11の何れか1つに記載の管理プログラム。
(付記13) 前記管理手段は、前記読み出し要求に応じて、前記記憶領域に前記読み出しデータが存在するか否かを判定し、前記読み出しデータが存在する場合、前記記憶領域から読み出した前記読み出しデータを前記読み出し要求の送信元である情報処理装置に送信することを特徴とする請求項9乃至12の何れか1つに記載の管理プログラム。
(付記14) 自装置に格納するデータと同一内容の複数のデータを自装置とネットワークで接続されたコンピュータに分散して配置する分散ストレージシステムを管理する管理装置であって、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段と、
前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記コンピュータに送信する通信手段と、
を有することを特徴とする管理装置。
(付記15) コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを管理する前記コンピュータの管理方法であって、
前記コンピュータが、
データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、
前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、
前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信し、
前記処理要求に基づく前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする、
ことを特徴とする管理方法。
1 コンピュータ
1a 一次記憶装置
1b 管理手段
1c 通信手段
1d 記憶領域
2 コンピュータ
3 処理要求

Claims (7)

  1. コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを前記コンピュータに管理させる管理プログラムであって、
    前記コンピュータを、
    データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段、
    前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信する通信手段、
    として機能させることを特徴とする管理プログラム。
  2. 前記コンピュータを更に、前記記憶領域に格納されたデータを二次記憶装置に格納する格納手段として機能させ、
    前記管理手段は、前記処理要求が書き込みデータの書き込み要求である場合、前記通信手段が前記記憶領域に格納された前記書き込みデータの受信応答を前記他のコンピュータから受け付け、前記格納手段が前記記憶領域に格納された前記書き込みデータを前記二次記憶装置に格納すると、前記記憶領域を再利用可能とする、
    ことを特徴とする請求項1記載の管理プログラム。
  3. 前記管理手段は、前記処理要求が二次記憶装置に格納されたデータを前記他のコンピュータに分散して配置する旨を要求する冗長化回復要求である場合、当該冗長化回復要求に応じた処理による前記一次記憶装置の使用量に応じて、前記記憶領域を再利用可能とすることを特徴とする請求項1記載の管理プログラム。
  4. 前記通信手段は、前記記憶領域に格納されたデータを所定サイズのデータブロックに分割して前記他のコンピュータに送信し、
    前記管理手段は、前記通信手段が前記データブロックの受信応答を前記他のコンピュータから受け付けると、前記記憶領域のうち当該データブロックを格納した領域を再利用可能とする、
    ことを特徴とする請求項3記載の管理プログラム。
  5. 前記管理手段は、前記冗長化回復要求に応じて、前記二次記憶装置に格納されたデータを順次先読みして、前記一次記憶装置の前記記憶領域に格納することを特徴とする請求項4記載の管理プログラム。
  6. 自装置に格納するデータと同一内容の複数のデータを自装置とネットワークで接続されたコンピュータに分散して配置する分散ストレージシステムを管理する管理装置であって、
    データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする管理手段と、
    前記管理手段が設けた前記記憶領域に格納されたデータを分散して配置するために前記コンピュータに送信する通信手段と、
    を有することを特徴とする管理装置。
  7. コンピュータに格納するデータと同一内容の複数のデータを前記コンピュータとネットワークで接続された他のコンピュータに分散して配置する分散ストレージシステムを管理する前記コンピュータの管理方法であって、
    前記コンピュータが、
    データの分散配置を伴う処理要求に応答し、処理の対象となるデータを格納するための記憶領域を一次記憶装置に設け、
    前記処理要求に基づく分散配置処理の種別に応じたデータを前記記憶領域に格納し、
    前記記憶領域に格納されたデータを分散して配置するために前記他のコンピュータに送信し、
    前記処理要求に基づく前記分散配置処理の種別に応じたタイミングで前記記憶領域を再利用可能とする、
    ことを特徴とする管理方法。
JP2009129212A 2009-05-28 2009-05-28 管理プログラム、管理装置および管理方法 Withdrawn JP2010277342A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009129212A JP2010277342A (ja) 2009-05-28 2009-05-28 管理プログラム、管理装置および管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009129212A JP2010277342A (ja) 2009-05-28 2009-05-28 管理プログラム、管理装置および管理方法

Publications (1)

Publication Number Publication Date
JP2010277342A true JP2010277342A (ja) 2010-12-09

Family

ID=43424246

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009129212A Withdrawn JP2010277342A (ja) 2009-05-28 2009-05-28 管理プログラム、管理装置および管理方法

Country Status (1)

Country Link
JP (1) JP2010277342A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013191150A (ja) * 2012-03-15 2013-09-26 Toshiba Corp ビデオ配信サーバ、ssd制御方法
JPWO2013093994A1 (ja) * 2011-12-19 2015-04-27 富士通株式会社 ストレージシステム、データリバランシングプログラム及びデータリバランシング方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2013093994A1 (ja) * 2011-12-19 2015-04-27 富士通株式会社 ストレージシステム、データリバランシングプログラム及びデータリバランシング方法
US9703504B2 (en) 2011-12-19 2017-07-11 Fujitsu Limited Storage system, recording medium storing data rebalancing program, and data rebalancing method
JP2013191150A (ja) * 2012-03-15 2013-09-26 Toshiba Corp ビデオ配信サーバ、ssd制御方法

Similar Documents

Publication Publication Date Title
US9069476B2 (en) Method for managing storage system using flash memory, and computer
JP5158074B2 (ja) ストレージ管理プログラム、ストレージ管理方法、ストレージ管理装置およびストレージシステム
JP4438457B2 (ja) 記憶領域割当方法、システム及び仮想化装置
JP4568502B2 (ja) 情報処理システムおよび管理装置
US20080184000A1 (en) Storage module and capacity pool free capacity adjustment method
US8078819B2 (en) Arrangements for managing metadata of an integrated logical unit including differing types of storage media
JP5094193B2 (ja) 記憶システム及びその制御方法
US11199973B2 (en) Storage system, computer system, and control method for storage system
JP4452064B2 (ja) 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
JP5396836B2 (ja) データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
CN107329704B (zh) 一种缓存镜像方法及控制器
JP5218284B2 (ja) 仮想ディスク管理プログラム、ストレージ装置管理プログラム、マルチノードストレージシステム、および仮想ディスク管理方法
JP2005276192A (ja) データ記憶容量を増大させるための方法及び装置
JP2009048497A (ja) 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
JP4400653B2 (ja) 情報システム、および、情報システムの情報保存方法
JP2014123218A (ja) プログラム、データ管理方法および情報処理装置
JP2008065525A (ja) 計算機システム、データ管理方法及び管理計算機
TWI782487B (zh) 利用索引物件來進行簡易儲存服務無縫遷移的方法、主裝置以及儲存伺服器
JP2005228278A (ja) 記憶領域の管理方法、管理装置及び管理プログラム
US11137918B1 (en) Administration of control information in a storage system
JP2020004186A (ja) 情報処理システム、管理装置および制御方法
JP4625675B2 (ja) ストレージ装置のリソース割り当て方法及びストレージ装置
JP2010277342A (ja) 管理プログラム、管理装置および管理方法
US20100223442A1 (en) Computer system and data erasing method
JP5195213B2 (ja) アップデート制御プログラム、アップデート制御装置、およびアップデート制御方法

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20120807