JP2009181402A - 複数のコントローラモジュールを備えた記憶装置システム - Google Patents

複数のコントローラモジュールを備えた記憶装置システム Download PDF

Info

Publication number
JP2009181402A
JP2009181402A JP2008020595A JP2008020595A JP2009181402A JP 2009181402 A JP2009181402 A JP 2009181402A JP 2008020595 A JP2008020595 A JP 2008020595A JP 2008020595 A JP2008020595 A JP 2008020595A JP 2009181402 A JP2009181402 A JP 2009181402A
Authority
JP
Japan
Prior art keywords
storage device
logical storage
global
local
module
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.)
Granted
Application number
JP2008020595A
Other languages
English (en)
Other versions
JP5330702B2 (ja
Inventor
Noboru Morishita
昇 森下
Akira Deguchi
彰 出口
Ai Satoyama
愛 里山
Hisaharu Takeuchi
久治 竹内
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2008020595A priority Critical patent/JP5330702B2/ja
Priority to US12/060,977 priority patent/US7984260B2/en
Publication of JP2009181402A publication Critical patent/JP2009181402A/ja
Application granted granted Critical
Publication of JP5330702B2 publication Critical patent/JP5330702B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/0793Remedial or corrective actions
    • 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/2002Error 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 interconnections or communication control functionality are redundant
    • G06F11/2007Error 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 interconnections or communication control functionality are redundant using redundant communication media
    • 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/2002Error 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 interconnections or communication control functionality are redundant
    • G06F11/2007Error 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 interconnections or communication control functionality are redundant using redundant communication media
    • G06F11/201Error 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 interconnections or communication control functionality are redundant using redundant communication media between storage system components

Abstract

【課題】各コントローラモジュールの管理対象としての論理記憶装置(LDEV)が増えてしまわないようにする。
【解決手段】各コントローラモジュールの配下にあるローカルLDEVの上位に、複数のコントローラモジュールが管理する複数のグローバルLDEVを設ける。各グローバルLDEVは、複数のローカルLDEVのうちのいずれかに関連付けられる。コントローラモジュールは、上位装置又は第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバルLDEVに関連付けられているローカルLDEVが自分の管理対象であるか否かを判断し、肯定的な判断結果となれば、特定されるグローバルLDEVに関連付けられているローカルLDEVにアクセスし、否定的な判断結果となれば、第二の他のコントローラモジュールに前記受信したI/O要求を転送する。
【選択図】図1

Description

本発明は、記憶装置システムが有する論理記憶装置の管理に関する。
記憶装置システムが有する論理記憶装置(以下、「LDEV」と言う)の管理に関する技術として、例えば、特許文献1に開示の技術が知られている。特許文献1には、第一の記憶装置システムの外部に存在する第二の記憶装置システムの論理ユニットを第一の記憶装置システム内で管理する技術が開示されている。
特開2005−107645号公報
例えば、高性能及び/又は大容量の大規模構成の記憶装置システムが必要とされることもあれば、低価格の小規模構成の記憶装置システムが必要とされることもある。本出願人の考察によれば、記憶装置システムを、複数のコントローラモジュールを備えたスケールアウト型の記憶装置システムとすることで、コントローラモジュールの数を調整する等により、記憶装置システムを大規模構成にも小規模構成にもできると考えられる。この場合、各コントローラモジュールが、自分の配下にある(つまり自分がアクセス可能)なLDEVを管理し、他のコントローラモジュールの配下にあるLDEVを管理しない。なお、記憶装置システムが、複数の物理記憶装置を有する複数の物理記憶装置モジュールを備えていて、一つのコントローラモジュールと一つの物理記憶装置モジュールとのセットである記憶装置システムモジュールが構成されても良い(つまり、記憶装置システムが複数個の記憶装置システムモジュールで構成されても良い)。
この構成において、例えば、第二のコントローラモジュールの配下にあるLDEVにアクセスするためのI/O要求を第一のコントローラモジュールが受け付けられるようにするための方法として、以下の方法が考えられる。すなわち、第一のコントローラモジュールが、第二のコントローラモジュールが管理する実体的なLDEVを関連付けた仮想的なLDEVを管理する。この場合、第一のコントローラモジュールが、仮想的なLDEVを指定したI/O要求を受信し、その仮想的なLDEVに関連付けられている実体的なLDEVを管理する第二のコントローラモジュールに、その受信したI/O要求を転送する。
この方法によれば、第一のコントローラモジュールが、仮想的なLDEVを管理する。このため、一つのコントローラモジュールが管理可能なLDEVの数に制限がある場合には、管理する仮想的なLDEVの数の分、管理可能な実体的なLDEVの数が減ってしまうことになる。また、第一のコントローラモジュールにおいて、仮想的なLDEVが第一のコントローラモジュールのキャッシュメモリを使用し、さらに、第二のコントローラモジュールにおいて、当該仮想的なLDEVに関連付けられている実体的なLDEVが第二のコントローラモジュールのキャッシュメモリを使用するため、記憶装置システム全体として見た場合、当該実体的なLDEVに格納しているデータが記憶装置システムのキャッシュメモリを浪費することになる。
従って、本発明の目的は、各コントローラモジュールが他のコントローラモジュールの配下にあるLDEVにアクセスするためのI/O要求を受け付けられるようにしても、各コントローラモジュールの管理対象としての配下のLDEVが増えてしまわないようにすることにある。また、特定のLDEVのデータによる記憶装置システムのキャッシュメモリの浪費を抑止することにある。
本発明の他の目的は、後の説明から明らかになるであろう。
各コントローラモジュールの配下にあるローカルLDEVの上位に、複数のコントローラモジュールが管理する複数のグローバルLDEVを設ける。各グローバルLDEVは、複数のローカルLDEVのうちのいずれかに関連付けられる。各コントローラモジュールの記憶資源には、各グローバルLDEVに関連付けられているローカルLDEVが自モジュールの管理対象であるか否かを表す情報を含んだグローバルデバイス管理情報と、複数のローカルLDEVのうちの自モジュールによる管理対象のローカルLDEVに関する情報であるローカルデバイス管理情報とが記憶される。コントローラモジュールは、上位装置又は第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバルLDEVに関連付けられているローカルLDEVが自分の管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、特定されるグローバルLDEVに関連付けられているローカルLDEVにアクセスし、否定的な判断結果となれば、第二の他のコントローラモジュールに前記受信したI/O要求を転送する。
第1の実施形態では、記憶装置システムが、I/O要求を受け付ける複数のコントローラモジュールと、I/O要求に従うデータを記憶する複数の物理的な記憶装置と、複数のグローバル論理記憶装置と、前記複数の物理的な記憶装置に基づく複数のローカル論理記憶装置とを備える。各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置(例えば仮想的なLDEV)である。各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理される論理的な記憶装置(例えば実体的なLDEV)である。各コントローラモジュールが、モジュール間接続部と、記憶資源と、アクセス制御部とを備える。前記モジュール間接続部は、例えばスイッチであり、前記複数のコントローラモジュールのうちの一以上の他のコントローラモジュールと接続される。前記モジュール間接続部は、一つのコントローラモジュール内の構成部位同士の接続のための接続部(例えばスイッチ)を兼ねても良い。前記記憶資源は、各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んだグローバルデバイス管理情報と、前記複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報であるローカルデバイス管理情報とを記憶する。前記アクセス制御部は、前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したI/O要求を転送する。上位装置は、例えば、ホストコンピュータ或いは他の記憶装置システムである。
実施形態2では、実施形態1において、前記各コントローラモジュールが、データ移行制御部を更に備える。前記データ移行制御部は、前記複数のグローバル論理記憶装置のうちの第一のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第一のローカル論理記憶装置から、前記複数のグローバル論理記憶装置のうちの第二のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第二のローカル論理記憶装置へのデータの移行を制御する。前記第一のローカル論理記憶装置を管理する第一のコントローラモジュールが有する第一のデータ移行制御部が、前記第一のコントローラモジュールが有する前記記憶資源が記憶している前記グローバルデバイス管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記第一のコントローラモジュールの管理対象ではないことを表す情報に更新する。前記第二のローカル論理記憶装置を管理する第二のコントローラモジュールが有する第二のデータ移行制御部が、前記第二のコントローラモジュールが有する前記記憶資源が記憶している前記グローバルデバイス管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置が前記第二のコントローラモジュールが管理する前記第二のローカル論理記憶装置に関連付けられていることを表す情報に更新する。
実施形態3では、実施形態2において、前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれている。前記第一のデータ転送制御部が、前記データの移行において、前記第一のローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記第一のコントローラモジュールが有する前記記憶資源内の第一のキャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記第二のデータ転送制御部に通知する。前記第二のデータ転送制御部が、前記データの移行において、前記第一のデータ転送制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記第二のローカル論理記憶装置に書き込む。
実施形態4では、実施形態1乃至3のうちのいずれかにおいて、前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれている。前記受信したI/O要求が、リード要求である。前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールから受信したリード要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記他のコントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記コントローラモジュールが有する前記アクセス制御部に通知する。前記コントローラモジュールが有する前記アクセス制御部が、前記他のコントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記リード要求の送信元に送信する。
実施形態5では、実施形態1乃至4のうちのいずれかにおいて、前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれている。前記受信したI/O要求が、ライト要求である。前記コントローラモジュールが有する前記アクセス制御部が、前記受信したライト要求に従うデータを、前記コントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記ライト要求の転送先の前記他のコントローラモジュールが有する前記アクセス制御部に通知する。前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記ライト要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置に書き込む。
実施形態6では、実施形態1乃至5のうちのいずれかにおいて、前記グローバルデバイス管理情報には、前記複数のグローバル論理記憶装置に対応した複数の第一種のグローバルデバイス管理情報要素と、二以上の第二種のグローバルデバイス管理情報要素とが含まれている。各第一種のグローバルデバイス管理情報要素には、対応するグローバル論理記憶装置に関する情報が登録されている。前記第二種のグローバルデバイス管理情報要素の数は、前記第一種のグローバルデバイス管理情報要素の数より少ない。各第二種のグローバルデバイス管理情報要素に、前記複数の第一種のグローバルデバイス管理情報要素のうちの一以上の第一種のグローバルデバイス管理情報要素が関連付けられる。各第二種のグローバルデバイス管理情報要素は、前記グローバル論理記憶装置の識別子のハッシュ値から特定される。
実施形態7では、実施形態1乃至6のうちのいずれかにおいて、前記各コントローラモジュールのアクセス制御部が、前記上位装置が指定可能な複数のパスに同一のグローバル論理記憶装置が関連している場合、前記複数のパスのいずれを経由して照会コマンドが受けても、前記同一のグローバル論理記憶装置の識別子を前記上位装置に提供する。
実施形態8では、実施形態1乃至7のうちのいずれかにおいて、前記各グローバル論理記憶装置の識別子が、前記グローバル論理記憶装置を生成したコントローラモジュールの識別子と、前記グローバル論理記憶装置に関連付けられるローカル論理記憶装置の識別子と、同一のローカル論理記憶装置が関連付けられたグローバル論理記憶装置が同一のコントローラモジュールによって生成されても異なるコードとなる非重複コードとを含んでいる。前記非重複コードは、例えば、コントローラモジュールが起動する都度に更新される番号であっても良いし、前記グローバル論理記憶装置の識別子の生成時の日時であっても良い。
実施形態9では、実施形態1乃至8のうちのいずれかにおいて、前記コントローラモジュールと前記他のコントローラモジュールとの間には、一以上の転送経路がある。前記各コントローラモジュールが、グローバルデバイス閉塞部を更に備える。前記グローバルデバイス閉塞部が、前記一以上の転送経路のいずれの転送経路も、前記受信したI/O要求を経由させることができないときに、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられているグローバル論理記憶装置を閉塞する(例えば、グローバル論理記憶装置のステータスを“閉塞”に更新する)。前記コントローラモジュールが、閉塞されたグローバル論理記憶装置が特定されるI/O要求を受信した場合、そのグローバル論理記憶装置に対するアクセスは不可能となる。一方、前記他のコントローラモジュールが、前記コントローラモジュールで閉塞されたグローバル論理記憶装置が特定されるI/O要求を受信した場合、必ずしもアクセス不可能とはならない。なぜなら、そのグローバル論理記憶装置は前記他のコントローラモジュールが管理するローカル論理記憶装置に関連付けられているため、前記他のコントローラモジュールが、前記ローカル論理記憶装置にアクセスすることができる可能性があるからである。
実施形態10では、実施形態9において、前記各コントローラモジュールが、グローバルデバイス回復部を更に備える。前記グローバルデバイス回復部が、前記一以上の転送経路のうちのいずれかの転送経路の回復が検出された場合に、前記コントローラモジュールの管理対象であるローカル論理記憶装置に関連付けられているグローバル論理記憶装置の識別子を、前記他のコントローラモジュールに通知し、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置の状態を、前記他のコントローラモジュールに問い合わせ、前記問い合わせの結果が正常の場合、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置を回復する。
上述したアクセス制御部、データ移行制御部、グローバルデバイス閉塞部、及びグローバルデバイス回復部のうちの少なくとも一つは、ハードウェア、コンピュータプログラム又はそれらの組み合わせ(例えば一部をコンピュータプログラムにより実現し残りをハードウェアで実現すること)により構築することができる。コンピュータプログラムは、所定のプロセッサに読み込まれて実行される。また、コンピュータプログラムがプロセッサに読み込まれて行われる情報処理の際、適宜に、メモリ等のハードウェア資源上に存在する記憶域が使用されてもよい。また、コンピュータプログラムは、CD−ROM等の記録媒体から計算機にインストールされてもよいし、通信ネットワークを介して計算機にダウンロードされてもよい。
以下、図面を参照して、本発明の一つの実施形態を詳細に説明する。以下、コンピュータプログラムが主語になる場合は、実際にはそのコンピュータプログラムを実行するプロセッサ(CPU)によって処理が行われるものとする。
図1は、本発明の一実施形態に係る記憶装置システムの構成を示す。
記憶装置システム110は、J台(Jは2以上の整数)の記憶装置システムモジュール111で構成される。記憶装置システムモジュール111単位で増設或いは減設することが可能である。そのため、記憶装置システムモジュール111の数を多くすれば、大容量且つ高性能の大規模構成とすることができるし、記憶装置システムモジュール111の数を少なくすれば、低コストの小規模構成とすることができる。
記憶装置システム110には、J台の記憶装置システムモジュール111のうちの一以上の記憶装置システムモジュールを保守するための一又は複数の情報処理端末(以下、「保守端末」と言う)113が備えられている。一又は複数の保守端末113は、管理端末107と通信する。管理端末107又は保守端末113は、J台の記憶装置システムモジュール111のうちの任意の又は所定の記憶装置システムモジュール111に、種々の要求を送信する。
通信ネットワーク105に、J台の記憶装置システムモジュール111、管理端末107及びホストコンピュータ(以下、「ホスト」と言う)101が接続される。例えば、ホスト101内のCPU(Central Processing Unit)でアプリケーションプログラム103が実行されることにより、I/O要求(Input/Output要求(ライト/リード要求))が記憶装置システム110に送信される。
各記憶装置システムモジュール111は、一又は複数の物理記憶装置(以下、「PDEV」と言う)112を備える。PDEV112としては、例えば、ハードディスクドライブ(HDD)、フラッシュメモリドライブなど、記憶メディアを有するドライブを採用することができる。
各記憶装置システムモジュール111は、自分(自モジュール)が備える一又は複数のPDEV112に基づく一又は複数のLDEV(以下、「ローカルLDEV」と言う)と、ホスト101から指定される番号であるLUN(Logical Unit Number)などを管理するが、他の記憶装置システムモジュール(以下、「他モジュール」と言うことがある)111が管理する一又は複数のローカルLDEVやLUN等を管理しない。別の言い方をすれば、各記憶装置システムモジュール111には、PDEV層と、ローカルLDEV層とが論理的に存在するが、PDEV層及びローカルLDEV層は、各記憶装置システムモジュール111に収まっており、他の記憶装置システムモジュール111に跨っていない。
本実施形態では、ローカルLDEV層の上位であって、LUNの下位に、グローバルLDEV層が設けられる。グローバルLDEV層は、ローカルLDEV層と違って、J台の記憶装置システムモジュール111に跨っている。別の言い方をすれば、本実施形態では、個々の記憶装置システムモジュール111でのみ管理されるローカルLDEVの上位に、J台の(つまり全ての)記憶装置システムモジュール111で管理されるグローバルLDEVが設けられる。ローカルLDEVは、一以上のPDEV112に基づく実体的なLDEVであっても良いし、図示しない他の記憶装置システム内のLDEVに関連付けられた仮想的なLDEVであっても良い。それに対し、グローバルLDEVは、仮想的なLDEVであって、複数の記憶装置システムモジュール111内の複数のローカルLDEVのうちのいずれかに関連付けられるLDEVである。また、グローバルLDEVには、LUNが関連付けられる。
例えば、LUN#00を指定したI/O要求を記憶装置システムモジュール#0が受信した場合、記憶装置システムモジュール#0は、LUN#00に関連付いたグローバルLDEV#0に関連付けられているローカルLDEV#00が自モジュールの管理対象であるか(自モジュールの配下にあるか)他モジュール111の管理対象かを判断する。ここでは、自モジュールの管理対象であると判断されるので、記憶装置システムモジュール#0は、受信したI/O要求に従って、ローカルLDEV#00にアクセスする。その結果、ローカルLDEV#00の基になっているPDEV#00及び#01に対するアクセスが行われる。
もし、LUN#20を指定したI/O要求を記憶装置システムモジュール#0が受信した場合には、そのI/O要求は、直接的に又は間接的に(例えば少なくとも一つの他モジュール111を経由して)、記憶装置システムモジュール#0から記憶装置システムモジュール#2に転送される。なぜなら、LUN#20に関連付いたグローバルLDEV#1に関連付けられているローカルLDEVは、記憶装置システムモジュール#0の管理対象ではなく、記憶装置システムモジュール#2の管理対象であるため、上記の判断で、そのローカルLDEVは他モジュールの管理対象であると判断されるからである。
なお、グローバルLDEVには、複数のLUNを関連付けることが可能である。言い換えれば、グローバルLDEVを結ぶパスを複数本設定することが可能である。例えば、図1の例では、ホスト101から記憶装置システムモジュール#0及び#1が所定の照会コマンド(例えばInquiryコマンド)を受信した場合、記憶装置システムモジュール#0は、LUN#00に関連付けられたデバイスとしてグローバルLDEV#0のグローバルLDEV番号をホスト101に回答し、記憶装置システムモジュール#1は、LUN#10に関連付けられたデバイスとしてグローバルLDEV#0のグローバルLDEV番号をホスト101に回答する。このため、ホスト101は、同一のグローバルLDEV#0に対して異なるLUNが関連付けられていることを知ることができる。故に、ホスト101は、グローバルLDEV#0に繋がる複数のパスを認識することができる。ホスト101は、グローバルLDEV#0にアクセスするときは、複数のパスのうちの一つのパスを任意に又は所定の規則に従って選択し、選択したパスに対応したLUNを指定したI/Oコマンドを送信する。図1の例によれば、ホスト101は、LUN#00を指定したI/Oコマンドを送信しても、LUN#10を指定したI/Oコマンドを送信しても、ローカルLDEV#00にアクセスすることができる。
図2は、記憶装置システムモジュール111の構成を示す。
記憶装置システムモジュール111は、複数のPDEV112で構成されたPDEV群121と、PDEV群121におけるPDEV112へのアクセスを制御する記憶制御装置(コントローラモジュール)120とを備える。なお、記憶装置システム110では、記憶装置システムモジュール単位であることに代えて、PDEV群(PDEVモジュールと呼んでも良い)121の単位、或いは、記憶制御装置120の単位で、増設或いは減設が可能であっても良い。
記憶制御装置120は、フロントエンドインタフェース125と、バックエンドインタフェース133と、プロセッサパッケージ161と、メモリパッケージ163と、スイッチ141とを備える。これらの要素125、133、161、163及び141や、バックエンドインタフェース133から各PDEV112へのパスは、それぞれ、二重化されており、故に、一方に障害が発生しても他方を利用することが可能である。
フロントエンドインタフェース125は、ホスト101との通信を制御する回路基板である。フロントエンドインタフェース125は、例えば、ホスト101からI/O要求を受け付ける複数のポート129と、メモリ(以下、「ローカルメモリ」と言う)131と、制御部127とを備える。制御部127は、例えば、ポート129とローカルメモリ131間の通信を制御するデータ転送回路である。制御部127は、例えば、DMA(Direct Memory Access)回路を含んでいる。
バックエンドインタフェース133は、そのバックエンドインタフェース133に接続されている各PDEVとの通信を制御する回路基板である。
バックエンドインタフェース133は、例えば、PDEV112と通信する複数のポート135と、メモリ(以下、「ローカルメモリ」と言う)137と、制御部139とを備える。制御部139は、例えば、ポート135とローカルメモリ137間の通信を制御するデータ転送回路である。
プロセッサパッケージ161は、一又は複数のプロセッサ(典型的にはマイクロプロセッサ)147と、メモリ(以下、「ローカルメモリ」と言う)143と、制御部139とを備える。プロセッサ147は、フロントエンド処理(ホスト101に対する処理)とバックエンド処理(ローカルLDEVに対する処理)などを行う。制御部139は、例えば、プロセッサ147とローカルメモリ143間の通信を制御するデータ転送回路である。ローカルメモリ143には、制御部139を介してプロセッサ147に読み込まれて実行されるコンピュータプログラムとして、例えば、デバイス定義プログラム151、デバイス削除プログラム152、リードプログラム153、障害回復プログラム154、データ移行プログラム155、障害閉塞プログラム156、ライトプログラム157、パス削除プログラム158及びパス定義プログラム159が記憶される。デバイス定義プログラム151は、グローバルLDEVを定義するためのプログラムである。デバイス削除プログラム152は、グローバルLDEVを削除するためのプログラムである。リードプログラム153は、受信したリード要求に関する処理を行うプログラムである。障害回復プログラム154は、障害発生による閉塞から回復したグローバルLDEVに関する処理を行うプログラムである。データ移行プログラム155は、グローバルLDEV間のデータ移行に関する処理を行うプログラムである。障害閉塞プログラム156は、障害発生によってグローバルLDEVを閉塞するためのプログラムである。ライトプログラム157は、受信したライト要求に関する処理を行うプログラムである。パス削除プログラム158は、グローバルLDEVに繋がるパスを削除するためのプログラムである。パス定義プログラム159は、グローバルLDEVに繋がるパスを定義するためのプログラムである。
メモリパッケージ163は、揮発性のメモリであるキャッシュメモリ165と、キャッシュメモリ165に対するデータの書き込みや読み出しの際のインタフェースとなる制御部(アダプタ)167とを有する回路基板である。キャッシュメモリ165には、ローカルLDEVに書き込まれるライト対象のデータ(以下、「ライトデータ」と言う)や、ローカルLDEVから読み出されたリード対象のデータ(以下、「リードデータ」と言う)が一時的に記憶される。また、キャッシュメモリ165には、管理情報が記憶される。管理情報については、後に、図3乃至図11Bを参照して詳細に説明する。また、電源障害時、キャッシュメモリ165に記憶中のデータで、ホストから更新されPDEV群121に未書き込みのデータの喪失を回避するため、キャッシュメモリ165をバッテリバックアップしてもよい。また、フラッシュメモリ等の不揮発のメモリ媒体でキャッシュメモリ165を構成しても良い。
スイッチ141は、フロントエンドインタフェース125、バックエンドインタフェース133、プロセッサパッケージ161及びメモリパッケージ163の各々の間の通信を制御する回路基板である。スイッチ141には、フロントエンドインタフェース125、バックエンドインタフェース133、プロセッサパッケージ161及びメモリパッケージ163が接続される。また、スイッチ141は、拡張ポートを有し、他の記憶装置システムモジュール111内のスイッチ141に、拡張ポート及びリンク(例えばケーブル)1を介して接続される。すなわち、記憶装置システムモジュール111が他の記憶装置システムモジュール111との間でデータのやりとりを行うことができるよう接続される。
記憶装置システムモジュール111同士の接続は、フロントエンドインタフェース125同士或いはバックエンドインタフェース133同士が接続されることにより実現されても良いが、本実施形態では、前述したように、スイッチ141同士が接続されることにより実現される。例えば、全ての記憶装置システムモジュール111内の全てのスイッチ141が、それぞれ、他の全てのスイッチ141と接続する。これにより、例えば、どの記憶装置システムモジュール111も、所望の他の記憶装置システムモジュール111に、一つ以上の他の記憶装置システムモジュール111を経由することなく、ホスト101から受信したI/O要求を転送することができる。
なお、スイッチ141同士の接続は、前述の例に限らず、一つのスイッチ141が少なくとも一つの他のスイッチ141と接続されていれば良い。言い換えれば、或る記憶装置システムモジュール111から他の記憶装置システムモジュール111にI/O要求を転送する場合に、一つ以上のまた別の記憶装置システムモジュール111が経由されても良い。
以下、フロントエンドインタフェース125、バックエンドインタフェース133、プロセッサパッケージ161及びメモリパッケージ163のそれぞれのパッケージ間の、スイッチ141により実現されている結合を、「密結合」と呼び、記憶装置システムモジュール111内のスイッチ141と他の記憶装置システムモジュール111内のスイッチ141同士の結合を、「疎結合」と呼ぶことがある。なぜなら、一つの記憶装置システムモジュール111内でのパッケージ間では、当該記憶装置システムモジュール111のキャッシュメモリ165に記憶される管理情報を直接参照及び更新することを可能とし、一方、記憶装置システムモジュール111間での管理情報のやり取りは、他の記憶装置システムモジュール111のキャッシュメモリ165に記憶される管理情報を直接参照及び更新することを許さず、他のプロセッサパッケージ161のプロセッサ147に依頼することで間接的に参照及び更新させるためである。つまり、密結合とは、管理情報を直接的に参照/更新する結合(つまりスイッチ141により実現されている結合)を言い、疎結合とは、管理情報を間接的に参照及び更新する結合(つまりスイッチ同士のリンクにより実現されている結合)を言う。
以下、キャッシュメモリ165に記憶される管理情報について詳細に説明する。なお、管理情報は、キャッシュメモリ165に限らず、記憶装置システムモジュール111内の別の記憶資源(例えばローカルメモリ131、137、又は143)に記憶されても良い。また、以下の説明では、情報要素を表すときには、大カッコ([])を利用して表すことにする。
図3は、管理情報の構成を示す。以下、図3乃至図11Bの説明において、この管理情報を有する記憶装置システムモジュール111を、「自モジュール111」と言い、自モジュール111以外の記憶装置システムモジュール111を、「他モジュール111」と言う。
管理情報200は、この管理情報200を保持する記憶装置システムモジュール111に関する構成や、グローバルLDEVなどに関する情報である。管理情報200には、例えば、パス管理情報201、ボリューム管理情報203、構成管理情報211及びデータ移行管理情報217が含まれる。ボリューム管理情報203には、グローバルLDEV管理情報205、ローカルLDEV管理情報207及びPDEV管理情報209が含まれる。構成管理情報211には、モジュール実装管理情報213及び構成部位管理情報215が含まれる。
図4Aは、パス管理情報201の構成を示す。
パス管理情報201は、グローバルLDEVに繋がるパスに関する情報である。パス管理情報201は、複数のパスエントリ2011で構成される。各パスエントリ2011は、自モジュール111が有する各パスに対応する。
図4Bは、パスエントリ2011の構成を示す。以下、図4Bの説明において、このパスエントリ2011に対応するパスを、「対象パス」と言う。
パスエントリ2011には、[ポート番号]、[LUN]、[グローバルLDEV番号]及び[状態]が含まれる。[ポート番号]は、対象パスが経由するポート129(フロントエンドインタフェース125が有するポート129)の番号である。[LUN]は、対象パスが経由するLUNである。[グローバルLDEV番号]は、対象パスに繋がるグローバルLDEVの番号である。[状態]は、対象パスに繋がるグローバルLDEVの状態である。[状態]としては、例えば、正常であることを意味する“正常”や、自モジュール111によるグローバルLDEVに対するアクセスが不可能であることを意味する“閉塞”がある。
図5Aは、グローバルLDEV管理情報205の構成を示す。
グローバルLDEV管理情報205は、複数のグローバルLDEVに関する情報である。グローバルLDEV管理情報205は、空きグローバルLDEV番号管理情報2051、グローバルLDEVディレクトリ2052、複数のグローバルLDEVエントリ2053、空きグローバルLDEVエントリ管理情報2054で構成される。各グローバルLDEVエントリ2053は、各グローバルLDEVに対応する。
空きグローバルLDEV番号管理情報2051は、空きのグローバルLDEV番号を管理するための情報であり、例えばビットマップである。本実施形態では、図7Bに示すように、グローバルLDEV番号はローカルLDEV番号を含み、空きグローバルLDEV番号管理情報2051では、グローバルLDEVに関連付け可能な空きのローカルLDEV番号が管理される。グローバルLDEV番号は、具体的には、例えば、図7Bに示すように、ローカルLDEV番号と、モジュール番号と、世代番号とで構成される。モジュール番号は、このグローバルLDEV番号に対応するグローバルLDEVを生成した記憶装置システムモジュール111の番号である。世代番号は、グローバルLDEVの世代を表す番号である。例えば、記憶装置システムモジュール111が、或るローカルLDEVを関連付けた第一のグローバルLDEVを定義(生成)した後に、再起動し、その後、同一のローカルLDEV(上記或るローカルLDEV)を関連付けた第二のグローバルLDEVを定義する際、第二のグローバルLDEVの番号に含まれる世代番号を、第一のグローバルLDEVの番号に含まれる世代番号と違える。なお、世代番号に代えて、例えば、グローバルLDEVを定義する際の日時など、他種の非重複コードを採用することが可能である。
グローバルLDEVディレクトリ2052は、グローバルLDEVエントリの索引となる情報である。グローバルLDEVディレクトリ2052は、図5Bに示すように、複数のハッシュ値にそれぞれ対応した複数のディレクトリ要素で構成される。ここで言う「ハッシュ値」とは、グローバルLDEV番号のハッシュ値である。ディレクトリ要素には、[先頭ポインタ]と[終端ポインタ]とが含まれる。[先頭ポインタ]は、ディレクトリ要素の先頭のポインタであり、[終端ポインタ]は、このディレクトリ要素の終端のポインタである。
グローバルLDEVエントリ2053は、このグローバルLDEVエントリに対応するグローバルLDEVに関する情報である。以下、この段落において、このグローバルLDEVエントリに対応するグローバルLDEVを、「対象グローバルLDEV」と言う。グローバルLDEVエントリ2053には、図6Aに示すように、[グローバルLDEV番号]、[モジュール番号]、[ローカルLDEV番号]、[転送先プロセッサ情報]、[後方ポインタ]及び[前方ポインタ]が含まれる。[グローバルLDEV番号]は、対象グローバルLDEVの番号である。[モジュール番号]は、対象グローバルLDEVに関連付けられているローカルLDEVを有する記憶装置システムモジュール111を識別するための番号である。対象グローバルLDEVに関連付けられているローカルLDEVが存在する記憶装置モジュール内でのグローバルLDEVエントリには、[モジュール番号]として、デバイス定義プログラム151の図12のS108において、そのモジュールの番号が設定される。また、対象グローバルLDEVに関連付けられているローカルLDEVが存在しない記憶装置モジュール内でのグローバルLDEVエントリには、[モジュール番号]として、パス定義プログラム159の図13のS115においてS113で問合せた結果の番号が設定される。[ローカルLDEV番号]は、対象グローバルLDEVに関連付けられているローカルLDEVの番号である。[ローカルLDEV番号]は、そのローカルLDEVが自モジュール111に存在する場合に、グローバルLDEVエントリに含められる。[転送先プロセッサ情報]は、対象グローバルLDEVに関連付けられているローカルLDEVを有する他モジュール111内のプロセッサ147を同定するための情報である。従って、[転送先プロセッサ情報]は、そのローカルLDEVが他モジュール111に存在する場合に、グローバルLDEVエントリに含められる。[後方ポインタ]は、グローバルLDEVエントリの後方且つ直近の他のグローバルLDEVエントリを表すポインタ、或いは、グローバルLDEVエントリが繋がるディレクトリ要素の[終端ポインタ]である。[前方ポインタ]は、グローバルLDEVエントリの前方且つ直近の他のグローバルLDEVエントリを表すポインタ、或いは、グローバルLDEVエントリが繋がるディレクトリ要素の[前方ポインタ]である。
空きグローバルLDEVエントリ管理情報2054は、空きのグローバルLDEVエントリを管理するための情報である。空きグローバルLDEVエントリ管理情報2054は、図6Bに示すように、[空きエントリ先頭ポインタ]、[空きエントリ終端ポインタ]、及び[空きエントリ数]を含む。空きグローバルLDEVエントリは、例えばキュー形式で管理されている。[空きエントリ先頭ポインタ]は、先頭の空きグローバルLDEVエントリのポインタである。[空きエントリ終端ポインタ]は、終端の空きグローバルLDEVエントリのポインタである。[空きエントリ数]は、空きグローバルLDEVエントリの数である。
図7Aは、グローバルLDEV管理情報205の概念を示す。
空きグローバルLDEV番号管理情報2051を参照することで、空きのローカルLDEV番号が特定され、その特定されたローカルLDEV番号を含んだグローバルLDEV番号が生成される。
空きグローバルLDEVエントリ管理情報2054を参照することにより、空きグローバルLDEVエントリ(図7Aにおいて“無効”と書かれているブロック)が特定される。
生成されたグローバルLDEV番号のハッシュ値が算出され、ハッシュ値に対応するディレクトリ要素に、直接的に又は間接的に(他のローカルLDEVとまた別のローカルLDEVとの間に)、特定された空きグローバルLDEVエントリが関連付けられる。その空きグローバルLDEVエントリに、所定種類の情報要素が含められる。
図7Aから分かるように、グローバルLDEV番号が異なっていても同一のハッシュ値になることがある。
図8Aは、ローカルLDEV管理情報207の構成を示す。
ローカルLDEV管理情報207は、自モジュール111に存在する複数のローカルLDEVに関する情報である。ローカルLDEV管理情報207は、複数のローカルLDEVエントリ2071で構成される。各ローカルLDEVエントリ2071は、自モジュール111が有する各ローカルLDEVに対応する。
図8Bは、ローカルLDEVエントリ2071の構成を示す。以下、図8Bの説明において、このローカルLDEVエントリ2071に対応するローカルLDEVを、「対象ローカルLDEV」と言う。
ローカルLDEVエントリ2071には、[ローカルLDEV番号]、[グローバルLDEV番号]、[PDEVパス番号]、[RAIDグループ番号]、「先頭アドレス」、「終端アドレス」、[容量]、[ボリューム属性]及び[状態]が含まれる。[ローカルLDEV番号]は、対象ローカルLDEVの番号である。[グローバルLDEV番号]は、対象ローカルLDEVが関連付いているグローバルLDEVの番号である。[PDEVパス番号]は、対象ローカルLDEVの基になっている各PDEVへのパスを表す番号である。[RAIDグループ番号]は、対象ローカルLDEVを有するRAIDグループ(複数のPDEV112で構成された、RAID(Redundant Array of Independent (or Inexpensive) Disks)に従うグループ)の番号である。「先頭アドレス」は、そのRAIDグループにおける、対象ローカルLDEVに対応した連続した領域の先頭のアドレスである。「終端アドレス」は、その連続した領域の終端のアドレスである。[容量]は、対象ローカルLDEVの記憶容量である。[ボリューム属性]は、対象ローカルLDEVの属性(種類)である。[状態]は、対象ローカルLDEVの状態である。[状態]としては、例えば、正常であることを意味する“正常”や、アクセスが不可能であることを意味する“閉塞”がある。
図9Aは、PDEV管理情報209の構成を示す。
PDEV管理情報209は、自モジュール111に存在する複数のPDEV112に関する情報である。PDEV管理情報209は、複数のPDEVエントリ2091で構成される。各PDEVエントリ2091は、自モジュール111が有する各PDEV112に対応する。
図9Bは、PDEVエントリ2091の構成を示す。以下、図9Bの説明において、このPDEVエントリ2091に対応するPDEVを、「対象PDEV」と言う。
PDEVエントリ2091には、[PDEV番号]、[PDEVパス番号]、[RAIDグループ番号]、[PDEV状態]及び[容量]が含まれる。[PDEV番号]は、対象PDEVの番号である。[PDEVパス番号]は、対象PDEVへのパスを表す番号である。[RAIDグループ番号]は、対象PDEVを含んだRAIDグループの番号である。「PDEV状態」は、対象PDEVの状態(例えば“閉塞”、“正常”など)である。[容量]は、対象PDEVの記憶容量である。
図10Aは、モジュール実装管理情報213の構成を示す。
モジュール実装管理情報213は、J台の記憶装置モジュール111に関する情報である。モジュール実装管理情報213は、J個のモジュールエントリ2131で構成される。各モジュールエントリ2131は、各記憶装置システムモジュール111に対応する。
図10Bは、モジュールエントリ2131の構成を示す。以下、図10Bの説明において、このモジュールエントリ2131に対応する記憶装置システムモジュールを、「対象モジュール」と言う。
モジュールエントリ2131には、[実装]、[状態]及び[転送先プロセッサ情報]が含まれる。[実装]は、対象モジュール111が実装か非実装かを表す。[状態]は、対象モジュールの状態(例えば“正常”、“閉塞”)を表す。[転送先プロセッサ情報]は、対象モジュール111にとっての他モジュール111内の転送先プロセッサに関する情報である。この[転送先プロセッサ情報]は、図6Aに示した[転送先プロセッサ情報]と同じであっても良いが、本実施形態では異なる。具体的には、図10Bに示した[転送先プロセッサ情報]は、複数の転送先プロセッサに関する情報であり、一方、図6Aに示した[転送先プロセッサ情報]は、一つの転送先プロセッサに関する情報である。もし、その一つの転送先プロセッサにI/O要求を転送することができない場合には、別の転送先プロセッサを、図10Bに示した[転送先プロセッサ情報]が表す複数の転送先プロセッサから選択し、選択した別の転送先プロセッサにI/O要求を転送することが可能である。
図10Cは、構成部位管理情報215の構成を示す。
構成部位管理情報215は、自モジュール111の複数の構成部位に関する情報である。ここで言う「構成部位」は、フロントエンドインタフェース125、プロセッサパッケージ161等のように大きな単位であっても良いし、ローカルメモリ131、ポート129、プロセッサ147等のように小さな単位であっても良い。構成部位管理情報215は、複数の構成部位エントリ2151で構成される。各構成部位エントリ2151は、自モジュール111内の各構成部位に対応する。
図10Dは、構成部位エントリ2151の構成を示す。以下、図10Bの説明において、この構成部位エントリ2151に対応する構成部位を、「対象構成部位」と言う。
構成部位エントリ2151には、[実装]、[状態]及び[障害発生回数]が含まれる。[実装]は、対象構成部位が実装か非実装かを表す。[状態]は、対象構成部位の状態(例えば“正常”、“閉塞”)を表す。[障害発生回数]は、対象構成部位の障害が検出された回数を表すカウント値である。
図11Aは、データ移行管理情報217の構成を示す。
データ移行管理情報217は、データ移行に関する情報である。データ移行管理情報217は、1又は複数のデータ移行エントリ2171で構成される。各データ移行エントリ2171は、各データ移行に対応する。
図11Bは、データ移行エントリ2171の構成を示す。以下、図11Bの説明において、このデータ移行エントリ2171に対応するデータ移行を、「対象データ移行」と言う。
データ移行エントリ2171には、[移行元グローバルLDEV番号]、[移行先グローバルLDEV番号]、[移行状態]及び[移行データ転送進捗ポインタ]が含まれる。[移行元グローバルLDEV番号]は、対象データ移行におけるデータの移行元グローバルLDEVの番号である。[移行先グローバルLDEV番号]は、対象データ移行におけるデータの移行先グローバルLDEVの番号である。[移行状態]は、対象データ移行の状態(例えば“移行中”、“移行終了”)である。[移行データ転送進捗ポインタ]は、対象データ移行の進捗を表すポインタであって、具体的には、移行元グローバルLDEVの先頭からどこまでのデータの移行が済んでいるかを表すポインタである。
以下、各種コンピュータプログラムの動作を説明する。なお、以下の説明において、説明の対象のコンピュータプログラムが実行されるプロセッサ147を有した記憶装置システムモジュールを、「自モジュール」と言い、自モジュール111以外の記憶装置システムモジュール111を、「他モジュール」と言う。
図12は、デバイス定義プログラム151の動作のフローチャートである。
自モジュール111が、保守端末113又は管理端末107からデバイス定義要求を受信した場合に、デバイス定義プログラム151が起動する。
デバイス定義プログラム151は、保守端末113又は管理端末107に、一又は複数の空きPDEV領域を表す情報及び一又は複数の空きローカルLDEV番号を送信する(S101)。これにより、保守端末113又は管理端末107が有する表示装置(図示せず)に、一又は複数の空きPDEV領域を表す情報及び一又は複数の空きローカルLDEV番号が表示される。なお、「空きPDEV領域」とは、RAIDグループにおける、未だローカルLDEVとして使用されていない記憶領域のことである。デバイス定義プログラム151は、グローバルLDEV管理情報205(特に、各ローカルLDEVエントリ2071内の[RAIDグループ番号]、[先頭アドレス]、[終端アドレス]やPDEV管理情報209を参照することにより、空きPDEV領域を特定する。また、デバイス定義プログラム151は、ローカルLDEV管理情報207のローカルLDEVエントリ2071の設定状態を参照する等して、空きローカルLDEV番号を特定する。
デバイス定義プログラム151は、一又は複数のPDEV領域のうちの指定されたPDEV領域を表す情報と、一又は複数の空きローカルLDEV番号のうちの指定されたローカルLDEV番号とを含んだローカルLDEVエントリ2071を作成し、ローカルLDEV管理情報207に追加する(S102)。なお、「指定されたPDEV領域」及び「指定されたローカルLDEV番号」は、保守端末113又は管理端末107のオペレータによって指定されたPDEV領域及びローカルLDEV番号である。
デバイス定義プログラム151は、指定されたローカルLDEV番号を含んだグローバルLDEV番号を生成する(S103)。
デバイス定義プログラム151は、生成したグローバルLDEV番号は既に使用中であるか否かを判断する(S104)。もし、グローバルLDEV管理情報205内に、生成したグローバルLDEV番号と同じグローバルLDEV番号が含まれていれば、S104では、使用中との判断になり(S104でY)、そうでなければ、使用中ではないとの判断になる(S104でN)。
S104でYの場合、デバイス定義プログラム151は、空きグローバルLDEV番号管理情報2051を参照し空きのグローバルLDEV番号を特定する等の方法より、別のグローバルLDEV番号を生成する(S105)。このS105では、グローバルLDEV管理情報205内に存在しないグローバルLDEV番号が生成される。
デバイス定義プログラム151は、S103又はS105で生成したグローバルLDEV番号を、保守端末113又は管理端末107に送信する(S106)。これにより、保守端末113又は管理端末107が有する表示装置(図示せず)に、グローバルLDEV番号が表示される。デバイス定義プログラム151は、送信したグローバルLDEV番号が保守端末113又は管理端末107から指定されれば(S107でY)、S108を実行し、指定されなければ(S107でN)、S105を実行する。
S108で、デバイス定義プログラム151は、空きグローバルLDEVエントリ管理情報2054を参照することにより、一つの空きグローバルLDEVエントリを選択し、選択した空きグローバルLDEVエントリに、指定されたグローバルLDEV番号を含める。
S109で、デバイス定義プログラム151は、指定されたグローバルLDEV番号を含んだグローバルLDEVエントリを、グローバルLDEVディレクトリ2052に接続する。なお、接続先は、指定されたグローバルLDEV番号のハッシュ値に対応したディレクトリ要素、或いは、そのディレクトリ要素に直接的に又は間接的に接続されている他のグローバルLDEVエントリ2053となる。また、デバイス定義プログラム151は、上記追加したローカルLDEVエントリに、指定されたグローバルLDEV番号を含める。
図13は、パス定義プログラム159の動作のフローチャートである。
自モジュール111が、保守端末113又は管理端末107からパス定義要求を受信した場合に、パス定義プログラム159が起動する。パス定義要求には、例えば、ポート番号、LUN及びグローバルLDEV番号が含まれている。
パス定義プログラム159は、自モジュールのグローバルLDEV管理情報205のグローバルLDEVディレクトリ2052を参照し(S111)、パス定義要求内のグローバルLDEV番号から同定されるグローバルLDEV(以下、図13の説明において、「指定グローバルLDEV」と言う)が存在するか否かを判断する(S112)。パス定義要求内のグローバルLDEV番号が、グローバルLDEV管理情報205に含まれていれば、肯定的な判断結果となり(S112でY)、そうでなければ、否定的な判断結果となる(S112でN)。
S112でYの場合、パス定義プログラム159は、後述のS113乃至S116を行わずに、S117を実行すること(すなわち、パス定義要求内のポート番号、LUN及びグローバルLDEV番号を含んだパスエントリ2011をパス管理情報201に追加すること)ができる。なぜなら、指定グローバルLDEVに関連付けられているローカルLDEVが自モジュール111にあるか、あるいは、他モジュールにあるが既にパス定義済み/データ移行先定義済みであるため、指定グローバルLDEVに対応したグローバルLDEVエントリ2053に、[ローカルLDEV番号]あるいは[転送先プロセッサ情報]が含まれており、新たにグローバルLDEVエントリ2053を作成する必要がないためである。
S112でNの場合、パス定義プログラム159は、指定グローバルLDEVに関連付けられているローカルLDEVが他モジュール111に存在するか否かを問合せ(S113)、結果を判断する(S114)。他モジュール111において指定グローバルLDEVの番号を含んだローカルLDEVエントリ2071がローカルLDEV管理情報207内に存在すれば、肯定的な判断結果となり(S114でY)、そうでなければ、否定的な判断結果となる(S114でN)。S114でNの場合、パス定義プログラム159は、パス定義の送信元(要求元)に、エラーを報告する(S118)。
S114でYの場合、パス定義プログラム159は、S115及びS116を実行した上で、前述したS117を実行する。
S115で、パス定義プログラム159は、空きグローバルLDEVエントリ管理情報2054を参照することにより、一つの空きグローバルLDEVエントリを選択する。なぜなら、自モジュール111内のグローバルLDEV管理情報205には、未だ、指定グローバルLDEVに対応したグローバルLDEVエントリが含まれていないためである。
また、S115で、パス定義プログラム159は、指定グローバルLDEVに関連付けられているローカルLDEVを有する他モジュール111内のプロセッサ147に関する情報を、[転送先プロセッサ情報]として、上記選択した空きグローバルLDEVエントリに含める。この[転送先プロセッサ情報]は、例えば、自モジュール111に対応したモジュールエントリ2131内の[転送先プロセッサ情報]を基に生成することができる。
S116で、パス定義プログラム159は、パス定義要求内のグローバルLDEV番号を上記選択した空きグローバルLDEVエントリに含め、そのグローバルLDEVエントリを、グローバルLDEVディレクトリ2052に接続する。この後、前述したように、パス定義プログラム159は、S117を実行する。
図14は、リードプログラム153の動作のフローチャートである。
自モジュール111がホスト101又は他モジュール111からリード要求を受信した場合に、リードプログラム153が起動する。
リードプログラム153は、受信したリード要求がホスト101からのリード要求であれば(S122でY)、S123を実行し、受信したリード要求が他モジュール111からのリード要求であれば(S122でN)、S123を実行することなく、S124を実行する。この場合、例えば、リード要求の転送元が、リード要求の転送先に、S123で特定されるグローバルLDEV番号を通知することで、リード要求の転送先において、後述の対象グローバルLDEV番号を特定できるようにしても良い。或いは、例えば、受信したリード要求がホスト101からのリード要求であるか否かに関わらず、S123を行うようにしても良い。
S123で、リードプログラム153は、受信したリード要求で指定されているポート番号及びLUNに対応するグローバルLDEV番号を、パス管理情報201から特定する。
S124で、リードプログラム153は、特定されるグローバルLDEV番号に対応したグローバルLDEV(以下、図14及び図15の説明において、「対象グローバルLDEV」と言う)に関連付けられているローカルLDEVが、自モジュールに存在するか否かを判断する。対象グローバルLDEVに対応したグローバルLDEVエントリ2053に、
[ローカルLDEV番号]が含まれていれば、肯定的な判断結果となり(S124でY)、[転送先プロセッサ情報]が含まれていれば、否定的な判断結果となる(S124でN)。
S124でNであれば、リードプログラム153は、対象グローバルLDEVに対応したグローバルLDEVエントリ2053内の[転送先プロセッサ情報]から特定される、他モジュール111内のプロセッサ(以下、「転送先プロセッサ」と言う)147に、受信したリード要求を転送する(S125)。そして、リードプログラム153は、リード要求の転送先の他モジュール111(転送先プロセッサ147)からの、リードデータの位置の通知を待つ(S126)。
S124でYの場合、リードプログラム153は、自モジュール111内のキャッシュメモリ165にリードデータが存在するか否かを判断する(S127)。否定的な判断結果になれば(S127でN)、リードプログラム153は、リードデータを、自モジュール111内のローカルLDEV(対象グローバルLDEVに関連付けられているローカルLDEV)の基になっているPDEV112から読み出し、読み出したリードデータをキャッシュメモリ165に書き込む(S128)。
リードプラグラム153は、上記受信したリード要求が他モジュール111からのリード要求であれば(S129でY)、リード要求の転送元の他モジュール111に、リードデータの位置を通知する(S130)。
一方、リードプラグラム153は、S129でNの場合、或いは、S126が実行された場合、リードデータのホスト101への送信(S131)と、リード終了のホスト101への報告(S132)とを行う。ホスト101へ送信されるリードデータは、S129でNの場合でのS131であれば、自モジュール111内のキャッシュメモリ165に記憶されているリードデータであり、S126においてリードデータの位置の通知を受けた場合でのS131であれば、リード要求の転送先の他モジュール111内の通知された位置から取得されたリードデータである。
図15は、自モジュール111がホスト101からリード要求を受信し他モジュール111にそのリード要求を転送する場合でのリードデータ転送の流れの概要を示す。図15の説明では、自モジュール111の番号を#0とし、他モジュール111の番号を#1とする。また、自モジュール#0内の構成部位の参照番号の末尾に“A”を付し、他モジュール#1内の構成部位の参照番号の末尾に“B”を付す。以下、図15に記載の手順(1)乃至手順(6)を説明する。
(手順(1))自モジュール#0がホスト101からリード要求を受信し、受信したリード要求が、ローカルメモリ143A内の通信領域に書き込まれる。「通信領域」とは、記憶装置システムモジュール111間で通信されるデータが記憶される記憶領域である。
(手順(2))ローカルメモリ143A内の通信領域に書き込まれているリード要求が、他モジュール#1内の転送先プロセッサ147Bに転送される。そして、転送先プロセッサ147Bによって、転送先プロセッサ147Bが受けたリード要求が、ローカルメモリ143B内の通信領域に書き込まれる。
(手順(3))転送先プロセッサ147Bで実行されるリードプログラム(以下、「リードプログラム153B」と言う)によって、対象グローバルLDEVに関連付けられているローカルLDEVの基になっているPDEV123Bから、リードデータが読み出され、そのリードデータが、キャッシュメモリ165Bに書き込まれる。
(手順(4))リードプログラム153Bによって、キャッシュメモリ165Bにおけるリードデータの位置(以下、「転送元キャッシュアドレス」と言う)が、ローカルメモリ143B及び143A内のそれぞれの通信領域を介して、自モジュール#0内の転送元プロセッサ147Aに通知される。
(手順(5))転送元プロセッサ147Aで実行されるリードプログラム(以下、「リードプログラム153A」と言う)によって、転送元キャッシュアドレスが、フロントエンドパッケージ125A(例えばそのパッケージ125A内のDMA回路)に設定される。フロントエンドパッケージ125Aによって、転送元キャッシュアドレス、つまり、キャッシュメモリ165Bにおけるリードデータの位置からリードデータが読み出され、そのリードデータが、フロントエンドパッケージ125Aからホスト101に送信される。
(手順(6))リードプログラム153Aによって、リード終了が、ホスト101に報告される。
以上のように、記憶装置システムモジュール111間でのデータ転送が、転送元モジュール111が転送先モジュール111にデータを書き込むことによって実現されるのではなく、転送先モジュール111が転送元モジュール111から通知された位置からデータを読み出すことによって実現される。これにより、転送元モジュール111によって転送先モジュール111内のデータが誤って破壊されてしまうことを回避することができる。これは、記憶装置システムモジュール111間でリード要求が転送されることに伴うリードデータ転送だけでなく、記憶装置システムモジュール111間でライト要求が転送されることに伴うライトデータ転送や、記憶装置システムモジュール111間でのデータ移行に伴うデータ転送でも同様である。
図16は、ライトプログラム157の動作のフローチャートである。
自モジュール111がホスト101又は他モジュール111からライト要求を受信した場合に、ライトプログラム157が起動する。
ライトプログラム157は、受信したライト要求がホスト101からのライト要求であれば(S142でY)、S145以降を実行し、受信したライト要求が他モジュール111からのライト要求であれば(S142でN)、S143及びS144を実行する。
S143で、ライトプログラム157は、ライト要求の転送元の他モジュール111から通知された、他モジュール111が有するキャッシュメモリ165におけるバッファ領域内の位置から、自モジュール111のキャッシュメモリ165へ、ライトデータを移す。
S144で、ライトプログラム157は、ライト要求の転送元の他モジュール111に、ライトデータ転送終了を通知する。
S145で、ライトプログラム157は、受信したライト要求で指定されているポート番号及びLUNに対応するグローバルLDEV番号を、パス管理情報201から特定する。
S146で、ライトプログラム157は、特定されるグローバルLDEV番号に対応したグローバルLDEV(以下、図16及び図17の説明において、「対象グローバルLDEV」と言う)に関連付けられているローカルLDEVが、自モジュールに存在するか否かを判断する。対象グローバルLDEVに対応したグローバルLDEVエントリ2053に、
[ローカルLDEV番号]が含まれていれば、肯定的な判断結果となり(S146でY)、[転送先プロセッサ情報]が含まれていれば、否定的な判断結果となる(S146でN)。
S146でNであれば、ライトプログラム157は、自モジュール111が有するキャッシュメモリ165内のバッファ領域に、ライト要求に従うライトデータを書き込む(S147)。ライトプログラム157は、対象グローバルLDEVに対応したグローバルLDEVエントリ2053内の[転送先プロセッサ情報]から特定される、他モジュール111内のプロセッサ(以下、「転送先プロセッサ」と言う)147に、受信したライト要求とライトデータ位置情報(転送元キャッシュアドレス)とを転送する(S148)。そして、ライトプログラム157は、転送先の他モジュール111(転送先プロセッサ147)からの、ライトデータ転送終了の通知を待つ(S149)。
S146でYの場合、ライトプログラム157は、ライトデータを、自モジュール111内のキャッシュメモリ165に書き込む(S150)。キャッシュメモリ165に書き込まれたライトデータは、S150と非同期に(S150に同期しても良い)、キャッシュメモリ165から、ライトプログラム157によって、対象グローバルLDEVに関連付けられているローカルLDEVの基になっているPDEV112に書き込まれる。
S149又はS150の後、ライトプログラム157は、ライト終了をホスト101に報告する(S151)。
図17は、自モジュール111がホスト101からライト要求を受信し他モジュール111にそのライト要求を転送する場合でのライトデータ転送の流れの概要を示す。図17の説明では、図15の説明と同様に、自モジュール111の番号を#0とし、他モジュール111の番号を#1とする。また、自モジュール#0内の構成部位の参照番号の末尾に“A”を付し、他モジュール#1内の構成部位の参照番号の末尾に“B”を付す。以下、図17に記載の手順(1)乃至手順(6)を説明する。
(手順(1))自モジュール#0がホスト101からライト要求を受信し、受信したライト要求が、ローカルメモリ143A内の通信領域に書き込まれる。
(手順(2))自モジュール#0がホスト101からライト要求に従うライトデータを受信し、受信したライトデータが、転送元プロセッサ147Aで実行されるライトプログラム(以下、「ライトプログラム157A」と言う)によって、キャッシュメモリ165A内のバッファ領域に書き込まれる。
(手順(3))ローカルメモリ143A内の通信領域に書き込まれているライト要求と、キャッシュメモリ165A内のバッファ領域におけるライトデータの位置を示した情報である転送元キャッシュアドレスとが、ライトプログラム157Aによって、他モジュール#1内の転送先プロセッサ147Bに転送される。そして、転送先プロセッサ147Bによって、転送先プロセッサ147Bが受けたライト要求及び転送元キャッシュアドレスが、ローカルメモリ143B内の通信領域に書き込まれる。
(手順(4))転送先プロセッサ147Bで実行されるライトプログラム(以下、「ライトプログラム157B」と言う)によって、ローカルメモリ143B内の通信領域に記憶されている転送元キャッシュアドレス、つまり、キャッシュメモリ165A内のバッファ領域からライトデータが読み出され、キャッシュメモリ165Bに書き込まれる。キャッシュメモリ165Bに書き込まれたライトデータは、手順(4)の終了と非同期に(手順(4)の終了と同期しても良い)、キャッシュメモリ165Bから、対象グローバルLDEVに関連付けられているローカルLDEVの基になっているPDEV112に書き込まれる。
(手順(5))ライトプログラム157Bによって、ライトデータ転送の終了が、転送元プロセッサ147Aに報告される。
(手順(6))ライトプログラム157Aによって、ライト終了が、ホスト101に報告される。
図18は、パス削除プログラム158の動作のフローチャートである。
自モジュール111が、保守端末113又は管理端末107からパス削除要求を受信した場合に、パス削除プログラム158が起動する。パス削除要求には、例えば、ポート番号、LUN及びグローバルLDEV番号が含まれている。
パス削除プログラム158は、パス削除要求内のグローバルLDEV番号から同定されるグローバルLDEV(以下、図18の説明において、「指定グローバルLDEV」と言う)が定義済みか否かを判断する(S161)。パス削除要求内のグローバルLDEV番号が、グローバルLDEV管理情報205に含まれていれば、肯定的な判断結果となり(S161でY)、そうでなければ、否定的な判断結果となる(S161でN)。S161でNの場合、パス削除プログラム158は、パス削除要求の送信元(要求元)に、エラーを報告する(S167)。
S161でYの場合、パス削除プログラム158は、指定グローバルLDEVに関連付けられているローカルLDEVが自モジュール111に存在するか否かを判断する(S162)。指定グローバルLDEVの番号を含んだローカルLDEVエントリ2071がローカルLDEV管理情報207内に存在すれば、肯定的な判断結果となり(S162でY)、そうでなければ、否定的な判断結果となる(S162でN)。S162でYならば、パス削除プログラム158は、後述のS163乃至S165を行わずに、S166を実行すること(すなわち、パス削除要求内のポート番号、LUN及びグローバルLDEV番号を含んだパスエントリ2011をパス管理情報201から削除すること)ができる。
S162でNの場合、パス削除プログラム158は、自モジュール111に、指定グローバルLDEVに繋がる他のパス(削除対象パス以外のパス)が存在するか否か、また、指定グローバルLDEVがデータ移行元/移行先に該当するか否かを判断する(S163)。パス削除要求内のグローバルLDEV番号を含んだ二個以上のパスエントリ2011がパス管理情報201内に存在する、あるいは、パス削除要求内のグローバルLDEV番号を含んだ一個以上のデータ移行エントリ2171がデータ移行管理情報217内に存在すれば、肯定的な判断結果となり(S163でY)、そうでなければ、否定的な判断結果となる(S163でN)。S163でYならば、パス削除プログラム158は、後述のS164及びS165を行わずに、前述したS116を実行することができる。S163でNならば、パス削除プログラム158は、S164及びS165を実行した上で、前述したS166を実行する。
S164で、パス削除プログラム158は、パス削除要求内のグローバルLDEV番号を含んだグローバルLDEVエントリ2053を、グローバルLDEVディレクトリ2052から外す。
S165で、パス削除プログラム158は、S164で外したグローバルLDEVエントリ2053を、空きグローバルLDEVエントリ管理情報2054に含める。この後、前述したように、パス削除プログラム158は、S166を実行する。
図19は、デバイス削除プログラム152の動作のフローチャートである。
自モジュール111が、保守端末113又は管理端末107からデバイス削除要求を受信した場合に、デバイス削除プログラム152が起動する。デバイス削除要求には、例えば、グローバルLDEV番号が含まれている。
デバイス削除プログラム152は、自モジュール111及び全ての他モジュール111からパス管理情報201を収集する(S171)。
デバイス削除プログラム152は、デバイス削除要求内のグローバルLDEV番号から同定されるグローバルLDEV(以下、図19の説明において、「指定グローバルLDEV」と言う)に繋がるパスが、自モジュール111及び全ての他モジュール111で削除済みか否か、また、指定グローバルLDEVがデータ移行元/移行先に該当するか否かを判断する(S172)。収集された全てのパス管理情報201に、指定グローバルLDEVの番号を含んだパスエントリ2011が無く、かつ、指定グローバルLDEVを含むがデータ移行エントリ2171がデータ移行管理情報217内に存在しなければ、肯定的な判断結果となり(S172でY)、指定グローバルLDEVの番号を含んだパスエントリ2011一つでも有れば、否定的な判断結果となる(S172でN)。S172でNの場合、デバイス削除プログラム152は、デバイス削除要求の送信元(要求元)に、エラーを報告する(S178)。
S172でYの場合、デバイス削除プログラム152は、デバイス削除要求内のグローバルLDEV番号を含んだグローバルLDEVエントリ2053を、グローバルLDEVディレクトリ2052から外す(S173)。デバイス削除プログラム152は、S173で外したグローバルLDEVエントリ2053を、空きグローバルLDEVエントリ管理情報2054に含める(S174)。デバイス削除プログラム152は、デバイス削除要求内のグローバルLDEV番号の解放と(S175)、指定グローバルLDEVに関連付けられているローカルLDEVの番号の解放と(S176)と、そのローカルLDEVに対応したPDEV領域の解放(S177)とを実行する。S175が実行されることにより、解放されたグローバルLDEV番号内のローカルLDEVが、空きとして、空きグローバルLDEV番号管理情報251で管理されるようになる。また、S176及びS177が実行されることにより、指定グローバルLDEVに関連付けられているローカルLDEVに対応したローカルLDEVエントリ2071がローカルLDEV管理情報207から削除される。
図20は、障害閉塞プログラム156の動作のフローチャートである。
自モジュール111から他モジュール111への転送の際に、自モジュール111でタイムアウト(転送後一定時間経っても他モジュール111から応答がない)が検出された場合に、障害閉塞プログラム156が起動する。
障害閉塞プログラム156は、転送先他モジュール111への転送経路における、自モジュール111内の全ての構成部位に関する障害ログ情報を、収集済か否かを判断する(S182)。
収集済みでない場合(S182でN)、障害閉塞プログラム156は、障害閉塞プログラム156は、自モジュール111内の或る構成部位に関する障害ログ情報を収集する(S183)。障害閉塞プログラム156は、障害ログ情報から、或る構成部位に障害が発生しているか否かを判断する(S184)。障害が発生していなければ(S184でN)、S182が実行され、障害が発生していれば(S184でY)、障害閉塞プログラム156は、或る構成部位に対応する構成部位エントリ内の[障害発生回数]をカウントアップする(S185)。カウントアップ後の[障害発生回数]が所定の閾値を越えていなければ(S186でN)、S182が実行され、超えていれば(S186でY)、障害閉塞プログラム156は、或る構成部位に対応する構成部位エントリ内の[状態]を“閉塞”に更新する(S187)。
以上のS183乃至S187が、転送先他モジュール111への転送経路における、自モジュール111内の全ての構成部位について行われ、行われると、S182でYとなる。
S182でYとなれば、障害閉塞プログラム156は、転送先他モジュール111への全ての転送経路が閉塞か否かを判断する(S188)。転送経路の一要素としての、自モジュール111内の構成部位の[状態]が、“閉塞”であれば、その転送経路は閉塞となる。
もし、転送先他モジュール111への全ての転送経路が閉塞であれば、障害閉塞プログラム156は、転送先他モジュール111にあるローカルLDEVに関連付けられているグローバルLDEVの番号を含んだパスエントリ2011(自モジュール111内のパス管理情報201内のパスエントリ2011)における[状態]を、“閉塞”に更新する。転送先他モジュール111にあるローカルLDEVに関連付けられているグローバルLDEVの番号は、例えば、グローバルLDEV管理情報205から、転送先他モジュール111内のプロセッサを表している[転送先プロセッサ情報]を含んだグローバルLDEVエントリ2053に含まれているグローバルLDEV番号である。
また、図示しないが、自モジュール111に存在するローカルLDEVに障害が発生し当該ローカルLDEVを閉塞する場合、当該ローカルLDEVに関連付けられているグローバルLDEVの他モジュール111におけるパスエントリ2011の[状態]を、当該ローカルLDEVの閉塞を契機として、必ずしも変更しなくてよい。なぜなら、他モジュール111から当該ローカルLDEVに関連付けられているグローバルLDEVへのアクセス時、当該ローカルLDEVの閉塞状態を検出し、他モジュール111のパスエントリ2011の[状態]を閉塞に変更するからである。
図21は、障害回復プログラム154の動作のフローチャートである。
自モジュール111が、保守端末113又は管理端末107から回復要求を受信した場合に、障害回復プログラム154が起動する。
障害回復プログラム154は、自モジュール111内の、全保守対象の構成部位について、保守が終了しているか否かを判断する(S191)。
終了していない場合(S191でN)、障害回復プログラム154は、保守対象の構成部位を閉塞すると自モジュール111が閉塞するか否かを判断する(S192)。閉塞するとの判断になれば(S192でY)、保守端末113又は管理端末107保守端末113又は管理端末107に、より優先度の高い構成部位の先行保守を要求する(S193)。一方、閉塞しないとの判断になれば(S192でN)、保守端末113又は管理端末107は、保守対象の構成部位を閉塞し(S194)、保守員による保守対象構成部位の交換を待ち(S195)、交換後、保守対象構成部位を回復する(例えば、保守対象構成部位の[状態]を“閉塞”から“正常”に更新する)(S196)。
以上のS192乃至S196が、全ての保守対象構成部位について行われると、S191でYとなる。
S191でYとなれば、障害回復プログラム154は、保守対象構成部位の回復によって回復した転送経路(他モジュールへの転送経路)があるか否かを判断する(S197)。
回復した転送経路があれば(S197でY)、障害回復プログラム154は、自モジュールのグローバルLDEVディレクトリ2052を参照し、グローバルLDEVのリストを作成する(S198)。作成するグローバルLDEVのリストは2種類あり、1つは、自モジュール111に存在するローカルLDEVに関連付けられているグローバルLDEVの番号のリスト(以下、図21の説明において、「リストA」と言う)であり、もう1つは、他モジュール111(回復した転送経路に繋がる他モジュール111)に存在するローカルLDEVに関連付けられているグローバルLDEVの番号のリスト(以下、図21の説明において、「リストB」と言う)である。
S199で、障害回復プログラム154は、作成したリストAにグローバルLDEV番号が存在するか判断する。作成したリストAにグローバルLDEV番号が存在すれば、S199での判断の結果は、肯定的な判断結果となり(S199でY)、存在しなければ、否定的な判断結果となる(S199でN)。S199でYの場合、障害回復プログラム154は、回復した転送経路に繋がる他モジュール111に、作成したリストAに記録されているグローバルLDEV番号と共にそのグローバルLDEV番号に対応したグローバルLDEVの回復を通知する(S19a)。なぜなら、回復した転送経路に繋がる他モジュール111に、作成したリストAに記録されている番号に対応したグローバルLDEVのパス定義等が存在する可能性があるためである。通知先の他モジュール111では、通知されたグローバルLDEV番号が参照され、当該他モジュール111内に、通知されたグローバルLDEV番号を含んだパスエントリ2011があれば、[状態]が“正常”に回復される。
S19bで、障害回復プログラム154は、作成したリストBにグローバルLDEV番号が存在するか判断する。S19bの判断の結果は、作成したリストBにグローバルLDEV番号が存在すれば、肯定的な判断結果となり(S19bでY)、存在しなければ、否定的な判断結果となる(S19bでN)。S19bでYの場合、障害回復プログラム154は、回復した転送経路に繋がる他モジュール111に、作成したリストBに存在するグローバルLDEV番号に対応したグローバルLDEVの状態を問合せ(S19c)、結果を判断する(S19d)。回復した転送経路に繋がる他モジュール111に状態を問合せた、リストBに記録されている一以上の番号に対応した一以上のグローバルLDEVのうち、[状態]が“正常”であるグローバルLDEVが存在すれば、肯定的な判断結果となり(S19dのY)、存在しなければ、否定的な判断結果となる(S19dのN)。S19dでYの場合、障害回復プログラム154は、回復した転送経路に繋がる他モジュール111に状態を問合せた、リストBに記録されている一以上の番号に対応した一以上のグローバルLDEVのうち、[状態]が“正常”であるグローバルLDEVの[状態](そのグローバルLDEVの番号を含んだパスエントリ2011内の[状態])を、“正常”に更新する(つまり、そのグローバルLDEVを回復する)(S19e)。
さて、以下、図22乃至図26を参照して、本実施形態で行われる、記憶装置システムモジュール111間のデータ移行を説明する。その際、図24Aに示すように、データ移行元のグローバルLDEVを、「移行元グローバルLDEV#A」とし、データ移行先のグローバルLDEVを、「移行先グローバルLDEV#B」とする。また、移行元グローバルLDEVに関連付けられているローカルLDEVを「移行元ローカルLDEV#00」とし、移行先グローバルLDEVに関連付けられているローカルLDEVを「移行先ローカルLDEV#10」とする。また、移行元ローカルLDEV#00を有する記憶装置システムモジュール111を、「移行元モジュール#0」とし、移行先ローカルLDEV#10を有する記憶装置システムモジュール111を、「移行先モジュール#1」とする。また、図22乃至図26には示していないが、移行元モジュール#0内のプロセッサ147で実行されるデータ移行プログラム155を「移行元データ移行プログラム#a」と言い、移行先モジュール#1内のプロセッサ147で実行されるデータ移行プログラム155を「移行先データ移行プログラム#b」と言う。
図22は、移行元データ移行プログラム#aと移行先データ移行プログラム#bの動作のフローチャートの第一の部分を示す。図22において、S201及びS202が、図24Aに対応しており、S202乃至S214が、図24Bに対応している。
移行元データ移行プログラム#aは、保守端末113又は管理端末107からデータ移行要求を受信した場合に起動する。データ移行要求には、例えば、移行元グローバルLDEVの番号(例えば#A)と移行先モジュールの番号(例えば#1)が含まれている。
移行元データ移行プログラム#aは、データ移行要求内のグローバルLDEV番号から移行元グローバルLDEV#Aを特定する(S201)。移行元データ移行プログラム#aは、移行先データ移行プログラム#bに、移行元グローバルLDEVの番号を通知し、且つ、移行先グローバルLDEVの選択を指示する。移行先データ移行プログラム#bは、1本のパスも繋がっていないグローバルLDEV#Bを、移行先グローバルLDEVとして選択する(S202)。移行先データ移行プログラム#bは、移行元グローバルLDEVの番号を含んだグローバルLDEVエントリ2053を、移行先モジュール#1内のグローバルLDEVディレクトリ2052に繋げていなければ、そのエントリ2053をそのディレクトリ2052に繋げる(S203)。移行先データ移行プログラム#bは、移行元データ移行プログラム#aに、移行先グローバルLDEVの番号を通知する。移行元データ移行プログラム#aは、移行先グローバルLDEVの番号(#B)を含んだグローバルLDEVエントリ2053が、移行元モジュール#0内のグローバルLDEVディレクトリ2052に繋がっていなければ、そのエントリ2053をそのディレクトリ2052に繋げる(S204)。
移行元データ移行プログラム#aは、移行元ローカルLDEV#00内の全てのデータを移行先モジュール#1に転送することを終えるまで(つまりS205でYとなるまで)、以下のS206乃至S210、S213及びS214を実行する。
移行元データ移行プログラム#aは、移行元ローカルLDEV#00内の一定量のデータを転送対象データとして選択する(S206)。転送対象データが、移行元モジュール#0内のキャッシュメモリ165に無ければ(S207でN)、移行元データ移行プログラム#aは、移行元ローカルLDEV#00の基になっているPDEV122から転送対象データを読み出し、読み出した転送対象データをキャッシュメモリ165に書き込む(S208)。移行元データ移行プログラム#aは、転送対象データの位置を示すキャッシュアドレスを移行先モジュール#1に通知する(S209)。その後、データ転送待ちとなる(S210)。
移行先データ移行プログラム#bが、通知されたキャッシュアドレス(移行元モジュール#0内のキャッシュメモリ165内の位置)から転送対象データを読み出し、その転送対象データを、移行先モジュール#1内のキャッシュメモリ165に書き込む(S211)。その後、移行先データ移行プログラム#bは、データ転送終了を移行元データ移行プログラム#aに報告する(S212)。移行先モジュール#1内のキャッシュメモリ165に書かれた転送対象データは、移行先ローカルLDEV#10に書き込まれる。
移行元データ移行プログラム#aは、データ転送終了の報告を受けて(S213)、データ転送の進捗を更新する(S214)。具体的には、移行元データ移行プログラム#aは、図22乃至図26のデータ移行に対応するデータ移行エントリ2071内の[移行データ転送進捗ポインタ]を更新する。
移行元ローカルLDEV#00内の全てのデータを移行先モジュール#1に転送することを終えると、S205でYとなる。
図23は、図22のS205でYの後の部分(移行元データ移行プログラムと移行先データ移行プログラムの動作のフローチャートの第二の部分)を示す。図23において、S221乃至S224が、図25Aに対応しており、S225及びS226が、図25Bに対応しており、S227乃至S230が、図26に対応している。
移行元データ移行プログラム#aが、移行元グローバルLDEV#Aへのリード/ライト要求を保留にする(S221)。具体的には、例えば、移行元グローバルLDEV#Aが特定されるリード/ライト要求を受信しても、記憶装置システムモジュール111内で要求を受領したまま処理を保留する等の方法により、移行元グローバルLDEV#Aへのアクセスが行われないようにする。
移行元データ移行プログラム#aが、移行元グローバルLDEV#Aへのリード/ライト要求の保留を移行先データ移行プログラム#bに指示する。それにより、移行先データ移行プログラム#bも、移行元グローバルLDEV#Aへのリード/ライト要求を保留にする(S222)。なお、移行元データ移行プログラム#aは、移行先モジュール#1に限らず、移行元モジュール#0以外の全てのモジュール111に、移行元グローバルLDEV#Aへのリード/ライト要求の保留を指示することができる。
図23を参照し、且つ、図24Bと図25Aを比較すればわかるように、移行先データ移行プログラム#bは、移行先モジュール#1において、移行元グローバルLDEV#Aに対応したグローバルLDEVエントリに、移行元モジュール#0内のプロセッサを表す[転送先プロセッサ情報](図24Bに示す“M#0”)に代えて、移行先ローカルLDEVの番号“#10”を表す[ローカルLDEV番号]を設定する(S223)。また、移行先データ移行プログラム#bは、移行先モジュール#1において、移行先グローバルLDEV#Bに対応したグローバルLDEVエントリに、移行先ローカルLDEVの番号“#10”を表す[ローカルLDEV番号]に代えて、移行元モジュール#0内のプロセッサを表す[転送先プロセッサ情報](図25Aに示す“M#0”)を設定する(S224)。移行先データ移行プログラム#bは、完了を、移行元データ移行プログラム#aに通知する。
図23を参照し、且つ、図25Aと図25Bを比較すればわかるように、移行元データ移行プログラム#aは、移行元モジュール#0において、移行元グローバルLDEV#Aに対応したグローバルLDEVエントリに、移行元ローカルLDEVの番号“#00”を表す[ローカルLDEV番号]に代えて、移行先モジュール#1内のプロセッサを表す[転送先プロセッサ情報](図25Bに示す“M#1”)を設定する(S225)。また、移行元データ移行プログラム#aは、移行元モジュール#0において、移行先グローバルLDEV#Bに対応したグローバルLDEVエントリに、移行先モジュール#1内のプロセッサを表す[転送先プロセッサ情報](図25Aに示す“M#1”)に代えて、移行元ローカルLDEVの番号“#00”を表す[ローカルLDEV番号]を設定する(S226)。
要するに、S223乃至S226によって、移行元グローバルLDEV#Aに、移行先ローカルLDEV#10が関連付けられ、移行先グローバルLDEV#Bに、移行元ローカルLDEV#00が関連付けられる。つまり、移行元グローバルLDEV#Aと移行先グローバルLDEV#Bにそれぞれ関連付けられているローカルLDEVがスワップする。
S226の後、移行元データ移行プログラム#a及び移行先データ移行プログラム#bは、移行元グローバルLDEV#Aに対するリード/ライトの保留を解除する(S227及びS228)。
移行元データ移行プログラム#aは、移行元グローバルLDEV#Aに対応した[転送先プロセッサ情報]を、全ての記憶装置システムモジュール111にブロードキャストする(S229)。これにより、図23を参照し、且つ、図25Bと図26を比較すればわかるように、他の記憶装置システムモジュール(例えば#(J−1)において、移行元グローバルLDEV#Aに対応した[転送先プロセッサ情報]を表す情報が、移行元モジュール#0内のプロセッサを表す情報“M#0”から、移行先モジュール#1内のプロセッサを表す情報“M#1”に更新される(S230)。
図24A乃至図26の例によれば、移行元グローバルLDEV#Aには、2本のパスが繋がっている。そして、データ移行前とデータ移行後のどちらであっても、2本のパスのうちのいずれを経由してホスト101から照会コマンド(例えばInquiryコマンド)を受領しても、移行元グローバルLDEV#AのグローバルLDEV番号が、照会コマンドの送信元のホスト101に送信される。
以上、本発明の好適な実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。
図1は、本発明の一実施形態に係る記憶装置システムの構成を示す。 図2は、記憶装置システムモジュールの構成を示す。 図3は、管理情報の構成を示す。 図4Aは、パス管理情報の構成を示す。図4Bは、パスエントリの構成を示す。 図5Aは、グローバルLDEV管理情報の構成を示す。図5Bは、グローバルLDEVディレクトリの構成を示す。 図6Aは、グローバルLDEVエントリの構成を示す。図6Bは、空きグローバルLDEVエントリ管理情報の構成を示す。 図7Aは、グローバルLDEV管理情報の概念を示す。図7Bは、グローバルLDEV番号の構成を示す。 図8Aは、ローカルLDEV管理情報の構成を示す。図8Bは、ローカルLDEVエントリの構成を示す。 図9Aは、PDEV管理情報の構成を示す。図9Bは、PDEVエントリの構成を示す。 図10Aは、モジュール実装管理情報の構成を示す。図10Bは、モジュールエントリの構成を示す。図10Cは、構成部位管理情報の構成を示す。図10Dは、構成部位エントリの構成を示す。 図11Aは、データ移行管理情報の構成を示す。図11Bは、データ移行エントリの構成を示す。 図12は、デバイス定義プログラムの動作のフローチャートである。 図13は、パス定義プログラムの動作のフローチャートである。 図14は、リードプログラムの動作のフローチャートである。 図15は、自モジュールがホストからリード要求を受信し他モジュールにそのリード要求を転送する場合でのリードデータ転送の流れの概要を示す。 図16は、ライトプログラムの動作のフローチャートである。 図17は、自モジュールがホストからライト要求を受信し他モジュールにそのライト要求を転送する場合でのライトデータ転送の流れの概要を示す。 図18は、パス削除プログラムの動作のフローチャートである。 図19は、デバイス削除プログラムの動作のフローチャートである。 図20は、障害閉塞プログラムの動作のフローチャートである。 図21は、障害回復プログラムの動作のフローチャートである。 図22は、移行元データ移行プログラムと移行先データ移行プログラムの動作のフローチャートの第一の部分を示す。 図23は、図22のS205でYの後の部分(移行元データ移行プログラムと移行先データ移行プログラムの動作のフローチャートの第二の部分)を示す。 図24Aは、図22のS201及びS202の説明図である。図24Bは、図22のS202乃至S214の説明図である。 図25Aは、図23のS221乃至S224の説明図である。図25Bは、図23のS225及びS226の説明図である。 図26は、図23のS227乃至S230の説明図である。
符号の説明
110…記憶装置システム 111…記憶装置システムモジュール

Claims (14)

  1. 上位装置からI/O要求を受信し処理する記憶装置システムであって、
    I/O要求を受け付ける複数のコントローラモジュールと、
    I/O要求に従うデータを記憶する複数の物理的な記憶装置と、
    複数のグローバル論理記憶装置と、
    前記複数の物理的な記憶装置に基づく複数のローカル論理記憶装置と
    を備え、
    各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置であり、
    各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理される論理的な記憶装置であり、
    各コントローラモジュールが、
    前記複数のコントローラモジュールのうちの一以上の他のコントローラモジュールと接続されるモジュール間接続部と、
    各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んだグローバルデバイス管理情報と、前記複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報であるローカルデバイス管理情報とを記憶する記憶資源と、
    前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したI/O要求を転送するアクセス制御部と
    を備える、
    記憶装置システム。
  2. 前記各コントローラモジュールが、前記複数のグローバル論理記憶装置のうちの第一のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第一のローカル論理記憶装置から、前記複数のグローバル論理記憶装置のうちの第二のグローバル論理記憶装置に関連付けられている、前記複数のローカル論理記憶装置のうちの第二のローカル論理記憶装置へのデータの移行を制御するデータ移行制御部を更に備え、
    前記第一のローカル論理記憶装置を管理する第一のコントローラモジュールが有する第一のデータ移行制御部が、前記第一のコントローラモジュールが有する前記記憶資源が記憶している前記グローバルデバイス管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記第一のコントローラモジュールの管理対象ではないことを表す情報に更新し、
    前記第二のローカル論理記憶装置を管理する第二のコントローラモジュールが有する第二のデータ移行制御部が、前記第二のコントローラモジュールが有する前記記憶資源が記憶している前記グローバルデバイス管理情報内の、前記第一のグローバル論理記憶装置に関する情報を、前記第一のグローバル論理記憶装置が前記第二のコントローラモジュールが管理する前記第二のローカル論理記憶装置に関連付けられていることを表す情報に更新する、
    請求項1記載の記憶装置システム。
  3. 前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれており、
    前記第一のデータ転送制御部が、前記データの移行において、前記第一のローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記第一のコントローラモジュールが有する前記記憶資源内の第一のキャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記第二のデータ転送制御部に通知し、
    前記第二のデータ転送制御部が、前記データの移行において、前記第一のデータ転送制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記第二のローカル論理記憶装置に書き込む、
    請求項2記載の記憶装置システム。
  4. 前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれており、
    前記受信したI/O要求が、リード要求であり、
    前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールから受信したリード要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置からデータを読み出し、読み出されたデータを、前記他のコントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記コントローラモジュールが有する前記アクセス制御部に通知し、
    前記コントローラモジュールが有する前記アクセス制御部が、前記他のコントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記リード要求の送信元に送信する、
    請求項1乃至3のうちのいずれか一項に記載の記憶装置システム。
  5. 前記各ストレージモジュールの記憶資源に、前記ローカル論理記憶装置に書き込まれるデータ又は前記ローカル論理記憶装置から読み出されたデータを一時的に記憶するキャッシュメモリが含まれており、
    前記受信したI/O要求が、ライト要求であり、
    前記コントローラモジュールが有する前記アクセス制御部が、前記受信したライト要求に従うデータを、前記コントローラモジュールが有する前記キャッシュメモリに書き込み、前記書き込まれたデータの位置を表すデータ位置情報を、前記ライト要求の転送先の前記他のコントローラモジュールが有する前記アクセス制御部に通知し、
    前記他のコントローラモジュールが有する前記アクセス制御部が、前記コントローラモジュールが有する前記アクセス制御部から受信したデータ位置情報から特定されるデータの位置からデータを読み出し、読み出したデータを、前記ライト要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置に書き込む、
    請求項1乃至4のうちのいずれか一項に記載の記憶装置システム。
  6. 前記グローバルデバイス管理情報には、前記複数のグローバル論理記憶装置に対応した複数の第一種のグローバルデバイス管理情報要素と、二以上の第二種のグローバルデバイス管理情報要素とが含まれており、
    各第一種のグローバルデバイス管理情報要素には、対応するグローバル論理記憶装置に関する情報が登録されており、
    前記第二種のグローバルデバイス管理情報要素の数は、前記第一種のグローバルデバイス管理情報要素の数より少なく、
    各第二種のグローバルデバイス管理情報要素に、前記複数の第一種のグローバルデバイス管理情報要素のうちの一以上の第一種のグローバルデバイス管理情報要素が関連付けられ、
    各第二種のグローバルデバイス管理情報要素は、前記グローバル論理記憶装置の識別子のハッシュ値から特定される、
    請求項1乃至5のうちのいずれか1項に記載の記憶装置システム。
  7. 前記各コントローラモジュールのアクセス制御部が、前記上位装置が指定可能な複数のパスに同一のグローバル論理記憶装置が関連している場合、前記複数のパスのいずれを経由して照会コマンドが受けても、前記同一のグローバル論理記憶装置の識別子を前記上位装置に提供する、
    請求項1乃至6のうちのいずれか1項に記載の記憶装置システム。
  8. 前記各グローバル論理記憶装置の識別子が、前記グローバル論理記憶装置を生成したコントローラモジュールの識別子と、前記グローバル論理記憶装置に関連付けられるローカル論理記憶装置の識別子と、同一のローカル論理記憶装置が関連付けられたグローバル論理記憶装置が同一のコントローラモジュールによって生成されても異なるコードとなる非重複コードとを含んでいる、
    請求項1乃至7のうちのいずれか1項に記載の記憶装置システム。
  9. 前記コントローラモジュールと前記他のコントローラモジュールとの間には、一以上の転送経路があり、
    前記各コントローラモジュールが、グローバルデバイス閉塞部を更に備え、
    前記グローバルデバイス閉塞部が、前記一以上の転送経路のいずれの転送経路も、前記受信したI/O要求を経由させることができないときに、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられているグローバル論理記憶装置を閉塞する、
    請求項1乃至8のうちのいずれか1項に記載の記憶装置システム。
  10. 前記各コントローラモジュールが、グローバルデバイス回復部を更に備え、
    前記グローバルデバイス回復部が、前記一以上の転送経路のうちのいずれかの転送経路の回復が検出された場合に、前記コントローラモジュールの管理対象であるローカル論理記憶装置に関連付けられているグローバル論理記憶装置の識別子を、前記他のコントローラモジュールに通知し、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置の状態を、前記他のコントローラモジュールに問い合わせ、前記問い合わせの結果が正常の場合、前記他のコントローラモジュールが有するローカル論理記憶装置に関連付けられている、閉塞されているグローバル論理記憶装置を回復する、
    請求項9記載の記憶装置システム。
  11. 複数の物理的な記憶装置を備える記憶装置システムに備えられる複数のコントローラモジュールのうちのいずれかであって、
    前記複数のコントローラモジュールのうちの一以上の他のコントローラモジュールと接続されるモジュール間接続部と、
    各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んだグローバルデバイス管理情報と、複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報であるローカルデバイス管理情報とを記憶する記憶資源と、
    前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したI/O要求を転送するアクセス制御部と
    を備え、
    各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置であり、
    各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理され、前記複数の物理的な記憶装置のうちの一以上の物理的な記憶装置に基づく論理的な記憶装置である、
    コントローラモジュール。
  12. 複数の物理的な記憶装置と複数のコントローラモジュールとを備える記憶装置システムの制御方法であって、
    前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、グローバルデバイス管理情報に基づいて判断し、
    肯定的な判断結果となれば、ローカルデバイス管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、
    一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したI/O要求を転送し、
    各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置であり、
    各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理され、前記複数の物理的な記憶装置のうちの一以上の物理的な記憶装置に基づく論理的な記憶装置であり、
    前記グローバルデバイス管理情報及び前記ローカルデバイス管理情報は、前記各コントローラモジュールが有する各記憶資源に記憶されており、
    前記グローバルデバイス管理情報は、各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んでおり、
    前記ローカルデバイス管理情報は、複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報である、
    制御方法。
  13. 複数の物理的な記憶装置を備える記憶装置システムが有する各コントローラモジュールで実行されるコンピュータプログラムであって、
    前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したI/O要求から特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記グローバルデバイス管理情報に基づいて判断し、
    肯定的な判断結果となれば、前記ローカルデバイス管理情報に基づいて、前記特定されるグローバル論理記憶装置に関連付けられているローカル論理記憶装置にアクセスし、
    一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したI/O要求を転送し、
    各グローバル論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数のローカル論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置であり、
    各ローカル論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理され、前記複数の物理的な記憶装置のうちの一以上の物理的な記憶装置に基づく論理的な記憶装置であり、
    前記グローバルデバイス管理情報及び前記ローカルデバイス管理情報は、前記各コントローラモジュールが有する各記憶資源に記憶されており、
    前記グローバルデバイス管理情報は、各グローバル論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んでおり、
    前記ローカルデバイス管理情報は、複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象のローカル論理記憶装置に関する情報である、
    コンピュータプログラム。
  14. 上位装置からI/O要求を受信し処理する記憶装置システムであって、
    I/O要求を受け付ける複数のコントローラモジュールと、
    I/O要求に従うデータを記憶する複数の物理的な記憶装置と、
    複数の第1の論理記憶装置と、
    前記複数の物理的な記憶装置に基づく複数の第2の論理記憶装置と
    を備え、
    各第1の論理記憶装置は、前記複数のコントローラモジュールに管理され、前記複数の第2の論理記憶装置のうちのいずれかに関連付けられた論理的な記憶装置であり、
    各第2の論理記憶装置は、前記複数のコントローラモジュールのいずれかに管理される論理的な記憶装置であり、
    各コントローラモジュールが、
    前記複数のコントローラモジュールのうちの一以上の他のコントローラモジュールと接続されるモジュール間接続部と、
    各第1の論理記憶装置に関連付けられているローカル論理記憶装置が前記コントローラモジュールの管理対象であるか否かを表す情報を含んだ第1のデバイス管理情報と、前記複数のローカル論理記憶装置のうちの前記コントローラモジュールによる管理対象の第2の論理記憶装置に関する情報である第2のデバイス管理情報とを記憶する記憶資源と、
    前記上位装置又は前記一以上の他のコントローラモジュールのうちの第一の他のコントローラモジュールから受信したI/O要求から特定される第1の論理記憶装置に関連付けられている第2の論理記憶装置が前記コントローラモジュールの管理対象であるか否かを、前記第2のデバイス管理情報に基づいて判断し、肯定的な判断結果となれば、前記第2のデバイス管理情報に基づいて、前記特定される第1の論理記憶装置に関連付けられている第2の論理記憶装置にアクセスし、一方、否定的な判断結果となれば、前記一以上の他のコントローラモジュールのうちの第二の他のコントローラモジュールに前記受信したI/O要求を転送するアクセス制御部と
    を備える、
    記憶装置システム。
JP2008020595A 2008-01-31 2008-01-31 複数のコントローラモジュールを備えた記憶装置システム Expired - Fee Related JP5330702B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008020595A JP5330702B2 (ja) 2008-01-31 2008-01-31 複数のコントローラモジュールを備えた記憶装置システム
US12/060,977 US7984260B2 (en) 2008-01-31 2008-04-02 Storage system provided with a plurality of controller modules

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008020595A JP5330702B2 (ja) 2008-01-31 2008-01-31 複数のコントローラモジュールを備えた記憶装置システム

Publications (2)

Publication Number Publication Date
JP2009181402A true JP2009181402A (ja) 2009-08-13
JP5330702B2 JP5330702B2 (ja) 2013-10-30

Family

ID=40932836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008020595A Expired - Fee Related JP5330702B2 (ja) 2008-01-31 2008-01-31 複数のコントローラモジュールを備えた記憶装置システム

Country Status (2)

Country Link
US (1) US7984260B2 (ja)
JP (1) JP5330702B2 (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011054152A (ja) * 2009-09-01 2011-03-17 Lsi Corp Scsii/oリファーラルを利用したイニシエータ及びストレージクラスタ間の通信方法及びシステム
US8312234B2 (en) 2010-04-05 2012-11-13 Hitachi, Ltd. Storage system configured from plurality of storage modules and method for switching coupling configuration of storage modules
WO2014068623A1 (en) 2012-10-31 2014-05-08 Hitachi, Ltd. Computer system and data management method
WO2016152129A1 (ja) * 2015-03-20 2016-09-29 日本電気株式会社 ストレージ装置、管理装置、ストレージシステム、データ移行方法及びコンピュータ読み取り可能記録媒体
JP2018032061A (ja) * 2016-08-22 2018-03-01 富士通株式会社 ストレージ制御装置、およびストレージシステム
JP2021125113A (ja) * 2020-02-07 2021-08-30 株式会社日立製作所 ストレージシステム及び入出力制御方法
JP2023036653A (ja) * 2020-07-09 2023-03-14 株式会社日立製作所 システム及びその制御方法並びにプログラム

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2460841B (en) * 2008-06-10 2012-01-11 Virtensys Ltd Methods of providing access to I/O devices
JP5605043B2 (ja) * 2010-07-16 2014-10-15 富士通株式会社 データコピー装置、データコピー方法およびストレージ装置
US9646039B2 (en) * 2013-01-10 2017-05-09 Pure Storage, Inc. Snapshots in a storage system
US10423506B1 (en) * 2015-06-30 2019-09-24 EMC IP Holding Company LLC Fast rebuild using layered RAID

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005165702A (ja) * 2003-12-03 2005-06-23 Hitachi Ltd クラスタストレージのデバイス連結方法
JP2007042034A (ja) * 2005-08-05 2007-02-15 Hitachi Ltd 計算機システム、管理計算機及び論理記憶領域の管理方法
JP2007109262A (ja) * 2004-08-30 2007-04-26 Hitachi Ltd ストレージシステム及びデータ再配置制御装置
JP2007328408A (ja) * 2006-06-06 2007-12-20 Hitachi Ltd ストレージシステム及び記憶制御装置
US20080034005A1 (en) * 2006-08-02 2008-02-07 Hitachi, Ltd. Control device for storage system capable of acting as a constituent element of virtualization storage system

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598174B1 (en) * 2000-04-26 2003-07-22 Dell Products L.P. Method and apparatus for storage unit replacement in non-redundant array
JP4307202B2 (ja) 2003-09-29 2009-08-05 株式会社日立製作所 記憶システム及び記憶制御装置
US7640408B1 (en) * 2004-06-29 2009-12-29 Emc Corporation Online data migration
US7818515B1 (en) * 2004-08-10 2010-10-19 Symantec Operating Corporation System and method for enforcing device grouping rules for storage virtualization
US7395265B2 (en) * 2004-08-27 2008-07-01 Hitachi, Ltd. Data processing system and storage subsystem provided in data processing system
JP2007108981A (ja) * 2005-10-13 2007-04-26 Hitachi Ltd ストレージ装置及びボリューム間のデータ交換方法
JP4852298B2 (ja) 2005-10-28 2012-01-11 株式会社日立製作所 仮想ボリュームを識別する情報を引き継ぐ方法及びその方法を用いたストレージシステム
JP5089896B2 (ja) 2006-03-17 2012-12-05 株式会社日立製作所 マイクロプロセッサの負荷分散機能を備えたストレージシステム
JP5087249B2 (ja) 2006-09-06 2012-12-05 株式会社日立製作所 ストレージシステムおよびストレージシステムの制御方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005165702A (ja) * 2003-12-03 2005-06-23 Hitachi Ltd クラスタストレージのデバイス連結方法
JP2007109262A (ja) * 2004-08-30 2007-04-26 Hitachi Ltd ストレージシステム及びデータ再配置制御装置
JP2007042034A (ja) * 2005-08-05 2007-02-15 Hitachi Ltd 計算機システム、管理計算機及び論理記憶領域の管理方法
JP2007328408A (ja) * 2006-06-06 2007-12-20 Hitachi Ltd ストレージシステム及び記憶制御装置
US20080034005A1 (en) * 2006-08-02 2008-02-07 Hitachi, Ltd. Control device for storage system capable of acting as a constituent element of virtualization storage system
JP2008040571A (ja) * 2006-08-02 2008-02-21 Hitachi Ltd 仮想ストレージシステムの構成要素となることが可能なストレージシステムの制御装置

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011054152A (ja) * 2009-09-01 2011-03-17 Lsi Corp Scsii/oリファーラルを利用したイニシエータ及びストレージクラスタ間の通信方法及びシステム
US8312234B2 (en) 2010-04-05 2012-11-13 Hitachi, Ltd. Storage system configured from plurality of storage modules and method for switching coupling configuration of storage modules
WO2014068623A1 (en) 2012-10-31 2014-05-08 Hitachi, Ltd. Computer system and data management method
WO2016152129A1 (ja) * 2015-03-20 2016-09-29 日本電気株式会社 ストレージ装置、管理装置、ストレージシステム、データ移行方法及びコンピュータ読み取り可能記録媒体
JP2016177558A (ja) * 2015-03-20 2016-10-06 日本電気株式会社 ストレージ装置、管理装置、ストレージシステム、データ移行方法及びプログラム
JP2018032061A (ja) * 2016-08-22 2018-03-01 富士通株式会社 ストレージ制御装置、およびストレージシステム
JP2021125113A (ja) * 2020-02-07 2021-08-30 株式会社日立製作所 ストレージシステム及び入出力制御方法
JP7028902B2 (ja) 2020-02-07 2022-03-02 株式会社日立製作所 ストレージシステム及び入出力制御方法
JP2023036653A (ja) * 2020-07-09 2023-03-14 株式会社日立製作所 システム及びその制御方法並びにプログラム

Also Published As

Publication number Publication date
US20090198942A1 (en) 2009-08-06
JP5330702B2 (ja) 2013-10-30
US7984260B2 (en) 2011-07-19

Similar Documents

Publication Publication Date Title
JP5330702B2 (ja) 複数のコントローラモジュールを備えた記憶装置システム
JP6009095B2 (ja) ストレージシステム及び記憶制御方法
US7681002B2 (en) Storage controller and storage control method
JP5008845B2 (ja) ストレージシステムとストレージ装置及びその制御方法
US7707456B2 (en) Storage system
US8402234B2 (en) Storage system and storage migration method
US7660946B2 (en) Storage control system and storage control method
EP1876519A2 (en) Storage system and write distribution method
JP6097845B2 (ja) 不揮発性キャッシュメモリにデータをバックアップするストレージシステム
EP2026188A2 (en) Storage system
US20070162692A1 (en) Power controlled disk array system using log storage area
US7716440B2 (en) Storage system and management method thereof
JP2008065525A (ja) 計算機システム、データ管理方法及び管理計算機
CN107533537B (zh) 存储系统、用于存储的方法和非暂时性计算机可读介质
JP2005222404A (ja) 仮想記憶ユニットを備えた記憶制御サブシステム
JP2006011811A (ja) 記憶制御システム及び記憶制御方法
JP4245021B2 (ja) ストレージ装置、ストレージシステム、ストレージ装置の制御方法
JP2013101665A (ja) ストレージシステム
WO2016006108A1 (ja) ストレージおよびその制御方法
US8392568B2 (en) Computer system and method of managing single name space

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100723

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120329

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120410

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120611

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121022

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130507

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130517

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130726

R150 Certificate of patent or registration of utility model

Ref document number: 5330702

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees