JP5014821B2 - ストレージシステム及びその制御方法 - Google Patents

ストレージシステム及びその制御方法 Download PDF

Info

Publication number
JP5014821B2
JP5014821B2 JP2007026444A JP2007026444A JP5014821B2 JP 5014821 B2 JP5014821 B2 JP 5014821B2 JP 2007026444 A JP2007026444 A JP 2007026444A JP 2007026444 A JP2007026444 A JP 2007026444A JP 5014821 B2 JP5014821 B2 JP 5014821B2
Authority
JP
Japan
Prior art keywords
data
chip
memory
module
controller
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
JP2007026444A
Other languages
English (en)
Other versions
JP2008191966A (ja
Inventor
真照 逸見
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2007026444A priority Critical patent/JP5014821B2/ja
Priority to EP10003421A priority patent/EP2207095B1/en
Priority to DE200860001171 priority patent/DE602008001171D1/de
Priority to EP20080250092 priority patent/EP1956485B1/en
Priority to US12/007,330 priority patent/US8117376B2/en
Publication of JP2008191966A publication Critical patent/JP2008191966A/ja
Priority to US13/363,900 priority patent/US8930611B2/en
Application granted granted Critical
Publication of JP5014821B2 publication Critical patent/JP5014821B2/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/2089Redundant storage control functionality
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • G06F11/1662Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/109Sector level checksum or ECC, i.e. sector or stripe level checksum or ECC in addition to the RAID parity calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Description

本発明は、ストレージシステム及びその制御方法に関し、例えば記憶デバイスとしてフラッシュメモリを採用したストレージシステムに適用して好適なものである。
従来、ストレージシステムにおける記憶デバイスとして、半導体メモリやハードディスクドライブが用いられている。半導体メモリは、アクセス速度が速く、小型、低消費電力及び高信頼性という利点を有する反面、単位ビット当たりのコストが高価という欠点を有する。一方、ハードディスクドライブは、半導体メモリに比べてアクセス速度が遅く、大型、高消費電力及び低信頼性という欠点がある反面、単位ビット当たりのコストが半導体メモリに比べて格段的に安価という利点を有する。
このため、近年では、ストレージシステムにおける記憶デバイスとしてはハードディスクドライブが主流となっており、これに伴ってハードディスクドライブに関する技術革新が相次いで行なわれ、ハードディスクドライブにおける単位面積当たりの記憶容量も飛躍的に向上している。
またハードディスクドライブの弱点である信頼性についても、RAID(Redundant Array of Inexpensive Disks)技術の適用により向上しており、近年では、数TBの容量を有する大型記憶システムも市場に登場している。
ところで、近年では、データの書き換えが自由に行なえ、かつ電源を切ってもデータが消滅しない半導体メモリであるフラッシュメモリが記憶デバイスとして広く利用されるようになってきている。そしてこのような普及に伴って、フラッシュメモリの単位ビット当たりのコストも低下してきている。
かかる状況のもと、今後、記憶デバイスとしてフラッシュメモリを搭載したストレージ装置が登場することが予想される。そして、このような構成を採用することによって、アクセス速度が速く、かつ消費電力が少ないストレージ装置を構築できるものと考えられる。
なお下記特許文献1には、フラッシュメモリとハードディスクドライブとを混載したストレージが提案されている。
特開2004−21811号公報
しかしながら、フラッシュメモリは、通常、10万回程度の書込み回数しか保証されていない。このためフラッシュメモリをストレージシステムの記憶デバイスとして採用する場合、このようなフラッシュメモリの回数制限等に伴う記憶デバイス間でのデータ移動がある程度の頻度で行なわれるものと考えられる。なお、フラッシュメモリのチップ当たりの容量を考慮すると、フラッシュメモリを搭載したストレージでは、膨大な数のメモリチップを搭載することになるものと考えられる。
しかしながら、このような記憶デバイス間でのデータ移行の制御をストレージシステムのコントローラで行なう場合、コントローラの負荷が増加し、これに伴ってストレージシステムにおけるデータ入出力処理等の他の処理の性能を劣化させるなどの悪影響を及ぼすおそれがある。
本発明は以上の点を考慮してなされたもので、記憶デバイスとして不揮発性メモリを用いたときに特有の問題について、性能劣化を防止しながら有効に対応し得るストレージシステム及びその制御方法を提案しようとするものである。
かかる課題を解決するため本発明においては、トレージシステムにおいて、データを読み書きするための記憶領域を計算機にそれぞれ提供する1又は複数の不揮発性メモリチップと、前記不揮発性メモリチップを制御するメモリコントローラと、を有する相互に接続された複数のメモリモジュールと、前記計算機から各前記メモリモジュールに対するデータの読み書きを制御するストレージコントローラと、を備え、前記メモリモジュール内のメモリコントローラは、自メモリモジュール内の前記不揮発性メモリチップに障害が発生したときに、当該不揮発性メモリに格納されているデータのコピー先として他の前記メモリモジュールが有する前記不揮発性メモリチップを決定し、前記障害が発生した不揮発性メモリチップを有するメモリモジュール内のメモリコントローラ又は前記決定されたコピー先の不揮発性メモリチップを有するメモリモジュール内のメモリコントローラは、前記障害が発生した前記不揮発性メモリチップに格納されていた前記データを読み出し、前記読み出したデータを前記コピー先として決定した前記不揮発性メモリチップにコピーすることを特徴とする。
また本発明においては、トレージシステムの制御方法において、前記ストレージシステムは、データを読み書きするための記憶領域を計算機にそれぞれ提供する1又は複数の不揮発性メモリチップと、前記不揮発性メモリチップを制御するメモリコントローラと、を有する相互に接続された複数のメモリモジュールと、前記計算機から各前記メモリモジュールに対するデータの読み書きを制御するストレージコントローラとを有し、前記メモリモジュール内のメモリコントローラが、自メモリモジュール内の前記不揮発性メモリチップに障害が発生したときに、当該不揮発性メモリに格納されているデータのコピー先として他の前記メモリモジュールが有する前記不揮発性メモリチップを決定する第1のステップと、前記障害が発生した不揮発性メモリチップを有するメモリモジュール内のメモリコントローラ又は前記第1のステップにより決定されたコピー先の不揮発性メモリチップを有するメモリモジュール内のメモリコントローラが、前記障害が発生した前記不揮発性メモリチップに格納されていた前記データを読み出し、前記読み出したデータを前記コピー先として決定した前記不揮発性メモリチップにコピーする第2のステップとを備えることを特徴とする。
本発明によれば、記憶デバイスとして不揮発性メモリを用いたときに特有の問題について、性能劣化を防止しながら有効に対応し得るストレージシステム及びその制御方法を実現できる。
以下図面について、本発明の一実施の形態を詳述する。
(1)第1の実施の形態
(1−1)本実施の形態によるストレージシステムの構成
(1−1−1)ストレージシステムの外観構成
図1において、1は全体として本実施の形態によるストレージシステムを示す。このストレージシステム1は、データの入出力制御を行なう記憶制御装置2と、当該記憶制御装置2の左右両側にそれぞれ複数配置された記憶装置3とから構成される。
記憶制御装置2は、直方体形状の記憶制御装置用筐体内に、冷却ファンユニット10、FM(Flash Memory)モジュール11、PBC(Port Bypass Circuit)ボード12、論理基板13、ACボックス14、電源モジュール15及びバッテリ16がそれぞれ1又は複数収容されて構成される。
冷却ファンユニット10は、1又は複数のファンを内蔵するユニットであり、FMモジュール11及び論理基板13等において発生した熱を記憶制御装置用筐体の外部に排出するために用いられる。
FMモジュール11は、例えば図4(A)に示すように、それぞれ複数のFMチップ20が実装された複数のフラッシュメモリユニット21が、所定大きさのベースボード22上に交換自在に装着されて構成される。このベースボード22の後端側にはFM制御LSI(Large Scale Integration circuit)23が実装されており、このFM制御LSI23内に形成された後述のデータ入出力処理部40(図7)によって、そのFMモジュール11内の各FMチップ20に対するデータの入出力が制御される。
またFMモジュール11の後端部側にはコネクタ24が設けられており、このコネクタを記憶制御装置2に配設された図示しないマザーボード上のコネクタに嵌め合わせることによって、当該FMモジュール11をマザーボードに物理的及び電気的に接続することができるようになされている。
なお、ベースボード22は、図4(B)に示すように、FM制御LSI23が搭載された後端部分22Bがベースボード本体22Aに自在に着脱できるように構成するようにしてもよく、このようにすることによってFM制御LSI23に不具合が生じた場合にその交換を容易に行い得るようにすることができる。
PBCボード12は、記憶制御装置2内の同じ段に装填された各FMモジュール11を電気的に接続する通信経路を備える。図3(B)に示すように、このPBCボード12を介して複数のFMモジュール11が直列にかつ通信可能な状態に接続されることにより、後述のようにFC(Fibre Channel)ループ25(図5)が形成されることになる。
論理基板13は、それぞれ図6について後述するチャネルアダプタ33、データ転送制御部34、キャッシュメモリ35、ローカルメモリ36、マイクロプロセッサ37又はFMアダプタ38等が形成されて構成される。これら論理基板13は、記憶制御装置2に配置されたバックボードに挿抜自在に接続されており、このバックボードを介して記憶制御装置2に装填された他の論理基板13等との間で通信を行い得るようになされている。
ACボックス14は、ストレージシステム1に対する商用交流電力の取り入れ口であり、ブレーカとして機能する。ACボックス14に取り入れられた商用交流電力は、電源モジュール15に供給される。電源モジュール15は、ACボックス14から与えられる商用交流電力を直流電力に変換し、これを論理基板13やFMモジュール11及び冷却ファン10等に供給する。
またバッテリ16は、停電時や電源モジュール15の異常時に、記憶制御装置2内の各部位に電力を供給するための予備電源として用いられる。
一方、記憶装置3は、図1及び図2に示すように、記憶装置用筐体内に、冷却ファンユニット10、複数のFMモジュール11、PBCボード12、ACボックス14、電源モジュール15及びバッテリ16がそれぞれ複数収納されて構成される。これら冷却ファンユニット11等は上述した記憶制御装置2の冷却ファンユニット11等と同じものであるため、ここでの説明は省略する。
図3(A)は、記憶制御装置2及び各記憶装置3間の接続構成を示している。記憶制御装置2には、FMアダプタ38(図6参照)が形成された論理基板13が複数設けられる。これらFMアダプタ38は2つで1つのクラスタを構成しており、これにより各FMモジュール11へのアクセス系統が二重化されている。かくして、一方のFMアダプタ38に障害が発生してそのFMアダプタ38があるFMモジュール11にアクセスできなくなった場合にも、他方のFMアダプタ38からそのFMモジュール11にアクセスすることが可能となる。
記憶制御装置2や記憶装置3に装填されたPBCボード12のうちの2以上のPBCボード12がFCケーブルを介して直列に接続される。そして直列に接続された2以上のPBCボード12のうちの先頭のPBCボード12が、FCケーブルを介してFMアダプタ38が形成された論理基板13と接続される。これにより図5に示すように、FC−AL(Fiber Channel Arbitrated Loop)の規格に従ったFCループ25が形成される。
記憶装置3には、複数のFCループ25が設けられ、図5に示すように、各FCループ25に複数のFMモジュール11が接続される。各FMモジュール11は、自分に接続されたFCループ25を介して、そのFCループ25に接続されている複数のFMモジュール11のうちの所望のFMモジュール11にアクセスすることができる。
(1−1−2)ストレージシステムの内部構成
図6は、かかるストレージシステム1の内部構成を示す。この図6に示すように、記憶制御装置2は、それぞれ異なるホスト30に接続される0系及び1系のストレージコントローラ31A,31Bと、これらストレージコントローラ31A,31B間を通信可能な状態に接続するコントローラ間接続経路32と、複数のFMモジュール11とから構成される。
コントローラ間接続経路32としては、例えば1レーン片方向当たり(最大8レーン)のデータ転送量が2.5〔Gbit/sec〕と高速なデータ通信を実現するPCI(Peripheral Component Interconnect)−Express規格に準拠したバスが適用される。0系及び1系のストレージコントローラ31A,31B間におけるデータや各種コマンドの送受は、すべてこのコントローラ間接続経路32を介して行なわれる。
各ストレージコントローラ31A,31Bは、それぞれ自己に接続されたホスト30からの要求に応じて、記憶制御装置2や記憶装置3に装填されたFMモジュール11内の対応するFMチップ20(図19)に対するデータの読み書きを制御する機能を有し、それぞれチャネルアダプタ33、データ転送制御部34、キャッシュメモリ35、ローカルメモリ36、マイクロプロセッサ37及びFMアダプタ38などを備える。
チャネルアダプタ33は、ホスト30との間のインタフェースとして機能するもので、1又は複数の通信ポートを備える。通信ポートは、そのストレージコントローラ31A,31Bをネットワークやホスト30に接続するためのものであり、例えばIP(Internet Protocol)アドレスやWWN(World Wide Name)などの固有のネットワークアドレスがそれぞれ割り当てられる。
またチャネルアダプタ33は、ホスト30との間の通信時におけるプロトコル制御を行う。このチャネルアダプタ33のプロトコル制御機能により、ホスト30及びストレージシステム33A,33B間においてFCプロトコルやiSCSIプロトコル又はTCP/IP(Transmission Control Protocol/Internet Protocol)プロトコル等に従ったデータやコマンドの送受が行われる。
データ転送制御部34は、0系及び1系のストレージコントローラ31A,31B間のデータ転送と、0系又は1系のストレージコントローラ31A,31B内の各要素間でのデータ転送を制御する機能を備える。またデータ転送制御部31A,31Bは、自系のマイクロプロセッサ37からの指示により、ホスト30から与えられた書込み対象のデータをキャッシュメモリ35に多重書きする機能を備える。具体的には、0系又は1系のマイクロプロセッサ37が自系のキャッシュメモリ35にデータを格納した場合、このデータを他系のキャッシュメモリ35にも書き込む(二重書き)。
キャッシュメモリ35は、例えばSDRAM(Synchronous Dynamic Random Access Memory)等の揮発メモリから構成され、主としてFMモジュール11に読み書きするデータを一時的に記憶するために用いられる。またローカルメモリ36は、各種制御プログラムを記憶するために用いられるほか、マイクロプロセッサ37のワークメモリとしても用いられる。
マイクロプロセッサ37は、それぞれ自系のストレージコントローラ31A,31B全体の動作制御を司る機能を有する。マイクロプロセッサ37による各種処理は、予めローカルメモリ36に格納された制御プログラムに従って行なわれる。
FMアダプタ38は、CPUやメモリ等を備えたマイクロコンピュータシステムとして構成され、FMモジュール11との通信時におけるプロトコル制御を行うインタフェースとして機能する。本実施の形態においては、FMアダプタ38として、フラッシュメモリ専用のアダプタではなく、現行のハードディスクドライブと通信を行なうための既存のディスクアダプタが適用される。
なお、管理装置39は、ストレージシステム1の保守及び管理のために操作されるコンピュータ装置であり、例えばノート型のパーソナルコンピュータから構成される。保守管理装置39は、ストレージシステム1内の障害発生を監視してディスプレイ画面(図示せず)に表示したり、ホスト30からの指令に基づいてFMモジュール11の閉塞処理等を指示したりすることができる。
FMモジュール11は、図7に示すように、FM制御LSI23(図4)に形成されたデータ入出力処理部40及び複数のFMチップ20を備えて構成される。
データ入出力処理部40は、FCインタフェース部41、FMコントローラ42、FC‐FM変換部43及びFMインタフェース部44を備える。
FCインタフェース部41は、図6について上述した記憶制御部装置2のストレージコントローラ31A,31Bとの間のインタフェースであり、FMインタフェース部44は、そのFMモジュール11内に収納された各FMチップ20との間のインタフェースである。またFMコントローラ42は、そのFMモジュール11全体の動作制御を司るプロセッサとして機能する。
FC‐FM変換部43は、ストレージコントローラ31A,31BのFMアダプタ38とFMモジュール11とを接続するためのインタフェースであり、FMインタフェース部41及びFMコントローラ42間に接続されたFC側変換処理部45と、FMコントローラ42及びFMインタフェース部44間に接続されたFM側変換処理部46とから構成される。
このうちFC側変換処理部45は、FCコマンド送受信部50、FCデータ転送部51、コマンド変換部52、チップ情報送信部53及びデータバッファ54を備える。
FC側変換処理部45のFCコマンド送信部50は、FCループ25(図5)を介してFCプロトコルのコマンドをFMアダプタ38に送信する送信機能と、データコピーの際のイニシエータとして機能するイニシエータ機能とを備える。またFCデータ転送部51は、FCループ25を介してFMアダプタ38及び他のFMモジュール11との間でデータの送受信を行う。
さらにコマンド変換部52は、受信したFCプロトコルに準拠したコマンドをFM用のコマンドにプロトコル変換し、又はFM用のコマンドをFCプロトコルに準拠したコマンドに変換する。
チップ情報送信部53は、後述のようなFMチップ20間におけるデータコピーの最中又は終了後におけるブロックアドレス情報等をFMアダプタ38に送信する機能を有する。データバッファ54は、FCインタフェース部41及びFMコントローラ42間を通過するデータを一時的に記憶するために用いられるメモリである。
またFM側変換処理部46は、FMコマンド発行部55、FMデータ転送部56、エラー送信部57、ECC(Error Correction Code)生成・検証部58、FMステータス監視部59及びデータバッファ部60を備えて構成される。
FMコマンド発行部55は、FMチップ20に対してフラッシュメモリ用の規格に準拠した各種コマンドをパラレルで発行する機能を有し、FMデータ転送部56は、各FMチップ20との間で読書き対象のデータをパラレルで送受する機能をする。
またエラー送信部57は、そのFMモジュール11内においてエラーが発生したときにこれをストレージコントローラ31A,31BのFMアダプタ38に通知する機能を有し、ECC生成・検証部58は、FMチップ20に対するデータの読み書き時におけるECCの生成処理や検証処理を行う機能を有する。
さらにFMステータス監視部59は、そのFMモジュール11内のFMチップ20ごとのステータス(障害の有無や動作状態)を監視する。データバッファ60は、そのFMモジュール11内のFMチップ20に読み書きするデータを一時的に記憶するために用いられる。
FMチップ20は、書き換え可能な不揮発性の半導体メモリチップである。これらFMチップ20は、ストレージコントローラ31A,31BによりRAID方式で運用される。図5及び図8に示すように、1つのFMモジュール11内に存在する1若しくは複数のFMチップ20、又は複数のFMモジュール11を跨ぐ複数のFMチップ20により一つのRAIDグループ61が形成され、このRAIDグループ61内の各FMチップ20が提供する物理的な記憶領域上に1又は複数の論理的な記憶領域であるLDEV(Logical Device)62が形成される。
また各LDEV62は、それぞれストレージコントローラ31A,31Bがホスト30に提供する仮想的な論理ボリュームでなる論理ユニット63と対応付けられる。この場合の対応関係としては、図8に示すように、1つの論理ユニット63に対して1つのLDEV62が対応付けられる場合のほか、1つの論理ユニット63に対して複数のLDEV62が対応付けられる場合や、1つのLDEV62が複数の論理ユニット63に対応付けられる場合がある。
各論理ユニット63には、それぞれ固有の識別番号(LUN:Logical Unit Number)が割り当てられる。また論理ユニット63内の記憶領域は、所定大きさの論理的なブロックを単位として管理され、各ブロックに固有の識別番号(LBA:Logical Block Address)が割り当てられる。そして論理ユニット63に対するデータの入出力は、これらLUNとLBAとを組み合わせたものをアドレスとして、当該アドレスを指定して行われる。
このためストレージコントローラ31A,31BのFMアダプタ38(図6)は、図示しない内部メモリ内、または、ローカルメモリ36内に図9に示すような第1のアドレス変換テーブル64を有する。
この第1のアドレス変換テーブル64は、ホスト30が認識する論理ユニット63上のLBAと、LDEV62の識別番号(LDEV番号)、そのLDEV62内のLBA、そのLDEV62を構成する記憶領域を提供するFMモジュール11の識別番号(FMモジュール番号)、そのFMモジュール11内のLBAとの対応関係を管理するためのテーブルであり、「ホスト」欄64A及び「FMアダプタ」欄64Bから構成される。
「ホスト」欄64Aは、「LUN」欄64A1及び「LBA」欄64A2から構成される。そして「LUN」欄64A1には、ホスト30が認識する(すなわちストレージシステム1がホスト30に提供する)各論理ユニット63のLUNが格納され、「LBA」欄64A2には、ホスト30が認識するその論理ユニット63内の各ブロックにそれぞれ付与されたLBAの範囲が格納される。
また「FMアダプタ」欄64Bは、「LDEV番号」欄64B1、「内部LBA」欄64B2、「FMモジュール番号」欄64B3及び「FMモジュール内アドレス」欄64B4から構成される。
そして「LDEV番号」欄64B1には、対応する論理ユニット63に対応付けられたLDEV62の識別番号が格納され、「内部LBA」欄64B2には、同じ列の「LBA」欄64A2に格納されたLBAの範囲に対応するそのLDEV62内に存在するブロックのLBAの範囲が格納される。また「FMモジュール番号」欄64B3には、そのLDEV62を提供するRAIDグループ61(図8)を構成するFMモジュール11の識別番号が格納され、「FMモジュール内LBA」欄64B4には、これらFMモジュール11におけるそのLDEV62に対応付けられた記憶領域内に存在するブロックのLBAの範囲が格納される。
従って、例えば図9の例では、ホスト30が認識するLUNが「1」の論理ユニット63のLBAは「0〜11999」の範囲であり、その論理ユニット63はストレージシステム1内では識別番号が「1」のLDEV62と対応付けられ、そのLDEV62のLBAは「0〜11999」であることが分かる。またそのLDEV62は、1つのRAIDグループ61を構成する識別番号が「1」〜「4」のFMモジュール11内でのLBAが「0」〜「3999」の範囲の記憶領域と対応付けられていることが分かる。
そしてストレージコントローラ31A,31B(図6)のFMアダプタ38は、ホスト30からホストアダプタ33を介して論理ユニット63上のアドレスを指定したデータ入出力要求(データ書込み要求又はデータ読出し要求)が与えられた場合、かかる第1のアドレス変換テーブル64を参照して、そのアドレスをストレージコントローラ31A,31Bが管理するLDEV62上でのアドレスに変換し、さらにそのLDEV62上でのアドレスをFMモジュール11内でのアドレスに変換し、このアドレスをデータ入出力先として指定したデータ入出力要求を対応するFMモジュール11に送信する。
また各FMモジュール11のFMコントローラ42(図7)は、それぞれ図示しない内部メモリ内に図10に示す第2のアドレス変換テーブル65を保持している。
この第2のアドレス変換テーブル65は、ストレージコントローラ31A,31Bが認識するFMモジュール11内の各ブロックのLBAと、そのFMモジュール11内のFMチップ20の識別番号と、そのFMチップ20内の記憶領域内のブロックアドレスとの関係を管理するためのテーブルであり、「FMモジュール内LBA」欄65A、「FMチップ番号」欄65B及び「FMチップ内アドレス」欄65Cから構成される。
「FMチップ番号」欄65Bには、対応するFMチップ20の識別番号が格納され、「FMチップ内アドレス」欄65Cには、そのFMチップ20内の物理アドレス(各ブロックのブロックアドレス)範囲が格納される。また「FMモジュール内LBA」欄65Aには、そのFMチップ20内の物理アドレスに対応するFMモジュール11上でのLBAの範囲が格納される。
従って、例えば図10の例では、そのFMモジュール11が提供するLBAが「0〜399」の記憶領域は、識別番号が「1」のFMチップ20が提供するアドレスが「0〜399」の範囲の記憶領域と対応付けられており、またそのFMモジュール11が提供するLBAが「400〜799」の記憶領域は、識別番号が「2」のFMチップ20が提供するアドレスが「0〜399」の範囲の記憶領域と対応付けられていることが分かる。
そしてFMモジュール11のFMコントローラ42は、ストレージコントローラ31A,31BのFMアダプタ38から自FMモジュール11内のLBAを指定したデータ入出力要求が与えられた場合には、この第2のアドレス変換テーブル65を参照して、そのアドレスを対応するFMチップ20の識別番号及びそのFMチップ20内でのアドレスに変換し、このアドレス位置に対するデータ入出力処理を実行する。
(1−2)コレクションコピー機能及びダイナミックスペアリング機能
(1−2−1)チップ管理テーブル及びブロック管理テーブルの構成
次に、かかるストレージシステム1に搭載されたコレクションコピー機能及びダイナミックスペアリング機能について説明する。
本実施の形態によるストレージシステム1には、FMモジュール11内のいずれかのFMチップ20に障害が生じた場合に、その障害が生じたFMチップ(以下、これを障害FMチップと呼ぶ)20に格納されたデータを修復しながら他のFMチップ20にコピーするコレクションコピー機能と、当該データを障害FMチップ20から読み出して他のFMチップ20にコピーするダイナミックスペアリング機能とが搭載されている。
この場合、コレクションコピー機能に基づく上述のようなコレクションコピー処理としては、修復したデータを同じFMモジュール11内の他のFMチップ20にコピーする第1のコレクションコピー処理と、修復したデータを他のFMモジュール11内のFMチップ20にコピーする第2のコレクションコピー処理とがある。
同様に、ダイナミックスペアリング機能に基づく上述のようなダイナミックスペアリング処理としては、障害FMチップ20から読み出したデータを同じFMモジュール11内の他のFMチップ20にコピーする第1のダイナミックスペアリング処理と、障害FMチップ20から読み出したデータを他のFMモジュール11内のFMチップ20にコピーする第2のダイナミックスペアリング処理とがある。
そして本ストレージシステム1では、このようなコレクションコピー機能及びダイナミックスペアリング機能を実現するための手段として、各FMモジュール11のFMコントローラ42(図7)がそれぞれ図11に示すようなチップ管理テーブル70及び図12に示すようなブロック管理テーブル71を保持している。
このうちチップ管理テーブル70は、FMモジュール11のFMコントローラ42が自FMモジュール内の各FMチップ20について、障害の有無を管理するために使用するテーブルであり、図11に示すように、「スペアFMチップの有無」欄70A、「FMチップ番号」欄70B、「障害ブロック数閾値」欄70C、「障害ブロック数」欄70D、「エラーフラグ」欄70E、「RAID構成有無」欄70F及び「状態」欄70Gから構成される。
このうち「スペアFMチップの有無」欄70Aには、そのFMモジュール11内にスペア(予備)のFMチップ(以下、これをスペアFMチップと呼ぶ)20が存在するか否かの情報(有/無)と、スペアFMチップ20が存在する場合には、その識別番号(FMチップ番号)とが格納される。
また「FMチップ番号」欄70Bには、そのFMモジュール11内に存在する各FMチップ20の識別番号がそれぞれ格納され、「障害ブロック数」欄70Dには、そのFMチップ20内の障害が発生したブロック数(以下、これを障害ブロック数と呼ぶ)が格納される。
さらに「障害ブロック数閾値」欄70Cには、そのFMチップ20について予め設定された障害ブロック数の閾値(以下、これを障害ブロック数閾値と呼ぶ)が格納され、「エラーフラグ」欄70Eには、障害ブロック数が障害ブロック数閾値を超えた場合にエラーフラグ(「1」)が格納される。
さらに「RAID構成の有無」欄70Fには、そのFMチップ20がいずれかのRAIDグループ61(図8)を構成しているか否かの情報(有/無)と、そのFMチップ20がいずれかのRAIDグループ61を構成している場合には、そのRAIDグループ61の識別番号(RAIDグループ番号)が格納される。
さらに「状態」欄70Gには、FMチップ20がデータ格納領域として割り当てられているか否かの情報(割当・未割当)が格納される。本実施の形態では、あるFMチップ20に障害が生じた場合、当該FMチップ20のデータを格納するチップとして、「スペアFMチップの有無欄」70Aで管理するスペアFMチップ20を使用する。しかし、スペアFMチップがない場合など、FMコントローラ42は、チップ管理テーブル70の「状態」欄70Gを参照して、データが割り当てられていないFMチップ20を指定して、データを格納する形態としても良い。
従って、例えばこの図11の例の場合、そのFMモジュール11には、スペアFMチップ20として識別番号が「n−2」〜「n」のFMチップ20が存在することが分かる。また例えば識別番号が「2」のFMチップ20については、障害ブロック数閾値が「100」、現在の障害ブロック数が「1」であり、識別番号が「1」のRAIDグループ61を構成していることが分かる。
またブロック管理テーブル71は、FMモジュール11のFMコントローラ42が、自FMモジュール11内に存在するFMチップ20のブロックごとのステータスを管理するためのテーブルであり、FMチップ20ごとに作成される。このブロック管理テーブル71は、図12に示すように、「スペアブロックの有無」欄71A、「ブロックアドレス」欄71B、「書込み回数閾値」欄71C、「書込み回数」欄71D、「エラー回数閾値」欄71E、「エラー回数」欄71F及び「エラーフラグ」欄71Gから構成される。
このうち「スペアブロックの有無」欄71Aには、そのFMチップ20内にスペアのブロック(以下、これをスペアブロックと呼ぶ)が存在するか否かの情報(有/無)と、スペアブロックが存在する場合には、そのブロックアドレスが格納される。また「ブロックアドレス」欄71Bには、そのFMチップ20内に存在する各ブロックのブロックアドレスがそれぞれ格納される。
「書込み回数」欄71Dには、そのブロックにデータが書き込まれた回数が格納され、「書込み回数閾値」欄71Cには、そのブロックについて予め設定された書込み回数の閾値(以下、これを書込み回数閾値と呼ぶ)が格納される。
また「エラー回数」欄71Fには、そのブロックにおいて発生した読出しエラー又は書込みエラーの回数が格納され、「エラー回数閾値」欄71Eには、そのブロックについて予め設定された、そのブロックが使えないと判定するためのエラー回数の閾値(以下、これをエラー回数閾値と呼ぶ)が格納される。
さらに「エラーフラグ」欄71Gには、そのブロックに対するデータの書込み回数が書込み回数閾値を超え、又はそのブロックにおいて発生した読出しエラー若しくは書込みエラーの回数がエラー回数閾値を超えた場合にエラーフラグが格納される。
従って、例えばこの図12の例の場合、対応するFMチップ20には、スペアブロックとしてアドレスが「m−3」〜「m」のブロックが存在することが分かる。また例えばアドレスが「2」のブロックについては、書込み回数閾値として「100000」回、エラー回数閾値として「30」回がそれぞれ設定され、現在の書込み回数は「1122」回、エラー回数は「1」回で、障害が発生していない(エラーフラグが立っていない)ことが分かる。
(1−2−2)データ書込み/テーブル更新処理及びデータ読出し処理/テーブル更新処理
ここで、各FMモジュール11のFMコントローラ42は、これらチップ管理テーブル70及びブロック管理テーブル71を、図13及び図14に示すデータ書込み/テーブル更新処理手順や図15に示すデータ読出し/テーブル更新処理手順に従って、データ書込み処理やデータ読出し処理の際に必要に応じて更新する。
すなわち、このストレージシステム1の場合、ストレージコントローラ31A,31B(図6)のチャネルアダプタ33は、ホスト30から書込み対象のデータと、その格納先のアドレスを指定したデータ書込み要求とが与えられると、まず、このデータをキャッシュメモリ35に二重書きし(SP1)、この後かかるデータ書込み要求に基づくデータ書込み処理のジョブを、データ転送制御部34を介してローカルメモリ36に登録する(SP2)。
このときマイクロプロセッサ37は、定期的にローカルメモリ36を監視しており、かかるジョブを検出し、その内容を確認すると(SP3)、図9について上述した第1のアドレス変換テーブル64を参照して、書込み対象のデータを書き込むべきFMモジュール11、FMチップ20及びそのFMチップ20が構成するRAIDグループ61(図8)等を確認すると共に、必要なデータを対応するFMモジュール11内の対応するFMチップ20から読み出してパリティを計算する(SP4)。
続いてマイクロプロセッサ37は、FMアダプタ38を制御することにより、かかるFMモジュール11との間のコネクションを確立させ(SP5)、その後書込み対象のデータを、書込み先のFMチップ20の識別番号と当該FMチップ20内のLBAとを指定したデータ書込みコマンドと共に対応するFMモジュール11に送信する(SP6)。なお、この際マイクロプロセッサ37は、書込み対象のデータを所定単位で順次分離し、得られた分離データを冗長性をもたせて対応するRAIDグループ61を構成する複数のFMチップ20に書き込ませるように、各分離データ及び冗長データの書き込み先を指定する。
かかるデータ書込みコマンド及び書込み対象のデータを受信したFMモジュール11側では、データ入出力処理部40(図7)のFC‐FM変換部43において、このデータ書込みコマンドをフラッシュメモリ用のコマンドにプロトコル変換する(SP7)。
またデータ入出力処理部40のFMコントローラ42は、このプロトコル変換されたデータ書込みコマンドと第2のアドレス変換テーブル65(図10)とに基づいて、その書込み対象のデータを書き込むべきFMチップ20を確認すると共に、そのFMチップ20にデータを書き込む際に当該データに付加するECC(チップ内ECC)を計算する(SP8)。
次いでFMコントローラ42は、この書込みデータ又はECCの1ブロック分を指定されたFMチップ20内の指定されたアドレス位置に書き込む(SP9)。この場合におけるFMコントローラ42の具体的な処理内容については後述する。この後FMコントローラ42は、かかるデータ書き込みが行なわれたブロックに対応するブロック管理テーブル71(図12)上の「書込み回数」欄71Dに格納された書込み回数を1増加させる(SP10)。
続いてFMコントローラ42は、このときデータ書き込みが行われたFMチップ20内のブロックについて、ブロック管理テーブル71(図12)の対応する「書込み回数」欄71D及びこれに対応する「書込み回数閾値」欄71Cを参照して、そのブロックへのデータ書込み回数が当該ブロックについて設定された書込み回数閾値を超えたか否かを判断する(SP11)。そしてFMコントローラ42は、この判断において否定結果を得るとステップSP17に進む。
これに対してFMコントローラ42は、かかる判断において肯定結果を得ると、ブロック管理テーブル71上のそのブロックに対応する「エラーフラグ」欄71Gにエラーフラグを格納する(SP12)。この結果このブロックは障害(エラー)が生じたブロックとして登録されることとなる。また、このときFMコントローラ42は、これと併せてチップ管理テーブル70(図11)上のそのFMチップ20に対応する「障害ブロック数」欄70Cに格納された障害ブロック数を1増加させる。
続いてFMコントローラ42は、ブロック管理テーブル71の「スペアブロックの有無」欄71Aを参照して、そのFMチップ20内に未使用のスペアブロックが存在するか否かを判断する(SP13)。
FMコントローラ42は、この判断において否定結果を得ると、FC‐FM変換部43(図7)を制御して、ストレージコントローラ31A,31BのFMアダプタ38にエラー通知を送信させる(SP24)。この結果、このエラー通知に基づくエラー報告がストレージコントローラ31A,31Bから対応するホスト30に送信される。そしてFMコントローラ42は、この後、すべてのデータの書き込みが完了したか否かを判断し(SP25)、肯定結果を得るとステップSP9に戻り、これに対して肯定結果を得ると、このデータ書込み/テーブル更新処理を終了する。
これに対してFMコントローラ42は、ステップSP13の判断において肯定結果を得ると、FC‐FM変換部43を制御することにより、ステップSP9においてブロックへの書込みを行ったデータを、ステップSP13において存在を確認したスペアブロックにコピーさせる(SP14)。
続いてFMコントローラ42は、チップ管理テーブル70上のデータ書込みが行われたFMチップ20に対応する「障害ブロック数閾値」欄70C及び「障害ブロック数」欄70Dを参照して、そのFMチップ20における障害ブロック数が当該FMチップ20について予め定められた障害ブロック数閾値を超えたか否かを判断する(SP15)。
FMコントローラ42は、この判断において否定結果を得るとステップSP17に進み、これに対して肯定結果を得ると、チップ管理テーブル70上のそのFMチップ20に対応する「エラーフラグ」欄70Eにエラーフラグを格納した後(SP16)、ステップSP17に進む。
一方、FMコントローラ42は、ステップSP17に進むと、かかる書込み対象のデータの書き込みが成功したか否か(すなわちデータを書き込めたか否か)を判断する(SP17)。そしてFMコントローラ42は、この判断において肯定結果を得ると、すべてのデータの書き込みが完了したか否かを判断する(SP25)。
FMコントローラ42は、この判断において肯定結果を得るとステップSP9に戻り、この後すべてのデータの書き込みを完了するまで同様の処理を繰り返す(SP9〜SP25−SP9)。またFMコントローラ42は、やがてすべてのデータを書き終えることによりステップSP25の判断において肯定結果を得ると、このデータ書込み/テーブル更新処理を終了する。
これに対してFMコントローラ42は、ステップSP17の判断において否定結果を得ると、FC‐FM変換部43(図7)を制御して、ストレージコントローラ31A,31BのFMアダプタ38に書込みエラー通知を送信させる(SP18)。この結果、この書込みエラー通知に基づくエラー報告がストレージコントローラ31A,31Bから対応するホスト30に送信される。
次いでFMコントローラ42は、ステップSP9のデータ書込み処理においてデータの書き込みに失敗したブロックについて、ブロック管理テーブル71上の対応する「エラー回数」欄71Fに格納されたエラー回数を1増加させる(SP19)。
またFMコントローラ42は、そのブロックについて、ブロック管理テーブル71の対応する「エラー回数」欄71F及び「エラー回数閾値」欄71Eを参照して、そのブロックにおけるエラー回数が当該ブロックについて設定されたエラー回数閾値を超えたか否かを判断する(SP20)。
そしてFMコントローラ42は、この判断において否定結果を得るとステップSP22に進み、これに対して肯定結果を得ると、ブロック管理テーブル71上のそのブロックに対応する「エラーフラグ」欄71Gにエラーフラグを格納する(SP21)。この結果このブロックは障害が生じたブロックとして登録されることとなる。また、このときFMコントローラ42は、これと併せてチップ管理テーブル70上のそのFMチップ20に対応する「障害ブロック数」欄70Dに格納された障害ブロック数を1増加させる。
この後FMコントローラ42は、チップ管理テーブル70のそのFMチップ20に対応する「障害ブロック数」欄70D及び「障害ブロック数閾値」欄70Cを参照して、そのFMチップ20における障害ブロック数が当該FMチップ20について定められた障害ブロック数閾値を超えたか否かを判断する(SP22)。
そしてFMコントローラ42は、この判断において否定結果を得るとこのデータ書込み/テーブル更新処理を終了し、これに対して肯定結果を得ると、チップ管理テーブル70上のそのFMチップ20に対応する「エラーフラグ」欄70Eにエラーフラグを格納する(SP23)。これによりそのFMチップ20は、障害が生じたFMチップとして登録されることとなる。
そしてFMコントローラ42は、この後すべてのデータの書き込みが完了したか否かを判断し(SP25)、肯定結果を得るとステップSP9に戻り、これに対して肯定結果を得ると、このデータ書込み/テーブル更新処理を終了する。
一方、ストレージコントローラ31A,31B(図6)のチャネルアダプタ33は、ホスト30からアドレスを指定したデータ読出し要求が与えられると、図15に示すデータ読出し/テーブル更新処理手順に従って、まず、読出し対象のデータがキャッシュメモリ37に格納されているか否かを判断する(SP30)。
そしてチャネルアダプタ33は、この判断において否定結果を得ると、かかる読出し対象のデータをキャッシュメモリ37から読み出し(SP31)、これをホスト30に送信した後、このデータ読出し/テーブル更新処理を終了する。
これに対してチャネルアダプタ33は、この判断において肯定結果を得ると、かかるデータ読出し要求に基づくデータ読出し処理のジョブを、データ転送制御部34を介してローカルメモリ36に登録する(SP32)。
このときマイクロプロセッサ37は、上述のように定期的にローカルメモリ36を監視しており、かかるジョブを検出し、その内容を確認すると(SP33)、図9について上述した第1のアドレス変換テーブル64を参照して、データを読み出すべきFMモジュール11、FMチップ20及びそのFMチップ20が構成するRAIDグループ61(図8)等を確認する(SP34)。
続いてマイクロプロセッサ37は、FMアダプタ38を制御することにより、かかるFMモジュール11との間のコネクションを確立させ(SP35)、その後読出し対象のデータが格納されているFMチップ20の識別番号と当該FMチップ20内のアドレスとを指定したデータ読出しコマンドをFMモジュール11に送信する(SP36)。
かかるデータ読出しコマンドを受信したFMモジュール11側では、データ入出力処理部40(図7)のFC‐FM変換部43において、このデータ読出しコマンドをFM用のプロトコルにプロトコル変換する(SP37)。
またデータ入出力部43のFMコントローラ42は、このプロトコル変換されたデータ読出しコマンドと第2のアドレス変換テーブル65(図10)とに基づいて、その読出し対象のデータが格納されているFMチップ20を確認する(SP38)。
次いでFMコントローラ43は、読出し対象のデータを対応するRAIDグループ61を構成する複数のFMチップ20内の対応するアドレス位置からそれぞれ1ブロック分ずつ読み出す(SP39)。この場合におけるFMコントローラ42の具体的な処理内容については後述する。この後FMコントローラ42は、かかるデータの読み出しが成功したか否か(すなわち、データが読み出せたか否か)を判断する(SP40)。
そしてFMコントローラ42は、この判断において肯定結果を得ると、読み出したデータのECCを計算し(SP41)、計算したECCに基づいて、かかるデータが正しいか否かを検証する(SP42)。
FMコントローラ42は、この検証において肯定結果を得ると、読み出した1ブロック分のデータをストレージコントローラ31A,31Bに送信する(SP43)。かくして、かかる複数のFMチップ20から読み出されたデータは、この後ストレージコントローラ31A,31Bにおいて結合されて元のデータフォーマットのデータに復元される。そしてこの復元されたデータが対応するホスト30に送信される。
この後FMコントローラは、すべてのデータの読み出しが完了したか否かを判断する(SP50)。そしてFMコントローラ42は、この判断において肯定結果を得るとステップSP39に戻り、この後すべてのデータの読み出しを完了するまで同様の処理を繰り返す(SP39〜SP50−SP39)。またFMコントローラ42は、やがてすべてのデータを読み出し終えることによりステップSP50の判断において肯定結果を得ると、このデータ書込み/テーブル更新処理を終了する。
これに対してFMコントローラ42は、ステップSP40やステップSP42の判断において否定結果を得ると、FC‐FM変換部43(図7)を制御して、ストレージコントローラ31A,31BのFMアダプタ38に読出しエラー通知を送信させる(SP44)。この結果、この読出しエラー通知に基づくエラー報告がストレージコントローラ31A,31Bから対応するホスト30に送信される。
次いでFMコントローラ42は、データの読み出しに失敗したそのブロックについて、ブロック管理テーブル71上の対応する「エラー回数」欄71Fに格納されたエラー回数を1増加させる(SP45)。またFMコントローラ42は、かかるブロックについて、ブロック管理テーブル71の対応する「エラー回数」欄71F及び「エラー回数閾値」欄71Eを参照して、そのブロックにおけるエラー回数が当該ブロックについて設定されたエラー回数閾値を超えたか否かを判断する(SP46)。
そしてFMコントローラ42は、この判断において否定結果を得るとステップSP48に進み、これに対して肯定結果を得ると、ブロック管理テーブル71上のそのブロックに対応する「エラーフラグ」欄71Gにエラーフラグを格納する(SP47)。この結果このブロックは障害が生じたブロックとして登録されることとなる。またこのときFMコントローラ42は、これと併せてチップ管理テーブル70上のそのFMチップ20に対応する「障害ブロック数」欄70Dに格納された障害ブロック数を1増加させる。
この後FMコントローラ42は、チップ管理テーブル70のそのFMチップ20に対応する「障害ブロック数」欄70D及び「障害ブロック数閾値」欄70Cを参照して、そのFMチップ20における障害ブロック数が当該FMチップ20について定められた障害ブロック数閾値を超えたか否かを判断する(SP48)。
そしてFMコントローラ42は、この判断において否定結果を得ると、すべてのデータの読み出しが完了したか否かを判断する(SP50)。そしてFMコントローラ42は、この判断において否定結果を得るとステップSP39に戻り、これに対して肯定結果を得るとこのデータ読出し/テーブル更新処理を終了する。
これに対してFMコントローラ42は、ステップSP48の判断において肯定結果を得ると、チップ管理テーブル70上のそのFMチップ20に対応する「エラーフラグ」欄70Eにエラーフラグを格納する(SP49)。これによりそのFMチップ20は、障害が生じたFMチップとして登録されることとなる。
そしてFMコントローラ42は、この後ステップSP50に進んですべてのデータの読み出しが完了したか否かを判断する(SP50)。そしてFMコントローラ42は、この判断において否定結果を得るとステップSP39に戻り、これに対して肯定結果を得るとこのデータ読出し/テーブル更新処理を終了する。
(1−2−3)コレクションコピー処理及びダイナミックスペアリング処理
(1−2−3−1)障害FMチップデータコピー処理
次に、かかるチップ管理テーブル70(図11)及びブロック管理テーブル71(図12)を用いて行なわれる上述の第1及び第2のコレクションコピー処理並びに第1及び第2のダイナミックスペアリング処理の具体的な処理内容について説明する。
図16は、FMモジュール11内のいずれかのFMチップ20に障害が発生した場合における、そのFMモジュール11のFMコントローラ42の処理内容を示すフローチャートである。FMコントローラ42は、自FMモジュール11のFMチップ20に障害が発生した場合、障害FMチップ20に格納されたデータを修復できるか否か及び自FMモジュール11内にスペアFMチップ20が存在するか否かに基づいて、第1及び第2のコレクションコピー処理並びに第1及び第2のダイナミックスペアリング処理の中から最も適した1つの処理を選択してこれを実行する。
すなわち、かかるFMコントローラ42は、それぞれ自己が保持する図11について上述したチップ管理テーブル70の「エラーフラグ」欄70Eを常時監視している(SP60)。
そしてFMコントローラ42は、いずれかの「エラーフラグ」欄70Eにエラーフラグが格納されると、そのFMチップ20におけるそのときデータの読み書きを行おうとしたブロック以外の他のブロックからデータを読み出せるか否かを検証する(SP61)。
FMコントローラ42は、この判断において否定結果を得ると、チップ管理テーブル70上の「スペアチップの有無」欄70Aを参照して、自FMモジュール11内にスペアFMチップ20が存在するか否かを判断する(SP62)。そしてFMコントローラ42は、この判断において肯定結果を得た場合には第1のコレクションコピー処理を実行し(SP63)、否定結果を得た場合には第2のコレクションコピー処理を実行する(SP64)。
一方、FMコントローラ42は、ステップSP61の判断において肯定結果を得ると、チップ管理テーブル70上の「スペアチップの有無」欄70Aを参照して、自FMモジュール11内にスペアFMチップ20が存在するか否かを判断する(SP65)。そしてFMコントローラ42は、この判断において肯定結果を得た場合には第1のダイナミックスペアリング処理を実行し(SP66)、否定結果を得た場合には第2のダイナミックスペアリング処理を実行する(SP67)。
(1−2−3−2)第1のコレクションコピー処理
図17は、上述した第1のコレクションコピー処理の概要を示す。この第1のコレクションコピー処理では、いずれかのFMチップ20に障害が発生したFMモジュール(以下、これを障害FMモジュールと呼ぶ)11のFMコントローラ42が、かかる障害FMチップ20が属するRAIDグループ61の他のFMチップ20が収納された他のFMモジュール11に対して必要なデータの転送を依頼する。
そして、障害FMモジュール11のFMコントローラ42は、かかる他のFMモジュール11から送信されるデータに基づいて障害FMチップ20に格納されていたデータを修復し、修復したデータをその障害FMモジュール11内のスペアFMチップ20に書き込む。
図18は、このような第1のコレクションコピー処理の具体的な流れを示すフローチャートである。障害FMモジュール11のFMコントローラ42は、図16について上述した障害FMチップデータコピー処理のステップSP63に進むと、この第1のコレクションコピー処理を開始し、まず、チップ管理テーブル70を参照して、障害FMチップ20に格納されていたデータの修復データを格納する自FMモジュール11内のスペアFMチップ20を決定する(SP70)。
続いてFMコントローラ42は、障害FMチップ20が属するRAIDグループ61内の他のFMチップ20の識別番号などの、当該障害FMチップ20が属するRAIDグループ61に関する各種情報(以下、これらをRAIDグループ情報と呼ぶ)の送信をストレージコントローラ31A,31Bに依頼し、これを取得する(SP71)。
次いでFMコントローラ42は、ステップSP70において修復データの格納先として決定したスペアFMチップ20内のかかる修復データのコピーを開始するブロックのアドレスを設定(ブロックアドレスを初期化)する(SP72)。
この後FMコントローラ42は、ステップSP71において取得したRAIDグループ情報に基づき、FMアダプタ38を介して、障害FMチップ20と同じRAIDグループ61を構成する他のFMチップ20からそのとき対象としているデータを1ブロック分だけ修復するのに必要なデータを読み出して自FMモジュール11に送信するよう、対応する他のFMモジュール11のFMコントローラ42にデータ送信を依頼する(SP73)。
そしてFMコントローラ42は、かかる他のFMモジュール11からFMアダプタ38を介して1ブロック分の必要なデータが転送されてくると、これらのデータに基づいて障害FMチップ20に格納されていたデータを修復し(SP74)、得られた1ブロック分の修復データを、ステップSP70において決定したスペアFMチップ20内のそのときデータ書込み先として設定されているアドレス(初期時にはステップSP72において設定されたアドレス)のブロックに書き込む(SP75)。
次いでFMコントローラ42は、かかるスペアFMチップ20内における修復データの書込み先のブロックのアドレスとして設定されている値を、ステップSP75において修復データを書き込んだブロックの次のアドレス(つまりステップSP75において修復データを書き込んだブロックのアドレスよりも「1」だけ大きいアドレス)に更新する(SP76)。
この後FMコントローラ42は、障害FMチップ20内のすべてのブロックについて上述のようなコレクションコピーを終了したか否かを判断する(SP77)。そしてFMコントローラ42は、この判断において否定結果を得るとステップSP73に戻り、この後かかる障害FMチップ20内のすべてのブロックに対する同様の処理が終了するまでステップSP73〜ステップSP77の処理を繰り返す。
またFMコントローラ42は、やがて障害FMチップ20内のすべてのブロックに対するコレクションコピーが完了すると、かかる修復データが格納されたスペアFMチップ20を障害FMチップ20に代えて使用する旨のチップ情報をFMアダプタ38に送信する(SP78)。なお、このチップ情報を受信したFMアダプタ38は、後述する図31のステップSP203の処理のために、このチップ情報に含まれるスペアFMチップ20における元のデータが書き込まれていたブロックのアドレスを、修復データが書き込まれたブロックのアドレスに更新する。そしてFMコントローラ42は、この後この第1のコレクションコピー処理を終了する。
(1−2−3−3)第2のコレクションコピー処理
図19は、上述した第2のコレクションコピー処理の概要を示す。この第2のコレクションコピー処理では、障害FMモジュール11内のFMコントローラ42が、スペアのFMモジュール(以下、これをスペアFMモジュールと呼ぶ)11のFMコントローラ42に障害FMチップ20に格納されたデータの修復コピーを依頼する。
修復コピーを依頼されたスペアFMモジュール11のFMコントローラ42は、障害FMチップ20と共に同じRAIDグループ61を構成する他のFMモジュール11のFMコントローラ42に対して必要なデータの転送を依頼する。
そして、かかるスペアFMモジュール22のFMコントローラ42は、かかる他のFMモジュール11から送信されるデータに基づいて障害FMチップ20に格納されていたデータを修復し、修復したデータを自FMモジュール11内のFMチップ20に書き込む。
図20は、このような第2のコレクションコピー処理の具体的な流れを示すフローチャートである。障害FMモジュール11のFMコントローラ42は、図16について上述した障害FMチップデータコピー処理のステップSP64に進むとこの第2のコレクションコピー処理を開始し、まず、ストレージコントローラ31A,31BのFMアダプタ38からスペアFMモジュール11に関する情報(以下、これをスペアFMモジュール情報と呼ぶ)を取得し、取得したスペアFMモジュール情報に基づいて、障害FMチップ20に格納されていたデータのコレクションコピー先となるスペアFMモジュール11と当該スペアFMモジュール内のFMチップ20とを選択し決定する(SP80)。
そして障害FMモジュール11のFMコントローラ42は、このスペアFMモジュール11のFMコントローラ42に対して、障害FMチップ20に格納されていたデータのかかるFMチップへの修復コピーを依頼する(SP81)。
一方、この依頼を受けたスペアFMモジュール11のFMコントローラ42は、ステップSP80において決定されたFMチップ20内のコレクションコピーを開始するブロックのアドレスを設定する(SP82)。またFMコントローラ42は、障害FMチップ20が属するRAIDグループ61のRAIDグループ情報を送信するようFMアダプタ38に依頼し、これを取得する(SP83)。
この後スペアFMモジュール11のFMコントローラ42は、このRAIDグループ情報に基づき、FMアダプタ38を介して、障害FMチップ20と同じRAIDグループ61を構成するFMチップ20から、障害FMチップ20の1ブロック分のデータを修復するのに必要なデータを読み出して自FMモジュール11に送信するよう、対応する各FMモジュール11にデータ送信を依頼する(SP84)。
そしてスペアFMモジュール11のFMコントローラ42は、これらすべての他のFMモジュール11からFMアダプタ38を介して必要なデータが転送されてくると、これらのデータに基づいて障害FMチップ20に格納されていた1ブロック分のデータを修復し(SP85)、得られた修復データを、自FMモジュール11内のステップSP84において指定されたFMチップ20に書き込む(SP86)。
次いでスペアFMモジュール11のFMコントローラ42は、このFMチップ20内における修復データの書込み先のブロックのアドレスとして設定されている値を、ステップSP86において修復データを書き込んだブロックの次のアドレスに更新する(SP87)。
この後スペアFMモジュール11のFMコントローラ42は、障害FMチップ20内のすべてのブロックについて上述のようなコレクションコピーを終了したか否かを判断する(SP88)。そしてかかるFMコントローラ42は、この判断において否定結果を得るとステップSP83に戻り、この後かかる障害FMチップ20内のすべてのブロックに対する同様の処理が終了するまでステップSP83〜ステップSP88の処理を繰り返す。
またスペアFMモジュール11のFMコントローラ42は、やがて障害FMチップ20内のすべてのブロックに対するコレクションコピーが完了すると、かかる修復データが格納されたFMチップ20を障害FMチップ20に代えて使用する旨のチップ情報をFMアダプタ38に送信する(SP88)。
そしてFMアダプタ38は、このチップ情報を受信すると、これに応じて対応するデータの格納先を、かかるスペアFMモジュール11内のかかるFMチップ20に変換するアドレス変換処理を実行する(SP89)。これによりこの第2のコレクションコピー処理が終了する。
なお、このような第2のコレクションコピー処理としては、上述のようにスペアFMモジュール11のFMコントローラ42が主導して行なう方法のほかに、障害FMモジュール11のFMコントローラ42が主導して行なう方法も適用することができる。
図21は、かかる第2のコレクションコピー処理を障害FMモジュール11のFMコントローラ42が主導して行なう場合の処理手順を示している。
この場合、障害FMモジュール11のFMコントローラ42は、まず、ストレージコントローラ31A,31BのFMアダプタ38からスペアFMモジュール情報を取得し、取得したスペアFMモジュール情報に基づいて、障害FMチップ20に格納されていたデータのコレクションコピー先となるスペアFMモジュール11と当該スペアFMモジュール内のFMチップ20とを選択し決定する(SP90)。
続いて障害FMモジュール11のFMコントローラ42は、FMアダプタ38から障害FMチップ20が属するRAIDグループのRAIDグループ情報を取得し(SP91)、この後ステップSP90において修復データの格納先として決定したスペアFMチップ20内のかかる修復データのコピーを開始するブロックのアドレスを設定する(SP92)。
この後、障害FMモジュール11のFMコントローラ42は、ステップSP91において取得したRAIDグループ情報に基づき、FMアダプタ38を介して、障害FMチップ20と同じRAIDグループ61を構成するFMチップ20から障害FMチップ20の1ブロック分のデータを修復するのに必要なデータを読み出し、これをステップSP90においてコピー先として決定したFMチップ20に書き込むべき旨のデータ書込み要求と共にステップSP90において決定したスペアFMモジュール11に送信するよう、対応するFMモジュール11に依頼する(SP93)。
かくして、かかる依頼を受けた各FMモジュール11のFMコントローラ42は、必要なデータを対応するFMチップ20から読み出し、これをかかるデータ書込み要求と共にFMアダプタ38を介して指定されたスペアFMモジュール11に送信する。
そして、対応する各FMモジュール11からこのようなデータ及びデータ書込み要求を受信したスペアFMモジュール11のFMコントローラ42は、当該データに基づいて障害FMチップ20に格納されていた1ブロック分のデータを修復し(SP94)、得られた修復データを指定されたFMチップ20内のそのときデータ書込み先として設定されているアドレスのブロックに書き込む(SP95)。
この後、障害FMモジュール11のFMコントローラ42は、かかる修復データが書き込まれたFMチップ20内における修復データの書込み先のブロックのアドレスとして設定されている値を、ステップSP95において修復データを書き込んだブロックの次のアドレスに更新する(SP96)。
続いて障害FMモジュール11のFMコントローラ42は、障害FMチップ20内のすべてのブロックについて上述のようなコレクションコピーを終了したか否かを判断する(SP97)。そしてかかるFMコントローラ42は、この判断において否定結果を得るとステップSP93に戻り、この後かかる障害FMチップ20内のすべてのブロックに対する同様の処理が終了するまでステップSP93〜ステップSP97の処理を繰り返す。
また障害FMモジュール11のFMコントローラ42は、やがて障害FMチップ20内のすべてのブロックに対するコレクションコピーが完了すると、かかる修復データが格納されたスペアFMチップ20を障害FMチップ20に代えて使用する旨のチップ情報をFMアダプタ38に送信する(SP98)。
そしてFMアダプタ38は、このチップ情報を受信すると、これに応じて対応するデータの格納先をかかるスペアFMモジュール11内のかかるFMチップ20に変換するアドレス変換処理を実行する(SP99)。これによりこの第2のコレクションコピー処理が終了する。
(1−2−3−4)第1のダイナミックスペアリング処理
図22は、上述した第1のダイナミックスペアリング処理の概要を示す。この第1のダイナミックスペアリング処理では、障害FMモジュール11内のFMコントローラ42がかかる障害FMチップ20に格納されたデータを必要に応じて修復しながら自FMモジュール11内の障害が発生していないFMチップ20に書き込む。
図23は、このような第1のダイナミックスペアリング処理の具体的な流れを示すフローチャートである。障害FMモジュール11のFMコントローラ42は、図16について上述した障害FMチップデータコピー処理のステップSP66に進むと、この第1のダイナミックスペアリング処理を開始し、まず、自FMモジュール11内のスペアFMチップ20の中から、障害FMチップ20に格納されていたデータのコピー先となるFMチップ20を選択し決定する(SP100)。
続いてFMコントローラ42は、ステップSP100において決定したFMチップ20内のコレクションコピーを開始するブロックのアドレスを設定する(SP101)。また、FMコントローラ42は、障害FMチップ20から1ブロック分のデータを読み出すデータ読出し処理を実行し(SP102)、この後、このデータ読出し処理が成功したか否か(すなわち、かかる1ブロック分のデータを読み出せたか否か)を判断する(SP103)。
そしてFMコントローラ42は、この判断において肯定結果を得ると、読み出した1ブロック分のデータをステップSP100において修復データのコピー先として決定した自FMモジュール11内のスペアFMチップ20に書き込む(SP107)。
これに対してFM42コントローラは、かかるステップSP103の判断において否定結果を得ると、障害FMチップ20が属するRAIDグループ61のRAIDグループ情報を送信するようFMアダプタ38に依頼し、これを取得する(SP104)。
この後FMコントローラ42は、このRAIDグループ情報に基づき、FMアダプタ38を介して、障害FMチップ20と同じRAIDグループ61を構成するFMチップ20から、障害FMチップ20の1ブロック分のデータを修復するのに必要なデータを読み出して自FMモジュール11に送信するよう、対応するFMモジュール11に依頼する(SP105)。
そしてスペアFMモジュール11のFMコントローラ42は、これらすべての他のFMモジュール11からFMアダプタ38を介して必要なデータが転送されてくると、これらのデータに基づいて障害FMチップ20に格納されていた1ブロック分のデータを修復し(SP106)、得られた修復データを、自FMモジュール11内のステップSP100において決定したFMチップ20に書き込む(SP107)。
次いでFMコントローラ42は、このFMチップ20内における修復データの書込み先のブロックのアドレスとして設定されている値を、ステップSP75において修復データを書き込んだブロックの次のアドレスに更新する(SP108)。
この後FMコントローラ42は、障害FMチップ20内のすべてのブロックについて上述のようなコレクションコピーを終了したか否かを判断する(SP109)。そしてFMコントローラ42は、この判断において否定結果を得るとステップSP102に戻り、この後かかる障害FMチップ20内のすべてのブロックに対する同様の処理が終了するまでステップSP102〜ステップSP109の処理を繰り返す。
またFMコントローラ42は、やがて障害FMチップ20内のすべてのブロックに対するダイナミックスペアリングによるデータコピーが完了すると、かかる修復データが格納されたFMチップ20を障害FMチップ20に代えて使用する旨のチップ情報をストレージコントローラ31A,31Bに送信する(SP110)。なお、このチップ情報を受信したFMコントローラ42は、このチップ情報に含まれるスペアFMチップ20における元のデータが書き込まれていたブロックのアドレスを、修復データが書き込まれたブロックのアドレスに更新する。そしてFMコントローラ42は、この後この第1のダイナミックスペアリング処理を終了する。
(1−2−3−5)第2のダイナミックスペアリング処理
図24は、上述した第2のダイナミックスペアリング処理の概要を示す。この第2のダイナミックスペアリング処理では、障害FMチップ20のデータを、そのコピー先となるスペアFMモジュール11のFMコントローラ42が必要に応じて修復しながら自FMモジュール11内のFMチップ20に書き込む。
図25は、このような第2のダイナミックスペアリング処理の具体的な流れを示すフローチャートである。障害FMモジュール11のFMコントローラ42は、図16について上述した障害FMチップデータコピー処理のステップSP67に進むとこの第2のダイナミックスペアリング処理を開始して、まず、スペアFMモジュール情報をストレージコントローラ31A,31Bから取得し、取得したスペアFMモジュール情報に基づいて、障害FMチップ20に格納されたデータのコピー先となるスペアFMモジュール11と当該スペアFMモジュール11内のFMチップ20とを選択し決定する(SP120)。
そして障害FMモジュール11のFMコントローラ42は、このスペアFMモジュール11のFMコントローラ42に対して、FMアダプタ38を介して、コピー先のFMモジュール11及びFMチップ20としてステップSP120において決定したFMモジュール11及びFMチップ20を指定して、障害FMチップ20に格納されていたデータのダイナミックスペアリングを依頼する(SP121)。
かかるダイナミックスペアリングの依頼を受けたスペアFMモジュール11のFMコントローラ42は、ステップSP120においてデータコピー先として決定されたスペアFMチップ20内のかかる修復データのコピーを開始するブロックのアドレスを設定(ブロックアドレスを初期化)する(SP122)。
また、かかるスペアFMモジュール11のFMコントローラ42は、障害FMモジュール11にアクセスして障害FMチップ20から1ブロック分のデータを読み出し(SP123)、この後、このデータを読み出せたか否かを判断する(SP124)。
スペアFMモジュール11のFMコントローラ42は、この判断において肯定結果を得ると、読み出した1ブロック分のデータをステップSP120においてコピー先として指定された決定したFMチップ20に書き込む(SP128)。
これに対してスペアFMモジュール11のFMコントローラ42は、障害FMチップ20が属するRAIDグループ61のRAIDグループ情報を送信するようFMアダプタ38に依頼し、これを取得する(SP125)。
この後スペアFMモジュール11のFMコントローラ42は、このRAIDグループ情報に基づき、FMアダプタ38を介して、障害FMチップ20と同じRAIDグループ61を構成するFMチップ20から、障害FMチップ20の1ブロック分のデータを修復するのに必要なデータを読み出して自FMモジュール11に送信するよう、対応する各FMモジュール11に依頼する(SP126)。
そしてスペアFMモジュール11のFMコントローラ42は、これらすべての他のFMモジュール11からFMアダプタ38を介して必要なデータが転送されてくると、これらのデータに基づいて障害FMチップ20に格納されていた1ブロック分のデータを修復し(SP127)、得られた修復データをステップSP121においてコピー先として指定されたFMチップ20内のそのときデータ書込み先として設定されているアドレス(初期時にはステップSP72において設定されたアドレス)のブロックに書き込む(SP128)。
次いでスペアFMモジュールのFMコントローラ42は、かかるスペアFMチップ20内における修復データの書込み先のブロックのアドレスとして設定されている値を、ステップSP128において修復データを書き込んだブロックの次のアドレスに更新する(SP129)。
この後スペアFMモジュール11のFMコントローラ42は、障害FMチップ20内のすべてのブロックについて上述のようなダイナミックスペアリングを終了したか否かを判断する(SP130)。そしてかかるFMコントローラ42は、この判断において否定結果を得るとステップSP123に戻り、この後かかる障害FMチップ20内のすべてのブロックに対する同様の処理が終了するまでステップSP123〜ステップSP130の処理を繰り返す。
またスペアFMモジュール11のFMコントローラ42は、やがて障害FMチップ20内のすべてのブロックに対するコレクションコピーが完了すると、かかる修復データが格納されたスペアFMチップ20を障害FMチップ20に代えて使用する旨のチップ情報をFMアダプタ38に送信する(SP131)。
そしてFMアダプタ38は、このチップ情報を受信すると、これに応じて対応するデータの格納先を、かかるスペアFMモジュール11内のかかるFMチップ20に変換するアドレス変換処理を実行する(SP132)。これによりこの第2のダイナミックスペアリング処理が終了する。
なお、このような第2のダイナミックスペアリング処理としては、上述のようにスペアFMモジュール11のFMコントローラ42が主導して行なう方法のほかに、障害FMモジュール11のFMコントローラ42が主導して行なう方法も適用することができる。
図26は、かかる第2のダイナミックスペアリング処理を障害FMモジュール11のFMコントローラ42が主導して行なう場合の処理手順を示している。
この場合障害FMモジュール11のFMコントローラ42は、まず、ストレージコントローラ31A,31BのFMアダプタ38からスペアFMモジュール情報を取得し、取得したスペアFMモジュール情報に基づいて、障害FMチップ20に格納されていたデータのコレクションコピー先となるスペアFMモジュール11と当該スペアFMモジュール内のFMチップ20とを選択し決定する(SP140)。
続いて障害FMモジュール11のFMコントローラ42は、FMアダプタ38から障害FMチップ20が属するRAIDグループ61のRAIDグループ情報を取得し(SP141)、この後ステップSP140においてコレクションコピー先として決定したスペアFMチップ20内のかかるコレクションコピーを開始するブロックのアドレスを設定する(SP142)。
この後障害FMモジュール11のFMコントローラ42は、障害FMチップ20からの1ブロック分のデータを読み出すデータ読出し処理を実行し(SP143)、当該データ読出し処理が成功したか否か(すなわち、データを読み出せたか否か)を判断する(SP144)。
障害FMモジュール11のFMコントローラ42は、この判断において肯定結果を得ると、この障害FMチップ20から読み出した1ブロック分のデータを、FMアダプタ38を介して、ステップSP140においてコピー先として決定したFMチップ20に書き込むべき旨のデータ書込みコマンドと共にステップSP140において決定したスペアFMモジュール11に転送する(SP145)。そして、このデータを受信したスペアFMモジュール11のFMコントローラ42は、当該データを指定されたFMチップ20に書き込む(SP148)。
一方、障害FMモジュール11のFMコントローラ42は、ステップSP144の判断において否定結果を得ると、ステップSP141において取得したRAIDグループ情報に基づき、FMアダプタ38を介して、障害FMチップ20と同じRAIDグループ61を構成するFMチップ20から障害FMチップ20の1ブロック分のデータを修復するのに必要なデータを読み出し、これをステップSP140においてコピー先として決定したFMチップ20に書き込むべき旨のデータ書込み要求と共にステップSP140において決定したスペアFMモジュール11に送信するよう、対応するFMモジュール11に依頼する(SP146)。
かくして、かかる依頼を受けた各FMモジュール11のFMコントローラ42は、必要なデータを対応するFMチップ20から読み出し、これをかかるデータ書込み要求と共にFMアダプタ38を介して指定されたスペアFMモジュール11に送信する。
そして、対応する各FMモジュール11からこのようなデータ及びデータ書込み要求を受信したスペアFMモジュール11のFMコントローラ42は、当該データに基づいて障害FMチップ20に格納されていた1ブロック分のデータを修復し(SP147)、得られた修復データを指定されたFMチップ20内のそのときデータ書込み先として設定されているアドレスのブロックに書き込む(SP148)。
この後、障害FMモジュール11のFMコントローラ42は、かかるFMチップ20内におけるデータの書込み先のブロックのアドレスとして設定されている値を、ステップSP148においてデータを書き込んだブロックの次のアドレスに更新する(SP149)。
続いて障害FMモジュール11のFMコントローラ42は、障害FMチップ20内のすべてのブロックについて上述のようなダイナミックスペアリングを終了したか否かを判断する(SP150)。そしてかかるFMコントローラ42は、この判断において否定結果を得るとステップSP143に戻り、この後かかる障害FMチップ20内のすべてのブロックに対する同様の処理が終了するまでステップSP143〜ステップSP150の処理を繰り返す。
また障害FMモジュール11のFMコントローラ42は、やがて障害FMチップ20内のすべてのブロックに対するダイナミックスペアリングが完了すると、かかる修復データが格納されたスペアFMチップ20を障害FMチップ20に代えて使用する旨のチップ情報をFMアダプタ38に送信する(SP151)。
そしてFMアダプタ38は、このチップ情報を受信すると、これに応じて対応するデータの格納先をかかるスペアFMモジュール11内のかかるFMチップ20に変換するアドレス変換処理を実行する(SP152)。これによりこの第2のダイナミックスペアリング処理が終了する。
(1−2−4)データ書込み処理及びデータ読出し処理
次に、本実施の形態によるストレージシステム1において行なわれる、上述のようなコレクションコピー機能及びダイナミックスペアリング機能を考慮したデータ書込み処理及びデータ読出し処理の具体的な処理内容について説明する。
図27は、図13及び図14について上述したデータ書込み/テーブル更新処理のステップSP9において行われるデータ書込み処理の具体的な内容を示すフローチャートである。
FMモジュール11のFMコントローラ42は、データ書込み/テーブル更新処理のステップSP9に進むとこのデータ書込み処理を開始し、まず、書込み対象のデータの書込み先のFMチップ20が、現在、上述のコレクションコピー機能又はダイナミックスペアリング機能に基づくコピー中のFMチップ20であるか否かを判断する(SP160)。
FMコントローラ42は、この判断において否定結果を得ると、通常のデータ書込み処理を行い(SP161)、この後このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
これに対してFMコントローラ42は、ステップSP160の判断において肯定結果を得ると、そのコピーのコピーモードが第1のコレクションモードであるか否かを判断する(SP162)。そしてFMコントローラ42は、この判断において肯定結果を得ると、自FMモジュール11内のコピー先のFMチップ20における対応するブロックに書込み対象のデータを書き込む(SP163)。そしてFMコントローラ42は、この後、このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
またFMコントローラ42は、ステップSP162の判断において否定結果を得ると、そのコピーのコピーモードが第2のコレクションモードであるか否かを判断する(SP164)。そしてFMコントローラ42は、この判断において肯定結果を得ると、書込み対象のデータを、書き込み先のアドレスを指定したデータ書込み要求と共にコピー先のFMモジュール11に送信する(SP165)。そしてFMコントローラ42は、この後、このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
さらにFMコントローラ42は、ステップSP166の判断において否定結果を得ると、そのコピーのコピーモードが第1のダイナミックスペアリングモードであるか否かを判断する(SP166)。そしてFMコントローラ42は、この判断において肯定結果を得ると、そのとき書込み対象のデータを書き込むべきブロックが、ダイナミックスペアリング処理が完了したブロックであるか否かを判断する(SP167)。
FMコントローラ42は、この判断において肯定結果を得ると、かかる書込み対象のデータを自FMモジュール11内のコピー元のFMチップ20における対応するブロックに書き込む(SP168)。そしてFMコントローラ42は、この後、このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
これに対してFMコントローラ42は、ステップSP167の判断において否定結果を得ると、書込み対象のデータを、書き込み先のアドレスを指定したデータ書込み要求と共にコピー先のFMモジュール11に送信する(SP169)。そしてFMコントローラ42は、この後、このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
さらにFMコントローラ42は、ステップSP166の判断において否定結果を得ると、そのとき書込み対象のデータを書き込むべきブロックが、ダイナミックスペアリング処理が完了したブロックであるか否かを判断する(SP170)。
FMコントローラ42は、この判断において肯定結果を得ると、書込み対象のデータを、書き込み先のアドレスを指定したデータ書込み要求と共にコピー先のFMモジュール11に送信(SP171)、このデータ書込み処理を終了する。そしてFMコントローラ42は、この後、このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
これに対してFMコントローラは、ステップSP170の判断において否定結果を得ると、かかる書込み対象のデータを自FMモジュール11内のコピー先のFMチップにおける対応するブロックに書き込む(SP172)。そしてFMコントローラ42は、この後、このデータ書込み処理を終了して、データ書込み/テーブル更新処理に戻る。
一方、図28は、図15について上述したデータ読出し/テーブル更新処理のステップSP39において行われるデータ読出し処理の具体的な内容を示すフローチャートである。
FMモジュール11のFMコントローラ42は、データ読出し/テーブル更新処理のステップSP39に進むとこのデータ読出し処理を開始し、まず、読出し対象のデータが格納されているFMチップ20が、現在、上述のコレクションコピー機能又はダイナミックスペアリング機能に基づくコピー中のFMチップ20であるか否かを判断する(SP180)。
FMコントローラ42は、この判断において否定結果を得ると、通常のデータ読出し処理を行い(SP181)、この後このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
これに対してFMコントローラ42は、ステップSP180の判断において肯定結果を得ると、そのコピーのコピーモードが第1のコレクションモードであるか否かを判断する(SP182)。そしてFMコントローラ42は、この判断において肯定結果を得ると、そのとき読み出すべきデータが格納されているブロックが、コレクションコピーが完了したブロックであるか否かを判断する(SP183)。
FMコントローラ42は、この判断において否定結果を得ると、図18について上述した第1のコレクションコピー処理のステップSP73及びステップSP74と同様の処理により元のデータを修復する(SP184)。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
これに対してFMコントローラ42は、ステップSP183の判断において肯定結果を得ると、コピー先のFMチップ20からデータを読み出し、当該データをストレージコントローラ31A,31Bに送信する(SP185)。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
またFMコントローラ42は、ステップSP182の判断において否定結果を得ると、そのコピーのコピーモードが第2のコレクションモードであるか否かを判断する(SP186)。そしてFMコントローラ42は、この判断において肯定結果を得ると、この後ステップSP183〜ステップSP185と同様にして読出し対象のデータを取得する(SP187〜SP189)。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
一方、FMコントローラ42は、ステップSP186の判断において否定結果を得ると、そのコピーのコピーモードが第1のダイナミックスペアリングモードであるか否かを判断する(SP10)。そしてFMコントローラ42は、この判断において肯定結果を得ると、そのとき読み出すべきデータが格納されているブロックが、ダイナミックスペアリングによるコピーが完了したブロックであるか否かを判断する(SP11)。
FMコントローラ42は、この判断において肯定結果を得ると、コピー先のFMチップ20からデータを読み出し、当該データをストレージコントローラ31A,31Bに送信する(SP12)。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
これに対してFMコントローラ42は、かかる判断において否定結果を得ると、コピー元のFMチップ(すなわち障害FMチップ)20から読出し対象のデータを読み出すデータ読出し処理を実行する(SP13)。
そしてFMコントローラ42は、かかるデータ読出し処理により読出し対象のデータを読み出せたか否かを判断し(SP14)、肯定結果を得ると、読み出したデータをストレージコントローラ31A,31Bに送信する。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
これに対してFMコントローラ42は、ステップSP14の判断において否定結果を得ると、ステップSP184と同様にして元のデータを修復する(SP15)。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
他方、FMコントローラ42は、ステップSP10の判断において否定結果を得ると、ステップSP11〜ステップSP15と同様にして読出し対象のデータを取得する(SP16〜SP200)。そしてFMコントローラ42は、この後、このデータ読出し処理を終了して、データ読出し/テーブル更新処理に戻る。
なお、図17〜図28について上述したようにFMアダプタ38を経由して転送する読出し対象又は書込み対象のデータのデータフォーマットを図29に示す。
本実施の形態の場合、読出し対象又は書込み対象のデータはこの図29のデータ部81に格納され、このデータ部81の前後にそれぞれヘッダ部80及びフッタ部82が付加される。そしてヘッダ部80には、送信先アドレス情報として、送信先のFMモジュール11が接続されているFCループ25(図5)の識別番号(ループID)と、送信先のFMモジュール11の識別番号(FMモジュールID)とが格納され、送信元アドレス情報として、送信元のFMモジュール11が接続されているFCループ25の識別番号及び送信元のFMモジュール11の識別番号が格納される。
(1−3)本実施の形態の効果
以上の構成において、FMモジュール11のFMコントローラ42は、自FMモジュール11内のFMチップ20に障害が発生した場合、そのFMチップ(障害FMチップ)20に格納されているデータのコピー先とするFMチップ20を決定し、障害FMチップに格納されていたデータをコピー先として決定したFMチップ20にコピーする。
従って、このストレージシステム1では、かかる障害FMチップ20からのデータ移動が障害FMモジュール11又はコピー先のFMモジュール11のFMコントローラ42が主導して行なわれるため、ストレージコントローラ31A,31B(FMアダプタ38)の負荷を増加させることがない。よって、ストレージシステム1におけるデータ入出力処理等の他の処理の性能を劣化させるなどの悪影響を及ぼすことなく、障害が発生したFMチップ20内のデータを他のFMチップ20に移動させることができる。
以上の構成によれば、性能劣化を防止しながら有効に対応し得るストレージシステムを実現できる。
(2)第2の実施の形態
上述の第1の実施の形態においては、上述した第1及び第2のコレクションコピー処理を、ストレージコントローラ31A,31Bから独立して、障害FMモジュール11のFMコントローラ42又はコレクションコピー処理を依頼されたスペアFMモジュール11のFMコントローラ42が主導して行う場合について説明した。
これに対して第2の実施の形態によるストレージシステム90(図1、図6)では、図30に示すように、FMモジュール94のFMコントローラ93が自FMモジュール93内のFMチップ20に障害が発生した場合、FMアダプタ92に対し、障害FMチップ20から同じ又は他のFMモジュール94内のFMチップ20へのコレクションコピーを依頼し、FMアダプタ92が主導してかかるコレクションコピー処理を実行する。
図31は、このようなコレクションコピー処理の依頼を受けたストレージコントローラ91のFMアダプタ92(図30)の処理内容を示すフローチャートである。
FMアダプタ92は、いずれかのFMモジュール(障害FMモジュール)94よりかかるコレクションコピー処理の依頼を受けると、このコレクションコピー処理を開始し、まず、障害FMチップ20に格納されたデータのコピー先となるFMチップ20を決定する(SP210)。
具体的に、FMアダプタ92は、障害FMモジュール94が第1のコレクションコピーモードであるときには、障害FMモジュール94に対して当該障害FMモジュール94内のスペアFMチップ20に関する情報を問い合わせ、スペアFMチップ20が存在するときには、そのうちの1つのスペアFMチップ20をコピー先に決定する。またFMアダプタ92は、障害FMモジュール94が第1のコレクションコピーモードであるときには、自己が保持するスペアFMモジュール情報に基づいて、コピー先のスペアFMモジュール94と、そのスペアFMモジュール94内のFMチップ20とを決定することになる。
続いてFMアダプタ92は、障害FMチップ20と同じRAIDグループ61を構成する他のFMチップ20から読み出したデータに基づいて障害FMチップ20に格納されていたデータを修復し、これをステップSP210において決定したFMチップ20に書き込むべき旨のコレクション書き込み処理を、コピー先のFMモジュール(障害FMモジュール又はスペアFMモジュール)94に要求する(SP211)。
この後FMアダプタ92は、かかる他のFMチップ20を内蔵する各FMモジュール94のFMコントローラ93に対して、当該FMチップ20から対応するデータを読み出し、これをステップSP210において決定したFMモジュール94に転送すべき旨のデータ転送要求を送信する(SP212)。
そしてFMアダプタ92は、この後、かかるコレクションコピー処理が終了すると、対応するデータの格納先を、かかるスペアFMモジュール94内のかかるFMチップ20に変換するアドレス変換処理を実行し(SP213)、この後このコレクションコピー処理を終了する。
このようにこの第2の実施の形態によるストレージシステム90では、かかる第1及び第2のコレクションコピー処理をFMアダプタ92が主導して行うため、FMアダプタ92の処理性能が高く、かかる障害FMモジュール94から他のFMモジュール94へのデータ移動がFMアダプタ92の大きな負荷とならないような場合に、障害FMモジュール94のFMコントローラ93や、スペアFMモジュール94のFMコントローラ93の処理負荷を軽減することができる。かくするにつき、障害FMモジュール94から他のFMモジュール94へのデータ移動に伴う負荷増加に起因するFMモジュール94のデータ読書き性能の劣化を有効に防止することができる。
(3)第3の実施の形態
第1の実施の形態によるストレージシステム1では、FMチップ20単位でのコレクションコピーやダイナミックスペアリングを行っているが、本実施の形態によるストレージシステム100(図1、図6)では、これに加えてさらに、図32に示すように、FMモジュール105内において予め定められた閾値(以下、これを障害チップ数閾値と呼ぶ)を超える数のFMチップ20に障害が発生した場合に、FMモジュール105単位でのコレクションコピーやダイナミックスペアリングを行うことを特徴とする。
図33は、このようなFMモジュール105単位でのコピー処理(以下、これをFMモジュールコピー処理と呼ぶ)に関する障害FMモジュール105のFMコントローラ104の処理内容を示すフローチャートである。
かかるFMコントローラ104は、図10について上述したチップ管理テーブル64に基づいて、自FMモジュール105内の障害FMチップ数を常時監視しており(SP210)、この障害FMチップ数が障害チップ数閾値を超えると、自FMモジュール105内のすべてのデータをコレクションコピー処理又はダイナミックスペアリング処理によりスペアFMモジュール105にコピーするようストレージコントローラ101のFMアダプタ103に依頼し(SP221)、この後、このFMモジュールコピー処理を終了する。
一方、このFMモジュールコピー処理の依頼を受けたFMアダプタ103は、コピー先となるスペアFMモジュール105のFMコントローラ104に対して、かかるFMモジュールコピー処理を依頼してきたFMモジュール(障害FMモジュール)105内のすべてのデータをコレクションコピー処理又はダイナミックスペアリング処理により当該スペアFMモジュール105にコピーすべき指示を与える。またFMアダプタ103は、この際、スペアFMモジュール105のFMコントローラ104に対して、障害FMモジュール105内の各データを復元するために必要なデータの位置情報(障害FMモジュール105と共にRAIDグループを構成する他のFMモジュール105内の対応するデータのアドレス)をスペアFMモジュール11のFMコントローラ104に送信する。
かかる指示を受けたスペアFMモジュール105のFMコントローラ104は、FMアダプタ103から与えられた対応するデータの位置情報に基づいて、FMアダプタ103を介して対応するFMモジュール105のFMコントローラ104に必要なデータの送信を依頼する。そしてスペアFMモジュール105のFMコントローラ104は、この依頼に応じて対応する各FMモジュール105から必要なデータが送信されると、このデータに基づいて障害FMモジュール105に格納されていたデータを復元し、これを自FMモジュール105内のFMチップ20に格納する。そしてスペアFMモジュール105のFMコントローラ104は、このようにして障害FMモジュール105に格納されていたすべてのデータのコレクションコピー処理又はダイナミックスペアリング処理を終了すると、FMモジュールコピー処理を終了する。
このように本実施の形態によるストレージシステム100では、障害FMチップ数が障害FMチップ数閾値を超えたFMモジュール105単位でのコピーをも行うため、その間におけるFMアダプタ103の負荷は増加するものの、データ保護に関してより高い信頼性を得ることができる。
(4)他の実施の形態
なお上述の第1〜第3実施の形態においては、ストレージコントローラ31A,31BのFMアダプタ38に対してFMモジュール11を直列かつループ状に接続するようにした場合について述べたが、本発明はこれに限らず、例えば図6との対応部分に同一符号を付した図34に示すように、エキスパンダ111を用いて各FMモジュール11をストレージコントローラ110のFMアダプタ38に対して並列的に接続するようにしてもよい。
またこの場合において、図35に示すように、記憶制御装置120や各記憶装置121内にもエキスパンダ122を配置し、これらのエキスパンダ122を介して記憶制御装置120及び各記憶装置121間並びに記憶制御装置120及び各記憶装置121内の各FMモジュール11間を接続するようにしてもよい。
さらに上述の第1〜第3の実施の形態においては、記憶制御装置2や各記憶装置3にFMモジュール11のみを搭載するようにした場合について述べたが、本発明はこれに限らず、例えば図6との対応部分に同一符号を付した図36に示すように、FMモジュール11及びハードディスクドライブ130を混載するようにしてもよい。この場合において、例えばこの図36に示すように、どの記憶デバイスがFMモジュール11でどの記憶デバイスがハードディスクドライブ130であるかを管理装置39において確認できるようにしておけば、これらFMモジュール11及びハードディスクドライブ130の管理を容易化することができる。
さらに上述の第1〜第3の実施の形態においては、不揮発性メモリとしてフラッシュメモリを適用するようにした場合について述べたが、本発明はこれに限らず、この他種々の不揮発性メモリを広く適用することができる。
さらに上述の第3の実施の形態においては、FMモジュール105内において障害チップ数閾値を超える数のFMチップ20に障害が発生した場合に、FMモジュール105単位でのコレクションコピーやダイナミックスペアリングを行うようにした場合について述べたが、本発明はこれに限らず、例えばストレージコントローラ101のFMアダプタ103及びFMモジュール105間のリンク障害が発生した場合にも同様にFMモジュール105単位でのコレクションコピーやダイナミックスペアリングを行うようにしても良い。この場合は、FMアダプタ103が各FMモジュール105との間のリンク状態を監視し、リンク障害を検知したときに、上述と同様にしてコレクションコピーやダイナミックスペアリングを行なわせるようすれば良い。この場合において、このようなコレクションコピー処理やダイナミックスペアリング処理については、スペアFMモジュール105のFMコントローラ104が主導して行なっても良いし、FMアダプタ103が主導して行なっても良い。これは第3の実施の形態においても同様である。
本発明は、記憶デバイスとしてフラッシュメモリを採用した種々の構成のストレージシステムに広く適用することができる。
本実施の形態によるストレージシステムの外観構成を示す斜視図である。 (A)は記憶装置の正面構成を示す正面図、(B)は記憶装置の内部構成を示す側面からの透視図、(C)は記憶装置の背面構成を示す背面図である。 (A)は本実施の形態によるストレージシステムの結線構成を示す概念図であり、(B)はPBCボードを介したFMモジュール間の結線構成を示す概念図である。 (A)は本実施の形態によるFMモジュールの内部構成を示す斜視図であり、(B)はその変形例を示す略線図である。 FCループの説明に供する概念図である。 本実施の形態によるストレージシステムの内部構成を示すブロック図である。 FMモジュールのデータ入出力処理部の構成を示すブロック図である。 論理ユニット、LDEV及びFMチップが提供する記憶領域間の対応関係の説明に供する概念図である。 第1のアドレス変換テーブルを示す概念図である。 第2のアドレス変換テーブルを示す概念図である。 チップ管理テーブルを示す概念図である。 ブロック管理テーブルを示す概念図である。 データ書込み/テーブル更新処理の処理手順を示すフローチャートである。 データ書込み/テーブル更新処理の処理手順を示すフローチャートである。 データ読出し/テーブル更新処理の処理手順を示すフローチャートである。 障害FMチップデータコピー処理の処理手順を示すフローチャートである。 第1のコレクションコピー処理の概要を示す概念図である。 第1のコレクションコピー処理の流れを示すフローチャートである。 第2のコレクションコピー処理の概要を示す概念図である。 第2のコレクションコピー処理の流れを示すフローチャートである。 第2のコレクションコピー処理の変形例を示すフローチャートである。 第1のダイナミックスペアリング処理の概要を示す概念図である。 第1のダイナミックスペアリング処理の流れを示すフローチャートである。 第2のダイナミックスペアリング処理の概要を示す概念図である。 第2のダイナミックスペアリング処理の流れを示すフローチャートである。 第2のダイナミックスペアリング処理の変形例を示すフローチャートである。 データ書込み処理の処理手順を示すフローチャートである。 データ読出し処理の処理手順を示すフローチャートである。 FMコントローラから書込み対象のデータをコピー先のFMモジュールに送信する際のデータフォーマットの説明に供する概念図である。 第2の実施の形態によるコレクションコピー処理の概要を示す概念図である。 図30のコレクションコピー処理に関するマイクロプロセッサの処理内容を示すフローチャートである。 第3の実施の形態によるFMモジュール単位でのコピー処理の概要を示す概念図である。 図32のコピー処理に関するFMコントローラの処理内容を示すフローチャートである。 他の実施の形態の説明に供するブロック図である。 他の実施の形態の説明に供するブロック図である。 他の実施の形態の説明に供するブロック図である。
符号の説明
1,90,100……ストレージシステム、2,110……記憶制御装置、3,111……記憶装置、11……FMモジュール、20……FMチップ、30……ホスト、31A,31B……ストレージコントローラ、36……ローカルメモリ、37……マイクロプロセッサ、38……FMアダプタ、40……データ入出力制御部、42……FMコントローラ、61……RAIDグループ、62……LDEV、63……論理ユニット、64,65……アドレス変換テーブル、70……チップ管理テーブル、71……ブロック管理テーブル、111,122……エキスパンダ、130……ハードディスクドライブ。

Claims (9)

  1. ストレージシステムにおいて、
    データを読み書きするための記憶領域を計算機にそれぞれ提供する1又は複数の不揮発性メモリチップと、前記不揮発性メモリチップを制御するメモリコントローラと、を有する相互に接続された複数のメモリモジュールと、
    前記計算機から各前記メモリモジュールに対するデータの読み書きを制御するストレージコントローラと、
    を備え、
    前記メモリモジュール内のメモリコントローラは、
    自メモリモジュール内の前記不揮発性メモリチップに障害が発生したときに、当該不揮発性メモリに格納されているデータのコピー先として他の前記メモリモジュールが有する前記不揮発性メモリチップを決定し、
    前記障害が発生した不揮発性メモリチップを有するメモリモジュール内のメモリコントローラ又は前記決定されたコピー先の不揮発性メモリチップを有するメモリモジュール内のメモリコントローラは、
    前記障害が発生した前記不揮発性メモリチップに格納されていた前記データを読み出し、前記読み出したデータを前記コピー先として決定した前記不揮発性メモリチップにコピーする
    ことを特徴とするストレージシステム。
  2. 前記ストレージコントローラは、ハードディスクドライブと接続するためのアダプタを備え、
    各前記メモリモジュールは、前記ストレージコントローラの前記アダプタと接続するためのインタフェースを備える
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記メモリモジュールは、
    前記不揮発性メモリチップ内のデータ書込み回数又はエラー回数が当該データ書込み回数又はエラー回数についてそれぞれ予め定められた閾値を超えたブロックを登録し、登録したブロック数が当該ブロック数について予め定められた閾値を超えた前記不揮発性メモリを、障害を有する不揮発性メモリとして登録する
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記メモリモジュールは、
    自メモリモジュール内に存在するスペアの前記不揮発性メモリチップを管理するための第1の管理情報を保持し、
    前記メモリモジュール内のメモリコントローラは、
    前記障害が発生した不揮発性メモリに格納されているデータのコピー先として他のメモリモジュールが有する前記不揮発性メモリチップを前記ストレージコントローラから取得したスペアのメモリモジュールに関する情報に基づいて決定し、
    前記障害が発生した不揮発性メモリチップを有するメモリモジュール内のメモリコントローラ又は前記決定されたコピー先の不揮発性メモリチップを有するメモリモジュール内のメモリコントローラは、
    前記障害が発生した不揮発性メモリに格納されているデータを、必要に応じて修復しながら読み出し、前記読み出したデータを前記コピー先として決定した前記不揮発性メモリチップにコピーする
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記ストレージコントローラによって制御される前記計算機から各前記メモリモジュールへのデータは、同じグループを構成する複数の前記不揮発性メモリチップ内に、冗長性をもたせてかつ分離されて格納され、
    前記メモリモジュールは、
    自メモリモジュール内の各前記不揮発性メモリチップが属するグループを管理するための第2の管理情報を保持し、
    前記メモリモジュール内のメモリコントローラは、いずれかの前記不揮発性メモリチップに障害が発生したときに、前記第2の管理情報に基づいて、当該不揮発性メモリチップと同じ前記グループを構成する各前記不揮発性メモリから必要なデータを取得し、取得した前記データに基づいて、前記障害が発生した不揮発性メモリチップに格納されていたデータを修復する
    ことを特徴とする請求項4に記載のストレージシステム。
  6. ストレージシステムの制御方法において、
    前記ストレージシステムは、
    データを読み書きするための記憶領域を計算機にそれぞれ提供する1又は複数の不揮発性メモリチップと、前記不揮発性メモリチップを制御するメモリコントローラと、を有する相互に接続された複数のメモリモジュールと、
    前記計算機から各前記メモリモジュールに対するデータの読み書きを制御するストレージコントローラと、
    を有し、
    前記メモリモジュール内のメモリコントローラが、自メモリモジュール内の前記不揮発性メモリチップに障害が発生したときに、当該不揮発性メモリに格納されているデータのコピー先として他の前記メモリモジュールが有する前記不揮発性メモリチップを決定する第1のステップと、
    前記障害が発生した不揮発性メモリチップを有するメモリモジュール内のメモリコントローラ又は前記第1のステップにより決定されたコピー先の不揮発性メモリチップを有するメモリモジュール内のメモリコントローラが、前記障害が発生した前記不揮発性メモリチップに格納されていた前記データを読み出し、前記読み出したデータを前記コピー先として決定した前記不揮発性メモリチップにコピーする第2のステップと、
    を備えることを特徴とするストレージシステムの制御方法。
  7. 前記メモリモジュールは、
    前記不揮発性メモリチップ内のデータ書込み回数又はエラー回数が当該データ書込み回数又はエラー回数についてそれぞれ予め定められた閾値を超えたブロックを登録し、登録したブロック数が当該ブロック数について予め定められた閾値を超えた前記不揮発性メモリを、障害を有する不揮発性メモリとして登録する
    ことを特徴とする請求項6に記載のストレージシステムの制御方法。
  8. 前記メモリモジュールは、
    自メモリモジュール内に存在するスペアの前記不揮発性メモリチップを管理するための第1の管理情報を保持し、
    前記第1のステップでは、
    前記メモリモジュール内のメモリコントローラは、前記障害が発生した不揮発性メモリに格納されているデータのコピー先として他のメモリモジュールが有する前記他の不揮発性メモリチップを前記ストレージコントローラから取得したスペアのメモリモジュールに関する情報に基づいて決定し、
    前記第2のステップでは、
    前記障害が発生した不揮発性メモリチップを有するメモリモジュール内のメモリコントローラ又は前記決定されたコピー先の不揮発性メモリチップを有するメモリモジュール内のメモリコントローラは、前記障害が発生した不揮発性メモリに格納されているデータを、必要に応じて修復しながら読み出し、前記読み出したデータを前記コピー先として決定した前記不揮発性メモリチップにコピーする
    ことを特徴とする請求項6に記載のストレージシステムの制御方法。
  9. 前記ストレージコントローラによって制御される前記計算機から各前記メモリモジュールへのデータは、同じグループを構成する複数の前記不揮発性メモリチップ内に、冗長性をもたせてかつ分離されて格納され、
    前記メモリモジュールは、
    自メモリモジュール内の各前記不揮発性メモリチップが属するグループを管理するための第3の管理情報を保持し、
    前記第2のステップでは、
    前記メモリモジュール内のメモリコントローラは、いずれかの前記不揮発性メモリチップに障害が発生したときに、前記第3の管理情報に基づいて、当該不揮発性メモリチップと同じ前記グループを構成する各前記不揮発性メモリから必要なデータを取得し、取得した前記データに基づいて、前記障害が発生した不揮発性メモリチップに格納されていたデータを修復する
    ことを特徴とする請求項8に記載のストレージシステムの制御方法。
JP2007026444A 2007-02-06 2007-02-06 ストレージシステム及びその制御方法 Expired - Fee Related JP5014821B2 (ja)

Priority Applications (6)

Application Number Priority Date Filing Date Title
JP2007026444A JP5014821B2 (ja) 2007-02-06 2007-02-06 ストレージシステム及びその制御方法
EP10003421A EP2207095B1 (en) 2007-02-06 2008-01-09 Storage system and control method thereof
DE200860001171 DE602008001171D1 (de) 2007-02-06 2008-01-09 Speichersystem und Steuerungsverfahren dafür
EP20080250092 EP1956485B1 (en) 2007-02-06 2008-01-09 Storage system and control method thereof
US12/007,330 US8117376B2 (en) 2007-02-06 2008-01-09 Storage system and control method thereof
US13/363,900 US8930611B2 (en) 2007-02-06 2012-02-01 Storage system and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007026444A JP5014821B2 (ja) 2007-02-06 2007-02-06 ストレージシステム及びその制御方法

Publications (2)

Publication Number Publication Date
JP2008191966A JP2008191966A (ja) 2008-08-21
JP5014821B2 true JP5014821B2 (ja) 2012-08-29

Family

ID=39387150

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007026444A Expired - Fee Related JP5014821B2 (ja) 2007-02-06 2007-02-06 ストレージシステム及びその制御方法

Country Status (4)

Country Link
US (2) US8117376B2 (ja)
EP (2) EP1956485B1 (ja)
JP (1) JP5014821B2 (ja)
DE (1) DE602008001171D1 (ja)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8959307B1 (en) 2007-11-16 2015-02-17 Bitmicro Networks, Inc. Reduced latency memory read transactions in storage devices
JP5032371B2 (ja) 2008-03-01 2012-09-26 株式会社東芝 メモリシステム
US8327224B2 (en) * 2009-04-16 2012-12-04 Micron Technology, Inc. Data recovery in a solid state storage system
CN102449607B (zh) 2009-07-22 2015-05-27 株式会社日立制作所 具有多个闪存封装的存储系统
US8665601B1 (en) 2009-09-04 2014-03-04 Bitmicro Networks, Inc. Solid state drive with improved enclosure assembly
US8447908B2 (en) 2009-09-07 2013-05-21 Bitmicro Networks, Inc. Multilevel memory bus system for solid-state mass storage
US8560804B2 (en) 2009-09-14 2013-10-15 Bitmicro Networks, Inc. Reducing erase cycles in an electronic storage device that uses at least one erase-limited memory device
KR101626084B1 (ko) 2009-11-25 2016-06-01 삼성전자주식회사 멀티 칩 메모리 시스템 및 그것의 데이터 전송 방법
JP5331018B2 (ja) * 2010-01-22 2013-10-30 株式会社日立製作所 ソリッド・ステート・ドライブ装置およびミラー構成再構成方法
US8438429B2 (en) 2010-12-01 2013-05-07 Hitachi, Ltd. Storage control apparatus and storage control method
US9372755B1 (en) 2011-10-05 2016-06-21 Bitmicro Networks, Inc. Adaptive power cycle sequences for data recovery
US9043669B1 (en) 2012-05-18 2015-05-26 Bitmicro Networks, Inc. Distributed ECC engine for storage media
JP6039699B2 (ja) 2012-07-23 2016-12-07 株式会社日立製作所 ストレージシステム及びデータ管理方法
US9111648B2 (en) 2012-08-28 2015-08-18 Apple Inc. Redundancy schemes for non-volatile memory based on physical memory layout
US20140089729A1 (en) * 2012-09-24 2014-03-27 Hitachi, Ltd. Storage system and storage control method
JP5949408B2 (ja) 2012-10-02 2016-07-06 富士通株式会社 情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム
EP2909836A1 (en) * 2012-10-18 2015-08-26 Hitachi, Ltd. Storage apparatus and storage controller of said storage apparatus
WO2014087508A1 (ja) * 2012-12-05 2014-06-12 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US9423457B2 (en) 2013-03-14 2016-08-23 Bitmicro Networks, Inc. Self-test solution for delay locked loops
US9858084B2 (en) 2013-03-15 2018-01-02 Bitmicro Networks, Inc. Copying of power-on reset sequencer descriptor from nonvolatile memory to random access memory
US9501436B1 (en) 2013-03-15 2016-11-22 Bitmicro Networks, Inc. Multi-level message passing descriptor
US9304902B2 (en) 2013-03-15 2016-04-05 Saratoga Speed, Inc. Network storage system using flash storage
US9798688B1 (en) 2013-03-15 2017-10-24 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US9430386B2 (en) 2013-03-15 2016-08-30 Bitmicro Networks, Inc. Multi-leveled cache management in a hybrid storage system
US9734067B1 (en) 2013-03-15 2017-08-15 Bitmicro Networks, Inc. Write buffering
US9720603B1 (en) 2013-03-15 2017-08-01 Bitmicro Networks, Inc. IOC to IOC distributed caching architecture
US9400617B2 (en) 2013-03-15 2016-07-26 Bitmicro Networks, Inc. Hardware-assisted DMA transfer with dependency table configured to permit-in parallel-data drain from cache without processor intervention when filled or drained
US9672178B1 (en) 2013-03-15 2017-06-06 Bitmicro Networks, Inc. Bit-mapped DMA transfer with dependency table configured to monitor status so that a processor is not rendered as a bottleneck in a system
US9842024B1 (en) 2013-03-15 2017-12-12 Bitmicro Networks, Inc. Flash electronic disk with RAID controller
US9916213B1 (en) 2013-03-15 2018-03-13 Bitmicro Networks, Inc. Bus arbitration with routing and failover mechanism
US10489318B1 (en) 2013-03-15 2019-11-26 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
US9875205B1 (en) 2013-03-15 2018-01-23 Bitmicro Networks, Inc. Network of memory systems
US9934045B1 (en) 2013-03-15 2018-04-03 Bitmicro Networks, Inc. Embedded system boot from a storage device
US9971524B1 (en) 2013-03-15 2018-05-15 Bitmicro Networks, Inc. Scatter-gather approach for parallel data transfer in a mass storage system
JP5768118B2 (ja) * 2013-12-11 2015-08-26 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
US9973424B1 (en) 2013-12-31 2018-05-15 Sanmina Corporation Storage system with flow based services for flash storage
US9811461B1 (en) 2014-04-17 2017-11-07 Bitmicro Networks, Inc. Data storage system
US10055150B1 (en) 2014-04-17 2018-08-21 Bitmicro Networks, Inc. Writing volatile scattered memory metadata to flash device
US10025736B1 (en) 2014-04-17 2018-07-17 Bitmicro Networks, Inc. Exchange message protocol message transmission between two devices
US9952991B1 (en) 2014-04-17 2018-04-24 Bitmicro Networks, Inc. Systematic method on queuing of descriptors for multiple flash intelligent DMA engine operation
US10042792B1 (en) 2014-04-17 2018-08-07 Bitmicro Networks, Inc. Method for transferring and receiving frames across PCI express bus for SSD device
US10078604B1 (en) 2014-04-17 2018-09-18 Bitmicro Networks, Inc. Interrupt coalescing
US9608936B1 (en) 2014-07-03 2017-03-28 Sanmina Corporation Network system with offload services for flash storage
US9672180B1 (en) * 2014-08-06 2017-06-06 Sanmina Corporation Cache memory management system and method
US9542118B1 (en) 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9715428B1 (en) 2014-09-24 2017-07-25 Sanmina Corporation System and method for cache data recovery
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US10095423B2 (en) 2015-09-30 2018-10-09 Toshiba Memory Corporation Storage system that tracks mapping to a memory module to be detached therefrom
US10007432B2 (en) * 2015-10-13 2018-06-26 Dell Products, L.P. System and method for replacing storage devices
JP2017151911A (ja) * 2016-02-26 2017-08-31 東芝メモリ株式会社 半導体装置及び制御方法
US10019314B2 (en) 2016-04-27 2018-07-10 Silicon Motion Inc. Flash memory apparatus and storage management method for flash memory
CN111679787B (zh) 2016-04-27 2023-07-18 慧荣科技股份有限公司 闪存装置、闪存控制器及闪存存储管理方法
CN111951855B (zh) * 2016-04-27 2022-05-10 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
US10552050B1 (en) 2017-04-07 2020-02-04 Bitmicro Llc Multi-dimensional computer storage system
CN110187833A (zh) * 2019-05-22 2019-08-30 西安微电子技术研究所 一种芯片级的存储阵列的冗余方法
JP2021002108A (ja) * 2019-06-20 2021-01-07 株式会社日立製作所 ストレージシステム
US11150812B2 (en) 2019-08-20 2021-10-19 Micron Technology, Inc. Predictive memory management
CN112835536B (zh) * 2021-03-10 2023-08-29 群联电子股份有限公司 存储器控制方法、存储器存储装置及存储器控制电路单元

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5267242A (en) 1991-09-05 1993-11-30 International Business Machines Corporation Method and apparatus for substituting spare memory chip for malfunctioning memory chip with scrubbing
JP3301047B2 (ja) 1993-09-16 2002-07-15 株式会社日立製作所 半導体メモリシステム
JPH07152502A (ja) * 1993-11-30 1995-06-16 Hitachi Ltd 半導体ファイルサブシステム
JP3561002B2 (ja) 1994-05-18 2004-09-02 富士通株式会社 ディスク装置
DE19540915A1 (de) * 1994-11-10 1996-05-15 Raymond Engineering Redundante Anordnung von Festkörper-Speicherbausteinen
JP3589033B2 (ja) * 1998-06-25 2004-11-17 東京エレクトロンデバイス株式会社 フラッシュメモリシステム
JP2000207137A (ja) * 1999-01-12 2000-07-28 Kowa Co 情報記憶装置
US6480982B1 (en) 1999-06-04 2002-11-12 International Business Machines Corporation Computer RAM memory system with enhanced scrubbing and sparing
JP4461511B2 (ja) 1999-06-09 2010-05-12 株式会社日立製作所 ディスクアレイ装置及びディスク装置へのデータ読み出し/書き込み方式
US20020091965A1 (en) 2000-12-22 2002-07-11 Mark Moshayedi System and method for early detection of impending failure of a data storage system
JP4818812B2 (ja) 2006-05-31 2011-11-16 株式会社日立製作所 フラッシュメモリストレージシステム
JP3928500B2 (ja) * 2002-02-26 2007-06-13 株式会社日立製作所 メモリ装置
JP2004021811A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
US20050011154A1 (en) * 2003-07-16 2005-01-20 Kwon Kim Roof systems and panel clip arrangements therefor
JP2004213684A (ja) * 2004-02-17 2004-07-29 Fujitsu Ltd 半導体ディスク装置
JP2006227964A (ja) * 2005-02-18 2006-08-31 Fujitsu Ltd ストレージシステム、処理方法及びプログラム
US7711989B2 (en) * 2005-04-01 2010-05-04 Dot Hill Systems Corporation Storage system with automatic redundant code component failure detection, notification, and repair
US20070014462A1 (en) 2005-07-13 2007-01-18 Mikael Rousson Constrained surface evolutions for prostate and bladder segmentation in CT images

Also Published As

Publication number Publication date
US8117376B2 (en) 2012-02-14
EP1956485A1 (en) 2008-08-13
EP1956485B1 (en) 2010-05-12
JP2008191966A (ja) 2008-08-21
EP2207095A1 (en) 2010-07-14
US20080189466A1 (en) 2008-08-07
US20120131270A1 (en) 2012-05-24
EP2207095B1 (en) 2011-09-28
US8930611B2 (en) 2015-01-06
DE602008001171D1 (de) 2010-06-24

Similar Documents

Publication Publication Date Title
JP5014821B2 (ja) ストレージシステム及びその制御方法
JP5124217B2 (ja) ストレージ装置
JP4933211B2 (ja) ストレージ装置、制御装置及び制御方法
US7984325B2 (en) Storage control device, data recovery device, and storage system
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
JP5963228B2 (ja) ストレージシステム及びデータバックアップ方法
US20150143027A1 (en) Solid state drive with raid functions
US8180952B2 (en) Storage system and data guarantee method
JP2008181416A (ja) 記憶システム及びデータ管理方法
US8438429B2 (en) Storage control apparatus and storage control method
US20100312963A1 (en) Storage array assist architecture
JP2008276379A (ja) 記憶システム及びパス切替え方法
EP1939746A2 (en) Storage system and data guarantee method
JP4857055B2 (ja) 記憶システム及びその制御方法並びに記憶制御装置
JP4836014B2 (ja) ディスクアレイ装置及び物理ディスクの復元方法
JP5386593B2 (ja) ストレージ装置及びデータ転送方法
JP2009294901A (ja) ストレージ装置及び障害復旧方法
WO2016118125A1 (en) Virtual storage
JP2007065788A (ja) ディスクアレイ装置及びその制御方法並びにプログラム
EP1895398A2 (en) Storage system and data management setting method
WO2012137256A1 (en) Disk array apparatus and control method thereof
JP5153392B2 (ja) 記憶制御装置及び方法
US12019917B2 (en) Peer RAID control among peer data storage devices
US20230418518A1 (en) Peer RAID Control Among Peer Data Storage Devices
US20240143518A1 (en) Using Control Bus Communication to Accelerate Link Negotiation

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20090220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090812

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111007

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111206

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120228

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120416

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

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120606

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

Free format text: PAYMENT UNTIL: 20150615

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5014821

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