JP2017219913A - ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム - Google Patents

ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム Download PDF

Info

Publication number
JP2017219913A
JP2017219913A JP2016111767A JP2016111767A JP2017219913A JP 2017219913 A JP2017219913 A JP 2017219913A JP 2016111767 A JP2016111767 A JP 2016111767A JP 2016111767 A JP2016111767 A JP 2016111767A JP 2017219913 A JP2017219913 A JP 2017219913A
Authority
JP
Japan
Prior art keywords
logical
block
physical
data
management information
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2016111767A
Other languages
English (en)
Inventor
和彦 臼井
Kazuhiko Usui
和彦 臼井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2016111767A priority Critical patent/JP2017219913A/ja
Priority to US15/586,592 priority patent/US10365846B2/en
Publication of JP2017219913A publication Critical patent/JP2017219913A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】論理ボリュームを削除するための処理時間を短縮すること。
【解決手段】ストレージ制御装置10は、記憶部11と制御部12とを有する。記憶部11は、記憶装置20の記憶領域によって実現される論理ボリューム12aの各論理ブロックについて、データの書き込みの有無が登録されたビットマップ11aを記憶する。制御部12は、第1の論理ブロックに対する書き込みが要求されると、記憶領域の第1の物理ブロックを第1の論理ブロックに割り当ててデータを格納するとともに、第1の論理ブロックにデータが書き込まれたことをビットマップ11aに登録し、論理ボリューム12aを削除する際に、ビットマップ11aを基にデータが書き込まれている第2の論理ブロックを特定し、論理ブロックと物理ブロックとが対応し、記憶領域に記憶された管理情報21から、第2の論理ブロックに割り当てられた第2の物理ブロックを読み出し、解放処理を実行する。
【選択図】図1

Description

本発明はストレージ制御装置、ストレージシステムおよびストレージ制御プログラムに関する。
記憶装置にデータを格納する際に、重複データを除去して、記憶領域の使用効率を高めるようにした「重複除去(De-duplication)」と呼ばれる技術が知られている。例えば、当該技術では、データの書き込み要求があった場合、そのデータに基づいて算出されたハッシュ値と、既にストレージ制御装置に格納されているデータに基づくハッシュ値とが比較される。ハッシュ値が同一の場合、ストレージ制御装置は、重複するデータであると判定し、書き込みが要求されたデータを記憶装置に格納しないようにする。
特開2010−182302号公報 国際公開第2011/121905号
上記の重複除去技術は、論理記憶領域の論理ブロックのうちデータが書き込まれた論理ブロックにだけ物理記憶領域を割り当てる仮想記憶技術の一種である。このような仮想記憶技術では、論理ボリュームの各論理ブロックと、物理記憶領域から割り当てられた物理ブロックとの対応関係を示す管理情報が使用される。また、この管理情報は、データ量が大きいため、ストレージ制御装置ではなく、物理記憶領域を提供する記憶装置に格納される場合がある。
ここで、上記のような論理ボリュームを削除する場合には、論理ボリュームの各論理ブロックに割り当てられている物理ブロックを、再利用可能な未割り当て領域に戻す「解放」の処理が実行される。この解放処理のため、ストレージ制御装置は、上記の管理情報の全てのレコードを検索して、各論理ブロックに物理ブロックが割り当てられているかを判定し、割り当てられている物理ブロックを取得する。しかし、管理情報が記憶装置に格納されている場合には、管理情報の全レコードの検索のために記憶装置にアクセスする回数が多くなる。その結果、論理ボリュームの削除処理にかかる時間が長くなるという問題がある。
1つの側面では、本発明は、論理ボリュームを削除するための処理時間を短縮できるストレージ制御装置、ストレージシステムおよびストレージ制御プログラムを提供することを目的とする。
1つの態様では、ストレージ制御装置が提供される。このストレージ制御装置は、記憶部と制御部とを有する。記憶部は、記憶装置の記憶領域によって実現される論理ボリュームを分割した複数の論理ブロックのそれぞれについて、データの書き込みの有無が登録された第1の管理情報を記憶する。制御部は、複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、記憶領域を分割した複数の物理ブロックのうちの第1の物理ブロックを第1の論理ブロックに割り当てて書き込みデータを第1の物理ブロックに格納するとともに、第1の論理ブロックにデータが書き込まれたことを第1の管理情報に登録し、論理ボリュームを削除する際に、第1の管理情報に基づいて、複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、複数の論理ブロックのそれぞれについて複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録され、記憶領域に記憶された第2の管理情報から、複数の物理ブロックのうち第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す第2の物理ブロックを解放するための解放処理を実行する。
また、1つの態様では、ストレージシステムが提供される。このストレージシステムは、記憶装置とストレージ制御装置とを有する。記憶装置は、論理ボリュームを実現する記憶領域を有するとともに、論理ボリュームを分割した複数の論理ブロックのそれぞれについて、記憶領域を分割した複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録された第2の管理情報を記憶する。ストレージ制御装置は、記憶部と制御部とを有する。記憶部は、複数の論理ブロックのそれぞれについて、データの書き込みの有無が登録された第1の管理情報を記憶する。制御部は、複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、複数の物理ブロックのうちの第1の物理ブロックを第1の論理ブロックに割り当てて書き込みデータを第1の物理ブロックに格納するとともに、第1の論理ブロックにデータが書き込まれたことを第1の管理情報に登録し、論理ボリュームを削除する際に、第1の管理情報に基づいて、複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、第2の管理情報から、複数の物理ブロックのうち第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す第2の物理ブロックを解放するための解放処理を実行する。
また、1つの態様では、記憶部を有するコンピュータによって実行されるストレージ制御プログラムが提供される。このストレージ制御プログラムは、コンピュータに、記憶装置の記憶領域によって実現される論理ボリュームを分割した複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、記憶領域を分割した複数の物理ブロックのうちの第1の物理ブロックを第1の論理ブロックに割り当てて書き込みデータを第1の物理ブロックに格納するとともに、記憶部に記憶され、複数の論理ブロックのそれぞれについてデータの書き込みの有無が登録された第1の管理情報に、第1の論理ブロックにデータが書き込まれたことを登録し、論理ボリュームを削除する際に、第1の管理情報に基づいて、複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、複数の論理ブロックのそれぞれについて複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録され、記憶領域に記憶された第2の管理情報から、複数の物理ブロックのうち第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す第2の物理ブロックを解放するための解放処理を実行する、処理を実行させる。
1つの側面では、論理ボリュームを削除するための処理時間を短縮できる。
第1の実施の形態のストレージ制御装置を示す図である。 第2の実施の形態のストレージシステムを示す図である。 CMのハードウェア例を示す図である。 アドレス対応テーブルの例を示す図である。 ハッシュ値管理テーブルの例を示す図である。 比較例(その1)を示す図である。 比較例(その2)を示す図である。 第2の実施の形態の具体例(その1)を示す図である。 第2の実施の形態の具体例(その2)を示す図である。 CMの機能例を示す図である。 論理ボリュームの作成時の処理の例を示すフローチャートである。 書き込み処理の例を示すフローチャートである。 読み出し処理の例を示すフローチャートである。 論理ボリュームの削除処理の例を示すフローチャートである。
以下、実施の形態について図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態のストレージ制御装置を示す図である。図1に示すストレージ制御装置10には、記憶装置20とホスト装置30が接続されている。ストレージ制御装置10と記憶装置20とは、例えば、1つの筐体に搭載されるストレージ装置として実現される。また、ストレージ制御装置10と記憶装置20とで、ストレージシステムが構築されていると考えてもよい。
ストレージ制御装置10は、ホスト装置30からの要求に応じて、記憶装置20に対するアクセスを制御する。例えば、ストレージ制御装置10は、記憶装置20の記憶領域によって実現される論理ボリューム12aを作成する。そして、ストレージ制御装置10は、ホスト装置30からのアクセス要求に応じて、論理ボリューム12aに対するアクセスを制御する。
記憶装置20は、論理ボリューム12aを分割した複数の論理ブロックのそれぞれについて、記憶装置20の記憶領域を分割した複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録された管理情報21を記憶する。管理情報21には、論理ボリューム12aの全ての論理ブロックに対応するレコードが登録される。ただし、後述するように、論理ボリューム12aにおいては、データが書き込まれた論理ブロックにだけ物理ブロックが割り当てられる。このため、管理情報21の全てのレコードに物理ブロックのアドレスが必ず登録される訳ではない。
また、上記のように、管理情報21は、論理ボリューム12aの全ての論理ブロックに対応するレコードを有するので、データ量が大きい。このため、管理情報21は、ストレージ制御装置10ではなく、論理ボリューム12aの物理記憶領域を提供する記憶装置20に格納される。
なお、図1では説明を簡単にするために、論理ボリューム12aは、それぞれ論理アドレスXA1〜XA4によって識別される4つの論理ブロックを有するものとする。
ストレージ制御装置10は、記憶部11および制御部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性記憶装置である。制御部12は、例えば、プロセッサである。プロセッサには、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。また、制御部12は、マルチプロセッサであってもよい。
記憶部11は、論理ボリューム12aの各論理ブロックについて、データの書き込みの有無が登録された管理情報を記憶する。図1の例では、このような管理情報として、論理ボリューム12aの各論理ブロックに対応するビットを有するビットマップ11aが記憶される。ビットマップ11aにおいては、ビットの値が0の場合、対応する論理ブロックにデータが書き込まれていないことを示す。また、ビットの値が1の場合、対応する論理ブロックにデータが書き込まれていることを示す。なお、図1において、ビットマップ11aにおける領域11aa,11ab,11ac,11adは、それぞれ論理アドレスXA1,XA2,XA3,XA4によって識別される論理ブロックに対応する。
制御部12は、論理ボリューム12aにおける指定された論理ブロックに対する書き込みデータの書き込みがホスト装置30から要求されると、記憶装置20の複数の物理ブロックの中から未割り当ての物理ブロックを1つ選択する。制御部12は、選択した物理ブロックを指定された論理ブロックに割り当て、書き込みデータを選択した物理ブロックに格納する。このように、制御部12は、論理ボリューム12aの論理ブロックのうち、データが書き込まれた論理ブロックにだけ物理ブロックを割り当てる。
図1では例えば、論理アドレスXA1の論理ブロックに対するデータD1の書き込みが要求されると、制御部12は、物理アドレスYA1の物理ブロックを論理アドレスXA1の論理ブロックに割り当てる。そして、データD1は、物理アドレスYA1の物理ブロックに書き込まれる。また、論理アドレスXA3の論理ブロックに対するデータD2の書き込みが要求されると、制御部12は、物理アドレスYA2の物理ブロックを論理アドレスXA3の論理ブロックに割り当てる。そして、データD2は、物理アドレスYA2の物理ブロックに書き込まれる。
また、制御部12は、上記のような物理ブロックの割り当て処理とともに、指定された論理ブロックにデータが書き込まれたことを、ビットマップ11aに登録する。図1では例えば、制御部12は、データD1の書き込み要求に応じて、ビットマップ11aのビットのうち、論理アドレスXA1に対応する領域11aaのビットを1に更新する。また、制御部12は、データD2の書き込み要求に応じて、ビットマップ11aのビットのうち、論理アドレスXA3に対応する領域11acのビットを1に更新する。
また、制御部12は、論理ボリューム12aを削除する際に、次のような処理を実行する。制御部12は、ビットマップ11aに基づいて、論理ボリューム12aの論理ブロックの中からデータが書き込まれている論理ブロックを特定する。図1の例では、論理アドレスXA1,XA3にそれぞれ対応する論理ブロックが特定される。次に、制御部12は、管理情報21の中から、特定された論理ブロックに割り当てられた物理ブロックのアドレスを読み出す。図1の例では、物理アドレスYA1,YA3が読み出される。
制御部12は、読み出した物理アドレスYA1,YA3を解放するための解放処理を実行する。「解放」とは、物理アドレスを再利用可能な未割り当て領域に戻すことを言う。解放処理では、例えば、記憶装置20における未割り当ての物理アドレスを管理する管理情報に対して、物理アドレスYA1,YA3が追加される。また、例えば、重複データが除去されるように記憶装置20にデータが格納される場合には、解放処理では、物理アドレスYA1,YA3に対応する物理ブロックを解放可能か否かが判定されてもよい。例えば、この物理ブロックに対して他の論理ブロックが割り当てられている場合には、物理ブロックを解放できない。
以上の論理ボリューム12aの削除処理では、制御部12は、記憶装置20に記憶された管理情報21を参照する前に、記憶部11に記憶されたビットマップ11aを参照して、データが書き込まれている論理ブロックを特定する。このため、制御部12は、管理情報21の全レコードを検索せずに、特定された論理ブロックに対応するレコードから、登録された物理ブロックのアドレスを読み出すことができる。これにより、削除処理における記憶装置20へのアクセス回数やアクセス時間を抑制でき、その結果、削除処理にかかる時間を短縮できる。
[第2の実施の形態]
次に、第2の実施の形態として、重複除去技術を用いたストレージシステムを例示して説明する。
図2は、第2の実施の形態のストレージシステムを示す図である。図2に示すストレージシステムは、ストレージ装置100およびホスト装置400を含む。ストレージ装置100とホスト装置400とは、例えば、ファイバチャネル(FC:Fibre Channel)やiSCSI(Internet Small Computer System Interface)などを用いたSAN(Storage Area Network)を介して接続される。
ストレージ装置100は、CM(Controller Module)200およびDE(Device Enclosure)300を有する。CM200は、ストレージ装置100全体を制御する。
DE300は、複数の記憶装置を搭載する。DE300は、記憶装置としてHDDを備えたディスクアレイ装置である。なお、DE300に搭載される記憶装置は、SSD(Solid State Drive)などの他の種類の記憶装置であってもよい。
ストレージ装置100においては、CM200は、ホスト装置400からの要求に応じて、DE300に搭載された記憶装置に対するアクセスを制御する。詳細には、CM200は、DE300内の記憶装置の記憶領域によって実現される1つ以上の論理ボリュームを作成する。各論理ボリュームには、LUN(Logical Unit Number)が割り当てられる。また、各論理ボリュームは、一定サイズの論理ブロックに分割され、各論理ブロックにはLBA(Logical Block Address)が付与されている。そして、CM200は、ホスト装置400から論理ボリュームのLUNおよび論理ブロックのLBAを指定したアクセス要求を受信する。CM200は、アクセス要求に応じて、論理ボリュームに格納されているデータにアクセスする。
また、CM200は、論理ボリュームのデータをDE300内の記憶装置の記憶領域に格納する際に、重複データが除去されるように制御する。具体的には、CM200は、DE300内の記憶装置の記憶領域を用いて1つ以上のプールボリュームを設定する。各プールボリュームは、DE300内の1台以上の記憶装置の記憶領域の単なる集合として実現されてもよいし、RAID(Redundant Array of Inexpensive Disks)によって制御される複数の記憶装置によって実現される論理記憶領域であってもよい。CM200は、1つのプールボリュームに対して1つ以上の論理ボリュームを設定することができる。そして、CM200は、1つのプールボリュームに設定された全論理ボリューム内のデータを、重複データが除去されるようにそのプールボリュームに格納する。
なお、各プールボリュームは、論理ボリュームの論理ブロックと同じサイズのブロックに分割され、各ブロックにはLBAが付与されている。以下の説明では、論理ボリューム内の論理ブロックのLBAを「論理アドレス」と記載し、プールボリューム内のブロックのLBAを「物理アドレス」と記載する。
次に、CM200のハードウェアについて、説明する。
図3は、CMのハードウェア例を示す図である。CM200は、プロセッサ201、RAM202、SSD203、CA(Channel Adapter)204およびDI(Device Interface)205を有する。
プロセッサ201は、CM200の情報処理を制御する。プロセッサ201は、複数のプロセッシング要素を含むマルチプロセッサであってもよい。
RAM202は、CM200の主記憶装置である。RAM202は、プロセッサ201に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM202は、プロセッサ201による処理に用いる各種データを記憶する。
SSD203は、CM200の補助記憶装置である。SSD203は、不揮発性の半導体メモリである。SSD203には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、CM200は、補助記憶装置として、SSD203の代わりにHDDを備えていてもよい。
CA204は、ホスト装置400と通信するためのインタフェースである。DI205は、DE300と通信するためのインタフェースである。
図4は、アドレス対応テーブルの例を示す図である。アドレス対応テーブルは、DE300内の記憶装置に格納される。アドレス対応テーブルは、論理ボリューム毎に作成される。例えば、図4のアドレス対応テーブル301a,301b,301cは、それぞれ個別の論理ボリュームに対応する。以下、アドレス対応テーブルを総称して、アドレス対応テーブル301と表現する場合がある。
アドレス対応テーブル301は、論理アドレスおよび物理アドレスの項目を含む。論理アドレスの項目には、論理ボリュームのLUNおよびLBAを示す情報が登録される。LUNの項目には、LUNを示す情報が登録される。LBAの項目には、論理ボリュームのLBAが登録される。
物理アドレスの項目には、論理アドレスに対してプールボリュームから割り当てられたブロックの識別情報が登録される。具体的には、物理アドレスの項目には、プールボリュームのプールID(identifier)、LBAを示す情報が登録される。プールIDの項目には、プールボリュームの識別情報が登録される。LBAの項目には、プールボリュームのLBAが登録される。
アドレス対応テーブル301a〜301cは、それぞれに対応する論理ボリューム内のすべての論理ブロックに対応するレコードを有する。そのため、アドレス対応テーブル301a〜301cのデータ量は大きい。そこで、アドレス対応テーブル301a〜301cは、RAM202に格納されるのではなく、DE300内の記憶装置に格納される。また、アドレス対応テーブル301a〜301cの一部のレコード(例えば、アクセス頻度の高い論理ブロックに対応するレコード)のみ、RAM202に格納されていてもよい。
図5は、ハッシュ値管理テーブルの例を示す図である。ハッシュ値管理テーブルは、重複除去を行うために使用される情報であり、RAM202に格納される。ハッシュ値管理テーブルは、プールボリューム毎に作成される。例えば、図5のハッシュ値管理テーブル211a,211b,211cは、それぞれ個別のプールボリュームに対応する。以下、ハッシュ値管理テーブルを総称して、ハッシュ値管理テーブル211と表現する場合がある。
ハッシュ値管理テーブル211は、ハッシュ値、物理アドレスおよびリファレンスカウントの項目を含む。ハッシュ値の項目には、ハッシュ値を示す情報が登録される。物理アドレスの項目には、ハッシュ値に対応するデータが格納されたプールボリュームのブロックの識別情報が登録される。具体的には、物理アドレスの項目には、プールボリュームのプールID、LBAを示す情報が登録される。プールIDの項目には、プールボリュームの識別情報が登録される。LBAの項目には、プールボリュームのLBAが登録される。リファレンスカウントの項目には、物理アドレスに対して割り当てられている論理アドレスの数が登録される。リファレンスカウントの値は、物理アドレスの割り当て状況に応じて増減される。リファレンスカウントの値が0になると、対応する物理アドレスが示すプールボリュームのブロックは、未割り当て領域に戻されて、再利用可能になる。すなわち、このブロックは解放される。
なお、以下の説明では、論理アドレスに対して物理アドレスが割り当てられていることを、「論理アドレスが物理アドレスを参照する」と表現する場合がある。この表現を用いた場合、リファレンスカウントは、物理アドレスを参照している論理アドレスの数を示す。
次に、図6,7を用いて比較例を示し、比較例における問題点について説明した後、第2の実施の形態の処理を説明する。なお、比較例では、図2で説明した各装置が用いられるものとする。
図6は、比較例(その1)を示す図である。CM200は、論理ボリューム320,330を作成する。論理ボリューム320には、LUN1が割り当てられる。論理ボリューム330には、LUN2が割り当てられる。CM200は、論理ボリューム320,330を作成後、論理ボリューム320に対応するアドレス対応テーブル301aと、論理ボリューム330に対応するアドレス対応テーブル301bを作成する。アドレス対応テーブル301a,301bの初期状態では、論理アドレスの項目にLUNとLBAを示す情報が登録され、物理アドレスの項目は空欄とされる(または“NULL”が登録される)。
また、論理ボリューム320,330に対して割り当てられる記憶領域にプールボリューム310が設定される。
CM200のRAM202には、ハッシュ値管理テーブル211aが格納されている。ハッシュ値管理テーブル211aは、論理ボリューム320,330で共用される。また、DE300内の記憶装置には、アドレス対応テーブル301a,301bが格納されている。
図6では、ホスト装置400から論理アドレス(LUN、LBA)を指定したデータの書き込み要求があった場合を示している。書き込み要求は、データブロック単位で行われる。例えば、データブロックのデータ量は、4KB(キロバイト)であり、これは論理ブロックのサイズと同じである。
CM200は、ホスト装置400から書き込み先の論理アドレス(LUN1、LBA1)とデータブロックとを受信する。すると、CM200は、受信したデータブロックがプールボリューム310に格納されているデータブロックと重複するか否かを判定する。この判定は、受信したデータブロックに基づいて算出されたハッシュ値が、ハッシュ値管理テーブル211aに登録されているか否かによって行われる。なお、ハッシュ値は、例えば、SHA−1(Secure Hash Algorithm 1)のハッシュ関数を用いて算出される。
ここで、重複すると判定されたとする。また、ハッシュ値管理テーブル211aから、受信したデータブロックと同じデータブロックがプールボリューム310の物理アドレス(PV1、PA1)に格納されていると判別されたとする。なお、PV1は、プールIDであり、PA1は、LBAである。この場合、CM200は、受信したデータブロックをプールボリューム310に格納せずに、アドレス対応テーブル301aに、論理アドレス(LUN1、LBA1)と物理アドレス(PV1、PA1)との関係を登録する。登録後、CM200は、ハッシュ値管理テーブル211aにおいて物理アドレス(PV1、PA1)に対応するリファレンスカウントを1から2に変更する。これにより、論理アドレス(LUN1、LBA1)と論理アドレス(LUN2、LBA11)という2つの論理アドレスが物理アドレス(PV1、PA1)を参照することが登録される。
図7は、比較例(その2)を示す図である。図7は、図6の状態から、CM200がホスト装置400からの指示により論理ボリューム320を削除する場合を示している。
CM200は、ホスト装置400から論理ボリューム320の削除指示を受信し、論理ボリューム320の削除処理を開始する。CM200は、論理ボリューム320の削除に伴い、ハッシュ値管理テーブル211aに登録されているリファレンスカウントを減算する。ここで、CM200は、リファレンスカウントを減算するために、アドレス対応テーブル301aに登録されている全ての論理アドレスを対象に、どの論理アドレスがどの物理アドレスを参照しているかを検索する。
例えば、CM200は、アドレス対応テーブル301aを参照し、論理アドレス(LUN1、LBA1)が物理アドレス(PV1、PA1)を参照していることを特定する。CM200は、ハッシュ値管理テーブル211aを参照し、物理アドレス(PV1、PA1)に対応するリファレンスカウントの値を減算する。次に、CM200は、アドレス対応テーブル301aを参照し、論理アドレス(LUN1、LBA2)が物理アドレス(PV1、PA2)を参照していることを特定する。CM200は、ハッシュ値管理テーブル211aを参照し、物理アドレス(PV1、PA2)に対応するリファレンスカウントの値を減算する。次に、CM200は、アドレス対応テーブル301aを参照し、論理アドレス(LUN1、LBA3)がどの物理アドレスも参照していないことを判別する。このようにして、CM200は、全ての論理アドレスを対象に検索する。
しかし、このように全ての論理アドレスを対象に検索すると、アドレス対応テーブル301aを参照するために、DE300内の記憶装置へのアクセス回数が増えるので、論理ボリュームの削除処理にかかる時間が長くなる。
そこで、第2の実施の形態では、アドレス対応テーブル301aの必要なレコードだけを参照できるようにすることで、DE300内の記憶装置に対するアクセス回数を減らし、論理ボリューム320の削除に伴う処理時間を短くする。第2の実施の形態について具体例を用いて説明する。
図8は、第2の実施の形態の具体例(その1)を示す図である。図6,7に対する図8の相違点は、ビットマップ212a,212bを新たに作成したことである。そのため、ビットマップ212a,212bを主に説明する。
ビットマップ212a,212bは、RAM202に格納される。ビットマップ212aは、論理ボリューム320の各論理ブロックに対応するビットを有する。ビットマップ212bは、論理ボリューム330の各論理ブロックに対応するビットを有する。ビットマップ212a,212bの各ビットでは、対応する論理ブロックにデータが書き込まれているか否かが管理される。例えば、ホスト装置400から1回も書き込みが要求されていない論理ブロックに対応するビットには“0”が設定される。そして、その論理ブロックに書き込みが要求されると、その論理ブロックに対応するビットに“1”が設定される。
図8では、ホスト装置400から論理アドレス(LUN、LBA)を指定したデータブロックの書き込み要求があった場合を示している。CM200は、ホスト装置400から書き込み先の論理アドレス(LUN1、LBA1)とデータブロックを受信する。CM200は、受信したデータブロックに基づいて算出したハッシュ値を用いて、受信したデータブロックがプールボリューム310に格納されているデータブロックと重複するか否かを判定する。
ここで、図6の場合と同様に重複すると判定され、受信したデータブロックと同じデータブロックがプールボリューム310の物理アドレス(PV1、PA1)に格納されていると判別されたとする。この場合、CM200は、受信したデータブロックをプールボリューム310に格納せずに、アドレス対応テーブル301aに論理アドレス(LUN1、LBA1)と物理アドレス(PV1、PA1)との関係を登録する。登録後、CM200は、ハッシュ値管理テーブル211aにおいて物理アドレス(PV1、PA1)に対応するリファレンスカウントを1から2に変更する。
さらに、CM200は、ビットマップ212aにおける論理アドレス(LUN1、LBA1)に対応する領域212a1に、データが書き込まれたことを登録する。これにより、領域212a1のビットが0から1に変更される。
図9は、第2の実施の形態の具体例(その2)を示す図である。図9は、図8の状態から、CM200がホスト装置400からの指示により論理ボリューム320を削除する場合を示している。
CM200は、ホスト装置400から論理ボリューム320の削除指示を受信し、論理ボリューム320の削除処理を開始する。CM200は、論理ボリューム320を削除するとプールボリューム310のブロックを参照する論理ブロックの数が減るため、ハッシュ値管理テーブル211aに登録されているリファレンスカウントの値を減らす。
CM200は、論理ボリューム320に対応するビットマップ212aを参照し、ビットが1である論理アドレス(LUN1、LBA1)を特定する。CM200は、アドレス対応テーブル301aのレコードのうち、特定された論理アドレス(LUN1、LBA1)に対応するレコードを参照し、そのレコードから物理アドレス(PV1、PA1)を読み出す。CM200は、ハッシュ値管理テーブル211aを参照し、読み出した物理アドレス(PV1、PA1)に対応するリファレンスカウントの値を2から1に変更する。
また、CM200は、ビットマップ212aを参照し、ビットが1である論理アドレス(LUN1、LBA2)を特定する。CM200は、アドレス対応テーブル301aのレコードのうち、特定された論理アドレス(LUN1、LBA2)に対応するレコードを参照し、そのレコードから物理アドレス(PV1、PA2)を読み出す。CM200は、ハッシュ値管理テーブル211aを参照し、読み出した物理アドレス(PV1、PA2)に対応するリファレンスカウントの値を1から0に変更する。
以上の手順により、CM200は、ビットマップ212aに基づいてビットが1である論理ブロックを順次特定し、特定された論理アドレスに対応する物理アドレスをアドレス対応テーブル301aから読み出し、対応するリファレンスカウントの値を減算する。CM200は、このようなリファレンスカウントの減算処理が終了すると、アドレス対応テーブル301aとビットマップ212aと論理ボリューム320とを削除する。また、CM200は、ハッシュ値管理テーブル211aを参照し、リファレンスカウントの値が0である物理アドレスを解放する。図9の例では、物理アドレス(PV1、PA2)が示すブロックが解放され、未割り当てブロックに戻される。
このように、第2の実施の形態では、CM200は、ビットマップ212aでビットが“1”である論理アドレスだけを対象にアドレス対応テーブル301aを検索する。すなわち、CM200は、ビットが“0”である論理アドレスを対象にアドレス対応テーブル301aを検索しない。例えば、論理アドレス(LUN1、LBA3)を検索しない。このように、アドレス対応テーブル301aに登録されている全ての論理アドレスを検索せず、ビットマップ212aのビットが“1”である論理アドレスを対象に検索するので、記憶装置20に対するアクセス回数が減る。その結果、論理ボリュームを削除するための処理時間を短縮できる。
次に、CM200の詳細について説明する。
図10は、CMの機能例を示す図である。CM200は、記憶部210、作成部220、アクセス制御部230および削除処理部240を有する。
記憶部210は、例えば、RAM202に確保した記憶領域として実装される。記憶部210は、ハッシュ値管理テーブル211および図8,9で例示したビットマップを記憶する。また、ビットマップのビットと論理アドレスとの対応関係を示す情報が、記憶部210に格納される。さらに、各プールボリュームにおけるブロックの空き状況を示す管理情報も、記憶部210に格納される。また、記憶部210が、アドレス対応テーブル301の一部の情報を記憶していてもよい。
作成部220、アクセス制御部230および削除処理部240の少なくとも一部の処理は、例えば、プロセッサ201が所定のプログラムを実行することによって実現される。
作成部220は、論理ボリュームを作成する。作成部220は、論理ボリュームに対応するビットマップと、論理ボリュームに対応するアドレス対応テーブル301とを作成する。
アクセス制御部230は、ホスト装置400から論理ボリュームへのアクセス要求を受け付け、要求に応じたアクセス制御を実行する。例えば、アクセス制御部230は、ホスト装置400から書き込み要求とデータブロックを受信すると、受信したデータブロックが既に対応するプールボリュームに格納されているか否かを判定する。格納されていない場合、アクセス制御部230は、データブロックを対応するプールボリュームに格納する。一方、格納されている場合、アクセス制御部230は、データブロックをプールボリュームに格納しないようにする。
アクセス制御部230は、書き込みが要求された論理アドレスに対応するビットマップのビットを1に設定する。また、アクセス制御部230は、書き込みが要求された論理アドレスと物理アドレスとの関係をアドレス対応テーブル301に登録する。さらに、アクセス制御部230は、ハッシュ値管理テーブル211のリファレンスカウントを更新する。
また、アクセス制御部230は、ホスト装置400から読み出し要求を受信すると、データブロックの読み出し処理を行う。
削除処理部240は、ホスト装置400から論理ボリュームの削除指示を受信すると、ビットマップを参照しながら論理ボリュームの削除に伴う処理を実行する。詳細には、削除処理部240は、ビットマップのビットが“1”の論理アドレスを特定し、特定した論理アドレスに対応付けられた物理アドレスをアドレス対応テーブル301から読み出す。削除処理部240は、ハッシュ値管理テーブル211を参照し、読み出した物理アドレスに対応するリファレンスカウントを減算する。また、削除処理部240は、必要な全てのリファレンスカウントの減算処理を完了すると、削除対象の論理ボリュームに対応するアドレス対応テーブル301とビットマップを削除する。また、削除処理部240は、削除対象の論理ボリュームを削除する。
次に、CM200が実行する処理について、フローチャートを用いて説明する。
図11は、論理ボリュームの作成時の処理の例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(S11)作成部220は、ホスト装置400からの指示により論理ボリュームを作成する。作成された論理ボリュームには、プールボリュームが割り当てられる。
(S12)作成部220は、作成した論理ボリュームに対応するビットマップを作成し、記憶部210に格納する。具体的には、作成部220は、作成した論理ボリュームの容量に合わせてビットマップを作成する。例えば、作成部220は、“論理ボリュームの容量/論理ブロックの容量(4キロバイト)”で算出された数のビットを含むビットマップを作成する。
(S13)作成部220は、作成したビットマップを初期化する。すなわち、作成部220は、ビットマップのビットを全て0にする。
(S14)作成部220は、作成した論理ボリュームに対応するアドレス対応テーブル301を作成する。作成部220は、作成した論理ボリュームの全ての論理ブロックに対応するレコードをアドレス対応テーブル301に作成し、各レコードの論理アドレスの項目にLUNとLBAを示す情報を登録し、物理アドレスの項目を空欄にする。作成部220は、作成したアドレス対応テーブル301を、DE300内の記憶装置に格納する。そして、処理を終了する。
図12は、書き込み処理の例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。なお、図12において参照されるハッシュ値管理テーブル211は、書き込み対象の論理ボリュームに割り当てられたプールボリュームに対応するハッシュ値管理テーブル211である。また、図12において参照されるアドレス対応テーブル301は、書き込み対象の論理ボリュームに対応するアドレス対応テーブル301である。
(S21)アクセス制御部230は、ホスト装置400から書き込み要求とデータブロックを受信する。書き込み要求には、LUNとLBAを示す情報が含まれる。アクセス制御部230は、SHA−1のハッシュ関数を用いて、書き込み要求のデータブロックのハッシュ値を算出する。アクセス制御部230は、算出したハッシュ値がハッシュ値管理テーブル211に登録されているか否かにより、受信したデータブロックがプールボリューム310に格納されているデータブロックと重複するか否かを判定する。
算出したハッシュ値がハッシュ値管理テーブル211に登録されていない(重複していない)場合、処理をステップS24に進める。一方、算出したハッシュ値がハッシュ値管理テーブル211に登録されている(重複する)場合、処理をステップS22に進める。この場合、アクセス制御部230は、受信したデータブロックをプールボリューム310に格納する処理(ステップS24に対応)をスキップする。
(S22)アクセス制御部230は、重複すると判定したデータブロックが格納されている物理アドレスと書き込みが要求された論理アドレスとの関係をアドレス対応テーブル301に登録する。なお、登録される物理アドレスは、ハッシュ値管理テーブル211において、算出したハッシュ値と同じハッシュ値に対応付けられている物理アドレスである。
ここで、アドレス対応テーブル301の物理アドレスの項目へ物理アドレスを登録する前にすでに別の物理アドレスが登録されていた場合を、更新という。
(S23)アクセス制御部230は、ハッシュ値管理テーブル211を参照し、重複すると判定したデータブロックが格納されている物理アドレスに対応するリファレンスカウントを1つ加算する。
また、アクセス制御部230は、更新の場合、アドレス対応テーブル301におけるステップS22での登録対象のレコードにおいて、物理アドレスの項目にステップS22での登録前に登録されていた物理アドレスを判別する。アクセス制御部230は、ハッシュ値管理テーブル211において、判別した物理アドレスに対応付けられているリファレンスカウントを1つ減算する。そして、処理をステップS27に進める。
なお、減算後のリファレンスカウントが0になった場合には、アクセス制御部230は、このリファレンスカウントに対応付けられた物理アドレスが示すプールボリューム310のブロックを解放する。例えば、アクセス制御部230は、プールボリューム310の空き領域を管理している管理情報に、当該物理ブロックを未割り当てブロックとして登録する。また、アクセス制御部230は、減算したリファレントカウントを含むレコードをハッシュ値管理テーブル211から削除する。
(S24)アクセス制御部230は、対応するプールボリューム310から未割り当ての物理アドレスを選択する。アクセス制御部230は、受信したデータブロックをプールボリューム310から選択した物理アドレスが示すブロックに格納する。
(S25)アクセス制御部230は、データブロックを書き込んだ物理アドレスと書き込みが要求された論理アドレスとの関係をアドレス対応テーブル301に登録する。
ここで、アドレス対応テーブル301の物理アドレスの項目へ物理アドレスを登録する前にすでに別の物理アドレスが登録されていた場合を、更新という。
(S26)アクセス制御部230は、ハッシュ値管理テーブル211に新規にレコードを追加する。アクセス制御部230は、追加したレコードの物理アドレスの項目に、データブロックを書き込んだ物理アドレスを登録する。アクセス制御部230は、追加したレコードのハッシュ値の項目に、ステップS21で算出したハッシュ値を登録する。アクセス制御部230は、追加したレコードのリファレンスカウントの項目に1を登録する。
また、アクセス制御部230は、更新の場合、アドレス対応テーブル301におけるステップS25での登録対象のレコードにおいて、物理アドレスの項目にステップS25での登録前に登録されていた物理アドレスを判別する。アクセス制御部230は、ハッシュ値管理テーブル211において、判別した物理アドレスに対応付けられているリファレンスカウントを1つ減算する。
なお、減算後のリファレンスカウントが0になった場合には、アクセス制御部230は、ステップS22で説明した手順と同様の手順で、プールボリューム310における該当するブロックを解放し、ハッシュ値管理テーブル211の該当するレコードを削除する。
(S27)アクセス制御部230は、新規書き込みか否かを判定する。新規書き込みとは、アドレス対応テーブル301におけるステップS22またはステップS25での登録対象のレコードにおいて、物理アドレスの項目に物理アドレスが登録されていなかったケースである。なお、このケースについては、当該レコードに物理アドレスが登録されていたことではなく、当該レコードに対応するビットマップのビットが0であることで判定されてもよい。新規書き込みの場合、処理をステップS28に進める。新規書き込みでない場合、処理を終了する。
(S28)アクセス制御部230は、書き込みが要求された論理アドレス(LUNとLBA)に対応するビットマップのビットを1に設定する。そして、処理を終了する。
図13は、読み出し処理の例を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(S31)アクセス制御部230は、ホスト装置400から読み出し要求を受信する。読み出し要求には、読み出し元の論理アドレスを示すLUNとLBAが含まれる。アクセス制御部230は、読み出し元の論理アドレス(LUNとLBA)に対応するビットマップのビットが0であるか否かを判定する。ビットが0の場合、処理をステップS33に進める。ビットが1の場合、処理をステップS32に進める。
(S32)アクセス制御部230は、データブロックの読み出し処理を実行する。詳細には、アクセス制御部230は、アドレス対応テーブル301を参照し、読み出し元の論理アドレスに対応する物理アドレスを特定する。アクセス制御部230は、特定した物理アドレスが示すプールボリューム310のブロックに格納されているデータブロックを読み出す。アクセス制御部230は、読み出したデータブロックをホスト装置400に送信する。そして、処理を終了する。
(S33)アクセス制御部230は、ゼロデータをホスト装置400に送信する。なお、ゼロデータは、データが存在しないことを示すデータであり、例えばビット値0が羅列されたデータである。そして、処理を終了する。
このように、読み出し元の論理アドレスに対応するビットマップのビットが0の場合、アクセス制御部230は、DE300内の記憶装置にアクセスしない。すなわち、アクセス制御部230は、読み出しが要求されたデータがDE300内の記憶装置に存在しないことを確認するために、DE300内の記憶装置に格納されたアドレス対応テーブル301を参照しなくて済む。よって、ビットマップを用いることで、読み出し要求に対する応答速度を速くすることができる。
図14は、論理ボリュームの削除処理の例を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
(S41)削除処理部240は、ホスト装置400から論理ボリュームの削除指示を受信する。削除指示には、削除対象の論理ボリュームを示すLUNが含まれる。削除処理部240は、削除対象の論理ボリュームに対応するビットマップの先頭のビットを読み込む。
(S42)削除処理部240は、ビットが1であるか否かを判定する。ビットが1の場合、処理をステップS43に進める。ビットが0の場合、処理をステップS44に進める。
(S43)削除処理部240は、アドレス対応テーブル301を参照し、ステップS42で判定したビットで管理する論理アドレスに対応付けられた物理アドレスを特定する。削除処理部240は、ハッシュ値管理テーブル211を参照し、特定した物理アドレスに対応するリファレンスカウントを減算する。
ここで、減算後のリファレンスカウントが0になった場合には、削除処理部240は、このリファレンスカウントに対応付けられた物理アドレスが示すプールボリューム310のブロックを解放する。また、削除処理部240は、減算したリファレントカウントを含むレコードをハッシュ値管理テーブル211から削除する。
(S44)削除処理部240は、ビットマップの全てのビットを読み込んだか否かを判定する。読み込んでいない場合、処理をステップS45に進める。読み込んだ場合、処理をステップS46に進める。
(S45)削除処理部240は、ビットマップの次のビットを読み込む。そして、処理をステップS42に進める。
(S46)削除処理部240は、削除対象の論理ボリュームに対応するビットマップおよびアドレス対応テーブル301を削除する。また、削除処理部240は、削除対象の論理ボリュームに関する他の管理情報を削除することで、この論理ボリュームを削除する。そして、処理を終了する。
また、第1の実施の形態の情報処理は、ストレージ制御装置10に用いられるプロセッサに、プログラムを実行させることで実現できる。第2の実施の形態の情報処理は、プロセッサ201にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、作成部220、アクセス制御部230および削除処理部240に相当する機能を実現するプログラムを別個のプログラムとし、各プログラムを別個に配布してもよい。作成部220、アクセス制御部230および削除処理部240の機能が別個のコンピュータにより実現されてもよい。コンピュータは、例えば、記録媒体に記録されたプログラムを、RAM202やSSD203に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
また、以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1) 記憶装置の記憶領域によって実現される論理ボリュームを分割した複数の論理ブロックのそれぞれについて、データの書き込みの有無が登録された第1の管理情報を記憶する記憶部と、
前記複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、前記記憶領域を分割した複数の物理ブロックのうちの第1の物理ブロックを前記第1の論理ブロックに割り当てて前記書き込みデータを前記第1の物理ブロックに格納するとともに、前記第1の論理ブロックにデータが書き込まれたことを前記第1の管理情報に登録し、前記論理ボリュームを削除する際に、前記第1の管理情報に基づいて、前記複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、前記複数の論理ブロックのそれぞれについて前記複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録され、前記記憶領域に記憶された第2の管理情報から、前記複数の物理ブロックのうち前記第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す前記第2の物理ブロックを解放するための解放処理を実行する制御部と、
を有するストレージ制御装置。
(付記2) 前記記憶部は、前記複数の物理ブロックのそれぞれについて、前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報をさらに記憶し、
前記制御部は、前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
付記1記載のストレージ制御装置。
(付記3) 前記ストレージ制御装置には、共通の前記記憶領域によって実現される前記論理ボリュームが複数設定され、
前記記憶部は、複数の前記論理ボリュームのそれぞれに対応する前記第1の管理情報を記憶するとともに、前記複数の物理ブロックのそれぞれについて、複数の前記論理ボリュームにおける前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報をさらに記憶し、
前記記憶領域には、複数の前記論理ボリュームのそれぞれに対応する前記第2の管理情報が記憶され、
前記制御部は、複数の前記論理ボリュームのいずれかに含まれる前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
付記1記載のストレージ制御装置。
(付記4) 前記制御部は、前記複数の論理ブロックのうち第3の論理ブロックからの読み出しが前記ホスト装置から要求されると、前記第1の管理情報に基づいて、前記第3の論理ブロックにデータが書き込まれているか否かを判定し、データが書き込まれていない場合、データが書き込まれていないことを示す情報を前記ホスト装置に送信する、
付記1または2記載のストレージ制御装置。
(付記5) 論理ボリュームを実現する記憶領域を有するとともに、前記論理ボリュームを分割した複数の論理ブロックのそれぞれについて、前記記憶領域を分割した複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録された第2の管理情報を記憶する記憶装置と、
前記複数の論理ブロックのそれぞれについて、データの書き込みの有無が登録された第1の管理情報を記憶する記憶部、および、
前記複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、前記複数の物理ブロックのうちの第1の物理ブロックを前記第1の論理ブロックに割り当てて前記書き込みデータを前記第1の物理ブロックに格納するとともに、前記第1の論理ブロックにデータが書き込まれたことを前記第1の管理情報に登録し、前記論理ボリュームを削除する際に、前記第1の管理情報に基づいて、前記複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、前記第2の管理情報から、前記複数の物理ブロックのうち前記第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す前記第2の物理ブロックを解放するための解放処理を実行する制御部、
を有するストレージ制御装置と、
を含むストレージシステム。
(付記6) 前記記憶部は、前記複数の物理ブロックのそれぞれについて、前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報をさらに記憶し、
前記制御部は、前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
付記5記載のストレージシステム。
(付記7) 前記ストレージ制御装置には、共通の前記記憶領域によって実現される前記論理ボリュームが複数設定され、
前記記憶部は、複数の前記論理ボリュームのそれぞれに対応する前記第1の管理情報を記憶するとともに、前記複数の物理ブロックのそれぞれについて、複数の前記論理ボリュームにおける前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報をさらに記憶し、
前記記憶領域には、複数の前記論理ボリュームのそれぞれに対応する前記第2の管理情報が記憶され、
前記制御部は、複数の前記論理ボリュームのいずれかに含まれる前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
付記5記載のストレージシステム。
(付記8) 前記制御部は、前記複数の論理ブロックのうち第3の論理ブロックからの読み出しが前記ホスト装置から要求されると、前記第1の管理情報に基づいて、前記第3の論理ブロックにデータが書き込まれているか否かを判定し、データが書き込まれていない場合、データが書き込まれていないことを示す情報を前記ホスト装置に送信する、
付記5または6記載のストレージシステム。
(付記9) 記憶部を有するコンピュータに、
記憶装置の記憶領域によって実現される論理ボリュームを分割した複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、前記記憶領域を分割した複数の物理ブロックのうちの第1の物理ブロックを前記第1の論理ブロックに割り当てて前記書き込みデータを前記第1の物理ブロックに格納するとともに、前記記憶部に記憶され、前記複数の論理ブロックのそれぞれについてデータの書き込みの有無が登録された第1の管理情報に、前記第1の論理ブロックにデータが書き込まれたことを登録し、
前記論理ボリュームを削除する際に、前記第1の管理情報に基づいて、前記複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、
前記複数の論理ブロックのそれぞれについて前記複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録され、前記記憶領域に記憶された第2の管理情報から、前記複数の物理ブロックのうち前記第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、
読み出したアドレスが示す前記第2の物理ブロックを解放するための解放処理を実行する、
処理を実行させるストレージ制御プログラム。
(付記10) 前記記憶部には、前記複数の物理ブロックのそれぞれについて、前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報がさらに記憶され、
前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
付記9記載のストレージ制御プログラム。
(付記11) 前記コンピュータには、共通の前記記憶領域によって実現される前記論理ボリュームが複数設定され、
前記記憶部には、複数の前記論理ボリュームのそれぞれに対応する前記第1の管理情報が記憶されるとともに、前記複数の物理ブロックのそれぞれについて、複数の前記論理ボリュームにおける前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報がさらに記憶され、
前記記憶領域には、複数の前記論理ボリュームのそれぞれに対応する前記第2の管理情報が記憶され、
前記書き込みデータの書き込み要求では、複数の前記論理ボリュームのいずれかに含まれる前記第1の論理ブロックに対する書き込みが要求され、
前記第1の物理ブロックの割り当てでは、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
付記9記載のストレージ制御プログラム。
(付記12) 前記コンピュータに、
前記複数の論理ブロックのうち第3の論理ブロックからの読み出しが前記ホスト装置から要求されると、前記第1の管理情報に基づいて、前記第3の論理ブロックにデータが書き込まれているか否かを判定し、データが書き込まれていない場合、データが書き込まれていないことを示す情報を前記ホスト装置に送信する、
処理をさらに実行させる付記9または10記載のストレージ制御プログラム。
10 ストレージ制御装置
11 記憶部
11a ビットマップ
11aa,11ab,11ac,11ad 領域
12 制御部
12a 論理ボリューム
20 記憶装置
21 管理情報
30 ホスト装置

Claims (6)

  1. 記憶装置の記憶領域によって実現される論理ボリュームを分割した複数の論理ブロックのそれぞれについて、データの書き込みの有無が登録された第1の管理情報を記憶する記憶部と、
    前記複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、前記記憶領域を分割した複数の物理ブロックのうちの第1の物理ブロックを前記第1の論理ブロックに割り当てて前記書き込みデータを前記第1の物理ブロックに格納するとともに、前記第1の論理ブロックにデータが書き込まれたことを前記第1の管理情報に登録し、前記論理ボリュームを削除する際に、前記第1の管理情報に基づいて、前記複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、前記複数の論理ブロックのそれぞれについて前記複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録され、前記記憶領域に記憶された第2の管理情報から、前記複数の物理ブロックのうち前記第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す前記第2の物理ブロックを解放するための解放処理を実行する制御部と、
    を有するストレージ制御装置。
  2. 前記記憶部は、前記複数の物理ブロックのそれぞれについて、前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報をさらに記憶し、
    前記制御部は、前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
    前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
    請求項1記載のストレージ制御装置。
  3. 前記ストレージ制御装置には、共通の前記記憶領域によって実現される前記論理ボリュームが複数設定され、
    前記記憶部は、複数の前記論理ボリュームのそれぞれに対応する前記第1の管理情報を記憶するとともに、前記複数の物理ブロックのそれぞれについて、複数の前記論理ボリュームにおける前記複数の論理ブロックのそれぞれに対して割り当てられた割り当て数が登録された第3の管理情報をさらに記憶し、
    前記記憶領域には、複数の前記論理ボリュームのそれぞれに対応する前記第2の管理情報が記憶され、
    前記制御部は、複数の前記論理ボリュームのいずれかに含まれる前記第1の論理ブロックに対する前記書き込みデータの書き込みが要求されたとき、前記記憶領域において重複データが除去されるように、前記第1の論理ブロックに対して前記第1の物理ブロックを割り当て、
    前記解放処理では、前記第3の管理情報に登録された割り当て数のうち、前記第2の管理情報から読み出したアドレスが示す前記第2の物理ブロックに対応する割り当て数を減算し、減算後の割り当て数が0の場合、前記第2の物理ブロックを解放する、
    請求項1記載のストレージ制御装置。
  4. 前記制御部は、前記複数の論理ブロックのうち第3の論理ブロックからの読み出しが前記ホスト装置から要求されると、前記第1の管理情報に基づいて、前記第3の論理ブロックにデータが書き込まれているか否かを判定し、データが書き込まれていない場合、データが書き込まれていないことを示す情報を前記ホスト装置に送信する、
    請求項1または2記載のストレージ制御装置。
  5. 論理ボリュームを実現する記憶領域を有するとともに、前記論理ボリュームを分割した複数の論理ブロックのそれぞれについて、前記記憶領域を分割した複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録された第2の管理情報を記憶する記憶装置と、
    前記複数の論理ブロックのそれぞれについて、データの書き込みの有無が登録された第1の管理情報を記憶する記憶部、および、
    前記複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、前記複数の物理ブロックのうちの第1の物理ブロックを前記第1の論理ブロックに割り当てて前記書き込みデータを前記第1の物理ブロックに格納するとともに、前記第1の論理ブロックにデータが書き込まれたことを前記第1の管理情報に登録し、前記論理ボリュームを削除する際に、前記第1の管理情報に基づいて、前記複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、前記第2の管理情報から、前記複数の物理ブロックのうち前記第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、読み出したアドレスが示す前記第2の物理ブロックを解放するための解放処理を実行する制御部、
    を有するストレージ制御装置と、
    を含むストレージシステム。
  6. 記憶部を有するコンピュータに、
    記憶装置の記憶領域によって実現される論理ボリュームを分割した複数の論理ブロックのうち第1の論理ブロックに対する書き込みデータの書き込みがホスト装置から要求されると、前記記憶領域を分割した複数の物理ブロックのうちの第1の物理ブロックを前記第1の論理ブロックに割り当てて前記書き込みデータを前記第1の物理ブロックに格納するとともに、前記記憶部に記憶され、前記複数の論理ブロックのそれぞれについてデータの書き込みの有無が登録された第1の管理情報に、前記第1の論理ブロックにデータが書き込まれたことを登録し、
    前記論理ボリュームを削除する際に、前記第1の管理情報に基づいて、前記複数の論理ブロックの中からデータが書き込まれている第2の論理ブロックを特定し、
    前記複数の論理ブロックのそれぞれについて前記複数の物理ブロックの中から割り当てられた物理ブロックのアドレスが登録され、前記記憶領域に記憶された第2の管理情報から、前記複数の物理ブロックのうち前記第2の論理ブロックに割り当てられた第2の物理ブロックのアドレスを読み出し、
    読み出したアドレスが示す前記第2の物理ブロックを解放するための解放処理を実行する、
    処理を実行させるストレージ制御プログラム。
