JP4901310B2 - 記憶制御装置及び記憶制御装置のコマンド実行数制御方法 - Google Patents

記憶制御装置及び記憶制御装置のコマンド実行数制御方法 Download PDF

Info

Publication number
JP4901310B2
JP4901310B2 JP2006152675A JP2006152675A JP4901310B2 JP 4901310 B2 JP4901310 B2 JP 4901310B2 JP 2006152675 A JP2006152675 A JP 2006152675A JP 2006152675 A JP2006152675 A JP 2006152675A JP 4901310 B2 JP4901310 B2 JP 4901310B2
Authority
JP
Japan
Prior art keywords
host
command
command processing
resource
port
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006152675A
Other languages
English (en)
Other versions
JP2007323356A (ja
JP2007323356A5 (ja
Inventor
伸二郎 白木
幸治 岩満
英和 青山
文逸 安藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2006152675A priority Critical patent/JP4901310B2/ja
Priority to US11/495,755 priority patent/US7685342B2/en
Priority to EP06255784A priority patent/EP1862893A3/en
Publication of JP2007323356A publication Critical patent/JP2007323356A/ja
Publication of JP2007323356A5 publication Critical patent/JP2007323356A5/ja
Application granted granted Critical
Publication of JP4901310B2 publication Critical patent/JP4901310B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals

Description

本発明は、記憶制御装置及び記憶制御装置のコマンド実行数制御方法に関する。
記憶制御装置は、例えば、多数のディスクドライブをアレイ状に配設して構成され、RAID(Redundant Array of Independent Disks)に基づく記憶領域を提供する。各ディスクドライブが有する物理的な記憶領域上には、論理的な記憶領域である論理ボリュームが形成される。ホストコンピュータ(以下、ホスト)は、記憶制御装置にライトコマンドやリードコマンドを発行することにより、所望のボリュームとの間でデータの読み書きを行うことができる。
記憶制御装置は複数の通信ポートを備えており、各通信ポートには、それぞれ別々のホストまたは同一のホストを接続することができる。さらに、記憶制御装置とホストとをスイッチを介して接続させることにより、一つの通信ポートに複数のホストを接続することもできる。
各ホストは、コマンドをそれぞれ多重発行することができる。コマンドの多重発行とは、記憶制御装置からの応答を待つことなく、複数のコマンドを連続的に発行することを意味する。記憶制御装置が同時に処理可能なコマンドの数は、記憶制御装置の有するコマンド処理資源の量に依存する。ホストから発行されるコマンドの数が、記憶制御装置で処理可能なコマンド数を超えると、キューフル状態となる。記憶制御装置がホストにキューフル状態である旨を通知すると、ホストはコマンドの多重発行を停止するため、性能劣化を生じる。
キューフル状態となるのを防止するために、より多くのコマンド処理資源を記憶制御装置に設ける構成も考えられる。しかし、この場合は、多量のメモリ資源やハードウェア回路等のコマンド処理資源を多数用意する必要があり、現実的な解決策ではない。そこで、コマンド処理資源を追加することなく、キューフル状態となるのを防止するようにした技術も提案されている(特許文献1)。
この文献に記載の従来技術では、各ホストに設定されるコマンド多重数(コマンドを多重発行可能な数)の合計値が、記憶制御装置で処理可能なコマンド数を超えないように、各ホストからのアクセスを制御する。これにより、従来技術では、キューフル状態となるのを未然に防止している。
特開2005−322181号公報
前記文献に記載の従来技術では、記憶制御装置で処理可能なコマンド数を超えないように、各ホストにコマンド多重数をそれぞれ設定する必要がある。コマンド多重数の設定を変更する場合、ホストを停止させてからコマンド多重数を設定し、そして、ホストを再起動させる必要がある。従って、従来技術では、ホスト上のアプリケーションプログラムを稼働させたままの状態で、コマンド多重数の設定を変更することはできない。このため、前記文献に記載の従来技術では、ホストを停止させずにコマンド多重数の設定を変更したり、あるいは、ホストを追加することができず、使い勝手が低い。
これに対し、もしも、ホスト側のコマンド多重数と記憶制御装置で処理可能なコマンド数とを調整しない場合、記憶制御装置は、処理可能なコマンド数を各ホストにそれぞれ通知する。従って、各ホストにそれぞれ通知された処理可能なコマンド数の合計が、実際に処理可能なコマンド数を上回ることになる。この結果、記憶制御装置は、処理可能なコマンド数を上回るコマンドを受領することになり、キューフル状態が頻繁に発生し、性能劣化を招く。
そこで、本発明の目的は、上位装置を停止させたり構成を変更したりすることなく、上位装置から多重発行されるコマンドの数を適切に制御することができるようにした記憶制御装置及び記憶制御装置の実行コマンド数制御方法を提供することにある。本発明の他の目的は、記憶制御装置と上位装置との間の通信遅延時間に応じて、記憶制御装置から上位装置に通知される受領可能数を調整することにより、記憶制御装置が上位装置にキューフル状態を通知する事態を抑制し、性能劣化を防止できるようにした記憶制御装置及び記憶制御装置の実行コマンド数制御方法を提供することにある。本発明のさらなる目的は、後述する実施形態の記載から明らかになるであろう。
上記課題を解決すべく、本発明の一つの観点に従う記憶制御装置は、それぞれコマンドを発行する複数の上位装置に接続することができる記憶制御装置であって、各上位装置と通信を行うための複数の通信ポートと、各上位装置から通信ポートを介して受信したコマンドをそれぞれ処理し、その処理結果を各上位装置にそれぞれ送信する制御部と、を備え、制御部は、(1)各通信ポート毎に用意されるポート共通資源の中から、コマンドを処理するためのコマンド処理資源を確保して、各上位装置にそれぞれ割り当て、(2)この割り当てられたコマンド処理資源の量に基づいて、各上位装置から受領可能なコマンド数を示す受領可能数を各上位装置にそれぞれ通知し、かつ、(3)各上位装置と各通信ポートとの間の通信遅延時間に基づいて、各上位装置毎に割り当てられたコマンド処理資源の量をそれぞれ制御する。
本発明の一態様では、制御部は、各上位装置がコマンドをそれぞれ多重発行できるように、各上位装置にコマンド処理資源をそれぞれ割り当てるようになっている。
本発明の一態様では、制御部は、各上位装置のうちコマンドを実行している各上位装置間で、ポート共通資源のコマンド処理資源を略均等に割り当てる。
本発明の一態様では、制御部は、各上位装置から発行されるコマンドの数が所定値以下に低下した場合でも、通信遅延時間が予め設定された所定の応答時間に達するまでの間は、各上位装置に割り当てられたコマンド処理資源を維持する。
本発明の一態様では、制御部は、予め設定された優先順位に基づいて、ポート共通資源を各上位装置間で分配する。
本発明の一態様では、制御部は、ポート共通資源の残存量が予め設定された所定値以下になった場合に、各上位装置に割り当てられているコマンド処理資源の一部をポート共通資源に戻す。
本発明の一態様では、制御部は、上位装置で実行されるコマンドの数が所定値まで低下した場合に、上位装置に割り当てられているコマンド処理資源を全てポート共通資源に戻すようになっている。
本発明の一態様では、制御部は、各上位装置にそれぞれ通知される受領可能数の合計がポート共通資源の最大量を超えた場合に、各上位装置に割り当てられているコマンド処理資源の一部をポート共通資源に戻すことにより、各上位装置に改めて通知する受領可能数を低下させる。
本発明の一態様では、制御部は、ポート共通資源の残存量が予め設定された所定値以下になった場合に、コマンド処理資源が各上位装置に略均等に割り当てられるように、各上位装置に割り当てられているコマンド処理資源の一部をポート共通資源に戻す。
本発明の一態様では、制御部は、上位装置から発行されるコマンドの数の減少に応じて、上位装置に割り当てるコマンド処理資源をポート共通資源に戻す。
本発明の一態様では、制御部は、上位装置から発行されるコマンドの数の状態変化を監視し、コマンド数が定常状態から減少状態に移行した場合には、上位装置に割り当てられているコマンド処理資源の全部をポート共通資源に戻す。
本発明の一態様では、制御部は、上位装置からコマンドを受領した場合、ポート共通資源の残存量が予め設定された所定の閾値を超えるか否かを判定し、残存量が閾値を超えると判定したときは、上位装置に割り当てるコマンド処理資源を増加させ、残存量が閾値以下であると判定したときは、上位装置に割り当てるコマンド処理資源を減少させるようになっている。
本発明の一態様では、各上位装置は、コマンドの発行順序を識別するための連続番号をコマンドに対応付けてコマンドを発行し、制御部は、上位装置から受信したコマンドの処理結果を上位装置に応答する場合に、上位装置に割り当てられているコマンド処理資源の量を連続番号に加算して受領可能数を算出する。
本発明の一態様では、各通信ポートは、iSCSIプロトコルを用いて、各上位装置との間で通信を行う。
本発明の他の観点に従う記憶制御装置は、それぞれコマンドを発行する複数の上位装置にiSCSIプロトコルを介してそれぞれ接続される複数の通信ポートと、各通信ポートを介して各上位装置と通信を行う上位通信部と、記憶デバイスと通信を行う下位通信部と、上位通信部及び下位通信部により使用されるキャッシュメモリと、コマンドを処理するためのコマンド処理資源を管理するための制御情報を記憶する制御メモリと、上位通信部、下位通信部、キャッシュメモリ及び制御メモリにそれぞれ接続され、各上位装置から通信ポートを介して上位通信部が受信したコマンドをそれぞれ処理し、その処理結果を上位通信部から通信ポートを介して各上位装置に通知する制御部と、を備え、制御部は、(1)各通信ポートを共用する各上位装置のうちコマンドを実行している所定の各上位装置間で略均等にとなるように、各通信ポート毎にそれぞれ用意されているポート共通資源内のコマンド処理資源を、各所定の上位装置にそれぞれ複数ずつ割り当て、(2)各所定の上位装置に割り当てられたコマンド処理資源の量に、各所定の上位装置から通知されたコマンド発行順序を示すための連続番号を加算することにより、各所定の上位装置から受領可能なコマンド数を示す受領可能数をそれぞれ算出し、この算出された受領可能数を各所定の上位装置にそれぞれ通知し、(3)各所定の上位装置から発行されるコマンドの数の減少に応じて、各所定の上位装置に割り当てるコマンド処理資源をポート共通資源に戻すようになっている。
本発明のさらに別の観点に従う記憶制御装置で実行されるコマンド数を制御するための方法は、上位装置から受領したコマンドを処理するためのコマンド処理資源を通信ポート毎にそれぞれ管理するポート共通資源を備え、通信ポートを使用する上位装置がコマンドを多重発行できるように、コマンド処理資源を割り当てるステップと、上位装置からコマンド及び該コマンドの順序を示す連続番号をそれぞれ受領するステップと、連続番号を記憶するステップと、上位装置に割り当てられているコマンド処理資源に空きがあるか否かを判定するステップと、コマンド処理資源に空きがない場合、上位装置に処理不能である旨を通知するステップと、コマンド処理資源に空きがある場合、この空いているコマンド処理資源を用いて、受領したコマンドを処理するステップと、ポート共通資源の残存量と所定の閾値とを比較するステップと、ポート共通資源の残存量が所定の閾値を上回っている場合には、ポート共通資源の残存量から第1所定量のコマンド処理資源を確保して上位装置に割り当てることにより、上位装置に割り当てられるコマンド処理資源の量を増大させるステップと、ポート共通資源の残存量が所定の閾値以下の場合には、上位装置に割当済みのコマンド処理資源のうち第2所定量のコマンド処理資源をポート共通資源に戻すことにより、上位装置に割り当てられるコマンド処理資源の量を減少させるステップと、上位装置に割り当てられているコマンド処理資源の量と受領した連続番号とに基づいて、上位装置から受領可能なコマンド数を示す受領可能数を算出するステップと、算出された受領可能数及び受領したコマンドの処理結果を上位装置に送信させるステップと、をそれぞれ実行する。
複数の上位装置に送信された受領可能数の合計値がポート共通資源の最大量を超えた場合には、所定の閾値を高く設定するステップをさらに備えてもよい。
上位装置から発行されるコマンドの数の変化を監視するステップと、コマンドの数が定常状態から減少状態に移行したか否かを判定するステップと、定常状態から減少状態に移行したと判定された場合には、上位装置に割り当てられているコマンド処理資源の全部をポート共通資源に戻すステップと、をさらに備えてもよい。
本発明の機能や手段あるいはステップは、その全部または一部をコンピュータプログラムとして構成できる場合がある。このコンピュータプログラムは、記録媒体に固定して譲渡等することができるほかに、インターネット等の通信ネットワークを介して伝送することもできる。
以下、図面に基づき、本発明の実施の形態を説明する。本実施形態では、後述のように、記憶制御装置の有するコマンド処理資源を各通信ポート単位でそれぞれ管理し、ホストから発行されるコマンドの数の変化や到着時間に基づいて、各ホストに割り当てるコマンド処理資源を記憶制御装置内で動的に管理する。
図1は、本実施形態の全体概念を示す説明図である。本実施形態のストレージシステムは、例えば、少なくとも一つ以上の記憶制御装置1と、複数のホスト2とを備えて構成される。
各ホスト2は、例えば、サーバコンピュータ等のようなコンピュータ装置として構成されており、記憶制御装置1の通信ポート1Aにそれぞれ接続されている。図1中では、各ホスト2が一つの通信ポート1Aに直接的に接続されるかのように示しているが、実際には、スイッチ装置等の中継装置を介して接続される。
記憶制御装置1は、例えば、通信ポート1Aと、コマンド実行部1Bと、記憶デバイス1Cと、通知部1Dと、資源割当制御部1Eと、ポート共通資源1Fとを備えて構成することができる。なお、記憶制御装置1の物理的構成及び論理的構成については、それぞれ後述する。
通信ポート1Aは、各ホスト2と通信を行うためのものである。図1中では、一つの通信ポート1Aだけを示すが、記憶制御装置1は、複数の通信ポート1Aを備えることができる。通信ポート1Aは、例えば、iSCSIプロトコルに基づいて、各ホスト2との通信を行う。
コマンド実行部1Bは、各ホスト2から通信ポート1Aを介して受信されたコマンドを処理するためのものである。コマンドとしては、例えば、ライトコマンドやリードコマンドを挙げることができる。記憶デバイス1Cは、ホスト2により利用されるデータを記憶するためのものである。記憶デバイス1Cとしては、例えば、ハードディスク装置、半導体メモリ装置、磁気テープ装置、フレキシブルディスク装置、光ディスク装置、光磁気ディスク装置等を挙げることができる。
ホスト2からライトコマンドが発行された場合、コマンド実行部1Bは、ホスト2から受信したライトデータを記憶デバイス1Cに書き込む。ホスト2からリードコマンドが発行された場合、コマンド実行部1Bは、ホスト2から要求されたデータを記憶デバイス1Cから読出す。
通知部1Dは、コマンド実行部1Bにより実行されるコマンド処理の結果と資源割当制御部1Eにより算出されるコマンド受領可能数とを、通信ポート1Aを介して各ホスト2にそれぞれ通知するものである。コマンド受領可能数とは、そのホスト2から受領可能なコマンドの数であり、記憶制御装置1は、コマンド受領可能数(以下、「受領可能数」と略す場合がある)分のコマンドをホスト2から受信して処理することができる。
資源割当制御部1Eは、通信ポート1A毎にそれぞれ管理されているポート共通資源1F内のコマンド処理資源PRを、各ホスト2に割り当てるためのものである。コマンド処理資源PRとは、ホスト2から受信したコマンドを処理するために使用されるソフトウェア資源及びハードウェア資源を意味し、例えば、受信したコマンドを管理するための制御テーブル等を挙げることができる。
ポート共通資源1Fは、各通信ポート1A毎に、コマンド処理資源PRをそれぞれ管理するものである。即ち、記憶制御装置1の有する全てのコマンド処理資源PRは、ポート共通資源1Fとして、各通信ポート1A毎にそれぞれ管理されている。
資源割当制御部1Eは、通信ポート1Aのポート共通資源1Fとして管理されているコマンド処理資源PRを、その通信ポート1Aに接続された各ホスト2にそれぞれ割り当てるものである。資源割当制御部1Eは、例えば、コマンド処理資源PRを確保する機能1E1と、コマンド処理資源PRをポート共通資源1Fに戻す機能1E2と、ポート共通資源1Fに残っているコマンド処理資源PRの量を判定する機能1E3と、ホスト2と通信ポート1Aの間の通信遅延時間を判定する機能1E4と、各ホスト2の優先順位を管理する機能1E5とを備えることができる。
資源確保機能1E1は、例えば、ポート共通資源1Fに残っているコマンド処理資源PRの量(残存量または残数)及び各ホスト2に予め設定されている優先順位に基づいて、各ホスト2にそれぞれコマンド処理資源PRを割り当てる機能である。
例えば、資源確保機能1E1は、各ホスト2がコマンドを多重で発行できるように、ポート共通資源1F内のコマンド処理資源PRを各ホスト2に略均等に分配することができる。また、資源確保機能1E1は、優先順位が高くなるにつれてより多くのコマンド処理資源PRが割り当てられるように、ポート共通資源1F内のコマンド処理資源PRを各ホスト2に分配することができる。
資源戻し機能1E2は、例えば、ポート共通資源1Fに残っているコマンド処理資源PRの量及び通信遅延時間に基づいて、各ホスト2に割り当てられたコマンド処理資源PRの全部または一部をポート共通資源1Fに戻す機能である。コマンド処理資源PRをポート共通資源1Fに戻すとは、ホスト2に割当済みのコマンド処理資源PRの割り当て状態を解除し、他のホスト2に割り当て可能な状態に変更させることを意味する。
例えば、資源戻し機能1E2は、ポート共通資源1F内のコマンド処理資源PR(即ち、どのホスト2にも割り当てられていない自由なコマンド処理資源PRである)の残存量が少なくなった場合に、各ホスト2に割当済みのコマンド処理資源PRの一部をポート共通資源1Fに戻すことができる。また、資源戻し機能1E2は、ホスト2からのコマンド発行が終了した場合、そのホスト2に割当済みのコマンド処理資源PRの全部をポート共通資源1Fに戻すことができる。さらに、資源戻し機能1E2は、ホスト2から到着するコマンドが無くなった場合でも、所定の応答時間(通信遅延時間)が経過するまでの間は、そのホスト2に割り当てられているコマンド処理資源PRをそのまま維持することができる。また、資源戻し機能1E2は、ホスト2から到着するコマンドの数が減少した場合に、そのホスト2に割り当てられているコマンド処理資源PRの全部または一部をポート共通資源1Fに戻すこともできる。
残存量判定機能1E3は、ポート共通資源1F内のコマンド処理資源PRの量と所定の閾値とを比較し、その判定結果を出力する。後述の実施例で述べるように、所定の閾値は、各ホスト2に通知された受領可能数とその通信ポート1Aについて処理可能な最大のコマンド数とに基づいて調節することができる。通信ポート1Aについて処理可能な最大のコマンド数とは、その通信ポート1Aのポート共通資源1Fで管理可能な最大量のコマンド処理資源PRを意味する。以下の説明では、各通信ポート1A毎に処理可能な最大のコマンド数を「コマンド処理可能数」と呼ぶ場合がある。
遅延時間判定機能1E4は、各ホスト2から発行されるコマンドが通信ポート1Aに到着するときの通信遅延時間と所定の応答時間とを比較して、その判定結果を出力するものである。遅延時間判定機能1E4は、例えば、ホスト2と記憶制御装置1との間の距離が長い場合に、作動させることができる。これに対し、ホスト2と記憶制御装置1との間の距離が比較的短く、通信遅延時間を無視できるような場合、遅延時間判定機能1E4を作動させる必要はない。
例えば、ホスト2と記憶制御装置1とが遠く離れている場合、ホスト2から発行されたコマンドを通信ポート1Aが受信するまでに時間を要する。従って、この通信遅延時間のために、ホスト2から記憶制御装置1に到着するコマンドが一時的に途切れてしまい、そのホスト2に関して記憶制御装置1内で実行されるコマンドの数が0になる場合がある。この場合に、そのホスト2に割り当てられているコマンド処理資源PRをポート共通資源1Fに戻してしまうと、その戻されたコマンド処理資源PRが別のホスト2に割り当てられる。コマンド処理資源PRの割り当てが解除されるホスト2には、割り当ての解除以前に受領可能数が通知されている。この結果、各ホスト2に通知される受領可能数の合計値がポート共通資源1Fの最大量のコマンド処理資源を上回ってしまい、キューフル状態を招く可能性がある。そこで、記憶制御装置1は、ホスト2からのコマンド到着が途切れた場合でも、所定の通信遅延時間が経過するまでは、そのホスト2に割り当てられているコマンド処理資源PRをそのまま維持させるようになっている。
優先順位管理機能1E5は、各ホスト2の優先順位をそれぞれ管理する。優先順位は、管理者が手動で設定することもできるし、自動的に設定することもできる。例えば、ホスト2上で稼働するアプリケーションプログラムの種類や、アプリケーションプログラムが利用する記憶デバイスの種類、ボリュームの種類等に基づいて、優先順位を自動的に決定する構成でもよい。
次に、本実施形態による記憶制御装置1の作用を説明する。まず最初に、資源割当制御部1Eは、通信ポート1Aに接続されているホスト2のそれぞれに、コマンド処理資源PRを割り当てる。
ここで、資源割当制御部1Eは、各ホスト2がそれぞれ複数のコマンドを多重発行できるように、コマンド処理資源PRを複数ずつ割り当てる。これにより、各ホスト2は、記憶制御装置1からの応答を待たずにコマンドを続けて発行することができる。また、資源割当制御部1Eは、通信ポート1Aに接続されている各ホスト2のうち、コマンドを発行しているホスト2(コマンド実行中のホスト2)に対してのみ、コマンド処理資源PRを割り当てることもできる。
ホスト2は、一つまたは複数のコマンドを発行することができる。ホスト2と記憶制御装置1とがiSCSI(internet Small Computer System Interface)プロトコルを用いて通信を行う場合、コマンドを発行するホスト2はイニシエータとなり、コマンドを受領する記憶制御装置1はターゲットとなる。
イニシエータであるホスト2は、SCSIコマンドフレームに通し番号(CmdSN)を付加して、SCSIコマンドフレームを記憶制御装置1に送信する。SCSIコマンドをカプセル化して形成されたフレームは、TCP/IP(Transmission Control Protocol/Internet Protocol)ネットワークを介して、ホスト2から記憶制御装置1に送信される。このネットワークには、スイッチやルータ等の中継装置を設けることができる。
ホスト2から発行されたコマンドを通信ポート1Aが受信すると、コマンド実行部1Bは、そのホスト2に割り当てられているコマンド処理資源PRや記憶デバイス1C等を用いて、コマンドを処理する。
資源割当制御部1Eは、例えば、ポート共通資源1F内のコマンド処理資源PRの残量、そのホスト2から受信したコマンドの数の変化、通信遅延時間、そのホスト2から発行されたコマンドの実行状態(幾つのコマンドを処理中であるか)、そのホスト2に設定されている優先順位等に基づいて、受領可能数を算出する。
通知部1Dは、コマンド実行部1Bによるコマンド処理の結果及び資源割当制御部1Eで算出された受領可能数を、ホスト2に送信する。ここで、通知部1Dは、そのホスト2から受領した最新のCmdSNの値に受領可能数を加算することにより、MaxCmdSNを算出し、このMaxCmdSNを送信フレームに付加してホスト2に送信する。MaxCmdSNとは、イニシエータ(即ち、ここではホスト2)があと何個のコマンドを発行可能であるかを示す情報である。ホスト2は、MaxCmdSNに示された値までコマンドを続けて発行することができる。
資源割当制御部1Eによるコマンド処理資源PRの割当方法は、さらに後述する。簡単に説明すると、例えば、以下のような方針でコマンド処理資源PRを割り当てることができる。
(1)資源の確保
(1-1)各ホスト2にそれぞれ複数のコマンド処理資源PRを割り当てて、各ホスト2がコマンドを多重発行できるようにする。
(1-2)通信ポート1Aに接続されるホスト2のうちコマンド実行中のホスト2に対して略均等にコマンド処理資源PRを割り当てる。
(1-3)各ホスト2に通知される受領可能数の合計値がポート共通資源1Fのコマンド処理資源PRの総量(最大値)を超えないように、各ホスト2に割り当てるコマンド処理資源PRを分配する。
(1-4)ホスト2と記憶制御装置1との間に考慮すべき通信遅延時間が存在する場合(ホスト2と記憶制御装置1との距離が長い場合)、コマンドの到着が途絶えた場合でも、所定時間が経過するまでは、そのホスト2に割当済みのコマンド処理資源PRをポート共通資源1Fに戻さずに維持する。
(1-5)各ホスト2に優先順位が設定されている場合、優先順位に従って、ポート共通資源1F内のコマンド処理資源PRを各ホスト2に分配する。
(2)資源の戻し
(2-1)ポート共通資源1F内のコマンド処理資源PRが0になった場合、各ホスト2に割当済みのコマンド処理資源PRの一部を、ポート共通資源1Fに戻す。
(2-2)ホスト2から発行されたコマンドを実行するコマンド実行数が0になった場合、そのホスト2に割り当てられているコマンド処理資源PRの全部をポート共通資源1Fに戻す。
(2-3)各ホスト2に通知された受領可能数の合計値がポート共通資源1Fのコマンド処理資源PRの総量を超えた場合、各ホスト2に通知する受領可能数を減少させて、コマンド処理資源PRをポート共通資源1F内に戻していく。
(2-4)ポート共通資源1F内のコマンド処理資源PRの残存量が0になった場合、コマンド実行中のホスト2の数でポート共通資源1Fの総量を除算した値まで、コマンド実行中の各ホスト2に割り当てられているコマンド処理資源PRを減少させ、ポート共通資源1Fに戻す。
(2-5)ホスト2と記憶制御装置1との間に考慮すべき通信遅延時間が存在しない場合(ホスト2と記憶制御装置1との距離が短い場合)、ホスト2から到着するコマンドの数が減少した場合は、そのホスト2に関して実行しているコマンド数が0になるよりも前に、そのホスト2に割り当てられているコマンド処理資源PRの全部をポート共通資源1Fに戻す。
本実施形態は、上述のように構成されるので、以下の効果を奏する。記憶制御装置1は、通信ポート1A単位でコマンド処理資源PRを管理し、各ホスト2にコマンド処理資源PRを割り当てて、受領可能数を各ホスト2に通知する。各ホスト2は、記憶制御装置1から通知された受領可能数に基づいて、コマンドを発行できる。
従って、本実施形態では、記憶制御装置1から各ホスト2に送信されるMaxCmdSNによって、各ホスト2から発行されるコマンドの数を間接的に制御できる。これにより、記憶制御装置1で処理可能なコマンドの数を上回る数のコマンドを各ホスト2から受信する可能性を低減し、記憶制御装置1がキューフル状態となるのを抑制することができる。この結果、性能劣化を防止し、記憶制御装置1の信頼性を高めることができる。
また、記憶制御装置1から各ホストに送信されるMaxCmdSNによって、各ホスト2から発行されるコマンドの数を制御する構成のため、各ホスト2側のコマンド多重数を変更することなく、新たなホスト2を記憶制御装置1に追加接続したり、既に記憶制御装置1に接続されているホスト2の構成を変更することができる。即ち、本実施形態では、ホスト2を停止させることなく、オンラインのままで、ホスト2の増設や構成変更を行うことができ、使い勝手が向上する。
本実施形態では、記憶制御装置1とホスト2とが離れている場合、即ち、考慮すべき通信遅延時間が存在する場合は、そのホスト2に関して実行されているコマンドの数(コマンド実行数)が0になった場合でも、所定時間が経過するまでの間は、そのホスト2に割り当てられているコマンド処理資源PRをそのまま維持する。
従って、ホスト2から記憶制御装置1に到着するコマンドが一時的に途絶えた場合でも、そのホスト2に割り当てられているコマンド処理資源PRがポート共通資源1Fに戻されるのを防止できる。この結果、各ホスト2に通知される受領可能数の合計値がポート共通資源1Fの総量を超える可能性を低減することができ、キューフル状態となるのを防止することができる。
本実施形態では、記憶制御装置1とホスト2とが近接している場合、即ち、考慮すべき通信遅延時間が存在しない場合は、ホスト2から到着するコマンドの数の減少に応じて、そのホスト2に割り当てられているコマンド処理資源PRを減少させる。従って、あるホスト2におけるコマンドの多重発行が完全に終了するよりも前に、そのホスト2に割り当てられているコマンド処理資源PRを他のホスト2に割り当てることができる。この結果、通信ポート1A単位で管理されているコマンド処理資源PRを効率的に利用することができ、性能劣化を防止することができる。
本実施形態では、各ホスト2に優先順位を設定することができ、優先順位に従ってコマンド処理資源PRを割り当てることができる。従って、記憶制御装置1側において、各ホスト1の優先順位に応じて適切にコマンド処理資源PRを分配することができる。以下、本実施形態を詳細に説明する。
図2は、本実施例による記憶制御装置10を含むストレージシステムの全体構成を示す説明図である。このストレージシステムは、例えば、少なくとも一つ以上の記憶制御装置10と、複数のホスト20と、少なくとも一つ以上のスイッチ30とを備えて構成することができる。また、後述のように、記憶制御装置10は、通信ポート101を有するコントローラ100と、記憶デバイス210を有する記憶部200とを備えている。
図1との対応関係を説明すると、記憶制御装置10は図1中の記憶制御装置1に、ホスト20は図1中のホスト2に、通信ポート101は図1中の通信ポート1Aに、記憶デバイス210は図1中の記憶デバイス1Cに、それぞれ対応する。図1中のコマンド実行部1B、通知部1D、資源割当制御部1E及びポート共通資源1Fは、コントローラ100の機能としてそれぞれ実現される。
ネットワーク構成を説明する。図2に示すように、記憶制御装置10は、複数の通信ポート101を備えている。各通信ポート101には、スイッチ30を介して、一つまたは複数のホスト20がそれぞれ接続されている。図中では、説明の便宜上、左右のスイッチ30にのみホスト20をそれぞれ接続するかのように示しているが、各スイッチ30には複数のホスト20をそれぞれ接続可能である。従って、各通信ポート101には、スイッチ30を介して、複数のホスト20をそれぞれ接続可能である。
記憶制御装置10の全体構成を簡単に説明する。記憶制御装置10は、複数の(例えば2台の)コントローラ100を備えている。各コントローラ100は、同一の構成を備えており、記憶制御装置10の動作をそれぞれ制御する。各コントローラ100は、それぞれ複数の通信ポート101を備えており、各通信ポート101を介して複数のホスト20に接続されている。これら各コントローラ100は、互いに相手方をバックアップすることができ、一方のコントローラ100に障害が発生した場合でも、他方のコントローラ100によって、記憶制御装置10の動作を継続させることができる。即ち、記憶制御装置10は、複数のコントローラ100を備えたデュアルコントローラ構造を採用しており、耐障害性を高めている。コントローラ100の構成については図3と共に後述する。
記憶部200は、記憶容量を提供するためのものである。記憶部200は、複数の記憶デバイス210を備えている。記憶デバイス210としては、例えば、ハードディスクデバイス、半導体メモリデバイス、光ディスクデバイス、光磁気ディスクデバイス、磁気テープデバイス、フレキシブルディスクデバイス等のデータを読み書き可能な種々のデバイスを利用可能である。
記憶デバイスとしてハードディスクデバイスを用いる場合、例えば、FC(Fibre Channel)ディスク、SCSI(Small Computer System Interface)ディスク、SATAディスク、ATA(AT Attachment)ディスク、SAS(Serial Attached SCSI)ディスク等を使用することができる。記憶デバイスとして半導体メモリデバイスを用いる場合、例えば、フラッシュメモリ、FeRAM(Ferroelectric Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、相変化メモリ(Ovonic Unified Memory)、RRAM(Resistance RAM)」等の種々のメモリデバイスを利用可能である。
複数の記憶デバイス210によってRAIDグループ(パリティグループ)220を構成することができる。そして、RAIDグループ220内の複数の記憶デバイス210に跨るようにして、論理ボリューム230を設定することができる。なお、一つの記憶デバイス210に一つまたは複数の論理ボリューム230を設定することもできる。各ホスト20は、論理ボリューム230をアクセス対象として認識し、論理ボリューム230に対してデータの読み書きを行う。
なお、図2中では、記憶制御装置10内に記憶部200を設ける場合を示しているが、これに限らず、記憶制御装置10の筐体外部に記憶部200を設けてもよい。
図3は、記憶制御装置10の構成を部分的に示す説明図である。説明の便宜上、図3には、一方のコントローラ100の構成が示されている。コントローラ100は、例えば、複数の通信ポート101A,101Bと、ホスト側転送回路110と、ドライブ側転送回路120と、キャッシュメモリ130と、プロセッサ140及び制御テーブル150A,150Bを備えて構成される。
ホスト側転送回路110は、ホスト20との通信を行うための回路である。ホスト側転送回路110は、例えば、iSCSIプロトコルに基づいて、各ホスト20との通信をそれぞれ独立に行うことができる。
ドライブ側転送回路120は、記憶部200内の各記憶デバイス210との間の通信を行うものである。ドライブ側転送回路120は、例えば、FCP(Fibre Channel Protocol)に基づいて、各記憶デバイス210との間のデータ入出力を行う。
キャッシュメモリ130は、データを一時的に記憶するメモリデバイスである。キャッシュメモリ130には、ホスト20から書き込まれたデータ(ライトデータ)や、ホスト20により読み出されたデータ(リードデータ)が記憶される。
例えば、ホスト20がライトデータの書込みをコントローラ100に要求した場合、コントローラ100は、ホスト20からホスト側転送回路110を介して受信したライトデータを、キャッシュメモリ130に記憶させる。そして、コントローラ100は、ホスト20にライトコマンドの処理が完了した旨を報告する。その後、コントローラ100は、キャッシュメモリ130に記憶させたライトデータを、ドライブ側転送回路120を介して、記憶デバイス210に書き込ませる。なお、ライトデータを記憶デバイス210に書き込んだ後で、ホスト20にライトコマンドの処理完了を報告してもよい。
ホスト20がコントローラ100にデータの読出しを要求した場合、コントローラ100は、ホスト20の要求するデータがキャッシュメモリ130に記憶されているか否かを調べる。ホスト20の要求するデータがキャッシュメモリ130に記憶されている場合、コントローラ100は、キャッシュメモリ130に記憶されているデータを読出し、この読み出したデータをホスト側転送回路110を介して、ホスト20に送信させる。ホスト20の要求するデータがキャッシュメモリ130に記憶されていない場合、コントローラ100は、ドライブ側転送回路120を介して、記憶デバイス210からデータを読出し、この読み出したデータをキャッシュメモリ130に記憶させる。そして、コントローラ100は、キャッシュメモリ130に記憶されたデータを、ホスト側転送回路110を介して、ホスト20に送信させる。
プロセッサ140は、一つまたは複数のCPU(Central Processing Unit)コアを備えており、コントローラ100の動作を制御する。プロセッサ140は、ホスト側転送回路110,ドライブ側転送回路120,キャッシュメモリ130,記憶デバイス210,制御テーブル150A,150Bにそれぞれ接続されている。プロセッサ140は、制御テーブル150A,150Bを用いることにより、後述のように、各ホスト20に割り当てるコマンド処理資源の量をポート単位でそれぞれ管理する。
制御テーブル150A,150Bは、例えば、書き換え可能な不揮発メモリのようなメモリデバイスに設けることができる。制御テーブル150A,150Bは、各通信ポート101A,101Bにそれぞれ対応している。各制御テーブル150A,150Bは、同一構造であるため、以下、特に区別する場合を除き「制御テーブル150」と呼ぶ。
制御テーブル150は、例えば、ポート単位コマンド処理管理テーブルT1と、ポート単位コマンド処理管理資源残数テーブルT2と、ポート単位実行コマンド数テーブルT3と、コネクション管理テーブルT4及びポート単位実行コネクション数テーブルT5とを備えている。なお、後述する実施例では、これらT1〜T5以外の他のテーブルも使用される。次に、これら各テーブルT1〜T5についてそれぞれ説明する。
図4は、ポート単位コマンド処理管理テーブルT1を示す説明図である。ポート単位コマンド処理管理テーブルT1は、各通信ポート101A,101B(以下、特に区別する場合を除き「ポート101」と呼ぶ)毎に、コマンド処理資源を管理するためのテーブルである。図4に示すように、本実施例の記憶制御装置10は、各ポート101毎にそれぞれ最大n個のコマンドを処理可能である。図4に示すコマンド処理情報は、コマンド処理資源に該当するもので、ホスト20から受信した各コマンド毎にそれぞれ一つずつのコマンド処理情報が設定される。
図5は、ポート単位コマンド処理管理資源残数テーブルT2を示す説明図である。以下、このテーブルT2を残数テーブルT2と略す場合がある。残数テーブルT2は、各ポート101単位で管理されているコマンド処理資源(コマンド処理情報)の残存量を管理するものである。残存量とは、いずれのホスト20にも割り当てられていない未使用のコマンド処理資源である。図中では、各通信ポート101におけるコマンド処理資源の残数(残存量)を「RPR」と表示する場合がある。
図6は、ポート単位実行コマンド数テーブルT3を示す説明図である。以下、このテーブルT3を、実行コマンド数テーブルT3と略す場合がある。実行コマンド数テーブルT3は、ポート101毎に、実行されているコマンドの数、つまり実行中のコマンドの数を管理するものである。即ち、実行コマンド数テーブルT3は、関連づけられている通信ポート101を介して受信したコマンドが現在幾つ実行されているかを管理する。図中では、実行コマンド数を「ENp」と略記する場合がある。
図7は、コネクション管理テーブルT4を示す説明図である。コネクション管理テーブルT4は、各ポート101毎に、接続されているホスト20を管理するものである。即ち、コネクション管理テーブルT4は、関連づけられている通信ポート101に接続されているホスト20を管理する。従って、コネクション管理テーブルT4は、ホスト管理テーブルと呼ぶこともできる。
コネクション管理テーブルT4は、例えば、コネクション管理情報と、処理資源確保数(AR)と、実行コマンド数(ENc)と、実行コマンド数履歴T41と、定常状態フラグと、ホスト20から受領した最新のCmdSNと、ホスト20に報告された最新のMaxCmdSNと、コマンド実行数が0になった開始時刻と、コマンド実行数が0になった期間とを対応付けて管理することができる。なお、これらの各情報を全て備えている必要はなく、一部の情報は、後述の実施例で使用される。
コネクション管理情報は、ホスト20と通信ポート101との間のコネクションを管理するための情報であり、例えば、iSCSI_Name等を含む。処理資源確保数(AR)とは、ホスト20に割り当てられているコネクションについて確保されたコマンド処理資源の数を示す。即ち、処理資源確保数(AR)は、そのホスト20用に予約されているコマンド処理資源の数を示す。実行コマンド数(ENc)は、そのホスト20に関して実行されているコマンドの数、つまり、実行中のコマンド数を示す。従って、ポート単位の実行コマンド数(ENp)は、そのポート101に接続されている各ホスト20の実行コマンド数(ENc)の総和となる。
実行コマンド数履歴T41は、そのホスト20に関して実行されたコマンドの数の履歴を示す。実行コマンド数の履歴については、図14と共に後述する。実行コマンド数履歴T41は、後述の実施例で使用される。
定常状態フラグは、そのホスト20に関する実行コマンド数(ENc)の状態を示す情報である。即ち、定常状態フラグは、そのホスト20によるコマンドの発行状態を示す情報である、ホスト20が定常状態であると判定された場合、定常状態フラグに”1”がセットされる。ホスト20が定常状態ではないと判定された場合、定常状態フラグに”0”がセットされる。定常状態とは、そのホスト20について実行される実行コマンド数(ENc)の値が安定している状態を示す。定常状態以外の状態とは、減少状態を挙げることができる。減少状態とは、そのホスト20について実行される実行コマンド数(ENc)の値が定常状態から減少した状態を示す。定常状態フラグは、実行コマンド数履歴T41と共に後述の実施例で使用される。
受領CmdSNとは、上述のように、そのホスト20から受領した最新のコマンドに付加されている通し番号である。報告MaxCmdSNとは、上述の通り、記憶制御装置10からホスト20に通知されたMaxCmdSNを示す。MaxCmdSNは、あと何個のコマンドを発行できるかを示す情報である。
実行数0開始時刻とは、上述の通り、そのホスト20に関して実行されるコマンド数(ENc)が0になった最初の時刻を示す。実行数0期間とは、そのホスト20の実行コマンド数(ENc)が0になった期間を示す。これら実行数0開始時刻及び実行数0期間の情報は、後述する別の実施例で使用される。
図8は、ポート単位実行コネクション数テーブルT5を示す説明図である。このテーブルT6は、通信ポート101で実行されているコネクションの数(EC)を管理するものである。即ち、このテーブルT6は、その通信ポート101に接続されており、コマンドを発行しているホスト20の数をポート101毎に管理している。以下、このテーブルT6を実行コネクション数テーブルT5と呼ぶ場合がある。
次に、本実施例による記憶制御装置10の動作について、フローチャートを参照しながら説明する。各フローチャートは、処理の概要を示しており、実際のプログラムとは相違する場合がある。なお、ステップを「S」と略記する。
図9は、コマンド受領処理を示すフローチャートである。この処理は、記憶制御装置10により実行される。記憶制御装置10は、ホスト20からコマンドを受信したか否かを判定する(S11)。
コマンドが受信されたと判定した場合(S11:YES)、記憶制御装置10は、そのコマンドを受信した通信ポート101について、実行コマンド数(ENp)を1つだけ増加させる(S12)。さらに、記憶制御装置10は、その受信されたコマンドに関するコネクションの実行コマンド数(ENc)を1つだけ増加させる(S13)。つまり、そのコマンドを発行したホスト20について、実行コマンド数(ENc)を1つ増加させる。
記憶制御装置10は、そのコネクション(ホスト20)に関して最初に受信されたコマンドであるか否かを判定する(S14)。即ち、そのホスト20から最初に発行されたコマンドであるか否かを判定する。そのホスト20から発行された最初のコマンドである場合(S14:YES)、記憶制御装置10は、その最初のコマンドを受信した通信ポート101について、実行コネクション数(EC)を1つだけ増加させる(S15)。
記憶制御装置10は、S11で受信したコマンドに付加されているCmdSNを記憶する(S16)。記憶制御装置10は、ポート単位コマンド処理管理テーブルT1が満杯か否かを判定する(S17)。即ち、S11で受信したコマンドを処理するために必要なコマンド処理資源が存在するか否かを判定する。
コマンド処理資源がある場合(S17:NO)、記憶制御装置10は、S11で受信したコマンドを処理する(S18)。記憶制御装置10は、そのコマンドがライトコマンドであれば、ホスト20から受信したライトデータを記憶デバイス210に書込む。記憶制御装置10は、そのコマンドがリードコマンドであれば、要求されたデータをキャッシュメモリ130または記憶デバイス210のいずれかから読み出す。
これに対し、S11で受信したコマンドを処理するためのコマンド処理資源が無い場合(S17:YES)、そのコマンドを処理することができない。そこで、記憶制御装置10は、キューフル状態である旨をホスト20に送信する(S19)。ホスト20は、記憶制御装置10がキューフル状態であることを確認すると、例えば、所定時間が経過するのを待ってから再びコマンドを発行する。
図10は、記憶制御装置10からホスト20に応答を返す処理を示すフローチャートである。以下に述べるように、記憶制御装置10は、ホスト20から受信したコマンドの処理結果をホスト20に通知(応答)する場合に、そのホスト20に発行を許可するコマンド数を合わせて通知する。ホスト20に許可されるコマンドの発行数(あと幾つのコマンドを発行できるかを示す数)は、記憶制御装置10からホスト20に送信されるMaxCmdSNによって通知される。
記憶制御装置10は、S11で受信したコマンドの処理が完了したか否かを判定し(S21)、コマンドの処理が完了した場合(S21:YES)、そのコマンドを受信した通信ポート101の実行コマンド数ENpを1つ減少させる(S22)。これに続いて、記憶制御装置10は、そのコネクション(ホスト20)の実行コマンド数ENcを1つ減少させる(S23)。
記憶制御装置10は、そのコネクションの実行コマンド数ENcが0になったか否かを判定する(S24)。ENc=0と判定された場合は(S24:YES)、そのコネクションを介して受信したコマンドの処理が全て終了しており、未処理のコマンドが一つも存在しない場合である。つまり、ENc=0となったホスト20がコマンドを発行していない状態であるため、記憶制御装置10は、通信ポート101の実行コネクション数ECを1つ減少させる。実行コネクション数ECは、コマンドを発行しているホスト20(コマンド実行中のホスト20)を管理するための情報だからである。
そのコネクションの実行コマンド数ENcが0ではない場合(S24:NO)、記憶制御装置10は、ホスト20に通知するためのMaxCmdSNを以下のように算出する。まず、記憶制御装置10は、テーブルT2を参照することにより、そのコネクションに関連する通信ポート101の有するコマンド処理資源(プールされたコマンド処理資源)の残数RPRが閾値Th1を超えているか否かを判定する(S26)。つまり、記憶制御装置10は、その通信ポート101に関連してプールされている未使用のコマンド処理資源に閾値Th1以上の余裕があるか否かを判定する。
残数RPRが閾値Th1以下の場合(S26:NO)、記憶制御装置10は、コネクションの処理資源確保数ARからM1個のコマンド処理資源を残数RPRに戻す(S27)。つまり、ポート単位の共通資源(プール資源)の残数RPRがTh1以下の場合、記憶制御装置10は、そのコネクションに割り当てられているコマンド処理資源のうちM1個のコマンド処理資源を共通資源に戻す(AR=AR-M1,RPR=RPR+M1)。これにより、その通信ポート101において自由に使用可能なコマンド処理資源の量が増大する。従って、例えば、別のホスト20へのコマンド処理資源の割当量を増加させたり、または、新たなホスト20の追加等に対応することができる。
残数RPRが閾値Th1を超えている場合(S26:YES)、記憶制御装置10は、残数RPRからM2個のコマンド処理資源を新たに獲得して、そのコネクションに割り当てられているコマンド処理資源の数ARを増加させる(S28)。つまり、記憶制御装置10は、通信ポート101単位でプールされている未使用のコマンド処理資源を遊ばせておかず、できるだけ多くのコマンド処理資源をコマンド発行中のホスト20に分配する(RPR=RPR-M2,AR=AR+M2)。
記憶制御装置10は、前記S26,S27,S28で述べたように、残数RPRと閾値Th1との比較結果に基づいて、コネクションに割り当てるコマンド処理資源の数(処理資源確保数)ARを更新させる。そして、記憶制御装置10は、この更新されたARをCmdSNに加算することにより、MaxCmdSNを算出する(S29)。
そして、記憶制御装置10は、そのコネクションの実行コマンド数ENcが0か否かを再び判定し(S30)、ENcが0でないと判定された場合に(S30:NO)、ホスト20に応答を返す(S31)。記憶制御装置10からホスト20に送信される応答には、図9中のS18で処理されたコマンドの処理結果とS29で算出されたMaxCmdSNとが含まれている。
既に述べたように、MaxCmdSNは、ホスト20から受信して処理可能なコマンド数を示している。つまり、MaxCmdSNは、あと何個のコマンドをホスト20が発行できるかを示す。ホスト20は、CmdSNがMaxCmdSNに到達するまで、新たなコマンドを発行することができる。
ホスト20に応答するよりも前に、そのホスト20に関して実行中のコマンド数ENcが0になった場合(S30:YES)、記憶制御装置10は、そのホスト20に割り当てられていたコマンド処理資源の全てをポート単位の共通資源に戻す(S32)。ENc=0となったホスト20は、コマンドの発行を終了しており、コマンド処理資源を割り当てておく必要がないためである。
図11は、図10中のS26で使用する閾値Th1を設定するための処理を示すフローチャートである。この処理は、各通信ポート101毎にそれぞれ実行される。記憶制御装置10は、コマンド処理可能数nと通信ポート101の実行コマンド数ENpとを比較する(S41)。コマンド処理可能数nとは、その通信ポート101に関して処理可能なコマンドの総数を示す。即ち、コマンド処理可能数nは、その通信ポート101で管理されているコマンド処理資源の総量である。
通信ポート101に関して実行中のコマンド数ENpがコマンド処理可能数nを超えている場合(n<ENp)、記憶制御装置10は、閾値Th1を増大させる(S4)。例えば、nが512または1024の場合、記憶制御装置10は、閾値Th1を64に設定することができる。
これに対し、コマンド処理可能数nが、その通信ポート101に関して実行中のコマンド数ENp以上である場合(n≧ENp)、記憶制御装置10は、閾値Th1の値を低下させる(S4)。例えば、記憶制御装置10は、閾値Th1を0に設定する。
つまり、本実施例では、閾値Th1の初期値を0に設定している。そして、通信ポート101に関して実行中のコマンドの総数ENpが、その通信ポートに割り当てられているコマンド処理資源の総数nを超えた場合、記憶制御装置10は、閾値Th1を高く設定する(S41)。これにより、図10で述べたように、残数RPRがTh1を下回る可能性が高くなり(S26:NO)、プール資源としてポート101毎に管理されるコマンド処理資源の数が増大する。この結果、図10中のS29で算出されるMaxCmdSNの値が低下し、ホスト20に許可されるコマンド発行数が減少する。
これに対し、実行コマンド数ENcがコマンド処理可能数n以下の場合、閾値Th1は0に戻され、より多くのコマンド処理資源がホスト20に割り当てられる。これにより、ホスト20に許可されるコマンド発行数が増大し、ホスト20は、より多くのコマンドを多重発行することができる。
上述のように閾値Th1を自動的に変更するのは以下の理由による。本実施例では、一方のホスト20の実行コマンド数ENcが0になると、一方のホスト20に割り当てられていたコマンド処理資源は、全て管理資源残数RPRに戻される(S32)。そして、ポート単位のプール資源に戻されたコマンド処理資源は、他方のホスト20に割り当てられる(S27)。
従って、一方のホスト20に許可されているコマンドの発行数と他方のホスト20に許可されたコマンドの発行数との合計値が、そのポート101に関して処理可能なコマンドの総数nを超過する。コマンド発行を許可された総数がコマンドを処理可能な総数nを超えた状態で、一方のホスト20及び他方のホスト20のそれぞれからコマンドが発行されると、キューフル状態を招くおそれがある。
そこで、本実施例では、図11と共に述べたように、コマンド処理資源の残数RPRの大小に応じて閾値Th1の値を調整することにより、発行が許可されたコマンドの総数がコマンド処理可能数nを超過する事態を自動的に解消させる。つまり、超過して許可されたコマンドが各ホスト20から発行されるよりも前に、コマンド発行の許可数が実際の処理可能数nを超過している状態(超過状態)を解消させることができる。
図12は、図10中のS27,S28で使用されるM1,M2の値を設定するための処理を示す。この処理も各通信ポート101毎にそれぞれ実行される。ここで、M1は、ホスト20に割り当てられているコマンド処理資源を減らしてプール資源(RPR)に戻す数であるから、資源減少数または戻し数と呼ぶことができる。M2は、ホスト20に追加して割り当てられるコマンド処理資源の数であるから、資源追加数または確保数と呼ぶことができる。
図12を参照する。記憶制御装置10は、通信ポート101に接続されている各ホスト20にそれぞれ割り当てるべきコマンド処理資源の基準値qを算出する(S51)。この割り当て基準値qは、例えば、その通信ポート101に関連づけられているコマンド処理資源の総量(コマンド処理可能数n)を、コマンドを発行しているホスト20の数(実行コネクション数EC)で除算することにより、求められる(q=n/EC)。即ち、記憶制御装置10は、その通信ポート101に接続されている全てのホスト20のうち、実際にコマンドを発行しているホスト20の数(EC)で、コマンド処理資源の総量(n)を割り、基準値qを算出する。
記憶制御装置10は、ホスト20に割り当てられているコマンド処理資源の数ARと算出された基準値qとを比較する(S52)。既に割当済みのコマンド処理資源の数ARが基準値q以上の場合、記憶制御装置10は、ARから基準値qを差し引くことにより、戻し数M1を算出する(S53)。これにより、基準値q以上のコマンド処理資源が割り当てられているホスト20から、M1(M1=AR-q)個のコマンド処理資源が取り除かれて、プール資源(RPR)に戻される(図10のS27)。
これに対し、割当済みのコマンド処理資源の数ARの方が基準値qよりも小さい場合、記憶制御装置10は、基準値qからARを差し引くことにより、確保数M2を算出する(S54)。これにより、基準値qよりも少ないコマンド処理資源しか割り当てられていないホスト20に、M2(M2=q-AR)個のコマンド処理資源が追加して割り当てられる(図10のS28)。
図12と共に述べたように、本実施例では、ホスト20に割り当てられているコマンド処理資源を増減させる量M1,M2を、基準値qに基づいて自動的に調節する。この理由は以下による。即ち、ホスト20に割り当てたコマンド処理資源をプール資源(RPR)に戻す回数が増加すると、この戻されたコマンド処理資源が別のホスト20に割り当てられてしまい、上述の超過状態を招く可能性がある。そこで、本実施例では、基準値qに基づいて、各ホスト20に割り当てるコマンド処理資源の数を調整する。これにより、ホスト20に割当済みのコマンド処理資源が必要以上にプール資源に戻される事態を抑制することができ、前記超過状態の発生を抑制することができる。
本実施例は、上述のように構成されるので、以下の効果を奏する。本実施例では、記憶制御装置10は、通信ポート101単位でコマンド処理資源をそれぞれ管理し、各ホスト20にコマンド処理資源を割り当てて、受領可能数をMaxCmdSNにより各ホスト20に通知する。従って、各ホスト20は、記憶制御装置10から通知された受領可能数に基づいて、コマンドを発行でき、記憶制御装置10は、各ホスト20から発行されるコマンドの数を制御することができる。これにより、記憶制御装置10がキューフル状態となる可能性を低減し、記憶制御装置10の性能が劣化するのを防止することができ、記憶制御装置10の信頼性を高めることができる。
本実施例では、MaxCmdSNの値を適切に設定することにより、各ホスト20から発行されるコマンドの数を制御する。従って、既に記憶制御装置10に接続されているホスト20の構成を変更する場合や、新しいホスト20を記憶制御装置10に接続するような場合でも、各ホスト20側のコマンド多重数を変更する必要がない。従って、ホスト20を停止させることなく、オンラインのままで、ホスト20の増設や構成変更を行うことができ、使い勝手が向上する。
本実施例では、ホスト20にコマンド処理資源を追加割り当てするか、または、ホスト20に割り当てられているコマンド処理資源を減少させるかを判断するための閾値Th1を、通信ポート101に関連づけられているコマンド処理資源の総量nとその通信ポート101に関して実行中のコマンド数ENpとに基づいて、設定する。これにより、各ホスト20にそれぞれ許可されるコマンド発行数の合計値が、実際に処理可能なコマンド数nを超える事態の発生を抑制することができ、キューフル状態となるのを抑制することができる。
本実施例では、通信ポート101に関連づけられているコマンド処理資源の総量nを、その通信ポート101に向けてコマンドを発行しているホスト20の数で除算することにより、基準値qを算出し、この基準値qに基づいて、各ホスト20に割り当てるコマンド処理資源の量を調節する。これにより、必要以上のコマンド処理資源がホスト20に割り当てられたり、または、ホスト20に割り当てられているコマンド処理資源が必要以上にプール資源に戻されたりするのを防止することができる。これにより、上述の超過状態の発生を抑制し、信頼性を高めることができる。
図13〜図15に基づいて第2実施例を説明する。本実施例を含む以下の各実施例は、上述した第1実施例の変形例に相当する。本実施例では、ホスト20から発行されたコマンドの実行数ENcに基づいてコマンド発行の終期を予測し、そのホスト20に割り当てられているコマンド処理資源を早期にプール資源(RPR)に戻す。
本実施例は、例えば、ホスト20と記憶制御装置10との距離が比較的近く、通信遅延時間が少ない場合に適用することができる。図13は、ホスト20(イニシエータ)から記憶制御装置10(ターゲット)に発行されるコマンドの様子と、そのホスト20から受信したコマンドを記憶制御装置10内で実行する数ENcとの関係を模式的に示す説明図である。
図13に示すように、ホスト20は、記憶制御装置10からの応答を待たずに、複数のコマンドを連続的に発行することができる。記憶制御装置10は、ホスト20から受信したコマンドを処理し、その処理結果にMaxCmdSNを付加して応答する。従って、ホスト20がコマンドを発行する時期と記憶制御装置10が応答する時期との間には、多少のタイムラグが生じる。
図13の下側に示すように、そのホスト20に関して記憶制御装置10内で実行されるコマンドの数ENcは、ホスト20からのコマンドを受信するたびに増加していく。そして、先に受信したコマンドの処理が完了し、その処理結果がホスト20に返信されると、コマンド実行数ENcはその分だけ減少する。従って、ホスト20が略一定の頻度でコマンドを多重発行し、記憶制御装置10が略一定の速度でコマンドを処理する場合、コマンド実行数ENcの値は、ある時期から略一定となる。このコマンド実行数ENcが略一定となる期間を、本明細書では、コマンド実行数ENcの定常状態と呼ぶ。
ホスト20上のデータ処理が一段落してコマンドの発行が停止された場合、記憶制御装置10内でのコマンド処理は継続しているため、コマンド実行数ENcの値は、徐々に減少していく。本明細書では、コマンド実行数ENcが定常状態から減少する状態を減少状態と呼ぶ。
図14は、コマンド実行数ENcの変化を模式的に示す説明図である。ホスト20から1番目のコマンド(#1)を受信すると、記憶制御装置10の受け付けたコマンドの数は「1」となる。この1番目のコマンドの処理は完了していないので、応答したコマンドの数は「0」である。従って、1番目のコマンドを記憶制御装置10が受信した時点では、コマンド実行数ENcは、1となる(ENc=受け付けたコマンドの数−応答したコマンドの数)。
1番目のコマンドの処理結果がホスト20に通知されるまでの間に、1番目〜4番目のコマンド(#4)を記憶制御装置10が受信したと仮定すると、実行コマンド数ENcは、「1」→「2」→「3」→「4」と徐々に増加していく。この状態を増加状態と呼ぶこともできる。
最初に受信したコマンド(#1等)の処理が完了してホスト20に通知される時期に達すると、実行コマンド数ENcの値は、図示の例では「4」で安定する。実行中のコマンド数ENcの値が所定回数以上続けて、同一の値(この例では「4」)を示す場合、記憶制御装置10は、増加状態から定常状態に移行したと判定することができる。
同様に、実行コマンド数ENcの値が定常状態の値から減少し始めた場合、記憶制御装置10は、定常状態から減少状態への移行を検出することができる。
図15は、ホスト20からのコマンド発行状態(コマンド発行の終期)を検出して、コマンド処理資源をプール資源(RPR)に戻すための処理を示す。このフローチャートは、記憶制御装置10によって、各通信ポート101毎に実行される。
まず、記憶制御装置10は、過去AR回分の実行コマンド数履歴テーブルT41を更新し(S61)、過去AR回分の実行コマンド数ENcが略一定であるか否かを判定する(S62)。上述のように、ARとは、ホスト20に割り当てられているコマンド処理資源の数である。
実行コマンド数ENcが略一定の場合(S62:YES)、記憶制御装置10は、定常状態に移行したと判定し、図7に示すテーブルT4の定常状態フラグをセットし(S63)、S64に移る。実行コマンド数ENcが略一定ではない場合(S62:NO)、記憶制御装置10は、S64に移る。
記憶制御装置10は、定常状態フラグがセットされているか否かを判定し(S64)、定常状態フラグがセットされている場合(S64:YES)、前回の実行コマンド数ENcよりも今回の実行コマンド数ENcの方が少ないか否かを判定する(S65)。
前回の実行コマンド数ENcよりも今回の実行コマンド数ENcの方が少ない場合(S65:YES)、記憶制御装置10は、定常状態から減少状態へ移行したものと判定する。そこで、記憶制御装置10は、そのホスト20に割り当てられている全てのコマンド処理資源をプール資源として戻させる(S66)。即ち、記憶制御装置10は、定常状態から減少状態への移行を検出した場合、そのホスト20によるコマンド発行の終わりが近いと予測し、そのホスト20に割り当てられているコマンド処理資源の全て(AR)を、プール資源(RPR)に戻させる(M1=AR)。そして、記憶制御装置10は、S67に移る。
定常状態フラグがセットされていない場合(S64:NO)、記憶制御装置10は、S67に移る。また、今回の実行コマンド数ENcが前回の実行コマンド数ENcと変わらない場合(S65:NO)、記憶制御装置10は、S67に移る。
そして、記憶制御装置10は、実行コマンド数ENcが0になったか否かを判定する(S67)。実行コマンド数ENcが0になった場合(S67:YES)、記憶制御装置10は、そのホスト20からのコマンド発行が終了したものと判定し、定常状態フラグをリセットさせる(S68)。
このように構成される本実施例でも、前記第1実施例と同様の作用効果を奏する。これに加えて、本実施例では、実行コマンド数ENcの状態に基づいて、ホスト20によるコマンド発行の終期を予測し、実行コマンド数ENcが0になるよりも前に、そのホスト20に割り当てられているコマンド処理資源をプール資源に戻す。従って、コマンド処理資源を他のホスト20に割り当てることができ、通信ポート101単位で管理されるコマンド処理資源を有効に利用することができる。
図16〜図18に基づいて第3実施例を説明する。本実施例では、ホスト20からのコマンドの到着が遅れた場合でも、前回の実行数0期間T0又は所定時間RTが経過するまでの間は、そのホスト20に割り当てられているコマンド処理資源をプール資源に戻さずに維持する。
即ち、本実施例では、実際に計測された応答時間(前回の実行数0期間T0)が経過するまでは、ホスト20に割り当てられたコマンド処理資源をプール資源に戻さずにそのまま維持する。一方、コマンド処理資源を長時間維持し続けると、プール資源内のコマンド処理資源が不足する可能性がある。そこで、所定時間RTを経過した場合は、ホスト20に割り当てられているコマンド処理資源をプール資源に戻すようになっている。
図16に示すように、本実施例は、例えば、ホスト20と記憶制御装置10とが比較的長い距離L2離れており、両者の間に通信遅延時間が存在する場合に用いられる。ホスト20と記憶制御装置10との間の物理的な距離やスイッチ30内の応答遅延等により、ホスト20から発行されたコマンドは、ホスト20と記憶制御装置10とが接近している場合よりも、遅れて到着する。
従って、ホスト20がコマンドを多重発行している場合でも、コマンドの伝達に時間がかかるため、記憶制御装置10側において、実行コマンド数ENcが0となる時期TSが発生する。ホスト20から次のコマンドが記憶制御装置10に到着するまでの間、実行コマンド数ENcが0となる期間が継続する。この実行コマンド数ENcが0となる期間を、本明細書では、実行数0期間T0と呼ぶ。
図17は、ホスト20と記憶制御装置10との間に通信遅延時間が存在する場合にコマンド処理資源を確保し続けるための処理を示すフローチャートである。まず最初に、記憶制御装置10は、実行コマンド数ENcが「1」から「0」に変化したか否かを判定する(S71)。
実行コマンド数ENcが1から0に変化した場合(S71:YES)、記憶制御装置10は、ENc=0となった時刻を、実行数0期間T0の開始時刻TSとして記憶する(S72)。次に、記憶制御装置10は、後述のS76において前回計測された期間T0と所定時間RTとを比較する(S73)。即ち、記憶制御装置10は、前回の期間T0が所定時間RT以内であるか否かを判定する(S73)。実行コマンド数ENcが0となった前回の期間T0が、所定時間RT以下である場合(S73:YES)、記憶制御装置10は、何もせずに処理を終了する。これに対し、前回の期間T0が所定時間RTに達した場合(S73:NO)、記憶制御装置10は、ENc=0となったホスト20に割り当てられているコマンド処理資源の全てをプール資源(RPR)に戻す(S74)。
実行コマンド数ENcが1から0に変化していない場合(S71:NO)、記憶制御装置10は、実行コマンド数ENcが0から1に変化したか否かを判定する(S75)。ENcが0から1に変化した場合とは、実行数0期間T0が終了した場合である。そこで、記憶制御装置10は、テーブルT4中の期間T0の値を更新させる(S76)。即ち、記憶制御装置10は、現在時刻から開始時刻TSを減算することにより、最新の期間T0を算出し、テーブルT4に登録する。
図18は、通信遅延時間を考慮してコマンド処理資源の確保または開放を制御するための別の処理方法を示すフローチャートである。このフローチャートは、記憶制御装置10によって定期的に実行される。
記憶制御装置10は、ホスト20に関する実行コマンド数ENcが0になったか否かを判定する(S81)。ENc=0の場合(S81:YES)、記憶制御装置10は、そのホスト20にコマンド処理資源が1つ以上割り当てられているか否かを判定する(S82)。
ENc=0となったホスト20に1つ以上のコマンド処理資源が割り当てられている場合(S82:YES)、記憶制御装置10は、実行コマンド数ENcが0となってからの経過時間(T0)が、前回の実行数0期間T0または所定時間RTに達したか否かを判定する(S83)。
前記同様に、期間T0が前回の実行数0期間T0または所定時間RTに達した場合(S83:YES)、記憶制御装置10は、そのホスト20に割り当てられている全てのコマンド処理資源をプール資源(RPR)に戻す(S84)。これに対し、期間T0が前回の実行数0期間T0または所定時間RTに達していない場合(S83:NO)、記憶制御装置10は、そのホスト20に割り当てられているコマンド処理資源をそのまま維持する。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、記憶制御装置10とホスト20とが離れており、両者の間に通信遅延が存在する場合においても、ホスト20に割り当てられているコマンド処理資源を、前回の実行数0期間T0または所定時間RTが経過するまで維持する。
これにより、実行コマンド数ENcが0になって、ホスト20からのコマンド受領が途絶えた場合でも、そのホスト20に割り当てられているコマンド処理資源が直ちに開放されて他のホスト20に割り当てられるのを防止できる。従って、各ホストに許可されたコマンド発行数の合計値が、実際に処理可能なコマンド数を超えるのを防止して、キューフル状態の発生を抑制できる。
図19,図20に基づいて第4実施例を説明する。本実施例では、各ホスト20に予め優先順位を設定しておき、この優先順位に従って、ポート101単位で管理されているコマンド処理資源を分配する。
図19は、ポート101単位でホスト20の優先順位を管理するためのテーブルT6を示す説明図である。この優先順位管理テーブルT6は、例えば、各ホスト20を識別するためのホスト識別情報と、各ホスト20へ分配するコマンド処理資源の割合とを対応付けて管理する。
ホスト識別情報としては、例えば、iSCSI_Nameを用いることができる。iSCSI_Name以外にホスト20を識別可能な情報が存在する場合は、その情報を用いてもよい。割合とは、ポート101に関連づけられている全てのコマンド処理資源に対する割合を示す。テーブルT6に登録されている全てのホスト20の割合を合計すると、100%または100%近傍の値となる(Q(0)+Q(1)+Q(2)...)。即ち、特定のホスト20に割り当てられるコマンド処理資源の量は、全コマンド処理資源にその特定のホスト20に設定されている割合を乗じた値となる。管理者は、例えば、各ホスト20の業務の優先順位や業務終了時間等を考慮して、テーブルT6に優先順位(分配割合)を設定する。
図20は、一つの通信ポート101を共用する各ホスト20にコマンド処理資源を分配するための処理を示すフローチャートである。本処理は、記憶制御装置10によって各通信ポート101に接続された各ホスト20毎にそれぞれ実行される。
記憶制御装置10は、資源分配対象のホスト20が接続されている通信ポート101に優先順位が設定されているか否かを判定する(S91)。そのホスト20が接続された通信ポート101に優先順位が設定されている場合(S91:YES)、記憶制御装置10は、そのホスト20のホスト識別情報(iSCSI_Name)を取得する(S92)。
記憶制御装置10は、ホスト20から取得したホスト識別情報がテーブルT6に登録されているか否か、つまり、そのホスト20に優先順位が設定されているか否かを判定する(S93)。そのホスト20に優先順位が設定されている場合(S93:YES)、記憶制御装置10は、テーブルT6に設定されている優先順位に基づいて、そのホスト20に割り当てるコマンド処理資源の量M2を算出する(S94)。
このように構成される本実施例も前記第1実施例と同様の効果を奏する。これに加えて、本実施例では、各ホスト20に優先順位を割り当てることができるため、例えば、各ホスト20で実行される業務の優先度等に基づいて、適切にコマンド処理資源を分配することができる。従って、記憶制御装置10側において、業務の優先度等に応じて各ホスト20から発行されるコマンドの多重数を制御することができ、使い勝手が向上する。
なお、本発明は、上述した実施の形態に限定されない。当業者であれば、本発明の範囲内で、種々の追加や変更等を行うことができる。
本発明の実施形態の概念を示す説明図である。 ストレージシステムの全体構成を示すブロック図である。 記憶制御装置のハードウェア構造を示す説明図である。 ポート単位でコマンド処理資源を管理するためのテーブルを示す説明図である。 ポート単位で管理されるコマンド処理資源の残存量を管理するためのテーブルを示す説明図である。 ポート単位で実行されているコマンドの数を管理するためのテーブルを示す説明図である。 各ポートに接続されているホストを管理するためのテーブルを示す説明図である。 各ポートに接続されているホストのうちコマンドを発行しているホストの数を管理するためのテーブルを示す説明図である。 記憶制御装置がホストからコマンドを受領した場合の処理を示すフローチャートである。 記憶制御装置からホストに応答する場合の処理を示すフローチャートである。 コマンド処理資源の割当量を制御するための閾値を設定する処理を示すフローチャートである。 各ホストにコマンド処理資源を追加する場合の確保数及び各ホストに割当済みのコマンド処理資源を取り戻す場合の戻し数をそれぞれ設定するための処理を示すフローチャートである。 第2実施例に係る記憶制御装置がホストからコマンドを受領して実行する様子を示す説明図である。 記憶制御装置で実行中のコマンド数の変化を示す説明図である。 ホストから発行されるコマンドの数の変化を予測するための処理を示すフローチャートである。 第3実施例に係る記憶制御装置がホストからコマンドを受領して実行する様子を示す説明図である。 ホストからのコマンドが一時的途絶えた場合でも、所定時間が経過するまでの間は、割当済みのコマンド処理資源を維持するための処理を示すフローチャートである。 ホストからのコマンド発行状態を定期的に監視するための処理を示すフローチャートである。 ポート単位でホストの優先順位を管理するためのテーブルを示す説明図である。 優先順位に従ってホストにコマンド処理資源を分配する処理を示す説明図である。
符号の説明
1…記憶制御装置、1A…通信ポート、1B…コマンド実行部、1C…記憶デバイス、1D…通知部、1E…資源割当制御部、1E1…資源確保機能、1E2…資源戻し機能、1E3…残存量判定機能、1E4…遅延時間判定機能、1E5…優先順位管理機能、1F…ポート共通資源、2…ホスト、10…記憶制御装置、20…ホスト、30…スイッチ、100…コントローラ、101A,101B…通信ポート、110…ホスト側転送回路、120…ドライブ側転送回路、130…キャッシュメモリ、140…プロセッサ、150A,150B…制御テーブル、200…記憶部、210…記憶デバイス、220…RAIDグループ、230…論理ボリューム、PR…コマンド処理資源、T1…ポート単位コマンド処理管理テーブル、T2…ポート単位コマンド処理管理資源残数テーブル、T3…ポート単位実行コマンド数テーブル、T3…実行コマンド数テーブル、T4…コネクション管理テーブル、T41…実行コマンド数履歴テーブル、T5…ポート単位実行コネクション数テーブル、T6…優先順位管理テーブル

Claims (17)

  1. それぞれコマンドを発行する複数の上位装置に接続することができる記憶制御装置であって、
    前記各上位装置と通信を行うための複数の通信ポートと、
    前記各上位装置から前記通信ポートを介して受信したコマンドをそれぞれ処理し、その処理結果を前記各上位装置にそれぞれ送信する制御部と、を備え、
    前記制御部は、
    (1)前記複数の上位装置のうち第1の上位装置から第1のコマンドを受領した場合、前記各通信ポートに用意されるポート共通資源の中から、前記コマンドを処理するためのコマンド処理資源を確保して、前記第1の上位装置に割り当て、
    (2)この割り当てられた前記コマンド処理資源の量に基づいて、前記第1の上位装置から受領可能なコマンド数を示す受領可能数を前記第1のコマンドの処理結果と共に前記第1の上位装置に通知する、
    憶制御装置。
  2. 前記各上位装置と前記各通信ポートとの間の通信遅延時間に基づいて、前記各上位装置毎に割り当てられた前記コマンド処理資源の量をそれぞれ制御する、
    請求項1に記載の記憶制御装置。
  3. 前記制御部は、前記各上位装置が前記コマンドをそれぞれ多重発行できるように、前記各上位装置に前記コマンド処理資源をそれぞれ割り当てるようになっている請求項1に記載の記憶制御装置。
  4. 前記制御部は、前記各上位装置のうち前記コマンドを実行している各上位装置間で、前記ポート共通資源の前記コマンド処理資源を略均等に割り当てる請求項1に記載の記憶制御装置。
  5. 前記制御部は、前記各上位装置から発行される前記コマンドの数が所定値以下に低下した場合でも、前記通信遅延時間が予め設定された所定の応答時間に達するまでの間は、前記各上位装置に割り当てられた前記コマンド処理資源を維持する請求項に記載の記憶制御装置。
  6. 前記制御部は、予め設定された優先順位に基づいて、前記ポート共通資源を前記各上位装置間で分配する請求項1に記載の記憶制御装置。
  7. 前記制御部は、前記ポート共通資源の残存量が予め設定された所定値以下になった場合に、前記各上位装置に割り当てられている前記コマンド処理資源の一部を前記ポート共通資源に戻す請求項1に記載の記憶制御装置。
  8. 前記制御部は、前記第1の上位装置で実行される前記第1のコマンドの数が所定値まで低下した場合に、前記第1の上位装置に割り当てられているコマンド処理資源を全て前記ポート共通資源に戻す請求項1に記載の記憶制御装置。
  9. 前記制御部は、前記各上位装置にそれぞれ通知される前記受領可能数の合計が前記ポート共通資源の最大量を超えた場合に、前記各上位装置に割り当てられている前記コマンド処理資源の一部を前記ポート共通資源に戻すことにより、前記各上位装置に改めて通知する前記受領可能数を低下させる請求項1に記載の記憶制御装置。
  10. 前記制御部は、前記ポート共通資源の残存量が予め設定された所定値以下になった場合に、前記コマンド処理資源が前記各上位装置に略均等に割り当てられるように、前記各上位装置に割り当てられている前記コマンド処理資源の一部を前記ポート共通資源に戻す請求項1に記載の記憶制御装置。
  11. 前記制御部は、前記第1の上位装置から発行される前記第1のコマンドの数の減少に応じて、前記第1の上位装置に割り当てる前記コマンド処理資源を前記ポート共通資源に戻す請求項1に記載の記憶制御装置。
  12. 前記制御部は、前記第1の上位装置から発行される前記第1のコマンドの数の状態変化を監視し、前記コマンド数が定常状態から減少状態に移行した場合には、前記第1の上位装置に割り当てられている前記コマンド処理資源の全部を前記ポート共通資源に戻す請求項1に記載の記憶制御装置。
  13. 前記制御部は、前記第1の上位装置から前記第1のコマンドを受領した場合、前記ポート共通資源の残存量が予め設定された所定の閾値を超えるか否かを判定し、前記残存量が前記閾値を超えると判定したときは、前記第1の上位装置に割り当てる前記コマンド処理資源を増加させ、前記残存量が前記閾値以下であると判定したときは、前記第1の上位装置に割り当てる前記コマンド処理資源を減少させる請求項1に記載の記憶制御装置。
  14. 前記各上位装置は、コマンドの発行順序を識別するための連続番号を前記コマンドに対応付けて前記コマンドを発行し、
    前記制御部は、前記第1の上位装置から受信した前記第1のコマンドの処理結果を前記第1の上位装置に応答する場合に、前記第1の上位装置に割り当てられている前記コマンド処理資源の量を前記連続番号に加算して前記受領可能数を算出する請求項1に記載の記憶制御装置。
  15. 前記各通信ポートは、iSCSIプロトコルを用いて、前記各上位装置との間で通信を行う請求項1に記載の記憶制御装置。
  16. それぞれコマンドを発行する複数の上位装置にiSCSIプロトコルを介してそれぞれ接続される複数の通信ポートと、
    前記各通信ポートを介して前記各上位装置と通信を行う上位通信部と、
    記憶デバイスと通信を行う下位通信部と、
    前記上位通信部及び前記下位通信部により使用されるキャッシュメモリと、
    前記コマンドを処理するためのコマンド処理資源を管理するための制御情報を記憶する制御メモリと、
    前記上位通信部、前記下位通信部、前記キャッシュメモリ及び前記制御メモリにそれぞれ接続され、前記各上位装置から前記通信ポートを介して前記上位通信部が受信した前記コマンドをそれぞれ処理し、その処理結果を前記上位通信部から前記通信ポートを介して前記各上位装置に通知する制御部と、を備え、
    前記制御部は、
    (1)前記各通信ポートを共用する各上位装置のうち前記コマンドを実行している所定の各上位装置間で略均等にとなるように、前記各通信ポートにそれぞれ用意されているポート共通資源内の前記コマンド処理資源を、前記所定の上位装置から前記コマンドを受領した場合に、前記各所定の上位装置にそれぞれ複数ずつ割り当て、
    (2)前記各所定の上位装置に割り当てられた前記コマンド処理資源の量に、前記各所定の上位装置から通知されたコマンド発行順序を示すための連続番号を加算することにより、前記各所定の上位装置から受領可能なコマンド数を示す受領可能数をそれぞれ算出し、この算出された受領可能数を、前記コマンドの処理結果と共に前記各所定の上位装置にそれぞれ通知し、
    (3)前記各所定の上位装置から発行される前記コマンドの数の減少に応じて、前記各所定の上位装置に割り当てる前記コマンド処理資源を前記ポート共通資源に戻すようになっている記憶制御装置。
  17. 記憶制御装置で実行させるコマンド数を制御するための方法であって
    前記記憶制御装置の通信ポートを使用する上位装置がコマンドを多重発行できるように、前記上位装置から前記コマンドを受領した場合、前記各通信ポートに用意されるポート共通資源の中から、前記コマンドを処理するためのコマンド処理資源を確保して、前記上位装置に割り当てるステップと、
    前記上位装置からコマンド及び該コマンドの順序を示す連続番号をそれぞれ受領するステップと、
    前記連続番号を記憶するステップと、
    前記上位装置に割り当てられている前記コマンド処理資源に空きがあるか否かを判定するステップと、
    前記コマンド処理資源に空きがない場合、前記上位装置に処理不能である旨を通知するステップと、
    前記コマンド処理資源に空きがある場合、この空いているコマンド処理資源を用いて、前記受領したコマンドを処理するステップと、
    前記ポート共通資源の残存量と所定の閾値とを比較するステップと、
    前記ポート共通資源の残存量が前記所定の閾値を上回っている場合には、前記ポート共通資源の残存量から第1所定量のコマンド処理資源を確保して前記上位装置に割り当てることにより、前記上位装置に割り当てられるコマンド処理資源の量を増大させるステップと、
    前記ポート共通資源の残存量が前記所定の閾値以下の場合には、前記上位装置に割当済みの前記コマンド処理資源のうち第2所定量のコマンド処理資源を前記ポート共通資源に戻すことにより、前記上位装置に割り当てられるコマンド処理資源の量を減少させるステップと、
    前記上位装置に割り当てられているコマンド処理資源の量と前記受領した連続番号とに基づいて、前記上位装置から受領可能なコマンド数を示す受領可能数を算出するステップと、
    前記算出された受領可能数及び前記受領したコマンドの処理結果を前記上位装置に送信させるステップと、
    をそれぞれ実行する記憶制御装置のコマンド実行数制御方法。
JP2006152675A 2006-05-31 2006-05-31 記憶制御装置及び記憶制御装置のコマンド実行数制御方法 Expired - Fee Related JP4901310B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006152675A JP4901310B2 (ja) 2006-05-31 2006-05-31 記憶制御装置及び記憶制御装置のコマンド実行数制御方法
US11/495,755 US7685342B2 (en) 2006-05-31 2006-07-31 Storage control apparatus and method for controlling number of commands executed in storage control apparatus
EP06255784A EP1862893A3 (en) 2006-05-31 2006-11-10 Storage control apparatus and method for controlling the number of commands executed in storage control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006152675A JP4901310B2 (ja) 2006-05-31 2006-05-31 記憶制御装置及び記憶制御装置のコマンド実行数制御方法

Publications (3)

Publication Number Publication Date
JP2007323356A JP2007323356A (ja) 2007-12-13
JP2007323356A5 JP2007323356A5 (ja) 2009-06-04
JP4901310B2 true JP4901310B2 (ja) 2012-03-21

Family

ID=38457564

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006152675A Expired - Fee Related JP4901310B2 (ja) 2006-05-31 2006-05-31 記憶制御装置及び記憶制御装置のコマンド実行数制御方法

Country Status (3)

Country Link
US (1) US7685342B2 (ja)
EP (1) EP1862893A3 (ja)
JP (1) JP4901310B2 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8051419B2 (en) * 2007-02-26 2011-11-01 Inventec Corporation Method of dynamically adjusting number of task request
JP5256744B2 (ja) * 2008-01-16 2013-08-07 日本電気株式会社 資源割当てシステム、資源割当て方法及びプログラム
JP2009217475A (ja) * 2008-03-10 2009-09-24 Fujitsu Ltd ストレージシステム,ストレージ装置,ストレージシステムの制御方法および制御プログラム
JP4701267B2 (ja) * 2008-06-04 2011-06-15 株式会社日立製作所 ストレージシステムおよびその管理方法
JP4654273B2 (ja) * 2008-07-14 2011-03-16 富士通株式会社 ストレージ装置および制御装置
JP5147584B2 (ja) 2008-07-23 2013-02-20 株式会社日立製作所 ストレージサブシステム及びコントローラによるコマンド実行方法
US20100030931A1 (en) * 2008-08-04 2010-02-04 Sridhar Balasubramanian Scheduling proportional storage share for storage systems
US8090750B2 (en) * 2008-12-30 2012-01-03 International Business Machines Corporation Prompting of an end user with commands
WO2010076603A1 (en) * 2008-12-30 2010-07-08 Nokia Corporation Methods, apparatuses, and computer program products for facilitating randomized port allocation
JP2010211428A (ja) * 2009-03-10 2010-09-24 Fujitsu Ltd ストレージ装置、中継装置、及びコマンド発行制御方法
US8176289B2 (en) * 2009-05-21 2012-05-08 Red Hat Israel, Ltd. Method to support sparse volumes or thin provisioned volumes in real time
FR2954539B1 (fr) * 2009-12-23 2014-08-29 Thales Sa Procede et dispositif de detection de transferts errones pour microcontroleur ou microprocesseur en vue de garantir le partitionnement.
US8688825B1 (en) * 2010-09-22 2014-04-01 Amdocs Software Systems Limited System, method, and computer program for managing distribution of a finite amount of resources
US8799534B2 (en) * 2011-12-27 2014-08-05 Hitachi, Ltd. Storage apparatus and method for controlling same
JP5923977B2 (ja) 2011-12-27 2016-05-25 富士通株式会社 ストレージシステム、コントローラモジュールおよびストレージシステムの制御方法
US8838871B2 (en) * 2012-04-09 2014-09-16 Dell Products L.P. Methods and systems for virtualization of storage services in an integrated chassis
US9122401B2 (en) * 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
TWI545588B (zh) * 2013-02-06 2016-08-11 群聯電子股份有限公司 控制方法、連接器與記憶體儲存裝置
CN103530131A (zh) * 2013-10-28 2014-01-22 曙光信息产业(北京)有限公司 Gaussian的计算任务的实现方法和装置
US10747445B2 (en) * 2015-09-22 2020-08-18 Toshiba Memory Corporation Memory system that selects data to be transmitted from a data buffer through a port
US9934184B1 (en) * 2015-09-25 2018-04-03 Amazon Technologies, Inc. Distributed ordering system
CN105511882A (zh) * 2015-12-11 2016-04-20 曙光信息产业(北京)有限公司 Cpmd的任务实现方法和装置
US10255210B1 (en) 2016-03-01 2019-04-09 Amazon Technologies, Inc. Adjusting order of execution of a target device
KR102450514B1 (ko) 2017-09-19 2022-10-05 삼성전자주식회사 메모리 컨트롤러의 동작 방법 및 그것을 포함하는 저장 장치의 동작 방법
DE102018120347A1 (de) * 2018-08-21 2020-02-27 Pilz Gmbh & Co. Kg Automatisierungssystem zur Überwachung eines sicherheitskritischen Prozesses
CN110221780B (zh) * 2019-05-30 2022-09-27 合肥沛睿微电子股份有限公司 存储器控制器、存储器控制方法、以及电脑系统
KR20210074876A (ko) 2019-12-12 2021-06-22 삼성전자주식회사 호스트 장치와 인터페이스를 수행하는 스토리지 장치 및 이의 동작 방법

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0676699B1 (en) * 1994-04-04 2001-07-04 Hyundai Electronics America Method of managing resources shared by multiple processing units
JP2972583B2 (ja) * 1996-07-29 1999-11-08 四国日本電気ソフトウェア株式会社 Scsi・tcq制御方式
JPH11212900A (ja) * 1998-01-22 1999-08-06 Fujitsu Ltd システム制御装置
US6260120B1 (en) * 1998-06-29 2001-07-10 Emc Corporation Storage mapping and partitioning among multiple host processors in the presence of login state changes and host controller replacement
US6311257B1 (en) * 1999-04-13 2001-10-30 Emc Corporation Method and system for allocating memory for a command queue
JP3853540B2 (ja) * 1999-06-30 2006-12-06 日本電気株式会社 ファイバチャネル接続磁気ディスク装置およびファイバチャネル接続磁気ディスク制御装置
US6343324B1 (en) * 1999-09-13 2002-01-29 International Business Machines Corporation Method and system for controlling access share storage devices in a network environment by configuring host-to-volume mapping data structures in the controller memory for granting and denying access to the devices
US7225242B2 (en) 2001-01-26 2007-05-29 Dell Products L.P. System and method for matching storage device queue depth to server command queue depth
US7421502B2 (en) * 2002-12-06 2008-09-02 International Business Machines Corporation Method and system for storage-aware flow resource management
JP4318914B2 (ja) * 2002-12-26 2009-08-26 富士通株式会社 ストレージシステム及びその動的負荷管理方法
JP4175185B2 (ja) * 2003-06-06 2008-11-05 日本電気株式会社 ネットワーク情報記録装置
US7516244B2 (en) * 2003-07-02 2009-04-07 Caterpillar Inc. Systems and methods for providing server operations in a work machine
US20050002354A1 (en) * 2003-07-02 2005-01-06 Kelly Thomas J. Systems and methods for providing network communications between work machines
US7532640B2 (en) * 2003-07-02 2009-05-12 Caterpillar Inc. Systems and methods for performing protocol conversions in a machine
US20050005167A1 (en) * 2003-07-02 2005-01-06 Kelly Thomas J. Systems and methods for providing security operations in a work machine
US7983820B2 (en) * 2003-07-02 2011-07-19 Caterpillar Inc. Systems and methods for providing proxy control functions in a work machine
US20050165938A1 (en) * 2003-12-24 2005-07-28 Linden Cornett Method, system, and program for managing shared resources
JP2005275829A (ja) * 2004-03-25 2005-10-06 Hitachi Ltd ストレージシステム
JP4568021B2 (ja) * 2004-04-05 2010-10-27 株式会社日立製作所 コマンド多重数監視制御方式を運用するコンピュータシステム

Also Published As

Publication number Publication date
EP1862893A2 (en) 2007-12-05
EP1862893A3 (en) 2009-11-18
JP2007323356A (ja) 2007-12-13
US7685342B2 (en) 2010-03-23
US20080005490A1 (en) 2008-01-03

Similar Documents

Publication Publication Date Title
JP4901310B2 (ja) 記憶制御装置及び記憶制御装置のコマンド実行数制御方法
US10387202B2 (en) Quality of service implementation in a networked storage system with hierarchical schedulers
US8060775B1 (en) Method and apparatus for providing dynamic multi-pathing (DMP) for an asymmetric logical unit access (ALUA) based storage system
JP5903873B2 (ja) ストレージ装置、ストレージ装置の制御方法及びストレージ装置制御プログラム
US11137940B2 (en) Storage system and control method thereof
US8793443B2 (en) Methods and structure for improved buffer allocation in a storage controller
US9348724B2 (en) Method and apparatus for maintaining a workload service level on a converged platform
US10394606B2 (en) Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy
US9396027B2 (en) Resource allocation for a plurality of resources for a dual activity system
CN104657316A (zh) 服务器
US9461944B2 (en) Dynamic resource allocation for distributed cluster-storage network
JP6340439B2 (ja) ストレージシステム
US9513837B2 (en) Performance assist storage volumes
US20120185749A1 (en) Storage apparatus and response time control method
WO2017167106A1 (zh) 存储系统
US8904122B2 (en) Self-adjusting SCSI storage port queue
US10423357B2 (en) Devices and methods for managing memory buffers
US9037772B2 (en) Host based zone configuration
US10983580B2 (en) Computer system and electric power control method for computer system
US20210191623A1 (en) Storage system
WO2017036245A1 (zh) 一种存储阵列操作方法和装置
US11232036B2 (en) Managing write access to data storage devices for spontaneous de-staging of cache
US10536565B2 (en) Efficient centralized stream initiation and retry control
US20240152277A1 (en) Proactive Traffic Shaping with Service Levels

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090416

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090416

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110906

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111031

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111227

R150 Certificate of patent or registration of utility model

Ref document number: 4901310

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20150113

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees