JP6163855B2 - ストレージシステム、制御装置、制御プログラムおよび制御方法 - Google Patents

ストレージシステム、制御装置、制御プログラムおよび制御方法 Download PDF

Info

Publication number
JP6163855B2
JP6163855B2 JP2013095795A JP2013095795A JP6163855B2 JP 6163855 B2 JP6163855 B2 JP 6163855B2 JP 2013095795 A JP2013095795 A JP 2013095795A JP 2013095795 A JP2013095795 A JP 2013095795A JP 6163855 B2 JP6163855 B2 JP 6163855B2
Authority
JP
Japan
Prior art keywords
storage
error
control device
processing
unit
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
JP2013095795A
Other languages
English (en)
Other versions
JP2014215990A (ja
Inventor
佑太郎 平岡
佑太郎 平岡
達史 ▲高▼村
達史 ▲高▼村
一範 小橋
一範 小橋
安仁 菊地
安仁 菊地
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2013095795A priority Critical patent/JP6163855B2/ja
Priority to EP14161740.7A priority patent/EP2799992A3/en
Priority to US14/229,391 priority patent/US9483371B2/en
Publication of JP2014215990A publication Critical patent/JP2014215990A/ja
Application granted granted Critical
Publication of JP6163855B2 publication Critical patent/JP6163855B2/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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)

Description

