JP2023015488A - データ中継装置、中継制御方法およびストレージシステム - Google Patents
データ中継装置、中継制御方法およびストレージシステム Download PDFInfo
- Publication number
- JP2023015488A JP2023015488A JP2021119292A JP2021119292A JP2023015488A JP 2023015488 A JP2023015488 A JP 2023015488A JP 2021119292 A JP2021119292 A JP 2021119292A JP 2021119292 A JP2021119292 A JP 2021119292A JP 2023015488 A JP2023015488 A JP 2023015488A
- Authority
- JP
- Japan
- Prior art keywords
- command
- commands
- storage device
- storage
- upper limit
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 30
- 230000004044 response Effects 0.000 claims abstract description 42
- 230000005540 biological transmission Effects 0.000 claims abstract description 40
- 230000006866 deterioration Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 8
- 230000015654 memory Effects 0.000 description 6
- 230000006399 behavior Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】過大な数のコマンド発行によるI/O性能の低下を抑制する。【解決手段】データ中継装置20は、記憶装置11~13のいずれかに送信され、かつ、応答が返信されていないI/Oコマンドの数を示すコマンド数を、記憶装置ごとに計数し、例えば記憶装置11からI/Oコマンドの送信のリトライが要求されると、記憶装置11に対応するコマンド数の計数値から1減算した数を、記憶装置11に対応するコマンド上限数として記憶部21に登録する。データ中継装置20は、例えば制御装置1から記憶装置11に対するI/Oコマンドを受信したとき、その受信直前における記憶装置11に対応するコマンド数の計数値が記憶装置11に対応するコマンド上限数に達している場合には、受信したI/Oコマンドを破棄し、そのI/Oコマンドの送信のリトライを制御装置1に要求する。【選択図】図1
Description
本発明は、データ中継装置、中継制御方法およびストレージシステムに関する。
ストレージシステムにおいて、記憶装置は一般的に、受信したI/Oコマンドを、応答を返信するまで一時的に保持するコマンドキューを備えている。記憶装置にアクセスする制御装置は、記憶装置が備えるコマンドキューのエントリ数を上限として、I/Oコマンドを同時に(すなわち、応答を待たずに並列に)送信できる。このような処理により、記憶装置のI/O性能を向上させることができる。
また、ストレージシステムにおけるI/O(Input/Output)制御技術の例として、以下のような提案がある。例えば、ストレージ装置にアクセスするコントローラにおいて、システム負荷を管理し、システム負荷が所定の閾値を超えた場合、ホストから依頼されたI/O要求の受け付けを抑止するようにしたストレージシステムが提案されている。また、記憶デバイスへのアクセスコマンドを保持するコマンドキューを備え、コマンドキューに保持されているアクセスコマンドの分析結果に基づき、記憶デバイスへの書き込みを禁止すべきかを判断し、書き込み禁止の場合、ホストからのアクセス要求に対してエラー応答を返すストレージ装置も提案されている。
ところで、制御装置が記憶装置に対して同時に送信可能なI/Oコマンドの最大数が、記憶装置が備えるコマンドキューのエントリ数より大きい場合、システム全体としてのI/O性能は記憶装置のI/O性能以下に制限される。また、このようなケースでは、例えば、制御装置から送信されたI/Oコマンドがコマンドキューからあふれた場合、記憶装置からコマンド送信のリトライ要求が頻繁に返信され、それに伴ってシステム全体の挙動が不安定になりやすくなる。その結果、システム全体としてのI/O性能が記憶装置の最大性能より低下してしまう可能性もある。
1つの側面では、本発明は、過大な数のコマンド発行によるI/O性能の低下を抑制可能なデータ中継装置、中継制御方法およびストレージシステムを提供することを目的とする。
1つの案では、記憶部、中継部および制御部を有する次のようなデータ中継装置が提供される。このデータ中継装置において、記憶部には、複数の記憶装置のそれぞれについて、送信可能なI/Oコマンドの上限数を示すコマンド上限数が登録される。中継部は、1以上の制御装置と複数の記憶装置との間で送受信されるデータを中継する。制御部は、1以上の制御装置のいずれかから中継部を介して複数の記憶装置のいずれかに送信され、かつ、複数の記憶装置のうち送信先の記憶装置から応答が返信されていないI/Oコマンドの数を示すコマンド数を、複数の記憶装置のそれぞれについて計数し、複数の記憶装置のうち一の記憶装置から、I/Oコマンドの送信のリトライが要求されると、一の記憶装置に対応するコマンド数の計数値から1減算した数を、一の記憶装置に対応するコマンド上限数として記憶部に登録し、中継部が1以上の制御装置のうち一の制御装置から一の記憶装置に対するI/Oコマンドを受信したとき、その受信直前における一の記憶装置に対応するコマンド数の計数値が一の記憶装置に対応するコマンド上限数に達している場合には、受信したI/Oコマンドを破棄するとともに、受信したI/Oコマンドの送信のリトライを一の制御装置に要求する。
また、1つの案では、上記のデータ中継装置と同様の処理が実行される中継制御方法が提供される。
さらに、1つの案では、上記のデータ中継装置、1以上の制御装置および複数の記憶装置を有するストレージシステムが提供される。
さらに、1つの案では、上記のデータ中継装置、1以上の制御装置および複数の記憶装置を有するストレージシステムが提供される。
1つの側面では、過大な数のコマンド発行によるI/O性能の低下を抑制できる。
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、1以上の制御装置と、複数の記憶装置と、データ中継装置20とを有する。図1では、1以上の制御装置として3台の制御装置1~3が例示され、複数の記憶装置として3台の記憶装置11(#1),12(#2),13(#3)が例示されている。
〔第1の実施の形態〕
図1は、第1の実施の形態に係るストレージシステムの構成例および処理例を示す図である。図1に示すストレージシステムは、1以上の制御装置と、複数の記憶装置と、データ中継装置20とを有する。図1では、1以上の制御装置として3台の制御装置1~3が例示され、複数の記憶装置として3台の記憶装置11(#1),12(#2),13(#3)が例示されている。
制御装置1~3は、データ中継装置20を介して記憶装置11~13にアクセスする。記憶装置11~13のそれぞれに対して、制御装置1~3のうち2台以上の制御装置がアクセスする場合もある。制御装置1~3は、例えば、サーバなどのコンピュータ装置や、コンピュータ装置に搭載される通信インタフェース回路である。
記憶装置11~13は、制御装置1~3からのアクセス対象となる記憶装置であり、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)などの不揮発性記憶装置として実現される。記憶装置11~13のそれぞれは、受信したI/Oコマンドを、その応答を返信するまで一時的に保持するコマンドキューを備える。コマンドキューは、複数のエントリを含んでいる。
データ中継装置20は、図示しない中継部(例えば、ポートマルチプレクサ)を有し、この中継部の動作によって、制御装置1~3と記憶装置11~13との間で送受信されるデータを中継する。例えば、この中継部は、制御装置1~3のいずれかから送信されたI/Oコマンドを、その宛先が示す記憶装置に転送する。データ中継装置20は、例えば、SAS(Serial Attached SCSI,SCSI:Small Computer System Interface)エクスパンダ、PCIe(Peripheral Component Interconnect express)スイッチ、FC-AL(Fibre Channel Arbitrated Loop)ハブなどとして実現される。
このデータ中継装置20は、記憶部21と制御部22を備える。
記憶部21は、RAM(Random Access Memory)などの記憶装置の記憶領域として実現される。記憶部21には、記憶装置11~13のそれぞれについて、記憶装置の識別番号と、コマンド上限数とが対応付けて登録される。コマンド上限数は、対応する記憶装置に対して送信可能なI/Oコマンドの上限数を示す。図1では例として、記憶装置11~13のそれぞれの識別番号とコマンド上限数とが、記憶部21に記憶された管理情報23に登録される。
記憶部21は、RAM(Random Access Memory)などの記憶装置の記憶領域として実現される。記憶部21には、記憶装置11~13のそれぞれについて、記憶装置の識別番号と、コマンド上限数とが対応付けて登録される。コマンド上限数は、対応する記憶装置に対して送信可能なI/Oコマンドの上限数を示す。図1では例として、記憶装置11~13のそれぞれの識別番号とコマンド上限数とが、記憶部21に記憶された管理情報23に登録される。
制御部22は、例えば、プロセッサや、プロセッサを備えるコントローラ回路として実現される。制御部22は、次のような処理を実行する。
制御部22は、制御装置1~3のいずれかからデータ中継装置20の中継部を介して記憶装置11~13のいずれかに送信され、かつ、送信先の記憶装置から応答が返信されていないI/Oコマンドの数を示すコマンド数を、記憶装置11~13のそれぞれについて計数する。
制御部22は、制御装置1~3のいずれかからデータ中継装置20の中継部を介して記憶装置11~13のいずれかに送信され、かつ、送信先の記憶装置から応答が返信されていないI/Oコマンドの数を示すコマンド数を、記憶装置11~13のそれぞれについて計数する。
また、制御部22は、記憶装置11~13のうちの1つから、I/Oコマンドの送信のリトライが要求されると、その記憶装置に対応するコマンド数の計数値から1減算した数を、その記憶装置に対応するコマンド上限数として管理情報23に登録する。
さらに、制御部22は、データ中継装置20が制御装置1~3の1つから記憶装置11~13の1つに対するI/Oコマンドを受信したとき、管理情報23を参照する。そして、制御部22は、その受信直前におけるコマンド送信先の記憶装置に対応するコマンド数の計数値が、その記憶装置に対応するコマンド上限数に達している場合には、受信したI/Oコマンドを破棄する。これとともに、制御部22は、受信したI/Oコマンドの送信のリトライを、コマンド送信元の制御装置に要求する。
例えば、記憶装置11に対するI/OコマンドC1~C4が順に送信されたとする。I/OコマンドC1は制御装置1から送信され、I/OコマンドC2,C3は制御装置2から送信され、I/OコマンドC4は制御装置3から送信されたとする。データ中継装置20がI/OコマンドC1~C4を順に受信して記憶装置11に転送していくと、制御部22による記憶装置11についてのカウント値の計数値は1,2,3,4と変化する。ただし、I/OコマンドC4を受信した時点で、他のI/OコマンドC1~C3の応答は返信されていないものとする。
ここで、記憶装置11から、I/OコマンドC4に対する応答として、コマンド送信のリトライを要求するリトライ要求C4aが返信されたとする。この場合、制御部22は、記憶装置11についての現在のカウント値「4」から1を減算した値「3」を、記憶装置11(#1)に対応するコマンド上限数として管理情報23に登録する。
その後、記憶装置11に対するI/OコマンドC11~C14が順に送信されたとする。I/OコマンドC11,C12は制御装置1から送信され、I/OコマンドC13は制御装置2から送信され、I/OコマンドC14は制御装置3から送信されたとする。データ中継装置20がI/OコマンドC11~C13を順に受信して記憶装置11に転送していったとき、制御部22による記憶装置11についてのカウント値の計数値は1,2,3と変化したとする。
そして、制御部22は、制御装置3からI/OコマンドC14を受信したとき、管理情報23を参照して記憶装置11に対応するコマンド上限数を読み込む。このコマンド上限数は「3」であるので、I/OコマンドC14の受信直前における記憶装置11についてのカウント値の計数値「3」はコマンド上限数に達している。この場合、制御部22は、受信したI/OコマンドC14を破棄し、I/OコマンドC14の送信のリトライをコマンド送信元の制御装置3に要求する。
以上の処理において、管理情報23に登録されるコマンド上限数は、対応する記憶装置が備えるコマンドキューのエントリ数の推定値を示す。そして、データ中継装置20がある記憶装置へのI/Oコマンドを受信したとき、その記憶装置についてのカウント値がその記憶装置に対応するコマンド上限数に達している場合には、記憶装置に対するI/Oコマンドの送信が抑止され、送信元の制御装置にコマンド送信のリトライが要求される。
このようなデータ中継装置20の処理により、記憶装置のコマンドキューからI/Oコマンドがあふれないように、その記憶装置に対するI/Oコマンドの送信数が管理されるようになる。記憶装置では、コマンドキューのエントリ数を超える過大な数のI/Oコマンドを受信することがなくなり、それによって、コマンド送信のリトライを頻繁に要求する等の不安定な挙動を示す可能性がなくなる。したがって、記憶装置に対する過大な数のコマンド送信に起因するI/O性能の低下を抑制できる。
〔第2の実施の形態〕
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、CE(Controller Enclosure)100およびDE(Drive Enclosure)200を含む。CE100には、CM(Controller Module)110,120が搭載されている。DE200には、複数のHDDが搭載されている。
図2は、第2の実施の形態に係るストレージシステムの構成例を示す図である。図2に示すストレージシステムは、CE(Controller Enclosure)100およびDE(Drive Enclosure)200を含む。CE100には、CM(Controller Module)110,120が搭載されている。DE200には、複数のHDDが搭載されている。
CM110,120には、ホスト装置300が接続されている。CM110,120は、ホスト装置300からの要求に応じて、DE200に搭載されたHDDにアクセスするストレージ制御装置である。例えば、CM110,120は、DE200に搭載されたHDDの記憶領域を用いた論理ボリュームを設定し、ホスト装置300から論理ボリュームに対するアクセスを受け付ける。
なお、CM110,120とホスト装置300とは、例えば、ファイバチャネルやiSCSIなどを用いたSAN(Storage Area Network)を介して接続される。また、CM110,120には、複数のホスト装置300が接続されていてもよい。また、DE200が備える、ホスト装置300からのアクセス対象となる記憶装置は、HDDに限らず、SSDなどの他の種類の不揮発性記憶装置であってもよい。
図3は、CMのハードウェア構成例を示す図である。図3では例としてCM110のハードウェア構成について示すが、CM120もCM110と同様のハードウェア構成によって実現可能である。
CM110は、プロセッサ111、RAM112、SSD113、PCH(Platform Controller Hub)114、CA(Channel Adapter)115、IOC(Input Output Controller)116およびSASエクスパンダ(EXP)117を備える。
プロセッサ111は、CM110全体を統括的に制御する。プロセッサ111は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、GPU(Graphics Processing Unit)、PLD(Programmable Logic Device)のいずれかである。また、プロセッサ111は、CPU、MPU、DSP、ASIC、GPU、PLDのうちの2以上の要素の組み合わせであってもよい。
RAM112は、CM110の主記憶装置である。RAM112は、プロセッサ111に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM112は、プロセッサ111による処理に用いる各種データを記憶する。
SSD113は、CM110の補助記憶装置である。SSD113には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、CM110は、補助記憶装置として、SSD113の代わりにHDDを備えていてもよい。PCH114は、プロセッサ111とSSD113との間でデータを送受信する。
CA115は、ホスト装置300と通信するためのインタフェースである。IOC116は、プロセッサ111とDE200内のHDDとの間でデータを送受信するためのインタフェースである。IOC116は、SASイニシエータとして動作するSASインタフェースである。SASエクスパンダ117は、IOC116とDE200との間で送受信されるデータを中継する。また、詳細は後述するが、IOC116とSASエクスパンダ117は、他方のCM120にも接続されている。
図4は、DEの内部構成例を示す図である。なお、図4では、CM110,120、DE200の間の接続状態についても図示している。
図4に示すように、DE200は、HDD201,202,203,・・・とSASエクスパンダ211,212を備える。
図4に示すように、DE200は、HDD201,202,203,・・・とSASエクスパンダ211,212を備える。
HDD201,202,203,・・・は、図1に示した記憶装置11~13の一例であり、ホスト装置300からのアクセス対象となる記憶装置である。HDD201,202,203,・・・のそれぞれは、SASエクスパンダ211,212の両方に接続されている。SASエクスパンダ211は、CM110のSASエクスパンダ117とHDD201,202,203,・・・との間で送受信されるデータを中継する。一方、SASエクスパンダ212は、CM120のSASエクスパンダ127とHDD201,202,203,・・・との間で送受信されるデータを中継する。
次に、図4を用いて、IOCからDE200内のHDDに対するアクセス経路について説明する。
CM110のIOC116と、DE200内の各HDDとの間のアクセス経路は、2系統設けられている。具体的には、IOC116からDE200のHDD201,202,203,・・・に対するアクセス経路としては、SASエクスパンダ117,211を経由する経路と、SASエクスパンダ127,212を経由する経路とがある。
CM110のIOC116と、DE200内の各HDDとの間のアクセス経路は、2系統設けられている。具体的には、IOC116からDE200のHDD201,202,203,・・・に対するアクセス経路としては、SASエクスパンダ117,211を経由する経路と、SASエクスパンダ127,212を経由する経路とがある。
同様に、CM120のIOC126と、DE200内の各HDDとの間のアクセス経路も、2系統設けられている。具体的には、IOC126からDE200のHDD201,202,203,・・・に対するアクセス経路としては、SASエクスパンダ127,212を経由する経路と、SASエクスパンダ117,211を経由する経路とがある。
このように、IOC116,126から各HDDに対するアクセス経路は冗長化されている。これにより、IOC116,126は、一方のアクセス経路を用いてHDDにアクセスできない場合に、他方のアクセス経路を用いてHDDへのアクセスを試みることが可能になる。
本実施の形態では、IOC116から各HDDに対するアクセス経路のうち、SASエクスパンダ117を経由する経路が通常時に使用されるアクセス経路であるものとする。また、SASエクスパンダ127を経由する経路は、SASエクスパンダ117を経由する経路が使用できない場合に予備的に使用されるアクセス経路であるものとする。
ところで、記憶装置にI/Oコマンドを発行するIOCの高性能化が進んでおり、それに伴って、記憶装置が受信したI/Oコマンドを一時的に保持するコマンドキューのエントリ数も増加している。記憶装置が備えるコマンドキューのエントリ数が多くなるほど、IOCは送信したI/Oコマンドに対する応答を待つことなく、さらに多くのI/Oコマンドを送信できるようになる。その結果、一定時間内に処理されるI/Oコマンド数が増加し、システム全体としてのI/O性能が向上する。
しかし、実際の製品におけるIOCと記憶装置との組み合わせは様々であるので、場合によっては、IOCの性能と記憶装置が備えるコマンドキューのエントリ数とのバランスが悪くなり、それによってI/O性能の低下を招くことがある。例えば、IOCの性能が高く、IOCが短時間に多くのコマンドを送信できたとしても、記憶装置が備えるコマンドキューのエントリ数が少なければ、システム全体としてのI/O性能は記憶装置側の最大性能以下に抑えられてしまう。それどころか、記憶装置からコマンド送信のリトライ要求が頻繁に送信される等の不安定な挙動が発生しやすくなり、その結果、システム全体としてのI/O性能が記憶装置側の最大性能より低下してしまう可能性もある。
ここで、記憶装置に対して単独のIOCのみからI/Oコマンドが送信される場合、IOCは例えば、送信済みコマンド数と応答時間とに基づいて、記憶装置に対して同時に送信可能な最大コマンド数を推定できる。ここでいう「同時に送信可能な最大コマンド数」とは、記憶装置に対して応答を待たずに送信可能なI/Oコマンドの最大数を指し、これは通常、記憶装置が備えるコマンドキューのエントリ数を示す。このような推定ができれば、IOCは、I/O性能が低下しないようにコマンド送信数を適切に管理できる。
しかしながら、本実施の形態では、DE200内の個々の記憶装置(HDD)に対して、複数のIOC(IOC116,126)からI/Oコマンドが送信される。このような構成の場合、各IOCは上記の方法によって各記憶装置に同時に送信可能な最大コマンド数を推定することができない。このため、IOCは、I/O性能が低下しないようにコマンド送信数を管理することは難しい。
また、例えば、記憶装置に同時に送信可能な最大コマンド数をIOCに固定値で設定した場合には、将来的にそのIOCに対して、その記憶装置よりコマンドキューのエントリ数が多い別の記憶装置が接続されたとしても、最大コマンド数を増やすことができない。このため、コマンドキューのエントリ数が多い記憶装置に最大性能を発揮させることができなくなってしまう。
そこで、本実施の形態では、複数のIOCと各記憶装置との間に存在する中継装置(SASエクスパンダ)に、同時に送信可能な最大コマンド数を記憶装置ごとに推定する機能が搭載される。中継装置は、この最大コマンド数の推定結果に基づき、記憶装置のコマンドキューからI/Oコマンドがあふれないように、IOCから送信されたI/Oコマンドの転送可否を判定する。これにより、記憶装置に対する過大な数のコマンド送信によるI/O性能の低下を抑制する。
本実施の形態では、この最大コマンド数の推定機能が、DE200内のSASエクスパンダ211,212に搭載されるものとする。なお、この場合、SASエクスパンダ211,212は、図1に示したデータ中継装置20の一例であり、IOC116,126は、図1に示した制御装置1~3の一例である。
図5は、DE内のSASエクスパンダの内部構成例を示す図である。図5では例としてSASエクスパンダ211の内部構成について示すが、SASエクスパンダ212もSASエクスパンダ211と同様の内部構成を有する。
SASエクスパンダ211は、ハードウェアとして、ポート221,222,223,224,・・・、スイッチ230、コントローラ240およびメモリ250を備える。
ポート221,222,223,224,・・・は、外部デバイスとの間でデータを送受信する通信ポートである。本実施の形態では例として、ポート221がCM110のSASエクスパンダ117に接続され、ポート222,223,224がそれぞれDE200内のHDD201,202,203に接続されているものとする。
ポート221,222,223,224,・・・は、外部デバイスとの間でデータを送受信する通信ポートである。本実施の形態では例として、ポート221がCM110のSASエクスパンダ117に接続され、ポート222,223,224がそれぞれDE200内のHDD201,202,203に接続されているものとする。
スイッチ230は、コントローラ240による制御の下で、ポート間の接続を切り替え、ポート間で送受信されるデータを中継する。なお、スイッチ230は、図1に示したデータ中継装置20が備える図示しない中継部の一例である。
コントローラ240は、図1に示した制御部22の一例であり、例えばプロセッサを備える制御回路である。コントローラ240は、スイッチ230における接続切り替え動作を制御する。また、コントローラ240は、IOCから受信したI/Oコマンドの転送を抑止したり、I/Oコマンドに対して応答することも可能である。
メモリ250は、図1に示した記憶部21の一例であり、例えばRAMやフラッシュメモリとして実現される。メモリ250には、コントローラ240の処理で利用される各種のデータが記憶される。例えば、メモリ250には、コマンド管理テーブル251が記憶される。
図6は、コマンド管理テーブルのデータ構成例を示す図である。図6に示すように、コマンド管理テーブル251は、ポート番号、コマンド番号、経過時間、コマンド上限数の各項目を含む。
ポート番号は、SASエクスパンダ211が備えるポート221,222,223,224,・・・のうち、HDD201,202,203,・・・に接続されたポートの識別番号を示す。各ポート番号に対して、1つのコマンド上限数が対応付けて登録されるとともに、1つ以上のコマンド番号が登録される。さらに、各コマンド番号には1つの経過時間が対応付けて登録される。
コマンド番号は、対応するポートに接続されたHDDに対して送信済みであり、なおかつ、応答が返信されていないI/Oコマンドの識別番号を示す。該当するI/Oコマンドが発生すると、コマンド番号と経過時間とを含むレコードがコマンド管理テーブル251に登録される。なお、1つのポートに対応付けられたコマンド番号の項目は、そのポートに対応するコマンドキューとしての動作を果たす、ともいえる。
経過時間は、対応するI/OコマンドがHDDに送信されてからの経過時間を示す。経過時間の項目には、初期値として「0」が登録され、時間経過にしたがって登録された値が増加されていく。
コマンド上限数は、対応するポートに接続されたHDDに対して同時に送信可能なI/Oコマンドの上限数を示す。
次に、図5を参照して、SASエクスパンダ211が備える処理機能について説明する。SASエクスパンダ211は、コマンド処理部241とタイマ242を備える。コマンド処理部241とタイマ242は、コントローラ240によって実現される。
次に、図5を参照して、SASエクスパンダ211が備える処理機能について説明する。SASエクスパンダ211は、コマンド処理部241とタイマ242を備える。コマンド処理部241とタイマ242は、コントローラ240によって実現される。
コマンド処理部241は、HDDに転送済みのI/Oコマンドのうち、応答が返信されていないI/Oコマンド(未完了コマンド)の数を、HDDごとに計数する。この計数値は、コマンド管理テーブル251において、該当するHDDに接続するポートに対応付けられたコマンド番号の数によって示される。コマンド処理部241は、あるHDDに送信された未完了コマンドのいずれかについて、少なくとも、そのHDDからコマンド送信のリトライが要求された場合に、そのHDDの未完了コマンド数に基づいてコマンド上限数を決定し、コマンド管理テーブル251に登録する。
コマンド処理部241はそれ以後、そのHDDについての未完了コマンド数がコマンド上限数を超えないように、HDDに転送するI/Oコマンド数を管理する。そして、コマンド処理部241は、コマンド上限数を超えてIOCから受信したI/Oコマンドを破棄し、IOCにコマンド送信のリトライを要求する。
タイマ242は、HDDに転送されたI/Oコマンドのそれぞれについて、転送時からの経過時間を計時し、コマンド管理テーブル251に登録する。コマンド処理部241は、上記のようなHDDからのリトライ要求に加え、経過時間に応じてコマンド上限数を決定することもできる。
図7は、I/O要求受信処理の手順を示すフローチャートの例である。
[ステップS11]SASエクスパンダ211のポート221が、いずれかのIOCから送信されたI/Oコマンドを受信すると、コマンド処理部241がステップS12以降の処理を開始する。なお、I/Oコマンドは、いずれかのHDDに対してI/O処理(書き込み処理または読み出し処理)を要求するためのコマンドである。
[ステップS11]SASエクスパンダ211のポート221が、いずれかのIOCから送信されたI/Oコマンドを受信すると、コマンド処理部241がステップS12以降の処理を開始する。なお、I/Oコマンドは、いずれかのHDDに対してI/O処理(書き込み処理または読み出し処理)を要求するためのコマンドである。
[ステップS12]コマンド処理部241は、コマンド管理テーブル251を参照して、I/Oコマンドの宛先HDDについての未完了コマンド数を計数するとともに、同じ宛先HDDに対応付けられたコマンド上限数を読み込む。未完了コマンド数は、コマンド管理テーブル251において、宛先HDDに接続するポートに対応付けて登録されたコマンド番号の数として計数される。コマンド上限数としては、このポートに対応付けて登録されたコマンド上限数が読み込まれる。
コマンド処理部241は、未完了コマンド数がコマンド上限数より小さいかを判定する。未完了コマンド数がコマンド上限数より小さい場合、処理がステップS13に進められ、未完了コマンド数がコマンド上限数に達している場合、処理がステップS15に進められる。
[ステップS13]コマンド処理部241は、受信したI/Oコマンドを示すコマンド番号を、宛先HDDに接続するポートに対応付けてコマンド管理テーブル251に新規登録する。また、コマンド処理部241は、登録されたコマンド番号に対応する経過時間として初期値「0」を登録し、タイマ242に経過時間のカウントを開始させる。これ以後、タイマ242は、一定時間ごとに経過時間の登録値を増加させていく。
[ステップS14]コマンド処理部241は、スイッチ230を制御して、受信したI/Oコマンドを宛先HDDが接続されたポートを介してそのHDDに転送させる。
[ステップS15]コマンド処理部241は、スイッチ230を制御して、受信したI/Oコマンドの送信先IOCに対して、そのI/Oコマンドの送信のリトライを要求するリトライ要求コマンドを返信させる。
[ステップS15]コマンド処理部241は、スイッチ230を制御して、受信したI/Oコマンドの送信先IOCに対して、そのI/Oコマンドの送信のリトライを要求するリトライ要求コマンドを返信させる。
[ステップS16]コマンド処理部241は、受信したI/Oコマンドを破棄する。
以上の処理によれば、I/Oコマンドの受信時において、未完了コマンド数が宛先HDDに対応するコマンド上限数に達していない場合には、そのI/Oコマンドが宛先HDDに転送される。これとともに、そのI/Oコマンドがコマンド管理テーブル251に登録され、未完了コマンドとして計数される対象になる。
以上の処理によれば、I/Oコマンドの受信時において、未完了コマンド数が宛先HDDに対応するコマンド上限数に達していない場合には、そのI/Oコマンドが宛先HDDに転送される。これとともに、そのI/Oコマンドがコマンド管理テーブル251に登録され、未完了コマンドとして計数される対象になる。
一方、I/Oコマンドの受信時において、未完了コマンド数が宛先HDDに対応するコマンド上限数に達している場合には、そのI/Oコマンドが破棄され、送信元IOCに対してコマンド送信のリトライが要求される。I/Oコマンドの破棄により、未完了コマンド数が、宛先HDDが備えるコマンドキューのエントリ数の予測値(すなわち、コマンド上限数)を超えないように制御される。
図8は、正常応答受信処理の手順を示すフローチャートの例である。
[ステップS21]コマンド処理部241は、HDDに接続されたポートが、送信済みのI/Oコマンドに応じたI/O処理が正常に実行されたことを示す正常応答を受信することを監視する。例えば、I/Oコマンドによってデータの書き込みが要求された場合、正常応答は、書き込みが正常に完了したことを示す。また、I/Oコマンドによってデータの読み出しが要求された場合、正常応答は、読み出しが要求されたデータを返信するための応答情報である。正常応答の受信が検知されると、処理がステップS22に進められる。
[ステップS21]コマンド処理部241は、HDDに接続されたポートが、送信済みのI/Oコマンドに応じたI/O処理が正常に実行されたことを示す正常応答を受信することを監視する。例えば、I/Oコマンドによってデータの書き込みが要求された場合、正常応答は、書き込みが正常に完了したことを示す。また、I/Oコマンドによってデータの読み出しが要求された場合、正常応答は、読み出しが要求されたデータを返信するための応答情報である。正常応答の受信が検知されると、処理がステップS22に進められる。
[ステップS22]コマンド処理部241は、スイッチ230を制御して、受信した正常応答を送信先IOC(対応するI/Oコマンドの送信元IOC)に転送させる。
[ステップS23]コマンド処理部241は、コマンド管理テーブル251から、受信した正常応答に対応するI/Oコマンドに関する情報(コマンド番号および経過時間)を削除する。
[ステップS23]コマンド処理部241は、コマンド管理テーブル251から、受信した正常応答に対応するI/Oコマンドに関する情報(コマンド番号および経過時間)を削除する。
図9は、コマンド上限数の設定処理手順を示すフローチャートの例である。
[ステップS31]タイマ242は、コマンド管理テーブル251に登録された未完了コマンドのそれぞれについて、経過時間が所定の閾値に達したか否かを監視する。経過時間が閾値に達すると、対応する未完了コマンドについてタイムアウトが発生したと判定される。
[ステップS31]タイマ242は、コマンド管理テーブル251に登録された未完了コマンドのそれぞれについて、経過時間が所定の閾値に達したか否かを監視する。経過時間が閾値に達すると、対応する未完了コマンドについてタイムアウトが発生したと判定される。
コマンド処理部241は、未完了コマンドについてタイムアウトが発生したかを判定する。いずれかの未完了コマンドについてタイムアウトが発生した場合、処理がステップS34に進められ、すべての未完了コマンドについてタイムアウトが発生していない場合、処理がステップS32に進められる。
[ステップS32]コマンド処理部241は、HDDに接続されたいずれかのポートが、HDDからコマンド送信のリトライ要求を受信したかを判定する。リトライ要求を受信したと判定されるケースとは、例えば、送信されたI/Oコマンドに対するエラー応答が受信され、そのエラー応答においてコマンド送信のリトライを要求する情報が付加されているケースである。リトライ要求を受信した場合、処理がステップS34に進められ、リトライ要求を受信していない場合、処理がステップS33に進められる。
[ステップS33]コマンド処理部241は、ポート221がIOCからI/Oコマンドの送信をリトライするリトライコマンドを受信したかを判定する。リトライコマンドを受信した場合、処理がステップS34に進められる。一方、リトライコマンドを受信していない場合、処理がステップS31に進められ、ステップS31~S33の判定処理が再度実行される。
[ステップS34]コマンド処理部241は、コマンド上限数の設定対象のHDDを特定する。ステップS31でYesと判定された場合、設定対象のHDDは、タイムアウトが発生したI/Oコマンドの送信先HDDである。ステップS32でYesと判定された場合、設定対象のHDDは、リトライ要求の送信元HDDである。ステップS33でYesと判定された場合、設定対象のHDDは、リトライコマンドの送信先HDDである。
コマンド処理部241は、コマンド管理テーブル251を参照して、特定されたHDDについての未完了コマンド数を計数する。未完了コマンド数は、コマンド管理テーブル251において、該当HDDに接続するポートに対応付けて登録されたコマンド番号の数として計数される。
コマンド処理部241は、計数された未完了コマンド数から「1」を減算した値を、コマンド管理テーブル251において該当HDDに接続するポートに対応付けられたコマンド上限数の項目に、上書きして設定する。
[ステップS35]コマンド処理部241は、ステップS31~S33における発生事象に応じた処理を実行する。
ステップS31でYesと判定された場合、コマンド処理部241は、スイッチ230を制御して、タイムアウトが発生したI/Oコマンドに対する応答情報として、エラーが発生したことを示すエラー応答をコマンド送信元のIOCに返信させる。このエラー応答には、タイムアウトが発生したことを示す情報が付加されていてもよい。また、コマンド処理部241は、コマンド管理テーブル251から、タイムアウトが発生したI/Oコマンドに関する情報(コマンド番号および経過時間)を削除する。
ステップS31でYesと判定された場合、コマンド処理部241は、スイッチ230を制御して、タイムアウトが発生したI/Oコマンドに対する応答情報として、エラーが発生したことを示すエラー応答をコマンド送信元のIOCに返信させる。このエラー応答には、タイムアウトが発生したことを示す情報が付加されていてもよい。また、コマンド処理部241は、コマンド管理テーブル251から、タイムアウトが発生したI/Oコマンドに関する情報(コマンド番号および経過時間)を削除する。
ステップS32でYesと判定された場合、スイッチ230を制御して、リトライが要求されたI/Oコマンドをリトライ要求の送信元HDDに再送信させる。また、コマンド処理部241は、コマンド管理テーブル251において、このI/Oコマンドに対応付けられた経過時間を「0」にリセットする。
ステップS33でYesと判定された場合、コマンド処理部241は、図7の処理におけるI/OコマンドをIOCからのリトライコマンドに置き換えて、図7のステップS12~S16の処理を実行する。
以上の図9の処理では、ステップS32でYesと判定された場合、リトライ要求の送信元HDDにおいて、受信したI/Oコマンドがコマンドキューからあふれる事態が発生したと推定される。このため、このHDDに対してすでに送信済みである未完了コマンドの数が、HDDが備えるコマンドキューのエントリ数と一致すると推定される。したがって、ステップS32でYesと判定された時点での未完了コマンド数が、このHDDに対応するコマンド上限数に決定される。
また、ステップS31,S33でYesと判定された場合、該当するHDDにおいて応答遅延が発生したと推定される。このため、このHDDに対してすでに送信済みである未完了コマンドの数が、HDDが備えるコマンドキューのエントリ数と一致する可能性が高いと推定される。したがって、ステップS31,S33でYesと判定された時点での未完了コマンド数が、このHDDに対応するコマンド上限数に決定される。
次に、ストレージシステムの処理例についてシーケンス図を用いて説明する。
図10は、コマンド上限数が決定される場合の処理例を示すシーケンス図である。図10では例として、HDDからのコマンド送信のリトライ要求に応じてコマンド上限数が決定される場合を示す。
図10は、コマンド上限数が決定される場合の処理例を示すシーケンス図である。図10では例として、HDDからのコマンド送信のリトライ要求に応じてコマンド上限数が決定される場合を示す。
図10の例では、HDD201に対するI/Oコマンド#1~#6が、順に送信される(ステップS41a~S41f)。例として、I/Oコマンド#1~#3はIOC116から送信され、I/Oコマンド#4~#6はIOC126から送信されるものとする。これらのI/Oコマンド#1~#6は、SASエクスパンダ211を介してHDD201に送信される。
ここで、HDD201が備えるコマンドキューのエントリ数は「5」であるとする。HDD201では、受信したI/Oコマンド#1~#5が、それぞれコマンドキューのエントリに登録されて、コマンド内容に応じた処理が実行される。しかし、HDD201は、I/Oコマンド#1~#5に応じた各処理の実行が完了しない状態でI/Oコマンド#6を受信すると、このI/Oコマンド#6を処理できないので、コマンド送信のリトライ要求#6aを返信する(ステップS42)。
SASエクスパンダ211は、HDD201からのリトライ要求#6aを受信する。このとき、SASエクスパンダ211のコマンド管理テーブル251には、HDD201に接続するポートに対応付けてI/Oコマンド#1~#6が登録されているので、HDD201に対応する未完了コマンド数は「6」である。SASエクスパンダ211は、未完了コマンド数「6」から「1」を減算した「5」をHDD201に対応するコマンド上限数に決定し、コマンド管理テーブル251において、HDD201に接続するポートに対応付けられたコマンド上限数に「5」を設定する(ステップS43)。
このステップS43では、未完了コマンドのうち、リトライ要求#6aに対応する未完了コマンドを除く他の5個の未完了コマンドがHDD201のコマンドキューに登録され、リトライ要求#6aに対応する未完了コマンドがコマンドキューからあふれたと推定される。このため、HDD201が備えるコマンドキューのエントリ数は「5」であると推定され、HDD201に対応するコマンド上限数として「5」が設定される。
なお、HDD201では、I/Oコマンド#1~#5にそれぞれ対応するI/O処理が実行されると、I/Oコマンド#1~#5にそれぞれ対応する正常応答#1b~#5bが返信される(ステップS44a~S44e)。正常応答#1b~#3bは、SASエクスパンダ211からIOC116に転送され、正常応答#4b,#5bは、SASエクスパンダ211からIOC126に転送される。
図11は、コマンド上限数に基づいてI/Oコマンドの送信が抑止される場合の処理例を示すシーケンス図である。図11の初期状態では、図10に示した処理により、HDD201に対応するコマンド上限数として「5」が設定されているものとする。また、説明を簡単にするために、図11の初期状態では、コマンド管理テーブル251にはHDD201についての未完了コマンドが登録されていないものとする。
図11の例では、HDD201に対するI/Oコマンド#11~#16が、順に送信される(ステップS51a~S51f)。例として、I/Oコマンド#11~#13はIOC116から送信され、I/Oコマンド#14~#16はIOC126から送信されるものとする。これらのI/Oコマンド#11~#16は、SASエクスパンダ211を介してHDD201に送信される。
ここで、SASエクスパンダ211がI/Oコマンド#11~#15をそれぞれ受信したとき(HDD201に転送する前)、コマンド管理テーブル251に登録されている、HDD201に対応する未完了コマンド数は、コマンド上限数「5」より小さい。しかし、SASエクスパンダ211は、I/Oコマンド#16を受信した時点で、HDD201に対応する未完了コマンド数がコマンド上限数「5」と一致したと判定する(ステップS52)。この場合、SASエクスパンダ211は、受信したI/Oコマンド#16を破棄し、IOC126に対して、I/Oコマンド#16の送信のリトライを要求するリトライ要求#16aを返信する(ステップS53)。
これにより、HDD201が備えるコマンドキューのエントリ数を超える数のI/OコマンドがHDD201に送信される事態の発生が回避される。このため、HDD201が、コマンドキューからあふれたI/Oコマンドについてのリトライ要求を送信する可能性が低くなり、例えば、そのようなリトライ要求の頻繁な送信によってシステム全体の挙動が不安定になる可能性も低くなる。その結果、システム全体のI/O性能が低下する可能性を抑制できる。
リトライ要求#16aを受信したIOC126は、I/Oコマンド#16を再度送信する(ステップS54)。一方、HDD201では、I/Oコマンド#11~#15にそれぞれ対応するI/O処理が実行され、I/Oコマンド#11~#15にそれぞれ対応する正常応答#11b~#15bが返信される(ステップS55a~S55e)。正常応答#11b~#13bは、SASエクスパンダ211からIOC116に転送され、正常応答#14b,#15bは、SASエクスパンダ211からIOC126に転送される。
ここで、SASエクスパンダ211は、例えば、正常応答#11bをIOC116に転送した直後のタイミングで、IOC126から再送されたI/Oコマンド#16を受信したとする。このとき、HDD201に対応する未完了コマンド数は「4」であり、コマンド上限数「5」より低くなっている。このため、SASエクスパンダ211は、受信したI/Oコマンド#16をHDD201に転送する。
このように、SASエクスパンダ211でHDDへの転送が抑止されたI/Oコマンドは、SASエクスパンダ211からのリトライ要求に応じてIOCから再送される。このとき、HDDへ転送済みのI/Oコマンドの応答が完了している可能性があるので、再送されたI/OコマンドがHDDに転送される可能性が高い。
ここで、HDDのコマンドキューからI/Oコマンドがあふれる可能性があるケースでは、HDD201からコマンド送信のリトライが要求されるより、SASエクスパンダ211からリトライが要求される方が、経路上の装置や回路が少なくなるので、送信タイミングの遅延が小さくなる可能性が高い。このため、システム全体としてのI/O性能を向上させることができる。
以上説明したストレージシステムでは、IOCからアクセスされる記憶装置に対して、その記憶装置が備えるコマンドキューのエントリ数を超えてI/Oコマンドが同時に送信されなくなり、記憶装置が可能な限り高いI/O性能を発揮できるようになる。一方、IOCから見ると、IOC自身の性能に応じたできるだけ多くのI/Oコマンドを同時に送信可能でありながら、実際には記憶装置が処理できない余剰のI/Oコマンドの送信がSASエクスパンダにおいて抑止される。
結果として、記憶装置のコマンドキューからI/Oコマンドがあふれない範囲でできるだけ多くのI/Oコマンドが記憶装置に対して同時に送信されるようになり、システム全体としてのI/O性能を適切に維持できるようになる。例えば、IOCの最大性能が記憶装置の最大性能より低い場合に、システム全体としてのI/O性能が記憶装置の最大性能より低くなる可能性を抑制できる。
なお、以上の第2の実施の形態では、図5に示したコマンド処理部241やタイマ242の処理機能がSASエクスパンダ211,212に搭載されていた。しかし、これらの処理機能は、例えば、SASエクスパンダ211,212の代わりにSASエクスパンダ117,127に搭載されていてもよい。この場合、SASエクスパンダ117,127のコマンド管理テーブル251では、HDDに接続されるポートごとでなく、I/Oコマンドの送信先となるHDDごとに、I/Oコマンドや経過時間、コマンド上限数が管理されればよい。
また、上記の各実施の形態に示した装置(例えば、制御装置1~3、データ中継装置20、CM110,120、ホスト装置300)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
1~3 制御装置
11~13 記憶装置
20 データ中継装置
21 記憶部
22 制御部
23 管理情報
C1~C4,C11~C14 I/Oコマンド
C4a,C14a リトライ要求
11~13 記憶装置
20 データ中継装置
21 記憶部
22 制御部
23 管理情報
C1~C4,C11~C14 I/Oコマンド
C4a,C14a リトライ要求
Claims (5)
- 複数の記憶装置のそれぞれについて、送信可能なI/O(Input/Output)コマンドの上限数を示すコマンド上限数が登録される記憶部と、
1以上の制御装置と前記複数の記憶装置との間で送受信されるデータを中継する中継部と、
前記1以上の制御装置のいずれかから前記中継部を介して前記複数の記憶装置のいずれかに送信され、かつ、前記複数の記憶装置のうち送信先の記憶装置から応答が返信されていないI/Oコマンドの数を示すコマンド数を、前記複数の記憶装置のそれぞれについて計数し、
前記複数の記憶装置のうち一の記憶装置から、I/Oコマンドの送信のリトライが要求されると、前記一の記憶装置に対応する前記コマンド数の計数値から1減算した数を、前記一の記憶装置に対応する前記コマンド上限数として前記記憶部に登録し、
前記中継部が前記1以上の制御装置のうち一の制御装置から前記一の記憶装置に対するI/Oコマンドを受信したとき、その受信直前における前記一の記憶装置に対応する前記コマンド数の計数値が前記一の記憶装置に対応する前記コマンド上限数に達している場合には、受信したI/Oコマンドを破棄するとともに、受信したI/Oコマンドの送信のリトライを前記一の制御装置に要求する、制御部と、
を有するデータ中継装置。 - 前記制御部は、さらに、前記一の記憶装置に送信されたいずれかのI/Oコマンドについて、送信からの経過時間が所定の閾値に達した場合にも、前記一の記憶装置に対応する前記コマンド数の計数値から1減算した数を、前記一の記憶装置に対応する前記コマンド上限数として前記記憶部に登録する、
請求項1記載のデータ中継装置。 - 前記制御部は、さらに、前記一の記憶装置に送信されたいずれかのI/Oコマンドに対応するリトライコマンドを前記1以上の制御装置のいずれかから受信した場合、前記一の記憶装置に対応する前記コマンド数の計数値から1減算した数を、前記一の記憶装置に対応する前記コマンド上限数として前記記憶部に登録する、
請求項1または2記載のデータ中継装置。 - 1以上の制御装置と複数の記憶装置との間で送受信されるデータを中継するデータ中継装置における中継制御方法であって、
前記データ中継装置が、
前記1以上の制御装置のいずれかから前記データ中継装置を介して前記複数の記憶装置のいずれかに送信され、かつ、前記複数の記憶装置のうち送信先の記憶装置から応答が返信されていないI/Oコマンドの数を示すコマンド数を、前記複数の記憶装置のそれぞれについて計数し、
前記複数の記憶装置のうち一の記憶装置から、I/Oコマンドの送信のリトライが要求されると、前記一の記憶装置に対応する前記コマンド数の計数値から1減算した数を、前記一の記憶装置に対応するコマンド上限数として記憶部に登録し、
前記1以上の制御装置のうち一の制御装置から前記一の記憶装置に対するI/Oコマンドを受信したとき、その受信直前における前記一の記憶装置に対応する前記コマンド数の計数値が前記一の記憶装置に対応する前記コマンド上限数に達している場合には、受信したI/Oコマンドを破棄するとともに、受信したI/Oコマンドの送信のリトライを前記一の制御装置に要求する、
中継制御方法。 - 1以上の制御装置と、複数の記憶装置と、データ中継装置とを有するストレージシステムであって、
前記データ中継装置は、
前記複数の記憶装置のそれぞれについて、送信可能なI/Oコマンドの上限数を示すコマンド上限数が登録される記憶部と、
前記1以上の制御装置と前記複数の記憶装置との間で送受信されるデータを中継する中継部と、
前記1以上の制御装置のいずれかから前記中継部を介して前記複数の記憶装置のいずれかに送信され、かつ、前記複数の記憶装置のうち送信先の記憶装置から応答が返信されていないI/Oコマンドの数を示すコマンド数を、前記複数の記憶装置のそれぞれについて計数し、
前記複数の記憶装置のうち一の記憶装置から、I/Oコマンドの送信のリトライが要求されると、前記一の記憶装置に対応する前記コマンド数の計数値から1減算した数を、前記一の記憶装置に対応する前記コマンド上限数として前記記憶部に登録し、
前記中継部が前記1以上の制御装置のうち一の制御装置から前記一の記憶装置に対するI/Oコマンドを受信したとき、その受信直前における前記一の記憶装置に対応する前記コマンド数の計数値が前記一の記憶装置に対応する前記コマンド上限数に達している場合には、受信したI/Oコマンドを破棄するとともに、受信したI/Oコマンドの送信のリトライを前記一の制御装置に要求する、制御部と、
を有する、
ストレージシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021119292A JP2023015488A (ja) | 2021-07-20 | 2021-07-20 | データ中継装置、中継制御方法およびストレージシステム |
US17/722,429 US11797233B2 (en) | 2021-07-20 | 2022-04-18 | Data relay device, relay control method, and storage system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021119292A JP2023015488A (ja) | 2021-07-20 | 2021-07-20 | データ中継装置、中継制御方法およびストレージシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2023015488A true JP2023015488A (ja) | 2023-02-01 |
Family
ID=84977099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2021119292A Pending JP2023015488A (ja) | 2021-07-20 | 2021-07-20 | データ中継装置、中継制御方法およびストレージシステム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11797233B2 (ja) |
JP (1) | JP2023015488A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11893280B2 (en) * | 2021-08-27 | 2024-02-06 | Micron Technology, Inc. | Concurrent command limiter for a memory system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4318914B2 (ja) | 2002-12-26 | 2009-08-26 | 富士通株式会社 | ストレージシステム及びその動的負荷管理方法 |
JP4775843B2 (ja) * | 2005-08-10 | 2011-09-21 | 株式会社日立製作所 | ストレージシステム及び記憶制御方法 |
JP2010211428A (ja) | 2009-03-10 | 2010-09-24 | Fujitsu Ltd | ストレージ装置、中継装置、及びコマンド発行制御方法 |
JP5923977B2 (ja) | 2011-12-27 | 2016-05-25 | 富士通株式会社 | ストレージシステム、コントローラモジュールおよびストレージシステムの制御方法 |
JPWO2015170702A1 (ja) | 2014-05-09 | 2017-04-20 | 日本電気株式会社 | ストレージ装置と情報処理システム及びストレージ制御方法とプログラム |
JP6380040B2 (ja) * | 2014-11-21 | 2018-08-29 | 富士通株式会社 | ストレージ装置、中継装置、および中継制御プログラム |
US11003614B2 (en) * | 2016-09-06 | 2021-05-11 | Western Digital Technologies, Inc. | Embedding protocol parameters in data streams between host devices and storage devices |
US11223679B2 (en) * | 2018-07-16 | 2022-01-11 | EMC IP Holding Company LLC | Host device with multi-path layer configured for detection and reporting of path performance issues |
US11762583B2 (en) * | 2020-10-22 | 2023-09-19 | EMC IP Holding Company, LLC | System and method for selectively throttling commands within a storage system |
US11748220B2 (en) * | 2020-11-20 | 2023-09-05 | Micron Technology, Inc. | Transmission link testing |
US11620159B2 (en) * | 2021-04-23 | 2023-04-04 | Samsung Electronics Co., Ltd. | Systems and methods for I/O command scheduling based on multiple resource parameters |
-
2021
- 2021-07-20 JP JP2021119292A patent/JP2023015488A/ja active Pending
-
2022
- 2022-04-18 US US17/722,429 patent/US11797233B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20230028617A1 (en) | 2023-01-26 |
US11797233B2 (en) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4775846B2 (ja) | 物理リンクの割当てを制御するコンピュータシステム及び方法 | |
US6842835B1 (en) | Storage subsystem and its controlling method | |
JP4961481B2 (ja) | シリアルアドバンストテクノロジーアタッチメント(sata)およびシリアルアタッチトスモールコンピュータシステムインターフェース(scsi)(sas)のブリッジング | |
US10514856B2 (en) | Storage system and storage control apparatus | |
JP4794194B2 (ja) | ストレージシステム及び記憶制御方法 | |
US20160092136A1 (en) | Method and apparatus for cost-based load balancing for port selection | |
US8984352B2 (en) | Storage control apparatus and control method of storage control apparatus | |
US20110246720A1 (en) | Storage system with multiple controllers | |
US9904474B2 (en) | Control device and storage system | |
JP6464777B2 (ja) | 情報処理装置及びプログラム | |
JP2013041403A (ja) | 情報処理装置および情報処理方法 | |
US7545746B2 (en) | Computer system for controlling routed data amount | |
JP2023015488A (ja) | データ中継装置、中継制御方法およびストレージシステム | |
KR101137085B1 (ko) | 데이터 저장 시스템의 논리 파티션에서 초기 프로그램 로드를 관리하는 방법, 이를 수행하기 위한 저장 컨트롤러, 및 컴퓨터 판독 가능 저장매체 | |
US9990148B2 (en) | Storage control device and storage system for data backup | |
JP2021135538A (ja) | ストレージ制御装置及びストレージ制御プログラム | |
US11016698B2 (en) | Storage system that copies write data to another storage system | |
WO2017098591A1 (ja) | 計算機及びストレージ装置を有するシステム、及びシステムの制御方法 | |
US10740040B2 (en) | System and computer for controlling caching for logical storage | |
JP6502879B2 (ja) | 記憶装置 | |
US20220374167A1 (en) | Write pressure throttling based on service level objectives | |
US20130110780A1 (en) | Relay apparatus and data copy method | |
US20220222015A1 (en) | Storage system, storage control device, and storage control method | |
US7853758B2 (en) | Avoiding failure of an initial program load in a logical partition of a data storage system | |
JP2021082096A (ja) | 情報処理装置及び情報処理プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240404 |