JP2006259962A - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP2006259962A
JP2006259962A JP2005074375A JP2005074375A JP2006259962A JP 2006259962 A JP2006259962 A JP 2006259962A JP 2005074375 A JP2005074375 A JP 2005074375A JP 2005074375 A JP2005074375 A JP 2005074375A JP 2006259962 A JP2006259962 A JP 2006259962A
Authority
JP
Japan
Prior art keywords
block
data
block set
update
host computer
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.)
Granted
Application number
JP2005074375A
Other languages
English (en)
Other versions
JP4615337B2 (ja
JP2006259962A5 (ja
Inventor
Yutaka Nakagawa
豊 中川
Masahiro Arai
政弘 新井
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2005074375A priority Critical patent/JP4615337B2/ja
Priority to US11/129,552 priority patent/US20060212625A1/en
Publication of JP2006259962A publication Critical patent/JP2006259962A/ja
Publication of JP2006259962A5 publication Critical patent/JP2006259962A5/ja
Priority to US12/123,148 priority patent/US7747799B2/en
Application granted granted Critical
Publication of JP4615337B2 publication Critical patent/JP4615337B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1435Saving, restoring, recovering or retrying at system level using file system or storage system metadata
    • 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/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • 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/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/84Using snapshots, i.e. a logical point-in-time copy of the data

Landscapes

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

Abstract

【課題】 データ自体の大きさが変わるデータ処理後のデータを格納するストレージシステムを利用するホストコンピュータの負荷を軽減することが可能な技術を提供することを目的とする。
【解決手段】 ホストコンピュータに対しては、第1ブロックを最小単位としてデータ転送を行う。記憶領域に対しては、第2ブロックを最小単位としてデータ転送を行う。記憶領域の第2ブロックセットは、第1ブロックセットを単位として、データ自体の大きさが変わるデータ変換処理を実行して得られたデータを格納する。ここで、第1ブロックセットと第2ブロックセットとの対応関係を生成する。さらに、ホストコンピュータからの読み出し要求に応じて、要求された第1ブロックを含む第1ブロックセットに対応する第2ブロックセットを読み出し、逆変換処理を実行して、ホストコンピュータにデータを送信する。
【選択図】 図8

Description

本発明は、データの記憶領域をホストコンピュータに提供するストレージシステムに関するものである。
近年、データの記憶領域をホストコンピュータに提供するストレージシステムが普及しつつある。このようなストレージシステムを利用する際には、ホストコンピュータは、単にアプリケーションのデータをストレージシステムに記憶させるだけではなく、ホストコンピュータでデータの圧縮を行って、圧縮後のデータをストレージシステムに記憶させ、圧縮データを管理したり、バックアップデータをストレージシステムに記憶させ、記憶されたバックアップデータを管理する等の種々のデータ処理を実行している(例えば、特許文献1〜3参照)。
米国特許第5649152号明細書 米国特許第5555389号明細書 特開平7−72981号公報
ところが、このような処理を実行するために、ホストコンピュータの負荷が高くなる場合があった。特に、データファイルを圧縮して記憶させる場合には、データの圧縮処理そのものや、圧縮後のデータの位置管理のために、ホストコンピュータの負担増大が顕著であった。
なお、このような問題は、データ圧縮処理を実行する場合に限らず、データ暗号化処理を実行する場合等、データ自体の大きさが変わるデータ処理を実行する場合に共通する問題であった。
本発明は、上記の課題を解決するためになされたものであり、データ自体の大きさが変わるデータ処理後のデータを格納するストレージシステムを利用するホストコンピュータの負荷を軽減することが可能な技術を提供することを目的とする。
上述の課題の少なくとも一部を解決するため、本発明のストレージシステムは、データを記憶する記憶領域をホストコンピュータに提供するストレージシステムであって、データを記憶する記憶領域を有するデータ記憶部と、前記ホストコンピュータと前記記憶領域との間のデータ転送を制御する制御部と、を備え、前記制御部は、前記ホストコンピュータとの間では、所定サイズの第1ブロックを最小単位として前記ホストコンピュータから指定された第1ブロックの論理的な格納位置に従ってデータの受信及び送信を実行し、前記記憶領域との間では、所定サイズの第2ブロックを最小単位としてデータの格納と読み出しとを実行するとともに、前記記憶領域にデータを格納する際には、N個(Nは1以上の整数)の第1ブロックで構成される第1ブロックセットを単位として、データ自体の大きさが変わるデータ変換処理を実行して1以上の第2ブロックで構成される第2ブロックセットを生成するとともに、前記第2ブロックセットを前記記憶領域へ格納する変換格納モードを有し、前記ストレージシステムは、さらに、複数の前記第1ブロックセットと複数の前記第2ブロックセットとの対応関係を示すブロック対応関係を記憶する対応関係記憶部を備え、前記制御部は、前記ホストコンピュータから特定の第1ブロックのデータ読み出し要求を受信したときに、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットに対応付けられた読出第2ブロックセットを認識し、前記読出第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する。
このストレージシステムによれば、対応関係記憶部が、データ変換処理の前後のブロックセットの対応関係を示すブロック対応関係を記憶し、制御部は、ホストコンピュータからの読み出し要求に応じて、ブロック対応関係を参照して記憶領域から変換処理後のデータを読み出し、読み出したデータに逆変換処理を実行し、得られたデータを用いてホストコンピュータに要求されたデータを送信するので、データ自体の大きさが変わるデータ処理後のデータを格納するストレージシステムを利用するホストコンピュータの負荷を軽減することが可能となる。
上記ストレージシステムにおいて、前記制御部は、さらに、前記ホストコンピュータから特定の第1ブロックに関するデータ更新格納要求を受けたときに、前記要求された第1ブロックを含む更新対象第1ブロックセットの更新処理を実行し、
前記更新処理において、前記制御部は、前記ブロック対応関係を参照して、前記更新対象第1ブロックセットに含まれる全ての第1ブロックの更新が要求されているか否かを判定し、全ての第1ブロックの更新が要求されていない場合には、前記更新対象第1ブロックセットに対応付けられた第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、得られたデータに前記要求された第1ブロックのデータを上書きしてから前記変換処理を実行して更新対象第2ブロックセットを生成するとともに、前記更新対象第2ブロックセットを前記記憶領域に格納し、さらに、前記ブロック対応関係に、前記更新対象第1ブロックセットと前記更新対象第2ブロックセットとの対応関係を書き込むこととしてもよい。
この構成によれば、制御部は、第1ブロックセットの全ての第1ブロックの更新が要求されていない場合であっても、要求されていない第1ブロックのデータを読み出すことによって、第1ブロックセットを単位とする変換処理を実行するので、変換後のデータの管理が過剰に複雑化することを防止できる。
上記ストレージシステムにおいて、前記記憶領域は、論理的な格納位置が同一の第1ブロックセットに対応付けられているとともに、バージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と、前記複数の異バージョン第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、前記制御部は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行し、前記バージョン読み出し処理において、前記制御部は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信することとしてもよい。
この構成によれば、制御部は、ホストコンピュータからの特定のバージョンのデータ読み出し要求に応じて、要求されたバージョンの第2ブロックセットを読み出して逆変換処理を実行し、要求されたデータを送信するので、バージョンを特定したデータの読み出しを行うホストコンピュータの負荷を軽減することが可能となる。
上記ストレージシステムにおいて、前記制御部は、前記第1ブロックセットから前記データ変換処理を実行せずに1以上の第2ブロックで構成される未変換ブロックセットを生成するとともに、前記未変換ブロックセットを前記記憶領域に格納する未変換格納モードを有し、前記制御部は、前記未変換ブロックセットの格納の後に前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、変換更新処理を実行し、前記変換更新処理において、前記制御部は、(i)前記要求された第1ブロックを含む対象第1ブロックセットの更新後のデータについては、前記変換格納モードと前記未変換格納モードとの一方に従って前記記憶領域に格納し、(ii)前記対象第1ブロックセットの更新前のデータについては、前記対象第1ブロックセットに対応付けられた未変換ブロックセットを読み出し、前記データ変換処理を実行して更新前第2ブロックセットを生成するとともに、前記更新前第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記対象第1ブロックセットと、前記更新前第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加することとしてもよい。
この構成によれば、制御部は、データ更新時に、更新前のデータに変換処理を実行して記憶領域に格納し、ブロック対応関係に、更新前データの第2ブロックセットと、そのバージョンと、の対応関係を追加するので、更新前のデータを読み出すホストコンピュータの負荷を軽減することが可能となる。
上記ストレージシステムにおいて、前記制御部は、前記変換更新処理において、前記対象第1ブロックセットの更新後のデータから前記データ変換処理を実行せずに1以上の第2ブロックで構成される更新後未変換ブロックセットを生成するとともに、前記更新後未変換ブロックセットを前記記憶領域に格納し、さらに、前記ホストコンピュータからバージョン指定無しのデータ読み出し要求を受けたときには、前記更新後未変換ブロックセットを読み出して、前記要求された第1ブロックのデータを前記ホストコンピュータに送信することとしてもよい。
この構成によれば、制御部は、更新後のデータを変換処理を実行せずに記憶領域に格納し、バージョンを特定しない読み出し要求に対しては、更新後のデータを読み出して送信するので、最新データの読み出しの処理速度が低下することを抑制できる。
上記ストレージシステムにおいて、前記記憶領域は、論理的な格納位置が同一の第1ブロックに対応付けられているとともにバージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と前記第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、前記制御部は、前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、ログ更新処理を実行し、前記ログ更新処理において、前記制御部は、前記要求された第1ブロックで構成される更新対象第1ブロックセットの更新後のデータに前記データ変換処理を実行して更新後第2ブロックセットを生成するとともに、前記更新後第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記更新対象第1ブロックセットと、前記更新後第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加し、
前記制御部は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行し、前記バージョン読み出し処理において、前記制御部は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信することとしてもよい。
この構成によれば、制御部は、ホストコンピュータからの特定のバージョンのデータ読み出し要求に応じて、要求されたバージョンの第2ブロックセットを読み出して逆変換処理を実行し、要求されたデータを送信するので、バージョンを特定したデータの読み出しを行うホストコンピュータの負荷を軽減することが可能となる。
上記各ストレージシステムにおいて、前記第1ブロックセットのブロック数Nは可変値であってもよい。
この構成によれば、より柔軟なデータの管理を行うことができる。
上記各ストレージシステムにおいて、前記第2ブロックのデータサイズが、前記第1ブロックのデータサイズよりも小さいこととしてもよい。
この構成によれば、データ変換処理によってデータの大きさが変化した場合に、データの格納に用いられる記憶領域が過剰に大きくなることを抑制することが可能となる。
なお、本発明は、種々の形態で実現することが可能であり、例えば、記憶領域の提供方法および装置、それらの方法または装置の機能を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態で実現することができる。
次に、本発明の実施の形態を実施例に基づいて以下の順序で説明する。
A.第1実施例:
B.第2実施例:
C.第3実施例:
D.変形例:
A.第1実施例:
A1.装置の構成:
図1は、本発明の一実施例としてのストレージシステムの構成を示す説明図である。このストレージシステム200は、ホストインターフェイス210と、管理インターフェイス220と、ディスクインターフェイス230と、各インターフェイス210、220、230に接続されたディスクアレイ制御部300と、ディスクインターフェイス230に接続されたディスクアレイ250と、を有している。ディスクアレイ250は、複数のディスク装置を有している。
ホストインターフェイス210には、ホスト計算機110が接続される。このホスト計算機110は、ストレージシステム200によって提供されるデータ記憶領域を利用しつつ、所定の機能を実現する。ホスト計算機110の機能としては、例えば、データファイルをクライアント装置(図示せず)に提供するファイルサーバとしての機能や、種々のデータを管理するデータベースサーバとしての機能がある。
管理インターフェイス220には、管理端末120が接続される。ストレージシステム200の管理者(オペレータ)は、この管理端末120を操作することによって、ストレージシステム200の動作の設定を行うことができる。
ディスクアレイ制御部300は、CPU310と、データ圧縮回路320と、データ伸長回路330と、メモリ部340と、を有している。これらの各構成要素はバス390を介して互いに接続されている。また、メモリ部340は、キャッシュメモリ342と、ローカルメモリ344と、を有している。キャッシュメモリ342は、ディスクアレイ250とホスト計算機110との間で転送されるデータを一時的に記憶する。また、ローカルメモリ344は、CPU310が種々のデータ処理(詳細は後述)を実行する際に用いるデータとプログラムとを記憶する。
図2は、ローカルメモリ344の内部構成を示す概略図である。ローカルメモリ344は、圧縮LBA管理テーブル500と、論理ボリューム管理テーブル510と、ボリューム状態管理テーブル520と、データ中継モジュール600と、を有している。データ中継モジュール600は、ホスト計算機110とディスクアレイ250との間のデータ転送を中継する機能を有している(詳細は後述)。データ中継モジュール600の機能は、CPU310(図1)が実行するコンピュータプログラムによって実現されている。
また、データ中継モジュール600は、ディスクアレイ250を用いたRAID(Redundant Array of Inexpensive Disks)システムを構成する。図2の例では、データ中継モジュール600は、RAIDシステムを構成することによって、5つの論理ボリュームLDEV0〜LDEV4を形成している。
ここで、論理ボリュームとは、複数の論理ブロックを含むデータの記憶領域である。論理ブロックとは、論理ボリュームを対象とするデータ転送の最小単位である。第1実施例では、各論理ボリュームLDEV0〜LDEV4の論理ブロックのデータサイズは同一である。1つの論理ボリューム内の論理ブロックは、各論理ブロック毎に固有な論理ブロックアドレス(以下「LBA」とも呼ぶ)によって識別される。第1実施例では、LBAとして、「0」から始まる通し番号が用いられる。データ中継モジュール600は、LBAを用いてアクセス対象の論理ブロックを特定する。以下、論理ボリュームのことを、「論理デバイス」、あるいは、単に「ボリューム」とも呼ぶ。また、論理ブロックのことを、単に「ブロック」とも呼ぶ。また、データ中継モジュール600は、各論理ボリュームを識別するために、各論理ボリューム(論理デバイス)に固有な番号(以下「LDEVN」とも呼ぶ)を割り当てる。図2の例では、5つの論理ボリュームに0〜4までの番号を割り当てている。
さらに、データ中継モジュール600は、論理ボリュームを選択的にホスト計算機110に利用させる。図2の例では、データ中継モジュール600は、2つの論理ボリュームLDEV0、LDEV4をホスト計算機110に提供している。このように、ホスト計算機110が利用可能な論理ボリュームのことを「論理ユニット」と呼ぶ。データ中継モジュール600は、論理ユニットに、各論理ユニット毎に固有な論理ユニット番号(以下「LUN」とも呼ぶ)を割り当てる。図2の例では、第0論理ボリュームLDEV0に「0番」を割り当て、第4論理ボリュームLDEV4に「1番」を割り当てている。このようなLUNとLDEVNとの対応関係は、論理ボリューム管理テーブル510に格納されている。
第1実施例では、ホスト計算機110とデータ中継モジュール600との間のデータ転送の最小単位は論理ブロックであり、データ中継モジュール600と論理ボリュームとの間のデータ転送の最小単位(論理ブロック)と同じである。ホスト計算機110は、LUNとLBAとを指定することによって、論理ユニットに対するデータ転送の要求を行う。データ中継モジュール600は、ホスト計算機110からの要求に応じて、論理ボリュームを対象とするデータ転送を中継する。ただし、後述するように、第1実施例では、複数の論理ブロックに格納されるべきデータが、まとめて圧縮され、より少ない数の論理ブロックに格納される。従って、ホスト計算機110によって指定されたLBAと、データ転送に用いられる実際の論理ブロックのLBAとは、異なっている場合がある。このような指定されたLBAと実際のLBAとの対応関係は、圧縮LBA管理テーブル500に格納されている(詳細は後述)。以下、ホスト計算機110によって指定されたLBAを「指定LBA」とも呼ぶ。
A2.圧縮処理:
図3は、管理端末120に表示される設定画面の一例を示す説明図である。この設定画面は、論理ボリュームの圧縮マイグレーションを行うための設定画面である。圧縮マイグレーションとは、論理ボリュームに格納されたデータを圧縮して格納し直す処理を意味している。第1実施例では、1つの論理ボリューム全体のデータを、圧縮させつつ他の論理ボリュームに移行させることとしている。オペレータは、図3に示す設定画面を操作することによって、処理対象(移行元)の論理ボリュームと、処理内容と、処理のアルゴリズムと、を選択することができる。図3の例では、「第0論理ボリュームLDEV0」が選択されている。また、移行時の処理として「圧縮」が選択され、圧縮処理のアルゴリズムとして「LHA」が選択されている。移行時の処理としては、圧縮以外にも「暗号化」を選択することが可能である(後述)。圧縮処理のアルゴリズムとしては、LHA以外にもZIPを選択することが可能である。オペレータが、「OKボタン」を操作すると、ディスクアレイ制御部300(図1)は、圧縮マイグレーション処理を開始する。なお、移行先の論理ボリュームについては、データ中継モジュール600が、空いている論理ボリュームの中から自動的に選択する。図3の例では、第1論理ボリュームLDEV1が選択されている。ただし、オペレータが選択できることとしてもよい。
図4は、圧縮マイグレーション処理の概要を示す説明図である。図4には、第0論理ボリュームLDEV0と第1論理ボリュームLDEV1とが示されている。各論理ボリュームLDEV0、LDEV1は、同数の論理ブロックLBを有している。
第0論理ボリュームLDEV0は、非圧縮領域A1と、圧縮領域A2と、に区分されている。この区分は予め設定されたものである。また、各論理ブロックと各領域との対応関係は、ローカルメモリ344に予め格納されている。例えば、論理ボリュームにファイルシステムを構築すると、論理ボリュームが、データファイルを格納するデータ領域と、データファイルを管理する情報(例えば、ファイル名とLBAとの対応関係)を格納する管理領域と、に区分される場合がある。このような場合には、管理領域が非圧縮領域A1に設定され、データ領域が圧縮領域A2に設定される。一般には、非圧縮領域A1として、アクセス頻度が比較的高いデータを格納する部分領域を採用し、圧縮領域A2として、アクセス頻度が比較的低いデータを格納する部分領域を採用することが好ましい。また、論理ボリュームの全領域を圧縮領域として採用してもよい。なお、オペレータが、このような区分を設定することとしてもよい。
図5は、圧縮マイグレーション処理の手順を示すフローチャートである。データ中継モジュール600(図2)は、前(LBAの小さい方)から順番に圧縮単位でデータを移行させる。第1実施例では、圧縮単位は、LBAが連続する10個の論理ブロックで構成されるブロックセットである。論理ボリュームLDEV0は、複数のブロックセットに区分されることとなる。
まず、非圧縮領域A1内のデータを移行する場合の手順について説明する。ステップS100では、データ中継モジュール600が、移行元論理ボリュームLDEV0内の1つのブロックセットからデータを読み出す。図4上側の例では、データ中継モジュール600が、非圧縮領域A1内の第1ブロックセットBS1からデータDBS1を読み出している。
次のステップS105では、データ中継モジュール600は、読み出し元のブロックセットが圧縮領域A2内であるか否かを判断する。図4上側の例では、第1ブロックセットBS1は非圧縮領域A1内である。従って、データ中継モジュール600は、ステップS140に移行する。ステップS140では、データ中継モジュール600は、読み出したデータをそのまま移行先論理ボリュームLDEV1に格納する。ここで、「そのまま格納する」とは、データの中身を変えずに格納するという意味である。この際、移行先の論理ブロックを、前(LBAの小さい方)から順番に選択する。図4の例では、データDBS1が第1ブロックセットBS11に格納されている。各ブロックセットBS1、BS11は、同数の論理ブロックを含んでいる。
次のステップS120では、データ中継モジュール600は、圧縮LBA管理テーブル500を更新する。図6(A)は、圧縮LBA管理テーブル500の一例を示す説明図である。圧縮LBA管理テーブル500は、圧縮前後、すなわち、移行前後のブロックセットのペアと、移行時に圧縮したか否かに関する情報と、の対応関係を格納している。図6(A)の例では、ブロックセットは、先頭LBAとサイズ(ブロック数)との組み合わせによって特定される。データ中継モジュール600は、移行前の第1ブロックセットBS1と移行後の第1ブロックセットBS11との対応関係を圧縮LBA管理テーブル500に格納する。図6(A)の例では、第1ブロックセットBS1については、先頭LBAが「0000」で、サイズが「10」である。また、移行後の第1ブロックセットBS11についても、先頭LBAが「0000」で、サイズが「10」である。
なお、圧縮LBA管理テーブル500に格納する情報としては、先頭LBAとサイズとの組み合わせに限らず、ブロックセットを特定可能な任意の情報を採用することが可能である。例えば、先頭LBAと終端LBAとの組み合わせを採用してもよい。
次のステップS125では、データ中継モジュール600は、全データの移行が終了したか否かを判定する。終了していない場合には、ステップS100に戻る。
次に、圧縮領域A2内のデータを移行する場合の手順について説明する。図4の下側の例では、データ中継モジュール600が、圧縮領域A2内の第5ブロックセットBS5からデータDBS5を読み出している(ステップS100)。
ステップS100が終了したら、データ中継モジュール600は、ステップS105に移行する。第5ブロックセットBS5は圧縮領域A2内であるので、ステップS110に移行する。
ステップS110では、データ中継モジュール600は、データ圧縮回路320(図1)に、読み出したデータを圧縮させる。この際、図3の設定画面で指定されたアルゴリズムが使用される。図4の例では、データ圧縮回路320は、データDBS5を圧縮することによって、データDBS15cを生成している。この圧縮後のデータDBS15cのサイズは、5ブロックである。
次のステップS115では、データ中継モジュール600は、圧縮後のデータを移行先論理ボリュームLDEV1に格納する。この際、移行先のブロックを、前(LBAの小さい方)から順番に選択する。図4の例では、データDBS15cが第5ブロックセットBS15cに格納されている。この第5ブロックセットBS15cのサイズは、5ブロックである。
次のステップS120では、データ中継モジュール600は、移行前後のブロックセットBS5、BS15cの対応関係を圧縮LBA管理テーブル500に格納する。図6(A)の例では、移行前の第5ブロックセットBS5については、先頭LBAが「7990」で、サイズが「10」である。移行後の第5ブロックセットBS15cについては、先頭LBAが「5808」で、サイズが「5」である。
他のブロックセットについても、同様に移行処理が実行される。図4の例では、第2ブロックセットBS2は、第2ブロックセットBS12に移行し、第3ブロックセットBS3は、圧縮された後に、第3ブロックセットBS13cに移行し、第4ブロックセットは、圧縮された後に、第4ブロックセットBS14cに移行する。なお、図5の例では、ステップS100からステップS125へ至る一連の処理が、1つのブロックセット毎に実行されていたが、複数のブロックセット毎に実行することとしてもよい。
こうして全データの移行か終了したら、次のステップS130で、データ中継モジュール600は、ボリューム状態管理テーブル520を更新する。図6(B)は、ボリューム状態管理テーブル520の一例を示す説明図である。ボリューム状態管理テーブル520は、LDEVNと、圧縮の有無と、暗号化の有無と、アルゴリズムと、の対応関係を格納している。データ中継モジュール600は、移行先論理ボリュームLDEV1に関する情報として、「圧縮:有効」、「暗号化:無効」、「アルゴリズム:LHA」を格納する。
次のステップS135では、データ中継モジュール600は、論理ボリューム管理テーブル510を更新する。図6(C)は、論理ボリューム管理テーブル510の一例を示す説明図である。データ中継モジュール600は、第0論理ユニットLU0に対応するLDEVNを「0」から「1」へ変更する。
以上の処理が終了したら、ディスクアレイ制御部300は、圧縮マイグレーション処理を終了する。この結果、移行先論理ボリュームLDEV1には、非圧縮領域A11と、圧縮領域A12と、空き領域A13と、が形成されることとなる。
A3.読み出し処理:
図7は、ストレージシステム200に対するデータ読み出し処理の手順を示すフローチャートである。上述したように、ホスト計算機110は、ストレージシステム200に対して、LUNとLBAとを指定して、データの読み出し要求を行う。以下、第1論理ボリュームLDEV1(LUN=0)が指定されたものとして説明を行う。
図8は、読み出し処理の概要を示す説明図である。図8の上側には、非圧縮領域A11からデータを読み出す場合が示され、下側には、圧縮領域A12からデータを読み出す場合が示されている。
まず、非圧縮領域A11内のデータを読み出す場合の手順について説明する。ステップS200(図7)では、データ中継モジュール600が、指定された論理ブロックを含む移行前ブロックセットと、移行後ブロックセットと、の組み合わせを、圧縮LBA管理テーブル500(図6(A))から検索する。図8の上側の例では、指定LBAが「0005」から「0009」までである。この場合には、第1ブロックセットBS1と第1ブロックセットBS11との組み合わせを検出する。
次のステップS205では、データ中継モジュール600は、検出したブロックセットが圧縮処理の対象であるか否かを判定する。この判定は、圧縮LBA管理テーブル500を参照することによって行われる。図8の上側の例では「No」と判定する。
次のステップS240では、データ中継モジュール600は、第1論理ボリュームLDEV1内の、ステップS200で検出した移行後ブロックセットからデータを読み出す。図8の上側の例では、第1ブロックセットBS11からデータDBS1を読み出す。
次のステップS230では、データ中継モジュール600は、読み出したデータの中から、指定LBAに対応付けられたデータを取得して、ホスト計算機110に転送する。図8の上側の例では、データDBS1に含まれる10ブロック分のデータの中の、5番目から9番目までが、それぞれ、「LBA=0005」から「LBA=0009」までの各論理ブロックのデータとなる。
次のステップS235では、データ中継モジュール600は、指定LBAの全てについてデータ転送が終了したか否かを判定する。終了していない場合には、ステップS200に戻り、データ転送の終了していない指定LBAについて、ステップS200からステップS230へ至る一連の処理を繰り返し実行する。これらの一連の処理は1つのブロックセット毎に実行される。ただし、複数のブロックセット毎に実行してもよい。
次に、圧縮領域A12(図8)内のデータを読み出す場合の手順について説明する。図8の下側には、指定LBAが「7990」から「7994」までである場合が示されている。この場合には、データ中継モジュール600は、ステップS200で、第5ブロックセットBS5と第5ブロックセットBS15cとの組み合わせを検出する(図6(A))。
ステップS200が終了したら、データ中継モジュール600は、次のステップS205に移行する。図8の下側の例では「Yes」と判定する。
次のステップS210では、データ中継モジュール600は、ステップS200で検出した移行後ブロックセットからデータを読み出す。図8の下側の例では、第5ブロックセットBS5に対応付けられた第5ブロックセットBS15cからデータDBS15cを読み出す。
なお、指定LBAを含む移行前の第5ブロックセットBS5が、本発明における「第1ブロックセット」に相当する。また、移行後の第5ブロックセットBS15cが、本発明における「第2ブロックセット」に相当する。また、LUNと圧縮前の先頭LBAと圧縮前のサイズとの全体が、本発明における「第1ブロックセットの論理的な格納位置」を示す情報に相当する。また、LDEVNと圧縮後の先頭LBAと圧縮後のサイズとの全体が、本発明における「第2ブロックセットの物理的な格納位置」を示す情報に相当する。
次のステップS225では、データ中継モジュール600は、データ伸長回路330(図1)に、読み出したデータを伸長させる。この伸長処理は、データ圧縮回路320が実行した圧縮処理の逆変換処理である。データ伸長回路330は、ボリューム状態管理テーブル520(図6(B))を参照することによって、適切なアルゴリズムの伸長処理を選択する。図8の下側の例では、データ伸長回路330は、データDBS15cを伸長することによって、データDBS5を生成する。
次のステップS230では、データ中継モジュール600は、生成されたデータの中から、指定LBAに対応付けられたデータを取得して、ホスト計算機110に転送する。図8の下側の例では、データDBS5に含まれる10ブロック分のデータの中の、0番目から4番目までのデータが、それぞれ、「LBA=7990」から「LBA=7994」までの各ブロックのデータとなる。
こうして全指定LBAのデータ転送が終了したら、ディスクアレイ制御部300は、データ読み出し処理を終了する。
以上説明した読み出し処理では、ストレージシステム200は、圧縮LBA管理テーブル500を有し、さらに、データ中継モジュール600は、この圧縮LBA管理テーブル500を参照することによってデータを読み出して伸長し、ホスト計算機110に要求された論理ブロックのデータを転送する。従って、ストレージシステム200がデータを圧縮して格納する場合であっても、ホスト計算機110は、伸長処理や圧縮データの管理を行うことなく、圧縮前のLBAを指定することによってデータの読み出しを行うことが可能となる。
A4.書き込み処理:
図9は、ストレージシステム200に対するデータ書き込み処理の手順を示すフローチャートである。読み出し処理と同様に、ホスト計算機110は、ストレージシステム200に対して、LUNとLBAとを指定して、データの書き込み要求を行う。以下、第1論理ボリュームLDEV1(LUN=0)が指定されたものとして説明を行う。
図10は、書き込み処理の概要を示す説明図である。図10は、圧縮領域A12内にデータを書き込む場合の処理の概要を示している。まず、ステップS300(図9)では、データ中継モジュール600は、指定LBAが、1つの圧縮単位(ブロックセット)の全ての論理ブロックを含むか否かを判定する。この判定は、圧縮LBA管理テーブル500(図6(A))を参照することによって行われる。図10には、指定LBAが「7990」から「7995」までの場合が示されている。指定されたブロックは、第5ブロックセットBS5の一部の(6つの)論理ブロックのみである。従って、この場合には、データ中継モジュール600は「No」と判定する。
なお、指定LBAが複数の圧縮単位(ブロックセット)のブロックを含む場合がある。このような場合には、データ中継モジュール600は、各ブロックセット毎に、ステップS300に続く一連の処理(後述)を実行する。
次のステップS305では、データ中継モジュール600が、圧縮LBA管理テーブル500(図6(A))を参照することによって、指定された論理ブロックを含む移行前ブロックセットと、移行後ブロックセットと、の組み合わせを検索する。この処理は、図7のステップS200の処理と同じである。図10の例では、第5ブロックセットBS5と第5ブロックセットBS15cとの組み合わせを検出する。
次のステップS310では、データ中継モジュール600は、ステップS305で検出した移行後ブロックセットからデータを読み出す。図10の例では、第5ブロックセットBS15cからデータDBS15cを読み出す。
次のステップS315では、データ中継モジュール600は、データ伸長回路330(図1)に、読み出したデータを伸長させる。この処理は、図7のステップS225と同じである。図10の例では、データ伸長回路330は、データDBS15cを伸長することによって、データDBS5を生成する。こうして生成されたデータは、更新対象のブロックセットの更新前のデータとして利用される。
次のステップS320では、データ中継モジュール600は、更新前のデータに、ホスト計算機110に書き込み要求されたデータを上書きすることによって、圧縮単位の書き込みデータを生成する。図10の例では、データ中継モジュール600は、更新前データDBS5の0番目から5番目のブロックのデータを、ホスト計算機110から受け取った更新データDULBに置き換えることによって、更新後データDBS5uを生成する。
次のステップS325では、データ中継モジュール600は、データ圧縮回路320(図1)に、更新後データを圧縮させる。この処理は、図5のステップS110の処理と同じである。図10の例では、データ圧縮回路320は、更新後データDBS5uを圧縮することによって圧縮後データDBS15ucを生成している。この新たな圧縮後データDBS15ucのサイズは、6ブロックである。
なお、1つの圧縮単位(ブロックセット)の全ての論理ブロックのデータを更新する場合には、ステップS305からS320の処理が省略される。そして、書き込み要求された1ブロックセット分のデータが、更新後データとして圧縮される。
次のステップS330では、データ中継モジュール600は、圧縮後データを第1論理ボリュームLDEV1の空き領域A13に格納する。この際、格納先の論理ブロックを、前(LBAの小さい方)から順番に選択する。図10の例では、データDBS15ucが第5ブロックセットBS15ucに格納されている。
このステップS330では、データ中継モジュール600は、空き領域A13内の未使用領域から論理ブロックを選択する。空き領域A13内の使用済領域と未使用領域とを区別する方法としては、任意の方法を採用可能である。例えば、データ中継モジュール600が、使用済領域と未使用領域との境界を示すLBAをローカルメモリ344に格納し、さらに、このLBAの参照と更新とを適宜実行する方法を採用可能である。
次のステップS335では、データ中継モジュール600は、圧縮LBA管理テーブル500を更新する。図11は、更新後の圧縮LBA管理テーブル500の一例を示す説明図である。データ中継モジュール600は、第5ブロックセットBS5に対応付けられた移行後ブロックセットの情報を、古い第5ブロックセットBS15cから、新しい第5ブロックセットBS15ucのものに更新する。図11の例では、先頭LBAが「5813」で、サイズが「6」である。以後、データ中継モジュール600は、第5ブロックセットBS5に対する読み出し要求を受けると、新しい第5ブロックセットBS15ucからデータを読み出す。古い第5ブロックセットBS15cのデータは、以後、使用されない。
次のステップS340では、データ中継モジュール600は、指定LBAの全てについて書き込みが終了したか否かを判定する。終了していない場合には、ステップ300に戻り、書き込みの終了していない指定LBAについて、ステップS300からステップS335へ至る一連の処理を繰り返し実行する。これらの一連の処理は1つのブロックセット毎に実行される。ただし、複数のブロックセット毎に実行してもよい。
こうして全指定LBAのデータの書き込みが終了したら、次のステップS345で、データ中継モジュール600は、ホスト計算機110にデータ書き込み終了の通知を送信する。
以上説明した書き込み処理では、データ中継モジュール600は、ホスト計算機110からデータ書き込み要求を受けると、データを圧縮して格納し、さらに、圧縮前後(移行前後)のブロックセットの新たな対応関係を圧縮LBA管理テーブル500に格納する。従って、ストレージシステム200がデータを圧縮して格納する場合であっても、ホスト計算機110は、圧縮処理や圧縮データの管理を行うことなく、圧縮前のLBAを指定することによってデータの書き込みを行うことが可能となる。
また、指定LBAを含む移行前ブロックセットの全てのブロックの更新が要求されていない場合であっても、データ中継モジュール600は、ブロックセットの更新前のデータに、要求されたデータを上書きすることによって、ブロックセットを単位とする圧縮処理を実行する。その結果、圧縮後のデータの管理が過剰に複雑化することを防止できる。
なお、更新後の圧縮後データを、更新前の圧縮後データを格納する論理ボリュームとは異なる論理ボリュームに格納することとしてもよい。こうすれば、空き領域A13よりも大きな記憶領域を有する論理ボリュームに更新後のデータを書き込むことが可能となるので、大量のデータ更新にも対応することが可能となる。この場合には、圧縮LBA管理テーブル500(図6(A))に、圧縮前後(移行前後)のブロックセットの対応関係に加えて、移行後のブロックセットを含むLDEVNを格納すればよい。
また、更新後の圧縮データが、更新前の圧縮データよりも小さい場合には、更新前の圧縮データを格納していた論理ブロックに、更新後の圧縮データを格納することとしてもよい。こうすれば、論理ブロックの利用効率の向上を図ることが可能となる。
A5.圧縮解除処理:
図12は、圧縮解除処理の手順を示すフローチャートである。圧縮解除処理とは、論理ボリュームに格納された圧縮データを伸長して格納し直す処理を意味している。第1実施例では、論理ボリューム1つ分のデータを、伸長させつつ他の論理ボリュームに移行させることとしている。圧縮解除処理は、管理端末120(図1)からの指示に従って、ディスクアレイ制御部300が実行する。以下、第1論理ボリュームLDEV1を第2論理ボリュームLDEV2に移行させることとして説明を行う。なお、伸長先(移行先)の論理ボリュームについては、データ中継モジュール600が、空いている論理ボリュームの中から自動的に選択する。ただし、オペレータが選択できることとしてもよい。
ディスクアレイ制御部300は、図7に示す読み出し処理と同様に、ブロックセット毎にデータを読み出し、さらに、読み出したデータを適宜伸長する。ただし、図7の読み出し処理との差異は3点ある。1つ目の差異は、ホスト計算機110によって指定されたデータの代わりに、論理ボリューム1つ分のデータを読み出す点である。2つ目の差異は、読み出したデータをホスト計算機110へ転送する処理(図7:ステップS230)の代わりに、伸長先(移行先)の論理ボリュームに書き込む処理(ステップS250)を実行している点である。3つ目の差異は、移行が完了した後に、ボリューム状態管理テーブル520(図6(B))と論理ボリューム管理テーブル510(図6(C))とを更新する点である(ステップS260、S265)。
ステップS200からステップS250へ至る処理は、図7の読み出し処理と同じである。
ステップS250では、データ中継モジュール600は、読み出したデータを、伸長先(移行先)の論理ボリュームに格納する。第1実施例では、データ中継モジュール600は、伸長先の論理ブロックのLBAと、圧縮前の論理ブロックのLBAと、が一致するように、伸長先の論理ブロックを選択する。
次のステップS255では、データ中継モジュール600は、圧縮前LBAの全てについてのデータ移行が終了したか否かを判定する。終了していない場合には、ステップS200に戻り、データ移行の終了していないブロックセットについて、ステップS200からステップS250へ至る一連の処理を繰り返し実行する。これらの一連の処理は1つのブロックセット毎に実行される。ただし、複数のブロックセット毎に実行してもよい。
データ移行が終了したら、次のステップS260で、データ中継モジュール600は、ボリューム状態管理テーブル520(図6(B))における、伸長先の論理ボリュームに関する情報を更新する。例えば、伸長先の第2論理ボリュームLDEV2に関して、「圧縮:無効」、「暗号化:無効」、「アルゴリズム:無し」に設定する。
次のステップS265では、データ中継モジュール600は、論理ボリューム管理テーブル510におけるLDEVNを切り替える。例えば、データ中継モジュール600は、第0論理ユニットLU0に対応するLDEVNを「1」から「2」へ変更する。なお、LDEVNの切り替えは、管理端末120からの指示に従ったタイミングで行うこととしてもよい。
以後、データ中継モジュール600は、第0論理ユニットLU0を対象とするデータ転送要求(例えば、読み出し要求や、書き込み要求)を受けると、新しい第2論理ボリュームLDEV2を対象とするデータ転送を行う。この際、論理ボリュームに対するLBAとしては、指定LBA(圧縮前のLBA)をそのまま用いる。
以上説明した圧縮解除処理では、ディスクアレイ制御部300は、ホスト計算機110に負荷をかけることなく、データの伸長を行う。さらに、データ中継モジュール600は、圧縮前LBAと伸長先のLBAとが一致するように、伸長後のデータを格納する論理ブロックを選択する。従って、ストレージシステム200が圧縮を解除する場合であっても、ホスト計算機110は、伸長処理や伸長データの管理を行うことなく、圧縮前のLBAを指定することによってデータ転送要求を行うことが可能である。
なお、伸長先の論理ブロックのLBAと、圧縮前の論理ブロックのLBAとは、一致していなくてもよい。この場合には、ストレージシステム200に、圧縮前のLBAと伸長後のLBAとの対応関係を格納しておくことが好ましい。こうすれば、データ中継モジュール600は、データ転送要求を受けた場合には、このような対応関係を参照することによって、適切なデータ転送を行うことができる。
以上説明した第1実施例によれば、ディスクアレイ制御部300(図1)は、ホスト計算機110から独立して圧縮マイグレーション処理を実行するので、ホスト計算機110に負荷をかけずに記憶領域の節約を図ることが可能となる。
また、第1実施例では、論理ボリュームのデータが、複数のブロックセットに分割して圧縮される。従って、論理ボリューム全体を1つのデータとして圧縮する場合と比べて、論理ボリュームの部分領域を対象とするデータ転送処理の速度が過剰に遅くなることを防止できる。
さらに、第1実施例では、ストレージシステム200は、圧縮前後のブロックセットの対応関係に関する管理データ(圧縮LBA管理テーブル500と、論理ボリューム管理テーブル510と、ボリューム状態管理テーブル520)を格納するとともに、データの圧縮と伸長と、管理データの更新とを、ホスト計算機110から独立して実行する。従って、ホスト計算機110に負荷をかけずに、データの圧縮と伸長とを実行することができる。
特に、第1実施例では、ストレージシステム200は、ホスト計算機110に指定させるためのLBA(圧縮前LBA)と、実際のLBA(圧縮後LBA)と、の対応関係を格納する圧縮LBA管理テーブル500を有している。その結果、ディスクアレイ制御部300は、ホスト計算機110からは、データの圧縮状況(圧縮の有無や、データを格納するブロックのLBAの変更)に拘わらずに一貫して、圧縮前LBAを指定するデータ転送要求を受けることが可能である。換言すれば、ディスクアレイ制御部300は、データの圧縮状況を、ホスト計算機110から隠すことが可能である。従って、ホスト計算機110は、データの圧縮状況の管理をすることなく、所定の圧縮前LBAを用いたデータ転送を要求することができる。
また、複数のホスト計算機でストレージシステム200に格納されたデータを共有する場合であっても、各ホスト計算機は、データの圧縮状況に拘わらずに、共通の圧縮前LBAを用いてデータ転送要求を行うことができる。このように、第1実施例のストレージシステム200は、データの圧縮状況に拘わらずに、ホスト計算機を限定せずに記憶領域を提供することが可能である。以下、ホスト計算機を限定せずに動作可能なことを「ホスト透過(Host Transparent)」とも呼ぶ。
なお、第1実施例では、圧縮LBA管理テーブル500と論理ボリューム管理テーブル510との全体が、本発明における「ブロック対応関係」に相当する。
B.第2実施例:
図13は、第2実施例におけるストレージシステム200bの構成を示す説明図である。図1に示すストレージシステム200との差異は、データ中継モジュール600bが、データの更新履歴を保存するとともに、その更新履歴を世代管理する点である。また、ローカルメモリ344bは、圧縮LBA管理テーブル500の代わりに、更新状態管理テーブル530と、世代・圧縮管理テーブル540と、を格納している。これらのテーブル530、540は、世代管理に用いられる。他の構成は、図1、図2のストレージシステム200と同じである。なお、図13では、ストレージシステム200bの構成要素として、ディスクアレイ制御部300bのローカルメモリ344bのみが示されており、他の構成要素は図示が省略されている。
第2実施例では、第0論理ユニットLU0と第0論理ボリュームLDEV0とが対応付けられている(図13:論理ボリューム管理テーブル510)。また、第0論理ボリュームLDEV0のデータは、圧縮されていない。そこで、データ中継モジュール600bは、第0論理ボリュームLDEV0に対するLBAとしては、指定LBAをそのまま用いる。
また、データ中継モジュール600bは、第0論理ボリュームLDEV0におけるデータの更新履歴を保存し、さらに、その更新履歴を世代管理する。これは、最新のデータに加えて、過去のある時点における第0論理ボリュームLDEV0のデータを、ホスト計算機110に提供するためである。このような、過去のある時点におけるデータのバックアップは「時点コピー(Point In Time Copy)」や「スナップショット(Snapshot)(商標)」とも呼ばれている。
データ中継モジュール600bは、ホスト計算機110や管理端末120から「時点コピー」を作成するように指示を受ける。すると、データ中継モジュール600bは、指示を受けた時点(以下「指示時点」と呼ぶ)での任意の論理ブロックのデータを後で提供できるように、バックアップデータを保存する。この際、バックアップデータとして、指示時点以降に更新された部分領域のみの更新前データを保存する。このような、更新(変更)部分のみをコピーする処理は「コピー・オン・ライト(Copy On Write)」とも呼ばれている。なお、データ中継モジュール600bは、バックアップデータを、元の第0論理ボリュームLDEV0とは異なる第1論理ボリュームLDEV1に格納する。この際、バックアップデータを圧縮して格納する(詳細は後述)。
B1.書き込み処理(更新処理):
図14は、更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。これらのテーブル530、540は、図14の下側に示したステップS1からS7の手順に従ってデータの更新が行われた場合の例を示している。
更新状態管理テーブル530は、第0論理ボリュームLDEV0内のブロックセットと、退避情報の有無と、の対応関係を格納している。第2実施例では、データ中継モジュール600bは、第0論理ボリュームLDEV0を複数のブロックセットに区分する。さらに、このブロックセットを処理単位として、更新履歴の保存と世代管理とを行う。図14の例では、処理単位は、LBAが連続する100(16進法)個の論理ブロックで構成されるブロックセットである。更新状態管理テーブル530では、ブロックセットが、開始LBAと終端LBAとの組み合わせによって特定されている。図14には、4つのブロックセットBS100〜BS130の例が示されている。一方、退避情報としては、更新前データの退避状況を表す情報(詳細は後述)を参照するポインタが用いられる。データが更新されていないブロックセットに対しては、ポインタは設定されない。
なお、LBAに付された符号「(h)」は、LBAが16進法で表されていることを意味している。以下、符号「(h)」が付されたLBAは「16進法」で表され、何も付されていないLBAは「10進法」で表されていることとする。
一方、世代・圧縮管理テーブル540は、更新前データの退避状況を格納している。具体的には、更新前データを格納するブロックセットと、その更新前データの世代番号と、他世代の更新前データの情報を参照するポインタと、の対応関係を格納している。他世代の情報を参照するポインタは、この世代・圧縮管理テーブル540の中の他の1つの対応関係を参照している。また、上述の更新状態管理テーブル530における「ポインタ」は、この世代・圧縮管理テーブル540の中の1つの対応関係を参照している。世代番号については後述する。
まず、最初のステップS1では、管理端末120がディスクアレイ制御部300bへ
時点コピーの作成指示を送信する。このような指示は、オペレータの操作によって送信される。また、ディスクアレイ制御部300b、あるいは、管理端末120が、予め設定されたタイミングで自発的に指示を行ってもよく、また、他の任意の条件に従って自発的に指示を行うこととしてもよい。
第2実施例では、ディスクアレイ制御部300bは、時点が異なる複数の時点コピーを作成可能である。時点コピーは、各時点コピー毎に固有な世代番号によって識別される。第2実施例では、世代番号として、「0」から始まる通し番号が用いられる。図14の例では、データ中継モジュール600bは、ステップS1で指示された時点コピーに「0番」を割り当てている。なお、世代(時点)は、本発明における「バージョン」に相当する。
次のステップS2では、ホスト計算機110が、ストレージシステム200bに対して、データの書き込み要求を行う。ここで、指定LBAは「00000〜00050(h)」であることとしている。
図15は、データ書き込み処理の手順を示すフローチャートである。最初のステップS400では、データ中継モジュール600bは、データ退避の要否を判定する。指定LBAを含むブロックセット(以下「指定ブロックセット」とも呼ぶ)に対する書き込みが、最新の指示時点以降の最初の書き込みである場合、すなわち、指定ブロックセットのデータが最新の指示時点以降に1度も退避されていない場合には、「退避要」と判定する。指定ブロックセットのデータが最新の指示時点以降に既に退避されている場合には、「退避不要」と判定する。ステップS2(図14)の書き込み処理では、「退避要」と判定する。
なお、指定LBAが複数の処理単位(ブロックセット)のブロックを含む場合がある。このような場合には、データ中継モジュール600bは、各ブロックセット毎に、ステップS400に続く一連の処理(後述)を実行する。
次のステップS405(図15)では、データ中継モジュール600bは、第0論理ボリュームLDEV0内の指定ブロックセットからデータを読み出す。図16は、ステップS2における書き込み処理の概要を示す説明図である。図16の例では、データ中継モジュール600bは、指定LBAを含む第1ブロックセットBS100からデータDBS200を読み出す。ここで読み出されたデータは、指定ブロックセットの更新前のデータである。なお、図16では、1つの四角記号SQが1つのブロックを示しているものではなく、四角記号SQの数は、ブロックの数の概要を示している。
次のステップS410(図15)では、データ中継モジュール600bは、データ圧縮回路320(図1)に、読み出した更新前データを圧縮させる。図16の例では、データ圧縮回路320は、更新前データDBS200を圧縮することによって、圧縮後の更新前データDBS200cを生成している。この圧縮後データDBS200cのブロック数は、圧縮前データDBS200のブロック数よりも少ない。
次のステップS415では、データ中継モジュール600bは、圧縮後の更新前データを第1論理ボリュームLDEV1に格納する。図16の例では、圧縮後の更新前データDBS200cが第1ブロックセットBS200cに格納されている。
次のステップS420では、データ中継モジュール600bは、世代・圧縮管理テーブル540に、更新前データを格納するブロックセットの情報を追加する。図17は、ステップS2(図14)の書き込み処理における更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。世代・圧縮管理テーブル540には第1ブロックセットBS200cに関する情報が追加されている。世代が「0」であり、さらに、開始LBAが「00000」で、終端LBAが「00050」で、他世代情報が「無し」である。「世代」が「0」であるのは、更新前データDBS200cが、第0世代のデータであるからである。
次のステップS425では、データ中継モジュール600bは、更新状態管理テーブル530の退避情報を更新する。図17の例では、第1ブロックセットBS100の退避情報にポインタが追加される。このポインタは、世代・圧縮管理テーブル540の第1ブロックセットBS200cに関する情報を参照するデータである。
次のステップS430では、データ中継モジュール600bは、指定LBAの全てについて、データの退避処理が終了したか否かを判定する。終了していない場合には、ステップS400に戻り、終了していない指定LBAについて、ステップS400からステップS425へ至る処理を繰り返し実行する。なお、データ中継モジュール600bは、ステップS400で「退避不要」と判定したブロックセットについては、ステップS405からS425へ至る処理を省略し、データの退避を実行しない。
次のステップS435では、データ中継モジュール600bは、ホスト計算機110から要求されたデータを論理ボリュームに書き込む。この際、指定LBAをそのまま用いる。図16の例では、データ中継モジュール600bは、第0論理ボリュームLDEV0の指定LBA(00000〜00050)のブロックに、ホスト計算機110から受け取った新データDULB100を書き込む。なお、ステップS435の処理を、データ退避が完了した後のステップS430の前に実行してもよい。例えば、ブロックセットを退避するたびに、そのブロックセットへのデータの書き込みを実行してもよい。
こうして全指定LBAのデータの書き込みが終了したら、次のステップS440で、データ中継モジュール600bは、ホスト計算機110にデータの書き込み終了の通知を送信する。
以後、データ中継モジュール600bは、ホスト計算機110からの読み出し要求に対して、第0論理ボリュームLDEV0に格納された最新のデータを転送する。
一方、世代を指定した読み出し要求に対しては、データ中継モジュール600bは、更新状態管理テーブル530と世代・圧縮管理テーブル540とを参照することによって、指定された世代のデータを格納するブロックセットからデータを読み出し、要求されたデータを転送する。例えば、第0世代の第1ブロックセットBS100を指定した読み出し要求に対するデータ転送について説明する。データ中継モジュール600bは、まず、第0世代用のブロックセットBS200cから、圧縮後の更新前データDBS200cを読み出す。次に、データ伸長回路330(図1)に、読み出したデータを伸長させる。すると、データ伸長回路330は、圧縮前の更新前データDBS200を生成する。データ中継モジュール600bは、生成された更新前データDBS200を用いて、指定LBAのデータをホスト計算機110に転送する。指定された世代に関する情報が世代・圧縮管理テーブル540に無い場合には、第0論理ボリュームLDEV0に格納されたデータをそのまま転送する。
ステップS2(図14)が終了したら、次のステップS3では、管理端末120がディスクアレイ制御部300bへ、新たな時点コピーの作成指示を送信する。この時点コピーの世代番号は「1」となる。次のステップS4では、さらに、管理端末120がディスクアレイ制御部300bへ、新たな時点コピーの作成指示を送信する。この時点コピーの世代番号は「2」となる。
次のステップS5では、ホスト計算機110が、ストレージシステム200bに対して、データの書き込み要求を行う。ここで、指定LBAは「00000〜00040(h)」であり、指定ブロックセットは、上述のステップS1と同じ第1ブロックセットBS100であることとしている。
図18は、ステップS5における書き込み処理の概要を示す説明図である。書き込み処理の内容は、図16のステップS2と同様である。ただし、データ中継モジュール600bは、第1ブロックセットBS100の更新前データを、先の第1ブロックセットBS200cとは異なる空きの第2ブロックセットBS210cに格納する。なお、1つの四角記号SQは1つのブロックを示しているものではなく、四角記号SQの数は、ブロックの数の概要を示している。
具体的には、データ中継モジュール600bは、ステップS405(図15)で第1ブロックセットBS100の更新前データDBS210を読み出す。ステップS410では、データ圧縮回路320(図1)が、更新前データDBS210を圧縮することによって圧縮後の更新前データDBS210cを生成する。ステップS415では、データ中継モジュール600bは、圧縮後の更新前データDBS210cを第1論理ボリュームLDEV1の第2ブロックセットBS210cに格納する。ステップS435では、データ中継モジュール600bは、ホスト計算機110から受け取った新データDULB110を、第0論理ボリュームLDEV0の指定LBAのブロックに書き込む。その結果、2つのブロックセットBS200c、BS210cのそれぞれは、互いに世代が異なる第1ブロックセットBS100の過去のデータを格納することとなる。
図19は、ステップS5の書き込み処理における更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。図17に示す例との差異は、世代・圧縮管理テーブル540に、第2ブロックセットBS210cに関する情報が追加されている点である。第2ブロックセットBS210cに関しては、世代が「1、2」であり、さらに、開始LBAが「00051」で、終端LBAが「000BF」で、他世代情報が「無し」である。また、第1ブロックセットBS200cの他世代情報にポインタが追加されている。このポインタは、第2ブロックセットBS210cに関する情報を参照している。
次のステップS6(図14)では、ホスト計算機110が、ストレージシステム200bに対して、データの書き込み要求を行う。データ中継モジュール600bは、上述のステップS2、S5と同様に、図15のフローチャートに従って、書き込み処理を実行する。図14の例では、指定LBAは「00100〜00120(h)」であることとしている。世代・圧縮管理テーブル540には、更新前データを格納するブロックセットの情報が追加される(図14)。
B2.世代を指定した更新処理:
ステップS7では、ホスト計算機110が、ストレージシステム200bに対してデータの書き込み要求を行う。上述のステップS2、S5、S6との差異は、過去の世代を指定した書き込み要求を行っている点である。
図20は、過去の世代に対するデータの書き込み処理の手順を示すフローチャートである。図20の例では、指定ブロックセットに対する処理が、以下の3つのケースA〜Cに分けて実行される。なお、指定LBAが複数のブロックセットのブロックを含む場合には、各ブロックセット毎に場合分けがなされる。
ケースA:指定世代のデータが退避されていない場合:
ケースB:指定世代のデータが退避済みであり、
かつ、退避データは他世代との共有データではない:
ケースC:指定世代のデータが退避済みであり、
かつ、退避データは他世代との共有データである:
B3.ケースA:
図21は、ケースAにおける更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。図21には、図14のステップS7の後のテーブル530、540の内容の一部が示されている。
ステップS510(図20)では、データ中継モジュール600bは、ホスト計算機110から受け取った新データを用いて、指定ブロックセットの圧縮データを生成する。この際、図9のステップS300〜S325の手順と同様に、1つの指定ブロックセットの全ブロックのデータを取得する。データ中継モジュール600bは、全ブロックのデータを取得したら、データ圧縮回路320(図1)に圧縮させ、圧縮されたデータを第1論理ボリュームLDEV1に格納(退避)する。図21の例では、圧縮後のデータが、ブロックセットBS230cに格納されている。この際、元の第0論理ボリュームLDEV0のデータは更新されない。
次のステップS513では、データ中継モジュール600bは、世代・圧縮管理テーブル540に、新たな圧縮後データを格納する退避先ブロックセットBS230cの情報を追加する。図21の例では、世代が「2」であり、さらに、開始LBAが「000C0」で、終端LBAが「0012F」で、他世代情報が「無し」である。世代は、ホスト計算機110によって指定された世代に設定される。
次のステップS516では、データ中継モジュール600bは、更新状態管理テーブル530を更新する。具体的には、指定ブロックセットの退避情報にポインタを追加する。このポインタは、世代・圧縮管理テーブル540の退避先ブロックセットに関する情報を参照する。
以上の処理が終了したら、データ中継モジュール600bは、ケースAにおける過去の世代への書き込み処理を終了する。
B4.ケースB:
図22は、ケースBにおける更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。図22には、図14のステップS7の後に、さらに、ホスト計算機110が、ステップS7と同じ指定ブロックセットと指定世代とを対象とする書き込み要求を行った場合の一例が示されている。
ステップS520(図20)では、データ中継モジュール600bは、ホスト計算機110から受け取った新データを用いて指定世代のデータを生成し、指定世代データを第0論理ボリュームLDEV0に格納(退避)する。この処理は、上述のステップS510の処理と同様の処理である。ただし、指定ブロックセットの中の指定されていないブロックのデータは、第0論理ボリュームLDEV0の代わりに、第1論理ボリュームLDEV1の退避先ブロックセットから読み出される。この退避先ブロックセットは、指定世代に対応付けられたブロックセットである。データ中継モジュール600bは、このような退避先ブロックセットを、更新前の世代・圧縮管理テーブル540を参照することによって取得する。
また、データ中継モジュール600bは、新たな圧縮後の指定世代データを格納する論理ブロックを、第1論理ボリュームLDEV1の空いている論理ブロックから選択する。図22の例では、ブロックセットBS240cを選択している。ただし、新たな圧縮後の指定世代データが、古い(退避済みの)圧縮後の指定世代データと比べて小さい場合には、古い指定世代データを格納していた論理ブロックに、新たな指定世代データを格納することが好ましい。
次のステップS525では、データ中継モジュール600bは、世代・圧縮管理テーブル540を更新する。具体的には、退避先ブロックセットの情報を、新たな圧縮後データを格納するブロックセットのものに置き換える。図22の例では、開始LBAが「00310」に更新され、終端LBAが「003A5」に更新されている。
以上の処理が終了したら、データ中継モジュール600bは、ケースBにおける過去の世代への書き込み処理を終了する。
B5.ケースC:
図23は、ケースCにおける更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。図23には、図14のステップS7の後に、さらに、ホスト計算機110が、第1世代のLBA「00100(h)」を対象とする書き込み要求を行った場合の一例が示されている。図14のテーブル530、540に示すように、「00100(h)」を含むブロックセットBS110については、ブロックセットBS220cに、「0〜2」世代のデータが既に退避済みである。図23の例では、ホスト計算機110は、この中の第1世代のみについて、新たなデータの書き込みを要求している。
ステップS530(図20)では、データ中継モジュール600bは、ホスト計算機110から受け取った新データを用いて指定世代のデータを生成し、指定世代データを第0論理ボリュームLDEV0に格納(退避)する。この処理は、上述のステップS520の処理と同様の処理である。ただし、退避済みのブロックセットのデータを保存したまま、空いた論理ブロックに新たなデータを格納する。図23の例では、退避済みのブロックセットBS220cのデータを保存したまま、空いたブロックセットBS250cに新たな圧縮後のデータを格納する。
次のステップS535では、データ中継モジュール600bは、世代・圧縮管理テーブル540を更新する。具体的には、退避済みのブロックセットの情報から指定世代を削除し、新たな圧縮後データを格納する退避先ブロックセットの情報を追加する。図23の例では、ブロックセットBS220cの世代情報から指定世代「1」が削除され、さらに、新たなブロックセットBS250cの情報が追加されている。世代は指定世代と同じ「1」であり、開始LBAは「0051A」であり、終端LBAは「00590」である。また、退避済みのブロックセットの他世代情報にポインタが追加される。このポインタはブロックセットBS250cに関する情報を参照している。
以上の処理が終了したら、データ中継モジュール600bは、ケースCにおける過去の世代への書き込み処理を終了する。
以上説明した第2実施例では、ストレージシステム200bは、更新前データを退避しつつ、更新後のデータを格納するので、最新データと、指定時点でのデータと、を容易に提供することができる。また、ディスクアレイ制御部300b(図13)は、ホスト計算機110から独立して、このようなバックアップ処理を実行するので、ホスト計算機110に負荷をかけずにデータのバックアップを行うことができる。
また、第2実施例では、論理ボリュームのデータが複数のブロックセットに分割され、更新のあったブロックセットについてのみ、更新前データが退避される。その結果、論理ボリュームの全体の複製を保存する場合と比べて、記憶領域の節約を図ることが可能となる。また、更新前データは圧縮して格納されるので、さらに、記憶領域の節約を図ることができる。
また、第2実施例では、ストレージシステム200bは、データの圧縮(退避)前後の対応関係に関する管理データ(論理ボリューム管理テーブル510と、ボリューム状態管理テーブル520と、更新状態管理テーブル530と、世代・圧縮管理テーブル540)を格納するとともに、データの圧縮と伸長と、管理データの更新とを、ホスト計算機110から独立して実行する。従って、ホスト計算機110に負荷をかけずに、データの圧縮と伸長とを実行することができる。
特に、第2実施例では、更新状態管理テーブル530と世代・圧縮管理テーブル540との組み合わせによって、圧縮前後(退避前後)のブロックセットの対応関係が定められている。その結果、ディスクアレイ制御部300bは、ホスト計算機110からは、一貫して、圧縮(退避)前LBAを指定するデータ転送要求を受けることが可能である。また、複数のホスト計算機がデータを共有する場合であっても、ディスクアレイ制御部300bは、各ホスト計算機から、共通の圧縮(退避)前LBAを用いたデータ転送要求を受けることができる。すなわち、ストレージシステム200bは、「ホスト透過」である。
さらに、第2実施例では、ディスクアレイ制御部300bは、世代・圧縮管理テーブル540に、ブロックセットと世代との対応関係を格納する。従って、ディスクアレイ制御部300bは、ホスト計算機110から世代を指定したデータ転送要求を受けることができる。
また、第2実施例では、ストレージシステム200bは、最新データを圧縮せずに格納するので、最新データの読み出しの処理速度が低下することを抑制できる。
なお、第2実施例では、論理ボリューム管理テーブル510と、更新状態管理テーブル530と、世代・圧縮管理テーブル540と、の全体が、本発明における「ブロック対応関係」に相当する。
C.第3実施例:
図24は、第3実施例におけるストレージシステム200cの構成を示す説明図である。図1に示すストレージシステム200との際は、データ中継モジュール600cが、圧縮マイグレーション処理の後のデータの更新を、ログ方式で管理している点である。他の構成は、図1、図2に示すストレージシステム200と同じである。なお、図24では、ストレージシステム200cの構成要素として、ディスクアレイ制御部300cのローカルメモリ344cのみが示されており、他の構成要素は図示が省略されている。
データ中継モジュール600cは、圧縮マイグレーション処理を実行する。圧縮マイグレーション処理の内容は、図3〜図6に示す第1実施例と同じである。
C1.書き込み処理:
図25は、第3実施例における書き込み処理の概要を示す説明図である。この書き込み処理は、圧縮マイグレーションの後の処理である。ここでは、指定LBAが「7990〜7995」であることとしている。
データ中継モジュール600cは、ホスト計算機110から受け取った新データDULB300を、データ圧縮回路320(図1)に圧縮させる。データ圧縮回路320は、新データDULB300を圧縮することによって、圧縮後データDULB300cを生成する。
また、データ中継モジュール600cは、圧縮後(更新後)データDULB300cに関するログ情報DLOG300を生成する。このログ情報DLOG300は、圧縮前LBA(指定LBA)と、圧縮後データDULB300cを格納するブロックセットを特定する実LBAと、データの書き込み日時と、を含んでいる。
次に、データ中継モジュール600cは、ログ情報DLOG300と圧縮後データDULB300cとを、空き領域A13内の未使用領域に格納する。このように、ログ情報DLOG300は、データと同様に、論理ボリュームに格納される。ただし、ログ情報の格納方法としては、ログ情報DLOG300を格納するブロックを、他のブロックから区別できるような方法を採用する。このような格納方法としては、周知の種々の方法を採用可能である。例えば、ログ情報DLOG300の開始ブロックと終端ブロックとに、他のブロックでは起こり得ないデータを格納する方法を採用すればよい。
なお、ログ情報DLOG300と圧縮後データDULB300cとを、他の論理ボリュームに格納することとしてもよい。
なお、図25の例では、ログ情報DLOG300と圧縮後データDULB300cとを並べたデータDBS300cが、ブロックセットBS300cに格納されている。ブロックセットBS300cの中のデータブロックセットBSD300cには、圧縮後データDULB300cが格納されている。ログ情報DLOG300の実LBAは、このデータブロックセットBSD300cのLBAを示している。
このように、データ中継モジュール600cは、ホスト計算機110から書き込みの要求を受けるたびに、空き領域A13に更新後データとログ情報とを追記する。
なお、実LBAによって特定されるブロックセット(圧縮後ブロックセット)は、圧縮前LBAで特定されるブロックセット(圧縮前ブロックセット)の各ブロックのデータを含んでいる。従って、圧縮後ブロックセットは、圧縮前LBAの各ブロックのそれぞれと対応付けられているということもできる。これは、他の実施例についても同様である。また、第3実施例では、圧縮前ブロックセットのブロック数は、ホスト計算機110の書き込み要求に応じた可変値である。
C2.読み出し処理:
データ中継モジュール600cは、ホスト計算機110からの読み出し要求に対しては、図7、図8に示した第1実施例と同様に、データ転送を行う。ただし、データ中継モジュール600cは、空き領域A13のログ情報の中から、指定LBAを含むログ情報(以下「指定ログ情報」と呼ぶ)を検索する。指定ログ情報を見つけたら、指定ログ情報の実LBAが表すブロックセットからデータを読み出し、読み出したデータをデータ伸長回路330(図1)に伸長させる。データ中継モジュール600cは、伸長によって生成されたデータを用いて、指定LBAのデータをホスト計算機110に転送する。
なお、データ中継モジュール600cは、複数の指定ログ情報を見つけた場合には、書き込み日時が最新の指定ログ情報を用いる。また、データ中継モジュール600cは、ホスト計算機110から過去の日時を指定した読み出し要求を受けることが可能である。この場合には、指定日時における最新の指定ログ情報を用いる。すなわち、指定日時以前のログ情報の中から、最新の指定ログ情報を検索する。このように、日時は、本発明における「バージョン」に相当する。
以上説明した第3実施例によれば、ストレージシステム200cは、更新前データを残しつつ、更新後データを格納するので、最新データと、更新前のデータと、を容易に提供することができる。また、更新後データを圧縮して格納するので、記憶領域の節約を図ることができる。
また、第3実施例では、ディスクアレイ制御部300cは、データの更新と圧縮とに関するログ情報を格納するとともに、データの圧縮と伸長とを、ホスト計算機110から独立して実行する。従って、ホスト計算機110に負荷をかけずに、データの圧縮と伸長とを実行することができる。
特に、第3実施例では、ログ情報によって、更新前後のブロックセットの対応関係が定められている。その結果、ディスクアレイ制御部300cは、ホスト計算機110から、一貫して、更新前(圧縮前)LBAを指定するデータ転送要求を受けることが可能である。
なお、第3実施例では、圧縮LBA管理テーブル500と、論理ボリューム管理テーブル510と、ログ情報と、の全体が、本発明における「ブロック対応関係」に相当する。また、これらの情報を格納するローカルメモリ344cと移行先論理ボリュームLDEV1(すなわち、ディスクアレイ250)との全体が、本発明における「対応関係記憶部」に相当する。
D.変形例:
なお、この発明は上記の実施例や実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様において実施することが可能であり、例えば次のような変形も可能である。
変形例1:
図3〜図6に示す圧縮マイグレーション処理において、移行先の論理ボリュームを、移行元の論理ボリュームと同じとしてもよい。この場合には、圧縮後のデータを、圧縮前のデータを格納していた論理ブロックに上書きすればよい。
変形例2:
図4、図8に示す第1実施例では、非圧縮領域A11に関しても、ブロックセットを単位とするデータの読み書きを行っていたが、1個の論理ブロックを単位とする読み書きを行ってもよい。これは、他の処理や他の実施例についても同様である。
変形例3:
図6に示す第1実施例では、圧縮処理の単位の大きさが「10ブロック」で固定されている。従って、圧縮前のブロックセットに関しては、先頭LBAを特定すればブロックセットを特定することが可能である。そこで、圧縮LBA管理テーブル500における圧縮前のサイズデータを省略してもよい。さらに、非圧縮領域A1(非圧縮領域A11)に関しては、圧縮前(移行前)LBAと、圧縮後(移行後)LBAとが同じであるので、圧縮LBA管理テーブル500の、非圧縮領域A1(非圧縮領域A11)に関するデータを省略してもよい。一方、図14に示す第2実施例においても、圧縮処理の単位の大きさが「100(h)ブロック」に固定されている。従って、更新状態管理テーブル530における終端LBAデータを省略してもよい。なお、圧縮後のブロックセットに関しては、大きさが可変値であるので、サイズデータや、終端LBAデータを省略せずに用いることが好ましい。
また、第1実施例と第2実施例とにおいて、圧縮処理の単位の大きさを可変値としてもよい。例えば、記憶領域内の位置によって圧縮処理単位の大きさが異なることとしてもよい。
また、図6(B)の例では、圧縮の有無やアルゴリズムを論理ボリューム毎に設定することとしているが、圧縮の有無やアルゴリズムの設定単位としては、任意のものを採用可能である。例えば、論理ブロック毎に設定することとしてもよく、RAIDグループ毎に設定することとしてもよく、ストレージシステム全体で共通の設定を用いることとしてもよい。いずれの場合も、ストレージシステムに設定記憶部(例えば、メモリ部340や、ディスクアレイ250)を設け、この設定記憶部に、設定単位毎の設定内容を格納しておくことが好ましい。これは、圧縮処理を行う場合に限らず、他の処理(例えば、暗号化処理)を行う場合も同様である。
変形例4:
上述の第2実施例では、更新前のデータを圧縮して退避(格納)することとしていたが、この代わりに、更新後のデータを圧縮して退避(格納)することとしてもよい。この場合も、図14の例と同様に、圧縮管理テーブル540に、更新後のデータを格納するブロックセットの情報を格納すればよい。
変形例5:
図24、図25に示す第3実施例では、圧縮マイグレーション処理を実行することとしているが、実行しないこととしてもよい。この場合も、更新後のデータを圧縮してログ情報とともに格納すればよい。この際、更新後のデータとログ情報とを、元のデータの論理ボリュームとは異なる論理ボリュームに格納すればよい。
また、第3実施例においても、第2実施例と同様に、更新後データの圧縮と格納とを、固定サイズのブロックセット毎に行うこととしてもよい。
また、第3実施例においても、時点コピーを保存することとしてもよい。例えば、各圧縮前LBAの更新後データとして、指示時点の直前の更新後データのみを保存し、他の更新後データは破棄することとすればよい。
変形例6:
上記各実施例において、ストレージシステム200、200b、200cからホスト計算機110へデータを読み出す場合には、論理ボリュームから読み出した指定LBAのデータを、一旦、キャッシュメモリ342に格納しておき、後でまとめてホスト計算機110に送信することとしてもよい。同様に、ホスト計算機110からストレージシステム200、200b、200cへデータを書き込む場合には、ホスト計算機110から送信されたデータを、一旦、キャッシュメモリ342に格納しておき、ホスト計算機110にデータ書き込み終了の通知を送信した後に、論理ボリュームに実際に書き込むこととしてもよい。
変形例7:
上述の各実施例では、ホスト計算機110が指定するLBA(指定LBA)と、圧縮前(移行前、退避前)の論理ボリューム上のLBA(以下「物理的LBA」とも呼ぶ)と、が一致しているが、一致していなくてもよい。この場合には、ストレージシステムに設定記憶部(例えば、メモリ部340やディスクアレイ250)を設け、設定記憶部に、指定LBAと物理的LBAとのLBA対応関係を格納しておくことが好ましい。
また、上述の各実施例では、ディスクアレイ制御部300、300b、300cとホスト計算機110との間のデータ転送の最小単位(以下「ホストブロック」と呼ぶ)の大きさ(データサイズ)と、論理ボリュームとの間のデータ転送の最小単位(以下「ボリュームブロック」と呼ぶ)の大きさとが同じであった。ただし、ホストブロックの大きさとボリュームブロックの大きさとは、互いに異なっていてもよい。例えば、ボリュームブロックの大きさを、ホストブロックの大きさよりも小さな値に設定してもよい(例えば、ホストブロックの大きさの1/L倍(Lは2以上の整数))。こうすれば、1個のホストブロックが複数のボリュームブロックで表されることとなるので、データ変換処理によってデータの大きさが変化した場合に、データの格納に用いられる記憶領域が過剰に大きくなることを抑制することが可能となる。
なお、このような場合には、ストレージシステムの設定記憶部に、ホストブロックとボリュームブロックとの対応関係を示す構成情報を格納することが好ましい。こうすれば、ディスクアレイ制御部は、構成情報を参照して、ボリュームブロックからホストブロックを再構成することが可能となる。構成情報としては、例えば、ホストブロックのLBAと、そのホストブロックを構成するボリュームブロックのLBAとの対応関係を採用することができる。
なお、このようなLBA対応関係や、構成情報や、上記各テーブル500、510、520、530、540、は、ストレージシステムが有する任意の記憶部に記憶させることができる。例えば、ローカルメモリ(例えば、ローカルメモリ344(図1))に格納してもよく、キャッシュメモリ(例えば、キャッシュメモリ342)に格納してもよく、ディスクアレイ(例えば、ディスクアレイ250)に格納してもよい。
変形例8:
上記各実施例において、ストレージシステム200、200b、200cが、複数のホスト計算機に論理ボリュームを提供する場合がある。このような場合には、ホスト計算機毎に論理ボリューム管理テーブル510(図6(C))を設けることが好ましい。ここで、あるホスト計算機用の論理ボリューム管理テーブル510に登録されていない論理ボリュームについては、そのホスト計算機との間のデータ転送を禁じることが好ましい。こうすれば、意図しないホスト計算機との間のデータ転送を防止することができる。
変形例9:
上述の各実施例では、論理ボリュームの形成方法として、RAIDシステムを用いる方法を採用しているが、他の任意の方法を採用可能である。例えば、1つのディスク装置によって提供される記憶領域を、そのまま1つの論理ボリュームとして用いてもよい。
また、記憶領域としては、ディスク装置を用いたものに限らず、任意のものを採用可能である。例えば、半導体メモリを用いた記憶領域を採用してもよい。
変形例10:
上記各実施例では、データの圧縮処理を行うこととしていたが、データ変換処理としては、データ自体の大きさが変わる任意の処理を採用することができる。例えば、暗号化処理を行うこととしてもよい。暗号化処理としては、DES暗号化処理等の周知の種々の処理を採用することができる。また、パスワードを用いる暗号化処理を採用する場合には、パスワードを、管理端末120やホスト計算機110から指定することとすればよい。また、圧縮処理と暗号化処理との両方を実行してもよい。
変形例11:
上記各実施例において、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよく、逆に、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよい。例えば、データ圧縮回路320(図1)とデータ伸長回路330との機能を、プログラムによって実現することとしてもよい。
本発明の一実施例としてのストレージシステムの構成を示す説明図である。 ローカルメモリ344の内部構成を示す概略図である。 管理端末120に表示される設定画面の一例を示す説明図である。 圧縮マイグレーション処理の概要を示す説明図である。 圧縮マイグレーション処理の手順を示すフローチャートである。 テーブル500、510、520の一例を示す説明図である。 ストレージシステム200に対するデータ読み出し処理の手順を示すフローチャートである。 読み出し処理の概要を示す説明図である。 ストレージシステム200に対するデータ書き込み処理の手順を示すフローチャートである。 書き込み処理の概要を示す説明図である。 更新後の圧縮LBA管理テーブル500の一例を示す説明図である。 圧縮解除処理の手順を示すフローチャートである。 第2実施例におけるストレージシステム200bの構成を示す説明図である。 更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。 データ書き込み処理の手順を示すフローチャートである。 ステップS2における書き込み処理の概要を示す説明図である。 ステップS2の書き込み処理における更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。 ステップS5における書き込み処理の概要を示す説明図である。 ステップS5の書き込み処理における更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。 過去の世代に対するデータの書き込み処理の手順を示すフローチャートである。 ケースAにおける更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。 ケースBにおける更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。 ケースCにおける更新状態管理テーブル530と世代・圧縮管理テーブル540との一例を示す説明図である。 第3実施例におけるストレージシステム200cの構成を示す説明図である。 第3実施例における書き込み処理の概要を示す説明図である。
符号の説明
110...ホスト計算機
120...管理端末
200、200b、200c...ストレージシステム
210...ホストインターフェイス
220...管理インターフェイス
230...ディスクインターフェイス
250...ディスクアレイ
300、300b、300c...ディスクアレイ制御部
310...CPU
320...データ圧縮回路
330...データ伸長回路
340...メモリ部
342...キャッシュメモリ
344、344b、344c...ローカルメモリ
390...バス
500...圧縮LBA管理テーブル
510...論理ボリューム管理テーブル
520...ボリューム状態管理テーブル
530...更新状態管理テーブル
540...世代・圧縮管理テーブル
600、600b、600c...データ中継モジュール

Claims (24)

  1. データを記憶する記憶領域をホストコンピュータに提供するストレージシステムであって、
    データを記憶する記憶領域を有するデータ記憶部と、
    前記ホストコンピュータと前記記憶領域との間のデータ転送を制御する制御部と、
    を備え、
    前記制御部は、
    前記ホストコンピュータとの間では、所定サイズの第1ブロックを最小単位として前記ホストコンピュータから指定された第1ブロックの論理的な格納位置に従ってデータの受信及び送信を実行し、
    前記記憶領域との間では、所定サイズの第2ブロックを最小単位としてデータの格納と読み出しとを実行するとともに、
    前記記憶領域にデータを格納する際には、N個(Nは1以上の整数)の第1ブロックで構成される第1ブロックセットを単位として、データ自体の大きさが変わるデータ変換処理を実行して1以上の第2ブロックで構成される第2ブロックセットを生成するとともに、前記第2ブロックセットを前記記憶領域へ格納する変換格納モードを有し、
    前記ストレージシステムは、さらに、
    複数の前記第1ブロックセットと複数の前記第2ブロックセットとの対応関係を示すブロック対応関係を記憶する対応関係記憶部を備え、
    前記制御部は、前記ホストコンピュータから特定の第1ブロックのデータ読み出し要求を受信したときに、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットに対応付けられた読出第2ブロックセットを認識し、前記読出第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する、
    ストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記制御部は、さらに、前記ホストコンピュータから特定の第1ブロックに関するデータ更新格納要求を受けたときに、前記要求された第1ブロックを含む更新対象第1ブロックセットの更新処理を実行し、
    前記更新処理において、前記制御部は、前記ブロック対応関係を参照して、前記更新対象第1ブロックセットに含まれる全ての第1ブロックの更新が要求されているか否かを判定し、全ての第1ブロックの更新が要求されていない場合には、
    前記更新対象第1ブロックセットに対応付けられた第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、得られたデータに前記要求された第1ブロックのデータを上書きしてから前記変換処理を実行して更新対象第2ブロックセットを生成するとともに、前記更新対象第2ブロックセットを前記記憶領域に格納し、さらに、
    前記ブロック対応関係に、前記更新対象第1ブロックセットと前記更新対象第2ブロックセットとの対応関係を書き込む、
    ストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記記憶領域は、論理的な格納位置が同一の第1ブロックセットに対応付けられているとともにバージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、
    前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と、前記複数の異バージョン第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、
    前記制御部は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行し、
    前記バージョン読み出し処理において、前記制御部は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する、
    ストレージシステム。
  4. 請求項3に記載のストレージシステムであって、
    前記制御部は、前記第1ブロックセットから前記データ変換処理を実行せずに1以上の第2ブロックで構成される未変換ブロックセットを生成するとともに、前記未変換ブロックセットを前記記憶領域に格納する未変換格納モードを有し、
    前記制御部は、前記未変換ブロックセットの格納の後に前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、変換更新処理を実行し、
    前記変換更新処理において、前記制御部は、
    (i)前記要求された第1ブロックを含む対象第1ブロックセットの更新後のデータについては、前記変換格納モードと前記未変換格納モードとの一方に従って前記記憶領域に格納し、
    (ii)前記対象第1ブロックセットの更新前のデータについては、前記対象第1ブロックセットに対応付けられた未変換ブロックセットを読み出し、前記データ変換処理を実行して更新前第2ブロックセットを生成するとともに、前記更新前第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記対象第1ブロックセットと、前記更新前第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加する、
    ストレージシステム。
  5. 請求項4に記載のストレージシステムであって、
    前記制御部は、前記変換更新処理において、前記対象第1ブロックセットの更新後のデータから前記データ変換処理を実行せずに1以上の第2ブロックで構成される更新後未変換ブロックセットを生成するとともに、前記更新後未変換ブロックセットを前記記憶領域に格納し、
    さらに、前記ホストコンピュータからバージョン指定無しのデータ読み出し要求を受けたときには、前記更新後未変換ブロックセットを読み出して、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する、
    ストレージシステム。
  6. 請求項1に記載のストレージシステムであって、
    前記記憶領域は、論理的な格納位置が同一の第1ブロックに対応付けられているとともにバージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、
    前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と前記第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、
    前記制御部は、前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、ログ更新処理を実行し、
    前記ログ更新処理において、前記制御部は、前記要求された第1ブロックで構成される更新対象第1ブロックセットの更新後のデータに前記データ変換処理を実行して更新後第2ブロックセットを生成するとともに、前記更新後第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記更新対象第1ブロックセットと、前記更新後第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加し、
    前記制御部は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行し、
    前記バージョン読み出し処理において、前記制御部は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する、
    ストレージシステム。
  7. 請求項1ないし請求項5のいずれかに記載のストレージシステムであって、
    前記第1ブロックセットのブロック数Nは可変値である、
    ストレージシステム。
  8. 請求項1ないし請求項7のいずれかに記載のストレージシステムであって、
    前記第2ブロックのデータサイズは、前記第1ブロックのデータサイズよりも小さい、
    ストレージシステム。
  9. ストレージシステムが有するデータを記憶する記憶領域をホストコンピュータに提供する方法であって、
    (A)前記ホストコンピュータと前記ストレージシステムとの間で、所定サイズの第1ブロックを最小単位として前記ホストコンピュータから指定された第1ブロックの論理的な格納位置に従ってデータの受信及び送信を実行する工程と、
    (B)前記記憶領域に対して、所定サイズの第2ブロックを最小単位としてデータの格納と読み出しとを実行する工程と、
    を備え、
    前記工程(B)は、前記記憶領域にデータを格納する際には、N個(Nは1以上の整数)の第1ブロックで構成される第1ブロックセットを単位として、データ自体の大きさが変わるデータ変換処理を実行して1以上の第2ブロックで構成される第2ブロックセットを生成するとともに、前記第2ブロックセットを前記記憶領域へ格納する変換格納モードでデータの格納を実行する工程を含み、
    前記提供方法は、さらに、
    (C)複数の前記第1ブロックセットと複数の前記第2ブロックセットとの対応関係を示すブロック対応関係を生成する工程を備え、
    前記工程(B)は、前記ホストコンピュータから特定の第1ブロックのデータ読み出し要求を受信したときに、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットに対応付けられた読出第2ブロックセットを認識し、前記読出第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する工程を含む、
    提供方法。
  10. 請求項9に記載の提供方法であって、
    前記工程(B)は、さらに、前記ホストコンピュータから特定の第1ブロックに関するデータ更新格納要求を受けたときに、前記要求された第1ブロックを含む更新対象第1ブロックセットの更新処理を実行する更新工程を含み、
    前記更新工程は、前記ブロック対応関係を参照して、前記更新対象第1ブロックセットに含まれる全ての第1ブロックの更新が要求されているか否かを判定し、全ての第1ブロックの更新が要求されていない場合には、
    前記更新対象第1ブロックセットに対応付けられた第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、得られたデータに前記要求された第1ブロックのデータを上書きしてから前記変換処理を実行して更新対象第2ブロックセットを生成するとともに、前記更新対象第2ブロックセットを前記記憶領域に格納し、さらに、
    前記ブロック対応関係に、前記更新対象第1ブロックセットと前記更新対象第2ブロックセットとの対応関係を書き込む工程を含む、
    提供方法。
  11. 請求項9に記載の提供方法であって、
    前記記憶領域は、論理的な格納位置が同一の第1ブロックセットに対応付けられているとともに、バージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、
    前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と、前記複数の異バージョン第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、
    前記工程(B)は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行するバージョン読み出し工程を含み、
    前記バージョン読み出し工程は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する工程を含む、
    提供方法。
  12. 請求項11に記載の提供方法であって、
    前記工程(B)は、前記第1ブロックセットから前記データ変換処理を実行せずに1以上の第2ブロックで構成される未変換ブロックセットを生成するとともに、前記未変換ブロックセットを前記記憶領域に格納する未変換格納モードでデータの格納を実行する工程を含み、
    前記工程(B)は、前記未変換ブロックセットの格納の後に前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、変換更新処理を実行する変換更新工程を含み、
    前記変換更新工程は、
    (i)前記要求された第1ブロックを含む対象第1ブロックセットの更新後のデータについては、前記変換格納モードと前記未変換格納モードとの一方に従って前記記憶領域に格納し、
    (ii)前記対象第1ブロックセットの更新前のデータについては、前記対象第1ブロックセットに対応付けられた未変換ブロックセットを読み出し、前記データ変換処理を実行して更新前第2ブロックセットを生成するとともに、前記更新前第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記対象第1ブロックセットと、前記更新前第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加する工程を含む、
    提供方法。
  13. 請求項12に記載の提供方法であって、
    前記変換更新工程は、前記対象第1ブロックセットの更新後のデータから前記データ変換処理を実行せずに1以上の第2ブロックで構成される更新後未変換ブロックセットを生成するとともに、前記更新後未変換ブロックセットを前記記憶領域に格納する工程を含み、
    前記工程(B)は、前記ホストコンピュータからバージョン指定無しのデータ読み出し要求を受けたときには、前記更新後未変換ブロックセットを読み出して、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する工程を含む、
    提供方法。
  14. 請求項9に記載の提供方法であって、
    前記記憶領域は、論理的な格納位置が同一の第1ブロックに対応付けられているとともにバージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、
    前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と前記第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、
    前記工程(B)は、前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、ログ更新処理を実行するログ更新工程を含み、
    前記ログ更新工程は、前記要求された第1ブロックで構成される更新対象第1ブロックセットの更新後のデータに前記データ変換処理を実行して更新後第2ブロックセットを生成するとともに、前記更新後第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記更新対象第1ブロックセットと、前記更新後第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加する工程を含み、
    前記工程(B)は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行するバージョン読み出し工程を含み、
    前記バージョン読み出し工程は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する工程を含む、
    提供方法。
  15. 請求項9ないし請求項13のいずれかに記載の提供方法であって、
    前記第1ブロックセットのブロック数Nは可変値である、
    提供方法。
  16. 請求項9ないし請求項15のいずれかに記載の提供方法であって、
    前記第2ブロックのデータサイズは、前記第1ブロックのデータサイズよりも小さい、
    提供方法。
  17. ストレージシステムが有するデータを記憶する記憶領域をホストコンピュータに提供する処理を実行するためのコンピュータプログラムであって、
    (A)前記ホストコンピュータと前記ストレージシステムとの間で、所定サイズの第1ブロックを最小単位として前記ホストコンピュータから指定された第1ブロックの論理的な格納位置に従ってデータの受信及び送信を実行する機能と、
    (B)前記記憶領域に対して、所定サイズの第2ブロックを最小単位としてデータの格納と読み出しとを実行する機能と、
    をコンピュータに実現させるコンピュータプログラムを含み、
    前記機能(B)は、前記記憶領域にデータを格納する際には、N個(Nは1以上の整数)の第1ブロックで構成される第1ブロックセットを単位として、データ自体の大きさが変わるデータ変換処理を実行して1以上の第2ブロックで構成される第2ブロックセットを生成するとともに、前記第2ブロックセットを前記記憶領域へ格納する変換格納モードでデータの格納を実行する機能を含み、
    前記プログラムは、さらに、
    (C)複数の前記第1ブロックセットと複数の前記第2ブロックセットとの対応関係を示すブロック対応関係を生成する機能を備え、
    前記機能(B)は、前記ホストコンピュータから特定の第1ブロックのデータ読み出し要求を受信したときに、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットに対応付けられた読出第2ブロックセットを認識し、前記読出第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する機能を含む、
    コンピュータプログラム。
  18. 請求項17に記載のコンピュータプログラムであって、
    前記機能(B)は、さらに、前記ホストコンピュータから特定の第1ブロックに関するデータ更新格納要求を受けたときに、前記要求された第1ブロックを含む更新対象第1ブロックセットの更新処理を実行する更新機能を含み、
    前記更新機能は、前記ブロック対応関係を参照して、前記更新対象第1ブロックセットに含まれる全ての第1ブロックの更新が要求されているか否かを判定し、全ての第1ブロックの更新が要求されていない場合には、
    前記更新対象第1ブロックセットに対応付けられた第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、得られたデータに前記要求された第1ブロックのデータを上書きしてから前記変換処理を実行して更新対象第2ブロックセットを生成するとともに、前記更新対象第2ブロックセットを前記記憶領域に格納し、さらに、
    前記ブロック対応関係に、前記更新対象第1ブロックセットと前記更新対象第2ブロックセットとの対応関係を書き込む機能を含む、
    コンピュータプログラム。
  19. 請求項17に記載のコンピュータプログラムであって、
    前記記憶領域は、論理的な格納位置が同一の第1ブロックセットに対応付けられているとともに、バージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、
    前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と、前記複数の異バージョン第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、
    前記機能(B)は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行するバージョン読み出し機能を含み、
    前記バージョン読み出し機能は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する機能を含む、
    コンピュータプログラム。
  20. 請求項19に記載のコンピュータプログラムであって、
    前記機能(B)は、前記第1ブロックセットから前記データ変換処理を実行せずに1以上の第2ブロックで構成される未変換ブロックセットを生成するとともに、前記未変換ブロックセットを前記記憶領域に格納する未変換格納モードでデータの格納を実行する機能を含み、
    前記機能(B)は、前記未変換ブロックセットの格納の後に前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、変換更新処理を実行する変換更新機能を含み、
    前記変換更新機能は、
    (i)前記要求された第1ブロックを含む対象第1ブロックセットの更新後のデータについては、前記変換格納モードと前記未変換格納モードとの一方に従って前記記憶領域に格納し、
    (ii)前記対象第1ブロックセットの更新前のデータについては、前記対象第1ブロックセットに対応付けられた未変換ブロックセットを読み出し、前記データ変換処理を実行して更新前第2ブロックセットを生成するとともに、前記更新前第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記対象第1ブロックセットと、前記更新前第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加する機能を含む、
    コンピュータプログラム。
  21. 請求項20に記載のコンピュータプログラムであって、
    前記変換更新機能は、前記対象第1ブロックセットの更新後のデータから前記データ変換処理を実行せずに1以上の第2ブロックで構成される更新後未変換ブロックセットを生成するとともに、前記更新後未変換ブロックセットを前記記憶領域に格納する機能を含み、
    前記機能(B)は、前記ホストコンピュータからバージョン指定無しのデータ読み出し要求を受けたときには、前記更新後未変換ブロックセットを読み出して、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する機能を含む、
    コンピュータプログラム。
  22. 請求項17に記載のコンピュータプログラムであって、
    前記記憶領域は、論理的な格納位置が同一の第1ブロックに対応付けられているとともにバージョンが異なる複数の異バージョン第2ブロックセットを格納することが可能であり、
    前記ブロック対応関係は、前記第1ブロックセットの論理的な格納位置と前記第2ブロックセットの物理的な格納位置及びバージョンとの対応関係を含んでおり、
    前記機能(B)は、前記ホストコンピュータから特定の第1ブロックに関するデータ更新要求を受けたときには、ログ更新処理を実行するログ更新機能を含み、
    前記ログ更新機能は、前記要求された第1ブロックで構成される更新対象第1ブロックセットの更新後のデータに前記データ変換処理を実行して更新後第2ブロックセットを生成するとともに、前記更新後第2ブロックセットを前記記憶領域へ格納し、さらに、前記ブロック対応関係に、前記更新対象第1ブロックセットと、前記更新後第2ブロックセットと、所定の規則に従って定められるバージョンと、の3者の対応関係を追加する機能を含み、
    前記機能(B)は、前記ホストコンピュータから特定の第1ブロックと特定のバージョンとに関するデータ読み出し要求を受けたときには、バージョン読み出し処理を実行するバージョン読み出し機能を含み、
    前記バージョン読み出し機能は、前記ブロック対応関係を参照して、前記要求された第1ブロックを含む第1ブロックセットと、前記要求されたバージョンと、の双方に対応付けられた第2ブロックセットを認識し、前記認識した第2ブロックセットを読み出して前記データ変換処理の逆変換処理を実行し、前記要求された第1ブロックのデータを前記ホストコンピュータに送信する機能を含む、
    コンピュータプログラム。
  23. 請求項17ないし請求項21のいずれかに記載のコンピュータプログラムであって、
    前記第1ブロックセットのブロック数Nは可変値である、
    コンピュータプログラム。
  24. 請求項17ないし請求項23のいずれかに記載のコンピュータプログラムであって、
    前記第2ブロックのデータサイズは、前記第1ブロックのデータサイズよりも小さい、
    コンピュータプログラム。
JP2005074375A 2005-03-16 2005-03-16 ストレージシステム Expired - Fee Related JP4615337B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2005074375A JP4615337B2 (ja) 2005-03-16 2005-03-16 ストレージシステム
US11/129,552 US20060212625A1 (en) 2005-03-16 2005-05-16 Storage system
US12/123,148 US7747799B2 (en) 2005-03-16 2008-05-19 Storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005074375A JP4615337B2 (ja) 2005-03-16 2005-03-16 ストレージシステム

Publications (3)

Publication Number Publication Date
JP2006259962A true JP2006259962A (ja) 2006-09-28
JP2006259962A5 JP2006259962A5 (ja) 2007-12-13
JP4615337B2 JP4615337B2 (ja) 2011-01-19

Family

ID=37011702

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005074375A Expired - Fee Related JP4615337B2 (ja) 2005-03-16 2005-03-16 ストレージシステム

Country Status (2)

Country Link
US (2) US20060212625A1 (ja)
JP (1) JP4615337B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128176A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd ログ情報を管理する計算機システム及びログ情報の管理方法
JP2009230499A (ja) * 2008-03-24 2009-10-08 Hitachi Medical Computer Systems Inc 医用画像診断支援装置及び医用画像診断支援プログラム
JP2009238015A (ja) * 2008-03-27 2009-10-15 Fujitsu Ltd コピー制御装置、コピー制御方法およびコピー制御プログラム
US8108646B2 (en) 2009-01-30 2012-01-31 Hitachi Ltd. Storage system and storage control method that compress and store data elements
WO2013160969A1 (en) 2012-04-27 2013-10-31 Hitachi, Ltd. Storage apparatus and data management method
KR101345386B1 (ko) * 2007-09-19 2013-12-24 삼성전자주식회사 멀티미디어 데이터 편집 방법 및 장치
WO2016203612A1 (ja) * 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置
WO2018061161A1 (ja) * 2016-09-29 2018-04-05 株式会社日立製作所 ストレージ装置およびその制御方法
JP2019128906A (ja) * 2018-01-26 2019-08-01 株式会社日立製作所 ストレージ装置及びその制御方法

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7606954B2 (en) * 2005-09-29 2009-10-20 Intel Corporation Data storage using compression
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
US20090150477A1 (en) * 2007-12-07 2009-06-11 Brocade Communications Systems, Inc. Distributed file system optimization using native server functions
US8510370B2 (en) * 2008-02-26 2013-08-13 Avid Technology, Inc. Array-based distributed storage system with parity
US8261015B2 (en) * 2008-09-12 2012-09-04 Lsi Corporation Utilizing more capacity of a physical disk through multiple logical drives on the physical disk
US8359444B2 (en) 2008-09-24 2013-01-22 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
CN103838525B (zh) * 2009-01-30 2017-08-08 株式会社日立制作所 存储系统
US8396835B2 (en) * 2009-05-25 2013-03-12 Hitachi, Ltd. Computer system and its data control method
US8706727B2 (en) * 2009-06-19 2014-04-22 Sybase, Inc. Data compression for reducing storage requirements in a database system
JP2011128792A (ja) 2009-12-16 2011-06-30 Toshiba Corp メモリ管理装置
US8566540B2 (en) * 2010-02-02 2013-10-22 International Business Machines Corporation Data migration methodology for use with arrays of powered-down storage devices
US8798262B1 (en) * 2010-12-23 2014-08-05 Emc Corporation Preserving LBA information between layers of a storage I/O stack for LBA-dependent encryption
US8751828B1 (en) 2010-12-23 2014-06-10 Emc Corporation Sharing encryption-related metadata between multiple layers in a storage I/O stack
US9609060B2 (en) * 2011-08-02 2017-03-28 Nec Corporation Distributed storage system and method
JPWO2014024610A1 (ja) * 2012-08-07 2016-07-25 日本電気株式会社 データ転送装置、データ転送方法、及びプログラム
WO2014061067A1 (en) 2012-10-18 2014-04-24 Hitachi, Ltd. Method for generating data in storage system having compression function
JP6212996B2 (ja) * 2013-07-05 2017-10-18 富士通株式会社 ストレージ制御装置、ストレージ制御プログラム、及びストレージ制御方法
WO2015145532A1 (ja) * 2014-03-24 2015-10-01 株式会社日立製作所 ストレージシステム及びデータ処理方法
US9612770B2 (en) * 2014-07-03 2017-04-04 Infinidat Ltd. Snapshot management using extended data units
US9946462B1 (en) * 2016-02-15 2018-04-17 Seagate Technology Llc Address mapping table compression
US10346064B1 (en) * 2016-12-30 2019-07-09 EMC IP Holding Company LLC Managing compression based on a compression profile of host data initially residing on a source storage array
US10481806B2 (en) * 2017-03-21 2019-11-19 International Business Machines Corporation Method of enhancing the performance of storage system through optimization in compressed volume migration
US10831935B2 (en) * 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
CN110427340B (zh) 2018-04-28 2023-08-04 伊姆西Ip控股有限责任公司 用于文件存储的方法、装置和计算机存储介质
US11244008B1 (en) * 2019-08-30 2022-02-08 Quantcast Corporation Accelerated operations on compressed data stores

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010844A (ja) * 1998-06-22 2000-01-14 Nec Corp 更新ログ出力方式および出力方法
JP2004013373A (ja) * 2002-06-05 2004-01-15 Hitachi Ltd 外部記憶装置システム及び記憶制御装置
JP2005018612A (ja) * 2003-06-27 2005-01-20 Hitachi Ltd ストレージ装置、及びストレージ装置の制御方法
JP2005293224A (ja) * 2004-03-31 2005-10-20 Hitachi Computer Peripherals Co Ltd バックアップシステム及びバックアップ方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410671A (en) * 1990-05-01 1995-04-25 Cyrix Corporation Data compression/decompression processor
EP0489227B1 (en) * 1990-12-06 1998-12-23 Tandberg Data Asa Data storage system having removable media and equipped to download a control program from the removable media
EP1003103B1 (en) * 1993-06-03 2008-10-01 Network Appliance, Inc. Write anywhere file-system layout method and apparatus
JPH0772981A (ja) 1993-07-07 1995-03-17 Hitachi Ltd 記憶制御装置及びその制御方法
US5555389A (en) * 1993-07-07 1996-09-10 Hitachi, Ltd. Storage controller for performing dump processing
JP2932920B2 (ja) * 1993-11-30 1999-08-09 富士ゼロックス株式会社 情報格納装置
US5649152A (en) * 1994-10-13 1997-07-15 Vinca Corporation Method and system for providing a static snapshot of data stored on a mass storage system
US5812817A (en) * 1994-10-17 1998-09-22 International Business Machines Corporation Compression architecture for system memory application
US5623701A (en) * 1995-06-06 1997-04-22 International Business Machines Corporation Data compression method and structure for a direct access storage device
US6374266B1 (en) * 1998-07-28 2002-04-16 Ralph Shnelvar Method and apparatus for storing information in a data processing system
JP4252139B2 (ja) * 1998-12-16 2009-04-08 株式会社日立製作所 記憶装置システム
US6757699B2 (en) * 2000-10-06 2004-06-29 Franciscan University Of Steubenville Method and system for fragmenting and reconstituting data
US7139398B2 (en) * 2001-06-06 2006-11-21 Sony Corporation Time division partial encryption
US7039769B2 (en) * 2002-05-30 2006-05-02 International Business Machines Corporation Direct addressed shared compressed memory system
US7334099B2 (en) * 2002-06-28 2008-02-19 Microsoft Corporation Method and system for managing image files
US6956507B2 (en) * 2002-12-12 2005-10-18 International Business Machines Corporation Method and apparatus for morphing memory compressed machines
JP2004206269A (ja) * 2002-12-24 2004-07-22 Sony Corp 情報処理装置および方法
US7302543B2 (en) * 2004-06-16 2007-11-27 Nec Laboratories America, Inc. Compressed memory architecture for embedded systems
US7474750B2 (en) * 2004-06-16 2009-01-06 Nec Laboratories America, Inc. Dynamic content-aware memory compression and encryption architecture
US7428642B2 (en) * 2004-10-15 2008-09-23 Hitachi, Ltd. Method and apparatus for data storage

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000010844A (ja) * 1998-06-22 2000-01-14 Nec Corp 更新ログ出力方式および出力方法
JP2004013373A (ja) * 2002-06-05 2004-01-15 Hitachi Ltd 外部記憶装置システム及び記憶制御装置
JP2005018612A (ja) * 2003-06-27 2005-01-20 Hitachi Ltd ストレージ装置、及びストレージ装置の制御方法
JP2005293224A (ja) * 2004-03-31 2005-10-20 Hitachi Computer Peripherals Co Ltd バックアップシステム及びバックアップ方法

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128176A (ja) * 2005-11-01 2007-05-24 Hitachi Ltd ログ情報を管理する計算機システム及びログ情報の管理方法
KR101345386B1 (ko) * 2007-09-19 2013-12-24 삼성전자주식회사 멀티미디어 데이터 편집 방법 및 장치
JP2009230499A (ja) * 2008-03-24 2009-10-08 Hitachi Medical Computer Systems Inc 医用画像診断支援装置及び医用画像診断支援プログラム
JP2009238015A (ja) * 2008-03-27 2009-10-15 Fujitsu Ltd コピー制御装置、コピー制御方法およびコピー制御プログラム
JP4607981B2 (ja) * 2008-03-27 2011-01-05 富士通株式会社 コピー制御装置、コピー制御方法およびコピー制御プログラム
US8112598B2 (en) 2008-03-27 2012-02-07 Fujitsu Limited Apparatus and method for controlling copying
US9208067B2 (en) 2009-01-30 2015-12-08 Hitachi, Ltd. Storage system and storage control method that compress and store data elements
US8291189B2 (en) 2009-01-30 2012-10-16 Hitachi, Ltd. Storage system and storage control method that compress and store data elements
JP2012504795A (ja) * 2009-01-30 2012-02-23 株式会社日立製作所 データ要素を圧縮して格納するストレージシステム及び記憶制御方法
US8677096B2 (en) 2009-01-30 2014-03-18 Hitachi, Ltd. Storage system and storage control method that compress and store data elements
US8108646B2 (en) 2009-01-30 2012-01-31 Hitachi Ltd. Storage system and storage control method that compress and store data elements
WO2013160969A1 (en) 2012-04-27 2013-10-31 Hitachi, Ltd. Storage apparatus and data management method
US9098202B2 (en) 2012-04-27 2015-08-04 Hitachi, Ltd. Storage apparatus and data management method
WO2016203612A1 (ja) * 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置
JPWO2016203612A1 (ja) * 2015-06-18 2017-09-14 株式会社日立製作所 ストレージ装置
US10296229B2 (en) 2015-06-18 2019-05-21 Hitachi, Ltd. Storage apparatus
WO2018061161A1 (ja) * 2016-09-29 2018-04-05 株式会社日立製作所 ストレージ装置およびその制御方法
JP2019128906A (ja) * 2018-01-26 2019-08-01 株式会社日立製作所 ストレージ装置及びその制御方法
US10521122B2 (en) 2018-01-26 2019-12-31 Hitachi, Ltd. Storage apparatus and method of controlling same

Also Published As

Publication number Publication date
US20060212625A1 (en) 2006-09-21
JP4615337B2 (ja) 2011-01-19
US20080288678A1 (en) 2008-11-20
US7747799B2 (en) 2010-06-29

Similar Documents

Publication Publication Date Title
JP4615337B2 (ja) ストレージシステム
JP4741371B2 (ja) システム、サーバ装置及びスナップショットの形式変換方法
US8291189B2 (en) Storage system and storage control method that compress and store data elements
JP4275683B2 (ja) オブジェクト状態転送方法,オブジェクト状態転送装置およびオブジェクト状態転送プログラム並びにそのプログラムの記録媒体
US20130282997A1 (en) Computer system, storage apparatus and data transfer method
JP5320557B2 (ja) ストレージシステム
JP2007226347A (ja) 計算機システム、計算機システムの管理装置、及びデータのリカバリー管理方法
WO2015107666A1 (ja) ストレージ装置及びストレージ装置のキャッシュ制御方法
JP2009527847A (ja) Fatボリュームにおけるファイルベースの圧縮
JP2008217209A (ja) 差分スナップショット管理方法、計算機システム及びnas計算機
US20070146788A1 (en) Data mirroring method
US8850148B2 (en) Data copy management for faster reads
US9026754B2 (en) Storage apparatus and data management method
JP2016126632A (ja) ストレージ装置、ストレージシステム、データ読み出し方法、及びストレージプログラム
US20040107325A1 (en) Storage system, storage system control method, and storage medium having program recorded thereon
US20190188090A1 (en) Snapshot Deletion In A Distributed Storage System
JP4755244B2 (ja) 情報生成方法、情報生成プログラム及び情報生成装置
JP6269253B2 (ja) 分散ストレージシステム、記憶装置制御方法、および記憶装置制御プログラム
JP5272185B2 (ja) 計算機システム及びストレージシステム
US10691550B2 (en) Storage control apparatus and storage control method
US10452308B2 (en) Encoding tags for metadata entries in a storage system
JP2010257087A (ja) 情報処理装置、通信システムおよびプログラム
WO2016170619A1 (ja) 計算機システム
JP5441791B2 (ja) 検索機能付きファイルストレージ装置及びプログラム
JP2022169888A (ja) 管理装置、管理システム、管理方法、および管理プログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071025

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100714

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100727

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100922

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101019

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101020

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131029

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees