JP5057366B2 - 情報システム及び情報システムのデータ転送方法 - Google Patents

情報システム及び情報システムのデータ転送方法 Download PDF

Info

Publication number
JP5057366B2
JP5057366B2 JP2007085680A JP2007085680A JP5057366B2 JP 5057366 B2 JP5057366 B2 JP 5057366B2 JP 2007085680 A JP2007085680 A JP 2007085680A JP 2007085680 A JP2007085680 A JP 2007085680A JP 5057366 B2 JP5057366 B2 JP 5057366B2
Authority
JP
Japan
Prior art keywords
volume
storage device
storage apparatus
data
virtual
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
JP2007085680A
Other languages
English (en)
Other versions
JP2008134987A (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 JP2007085680A priority Critical patent/JP5057366B2/ja
Priority to US11/850,925 priority patent/US8595453B2/en
Priority to EP20070254110 priority patent/EP1918818B1/en
Priority to CN 200710166833 priority patent/CN101174197B/zh
Publication of JP2008134987A publication Critical patent/JP2008134987A/ja
Priority to US13/564,828 priority patent/US8832397B2/en
Application granted granted Critical
Publication of JP5057366B2 publication Critical patent/JP5057366B2/ja
Priority to US14/261,496 priority patent/US20140237179A1/en
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/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/2089Redundant storage control functionality
    • G06F11/2092Techniques of failing over between control units
    • 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
    • G06F11/2076Synchronous techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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/2069Management of state, configuration or failover
    • 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
    • G06F11/2074Asynchronous techniques
    • 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/2082Data synchronisation

Landscapes

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

Description

本発明は、複数の記憶領域を有するストレージシステムとストレージシステムに接続されたホストコンピューターと、を備えた情報システムのデータ転送方法に関する。
一般に、情報システムでは、記憶デバイスとしてHDD(ハードディスクドライブ)を用いるストレージ装置が備えられ、そのストレージ装置を含むストレージシステムが、ストレージエリアネットワーク(SAN:Storage Area Network)経由で、複数の上位装置(例えばホスト)からアクセスされる。一般的にストレージ装置では、RAID(Redundant Array of Independent (or Inexpensive) Disks)技術に従う高信頼化方法が採用されることでHDD単体の信頼性を超えた信頼性をストレージ装置として提供している。しかし、近年の情報化社会の進化によって上記RAIDによる信頼性が貢献する情報システムの可用性(サービス継続性)では不足してきた。
このような状況に対応する高可用化技術として、特許文献1に開示された技術がある。当該技術では、ホストコンピューター(以後ホストと省略する)とストレージ装置をそれぞれ有するプロダクションサイトとバックアップサイトを用意し、プロダクションサイトのストレージ装置が保存するデータをバックアップサイトのストレージ装置にミラーリングする。もし、プロダクションサイトのストレージ装置が障害停止した場合は、バックアップサイトのストレージ装置とホストを用いて装置停止の結果停止していたアプリケーション処理を再開させる。本技術は一般的にリモートコピー又はリモートミラーリングと呼ばれる。
特開平7‐244597号 米国特許 7,080,197号
特許文献1の技術ではストレージ装置の障害停止の結果、異なるホストでアプリケーションを再開させるため、アプリケーションの再起動処理が必要になる。当然ながらアプリケーション停止から再起動完了まではアプリケーションは通常動作ができないため、可用性については問題がある。本発明は、2台以上のストレージ装置間でリモートコピーを行うストレージシステムと当該ストレージシステムを利用するホストを含めた情報システムの可用性を向上させることを目的とする。
かかる課題を解決するため本発明においては、ファイルシステム、HBAデバイスドライバーを備えるオペレーティングシステム、及び前記ファイルシステムを通じてライトリクエストを送信するアプリケーションを備えるホストコンピューターと、前記ホストコンピューターに接続される第1のストレージ装置と、前記第1のストレージ装置及び前記ホストコンピューターに接続される第2のストレージ装置と、前記第1のストレージ装置及び前記第2のストレージ装置に接続され、複数の第1のHDDとコントローラーとキャッシュメモリから構成され、前記複数の第1のHDDの一部の領域から構成される第1のボリュームを有する第3のストレージ装置と、を有する情報システムのデータ転送方法であって、前記第1のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在する第1の仮想ボリュームを定義し、前記第2のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在し、当該第1のボリュームを前記第1の仮想ボリュームと共有する第2の仮想ボリュームを定義し、前記第1のストレージ装置及び前記第2のストレージ装置は、それぞれ複数の第2のHDDとコントローラーとキャッシュメモリとを備え、それぞれ前記複数の第2のHDDの一部の領域から構成される第2のボリュームも有し、前記第1のストレージ装置及び前記第2のストレージ装置は、前記第1の仮想ボリュームのデータを前記第2の仮想ボリュームへコピーするリモートコピーを設定し、前記ホストコンピューターは、前記ファイルシステムがライトリクエスト処理を行う際、前記リモートコピーに関する情報を管理するI/Oパスマネージャーが前記ファイルシステムを通じた前記アプリケーションからのライトリクエストを前記リモートコピーに関する情報に基づいて、前記HBAデバイスドライバーを通じて前記第1の仮想ボリュームが存在する前記第1のストレージ装置へ送信し、前記第1のストレージ装置は、受信した前記ライトリクエストが前記第1の仮想ボリューム宛なのか前記第1のストレージ装置の前記第2のボリューム宛なのかを判断し、前記第1の仮想ボリューム宛の場合、前記ライトリクエストのデータを前記第1のストレージ装置及び前記第2のストレージ装置の前記キャッシュメモリに記憶し、前記第1のストレージ装置の前記キャッシュメモリからデステージするデータを特定し、当該特定したデータをデステージしてから前記第2のストレージ装置の前記キャッシュメモリに記憶された当該データの破棄を指示することを特徴とする。
また本発明においては、ファイルシステム、HBAデバイスドライバーを備えるオペレーティングシステム、及び前記ファイルシステムを通じてライトリクエストを送信するアプリケーションを備えるホストコンピューターと、前記ホストコンピューターに接続される第1のストレージ装置と、前記第1のストレージ装置及び前記ホストコンピューターに接続される第2のストレージ装置と、前記第1のストレージ装置及び前記第2のストレージ装置に接続され、複数の第1のHDDとコントローラーとキャッシュメモリから構成され、前記複数の第1のHDDの一部の領域から構成される第1のボリュームを有する第3のストレージ装置と、を有する情報システムのデータ転送方法であって、前記第1のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在する第1の仮想ボリュームを定義し、前記第2のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在し、前記第1のボリュームを前記第1の仮想ボリュームと共有する第2の仮想ボリュームを定義し、前記第1のストレージ装置及び前記第2のストレージ装置は、それぞれ複数の第2のHDDとコントローラーとキャッシュメモリとを備え、それぞれ前記複数の第2のHDDの一部の領域から構成される第2のボリュームも有し、前記第1のストレージ装置及び前記第2のストレージ装置は、前記第1の仮想ボリュームのデータを前記第2の仮想ボリュームへコピーするリモートコピーを設定し、前記ホストコンピューターは、前記ファイルシステムがライトリクエスト処理を行う際、前記リモートコピーに関する情報を管理するI/Oパスマネージャーが前記ファイルシステムを通じた前記アプリケーションからのライトリクエストを前記リモートコピーに関する情報に基づいて、前記HBAデバイスドライバーを通じて前記第1の仮想ボリュームが存在する前記第1のストレージ装置へ送信し、前記第1のストレージ装置は、受信した前記ライトリクエストが前記第1の仮想ボリューム宛なのか前記第1のストレージ装置の前記第2のボリューム宛なのかを判断し、前記第1の仮想ボリューム宛の場合、前記ライトリクエストのデータを前記第1のストレージ装置及び前記第2のストレージ装置の前記キャッシュメモリに記憶し、前記第1のストレージ装置の前記キャッシュメモリからデステージするデータを特定し、当該特定したデータをデステージする一方、前記第1のストレージ装置と、前記第2のストレージ装置との間の通信に障害が発生した場合、前記第1のストレージ装置は、前記通信障害を前記ホストコンピューターに通知し、前記ホストコンピューターは、前記第1のストレージ装置と、前記第2のストレージ装置とにライトリクエストを発行し、前記第1のストレージ装置及び前記第2のストレージ装置は、自らを正系として前記ライトリクエストを処理する場合には、前記第3のストレージ装置の前記第1のボリュームに対して排他制御を行った後に、当該第1のストレージ装置又は当該第2のストレージ装置の前記キャッシュメモリに記憶した前記データを前記第1のボリュームにデステージすることを特徴とする。
さらに、本発明においては、実施の形態として、前記第1のストレージ装置と、前記2のストレージ装置との間の通信に障害が発生した場合、前記第1のストレージ装置は、前記通信障害を前記ホストコンピューターに通知し、前記ホストコンピューターは、前記第1のストレージ装置と、前記第2のストレージ装置とに書き込み要求を発行する。また、記第1のストレージ装置の障害にかかわらずアプリケーションが継続処理可能である。
本発明によれば、2台以上のストレージ装置間でリモートコピーを行う情報システムと当該情報システムを利用するデータ転送の可用性を向上させることができる。
以下、図面を参照して、本発明の実施の形態を説明する。
(1)第1の実施の形態
<1.情報システムの構成>
図1は、本発明の一実施の形態に係る情報システムのハードウェア構成の一例を示す図である。
情報システムは、例えば、ストレージ装置1500、ホストコンピューター(以後ホストと省略する)1100、管理ホスト1200と、2台以上の仮想化ストレージ装置1000とから構成される。ストレージ装置1500、ホストコンピューター(以後ホストと省略する)1100、管理ホスト1200の数は、それぞれ、1以上とすることができる。仮想化ストレージ装置1000とホスト1100は、I/Oネットワーク1300を介して、相互に接続される。仮想化ストレージ装置1000とストレージ装置1500と管理ホスト1200は、管理ネットワーク(図示せず)又はI/Oネットワーク1300を介して相互に接続される。
ホスト1100には、ホスト内部ネットワーク1104があり、そのネットワーク1104に、プロセッサ(図中ではProcと略記)1101と、メモリ(図中ではMemと略記)1102と、I/Oポート(図中ではI/O Pと略記)1103とが接続されている
。管理ホスト1200も、ホスト1100と同じハードウェア構成を有することができる。なお、I/Oポートをホスト1100に追加する拡張カードをHBA(Host Bas A
dapter)と呼ぶことがある。
管理ホスト1200は、表示装置を有し、その表示装置に、仮想化ストレージ装置1000とストレージ装置1500の管理用の画面を表示することができる。また、管理ホスト1200は、管理操作リクエストを、ユーザー(例えば管理ホスト1200のオペレーター)から受付け、その受け付けた管理操作リクエストを、仮想化ストレージ装置1000やストレージ装置1500に送信することができる。管理操作リクエストは、仮想化ストレージ装置1000やストレージ装置1500の操作のためのリクエストであり、例えば、パリティグループ作成リクエスト、内部LU(Logical Unit)作成リクエスト、パス定義リクエスト、及び仮想化機能に関する操作がある。
I/Oネットワーク1300は、ファイバーチャネルによる接続が第一に考えられる
が、それ以外でも、FICON(FIbre CONnection:登録商標)やEthernet(登録商標)とTCP/IP(Transmission Control Protocol/Internet Protocol)とiSCSI(internet SCSI(Small Computer System Interface))の組み合わせや、Ethernet(登録商標)とNFS(Network File System)やCIFS(Common Internet File System)等のネットワークファイルシステムの組み合わせ等が考えられる。さらに、I/Oネットワーク1300は、I/Oリクエストを転送可能な通信装置であればこれ以外でもよい。また、仮想化ストレージ装置1000とストレージ装置500を接続するネットワークについてもI/Oネットワーク1300と同様である。
仮想化ストレージ装置1000は、コントローラー(図中はCTLと表記)1010と、キャッシュメモリ(図中はCMと表記)1020と、複数のHDD1030とを備える。好ましい形態としては、コントローラー1010及びキャッシュメモリ1020は、それぞれ複数のコンポーネントから構成することが考えられる。なぜなら、コンポーネント単体に障害が発生して閉塞した場合でも、残りのコンポーネントを用いてリードやライトに代表されるI/Oリクエストを引き続き受けることができるためである。
コントローラー1010は、仮想化ストレージ装置1000の動作を制御する装置(例えば回路基盤)である。コントローラー1010には、内部ネットワーク1017があり、その内部ネットワーク1017に、I/Oポート1013、キャッシュポート(図中ではC Pと表記)1015、管理ポート(図中ではM Pと表記)1016、バックエンドポート(図中ではB/E Pと表記)1014、プロセッサ(例えばCPU(Central Processing Unit))1011及びメモリ1012が接続されている。コントローラー1010同士とキャッシュメモリ1020は、ストレージ内部ネットワーク1050にて相互に接続される。また、コントローラー1010と各HDD1030は、複数のバックエンドネットワーク1040にて相互接続される。
ストレージ装置1500のハードウェア構成は仮想化ストレージ装置1000と同種の部品から構成される。なお、仮想化ストレージ装置1000がHDDを持たない仮想化専用装置またスイッチの場合は、ストレージ装置1500は仮想化ストレージ装置1000と同種の部品から構成されなくてもいい。さらに、ホスト1100及び仮想化ストレージ装置1000の内部のネットワークは、好ましくは、I/Oポート1013の有する転送帯域より広帯域であり、また、バスやスイッチ型のネットワークによって全てまた一部が代替されてもよい。また、図1では、I/Oポート1013は、コントローラー1010に一つ存在することになっているが、実際には、複数のI/Oポート1013がコントローラー1010に存在してもよい。
以上のハードウェア構成によって、仮想化ストレージ装置1000やストレージ装置1500のHDDに保存された全て又は一部のデータを、ホスト1100が読出したり書き込んだりすることができるようになる。なお、以後の説明では、データ保存を担当するシステムをストレージクラスタと呼ぶ。また、ストレージクラスタ内部に当該システムを2系統含むことで高可用化を実現するサブシステムで、仮想化ストレージ装置1000とストレージ装置1500の片方又は両方を含むサブシステムをストレージサブシステムと呼ぶ。
<2.本実施の形態の概要>
本実施の形態では、他のストレージ装置内のボリューム等の記憶領域を仮想化する仮想化機能を有する仮想化ストレージ装置1000を含むストレージシステムの可用性を向上させるため、もう一台の仮想化ストレージ装置1000を用いた二重化構成を採用する。図2はその概要を示した図である。
本概要では、ストレージシステムに仮想化ストレージ装置1000L、仮想化ストレージ装置1000R、ストレージ装置1500L、ストレージ装置1500Rが含まれる。なお、以下においては、説明を容易にするため、仮想化ストレージ装置1000L及びストレージ装置1500Lを正系(プロダクション系)、仮想化ストレージ装置1000R及びストレージ装置1500Rを副系(バックアップ系)の役割をもっているものとする。しかし、それぞれの仮想化ストレージ装置1000L,1000Rがホスト1100へ提供するボリュームが二つ以上の場合は、仮想化ストレージ装置単位で正系・副系を担当する代わりにボリューム単位で正系を担当する仮想化ストレージ装置1000L,1000Rが定まっていればよい。
それぞれの仮想化ストレージ装置1000L,1000Rは自身が有するHDD1030を構成要素とするパリティグループ(RAID技術によって構成される)の一部又は全ての領域をボリューム3000LAやボリューム3000RAとしてホスト1100に提供する(図中の円柱内に'A'と記された部分が対応)。また、仮想化ストレージ装置1000はオプションとして仮想化機能による仮想ボリューム3000LB,3000RB(対応するHDD等の不揮発記憶領域が仮想化ストレージ装置1000L,1000Rの外部に存在するボリュームのこと)を提供することができる。本概要ではストレージ装置1500L、1500Rが提供するボリューム3500LB、3500RBの一部又は全てを対応する不揮発記憶領域として用いている。なお、以後の説明では「ボリュームのデータ」と書いた場合は、HDD1030に保存されたデータに加えてキャッシュメモリ1020に一時保存されたデータも含む。また、後ほど述べる「仮想ボリュームのデータ」に関してはストレージ装置1500L,1500Rのボリューム3500LB、3500RBに保存されたデータに加えて仮想化ストレージ装置1000L,1000Rのキャッシュメモリ1020に一時保存されたデータを含む。
一方、ホスト1100上ではアプリケーションプログラム(以後、アプリケーションと略すことがある)2010と、OSと、OSの設定・処理を補佐するデーモンや管理プログラムに代表されるシステムプログラムとが動作している。OSはアプリケーション2010に対して仮想化ストレージ装置1000L,1000Rが提供するボリューム3000LA,3000LB,3000RA,3000RB内に存在するデータに対するI/Oリクエスト用インターフェースを提供し、アプリケーション2010からの要求に応じて適切な仮想化ストレージ装置1000L,1000R及びボリューム3000LA,3000LB,3000RA,3000RBに対するI/Oリクエストを送信する。通常状態ではホスト1100は仮想化ストレージ装置1000Lのボリューム3000LA,3000LBに対してリードやライトに代表されるI/Oリクエストを発行し、データの送受信を行う。つまり、リードリクエストを受け取った場合、仮想化ストレージ装置1000Lは、リクエスト対象のボリューム3000LA,3000LB,3500LBが仮想化ストレージ装置1000L内部のHDD1030に対応している場合は当該HDD1030からデータを読み上げてこれをホスト1100に返したり、ストレージ装置1500Lに対してリードリクエストを発行することで必要なデータを取得し、そのデータ(の全て又は一部)をホスト1100に返す。
ライトリクエストの場合は、データの冗長化のために、ライトデータを受け取った仮想化ストレージ装置1000Lは副系である仮想化ストレージ装置1000Rへライトデータを送信し、仮想化ストレージ装置1000Lがライトデータの受け取り完了メッセージを仮想化ストレージ装置1000Rから受け取った後にホスト1100に対してライト完了メッセージを返す。なお、仮想化ストレージ装置1000Lに対するライトデータも仮想化ストレージ装置1000Rが仮想化ストレージ装置1000Lを経由して受け取ったライトデータも、各仮想化ストレージ装置1000L,1000R内のキャッシュメモリ1020L,1020Rに一時保持されてもよい。なお、本実施の形態の一つとして、このライトデータの転送はストレージリモートコピーによって行われる。
図3は通常状態下で仮想化ストレージ装置1000Lに障害が発生した後の情報システムの処理概要を示している。
正系の仮想化ストレージ装置1000Lが障害によって停止した場合、ホスト1100上のシステムプログラムはその障害を検知し、I/Oリクエストの発行先を正系の仮想化ストレージ装置1000Lから副系の仮想化ストレージ装置1000Rへ切り替える。ただし、その場合もアプリケーション2010はI/Oリクエストの発行先が切り替わったことを認識せずにI/Oを継続することができる。そのために、通常時からシステムプログラムはOSレイヤ(より具体的にはファイルシステムより下位のレイヤ)にて、アプリケーション2010やファイルシステムからI/Oリクエスト時に指定されるボリューム識別子として仮想的なボリューム識別子(又はデバイスファイル)を指定させるようにしておき、OSの下位レイヤは当該識別子と実際のボリュームに対して割り当てられた識別子(又はデバイスファイル)の対応を管理しておく。I/Oリクエストの発行先を切り替える場合は、その対応関係をこれまでの仮想化ストレージ装置1000Lのボリューム3000LA、ボリューム3000LB宛であったものを仮想化ストレージ装置1000Rのボリューム3000RAとボリューム3000RB宛に切り替えることでアプリケーション2010に対して透過に切り替えを実現する。
さらに、仮想化ストレージ装置1000Rもホスト1100からの当該ボリューム3000RA,3000RBに対するライトリクエストの到着やその他明示的なフェイルオーバー要求に応じて、ライトリクエストを処理できるようにする。この変更処理の一例としては、仮想化ストレージ装置1000Lから仮想化ストレージ装置1000Rに対するデータコピーに伴い、仮想化ストレージ装置1000Rのボリューム3000RA,3000RBに対するホスト1100からのライトリクエストの拒否が設定されている場合はそれを解除する。また、リモートコピーを用いてライトデータの転送を行っている場合はリモートコピーのコピー状態の変更を行うことも考えられる。
図4は仮想化ストレージ装置1000L,1000R間のネットワークに障害が発生した後の情報システムの処理概要を示している。
ネットワーク障害を検知した仮想化ストレージ装置1000Lはホスト1100に当該障害を通知する。障害通知を受けたホスト1100は、副系の仮想化ストレージ装置1000Rに対してライトリクエストを処理できるように要求し、以後のライトリクエストは正系の仮想化ストレージ装置1000L及び副系の仮想化ストレージ装置1000Rの両方に発行することで、正系と副系のデータを同一にする。
<3.ホスト1100で実行されるプログラム及び情報>
図5はホスト1100上で実行されるソフトウェアプログラムと、当該ソフトウェアプログラムが用いる情報とに加えて、各ソフトウェアプログラムが提供する概念について記した図である。なお、当該ソフトウェアプログラムはメモリ1102(図1)とプロセッサ1101(図1)とによって保持と実行がされるが、その一部をハードウェア化して実行してもよい。
ホスト1100上ではアプリケーション2010、リモートコピーマネージャー5030に加えて、OS又はKernel内部のプログラムモジュールとしてファイルシステム5020、I/Oパスマネージャー5000及びHBAデバイスドライバー5010が実行される(ファイルシステム5020、I/Oパスマネージャー5000又はHBAデバイスドライバー5010は、全ての処理がKernel内部で実行される必要はない)。
HBAデバイスドライバー5010はHBAに搭載されたI/Oポート1103(図1)を通じてI/Oリクエストやそれに伴うデータを送受信したり、その他の仮想化ストレージ装置1000L,1000Rやストレージ装置1500L,1500R等との通信を制御するプログラムである。HBAデバイスドライバー5010は、また、上位レイヤに対して仮想化ストレージ装置1000L,1000Rが提供するボリューム3000LA,3000LB,3000RA,3000RBに対応する識別子を提供し、その識別子を伴ったI/Oリクエストを受け付けることができる。ボリューム5040はその概念を示したもので、仮想ストレージ装置1000L,1000Rが提供するボリューム3000LA,3000LB,3000RA,3000RBにそれぞれ対応している。
I/Oパスマネージャー5000は、アプリケーション2010のI/Oリクエスト発信先を切り替えるためのモジュールである。当該モジュールはHBAデバイスドライバー5010が提供するボリューム5040に対応する識別子と同種のホスト1100内での仮想的なボリュームに対応する識別子及びI/Oリクエスト用インターフェースをファイルシステム5020に対して提供する。このホスト1100内での仮想的なボリュームに対応する識別子は当該モジュール内でHBAデバイスドライバー5010が提供するボリューム5040に対応する識別子と対応しており、デバイス関係テーブル5001がその対応関係を保持している。ボリューム5050はこのホスト1100内での仮想的なボリュームの概念を示したもので、本図ではその対応関係の一例として仮想化ストレージ装置1000Lのボリューム3000LA,3000LBに対応する識別子と対応している(他の言い方をすると、ホスト1100内での仮想的なボリューム5050の実体は仮想化ストレージ装置1000Lのボリューム3000LA,3000LBであるともいえる)。
ここまでのレイヤでのI/Oリクエストは通常固定長ブロックアクセス形式で指定する。ただし、ホスト1100がメインフレームの場合はこれに限定されず、CKD(Count Key Data)形式で指定してもよい。
ファイルシステム5020は、HBAデバイスドライバー5010が提供するボリューム5040に対応する識別子及びI/Oインターフェースと、I/Oパスマネージャー5000が提供するホスト1100内での仮想的なボリューム5050に対応する識別子及びI/Oインターフェースとを通じて、仮想化ストレージ装置1000L,1000RへのI/Oリクエストを送信したり、データの送受信を行うモジュールである。図5では例としてファイルシステム5020内部にディレクトリツリーの構造を示し、そのツリー構造の一部5052が、I/Oパスマネージャー5000がホスト1100内での仮想化で提供したボリューム5050に保存されている状態を示している(これまで説明した通り、より正確にはI/Oパスマネージャー5000のホスト1100内での仮想的なボリューム5050の提供は識別子を通じたものであり、さらに、そのボリューム5050に保存されていると書いたデータは実際にはデバイス関係テーブル5001にて示される仮想化ストレージ装置1000L,1000Rが提供するボリューム3000LA,3000LB,3000RA,3000PBに保存されている)。ファイルシステム5020はアプリケーション2010に対してファイルI/Oのインターフェースを提供する。ファイルI/Oインターフェースを通じてアプリケーション2010から呼び出されたファイルシステム5020は、ファイル名とファイル内でのデータオフセットを伴ったリード又はライトリクエストをディレクトリファイルやinodeといったファイルシステム5020内の構造化情報を参照しつつ、ブロック形式のリード又はライトリクエストに変換し、I/Oパスマネージャー5000又はHBAデバイスドライバー5010へリード又はライトリクエストを渡す。
なお、Unit系やWindows(登録商標)系のOSではファイルI/Oのインターフェースを用いて直接ボリュームのデータを操作するためのインターフェースとしてデバイスファイルシステムと呼ばれる機能を提供している。通常、デバイスファイルシステムはファイル空間の'/dev'ディレクトリ配下に展開されており、当該ディレクトリ以下のファイル(図中の例では、rsda等)のファイル名はファイルシステム5020の下位レイヤ(HBAデバイスドライバー5010やI/Oパスマネージャー5000)が提供するボリューム5040,5050に対応する。そして、当該ボリューム5040,5050に保存されたデータはデバイスファイル5070,5080に保存されたデータであるかのようにファイルI/O用インターフェースで読み書き可能となる。なお、図5では例としてデバイスファイル5070(rsda, rsdb, rsdc, rsdd)はHBAデバイスドライバー5010が認識し、提供しているボリューム5040に対応し、デバイスファイル5080(vsda, vsdb)はI/Oパスマネージャー5000が提供しているボリューム5050に対応している。このデバイスファイル5070,5080は、アプリケーション2010がデータベースである場合に、独自のデータ編成やバッファ管理を実現する目的で使われることがある。
リモートコピーマネージャー5030は仮想化ストレージ装置1000L,1000Rとの間のデータ転送を実現するリモートコピーの状態を取得したり、ホスト1100やI/Oパスマネージャー5000がリモートコピーの操作を行うためのプログラムで、当該プログラムを使用するプログラム、ユーザー又はI/Oパスマネージャー5000の要求に応じて仮想化ストレージ装置1000L,1000Rと通信を行う。
なお、これまで説明した通りHBAデバイスドライバー5010やI/Oパスマネージャー5000は一部又は全ての機能がKernel内部のモジュールとしてインストールやアンインストールすることができることが望ましい。なぜならば、HBAデバイスドライバー5020はHBAを制御するプログラムであるが故、HBAの製造会社が提供することが多い。同様にI/Oパスマネージャー5000は仮想化ストレージ装置1000L,1000Rの処理を前提として処理が決定されるため、一部又は全てのモジュールが仮想化ストレージ装置1000L,1000Rの製造会社が提供することが考えられる。したがって、当該プログラムがインストール・アンインストールできることによって幅広いHBAと仮想化ストレージ装置1000L,1000Rの組み合わせによる情報システムを構築することができる。また、本発明ではアプリケーション2010に対して透過に正系と副系の切り替えを行うためにKernel内部で処理を実行することでアプリケーション2010の再コンパイル等が不要な透過的な切り替えが可能である。さらに、I/Oパスマネージャー5000がファイルシステム5020とHBAデバイスドライバー5010の中間レイヤに存在することで、ファイルシステム5020に対する再コンパイル等を不要とし、さらにファイルシステム透過性も確保している。そして、I/Oパスマネージャー5000がHBAデバイスドライバー5010の機能を利用することができるようになっている。
また、Kernel内部にいるI/Oパスマネージャー5000がリモートコピーマネージャー5030を呼び出す場合やその逆の通信方法として以下の二通りが考えられる。
(A)I/Oパスマネージャー5000は通信用の仮想的なボリュームを作成し、ファイルシステム5020はこの通信用ボリュームをデバイスファイルとしてファイル空間に作成する。リモートコピーマネージャー5030は定期的にデバイスファイルに対してリードシステムコールを実行した状態で待つ。I/Oパスマネージャー5000はリモートコピーマネージャー5030からのI/Oリクエストを受信するが、内部で保留する。そして、当該モジュールがリモートコピーマネージャー5030に対するメッセージ送信をする必要が出てきたらI/Oリクエストの返り値として定められたメッセージを含むデータをファイルシステム5020を通じてリモートコピーマネージャー5030に返す。なおこの際リモートコピーマネージャーが発行するリードシステムコールは長時間Kernel内部で待たされることになる。それが好ましくない場合は、I/Oパスマネージャー5000が、一定時間経過後に何もメッセージがない旨のデータをファイルシステム5020を通じてリモートコピーマネージャー5030へ返し、それを受信したリモートコピーマネージャー5030が再度リードシステムコールを実行すればよい。
(B)Unix(登録商標)ドメインソケットを用いて仮想的なネットワーク通信として扱う。具体的には、ソケットの一方のエンドをリモートコピーマネージャー5030が操作し、残りのエンドをI/Oパスマネージャー5000が操作する。
なお、以後の説明ではI/Oパスマネージャー5000がリモートコピーの操作や状態参照を行う場合はこのような通信によってリモートコピーマネージャー5030を呼び出すことで操作を行っているものとする。
<4.仮想ストレージ装置1000で実行されるプログラム及び情報>
図6は、仮想化ストレージ装置1000(1000L,1000R)とストレージ装置1500(1500L,1500R)とで実行されるプログラムと、当該プログラムにより管理される情報とについて示した図である。なお、当該プログラムはメモリ1012(図1)と、プロセッサ1011(図1)と、キャッシュメモリ1020とによって保持と実行がされるが、その一部をハードウェア化して実行してもよい。
<4.1.I/O処理プログラム6020、パリティグループ情報6060及びボリューム情報6050>
パリティグループ情報6060には、パリティグループ毎の以下の構成に関連する情報が含まれる。
(1)パリティグループを構成するHDD1030の識別子。パリティグループには複数のHDD1030が参加しているため、当該情報はパリティグループ毎に複数存在する。
(2)RAIDレベル
また、ボリューム情報6050には、ボリューム毎の以下の構成に関連する情報が含まれる。
(1)ボリューム容量
(2)ボリュームに対応するデータが保存されるパリティグループの識別子とパリティグループ内の領域(開始アドレスと終了アドレスの片方又は両方)。
I/O処理プログラム6020は、ボリューム情報6050やパリティグループ情報6060を参照してホスト1100から受信したI/Oリクエストに関する以下の処理を実行する。
(A)ステージング: HDD1030に保存されたデータをキャッシュメモリ1020上にコピーする。
(B)デステージング:キャッシュメモリ1020に保存されたデータをHDD1030へコピーする。なお、その前の処理としてRAID技術による冗長データを作成してもよい。
(C)リード処理:ホスト1100から受信したリードリクエストに対して、当該リクエストに対応するデータがキャッシュメモリ1020上に存在するかどうか判定する。そして、当該リクエストに対応するデータがキャッシュメモリ1020上に存在しない場合は、ステージング処理を実行して当該データをキャッシュメモリ1020上にコピーした後に、そのデータをホスト1100に対して送信する。なお、キャッシュメモリ1020上にかかるデータが存在する場合は、当該データをホスト1100に対して送信する。
(D)ライト処理:ホスト1100から受信したライトデータをキャッシュメモリ1020上に保存する。なお、当該処理時にキャッシュメモリ1020上に十分な空き領域が無い場合はデステージング処理を実行して適切なデータをHDD1030上にコピーした後にキャッシュメモリ1020上の当該領域を流用する。また既にキャッシュメモリ1020上に保存された領域がライトリクエストに含まれる場合は、そのまま既存のキャッシュメモリ1020上の領域へ上書きすることもある。
(E)キャッシュアルゴリズム:キャッシュメモリ1020上のデータの参照頻度や参照時期等を元にLRU等のアルゴリズムによってステージングすべきHDD1030上のデータやデステージングすべきキャッシュメモリ1020上のデータを決定する。
<4.2.仮想化プログラム6030と仮想化情報6070>
仮想化情報6070には、仮想化ボリューム毎の以下の構成に関連する情報が含まれる。
(1)ストレージ装置1500内のボリューム内の領域とその領域が仮想ボリューム上のアドレス空間のどの領域としてホスト1100に提供するかに関する以下の情報。仮想ボリュームが複数で構成される場合は下記情報も複数存在する。
(1ー1)仮想ボリュームを構成する、ストレージ装置1500の識別子(又はポートの識別子)と、ボリュームの識別子と、ボリューム内の領域(開始アドレスと終了アドレス)
(1ー2)仮想ボリュームにおける領域(開始アドレスと終了アドレス)
(2)仮想ボリュームの容量
仮想化プログラム6030は、仮想化ストレージ装置1000が、ストレージ装置1500が提供するボリュームを用いてホスト1100にボリュームを提供するためのプログラムである。なお、仮想化プログラム6030が提供する仮想ボリュームと、それに対応するストレージ装置1500上のボリュームとの対応関係として、以下のパターンがある。
(A)ストレージ装置1500上のボリューム全体を仮想ボリュームの記憶領域として用いる場合。この場合、仮想ボリュームの容量は選択したボリュームとおおよそ同容量となる(制御情報や冗長情報をストレージ装置1500上のボリュームに保存する場合。当該情報等がない場合は同一容量)。
(B)ストレージ装置1500上のボリュームの一部の領域を仮想化ボリュームに対応する保存領域として用いる場合。この場合、仮想ボリュームの容量は当該利用対象の領域容量と大体同じとなる。
(C)複数のストレージ装置1500上の複数のボリュームを仮想ボリュームの記憶領域として結合して用いる場合。この場合、仮想ボリュームの容量は各ボリューム容量の合計値とおおよそ同容量となる。なお、この結合方式としてはストライピングやConcatenate(複数ボリュームを連結して一つのボリュームとして扱う方法)等がある。
(D)(C)のパターンに付随してパリティ情報やミラーデータを保存する場合。この場合、仮想ボリュームの容量はミラーデータを保存する場合は(C)の半分で、パリティを保存する場合はパリティ計算方式に依存する。ストレージ装置1500内部でRAIDによる高信頼化と組み合わせることによって仮想ボリュームに保存されたデータについての信頼性がより向上する。
なお、いずれのパターンについても、I/Oリクエストで指定するストレージ装置識別子(又はポート識別子)とボリューム識別子(I/Oリクエストで用いる、仮想化ストレージ装置内又はポート配下のボリュームを識別する情報で、LUN(Logical Unit Number)や、CKD形式のCU番号とLDEV(Logical DEVice)番号等がある)が元々のボリュームと異なる。
仮想化プログラム6030は、ステージングやデステージング対象となるデータが仮想ボリュームに対応する場合にI/O処理プログラム6020により呼び出され、仮想化情報6070を用いて以下の処理を実行する。
(A)ステージング: 仮想化ボリュームとストレージ装置1500のボリュームの対応関係を元に、どのストレージ装置1500のボリュームに保存されたデータをキャッシュメモリ1020上にコピーすべきかを決定した後に、キャッシュメモリ1020上へデータコピーする。
(B)デステージング:仮想化ボリュームとストレージ装置1500のボリュームの対応関係を元に、どのストレージ装置1500のボリュームへキャッシュメモリ1020上のデータをコピーすべきかを決定した後に、ストレージ装置1500のボリュームへデータコピーする。なお、その前の処理としてRAID技術による冗長データを作成してもよい。
<4.3.リモートコピープログラム6010とコピーペア情報6040>
コピーペア情報6040はリモートコピーのコピー元ボリュームとコピー先ボリュームのコピーペア(ペアと省略することがある)毎に以下の情報を持つ。なお、本実施の形態では、コピー元ボリューム及びコピー先ボリュームは高可用性を実現する対象ボリュームが指定されることになる:
(1)コピー元ボリュームを持つ仮想化ストレージ装置1000の識別子及びボリュームの識別子
(2)コピー先ボリュームを持つ仮想化ストレージ装置1000の識別子とボリュームの識別子
(3)コピーペアの状態(詳細は後ほど述べる)
リモートコピープログラム6010は、コピー元ボリュームに保存されたデータをコピー先ボリュームにミラーリングするプログラムであり、コピーペア情報6040を参照して処理を行う。以下にリモートコピー(特に同期リモートコピー)の処理概要とペア状態について説明する。
<4.3.1.同期リモートコピーのコピー処理動作>
同期リモートコピーとは、前述の様に、コピー元の仮想化ストレージ装置1000がホスト1100からコピー元ボリュームに対するライトリクエストを受け付けた場合、ライトデータをコピー先の仮想化ストレージ装置1000に送信した後に、ホスト1100に対してライトリクエスト完了を返すリモートコピー方法である。
同期リモートコピーが実行される際、コピー元ボリュームとコピー先ボリュームとのペア間におけるリモートコピーの状況を管理1200に表示したり、リモートコピーの状態を操作するために、仮想化ストレージ装置1000のコントローラー1010は、コピーペア状態(Simplex、Initial‐Copying、Duplex、Suspend及びDuplex‐Pending)と呼ばれる情報を管理する。図7に同期リモートコピーのペア状態に関する状態遷移図を示す。以下、各ペア状態について説明する。
<4.3.1.1.Simplex状態>
Simplex状態は、ペアを構成するコピー元ボリュームとコピー先ボリュームとの間でコピーが開始されていない状態である。
<4.3.1.2.Duplex状態>
Duplex状態は、同期リモートコピーが開始され、後述する初期化コピーも完了してペアを構成するコピー元ボリューム及びコピー先ボリュームのデータ内容が同一となった状態である。本状態では、書き込み途中の領域を除けば、コピー元ボリュームのデータ及びコピー先ボリュームのデータの内容は同じとなる。なお、Duplex中及びDuplex‐Pending及びInitial‐Copying状態ではホスト1100からコピー先ボリュームへのライトリクエストは拒否される。
<4.3.1.3.Initial‐Copying状態>
Initial‐Copying状態は、Simplex状態からDuplex状態へ遷移するまでの中間状態であり、この期間中に、必要ならばコピー元ボリュームからコピー先ボリュームへの初期化コピー(コピー元ボリュームに既に格納されていたデータのコピー先ボリュームへのコピー)が行われる。初期化コピーが完了し、Duplex状態へ遷移するために必要な処理が終わったら、ペア状態はDuplexとなる。
<4.3.1.4.Suspend状態>
Suspend状態は、コピー元ボリュームに対する書き込みの内容をコピー先ボリュームに反映させない状態である。この状態では、ペアを構成しているコピー元ボリューム及びコピー先ボリュームのデータの内容は同じでない。ユーザーやホスト1100からの指示を契機に、ペア状態は他の状態からSuspend状態へ遷移する。それ以外に、仮想化ストレージ装置1000間のネットワーク障害等が原因で同期リモートコピーを行うことが出来なくなった場合に自動的にペア状態がSuspend状態に遷移することが考えられる。
以後の説明では、後者の場合、即ち障害により生じたSuspend状態を障害Suspend状態と呼ぶことにする。障害Suspend状態となる代表的な原因としては、ネットワーク障害のほかに、コピー元ボリュームやコピー先ボリュームの障害、コントローラー1010の障害が考えられる。
Suspend状態となった場合、コピー元ストレージ1000は、Suspend状態となった時点以降にコピー元ボリュームに対するライトリクエストがあると、ライトリクエストに従ってライトデータを受信し、コピー元ボリュームに保存するが、コピー先の仮想化ストレージ装置1000にはライトデータを送信しない。またコピー元の仮想化ストレージ装置1000は、書き込まれたライトデータのコピー元ボリューム上での書き込み位置を差分ビットマップ等として記憶する。
なおSuspend状態となった時点以降にコピー先ボリュームに対してライトリクエストがあった場合には、コピー先の仮想化ストレージ装置1000も上記の動作を行う。また、ペアが障害Suspend状態となるより前に、当該ペアに対してフェンスと呼ばれる設定を行った場合、ペア状態が障害Suspendに遷移するとコピー元ボリュームに対するライトを拒否する。なお、コピー先の仮想化ストレージ装置1000は障害Suspend状態中のコピー先ボリュームに対するライトリクエストを拒否してもよい。
<4.3.1.5.Duplex‐Pending状態>
Duplex‐Pending状態は、Suspend状態からDuplex状態に遷移するまでの中間状態である。この状態では、コピー元ボリューム及びコピー先ボリュームのデータの内容を一致させるために、コピー元ボリュームからコピー先ボリュームへのデータのコピーが実行される。コピー元ボリューム及びコピー先ボリュームのデータの内容が同一になった後、ペア状態はDuplexとなる。
なお、Duplex‐Pending状態におけるデータのコピーは、Suspend状態の間、コピー元の仮想化ストレージ装置1000又はコピー先の仮想化ストレージ装置1000が記録した書き込み位置(例えば上述の差分ビットマップ等)を利用して、更新が必要な部分(即ちコピー元ボリュームとコピー先ボリュームとのデータの不一致部分)だけをコピーする差分コピーによって実行される。
また、以上の説明ではInitial‐Copying状態とDuplex‐Pending状態は別々な状態としたが、これらをまとめて一つの状態として管理ホスト1200の画面に表示したり、状態を遷移させても良い。
<4.3.1.6.ペア操作指示>
ペア状態はホスト1100や管理ホスト1200からの以下の指示によって他の状態へ遷移する。
(A)初期化指示:Simplex状態にて本指示を受信するとInitial‐Copying状態へ遷移する。
(B)再同期指示:Supend状態又は障害Suspend状態にて本指示を受信するとDuplex‐Pending状態へ遷移する。
(C)分割指示:Duplex状態にて本指示を受信するとSuspend状態へ遷移する。
(D)コピー方向反転指示:Duplex状態、Suspend状態又は障害Suspend状態にて本指示を受信すると、コピー元とコピー先との関係が反転する。Duplex状態の場合は、本指示を受信することでコピー方向も反転する。
なお、初期化指示はコピー元の仮想化ストレージ装置1000及びコピー元ボリュームと、コピー先の仮想化ストレージ装置1000及びコピー先ボリュームとを指定することが考えられ、その他の指示については既にペア関係が出来上がっているため当該関係を示す識別子(コピー元の仮想化ストレージ装置1000及びコピー元ボリュームと、コピー先の仮想化ストレージ装置1000及びコピー先ボリュームとの組み合わせもその識別子の一つである)を指示すればよい。
<5.ストレージ装置1500で実行されるプログラム及び情報>
図6にはストレージ装置1500にて実行されるプログラム及び情報について記されているが、それぞれのプログラム及び情報は仮想化ストレージ装置1000と同様の動作を行う。
<6.デバイス関係テーブル5001>
図8はデバイス関係テーブル5001が有する情報を示した図である。デバイス関係テーブル5001は、I/Oパスマネージャー5000が提供するホスト1100内で仮想的なボリューム(より正確には当該ボリュームに対応する識別子)毎に以下の情報を管理する。
(A)ホスト1100内で仮想的なボリュームの識別子
(B)関係ボリューム識別子リスト:上記ホスト1100で仮想的なボリュームの実体となりうるストレージ装置1500のボリュームの識別子が入る。なお、個々の識別子はI/Oパスマネージャー5000の下位レイヤであるHBAデバイスドライバー5010が割り当てた識別子を用いる。本実施の形態においては、正系の仮想化ストレージ装置1000(1000L)が有するボリュームと副系の仮想化ストレージ装置1000(1000R)が有するボリュームの識別子がリストアップされる(通常状態ならば)。
(C)正系ボリューム:(B)でリストアップしたどちらのボリュームが正系かを示す。
(D)障害状態
(E)ペア状態
なお、ファイルシステム5020の視点からは(A)の識別子も(B)の識別子も同様の扱いとするため、(A)や(B)の識別子はそれぞれ重複が許されない。また(A)と(B)をあわせた場合にも重複が許されないため、I/Oパスマネージャー5000はその点を考慮して(A)の識別子を生成する必要がある。
<7.初期化処理>
図9は、I/Oパスマネージャー5000の初期化処理について記したフローチャートである。以下、このフローチャートを参照して、かかる初期化処理について説明する。なお、以下においては各種処理の処理主体を「I/Oパスマネージャー5000」として説明する場合があるが、実際上は、ホスト1100のプロセッサ1101(図1)が「I/Oパスマネージャー5000」というプログラムに基づいて対応する処理を実行することは言うまでもない。
(S9001)I/Oパスマネージャー5000は、管理ホスト1200やホスト1100のユーザーからの以下の情報を含んだ初期化指示を受信する。尚、二重化システムの初期化処理として、HA(ハイ アベイラビリティ)初期化指示ともいう。
(A)正系の仮想化ストレージ装置1000とその中のボリューム
(B)副系の仮想化ストレージ装置1000とその中のボリューム
(S9002)I/Oパスマネージャー5000は、S9001で指示された仮想化ストレージ装置1000の両方と通信をしてボリュームの存在の有無及び容量を取得する。
(S9003)I/Oパスマネージャー5000は、S9001で指定されたボリュームが存在し、同容量であることを確認する。確認できない場合は、I/Oパスマネージャー5000は指示発信元へエラーを返す。
(S9004)I/Oパスマネージャー5000は、仮想化ストレージ装置1000の一つ又は両方に対して、リモートコピー初期化指示を送信する。この初期化指示には正系のボリュームをコピー元ボリューム、副系のボリュームをコピー先ボリュームとして指示を出す。本指示によって仮想化ストレージ装置1000はリモートコピーを開始する。
(S9005)I/Oパスマネージャー5000は、デバイス関係テーブル5001に以下の情報を登録し、その後初期化指示の発信元へ初期化開始応答を返す。
(A)ホスト1100内で仮想的なボリュームの識別子(=I/Oパスマネージャー5000が作成した値)
(B)関係ボリューム識別子リスト(=S9001で指定された仮想化ストレージ装置1000とボリュームに対応する識別子が二つ(正系及び副系の両方))。
(C)正系ボリューム(=S9001で指定された正系ボリューム)の識別子
(D)障害状態(=副系準備中)
(E)ペア状態(=Initial−Copying)
(S9006)I/Oパスマネージャー5000は、リモートコピーのペア状態を監視し、Duplex状態に遷移したらデバイス関係テーブル5001を以下の情報に更新する。
(D)障害状態(=通常状態)
(E)ペア状態(=Duplex)
以上の処理によって、I/Oパスマネージャー5000は、ユーザー指示に応じてリモートコピーの設定を含めた高可用化のための準備を開始することができる。なお、実際にはS9005の直後にI/Oパスマネージャー5000がホスト1100内で仮想的なボリュームを提供できるため、ファイル形式でアクセスしたいユーザーは当該ボリュームに対するマウント指示等を出して、ファイルI/Oを開始することができる。また、別な方法としてI/Oパスマネージャー5000はリモートコピー設定前に既に高可用化すべきボリュームに対応するホスト1100内で仮想的なボリュームを定義し、ファイルシステム5020も当該ボリュームをマウントした状態から、ユーザーが副系となるボリュームを指定することによって上記の処理を開始してもよい。
<8.ライトリクエスト処理フロー>
図10は、I/Oパスマネージャー5000がファイルシステム5020からライトリクエストを受信した時の処理フローを示した図である。
(S10001)I/Oパスマネージャー5000は、ファイルシステム5020より、ライト先となるホスト1100内の仮想的なボリュームの識別子と、当該ボリュームのライト位置と、ライト長とを含むライトリクエスト関数を呼び出される(又はメッセージを受信する)。
(S10002)I/Oパスマネージャー5000は、当該仮想的なボリュームの障害状態を確認し、リモートコピー失敗状態ならばS10020の両書き処理に制御を移し、それ以外ならばS10003を実行する。
(S10003)I/Oパスマネージャー5000は、正系ボリュームに対してライトリクエストを発行する。なお、当該ライトリクエストの発行は実際は下位レイヤのHBAデバイスドライバー5010を呼び出すことで実現する。
(S10004)I/Oパスマネージャー5000は、ライトリクエストの応答を確認し、正常終了ならばファイルシステム5020に対して完了応答を返し、リモートコピー失敗ならS10020の両書き処理に制御を移し、無応答など、これ以外の場合はS10010の切り替え処理に制御を移す。
なお、S10020の両書き処理は以下のステップで実行される。
(S10021)リモートコピーの設定によって、正系又は副系のボリュームに対するライトが拒否されている場合は、I/Oパスマネージャー5000はこの設定を解除する。
(S10022)I/Oパスマネージャー5000は、正系ボリュームに対してライトリクエストを発行する。
(S10023)I/Oパスマネージャー5000は、副系ボリュームに対してライトリクエストを発行する。I/Oパスマネージャー5000は、正系と副系の両方からのライトリクエスト応答の到着を待って、ファイルシステム5020に対して完了応答を返す。
<8.1.切り替え処理のフロー>
以下、引き続き切り替え処理にて実現される処理を説明する。
(S10011)I/Oパスマネージャー5000は、まず、デバイス関係テーブル5001の障害状態を参照することで副系ボリュームが使用可能であるか確認し、使用不可能だと判断した場合はファイルシステム5020に対してエラー応答を返し、利用可能であればS10012を実行する。なお、使用不可能と判断できる状態としては、副系なし(障害によって副系の仮想化ストレージ装置1000が機能してない場合や、初めから副系の仮想化ストレージ装置1000を設定していないボリュームの場合)の状態や、前述の初期化準備中の状態がある。
(S10012)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000に対してリモートコピーの停止指示を発行し、コピー状態がSuspend状態となったことを確認後、コピー方向反転指示を指示する。
(S10013)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000に対してリモートコピーの再同期指示を発行する。なお、実際に再同期が完了してペア状態がDuplex状態に遷移するまで待つ必要はない。
(S10014)I/Oパスマネージャー5000は、デバイス関係テーブル5001の正系ボリューム識別子をこれまで副系であったボリューム識別子に更新し、正系と副系を入れ替える。そして新たに正系となったボリュームに対してライトリクエストを、HBAデバイスドライバー5010を通じて送信する。
(S10015)I/Oパスマネージャー5000は、ライトリクエストの応答を確認し、正常終了ならばファイルシステム5020に対して完了応答を返し、エラーならばエラー応答を返して終了する。
<8.1.1.両書き処理中のライトリクエスト失敗への対策>
S10020の両書き処理中にS10022の正系ボリュームに対するライトリクエストが失敗に終わった場合は、S10010の切り替え処理に制御を移すことが考えられる。また、S10023の副系ボリュームに対するライトリクエストが失敗に終わった場合は、デバイス関係テーブル5001の障害状態を'副系なし'に変更し、ライト完了とする。
また、両書き処理中はペア状態が障害Suspend状態であるため、仮想化ストレージ装置1000のボリュームにはリモートコピーの差分ビットマップによってライト位置が記される。しかし、両書き処理によって両ボリュームに書かれるライトデータは同一であるため、両書き処理が正常に行われている間はこの差分ビットマップへの記録を回避し、通信障害回復後の再同期処理では差分データだけコピーできるようにすることが望ましい。その解決策として、両書き処理が正常に行われている間は正系と副系両方の仮想化ストレージ装置1000の当該ボリュームの差分ビットマップを一定時間ごとに繰り返しクリアすることが考えられる。この方式ではクリア指示をライトリクエスト毎に発行する必要がなく、かつリモートコピーの再同期では対象ボリュームの全領域コピーは回避できる。なぜならば、直近に実施したクリア以後に行われた両書きのライトリクエストは両書きが失敗したライトリクエストと共にライト位置が差分ビットマップに記録されるが、両書きにて記録されたデータ領域が再同期でコピーされた場合もコピー先のデータ内容が変わらないため、データ不整合やコピー漏れ領域が発生しないからである。
なお、上記解決策では正系と副系両方の差分ビットマップをクリアするために一時的にライトリクエストの処理を停止してもよい。その停止方法としてはI/Oパスマネージャー5000がファイルシステム5020から受け取ったライトリクエストを、両方の差分ビットマップのクリアが完了するまで、仮想化ストレージ装置1000へ転送しない方法が考えられるし、正系の仮想化ストレージ装置1000にて、両方の差分ビットマップのクリアが完了するまでライトリクエストの処理を保留する方法も考えられる。
第2の回避策としては、正系と副系のボリュームに対してそれぞれ2面の差分ビットマップを割り当てる方式がある。以下にその処理内容を示す。
(初期状態)正系と副系の仮想化ストレージ装置1000は、それぞれ2面の差分ビットマップの片面に対してライトリクエストの位置を記録する。そのために、両仮想化ストレージ装置1000は、アクティブ面(ライトリクエスト到着時にライト位置を記録する面を指し、もう一面の差分ビットマップは非アクティブ面と呼ぶ)に関する情報を保持・管理する。また、非アクティブ面の差分ビットマップは何も記録されていない状態が望ましい。
(Step1)正系の仮想化ストレージ装置1000は、アクティブ面の管理情報を非アクティブ面になっていたもう一つの差分ビットマップへ更新することで、ライトリクエストの位置の記録先となる差分ビットマップを切り替え、以後のライトリクエストは切り替え後の差分ビットマップへ記録する。副系の仮想化ストレージ装置1000も同様に切り替える。なお、当該切り替え処理開始の契機はI/Oパスマネージャー5000が両仮想化ストレージ装置1000へ与える。なお、正系と副系の切り替え処理はどちらが先に実行してもよく、並列に実行してもよい。
(Step2)I/Oパスマネージャー5000は、両仮想化ストレージ装置1000からの切り替え完了の応答を待ってから、両仮想化ストレージ装置1000に対して差分ビットマップのクリア指示を出す。クリア指示を受信した仮想化ストレージ装置1000は、非アクティブ面となっている差分ビットマップのライト位置をクリアし、I/Oパスマネージャー5000へ応答を返す。切り替え処理と同様に、正系と副系のクリア処理はどちらが先に実行してもよく、並列に実行してもよい。
(Step3)I/Oパスマネージャー5000は、両仮想化ストレージ装置1000からのクリア完了の応答を待ち、時間経過後にStep1から再度実行する。
本解決策の場合、通信障害回復後の再同期処理では、正系と副系のビットマップ4面の論理和を計算することで、Duplex‐Pending状態中に差分コピーを行う領域を決定することができる。また本方式ではビットマップの面数が多いものの、ライトリクエストの保留は必要ない。
第3の解決策としては、上記第2の解決策の変形の以下の方式がある。
(初期状態)正系及び副系の仮想化ストレージ装置1000は、それぞれ2面の差分ビットマップの両面に対してライトリクエストの位置を記録する。また、両仮想化ストレージ装置1000は前回クリアを行った差分ビットマップ面に関する情報を保持・管理しておく。
(Step1)I/Oパスマネージャー5000は、両仮想化ストレージ装置1000に対して差分ビットマップのクリア指示を出す。クリア指示を受信した仮想化ストレージ装置1000は、前回クリアした差分ビットマップでないもう一つの差分ビットマップのライト位置をクリアし、I/Oパスマネージャーへ応答を返す。
(Step3)I/Oパスマネージャー5000は、両仮想化ストレージ装置1000からのクリア完了の応答を待ち、時間経過後にStep1から再度実行する。
<9.リードリクエスト処理フロー>
図11はI/Oパスマネージャー5000がファイルシステム5020からリードリクエストを受信したときの処理内容を示すフローチャートである。
(S11001)I/Oパスマネージャー5000は、ファイルシステム5020より、リード先となるホスト内の仮想的なボリュームの識別子と、当該ボリュームのライト位置と、ライト長とを含むライトリードリクエスト関数を呼び出される(又はメッセージを受信する)。
(S11002)I/Oパスマネージャー5000は、当該仮想的なボリュームの障害状態を確認し、通常状態でかつ正系ボリュームに対するI/O負荷が高い場合(たとえば、一定IOPSを超える場合や一定帯域を超える場合等)と判断したときにはS11021を実行し、それ以外の状態(副系なし、副系準備中、通常状態等)のときにはS11003を実行する。
(S11003)I/Oパスマネージャー5000は、正系ボリュームに対してリードリクエストを発行する。
(S11004)I/Oパスマネージャー5000は、リードリクエストの応答を確認し、正常終了ならばファイルシステム5020に対して完了応答を返し、それ以外ならばS11010の切り替え処理に制御を移す。
(S11021)I/Oパスマネージャー5000は、副系ボリュームに対してリードリクエストを発行する。
(S11022)I/Oパスマネージャー5000は、リードリクエストの応答を確認し、正常終了ならばファイルシステム5020に対して完了応答を返し、それ以外ならばS11023を実行する。
(S11023)I/Oパスマネージャー5000は、デバイス関係テーブル5001の障害状態を'副系なし'に更新し、S11003を実行する。
<9.1.切り替え処理のフロー>
以下、引き続き切り替え処理にて実現される処理を説明する。
(S11011)I/Oパスマネージャー5000は、まず、デバイス関係テーブル5001の障害状態を参照することで副系ボリュームが使用可能であるか確認し、使用不可能だと判断した場合はファイルシステム5020に対してエラー応答を返し、利用可能だと判断した場合はS11012を実行する。なお、使用不可能と判断できる状態としては、副系なし(障害によって副系の仮想化ストレージ装置1000が機能してない場合や、初めから副系の仮想化ストレージ装置1000を設定していないボリュームの場合)の状態や、前述の初期化準備中の状態がある。
(S10012)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000に対してリモートコピーの停止指示を発行し、コピー状態がSuspend状態となったことを確認後、コピー方向反転指示を指示する。
(S10013)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000に対してリモートコピーの再同期指示を発行する。なお、実際に再同期が完了してペア状態がDuplex状態に遷移するまで待つ必要はない。
(S10014)I/Oパスマネージャー5000は、デバイス関係テーブル5001の正系ボリューム識別子をこれまで副系であったボリュームの識別子に更新し、正系と副系を入れ替える。そして新たに正系となったボリュームに対してリードリクエストを、HBAデバイスドライバー5010を通じて送信する。
(S10015)I/Oパスマネージャー5000は、リードリクエストの応答を確認し、正常終了ならばファイルシステム5020に対して完了応答を返し、エラーならばエラー応答を返して終了する。
<10.障害対策処理フロー>
本章では、I/Oパスマネージャー5000が障害を検知してから回復を完了するまでの処理の流れを説明する。なお、本処理は定期的にバックグラウンドで実行される。
<10.1.仮想化ストレージ装置1000間のネットワーク障害>
(Step1)I/Oパスマネージャー5000は、リモートコピーのペア状態を監視し、障害Suspend状態を発見することで何らかの障害発生を検知する。
(Step2)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000に対してリモートコピーの停止指示を発行し、コピー状態がSuspend状態となった事を確認後、コピー方向を反転し、各仮想化ストレージ装置1000に対して状態問い合わせを行い、仮想化ストレージ装置1000自体に障害が発生しておらず、ネットワーク障害が原因であることを確認したら、デバイス関係テーブル5001の障害状態を'リモートコピー失敗'に更新する。なお、本処理はストレージ管理者が行った作業結果を利用してもよい。
(Step3)当該ネットワークが回復するまで待つ。
(Step4)I/Oパスマネージャー5000は、正系の仮想化ストレージ装置1000に対してペアの再同期指示を発行する。
(Step5)I/Oパスマネージャー5000は、デバイス関係テーブル5001の障害状態を'副系準備中'に更新する。
(Step6)I/Oパスマネージャー5000は、ペア状態がDuplexになるまで待った後に、デバイス関係テーブル5001の障害状態を'通常状態'に更新する。
<10.2.正系仮想化ストレージ装置1000の障害停止>
(Step1)I/Oパスマネージャー5000は、正系の仮想化ストレージ装置1000の状態を監視することで障害発生を検知する。
(Step2)I/Oパスマネージャー5000は、デバイス関係テーブル5001の正系ボリュームの識別子を副系ボリュームの識別子に変更することで以後のI/Oリクエスト先を副系の仮想化ストレージ装置1000に切り替え、さらに障害状態を'副系なし'に更新する。
(Step3)I/Oパスマネージャー5000は、旧正系(Step2にて切り替えたので現副系)の仮想化ストレージ装置1000が回復するまで待つ。
(Step4)I/Oパスマネージャー5000は、正系の仮想化ストレージ装置1000に対してペアの再同期指示又は初期化指示を発行する。
(Step5)I/Oパスマネージャー5000は、デバイス関係テーブル5001の障害状態を'副系準備中'に更新する。
(Step6)I/Oパスマネージャー5000は、ペア状態がDuplexになるまで待った後に、デバイス関係テーブル5001の障害状態を'通常状態'に更新する。
<10.3.副系仮想化ストレージ装置1000の障害停止>
(Step1)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000の状態を監視することで障害発生を検知する。
(Step2)I/Oパスマネージャー5000は、デバイス関係テーブル5001の障害状態を'副系なし'に更新する。
(Step3)I/Oパスマネージャー5000は、副系の仮想化ストレージ装置1000が回復するまで待つ。
(Step4)I/Oパスマネージャー5000は、正系の仮想化ストレージ装置1000に対してペアの再同期指示又は初期化指示を発行する。
(Step5)I/Oパスマネージャー5000は、デバイス関係テーブル5001の障害状態を'副系準備中'に更新する。
(Step6)I/Oパスマネージャー5000は、ペア状態がDuplexになるまで待った後に、デバイス関係テーブル5001の障害状態を'通常状態'に更新する。
<11.もう一つの初期化方法>
これまでの説明では、I/Oパスマネージャー5000に出された初期化要求に応じて仮想化ストレージ装置1000にリモートコピーの設定を行ったが、以下に示す逆の方法も考えられる。
(Step1)管理ホスト1200は、仮想化ストレージ装置1000に対してリモートコピーのペア初期化指示を出することで、リモートコピーを開始する。
(Step2)I/Oパスマネージャー5000は、スキャニング要求を受信する。
(Step3)I/Oパスマネージャー5000は、HBAデバイスドライバー5010を通じて各ボリュームに対するリモートコピーの設定(リモートコピー設定の有無やコピー元かコピー先か、ペアの相手となる仮想化ストレージ装置1000とボリューム)を取得する。なお、この取得方法としてI/Oネットワーク上でSCSIコマンドを使うことも考えられるし、それ以外の通信ネットワークを用いて情報を取得してもよい。
(Step4)I/Oパスマネージャー5000は、前ステップで取得した情報を元に、デバイス関係テーブル5001を作成し、これまで説明してきた処理を開始する。なお、当該デバイス関係テーブル5001の作成例としては以下がある。
(A)ホスト1100内で仮想的なボリュームの識別子=I/Oパスマネージャー5000が作成した値
(B)関係ボリューム識別子リスト=リモートコピーのコピー元ボリュームとコピー先ボリュームの識別子
(C)正系ボリューム=リモートコピーのコピー元ボリューム
(D)障害状態=仮想化ストレージ装置1000から取得したペア状態がDuplex状態ならば'通常状態'、Initial‐Copying又はDuplex‐Pending状態ならば'副系準備中'、Suspend又は障害Suspend状態ならば'リモートコピー失敗'
(E)ペア状態=仮想化ストレージ装置1000から取得したペア状態
以上、これまで説明したハードウェア及びプログラムの動作によって本実施の形態では高可用性を実現する。なお、図10と図11等に記した切り替え処理に長時間要する場合の対策として、I/Oパスマネージャー5000がI/Oリクエストを再送信する必要が出てきた場合に、予備処理として前記切り替え処理の一部を実行してもよい。この場合、再送信したI/Oリクエストが正常応答で返ってきた場合は先行して行った切り替え処理を元に戻せば良く、一方で再送信したI/Oリクエストがエラー応答で返ってきたり、まったく応答がなければ前記切り替え処理の残り部分を実行すればよい。また、本実施の形態は全てのボリュームが仮想化ストレージ装置1000によって仮想化され、実体がストレージ装置1500にある仮想ボリュームで、仮想化ストレージ装置1000は仮想化専用のアプライアンスであってもよく、またその逆に全てのボリュームの実体が仮想化ストレージ装置1000の内部にある構成であってもよい。また、仮想化ストレージ装置1000が提供するボリュームには容量以外にもさまざまな属性が設定されることがある(たとえば、エミュレーションタイプやSCSI規格で定められたInquiryコマンドで取得可能なボリューム識別番号がある)。
こうした属性情報や属性変更もリモートコピーによって正系の仮想化ストレージ装置から副系の仮想化ストレージ装置へ転送し、両方の仮想化ストレージ装置にて管理することも考えられる。
<12.もう一つのリード・ライト処理>
図10や図11に記したライト・リード処理では、I/Oパスマネージャー5000が明示的にリモートコピーの操作を仮想化ストレージ装置1000へ転送する。しかし、当該リモートコピーの操作が仮想化ストレージ装置1000のベンダー毎に異なる場合があるため、I/Oパスマネージャー5000のライト処理やリード処理に含めないほうが好ましい場合がある。図25〜図27にこうした形態での処理内容を示す。なお、以下においては各種処理の処理主体を「仮想化ストレージ装置1000」として説明する場合があるが、実際上は、その仮想化ストレージ装置1000内のプロセッサ1011(図1)がメモリ1012(図1)に格納されたプログラムに基づいて対応する処理を実行することは言うまでもない。
<12.1.I/Oパスマネージャーのライト処理>
図25は、I/Oパスマネージャー5000で実行される図10の大体処理を示したフローチャートである。以下の点が図10と異なる。
(相違点1)リモートコピーの操作S10012、S10013,S10021がスキップされる。
(相違点2)リモートコピー失敗時のフローS10020に到達しない。ただし、本相違点は通常のリード/ライト処理ではリモートコピー失敗を意味するエラーメッセージを識別できない場合に限った話である。
<12.2.ストレージ装置1000の処理>
図27は、仮想化ストレージ装置1000がライトリクエストを受信した時に行うリモートコピーの操作について示した図である。
(S27001)仮想化ストレージ装置1000は、ライトリクエストを受信する。
(S27002)仮想化ストレージ装置1000は、ライトリクエストが対象とするボリュームがリモートコピーに関係するかどうか判断し、無関係の場合はS27003を実行し、関係する場合はS27004を実行する。
(S27003)仮想化ストレージ装置1000は、通常のライト処理を行い、ホスト1100へ応答を返して終了する。
(S27004)仮想化ストレージ装置1000は、ライトリクエストが対象とするボリュームのリモートコピーの属性を判断し、コピー元属性の場合はS27005を実行し、コピー先属性の場合はS27011を実行する。
(S27005)仮想化ストレージ装置1000は、同期リモートコピー処理を実行し、副系ストレージへライトデータを転送し、応答を待つ。
(S27006)仮想化ストレージ装置1000は、コピーが成功したかどうか判断し、成功ならばS27008を実行し、失敗ならばS27007を実行する。
(S27007)仮想化ストレージ装置1000は、対象ボリュームがコピー元となるリモートコピーペアの状態を障害Suspend状態に遷移する。ただし、当該ボリュームに対するライトは禁止しない。
(S27008)仮想化ストレージ装置1000は、通常のライト処理を行い、ホスト1100へ応答を返して終了する。
(S27011)仮想化ストレージ装置1000は、リモートコピーを停止し、コピー元とコピー先の関係を反転する。
(S27012)仮想化ストレージ装置1000は、再同期処理を開始する。
(S27013)仮想化ストレージ装置1000は、通常のライト処理を行い、ホスト1100へ応答を返して終了する。
なお、S27012の再同期処理は完了まで待たなくても良い。なぜならば、S27012を実行する仮想化ストレージ装置1000は副系であり、正系の仮想化ストレージ装置1000が正常動作しているとは限らないこと、及び再同期処理が完了するまでの時間が長いことが考えられるからである。なお、こうしたケースは<10.障害対策処理フロー>で述べた処理によって回復される点はこれまでと同じである。
<12.3.I/Oパスマネージャーのリード処理>
図26は、I/Oパスマネージャー5000で実行される図11の大体処理を示したフローチャートである。以下の点が図11と異なる。
(相違点1)リモートコピーの操作S11012、S11013がスキップされる。
なお、図11ではリード処理に応じてリモートコピーの向きが反転したが、本処理では反転させない。なぜならば、副系の仮想化ストレージ装置1000に対するリードリクエストは正系の仮想化ストレージ装置1000が(ホスト=仮想化ストレージ装置間の通信障害による原因を含めて)応答を返さない場合に加えて、正系の仮想化ストレージ装置1000の過負荷が原因の場合もあるからである。そのため、副系の仮想化ストレージ装置1000がコピー先ボリュームに対するリードリクエストを契機としてリモートコピーのペア反転を行うと、たまたま副系の仮想化ストレージ装置1000に出されたリードリクエストでペアが反転し、その次のリードリクエストで再びペアが反転してしまうため、リード性能が悪化する結果となるからである。
ただし、S11021の実行が抑制される場合は、仮想化ストレージ装置1000はリード処理に際して以下の処理を行うことでリモートコピーのペア反転を行っても良い。
(Step1)仮想化ストレージ装置1000は、リードリクエストを受信する。
(Step2)仮想化ストレージ装置1000は、通常のリード処理を行う。
(Step3)仮想化ストレージ装置1000は、リード対象のボリュームがリモートコピーのコピー先ボリュームであるかどうかを判断し、該当する場合は次のStep4を実行し、そうでない場合は終了する。
(Step4)仮想化ストレージ装置1000は、リモートコピーを停止し、コピー元とコピー先の関係を反転する。
(2)第2の実施の形態
次に第2の実施の形態について図12を用いて説明する。第1の実施の形態と異なる点は、ストレージ装置1500Lが複数の仮想化ストレージ装置1000L,1000Rに接続され、これら仮想化ストレージ装置1000L,1000Rがストレージ装置1500L内のボリュームを共有することによって、仮想化ストレージ装置1000L,1000Rの片方が停止した場合でも第1の実施の形態よりも低コストでサービスが継続できるようになる点である。
ただし、仮想化ストレージ装置1000L,1000Rはキャッシュメモリ1020L,1020Rを有するため、仮想化ボリュームに対してライトデータを書き込んだ直後に正系の仮想化ストレージ装置1000Lが災害停止した場合に備えて、ライトデータを副系の仮想化ストレージ装置1000Rのキャッシュメモリ1020Rにも保存する必要があり、また両方の仮想化ストレージ装置1000L,1000Rのデステージングやステージングに対して工夫が必要となる。
通常状態におけるライトリクエストは以下のステップにて処理される。
(Step1)ホスト1100からライトリクエストを受信した正系の仮想化ストレージ装置1000Lは当該ライトリクエストが当該仮想化ストレージ装置1000L内部のHDD1030に対応するボリューム3000LA宛なのか、両方の仮想化ストレージ装置1000L,1000Rがストレージ装置1500Lのボリューム3500Lを共有して提供する仮想化ボリューム(以後、共有仮想化ボリュームと呼ぶ)3000LB宛なのか、通常の仮想化ボリューム宛なのかを判断する。なお、共有仮想化ボリューム3000LB以外の処理については第1の実施の形態と同様の処理を行う。
(Step2)正系の仮想化ストレージ装置1000Lは自身のキャッシュメモリ1020Lに当該ライトデータを保存すると共に、当該ライトデータをリモートコピープログラムによって副系の仮想化ストレージ装置1000Rのキャッシュメモリ1020Rに保存した後に、ホスト1100に対して正常応答を返す。
(Step3)正系の仮想化ストレージ装置1000Lのキャッシングアルゴリズムがステージすべきキャッシュメモリ1020L上のデータを決定し、当該データをストレージ装置1500Lのボリュームにデステージする。
(Step4)デステージ完了後、正系の仮想化ストレージ装置1000Lはデステージしたキャッシュメモリ1020L上のデータのアドレスを破棄するように副系の仮想化ストレージ装置1000Rに指示する。なお、指示を受けた副系の仮想化ストレージ装置1000Rは指示を受けたデータをキャッシュメモリ1020Rから破棄する。
なお、本構成では仮想化ストレージ装置1000L,1000R間のネットワークが切断された状態で副系の仮想化ストレージ装置1000RにI/Oリクエストの切り替えを行った場合、仮想化ストレージ装置1000L,1000Rの両方が正系として自立的にデステージングを行う場合がある。そういった状況を回避するため、両仮想化ストレージ装置1000L,1000Rは自らを正系として処理する場合は先にストレージ装置1500L内のかかる共有化されたボリューム3500Lに対してSCSI Reserve等の機能を用いて排他制御を行ってもよい。また、これ以外の方式として共有仮想化ボリューム3000LBについては仮想化ストレージ装置1000Lのキャッシングを無効化してもよく、この場合は当該共有仮想ボリューム3000LBのアクセス権限がリードオンリーのアクセス権限へ変更された場合は当該変更に応じてキャッシングを有効にすることが考えられる。
(3)第3の実施の形態
次に第3の実施の形態について図13を用いて説明する。本実施の形態はこれまでの実施の形態に記した情報システムをこれまでのプロダクションサイトと異なる遠隔地(バックアップサイト)に別途用意し、リモートコピーを行うもので、これによりプロダクションサイト被災時にバックアップサイトでサービスを再開することができる。
なお、これ以後の説明では、上述の「仮想化ストレージ装置」をストレージ装置と、「コピー元ボリューム」を正ボリュームと、「コピー先ボリューム」を副ボリュームと、「正系」をアクティブ側と、「副系」をスタンバイ側と呼ぶことがある。また、プロダクションサイトとバックアップサイトの情報システムをあわせてリモートコピーシステムと呼ぶことがある。
<1.リモートコピーシステムの構成>
本実施の形態では、各サイトはホスト13010,13020と複数のストレージサブシステム13001,13002,13003,13004とから構成されている。そしてプロダクションサイトでは、ストレージサブシステム13001,13002同士でこれまで説明してきた高可用化構成を採用している。またバックアップサイトでも同様に、ストレージサブシステム13003,13004同士でかかる高可用化構成を採用している。
さらに本実施の形態では、プロダクションサイトのアクティブ側のストレージサブシステム(コピー元ボリュームを持つ)13001からバックアップサイトのアクティブ側のストレージサブシステム(コピー先ボリュームを持つ)13003に対して同期又は非同期リモートコピーを行う。そしてプロダクションサイト被災時にはバックアップサイトのホスト13010が高可用構成のストレージサブシステム13003,13004のいずれかアクティブな側に対してI/Oリクエストを発行することで、再起動したアプリケーション2010が処理を再開する。
なお、前述の通り、ストレージサブシステムとは仮想化ストレージ装置1000(図1)の仮想化機能を用いない設定の構成や、仮想化ストレージ装置1000とストレージ装置1500(図1)の組み合わせで仮想化ストレージ装置1000が仮想化機能を用いて仮想化ボリュームを提供している構成のどちらの概念も含んだものとして呼んでいる。また、本実施の形態では個々のストレージサブシステム13001、13002、13003、13004が別々な内部構成(例えば、ストレージサブシステム13001だけ仮想化ストレージ装置1000のみで構成し、仮想化機能を用いない場合や、バックアップサイトのストレージサブシステム13003と13004でストレージ装置1500(図1)を共有し、プロダクションサイト側では共有しない場合)を採用してもよい。
なお、以下においては各種処理の処理主体を「ストレージサブシステム」として説明する場合があるが、実際上は、そのストレージサブシステム内のプロセッサが当該ストレージサブシステム内のメモリに格納されたプログラムに基づいて対応する処理を実行することは言うまでもない。
<2.処理>
プロダクションサイトのホスト13010のアプリケーション2010がライトリクエストを発行すると、OSによってプロダクションサイト内のアクティブ側のストレージサブシステムを判断し、そちらにライトリクエストを転送する。なお、本図ではストレージサブシステム13001がこれに対応する。
プロダクションサイトのアクティブ側のストレージサブシステム13001は同期リモートコピーによってライトデータをプロダクションサイト内のスタンバイ側のストレージサブシステム(本図では13002が対応する)へ転送する。また、アクティブ側のストレージサブシステム13001はバックアップサイトのアクティブ側のストレージサブシステム(本図では13003が対応する)へ向けて同期又は非同期のリモートコピーとしてライトデータを転送する(本実施の形態による高可用構成ではアクティブ側にのみライトリクエストを処理するようにしているため、リモートコピーであっても同様にアクティブ側にて処理を行う)。ライトデータを受信したバックアップサイト内のアクティブ側のストレージサブシステム13003は受け取ったライトデータをサイト内のスタンバイ側のストレージサブシステム13004へ同期リモートコピーによって転送する。
そのため、プロダクションサイトのストレージサブシステム13001,13002はバックアップサイトのアクティブ側のストレージサブシステムを把握しており、バックアップサイトのストレージサブシステム13003,13004も想定外のストレージサブシステムからのリモートコピーを受け付けないために、プロダクションサイトのアクティブなストレージサブシステム(ストレージサブシステム1301)を把握している。
以上の処理によってプロダクションサイト、バックアップサイト共にサイト内の高い可用性を実現している。ただしバックアップサイト側では、コスト削減のために高可用構成をとらない構成であってもよい。
<3.非同期リモートコピー>
これまで説明してきた同期リモートコピーとは異なり、非同期リモートコピーはホスト13010からのライトリクエストが到着した時点でライトデータを転送するのではなく、当該リクエスト完了応答後に転送する(言い方を変えると、非同期リモートコピーはホスト13010へのリクエスト応答とは独立なタイミングでライトデータを転送する)。そのため、非同期リモートコピーはサイト間の距離が長く通信遅延が大きな場合でもライトリクエストの応答時間を低下させずにリモートコピーを行うことができる。しかし、非同期リモートコピーではプロダクションサイト側のストレージサブシステム13001にてライトデータをバッファリングする必要がある。このライトデータのバッファリング方式としては以下が考えられる。
(1)プロダクションサイトのストレージサブシステム13001は、コピー元ボリュームへのライトデータとライトデータの順序情報を含むジャーナルを作成し、これを自身のキャッシュメモリ又は専用ボリュームに保存すると共に、このジャーナルをバックアップサイトのストレージサブシステム13003へ転送し、バックアップサイトのストレージサブシステム13003はジャーナルの順序情報を参考にコピー先ボリュームへライトデータを保存する。これにより、プロダクションサイト災害時にはライト順序が守られた(より正確には依存関係のあるライトデータ)データをバックアップサイト側で提供できる。
(2)プロダクションサイトのストレージサブシステム13001は、ある期間毎のコピー元ボリュームへライトされたデータをグループ化して自身のキャッシュメモリ又は専用ボリュームへ保存し、非同期にバックアップサイトのストレージサブシステム13003へ転送し、当該グループ単位でバックアップサイトのストレージサブシステム13003が有するコピー先ボリュームへデータを保存する。
そのため、これら非同期リモートコピーのためにバッファリングされるライトデータもスタンバイ側のストレージサブシステム13002で保持しなければ、アクティブ側ストレージサブシステム13001が停止したときに非同期リモートコピーを引き継ぐことができない。よって、プロダクションサイトのアクティブ側のストレージサブシステム13001はライトデータだけではなく、コピー先ボリュームの情報や、前述の順序情報や、グループ化するタイミング等をスタンバイ側のストレージサブシステム13002へ伝え、スタンバイ側のストレージサブシステム13002はそれに従ってアクティブ側と同じ非同期リモートコピーのためのバッファリングデータを作成する。
なお、バックアップサイトのストレージサブシステム13003もプロダクションサイトから受け取ったライトデータを直ぐにコピー先ボリュームへ保存せずに、バッファリングを行うため、プロダクションサイト側と同様にアクティブ側の指示に従ってスタンバイ側も同様のバッファリングデータを作成し、また同様のタイミングでコピー先ボリュームにライトデータを保存する必要がある。
(4)第4の実施の形態
次に第4の実施の形態について図14を用いて説明する。本実施の形態では、2台のストレージ装置により先に説明した同期リモートコピーを用いて冗長構成された情報システムにおいて、ストレージ装置が提供する機能を制御するインターフェース(機能I/F)の構成について述べる。
なお、本実施の形態から第14の実施の形態までは、これまで仮想化ストレージ装置1000L,1000R、ストレージ装置1500L,1500Rと呼んでいたコンポーネントを、それぞれストレージ装置15000A,15000B及び外部ストレージ装置16000A,16000Bと呼ぶ。また、以下においては各種処理の処理主体を「ストレージ装置15000A,15000B」や「外部ストレージ装置16000A,16000B」として説明する場合があるが、実際上は、そのストレージ装置15000A,15000B内の図示しないプロセッサやその外部ストレージ装置16000A,16000B内のプロセッサが当該ストレージ装置15000A,15000B又は外部ストレージ装置16000A,16000B内のメモリに格納されたプログラムに基づいて対応する処理を実行することは言うまでもない。
本実施の形態は、ホスト14000からの機能制御要求が、ストレージ装置15000Aに送信された後、ストレージ装置15000Aが機能制御要求をストレージ装置15000Bに転送し、ストレージ装置15000A,15000Bの双方が当該機能制御要求を解釈し実行する例を示している。
コマンドデバイス15002A,コマンドデバイス15002Bはそれぞれストレージ装置15000A、ストレージ装置15000Bが提供する論理ボリュームであり、機能を制御するホスト14000とのインターフェースとなる。なお、本実施の形態ではコマンドデバイス15002Aがアクティブ側と仮定している。
また、同期リモートコピーにより、コマンドデバイス15002Aの内容はコマンドデバイス15002Bの内容と常に一致している。コマンドデバイス15002A、コマンドデバイス15002Bはオペレーティングシステム14001が提供するパス管理機能(I/Oパスマネージャー5000(図1)が提供する機能に相当する)によりひとつのボリューム14004として機能管理プログラム14003に提供される。
論理ボリューム15001A、論理ボリューム15001Bはそれぞれストレージ装置15000A、ストレージ装置15000Bが提供する論理ボリュームであり、機能制御対象の論理ボリュームである。なお、本実施の形態では論理ボリューム15001Aがアクティブ側と仮定している。
また、同期リモートコピーにより、論理ボリューム15001Aの内容は、論理ボリューム15001Bの内容と常に一致している。論理ボリューム15001A、論理ボリューム15001Bはオペレーティングシステム14001が提供するパス管理機能によりひとつのボリューム14005としてアプリケーションプログラム14002に提供される。
なお、ここで説明した機能制御対象の論理ボリュームは複数あってもよい。
機能管理プログラム14003の機能制御要求処理部14005は、ユーザーあるいはホスト14000内の他のプログラムあるいはホスト14000とは別のホスト(管理ホストなど)内のプログラムから、機能制御要求を受け付ける。機能制御要求を受け付けた機能制御要求処理部14005はボリューム14004に対する制御要求の内容をボリューム14004に対してライト/リードする。本実施の形態ではコマンドデバイス15002Aがアクティブ側であるため、ライト/リードはコマンドデバイス15002Aに対して発行される。
コマンドデバイス15002Aに対するライトは機能制御を起動するときに用いられ、コマンドデバイス15002Aに対するリードは機能制御の結果の出力値を得るために用いられる。
機能制御要求処理部14005が受け付ける制御要求には制御対象のストレージ装置15000A,15000Bを一意に識別する情報(装置情報とも呼ぶ)と、制御対象の論理ボリューム15001A,150001Bを一意に識別する情報(ボリューム情報とも呼ぶ)と、機能制御に付随する情報とが含まれる。
ストレージ装置15000Aの制御I/F処理部15003Aはコマンドデバイス15002Aに制御要求がライトされたことを検出する。制御I/F 処理部15003Aは制御要求の装置情報が自ストレージ装置(ストレージ装置15000A)に一致するか判定する(判定100)。本実施の形態ではコマンドデバイス15002Aがアクティブ側なので、判定の結果は「一致する」となる。一致した場合、制御I/F 処理部15003Aはボリューム情報に対応する論理ボリューム15001Aに対して所定の機能制御を実行するよう機能処理部15004Aを呼び出す。具体的な例としては、ストレージ装置15000Aが提供する機能のひとつであるローカルコピー機能(後で説明)のペア状態の参照操作がある。当該操作が論理ボリューム15001Aに対して呼び出された場合、機能処理部15004Aは、ローカルコピー機能の管理情報を参照し、ペア状態を取得した後、制御I/F処理部15003A、コマンドデバイス15002A及びボリューム14004を介して、機能制御要求処理部14005に対して、ペア状態を送信する。
一方、ストレージ装置15000Bの制御I/F 処理部15003Bも同様の処理を行うが、本実施の形態では、コマンドデバイス15002Bはスタンバイ側なので、判定100の結果は「一致しない」となる。この場合、制御I/F 処理部15003Bは同期リモートコピーのペアの管理情報を参照し、ボリューム情報(論理ボリューム15001Aに対応)に対応する自ストレージ装置(ストレージ装置15000B)内の論理ボリューム(論理ボリューム15001Bに対応)を特定する。そして、制御I/F処理部15003Bは論理ボリューム15001Bに対して所定の機能制御を実行するよう機能処理部15004Bを呼び出す。
以上により、ストレージ装置15000Aの論理ボリューム15001A、ストレージ装置15000Bの論理ボリューム15001Bに対して、所定の機能の制御が実行される。
本実施の形態では、ストレージ装置15000A,15000Bが提供するローカルコピー機能のペア状態の参照操作を例にとって説明したが、(1)ローカルコピー機能のその他のペア操作(ペアの作成、ペアの分割等)、(2)ストレージ装置15000A,15000Bが提供するローカルコピー機能の各種ペア操作、(3)ストレージ装置15000A,15000Bが提供する論理ボリューム15001A,15001Bに対するセキュリティ機能(後で説明するLDEVガード機能)の操作、(4)ストレージ装置15000A,15000Bが提供する論理スナップショット機能(後で説明)の操作、等、ストレージ装置15000A,15000Bが提供する各種機能の操作について適用できる。
なお、別な実行形態としては、アクティブ側とスタンバイ側両方のストレージ装置15000A,15000Bに発行すべきコマンドを受けた場合は、アクティブ側のストレージ装置15000Aは受取ったコマンドを処理すると共に、スタンバイ側のストレージ装置15000Bへ転送してコマンド処理をしてもらうことで、ホスト14000からは1回のコマンドで両方のストレージ処理を開始することも考えられる。また、プログラムの状態取得に関するコマンドの場合は、コマンドを受取ったアクティブ側のストレージ装置15000Aがスタンバイ側のストレージ装置15000Bに同じコマンドを転送して状態を取得し、アクティブ側のストレージ装置15000Aが両方の状態を比較した後にコマンド発信元へ状態を返すことも考えられる。
(5)第5の実施の形態
本実施の形態では機能I/Fの別の構成について述べる。図15を用いて本実施の形態の構成を説明する。
本実施の形態の構成は図14とほぼ同様である。図14との違いは、
(1)コマンドデバイス15002A、コマンドデバイス15002Bが同期リモートコピーのペアでない。
(2)機能管理プログラム14003からはコマンドデバイス15002A及びコマンドデバイス15002Bが別々のボリューム14004A、14004Bとして認識されている。
(3)機能制御要求処理部14005は機能制御要求をコマンドデバイス15002A及びコマンドデバイス15002Bに送信する。
という3点である。
本実施の形態では、第4の実施の形態と同様に、機能制御要求処理部14005が受け付ける制御要求には制御対象のストレージ装置15000A,15000Bを一意に識別する情報(装置情報とも呼ぶ)と、制御対象の論理ボリューム15001A,15001Bを一意に識別する情報(ボリューム情報とも呼ぶ)と、機能制御に付随する情報とが含まれる。
本実施の形態では、第4の実施の形態と異なり、前述のように、ユーザーあるいはホスト14000内の他のプログラムあるいはホスト14000とは別のホスト内のプログラムから機能制御要求を受け付けた機能制御要求処理部14005は、両方のコマンドデバイス15002A、15002Bに制御要求を送信する。
なお、機能制御要求処理部14005が装置情報を判定し、コマンドデバイス15002Aに対しては、ボリューム情報として論理ボリューム15001Aを指定し、コマンドデバイス15002Bに対しては、ボリューム情報として論理ボリューム15001Bを指定するように制御要求を書き換えてもよい。
さらにまた、ユーザーあるいはホスト14000内の他のプログラムあるいはホスト14000とは別のホスト内のプログラムがストレージ装置15000A,15000Bを識別し、ストレージ装置15000A、15000Bに対して二重に異なる制御要求を出してもよい。即ち、コマンドデバイス15002Aに対して、論理ボリューム15001Aの制御要求を出し、コマンドデバイス15002Bに対して、論理ボリューム15001Bの制御要求を出す。
(6)第6の実施の形態
本実施の形態では機能I/Fの更に別の構成について述べる。図16を用いて本実施の形態の構成を説明する。
第6の実施の形態は第4の実施の形態とほぼ同様である。第4の実施の形態との違いは以下の点である。
(1)ホスト14000、ストレージ装置15000A、ストレージ装置15000Bは互いにLAN(Local Area Network)のような相互結合網により接続されている。なお、これらはLANにより直結されていてもよいし、スイッチを経由して接続されていてもよい。
(2)コマンドデバイスがない構成であり、3者(ホスト14000、ストレージ装置15000A、ストレージ装置15000B)間の通信はLANを介して行なわれる。
(3)機能制御要求処理部14005はLANを介して、制御要求を制御I/F 処理部15003Aに送信する。
(4)制御要求を受け取った制御I/F 処理部15003AはLANを介して、制御要求を制御I/F 処理部15003Bに送信する。
制御I/F 処理部15003A、15003Bが受け取った制御要求を処理する点は第4の実施の形態と同様であり、第6の実施の形態は第4の実施の形態と同等の機能I/Fを提供することができる。
(7)第7の実施の形態
本実施の形態では機能I/Fの更に別の構成について述べる。図17を用いて本実施の形態の構成を説明する。
第7の実施の形態は第6の実施の形態とほぼ同様である。第6の実施の形態との違いは以下の点である。
(1)機能制御要求処理部14005はLANを介して、制御要求を両方の制御I/F処理部15003A、15003Bに送信する。
(2)制御I/F 処理部15003Aは制御I/F 処理部15003Bに対して、制御要求を送信しない。
制御I/F 処理部15003A、15003Bが受け取った制御要求を処理する点は第6の実施の形態と同様であり、第7の実施の形態は第6の実施の形態と同等の機能I/Fを提供することができる。
(8)第8の実施の形態
本実施の形態では、ストレージ装置内の論理ボリュームに対してセキュリティ機能(LDEVセキュリティ機能)を適用する場合の例を説明する。
図18はLDEVセキュリティ機能の一実施の形態を示したものである。本実施の形態の構成は第4の実施の形態の図14とほぼ同一である。図14と異なる点は論理ボリュームセキュリティ情報15005A、15005Bが追加された点である。論理ボリュームセキュリティ情報15005A、15005Bは、ホスト14000からストレージ装置15000A,15000B内の論理ボリューム15001A,15001Bに対するアクセス制御を行うために用いられる。アクセス制御の例としては、論理ボリューム15001A,15001B内のデータの改ざんを抑止するために論理ボリューム15001A,15001Bに対するライトアクセスを一切禁止する制御がある。また、別の例としては、法令等により一定期間の保存を義務付けられたデータに対して、所定の期間ライトを禁止する機能がある。さらに、別の例としては、機密情報の保護の観点等から特定のホストからのリード/ライトアクセスを禁止する機能がある。
図18のように2台のストレージ構成15000A,15000Bを用いて同期リモートコピーにより冗長化を図った構成においてもLDEVセキュリティ機能を適用したい場合が考えられる。この場合においても第4の実施の形態で説明した機能I/Fを用いてLDEVセキュリティ機能を制御することができる。具体的には、機能処理部15004において、対象ボリュームに対するセキュリティ情報を格納する論理ボリュームセキュリティ情報15005A、15005Bに、LDEVセキュリティに関するパラメータを設定したり、参照したりすればよい。
(9)第9の実施の形態
本実施の形態では、ストレージ装置内の論理ボリュームにローカルコピー機能を適用した場合の例を説明する。
ローカルコピー機能とは、ユーザーから指定されたボリュームの複製を、コピー元ボリュームと同じストレージ装置内において作成する機能である。本機能を用いて作成されたボリュームの複製はデータマイニングやテープバックアップのためにホストがアクセスを行ったり、あるいはバックアップデータとして長時間保存される。ローカルコピー機能は複製を作成したいボリュームと複製先ボリュームをペア(コピーペア)として指定し、そのペアに対してユーザーが操作を行うことでユーザーは複製を作成する。以後の説明では複製対象ボリュームを正ボリュームと呼び、複製先ボリュームを副ボリュームと呼ぶことがある。本実施の形態ではこのローカルコピー機能についてもアクティブ側のストレージとスタンバイ側のストレージで連携することで可用性を向上させる。
図19はローカルコピー機能の一実施の形態を示したものである。図19においては、ホスト14000はストレージ装置15000Aとストレージ装置15000Bに接続されている。また、ストレージ装置15000Aは外部ストレージ装置16000Aと接続され、ストレージ装置15000Bは外部ストレージ装置16000Bと接続されている。また、ローカルコピー機能及び差分ビットマップ(正ボリューム15006A,15006Bと副ボリューム15007A,15007Bの間の差分の有無を示す情報)がストレージ装置15000Aとストレージ装置15000Bにて実行及び管理される。
本実施の形態は正ボリューム15006A,15006Bがストレージ装置15000A,15000B内にあり、副ボリューム15007A,15007Bが外部ストレージ装置16000A,16000B内にある構成例を示している。正ボリューム15006Aと副ボリューム15007Aはペアであり、副ボリューム15007Aの実体は外部ボリューム16001A内にある。同様に、正ボリューム15006Bと副ボリューム15007Bはペアであり、副ボリューム15007Bの実体は外部ボリューム16001B内にある。
<Duplex状態における動作>
Duplex状態とはペア状態のひとつで正ボリューム15006A,15006Bから副ボリューム15007A,15007Bへ後述するバックグラウンドコピーが行われている状態である。
以下ではDuplex状態におけるリード/ライト処理について述べる。なお、以下のリード/ライト処理の説明は、リード/ライト処理の対象ボリューム(正ボリューム15006A,15006B)のアクティブ側がストレージ装置15000Aであるという前提である。
まずリード処理について説明する。アプリケーションプログラム14002からリード要求を受け付けたオペレーティングシステム14001はパス管理機能により、(リード対象の正ボリュームに関して)アクティブ側のストレージがストレージ装置15000Aとストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにリード要求を発行する。リード要求を受信したストレージ装置15000Aはリード対象データをホスト14000に送信する。アプリケーション14002はオペレーティングシステム14001を介してリード対象データを受信する。以上によりリード処理は完了する。
次にライト処理について説明する。アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能により、(リード対象の正ボリュームに関して)アクティブ側のストレージ装置がストレージ装置15000Aとストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにライトリクエストを発行する。ライトリクエストを受信したストレージ装置15000Aは、ライトデータを受信し、図示しないキャッシュメモリにライトデータを格納すると共にライトデータに対応する差分ビットマップのビットを1(オン)に設定する。
その後、当該ライトデータはリモートコピー機能により、ストレージ装置15000A内のキャッシュメモリからストレージ装置15000B内の正ボリューム15006Bにコピー(同期リモートコピー)する。なお、同期リモートコピーの方法はこれまで説明した通りである。同期リモートコピーによりストレージ装置15000Aからライトデータを受信したストレージ装置15000Bは、図示しないキャッシュメモリにライトデータを格納すると共にライトデータに対応する差分ビットマップのビットを1(オン)に設定する。その後、ストレージ装置15000Bはストレージ装置15000Aに対してライト完了報告に送信し、ライト完了報告を受信したストレージ装置15000Aはホスト14000に対してライト完了報告を送信する。
なお、ストレージ装置15000Aの正ボリューム15006A、ストレージ装置15000Bの正ボリューム15006Bにライトされたデータは、正ボリューム15006A,15006Bへのライトとは非同期に副ボリューム15007A,15007Bへコピーされる(以後、本処理をバックグラウンドコピー処理と呼ぶ)。バックグラウンドコピーは、差分ビットマップ定期的に監視し、差分あり(すなわちビットがオン)と記録された領域のデータを正ボリューム15006A,15006Bから副ボリューム15007A,15007Bへコピーし、コピーが終了したらビットをクリア(オフ又は0に)することにより行なわれる。
一方、スタンバイ側のストレージ装置15000Bも同期リモートコピーによってライトデータが到着した時点を契機として同様の処理を行う。
なお、本発明は上記例以外の構成、たとえば正ボリューム15006A,15006Bは外部ストレージ装置16000A内にあってもよいし、ストレージ装置15000A,15000B内にあってもよい。副ボリューム15007A,15007Bもまた、外部ストレージ装置16000A内にあってもよいし、ストレージ装置15000A,15000B内にあってもよい。
何らかの障害が発生し、アクティブ側の正ボリューム15006Aに対するI/Oリクエストが処理できなくなった場合には、すでに説明した通り、オペレーティングシステム14001は、I/Oリクエストの対象を正ボリューム15006Bに切り替えてアクセスを継続する。この場合でも、ストレージ装置15000B内にはローカルコピー機能のペアが存在するため、副ボリューム15007Bを用いて先に述べたバックアップ等の処理を行なうことができる。
<ペアSplitとSplit状態の動作>
Split状態とはペア状態のひとつで、副ボリュームのイメージが確定した状態のことを指す。この状態では、正ボリュームと副ボリュームの内容が一致しておらず、正ボリュームと副ボリュームの間の差分が差分ビットマップで管理されている。また、この状態においては、副ボリュームが静止した状態になるため、ユーザーは先に述べたバックアップ等の処理を行なうことができる。
ホスト14000はローカルコピーのDuplex状態のペアをSplit状態にする場合、これまで説明してきたバックグラウンドコピーの動作を停止させる(これをペアSplitと呼ぶ)。ペアSplitは第4〜第7の実施の形態で説明した機能I/Fを介して実施する。
(1)ホスト14000は機能I/Fを介してストレージ装置15000A,15000Bにローカルコピーの停止命令を出す。通常、ホスト側ではこの停止命令直前にI/Oリクエストの発行を停止する。
(2)アクティブ側及びスタンバイ側のストレージ装置15000A,15000Bはそれぞれ差分ビットマップ上でオンとなった領域のバックグラウンドコピーを完了させる。ホスト14000は両ストレージ装置15000A,15000Bにおけるバックグラウンドコピーが完了ことを認識するメッセージをアクティブ側のストレージ装置15000A、もしくは両ストレージ装置15000A,15000Bから受領する。
(3)ホスト14000は当該メッセージを受領した後、I/O発行を再開する。
(2)までの処理により、アクティブ側及びスタンバイ側のストレージ装置15000A,15000B内のペアはSplit状態になったことが確定する。この時点で両ストレージ装置15000A,15000B内のペア状態はSplit状態となっている。なお、Split中に行われた正ボリュームまたは副ボリュームへ行われたライトリクエストのライト位置は、後ほど説明するペア再同期のために差分ビットマップに記録される。
その後のI/Oリクエストの処理はDuplex状態とほぼ同様である。Duplex状態との違いは、バックグラウンドコピー処理が動作しない点である。
<ペア作成>
正ボリュームと副ボリュームがペア関係にない状態をSimplex状態と呼ぶ。Simplex状態からDuplex状態に遷移させるための処理をペア作成と呼ぶ。ペア状態がSimplex状態からDuplex状態に遷移している過渡状態をInitial‐Copying状態と呼ぶ。
ペア作成の指示は、第4〜第7の実施の形態で説明した機能I/Fを介して実施する。
(1)ホスト14000は機能I/Fを介して、ストレージ装置15000Aに対してペア作成指示を出す。この結果アクティブ側及びスタンバイ側の両ストレージ装置15000A,15000Bでペア作成処理が開始される。
(2)両ストレージ装置15000A,15000Bはペア状態をInitial−Copying状態に設定し、差分ビットマップ上のビットを全てオンにし、バックグラウンドコピーを開始する。
(3)バックグラウンドコピーが差分ビットマップの最後まで完了したら、ストレージ装置15000A,15000Bはペア状態をDuplex状態に設定する。
Initial‐Copying状態におけるリード/ライト処理はDuplex状態におけるリード/ライト処理と同様である。
<ペア再同期>
ペア状態をSusupend状態からDuplex状態に遷移させる操作をペア再同期と呼ぶ。ペア状態がSusupend状態からDuplex状態に遷移している過渡状態をDuplex‐Pending状態と呼ぶ。
ペア再同期の指示は、第4〜第7の実施の形態で説明した機能I/Fを介して実施する。
(1)ホスト14000は機能I/Fを介して、ストレージ装置15000Aに対してペア再同期指示を出す。この結果アクティブ側及びスタンバイ側の両ストレージ装置15000A,15000Bでペア再同期処理が開始される。
(2)両ストレージ装置15000A,15000Bはペア状態をDuplex‐Pendingに設定し、バックグラウンドコピーを開始する。
(3)バックグラウンドコピーが差分ビットマップの最後まで完了したら、ストレージ装置15000A,15000Bはペア状態をDuplex状態に設定する。
Duplex‐Pending状態におけるリード/ライト処理はDuplex状態におけるリード/ライト処理と同様である。
(10)第10の実施の形態
本実施の形態では第9の実施の形態とは異なるローカルコピー機能の実施の形態を説明する。本実施の形態の一構成例を図20に示す。
まず、本実施の形態と第9の実施の形態との構成の違いは、外部ストレージ装置16000Bが存在せず、副ボリューム15007A,15007Bの実体がいずれも外部ストレージ装置16000A内の外部ボリューム16001Aとなるようにマッピングされている点である。その他の構成は第9の実施の形態と同様である。
このように構成することにより、副ボリューム15007A,15007Bに必要とされる物理的な記憶装置を削減することができる。
本実施の形態と第9の実施の形態の処理動作との大きな違いはスタンバイ側のストレージ装置15000Bが外部ボリューム16001Aに対するバックグラウンドコピーを行なわず、ストレージ装置15000Aとの通信により、ペアに関する制御情報であるペア状態と差分ビットマップ15010Bのみを操作する点である。
以下では処理動作を詳細に説明する。
<Duplex状態における動作>
以下ではDuplex状態におけるリード/ライト処理について述べる。
まず、リード処理は第9の実施の形態でのリード処理と同様である。
次にライト処理について説明する。アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能により、(リード対象の正ボリューム15006Aに関して)アクティブ側のストレージ装置がストレージ装置15000A及びストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにライトリクエストを発行する。ライトリクエストを受信したストレージ装置15000Aは、ライトデータを受信し、図示しないキャッシュメモリにライトデータを格納すると共にライトデータに対応する差分ビットマップ15010Aのビットを1(オン)に設定する。
その後、当該ライトデータは同期リモートコピー機能により、ストレージ装置15000A内の正ボリューム15006Aからストレージ装置15000B内の正ボリューム15006Bにコピーされる。なお、同期リモートコピーの方法はこれまで説明した通りである。同期リモートコピー機能によりストレージ装置15000Aからライトデータを受信したストレージ装置15000Bは、図示しないキャッシュメモリにライトデータを格納すると共にライトデータに対応する差分ビットマップ15010Bのビットを1(オン)に設定する。その後、ストレージ装置15000Bはストレージ装置15000Aに対してライト完了報告に送信し、ライト完了報告を受信したストレージ装置15000Aはホスト14000に対してライト完了報告を送信する。
なお、ストレージ装置15000Aの正ボリューム15006Aにライトされたデータは、正ボリューム15006Aへのライトとは非同期に副ボリューム15007Aへバックグラウンドコピーされる。第9の実施の形態でのライト処理と異なり、ストレージ装置15000Bの正ボリューム15006Bにライトされたデータはバックグラウンドコピーされない。
ストレージ装置15000Aにおけるバックグラウンドコピーは、差分ビットマップ15010Aを定期的に監視し、差分あり(すなわちビットがオン)と記録された領域のデータを正ボリューム15006Aから副ボリューム15007Aへコピーし、コピーが終了したらビットをクリア(オフ又は0に)することにより行なわれる。なお、本実施の形態では、第9の実施の形態でのライト処理と異なり、ストレージ装置15000Bにおいてはバックグラウンドコピーが行なわれない。
その後、第9の実施の形態でのライト処理と異なり、ストレージ装置15000Aはクリアした差分ビットマップ15010A上のビットの位置情報をストレージ装置15000Bに通知する。通知を受信したストレージ装置15000Bは当該ビットに対応するストレージ装置15000B内の差分ビットマップ15010B上のビット(差分ビット)をクリアする。なお、差分ビットの位置情報の通知はストレージ装置15000B内のコマンドデバイスを介して行なわれる。また、本実施の形態における構成では、コマンドデバイスを介して通知を行なったが、ストレージ装置15000A,15000B間がLANで接続された構成である場合は、LANを介した通信により通知を行なってもよい。以後、ストレージ装置15000Aとストレージ装置15000Bとの間における、差分ビットやペア状態等といった機能の制御情報に関する通信はコマンドデバイスやLANを介して行うものとする。
何らかの障害が発生し、アクティブ側の正ボリューム15006Aに対するI/Oリクエストが処理できなくなった場合、オペレーティングシステム14001は、第9の実施の形態と同様に、I/Oリクエストの対象を正ボリューム15006Bに切り替えてアクセスを継続する。
<ペアSplitとSplit状態の動作>
ホスト14000はローカルコピーのDuplex状態のペアをSplit状態にする場合、第9の実施の形態と同様にペアSplitを行なう。なお、ペアSplitにおいては、バックグラウンドコピーの終了処理が行なわれるが、本実施の形態ではストレージ装置15000Bにおいては、バックグラウンドコピーは動作していないため、実際には終了処理は行なわれない。
その後のI/Oリクエストの処理はDuplex状態とほぼ同様である。Duplex状態との違いは、ストレージ装置15000Bにおいてバックグラウンドコピー処理が動作しない点である。
<ペア作成>
ペア作成の指示は、第4〜第7の実施の形態で説明した機能I/Fを介して実施されるのは第9の実施の形態と同様である。
(1)ホスト14000は機能I/Fを介して、ストレージ装置15000Aに対してペア作成指示を出す。この結果アクティブ側及びスタンバイ側の両ストレージ装置15000A,15000Bでペア作成処理が開始される。
(2)両ストレージ装置15000A,15000Bはペア状態をInitial−Copying状態に設定する。ストレージ装置15000Aは差分ビットマップ15010A上のビットを全てオンにし、バックグラウンドコピーを開始する。第9の実施の形態と異なり、ストレージ装置15000Bは差分ビットマップ15010B上のビットを全てオンにするが、バックグラウンドコピーを行なわない。
(3)ストレージ装置15000Aはバックグラウンドコピーが完了した領域に対応する差分ビットをクリアする処理とそれに付随する動作(差分ビットの位置情報の通知と差分ビットのクリア)はDuplex状態における動作と同様である。
(4)第9の実施の形態と異なり、ストレージ装置15000Aは、バックグラウンドコピーが差分ビットマップ15010Aの最後まで完了したら、ペア状態をDuplex状態に設定し、ペア状態がDuplex状態に変わったことをストレージ装置15000Bに通知する。通知を受信したストレージ装置15000Bはペア状態をDuplex状態に設定する。
Initial‐Copying状態におけるリード/ライト処理はDuplex状態におけるリード/ライト処理と同様である。
<ペア再同期>
ペア再同期の指示は、第4〜第7の実施の形態で説明した機能I/Fを介して実施されるのは第9の実施の形態と同様である。
(1)ホスト14000は機能I/Fを介して、ストレージ装置15000Aに対してペア再同期指示を出す。この結果アクティブ側及びスタンバイ側の両ストレージ装置15000A,15000Bでペア再同期処理が開始される。
(2)ストレージ装置15000Aはペア状態をDuplex‐Pendingに設定し、バックグラウンドコピーを開始する。第9の実施の形態と異なり、ストレージ装置15000Bにおいては、バックグラウンドコピーは行なわない。
(3)ストレージ装置15000Aは、バックグラウンドコピーが差分ビットマップ15010Aの最後まで完了したら、ペア状態をDuplex状態に設定する。ただし、第9の実施の形態と異なり、この処理を行なうのはストレージ装置15000Aのみである。その後、ストレージ装置15000Aは、ペア状態がDuplex状態に変わったことをストレージ装置15000Bに通知する。通知を受信したストレージ装置15000Bはペア状態をDuplex状態に設定する。
Duplex‐Pending状態におけるリード/ライト処理はDuplex状態におけるリード/ライト処理と同様である。
(11)第11の実施の形態
AOU(Allocation On Use)機能の構成について述べる。AOU機能はホストから使用された(ライトされた)領域に関してのみ実記憶領域を割り当てる機能である。
AOU機能はデータが実際に格納される実ボリュームの集合体であるプールと、ホストに見せるボリュームである仮想ボリュームから構成される。本実施の形態における仮想ボリュームはライトが行われた部分のみ実データが割り当てられるという意味で仮想的である。ホストに見せているボリュームの全アドレス空間に実データが割り当てられている訳ではない。なお、実ボリュームは外部ストレージ装置内にあってもよいし、仮想ボリュームと同じストレージ装置内にあってもよい。
図21はAOU機能の一実施の形態を示したものである。図21においては、ホスト14000はストレージ装置15000Aとストレージ装置15000Bに接続されている。また、ストレージ装置15000Aは外部ストレージ装置16000Aと接続され、ストレージ装置15000Bは外部ストレージ装置16000Bと接続されている。
本実施の形態は実ボリューム16002Aが外部ストレージ装置16000A,16000B内にある構成例を示している。仮想ボリューム15008A内のデータはプール16003Aの実ボリューム16002A内のデータと対応付けられる。同様に仮想ボリューム15008B内のデータはプール16003Bの実ボリューム16002B内のデータと対応付けられる。また、仮想ボリューム15008Aと仮想ボリューム15008Bは同期リモートコピー機能により内容が一致するように構成される。同期リモートコピーの方法はこれまで説明したとおりである。
次に本構成におけるリード/ライト処理について述べる。なお、以下のリード/ライト処理の説明は、リード/ライト処理の対象ボリュームのアクティブ側がストレージ装置15000Aであるという前提である。
まずリード処理について説明する。アプリケーションプログラム14002からリードリクエストを受け付けたオペレーティングシステム14001はパス管理機能によりアクティブ側のストレージがストレージ装置15000A及びストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにリードリクエストを発行する。リードリクエストを受け付けたストレージ装置15000Aは、仮想アドレス実アドレス変換テーブル15009Aを参照し、リードデータにプール16003A内の実領域が割り当てられているか判定する。
前述の判定で実領域が割り当てられている場合、ストレージ装置15000Aは、当該実領域からリードデータを読み出してホスト14000に送信する。アプリケーション14002はオペレーティングシステム14001を介してリードデータを受信する。以上によりリード処理は完了する。
次にライト処理について説明する。アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能によりアクティブ側のストレージ装置がストレージ装置15000Aとストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにライトリクエストを発行する。ライトリクエストを受け取ったストレージ装置15000Aは仮想アドレス実アドレス変換テーブル15009Aを参照し、ライト対象データにプール16003A内の実領域が割り当てられているか判定する(判定200)。
前述の判定で実領域が割り当てられている場合、ストレージ装置15000Aは、ホスト14000からライトデータを受信し、当該実領域に対応する図示しないキャッシュメモリ内の領域にライトデータを格納する。そして、同期リモートコピー機能によりライトデータをストレージ装置15000Bにライトリクエストを送信する。ストレージ装置15000Aからライトリクエストを受信したストレージ装置15000Bは、ライトデータにプール16003A内の実領域が割り当てられているか判定する。ここで、仮想ボリューム15008Aの内容と仮想ボリューム15008Bの内容は同期リモートコピー機能により一致しているため、実領域は割り当てられていると判定される。その後、ストレージ装置15000Bは、ストレージ装置15000Aからライトデータを受信し、当該実領域に対応する図示しないキャッシュメモリ内の領域にライトデータを格納し、ストレージ装置15000Aにライト完了報告を行う。
前述の判定(判定200)で実領域が割り当てられていない場合、ストレージ装置15000Aは、仮想アドレス実アドレス変換テーブル15009Aにライトデータのアドレスを登録し、実領域を確保する。その後、ストレージ装置15000Aは、ホスト14000からライトデータを受信し、当該実領域に対応する図示しないキャッシュメモリ内の領域にライトデータを格納する。そして、同期リモートコピー機能によりライトデータをストレージ装置15000Bにライトリクエストを送信する。
ストレージ装置15000Aからライトリクエストを受信したストレージ装置15000Bは、ライトデータにプール16003B内の実領域が割り当てられているか判定する。ここで、仮想ボリューム15008Aの内容と仮想ボリューム15008Bの内容は同期リモートコピー機能により一致しているため、実領域は割り当てられていないと判定される。その後、ストレージ装置15000Bは、仮想アドレス実アドレス変換テーブル15009Bにライトデータのアドレスを登録し、実領域を確保する。そして、ストレージ装置15000Bは、ストレージ装置15000Bからライトデータを受信し、当該実領域に対応する図示しないキャッシュメモリ内の領域にライトデータを格納した後、ストレージ装置15000Aにライト完了報告を行う。ライト完了報告を受信したストレージ装置15000Aはホスト14000にライト完了報告を行う。ホスト14000がライト完了報告を受信し、ライト処理は完了する。
なお、キャッシュメモリに格納されたデータはキャッシュメモリへの格納とは非同期に実ボリューム16002A,16002Bへライトされる。
何らかの障害により、アプリケーション14002がストレージ装置15000A内の仮想ボリューム15008A経由でのリード/ライト処理が不可能になった場合、オペレーティングシステム14001の提供するパス管理機能は障害を検出し、リード/ライト処理のアクセス経路をストレージ装置15000B内の仮想ボリューム15008B経由に切り替える。仮想ボリューム15008Aの内容と仮想ボリューム15008Bの内容は同期リモート機能により一致しているため、アクセス経路が切り替わっても、継続して正常にリード/ライト処理を行うことができる。
(12)第12の実施の形態
本実施の形態ではAOU機能の第11の実施の形態とは異なる実施の形態について述べる。本実施の形態の一構成例を図22に示す。
まず、本実施の形態と第11の実施の形態との構成の違いは、外部ストレージ装置16000Bが存在せず、仮想ボリューム15008A、15008Bの実領域がいずれも外部ストレージ装置16000A内のプール16003A内の領域に割り当てられている点である。その他の構成は第11の実施の形態と同様である。
なお、本実施の形態はストレージ装置15000A及びストレージ装置15000Bが共通のプールとして、共通の外部ストレージ装置16000A内の実ボリューム16002Aを用いるため、第11の実施の形態と異なり、実ボリューム16002Aが外部ストレージ装置16000A内にある構成に限定される。
このように構成することにより、プールに必要とされる物理的な記憶装置(HDDなど)の容量を削減することができる。
本実施の形態と第11の実施の形態の処理動作の大きな違いは、スタンバイ側のストレージ装置15000Bがキャッシュメモリから外部ストレージ装置16000A内の実ボリューム16002Aに対してライトを行なわない点と、ストレージ装置15000Aが仮想アドレス実アドレス変換テーブル15009Aへの更新をストレージ装置15000Bに通知し、通知を受けたストレージ装置15000Bが仮想アドレス実アドレス変換テーブル15009Bを更新する点である。
以下では処理動作を詳細に説明する。
まずリード処理は第11の実施の形態におけるリード処理と同様である。
次にライト処理について説明する。アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能によりアクティブ側のストレージがストレージ装置15000A及びストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにライトリクエストを発行する。ライトリクエストを受け取ったストレージ装置15000Aは仮想アドレス実アドレス変換テーブル15009Aを参照し、ライトデータにプール16003A内の実領域が割り当てられているか判定する(判定300)。
前述の判定で実領域が割り当てられている場合、ストレージ装置15000Aは、ホスト14000からライトデータを受信し、当該実領域に対応するキャッシュメモリ内の領域にライトデータを格納する。そして、同期リモートコピー機能によりライトデータをストレージ装置15000Bにライトリクエストを送信する。次に、本実施の形態では、第11の実施の形態と異なり、ストレージ装置15000Aからライトリクエストを受信したストレージ装置15000Bは、即座にストレージ装置15000Aからライトデータを受信し、キャッシュメモリに当該データを格納した後、ストレージ装置15000Aにライト完了報告を行なう。ストレージ装置15000Bからライト完了報告を受信したストレージ装置15000Aはホスト14000に対してライト完了報告を送信する。
前述の判定(判定300)で実領域が割り当てられていない場合、ストレージ装置15000Aは、仮想アドレス実アドレス変換テーブル15009Aにライトデータのアドレスを登録し、実領域を確保する。その後、ストレージ装置15000Aは、ホスト14000からライトデータを受信し、当該実領域に対応するキャッシュメモリ内の領域にライトデータを格納する。そして、ストレージ装置15000Aは、同期リモートコピー機能によりライトデータをストレージ装置15000Bにライトリクエストを送信する。
次に、本実施の形態では、第11の実施の形態と異なり、ストレージ装置15000Aからライトリクエストを受信したストレージ装置15000Bは、即座にストレージ装置15000Aからライト対象データを受信し、キャッシュメモリに当該データを格納した後、ストレージ装置15000Aにライト完了報告を行なう。ストレージ装置15000Aは、ストレージ装置15000Bからライト完了報告を受信した後、仮想アドレス実アドレス変換テーブル15009Aへの変更内容をストレージ装置15000Bに送信する。
仮想アドレス実アドレス変換テーブル15009Aへの変更内容を受信したストレージ装置15000Bは、同様の変更を仮想アドレス実アドレス変換テーブル15009Bに対して行なう。これによりストレージ装置15000B内の仮想ボリューム15008B内の当該ライト領域の実領域が共通の外部ストレージ装置16000Aの実ボリューム16002A内の(ストレージ装置15000Aにより割り当てられた)実領域にマッピングされることになる。ストレージ装置15000Bは仮想アドレス実アドレス変換テーブル15009Bを更新した旨をストレージ装置15000Aに通知する。その後、通知を受信したストレージ装置15000Aはホスト14000に対してライト完了報告を行なう。なお、ストレージ装置15000Aは(1)同期リモートコピーのデータ送信と、(2)仮想アドレス実アドレス変換テーブル15009Aへの変更内容の送信を同時に行い、(1)及び(2)の処理の完了報告を受信した後ホスト14000に対してライト完了報告を行なってもよい。その後、ホスト14000がライト完了報告を受信し、ライト処理は完了する。
なお、ストレージ装置15000A内のキャッシュメモリに格納されたデータはキャッシュメモリへの格納とは非同期に、ストレージ装置15000Aにより実ボリューム16002Aへライト(デステージ)される。デステージが完了した後、ストレージ装置15000Aはストレージ装置15000Bにその旨を通知する。通知を受けたストレージ装置15000Bは当該ライトに対応するキャッシュメモリの領域を破棄する。なお、破棄せずに当該ライトに対応するキャッシュメモリの領域の属性をクリーン(キャッシュメモリの内容と記憶装置(HDDなど)内のデータの内容が一致している状態)としてもよい。
何らかの障害により、アプリケーション14002がストレージ装置15000A内の仮想ボリューム15008A経由でのリード/ライト処理が不可能になった場合、オペレーティングシステム14001の提供するパス管理機能は障害を検出し、リード/ライト処理のアクセス経路をストレージ装置15000B内の仮想ボリューム15008B経由に切り替える。仮想ボリューム15008Aの内容と仮想ボリューム15008Bの内容は同期リモート機能により一致しているため、アクセス経路が切り替わっても、継続して正常にリード/ライト処理を行うことができる。
(13)第13の実施の形態
本実施の形態ではストレージ装置内のボリュームに論理スナップショット機能を適用した場合の例を説明する。
論理スナップショット機能とは、ローカルレプリケーションと類似した機能であり、ユーザーの指示時点の複製データをホストに提供する機能である。しかし、複製データを有する副ボリュームは、プールに属する実ボリュームの領域に保存された複製作成指示以後のライトデータと、正ボリュームのデータを用いて提供される仮想的な存在である。仮想的な副ボリュームの実体は実ボリュームの集合体であるプールに保持される。正ボリュームと副ボリュームの関係をスナップショットペアもしくは単にペアと呼ぶこともある。論理スナップショット機能においては、静止化ポイントにおける正ボリュームの内容と同一の内容の論理ボリュームが実際に作成される訳ではないという意味で、副ボリュームは仮想的である。論理スナップショット機能は先に説明したローカルコピー機能とは異なり、正ボリュームのサイズと同一のサイズの副ボリュームが不要である。これにより、副ボリュームの内容を保持するために必要な記憶装置(HDDなど)の容量を削減することが可能である。
本実施の形態ではこの論理スナップショット機能についてもアクティブ側のストレージとスタンバイ側のストレージで連携することで可用性を向上させることができる。
図23はスナップショット機能の一実施の形態を示したものである。図23においては、ホスト14000はストレージ装置15000Aとストレージ装置15000Bに接続されている。また、ストレージ装置15000Aは外部ストレージ装置16000Aと接続され、ストレージ装置15000Bは外部ストレージ装置16000Bと接続されている。また、スナップショット機能及び差分ビットマップ(静止化ポイントにおける正ボリューム15006A,15006Bと現時点における正ボリューム15006A,15006Bの間の差分の有無を示す情報)15010A,15010Bと仮想アドレス実アドレス変換テーブル(仮想的な副ボリューム15007A,15007Bの実体の位置を管理するテーブル)15009A,15009Bがストレージ装置15000Aとストレージ装置15000Bにて実行及び管理される。更に、ストレージ装置15000A内の正ボリューム15006Aとストレージ装置15000B内の正ボリューム15006Bはリモートコピーのペアとなるように構成される。
本実施の形態は正ボリューム15006A,15006Bがストレージ装置15000A,15000B内にあり、プール16003A,16003Bが外部ストレージ装置16000A,16000B内にある構成例を示している。なお、プール16003A,16003Bはストレージ装置15000A,15000B内にあってもよい。
<論理スナップショット作成指示>
ホスト14000を利用するユーザーが論理スナップショット作成を指示すると、前記実施の形態に記載の方式によって、アクティブ側のストレージ装置15000Aとスタンバイ側のストレージ装置15000Bに作成指示を発行する。作成指示を受信したストレージ装置15000A,15000Bは当該指示を受けて、仮想的な副ボリューム15007A,15007Bを準備し、この副ボリューム15007A,15007Bに全て0(差分なしの意味)の差分ビットマップ15010A,15010Bと仮想アドレス実アドレス変換テーブル15009A,15009Bとを割り当てる。
<正ボリュームに対するリード処理>
これまで述べた実施の形態と同じである。
<正ボリュームに対するライト処理>
アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能により、(ライト対象の正ボリュームに関して)アクティブ側のストレージがストレージ装置15000A及びストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにライトリクエストを発行する。ライトリクエストを受信したストレージ装置15000Aは、ライト対象アドレスの差分ビットマップ15010Aをチェックする。結果、1であればキャッシュメモリに正ボリューム15006Aのライトデータとして、格納する。一方、0の場合は正ボリューム15006Aの更新前のデータを副ボリューム15007A用のデータとして用いるための以下に示すCopy‐On‐Write処理を行う。
(Step1)プール16003Aに属する実ボリューム16002Aの記憶領域を確保する。
(Step2)正ボリューム15006Aから当該記憶領域へ更新前データをキャッシュメモリを利用しつつコピーする。
(Step3)退避する更新前データの保存先を管理するプール管理情報を更新し、当該データがプール16003A内の実ボリューム16002Aのどの領域に保存されたかわかるようにする。
(Step4)受信したライトデータをキャッシュメモリに正ボリューム15006Aの当該アドレス宛のデータとして保存し、ライト完了応答を返す。
これと並行して、当該ライトデータはリモートコピー機能により、ストレージ装置15000A内の正ボリューム15006Aからストレージ装置15000B内の正ボリューム15006Bにコピーされ、同様の処理がなされる。そのため、各ストレージ装置15000A,15000Bはそれぞれで仮想アドレス実アドレス変換テーブル15009A,15009Bや差分ビットマップ15010A,15010Bの管理を行う。
<副ボリュームに対するリード処理>
アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能により、(リード対象の副ボリュームに関して)アクティブ側のストレージがストレージ装置15000A及びストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにリードリクエストを発行する。リードリクエストを受信したストレージ装置15000Aは、正ボリューム15006Aに対して記録していた差分ビットマップ15010Aをチェックする。結果、リード対象アドレスのビットが0であれば正ボリューム15006Aの同じアドレスに保存されたデータをホスト14000へ返し、オペレーティングシステム14001は当該データをアプリケーション14002へ返す。一方、リード対象アドレスのビットが1の場合は仮想アドレス実アドレス変換テーブル15009Aを参照して、正ボリューム15006Aのリード対象アドレスに関する更新前のデータの場所を決定し、プール16003Aに属する実ボリューム16002Aからデータをホスト14000(アプリケーション14002)へ返す。
<副ボリュームに対するライト処理>
アプリケーションプログラム14002からライトリクエストを受け付けたオペレーティングシステム14001はパス管理機能により、(ライト対象の副ボリュームに関して)アクティブ側のストレージがストレージ装置15000Aとストレージ装置15000Bのどちらかを判断し、アクティブ側のストレージ装置15000Aにライトリクエストを発行する。ライトリクエストを受信したストレージ装置15000Aは、正ボリューム15006Aに割り当てられたライト対象アドレスの差分ビットマップ15010Aをチェックする。結果、1であれば仮想アドレス実アドレス変換テーブル15009Aを参照することで、正ボリューム15006Aの当該アドレスの更新前データが保存されたプール16003A内の実ボリューム16002Aの記憶領域を探し、当該領域へライトデータを保存する。一方、0の場合は以下の処理を行う。
(A)プール16003Aに属する実ボリューム16002Aの領域を確保する。
(B)確保した領域にライトデータを保存し、仮想アドレス実アドレス変換テーブル15009Aを更新することで当該ライトデータがプール16003A内の実ボリューム16002Aのどの領域に保存されたかわかるようにする。
(C)差分ビットマップ15010Aの当該アドレスに対応するビットを1に更新する。
これと並行して、当該ライトデータはリモートコピー機能により、ストレージ装置15000A内の正ボリューム15006Aからストレージ装置15000B内の正ボリューム15006Bにコピーされ、同様の処理がなされる。そのため、各ストレージ装置15000A,15000Bはそれぞれで仮想アドレス実アドレス変換テーブル15009A,15009Bや差分ビットマップ15010A,15010Bの管理を行う。
<Copy‐After‐Write処理>
ストレージ装置15000A,15000Bは、正ボリューム15006A,15006Bに対するライト時に実行されるCopy‐On‐Write処理の代わりとして以下に示すCopy‐After‐Write処理を実行してもよい。
(Step1)受信したライトデータをキャッシュメモリに正ボリューム15006A,15006Bの当該アドレス宛のデータとして保存し、ライト完了応答を返す。ただし、当該ライトデータのデステージングは抑制する。
(Step2)プール16003A,16003Bに属する実ボリューム16002A,16002Bの記憶領域を確保する。
(Step3)正ボリューム15006A,15006Bから当該記憶領域に更新前データをキャッシュメモリを利用しつつコピーする。
(Step4)退避した更新前データの保存先を管理するプール管理情報を更新し、当該データがプール16003A,16003B内の実ボリューム16002A,16002Bのどの領域に保存されたかわかるようにする。
(Step5)抑制していたライトデータのデステージを許可する。
<障害>
何らかの障害が発生し、アクティブ側の正ボリューム15006A及び副ボリューム15007Aに対するI/Oリクエストが処理できなくなった場合には、すでに説明した通り、オペレーティングシステム14001は、I/Oリクエストの対象を正ボリューム15006B及び副ボリューム15007Bに切り替えてアクセスを継続することができる。なお、前述の通り、好ましくはスナップショット機能の正ボリューム15006A,15006B及び副ボリューム15007A,15007Bは同一のストレージ装置15000A,15000Bに対してライトリクエストを発行したいため、正ボリューム15006A,15006Bに対する切り替えが必要な場合は副ボリューム15007A,15007Bも同時に行い、逆に副ボリューム15007A,15007Bに対する切り替えが必要な場合は正ボリューム15006A,15006Bに対しても切り替えを行う連携を行うことがこのましい。
(14)第14の実施の形態
本実施の形態では、第13の実施の形態とは異なる論理スナップショット機能の実施の形態を説明する。図24に本実施の形態の一構成例を示す。
まず、本実施の形態と第13の実施の形態との構成の違いは、外部ストレージ装置16000Bが存在せず、仮想的な副ボリューム15007A,15007Bの実領域がいずれも外部ストレージ装置16000A内のプール16003A内の領域に割り当てられている点である。その他の構成は第13の実施の形態と同様である。
なお、本実施の形態はストレージ装置15000Aとストレージ装置15000Bが共通のプール16003Aとして、共通の外部ストレージ装置16000A内の実ボリューム16002Aを用いるため、第13の実施の形態と異なり、実ボリューム16002Aが外部ストレージ装置16000A内にある構成に限定される。
このように構成することにより、プール16003Aに必要とされる物理的な記憶装置(HDDなど)の容量を削減することができる。
本実施の形態と第13の実施の形態の処理動作の大きな違いは以下の通りである。
(A)通常時はスタンバイ側のストレージ装置15000Bがキャッシュメモリから外部ストレージ装置16000A内の実ボリューム16002Aに対してライトを行なわない代わりに、アクティブ側のストレージ装置15000Aが正ボリューム15006A、副ボリューム15007A、プール16003A内の実ボリューム16002Aに対応するデータをデステージングする時にスタンバイ側のストレージ装置15000Bにこれを伝え、スタンバイ側のストレージ装置15000Bではこれによってキャッシュメモリ上のデータを破棄する。
(B)ストレージ装置15000Aが仮想アドレス実アドレス変換テーブル15009Aへの更新をストレージ装置15000Bに通知し、通知を受けたストレージ装置15000Bが仮想アドレス実アドレス変換テーブル15009Bを更新する。
また、(A)の処理に変えて、副ボリューム15007A,15007B又はプール16003A内の実ボリューム16002Aに対応するデータについてはキャッシングを無効化してもよい。この場合、前述のCopy‐On‐ライト処理による更新前データ退避では正ボリューム15006A,15006Bに対するライト完了までにプール16003A内の実ボリューム16002Aへの退避データ保存が含まれるため、性能が悪化するが、Copy‐After‐ライト方式ではそれが無いため、好適である。
以上、本発明の幾つかの実施態様を説明したが、これらの実施の形態は本発明の説明のための例示にすぎず、本発明の範囲をそれらの実施の形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。例えば、HDD1030やキャッシュメモリ1020の代わりに不揮発性メモリを使用することができる。不揮発性メモリとしては、例えば、フラッシュメモリ(具体的には、例えば、NAND型フラッシュメモリ)、MRAM(Magnetoresistive Random Access Memory)、PRAM(Parameter Random Access Memory)など、種々の不揮発性メモリを採用することができる。
(15)第15の実施の形態
図1との対応部分に同一符号を付して示す図28は、仮想化機能を持つネットワークスイッチ(仮想化スイッチ)28000L,28000Rを適用した場合の実施の形態を示した概要図である。
<1.本実施の形態のハードウェア構成>
仮想化スイッチ28000L,28000Rは、複数のネットワークポートを持ち、ネットワークポート制御用のプロセッサが各ポートの転送制御や障害の検知や後術する仮想化を行う。なお、本概要図には図示されていないが、図1について上述した第1の実施の形態と同様に仮想化スイッチ28000L,28000Rには管理ホストが接続され、この管理ホストを介して仮想化スイッチ28000L,28000Rに対する設定を行ったり、仮想化スイッチ28000L,28000R間の設定コピーを行うことができる。なお、その他コンポーネントについては第1〜第14の実施の形態と同じであるため、説明を省略する。
<2.仮想化スイッチを用いた本実施の形態の特徴>
仮想化スイッチ28000L,28000Rが提供する仮想化は第1〜第14の実施の形態と異なる以下の特徴を持つ。
(特徴1)仮想的なWWN(又はポートネーム)を提供できる。ファイバーチャネルスイッチのポートはFポート又はEポートと呼ばれ、通常のホストやストレージが持つNポート(通信の始点又は終点となることを意味する)とは異なる属性を持つ。そのため、仮想化スイッチ28000L,28000Rにおいて仮想化を行う場合、内部で実際に接続されていない仮想的なWWNを仮想化スイッチ28000L,28000Rの両方で作成・提供すれば、ホスト1100上のソフトウェアが明示的にI/Oパスを切り替える必要がなくなる。なお、より具体的にはファイバーチャネルの通信は前述のポートネームによって行われるが、これはファイバーチャネルスイッチが割り当てる識別子であり、識別子内部にはルーティング用に用いられるスイッチを識別するための情報が含まれている。そのため、両仮想化スイッチ28000L,28000Rは、ホスト1100に対して、仮想的なWWNを持つNポートが仮想的なスイッチを経由して両仮想化スイッチ28000L,28000Rに接続されているかのごとく模擬できるように、ポートネームを割り当てて、ルーティングを行う。
(特徴2)スイッチでキャッシングを行わない。ファイバーチャネルスイッチは、通常、制御ヘッダだけ参照して転送先を決定し、データのバッファリングを行わない、いわゆるカットスルー方式で転送制御を行うため、仮想化機能を提供する場合もキャッシングを行わないことが多い。なお、キャッシングを行う場合は、本特徴が関係する処理についてはこれまで説明してきた実施の形態と同様の処理によって実現される。また、キャッシングを行わない場合の仮想化スイッチ28000L,28000Rのリード/ライト処理は、I/Oリクエストを受け付けてからストレージ装置1500Lへのリクエスト処理転送及び処理完了を待ってホスト1100に処理完了が返る、ライトスルー型の制御に類似したものと考えることができる。
(特徴3)本実施の形態での高可用化は両方の仮想化スイッチ28000L,28000Rに同じ仮想化の設定を行うだけでよい。これは仮想化スイッチ28000L,28000Rにてキャッシングを行っていないために可能となる。なお、仮想化スイッチ28000L,28000Rがリモートコピーやローカルコピーを行う場合、差分ビットマップ等スイッチ内部に存在する情報がある場合は、これまでの実施の形態と同じく、正系と副系の両方で内部情報を保持する必要がある。
なお、ここまで仮想化スイッチ28000L,28000Rはファイバーチャネルスイッチであるものとして説明を行っているが、仮想化スイッチ28000L,28000RがEthernet(登録商標)や、iSCSI又はTCP/IPを用いたものでもよい。この場合、WWNがMACアドレスで、ポートネームがIPアドレスに対応するものとすることができるが、Ethernet(登録商標)やTCP/IPの場合は仮想的なスイッチを提供せずに、直接仮想的なポートとそれに割り当てたIPアドレスを外部へ提供し、当該IPアドレスに対するルーティングを行えばよい。
(16)第16の実施の形態
次に、第16の実施の形態について説明する。本実施の形態は第11の実施の形態及び第12の実施の形態にて説明したAOU機能を高可用化構成の仮想化ストレージ装置が提供することに関する発明である。なお、以下において説明していない機能等については、第1〜第15の実施の形態による情報システムと同様の構成を有する。
前述の通り、AOU機能とは仮想化ストレージ装置が当該機能によってホスト1100へ提供するボリューム(以後AOUボリュームと呼ぶ)について、使用開始時からAOUボリュームの全アドレスに対してHDDの記憶領域を割り当てるのではなく、ホスト1100がライトを行ったアドレスに対してHDDの記憶領域(より正確にはHDDから構成されるボリューム(プールボリュームと呼ぶ)の記憶領域の一部又は全て)を割り当てる機能である。AOU機能はHDDを有効利用することができる。なぜならば、ホスト1100で動作するファイルシステムの一部の種類ではアクセス継続中に動的なデータ容量拡張ができないため、ホスト1100の管理者は将来利用する可能性のあるデータ容量も含めてボリュームの容量設定を行う。そのため、従来技術ではボリュームの容量設定を行った時点では使用せず、また将来も確実に使うとは限らないHDDを搭載していなければならなかったからである。
なお、HDD容量の有効利用の観点から考えた場合、AOUボリュームにライトが発生する前の領域に対してプールボリュームの領域が未割り当ての状態であったほうがよいが、他の目的(高性能化等)がある場合はこれに限られない。
<1.本実施の形態の概要>
図1との対応部分に同一符号を付した図29に本実施の形態の概要を示す。本実施の形態による情報システムは、2台の仮想化ストレージ装置1000L,1000Rが共通のストレージ装置1500Lと接続されている。そして、高可用化された2台の仮想化ストレージ装置1000L,1000RがAOU機能を有することで、情報システムのサービス停止時間を短縮している。なお、特に記載しない限り、ストレージ装置1500Lは両方の仮想化ストレージ装置1000L,1000Rからアクセス可能な状態、言い換えれば共有された状態にあるものとするが、共有されていないストレージ装置が存在して当該ストレージ装置内のボリュームをAOUの記憶領域として用いてもよい。また図29には図示していないが、本実施の形態の場合、第1の実施の形態と同様に、仮想化ストレージ装置1000L,1000Rには管理ホスト1200(図1)が接続されている。
ここでは、これまでに説明してきた実施の形態と異なる部分を中心に述べていく。2台の仮想化ストレージ装置1000L,1000Rは、AOUアドレス変換情報31030L,31030Rを用いてAOUボリューム29010L,29010Rを生成し、これをホスト1100に提供する。AOUアドレス変換情報31030L,31030Rには、AOUボリューム29010L,29010Rのアドレス空間と仮想化ストレージ装置1000L,1000R内のプールボリュームの領域又はストレージ装置1500L内のプールボリュームの領域との対応関係が含まれる。
ホスト1100からAOUボリューム29010Lに対してライトリクエストが発行されると、正系の仮想化ストレージ装置1000Lは、リクエスト対象のアドレス範囲にプールボリュームの領域が割り当てられているか判断し、割り当てられていない場合は仮想化ストレージ装置1000L又はストレージ装置1500Lが有するプールボリュームの領域を割り当てる。そしてライトリクエストが処理されることで、正系の仮想化ストレージ装置1000Lのキャッシュ領域にライトデータが保存される。また、AOUボリューム29010Lに対するライトデータは同期リモートコピーによって副系の仮想化ストレージ装置1000Rへ転送され、正系と同様にキャッシュ領域にライトデータが保存される。
その後、両方の仮想化ストレージ装置1000L,1000Rはデステージング処理を行うが、ストレージ装置1500Lに対応したライトデータに対しては仮想化ストレージ装置1000L,1000Rの片方だけがデステージングを行う。なぜならば、両方の仮想化ストレージ装置L,1000Rが独立にライトデータのデステージングを行うと、ストレージ装置1500Lに保存されるデータが不整合な状態(例えば、最後にライトしたデータが消えて、前回のライトデータに戻ってしまう等のデータ消失やライト順序の不整合がある)になってしまうからである。そのため、デステージングが必要になる前に予めどちらの仮想化ストレージ装置1000L,1000Rがデステージングを行うか決めておく必要がある。本実施の形態ではその一例として正系の仮想化ストレージ装置1000Lがデステージングを行う場合について説明を行うが、副系の仮想化ストレージ装置1000Rが行ってもよく、又はデステージング対象のアドレス空間を元にどちらの仮想化ストレージ装置1000L,1000Rが当該役割を担うか決定してもよい。
リードリクエストの場合も、正系の仮想化ストレージ装置1000Lは、まずはリクエスト対象のアドレス範囲にプールボリュームの領域が割り当てられているかどうかを判断する。判断の結果、割り当てられている領域に対しては、仮想化ストレージ装置1000Lは、該当するプールボリュームの領域(図示しないキャッシュメモリ上のデータを含む)からデータを読み出してホスト1100へ転送し、割り当てられていない場合は予め定められた値(例えばゼロ)を返す。
図30は、正系の仮想化ストレージ装置1000Lの機能停止後に副系の仮想化ストレージ装置1000RへI/Oリクエスト処理を切り替えた後の概要図である。本図にあるとおり、副系の仮想化ストレージ装置1000RはAOUアドレス変換情報31030Rを元にストレージ装置1500Lや仮想化ストレージ装置1000L内部のAOUアドレス変換情報31030Rを用いてI/Oリクエストを処理する。そのために、正系と副系の仮想化ストレージ装置1000L,1000Rは、通常時から通信を行うことで、AOUアドレス変換情報31030L,31030Rのストレージ装置1500Lが関係する部分を同じ内容に維持する。これにより副系の仮想化ストレージ装置1000Rは、ストレージ装置1500Lの割り当て状況を引き継ぐことができる。また、副系の仮想化ストレージ装置1000Rは、正系の仮想化ストレージ装置1000L内のキャッシュメモリからデステージングされたデータでない限り、キャッシュメモリに格納されているデータを当該キャッシュメモリから削除しないようにする。これにより、機能停止時に正系の仮想化ストレージ装置1000L内のキャッシュメモリからデータが揮発した場合においてもデータ消失が発生しないようにすることができる。
<2.仮想化ストレージ装置で実行されるプログラム及び情報>
図6との対応部分に同一符号を付した図31は、仮想化ストレージ装置1000L,1000R上で実行されるソフトウェアプログラムと当該プログラムが用いる情報について示している。
この図31において、AOU向けI/O処理プログラム31010は、仮想化ストレージ装置1000L,1000Rが受信したI/Oリクエストを処理するプログラムで、第1〜第14の実施の形態におけるI/O処理プログラム6020(図6)の機能を一部に含む。
AOU管理プログラム31020は、AOU機能に関する設定や後術する重複削除(Deduplication)処理を実行するためのプログラムである。またAOUアドレス変換情報31030は、AOUボリューム29010L,29010Rとプールボリュームの領域との対応関係に関する情報である。さらにAOUプール管理情報31040は、AOU機能が用いるプールボリュームの集合(プール)を管理するための情報である。
<2.1.AOUアドレス変換情報>
図35はAOUアドレス変換情報31010の具体的な内容を示している。仮想化ストレージ装置1000L,1000Rは、ホスト1100へ提供するボリュームの識別子と当該ボリューム内のアドレス空間を先頭から決められた大きさ(セグメントサイズ)に区切った領域(セグメント)のアドレスとでデータの保存領域等を管理する。なお、このセグメントサイズはプール定義時に設定される値である。
図35において、「AOUボリューム識別子」及び「アドレス空間」は、対応するセグメントを含むAOUボリューム29010L,29010Rの識別子と当該AOUボリューム29010L,29010R内における当該セグメントのアドレスとをそれぞれ示す。またプールIDは、そのAOUボリューム29010L,29010Rに領域を割り当てるプールの識別子を示す。
「COW(Copy On Write)フラグ」は、そのセグメントに対するライトリクエストが到着したときに、対応するライトデータを別途確保したプールボリューム領域に保存する必要があるかどうかを示すフラグである。本フラグは、異なるセグメントが同じプールボリュームの領域に対応付けられていた場合に、ライトデータを他のプールボリュームに保存する必要があることを意味する「ON」となることがある。
「プールボリューム領域識別子」は、そのセグメントが保存すべきデータを実際に保存しているプールボリューム領域の識別子を示す情報(識別情報)である。この識別情報は例えば以下の情報から構成される。
(1)仮想化ストレージ装置1000L,1000Rの内部のボリュームの領域を用いている場合は、内部ボリュームの識別子及びアドレス範囲。
(2)ストレージ装置1500L内のボリュームの領域をもちいている場合は、ポートネーム等の装置又は通信先を識別する情報、LUN等の装置内のボリュームを識別する情報、及びアドレス範囲。
(3)未割り当て領域の場合はNULL
「引継ぎ領域」は、対応する「プールボリューム領域識別子」の欄に識別子が記載されたプールボリュームが正系と副系の仮想化ストレージ装置1000L,1000Rの両方から管理されるかどうかを示す情報(両方から管理される場合は「Yes」、両方から管理されない場合は「No」)である。
「対AOUボリューム識別子」は、対応するAOUボリューム識別子で特定されるボリュームと対を形成するAOUボリューム29010L,29010Rの識別子が保持される。この識別子としては、対応する仮想化ストレージ装置1000L,1000Rの識別子と、対応するAOUボリューム29010L,29010Rの識別子とを組み合せたものが用いられる。
なお、上述のようにAOUの領域管理をセグメントを単位として行うのは、ブロック単位で管理するとAOUアドレス変換情報31030等の管理情報が大きくなりすぎてしまうためにI/O性能が悪化してしまうことが理由の一つである。
<2.2.AOUプール管理情報>
図36は、AOUプール管理情報31040の具体的な構成を示している。AOUプール管理情報31040はプール毎に以下の情報を保持する。
(1)セグメントサイズ
(2)プールに割り当てられたボリューム(プールボリューム)のリスト
(3)プールボリュームの領域で割り当てられていない領域のリスト
(4)空き容量
(5)容量が不足してきたことを警告するアラートを出すスレッショルド値
(6)プール対の相手が設定された仮想化ストレージ装置の識別子と当該装置内のプールID。なお、「プール対」については後ほど説明する。
<3.初期化>
本実施の形態の初期化は以下の手順で行われる。
1.プールの初期化
2.AOUボリュームの生成
3.AOUボリューム同士の関連付け
4.同期リモートコピーの設定
以下に、その詳細について説明する。なお、以下においては、一部処理の処理主体を「管理ホスト」や「プログラム」として説明しているが、「管理ホスト」の部分については、その管理ホスト内のプロセッサが当該管理ホスト内のメモリに格納された対応するプログラムに基づいてその処理を実行し、「プログラム」の部分については、対応する仮想化ストレージ装置1000L,1000R内のプロセッサ1011がそのプログラムに基づいて処理を実行することは言うまでもない。
<3.1.プールの初期化>
以下の手順で初期化を行う。
(Step1)管理ホスト1200からの指示によって、仮想化ストレージ装置1000L,1000Rの片方で実行されるAOU管理プログラム31020は、プールを作成する。この時、当該指示にはセグメントサイズが含まれる。また、プール作成の過程で、AOU管理プログラム31020はプールIDを含むAOUプール管理情報31040の該当エントリを作成する。
(Step2)Step1と同様の処理によって、仮想化ストレージ装置1000R,1000Lのもう片方にもプールを作成する。
(Step3)管理ホスト1200は、仮想化ストレージ装置1000L,1000Rの両方に対して、Step1とStep2で作成したプールをプール対に設定すべき指示を発行する。当該指示にはプール対となるプールのIDと、そのプールを提供する仮想化ストレージ装置1000L,1000Rの識別子との組が含まれる。当該指示を受信したAOU管理プログラム31020は、プール対となる相手の仮想化ストレージ装置1000L,1000RのAOU管理プログラム31020と通信を行い、両プールに設定されたセグメントサイズが等しく、両プールとも既にプール対になっていないことが確認できたときに、それらプールをプール対に設定する。なお、AOU管理プログラム31020は、かかるプールをプール対に設定するに際して、相手のプールIDの識別子をAOUプール管理情報31040に登録する。
(Step4)管理ホスト1200は、プールボリューム作成の指示を仮想化ストレージ1000L,1000Rの片方に発行する。なお、当該指示には仮想化ストレージ装置1000L,1000R内部に定義されたボリュームの識別子が含まれている。当該指示を受信した仮想化ストレージ装置1000L,1000RのAOU管理プログラム31020は、指定されたボリュームの属性をプールボリュームに変更し、指定されたボリュームの識別子をAOUプール管理情報31040のプールボリュームリストに追加する。
(Step5)管理ホスト1200は、Step3と同様の指示を仮想化ストレージ装置1000R,1000Lのもう片方へ発行する。指示を受け取った仮想化ストレージ装置1000R,1000Lのもう片方はStep3と同様の処理を行う。
なお、管理者が仮想化ストレージ装置1000内部のボリュームをAOUに用いないと判断した場合はStep4及びStep5は省略することができる。
(Step6)管理ホスト1200は、ストレージ装置1500Lのボリュームをプールボリュームに設定する指示を仮想化ストレージ装置1000L,1000Rのどちらかに発行する。なお、理解を容易にするために、以後の説明では、指示発行先を仮想化ストレージ装置1000L、支持発行先と対の仮想化ストレージ装置1000を仮想化ストレージ装置1000Rであるものとするが、逆の関係であってもよい。ここで、当該指示にはストレージ装置1500Lと当該ボリュームを識別する情報のほかに、当該ボリュームがプール対になっている相手の仮想化ストレージ装置1000Rが引き継ぐことを示す情報が含まれる。指示を受信した仮想化ストレージ装置1000LのAOU管理プログラム31020は、対の仮想化ストレージ装置1000Rと以下に示す連携を行う。
(A)指示を受信した仮想化ストレージ装置1000Lは、指示に含まれるストレージ装置1500Lのボリュームに対してリードリクエスト(又はライトリクエスト)を発行することで、当該ストレージ装置1500L及び当該ボリュームのいずれもが存在し、かつ当該ボリュームにアクセス可能であるかどうか確認する。ストレージ装置1500Lやかかるボリュームが存在しなかったり、当該ボリュームにアクセスができなかった場合は管理ホスト1200にエラーを返し、アクセス可能であった場合は次に進む。なお、当該エラーにはストレージ装置1500Lに対するアクセスができなかったことを示す情報を添付するものとし、この情報を管理ホスト1200において表示するようにしてもよい。
(B)指示を受信した仮想化ストレージ装置1000Lは、対の仮想化ストレージ装置1000Rに対してプールボリューム作成指示を転送する。なお、当該指示には管理ホスト1200からの指示に含まれていた対象ボリュームを識別する情報と、当該ボリュームがプール対に属する両方のプールで管理することを示す情報とが含まれている。なお、プールボリューム作成指示の転送先は、AOUプール管理情報31040における「プール対の識別情報」を参照することで特定できる。
(C)仮想化ストレージ装置1000Rは、(B)の指示を受信すると、(A)と同様の処理を行うことでストレージ装置1500L内のかかるボリュームにアクセス可能であることを確認する。そして、かかるボリュームにアクセス可能ならば、AOUプール管理情報31040のプールボリュームリストに当該ボリュームを共通管理であることを示す情報と共に追加し、前述の指示を受信した仮想化ストレージ装置1000Lへ結果を返す。一方、確認の結果、かかるボリュームにアクセスが不可能だった場合は、対の仮想化ストレージ装置1000Rからストレージ装置1500Lへのアクセスができなかったことを示す情報を添付して失敗を意味する結果を返す。
(D)結果を受け取った前述の指示を受信した仮想化ストレージ装置1000Lは、かかるボリュームへのアクセス結果が失敗だった場合は、理由と共にその結果を管理ホスト1200へ転送し、一連の処理を終了する。一方、かかるボリュームへのアクセス結果が成功だった場合は、この結果をAOUプール管理情報31040のプールボリュームリストに当該ボリュームが共通管理すべきボリュームであることを示す情報と共に追加し、管理ホスト1200へ成功を意味する結果を転送し、終了する。
なお、(C)及び(D)でボリュームをプールボリュームリストに追加した場合、AOU管理プログラム21020は、対応する「空き容量」の欄に格納されていた空き容量を、追加したボリュームの容量を加算した値に更新し、そのボリュームの領域を空き領域リストに追加する。また、Step5の処理は管理ホスト1200から仮想化ストレージ装置1000L,1000Rの両方に対して別々に指示を発行することで行っても良い。
(Step7)管理ホスト1200は、仮想化ストレージ装置1000L,1000Rの両方に対して容量警告の設定値の設定指示を転送し、当該指示を受信した仮想化ストレージ装置1000L,1000Rの各々は指示に含まれる値をAOUプール管理情報31040に設定する。
<3.2.AOUボリュームの作成>
AOUボリューム29010L,29010Rの作成は、仮想化ストレージ装置1000L,1000Rの各々に対して指示を出すことで行われる。以下にその手順を示す。
(Step1)管理ホスト1200は、ボリュームの容量とプールIDを伴ったAOUボリューム作成指示を、仮想化ストレージ装置1000L,1000Rの各々へ転送する。
(Step2)当該指示を受信した仮想化ストレージ装置1000Lは、新しいAOUボリューム29010Lに関するAOUアドレス変換情報31030Lを作成する。このとき全てのセグメントについて、対応する「COWフラグ」及び「引継ぎ領域」を「No」に設定し、「プールボリューム領域識別子」も「NULL」に設定する。そして仮想化ストレージ装置1000Lは作成完了応答を返す。
(Step3)同様に、該指示を受信した仮想化ストレージ装置1000Rは、新しいAOUボリューム29010Rに関するAOUアドレス変換情報31030Rを作成する。作成の詳細はStep2と同様である。
なお、AOUボリューム29010L,29010Rの作成は、管理ホスト1200から仮想化ストレージ装置1000L,1000Rのいずれか片方に指示を出し、指示を受けた仮想化ストレージ装置1000L,1000Rが対の仮想化ストレージ装置R,1000Lに指示を出し直してもよい。なお、ボリューム作成指示にポートネームやLUNを含めることでAOUボリューム29010L,29010Rに管理者が指定したポートネーム配下のLUNを割り当ててもよい。また、AOUボリューム29010L,29010Rの作成指示後にポートネームとLUNを割り当ててもよい。
<3.3.AOUボリューム同士の関連付け>
それぞれの仮想化ストレージ装置1000L,1000Rに作成したAOUボリューム29010L,29010R同士を関連付ける。そのために、管理ホスト1200は、仮想化ストレージ装置1000L,1000Rにそれら2つのAOUボリューム29010L,29010Rの識別子を含む関連付け指示を転送する。当該指示を受けた仮想化ストレージ装置1000L,1000Rは、AOUアドレス変換情報31030の該当する「AOUボリューム識別子」の欄に、対となるAOUボリューム29010L,29010Rを登録する。本指示は、それぞれの仮想化ストレージ装置1000L,1000Rに対して行うことでAOUボリューム29010L,29010R同士の関連付けが行われるが、他の実施の形態に開示されている通り、片方の仮想化ストレージ装置1000L,1000Rがもう片方の仮想化ストレージ装置1000R,1000Lに本指示を転送する形で実現してもよい。
なお、上記関連付けの指示の際、指示に含まれるAOUボリューム29010L,29010Rの存在を確認すると共に、AOUボリューム29010L,29010Rの片方がプール対の片方のプールから生成されており、もう片方のAOUボリューム29010R,29010Lがプール対のもう片方のプールから生成されていることを確認することで、プール管理の実装を簡単にしてもよい。また、本関連付けはAOUボリューム29010L,29010Rの作成や同期リモートコピーの設定に伴って行われても良い。
<3.4.同期リモートコピーの設定>
これまで説明した同期リモートコピーではInitial‐Copying状態でボリュームの全ての領域をコピーする必要があったが、本実施の形態では、形成コピーは以下に示す手順で行う。また、理解を簡単にするために、以後の説明では正系の仮想化ストレージ装置1000を仮想化ストレージ装置1000Lとし、副系の仮想化ストレージ装置1000を仮想化ストレージ装置1000Rであるものとして説明する。
(Step1)コピー元となる(すなわち当該ボリュームに対しては正系となる)仮想化ストレージ装置1000Lは、変数iにAOUボリューム29010Lの先頭セグメントを代入する。
(Step2)コピー元の仮想化ストレージ装置1000Lは、AOUアドレス変換情報31030におけるセグメントiの「引継ぎ領域」及び「プールボリューム領域識別子」をそれぞれ確認し、それぞれの条件下で以下の処理をおこなう。
(A)「引継ぎ領域」が「No」の場合には、通常の形成コピーに従ってセグメントiのデータをコピーする。仮想化ストレージ装置1000L内部のプールボリュームの領域のため、冗長性確保のためにコピーしなければならないからである。
(B)「引継ぎ領域」が「Yes」の場合には、セグメントiに関するその仮想化ストレージ装置1000L内の図示しないキャッシュメモリ上のダーティデータをデステージングするか、形成コピーでコピー先(すなわち当該ボリュームに対しては副系となる)仮想化ストレージ装置1000Rのキャッシュ領域へコピーする。キャッシュメモリ上のデータを除けばデータは正系の仮想化ストレージ装置1000Lの外部にあるため、キャッシュメモリ上のデータを当該仮想化ストレージ1000Lの外部へ追い出せば正系の仮想化ストレージ装置1000Lが機能停止しても失うデータはないからである。
(C)「プールボリューム領域識別子」が「NULL」の場合には、セグメントiには正系・副系共に領域が割り当てられていないため、コピーは行わない。
(Step3)コピー元の仮想化ストレージ装置1000Lは、セグメントiが最後の場合は形成コピーを終えてペア状態をDuplex状態に遷移させ、そうでない場合は変数iに次のセグメントを設定してStep1へ戻る。
なお、上記処理は、仮想化ストレージ装置1000L,1000R間の再同期処理で用いてもよく、片方の仮想化ストレージ装置1000L,1000Rが機能停止し、復旧した後の処理で用いてもよい。
<4.I/Oリクエスト処理について>
ここから、本実施の形態のI/Oリクエスト処理について説明する。
<4.1.ライトリクエスト処理>
図32は、AOU向けI/O処理プログラム31010がライトリクエストを受信したときに実行する処理内容を示すフローチャートである。なお、これまでの説明では、ライトリクエストを構成するコマンドとライトデータの個々についてフローチャートを用いた説明はしなかったが、本処理はライトリクエスト対象の一部の領域が割り当て済みで他の領域が未割り当てである場合もあるため、フローチャートを参照しながら詳細に説明する。
(S32001)AOU向けI/O処理プログラム31010は、ライトリクエストを構成するライトコマンドを受信する。このライトコマンドにはアドレス(位置)及びデータ長が含まれる。
(S32100)AOU向けI/O処理プログラム31010は、受信したライトコマンドを元に割り当て処理を実行する。本処理を実行することで、AOU向けI/O処理プログラム31010は、セグメント毎にプールボリュームの領域が割り当てられているか否かをチェックし、プールボリュームの領域が未割り当てのセグメントや、他のセグメントと共有の領域を割り当てられている場合で「COWフラグ」が「ON」のセグメント(ライトの際には共有領域以外に書き込む必要があるセグメント)に対しては、プールボリュームの領域を割り当てる。またAOU向けI/O処理プログラム31010は、かかるプールボリュームの領域の割り当て結果をAOUアドレス変換情報31030に反映させる。
(S32003)AOU向けI/O処理プログラム31010は、AOUボリューム29010R,29010Lの属性を確認し、当該AOUボリューム29010R,29010Lがコピー元ボリュームの場合にはS32004を実行し、そうでなければS32005を実行する。
(S32004)AOU向けI/O処理プログラム31010は、リモートコピープログラム6010を呼び出すことでコピー先ボリュームを有する仮想化ストレージ装置(副系の仮想化ストレージ装置)1000Rに同期リモートコピーのコマンドを転送する。
(S32005)AOU向けI/O処理プログラム31010は、S32001に対応するライトリクエストを構成するライトデータ(の一部又は全て)を受信する。
(S32006)AOU向けI/O処理プログラム31010は、AOUボリューム29010R,29010Lの属性を確認し、当該AOUボリューム29010R,29010Lがコピー元ボリュームの場合はS32007を実行し、そうでなければS32008を実行する。
(S32007)AOU向けI/O処理プログラム31010は、リモートコピープログラム6010を呼び出すことで、コピー先ボリュームを有する仮想化ストレージ装置(副系の仮想化ストレージ装置)1000Rにライトデータを転送する。
(S32008)AOU向けI/O処理プログラム31010は、AOUアドレス変換情報31030に基づいてAOUボリューム29010R,29010L上のアドレスから、実際にライトデータが保存されるプールボリュームの領域を求める。そして求めた領域に対するライトデータをキャッシュメモリ上で保存・管理する。
(S32009)AOU向けI/O処理プログラム31010は、ライトデータ受信の続きの有無を判断し、続きがある場合はS32005を再び実行する。
(S32010)AOU向けI/O処理プログラム31010は、ライト完了の応答を正系の仮想化ストレージ装置1000L又はホスト1100に転送し、このライトリクエスト処理を完了する。
なお、副系の仮想化ストレージ装置1000Rは、同期リモートコピーのコマンドの受信をホスト1100からのライトコマンドの受信と同様に扱う。同様に、仮想化ストレージ装置1000Rは、同期リモートコピーのデータ転送によるデータ受信をホスト1100からのライトデータの受信と同様に扱う。これによって副系の仮想化ストレージ装置1000Rでのライトリクエスト処理が理解されるであろう。
<4.1.1.割り当て処理>
以下に図32の割り当て処理について説明する。
(S32101)AOU向けI/O処理プログラム31010は、ライトコマンドで指定されたライト範囲(即ちライトアドレスとデータ長)をセグメント毎に分割する。
(S32102)AOU向けI/O処理プログラム31010は、分割で生成した複数のセグメントの最初のセグメントを変数iに代入する。
(S32103)AOU向けI/O処理プログラム31010は、セグメントiの割り当て状態やCOW(Copy On Write)が必要かどうかを判断する。なお、このときの判断にはAOUアドレス変換情報31030を用いる。かかる判断の結果、プールボリュームの領域の割り当てが不要な場合はS32105を実行し、プールボリュームの領域が未割り当ての場合や、割り当て済みであってもCOWフラグが立っている場合は(例えば、他のAOUボリューム29010R,29010L上のセグメントと割り当て領域を共有している場合)S32104を実行する。
(S32104)AOU向けI/O処理プログラム31010は、セグメントiに割り当てるため、プールボリュームの領域から未使用の領域を探す。そして、探した領域をAOUアドレス変換情報31030の「プールボリューム領域識別子」へ登録する。なお、未使用領域が見つからない場合は、ライトコマンドが失敗したことを示す応答を転送して、この割り当て処理を終了する。
なお、失敗応答を転送する際には、この失敗応答と共に何らかのエラーメッセージを返しても良く、当該失敗応答の原因としてプールの容量不足が原因であることを示す情報を含めても良い。さらに、「COWフラグ」が立っている場合の領域割り当ての場合、AOU向けI/O処理プログラム31010は、領域割り当てに際して旧領域(共有領域)から割り当て領域へデータコピーを行うようにしてもよい。ただし、セグメントi全体がライト対象の場合はこのデータコピーを省略することができる。また、領域の割り当てに伴って、AOU向けI/O処理プログラム31010は、AOUプール管理情報の空き領域リストを編集し、空き容量の削減を行うようにしてもよい。
さらに、AOU向けI/O処理プログラム31010は、割り当てたプールボリューム上の領域と当該領域を割り当てたAOUボリューム29010R,29010Lのセグメントの情報を副系の仮想化ストレージ装置1000Rへ転送する。なお、当該割り当て情報は同期リモートコピーのコマンドと共に転送してもよい。
(S32105)AOU向けI/O処理プログラム31010は、次のセグメントが存在するかどうか確認し、存在する場合はS32106を実行し、存在しない場合は本処理を終了し、ライトリクエスト処理へ戻る。
(S32106)AOU向けI/O処理プログラム31010は、変数iに次のセグメントを代入する。
以上の処理によって、仮想化ストレージ装置1000Lは、セグメント毎の割り当て状況を確認し、必要ならばセグメントにプールボリュームの領域を割り当てる。
<4.1.2.副系のプールボリューム領域割り当て方法>
副系の仮想化ストレージ装置1000Rのプールボリューム領域割り当てステップ(S32104)は、正系の仮想化ストレージ装置1000Lから受信した割り当て情報を元に以下の方法によって、セグメントに対して領域を割り当てる。
(A)正系の仮想化ストレージ装置1000Lが共有のストレージ装置(すなわちストレージ装置1500L)のプールボリュームから領域を割り当てた場合には、副系の仮想化ストレージ装置1000Rは、AOUアドレス変換情報31030における対応するセグメントの「引継ぎ領域」を「Yes」に、「プールボリューム領域識別子」を受信した領域識別子に設定する。これによって、共有ストレージ装置1500Lに関するプールボリューム領域の割り当ては正系と副系で同じ対応になる。
(B)正系の仮想化ストレージ装置1000Lが仮想化ストレージ装置1000R内部のボリュームから領域を割り当てた場合には、副系の仮想化ストレージ装置1000Rは、内部ボリュームの空き領域を探して該当するセグメントに割り当てる。その結果、AOUアドレス変換情報31030における当該セグメントの「引継ぎ領域」は「No」に、「プールボリューム領域識別子」は内部ボリュームの領域が設定される。これによって、正系の仮想化ストレージ装置1000Lが内部ボリュームの領域を割り当てたセグメントは副系の仮想化ストレージ装置1000Rでも内部ボリュームを割り当てることができる。
<4.2.リードリクエスト処理>
図33は、AOU向けI/O処理プログラム31010が、リードリクエストを受信したときに実行する処理内容を示すフローチャートである。以下に当該フローチャートを参照して、かかる処理内容について説明する。
(S33001)AOU向けI/O処理プログラム31010は、リードリクエストを構成するリードコマンドを受信する。なお、受信したリードコマンドにはアドレス(位置)及びデータ長が含まれる。
(S33002)AOU向けI/O処理プログラム31010は、リードコマンドで指定されたリード範囲(即ちライトアドレスとデータ長)をセグメント毎に分割する。
(S33003)AOU向けI/O処理プログラム31010は、分割で生成した複数のセグメントの最初のものを変数iに代入する。
(S33004)AOU向けI/O処理プログラム31010は、セグメントiにプールボリュームの領域が割り当てられているかどうかを判断する。なお、判断にはAOUアドレス変換情報31030を用いる。かかる判断の結果、プールボリュームの領域が割り当てられる場合にはS33006を実行し、プールボリュームの領域が未割り当ての場合にはS33005を実行する。
(S33005)AOU向けI/O処理プログラム31010は、その仮想化ストレージ装置1000L,1000R内のキャッシュメモリ上に当該セグメント向けのキャッシュ領域を確保し、確保したキャッシュ領域をゼロで初期化し、ホスト1100へゼロデータを転送する。
(S33006)AOU向けI/O処理プログラム31010は、割り当てられたプールボリュームの領域に保存されたデータを転送する。なお、当該プールボリュームの領域が既にキャッシュ領域に存在する場合(ステージング済みの場合)には、かかるデータをそのキャッシュ領域から転送し、キャッシュ領域に存在しない場合はステージング後に、当該データの転送を行う。
(S33008)AOU向けI/O処理プログラム31010は、続きのセグメントがあるかどうかを判断し、ある場合はS33009を実行し、ない場合はS33010を実行する。
(S33009)AOU向けI/O処理プログラム31010は、変数iに次のセグメントを代入し、再びS33004を実行する。
(S33010)AOU向けI/O処理プログラム31010は、リード完了の応答をホスト1100に転送し、完了する。
なお、処理の単純化のために、仮想化ストレージ装置1000Lはプールボリュームのある決められた領域に対して予め定められた値(ゼロ)を保存しておき、当該領域に保存されたデータをAOUボリューム29010R,29010Lの未割り当て領域に対するリードで転送してもよい。
<4.3.AOU向けデステージング処理>
図34はAOU向けI/O処理プログラム31010が実行するデステージング処理の処理内容を示すフローチャートである。以下、かかるデステージング処理について、当該フローチャートを参照しながら説明する。
(S34001)AOU向けI/O処理プログラム31010は、キャッシュアルゴリズムによってデステージ対象とするキャッシュメモリ上のデータを決定する。なお、キャッシュアルゴリズムはLRU(Less Recently Used)アルゴリズムを用いてダーティデータを対象として決定する方法が一般的であるが、これ以外のアルゴリズムを用いて決定してもよい。
(S34002)AOU向けI/O処理プログラム31010は、デステージ対象のデータが共有ストレージ装置(すなわち、ストレージ装置1500L)が有するボリュームに対応するものかどうかを判断し、対応する場合はS34003を実行し、対応しない場合はS34004を実行する。
(S34003)AOU向けI/O処理プログラム31010は、デステージング処理を実行し、その後、この一連の処理を終了する。なお、デステージング処理は他の実施の形態と同様に行われる。
(S34004)AOU向けI/O処理プログラム31010は、デステージ対象のデータが格納されたボリュームのボリューム属性を判断し、当該ボリュームがコピー元ボリュームである場合にはS34005を実行し、当該ボリュームがコピー先ボリュームの場合にはS34007を実行し、それ以外の場合はS34003を実行する。
(S34005)AOU向けI/O処理プログラム31010は、デステージング処理を実行する。
(S34006)AOU向けI/O処理プログラム31010は、デステージが終了したデータのRCデステージ許可指示を副系の仮想化ストレージ装置1000Rへ転送し、処理を終了する。
(S34007)AOU向けI/O処理プログラム31010は、RCデステージ許可フラグがONかどうかを確認し、OFFの場合はS34001を再び実行し、別なデステージ対象のデータを選択し直す。なお、RCデステージ許可フラグは、同期リモートコピーによってキャッシュメモリ上にライトデータが保存又は更新された時点ではOFFが設定され、S34006で送信された指示を受信するとONが設定される。
(S34008)AOU向けI/O処理プログラム31010は、デステージング処理を実行し、処理を終了する。
本アルゴリズムによって、以下のキャッシュ制御が実現される。
(A)共有ストレージ装置向けでなく、正系と副系の仮想化ストレージ装置1000L,1000Rでデステージを連携する必要のないキャッシュデータは両系独立にデステージを行う。
(B)正系の仮想化ストレージ装置1000Lでのデステージ処理後に送信されるメッセージによって、副系の仮想化ストレージ装置1000Rのキャッシュデータのデステージが行われる。
なお、ステージング処理は、第1〜第14の実施の形態と同様に行なわれる。
<4.3.1.RCデステージ許可指示>
RCデステージ許可指示の転送は、非同期に指示を送信してもよい。ただし、正系及び副系の仮想化ストレージ装置1000L,1000Rはリモートコピーを契機として、RCデステージフラグに未反映の当該指示を無効化してもよい。
<4.4.プールの空き領域監視>
AOU管理プログラム31020は、定期的に各プールの空き領域を監視し、ユーザーが設定したスレッショルド値を下回った場合は、管理ホスト1200へメッセージを送信する。これによって、容量不足に伴うホスト1100からのライトリクエストの失敗を回避することができる。さらに、AOU管理プログラム31020は、空き領域の監視を共有のストレージ装置1500Lと共有でないストレージ装置とで分けて管理し、容量不足の際に転送するメッセージを使い分けても良い。
<5.正系の仮想化ストレージ装置障害時の切り替え>
正系の仮想化ストレージ装置1000Lが障害などで機能を停止した場合は、他の実施の形態と同様の処理を行うことでホスト1100は引きつづきアプリケーションを動作させることができる。
一方で、ホスト1100は、コピー元ボリュームに対するライトリクエストが容量不足で失敗したことを契機として副系の仮想化ストレージ装置1000RにI/Oリクエスト先を切り替える場合もある。副系の仮想化ストレージ装置1000Rが有するプール容量が正系よりも多い場合は、当該切り替えによって、ホスト1100においてI/Oリクエストを発行しているアプリケーション2010(図30)の処理を継続することができるからである。
なお、この場合はリクエスト先の切り替えによってリモートコピーの向きは反転するが、リモートコピーは停止する。なぜならば、旧正系の仮想化ストレージ装置1000Lはライトリクエスト時のプール容量不足で当該リクエストが失敗しているので、同期リモートコピーによって新正系(旧副系)の仮想化ストレージ装置1000Rに対してライトデータを書き込もうとしても失敗するからである。
ただし、旧正系の仮想化ストレージ装置1000Lに対するリクエスト(特にリード)は継続可能であるため、本障害は仮想化ストレージ装置1000L,1000R間の通信路障害と見分けがつかず、ホスト1100が旧正系の仮想化ストレージ1000Lの古いデータをリードする可能性がある。
こうした状況を回避するため、リモートコピー失敗の理由がプール容量不足である場合には、ホスト1100からの旧正系の仮想化ストレージ装置1000Lへのリードリクエスト発行を抑制してもよい。あるいは、リモートコピー失敗の理由が絞れない間は、ホスト1100からの副系の仮想化ストレージ装置1000Rまたは1000Lに対するリードを抑制し、通信路障害であることが判明した時点でかかる抑制を解除するようにしてもよい。
以上の処理によって、本実施の形態によるストレージシステムがサービス継続性の高いAOU機能を持ったストレージサービスを提供することができる。また、AOU機能は、I/Oリクエスト毎にAOUアドレス変換情報31030L,31030Rを参照・変更する必要があり、通常のストレージI/Oよりもコントローラーの負荷が高い。したがって、ホスト1100が必要とするボリュームの一部(又は半分)については片方の仮想化ストレージ装置1000L,1000Rが正系としてリードとライトを担当し、残りのボリュームについてはもう片方の仮想化ストレージ装置1000R,1000Lが正系としてリードとライトを担当するようにしてもよい。このような構成を採用することで、ストレージシステムの可用性を維持しつつ、仮想化ストレージ装置1000L,1000Rとの間でのAOU機能のコントローラー負荷の平準化を実現できる。
<6.プールボリューム領域の割り当てとデータ移行について>
これまでに述べたとおり、本実施の形態では仮想化ストレージ装置1000L,1000R内部のボリュームとストレージ装置1500Lのボリュームの両方をプールボリュームとすることができる。そのため、アクセス頻度の高いデータが格納される又は格納されたセグメントに対して仮想化ストレージ装置1000L,1000R内部のボリュームを割り当てることによって、アクセス性能の向上が図れるほかに、仮想化ストレージ装置1000L,1000Rとストレージ装置1500Lとの間の通信ネットワークのボトルネック化を回避することもできる。
しかし、AOUでは最初のライトリクエストによってセグメントにプールボリュームの領域を割り当てるため、仮想化ストレージ装置1000L,1000R単体でアクセス頻度を考慮した割り当てをすることは難しい。こうした課題を解決する方法として以下の方法が考えられる。
<6.1.AOUボリュームに属性を付加する方法>
AOUボリューム29010L,29010Rを作成する時点でアクセス頻度に関する属性を与え、AOU向けI/O処理プログラム31010がセグメントにプールボリュームの領域の割り当てを行う際に、そのセグメントに書き込まれるデータのアクセス頻度がある程度分かっているときには、かかるアクセス頻度属性を参照して、アクセス頻度の高いデータが格納されるセグメントについてはその仮想化ストレージ装置1000L,1000R内部のボリュームを割り当て、アクセス頻度の低いデータ(例えばバックアップデータ)が格納されるセグメントについてはストレージ装置1500L内のボリュームの領域を割り当てる。
<6.2.プールボリューム領域のデータ移行>
AOUボリューム29010L,29010Rに対するアクセス頻度をセグメント単位(又は複数セグメント単位)で測定し、アクセス頻度の高いセグメントに格納されているデータは仮想化ストレージ装置1000L,1000R内部のプールボリュームの領域に移動させる。この場合、データの移行に伴って、AOUボリューム29010L,29010Rにおける当該データの移行が行なわれたセグメントの対応先をストレージ装置1500L内のボリューム内のセグメントから、仮想化ストレージ装置1000L,1000Rにおけるデータの移行先のセグメントに変更する必要があるが、AOU機能では元々仮想化ストレージ装置1000L,1000R内においてアドレス変換を行っているため、ホスト1100に対して透過的にデータ移行を行うことができる。
なお、本実施の形態でこのようなデータ移行を行う場合、対象となるセグメントのデータは、正系と副系の両方の仮想ストレージ装置1000L,1000R内部のプールボリュームに保存されることが望ましい。しかし、他に効果がある場合(以下に列挙した)は片方のセグメントだけ仮想化ストレージ装置1000L,1000R内部のプールボリュームの領域が割り当てられた形態にデータ移行を行うことも考えられる。
(例1)どちらかの仮想化ストレージ装置1000L,1000Rが先に内部のプールボリュームを使い果たし、共有のストレージ装置1500Lしかない場合。
(例2)コピー元のAOUボリューム29010Lに対するリードリクエストの負荷が大きく、正系の仮想化ストレージ装置1000Lとストレージ装置1500Lの間のネットワーク性能を圧迫する場合。
こうした場合、正系の仮想化ストレージ装置1000Lは、ストレージ装置1500L内部のプールボリュームの領域から自身のプールボリュームの領域にセグメントのデータをコピーし、コピー先の領域を用いてAOUボリューム29010Lを提供する。一方の副系の仮想化ストレージ装置1000Rはコピー元のストレージ装置1500Lのプールボリュームの領域を用いてAOUボリューム29010Rを提供することもできる。この場合、ストレージ装置1500Lのプールボリュームの領域に対するライトデータの反映は副系の仮想化ストレージ装置1000Rが行っても良い。
さらに、リードもライトも含めたアクセス性能向上のためのセグメントのデータ移行の中間状態として、前述の正系の仮想化ストレージ装置1000Lだけ内部のプールボリュームの領域を用い、副系の仮想化ストレージ装置1000Rがストレージ装置1500Lのプールボリュームを用いる構成を採用してもよい。
<7.本実施の形態のバリエーション>
<7.1.ステージングやデステージング処理でアドレス変換を実施>
これまで述べてきた本実施の形態では、リードリクエスト処理やライトリクエスト処理でアドレス変換を行っている。本方法は、ライトリクエストの受付の時点で、プールボリュームの容量不足を契機とした失敗応答を返すことができる反面、リクエスト毎にアドレス変換を行うため、性能上の課題がある。こうした課題を解決する方法としてステージングやデステージング処理でアドレス変換を行う方法が考えられる。ただし、この方法ではデステージングの時点でセグメントに対してプールボリュームの領域の割り当てを行うため、HDD1030の二重閉塞等が原因のボリューム閉塞時と類似するデータ消失が発生する。そのため、後者の方式では空き容量に余裕が少なくなってきた時点からリクエストの処理を遅らせるか停止する等の処理を行っても良い。
なお、具体的な処理はこれまで図32及び図33について説明してきた処理内容を以下に示すとおりに変更すればよい。
(ライトとデステージング)図32のS32100の割り当て処理をデステージング処理のS34001の後に移動する。
(リードとステージング)図33のS33004〜S33006で行っているアドレス変換を伴った割り当て有無の判断と未割り当て時のゼロデータの転送とを、ステージングにて行う。
さらに、両者の利点を併せ持つために、AOU向けI/O処理プログラム31010が、プールボリュームの空き容量がスレッショルド値以上の場合にはステージング/デステージング処理で変換を行い、かかる空き容量がスレッショルド値以下になった場合にはI/Oリクエスト処理で変換を行ってもよい。
<7.2.De‐Duplication>
AOU管理プログラム31010は、I/Oリクエストとは独立にDe‐duplicationと呼ばれる以下の処理を行っても良い。
(Step1)AOU管理プログラム31010は、各プールボリュームの領域のデータをスキャンし、重複するセグメントを探す。
(Step2)AOU管理プログラム31010は、プールボリューム領域同士で保存するデータが重複している事を検知した場合、いずれか一つの領域だけを残し他の領域は空き領域として開放する。そして、AOUアドレス変換情報31030における開放した領域に対応したセグメントの「プールボリューム領域識別子」は一つだけ残した領域に更新し、「COWフラグ」を「ON」にする。
ここで、重複検知の方法としては、プールボリュームの領域毎のハッシュ値を計算後に、領域毎に、そのハッシュ値を他の領域のハッシュ値と順次比較し、同じ値の場合はさらに実際のデータを比較する2段階方式を採用してもよい。さらに、ハッシュ値の計算とデータの比較は負荷の高い処理であるため、副系の仮想化ストレージ装置1000Rにて処理を行うことで負荷分散を行うことも考えられる。
図1は、第1の実施の形態にかかる情報システムのハードウェア構成の一例を示すブロック図である。 図2は、第1の実施の形態の概要を示す第1の概念図である。 図3は、第1の実施の形態の概要を示す第2の概念図である。 図4は、第1の実施の形態の概要を示す第3の概念図である。 図5は、ホスト上のソフトウェア構成を表した概念図である。 図6は、仮想化ストレージ装置及びストレージ装置上のソフトウェア構成を表したブロック図である。 図7は、リモートコピーのペア状態とペア状態の遷移を表した概念図である。 図8は、I/Oパスマネージャーが管理するデバイス関係テーブルを示す概念図である。 図9は、I/Oパスマネージャーが初期化処理を行うときのフローを示したフローチャートである。 図10は、I/Oパスマネージャーがライト処理を行うときのフローを示したフローチャートである。 図11は、I/Oパスマネージャーがリード処理を行うときのフローを示したフローチャートである。 図12は、第2の実施の形態の概要を示す概念図である。 図13は、第3の実施の形態の概要を示す概念図である。 図14は、第4の実施の形態の概要を示す概念図である。 図15は、第5の実施の形態の概要を示す概念図である。 図16は、第6の実施の形態の概要を示す概念図である。 図17は、第7の実施の形態の概要を示す概念図である。 図18は、第8の実施の形態の概要を示す概念図である。 図19は、第9の実施の形態の概要を示す概念図である。 図20は、第10の実施の形態の概要を示す概念図である。 図21は、第11の実施の形態の概要を示す概念図である。 図22は、第12の実施の形態の概要を示す概念図である。 図23は、第13の実施の形態の概要を示す概念図である。 図24は、第14の実施の形態の概要を示す概念図である。 図25は、I/Oパスマネージャーがライト処理を行うときの別なフローを示したフローチャートである。 図26は、I/Oパスマネージャーがリード処理を行うときの別なフローを示したフローチャートである。 図27は、I/Oパスマネージャーが図25に記したライト処理を行うときに、ストレージ装置にて行うライトリクエストに応じたペア操作を示したフローチャートである。 図28は、第15の実施の形態の概要を示す概念図である。 図29は、第16の実施の形態の概要を示す概念図である。 図30は、第16の実施の形態の概要を示す概念図である。 図31は、本実施の形態における仮想化ストレージ装置及びストレージ装置上のソフトウェア構成を表したブロック図である。 図32は、仮想化ストレージ装置がライト処理を行うときのフローを示したフローチャートである。 図33は、仮想化ストレージ装置がリード処理を行うときのフローを示したフローチャートである。 図34は、AOU向けでステージング処理のフローを示したフローチャートである。 AOUアドレス変換情報の具体的内容の説明に供する概念図である。 AOUプール管理情報の具体的内容の説明に供する概念図である。
符号の説明
1000,1000L,1000R……仮想化ストレージ装置、1010……コントローラー、1011,1101……プロセッサ、1020,1020L,1020R……キャッシュメモリ、1030……HDD、1100,13010,14000……ホスト、1500,1500L,1500R,15000,15000L,15000R……ストレージ装置,2800L,2800R……仮想化スイッチ、3500LB,3500RB,5040,5050……ボリューム、2010,14002……アプリケーションプログラム、5000……I/Oパスマネージャー、5010……HBAデバイスドライバー、5020……ファイルシステム、13001,13002……ストレージサブシステム、15002A,15002B……コマンドデバイス、15010A,15010B……差分ビットマップ、16000……外部ストレージ装置。

Claims (4)

  1. ファイルシステム、HBAデバイスドライバーを備えるオペレーティングシステム、及び前記ファイルシステムを通じてライトリクエストを送信するアプリケーションを備えるホストコンピューターと、前記ホストコンピューターに接続される第1のストレージ装置と、前記第1のストレージ装置及び前記ホストコンピューターに接続される第2のストレージ装置と、前記第1のストレージ装置及び前記第2のストレージ装置に接続され、複数の第1のHDDとコントローラーとキャッシュメモリから構成され、前記複数の第1のHDDの一部の領域から構成される第1のボリュームを有する第3のストレージ装置と、を有する情報システムのデータ転送方法であって、
    前記第1のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在する第1の仮想ボリュームを定義し、
    前記第2のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在し、当該第1のボリュームを前記第1の仮想ボリュームと共有する第2の仮想ボリュームを定義し、
    前記第1のストレージ装置及び前記第2のストレージ装置は、それぞれ複数の第2のHDDとコントローラーとキャッシュメモリとを備え、それぞれ前記複数の第2のHDDの一部の領域から構成される第2のボリュームも有し、
    前記第1のストレージ装置及び前記第2のストレージ装置は、前記第1の仮想ボリュームのデータを前記第2の仮想ボリュームへコピーするリモートコピーを設定し、
    前記ホストコンピューターは、前記ファイルシステムがライトリクエスト処理を行う際、前記リモートコピーに関する情報を管理するI/Oパスマネージャーが前記ファイルシステムを通じた前記アプリケーションからのライトリクエストを前記リモートコピーに関する情報に基づいて、前記HBAデバイスドライバーを通じて前記第1の仮想ボリュームが存在する前記第1のストレージ装置へ送信し、
    前記第1のストレージ装置は、受信した前記ライトリクエストが前記第1の仮想ボリューム宛なのか前記第1のストレージ装置の前記第2のボリューム宛なのかを判断し、
    前記第1の仮想ボリューム宛の場合、前記ライトリクエストのデータを前記第1のストレージ装置及び前記第2のストレージ装置の前記キャッシュメモリに記憶し、
    前記第1のストレージ装置の前記キャッシュメモリからデステージするデータを特定し、当該特定したデータをデステージしてから前記第2のストレージ装置の前記キャッシュメモリに記憶された当該データの破棄を指示する
    ことを特徴とする情報システムのデータ転送方法。
  2. 請求項1記載の方法であって、
    前記第1のストレージ装置と、前記2のストレージ装置との間の通信に障害が発生した場合、前記第1のストレージ装置は、前記通信障害を前記ホストコンピューターに通知し、前記ホストコンピューターは、前記第1のストレージ装置と、前記第2のストレージ装置とにライトリクエストを発行する
    ことを特徴とする情報システムのデータ転送方法。
  3. 請求項1記載の方法であって、
    前記第1のストレージ装置の障害にかかわらずアプリケーションが継続処理可能である
    ことを特徴とする情報システムのデータ転送方法。
  4. ファイルシステム、HBAデバイスドライバーを備えるオペレーティングシステム、及び前記ファイルシステムを通じてライトリクエストを送信するアプリケーションを備えるホストコンピューターと、前記ホストコンピューターに接続される第1のストレージ装置と、前記第1のストレージ装置及び前記ホストコンピューターに接続される第2のストレージ装置と、前記第1のストレージ装置及び前記第2のストレージ装置に接続され、複数の第1のHDDとコントローラーとキャッシュメモリから構成され、前記複数の第1のHDDの一部の領域から構成される第1のボリュームを有する第3のストレージ装置と、を有する情報システムのデータ転送方法であって、
    前記第1のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在する第1の仮想ボリュームを定義し、
    前記第2のストレージ装置は、前記第3のストレージ装置の前記第1のボリュームに実体が存在し、当該第1のボリュームを前記第1の仮想ボリュームと共有する第2の仮想ボリュームを定義し、
    前記第1のストレージ装置及び前記第2のストレージ装置は、それぞれ複数の第2のHDDとコントローラーとキャッシュメモリとを備え、それぞれ前記複数の第2のHDDの一部の領域から構成される第2のボリュームも有し、
    前記第1のストレージ装置及び前記第2のストレージ装置は、前記第1の仮想ボリュームのデータを前記第2の仮想ボリュームへコピーするリモートコピーを設定し、
    前記ホストコンピューターは、前記ファイルシステムがライトリクエスト処理を行う際、前記リモートコピーに関する情報を管理するI/Oパスマネージャーが前記ファイルシステムを通じた前記アプリケーションからのライトリクエストを前記リモートコピーに関する情報に基づいて、前記HBAデバイスドライバーを通じて前記第1の仮想ボリュームが存在する前記第1のストレージ装置へ送信し、
    前記第1のストレージ装置は、受信した前記ライトリクエストが前記第1の仮想ボリューム宛なのか前記第1のストレージ装置の前記第2のボリューム宛なのかを判断し、
    前記第1の仮想ボリューム宛の場合、前記ライトリクエストのデータを前記第1のストレージ装置及び前記第2のストレージ装置の前記キャッシュメモリに記憶し、
    前記第1のストレージ装置の前記キャッシュメモリからデステージするデータを特定し、当該特定したデータをデステージする一方、
    前記第1のストレージ装置と、前記第2のストレージ装置との間の通信に障害が発生した場合、前記第1のストレージ装置は、前記通信障害を前記ホストコンピューターに通知し、前記ホストコンピューターは、前記第1のストレージ装置と、前記第2のストレージ装置とにライトリクエストを発行し、
    前記第1のストレージ装置及び前記第2のストレージ装置は、自らを正系として前記ライトリクエストを処理する場合には、前記第3のストレージ装置の前記第1のボリュームに対して排他制御を行った後に、当該第1のストレージ装置又は当該第2のストレージ装置の前記キャッシュメモリに記憶した前記データを前記第1のボリュームにデステージする
    ことを特徴とする情報システムのデータ転送方法。
JP2007085680A 2006-10-30 2007-03-28 情報システム及び情報システムのデータ転送方法 Expired - Fee Related JP5057366B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2007085680A JP5057366B2 (ja) 2006-10-30 2007-03-28 情報システム及び情報システムのデータ転送方法
US11/850,925 US8595453B2 (en) 2006-10-30 2007-09-06 Information system and data transfer method of information system
EP20070254110 EP1918818B1 (en) 2006-10-30 2007-10-17 Information system and data transfer method of information system
CN 200710166833 CN101174197B (zh) 2006-10-30 2007-10-22 信息系统及信息系统的数据转发方法
US13/564,828 US8832397B2 (en) 2006-10-30 2012-08-02 Information system and data transfer method of information system
US14/261,496 US20140237179A1 (en) 2006-10-30 2014-04-25 Information system and data transfer method of information system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2006293485 2006-10-30
JP2006293485 2006-10-30
JP2007085680A JP5057366B2 (ja) 2006-10-30 2007-03-28 情報システム及び情報システムのデータ転送方法

Publications (2)

Publication Number Publication Date
JP2008134987A JP2008134987A (ja) 2008-06-12
JP5057366B2 true JP5057366B2 (ja) 2012-10-24

Family

ID=39074921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007085680A Expired - Fee Related JP5057366B2 (ja) 2006-10-30 2007-03-28 情報システム及び情報システムのデータ転送方法

Country Status (4)

Country Link
US (3) US8595453B2 (ja)
EP (1) EP1918818B1 (ja)
JP (1) JP5057366B2 (ja)
CN (1) CN101174197B (ja)

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7409583B2 (en) * 2002-10-07 2008-08-05 Hitachi, Ltd. Volume and failure management method on a network having a storage device
JP5057366B2 (ja) 2006-10-30 2012-10-24 株式会社日立製作所 情報システム及び情報システムのデータ転送方法
JP4958673B2 (ja) 2007-07-26 2012-06-20 株式会社日立製作所 ストレージシステム及びこれの管理方法
JP4990066B2 (ja) * 2007-08-21 2012-08-01 株式会社日立製作所 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
JP2009093316A (ja) 2007-10-05 2009-04-30 Hitachi Ltd ストレージシステム及び仮想化方法
US9619171B2 (en) 2007-10-05 2017-04-11 Hitachi, Ltd. Storage system and virtualization method
US8838541B2 (en) * 2007-10-25 2014-09-16 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
WO2009054834A1 (en) 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8140637B2 (en) 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
JP4958739B2 (ja) * 2007-11-09 2012-06-20 株式会社日立製作所 障害の発生した記憶装置に記憶されているデータを修復するストレージシステム
US8370833B2 (en) * 2008-02-20 2013-02-05 Hewlett-Packard Development Company, L.P. Method and system for implementing a virtual storage pool in a virtual environment
JP5401041B2 (ja) 2008-02-21 2014-01-29 株式会社日立製作所 ストレージシステム及びコピー方法
US20090240880A1 (en) * 2008-03-21 2009-09-24 Hitachi, Ltd. High availability and low capacity thin provisioning
US8065559B2 (en) * 2008-05-29 2011-11-22 Citrix Systems, Inc. Systems and methods for load balancing via a plurality of virtual servers upon failover using metrics from a backup virtual server
US8204868B1 (en) * 2008-06-30 2012-06-19 Symantec Operating Corporation Method and system for improving performance with single-instance-storage volumes by leveraging data locality
JP2010039986A (ja) * 2008-08-08 2010-02-18 Hitachi Ltd データのバックアップを管理する計算機システム及び方法
US8019732B2 (en) 2008-08-08 2011-09-13 Amazon Technologies, Inc. Managing access of multiple executing programs to non-local block data storage
JP5138530B2 (ja) * 2008-10-08 2013-02-06 株式会社日立製作所 ストレージ容量仮想化技術における障害管理方式
JP5028381B2 (ja) 2008-10-22 2012-09-19 株式会社日立製作所 ストレージ装置およびキャッシュ制御方法
JP5232602B2 (ja) * 2008-10-30 2013-07-10 株式会社日立製作所 ストレージ装置、及びストレージコントローラ内部ネットワークのデータ経路フェイルオーバー方法
US8041987B2 (en) * 2008-11-10 2011-10-18 International Business Machines Corporation Dynamic physical and virtual multipath I/O
JP2010122964A (ja) * 2008-11-20 2010-06-03 Toshiba Corp ディスクアレイ装置
WO2010084522A1 (en) * 2009-01-20 2010-07-29 Hitachi, Ltd. Storage system and method for controlling the same
JP4806037B2 (ja) * 2009-01-26 2011-11-02 株式会社東芝 データ記憶システム及び非同期レプリケーション方法
JP2010176185A (ja) * 2009-01-27 2010-08-12 Hitachi Ltd リモートコピーシステム及びパス設定支援方法
JP4740354B2 (ja) 2009-06-19 2011-08-03 富士通株式会社 ディスク制御装置およびディスク制御方法
US20110196825A1 (en) * 2009-09-29 2011-08-11 Hitachi, Ltd. Storage system and data duplication method in the same
US8479210B2 (en) * 2009-10-20 2013-07-02 International Business Machines Corporation Evenly distributing workload and providing a predictable failover scenario in a data replication system
JP5589393B2 (ja) * 2010-01-13 2014-09-17 富士通株式会社 データベースシステムおよびデータベース制御方法
US9195500B1 (en) 2010-02-09 2015-11-24 F5 Networks, Inc. Methods for seamless storage importing and devices thereof
JP5323982B2 (ja) * 2010-03-09 2013-10-23 株式会社日立製作所 ボリューム管理装置及びストレージシステム
US8392753B1 (en) * 2010-03-30 2013-03-05 Emc Corporation Automatic failover during online data migration
US8874746B1 (en) * 2010-05-24 2014-10-28 Datacore Software Corporation Collaboration between discrete systems and a shared system to consolidate shared storage-related services
US9286298B1 (en) * 2010-10-14 2016-03-15 F5 Networks, Inc. Methods for enhancing management of backup data sets and devices thereof
JP5623239B2 (ja) * 2010-10-28 2014-11-12 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 書込みレコードの重複を排除する記憶装置、及びその書込み方法
US9348515B2 (en) 2011-01-17 2016-05-24 Hitachi, Ltd. Computer system, management computer and storage management method for managing data configuration based on statistical information
US9747300B2 (en) 2011-06-15 2017-08-29 Amazon Technologies, Inc. Local networked storage linked to remote networked storage system
JP5729173B2 (ja) * 2011-06-30 2015-06-03 富士通株式会社 制御装置、制御方法およびストレージ装置
US9020912B1 (en) 2012-02-20 2015-04-28 F5 Networks, Inc. Methods for accessing data in a compressed file system and devices thereof
US20130238852A1 (en) * 2012-03-07 2013-09-12 Hitachi, Ltd. Management interface for multiple storage subsystems virtualization
CN104364774B (zh) 2012-04-27 2017-10-20 不列颠哥伦比亚大学 去重复虚拟机镜像转移器
EP2811412A4 (en) * 2012-06-25 2016-03-09 Hitachi Ltd COMPUTER SYSTEM AND METHOD FOR MIGRATION OF APPLICATION PROGRAM EXECUTION ENVIRONMENT
JP5752327B2 (ja) * 2012-06-26 2015-07-22 株式会社日立製作所 ストレージシステム、及びストレージシステムの制御方法
US9152552B2 (en) * 2012-09-11 2015-10-06 International Business Machines Corporation Securing sensitive information in a network cloud
US9098466B2 (en) * 2012-10-29 2015-08-04 International Business Machines Corporation Switching between mirrored volumes
WO2014076736A1 (en) * 2012-11-15 2014-05-22 Hitachi, Ltd. Storage system and control method for storage system
US9606910B2 (en) * 2013-01-17 2017-03-28 Hitachi, Ltd. Method and apparatus for data reduction
US9678673B2 (en) 2013-03-28 2017-06-13 Hewlett Packard Enterprise Development Lp Coordinating replication of data stored in a non-volatile memory-based system
CN105144119A (zh) 2013-05-08 2015-12-09 株式会社日立制作所 存储系统及数据管理方法
JP2014002785A (ja) * 2013-09-04 2014-01-09 Hitachi Ltd 計算機システム、管理計算機およびストレージ管理方法
GB2534956A (en) * 2013-10-09 2016-08-10 Hitachi Ltd Storage system and storage control method
JP6279731B2 (ja) * 2014-06-11 2018-02-14 株式会社日立製作所 ストレージシステム、ストレージ装置及びデータ移行方法
US9218407B1 (en) * 2014-06-25 2015-12-22 Pure Storage, Inc. Replication and intermediate read-write state for mediums
WO2016018252A1 (en) 2014-07-29 2016-02-04 Halliburton Energy Services, Inc. Efficient way of reporting issues associated with reservoir operations to support team
US10185636B2 (en) * 2014-08-15 2019-01-22 Hitachi, Ltd. Method and apparatus to virtualize remote copy pair in three data center configuration
US10747440B2 (en) * 2014-09-24 2020-08-18 Hitachi, Ltd. Storage system and storage system management method
US10474372B1 (en) * 2014-11-07 2019-11-12 Amazon Technologies, Inc. Optimizing geometry based on workload characteristics
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9817729B2 (en) 2015-07-30 2017-11-14 Zerto Ltd. Method for restoring files from a continuous recovery system
US9781681B2 (en) * 2015-08-26 2017-10-03 Hand Held Products, Inc. Fleet power management through information storage sharing
US9942134B2 (en) 2015-09-30 2018-04-10 International Business Machines Corporation Holding of a link in an optical interface by a lower level processor until authorization is received from an upper level processor
CN105430063A (zh) * 2015-11-05 2016-03-23 浪潮(北京)电子信息产业有限公司 一种多控共享存储系统间远程复制方法
CN106560806B (zh) * 2015-12-31 2020-07-14 哈尔滨安天科技集团股份有限公司 基于二维平面成角的文件存储方法及系统
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10169155B2 (en) * 2016-03-30 2019-01-01 EMC IP Holding Company LLC System and method for synchronization in a cluster environment
US10007671B1 (en) * 2016-03-30 2018-06-26 EMC IP Holding Company LLC Data storage system employing space reclaim approximation
US9891849B2 (en) * 2016-04-14 2018-02-13 International Business Machines Corporation Accelerated recovery in data replication environments
US10437730B2 (en) 2016-08-22 2019-10-08 International Business Machines Corporation Read cache synchronization in data replication environments
US20180143766A1 (en) * 2016-11-18 2018-05-24 International Business Machines Corporation Failure protection copy management
CN110300960B (zh) * 2017-02-28 2023-04-04 株式会社日立制作所 信息系统、管理程序和信息系统的程序更换方法
US10528256B2 (en) 2017-05-24 2020-01-07 International Business Machines Corporation Processing a space release command to free release space in a consistency group
US10489087B2 (en) 2017-05-24 2019-11-26 International Business Machines Corporation Using a space release data structure to indicate tracks to release for a space release command to release space of tracks in a consistency group being formed
CN107168894B (zh) * 2017-06-30 2020-08-25 联想(北京)有限公司 内存共享访问方法及电子设备
US11016698B2 (en) 2017-07-04 2021-05-25 Hitachi, Ltd. Storage system that copies write data to another storage system
CN107832014A (zh) * 2017-11-07 2018-03-23 长沙曙通信息科技有限公司 一种远程数据缓冲存储转发实现方法和装置
US10809938B2 (en) * 2018-03-06 2020-10-20 International Business Machines Corporation Synchronized safe data commit scans in multiple data storage systems
JP7043952B2 (ja) * 2018-04-17 2022-03-30 富士通株式会社 ストレージ装置及びストレージ制御プログラム
US10691369B2 (en) * 2018-04-23 2020-06-23 Hewlett Packard Enterprise Development Lp Pool partner based replication
JP7304215B2 (ja) * 2019-06-18 2023-07-06 株式会社日立製作所 ストレージシステムおよび履歴情報管理方法
US11656781B2 (en) * 2019-10-11 2023-05-23 International Business Machines Corporation Distributing sequential read streams across synchronous mirror pairs
US11513684B1 (en) * 2021-06-23 2022-11-29 EMC IP Holding Company LLC Data storage system management techniques and metrics
JP2023103850A (ja) * 2022-01-14 2023-07-27 株式会社日立製作所 ストレージシステム、連携方法、およびプログラム

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
KR0128271B1 (ko) 1994-02-22 1998-04-15 윌리암 티. 엘리스 재해회복을 위한 일관성 그룹 형성방법 및 레코드갱싱의 섀도잉 방법, 주시스템, 원격데이타 섀도잉 시스템과 비동기 원격데이타 복제 시스템
JP3228182B2 (ja) 1997-05-29 2001-11-12 株式会社日立製作所 記憶システム及び記憶システムへのアクセス方法
JP4115060B2 (ja) 2000-02-02 2008-07-09 株式会社日立製作所 情報処理システムのデータ復旧方法及びディスクサブシステム
US7111189B1 (en) * 2000-03-30 2006-09-19 Hewlett-Packard Development Company, L.P. Method for transaction log failover merging during asynchronous operations in a data storage network
US7275100B2 (en) * 2001-01-12 2007-09-25 Hitachi, Ltd. Failure notification method and system using remote mirroring for clustering systems
JP4175788B2 (ja) 2001-07-05 2008-11-05 株式会社日立製作所 ボリューム制御装置
US7421509B2 (en) 2001-09-28 2008-09-02 Emc Corporation Enforcing quality of service in a storage network
US7080197B2 (en) 2002-04-18 2006-07-18 Lsi Logic Corporation System and method of cache management for storage controllers
US6973586B2 (en) 2002-04-29 2005-12-06 International Business Machines Corporation System and method for automatic dynamic address switching
US7085956B2 (en) 2002-04-29 2006-08-01 International Business Machines Corporation System and method for concurrent logical device swapping
JP4100968B2 (ja) 2002-06-06 2008-06-11 株式会社日立製作所 データマッピング管理装置
JP4124331B2 (ja) * 2002-09-17 2008-07-23 株式会社日立製作所 Dbms向け仮想ボリューム作成・管理方法
JP4292882B2 (ja) 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
JP4394467B2 (ja) 2004-01-29 2010-01-06 株式会社日立製作所 ストレージシステム、サーバ装置及び先行コピーデータ生成方法
US7266654B2 (en) 2003-03-18 2007-09-04 Hitachi, Ltd. Storage system, server apparatus, and method for creating a plurality of snapshots
US7120824B2 (en) * 2003-05-09 2006-10-10 International Business Machines Corporation Method, apparatus and program storage device for maintaining data consistency and cache coherency during communications failures between nodes in a remote mirror pair
US7467168B2 (en) * 2003-06-18 2008-12-16 International Business Machines Corporation Method for mirroring data at storage locations
US7043665B2 (en) * 2003-06-18 2006-05-09 International Business Machines Corporation Method, system, and program for handling a failover to a remote storage location
JP4374953B2 (ja) 2003-09-09 2009-12-02 株式会社日立製作所 データ処理システム
JP2005309550A (ja) * 2004-04-19 2005-11-04 Hitachi Ltd リモートコピー方法及びリモートコピーシステム
JP4598387B2 (ja) 2003-09-17 2010-12-15 株式会社日立製作所 記憶システム
JP2006221487A (ja) * 2005-02-14 2006-08-24 Hitachi Ltd リモートコピーシステム
JP4282464B2 (ja) 2003-12-17 2009-06-24 株式会社日立製作所 リモートコピーシステム
JP4422519B2 (ja) * 2004-03-18 2010-02-24 株式会社日立製作所 情報処理システム
US7770059B1 (en) 2004-03-26 2010-08-03 Emc Corporation Failure protection in an environment including virtualization of networked storage resources
JP4476683B2 (ja) 2004-04-28 2010-06-09 株式会社日立製作所 データ処理システム
US7461100B2 (en) * 2004-05-27 2008-12-02 International Business Machines Corporation Method for fast reverse restore
US7131027B2 (en) * 2004-07-09 2006-10-31 Hitachi, Ltd. Method and apparatus for disk array based I/O routing and multi-layered external storage linkage
US7058731B2 (en) 2004-08-03 2006-06-06 Hitachi, Ltd. Failover and data migration using data replication
US7171532B2 (en) * 2004-08-30 2007-01-30 Hitachi, Ltd. Method and system for data lifecycle management in an external storage linkage environment
JP2006293485A (ja) 2005-04-06 2006-10-26 Canon Inc 指標表示方法及び画像表示装置
JP2006293850A (ja) 2005-04-13 2006-10-26 Hitachi Ltd リモートコピーシステムおよびリモートコピー方法
JP4648751B2 (ja) * 2005-05-02 2011-03-09 株式会社日立製作所 記憶制御システム及び記憶制御方法
JP5057656B2 (ja) 2005-05-24 2012-10-24 株式会社日立製作所 ストレージシステム及びストレージシステムの運用方法
US7779218B2 (en) * 2005-07-22 2010-08-17 Hewlett-Packard Development Company, L.P. Data synchronization management
JP4955996B2 (ja) 2005-09-20 2012-06-20 株式会社日立製作所 ボリューム移行方法およびストレージネットワークシステム
US7702851B2 (en) 2005-09-20 2010-04-20 Hitachi, Ltd. Logical volume transfer method and storage network system
JP4646309B2 (ja) 2005-09-26 2011-03-09 新日本空調株式会社 デシカント式換気装置
US20070234105A1 (en) * 2006-03-31 2007-10-04 Quinn Brett A Failover to asynchronous backup site in connection with triangular asynchronous replication
JP5244332B2 (ja) * 2006-10-30 2013-07-24 株式会社日立製作所 情報システム、データ転送方法及びデータ保護方法
JP5057366B2 (ja) 2006-10-30 2012-10-24 株式会社日立製作所 情報システム及び情報システムのデータ転送方法

Also Published As

Publication number Publication date
US8595453B2 (en) 2013-11-26
JP2008134987A (ja) 2008-06-12
CN101174197A (zh) 2008-05-07
EP1918818A2 (en) 2008-05-07
EP1918818B1 (en) 2011-05-25
US8832397B2 (en) 2014-09-09
US20140237179A1 (en) 2014-08-21
US20120297157A1 (en) 2012-11-22
US20080104347A1 (en) 2008-05-01
EP1918818A3 (en) 2009-09-30
CN101174197B (zh) 2012-03-21

Similar Documents

Publication Publication Date Title
JP5057366B2 (ja) 情報システム及び情報システムのデータ転送方法
JP5244332B2 (ja) 情報システム、データ転送方法及びデータ保護方法
JP4902403B2 (ja) 情報システム及びデータ転送方法
US9632701B2 (en) Storage system
US8478958B2 (en) Method and apparatus for de-duplication after mirror operation
US8060777B2 (en) Information system and I/O processing method
US9292211B2 (en) Computer system and data migration method
US20050038968A1 (en) Multi-site remote-copy system
US20140208023A1 (en) Storage system and control method for storage system
JP2015207269A (ja) ストレージシステム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111011

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120327

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20120517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120521

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

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

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

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5057366

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees