JP6055544B2 - ストレージ装置およびストレージ装置制御方法 - Google Patents

ストレージ装置およびストレージ装置制御方法 Download PDF

Info

Publication number
JP6055544B2
JP6055544B2 JP2015521184A JP2015521184A JP6055544B2 JP 6055544 B2 JP6055544 B2 JP 6055544B2 JP 2015521184 A JP2015521184 A JP 2015521184A JP 2015521184 A JP2015521184 A JP 2015521184A JP 6055544 B2 JP6055544 B2 JP 6055544B2
Authority
JP
Japan
Prior art keywords
storage
area
storage device
logical
failure
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.)
Active
Application number
JP2015521184A
Other languages
English (en)
Other versions
JPWO2014196000A1 (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
Application granted granted Critical
Publication of JP6055544B2 publication Critical patent/JP6055544B2/ja
Publication of JPWO2014196000A1 publication Critical patent/JPWO2014196000A1/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0653Monitoring storage devices or systems
    • 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
    • G06F3/0689Disk arrays, e.g. RAID, JBOD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time

Description

本発明は、不揮発性半導体メモリを有するストレージ装置に関する。
近年、企業で扱われるデータ量の増大に伴い、ストレージ装置は多数の記憶デバイスを備え、記憶デバイスの容量も年々増大している。記憶デバイスとして、一般にHDD(Hard Disk Drive)が搭載されているが、近年、HDDに代わって、記憶媒体として不揮発性半導体メモリ(例えば、フラッシュメモリ)を有する記憶デバイス(例えばSSD:Solid State Drive)が注目されている。SSDは、HDDに比べて高価であるがI/O処理が非常に高速である。
フラッシュメモリでは、物理的な記憶領域は、ブロックと呼ばれる単位で管理されており、データの消去はこのブロック単位で行われる。ブロックを消去可能な回数には上限があり、消去回数が増加すると、フラッシュメモリにデータが書き込めなくなる場合や、フラッシュメモリに書き込まれたデータのエラー発生率が増大する場合がある。つまり、フラッシュメモリには寿命があり、多数のフラッシュメモリを有するSSDにも寿命がある。また、フラッシュメモリでは、一般にダイやチップなどの単位で品質にばらつきが生じる。品質が悪いダイは、所定の消去回数未満でも障害により使用できなくなる。複数のダイにこのような障害が発生すると、ユーザデータを格納する記憶領域を確保できなくなり、記憶デバイスを閉塞せざるを得なくなる。このように、所定の期間よりも早期にSSDが使用不能になると、交換の頻度が増加し、SSDの購入や保守のためのコストが発生する可能性がある。
例えば、特許文献1には、SSD内のブロックに障害が発生した場合のデータ復旧技術が開示されている。複数のSSDを有するストレージ装置において、或るSSD内のブロックの障害が検出されると、障害ブロックを含むSSDの全データを別のSSDにリビルドする技術が知られている。
米国特許第8041991号明細書
特許文献1の技術では、記憶デバイス内の不揮発性半導体メモリの一部に障害が発生した場合、他に品質が良く使用可能な部分(メモリのダイやチップ)が多数存在していても、その記憶デバイスは閉塞されるため、その記憶デバイスを交換する必要があった。記憶デバイスが大容量化すると、部分的に障害が発生しても依然として使用可能な容量も大きいことになる。このため、一部の障害に対して記憶デバイス全体を閉塞すると、無駄が多い。
上記課題を解決するために、本発明の一態様であるストレージ装置は、複数の記憶デバイスと、前記複数の記憶デバイス及びホスト計算機に接続され、前記ホスト計算機に仮想ボリュームを提供するストレージコントローラと、を備える。前記複数の記憶デバイスの夫々は、複数の不揮発性半導体メモリと、前記複数の不揮発性半導体メモリに部分的に発生する障害を管理し、前記複数の不揮発性半導体メモリに関連付けられた論理記憶領域を前記ストレージコントローラに提供するデバイスコントローラと、を含む。前記ストレージコントローラは、前記複数の記憶デバイスの夫々に対して、前記論理記憶領域のうち前記ストレージコントローラにより使用可能な容量である使用可能容量を記憶し、前記複数の記憶デバイスの中の第1記憶デバイスグループを使用して第1RAIDグループを構成し、前記第1RAIDグループの中の論理記憶領域を複数のページに分割し、前記ホスト計算機から前記仮想ボリュームへのライト要求に基づいて前記第1RAIDグループの中の前記複数のページの1つを前記仮想ボリュームに割り当てる。前記デバイスコントローラは、前記複数の不揮発性半導体メモリ内の部分的な障害を検出し、前記検出された障害を示す障害情報を前記ストレージコントローラへ送信する。前記ストレージコントローラは、前記第1記憶デバイスグループの中の第1記憶デバイスから、前記第1記憶デバイス内の障害を示す第1障害情報を受信した場合、前記第1障害情報に基づいて前記第1記憶デバイスの使用可能容量を削減する。
本発明の一態様によれば、記憶デバイス内の不揮発性半導体メモリの一部に障害が発生した場合に、格納可能なデータ容量を削減することでその記憶デバイス全体の閉塞を防ぎ、記憶デバイスを継続して使用することができる。
本発明の実施例1の計算機システムの構成を示す。 FMPK300の構成を示す。 ストレージシステム100におけるRG(RAID Group)及びLU(Logical Unit)の構成を示す。 ストレージシステム100におけるLU及びVVOL(Virtual Volume:仮想ボリューム)の構成を示す。 ストレージコントローラ400のメモリ420に格納される情報を示す。 RG管理テーブル620を示す。 LU管理テーブル630を示す。 仮想ページマッピング管理テーブル650を示す。 実ページ状態管理テーブル660を示す。 PDEV管理テーブル640を示す。 FMPK300の論理ページ及び物理ページの構成を示す。 FM−CTL500のメモリ520に格納される情報を示す。 ページマッピング管理テーブル720を示す。 FMPK状態管理テーブル730を示す。 障害アドレスリスト750を示す。 現在ユーザ容量取得処理を示す。 RG作成処理を示す。 FM−CTL500によるヘルスチェック処理を示す。 FM−CTL500による全ページチェック処理を示す。 定期監視処理を示す。 データ回復処理を示す。 容量縮退処理を示す。 データ移動処理を示す。 実ページ張替え処理を示す。 実ページ張替え処理を模式的に示す。 FMPK容量変更処理を示す。 容量縮退処理を模式的に示す。 実施例2のストレージコントローラ400のメモリ420に格納される情報を示す。 実施例2のPDEV管理テーブル640bを示す。 PDEV交替領域管理テーブル670を示す。 実施例2の定期監視処理を示す。 交替領域判定処理を示す。 実施例2の交替領域の登録及び割り当てを模式的に示す。 実施例3の交替領域の割り当てを模式的に示す。 実施例4のRAID構成の変更を模式的に示す。
実施形態の概要を説明する。本実施形態では、記憶デバイス内の不揮発性半導体メモリにダイ等の単位で障害が発生した場合に、記憶デバイス全体を閉塞せずにダイ単位で閉塞し、ユーザデータを格納する容量を削減して記憶デバイスを継続して使用する。ストレージコントローラは記憶デバイスに格納可能なユーザデータの容量の変化を認識する必要があるため、記憶デバイスは容量の変化をストレージコントローラに通知する。そして、ストレージコントローラは、障害箇所のデータの復旧や削減した容量分のデータを他の記憶デバイスに移動させる等の処理を行う。本実施形態の詳細は以下に説明する。
以下、本実施例の計算機システムの構成について説明する。
図1は、本発明の実施例1の計算機システムの構成を示す。
この計算機システムは、ストレージシステム(ストレージ装置)100と、複数のホスト計算機200とを有する。複数のホスト計算機200の夫々は、SAN(Storage Area Network)210を介して、ストレージシステム100に接続されている。計算機システムは、一つ以上のホスト計算機200を有していても良い。
ストレージシステム100は、二つのストレージコントローラ(DKC:Disk Controller)400と、複数のFMPK(Flash Memory Package)300とを有する。ストレージコントローラ400は例えば、複数の記憶デバイスをRAIDグループとして制御するコントローラである。二つのストレージコントローラ400は、冗長化されており、通常時には一方のストレージコントローラ400がストレージシステム100を制御し、そのストレージコントローラ400の障害発生時に他方のストレージコントローラ400がストレージシステム100の制御を継続させる。FMPK300に加えて、SAS(Serial Attached Small Computer System Interface)−HDD(Hard Disk Drive)、SATA(Serial Advanced Technology Attachment)−HDD等、他の記憶デバイスが用いられても良い。以後の説明及び図面において、このような記憶デバイスをPDEV(Physical Device)と呼ぶことがある。
ストレージコントローラ400は、ホスト計算機200に仮想ボリュームを提供する。ストレージコントローラ400は、CPU(Central Processing Unit)410と、メモリ420と、ホストI/F(Interface)430と、ディスクI/F440とを有する。ストレージコントローラ400内の各部は、バスを介して互いに接続されている。メモリ420は、ストレージシステム100を制御するためのプログラムを格納する。また、メモリ420は、記憶デバイスから読み出されたデータや記憶デバイスに書き込まれるデータを一時的に格納するキャッシュメモリとしての領域を有する。CPU410は、メモリ420に格納されたプログラムに従ってストレージシステム100を制御する。ホストI/F430は、SAN210に接続され、ホスト計算機200とのデータの送受信を行う。ディスクI/F440は、FMPK300に接続され、FMPK300とのデータの送受信を行う。
図2は、FMPK300の構成を示す。
FMPK300は、FM−CTL(Flash Memory Controller、デバイスコントローラ)500と、複数のメモリモジュール310とを有する。FM−CTL500は、CPU510と、メモリ520と、上位I/F530と、複数のFM I/F540とを有する。FM−CTL500内の各部は、バスを介して互いに接続されている。メモリ520は、FMPK300を制御するためのプログラムを格納する。また、メモリ520は、FMチップから読み出されたデータやFMチップに書き込まれるデータを格納する。CPU510は、メモリ520に格納されたプログラムに従ってFMPK300を制御する。
一つのFM I/F540には、一つのメモリモジュール310が接続されている。FM I/F540は、複数のDMA(Direct Memory Access)コントローラ541を有する。メモリモジュール310は、複数のスイッチ(SW)560と、複数のFMチップ570とを有する。一つのDMAコントローラ541には、一つのスイッチ560が接続されている。一つのスイッチ560には、複数のFMチップ570が接続されている。FMチップ570は、複数のダイ(Die)571を有する。ダイ571は、複数のブロックを有する。DMAコントローラ541は、FMチップ570との通信を制御する。以後の説明及び図面において、FMチップ570を単にチップと呼ぶことがあり、DMAコントローラ541を単にDMAと呼ぶことがある。
チップにおいては、ページ、ブロック、ダイ、プレーン等の単位で障害が発生する可能性がある。障害の発生率は、フラッシュメモリの品質によって異なりうる。また、DMAが故障すれば、DMA単位でチップにアクセスすることができなくなる。ページ、ブロック、プレーン、ダイ、チップ、DMAに障害が発生した場合、物理記憶領域の容量から障害部位毎に所定の容量が削減される。本実施例では、各ページの容量、各ブロックの容量、各ダイの容量、各チップの容量、各DMAに接続されるチップ数は等しいものとする。ただし、それぞれの容量が異なっていてもよい。
FM−CTL500は、FMPK300内の論理アドレス空間をストレージコントローラ400に提供する。論理アドレス空間には、FMPK300内の物理記憶領域が対応付けられる。FMPK300の外部に提供される論理記憶空間に対応する物理記憶領域をユーザ領域とよぶ。論理アドレス空間は、FMPK300内部で所定のサイズの論理ページに区切って管理される。FM−CTL500は、ストレージコントローラ400から論理アドレスを指定したリード/ライト要求を受信すると、論理アドレスから物理ページを特定し、データのリード/ライトを実行する。また、FM−CTL500は、FMPK300に部分的に発生する障害を管理する。
フラッシュメモリの物理記憶領域は、複数のブロックを含み、各ブロックは複数のページを含む。ブロックはデータの消去の単位であり、ページはデータの書き込み及び読み出しの単位である。つまり、FM−CTL500は、ブロック単位でデータを消去し、ページ単位でデータの書き込み及び読み出しを制御する。
また、フラッシュメモリは、データの上書きができないという特性がある。このため、FM−CTL500は、あるページに格納されているデータを更新するデータ(更新データ)を受信すると、更新データをデータが格納されていない空きページへ書き込む。そして、論理ページと更新前のページの対応関係を、その論理ページと更新後のページの対応関係に変更する。このため、ストレージコントローラ400はアクセス先の論理アドレスを変更する必要はない。
そして、FM−CTL500は、更新前のデータを無効データ、更新後のデータを有効データとして管理する。無効データが消去されると、無効データが格納されていたページは空きページとなり、データを書き込むことが可能になる。ただし、消去はブロック単位で行われる。ブロック内に有効データと無効データが混在している場合、FM−CTL500は有効データを他の空きページにコピーして、そのブロック内のデータの消去を行う。この有効データのコピーとブロックの消去処理を、リクラメーションと呼ぶ。
このように、フラッシュメモリでは、空きページが存在しない場合、ブロック単位でデータの消去を行わなければ新たにデータを書き込むことができない。また、消去処理が実行されると、消去処理が終わるまでデータを書き込むことができないため書き込み性能が低下し、消去処理そのもののオーバーヘッドによる性能低下も発生する。そこで、フラッシュメモリを記憶媒体とする記憶デバイスでは、更新データを書き込む領域(更新領域)が設けられる。更新領域の容量が大きいほど、リクラメーションの頻度が小さくなり、性能が維持される。ただし、更新領域の容量が大きいと、ユーザデータを格納する領域(ユーザ領域)の容量は小さくなる。つまり、ユーザ領域の容量と更新領域の容量の比率によって、ストレージコントローラ400がFMPK300に格納可能なデータ容量と性能の関係が決まることになる。
以下の説明及び図面において、ユーザ領域の容量をユーザ容量と呼び、更新領域の容量を更新容量と呼び、ユーザ容量と更新容量の合計を物理容量と呼ぶことがある。本実施例において、障害の発生に伴いユーザ容量及び更新容量は変化する。本実施例では、ユーザ容量と更新容量の比率を一定に保って、容量を変化させる。これにより、容量を削減した場合であっても、性能を維持することができる。
なお、ユーザ領域と更新領域は物理的に区別されている必要はない。例えば、あるブロックがユーザ領域として使用された後に消去された場合、次は更新領域として使用されてもよい。
図3は、ストレージシステム100におけるRG(RAID Group)及びLU(Logical Unit)の構成を示す。
ストレージコントローラ400は、複数のPDEVを用いてRGを構築する。この図の例において、ストレージコントローラ400は、PDEV#0〜#15の中から、PDEV#0〜#3を用いて、RG#0を構築し、PDEV#8〜#15を用いて、RG#1を構築する。各RGは、複数のストライプを有する。各ストライプは、複数のPDEVに跨り、複数のデータと複数のデータから生成されるパリティを含む。例えばRAID5の場合、複数のPDEVにおけるデータとパリティの配置はストライプ毎に異なる。3D+1PのRAID5の構成であれば、1つのストライプには3つのデータと3つのデータから生成されるパリティとが含まれる。ストレージコントローラ400が、パリティの生成を行う。更にストレージコントローラ400は、RG内の記憶領域をLUに割り当てる。この図の例において、ストレージコントローラ400は、RG#0をLU#0、#1に割り当て、RG#1をLU#2に割り当てる。
図4は、ストレージシステム100におけるLU及びVVOL(Virtual Volume:仮想ボリューム)の構成を示す。
ストレージコントローラ400は、LUを所定のサイズの論理記憶領域である実ページに分割して管理する。ストレージコントローラ400は、実ページをプールに登録して管理する。ストレージコントローラ400は、ホスト計算機200に対してVVOLを提供する。ストレージコントローラ400は、VVOL内の仮想的なアドレス空間を所定のサイズの仮想記憶領域である仮想ページに分割して管理する。ストレージコントローラ400は、Thin Provisioning機能により、ホスト計算機200からの書き込み要求に応じて、書き込み要求で指定されたVVOL内のアドレスの範囲が含まれる仮想ページへ、プールから実ページを割り当てる。ストレージコントローラ400は、実ページの仮想ページへの割り当てを解除すると、その実ページをプールへ戻す。この図の例において、ストレージコントローラ400は、LU#0〜#2内の実ページをプール#0、#1に登録する。更にストレージコントローラ400は、プール#0、#1内の実ページをVVOL#0、#1内の仮想ページに割り当てる。
図5は、ストレージコントローラ400のメモリ420に格納される情報を示す。
メモリ420は、ストレージ制御プログラム610と、RG管理テーブル620と、LU管理テーブル630と、PDEV管理テーブル640と、仮想ページマッピング管理テーブル650と、実ページ状態管理テーブル660とを格納する。
ストレージ制御プログラム610は、ストレージシステム100の制御をCPU410に実行させるためのプログラムである。
図6は、RG管理テーブル620を示す。
RG管理テーブル620は、RG毎のエントリを有する。或るRGのエントリは、当該RGを示すRG番号(RG#)621と、当該RGに属するPDEVを示すPDEV番号(PDEV#)622と、当該RGのRAIDレベル623と、当該RGに属するPDEVの種別であるPDEV種別624と、当該RGに属するPDEVのユーザ容量の最小値であるPDEV最小容量625とを有する。
図7は、LU管理テーブル630を示す。
LU管理テーブル630は、LU毎のエントリを有する。或るLUのエントリは、当該LUを示すLU番号(LU#)631と、当該LUに割り当てられているRGを示すRG番号(RG#)632と、当該LUのストライプサイズ633と、当該RG内の論理アドレス空間で当該LUの開始アドレスであるLU開始アドレス634と、当該LUのサイズであるLUサイズ635とを有する。
図8は、仮想ページマッピング管理テーブル650を示す。
仮想ページマッピング管理テーブル650は、仮想ページ毎のエントリを有する。或る仮想ページのエントリは、当該仮想ページが属するVVOLを示すVVOL番号(VVOL#)651と、当該仮想ページを示す仮想ページID652と、当該仮想ページに割り当てられている実ページを示す実ページID653とを有する。当該仮想ページに実ページが割り当てられていない場合、実ページID653は「未割り当て」であることを示す。仮想ページID652は、ストレージシステム100内でユニークな識別子である。実ページID653は、ストレージシステム100内でユニークな識別子である。
図9は、実ページ状態管理テーブル660を示す。
実ページ状態管理テーブル660は、実ページ毎のエントリを有する。或る実ページのエントリは、当該実ページが属するプールを示すプール番号(POOL#)661と、当該実ページを示す実ページID662と、当該実ページの状態663とを有する。状態663は、仮想ページに割り当てられている(使用中)か否かを示す。
図10は、PDEV管理テーブル640を示す。
PDEV管理テーブル640は、PDEV毎のエントリを有する。或るPDEVのエントリは、当該PDEVを示すPDEV番号(PDEV#)641と、当該PDEVの現在のユーザ容量である現在ユーザ容量642と、当該PDEVの初期のユーザ容量である初期ユーザ容量643と、当該PDEVの論理アドレス空間(FMPK論理アドレス空間)におけるユーザ領域の開始アドレス644と、当該PDEVの論理アドレス空間におけるユーザ領域の終端アドレス645とを有する。FMPK論理アドレス空間は例えば、LBA(Logical Block Address)で表される。
図11は、FMPK300の論理ページ及び物理ページの構成を示す。
FM−CTL500は、論理アドレス空間911を、ストレージコントローラ400に提供し、論理アドレス空間911を所定のサイズ(例えば8kB)の論理ページ912に分割して管理する。FM−CTL500は、ブロックを、所定のページサイズの物理ページ913に分割して管理する。FM−CTL500は、物理ページ913を論理ページ912に割り当てる。ブロック914は、所定数の物理ページ913を有する。FM−CTL500は、FMチップ570に対するデータの読み書きを物理ページ913単位で行い、FMチップ570に対する消去をブロック914単位で行う。
図12は、FM−CTL500のメモリ520に格納される情報を示す。
メモリ520は、FMPK制御プログラム710と、ページマッピング管理テーブル720と、FMPK状態管理テーブル730と、ユーザ容量比率741と、物理容量742と、現在ユーザ容量743と、初期ユーザ容量744と、ユーザ容量下限745と、障害アドレスリスト750を格納する。ユーザ容量比率741と、物理容量742と、初期ユーザ容量744と、ユーザ容量下限745とは予め定められ、メモリ520に格納される。現在ユーザ容量743は、動作開始時には初期ユーザ容量744と等しいが、FMPK300内の物理記憶領域に障害が発生すると減少する。ユーザ容量比率741は、障害の無い物理記憶領域(ユーザ領域及び更新領域)の全容量に対する現在ユーザ容量743の比率である。本実施例において、ユーザ容量比率741は、一定である。
図13は、ページマッピング管理テーブル720を示す。
ページマッピング管理テーブル720は、論理ページ毎のエントリを有する。或る論理ページのエントリは、当該論理ページを示す論理ページ番号721と、当該論理ページに割り当てられている物理ページを示す物理ページ番号722とを有する。当該論理ページに物理ページが割り当てられていない場合、物理ページ番号722は、未割当を示す。
図14は、FMPK状態管理テーブル730を示す。
FMPK状態管理テーブル730は、DMA毎のDMA管理テーブル810を有する。
或るDMAのDMA管理テーブル810は、当該DMAを示すDMA番号(DMA#)811と、当該DMAのStatus812と、当該DMAに属する全てのチップの内の不良チップ数813と、当該DMAに属する総チップ数814と、当該DMAに属するチップ毎のチップ管理テーブル820とを有する。Status812は、当該DMAが使用可能であればGoodを示し、そうでなければBadを示す。
或るチップのチップ管理テーブル820は、当該チップを示すチップ番号(Chip#)821と、当該チップのStatus822と、当該チップ内の全てのダイの内の不良ダイ数823と、当該チップ内の総ダイ数824と、当該チップ内のダイ毎のダイ管理テーブル830とを有する。Status822は、当該チップが使用可能であればGoodを示し、そうでなければBadを示す。
或るダイのダイ管理テーブル830は、当該ダイを示すダイ番号(Die#)831と、当該ダイのStatus832と、当該ダイ内の全てのブロックの内の不良ブロック数833と、当該ダイ内で論理ページに割り当て済みのブロックの数である割当ブロック数834と、当該ダイ内の総ブロック数835と、当該ダイ内のブロック毎のブロック管理テーブル840とを有する。Status832は、当該ダイが使用可能であればGoodを示し、そうでなければBadを示す。
或るブロックのブロック管理テーブル840は、当該ブロックを示すブロック番号(Block#)841と、当該ブロックのStatus842と、当該ブロック内の総ページ数843と、当該ブロック内の全てのページの内のデータを格納している(使用中)ページの数であるIn−use844と、使用中ページの内の有効ページの数であるValid845と、使用中ページの内の無効ページの数であるInvalid846とを有する。Status842は、当該ブロックが使用可能で且つデータを格納していれば「割り当て済(Alocated)」を示し、当該ブロックが使用可能で且つデータを格納していなければ「未割り当て」を示す。更にStatus842は、当該ブロックに障害がある場合に「故障」を示し、当該ブロックの書き換え回数が閾値を超過した場合に「寿命」を示す。
本実施例では、DMA、チップ、ダイ、ブロック単位の障害を例として説明するが、プレーンなど、他の物理的な単位での障害の発生を管理してもよい。
図15は、障害アドレスリスト750を示す。
障害アドレスリスト750は、FMPK300において、障害が発生した物理記憶領域に対応するFMPK論理アドレス空間内の論理アドレス領域(論理アドレス範囲)である障害領域毎のエントリを有する。或るエントリは、当該障害領域の開始LBAである障害アドレス751と、当該障害領域の長さであるレングス752とを有する。
物理記憶領域に障害が発生すると、その物理記憶領域に格納されたデータが消失する。FM−CTL500は、消失したデータを復元することができない。このため、FM−CTL500は、障害が発生した物理記憶領域に対応する論理アドレス領域を特定し、ストレージコントローラ400に通知することで、ストレージコントローラ400はデータを復元することができる。ストレージコントローラ400は、物理記憶領域の障害を認識できないため、FM−CTL500から論理アドレス領域を取得できない場合は、FMPK300内の全データを復元する必要がある。FMPK300の容量が大きいほど、データの復元処理には時間がかかり、その間は冗長性が低下した状態となる。しかし、本実施例のようにFM−CTL500がストレージコントローラ400に特定の論理アドレス領域を通知することで、適切な範囲のデータを復元することができるため、短時間でデータの復元処理を完了することができ、冗長性が低下する時間を短縮することでストレージシステムの信頼性が向上する。
以下、ストレージシステム100の動作について説明する。
図16は、現在ユーザ容量取得処理を示す。
ストレージコントローラ400は、対象FMPKの現在ユーザ容量を取得する現在ユーザ容量取得処理を実行する。ストレージコントローラ400は、FMPK300をストレージシステム100へインストールする場合に、そのFMPK300を対象FMPKとして現在ユーザ容量を取得する。ストレージコントローラ400は、定期的に現在ユーザ容量更新処理を行ってもよい。
ストレージコントローラ400は、対象FMPKへ容量問い合わせコマンドを送信することにより、対象FMPKから現在ユーザ容量を受信し(S4110)、受信された現在ユーザ容量によりPDEV管理テーブル640において対象FMPKの現在ユーザ容量642を更新し(S4120)、この処理を終了する。
FM−CTL500は、ストレージコントローラ400から容量問い合わせコマンドを受信すると(S4210)、メモリ520内の現在ユーザ容量743をストレージコントローラ400へ送信し(S4220)、この処理を終了する。以上が現在ユーザ容量取得処理である。
現在ユーザ容量取得処理によれば、ストレージコントローラ400は、FMPK300の現在ユーザ容量を取得することができる。
図17は、RG作成処理を示す。
ストレージコントローラ400は、複数のFMPK300を用いて新たなRGを作成する場合に、複数のFMPK300の夫々についてRGに用いる容量を決定し、RGを作成するRG作成処理を実行する。
ストレージコントローラ400は、PDEV管理テーブル640から、RGに属するFMPK300の現在ユーザ容量642の最小値を検出して、当該RGのPDEV最小容量とする(S4310)。その後、ストレージコントローラ400は、当該RGに属する全てのFMPK300の夫々の内でPDEV最小容量分の論理アドレス領域を用いて当該RGを作成し、そのPDEV最小容量を、RG管理テーブル620内の当該RGのPDEV最小容量625へ入力し(S4320)、この処理を終了する。以上がRG作成処理である。ストレージコントローラ400は、RGに属する複数のPDEVに対して、データをストライピングして格納する。ストライピングしてデータを格納するためには、RG内の各PDEVに同じサイズの空き容量が必要となる。つまり、あるPDEVに空き容量がなければ、RG内の他のPDEVに空き容量があってもデータを格納することはできない。よって、あるPDEVのユーザ容量が削減されると、RG内の他のPDEVに空き容量があっても、RGとしてはデータを格納できない。このため、ストレージコントローラ400は、PDEV最小容量にあわせて、RGを作成する。
RG作成処理によれば、RGに属するFMPK300の現在ユーザ容量に合わせて、適切な容量のRGを作成することができる。
図18は、FM−CTL500によるヘルスチェック処理を示す。
FM−CTL500は、定期的にバックグラウンドで、FMPK300の状態を検出するヘルスチェック処理を実行する。
FM−CTL500は、FMPK300において、全てのDMAのStatus812と、全てのチップのStatus822と、全てのダイのStatus832とを検出する全ページチェック処理を実行する(S1110)。FM−CTL500は、全ページチェック処理により、障害のあるDMA、チップ、ダイの検出を行う。FM−CTL500は、全ページチェック処理の結果を、FMPK状態管理テーブル730に保存する。全ページチェック処理については後述する。
その後、FM−CTL500は、FMPK状態管理テーブル730に基づいて、Status812がBadであるDMA(Bad DMA)があるか否かを判定する(S1120)。Bad DMAがあると判定された場合(S1120:Yes)、FM−CTL500は、Bad DMAを閉塞し(S1150)、この処理を終了する。そうでない場合(S1120:No)、FM−CTL500は、Status822がBadであるチップ(Bad Chip)があるか否かを判定する(S1130)。Bad Chipがあると判定された場合(S1130:Yes)、FM−CTL500は、Bad Chipを閉塞し(S1160)、この処理を終了する。そうでない場合(S1130:No)、FM−CTL500は、Status832がBadであるダイ(Bad Die)があるか否かを判定する(S1140)。Bad Dieがあると判定された場合(S1140:Yes)、FM−CTL500は、Bad Dieを閉塞し(S1170)、この処理を終了する。そうでない場合(S1140:No)、FM−CTL500は、この処理を終了する。以上がヘルスチェック処理である。
FM−CTL500は、ヘルスチェック処理の結果に基づき、障害が発生した物理記憶領域に含まれる物理ページに有効データが格納されているか、無効データが格納されているかを判断する。有効データが格納された物理ページに障害が発生した場合は、そのデータを回復する必要があるためである。有効データが格納されている物理ページの番号は、ページマッピング管理テーブル720に記録されているため、ページマッピング管理テーブル720を用いて、有効データが格納されている物理ページ番号に対応する論理ページ番号を特定することができる。そして、論理ページ番号からFMPK論理アドレス空間上の論理アドレス領域を特定し、障害アドレスリスト750としてメモリ520内に保存する。FM−CTL500は、障害が発生した物理記憶領域に対応する論理アドレス領域を障害アドレスリスト750に保存し、それをストレージコントローラ400に通知して、ストレージコントローラ400から回復したデータを受け取ることができる。障害が発生した物理ページに無効データが格納されていた場合、そのデータを回復する必要はないため、障害アドレスリスト750には保存しない。また、閉塞した物理記憶領域の容量を物理容量742から減算し、メモリ520に保存する。
なお、FM−CTL500は、物理ページ番号のリストをメモリ520に保存し、物理ページ毎に有効データが格納されているか、無効データが格納されているかを管理してもよい。さらに、FM−CTL500は、このリストに、物理ページ番号に対応付けられている論理ページ番号を保存してもよい。FM−CTL500は、物理ページの障害を検出した場合、このリストを用いて有効データが格納されている物理ページに対応する論理ページを特定することができる。
ヘルスチェック処理によれば、障害が発生した部分だけを閉塞することにより、他の部分へのアクセスを許すことができる。
図19は、FM−CTL500による全ページチェック処理を示す。
前述のS1110において、FM−CTL500は全ページチェック処理を実行する。FM−CTL500は、この全ページチェック処理の結果をFMPK状態管理テーブル730に保存する。つまり、DMAやチップ等の単位毎に、障害の有無を保存する。
FM−CTL500は、FMPK300内の全てのDMAの中から未選択の一つのDMAを選択する(S1510)。FM−CTL500は、選択されたDMAに属する全てのチップの中から未選択の一つのチップを選択する(S1520)。FM−CTL500は、選択されたチップ内の全てのダイの中から未選択の一つのダイを選択する(S1530)。
その後、FM−CTL500は、選択されたダイ内の全ての割り当て済ブロックの中の全ての割り当て済ページのReadを実行する(S1610)。その後、FM−CTL500は、そのReadの結果、アンコレクタブルエラーが発生したブロックをBad Blockと認識する(S1620)。なお、Bad Blockの条件に、他の条件が用いられても良い。その後、FM−CTL500は、選択されたダイ内の全ての割り当て済ブロックがBad Blockである場合に、そのダイをBad Dieと判定する(S1630)。なお、Bad Dieの条件に、他の条件が用いられても良い。例えば、FM−CTL500は、選択されたダイ内の割り当て済ブロックの内、所定の数以上のブロックがBad Blockである場合にそのダイをBad Dieと判定しても良い。
その後、FM−CTL500は、選択されたチップ内の全てのダイの選択が終了したか否かを判定する(S1640)。全てのダイの選択が終了していないと判定された場合(S1640:No)、FM−CTL500は、処理をS1530へ移行させる。
全てのダイの選択が終了したと判定された場合(S1640:Yes)、FM−CTL500は、選択されたチップ内の全てのダイがBad Dieである場合に、そのチップをBad Chipと判定する(S1650)。なお、Bad Chipの条件に、他の条件が用いられても良い。例えば、FM−CTL500は、選択されたチップ内のダイの内、所定の数以上のダイがBad Dieである場合にそのチップをBad Chipと判定しても良い。
その後、FM−CTL500は、選択されたDMAに属する全てのチップの選択が終了したか否かを判定する(S1660)。全てのチップの選択が終了していないと判定された場合(S1660:No)、FM−CTL500は、処理をS1520へ移行させる。
全てのチップの選択が終了したと判定された場合(S1660:Yes)、FM−CTL500は、選択されたDMAに属する全てのチップがBad Chipである場合に、そのチップをBad DMAと判定する(S1670)。なお、Bad DMAの条件に、他の条件が用いられても良い。例えば、FM−CTL500は、選択されたDMAに属するチップの内、所定の数以上のチップがBad Chipである場合にそのDMAをBad DMAと判定しても良い。
その後、FM−CTL500は、FMPK300内の全てのDMAの選択が終了したか否かを判定する(S1680)。全てのDMAの選択が終了していない場合(S1680:No)、FM−CTL500は、処理をS1510へ移行させる。
全てのDMAの選択が終了したと判定された場合(S1680:Yes)、FM−CTL500は、この処理を終了する。以上が全ページチェック処理である。
全ページチェック処理によれば、FM−CTL500は、FMPK300内の障害のある部分を検出することができる。
図20は、定期監視処理を示す。
ストレージコントローラ400は、定期的に、FMPK300の一つを対象FMPKとして選択し、対象PDEVの状態を取得する定期監視処理を実行する。ストレージコントローラ400は、定期的に、全PDEVのそれぞれに対して、定期監視処理を実行する。
ストレージコントローラ400は、PDEV監視コマンドを対象FMPKへ発行する(S2110)。PDEV監視コマンドを受信したFM−CTL500は、PDEV監視コマンドの応答として障害アドレスリスト750をストレージコントローラ400へ送信する。その後、ストレージコントローラ400は、対象FMPKから障害アドレスリスト750を受信する(S2120)。その後、ストレージコントローラ400は、障害アドレスリスト750に基づいて障害を検出したか否かを判定する(S2130)。障害を検出していないと判定された場合(S2130:No)、ストレージコントローラ400は、この処理を終了する。障害を検出したと判定された場合(S2130:Yes)、ストレージコントローラ400は、対象FMPKを障害FMPKと認識し、障害FMPKで失われたデータを回復するデータ回復処理を実行し(S2140)、障害FMPKが属するRGを障害RGと認識し、障害RGに属するFMPK300のユーザ容量を削減する容量縮退処理を実行し(S2150)、この処理を終了する。データ回復処理及び容量縮退処理については後述する。以上が定期監視処理である。
なお、FM−CTL500は、障害が発生している場合、Readコマンド及びWriteコマンドの応答としてUA(Unit Attention)をストレージコントローラ400へ送信することにより、障害が発生していることをストレージコントローラ400に知らせても良い。この場合、ストレージコントローラ400は、PDEV監視コマンドにより障害アドレスリスト750を取得しても良い。また、ストレージコントローラ400とFM−CTL500に予め定められたルールに従って、FM−CTL500が障害部位をストレージコントローラ400へ通知しても良い。例えば、FM−CTL500は、予め定められたサイズである報告サイズ(例えば256kB)の論理アドレス領域毎に障害を検出し、障害が検出された論理アドレス領域の開始アドレスだけをストレージコントローラ400へ送信する。開始アドレスを受信したストレージコントローラ400は、開始アドレスにより特定される報告サイズの論理アドレス領域のデータを回復する。
図21は、データ回復処理を示す。
前述のS2140において、ストレージコントローラ400はデータ回復処理を実行する。
ストレージコントローラ400は、障害FMPKから取得された障害アドレスリスト750の先頭から順に、一つのエントリを選択し、選択されたエントリから障害領域を認識する(S2510)。その後、ストレージコントローラ400は、RG管理テーブル620に基づいて、障害RGに属する障害FMPK以外のFMPK300を特定し、LU管理テーブル630に基づいて、障害領域に対応するストライプを特定し、特定されたストライプの特定されたFMPK300のデータ又はパリティを読み出しRAID計算を実行することにより、障害領域で失われたデータ(障害データ)を再生成し、再生成されたデータを障害FMPKへ書き込む(S2520)。その後、ストレージコントローラ400は、取得された障害アドレスリスト750の全てのエントリの選択が終了したか否かを判定する(S2530)。全てのエントリの選択が終了したと判定された場合(S2530:Yes)、ストレージコントローラ400は、処理を終了する。そうでない場合、ストレージコントローラ400は、処理をS2510へ移行させる。以上がデータ回復処理である。
データ回復処理によれば、障害FMPKの中の障害が発生した部分に格納されていたデータを回復させることができる。FM−CTL500は、障害の発生した論理アドレス領域を特定してストレージコントローラ400に通知することで、ストレージコントローラ400は特定されたアドレス範囲に関するデータの回復を行うことができる。これにより、アドレス範囲が特定されない場合は、障害FMPK内の全論理アドレス領域のデータを回復する必要があるため、本データ回復処理ではデータ回復の時間を短縮できる。
図22は、容量縮退処理を示す。
前述のS2150において、ストレージコントローラ400は容量縮退処理を実行する。
ストレージコントローラ400は、障害RGで削減される論理アドレス領域内のデータを移動させるデータ移動処理を実行し(S2620)、障害RGに属するFMPK300の容量を変更するFMPK容量変更処理を実行し(S2630)、この処理を終了する。データ移動処理及びFMPK容量変更処理については後述する。以上が容量縮退処理である。
図23は、データ移動処理を示す。
前述のS2620において、ストレージコントローラ400はデータ移動処理を実行する。
ストレージコントローラ400は、障害FMPKから削減される論理アドレス領域である削減領域を決定する(S2710)。ここでストレージコントローラ400は、削減領域のサイズである削減サイズと、削減領域の開始アドレスとを決定する。削減領域は、例えば、PDEV管理テーブル640における各FMPK300の終端アドレス645から前の削減サイズ分のアドレス範囲である。つまり、容量を削減するとは、ストレージコントローラ400が使用可能なFMPK300の論理アドレス領域を制限することである。例えば、ストレージコントローラ400は、正常領域容量の問い合わせを障害FMPKへ送信する。正常領域容量の問い合わせを受信したFM−CTL500は、現在の不良部分を除いた物理記憶領域の容量(物理容量742)に、ユーザ容量比率を乗じた値を正常領域容量として算出し、正常領域容量をストレージコントローラ400へ送信する。不良部分は例えば、Bad Blockである。なお、本実施例におけるFMPK300は、ヘルスチェック処理により、ダイ内の全ての割り当て済みブロックがBad Blockである場合にそのダイを閉塞するため、ダイ内の割り当て済みブロックの一部がBad Blockであってもそのダイを閉塞しない。従って、FMPK300において、全てのBad Blockの容量は、閉塞された部分の容量と異なる場合がある。そこで、不良部分は閉塞された部分であっても良い。正常領域容量を受信したストレージコントローラ400は、障害FMPKの現在ユーザ容量から正常領域容量を減じた値を削減サイズとして算出する。
その後、ストレージコントローラ400は、RG管理テーブル620とLU管理テーブル630とPDEV管理テーブル640とに基づいて、障害FMPKを含むRG内で削減領域に対応するストライプの論理アドレス領域であるRG削減範囲を特定し、RG削減範囲内の全ての実ページの一覧を生成する(S2720)。RG削減範囲のサイズは、RG管理テーブル620における障害RGのRAIDレベル623によって異なる。例えば、障害RGのRAIDレベル623が0、5、又は6である場合、RG削減範囲のサイズは、削減サイズにデータディスク数(障害RGに属する全ディスク数からパリティディスク数を除いた値)を乗じた値になる。また、障害RGのRAIDレベル623が1である場合、RG削減範囲のサイズは、削減サイズになる。
ストレージコントローラ400は、RGの記憶領域を実ページ単位で管理しているため、実ページ単位でRGのサイズを削減する。ここで、ストレージコントローラ400は、単にFMPK300から通知された障害領域のサイズを削減サイズとするのではなく、実ページの情報に基づいて削減サイズを決定する。障害領域のサイズが実ページ単位で端数を含んでいれば、ストレージコントローラ400は、障害領域のサイズを実ページの整数倍に切り上げた削減サイズを算出する。ストレージコントローラ400は、実ページの情報を管理しているが、FMPK300は、実ページの情報を管理していない。従って、ストレージコントローラ400は、後述するFMPK容量変更処理により、削減サイズをFMPK300へ通知する必要がある。
その後、ストレージコントローラ400は、RG削減範囲内の実ページの一覧から先頭の実ページを選択する(S2730)。その後、ストレージコントローラ400は、実ページ状態管理テーブル660に基づいて、当該実ページが使用中である(仮想ページに割り当てられている)か否かを判定する(S2740)。使用中でないと判定された場合(S2740:No)、ストレージコントローラ400は、処理をS2760へ移行させる。実ページが仮想ページに割り当てられていなければ、データをコピーする必要がないためである。使用中であると判定された場合(S2740:Yes)、ストレージコントローラ400は、Thin Provisioning機能により、当該実ページを張替え元実ページとして別の実ページに張り替える実ページ張替え処理を実行する(S2750)。実ページ張替え処理については後述する。その後、ストレージコントローラ400は、実ページの一覧の全ての実ページの選択を終了したか否かを判定する(S2760)。RG削減範囲内の全ての実ページの選択を終了していない場合(S2760:No)、ストレージコントローラ400は、実ページの一覧から次の実ページを選択し(S2770)、処理をS2740へ移行させる。RG削減範囲内の全ての実ページの選択を終了した場合(S2760:Yes)、ストレージコントローラ400は、この処理を終了する。以上がデータ移動処理である。
図24は、実ページ張替え処理を示す。
前述のS2750において、ストレージコントローラ400は、実ページ張替え処理を実行する。
ストレージコントローラ400は、選択された実ページを張替え元実ページとして決定する(S2810)。その後、ストレージコントローラ400は、実ページ状態管理テーブル660に基づいて、未使用の実ページを含むプールから張替え先実ページを選択する(S2820)。ここでストレージコントローラ400は、プール内の実ページの中で障害RG以外の実ページを選択しても良い。その後、ストレージコントローラ400は、張替え元実ページのデータを張替え先実ページへコピーする(S2830)。
その後、ストレージコントローラ400は、張替え元実ページを割り当てられていた仮想ページに、張替え先実ページを割り当てる(S2840)。ここでストレージコントローラ400は、仮想ページマッピング管理テーブル650において、張替え元実ページIDを張替え先実ページIDに変更し、実ページ状態管理テーブル660において、張替え元実ページの状態663を未使用に変更し、張替え先実ページの状態663を使用中に変更する。
その後、ストレージコントローラ400は、張替え元実ページに割り当てられている対象FMPKの論理ページが未使用であることを通知するPDEV領域解放コマンドを対象FMPKへ発行し(S2850)、この処理を終了する。言い換えれば、このPDEV領域解放コマンドは、対象FMPKが当該論理ページのデータを破棄しても良いことを通知する。以上が実ページ張替え処理である。
図25は、実ページ張替え処理を模式的に示す。
この図の実ページ張替え処理において、実ページ#100が張替え元実ページとして選択されており、張替え元実ページは、仮想ページ#002に割り当てられている。その後、プール#0から実ページ#001が張替え先実ページとして選択され、張替え先実ページが仮想ページ#002に割り当てられる。
実ページ張替え処理によれば、障害RG内で削減される実ページを割り当てられている仮想ページへ、プールから実ページを割り当てることができる。これにより、障害RG内で削減される全ての実ページを未使用の状態に変更することができ、障害RGの容量を削減することができる。
データ移動処理によれば、現在ユーザ容量と、障害FMPKにおける障害が発生した物理記憶領域の容量とに基づいて、削減領域を決定することができる。また、障害FMPKの削減領域に対応する実ページに格納されているデータを移動させると共に、その実ページを割り当てられていた仮想ページに、移動先の実ページを割り当てる。これにより、ホスト計算機200からその仮想ページに含まれるアドレスへのアクセスを維持することができる。
図26は、FMPK容量変更処理を示す。
前述のS2630において、ストレージコントローラ400は、障害RGに属する全てのFMPK300の夫々を対象FMPKとしてFMPK容量変更処理を実行する。
ストレージコントローラ400は、削減サイズを指定する容量変更コマンドを、対象FMPKへ送信し(S2910)、その応答を受信する(S2920)。その後、ストレージコントローラ400は、PDEV管理テーブル640において対象FMPKのエントリを更新する(S2930)。ここでストレージコントローラ400は、対象FMPKの現在ユーザ容量642において、格納されている値から削減サイズを減じた値へ変更する。更にストレージコントローラ400は、終端アドレス645において、格納されている値から削減サイズを減じた値へ変更する。
その後、ストレージコントローラ400は、RG管理テーブル620及びLU管理テーブル630を更新し(S2940)、この処理を終了する。ここでストレージコントローラ400は、更新した現在ユーザ容量642に基づいて、RG管理テーブル620のPDEV最小容量625と、LU管理テーブル630のLUサイズ635とを更新する。これにより、ページ張替え処理でプールに戻された張替え元実ページは、プールから削除される。
FM−CTL500は、ストレージコントローラ400から容量変更コマンドを受信すると(S3010)、メモリ520内の現在ユーザ容量743から、容量変更コマンドに指定された削減サイズを減じた値を削減後ユーザ容量として算出し、削減後ユーザ容量が、メモリ520内のユーザ容量下限745より大きいか否かを判定する(S3020)。削減後ユーザ容量がユーザ容量下限745より大きいと判定された場合(S3020:Yes)、FM−CTL500は、現在ユーザ容量743の値を削減後ユーザ容量に変更し、容量変更コマンドに対して成功を示す応答をストレージコントローラ400へ送信し(S3030)、この処理を終了する。そうでない場合(S3020:No)、FM−CTL500は、容量変更コマンドに対して失敗を示す応答をストレージコントローラ400へ送信し(S3030)、この処理を終了する。ストレージコントローラ400は、FMPK300から失敗を示す応答を受信した場合、そのFMPK300の全体を閉塞する。つまり、FMPK容量変更処理によりFMPK300のユーザ容量がユーザ容量下限745以下になった場合、そのFMPK300は閉塞する。以上がFMPK容量変更処理である。
一般に、ホスト計算機200は、アクセス先のボリュームの容量を変更する場合、業務を停止して、ボリュームを再認識する必要がある。本実施例では、FMPKの容量が削減された場合は、プールの容量を減少させる。より具体的には、プールに含まれる実ページの数を減少させる。仮想ボリュームにはプールから記憶領域が割当てられるが、仮想ボリュームの容量が変更されることはない。これにより、ホスト計算機200は、FMPK内部の部分的な障害による容量削減を認識する必要がなく、仮想ボリュームへのアクセスを継続することができる。
以後の説明及び図面において、障害RGに属する障害FMPK以外のFMPK300を関連FMPKと呼ぶことがあり、障害RGにおいて障害FMPKの削減領域のストライプに対応する関連FMPKの論理アドレス領域を関連領域と呼ぶことがある。FMPK容量変更処理によれば、障害FMPKの削減領域を削減するだけでなく、関連FMPKの関連領域を削減することができる。
FMPK容量変更処理によれば、ストレージコントローラ400により削減された現在ユーザ領域を、FMPK300に反映することができる。
図27は、容量縮退処理を模式的に示す。
この図は、容量縮退処理前の障害RGにおける実ページの配置と、容量縮退処理後のRGにおける実ページの配置とを示す。容量縮退処理により、障害RGに属するFMPK300において、削減されたユーザ容量より後のアドレス範囲の実ページのデータは別の実ページに移動する。これにより、障害RGに属する全てのFMPK300において、先頭から現在ユーザ容量までのアドレス範囲が障害RGに割り当てられる。また、障害RGに属する全てのFMPK300において、現在ユーザ容量より後のアドレス範囲は、障害RGに用いられない未使用領域(Free Area)となる。
容量縮退処理によれば、ストレージコントローラ400は、障害FMPKの削減領域に対応する実ページのデータを移動し、その実ページを割り当てられている仮想ページへ、プール内の実ページを割り当てることにより、障害FMPKの現在ユーザ容量を削減することができる。また、削減領域及び関連領域を削減することにより、障害RGに属するFMPK300の現在ユーザ容量を合わせ、障害RGの容量を削減することができる。また、FM−CTL500は、ストレージコントローラ400からの指示に従って、現在ユーザ容量を削減することができる。
本実施例によれば、ストレージコントローラ400は、FMPK300に障害が発生した場合に、障害部分に応じてFMPK300の容量を削減することにより、そのFMPK300全体の閉塞を防ぎ、そのFMPK300の使用を継続することができる。また、FMPK300内のDMA、チップ、ダイ又はプレーンの単位で、障害が発生した部分を閉塞することができる。また、ストレージコントローラ400は、RGに属する複数のFMPK300の一つに障害が発生した場合に、そのRGの容量を削減することにより、そのRGの使用を継続することができる。
実施例1において、障害FMPKのユーザ容量を削減する場合、障害FMPKと同じRGに属する他のFMPK300についても、障害FMPKと同様にユーザ容量を削減するため、障害のない論理アドレス領域であってもRGとしては使用不可能になる。本実施例では、このような障害が発生していないFMPK300の記憶領域を有効活用する。本実施例におけるストレージシステム100は、或るRGにおいて容量縮退処理により削減された関連領域をプールに登録し、他のRGの障害の発生時の削減領域に割り当てる。本実施例においては、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略する。
図28は、実施例2のストレージコントローラ400のメモリ420に格納される情報を示す。
実施例1のメモリ420と比較すると、実施例2のメモリ420は更に、PDEV管理テーブル640の代わりにPDEV管理テーブル640bを格納し、新たにPDEV交替領域管理テーブル670を格納する。
図29は、実施例2のPDEV管理テーブル640bを示す。
実施例1のPDEV管理テーブル640と比較すると、実施例2のPDEV管理テーブル640bにおけるPDEVのエントリは更に、当該PDEVが交替領域を有するか否かを示す交替領域フラグ(交替領域有無)646を有する。本実施例における交替領域は、容量縮退処理により削減された関連領域である。言い換えれば、交替領域は、容量縮退処理により生成された未使用領域の中で、障害がない領域である。
図30は、PDEV交替領域管理テーブル670を示す。
PDEV交替領域管理テーブル670は、交替領域毎のエントリを有する。或る交替領域のエントリは、当該交替領域を示す交替領域ID671と、当該交替領域の状態672と、当該交替領域を有するPDEVを示すPDEV番号(PDEV#)673と、当該交替領域が属するRG内の論理アドレス空間における当該交替領域の開始アドレス674と、当該交替領域の終端アドレス675と、当該交替領域が交替先である場合の交替元の交替領域を示す交替元交替領域ID676と、当該交替領域が交替元である場合の交替先の交替領域を示す交替先交替領域ID677とを有する。状態672は、交替元、交替先、未使用の何れか一つを示す。ストレージコントローラ400は、PDEV交替領域管理テーブル670に登録された未使用の交替領域の集合を、PDEV交替領域プールとして管理する。
図31は、実施例2の定期監視処理を示す。
実施例2の定期監視処理におけるS2110、S2120、S2130、S2140は、実施例1の定期監視処理と同様である。S2140の後、ストレージコントローラ400は、障害FMPKの削減領域と置き換え可能な交替領域である使用可能交替領域を検出する交替領域判定処理を実行し(S2210)、使用可能交替領域が有るか否かを判定する(S2220)。交替領域判定処理については後述する。
使用可能交替領域が無いと判定された場合(S2220:No)、ストレージコントローラ400は、S2150と同様の容量縮退処理を実行する(S2250)。その後、ストレージコントローラ400は、PDEV交替領域管理テーブル670において、容量縮退処理により削減された関連領域のエントリを追加することにより、その関連領域を交替領域としてPDEV交替領域プールへ登録し(S2260)、この処理を終了する。ここでストレージコントローラ400は、追加されたエントリの状態672へ「未使用」を入力する。
使用可能交替領域が有ると判定された場合(S2210:Yes)、ストレージコントローラ400は、障害RGにおいて障害FMPKの削減領域に使用可能交替領域を割り当て(S2280)、この処理を終了する。ここでストレージコントローラ400は、障害RGにおいて障害FMPKの削減領域を使用可能交替領域に置き換えることにより、障害RGの容量を削減せずに障害RGの使用を継続する。以上が実施例2の定期監視処理である。
図32は、交替領域判定処理を示す。
前述のS2280において、ストレージコントローラ400は交替領域判定処理を実行する。
ストレージコントローラ400は、実施例1のS2710と同様にして、障害FMPKの削減領域を決定する(S3110)。その後、ストレージコントローラ400は、PDEV交替領域管理テーブル670の先頭エントリの交替領域を対象交替領域として選択する(S3120)。その後、ストレージコントローラ400は、対象交替領域の状態672に基づいて、対象交替領域が未使用であるか否かを判定する(S3130)。対象交替領域が未使用でないと判定された場合(S3130:No)、ストレージコントローラ400は、処理をS3170へ移行させる。
対象交替領域が未使用であると判定された場合(S3130:Yes)、ストレージコントローラ400は、対象交替領域のサイズが障害FMPKの削減領域のサイズ(削減サイズ)以上であるか否かを判定する(S3140)。対象交替領域のサイズが削減サイズ以上でないと判定された場合(S3140:No)、ストレージコントローラ400は、処理をS3170へ移行させる。
対象交替領域のサイズが削減サイズ以上であると判定された場合(S3140:Yes)、ストレージコントローラ400は、削減領域を対象交替領域で置き換えた場合に、対象交替領域が冗長化されるか否かを判定する(S3150)。ここでストレージコントローラ400は、障害RGにおいて削減領域のストライプに対応する記憶領域を有する他のFMPK300を認識し、認識された全てのFMPK300が、対象交替領域を有するFMPK300と異なる場合に、対象交替領域が冗長化されると判定する。つまり、ストレージコントローラ400は、障害RGの交替領域を、交替領域が属している障害RGとは異なるRGに使用する。同じ障害RG内の交替領域とすると冗長性が低下し、FMPKの障害時にデータ復旧が不可能となるためである。対象交替領域が冗長化されないと判定された場合(S3150:No)、ストレージコントローラ400は、処理をS3170へ移行させる。
対象交替領域が冗長化されると判定された場合(S3150:Yes)、ストレージコントローラ400は、対象交替領域が削減領域の交替先として使用可能であると判定し、対象交替領域を使用可能交替領域とする(S3160)。ここでストレージコントローラ400は、PDEV交替領域管理テーブル670において、障害FMPKの削減領域のエントリを追加し、状態672へ「交替元」を入力し、交替先交替領域ID677へ使用可能交替領域のIDを入力する。更にストレージコントローラ400は、PDEV交替領域管理テーブル670において、使用可能交替領域の状態672の値を「交替先」に変更し、交替元交替領域ID676へ障害FMPKの削減領域のIDを入力する。
その後、ストレージコントローラ400は、PDEV交替領域管理テーブル670内の全てのエントリの交替領域の選択を終了したか否かを判定する(S3170)。全てのエントリの選択を終了していないと判定された場合(S3170:No)、ストレージコントローラ400は、PDEV交替領域管理テーブル670における次のエントリの交替領域を対象交替領域として選択し(S3180)、処理をS3120へ移行させる。全てのエントリの選択を終了したと判定された場合(S3170:Yes)、ストレージコントローラ400は、この処理を終了する。以上が交替領域判定処理である。上記処理により、冗長性を低下させることなく、関連領域を交替領域として利用することが可能となる。
図33は、実施例2の交替領域の登録及び割り当てを模式的に示す。
この図の例において、ストレージコントローラ400は、FMPK300であるPDEV#0、#1、#2、#3を用いてRG#0を構築し、FMPK300であるPDEV#4、#5、#6、#7を用いてRG#1を構築する。
PDEV#3の内部で物理記憶領域に部分的な障害が発生すると、ストレージコントローラ400は、FMPK論理アドレス空間内の領域である論理アドレス領域#0003を削減領域とし、PDEV#3のユーザ容量を削減領域のサイズだけ削減する。論理アドレス領域は、幾つかの論理ページを含む。これに伴い、ストレージコントローラ400は、PDEV#3と同じRG#0に属するPDEV#0、#1、#2について、論理アドレス領域#0003のストライプに対応する論理アドレス領域#0000、#0001、#0002を削減領域とし、PDEV#0、#1、#2のユーザ容量を削減領域のサイズだけ削減し、RG#0の容量を削減する。更にストレージコントローラ400は、論理アドレス領域#0000、#0001、#0002を、交替領域としてPDEV交替領域プールへ登録する。
その後、PDEV#6の論理アドレス領域#1002に障害が発生すると、ストレージコントローラ400は、PDEV交替領域プールから交替領域#0000を選択し、論理アドレス領域#1002の代わりに交替領域#0000を用いる。これにより、RG#1の容量を削減することなく、RG#1の使用を継続することができる。つまり、ストレージコントローラ400は、論理アドレス領域#1000、#1001、#0000、#1003に基づいて1つ以上の実ページを作成することができる。論理アドレス領域#0000は物理的にはRG#1とは異なるRGに属するが、論理的な記憶領域である実ページへの対応付けを行うことで、論理アドレス領域#0000を利用することができる。
本実施例によれば、ストレージコントローラ400は、障害RGの容量を削減した場合、障害RG内の障害FMPK以外の削減領域を交替領域として登録することができる。その後、ストレージコントローラ400は、他のRG内で障害が発生した場合にその障害が発生したFMPK内の論理アドレス領域の代わりに交替領域を用いることができ、そのRGの容量を維持することができる。また、冗長化される交替領域を選択することにより、障害RGの冗長性を維持することができる。
本実施例におけるストレージシステム100は、予め用意された未使用領域をプールに登録し、障害FMPKの削減領域に割り当てる。本実施例においては、実施例2との相違点を主に説明し、実施例2との共通点については説明を省略する。
実施例3のストレージシステム100において、ストレージコントローラ400は、複数のFMPK300の他に、少なくとも一つのスペアPDEVを有する。ストレージコントローラ400は、スペアPDEV内の論理アドレス領域を交替領域とし、PDEV交替領域管理テーブル670にその交替領域のエントリを作成することにより、その交替領域をPDEV交替領域プールに登録する。
実施例3の定期監視処理は、実施例2の定期監視処理と同様である。なお、S2260において、ストレージコントローラ400は、容量縮退処理により生成された障害FMPK以外の削減領域を登録しなくても良い。この場合、PDEV交替領域プールには、スペアPDEV内の交替領域だけが登録される。
図34は、実施例3の交替領域の割り当てを模式的に示す。
この図の例において、ストレージコントローラ400は、FMPK300であるPDEV#0、#1、#2、#3を用いてRG#0を構築し、FMPK300であるPDEV#4、#5、#6、#7を用いてRG#1を構築する。更にストレージコントローラ400は、FMPK300であるPDEV#100をスペアPDEVとし、スペアPDEV内の交替領域をPDEV交替領域プールへ登録する。
PDEV#3の論理アドレス領域#0003に障害が発生すると、ストレージコントローラ400は、PDEV交替領域プールから交替領域#9100を選択し、論理アドレス領域#0003の代わりに交替領域#9100を用いる。これにより、RG#0の容量を削減することなく、RG#0の使用を継続することができる。
同様に、PDEV#6の論理アドレス領域#1002に障害が発生すると、ストレージコントローラ400は、交替領域割当処理により、PDEV交替領域プールから交替領域#9200を選択し、論理アドレス領域#1002の代わりに交替領域#9200を用いる。これにより、RG#1の容量を削減することなく、RG#0の使用を継続することができる。
本実施例によれば、ストレージコントローラ400は、FMPK300に障害が発生した場合、削減領域の代わりに、予め用意された交替領域を用いることにより、そのRGの容量を維持することができる。
実施例1において、障害FMPKのユーザ容量を削減する場合、障害FMPKと同じRGに属する他のFMPK300についても、障害FMPKと同様にユーザ容量を削減するため、障害が発生していないFMPK300の記憶領域であってもRGとしては使用不可能になる。本実施例では、このような障害が発生していないFMPK300の記憶領域を有効活用する。本実施例におけるストレージシステム100は、或るRGにおいて容量縮退処理により削減された関連領域については、RAID構成を変更して利用する。本実施例においては、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略する。
図35は、実施例4におけるRAID構成の変更を模式的に示す。
この図の例において、ストレージコントローラ400は、FMPK300であるPDEV#0、#1、#2、#3を用いてRG#0を構築する。障害発生前は、RG#0は、3D+1PのRAID構成であるとする。ここで、PDEV#0の物理記憶領域の一部に障害が発生した場合、ストレージコントローラ400は、障害が発生したPDEV#0の使用可能なユーザ容量を削減し、障害が発生していないPDEV#1、#2、#3の使用可能なユーザ容量は変更しない。
ストレージコントローラ400は、容量を削減されていない領域を継続して3D+1PのRG#0として制御する。そして、ストレージコントローラ400は、関連領域をRAID構成を変更して、2D+1PのRG#1として制御する。ストレージコントローラ400は、RG#1の記憶領域を実ページに分割して管理し、ホスト計算機200から仮想ボリュームへのライト要求に応じて実ページを割り当てる。3D+1Pの領域から2D+1Pの領域へデータが移動される場合は、ストレージコントローラ400は2D+1Pにあわせてパリティを生成し直す。
3D+1Pから2D+1Pへ変更する例を示したが、他のRAID構成が採用されてもよい。例えば、PDEV#1とPDEV#2の関連領域をRAID1(ミラーリング)として制御し、PDEV#3の関連領域をスペア領域としてPDEV交換領域プールに登録してもよい。また、例えば、14D+2PのRAIDグループに含まれるPDEVのうちの2台に障害が発生した場合、関連領域を3つの3D+1PのRAIDグループとして制御し、残りの2つのPDEVの関連領域をスペア領域としてもよい。
本実施例によれば、ストレージコントローラ400は、FMPK300に障害が発生した場合、関連領域についてRAID構成を変更することで継続して使用できるため、関連領域の容量を無駄なく使うことができる。
用語について説明する。使用可能容量は、現在ユーザ容量等に対応する。論理記憶領域内のページは、実ページ等に対応する。仮想記憶領域は、仮想ページ等に対応する。障害情報は、障害アドレスリスト等に対応する。第1記憶デバイス及び第2記憶デバイスは、障害FMPK等に対応する。交替領域情報は、PDEV交替領域管理テーブル670等に対応する。指示は、容量変更コマンド等に対応する。最小使用可能容量は、PDEV最小容量等に対応する。論理アドレス範囲は、論理アドレス領域等に対応する。
なお、以上の説明では「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等の表現にて本発明の情報を説明するが、これら情報はテーブル、リスト、DB、キュー等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」、「aaaリスト」、「aaaDB」、「aaaキュー」等について「aaa情報」と呼ぶことがある。
さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」という表現を用いるが、これらについてはお互いに置換が可能である。
以上の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポートを用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理計算機や情報処理装置が行う処理としてもよい。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。
また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各計算機にインストールされてもよい。
以上の実施例における不揮発性半導体メモリは、FM(Flash Memory)である。以上の実施例におけるFMは、ブロック単位で消去が行われ、ページ単位でリード及びライトが行われる種類のFM、典型的にはNAND型のフラッシュメモリである。しかし、FMは、NAND型に代えて他種のフラッシュメモリ(例えばNOR型)でも良い。また、FMに代えて、他種の不揮発性半導体メモリ、例えば、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(Resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の半導体メモリや、相変化メモリが使用されても良い。
100:ストレージシステム、 200:ホスト計算機、 300:FMPK、 310:メモリモジュール、 400:ストレージコントローラ、 410:CPU、 420:メモリ、 500:FM−CTL、 510:CPU、 520:メモリ、 541:DMAコントローラ、 570:FMチップ、 571:ダイ、 572:ブロック

Claims (10)

  1. 複数の記憶デバイスと、
    前記複数の記憶デバイス及びホスト計算機に接続され、前記ホスト計算機に仮想ボリュームを提供するストレージコントローラと、
    を備え、
    前記複数の記憶デバイスの夫々は、複数の不揮発性半導体メモリと、前記複数の不揮発性半導体メモリに部分的に発生する障害を管理し、前記複数の不揮発性半導体メモリの一部に関連付けられた論理アドレス空間を前記ストレージコントローラに提供するデバイスコントローラと、を含み、
    前記ストレージコントローラは、前記複数の記憶デバイスの夫々の論理アドレス空間を記憶し、前記複数の記憶デバイスの中の2以上の記憶デバイスである第1記憶デバイスグループを使用して第1RAIDグループを構成し、前記第1RAIDグループの中の論理記憶領域を複数のページに分割し、前記ホスト計算機から前記仮想ボリュームへのライト要求に基づいて前記第1RAIDグループの中の前記複数のページの1つを前記仮想ボリュームに割り当て、
    前記第1記憶デバイスグループの中の一つの記憶デバイスである第1記憶デバイスのデバイスコントローラは、前記複数の不揮発性半導体メモリ内の部分的な障害を検出した場合、前記検出された障害を示す第1障害情報を前記ストレージコントローラへ送信し、
    前記ストレージコントローラは、前記1障害情報を受信した場合、前記第1障害情報に基づいて、前記第1記憶デバイスの論理アドレス空間の中から削減される論理アドレス範囲である第1削減領域を決定し、前記第1RAIDグループの中で前記第1削減領域に対応する第1論理記憶領域を特定し、前記仮想ボリュームの中から前記第1論理記憶領域を割り当てられている特定仮想記憶領域を特定し、前記複数の記憶デバイスの一部が割り当てられている複数の論理記憶領域の中から、前記仮想ボリュームに割り当てられていない第2論理記憶領域を選択し、前記第1論理記憶領域に格納されているデータを前記第1論理記憶領域から前記第2論理記憶領域へ移動させ、前記第2論理記憶領域を前記特定仮想記憶領域に割り当て、前記第1記憶デバイスグループの中の夫々の記憶デバイスの論理アドレス空間から前記第1削減領域に対応する論理アドレス範囲を削減する、
    ストレージ装置。
  2. 前記ストレージコントローラは、前記第1障害情報を受信した場合、前記第1障害情報に基づいて、前記第1記憶デバイスに格納されているデータのうち、前記検出された障害により失われたデータである障害データを特定し、前記第1記憶デバイスグループの中の前記第1記憶デバイス以外の記憶デバイスに格納されているデータに基づいて、前記障害データを回復し、前記回復された障害データを前記第1記憶デバイスへ書き込み、前記書き込みの後、前記第1論理記憶領域に格納されているデータを前記第1論理記憶領域から前記第2論理記憶領域へ移動させる
    請求項1に記載のストレージ装置。
  3. 前記ストレージコントローラは、前記複数の記憶デバイスの夫々の論理アドレス空間の中でRAIDグループに使用されていない論理アドレス範囲である交替領域を示す交替領域情報を記憶し、前記交替領域のサイズが前記第1削減領域のサイズ以上であり且つ前記交替領域が前記複数の記憶デバイスの中で前記第1記憶デバイスグループ以外の記憶デバイスから提供されていることを条件とし、前記条件を満たす前記交替領域が前記交替領域情報に示されているか否かを判定し、前記条件を満たす前記交替領域が前記交替領域情報に示されていると判定した場合、前記第1削減領域の代わりに前記交替領域を使用する、
    請求項2に記載のストレージ装置。
  4. 前記第1記憶デバイスのデバイスコントローラは、前記第1記憶デバイスのうち、前記検出された障害が発生した部分を閉塞する、
    請求項に記載のストレージ装置。
  5. 前記デバイスコントローラは、前記複数の不揮発性半導体メモリから前記ストレージコントローラへ提供する論理アドレス空間のサイズであるユーザ容量を記憶し、前記記憶されたユーザ容量を前記ストレージコントローラへ送信し、
    前記ストレージコントローラは、前記送信されたユーザ容量を受信し、前記受信されたユーザ容量を記憶する、
    請求項に記載のストレージ装置。
  6. 前記ストレージコントローラは、前記第1障害情報を受信した場合、前記第1記憶デバイスのユーザ容量から前記第1削減領域のサイズを削減する指示を前記第1記憶デバイスへ送信し、
    前記第1記憶デバイスのデバイスコントローラは、前記指示に応じて、前記第1記憶デバイスのユーザ容量から前記第1削減領域のサイズを削減する、
    請求項に記載のストレージ装置。
  7. 前記ストレージコントローラは、前記第1記憶デバイスグループの中の記憶デバイスのユーザ容量の最小値である最小使用可能容量を検出し、前記第1記憶デバイスグループ内の各記憶デバイスの最小使用可能容量分を用いて前記第1RAIDグループを作成する、
    請求項に記載のストレージ装置。
  8. 前記ストレージコントローラは、前記複数の記憶デバイスのうち、前記第1記憶デバイスグループと異なる2以上の記憶デバイスである第2記憶デバイスグループを使用して第2RAIDグループを作成し、
    前記ストレージコントローラは、前記第2記憶デバイスグループの中の第2記憶デバイスから、前記第2記憶デバイス内の障害を示す第2障害情報を受信した場合、前記第2障害情報に基づいて、前記第2記憶デバイスの論理アドレス空間の中から削減される論理アドレス範囲である第2削減領域を決定し、前記第2記憶デバイスグループの中の前記第2記憶デバイス以外の記憶デバイスの論理アドレス空間の中で前記第2削減領域に対応する論理アドレス範囲である関連領域を特定し、前記関連領域を前記交替領域として前記交替領域情報へ登録する、
    請求項に記載のストレージ装置。
  9. 前記複数の記憶デバイスは、RAIDグループに使用されていない記憶デバイスである代替記憶デバイスを含み、
    前記ストレージコントローラは、前記替記憶デバイス内の論理アドレス範囲を、前記交替領域として前記交替領域情報へ登録する、
    請求項に記載のストレージ装置。
  10. ホスト計算機に仮想ボリュームを提供するストレージコントローラが、複数の記憶デバイスの夫々の中の複数の不揮発性半導体メモリの一部に関連付けられ且つ前記ストレージコントローラへ提供される論理アドレス空間を記憶し、前記複数の記憶デバイスの中の2以上の記憶デバイスである第1記憶デバイスグループを使用して第1RAIDグループを構成し、前記第1RAIDグループの中の論理記憶領域を複数のページに分割し、前記ホスト計算機から前記仮想ボリュームへのライト要求に基づいて前記第1RAIDグループの中の前記複数のページの1つを前記仮想ボリュームに割り当て、
    前記第1記憶デバイスグループの中の一つの記憶デバイスである第1記憶デバイスのデバイスコントローラが、前記複数の不揮発性半導体メモリ内の部分的な障害を検出した場合、前記検出された障害を示す第1障害情報を前記ストレージコントローラへ送信し、
    前記ストレージコントローラが、前記1障害情報を受信した場合、前記第1障害情報に基づいて、前記第1記憶デバイスの論理アドレス空間の中から削減される論理アドレス範囲である第1削減領域を決定し、前記第1RAIDグループの中で前記第1削減領域に対応する第1論理記憶領域を特定し、前記仮想ボリュームの中から前記第1論理記憶領域を割り当てられている特定仮想記憶領域を特定し、前記複数の記憶デバイスの一部が割り当てられている複数の論理記憶領域の中から、前記仮想ボリュームに割り当てられていない第2論理記憶領域を選択し、前記第1論理記憶領域に格納されているデータを前記第1論理記憶領域から前記第2論理記憶領域へ移動させ、前記第2論理記憶領域を前記特定仮想記憶領域に割り当て、前記第1記憶デバイスグループの中の夫々の記憶デバイスの論理アドレス空間から前記第1削減領域に対応する論理アドレス範囲を削減する、
    ことを備えるストレージ装置制御方法。
JP2015521184A 2013-06-03 2013-06-03 ストレージ装置およびストレージ装置制御方法 Active JP6055544B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/065351 WO2014196000A1 (ja) 2013-06-03 2013-06-03 ストレージ装置およびストレージ装置制御方法

Publications (2)

Publication Number Publication Date
JP6055544B2 true JP6055544B2 (ja) 2016-12-27
JPWO2014196000A1 JPWO2014196000A1 (ja) 2017-02-23

Family

ID=52007677

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015521184A Active JP6055544B2 (ja) 2013-06-03 2013-06-03 ストレージ装置およびストレージ装置制御方法

Country Status (3)

Country Link
US (1) US10013322B2 (ja)
JP (1) JP6055544B2 (ja)
WO (1) WO2014196000A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2549242B (en) * 2013-08-20 2020-10-28 Hitachi Ltd Storage system and control method for storage system
TWI539282B (zh) * 2014-10-13 2016-06-21 慧榮科技股份有限公司 非揮發性儲存裝置與控制器
US10459639B2 (en) 2015-04-28 2019-10-29 Hitachi, Ltd. Storage unit and storage system that suppress performance degradation of the storage unit
WO2016181528A1 (ja) * 2015-05-13 2016-11-17 株式会社日立製作所 ストレージ装置
US11205483B2 (en) * 2016-04-11 2021-12-21 SK Hynix Inc. Memory system having dies and operating method of the memory system outputting a command in response to a status of a selected die
US10768838B2 (en) 2017-01-12 2020-09-08 Hitachi, Ltd. Storage apparatus and distributed storage system
WO2018142622A1 (ja) * 2017-02-06 2018-08-09 株式会社日立製作所 計算機
JP7074453B2 (ja) * 2017-10-30 2022-05-24 キオクシア株式会社 メモリシステムおよび制御方法
JP6791834B2 (ja) * 2017-11-30 2020-11-25 株式会社日立製作所 記憶システム及び制御ソフトウェア配置方法
CN112748864B (zh) * 2019-10-31 2024-04-19 伊姆西Ip控股有限责任公司 分配存储盘的方法、电子设备和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284700A (ja) * 2004-03-30 2005-10-13 Renesas Technology Corp メモリカード
JP2007193811A (ja) * 2006-01-18 2007-08-02 Apple Inc 欠陥フラッシュメモリダイの動作不能化
JP2008102819A (ja) * 2006-10-20 2008-05-01 Hitachi Ltd 記憶装置及び記憶方法
WO2009130848A1 (ja) * 2008-04-25 2009-10-29 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938144B2 (en) * 2001-03-22 2005-08-30 Matsushita Electric Industrial Co., Ltd. Address conversion unit for memory device
US6678785B2 (en) * 2001-09-28 2004-01-13 M-Systems Flash Disk Pioneers Ltd. Flash management system using only sequential write
US20040015771A1 (en) * 2002-07-16 2004-01-22 Menahem Lasser Error correction for non-volatile memory
KR100484147B1 (ko) * 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
US6781877B2 (en) * 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US7363540B2 (en) * 2002-10-22 2008-04-22 Microsoft Corporation Transaction-safe FAT file system improvements
US6831865B2 (en) * 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7917479B2 (en) * 2007-03-20 2011-03-29 Micron Technology, Inc. Non-volatile memory devices, systems including same and associated methods
US7689762B2 (en) * 2007-05-03 2010-03-30 Atmel Corporation Storage device wear leveling
US8275928B2 (en) * 2008-05-15 2012-09-25 Silicon Motion, Inc. Memory module and method for performing wear-leveling of memory module using remapping, link, and spare area tables
JP5216463B2 (ja) * 2008-07-30 2013-06-19 株式会社日立製作所 ストレージ装置、その記憶領域管理方法及びフラッシュメモリパッケージ
US8041991B2 (en) 2008-11-18 2011-10-18 Lsi Corporation System and method for recovering solid state drive data
WO2011010344A1 (ja) * 2009-07-22 2011-01-27 株式会社日立製作所 複数のフラッシュパッケージを有するストレージシステム
US9021177B2 (en) * 2010-04-29 2015-04-28 Densbits Technologies Ltd. System and method for allocating and using spare blocks in a flash memory
US8996790B1 (en) * 2011-05-12 2015-03-31 Densbits Technologies Ltd. System and method for flash memory management
US9195592B1 (en) * 2011-05-12 2015-11-24 Densbits Technologies Ltd. Advanced management of a non-volatile memory
WO2013046463A1 (ja) * 2011-09-30 2013-04-04 株式会社日立製作所 不揮発半導体記憶システム
US9201784B2 (en) * 2012-09-07 2015-12-01 Kabushiki Kaisha Toshiba Semiconductor storage device and method for controlling nonvolatile semiconductor memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005284700A (ja) * 2004-03-30 2005-10-13 Renesas Technology Corp メモリカード
JP2007193811A (ja) * 2006-01-18 2007-08-02 Apple Inc 欠陥フラッシュメモリダイの動作不能化
JP2008102819A (ja) * 2006-10-20 2008-05-01 Hitachi Ltd 記憶装置及び記憶方法
WO2009130848A1 (ja) * 2008-04-25 2009-10-29 株式会社日立製作所 ストレージシステム及びストレージシステムの制御方法

Also Published As

Publication number Publication date
US20160004615A1 (en) 2016-01-07
WO2014196000A1 (ja) 2014-12-11
US10013322B2 (en) 2018-07-03
JPWO2014196000A1 (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
JP6055544B2 (ja) ストレージ装置およびストレージ装置制御方法
US9811277B2 (en) Information processing system
US11175984B1 (en) Erasure coding techniques for flash memory
US9946616B2 (en) Storage apparatus
US10459639B2 (en) Storage unit and storage system that suppress performance degradation of the storage unit
US10452293B2 (en) Virtual storage system
US9811288B1 (en) Managing data placement based on flash drive wear level
US9047220B2 (en) Storage system and data management method
US9891989B2 (en) Storage apparatus, storage system, and storage apparatus control method for updating stored data stored in nonvolatile memory
WO2016030992A1 (ja) 記憶デバイスおよびストレージ装置
JP6216897B2 (ja) ストレージシステム
WO2009130848A1 (ja) ストレージシステム及びストレージシステムの制御方法
US10545684B2 (en) Storage device
JP2016506585A (ja) データストレージのための方法及びシステム
US20170300393A1 (en) Raid rebuild algorithm with low i/o impact
CN101566931A (zh) 虚拟磁盘驱动系统和方法
US10846231B2 (en) Storage apparatus, recording medium, and storage control method
US9223655B2 (en) Storage system and method for controlling storage system
CN102164165A (zh) 一种网络存储系统的管理方法及装置
CN101566929A (zh) 虚拟磁盘驱动系统和方法
JP6817340B2 (ja) 計算機
CN102147714A (zh) 一种网络存储系统的管理方法及装置
WO2018002999A1 (ja) 記憶デバイス及びストレージ装置
US11467904B2 (en) Storage system and control method of the same

Legal Events

Date Code Title Description
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: 20161108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161202

R150 Certificate of patent or registration of utility model

Ref document number: 6055544

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150