JP5899893B2 - ストレージ装置、コマンド実行制御方法、およびプログラム - Google Patents

ストレージ装置、コマンド実行制御方法、およびプログラム Download PDF

Info

Publication number
JP5899893B2
JP5899893B2 JP2011277303A JP2011277303A JP5899893B2 JP 5899893 B2 JP5899893 B2 JP 5899893B2 JP 2011277303 A JP2011277303 A JP 2011277303A JP 2011277303 A JP2011277303 A JP 2011277303A JP 5899893 B2 JP5899893 B2 JP 5899893B2
Authority
JP
Japan
Prior art keywords
command
copy
limit value
commands
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011277303A
Other languages
English (en)
Other versions
JP2013127726A (ja
Inventor
正厳 水巻
正厳 水巻
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2011277303A priority Critical patent/JP5899893B2/ja
Priority to US13/672,787 priority patent/US8838839B2/en
Priority to EP12195635.3A priority patent/EP2608012A3/en
Priority to KR1020120141246A priority patent/KR101461284B1/ko
Priority to CN201210526596XA priority patent/CN103164171A/zh
Publication of JP2013127726A publication Critical patent/JP2013127726A/ja
Application granted granted Critical
Publication of JP5899893B2 publication Critical patent/JP5899893B2/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/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Communication Control (AREA)

Description

本発明は、入力されたコマンドの実行制御を行うストレージ装置、コマンド実行制御方法、およびプログラムに関する。
RAID(Redundant Arrays of Inexpensive Disks)装置などのストレージ装置は、ホストコンピュータと接続する通信インタフェースとして、例えばチャネルアダプタ(CA:Channel Adapter)を有している。CAは、チャネルスイッチなどを経由してホストコンピュータのホストバスアダプタ(HBA:Host Bus Adapter)に接続される。ホストコンピュータは、HBAによりCAと通信し、ストレージ装置内のデータにアクセスする。
ストレージ装置内のCAは、ホストコンピュータとの通信に限らず、ストレージ装置間の通信にも利用できる。例えばストレージ・セル間でデータコピーを行うフレキシブル・データ・レプリケーション・メカニズムが考えられている。
米国特許出願公開第2003/0187945号明細書
しかし、ホストコンピュータからのストレージ装置へのアクセスの用途と、ストレージ装置間のアクセスの用途とでCAを共用すると、一方のアクセスの増加により、他方のアクセスの処理が遅延する。例えばデータの信頼性を高めるために、あるストレージ装置に対してホストコンピュータから書き込まれたデータを、他のストレージ装置にコピーする場合がある。この場合、ホストコンピュータからのコピー先のストレージ装置へのアクセスが多いと、ストレージ装置間のコピー処理が待たされる。すると、コピー元のストレージ装置へのホストコンピュータからの書き込みコマンドの完了も遅延し、システム全体としての性能が低下する。
このように、ストレージ装置の1つの通信インタフェースを複数の用途で使用した場合、1つの用途でのデータアクセス量の増加が他の用途でのデータアクセス効率を低下させてしまう場合がある。このような依存関係によるデータアクセス効率の低下が無秩序に発生すると、システム全体としての処理効率が低下する。
1つの側面では、本発明は、処理種別に応じた処理増加に起因する処理効率の低下を抑止可能なストレージ装置、コマンド実行制御方法、およびプログラムを提供することを目的とする。
本願では、記憶装置、通信インタフェース、判別手段、計数手段、および制御手段を有するストレージ装置が提供される。通信インタフェースは、記憶装置へのデータアクセスを指示するコマンドを受信する。判別手段は、通信インタフェースを介して受信したコマンドの種別を判別する。計数手段は、通信インタフェースを介して受信したコマンドであって、実行中のコマンドの数を計数する。制御手段は、実行中のコマンドの数が、通信インタフェースを介して新たに受信したコマンドの種別に対応する制限値以下であれば、該新たに受信したコマンドに応じたデータアクセスを記憶装置に対して実行する制御を行う。また制御手段は、実行中のコマンド数が該新たに受信したコマンドの種別に対応する制限値を超えた場合、該新たに受信したコマンドに応じたデータアクセスを抑止する制御を行う。
1態様によれば、処理種別に応じた処理増加に起因する処理効率の低下が抑止可能となる。
第1の実施の形態に係る装置の機能構成の一例を示す図である。 第2の実施の形態のシステム構成の一例を示す図である。 第2の実施の形態に用いるストレージ装置のハードウェア構成の一例を示す図である。 第2の実施の形態におけるコマンドの流量制御状況の一例を示す図である。 第2の実施の形態におけるRA先のストレージ装置でのコマンド制限の実施状況を示す図である。 コマンドのデータフォーマットの一例を示す図である。 コマンド管理テーブルの一例を示す図である。 第2の実施の形態のコマンド実行処理の手順を示すフローチャートである。 第3の実施の形態におけるコマンドの流量制御状況の一例を示す図である。 第3の実施の形態におけるセッション管理テーブルの一例を示す図である。 第3の実施の形態のコマンド実行処理の手順を示すフローチャートである。 第4の実施の形態におけるコマンドの流量制御状況の一例を示す図である。 第4の実施の形態のコマンド管理テーブルの一例を示す図である。 第4の実施の形態のコマンド管理テーブル更新処理の手順を示すフローチャートである。 第4の実施の形態のコマンド実行処理の手順の一例を示すフローチャートである。 第5の実施の形態におけるコマンド流量制御状況の一例を示す図である。 RA元コマンド管理テーブルの一例を示す図である。 RA先コマンド管理テーブルの一例を示す図である。 ストレージ装置間の情報交換手順の一例を示すシーケンス図である。 RA元におけるコマンド実行状況通知処理の手順の一例を示すフローチャートである。 第5の実施の形態のRA元のストレージ装置におけるコマンド実行処理の手順の一例を示す図である。 RA先におけるコマンド制限値決定処理の手順の一例を示す図である。 第6の実施の形態におけるコマンド流量制御状況の一例を示す図である。 第6の実施の形態のRA元コマンド管理テーブルの一例を示す図である。 第6の実施の形態のRA先コマンド管理テーブルの一例を示す図である。 第6の実施の形態のRA元のコマンド実行処理の手順の一例を示すフローチャートである。 第6の実施の形態のRA元におけるコマンド実行状況通知処理の手順の一例を示すフローチャートである。 第6の実施の形態のRA先におけるコマンド制限値決定処理の手順の一例を示すフローチャートである。 適用技術判定処理の手順の一例を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
第1の実施の形態は、通信インタフェースに入力されるコマンドについて、コマンドの用途を示す種別ごとに異なる制限値で、コマンドの流量制御を行うものである。制限値は、実行中のコマンドの数がどの程度になったら、対応する種別のコマンドの実行を抑止するのかを示す閾値である。
例えば、システム全体の処理効率の低下への影響が大きい用途に対応する種別のコマンドほど制限値を高く設定することができる。これにより、システム全体の処理効率の低下への影響が小さい用途のコマンドが増加しても、そのコマンドは先行して実行が抑止される。その結果、システム全体の処理効率の低下への影響が大きい用途のコマンドの処理効率の低下が抑止される。
図1は、第1の実施の形態に係る装置の機能構成の一例を示す図である。ストレージ装置1は、ネットワーク2上のスイッチ3を介してストレージ装置5やコンピュータ6に接続されている。図1の例では、ストレージ装置5は、ストレージ装置1に対して遠方に設置されている。またコンピュータ6はスイッチ3のみを介してストレージ装置1に接続されている。またストレージ装置5には、コンピュータ4が接続されている。
例えばストレージ装置5は、コンピュータ4からのデータ書き込みのコマンド7(種別:ライトコマンド)により、所定の記憶領域に対するデータの書き込みがあると、書き込まれたデータの冗長化処理を行う。例えばストレージ装置5は、書き込まれたデータをストレージ装置1内の記憶装置1−1にコピーするためのコマンド8(種別:コピーコマンド)を出力する。この場合、コマンド7が、ストレージ装置5によるコピーコマンド出力の原因となっている。
コンピュータ6は、例えばストレージ装置1の記憶装置1−1にアクセスするために、ストレージ装置5が出力するコマンド8とは別種のコマンド9(種別:非コピーコマンド)を出力する。
ストレージ装置1は、記憶装置1−1、通信インタフェース1−2、管理部1−3を有している。通信インタフェース1−2は、記憶装置1−1へのデータアクセスを指示するコマンドを受信する。なお通信インタフェース1−2に入力されるコマンドには、複数の種別がある。
管理部1−3は、記憶手段1−3a、判別手段1−3b、計数手段1−3c、および制御手段1−3dを有している。
記憶手段1−3aは、例えばコマンドの種別ごとの制限値を記憶する。制限値は、対応する種別のコマンドを実行するか否かを判断する際の、実行中のコマンドの数の閾値である。記憶手段1−3aとしては、例えば管理部1−3内のメモリが用いられる。
判別手段1−3bは、通信インタフェース1−2を介して受信したコマンドの種別を判別する。例えば判別手段1−3bは、受信したコマンドが、ストレージ装置5からのデータコピーを指示するコピーコマンドなのか、コピーコマンド以外の非コピーコマンドなのかを判別する。
計数手段1−3cは、通信インタフェース1−2を介して受信したコマンドであって、実行中のコマンドの数を計数する。例えば計数手段1−3cは、通信インタフェース1−2を介してコマンドを受信するごとに、実行中のコマンドの数を示すカウンタをインクリメントし、受信したコマンドに対する応答を送信するごとに、カウンタをデクリメントする。
制御手段1−3dは、記憶手段1−3aを参照し、実行中のコマンドの数が、通信インタフェース1−2を介して受信したコマンドの種別に対応する制限値以下かどうかを判断する。そして制御手段1−3dは、実行中のコマンドの数が制限値以下であれば、受信したコマンドに応じたデータアクセスを記憶装置1−1に対して実行する。また制御手段1−3dは、実行中のコマンドの数が、受信したコマンドの種別に対応する制限値を超えた場合、そのコマンドに応じたデータアクセスを抑止する。例えば制御手段1−3dは、コマンドに応じたデータアクセスを実行した場合には、アクセス完了後に、そのコマンドに対する応答を返す。また制御手段1−3dは、コマンドに応じたデータアクセスを抑止した場合には、抑止決定後に、アクセス不能を示す応答を返す。
このようなシステムにおいて、例えば記憶手段1−3aには、コピーコマンドに対応する制限値として「1024」、非コピーコマンドに対応する制限値として「768」が設定されているものとする。
ここで例えばコンピュータ4が、データ書き込みのコマンド7を出力し、ストレージ装置5においてコマンド7に応じたデータ書き込みが行われたものとする。この場合、ストレージ装置5からストレージ装置1へ、書き込まれたデータのコピーを指示するコマンド8が送信される。
コマンド8は、ストレージ装置1の通信インタフェース1−2で受信される。すると、管理部1−3の判別手段1−3bが、受信したコマンド8の種別がコピーコマンドであることを判別する。また計数手段1−3cが、コマンドを受信したことにより、実行中のコマンドの数をインクリメントする。例えば、実行中のコマンドの数が「800」になったものとする。
制御手段1−3dは、受信したコマンド8の種別「コピーコマンド」に対応する制限値「1024」と、実行中のコマンドの数「800」とを比較する。この例では、実行中のコマンド数は制限値以下である。そこで制御手段1−3dは、受信したコマンド8に応じて、データを記憶装置1−1に書き込む。書き込みが完了すると、制御手段1−3dは、完了応答をストレージ装置5に送信する。すると、計数手段1−3cにおいて、実行中のコマンド数がデクリメントされる。
また、例えばコンピュータ6からストレージ装置1へ、記憶装置1−1へのデータの書き込みのコマンド9が送信されたものとする。このコマンド9の種別は、コピーコマンド以外の非コピーコマンドである。コマンド9は、ストレージ装置1の通信インタフェース1−2で受信される。すると、管理部1−3の判別手段1−3bが、受信したコマンド9の種別が非コピーコマンドであることを判別する。また計数手段1−3cが、コマンドを受信したことにより、実行中のコマンドの数をインクリメントする。例えば、実行中のコマンドの数が「800」になったものとする。
制御手段1−3dは、受信したコマンド9の種別「非コピーコマンド」に対応する制限値「768」と、実行中のコマンドの数「800」とを比較する。この例では、実行中のコマンドの数は制限値を超えている。そのため、制御手段1−3dにおいてコマンド9の実行は抑止される。例えば制御手段1−3dは、コマンド9に応じたデータアクセスを実行せずに、コンピュータ6に対してコマンド実行不能を示す応答を送信する。すると、計数手段1−3cにおいて、実行中のコマンド数がデクリメントされる。
このように、ストレージ装置1において、コマンドの種別に応じて異なる制限値を適用して、受信したコマンドを実行するか否かを決定することで、通信インタフェース1−2を複数の用途で使用した場合のシステム全体での処理効率の低下を抑止できる。
例えば図1では、ストレージ装置1に対して、ストレージ装置5は遠隔地にあるが、コンピュータ6は近くにある。この場合、ストレージ装置1とストレージ装置5との間の通信は、ストレージ装置1とコンピュータ6との間の通信よりも時間がかかる。
ここで第1の実施の形態の技術を適用せずに、すべての種別のコマンドに同じ制限値を適用した場合について考察する。この場合、実行中のコマンドの数がその制限値を超える状況下では、ストレージ装置5とコンピュータ6とのいずれからのコマンドも、ストレージ装置1では実行できない。このときコンピュータ6は、距離が近いため、コマンド実行不能の応答を迅速に受け取り、コマンドの再送信を行うことができる。一方、ストレージ装置5は、コンピュータ6よりもコマンド実行不能の応答の受信に時間がかかり、コマンドの再送信も遅くなる。しかもストレージ装置5から再送信されたコマンドは、コンピュータ6から再送信されたコマンドよりも時間をかけてストレージ装置1に到達する。その結果、ストレージ装置1では、コンピュータ6から送信されたコマンドが先に実行され、ストレージ装置5からのコピーコマンドの実行は待たされてしまう。ストレージ装置5からのコピーコマンドが完了できなければ、そのコピーコマンド出力の原因となったライトコマンドも完了できず、処理遅延の影響がコンピュータ4にまで及ぶ。
他方、第1の実施の形態の技術を適用し、例えば、コピーコマンドの制限値を非コピーコマンドの制限値よりも高く設定した場合を考える。この場合、ストレージ装置1における実行中のコマンドの数が増加していくと、コピーコマンドが実行できなくなる前に、コンピュータ6から出力される非コピーコマンドの実行が抑止される。例えば、図1の例では、実行中のコマンドの数が768を超えた後は、ストレージ装置5からのコピーコマンドのみが実行される。これにより、コマンドの伝送遅延時間の関係で不利にあるストレージ装置5からのコピーコマンドを効率的に処理できる。その結果、ストレージ装置1に対するコンピュータ6からのコマンドの増加による悪影響が、コンピュータ4に波及することを抑止できる。
なお、判別手段1−3b、計数手段1−3c、制御手段1−3dは、ストレージ装置が有するCPU(Central Processing Unit)により実現することができる。例えば管理部1−3内のCPUが、管理部1−3内のRAM(Random Access Memory)などのメモリに格納されたプログラムを実行することで、判別手段1−3b、計数手段1−3c、制御手段1−3dが実現される。また、記憶手段1−3aは、ストレージ装置1が有するRAMやハードディスクドライブ(HDD:Hard Disk Drive)などにより実現することができる。
また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態は、ホストコンピュータからのストレージ装置内のデータへのアクセスを要求するホストコマンドについてのコマンド数の制限値を設けることで、ストレージ装置間のデータのコピーを効率的に実行するものである。
図2は、第2の実施の形態のシステム構成の一例を示す図である。ネットワーク10を介してスイッチ11,12が接続されている。スイッチ11,12は、例えばファイバチャネルスイッチである。スイッチ11には、ホストコンピュータ21とストレージ装置100とが接続されている。スイッチ12には、ホストコンピュータ22とストレージ装置200とが接続されている。
例えばホストコンピュータ21とストレージ装置100とは同じ施設に設置されている。そのため、ホストコンピュータ21からストレージ装置100へのデータ書き込み、またはデータ読み出しのアクセスは、少ない遅延時間で実行できる。またホストコンピュータ22とストレージ装置200とは同じ施設に設置されている。そのため、ホストコンピュータ22からストレージ装置200へのデータ書き込み、またはデータ読み出しのアクセスは、少ない遅延時間で実行できる。
また、ホストコンピュータ21およびストレージ装置100が設置された施設と、ホストコンピュータ22およびストレージ装置200が設置された施設とは、地理的に離れている。そのため、例えばストレージ装置100からストレージ装置200へのデータコピーは、ホストコンピュータ22からストレージ装置200へのアクセスよりも時間がかかる。すると、ホストコンピュータ22からストレージ装置200へのアクセスが大量に発生すると、ストレージ装置100からストレージ装置200へのデータコピーが停止するおそれがある。そこで第2の実施の形態では、ストレージ装置200において、ホストコマンドを実行するかどうかの判断基準として、コピーコマンドよりも厳しい基準を適用する。これにより、ストレージ装置100からストレージ装置200へのデータコピーの処理効率の低下を抑止する。
なお、ストレージ装置100からストレージ装置200へのデータコピーのアクセスを、リモートアクセス(RA)と呼ぶ。また、ホストコンピュータがストレージ装置に対して、データアクセスを指示するコマンドを、ホストコマンドと呼ぶ。またストレージ装置100,200間のデータコピーに使用するコマンドをコピーコマンドと呼ぶ。
図3は、第2の実施の形態に用いるストレージ装置のハードウェア構成の一例を示す図である。ストレージ装置100は、複数のHDD111,112,・・・、複数の通信インタフェース(I/F)121,122,・・・、および制御モジュール(CM:Controller Module)130を有している。
HDD111,112,・・・は、記憶装置の一例である。なおストレージ装置100では、HDD111,112,・・・に代えて、SSD(Solid-State Drive)を使用することもできる。
複数の通信I/F121,122,・・・は、ホストコンピュータ21と通信するCAである。なお通信I/F121,122,・・・は、ストレージ装置200との通信に使用することもできる。また通信I/F121,122,・・・は、それぞれホストコンピュータ21との通信およびストレージ装置200との通信の両方で使用することもできる。以下、ホストコンピュータとの通信(ホスト接続)のみに使用される通信I/FをCAポートと呼ぶ。また、ホストコンピュータとの通信およびストレージ装置同士のデータコピーに使用する通信I/FをCARAポートと呼ぶ。
CM130は、ストレージ装置100内蔵のコンピュータであり、ストレージ装置100内のHDDなどの資源管理を行う。例えばCM130には、HDD111,112,・・・が接続されている。CM130は、接続されたHDD111,112,・・・で提供されるリソース(記憶機能)を管理する。CM130は、担当する複数のHDDを組み合わせてRAIDグループを生成し、生成したRAIDグループを論理的に1つのボリュームとすることができる。
CM130は、CPU131、メモリ132、キャッシュメモリ133、および複数のDA(Device Adapter)134,135,・・・を有する。CM130内の各構成要素は、CM130の内部バス139によって互いに接続されている。
CPU131は、CM130全体を制御する。例えばCPU131は、各通信I/F121,122,・・・から入力されるコマンド数を制限する。なおCM130は、複数のCPUを有していてもよい。その場合、複数のCPUが連携してCM130全体を制御する。
メモリ132は、CM130の制御に用いられる各種情報を記憶する。またメモリ132は、CPU131に実行させる処理が記述されたプログラムも記憶する。メモリ132としては、例えばフラッシュメモリなどの不揮発性のメモリを使用することができる。
キャッシュメモリ133は、HDD111,112,・・・に入出力するデータを一時的に保存するメモリである。DA134,135,・・・は、それぞれHDD111,112,・・・に接続され、接続されたHDDへのデータの入出力を行う。
ストレージ装置200は、複数のHDD211,212,・・・、複数の通信インタフェース(I/F)221,222,・・・、および制御モジュール(CM)230を有している。またCM230は、CPU231、メモリ232、キャッシュメモリ233、および複数のDA234,235,・・・を有する。CM230内の各構成要素は、CM230の内部バス239によって互いに接続されている。ストレージ装置200内の各構成要素は、ストレージ装置100内の同名の構成要素と同じ機能を有している。なおストレージ装置200内のCM230は、図1に示した管理部1−3の一例である。すなわち、第1の実施の形態における記憶手段1−3a、判別手段1−3b、計数手段1−3c、および制御手段1−3dの機能が、CM230によって実現されている。
以上のようなハードウェア構成によって、第2の実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示したストレージ装置1も、図3に示したストレージ装置100,200と同様のハードウェアにより実現することができる。また、図3に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
次に、第2の実施の形態におけるコマンド数制限について説明する。
図4は、第2の実施の形態におけるコマンドの流量制御状況の一例を示す図である。ストレージ装置100は、CARAポート151とCAポート152とを有する。CARAポート151は、例えば図3に示した通信I/F121によって実現される通信ポートである。またストレージ装置100は、複数のボリューム141,142,143を有する。ボリューム141,142,143は、例えばRAIDグループ内に設けられた論理ボリュームである。またボリューム141,142,143は、それぞれが1台のHDDであってもよい。
ストレージ装置200は、CARAポート251とCAポート252とを有する。CARAポート251は、例えば図3に示した通信I/F221によって実現される通信ポートである。またストレージ装置200は、複数のボリューム241,242,243を有する。ボリューム241,242,243は、例えばRAIDグループ内に設けられた論理ボリュームである。またボリューム241,242,243は、それぞれが1台のHDDであってもよい。
図4の例では、ストレージ装置100のボリューム143と、ストレージ装置200のボリューム241との間にRAセッションが確立されている。RAセッションは、ストレージ装置100からストレージ装置200へリモートアクセスし、ボリューム143に書き込まれたデータのボリューム241へのコピーを指示するコピーコマンド32の送信に使用する通信経路である。RAセッションによって、ストレージ装置間コピーの対象ボリュームが定義される。
ホストコンピュータ21は、スイッチ11を介してCARAポート151に接続されている。ホストコンピュータ21は、ストレージ装置100内のボリューム141,142,143内のデータにアクセスする場合、ホストコマンド31を出力する。ホストコマンド31は、スイッチ11を介してストレージ装置100のCARAポート151に入力される。ストレージ装置100では、CARAポート151に入力されたホストコマンド31をCM130が受信する。CM130は、いずれかのボリューム141,142,143に対して、ホストコマンド31に示されたデータアクセス処理を実行する。
なおホストコマンドのうち、RAセッションが組まれたボリュームへのコマンドを、特にRAコマンドと呼ぶ。またRAセッションが組まれていないボリュームへのコマンドを、特にCAコマンドと呼ぶ。コピーコマンド32は、初期コピーを除き、ボリューム143に対してRAコマンドによるデータ更新があった場合に、RAセッションが組まれた相手筐体のボリューム241を等価状態にするために発行される。つまり、RAセッションが組まれたボリューム143にデータ更新が起こらない限りコピーコマンド32は発行されない。なお初期コピーとは、RAセッションが組まれた時点で互いのディスクを等価状態にするコピー動作である。
例えばCM130は、ホストコマンド31がボリューム143へのデータ書き込み指示の場合、ボリューム143にデータを書き込むと共に、書き込んだデータをストレージ装置200内のボリューム241にコピーするコピーコマンド32を生成する。そしてCM130は、生成したコピーコマンド32をCARAポート151から出力する。コピーコマンド32は、スイッチ11,12を介してストレージ装置200のCARAポート251に入力される。ストレージ装置200では、CARAポート251に入力されたコピーコマンド32を、CM230が受信する。CM230は、コピーコマンド32に従ってボリューム241にデータを書き込む。
なお、ボリューム241は、ストレージ装置100内のボリューム143のコピーデータ格納用に使用されており、通常の運用中は、ホストコンピュータ22からのアクセスは行われないものとする。
ホストコンピュータ22は、スイッチ12を介してCARAポート251に接続されている。ホストコンピュータ22は、ストレージ装置200内のボリューム242,243内のデータにアクセスする場合、ホストコマンド33を出力する。ホストコマンド33は、スイッチ12を介してストレージ装置200のCARAポート251に入力される。ストレージ装置200では、CARAポート251に入力されたホストコマンド33をCM230が受信する。CM230は、いずれかのボリューム242,243に対して、ホストコマンド33に示されたデータアクセス処理を実行する。
図4の例では各ストレージ装置100,200は、通信ポート(CARAポート151,251、CAポート152,252)ごとに、コマンドの種別にかかわらず最大で計1024個のコマンドを同時に処理できるものとする。
例えばCM130は、CARAポート151から入力された実行中のコマンドの数(コマンド実行数)を、最大で1024に制限する。なお、CARAポート151はコピーコマンド32の送信にも使用されるが、送信することができるコマンド数については管理せず、受信コマンド数に影響するものではない。
CM230は、CARAポート251から入力された実行中のコマンドの数を、最大で1024に制限する。またCM230は、CARAポート251から入力された実行中のコマンド数が所定の閾値以上となった場合、ホストコマンドの実行を抑止する。例えばCM230は、コマンド数が768以上となると、ホストコマンドの実行を抑止する。なおCM230は、コマンド実行数が1024に達していなければ、コマンド実行数が768以上であっても、コピーコマンドは実行する。
図5は、第2の実施の形態におけるRA先のストレージ装置でのコマンド制限の実施状況を示す図である。RA元のストレージ装置100のRAセッションが組まれたボリューム143にデータの書き込みが行われるごとに、ストレージ装置100からRA先のストレージ装置200へコピーコマンドが送信される。またホストコンピュータ22からストレージ装置200へは、ストレージ装置200内のボリューム242,243へのデータアクセスを指示するホストコマンドが送信される。
ストレージ装置200では、CARAポート251を介して入力されたコマンドのうち、現在実行中のコマンドの数(コマンド実行数)がカウントされている。ホストコマンドのコマンド制限値が「768」の場合、コマンド実行数が「768」未満の期間は、ストレージ装置200では、新たに入力されたコマンドがコピーコマンドであってもホストコマンドであっても、そのコマンドに応じたデータアクセスが実行される。ストレージ装置200は、コマンドに応じて実行したデータアクセスが正常に完了すると、コマンドの送信元に対して正常応答を送信する。
ストレージ装置200に対して、コピーコマンドとホストコマンドとが短期間に大量に入力されると、コマンド実行数が「768」以上になる場合がある。コマンド実行数が「768」以上になると、ストレージ装置200は、ストレージ装置100から入力されたコピーコマンドについては、そのコピーコマンドに応じたデータアクセスを実行する。他方、ストレージ装置200は、ホストコンピュータ22から入力されたホストコマンドについては、そのホストコマンドに応じたデータアクセスを実行せずに、QFULL応答をホストコンピュータ22に送信する。QFULL応答は、コマンドの送信元に対して、コマンド実行数過多による実行不能を通知するメッセージである。QFULL応答を受信したホストコンピュータ22は、例えば、所定時間経過後にホストコマンドを再送信することができる。このようにして、ホストコマンドの実行が抑止される。
その後、ストレージ装置200に対して、コピーコマンドが短期間に大量に入力されると、コマンド実行数が「1024」に達する場合がある。コマンド実行数が「1024」に達すると、ストレージ装置200は、コマンドの種別に関係なく、新たに入力されたコマンドに応じたデータアクセスを実行せずに、QFULL応答をそのコマンドの送信元に送信する。すなわちストレージ装置200は、ストレージ装置100から入力されたコピーコマンドについても、そのコピーコマンドに応じたデータアクセスを実行せずに、QFULL応答をストレージ装置100に送信する。QFULL応答を受信したストレージ装置100は、例えば、所定時間経過後にコピーコマンドを再送信することができる。このようにして、すべてのコマンドの実行が抑止される。
ストレージ装置200において実行中のデータアクセスが完了するごとに、コマンド実行数はデクリメントされる。コマンド実行数が1024以下となれば、ストレージ装置200は、以後コピーコマンドが入力されると、そのコピーコマンドに応じたデータアクセスを実行する。またコマンド実行数が768以下となれば、ストレージ装置200は、以後ホストコマンドが入力されると、そのホストコマンドに応じたデータアクセスを実行する。
図5に示すように、ストレージ装置200では、入力されたコマンドがコピーコマンドかホストコマンドかにより、そのコマンドに応じたデータアクセスの実行の有無が異なる。そのため、ストレージ装置200では、コマンドが入力されると、入力されたコマンドがコピーコマンドかホストコマンドかを判別する。コマンド種別の判別は、コマンドに含まれるオペレーションコードの内容に基づいて行うことができる。
図6は、コマンドのデータフォーマットの一例を示す図である。例えば、ストレージ装置100,200は、SCSI(Small Computer System Interface)の規約に沿ったCDB(Command Descriptor Block)と呼ばれるコマンドを受信する。CDBのコマンドには、6バイト・10バイト・12バイト・16バイトのコマンドが存在する。
コマンド40の先頭には、1バイトのオペレーションコード41が設定されている。オペレーションコード41には、コマンドのサイズや種別を識別するコードが設定される。一般的なコードとしては、リード要求なのかライト要求なのかを示すコードや、コマンドのサイズを識別するコードが設定される。例えばコード「08」は、6バイトのリード要求であることを示している。コード「0A」は、6バイトのライト要求であることを示している。コード「28」は、10バイトのリード要求であることを示している。コード「2A」は、10バイトのライト要求であることを示している。コード「A8」は、12バイトのリード要求であることを示している。コード「AA」は、12バイトのライト要求であることを示している。コード「88」は、16バイトのリード要求であることを示している。コード「8A」は、16バイトのライト要求であることを示している。ホストコンピュータ21,22は、データのリードまたはデータのライトを要求するホストコマンドを送信する際に、オペレーションコード41として一般的なコードのいずれかを設定する。
「D0」以降のオペレーションコード41は、ベンダーユニークに使用可能なコードである。そこで第2の実施の形態では、例えばコード「D9」を、コピーコマンドであることの指定に用いる。またコード「DD」を、経路監視コマンドであることの指定に用いる。なお、経路監視コマンドの場合、例えば10バイト目〜13バイト目に、付加情報42が格納される。付加情報42は、例えばコマンドの実行状況やコマンド制限値などである。
ストレージ装置100は、送信するコピーコマンドのオペレーションコード41に「D9」を設定し、他の領域にコピーするデータを設定する。またホストコンピュータ21,22は、送信するホストコマンドのオペレーションコード41に、「08」、「0A」などのリード要求またはライド要求を示す値を設定する。
また、CM230は、入力されたコマンドのコマンド制限値と、現在実行中のコマンドの数(コマンド実行数)とを、例えばコマンド管理テーブルを用いて管理する。
図7は、コマンド管理テーブルの一例を示す図である。コマンド管理テーブル50には、コマンド制限値とコマンド実行数とが設定されている。なおコマンド管理テーブル50は、例えばCM230のメモリ232内に格納されている。
コマンド制限値は、入力されたコマンドを実行するか否かの判断基準となるコマンド実行数の閾値である。コマンド実行数がコマンド制限値に達している場合、入力されたコマンドの実行が抑止される。コマンド制限値は、CM230がコマンドを受信するごとに、受信したコマンドの種別に応じた値が設定される。例えばコピーコマンドを受信した場合、CM230は、コマンド制限値として「1024」を設定する。またホストコマンドを受信した場合、CM230は、コマンド制限値として「768」を設定する。
コマンド実行数は、実行中のコマンドの数である。実行中のコマンドとは、ストレージ装置200に入力されているが、送信元に応答を返していないコマンドである。コマンド実行数は、CM230がコマンドを受信したときに1だけインクリメントされ、CM230が応答を送信したときに1だけデクリメントされる。
次に、ストレージ装置200のCM230におけるコマンド実行処理の手順について説明する。
図8は、第2の実施の形態のコマンド実行処理の手順を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
[ステップS101]CM230は、コマンドを受信する。
[ステップS102]CM230は、コマンド管理テーブル50のコマンド実行数の値を1だけインクリメントする。
[ステップS103]CM230は、受信したコマンドの種別がホストコマンドかコピーコマンドかを判断する。例えばCM230は、受信したコマンドのオペレーションコードを参照し、オペレーションコードが「08」、「0A」、「28」、「2A」、「A8」、「AA」、「88」、「8A」のいずれかの値であれば、ホストコマンドであると判断する。またCM230は、受信したコマンドのオペレーションコードが、「D9」であればコピーコマンドであると判断する。受信したコマンドがコピーコマンドであれば、CM230は処理をステップS104に進める。また受信したコマンドがホストコマンドであれば、CM230は処理をステップS111に進める。
[ステップS104]CM230は、コピーコマンドを受信した場合、コマンド管理テーブル50のコマンド制限値に「1024」を設定する。
[ステップS105]CM230は、コマンド管理テーブル50を参照し、コマンド実行数がコマンド制限値以下か否かを判断する。CM230は、コマンド実行数がコマンド制限値以下であれば、処理をステップS108に進める。またCM230は、コマンド実行数がコマンド制限値を超えていれば、処理をステップS106に進める。
[ステップS106]CM230は、コマンド実行数がコマンド制限値を超えた場合、コマンド実行数を1だけデクリメントする。
[ステップS107]CM230は、QFULL応答をストレージ装置100に送信する。その後、コマンド実行処理が終了する。
[ステップS108]コマンド実行数がコマンド制限値以下であれば、CM230はコピーコマンドに応じた処理を実行する。例えばCM230は、コピーコマンドに含まれるデータを、ボリューム241に書き込む。
[ステップS109]CM230は、コマンド実行数を1だけデクリメントする。
[ステップS110]CM230は、ストレージ装置100へ、コピーコマンドに応じたデータ書き込みが正常に完了したことを示す正常応答を送信する。その後、コマンド実行処理が終了する。
[ステップS111]CM230は、ホストコマンドを受信した場合、コマンド管理テーブル50のコマンド制限値に「768」を設定する。
[ステップS112]CM230は、コマンド管理テーブル50を参照し、コマンド実行数がコマンド制限値以下か否かを判断する。CM230は、コマンド実行数がコマンド制限値以下であれば、処理をステップS115に進める。またCM230は、コマンド実行するがコマンド制限値を超えていれば、処理をステップS113に進める。
[ステップS113]CM230は、コマンド実行数がコマンド制限値を超えた場合、コマンド実行数を1だけデクリメントする。
[ステップS114]CM230は、QFULL応答をホストコンピュータ22に送信する。その後、コマンド実行処理が終了する。
[ステップS115]コマンド実行数がコマンド制限値以下であれば、CM230はホストコマンドに応じた処理を実行する。例えばCM230は、ホストコマンドがリード要求であれば、ホストコマンドで指定されたデータをボリューム242またはボリューム243から読み出す。またCM230は、ホストコマンドがライト要求であれば、ホストコマンドで指定されたデータをボリューム242またはボリューム243に書き込む。
[ステップS116]CM230は、コマンド実行数を1だけデクリメントする。
[ステップS117]CM230は、ホストコンピュータ22へ、ホストコマンドに応じたデータアクセスが正常に完了したことを示す正常応答を送信する。なお、ホストコマンドがリード要求の場合、正常応答には、読み出したデータが含まれる。その後、コマンド実行処理が終了する。
このように、第2の実施の形態では、RA先となるストレージ装置200において、コピーコマンドでは1ポート当たりのコマンド制限値を1024に制限としているところ、ホストコマンドの場合、コマンド制限値を768にしている。そうすることで、ホストコマンドによる負荷が高い場合にも、最低256個はコピーコマンドの処理に割当てられるため、ストレージ装置100,200間のコピー処理が停止するという事態が抑止される。すなわち、コピー処理の処理効率の低下が抑止される。なおホストコマンド数が768に満たない場合には、コピーコマンドを256個以上実行することも可能である。
〔第3の実施の形態〕
第3の実施の形態は、ホストコマンドとコピーコマンドの動的な流量制御を行うものである。なお、第3の実施の形態におけるシステム構成は、図2、図3に示した第2の実施の形態の構成と同様である。また、第3の実施の形態におけるストレージ装置200のCM230のメモリ232には、図7と同様のコマンド管理テーブル50が格納されている。
上記第2の実施の形態では、単位時間当たりに受信するコピーコマンドの数が少ない場合、ホストコマンドが大量に発生してもコマンド実行数の総数が1024未満となる。そのため、ホストコマンドのコマンド制限値をコピーコマンドと同じ値にした場合(例えば1024)に比べ、コピーコマンドが少ない場合の1ポート当たりの性能が低下する。例えばホストコマンドのコマンド制限値が768の場合、コピーコマンドの実行数が256未満のとき、全体で1024のコマンドを実行できる性能を有しているにも関わらず、1024個のコマンドを実行することができない。
そこで第3の実施の形態では、即座にコピーコマンドが発行されることのない場合には、ホストコマンドの制限値を768個とせずに、1024個とする。即座にコピーコマンドが発行されることのない場合とは、コピーコマンドの送信のために事前に行う処理がまだ行われていない場合である。例えば、コピーコマンドの送信には、ストレージ装置間のコピーを行うRAセッションを設定するといった、コピーコマンドの通信経路の設定が事前に行われる。このようなRAセッションの設定などの通信経路の設定が行われていない場合、即座にコピーコマンドが発行されることはないと判断できる。
図9は、第3の実施の形態におけるコマンドの流量制御状況の一例を示す図である。図9では、上段にRAセッションが設定されていないときのコマンド流量制御状況を示しており、下段にRAセッションが設定されているときのコマンド流量制御状況を示している。
RAセッションが設定されていない場合、各ストレージ装置100,200は、CARAポート151,251を介して入力されるすべての種別のコマンドに対するコマンド制限値として1024を適用する。
RAセッションが設定されている場合、ストレージ装置200は、ホストコマンドのコマンド制限値のみ768とする。ホストコマンド以外のコマンドのコマンド制限値は1024である。
RAセッションが設定されているか否かは、例えばセッション管理テーブルで管理されている。
図10は、第3の実施の形態におけるセッション管理テーブルの一例を示す図である。セッション管理テーブル60には、RA元ボリューム番号、RA先ボリューム番号、およびセッション種別の欄が設けられている。
RA元ボリューム番号の欄には、コピーのRA元となるボリュームの、そのボリュームが属するストレージ装置内での識別番号(ボリューム番号)が設定される。
RA先ボリューム番号の欄には、コピーのRA先となるボリュームの、そのボリュームが属するストレージ装置内での識別番号(ボリューム番号)が設定される。
セッション種別の欄には、セッションの種別が設定されている。異なるストレージ装置それぞれのボリューム間でのデータコピー(リモートコピー)に用いるセッションの場合、セッション種別の欄に「リモートコピーセッション」と設定される。同じストレージ装置内の異なるボリューム間でのデータコピー(ローカルコピー)に用いるセッションの場合、セッション種別の欄に「ローカルコピーセッション」と設定される。なおリモートコピーセッションの場合、コピー相手となる装置の識別子(装置ID)が設定される。
図10に示したようなセッション管理テーブルは、例えばストレージ装置200のCM230内のメモリ232に格納されている。
次に、ストレージ装置200におけるコマンド実行処理について説明する。
図11は、第3の実施の形態のコマンド実行処理の手順を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。図11に示すステップのうち、ステップS201〜S210,S214〜S219の各処理は、それぞれ図8に示した第2の実施の形態のステップS101〜S110,S112〜S117の処理と同様である。そこで、第2の実施の形態と異なる処理であるステップS211〜S213について説明する。
[ステップS211]ストレージ装置200のCM230は、受信したコマンドがホストコマンドの場合、RAセッションの有無を判断する。例えばCM230は、セッション管理テーブル60を参照し、RAセッションが少なくとも1つ設定されている場合、RAセッションがあると判断する。CM230は、RAセッションがある場合、処理をステップS212に進める。またCM230は、RAセッションがない場合、処理をステップS213に進める。
[ステップS212]CM230は、RAセッションが設定されている場合、ホストコマンドのコマンド制限値を768に設定する。その後、CM230は処理をステップS214に進める。
[ステップS213]CM230は、RAセッションが設定されていない場合、ホストコマンドのコマンド制限値を1024に設定する。
その後、ステップS214の処理により、コマンド実行数が設定されたコマンド制限値以下か否かに応じて、受信したホストコマンドの実行の有無が判断される。その結果、RAセッションがない場合には、ホストコマンドに対しても、コピーコマンドと同様のコマンド制限値が適用される。
このようにコマンドの流量制御を行うことで、コピーコマンドを受信する状況にない場合には、ホストコマンドであっても、コマンド制限値として1024が適用され、処理効率を向上させることができる。
〔第4の実施の形態〕
次に第4の実施の形態について説明する。第4の実施の形態は、コピーコマンドとホストコマンドの比率を考慮した動的な流量制御を行うものである。なお、第4の実施の形態におけるシステム構成は、図2、図3に示した第2の実施の形態の構成と同様である。
第2・第3の実施の形態では、RA先側のストレージ装置200に対するホストコマンド数が過大となった場合におけるコピーコマンドの処理効率低下を抑止したものであるが、コピーコマンド数が過大となる場合について考慮されていない。そのためRA先のストレージ装置200において、コピーコマンドでコマンド制限値1024を使いきり、ホストコマンドを1つも実行できない状況に陥る可能性もある。
そこで、第4の実施の形態では、ストレージ装置200が受信したコピーコマンド数とホストコマンド数との比に基づいて、コピーコマンドとホストコマンドとのそれぞれのコマンド制限値を設定する。これにより、コピーコマンドが多くなった場合におけるコピーコマンドとホストコマンドとの処理効率の偏りの増加が抑止される。
図12は、第4の実施の形態におけるコマンドの流量制御状況の一例を示す図である。第4の実施の形態では、RA先のストレージ装置200において、ある一定時間(例えば10秒間)のRA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとをカウントする。なお、RA先ホストコマンド累積数tcは、一定期間内にストレージ装置200が受信したホストコマンドの数であり、実行されずにQFULL応答が返されたホストコマンドも含まれる。同様にRA先コピーコマンド累積数trは、一定期間内にストレージ装置200が受信したコピーコマンドの数であり、実行されずにQFULL応答が返されたコピーコマンドも含まれる。
なおRA元側のストレージ装置100では、CARAポート151から受信したコマンドのコマンド制限値が1024に設定されているものとする。ホストコンピュータ21からCARAポート151に入力されたホストコマンド31がボリューム143への書き込みであった場合、そのホストコマンド31に応じたデータコピーが発生する。この際、ホストコマンド31に対する応答は、対応するコピーコマンド32へのストレージ装置200からの応答をストレージ装置100が受信した後に出力される。そのため、入力されたホストコマンド31は、データコピー処理が完了するまで、コマンド実行中の状態となる。
ストレージ装置200のCM230は、RA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとの比率に応じて、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとの比率を決定する。計算式は以下の通りである。
tcs=(tc/(tc+tr))×1024 ・・・(1)
trs=1024−tcs ・・・(2)
例えば、RA先ホストコマンド累積数tcが「2000」、RA先コピーコマンド累積数trが「1024」の場合を考える。この場合、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとは、以下のような値となる。
tcs=677
trs=347
このように制御することで、コピーコマンドを多数受信した場合にも、ホストコマンドと平等に処理することが可能となる。コピーコマンドとホストコマンドの比率を考慮した動的な流量制御に用いられる情報は、コマンド管理テーブルに設定される。
図13は、第4の実施の形態のコマンド管理テーブルの一例を示す図である。コマンド管理テーブル51には、ホストコマンド実行数、RA先ホストコマンド累積数tc、RA先ホストコマンド制限値tcs、コピーコマンド実行数、RA先コピーコマンド累積数tr、およびRA先コピーコマンド制限値trsが設定されている。なおコマンド管理テーブル51は、例えばCM230のメモリ232内に格納されている。
ホストコマンド実行数は、実行中のホストコマンドの数である。RA先ホストコマンド累積数tcは、一定時間内に受信したホストコマンドの数である。RA先ホストコマンド制限値tcsは、ストレージ装置200におけるホストコマンドの実行数の上限を示す値である。ホストコマンド実行数がRA先ホストコマンド制限値tcsに達している場合、入力されたホストコマンドの実行が抑止される。
コピーコマンド実行数は、実行中のコピーコマンドの数である。RA先コピーコマンド累積数trは、一定時間内に受信したコピーコマンドの数である。RA先コピーコマンド制限値trsは、ストレージ装置200におけるコピーコマンドの実行数の上限を示す値である。コピーコマンド実行数がRA先コピーコマンド制限値trsに達している場合、入力されたコピーコマンドの実行が抑止される。
図13に示したコマンド管理テーブル51のRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとは、例えば10秒間隔で更新される。以下、コマンド管理テーブル51の更新処理について説明する。
図14は、第4の実施の形態のコマンド管理テーブル更新処理の手順を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
[ステップS301]CM230は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS302]CM230は、タイマが10秒経過したか否かを判断する。10秒経過していなければ、CM230は処理をステップS301に進める。10秒経過していれば、CM230は処理をステップS303に進める。
[ステップS303]CM230は、RA先ホストコマンド制限値tcsを更新する。例えばCM230は、コマンド管理テーブル51を参照し、RA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとを取得する。次にCM230は、式(1)に基づいてRA先ホストコマンド制限値tcsを計算する。そしてCM230は、計算したRA先ホストコマンド制限値tcsで、コマンド管理テーブル51に格納されているRA先ホストコマンド制限値tcsの値を更新する。
[ステップS304]CM230は、RA先コピーコマンド制限値trsを更新する。例えばCM230は、コマンド管理テーブル51を参照し、RA先ホストコマンド制限値tcsを取得する。次にCM230は、式(2)に基づいてRA先コピーコマンド制限値trsを計算する。そしてCM230は、計算したRA先コピーコマンド制限値trsで、コマンド管理テーブル51に格納されているRA先コピーコマンド制限値trsの値を更新する。
[ステップS305]CM230は、コマンド管理テーブル51のRA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとを0に初期化する。その後、CM230は処理をステップS301に進める。
このようにして、直前の10秒間におけるRA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとに基づくRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとの更新が、10秒間隔で繰り返し実行される。
次に、第4の実施の形態のストレージ装置200におけるコマンド実行処理について説明する。
図15は、第4の実施の形態のコマンド実行処理の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
[ステップS311]CM230は、コマンドを受信する。
[ステップS312]CM230は、受信したコマンドの種別がホストコマンドかコピーコマンドかを判断する。コマンドの種別は、例えば受信したコマンドのオペレーションコードに基づいて判断できる。受信したコマンドがコピーコマンドであれば、CM230は処理をステップS313に進める。また受信したコマンドがホストコマンドであれば、CM230は処理をステップS320に進める。
[ステップS313]CM230は、コピーコマンドを受信した場合、コマンド管理テーブル51のコピーコマンド実行数の値を1だけインクリメントする。またCM230は、RA先コピーコマンド累積数trの値を1だけインクリメントする。
[ステップS314]CM230は、コマンド管理テーブル51を参照し、コピーコマンド実行数がRA先コピーコマンド制限値trs以下か否かを判断する。コピーコマンド実行数がRA先コピーコマンド制限値trs以下であれば、CM230は処理をステップS317に進める。またコピーコマンド実行数がRA先コピーコマンド制限値trsを超えていれば、CM230は処理をステップS315に進める。
[ステップS315]CM230は、コピーコマンド実行数がRA先コピーコマンド制限値trsを超えた場合、コピーコマンド実行数を1だけデクリメントする。
[ステップS316]CM230は、QFULL応答をストレージ装置100に送信する。その後、コマンド実行処理が終了する。
[ステップS317]コマンド実行数がコマンド制限値以下であれば、CM230はコピーコマンドに応じた処理を実行する。
[ステップS318]CM230は、コピーコマンド実行数を1だけデクリメントする。
[ステップS319]CM230は、ストレージ装置100へ、コピーコマンドに応じたデータ書き込みが正常に完了したことを示す正常応答を送信する。その後、コマンド実行処理が終了する。
[ステップS320]CM230は、ホストコマンドを受信した場合、コマンド管理テーブル51のホストコマンド実行数の値を1だけインクリメントする。またCM230は、RA先ホストコマンド累積数tcの値を1だけインクリメントする。
[ステップS321]CM230は、コマンド管理テーブル51を参照し、ホストコマンド実行数がRA先ホストコマンド制限値tcs以下か否かを判断する。ホストコマンド実行数がRA先ホストコマンド制限値tcs以下であれば、CM230は処理をステップS324に進める。またホストコマンド実行数がRA先ホストコマンド制限値tcsを超えていれば、CM230は処理をステップS322に進める。
[ステップS322]CM230は、ホストコマンド実行数がRA先ホストコマンド制限値tcsを超えた場合、ホストコマンド実行数を1だけデクリメントする。
[ステップS323]CM230は、QFULL応答をホストコンピュータ22に送信する。その後、コマンド実行処理が終了する。
[ステップS324]コマンド実行数がコマンド制限値以下であれば、CM230はホストコマンドに応じた処理を実行する。
[ステップS325]CM230は、ホストコマンド実行数を1だけデクリメントする。
[ステップS326]CM230は、ホストコンピュータ22へ、ホストコマンドに応じたデータアクセスが正常に完了したことを示す正常応答を送信する。その後、コマンド実行処理が終了する。
このように制御することで、コピーコマンドを多数受信した場合にも、コピーコマンドとホストコマンドとを平等に処理することが可能となる。
〔第5の実施の形態〕
次に第5の実施の形態について説明する。第5の実施の形態は、RA元側のコマンド累積数も考慮に入れて、動的な流量制御を行うものである。なお、第5の実施の形態におけるシステム構成は、図2、図3に示した第2の実施の形態の構成と同様である。
第4の実施の形態では、RA先側のストレージ装置200におけるRA先コピーコマンド制限値trsとRA先ホストコマンド制限値tcsとの算出に際し、RA元のコマンド累積数が考慮されていない。ストレージ装置200におけるRA先コピーコマンド制限値trsとRA先ホストコマンド制限値tcsとの算出に際して考慮されていたRA先コピーコマンド累積数trは、RA元のCARAポート151において1024に制限された後の値である。これに対して、ストレージ装置200に入力されたホストコマンドに関するRA先ホストコマンド累積数tcには、QFULL応答が返されたホストコマンドも含まれており、コマンド制限の影響を受けていない。そのため、ストレージ装置100に入力されたホストコマンド数が1024以上となり、RA先コピーコマンド累積数trが制限後の状況下で計数された場合で、かつストレージ装置200に入力されるホストコマンドが1024以上の場合に、公平な実行とはならない。すなわち、ストレージ装置200において、コピーコマンドよりもホストコマンドの方が優先して実行されてしまう。この問題を解決するために、第5の実施の形態では、RA先側のストレージ装置200におけるRA先コピーコマンド制限値trsとRA先ホストコマンド制限値tcsの算出に、RA元のホストコマンド累積数を用いるようにする。
図16は、第5の実施の形態におけるコマンド流量制御状況の一例を示す図である。第5の実施の形態では、RA元のストレージ装置100において、RAコマンド数を示す情報を、RA先のストレージ装置200へ通知する。
例えばストレージ装置100のCM130は、一定時間(例えば10秒)ごとに、ストレージ装置100に入力されたホストコマンドの数(RA元ホストコマンド累積数:ic)をカウントする。
またCM130は、ボリューム141〜143へのアクセスが実行されたホストコマンド31のアクセス先を判別する。そしてCM130は、アクセス先が、RAセッションが組まれていないボリューム141,142であれば、実行されたホストコマンド31はCAコマンド34であると判断する。またCM130は、アクセス先が、RAセッションが組まれたボリューム143であれば、実行されたホストコマンド31はRAコマンド35であると判断する。そしてCM130は、一定時間(例えば10秒)内に実行されたホストコマンド31の総数のうち、RAコマンド35の割合(RAコマンド率:p)を計算する。
なおRAコマンド35が実行された場合、RAコマンドがデータの書き込みを要求するライトコマンドであれば、CM130によりボリューム143にデータが書き込まれる。そして、CM130がコピーコマンド32を発行する。発行されたコピーコマンド32は、スイッチ11,12などを経由して、ストレージ装置200に送信される。
そしてCM130は、RA元ホストコマンド累積数icとRAコマンド率pとを含む経路監視コマンド36を、ストレージ装置200に送信する。例えばCM130は、一定時間(例えば10秒)ごとに、付加情報42(図6参照)を追加した経路監視コマンド36を送信する。付加情報42には、RA元ホストコマンド累積数icとRAコマンド率pとが含められる。
RA元ホストコマンド累積数icとRAコマンド率pとを含む経路監視コマンド36により、RA先のストレージ装置200において、RA元のコマンドの入力状況を知ることができる。
RA先のストレージ装置200では、CM230が、CARAポート251に入力されたコマンドに基づいて、RA先ホストコマンド累積数tcをカウントする。そしてCM230は、RA先ホストコマンド累積数tcと、経路監視コマンド36に示された情報とに基づいて、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。計算式は以下の通りである。
ic×p:tc=trs:tcs ・・・(3)
tcs+trs=1024 ・・・(4)
この2式から、以下の結果が得られる。
tcs=(tc/(tc+ic×p))×1024 ・・・(5)
trs=1024−tcs
=(ic×p/(tc+ic×p))×1024 ・・・(6)
さらに、それらの情報を使用することで、RA元のストレージ装置100におけるRA元ホストコマンド制限値icsも、RA先のストレージ装置200の状況に応じた値とすることができる。例えば以下の計算式でストレージ装置100におけるRA元ホストコマンド制限値icsを算出できる。
ics=trs/p ・・・(7)
例えばストレージ装置200がRA元ホストコマンド制限値icsを計算し、計算したRA元ホストコマンド制限値icsを付加情報として含む経路監視コマンド37を、ストレージ装置100に送信する。経路監視コマンド37を受信したストレージ装置100は、経路監視コマンド37で示されたRA元ホストコマンド制限値icsを、CARAポート151から入力されるホストコマンドの実行制限に適用する。
このように、RA元のコマンド入力の状態を考慮することによって、ストレージ装置100,200それぞれに1024を超えるコマンドが入力された場合でも、ストレージ装置100,200それぞれにおいてホストコマンドが同等に処理される。
以下に、第5の実施の形態における各ストレージ装置100,200でのホストコマンドの実行性能について、具体例を用いて説明する。
第1の例は、「ic×(1−p)≦tc」の場合である。「ic×(1−p)」は、一定時間内にRA元のストレージ装置100に入力されたCAコマンドの数(CAコマンド累積数)を示している。すなわち「ic×(1−p)≦tc」は、ストレージ装置100に入力されたCAコマンド累積数が、ストレージ装置200に入力されたRA先ホストコマンド累積数tc以下の場合を示している。
ここで、各測定値が以下の通りであるものとする。
RA元ホストコマンド累積数ic:3000
RAコマンド率p:0.5
RA先ホストコマンド累積数tc:2000
すると、RA先ホストコマンド制限値tcs、RA先コピーコマンド制限値trs、およびRA元ホストコマンド制限値icsは以下の通りとなる。
tcs=(2000/(2000+3000×0.5))×1024=585
trs=1024−585=439
ics=439/0.5=878
この場合、ホストコンピュータ21から単位時間当たりに出力されるホストコマンドの数がほぼ一定であれば、ストレージ装置100に対してRA元ホストコマンド制限値icsを超過して入力されるホストコマンドの数は、ic−ics=2122となる。同様に、ホストコンピュータ22から単位時間当たりに出力されるホストコマンドの数がほぼ一定であれば、ストレージ装置200に対してRA先ホストコマンド制限値tcsを超過して入力されるホストコマンドの数は、「tc−tcs=1415」となる。すると、ホストコマンドを送信した各ホストコンピュータ21,22にQFULLが応答される確率(QFULL率)は、以下の通りとなり、同等の性能となることがわかる。
2122/3000=0.707=70.7%
1415/2000=0.707=70.7%
第2の例は、「ic×(1−p)>tc」の場合である。「ic×(1−p)>tc」は、ストレージ装置100に入力されたCAコマンドの数が、ストレージ装置200に入力されたRA先ホストコマンド累積数tcよりも多い場合を示している。
ここで、各測定値が以下の通りであるものとする。
RA元ホストコマンド累積数ic:2000
RAコマンド率:0.4
RA先ホストコマンド累積数tc:1000
すると、RA先ホストコマンド制限値tcs、RA先コピーコマンド制限値trs、およびRA元ホストコマンド制限値icsは以下の通りとなる。
tcs=(1000/(1000+2000×0.4))×1024=568
trs=1024−568=456
ics=456/0.4=1140>1024
このように、icsが1024を超えてしまう。そのため、「ic×(1−p)>tc」の場合にはicsを1024に合わせるよう、以下の計算式を使用する。
ics=1024 ・・・(8)
trs=ics×p ・・・(9)
tcs=(tc/ic)×1024 ・・・(10)
すると、RA先コピーコマンド制限値trsとRA先ホストコマンド制限値tcsとは、以下のような値に変更される。
trs=1024×0.4=409
tcs=1000/2000×1024=512
この場合、ic−ics=976、tc−tcs=488であり、QFULL率としては、それぞれ以下の通りとなり、同等の性能となる。
976/2000=0.488=48.8%
488/1000=0.488=48.8%
なお第5の実施の形態は、RA元のストレージ装置100のCARAポート151にホストコマンド31が入力され、CARAポート151から出力されたコピーコマンド32が、ストレージ装置200のCARAポート251で受信される。このようにCARAポートを介して入出力されたコマンドが、各ストレージ装置へのコマンド状態の監視対象となる。
ホストコマンド31は、CARAポート151以外に、CAポート152に入力される場合があり得る。CAポート152に入力されたホストコマンドに関しては、第5の実施の形態における監視対象外となる。
またコピーコマンド32は、ストレージ装置100のCARAポート151から出力される場合以外に、RAポートから出力される場合があり得る。RAポートから出力されたコピーコマンドに関しては、第5の実施の形態における監視対象外となる。
さらにRA先のストレージ装置200では、コピーコマンド32をCARAポート251で受信する場合以外に、RAポートで受信する場合もあり得る。RAポートで受信されたコピーコマンドに関しては、第5の実施の形態における監視対象外となる。
このように、専用ポートを介して入出力されるコマンドに関しては、第5の実施の形態によるストレージ装置のコマンド入出力状況を判断する上での監視対象外となる。
次に、第5の実施の形態の機能を実現するためにRA元とRA先の各ストレージ装置100,200が有するコマンド管理テーブルについて説明する。
図17は、RA元コマンド管理テーブルの一例を示す図である。ストレージ装置100は、RA元コマンド管理テーブル52を有する。例えばCM130のメモリ内にRA元コマンド管理テーブル52が格納される。
RA元コマンド管理テーブル52には、ホストコマンド実行数、RA元ホストコマンド累積数ic、RA元ホストコマンド制限値ics、RAコマンド数、およびRAコマンド率pが設定されている。
ホストコマンド実行数は、RA元のストレージ装置100で実行しているホストコマンドの数である。
RA元ホストコマンド累積数icは、一定時間内にRA元のストレージ装置100に入力されたホストコマンドの数である。
RA元ホストコマンド制限値icsは、RA元のストレージ装置100におけるホストコマンド実行数の上限を示す値である。
RAコマンド数は、一定時間内にRA元のストレージ装置100に入力されたホストコマンドのうち、RAセッションが組まれたボリュームへのアクセス要求であるRAコマンドの数である。
RAコマンド率pは、一定時間内にRA元のストレージ装置100に入力されたホストコマンドのうちの、RAコマンドの割合である。
図18は、RA先コマンド管理テーブルの一例を示す図である。ストレージ装置200は、RA先コマンド管理テーブル53を有する。例えばCM230のメモリ内にRA先コマンド管理テーブル53が格納される。RA先コマンド管理テーブル53には、ホストコマンド実行数、RA先ホストコマンド累積数tc、RA先ホストコマンド制限値tcs、コピーコマンド実行数、RA先コピーコマンド累積数tr、RA先コピーコマンド制限値trs、RA元ホストコマンド累積数ic、およびRAコマンド率pが設定されている。
ホストコマンド実行数は、ストレージ装置200で実行中のホストコマンドの数である。RA先ホストコマンド累積数tcは、一定時間内にストレージ装置200が受信したホストコマンドの数である。RA先ホストコマンド制限値tcsは、ストレージ装置200におけるホストコマンドの実行数の上限を示す値である。
コピーコマンド実行数は、ストレージ装置200で実行中のコピーコマンドの数である。RA先コピーコマンド累積数trは、一定時間内にストレージ装置200が受信したコピーコマンドの数である。RA先コピーコマンド制限値trsは、ストレージ装置200におけるコピーコマンドの実行数の上限を示す値である。コピーコマンド実行数がRA先コピーコマンド制限値trsに達している場合、入力されたコピーコマンドの実行が抑止される。
RA元ホストコマンド累積数icは、一定時間内にRA元のストレージ装置100に入力されたホストコマンドの数である。RAコマンド率pは、ストレージ装置100に入力されたホストコマンドのうち、RAコマンドの割合である。
次に経路監視コマンドを用いたストレージ装置間の情報交換手順について説明する。
図19は、ストレージ装置間の情報交換手順の一例を示すシーケンス図である。以下、図19に示す処理をステップ番号に沿って説明する。
[ステップS401]RA元のストレージ装置100は、経路監視コマンドによって、RA元ホストコマンド累積数icとRAコマンド率pとをストレージ装置200に通知する。例えばストレージ装置100は、前回のRA元ホストコマンド累積数icとRAコマンド率pとの通知から10秒が経過すると、ステップS401の処理を実行する。
[ステップS402]ストレージ装置200は、取得したRA元ホストコマンド累積数icとRAコマンド率pとにより、RA先コマンド管理テーブル53内のRA元ホストコマンド累積数icとRAコマンド率pとの値を更新する。
[ステップS403]ストレージ装置200は、RA先コマンド制限値決定処理を行う。例えばストレージ装置200は、前回のRA先コマンド制限値決定処理から10秒が経過すると、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。
[ステップS404]ストレージ装置200は、更新されたRA先コピーコマンド制限値trsに基づいて、RA元ホストコマンド制限値icsを決定する。
[ステップS405]ストレージ装置200は、経路監視コマンドを用い、決定したRA元ホストコマンド制限値icsをストレージ装置100に通知する。
[ステップS406]ストレージ装置100は、取得したRA元ホストコマンド制限値icsにより、RA元コマンド管理テーブル52のRA元ホストコマンド制限値icsの値を更新する。
以後、ステップS401〜S406と同様の処理(ステップS407〜S412)が、10秒間隔で繰り返し実行される。
このように、2台のストレージ装置100,200が情報を交換することで、ある種のコマンドだけが突出して優先実行されることのないように、公平なコマンド実行が可能となる。
次に、RA元のストレージ装置100におけるコマンド実行状況通知処理(ステップS401の処理)について詳細に説明する。
図20は、RA元におけるコマンド実行状況通知処理の手順の一例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
[ステップS421]ストレージ装置100のCM130は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS422]CM130は、タイマが10秒経過したか否かを判断する。10秒経過していなければ、CM130は処理をステップS421に進める。10秒経過していれば、CM130は処理をステップS423に進める。
[ステップS423]CM130は、RA元ホストコマンド累積数icとRAコマンド率pとを、ストレージ装置200に通知する。例えばCM130は、RA元コマンド管理テーブル52から、RA元ホストコマンド累積数icとRAコマンド率pとを取得する。次にCM130は、取得したRA元ホストコマンド累積数icとRAコマンド率pとをヘッダに含む制御パケットを生成する。そしてCM130は、生成した制御パケットを、CARAポート151を介してストレージ装置200宛に送信する。
[ステップS424]CM130は、RA元コマンド管理テーブル52のRAコマンド数、RAコマンド率p、およびRA元ホストコマンド累積数icそれぞれの値を0に初期化する。その後、CM130は処理をステップS421に進める。
このようにして、10秒間隔でストレージ装置100からストレージ装置200への情報送信が行われる。
次にRA元のストレージ装置におけるコマンド実行処理について説明する。
図21は、第5の実施の形態のRA元のストレージ装置におけるコマンド実行処理の手順の一例を示す図である。以下、図21に示す処理をステップ番号に沿って説明する。
[ステップS431]CM130は、ホストコマンドを受信する。
[ステップS432]CM130は、ホストコマンド実行数とRA元ホストコマンド累積数icとのそれぞれを1ずつインクリメントする。例えばCM130は、RA元コマンド管理テーブル52のホストコマンド実行数の値に1を加算する。またCM130は、RA元コマンド管理テーブル52のRA元ホストコマンド累積数icの値に1を加算する。
[ステップS433]CM130は、受信したホストコマンドがRAコマンドか否かを判断する。例えばCM130は、ホストコマンドが、RAセクションが組まれたボリューム143へのアクセスであれば、RAコマンドであると判断する。CM130は、RAコマンドであれば処理をステップS434に進める。またCM130は、CAコマンドであれば処理をステップS441に進める。
[ステップS434]CM130は、RAコマンド数を1だけインクリメントする。またCM130は、インクリメント後のRAコマンド数に基づいて、RAコマンド率pを計算する。例えばCM130は、RA元コマンド管理テーブル52のRAコマンド数の値に1を加算する。次にCM130は、RA元コマンド管理テーブル52からRAコマンド数とRA元ホストコマンド累積数icとを取得する。そしてCM130は、RAコマンド数をRA元ホストコマンド累積数icで除算し、除算結果をRAコマンド率pとする。CM130は、計算したRAコマンド率pにより、RA元コマンド管理テーブル52のRAコマンド率pを更新する。
[ステップS435]CM130は、ホストコマンド実行数がRA元ホストコマンド制限値ics以下か否かを判断する。例えばCM130は、RA元コマンド管理テーブル52からホストコマンド実行数とRA元ホストコマンド制限値icsを取得し、取得した値の大小を比較する。CM130は、ホストコマンド実行数がRA元ホストコマンド制限値ics以下であれば、処理をステップS436に進める。またCM130は、ホストコマンド実行数がRA元ホストコマンド制限値icsを超えていれば、処理をステップS445に進める。
[ステップS436]CM130は、受信したホストコマンドに応じた処理を実行する。例えばCM130はボリューム143にデータを書き込む。
[ステップS437]CM130は、ステップS436で書き込んだデータをストレージ装置200にコピーするためのコピーコマンド32を、ストレージ装置200宛に送信する。
[ステップS438]CM130は、ストレージ装置200からの応答が正常応答か、あるいはQFULL応答かを判断する。ストレージ装置200から正常応答を受信した場合、CM130は処理をステップS439に進める。またストレージ装置200からQFULL応答を受信した場合、CM130は処理をステップS437に進め、コピーコマンド32を再度送信する。
[ステップS439]CM130は、RA元コマンド管理テーブル52のホストコマンド実行数の値を1だけデクリメントする。
[ステップS440]CM130は、ホストコンピュータ21へ正常応答を送信する。その後、コマンド実行処理が終了する。
[ステップS441]CM130は、受信したホストコマンドがCAコマンドの場合、ホストコマンド実行数がRA元ホストコマンド制限値ics以下か否かを判断する。CM130は、ホストコマンド実行数がRA元ホストコマンド制限値ics以下であれば、処理をステップS442に進める。またCM130は、ホストコマンド実行数がRA元ホストコマンド制限値icsを超えていれば、処理をステップS445に進める。
[ステップS442]CM130は、受信したホストコマンドに応じた処理を実行する。例えばCM130はボリューム141またはボリューム142にデータを書き込む。
[ステップS443]CM130は、RA元コマンド管理テーブル52のホストコマンド実行数の値を1だけデクリメントする。
[ステップS444]CM130は、ホストコンピュータ21へ正常応答を送信する。その後、コマンド実行処理が終了する。
[ステップS445]ホストコマンド実行数がRA元ホストコマンド制限値icsを超えている場合、CM130は、RA元コマンド管理テーブル52のホストコマンド実行数の値を1だけデクリメントする。
[ステップS446]CM130は、ホストコンピュータ21へQFULL応答を送信する。その後、コマンド実行処理が終了する。
このようにして、RA元のストレージ装置100においても、RA先コピーコマンド制限値trsに応じて動的に変更されるRA元ホストコマンド制限値icsによって、ホストコマンドの実行数が適切に制限される。
次に、RA先のストレージ装置200における処理について説明する。
図22は、RA先におけるコマンド制限値決定処理の手順の一例を示す図である。以下、図22に示す処理をステップ番号に沿って説明する。
[ステップS451]ストレージ装置200のCM230は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS452]CM230は、タイマが10秒経過したか否かを判断する。10秒経過していなければ、CM230は処理をステップS451に進める。10秒経過していれば、CM230は処理をステップS453に進める。
[ステップS453]CM230は、RA元のストレージ装置100におけるCAコマンド数が、RA先ホストコマンド累積数tcよりも大きいか否かを判断する。RA元のCAコマンド数は、RA元ホストコマンド累積数icに「1−RAコマンド率p」を乗算することで算出できる。例えばCM230は、RA先コマンド管理テーブル53から、RA先ホストコマンド累積数tc、RA元ホストコマンド累積数ic、およびRAコマンド率pを取得する。そしてCM230は、RA元ホストコマンド累積数icに「1−RAコマンド率p」を乗算した値とRA先ホストコマンド累積数tcとの大小関係を比較することにより、CAコマンド数がRA先ホストコマンド累積数tcよりも大きいか否かを判断する。CM230は、CAコマンド数がRA先ホストコマンド累積数tcよりも大きい場合、処理をステップS456に進める。またCM230は、CAコマンド数がRA先ホストコマンド累積数tc以下の場合、処理をステップS454に進める。
[ステップS454]CAコマンド数がRA先ホストコマンド累積数tc以下の場合、CM230は、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。例えばCM230は、RA先コマンド管理テーブル53から、RA元ホストコマンド累積数ic、RAコマンド率p、及びRA先ホストコマンド累積数tcを取得する。そしてCM230は、上記の式(5)・式(6)に従ってRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。さらにCM230は、計算したRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとによって、RA先コマンド管理テーブル53のRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとの値を更新する。
[ステップS455]CM230は、RA元ホストコマンド制限値icsを計算する。例えばCM230は、RA先コマンド管理テーブル53から、RA先コピーコマンド制限値trsとRAコマンド率pとを取得する。そしてCM230は、上記の式(7)に従ってRA元ホストコマンド制限値icsを計算する。CM230は、その後、処理をステップS458に進める。
[ステップS456]CAコマンド数がRA先ホストコマンド累積数tcよりも大きい場合、CM230は、RA元ホストコマンド制限値icsを「1024」に決定する。
[ステップS457]CM230は、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。例えばCM230は、RA先コマンド管理テーブル53から、RA元ホストコマンド累積数ic、RAコマンド率p、及びRA先ホストコマンド累積数tcを取得する。そしてCM230は、取得した値と、ステップS456で決定したRA元ホストコマンド制限値「ics=1024」とを用い、上記の式(9)・式(10)に従ってRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。さらにCM230は、計算したRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとによって、RA先コマンド管理テーブル53のRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとの値を更新する。
[ステップS458]CM230は、RA先コマンド管理テーブル53のRA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとを0に初期化する。
[ステップS459]CM230は、ステップS455で計算したRA元ホストコマンド制限値icsまたはステップS456で決定したRA元ホストコマンド制限値icsを、RA元であるストレージ装置100に通知する。例えばCM230は、ヘッダにRA元ホストコマンド制限値icsを含む経路監視コマンド37を、ストレージ装置100宛に送信する。その後、CM230は処理をステップS451に進める。
このようにして、ストレージ装置200において、RA元とRA先との両方のコマンド制限値が計算される。
なお、第5の実施の形態におけるRA先のストレージ装置200のコマンド実行処理は、図15に示した第4の実施の形態のコマンド実行処理と同様である。
このようにして、RA先のストレージ装置200において決定されたコマンド制限値が、ストレージ装置100,200それぞれで適用される。その結果、ストレージ装置100に入力されたホストコマンド数がRA元ホストコマンド制限値icsを超えた場合であっても、ストレージ装置100,200それぞれにおけるホストコマンドの処理効率を同等にすることができる。すなわち、RA元のストレージ装置100へのホストコマンドの入力が過大になったことも考慮して、RAセッションによるデータのコピーを行うことによるホストコマンドの処理効率の低下をRA元とRA先とで同等にし、公平性を担保することができる。
なお第5の実施の形態は、ストレージ装置が1対1で接続されている場合の例であるが、1対多や多対多の接続にも使用することが可能である。さらに、ホストコンピュータ21,22それぞれから出力されるホストコマンドを平等に扱うのではなく、ホストコンピュータ21,22それぞれのホストコマンドの実行に優先度によって重みをつけることもできる。重みを付けることで、ホストコンピュータ21,22にQFULL応答が返される確率を制御することも可能である。
〔第6の実施の形態〕
次に第6の実施の形態について説明する。第6の実施の形態は、RA元のストレージ装置100におけるCAコマンドとRAコマンドとの処理時間の違いを考慮したものである。なお、第6の実施の形態におけるシステム構成は、図2、図3に示した第2の実施の形態の構成と同様である。
RAコマンドは、ボリューム143へのデータ書き込み処理の延長で起動されるリモートコピーの終了後に、応答がホストコンピュータ21に送信される。そのためRAコマンドは、CAコマンドよりも、処理完了までに時間が長くかかる。ところが第5の実施の形態では、上記のCAコマンドとRAコマンドとの処理時間の違いが考慮されていない。そのためRA元のストレージ装置100においてCAコマンドばかりが処理され、RAコマンドの処理が未完了の状態で溜まっていき、CAコマンドすら受信できなくなる可能性がある。そこで第6の実施の形態では、コマンド処理時間の違いによる重み付けを行い、RAコマンドの処理が滞留しないように、コマンド制限値を変化させる。
図23は、第6の実施の形態におけるコマンド流量制御状況の一例を示す図である。第6の実施の形態では、RA元のストレージ装置100において、CAコマンド処理時間cTとRAコマンド処理時間rTとを計測する。計測されたCAコマンド処理時間cTとRAコマンド処理時間rTとは、RA元ホストコマンド累積数icとRAコマンド率pと共に、経路監視コマンド38によってRA先のストレージ装置200に送信される。
ストレージ装置200では、CAコマンド処理時間cTとRAコマンド処理時間rTとを利用してコマンド制限値を決定する。例えば以下のような計算を行う。
ic×p×cT/rT:tc=trs:tcs ・・・(11)
tcs+trs=1024 ・・・(12)
この二式から、以下の結果が得られる。
tcs=(tc/(tc+ic×p×cT/rT))×1024 ・・・(13)
trs=1024−tcs
=((ic×p×cT/rT)/(tc+ic×p×cT/rT))×1024
・・・(14)
さらに、以下の計算式でストレージ装置100におけるRA元ホストコマンド制限値icsを算出する。
ics=trs/p ・・・(15)
以下に、第6の実施の形態における各ストレージ装置100,200でのホストコマンドの実行性能について、具体例を用いて説明する。
ここで、各測定値が以下の通りであるものとする。
RA元ホストコマンド累積数ic:3000
RAコマンド率p:0.5
RA先ホストコマンド累積数tc:2000
CAコマンド処理時間cT:1ms
RAコマンド処理時間rT:4ms
すると、RA先ホストコマンド制限値tcs、RA先コピーコマンド制限値trs、およびRA元ホストコマンド制限値icsは以下の通りとなる。
tcs=( 2000/(2000+3000×0.5×1/4))×1024=862
trs=1024−862=162
ics=162/0.5=324
RA元ホストコマンド制限値icsは1024を大きく下回っているが、324以上のコマンドを受けてもRAコマンドの処理が間に合わなくなり、滞留してしまう。RA元ホストコマンド制限値icsを低く抑えられている分、RA先のホストコマンドを多く処理できる。このように、RA元ホストコマンド制限値icsを324までに抑えることで、システム全体としての効率の向上が可能となる。
また第6の実施の形態では、求められたRA元ホストコマンド制限値icsと、CARAポート151の上限である1024との差分を考慮して、RAコマンド率pを減らすようにしている。これにより、CAコマンドを増やすことができ、RA元ホストコマンド制限値icsを1024に近づけRA元のストレージ装置100の性能を高めることが可能となる。
次に、第6の実施の形態の機能を実現するためにRA元とRA先の各ストレージ装置100,200が有するコマンド管理テーブルについて説明する。
図24は、第6の実施の形態のRA元コマンド管理テーブルの一例を示す図である。第6の実施の形態では、図24に示すようなRA元コマンド管理テーブル55が、例えばCM130のメモリ内に格納される。RA元コマンド管理テーブル55には、ホストコマンド実行数、RA元ホストコマンド累積数ic、RA元ホストコマンド制限値ics、RAコマンド数、RAコマンド率p、CAコマンド処理時間cT、およびRAコマンド処理時間rTが設定されている。
図25は、第6の実施の形態のRA先コマンド管理テーブルの一例を示す図である。第6の実施の形態では、図25に示すようなRA先コマンド管理テーブル56が、例えばCM230のメモリ内に格納される。RA先コマンド管理テーブル56には、ホストコマンド実行数、RA先ホストコマンド累積数tc、RA先ホストコマンド制限値tcs、コピーコマンド実行数、RA先コピーコマンド累積数tr、RA先コピーコマンド制限値trs、RA元ホストコマンド累積数ic、RAコマンド率p、CAコマンド処理時間cT、およびRAコマンド処理時間rTが設定されている。このうちRA元ホストコマンド累積数ic、RAコマンド率p、CAコマンド処理時間cT、およびRAコマンド処理時間rTについては、ストレージ装置100から経路監視コマンド38で該当情報が通知されるごとに、CM230によって更新される。
次に、第6の実施の形態のRA元のストレージ装置100におけるコマンド実行処理について説明する。第6の実施の形態では、RA元のストレージ装置100は、コマンド実行時に、CAコマンド処理時間cTとRAコマンド処理時間rTとを計測する。
図26は、第6の実施の形態のRA元のコマンド実行処理の手順の一例を示すフローチャートである。以下、図26に示す処理のうち、ステップS501、S503〜S508,S510〜S513,S515〜S518は、それぞれ図21に示す第5の実施の形態の処理のステップS431,S433〜S446の処理と同じである。そこで第5の実施の形態と異なるステップS502,S509,S514の処理について以下に説明する。
[ステップS502]CM130は、ホストコマンド実行数とRA元ホストコマンド累積数icとのそれぞれを1ずつインクリメントする。またCM130は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS509]CM130は、受信したホストコマンドがRAコマンドの場合、ストレージ装置200からの正常応答を受信後に、タイマをストップさせる。次にCM130は、RAコマンド処理時間平均値を計算する。計算されたRAコマンド処理時間平均値が、RAコマンド処理時間rTとなる。
例えばCM130は、実行済みRAコマンド数をメモリ内に保持し、RAコマンドが実行されるごとに実行済みRAコマンド数をインクリメントする。またCM130は、RAコマンドの実行時間合計をメモリ内に保持し、RAコマンドが実行されるごとに、タイマで計測した実行時間を実行済みRAコマンドの実行時間合計に加算する。そしてCM130は、RAコマンドの実行時間合計を実行済みRAコマンド数で除算した値を、RAコマンド処理時間平均値とする。CM130は、計算したRAコマンド処理時間平均値により、RA元コマンド管理テーブル55のRAコマンド処理時間rTを更新する。
[ステップS514]CM130は、受信したホストコマンドがCAコマンドの場合、ホストコマンド処理完了後に、タイマをストップさせる。次にCM130は、CAコマンド処理時間平均値を計算する。計算されたCAコマンド処理時間平均値が、CAコマンド処理時間cTとなる。
例えばCM130は、実行済みCAコマンド数をメモリ内に保持し、CAコマンドが実行されるごとに実行済みCAコマンド数をインクリメントする。またCM130は、CAコマンドの実行時間合計をメモリ内に保持し、CAコマンドが実行されるごとに、タイマで計測した実行時間を実行済みCAコマンドの実行時間合計に加算する。そしてCM130は、CAコマンドの実行時間合計を実行済みCAコマンド数で除算した値を、CAコマンド処理時間平均値とする。CM130は、計算したCAコマンド処理時間平均値により、RA元コマンド管理テーブル55のCAコマンド処理時間cTを更新する。
このようにストレージ装置100では、コマンド実行ごとにCAコマンド処理時間cTまたはRAコマンド処理時間rTが計算される。計算されたCAコマンド処理時間cTまたはRAコマンド処理時間rTは、経路監視コマンドによってRA先のストレージ装置200に通知される。
次に、RA元のストレージ装置100におけるコマンド実行状況通知処理について説明する。
図27は、第6の実施の形態のRA元におけるコマンド実行状況通知処理の手順の一例を示すフローチャートである。以下、図27に示す処理をステップ番号に沿って説明する。
[ステップS521]ストレージ装置100のCM130は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS522]CM130は、タイマが10秒経過したか否かを判断する。10秒経過していなければ、CM130は処理をステップS521に進める。10秒経過していれば、CM130は処理をステップS523に進める。
[ステップS523]CM130は、RA元ホストコマンド累積数ic、RAコマンド率p、CAコマンド処理時間cT、およびRAコマンド処理時間rTを、ストレージ装置200に通知する。例えばCM130は、RA元コマンド管理テーブル55から、RA元ホストコマンド累積数ic、RAコマンド率p、CAコマンド処理時間cT、およびRAコマンド処理時間rTを取得する。次にCM130は、取得したRA元ホストコマンド累積数ic、RAコマンド率p、CAコマンド処理時間cT、およびRAコマンド処理時間rTをヘッダに含む制御パケットを生成する。そしてCM130は、生成した制御パケットを、CARAポート151を介してストレージ装置200宛に送信する。
[ステップS524]CM130は、RA元コマンド管理テーブル55のRAコマンド数、RAコマンド率p、RA元ホストコマンド累積数ic、CAコマンド処理時間cT、およびRAコマンド処理時間rTそれぞれの値を0に初期化する。その後、CM130は処理をステップS521に進める。
このようにして、10秒間隔でストレージ装置100からストレージ装置200へ、CAコマンド処理時間cTやRAコマンド処理時間rTを含む情報が送信される。
次に、RA先のストレージ装置200におけるコマンド制限値決定処理の手順について説明する。
図28は、第6の実施の形態のRA先におけるコマンド制限値決定処理の手順の一例を示すフローチャートである。以下、図28に示す処理をステップ番号に沿って説明する。
[ステップS531]CM230は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS532]CM230は、タイマが10秒経過したか否かを判断する。10秒経過していなければ、CM230は処理をステップS531に進める。10秒経過していれば、CM230は処理をステップS533に進める。
[ステップS533]CM230は、RA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。例えばCM230は、RA先コマンド管理テーブル53から、RA元ホストコマンド累積数ic、RAコマンド率p、RA先ホストコマンド累積数tc、CAコマンド処理時間cT、およびRAコマンド処理時間rTを取得する。そしてCM230は、上記の式(13)・式(14)に従ってRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとを計算する。さらにCM230は、計算したRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとによって、RA先コマンド管理テーブル56のRA先ホストコマンド制限値tcsとRA先コピーコマンド制限値trsとの値を更新する。
[ステップS534]CM230は、RA元ホストコマンド制限値icsを計算する。例えばCM230は、RA先コマンド管理テーブル53から、RA先コピーコマンド制限値trsとRAコマンド率pとを取得する。そしてCM230は、上記の式(15)に従ってRA元ホストコマンド制限値icsを計算する。
[ステップS535]CM230は、RA先コマンド管理テーブル53のRA先ホストコマンド累積数tcとRA先コピーコマンド累積数trとを0に初期化する。
[ステップS536]CM230は、ステップS534で計算したRA元ホストコマンド制限値icsを、RA元であるストレージ装置100に通知する。その後、CM230は処理をステップS531に進める。
このようにして、RA元のストレージ装置100におけるCAコマンド処理時間cTとRAコマンド処理時間rTとの違いを考慮して、適切なコマンド制限値を設定することができる。その結果、処理時間の長いRAコマンドが処理しきれずに滞留し、ストレージ装置100における処理効率が低下することを抑止することができる。
〔第7の実施の形態〕
次に第7の実施の形態について説明する。第7の実施の形態は、コマンドの入力状況に応じてコマンド流量制御技術を動的に変更し、ストレージ装置がコマンド流量制御に要する処理負荷を抑止するものである。なお、第7の実施の形態におけるシステム構成は、図2、図3に示した第2の実施の形態の構成と同様である。
例えば第7の実施の形態では、コマンドの処理効率、およびRA元とRA先とにおけるホストコマンドの公平な実行に関して優劣がない場合、ストレージ装置に対する処理負荷ができるだけ少ない技術でコマンド流量制御を行う。
なお、コマンド流量制御技術の切り替えには、ストレージ装置100,200でのコマンド実行状況の把握が必要となる。そのため、いずれのコマンド流量制御技術を適用する場合においても、ストレージ装置100,200間では、第6の実施の形態と同様に、経路監視コマンドによる情報交換が行われているものとする。
上記第2〜第6の実施の形態の処理負荷を比較すると、最もストレージ装置への処理負荷が低いのは第2の実施の形態である。ただし、第2の実施の形態では、コマンドの実行状況などの監視を行っておらず、コマンドの入力状況に応じたコマンド流量制御技術の切り替えには適応できない。
例えばストレージ装置間にRAセッションが設定されていない場合、第3の実施の形態のコマンド流量制御技術を適用することで、RA先におけるコマンド実行処理を図8に示すように単純化できる。しかもコマンド流量制御に用いる情報も図7に示すように少なく、第4〜第6の実施の形態よりもストレージ装置の処理負荷は少ない。
ストレージ装置間にRAセッションが設定されている場合には、コマンドの処理効率の観点から、第3の実施の形態のコマンド流量制御技術では不十分である。RAセッションが設定されており、RA元のストレージ装置100が低負荷(例えばRA元ホストコマンド累積数icが1024以下)であれば、RA元のストレージ装置100に入力されたホストコマンドは、QFULL応答されることなく実行される。そのため第4の実施の形態のコマンド流量制御技術によって、適切なコマンド処理が可能である。第4の実施の形態のコマンド流量制御技術は、第5〜第6の実施の形態におけるコマンド流量制御技術よりもストレージ装置100,200への負荷が少ない。そのためRAセッションが設定されており、RA元のストレージ装置100が低負荷であれば、第4の実施の形態が適切となる。
RA元のストレージ装置100が高負荷(例えばRA元ホストコマンド累積数icが1024を超過)となった場合、ホストコンピュータ21,22それぞれが出力したホストコマンドの公平な実行のためには、第4の実施の形態は不適切となる。そこで第5または第6の実施の形態によるコマンド流量制御技術が適切となる。例えば、RA元のストレージ装置100におけるCAコマンド実行時間とRAコマンド実行時間とがほぼ同じであれば、第5の実施の形態が適切となる。CAコマンド実行時間とRAコマンド実行時間とに差があるのであれば、第6の実施の形態が適切となる。ただし第5の実施の形態が適切なのか第6の実施の形態が適切なのかの判断には、CAコマンド処理時間cTとRAコマンド処理時間rTとの計測、および計測値の比較処理が必要となる。するとストレージ装置100,200における処理負荷は第6の実施の形態によるコマンド流量制御技術を適用した場合と同じとなる。そこで、第7の実施の形態では、RA元のストレージ装置100が高負荷となった場合には、第6の実施の形態によるコマンド流量制御技術を適用する。
適用するコマンド流量技術の判定は、例えばストレージ装置200において実行される。以下、ストレージ装置200による、適用技術判定処理について説明する。
図29は、適用技術判定処理の手順の一例を示すフローチャートである。以下、図29に示す処理をステップ番号に沿って説明する。
[ステップS601]ストレージ装置200のCM230は、タイマをリセットし、時間計測(タイマカウント)を開始する。
[ステップS602]CM230は、タイマが所定時間(例えば10秒)経過したか否かを判断する。所定時間経過していなければ、CM230は処理をステップS601に進める。所定時間経過していれば、CM230は処理をステップS603に進める。
[ステップS603]CM230は、ストレージ装置100との間にRAセッションが設定されているか否かを判断する。CM230は、RAセッションが設定されていれば、処理をステップS605に進める。またCM230は、RAセッションが設定されていなければ、処理をステップS604に進める。
[ステップS604]CM230は、第3の実施の形態に示したコマンド流量制御技術を適用することを決定する。その後、CM230は処理をステップS608に進める。
[ステップS605]CM230は、RA元ホストコマンド累積数icが1024以下か否かを判断する。CM230は、RA元ホストコマンド累積数icが1024以下であれば処理をステップS606に進める。またCM230は、RA元ホストコマンド累積数icが1024を超えていれば、処理をステップS607に進める。
[ステップS606]CM230は、第4の実施の形態に示したコマンド流量制御技術を適用することを決定する。その後、CM230は処理をステップS608に進める。
[ステップS607]CM230は、第6の実施の形態に示したコマンド流量制御技術を適用することを決定する。
[ステップS608]CM230は、RA元のストレージ装置100に対して、適用するコマンド流量制御技術を通知する。
[ステップS609]CM230は、適用するものとして決定された技術によるコマンド流量制御を開始する。その後、CM230は処理をステップS601に進める。
このようにして、コマンドの入力状況に応じて適切なコマンド流量制御技術を適用することが可能となる。その結果、ストレージ装置100,200の処理負荷を低減させることができる。ストレージ装置100,200の処理負荷が低減すれば、消費電力も低減する。
〔その他の実施の形態〕
上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。その場合、ストレージ装置のCMが有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD−RAM、CD−ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD−ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 ストレージ装置
1−1 記憶装置
1−2 通信インタフェース
1−3 管理部
1−3a 記憶手段
1−3b 判別手段
1−3c 計数手段
1−3d 制御手段
2 ネットワーク
3 スイッチ
4 コンピュータ
5 ストレージ装置
6 コンピュータ
7〜9 コマンド

Claims (11)

  1. 記憶装置と、
    前記記憶装置へのデータアクセスを指示するコマンドを受信する通信インタフェースと、
    記通信インタフェースを介して受信したコマンドであって、実行中の全種別のコマンドの数を計数する計数手段と、
    前記通信インタフェースを介して新たに受信したコマンドの種別を判別する判別手段と、
    前記実行中の全種別のコマンドの数が、前記通信インタフェースを介して新たに受信したコマンドの種別に対応する制限値以下であれば、該新たに受信したコマンドに応じたデータアクセスを前記記憶装置に対して実行し、前記実行中の全種別のコマンドの数が該新たに受信したコマンドの種別に対応する制限値を超えた場合、該新たに受信したコマンドに応じたデータアクセスを抑止する制御を行う制御手段と、
    を有するストレージ装置。
  2. 前記判別手段は、前記通信インタフェースを介して受信したコマンドが、他のストレージ装置から送信されたコピーコマンドか、該コピーコマンド以外の非コピーコマンドかを判別し、
    前記コマンドの種別に対応する制限値は、コピーコマンドの制限値と非コピーコマンドの制限値である、
    ことを特徴とする請求項1記載のストレージ装置。
  3. 前記制御手段は、前記コピーコマンドの制限値よりも、前記非コピーコマンドの制限値を低い値に設定することを特徴とする請求項2記載のストレージ装置。
  4. 前記制御手段は、
    前記非コピーコマンドの制限値として、前記他のストレージ装置との間のデータコピー用の通信経路が設定されている場合に適用する第1の制限値と、該通信経路が設定されていない場合に適用する、前記第1の制限値より高い値の第2の制限値とが設定されており、
    該データコピー用の通信経路が設定されている場合には、前記実行中のコマンドの数が前記第1の制限値以下であれば、前記通信インタフェースを介して受信した非コピーコマンドに応じたデータアクセスを前記記憶装置に対して実行し、前記実行中のコマンドの数が前記第1の制限値を超えていれば、該非コピーコマンドに応じたデータアクセスを抑止し、
    該データコピー用の通信経路が設定されていない場合には、前記実行中のコマンドの数が前記第2の制限値以下であれば、前記通信インタフェースを介して受信した非コピーコマンドに応じたデータアクセスを前記記憶装置に対して実行し、前記実行中のコマンドの数が前記第2の制限値を超えていれば、該非コピーコマンドに応じたデータアクセスを抑止する、
    ことを特徴とする請求項2または3記載のストレージ装置。
  5. 前記計数手段は、さらに、コマンドの種別ごとに、一定時間内に受信したコマンドの数を計数し、
    前記制御手段は、コマンドの種別ごとの一定時間内に受信したコマンドの数の比率に応じ、コマンドの種別ごとの制限値を決定する、
    ことを特徴とする請求項1または2記載のストレージ装置。
  6. 記計数手段は、さらに、一定時間内に受信した非コピーコマンドの数を計数し、
    前記制御手段は、
    前記他のストレージ装置によるコピーコマンド出力の原因となる原因コマンドの、一定時間内での受信数を示す情報を、前記他のストレージ装置から取得し、
    前記他のストレージ装置での原因コマンドの受信数と非コピーコマンドの数との比率に応じ前記コピーコマンドの制限値前記非コピーコマンドの制限値を決定する、
    ことを特徴とする請求項記載のストレージ装置。
  7. 記計数手段は、さらに、一定時間内に受信した非コピーコマンドの数を計数し、
    前記制御手段は、
    前記他のストレージ装置によるコピーコマンド出力の原因となる原因コマンドの、一定時間内での受信数を示す情報、前記他のストレージ装置が原因コマンドを実行するのに要する時間を示す第1の時間情報、および前記他のストレージ装置が原因コマンド以外のコマンドを実行するのに要する時間を示す第2の時間情報を、前記他のストレージ装置から取得し、
    前記第2の時間情報に示される時間を前記第1の時間情報に示される時間で除算した補正値を、前記他のストレージ装置での原因コマンドの受信数に乗算し、乗算結果と非コピーコマンドの数との比率に応じ前記コピーコマンドの制限値前記非コピーコマンドの制限値を決定する、
    ことを特徴とする請求項記載のストレージ装置。
  8. 前記他のストレージ装置によるコピーコマンド出力の原因となる原因コマンドは、前記記憶装置との間でデータの多重化を行うことが設定されている前記他のストレージ装置内のボリュームへの、データの書き込みを指示するコマンドであることを特徴とする請求項またはのいずれかに記載のストレージ装置。
  9. 前記制御手段は、決定した前記コピーコマンドの制限値に応じた値で前記他のストレージ装置が実行するコマンド数を制限するように、前記他のストレージ装置に指示することを特徴とする請求項乃至のいずれかに記載のストレージ装置。
  10. ストレージ装置が、
    信インタフェースを介して受信した、記憶装置へのデータアクセスを指示するコマンドであって、実行中の全種別のコマンドの数を計数し、
    前記通信インタフェースを介して新たに受信したコマンドの種別を判別し、
    前記実行中の全種別のコマンドの数が、前記通信インタフェースを介して新たに受信したコマンドの種別に対応する制限値以下であれば、該新たに受信したコマンドに応じたデータアクセスを前記記憶装置に対して実行し、前記実行中の全種別のコマンドの数が該新たに受信したコマンドの種別に対応する制限値を超えた場合、該新たに受信したコマンドに応じたデータアクセスを抑止する、
    ことを特徴とするコマンド実行制御方法。
  11. ストレージ装置に内蔵されたコンピュータに、
    信インタフェースを介して受信した、記憶装置へのデータアクセスを指示するコマンドであって、実行中の全種別のコマンドの数を計数し、
    前記通信インタフェースを介して新たに受信したコマンドの種別を判別し、
    前記実行中の全種別のコマンドの数が、前記通信インタフェースを介して新たに受信したコマンドの種別に対応する制限値以下であれば、該新たに受信したコマンドに応じたデータアクセスを前記記憶装置に対して実行し、前記実行中の全種別のコマンドの数が該新たに受信したコマンドの種別に対応する制限値を超えた場合、該新たに受信したコマンドに応じたデータアクセスを抑止する、
    処理を実行させるプログラム。
