JP6216897B2 - ストレージシステム - Google Patents
ストレージシステム Download PDFInfo
- Publication number
- JP6216897B2 JP6216897B2 JP2016570374A JP2016570374A JP6216897B2 JP 6216897 B2 JP6216897 B2 JP 6216897B2 JP 2016570374 A JP2016570374 A JP 2016570374A JP 2016570374 A JP2016570374 A JP 2016570374A JP 6216897 B2 JP6216897 B2 JP 6216897B2
- Authority
- JP
- Japan
- Prior art keywords
- storage
- raid group
- data
- chunk
- fmpk
- 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
Links
- 238000000034 method Methods 0.000 claims description 68
- 230000006866 deterioration Effects 0.000 claims description 9
- 238000012546 transfer Methods 0.000 claims description 7
- 238000007726 management method Methods 0.000 description 84
- 238000012545 processing Methods 0.000 description 45
- 230000010354 integration Effects 0.000 description 19
- 238000013508 migration Methods 0.000 description 15
- 230000005012 migration Effects 0.000 description 15
- 238000012937 correction Methods 0.000 description 14
- 238000013507 mapping Methods 0.000 description 12
- 238000006243 chemical reaction Methods 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 9
- 239000004065 semiconductor Substances 0.000 description 6
- 238000013403 standard screening design Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000007689 inspection Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0706—Error 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/0727—Error 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error 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/0751—Error or fault detection not based on redundancy
- G06F11/0754—Error or fault detection not based on redundancy by exceeding limits
- G06F11/076—Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、不揮発性半導体メモリを用いたストレージシステムに関する。
NAND型フラッシュメモリに代表される不揮発性半導体メモリは、HDD等の磁気記憶デバイスに比べて省電力・高性能だが、高価格であった。しかし近年は、半導体技術の進歩に伴って低価格化が進み、HDDに替わるメインストリームの記憶デバイスとして注目されてきている。
フラッシュメモリを用いたストレージ装置(フラッシュストレージ)には、書き換え回数(消去回数)に制限がある、という特性がある。そのため、特定の記憶領域に対する書き換えが頻発すると、その領域が早い段階で寿命を迎え(アクセスできなくなる)、結果としてそのフラッシュストレージ全体が使用できなくなる。
この問題を解決するために、たとえば特許文献1には、SSD等の不揮発性半導体記憶デバイスが、各記憶領域の消去回数が平滑化されるようにデータの格納位置を制御することが開示されている。さらに特許文献1では、SSDを複数搭載したストレージ装置において、SSD間の消去回数も平滑化するために、残寿命の短いSSDと残寿命の長いSSDとで、格納データを交換することで消去回数を平滑化すること、また残寿命は、残消去回数の減少速度に基づいて算出される値であることが、開示されている。
特許文献1に開示の装置は、消去回数(またはライト数)が等しければ各記憶デバイスの残寿命が同じ、という前提で作られている。この前提が成り立つ場合には、特許文献1に記載の方法により、特定の記憶デバイスだけが早い段階で使用できなくなるということはなくなる。そしてその結果、ストレージ装置に搭載された各記憶媒体は、あらかじめ想定された期間(耐用年数)を通して、使用可能な状態を維持できる。
ただし実際には各記憶媒体の品質は均一ではなく、各記憶媒体の消去回数がほぼ等しくなるように制御しても、ある記憶媒体はまだアクセス可能な状態にある(寿命に達していない)が、別の記憶媒体はアクセス不可能な状態(寿命に達している)にある、という事態が発生し得る。そのため実際には、消去回数のみを制御していると、各記憶媒体を耐用年数まで使用し続けることは難しい。
本発明の一観点に係るストレージシステムは、ストレージコントローラと複数の記憶デバイスを有する。各記憶デバイスは、エラービット数(リード時に発生した、コレクタブルエラーの数)に基づいて劣化度を算出して、ストレージコントローラに送信する。ストレージコントローラは、受信した各記憶デバイスの劣化度に基づいて各RAIDグループの寿命を算出することにより、目標耐用年数(ターゲット寿命)を待たずに寿命を迎えると予測されるRAIDグループを特定し、特定されたRAIDグループに格納されているデータを、別のRAIDグループに移動する。
本発明によれば、各記憶媒体の寿命を平滑化でき、耐用年数までの使用を保証することができる。
以下、本発明の実施例について、図面を用いて説明する。なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
また、以後の説明では「aaaテーブル」等の表現にて本発明の情報を説明する場合があるが、これら情報は、テーブル等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「aaaテーブル」等について「aaa情報」と呼ぶことがある。また、「bbb名」等の表現にて本発明の「bbb」を識別するための情報を説明する場合があるが、これらの識別するための情報は、名前に限られず、識別子や識別番号、アドレスなど、「bbb」が特定できる情報であればよい。
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、実際には、プログラムはプロセッサ(CPU(Central Processing Unit))によって実行されることで、プロセッサが定められた処理をメモリ及びI/F(インタフェース)を用いながら行う。ただし説明が冗長になることを防ぐため、プログラムを主語として説明することがある。また、プログラムの一部または全ては専用ハードウェアによって実現されてもよい。また、各種プログラムはプログラム配布サーバや、計算機が読み取り可能な記憶メディアによって各装置にインストールされてもよい。記憶メディアとしては、例えば、ICカード、SDカード、DVD等であってもよい。
図1は、実施例に係るストレージ装置(ストレージシステム)1の構成を示す。ストレージ装置1は、ストレージコントローラ10と、ストレージコントローラ10に接続された複数のフラッシュメモリパッケージ(FMPK)20を有する。
FMPK20は、ホスト2などの上位装置からのライトデータを格納するための記憶デバイスで、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用した記憶デバイスである。FMPK20の内部構成は後述する。FMPK20は一例として、SAS(Serial Attached SCSI)規格に従う伝送線(SASリンク)によって、ストレージコントローラ10と接続される。
また、図1に示されているように、本実施例のストレージ装置1にはFMPK20の他、HDD(Hard Disk Drive)25も搭載可能である。HDD25は、磁気ディスクを記録媒体とする記憶デバイスである。HDD25もFMPK20と同様、ストレージコントローラ10に接続される。またFMPK20と同様、HDD25もSASリンクによってストレージコントローラ10に接続される。ただし以下では、本実施例のストレージ装置1には、記憶デバイスとしてFMPK20のみが接続されている構成について中心に説明する。
ストレージコントローラ10には、1以上のホスト2が接続される。またストレージコントローラ10には、管理ホスト5が接続される。ストレージコントローラ10とホスト2とは、一例としてファイバチャネルを用いて形成されるSAN(Storage Area Network)3を介して接続される。ストレージコントローラ10と管理ホスト5とは、一例としてイーサネットを用いて形成されるLAN(Local Area Network)6を介して接続される。
ストレージコントローラ10は少なくとも、プロセッサ(CPU)11、ホストインタフェース(図中では「ホストI/F」と表記)12、ディスクインタフェース(図中では「ディスクI/F」と表記)13、メモリ14、管理用I/F15を有する。そしてプロセッサ11、ホストIF12、ディスクIF13、メモリ14、管理用I/F15は、内部スイッチ(内部SW)16を介して相互接続されている。図1ではこれらの構成要素がそれぞれ1つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ10内に複数搭載されていてもよい。また内部SW16ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。
ディスクI/F13は少なくとも、インタフェースコントローラと転送回路を有する。インタフェースコントローラは、FMPK20の用いているプロトコル(一例ではSAS)をストレージコントローラ10内部で用いられている通信プロトコル(一例としてPCI−Express)に変換するためのコンポーネントである。転送回路は、ストレージコントローラ10が、FMPK20に対してデータの転送(リード、ライト)を行う際に用いられる。
ホストI/F12は、ディスクI/F13と同様に、少なくともインタフェースコントローラと転送回路を有する。ホストI/F12が有するインタフェースコントローラは、ホスト2とストレージコントローラ10間のデータ転送経路で用いられている通信プロトコル(たとえばファイバチャネル)と、ストレージコントローラ10内部で用いられている通信プロトコルを変換するためのものである。
プロセッサ11は、ストレージ装置1の各種制御を行う。メモリ14は、プロセッサ11が実行するプログラムや、プロセッサ11が使用するストレージ装置1の各種管理情報を記憶するために用いられる。またメモリ14は、FMPK20に対するI/O対象データを一時的に記憶するためにも用いられる。以下、FMPK20に対するI/O対象データを一時的に記憶するために用いられる、メモリ14中の記憶領域を、「キャッシュ」と呼ぶ。メモリ14はDRAM、SRAM等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ14を構成してもよい。
図2を用いて、FMPK20の構成について説明する。FMPK20は、FMPKコントローラ200と複数のFMチップ210から構成される。FMPKコントローラ200は、プロセッサ(CPU)201、FMPK I/F202、FMチップI/F203、メモリ204を有し、これらは内部接続スイッチ(内部接続SW)208を介して相互接続されている。
FMPK I/F202は、FMPK20とストレージコントローラ10間の通信を行うためのインタフェースコントローラである。FMPK I/F202は、伝送線(SASリンク)を介してストレージコントローラ10のディスクI/F13に接続される。一方FMチップI/F203は、FMPKコントローラ200とFMチップ210間の通信を行うためのインタフェースコントローラである。
またFMチップI/F203は、ECC(Error Correcting Code)の生成、ECCを用いたエラー検出及びエラー訂正を行う機能を有している。FMPKコントローラ200からFMチップ210にデータが送信(書き込み)される際、FMチップI/F203はECCを生成する。そしてFMチップI/F203はデータに対し、生成されたECCを付加し、FMチップ210にはECCの付加されたデータを書き込む。FMPKコントローラ200がFMチップ210からデータを読み出す際、FMチップ210からはECCの付加されたデータが読み出され、FMチップI/F203にはこのECCの付加されたデータが到来する。FMチップI/F203はECCを用いてデータエラーチェック(データからECCを生成し、この生成されたECCと、データに付加されているECCが一致するかチェック)を行い、データエラーが検出された場合、ECCを用いてデータ訂正を行う。またFMチップI/F203はデータエラーが発生した場合、データエラーの発生数をCPU201に通知する機能も備えている。
CPU201は、ストレージコントローラ10から到来する各種コマンドに係る処理等を行う。メモリ204は、プロセッサ201が実行するプログラムや、各種管理情報が記憶される。メモリ204には、DRAM等の揮発性メモリが用いられる。ただしメモリ204に不揮発性メモリが使用されても良い。
FMチップ210は、たとえばNAND型フラッシュメモリ等の不揮発性半導体メモリチップである。フラッシュメモリは周知のとおり、ページ単位でデータの読み出し・書き込みが行われ、またデータ消去は、複数ページの集合であるブロック単位で行われる。そして一度書き込みが行われたページは上書きが出来ず、一度書き込みが行われたページに対して再度書き込みを行うためには、当該ページを含むブロック全体を消去する必要がある。
続いて、本実施例に係るストレージ装置1で説明される処理を実行するために必要となる、プログラム及び管理情報について説明する。ストレージコントローラ10のメモリ14には、図5に示されるように、少なくとも寿命予測プログラム101、ストレージライトI/Oプログラム102、仮想ボリューム管理テーブル500、プール管理テーブル550、RAIDグループ管理テーブル650が存在する。以下で、これらのプログラム及び管理テーブルの内容について説明していく。
その前に、ストレージ装置1で用いられる記憶領域の概念について説明する。ストレージ装置1は、複数のFMPK20を1つのRAID(Redundant Arrays of Inexpensive/Independent Disks)グループとして管理する。そしてRAIDグループ内で1つ(あるいは2つ)のFMPK20に障害が発生してデータアクセスできなくなった場合に、残りのFMPK20内のデータを用いて、障害が発生したFMPK20に格納されていたデータを復旧できるようにしている。
RAIDグループ内の記憶領域について、図3を用いて説明する。図3において、FMPK#0(20−0)〜FMPK#3(20−3)はそれぞれ、FMPK20がストレージコントローラ10に提供している記憶空間を表している。ストレージコントローラ10は、複数(図3の例では4つ)のFMPK20から1つのRAIDグループ30を構成し、RAIDグループ30に所属する各FMPK(FMPK#0(20−0)〜FMPK#3(20−3))上の記憶空間を、ストライプブロック(301)と呼ぶ複数の固定サイズの記憶領域に分割して管理している。
また図3では、RAIDグループ30のRAIDレベル(RAID技術におけるデータ冗長化方式を表すもので、一般的にはRAID1〜RAID6のRAIDレベルがある)がRAID5である場合の例を表している。図3において、RAIDグループ20内の、「0」、「1」、「P」などのボックスがストライプブロックを表しており、ストライプブロックのサイズはたとえば、64KB、256KB、512KBなどである。また、各ストライプブロックに付されている、「1」等の番号のことを、「ストライプブロック番号」と呼ぶ。
図3で、ストライプブロックのうち、「P」と記載されているストライプブロックは、冗長データ(パリティ)の格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、数字(0、1等)が記載されているストライプブロックは、ホスト2等の上位装置から書き込まれるデータ(冗長データではないデータ)が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。
図3に示されたRAIDグループ30では、たとえばFMPK#3(20−3)の先頭に位置するストライプブロックはパリティストライプ301−3である。そしてストレージコントローラ10がこのパリティストライプ301−3に格納される冗長データを作成する際、各FMPK20(FMPK#0(20−0)〜FMPK#2(20−2))の先頭に位置するデータストライプ(ストライプブロック301−0、301−1、301−2)に格納されるデータに対して所定の演算(たとえば排他的論理和(XOR)等)を施すことによって、冗長データを生成する。
以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセット(たとえば図3中の要素300)のことを、「ストライプライン」と呼ぶ。本実施例に係るストレージ装置1の場合、図3に示されているストライプライン300のように、1つのストライプラインに属する各ストライプブロックは、FMPK20−0〜20−3の記憶空間の同じ位置(アドレス)に存在するという規則で、ストライプラインが構成される。
さらにストレージコントローラ10は、RAIDグループ内に連続配置される複数のストライプラインを「チャンク」と呼ばれる管理単位で管理する。図3に示されているように、1つのチャンク31は、複数のストライプラインを有する。ただし1つのチャンク31が1つのストライプラインのみを有する構成でもよい。
またストレージコントローラ10は、ホスト2にはRAIDグループの記憶領域とは異なる、1以上の仮想的な記憶空間を提供する。この仮想的な記憶空間を「仮想ボリューム」と呼ぶ。仮想ボリュームの記憶空間も、所定サイズの領域ごとに分割管理される。この所定サイズの領域は「仮想チャンク」と呼ばれる。仮想チャンクとは、FMPK20の記憶領域の割り当て単位である。
1つの仮想チャンクには1つのチャンクがマップされ、ホスト2から仮想チャンクに対するデータライトがあった時、マップされたチャンクにデータが格納される。ただし、仮想チャンクにチャンクがマップされる時、チャンク内のデータストライプのみがマップされる。そのため、仮想チャンクのサイズは、チャンクに含まれる全データストライプの合計サイズに等しい。ストレージコントローラ10は、後述する仮想ボリューム管理テーブル500に、仮想チャンクとチャンクのマッピングを記録することで、仮想チャンクに割り当てられる記憶領域(チャンク)を管理している。
仮想ボリュームが定義された直後は、仮想ボリュームの各仮想チャンクには、チャンクがマップされていない。ストレージコントローラ10は、ホスト2から仮想チャンク上の領域に対するライト要求を受信した時にはじめて、当該領域に対してライトされたデータの書き込まれるべき、FMPK20上の記憶領域(チャンク)を決定する。ここで決定されるチャンクは、まだどの仮想チャンクにも割り当てられていないチャンク(未使用チャンク)のなかから1つのチャンクが決定される。
本実施例に係るストレージ装置1では、ある仮想ボリュームの仮想チャンクに割り当て可能なチャンクには、所定の制約がある。仮想チャンクに割り当て可能な記憶領域(チャンク)を有する1または複数のRAIDグループは、プールという管理単位で管理される。図4に、プールとRAIDグループ30、仮想ボリューム40の関係を示す。ストレージ装置1は1以上のプールを管理可能であり、ストレージ装置1が複数のプールを管理する場合、仮想チャンクに割り当て可能な記憶領域を有する1または複数のRAIDグループは、複数のプールのうちいずれか1つのプールで管理される。以下、あるプール(仮にプールXと呼ぶ)で管理されるRAIDグループ(及びこのRAIDグループ内のチャンク)のことを、「プールXに属するRAIDグループ(及びチャンク)」と呼ぶ。また、各仮想ボリューム(の仮想チャンク)にチャンクが割り当てられる場合、割り当て可能なチャンクが属するプールは、あらかじめ仮想ボリュームごとに1つに定められている。
図6を用いて仮想ボリューム管理テーブル500の内容を説明する。先にも述べたが、仮想ボリューム管理テーブル500は、ストレージ装置1内に定義された各仮想ボリューム内の仮想チャンクと、チャンクとのマッピング関係を管理するためのテーブルである。仮想ボリューム管理テーブル500は仮想ボリューム#501、プール#502、仮想ボリュームLBA範囲503、仮想チャンク番号504、RAIDグループ番号505、チャンク番号506のカラムを有する。仮想ボリューム管理テーブル500の各行(レコード)は、仮想ボリューム#501及び仮想チャンク番号504により特定される仮想チャンクに対し、RAIDグループ番号505及びチャンク番号506で特定されるチャンクがマッピングされていることを表す。なお、以降では、仮想ボリューム管理テーブル500に限らず、各種情報を管理するテーブルの各行のことを「レコード」と呼ぶ。
また初期状態では、仮想チャンクにチャンクはマッピングされていない。仮想チャンクに対するライト要求をホスト2から受け付けた時点で、仮想チャンクにチャンクがマッピングされる。仮想チャンク番号504で特定される仮想チャンクに対してチャンクがマッピングされていない場合、当該レコードのRAIDグループ番号505及びチャンク番号506には無効値(NULL)が格納される。
またプール#502は、仮想ボリュームに割り当て可能なチャンクの属するプールの識別番号が格納される。つまり、仮想ボリューム#501で特定される仮想ボリュームの仮想チャンクに割り当て可能なチャンクは原則として、プール#502に属するチャンク(またはRAIDグループ)に限定される。また仮想ボリュームLBA範囲503は、仮想チャンク番号504で特定される仮想チャンクが、仮想ボリューム上のどの範囲に相当する領域であるかを表す情報である。一例として、図6の行(レコード)500−1では、仮想ボリュームLBA範囲503は“0x0500〜0x09FF”、仮想チャンク番号504は“2”であるから、仮想ボリューム#0の仮想チャンク2は、仮想ボリューム#0のLBAが0x0500〜0x09FFの領域に相当することを表している。
プールは、プール管理テーブル550によって管理される。図7を用いてプール管理テーブル550の内容を説明する。プール管理テーブル550は、プール#551、RG#552、チャンク#553、RAIDグループLBA554、ステータス555、WR要求量556のカラムを有する。プール管理テーブル550において、各レコードはチャンクについての情報を格納するためのものである。各レコードのRG#552は、チャンクの属しているRAIDグループのRAIDグループ番号を表し、プール#551は、チャンクの属しているプールのプール番号を表す。さらにプール#551は、RG#552で特定されるRAIDグループの属するプール番号を表している。
また、各レコードのRAIDグループLBA554は、チャンクがRAIDグループ上のどの範囲に位置づけられているかを表す情報である。ステータス555は、チャンクが仮想チャンクに割り当てられているか(マップされているか)否かを表す情報である。ステータス555に「割当済」が格納されている場合、チャンクが仮想チャンクに割り当てられていることを表す。逆にステータス555に「未割当」が格納されている場合、チャンクが仮想チャンクに割り当てられていないことを意味する。WR要求量556は、これまでにチャンクに対して、ストレージコントローラ10がライトしたデータ量の総量を表す。なお、ストレージコントローラ10がチャンクにデータをライトする際、パリティストライプにもライトする。そのためWR要求量556には、パリティストライプに対してライトした情報(パリティ)の量も含まれる。
先に述べたが、本実施例に係るストレージ装置1において、仮想ボリュームの仮想チャンクにマッピングされるチャンク(及びそのチャンクを有するRAIDグループ)は、仮想ボリュームの登録されているプールに属していなければならない。ただし本実施例に係るストレージ装置1は、プールに属していないRAIDグループを有することも可能である。このRAIDグループを、スペア(Spare)RAIDグループと呼ぶ。
ストレージ装置1は、スペアRAIDグループもプール管理テーブル550を用いて管理する。本実施例に係るストレージ装置1では、スペアRAIDグループは便宜上、プール#551がNULL(無効値)のプールに所属させる形で、管理される。図7では、プール#551がNULL(無効値)のプールに、RG#552がKのRAIDグループが存在する。このRAIDグループが、スペアRAIDグループである。
スペアRAIDグループのチャンクは、後述するチャンク移動処理が実行された結果、用いられることがある。詳細は後述するが、チャンク移動処理により、適切なチャンクの移動先がプール内に存在しない場合、例外的な措置として、チャンク(に格納されたデータ)が、スペアRAIDグループ内のチャンクに移動されることがある。
本実施例に係るストレージ装置1では、FMPK20のエラー発生数やライト要求量を収集し、それらを用いてFMPK20及びRAIDグループの寿命管理を行っている。そのため、FMPK20から収集した情報などを管理するテーブルを有する。そのテーブルをRAIDグループ管理テーブル650と呼ぶ。図8を用いてRAIDグループ管理テーブル650の内容を説明する。
RAIDグループ管理テーブル650は、RG#651、ドライブ番号652、RAIDグループLBA653、平均寿命比率654、ライト積算量655(WR積算量655と表記されることもある)、ターゲット寿命656、残寿命657、使用開始日658、RAIDグループ残寿命659、RAIDグループ使用年数660のカラムを有する。RG#651にはRAIDグループのRAIDグループ番号が格納され、ドライブ番号652には、RG#651で特定されるRAIDグループに属するFMPK20の識別子が格納される。RAIDグループLBA653には、ドライブ番号652で特定されるFMPK20の各領域が、RAIDグループ上のどの領域に位置づけられるかを表す情報である。
平均寿命比率654、WR積算量655、ターゲット寿命656、残寿命657、使用開始日658、RAIDグループ残寿命659、そしてRAIDグループ使用年数660は、「寿命情報」と総称される情報である。ストレージ装置1は、これらの寿命情報を用いて寿命管理を行う。
平均寿命比率654は、FMPK20で発生したエラー(コレクタブルエラー)発生数をもとに算出される値であり、詳細は後述する。この情報は、ストレージコントローラ10がFMPK20から取得する。WR積算量655は、これまでにFMPK20の記憶領域(FMチップ210の物理ページ)に対してライトされたデータの総量である。この情報も、ストレージコントローラ10がFMPK20から取得する。
ターゲット寿命656は、FMPK20の目標耐用年数が格納される欄である。通常、各FMPK20は、FMPK20(あるいはストレージ装置1)の製造者によって、あらかじめ目標耐用年数(たとえば5年等の年数)が定められている。ストレージ装置1の管理者は、RAIDグループを定義する際、ターゲット寿命656の欄に、FMPK20に定められている目標耐用年数を格納する。ただし、ストレージ装置1が自動的に目標耐用年数をターゲット寿命656に設定するようにしてもよい。
残寿命657は、FMPK20の残寿命(予測値)を格納するための欄である。ストレージコントローラ10が平均寿命比率654やWR積算量655をもとに、この残寿命(予測値)を算出し、残寿命657に格納する。残寿命(予測値)を算出する方法等については、後述する。
使用開始日658は、FMPK20が使用され始めた日(年月日)が格納される欄である。本実施例のストレージ装置1は、FMPK20がストレージ装置1にインストールされた時点で、使用が開始されたと判断する。そのためFMPK20がストレージ装置1にインストールされた時点の日付が、使用開始日658に格納される。RAIDグループ残寿命659は、ストレージコントローラ10が残寿命657を元に算出する値である。詳細は後述する。RAIDグループ使用年数660は、ストレージコントローラ10が使用開始日658を元に算出する値である。詳細は後述する。
RAIDグループ管理テーブル650には、上で説明した以外の情報が含まれていてもよい。たとえばRAIDグループのRAID構成に関する情報(RAIDグループを構成するFMPK20の台数、RAIDレベルなど)が格納されていてもよい。また、本実施例では説明の簡単化のため、RAIDグループを構成するFMPK20の台数及びRAIDレベルが、全RAIDグループで同一とする。
次にFMPK20で管理される情報及びFMPK20が実行するプログラムについて、図9を用いて説明する。FMPK20のメモリ204には少なくとも、稼働情報集計プログラム241、検査プログラム242の、2種類のプログラムが格納される。また論理物理変換テーブル1100、ブロック管理テーブル1150、閾値エラービット数管理テーブル1200、WR量管理テーブル1250のテーブルが格納される。
論理物理変換テーブル1100は、FMPK20の管理する論理ページと物理ページのマッピングを管理するためのテーブルである。FMPK20は記憶媒体にフラッシュメモリを採用している。よく知られているように、フラッシュメモリ(FMチップ210)の最小アクセス(リード、ライト)単位はページ(物理ページ)である。物理ページのサイズはたとえば8KBである。そのためFMPK20は、FMPK20がストレージコントローラ10に提供している記憶空間を、物理ページと同サイズの領域に分割して管理している。この物理ページと同サイズの領域のことを、「論理ページ」と呼ぶ。そしてFMPK20は、1つの論理ページに1つの物理ページをマッピングさせる。
本実施例に係るFMPK20は、複数のFMチップ210を有する。各FMチップ210は、データ消去単位である物理ブロックを複数有している。各物理ブロックは複数の物理ページを有する。また本実施例に係るFMPK20は、全FMチップ210内の各物理ブロックに対し、FMPK20内で一意な識別番号を付して管理しており、この識別番号はブロック番号(ブロック#)と呼ばれる。また、物理ブロック内の各ページには、物理ブロック内で一意な番号を付して管理しており、この番号はページ番号(または物理ページ#)と呼ばれる。ブロック#と物理ページ#が特定されることにより、FMPK20内の物理ページが一意に特定される。
また、本実施例に係るFMPK20は、FMPK20内の各論理ページに、FMPK内で一意な識別番号を付して管理している。この識別番号は論理ページ番号(論理ページ#)と呼ばれる。論理物理変換テーブル1100には、ある論理ページにマッピングされる物理ページの、ブロック#と物理ページ#の情報が、論理ページごとに格納されている。
論理物理変換テーブル1100は、図10に示されているように、FMPK LBA1101、論理ページ#1102、ステータス1103、ブロック#1104#、物理ページ#1105のカラムを有する。論理物理変換テーブル1100の各レコードには、論理ページ#1102で特定される論理ページについての情報が格納される。FMPK LBA1101には、論理ページに対応する、FMPK20がストレージコントローラ10に提供している記憶空間上のLBA(の範囲)が格納される。FMPK20がストレージコントローラ10からアクセス要求を受信すると、FMPK20は、FMPK LBA1101と論理ページ#1102を用いて、アクセス要求に含まれているLBAを、論理ページ#に変換することができる。そして、ブロック#1104、物理ページ#1105にはそれぞれ、論理ページにマッピングされる物理ページを特定するための情報(つまりブロック#と物理ページ#)が格納される。
ステータス1103は、物理ページが論理ページにマッピングされているか否かを表す情報が格納される。FMPK20の論理ページには、初期状態では物理ページはマッピングされていない。ストレージコントローラ10からライト要求を受信した時点で、ライト要求でライト対象となる論理ページに対して物理ページがマッピングされる。ステータス1103に「割当」が格納されている場合、物理ページが論理ページにマッピングされていることを表す。逆にステータス1103に「未割当」が格納されている場合、物理ページが論理ページにマッピングされていないことを意味する(この時、論理ページに対応するブロック#1104と物理ページ#1105にはNULL(無効値)が格納される)。
良く知られているように、一旦書き込みが行われた物理ページは上書きが不可能である(物理ページの上書きをしたい場合、物理ページの属する物理ブロック全体を一度消去する必要がある)。そのためFMPK20では、ある論理ページに対する更新(上書き)要求をストレージコントローラ10から受信すると、更新データを、更新前データの書き込まれている物理ページ(旧物理ページと呼ぶ)とは異なる物理ページ(新物理ページと呼ぶ)に格納する。そして更新対象となる論理ページに対応する、ブロック#1104と物理ページ#1105に、新物理ページのブロック#、物理ページ#を格納する。
一方ブロック管理テーブル1150は、物理ブロック/物理ページの状態を管理するためのテーブルである。ブロック管理テーブル1150について、図11を用いて説明する。ブロック管理テーブル1150内の各レコードには、FMPK20内の物理ページについての情報が格納される。ブロック管理テーブル1150は、ブロック#1151、物理ページ#1152、ステータス1153、エラービット数1154、最終WR時刻1155、WR後経過時間1156、寿命比率1157のカラムを有する。
ブロック#1151、物理ページ#1152、ステータス1153はそれぞれ、論理物理変換テーブル1100の、ブロック#1104、物理ページ#1105、ステータス1103と同じ情報である。つまりある物理ページが論理ページに割り当てられると、割り当てられた物理ページのブロック#、物理ページ#が、論理物理変換テーブル1100のブロック#1104及び物理ページ#1105に格納され、ステータス1103に「割当」が格納される。そして同時に、割り当てられた物理ページのステータス1153(ブロック管理テーブル1105内の)にも、「割当」が格納される。
エラービット数1154には、後述する検査プログラムが実行された時に発生したエラービット数が格納される。詳細は検査プログラムの説明の際に説明する。最終WR時刻1155は、物理ページに対してライト(あるいは消去)が行われた最新の時刻が格納される。またWR後経過時間1156には、後述する検査プログラムが実行された時に、物理ページが最後にライト(または消去)されてからの経過時間が格納される。寿命比率1157には、後述する稼働情報集計プログラムが実行された時に算出される寿命比率が格納される。寿命比率については、以下で述べる。
続いて本実施例に係るストレージ装置1で寿命管理に用いられる指標である、寿命比率及び平均寿命比率について、図12、図13を用いて説明する。FMPK20が物理ページにデータを格納する際、データからECC(Error Correcting Code)を算出し、データとともにECCも物理ページに格納する。フラッシュメモリの特性として、物理ページへのデータの格納後、時間が経つにつれ、格納されたデータに含まれるエラーが増加する傾向がある。なお、ここでの「エラー」の意味を簡単に説明しておく。たとえばFMPK20がFMチップ上のある領域(1ビット領域とする)に“0”を格納したとしても、時間が経つにつれ、データ内容が“0”から“1”に変化してしまうことがある。本明細書ではこの現象を「エラーが発生した」と呼んでいる。また、エラーの発生した1ビット領域(またはエラーの発生した1ビット領域から読み出された1ビットのデータ)のことを「エラービット」と呼ぶ。エラーの発生する原因は、その領域が多数回書き替えられて劣化した、あるいはその領域の品質(格納されたデータ内容を維持する能力)が先天的に悪かった場合などがある。ただし物理ページに格納されるデータにはECCが付加されているため、データ読み出し時にエラーが含まれていても、読み出し対象領域に含まれているエラービットの数が所定数以下であれば、ECCを用いたデータ訂正が可能である。
訂正可能なビット数の上限は、付加されるECCの強度(エラー訂正能力)に依存する。物理ページに格納されたデータに、ECCによる訂正が可能なビット数の上限(以下、これを「訂正限界エラービット数」と呼ぶ)を超える数のエラービットが含まれるようになると、そのデータは読み出し不可能になる。FMPKコントローラ200は、ある物理ページに格納されたデータに、あらかじめ定められた閾値(この閾値のことを「エラービット数閾値」と呼ぶ。ただし、エラービット数閾値<訂正限界エラービット数、の関係にある)以上のエラービットが含まれていた場合、その物理ページを含む物理ブロックの使用を停止する(その時点で、この物理ブロックに格納されていたデータは、FMPK20のCPU201によって他の物理ブロックに移動される)。このようにすることで、データがFMPK20から読み出し不可能になる事態(アンコレクタブルエラーが発生する事態)を極力避けることができる。
また、物理ページに格納されたデータに含まれるエラービットの数は、ライト後の経過時間とともに増加する傾向がある。図12に、FMの記憶領域(たとえば物理ページ)から読み出されたデータに含まれるエラービット数と、ライト後経過時間との関係を表したグラフの一例を示す。図12の曲線(a)は、FMチップ(仮にチップAと呼ぶ)の物理ページ(仮にページaと呼ぶ)に対してデータをライトして時間tが経過した後、ページaをリードした際に検出されたエラービットの数をプロットしたグラフの一例である。同様に曲線(b)は、FMチップ(仮にチップBと呼ぶ)の物理ページ(仮にページbと呼ぶ)に対してデータをライトして時間tが経過した後、ページbをリードした際に検出されたエラービットの数をプロットしたグラフの一例である。グラフの横軸は、物理ページへのライト後の経過時間を表し、縦軸は物理ページのリードを行った際に検出されたエラービットの数(以下では、「エラービット検出数」と呼ぶ)を表す。
図12から分かる通り、ページa,bのいずれも、ライト後の経過時間が長くなるほど、リード時に検出されるエラービット数は単調増加する傾向がある。ただしページbの場合、ライト後の経過時間がt1の時点でe個のエラービットが検出されているのに対し、ページaの場合にはライト後の経過時間がt2(t1<t2)の時点でe個のエラービットが検出されている。この場合、ページbのほうがページaよりもエラービット数の増加する速度が速いので、ページbはページaよりも早い時期に、エラービット検出数が訂正限界エラービット数を超過する可能性が高い。図12の場合には、ライト後経過時間がt3に達した時点で、ページbのエラービット検出数は訂正限界エラービット数を超過している。そのため、ページbの当該物理ページは早期に使用を停止することが望ましい。ただしページaは、図12のグラフから分かる通り、ライト後の経過時間がかなり長くなっても、エラービット検出数が訂正限界エラービット数を超過する可能性は低い。したがってページaは、使用を継続していてもよい。
ここで仮に、エラービット数閾値をeに設定していたとすると、ページaとbはいずれも使用が停止される。つまりページaはまだ使用継続可能な状態にあるにもかかわらず使用が停止される。そのため、エラービット数閾値として単一の値を用いていると、まだ使用継続可能な状態にあるページも使用停止されることになり、望ましくない。そのため本実施例のFMPK20では、ライト後経過時間ごとにエラービット数閾値を定めている。そして物理ページ(を含む物理ブロック)を検査した際の使用停止要否の判定の際には、FMPK20は当該ページのライト後経過時間から適切なエラービット数閾値を導出し、「エラービット検出数÷導出されたエラービット数閾値」を計算する。この値のことを「寿命比率」と呼ぶ。物理ページの寿命比率を計算した結果、寿命比率が1以上であった場合、FMPK20は当該物理ページの使用を停止するべきと判断する。つまり、寿命比率はFMチップ(あるいは物理ページ)の劣化度合いを表す指標値であり、物理ページの寿命比率が大きいほど、その物理ページが劣化している(寿命に近い)ことを表している。
図13は、エラービット数閾値管理テーブル1200の内容を表している。エラービット数閾値管理テーブル1200は、WR間隔1201、エラービット数閾値1202のカラムを有している。WR間隔1201は、物理ページのライト後の経過時間の範囲の情報が格納されるカラムである。そして、ライト後経過時間がWR間隔1201に格納された範囲である物理ページのエラービット数閾値は、エラービット数閾値1202に格納された値であることを表している。FMPK20は、物理ページの寿命比率の計算を行う際、エラービット数閾値管理テーブル1200の各行のうち、WR間隔1201の値の範囲が、検査対象物理ページのライト後経過時間を含む行を検索する。そして検索された行のエラービット数閾値1202に格納された値を、エラービット数閾値として用いる。
なお本実施例では、エラービット数閾値管理テーブル1200を用いてエラービット数閾値を決定する方法が説明されるが、これ以外の方法でエラービット数閾値が決定されてもよい。たとえばエラービット数閾値管理テーブル1200のようなテーブルを用いる代わりに、ストレージコントローラ10に、ライト後経過時間を入力するとエラービット数閾値を出力する関数を持たせるようにしてもよい。
以上が、ストレージコントローラ10のメモリ14、FMPKコントローラ200のメモリ204に格納される、主要な管理情報の説明である。以下では、ストレージコントローラ10、FMPKコントローラ200で実行されるプログラムの処理の詳細を説明していく。
図14は、検査プログラム242の処理フローである。検査プログラム242は、FMPK20のCPU201により定期的に実行される。以下、検査プログラム242の実行する処理のことを「検査処理」と呼ぶ。検査プログラム242の実行が開始されると、FMPK20内の全物理ページに対して、リード(検査読み込み)が行われる。
S242−1でCPU201は、未検査の物理ページを1つ選択し、選択された物理ページのデータリードを行う。リードの過程で、FMチップI/F203はデータに付加されたECCを用いてデータエラーチェックを行う。データエラーが存在することが判明した場合、FMチップI/F203はECCを用いたデータ訂正を試みる。データ訂正を試みた結果、データ訂正が成功する場合と失敗する場合がある。データ訂正が失敗した場合には、FMチップI/F203からCPU201には、「アンコレクタブルエラー」が発生した旨が通知される。一方データ訂正が成功した場合には、FMチップI/F203からCPU201には、「コレクタブルエラー」が発生した旨が通知される。また、コレクタブルエラーが発生した場合には、FMチップI/F203からCPU201には、「コレクタブルエラー」が発生した旨の通知に加えて、データに含まれていたエラービットの数が報告される。
CPU201にアンコレクタブルエラーが報告された場合(S242−2:Yes)、CPU201は、ブロック管理テーブル1150のステータス1153を参照することで、リード対象の物理ページが論理ページに割り当てられているか判定する(S242−4)。リード対象の物理ページが論理ページに割り当てられている場合(S242−4:Yes)、CPU201はリード対象の物理ページが割り当てられている論理ページの論理ページ番号から、FMPKのLBAを算出する。そして算出されたLBAを、ストレージコントローラ10に報告する(S242−5)。またCPU201は、リード対象の物理ページを含む物理ブロックのステータスを閉塞状態にする。具体的には、リード対象の物理ページを含む物理ブロック内の全物理ページについて、ステータス1153に「閉塞」を格納する。
CPU201にアンコレクタブルエラーが報告されなかった場合(S242−2:No)、CPU201はブロック管理テーブル1150のエラービット数1154に、FMチップI/F203から報告されたエラービット数を加算する(S242−3)。また併せて、(現在時刻−最終WR時刻1155)を計算し(この計算された値は、ライト後経過時間である)、計算された値をWR後経過時間1156に格納する。
ただしS242−3は、コレクタブルエラーが報告された場合に行われる処理である。コレクタブルエラーも報告されなかった場合(つまりエラーが発生しなかった場合)には、S242−3は行われない。
S242−3またはS242−6の後に、CPU201は、全ての物理ページについてS242−1〜S242−6の処理が行われたか判定する(S242−7)。全ての物理ページについて処理が完了した場合には、CPU201は検査処理を終了する。まだ処理が完了していない物理ページが残っている場合には、CPU201はS242−1からの処理を繰り返す。
続いて、ストレージライトI/Oプログラム102により行われる処理(以下、この処理を「ライト処理」と呼ぶ)の流れを、図15を用いて説明する。ストレージライトI/Oプログラム102は、ホスト2からライト要求を受信した時に、CPU201により実行される。ストレージコントローラ10がホスト2から受け付けるライト要求(ライトコマンド)には、ライト対象データの書き込み先を特定する情報として、仮想ボリューム番号(あるいはLUN[Logical Unit Number]等の、ストレージコントローラ10で仮想ボリューム番号を導出可能な情報)、仮想ボリュームのLBA、そしてライト対象データの長さ(ライトデータ長と呼ぶ)が含まれる。以下、図15の説明において、仮想ボリューム番号、仮想ボリュームのLBA,ライトデータ長で特定される領域を「ライト対象領域」と呼ぶ。またライト対象領域の存在する仮想ボリュームのことを、ライト対象仮想ボリュームと呼ぶ。
ライトコマンドがストレージコントローラ10に到来すると、CPU11は、ライトコマンドに含まれる仮想ボリューム番号、LBA及びライトデータ長を用いて、ライト対象領域を含んでいる仮想チャンクの仮想チャンク番号、及びこの仮想チャンクにマッピングされているチャンクを特定する情報(RAIDグループ番号及びチャンク番号)を導出する(S102−1)。具体的にはCPU11は仮想ボリューム管理テーブル500を参照し、仮想ボリューム#501と仮想ボリュームLBA範囲503が、ライトコマンドで指定されているライト対象領域を含んでいる行を検索する。そして検索された行の仮想チャンク番号504が、ライト対象領域を含んでいる仮想チャンクの仮想チャンク番号である。また当該行のRAIDグループ番号505及びチャンク番号506が、ライト対象領域にマッピングされているチャンクの、RAIDグループ番号及びチャンク番号である。なお、ここでは、ライト対象領域が1チャンクに収まる範囲の領域である場合について説明する。
ただしライト対象領域にチャンクが割り当てられていないこともあり、その場合S102−1で検索されるRAIDグループ番号505、チャンク番号506はNULLである。RAIDグループ番号505、チャンク番号506はNULLであった場合、つまりライト対象領域にチャンクが割り当てられていない場合(S102−2:Yes)、CPU11は仮想ボリューム管理テーブル500を参照することにより、ライト対象仮想ボリュームに割り当て可能なチャンクの属するプール#502を特定する。続いてプール管理テーブル550を参照することで、CPU11は特定されたプール#に属するRAIDグループを選出するとともに、選出されたRAIDグループ中のチャンクのうち、ステータス555が「未割当」のチャンクを1つ選出する(S102−3,S102−4)。
チャンクが選出されると、CPU11は選出されたチャンクの属するRAIDグループ番号(RG#552)及びチャンク#553をそれぞれ、仮想ボリューム管理テーブル500のRAIDグループ番号505及びチャンク番号506に格納する(S102−5)。これにより、ライト対象領域を含んでいる仮想チャンクに、チャンクがマッピングされる。
S102−5の後(あるいはライト対象領域を含んでいる仮想チャンクに、すでにチャンクが割り当て済みであった場合にはS102−2の判定のあと)、S102−7が行われる。S102−7ではCPU11は、ホスト2からライトデータを受領し、キャッシュに格納する。そしてパリティストライプに格納すべきパリティを作成する。パリティの作成は公知のRAID技術によって行われる。そしてライト対象領域にマッピングされているチャンク(S102−1で特定されたチャンク、あるいはS102−5でマッピングされたチャンク)のWR要求量556(プール管理テーブル550で管理されている)に、ライトデータ長とライトデータに対応して作成されたパリティの長さを加算する。
続いてCPU11は、ライト対象データの書き込み先となるFMPK20のFMPK#及びFMPK20内のLBAを特定する(S102−8)。そしてCPU11は、特定されたFMPK20のLBAに対してライト要求を発行し、データの格納を行う(S102−9)。そしてCPU11は、ホスト2にライト処理が終了した旨を応答し、処理を終了する。
なお、S102−8では、ライト対象データ(ホスト2から受信したデータ)の他、S102−7で作成したパリティの書き込み先となるFMPK20のFMPK#、及びFMPK20内のLBAの特定も行われる。そしてS102−9でも同様に、ライト対象データに加えてパリティもFMPK20に格納される。またS102−8で行われる、ライト対象データ(及びパリティ)の書き込み先FMPK20のFMPK#及びFMPK20内のLBAの特定は、RAID技術を採用しているストレージ装置で公知の処理であるので、詳細な説明は省略する。
また、上ではストレージライトI/Oプログラム102が、ホストからライト要求を受け付けると、FMPK20への書き込みまでを実施した後に、ホストにライト処理が終了した旨を応答する例を説明した。ただしストレージライトI/Oプログラム102が、ホストからライト要求を受け付けた際には、キャッシュにライト対象データを格納した時点でホスト2に処理の終了を応答し、後で非同期に、複数のライト対象データをまとめてFMPK20に格納する処理を行ってもよい。
ストレージコントローラ10からライト要求及びライトデータを受信したFMPK20は、データをFMチップ210に格納する。この処理は公知のSSDなどで行われている処理と同様であるので、詳細な説明は省略する。またFMPK20は、ストレージコントローラ10から送信されたライトデータの合計量を、メモリ204(あるいはFMチップ210等でもよい)に記憶している。そのためFMPK20は、ストレージコントローラ10からライト要求を受信するたびに、ライト要求に含まれているライトデータ長を積算する処理を行う。
続いて図16以降の図面を用いて、寿命予測プログラムの処理フローを説明する。図16は寿命予測プログラムで実施される全体の流れを表している。以下、寿命予測プログラムが実行する処理を、「寿命予測処理」と呼ぶ。寿命予測プログラムは、定期的にCPU11で実行される。
寿命予測プログラムの実行が開始されると、CPU11はストレージ装置1内の全RAIDグループに対して、RAIDグループ稼働情報取得処理(S101−1)とRAIDグループ寿命予測処理(S101−2)を実行する。RAIDグループ稼働情報取得処理の流れについては、後で図17を用いて説明する。またRAIDグループ寿命予測処理の流れについては、後で図19を用いて説明する。
全RAIDグループに対して寿命予測処理を実行した後、CPU11はRAIDグループ残寿命が目標耐用年数(ターゲット寿命)よりも短いRAIDグループがあるか判定する(S101−4)。この判定は、各RAIDグループについて、RAIDグループ管理テーブル650に格納されている情報を参照することで行う。具体的にはCPU11は、RAIDグループ使用年数660、RAIDグループ残寿命659、ターゲット寿命656が、
(RAIDグループ使用年数660+RAIDグループ残寿命659)<ターゲット寿命656
の関係式を満たしているRAIDグループが存在するか判定する。この関係式を満たすRAIDグループは、RAIDグループ残寿命が目標耐用年数よりも短いと判定される。なお、一般に1つのRAIDグループに属するFMPK20には同種のFMPK20が用いられるため、RAIDグループに属する各FMPK20のターゲット寿命656は同じである。そのためFMPK20のターゲット寿命656は、そのFMPK20の属するRAIDグループのターゲット寿命といえる。
(RAIDグループ使用年数660+RAIDグループ残寿命659)<ターゲット寿命656
の関係式を満たしているRAIDグループが存在するか判定する。この関係式を満たすRAIDグループは、RAIDグループ残寿命が目標耐用年数よりも短いと判定される。なお、一般に1つのRAIDグループに属するFMPK20には同種のFMPK20が用いられるため、RAIDグループに属する各FMPK20のターゲット寿命656は同じである。そのためFMPK20のターゲット寿命656は、そのFMPK20の属するRAIDグループのターゲット寿命といえる。
RAIDグループ残寿命が目標耐用年数よりも短いRAIDグループが存在した場合(S101−4:Yes)、CPU11はこれらのRAIDグループに対して、チャンク移動量計算処理(S101−5)、RAIDグループ間チャンク移動処理(S101−6)を実行する。これらの処理の実行後、寿命予測処理は終了する。RAIDグループ残寿命が目標耐用年数よりも短いRAIDグループが複数存在する場合には、CPU11はRAIDグループ残寿命が目標耐用年数よりも短い全てのRAIDグループに対してS101−5、S101−6の処理を実行する。
続いてRAIDグループ稼働情報取得処理の流れを、図17を用いて説明する。
RAIDグループ稼働情報取得処理が開始されると、CPU11はRAIDグループ内の全FMPK20に対して、稼働情報集計コマンドを発行する(S1011−1)。稼働情報集計コマンドを受信したFMPK20は、FMPK20の寿命比率及びライト積算量を計算し、CPU11に送信する。稼働情報集計コマンドを受信したFMPK20が実行する処理の詳細は、後で図18を用いて説明する。
S1011−2でCPU11は、FMPK20から寿命比率とライト積算量を受信する。そしてCPU11は、受信した寿命比率とライト積算量を、RAIDグループ管理テーブル650の平均寿命比率654、ライト積算量655に格納する(S1011−3、S1011−4)。RAIDグループ内の全FMPK20に対して、S1011−1〜S1011−4の処理が終了すると、RAIDグループ稼働情報取得処理は終了する。なお、ライト積算量を、FMPK20から受信することに代えて、ストレージコントローラ10で、各FMPK20に発行するライトデータ積算量を管理し、その値をライト積算量655に格納するようにしてもよい。
続いて、FMPK20が稼働情報集計コマンドを受信した時に行う処理の流れを、図18を用いて説明する。FMPK20が稼働情報集計コマンドを受信すると、FMPK20は稼働情報集計プログラム241の実行を開始する。稼働情報集計プログラム241はCPU201によって実行される。
稼働情報集計プログラム241が開始されると、CPU201はFMPK20内のページについて、寿命比率の計算を行う。まず寿命比率の計算が完了していないページを1つ選択する。以下では仮に、この選択されたページの物理ブロック番号がb、ページ番号がpであったとする。また選択されたページのことを「処理対象ページ」と呼ぶ。そして処理対象ページについてのエラービット数及びWR後経過時間を取得する(S241−1)。ここで取得されるエラービット数及びWR後経過時間はそれぞれ、ブロック管理テーブル1150内の、ブロック番号#1151がbで物理ページ#1152がpの行に格納されているエラービット数1154及びWR後経過時間1156である。つまり検査プログラム242が実行された時に、ブロック管理テーブル1150に記録されたエラービット数及びWR後経過時間が取得される。
続いてCPU201は、閾値エラービット数管理テーブル1200を参照し、WR間隔1201が、S241−1で取得したWR後経過時間を含んでいる行を検索する。そして検索された行の閾値エラービット数1202を取得する(S241−4)。そしてCPU201は、S241−1で取得したエラービット数を、S241−4で取得した閾値エラービット数で除算する。この除算で算出される値が、処理対象ページの寿命比率である。CPU201はこの計算された寿命比率を、ブロック管理テーブル1150内の、ブロック番号#1151がbで物理ページ#1152がpの行の、寿命比率1156に格納する(S241−5)。
FMPK20内の全ページについて、S241−1〜S241−5の処理が終了すると、CPU201はS241−7以降の処理を行う。S241−7でCPU201は、ブロック管理テーブル1150に記録された、全ページの寿命比率1156の平均値を算出し、ストレージコントローラ10に送信する。さらにCPU201は、メモリ204に格納しているライト積算量をストレージコントローラ10に送信し(S241−8)、処理を終了する。なお、ストレージコントローラ10でライト積算量を管理している場合には、FMPK20はライト積算量をストレージコントローラに送信する必要はない。
続いてRAIDグループ寿命予測処理の流れについて、図19を用いて説明する。RAIDグループ寿命予測処理では、RAIDグループに属する全FMPKについて、S1012−1〜S1012−4の処理を行う。以下、FMPK20のドライブ番号がnのFMPK20について、S1012−1〜S1012−4の処理を行う場合を例にとって説明する。
S1012−1では、CPU11はRAIDグループ管理テーブル650の中の、ドライブ番号652がnの行を参照し、FMPK#nの使用開始日658を取得する。そして、(現在日時−使用開始日658)÷365を計算することで、FMPK#nの使用年数を算出する。続いてCPU11はRAIDグループ管理テーブル650の中の、ドライブ番号652がnの行を参照し、FMPK#nの平均寿命比率654を取得する(S1012−2)。さらにCPU11は、S1012−1で算出した使用年数と、S1012−2で取得した平均寿命比率654を用いて、FMPK#nの残寿命を計算する。残寿命の計算は、以下の計算式に基づいて行われる。
FMPK#nの残寿命=(S1012−1で算出した使用年数)×(1−平均寿命比率654)
FMPK#nの残寿命=(S1012−1で算出した使用年数)×(1−平均寿命比率654)
S1012−4でCPU11は、S1012−3で計算された残寿命を、残寿命657(RAIDグループ管理テーブル650内のドライブ番号652がnの行の残寿命657)に格納する。
ここで、上で説明した残寿命の計算の考え方について、図23を用いて説明する。物理ページリード時に検出されるエラービット数は、当該物理ページに対するライトデータ量の増加につれて、増加する傾向がある。本実施例におけるストレージ装置1では、物理ブロックの寿命比率(エラービット数÷エラービット数閾値)とライト積算量が、図23に示されているように、比例関係にあるという前提で、寿命の予測を行う。なお、ある物理ブロックの寿命比率が1に達した時(これ以降、この物理ブロックの使用は停止される)までに、当該物理ブロックに対して発生したライト積算量を「Wmax」と表記する。
また上で説明した残寿命の計算に際して、各FMPK20に対するライトレート(単位時間当たりのライト量)は一定であると仮定して、残寿命の計算を行う。つまり、FMPK20の平均寿命比率654とWR積算量655も、比例関係にあるという前提で残寿命の計算が行われる。そのため、本実施例に係るストレージ装置1では、上で説明した計算式によってFMPK#nの残寿命を計算している。
また実際には、フラッシュメモリの寿命特性は、FMチップによってばらつきがある。そのため、いずれのFMチップにおいても、寿命比率とライト積算量が比例関係にあるものの、FMチップごとにWmaxの値は異なり得る。
そのため、FMチップごとにライト量を制御しなければ、目標耐用年数が到来するより前に、アクセス不可能になるFMチップが発生することがあり得る。そうなると、そのFMチップを搭載するFMPK20自体が使用不可能になることもある(FMPK20が目標耐用年数に達する前に使用不可能になる)。そのため本実施例に係るFMPK20では、FMPK20内で物理ページごとに寿命比率を観測しており、リクラメーションやウェアレベリングを行う際、データ移動元及びデータ移動先の物理ブロックを適切に選択する。つまりFMPK20は、寿命比率が高い(1に近い)物理ブロックが存在した時、その物理ブロックから寿命比率の小さな物理ブロックへとデータを移動することにより、各物理ブロックの寿命比率が均等になるように制御する。これにより、特定のFMチップが早期に使用不可能にならないようにしている。そのためストレージコントローラ10では、各FMPK20の寿命比率の平均値(平均寿命比率654)が均等になるように、FMPK20間でライトデータ量を調整すれば、各FMPK20及び各FMPK20内の各FMチップの寿命をおおむね均等にすることができ、結果として各FMPK20を目標耐用年数まで使用可能にしている。
なお、FMPK20で行われるリクラメーションやウェアレベリングは、公知のフラッシュストレージで行われるものとほとんど同じである。公知のフラッシュストレージではリクラメーションやウェアレベリングの際、ブロックへのライトデータ量(あるいはブロックの消去回数)に基づいて、データ移動元及びデータ移動先となる物理ブロックを選択する。一方本実施例に係るFMPK20では、リクラメーションやウェアレベリングの際、寿命比率に基づいてデータ移動元及びデータ移動先となる物理ブロックを選択する点が、公知のフラッシュストレージと相違する。しかしそれ以外の点では、両者に違いはない。そのため、FMPK20で行われるリクラメーションやウェアレベリングの詳細な説明は省略する。
RAIDグループに属する全FMPKについて、S1012−1〜S1012−4の処理が行われた後、CPU11は、RAIDグループ管理テーブル650に格納された、処理対象RAIDグループに属する各FMPK20の残寿命657の最小値を選択し、RAIDグループ残寿命659に格納する(S1012−6)。図8を用いて一例を説明する。図8では、S1012−1〜S1012−4の処理が行われた結果、RG#651が1のRAIDグループを構成する各ドライブ(FMPK#0、#1、#2、#3)の残寿命が、RAIDグループ管理テーブル650の残寿命657の欄に格納された状態にある。図8によると、各ドライブ(FMPK#0、#1、#2、#3)の残寿命はそれぞれ、4年、3年、3.5年、4年である。そのためS1012−6でCPU11は、RAIDグループ#1の残寿命を、3年(4年、3年、3.5年、4年の最小値は3年であるから)と決定し、RAIDグループ#1のRAIDグループ残寿命659に、「3年」を格納する。
またS1012−6ではCPU11は、
(現在の年月日−残寿命657が最小であるFMPK20の使用開始日658)÷365
を計算し、その値をRAIDグループ使用年数660に格納する。つまり、本実施例に係るストレージ装置1は、残寿命657が最小であるFMPK20の使用年数を、RAIDグループの使用年数として用いる。
(現在の年月日−残寿命657が最小であるFMPK20の使用開始日658)÷365
を計算し、その値をRAIDグループ使用年数660に格納する。つまり、本実施例に係るストレージ装置1は、残寿命657が最小であるFMPK20の使用年数を、RAIDグループの使用年数として用いる。
図16、19の処理により、各RAIDグループの(予測)寿命が算出される。図16を用いて説明したように、算出された各RAIDグループの(予測)寿命がターゲット残寿命よりも短いRAIDグループが存在する場合、CPU11はチャンク移動量計算処理、RAIDグループ間チャンク移動処理を実行し、残寿命がターゲット残寿命より短いRAIDグループのデータを、別のRAIDグループへと移動する。これは、各FMPK20を目標耐用年数まで使用可能にすることが目的である。図20〜図22を用いて、これらの処理の詳細を説明していく。
図20は、図16のS101−5の処理、つまりチャンク移動量計算処理のフローチャートである。ここでは、残寿命がターゲット残寿命より短いRAIDグループから別のRAIDグループへ移動するデータ量(チャンク数)の算出を行う。
S1015−1でCPU11は、RAIDグループに対するライト積算量を求める。具体的にはCPU11はRAIDグループ管理テーブル650の中から、RAIDグループに属する全FMPK20のライト積算量655を取得し、その総和を算出する(S1015−1)。続いてCPU11は、RAIDグループに対するライト積算量を、単位時間当たりのWR量に変換する。具体的にはCPU11はS1015−1で求めたRAIDグループに対するライト積算量を、RAIDグループ使用年数660で除算し、1年あたりのWR量を算出する(S1015−2)。
続いてS1015−3でCPU11は、処理対象のRAIDグループが、現在(S1015−3の実行時点)から寿命を迎えるまでに受け付け可能なライト量(この値を「予測残WR量」と呼ぶ)を計算する。本実施例に係るストレージ装置1では、RAIDグループで発生するWR量が、S1015−2で計算した単位時間当たり(年あたり)のWR量と同じ頻度で発生すると仮定して、予測残WR量を計算する。つまり、
単位時間あたりのRAIDグループに対するWR量×RAIDグループ残寿命659
を計算することで、予測残WR量を求める。
単位時間あたりのRAIDグループに対するWR量×RAIDグループ残寿命659
を計算することで、予測残WR量を求める。
続いてS1015−4でCPU11は、チャンク移動処理実行後の、単位時間あたりWR量を計算する。以下、データ移動後の単位時間あたりWR量のことを、「新しい年あたりのWR量」と呼ぶ。新しい年あたりのWR量は、予測残WR量÷(ターゲット寿命−RAIDグループ使用年数)を計算することで得ることができる。
新しい年あたりのWR量の計算方法について概説する。図24は、RAIDグループの使用時間とライト量の関係を表したグラフである。直線(a)は、RAIDグループに対してこれまでと同じライトレートでライトが発生した場合のグラフである。そして直線(a)の傾きは、
RAIDグループに対するライト積算量÷RAIDグループ使用年数660
であるから、S1015−2で計算した、年あたりのWR量に等しい。
RAIDグループに対するライト積算量÷RAIDグループ使用年数660
であるから、S1015−2で計算した、年あたりのWR量に等しい。
また、S1015−3で計算した予測残WR量とWmaxの関係は、図24に示されている通り、
予測残WR量=Wmax−RAIDグループに対するライト積算量
という関係にある。
予測残WR量=Wmax−RAIDグループに対するライト積算量
という関係にある。
逆に言うと、処理対象のRAIDグループは、S1015−3で計算した予測残WR量以内の量のライトデータの書き込みは可能である。ここでの処理の目的は、ターゲット寿命(目標耐用年数)までRAIDグループを構成する各FMPK20を使用可能にすることにある。処理対象のRAIDグループに対する単位時間(年)あたりのWR量を、図24の直線(a’)の傾き、つまり、
予測残WR量÷(ターゲット寿命−RAIDグループ使用年数)
以下にすると、ターゲット寿命の時期が来るまで、処理対象のRAIDグループへのデータ書き込みは可能(寿命比率が1を上回らない、つまりRAIDグループを構成するFMPK20が使用不可能にならない)といえる。そのため、本実施例に係るストレージ装置1では、この式で算出された値を、「新しい年あたりのWR量」と定めている。
予測残WR量÷(ターゲット寿命−RAIDグループ使用年数)
以下にすると、ターゲット寿命の時期が来るまで、処理対象のRAIDグループへのデータ書き込みは可能(寿命比率が1を上回らない、つまりRAIDグループを構成するFMPK20が使用不可能にならない)といえる。そのため、本実施例に係るストレージ装置1では、この式で算出された値を、「新しい年あたりのWR量」と定めている。
続いてS1015−5で、CPU11は処理対象RAIDグループから別のRAIDグループに移動すべきデータ量を計算し、処理を終了する。移動すべきデータ量を計算するために、S1015−5でCPU11は、
(S1015−2で算出された年あたりのWR量−S1015−4で算出した新しい年あたりのWR量)
を計算する。以下では、この計算された値のことを、「チャンク移動量」と呼ぶ。
(S1015−2で算出された年あたりのWR量−S1015−4で算出した新しい年あたりのWR量)
を計算する。以下では、この計算された値のことを、「チャンク移動量」と呼ぶ。
次に、RAIDグループ間チャンク移動処理の流れを、図21を用いて説明する。この処理では、データの移動先となるRAIDグループを決定し、データを移動することが行われる。データの移動先は原則として、データの移動元となるRAIDグループ(S101−4で選定された、RAIDグループ残寿命が当初予定よりも短いRAIDグループ)と同一プールに属するRAIDグループが選択されなければならない。
まずCPU11はRAIDグループ管理テーブル650を参照し、RAIDグループ残寿命659が、(ターゲット寿命656−RAIDグループ使用年数660)よりも大きいRAIDグループを検索する。そしてプール管理テーブル550を参照することで、検索されたRAIDグループのうち、移動元RAIDグループと同一プールに属するRAIDグループであって、かつ未使用領域(ステータス555が「未割当」であるチャンク)が存在するRAIDグループがあるか判定する(S1016−1)。この条件に合致するRAIDグループが存在する場合(S1016−1:Yes)、この条件に合致するRAIDグループをデータの移動先に決定する(S1016−2)。S1016−1の判定で、条件に合致するRAIDグループが複数存在する場合、任意のRAIDグループを選択して良い。あるいは、未使用領域が最も多い(ステータス555が「未割当」であるチャンクが最も多い)RAIDグループを選択する、WR要求量556の合計が最小のRAIDグループを選択する、またはRAIDグループ管理テーブル650で管理されているRAIDグループ使用年数660が最短のRAIDグループを選択する、RAIDグループ残寿命659が最大のRAIDグループを選択する等の判定を行ってもよい。それ以外に、移動元のRAIDグループの移動対象チャンクが複数ある場合には、複数のRAIDグループを移動先として、各チャンクを複数のRAIDグループに移動させてもよい。
S1016−1の判定で、条件に合致するRAIDグループが存在しなかった場合(S1016−1:No)、CPU11はSpare RAIDグループに空き領域が存在するか判定する(S1016−4)。Spare RAIDグループに空き領域が存在する場合(S1016−4:Yes)、データの移動先をSpare RAIDグループに決定する(S1016−5)。
S1016−2またはS1016−5の後、CPU11は移動元RAIDグループから移動先RAIDグループ(S1016−2またはS1016−5で決定されたRAIDグループ)へとデータの移動を行い(S1016−3)、RAIDグループ間チャンク移動処理を終了する。なお、S1016−3で行われる処理のことは、「チャンク移動処理」と呼ばれる。チャンク移動処理の詳細は後述する。
S1016−4の判定の結果、Spare RAIDグループに空き領域が存在しなかった場合(S1016−4:No)、CPU11は管理ホスト5に対し、Spare RAIDグループが不足している旨のメッセージを管理ホストI/Fを通じて通知し、処理を終了する。この通知を受けた管理ホスト5は、Spare RAIDグループが不足している旨のメッセージを、管理ホスト5の画面に表示する等の処理を行う。
次にS1016−3で行われるチャンク移動処理の詳細を、図22を用いて説明する。はじめにCPU11は、変数mを用意し、mの値を初期化する(0を代入する)(S1600)。変数mは、以下に説明するS1602で、データを移動した時、移動したデータ量の積算値を格納するために用いられる。またこの変数mのことを、「チャンク移動済み量」とも呼ぶ。
S1601でCPU11は、プール管理テーブル551を参照し、移動元RAIDグループ内のチャンクのうち、WR要求量556の値が最も大きなチャンクを選択する。ここで選択されたチャンクのことを「移動元チャンク」と呼ぶ。移動元チャンクに格納されているデータが、移動対象データとなる。なお、S1601では必ずしもWR要求量556の値が最も大きなチャンクが選択されなければならないわけではない。ただし、WR要求量556の値が大きいチャンクを移動対象とすると、移動すべきチャンクの量を小さくできる。そのため本実施例に係るチャンク移動処理では、WR要求量556の値が大きいチャンクから順に移動対象として選択されるようにしている。
S1602でCPU11は、プール管理テーブル551を参照し、移動先RAIDグループの中の、未使用のチャンク(ステータス555が「未割当」のチャンク)を1つ選択する。この選択されたチャンクのことを「移動先チャンク」と呼ぶ。そしてCPU11は、S1601で決定された移動対象データを、移動先チャンクへとコピーする。
S1603でCPU11は、移動先チャンクについて、ステータス555を「割当済」に変更する。またS1604でCPU11は、移動元チャンクについて、ステータス555を「未割当」に変更し、WR要求量556を0にする。
移動元チャンクに格納されていたデータが移動先にコピーされると、移動元チャンクにデータを格納しておく必要はなくなる。そこでS1605では、CPU11はFMPK20に対し、移動元チャンクに対してマッピングされていた物理ページの、論理ページへのマッピング解除を行わせる。具体的にはCPU11は、プール管理テーブル550を参照することで、移動元チャンクのチャンク#553及びRG#552からRAIDグループLBA554を特定する。特定されたRAIDグループLBA554の情報を用いて、移動元チャンクの存在するFMPK20及びそのFMPK20の記憶空間上のLBAを特定する。なお、チャンクは1以上のストライプラインを含む領域であるので、移動元チャンクの存在するFMPK20は複数存在する。そしてCPU11は、移動元チャンクが存在するFMPK20(複数)に対し、マッピング解除コマンドを発行する。ここで発行されるマッピング解除コマンドのパラメータには、マッピング解除対象となる領域を特定する情報としてFMPK LBA704が指定されている。ただしマッピング解除コマンドのパラメータとして、LBAに代えて、FMPK20の論理ページ番号を指定するようにしてもよい。
マッピング解除コマンドを受信したFMPK20では、マッピング解除コマンドのパラメータに指定されているLBAのマッピングを解除する。具体的には、論理物理変換テーブル1100のFMPK LBA1101が、マッピング解除コマンドのパラメータに指定されているLBAと等しい行のステータス1103を「未割当」に変更する。また当該行のブロック#1104及び物理ページ#1105に格納されている値と等しい値が、ブロック管理テーブル1150のブロック#1151及び物理ページ#1152に格納されている行を、ブロック管理テーブル1150の中から検索し、その行のステータス1153も「未割当」に変更する。最後に論理物理変換テーブル1100内の、ステータス1103を「未割当」に変更した行のブロック#1104及び物理ページ#1105の値を無効値(NULL)に変更する。
続いてCPU11は、チャンク移動済み量(m)に、S1602で移動したチャンクのWR要求量(WR要求量556に格納されている値)を単位時間(年)あたりのライト量に変換した値を加算する(S1606)。具体的には、
WR要求量556÷RAIDグループ使用年数660
を計算し、この値をmに加算する。
WR要求量556÷RAIDグループ使用年数660
を計算し、この値をmに加算する。
S1607では、CPU11は、チャンク移動済み量がチャンク移動量(図20の処理で計算された値)以上になったか否かを判定する。チャンク移動済み量がチャンク移動以上になっている場合には処理を終了し、そうでない場合には、CPU11は再びS1601から処理を繰り返す。
なお、チャンク移動処理の目的は、RAIDグループの使用年数がターゲット寿命に達するまでの間に、移動元RAIDグループに対して、図20のチャンク移動量計算処理において算出した予測残WR量(または、新しい年あたりのWR量×(ターゲット寿命−RAIDグループ使用年数))を上回るライトデータの書き込みが来ないようにすることである。チャンク移動処理では、ホスト2から各チャンクに対して、これまでと同頻度(つまり、“WR要求量556÷RAIDグループ使用年数660”のライトレート)の書き込みがあると仮定している。この場合、
移動元RAIDグループの全チャンクのWR要求量556の総和÷RAIDグループ使用年数×(ターゲット寿命−RAIDグループ使用年数)
が、新しい年あたりのWR量×(ターゲット寿命−RAIDグループ使用年数)
以下になるようにすればよい。そのためチャンク移動処理では、いくつかのチャンクのデータを別のRAIDグループ(移動先RAIDグループ)に移動することで、予測残WR量を上回るデータの書き込みが来ることを抑制している。
移動元RAIDグループの全チャンクのWR要求量556の総和÷RAIDグループ使用年数×(ターゲット寿命−RAIDグループ使用年数)
が、新しい年あたりのWR量×(ターゲット寿命−RAIDグループ使用年数)
以下になるようにすればよい。そのためチャンク移動処理では、いくつかのチャンクのデータを別のRAIDグループ(移動先RAIDグループ)に移動することで、予測残WR量を上回るデータの書き込みが来ることを抑制している。
また、データが移動されたチャンクが、別の仮想チャンクにマッピングされることで、そのRAIDグループに対するライトデータ量(あるいはライト頻度)が増加する可能性はある。ただし、これまで説明してきた寿命予測処理は定期的に実行されている。そのため、RAIDグループに対するライトデータ量(ライト頻度)が増加して、RAIDグループの寿命が目標耐用年数(ターゲット寿命)よりも短くなると予測されると、再びチャンク移動処理が行われ、予測残WR量を上回るデータの書き込みが抑制される。
以上、本発明の実施例を説明したが、これは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。
たとえば、上で説明した実施例では、データの移動量を決定する際、ライト積算量(ストレージコントローラがFMPKに対して書き込んだデータの総量)をもとに、データ移動量を決定する方法を説明した。ただしフラッシュメモリを記憶媒体として用いる記憶デバイスの場合、いわゆるリクラメーション等の処理が実施されるため、ストレージコントローラからFMPKが受信するライトデータの量よりも、FMPKコントローラ200がFMチップ210に書き込むデータの量の方が多くなる。この現象は、WA(Write Amplification)と呼ばれる。そのため、ライト積算量に代えて、FMPKコントローラ200がFMチップ210に書き込んだデータの総量をもとにして、データ移動量を決定するようにしてもよい。このようにすることで、移動すべきデータ量をより正確に算出することができる。
また、ライト処理において、仮想チャンクにチャンクを割り当てる際に、残寿命(RAIDグループ残寿命659)の長いRAIDグループに属するチャンクから優先的に、仮想チャンクに割り当てるようにしてもよい。これにより、残寿命の短いRAIDグループへのライト頻度が高くなることを抑制することができる。
1: ストレージ装置
2: ホスト
3: SAN
10: ストレージコントローラ
11: プロセッサ(CPU)
12: ホストIF
13: ディスクIF
14: メモリ
15: 管理用I/F
16: 内部スイッチ
20: FMPK
25: HDD
30: RAIDグループ
31: チャンク
40: 仮想ボリューム
41: 仮想チャンク
200: FMPKコントローラ
201: CPU
202: FMPK I/F
203: FMチップI/F
204: メモリ
205: 内部スイッチ
210: FMチップ
2: ホスト
3: SAN
10: ストレージコントローラ
11: プロセッサ(CPU)
12: ホストIF
13: ディスクIF
14: メモリ
15: 管理用I/F
16: 内部スイッチ
20: FMPK
25: HDD
30: RAIDグループ
31: チャンク
40: 仮想ボリューム
41: 仮想チャンク
200: FMPKコントローラ
201: CPU
202: FMPK I/F
203: FMチップI/F
204: メモリ
205: 内部スイッチ
210: FMチップ
Claims (13)
- ホスト計算機に接続されるストレージコントローラと、前記ストレージコントローラに接続される複数の記憶デバイスとを有するストレージシステムにおいて、
前記ストレージシステムは、前記複数の記憶デバイスから複数のRAIDグループを構成しており、
前記記憶デバイスは、不揮発性記憶媒体とデバイスコントローラを有し、
前記デバイスコントローラは、前記不揮発性記憶媒体の記憶領域を読み出した時に検出されたエラービット数に基づいて前記記憶デバイスの劣化度を算出して、前記ストレージコントローラに送信し、
前記ストレージコントローラは、前記記憶デバイスから受信した前記劣化度に基づいて、前記記憶デバイスが属する前記RAIDグループの寿命を算出し、
前記ストレージコントローラはさらに、前記寿命が、あらかじめ定められている目標寿命よりも短い前記RAIDグループを特定し、前記特定されたRAIDグループ内のデータを、別のRAIDグループに移動する、
ことを特徴とする、ストレージシステム。 - 前記ストレージコントローラは、前記特定されたRAIDグループ内のデータを別のRAIDグループに移動する際、前記特定されたRAIDグループの使用期間が前記目標寿命に達するまでの間に受け付け可能な、ライトデータ量の上限値を算出し、前記算出された上限値に基づいて、移動すべきデータの量を決定する、
ことを特徴とする、請求項1に記載のストレージシステム。 - 前記ストレージコントローラは、前記RAIDグループに属する複数の前記記憶デバイスのうち、前記寿命が最も短い記憶デバイスの寿命を、前記RAIDグループの寿命と決定する、
ことを特徴とする、請求項1に記載のストレージシステム。 - 前記デバイスコントローラは、前記不揮発性記憶媒体の記憶領域から検出されたエラービット数がエラービット閾値を超過した時点で、前記記憶領域の使用を停止するよう構成されており、
前記デバイスコントローラは、前記エラービット数を前記エラービット閾値で除算することで、前記劣化度を算出する、
ことを特徴とする、請求項1に記載のストレージシステム。 - 前記エラービット閾値は、前記記憶領域に最後に書き込みが行われてからの経過時間に依存する値である、
ことを特徴とする、請求項4に記載のストレージシステム。 - 前記ストレージコントローラは、前記RAIDグループを複数管理するプールを1以上有し、
前記特定されたRAIDグループ内のデータを移動する際、前記ストレージコントローラは、前記特定されたRAIDグループと同一の前記プールに属するRAIDグループを前記データの移動先に決定することを特徴とする、
請求項1に記載のストレージシステム。 - 前記特定されたRAIDグループと同一の前記プールに属するRAIDグループの寿命がいずれも、前記目標寿命よりも短い場合、前記ストレージコントローラは、前記プールに属していないスペアRAIDグループを、前記データの移動先とする、
ことを特徴とする、請求項6に記載のストレージシステム。 - 前記ストレージコントローラは前記ホスト計算機に、複数の仮想チャンクから構成される仮想ボリュームを複数提供し、前記仮想チャンクに対するライト要求を前記ホスト計算機から受領した時点で、前記RAIDグループの有する記憶領域であるチャンクを前記仮想チャンクにマップするよう構成されており、
前記特定されたRAIDグループ内のデータを移動する際、前記ストレージコントローラは、いずれの前記仮想チャンクにもマップされていないチャンクを有する前記RAIDグループを、前記データの移動先に決定することを特徴とする、請求項5に記載のストレージシステム。 - 不揮発性記憶媒体とデバイスコントローラを有する複数の記憶デバイスと、前記複数の記憶デバイスに接続され、前記複数の記憶デバイスから複数のRAIDグループを構成するストレージコントローラを有するストレージシステムの制御方法であって、
前記デバイスコントローラは、前記不揮発性記憶媒体の記憶領域を読み出した時に検出されたエラービット数に基づいて前記記憶デバイスの劣化度を算出して、前記ストレージコントローラに送信し、
前記ストレージコントローラは、前記記憶デバイスから受信した前記劣化度に基づいて、前記記憶デバイスが属する前記RAIDグループの寿命を算出し、
前記ストレージコントローラはさらに、前記寿命が、あらかじめ定められている目標寿命よりも短い前記RAIDグループを特定し、前記特定されたRAIDグループ内のデータを、別のRAIDグループに移動する、
ことを特徴とする、ストレージシステムの制御方法。 - 前記ストレージコントローラは、前記特定されたRAIDグループ内のデータを別のRAIDグループに移動する際、前記特定されたRAIDグループの使用期間が前記目標寿命に達するまでの間に受け付け可能な、ライトデータ量の上限値を算出し、前記算出された上限値に基づいて、移動すべきデータの量を決定する、
ことを特徴とする、請求項9に記載のストレージシステムの制御方法。 - 前記ストレージコントローラは、前記RAIDグループに属する複数の前記記憶デバイスのうち、前記寿命が最も短い記憶デバイスの寿命を、前記RAIDグループの寿命と決定する、
ことを特徴とする、請求項9に記載のストレージシステムの制御方法。 - 前記デバイスコントローラは、前記不揮発性記憶媒体の記憶領域から検出されたエラービット数がエラービット閾値を超過した時点で、前記記憶領域の使用を停止するよう構成されており、
前記デバイスコントローラは、前記エラービット数を前記エラービット閾値で除算することで、前記劣化度を算出する、
ことを特徴とする、請求項9に記載のストレージシステムの制御方法。 - 前記エラービット閾値は、前記記憶領域に最後に書き込みが行われてからの経過時間に依存する値である、
ことを特徴とする、請求項12に記載のストレージシステムの制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/051387 WO2016117026A1 (ja) | 2015-01-20 | 2015-01-20 | ストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2016117026A1 JPWO2016117026A1 (ja) | 2017-08-24 |
JP6216897B2 true JP6216897B2 (ja) | 2017-10-18 |
Family
ID=56416592
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016570374A Expired - Fee Related JP6216897B2 (ja) | 2015-01-20 | 2015-01-20 | ストレージシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20180275894A1 (ja) |
JP (1) | JP6216897B2 (ja) |
WO (1) | WO2016117026A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10452302B2 (en) | 2015-04-09 | 2019-10-22 | Hitachi, Ltd. | Storage system and data control method |
KR102618699B1 (ko) | 2016-09-28 | 2024-01-02 | 삼성전자주식회사 | 호스트에 의해 제어되는 스토리지 장치를 포함하는 컴퓨팅 시스템 |
US10866741B2 (en) * | 2017-08-02 | 2020-12-15 | Toshiba Memory Corporation | Extending SSD longevity |
JP7011160B2 (ja) * | 2018-01-15 | 2022-01-26 | 株式会社バッファロー | ストレージ装置、ストレージシステム、及びプログラム |
CN110096217B (zh) * | 2018-01-31 | 2022-05-27 | 伊姆西Ip控股有限责任公司 | 用于重新定位数据的方法、数据存储系统和介质 |
US11132133B2 (en) * | 2018-03-08 | 2021-09-28 | Toshiba Memory Corporation | Workload-adaptive overprovisioning in solid state storage drive arrays |
CN111104047B (zh) * | 2018-10-25 | 2023-08-25 | 伊姆西Ip控股有限责任公司 | 管理冗余磁盘阵列的方法、设备和计算机可读存储介质 |
CN109634518A (zh) * | 2018-10-29 | 2019-04-16 | 成都华为技术有限公司 | 一种存储资源配置方法及装置 |
US11442826B2 (en) * | 2019-06-15 | 2022-09-13 | International Business Machines Corporation | Reducing incidents of data loss in raid arrays having the same raid level |
US11481119B2 (en) * | 2019-07-15 | 2022-10-25 | Micron Technology, Inc. | Limiting hot-cold swap wear leveling |
CN112825023B (zh) * | 2019-11-20 | 2024-09-17 | 上海商汤智能科技有限公司 | 集群资源管理方法、装置、电子设备和存储介质 |
JP6958941B2 (ja) * | 2020-01-22 | 2021-11-02 | Necプラットフォームズ株式会社 | ディスク監視装置、それを備えたストレージシステム、ディスク監視方法、及び、ディスク監視プログラム |
CN114168064A (zh) * | 2020-09-10 | 2022-03-11 | 伊姆西Ip控股有限责任公司 | 用于重建存储系统的方法、设备和计算机程序产品 |
US20230305721A1 (en) * | 2022-03-25 | 2023-09-28 | Electronics And Telecommunications Research Institute | Method and apparatus for memory management in memory disaggregation environment |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008015769A (ja) * | 2006-07-05 | 2008-01-24 | Hitachi Ltd | ストレージシステム及び書き込み分散方法 |
JPWO2009001519A1 (ja) * | 2007-06-22 | 2010-08-26 | パナソニック株式会社 | メモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システム |
US20130020507A1 (en) * | 2010-06-17 | 2013-01-24 | Life Technologies Corporation | Methods for Detecting Defects in Inorganic-Coated Polymer Surfaces |
US20100332894A1 (en) * | 2009-06-30 | 2010-12-30 | Stephen Bowers | Bit error threshold and remapping a memory device |
US8650358B2 (en) * | 2010-08-26 | 2014-02-11 | Hitachi, Ltd. | Storage system providing virtual volume and electrical power saving control method including moving data and changing allocations between real and virtual storage areas |
JP2012221025A (ja) * | 2011-04-05 | 2012-11-12 | Nec Casio Mobile Communications Ltd | フラッシュメモリ保持データのバックアップ通知システム、その方法およびプログラム |
US9146855B2 (en) * | 2012-01-09 | 2015-09-29 | Dell Products Lp | Systems and methods for tracking and managing non-volatile memory wear |
EP2791774A1 (en) * | 2012-02-08 | 2014-10-22 | Hitachi, Ltd. | Storage apparatus with a plurality of nonvolatile semiconductor storage units and control method thereof to place hot data in storage units with higher residual life and cold data in storage units with lower residual life |
JP5668163B2 (ja) * | 2014-04-21 | 2015-02-12 | 株式会社東芝 | 情報処理装置 |
US9431116B2 (en) * | 2014-11-19 | 2016-08-30 | Sandisk Technologies Llc | Configuration parameter management using a configuration tool |
-
2015
- 2015-01-20 WO PCT/JP2015/051387 patent/WO2016117026A1/ja active Application Filing
- 2015-01-20 US US15/542,446 patent/US20180275894A1/en not_active Abandoned
- 2015-01-20 JP JP2016570374A patent/JP6216897B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2016117026A1 (ja) | 2016-07-28 |
JPWO2016117026A1 (ja) | 2017-08-24 |
US20180275894A1 (en) | 2018-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6216897B2 (ja) | ストレージシステム | |
US10956063B2 (en) | Virtual storage system | |
JP5844473B2 (ja) | 複数の不揮発性の半導体記憶媒体を有し、ホットデータを長寿命記憶媒体に配置しコールドデータを短寿命記憶媒体に配置するストレージ装置、及び、記憶制御方法 | |
US10459639B2 (en) | Storage unit and storage system that suppress performance degradation of the storage unit | |
US9946616B2 (en) | Storage apparatus | |
JP6448570B2 (ja) | ストレージシステム、情報処理システムおよび制御方法 | |
US9529535B2 (en) | Storage system and method of control for storage system | |
JP6444917B2 (ja) | ストレージシステム、情報処理システムおよび制御方法 | |
JP6448571B2 (ja) | ストレージシステム、情報処理システムおよび制御方法 | |
US9727255B2 (en) | Storage apparatus and storage control method | |
JP5342014B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
US10545684B2 (en) | Storage device | |
JP2017162065A (ja) | ストレージシステム、情報処理システムおよび制御方法 | |
JP6554990B2 (ja) | ストレージ制御装置およびストレージ制御プログラム | |
JP6817340B2 (ja) | 計算機 | |
US10915441B2 (en) | Storage system having non-volatile memory device | |
WO2019026221A1 (ja) | ストレージシステム及びストレージ制御方法 | |
JP5768118B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム | |
WO2018002999A1 (ja) | 記憶デバイス及びストレージ装置 | |
JP7140807B2 (ja) | 仮想ストレージシステム | |
JP5945040B2 (ja) | 複数のフラッシュパッケージを有するストレージシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170508 |
|
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: 20170905 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170925 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6216897 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |