以下、本発明の実施の形態につき図面を参照して説明する。
図1は本発明の一実施形態に係るストレージ装置を備えたストレージシステムの構成を示すブロック図である。本実施形態において、ストレージシステムは、ストレージ装置1と、当該ストレージ装置1を利用するホスト装置2とから構成される。なお、ストレージシステムが、ストレージ装置1を含む複数のストレージ装置を備えていても良い。また、ストレージシステムが、ホスト装置2を含む複数のホスト装置を備えていても良い。
ホスト装置2は、後述するホストインタフェースIF1を介してストレージ装置1との間のデータ転送を含むデータ通信を行う。つまりホスト装置2は、ストレージ装置1に対してリードアクセスやライトアクセスを行う。
ストレージ装置1は、ストレージコントローラ10とアレイ20とから構成される。アレイ20は、複数の記憶媒体、例えばn個のHDD21-1(#1)〜21-n(#n)から構成される。ここではアレイ20は、HDD21-1〜21-nを組み合わせて、当該HDD21-1〜21-nの記憶領域の一部または全部の集合を物理アドレスが連続した1つの物理領域として定義することによって構成されるものとする。なお、HDD21-1〜21-nを組み合わせて、複数のアレイを構成することも可能である。
図2は、論理ディスク(LDISK)210とアレイ20の物理領域との関係を示す。アレイ20の物理領域は、物理エクステント201(A),202(B)を含む、一定サイズの複数の物理エクステントに分割して管理される。論理ディスク210は、論理エクステント211(A),212(B)を含む、一定サイズの複数の論理エクステントに分割して管理される。一般に論理エクステントと物理エクステントとは同一サイズである。本実施形態では、論理エクステント及び物理エクステントのサイズは600セクタ(ブロック)である。セクタ(ブロック)は、HDD21-1〜21-nの最小アクセス単位である。
論理ディスク210内の論理エクステントには、必要に応じてアレイ20内の物理エクステントが割り当てられる。例えば、ホスト装置2からのライト要求で指定された論理エクステントに物理エクステントが未割り当ての場合、当該指定された論理エクステントに、他の論理エクステントに未割り当ての物理エクステントが割り当てられる。ここで、指定された論理エクステントに物理エクステントが未割り当てであるかは、後述するエクステント管理テーブル120を参照することによって判定することが可能である。
図2の例では、論理ディスク210内の論理エクステント211(A),212(B)に、それぞれ矢印221,222で示されるように、アレイ20内の物理エクステント201(A),202(B)が割り当てられている。図2において、アレイ20内の物理エクステントの開始位置に付されている数値は物理ブロックアドレス(PBA)を示し、論理ディスク210内の論理エクステントの開始位置に付されている数値は論理ブロックアドレス(LBA)を示す。なお、論理ディスク210が1つの論理エクステントから構成されていても構わない。
論理ディスク210には、当該論理ディスク210を識別するための識別情報として、例えば論理ディスク(LDISK)番号0が割り当てられているものとする。一般に、ホスト装置2からは、論理ディスク210は認識されるものの、アレイ20は認識されない。
再び図1を参照すると、ストレージコントローラ10は、ホストインタフェースIF1、ディスクインタフェースIF2、物理エクステント確保部11、エクステント管理テーブル記憶部12、データパターン生成応答部13、データパターン書き込み部14、データパターンマッチング部15、不使用最終アドレス記憶部16、不使用最終アドレス管理部17及び物理エクステント解放部18を備えている。これらのインタフェースIF1,IF2及び各部11〜18は、バス19によって相互に接続されている。
ホストインタフェースIF1は、ホスト装置2からのコマンドを受信する。ホストインタフェースIF1は、ホスト装置2からのコマンドがアクセス要求の場合、ホスト装置2とストレージ装置1との間で、リードアクセスに伴うリードデータ及びライトアクセスに伴うライトデータの転送を行う。ディスクインタフェースIF2は、例えばストレージコントローラ10からの要求に従い、ストレージコントローラ10とアレイ20内のHDD21-iとの間で、リードデータ及びライトデータの転送を行う。
物理エクステント確保部11は、ホスト装置2からアクセスされる、論理ディスク210内の論理エクステントと、当該論理エクステントに割り当てられる、アレイ20内の物理エクステントとの対応関係を管理する。特に物理エクステント確保部11は、ホスト装置2からのライト要求に応じて、当該ライト要求で指定された論理ディスク210内の論理エクステントに割り当てられる物理エクステントを確保し、これらの論理エクステントと物理エクステントとの対応関係を、エクステント管理テーブル記憶部12において管理する。
エクステント管理テーブル記憶部12は、エクステント管理テーブル120を記憶する。エクステント管理テーブル120の各エントリは、論理エクステントと当該論理エクステントに割り当てられる物理エクステントとの対応関係を示すエクステント管理情報を保持する
図3は、エクステント管理テーブル120のデータ構造例を示す。エクステント管理テーブル120の各エントリに保持されるエクステント管理情報は、論理エクステントの管理情報である論理エクステント情報と、当該論理エクステントに割り当てられる物理エクステントの管理情報である物理エクステント情報とから構成される。
論理エクステント情報は、対応する論理エクステントが属する論理ディスクの論理ディスク(LDISK)番号と、当該論理エクステントの論理ディスク(LDISK)内の開始論理ブロックアドレス(LBA)と、当該論理エクステントのサイズ(例えばセクタ数)の各情報から構成される。物理エクステント情報は、対応する物理エクステントのアレイ内の開始物理ブロックアドレス(PBA)と、当該物理エクステントのサイズ(例えばセクタ数)の各情報から構成される。
図3の例では、図2からも明らかなように、論理エクステント211(A)は、当該論理エクステント211(A)が属する論理ディスク210のLDISK番号が0、当該論理エクステント211(A)の論理ディスク210内の開始LBAが0、そして当該論理エクステント211(A)のセクタサイズが600であることを示す論理エクステント情報によって管理される。また、論理エクステント211(A)に割り当てられる物理エクステント201(A)は、当該物理エクステント201(A)のアレイ20内の開始PBAが3000、当該物理エクステント201(A)のセクタサイズが600であることを示す物理エクステント情報によって管理される。
同様に、論理エクステント212(B)は、当該論理エクステント212(B)が属する論理ディスク210のLDISK番号が0、当該論理エクステント212(B)の論理ディスク210内の開始LBAが600、そして当該論理エクステント212(B)のセクタサイズが600であることを示す論理エクステント情報によって管理される。また、論理エクステント212(B)に割り当てられる物理エクステント202(B)は、当該物理エクステント202(B)のアレイ20内の開始PBAが6600、当該物理エクステント202(B)のセクタサイズが600であることを示す物理エクステント情報によって管理される。、
物理エクステント確保部11は、論理エクステントに物理エクステントを新たに割り当てる場合、エクステント管理テーブル120に、論理エクステントと物理エクステントとの対応関係を定義するためのエントリ(行)を追加し、当該エントリに対応するエクステント管理情報を設定する。
データパターン生成応答部13は、例えば全ビットが0であるような、所定のデータパターンを生成する機能を有する。データパターン生成応答部13はまた、ホスト装置2からストレージ装置1に、物理エクステントが未割り当ての論理エクステントに対するリード要求が送信されて、当該リード要求がストレージ装置1内のホストインタフェースIF1で受信された場合、前記所定のデータパターンをリードデータとしてホスト装置2に対してホストインタフェースIF1経由で応答する機能を有する。物理エクステントが未割り当ての論理エクステントかどうかは、エクステント管理テーブル記憶部12に記憶されているエクステント管理テーブル120を参照することによって判定される。
データパターン書き込み部14は、ホスト装置2から不使用領域の解放のために当該不使用領域の範囲を通知する、領域解放コマンドとしての特定のSCSI(Small Computer System Interface)コマンド(以下、UNMAPコマンドと称する)をホストインタフェースIF1が受信した場合に動作する。UNMAPコマンドは、SCSIの通信用コマンドセットに属しており、現在標準化が進められている。
UNMAPコマンドは、ホスト装置2にとって不使用となった論理ディスク内の領域(不使用領域)の範囲を指定する領域情報を含む。この領域情報の指定する範囲を、指定範囲と称する。領域情報は、例えば、指定範囲が属する論理ディスクの論理ディスク番号、当該指定範囲の始端の論理ブロックアドレス(LBA)、及び当該指定範囲のサイズの情報から構成される。指定範囲のサイズは、ブロック(セクタ)数で表される。指定範囲の始端(つまり開始位置)の論理ブロックアドレスを開始アドレスと呼び、指定範囲の終端(つまり終了位置)の論理ブロックアドレスを終了アドレスと呼ぶ。データパターン書き込み部14は、UNMAPコマンドの示す指定範囲に対応するアレイ20内の領域に所定のデータパターンをライトする。
データパターンマッチング部15は、物理エクステント確保部11によって確保された物理エクステント内の所定サイズの領域(以下、ブロック領域と称する)を単位に、当該ブロック領域に格納されているデータと所定のデータパターンとを比較するマッチング処理を行う。本実施形態において、ブロック領域のサイズは、例えば100ブロック(セクタ)であるものとする。マッチング処理の結果、前記ブロック領域に格納されているデータが所定のデータパターンと一致した場合、データパターンマッチング部15は、一致したブロック領域の次のアドレスのブロック領域に対してマッチング処理を行う。データパターンマッチング部15によるマッチング処理は、UNMAPコマンドの受信タイミングに依らず独立して行われるものとする。
不使用最終アドレス記憶部16は、不使用最終アドレス管理テーブル160を記憶する。不使用最終アドレス管理テーブル160は、データパターンマッチング部15によって、所定のデータパターンと一致すると判定されたブロック領域のうち、物理エクステントの始端から連続するブロック領域の終端の位置に対応する論理ディスク内のアドレスを、不使用最終アドレスとして保持する。不使用最終アドレス管理テーブル160は、ホスト装置2によって認識される論理ディスク毎に1つの不使用最終アドレスを保持する。
図4は、不使用最終アドレス管理テーブル160のデータ構造例を示す。図4に示すように、不使用最終アドレス管理テーブル160は、不使用最終アドレスとしてのLBAと当該不使用最終アドレスが属する論理ディスクのLDISK番号との対を保持する。なお、LBAとLDISK番号との対を、不使用最終アドレスと定義することも可能である。以下の説明では、説明の簡略化のために、論理ディスクが論理ディスク210のみであり、不使用最終アドレスが属する論理ディスクのLDISK番号を、不使用最終アドレス管理テーブル160が必ずしも保持する必要がないものとする。不使用最終アドレスは、ストレージ装置1のアレイ20全体において不使用となった物理アドレスが連続する領域を管理するポインタである。
不使用最終アドレス管理部17は、ホストインタフェースIF1でUNMAPコマンドが受信され、且つ当該UNMAPコマンドの示す指定範囲が不使用最終アドレスの位置を終端とする領域を含んでいる場合、データパターンマッチング部15によるマッチング処理を行うことなく、当該指定範囲の終端の論理ブロックアドレス、つまり指定範囲の終了アドレスを、不使用最終アドレスとして不使用最終アドレス管理テーブル160に登録する。また、不使用最終アドレス管理部17は、ホストインタフェースIF1がホスト装置2から不使用最終アドレスの位置または不使用最終アドレスの位置よりも前の位置(つまり不使用最終アドレスよりもアドレスが小さい位置)を終端とする領域(つまり不使用最終アドレスの位置よりも後ろにない領域)へのライトを要求するライト要求を受信した場合、不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスを、当該ライト要求の指定する開始アドレスの直前のアドレスに更新する。
物理エクステント解放部18は、不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスが、物理エクステントの終端または終端よりも後ろのアドレスである場合に、当該物理エクステント全体が不使用領域であると判定し、当該物理エクステントを解放する。
次に、図1の構成のストレージ装置1が、ホスト装置2からUNMAPコマンドを受信してからホスト装置2に対して当該コマンドの受信完了を応答するまでの処理について、図5のフローチャートを参照して説明する。
今、ホスト装置2からストレージ装置1にUNMAPコマンドが送信され、当該UNMAPコマンドが、ストレージ装置1内のホストインタフェースIF1で受信されたものとする(ステップS100)。この場合、不使用最終アドレス管理部17は、UNMAPコマンドの示す指定範囲の開始アドレスの位置が、不使用最終アドレス記憶部16内の不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスの次のアドレスの位置よりも後ろであるかを判定する(ステップS101)。
もし、ステップS101の判定がYesの場合、データパターン書き込み部14が動作して、UNMAPコマンドの示す指定範囲に対応するアレイ20内の領域に所定のデータパターンをライトする(ステップS102)。以下の説明では、簡略化のために、指定範囲に対応するアレイ20内の領域を、単に指定範囲の領域と表現することもある。
データパターン書き込み部14によって、UNMAPコマンドの示す指定範囲の領域に所定のデータパターンがライトされると(ステップS102)、ホストインタフェースIF1は、ホスト装置2に対して当該UNMAPコマンドの受信完了を応答する(ステップS103)。これにより、ストレージ装置1におけるUNMAPコマンドの受信時の処理は終了する。
これに対して、ステップS101の判定がNoの場合、不使用最終アドレス管理部17は、UNMAPコマンドの示す指定範囲の終了アドレスの位置が、不使用最終アドレスの位置よりも後ろであるかを判定する(ステップS104)。もし、ステップS104の判定がNoの場合、ホストインタフェースIF1は、ホスト装置2に対してUNMAPコマンドの受信完了を応答する(ステップS103)。これにより、ストレージ装置1におけるUNMAPコマンドの受信時の処理は終了する。
このように本実施形態では、UNMAPコマンドの示す指定範囲の終了アドレスの位置が、不使用最終アドレスの位置よりも後ろにない場合(ステップS101,S104がいずれもNo)、つまり当該指定範囲の領域全体が所定のデータパターンのライトに関して後述するチェック済みの領域に含まれている場合、当該指定範囲の領域への所定のデータパターンのライトが省略される。これにより、ストレージ装置1の負荷を軽減することができる。
これに対して、ステップS104の判定がYesの場合、データパターン書き込み部14が動作して、不使用最終アドレスの次のアドレスからUNMAPコマンドの示す指定範囲の終了アドレスまでの領域に所定のデータパターンをライトする(ステップS105)。ここでは、UNMAPコマンドの示す指定範囲の開始アドレスの位置が不使用最終アドレスの位置よりも後ろにないならば、当該指定範囲の開始アドレスから不使用最終アドレスまでの領域への所定のデータパターンのライトが省略される。
このように本実施形態では、UNMAPコマンドの示す指定範囲内に不使用最終アドレスの位置よりも後ろにない第3の領域が含まれている場合、当該第3の領域に対応するアレイ20内の第4の領域への所定のデータパターンのライトが省略される。これにより、ストレージ装置1の負荷を軽減することができる。
さてステップS104の判定がYesの場合、不使用最終アドレス管理部17は、不使用最終アドレス記憶部16内の不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスを、UNMAPコマンドの示す指定範囲の終了アドレスに更新する(ステップS106)。このステップS106の処理の結果、更新前の不使用最終アドレスの位置から更新後の不使用最終アドレスの位置までに対応するアレイ20内の領域が、所定のデータパターンのライトに関してチェック済みとして扱われ、当該領域を対象とする、データパターンマッチング部15によるデータパターンマッチング処理が省略される。
次に不使用最終アドレス管理部17は、UNMAPコマンドの示す指定範囲の終了アドレスの位置が、直近のステップS106で更新される前の不使用最終アドレスに該当する論理エクステントの終端のアドレスの位置より前であるかを判定する(ステップS107)。このステップS107の判定は、不使用最終アドレス管理部17が、不使用最終アドレス記憶部16内の不使用最終アドレス管理テーブル160及びエクステント管理テーブル記憶部12内のエクステント管理テーブル120を参照することによって行われる。
以降の説明では、論理エクステント(または物理エクステント)の終端のアドレスを、論理エクステント(または物理エクステント)の最終アドレスと称する。また、論理エクステント(または物理エクステント)の始端のアドレスを、論理エクステント(または物理エクステント)の先頭アドレスと称する。同様に、例えば後述するチェック領域のような領域の始端のアドレス及び終端のアドレスを、それぞれ、領域の先頭アドレス及び最終アドレスと称する。
ステップS107の判定がNoの場合、物理エクステント解放部18が動作して、直近のステップS106で更新される前の不使用最終アドレスに対応する物理エクステントから更新後の不使用最終アドレスに対応する物理エクステントの直前までを解放する(ステップS108)。このステップS108は、物理エクステント解放部18が、エクステント管理テーブル記憶部12内のエクステント管理テーブル120から、解放されるべき物理エクステントに対応する論理エクステントを定義するエントリを削除することによって実現される。
このように本実施形態では、UNMAPコマンドの示す指定範囲の終了アドレスの位置が、直近のステップS106で更新される前の不使用最終アドレスに該当する論理エクステントの終端のアドレスの位置より前になく(ステップS107がNo)、したがって、当該不使用最終アドレスの位置から論理エクステントの終端までの領域(第5の領域)が当該指定範囲に含まれている場合、当該第5の領域に対応するアレイ20内の領域(第6の領域)に格納されたデータと所定のデータパターンとの一致を検出するためのマッチング処理が省略され、且つ当該第6の領域が属する物理エクステントが解放(つまり、第6の領域が属する物理エクステントの第5の領域が属する論理エクステントへの割り当てが解除)される。このマッチング処理の省略に伴う物理エクステントの解放により、物理エクステント解放処理を簡素化できる。
ステップS108が実行されると、ホストインタフェースIF1は、ホスト装置2に対してUNMAPコマンドの受信完了を応答する(ステップS103)。これにより、ストレージ装置1におけるUNMAPコマンドの受信時の処理は終了する。
これに対し、ステップS107の判定がYesの場合、ホストインタフェースIF1は、ホスト装置2に対してUNMAPコマンドの受信完了を応答する(ステップS103)。これにより、ストレージ装置1におけるUNMAPコマンドの受信時の処理は終了する。
次に、ストレージ装置1内のデータパターンマッチング部15を中心とするデータパターンマッチング処理について、図6のフローチャートを参照して説明する。本実施形態において、データパターンマッチング処理は一定周期で繰り返し実行されるものとする。
まずデータパターンマッチング部15は、不使用最終アドレス記憶部16内の不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスの次のアドレスが示すブロック領域(より詳細には、不使用最終アドレスの次のアドレスが示す論理ディスク内のブロック領域である第1の領域に対応するアレイ20内の第2の領域)を、所定のデータパターンとのマッチングに用いられるチェック領域として決定する(ステップS201)。次にデータパターンマッチング部15は、決定されたチェック領域に格納されているデータと所定のデータパターンとのマッチングをとるための比較処理を行い、マッチングがとれているか、つまりチェック領域に格納されているデータと所定のデータパターンとが一致しているかを判定する(ステップS202)。もし、不一致であった場合(ステップS202がNo)は、データパターンマッチング部15はデータパターンマッチング処理を終了する。
これに対し、一致していた場合(ステップS202がYes)、データパターンマッチング部15は、チェック領域に所定のデータパターンが書き込まれていることを確認する。すると不使用最終アドレス管理部17が動作して、一致が検出されたチェック領域をチェック済み領域として、不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスを、当該チェック済み領域の最終アドレスに更新する(ステップS203)。次に不使用最終アドレス管理部17は、更新後の不使用最終アドレスが、当該不使用最終アドレスに対応する論理エクステントの最終アドレスと一致するかを判定する(ステップS204)。このステップS204の判定は、不使用最終アドレス管理部17が、不使用最終アドレス管理テーブル160及びエクステント管理テーブル120を参照することによって行われる。
もし、ステップS204の判定がYesの場合、物理エクステント解放部18が動作して、不使用最終アドレス管理テーブル160及びエクステント管理テーブル120を参照することによって不使用最終アドレスに対応する論理エクステントに割り当てられている物理エクステントを特定し、当該特定した物理エクステントを解放する(ステップS205)。このステップS205は、物理エクステント解放部18が、エクステント管理テーブル120から、解放されるべき物理エクステントに対応する論理エクステントのためのエントリを削除することによって実現される。物理エクステント解放部18によって物理エクステントが解放されると(ステップS205)、データパターンマッチング部15は、チェック領域のアドレスを次のアドレスに更新することにより、チェック領域を切り替えて(ステップS206)、ステップS202に戻る。
一方、ステップS204の判定がNoの場合、直ちにデータパターンマッチング部15によってチェック領域が切り替えられる(ステップS206)。そしてデータパターンマッチング部15はステップS202に戻る。
次に、ストレージ装置1が、ホスト装置2からライト要求を受信した場合の、不使用最終アドレス管理部17の処理について、図7のフローチャートを参照して説明する。
今、ホスト装置2からストレージ装置1にライト要求が送信され、当該ライト要求が、ストレージ装置1内のホストインタフェースIF1で受信されたものとする。このライト要求は、データが書き込まれるべき論理ディスク内の領域(以下、書き込み領域と称する)を指定する。この書き込み領域の指定のために、ライト要求は、書き込み領域が属する論理ディスクの論理ディスク番号、当該書き込み領域の始端の論理ブロックアドレス(つまり書き込み領域の開始アドレス)、及び当該書き込み領域のサイズの情報から構成される。
不使用最終アドレス管理部17は、ホストインタフェースIF1によってライト要求が受信された場合、当該ライト要求の指定する書き込み領域の終端の論理ブロックアドレスの位置、つまり書き込み領域の終了アドレスの位置が、不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスの位置よりも後ろであるかを判定する(ステップS301)。もし、ステップS301の判定がYesの場合、不使用最終アドレス管理部17はライト要求受信時の処理を終了する。
これに対して、ステップS301の判定がNoの場合、不使用最終アドレス管理部17は、不使用最終アドレス管理テーブル160に保持されている不使用最終アドレスを、ライト要求の指定する書き込み領域の開始アドレスの直前のアドレスに更新する(ステップS302)。不使用最終アドレス管理部17は、ステップS302を実行すると、ライト要求受信時の処理を終了する。
次に、ホスト装置2からストレージ装置1に送られたUNMAPコマンドが、ホストインタフェースIF1で受信された場合の、それぞれ第1乃至第5の状況の下での、論理エクステント上の不使用最終アドレスpの遷移及び所定のデータパターンのライト、更には論理エクステントに割り当てられている物理エクステントの解放の具体例について、図8乃至図12を参照して説明する。
まず、第1の状況の下での具体例について図8を参照して説明する。第1の状況の特徴は、以下に述べるように、UNMAPコマンドの指定範囲が不使用最終アドレスpの次のアドレスの位置よりも前の領域に含まれている点にある。
図8において、論理エクステント211(A)の先頭LBAは0であり、最終LBAは599(600−1=599)である。図8の例では、論理エクステント211(A)は、6つのブロック領域に区分されている。各ブロック領域は、100ブロック(セクタ)から構成される。論理エクステント211(A)の例えば先頭のブロック領域の先頭LBAは0であり、最終LBAは99(100−1=99)である。論理エクステント211(A)の例えば5番目のブロック領域の先頭LBAは400であり、最終LBAは499(500−1=499)である。論理エクステント211(A)の次の論理エクステント212(B)の例えば先頭のブロック領域の先頭LBAは600であり、最終LBAは699(700−1=699)である。上述の論理エクステント211(A),212(B)は、図9乃至図12の例でも同様である。
第1の状況では、図8(a)に示すように、論理エクステント211(A)の先頭から連続する5つのブロック領域に所定のデータパターンがライトされている。論理エクステント211(A)の5番目のブロック領域の最終LBA(=499)は、不使用最終アドレスpに一致する。つまり第1の状況では、不使用最終アドレスpは、論理エクステント211(A)の5番目のブロック領域を指し示す。このときの不使用最終アドレス管理テーブル160の状態を図8(b)に示す。
また第1の状況では、UNMAPコマンドの指定範囲は、図8(a)に示すように、開始LBA=200から200セクタのサイズ、つまり論理エクステント211(A)の3番目及び4番目のブロック領域である。つまり第1の状況は、UNMAPコマンドの指定範囲の開始LBAの位置が不使用最終アドレスpの次のアドレスの位置よりも後ろになくステップS101がNo)、且つ当該指定範囲の終了LBAの位置が不使用最終アドレスpの位置よりも後ろにない場合(ステップS104がNo)である。
このような第1の状況では、図8(a)に示されるように、不使用最終アドレスpの位置のブロック領域を最終のブロック領域とする連続するブロック領域には既に所定のデータパターンがライトされている。そのため、ステップS101,S104がいずれもNoとなる第1の状況では、図8(c)に示すように、UNMAPコマンドの指定範囲(より詳細には、指定範囲に対応するアレイ20内の領域)への所定のデータパターンのライトと、不使用最終アドレスpの更新処理を省略することができる。つまり第1の状況下では、図5のフローチャートにおける処理が、開始→S100→S101→S104→S103→終了の手順で実行される。
第1の状況下で実行される図5のフローチャートにおける処理の終了時の不使用最終アドレス管理テーブル160の状態を図8(d)に示す。図8(c),(d)と図8(a),(b)との対比から明らかなように、不使用最終アドレスpは第1の状況下では、図5のフローチャートにおける処理で更新されない。
次に、第2の状況の下での具体例について図9を参照して説明する。第2の状況の特徴は、以下に述べるように、UNMAPコマンドの指定範囲内に、所定のデータパターンがライトされている領域(データパターンチェック済みの領域)と所定のデータパターンがライトされていない領域とが含まれている点にある。
第2の状況では、図9(a)に示すように、論理エクステント211(A)の先頭から連続する3つのブロック領域に所定のデータパターンがライトされている。論理エクステント211(A)の3番目のブロック領域の最終LBA(=299)は、不使用最終アドレスpに一致する。つまり第2の状況では、不使用最終アドレスpは、論理エクステント211(A)の3番目のブロック領域を指し示す。このときの不使用最終アドレス管理テーブル160の状態を図9(b)に示す。
また第2の状況では、UNMAPコマンドの指定範囲は、図9(a)に示すように、開始LBA=100から400セクタのサイズ、つまり論理エクステント211(A)の2番目乃至5番目のブロック領域である。つまり第2の状況は、UNMAPコマンドの指定範囲の開始LBAの位置が不使用最終アドレスpの次のアドレスの位置よりも後ろになく、且つ当該指定範囲の終了LBAの位置が不使用最終アドレスpの位置よりも後ろにある場合(ステップS101がNo、ステップS104がYes)である。
しかも第2の状況では、UNMAPコマンドの指定範囲内の一部領域に、既に所定のデータパターンがライトされている。ここでは、図9(a)から明らかなように、UNMAPコマンドの指定範囲のうち、論理エクステント211(A)の2番目及び3番目のブロック領域に所定のデータパターンがライトされている。
そのため第2の状況では、図9(c)に示すように、UNMAPコマンドの指定範囲のうち、不使用最終アドレスpの次のアドレス(LBA=300)から当該指定範囲の終了LBA(=499)までの領域、つまり論理エクステント211(A)の4番目及び5番目のブロック領域のみに所定のデータパターンがライトされる(ステップS105)。また、不使用最終アドレスpが、図9(a),(b)に示すLBA=299から、図9(c),(d)に示すように、LBA=499に更新される(ステップS106)。つまり第2の状況下では、図5のフローチャートにおける処理が、開始→S100→S101→S104→S105→S106→S107→S103→終了の手順で実行される。
次に、第3の状況の下での具体例について図10を参照して説明する。第3の状況の特徴は、以下に述べるように、UNMAPコマンドの指定範囲が不使用最終アドレスpの次のアドレスの位置よりも後ろの領域、つまり不使用最終アドレスpに対して連続しない領域を示している点にある。
第3の状況では、図10(a)に示すように、論理エクステント211(A)の先頭から連続する3つのブロック領域に所定のデータパターンがライトされている。論理エクステント211(A)の3番目のブロック領域の最終LBA(=299)は、不使用最終アドレスpに一致する。これらの状態は、第2の状況と同様である。このときの不使用最終アドレス管理テーブル160の状態を図10(b)に示す。
第3の状況が第2の状況と相違するのは、UNMAPコマンドの指定範囲が図10(a)に示すように、開始LBA=400から200セクタのサイズ、つまり論理エクステント211(A)の5番目及び6番目のブロック領域であり、所定のデータパターンがライトされている領域から外れている点にある。この第3の状況では、上記指定範囲の開始LBAの位置が、不使用最終アドレスpの次のアドレスの位置よりも後ろにある(ステップS101がYes)。
このような第3の状況では、図10(c)に示すように、UNMAPコマンドの指定範囲の領域である、論理エクステント211(A)の5番目及び6番目のブロック領域に、所定のデータパターンがライトされる(ステップS102)。つまり第3の状況下では、図5のフローチャートにおける処理が、開始→S100→S101→S102→S103→終了の手順で実行される。
第3の状況下で実行される図5のフローチャートにおける処理の終了時の不使用最終アドレス管理テーブル160の状態を図10(d)に示す。図10(c),(d)と図10(a),(b)との対比から明らかなように、不使用最終アドレスpは、第3の状況下では図5のフローチャートにおける処理で更新されない。
次に、第4の状況の下での具体例について図11を参照して説明する。第4の状況の特徴は、以下に述べるように、UNMAPコマンドが、不使用最終アドレスpの位置と当該不使用最終アドレスpに対して連続しない所定のデータパターンがライトされている領域とで挟まれた領域を埋めるように、当該挟まれた領域を不使用領域として指定している点にある。
第4の状況では、図11(a)に示すように、論理エクステント211(A)の先頭から連続する3つのブロック領域に所定のデータパターンがライトされている。論理エクステント211(A)の3番目のブロック領域の最終LBA(=299)は、不使用最終アドレスpに一致する。また、不使用最終アドレスpと連続しない、論理エクステント211(A)の5番目及び6番目のブロック領域にも所定のデータパターンがライトされている。このときの不使用最終アドレス管理テーブル160の状態を図11(b)に示す。
また第4の状況では、UNMAPコマンドの指定範囲は、図11(a)に示すように、開始LBA=300から100セクタのサイズであり、論理エクステント211(A)の4番目のブロック領域である。この4番目のブロック領域には、所定のデータパターンはライトされていない。つまり第4の状況では、UNMAPコマンドは、所定のデータパターンがライトされていない4番目のブロック領域を埋めるように、当該4番目のブロック領域を不使用領域として指定する。このため第4の状況では、UNMAPコマンドの指定範囲の開始LBAの位置が不使用最終アドレスpの次のアドレスの位置よりも後ろになく、且つ当該指定範囲の終了LBAの位置が不使用最終アドレスpの位置よりも後ろにある(ステップS101がNo、ステップS104がYes)。
このような第4の状況では、図11(c)に示すように、不使用最終アドレスpの次のアドレス(LBA=300)からUNMAPコマンドの指定範囲の終了LBA(=399)までの領域、つまり論理エクステント211(A)の4番目のブロック領域に所定のデータパターンがライトされる(ステップS105)。ここでは、不使用最終アドレスpの次のアドレス(LBA=300)は、UNMAPコマンドの指定範囲の開始LBAに一致する。また、不使用最終アドレスpが、図10(a),(b)に示すLBA=299から、LBA=399に更新される(ステップS106)。つまり第4の状況下では、図5のフローチャートにおける処理が、開始→S100→S101→S104→S105→S106→S107→S103→終了の手順で実行される。
さて本実施形態では、図5のフローチャートに従う処理とは独立して、図6のフローチャートに従う処理が行われる。データパターンマッチング部15は、図6のフローチャートに従う処理において、不使用最終アドレスpの指し示すブロック領域に後続する領域に対して、ブロック領域をチェック領域として、ブロック領域単位でマッチング処理を行う(ステップS201,S202)。不使用最終アドレス管理部17は、ブロック領域に格納されているデータが所定のデータパターンに一致することがデータパターンマッチング部15によって検出される間、不使用最終アドレスpを当該ブロック領域の最終アドレスに更新する(ステップS203)。図11の例では、不使用最終アドレスpは同図(c)に示すように、LBA=299からLBA=399に更新された後に、図6のフローチャートに従うデータパターンマッチング処理で、まずLBA=399からLBA=499に更新され、しかる後にLBA=499からLBA=599に更新される。図11(d)は、このときの不使用最終アドレス管理テーブル160の状態を示す。
さて、不使用最終アドレスpが図11(c),(d)に示すようにLBA=599に更新されると、図6のフローチャートに従うデータパターンマッチング処理で、不使用最終アドレスpが、当該不使用最終アドレスpに対応する論理エクステントの最終アドレスと一致することが判定される(ステップS204がYes)。つまり、不使用最終アドレスpの示す論理エクステント211(A)がホスト装置2によって使用されていないことが判定される。すると、物理エクステント解放部18は、論理エクステント211(A)に対応する物理エクステントを解放する(ステップS205)。
このように、不使用最終アドレスpが図11(a),(b)に示すLBA=299から図11(c),(d)に示すLBA=599に更新された場合、図5のフローチャートにおける処理が、開始→S201→S202→S203→S204→S205→終了の手順で実行されて、論理エクステント211(A)に対応する物理エクステント201(A)が解放される。この解放のために、エクステント管理テーブル120から、論理エクステント211(A)と物理エクステント201(A)との対応関係を定義したエントリが削除される。このときのエクステント管理テーブル120の状態を、図13に示す。
次に、第5の状況の下での具体例について図12を参照して説明する。第5の状況の特徴は、UNMAPコマンドの指定範囲が、不使用最終アドレスpの次のアドレスの位置から論理エクステント終端までの領域を含む点にある。
第5の状況では、図12(a)に示すように、論理エクステント211(A)の先頭から連続する3つのブロック領域に所定のデータパターンがライトされている。論理エクステント211(A)の3番目のブロック領域の最終LBA(=299)は、不使用最終アドレスpに一致する。これらの状態は、第2の状況と同様である。このときの不使用最終アドレス管理テーブル160の状態を図12(b)に示す。
第5の状況が第2の状況と相違するのは、UNMAPコマンドの指定範囲が図12(a)に示すように、開始LBA=300から400セクタのサイズであり、論理エクステント211(A)の4番目乃至6番目のブロック領域及び論理エクステント212(B)の1番目のブロック領域である点にある。つまり、UNMAPコマンドの指定範囲は、不使用最終アドレスpの次のアドレス(LBA=300)の位置から始まる領域であって、論理エクステント211(A)と論理エクステント212(B)との境界をまたぐ領域を示している。
このような第5の状況では、図12(c)に示すように、不使用最終アドレスpの次のアドレスからUNMAPコマンドの示す指定範囲の終了アドレスまでの領域(ここでは指定範囲の領域)である、論理エクステント211(A)の4番目乃至6番目のブロック領域及び論理エクステント212(B)の1番目のブロック領域に、所定のデータパターンがライトされる(ステップS105)。また不使用最終アドレスpが、図12(c),(d)に示すように、LBA=299から、論理エクステント212(B)の1番目のブロック領域の最終アドレスであるLBA=699に更新される(ステップS106)。
不使用最終アドレスpがLBA=299からLBA=699に更新されると(ステップS106)。UNMAPコマンドの示す指定範囲の終了アドレス(LBA=699)の位置が、更新前の不使用最終アドレスp(LBA=299)に対応する論理エクステント211(A)の終端のアドレス(LBA=599)の位置より前であるかが判定される(ステップS107)。ここでは、ステップS107の判定はNoとなる。
この場合、物理エクステント解放部18は、更新前の不使用最終アドレスp(LBA=299)に対応する物理エクステントから更新後の不使用最終アドレスp(LBA=699)に対応する物理エクステントの直前まで、つまり論理エクステント211(A)に対応する物理エクステントを解放する(ステップS108)。この解放のために、エクステント管理テーブル120から、論理エクステント211(A)と物理エクステント201(A)との対応関係を定義したエントリが削除される。図13は、このときのエクステント管理テーブル120の状態をも示す。
上述したように本実施形態によれば、ディスク容量をエクステント単位で管理(割り当て、解放)するボリューム管理方法を適用するストレージ装置1において、ホスト装置2からのUNMAPコマンドによって不使用であると通知された領域(指定範囲)に、当該領域が不使用であることを識別するための所定のデータパターンが、当該ストレージ装置1内のデータパターン書き込み部14によってライトされる。これにより、ホスト装置で使われなくなった不使用領域を識別するためのデータパターンをホスト装置自身が当該不使用領域に書き込む機能を有していなくても、当該不使用領域を管理することができる。
また本実施形態によれば、所定のデータパターンが書き込まれていることが確認されたチェック済み領域の終端に対応する論理アドレスを不使用最終アドレスとして不使用最終アドレス記憶部16に記憶する一方、不使用最終アドレスの次のアドレスから始まる論理ディスク210内の第1の領域に対応するアレイ20内の第2の領域に格納されたデータと上記所定のデータパターンとの一致をデータパターンマッチング部15が検出することにより、上記第2の領域に上記所定のデータパターンが書き込まれていることが確認される。また本実施形態によれば、データパターンマッチング部15による一致検出に応じて不使用最終アドレスが更新されるだけでなく、データパターン書き込み部14による所定のデータパターンの書き込みに応じても、所定のデータパターンが書き込まれた領域をチェック済み領域として不使用最終アドレスが更新される。これにより、UNMAPコマンドによって通知される範囲の不使用領域毎の管理情報をストレージ装置1内で別途保持・管理する必要がなく、たとえストレージ装置1内の管理サイズが、UNMAPコマンドによって通知される範囲におけるそれよりも大きい場合でも、ストレージ装置1内での管理(不使用最終アドレスの管理)に必要な記憶容量を最小限に抑えることができる。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。