JP2011277303A 2011-12-19 2011-12-19 ストレージ装置、コマンド実行制御方法、およびプログラム Active JP5899893B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2011277303A JP5899893B2 (ja) 2011-12-19 2011-12-19 ストレージ装置、コマンド実行制御方法、およびプログラム
US13/672,787 US8838839B2 (en) 2011-12-19 2012-11-09 Storage apparatus and command execution control method
EP12195635.3A EP2608012A3 (en) 2011-12-19 2012-12-05 Storage apparatus and command execution control method
KR1020120141246A KR101461284B1 (ko) 2011-12-19 2012-12-06 스토리지 장치 및 커맨드 실행 제어 방법
CN201210526596XA CN103164171A (zh) 2011-12-19 2012-12-07 存储装置和命令执行控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011277303A JP5899893B2 (ja) 2011-12-19 2011-12-19 ストレージ装置、コマンド実行制御方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2013127726A JP2013127726A (ja) 2013-06-27
JP5899893B2 true JP5899893B2 (ja) 2016-04-06

Family

ID=47681507

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011277303A Active JP5899893B2 (ja) 2011-12-19 2011-12-19 ストレージ装置、コマンド実行制御方法、およびプログラム

Country Status (5)

Country Link
US (1) US8838839B2 (ja)
EP (1) EP2608012A3 (ja)
JP (1) JP5899893B2 (ja)
KR (1) KR101461284B1 (ja)
CN (1) CN103164171A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9093160B1 (en) * 2014-05-30 2015-07-28 Sandisk Technologies Inc. Methods and systems for staggered memory operations
US10587688B2 (en) * 2014-09-19 2020-03-10 Netapp, Inc. Techniques for coordinating parallel performance and cancellation of commands in a storage cluster system
US10453460B1 (en) * 2016-02-02 2019-10-22 Amazon Technologies, Inc. Post-speech recognition request surplus detection and prevention
CN111448543B (zh) * 2017-12-07 2021-10-01 华为技术有限公司 内存访问技术及计算机系统
US11893280B2 (en) * 2021-08-27 2024-02-06 Micron Technology, Inc. Concurrent command limiter for a memory system

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3317873B2 (ja) 1997-05-07 2002-08-26 甲府日本電気株式会社 データ転送制御装置
US20030046568A1 (en) * 2001-09-06 2003-03-06 Riddick Christopher J. Media protection system and method and hardware decryption module used therein
US6947981B2 (en) 2002-03-26 2005-09-20 Hewlett-Packard Development Company, L.P. Flexible data replication mechanism
US6910087B2 (en) * 2002-06-10 2005-06-21 Lsi Logic Corporation Dynamic command buffer for a slave device on a data bus
JP4322068B2 (ja) * 2003-03-07 2009-08-26 富士通株式会社 ストレージシステム及びそのデイスク負荷バランス制御方法
JP2005190057A (ja) 2003-12-25 2005-07-14 Hitachi Ltd ディスクアレイ装置及びディスクアレイ装置のリモートコピー制御方法
US7254768B2 (en) * 2005-02-18 2007-08-07 Broadcom Corporation Memory command unit throttle and error recovery
JP2007079885A (ja) 2005-09-14 2007-03-29 Hitachi Ltd データ入出力負荷分散方法、データ入出力負荷分散プログラム、計算機システムおよび管理サーバ
JP2008217855A (ja) * 2007-02-28 2008-09-18 Fujitsu Ltd 記憶装置用制御装置、記憶装置およびそのデータ記憶制御方法
US7840720B2 (en) * 2008-03-31 2010-11-23 International Business Machines Corporation Using priority to determine whether to queue an input/output (I/O) request directed to storage
CN102027455A (zh) * 2008-05-13 2011-04-20 拉姆伯斯公司 用于存储器器件的分式编程命令
JP5147584B2 (ja) * 2008-07-23 2013-02-20 株式会社日立製作所 ストレージサブシステム及びコントローラによるコマンド実行方法

Also Published As

Publication number Publication date
KR20130070525A (ko) 2013-06-27
EP2608012A2 (en) 2013-06-26
KR101461284B1 (ko) 2014-11-12
US20130159556A1 (en) 2013-06-20
JP2013127726A (ja) 2013-06-27
EP2608012A3 (en) 2016-07-27
US8838839B2 (en) 2014-09-16
CN103164171A (zh) 2013-06-19

Similar Documents

Publication Publication Date Title
JP4175788B2 (ja) ボリューム制御装置
US7536592B2 (en) Storage system and snapshot data preparation method in storage system
JP4744171B2 (ja) 計算機システム及び記憶制御方法
JP5899893B2 (ja) ストレージ装置、コマンド実行制御方法、およびプログラム
JP5658197B2 (ja) 計算機システム、仮想化機構、及び計算機システムの制御方法
EP2557494B1 (en) Storage apparatus and data copy method between thin-provisioning virtual volumes
WO2011141961A1 (en) Storage apparatus and method for controlling the same
TW201142591A (en) Semiconductor memory device
JP4813872B2 (ja) 計算機システム及び計算機システムのデータ複製方法
US20050210144A1 (en) Load balancing method and system
JP2009122873A (ja) ストレージシステム間でのリモートコピーを管理する装置
US7194562B2 (en) Method, system, and program for throttling data transfer
JP2014026529A (ja) ストレージシステムおよびその制御方法
US10664193B2 (en) Storage system for improved efficiency of parity generation and minimized processor load
JP2015052844A (ja) コピー制御装置,コピー制御方法及びコピー制御プログラム
JP5393893B2 (ja) 複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法
JP5167410B2 (ja) 複数のマイクロプロセッサを有するストレージシステム、及び、そのストレージシステムにおける処理分担方法
US20110289273A1 (en) Disk array device and method for controlling disk array device
US9990148B2 (en) Storage control device and storage system for data backup
US10970210B2 (en) Managing data storage devices for spontaneous de-staging of cache
CN112104729A (zh) 一种存储系统及其缓存方法
JP4369520B2 (ja) ボリューム制御装置及び方法
US11232036B2 (en) Managing write access to data storage devices for spontaneous de-staging of cache
WO2015155824A1 (ja) ストレージシステム
US20230085856A1 (en) Traffic management on an internal fabric of a storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150602

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150730

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160222

R150 Certificate of patent or registration of utility model

Ref document number: 5899893

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150