本発明は、ストレージシステム、制御装置、制御プログラムおよび制御方法に関する。
従来、物理的な記憶装置のボリューム構成や記憶容量に縛られることなく、自由なボリューム構成、記憶容量の記憶装置を実現することができるストレージシステムとして、仮想化環境向けストレージ、いわゆる仮想化ストレージ装置がある。仮想化ストレージ装置は、装置内部に物理的な記憶装置に対するアクセスを制御する実ストレージ装置を有し、実ストレージ装置を管理するプロセッサにより仮想的なボリュームを作成する。
仮想的なボリュームは、仮想化ストレージ装置内のプロセッサ上に構成され、実ストレージ装置上の物理的な記憶領域との対応付けが行われる。また、各プロセッサに存在するエージェントは、ドライバの制御およびエラーなどのイベントを監視し、マネージャへの通知を行う。マネージャは、仮想化ストレージ装置内の一つのプロセッサに存在し、仮想的なボリュームの構成情報や状態などを管理するとともに、各エージェントを制御する役割を担う。
また、仮想化ストレージ装置では、データを格納する実ストレージ装置に障害が発生した状況を想定して、例えば、仮想的なボリュームを構成するセグメントをミラーリングしている。セグメントは、実ストレージのLUN(Logical Unit Number)から切り出した、一定の大きさの領域である。仮想化ストレージ装置は、障害発生時に、障害が発生したLUNに属するセグメントから、別LUNに属するよう割り当てられているミラー先のセグメントを経由してアクセスを継続することで、ストレージとしての可用性を向上させている。
関連する先行技術として、例えば、論理的な記憶領域を形成する複数のディスクドライブのうちデータの書き込みまたは読み出しの繰り返し回数が多いディスクドライブを特定して、特定されたディスクドライブを閉塞させる技術がある。また、回復可能障害が発生するとメモリ内のカウンタを更新し、しきい値と等しい場合にマネージャにアラーム通知を行う技術がある。また、ハードウェアまたはソフトウェアにより復旧可能な障害発生時の障害内容と障害発生時刻とを記録する外部記憶装置に記録されている障害情報と日付時刻情報から障害発生頻度を算出し、障害発生頻度の許容値を超えたか否かを判断する。
特開2005−251042号公報 特開平05−143377号公報 特開平06−103122号公報
しかしながら、従来技術によれば、ストレージシステム内の複数のプロセッサで共有する実ストレージ装置において発生する入出力エラーの発生から、ミラー先を経由しての入出力再開までの時間が増大するという問題がある。例えば、マネージャにおいて実施される入出力エラーに対するエラー処理がボトルネックとなり、ひいては入出力要求のタイムアウト時間を超えてしまう場合がある。
一つの側面では、本発明は、入出力エラーの発生から再開までの時間を抑えることができるストレージシステム、制御装置、制御プログラムおよび制御方法を提供することを目的とする。
本発明の一側面によれば、第1制御装置と、前記第1制御装置により管理される1または複数の第2制御装置と、第2制御装置によりアクセス可能なストレージユニットとを含むストレージシステムであって、前記第2制御装置は、前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を前記第1制御装置に送信する送信部と、を有し、前記第1制御装置は、前記閉塞処理要求の受信に基づいて、前記ストレージの閉塞処理を行う閉塞処理部と、前記閉塞処理要求の受信に基づいて、前記ストレージのエラー処理を行うエラー処理部と、を有するストレージシステムが提案される。
また、本発明の一側面によれば、アクセス可能なストレージユニットを制御する制御装置が、前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第1制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第1制御装置に送信する制御装置、制御プログラムおよび制御方法が提案される。
本発明の一態様によれば、入出力エラーの発生から再開までの時間を抑えることができるという効果を奏する。
図1は、実施の形態にかかるストレージシステムSMの一実施例を示す説明図である。 図2は、制御装置のハードウェア構成例を示すブロック図である。 図3は、VDISKの構成例を示す説明図である。 図4は、閉塞フラグテーブル400の記憶内容の一例を示す説明図である。 図5は、閉塞リスト500の記憶内容の一例を示す説明図である。 図6は、エラー時刻記録キューの記憶内容の一例を示す説明図である。 図7は、第2制御装置120の機能的構成例を示すブロック図である。 図8は、第1制御装置110の機能的構成例を示すブロック図である。 図9は、第2制御装置120の制御処理手順の一例を示すフローチャートである。 図10は、第2制御装置120のI/O再開処理手順の一例を示すフローチャートである。 図11は、第2制御装置120の閉塞リスト更新処理手順の一例を示すフローチャートである。 図12は、第1制御装置110の制御処理手順の一例を示すフローチャートである。 図13は、第1制御装置110の閉塞処理手順の一例を示すフローチャートである。 図14は、実施例にかかるストレージシステムSMのシステム構成例を示す説明図である。 図15は、セグメントテーブル1500の記憶内容の一例を示す説明図である。 図16は、セグメントテーブル1500の更新例を示す説明図である。 図17は、I/O処理のエラーの発生頻度を示す説明図である。 図18は、実施例にかかるストレージシステムSMの制御処理手順の一例を示すシーケンス図(その1)である。 図19は、実施例にかかるストレージシステムSMの制御処理手順の一例を示すシーケンス図(その2)である。 図20は、実施例にかかるストレージシステムSMの制御処理手順の一例を示すシーケンス図(その3)である。 図21は、実施例にかかるストレージシステムSMの制御処理手順の一例を示すシーケンス図(その4)である。 図22は、LUNの閉塞解除例を示す説明図である。
以下に図面を参照して、本発明にかかるストレージシステム、制御装置、制御プログラムおよび制御方法の実施の形態を詳細に説明する。
(実施の形態)
図1は、実施の形態にかかるストレージシステムSMの一実施例を示す説明図である。図1において、ストレージシステムSMは、基本ノード101と、拡張ノード102−1〜102−Kとを含む(K:2以上の自然数)。以下の説明では、拡張ノード102−1〜102−Kのうち任意の拡張ノードを「拡張ノード102−k」と表記する場合がある(k=1,2,…,K)。
基本ノード101は、第1制御装置110と、第2制御装置120と、第1ストレージユニット130とを有し、単独でストレージ装置として動作することができる。また、拡張ノード102−kは、第2制御装置120と、第2ストレージユニット140とを有する。
第1ストレージユニット130は、第1ストレージ制御部131と、第1ストレージ132とを有する。第1ストレージ制御部131は、第1ストレージ132に対するアクセスを制御する。また、第2ストレージユニット140は、第2ストレージ制御部141と、第2ストレージ142とを有する。第2ストレージ制御部141は、第2ストレージ142に対するアクセスを制御する。
第1ストレージ132および第2ストレージ142は、それぞれ一以上の記憶装置Dを含む。記憶装置Dは、例えば、ハードディスク、光ディスク、フラッシュメモリ、磁気テープなどの物理的な記憶装置であってもよく、また、論理的な記憶装置であるLUNであってもよい。
なお、拡張ノード102−kの第2制御装置120および第2ストレージユニット140は、ストレージシステムSMに増設されるいわゆる「部材」であり、例えば、ストレージシステムSMに組み込まれてストレージ装置として機能する。
ここで、第1制御装置110は、ストレージシステムSM内の複数の第2制御装置120を制御するコンピュータである。また、第1制御装置110は、基本ノード101に拡張ノード102が接続されると、第2ストレージ142を利用可能な状態にしてストレージシステムSM全体の記憶容量を拡張する機能を有する。
なお、第1制御装置110は、自制御装置と第2制御装置120のマネージャの機能だけでなく、ストレージユニット130,140に対してアクセスを行うストレージの制御装置の機能を有する。また、基本ノード単独稼働の場合に備え、基本ノード101における第1制御装置110と第2制御装置120は、冗長構成(片方が故障しても他方で動作可能)となっている。例えば、第1制御装置110が故障した場合は、基本ノード101における第2制御装置120が第1制御装置110として動作する。
第2制御装置120は、自配下のストレージユニットを制御するコンピュータである。第2制御装置120は、例えば、基本ノード101に拡張ノード102−kが接続されると、第1ストレージ132および第2ストレージ142を自配下のストレージユニットとして管理する。そして、第2制御装置120は、第1ストレージ132および第2ストレージ142に対するアクセスを受け付ける。
第1制御装置110、第2制御装置120、第1ストレージユニット130および第2ストレージユニット140は、筐体間接続用の通信路150によりそれぞれ接続される。このため、ストレージシステムSM内の各第2制御装置120は、第1ストレージユニット130および第2ストレージユニット140に直接アクセス可能である。
ストレージシステムSMは、例えば、ワイドストライピングによるデータアクセスを行う。ワイドストライピングによれば、アクセス集中による性能低下を抑止し、業務サーバ等の上位装置からのストレージシステムSMへのアクセス量やボリュームの物理的位置を意識した複雑な性能設計を行うことなく、安定した性能を確保することができる。
なお、ボリュームとは、ストレージシステムSMの管理単位となる記憶領域である。具体的には、例えば、ボリュームは、複数の物理的な記憶装置または記憶装置(例えば、ハードディスク)内のパーティションをグループ化して、仮想的に一つのボリュームとした論理ボリュームであってもよい。
詳細な説明は図3を用いて後述するが、例えば、ボリュームは、複数のセグメントセットの集合体であり、各セグメントセットは、複数のセグメントの集合体である。また、セグメントは、所定容量で規定された管理単位の記憶領域であり、ホストからボリュームへの記録再生指示アドレス(LBA)等の位置情報で管理される。
また、ストレージシステムSMでは、例えば、ストレージユニット内のデータを格納する記憶装置Dに障害が発生した状況を想定して、記憶装置Dに格納するデータをミラーリングしている。第2制御装置120は、障害発生時に、障害が発生した記憶装置Dのミラー先の記憶装置Dを経由してアクセスを継続することで、ストレージシステムSMとしての可用性を向上させることができる。
また、ストレージシステムSMは、要求される記憶容量の増加に伴って、ストレージシステムSM全体の記憶領域を拡張することができる。図1の例では、基本ノード101に拡張ノード102−1〜102−Kが順次増設されて、ストレージシステムSMのスケールアウトが行われている。このように、ストレージシステムSMは、ノード拡張によって第2制御装置120および第2ストレージユニット140を追加することにより、基本構成のときよりも多数のボリュームを業務サーバ等に提供することができる。
ところが、ノード拡張後において、例えば、あるストレージユニット内の記憶装置Dが故障すると、故障した記憶装置Dに対する入出力処理のエラーが大量に発生する場合がある。例えば、あるLUNが複数の仮想的なボリュームに利用される場合、1つのLUNが故障した際に、多数のボリュームを経由して大量のエラーが発生してしまう場合がある。
また、入出力処理のエラー発生時に、その都度、第2制御装置120から第1制御装置110にエラー通知されると、第1制御装置110において個々に実施されるエラー処理がボトルネックとなり、入出力処理の再開が遅延する場合がある。入出力処理のエラー発生から再開までの時間は、例えば、入出力要求を発行した業務サーバの入出力処理が停止しているため、この時間が長くなると、業務サーバの入出力処理がタイムアウトで失敗してしまう場合がある。
そこで、本実施の形態では、第2制御装置120が記憶装置Dに対する入出力処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値以上となったら第1制御装置110に依頼して記憶装置Dを閉塞させる。以降、第2制御装置120は、閉塞した記憶装置Dに対する入出力処理のエラーの発生時に第1制御装置110にエラー通知せず入出力処理を再開する。これにより、入出力処理のエラー発生から再開までの時間を抑える。以下、ストレージシステムSMの制御処理例について説明する。
(1)第2制御装置120は、アクセス可能なストレージユニット内のいずれかのストレージSfに対する入出力処理のエラーを検出する。ここで、アクセス可能なストレージユニットは、例えば、第1ストレージユニット130および各拡張ノード102−1〜102−Kの第2ストレージユニット140である。
また、ストレージSfは、例えば、第1ストレージ132および第2ストレージ142に含まれるいずれかの記憶装置Dである。また、ストレージSfに対する入出力処理は、ストレージSfにデータを入力またはストレージSfからデータを出力する処理である。以下の説明では、入出力処理を「I/O(Input/Output)処理」と表記する場合がある。
I/O処理のエラーの発生要因としては、例えば、ストレージユニットの一時的な電源断や、第2制御装置120とストレージユニットとの間の通信障害や、ストレージユニットにおけるソフトウェアまたはハードウェアの不具合などがある。具体的には、例えば、第2制御装置120は、ストレージ制御部(第1ストレージ制御部131または第2ストレージ制御部141)からストレージSfに対するI/O処理の失敗を示す通知を受信した場合に、ストレージSfに対するI/O処理のエラーを検出する。
(2)第2制御装置120は、ストレージSfに対するI/O処理のエラーを検出した場合、ストレージSfが閉塞状態であるか否かを判断する。ここで、閉塞状態とは、ストレージSfに対するI/O処理のエラー発生時に、ストレージSfのエラー情報を第1制御装置110に通知しない状態である。
(3)第2制御装置120は、ストレージSfが閉塞状態ではない場合、ストレージSfに対するI/O処理のエラーの発生頻度が所定値X以上か否かを判定する。具体的には、例えば、第2制御装置120は、一定期間T内のストレージSfに対するI/O処理のエラーの発生回数が所定数N以上か否かを判定する(X=N/T)。
(4)第2制御装置120は、エラーの発生頻度が所定値X以上の場合、ストレージSfの閉塞処理要求を第1制御装置110に送信する。ここで、閉塞処理要求とは、ストレージSfの閉塞処理を実行するよう第1制御装置110に要求するものである。
(5)第1制御装置110は、閉塞処理要求を受信した場合、ストレージSfの閉塞処理を行う。ここで、閉塞処理とは、第1制御装置110におけるストレージSfの状態を閉塞状態に変更するとともに、ストレージシステムSM内の各第2制御装置120に閉塞要求を送信する処理である。
また、閉塞要求とは、ストレージSfを閉塞状態に変更するよう第2制御装置120に要求するものである。ストレージシステムSM内の各第2制御装置120は、第1制御装置110からストレージSfの閉塞要求を受信した場合、ストレージSfの状態を閉塞状態に変更する。
(6)第1制御装置110は、ストレージSfのエラー処理を行う。ここで、エラー処理とは、例えば、I/O処理のエラーが発生したストレージSfのミラー先のストレージのデータを空きのストレージに複製することにより、ミラー構成を回復する処理である。
(7)第1制御装置110は、ストレージSfのエラー処理が完了した場合、ストレージSfに対するI/O処理の再開処理要求を第2制御装置120に送信する。ここで、再開処理要求とは、I/O処理のエラーが発生したストレージSfのミラー先のストレージにアクセスして、I/O処理を再開するよう要求するものである。
(8)第2制御装置120は、第1制御装置110から再開処理要求を受信した場合、I/O処理の再開処理を行う。具体的には、例えば、第2制御装置120は、I/O処理のエラーが発生したストレージSfのミラー先のストレージにアクセスして、I/O処理を再開する。
(9)第2制御装置120は、上記(2)において、I/O処理のエラーが発生したストレージSfが閉塞状態の場合、I/O処理の再開処理を行う。すなわち、第2制御装置120は、ストレージSfが閉塞状態の場合は、第1制御装置110に対するエラー通知を行うことなく、ストレージSfのミラー先のストレージにアクセスして、I/O処理を再開する。
このように、ストレージシステムSMの第2制御装置120によれば、ストレージSfに対するI/O処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値X以上の場合に、ストレージSfの閉塞処理要求を第1制御装置110に送信することができる。また、ストレージシステムSMの第1制御装置110によれば、第2制御装置120から閉塞処理要求を受信した場合に、ストレージSfの閉塞処理を行うことができる。これにより、ストレージシステムSM内の各第2制御装置120において、ストレージSfの状態を閉塞状態に変更することができる。
また、第2制御装置120によれば、ストレージSfに対するI/O処理のエラーを検出した際に、ストレージSfが閉塞状態である場合には、第1制御装置110に対するエラー通知を行うことなく、I/O処理の再開処理を行うことができる。これにより、ストレージSfが閉塞状態の場合は、第1制御装置110におけるエラー処理が行われることなくI/O処理が再開されるため、I/O処理のエラー発生から再開までの時間を抑えることができる。
なお、以下の説明では、ストレージシステムSM内の第1ストレージ132および第2ストレージ142に含まれる記憶装置Dの一例として、「LUN」を例に挙げて説明する。また、ストレージシステムSMにより提供される仮想的なボリュームを「VDISK」と表記する場合がある。
(制御装置のハードウェア構成例)
つぎに、図1に示した第1制御装置110および第2制御装置120(ここでは、単に「制御装置」と称する)のハードウェア構成例について説明する。
図2は、制御装置のハードウェア構成例を示すブロック図である。図2において、制御装置は、CPU(Central Processing Unit)201と、メモリ202と、I/F(Interface)203と、を有する。また、各構成部はバス210によってそれぞれ接続されている。
ここで、CPU201は、制御装置の全体の制御を司る。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。より具体的には、例えば、フラッシュROMがOSやファームウェアなどのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU201のワークエリアとして使用される。メモリ202に記憶されているプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させることになる。
I/F203は、他のコンピュータからのデータの入出力を制御する。具体的には、例えば、I/F203は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワークに接続され、このネットワークを介して他のコンピュータに接続される。そして、I/F203は、ネットワークと内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。なお、図1に示した第1ストレージ制御部131および第2ストレージ制御部141についても、制御装置と同様のハードウェア構成により実現することができる。
(VDISKの構成例)
ここで、ストレージシステムSMにより提供されるVDISKの構成例について説明する。
図3は、VDISKの構成例を示す説明図である。図3において、VDISK#iは、複数のセグメントセット#1〜#nの集合体である(i:自然数、n:2以上の自然数)。各セグメントセット#1〜#nは、8個のセグメント#1〜#8の集合体である。各セグメントセット#1〜#nの容量は、例えば、2[GB]である。また、各セグメント#1〜#8の容量は、例えば、256[MB]である。
各セグメント#1〜#8は、ストレージシステムSMに含まれるストレージユニット内のLUNごとに割り当てられる。ユーザのデータは、固定長のストリップ(1[MB])単位で記録される。また、このストリップはセグメント#1〜#8を順に利用する形でストライピングされる。なお、以下の説明では、VDISKを構成するセグメントに割り当てられた任意のLUNを「LUN#j」と表記する場合がある。
(閉塞フラグテーブル400の記憶内容)
つぎに、第1制御装置110が用いる閉塞フラグテーブル400の記憶内容について説明する。閉塞フラグテーブル400は、例えば、図2に示した第1制御装置110のメモリ202により実現される。
図4は、閉塞フラグテーブル400の記憶内容の一例を示す説明図である。図4において、閉塞フラグテーブル400は、LUNおよび閉塞フラグのフィールドを有し、各フィールドに情報を設定することで、ストレージシステムSMに含まれるストレージユニット内の各LUNの閉塞状態をレコードとして記憶する。
ここで、LUNは、ストレージシステムSMに含まれるストレージユニット内のLUNである。閉塞フラグは、LUNの閉塞状態を示すフラグである。閉塞フラグは、「ON」の場合にLUNが閉塞状態であることを示し、「OFF」の場合にLUNが閉塞状態ではないことを示す。なお、閉塞フラグは、初期状態では「OFF」である。
(閉塞リスト500の記憶内容)
つぎに、第2制御装置120が用いる閉塞リスト500の記憶内容について説明する。閉塞リスト500は、例えば、図2に示した第2制御装置120のメモリ202により実現される。
図5は、閉塞リスト500の記憶内容の一例を示す説明図である。図5において、閉塞リスト500は、ストレージシステムSM内の複数のLUNのうち閉塞状態となっているLUNを示す情報である。閉塞リスト500によれば、例えば、LUN#2、LUN#5が閉塞状態となっていることを認識することができる。
(エラー時刻記録キューの記憶内容)
つぎに、エラー時刻記録キューQ1,Q2の記憶内容について説明する。エラー時刻記録キューQ1は、例えば、第1制御装置110のメモリ202により実現される。また、エラー時刻記録キューQ2は、例えば、第2制御装置120のメモリ202により実現される。
図6は、エラー時刻記録キューの記憶内容の一例を示す説明図である。図6において、エラー時刻記録キューQ1,Q2は、先に入力されたデータが先に出力されるデータ構造である。エラー時刻記録キューQ1は、Nm個のデータを格納する。エラー時刻記録キューQ2は、Na個のデータを格納する。
データとしては、LUN#jを識別する情報(例えば、LUN番号:Storage001_LUN001)と対応付けて、例えば、LUN#jのエラーが発生した時刻(例えば、2012−07−28T11:35:59)と、LUN#jのエラーが発生した位置(例えば、ディスク上のセクタ番号)などが記憶される。
(制御装置の機能的構成例)
つぎに、図7および図8を用いて、第1制御装置110および第2制御装置120の機能的構成例について説明する。ここでは、まず、第2制御装置120の機能的構成例について説明する。
図7は、第2制御装置120の機能的構成例を示すブロック図である。図7において、第2制御装置120は、検出部701と、判断部702と、再開処理部703と、算出部704と、判定部705と、送信部706と、受信部707と、を含む構成である。各機能部は、具体的には、例えば、図2に示した第2制御装置120のメモリ202に記憶されたプログラムをCPU201に実行させることにより、または、I/F203により、その機能を実現する。各機能部の処理結果は、例えば、メモリ202に記憶される。
検出部701は、ストレージユニット内のいずれかのLUN#jのセグメントに対するI/O処理のエラーを検出する機能を有する。ここで、LUN#jは、第2制御装置120上に作成されたVDISK(ボリューム)を構成するセグメントに割り当てられたLUNである。LUN#jは、複数のVDISKに利用される場合がある。
具体的には、例えば、検出部701は、LUN#jのセグメントに対するアクセスを制御するストレージ制御部(第1ストレージ制御部131または第2ストレージ制御部141)から、LUN#jのセグメントに対するI/O処理のエラー通知を受信した場合に、LUN#jのセグメントに対するI/O処理のエラーを検出する。
検出された検出結果は、例えば、図6に示したエラー時刻記録キューQ2に記憶される。具体的には、例えば、LUN#jのセグメントでエラーが発生したエラー発生時刻と、LUN#jのセグメントでエラーが発生した位置などがエラー情報としてエラー時刻記録キューQ2に記録される。これにより、第2制御装置120上に作成されるVDISKを構成するセグメントに割り当てられたLUN#jのセグメントに対するI/O処理のエラーの発生頻度を監視することができる。
判断部702は、検出部701によるLUN#jのセグメントに対するI/O処理のエラーの検出に基づいて、LUN#jが閉塞状態であるか否かを判断する機能を有する。具体的には、例えば、判断部702は、LUN#jのセグメントに対するI/O処理のエラーが検出された場合、LUN#jが閉塞状態であるか否かを判断する。
より具体的には、例えば、判断部702は、閉塞リスト500(図5参照)にLUN#jが登録されている場合に、LUN#jが閉塞状態であると判断する。一方、閉塞リスト500にLUN#jが登録されていない場合には、判断部702は、LUN#jが閉塞状態ではないと判断する。
再開処理部703は、I/O処理のエラーが検出されたLUN#jのセグメントに対するI/O処理の再開処理を実行する機能を有する。具体的には、例えば、再開処理部703は、判断部702によってLUN#jが閉塞状態であると判断された場合に、LUN#jのセグメントに対するI/O処理の再開処理を実行する。
より具体的には、例えば、再開処理部703は、記憶部710に記憶された構成情報を参照して、I/O処理のエラーが検出されたLUN#jのセグメントのミラー先のセグメントを特定し、ミラー先のセグメントに対するI/O処理を実行する。ここで、構成情報は、第1ストレージ132の記憶領域の構成および第2ストレージ142の記憶領域の構成を示す情報である。
この構成情報には、例えば、VDISKを構成するセグメントが第1ストレージ132および第2ストレージ142内のどのLUNに割り当てられているかを示す情報や、各セグメントのミラー先のセグメントを示す情報などが含まれている。なお、構成情報は、例えば、第1制御装置110の構成管理DB810(図8参照)から読み出すことにより取得される。また、記憶部710は、例えば、第2制御装置120のメモリ202により実現される。
算出部704は、ストレージシステムSM内の複数の第2制御装置120上に作成されたVDISK(ボリューム)の総数Vallと、第2制御装置120の総数Aallと、第2制御装置120のiops(input output per second)とに基づいて、LUN#jの閉塞条件となる所定値Xaを算出する機能を有する。
ここで、VDISKの総数Vallと第2制御装置120の総数Aallは、例えば、ストレージシステムSMの構成変更時などに、第1制御装置110から第2制御装置120に通知される。また、VDISKの総数Vallは、記憶部710に記憶された構成情報から特定されることにしてもよい。
また、iopsは、第2制御装置120において1秒間に発行されるVDISKに対するI/O要求の平均個数である。iopsは、例えば、第2制御装置120により測定される。具体的には、例えば、算出部704は、下記式(1)を用いて、LUN#jの閉塞条件となる所定値Xaを算出することができる。
Xa=(Vall/Aall)・iops[errors/sec] ・・・(1)
なお、LUN#jの閉塞条件についての詳細な説明については、図17を用いて後述する。
判定部705は、判断部702によるLUN#jが閉塞状態ではないとの判断に基づいて、LUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xa以上か否かを判定する機能を有する。具体的には、例えば、判定部705は、LUN#jが閉塞状態ではないと判断された場合、LUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xa以上か否かを判定する。
より具体的には、例えば、まず、判定部705は、エラー時刻記録キューQ2から、最古のエラー情報(Na回前に発生したエラーのデータ)と、最新のエラー情報(今回発生したエラーのデータ)を取得する。
つぎに、判定部705は、最新のエラー情報のエラー時刻ta1と最古のエラー情報のエラー時刻ta2との差分時刻Δtaを算出する。差分時刻Δtaは、最古のエラー情報のエラー時刻ta2から最新のエラー情報のエラー時刻ta1までの経過時間である。そして、判定部705は、算出した差分時刻Δtaが閾値Ta以下か否かを判定する。
ここで、差分時刻Δtaが閾値Ta以下の場合、判定部705は、LUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xa以上であると判定する。一方、差分時刻Δtaが閾値Taより大きい場合、判定部705は、LUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xa未満であると判定する。
なお、エラー時刻記録キューQ2に格納される最大データ数Naは、例えば、算出部704によって算出された所定値Xaから導出される。具体的には、例えば、閾値Taを1[sec]とすると、最大データ数Naは、「Na=Xa」となる。ただし、閾値Taは、例えば、予め設定されてメモリ202に記憶されていてもよい。
送信部706は、判定部705によるエラーの発生頻度が所定値Xa以上であるとの判定に基づいて、LUN#jの閉塞処理要求を第1制御装置110に送信する機能を有する。具体的には、例えば、送信部706は、エラーの発生頻度が所定値Xa以上と判定された場合、LUN#jの閉塞処理要求を第1制御装置110に送信する。ここで、閉塞処理要求とは、LUN#jの閉塞処理を実行するよう第1制御装置110に要求するものである。
また、送信部706は、エラーの発生頻度が所定値Xa未満であるとの判定に基づいて、LUN#jのセグメントに対するI/O処理のエラーが発生したことを示すエラー情報を第1制御装置110に送信する機能を有する。具体的には、例えば、送信部706は、エラーの発生頻度が所定値Xa未満と判定された場合、エラー時刻記録キューQ2から最新のエラー情報(今回発生したエラーのデータ)を取得して、最新のエラー情報を第1制御装置110に送信する。
受信部707は、第1制御装置110から再開処理要求を受信する機能を有する。ここで、再開処理要求は、I/O処理のエラーが発生したLUN#jのセグメントのミラー先のセグメントにアクセスして、I/O処理を再開するよう要求するものである。また、再開処理部703は、受信部707によって再開処理要求が受信された場合、LUN#jのセグメントに対するI/O処理の再開処理を実行する。
また、受信部707は、第1制御装置110からLUN#jの閉塞要求を受信する機能を有する。ここで、閉塞要求は、LUN#jを閉塞状態に変更するよう第2制御装置120に要求するものである。閉塞要求には、LUN#jを識別する情報(例えば、LUN番号)が含まれている。閉塞要求が受信された場合、LUN#jを識別する情報が閉塞リスト500に記憶される。これにより、LUN#jを閉塞状態に変更することができる。
また、受信部707は、第1制御装置110からLUN#jの閉塞解除要求を受信する機能を有する。ここで、閉塞解除要求は、LUN#jの閉塞状態を解除するよう第2制御装置120に要求するものである。閉塞解除要求には、LUN#jを識別する情報が含まれている。閉塞解除要求が受信された場合、閉塞リスト500から閉塞解除対象となるLUN#jの情報が削除される。これにより、LUN#jの閉塞状態を解除することができる。
つぎに、第1制御装置110の機能的構成例について説明する。
図8は、第1制御装置110の機能的構成例を示すブロック図である。図8において、第1制御装置110は、受信部801と、閉塞処理部802と、エラー処理部803と、判断部804と、判定部805と、送信部806と、閉塞解除部807と、を含む構成である。各機能部は、具体的には、例えば、図2に示した第1制御装置110のメモリ202に記憶されたプログラムをCPU201に実行させることにより、または、I/F203により、その機能を実現する。また、各機能部の処理結果は、例えば、メモリ202に記憶される。
受信部801は、第2制御装置120からLUN#jの閉塞処理要求を受信する機能を有する。また、受信部801は、第2制御装置120からLUN#jのセグメントのエラー情報を受信する機能を有する。受信されたLUN#jのセグメントのエラー情報は、例えば、図6に示したエラー時刻記録キューQ1に格納される。
閉塞処理部802は、受信部801による閉塞処理要求の受信に基づいて、LUN#jの閉塞処理を行う機能を有する。ここで、閉塞処理は、第1制御装置110におけるLUN#jの状態を閉塞状態に変更するとともに、ストレージシステムSM内の各第2制御装置120にLUN#jの閉塞要求を送信する処理である。
具体的には、例えば、閉塞処理部802は、閉塞処理要求が受信された場合、図4に示した閉塞フラグテーブル400内のLUN#jの閉塞フラグを「OFF」から「ON」に変更する。そして、閉塞処理部802は、ストレージシステムSM内の各第2制御装置120にLUN#jの閉塞要求を送信する。
エラー処理部803は、LUN#jのセグメントに対するI/O処理のエラー処理を実行する機能を有する。具体的には、例えば、エラー処理部803は、受信部801によって閉塞処理要求が受信された場合、LUN#jのセグメントに対するI/O処理のエラー処理を実行する。また、エラー処理部803は、受信部801によってエラー情報が受信された場合、LUN#jのセグメントに対するI/O処理のエラー処理を実行する。ここで、エラー処理は、I/O処理のエラーが発生したLUN#jのセグメントのミラー先のセグメントのデータを空きのLUNのセグメントに複製することにより、ミラー構成を回復する処理である。
具体的には、例えば、エラー処理部803は、構成管理DB810を参照して、LUN#jのセグメントのエラー処理を実行する。ここで、構成管理DB810は、第1ストレージ132の記憶領域の構成および第2ストレージ142の記憶領域の構成を示す構成情報を記憶するデータベースである。なお、エラー処理の具体的な説明については、図16を用いて後述する。
判断部804は、受信部801によるエラー情報の受信に基づいて、LUN#jが閉塞状態であるか否かを判断する機能を有する。具体的には、例えば、判断部804は、エラー情報が受信された場合、閉塞フラグテーブル400を参照して、LUN#jの閉塞フラグが「ON」の場合に、LUN#jが閉塞状態であると判断する。一方、LUN#jの閉塞フラグが「OFF」の場合には、判断部804は、LUN#jが閉塞状態ではないと判断する。
判定部805は、判断部804によるLUN#jが閉塞状態ではないとの判断に基づいて、LUN#jに対するI/O処理のエラーの発生頻度が所定値Xm以上か否かを判定する機能を有する。ここで、所定値Xmは、LUN#jの閉塞条件となる値である。具体的には、例えば、所定値Xmは、例えば、下記式(2)を用いて設定される。ただし、Pmgrは、第1制御装置110でのLUN#jのエラー処理にかかる処理時間である。Pmgrは、第1制御装置110の処理性能に応じて設定される。
Xm=(1/Pmgr)[errors/sec] ・・・(2)
具体的には、例えば、まず、判定部805は、LUN#jが閉塞状態ではないと判断された場合、エラー時刻記録キューQ1から、最古のエラー情報(Nm回前に発生したエラーのデータ)と、最新のエラー情報(今回発生したエラーのデータ)を取得する。つぎに、判定部805は、最新のエラー情報のエラー時刻tm1と最古のエラー情報のエラー時刻tm2との差分時刻Δtmを算出する。差分時刻Δtmは、最古のエラー情報のエラー時刻tm2から最新のエラー情報のエラー時刻tm1までの経過時間である。そして、判定部805は、算出した差分時刻Δtmが閾値Tm以下か否かを判定する。
ここで、差分時刻Δtmが閾値Tm以下の場合、判定部805は、LUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xm以上であると判定する。この場合、判定部805は、閉塞フラグテーブル400内のLUN#jの閉塞フラグを「OFF」から「ON」に変更する。一方、差分時刻Δtmが閾値Tmより大きい場合、判定部805は、LUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xm未満であると判定する。
なお、エラー時刻記録キューQ1に格納される最大データ数Nmは、例えば、所定値Xmから導出される。具体的には、例えば、閾値Tmを1[sec]とすると、最大データ数Nmは、「Nm=Xm」となる。なお、閾値Tmは、例えば、予め設定されてメモリ202に記憶されている。
送信部806は、ストレージシステムSM内の各第2制御装置120にLUN#jの閉塞要求を送信する機能を有する。具体的には、例えば、判定部805によってLUN#jのセグメントに対するI/O処理のエラーの発生頻度が所定値Xm以上と判定された場合、ストレージシステムSM内の各第2制御装置120にLUN#jの閉塞要求を送信する。
また、送信部806は、LUN#jのセグメントに対するI/O処理の再開処理要求を第2制御装置120に送信する機能を有する。具体的には、例えば、送信部806は、LUN#jのセグメントのエラー処理が実行された場合、LUN#jのセグメントに対するI/O処理の再開処理要求を第2制御装置120に送信する。なお、再開処理要求の送信先となる第2制御装置120は、閉塞処理要求またはエラー情報の送信元の第2制御装置120である。
閉塞解除部807は、LUN#jの閉塞状態を解除する機能を有する。具体的には、例えば、閉塞解除部807は、第2制御装置120を制御して、閉塞状態のLUN#jに対するテストI/O要求を発行する。閉塞状態のLUN#jは、例えば、閉塞フラグテーブル400内の閉塞フラグが「ON」のLUNである。
そして、閉塞解除部807は、テストI/O要求が正常に処理された場合に、LUN#jの閉塞状態を解除する。この場合、閉塞解除部807は、閉塞状態を解除したLUN#jに対応する閉塞フラグテーブル400内の閉塞フラグを「ON」から「OFF」に変更する。そして、閉塞解除部807は、ストレージシステムSM内の各第2制御装置120にLUN#jの閉塞解除要求を送信する。
(第2制御装置120の各種処理手順)
つぎに、第2制御装置120の各種処理手順について説明する。まず、第2制御装置120の制御処理手順について説明する。
図9は、第2制御装置120の制御処理手順の一例を示すフローチャートである。図9のフローチャートにおいて、まず、第2制御装置120は、ストレージユニット内のいずれかのLUN#jのセグメントに対するI/O処理のエラーを検出したか否かを判断する(ステップS901)。
ここで、第2制御装置120は、エラーを検出するのを待つ(ステップS901:No)。そして、第2制御装置120は、エラーを検出した場合(ステップS901:Yes)、LUN#jが閉塞状態であるか否かを判断する(ステップS902)。
ここで、LUN#jが閉塞状態ではない場合(ステップS902:No)、第2制御装置120は、エラー時刻記録キューQ2にエラー時刻ta1を記録する(ステップS903)。つぎに、第2制御装置120は、エラー時刻記録キューQ2から、Na回前に発生したエラーのエラー時刻ta2を取得する(ステップS904)。
そして、第2制御装置120は、エラー時刻ta1とエラー時刻ta2との差分時刻Δtaが閾値Ta以下か否かを判定する(ステップS905)。ここで、差分時刻Δtaが閾値Taより大きい場合(ステップS905:No)、第2制御装置120は、LUN#jのセグメントのエラー情報を第1制御装置110に送信して(ステップS906)、本フローチャートによる一連の処理を終了する。
一方、差分時刻Δtaが閾値Ta以下の場合(ステップS905:Yes)、第2制御装置120は、LUN#jの閉塞処理要求を第1制御装置110に送信して(ステップS907)、本フローチャートによる一連の処理を終了する。
また、ステップS902において、LUN#jが閉塞状態の場合(ステップS902:Yes)、第2制御装置120は、エラーが発生したLUN#jのセグメントに対するI/O処理の再開処理を実行し(ステップS908)、本フローチャートによる一連の処理を終了する。
これにより、LUN#jのセグメントに対するI/O処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値Xa以上の場合に、LUN#jの閉塞処理要求を第1制御装置110に送信することができる。また、LUN#jのセグメントに対するI/O処理のエラーを検出した際に、LUN#jが閉塞状態である場合には、第1制御装置110に対するエラー通知を行うことなく、I/O処理の再開処理を行うことができる。
つぎに、第2制御装置120のI/O再開処理手順について説明する。
図10は、第2制御装置120のI/O再開処理手順の一例を示すフローチャートである。図10において、第2制御装置120は、第1制御装置110から再開処理要求を受信したか否かを判断する(ステップS1001)。
ここで、第2制御装置120は、再開処理要求を受信するのを待つ(ステップS1001:No)。そして、第2制御装置120は、再開処理要求を受信した場合(ステップS1001:Yes)、エラーが発生したLUN#jのセグメントに対するI/O処理の再開処理を実行して(ステップS1002)、本フローチャートによる一連の処理を終了する。
これにより、第1制御装置110から再開処理要求を受信した場合にI/O処理の再開処理を行うことができる。
つぎに、第2制御装置120の閉塞リスト更新処理手順について説明する。
図11は、第2制御装置120の閉塞リスト更新処理手順の一例を示すフローチャートである。図11のフローチャートにおいて、まず、第2制御装置120は、第1制御装置110からLUN#jの閉塞要求を受信したか否かを判断する(ステップS1101)。
ここで、閉塞要求を受信した場合(ステップS1101:Yes)、第2制御装置120は、閉塞要求に含まれるLUN#jを識別する情報を閉塞リスト500に登録して(ステップS1102)、本フローチャートによる一連の処理を終了する。
一方、閉塞要求を受信していない場合(ステップS1101:No)、第2制御装置120は、第1制御装置110からLUN#jの閉塞解除要求を受信したか否かを判断する(ステップS1103)。ここで、閉塞解除要求を受信していない場合(ステップS1103:No)、第2制御装置120は、ステップS1101に戻る。
一方、閉塞解除要求を受信した場合(ステップS1103:Yes)、第2制御装置120は、閉塞リスト500から閉塞解除対象となるLUN#jの情報を削除して(ステップS1104)、本フローチャートによる一連の処理を終了する。これにより、LUN#jの閉塞状態を管理することができる。
(第1制御装置110の各種処理手順)
つぎに、第1制御装置110の各種処理手順について説明する。まず、第1制御装置110の制御処理手順について説明する。
図12は、第1制御装置110の制御処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、第1制御装置110は、第2制御装置120からLUN#jのセグメントのエラー情報を受信したか否かを判断する(ステップS1201)。
ここで、第1制御装置110は、LUN#jのセグメントのエラー情報を受信するのを待つ(ステップS1201:No)。そして、第1制御装置110は、LUN#jのセグメントのエラー情報を受信した場合(ステップS1201:Yes)、閉塞フラグテーブル400内のLUN#jの閉塞フラグが「ON」か否かを判断する(ステップS1202)。
ここで、LUN#jの閉塞フラグが「ON」の場合(ステップS1202:Yes)、第1制御装置110は、ステップS1208に移行する。一方、LUN#jの閉塞フラグが「OFF」の場合(ステップS1202:No)、第1制御装置110は、エラー時刻記録キューQ1にエラー時刻tm1を記録する(ステップS1203)。
つぎに、第1制御装置110は、エラー時刻記録キューQ1から、Nm回前に発生したエラーのエラー時刻tm2を取得する(ステップS1204)。そして、第1制御装置110は、エラー時刻tm1とエラー時刻tm2との差分時刻Δtmが閾値Tm以下か否かを判定する(ステップS1205)。
ここで、差分時刻Δtmが閾値Tmより大きい場合(ステップS1205:No)、第1制御装置110は、ステップS1208に移行する。一方、差分時刻Δtmが閾値Tm以下の場合(ステップS1205:Yes)、第1制御装置110は、閉塞フラグテーブル400内のLUN#jの閉塞フラグを「OFF」から「ON」に変更する(ステップS1206)。
そして、第1制御装置110は、各拡張ノード102−1〜102−Kの第2制御装置120にLUN#jの閉塞要求を送信する(ステップS1207)。つぎに、第1制御装置110は、LUN#jのセグメントのエラー処理を実行する(ステップS1208)。そして、第1制御装置110は、LUN#jのセグメントに対するI/O処理の再開処理要求を第2制御装置120に送信して(ステップS1209)、本フローチャートによる一連の処理を終了する。
これにより、ストレージシステムSM内の各第2制御装置120におけるLUN#jのセグメントに対するI/O処理のエラーの発生頻度を監視し、エラーの発生頻度が所定値Xm以上の場合に、LUN#jの閉塞要求を第2制御装置120に送信することができる。
つぎに、第1制御装置110の閉塞処理手順について説明する。
図13は、第1制御装置110の閉塞処理手順の一例を示すフローチャートである。図13のフローチャートにおいて、まず、第1制御装置110は、第2制御装置120からLUN#jの閉塞処理要求を受信したか否かを判断する(ステップS1301)。ここで、第1制御装置110は、閉塞処理要求を受信するのを待つ(ステップS1301:No)。
そして、第1制御装置110は、閉塞処理要求を受信した場合(ステップS1301:Yes)、閉塞フラグテーブル400内のLUN#jの閉塞フラグを「OFF」から「ON」に変更する(ステップS1302)。そして、第1制御装置110は、各拡張ノード102−1〜102−Kの第2制御装置120にLUN#jの閉塞要求を送信する(ステップS1303)。
つぎに、第1制御装置110は、LUN#jのセグメントのエラー処理を実行する(ステップS1304)。そして、第1制御装置110は、LUN#jのセグメントに対するI/O処理の再開処理要求を第2制御装置120に送信して(ステップS1305)、本フローチャートによる一連の処理を終了する。
これにより、第2制御装置120からLUN#jの閉塞処理要求を受信した場合にストレージシステムSM内の各第2制御装置120にLUN#jの閉塞要求を送信することができる。
以上説明したように、実施の形態にかかる第2制御装置120によれば、LUN#jのセグメントに対するI/O処理のエラーを検出した場合に、LUN#jが閉塞状態であるか否かを判断することができる。また、第2制御装置120によれば、LUN#jが閉塞状態ではない場合に、LUN#jに対するI/O処理のエラーの発生頻度が所定値Xa以上か否かを判定することができる。また、第2制御装置120によれば、エラーの発生頻度が所定値Xa以上の場合に、LUN#jの閉塞処理要求を第1制御装置110に送信することができる。
また、第2制御装置120によれば、LUN#jが閉塞状態の場合は、第1制御装置110に対するエラー通知を行うことなく、I/O処理の再開処理を行うことができる。これにより、LUN#jが閉塞状態の場合は、第1制御装置110におけるエラー処理が行われることなくI/O処理が再開されるため、I/O処理のエラー発生から再開までの時間を抑えることができる。
また、実施の形態にかかる第1制御装置110によれば、第2制御装置120からLUN#jの閉塞処理要求を受信した場合に、LUN#jの閉塞処理を行うことができる。これにより、ストレージシステムSM内の各第2制御装置120において、LUN#jの状態を閉塞状態に変更することができる。
また、第2制御装置120によれば、エラーの発生頻度が所定値Xa未満の場合は、LUN#jのセグメントに対するI/O処理のエラー情報を第1制御装置110に送信することができる。また、第1制御装置110によれば、第2制御装置120からLUN#jのセグメントのエラー情報を受信した場合に、LUN#jのセグメントに対するI/O処理のエラー処理を行うことができる。これにより、VDISKを構成するセグメントのミラー構成を回復することができる。
また、第1制御装置110によれば、第2制御装置120からLUN#jのセグメントのエラー情報を受信した場合に、LUN#jに対するI/O処理のエラーの発生頻度が所定値Xm以上か否かを判定することができる。また、第1制御装置110によれば、エラーの発生頻度が所定値Xm以上の場合に、LUN#jの閉塞要求をストレージシステムSM内の各第2制御装置120に送信することができる。これにより、各第2制御装置でのLUN#jに対するI/O処理のエラーの発生頻度が所定値Xa未満であっても、システム全体でのLUN#jに対するI/O処理のエラーの発生頻度が高くなる場合は、LUN#jを閉塞状態に変更することができる。
また、第2制御装置120によれば、複数の第2制御装置120上に作成されたVDISK(ボリューム)の総数Vallと、第2制御装置120の総数Aallと、第2制御装置120のiopsとに基づいて、LUN#jの閉塞条件となる所定値Xaを算出することができる。これにより、ストレージシステムSMのシステム構成に応じて、LUN#jの閉塞条件となる所定値Xaを設定することができる。
(実施例)
つぎに、実施の形態にかかるストレージシステムSMの実施例について説明する。なお、実施の形態で説明した箇所と同一箇所については、図示および説明を省略する。
(ストレージシステムSMのシステム構成例)
図14は、実施例にかかるストレージシステムSMのシステム構成例を示す説明図である。図14において、ストレージシステムSMは、基本ノードFNと、拡張ノードEN#1と、を含む。図1に示した基本ノード101は、例えば、基本ノードFNに相当する。また、図1に示した拡張ノード102−1は、拡張ノードEN#1に相当する。
基本ノードFNは、PU(Processor Unit)#1と、PU#2と、SU(Storage Unit)#1と、を含む。拡張ノードEN#1は、PU#3と、SU#2と、を含む。PU#1は、PU#2およびPU#3を制御するコンピュータであり、いわゆる「マネージャ」である。図1に示した第1制御装置110は、例えば、PU#1に相当する。PU#2、PU#3は、SU#1およびSU#2を制御するコンピュータであり、いわゆる「エージェント」である。
SU#1は、ストレージ制御部#1を有し、複数のLUN(例えば、LUN#1、LUN#2)に対するアクセスを制御する。SU#2は、ストレージ制御部#2を有し、複数のLUNに対するアクセスを制御する。ストレージ制御部#1,#2は、ストレージ制御プログラムをCPUが実行することにより実現される。ストレージ制御プログラムは、各SU#1,#2内のストレージに対するアクセスを制御するプログラムである。
図1に示した第1ストレージユニット130は、例えば、SU#1に相当する。図1に示した第1ストレージ制御部131は、例えば、ストレージ制御部#1に相当する。図1に示した記憶装置Dは、例えば、LUNに相当する。また、図1に示した第2ストレージユニット140は、例えば、SU#2に相当する。図1に示した第2ストレージ制御部141は、例えば、ストレージ制御部#2に相当する。
ストレージシステムSMでは、PUとSUを1セットとして、ストレージシステムSM全体の記憶領域を拡張することができる。図14に示すストレージシステムSMは、基本ノードFNに拡張ノードEN#1(PU#3+SU#2)が拡張された例である。
ストレージシステムSMにおいて、基本ノードFN内のPU#1、PU#2、拡張ノードEN#1内のPU#3および管理サーバMSは、管理用LANを介して接続される。管理サーバMSは、ストレージシステムSMの管理者が使用するコンピュータであり、装置管理GUI(Graphical User Interface)を有する。
また、ストレージシステムSMにおいて、基本ノードFN内のPU#1、PU#2、拡張ノードEN#1内のPU#3および業務サーバBSは、I/O用LANを介して接続される。業務サーバBSは、業務用のアプリケーションがインストールされたコンピュータである。また、PU#1、PU#2、PU#3、SU#1およびSU#2は、I/O用LANおよび内部管理LANを介して接続される。
ここで、PU#1は、構成管理DB810と、I/O制御部#1と、PU制御部#1と、クラスタ制御Mと、装置管理GUI制御部#1と、SU制御部#1と、イベント制御部#1と、エラー処理部#1と、閉塞処理部#1と、を含む。図8に示した判断部804および判定部805は、例えば、イベント制御部#1に相当する。また、図8に示したエラー処理部803は、例えば、エラー処理部#1に相当する。また、図8に示した閉塞処理部802は、例えば、閉塞処理部#1に相当する。
また、PU#2は、I/O制御部#2と、PU制御部#2と、クラスタ制御部#2と、SU制御部#2と、イベント制御部#2と、VDISK制御部#2と、を含む。また、PU#3は、I/O制御部#3と、PU制御部#3と、クラスタ制御部#3と、SU制御部#3と、イベント制御部#3と、VDISK制御部#3と、を含む。図7に示した検出部701、判断部702、算出部704および判定部705は、例えば、VDISK制御部#2,#3に相当する。また、図7に示した再開処理部703は、例えば、VDISK制御部#2,#3およびSU制御部#2,#3に相当する。
ここで、構成管理DB810は、ストレージシステムSM上に作成されるVDISK(ボリューム)を管理する情報や、各ボリュームのセグメントを管理する情報(例えば、後述するセグメントテーブル1500)や、閉塞フラグテーブル400(図4参照)などを記憶する。なお、セグメントテーブル1500の記憶内容については、図15を用いて後述する。
I/O制御部#1〜#3は、業務サーバBSからのI/O要求を受け付けて処理する。PU制御部#1〜#3は、各PU#1〜#3を制御する。クラスタ制御Mは、PU同士をクラスタリングする。ここでは、PU#1とPU#2とPU#3とでクラスタが形成されている。クラスタ制御部#2,#3は、クラスタ制御MによってクラスタリングされたPU#1〜#3を認識する。
装置管理GUI制御部#1は、管理サーバMSからの指示に従って、ストレージシステムSMの状態を判断したり、新規ボリュームを作成したりする。SU制御部#1〜#3は、各SU#1,#2を制御する。イベント制御部#1〜#3は、各種イベントを制御する。イベントとしては、例えば、LUN#jのセグメントに対するI/O処理のエラー処理のイベント、VDISKのセグメントの状態を変更するイベント、I/O処理を再開するイベントなどがある。
エラー処理部#1は、LUN#jのセグメントに対するI/O処理のエラー処理を実行する。閉塞処理部#1は、LUN#jの閉塞処理を行う。VDISK制御部#2,#3は、各PU#2,#3上に作成されるVDISKを制御する。なお、以下の説明では、PU#2,#3が、業務サーバBSからのI/O要求を受け付けて処理する場合を例に挙げて説明する。
また、ストレージシステムSMにおいて、PU#1がダウンした場合は、例えば、PU#2またはPU#3が、PU#1の機能を引き継ぐ。また、業務サーバBS、管理サーバMSのハードウェア構成は、例えば、CPU、メモリ、磁気ディスクドライブ、磁気ディスク、ディスプレイ、I/F、キーボード、マウス等により実現される。
(セグメントテーブル1500の記憶内容)
図15は、セグメントテーブル1500の記憶内容の一例を示す説明図である。図15において、セグメントテーブル1500は、ボリューム番号、セグメントセット番号、セグメント番号、SU番号、LUN番号およびセグメント状態のフィールドを有する。各フィールドに情報を設定することで、セグメント情報(例えば、セグメント情報1500−1,1500−2)がレコードとして記憶される。
ここで、ボリューム番号は、VDISKの識別子である。セグメントセット番号は、VDISKを構成するセグメントセットの識別子である。セグメント番号は、セグメントセットを構成するセグメントの識別子である。ボリューム番号、セグメントセット番号およびセグメント番号は、セグメントの論理番号(位置)を示す。
SU番号は、セグメントが属するSUの識別子である。LUN番号は、セグメントが割り当てられたLUNの識別子である。SU番号およびLUN番号は、セグメントの物理番号(位置)を示す。セグメント状態は、セグメントにアクセスできるか否かを示す状態である。
例えば、セグメント情報1500−1は、VDISK1のセグメントセット1のセグメント1のSU番号「1」、LUN番号「1」およびセグメント状態「有効」を示している。なお、SU番号「1」はSU#1に対応し、LUN番号「1」はLUN#1に対応する。また、セグメントテーブル1500では、ミラーリングされた一対のセグメントのセグメント情報が連続して記憶されている。例えば、セグメント情報1500−2は、セグメント情報1500−1が示すLUN#1のミラー先のLUNのセグメント情報である。
(エラー処理の具体的な処理内容)
つぎに、図16を用いて、LUN#jのセグメントに対するI/O処理のエラー処理の具体的な処理内容の一例について説明する。ここでは、SU#1内のLUN#7のセグメントに対するI/O処理のエラー情報が通知された場合を例に挙げて説明する。
図16は、セグメントテーブル1500の更新例を示す説明図である。なお、エラー処理におけるセグメントテーブル1500の更新処理では、エラー処理部#1は、セグメントテーブル1500の複数のセグメント情報を参照し、特定の条件に一致しているかを確認した上で、必要に応じた更新処理を行う。この参照・確認・更新の処理は、エージェントからエラー情報が1つ通知されるごとに実施される。
(1)エラー処理部#1は、LUN#7に割り当てられたセグメント#7のミラー先のセグメント#8(LUN#8)のセグメント状態が「有効」であることを確認する(図16中、(1)参照)。(2)エラー処理部#1は、セグメント#8のセグメント状態が「有効」である場合、セグメント#7のセグメント状態を「不正」に変更する(図16中、(2)参照)。
(3)エラー処理部#1は、セグメントテーブル1500内のセグメント状態が「空き」のセグメントをエラーセグメント(セグメント#7)の代替として割り当て、セグメント状態を「コピー待ち」に変更する(図16中、(3)参照)。セグメント状態が「コピー待ち」のセグメントは、ミラー先のセグメント(セグメント#8)から非同期にデータがコピーされ、コピーが完了した時点でセグメント状態が「有効」に切り替わり、ミラー構成が回復する。
(4)エラー処理部#1は、セグメント#7のセグメント状態を「不正」に変更した場合、全エージェント(PU#2,#3)に対して、セグメント#7のセグメント状態が「不正」であることを通知する。セグメント#7のセグメント状態が「不正」であることを受け取ったエージェントは、自身で管理しているドライバに対してエラーセグメントを不正であるとして、セグメント状態を変更する。セグメント状態の変更後は、エージェントは、ユーザ(例えば、業務サーバBS)からのI/Oをそのセグメントには行わない(ミラー側で行わせる)ようにする。
また、エラー処理部#1は、上述した処理が完了すると、エラー発生元のエージェントに、I/O処理の再開処理要求を通知する。なお、以下の説明では、上記(1)〜(4)の処理を「構成管理DB更新」と表記し、上記(4)の処理の延長でエージェントが実施する処理を「ドライバ状態変更」と表記する場合がある。
(LUN#jの閉塞条件)
つぎに、図17を用いて、エージェント(例えば、PU#2,#3)およびマネージャ(例えば、PU#1)におけるLUN#jの閉塞条件について説明する。
図17は、I/O処理のエラーの発生頻度を示す説明図である。スケールアウト型のストレージシステムSMでは、ユーザ(例えば、業務サーバBS)が増加した際に、ノード拡張で性能・容量を拡大して対応することができる。このとき、SU故障時のエラー発生源となるVDISK数が拡大し得るだけでなく、エラーの通知経路を作るエージェント数も拡大するため、エージェント・マネージャでのエラー発生頻度がそれぞれ変動する。
ここで、ストレージシステムSMにおいて、I/O処理のエラーが発生しているVDISKの数を「n個」とし、I/O処理のエラーが発生しているエージェントの台数を「m台」とする。この場合、エージェントでのエラーの発生頻度は「n/m(=α)」と表現することができ、マネージャでのエラーの発生頻度は「n(=β)」と表現することができる。
例えば、I/O処理のエラーが発生しているVDISKの数が「n個」から「N個(>n)」に変化すると、エージェントでのエラーの発生頻度は拡大して「N/m(=γ>α)」となる。また、マネージャでのエラーの発生頻度は拡大して「N(>β)」となる。
例えば、I/O処理のエラーが発生しているエージェントの台数が「m台」から「M台(>m)」に変化すると、エージェントでのエラーの発生頻度は減少して「n/M(=δ<α)」となる。一方、マネージャでのエラーの発生頻度は「n(=β)」のままである。
例えば、I/O処理のエラーが発生しているVDISKの数が「n個」から「N個(>n)」に変化し、I/O処理のエラーが発生しているエージェントの台数が「m台」から「M台(>m)」に変化すると、エージェントでのエラーの発生頻度は「N/M(<γ、>δ)」となる。また、マネージャでのエラーの発生頻度は「N(>β)」となる。
これからのことから、ノード拡張とエージェント・マネージャでのエラー発生頻度は、以下の(関係1)および(関係2)にあるといえる。
(関係1)エラー発生VDISK数が拡大すると、エージェント・マネージャでのエラー発生頻度が増加する。
(関係2)エラー発生エージェント数が拡大すると、エージェントでのエラー発生頻度が減少する。
したがって、エラー発生VDISK数が「Verr」、エラー発生エージェント数が「Aerr」であるとき、エージェントのエラー発生頻度「eagt」は、単位時間当たりのVDISK平均I/O回数(iops)を用いて、下記式(3)を用いて表すことができる。
agt=(Verr/Aerr)・iops[errors/sec]・・・(3)
ここで、Verr対Aerrの比率は、全体のVDISK数Vall対エージェント数Aallの比率と近似すると見なすことができる。また、iopsは、ストレージの機能によって測定可能であるとする。これにより、エージェントでのLUN#jの閉塞条件Eagtは、下記式(4)のように表現することができる。なお、上記式(1)の所定値Xaは、下記式(4)「Eagt」に相当する。
agt=(Vall/Aall)・iops[errors/sec]・・・(4)
また、マネージャでのエラー処理時間を「Pmgr」、I/Oタイムアウト時間を「Ttimeout」とすると、マネージャのエラー発生頻度emgrと閉塞時間tmgrは、下記式(5)を満たすことが求められる。ただし、I/Oタイムアウト時間Ttimeoutは、業務サーバBS側で任意に設定される値である。また、閉塞時間tmgrは、SUがエージェントにLUN#jのエラーを通知した最初の時刻から、マネージャでの判定によりLUN#jが閉塞状態となるまでの時間である。
(emgrmgr−1)・tmgr<Ttimeout ・・・(5)
上記式(5)において、エラー発生頻度emgrと閉塞時間tmgrは閉塞条件の設定で変動する値である。エラー処理時間Pmgrは、理想的にはシステムの性能に依る一定値と見なすことができる。したがって、エラー処理時間Pmgrに測定値を用いるという前提で、上記式(5)の左辺より、マネージャでのLUN#jの閉塞条件Emgrは、下記式(6)のように表現することができる。なお、上記式(2)の所定値Xmは、下記式(6)「Emgr」に相当する。
mgr=(1/Pmgr)[errors/sec]・・・(6)
(ストレージシステムSMの制御処理手順)
つぎに、実施例にかかるストレージシステムSMの制御処理手順について説明する。ここでは、VDISK#1,#2を構成するSU#1内のLUN#1に障害が発生した場合を例に挙げて説明する。また、エージェント(PU#2,PU#3)の処理手順として、PU#2の処理手順を例に挙げて説明する。
図18〜図21は、実施例にかかるストレージシステムSMの制御処理手順の一例を示すシーケンス図である。図18のシーケンス図において、まず、PU#2のVDISK制御部#2は、SU制御部#2からI/Oエラーイベントを受け付けた場合、I/Oエラーを検出する(ステップS1801)。
つぎに、VDISK制御部#2は、閉塞リスト500(図5参照)を参照して、LUN#1が閉塞済みか否かを判断する(ステップS1802)。なお、LUN#jが閉塞済みとは、LUN#jが閉塞状態となっている状態である。ここで、LUN#1が閉塞済みの場合(ステップS1802:Yes)、図21に示すステップS2102に移行する。
一方、LUN#1が閉塞済みではない場合(ステップS1802:No)、VDISK制御部#2は、エラー時刻記録キューQ2(図6参照)にLUN#1のエラー発生時刻を記録する(ステップS1803)。そして、VDISK制御部#2は、エラー時刻記録キューQ2を参照して、LUN#1が閉塞条件Eagtを満たすか否かを判断する(ステップS1804)。
ここで、閉塞条件Eagtを満たす場合(ステップS1804:Yes)、LUN#1の閉塞処理要求をPU#1のイベント制御部#1に通知して、図20に示すステップS2002に移行する。一方、閉塞条件Eagtを満たさない場合(ステップS1804:No)、VDISK制御部#2は、PU#1のイベント制御部#1にI/Oエラー処理要求を通知する。なお、I/Oエラー処理要求は、上述したエラー情報に相当する。
図19のシーケンス図において、まず、PU#1のイベント制御部#1は、I/Oエラー処理要求を受け付けたか否かを判断する(ステップS1901)。ここで、I/Oエラー処理要求を受け付けていない場合(ステップS1901:No)、図20に示すステップS2001に移行する。
一方、I/Oエラー処理要求を受け付けた場合(ステップS1901:Yes)、イベント制御部#1は、閉塞フラグテーブル400(図4参照)を参照して、LUN#1が閉塞済みか否かを判断する(ステップS1902)。ここで、LUN#1が閉塞済みの場合(ステップS1902:Yes)、図20に示すステップS2001に移行する。
一方、LUN#1が閉塞済みではない場合(ステップS1902:No)、イベント制御部#1は、エラー時刻記録キューQ1(図6参照)にLUN#1のエラー発生時刻を記録する(ステップS1903)。そして、イベント制御部#1は、エラー時刻記録キューQ1を参照して、LUN#1が閉塞条件Emgrを満たすか否かを判断する(ステップS1904)。
ここで、閉塞条件Emgrを満たさない場合(ステップS1904:No)、図20に示すステップS2001に移行する。一方、閉塞条件Emgrを満たす場合(ステップS1904:Yes)、イベント制御部#1は、閉塞処理部#1に処理依頼を通知する(ステップS1905)。具体的には、例えば、イベント制御部#1は、閉塞するLUN情報を渡して閉塞処理部#1を起動する。
つぎに、閉塞処理部#1は、構成管理DB810内の閉塞フラグテーブル400を更新する(ステップS1906)。具体的には、閉塞処理部#1は、LUN#1の閉塞フラグを「OFF」から「ON」に変更する。
図20のシーケンス図において、まず、閉塞処理部#1は、LUN#1の閉塞要求をPU#2のイベント制御部#2およびPU#3のイベント制御部#3に通知する(ステップS2001)。つぎに、PU#2のイベント制御部#2は、LUN#1の閉塞要求を受け付けた場合、要求に対応するジョブを起動する(ステップS2002)。
そして、PU#2のVDISK制御部#2は、LUN#1の閉塞フラグを「ON」にする(ステップS2003)。なお、ここでの閉塞フラグ「ON」は、例えば、閉塞リスト500にLUN#1を識別する情報を登録することである。
また、PU#1のイベント制御部#1は、要求に対応するジョブを起動する(ステップS2004)。ここでは、エラー処理のジョブが起動される。つぎに、エラー処理部#1は、「構成管理DB更新」の処理を実行する(ステップS2005)。そして、エラー処理部#1は、I/O再開処理要求をPU#2のイベント制御部#2に通知する(ステップS2006)。
図21のシーケンス図において、まず、PU#2のイベント制御部#2は、要求に対応するジョブを起動する(ステップS2101)。ここでは、I/O再開のジョブが起動される。そして、PU#2のVDISK制御部#2は、「ドライバ状態変更」の処理を実行する(ステップS2102)。
つぎに、VDISK制御部#2は、失敗したI/Oを再開する(ステップS2103)。ここでの失敗したI/Oとは、VDISK#1を構成するSU#1内のLUN#1のセグメントに対するI/O処理である。そして、PU#2のSU制御部#2は、ミラー側のLUNのセグメントにI/Oを再発行する(ステップS2104)。
この結果、ミラー側のLUN#2へのI/O要求が発行され、I/O処理が成功した場合に、SU制御部#2から業務サーバBSにI/O完了が通知され、I/O完了となる。
これにより、エージェント(PU#2,#3)とマネージャ(PU#1)において、LUN#1のセグメントに対するI/Oエラーの発生頻度を監視することができる。また、LUN#1に対するI/Oエラーの発生頻度が閉塞条件(Eagt,Emgr)を満たした場合、以降はエージェントがI/Oエラーをマネージャに通知することなくI/O処理の再開処理を行うことができる。
(LUN#jの閉塞解除例)
つぎに、LUN#jの閉塞解除例について説明する。ここでは、VDISK#1,#2を構成するSU#1内のLUN#1の閉塞状態を解除する場合を例に挙げて説明する。また、保守担当者によって(例えば、ハードウェア交換などの手段)SU#1が復旧され、閉塞状態になったLUN#1がストレージシステムSMで再度利用可能になった場合を想定する。
図22は、LUNの閉塞解除例を示す説明図である。図22において、まず、マネージャ(PU#1)は、ストレージシステムSM内のいずれかのエージェント(例えば、PU#2,#3)に、定期的にSU#1内のLUN#1の復旧確認を依頼する(図22中、(1)参照)。ここで、エージェント(PU#2)にSU#1内のLUN#1の復旧確認を依頼する場合を想定する。
エージェント(PU#2)は、SU#1内のLUN#1の復旧確認を受け付けた場合、SU#1内のLUN#1に対してテストI/O要求を発行する(図22中、(2)参照)。ここで、テストI/O要求が正常に処理された場合、エージェント(PU#2)は、I/O成功をマネージャ(PU#1)に通知する。
マネージャ(PU#1)は、I/O成功を受け付けた場合、SU#1内のLUN#1の閉塞状態を解除する(図22中、(3)参照)。そして、マネージャ(PU#1)は、SU#1内のLUN#1の閉塞解除要求をストレージシステムSM内の各エージェント(例えば、PU#2,#3)に通知する(図22中、(4)参照)。この結果、各エージェント(例えば、PU#2,#3)において、SU#1内のLUN#1の閉塞状態が解除される。
これにより、保守担当者によって(例えば、ハードウェア交換などの手段)SU#1が復旧されて、閉塞状態になったLUN#1が再度利用可能になった時点で自動的に閉塞状態を解除することができる。また、一時的な電源断などの「ハードウェア故障以外の原因」によってLUN#1が閉塞状態に移行した場合でも、電源が復旧し、アクセス可能になった時点で自動的に閉塞状態を解除することができる。
以上説明したように、実施例にかかるストレージシステムSMによれば、エージェント(PU#2,#3)とマネージャ(PU#1)において、LUN#jに対するI/Oエラーの発生数をそれぞれ記録し、I/Oエラーの発生頻度を監視することができる。また、I/Oエラーの発生頻度が所定値(Xa,Xm)以上となった場合に、以降はエージェントがI/Oエラーをマネージャに通知することなくI/O処理の再開処理を行うことができる。これにより、I/O処理の再開時間が短縮され、タイムアウトによる業務サーバBSのI/O失敗を回避することができる。
ここで、128台のPUに、1000個のVDISKが接続されている運用環境において、あるSUが故障し、内部のLUNを利用している全VDISKから同時にI/Oエラーが発生した状況を想定する。なお、VDISKの平均iopsを「10」とし、マネージャでのエラー処理に「0.001秒/エラー」かかるとする。このとき、エージェントの閉塞条件Eagtは「78エラー/秒」となり、マネージャの閉塞条件Emgrは「1000エラー/秒」となる。
この場合、例えば、従来通りのマネージャを通じた再開処理を実施させると、マネージャでは、「10000エラー/秒」の速度でエラー処理を行わなければならない。そのため、故障して1秒の時点で9000エラーが滞留し、約9秒の遅延が発生する上、さらにその後も遅延時間が拡大していく。
これに対して、ストレージシステムSMによれば、一部のエージェントに偏ってエラーが発生した場合、エージェントの閉塞条件Eagtに合致する。例として、10台のエージェントにエラーが偏ったケースを考えると、各エージェントでは「1000エラー/秒」の割合でエラーが発生し、それぞれで79回目のエラーを検知した時点、つまり、故障から0.08秒の時点で閉塞判定される。この時点で、閉塞前にマネージャに通知された「10000×0.08=800回」のエラーが処理されるため、遅延は最大0.8秒となる。
一方で、128台の全エージェントから均等にエラーが発生した場合は、エージェントでの閉塞条件Eagtを満たさずマネージャの閉塞条件Emgrに合致する。このとき、マネージャでは最短1000回のエラー処理を行い、故障から0.1秒経った時点で閉塞判定される。これらのエラーは閉塞後に「1000×0.001=1.0秒」の遅延を発生させるが、それ以降はエラー通知が止まって遅延が解消される。
このように、ストレージシステムSMによれば、システム構成に応じて適切な閉塞条件(Eagt,Emgr)を設定することにより、I/Oエラーから再開処理までの遅延時間が短縮され、タイムアウトによる業務サーバBSのI/O失敗を回避することができる。
なお、本実施の形態で説明した制御方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)第1制御装置と、前記第1制御装置により管理される1または複数の第2制御装置と、第2制御装置によりアクセス可能なストレージユニットとを含むストレージシステムであって、
前記第2制御装置は、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、
前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、
前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を前記第1制御装置に送信する送信部と、を有し、
前記第1制御装置は、
前記閉塞処理要求の受信に基づいて、前記ストレージの閉塞処理を行う閉塞処理部と、
前記閉塞処理要求の受信に基づいて、前記ストレージのエラー処理を行うエラー処理部と、を有することを特徴とするストレージシステム。
(付記2)前記送信部は、
前記エラーの発生頻度が前記所定値未満と判定された場合、前記ストレージに対する入出力処理のエラーが発生したことを示すエラー情報を前記第1制御装置に送信し、
前記第1制御装置は、
前記エラー情報の受信に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が第2の所定値以上か否かを判定する第2判定部と、
前記第2判定部による前記エラーの発生頻度が前記第2の所定値以上であるとの判定に基づいて、前記ストレージの閉塞要求を前記複数の第2制御装置に送信する第2送信部と、を有し、
前記エラー処理部は、
前記エラー情報を受信した場合、前記ストレージのエラー処理を行うことを特徴とする付記1に記載のストレージシステム。
(付記3)前記第1制御装置は、
前記エラー情報の受信に基づいて、前記ストレージが閉塞状態であるか否かを判断する第2判断部を有し、
前記第2判定部は、
前記第2判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定することを特徴とする付記2に記載のストレージシステム。
(付記4)前記第2送信部は、
前記ストレージのエラー処理が完了した場合、前記入出力処理の再開処理要求を前記第2制御装置に送信し、
前記再開処理部は、
前記再開処理要求を受信した場合、前記入出力処理の再開処理を行うことを特徴とする付記1〜3のいずれか一つに記載のストレージシステム。
(付記5)前記第2制御装置は、
前記複数の第2制御装置上に作成されたボリュームの総数と、前記複数の第2制御装置の総数と、前記第2制御装置において単位時間当たりに発行される前記ボリュームに対する入出力要求の数とに基づいて、前記所定値を算出する算出部を有し、
前記判定部は、
前記ストレージに対する入出力処理のエラーの発生頻度が、前記算出部によって算出された前記所定値以上か否かを判定することを特徴とする付記1〜4のいずれか一つに記載のストレージシステム。
(付記6)アクセス可能なストレージユニットを制御する制御装置であって、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが閉塞状態であるか否かを判断する判断部と、
前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記入出力処理の再開処理を行う再開処理部と、
前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第1制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第1制御装置に送信する送信部と、
を有することを特徴とする制御装置。
(付記7)アクセス可能なストレージユニットを制御する制御装置に、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、
前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、
前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第1制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第1制御装置に送信する、
処理を実行させることを特徴とする制御プログラム。
(付記8)アクセス可能なストレージユニットを制御する制御装置が、
前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが閉塞状態であるか否かを判断し、
前記ストレージが閉塞状態である場合、前記入出力処理の再開処理を行い、
前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、自装置を含む複数の制御装置を制御する第1制御装置であって、前記閉塞処理要求を受信した場合に、前記ストレージの閉塞処理を行うとともに、前記ストレージのエラー処理を行う前記第1制御装置に送信する、
処理を実行することを特徴とする制御方法。
101,FN 基本ノード
102−1〜102−K,EN#1 拡張ノード
110 第1制御装置
120 第2制御装置
130 第1ストレージユニット
131 第1ストレージ制御部
132 第1ストレージ
140 第2ストレージユニット
141 第2ストレージ制御部
142 第2ストレージ
701 検出部
702,804 判断部
703 再開処理部
704 算出部
705,805 判定部
706,806 送信部
707,801 受信部
802 閉塞処理部
803 エラー処理部
807 閉塞解除部

Claims (9)

  1. 第1制御装置と、前記第1制御装置により管理される1または複数の第2制御装置と、前記第1制御装置および第2制御装置によりアクセス可能なストレージユニットとを含むストレージシステムであって、
    前記第2制御装置は、
    前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが入出力処理のエラー発生時にエラー情報を前記第1制御装置に通知しない閉塞状態であるか否かを判断する判断部と、
    前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記ストレージのミラー先のストレージにアクセスして前記入出力処理を再開する再開処理を行う再開処理部と、
    前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
    前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を前記第1制御装置に送信する送信部と、を有し、
    前記第1制御装置は、
    前記閉塞処理要求の受信に基づいて、前記1または複数の第2制御装置それぞれに前記ストレージの状態を閉塞状態に変更するよう要求する閉塞要求を送信する閉塞処理を行う閉塞処理部と、
    前記閉塞処理要求の受信に基づいて、前記ストレージのミラー先のストレージのデータを他のストレージに複製することによりミラー構成を回復するエラー処理を行うエラー処理部と、を有することを特徴とするストレージシステム。
  2. 前記送信部は、
    前記エラーの発生頻度が前記所定値未満と判定された場合、前記ストレージに対する入出力処理のエラーが発生したことを示すエラー情報を前記第1制御装置に送信し、
    前記第1制御装置は、
    前記エラー情報の受信に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が第2の所定値以上か否かを判定する第2判定部と、
    前記第2判定部による前記エラーの発生頻度が前記第2の所定値以上であるとの判定に基づいて、前記1または複数の第2制御装置それぞれ前記閉塞要求を送信する第2送信部と、を有し、
    前記エラー処理部は、
    前記エラー情報を受信した場合、前記エラー処理を行うことを特徴とする請求項1に記載のストレージシステム。
  3. 前記第1制御装置は、
    前記エラー情報の受信に基づいて、前記ストレージが閉塞状態であるか否かを判断する第2判断部を有し、
    前記第2判定部は、
    前記第2判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定することを特徴とする請求項2に記載のストレージシステム。
  4. 前記第2送信部は、
    前記エラー処理が完了した場合、前記入出力処理の再開処理要求を前記第2制御装置に送信し、
    前記再開処理部は、
    前記再開処理要求を受信した場合、前記再開処理を行うことを特徴とする請求項2または3に記載のストレージシステム。
  5. アクセス可能なストレージユニットを制御する制御装置であって、
    前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーの検出に基づいて、前記ストレージが入出力処理のエラー発生時にエラー情報を、前記ストレージユニットにアクセス可能であって、自装置を含む複数の制御装置を制御する第1制御装置に通知しない閉塞状態であるか否かを判断する判断部と、
    前記判断部による前記ストレージが閉塞状態であるとの判断に基づいて、前記ストレージのミラー先のストレージにアクセスして前記入出力処理を再開する再開処理を行う再開処理部と、
    前記判断部による前記ストレージが閉塞状態ではないとの判断に基づいて、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定する判定部と、
    前記判定部による前記エラーの発生頻度が前記所定値以上であるとの判定に基づいて、前記ストレージの閉塞処理要求を、前記閉塞処理要求の受信に基づいて、前記複数の制御装置それぞれに前記ストレージの状態を閉塞状態に変更するよう要求する閉塞要求を送信する閉塞処理を行うとともに、前記ストレージのミラー先のストレージのデータを他のストレージに複製することによりミラー構成を回復するエラー処理を行う前記第1制御装置に送信する送信部と、
    を有することを特徴とする制御装置。
  6. 前記複数の制御装置上に作成されたボリュームの総数と、前記複数の制御装置の総数と、前記制御装置において単位時間当たりに発行される前記ボリュームに対する入出力要求の数とに基づいて、前記所定値を算出する算出部を有し、
    前記判定部は、
    前記ストレージに対する入出力処理のエラーの発生頻度が、前記算出部によって算出された前記所定値以上か否かを判定する、ことを特徴とする請求項5に記載の制御装置。
  7. アクセス可能なストレージユニットを制御する制御装置に、
    前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが入出力処理のエラー発生時にエラー情報を、前記ストレージユニットにアクセス可能であって、自装置を含む複数の制御装置を制御する第1制御装置に通知しない閉塞状態であるか否かを判断し、
    前記ストレージが閉塞状態である場合、前記ストレージのミラー先のストレージにアクセスして前記入出力処理を再開する再開処理を行い、
    前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
    前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、前記閉塞処理要求の受信に基づいて、前記複数の制御装置それぞれに前記ストレージの状態を閉塞状態に変更するよう要求する閉塞要求を送信する閉塞処理を行うとともに、前記ストレージのミラー先のストレージのデータを他のストレージに複製することによりミラー構成を回復するエラー処理を行う前記第1制御装置に送信する、
    処理を実行させることを特徴とする制御プログラム。
  8. 前記複数の制御装置上に作成されたボリュームの総数と、前記複数の制御装置の総数と、前記制御装置において単位時間当たりに発行される前記ボリュームに対する入出力要求の数とに基づいて、前記所定値を算出する処理を前記制御装置に実行させ、
    前記判定する処理は、
    前記ストレージに対する入出力処理のエラーの発生頻度が、算出した前記所定値以上か否かを判定する、ことを特徴とする請求項7に記載の制御プログラム。
  9. アクセス可能なストレージユニットを制御する制御装置が、
    前記ストレージユニット内のいずれかのストレージに対する入出力処理のエラーを検出した場合、前記ストレージが入出力処理のエラー発生時にエラー情報を、前記ストレージユニットにアクセス可能であって、自装置を含む複数の制御装置を制御する第1制御装置に通知しない閉塞状態であるか否かを判断し、
    前記ストレージが閉塞状態である場合、前記ストレージのミラー先のストレージにアクセスして前記入出力処理を再開する再開処理を行い、
    前記ストレージが閉塞状態ではない場合、前記ストレージに対する入出力処理のエラーの発生頻度が所定値以上か否かを判定し、
    前記エラーの発生頻度が前記所定値以上の場合、前記ストレージの閉塞処理要求を、前記閉塞処理要求の受信に基づいて、前記複数の制御装置それぞれに前記ストレージの状態を閉塞状態に変更するよう要求する閉塞要求を送信する閉塞処理を行うとともに、前記ストレージのミラー先のストレージのデータを他のストレージに複製することによりミラー構成を回復するエラー処理を行う前記第1制御装置に送信する、
    処理を実行することを特徴とする制御方法。
JP2013095795A 2013-04-30 2013-04-30 ストレージシステム、制御装置、制御プログラムおよび制御方法 Expired - Fee Related JP6163855B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013095795A JP6163855B2 (ja) 2013-04-30 2013-04-30 ストレージシステム、制御装置、制御プログラムおよび制御方法
EP14161740.7A EP2799992A3 (en) 2013-04-30 2014-03-26 Storage system, control apparatus, control program, and control method
US14/229,391 US9483371B2 (en) 2013-04-30 2014-03-28 Storage system, control apparatus, computer product, and control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013095795A JP6163855B2 (ja) 2013-04-30 2013-04-30 ストレージシステム、制御装置、制御プログラムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2014215990A JP2014215990A (ja) 2014-11-17
JP6163855B2 true JP6163855B2 (ja) 2017-07-19

Family

ID=50424003

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013095795A Expired - Fee Related JP6163855B2 (ja) 2013-04-30 2013-04-30 ストレージシステム、制御装置、制御プログラムおよび制御方法

Country Status (3)

Country Link
US (1) US9483371B2 (ja)
EP (1) EP2799992A3 (ja)
JP (1) JP6163855B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6668733B2 (ja) 2015-12-15 2020-03-18 富士通株式会社 制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法
US11782610B2 (en) * 2020-01-30 2023-10-10 Seagate Technology Llc Write and compare only data storage

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05143377A (ja) 1991-11-18 1993-06-11 Hitachi Ltd アラーム通知方式
JPH06103122A (ja) 1992-09-21 1994-04-15 Nec Ibaraki Ltd 情報処理装置の障害監視方式
JP4012498B2 (ja) * 2003-11-18 2007-11-21 株式会社日立製作所 情報処理システム、情報処理装置、情報処理装置の制御方法及びプログラム
JP4547170B2 (ja) 2004-03-08 2010-09-22 株式会社日立製作所 ディスクアレイ装置およびその制御方法
JP2007233903A (ja) * 2006-03-03 2007-09-13 Hitachi Ltd 記憶制御装置及び記憶制御装置のデータ回復方法
US7627786B2 (en) * 2006-09-26 2009-12-01 International Business Machines Corporation Tracking error events relating to data storage drives and/or media of automated data storage library subsystems
TWI350448B (en) * 2006-12-13 2011-10-11 Compal Electronics Inc Method for data preservation
JP4877396B2 (ja) * 2010-01-20 2012-02-15 日本電気株式会社 メモリ障害処理システム、および、メモリ障害処理方法
US8812913B2 (en) * 2011-09-23 2014-08-19 Dot Hill Systems Corporation Method and apparatus for isolating storage devices to facilitate reliable communication

Also Published As

Publication number Publication date
EP2799992A3 (en) 2015-05-27
JP2014215990A (ja) 2014-11-17
US9483371B2 (en) 2016-11-01
EP2799992A2 (en) 2014-11-05
US20140325263A1 (en) 2014-10-30

Similar Documents

Publication Publication Date Title
US10725878B2 (en) Storage apparatus, storage system, and control method of storage system for dynamically securing free space when a storage apparatus is disused
US20200117556A1 (en) Maintaining storage array online
US9235524B1 (en) System and method for improving cache performance
US8627012B1 (en) System and method for improving cache performance
US8413133B2 (en) Software update management apparatus and software update management method
US9558079B2 (en) Flash copy for disaster recovery (DR) testing
US8250284B2 (en) Adaptive memory allocation of a second data storage volume based on an updated history of capacity of a first data volume
JP5286212B2 (ja) ストレージクラスタ環境でのリモートコピー制御方法及びシステム
US9898370B2 (en) Flash copy for disaster recovery (DR) testing
JP2007206931A (ja) 記憶システム、データ処理方法並びにストレージ装置
US9395936B2 (en) Method and apparatus for remote storage performance data copy
WO2012160463A1 (en) Storage checkpointing in a mirrored virtual machine system
US8108637B2 (en) Information processing system, controlling method in information processing system, and managing apparatus to manage remote copy in consideration of saving power
US10289322B2 (en) Delayed consistent point-in-time copy from a secondary volume of a consistent asynchronous mirror copy
JP6163855B2 (ja) ストレージシステム、制御装置、制御プログラムおよび制御方法
JP6227771B2 (ja) 論理ボリュームを管理するためのシステム及び方法
JP2007280111A (ja) ストレージシステム及びその性能チューニング方法
US11126514B2 (en) Information processing apparatus, information processing system, and recording medium recording program
US20150095694A1 (en) Information system, host system and access control method
JP6668733B2 (ja) 制御装置、管理装置、ストレージシステム、制御プログラム、管理プログラム、制御方法、および管理方法
US20210157482A1 (en) Information processing apparatus, information processing system, and recording medium storing program
KR20230122406A (ko) 다중 vm 운영 관리 플랫폼에서 가상 데스크탑 이미지를 동기 및 비동기 방식으로 백업하기 위한 방법
JP2010015253A (ja) 記録再生装置および記録再生方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161027

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170110

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170605

R150 Certificate of patent or registration of utility model

Ref document number: 6163855

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees