JP2013524304A - ストレージシステム及びストレージシステムのデータ転送方法 - Google Patents

ストレージシステム及びストレージシステムのデータ転送方法 Download PDF

Info

Publication number
JP2013524304A
JP2013524304A JP2012546279A JP2012546279A JP2013524304A JP 2013524304 A JP2013524304 A JP 2013524304A JP 2012546279 A JP2012546279 A JP 2012546279A JP 2012546279 A JP2012546279 A JP 2012546279A JP 2013524304 A JP2013524304 A JP 2013524304A
Authority
JP
Japan
Prior art keywords
data
data transfer
storage
transfer control
temporary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012546279A
Other languages
English (en)
Other versions
JP5635621B2 (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
Publication of JP2013524304A publication Critical patent/JP2013524304A/ja
Application granted granted Critical
Publication of JP5635621B2 publication Critical patent/JP5635621B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • 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

Abstract

【要訳】
外部装置が利用するデータを格納する記憶装置と、前記外部装置から前記記憶装置に書き込むデータ、あるいは前記記憶装置から読み出されるデータを一時的に格納する第1及び第2の一時データ記憶部と、前記外部装置、及び前記第1及び第2の一時データ記憶部と通信可能に接続され、前記外部装置、及び前記第1及び第2の一時データ記憶部間でのデータ転送を制御する第1のデータ転送制御部と、前記第1及び第2の一時データ記憶部、及び前記記憶装置と通信可能に接続され、前記第1及び第2の一時データ記憶部、及び前記記憶装置間でのデータ転送を制御する第2のデータ転送制御部と、前記第1及び第2の一時データ記憶部に通信可能に接続され、前記第1及び第2の一時データ記憶部間でのデータ転送を制御するとともに、前記第1及び第2のデータ転送制御部が有しないデータ処理機能を実行する第3のデータ転送制御部と、前記外部装置からのデータI/O要求を受け付けた場合に、前記第1及び第2のデータ転送制御部によって、前記外部装置と前記記憶装置との間でのデータ転送を、前記第1の一時データ記憶部を介して実行する第1のデータ転送処理と、前記第1及び第2のデータ転送制御部によって前記外部装置又は前記記憶装置と前記第2の一時データ記憶部との間でのデータ転送を実行し、前記第3のデータ転送制御部によって前記第1の一時データ記憶部と前記第2の一時データ記憶部との間でのデータ転送を実行する第2のデータ転送処理とのいずれかを実行させる、データ転送制御管理部とを備えているストレージシステム。
【選択図】 図1

Description

本発明は、ストレージシステム及びストレージシステムのデータ転送方法に関し、特にハードウェア資源が限られている場合においても、より高いデータI/O性能を得ることができるストレージシステム及びストレージシステムのデータ転送方法に関する。
情報化社会において、ストレージシステムの重要性は増す一方であり、近年では特に低コストでありながら高性能なストレージシステムが市場から要求されている。
一般的に、ストレージシステムにおいては、ホストインタフェース(Host Interface、以下「ホストI/F」)及びディスクインタフェース(Disk Interface、以下「ディスクI/F」)が、それぞれホスト計算機−キャッシュメモリ間、キャッシュメモリ−記憶装置間のデータ転送処理を行っている場合が多い。なお、以下、ホストI/F及びディスクI/Fをまとめて「プロトコルチップ」と称することがある。
しかし、ストレージシステムの運用時には、汎用プロトコルチップでは対応困難な様々な課題が存在する。
例えば記憶装置からキャッシュメモリへデータを転送する際に、キャッシュメモリ上の領域に、未だディスクに書き込んでいない更新データであるダーティデータが存在する場合、このダーティデータを上書きしないように、該領域を避けてキャッシュメモリにデータを転送する必要があるため、複数回のディスクリードが必要になるという課題がある。この課題に対して、例えば特許文献1では、DMA(Direct Memory Access)と呼ばれるデータ転送コントローラの機能を用いてダーティデータが存在する領域のみをマスクし、必要な部分のみをキャッシュメモリに転送することで、ディスクリード回数を最小限に抑える手法(ビットマップステージング)が開示されている。
また、例えば特許文献2では、全てのデータが記憶装置に記憶できないという異常を検出するために、WRSEQ#と呼ばれる、汎用プロトコルチップではサポート困難な特殊な保証コードを、DMAにて転送データに付与/チェックする方法が開示されている。
この他にも、キャッシュメモリへの二重書き処理等、汎用プロトコルチップでは実現困難な機能を用いることを目的として、プロトコルチップとは別に、DMAを有するLSI(Large Scale Integration)を設け、DMAの持つ機能を使用するようにしたストレージシステムは多い。
特開平6−28261号公報 特開2009−64363号公報
通常、DMAを用いた処理を行う際にプロセッサで発生する処理遅延(以下「レイテンシ」)は、プロトコルチップのみを用いた転送を行う際のレイテンシよりも大きい。このレイテンシを隠蔽するためには、同時にデータの多重転送を行う必要があるが、データ多重転送を行うためには、それに応じた容量を持ったバッファを導入することが必要となる。また、ビットマップステージング、特殊な保証コードの付与/チェック等のDMAがもつ特殊な機能は、バッファ領域がキャッシュメモリ領域とは別の領域に存在することが前提となっている場合が多い。しかし、コストパフォーマンスが求められるミッドレンジクラス、エントリークラスのストレージシステムにおいては、限られたハードウェア資源で所定の性能を出したいという要求が強い。
本発明は以上の課題に鑑みて成されたものである。すなわち、本発明の一つの目的は、ミッドレンジクラス、エントリークラスのストレージシステムのように、ハードウェア資源が限られている場合においても、より高いデータI/O性能を得ることができるストレージシステム及びストレージシステムのデータ転送方法を提供することである。
上記の及び他の目的を達成するために、本発明の一つの態様は、外部装置が利用するデータを格納する記憶装置と、前記外部装置から前記記憶装置に書き込むデータ、あるいは前記記憶装置から読み出されるデータを一時的に格納する第1及び第2の一時データ記憶部と、前記外部装置、及び前記第1及び第2の一時データ記憶部と通信可能に接続され、前記外部装置、及び前記第1及び第2の一時データ記憶部間でのデータ転送を制御する第1のデータ転送制御部と、前記第1及び第2の一時データ記憶部、及び前記記憶装置と通信可能に接続され、前記第1及び第2の一時データ記憶部、及び前記記憶装置間でのデータ転送を制御する第2のデータ転送制御部と、前記第1及び第2の一時データ記憶部に通信可能に接続され、前記第1及び第2の一時データ記憶部間でのデータ転送を制御するとともに、前記第1及び第2のデータ転送制御部が有しないデータ処理機能を実行する第3のデータ転送制御部と、前記外部装置からのデータI/O要求を受け付けた場合に、前記第1及び第2のデータ転送制御部によって、前記外部装置と前記記憶装置との間でのデータ転送を、前記第1の一時データ記憶部を介して実行する第1のデータ転送処理と、前記第1及び第2のデータ転送制御部によって前記外部装置又は前記記憶装置と前記第2の一時データ記憶部との間でのデータ転送を実行し、前記第3のデータ転送制御部によって前記第1の一時データ記憶部と前記第2の一時データ記憶部との間でのデータ転送を実行する第2のデータ転送処理とのいずれかを実行させるデータ転送制御管理部とを備えているストレージシステムである。
本発明によれば、ミッドレンジクラス、エントリークラスのストレージシステムのように、ハードウェア資源が限られている場合においても、より高いデータI/O性能を得ることができるストレージシステム及びストレージシステムのデータ転送方法を提供することができる。
上記した以外の本発明の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
図1は、本発明が適用されるストレージシステム200を備える情報処理システム1の構成の一例を示す図である。 図2は、ホスト計算機100、管理装置110として使用することができるコンピュータ10の構成例である。 図3は、ホスト計算機100、管理装置110のソフトウェア構成例である。 図4は、ホストI/F201のハードウェア構成の一例を示す図である。 図5は、CPU203のハードウェア構成の一例を示す図である。 図6は、ディスクI/F208のハードウェア構成の一例を示す図である。 図7は、ローカルメモリ204に格納される情報の一例を示す図である。 図8は、ホストI/F201がデータ転送を行う際に使用する転送情報が格納されたホストI/F転送テーブル300の一例を示す図である。 図9は、ディスクI/F208がデータ転送を行う際に使用する転送情報が格納されたディスクI/F転送テーブル400の一例を示す図である。 図10は、DMA205がデータ転送を行う際に使用する転送情報が格納されたDMA転送テーブル500の一例を示す図である。 図11は、ローカルメモリ204にホストI/F転送テーブル300、ディスクI/F転送テーブル400、DMA転送テーブル500、及び直転送フラグ600が転送情報として格納されている状況の一例を示す図である。 図12は、ストレージシステム200での直転送の構成の一例を示す図である。 図13は、ストレージシステム200での二段転送の構成の一例を示す図である。 図14は、データ転送方式の選択処理の概略を示すフロー図である。 図15は、データ転送方式の選択処理の他の処理方式の一例を示すフロー図である。 図16は、図14のサブルーチンS901の処理の一例を示すフロー図である。 図17は、図14のサブルーチンS901の処理の他の例を示すフロー図である。 図18は、ホスト計算機100からキャッシュメモリ206へデータの二重書きを行う場合のデータの流れを示す模式図である。 図19は、記憶デバイス210からキャッシュメモリ206へデータの二重書きを行う場合のデータの流れを示す模式図である。 図20は、複数のダーティデータを、複数の記憶デバイス210に対して個別にデステージする場合のデータの流れを示す模式図である。 図21は、複数のダーティデータ間をステージングしたデータで埋めた後に、複数の記憶デバイス210に対してデステージする場合のデータの流れを示す模式図である。 図22は、図14のサブルーチンS901の他の例を示すフロー図である。 図23は、ビットマップステージング処理を用いずに、直転送でステージングする場合のデータの流れの一例を表す模式図である 図24は、ビットマップステージング処理を用いて、二段転送でステージングする場合のデータの流れの一例を表す模式図である。 図25は、図14のサブルーチンS902の一例を示すフロー図である。 図26は、バッファ領域207の一部をキャッシュメモリ206の領域へ変更する様子を示す模式図である。 図27は、キャッシュメモリ206の領域の一部をバッファ領域207へ変更する様子を示す模式図である。 図28は、データ転送方式の選択を行うための基準となる情報が格納された転送方式選択基準テーブル1800の一例を示す図である。 図29は、本発明が適用されるストレージシステム200a、200bを含む情報処理システム1の構成の一例を示す図である。 図30は、リモートコピー実施時に使用する制御情報が格納されたリモートコピー用制御情報テーブル1900の一例を示す図である。 図31は、図29の構成に適用される場合の図14のサブルーチンS901の一例を示すフロー図である。
以下、本発明を実施する形態として、第1の実施形態と、第2の実施形態とを、図面を参照して説明する。
《第1の実施形態》
最初に、本発明の第1の実施形態について、図1から図27を用いて説明する。図1に、第1の実施形態による情報処理システム1の構成例を示している。
第1の実施形態は、単一のストレージシステム内で実行される本発明のデータI/O処理に関する。図1に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の構成は図1に示すものに限定されない。
図1に示す第1の実施形態の情報処理装置1は、ホスト計算機100(外部装置)と、ホスト計算機100と通信可能に接続されているストレージシステム200と、ストレージシステム200と通信可能に接続されている管理装置110とを備えている。
ホスト計算機100は、ストレージシステム200内部に存在するホストI/F201に接続されており、当該ホスト計算機100上で動作しているアプリケーション等のソフトウェアのデータ記憶領域としてストレージシステム200を利用する。図1の例では1台のホスト計算機100がストレージシステム200に接続されているが、複数のホスト計算機100を接続してもよい。
図2にホスト計算機100に適用することができるコンピュータ10の一例を示している。コンピュータ10は、CPU(Central Processing Unit)11、揮発性または不揮発性のメモリ12(RAM(Random Access Memory)またはROM(Read-Only Memory))、記憶装置13(例えばHDD(Hard Disk Drive)、SSD(Solid State Drive))、キーボードやマウス等の入力装置14、液晶モニタやプリンタ等の出力装置15、及びNICやHBA等の通信インタフェース(通信I/F16と表記する。)を備える。
図3に、ホスト計算機100のソフトウェア構成の一例を示している。ホスト計算機100は、ホスト計算機100のハードウェア資源を制御する基本ソフトウェアであるオペレーティングシステム(Operating System、以下「OS」)101と、OS101上で動作する応用ソフトウェアである各種のアプリケーション102と、外部装置との間でのデータI/O処理を実行するデータI/O部103とを備えている。アプリケーション102からストレージシステム200へのデータライト、及びストレージシステム200からのデータリードは、データI/O部103を通じて発行されるホストI/O要求を、後述するストレージシステム200のホストI/F201に送信することによって実行される。
管理装置110は、キーボードやマウス等の入力装置を介してストレージシステム200の管理者からの指示を受信し、受信した運用・保守指示をストレージシステム200内部に設けられている管理I/F211を介して各機器に送信する機能を有する。管理装置110は、例えばパーソナルコンピュータやオフィスコンピュータであり、前記した図2に例示のコンピュータ10の構成を有する。
管理装置110は、ストレージシステム200と一体として構成しても(同一筐体に実装されていても)よい。管理装置110は、前記のホスト計算機100と同様に、例えば図3に示すソフトウェア構成を有し、ストレージシステム200の制御や監視のためのGUI(Graphical User Interface)やCLI(Command Line Interface)等を用いたユーザインタフェースを備えるアプリケーション112と、OS111及びデータI/O部113とを備える。
内部ネットワーク202を介して行われる通信は、例えば、ファイバーチャネル、iSCSI、TCP/IP等のプロトコルに従って行われる。
次に、本実施形態のストレージシステム200について説明する。図1に例示するように、ストレージシステム200は、ホストI/F201(第1のデータ転送制御部)と、内部ネットワーク202と、CPU203と、ローカルメモリ204と、DMA205(第3のデータ転送制御部)と、キャッシュメモリ206(第1の一時データ記憶部)と、ディスクI/F208(第2のデータ転送制御部)と、記憶装置209と、管理I/F211とを備えて構成される。なお、ホストI/F201と、内部ネットワーク202と、CPU203と、ローカルメモリ204と、DMA205と、キャッシュメモリ206と、ディスクI/F208と、記憶装置209と、管理I/F211とは、ストレージシステム200内にそれぞれ複数設けられていても構わない。
キャッシュメモリ206は、ホスト計算機100と記憶装置210の間で授受されるデータを一時的に格納するメモリであり、例えば高速アクセスが可能なRAMを用いて構成される。また、本実施形態では、キャッシュメモリ206は、内部にバッファ207(第2の一時データ記憶部)を有する。このバッファ207は、後述するように、ホストI/F201がホスト計算機100とキャッシュメモリ206との間でのデータ転送を制御する際、あるいはディスクI/F208が、記憶装置209とキャッシュメモリ206との間でのデータ転送を制御する際に、転送データを一時的に格納する記憶領域として使用される。なお、バッファ207は、キャッシュメモリ206と別のハードウェアとしての他のメモリに設けるようにしてもよい。キャッシュメモリ206には、内部ネットワーク202を通じて、ホストI/F201、CPU203、DMA205、及びディスクI/F208がアクセスすることができる。
記憶装置209は、ディスクI/F208を介して内部ネットワーク202と接続されており、複数の記憶デバイス210(HDD、SSD、フレキシブルディスク、磁気テープ、光ディスク等)を備えて構成されている。以下の説明において、記憶装置209は、例えばSAS(Serial Attached SCSI)、SATA(Serial ATA)、FC(Fibre Channel)、PATA(Parallel ATA)、SCSI等のタイプのHDD、もしくはSSDを用いて構成されているものとする。
記憶装置209は、記憶デバイス210をRAID(Redundant Arrays of Inexpensive (or Independent) Disks)等の制御方式で制御することによって提供される記憶領域(例えばRAIDグループ(パリティグループ(Parity Group)の記憶領域)を用いて構成される論理装置(LDEV: Logical Device)を単位とする記憶領域を提供する。すなわち、ストレージシステム200は、ホスト計算機100に対し、LDEVを用いて構成される論理的な記憶領域(LU:Logical Unit)を提供する。
ホストI/F201は、ホスト計算機100と、キャッシュメモリ206またはバッファ207との間のデータ転送を実行する機能を備え、内部ネットワーク202によりキャッシュメモリ206またはバッファ207に接続されている。図4にホストI/F201のハードウェア構成の一例を示している。ホストI/F201は、ホスト計算機100と通信するためのポート(通信ポート)を有する外部通信インタフェース(以下、外部通信I/F2011と表記する。)、プロセッサ2012、メモリ2013、内部ネットワーク202と通信するためのポート(通信ポート)を有する内部通信インタフェース(以下、内部通信I/F2014と表記する。)を備える。
このうち外部通信I/F2011は、例えばNIC(Network Interface Card)やHBA(Host Bus Adaptor)を用いて構成される。プロセッサ2012は、例えばCPU、MPU(Micro Processing Unit)を用いて構成される。メモリ2013は、RAM、ROM等である。内部通信I/F2014は、内部ネットワーク202を介して、CPU203、ローカルメモリ204、ディスクI/F208、キャッシュメモリ206、バッファ207と通信を行う。
CPU203は、ローカルメモリ204に格納された各種のコンピュータプログラムを実行することによって、ホスト計算機100と記憶装置209との間でのデータの授受を制御する。図5にCPU203のハードウェア構成の一例を示している。CPU203は、内部通信インタフェース(以下、内部通信I/F2031と表記する。)、プロセッサ2032、及びメモリ2033を備える。内部通信I/F2031は、内部ネットワーク202を介してホストI/F201、ディスクI/F208、ローカルメモリ204、キャッシュメモリ206と通信を行う。内部通信I/F2031はまた、内部ネットワーク202とは別に設けられた管理ネットワークを経由して、管理I/F211を通じて管理装置110と通信を行う。プロセッサ2032は、適宜の演算プロセッサである。メモリ2033は、RAM又はROMであり、CPU203のデータI/Oに関するバッファ等として使用される。
ローカルメモリ204は、CPU203と接続されており、CPU203から発行される命令等を格納する機能を有し、RAM、ROM等のメモリと、このメモリをCPU203に接続するインタフェース回路とを備える。図7に、ローカルメモリ204に格納されるコンピュータプログラム及びデータ等の一構成例を示している。
図7の例では、ローカルメモリ204には、CPU203によって読み出されて実行されることによりデータ転送方式管理部2041及びデータ転送方式判定部2042の機能を実現するコンピュータプログラムと、ホストI/F転送テーブル300、ディスクI/F転送テーブル400、DMA転送テーブル500、及び直転送フラグ600を含むデータテーブル類が格納されている。
データ転送方式管理部2041(データ転送制御管理部)は、CPU203によるホスト計算機100、キャッシュメモリ206、バッファ207、及び記憶装置209の間でのデータ転送制御機能を提供する。データ転送方式管理部2041とともにデータ転送制御管理部を構成するデータ転送方式判定部2042は、DMA205を用いたデータ転送を実行するかを判定する機能を提供する。
ホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500は、それぞれCPU203がホスト計算機100からホストI/O要求を受け取る毎に、ホストI/O要求の内容に従ってローカルメモリ204上に生成する。これらのテーブル300、400、及び500については後述する。
直転送フラグ600は、ホストI/O要求等に含まれる各種転送条件を基に、CPU203によってON又はOFFに設定される。CPU203は、該直転送フラグ600に記録されているデータを基に、DMA205を使用したデータ転送処理を実行するかを判断する。直転送フラグ600がONに設定されている場合には、DMA205によるデータ転送処理は行われない。なお、図7では、直転送フラグ600がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、直転送フラグ600はキャッシュメモリ206やバッファ207の一部に格納してもよい。
なお、ローカルメモリ204に格納されるコンピュータプログラム、データテーブル類は、必ずしも図7に示したブロックの単位で構成する必要はなく、以下に詳述する本発明の実施形態の機能を実現するように構成されていればよい。
DMA205は、キャッシュメモリ206と、バッファ207との間のデータ転送を実行する機能を有し、汎用プロトコルチップでは実現することができない様々な特殊機能を備える。DMA205が有する特殊機能については後述する。DMA205は、内部ネットワーク202によりキャッシュメモリ206またはバッファ207に接続されている。DMA205のハードウェア構成の一例としては、前記の特殊機能を含む所用のデータ転送機能を有するように構成されるカスタムLSIが挙げられる。なお、DMA205は、プロセッサにより実現する等、他のハードウェア構成を採用することもできる。
ディスクI/F208は、記憶装置209と、キャッシュメモリ206またはバッファ領域207との間のデータ転送を実行する機能を有し、内部ネットワーク202によりキャッシュメモリ206またはバッファ207に接続されている。図6にディスクI/F208のハードウェア構成の一例を示している。ディスクI/F208は、内部通信I/F2081、プロセッサ2082、メモリ2083、及びドライブインタフェース(以下、ドライブI/F2084と表記する。)を備える。内部通信I/F2081は、内部ネットワーク202を介して、ホストI/F201、CPU203、ローカルメモリ204、キャッシュメモリ206、バッファ207と通信する。プロセッサ2082は、例えばCPU、MPUである。メモリ2083は、例えばRAM、ROMである。ドライブI/F2084は、記憶装置209と通信する。なお、図1、2、及び4〜6に示したハードウェア構成は本実施形態における一例であって、例えば各ハードウェア構成要素をストレージシステム200としてどのように実装するかは、性能上、設計上の要請によって適宜決定することができる。
本実施形態においては、図7に関して説明したように、ホスト計算機100からホストI/O要求を受け付けたCPU203が、ホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500を作成してローカルメモリ204に格納し、ホストI/F201と、ディスクI/F208と、DMA205とが、それぞれこれらの転送テーブル300、400、及び500に記録されている内容に従いデータ転送を行う。以下にホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500の詳細を説明する。
まず、ホストI/F転送テーブル300について説明する。図8は、後述のホストI/F201によるデータ転送時にホストI/F201が参照して用いる制御情報を格納したホストI/F転送テーブル300の一構成例を示すものである。ホストI/F転送テーブル300は、ホスト計算機100から受領したホストI/O要求を基にCPU203によって作成され、ホストI/F201は、該ホストI/F転送テーブル300に記録されている情報を基にデータ転送を実行する。図7では、ホストI/F転送テーブル300がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、キャッシュメモリ206や、バッファ207の一部に格納してもよい。
ホストI/F転送テーブル300中に格納される情報について順次説明すると、まず転送長301には、ホストI/F201が転送すべきデータの長さが格納される。
転送種別情報302には、ホストI/F転送テーブル300を用いて行われるデータ転送処理が、ホスト計算機100からバッファ207またはキャッシュメモリ206へのライト処理、バッファ207またはキャッシュメモリ206からホスト計算機100へのリード処理のいずれであるかの情報、ホストI/F201が実施可能な機能を用いた特殊なI/O処理の実施判定等が格納される。
データ格納元アドレス303には、ホスト計算機100からのホストI/O要求がリード処理である場合に、I/O処理の対象となるデータが格納されているキャッシュメモリ206またはバッファ207のアドレス情報が格納される。
データ格納先アドレス304には、ホスト計算機100からのホストI/O要求がライト処理である場合に、I/O処理の対象となるデータを格納する、キャッシュメモリ206またはバッファ207のアドレス情報が格納される。
ステータス返送先アドレス305には、ホストI/F201がデータ転送処理終了後にその転送終了をCPU203に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ204のアドレス情報が格納される。
保証コード付与の要否判定情報306には、ホストI/F201が付与可能な保証コードについて、付与が必要か否かの情報が格納される。この保証コード付与が必要か否かの情報は、CPU203がホストI/O要求の内容から判定して、例えばON/OFFの符号として格納する。保証コードは、ホスト計算機100から記憶装置209にデータをライトするときに、同一データのリード時にその整合性をチェックするために元のデータに付与されるコードであり、例えば512バイト単位でリード/ライトされるデータに8バイトの保証コードを付与する方式等が採用される。
保証コード設定値307には、保証コード付与の要否判定情報306がONに設定されている場合に、ホストI/F201によって付与される保証コードの設定値が格納される。
保証コードチェックの要否判定情報308には、ホストI/F201がチェック可能な保証コードについて、ホスト計算機100からのホストI/O要求がリード処理である場合にチェックが必要か否かの情報が格納される。この保証コードチェックが必要か否かの情報は、CPU203がホストI/O要求の内容から判定して、例えばON/OFFの符号として格納する。保証コード期待値309には、保証コードチェックの要否判定情報308がONに設定されている場合に、ホストI/F201によるチェックに使用される保証コードの期待値が格納される。なお、ホストI/F転送テーブル300に格納される情報は、図8に記載された情報に限定されない。
次に、ディスクI/F転送テーブル400について説明する。図9は、後述のディスクI/F208によるデータ転送時にディスクI/F208が参照して用いる制御情報を格納したディスクI/F転送テーブル400の一構成例を示すものである。ディスクI/F転送テーブル400は、ホスト計算機100から受領したホストI/O要求を基にCPU203によって作成され、ディスクI/F208は、ディスクI/F転送テーブル400に記録されている情報を基にデータ転送を実行する。図7では、ディスクI/F転送テーブル400がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、キャッシュメモリ206、あるいはバッファ207の一部に格納してもよい。
ディスクI/F転送テーブル400中に格納される情報について順次説明すると、まず転送長401にはディスクI/F208が転送すべきデータの長さが格納される。
転送種別情報402には、ディスクI/F転送テーブル400を用いてディスクI/F208によって実行されるデータ転送処理が、バッファ207またはキャッシュメモリ206から記憶装置209へのライト処理、記憶装置209からバッファ207またはキャッシュメモリ206へのリード処理のいずれであるかの情報、ディスクI/F208が実施可能な機能を用いた特殊なI/O処理の実施判定等が格納される。
データ格納元アドレス403には、ホスト計算機100からのホストI/O要求がライト処理である場合には、I/O処理の対象となるデータが格納されているキャッシュメモリ206またはバッファ207のアドレス情報が格納され、リード処理である場合には、I/O処理の対象となるデータが格納されている記憶装置209のアドレス情報が格納される。
データ格納先アドレス404には、ホスト計算機100からのホストI/O要求がライト処理である場合には、I/O処理の対象となるデータを格納する、記憶装置209のアドレス情報が格納され、リード処理である場合には、I/O処理の対象となるデータを格納する、キャッシュメモリ206またはバッファ207のアドレス情報が格納される。
ステータス返送先アドレス405には、ディスクI/F208がデータ転送処理終了後にその転送終了をCPU203に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ204のアドレス情報が格納される。
保証コード付与の要否判定情報406には、ディスクI/F208が付与可能な保証コードについて、付与が必要か否かの情報が格納される。保証コード付与の要否については、ホストI/F転送テーブル300に関して説明したのと同様である。保証コード設定値407には、保証コード付与の要否判定情報406がONだった場合に、ディスクI/F208によって付与される保証コードの設定値が格納される。
保証コードチェックの要否判定情報408には、ホストI/F転送テーブル300の場合と同様に、ディスクI/F208がチェック可能な保証コードについて、チェックが必要か否かの情報が格納される。保証コード期待値409には、保証コードチェックの要否判定情報408がONだった場合に、ディスクI/F208によるチェックに使用される保証コードの期待値が格納される。なお、ディスクI/F転送テーブル400に格納される情報は、図9に記載された情報に限定されない。
次に、DMA転送テーブル500について説明する。図10は、後述のDMA205によるデータ転送時にDMA205が参照して用いる制御情報を格納したDMA転送テーブル500の一構成例を示すものである。DMA転送テーブル500はホスト計算機100から受領したホストI/O要求を基にCPU203によって作成され、DMA205は、DMA転送テーブル500に記録されている情報を参照してデータ転送を実行する。図7では、DMA転送テーブル500がローカルメモリ204に格納されているが、CPU203が参照可能なメモリであるならば、キャッシュメモリ206、バッファ207の一部等に格納してもよい。
DMA転送テーブル500中に格納される情報について順次説明すると、まず転送長501には転送すべきデータの長さが格納される。
転送種別情報502には、DMA転送テーブル500を用いてDMA205によって実行されるデータ転送処理が、バッファ207からキャッシュメモリ206へのデータ転送処理、キャッシュメモリ206からバッファ207へのデータ転送処理のいずれであるかの情報、DMA205が実施可能な機能を用いた特殊なI/O処理の実施判定等が格納される。
データ格納元アドレス503には、I/O処理の対象となるデータが格納されたキャッシュメモリ206またはバッファ207のアドレス情報が格納される。
データ格納先アドレス504には、I/O処理の対象となるデータを格納する、キャッシュメモリ206またはバッファ207のアドレス情報が格納される。
ステータス返送先アドレス505には、DMA205がデータ転送処理終了後にその転送終了をCPU203に通知するために、転送終了を示すステータス情報を返送する返送先となるローカルメモリ204のアドレス情報が格納される。
保証コード付与の要否判定情報506には、DMA205がI/O処理に係るデータに付与可能な保証コードについて、付与が必要か否かの情報が格納される。この保証コード付与が必要か否かの情報は、ホストI/F転送テーブル300の場合と同様に、CPU203がホストI/O要求の内容から判定して、例えばON/OFFの符号として格納する。
保証コード設定値507には、保証コード付与の要否判定情報506がONに設定されている場合に、DMA205によって付与される保証コードの設定値が格納される。
保証コードチェックの要否判定情報508には、DMA205がチェック可能な保証コードについて、チェックが必要か否かの情報が格納される。保証コード期待値509には、保証コードチェックの要否判定情報508がONに設定されている場合に、DMA205によってチェックされる保証コードの期待値が格納される。
ビットマップステージングの実行要否判定情報510には、ビットマップステージング処理を実施するか否かの情報が格納される。ビットマスク設定値511には、ビットマップステージング実行要否判定情報503がONだった場合に、ステージングデータをマスクするためのビットマスク情報が格納される。パターン検出処理の要否判定情報512には、パターン検出処理を実行するか否かの情報が格納される。ビットマスクステージング処理、及びパターン検出処理については後述する。なお、DMA転送テーブル500に格納される情報は、図10に格納されたものに限定されない。
図11は、ローカルメモリ204に前記のホストI/F転送テーブル300、ディスクI/F転送テーブル400、及びDMA転送テーブル500が転送情報として格納されている状況の一例を示す図である。前記のように、CPU203はホスト計算機100からのホストI/O要求を受け取る毎にホストI/F転送テーブル300、またはディスクI/F転送テーブル400、またはDMA転送テーブル500を作成するから、ローカルメモリ204には、例えばホストI/F転送テーブル300a、300b、300cのように、複数の転送テーブルを格納することができるように構成されている。図11では、ローカルメモリ204中にホストI/F転送テーブル300a、300b、300cと、ディスクI/F転送テーブル400a、400b、400cと、DMA転送テーブル500a、500b、500cと、直転送フラグ600a、600b、600cとが格納されている。
次に、ホスト計算機100、キャッシュメモリ206又はバッファ207、及び記憶装置209の間で実行される、本実施形態のデータ転送の方式について、図示の処理例を参照しながら説明する。図12は、記憶装置209からキャッシュメモリ206へ直接データが転送されるデータ転送方式(以下「直転送(direct data transfer)」)の模式図の一例を示す図である。図12に示す直転送は、ディスクI/F208によって実行される。図12では、一例として記憶装置209からキャッシュメモリ206へのデータ転送(以下「ステージング」とも称する。)701について示しているが、直転送は、キャッシュメモリ206から記憶装置209へのデータ転送(以下「デステージ」とも称する。)、及びホスト計算機100とキャッシュメモリ206相互間でのデータ転送のいずれかの形態でも実行されることがある。
一方、図13は、記憶装置209からリードしたデータをいったんキャッシュメモリ206内のバッファ207に格納し、その後DMA205によってキャッシュメモリ206にデータを転送するデータ転送方式(以下「二段転送(two-step data transfer)」)の模式図の一例を示す図である。図13に例示される二段転送は、DMA205とディスクI/F208によって実行される。図13では、一例として記憶装置209からバッファ207へのデータ転送801と、バッファ207からキャッシュメモリ206へのデータ転送802とを組み合わせたデータ転送処理について示している。この他、二段転送は、キャッシュメモリ206からバッファ207へのデータ転送と、バッファ207から記憶装置209へのデータ転送とを組み合わせたデータ転送、ホスト計算機100からバッファ207へのデータ転送と、バッファ207からキャッシュメモリ206へのデータ転送とを組み合わせたデータ転送、キャッシュメモリ206からバッファ207へのデータ転送と、バッファ207からホスト計算機100へのデータ転送とを組み合わせたデータ転送のいずれかの形態で実行されることがある。なお、本実施形態ではキャッシュメモリ206の記憶領域の一部に、二段転送の場合の一時的データ記憶領域であるバッファ207を設けているので、本明細書において、単にキャッシュメモリ206というときは、バッファ207として利用されている記憶領域以外のキャッシュメモリ206の記憶領域を指すものとする。
次に、ホスト計算機100からのホストI/O要求に基づいて実行されるI/O処理に適用するデータ転送方式として、前記の直転送、二段転送のいずれを用いるかを判定するための、データ転送方式選択処理の詳細について説明する。
図14は、データ転送方式選択処理の概略を示すフロー図である。以下では本実施形態について、図14のフロー図を用いて説明する。なお、図14のフロー図は本データ転送方式選択処理の一例を示すものであり、データ転送方式の選択処理フローは図14で示すものに限定されない。例えば、図14では、直転送を実施するか否かの判定に、専用のフラグ(ローカルメモリ204に格納される直転送フラグ600)を用いているが、直転送を実施するか否かの判定は直転送フラグ600を用いたものに限定されず、例えば各サブルーチンS901及びS902の内部でそれぞれ個別の判定を行い、これらの判定結果を基に、直転送を実施するか否かの判定を行う等の方法を用いてもよい。このデータ転送方式選択処理は、CPU203によって実現されるデータ転送方式管理部2041によって、CPU203がホストI/O要求を受領したときに実行される。以下、符号「S」はステップを表す。
まず、データ転送方式管理部2041は、ローカルメモリ204にアクセスして直転送フラグ600をONに設定する(S900)。データ転送方式管理部2041が設定する代わりに、直転送フラグ600の初期値をONに設定しておいてもよい。S901のステップ以降の処理において、二段転送を用いることが決定した時点で直転送フラグ600がONからOFFへ変更される。
本データ転送方式選択処理のサブルーチンであるS901では、ホスト計算機100の指示によって実行されるI/O処理を、直転送にて実施することが可能か否か(DMA205の持つ特殊な機能を必要とするか否か)の判定処理が行われる。判定処理の結果、直転送を実施不可能と判定された場合は、直転送フラグ600がOFFに設定される。なお、同じくサブルーチンであるS902による判定が実施される場合、S901による直転送実施可否判定処理は実施しなくてもよい。
次に、サブルーチンのS902では、ホスト計算機100の指示によって実行されるI/O処理を、直転送にて実施した方が、二段転送にて実施した場合に比べてデータ転送処理が高速で実行することができるか否かの判定処理が行われる。判定処理の結果、二段転送にて実施した方が高速であると判定された場合は、直転送フラグ600がOFFに設定され、それ以外の場合には直転送フラグ600は変更されない。なお、サブルーチンのS901による判定が実施される場合、S902による判定は実施しなくてもよい。また、S901において直転送実施が不可能であると判定された場合には、S902の処理をスキップするように構成することができる。
次いで、サブルーチンのS901及びS902で行われた判定処理の結果を基に、データ転送方式の選択を行う(S903)。S901及びS902で行われた判定処理の結果、直転送フラグ600がONに設定されている場合は(S903、Yes)、直転送が実行される(S904)。直転送フラグ600がOFFに設定されている場合は(S903、No)、二段転送が実行される(S905)。
図15は、図14に示すデータ転送方式選択処理フローの他の構成例である。図15では、図14の直転送実施可否判定処理サブルーチンであるS901は、複数の判定処理S901a〜S901cを組み合わせて構成されている。また、サブルーチンS902の判定処理は単一の判定処理に依存することなく、複数の高速化可否判定処理を行った結果を基に、総合的に最もデータ転送処理が高速となる転送方式を選択する処理としてもよい。
次に、図14のサブルーチンS901で行われる直転送実施可否判定処理の詳細を説明する。図16は、保証コードの付与/チェックの要否に基づいてデータ転送方式の選択を行うための、サブルーチンS901の一例である。以下では、本実施例のS901での処理について図16のフロー図を用いて説明する。この直転送実施可否判定処理は、CPU203によって実現されるデータ転送方式判定部2041によって実行される。
サブルーチンS901の判定処理において、直転送を実施不可能と判定されるI/O処理の例としては、例えば汎用プロトコルチップでは付与/チェックが困難な特殊なデータ保証コードにつき、DMA205を用いて付与/チェックを行うケースが考えられる。
例えば、極めて重要なデータを扱うストレージシステムでは、SATA HDDを採用した場合、所要の信頼性が十分に確保できない場合がある。そこで、データ転送先または転送元のデバイスがSATA HDDの場合は、DMA205を用いてデータ保証コードを付与/チェックするために二段転送を用いる。データ転送先または転送元のデバイスがFC HDDあるいはSAS HDDの場合は、そのような特殊なデータ保証コードを付与/チェックしなくても、汎用プロトコルチップで付与/チェックが可能な保証コードを用いるだけで十分な信頼性が確保できるため、直転送を用いることができる。
また、ストレージシステム200を含む情報処理システム1に求められる信頼性等に基づいて転送方式を使い分けてもよい。例えば、データ自体の信頼性よりもデータ転送のスループット性能が求められる状況下においては、転送先または転送元のデバイスがSATA HDDの場合においても、直転送を実施することでシステムのスループット性能を高めることができる。逆に、スループット性能よりも、データ自体の信頼性が優先される状況下においては、FC HDDやSAS HDDの場合もデータ保証コードを付与/チェックするために二段転送を用いることで、システムの信頼性をより高めることができる。
図16の処理フロー例を参照すると、データ転送方式判定部2042は、まずDMA205によって実行される特殊な保証コード(以下「特殊保証コード」ともいう。)の付与/チェックが必要であるか判定を行う(S1000)。特殊保証コードの付与/チェックの要否は、例えば転送種別情報302、402、または502に設定される転送先/転送元の記憶装置種別情報を基に判定される。
S1000にて、特殊保証コードの付与/チェックが不必要と判定された場合は(S1000、No)、データ転送方式判定部2042は、DMA転送テーブル500中の、保証コード付与の要否判定情報506、または保証コードチェックの要否判定情報508をOFFとする(S1001)。この際、直転送フラグ600は変更されない。
S1000にて、特殊保証コードの付与/チェックが必要と判定された場合は(S1000、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S1002)、DMA転送テーブル500中の、保証コード付与の要否判定506、または保証コードチェックの要否判定情報508をONとする(S1003)。
以上の処理が終了した後、データ転送方式判定部2042は、生成した保証コード、またはチェックを行うための保証コードの期待値をDMA転送テーブル500の保証コード設定値507、または保証コード期待値509に設定し、DMA205によるデータ転送を行う際に、DMA転送テーブル500の設定内容に基づいて、特殊保証コードの付与/チェックを行う。
なお、図16のフロー図にて付与/チェックされる保証コードは、一つの保証コードに限定されない。例えば二種類の保証コードが適用される場合、これらの付与/チェックが必要か、データ転送方式判定部2042によりそれぞれの判定を続けて行ってもよい
また、保証コードには、プロトコルチップで付与/チェックすることができる汎用保証コードと、DMA205で付与/チェックする特殊保証コードとを混在させてもよい。例えば、512バイトのデータ毎に8バイトの保証コードを付与する場合、最上位の1バイトにはDMA205で特殊な保証コードを付与し、残りの7バイトにはプロトコルチップで別の保証コードを付与する等の実装を行ってもよい。
図14のサブルーチンS901の判定処理において、データの直転送が実施不可能と判定される他のI/O処理の例としては、DMA205によってデータ中の特定のパターンを検出する処理(以下「パターン検出処理」ともいう。)がある。このパターン検出処理を実行する必要がある場合は、DMA205による二段転送を実施し、その必要がない場合はCPU203による直転送を実施する。パターン検出処理には、例えば、ストレージシステム内に格納されているデータについて、重複したデータを排除するための重複排除処理、記憶装置中のデータが書かれていない部分(スペースあるいはnull)及びゼロ・データで埋められている部分を検出するゼロ・データ検出等がある。
図17は、パターン検出処理実行の要否判定結果からデータ転送方式の選択を行うためにデータ転送方式判定部2042により実行される、図14のサブルーチンS901の一例である。以下では、本実施例のS901での処理について、図17のフロー図を用いて説明する。
まずデータ転送方式判定部2042は、パターン検出処理の実行が必要か判定を行う(S1100)。パターン検出処理の実行要否は、例えばホスト計算機100からの指示を含むホストI/O要求を基に判定される。
S1100にて、パターン検出処理の実行が不必要と判定された場合は(S1100、No)、データ転送方式判定部2042は、DMA転送テーブル500中の、パターン検出処理の要否判定情報512をOFFとする(S1101)。この際、直転送フラグ600は変更されない。
S1100にて、パターン検出処理の実行が必要と判定された場合は(S1100、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S1102)、DMA転送テーブル500中の、パターン検出処理の要否判定情報512をONとする(S1103)。以上の処理が終了した後、DMA205は任意のタイミングでパターン検出処理を行う。
次に、サブルーチンS901の判定処理において、直転送が実施不可能と判定される、さらに他のI/O処理の例を説明する。この「他のI/O処理」の例では、キャッシュメモリ206への二重書き(以下「キャッシュ二重書き」ともいう。)を行う場合は二段転送を実施し、キャッシュ二重書きを行う必要がない場合は直転送を実施する。
直転送にてキャッシュ二重書きを実施するためには、データ転送を実行するプロトコルチップが複数のキャッシュメモリ206のアドレスに対して転送を行う必要がある。汎用プロトコルチップには複数の転送先アドレスを設定する機能がない場合が多いため、キャッシュ二重書きを行う際は、DMA205による二段転送を実施する必要がある。
図18はキャッシュ二重書きの一例を示す模式図であり、ホスト計算機100からキャッシュメモリ206へのデータ転送の様子を示したものである。図18の例では、ホスト計算機100からキャッシュメモリ206へデータ1200を転送する際に、キャッシュメモリ206にライトするデータを二重化することによってシステムの信頼性を高めるために、キャッシュ二重書きを実施する。なお、データ二重書きの対象は、ハードウェアとして同一のキャッシュメモリ206の異なるアドレス、あるいはハードウェアとして異なるキャッシュメモリ206上の各アドレスのいずれかである。
図19はキャッシュ二重書きの別の一例を示す模式図であり、記憶デバイス210からキャッシュメモリ206へのデータ転送の様子を示したものである。図19において、キャッシュ二重書きが必要となる場合について、図20及び図21を用いてさらに説明する。
図20及び図21は、記憶デバイス210(210a及び210b)が、RAID1の構成を取るストレージシステムにおける、キャッシュメモリ206中のダーティデータ1300a及び1300bのデステージ処理を示す模式図である。ダーティデータは、キャッシュメモリ206に格納されているデータであって、まだ記憶装置209(記憶デバイス210)にライトされていないデータを示す。
図20は、ダーティデータ1300a及び1300bを、記憶デバイス210a及び210bに対して個別にデステージした場合のデータの流れを示す模式図である。図20の例では、記憶デバイス210a及び210bに対するアクセス回数は、計4回となる。
これに対して、図21では、デステージを実行する前に、CPU203がキャッシュメモリ206の状態をチェックし、デステージするダーティデータの間をステージングによって埋めることが可能かチェックを行う。ダーティデータ1300a、1300b間を埋めることが可能な場合は、図21に示すように、ダーティデータ1300a及び1300bの間のデータ1301を記憶デバイス210からステージングした後、ダーティデータ1300a及び1300b及びステージングしたデータ1301をまとめてデステージする。図21の例では、記憶デバイス210a及び210bに対するアクセス回数は計3回となり、図20の例よりも、記憶デバイス210a及び210bに対するアクセス回数を減少させることができる。
ただし、キャッシュメモリ206aに障害が発生した場合は、図20に例示した機能を用いることができないため、キャッシュメモリ206a及び206bに対して、キャッシュ二重書きを実施することとなる。
図22は、キャッシュ二重書き処理実行の要否判定結果に基づいてデータ転送方式の選択を行うために実行される、図14のサブルーチンS901の一例である。以下では、本実施例のS901での処理について、図22のフロー図を用いて説明する。
データ転送方式判定部2042は、まずキャッシュ二重書き処理の実行が必要か判定を行う(S1400)。キャッシュ二重書き処理の実行要否は、例えばDMA転送テーブル500中の、転送種別情報502に設定されている情報を基に判定される。
S1400にて、キャッシュ二重書き処理の実行が不必要と判定された場合は(S1400、No)、データ転送方式判定部2042は直転送フラグ600を変更することなくそのまま処理を終了する。
S1400にて、キャッシュ二重書き処理の実行が必要と判定された場合は(S1400、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとする(S1401)。
以上の処理が終了した後、DMA転送テーブル500中の、データ格納先アドレスに記載された二つのキャッシュメモリ206のアドレスに対してデータがステージングされる。
次に、図14のサブルーチンS902で実行される判定処理の詳細を説明する。
サブルーチンS902において、二段転送処理の方がI/O処理が高速になると判定される例としては、記憶装置209からキャッシュメモリ206にデータをステージングする際に、キャッシュメモリ206上に記憶されているダーティデータを上書きしないように、ステージングするデータのマスキングを行う場合がある。以下この場合の処理を、「ビットマップステージング」ともいうこととする。
図23は、ビットマップステージングを用いずに、直転送でステージングを実行した場合のデータの流れの一例を表す模式図である。図23に示すように、キャッシュメモリ206上のキャッシュセグメント1500にダーティデータ1501a、1501bが存在し、且つキャッシュセグメント1500上の、ダーティデータ1501a、1501bの存在する領域を含む領域に対してデータをステージングする場合を考える。
直転送でデータをステージングしようとする場合、ダーティデータ1501a、1501bが存在する領域を上書きしないように、該領域を避けてステージングしなければならないため、記憶デバイス210に対して複数回のI/O処理を実行する必要がある。図23の例では、ステージングデータ1502、1503、及び1504を、記憶デバイス210から別々にステージングしなければならない。記憶デバイス210のI/O性能は、一般的にメインメモリのI/O性能に対して3〜4桁程度小さいため、このような場合は記憶デバイス210へのデータI/O処理がボトルネックとなり、システム性能の低下を招くおそれがある。
図24は、ビットマップステージングを用いて、二段転送でキャッシュメモリ206へステージングした場合のデータの流れの一例を表す模式図である。図24に示すように、ステージングするキャッシュセグメント1600中のダーティデータ1601a、1601bの存在を示すビットマップからビットマスク1602を作成し、記憶デバイス210からリードしたデータ1601に該ビットマスク1602を適用したデータ1603を、キャッシュメモリ206のキャッシュセグメント1600にステージングする。これにより、記憶デバイス210に対するI/O回数を最小限に抑えることが可能となり、システムのスループットを高めることができる。
図25は、前記のビットマップステージング処理実行の要否判定結果に基づいてデータ転送方式の選択を行うために実行される、図14のサブルーチンS902の一例である。以下では、本実施例のS902について図25に例示するフロー図を用いて説明する。
データ転送方式判定部2042は、まずホスト計算機100からのホストI/O要求がステージング処理であるか否かの判定を行う(S1700)。ホスト計算機100からのホストI/O要求種別は、例えばホストI/F転送テーブル300中に設定される、転送種別情報302の情報を基に判定される。
ホスト計算機100からのホストI/O要求の内容がステージングでないと判定された場合(S1700、No)、ビットマップステージング処理は実行されないため、S902の処理はそのまま終了する。ホスト計算機100からのホストI/O要求の内容がステージングであると判定された場合(S1700、Yes)、CPU203により具現化されているデータ転送方式判定部2042は、キャッシュメモリ206中のステージングを行うアドレス範囲の状態を確認し、当該アドレス範囲におけるビットマップを作成する(S1701)。このビットマップは、S1701実行前の適当な時機に予め作成しておいてもよい。次にデータ転送方式判定部2042は、S1701にて作成したビットマップを基に、ビットマップステージング処理の実行の要否を判定する(S1702)。
S1702にて、ビットマップステージング処理の実行が不必要と判定された場合は(S1702、No)、データ転送方式判定部2042は、DMA転送テーブル500中の、ビットマップステージング処理の要否判定情報510をOFFとする(S1703)。この際、直転送フラグ600は変更されない。
S1702にて、ビットマップステージング処理の実行が必要と判定された場合は(S1702、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S1704)、DMA転送テーブル500中の、ビットマップステージング処理の要否判定情報510をONとする(S1705)。次に、データ転送方式判定部2042は、S1701にて作成されたビットマップを基に、ビットマスクを作成し、DMA転送テーブル500のビットマスク設定値511に設定する(S1706)。
以上の処理が終了した後、DMA205がDMA転送テーブル500のビットマスク設定値511を用いて、ステージングするアドレス範囲のデータをマスキングしつつステージングを実施する。
また、キャッシュメモリ206及びバッファ207の負荷状態、記憶デバイス210のI/O性能等を基に、ビットマップステージング処理の実行要否を判定してもよい。例えば、キャッシュメモリ206の負荷が極端に高い状況下では、二段転送によるビットマップステージング処理を実施した場合の方が直転送によるステージングを実施した場合よりもスループット性能が低くなる場合がありうる。このような場合は、ステージングを行うキャッシュセグメント上にダーティデータが存在するか否かに関わらず、直転送を実施するように構成することができる。実際の運用方法としては、予めキャッシュメモリ206に対する負荷の閾値を定めておき、キャッシュメモリ206に対する負荷が閾値以下の場合は、上記通常のビットマップステージング処理要否判定を行い、キャッシュメモリ206の負荷が前記閾値を超えている場合は、ビットマップステージング処理の要否判定情報510を常にOFFにする、等の構成が考えられる。
また、メモリ負荷があまり高くない状況下においても、ステージングする記憶デバイス210が、SSD等の高速なI/O処理が期待できるものである場合は、該記憶デバイス210に対する複数回のI/O処理を直転送で実行するために必要な処理時間の方が、二段転送によるビットマップステージング処理に必要な処理時間よりも短い場合がある。このような場合もビットマップステージング処理を実行することなく直転送を実施する。
本実施例においては、バッファ207に割り当てられているメモリ領域及び帯域は、実行中の処理や、ストレージシステム200の状態等に応じて増減させてもよい。例えば、データ転送方式の大半を直転送が占めている場合等、バッファ207に割り当てられている容量及び帯域に余裕がある場合は、バッファ207に割り当てられている容量及び帯域を減らし、減らした分をキャッシュメモリ206に割り当てることでよりI/O性能を高めることができる。図26は、バッファ207の容量及び帯域の一部をキャッシュメモリ206に割り当てる様子を示す模式図である。
逆に、キャッシュメモリ206に割り当てられている容量及び帯域に余裕がある場合は、キャッシュメモリ206からバッファ207に割り当てられる容量及び帯域を増やすことで、同様にI/O性能を高めることができる。図27はキャッシュメモリ206の領域及び帯域の一部をバッファ207に割り当てる様子を示す模式図である。
これらのデータ転送方式の選択処理は、ストレージシステム200を設計する際に予め設定された判定方式に従って自動的に実施されるように構成してもよいし、管理装置110が、I/O性能、信頼性等の条件を基にシステム管理者が設定した判定方式を、管理I/F211を介してストレージシステム200(特にCPU203により具現化されるデータ転送方式管理部2401)に通知して適用させるようにしてもよい。
次に、管理装置110からの指示を受けてデータ転送方式選択の基準を変更する方法の一例を示す。
図28はデータ転送方式の選択を行うための基準となる情報が格納されたテーブル(以下「転送方式選択基準テーブル」ともいう。)の一例を示す図である。まず、予め、CPU203が、転送方式選択基準テーブル1800を作成し、記憶デバイス210等の不揮発な記憶領域に格納しておく。ストレージシステム200の電源投入時に、CPU203(例えばデータ転送方式管理部2401)が転送方式選択基準テーブル1800を読み込み、ローカルメモリ204等の、CPU203が参照可能な記憶領域に格納する。管理装置110からの指示を受けたCPU203は、転送方式選択基準テーブル1800に格納された、特殊保証コード適用デバイス情報1801等を、管理装置110からの指示通りに書き換える。データ転送時は、転送方式選択基準テーブル1800をデータ転送方式管理部2401が参照し、ホストI/F転送テーブル300、ディスクI/F転送テーブル400、またはDMA転送テーブル500を作成する。電源断時は、CPU203が具現化するデータ転送方式管理部2401が、転送方式選択基準テーブル1800を記憶デバイス210等の不揮発な記憶領域に格納する。
転送方式選択基準テーブル1800には、例えば、図16のS1000にて、特殊な保証コードの付与/チェックが要と判定されるデバイス種別の情報である、特殊保証コード適用デバイス情報1801や、図17のパターン検出処理を実施するか否か、あるいはどのパターン検出処理を実施するかを示す、パターン検出処理の要否判定情報1802、図25のS1702にてビットマップステージング不要と判定されるキャッシュメモリ206の負荷の閾値である、ビットマップステージング実施閾値情報1803等を格納することができる。
《第2の実施形態》
次に、本発明の第2の実施形態について、図29から図31を参照して説明する。
第1の実施形態では、単一のストレージシステム200における本発明の実施形態を説明したが、第2の実施形態は、複数のストレージシステム200間で実行されるI/O処理に関する。
なお、第2の実施形態は、第1の実施形態の変形例であるから、以下には第2の実施形態の構成につき、第1の実施形態の差異に注目して説明する。
図29は、本実施例における情報システム1の構成を示している。図29に示す構成は、本発明の理解及び実施に必要な程度で本発明の概要を示しており、本発明の範囲は図29に示す構成に限定されない。
ホスト計算機100と、ストレージシステム200a及び200bとは、SAN(Storage Area Network)等の通信ネットワーク121を介して相互に接続される。管理装置110と、ストレージシステム200a及び200bとは、LAN(Local Area Network)等の通信ネットワーク122を介して相互に接続される。図29において、ホストI/F201aは、第1の実施形態で既に説明した機能に加えて、通信ネットワーク121を介して相互に接続されたストレージシステム201bとのデータ転送を実行する。ストレージシステム200bに設けられているホストI/F201bも同様に、第1の実施形態で既に説明した機能に加えて、通信ネットワーク121を介して、相互に接続されたストレージシステム201aとのデータ転送を実行する。これ以外の図28の構成要素が有する機能は、図1を参照して説明した第1の実施形態とほぼ同等であるため、説明は省略する。
なお、通信ネットワーク121及び122に接続されるストレージシステム200は、3台以上であってもよい。また、本実施例にて、情報システム1が図29の構成をとった場合においても、ストレージシステム200aまたは200b内のI/O処理に関しては、第1の実施形態で示した全ての方式を適用可能である。
以下、本実施例について、第1の実施形態の図14のフロー図を用いて説明する。ストレージシステム200a、200b間でデータバックアップ等の目的でデータをコピーする(以下このデータコピーを「リモートコピー」という。)際には、ストレージシステム200a、200b間でのデータ転送時のエラーを検出または訂正するため、転送するデータに対して保証コードを付与する必要がある。実際のストレージシステムの運用形態としては、例えば、あるストレージ製品の新機種を導入する際に、同シリーズの旧機種をバックアップストレージ等に転用すること等が考えられる。この際、新機種で用いる汎用プロトコルチップがサポートする保証コードを、旧機種で用いられた汎用プロトコルチップがサポートしているとは限らないため、汎用プロトコルチップに依存しない独自の保証コードを用いる必要がある。
本実施例では、別個のストレージシステム200a、200b間でリモートコピーを実施する際には、使用しているホストI/F201の構成が同一であるストレージシステム200a、200b間でのみ行われるリモートコピーの場合には、双方のホストI/F201が付与/チェック可能な保証コードを用いることで、両ストレージシステム200a、200b間で直転送を実施することが可能となる。したがって、前記のように、リモートコピーに伴うデータ転送を行うストレージシステム200a、200bのペアで同一のホストI/F201を使用している等、同じ保証コードを用いることができる場合は、ストレージシステム200a、200b間で直転送を実行してメモリ負荷を軽減し、それ以外の場合はストレージシステム200間で二段転送を用いることができる。ストレージシステム200a、200b間で同じ保証コードを用いることができない場合、DMA205aまたは205bを使用して新旧両ストレージシステム200a、200bで共通の保証コードを利用するために、DMA205aまたは205b経由の二段転送を実行する。この場合、図14のサブルーチンS901の判定処理において、直転送が実施不可能であると判定されるように構成する。
図30は、リモートコピー実施時に使用する転送情報が格納されたリモートコピー用制御情報テーブル1900の一例を示す図である。リモートコピーを実行する際は、CPU203はリモートコピー用制御情報テーブル1900を参照し、データ転送を実行する。
リモートコピー用制御情報テーブル1900は、ローカルメモリ204等のCPU203が参照可能な記憶領域に格納される。転送先ストレージシステム情報1901には、転送先のストレージシステム200a、200bの情報が格納される。ペア論理ユニット管理情報1902には、転送元のストレージシステムと、転送先のストレージシステムにおいて、ペアとなる論理ユニットの情報が格納される。
図31は、リモートコピーのコピー先アドレス情報からデータ転送方式の選択を行うために実行される、図14のサブルーチンS901の一例である。以下では、本実施例のS901での処理について図31のフロー図を用いて説明する。
まず、CPU203によって具現化されるデータ転送方式判定部2042は、ホスト計算機100の指示したホストI/O要求に含まれているコピー先のアドレス情報から、ストレージシステム200a、200b間のリモートコピーの実施が必要か否かの判定を行う(S2000)。
S2000にて、ストレージシステム200a、200b間のリモートコピーの実施が不必要と判定された場合は(S2000、No)、そのまま処理は終了し、直転送フラグ600は変更されない。
一方、S2000にて、ストレージシステム200a、200b間のリモートコピーの実施が必要と判定された場合は(S2000、Yes)、データ転送方式判定部2042は、直転送フラグ600をOFFとし(S2001)、リモートコピー先ストレージシステムにおける保証コードを設定する(S2002)。この保証コードは、例えばDMA転送テーブル500中に格納しておく。実際にリモートコピーを行う際は、DMA205aまたは205bが、該保証コードを参照し、保証コードの付与を行う。
以上詳細に説明したように、本発明の実施形態によれば、ストレージシステム200内でのデータ転送に伴って実行する必要があるデータ処理、例えば特殊保証コードの付与/チェック等の要否、あるいはビットマップステージング等のデータI/O処理高速化のための処理実施可否の判定結果に応じて直転送と二段転送とを使い分けることにより、記憶デバイス210の性能、キャッシュメモリ206の容量等のハードウェア資源に制約がある場合でも、データI/O処理性能の向上を図ることができる。また、2台以上のストレージシステム200間でリモートコピー処理を実行する場合でも、単一のストレージシステム200の場合と同様に、直転送と二段転送とを使い分けることにより、データI/O処理性能の向上を図ることができる。
なお、本発明は、上記した第1の実施形態または第2の実施形態によって限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、一の実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、一の実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の実施形態構成の追加・削除・置換をすることが可能である。また、図示した構成は、説明上必要と考えられる範囲で示しており、具体的製品として成立させるために必要な全ての構成を示しているわけではない。

Claims (15)

  1. 外部装置が利用するデータを格納する記憶装置と、
    前記外部装置から前記記憶装置に書き込むデータ、あるいは前記記憶装置から読み出されるデータを一時的に格納する第1及び第2の一時データ記憶部と、
    前記外部装置、及び前記第1及び第2の一時データ記憶部と通信可能に接続され、前記外部装置、及び前記第1及び第2の一時データ記憶部間でのデータ転送を制御する第1のデータ転送制御部と、
    前記第1及び第2の一時データ記憶部、及び前記記憶装置と通信可能に接続され、前記第1及び第2の一時データ記憶部、及び前記記憶装置間でのデータ転送を制御する第2のデータ転送制御部と、
    前記第1及び第2の一時データ記憶部に通信可能に接続され、前記第1及び第2の一時データ記憶部間でのデータ転送を制御するとともに、前記第1及び第2のデータ転送制御部が有しないデータ処理機能を実行する第3のデータ転送制御部と、
    前記外部装置からのデータI/O要求を受け付けた場合に、
    前記第1及び第2のデータ転送制御部によって、前記外部装置と前記記憶装置との間でのデータ転送を、前記第1の一時データ記憶部を介して実行する第1のデータ転送処理と、
    前記第1及び第2のデータ転送制御部によって前記外部装置又は前記記憶装置と前記第2の一時データ記憶部との間でのデータ転送を実行し、前記第3のデータ転送制御部によって前記第1の一時データ記憶部と前記第2の一時データ記憶部との間でのデータ転送を実行する第2のデータ転送処理とのいずれかを実行させる、データ転送制御管理部と、
    を備えているストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記データ転送制御管理部が、前記外部装置から受け取った前記データI/O要求の内容を調べ、前記データI/O要求の対象となるデータについて、前記第3のデータ転送制御部が有する前記データ処理機能を用いて処理すべきデータが含まれていると判定した場合、前記第1、第2、及び第3のデータ転送制御部に前記第2のデータ転送処理を実行させ、
    前記データ転送制御管理部が、前記外部装置から受け取った前記データI/O要求の内容を調べ、前記データI/O要求の対象となるデータが、前記第2のデータ転送制御部が有する前記データ処理機能を用いて処理すべきデータでなく、前記第1のデータ転送処理を実行した方が前記第2のデータ転送処理を実行した場合よりも高速にデータ転送処理を実行することができると判定した場合、前記第1及び第2のデータ転送制御部に前記第1のデータ転送処理を実行させ、
    前記第3のデータ転送制御部が有するデータ処理機能が、
    前記第1及び第2のデータ転送制御部がサポートしない特殊な保証コードを転送すべきデータに付与し、あるいはデータに付与されている当該保証コードを解析する処理、
    転送すべきデータについて特定のデータパターンが含まれているか調べる処理、
    転送すべきデータを前記第1の一時データ記憶部における異なる複数の記憶場所に多重書き込みする処理、及び
    前記データ転送制御管理部が、前記データI/O要求を前記記憶装置から前記第1の一時データ記憶部へのデータ読み出し処理を含むと判定し、前記読み出しデータが書き込まれる前記第1の一時データ記憶部にダーティデータが含まれていると判定した場合、前記読み出しデータのうち前記ダーティデータの書き込み領域に対応するデータをマスクする処理をした後に前記第1の一時データ記憶部への読み出しを実行する処理のいずれかを含み、
    前記第2の一時データ記憶部が、前記第1の一時データ記憶部の一部分として構成されており、
    前記データ転送制御管理部が、前記第1及び第2の一時データ記憶部に対するデータI/O負荷状況を評価し、その評価結果に応じて前記第1の一時データ記憶部の記憶容量に対する前記第2の一時データ記憶部の記憶容量の比率を変更する、
    ストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記データ転送制御管理部が、前記外部装置から受け取った前記データI/O要求の内容を調べ、前記データI/O要求の対象となるデータについて、前記第3のデータ転送制御部が有する前記データ処理機能を用いて処理すべきデータが含まれていると判定した場合、前記第1、第2、及び第3のデータ転送制御部に前記第2のデータ転送処理を実行させる、ストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    前記データ転送制御管理部が、前記外部装置から受け取った前記データI/O要求の内容を調べ、前記データI/O要求の対象となるデータが、前記第3のデータ転送制御部が有する前記データ処理機能を用いて処理すべきデータでなく、前記第1のデータ転送処理を実行した方が前記第2のデータ転送処理を実行した場合よりも高速にデータ転送処理を実行することができると判定した場合、前記第1及び第2のデータ転送制御部に前記第1のデータ転送処理を実行させる、ストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記第3のデータ転送制御部が有するデータ処理機能が、前記第1及び第2のデータ転送制御部がサポートしない特殊な保証コードを転送すべきデータに付与し、あるいはデータに付与されている当該保証コードを解析する処理、転送すべきデータについて特定のデータパターンが含まれているか調べる処理、及び転送すべきデータを前記第1の一時データ記憶部における異なる複数の記憶場所に多重書き込みする処理のいずれかを含んでいる、ストレージシステム。
  6. 請求項1に記載のストレージシステムであって、
    前記第3のデータ転送制御部が有するデータ処理機能が、
    前記データ転送制御管理部が、前記データI/O要求を前記記憶装置から前記第1の一時データ記憶部へのデータ読み出し処理を含むと判定し、前記読み出しデータが書き込まれる前記第1の一時データ記憶部にダーティデータが含まれていると判定した場合、前記読み出しデータのうち前記ダーティデータの書き込み領域に対応するデータをマスクする処理をした後に前記第1の一時データ記憶部への読み出しを実行する処理である、
    ストレージシステム。
  7. 請求項1に記載のストレージシステムであって、前記第2の一時データ記憶部が、前記第1の一時データ記憶部の一部分として構成されている、ストレージシステム。
  8. 請求項1に記載のストレージシステムであって、
    前記データ転送制御管理部が、前記第1及び第2の一時データ記憶部に対するデータI/O負荷状況を評価し、その評価結果に応じて前記第1の一時データ記憶部の記憶容量に対する前記第2の一時データ記憶部の記憶容量の比率を変更する、ストレージシステム。
  9. 請求項1に記載のストレージシステムであって、
    当該ストレージシステムと同等の前記第3のデータ転送制御部及び前記データ転送制御管理部を備える他のストレージシステムと前記第1のデータ転送制御部を介して通信可能に接続されており、
    前記データ転送制御管理部が、受け付けた前記データI/O要求が前記他のストレージシステムへのデータコピー処理を含むと判定した場合、前記データ転送制御管理部がさらに、前記ストレージシステムと前記他のストレージシステムとの間で前記第1のデータ転送処理が実行可能であるか判定し、実行可能でないと判定した場合、前記第1、第2、及び第3のデータ転送制御部に前記第2のデータ転送処理を実行させる、ストレージシステム。
  10. 外部装置が利用するデータを格納する記憶装置と、
    前記外部装置から前記記憶装置に書き込むデータ、あるいは前記記憶装置から読み出されるデータを一時的に格納する第1及び第2の一時データ記憶部と、
    前記外部装置、及び前記第1及び第2の一時データ記憶部と通信可能に接続され、前記外部装置、及び前記第1及び第2の一時データ記憶部間でのデータ転送を制御する第1のデータ転送制御部と、
    前記第1及び第2の一時データ記憶部、及び前記記憶装置と通信可能に接続され、前記第1及び第2の一時データ記憶部、及び前記記憶装置間でのデータ転送を制御する第2のデータ転送制御部と、
    前記第1及び第2の一時データ記憶部に通信可能に接続され、前記第1及び第2の一時データ記憶部間でのデータ転送を制御するとともに、前記第1のデータ転送制御部が有しないデータ処理機能を実行する第3のデータ転送制御部と、
    前記第1、第2、及び第3のデータ転送制御部を管理するデータ転送制御管理部とを備えるストレージシステムのデータ転送方法であって、
    前記データ転送制御管理部が、
    前記外部装置からのデータI/O要求を受け付けた場合に、
    前記第1及び第2のデータ転送制御部によって、前記外部装置と前記記憶装置との間でのデータ転送を、前記第1の一時データ記憶部を介して実行する第1のデータ転送処理と、
    前記第1及び第2のデータ転送制御部によって前記外部装置又は前記記憶装置と前記第2の一時データ記憶部との間でのデータ転送を実行し、前記第3のデータ転送制御部によって前記第1の一時データ記憶部と前記第2の一時データ記憶部との間でのデータ転送を実行する第2のデータ転送処理とのいずれかを実行させる、
    ストレージシステムのデータ転送方法。
  11. 請求項10に記載のストレージシステムのデータ転送方法であって、
    前記データ転送制御管理部が、前記外部装置から受け取った前記データI/O要求の内容を調べ、前記データI/O要求の対象となるデータについて、前記第2のデータ転送制御部が有する前記データ処理機能を用いて処理すべきデータが含まれていると判定した場合、前記第1、第2、及び第3のデータ転送制御部に前記第2のデータ転送処理を実行させる、ストレージシステムのデータ転送方法。
  12. 請求項10に記載のストレージシステムのデータ転送方法であって、
    前記データ転送制御管理部が、前記外部装置から受け取った前記データI/O要求の内容を調べ、前記データI/O要求の対象となるデータが、前記第2のデータ転送制御部が有する前記データ処理機能を用いて処理すべきデータでなく、前記第1のデータ転送処理を実行した方が前記第2のデータ転送処理を実行した場合よりも高速にデータ転送処理を実行することができると判定した場合、前記第1及び第2のデータ転送制御部に前記第1のデータ転送処理を実行させる、ストレージシステムのデータ転送方法。
  13. 請求項10に記載のストレージシステムのデータ転送方法であって、
    前記第2のデータ転送制御部が有するデータ処理機能が、
    前記第1のデータ転送制御部がサポートしない特殊な保証コードを転送すべきデータに付与し、あるいはデータに付与されている当該保証コードを解析する処理、
    転送すべきデータについて特定のデータパターンが含まれているか調べる処理、
    転送すべきデータを前記第1の一時データ記憶部における異なる複数の記憶場所に多重書き込みする処理、及び
    前記データ転送制御管理部が、前記データI/O要求を前記記憶装置から前記第1の一時データ記憶部へのデータ読み出し処理を含むと判定し、前記読み出しデータが書き込まれる前記第1の一時データ記憶部にダーティデータが含まれていると判定した場合、前記読み出しデータのうち前記ダーティデータの書き込み領域に対応するデータをマスクする処理をした後に前記第1の一時データ記憶部への読み出しを実行する処理
    のいずれかを含んでいる、ストレージシステムのデータ転送方法。
  14. 請求項10に記載のストレージシステムのデータ転送方法であって、
    前記第2の一時データ記憶部が、前記第1の一時データ記憶部の一部分として構成されており、
    前記データ転送制御管理部が、前記第1及び第2の一時データ記憶部に対するデータI/O負荷状況を評価し、その評価結果に応じて前記第1の一時データ記憶部の記憶容量に対する前記第2の一時データ記憶部の記憶容量の比率を変更する、
    ストレージシステムのデータ転送方法。
  15. 請求項10に記載のストレージシステムのデータ転送方法であって、
    当該ストレージシステムと同等の前記第3のデータ転送制御部及び前記データ転送制御管理部を備える他のストレージシステムと前記第1のデータ転送制御部を介して通信可能に接続されており、
    前記データ転送制御管理部が、受け付けた前記データI/O要求が前記他のストレージシステムへのデータコピー処理を含むと判定した場合、前記データ転送制御管理部がさらに、前記ストレージシステムと前記他のストレージシステムとの間で前記第1のデータ転送処理が実行可能であるか判定し、実行可能でないと判定した場合、前記第1、第2、及び第3のデータ転送制御部に前記第2のデータ転送処理を実行させる、
    ストレージシステムのデータ転送方法。
JP2012546279A 2010-09-10 2010-09-10 ストレージシステム及びストレージシステムのデータ転送方法 Active JP5635621B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/005542 WO2012032582A1 (en) 2010-09-10 2010-09-10 Storage system and data transfer method of storage system

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2014210884A Division JP5856665B2 (ja) 2014-10-15 2014-10-15 ストレージシステム及びストレージシステムのデータ転送方法

Publications (2)

Publication Number Publication Date
JP2013524304A true JP2013524304A (ja) 2013-06-17
JP5635621B2 JP5635621B2 (ja) 2014-12-03

Family

ID=43828236

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012546279A Active JP5635621B2 (ja) 2010-09-10 2010-09-10 ストレージシステム及びストレージシステムのデータ転送方法

Country Status (3)

Country Link
US (3) US8316195B2 (ja)
JP (1) JP5635621B2 (ja)
WO (1) WO2012032582A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015060486A (ja) * 2013-09-20 2015-03-30 株式会社日立製作所 I/o処理制御装置及びi/o処理制御方法
JP2015519619A (ja) * 2012-05-16 2015-07-09 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ転送制御方法

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8316195B2 (en) * 2010-09-10 2012-11-20 Hitachi, Ltd. Storage system and data transfer method of storage system
US8866828B2 (en) * 2011-11-01 2014-10-21 Apple Inc. Enabling display commands from an electronic device to an integrated display on a computer system
US9110963B2 (en) * 2012-04-10 2015-08-18 Dell Inc Transparent adaptive file transform
US9075795B2 (en) * 2012-11-21 2015-07-07 Red Hat Israel, Ltd. Interprocess communication
US10095625B2 (en) * 2015-06-19 2018-10-09 Hitachi, Ltd. Storage system and method for controlling cache
TWI554878B (zh) * 2015-06-26 2016-10-21 英業達股份有限公司 轉譯器和其資料讀寫方法
DE102016211386A1 (de) * 2016-06-14 2017-12-14 Robert Bosch Gmbh Verfahren zum Betreiben einer Recheneinheit
US11349915B2 (en) * 2018-02-02 2022-05-31 EMC IP Holding Company LLC Distributed replication and deduplication of an object from a source site to a destination site

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793198A (ja) * 1993-09-27 1995-04-07 Toshiba Corp コンピュータシステム
JP2000353126A (ja) * 1999-06-09 2000-12-19 Mitsubishi Electric Corp 計算機システムのバッファキャッシュ再分割方法及びバッファキャッシュ再分割機能付き計算機システム
US20030188032A1 (en) * 2002-03-29 2003-10-02 Emc Corporation Storage processor architecture for high throughput applications providing efficient user data channel loading
JP2004005370A (ja) * 2002-04-26 2004-01-08 Hitachi Ltd 記憶装置システムの制御方法および記憶制御装置
US20040034750A1 (en) * 2002-08-19 2004-02-19 Robert Horn System and method for maintaining cache coherency without external controller intervention
JP2005032265A (ja) * 1996-11-14 2005-02-03 Emc Corp 動作時にxor演算を行う高性能データ経路
JP2009129201A (ja) * 2007-11-22 2009-06-11 Hitachi Ltd 記憶制御装置及び記憶制御装置の制御方法
JP2010517182A (ja) * 2007-01-24 2010-05-20 クゥアルコム・インコーポレイテッド 内容終了型dma

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628261A (ja) 1992-04-17 1994-02-04 Hitachi Ltd データ転送方法及び装置
US5553307A (en) 1992-04-17 1996-09-03 Hitachi, Ltd. Method and device for transferring noncontiguous blocks in one transfer start by creating bit-map indicating which block is to be transferred
US7243229B2 (en) * 2001-10-02 2007-07-10 Hitachi, Ltd. Exclusive access control apparatus and method
JP2003199014A (ja) * 2001-12-27 2003-07-11 Toshiba Corp ディスク記憶装置及びコマンド処理方法
JP4219633B2 (ja) * 2002-07-25 2009-02-04 株式会社日立製作所 記憶装置システムのデステージ方法、ディスク制御装置、記憶装置システム、及びプログラム
US7454420B2 (en) * 2004-11-08 2008-11-18 Sas Institute Inc. Data sorting method and system
US7281104B1 (en) * 2005-03-21 2007-10-09 Acronis Inc. System and method for online data migration
JP2006338461A (ja) 2005-06-03 2006-12-14 Hitachi Ltd 電子的なファイルの記憶を制御するシステム及び方法
JP5102915B2 (ja) 2007-09-07 2012-12-19 株式会社日立製作所 ストレージ装置及びそのデータ検証方法
JP2009087175A (ja) * 2007-10-02 2009-04-23 Hitachi Ltd ストレージ装置、処理制御装置、及び記憶システム
US8161221B2 (en) * 2008-11-25 2012-04-17 Hitachi, Ltd. Storage system provided with function for detecting write completion
TWI462014B (zh) * 2009-08-31 2014-11-21 Phison Electronics Corp 應用程式執行方法與系統、儲存媒體控制器及儲存裝置
WO2011125106A1 (en) * 2010-04-05 2011-10-13 Hitachi, Ltd. Storage system configured from plurality of storage modules and method for switching coupling configuration of storage modules
US8316195B2 (en) * 2010-09-10 2012-11-20 Hitachi, Ltd. Storage system and data transfer method of storage system
US20130205088A1 (en) * 2012-02-06 2013-08-08 International Business Machines Corporation Multi-stage cache directory and variable cache-line size for tiered storage architectures

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0793198A (ja) * 1993-09-27 1995-04-07 Toshiba Corp コンピュータシステム
JP2005032265A (ja) * 1996-11-14 2005-02-03 Emc Corp 動作時にxor演算を行う高性能データ経路
JP2000353126A (ja) * 1999-06-09 2000-12-19 Mitsubishi Electric Corp 計算機システムのバッファキャッシュ再分割方法及びバッファキャッシュ再分割機能付き計算機システム
US20030188032A1 (en) * 2002-03-29 2003-10-02 Emc Corporation Storage processor architecture for high throughput applications providing efficient user data channel loading
JP2004005370A (ja) * 2002-04-26 2004-01-08 Hitachi Ltd 記憶装置システムの制御方法および記憶制御装置
US20040034750A1 (en) * 2002-08-19 2004-02-19 Robert Horn System and method for maintaining cache coherency without external controller intervention
JP2010517182A (ja) * 2007-01-24 2010-05-20 クゥアルコム・インコーポレイテッド 内容終了型dma
JP2009129201A (ja) * 2007-11-22 2009-06-11 Hitachi Ltd 記憶制御装置及び記憶制御装置の制御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015519619A (ja) * 2012-05-16 2015-07-09 株式会社日立製作所 ストレージシステム及びストレージシステムにおけるデータ転送制御方法
JP2015060486A (ja) * 2013-09-20 2015-03-30 株式会社日立製作所 I/o処理制御装置及びi/o処理制御方法

Also Published As

Publication number Publication date
US20130318296A1 (en) 2013-11-28
JP5635621B2 (ja) 2014-12-03
US8782337B2 (en) 2014-07-15
US8316195B2 (en) 2012-11-20
US20140304482A1 (en) 2014-10-09
US20120066458A1 (en) 2012-03-15
WO2012032582A1 (en) 2012-03-15
US9304710B2 (en) 2016-04-05

Similar Documents

Publication Publication Date Title
JP5635621B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
US9697087B2 (en) Storage controller to perform rebuilding while copying, and storage system, and control method thereof
US8347060B2 (en) Storage system, storage extent release method and storage apparatus
JP4775846B2 (ja) 物理リンクの割当てを制御するコンピュータシステム及び方法
JP7135162B2 (ja) 情報処理システム、ストレージシステム及びデータ転送方法
US20060218360A1 (en) Method, apparatus and program storage device for providing an optimized read methodology for synchronously mirrored virtual disk pairs
JP2009043030A (ja) ストレージシステム
JP2007141216A (ja) 複数のプロトコルアクセス可能なosdストレージサブシステムのためのシステム、方法および装置
JP2007114874A (ja) 記憶制御システム及び記憶制御方法
JP2013531283A (ja) ストレージの仮想化機能と容量の仮想化機能との両方を有する複数のストレージ装置を含んだストレージシステム
JP2019079448A (ja) ストレージシステム及びストレージシステムの制御方法
US10579540B2 (en) Raid data migration through stripe swapping
US20170220249A1 (en) Systems and Methods to Maintain Consistent High Availability and Performance in Storage Area Networks
JP6835949B2 (ja) 情報システム、管理プログラム及び情報システムのプログラム交換方法
US20110258406A1 (en) Storage apparatus and control method of storage apparatus
WO2014188479A1 (ja) ストレージ装置及びストレージ装置の制御方法
US11740823B2 (en) Storage system and storage control method
US10503440B2 (en) Computer system, and data migration method in computer system
JP5856665B2 (ja) ストレージシステム及びストレージシステムのデータ転送方法
US8966173B1 (en) Managing accesses to storage objects
US11550489B2 (en) Storage system and processing migration method
JP7113698B2 (ja) 情報システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140527

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141016

R150 Certificate of patent or registration of utility model

Ref document number: 5635621

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150