JP5387315B2 - 記憶装置、制御装置および記憶装置の制御方法 - Google Patents

記憶装置、制御装置および記憶装置の制御方法 Download PDF

Info

Publication number
JP5387315B2
JP5387315B2 JP2009236551A JP2009236551A JP5387315B2 JP 5387315 B2 JP5387315 B2 JP 5387315B2 JP 2009236551 A JP2009236551 A JP 2009236551A JP 2009236551 A JP2009236551 A JP 2009236551A JP 5387315 B2 JP5387315 B2 JP 5387315B2
Authority
JP
Japan
Prior art keywords
buffer
storage
data
processing
control module
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.)
Active
Application number
JP2009236551A
Other languages
English (en)
Other versions
JP2011086006A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2009236551A priority Critical patent/JP5387315B2/ja
Priority to US12/900,831 priority patent/US8589646B2/en
Publication of JP2011086006A publication Critical patent/JP2011086006A/ja
Application granted granted Critical
Publication of JP5387315B2 publication Critical patent/JP5387315B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers

Description

本発明は、順序性を保証した非同期のコピー機能を有する記憶装置、制御装置および記憶装置の制御方法に関する。
従来、分散キャッシュメモリ型のストレージシステムを採用するRAID(Redundant Arrays of Inexpensive Disks)装置では、性能や信頼性の向上のために、ストレージに対するデータの入出力を制御する制御モジュールを複数備える冗長構成が採用されている。そして、制御モジュール毎に、論理ボリュームに対するデータのRead/Write処理が実行される。
このようなRAID装置は、信頼性等の向上のために、アドバンスト・コピーといわれる順序性を保証したリモートコピー機能を備える。
図28は、順序性を保証したリモートコピー機能を備えるRAID装置を説明する図である。なお、図28は、制御モジュール#00および#01を備えるRAID装置2801と、制御モジュール#10および#11を備えるRAID装置2802と、で構成されるストレージシステムを示している。
各RAID装置は、バッファおよびBIT(Buffer Index Table)を有する記録専用バッファと、バッファセットに関する情報を記憶するバッファセット情報記憶部と、データを記憶する記憶媒体と、を備える。
バッファは、一定サイズの複数の領域に分割されている。分割された各領域には、それぞれバッファIDが割り当てられる。そして、領域毎に、記憶媒体に記憶しまたは記憶するデータが一時的に記憶される。また、BIT記憶部は、バッファに記憶したデータの記憶場所、図28ではバッファIDなどを含む情報であるBITを記憶する。
なお、図28のバッファに記載されている(0000)は、バッファIDが0000のバッファに記憶されたバッファデータを表している。また、BITに記載されている0000は、バッファIDを表している。
バッファセット情報記憶部は、各制御モジュールのバッファに記憶されたバッファデータの組合わせ、例えば、コピー元装置2801の横長に点線で囲われたバッファデータ(0000)と(0100)との組合わせであるバッファセットに関する情報を記憶する。
このバッファセットに関する情報には、各バッファデータと各バッファデータを記憶するコピー先装置2802のバッファとの関連付け情報が含まれる。例えば、制御モジュール#00のバッファセット情報記憶部で、バッファIDが0000のバッファに記憶されているバッファデータと、そのバッファデータを記憶するバッファIDが1000のバッファと、が関連付けられている。
以上の構成において、(a)制御モジュール#00および#01は、ホストコンピュータ等からWrite I/O命令を受付けると、そのWrite I/O命令にしたがってWriteデータを記憶媒体に記憶する。
同時に、(b)制御モジュール#00および#01は、Writeデータを転送してバッファに記憶する。この時、Writeデータは、バッファセット単位で管理される。
そして、(c)バッファへのWriteデータの書込みが完了すると、制御モジュール#00および#01は、そのWriteデータについて、バッファセット単位でデータ転送、すなわち、リモートコピーを開始する。
(d)リモートコピーによってコピー元装置2801から送られたWriteデータは、バッファセット情報にしたがって、コピー先装置2802の制御モジュール#10および#11に備わるバッファに記憶される。すると、制御モジュール#10および#11は、バッファに記憶されたWriteデータを記憶媒体に反映する。
以上の処理が完了すると、(e)コピー元装置2801およびコピー先装置2802の各制御モジュールは、バッファなどを解放する。
以上のように、記録専用バッファを使用したまとめ方式によるデータ送信を行なって、バッファセットを一括制御し、コピー先装置2802において、バッファセット単位でデータを記憶媒体に展開することで、順序性が保証される。
上記技術に関連して、書込みデータを一時的に記憶するバッファの使用状況を監視し、バッファの空き容量が少なくなるとバッファ内の情報を高速ディスクシステムに書き出し、使用状況が好転した場合に再びバッファに書き戻すバックアップ装置が知られている。
また、マスタストレージシステムが送信するコピーデータを一時記憶するキャッシュディスクと、キャッシュディスクに記憶されたコピーデータを送信してサブストレージシステムに記憶させるコピーデータ送信手段と、を含むキャッシュストレージシステムが知られている。
特開2006−268420号公報 特開2006−155202号公報
しかし、図29に示すように、コピー元装置2801では、転送済みのWriteデータを記憶するバッファやBITは、コピー先装置2802でWriteデータが記憶媒体に展開されるまで解放されずに保持される。
このため、(f)コピー先装置2802においてWriteデータを記憶媒体に展開する処理が遅延している場合、コピー元装置2801−コピー先装置2802間の回線能力が低いまたは不均一である場合などには、転送処理に遅延が発生する。
例えば、コピー元装置2801−コピー先装置2802間の回線帯域の低さや不安定などにより転送処理に遅延が発生すると、その分コピー元装置2801やコピー先装置2802のバッファやBITを使用する時間が長くなるので、その間メモリの解放ができなくなる。
(g)このような状態でホストコンピュータ等から新たにWrite I/O命令を受けると、コピー元装置2801は、そのWrite I/O命令を受ける度に、Writeデータをバッファに記憶する。その結果、コピー元装置2801のバッファは次々と消費されていく。
(h)この状態が続くと、Writeデータを記憶可能なバッファを確保できなくなり、コピー元装置2801のバッファ枯渇が発生してしまう。また、設定されているバッファの大きさ以上に大きいWriteデータを処理する場合も、同様にバッファ枯渇が発生してしまう。
バッファ枯渇の状態では、ホストコンピュータ等からのWrite I/O命令をコピー元装置2801が処理せずに止まっている状態であるため、この状態を長く継続することはできない。
そのため、(i)一時的にWrite I/O命令の処理を停止し、かつ、一定時間経過してもバッファ枯渇状態が解消されない場合は、バッファHalt処理が行なわれる。コピー元装置2801およびコピー先装置2802は、バッファHalt処理を行なって、バッファをクリアするとともにWrite I/O命令の処理を再開する。
この時、コピー元装置2801は、バッファ内のWriteデータ等の情報を専用のビットマップに書き戻す。そして、コピー元装置2801は、バッファHalt処理を実行後にそのビットマップにしたがって順序性を保証しないリモートコピー転送を行なう。この場合、順序性を保証したリモートコピーが中断されてしまう、という問題がある。
本記憶装置は、上述した問題に鑑みてなされたものであり、その解決しようとする課題は、データの転送処理に遅延が生じる場合でも、順序性を保証したリモートコピーを行なうことができる記憶装置、制御装置および記憶装置の制御方法を提供することである。
本記憶装置の1つの観点によれば、本記憶装置は、上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に分散して記憶する。そして、以下の構成を備える。
データ群記憶手段は、複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶する。
退避処理手段は、前記第2の記憶手段の使用状況に応じて、前記データ群を複数の前記第2の記憶手段から読み出して前記データ群記憶手段に退避する退避処理を実行する。
データ群出力手段は、複数の前記第2の記憶手段それぞれに記憶された第2のデータを含む前記データ群を一括して出力する出力処理を実行する。
記憶処理手段は、前記出力処理が完了して未使用となった前記第2の記憶手段の前記記憶領域それぞれに、前記データ群記憶手段に退避した前記データ群を分散して記憶する記憶処理を実行する。
調整手段は、前記出力処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記出力処理に使用している前記記憶領域の数を調整する。
本記憶装置によると、データの転送処理に遅延が生じる場合でも、順序性を保証したリモートコピーを行なうことができる。
ストレージシステムの構成の概要を示す図である。 制御モジュールが備えるメモリの具体的な構成例を示す図である。 バッファ管理テーブルの構成例を示す図である。 バッファセット管理テーブルの構成例を示す図である。 退避用バッファ管理テーブルの構成例を示す図である。 退避用バッファの構成例を示す図である。 退避用バッファの構成例を示す図である。 退避用バッファを説明する図である。 退避用バッファとバッファセットとの関係を説明する図である。 バッファ退避処理を説明する図である。 バッファ退避処理を説明する図である。 リモートコピーの概要を示すフローチャートである。 リモートコピーの概要を示すフローチャートである。 バッファ閾値を初期化する処理のフローチャートである。 退避用バッファの領域を生成する処理を示すフローチャートである。 退避用バッファの制御モジュールへの割り当ての具体的な処理を示すフローチャートである。 バッファセットの切替え処理を示すフローチャートである。 バッファ退避処理におけるライトバックポインタ情報・ステージポインタ情報を説明する図である。 ライトバックポインタ情報の更新処理を示すフローチャートである。 ステージポインタ情報の更新処理を示すフローチャートである。 ライトバックを示すフローチャートである。 ライトバックの具体例を示す図である。 ライトバックの具体例を示す図である。 ステージングを示すフローチャートである。 ステージングを示すフローチャートである。 バッファ閾値の最適化処理を示すフローチャートである。 図12Bに示したマッチング処理の具体的な処理を示すフローチャートである。 バッファ閾値の最適化を説明する図である。 バッファ閾値の最適化を説明する図である。 順序性を保証したリモートコピー機能を備えるRAID装置を説明する図である。 順序性を保証したリモートコピー機能を備えるRAID装置を説明する図である。
以下、本実施形態の一例について、図1〜図27に基づいて説明する。
図1は、本実施例に係るストレージシステム100の構成の概要を示す図である。
図1に示すストレージシステム100は、RAID装置110と、RAID装置110とネットワークまたは専用線130を介して通信可能に接続するRAID装置120と、を備える。
RAID装置110は、キャッシュメモリ等に使用されるメモリを有する制御モジュール#00〜#03と、磁気ディスク装置などの記憶装置で構成されるディスク装置117と、退避用バッファ118と、を備える分散キャッシュメモリ型のRAID装置である。
制御モジュール#00〜#03は、ディスク装置117および退避用バッファ118と接続する。
制御モジュール#00は、CPU(Central Processing Unit)111aと、メモリ112aと、CA(Channel Adapter)113aと、RA(Remote Adapter)114aと、DA(Device Adapter)115aおよび116aと、を備える。
CPU111aは、所定のプログラム命令を実行して制御モジュール#00を動作させ、本実施例に係る順序性を保証したリモートコピーを実現する。
メモリ112aは、キャッシュメモリに使用される他に、後述する記録専用バッファ201やバッファセット情報記憶部202などに使用されるメモリである。
CA113aは、RAID装置110と接続するホストコンピュータであるホスト150に対するインターフェース制御部である。また、RA114aは、ネットワークまたは専用線130を介して接続される他のRAID装置等に対するインターフェース制御部である。
DA115aおよび116aは、ディスク装置117や退避用バッファ118とのインターフェース制御部である。本実施例では、DA115aはディスク装置117と接続し、DA116aは退避用バッファ118と接続する。
RAID装置110に備わる他の制御モジュール#01〜#03、RAID装置120に備わる制御モジュール#00〜#03も、上述したRAID装置110に備わる制御モジュール#00と同様の構成である。ただし、コピー先装置120は、退避用バッファを備えなくてもよい。
以上の構成において、例えば、「退避処理手段」、「データ群出力手段」、「記憶処理手段」および「調整手段」などは、CPU111aがメモリ112a上の所定の領域に展開されたプログラム命令を実行することによって実現することができる。
「データ群」は、バッファセットデータを用いて実現することができる。
「第1の記憶手段」は、1または2以上の磁気ディスク装置等で構成されるディスク装置117の一部または全部を用いて実現することができる。「データ群記憶手段」は、退避用バッファ118の一部または全部を用いて実現することができる。
「第2の記憶手段」などは、メモリ112aの一部の領域を用いて実現することができる。
なお、図1では、RAID装置110および120が4つの制御モジュール#00〜#03を備える場合について示しているが、これに限定する趣旨ではない。RAID装置110および120は、分散キャッシュメモリ型のRAID装置であればよい。CPU、CA、RAおよびDAの数についても、図1に示す数に限定する趣旨ではない。
以下の実施例では、RAID装置110からRAID装置120にリモートコピーを行なう場合について説明する。そして、この場合のRAID装置110を「コピー元装置110」といい、RAID装置120を「コピー先装置120」という。
図2は、本実施例に係る制御モジュールが備えるメモリ200、例えば、図1に示したRAID装置110の制御モジュール#00に備わるメモリ112aの具体的な構成例を示す図である。
また、RAID装置110の各制御モジュール#01〜#03に備わるメモリ112b、112cおよび112d、RAID装置120の各制御モジュール#00〜#03に備わるメモリ122a、122b、122cおよび122dも、図2と同様の構成でもよい。
図2に示すメモリ200は、記録専用バッファ201と、バッファセット情報記憶部202と、を備える。また、メモリ200は、バッファ管理テーブル記憶部203と、バッファセット管理テーブル記憶部204と、退避用バッファ管理テーブル記憶部205と、未使用バッファID記憶部206と、を備える。
記録専用バッファ201は、バッファ201aとBIT記憶部201bとを備える。
バッファ201aは、ディスク装置117などに記憶するもしくは記憶したデータ、例えば後述するWriteデータなどを一時的に記憶する。本実施例に係るバッファ201aは、一定のサイズを有する8つの領域に区分されている。この区分された領域毎に固有の識別情報が割り当てられる。なお、本実施例ではバッファ201aが8つの領域に区分される場合を例に説明するが、バッファ201aが8つの領域に区分される構成に限定する趣旨でないのは当然である。
以下、この区分された領域を「個別バッファ」という。また、個別バッファに割り当てられる識別情報を「バッファID」という。そして、任意のバッファIDが示す個別バッファに記憶されたデータを「バッファデータ」という。
例えば、図2のバッファ201a内に記載の(0000)、(0001)、(0002)、・・・に関し、括弧内の数字0000、0001、0002、・・・は、個別バッファ毎に割当てられたバッファIDを示す。括弧付きの数字(0000)、(0001)、(0002)、・・・は、それぞれ括弧内のバッファIDが示す個別バッファに記憶されたバッファデータを意味している。
BIT記憶部201bは、バッファ201a内の個別バッファに記憶されているバッファデータが展開されているLU(Logical Unit)やLBA(Logical Block Address)、データサイズ、コピーセッションの番号などを含むBITを記憶する。
BIT記憶部201bに記載の0000、0001、0002、・・・はバッファ201a内の各個別バッファに割当てられたバッファIDを示している。例えば、BIT記憶部201b内の0000は、バッファIDが0000の個別バッファに記憶されているバッファデータが展開されているLUやLBA、データサイズ、コピーセッションの番号などを含むBITを記憶している。
バッファセット情報記憶部202は、同一RAID装置内の各制御モジュールの個別バッファの組み合わせであって次に使用するものを示す識別情報、すなわち、後述するバッファセットIDを記憶する。
以下、同一RAID装置内の各制御モジュールの個別バッファの組み合わせを、「バッファセット」という。また、バッファセットに割り当てられる識別情報を「バッファセットID」という。そして、バッファセットに関する情報を「バッファセット情報」という。さらに、バッファセットに記憶されるバッファデータを総じて「バッファセットデータ」という。
本実施例では、各制御モジュールのバッファ201aに8個の個別バッファが備わっているので、バッファセットも8個となる。説明を簡単にするために、バッファセットIDは、後述するマスタ制御モジュールの個別バッファのバッファIDと同一であるとする。
バッファセット情報には、RAID装置間でリモートコピーを行なう場合の、コピー元装置110に実装されている制御モジュールに備わる個別バッファと、コピー先装置120に実装されている制御モジュールに備わる個別バッファと、を関連付ける情報も含まれる。この関連付ける情報をバッファセット情報に含める処理を「マッチング処理」という。
以下、コピー元装置110に実装されている制御モジュールに備わる個別バッファのバッファIDを、「コピー元ID」という。同様に、コピー先装置120に実装されている制御モジュールに備わる個別バッファのバッファIDを、「コピー先ID」という。
例えば、RAID装置110は、分散キャッシュメモリ型のRAID装置なので、Writeデータ等のデータを、各制御モジュールの個別バッファ、図2の例ではバッファIDが0000、0100、0200および0300の個別バッファに分散して記憶する。
この場合、バッファセット情報記憶部202には、バッファIDが0000、0100、0200および0300の個別バッファを含むバッファセットを表すバッファセット情報が記憶される。
そして、そのバッファセット情報には、例えば、コピー元IDとコピー先IDが、それぞれ0000と1000、0100と1100、0200と1200、0300と1300であるという組み合わせ情報が含まれる。
なお、図2のバッファセット情報記憶部202に記憶されているバッファID0000、0100、0200および0300は、それぞれコピー元装置110に実装されている制御モジュール#00、#01、#02および#03に備わる個別バッファを示すものとする。
また、図2のバッファセット情報記憶部202に記憶されているバッファID1000、1100、1200および1300は、それぞれコピー先装置120に実装されている制御モジュール#00、#01、#02および#03に備わる個別バッファを示すものとする。
本実施例に係るリモートコピーは、バッファセット単位で行なわれる。このバッファセット単位のコピー対象データには、記録専用バッファ201に記憶されているBITおよびバッファデータと、バッファセット情報記憶部202に記憶されているバッファセット情報と、が含まれる。
本実施例では、このバッファセット単位のコピー対象データを、1つの「世代」として管理する。この世代の具体例は、図8に示される。
バッファ管理テーブル記憶部203は、記録専用バッファ201等の管理に使用するバッファ管理テーブル300を記憶する。バッファ管理テーブル300については後述する。
バッファセット管理テーブル記憶部204は、バッファセットの使用状態の管理に使用するバッファセット管理テーブル400を記憶する。バッファセット管理テーブル400については後述する。
退避用バッファ管理テーブル記憶部205は、退避用バッファ118の管理に使用する退避用バッファ管理テーブル500を記憶する。退避用バッファ管理テーブル500については後述する。
未使用バッファID記憶部206は、コピー先装置120に備わる未使用の個別バッファのバッファIDを記憶する。以下、未使用の個別バッファのバッファIDを「未使用バッファID」という。例えば、コピー元装置110は、コピー先装置120から未使用バッファIDの通知を受けると、通知された未使用バッファIDを未使用バッファID記憶部206に記憶する。
以上の構成において、本実施例に係るリモートコピーでは、コピー元装置110は、Writeデータを記録専用バッファ201に格納する処理やWriteデータをコピー先装置120に転送するなどの処理を、バッファセット単位で一括して行なう。
同様に、本実施例に係るリモートコピーでは、コピー先装置120は、コピー先装置110から転送されたWriteデータをディスク装置127に展開する処理などを、バッファセット単位で一括して行う。その結果、順序性を保証したリモートコピーが実現される。
なお、バッファセットを用いて順序性を保証するリモートコピーは公知の技術であり、例えば、特開2006−260292号公報などに開示されている。
図3は、本実施例に係るバッファ管理テーブル300の構成例を示す図である。
バッファ管理テーブル300は、対象バッファセットIDと、ライトバックポインタ情報と、ステージポインタ情報と、バッファ閾値と、を備える。
対象バッファセットIDは、現在使用しているバッファセットのバッファセットIDを示す情報である。ライトバックポインタ情報は、後述のライトバックの対象となる世代を示す情報である。ステージポインタ情報は、最後に後述のステージングが行なわれた世代を示す情報である。バッファ閾値は、後述のライトバックを実行するか否かを判断する基準として使用する情報である。
図4は、本実施例に係るバッファセット管理テーブル400の構成例を示す図である。
バッファセット管理テーブル400は、バッファセットIDと、使用目的と、対象世代と、格納I/O数と、を備える。
使用目的は、バッファセットIDが示すバッファセット毎にあらかじめ設定される使用目的である。例えば、バッファセットを、ステージングに使用する場合には「ステージング」が設定され、ライトバックに使用する場合には「ライトバック」が設定される。また、Writeデータのコピーデータを単に記憶する場合には「記憶」が設定され、記憶されたコピーデータをコピー先装置120に転送する場合には「転送」が設定される。
対象世代は、使用目的に設定された処理を行なう対象の世代である。格納I/O数は、バッファセットに記憶されているI/Oの数である。対象世代および格納I/O数は、例えば、Writeデータをバッファセットに記憶する毎に、コピー元装置110によって更新される。
なお、図4に示す「−」は、未使用を設定する場合の例を示している。
図5は、本実施例に係る退避用バッファ管理テーブル500の構成例を示す図である。
退避用バッファ管理テーブル500は、退避用バッファ118に記憶可能なコピー対象データの最大世代数と、退避用バッファ118内の記憶領域であって制御モジュール毎に割り当てられた記憶領域の先頭アドレスを定義した退避位置と、を備える。
最大世代数は、退避用バッファ118の初期化時などに決定される。
以下、退避用バッファ118内に制御モジュール毎に割り当てられた記憶領域であって1世代分の記憶領域を、「個別退避用バッファ」という。例えば、図6に記載されているLU#0において、3つに分けられた記憶領域それぞれが個別退避用バッファである。
図6および図7は、本実施例に係る退避用バッファ118の構成例を示す図である。なお、図6および図7では、制御モジュール#00〜#03を、記録専用バッファ201のバッファ201aのみを示す簡略化した模式図で示しているが、図6および図7に示す構成に限定する趣旨ではない。また、制御モジュール#00〜#03をまたぐ点線は、1世代分のバッファセットを示している。
図6は、退避用バッファ118を1つのRAIDグループで構成する場合の構成例を示す図である。
図6に示す退避用バッファ118として用いられるRAIDグループ600は、論理ユニットLU#0〜LU#Fを有する。また、横長に点線で囲まれたLU#0−LU#3と、LU#4−LU#7と、LU#8−LU#Bと、LU#C−LU#Fと、がそれぞれボリュームグループを構成する。
RAIDグループ600は、ボリュームグループ単位で使用される。また、制御モジュール毎に、記録専用バッファに対するボリュームグループが割り当てられている。
例えば、図6に示すRAIDグループ600では、制御モジュール#00の記録専用バッファに、論理ユニットLU#0、#4、#8および#Cが割り当てられている。また、制御モジュール#01の記録専用バッファに、論理ユニットLU#1、#5、#9および#Dが割り当てられている。
同様に、制御モジュール#02の記録専用バッファに、論理ユニットLU#2、#6、#Aおよび#Eが割り当てられている。そして、制御モジュール#03の記録専用バッファに、論理ユニットLU#3、#7、#Bおよび#Fが割り当てられている。
ボリュームグループを構成する論理ユニットの数が実装制御モジュールの数を上回る場合は、1つの制御モジュールに対して複数の論理ユニットを割り当ててもよい。また、各ボリュームグループを構成する論理ユニットは、図8で示すように、バッファデータを記憶する個別バッファ、BITおよびバッファセット情報が含まれるサイズで分割されている。この分割された領域が前述の「個別退避用バッファ」である。
各制御モジュールの個別バッファに記憶されているバッファデータは、例えば、図6に示される矢印が示すように、各制御モジュールに割り当てられたボリュームグループの個別退避用バッファに世代順に記憶される。
図7は、本実施例に係る退避用バッファ118を2つのRAIDグループで構成する場合の構成例を示す図である。
図7に示す退避用バッファ118として用いられるRAIDグループ700は、論理ユニットLU#0〜LU#Fを備えるRAIDグループ701と、論理ユニットLU#10〜LU#1Fを備えるRAIDグループ702と、で構成される。
例えば、論理ユニットLU#0、LU#2、LU#10およびLU#12がボリュームグループを構成する。また、論理ユニットLU#1、LU#3、LU#11およびLU#13がボリュームグループを構成する。
同様に、論理ユニットLU#4、LU#6、LU#14およびLU#16がボリュームグループを構成し、論理ユニットLU#5、LU#7、LU#15およびLU#17がボリュームグループを構成する。また、論理ユニットLU#8、LU#A、LU#18およびLU#1Aがボリュームグループを構成し、論理ユニットLU#9、LUB#B、LU#19およびLU#1Bがボリュームグループを構成する。さらに、論理ユニットLU#C、LU#E、LU#1CおよびLU#1Eがボリュームグループを構成し、論理ユニットLU#D、LU#F、LU#1DおよびLU#1Fがボリュームグループを構成する。
そして、RAIDグループ700は、制御モジュール毎に、記録専用バッファに対してボリュームグループ内の論理ユニットが割り当てられている。
例えば、図7に示すRAIDグループ700では、制御モジュール#00の記録専用バッファに、論理ユニットLU#0、LU#1、LU#4、LU#5、LU#8、LU#9、LU#CおよびLU#Dが割り当てられている。また、制御モジュール#01の記録専用バッファに、論理ユニットLU#2、LU#3、LU#6、LU#7、LU#A、LU#B、LU#EおよびLU#Fが割り当てられている。
同様に、制御モジュール#02の記録専用バッファに、論理ユニットLU#10、LU#11、LU#14、LU#15、LU#18、LU#19、LU#1CおよびLU#1Dが割り当てられている。また、制御モジュール#03の記録専用バッファには、論理ユニットLU#12、LU#13、LU#16、LU#17、LU#1A、LU#1B、LU#1EおよびLU#1Fが割り当てられている。
各ボリュームグループを構成する論理ユニットは、個別バッファと同じサイズで分割されている。そして、各制御モジュールの個別バッファに記憶されているバッファデータは、例えば、図7に示される矢印が示すように、各制御モジュールに割り当てられたボリュームグループの個別退避用バッファ世代順に記憶される。
図7に示したように、制御モジュールに備わる記録専用バッファを2以上のRAIDグループに割り当てると、各RAIDグループの負荷を分散する効果が得られる。なお、図7には、2つのRAIDグループを使用した場合を示したが、2以上のRAIDグループを使用しても同様の効果を得ることができるのは当然である。
上述のように、本実施例に係る退避用バッファ118、例えば図6に示したLU#0〜LU#Fや図7に示したLU#0〜LU#FおよびLU#10〜LU#1Fは、個別バッファ、BITおよびバッファセット情報を含むサイズの個別退避用バッファに分割して使用される。図8にその概要を示す。退避用バッファ118の各個別退避用バッファには、1世代分のコピー対象データ、すなわちバッファセット情報、BITおよびバッファデータが世代順で記憶される。
図9は、本実施例に係る退避用バッファ118とバッファセットとの関係を説明する図である。なお、図9に示すバッファセットは、説明を簡単にするために、例えば、図6や図7に示したバッファセットを簡略化して記載している。また、図9にはバッファセットの数が8ではなく16の場合を示しているが、これは後述する図26および図27との対比を容易にするためであって、バッファセットの構成を図9に示す構成に限定する趣旨ではない。
コピー元装置110は、転送中またはコピー先装置120における展開処理待ちのため使用中となっているバッファセットの数がバッファ閾値を超えると、その超えた分のバッファセットに記憶されるデータを退避用バッファ118に退避する。
また、コピー元装置110は、転送中またはコピー先装置120における展開処理待ちのために使用中となっているバッファセットが解放されると、退避用バッファ118に退避されていたデータを、その解放されたバッファセットに記憶する。
以下、本実施例では、バッファセットに記憶されているデータを退避用バッファ118に退避することを「ライトバック」という。そして、退避用バッファ118に退避されているデータをバッファセットに記憶することを「ステージング」という。
また、ステージング、転送またはコピー先装置120における展開処理待ちのため使用中となっているバッファセットの数を「使用中のバッファセット数」という。なお、この転送中のバッファセットには、ステージング中の状態にあるバッファセットも含まれるものとする。
なお、「使用中のバッファセット数」の代りに、例えば、「バッファセットの使用率」を使用してもよい。この場合、バッファセットの使用率は、「使用中のバッファセット数」/「全バッファセットの数」により求められる。
コピー元装置110は、Write I/O処理にともなう処理の負荷に応じてバッファ閾値を増減して最適化を行なう。Write I/O処理にともなう処理の負荷は、例えば、ホスト150から受け付けて未処理のまま待ち状態となっているWrite I/Oの数などで判断することができる。
なお、Write I/O処理にともなう処理の負荷の代わりに、例えば、ライトバック/ステージング性能、Write I/O命令等によるデータ更新量、バッファセットの使用状況、コピー元装置110−コピー先装置120間の回線速度などのうち少なくとも1つを含む情報を使用してバッファ閾値を最適化してもよい。
図10および図11は、本実施例に係るバッファ退避処理を説明する図である。
なお、図10および図11は、理解を容易にするために、コピー元装置110の構成を簡略化して記載してある。例えば、制御モジュールは、#00と#01のみを記載しているが、コピー元装置110を図10および図11に示す構成に限定する趣旨ではない。また、制御モジュール毎にディスク装置117を記載しているが、説明のし易さのためであって、コピー元装置110を図10および図11に示す構成に限定する趣旨ではない。
図10は、バッファセット1−4が、転送中またはコピー先装置120における展開処理待ちのため使用中となっている状態で、Write I/O命令を受付けた場合のバッファ退避処理を説明する図である。以下、バッファセット1−4に記憶されているバッファセットデータがそれぞれ世代1、世代2、世代3および世代4であるものとする。また、コピー元装置110に備わる全制御モジュールを総じて「制御モジュール」という。
(a)Write I/O命令を受付けると、制御モジュールは、自身のディスク装置117にWriteデータを記憶するとともに、(b)Writeデータのコピーデータをバッファセット5に記憶する。このバッファセット5に記憶されたバッファセットデータは世代5となる。
ここで、例えば、使用中のバッファセット数がバッファ閾値を超えると、(c)制御モジュールは、次にコピー先装置120に転送予定の例えばバッファセット5に記憶されている世代5のバッファセットデータを退避用バッファ118に退避する。その後、制御モジュールは、バッファ閾値の最適化を行なう。
また、バッファセットデータを退避用バッファ118に退避すると、制御モジュールは、新たなWriteデータ等の記憶先をバッファセット5からバッファセット6に切り替える。
(d)新たなWrite I/O命令を受付けると、制御モジュールは、Writeデータをディスク装置に記憶するとともに、Writeデータのコピーデータをバッファセット6に記憶する。このバッファセット6に記憶されたバッファセットデータは世代6となる。
この時、バッファセット6の世代6よりも古い世代、例えば図10では世代5が退避用バッファ118に退避されているので、(e)制御モジュールは、バッファセット6のバッファセットデータを退避用バッファ118に退避する。
使用中の状態にあったバッファセット1が解放されると、(f)制御モジュールは、退避用バッファ118に記憶されている世代5のバッファセットデータを読み出して、バッファセット1に記憶する。なお、本実施例で「解放」とは、バッファセットを未使用の状態に置くことをいう。
バッファセット1のバッファデータの転送およびコピー先装置120における展開処理が完了すると、制御モジュールは、バッファ閾値の最適化を行なう。
図12Aおよび図12Bは、本実施例に係るリモートコピーの概要を示すフローチャートである。以下、図12Aおよび図12Bに基づいて、本実施例に係るリモートコピーの概要を説明する。 コピー元装置110は、起動すると、バッファ初期構成処理を行なう。例えば、コピー元装置110は、あらかじめ設定された構成情報にしたがって、各制御モジュールに備わるメモリ200に、図2に示した構成の領域を確保し、各領域について初期化を行なう。
また、コピー元装置110は、制御モジュール毎に、記録専用バッファに対するボリュームグループを割り当てる。具体的な処理は、図14および図15で説明する。
また、コピー元装置110は、バッファセットを生成し、生成したバッファセットについて初期作成処理を行う。例えば、コピー元装置110は、各制御モジュールの個別バッファを組み合わせてバッファセットを生成する。そして、コピー元装置110は、生成したバッファセットをバッファセット情報としてバッファセット情報記憶部202に記憶する。
以上の処理をコピー先装置120も行なう。
コピー元装置110は、さらに、バッファ管理テーブル300やバッファセット管理テーブル400、退避用バッファ管理テーブル500などについて初期化を行なう。そして、コピー元装置110は、バッファ閾値を初期化する。具体的な処理は、図13で説明する。
以上の処理により、コピー元装置110−コピー先装置120間でリモートコピーを行なう準備が完了する。そして、ホスト150からWrite I/O命令を受け付ける準備が完了すると、リモートコピーが開始する(ステップS1200a、S1200b)。
ステップS1201aにおいて、コピー元装置110は、コピー先装置120に対して、未使用の個別バッファの通知を要求するために、未使用バッファ通知要求コマンドを発行する。
一方、コピー先装置120は、ステップS1201bに処理を移行し、コピー元装置110からの未使用バッファ通知要求コマンドを受けるまで、未使用バッファ通知要求コマンドを監視する(S1201b NO)。
ステップS1201bにおいて、コピー先装置120は、コピー元装置110からの未使用バッファ通知要求コマンドを検出すると(S1201b YES)、処理をステップS1202bに移行する。
ステップS1202bにおいて、コピー先装置120は、既に領域が解放された未使用となっている個別バッファを検索する。既に領域が解放されて未使用となっている個別バッファを検出すると、コピー先装置120は、検出した個別バッファのバッファIDを未使用バッファIDとしてコピー元装置110に通知する。
一方、コピー元装置110は、コピー先装置120から未使用バッファIDの通知を受けると、通知された未使用バッファIDを、未使用バッファID記憶部206に記憶する。
ステップS1202aにおいて、コピー元装置110は、Writeデータを格納する対象のバッファセットを取得する。このWriteデータを格納する対象のバッファセットを「格納対象バッファセット」という。
例えば、コピー元装置110は、バッファセット管理テーブル400を参照し、未使用に設定されているバッファセットIDを取得する。そして、コピー元装置110は、その取得したバッファセットIDを、バッファ管理テーブル300の対象バッファセットIDに設定する。
コピー元装置110は、バッファ管理テーブル300の対象バッファセットIDに設定したバッファセットIDが示すバッファセットを、「格納対象バッファセット」として以下の処理を行なう。
なお、コピー元装置110は、ステップS1202aでは、マッチング処理を行なわない。コピー元装置110は、マッチング処理を、後述するステップS1211a、すなわち、バッファセットデータの送信処理前に行なう。
ステップS1203aにおいて、コピー元装置110は、バッファ管理テーブル300のライトバックポインタ情報に設定されている世代を1だけインクリメントした値に更新する。
ステップS1204aにおいて、コピー元装置110は、格納対象バッファセットの個別バッファへのWriteデータの格納処理を行なう。
例えば、コピー元装置110が、ホスト150からWrite I/O命令を受付けたとする。すると、コピー元装置110は、そのWrite I/O命令とともに受信したWriteデータを、バッファ管理テーブル300の現在使用している対象バッファセットIDが示す格納対象バッファセット、すなわち、各制御モジュールの個別バッファに分散して記憶する。
ステップS1205aにおいて、コピー元装置110は、格納対象バッファセットにデータを格納する格納領域が残っているか否かを判別する。格納領域が残っていないと判断した場合(ステップS1205a NO)、コピー元装置110は、処理をステップS1207aに移行する。
また、ステップS1205aにおいて、格納領域が残っていると判断した場合(ステップS1205a YES)、コピー元装置110は、処理をステップS1206aに移行する。この場合、コピー元装置110は、格納対象バッファセット取得から一定時間経過したか否かを判別する(ステップS1206a)。
そして、一定時間経過していないと判断した場合(ステップS1206a NO)、コピー元装置110は、処理をステップS1204aに移行する。また、一定時間経過したと判断した場合(ステップS1206a YES)、コピー元装置110は、処理をステップS1207aに移行する。
ステップS1207aにおいて、コピー元装置110は、ステップS1202aと同様の処理により、格納対象バッファセットを新たに取得する。そして、ステップS1208aにおいて、コピー元装置110は、格納対象バッファセットを、ステップS1207aで取得した新たな格納対象バッファセットに切り替える。
なお、切り替え前の格納対象バッファセットを、ステップS1210aの処理では「ライトバック対象バッファセット」といい、ステップS1212a以降の処理では「転送対象バッファセット」という。
ステップS1209aにおいて、コピー元装置110は、ステップS1203と同様の処理により、ライトバックポインタ情報を更新する。

