以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲に係る発明を限定するものではなく、又実施形態の中で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。
図1は、本発明の第1の実施形態に係るストレージシステム100の構成図である。ストレージシステム100は、複数のストレージ装置10a〜10d(以下、符号「10」で代表させることもある)をネットワーク30に接続することにより構成される。ネットワーク30は、LAN(local Area Network)やWAN(Wide Area Network)であってもよく、それぞれのストレージ装置10a〜10dは、有線または無線で接続される。外部装置20a、20bは、ストレージシステム100に対してデータの書込みや読出しを要求する外部端末である。ストレージ装置10a〜10dおよび外部装置20a〜20bの通信は、TCP/IPなどの各種プロトコルを用いて実現される。このストレージ装置10は、ハードウエアコンポーネントでいえば、任意のコンピュータのCPU、メモリ、メモリにロードされたプログラムなどによって実現されるが、ここではそれらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックがハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによっていろいろな形で実現できることは、当業者には理解されるところである。
ストレージ装置10は、必要なプログラムを起動するプロセッサと、ハードディスクや不揮発性メモリなどの大容量格納部を備えている。このストレージ装置10は、ハードディスク等を組み込んだ市販の汎用コンピュータの形態であってもよく、またこのストレージシステム100の実現に必要な機能のみを持った専用機器の形態であってもよい。汎用コンピュータに対しては、ユーザが必要なプログラムをインストールすることにより、ストレージ装置10としての機能を持たせることができる。
このストレージシステム100は、ストレージ装置10a〜10dを統括管理する管理サーバを有しない。各ストレージ装置10は、ネットワーク30に接続されている他のストレージ装置の状態を監視し、記録したデータに関する管理を自律的に行う機能を有する。ストレージシステム100のストレージ容量を増やすためには、新たなストレージ装置10をネットワーク30に追加接続するだけでよく、SANやNASなどのシステムにおいてストレージの増設時に必要であった管理サーバへの登録作業を不要とする。またストレージ装置10は自己が管理するデータの複製機能を有しており、ストレージ装置10を交換する場合には、ネットワークから切断する前にこの複製機能を利用して他のストレージ装置10にデータを自律的に複製することも可能とする。
図2は、ストレージ装置10の概念的な構成を示すブロック図である。ストレージ装置10は、ファイルシステムエージェント200、コピーユニットエージェント300a〜300n(以下、符号「300」で代表させることもある)および格納部400を備える。格納部400は、データを記録するストレージ領域を有しており、このストレージ領域は複数の記録単位に分割されている。以下では、この記録単位のことを「コピーユニット」と呼ぶ。図2では、複数のコピーユニット500a〜500n(以下、符号「500」で代表させることもある)が示されている。後述するが、これらのコピーユニット500はユーザに割り当てられたものであり、本実施の形態では、ユーザに割り当てられたコピーユニットのことを単にコピーユニットと表現し、ユーザに割り当てる前のコピーユニットのことを、便宜上割当て済みのコピーユニットと区別するために、空のコピーユニットとして表現することもある。なお、割当て済みのコピーユニットと割当て前のコピーユニットとを特に区別することなく説明する場合には、単にコピーユニットとして表現する。このコピーユニット500は、可変の容量を有してもよいが、管理の容易性や、ユーザに対する課金などのビジネス戦略上の観点から、例えば100Mバイトなどの所定容量であってもよい。コピーユニット500には1つ又は複数のファイルデータを格納することができ、1つのファイルデータは、複数のコピーユニット500にまたがって格納されてもよい。ファイルシステムエージェント200およびコピーユニットエージェント300は、ストレージ装置10においてエージェントプログラムとして組み込まれる。コピーユニットエージェント300は、各コピーユニット500に対して起動され、コピーユニット500に格納されているデータに関する管理を行う。
ここで、図2は、ストレージ装置10の物理的な構成を示すものではなく、実際には1人の、または1人とみなすことにしたユーザに対するストレージのソフトウェア的な構成を示している。ファイルシステムエージェント200は、ユーザの識別情報(以下、ユーザアカウントという)に基づいて、複数のコピーユニット500をユーザ毎に管理する。したがって、1台のストレージ装置10が複数のユーザのデータを記録する場合には、ユーザアカウント毎にファイルシステムエージェント200が起動されることになる。コピーユニット500は、ユーザアカウントに対して予め割当てられてもよいし、データの記録を行う度に動的に割当てられてもよい。ユーザアカウントに割当てられると、コピーユニット500には識別情報(以下、コピーユニットIDという)が付与される。このコピーユニットIDは、ストレージシステム100において重複することがないように決定される。コピーユニットエージェント300は、自身が管理するコピーユニット500をこのコピーユニットIDに基づいて識別し、ファイルシステムエージェント200からのリクエストに応答することができる。
格納部400は、一つのストレージ装置10におけるストレージ領域だけでなく、複数のストレージ装置10におけるストレージ領域も含む概念である。すなわち、ユーザの複数のコピーユニット500は、一つのストレージ装置10内だけでなく複数のストレージ装置10にまたがって存在してもよい。複数のストレージ装置10にまたがる場合には、各ストレージ装置10におけるコピーユニットエージェント300が、自身のストレージ装置10に存在するコピーユニット500に対して起動される。ファイルシステムエージェント200は、複数のストレージ装置10のうちいずれか1つに存在している。
ファイルシステムエージェント200は、自己が管理するコピーユニット500の存在位置を記憶しておくことが好ましいが、管理対象であるコピーユニット500のIDを認識していれば、コピーユニットエージェント300に対して存在位置を問い合わせることが可能である。コピーユニットエージェント300またはコピーユニット500がユーザアカウントを保持する場合には、ファイルシステムエージェント200が、このユーザアカウントに基づいて自己が管理するコピーユニット500の存在位置をコピーユニットエージェント300に対して問い合わせるように構成してもよい。
ストレージ装置10が上記したエージェントプログラムを備えることにより、本ストレージシステム100は、ストレージ装置10の枠組みにしばられることなく、複数のストレージ装置間の障壁を取り除いた柔軟なストレージ構成を実現することが可能となる。
また、本ストレージシステム100の重要な特徴として、このシステムは複数の同一内容のコピーユニット500を保持している。必要な多重度、すなわちシステム中に存在しなければならない同一内容のコピーユニット500の数は、コピーユニット500またはユーザアカウントに応じて設定される。上記のとおり、コピーユニット500はユーザアカウント毎に管理されており、したがって図2に示したストレージの構成は、ストレージシステム100においてユーザアカウント毎に複数存在し、ファイルシステムエージェント200が必要な多重度の分だけ立ち上がっている。コピーユニット500に多重度を持たせる一つの理由はストレージ装置10の故障に備えることにあり、また更なる理由として、本ストレージシステム100によるデータ送信効率の向上がある。
本ストレージシステム100は、同一内容のコピーユニット500を管理する複数のコピーユニットエージェント300が、互いに協同してコピーユニット500中のファイルデータを送信することを可能とする。例えば、同一のコピーユニット500が2つ存在する場合に、2つのコピーユニットエージェント300が、ファイルデータを半分に分けてそれぞれ送信することができる。ファイルデータの更新頻度が少なく且つデータの送信要求が非常に多いファイルデータについては、送信効率の向上という観点から多くのコピーユニット500に格納しておくことが好ましい。
図3は、ストレージシステム100における多重度を説明するための概念図である。ストレージシステム100においては、同一のコピーユニットIDを有するコピーユニット500が少なくとも多重度分だけ存在する。図3では、多重度が2の場合であって、同一IDをもつ2つのコピーユニット500がストレージシステム100に存在している。コピーユニット500のヘッダには、ストレージ領域の空き位置と空き容量とが記録されており、ファイルデータが更新または追加等されると、空き位置および空き容量は随時書き換えられる。
各コピーユニットエージェント300はファイルシステムエージェント200により管理され、各コピーユニット500は、コピーユニットエージェント300およびファイルシステムエージェント200により管理される。図3の例では便宜上、ファイルシステムエージェント200がコピーユニット500を管理するものとして説明する。
ユーザに対して計12の所定容量のコピーユニット500が割当てられ、ファイルシステムエージェント200aが、ID01〜ID06で特定される6つのコピーユニット500a〜500fの一系列を管理し、同様にファイルシステムエージェント200bが、ID01〜ID06で特定される6つのコピーユニット500g〜500lの一系列を管理する。
これらのコピーユニット500には、ファイルA、ファイルBおよびファイルCの3つのデータが格納されている。このうち、ファイルCのデータは、ID02〜ID04のコピーユニット500にまたがって格納されている。また図中、斜線が引かれた領域は空き領域を示し、この例ではID04のコピーユニット500d(500j)の一部と、ID05のコピーユニット500e(500k)およびID06のコピーユニット500f(500l)の全体が空き領域となっている。同一ユーザの新たなファイルデータは、この空き領域に書き込まれる。新たなファイルデータの容量が各コピーユニット500の空き容量の総和よりも大きいときには、ファイルシステムエージェント200が新たにコピーユニット500を生成して対応してもよい。コピーユニットエージェント300は、自身が管理するコピーユニット500の空き容量を認識できることが好ましいが、他のコピーユニット500の空き容量を認識しなくてもよい。ファイルシステムエージェント200は、各コピーユニットエージェント300に対してコピーユニット500の空き容量を報告させることにより、システム全体の空き容量を演算することが可能である。
図4は、ファイルシステムエージェント200の構成を示す機能ブロック図である。ファイルシステムエージェント200は、入出力処理部210a、210b、要求受付部212、応答部214、応答受付部216、データ受付部218、データ送信部220、容量処理部230、コピーユニット指定部238および書込制御部240を備える。容量処理部230は、容量検出部232、容量判断部234および容量拡大部236を有する。入出力処理部210aは、他のストレージ装置10または外部装置20との間で信号を送受し、入出力処理部210bは、コピーユニットエージェント300との間で信号を送受する機能を有する。入出力処理部210aは、外部から入力された信号に含まれるユーザアカウントに基づいて、自身が管理するユーザからの要求であるか否かを判断する。別のユーザからの要求である場合にはその信号を無視し、ファイルシステムエージェント200は動作しない。コピーユニットID格納部250は、管理するコピーユニット500のIDを格納する。ID以外にも、コピーユニット500の存在位置が格納されることが好ましい。
要求受付部212は、他のストレージ装置10または外部装置20から送信される要求を受け付ける。新規ファイルデータの書込時には外部装置20からデータの書込要求が供給され、ファイルデータの送信時には外部装置20からデータの送信要求が供給され、またコピーユニット500の複製時には他のストレージ装置10からデータの複製要求が供給される。
新規ファイルデータの書込時、要求受付部212が受け付けた書込要求が容量処理部230に供給される。この書込要求を受けて、容量検出部232が、管理する1つ又は複数のコピーユニット500におけるストレージ領域の空き容量を検出する。この検出方法には様々な手法があるが、一つの例として容量検出部232が各コピーユニットエージェント300にコピーユニット500の空き容量を問い合わせ、コピーユニットエージェント300が、コピーユニット500のヘッダに記録された空き容量を読み出して容量検出部232に回答し、容量検出部232がその総和を演算する。別の手法としては、容量検出部232が最新の空き容量をデータとして常に保持するようにしてもよい。
容量判断部234は、空き容量が新規ファイルデータの書込みに十分であるか否かを判断する。この判断は、新規ファイルデータの大きさと、空き容量とを比較することにより行われる。新規ファイルデータの大きさは、書込要求に含まれている。新規ファイルデータの大きさが空き容量を超える場合には、容量拡大部236が、データのストレージ領域を拡大するべく、空のコピーユニットを探し出し、ユーザに割り当てる。このとき、容量拡大部236は、ファイルシステムエージェント200が存在するストレージ装置10内で空のコピーユニットを探してもよいが、別のストレージ装置10から探し出してもよい。図3に関連して説明したように、同一内容のコピーユニット500を管理するファイルシステムエージェント200は多重度の数だけ存在しており、新たなコピーユニット500をユーザに割当てる場合には、ファイルシステムエージェント200同士が連絡をとりあって、同数のコピーユニット500をユーザに割り当て、互いに同一のコピーユニットIDを付すようにする。割り当てたコピーユニット500のIDは、コピーユニットID格納部250に追加される。容量拡大部236のこの機能は、空き容量が不足したときに自動的に実行されてもよいが、一旦ユーザに対して容量不足の旨を通知し、容量を拡大することの指示がユーザからなされることを条件として実行されてもよい。
コピーユニット指定部238は、新規ファイルデータを格納するコピーユニット500のIDを指定する。この指定が完了すると、応答部214が、書込要求に対する応答をネットワーク上にブロードキャストする。ブロードキャストすることによって、この応答は、外部装置20だけでなく、同一内容のコピーユニットを管理する他のファイルシステムエージェント200にも供給される。十分な容量を確保できない場合、応答部214は、新規ファイルデータの書込みを要求する外部装置20に対して容量不足の旨を通知する。空き容量が十分である場合には、書込みを受け入れる状態にある旨を通知する。
このとき、同一内容のコピーユニット500を管理する他のファイルシステムエージェント200も書込要求に応答し、この応答はネットワーク上にブロードキャストされる。応答受付部216は、他のストレージ装置10からの応答を受け付け、他のストレージ装置10が正常に動作していることを認識する。応答部214による応答と、応答受付部216による応答受付の時間的な関係により、格納したデータを外部に送信する場合の優先順位などが決定されてもよい。例えば、ファイルシステムエージェント200aが、自身の応答後に他のファイルシステムエージェント200bからの応答を受け付け、一方、他のファイルシステムエージェント200bにおいては、応答する前にファイルシステムエージェント200aからの応答を受け付けた場合、ファイルシステムエージェント200aの優先順位を他のファイルシステムエージェント200bよりも高く設定することができる。この優先順位は、コピーユニットエージェント300に供給され、データの読出制御を行う際に利用されてもよい。
外部装置20は、ストレージ装置10から書込要求に対する応答を受けると、新規ファイルデータを送信する。データ受付部218がこのファイルデータを受け付ける。書込制御部240は、コピーユニット指定部238により指定されたコピーユニット500の空き領域にデータを書き込み、ヘッダには変更された空き位置と空き容量とを書き込む。
容量処理部230の上記説明ではファイルシステムエージェント200が容量を判断することとしたが、コピーユニットエージェント300が書込要求に対して自律的にコピーユニット500の空き容量を検出して、新規ファイルデータを格納できるか否かを判断してもよい。この場合、コピーユニットエージェント300が容量検出部232および容量判断部234を有し、要求受付部212から供給される書込要求に応答する。この応答は各コピーユニットエージェント300からコピーユニット指定部238に供給され、コピーユニット指定部238がデータの書込みに最適なコピーユニット500を指定する。1つのコピーユニット500にデータを格納できる場合には、コピーユニット指定部238は、そのコピーユニット500を指定する。一方、1つのコピーユニット500にデータを格納しきれない場合には、コピーユニット指定部238が容量処理部230を有して、適切なコピーユニット500の組合わせを定めることが好ましい。
図5は、ファイルデータをコピーユニット500に書き込むフローを示すフローチャートである。複数のストレージ装置10のうちストレージ装置10aおよび10bが、外部装置20から送信されるデータを受け付けるファイルシステムエージェント200を有している。この例では、必要な多重度が2の場合を想定している。
まず、外部装置20において新規のファイルデータが生成される(S100)。それからユーザがデータ書込要求を生成し(S102)、書込要求をブロードキャストする(S104)。それから、ユーザアカウントに基づいて、ストレージ装置10aおよび10bが、書込要求を受け付け(S106、S108)、ファイルデータの書込みを受入可能な状態とする。ストレージ装置10cは、このユーザのコピーユニットを管理していないため、この書込要求を受け付けない。このように本ストレージシステム100においては、各ストレージ装置10が自律的に書込要求の取捨をするため、ユーザは自分のファイルデータをどのストレージ装置10に格納するべきかを知る必要がない。ストレージ装置10aおよび10bは、書込要求に対する応答をブロードキャストで送信し(S110、S112)、外部装置20は、それぞれからの応答を受け付ける(S114)。ストレージ装置10aおよび10bも、他のストレージ装置からの応答を受け付ける(S116、S118)。
外部装置20は、多重度が2であることと、ストレージ装置10からの応答を2つ受けたことを確認して、ファイルデータをブロードキャストする(S120)。このとき、ストレージ装置10aと10bのみにデータをマルチキャストしてもよい。ストレージ装置10aおよび10bはデータを受け付け(S122、124)、同一のIDを有するコピーユニットにデータを同時に書き込んでいく(S126、S128)。データをブロードキャスト又はマルチキャストで送信することにより複数のコピーユニットへの同時書込を実現し、コピーユニットをリアルタイムに多重化することが可能となる。
なお、後で詳述するが、本ストレージシステム100は、コピーユニットの多重度が不足する場合に、そのコピーユニットを複製する機能を有している。そのため外部装置20は、多重度が2の場合であっても、ストレージ装置10aまたは10bの一方からの応答を受け付けた段階でファイルデータを送信し、データ受信後この一方のストレージ装置は、他方のストレージ装置に複製要求をだして、コピーユニットの多重度を2に保つように複製作業を行うことができる。
次に、外部装置20が、コピーユニット500に格納したファイルデータの送信を要求する場合について説明する。図4において、要求受付部212が外部装置20からデータの送信要求を受け付け、コピーユニット指定部238に供給する。コピーユニット指定部238は、このファイルデータを格納しているコピーユニットを特定して、対応するコピーユニットエージェント300に対して、入出力処理部210bを介してデータの送信指示を供給する。図3の例でファイルデータAの送信要求を受けた場合、コピーユニット指定部238は、コピーユニット500aを管理するコピーユニットエージェントに対して送信要求を供給する。ファイルデータCの送信要求を受けた場合には、コピーユニット500b、500cおよび500dを管理する3つのコピーユニットエージェントに対して送信要求を供給する。
図6は、コピーユニットエージェント300の構成を示す機能ブロック図である。コピーユニットエージェント300は、入出力処理部310、送信要求受付部312、読出制御部314、同一コピーユニット探索部316、送信ルール決定部318、状況送信部320、監視部330、複製コマンド受付部340および複製要求生成部350を備える。監視部330は状況受付部332および多重度判断部334を有する。
送信要求受付部312が、ファイルシステムエージェント200より供給される送信要求を受け付ける。この要求の受付けを契機として、同一コピーユニット探索部316が、他のストレージ装置10における同一内容のコピーユニットを探索する。コピーユニットエージェント300は、同一内容のコピーユニットの存在位置を予め記録しておいてもよい。同一内容のコピーユニットが見つかると、送信ルール決定部318が、同一内容のコピーユニットを管理するコピーユニットエージェントとデータの送信ルールを決定する。送信ルール決定部318は、図4の応答受付部216において生成された優先順位を用いて送信ルールを決定してもよい。読出制御部314は、同一内容のコピーユニットを有する他のストレージ装置と協同してデータを送信するようにデータを読み出す。読み出されたデータは、ファイルシステムエージェント200のデータ送信部220からネットワーク30上に送信される。
図3において、ファイルAの送信要求があった場合、コピーユニット500aを管理するコピーユニットエージェント300aと、コピーユニット500gを管理するコピーユニットエージェント300gとの間で、ファイルAの送信ルールを決定する。単純には、ファイルAの半分をコピーユニットエージェント300aが送信し、ファイルAの残り半分をコピーユニットエージェント300gが送信するというルールが考えられる。例えば、数十キロバイト程度の所定長のデータブロック毎にファイルAを分割して、ブロックを交互に送信するルールを採用することも可能である。データの送信においては、ハードディスクからの読出しがボトルネックとなるため、小さいデータを交互に送信することによりデータを連続的に送信することが可能となる。コピーユニット500の多重度をさらに大きくすることにより、データの送信効率は向上する。また、複数のストレージ装置10からデータを送信するため、あるストレージ装置に障害が生じた場合であっても、残りのストレージ装置でその分を補うことができ、耐障害性に優れたデータ送信を確立することが可能となる。
図7は、ファイルデータをコピーユニット500から読み出して送信するフローを示すフローチャートである。複数のストレージ装置10のうちストレージ装置10aおよび10bが、そのファイルデータを格納したコピーユニット500を管理するコピーユニットエージェント300を有している。データ送信要求の受付の可否は、ユーザアカウントによって決定される。なお前述したとおり、このコピーユニット500は、必ずしもファイルシステムエージェント200を有するストレージ装置10に位置する必要はなく、別のストレージ装置10に存在してもよい。
外部装置20が、データ送信要求を生成し(S200)、送信要求をブロードキャストする(S202)。ストレージ装置10aおよび10bが、この送信要求を受け付け(S204、S206)、それに対する応答をブロードキャストする(S208、S210)。外部装置20は、各ストレージ装置10a、10bからの応答を受け付け(S212)、またストレージ装置10aおよび10bも、他方からの応答を受け付ける(S214、S216)。外部装置20は、ファイルデータの書込みを可能な状態とする。それから、ストレージ装置10aと10bとの間で送信ルールを決定する(S218)。ストレージ装置10aおよび10bは、送信ルールに従ってファイルデータを読み出し(S220、S222)、互いに協同してデータを送信して(S224、S226)、外部装置20はこのデータを受け付ける(S226)。
上記の説明では、便宜上ストレージ装置10aおよび10bがファイルデータを読み出すこととしたが、実際には、ファイルデータの読出しは、対象となるコピーユニット500を管理するコピーユニットエージェント300が行う。したがって、コピーユニット500がファイルシステムエージェント200とは異なるストレージ装置10に格納されている場合には、そのストレージ装置10内のコピーユニットエージェント300がファイルデータの読出しを行うことになる。
続いて、本ストレージシステム100におけるコピーユニット500の複製機能について説明する。本ストレージシステム100においては、ストレージ装置10の耐障害性およびデータ送信効率の向上などの観点から、コピーユニット500の多重度を一定以上に保つことを特徴の一つとしている。そのため前述したように、新規ファイルデータは原則として複数のストレージ装置10に同時に書き込まれ、多重度に変化のない状態が理想である。
しかしながら、ストレージ装置10が物理的な構成をとる以上、劣化は避けられず、使用期間が長くなるにつれて故障する確率も高くなる。また、ストレージシステム100の柔軟性を高めるためにも、新規書込みを要求する外部装置20に対して、必ずしも複数のストレージ装置10に同時書込を行わなければならないという制約を課したくない。さらに、ハードディスク等の記録密度は年々飛躍的に向上しており、省スペース化を実現するためにも、一定周期でストレージ装置10を簡易に交換できることが望ましい。以上の理由から、本ストレージシステム100は、多重度を一定以上に保つべく、自律的にコピーユニット500を複製する機能を有している。
図6において、コピーユニットエージェント300において、状況送信部320が、自身のストレージ状況を示す信号を周期的にブロードキャストする。このストレージ状況を示す信号は、コピーユニットが正常に存在していることを示す信号である。このストレージ状況を示す信号は、キープアライブパケットとして送信されてもよい。また、同一内容のコピーユニット500を管理する他のコピーユニットエージェント300も、ストレージ状況を示す信号を周期的にブロードキャストする。監視部330は、他のコピーユニットエージェント300から送信されるストレージ状況を示す信号を受けて、ストレージ状況を監視する。具体的には、状況受付部332が、他のコピーユニットエージェント300から送信されるストレージ状況を示す信号を受け付ける。周期的に受け付けている場合には、他のストレージ装置10が正常に動作していることを認識する。自身も正常に動作している場合には、多重度判断部334が、管理するコピーユニット500が所定の多重度を保ってストレージシステム100に存在することを判断する。
一方、他のコピーユニットエージェント300から周期的にストレージ状況を示す信号を受け付けられない場合には、多重度判断部334は、コピーユニットの多重度が所定に保たれていないことを判断する。例えばコピーユニット500の必要な多重度が2と定められている場合に、自身は正常であるのに、他からストレージ状況を示す信号を受けられなくなったときには、多重度判断部334は、コピーユニット500の多重度が1になったことを検出し、多重度の不足分を複製要求生成部350に供給する。複製要求生成部350は、多重度の不足分(このケースでは1)だけコピーユニットを複製するように他のストレージ装置10に対する複製要求を生成する。
図8は、複製要求を生成するフローを示すフローチャートである。まず、周期的に他のストレージ装置10から送信されるストレージ状況を示す信号を監視する(S300)。それから多重度を検出し(S302)、検出した多重度と必要な多重度とを比較する(S304)。検出した多重度が必要な多重度以上である場合(S304のN)には、コピーユニット500が正常に保存されていることを認識し、S300からS304までのステップを繰り返す。一方、検出した多重度が必要な多重度よりも小さい場合(S304のY)には、コピーユニット500の多重度が不足していることを検知し、コピーユニット500を格納する他のストレージ装置10に故障が生じたと判断して、コピーユニット500の複製要求を生成する(S306)。なお、S304において、他のストレージ装置10に故障が生じたことを判断するのは、ストレージ状況を示す信号の送信周期に比して十分に長い期間ストレージ状況を示す信号を受け付けなかったことを条件とするのが好ましい。ストレージ装置10に故障がない場合であっても、ネットワーク30上のトラフィックの問題で、一時的に受信するタイミングが遅れることもあるからである。
図6において、故障の場合でなく、ストレージ装置10を交換する場合には、元のストレージ装置10がネットワーク30から接続を切断される前に複製コマンドが生成され、複製コマンド受付部340が受け取る。複製コマンド受付部340はその旨を複製要求生成部350に通知し、複製要求生成部350が複製要求を他のストレージ装置10に送信する。この複製コマンドは、ユーザにより入力されてもよいが、ユーザからの切断要求を受けた際に、複製コマンドを自動的に生成して複製コマンド受付部340に供給するようにしてもよい。なお、複製コマンドを供給しない場合、例えばネットワークとの接続が突然切断されたような場合であっても、監視部330がストレージ状況を監視することにより多重度が保たれることは前述したとおりである。
図4において、他のストレージ装置10から供給される複製要求は、要求受付部212にて受け付けられる。複製要求を受けて、コピーユニット指定部238は、空のコピーユニットにIDを付与して新たなコピーユニットをユーザに割り当てる。このIDは、複製されるコピーユニット500と同一のものである。応答部214がその旨を、複製要求を生成したコピーユニットエージェント300に送信する。要求元のコピーユニットエージェント300は、その応答を受けて、当該コピーユニット500のデータを送信し、要求先のコピーユニットエージェント300は、そのデータをそのまま新たなコピーユニットに複製する。
複数のコピーユニット500のうちの1つは、ファイルシステムエージェント200を起動可能なデータを有している。ストレージ装置10が突然ネットワーク30から切断されて、ユーザのコピーユニットの一系列が全て消失した場合、生き残っている他の系列のコピーユニット500がそれぞれ複製要求を生成して、他のストレージ装置10にコピーユニット500を複製する。それから、複製されたコピーユニット500のうちの1つがファイルシステムエージェント200を起動し、起動されたファイルシステムエージェント200が複製された全てのコピーユニット500を管理する。このようにして、コピーユニット500の一系列を復元することが可能となる。
図9は、本発明の第2の実施形態に係るストレージシステム700の構成図である。このストレージシステム700は、複数のストレージ群600a、600b、600cを接続して構成され、各ストレージ群600は、ゲートウェイ装置12と、このゲートウェイ装置にネットワーク接続される複数のストレージ装置10を備える。ストレージ装置10およびネットワーク30は、第1の実施形態において説明したストレージシステム100の構成をとる。第2の実施形態のように複数のストレージ群を接続することによって、ストレージ群内の容量の制約にとらわれず、システム全体の容量を制限なく増加させることが可能となる。ストレージ群600間の通信は、ゲートウェイ装置12を介して行われる。
また、同一内容のコピーユニット500は、少なくとも2つのストレージ群で保持されることが好ましい。災害などによりストレージ群600が消失する危険性を回避するために、コピーユニット500を物理的に離れたストレージ群600に格納する。
図10は、本発明の実施形態にかかるストレージ装置10のハードウェアコンポーネントを示す構成図である。ストレージ装置10は、表示装置50、入力部52、CPU54、ハードディスク56、RAM(Random Access Memory)58およびドライブ装置60を備える。これらの構成は、バス62などの信号伝送路により電気的に接続されている。入力部52は、ユーザからストレージ装置10をネットワークから切り離す切断コマンドなどを受け付ける。このストレージ装置10がストレージシステム100の専用機器として構成される場合、ユーザに可視的な情報を提示する必要やユーザからの直接入力を受け付ける必要がないことも考えられ、この場合には表示装置50、入力装置52、ドライブ装置60などは存在しなくてもよい。あるストレージ装置10にウェブサーバ機能を持たせて、同じネットワークに接続された別のストレージ装置10からの入力を受け付けるように構成してもよい。
ハードディスク56は、大容量の磁気記録装置であり、ストレージ領域は複数のコピーユニットに分割される。ハードディスク56には、このコピーユニットを記録単位としてデータが記録される。ここで、ハードディスク56は、他の大容量記録装置への置換えが可能である。記録媒体70は、実施形態に関連して説明したストレージ装置10の様々な機能を、CPU54に実現させるためのプログラムを記録する。記録媒体70がドライブ装置60に挿入されると、そのプログラムは、ハードディスク56またはRAM58に読み出され、CPU54は、読み出されたプログラムによりハードディスク56の分割機能やストレージ管理機能などを実現する。この記録媒体70は、CD−ROM、DVD、FDなどのコンピュータ読み取り可能な媒体である。
ここでは、ストレージ管理用のプログラムが記録媒体70に記録されている例について説明したが、別の例においては、プログラムは、無線、有線を問わず、外部のコンピュータまたは端末から送信されてもよい。図10に示したハードウェア構成において、プログラムは、コンピュータにストレージ管理機能を実現させればよいのであって、外部から供給される場合だけでなく、予めハードディスク56に格納されていて、ストレージシステム100用の専用機器を構成するものとして存在してよいことも当業者には理解されるところである。
以上、本発明を実施の形態をもとに説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せに、さらにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
例えば、上述の実施形態ではストレージ装置10がファイルシステムエージェント200とコピーユニットエージェント300を用いて実現されているが、一方のエージェントの機能を他方のエージェントが有していてもよく、または両者が有していてもよい。本ストレージシステム100において、各ストレージ装置10は自律的に動作する機能を有しており、データの複製等を行う際に管理サーバを必要としないが、他の何らかの機能を実現するための形式的なサーバを備えることも可能である。また、上記例では、ファイルデータをユーザごとに管理することとしているが、ユーザの制限を外して、複数のユーザのデータを1つのファイルシステムエージェントに管理させてもよい。
また本実施形態の説明において、データの書込要求を行う外部装置20と、データを格納するストレージ装置10とを別の構成として記載しているが、データの書込要求を行う装置とストレージ装置10とは一体として構成されてもよい。例えば、一つのLANに接続する複数のパーソナルコンピュータがストレージ装置10としての機能も有している場合、あるコンピュータのユーザが、自身で作成したファイルデータを一旦該コンピュータに備わるハードディスクに格納する。その後、コンピュータ内で起動されるコピーユニットエージェントが、そのデータを他のコンピュータのハードディスクにおいて複製するように複製要求を生成してもよい。ユーザは自身のハードディスクにデータを保存することにより、データの更新などの作業を簡易に行うことが可能となり、また自身のハードディスクには常に最新のデータが格納されることとなるため、自身のハードディスク内のデータと複製先のデータが異なるものである場合には、複製先のデータが古いデータであることを認識して、最新のデータを複製先のデータにオーバーライトすることが容易に実現可能となる。
また、ストレージシステム100の運用上、ユーザに割当てたコピーユニットを開放したい場合がある。この場合には、例えばストレージ装置10自身ないしはその他の装置でコピーユニットの開放コマンドが生成され、対応するコピーユニットエージェントがこれを受けてコピーユニットを不活性にし、コピーユニット内のデータを更新できない状態にする。本システム100において同一内容のコピーユニットは複数存在しており、これら複数のコピーユニット全てが同時期に不活性にされる。なお、開放コマンドの受付時期の関係で、一つのコピーユニットが不活性にされた後、まだ他のコピーユニットが不活性にされていない場合に、当該他のコピーユニットが自律的に複製要求を生成しないようにするために、複製要求の生成タイミングは、不活性にされたコピーユニットからストレージ状況を示す信号を受け取らなくなった時から十分に時間が経過したときであることが好ましい。このように複製要求の生成タイミングを設定することで、当該他のコピーユニットは、複製要求を生成する前に開放コマンドを受け付けることが可能となり、実質的に同時期に複数の同一内容のコピーユニットを不活性にすることが可能となる。コピーユニットエージェントは、コピーユニットを不活性にした後、該コピーユニット内のデータおよびIDを消去して、元の空のコピーユニットの状態に戻してもよい。
10・・・ストレージ装置、20・・・外部装置、30・・・ネットワーク、100・・・ストレージシステム、200・・・ファイルシステムエージェント、300・・・コピーユニットエージェント、400・・・格納部、500・・・コピーユニット