JP2020080130A - ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム - Google Patents
ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム Download PDFInfo
- Publication number
- JP2020080130A JP2020080130A JP2018214073A JP2018214073A JP2020080130A JP 2020080130 A JP2020080130 A JP 2020080130A JP 2018214073 A JP2018214073 A JP 2018214073A JP 2018214073 A JP2018214073 A JP 2018214073A JP 2020080130 A JP2020080130 A JP 2020080130A
- Authority
- JP
- Japan
- Prior art keywords
- volume
- area
- page
- write
- data set
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
Abstract
【課題】スナップショットに係るボリュームを容易且つ適切に管理できるようにする。【解決手段】複数のボリュームを記憶し、ボリュームに対するI/O処理を実行するストレージシステム200において、プロセッサ211を備え、第1ボリュームと、第1ボリュームからスナップショットによりコピーされた第2ボリュームとを有し、プロセッサ211を、ライト要求を受領した場合に、ライト要求の対象のボリュームに関係するコピー元のボリュームが、記憶領域がデータ量削減処理を適用する有効領域であるボリュームであるか否かを判定し、コピー元のボリュームが、記憶領域が有効領域であるボリュームである場合と、記憶領域が有効領域でないボリュームである場合とで、スナップショットにかかる第2ボリュームの作成処理を切り替えて実行するようにする。【選択図】図2
Description
本発明は、スナップショットペアとして作成されたボリュームを管理する技術に関する。
オールフラッシュアレイ(AFA:All Flash Array)などのフラッシュストレージの価格はフラッシュメモリの媒体コストによって決まるが、フラッシュメモリのビットコストは依然として高価である。そこで、オールフラッシュアレイでは、圧縮及び重複排除機能といったデータ削減量機能を用いて、フラッシュメモリに格納するデータのデータ量を削減することでビットコストの低減を図っている。
また、市場では、分析やテスト/開発などへのデータの二次活用への要求が高まっている。このため、コスト効率及びオペレーションまで含めたシミュレーションが可能なテスト環境を提供できる手段が必要となっている。その手段の1つにスナップショット機能がある。
スナップショットを維持する方式として、COW(Copy on Write)方式と、ROW(Redirect on Write)方式とがある。COW方式では、スナップショットのボリュームペアを作成後、コピー先となるスナップショットボリュームをコピー元であるオリジナルボリュームへポイントすることでデータを参照可能とする。オリジナルボリュームのデータが上書きされると、上書き前の旧データをスナップショットショットボリュームのデータの格納領域へ退避コピーする。
ROW方式では、スナップショットのボリュームペアを作成後、オリジナルボリュームとスナップショットボリュームとを共通領域のデータを同時にポイントするようにする。オリジナルボリュームに上書き要求がくると、オリジナルボリュームの固有領域に新データを格納し、オリジナルボリュームを、新ライトデータをポイントするようにする。ROW方式では、COW方式で行われる上書き要求時の旧データの退避コピーが不要となるため、COW方式に比べ、上書き要求時におけるレスポンス性能が高い。
スナップショットに関する技術としては、例えば、特許文献1の技術が知られている。
AFAでは、高価なフラッシュメモリのビットコスト削減を目的にデータ量を削減する圧縮及び重複排除機能を利用するユーザが多い。重複排除機能は、一般に、複数の論理アドレスにそれぞれ対応した複数のデータセットの内容の重複を検出した場合、複数の論理アドレスの参照先を、複数のデータセットのうちのいずれかのデータセットが格納される領域とし、残りのデータセットを削除することによりデータ量を削減する機能である。圧縮及び重複排除機能を使うと、その処理を実行する分だけ処理性能が低下する。そこで、本番業務の性能向上を重視するユーザのために、圧縮及び重複排除機能を使わない場合にデータの二次活用の環境を提供することが要請される。
本発明は、上記事情に鑑みなされたものであり、その目的は、スナップショットに係るボリュームを容易且つ適切に管理することのできる技術を提供することにある。
上記目的を達成するため、一観点に係るボリューム管理装置は、複数のボリュームを記憶し、ボリュームに対するI/O処理を実行するストレージシステムであって、プロセッサ部を備え、第1ボリュームと、第1ボリュームからスナップショットによりコピーされたボリュームである第2ボリュームとを有し、プロセッサ部は、ライト要求を受領した場合に、ライト要求の対象のボリュームに関係するコピー元のボリュームが、記憶領域がデータ量削減処理を適用する有効領域であるボリュームであるか否かを判定し、コピー元のボリュームが、記憶領域が有効領域であるボリュームである場合と、記憶領域が有効領域でないボリュームである場合とで、スナップショットにかかる第2ボリュームの作成処理を切り替えて実行する。
本発明によれば、スナップショットに係るボリュームを容易且つ適切に管理することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明において、「インターフェース部」は、1以上のインターフェースでよい。この1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし、2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明において、「メモリ部」は、1以上のメモリであり、典型的には主記憶デバイスでよい。メモリ部における少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。
また、以下の説明において、「PDEV部」は、1以上のPDEVであり、典型的には補助記憶デバイスでよい。「PDEV」は、物理的な記憶デバイス(Physical storage DEVice)を意味し、典型的には、不揮発性の記憶デバイス、例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)である。
また、以下の説明において、「記憶部」は、メモリ部とPDEV部の少なくとも一部とのうちの少なくとも1つ(典型的には少なくともメモリ部)である。
また、以下の説明において、「プロセッサ部」は、1以上のプロセッサである。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサであるが、GPU(Graphics Processing Unit)のような他種のプロセッサでもよい。少なくとも1つのプロセッサは、シングルコアでもよいしマルチコアでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、少なくとも1つのプロセッサは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサでもよい。
また、以下の説明において、「AAAテーブル」といった表現により、入力に対して出力が得られる情報を説明することがあるが、この情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「AAAテーブル」を「AAA情報」と言うことができる。
また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明において、「プログラム」を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部及び/又はインターフェース部などを用いながら行うため、処理の主語が、プロセッサ部(或いは、そのプロセッサ部を有するコントローラのようなデバイス)とされてもよい。
プログラムは、計算機のような装置にインストールされてもよいし、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体にあってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明において、「計算機システム」は、1以上の物理的な計算機を含んだシステムである。物理的な計算機は、汎用計算機でも専用計算機でもよい。物理的な計算機は、I/O(Input/Output)要求を発行する計算機(例えばサーバ計算機)として機能してもよいし、I/O要求に応答してデータのI/Oを行う計算機(例えばストレージ装置)として機能してもよい。すなわち、計算機システムは、I/O要求を発行する1以上のサーバ計算機であるサーバシステム、及び、I/O要求に応答してデータのI/Oを行う1以上のストレージシステムのうちの少なくとも1つでよい。少なくとも1つの物理的な計算機において、1以上の仮想的な計算機(例えばVM(Virtual Machine))が実行されてもよい。仮想的な計算機は、I/O要求を発行する計算機でもよいし、I/O要求に応答してデータのI/Oを行う計算機でもよい。
また、計算機システムは、1以上(典型的には複数)の物理的なノード装置で構成された分散システムでよい。物理的なノード装置は、物理的な計算機である。
また、物理的な計算機(例えばノード装置)が所定のソフトウェアを実行することにより、その物理的な計算機、又は、その物理的な計算機を含んだ計算機システムに、SDx(Software-Defined anything)が構築されてもよい。SDxとしては、例えば、SDS(Software Defined Storage)又はSDDC(Software-defined Datacenter)が採用されてもよい。例えば、ストレージ機能を有するソフトウェアが物理的な汎用の計算機で実行されることにより、SDSとしてのストレージシステムが構築されてもよい。
また、少なくとも1つの物理的な計算機(例えばストレージ装置)が、ホストシステムとしての1以上の仮想的な計算機と、ストレージシステムのストレージコントローラ(典型的には、I/O要求に応答してデータをPDEV部に対して入出力する装置)としての仮想的な計算機とが実行されてもよい。言い換えれば、このような少なくとも1つの物理的な計算機は、ホストシステムの少なくとも一部としての機能と、ストレージシステムの少なくとも一部としての機能の両方を有してもよい。
また、計算機システム(典型的にはストレージシステム)は、冗長構成グループを有してよい。冗長構成は、Erasure Coding、RAIN(Redundant Array of Independent Nodes)及びノード間ミラーリングのように複数のノード装置での構成でもよいし、PDEV部の少なくとも一部としての1以上のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループのように単一の計算機(例えばノード装置)での構成でもよい。
また、以下の説明において、「データセット」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。
また、以下の説明において、種々の対象の識別情報として、識別番号が使用されるが、識別番号以外の種類の識別情報(例えば、英字や符号を含んだ識別子)が採用されてもよい。
また、以下の説明において、同種の要素を区別しないで説明する場合には、参照符号(又は、参照符号のうちの共通符号)を使用し、同種の要素を区別して説明する場合は、要素の識別番号(又は参照符号)を使用することがある。例えば、記憶領域の単位である「ページ」を特に区別しないで説明する場合には、「ページ51」と記載し、個々のページを区別して説明する場合には、ページの番号を用いて「ページ#0」、「ページ#1」のように記載したり、参照符号を用いて「単独ページ51P」、「共通ページ51C」のように記載したりすることがある。
まず、第1実施形態に係る計算機システムにおけるボリューム管理処理の概要を説明する。
図1は、一実施形態に係るボリューム管理処理の概要を示すフローチャートである。
ここで、ボリューム管理装置の一例としてのストレージシステム200は、例えば、ユーザの操作に従って、オリジナルボリューム(コピー元ボリューム:第1ボリューム)のスナップショットをとり、オリジナルボリュームのスナップショットであるスナップショットボリューム(コピー先ボリューム:第2ボリューム)を作成する。これにより、オリジナルボリュームとスナップショットボリュームとはスナップショットペアとなる。そして、ストレージシステム200において、オリジナルボリュームとスナップショットボリュームとは、例えば、サスペンド状態に設定されて、オリジナルボリュームとスナップショットボリュームとのそれぞれが上位計算機(例えば、サーバシステム201(図2参照))からI/O可能な状態とされているものとする。
ストレージシステム200は、上位計算機から、ストレージシステム200で記憶しているボリュームに対するライト要求を受信すると、VOL管理テーブル(図5参照)の有効フラグを参照する(S11)。次いで、ストレージシステム200は、有効フラグにより、ライト要求先のボリューム(同図の説明において、対象ボリュームという)を含むスナップショットペアのオリジナルボリュームに圧縮及び重複排除機能が有効であるか否かを判定する(S12)。ここで、圧縮及び重複排除機能が有効とは、ボリュームの記憶領域に圧縮及び重複排除機能が適用可能されること、すなわち、記憶領域が有効領域であることを示す。
この判定の結果、オリジナルボリュームで、圧縮及び重複排除機能が有効である場合(S12:有効)には、ストレージシステム200は、圧縮及び重複排除機能が有効なボリュームに対するライト処理(機能有効ライト処理:図23参照)を実施し(S16)、処理を終了する。
一方、圧縮及び重複排除機能が無効である場合(S12:無効)には、ストレージシステム200は、対象ボリュームの種別を判定する(S13)。この結果、対象ボリュームの種別がスナップショットペアのコピー元ボリュームである場合(S13:コピー元ボリューム)には、ストレージシステム200は、圧縮及び重複排除機能が無効なコピー元ボリュームに対するライト処理(機能無効コピー元ボリュームライト処理:図18参照)を実行し(S14)、処理を終了する。一方、対象ボリュームの種別がコピー先ボリューム(スナップショットボリューム)である場合(S13:コピー先ボリューム)には、コピー元ボリュームが圧縮及び重複排除機能が無効である場合のコピー先ボリュームに対するライト処理(機能無効コピー先ボリュームライト処理)を実行し(S15)、処理を終了する。
ちなみに、ストレージシステム200が上位計算機からリード要求を受信した場合には、ストレージシステム200は、リード要求先のボリュームの属性、種別に関わらず、アドレス変換テーブル(図10参照)を参照し、リード要求の対象箇所がポイントしているプール領域からデータを読み出す。
なお、上記例は、ボリューム単位に圧縮及び重複排除機能を有効に設定できる場合を示しているが、例えば、ボリュームの一部の領域単位に圧縮及び重複排除機能を有効に設定できるようにしてもよい。この場合には、ボリュームの一部の領域単位、例えばブロックごとに圧縮及び重複排除機能が有効であるか否かを示す有効フラグを管理するようにすればよい。
本実施例では、ボリューム単位に圧縮及び重複排除機能が有効であるか否かを設定するものとして説明する。
次に、計算機システム100の構成について説明する。
図2は、一実施形態に係る計算機システムの構成図である。
計算機システム100は、サーバシステム201と、管理システム205と、ボリューム管理装置の一例としてのストレージシステム200とを備える。サーバシステム201と、ストレージシステム200とは、ネットワーク203を介して接続されている。ネットワーク203は、例えば、FC(Fibre Channel)ネットワークであってもよい。また、管理システム205と、ストレージシステム200とは、ネットワーク204を介して接続されている。ネットワーク204は、例えば、IP(Internet Protocol)ネットワークであってよい。なお、ネットワーク203及びネットワーク204は、同一の通信ネットワークでもよい。
サーバシステム201は、ストレージシステム200に格納されたボリュームを利用するアプリケーションが実行され、ストレージシステム200に対して、I/O先(例えばLUN(Logical Unit Number)のような論理ボリューム番号や、LBA(Logical Block Address)のような論理アドレス)を指定したI/O要求(ライト要求又はリード要求)を送信する。管理システム205は、ストレージシステム200を管理する。
ストレージシステム200は、プロセッサ部を含むコントローラの一例である。ストレージシステム200は、データ量削減処理を実行する機能として、圧縮機能及び重複排除機能を有する。また、ストレージシステム200は、データ量を削減したまま仮想的に論理ボリュームをコピーする機能として、ボリューム複製機能を有する。
ストレージシステム200は、1以上のPDEV220と、PDEV220に接続されたストレージコントローラ101と、を有する。
PDEV220は、記憶デバイスの一例であり、例えばHDD又はSSD(Solid State Drive)である。
ストレージコントローラ101は、I/F214と、I/F215と、I/F213と、メモリ212と、プロセッサ211とを有する。本実施形態では、ストレージコントローラ101では、メモリ212及びプロセッサ211の組が二重化されている。ここで、I/F214、I/F215、及びI/F213が、インターフェース部の一例である。メモリ212が、記憶部の一例である。プロセッサ211が、プロセッサ部の一例である。
プロセッサ211は、プログラムを実行することにより各種処理を実行する。例えば、プロセッサ211は、データのライト処理、リード処理、データの圧縮及び伸張を行う。なお、プロセッサ211は、圧縮及び伸張を行うハードウェア回路を含んでいてもよい。
I/F214は、サーバシステム201とストレージコントローラ101との間のデータのやり取りを仲介する通信インターフェースデバイスである。I/F215は、管理システム205とストレージコントローラ101との間のデータのやり取りを仲介する通信インターフェースデバイスである。I/F213は、複数のPDEV220とストレージコントローラ101との間のデータのやり取りを仲介する通信インターフェースデバイスである。
メモリ212は、プロセッサ211が実行するプログラム(例えば、ボリューム管理プログラム)と、プロセッサ211が使用するデータを記憶する。
図3は、一実施形態に係る重複排除を説明する図である。
ストレージシステム200においては、論理記憶領域が複数のレイヤにより構成されている。具体的には、ストレージシステム200においては、例えば、Thin Provisioningに従う仮想的な論理ボリューム(仮想ボリューム)501(501P等)で構成された上位レイヤと、仮想ボリュームに割り当てられ得る複数のページ(部分領域の一例)で構成されたプール503を含む下位レイヤとがある。ここで、レイヤについては、データを利用する上位装置(例えば、サーバシステム201)に近いほど上位といい、PDEV220に近いほど下位という。
論理ボリューム501は、容量仮想化技術(典型的にはThin Provisioning)に従う仮想的な論理ボリュームである。例えば、論理ボリューム501は、上位装置から認識され得る論理ボリュームである提供ボリューム501Pを含む。論理ボリューム501のライト先の論理アドレスに、プール503における未割当(空き)のページ51(51P,51C等)が割り当てられる。
本実施形態では、ストレージシステム200には、論理記憶領域として、複数のボリューム間で重複するデータセットが格納される空間である共通領域80と、複数のボリューム間で重複しないデータセットが格納される空間である単独領域70とが用意される。言い換えれば、ストレージシステム200における論理アドレス空間が、共通領域80と単独領域70とに論理的に区別される。
重複排除を行うために、ストレージコントローラ101は、提供ボリューム#0をライト先としたライト要求に従う対象のデータセット(同図の説明において、対象データセットという)が、いずれかの1以上のデータセットと重複するデータセット(重複データセット)であるか否かを判定する重複判定処理を行う。重複判定処理は、ライト要求の処理に同期して行われる処理(インプロセス)と、ライト要求に従う対象データセットの格納の後にライト要求の処理と非同期に行われる処理(ポストプロセス)とのいずれであってもよい。
重複判定処理の結果、対象データセットがいずれのデータセットとも重複しないデータセット(単独データセット:例えば、図3のデータセットA)であれば、ストレージコントローラ101は、データセットAの格納先を、例えば、単独領域70に属し、提供ボリューム#0に対応したページ#0とする。単独領域70に属するページを、「単独ページ」ということがある。図3の例では、ページ#0及び#1の各々が、単独ページ51Pである。
一方、重複判定処理の結果、対象データセットがいずれかの1以上のデータセットと重複するデータセット(重複データセット:例えば、図3のデータセットB)であれば、ストレージコントローラ101は、データセットBの格納先を、共通領域80に属するページ#2とする。ページ#2は、データセットBの各々のライト先(提供ボリューム#0及び#1)から直接的又は間接的に参照される。共通領域80に属するページを、以下、「共通ページ」ということがある。図3の例では、ページ#2が、共通ページ51Cである。
重複判定処理がポストプロセスの場合、ストレージコントローラ101は、ライト処理において、データセットBを、提供ボリューム#0及び#1にそれぞれ割り当てられている単独ページ#0及び#1のそれぞれに格納した後に、単独ページ#0又は#1のデータセットBを共通ページ#2にコピーし、単独ページ#0及び#1の各々からデータセットBを削除する。
次に、メモリ212の構成について詳細に説明する。
図4は、一実施形態に係るメモリの構成図である。
メモリ212は、ローカルメモリ401、キャッシュメモリ402、及び共有メモリ404とのメモリ領域を含む。これらのメモリ領域のうちの少なくとも1つは、独立したメモリで構成されてもよい。
ローカルメモリ401は、このローカルメモリ401を含むメモリ212と同一組に属するプロセッサ211により使用される。ローカルメモリ401には、リードプログラム411、データ量削減プログラム414、及び、ボリューム複製制御プログラム418が格納される。これらのプログラムがボリューム管理プログラムに相当する。これらプログラムについては後述する。
キャッシュメモリ402には、PDEV220に対してライト又はリードされるデータセットが一時的に格納される。
共有メモリ404は、この共有メモリ404を含むメモリ212と同一組に属するプロセッサ211、及び異なる組に属するプロセッサ211の両方により使用される。共有メモリ404には、各種管理情報として、VOL管理テーブル421、アドレス変換テーブル422、プール管理テーブル423、ページ変換テーブル425、ページ割当管理テーブル426、サブブロック管理テーブル427、重複管理テーブル430、及び共通領域管理テーブル431が格納される。
プール管理テーブル423は、プール503に関する情報を保持するテーブルである。プール管理テーブル423は、例えば、プール503毎のプール#(プール503の番号)、RG#(プール503の基になっている1以上のRAIDグループの番号)、プール容量(プール503の容量)、及びプール使用容量(プール容量のうち使用されている容量(典型的には、プール503のうちの割当て済ページの総容量))の情報を保持する。プール管理テーブル423以外のテーブルの詳細については、後述する。
次に、VOL管理テーブルについて詳細に説明する。
図5は、一実施形態に係るVOL管理テーブルの構成図である。
VOL管理テーブル421は、VOL(ボリューム)に関する情報を保持する。ここで、「VOL」には、提供ボリューム501Pのようにサーバシステム201に提供される論理ボリュームも、共通ボリューム501C及び追記ボリューム502(図12、図14参照)のようにサーバシステム201に提供されない論理ボリュームも含まれる。また、ボリューム複製により、新たにサーバシステム201に提供される提供ボリューム501Sも、「VOL」に含まれる。
VOL管理テーブル421は、VOL毎にエントリを有する。各エントリは、VOL#801、VOL属性802、VOL容量803、プール#804、有効フラグ805、及びVOL種別806のフィールドを含む。以下、1つのVOL(「対象VOL」と呼ぶ)に対応するエントリを例に取って説明する。
VOL#801には、対象VOLの番号(識別番号:ボリューム番号:VOL#)が格納される。VOL属性802には、対象VOLの属性の情報が格納される。属性としては、例えば、VOLが提供ボリュームであることを示す“提供”、追記ボリュームであることを占める“追記”、共通ボリュームであることを示す“共通”、ボリューム複製による旧世代の提供ボリュームであることを示す“重複単独”がある。VOL容量803には、対象VOLの容量の情報が格納される。プール#804には、対象VOLに関連付けられているプール503の番号の情報が格納される。有効フラグ#805には、対象VOLの記憶領域が圧縮及び重複排除が有効である領域(有効領域)であるか否かを示す有効フラグが格納される。有効フラグは、圧縮及び重複排除が有効である場合には、“有”であり、圧縮及び重複排除が無効である場合には、“無”である。VOL種別806には、スナップショットをとった時(スナップショットを生成した時)の対象VOLの種別(PVOL(Primary VOL:第1ボリューム)、又はSVOL(Secondary VOL:第2ボリューム))が格納される。
次に、アドレス変換テーブルについて詳細に説明する。
図6は、一実施形態に係るアドレス変換テーブルの構成図である。
アドレス変換テーブル422は、参照元の論理アドレスと参照先の論理アドレスとの関係に関する情報を保持する。アドレス変換テーブル422は、論理ボリューム501(後述するレイヤ1の論理ボリューム)毎に設けられる。
アドレス変換テーブル422は、論理ボリューム501のブロック601毎にエントリを有する。各エントリは、VOL内アドレス901、参照先VOL#902、参照先VOL内アドレス903、データサイズ904、及び参照先VOL種別905のフィールドを含む。以下、1つのブロック601(「対象ブロック」と呼ぶ)に対応するエントリを例に取って説明する。
VOL内アドレス901には、論理ボリューム501における対象ブロックの論理アドレス(例えば、先頭の論理アドレス)が格納される。参照先VOL#902には、対象ブロックの参照先のVOL(追記ボリューム又は共通ボリューム)の番号(VOL#)が格納される。参照先VOL内アドレス903には、対象ブロックの参照先のVOLにおける対応する論理アドレス(参照先VOL内論理アドレス)が格納される。データサイズ904には、対象ブロックをライト先としたデータセットのサイズ(圧縮した場合には圧縮後のサイズ)が格納される。参照先VOL種別905には、対象ブロックの参照先のVOLの種別(参照先VOL種別)が格納される。参照先VOL種別には、参照先のVOLが追記ボリュームであることを示す“単独”と、参照先のVOLが共通ボリュームであることを示す“共通”と、参照先のVOLが重複単独ボリュームであることを示す“重複単独”とがある。
次に、ページ変換テーブルについて詳細に説明する。
図7は、一実施形態に係るページ変換テーブルの構成図である。
ページ変換テーブル425は、論理ボリューム501又は追記ボリューム502における領域(例えば、ページ51のサイズと同数分のブロック601)とページ51との関係に関する情報を保持する。ページ変換テーブル425は、論理ボリューム501及び追記ボリューム502のそれぞれ毎に設けられる。
ページ変換テーブル425は、論理ボリューム501又は追記ボリューム502における領域毎にエントリを有する。各エントリは、VOL内アドレス1101、割当フラグ1102、及びページ#1103のフィールドを含む。以下、1つの領域(「対象領域」と呼ぶ)に対応するエントリを例に取って説明する。
VOL内アドレス1101には、対象領域の論理アドレス(例えば、先頭の論理アドレス)が格納される。割当フラグ1102には、対象領域にページ51が割り当てられているか否かを示す割当フラグが格納される。割当フラグは、対象領域にページ51が割当てられている場合には、“割当済”に設定され、対象領域にページ51が割当てられていない場合には、“未割当”に設定される。ページ番号1103には、対象領域に割り当てられているページ51の番号(ページ#)が格納される。
次に、ページ割当管理テーブルについて詳細に説明する。
図8は、一実施形態に係るページ割当管理テーブルの構成図である。
ページ割当管理テーブル426は、プール503毎に設けられる。ページ割当管理テーブル426は、ページ51とその割当先との関係に関する情報を保持する。ページ割当管理テーブル426は、ページ51毎にエントリを有する。各エントリは、ページ#1201、割当フラグ1202、割当先VOL#1203、及び割当先VOL内アドレス1204のフィールドを含む。1つのページ51(「対象ページ」と呼ぶ)に対応するエントリ「を例に取って説明する。
ページ#1201には、プール503における対象ページの番号(ページ#)が格納される。割当フラグ1202には、対象ページが割り当てられているか否かを示す割当フラグが格納される。割当フラグは、対象ページが割当てられている場合には、“割当済”に設定され、対象ページが割り当てられていない場合には、“未割当”に設定される。割当先VOL#1203には、対象ページの割当先のVOL(論理ボリューム501又は追記ボリューム502)の番号(割当先VOL#)が格納される。割当先VOL内アドレス1204には、対象ページの割当先VOLにおける割当先の領域の論理アドレス(例えば、先頭論理アドレス)が格納される。
次に、サブブロック管理テーブルについて詳細に説明する。
図9は、一実施形態に係るサブブロック管理テーブルの構成図である。
サブブロック管理テーブル427は、追記ボリューム502毎に設けられる。サブブロック管理テーブル427は、サブブロック602(図13参照)に関する情報を保持する。サブブロック管理テーブル427は、サブブロック602毎にエントリを有する。各エントリは、ページ#1301、ページ内アドレス1302、割当フラグ1303、VOL内アドレス1304、及びサブブロックサイズ1305のフィールドを含む。以下、1つのサブブロック602(「対象サブブロック」と呼ぶ)に対応するエントリを例に取って説明する。
ページ#1301には、対象サブブロックを含むページ51の番号(ページ#)が格納される。ページ内アドレス1302には、ページ51における対象サブブロックの論理アドレスが格納される。割当フラグ1303には、対象サブブロックが割り当てられているか否か、すなわち、対象サブブロックが使用中であるか否かを示すフラグが格納される。このフラグは、対象サブブロックが割当てられている場合には、“割当済”が設定され、割当てられていない場合には、“未割当”が設定される。VOL内アドレス1304には、対象サブブロックの割当先の論理アドレス(追記ボリューム502における領域の論理アドレス)が格納される。サブブロックサイズ1305には、対象サブブロックのサイズ(対象サブブロックに格納されている圧縮後のデータセットのサイズ)が格納される。なお、ページ内アドレス1302の値と、VOL内アドレス1304の値とは同じであってもよい。
次に、重複管理テーブルについて詳細に説明する。
図10は、一実施形態に係る重複管理テーブルの構成図である。
重複管理テーブル430は、重複データセットの位置(論理アドレス)に関する情報を保持する。重複管理テーブル430は、例えば、共通ボリューム501Cを構成する複数の共通ブロック601Cの各々について、VOL内アドレス1401を有する。VOL内アドレス1401には、共通ブロック601Cの論理アドレスが格納される。また、重複管理テーブル430においては、参照元が存在する共通ブロック601Cのアドレスに対して、参照元のブロックに対応するエントリ1402が例えばキュー形式で関連付けられる。参照元のエントリ1402は、VOL#1403と、VOL内アドレス1404とを含む。VOL#1403には、参照元のブロック601を含む論理ボリューム501の番号が格納される。VOL内アドレス1404には、参照元のブロック601の論理アドレスが格納される。
次に、共通領域割当管理テーブルについて詳細に説明する。
図11は、一実施形態に係る共通領域割当管理テーブルの構成図である。
共通領域管理テーブル431は、共通ボリューム501C(図14参照)毎に設定される。共通領域管理テーブル431は、共通ボリューム501Cの空き状況に関する情報を保持する。共通領域管理テーブル431は、例えば、共通ボリューム501Cを構成する複数の共通ブロック601C(図14参照)毎のエントリを有する。各エントリは、VOL内アドレス1801、使用中フラグ1802、及び参照フラグ1803のフィールドを含む。以下、1つの共通ブロック601C(「対象ブロック」と呼ぶ)に対応するエントリを例に取って説明する。
VOL内アドレス1801には、対象ブロックの論理アドレスが格納される。使用中フラグ1802には、対象ブロックが使用中であるか、使用中でないかを示すフラグ(使用中フラグ)が格納される。本実施形態では、使用中フラグは、対象ブロックが使用中である場合には、“使用中”が設定され、使用中でない場合には、“未使用”が設定される。ここで、使用中フラグが“使用中”である場合には、対象ブロックに直接的(追記ボリューム非経由)又は間接的(追記ボリューム経由)にページ51が割り当てられていることを意味する。一方、フラグが“未使用”である場合には、対象ブロックにページ51が割り当てられていないこと、すなわち、空きであることを意味する。
参照フラグ1803には、共通ボリューム501Cが参照しているか否かを示すフラグ(参照フラグ)が格納される。参照フラグは、対象ブロックについて1以上の参照元となるブロック601が存在する場合には、“有”に設定され、存在しない場合には、“無”に設定される。
次に、ストレージシステム200の記憶階層について説明する。
図12は、一実施形態に係るストレージシステムの記憶階層を説明する図である。
ここで、以下の説明では、レイヤは、データを利用する上位装置に近いほど上位といい、PDEVに近いほど下位という。そして、n(nは自然数)層目のレイヤを「レイヤn」と呼ぶ。このnは、値が小さい程、上位のレイヤであることを示している。
ストレージシステム200内の記憶階層には、レイヤ1からレイヤ4の記憶階層がある。
レイヤ1(図3における上位レイヤの一例)の論理記憶領域としては、提供ボリューム501Pがある。提供ボリューム501Pは、サーバシステム201に提供される。すなわち、提供ボリューム501Pは、サーバシステム201から可視の論理ボリュームである。また、レイヤ1の論理記憶領域として、本実施形態では、後述する共通領域80に属する論理ボリュームである共通ボリュームがある。共通ボリュームは、サーバシステム201に提供されない。すなわち、共通ボリュームは、サーバシステム201から不可視の論理ボリュームである。更に、レイヤ1の論理記憶領域として、後述する単独領域70に属する論理ボリュームである単独ボリュームがある。単独ボリュームは、サーバシステム201に提供されない。すなわち、単独ボリュームは、サーバシステム201から不可視の論理ボリュームである。
レイヤ2の論理記憶領域としては、追記ボリューム502がある。追記ボリューム502は、追記用の論理ボリュームである。1つの追記ボリューム502には、いずれか1つの論理ボリューム501(例えば、提供ボリューム501Pなど)が関連付けられる。逆に、1つの論理ボリューム501には、1又は複数の追記ボリューム502が関連付けられる。従って、追記ボリューム502(レイヤ2の論理記憶領域)と、論理ボリューム501(レイヤ1の論理記憶領域)とは、1対1又は1対多の関係である。なお、本実施形態では、説明を簡単にするために、追記ボリューム502と論理ボリューム501とは1対1の関係であるとする。
レイヤ3(図3を用いて説明した下位レイヤの一例)の論理記憶領域としては、プール503がある。プール503は、1以上のRG504に基づく論理記憶領域である。プール503は、複数のページ51で構成されている。なお、プール503は、少なくとも1つのRG504に代えて、又は加えて、ストレージシステム200の外部の記憶資源に基づく記憶領域を含んでいてもよい。
レイヤ4の論理記憶領域としては、RG504がある。RG504は、複数のPDEV220で構成されたRAIDグループの空間(記憶領域)である。
図12に示す提供ボリューム501Pの一部は、2以上の提供ボリューム501Pのうちの少なくとも一部であり、圧縮又は重複排除の少なくとも一方のデータ量削減機能が有効とされている領域(「有効領域」という)である。一方、2以上の提供ボリューム501Pのうち有効領域以外の領域は、圧縮及び重複排除のデータ低減機能が無効とされている領域(「無効領域」という)である。
ストレージコントローラ101は、ライト対象のデータセットAのライト先が有効領域(ここでは、圧縮が有効)である場合、ライト対象のデータセットAを圧縮し、提供ボリューム501Pに対応した追記ボリューム502に割り当てられたページ51Pa(ライト先のページに対して割り当てられた単独ページであるページ51Pa)に、圧縮されたデータセットA´を追記する。
ページ51Paは、提供ボリューム501Pに対応した追記ボリューム502に割り当てられたページ51、言い換えれば、提供ボリューム501Pに間接的に割り当てられたページ51である。このような追記ボリューム502に割り当てられたページ(提供ボリューム501Pに間接的に割り当てられたページ)を「追記ページ」という。
一方、ストレージコントローラ101は、ライト対象のデータセットBのライト先が無効領域の場合、ライト対象のデータセットBを圧縮することなしに、ライト先のページに対して割り当てられたページ51Pbに、非圧縮のデータセットBを格納する。ページ51Pbは、提供ボリューム501Pに直接的に(追記ボリューム502非経由で)割り当てられたページ51である。提供ボリューム501Pに直接的に割り当てられたページ51には、上書きすることができ、この提供ボリューム501Pに直接的に割り当てられたページを「上書きページ」という。
次に、ページへの追記について説明する。
図13は、一実施形態に係るページへの追記を説明する図である。
論理ボリューム501は、複数の単位領域である複数のブロック601で構成されている。本実施形態では、データセットは、ブロック単位のデータである。
論理ボリューム501に対応した追記ボリューム502に割り当てられたページ51Paには、圧縮後のデータセットが追記されていく。ここで、ページ51Paにおいて、圧縮後のデータセットが占める領域を、「サブブロック602」という。なお、ページ51Paには、非圧縮のデータセットが追記されてもよいが、本実施形態では、圧縮後のデータセットが追記されるものとして説明する。プール503には、ページ51Paの状態が反映される。
次に、重複排除処理について説明する。
図14は、一実施形態に係る重複排除処理を説明する図である。図14において、(A)は、重複排除処理前の状態の例を示し、(B)が、重複排除処理後の状態を示している。
図14(A)及び(B)に示すように、論理ボリューム501として、提供ボリューム501Pと、共通ボリューム501Cとがある。共通ボリューム501Cは、共通領域80に属し、サーバシステム201に提供されない論理ボリュームである。図14においては、共通ボリューム501Cの少なくとも一部が有効領域である。なお、全体が有効領域である共通ボリュームと、全体が無効領域である共通ボリュームとを備えてもよい。
また、ストレージシステム200においては、アドレス変換テーブル422(422P、又は422C)及び追記ボリューム502(502P又は502C)が、論理ボリューム501毎に設けられている。
以下の説明において、論理ボリューム#m(VOL#が“m”の論理ボリューム(mは0以上の整数))に対応したアドレス変換テーブル422を、「アドレス変換テーブル#m」ということがある。
また、以下の説明において、論理ボリューム#mに対応した追記ボリューム502を、「追記ボリューム#m」ということがある。
また、以下の説明において、下記の用語を使用することがある。
・提供ブロック:提供ボリュームにおけるブロック。
・共通ブロック:共通ボリュームにおけるブロック。
・重複先ブロック:重複データセットのライト先(コピー先)とされた共通ブロック。
・追記単独ページ:単独ページ且つ追記ページであるページ。
・追記共通ページ:共通ページ且つ追記ページであるページ、すなわち、共通ボリュームに対応した追記ボリュームに割り当てられたページ。
・提供ブロック:提供ボリュームにおけるブロック。
・共通ブロック:共通ボリュームにおけるブロック。
・重複先ブロック:重複データセットのライト先(コピー先)とされた共通ブロック。
・追記単独ページ:単独ページ且つ追記ページであるページ。
・追記共通ページ:共通ページ且つ追記ページであるページ、すなわち、共通ボリュームに対応した追記ボリュームに割り当てられたページ。
ストレージシステム200には、提供ボリューム#1及び#2があるので、それぞれに対応するアドレス変換テーブル#1及び#2と、追記ボリューム#1及び#2がある。また、共通ボリューム#3があるので、アドレス変換テーブル#3と追記ボリューム#3とがある。ストレージシステム200では、追記ボリューム#1及び#2が、単独領域70に属し、追記ボリューム#3が、共通領域80に属する。
重複排除処理前においては、(A)に示すように、提供ボリューム#1及び#2がそれぞれ有する2つの提供ブロック601Pの各々に、データセットAが存在している。結果として、追記ボリューム#1及び#2にそれぞれ割り当てられた2つの追記単独ページ(単独ページ51P)の各々に、圧縮後データセットA’(サブブロック602P)が存在する。
アドレス変換テーブル#1及び#2の各々においては、データセットAのライト先提供ブロック(提供ブロック601P)の論理アドレスの参照先が、追記単独ページ51Pにおけるサブブロック602Pの論理アドレスとなっている。
以下、重複排除処理における処理動作について説明する。
図15は、一実施形態に係る重複排除処理のフローチャートである。なお、図15の説明において、図14(B)を適宜参照する。
ストレージコントローラ101は、複数の提供ボリューム501P間で重複するデータセット(重複データセット)が存在することを検出できたか否かを判定する(S2110)。この結果、重複するデータセットが存在することを検出できなかった場合(S2110:検出しない)には、重複排除処理を終了する。
一方、重複するデータセットが存在することを検出できた場合(S2110:検出した)には、ストレージコントローラ101は、重複するデータセット(ここでは、圧縮されたデータセットの伸張後のデータセットに相当)を、提供ボリュームにおける有効領域70の提供ブロック601Pから、共通ボリューム501Cの有効領域におけるいずれかの未使用の共通ブロック601Cにコピーする。コピー先の共通ブロック601Cが、重複先ブロックである。次いで、ストレージコントローラ101は、重複先ブロック(共通ブロック601C)に対応する追記ボリューム502Cにページを割り当てる(S2112)。割り当てられたページが、追記共通ページ(共通ページ51C)である。例えば、図14の例では、S2112では、提供ボリューム#1及び#2に重複するデータセットAが存在することが検出され、重複データセットA(圧縮後データセットA’の伸張後のデータセットに相当)を格納されるページとして、提供ボリューム#1及び#2における有効領域の提供ブロック601Pのページから、共通ボリューム#3の有効領域におけるいずれかの未使用の共通ブロック601Cの共通ページに変更される。
次いで、ストレージコントローラ101は、重複データセットを圧縮し(S2114)、圧縮後のデータセット(圧縮後データセット)を、追記共通ページに追記する(S2116)。例えば、図14(B)の例では、ストレージコントローラ101は、S2114で重複データセットAを圧縮し、S2116で圧縮後データセットA’を、追記共通ページに追記する。
次いで、ストレージコントローラ101は、アドレス変換テーブル422Cを更新する(S2118)。ストレージコントローラ101は、アドレス変換テーブル422Cにおける、重複先ブロック(共通ブロック601C)の論理アドレスの参照先を、追記共通ページ(共通ページ51C)におけるサブブロック602C(圧縮後データセットが存在するサブブロック602C)の論理アドレスに更新する。例えば、図14(B)の例では、ストレージコントローラ101は、アドレス変換テーブル#3において、重複先ブロック(共通ブロック601C)の論理アドレスの参照先を、共通ページ51Cにおける圧縮後データセットA´が存在するサブブロック602Cの論理アドレスとする。
次いで、ストレージコントローラ101は、アドレス変換テーブル422Pを更新する(S2120)。ストレージコントローラ101は、アドレス変換テーブル422Cにおける提供ブロック601Pの論理アドレスの参照先を、追記単独ページにおけるサブブロック602P(圧縮後データセットが存在するサブブロック602P)の論理アドレスに代えて、重複先ブロックの論理アドレスとする。例えば、図14(B)の例では、ストレージコントローラ101は、アドレス変換テーブル#1、#3において、提供ブロック601Pの論理アドレスの参照先を、共通ページ51Cにおける圧縮後データセットA´が存在するサブブロック602Cの論理アドレスとする。
次いで、ストレージコントローラ101は、追記ボリューム502Pにそれぞれ割り当てられた2つの追記単独ページの各々のうち、圧縮後データセットが格納されているサブブロック602Pを、点線で示すように、無効サブブロック(未割当)として管理する(S2122)。図14(B)の例では、追記ボリューム#1、#3におけるサブブロック602Pを無効サブブロックとする。
次いで、ストレージコントローラ101は、重複管理テーブル430を更新する(S2124)。ストレージコントローラ101は、重複管理テーブル430において、重複先ブロック(共通ブロック601C)の論理アドレスの参照元を、コピー元の2つの提供ブロック601Pの論理アドレスとする。
なお、上記した重複排除処理において、ストレージコントローラ101は、重複データセットを共通ブロック601Cにコピーすることに代えて、いずれかの圧縮後データセットを共通領域80に属する共通ページ51Cに追記的にコピーしてもよい。そして、ストレージコントローラ101は、2つの提供ブロック601Pの論理アドレスの参照先を、コピー先ページ(共通ページ51C)のサブブロック602Cの論理アドレスとし、コピー元のサブブロック602Pを無効サブブロックとしてもよい。このようにする場合には、共通ボリューム501Cはなくてもよい。
また、ストレージコントローラ101が重複データセットを共通ブロック601Cにコピーする場合、共通ブロック601Cの記憶領域としてキャッシュメモリ402の記憶領域が割り当てられてもよい。
次に、ボリューム複製(コピー)処理について説明する。ここで、コピー先のボリュームが有効領域となっているものとして説明する。なお、以下の説明において、データセットの圧縮及び伸張は、データ量削減プログラム414により(より正確には、データ量削減プログラム414を実行するプロセッサ211により)、実行されてもよい。
ボリューム複製処理は、例えば、いずれかの提供ボリューム501Pを指定したボリューム複製要求を受け付けた場合に実行される。
ボリューム複製制御プログラム418(正確には、ボリューム複製制御プログラム418を実行するプロセッサ部211)は、コピー先の提供ボリューム501Sに対応する追記ボリューム502Sを作成し、VOL管理テーブル421に新たなエントリを追加し、そのエントリのVOL#801に複製先の追記ボリューム502Sの番号を設定し、VOL属性802に“追記”を設定し、VOL容量803に作成した追記ボリューム502Sの容量を設定し、プール#804に追記ボリューム502Sに割り当てられるプールの番号を設定し、有効フラグ805に“有効”を設定する。
次いで、ボリューム複製制御プログラム418は、図示しないスナップショット管理テーブルにおいて、コピー元の提供ボリューム501Pの番号と、コピー先の提供ボリューム501Sの番号とを対応付けて格納することにより、これらの提供ボリューム501P,501Sをスナップショットペアとして登録する。
なお、ボリュームを有効領域とすると、重複排除処理を行う分、処理性能が低下するため、処理性能を重視する場合は、ボリュームを無効領域とするようにすればよい。その場合は、コピー元の提供ボリュームを無効領域とし、コピー先のボリュームを有効領域とすればよい。なお、ボリュームの複製(コピー)は複数世代とることもできる。
次に、コピー元の提供ボリュームが無効領域であり、コピー先の提供ボリュームが有効領域である場合において、提供ボリュームをコピーする例を、図16〜図20を参照して説明する。なお、この例は、スナップショットのCOW方式を採用した方法である。
図16は、一実施形態に係るボリュームペアの複製を説明する図である。
ここで、複製前において、コピー元の提供ボリューム#1は、単独データセットAと単独データセットBとを持っているとすると、複製後においては、提供ボリューム#1のコピー先のボリューム#11は、提供ボリューム#1の単独データセットAと単独データセットBを参照するようになる。
すなわち、提供ボリューム#1を複製した後においては、単独領域70に存在する単独データセットAと単独データセットBとは、提供ボリューム#1から参照され、また、提供ボリューム#11からも提供ボリューム#1の論理アドレスを介して間接的に参照されるようになる。
提供ボリューム#11のアドレス変換テーブル422は、例えば、データセットAが格納される領域に対応するエントリ、すなわち、その領域のボリューム内アドレスがVOL内アドレス901に格納されるエントリにおいて、参照先VOL#902には、提供ボリューム#1の番号が格納され、参照先VOL内アドレス903には、提供ボリューム#1のデータセットAが格納されているボリューム内アドレスが格納され、データサイズ904には、コピー元の提供ボリューム#1は無効領域であるため、無効を示す値(例えば−1など)が格納され、参照先VOL種別905には、提供ボリューム#1のVOL属性が格納される。なお、データセットBについても同様にアドレス変換テーブル422が更新される。
複製前、提供ボリューム#1からのみ参照されていた単独データセットであるデータセットAとデータセットBは、複製後、提供ボリューム#1と提供ボリューム#11とから参照される共通データセットになる。しかし、データセットAとデータセットBとは重複データセットではあるが、共通領域80には存在せず、単独領域70に存在する。従って、複製前、単独領域70に存在する単独ページは、複製後、共通ページになるわけではない。ここで、単独領域70に存在しながら、重複データセットを格納する単独ページを「重複単独ページ」ということとする。
次に、複製後のペアがサスペンド状態になった時に無効領域であるコピー元の提供ボリュームのデータセットに他のデータセットをライトするライト要求を受信した場合のライト処理について説明する。
図18は、一実施形態に係る機能無効コピー元ボリュームライト処理のフローチャートである。図18は、図1のステップS14に対応する処理である。
ストレージコントローラ101(具体的にはボリューム複製制御プログラム418を実行するプロセッサ221)は、ライト要求のライト先に格納されているデータセット(旧データセット)が他(コピー先のボリューム)から参照されているか否かを判定する(S2601)。参照されているか否かの判定の方法は、VOL管理テーブル421の対象となる提供ボリュームに対応するエントリを参照し、エントリのVOL種別806に“PVOL”が登録されていれば、この提供ボリュームの複製が作成されていることが特定でき、複製が作成されていることが特定できた場合には、図示しないスナップショット管理テーブルからコピー先のボリュームのVOL#を検索し、検索したVOL#のボリュームに対応するアドレス変換テーブル422において、参照先VOL#902にコピー元の提供ボリュームのVOL#が設定されている場合には、データセットが他から参照されていると判定する。別の方法としては、VOL#に対応し、ボリューム内の各VOL内アドレスに対応するビットを含むビットマップを記憶するようにし、各ビットを対応するVOL内アドレスの領域が他から参照されているか否かを示す値に設定するようにし、そのビットマップを参照することにより、判定する方法がある。
判定の結果、他から参照されていない場合(S2601:No)には、ストレージコントローラ101は、処理をステップS2607に進める。
一方、他から参照されている場合(S2601:Yes)には、旧データセットは、他の提供ボリュームから参照されているため、コピー元の提供ボリュームをライト対象のデータセット(ライトデータセット)に更新する前に、この旧データセットを共通領域80に新たに確保したページへの退避コピーが必要になる。ここで、コピー先のボリュームは有効領域であるため、共通領域80へのコピーをする。ストレージコントローラ101は、共通ブロック601Cに対応した追記ボリューム602Cにページを割り当てる(S2602)。
次いで、ストレージコントローラ101は、旧データセットを読み出して圧縮し(S2603)、圧縮後データセットを、追記共通ページに追記する(S2604)。
ストレージコントローラ101は、共通ボリューム501Cのアドレス変換テーブル422を更新する(S2605)。具体的には、ストレージコントローラ101は、アドレス変換テーブル422の共通ブロック601Cの論理アドレスに対応するエントリにおける参照先VOL#902に追記ボリューム502CのVOL#を設定し、参照先VOL内アドレス903に追記共通ページ(共通ページ51C)におけるサブブロック602C(圧縮後データセットが存在するサブブロック602C)の論理アドレスを設定する。
次に、ストレージコントローラ101は、提供ボリューム501Sのアドレス変換テーブルを更新する(S2606)。すなわち、ストレージコントローラ101は、アドレス変換テーブル422の提供ブロック601Pの論理アドレスの参照先を、追記単独ページにおけるサブブロック602P(圧縮後データセットが存在するサブブロック602P)の論理アドレスに代えて、共通ブロック601Cの論理アドレスに更新する。具体的には、ストレージコントローラ101は、アドレス変換テーブル422の提供ブロック601Pの論理アドレスに対応するエントリの参照先VOL#902に共通ボリューム501CのVOL#を設定し、参照先VOL内アドレス903に共通ブロック601Cの論理アドレスを設定する。
ステップS2607では、提供ボリューム501Pの単独領域70のページのライト対象の領域にライトデータセットを上書きして更新し(S2607)、処理を終了する。
ステップS2607にて、提供ボリュームが管理するサイズ(ブロック)より、ライト要求されたデータセットのサイズが小さい場合には、ライト要求の対象位置が含まれるブロックを一旦読み出し、圧縮されている場合には伸張し、ライトデータをブロックの対象部分に上書きし、その後、ブロック全体を再度圧縮する処理を行う。
ステップS2607にて、提供ボリュームが管理するサイズ(ブロック)より、ライト要求されたデータセットのサイズが小さい場合には、ライト要求の対象位置が含まれるブロックを一旦読み出し、圧縮されている場合には伸張し、ライトデータをブロックの対象部分に上書きし、その後、ブロック全体を再度圧縮する処理を行う。
なお、この後、図15に示す重複判定処理が実行されると、共通ブロックが他の提供ボリュームのブロックと重複していたら、重複管理テーブル430が更新されることとなる。この場合、重複管理テーブル430においては、重複先ブロック(共通ブロック601C)の論理アドレスの参照元が、コピー元の2つの提供ブロック601Pの論理アドレスに更新される。
次に、図16に示すように複製後のペアがサスペンド状態になった時に無効領域であるコピー元の提供ボリュームのデータセットAに他のデータセットEをライトするライト要求を受信した場合のライト処理の具体例について説明する。
図17は、一実施形態に係るボリュームペアがサスペンド状態であるときのコピー元ボリュームへのライト処理を説明する図である。なお、図16を適宜参照して説明する。
機能無効コピー元ボリュームライト処理のステップS2601では、データセットAは、提供ボリューム#1とは別の提供ボリューム#11から参照されているため、処理は、ステップS2602へ進む。データセットAは、提供ボリューム#11から参照されているため、提供ボリューム#1の単独データセットAを更新する前に、データセットAを共通領域80に新たに確保したページ#2に退避コピーが必要になる。複製先の提供ボリューム#11が有効領域であるため、共通領域80へのコピーをする。
ステップS2602では、ストレージコントローラ101は、共通ブロック601Cに対応した追記ボリューム#3にページを割り当てる。割り当てられたページは、追記共通ページ(共通ページ51C)である。ステップS2603では、ストレージコントローラ101は、データセットAを読み出して圧縮し、ステップS2604では、圧縮後データセットA´を、追記共通ページに追記する。
ステップS2605では、ストレージコントローラ101は、アドレス変換テーブル#3を更新し、ステップS2606では、提供ボリューム#11のアドレス変換テーブルを更新する。ステップS2607では、ストレージコントローラ101は、データセットAを共通ブロックへ退避コピーした後、提供ボリューム#1の単独領域70のページ#1の単独データセットAが格納されていた領域にデータセットEを上書きして更新する。
この結果、提供ボリューム#1は、更新後のデータセットEをサーバシステム201に提供することができるとともに、提供ボリューム#11は、圧縮後データセットA´を伸張することにより、旧データセットAをサーバシステム201に提供することができる。
次に、複製後のペアがサスペンド状態になった時に有効領域であるコピー先の提供ボリュームのデータセットに他のデータセットをライトするライト要求を受信した場合のライト処理について説明する。
図20は、一実施形態に係る機能無効コピー先ボリュームライト処理のフローチャートである。図20は、図1のステップS15に対応する処理である。
ストレージコントローラ101は、提供ボリューム501Sのデータセットは提供ボリューム501Pのデータセットを参照しているため、共通領域80の共通ページ51Cに領域を確保し(S2701)、ライト対象のデータセット(ライトデータセット)を圧縮し(S2702)、圧縮後のデータセットを共通領域80の共通ページ51Cに追記する(S2703)。この際、ストレージコントローラ101は、圧縮後のデータセットを、共通ページ51Cにおける使用済み共通ブロックの後のアドレスの領域に追記する。
ステップS2702にて、提供ボリュームが管理するサイズ(ブロック)より、ライト要求されたデータセットのサイズが小さい場合には、ライト要求の対象位置が含まれるブロックを一旦読み出し、圧縮されている場合には伸張し、ライトデータをブロックの対象部分に上書きし、その後、ブロック全体を再度圧縮する処理を行う。
ステップS2702にて、提供ボリュームが管理するサイズ(ブロック)より、ライト要求されたデータセットのサイズが小さい場合には、ライト要求の対象位置が含まれるブロックを一旦読み出し、圧縮されている場合には伸張し、ライトデータをブロックの対象部分に上書きし、その後、ブロック全体を再度圧縮する処理を行う。
次いで、ストレージコントローラ101は、ライト要求の対象領域に対するアクセスがあった場合に、共通ページ51Cに追記された圧縮後のデータセットを参照できるように、共通ボリューム501Cのアクセス変換テーブル422を更新する(S2704)。なお、アクセス変換テーブル422の更新は、S2605と同様であるので詳細については省略する。
次いで、ストレージコントローラ101は、提供ボリューム501Sのアクセス変換テーブル422を更新する(S2705)。具体的には、ストレージコントローラ101は、アドレス変換テーブル422のライト要求の対象領域の提供ブロック601Sの論理アドレスに対応するエントリの参照先VOL#902に共通ボリューム501CのVOL#を設定し、参照先VOL内アドレス903に共通ブロック601Cの論理アドレスを設定する。
次いで、ストレージコントローラ101(詳細には、データ量削減プログラム414を実行するプロセッサ221)は、旧サブブロックの参照元(旧参照元)が、ライト先ブロックの論理アドレスであるか否か、すなわち、単独領域70であるか否かを判定する(S2706)。ここで、「旧サブブロック」とは、ライトデータセットの圧縮後データセットの更新前の圧縮後データセットを格納したサブブロックである。すなわち、ステップS2706では、ライトデータセットが、単独領域70内のデータセットの更新後のデータセットであるか、共通領域80内のデータセットの更新後のデータセットであるかを判定している。
この結果、旧参照元が単独領域70であると判定された場合(S2706:Yes)には、ストレージコントローラ101は、旧参照元の旧サブブロックを未使用化し(S2707)、処理を終了する一方、旧参照元が単独領域70であると判定されていない場合(S2706:No)には、処理を終了する。
次に、図18に示すように複製後のペアがサスペンド状態になった時に有効領域である複製先の提供ボリューム#11のデータセットBに他のデータセットFをライトするライト要求を受信した場合のライト処理の具体例について説明する。
図19は、一実施形態に係るボリュームペアがサスペンド状態であるときのコピー先ボリュームへのライト処理を説明する図である。なお、図20を適宜参照して説明する。
機能無効コピー先ボリュームライト処理のステップS2701では、提供ボリューム#11のデータセットBが提供ボリューム#1のデータセットBを参照しているため、ストレージコントローラ101は、共通領域80のページ#2に領域を確保し、S2702でデータセットFを圧縮し、S2703で圧縮後のデータセットF´をページ#2に追記する。
次いで、ストレージコントローラ101は、S2704で共通ボリュームのアクセス変換テーブルを更新し、S2705で提供ボリューム#11のアクセス変換テーブルを更新する。次いで、ストレージコントローラ101は、S2706で、旧参照元が単独領域70ではないと判定し(S2706:No)、処理を終了する。
なお、この後、提供ボリューム#11のデータセットFに対して、データセットHのライト要求を受信した場合には、ストレージコントローラ101は、共通領域80のページ#2の新たな領域を確保し、データセットHを圧縮して格納する。
次に、コピー元の提供ボリュームが有効領域であり、コピー先の提供ボリュームも有効領域である場合において、提供ボリュームを複製する例を、図21〜図23を参照して説明する。なお、この例は、スナップショットのROW方式を採用した方法である。
図21は、一実施形態に係る両方が有効領域であるボリュームペアの複製を説明する図である。
ここで、複製前において、コピー元の提供ボリューム#1は、単独領域70に存在する単独データセットA´(データセットAを圧縮したデータセット)と単独データセットB´(データセットBを圧縮したデータセット)とを持っているとすると、複製後においては、提供ボリューム#1のコピー先のボリューム#11も、単独データセットA´と単独データセットB´を参照するようになる。このため、共通領域80のページ#2を確保し、単独データセットA´と単独データセットB´とを読み出し伸張し、伸張したデータセットAとデータセットBとを圧縮し、共通領域80のページ#2へ格納する。この結果、データセットA´とデータセットB´とは重複データセットになる。
提供ボリューム#1のアドレス変換テーブル422において、データセット(データセットA´、データセットB´)が格納される領域に対応するエントリ、すなわち、その領域のボリューム内アドレスがVOL内アドレス901に格納されるエントリにおいて、参照先VOL#902には、共通ボリューム501CのVOL#が格納され、参照先VOL内アドレス903には、データセットが格納されているボリューム内アドレスが格納される。
次に、複製後の有効領域であるボリュームペアがサスペンド状態になった時に提供ボリュームのデータセットに他のデータセットをライトするライト要求を受信した場合のライト処理について説明する。
図23は、一実施形態に係る機能有効ライト処理のフローチャートである。図23は、図1のステップS16に対応する処理である。
ストレージコントローラ101は、単独領域70にライト対象の提供ボリュームが使用するためのページがあるか否か判定する(S2801)。具体的には、ストレージコントローラ101は、旧サブブロックであるサブブロック602の参照元(旧参照元)が、提供ボリューム501(501P,501S)におけるいずれかの提供ブロック601Pの論理アドレスであるか否かを判定する。ここで、「旧サブブロック」とは、ライト対象の圧縮後データセットの更新前の圧縮後データセット(旧圧縮後データセット)を格納したサブブロックである。「ライト対象の圧縮後データセット」とは、ライト先の提供ブロック601Pへのライト対象のデータセットEの圧縮後データセットである。
この結果、ページがある場合(S2801:Yes)には、処理をステップS2803に進める一方、ページがない場合(2801:No)には、単独領域70に新たなページを確保し、提供ボリューム501の提供ブロック601Pに割り当て(S2802)、処理をステップS2803に進める。
次いで、ストレージコントローラ101は、ライト対象のデータセットを圧縮し(S2803)、圧縮後のデータセット(圧縮後データセット)を単独領域70の追記単独ページ(単独ページ51P)における新たなサブブロックに追記する(S2804)。なお、データセットを圧縮する際に、提供ボリュームが管理するサイズ(ブロック)より、ライト要求されたデータセットのサイズが小さい場合には、ライト要求の対象位置が含まれるブロックを一旦読み出し、圧縮されている場合には伸張し、ライトデータをブロックの対象部分に上書きし、その後、ブロック全体を再度圧縮する処理を行う。
次いで、ストレージコントローラ101は、提供ボリュームのアドレス変換テーブル422のライト先の提供ブロック601Pの論理アドレスの参照先を、重複先ブロックの論理アドレスから、追記したサブブロックの論理アドレスに変更する(S2805)。具体的には、ストレージコントローラ101は、提供ボリュームのアドレス変換テーブル422のライト先の提供ブロック601Pの論理アドレスに対応するエントリの参照先VOL#902には、追記ボリューム502(502P、502S)のVOL#を格納し、参照先VOL内アドレス903には、サブブロックのボリューム内アドレスを格納する。
次いで、ストレージコントローラ101は、重複管理テーブル430を更新し(S2806)、処理を終了する。具体的には、ストレージコントローラ101は、重複管理テーブル430から、旧サブブロックに対応するエントリ1402を削除する。
次に、複製後の有効領域であるボリュームペアがサスペンド状態になった時に提供ボリュームのデータセットに他のデータセットをライトするライト要求を受信した場合のライト処理について説明する。
図22は、一実施形態に係る有効領域であるボリュームペアがサスペンド状態であるときの複製元及び複製先ボリュームへのライト処理を説明する図である。なお、図23を適宜参照して説明する。
ここで、ストレージコントローラ101が、例えば、提供ボリューム#1のうちの、データセットBのライト先の提供ブロック601Pに、データセットEを書き込むためのライト要求を受信した場合について説明する。
ストレージコントローラ101は、提供ボリューム#1に対応する追記ボリューム#1の追記単独ページ(単独ページ51P)に対して、旧サブブロックであるサブブロック602の参照元(旧参照元)が、提供ボリューム#1におけるいずれかの提供ブロック601Pの論理アドレスであるか否かを判定する。
この例では、ストレージコントローラ101は、S2801で、単独領域70内の提供ボリューム#1が使用するためのページがあると判定し(S2801:Yes)、処理をS2802に進める。
次いで、ストレージコントローラ101は、S2803で、ライト対象のデータセットEを圧縮し、S2804で、圧縮後データセットE´を追記単独ページ(単独ページ51P)における新たなサブブロックに追記し、S2805で、ライト先の提供ブロック601Pの論理アドレスの参照先を、重複先ブロックの論理アドレスから、新たなサブブロックの論理アドレスに変更し、S2806で、重複ブロックの重複管理テーブル430を更新する。
その後、提供ボリューム#11のデータセットBに対するデータセットFのライト要求を受けると、ストレージコントローラ101は、単独領域70内に提供ボリューム#11が使用するための新たなページ#3を確保する。次いで、ストレージコントローラ101は、データセットFを圧縮し、確保したページ#3へ格納する。次いで、ストレージコントローラ101は、提供ボリューム#11のアドレス変換テーブル422を、データセットFを参照できるように更新する。
この結果、提供ボリューム#1は、更新後のデータセットEを、圧縮データセットE´を伸張することにより、サーバシステム201に提供することができるとともに、提供ボリューム#11は、圧縮後データセットF´を伸張することにより、データセットFをサーバシステム201に提供することができる。
例えば、追記単独ページにおいて、有効な圧縮後データセット(有効なサブブロック602P)の論理アドレスが非連続となる状況、すなわち、有効な圧縮後データセットが離散した状況になったら、単独領域70に関して、有効な圧縮後データが連続するようにするガベージコレクション処理を行うようにしてもよい。
また、共通ボリューム501Cにおける重複先ブロック(共通ブロック601C)が、いずれの提供ボリューム501(501P、501S)における提供ブロック601(601P,601S)からも参照されなくなっているにも関わらず、使用中のままとなり、結果として、共通ボリューム501Cの空き容量が増えず、且つ、不必要な圧縮後データブロックが共通ページ51Cに残り続けてしまう状況になったら、ストレージコントローラ101は、重複先ブロックを未使用とするための解放処理を行うようにしてもよい。
データ量削減プログラム414は、例えば定期的に、又は、データ量削減要求がある場合に、対象となるデータセットについて重複排除処理を行うようにしてもよい。また、選択されたデータセットが単独データセットであるが故に重複排除がされなかった場合、データ量削減プログラム414は、重複排除されなかった単独データセットについて追記処理を行ってもよい。選択されたデータセットが重複データセットであるが故に重複排除がされた場合、又は、追記処理の後、データ量削減プログラム414は、選択されたデータセットを破棄(例えばキャッシュメモリ402から削除)してもよい。
以上説明したように、スナップショットで作成したボリュームを使用する際に、コピー元のボリュームが有効領域であるか否かでライト処理の方法が異なる。本実施形態によると、ユーザが、コピー元のボリュームが有効領域であるか否かの属性を意識することなく、スナップショットでボリュームを作成し、作成されたボリュームを容易且つ適切に利用することができる。また、ユーザのスナップショット操作が一元化されるので、運用が容易化され、ユーザの負荷を低減できる。また、ユーザに対して、有効領域のボリュームと無効領域のボリュームとのスナップショットボリュームを提供でき、ユーザの要求するテスト環境で使用できるボリュームのバリエーションを増やすことができ、幅広いデータ利活用方法を提供できる。これにより、全体としてユーザへのサービスの向上を実現することができる。
次に、ストレージシステム200がサーバシステム201からリード要求を受信した場合に実行されるリード処理について説明する。
図24は、一実施形態に係るリード処理のフローチャートである。
リードプログラム411(正確には、リードプログラム411を実行するプロセッサ211)は、VOL管理テーブル421を基に、リード要求に従うリード元が有効領域であるか否かを判定する(ステップ2501)。この結果、判定結果が真の場合、すなわち、リード元が有効領域である場合(ステップ2501:Yes)には、リードプログラム411は、特定したボリュームに対応したアドレス変換テーブル422を参照する(ステップ2506)。
次いで、リードプログラム411は、特定したボリュームを構成する各ブロックを、アドレス変換テーブル422に基づいて特定し、特定した各ブロックを対象に、以下の処理(S2507〜S2510)を行う。ここで、本フローチャートの説明において、対象とするブロックを対象ブロックという。
まず、リードプログラム411は、対象ブロックの参照先のボリュームが単独領域であるか否かを判定する(S2507)。具体的には、リードプログラム411は、対象ブロックに対応したアドレス変換テーブル422のエントリの参照先VOL種別905の値が“単独”であるか否かを判定する。
ステップS2507の判定結果が偽の場合、すなわち、参照先のボリュームが単独領域でない場合(S2507:No)には、リードプログラム411は、対象ブロックに対応したエントリの参照先VOL#902及び参照先VOL内アドレス903の値が示す共通ボリューム501Cに対応したアドレス変換テーブル422を参照し(S2508)、処理をステップS2509に進める。
一方、ステップ2507の判定結果が真の場合、すなわち、参照先のボリュームが単独領域である場合(S2507:Yes)には、処理をステップS2509に進める。
参照先のボリュームが単独領域である場合(S2507:Yes)又はステップ2508の処理を行った場合には、リードプログラム411は、対象ブロックに対応したページ51を、ページ変換テーブル425を基に特定し(S2509)、特定したページ51から、対象ブロックに対応する圧縮後データセットを読み出し、圧縮後データセットを伸張し、伸張後データセットをキャッシュメモリ402に格納する(S2510)。
ステップS2501の判定結果が真の場合(S2501:YES)において、リード元のボリュームを構成する各ブロックについてステップ2510までの処理が終了すると、リード要求に従うデータがキャッシュメモリ402に格納されるため、リードプログラム411は、キャッシュメモリ402に格納されたデータをリード要求の発行元に転送し(S2511)、処理を終了する。
一方、ステップS2501の判定結果が偽の場合、すなわち、ロード元が有効領域でない場合(S2501:NO)には、リードプログラム411は、リード元のボリュームに割り当てられているページ51を、ページ変換テーブル425を基に特定し(S2509)、特定したページ51から、リード対象のデータを読み出し(S2510)、読み出したデータをリード要求に送信元に転送し(S2511)、処理を終了する。
次に、ストレージシステム200における重複排除処理について詳細に説明する。
図25は、一実施形態に係る重複排除処理のフローチャートである。
ここで、図25の説明において、重複排除処理の処理対象のデータセットを「ライトデータセット」といい、ライトデータセットのライト先のブロックを「ライト先ブロック」といい、ライト先ブロックを含んだ論理ボリュームを「ライト先ボリューム」という。
データ量削減プログラム414(正確には、データ量削減プログラム414を実行するプロセッサ211)は、ライトデータセットについて他のデータセットと重複しているかを判定する重複判定処理を行う(S2201)。なお、データセットが重複しているかを判定する処理については、公知の技術であるのでここでは詳細な説明を省略する。
次いで、データ量削減プログラム414は、この重複判定処理の結果により、ライトデータセットが重複しているか否かを判定する(S2202)。この結果、ライトデータセットが重複していないデータセット(単独データセット)である場合(S2202:No)には、データ量削減プログラム414は、この処理対象のデータセットに対する重複排除処理を終了する。
一方、ライトデータセットが重複しているデータセット(重複データセット)である場合(S2202:Yes)には、データ量削減プログラム414は、ライトデータセットと重複する別の重複データセットが単独領域70に存在するか否かを判定する(ステップ2203)。
ここで、重複判定処理の対象とされるデータは、典型的には、所定の処理対象のデータであり、ブロックのサイズよりも大きい。このため、重複判定処理は、ブロック単位(データセット単位)で行われてもよいが、本実施形態では、ブロック単位に代えて処理対象のデータの単位でまとめて行うようにしている。具体的には、例えば、処理対象のデータは、いずれかの提供ボリューム501Pに対するライト要求に従うデータであり、ライト要求に従うデータのサイズは、ブロックのサイズの整数倍でよく、重複判定処理は、ライト要求に従うデータの単位(すなわち、I/O要求の単位)で行われてもよい。例えば、重複判定処理は、処理対象のデータの単位でまとめて行われると、効率的である。
また、図25の以下の説明において、ライトデータセットと、そのライトデータセットと重複する別のデータセットとを、「重複データセット」と総称する。すなわち、「重複データセット」は、ライトデータセットを含む2以上のデータセットのうちのいずれであってもよい。
ステップS2203の判定は、具体的には、例えば、ライト先ブロックに対応したVOLのVOL番号が、VOL管理テーブル421のVOL属性802が“提供”であるエントリのVOL#801のVOL#と一致するか、或いはVOL属性802が“共通”のエントリのVOL#801のVOL#と一致するかに基づいて行うことができる。ライト先ブロックに対応したVOLのVOL#が、VOL属性802が“提供”のエントリのVOL#801のVOL#と一致すれば、別の重複データセットが単独領域70に存在することを示しているので、ステップS2203における判定結果は、真(YES)となる。一方、ライト先ブロックに対応したVOLのVOL番号が、VOL属性802が“共通”のエントリのVOL#801のVOL#と一致すれば、別の重複データセットが共通領域80に存在することを示しているので、ステップS2203の判定結果は、偽(NO)となる。
ステップS2203の判定結果が真の場合(S2203:YES)には、データ量削減プログラム414は、共通領域割当管理テーブル431を参照し、対応するエントリの使用中フラグ1802が“未使用”である共通ブロック601Cを選択する(S2204)。以下の説明において、この共通ブロック601Cを、「対象共通ブロック」といい、対象共通ブロックを含む共通ボリューム501Cを、「対象共通ボリューム」という。
次いで、データ量削減プログラム414は、重複データセットを圧縮し、その圧縮後データセットを、対象共通ボリュームに対応する追記ボリューム502に割り当てられた共通ページ51C(追記共通ページ、特に対象共通ブロック)に追記する(S2205)。
次いで、データ量削減プログラム414は、重複データセットの追記に基づいて、重複管理テーブル430を更新する(S2206)。具体的には、データ量削減プログラム414は、重複管理テーブル430の対象共通ブロックに対応するアドレスに対して、参照元となる1以上の重複データセットのそれぞれに対応する1以上のブロック601を示すエントリ1402を関連付ける。
次いで、データ量削減プログラム414は、ライトデータセット以外の重複データセットを格納する提供ボリューム501Pに対応するアドレス変換テーブル422を更新する(S2209)。具体的には、データ量削減プログラム414は、アドレス変換テーブル422の重複データセットが格納されていた領域に対応するエントリの参照先VOL#902、及び、参照先VOL内アドレス903を、対象共通ボリュームの番号、及び、対象共通ブロックの論理アドレスに更新し、且つ、参照先VOL種別905を“共通”に変更する。
次いで、データ量削減プログラム414は、ライトデータセット以外の重複データセットを格納する提供ボリューム501Pに対応した追記ボリューム502に関するサブブロック管理テーブル427を更新する(S2210)。具体的には、データ量削減プログラム414は、サブブロック管理テーブル427のライトデータセット以外の重複データセットの圧縮後データセットを格納するサブブロックに対応するエントリの割当フラグ1303を“未割当”に変更する。
一方、ステップS2203の判定結果が偽の場合(S2203:NO)、データ量削減プログラム414は、重複管理テーブル430を更新する(S2211)。具体的には、データ量削減プログラム414は、重複管理テーブル430において、重複データセットを格納した共通ブロック601Cに対応するアドレスに対して、ライト先ブロックを示すエントリ1402を関連付ける。
ステップS2210又はステップS2211を実行した後、データ量削減プログラム414は、ライト先ボリュームに対応したアドレス変換テーブル422を更新する(S2213)。具体的には、データ量削減プログラム414は、アドレス変換テーブル422のライト先ブロック(ライトデータセット)に対応するエントリの参照先VOL#902、及び、参照先VOL内アドレス903を、共通ボリューム501Cの番号、及び、共通ブロック601Cの論理アドレスに変更し、且つ、参照先VOL種別905を“共通”に変更する。
次いで、データ量削減プログラム414は、ライトデータセットの圧縮後データセットが追記単独ページにあれば、ライト先ボリュームに対応する追記ボリューム502に関するサブブロック管理テーブル427を更新し(S2214)、処理を終了する。具体的には、データ量削減プログラム414は、サブブロック管理テーブル427において、ライトデータセットの圧縮後データセットを格納するサブブロックに対応するエントリの割当フラグ1303を“未割当”に変更する。
上記した重複排除処理は、ポストプロセスとしての処理として説明しているが、例えば、重複排除処理をインプロセスとしての処理とする場合には、例えば、図25のステップS2214の処理を行わなくてもよい。これは、ライトデータセットの圧縮後データセットを追記すること無しに、又はライトデータセットの圧縮をすること無しに重複排除がされるためである。
以上説明したように、上記した実施形態に係るストレージシステム200によると、スナップショットに係るボリュームの記憶領域の属性をユーザが意識することなく、適切にボリュームに対するI/Oを処理することができる。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態では、I/O要求の送信元(I/O元)をサーバシステム201としていたが、本発明はこれに限られず、I/O元を、ストレージシステム200における図示しないプログラム(例えば、VM(Virtual Machine)上で実行されるアプリケーションプログラム)であってもよい。
また、上記実施形態において、単独領域70又は共通領域80へのデータの格納を、ブロック単位(データセット単位)で行うようにしてもよく、ブロック単位に代えて処理対象のデータの単位(例えば、ブロックのサイズよりも大きい単位)でまとめて行うようにしてもよい。具体的には、例えば、処理対象のデータは、いずれかの提供ボリューム501Pに対するライト要求に従うデータであり、ライト要求に従うデータのサイズは、ブロックのサイズの整数倍でよく、単独領域70又は共通領域80へのデータの格納を、ライト要求に従うデータの単位(すなわち、I/O要求の単位)で行うようにしてもよい。このように、単独領域70又は共通領域80へのデータの格納を行うと、処理対象のデータの単位でまとめて行うことができるので、効率的である。
また、上記実施形態において、データ量削減処理として、圧縮処理及び重複排除処理を実行するようにしていたが、本発明はこれに限られず、データ量削減処理として、圧縮処理又は重複排除処理の少なくとも一方を実行するようにすればよい。
また、上記実施形態において、プロセッサが行っていた処理の一部又は全部を、ハードウェア回路で行うようにしてもよい。また、上記実施形態におけるプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア(例えば可搬型の記憶メディア)であってもよい。
70…単独領域、80…共通領域、100…計算機システム、101…ストレージコントローラ、200…ストレージシステム、201…サーバシステム、205…管理システム、211…プロセッサ、220…PDEV、501…論理ボリューム、503…プール
Claims (11)
- 複数のボリュームを記憶し、前記ボリュームに対するI/O処理を実行するボリューム管理装置であって、
プロセッサ部を備え、
第1ボリュームと、前記第1ボリュームからスナップショットによりコピーされたボリュームである第2ボリュームとを有し、
前記第1ボリュームは、物理記憶領域を参照しており、
前記プロセッサ部は、
ライト要求を受領した場合に、前記ライト要求の対象のボリュームに関係するコピー元のボリュームが、記憶領域がデータ量削減処理を適用する有効領域であるボリュームであるか否かを判定し、
前記コピー元のボリュームが、記憶領域が前記有効領域であるボリュームである場合と、記憶領域が前記有効領域でないボリュームである場合とで、前記スナップショットにかかる第2ボリュームの作成処理を切り替えて実行する
ボリューム管理装置。 - 前記第1ボリュームが、記憶領域がデータ量削減処理を適用しない無効領域である場合、前記第スナップショットにかかるページを、前記第2ボリュームから参照することでスナップショットを作成し、
前記第1ボリュームが、記憶領域がデータ量削減処理を適用する有効領域である場合、前記第2ボリュームから前記物理記憶領域を参照するとともに、当該参照した物理記憶領域に対してデータ量削減処理を行う
請求項1に記載のボリューム管理装置。 - 前記第1ボリュームは、記憶領域がデータ量削減処理を適用しない無効領域であり、
前記プロセッサ部は、
前記ライト要求が前記第1ボリュームに対するライト要求であって、前記ライト要求の対象の領域に割り当てられているページが、前記第2ボリュームから参照されている場合には、前記第2ボリュームの参照元の領域に対して、新たなページを割り当て、前記新たなページに対して、前記第1ボリュームの前記ライト要求の対象の領域に格納されていた旧データセットに対して、データ量削減処理を実行して、前記新たなページに格納し、前記ライト要求の対象の領域に割り当てられているページに対して、前記ライト要求の対象のライトデータを格納し、
前記ライト要求が前記第1ボリュームに対するライト要求であって、前記ライト要求の対象の領域に割り当てられているページが、前記第2ボリュームから参照されていない場合には、前記ライト要求の対象の領域に割り当てられているページに対して、前記ライト要求の対象のライトデータを格納する
請求項2に記載のボリューム管理装置。 - 前記第1ボリュームは、記憶領域がデータ量削減処理を適用しない無効領域であり、
前記プロセッサ部は、
前記ライト要求が前記第2ボリュームに対するライト要求である場合には、前記ライト要求の対象の前記第2ボリュームの前記ライト要求の対象の領域に対して、新たなページを割り当て、前記ライト要求の対象のライトデータセットに対してデータ量削減処理を実行し、前記新たなページに格納する
請求項3に記載のボリューム管理装置。 - 前記第1ボリュームは、記憶領域が有効領域であり、
前記プロセッサ部は、
前記ライト要求が前記第1ボリューム又は前記第2ボリュームに対するライト要求であって、前記ライト要求の対象の領域に割り当てられているページが、前記第1ボリューム及び前記第2ボリュームの両方から参照されている場合には、前記ライト要求の対象の第1ボリューム又は前記2第ボリュームの前記ライト要求の対象の領域に対して、新たなページを割り当て、前記ライト要求の対象のライトデータセットに対してデータ量削減処理を実行し、前記新たなページに格納する
請求項2に記載のボリューム管理装置。 - 前記第1ボリュームは、記憶領域がデータ量削減処理を適用しない無効領域であり、
前記プロセッサ部は、
前記第1ボリュームからスナップショットにより前記第2ボリュームを作成する場合に、前記第2ボリュームの各領域に対して、対応する前記第1ボリュームの各領域を参照可能な参照情報を生成する
請求項3に記載のボリューム管理装置。 - 前記プロセッサ部は、
前記第2ボリュームに対するリード要求を受信した場合であって、前記リード要求の対象の領域に割り当てられているページが前記第1ボリューム及び前記第2ボリュームの両方から参照されている場合には、前記ページからリード要求の対象のリードデータを読み出して、リードデータを伸張することなく前記リード要求の要求元に送信する
請求項6に記載のボリューム管理装置。 - 前記第1ボリュームは、有効領域を有するボリュームであり、
前記プロセッサ部は、
前記第1ボリュームからスナップショットにより前記第2ボリュームを作成する場合に、前記第1ボリュームと前記第2ボリュームの両方から参照可能な第3ボリュームに、前記第1ボリュームの各領域に格納されていた各データセットを格納する
請求項5に記載のボリューム管理装置。 - 前記データ量削減処理は、データ圧縮処理、又は重複排除処理の少なくともいずれか一方である
請求項1に記載のボリューム管理装置。 - 複数のボリュームを記憶し、前記ボリュームに対するI/O処理を実行するボリューム管理装置によるボリューム管理方法であって、
第1ボリュームと、前記第1ボリュームからスナップショットによりコピーされたボリュームである第2ボリュームとを有し、
ライト要求を受領した場合に、前記ライト要求の対象のボリュームが、記憶領域がデータ量削減処理を適用する有効領域のボリュームであるか否かを判定し、
前記ライト要求の対象のボリュームが、記憶領域が前記有効領域であるボリュームである場合と、記憶領域が前記有効領域でないボリュームである場合とで、前記スナップショットに係る第2ボリュームの作成処理を切り替えて実行する
ボリューム管理方法。 - 複数のボリュームを記憶し、前記ボリュームに対するI/O処理を実行するボリューム管理装置を構成するコンピュータにより実行されるボリューム管理プログラムであって、
第1ボリュームと、前記第1ボリュームからスナップショットによりコピーされたボリュームである第2ボリュームとを有し、
前記コンピュータに、
ライト要求を受領した場合に、前記ライト要求の対象のボリュームが、記憶領域がデータ量削減処理を適用する有効領域であるボリュームであるか否かを判定させ、
前記ライト要求の対象のボリュームが、記憶領域が前記有効領域であるボリュームである場合と、記憶領域が前記有効領域でないボリュームである場合とで前記スナップショットに係る第2ボリュームの作成処理を切り替えて実行させる
ボリューム管理プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018214073A JP2020080130A (ja) | 2018-11-14 | 2018-11-14 | ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム |
CN201910716523.9A CN111190534B (zh) | 2018-11-14 | 2019-08-05 | 卷管理装置、卷管理方法和存储介质 |
US16/546,366 US11144202B2 (en) | 2018-11-14 | 2019-08-21 | Volume management apparatus, volume management method, and volume management program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018214073A JP2020080130A (ja) | 2018-11-14 | 2018-11-14 | ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020080130A true JP2020080130A (ja) | 2020-05-28 |
Family
ID=70551351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018214073A Pending JP2020080130A (ja) | 2018-11-14 | 2018-11-14 | ボリューム管理装置、ボリューム管理方法、及びボリューム管理プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11144202B2 (ja) |
JP (1) | JP2020080130A (ja) |
CN (1) | CN111190534B (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022026812A (ja) * | 2020-07-31 | 2022-02-10 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
JP7309025B2 (ja) | 2020-07-31 | 2023-07-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11023139B2 (en) * | 2019-01-22 | 2021-06-01 | Dell Products L.P. | System for speculative block IO aggregation to reduce uneven wearing of SCMs in virtualized compute node by offloading intensive block IOs |
US10877823B1 (en) | 2019-12-10 | 2020-12-29 | Cisco Technology, Inc. | High performance in-memory communication infrastructure for asymmetric multiprocessing systems without an external hypervisor |
CN112286448B (zh) * | 2020-10-16 | 2022-10-14 | 杭州宏杉科技股份有限公司 | 对象访问方法、装置、电子设备及机器可读存储介质 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4520755B2 (ja) * | 2004-02-26 | 2010-08-11 | 株式会社日立製作所 | データ移行方法およびデータ移行装置 |
US7873809B2 (en) * | 2007-03-29 | 2011-01-18 | Hitachi, Ltd. | Method and apparatus for de-duplication after mirror operation |
JP5112003B2 (ja) * | 2007-10-19 | 2013-01-09 | 株式会社日立製作所 | ストレージ装置及びこれを用いたデータ格納方法 |
US8447943B2 (en) * | 2010-02-24 | 2013-05-21 | Hitachi, Ltd. | Reduction of I/O latency for writable copy-on-write snapshot function |
CN103392164B (zh) | 2011-05-31 | 2016-08-10 | 株式会社日立制作所 | 存储系统和存储控制方法 |
US8527544B1 (en) * | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US9229645B2 (en) * | 2012-02-10 | 2016-01-05 | Hitachi, Ltd. | Storage management method and storage system in virtual volume having data arranged astride storage devices |
CN108108311A (zh) * | 2013-12-12 | 2018-06-01 | 株式会社日立制作所 | 存储装置及存储装置的控制方法 |
US20160259591A1 (en) * | 2013-12-24 | 2016-09-08 | Hitachi, Ltd. | Storage system and deduplication control method |
US10108687B2 (en) * | 2015-01-21 | 2018-10-23 | Commvault Systems, Inc. | Database protection using block-level mapping |
US10339132B2 (en) * | 2015-07-09 | 2019-07-02 | Netapp, Inc. | Flow control technique for EOS system |
WO2017109822A1 (ja) * | 2015-12-21 | 2017-06-29 | 株式会社日立製作所 | 重複排除機能を有するストレージシステム |
JP6429963B2 (ja) * | 2017-09-14 | 2018-11-28 | 株式会社日立製作所 | ストレージ装置及びストレージ装置の制御方法 |
-
2018
- 2018-11-14 JP JP2018214073A patent/JP2020080130A/ja active Pending
-
2019
- 2019-08-05 CN CN201910716523.9A patent/CN111190534B/zh active Active
- 2019-08-21 US US16/546,366 patent/US11144202B2/en active Active
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022026812A (ja) * | 2020-07-31 | 2022-02-10 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
JP7121079B2 (ja) | 2020-07-31 | 2022-08-17 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
JP7309025B2 (ja) | 2020-07-31 | 2023-07-14 | 株式会社日立製作所 | ストレージシステム及びストレージシステムにおけるデータ複製方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200150866A1 (en) | 2020-05-14 |
US11144202B2 (en) | 2021-10-12 |
CN111190534B (zh) | 2023-06-02 |
CN111190534A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210157523A1 (en) | Storage system | |
US10235066B1 (en) | Journal destage relay for online system checkpoint creation | |
US10152381B1 (en) | Using storage defragmentation function to facilitate system checkpoint | |
CN111190534B (zh) | 卷管理装置、卷管理方法和存储介质 | |
US9619351B2 (en) | Clustered RAID assimilation management | |
US10133511B2 (en) | Optimized segment cleaning technique | |
US9612774B2 (en) | Metadata structures for low latency and high throughput inline data compression | |
US9733862B1 (en) | Systems and methods for reverse point-in-time copy management in a storage system | |
US10739999B2 (en) | Computer system having data amount reduction function and storage control method | |
JP6840113B2 (ja) | ストレージコントローラ及びストレージ制御方法 | |
US20080104359A1 (en) | Pattern-based mapping for storage space management | |
US11416157B2 (en) | Storage device and data migration method | |
US11288006B2 (en) | Storage system and volume copying method where changes to address conversion table is rolled back | |
JP7093799B2 (ja) | ストレージシステムおよびリストア制御方法 | |
JP5275691B2 (ja) | ストレージシステム | |
US11074003B2 (en) | Storage system and restoration method | |
US20200387477A1 (en) | Storage system and snapshot management method | |
US20180307565A1 (en) | Storage control apparatus and storage control method | |
WO2019038897A1 (ja) | ストレージシステム及び記憶制御方法 | |
JP2023056222A (ja) | ストレージシステム及びストレージシステムにおけるデータ複製方法 | |
WO2018051446A1 (ja) | オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 |