(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024133932
(43)【公開日】2024-10-03
(54)【発明の名称】ストレージシステム、ストレージシステムの制御方法、及び記憶デバイス
(51)【国際特許分類】
G06F 3/06 20060101AFI20240926BHJP
G06F 11/07 20060101ALI20240926BHJP
【FI】
G06F3/06 305C
G06F3/06 304N
G06F3/06 540
G06F11/07 196
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023043962
(22)【出願日】2023-03-20
(71)【出願人】
【識別番号】000233295
【氏名又は名称】株式会社日立情報通信エンジニアリング
(74)【代理人】
【識別番号】110001678
【氏名又は名称】藤央弁理士法人
(72)【発明者】
【氏名】小村 和久
(72)【発明者】
【氏名】川瀬 昭雄
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA34
5B042KK17
(57)【要約】
【課題】記憶デバイスの一時的な負荷の上昇によるI/O処理の低下に伴う記憶デバイスの閉塞を回避する。
【解決手段】ストレージシステムは、複数の記憶デバイス及びストレージコントローラを有する。記憶デバイスは、複数の不揮発性記憶素子を有し、複数の記憶デバイスは、データ及びパリティの書き込みを伴うRAIDを構成する。ストレージコントローラは、第1記憶デバイスから、一時的な負荷の高まりによってI/O処理が遅延する可能性が発生したことを示す遅延リスク通知情報を取得し、遅延リスク通知情報の受信後、第1記憶デバイスに格納されるデータのリードを伴うリード処理を実行する場合、RAIDを構成する他の記憶デバイスに格納されるパリティ及びデータを読み出し、パリティ及びデータを用いて、第1記憶デバイスから読み出すデータを生成し、他の記憶デバイスから読み出されたデータ及び生成されたデータを応答する。
【選択図】
図3B
【特許請求の範囲】
【請求項1】
複数の記憶デバイス及び少なくとも一つのストレージコントローラを備えるストレージシステムであって、
前記複数の記憶デバイスの各々は、複数の不揮発性記憶素子を有し、
前記複数の記憶デバイスは、データ及びパリティの書き込みを伴うRAIDを構成し、
前記少なくとも一つのストレージコントローラは、
第1記憶デバイスから、一時的な負荷の高まりによってI/O処理が遅延する可能性が発生していることを示す第1遅延リスク通知情報を取得し、
前記第1遅延リスク通知情報の受信後、前記第1記憶デバイスに格納されるデータのリードを伴うリード処理を実行する場合、前記RAIDを構成する他の前記記憶デバイスに格納されるパリティ及びデータを読み出し、
読み出された前記パリティ及び読み出された前記データを用いて、前記第1記憶デバイスから読み出すデータを生成し、
他の前記記憶デバイスから読み出されたデータ及び生成された前記データを応答することを特徴とするストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記少なくとも一つのストレージコントローラは、前記第1記憶デバイスに対するリード処理の実行要求の応答、前記第1記憶デバイスに対するライト処理の実行要求の応答、及び前記第1記憶デバイスの状態を監視するためのコマンドの応答の少なくともいずれかに含まれる、前記第1遅延リスク通知情報を取得することを特徴とするストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記少なくとも一つのストレージコントローラは、前記第1記憶デバイスに対するライト処理の実行要求の応答、及び、前記第1記憶デバイスの状態を監視するためのコマンドの応答の少なくともいずれかに含まれる、前記可能性が発生していないことを示す第2遅延リスク通知情報を取得することを特徴とするストレージシステム。
【請求項4】
請求項3に記載のストレージシステムであって、
前記少なくとも一つのストレージコントローラは、前記第1記憶デバイスから、前記第1遅延リスク通知情報を取得してから所定時間内に前記第2遅延リスク通知情報を取得できなかった場合、前記第1記憶デバイスを閉塞することを特徴とするストレージシステム。
【請求項5】
請求項4に記載のストレージシステムであって、
前記第1遅延リスク通知情報は、一時的な負荷の高まりの要因を示す情報を含み、
前記要因毎に、前記所定時間が異なることを特徴とするストレージシステム。
【請求項6】
複数の記憶デバイス及び少なくとも一つのストレージコントローラを有するストレージシステムの制御方法であって、
前記複数の記憶デバイスの各々は、複数の不揮発性記憶素子を有し、
前記複数の記憶デバイスは、データ及びパリティの書き込みを伴うRAIDを構成し、
前記ストレージシステムの制御方法は、
前記少なくとも一つのストレージコントローラが、第1記憶デバイスから、一時的な負荷の高まりによってI/O処理が遅延する可能性が発生していることを示す第1遅延リスク通知情報を取得する第1のステップと、
前記少なくとも一つのストレージコントローラが、前記第1遅延リスク通知情報の受信後、前記第1記憶デバイスに格納されるデータのリードを伴うリード処理を実行する場合、前記RAIDを構成する他の前記記憶デバイスに格納されるパリティ及びデータを読み出す第2のステップと、
前記少なくとも一つのストレージコントローラが、読み出された前記パリティ及び読み出された前記データを用いて、前記第1記憶デバイスから読み出すデータを生成する第3のステップと、
前記少なくとも一つのストレージコントローラが、他の前記記憶デバイスから読み出されたデータ及び生成された前記データを応答する第4のステップと、を含むことを特徴とするストレージシステムの制御方法。
【請求項7】
請求項6に記載のストレージシステムの制御方法であって、
前記第1のステップは、前記少なくとも一つのストレージコントローラが、前記第1記憶デバイスに対するリード処理の実行要求の応答、前記第1記憶デバイスに対するライト処理の実行要求の応答、及び前記第1記憶デバイスの状態を監視するためのコマンドの応答の少なくともいずれかに含まれる、前記第1遅延リスク通知情報を取得するステップを含むことを特徴とするストレージシステムの制御方法。
【請求項8】
請求項6に記載のストレージシステムの制御方法であって、
前記少なくとも一つのストレージコントローラが、前記第1記憶デバイスに対するライト処理の実行要求の応答、及び、前記第1記憶デバイスの状態を監視するためのコマンドの応答の少なくともいずれかに含まれる、前記可能性が発生していないことを示す第2遅延リスク通知情報を取得するステップを含むことを特徴とするストレージシステムの制御方法。
【請求項9】
請求項8に記載のストレージシステムの制御方法であって、
前記少なくとも一つのストレージコントローラが、前記第1記憶デバイスから、前記第1遅延リスク通知情報を受信してから所定時間内に前記第2遅延リスク通知情報を受信しなかった場合、前記第1記憶デバイスを閉塞するステップを含むことを特徴とするストレージシステムの制御方法。
【請求項10】
請求項9に記載のストレージシステムの制御方法であって、
前記第1遅延リスク通知情報は、一時的な負荷の高まりの要因を示す情報を含み、
前記要因毎に、前記所定時間が異なることを特徴とするストレージシステムの制御方法。
【請求項11】
記憶デバイスであって、
デバイスコントローラと、複数の不揮発性記憶素子を備え、
一時的な負荷の高まりによってI/O処理が遅延する可能性が発生したことを検知した場合、前記可能性が発生したことを通知するための第1遅延リスク通知情報を生成し、
前記第1遅延リスク通知情報を出力することを特徴とする記憶デバイス。
【請求項12】
請求項11に記載の記憶デバイスであって、
リード処理の実行要求の応答、ライト処理の実行要求の応答、及び状態を監視するためのコマンドの応答の少なくともいずれかに、前記第1遅延リスク通知情報を含めることを特徴とする記憶デバイス。
【請求項13】
請求項11に記載の記憶デバイスであって、
前記可能性の発生が検知されていない場合、前記可能性が発生していないことを通知するための第2遅延リスク通知情報を生成し、
前記第2遅延リスク通知情報を出力することを特徴とする記憶デバイス。
【請求項14】
請求項13に記載の記憶デバイスであって、
ライト処理の実行要求の応答、及び状態を監視するためのコマンドの応答の少なくともいずれかに、前記第2遅延リスク通知情報を含めることを特徴とする記憶デバイス。
【請求項15】
請求項11に記載の記憶デバイスであって、
前記第1遅延リスク通知情報は、一時的な負荷の高まりの要因を示す情報を含むことを特徴とする記憶デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性記憶素子を有する記憶デバイスを搭載するストレージシステムの制御技術に関する。
【背景技術】
【0002】
NAND型フラッシュメモリ等の不揮発性記憶素子を有する記憶デバイスを搭載するストレージシステムの導入が進んでいる。本明細書では、「記憶デバイス」は不揮発性記憶素子を有する記憶デバイスを表すものとする。
【0003】
ストレージシステムでは、耐障害性を高めるためにRAIDを構成する。RAIDグループを構成する一つの記憶デバイスについて、I/O処理の遅延が所定時間以上、継続した場合、ストレージシステムは、記憶デバイスの障害と判定し、当該記憶デバイスを閉塞する。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
記憶デバイスは、不揮発性記憶素子の特性に起因するデータの移動及び復旧等の処理を実行する。前述の処理によって、記憶デバイスの負荷が一時的に増大する。記憶デバイスが前述の処理の実行中にI/O処理の実行要求を受け付けた場合、I/O処理の遅延が所定時間以上、継続し、閉塞される可能性がある。記憶デバイスの閉塞に伴って、データ復旧及び記憶デバイスの交換等の保全作業が必要となり、運用への影響が大きい。
【0006】
記憶デバイスの容量の増加に伴って、前述の処理に起因して一時的に負荷が高くなるケースが増加することが予測される。したがって、一時的な負荷の上昇によってI/O処理の遅延が発生した場合でも、記憶デバイスを閉塞せず、使用を継続することが重要である。
【0007】
前述のような記憶デバイスの閉塞は、ストレージシステムのコントローラが記憶デバイスの状態を把握できないことが要因である。この課題に対して、特許文献1に記載の技術が知られている。特許文献1には「ストレージ装置の状態情報の受信結果に基づき前記ストレージ装置の種類を識別する識別部24と、識別した種類が第1のストレージ装置である場合、第1のストレージ装置から、前記第1のストレージ装置の第1の性能情報を受信し、前記第1の性能情報を、受信した期間ごとに対応づけたテーブルのデータとしてデータベース21に格納する、第1の処理を実行する第1処理部2aと、識別した種類が第2のストレージ装置である場合、第2のストレージ装置から、前記第2のストレージ装置の第2の性能情報を受信してテキスト形式のファイルのデータとして記憶部22に格納する、第2の処理を実行する第2処理部2bと、識別した種類に応じて、前記第1の処理の実行、又は、前記第2の処理の実行、を切り替える切替部24と、をそなえる。」ことが記載されている。
【0008】
特許文献1に記載の技術を用いることによって、記憶デバイスの性能情報を取得することができる。しかし、特許文献1に技術を用いて取得される性能情報を用いても、記憶デバイスの一時的な負荷の上昇を把握することは難しい。
【0009】
本発明は、記憶デバイスの一時的な負荷の上昇によるI/O処理の低下に伴う記憶デバイスの閉塞を回避する技術を提供する。
【課題を解決するための手段】
【0010】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、複数の記憶デバイス及び少なくとも一つのストレージコントローラを備えるストレージシステムであって、前記複数の記憶デバイスの各々は、複数の不揮発性記憶素子を有し、前記複数の記憶デバイスは、データ及びパリティの書き込みを伴うRAIDを構成し、前記少なくとも一つのストレージコントローラは、第1記憶デバイスから、一時的な負荷の高まりによってI/O処理が遅延する可能性が発生したことを示す第1遅延リスク通知情報を取得し、前記第1遅延リスク通知情報の受信後、前記第1記憶デバイスに格納されるデータのリードを伴うリード処理を実行する場合、前記RAIDを構成する他の前記記憶デバイスに格納されるパリティ及びデータを読み出し、前記パリティ及び前記データを用いて、前記第1記憶デバイスから読み出すデータを生成し、他の前記記憶デバイスから読み出されたデータ及び生成された前記データを応答する。
【発明の効果】
【0011】
本発明によれば、ストレージシステムは、記憶デバイスの一時的な負荷の上昇によるI/O処理の低下に伴う記憶デバイスの閉塞を回避することができる。
【図面の簡単な説明】
【0012】
【
図2】実施例1の状態管理情報のデータ構造の一例を示す図である。
【
図3A】実施例1のストレージシステムのリード処理の流れを説明するシーケンス図である。
【
図3B】実施例1のストレージシステムのリード処理の流れを説明するシーケンス図である。
【
図4】実施例1のストレージコントローラが実行するリード制御処理の一例を説明するフローチャートである。
【
図5】実施例1のストレージコントローラが実行する状態管理情報の更新処理の一例を説明するフローチャートである。
【
図6】実施例1のストレージシステムのライト処理の流れを説明するシーケンス図である。
【
図7】実施例1のストレージコントローラが実行する閉塞判定処理の一例を説明するフローチャートである。
【発明を実施するための形態】
【0013】
以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【0014】
以下に説明する発明の構成において、同一又は類似する構成又は機能には同一の符号を付し、重複する説明は省略する。
【0015】
本明細書等における「第1」、「第2」、「第3」等の表記は、構成要素を識別するために付するものであり、必ずしも、数又は順序を限定するものではない。
【0016】
図面等において示す各構成の位置、大きさ、形状、及び範囲等は、発明の理解を容易にするため、実際の位置、大きさ、形状、及び範囲等を表していない場合がある。したがって、本発明では、図面等に開示された位置、大きさ、形状、及び範囲等に限定されない。
【実施例0017】
【0018】
システムは、ストレージシステム100及び複数のホスト計算機101を含む。ホスト計算機101は、WAN(Wide Area Network)、LAN(Local Area Network)、又はSAN(Storage Area Network)等のネットワークを介して、ストレージシステム100と接続する。なお、本発明は、ストレージシステム100に接続するホスト計算機101の数に限定されない。
【0019】
ホスト計算機101はストレージシステム100を利用する計算機である。ホスト計算機101は、ストレージシステム100が提供するボリュームに対してデータのライト及びデータのリードを行う。
【0020】
ストレージシステム100は、ストレージコントローラ110及び記憶デバイス111を有する。
図1では、ストレージコントローラ110は一つであるが、二つ以上でもよい。ストレージシステム100は、複数の記憶デバイス111からRAID(Redundant Arrays of Inexpensive Disks)グループを生成し、RAIDグループからボリュームを生成し、ホスト計算機101に提供する。ボリュームは、例えば、LDEVである。なお、複数のLDEVから構成されるボリュームでもよい。
【0021】
ストレージコントローラ110は、ストレージシステム100全体を制御する。例えば、ストレージコントローラ110は、RAIDグループの管理、ボリュームの管理、及びI/O処理の制御等を行う。ストレージコントローラ110は、図示しない、プロセッサ、メモリ、ホストIF、及びドライブIFを有する。メモリは、ストレージシステム100を制御するためのプログラムを格納し、また、キャッシュメモリとしても用いられる。
【0022】
記憶デバイス111は、NAND型フラッシュメモリ等の不揮発性記憶素子を有する記憶デバイスである。記憶デバイス111は、デバイスコントローラ120及び複数のフラッシュメモリ(FM)チップ121を有する。
【0023】
デバイスコントローラ120は、記憶デバイス111全体を制御する。デバイスコントローラ120は、図示しないプロセッサ、メモリ、ストレージコントローラ110と接続するIF、及びFMチップ121と接続するIFを有する。デバイスコントローラ120は、ストレージシステム100に提供する論理アドレス空間と、FMチップ121の物理アドレスとの対応関係を管理する。論理アドレス空間は、例えば、ページ単位で管理される。記憶デバイス111は、複数のページから構成されるブロック単位でデータの削除を行い、ページ単位でデータのライト及びリードを行う。
【0024】
FMチップ121は、複数のメモリセルを有する。メモリセルは1ビット又は複数ビットのデータを格納する。デバイスコントローラ120は、FMチップ121の記憶領域を所定のサイズのページに分割し、管理する。
【0025】
デバイスコントローラ120は、I/O処理が遅延する可能性(遅延リスク)が発生している場合、ストレージコントローラ110に遅延リスクが発生していることを通知するための情報を生成する機能を有する。具体的には、デバイスコントローラ120は、(状態1)空きブロックの減少、(状態2)FMチップ121の故障、(状態3)ブロックの書き込み回数に偏り、が発生した場合、遅延リスクが発生していると判定する。
【0026】
状態1の遅延リスクが発生した場合、デバイスコントローラ120は、空きブロックを確保するために、他のブロックにデータを移動する。状態2の遅延リスクが発生した場合、デバイスコントローラ120は、故障したFMチップ121を閉塞し、当該FMチップ121に格納されるデータを他のFMチップ121に移動する。状態3の遅延リスクが発生した場合、デバイスコントローラ120は、書き込み回数が少ないブロックに格納されるデータを、書き込み回数が多いブロックに移動する。前述したいずれの処理も記憶デバイス111の負荷が高いため、I/O処理が遅延する可能性がある。
【0027】
また、デバイスコントローラ120は、遅延リスクが発生していないことを通知するための情報を生成する機能を有する。
【0028】
実施例1のデバイスコントローラ120は、遅延リスクの発生の有無を通知するための情報として3ビットのデータを生成する。1ビット目を状態1の遅延リスクの発生有無を示すビットとし、2ビット目を状態2の遅延リスクの発生有無を示すビットとし、3ビット目を状態3の遅延リスクの発生有無を示すビットとする。遅延リスクが発生していない場合、ビットには「0」が設定され、遅延リスクが発生している場合、ビットには「1」が設定される。以下の説明では、3ビットのデータを遅延リスク通知情報とも記載する。デバイスコントローラ120は、応答に遅延リスク通知情報を付加する。
【0029】
なお、前述した遅延リスクの発生要因は例示であってこれに限定されない。
【0030】
ストレージコントローラ110は、遅延リスクが発生している記憶デバイス111を管理するための状態管理情報200を保持する。
図2は、実施例1の状態管理情報200のデータ構造の一例を示す図である。
【0031】
状態管理情報200は、デバイスID201、タイムスタンプ202、及び状態種別203を含むエントリを格納する。
【0032】
デバイスID201は、記憶デバイス111のIDを格納するフィールドである。タイムスタンプ202は、遅延リスクの発生が通知された時刻を格納するフィールドである。状態種別203は、遅延リスクの種別を格納するフィールドである。状態種別203には、状態1、状態2、及び状態3に対応する値が格納される。
【0033】
図3A及び
図3Bは、実施例1のストレージシステム100のリード処理の流れを説明するシーケンス図である。
図4は、実施例1のストレージコントローラ110が実行するリード制御処理の一例を説明するフローチャートである。
図5は、実施例1のストレージコントローラ110が実行する状態管理情報200の更新処理の一例を説明するフローチャートである。
【0034】
ここでは、ストレージシステム100に四つの記憶デバイス111-1、111-2、111-3、111-4が搭載されているものとする。四つの記憶デバイス111-1、111-2、111-3、111-4はRAIDレベル「5」のRAIDを構成するものとする。データのライトでは、例えば、ストレージコントローラ110は、一つのデータを、三つのブロックデータに分割し、また、一つのパリティを生成し、三つの記憶デバイス111の各々のブロックデータを書き込み、ブロックデータを書き込んだ記憶デバイス111とは異なる一つの記憶デバイス111にパリティを書き込む。なお、RAIDレベルは一例であり、データ及びパリティの書き込みを伴うRAIDであればよい。記憶デバイス111-1では、空きブロックが減少し(状態1の遅延リスクが発生し)、空きブロックを増やすための処理が実行されているものとする。また、状態管理情報200は空であるものとする。
【0035】
まず、
図3Aを用いて遅延リスクが通知されていない場合のリード処理を説明する。ストレージコントローラ110は、ホスト計算機101から、三つの記憶デバイス111-1、111-2、111-3に格納されるデータを取得するためのリード要求を受信した場合(ステップS101)、リード対象のデータを読み出す記憶デバイス111を決定するためのリード制御処理を実行する(ステップS102)。ここで、
図4を用いてリード制御処理について説明する。
【0036】
ストレージコントローラ110は、リード対象のデータが格納される記憶デバイス111を特定する(ステップS201)。リード対象のデータは、ストレージコントローラ110が保持するボリューム及びRAIDグループに関する情報等に基づいて特定される。
【0037】
ストレージコントローラ110は、特定された記憶デバイス111のループ処理を開始する(ステップS202)。具体的には、ストレージコントローラ110は、特定された記憶デバイス111の中から一つの記憶デバイス111を選択する。以下の説明では、選択された記憶デバイス111をターゲット記憶デバイス111と記載する。
【0038】
ストレージコントローラ110は、状態管理情報200を参照して、ターゲット記憶デバイス111のエントリが存在するか否かを判定する(ステップS203)。
【0039】
状態管理情報200にターゲット記憶デバイス111のエントリが存在しない場合、ストレージコントローラ110は、ターゲット記憶デバイス111からデータを取得するためのリード要求の送信を決定する(ステップS204)。その後、ストレージコントローラ110はステップS206に進む。
【0040】
状態管理情報200にターゲット記憶デバイス111のエントリが存在する場合、ストレージコントローラ110は、ターゲット記憶デバイス111に格納されるデータのパリティを格納する記憶デバイス111を特定し、当該記憶デバイス111からパリティを取得するためのリード要求の送信を決定する(ステップS205)。その後、ストレージコントローラ110はステップS206に進む。
【0041】
ステップS206では、ストレージコントローラ110は、特定された全ての記憶デバイス111について処理が完了したか否かを判定する(ステップS206)。
【0042】
特定された全ての記憶デバイス111について処理が完了していない場合、ストレージコントローラ110はステップS202に戻り、同様の処理を実行する。
【0043】
特定された全ての記憶デバイス111について処理が完了した場合、ストレージコントローラ110はリード制御処理を終了する。以上がリード制御処理の説明である。
【0044】
図3Aの説明に戻る。ステップS102では、状態管理情報200は空であるため、ストレージコントローラ110は、各記憶デバイス111-1、111-2、111-3からデータを取得するためのリード要求を送信することを決定する。したがって、ストレージコントローラ110は、記憶デバイス111-1、111-2、111-3にデータを取得するためのリード要求を送信する(ステップS103、ステップS104、ステップS105)。
【0045】
記憶デバイス111-1は、リード対象のデータと、状態1の遅延リスクの発生を通知するための遅延リスク通知情報と含む応答をストレージコントローラ110に送信する(ステップS106)。例えば、遅延リスク通知情報としてビット列(1,0,0)が送信される。記憶デバイス111-2、111-3は、リード対象のデータと、いずれの種類の遅延リスクも発生していないことを通知するための遅延リスク通知情報とを含む応答をストレージコントローラ110に送信する(ステップS107、ステップS108)。例えば、遅延リスク通知情報としてビット列(0,0,0)が送信される。
【0046】
ストレージコントローラ110は、各記憶デバイス111-1、111-2、111-3から取得したデータを応答としてホスト計算機101に送信する(ステップS109)。また、ストレージコントローラ110は、状態管理情報200の更新処理を実行する(ステップS110)。ここで、
図5を用いて状態管理情報200の更新処理について説明する。
【0047】
ストレージコントローラ110は、遅延リスク通知情報のループ処理を開始する(ステップS301)。具体的には、ストレージコントローラ110は、受信した遅延リスク通知情報の中から一つの遅延リスク通知情報を選択する。
【0048】
ストレージコントローラ110は、遅延リスクの種別のループ処理を開始する(ステップS302)。具体的には、ストレージコントローラ110は、状態1、状態2、及び状態3の中から一つの状態を選択する。
【0049】
ストレージコントローラ110は、選択した種別の遅延リスクが発生しているか否かを判定する(ステップS303)。具体的には、遅延リスク通知情報の対応するビットの値が「1」であるか否かが判定される。遅延リスク通知情報の対応するビットの値が「1」である場合、ストレージコントローラ110は、選択した種別の遅延リスクが発生していると判定する。
【0050】
選択した種別の遅延リスクが発生している場合、ストレージコントローラ110は、状態管理情報200に、デバイスID201に遅延リスク通知情報を送信した記憶デバイス111のIDが設定され、かつ、状態種別203に選択した種別が設定されるエントリが存在するか否かを判定する(ステップS304)。
【0051】
条件を満たすエントリが状態管理情報200に存在する場合、ストレージコントローラ110はステップS308に進む。
【0052】
条件を満たすエントリが状態管理情報200に存在しない場合、ストレージコントローラ110は、状態管理情報200にエントリを追加し(ステップS305)、その後、ステップS308に進む。
【0053】
ステップS303において、選択した種別の遅延リスクが発生していない場合、ストレージコントローラ110は、状態管理情報200に、デバイスID201に遅延リスク通知情報を送信した記憶デバイス111のIDが設定され、かつ、状態種別203に選択した種別が設定されるエントリが存在するか否かを判定する(ステップS306)。
【0054】
条件を満たすエントリが状態管理情報200に存在しない場合、ストレージコントローラ110はステップS308に進む。
【0055】
条件を満たすエントリが状態管理情報200に存在する場合、ストレージコントローラ110は、状態管理情報200からエントリを削除し(ステップS307)、その後、ステップS308に進む。
【0056】
ステップS308では、ストレージコントローラ110は、全ての遅延リスクの種別について処理が完了したか否かを判定する(ステップS308)。
【0057】
全ての遅延リスクの種別について処理が完了していない場合、ストレージコントローラ110はステップS302に戻り、同様の処理を実行する。
【0058】
全ての遅延リスクの種別について処理が完了した場合、ストレージコントローラ110は、受信した全ての遅延リスク通知情報について処理が完了したか否かを判定する(ステップS309)。
【0059】
受信した全ての遅延リスク通知情報について処理が完了していない場合、ストレージコントローラ110はステップS301に戻り、同様の処理を実行する。
【0060】
受信した全ての遅延リスク通知情報について処理が完了した場合、ストレージコントローラ110は状態管理情報200の更新処理を終了する。以上が状態管理情報200の更新処理の説明である。
【0061】
図3Aの説明に戻る。ステップS110では、ストレージコントローラ110は、状態管理情報200に、記憶デバイス111-1に状態1の遅延リスクが発生したことを示すエントリを追加する。
【0062】
次に、
図3Bを用いて遅延リスクが通知されている場合のリード処理を説明する。ストレージコントローラ110は、ホスト計算機101から、三つの記憶デバイス111-1、111-2、111-3に格納されるデータを取得するためリード要求を受信した場合(ステップS111)、リード制御処理を実行する(ステップS112)。リード制御処理は
図4で説明したものと同一である。
【0063】
状態管理情報200に記憶デバイス111-1のエントリが登録されている。そのため、ステップS112では、ストレージコントローラ110は、記憶デバイス111-1に格納されるデータのパリティを格納する記憶デバイス111からパリティを取得するためのリード要求の送信を決定する。ここでは、記憶デバイス111-4に格納されるパリティを読み出すものとする。また、ストレージコントローラ110は、記憶デバイス111-2、111-3からデータを取得するためのリード要求の送信を決定する。したがって、ストレージコントローラ110は、記憶デバイス111-2、111-3にデータを取得するためのリード要求を送信し(ステップS113、ステップS114)、記憶デバイス111-4にパリティを取得するためのリード要求を送信する(ステップS115)。
【0064】
記憶デバイス111-2、111-3は、リード対象のデータと、遅延リスクが発生していないことを通知するための遅延リスク通知情報とを含む応答をストレージコントローラ110に送信し(ステップS116、ステップS117)、記憶デバイス111-4は、パリティと、遅延リスクが発生していないことを通知するための遅延リスク通知情報とを含む応答をストレージコントローラ110に送信する(ステップS118)。
【0065】
ストレージコントローラ110は、読み出したデータ及びパリティを用いて、記憶デバイス111-1に格納されるリード対象のデータを生成し、当該データ及び記憶デバイス111-2、111-3から取得したデータをホスト計算機101に応答として送信する(ステップS119)。また、ストレージコントローラ110は、状態管理情報200の更新処理を実行する(ステップS120)。状態管理情報200の更新処理は
図5で説明したものと同一である。なお、ステップS120では、状態管理情報200へのエントリの追加及び削除は行われない。
【0066】
図6は、実施例1のストレージシステム100のライト処理の流れを説明するシーケンス図である。
【0067】
ここでは、ストレージシステム100に四つの記憶デバイス111-1、111-2、111-3、111-4が搭載されているものとする。四つの記憶デバイス111-1、111-2、111-3、111-4はRAIDレベル「5」のRAIDを構成するものとする。記憶デバイス111-1では、空きブロックの減少が発生し、空きブロックを増やすための処理が実行されているものとする。また、状態管理情報200は空であるものとする。
【0068】
ストレージコントローラ110は、ホスト計算機101から、四つの記憶デバイス111-1、111-2、111-3、111-4から構成されるボリュームへデータを書き込むためのライト要求を受信した場合(ステップS401)、ストレージコントローラ110のメモリに書き込むデータを保持し、一つのパリティを生成する。ストレージコントローラ110は、ホスト計算機101にライト要求の応答を送信する(ステップS402)。
【0069】
ストレージコントローラ110は、ボリュームを構成する記憶デバイス111-1、111-2、111-3、111-4を特定する。ストレージコントローラ110は、特定された記憶デバイス111-1、111-2、111-3、111-4のいずれかの三つにデータを書き込むためのライト要求を送信し、また、データを書き込む記憶デバイス111とは別の一つの記憶デバイス111にパリティを書き込むためのライト要求を送信する(ステップS403、ステップS404、ステップS405、ステップS406)。例えば、記憶デバイス111-1、111-2、111-3にデータを書き込むためのライト要求が送信され、記憶デバイス111-4にパリティを書き込むためのライト要求が送信される。なお、記憶デバイス111へのデータの書き込みは非同期に実行される。
【0070】
記憶デバイス111-1は、データの書き込みが完了した場合、状態1の遅延リスクが発生していることを通知するための遅延リスク通知情報を含む応答をストレージコントローラ110に送信する(ステップS407)。記憶デバイス111-2、111-3、111-4は、データの書き込みが完了した場合、いずれの種類の遅延リスクも発生していないことを通知するための遅延リスク通知情報を含む応答をストレージコントローラ110に送信する(ステップS408、ステップS409、ステップS410)。
【0071】
ストレージコントローラ110は、状態管理情報200の更新処理を実行する(ステップS411)。状態管理情報200の更新処理は
図5で説明したものと同一である。ステップS411では、ストレージコントローラ110は、状態管理情報200に、記憶デバイス111-1に状態1の遅延リスクが発生したことを示すエントリを追加する。
【0072】
ライト処理では、記憶デバイス111へのデータのライトとは独立に、ホスト計算機101にライト要求に対する応答が送信される。ホスト計算機101からは遅延の発生は検知されないため、ライト処理では、遅延リスクの発生に伴う制御は特に行われない。
【0073】
記憶デバイス111は、リード要求及びライト要求の応答に、遅延リスクの発生の有無を通知するための遅延リスク通知情報を含めることができる。
【0074】
ストレージコントローラ110は、周期的に、SENSEコマンド等を用いた記憶デバイス111の状態監視を実行する。デバイスコントローラ120は、遅延リスクの発生の有無を通知するための遅延リスク通知情報を生成し、SENSEコマンドの応答に当該遅延リスク通知情報を含めことができる。
【0075】
ストレージコントローラ110は、遅延リスク通知情報を含む応答を受信した場合、状態管理情報200の更新処理を実行する。
【0076】
実施例1では、遅延リスクの発生が検知された記憶デバイス111にはリード要求が送信されない。そのため、記憶デバイス111は、ライト要求の応答又はSENSEコマンドの応答を介して、遅延リスクが解消し、遅延リスクが発生していないことを通知する。
【0077】
実施例1のストレージコントローラ110は、周期的に、状態管理情報200を用いて閉塞判定処理を実行する。
図7は、実施例1のストレージコントローラ110が実行する閉塞判定処理の一例を説明するフローチャートである。
【0078】
ストレージコントローラ110は、閉塞デバイスリストを初期化し(ステップS501)、状態管理情報200のエントリのループ処理を開始する(ステップS502)。具体的には、ストレージコントローラ110は、状態管理情報200のエントリを一つ選択する。閉塞デバイスリストは、閉塞する記憶デバイス111のIDのリストである。
【0079】
ストレージコントローラ110は、選択したエントリに対応する記憶デバイス111が閉塞デバイスリストに登録されているか否かを判定する(ステップS503)。
【0080】
選択したエントリに対応する記憶デバイス111が閉塞デバイスリストに登録されている場合、ストレージコントローラ110はステップS507に進む。
【0081】
選択したエントリに対応する記憶デバイス111が閉塞デバイスリストに登録されていない場合、ストレージコントローラ110は、選択されたエントリのタイムスタンプ202及び現在時刻に基づいて、遅延リスクの継続時間を算出する(ステップS504)。
【0082】
ストレージコントローラ110は、継続時間が閾値より大きいか否かを判定する(ステップS505)。閾値は予め設定されているものとする。なお、遅延リスクの種別毎に異なる閾値を設定してもよい。
【0083】
継続時間が閾値以下の場合、ストレージコントローラ110はステップS507に進む。
【0084】
継続時間が閾値より大きい場合、ストレージコントローラ110は、選択したエントリに対応する記憶デバイス111を閉塞デバイスリストに登録し(ステップS506)、その後、ステップS507に進む。
【0085】
ステップS507では、ストレージコントローラ110は、状態管理情報200の全てのエントリについて処理が完了したか否かを判定する(ステップS507)。
【0086】
状態管理情報200の全てのエントリについて処理が完了していない場合、ストレージコントローラ110はステップS502に戻り、同様の処理を実行する。
【0087】
状態管理情報200の全てのエントリについて処理が完了した場合、ストレージコントローラ110は、閉塞デバイスリストに登録されている記憶デバイス111の閉塞処理を実行し(ステップS508)、その後、閉塞判定処理を終了する。
【0088】
本発明によれば、記憶デバイス111のI/O処理が遅延する可能性がある場合、ストレージコントローラ110は、当該記憶デバイス111からのデータリードを抑止することによって、記憶デバイス111の閉塞を回避することができる。
【0089】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、置換をすることが可能である。