JP2016111767A 2016-06-03 2016-06-03 ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム Pending JP2017219913A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016111767A JP2017219913A (ja) 2016-06-03 2016-06-03 ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム
US15/586,592 US10365846B2 (en) 2016-06-03 2017-05-04 Storage controller, system and method using management information indicating data writing to logical blocks for deduplication and shortened logical volume deletion processing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016111767A JP2017219913A (ja) 2016-06-03 2016-06-03 ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム

Publications (1)

Publication Number Publication Date
JP2017219913A true JP2017219913A (ja) 2017-12-14

Family

ID=60483191

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016111767A Pending JP2017219913A (ja) 2016-06-03 2016-06-03 ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム

Country Status (2)

Country Link
US (1) US10365846B2 (ja)
JP (1) JP2017219913A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019113899A (ja) * 2017-12-20 2019-07-11 富士通株式会社 ストレージシステム、制御装置及び制御方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11307980B2 (en) * 2018-04-20 2022-04-19 Seagate Technology Llc Distributed data storage system with passthrough operations
WO2019231761A1 (en) * 2018-05-31 2019-12-05 Secturion Systems, Inc. Locally-stored remote block data integrity

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031929A (ja) * 2003-07-11 2005-02-03 Hitachi Ltd サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム
JP2013137770A (ja) * 2011-12-12 2013-07-11 Apple Inc Lbaビットマップの使用
WO2016046911A1 (ja) * 2014-09-24 2016-03-31 株式会社日立製作所 ストレージシステム及びストレージシステムの管理方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3617631B2 (ja) * 2001-07-19 2005-02-09 富士通株式会社 ストレージ制御装置及びその制御方法
JP4900816B2 (ja) * 2007-05-11 2012-03-21 株式会社日立製作所 記憶制御装置、記憶制御装置の制御方法
JP5194962B2 (ja) * 2008-04-03 2013-05-08 富士通株式会社 データ処理方法、ストレージ装置およびストレージシステム
US20100199065A1 (en) 2009-02-04 2010-08-05 Hitachi, Ltd. Methods and apparatus for performing efficient data deduplication by metadata grouping
US8051050B2 (en) * 2009-07-16 2011-11-01 Lsi Corporation Block-level data de-duplication using thinly provisioned data storage volumes
JP5342014B2 (ja) * 2009-08-31 2013-11-13 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
WO2011121905A1 (ja) 2010-03-29 2011-10-06 日本電気株式会社 ファイルストレージ装置、データ格納方法およびデータ格納プログラム
US20120158674A1 (en) * 2010-12-20 2012-06-21 Mark David Lillibridge Indexing for deduplication
JP2014038551A (ja) * 2012-08-20 2014-02-27 Fujitsu Ltd データ記憶装置、データ記憶装置の制御方法、及びデータ記憶装置の制御プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005031929A (ja) * 2003-07-11 2005-02-03 Hitachi Ltd サーバに記憶領域を割り当てる管理サーバ、記憶装置システム、及びプログラム
JP2013137770A (ja) * 2011-12-12 2013-07-11 Apple Inc Lbaビットマップの使用
WO2016046911A1 (ja) * 2014-09-24 2016-03-31 株式会社日立製作所 ストレージシステム及びストレージシステムの管理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019113899A (ja) * 2017-12-20 2019-07-11 富士通株式会社 ストレージシステム、制御装置及び制御方法

Also Published As

Publication number Publication date
US10365846B2 (en) 2019-07-30
US20170351457A1 (en) 2017-12-07

Similar Documents

Publication Publication Date Title
US9542105B2 (en) Copying volumes between storage pools
US10248623B1 (en) Data deduplication techniques
US8650381B2 (en) Storage system using real data storage area dynamic allocation method
JP6526233B2 (ja) 記憶システムにおける重複排除のための方法、記憶システムおよびコントローラ
JP2020035300A (ja) 情報処理装置および制御方法
US9658796B2 (en) Storage control device and storage system
WO2017149581A1 (ja) 仮想ストレージシステム
US10503424B2 (en) Storage system
US8768883B2 (en) Storage apparatus and control method of the same
US20130138908A1 (en) Storage system and pool capacity scale-down control method
US9354819B2 (en) Storage system including multiple storage apparatuses and pool virtualization method
JP6511795B2 (ja) ストレージ管理装置、ストレージ管理方法、ストレージ管理プログラムおよびストレージシステム
KR20100077156A (ko) 씬 프로비저닝 이송 및 스크러빙 방법
US10789007B2 (en) Information processing system, management device, and control method
US8954658B1 (en) Method of LUN management in a solid state disk array
US9003087B2 (en) Compound storage system and storage control method
CN107562367B (zh) 基于软件化存储系统读写数据的方法以及装置
US20180307426A1 (en) Storage apparatus and storage control method
JP6867578B2 (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US20170262220A1 (en) Storage control device, method of controlling data migration and non-transitory computer-readable storage medium
JP2016066142A (ja) ストレージ装置、ストレージ制御方法およびストレージ制御プログラム
JP2017219913A (ja) ストレージ制御装置、ストレージシステムおよびストレージ制御プログラム
US10133517B2 (en) Storage control device
WO2015001620A1 (ja) ストレージシステム、記憶制御方法、及び計算機システム
JP2021114264A (ja) ストレージ制御装置およびストレージ制御プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191203

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20200602