ステップS1210aにおいて、コピー元装置110は、ライトバック処理を行なう。その後、コピー元装置110は、バッファ閾値の最適化を行なう。そして、コピー元装置110は、処理をステップS1211aに移行する。
ステップS1211aにおいて、コピー元装置110は、マッチング処理を行なう。例えば、コピー元装置110は、未使用バッファID記憶部206から未使用バッファIDを取得する。そして、コピー元装置110は、取得した未使用バッファIDを転送対象バッファセットのコピー先IDに割り当てることにより、転送対象バッファセットのコピー元IDとコピー先IDとの関連付けを行なう。
ステップS1212aにおいて、コピー元装置110は、転送対象バッファセットに記憶されたバッファセットデータをコピー先装置120に送信する。このバッファセットデータには、各制御モジュールの、バッファ201aに記憶されているバッファデータと、BIT記憶部201bに記憶されているBITと、バッファセット情報記憶部202に記憶されているバッファセット情報と、が含まれる。
一方、コピー先装置120は、コピー元装置110からバッファセットデータを受信すると、処理をステップS1203bに移行する。
ステップS1203bにおいて、コピー先装置120は、バッファセットデータの受信処理を行なう。例えば、コピー先装置120は、受信したバッファセットデータのうち、バッファデータをバッファ201aに、BITをBIT記憶部201bに、バッファセット情報をバッファセット情報記憶部202に、それぞれ記憶する。
ステップS1204bにおいて、コピー先装置120は、全てのバッファセットデータを受信したか否かを判別する。そして、まだ、全てのバッファセットデータを受信していないと判断すると(S1204b NO)、コピー先装置120は、処理をステップS1203bに移行し、ステップS1203b〜S1204bの処理を繰返す。
ステップS1204bにおいて、全てのバッファセットデータを受信したと判断すると(S1204b YES)、コピー先装置120は、処理をステップS1205bに移行する。
ステップS1205bにおいて、コピー先装置120は、ステップS1203bで取得したバッファセットデータが、自身に備わる記憶装置のディスク装置127に展開可能か否かを判断する。展開可能と判断すると(S1205b YES)、コピー先装置120は、処理をステップS1206bに移行する。
ステップS1206bにおいて、コピー先装置120は、ステップS1203bで取得したバッファセットデータを、自身に備わるディスク装置127に展開する。この展開が終了すると、コピー先装置120は、処理をステップS1207bに移行し、バッファセットデータの展開が完了した旨をコピー元装置110に通知する。以下、この通知を「バッファセットデータ展開完了通知」という。
バッファセットデータのディスク装置127への展開が終了すると、ステップS1208bにおいて、コピー先装置120は、バッファセットの解放処理を行なう。例えば、コピー先装置120は、バッファセットデータのディスク装置127への展開が完了したバッファセットを未使用に設定する。
ステップS1209bにおいて、コピー先装置120は、解放した領域に新たにバッファセット情報記憶部202および記録専用バッファ201の領域を確保して、例えば、図2に示した構成を構築する。
以上の処理が終了すると、コピー先装置120は、処理をステップS1210bに移行し、ステップS1208b〜S1209bの処理によって新たに使用可能となったバッファの未使用バッファIDをコピー元装置110に通知する(ステップS1210b)。コピー元装置110は、未使用バッファIDを通知されると、通知された未使用バッファIDを未使用バッファID記憶部206に記憶する。
一方、ステップS1213aにおいて、コピー元装置110は、コピー先装置120からバッファセットデータ展開完了通知を受信したか否かを判断する。そして、バッファセットデータ展開完了通知を受信しない場合(S1213a NO)、ステップS1213aの処理を繰り返す。また、コピー先装置120からバッファセットデータ完了通知を受信すると(S1213a YES)、コピー元装置110は、処理をステップS1214aに移行する。
ステップS1214aにおいて、コピー元装置110は、ステップS1212aによってバッファセットデータ送信処理が行なわれた転送対象バッファセットについて、ステップS1208bと同様に、バッファセットの解放処理を行なう。すなわち、コピー元装置110は、バッファセット管理テーブル400を参照し、データの転送が完了した転送対象バッファセットを未使用に設定する。
ステップS1215aにおいて、コピー元装置110は、バッファ管理テーブル300を参照し、ステージポインタ情報に設定されている世代を1だけインクリメントした値に更新する。そして、ステップS1216aにおいて、コピー元装置110は、バッファ閾値を最適化する処理を実行する。そして、ステップS1217aにおいて、コピー元装置110は、未使用となったバッファセットの領域について初期化を行なうなどしてバッファの再構築処理を行なう。
ステップS1218aにおいて、コピー元装置110は、ステージングが必要か否かを判別する。例えば、コピー元装置110は、退避用バッファ118に退避した世代があるか否かによりステージングが必要か否かを判別する。
コピー元装置110は、以下に示す(a)〜(d)の処理により、退避用バッファ118に退避した世代の有無を知ることができる。
(a)コピー元装置110は、バッファ管理テーブル300を参照し、ライトバックポインタ情報とステージポインタ情報を取得する。
(b)コピー元装置110は、バッファセット管理テーブル400を参照し、ステージポインタ情報に1を加えた世代から昇順に世代をたどり、バッファセット管理テーブル400に欠落している世代を検索する。
例えば、図3に示したバッファ管理テーブル300には、ステージポインタ情報として世代2が設定されている。そこで、コピー元装置110は、図4に示したバッファセット管理テーブル400を参照し、世代2に1を加えた世代3から世代4、5、・・・と昇順に世代をたどる。すると、コピー元装置110は、バッファセット管理テーブル400に欠落している世代7を検出する。
(c)コピー元装置110は、バッファセット管理テーブル400を参照し、ライトバックポインタ情報の世代から降順に世代をたどり、バッファセット管理テーブル400に欠落している世代を検索する。
例えば、図3に示したバッファ管理テーブル300には、ライトバックポインタ情報として世代15が設定されている。そこで、コピー元装置110は、図4に示したバッファセット管理テーブル400を参照し、世代15から世代14、13、・・・と降順に世代をたどる。すると、コピー元装置110は、バッファセット管理テーブル400に欠落している世代12を検出する。
(d)以上の処理によって検出した世代7から世代12が、退避用バッファ118に退避されている世代であることがわかる。
ステップS1218aにおいて、退避用バッファ118に退避した世代が存在すると判断した場合(ステップS1218a YES)、コピー元装置110は、処理をステップS1219aに移行する。また、退避用バッファ118に退避した世代が存在しないと判断した場合(ステップS1218a NO)、コピー元装置110は、処理をステップS1221aに移行する。
ステップS1219aにおいて、コピー元装置110は、ステージングに使用するバッファセット、すなわちステージング用バッファセットを取得する。
例えば、コピー元装置110は、バッファセット管理テーブル400を参照し、未使用に設定されているバッファセットIDを「ステージング対象バッファセットID」として取得する。
また、コピー元装置110は、バッファセット管理テーブル400を参照し、ステージング対象バッファセットIDと一致するバッファセットIDの対象世代に、後述するステージング対象世代を設定する。
また、コピー元装置110は、バッファセット管理テーブル400を参照し、ステージング対象バッファセットIDと一致するバッファセットIDの使用目的を「ステージング」に設定する。
ステップS1220aにおいて、コピー元装置110は、ステージングを実行する。そして、ステージングが完了すると、コピー元装置110は、処理をステップS1211aに移行する。
以上の処理が終了すると、コピー元装置110は、リモートコピーを終了、または、ステップS1204aに処理を移行してリモートコピーを継続する。また、ホスト150から新たにWrite I/O命令を受付けると、コピー元装置110は、S1204a等に処理を移行して、リモートコピーを継続する。
また、コピー先装置120は、上述の処理が終了すると、リモートコピーを終了する、または、ステップS1203bに処理を移行してリモートコピーを継続する。
本実施例に係るリモートコピーにおいて、以下の処理についてより具体的に説明する。
(1)バッファ閾値を初期化する処理。
(2)退避用バッファ118の領域を作成する処理。
(3)制御モジュールへの退避用バッファ118の割り当て処理。
(4)バッファセットを切り替える処理。
(5)ライトバックポインタ情報/ステージポインタ情報の更新処理。
(6)ライトバック処理。
(7)ステージング処理。
(8)バッファ閾値を最適化する処理。
以下、上記(1)〜(8)について順に説明する。
(1)バッファ閾値を初期化する処理
図13は、本実施例に係るバッファ閾値を初期化する処理のフローチャートである。この図13に示す処理は、例えば、コピー元装置110の起動時の他に、保守作業時でも実行できる。
ステップS1301において、コピー元装置110は、メモリ200の所定のアドレスから、制御モジュール数(CTRL_CNT)、バッファサイズ(BUFF_SIZE)[MByte]、バッファセットサイズ(1GENE_SIZE)[MByte]、回線帯域(BANDWIDTH)[MByte/S]、転送効率(TRANS_RATIO)、制御効率(SYSTEM_RATIO)、データ圧縮率(COMPRESS)[%]および補正送信バッファ数(BUFF_ALPHA)を読み出す。
制御モジュール数(CTRL_CNT)は、コピー元装置110に備わる制御モジュールの数である。バッファサイズ(BUFF_SIZE)は、各制御モジュールに備わるバッファ201aを合わせたトータルサイズである。バッファセットサイズ(1GENE_SIZE)は、1世代分のバッファセットのサイズである。
回線帯域(BANDWIDTH)は、コピー元装置110−コピー先装置120間を接続するネットワークまたは専用回線130で使用可能な帯域幅である。
転送効率(TRANS_RATIO)は、コピー元装置110−コピー先装置120間で行なわれる転送処理についての転送効率である。例えば、理論的な転送量が100Mbps、実測値の平均転送量が75Mbpsの場合、転送効率は0.75となる。
制御効率(SYSTEM_RATIO)は、原則として1とする。そして、例えば、ホスト150−コピー元装置110間のデータ転送効率、制御モジュール間の転送効率、制御モジュール−退避用バッファ118間のデータ転送効率等に応じてバッファ閾値を調整するために使用する。
データ圧縮率(COMPRESS)は、コピー先装置120に送る際に行なう送信データの圧縮率である。また、補正値(BUFF_ALPHA)は、必要に応じてバッファ閾値を調整するための値である。
以上のデータを読み出すと、コピー元装置110は、次式によりバッファ閾値(THRESHOLD)を算出する。そして、コピー元装置110は、処理をステップS1302に移行する。
THRESHOLD =
((BANDWIDTH×TRANS_RATIO×SYSTEM_RATIO)÷(1GENE_SIZE×(COMPRESS÷100)×CTRL_CNT)+BUFF_ALPHA)×2 ・・・・・(1)
ステップS1302において、コピー元装置110は、バッファ閾値が1未満か否かを判別する。そして、バッファ閾値が1未満の場合(ステップS1302 YES)、コピー元装置110は、処理をステップS1303に移行する。この場合、コピー元装置110は、バッファ閾値に1を設定し(ステップS1303)、処理をステップS1304に移行する。
また、ステップS1302において、バッファ閾値が1未満でない場合(ステップS1302 NO)、コピー元装置110は、処理をステップS1304に移行する。
ステップS1304において、コピー元装置110は、バッファ閾値が最大バッファセット数を超えているか否かを判別する。そして、バッファ閾値が最大バッファセット数を超えている場合(ステップS1304 YES)、コピー元装置110は、処理をステップS1305に移行する。この場合、コピー元装置110は、バッファ閾値に最大バッファセット数を設定し(ステップS1305)、処理をステップS1306に移行する。
また、ステップS1304において、バッファ閾値が最大バッファセット数を超えていない場合(ステップS1304 NO)、処理をステップS1306に移行する。
以上の処理が終了すると、コピー元装置110は、バッファ閾値を初期化する処理を終了する。
(2)退避用バッファの領域を作成する処理
図14は、本実施例に係る退避用バッファ118の領域を生成する処理を示すフローチャートである。図14に示す処理は、例えば、コピー元装置110の保守作業時に実行できる。
ステップS1401において、コピー元装置110は、ユーザからの入力に応じて退避用バッファ118を設定すべき領域を記録専用バッファ201のバッファ201aから選択する。そして、コピー元装置110は、処理をステップS1402に移行し、ユーザからの入力に応じてRAIDを構成するためのディスク装置を選択する。
ステップS1403において、コピー元装置110は、ステップS1402で選択したディスク装置はRAIDを構成する条件を満たすか否かをチェックする。条件を満たさない場合(S1403 NO)、コピー元装置110は、例えば、他のディスク装置を指定すべき旨を表示装置等に表示して、処理をステップS1402に移行する。
ステップS1403において、条件を満たす場合(S1403 YES)、コピー元装置110は、処理をステップS1404に移行する。
ステップS1404において、コピー元装置110は、ステップS1402で選択されたディスク装置で構成されるRAIDグループを生成し、コピー元装置110の装置構成などを保持する構成情報にその情報を反映する。
ステップS1405において、コピー元装置110は、ステップS1404で作成したRAIDグループ内に複数のボリュームを作成する。コピー元装置110は、処理をステップS1406に移行し、ステップS1405で作成した論理ユニットの構成を構成情報に反映する。
ステップS1407において、コピー元装置110は、図15で示す処理によって、各制御モジュールで使用するボリューム(以下、必要に応じて「担当ボリューム」という)を決定する。各制御モジュールは、この決定したボリュームを退避用バッファ118の領域として使用する。
ステップS1408において、コピー元装置110は、バッファ閾値を初期化する。すると、コピー元装置110は、ステップS1409に移行して退避用バッファ118の領域を生成する処理を終了する。
(3)制御モジュールへの退避用バッファ118の割り当て処理
図15は、本実施例に係る退避用バッファ118の制御モジュールへの割り当て(ステップS1407)の具体的な処理を示すフローチャートである。図15に示す処理は、コピー元装置110の起動時の他に、保守作業時にも実行できる。
ステップS1501において、コピー元装置110は、構成情報を参照し、退避用バッファ118として割り当てるRAIDグループの数(A)を取得する。
さらに、コピー元装置110は、処理をステップS1502に移行し、構成情報からコピー元装置に実装されている制御モジュールの数(B)を取得する。
ステップS1503において、コピー元装置110は、RAIDグループあたりの制御モジュールの数(C)=(B)/(A)を算出する。そして、処理をステップS1504に移行し、各RAIDグループに対して(C)個の制御モジュールを割り当てる。
ステップS1505において、コピー元装置110は、各RAIDグループのボリュームの数を(C)で除算し、担当ボリュームの数(D)を算出する。そして、コピー元装置110は、処理をステップS1506に移行し、ステップS1505の算出結果から、RAIDグループ毎に割り当てた制御モジュールに対して担当ボリュームを(D)個を割り当てる。
ステップS1507において、コピー元装置110は、以上の処理によって決定した構成を構成情報に反映するとともに、各制御モジュールが備える設定情報にも反映し、処理を終了する(ステップS1508)。
(4)バッファセットを切替える処理
図16は、本実施例に係るバッファセットの切替え処理を示すフローチャートである。図16の処理は、図12Aに示したステップS1208aの具体的な処理を示している。
例えば、Write I/O延長で行なわれる格納処理でバッファセット内の個別バッファに空きがなくなる、または、バッファセットの切替え処理が行なわれてから一定時間経過すると、コピー元装置110は、バッファセットの切替え処理を開始する(ステップS1600)。
ステップS1601において、コピー元装置110は、空きバッファセット、すなわち、バッファセット管理テーブル400に未使用と設定されているバッファセットがあるか否かを判別する。
ステップS1601において、空きバッファセットがない場合(ステップS1601 NO)、コピー元装置110は、処理をステップS1602に移行し、バッファHalt処理待ちの状態となる(ステップS1602)。その後、バッファHalt処理が実行されてバッファ枯渇状態が解消すると、コピー元装置110は、Write I/O命令の処理を再開する。
この場合、コピー元装置110は、バッファセットに記憶されているWriteデータ等の情報を専用のビットマップに書き戻し、バッファHalt処理の実行後にそのビットマップにしたがって順序性を保証しないリモートコピー転送を行なう。
ステップS1601において、空きバッファセットがある場合(ステップS1601 YES)、コピー元装置110は、処理をステップS1603に移行する。すると、コピー元装置110は、空きバッファセットを1つ選択し、選択したバッファセットを使用中、すなわち、必要に応じてバッファセット管理テーブル400の使用目的に、ステージング、ライトバックまたは記憶を設定する(ステップS1603)。
ステップS1604において、コピー元装置110は、使用するバッファセットを、ステップS1603で選択したバッファセットに切り替える。すると、コピー元装置110は、Write I/O命令を管理する待ち行列等を参照し、待ち状態のWrite I/Oについて処理を再開する。
以上の処理が終了すると、コピー元装置110は、バッファセットを切り替える処理を終了する。
(5)ライトバックポインタ情報/ステージポインタ情報の更新処理
本実施例に係るバッファ退避処理では、ライトバックポインタ情報とステージポインタ情報の2つの情報により、退避用バッファ118に記憶するデータの書き込み位置(世代)と退避用バッファ118から読み出すデータの読み出し位置(世代)とを管理する。
図17は、本実施例に係るバッファ退避処理におけるライトバックポインタ情報・ステージポインタ情報を説明する図である。なお、図17に示す1701は、退避用バッファ118を簡略化して示したものである。同様に、図17に示す1702および1703は、バッファセットを簡略化して示したものである。
例えば、制御モジュールにおいてx回目のバッファセット切り替えが行なわれた場合を考える。この場合、ステージポインタ情報は、最後にステージングが行なわれた世代を情報として保持する。ライトバックポインタ情報は、退避用バッファ1701の世代xを情報として保持する。
また、制御モジュールにおいてx+1回目のバッファセット切り替え時に世代xのバッファセットデータがすぐにコピー先装置120に転送された場合を考える。この場合、世代xに記憶されているバッファセットデータがステージングされて転送処理が完了すると、ステージポインタ情報は、世代xから世代x+1に更新される。ライトバックポインタ情報は、退避用バッファ1701の世代x+1を情報として保持する。
また、制御モジュールにおいてx+2回目のバッファセット切り替え時に世代x+1が退避用バッファ1701にライトバックされた場合を考える。この場合、ステージポインタ情報が保持する退避用バッファ1701の世代が世代xであれば、次のステージング対象は世代x+1となる。ライトバックポインタ情報は、ボリュームグループの世代x+2を保持する。
以上のように、ライトバックポインタ情報は、バッファセットが生成される毎にそのバッファセットの次の世代を情報として保持する。また、ステージポインタ情報は、切り替えられた旧世代のバッファセットの処理が完了する毎に、例えば、コピー元装置110でバッファセットデータの転送が完了しかつコピー先装置120でデータの展開が完了する毎に、ステージポインタ情報が更新される。
なお、退避用バッファ1701として割当てたボリュームグループが複数ある場合、ボリュームグループは、ボリュームグループに割り当てられた番号の小さい順に使用される。そして、ボリュームグループを最後まで使用した場合、ボリュームグループは、最初にもどりサイクリックにボリュームグループを使用する。
以下、図18および図19にライトバックポインタ情報およびステージポインタ情報の具体的な更新処理を説明する。
図18は、本実施例に係るライトバックポインタ情報の更新処理を示すフローチャートである。
ステップS1800aにおいて、コピー元装置110に備わる制御モジュールを代表するマスタ制御モジュールは、バッファセットの切替え処理が行なわれると、処理をステップS1801aに移行する。
ステップS1801aにおいて、マスタ制御モジュールは、現在保持しているライトバックポインタ情報を1つ進める。例えば、マスタ制御モジュールは、バッファ管理テーブル300のライトバックポインタ情報に保持されている世代を1だけインクリメントする。
ステップS1802aにおいて、マスタ制御モジュールは、ステップS1801aで求めたライトバックポインタ情報に、自身が保持するバッファ管理テーブル300を更新する。さらに、マスタ制御モジュールは、コピー元装置110に備わる他の制御モジュールに対して、ステップS1802aと同様の処理を依頼する。
一方、ステップS1801bにおいて、各制御モジュールは、ステップS1801aで求めたライトバックポインタ情報に、各自が保持するバッファ管理テーブル300を更新する。そして、各制御モジュールは、バッファ管理テーブル300の更新が完了すると、その旨をマスタ制御モジュールに通知する。
ステップS1803aにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には(S1803a NO)、ステップS1803aの処理を繰り返す。
ステップS1803aにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると(S1803a YES)、マスタ制御モジュールは、処理をステップS1804aに移行し、ライトバックポインタ情報の更新処理を終了する。
図19は、本実施例に係るステージポインタ情報の更新処理を示すフローチャートである。
ステップS1900aにおいて、コピー元装置110のマスタ制御モジュールは、バッファセットの解放処理を開始すると、処理をステップS1901aに移行する。
ステップS1901aにおいて、マスタ制御モジュールは、解放対象のバッファセットがあるか否かを判別する。解放対象となるバッファセットがない場合(S1901a NO)、マスタ制御モジュールは、ステップS1904aに移行し、処理を終了する。
なお、本実施例では、コピー先装置120への転送が完了し、かつ、コピー先装置120から転送データのディスク装置への展開が完了した旨の通知を受けたバッファセットを領域解放の対象と判断する。
ステップS1901aにおいて、解放対象となるバッファセットがある場合(S1901a YES)、マスタ制御モジュールは、処理をステップS1902aに移行する。
ステップS1902aにおいて、マスタ制御モジュールは、解放対象となるバッファセットの個別バッファ、BITおよびバッファセット情報を解放するとともに、ステージポインタ情報を更新する。例えば、マスタ制御モジュールは、バッファ管理テーブルのステージポインタ情報に保持されている世代を次の世代に更新する。
また、マスタ制御モジュールは、コピー元装置110に備わる他の制御モジュールに対して、ステップS1902aと同様の処理を依頼する。
ステップS1901bにおいて、各制御モジュールは、マスタ制御モジュールから依頼を受けると、解放対象のバッファセットの個別バッファ、BITおよびバッファセット情報を解放するとともに、ステージポインタ情報を更新する。処理が完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
ステップS1903aにおいて、マスタ制御モジュールは、依頼した制御モジュールからの応答を確認し、全ての制御モジュールから応答を受信したか否かを判別する。そして、応答を受信していない制御モジュールがある場合(S1903a NO)、ステップS1903の処理を繰返す。
また、ステップS1903aにおいて、全ての制御モジュールから応答を受信したと判断した場合(S1903a YES)、マスタ制御モジュールは、ステップS1904aに移行してステージポインタ情報の更新処理を終了する。
(6)記録専用バッファ201から退避用バッファ118へのライトバック
図20は、本実施例に係るライトバックを示すフローチャートである。
ステップS2000aにおいて、例えば、Writeデータのバッファセットへの記憶処理が完了すると、コピー元装置110におけるマスタ制御モジュールは、処理をステップS2001aに移行する。
ステップS2001aにおいて、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数を取得する。そして、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数とバッファ閾値とを比較し、使用中のバッファセット数がバッファ閾値以上ではない場合(S2001a NO)、処理をステップS2006aに移行する。また、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数がバッファ閾値以上であった場合(S2001a YES)、処理をステップS2002aに移行する。
ステップS2002aにおいて、マスタ制御モジュールは、以下のようにライトバック処理を行なう。なお、ライトバックをするバッファセットを「ライトバック対象世代」という。
まず、マスタ制御モジュールは、退避用バッファ管理テーブル500から、ライトバック対象世代を記憶すべき個別退避用バッファのアドレスを算出する。そして、マスタ制御モジュールは、算出したアドレスに、図12AのステップS1208aで説明したライトバック対象バッファセットのうちマスタ制御モジュールに備わる個別バッファに記憶されているバッファデータ、そのBITおよびバッファセット情報を記憶する。
なお、個別退避用バッファの先頭アドレスは、制御モジュールに割り当てられた退避用バッファが連続したアドレス空間である場合、退避用バッファ管理テーブル500に設定されている「退避データの記憶先頭アドレス」に、「(ライトバック対象世代−1)×個別退避用バッファサイズ」を加えることにより求めることができる。
ライトバックが完了すると、マスタ制御モジュールは、コピー元装置110に備わる他の制御モジュールに対して、ステップS2002aと同様の処理を依頼する。
ステップS2001bにおいて、各制御モジュールは、マスタ制御モジュールから依頼のあったバッファセットのうち各制御モジュールに備わる個別バッファに記憶されているバッファデータ、そのBITおよびバッファセット情報を、自身のBIT記憶部201b等から取得する。そして、各制御モジュールは、取得したBITおよびバッファセット情報を、各制御モジュールに割当てられた個別退避用バッファに退避する。
なお、各制御モジュールに割り当てられた個別退避用バッファも、制御モジュールに割り当てられた退避用バッファが連続したアドレス空間とした場合、退避用バッファ管理テーブル500に設定されている「退避データの記憶先頭アドレス」に、「(ライトバック対象世代−1)×個別退避用バッファサイズ」を加えることにより求めることができる。
ステップS2002bにおいて、各制御モジュールは、マスタ制御モジュールから依頼のあったバッファセットのうち各制御モジュールに備わる個別バッファに、Writeデータ等のバッファデータが記憶されているか否かをチェックする。
そして、Writeデータ等のバッファデータが個別バッファにない場合(S2002b NO)、各制御モジュールは、ステップS2003bをスキップする。また、Writeデータ等のバッファデータが個別バッファにある場合(S2002b YES)、各制御モジュールは、処理をステップS2003bに移行する。
ステップS2003bにおいて、各制御モジュールは、個別バッファに記憶されているWriteデータ等のバッファデータを、各制御モジュールに割当てられた退避用バッファ118の個別退避用バッファに退避する。そして、マスタ制御モジュールに依頼された処理の完了を通知する。
一方、ステップS2003aにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には(S2003a NO)、ステップS2003aの処理を繰返す。
全ての制御モジュールから応答を受信した場合(S2003a YES)、マスタ制御モジュールは、ライトバック対象バッファセットのバッファセット情報等を解放する(ステップS2004a)。また、制御モジュールは、バッファセット管理テーブル400を参照しライトバック対象バッファセットのバッファセットIDと一致するバッファセットIDを未使用に設定する。
ステップS2005aにおいて、マスタ制御モジュールは、バッファ閾値を最適化する処理を実行する。そして、マスタ制御モジュールは、処理をステップS2006aに移行してバッファ退避処理を終了する。
図21および図22は、本実施例に係るライトバックの具体例を示す図である。なお、図21および図22に示す2101は、退避用バッファ118を簡略化して示したものである。同様に、図21および図22に示す2102〜2104は、バッファセットを簡略化して示したものである。
図21および図22は、コピー元装置110が制御モジュール#00〜#03を備え、各制御モジュールに8つの個別バッファを備えるコピー元装置110において、バッファ閾値が4の場合のライトバックを説明する図である。
(a)バッファセット1〜4が、転送中、転送完了待ち、解放待ちのいずれかの状態、かつ、(b)バッファセット5がライトバック中の場合を考える。この場合、(c)Writeデータを記憶するのはバッファセット6となる。
図22に示すように、(d)バッファセット1が使用していた領域の解放時に、マスタ制御モジュールは、ステージポインタ情報を更新する。
バッファセット5のライトバックが処理中の場合、(e)記録専用バッファ201等上にデータがあるので、バッファセット5のライトバックを中断し、バッファセット5のバッファセットデータをコピー先装置120に転送する処理を開始する。
また、バッファセット5のライトバックが完了している場合、退避用バッファ118からからバッファセット5のバッファセットデータを読み出してバッファセット1に記憶するステージングを行なう。
(7)退避用バッファ118から記録専用バッファ201へのステージング
図23Aおよび図23Bは、本実施例に係るステージングを示すフローチャートである。図23Aおよび図23Bに示す処理は、図12Bに示したステップS1218a〜S1220aの処理を具体的に示している。
ステップS2300aにおいて、旧世代の解放処理が完了すると、コピー元装置110におけるマスタ制御モジュールは、処理をステップS2301aに移行する。
ステップS2301aにおいて、マスタ制御モジュールは、ステージング対象となる世代を決定する。例えば、マスタ制御モジュールは、ステージポインタ情報を参照し、ステージポインタ情報に記憶されている世代を1だけインクリメントし、インクリメントした世代を新たにステージング対象の世代に決定する。このステージング対象の世代を「ステージング対象世代」という。また、図23Aおよび図23Bの処理では、必要に応じて、図12BのステップS1213aの処理で取得しステージングに使用するバッファセットを「ステージング先」と略す。
ステップS2302aにおいて、マスタ制御モジュールは、ステージング対象世代のステージング先の領域は解放処理待ちか否かをチェックする。ステージング先の領域が解放待ちの場合(S2302a YES)、マスタ制御モジュールは、処理をステップS2303aに移行する。
ステップS2303aにおいて、マスタ制御モジュールは、ステージング対象世代に1を加算した世代を新たなステージング対象世代に設定する。そして、マスタ制御モジュールは、処理をステップS2302aに移行する。
一方、ステップS2302aにおいて、ステージング先の領域が解放待ちでない場合(S2302a NO)、マスタ制御モジュールは、処理をステップS2304aに移行する。
ステップS2304aにおいて、マスタ制御モジュールは、ステージング先が転送中か否かをチェックする。ステージング先が転送中の場合(S2304a YES)、マスタ制御モジュールは、処理をステップS2303aに移行する。
一方、ステップS2304aにおいて、ステージング先が転送中でない場合(S2304a NO)、マスタ制御モジュールは、処理をステップS2305aに移行する。
ステップS2305aにおいて、マスタ制御モジュールは、ステージング対象世代がステージング中か否かをチェックする。ステージング対象世代がステージング中の場合(S2305a YES)、マスタ制御モジュールは、処理をステップS2303aに移行する。
一方、ステップS2305aにおいて、ステージング対象世代がステージング中でない場合(S2305a NO)、マスタ制御モジュールは、処理をステップS2306aに移行する。
ステップS2306aにおいて、マスタ制御モジュールは、ステージング対象世代がライトバック中か否かをチェックする。ステージング対象世代がライトバック中の場合(S2306a YES)、マスタ制御モジュールは、処理をステップS2307aに移行する。
ステップS2307aにおいて、マスタ制御モジュールは、自身のライトバックを中断するとともに、コピー元装置110に備わる他の制御モジュールに対して、ライトバックの中断を依頼する。
ステップS2301bにおいて、各制御モジュールは、マスタ制御モジュールからの依頼を受けると、処理中のライトバックを中断する。そして、マスタ制御モジュールに対して、ライトバックを中断した旨を通知する。
ステップS2308aにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信したか否かをチェックし、応答を受信していない制御モジュールがある場合には(S2308a NO)、ステップS2308aの処理を繰り返す。
ステップS2308aにおいて、依頼した全ての制御モジュールから応答を受信したと判断すると(S2308a YES)、マスタ制御モジュールは、処理をステップS2309aに移行し、ステージングを終了する。
一方、ステップS2306aにおいて、ステージング対象世代がライトバック中でないと判断した場合(S2306a NO)、マスタ制御モジュールは、処理をステップS2310aに移行する。
ステップS2310aにおいて、マスタ制御モジュールは、ステージング先が、Writeデータ等の記憶処理中か否かをチェックする。ステージング先が記憶処理中と判断した場合(S2310a YES)、マスタ制御モジュールは、処理をステップS2311aに移行し、ステージングを終了する。
ステップS2310aにおいて、ステージング先がWriteデータ等の記憶処理中でないと判断した場合(S2310a NO)、マスタ制御モジュールは、処理をステップS2312aに移行する。
ステップS2312aにおいて、マスタ制御モジュールは、図12BのステップS1213aの処理で取得したステージング先に既にステージング対象世代が記憶されているか否かをチェックする。
ステージング先にステージング対象世代が記憶されている場合(S2312a YES)、マスタ制御モジュールは、ステップS2316aに移行してステージングを終了する。また、ステージング先にステージング対象世代が記憶されていない場合(S2312a NO)、マスタ制御モジュールは、処理をステップS2313aに移行する。
ステップS2313aにおいて、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数を取得する。そして、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数とバッファ閾値とを比較し、使用中のバッファセット数がバッファ閾値以上であった場合(S2313a YES)、処理をステップS2317aに移行してステージングを終了する。また、マスタ制御モジュールは、ステージング・転送で使用中のバッファセット数がバッファ閾値以上でなかった場合(S2313a NO)、処理をステップS2314aに移行する。
ステップS2314aにおいて、マスタ制御モジュールは、以下のようにステージング対象の世代に対してステージングを行なう。
マスタ制御モジュールは、退避用バッファ管理テーブル500から、ステージング対象世代が記憶されている個別退避用バッファのアドレスを算出する。そして、マスタ制御モジュールは、算出したアドレスからバッファデータ、BITおよびバッファセット情報を取得する。
そして、マスタ制御モジュールは、取得したバッファデータ、BITおよびバッファセット情報を、ステージング対象バッファセットIDが示すバッファセットのバッファ201a、BIT記憶部201bおよびバッファセット情報記憶部202に記憶する。同様の処理が、コピー元装置110内の制御モジュール毎に行なわれる。
なお、個別退避用バッファのアドレスは、制御モジュールに割り当てられた退避用バッファが連続したアドレス空間とした場合、退避用バッファ管理テーブル500に設定されている「退避データの記憶先頭アドレス」に、「(ステージング対象世代−1)×個別退避用バッファサイズ」を加えることにより求めることができる。
ステップS2315aにおいて、マスタ制御モジュールは、各制御モジュールに対して、ステップS2314aと同様に、退避用バッファ118からステージング対象世代を取得してステージングを行うように依頼する。
ステップS2302bにおいて、各制御モジュールは、以下のようにバッファセット情報およびBITに対してステージングを行なう。
依頼を受けた各制御モジュールは、自身に割り当てられた退避用バッファ118の個別退避用バッファから、マスタ制御モジュールから依頼のあったステージング対象世代のBITおよびバッファセット情報を取得する。
そして、各制御モジュールは、退避用バッファ118の個別退避用バッファから取得したBITおよびバッファセット情報を、各制御モジュールに備わるBIT記憶部201bおよびバッファセット情報記憶部202に記憶する。
ステップS2303bにおいて、各制御モジュールは、自身に割り当てられた退避用バッファ118の個別退避用バッファを参照し、ステージング対象世代のバッファデータがあるか否かを判別する。そして、ステージング対象世代のバッファデータが退避用バッファ118の個別退避用バッファにある場合(S2303b YES)、各制御モジュールは、そのバッファデータに対してステージングを行なう(S2304b)。ステージングが完了すると、各制御モジュールは、マスタ制御モジュールに対して完了通知を行なう。
また、ステップS2303bにおいて、ステージング対象世代のバッファデータが退避用バッファ118の個別退避用バッファにない場合(S2303b NO)、各制御モジュールは、マスタ制御モジュールに対して完了通知を行う。
ステップS2316aにおいて、マスタ制御モジュールは、依頼した全ての制御モジュールから応答を受信するまで完了通知を監視する。そして、依頼した全ての制御モジュールから応答を受信すると(S2316a YES)、マスタ制御モジュールは、処理をステップS2317aに移行してステージングを終了する。
(8)バッファ閾値を最適化する処理
図24は、本実施例に係るバッファ閾値の最適化処理を示すフローチャートである。
図12Bに示したステップS1216aまたは図20に示したステップS2005aに処理が移行すると、マスタ制御モジュールは、以下に示すバッファ閾値の最適化処理を開始する(ステップS2400)。
ステップS2401において、マスタ制御モジュールは、Write I/O命令を管理する待ち行列等を参照し、待ち状態のWrite I/Oが存在するか否かを判別する。待ち状態のWrite I/Oが存在しない場合(ステップS2401 YES)、マスタ制御モジュールは、処理をステップS2402に移行する。
ステップS2402において、マスタ制御モジュールは、解放したバッファセットが、ライトバックに使用されていたものか否かを判別する。なお、「解放したバッファセット」とは、図24に示す最適化処理を開始する前、例えば、図12Bに示したステップS1214aまたは図20に示したステップS2004aで解放されたバッファセットのことである。
解放したバッファセットがライトバックに使用されていたものでない場合(ステップS2402 NO)、マスタ制御モジュールは、ステップS2408に移行してバッファ閾値の最適化処理を終了する。また、解放したバッファセットがライトバックに使用されていたものである場合(ステップS2402 YES)、マスタ制御モジュールは、処理をステップS2403に移行する。
ステップS2403において、マスタ制御モジュールは、バッファ管理テーブル300からバッファ閾値を取得し、バッファ閾値が最大バッファセット数未満か否かを判別する。バッファ閾値が最大バッファセット数以上の場合(ステップS2403 NO)、マスタ制御モジュールは、ステップS2408に移行してバッファ閾値の最適化処理を終了する。
また、バッファ閾値が最大バッファセット数未満の場合(ステップS2403 YES)、マスタ制御モジュールは、処理をステップS2404に移行する。そして、マスタ制御モジュールは、バッファ閾値を1だけインクリメントし、バッファ管理テーブル300のバッファ閾値を更新する(ステップS2404)。すると、マスタ制御モジュールは、ステップS2408に移行してバッファ閾値の最適化処理を終了する。
一方、ステップS2401において、待ち状態のWrite I/Oが存在する場合、マスタ制御モジュールは、処理をステップS2405に移行する。
ステップS2405において、マスタ制御モジュールは、解放したバッファセットが、転送に使用されていたものか否かを判別する。なお、ステップS2402と同様に、「解放したバッファセット」とは、図24に示す最適化処理を開始する前、例えば、図12Bに示したステップS1214aまたは図20に示したステップS2004aで解放されたバッファセットのことである。
解放したバッファセットが転送に使用されていたものでない場合(ステップS2405 NO)、マスタ制御モジュールは、ステップS2408に移行してバッファ閾値の最適化処理を終了する。また、解放したバッファセットが転送に使用されていたものである場合(ステップS2405 YES)、マスタ制御モジュールは、処理をステップS2406に移行する。
ステップS2406において、マスタ制御モジュールは、バッファ管理テーブル300からバッファ閾値を取得し、バッファ閾値が1より大きいか否かを判別する。バッファ閾値が1以下の場合(ステップS2406 NO)、マスタ制御モジュールは、ステップS2408に移行してバッファ閾値の最適化処理を終了する。
また、バッファ閾値が1より大きい場合(ステップS2406 YES)、マスタ制御モジュールは、処理をステップS2407に移行する。そして、マスタ制御モジュールは、バッファ閾値を1だけデクリメントし、バッファ管理テーブル300のバッファ閾値を更新する(ステップS2407)。すると、マスタ制御モジュールは、ステップS2408に移行してバッファ閾値の最適化処理を終了する。
図25は、図12Bに示したマッチング処理(ステップS1211a)の具体的な処理を示すフローチャートである。なお、図25では、コピー元装置110に備わるマスタ制御モジュールと、その他の制御モジュールと、についての具体的な処理を示す。
ステップS2501aにおいて、マスタ制御モジュールは、未使用バッファID記憶部206を参照する。そして、未使用バッファID記憶部206に記憶されている未使用バッファIDの数が、バッファセット情報記憶部202に記憶されているバッファセット情報に含まれるコピー元IDとのマッチングに必要な数だけあるか否かを確認する。
そして、ステップS2501aにおいて、必要な数の未使用バッファIDを確認できない場合(S2501a NO)、マスタ制御モジュールは、処理をステップS2502aに移行する。そして、マスタ制御モジュールは、S2502aにてコピー先装置120からの未使用バッファ通知を待ち、未使用バッファ通知を受付けると、処理をステップS2501aに移行する。
また、ステップS2501aにおいて、必要な数の未使用バッファIDを確認すると(S2501a YES)、マスタ制御モジュールは、処理をステップS2503aに移行する。
ステップS2503aにおいて、マスタ制御モジュールは、未使用バッファID記憶部206から必要な数の未使用バッファIDを取得する。そして、マスタ制御モジュールは、既にバッファセット情報記憶部202に記憶されているバッファセット情報に含まれるコピー先IDと、取得した未使用バッファIDとを組み合わせて関連付け、すなわち、コピー元バッファとコピー先バッファとのマッチングを行なう。
このマッチング処理が終了すると、マスタ制御モジュールは、他の制御モジュールに対して、バッファセット情報の多重化依頼を通知する。
一方、ステップS2501bにおいて、マスタ制御モジュールからバッファセット情報の多重化依頼の通知を受けると、各制御モジュールは、バッファセット情報の多重化処理を行なう。ここで、バッファセット情報の多重化処理とは、コピー元装置110またはコピー先装置120に備わる全ての制御モジュールに同一のバッファセット情報を保持させる処理である。
例えば、マスタ制御モジュールから、ステップS2503aのマッチング処理が行なわれたバッファセット情報を取得する。そして、自身に備わるバッファセット情報記憶部202に取得したバッファセット情報を反映する。
そして、S2501bにおけるバッファセット情報の多重化処理が終了すると、各制御モジュールは、バッファセット情報の多重化処理の完了をマスタ制御モジュールに通知する。
ステップS2505aにおいて、マスタ制御モジュールは、バッファセット情報の多重化処理の依頼をした制御モジュールの全てから応答を受信したか否かを確認する。そして、当該応答を全ての制御モジュールから受信したと判断すると(S2505a YES)、コピー先バッファ割り当て処理を終了し(ステップS2506a)、図12Bに示したステップS1212aaの処理に移行する。
上述のように、本実施例に係るコピー元装置110は、退避用バッファ118を備える。
そして、転送・ステージングで使用中のバッファセット数がバッファ閾値を超えると、コピー元装置110は、バッファセットデータを、退避用バッファ118に退避するライトバックを行なう。
例えば、コピー元装置110−コピー先装置120間の回線能力が低い場合にホスト150から次々にWrite I/O命令を受けても、コピー元装置110は、使用中のバッファセット数がバッファ閾値を超えると、バッファセットデータを退避用バッファ118に退避する。
一方、コピー元装置110は、バッファセットデータのコピー先装置120への転送と展開処理が完了すると、そのバッファセットデータが記憶されていた領域を解放し、解放した領域に、退避用バッファ118に退避していたバッファセットデータをステージングする。そして、コピー元装置110は、そのバッファデータをコピー先装置120に転送する。
このように、本実施例に係るコピー元装置110によると、コピー元装置110−コピー先装置120間の回線能力が低い場合など、データの転送処理に遅延が生じる場合であっても、バッファセットの枯渇を抑止することができる。したがって、コピー先装置120は、バッファセットの枯渇時に行なうバッファHalt処理を抑止することができる。すなわち、コピー先装置120は、バッファHalt処理によりバッファセットの内容がクリアされ、順序性を保証したリモートコピーが中断されることを抑止することができる。その結果、コピー元装置110は、データの転送処理に遅延が生じる場合でも、順序性を保証したリモートコピーを行なうことが可能となる。
回線能力が均一でなく不安定である場合やWrite I/O等によるデータ更新量がコピー元装置110に備わる記録専用バッファ201の容量を超える場合などによってデータの転送処理に遅延が生じる場合も同様の効果を奏する。
さらに、コピー元装置110は、Write I/O処理にともなう処理の負荷に応じて、バッファ閾値の最適化を行なう。
例えば、コピー元装置110は、ステージング・転送実行後に待ち状態のWrite I/O処理があると、バッファ閾値をデクリメントする。待ち状態のWrite I/O処理が多く存在する場合、ステージング・転送実行後に待ち状態のWrite I/O処理を検出する毎にバッファ閾値をデクリメントすることになる。すると、図27に示すように、バッファ閾値が変動し、ライトバックに使用するバッファセットが多くなる。
その結果、急激にWrite I/O処理が増大しても、バッファセットデータは退避用バッファ118に退避されるので、バッファセットの枯渇を抑止することができる。
また、例えば、コピー元装置110は、バッファセットデータのライトバック処理の実行後に待ち状態のWite I/O処理がなければ、バッファ閾値をインクリメントする。待ち状態のWrite I/O条理を検出しない状態が続くと、バッファセットデータの転送処理を実行する毎に、コピー元装置110は、バッファ閾値をインクリメントすることになる。すると、図26に示すように、バッファ閾値が変動し、ステージング・転送に使用するバッファセットが多くなる。
その結果、通信回線の帯域幅を最大限利用してバッファセットデータの転送処理を行なうようになるので、バッファセットデータの転送処理が増大し、バッファセットの枯渇を抑える。
なお、図26および図27には、バッファセットの数が8ではなく16の場合を示しているが、これはバッファ閾値の動作の理解を容易にするためであって、バッファセットの構成を図26および図27に示す構成に限定する趣旨ではない。
また、従来のリモートコピー処理では、バッファセット情報の作成時に、コピー元IDとコピー先IDとのマッチング処理を行なっていた。しかし、本実施例に係るリモートコピー処理では、ステップS1202aのタイミングでは行わず、バッファへの格納処理が完了して転送処理を行う直前(ステップS1211a)で行う。
そのため、転送処理に関するバッファ以外に対して、転送処理と並行してデータの記憶処理を行うことができるので、コピー元装置110に備わる記録専用バッファ201およびバッファセット情報記憶部202を含むバッファ全てを効率的に使用することが可能となる。例えば、ホスト150からのWrite I/Oに係るデータを、コピー元装置110に備わるバッファの容量がなくなるまで格納することが可能となる。
その結果、順序性を保証したリモートコピーに使用するバッファに関し、コピー先装置120に備わるバッファが、コピー元装置110に備わるバッファより少ない場合であっても、コピー元装置が有するバッファを有効に使用することが可能となる。
また、コピー元装置110−コピー先装置120間のネットワークに何らかのトラブルが生じる等して経路閉塞状態となった場合でも、コピー元装置101に備わるバッファに容量が許す限りWriteデータを格納することができる。そのため、バッファが枯渇するまでに経路閉塞状態を解消すれば、順序性を保証したリモートコピー処理を中断する必要がなくなるという効果を奏する。その結果、リモートコピー処理の信頼性・安定性を向上するという効果を奏する。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に分散して記憶する記憶装置において、
複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段と、
前記第2の記憶手段の使用状況に応じて、前記データ群を複数の前記第2の記憶手段から読み出して前記データ群記憶手段に退避する退避処理を実行する退避処理手段と、
複数の前記第2の記憶手段それぞれに記憶された第2のデータを含む前記データ群を一括して出力する出力処理を実行するデータ群出力手段と、
前記出力処理が完了して未使用となった前記第2の記憶手段の前記記憶領域それぞれに、前記データ群記憶手段に退避した前記データ群を分散して記憶する記憶処理を実行する記憶処理手段と、
前記出力処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記出力処理に使用している前記記憶領域の数を調整する調整手段と、
を備える記憶装置。
(付記2)
前記退避処理手段は、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記出力処理に使用している前記記憶領域の数が、所定の閾値を超えると、前記退避処理を実行する、
ことを特徴とする付記1に記載の記憶装置。
(付記3)
前記調整手段は、前記出力処理に伴う負荷に応じて前記閾値を調整する、
ことを特徴とする付記2に記載の記憶装置。
(付記4)
前記調整手段は、前記出力処理後であって前記上位装置から送られた入出力処理についての処理待ちが存在する場合に、前記閾値を所定の数だけ小さくする、
ことを特徴とする付記2に記載の記憶装置。
(付記5)
前記調整手段は、前記退避処理後であって前記上位装置から送られた入出力処理についての処理待ちが存在しない場合に、前記閾値を所定の数だけ大きくする、
ことを特徴とする付記2に記載の記憶装置。
(付記6)
上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に分散して記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に記憶する記憶装置において、前記第2の記憶手段毎に有する制御装置であって、
前記第2の記憶手段の使用状況に応じて、複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段に、前記第2の記憶手段に記憶された前記第2のデータを退避する退避処理を実行するとともに、前記他の制御装置に対して前記退避処理の実行を指示する退避処理手段と、
前記第2の記憶手段に記憶された第2のデータを出力するとともに、他の制御装置に該他の制御装置が有する第2のデータを出力させて、前記複数の第2のデータを含む前記データ群を一括して出力する出力処理を実行するデータ群出力手段と、
前記出力処理が完了して未使用となった前記第2の記憶手段の記憶領域に、前記データ群記憶手段に退避した前記第2のデータを前記第2の記憶手段に記憶する記憶処理を実行するとともに、前記他の制御装置に対して前記記憶処理の実行を指示する記憶処理手段と、
前記出力処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記出力処理に使用している前記記憶領域の数を調整する調整手段と、
を備える制御装置。
(付記7)
上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に分散して記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に記憶する記憶装置を制御する制御方法において、
複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段と、
前記第2の記憶手段の使用状況に応じて、複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段に、複数の前記第2の記憶手段から読み出した前記データ群を退避し、
複数の前記第2の記憶手段それぞれに記憶された第2のデータを含む前記データ群を一括して出力する出力処理を実行し、
前記出力処理が完了して未使用となった前記第2の記憶手段の前記記憶領域それぞれに、前記データ群記憶手段に退避した前記データ群を分散して記憶し、
前記出力処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記出力処理に使用している前記記憶領域の数を調整する、
ことを特徴とする制御方法。
100 ストレージシステム
110 コピー元装置
117 ディスク装置
118 退避用バッファ
120 コピー先装置
200 メモリ
201 記録専用バッファ
201a バッファ
201b BIT記憶部
202 バッファセット情報記憶部
203 バッファ管理テーブル記憶部
204 バッファセット管理テーブル記憶部
205 退避用バッファ管理テーブル記憶部
300 バッファ管理テーブル
400 バッファセット管理テーブル
500 退避用バッファ管理テーブル

Claims (3)

  1. 上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に分散して記憶する記憶装置において、
    複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段と、
    前記第2の記憶手段の使用状況に応じて、前記データ群を複数の前記第2の記憶手段から読み出して前記データ群記憶手段に退避する退避処理を実行する退避処理手段と、
    複数の前記第2の記憶手段それぞれに記憶された第2のデータを含む前記データ群を転送先装置へ一括して転送する転送処理を実行するデータ群出力手段と、
    前記転送処理が完了して未使用となった前記第2の記憶手段の記憶領域それぞれに、前記データ群記憶手段に退避した前記データ群を分散して記憶する記憶処理を実行する記憶処理手段と、
    前記転送処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記転送処理に使用している前記記憶領域の数を調整する調整手段と、
    を備え、
    前記退避処理手段は、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記転送処理に使用している前記記憶領域の数が閾値を超えると、前記退避処理を実行し、前記調整手段は、前記転送処理後に前記第2の記憶手段の記憶領域が解放されて未使用となった際に前記上位装置から送られた入出力処理についての処理待ちが存在する場合に、前記閾値をより小さな値に変更し、前記退避処理後に前記第2の記憶手段の記憶領域が解放されて未使用となった際に前記上位装置から送られた入出力処理についての処理待ちが存在しない場合に、前記閾値をより大きな値に変更する、
    ことを特徴とする記憶装置。
  2. 上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に分散して記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に記憶する記憶装置において、前記第2の記憶手段毎に有する制御装置であって、
    前記第2の記憶手段の使用状況に応じて、複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段に、前記第2の記憶手段に記憶された前記第2のデータを退避する退避処理を実行するとともに、他の制御装置に対して前記退避処理の実行を指示する退避処理手段と、
    前記他の制御装置から出力される第2のデータと併せて、前記第2の記憶手段に記憶された第2のデータを出力することで、前記複数の第2のデータを含む前記データ群を転送先装置へ一括して転送する転送処理を実行するデータ群出力手段と、
    前記転送処理が完了して未使用となった前記第2の記憶手段の記憶領域に、前記データ群記憶手段に退避した前記第2のデータを前記第2の記憶手段に記憶する記憶処理を実行するとともに、前記他の制御装置に対して前記記憶処理の実行を指示する記憶処理手段と、
    前記転送処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記転送処理に使用している前記記憶領域の数を調整する調整手段と、
    を備え、
    前記退避処理手段は、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記転送処理に使用している前記記憶領域の数が閾値を超えると、前記退避処理を実行し、前記調整手段は、前記転送処理後に前記第2の記憶手段の記憶領域が解放されて未使用となった際に前記上位装置から送られた入出力処理についての処理待ちが存在する場合に、前記閾値をより小さな値に変更し、前記退避処理後に前記第2の記憶手段の記憶領域が解放されて未使用となった際に前記上位装置から送られた入出力処理についての処理待ちが存在しない場合に、前記閾値をより大きな値に変更する、
    ことを特徴とする制御装置。
  3. 上位装置から送信される第1のデータを記憶する第1の記憶手段と前記第1のデータを一時的に分散して記憶する複数の第2の記憶手段とを有し前記第1のデータを前記第2の記憶手段に記憶する記憶装置を制御する制御方法において、
    前記第2の記憶手段の使用状況に応じて、複数の前記第2の記憶手段それぞれに記憶された第2のデータを含むデータ群を記憶するデータ群記憶手段に、複数の前記第2の記憶手段から読み出した前記データ群を退避する退避処理を実行するステップと、
    複数の前記第2の記憶手段それぞれに記憶された第2のデータを含む前記データ群を転送先装置へ一括して転送する転送処理を実行するステップと、
    前記転送処理が完了して未使用となった前記第2の記憶手段の前記記憶領域それぞれに、前記データ群記憶手段に退避した前記データ群を分散して記憶する記憶処理を実行するステップと、
    前記転送処理にともなう負荷に応じて、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記転送処理に使用している前記記憶領域の数を調整するステップと、
    を有し、
    前記退避処理を実行するステップは、前記第2の記憶手段が有する複数の記憶領域のうち、前記記憶処理および前記転送処理に使用している前記記憶領域の数が閾値を超えると、前記退避処理を実行し、前記調整するステップは、前記転送処理後に前記第2の記憶手段の記憶領域が解放されて未使用となった際に前記上位装置から送られた入出力処理についての処理待ちが存在する場合に、前記閾値をより小さな値に変更し、前記退避処理後に前記第2の記憶手段の記憶領域が解放されて未使用となった際に前記上位装置から送られた入出力処理についての処理待ちが存在しない場合に、前記閾値をより大きな値に変更する、
    ことを特徴とする制御方法。
JP2009236551A 2009-10-13 2009-10-13 記憶装置、制御装置および記憶装置の制御方法 Active JP5387315B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009236551A JP5387315B2 (ja) 2009-10-13 2009-10-13 記憶装置、制御装置および記憶装置の制御方法
US12/900,831 US8589646B2 (en) 2009-10-13 2010-10-08 Storage apparatus and method for storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009236551A JP5387315B2 (ja) 2009-10-13 2009-10-13 記憶装置、制御装置および記憶装置の制御方法

Publications (2)

Publication Number Publication Date
JP2011086006A JP2011086006A (ja) 2011-04-28
JP5387315B2 true JP5387315B2 (ja) 2014-01-15

Family

ID=43855745

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009236551A Active JP5387315B2 (ja) 2009-10-13 2009-10-13 記憶装置、制御装置および記憶装置の制御方法

Country Status (2)

Country Link
US (1) US8589646B2 (ja)
JP (1) JP5387315B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5544897B2 (ja) * 2010-01-22 2014-07-09 富士通株式会社 記憶装置、制御装置および記憶装置の制御方法
JP5549243B2 (ja) * 2010-01-29 2014-07-16 富士通株式会社 ストレージ装置、ストレージ装置の制御方法及びストレージ装置の制御プログラム
JP5593718B2 (ja) * 2010-02-05 2014-09-24 富士通株式会社 ストレージ装置、ストレージ装置制御プログラムおよびストレージ装置制御方法
JP5737118B2 (ja) 2011-10-04 2015-06-17 富士通株式会社 ストレージシステム及びストレージシステムネットワーク
GB2524448B (en) * 2013-05-13 2020-10-14 Hitachi Ltd Identifying workload and sizing of buffers for the purpose of volume replication
JP2015103195A (ja) * 2013-11-28 2015-06-04 日本電気株式会社 スイッチおよびスイッチの制御方法およびスイッチの制御プログラムおよび記憶システム
WO2016073263A1 (en) * 2014-11-06 2016-05-12 Commscope Technologies Llc High-speed capture and analysis of downlink data in a telecommunications system
JP6708923B2 (ja) 2016-03-14 2020-06-10 富士通株式会社 ストレージシステム
CN106201346B (zh) * 2016-06-30 2019-06-25 联想(北京)有限公司 一种数据处理方法及存储设备
US10664368B2 (en) * 2017-11-30 2020-05-26 International Business Machines Corporation Modifying aspects of a storage system associated with data mirroring

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3374493B2 (ja) * 1993-12-27 2003-02-04 富士ゼロックス株式会社 ファクシミリアダプタ装置
JP2002024167A (ja) * 2000-07-07 2002-01-25 Fujitsu Ltd データ転送装置
JP4291664B2 (ja) * 2003-10-14 2009-07-08 株式会社日立製作所 通信バッファ予約機能を備えるストレージ装置およびシステム
US7085788B2 (en) * 2003-12-03 2006-08-01 Hitachi, Ltd. Remote copy system configured to receive both a write request including a write time and a write request not including a write time.
JP2006155202A (ja) 2004-11-29 2006-06-15 Toshiba Corp 遠隔バックアップシステム及び方法
JP4355674B2 (ja) * 2005-03-17 2009-11-04 富士通株式会社 リモートコピー方法及びストレージシステム
JP4744171B2 (ja) * 2005-03-18 2011-08-10 株式会社日立製作所 計算機システム及び記憶制御方法
JP2006268420A (ja) * 2005-03-24 2006-10-05 Nec Corp ディスクアレイ装置、ストレージシステムおよび制御方法

Also Published As

Publication number Publication date
JP2011086006A (ja) 2011-04-28
US20110087850A1 (en) 2011-04-14
US8589646B2 (en) 2013-11-19

Similar Documents

Publication Publication Date Title
JP5387315B2 (ja) 記憶装置、制御装置および記憶装置の制御方法
JP5397148B2 (ja) 記憶装置、制御装置および記憶装置の制御方法
JP5593792B2 (ja) Raid装置、記憶制御方法、および、記憶制御プログラム
JP4774085B2 (ja) ストレージシステム
JP4175788B2 (ja) ボリューム制御装置
EP2254036B1 (en) Storage apparatus and data copy method
US9075772B2 (en) Storage apparatus, controller and storage apparatus control method
KR102307130B1 (ko) 복수 배열 독립 디스크 구성에서 가비지 콜렉션의 영향을 완화하는 레이드 컨트롤러 및 그것의 동작 방법
US9547598B1 (en) Cache prefill of cache memory for rapid start up of computer servers in computer networks
US7558937B2 (en) Disk array device memory having areas dynamically adjustable in size
JP6822274B2 (ja) 情報処理システム、方法、及びプログラム
JP2005149276A (ja) 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
US10042768B1 (en) Virtual machine migration
US20110191551A1 (en) Storage apparatus and storage management method
JP5544897B2 (ja) 記憶装置、制御装置および記憶装置の制御方法
US10970210B2 (en) Managing data storage devices for spontaneous de-staging of cache
JP5263237B2 (ja) ストレージシステム
JP4369520B2 (ja) ボリューム制御装置及び方法
US8117419B2 (en) Storage apparatus and method for eliminating redundant data storage using storage apparatus
JP2012064112A (ja) ストレージ装置、制御部およびストレージ装置制御方法
US11232036B2 (en) Managing write access to data storage devices for spontaneous de-staging of cache
WO2017098591A1 (ja) 計算機及びストレージ装置を有するシステム、及びシステムの制御方法
JP2012252416A (ja) 記憶装置、データ制御方法、及びデータコントローラ
US10620849B2 (en) Thin provisioning storage device
JP6969656B2 (ja) 情報処理システム、方法、及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120720

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130227

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130305

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130425

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130528

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130723

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130923

R150 Certificate of patent or registration of utility model

Ref document number: 5387315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150