JP4749112B2 - 記憶制御システム及び方法 - Google Patents

記憶制御システム及び方法 Download PDF

Info

Publication number
JP4749112B2
JP4749112B2 JP2005295025A JP2005295025A JP4749112B2 JP 4749112 B2 JP4749112 B2 JP 4749112B2 JP 2005295025 A JP2005295025 A JP 2005295025A JP 2005295025 A JP2005295025 A JP 2005295025A JP 4749112 B2 JP4749112 B2 JP 4749112B2
Authority
JP
Japan
Prior art keywords
data
logical volume
generation
snapshot
update
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.)
Expired - Fee Related
Application number
JP2005295025A
Other languages
English (en)
Other versions
JP2007102692A (ja
Inventor
政弘 新井
直人 松並
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 JP2005295025A priority Critical patent/JP4749112B2/ja
Priority to US11/290,469 priority patent/US20070083567A1/en
Publication of JP2007102692A publication Critical patent/JP2007102692A/ja
Application granted granted Critical
Publication of JP4749112B2 publication Critical patent/JP4749112B2/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
    • 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
    • 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)
  • Library & Information Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、記憶制御技術に関し、特に、バックアップおよびリカバリに関する。
配列された複数のディスク型記憶装置(例えばハードディスクドライブ)を備えるディスクアレイ装置が知られている。複数のディスク型記憶装置には、二以上の論理ボリュームが用意される。ディスクアレイ装置は、ホスト計算機から送信されたコマンドを受け、そのコマンドに従って、ホスト計算機から受信したデータを論理ボリュームに書き込んだり、論理ボリュームからデータを読み出してホスト計算機に送信したりする。
ディスクアレイ装置では、一般に、RAID(Redundant Array of Independent Disks)技術が採用される。また、ディスクアレイ装置には、データの損失を防止するため、データのバックアップを取るいくつかの技術がある。
その一つに、スナップショットと呼ばれる技術(以下、スナップショット技術)がある。スナップショット技術とは、或る時点における第一の論理ボリュームのイメージ(スナップショット)を保存しておく技術である。スナップショットは、例えば、ユーザが指定した契機が発生した時点(つまりユーザ所望の時点)のデータをリカバリできるよう、その時点から第一の論理ボリュームに新たなデータが書き込まれる際に、更新される前の旧いデータ(以下、旧データ)を第一の論理ボリュームから第二の論理ボリュームへ退避することで取得することができる。この処理は、コピー・オン・ライト(以下、「CoW」と略記)と呼ばれることがある。スナップショット技術において、データをリカバリする際には、ディスクアレイ装置が、ユーザ所望の時点にあったCoWデータを第二の論理ボリュームから第一の論理ボリュームに書き戻すことによって行うことができる。このようなスナップショット技術は、ユーザが指定した時点にしかリカバリできないことから、PIT(Point In Time)技術と呼ばれることがある。
データのバックアップのための別の技術として、例えば、ジャーナリングという技術(以下、ジャーナリング技術)がある。ジャーナリング技術では、ディスクアレイ装置は、書込みコマンドとそれによって新たに書かれるデータとを含んだログ(以下、これを「ジャーナルログ」と呼ぶ)を、書込みコマンド及びデータを受信する都度に所定の記録領域(例えば論理ボリューム)に記録していくことができる。ジャーナリング技術によれば、ディスクアレイ装置は、受信した全ての書込みコマンドとデータとをジャーナルログとして備えるため、書込みコマンドを受信した複数の時点のうちの任意の時点にリカバリすることが可能である。このため、この技術は、CDP(Continuous Data Protection)技術と呼ばれることがある。しかし、この技術では、ユーザが利用したコンピュータプログラム(例えば、ホスト計算機のOS上で動作するアプリケーションプログラム)にとって整合性のとれたデータに戻すためには、スナップショットと同様に、ユーザから、チェックポイントと呼ばれる時点(整合性のとれている時点)を、ディスクアレイ装置に与える必要がある。
この他に、例えば、特許文献1(特開2005−18738号公報)に開示されている技術がある。この技術は、論理ボリュームのスナップショットとその論理ボリュームへの書込みの履歴とを組み合わせて任意時点のデータをリカバリするという技術である。
特開2005−18738号公報
しかしながら、従来のいずれの技術も、データの整合性がとれた過去の時点へリカバリするためには、ユーザ所望の時点をユーザが指定する必要がある。そのため、頻繁にスナップショットを取得しようとすれば、ユーザは、頻繁に、スナップショットの指示、すなわち、リカバリポイントの時点を指定しなければならない。これは、ユーザが使用するホスト計算機の負荷を増大させることにつながると考えられる。また、スナップショットは、CoWによって実現されるため、頻度を上げればそれだけ、CoWが多発し、アクセス性能を低下させる(例えば、書込みコマンドを受けてからデータの書込みを完了させるまでの時間長が長くなってしまう)ことにもなると考えられる。
一方、ジャーナリング技術によれば、ジャーナルログを、ホスト計算機からの書込みコマンドに従ってデータが書かれる第一の論理ボリュームとは別の第二の論理ボリュームに記録することで、第一の論理ボリュームへのアクセスの性能を低下することを抑止することができる。しかし、書き込みコマンド及びデータを受信する都度に、書込みコマンドとデータとを含んだジャーナルログを保存しておかなければならず、大量の記憶容量を要すると考えられる。また、データのリカバリのために、書込みコマンドを処理した順序とは逆の順序で順次にデータをリカバリしていかなければならないため、リカバリに長い時間を要すると考えられる。これを軽減するための方法として、ユーザがチェックポイントの指示を頻繁にディスクアレイ装置に与える方法が考えられるが、これでは、スナップショット技術と同様に、ホスト計算機の負荷を増大させてしまうことになると考えられる。
また、特許文献1では、書込み履歴とスナップショットを併用する技術を開示している。しかし、この技術においても、スナップショットが取得された時点を基準に書き込み履歴に従って順次にデータを再生していかなければならないことに変わりがない。また、データの再生量を減らすには、頻繁にスナップショットを取る必要があるので、先に述べたホスト計算機の負荷増大の問題を解決するものではない。
本発明の一つの目的は、ホストの負荷を増大させることなく、整合性のとれた時点にデータをリカバリできるようにすることにある。
本発明の更なる目的は、データのバックアップのために必要とする記憶容量を削減できるようにすることにある。
本発明の他の目的は、後の説明から明らかになるであろう。
本発明に従うストレージシステムは、ホスト計算機からのデータが書き込まれる第一の論理ボリュームと、前記第一の論理ボリュームのバックアップ用の論理ボリュームである第二の論理ボリュームと、前記ホスト計算機からの書込みコマンドに従うデータを前記第一の論理ボリュームに書込むコントローラとを備える。前記コントローラは、各スナップショット取得時点におけるスナップショットの世代であるスナップショット世代を管理する。また、前記コントローラは、スナップショット取得時点が発生する都度に、前記スナップショット世代を更新する。また、前記コントローラは、スナップショット取得時点の後から次のスナップショット取得時点までに、前記第一の論理ボリュームに新たなデータが書かれる場合、前記新たなデータの書込み先が、前記スナップショット取得時点の後に初めて書込み先となった場所か否かを判別し、初めて書込み先となった場所であれば、前記書込み先に記憶されている旧いデータを、前記第一の論理ボリュームの前記書込み先から前記第二の論理ボリュームに退避させて、前記書込み先に前記新たなデータを書き込む。また、前記コントローラは、前記第一の論理ボリュームに新たなデータを書込む都度に、前記新たなデータの複製である更新差分データを、前記第二の論理ボリュームに書込む。また、前記コントローラは、前記ホスト計算機のユーザの操作によらないで発生した、前記第一の論理ボリュームの整合性の取れる契機を取得する(例えば、前記ホスト計算機のオペレーティングシステムから発行されたsyncコマンドを受信する)。また、前記コントローラは、前記更新差分データの確定した各時点における前記更新差分データの世代である更新差分世代を管理する。また、前記コントローラは、前記契機を取得する都度に前記更新差分世代を更新する。また、前記コントローラは、前記管理されている更新差分世代とスナップショット世代とに基づいて、前記第一の論理ボリュームのリカバリを行う。
本発明の第一の態様では、前記コントローラは、前記スナップショット世代と前記更新差分世代の更新された順序を管理することができる。また、前記コントローラは、前記退避された各旧いデータはどのスナップショット世代で退避されたものであるかを管理することができる。また、前記コントローラは、前記書込まれた各更新差分データはどの更新差分世代で書かれたものであるかを管理することができる。また、前記コントローラは、管理されている複数の更新差分世代の中からリカバリ対象となる更新差分世代を選択することができる。また、前記コントローラは、前記選択された更新差分世代よりも前の直近のスナップショット世代を、前記管理されている一以上のスナップショット世代の中から選択することができる。また、前記コントローラは、前記選択されたスナップショット世代で退避された前記旧いデータを判別することができる。また、前記コントローラは、前記選択された更新差分世代で書込まれた前記更新差分データを判別することができる。また、前記コントローラは、前記判別された旧いデータを前記第二の論理ボリュームから前記第一の論理ボリュームに移し、その後に、前記判別された更新差分データを前記第二の論理ボリュームから前記第一の論理ボリュームに移すことで、前記選択された更新差分世代に更新された時点での前記第一の論理ボリュームにおけるデータをリカバリすることができる。この第一の態様では、前記コントローラは、前記ホスト計算機又は別種の計算機からリカバリ指示を受け、前記リカバリ対象を、前記リカバリ指示を受けた時点に最も近い時点で更新された後の更新差分世代とすることができる。
本発明の第二の態様では、前記コントローラは、前記第二の論理ボリュームに存在する前記旧いデータと前記更新差分データとが同一か否かを判別し、同一であれば、一方のデータを前記第二の論理ボリュームから削除することができる。この第三の態様では、前記コントローラは、前記同一の場合、更新差分データを削除することができる。
本発明の第三の態様では、前記コントローラは、手動によって前記ホスト計算機又は別種の計算機からスナップショット取得指示(例えば、ユーザからの明示的な契機指示(PIT契機の指示)を受け、前記スナップショット取得指示を受けた時点を、前記スナップショット取得時点とすることができる。
前記コントローラが行う前述した各処理は、各手段によって実行することができる。また、前記コントローラが行う各処理は、ハードウェア回路、又は、コンピュータプログラムを読み込んだプロセッサが実行することができる。前記コントローラが行う複数の処理は、一又は複数のプロセッサで行われても良いし、プロセッサとハードウェア回路とが分担して行っても良い。
本発明によれば、ホストの負荷を増大させることなく、整合性のとれた時点にデータをリカバリすることができる。
以下、図面を参照して、本発明の一実施形態を説明する。
図1は、本発明の一実施形態に係るストレージシステムが適用されたディスクアレイ装置の概略構成例を示す説明図である。図2Aは、図1のディスクアレイ装置の外観図の一例を示す。図2Bは、ディスアレイコントローラの構成例を示す。
ディスクアレイ装置1は、ディスクアレイコントローラ11、12、接続インターフェース130、131、132、および、複数のディスク型記憶装置(以下、ディスク装置)D00〜D2Nを備えている。複数のディスク装置D00〜D2Nは、例えば、図2Aに示すように、ディスクアレイ装置1の各ディスク筐体E00〜E80に備えられると共に、所定のRAIDレベルに従うRAIDグループを構成している。
ディスクアレイコントローラ11、12は、例えば、制御プログラム118、119を実行することによって、ディスクアレイ装置1における各種制御を実行することができる制御回路である。ディスクアレイコントローラ11は(12も実質的に同様)、例えば、図2Bに示すように、制御プログラム118を読み込んで実行するプロセッサ(例えばCPU)4や、ホスト計算機(以下、単に「ホスト」と言う)20〜21とディスク装置D00〜D2Nとの間で通信されるデータを一時的に記憶することができるキャッシュメモリ6や、データ転送用のLSI(Large Scale Integration)8や、後述する種々のテーブルやリストを記憶することができるメモリ(以下、制御メモリ)9や、制御プラグラム118、119の処理を高速にするためのハードウェアアクセラレータチップ(図示せず)や、これらに付随する種々の部品(図示せず)を備えることができる。本実施形態においては、2つのディスクアレイコントローラ11、12が備えられているが、1つまたは3つ以上のディスクアレイコントローラが備えられていてもよい。
ディスクアレイコントローラ11、12は、信号線101を介して相互に通信可能に接続されている。また、ディスクアレイコントローラ11、12は、ストレージネットワーク40を介して各ホスト20、21、22と接続され、且つ、管理用ネットワーク30を介して管理端末31と接続されている。ストレージネットワーク40は、例えば、ファイバチャネルによるFC−SAN(Storage Area Network)やTCP/IPネットワークを利用したIP−SANなどである。管理用ネットワーク30は、例えば、TCP/IPネットワークを利用したLAN(Local Area Network)やシリアルケーブルによるPoint to Pointネットワークである。
ディスクアレイコントローラ11、12は、接続インターフェース130、131、132を介して複数のディスク装置D00〜D2Nと接続されている。具体的には、例えば、接続インターフェース130は、ディスクアレイコントローラ11,12と信号線102を介して接続されており、定期的な通信を行うことができる。また、各接続インターフェース130、131、132は、互いに信号線103を介して接続されている。従って、接続インターフェース131は、接続インターフェース130を介して、接続インターフェース132は、接続インターフェース130、131を介して、ディスクアレイコントローラ11、12と接続されている。接続インターフェース130は、複数のディスク装置D00〜D0Nと接続され、接続インターフェース131は複数のディスク装置D10〜D1Nと接続され、接続インターフェース132は複数のディスク装置D20〜D2Nと接続されている。
ディスクアレイコントローラ11、12を含む接続インターフェース130及び複数のディスク装置D00〜D0Nのグループは、例えば、基本筐体と呼ばれる。接続インターフェース131及び複数のディスク装置D10〜D1Nのグループ、及び接続インターフェース132及び複数のディスク装置D20〜D2Nのグループは、例えば、増設筐体と呼ばれる。なお、図1からも明らかなように、増設筐体は0ないし1つであってもよく、あるいは、3つ以上あってもよい。なお、本実施形態では、基本筐体を、ディスクアレイコントローラ11、12および接続インターフェース130、複数のディスク装置D00〜D0Nから成るグループとして記載しているが、基本筐体に複数のディスク装置D00〜D0Nを含まない形態でも良い。
ホスト20、21、22は、例えば、各種データを入力することができる計算機であり、例えば、コンピュータプログラムを実行することができるプロセッサ(例えばCPU)や、コンピュータプログラムやデータを記憶することができるメモリ等を備える。ホスト20、21、22は、1つであっても良いし、4つ以上であってもよい。ホスト20、21、22上では、各種アプリケーションプログラム(以下、アプリケーション)201、211、221、例えば、データベースソフトウェア、文書作成ソフトウェア或いはメールサーバソフトウェアなどが稼動している。アプリケーションは、1つのホストで複数稼動していても良いし、1つのアプリケーションが複数のホストに跨って稼動しても良い。ホスト20、21、22において処理されたデータは、ディスクアレイ装置1とのデータの授受を行うドライバ203、213、223を経由し、逐次、ディスクアレイ装置1に対し送出され、ディスクアレイ装置1に格納される。ドライバ203、213、223は、例えば、ホストバスアダプタ(図示せず)の制御ドライバやマルチパス切替ドライバなどがある。
また、ホスト20、21、22上では、スナップショットマネージャ202も、アプリケーション201、211、221と同様に稼動することができる。スナップショットマネージャ202は、コンピュータプログラムであり、ユーザの設定に基づいて、ディスクアレイ装置1に対して、割り当てられている論理ボリュームのスナップショットを取るよう指示することができる。
各ディスク装置D00〜D2Nは、例えばハードディスクドライブである。ハードディスクドライブとしては、例えば、FC(Fibre Channel)規格、ATA(AT Attachment)規格或いはSAS(Serial Attached SCSI)規格のハードディスクドライブを採用することができる。
管理端末31は、ディスクアレイ装置1に対する保守管理を実行するために用いられる端末装置(例えばパーソナルコンピュータ)である。管理端末31は、例えば、CPU、メモリ及び管理画面(例えば表示装置)32を備えることができる。管理者は、管理画面32を通じて、ディスクアレイ装置1の状態を管理することができる。
図3は、ディスク装置と論理ボリュームの関係例を表す概念図である。
ディスクアレイ装置1は、複数のディスク装置によるRAID構成を有し、複数のディスク装置によって提供される記憶領域を論理ボリューム(以下、単に「VOL」と略記することがある)という単位で管理することができる。論理ボリューム301、302、303、311は、いずれも、複数のディスク装置を用いて構成されたRAID上に構築される。管理者は、管理端末31を通じて、論理ボリュームを確認したり設定したりすることができる。ディスクアレイコントローラ11、12によって、論理ボリュームの構成に関する情報が保持される。
VOL301、302、303は、プライマリの論理ボリューム(以下、単に「プライマリボリューム」或いは「PVOL」と言う)であり、ホスト20、21、22との間でやり取りされるデータを記憶することができる。以下、PVOL1、PVOL2及びPVOL3の3つのPVOLがあるとする。
論理ボリューム311は、差分管理ボリューム(以下、「DVOL」と言う)である。本実施形態では、一つのDVOL1があるとするが、複数のDVOLがあってもよい。DVOL1は、動的に使用したり解放したりすることができる記憶領域(以下、プール領域)から成る論理ボリュームである。DVOL1は、CoWデータ等の部分的な差分データブロックを記憶するための論理ボリュームであり、任意のPVOL1、PVOL2又はPVOL3と関連付けられて利用される。なお、CoWデータとは、PVOL1、PVOL2又はPVOL3における更新前のデータ(つまり旧データ)であって、CoW(コピー・オン・ライト)によって、PVOLからDVOLへ退避されたデータである。また、ブロックとは、ホスト計算機のOS(オペレーティングシステム)が出すコマンドの単位である。
図4Aは、VOL構成管理テーブルの構成例を示す。
VOL構成管理テーブルTb4は、論理ボリュームの構成に関する情報(以下、VOL構成情報)を管理するためのテーブルである。VOL構成情報には、各VOL毎に、論理ボリュームID(例えば名称又は番号)、記憶容量、ディスク装置ID(そのVOLを備えたディスク装置の名称又は番号)及びRAIDレベル等が含まれる(ディスク装置ID及びRAIDレベルについては図示せず)。例えば、PVOL1 301は、ボリューム名が「PVOL1」であり、記憶容量は1000GBであり、ディスク装置D00、D01、D02、D03、D04上に構成されたRAIDレベルは「6」である。
図4Bは、VOL対応管理テーブルの構成例を示す。
VOL対応管理テーブルTb2は、PVOLとDVOLとの関係を管理するためのテーブルである。制御プログラム118、119を実行するプロセッサ4は(以下、単に「制御プログラム118、119は」と言う)、このテーブルTb2を参照すれば、どのPVOLから出るCoWデータをどのDVOLに退避すればよいかを使えばよいかを判別することができる。図4Bに例示されているテーブルTb2によれば、PVOL1及びPVOL2にDVOL1が対応しており、PVOL3にはどのDVOLも対応していないことがわかる。
図5は、本実施例におけるPVOL1、PVOL2、DVOL1との関連を模式的に示したものである。
PVOL1、2上のデータはブロック単位で管理されている。PVOL1、2でデータが更新される場合には、制御プログラム118によって、上書きされてしまう旧データを含むブロック601、603が、PVOL1、2から、それに対応付けられているDVOL1に退避される。また、制御プログラム118によって、PVOL1、2に新たに記録されるデータ(以下、新データ)を含むブロック602、604の複製612、614が用意され(例えばキャッシュメモリ6上で当該ブロックが二重化され)、その複製612、614が、DVOL1に記録される。制御プログラム118は、PVOL1,2とのアドレス関係を管理しており、PVOL1,2のデータを、DVOL1上の空きブロック(データの存在しない未使用のブロック)に格納することができる。
図6Aを参照して、DVOL1における空きブロックの管理について説明する。参照符号Lst7は、DVOL1の空きブロック管理リストの一例を示している(なお、他のDVOLについても同様に管理することができる)。空きブロックリストLst7は、空きブロックの開始アドレス(アドレスは、例えば論理ブロックアドレス(LBA))と、次のブロックへのポインタから成る線形リストになっている。具体的には、たとえば、最初の空きブロックの開始アドレスは、10000であり、次の空きブロックの開始アドレスとして、10064が、ポインタで示されている。
解放され再び使用することができるようになったブロック(つまり前述したプール領域)についても、この線形リストに加えることができる。たとえば、開始アドレス11080のブロックは、以前使用されていたが、解放されたため、リストの最後に追加されている。開始アドレス11080のブロックに続く空きブロックがない場合には、図6Aに示すように、ポインタは未使用となる。本実施形態では、ブロックのアドレスを64バイト置きに表記しているが、ブロックの管理サイズは任意のサイズにすることができる(例えば512バイト置きにすることができる)。
DVOL1の空き容量は、図6Bに例示するブロック使用量管理テーブルTb8によって管理されている。テーブル8bには、例えば、全ブロック数、空きブロック数、各PVOLの差分データ管理に要するブロック数が記録されている。空き容量は、1ブロックあたりのサイズ×空きブロック数で求めることができる。同テーブル8bにより、管理者は、DVOL1の空きブロック数及び空き容量について、管理端末31の管理画面32を通じて確認することができる。
以上、DVOL1の空きブロックリストLst7及びブロック使用量管理テーブルTb8について説明したが、同様のリストやテーブルは、各DVOL毎に用意することができる。
図7Aは、PVOL1のスナップショットの管理のために用いられるCoW管理ビットマップの構成例を示す。各ビットは、PVOL1上のブロックのアドレスと対応している。新データの上書きの際にCoWが実施されたブロックに対応するビットは、制御プログラム118、119によって、ON(図中で黒色)にされ、それ以外のブロックに対応するビットは、OFF(図中で白色)にされる。なお、他のPVOLのスナップショットについても、同様のビットマップを用いることにより管理することができる。
図7Bを参照して、PVOL1のスナップショット世代管理リストについて説明する。Lst10は、PVOL1のスナップショット世代を管理するリストの一例である。リストLst10は、PVOL1とDVOL1上のブロックのアドレスの対応関係と、各世代のCoWデータがDVOL1のどのブロックのアドレスに格納されているかをポインタによって示している。各ノード(リストの要素)は、DVOL1上でデータが格納されているブロックのアドレス、どの世代のデータかを示すビット群(以下、世代ビット)、および、次のノードへのポインタとなっている。
図8を参照して、PVOL1の更新差分データ管理リストについて説明する。Lst11は、PVOL1の更新差分データ、すなわち、新データの複製を管理するためのリストである。各ノードは、例えば、図7Bと実質的に同様に、DVOL1におけるコピー先のブロックのアドレス、どの世代のデータかを示す世代ビット、次のノードへのポインタとなる。
図9Aは、各PVOL1,2におけるスナップショットおよび更新差分データの世代管理を行うためのテーブルである世代カウンタ管理テーブルの構成例を示す。
世代カウンタ管理テーブルTb12における各カウンタ値の初期値はゼロとなっている。このテーブルTb12において、スナップショットのカウンタ値は、制御プログラム118、119によって、ホスト20〜22から指示があるたびに1増加され、更新差分データのカウンタ値は、syncコマンドなどホスト20〜22から整合性の取れる契機を取得するたびに1増加される。ここで言う「整合性」とは、ホストのアプリケーションとPVOL1との間でのデータの整合性のことを意味する。また、syncコマンドとは、リナックス(商標)やWindows(商標)などのオペレーティングシステム(OS)から発行されるコマンドであって、より具体的には、SCSIプロトコルであればSYNCRONIZE CACHEコマンドやSCSIヘッダ中のFUA(Force Unit Access)ビットをONにしたWRITEコマンド、ATAプロトコルであればFLUSH CACHEコマンドとしてディスクアレイ装置に発行され、キャッシュに残っているデータをディスク装置に移す命令である。制御プログラム118は、例えば、syncコマンドを受けた場合、ディスクアレイコントローラ11のキャッシュメモリ6に存在する、PVOL1に書いていないデータを、キャッシュメモリ6からPVOL1に移すことができる。
なお、syncコマンドは、ユーザからの明示的な指示によらずに、種々のタイミングで発行することができる。例えば、上記例のように書き込みコマンドとして発行することもできる。また、例えば、OS上で動作するコンピュータプログラムであって、同一のアクセス先(例えばPVOL1)までの複数のI/Oパスを制御するマルチパス切替ドライバが、コマンドを流すI/Oパスを切り替えるときに、コマンドの順序性を保証するために、同期指示として、syncコマンドを発行することができる。また、例えば、アプリケーションが、定期的に又は不定期的に、データの整合性が取れている時点を表すチェックポイントを知らせるために、OSのsyncコマンドを呼び出してOSから発行させることもできる。
図9Bは、PVOL1のスナップショット・更新差分履歴テーブルの構成例を示す。
この図9Bに例示するスナップショット・更新差分履歴テーブル(以下、単に「履歴テーブル」と言う)Tb13は、PVOL1のスナップショット及び更新差分データ(新データの複製)の世代更新履歴を時間軸順に管理するためのテーブルである。いずれかの世代が更新されると、制御プログラム118,119によって、当該テーブルTb13に、更新された時刻(更新時刻)とともに更新後の世代が記録される。具体的には、例えば、「状態」の欄において、「スナップショット」や「更新差分」は、更新されたものがスナップショットと更新差分データのどちらであるかを示し、「#」の後の番号は、通し番号を示す。更新時刻は、ディスクアレイ装置1ないしディスクアレイコントローラ11,12内に設けられるタイマ等の値を利用することができるが、時間軸に沿った順序を保証することができれば、ディスクアレイ装置1の内外を問わず、他の時刻取得方法を採用することもできる。
以上の図7A、図7B、図8及び図9Bに例示したビットマップやリストは、各PVOL毎に用意することができる。
以下、ディスクアレイ装置1が行う種々の処理の流れの一例について説明する。
図10は、ホストからコマンドを受信した際に行われる処理のフローチャートの一例を示す。なお、以下の説明では、読出しコマンドを受けた場合に行われる処理の流れの説明については省略し、書込みコマンド、もしくは、チェックポイントを示すコマンドが来た際に行われる処理について説明する。この図10に示すフローチャートは、ホストからコマンドを受信し、そのホストに応答を返すまでの処理を示しており、ホストからコマンドを受信する毎に実行される。また、以下の説明を分かり易くするため、コマンドを送信するのはホスト20であるとし、ディスクアレイ装置1が受信したコマンドを処理するのは、制御プログラム118であるとし、書込みコマンドの書込み先は、PVOL1であるとする。
制御プログラム118は、ホスト20からコマンドを受信すると(ステップS1000)、受信したコマンドが整合性の取れるチェックポイントを示すコマンドか否かを判別する(ステップS1010)。
ステップS1010の判別の結果、コマンドが整合性の取れるチェックポイントを示すコマンドでなかった場合(ステップS1010:No)、制御プログラム118は、そのコマンドが書込みコマンドか否かを判別する(ステップS1015)。
ステップS1015の判別の結果、書き込みコマンドであった場合には(ステップS1015:No)、制御プログラム118は、スナップショットが有効で、かつ、データの書き込み先となるブロックがCoWで退避済みかどうかを判断する(ステップS1020)。PVOL1のスナップショットが有効か否かは、例えば、世代カウンタ管理テーブルTb12を参照し、PVOL1に対応したスナップショットのカウンタ値が1以上か否かで判別することができる(1以上であれば有効であるとわかる)。CoWで退避済みかどうかは、例えば、CoW管理ビットマップMp9を参照し、書込み先ブロックに対応するビットがONかOFFかで判別することができる(ONになっている場合には、CoWで退避済みということがわかる)。
スナップショットが有効でCoWで退避が済んでいると判断できた場合、或いは、スナップショットが無効(スナップショットのカウンタ値がゼロ)でCoW処理が不要と判断できた場合(ステップS1020:No)、制御プログラム118は、書込み対象である新データを、PVOL1上の該当アドレス(書き込みコマンドで指定されている書込み先アドレス)に書き込む(ステップS1030)。その後、制御プログラム118は、更新差分データをDVOL1に書き込む処理に移行する。
すなわち、制御プログラム118は、DVOL1に更新差分データ(新データの複製)を書き込むために、空きブロック管理リストLst7(図6A参照)を参照して、更新差分データの書込み先とするブロックを確保する(ステップS1040)。そして、制御プログラム118は、ブロック使用量管理テーブルTb8の値を更新する(ステップS1050)。具体的には、制御プログラム118は、空きブロック数を減じ、PVOL1用差分管理ブロック数を増加させる。
次に、制御プログラム118は、ステップS1040で確保したDVOL1上のブロックに、更新差分データを書き込む(ステップS1060)。そして、制御プログラム118は、更新差分データの書込み先となったブロックに対応したノード(以下、最新ノード)を、更新差分データ管理リストLst11に接続する(ステップS1070)。具体的には、例えば、制御プログラム118は、図8に示すように、PVOL1のアドレス5001のデータを更新した場合、そこからポインタで接続されている、ノードを順に探索し、最後のノードに、最新ノードを接続することができる。
制御プログラム118は、ステップS1080において、世代カウンタ管理テーブルTb13を参照し、PVOL1の更新差分データの現世代が何世代目かを得る(つまり、更新差分のカウンタ値を得る)。そして、制御プログラム118は、PVOL1の更新差分データ管理リストLst11において、ステップS1070で接続した最新ノードの直前ノードの世代ビットにつき、現世代以降に当たるビットをすべてOFFにする。一方、制御プログラム118は、ステップS1070で接続した最新ノードの世代ビットにつき、現世代以降に当たるビットをすべてONにする。このS1080の処理により、接続された最新ノードに対応したブロックの世代を現世代にすることができる。
制御プログラム118は、直前ノードの世代ビットを構成するビット群が全てOFFとなっているか否かをチェックし(ステップS1090)、OFFとなっていない場合(ステップS1090:No)には、ホスト20に応答を返して終了する。
ところで、ステップS1010で、ホスト20からのコマンドが整合性の取れる契機を示すものであった場合には(ステップS1010:Yes)、制御プログラム118は、世代カウンタ管理テーブルTb12における、PVOL1の更新差分に対応した世代カウンタ値を1増加させ(ステップS1100)、PVOL1に対応した履歴テーブルTb13に、PVOL1の更新差分データの世代が変わったこととその時刻とを記録する。ステップS1015以降の処理は、先に説明した通りである。
また、ステップS1020で、スナップショットが有効であるがCoWによるデータの退避が済んでいないと判別された場合には(ステップS1020:Yes)、制御プログラム118は、DVOL1の空ブロック管理リストLsT7から、CoWデータの書込み先とするブロックを確保する(ステップS1200)。そして、制御プログラム118は、ステップ1050と同様に、DVOL1のブロック使用量管理テーブルTb8を更新し(ステップS1210)、その後、CoWデータをPVOL1からDVOL1内の確保した空きブロックへ退避する(つまり移動する)(ステップS1220)。次に、制御プログラム118は、当該CoWデータの書込み先となったブロックのノードを、PVOL1における更新予定ブロックのアドレス(書込みコマンドで指定されているアドレス)と対応関係をとる最後のノードとして、PVOL1のスナップショット世代管理リストLst10に接続する(ステップS1230)。制御プログラム118は、世代カウンタ管理テーブルTb12と、接続した最新ノードの直前ノードの世代ビットとを参照し、最新ノードの世代ビットのビット群において、直前ノードの世代を表すビットの1つ後ろのビットから現世代のビットまでをONにする(ステップS1240)。これにより、PVOL1における更新予定ブロックの世代を現世代にすることができる。また、制御プログラム118は、PVOL1のCoW管理ビットマップMp9において、PVOL1における更新予定ブロックに対応するビットをON(=退避済み)とする。ステップS1030以降の処理は先に説明した通りである。
また、ステップS1090で、接続された最新ノードの直前ノードの世代ビットがすべてOFFとなってしまった場合(ステップS1090:Yes)、このことは、整合性が取れないまま新データが上書きされてしまったことを意味している。このため、直前ノードは不要なので、制御プログラム118は、次の手順により、直前のノードを解放することができる。すなわち、制御プログラム118は、直前ノードをリストから外し、直前ノードの前のノードのポインタを、最新ノードを指すように変更する(ステップS1300)。つまり、外された直前ノードの前のノードに、最新ノードが接続される。制御プログラム118は、外された直前ノードが持つブロックのアドレスを、空きブロック管理リストLst7に追加する(ステップS1310)。そして、制御プログラム118は、ブロック使用量管理テーブルTb8において、PVOL1用差分管理ブロック数を減じ、減じた分、空きブロック数を増加させる(ステップS1320)。以上の処理によって、不要ブロックが解放され、再び利用できるようにされる。
また、ステップS1015で、書込みコマンド以外のコマンドであれば、そのコマンドに従う処理が行われる(ステップS1400)。
以上が、図10についての説明である。以下、ステップS1090でYesの場合についての説明を、図14A及び図14Bを参照して補足する。なお、図14A及び図14Bにおいて、各ノードは、更新差分データ管理リストLst11におけるノードを表し、そのノード内で配列された枠は、世代ビットを構成するビットを表し、枠内の数字は、世代を表している。
例えば、ライトコマンド間で整合性契機を示すコマンドがあった場合(例えば、或るライトコマンドもその次に受けたライトコマンドもsyncコマンドであった場合)、ステップS1010において、更新差分世代カウンタはインクリメントされる。この結果、図14Aに例示するように、最新ノードにおける世代は、直前ノードにおける世代(例えば2)の次の世代(例えば3)となる。
しかし、ライトコマンド間で整合性契機を示すコマンドがなかった場合(例えば、或るライトコマンドはsyncコマンドではなかったがその次に受けたライトコマンドがsyncコマンドであった場合)、換言すれば、整合性が取れないまま新たにデータがライトされた場合、ステップS1010において、更新差分世代カウンタはインクリメントされない。つまり、図14Bに例示するように、直前ノードにおける世代(例えば2)と最新ノードにおける世代は同じ(例えば2)となってしまう。
このとき、ステップS1080の処理において、制御プログラム118は、直前ノードの現世代以降(=2,3,4…)のビットを全てOFFにし、最新ノードの現世代以降(=2,3,4,…)のビットを全てONにするので、図14Bに例示するように、直前ノードは、すべてのビットがOFFという状態になる。この結果、更新差分データとしては、有効(つまりビットがON)な2世代目のデータと、上書きされてしまった無効な(つまりビットがOFF)の2世代目のデータとを持っている状態となる。このため、ステップ1090でYes以降のS1300〜S1320の処理を行うことで、無効な直前ノードを解放することができる。
図11Aは、ホスト20のスナップショットマネージャ202からスナップショット指示を受けた際に行われる処理のフローチャートの一例を示す。
例えば、制御プログラム118は、ホスト20のスナップショットマネージャ202から、PVOL1のスナップショットの取得指示を受け取ると(ステップS2000)、世代カウンタ管理テーブルTb12において、PVOL1のスナップショット世代に対応するカウンタ値を1増加させ(ステップS2010)。そして、制御プログラム118は、PVOL1の履歴テーブルTb13において、その更新時刻とともに、スナップショットを更新したことを記録する(ステップS2020)。次に、制御プログラム118は、PVOL1のCoW管理ビットマップMp9をすべてクリア(すべてOFF)にする(ステップS2030)。
図11Bは、更新差分データとCoWデータとで重複する部分を削除することでDVOLの使用量を削減する処理のフローチャートの一例を示す。
このフローチャートは、例えば、ホスト20からスナップショット指示を受信した際に、制御プログラム118によって実行される。すなわち、制御プログラム118は、スナップショット指示を受信すると、DVOL1のブロック使用量管理テーブルTb8を参照し、DVOL1の使用量が、所定の基準値以上か否かのチェックを行う(ステップS3000)。この基準値は、例えば、ディスクコントローラ11のメモリに記憶させておくことができる。この基準値は、管理端末31を通じてユーザによって設定することができる。なお、この基準値は、ユーザによって設定されていなくてもよい。その場合、制御プログラム118が、初期値として予め用意された基準値を用いる形態としてもよいし、定期的にこの図11Bに例示するフローを実行し、なるべく重複データを削除する形態としても良い。
上記使用量が基準値以上であった場合(ステップS3000:Yes)、制御プログラム118は、直前回に取得されたスナップショットの世代(ステップS2010でインクリメント後のカウンタ値が表す世代)以前の世代の更新差分データを解放する(ステップS3010)。すなわち、制御プログラム118は、この図11Bの処理を行う契機となったスナップショットの二世代前のスナップショットの基準時刻よりも以前にDVOL1に書かれた更新差分データをDVOL1から解放する。具体的には、例えば、制御プログラム118は、履歴テーブルTb13を参照し、解放する更新差分データの世代を特定する。例えば、図9Bに例示した履歴テーブルTb13において、本処理の開始のきっかけとなったのが、3世代目のスナップショットとすると、2世代前のスナップショットは「スナップショット#1」となる。「スナップショット#1」より以前に取得された更新差分は「更新差分#1」である。従って、1世代目の更新差分データがDVOL1からの解放対象であることがわかる。
当該世代(最新のスナップショットの世代の2世代前)の更新差分データをDVOL1から解放した後、制御プログラム118は、履歴テーブルから解放した「更新差分#1」の項目を解放し(ステップS3020)、且つ、解放された更新差分データのノードもリストLst11(図8参照)から解放し、ブロック使用量管理テーブルを更新する(ステップS3030)。
図12は、図10、図11A及び図11Bで示した処理流れの理解を助けるために、PVOL1およびDVOL1上での時間経過に伴うデータの変化を模式的に示した図である。
図12において、縦軸t0、t1、・・・は、各時点での時刻を表し、横軸「PVOL1上のデータ」は、ブロックアドレス5001,5002,5003におけるデータを示している。同様に、横軸「DVOL1上のデータ」は、更新差分データとCoWデータの様子を示している。
時刻t0において、PVOL1上のブロックアドレス5001,5002,5003に、それぞれ、データ"1"、"A"、"a"が書き込まれると、図10の処理によって、DVOL1上に更新差分データ"1"、"A"、"a"がそれぞれ書かれる(参照:ステップS1030〜1080)。また、それと同時刻に、整合性を取る契機の1つである"Sync"コマンドが発行されたため、更新差分の世代が1つ上がり(つまり、PVOL1に対応した更新差分のカウンタ値が0から1に変わり)、1世代目の更新差分データが確定する(参照:ステップS1010、S1100、S1110)。
次に、時刻t1の前に、スナップショット指示を受信すると、図11Aの処理によって、時刻t0におけるPVOL1のデータが、スナップショットで保護されるようになる。
次に、時刻t1において、ブロックアドレス5001、5003に、それぞれ"2"と"b"をそれぞれ書き込むための書込みコマンドが発行されると、図10の処理(参照:ステップS1000〜1090)の繰り返しによって、CoWデータとして、"1"と"a"が退避され、更新差分データとして、"2"及び"b"が記録される。また、PVOL1上のデータも、図12に示す通りに更新される。
次に、時刻t2において、ブロックアドレス5002,5003に、それぞれ"B"、"c"に書き換える書込みコマンドが発行されると、図10の処理によって、CoWデータとして、"A"が退避される。また、時刻t2の直前の時刻t1で"Syncコマンド"がなかったことから、この時刻t2では、ステップS1090およびS1300〜1320の処理によって、更新差分データ"b"が解放され、"c"、"B"が更新差分データとして記録される。別の言い方をすれば、データの整合性を取れる契機か直前時刻でなかった場合には、制御プログラム118は、今回の時刻t2でPVOL1に上書きされる前のデータ"b"と同じ更新差分データ"b"を、DVOL1から解放し、且つ、PVOL1上のデータ"b"を、CoWデータとしてDVOL1に退避しないようにする。この時刻t2では、"Syncコマンド"の発行によって、2世代目の更新差分データが確定される。
次に、時刻t3において、ブロック5001,5003にそれぞれ"3"、"d"を書き込むための書込みコマンドが発行されると、更新差分データとして"3"、"d"がDVOL1上に記録される。一方、それらのブロック5001,5003について、既に、CoWデータの退避が行われているため(つまり時刻t1でCoWが行われているため)、この時刻t3において、CoWは起こらない。時刻3で、"Syncコマンド"の発行によって、3世代目の更新差分データが確定される。
時刻t4の前に、2回目のスナップショット指示により、時刻t3におけるPVOL1のイメージがスナップショットとして保護される。そして、これにより、PVOL1のCoW管理ビットマップMp9の全ビットはOFFにされる。
時刻t4において、ブロック5003にデータ"e"を書き込むためのコマンドが発行されると、CoWデータとして"d"がPVOL1から退避され、更新差分データとして"e"がDVOL1上に記録され、PVOL1のデータが更新される。また、同時刻4の"Syncコマンド"により、4世代目の更新差分データが確定する。
図13を参照して、リカバリ制御について説明する。図13は、障害が発生し不整合となったデータをリカバリするために、最近の整合性のとれた状態へデータをリカバリさせる処理のフローチャートの一例を示す。なお、この処理は、ユーザから指示があった場合に実行することができる。指示は、ホスト20、21、22もしくは管理端末31から出すことができる。
例えば、制御プログラム118は、ホスト20からPVOL1のリカバリ指示を受け取ると(ステップS4000)、PVOL1に対応した履歴テーブルTb13を参照し、整合性の取れる更新差分最終世代よりも前の直近のスナップショット世代を探して見つける(ステップS4010、S4020)。なお、「更新差分最終世代」とは、更新差分データの整合性が取れた最近の時点における更新差分データの世代のことである。
次に、制御プログラム118は、そのスナップショット世代を表す世代ビットに対応したDVOL1上のアドレスをスナップショット世代管理リストLst10から特定し、特定されたアドレスのブロックに存在するCoWデータを、DVOL1からPVOL1へと戻す(ステップS4030)。
スナップショットのリカバリが完了した後、制御プログラム118は、上記の更新差分最終世代を表す世代ビットに対応したDVOL1上のアドレスを、更新差分データ管理リストLst11から特定し、特定されたアドレスのブロックに存在する更新差分データを、DVOL1からPVOL1へと戻す(ステップS4040)。
以上の処理により、リカバリが完了する。図12を参照して説明すると、例えば、PVOL1にデータ"4"、"C"、"f"が存在する状態で、時刻t5においてPVOL1に障害が生じた場合に、リカバリ指示を受けたとする。このため、上記のステップS4010及びS4020の処理が行われることにより、更新差分最終世代は四世代目ということがわかり、それと直近のスナップショット世代は二世代目ということがわかる。制御プログラム118は、スナップショット世代として二世代目を表す世代ビットのDVOL1のアドレスをスナップショット世代管理リストLst10から探し、そのアドレスに存在するCoWデータ"3"、"B"、"d"を、DVOL1からPVOL1に戻す。次に、制御プログラム118は、更新差分最終世代として四世代目を表す世代ビットのDVOL1のアドレスを更新差分データ管理リストLst11から探し、そのアドレスに存在する更新差分データ"e"を、DVOL1からPVOL1に戻す。これにより、更新差分最終世代が四世代目の時点のデータ"3"、"B""、e"が、PVOL1にリカバリされることになる。
以上、上述した実施形態によれば、ユーザからの明示的な指示(つまり、ユーザの手動による指示)のほかに、データの整合性の取れる契機を取得し、その契機で、更新差分データを確定するので、ホストの負荷を増大させずに、時間粒度の細かいデータ保護が可能になる。
また、上述した実施形態によれば、DVOLに存在する複数のデータのうち、更新差分最終世代よりも前の直近のスナップショット世代のCoWデータをPVOLに戻す第一のステップと、その後に、更新差分最終世代の更新差分データをPVOLに戻す第二のステップで、更新差分最終世代の時点、つまり、最後に整合性が取れた時点のPVOLがリカバリされる。これにより、例えば、従来のジャーナリング技術のように順次にデータを再生していくことよりも高速なリカバリが期待できる。
また、上述した実施形態によれば、新データの複製が生成されそれが更新差分データとしてDVOLに書き込まれる。CoWでは、PVOLからデータを読出すという、PVOLへのアクセスが発生するが、上記実施形態では、新データがPVOLに書かれる都度に、新データの複製を用意してDVOLに書くようになっているので、PVOLへのアクセス負荷を発生させることなく(つまりPVOLへのアクセス性能を落とすことなく)、時間粒度の細かいデータ保護が可能になる。
また、上述した実施形態によれば、DVOL内で更新差分データとCoWデータとが重複したか否かが所定のタイミングで判別され、重複したと判別された場合には、一方が削除されて他方が残される。これにより、DVOLの消費量を節約することができる。
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
例えば、DVOLは、ディスク装置に代えて又は加えて、ディスクアレイコントローラ11のメモリ上に用意されても良い。この場合、更新差分データ及びCoWデータの両方が、メモリに書き込まれても良いし、一方がメモリに書き込まれ他方がディスク装置に書き込まれても良い。
また、例えば、DVOLは、更新差分データを記憶するための領域と、CoWデータを記憶するための領域とに区分されていてもよい。
図1は、本発明の一実施形態に係るディスクアレイ装置の概略構成例を示す説明図である。 図2Aは、図1のディスクアレイ装置の外観図である。図2Bは、ディスクアレイコントローラの構成例を示す。 図3は、ディスク装置と論理ボリュームの関係例を表す概念図である。 図4Aは、VOL構成管理テーブルの構成例を示す。図4Bは、VOL対応管理テーブルの構成例を示す。 図5は、本実施例におけるPVOL1、PVOL2、DVOL1との関連を模式的に示したものである。 図6Aは、DVOL1の空きブロック管理リストの構成例を示す。図6Bは、DVOL1のブロック使用量管理テーブルの構成例を示す。 図7Aは、PVOL1のスナップショットの管理のために用いられるCoW管理ビットマップの構成例を示す。図7Bは、PVOL1のスナップショット世代管理リストの一例を示す。 図8は、PVOL1の更新差分データ管理リストの一例を示す。 図9Aは、世代カウンタ管理テーブルの一例を示す。図9Bは、スナップショット・更新差分履歴テーブルの構成例を示す。 図10は、ホストからコマンドを受信した際に行われる処理のフローチャートの一例を示す。 図11Aは、ホスト20のスナップショットマネージャ202からスナップショット指示を受けた際に行われる処理のフローチャートの一例を示す。図11Bは、更新差分データとCoWデータとで重複する部分を削除することでDVOLの使用量を削減する処理のフローチャートの一例を示す。 図12は、PVOL1およびDVOL1上での時間経過に伴うデータの変化を模式的に示した図である。 図13は、データをリカバリさせる処理のフローチャートの一例を示す。 図14Aは、2つのライトコマンド間に整合性契機があった場合の各ノードの世代ビットの様子の一例を示す図。図14Bは、2つのライトコマンド間に整合性契機がなかった場合の各ノードの世代ビットの様子の一例を示す図。
符号の説明
1…ディスクアレイ装置 11、12…ディスクアレイコントローラ 101、102、103…信号線 118…データバッファ領域 119…制御プログラム 130、131、132…接続インターフェース D00〜D2N…ディスク装置 E00〜E80…ディスク筐体 20、21、22…ホスト 30…管理用ネットワーク 31…管理端末 32…管理画面 40…ストレージネットワーク Lst7…管理テーブル Lst10…スナップショット世代管理リスト Lst11…更新差分データ管理リスト Mp9…CoW管理ビットマップ Tb4…VOL構成管理テーブル Tb5…VOL対応管理テーブル Tb8…ブロック使用量管理テーブル Tb12…世代カウンタ管理テーブル Tb13…スナップショット・更新差分履歴テーブル

Claims (3)

  1. ホスト計算機からのデータが書き込まれる第一の論理ボリュームと、
    前記第一の論理ボリュームのバックアップ用の論理ボリュームである第二の論理ボリュームと、
    前記ホスト計算機からの書込みコマンドに従うデータを前記第一の論理ボリュームに書込むコントローラと
    を備え、
    前記コントローラが、
    (A)スナップショット取得時点におけるスナップショットの世代であるスナップショット世代を、スナップショット取得時点が発生する都度に更新し、
    (B)スナップショット取得時点の後から次のスナップショット取得時点までに、前記第一の論理ボリュームに新たなデータが書かれる都度、
    (b1)前記新たなデータの書込み先が、前記スナップショット取得時点の後に初めて書込み先となった場所か否かを判別し、初めて書込み先となった場所であれば、前記書込み先に記憶されている旧いデータを、前記第一の論理ボリュームの前記書込み先から前記第二の論理ボリュームに退避させて、前記書込み先に前記新たなデータを書き込み、
    (b)前記新たなデータの複製である更新差分データを、前記第二の論理ボリュームに追記し、その際、前記第一の論理ボリュームにおける、前記新たなデータの書込み先が、前記スナップショット取得時点の後から前記次のスナップショット取得時点までに書込み先となった場所と同じ場所である場合、その場所に書き込まれたデータの複製としての更新差分データが、syncコマンドの取得無しに前記第二の論理ボリュームに既に書き込まれているデータであるならば、その書き込まれている更新差分データを解放し、syncコマンドを取得して前記第二の論理ボリュームに既に書き込まれているデータであるならば、その書き込まれている更新差分データを解放せず、
    (b)syncコマンドを取得したときに、前記(b1)の前記更新差分データの確定した時点における、前記更新差分データの世代である更新差分世代を更新し、
    (C)スナップショット取得時点が発生する都度に、前記第二の論理ボリュームの使用量が所定の基準値以上か否かを判断し、その判断の結果が肯定的であれば、最新のスナップショットの世代の二世代前の世代以前に前記第二の論理ボリュームに書かれた更新差分データを前記第二の論理ボリュームから削除し、
    (D)障害発生時点に最も近い更新差分世代より前且つ直近のスナップショット世代を特定し、前記第二の論理ボリュームにおける、前記特定したスナップショット世代に対応する旧いデータと、前記第二の論理ボリュームにおける、前記障害発生時点に最も近い更新差分世代に対応する前記更新差分データとにより、前記第一の論理ボリュームのリカバリを行い、
    前記syncコマンドは、前記ホスト計算機のユーザの操作によらないで発生し、前記第一の論理ボリュームと前記ホスト計算機のアプリケーションプログラムとの間でのデータの整合性の取れることを意味し、且つ、前記ホスト計算機のオペレーティングシステムから定期的又は不定期的に発行されたコマンドである、
    ストレージシステム。
  2. (A)ホスト計算機からの書込みコマンドに従うデータを第一の論理ボリュームに書込み、
    (B)各スナップショット取得時点におけるスナップショットの世代であるスナップショット世代を、スナップショット取得時点が発生する都度に更新し、
    (C)スナップショット取得時点の後から次のスナップショット取得時点までに、前記第一の論理ボリュームに新たなデータが書かれる都度、
    (c1)前記新たなデータの書込み先が、前記スナップショット取得時点の後に初めて書込み先となった場所か否かを判別し、初めて書込み先となった場所であれば、前記書込み先に記憶されている旧いデータを、前記第一の論理ボリュームの前記書込み先から前記第二の論理ボリュームに退避させて、前記書込み先に前記新たなデータを書き込み、
    (c)前記新たなデータの複製である更新差分データを、前記第二の論理ボリュームに追記し、その際、前記第一の論理ボリュームにおける、前記新たなデータの書込み先が、前記スナップショット取得時点の後から前記次のスナップショット取得時点までに書込み先となった場所である場合、その場所に書き込まれたデータの複製としての更新差分データが、syncコマンドの取得無しに前記第二の論理ボリュームに既に書き込まれているデータであるならば、その書き込まれている更新差分データを解放し、syncコマンドを取得して前記第二の論理ボリュームに既に書き込まれているデータであるならば、その書き込まれている更新差分データを解放せず、
    (c)syncコマンドを取得したときに、前記(c1)の前記更新差分データの確定した時点における、前記更新差分データの世代である更新差分世代を更新し、
    (D)スナップショット取得時点が発生する都度に、前記第二の論理ボリュームの使用量が所定の基準値以上か否かを判断し、その判断の結果が肯定的であれば、最新のスナップショットの世代の二世代前の世代以前に前記第二の論理ボリュームに書かれた更新差分データを前記第二の論理ボリュームから削除し、
    (E)障害発生時点に最も近い更新差分世代より前且つ直近のスナップショット世代を特定し、前記第二の論理ボリュームにおける、前記特定したスナップショット世代に対応する旧いデータと、前記第二の論理ボリュームにおける、前記障害発生時点に最も近い更新差分世代に対応する前記更新差分データとにより、前記第一の論理ボリュームのリカバリを行い、
    前記syncコマンドは、前記ホスト計算機のユーザの操作によらないで発生し、前記第一の論理ボリュームと前記ホスト計算機のアプリケーションプログラムとの間でのデータの整合性の取れることを意味し、且つ、前記ホスト計算機のオペレーティングシステムから定期的又は不定期的に発行されたコマンドである、
    記憶制御方法。
  3. (A)ホスト計算機からの書込みコマンドに従うデータを第一の論理ボリュームに書込み、
    (B)各スナップショット取得時点におけるスナップショットの世代であるスナップショット世代を、スナップショット取得時点が発生する都度に更新し、
    (C)スナップショット取得時点の後から次のスナップショット取得時点までに、前記第一の論理ボリュームに新たなデータが書かれる都度、
    (c1)前記新たなデータの書込み先が、前記スナップショット取得時点の後に初めて書込み先となった場所か否かを判別し、初めて書込み先となった場所であれば、前記書込み先に記憶されている旧いデータを、前記第一の論理ボリュームの前記書込み先から前記第二の論理ボリュームに退避させて、前記書込み先に前記新たなデータを書き込み、
    (c)前記新たなデータの複製である更新差分データを、前記第二の論理ボリュームに追記し、その際、前記第一の論理ボリュームにおける、前記新たなデータの書込み先が、前記スナップショット取得時点の後から前記次のスナップショット取得時点までに書込み先となった場所である場合、その場所に書き込まれたデータの複製としての更新差分データが、syncコマンドの取得無しに前記第二の論理ボリュームに既に書き込まれているデータであるならば、その書き込まれている更新差分データを解放し、syncコマンドを取得して前記第二の論理ボリュームに既に書き込まれているデータであるならば、その書き込まれている更新差分データを解放せず、
    (c)syncコマンドを取得したときに、前記(c1)の前記更新差分データの確定した時点における、前記更新差分データの世代である更新差分世代を更新し、
    (D)スナップショット取得時点が発生する都度に、前記第二の論理ボリュームの使用量が所定の基準値以上か否かを判断し、その判断の結果が肯定的であれば、最新のスナップショットの世代の二世代前の世代以前に前記第二の論理ボリュームに書かれた更新差分データを前記第二の論理ボリュームから削除し、
    (E)障害発生時点に最も近い更新差分世代より前且つ直近のスナップショット世代を特定し、前記第二の論理ボリュームにおける、前記特定したスナップショット世代に対応する旧いデータと、前記第二の論理ボリュームにおける、前記障害発生時点に最も近い更新差分世代に対応する前記更新差分データとにより、前記第一の論理ボリュームのリカバリを行う、
    ことをコンピュータに実行させ、
    前記syncコマンドは、前記ホスト計算機のユーザの操作によらないで発生し、前記第一の論理ボリュームと前記ホスト計算機のアプリケーションプログラムとの間でのデータの整合性の取れることを意味し、且つ、前記ホスト計算機のオペレーティングシステムから定期的又は不定期的に発行されたコマンドである、
    コンピュータプログラム。
JP2005295025A 2005-10-07 2005-10-07 記憶制御システム及び方法 Expired - Fee Related JP4749112B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005295025A JP4749112B2 (ja) 2005-10-07 2005-10-07 記憶制御システム及び方法
US11/290,469 US20070083567A1 (en) 2005-10-07 2005-12-01 Storage control system and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005295025A JP4749112B2 (ja) 2005-10-07 2005-10-07 記憶制御システム及び方法

Publications (2)

Publication Number Publication Date
JP2007102692A JP2007102692A (ja) 2007-04-19
JP4749112B2 true JP4749112B2 (ja) 2011-08-17

Family

ID=37912055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005295025A Expired - Fee Related JP4749112B2 (ja) 2005-10-07 2005-10-07 記憶制御システム及び方法

Country Status (2)

Country Link
US (1) US20070083567A1 (ja)
JP (1) JP4749112B2 (ja)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601035B2 (en) * 2007-06-22 2013-12-03 Compellent Technologies Data storage space recovery system and method
US7536529B1 (en) 2005-06-10 2009-05-19 American Megatrends, Inc. Method, system, apparatus, and computer-readable medium for provisioning space in a data storage system
TWI273484B (en) * 2005-06-15 2007-02-11 Inventec Corp Method for increasing system performance
JP4806557B2 (ja) * 2005-10-18 2011-11-02 株式会社日立製作所 ログを管理するストレージ装置及び計算機システム
JP4704893B2 (ja) * 2005-11-15 2011-06-22 株式会社日立製作所 計算機システム及び管理計算機とストレージシステム並びにバックアップ管理方法
TWI312112B (en) * 2005-12-30 2009-07-11 Ind Tech Res Inst Data managing method, method and apparatus to snapshot data for multiple volumes to a single snapshot volume in a data processing system
US7457934B2 (en) * 2006-03-22 2008-11-25 Hitachi, Ltd. Method and apparatus for reducing the amount of data in a storage system
US7769723B2 (en) * 2006-04-28 2010-08-03 Netapp, Inc. System and method for providing continuous data protection
US7689597B1 (en) 2006-05-02 2010-03-30 Emc Corporation Mirrored storage architecture using continuous data protection techniques
US7603395B1 (en) 2006-05-02 2009-10-13 Emc Corporation Using pseudosnapshots for continuous data protection systems to surface a copy of data
US7971091B1 (en) 2006-05-02 2011-06-28 Emc Corporation Network configuration backup and restore operations using continuous data protection
US7765190B1 (en) * 2006-05-02 2010-07-27 Emc Corporation Pseudosnapshot creation and implementation using continuous data protection
US7509358B1 (en) 2006-05-02 2009-03-24 Emc Corporation Performing replication operations on continuous data protection systems using pseudosnapshots
US8370597B1 (en) 2007-04-13 2013-02-05 American Megatrends, Inc. Data migration between multiple tiers in a storage system using age and frequency statistics
US8006061B1 (en) 2007-04-13 2011-08-23 American Megatrends, Inc. Data migration between multiple tiers in a storage system using pivot tables
US9495370B1 (en) * 2007-07-19 2016-11-15 American Megatrends, Inc. Data recovery point review in a continuous data protection system
JP5244440B2 (ja) * 2008-04-10 2013-07-24 日本電信電話株式会社 データベースレプリケーション方法、データベース管理システム及びプログラム
US8706694B2 (en) * 2008-07-15 2014-04-22 American Megatrends, Inc. Continuous data protection of files stored on a remote storage device
JP5313600B2 (ja) * 2008-09-16 2013-10-09 株式会社日立製作所 ストレージシステム、及びストレージシステムの運用方法
JP4833273B2 (ja) 2008-12-09 2011-12-07 富士通株式会社 ストレージ装置、リストア方法およびリストアプログラム
US8225146B2 (en) * 2009-09-01 2012-07-17 Lsi Corporation Method for implementing continuous data protection utilizing allocate-on-write snapshots
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
JP2013029911A (ja) * 2011-07-27 2013-02-07 Fujitsu Ltd 制御装置、制御方法およびストレージ装置
US8788459B2 (en) 2012-05-15 2014-07-22 Splunk Inc. Clustering for high availability and disaster recovery
US11003687B2 (en) 2012-05-15 2021-05-11 Splunk, Inc. Executing data searches using generation identifiers
US10387448B2 (en) 2012-05-15 2019-08-20 Splunk Inc. Replication of summary data in a clustered computing environment
US9130971B2 (en) 2012-05-15 2015-09-08 Splunk, Inc. Site-based search affinity
US9710475B1 (en) 2012-07-16 2017-07-18 Tintri Inc. Synchronization of data
US9015526B2 (en) * 2012-10-05 2015-04-21 Hitachi, Ltd. Restoring method and computer system
US9817835B2 (en) 2013-03-12 2017-11-14 Tintri Inc. Efficient data synchronization for storage containers
US10628378B2 (en) 2013-09-03 2020-04-21 Tintri By Ddn, Inc. Replication of snapshots and clones
JP5991699B2 (ja) 2014-08-08 2016-09-14 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、情報処理システム、バックアップ方法、およびプログラム
CN106569738B (zh) * 2016-09-30 2019-11-29 华为技术有限公司 一种删除级联快照的方法及装置
US10652025B2 (en) * 2017-07-10 2020-05-12 Micron Technology, Inc. Secure snapshot management for data storage devices
KR102697883B1 (ko) * 2018-09-27 2024-08-22 삼성전자주식회사 스토리지 장치의 구동 방법, 이를 수행하는 스토리지 장치 및 이를 포함하는 스토리지 시스템
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5897661A (en) * 1997-02-25 1999-04-27 International Business Machines Corporation Logical volume manager and method having enhanced update capability with dynamic allocation of storage and minimal storage of metadata information
US6978324B1 (en) * 2000-06-27 2005-12-20 Emc Corporation Method and apparatus for controlling read and write accesses to a logical entity
US6618794B1 (en) * 2000-10-31 2003-09-09 Hewlett-Packard Development Company, L.P. System for generating a point-in-time copy of data in a data storage system
US6728736B2 (en) * 2001-03-14 2004-04-27 Storage Technology Corporation System and method for synchronizing a data copy using an accumulation remote copy trio
JP4078039B2 (ja) * 2001-03-21 2008-04-23 株式会社東芝 スナップショットイメージの世代管理方法及び世代管理装置
US6938134B2 (en) * 2002-09-19 2005-08-30 Sun Microsystems, Inc. System for storing block allocation information on multiple snapshots
US7340486B1 (en) * 2002-10-10 2008-03-04 Network Appliance, Inc. System and method for file system snapshot of a virtual logical disk
JP4290975B2 (ja) * 2002-12-19 2009-07-08 株式会社日立製作所 データベース処理方法及び装置並びにその処理プログラム及びディザスタリカバリ方法及びシステム
JP4321705B2 (ja) * 2003-07-29 2009-08-26 株式会社日立製作所 スナップショットの取得を制御するための装置及び記憶システム
JP2005235058A (ja) * 2004-02-23 2005-09-02 Hitachi Ltd スナップショット取得方法、スナップショット取得装置及びスナップショット取得機能を備えたコンピュータシステム
JP4454342B2 (ja) * 2004-03-02 2010-04-21 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US7404051B2 (en) * 2005-04-18 2008-07-22 Hitachi, Ltd. Method for replicating snapshot volumes between storage systems

Also Published As

Publication number Publication date
JP2007102692A (ja) 2007-04-19
US20070083567A1 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
JP4749112B2 (ja) 記憶制御システム及び方法
JP4800031B2 (ja) ストレージシステム及びスナップショット管理方法
JP4900811B2 (ja) 記憶システムおよび記憶制御方法
JP4267420B2 (ja) ストレージ装置及びバックアップ取得方法
JP4800056B2 (ja) ストレージシステム及びその制御方法
JP4646526B2 (ja) 記憶制御システム及び同システムの制御方法
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US7873600B2 (en) Storage control device to backup data stored in virtual volume
US8255647B2 (en) Journal volume backup to a storage device
JP5257672B2 (ja) ジャーナルの階層を管理する計算機システム及び方法
JP4961319B2 (ja) 仮想ボリュームにおける仮想領域に動的に実領域を割り当てるストレージシステム
US7461201B2 (en) Storage control method and system for performing backup and/or restoration
JP2008059443A (ja) 記憶システムおよびバックアップ方法
JP2007048301A (ja) コンピュータ・ストレージ・システムを操作するための装置および方法
JP5275692B2 (ja) ストレージシステム群
JP2002259062A (ja) 記憶装置システム及び記憶装置システムにおけるデータの複写方法
JP2009146389A (ja) バックアップシステム及び方法
JP2005222404A (ja) 仮想記憶ユニットを備えた記憶制御サブシステム
US7152147B2 (en) Storage control system and storage control method
JP5275691B2 (ja) ストレージシステム
JP2003173240A (ja) 記憶装置システム及びそのデータバックアップ方法
JP2000227868A (ja) バックアップ取得方法および計算機システム
US12073089B2 (en) Storage device and data recovery method by storage device
US20230280945A1 (en) Storage system and control method for storage system
JP2004506259A (ja) 仮想記憶システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101101

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101116

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110222

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110401

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: 20110517

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: 20110517

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: 20140527

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees