(57)【特許請求の範囲】
【請求項１】
少なくとも１台の計算機及び少なくとも１台のディスク記憶装置に接続されたボリューム制御装置において、
前記ディスク記憶装置の記憶領域と当該記憶領域の最小管理単位であるセグメントとの対応関係を管理するセグメント管理手段と、
前記セグメントがそれぞれ割り当てられる複数の論理ボリュームのうち、一の論理ボリュームに対して前記計算機から送られるＩ／Ｏ要求を受け付けるＩ／Ｏ要求受付手段と、
前記論理ボリュームに対する前記Ｉ／Ｏ要求によりアクセスされる論理アドレスを読み取り、読み取った前記論理アドレスの記憶領域が当該論理ボリューム上に存在する場合には第１の要求を出力し、当該論理アドレスの記憶領域が当該論理ボリューム上に存在しない場合には第２の要求を出力するＩ／Ｏ監視手段と、
前記Ｉ／Ｏ要求がライトＩ／Ｏのときには、前記第１の要求に応じて、対象となるデータを、当該論理ボリュームに割り当てられた前記セグメントにより構成される記憶領域内の当該論理アドレスの位置に書き込むＩ／Ｏ処理手段と、
前記第２の要求に応じて、他の前記論理ボリュームに割り当てられていない少なくとも１以上の前記セグメントを当該論理ボリュームに割り当て、前記Ｉ／Ｏ処理手段に前記Ｉ／Ｏ要求を送る容量増加手段と
を備え、
前記セグメント管理手段は、さらに、
前記ディスク記憶装置が提供する前記記憶領域を構成する複数の前記セグメントのうち、論理ボリュームに割り当てられているセグメント数と、全セグメント数とからセグメントの利用率を管理し、セグメントの利用率が予め定められた閾値以上の場合、保守員に前記ディスク記憶装置の追加を通知する
ことを特徴とするボリューム制御装置。
【請求項２】
請求項１記載のボリューム制御装置であって、
前記少なくとも１台の計算機に提供する前記論理アドレスと、前記少なくとも１台のディスク記憶装置が提供する前記記憶領域の物理アドレスとの対応が関係付けられた物理論理管理表を有し、
前記物理論理管理表に基づいて、前記Ｉ／Ｏ処理手段からの要求により前記Ｉ／Ｏ要求の前記論理アドレスを対応する前記物理アドレスに変換する物理論理アドレス管理手段を備える
ことを特徴とするボリューム制御装置。
【請求項３】
請求項２記載のボリューム制御装置であって、
少なくとも各前記ディスク記憶装置に付与された識別番号であるディスク番号と、対応する前記ディスク記憶装置が提供する記憶領域を構成する各前記セグメントにそれぞれ付与されたセグメント番号と、対応する前記セグメントの記憶領域が開始する物理位置を表す開始ロジカルブロックアドレスと、各前記セグメントの大きさと、各前記セグメントがいずれかの前記論理ボリュームに割り当てられているか否かを表す利用状況とが格納されたセグメント管理表を備え、
前記物理論理アドレス管理手段は、前記物理論理管理表によりセグメント番号を選び、前記選んだセグメント番号により、前記セグメント管理表を用いて、前記Ｉ／Ｏ要求によりアクセスすべきディスク番号と、開始ロジカルブロックアドレスとを検出する
ことを特徴とするボリューム制御装置。
【請求項４】
請求項３記載のボリューム制御装置であって、
前記セグメント管理手段は、前記セグメント管理表に基づいて、前記セグメントの利用率が前記閾値以上になったか否かを判断し、
ディスク記憶装置が追加された場合、当該ディスク記憶装置の容量を確認し、当該ディスク記憶装置のディスク番号と、当該ディスク記憶装置が提供する記憶領域を構成する各前記セグメントにそれぞれ付与したセグメント番号と、当該各セグメントの記憶領域が開始する物理位置を表す開始ロジカルブロックアドレスと、当該各セグメントの大きさと、当該各セグメントが未使用であるという利用状況と、を前記セグメント管理表に追加する
ことを特徴とするボリューム制御装置。
【請求項５】
請求項２乃至請求項４記載のボリューム制御装置であって、
前記論理物理アドレス管理手段は、
追加されるセグメント番号を前記容量増加手段から通知された場合、前記物理論理管理表に前記セグメントを追加する
ことを特徴とするボリューム制御装置。
【請求項６】
請求項２乃至請求項５記載のボリューム制御装置であって、
前記物理論理管理表は、
前記ディスク記憶装置が提供する前記記憶領域に設定された論理ボリュームの論理ユニット番号と、前記ディスク記憶装置が提供する記憶領域を構成する各前記セグメントのうちの当該論理ボリュームに割り当てられたセグメントに付与されたセグメント番号と、当該セグメントの開始ロジカルブロックアドレスとを有し、
前記論理物理アドレス管理手段は、
前記物理論理管理表から各前記セグメントの開始ロジカルブロックアドレスを参照し、前記セグメント管理表により、対応する物理アドレスを算出する
ことを特徴とするボリューム制御装置
【請求項７】
請求項４記載のボリューム制御装置であって、
前記セグメント管理手段は、未使用のセグメントが存在しない場合、エラーを前記容量増加手段に通知する
ことを特徴とするボリューム制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、記憶装置システムにおいて、オンライン中に逐次容量拡張を行う方法に関する。
【０００２】
【従来の技術】
近年、複数のホスト計算機の記憶領域を一つの記憶装置に記憶する動きが盛んになっている。この動きを促している記憶装置の代表的なものとして、ディスクアレイがある。ディスクアレイは装置内部で複数の磁気ディスク記憶装置によって記憶領域の冗長性を持たせることにより信頼性を高め、必要な容量の記憶領域を論理ボリュームとして複数のホストへ提供する。このディスクアレイを用いたときの大きな利点の一つとして、論理ボリュームの容量拡張ができる点が挙げられる。
【０００３】
例えば、計算機がディスクアレイによって提供された論理ボリュームを使い切った場合、ディスクアレイ内部の未使用領域を任意長で切り出した論理ボリュームとして割り当て、計算機がこの論理ボリュームを使用中の論理ボリュームと結合することにより記憶領域を拡張できる。この機能はオンライン中にもボリュームの拡張ができるため、オンラインボリューム拡張と呼ばれる。オンラインボリューム拡張により、時々刻々と増大するデータに対して論理ボリュームの記憶領域の範囲をアプリケーション無停止で拡張するので、アプリケーションの稼動時間を拡大できる。また、ボリューム容量移行時にボリューム間データ移行を行う必要もないのでストレージの管理コストを大幅に削減できる。
【０００４】
【発明が解決しようとする課題】
従来、論理ボリューム利用者はオンラインボリューム拡張をするためには論理ボリューム提供者に連絡して拡張を施さなければならない。一つの企業内で利用するような小規模のサイトでは逼迫したデータの増加が無いため随時オンラインボリューム拡張をする必要がないが、データセンタなどの複数企業が共同で利用するような大規模のサイトでは、急激なデータの増加が複数企業の計算機から生じる可能性があり、随時オンラインボリューム拡張を行う必要性がある。加えて、ディスクアレイなどの記憶領域の利用効率を高めるために、１つの記憶装置で無駄なく複数利用者にボリュームを提供しなけばならない。
【０００５】
記憶装置の記憶領域を無駄なく利用するためには、記憶領域を小さい容量の論理ボリュームの単位で管理して、拡張の度に小さい容量の論理ボリュームで論理ボリュームの拡張を行わなければならない。このような状況下でオンラインボリューム拡張を利用する際、時々刻々と増大するデータにより複数の利用者からオンラインボリューム拡張の要求が同時発生して、論理ボリューム提供者が対応仕切れない場合がある。最悪の場合、オンラインボリューム拡張ができずに計算機の処理停止を余儀なくされるという問題がある。
【０００６】
論理ボリューム利用者は記憶領域を管理することなく、無限の記憶容量を要求する。一方、論理ボリューム提供者は、論理ボリューム利用者が記憶領域をどのように利用するかを考えることなく、記憶領域を効率よく管理を行い、より迅速に利用者へ提供することを要求する。
【０００７】
本発明の目的は、記憶資源の利用者と提供者の要求を解決するために、記憶領域を管理する装置によって、計算機のオンライン中に、一元的に管理された記憶領域から動的に適切な容量の記憶領域を割り当てることによって論理ボリュームを拡張することにある。
【０００８】
【課題を解決するための手段】
本発明のボリューム制御装置は、少なくとも１台の計算機及び少なくとも１台のディスク記憶装置に接続されたボリューム制御装置において、前記ディスク記憶装置の記憶領域と当該記憶領域の最小管理単位であるセグメントとの対応関係を管理するセグメント管理手段と、前記セグメントがそれぞれ割り当てられる複数の論理ボリュームのうち、一の論理ボリュームに対して前記計算機から送られるＩ／Ｏ要求を受け付けるＩ／Ｏ要求受付手段と、前記論理ボリュームに対する前記Ｉ／Ｏ要求によりアクセスされる論理アドレスを読み取り、読み取った前記論理アドレスの記憶領域が当該論理ボリューム上に存在する場合には第１の要求を出力し、当該論理アドレスの記憶領域が当該論理ボリューム上に存在しない場合には第２の要求を出力するＩ／Ｏ監視手段と、前記Ｉ／Ｏ要求がライトＩ／Ｏのときには、前記第１の要求に応じて、対象となるデータを、当該論理ボリュームに割り当てられた前記セグメントにより構成される記憶領域内の当該論理アドレスの位置に書き込むＩ／Ｏ処理手段と、前記第２の要求に応じて、他の前記論理ボリュームに割り当てられていない少なくとも１以上の前記セグメントを当該論理ボリュームに割り当て、前記Ｉ／Ｏ処理手段に前記Ｉ／Ｏ要求を送る容量増加手段とを備え、前記セグメント管理手段は、さらに、前記ディスク記憶装置が提供する前記記憶領域を構成する複数の前記セグメントのうち、論理ボリュームに割り当てられているセグメント数と、全セグメント数とからセグメントの利用率を管理し、セグメントの利用率が予め定められた閾値以上の場合、保守員に前記ディスク記憶装置の追加を通知することを特徴とする。
【０００９】
【発明の実施の形態】
＜第一の実施例＞
以下に、発明の実施例を図面を用いて説明する。
【００１０】
図１に本発明を適用した計算機システムの構成例を示す。本計算機システムは、複数のホスト１１００、ボリュームサーバ１２００、複数の磁気ディスク記憶装置１３００から構成される。本実施例では、ホスト１１００が1台、磁気ディスク記憶装置１３００が3台となっているが、１台ないし複数台あってもよい。また、ホスト１１００、ボリュームサーバ１２００、そして、磁気ディスク記憶装置１３００はＣＰＵ、メモリ等を有するが、本発明の実施例の説明に関係がないため説明を省略する。
【００１１】
ホスト１１００は、アプリケーション（Ａｐｐ）１１１０、オペレーティングシステム（以下ＯＳ）１１３０、そして、チャネルインターフェイス１１４０を有する。アプリケーション１１１０は、ボリューム提供装置であるボリュームサーバ１２００から提供されるボリュームをリード処理、ライト処理するDBやファイルシステム等の応用ソフトウエアである。オペレーティングシステム１１３０は、アプリケーション１１１０からのＩ／Ｏ要求を受け取りチャネルインターフェイス（Ｉ／Ｆ）１１４０へ転送するボリュームデバイス部（rsd0）１１３１と命令部１１３２から構成される。ＯＳ１１３０の命令部１１３２は、ＯＳ１１３０が使用する記憶装置の開始ブロック位置と終了ブロック位置等から構成される論理区画情報の管理とボリュームサーバ１２００の動作制御を行うソフトウエアである。
【００１２】
ボリュームサーバ１２００から提供される記憶領域である論理ボリュームを示す図４を用いて論理区画情報４１００について説明する。本実施例では動的にボリュームを拡張するために、ＯＳ１１３０が扱う論理区画情報の開始ブロック位置は０ＬＢＡ（４２００）で示し、また終了ブロック位置は記憶装置のOSがサポートする最大記憶装置の容量もしくはユーザが利用する記憶容量を示す。もし、最大容量がユーザの利用する記憶容量によって制限された場合、ボリュームサーバ１２００によって提供される論理ボリュームの記憶領域もこの終了ブロック位置によって制限される。また、論理区画情報はＯＳ１１３０の管理下にある記憶装置において開始ブロック位置０ＬＢＡ（４２００）から論理区画情報の保管に必要な領域（４１００）分のＬＢＡまでに保管される。通常の保管されるデータは論理区画情報以外の記憶領域（４４００）に保管される。
【００１３】
図１に示すチャネルＩ／Ｆ１１４０は、ＯＳ１１３０からのＩ／Ｏを外部デバイスへ転送する機能を有するデバイスであり、ファイバチャネルＩ／ＦやＳＣＳＩ Ｉ／ＦなどのブロックデバイスＩ／Ｆである。
【００１４】
ホスト１１００とボリュームサーバ１２００間並びにボリュームサーバ１２００とディスク１３００間を制御するコマンドはＩ／Ｏ要求と呼ばれる。Ｉ／Ｏ要求はＳＣＳＩプロトコルなどのブロックデバイスプロトコルのコマンドである。図１７にＩ／Ｏ要求のコマンドフォーマットを示す。Ｉ／Ｏ要求は、オペレーションコード１７００１、ＬＵＮ(Logical Unit Number)１７００２、ＬＢＡ(Logical Block Address)１７００３、転送データ長１７００４を持つ。オペレーションコード１７００１は、リード処理、ライト処理等を示す番号である。ＬＵＮ１７００２は、コマンドが処理を行う論理ボリュームの一意な番号である。ＬＢＡ１７００３はボリュームサーバ１２００から提供される論理ボリューム上の処理を行う位置である。転送データ長１７００４は、本Ｉ／Ｏ要求で一度に処理される量である。
【００１５】
ボリュームサーバ１２００は、ホスト側のチャネルＩ／Ｆ１２１０、ホスト１１００から要求されたＩ／Ｏ要求の処理と磁気ディスク記憶装置１３００の管理を行うボリューム提供部１２３０、そして、ボリューム提供部１２３０が要求するＩ／Ｏ要求を磁気ディスク記憶装置１３００へ転送するチャネルＩ／Ｆ１２２０から構成される。ホスト側のチャネルＩ／Ｆ１２００は、ホスト１１００と接続可能なファイバチャネルＩ／ＦやＳＣＳＩなどのブロックデバイスＩ／Ｆである。本実施例ではホスト１１００側と磁気ディスク記憶装置１３００側のチャネルは分離しているが、ホスト１１００側のチャネルＩ／Ｆ１２１０と磁気ディスク記憶装置１３００側のチャネルＩ／Ｆ１２２０は共有していてもよい。
【００１６】
また、このボリュームサーバ１２００はホスト１１００に対して無尽蔵の容量を持つ論理ボリュームを提供する。つまり、ホスト１１００からボリュームサーバ１２００を見たときにボリュームの範囲を決定する論理ブロック番号（ＬＢＡ）の開始値は０と決まっているが、範囲の終了値であるＬＢＡは規定しなくてもよい。また、範囲の終了値のＬＢＡを規定した場合、その値がボリュームサーバ１２００から提供されるボリュームの最大容量となる。
【００１７】
ボリュームサーバ１２００内のボリューム提供部１２３０は、Ｉ／Ｏ監視部１２３１、容量増減部１２３２、セグメント管理部１２３３、Ｉ／Ｏ処理部１２３４、そして、物理論理アドレス管理部１２３５から構成される。セグメント管理部１２３３は、セグメント管理表２０００を内部に持ち、このセグメント管理表２０００を使用してボリュームサーバ１２００によって提供されるボリュームの記憶領域の管理を行っている。
【００１８】
図２のセグメント管理表２０００は、ディスク番号（Ｄｉｓｋ ＩＤ）２１００、セグメント番号(Ｓｅｇｍｅｎｔ Ｎｕｍｂｅｒ)２２００、開始ＬＢＡ（ＬＢＡ（ＳＴＡＲＴ））２３００、セグメントの大きさ（Ｓｉｚｅ）２４００とそのセグメントの利用状況（Ｉｎ−Ｕｓｅ）２５００の値を持つ。ディスクＩＤ２１００は、磁気ディスク記憶装置１３００がボリュームサーバ１２００に接続された際にＳＣＳＩ等のブロックレベルプロトコルによって決定されたディスクの一意な識別番号である。セグメントは、個々の磁気ディスク記憶装置１３００内で分けられたボリュームサーバ１２００で管理される記憶領域の最小単位であり、セグメント番号２２００はボリュームサーバ１２００でセグメントを管理するための一意な識別番号である。ＬＢＡ（ＳＴＡＲＴ）２３００はディスクＩＤ２１００の磁気ディスク記憶装置１３００内でセグメントの記憶領域が開始する物理位置を規定する。セグメントの大きさはディスク内のＬＢＡ（ＳＴＡＲＴ）２３００から始まる記憶領域の大きさを示す。セグメントの利用状況はセグメントの記憶領域がボリュームサーバ１２００によって使用されているか未使用であるかを2つの値によって示す。使用中の場合は１、または未使用の場合は０の値によって利用状況を示す。
【００１９】
次に、物理論理アドレス管理部１２３５ではボリュームサーバ１２００によって提供される論理ボリュームとデータが保管される磁気ディスク記憶装置１３００との間の物理論理アドレス管理を行う。この論理ボリュームと実データが存在する磁気ディスク記憶装置１３００を管理する手段として、物理論理アドレス管理部１２３５内に図３の物理論理管理表３０００をもつ。物理論理管理表３０００は論理ユニット番号（LUN）３１００、セグメント番号（Segment Number）３２００、ＬＵＮ ＬＢＡ（ＳＴＡＲＴ）３３００、そして、ＬＵＮ ＬＢＡ（ＥＮＤ）３４００が管理される。LUN３１００は論理ユニット番号と呼ばれ、ボリュームサーバ１２００からホスト１１００へ提供される論理ボリュームの一意な番号である。セグメント番号３２００はセグメント管理部１２３３で管理されている記憶領域の一意な番号である。ＬＵＮ３１００により提供される論理ボリュームは複数のセグメントから構成され、論理ボリュームの論理ブロック番号（LBA）は物理論理管理表３０００の個々のＬＵＮ３１００内で若いセグメントのLBAから古いセグメントのLBAの順に連続して結合されている。
【００２０】
例えば、図３でＬＵＮ０（３５００）の時にセグメント番号１（３５１０）、セグメント番号２（３５２０）、セグメント番号３（３５３０）の順に結合され、図４のようにＬＵＮ０（４０００）の 単一論理ボリュームとしてホスト１１００に提供される。ＬＵＮ ＬＢＡ（ＳＴＡＲＴ）３３００はＬＵＮ内でセグメントが使用するＬＢＡの開始位置が示されている。ＬＵＮ ＬＢＡ（ＥＮＤ）３４００はＬＵＮ内でセグメントが使用するＬＢＡの終了位置が示されている。Ｉ／Ｏ監視部１２３１は、ホスト１１００から磁気ディスク記憶装置１３００へアクセスされる個々のＩ／Ｏ要求内のLBAを監視する。Ｉ／Ｏ処理部１２３４は実際のリード／ライトのＩ／Ｏ処理を行う。容量増減部１２３２は、Ｉ／Ｏ監視部１２３１もしくはホスト１１００の命令部１１３２から要求された容量の増減処理を行う。
【００２１】
本実施例では、ボリュームサーバ１２００が独立した装置として配置されているが、磁気ディスク記憶装置１３００にボリュームサーバ１２００の機能を組み込んでもよい。
【００２２】
また、本実施例ではセグメント単位でボリューム拡張を行っているが、セグメント管理部１２３３と物理論理アドレス管理部１２３５を例えば、Ｌｏｇ Ｓｔｒｕｃｔｕｒｅｄファイルシステム等の容量拡張可能なファイルシステムとして見なすと、セグメント管理表２０００と物理論理管理表３００内の記憶領域の最小単位であるセグメントをファイルシステムの記憶領域の最小単位であるブロックと置き換え、ファイルシステムのファイルをボリュームサーバ１２００より提供されるＬＵＮ３１００が付けられた論理ボリュームと見なすことができる。つまり、セグメント管理部１２３３と物理論理アドレス管理部１２３５をファイルシステムに置き換えても、ブロック単位で動的に拡張可能な論理ボリュームを提供できる。
（動作の説明）
次に、ボリュームサーバ１２００の動作を図５を用いて説明をする。ホスト１１００からボリュームサーバ１２００へＩ／Ｏ要求が発行された後（ステップ５００１）、ボリュームサーバ１２００は受信したＩ／Ｏ要求の処理をボリューム提供部１２３０で行う（ステップ５００２）。Ｉ／Ｏ要求の処理が終了するとＩ／Ｏ要求の処理完了通知をホスト１１００へ発行する（ステップ５００３）。ホストはＩ／Ｏ完了通知を受信して（ステップ５００４）、処理を終了する。ボリュームサーバ１２００のボリューム提供部１２３０は一見すると従来の磁気ディスク記憶装置１３００の制御部と同じ動作に見えるが、ボリュームを無限に拡張する機構が施されている。以下では、この機構が備わっているボリューム提供部１２３０の内部動作を説明する。
【００２３】
ボリューム提供部１２３０は、Ｉ／Ｏ監視部１２３１、Ｉ／Ｏ処理部１２３４、物理論理アドレス管理部１２３５、容量増減部１２３２、そして、セグメント管理部１２３３の連携により動作する。図１のボリューム提供部１２３０の拡大図１２３６内の太い線はＩ／Ｏ要求の流れを表し、細い線は制御の流れを示す。まず、ホスト 側Ｉ／Ｆ１２１０から流されたＩ／Ｏ要求はＩ／Ｏ監視部１２３１で処理され、その後Ｉ／Ｏ処理部１２３４で個々のＩ／Ｏ要求のＬＢＡを物理論理変換した後、個々の磁気ディスク記憶装置１３００に対してリード／ライト処理が行われる。この処理の流れに従い個々の部について説明する。
【００２４】
Ｉ／Ｏ監視部１２３１の動作について図６を用いて説明する。各ＬＵＮにおける論理ボリュームの既存の確保領域容量は図３の物理論理管理表３０００のセグメント番号と各セグメントのサイズ２４００が記載されている図２のセグメント管理表２０００よりＬＵＮ内の各セグメントのサイズ２４００を合算して計算する（ステップ６００１）。ホスト１１００からのＩ／Ｏ要求が送られるとＩ／Ｏ要求が論理ボリューム上のアクセスされるＬＢＡを検出する（ステップ６００２）。アクセスされるＬＢＡより確保されている領域が大きい場合（ステップ６００３）、物理論理アドレス管理部１２３５へＩ／Ｏ処理を要求する（ステップ６００５）。アクセスされるＬＢＡより確保されている領域が小さい場合（ステップ６００３）、容量増減部１２３２へ容量確保の要求を行い（ステップ６００４）、Ｉ／Ｏ処理部１２３４へＩ／Ｏ処理を要求（ステップ６００５）する。
【００２５】
次に、容量増減部１２３２の処理動作について図７を用いて説明する。Ｉ／Ｏ監視部１２３１からの要求とホスト１１００の命令部１１３２からの要求とで動作が異なる。まず、Ｉ／Ｏ監視部１２３１からの動作について説明する。Ｉ／Ｏ監視部１２３１から容量増加の命令が要求される（ステップ７００１）とボリューム増加処理（ステップ７００２）を行い、処理を終了する。一方、ホスト１１００の命令部１１３２から全容量の中からｍＬＢＡ分の容量減少の命令が要求されると（ステップ７００１）、ｍＬＢＡ分のボリューム減少処理を行う（ステップ７００３）。
【００２６】
ボリューム増加処理（ステップ ７００２）では、セグメント管理部１２３３と物理論理アドレス管理部１２３５と連携して次の処理が行われる（図８）。まず、セグメント管理部１２３３へ未使用セグメントの取得要求をセグメント番号パラメータＳＮ＝−１として行う（ステップ ８００１）。セグメント管理部１２３３では、要求されたセグメントが存在する場合セグメント番号パラメータＳＮにセグメント番号（ＳＮ＞＝０）を入れて戻し、要求されたセグメントが存在しない場合ＳＮ＝−1を戻す（ステップ８００２）。セグメント番号を受け取った容量増減部１２３２はセグメント番号パラメータＳＮが正数であるか否かを判別する（ステップ８００３）。ＳＮ＞＝０の場合には処理を継続し、ＳＮ＜０の場合はエラーを戻し（ステップ ８００６）、処理を終了する。容量増減部１２３２ではセグメント管理部１２３３より取得したセグメント番号ＳＮを元に物理論理アドレス管理部１２３５へボリューム結合要求をする（ステップ８００４）。物理論理アドレス管理部１２３５では、セグメント番号を元に物理論理管理表３０００へ目的のＬＵＮである論理ボリュームの最後尾セグメントに対してセグメントを結合して（ステップ８００５）、処理を終了する。この物理論理アドレス管理部１２３５の具体的な動作については後述する。
【００２７】
一方、ボリューム減少処理（ステップ ７００３）は次の処理が行われる（図９）。縮小容量がｍＬＢＡの時、縮小後の論理ボリューム領域が存在しない一つもしくは複数のセグメント番号を物理論理管理表３０００から取得する（ステップ９００１）。セグメント取得手順としては、まず、物理論理管理表３０００より終了ＬＢＡ（３４００）よりＬＢＡ（ＥＮＤ）−ｍとして縮小後のＬＢＡを算出する。この縮小後のＬＢＡを元にして目的のＬＵＮ上で縮小後のＬＢＡと重複していない一つないし複数のセグメント番号（ＳＮ）を取得する。
【００２８】
次に、これらのセグメントを物理論理アドレス管理部１２３５へセグメントの返還要求を行う（ステップ９００２）。物理論理アドレス管理部１２３５は受け取ったセグメントを物理論理管理表３０００上のＬＵＮで指定される論理ボリュームのリストからセグメント番号と一致する列（ＳＮ３２００、ＬＢＡ（ＳＴＡＲＴ）３３００、ＬＢＡ（ＥＮＤ）３４００）を切り離す（ステップ９００３）。容量増減部１２３２はセグメント管理部１２３３へ切り離されたセグメント番号ＳＮを未使用セグメントとして管理するように命令する（ステップ９００４）。セグメント管理部１２３３では、切り離されたセグメントを未使用セグメントとして管理する（ステップ９００５）。ホスト１１００に論理ボリュームが切り離されたことを通知する（ステップ９００６）。以上で、ボリューム縮小の処理手順を終了する。
【００２９】
セグメント管理部１２３３は、容量増減部１２３２より命令を受けたときに、セグメント管理表２０００に記載されているセグメントの使用状況の管理とセグメント追加・削除の管理する。セグメント使用状況の管理は前述したセグメント管理表２０００の管理手順に従う。
【００３０】
セグメント使用状況の管理の動作について、図１０を用いて説明する。まず、容量増減部１２３２よりボリューム増減要求が引き数のセグメント番号と共に渡される。セグメント番号＜０のとき未使用セグメント取得要求と判断され（ステップ１０００１）、ステップ１０００２へ処理を続ける。未使用セグメント取得要求は、未使用セグメントの存在の可否をセグメント管理表２０００を用いて調べる（ステップ１０００２）。未使用セグメントが無ければ（ステップ１０００２）、エラーとして容量増減部１２３２へ通知する（ステップ１０００５）。未使用セグメントが存在する場合（ステップ１０００２）、未使用セグメントのセグメント番号を容量増減部１２３２へ戻す（ステップ１０００３）。そして、セグメント管理表のセグメントに対応する使用状況を、使用中を示す１に変更して（ステップ１０００４）、ステップ１０００７に進む。一方、セグメント番号＞＝０の時（ステップ１０００１）、セグメントの未使用状態へ移す動作と判断され、ステップ１０００６で処理を継続する。ステップ１０００６でセグメント管理表２０００よりセグメント番号に対応する使用状況を未使用の０にして、ステップ１０００６に進む。ステップ１０００７では、セグメント管理表２０００の利用状態２４００の項目を用いて使用中セグメントの数と全セグメント数よりセグメントの利用率（使用中セグメント数／全セグメント数）を計算して、利用率が９０％以上の可否を判別する。９０％以上の場合、保守員に磁気ディスク記憶装置１３００の追加を依頼して（ステップ１０００８）、処理を終了する。利用率が９０％以下の場合はそのまま処理を終了する。利用率のしきい値である９０％は、保守員がシステムの信頼性に応じて可変に変更できるものとする。以上で、セグメント管理部１２３３のボリューム使用状況管理の動作についての説明を終了する。
【００３１】
次に、磁気ディスク記憶装置１３００の追加・削除の動作を図１１を用いて説明する。ボリューム追加・削除の動作をステップ１１００１で判断する。追加の場合はステップ１１００５へ進み、削除の場合はステップ１１００２へ進む。磁気ディスク記憶装置１３００の追加の場合、ステップ１１００５で磁気ディスク記憶装置１３００の容量を確認する（ステップ１１００５）。確認された容量を元にセグメントの数ならびに大きさを決定する（ステップ１１００６）。セグメントの数並びに大きさは、固定値もしくは保守員による指定される値のどちらでもよい。この値を元にセグメント管理表２０００の最後尾へ、磁気ディスク記憶装置１３００の追加毎に、ディスク ＩＤ２１００、セグメントのセグメント番号２２００、開始位置２３００、セグメントの大きさ２４００、そして、利用状況２５００として未使用を表す０を挿入して（ステップ１１００７）、処理を終了する。
【００３２】
一方、ボリューム削除の場合、該当のセグメント番号のセグメントが未使用セグメントか否かを判断する（ステップ１１００２）。未使用セグメントである場合、セグメント管理表２０００よりそのセグメント番号の列を削除する（ステップ１１００３）。該当セグメントが未使用セグメントでない場合（ステップ １１００２）、エラーとして戻し、処理を終える（ステップ１１００４）。
【００３３】
以上で、セグメント管理部１２３３のセグメント追加・削除の動作について説明を終了する。セグメント管理部１２３３は、以上で説明された手順でセグメントの使用状況の管理と追加・削除の動作を行う。
【００３４】
Ｉ／Ｏ処理部１２３４の動作処理を図１２を用いて説明する。まずＩ／Ｏ監視部１２３１よりＩ／Ｏ処理部１２３４へ送られたＩ／Ｏ要求はＩ／Ｏ要求のＬＢＡを物理アドレスへ変換することを物理論理アドレス管理部１２３５へ要求する（ステップ１２００１）。次に、Ｉ／Ｏ要求の種別を判別する(ステップ１２００２)。リード Ｉ／Ｏの場合、物理アドレスを用いて磁気ディスク記憶装置１３００よりデータを読み出し（ステップ１２００３）、読み出されたデータをホスト１１００に戻す（ステップ１２００４）。ライト Ｉ／Ｏの場合、物理アドレスを用いて磁気ディスク記憶装置１３００へデータを書き込み（ステップ１２００５）、書き込みが完了したことをホスト１１００に通知する（ステップ１２００６）。以上でＩ／Ｏ処理部１２３４の動作を手順の説明を終了する。
【００３５】
物理論理アドレス管理部１２３５の動作は２つの動作に分かれる。まず、Ｉ／Ｏ処理部１２３４から要求される物理論理アドレス変換手順である。この変換手順を図１３を用いて説明し、実際の物理アドレスと論理アドレスとの物理論理間の構造を図１４を用いて説明する。変換の際には次の規則を使う。まず、Ｉ／Ｏ要求のターゲットとなっているＬＵＮに対するセグメント群を選ぶ（ステップ１３００１）。ＬＢＡから物理側のディスク番号とＬＢＡを算出する（ステップ１３００２）。
【００３６】
算出する手順は、まず、ターゲットのＬＵＮが属する複数のセグメント群からＩ／Ｏ要求に記載されているＬＢＡtargetを元に物理論理管理表３０００から各セグメントの開始ＬＢＡを参照してＬＢＡtarget（１４３００）がアクセスするセグメント番号（SN）を選ぶ。判明したセグメント番号SNよりセグメント管理表２０００を用いて、ＬＢＡtargetが（１４３００）アクセスするディスクＩＤ、セグメントの磁気ディスク装置の先頭から物理アドレスを割り出す。N番目のセグメントの先頭物理アドレスＬＢＡN（１４００３）からデータが操作されるセグメント上のアドレスはＬＢＡtarget−ＬＢＡNであるので、磁気ディスク記憶装置１３００の先頭からセグメントの物理アドレスは、（セグメントの先頭ＬＢＡ ＬＢＡsegstart）＋（ＬＢＡ−ＬＢＡN）（１４００５）である。Ｉ／Ｏ処理部１２３４へディスクＩＤ２１００、ディスクＩＤ２１００の磁気ディスク記憶装置１３００のＬＢＡである（セグメントの先頭ＬＢＡ ＬＢＡsegstart）＋（ＬＢＡ−ＬＢＡN）（１４００５）を戻す（ステップ１３００３）。
【００３７】
もう一つの物理論理アドレス管理部１２３５の動作は、ボリュームの物理論理管理表３０００への追加と削除である。この動作を図１５を用いて説明する。物理論理管理表内のＬＵＮを選択する（ステップ１５００１）。ボリュームの追加の際（ステップ１５００２）、容量増減部１２３２より追加されるセグメント番号が与えられ、追加されるＬＵＮボリュームにおいてセグメント列の最後尾にセグメントを追加する（ステップ１５００３）。この際、ホスト１１００から追加されたセグメントの見え方は、ＬＢＡは、ＬＢＡN（１４００３）からＬＢＡN＋ＳＩＺＥＮ（１４００４）のアドレス間に追加ボリュームが存在する。ボリュームを削除する際には（ステップ１５００２）、容量増減部１２３２よりｍＬＢＡ分が削除される命令を受けた後、削除されるＬＵＮボリューム内のセグメント列の最後尾よりセグメント単位毎にｍＬＢＡ分の容量を削除する（ステップ１５００４）。削除されたセグメントはセグメント番号を容量増減部１２３２へ戻す（ステップ１５００５）。以上で物理論理アドレス管理部１２３５の動作の説明を終了する。
【００３８】
ホスト１１００の命令部１１３２は、アプリケーション１１１０側で使用するボリューム内のデータの容量を縮小した後、アプリケーションからもしくはユーザから指示を受け、ボリュームサーバ１２００から提供される論理ボリュームの記憶領域をセグメント単位毎に縮小する命令をＩ／Ｆ１１４０経由でボリュームサーバ１２００へ命令するプログラムである。図１６を用いて、この動作を説明する。
【００３９】
まず、アプリケーション１１１０からボリュームのｍＬＢＡ分の縮小の要求を受ける（ステップ１６００１）。命令部１１３２では、ＯＳ１１３０の下で管理されている論理ボリュームの論理区画情報の最終ブロック位置をｍＬＢＡ分縮小する（ステップ１６００２）。命令部１１３２より容量がｍＬＢＡ分のボリュームをボリュームサーバの容量増減部１２３２へ発行する（ステップ１６００３）。容量増減部１２３２はボリューム縮小処理を行い（ステップ１６００４）、ホスト１１００側にその結果を戻す。以上で命令部１１３２の動作の説明を終了する。
【００４０】
次に、アプリケーション１１１０との連携動作を示す。前述したように、ホスト１１００はボリュームサーバ１２００から提供される論理ボリュームを既存のボリュームとして取扱うことができるが、ボリュームサーバ１２００側でＬＵＮが示すボリュームが保持しているセグメント以上のボリュームへのアクセスが生じた時に、ボリュームがセグメント管理部１２３３より追加される。この動作は、前述したボリューム提供部１２３０の動作と同じである。
【００４１】
一方、アプリケーション１１１０が自ら拡張したボリュームの容量整理等を行い、実際のアプリケーション１１１０で使用されている容量が減った時には、ホスト１１００の命令部１１３２へ、アプリケーション１１１０側で、削減前後における差分の容量を伝え、前述のホスト１１００の命令部１１３２経由でのボリュームサーバでの前述のボリューム縮小手順（図１６）を実行する。これらの手順で、ボリュームサーバで使用中のセグメント数をアプリケーション１１１０の動作にあわせて適切な論理ボリューム容量を提供できる。
＜第二の実施例＞
第一の実施例では、ホスト１１００が、ボリュームサーバ１３００から提供される論理ボリュームの記憶領域外へライトＩ/Oアクセスが発生時に、ボリュームサーバ１２００が逐次記憶領域を割り当てることによって、ボリュームサーバ１２００から提供される論理ボリュームへの記憶領域拡張を実施した。第二の実施例では、アプリケーション１１１０の指示によってホスト１１００の命令部１３００経由で予め論理ボリュームの記憶容量拡張を行い、ＯＳ１１３０によって論理ボリュームの記憶容量の大きさを認知した上でアプリケーション１１１０に利用可能にする。この手順について図１８を用いて説明する。
【００４２】
まず、ホスト１０００の命令部１１３２はアプリケーション１１１０からlＬＢＡの記憶領域の拡張要求を受け取る（ステップ１８００１）。ホスト１１００の命令部１１３２は、該当論理ボリュームの全容量と拡張領域分ｍＬＢＡの合算したＬＢＡへライトI/Oを発行する。ボリュームサーバ１２００のＩ／Ｏ監視部１２３１は、ボリュームサーバが提供しているボリュームよりｍＬＢＡ分拡張しているので容量増減部１２３２への容量拡張処理を行う（ステップ１８００３）。ライトＩ／Ｏが成功して記憶領域が増加した場合、ステップ１８００５を行い、失敗したときには記憶領域拡張を行わず処理は終了する。ステップ１８００５ではホスト１１００の命令部１１３２は、ボリュームサーバ１２００から提供される該当論理ボリュームに対するＯＳ１１３０の論理区画情報の終了ブロック数をｍＬＢＡ分増加する。以上で、アプリケーション１１１０経由でボリュームサーバ１２００から提供される論理ボリュームの記憶領域拡張手順について説明を終了する。
【００４３】
【発明の効果】
本発明によれば、ボリュームサーバの要求に応じて記憶領域をボリュームサーバに付加することにより、ホスト計算機のアプリケーションは、容量を動的に伸縮可能な単一ボリュームを利用できる。
【図面の簡単な説明】
【図１】記憶装置システムの構成図。
【図２】セグメント管理表２０００を示す図。
【図３】物理論理管理表３０００を示す図。
【図４】ＬＵＮ０（４０００）とセグメント１（３４１０）、セグメント２（３４２０）、セグメント３（３４１０）の論理構造関係を示す図。
【図５】ホスト１１００とボリュームサーバ１２００間で処理されるＩ／Ｏの動作フロー。
【図６】Ｉ／Ｏ監視部１２３１の動作フロー。
【図７】容量増減部１２３２の動作フロー。
【図８】セグメント管理部１２３３、容量増減部１２３２、物理論理アドレス管理部１２３５間のボリューム拡張処理の動作フロー。
【図９】セグメント管理部１２３３、容量増減部１２３２、物理論理アドレス管理部１２３５間のボリューム縮小処理の動作フロー。
【図１０】セグメント管理部１２３３のセグメント使用状況管理の動作フロー。
【図１１】セグメント管理部１２３３のディスク追加・削除時の動作フロー。
【図１２】Ｉ／Ｏ処理部１２３４の動作フロー。
【図１３】物理論理アドレス管理部１２３５の物理論理アドレス変換の動作フロー。
【図１４】ＬＵＮ１４０００、セグメント１４２０１とセグメント１４２０２、磁気ディスク記憶装置１４１００間の論理構造関係を示す図。
【図１５】物理論理アドレス管理部１２３５のセグメントの物理論理管理表への追加削除時の動作フロー。
【図１６】ホスト１１００内の命令部１１３２とボリュームサーバ１２００内の容量増減部１２３２間の論理ボリューム記憶容量拡張時の動作フロー。
【図１７】Ｉ／Ｏコマンドの物理フォーマットを示す図。
【図１８】ホスト１１００内の命令部１１３２とボリュームサーバ１２００内の容量増減部１２３２間の論理ボリューム記憶容量拡張時の動作フロー。
【符号の説明】
１１００：ホスト、１１１０：アプリケーション、１１３０：オペレーティングシステム（ＯＳ）、１１３１：ボリュームデバイス部、１１３２：命令部、
１１４０：チャネルインターフェイス、１２００：ボリュームサーバ、
１２１０：チャネルインターフェイス、１２２０：チャネルインターフェイス、１２３０：ボリューム提供部、１２３１：Ｉ／Ｏ監視部、１２３２：容量増減部、
１２３３：セグメント管理部、１２３４：Ｉ／Ｏ処理部、
１２３５：物理論理アドレス管理部、１２３６：ボリューム提供部、
１３００：磁気ディスク記憶装置
【図１】
0004175788.tif 000002
【図２】
0004175788.tif 000003
【図３】
0004175788.tif 000004
【図４】
0004175788.tif 000005
【図５】
0004175788.tif 000006
【図６】
0004175788.tif 000007
【図７】
0004175788.tif 000008
【図８】
0004175788.tif 000009
【図９】
0004175788.tif 000010
【図１０】
0004175788.tif 000011
【図１１】
0004175788.tif 000012
【図１２】
0004175788.tif 000013
【図１３】
0004175788.tif 000014
【図１４】
0004175788.tif 000015
【図１５】
0004175788.tif 000016
【図１６】
0004175788.tif 000017
【図１７】
0004175788.tif 000018
【図１８】
0004175788.tif 000019