(57)【特許請求の範囲】
【請求項１】
論理ボリュームへの記憶領域割当処理をコンピュータに実行させる論理ボリューム管理プログラムであって、
前記コンピュータを、
第１段論理ボリュームと少なくとも１つの第２段論理ボリュームとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を記憶する第１の記憶手段、
前記第２段論理ボリュームと、前記コンピュータにネットワークを介して接続された複数のストレージ装置のうち少なくとも１つのストレージ装置との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を記憶する第２の記憶手段、
前記第１段論理ボリュームの記憶領域を指定したアクセス要求に応答して、前記第１段論理ボリューム構成情報を参照し、アクセス要求で指定された前記第１段論理ボリュームの記憶領域に対応する前記第２段論理ボリュームの記憶領域を判断し、前記第２段論理ボリューム構成情報を参照し、判断された前記第２段論理ボリュームの記憶領域に対応するストレージ装置の記憶領域へアクセスを行うアクセス手段、
記憶容量を指定した前記第１段論理ボリュームの記憶領域拡張要求に応答して、前記第２段論理ボリュームに対応するストレージ装置内の記憶領域と、前記記憶領域拡張要求で指定された記憶容量と前記第１段論理ボリュームの拡張前の記憶容量との差分に相当する前記複数のストレージ装置のうちの何れかのストレージ装置内の空き記憶領域とが対応付けられた新たな第２段論理ボリュームを生成し、前記新たな第２段論理ボリュームとストレージ装置との記憶領域間の対応関係を前記第２段論理ボリューム構成情報に登録する論理ボリューム生成手段、
前記第１段論理ボリューム構成情報に記憶された前記第１段論理ボリュームの記憶領域を前記記憶領域拡張要求で指定された記憶容量に拡張し、記憶領域が拡張された前記第１段論理ボリュームに対して、前記論理ボリューム生成手段で生成した前記新たな第２段論理ボリュームを対応付ける記憶領域拡張手段、
として機能させる論理ボリューム管理プログラム。
【請求項２】
前記記憶領域拡張手段は、前記第１段論理ボリュームに対して前記新たな第２段論理ボリュームを対応付けた後、記憶領域拡張前に前記第１段論理ボリュームに対応付けられていた前記第２段論理ボリュームの情報を前記第２の記憶手段から削除することを特徴とする請求項１記載の論理ボリューム管理プログラム。
【請求項３】
前記第２段論理ボリュームの記憶領域はセグメント単位に分割して管理されており、各セグメントには、セグメントと同じ記憶容量のプライマリスライスとセカンダリスライスとが設けられ、プライマリスライスとセカンダリスライスとに対して個別のストレージ装置の記憶領域が対応付けられており、前記アクセス手段は、プライマリスライスに対応付けられた前記ストレージ装置の記憶領域にアクセスすることを特徴とする請求項１記載の論理ボリューム管理プログラム。
【請求項４】
論理ボリュームへの記憶領域割当処理を行う論理ボリューム管理装置であって、
第１段論理ボリュームと少なくとも１つの第２段論理ボリュームとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を記憶する第１の記憶手段と、
前記第２段論理ボリュームと、前記論理ボリューム管理装置にネットワークを介して接続された複数のストレージ装置のうち少なくとも１つのストレージ装置との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を記憶する第２の記憶手段と、
前記第１段論理ボリュームの記憶領域を指定したアクセス要求に応答して、前記第１段論理ボリューム構成情報を参照し、アクセス要求で指定された前記第１段論理ボリュームの記憶領域に対応する前記第２段論理ボリュームの記憶領域を判断し、前記第２段論理ボリューム構成情報を参照し、判断された前記第２段論理ボリュームの記憶領域に対応するストレージ装置の記憶領域へアクセスを行うアクセス手段と、
記憶容量を指定した前記第１段論理ボリュームの記憶領域拡張要求に応答して、前記第２段論理ボリュームに対応する前記ストレージ装置内の記憶領域と、前記記憶領域拡張要求で指定された記憶容量と前記第１段論理ボリュームの拡張前の記憶容量との差分に相当する前記複数のストレージ装置のうちの何れかのストレージ装置内の空き記憶領域とが対応付けられた新たな第２段論理ボリュームを生成し、前記新たな第２段論理ボリュームとストレージ装置との記憶領域間の対応関係を前記第２段論理ボリューム構成情報に登録する論理ボリューム生成手段と、
前記第１段論理ボリューム構成情報に記憶された前記第１段論理ボリュームの記憶領域を前記記憶領域拡張要求で指定された記憶容量に拡張し、記憶領域が拡張された前記第１段論理ボリュームに対して、前記論理ボリューム生成手段で生成した前記新たな第２段論理ボリュームを対応付ける記憶領域拡張手段と、
を有する論理ボリューム管理装置。
【請求項５】
論理ボリュームへの記憶領域割当処理をコンピュータが行う論理ボリューム管理方法であって、
前記コンピュータが、
第１段論理ボリュームと少なくとも１つの第２段論理ボリュームとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を第１の記憶手段に記憶させ、
前記第２段論理ボリュームと、前記コンピュータにネットワークを介して接続された複数のストレージ装置のうち少なくとも１つのストレージ装置との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を第２の記憶手段に記憶させ、
前記第１段論理ボリュームの記憶領域を指定したアクセス要求に応答して、前記第１段論理ボリューム構成情報を参照し、アクセス要求で指定された前記第１段論理ボリュームの記憶領域に対応する前記第２段論理ボリュームの記憶領域を判断し、前記第２段論理ボリューム構成情報を参照し、判断された前記第２段論理ボリュームの記憶領域に対応するストレージ装置の記憶領域へアクセスを行い、
記憶容量を指定した前記第１段論理ボリュームの記憶領域拡張要求に応答して、前記第２段論理ボリュームに対応する前記ストレージ装置内の記憶領域と、前記記憶領域拡張要求で指定された記憶容量と前記第１段論理ボリュームの拡張前の記憶容量との差分に相当する前記複数のストレージ装置のうちの何れかのストレージ装置内の空き記憶領域とが対応付けられた新たな第２段論理ボリュームを生成し、前記新たな第２段論理ボリュームとストレージ装置との記憶領域間の対応関係を前記第２段論理ボリューム構成情報に登録し、
前記第１段論理ボリューム構成情報に記憶された前記第１段論理ボリュームの記憶領域を前記記憶領域拡張要求で指定された記憶容量に拡張し、記憶領域が拡張された前記第１段論理ボリュームに対して、前記新たな第２段論理ボリュームを対応付ける、
処理を実行することを特徴とする論理ボリューム管理方法。
【請求項６】
論理ボリュームへの記憶領域割当処理を行う分散ストレージシステムであって、
ネットワークに接続され、ストレージ装置を有する複数のディスクノードと、
第１段論理ボリュームと少なくとも１つの第２段論理ボリュームとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を記憶する第１の記憶手段と、前記第２段論理ボリュームと、前記複数のディスクノードそれぞれが有する複数のストレージ装置のうちの少なくとも１つのストレージ装置との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を記憶する第２の記憶手段と、前記第１段論理ボリュームの記憶領域を指定したアクセス要求に応答して、前記第１段論理ボリューム構成情報を参照し、アクセス要求で指定された前記第１段論理ボリュームの記憶領域に対応する前記第２段論理ボリュームの記憶領域を判断し、前記第２段論理ボリューム構成情報を参照し、判断された前記第２段論理ボリュームの記憶領域に対応するストレージ装置の記憶領域へアクセスを行うアクセス手段と、記憶容量を指定した前記第１段論理ボリュームの記憶領域拡張要求に応答して、前記第２段論理ボリュームに対応する前記ストレージ装置内の記憶領域と、前記記憶領域拡張要求で指定された記憶容量と前記第１段論理ボリュームの拡張前の記憶容量との差分に相当する前記複数のストレージ装置のうちの何れかのストレージ装置内の空き記憶領域とが対応付けられた新たな第２段論理ボリュームを生成し、前記新たな第２段論理ボリュームとストレージ装置との記憶領域間の対応関係を前記第２段論理ボリューム構成情報に登録する論理ボリューム生成手段と、前記第１段論理ボリューム構成情報に記憶された前記第１段論理ボリュームの記憶領域を前記記憶領域拡張要求で指定された記憶容量に拡張し、記憶領域が拡張された前記第１段論理ボリュームに対して、前記論理ボリューム生成手段で生成した前記新たな第２段論理ボリュームを対応付ける記憶領域拡張手段と、を有し、前記ネットワークに接続されたアクセスノードと、
前記複数のストレージ装置の記憶領域のうち、前記第２段論理ボリュームに割り当てられている記憶領域と、前記第２段論理ボリュームに割り当てられていない記憶領域とを管理しており、前記第１段論理ボリュームの記憶領域を拡張する場合、前記複数のストレージ装置の記憶領域のうち、前記第２段論理ボリュームに割り当てられていない記憶領域を選択し、選択したストレージ装置の記憶領域を、前記新たな第２段論理ボリュームの拡張分の記憶領域に対して割り当てるべき記憶領域として通知する制御ノードと、
を有する分散ストレージシステム。
【請求項７】
前記制御ノードは、前記複数のストレージ装置の空き領域を管理しており、前記第１段論理ボリュームの記憶容量を拡張する際に、前記アクセスノードに対して、前記新たな第２段論理ボリュームに割り当てるべきストレージ装置内の記憶領域を通知することを特徴とする請求項６記載の分散ストレージシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は論理ボリュームへの記憶領域割当を管理するための論理ボリューム管理プログラム、論理ボリューム管理装置、論理ボリューム管理方法、および分散ストレージシステムに関し、特に記憶領域の拡張を行うための論理ボリューム管理プログラム、論理ボリューム管理装置、論理ボリューム管理方法、および分散ストレージシステムに関する。
【背景技術】
【０００２】
大規模なコンピュータシステムでは、複数のディスク装置をまとめた論理ボリューム（仮想ボリュームともいう）を定義する場合がある。論理ボリュームでは、アプリケーションからのアクセスに使用する論理的なブロック番号（論理ブロック番号）と、複数のディスク装置内の１つのディスク装置およびそのディスク装置内のブロック番号（物理ブロック番号）との対応関係が定義される。これにより、アプリケーションが論理ブロック番号を指定することで、対応するディスク装置および物理ブロック番号を一意に特定し、指定されたブロックへのアクセスが可能となる。なお、複数のディスク装置で構成されたＲＡＩＤ（Redundant Array of Independent Disks）システムを、論理ボリュームに割り当てる１台のディスク装置として利用することもできる。
【０００３】
このような論理ボリュームを用いたシステムでは、システムを長期間運用していると、論理ボリュームに格納すべきデータ量が次第に増加していく。すると、論理ボリュームの記憶容量を拡張させる必要が生じる。論理ボリュームの記憶容量を拡張させる場合、論理ボリュームに対してディスク装置の追加割当を行う。論理ボリュームに割り当てるディスク装置が増加することで、論理ボリュームによってアプリケーションに対して提供される記憶容量も増加する。
【０００４】
ところが、基本的には、論理ボリュームの記憶領域を拡張するには、その論理ボリュームの使用を一旦停止し、新たに論理ボリュームの記憶領域を定義し直す必要がある。この場合、運用が一時的に停止することとなる。そこで、論理ボリュームの使用を停止せずに、運用しながら記憶領域の拡張を可能とする技術が考えられている。例えば、ストレージ内部に複数の論理ボリューム（内部論理ボリューム）と外部から認識される論理ボリューム（外部論理ボリューム）とを設け、内部論理ボリュームと外部論理ボリュームとの対応関係を運用中に再定義する技術がある。これにより、計算機から見たときの論理ボリュームの拡張が可能となる（例えば、特許文献１参照）。
【０００５】
なお、管理テーブルを用いて、論理ボリュームへのディスク装置の割当を管理すると、論理ボリュームの記憶容量が大きくなるのに従い、管理テーブルのデータ容量も大きくなる。例えば、論理ボリュームの記憶容量を増加させるために、その論理ボリュームに割り当てるディスク装置を増加させれば、その対応関係を管理するための情報も増加する。管理テーブルは、運用中はメモリに格納しておく必要があるため、管理テーブルの容量増加はメモリ資源の使用量増加を招く。
【０００６】
そこで、管理テーブルを格納するために必要なメモリ資源の量を抑制する技術が考えられている。例えば、管理テーブルの全管理データをディスクドライブに配置し、必要な部分のみをその都度メモリに格納することで、メモリの使用量を削減する技術がある（例えば、特許文献２参照）。
【特許文献１】特開２００２−２３６５６０号公報
【特許文献２】特開２００４−７８３９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上記特許文献１のような技術を応用すれば、論理ボリュームに割り当てるディスク装置の再構築が可能である。この再構築機能によって、論理ボリュームに割り当てられていたディスク装置を他のディスク装置に交換することもできる。例えば、論理ボリュームに割り当てられていた複数のディスク装置を、より記憶容量の大きな１台のディスク装置に置き換えることができる。このような置き換えを行うと、論理ボリュームに割り当てるディスク装置の数が少なくなり、管理テーブルのデータ量を削減できる。
【０００８】
また、上記特許文献２のような技術を用いて管理テーブルを格納するためのメモリの使用量の削減が可能であっても、論理ボリュームに対して割当可能なディスク装置の最大数に制限がある場合がある。このような場合、システムが肥大化していくと、論理ボリュームに割り当てられているディスク装置を、１台当たりの記憶容量がより大きなディスク装置に置き換えて、ディスク装置数を減少させる必要が生じる。
【０００９】
しかし、論理ボリュームに割り当てるディスク装置の置き換えを行うと、格納されていたデータの大量のコピーが発生するという問題がある。ディスク装置内の全てのデータをコピーするには、ディスク装置間の通信経路上での通信量の増加を招き、同じ通信経路を介した他のデータ通信の効率が低下する。また、コピー対象のディスク装置へのデータ入出力が頻繁に発生することで、運用中のサービスを提供するための該当ディスク装置に対するアクセス効率が低下する。
【００１０】
本発明はこのような点に鑑みてなされたものであり、ユーザからの直接のアクセス対象となる論理ボリュームに割り当てる他のボリューム数を増加させずに、かつデータのアクセス効率を低下させずに、直接のアクセス対象となる論理ボリュームの記憶容量の拡張が可能な論理ボリューム管理プログラム、論理ボリューム管理装置、論理ボリューム管理方法、および分散ストレージシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、論理ボリュームへの記憶領域割当処理をコンピュータに実行させるための論理ボリューム管理装置が提供される。この論理ボリューム管理装置は、第１の記憶手段、第２の記憶手段、アクセス手段、論理ボリューム生成手段、および記憶領域拡張手段を有する。
【００１２】
第１の記憶手段は、第１段論理ボリュームと少なくとも１つの第２段論理ボリュームとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を記憶する。第２の記憶手段は、第２段論理ボリュームと少なくとも１つのストレージ装置との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を記憶する。アクセス手段は、第１段論理ボリュームの記憶領域を指定したアクセス要求に応答して、第１段論理ボリューム構成情報を参照し、アクセス要求で指定された第１段論理ボリュームの記憶領域に対応する第２段論理ボリュームの記憶領域を判断し、第２段論理ボリューム構成情報を参照し、判断された第２段論理ボリュームの記憶領域に対応するストレージ装置の記憶領域へアクセスを行う。論理ボリューム生成手段は、記憶容量を指定した第１段論理ボリュームの記憶領域拡張要求に応答して、第２段論理ボリュームに対して割り当てられたストレージ装置内の記憶領域と、記憶領域拡張要求で指定された記憶容量と第１段論理ボリュームの拡張前の記憶容量との差分に相当するストレージ装置内の記憶領域とが割り当てられた新たな第２段論理ボリュームを生成し、新たな第２段論理ボリュームとストレージ装置との記憶領域間の対応関係を第２段論理ボリューム構成情報に登録する。記憶領域拡張手段は、第１段論理ボリューム構成情報に記憶された第１段論理ボリュームの記憶領域を記憶領域拡張要求で指定された記憶容量に拡張し、記憶領域が拡張された第１段論理ボリュームに対して、論理ボリューム生成手段で生成した新たな第２段論理ボリュームを対応付ける。
【００１３】
このような論理ボリューム管理装置によれば、記憶領域拡張要求が入力されると、既存の第２段論理ボリュームに割り当てられていたストレージ装置の記憶領域と、拡張分のストレージ装置の記憶領域が割り当てられた新たな第２段論理ボリュームが生成される。そして、記憶領域を拡張した第１段論理ボリュームに対して、新たな第２段論理ボリュームが割り当てられる。
【００１４】
また、上記論理ボリューム管理装置と同様の機能をコンピュータで実現するための論理ボリューム管理プログラムが提供される。さらに、上記論理ボリューム管理装置で実行される処理と同様の処理をコンピュータで行う論理ボリューム管理方法が提供される。
【００１５】
また、上記課題を解決するために、論理ボリュームへの記憶領域割当を管理するための分散ストレージシステムであって、ネットワークに接続され、ストレージ装置を有する少なくとも１つのディスクノードと、第１段論理ボリュームと少なくとも１つの第２段論理ボリュームとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を記憶する第１の記憶手段と、前記第２段論理ボリュームと少なくとも１つの前記ストレージ装置との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を記憶する第２の記憶手段と、前記第１段論理ボリュームの記憶領域を指定したアクセス要求に応答して、前記第１段論理ボリューム構成情報を参照し、アクセス要求で指定された前記第１段論理ボリュームの記憶領域に対応する前記第２段論理ボリュームの記憶領域を判断し、前記第２段論理ボリューム構成情報を参照し、判断された前記第２段論理ボリュームの記憶領域に対応する前記ストレージ装置の記憶領域へアクセスを行うアクセス手段と、記憶容量を指定した前記第１段論理ボリュームの記憶領域拡張要求に応答して、前記第２段論理ボリュームに対して割り当てられた前記ストレージ装置内の記憶領域と、前記記憶領域拡張要求で指定された記憶容量と前記第１段論理ボリュームの拡張前の記憶容量との差分に相当する前記ストレージ装置内の記憶領域とが割り当てられた新たな第２段論理ボリュームを生成し、前記新たな第２段論理ボリュームと前記ストレージ装置との記憶領域間の対応関係を前記第２段論理ボリューム構成情報に登録する論理ボリューム生成手段と、前記第１段論理ボリューム構成情報に記憶された前記第１段論理ボリュームの記憶領域を前記記憶領域拡張要求で指定された記憶容量に拡張し、記憶領域が拡張された前記第１段論理ボリュームに対して、前記論理ボリューム生成手段で生成した前記新たな第２段論理ボリュームを対応付ける記憶領域拡張手段と、を有し、前記ネットワークに接続されたアクセスノードと、前記ストレージ装置の記憶領域のうち、前記第２段論理ボリュームに割り当てられている記憶領域と、前記第２段論理ボリュームに割り当てられていない記憶領域とを管理しており、前記第１段論理ボリュームの記憶領域を拡張する場合、前記ストレージ装置の記憶領域のうち、前記第２段論理ボリュームに割り当てられていない記憶領域を選択し、選択した前記ストレージ装置の記憶領域を、前記新たな第２段論理ボリュームの拡張分の記憶領域に対して割り当てるべき記憶領域として通知する制御ノードと、を有する分散ストレージシステムが提供される。
【発明の効果】
【００１６】
本発明では、ユーザからの直接のアクセス対象となる論理ボリュームに割り当てる他のボリューム数を増加させずに、かつデータのコピーも行わずにアクセス対象となる論理ボリュームの記憶容量が拡張できる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、実施の形態の概要を示す図である。論理ボリューム管理装置は、第１の記憶手段１、第２の記憶手段２、アクセス手段３、論理ボリューム生成手段４、および記憶領域拡張手段５を有する。
【００１８】
第１の記憶手段１は、第１段論理ボリューム１ａと少なくとも１つの第２段論理ボリューム２ａ，２ｂ，２ｃとの記憶領域間の対応関係が登録された第１段論理ボリューム構成情報を記憶する。図１の例では、記憶領域拡張前は、第１段論理ボリュームに対して２台の第２段論理ボリューム２ａ，２ｂが対応付けられているものとする。
【００１９】
第２の記憶手段２は、第２段論理ボリューム２ａ，２ｂ，２ｃと少なくとも１つのストレージ装置６〜８との記憶領域間の対応関係が登録された第２段論理ボリューム構成情報を記憶する。図１の例では、記憶領域拡張前は、第２段論理ボリューム２ａ，２ｂのみが存在する。第２段論理ボリューム２ａには、ストレージ装置６の記憶領域６ａが対応付けられている。第２段論理ボリューム２ｂには、ストレージ装置７の記憶領域７ａが対応付けられている。
【００２０】
アクセス手段３は、第１段論理ボリューム１ａの記憶領域を指定したアクセス要求に応答して、第１段論理ボリューム構成情報を参照し、アクセス要求で指定された第１段論理ボリューム１ａの記憶領域に対応する第２段論理ボリューム２ａ，２ｂ，２ｃの記憶領域を判断する。さらに、アクセス手段３は、第２段論理ボリューム構成情報を参照し、判断された第２段論理ボリュームの記憶領域に対応するストレージ装置の記憶領域へアクセスを行う。
【００２１】
論理ボリューム生成手段４は、記憶容量を指定した第１段論理ボリューム１ａの記憶領域拡張要求に応答して、第２段論理ボリューム２ａ，２ｂに対して割り当てられたストレージ装置６，７内の記憶領域６ａ，７ａと、記憶領域拡張要求で指定された記憶容量と第１段論理ボリュームの拡張前の記憶容量との差分に相当するストレージ装置８内の記憶領域８ａとが割り当てられた新たな第２段論理ボリューム２ｃを生成する。次に、論理ボリューム生成手段４は、新たな第２段論理ボリューム２ｃとストレージ装置６〜８との記憶領域間の対応関係を第２段論理ボリューム構成情報に登録する。記憶領域拡張手段５は、第１段論理ボリューム構成情報に記憶された第１段論理ボリューム１ａの記憶領域を記憶領域拡張要求で指定された記憶容量に拡張する。そして、記憶領域拡張手段５は、記憶領域が拡張された第１段論理ボリューム１ａに対して、論理ボリューム生成手段４で生成した新たな第２段論理ボリューム２ｃを対応付ける。
【００２２】
このような論理ボリューム管理装置によれば、記憶領域拡張要求が入力されると、既存の第２段論理ボリューム２ａ，２ｂに割り当てられていたストレージ装置６，７の記憶領域６ａ，７ａと、拡張分のストレージ装置８の記憶領域８ａが割り当てられた新たな第２段論理ボリューム２ｃが生成される。そして、記憶領域を拡張した第１段論理ボリューム１ａに対して、新たな第２段論理ボリューム２ｃが割り当てられる。その後、アクセス要求が入力されると、アクセス手段３により、アクセス対象の第１段論理ボリューム１ａの記憶領域に対応する新たな第２段論理ボリューム２ｃ内の記憶領域が判断される。そして、判断した記憶領域に対応するストレージ装置６〜８内のいずれかの記憶領域に対してアクセスが行われる。
【００２３】
このようにして、第１段論理ボリューム１ａの記憶領域の拡張が行われる。その際、ストレージ装置６，７の記憶領域６ａ，７ａは、既存の第２段論理ボリューム２ａ，２ｂと新たな第２段論理ボリューム２ｃとに対して重複して割り当てられている。すなわち、ストレージ装置６，７の記憶領域６ａ，７ａに対しては、既存の第２段論理ボリューム２ａ，２ｂと新たな第２段論理ボリューム２ｃとのいずれからでもアクセスできる。その結果、既存の第２段論理ボリューム２ａ，２ｂを介してアクセスしていたデータに関して、新たな第２段論理ボリューム２ｃ経由でアクセス可能であり、新たな第２段論理ボリューム２ｃを作成したことによるストレージ装置６，７の記憶領域６ａ，７ａ内のデータのコピーは不要である。
【００２４】
しかも、新たに作成した第２段論理ボリューム２ｃは、既存の第２段論理ボリューム２ａ，２ｂの記憶容量の総量に対して拡張分の記憶容量を加算した記憶容量を有している。そのため、拡張後の第１段論理ボリューム１ａに対して割り当てるボリュームは、新たに作成した１台の第２段論理ボリューム２ｃのみですむ。その結果、第１段論理ボリューム１ａに割当可能なボリューム数の上限があったとしても、その上限を超えることなく第１段論理ボリューム１ａの記憶領域の拡張が可能となる。
【００２５】
このような２段階の論理ボリューム構成は、１つのコンピュータ内で実現できる。また、外部のコンピュータと連携して、第２段論理ボリュームとストレージ装置との間の記憶領域間の対応関係を管理することもできる。例えば、分散ストレージシステムには、ネットワークを介して接続されたディスクノードで提供される記憶機能を論理ボリューム（図１の第２段論理ボリュームに相当）としてアクセスノードに定義し、アクセスノードからディスクノードにネットワーク経由でリモートアクセスする機能がある。この場合、アクセスノード内のローカルのディスクアクセス機能において、論理ボリューム（図１の第１段論理ボリュームに相当）を定義し、その論理ボリュームに割り当てるべきボリュームとして、リモートアクセス用に定義された論理ボリュームを割り当てることができる。これによって、第１段としてローカルアクセス用の論理ボリュームを用い、第２段としてリモートアクセス用の論理ボリュームを用いた２段階の論理ボリューム構成が構築できる。
【００２６】
分散ストレージシステムは、ストレージ装置の追加が容易である。そのため、第２段の論理ボリュームを分散ストレージシステムによるリモートアクセス用の論理ボリュームとすることで、第１段の論理ボリュームの記憶容量の拡張も容易となる。そこで、以下に、分散ストレージシステムを用いた本実施の形態を詳細に説明する。
【００２７】
図２は、本実施の形態の分散ストレージシステム構成例を示す図である。本実施の形態では、ネットワーク１０を介して、複数のディスクノード１００，２００，３００，４００、制御ノード５００、アクセスノード６００，７００、および管理ノード８００が接続されている。ディスクノード１００，２００，３００，４００それぞれには、ストレージ装置１１０，２１０，３１０，４１０が接続されている。
【００２８】
ストレージ装置１１０には、複数のハードディスク装置（ＨＤＤ）１１１，１１２，１１３，１１４が実装されている。ストレージ装置２１０には、複数のＨＤＤ２１１，２１２，２１３，２１４が実装されている。ストレージ装置３１０には、複数のＨＤＤ３１１，３１２，３１３，３１４が実装されている。ストレージ装置４１０には、複数のＨＤＤ４１１，４１２，４１３，４１４が実装されている。各ストレージ装置１１０，２１０，３１０，４１０は、内蔵するＨＤＤを用いたＲＡＩＤシステムである。本実施の形態では、各ストレージ装置１１０，２１０，３１０，４１０のＲＡＩＤ５のディスク管理サービスを提供する。
【００２９】
ディスクノード１００，２００，３００，４００は、例えば、ＩＡ（Intel Architecture）と呼ばれるアーキテクチャのコンピュータである。ディスクノード１００，２００，３００，４００は、接続されたストレージ装置１１０，２１０，３１０，４１０に格納されたデータを管理し、管理しているデータをネットワーク１０経由で端末装置２１，２２，２３に提供する。また、ディスクノード１００，２００，３００，４００は、冗長性を有するデータを管理している。すなわち、同一のデータが、少なくとも２つのディスクノードで管理されている。
【００３０】
制御ノード５００は、ディスクノード１００，２００，３００，４００を管理する。例えば、制御ノード５００は、管理ノード８００から新たなリモート論理ボリュームの割当要求を受け取ると、新たなリモート論理ボリュームを定義し、その定義内容をディスクノード１００，２００，３００，４００やアクセスノード６００，７００に通知する。これにより、アクセスノード６００，７００から、新たに定義したリモート論理ボリュームを介したディスクノード１００，２００，３００，４００へのアクセスが可能となる。
【００３１】
アクセスノード６００，７００には、ネットワーク２０を介して複数の端末装置２１，２２，２３が接続されている。アクセスノード６００，７００には、ローカル論理ボリュームとリモート論理ボリュームが定義されている。そして、アクセスノード６００，７００は、端末装置２１，２２，２３からのローカル論理ボリューム上でのデータのアクセス要求に応答して、リモート論理ボリュームによって定義されたディスクノード１００，２００，３００，４００内の対応するデータへアクセスする。
【００３２】
管理ノード８００は、管理者が分散ストレージシステムの運用を管理するために使用するコンピュータである。管理ノード８００では、分散ストレージシステムにおけるローカル論理ボリュームやリモート論理ボリュームの使用量などの情報を収集し、運用状況を画面に表示する。管理者は、ローカル論理ボリュームの空き容量が少なくなったことを確認すると、管理ノード８００を介してローカル論理ボリュームの記憶容量の拡張を指示することができる。この指示を契機として、分散ストレージシステムにおいてローカル論理ボリュームの記憶領域拡張処理が開始される。
【００３３】
図３は、本実施の形態に用いる制御ノードのハードウェア構成例を示す図である。制御ノード５００は、ＣＰＵ（Central Processing Unit）５０１によって装置全体が制御されている。ＣＰＵ５０１には、バス５０７を介してＲＡＭ（Random Access Memory）５０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）５０３、グラフィック処理装置５０４、入力インタフェース５０５、および通信インタフェース５０６が接続されている。
【００３４】
ＲＡＭ５０２には、ＣＰＵ５０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ５０２には、ＣＰＵ５０１による処理に必要な各種データが格納される。ＨＤＤ５０３には、ＯＳやアプリケーションプログラムが格納される。
【００３５】
グラフィック処理装置５０４には、モニタ１１が接続されている。グラフィック処理装置５０４は、ＣＰＵ５０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース５０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース５０５は、キーボード１２やマウス１３から送られてくる信号を、バス５０７を介してＣＰＵ５０１に送信する。
【００３６】
通信インタフェース５０６は、ネットワーク１０に接続されている。通信インタフェース５０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
【００３７】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、制御ノード５００のハードウェア構成を示しているが、ディスクノード１００，２００，３００，４００、アクセスノード６００，７００、および管理ノード８００も同様のハードウェア構成で実現することができる。
【００３８】
図２に示すように、複数のディスクノード１００，２００，３００，４００がネットワーク１０に接続され、アクセスノード６００，７００からアクセス可能となっている。この分散ストレージシステムは、アクセスノード６００，７００に対して、仮想的なボリューム（論理ボリューム）として機能する。
【００３９】
図４は、論理ボリュームのデータ構造を示す図である。本実施の形態では、論理ボリュームがローカル論理ボリューム３０とリモート論理ボリューム４０，５０との２段階で構成されている。ここで、ローカル論理ボリューム３０の論理ボリューム識別子を「ＬＶＯＬＸ」、リモート論理ボリューム４０の論理ボリューム識別子を「ＬＶＯＬ１」、リモート論理ボリューム５０の論理ボリューム識別子を「ＬＶＯＬ２」とする。
【００４０】
また、ネットワーク経由で接続された４台のディスクノード１００，２００，３００，４００には、個々のノードの識別のためにそれぞれ「ＳＮ−Ａ」、「ＳＮ−Ｂ」、「ＳＮ−Ｃ」、「ＳＮ−Ｄ」というノード識別子が付与されている。そして、各ディスクノード１００，２００，３００，４００に接続されているストレージ装置１１０，２１０，３１０，４１０は、ディスクノード１００，２００，３００，４００のノード識別子によってネットワーク１０上で一意に識別される。
【００４１】
各ディスクノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０，４１０それぞれにおいてＲＡＩＤ５のストレージシステムが構成されている。各ストレージ装置１１０，２１０，３１０，４１０で提供される記憶機能は、複数のスライスに分割されて管理されている。
【００４２】
論理ボリューム３０は、２つの仮想記憶領域３１，３２が設けられている。仮想記憶領域３１にはリモート論理ボリューム４０が割り当てられており、仮想記憶領域３２にはリモート論理ボリューム５０が割り当てられている。
【００４３】
リモート論理ボリューム４０は、セグメント４１，４２という単位で構成される。セグメント４１，４２の記憶容量は、ストレージ装置１１０，２１０，３１０，４１０における管理単位であるスライスの記憶容量と同じである。例えば、スライスの記憶容量が１ギガバイトとするとセグメントの記憶容量も１ギガバイトである。論理ボリューム７００の記憶容量はセグメント１つ当たりの記憶容量の整数倍である。セグメントの記憶容量が１ギガバイトならば、論理ボリューム７００の記憶容量は例えば４ギガバイトといったものになる。セグメント４１，４２は、それぞれプライマリスライス４１ａ，４２ａとセカンダリスライス４１ｂ，４２ｂとの組から構成される。
【００４４】
図４の例では、仮想記憶領域３１，３２は、それぞれセグメント２つ分の記憶領域を有している。従って、１つの仮想記憶領域に対して、２つのセグメントを有するリモート論理ボリュームが対応付けられている。
【００４５】
リモート論理ボリューム５０も複数のセグメント５１，５２で構成される。各セグメント５１，５２は、プライマリスライス５１ａ，５２ａとセカンダリスライス５１ｂ，５２ｂとの組から構成される。
【００４６】
同一セグメントに属するスライスは別々のディスクノードに属する。個々のスライスを管理する領域には論理ボリューム識別子やセグメント情報や同じセグメントを構成するスライス情報の他にフラグがある。そのフラグにはプライマリあるいはセカンダリなどを表す値が格納される。
【００４７】
図４の例では、リモート論理ボリューム４０，５０内のスライスの識別子を、「Ｐ」または「Ｓ」のアルファベットと数字との組合せで示している。「Ｐ」はプライマリスライスであることを示している。「Ｓ」はセカンダリスライスであることを示している。アルファベットに続く数字は、何番目のセグメントに属するのかを表している。例えば、１番目のセグメント４１のプライマリスライスが「Ｐ１」で示され、セカンダリスライスが「Ｓ１」で示される。
【００４８】
また、ストレージ装置１１０，２１０，３１０，４１０内の各スライスに対応するリモート論理ボリューム４０，５０のスライスを、論理ボリューム識別子とスライスの識別子との組合せで示している。
【００４９】
このような２段階の構造の論理ボリュームによって、ローカル論理ボリューム３０内の任意の記憶領域（例えば、１つのブロック）が、ストレージ装置１１０，２１０，３１０，４１０内の記憶領域と一意に対応付けられる。そして、各ストレージ装置１１０，２１０，３１０，４１０では、自己のスライスに対応するデータを記憶する。
【００５０】
図５は、分散ストレージシステムの各装置の機能を示すブロック図である。アクセスノード６００は、論理ボリュームアクセス制御部６１０を有している。論理ボリュームアクセス制御部６１０は、端末装置２１，２２，２３からのローカル論理ボリューム３０内のデータを指定したアクセス要求に応じて、指定されたデータを管理するディスクノードに対してデータアクセスを行う。具体的には、論理ボリュームアクセス制御部６１０は、アクセス対象のデータが記憶されたローカル論理ボリューム３０内のブロックを特定する。次に、論理ボリュームアクセス制御部６１０は、特定したブロックに対応するリモート論理ボリューム、およびそのリモート論理ボリューム内の対応するセグメントを特定する。さらに、論理ボリュームアクセス制御部６１０は、特定したリモート論理ボリュームのセグメントを構成するプライマリスライスに対応するディスクノードおよびそのディスクノード内のスライスを特定する。そして、論理ボリュームアクセス制御部６１０は、特定したディスクノードに対して、特定したスライスへのアクセス要求を出力する。
【００５１】
アクセスノード７００も論理ボリュームアクセス制御部７１０を有している。論理ボリュームアクセス制御部７１０の機能は、アクセスノード６００の論理ボリュームアクセス制御部６１０と同様である。
【００５２】
制御ノード５００は、論理ボリューム管理部５１０とスライス管理情報群記憶部５２０とを有している。
論理ボリューム管理部５１０は、ディスクノード１００，２００，３００，４００が有するストレージ装置１１０，２１０，３１０，４１０内のスライスを管理する。例えば、論理ボリューム管理部５１０は、システム起動時に、ディスクノード１００，２００，３００，４００に対してスライス管理情報取得要求を送信する。そして、論理ボリューム管理部５１０は、スライス管理情報取得要求に対して返信されたスライス管理情報を、スライス管理情報群記憶部５２０に格納する。
【００５３】
スライス管理情報群記憶部５２０は、ディスクノード１００，２００，３００，４００から収集されたスライス管理情報を記憶する記憶装置である。例えば、制御ノード５００内のＲＡＭの記憶領域の一部がスライス管理情報群記憶部５２０として使用される。
【００５４】
ディスクノード１００は、データアクセス部１３０、データ管理部１４０、およびスライス管理情報記憶部１５０を有している。
データアクセス部１３０は、アクセスノード６００からの要求に応答して、ストレージ装置１１０内のデータにアクセスする。具体的には、データアクセス部１３０は、アクセスノード６００からデータのリード要求を受け取った場合、リード要求で指定されたデータをストレージ装置１１０から取得し、アクセスノード６００に送信する。また、データアクセス部１３０は、アクセスノード６００からデータのライト要求を受け取った場合、ライト要求に含まれるデータをストレージ装置１１０内に格納する。なお、ディスクノード１００のデータ管理部１４０は、データアクセス部１３０によってライト要求に基づくデータの書き込みが行われた場合、データが書き込まれたスライス（プライマリスライス）に対応するセカンダリスライスを管理するディスクノードのデータ管理部と連携動作し、セカンダリスライス内のデータも更新する。
【００５５】
さらに、データ管理部１４０は、論理ボリューム管理部５１０からのスライス管理情報取得要求に応答して、スライス管理情報記憶部１５０に記憶されたスライス管理情報を論理ボリューム管理部５１０に対して送信する。
【００５６】
スライス管理情報記憶部１５０は、スライス管理情報を記憶する記憶装置である。例えば、ＲＡＭ内の記憶領域の一部がスライス管理情報記憶部１５０として使用される。なお、スライス管理情報記憶部１５０に格納されるスライス管理情報は、システム停止時にはストレージ装置１１０内に格納され、システム起動時にスライス管理情報記憶部１５０に読み込まれる。
【００５７】
他のディスクノード２００，３００，４００は、ディスクノード１００と同様の機能を有している。すなわち、ディスクノード２００は、データアクセス部２３０、データ管理部２４０、およびスライス管理情報記憶部２５０を有している。ディスクノード３００は、データアクセス部３３０、データ管理部３４０、およびスライス管理情報記憶部３５０を有している。ディスクノード４００は、データアクセス部４３０、データ管理部４４０、およびスライス管理情報記憶部４５０を有している。ディスクノード２００，３００，４００内の各要素は、ディスクノード１００内の同名の要素と同じ機能を有している。
【００５８】
図６は、ディスクノード内のスライス管理情報のデータ構造例を示す図である。スライス管理情報記憶部１５０に格納されたスライス管理情報は、メタデータ１５１と重複割当テーブル１５２とで構成されている。
【００５９】
メタデータ１５１は、ストレージ装置１１０内のスライス単位に分割された格納領域に格納されたデータの管理情報が登録されたデータテーブルである。メタデータ１５１には、ディスクノードＩＤ、スライスＩＤ、フラグ、論理ボリュームＩＤ、セグメントＩＤ、ペアのディスクノードＩＤ、およびペアのスライスＩＤの欄が設けられている。
【００６０】
ディスクノードＩＤの欄には、メタデータ１５１を有しているディスクノード１００のノード識別子が登録される。スライスＩＤの欄には、ストレージ装置１１０内の各スライスを一意に識別するためのスライス番号が設定される。フラグの欄には、スライスＩＤで示されるスライスに対応するリモート論理ボリューム内のスライスが、プライマリスライスかセカンダリスライスを示すフラグが設定される。図６の例では、プライマリスライスを「Ｐ」、セカンダリスライスを「Ｓ」で表している。
【００６１】
論理ボリュームＩＤの欄には、スライスＩＤで示されるスライスに対応するリモート論理ボリュームを示す論理ボリューム識別子が設定される。セグメントＩＤの欄には、スライスＩＤで示されるスライスに対応するリモート論理ボリューム内のセグメントを示すセグメント番号が設定される。
【００６２】
ペアのディスクノードＩＤの欄には、スライスＩＤで示されるスライスとペアとなるスライス（同一セグメントを構成するスライス）を格納するディスクノードのノード識別子が設定される。ペアのスライスＩＤの欄には、スライスＩＤで示されるスライスとペアとなるスライスをディスクノード内で一意に識別するためのスライス番号が設定される。
【００６３】
重複割当テーブル１５２は、複数のリモート論理ボリュームに割り当てられたスライスに関する管理情報が格納されたデータテーブルである。重複割当テーブル１５２には、ディスクノードＩＤ、スライスＩＤ、論理ボリュームＩＤ、およびセグメントＩＤの欄が設けられている。
【００６４】
ディスクノードＩＤの欄には、メタデータ１５１を有しているディスクノード１００のノード識別子が登録される。スライスＩＤの欄には、重複割当が行われたスライスのスライス番号が設定される。論理ボリュームＩＤの欄には、重複割当が行われたリモート論理ボリューム（既に他のリモート論理ボリュームに割り当てられているスライスを割り当てたリモート論理ボリューム）の論理ボリューム識別子が設定される。セグメントＩＤの欄には、重複割当が行われたセグメントのセグメント番号が設定される。
【００６５】
なお、図６の例では、まだ重複割当は行われておらず、重複割当テーブル１５２のディスクノードＩＤ以外の欄は、空欄となっている。すなわち、初期状態では、重複割当のデータは登録されていない。
【００６６】
このようなスライス管理情報が、各ディスクノード１００，２００，３００，４００に格納されており、システム起動時に制御ノード５００に送信される。制御ノード５００では、各ディスクノード１００，２００，３００，４００から取得したスライス管理情報をスライス管理情報群記憶部５２０に格納する。
【００６７】
図７は、スライス管理情報群記憶部のデータ構造例を示す図である。スライス管理情報群記憶部５２０には、ディスクノード１００，２００，３００，４００それぞれから収集したスライス管理情報５２１〜５２４が格納されている。各スライス管理情報５２１〜５２４のデータ構造は、図６に示したとおりである。
【００６８】
次に、アクセスノード６００の論理ボリュームアクセス制御部６１０について具体的に説明する。
図８は、論理ボリュームアクセス制御部の機能を示すブロック図である。論理ボリュームアクセス制御部６１０は、論理ボリューム構成管理部６１１、ローカル論理ボリューム構成情報記憶部６１２、リモート論理ボリューム構成情報記憶部６１３、アクセス要求取得部６１４、ローカル論理ボリュームアクセス部６１５、およびリモート論理ボリュームアクセス部６１６を有している。
【００６９】
論理ボリューム構成管理部６１１は、制御ノード５００からの論理ボリューム構成変更要求に基づいて、ローカル論理ボリューム構成情報記憶部６１２とリモート論理ボリューム構成情報記憶部６１３との内容を更新する。
【００７０】
ローカル論理ボリューム構成情報記憶部６１２は、ローカル論理ボリュームとリモート論理ボリュームとの対応関係を示すローカル論理ボリューム構成情報を記憶する記憶機能である。リモート論理ボリューム構成情報記憶部６１３は、リモート論理ボリュームの記憶領域と、ディスクノード１００，２００，３００，４００が管理するストレージ装置１１０，２１０，３１０，４１０の記憶領域との対応関係を示すリモート論理ボリューム構成情報を記憶する記憶機能である。
【００７１】
アクセス要求取得部６１４は、ネットワーク２０を介して接続された端末装置２１〜２３から送られたアクセス要求を取得する。なお、端末装置２１〜２３から送られるアクセス要求では、ローカル論理ボリューム３０におけるアドレス（データが格納されているブロックのブロック番号と、そのブロック内でのデータの位置）によって、アクセス対象のデータが指定されている。アクセス要求取得部６１４は、取得したアクセス要求をローカル論理ボリュームアクセス部６１５に渡す。また、アクセス要求取得部６１４は、ローカル論理ボリュームアクセス部６１５からアクセス要求に対するアクセス結果を受け取ると、そのアクセス結果を、アクセス要求を出力した端末装置へ送信する。
【００７２】
ローカル論理ボリュームアクセス部６１５は、アクセス要求取得部６１４からアクセス要求を受け取ると、ローカル論理ボリューム構成情報記憶部６１２内のローカル論理ボリューム構成情報を参照し、アクセス対象のデータを含むリモート論理ボリューム内のアドレス（アクセス対象のローカル論理ボリューム内のブロックを含むセグメントのセグメントＩＤ、アクセス対象のブロックのブロック番号、およびブロック内でのデータの位置）を特定する。そして、ローカル論理ボリュームアクセス部６１５は、リモート論理ボリュームのアドレスを指定したアクセス要求を、リモート論理ボリュームアクセス部６１６に渡す。また、ローカル論理ボリュームアクセス部６１５は、リモート論理ボリュームアクセス部６１６からアクセス要求に対するアクセス結果を受け取ると、そのアクセス結果を、アクセス要求取得部６１４に渡す。
【００７３】
リモート論理ボリュームアクセス部６１６は、ローカル論理ボリュームアクセス部６１５からアクセス要求を受け取ると、リモート論理ボリューム構成情報記憶部６１３内のリモート論理ボリューム構成情報を参照し、アクセス対象のデータを管理するディスクノード、およびデータが格納されたディスクノード内のスライス番号を特定する。そして、リモート論理ボリュームアクセス部６１６は、アクセス対象のデータを管理するディスクノードに対して、スライス番号を指定したアクセス要求（スライス内でのデータの位置を示す情報も含む）を送信する。また、リモート論理ボリュームアクセス部６１６は、ディスクノードからアクセス要求に対するアクセス結果を受信すると、そのアクセス結果を、ローカル論理ボリュームアクセス部６１５に渡す。
【００７４】
図９は、ローカル論理ボリューム構成情報記憶部のデータ構造例を示す図である。ローカル論理ボリューム構成情報記憶部６１２には、ローカル論理ボリューム構成情報６１２ａが格納されている。なお、図９には、ローカル論理ボリューム構成情報６１２ａが１つだけ格納されているが、異なる論理ボリューム識別子を設定した複数のローカル論理ボリュームが作成されている場合、複数のローカル論理ボリューム構成情報が格納される。
【００７５】
ローカル論理ボリューム構成情報６１２ａには、ローカル論理ボリュームとリモート論理ボリュームとの欄が設けられている。ローカル論理ボリュームの欄には、ローカル論理ボリューム３０内に設けられた各仮想記憶領域３１，３２の範囲を示す情報が登録される。リモート論理ボリュームの欄には、ローカル論理ボリューム３０内に設けられた各仮想記憶領域３１，３２それぞれに対応付けられたリモート論理ボリュームの範囲を示す情報が登録される。
【００７６】
ローカル論理ボリュームの欄は、論理ボリューム識別子、先頭アドレス、および終了アドレスの欄に細分化されている。論理ボリューム識別子の欄には、仮想記憶領域３１、３２が定義されたローカル論理ボリューム３０の論理ボリューム識別子が設定される。先頭アドレスの欄には、仮想記憶領域のローカル論理ボリューム３０内での先頭アドレス（先頭のブロックのブロック番号）が設定される。終了アドレスの欄には、仮想記憶領域のローカル論理ボリューム３０内での終了アドレス（最後のブロックのブロック番号）が設定される。
【００７７】
リモート論理ボリュームの欄は、論理ボリューム識別子、先頭アドレス、および終了アドレスの欄に細分化されている。論理ボリューム識別子の欄には、仮想記憶領域３１、３２に対応付けられたリモート論理ボリューム４０，５０の論理ボリューム識別子が設定される。先頭アドレスの欄には、仮想記憶領域３１，３２に対応付けられたリモート論理ボリューム４０，５０内の記憶領域の先頭アドレス（先頭のブロックのブロック番号）が設定される。終了アドレスの欄には、仮想記憶領域３１，３２に対応付けられたリモート論理ボリューム４０，５０内の記憶領域の終了アドレス（最後のブロックのブロック番号）が設定される。
【００７８】
図１０は、リモート論理ボリューム構成情報記憶部のデータ構造例を示す図である。リモート論理ボリューム構成情報記憶部６１３には、リモート論理ボリューム構成情報６１３ａが格納されている。リモート論理ボリューム構成情報６１３ａは、各ディスクノード１００，２００，３００，４００から制御ノード５００が収集したスライス管理情報のうち、プライマリスライスの配置に関する情報のみを抽出したものである。
【００７９】
リモート論理ボリューム構成情報６１３ａには、ディスクノードＩＤ、スライスＩＤ、論理ボリュームＩＤ、およびセグメントＩＤの欄が設けられている。
ディスクノードＩＤの欄には、プライマリスライスに割り当てられたディスクノードのノード識別子が設定される。スライスＩＤの欄には、プライマリスライスが割り当てられたディスクノード内のスライス番号が設定される。論理ボリュームＩＤの欄には、プライマリスライスが属するリモート論理ボリュームの論理ボリューム識別子が設定される。セグメントＩＤの欄には、プライマリスライスが属するリモート論理ボリューム内のセグメントを示すセグメント番号が設定される。
【００８０】
なお、リモート論理ボリューム構成情報６１３ａは、制御ノード５００からアクセスノード６００に配布される。制御ノード５００からアクセスノード７００にも、同様のリモート論理ボリューム構成情報が配布される。そこで、アクセスノード７００において、図９に示したローカル論理ボリューム構成情報６１２ａと同様のローカル論理ボリューム構成情報を設定すれば、各アクセスノード６００，７００においてディスクノード１００，２００，３００，４００に対する共通のアクセス環境が構築される。
【００８１】
図１１は、アクセスノードからディスクノードへのアクセス環境を示す模式図である。アクセスノード６００，７００では、ローカル論理ボリュームのアドレスで示される仮想記憶領域に対してリモート論理ボリュームが割り当てられている。リモート論理ボリュームはセグメント単位で管理されている。各セグメントはプライマリスライスとセカンダリスライスとの組で構成されており、プライマリスライスに対してディスクノード１００，２００内のスライスが割り当てられている。このような割当関係が各アクセスノード６００，７００で共通することで、いずれのアクセスノード６００，７００においても同様のデータアクセスが可能となる。すなわち、端末装置２１〜２３から、ローカル論理ボリュームの論理ボリューム識別子と、ローカル論理ボリューム内でのデータの位置を、ブロック番号とブロック内での位置（例えば、ブロックの先頭からのオフセットとデータ長）で特定することにより、ディスクノード１００，２００に格納されたデータが一意に特定される。
【００８２】
このような環境で分散ストレージシステムの運用を継続していると、ローカル論理ボリュームの空き容量が不足してくる。簡易的には、ローカル論理ボリュームの記憶領域を拡張すると共に、拡張分の新たなリモート論理ボリュームを生成し、そのリモート論理ボリュームをローカル論理ボリュームの拡張領域に割り当てればよい。ただし、そのような処理を繰り返していると、ローカル論理ボリュームとリモート論理ボリュームとの間の対応関係の管理が複雑となり、ローカル論理ボリューム構成情報のデータ量が増大する。さらに、ローカル論理ボリュームに割当可能なリモート論理ボリューム数に制限がある場合、その制限の最大数までリモート論理ボリュームを割り当てた後は、ローカル論理ボリュームの拡張が困難となる。
【００８３】
本実施の形態では、記憶領域を拡張したローカル論理ボリュームと同じ記憶容量を有するリモート論理ボリュームを新たに作成し、新たに作成したリモート論理ボリュームをローカル論理ボリュームに割り当てる。このようなローカル論理ボリュームへのリモート論理ボリュームの割当の切換は、システム運用を停止せずに行われる。また、新たに作成するリモート論理ボリュームに対して、切換前よりローカル論理ボリュームに割り当てられていたリモート論理ボリュームと同じディスクノード内の同じスライスを割り当てる（重複割当）ことで、切換処理後にデータのコピーを行う必要もなくなる。
【００８４】
以下に、ローカル論理ボリュームの記憶容量拡張処理について詳細に説明する。
図１２は、ローカル論理ボリュームの記憶容量拡張処理の前半を示すシーケンス図である。以下、図１２に示す処理をステップ番号に沿って説明する。
【００８５】
［ステップＳ１１］管理ノード８００の空き容量監視部８１０は、各アクセスノード６００，７００内のローカル論理ボリュームの空き容量が少なくなったことをモニタに表示する。その表示内容を確認した管理者からローカル論理ボリュームの拡張指示が入力されると、再構成指示部８２０が、管理者からの操作入力に応答して、制御ノード５００に対して論理ボリューム識別子を「ＬＶＯＬ３」とするリモート論理ボリュームの割当要求を送信する。この割当要求には、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームが、論理ボリューム識別子が「ＬＶＯＬ１」と「ＬＶＯＬ２」と２つのリモート論理ボリュームを結合し、かつ記憶領域を拡張するものであることを示す情報が含まれる。具体的には、重複割当を行うセグメントの指定（論理ボリューム識別子が「ＬＶＯＬ１」と「ＬＶＯＬ２」である２つのリモート論理ボリュームの間で重複割当をすべき旨の指定）と、固有のスライス割当を行うセグメント（拡張領域分のセグメント）の指定とが、割当要求に含まれている。
【００８６】
［ステップＳ１２］割当要求を受け取った制御ノード５００の論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０内のスライス管理情報に、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームを新たに定義する。そして、論理ボリューム管理部５１０は、新たに定義したリモート論理ボリュームを構成する各セグメントのプライマリスライスとセカンダリスライスとに対して、ディスクノード１００，２００，３００，４００内のスライスを割り当てる。なお、この処理の詳細は後述する（図２２参照）。
【００８７】
［ステップＳ１３］論理ボリューム管理部５１０は、ディスクノード１００に対してスライス管理情報の変更要求を送信する。
［ステップＳ１４］同様に、論理ボリューム管理部５１０は、ディスクノード２００に対してスライス管理情報の変更要求を送信する。
【００８８】
なお、スライス管理情報の変更要求には、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームを構成する各セグメントのプライマリスライスとセカンダリスライスとに対して割り当てるべきスライスを示す情報が含まれている。
【００８９】
［ステップＳ１５］ディスクノード１００のデータ管理部１４０は、スライス管理情報記憶部１５０に格納されているスライス管理情報（メタデータと重複割当テーブル）の内容を変更する。この処理の詳細は後述する（図２３参照）。
【００９０】
［ステップＳ１６］同様に、ディスクノード２００のデータ管理部２４０は、スライス管理情報記憶部２５０に格納されているスライス管理情報（メタデータと重複割当テーブル）の内容を変更する。
【００９１】
なお、スライス管理情報を更新する場合、メタデータには、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームの拡張領域に割り当てるスライスに関する情報が登録される。重複割当テーブルには、論理ボリューム識別子が「ＬＶＯＬ１」と「ＬＶＯＬ２」とのリモート論理ボリュームに割り当てられていたスライスの、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームへの重複割当に関する情報が登録される。
【００９２】
［ステップＳ１７］ディスクノード１００のデータ管理部１４０は、スライス管理情報の更新が完了すると、制御ノード５００に対して変更完了通知を送信する。
［ステップＳ１８］ディスクノード２００のデータ管理部２４０は、スライス管理情報の更新が完了すると、制御ノード５００に対して変更完了通知を送信する。
【００９３】
なお、各ディスクノード１００，２００から送られる変更完了通知には、更新後のスライス管理情報が含まれている。
［ステップＳ１９］制御ノード５００の論理ボリューム管理部５１０は、ディスクノード１００，２００のそれぞれから変更完了通知を受け取ると、管理ノード８００に対して割当完了通知を送信する。
【００９４】
［ステップＳ２０］管理ノード８００の再構成指示部８２０は、制御ノード５００からの割当完了通知を受け取ると、論理ボリューム識別子が「ＬＶＯＬ３」であるリモート論理ボリュームの接続要求をアクセスノード６００に対して送信する。
【００９５】
［ステップＳ２１］アクセスノード６００の論理ボリューム構成管理部６１１は、接続要求を受信すると、制御ノード５００に対してリモート論理ボリューム構成情報要求を送信する。
【００９６】
［ステップＳ２２］制御ノード５００の論理ボリューム管理部５１０は、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに関するリモート論理ボリューム構成情報応答処理を行う。この処理の詳細は後述する（図２４参照）。
【００９７】
［ステップＳ２３］論理ボリューム管理部５１０は、生成したリモート論理ボリューム構成情報をアクセスノード６００に対して送信する。
［ステップＳ２４］アクセスノード６００の論理ボリューム構成管理部６１１は、受信したリモート論理ボリューム構成情報に基づいて、リモート論理ボリューム構成情報記憶部６１３内に、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに関するリモート論理ボリューム構成情報を追加登録する。そして、論理ボリューム構成管理部６１１は、管理ノード８００に対して接続完了通知を送信する。
【００９８】
［ステップＳ２５］管理ノード８００の再構成指示部８２０は、ローカル論理ボリュームの構成変更要求をアクセスノード６００に対して送信する。この構成変更要求には、論理ボリューム識別子が「ＬＶＯＬ３」であるリモート論理ボリュームが生成されたこと、およびそのリモート論理ボリュームの記憶容量などの情報が含まれる。
【００９９】
［ステップＳ２６］アクセスノード６００の論理ボリューム構成管理部６１１は、構成変更要求に応じて、ローカル論理ボリューム構成情報記憶部６１２内のローカル論理ボリューム構成情報６１２ａを更新する。なお、この処理の詳細は後述する（図２５参照）。
【０１００】
［ステップＳ２７］論理ボリューム構成管理部６１１は、ローカル論理ボリューム構成変更完了通知を管理ノード８００に送信する。
このようにして、アクセスノード６００におけるローカル論理ボリュームの記憶領域が拡張される。このとき、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームに割り当てられていたディスクノードのスライスに関しては、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに対しても重複割当が行われる。
【０１０１】
ここで、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームの拡張領域の記憶容量が、リモート論理ボリュームにおけるセグメント２つ分であるものとする。また、新たに作成された論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームにおける拡張領域分のセグメントに関し、プライマリスライスに対してディスクノード１００の空きスライスが割り当てられ、セカンダリスライスに対してディスクノード２００の空きスライスが割り当てられたものとする。
【０１０２】
図１３は、重複割当時のアクセスノードからディスクノードへのアクセス環境を示す模式図である。なお、図１３では、アクセスノード６００はローカル論理ボリュームの記憶領域は拡張されているが、アクセスノード７００はローカル論理ボリュームの記憶領域は拡張されていない状態を示している。
【０１０３】
図１３に示すように、アクセスノード６００では、ローカル論理ボリュームの記憶領域が拡張されている。拡張された記憶領域は、開始アドレスが「Ｌ−ａ５」、終了アドレスが「Ｌ−ａ６」である。リモート論理ボリュームは、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに置き換えられている。論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームは、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームと同じ記憶容量を有している。
【０１０４】
論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームのアドレス「Ｌ−ａ１」〜「Ｌ−ａ６」の記憶領域は、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのアドレス「Ｒ３−ａ１」〜「Ｒ３−ａ６」の記憶領域に対応付けられている。論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームの拡張領域は、アドレス「Ｌ−ａ１」〜「Ｌ−ａ６」の記憶領域である。この記憶領域は、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのアドレス「Ｒ３−ａ５」〜「Ｒ３−ａ６」の記憶領域に対応する。
【０１０５】
論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのアドレス「Ｒ３−ａ１」〜「Ｒ３−ａ２」の記憶領域に対応する２つのセグメントのプライマリスライスには、ディスクノード１００の２つのスライスが割り当てられている。このディスクノード１００の２つのスライスは、論理ボリューム識別子が「ＬＶＯＬ１」のリモート論理ボリュームと、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームとに、重複して割り当てられている。
【０１０６】
論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのアドレス「Ｒ３−ａ３」〜「Ｒ３−ａ４」の記憶領域に対応する２つのセグメントのプライマリスライスには、ディスクノード２００の２つのスライスが割り当てられている。このディスクノード２００の２つのスライスは、論理ボリューム識別子が「ＬＶＯＬ２」のリモート論理ボリュームと論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームとに、重複して割り当てられている。
【０１０７】
論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのアドレス「Ｒ３−ａ５」〜「Ｒ３−ａ６」の記憶領域に対応する２つのセグメントのプライマリスライスには、ディスクノード１００の２つのスライスが割り当てられている。このディスクノード１００の２つのスライスは、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームにのみ割り当てられている。
【０１０８】
ディスクノード１００では、新たなリモート論理ボリュームに対するスライスの割当が行われたこと、およびスライスの重複割当が行われたことが、スライス管理情報に設定される。
【０１０９】
図１４は、重複割当後のスライス管理情報を示す図である。図７に示した重複割当前と比較すると、スライス管理情報記憶部１５０内のメタデータ１５１には、以下の２つのスライスの割当に関する情報が追加されている。
【０１１０】
スライスＩＤ「２１」のスライスを、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのセグメントＩＤ「５」のセグメントのプライマリスライスとして割り当てたことが示されている。また、このスライスは、ノード識別子が「ＳＮ−Ｂ」であるディスクノード２００のスライスＩＤ「２１」のセグメントとペアとなることが示されている。
【０１１１】
スライスＩＤ「２２」のスライスを、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのセグメントＩＤ「６」のセグメントのプライマリスライスとして割り当てたことが示されている。また、このスライスは、ノード識別子が「ＳＮ−Ｂ」であるディスクノード２００のスライスＩＤ「２２」のセグメントとペアとなることが示されている。
【０１１２】
図７に示した重複割当前と比較すると、スライス管理情報記憶部１５０内の重複割当テーブル１５２には、以下の２つのスライスの割当に関する情報が追加されている。
スライスＩＤ「１」のスライスは、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのセグメントＩＤ「１」に重複して割り当てられている。スライスＩＤ「２」のスライスは、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのセグメントＩＤ「２」に重複して割り当てられている。スライスＩＤ「１１」のスライスは、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのセグメントＩＤ「３」に重複して割り当てられている。スライスＩＤ「１２」のスライスは、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームのセグメントＩＤ「４」に重複して割り当てられている。
【０１１３】
なお、重複割当が行われたディスクノード１００内のスライスは、メタデータ１５１でのフラグがプライマリスライスであれば、重複割当時もプライマリスライスとして割り当てられる。同様に、メタデータ１５１でのフラグがセカンダリスライスであれば、重複割当時もセカンダリスライスとして割り当てられる。
【０１１４】
記憶領域拡張処理を行ったアクセスノード６００では、ローカル論理ボリューム構成情報が更新される。
図１５は、記憶領域拡張後のローカル論理ボリューム構成情報を示す図である。図９と比較すると、ローカル論理ボリューム構成情報記憶部６１２内のローカル論理ボリューム構成情報６１２ａにおける論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームに割り当てられたリモート論理ボリュームが、論理ボリューム識別子が「ＬＶＯＬ１」と「ＬＶＯＬ２」との２つのリモート論理ボリュームの組合せから、論理ボリューム識別子が「ＬＶＯＬ３」の１つのリモート論理ボリュームに変更されている。また、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームの記憶領域が拡張されたことから、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームの終了アドレスが「Ｌ−ａ６」に変更されている。
【０１１５】
図１６は、記憶領域拡張後のリモート論理ボリューム構成情報を示す図である。図１０と比較すると、リモート論理ボリューム構成情報記憶部６１３内のリモート論理ボリューム構成情報６１３ａにおいて、ディスクノード「ＳＮ−Ａ」のスライスＩＤ「１」、「２」と、「ＳＮ−Ｂ」のスライスＩＤ「１」、「２」とが、新たに作成された論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに重複して割り当てられている。また、ディスクノード「ＳＮ−Ａ」のスライスＩＤ「１１」、「１２」が、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに割り当てられている。
【０１１６】
このようにして、アクセスノード６００におけるローカル論理ボリュームの記憶領域の拡張が完了する。制御ノード５００は、他のアクセスノード７００に対しても、論理ボリューム識別子が「ＬＶＯＬ３」の新たなリモート論理ボリュームへの切換を指示する。そして、制御ノード５００は、すべてのアクセスノード６００，７００においてリモート論理ボリュームの切換が完了すると、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」の、以前使用していたリモート論理ボリュームの定義を削除する。
【０１１７】
以下、アクセスノード７００のローカル論理ボリュームの記憶領域の拡張から、使用しなくなったリモート論理ボリュームの削除までの処理について説明する。
図１７は、ローカル論理ボリュームの記憶容量拡張処理の後半を示すシーケンス図である。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１１８】
［ステップＳ３１］管理ノード８００の再構成指示部８２０は、図１２の処理に続けて、論理ボリューム識別子が「ＬＶＯＬ３」であるリモート論理ボリュームの接続要求をアクセスノード７００に対して送信する。
【０１１９】
［ステップＳ３２］アクセスノード７００は、接続要求を受信すると、制御ノード５００に対してリモート論理ボリューム構成情報要求を送信する。
［ステップＳ３３］制御ノード５００の論理ボリューム管理部５１０は、リモート論理ボリューム構成情報応答処理を行う。
【０１２０】
［ステップＳ３４］論理ボリューム管理部５１０は、生成したリモート論理ボリューム構成情報をアクセスノード７００に対して送信する。
［ステップＳ３５］アクセスノード７００は、受信したリモート論理ボリューム構成情報に基づいてリモート論理ボリューム構成情報を更新する。そして、アクセスノード７００は、管理ノード８００に対して接続完了通知を送信する。
【０１２１】
［ステップＳ３６］管理ノード８００の再構成指示部８２０は、ローカル論理ボリュームの構成変更要求をアクセスノード７００に対して送信する。
［ステップＳ３７］アクセスノード７００は、構成変更要求に応じて、ローカル論理ボリューム構成情報を更新する。
【０１２２】
［ステップＳ３８］アクセスノード７００は、ローカル論理ボリューム構成変更完了通知を管理ノード８００に送信する。
［ステップＳ３９］管理ノード８００の再構成指示部８２０は、すべてのアクセスノード６００，７００においてローカル論理ボリュームの拡張処理が完了したことを確認すると、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームの削除要求を制御ノード５００に対して送信する。
【０１２３】
［ステップＳ４０］制御ノード５００の論理ボリューム管理部５１０は、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームの削除を行う。具体的に、論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０に格納されているスライス管理情報から論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームに関する情報を抽出すると共に、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームに対するスライスの割当が行われているディスクノードを判断する。そして、論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０内のスライス管理情報を更新する。なお、この処理の詳細は後述する（図２６参照）。
【０１２４】
［ステップＳ４１］論理ボリューム管理部５１０は、ディスクノード１００に対してスライス管理情報の変更要求を送信する。この変更要求には、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームに関する情報を削除することを示す情報が含まれる。
【０１２５】
［ステップＳ４２］論理ボリューム管理部５１０は、ディスクノード２００に対しても、同様にスライス管理情報の変更要求を送信する。
［ステップＳ４３］ディスクノード１００のデータ管理部１４０は、スライス管理情報を変更する。具体的には、データ管理部１４０は、受信した変更要求に基づいて、スライス管理情報記憶部１５０内のメタデータ１５１から論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームを割当先とするスライスに関する割当関係を示す情報を削除する。このとき、データ管理部１４０は、重複割当テーブル１５２において割当関係を示す情報が削除されたスライスに対する重複割当が設定されている場合、重複割当先を通常の割当先としてメタデータ１５１に反映する。すなわち、データ管理部１４０は、割当先の論理ボリューム識別子として「ＬＶＯＬ１」、「ＬＶＯＬ２」が設定されていたスライスに対して、新たな割当先として論理ボリューム識別子「ＬＶＯＬ３」を設定する。そして、データ管理部１４０は、メタデータ１５１に反映させた重複割当の情報に関しては、重複割当テーブル１５２から削除する。
【０１２６】
［ステップＳ４４］ディスクノード２００は、ディスクノード１００と同様にスライス管理情報を変更する。
［ステップＳ４５］ディスクノード１００のデータ管理部１４０は、スライス管理情報の変更が完了すると、変更完了通知を制御ノード５００に対して送信する。
【０１２７】
［ステップＳ４６］ディスクノード２００も同様に、スライス管理情報の変更が完了すると、変更完了通知を制御ノード５００に対して送信する。
なお、各ディスクノード１００，２００から送られる変更完了通知には、更新後のスライス管理情報が含まれている。
【０１２８】
［ステップＳ４７］制御ノード５００の論理ボリューム管理部５１０は、ディスクノード１００，２００のそれぞれから変更完了通知を受け取ると、管理ノード８００に対して削除完了通知を送信する。
【０１２９】
このように、すべてのアクセスノード６００，７００においてローカル論理ボリュームへの割当が解除されたリモート論理ボリュームは削除される。その際、削除されたリモート論理ボリュームに割り当てられていたディスクノード内のスライスに重複割当が存在する場合、そのスライスの割当先として、重複して設定されたリモート論理ボリュームへの割当が残される。
【０１３０】
図１８は、記憶容量拡張処理完了後のアクセスノードからディスクノードへのアクセス環境を示す模式図である。図１８に示すように、アクセスノード６００，７００においてローカル論理ボリュームの記憶容量の拡張が完了することにより、ディスクノード１００，２００のスライスの重複割当が解消される。すなわち、ディスクノード１００，２００の各スライスは、１つのリモート論理ボリューム（図１８の例では「ＬＶＯＬ３」）の１つのセグメントに対してのみ割り当てられている。
【０１３１】
図１９は、重複割当解消後のスライス管理情報を示す図である。ディスクノード１００のスライス管理情報記憶部１５０に記憶されたメタデータ１５１は、重複割当時（図１４参照）と比較すると、スライスＩＤ「１」、「２」、「１１」、「１２」の各スライスを割り当てたリモート論理ボリュームを示す論理ボリューム識別子が「ＬＶＯＬ３」に変更されている。また、重複割当テーブル１５２については、重複割当時（図１４参照）の登録内容が削除されている。
【０１３２】
図２０は、重複割当解消後のリモート論理ボリューム構成情報を示す図である。図１６と比較すると、リモート論理ボリューム構成情報記憶部６１３内のリモート論理ボリューム構成情報６１３ａにおいて、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームに関する情報が削除されている。
【０１３３】
図２１は、記憶領域拡張後の論理ボリュームのデータ構造を示す図である。ローカル論理ボリューム３０には、拡張記憶領域３３が追加されている。新たに作成されたリモート論理ボリューム６０は、６つのセグメント６１〜６６で構成される。セグメント６１，６２，６５，６６のプライマリスライス６１ａ，６２ａ，６５ａ，６６ａには、それぞれディスクノード１００が管理するストレージ装置１１０のスライス１２１，１２２，１２５，１２６が割り当てられている。セグメント６３，６４のプライマリスライス６３ａ，６４ａには、それぞれディスクノード２００が管理するストレージ装置２１０のスライス２２３，２２４が割り当てられている。セグメント６１，６２，６５，６６のセカンダリスライス６１ｂ，６２ｂ，６５ｂ，６６ｂには、それぞれディスクノード２００が管理するストレージ装置２１０のスライス２２１，２２２，２２５，２２６が割り当てられている。セグメント６３，６４のセカンダリスライス６３ｂ，６４ｂには、それぞれディスクノード１００が管理するストレージ装置１１０のスライス１２３，１２４が割り当てられている。
【０１３４】
次に、各ノードで実行される主たる処理の詳細について説明する。
まず、制御ノード５００における論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリューム割当処理（図１２のステップＳ１２）について説明する。
【０１３５】
図２２は、リモート論理ボリューム割当処理の手順を示すフローチャートである。以下、図２２に示す処理をステップ番号に沿って説明する。
［ステップＳ５１］制御ノード５００の論理ボリューム管理部５１０は、管理ノード８００からリモート論理ボリュームの割当要求を受け取ると、リモート論理ボリュームを新たに定義する。このとき、割当要求には、他のリモート論理ボリュームとの重複割当をすべきセグメントの指定と、固有スライス（重複させないスライス）の割当を行うセグメントの指定とが含まれる。そこで、論理ボリューム管理部５１０は、固有スライスを割り当てるべきセグメントのプライマリスライスとセカンダリスライスとに対して、ディスクノード１００，２００，３００，４００内の空きスライス（いずれのリモート論理ボリュームにも割り当てられていないスライス）を割り当てる。このとき、同一セグメントのプライマリスライスとセカンダリスライスとには、異なるディスクノードのスライスが割り当てられる。
【０１３６】
［ステップＳ５２］論理ボリューム管理部５１０は、割当要求において、重複割当を行うスライスの指定があるか否かを判断する。重複割当が指定されたスライスがあれば、処理がステップＳ５３に進められる。重複割当が指定されたスライスがなければ、リモート論理ボリューム割当処理が終了する。
【０１３７】
［ステップＳ５３］論理ボリューム管理部５１０は、重複スライスの割当を行う。具体的には、論理ボリューム管理部５１０は、論理ボリューム識別子が「ＬＶＯＬ１」と「ＬＶＯＬ２」のリモート論理ボリュームとに割り当てられていたディスクノード１００，２００内のスライスを、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームにも割り当てる。
【０１３８】
次に、ディスクノード１００で行われるスライス管理情報変更処理（図１２のステップＳ１５）について説明する。
図２３は、スライス管理情報変更処理の手順を示すフローチャートである。以下、図２３に示す処理をステップ番号に沿って説明する。
【０１３９】
［ステップＳ６１］ディスクノード１００のデータ管理部１４０は、制御ノード５００からスライス管理情報の変更要求を受信すると、固有スライスに関する割当情報を、スライス管理情報記憶部１５０内のメタデータ１５１に追加登録する。
【０１４０】
［ステップＳ６２］データ管理部１４０は、変更要求において、重複割当を行うスライスに関する情報があるか否かを判断する。重複割当を行うスライスがあれば、処理がステップＳ６３に進められる。重複割当を行うスライスがなければ、スライス管理情報変更処理が終了する。
【０１４１】
［ステップＳ６３］データ管理部１４０は、重複割当を行うスライスに関する情報を、スライス管理情報記憶部１５０内の重複割当テーブルに追加登録する。
このようにして、ディスクノード１００においてスライス管理情報が変更される。
【０１４２】
次に、制御ノード５００で行われるリモート論理ボリューム構成情報応答処理について詳細に説明する。
図２４は、リモート論理ボリューム構成情報応答処理の手順を示すフローチャートである。以下、図２４に示す処理をステップ番号に沿って説明する。
【０１４３】
［ステップＳ７１］制御ノード５００の論理ボリューム管理部５１０は、固有スライスを検索する。具体的には、論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０内の各スライス管理情報におけるメタデータから、追加する論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームが割当先として設定されたプライマリスライスの情報（フラグの欄に「Ｐ」、論理ボリュームＩＤの欄に「ＬＶＯＬ３」が設定された情報）を検索する。
【０１４４】
［ステップＳ７２］論理ボリューム管理部５１０は、重複スライスを検索する。具体的には、論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０内の各スライス管理情報における重複割当テーブルから、追加する論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームが割当先として設定されたプライマリスライスの情報（論理ボリュームＩＤの欄に「ＬＶＯＬ３」が設定された情報）を検索する。
【０１４５】
このように、ステップＳ７１，Ｓ７２の検索で検出された情報が、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームに関するリモート論理ボリューム構成情報となる。
【０１４６】
次に、アクセスノード６００におけるローカル論理ボリューム構成変更処理（図１２のステップＳ２６）について詳細に説明する。
図２５は、ローカル論理ボリューム構成変更処理の手順を示すフローチャートである。以下、図２５に示す処理をステップ番号に沿って説明する。
【０１４７】
［ステップＳ８１］アクセスノード６００の論理ボリューム構成管理部６１１は、端末装置２１〜２３からの論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセスを一時的に停止する。具体的には、論理ボリューム構成管理部６１１は、ローカル論理ボリュームアクセス部６１５に対して、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセスの一時停止を指示する。すると、ローカル論理ボリュームアクセス部６１５は、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセス要求が入力されても、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセスが開始されるまでアクセス要求の処理を停止する。
【０１４８】
［ステップＳ８２］論理ボリューム構成管理部６１１は、ローカル論理ボリューム構成情報を変更する。具体的には、論理ボリューム構成管理部６１１は、ローカル論理ボリューム構成情報記憶部６１２内のローカル論理ボリューム構成情報６１２ａにおいて、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームのすべての記憶領域に対して、論理ボリューム識別子が「ＬＶＯＬ３」のリモート論理ボリュームを割り当てる。
【０１４９】
［ステップＳ８３］論理ボリューム構成管理部６１１は、端末装置２１〜２３からの論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセスを開始する。具体的には、論理ボリューム構成管理部６１１は、ローカル論理ボリュームアクセス部６１５に対して、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセスの開始を指示する。すると、ローカル論理ボリュームアクセス部６１５は、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームへのアクセス要求の処理を開始する。
【０１５０】
このようにして、アクセスノード６００において、ローカル論理ボリュームの構成が変更される。
次に、リモート論理ボリューム削除処理（図１７のステップＳ４０）の詳細について説明する。
【０１５１】
図２６は、リモート論理ボリューム削除処理の手順を示すフローチャートである。以下、図２６に示す処理をステップ番号に沿って説明する。
［ステップＳ９１］制御ノード５００の論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０内のすべてのスライス管理情報におけるメタデータから、削除対象のスライスを検索する。具体的には、論理ボリューム管理部５１０は、削除対象となるリモート論理ボリュームの論理ボリューム識別子「ＬＶＯＬ１」、「ＬＶＯＬ２］が論理ボリュームＩＤの欄に設定されたスライスの情報を検索する。
【０１５２】
［ステップＳ９２］論理ボリューム管理部５１０は、削除対象スライスがある否かを判断する。検索によって削除対象スライスが見つかった場合、処理がステップＳ９３に進められる。削除対象スライスが無い場合、リモート論理ボリューム削除処理が終了する。
【０１５３】
［ステップＳ９３］論理ボリューム管理部５１０は、スライス管理情報群記憶部５２０内のメタデータから削除対象スライス（ディスクノードＩＤとスライスＩＤとにより一意に特定される）を１つ選択する。
【０１５４】
［ステップＳ９４］論理ボリューム管理部５１０は、選択したスライスに関して重複割当があるか否かを判断する。
［ステップＳ９５］論理ボリューム管理部５１０は、メタデータを書き換える。具体的には、論理ボリューム管理部５１０は、重複管理テーブルにおいて選択したスライスに対応付けて論理ボリュームＩＤおよびセグメントＩＤの欄に登録されていた情報を、メタデータ内の選択したスライスに対応する論理ボリュームＩＤおよびセグメントＩＤの欄に上書きによって書き込む。
【０１５５】
［ステップＳ９６］論理ボリューム管理部５１０は、重複割当テーブルから、選択したスライスに関する情報を削除する。その後、処理がステップＳ９１に進められる。
［ステップＳ９７］論理ボリューム管理部５１０は、メタデータを書き換える。具体的には、論理ボリューム管理部５１０は、選択したスライスが登録されたメタデータから、該当スライスに対応付けて、論理ボリュームＩＤ、セグメントＩＤ、ペアのディスクＩＤ、ペアのスライスＩＤの欄に登録されていた情報を削除する。その後、処理がステップＳ９１に進められる。
【０１５６】
以上説明したように、アクセスノード６００，７００においてローカル管理ボリュームに対してリモート論理ボリュームを割り当て、リモート論理ボリュームに対してディスクノードで提供される記憶領域（スライス）を割り当てることで、ローカル論理ボリュームの記憶領域拡張における柔軟性が増す。すなわち、ローカル論理ボリュームに割り当てるボリューム数が過大となった場合でも、１台のリモート論理ボリュームに容易にまとめることができる。これにより、システムの運用を停止させずに、ローカル論理ボリュームの拡張が継続的に可能となる。
【０１５７】
しかも、リモート論理ボリュームはセグメント単位で管理されており、プライマリスライスとセカンダリスライスとを有している。このプライマリスライスとセカンダリスライスとは、ディスクノード１００，２００，３００，４００が連携動作することによって同じデータが格納されることが保証されている。従って、ディスクノードに障害が発生しても、データの消失が防止されると共に、データの復旧を迅速に行うことができる。
【０１５８】
さらに、プライマリスライスとセカンダリスライスとを用いた冗長構成であることから、ディスクノード１００，２００，３００，４００のメンテナンスやデータの再配置も容易である。例えば、ディスクノード１００に接続されたストレージ装置１１０の記憶容量が不十分であることから、大容量のストレージ装置を有するディスクノードを導入する場合を考える。このとき、新規に導入するディスクノードをネットワーク１０に接続し、ディスクノード１００が管理していたデータを新たなディスクノードが有するストレージ装置にコピーすればよい。データのコピーに関しては、ディスクノード１００が管理していたデータが属するセグメントのセカンダリスライスからコピーをすることができる。セカンダリスライスは、複数のディスクノード１００，２００，３００，４００のいずれかに分散配置されている。そのため、ディスクノード１００が管理するデータのコピーを作成する場合であっても、ディスクノード１００に処理負荷が集中するのを防止できる。しかも、アクセスノード６００，７００からのデータ読み出しの処理はプライマリスライスに対してのみ行われる。そのため、セカンダリスライスからデータのコピーを行っていれば、アクセスノード６００，７００からのアクセス処理効率の低下を最小限に抑えることができる。
【０１５９】
なお、上記の例では、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリュームに対する記憶領域の拡張が完了すると、直ぐに論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームを削除している。これは、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームが、論理ボリューム識別子が「ＬＶＯＬＸ」のローカル論理ボリューム経由でしかアクセスされない場合を想定したものである。しかし、運用によっては、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームに対して直接（ローカル論理ボリュームを介さずに）アクセスできるようにすることもできる。そのような場合、論理ボリューム識別子が「ＬＶＯＬ１」、「ＬＶＯＬ２」のリモート論理ボリュームを削除せずに、リモート論理ボリューム「ＬＶＯＬ３」と併用することもできる。
【０１６０】
また、上記実施の形態では、ディスクノード１００，２００，３００，４００、制御ノード５００，アクセスノード６００，７００、および管理ノード８００が個別の装置となっているが、これらの装置のうちの任意の複数の装置の機能を１つの装置にまとめることもできる。例えば、制御ノード５００と管理ノード８００との機能を、アクセスノード６００に設けることもできる。
【０１６１】
なお、上記の例では説明を分かりやすくするために、リモート論理ボリュームに対してディスクノード１００とディスクノード２００とが管理するストレージ装置１１０，１２０のスライスのみを割り当てているが、ディスクノード３００とディスクノード４００が管理するストレージ装置３１０，３２０のスライスを割り当ててもよい。
【０１６２】
また、上記の処理機能は、コンピュータによって実現することができる。その場合、ディスクノード１００，２００，３００，４００、制御ノード５００，アクセスノード６００，７００、および管理ノード８００が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disc）などがある。
【０１６３】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１６４】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１６５】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【図面の簡単な説明】
【０１６６】
【図１】実施の形態の概要を示す図である。
【図２】本実施の形態の分散ストレージシステム構成例を示す図である。
【図３】本実施の形態に用いる制御ノードのハードウェア構成例を示す図である。
【図４】論理ボリュームのデータ構造を示す図である。
【図５】分散ストレージシステムの各装置の機能を示すブロック図である。
【図６】ディスクノード内のスライス管理情報のデータ構造例を示す図である。
【図７】スライス管理情報群記憶部のデータ構造例を示す図である。
【図８】論理ボリュームアクセス制御部の機能を示すブロック図である。
【図９】ローカル論理ボリューム構成情報記憶部のデータ構造例を示す図である。
【図１０】リモート論理ボリューム構成情報記憶部のデータ構造例を示す図である。
【図１１】アクセスノードからディスクノードへのアクセス環境を示す模式図である。
【図１２】ローカル論理ボリュームの記憶容量拡張処理の前半を示すシーケンス図である。
【図１３】重複割当時のアクセスノードからディスクノードへのアクセス環境を示す模式図である。
【図１４】重複割当後のスライス管理情報を示す図である。
【図１５】記憶領域拡張後のローカル論理ボリューム構成情報を示す図である。
【図１６】記憶領域拡張後のリモート論理ボリューム構成情報を示す図である。
【図１７】ローカル論理ボリュームの記憶容量拡張処理の後半を示すシーケンス図である。
【図１８】記憶容量拡張処理完了後のアクセスノードからディスクノードへのアクセス環境を示す模式図である。
【図１９】重複割当解消後のスライス管理情報を示す図である。
【図２０】重複割当解消後のリモート論理ボリューム構成情報を示す図である。
【図２１】記憶領域拡張後の論理ボリュームのデータ構造を示す図である。
【図２２】リモート論理ボリューム割当処理の手順を示すフローチャートである。
【図２３】スライス管理情報変更処理の手順を示すフローチャートである。
【図２４】リモート論理ボリューム構成情報応答処理の手順を示すフローチャートである。
【図２５】ローカル論理ボリューム構成変更処理の手順を示すフローチャートである。
【図２６】リモート論理ボリューム削除処理の手順を示すフローチャートである。
【符号の説明】
【０１６７】
１  第１の記憶手段
１ａ  第１段論理ボリューム
２  第２の記憶手段
２ａ，２ｂ，２ｃ  第２段論理ボリューム
３  アクセス手段
４  論理ボリューム生成手段
５  記憶領域拡張手段
６〜８  ストレージ装置
６ａ，６ｂ，６ｃ  記憶領域
【図１】
0004519179.tif 000002
【図２】
0004519179.tif 000003
【図３】
0004519179.tif 000004
【図４】
0004519179.tif 000005
【図５】
0004519179.tif 000006
【図６】
0004519179.tif 000007
【図７】
0004519179.tif 000008
【図８】
0004519179.tif 000009
【図９】
0004519179.tif 000010
【図１０】
0004519179.tif 000011
【図１１】
0004519179.tif 000012
【図１２】
0004519179.tif 000013
【図１３】
0004519179.tif 000014
【図１４】
0004519179.tif 000015
【図１５】
0004519179.tif 000016
【図１６】
0004519179.tif 000017
【図１７】
0004519179.tif 000018
【図１８】
0004519179.tif 000019
【図１９】
0004519179.tif 000020
【図２０】
0004519179.tif 000021
【図２１】
0004519179.tif 000022
【図２２】
0004519179.tif 000023
【図２３】
0004519179.tif 000024
【図２４】
0004519179.tif 000025
【図２５】
0004519179.tif 000026
【図２６】
0004519179.tif 000027