説明

ストレージシステム及び書き込み分散方法

【課題】フラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化する。
【解決手段】ストレージシステム10は、複数のフラッシュメモリを有するフラッシュディスク31と、各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、管理テーブルに基づいてフラッシュメモリへの書き込み処理を階層的に分散するコントローラ20とを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータを格納するための記録媒体としてフラッシュディスクを有するストレージシステム及び書き込み分散方法に関する。
【背景技術】
【0002】
特開平5−27924号公報には、データを格納するための記録媒体として、フラッシュディスクを有するストレージシステムが開示されている。フラッシュディスクは不揮発性のフラッシュメモリを使用した半導体ディスク装置である。フラッシュメモリは、複数のブロックにより構成され、更にこれらの各ブロックが、複数のページにより構成されている。ページは、リード(書込み)/ライト(読出し)の単位であり、通常、磁気ディスク装置等のハードディスク装置におけるリード/ライトの最小単位であるセクタと同じ大きさで、512バイトである。ページ内のデータを書換える場合には、通常、旧データを消去した後、新たなデータを書込む。ブロックは、消去の単位(一般的には16Kバイト)であり、書換えがこのブロック内の一部のページであっても、この1つのブロック全部を消去する必要がある。
【特許文献1】特開平5−27924号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、このような特質を有するフラッシュメモリを使用したフラッシュディスクでは、フラッシュメモリに保存されたデータが或る一定の確率でビットエラーを発生すること、及び、ブロックと呼ばれる単位で消去を行うが、ブロック毎に消去回数の寿命が例えば10万回〜100万回の短寿命であるという制約がある。
【0004】
そこで、本発明はフラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化することを課題とする。
【課題を解決するための手段】
【0005】
上記の課題を解決するため、本発明に係るストレージシステムは、複数のフラッシュメモリを有するフラッシュディスクと、各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、管理テーブルに基づいてフラッシュメモリへの書き込み処理を階層的に分散するコントローラと、を備える。フラッシュメモリへの書き込み処理を階層的に分散することで、フラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化することができる。
【0006】
コントローラは、書き込み先である第一の記憶領域のライト寿命が所定の閾値を超えた場合に、ライト寿命が所定の閾値未満の第二の記憶領域に第一の記憶領域のデータを移動し、第一の記憶領域宛の書き込みを第二の記憶領域に行う。書き込み回数の多い第一の記憶領域に書き込まれるべきデータを、書き込み回数の少ない第二の記憶領域に書き込むことで、各記憶領域のライト寿命を平均化できる。このとき、第二の記憶領域の論理アドレスを第一の記憶領域の論理アドレスに変更することにより、ホスト計算機が書き込み先の変更を意識することなく、書き込みを分散できる。ライト寿命が所定の閾値を超えた第一の記憶領域は、例えば、バックアップデータの格納領域として使用される。
【0007】
ここで、フラッシュメモリは、複数のセクタから成る記憶領域を有している。フラッシュディスクは、複数のフラッシュメモリから成るスロットを複数有している。コントローラは、一つのフラッシュメモリ内における書き込み処理をセクタ単位で分散し、一つのフラッシュメモリ内の各セクタのライト寿命が均等化した段階で、一つのスロット内における書き込み処理をセクタ単位で分散し、一つのスロット内の各セクタのライト寿命が均等化した段階で、一つのフラッシュディスク内における書き込み処理をセクタ単位で分散することにより、フラッシュメモリへの書き込みを階層的に分散できる。
【0008】
本発明の他の観点によれば、ストレージシステムは、複数のフラッシュメモリを有するフラッシュディスクと、各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、管理テーブルに基づいてフラッシュメモリへの書き込み先を変更するコントローラと、を備える。コントローラは、変更先の記憶領域単位の論理アドレスを変更元の記憶領域単位の論理アドレスに変更することにより書き込み先の変更を行う。
【発明の効果】
【0009】
本発明によれば、フラッシュメモリへの書き込み回数を平均化し、フラッシュメモリの使用寿命を長期化することができる。
【発明を実施するための最良の形態】
【0010】
以下、各図を参照しながら本発明の実施形態について説明する。
図1は本実施形態に係るストレージシステム10のハードウェア構成を示す。ストレージシステム10は、ホスト計算機40に記憶資源を提供するための記憶装置30と、ホスト計算機40からのデータ入出力要求に応答して記憶装置30へのデータ入出力を制御するためのストレージコントローラ20とを備える。記憶装置30は、複数のフラッシュディスク31を有する。
【0011】
ホスト計算機40は、CPU(Central Processing Unit)、メモリ、入出力インタフェース等を備える上位装置であり、具体的には、パーソナルコンピュータ、ワークステーション、メインフレーム等である。ストレージシステム10は、通信ネットワーク45を介してホスト計算機40に接続している。通信ネットワーク45は、SAN(Storage Area Network)、LAN(Local Area Network)、WAN(Wide Area Network)、MAN(Metropolitan Area Network)、インターネット、専用回線、公衆回線等である。
【0012】
例えば、ホスト計算機40がSANを介してストレージシステム10に接続する場合、ホスト計算機40は、ファイバチャネルプロトコル又はiSCSI(internet Small Computer System Interface)等のプロトコルにより、ストレージシステム10の記憶資源のデータ管理単位であるブロックを単位としてデータ入出力を要求する。
【0013】
例えば、ホスト計算機40がLANを介してストレージシステム10に接続する場合、ホスト計算機40は、NFS(Network File System)又はCIFS(Common Interface File System)等のプロトコルにより、ファイル名を指定してファイル単位でのデータ入出力を要求する。
【0014】
ストレージコントローラ20は、複数のコントローラ21を有する。各コントローラ21は、記憶装置30をいわゆるRAID方式に規定されるRAIDレベル(例えば、0,1,3,4,5,6)で制御することができる。RAIDグループは、例えば、4つのフラッシュディスク31を一組としてグループ化することにより(3D+1P)、或いは8つのフラッシュディスク31を一組としてグループ化することにより(7D+1P)、構成される。即ち、複数のフラッシュディスク31のそれぞれが提供する記憶領域が集合して一つのRAIDグループが構成される。RAIDグループは、パリティグループ又はECCグループと別称することもできる。RAIDグループ上には、ホスト計算機40からのアクセス単位である一つ以上の論理ボリュームが定義される。各論理ボリュームには、LUN(Logical Unit Number)がアサインされる。
【0015】
各コントローラ21は、ホストインタフェース(ホストI/F)22、ディスクインタフェース(ディスクI/F)23、マイクロプロセッサ(MPU)24、キャッシュメモリ(CM)25、及びローカルメモリ(LM)26を備える。
【0016】
ホストインタフェース22は、ホスト計算機40とコントローラ20との間のインタフェースを制御するためのコントローラであり、例えば、ファイバチャネルプロトコルに基づくホスト計算機40からのブロックアクセス要求や、ファイル転送プロトコルに基づくホスト計算機40からのファイルアクセス要求を受信する機能を有する。ホスト計算機40からのファイルアクセス要求を処理するためには、ホストインタフェース22は、NAS(Network Attached Storage)機能を搭載している必要がある。
【0017】
ディスクインタフェース23は、記憶装置30とコントローラ20との間のインタフェースを制御するためのコントローラであり、例えば、記憶装置30を制御するプロトコルに従って、記憶装置30へのデータ入出力要求を制御する機能を有する。
【0018】
マイクロプロセッサ24は、ホスト計算機40からのデータ入出力要求に応答して記憶装置30へのI/O処理(ライトアクセス、又はリードアクセス)を制御する。
【0019】
キャッシュメモリ25は、記憶装置30に読み書きするデータを一時的に格納するためのバッファメモリである。キャッシュメモリ25は、電源バックアップされており、ストレージシステム10に電源障害が発生した場合でも、キャッシュデータのロストを防ぐ不揮発性メモリとして構成されている。
【0020】
ローカルメモリ26は、マイクプロセッサ24の制御プログラムや後述するフラッシュディスク管理テーブル500(図5乃至図6参照)などを格納する。
【0021】
ストレージシステム10には、管理端末(SVP)50が接続されている。管理端末50は、ストレージシステム10を保守管理するためのコンピュータである。ストレージ管理者は、管理端末50に実装されているWebブラウザを介して、ストレージ管理用のコマンドを入力することにより、ストレージシステム10を保守管理できる。ストレージ管理用のコマンドとして、例えば、フラッシュディスク31の追加又は削除、又はRAID構成の変更を指示するためのコマンド、ホスト計算機40とストレージシステム10との間の通信パスを設定するためのコマンドなどがある。
【0022】
図2はフラッシュディスクのハードウェア構成を示す。フラッシュディスク31は、アレイ状に配列される複数のフラッシュメモリ300と、フラッシュメモリ300へのデータ入出力を制御するフラッシュメモリコントローラ320と、コントローラ20に接続するためのインタフェースを制御するインタフェース330と、フラッシュディスク31全体を制御するマイクロプロセッサ340と、マイクロプロセッサ340の制御プログラムやフラッシュメモリ管理テーブル610、スロット内管理テーブル620、及びスロット間管理テーブル630等を格納するメモリ350とを備える。フラッシュメモリ管理テーブル610、スロット内管理テーブル620、及びスロット間管理テーブル630の詳細については後述する。
【0023】
フラッシュメモリコントローラ320は、複数のフラッシュメモリ300から成るスロット310に接続するためのポート321と、各フラッシュメモリ300内の各セクタへの書き込み回数をカウントするカウンタ322と、インタフェース330と各フラッシュメモリ300との間でデータをDMA転送するためのDMA回路323を有する。ポート321は、書き込みアドレスを識別し、各セクタへの書き込み回数をカウントする。
【0024】
図3はフラッシュディスク31のメモリ空間を示す。ここでは、一例として、一つのスロット310は、4つのフラッシュメモリ300によって構成されるものとする。フラッシュメモリ300一つあたりのメモリ空間を5Gバイトとすると、スロット310一つあたりのメモリ空間は20Gバイトになる。また、セクタ300A一つあたりのメモリ空間を、例えば、64Kバイトとする。セクタ300Aは、フラッシュメモリ300におけるデータの読み書き単位である。
【0025】
次に、図4乃至図6を参照しながら、各フラッシュディスクD0〜D9への書き込み処理を分散する処理について説明する。ここでは、各フラッシュディスクD0〜D9を区別するため、説明の便宜上、各フラッシュディスクD0〜D9には、それぞれ異なる符号を付しているが、各フラッシュディスクD0〜D9の内部構成は、図2に示したフラッシュディスク31の内部構成と同様である。
【0026】
図4に示すようにフラッシュディスクD0〜D4は、(4D+1P)のドライブ構成を有するRAIDレベル5のRAIDグループ410に所属し、フラッシュディスクD5〜D9は、(3D+1P)のドライブ構成を有するRAIDレベル3のRAIDグループ420に所属する。ここで、フラッシュディスクD9は、スペア用の空きディスクである。また、RAIDグループ410は、論理ユニット(LU0)の記憶領域をホスト計算機40に提供し、RAIDグループ420は、論理ユニット(LU1)の記憶領域をホスト計算機40に提供するものとする。
【0027】
ストレージコントローラ20は、フラッシュディスク管理テーブル500を保持している。フラッシュディスク管理テーブル500は、各フラッシュディスクの管理情報を格納するためのものであり、例えば、図5に示すようにFD識別子501、アクセス属性502、ライト寿命503、移動先504、及びVDEV番号505を対応付けている。FD識別子501は、各フラッシュディスクを識別するための情報である。アクセス属性502は、例えば、リード/ライト(Read/Write)可能、リードオンリ(Read Only)、リード/ライト(Read/Write)不可などの情報を示す。ライト寿命503は、各フラッシュディスクへの書き込み回数が使用寿命(書き込み可能回数の上限値)に対してどの程度の割合であるかを示す。移動先504は、フラッシュディスクのライト寿命が所定の閾値を越えた場合にそのフラッシュディスクに書き込まれていたデータの移動先となるフラッシュディスクの識別子を示す。VDEV番号505は、フラッシュディスクが所属するRAIDグループの番号を示す。例えば、RAIDグループ410に所属するフラッシュディスクのVDEV番号は「1」であり、RAIDグループ420に所属するフラッシュディスクのVDEV番号は「2」である。ライト制限用途のRAIDグループに所属するフラッシュディスクのVDEV番号は「0」である。
【0028】
ストレージコントローラ20によるフラッシュディスクD0〜D9への書き込み分散処理は、以下のようになる。
(1)ストレージコントローラ20は、ホスト計算機40から論理ユニット(LU0)へのライトアクセス要求を受けると、フラッシュディスク管理テーブル500を参照し、論理ユニット(LU0)を構成する複数のフラッシュディスクD0〜D4のうち何れかのライト寿命が所定の閾値(例えば、80%)を越えたか否かをチェックする。
(2)図5に示す例では、フラッシュディスクD2のライト寿命が所定の閾値を超えているので、ストレージコントローラ20は、フラッシュディスクD2のライト寿命が所定の閾値を超えたことを検出する。
(3)ストレージコントローラ20は、書き込み回数の少ないフラッシュディスクを記憶装置30の中から検索する。図4に示す例では、フラッシュディスクD9が空きディスク(スペアディスク)である場合を想定しているので、コントローラ20は、フラッシュディスクD9をフラッシュディスクD2(移動元ディスク)の移動先ディスクとして選定する。移動先ディスクを選択する優先順位としては、例えば、スペアディスクのような空きディスクを最優先とし、このような空きディスクが存在しない場合は、移動元ディスクと同一のRAIDグループに所属しており且つ書き込み回数の少ないフラッシュディスクが望ましい。
(4)ストレージコントローラ20は、フラッシュディスクD2のデータをフラッシュディスクD9に移動させる。
(5)ストレージコントローラ20は、フラッシュディスクD2の移動先がフラッシュディスクD9であることを示すようにフラッシュディスク管理テーブル500を更新する。かかるテーブル更新により、今後、フラッシュディスクD2に書き込まれるべきデータはフラッシュディスクD9に書き込まれる。
(6)ストレージコントローラ20は、フラッシュディスクD2のアクセス属性をライト制限用途に更新する。
【0029】
ライト制限用途とは、書き込み回数が制限される用途を意味し、例えば、あるボリュームのスナップショットを保持するためのスナップショットボリュームとしての用途、あるプライマリボリュームのレプリカを保持するためのセカンダリボリュームとしての用途、バックアップ用のボリュームとしての用途などがある。バックアップ用途としては、例えば、書き込みは一度だけ可能であり読み出しは何回でも可能なWORM領域としての使用(電子メールの保存等のアーカイブ用途)が考えられる。
【0030】
図6は上述のテーブル更新後のフラッシュディスク管理テーブル500を示す。フラッシュディスクD2のアクセス属性は、“R/W”から“R/W*”に更新される。“R/W*”はライト制限用途であることを示す。また、フラッシュディスクD2の移動先としてフラッシュディスクD9の識別子が登録され、フラッシュディスクD2のVDEV番号が「1」から「0」に更新される。更に、フラッシュディスクD9のVDEV番号は、「2」から「1」に更新される。かかるテーブル更新により、フラッシュディスクD2のデータの移動先がフラッシュディスクD9であることが示されるとともに、フラッシュディスクD2はライト制限用途のRAIDグループに所属することが示される。また、フラッシュディスクD9が所属するRAIDグループがRAIDグループ420からRAIDグループ410に変更されたことが示される。
【0031】
尚、論理ユニット(LU0)を構成する何れのフラッシュディスクD0〜D4についても、ライト寿命が所定の閾値を超えてない場合には、ストレージコントローラ20は、各フラッシュディスクD0〜D4について通常のライトアクセスを実行する。
【0032】
次に、図7乃至図9を参照しながら、各フラッシュディスクD0〜D12への書き込み処理を分散する他の処理について説明する。ここでは、各フラッシュディスクD0〜D12を区別するため、説明の便宜上、各フラッシュディスクD0〜D12には、それぞれ異なる符号を付しているが、各フラッシュディスクD0〜D12の内部構成は、図2に示したフラッシュディスク31の内部構成と同様である。
【0033】
図7に示すようにフラッシュディスクD0〜D4は、(4D+1P)のドライブ構成を有するRAIDレベル5のRAIDグループ410に所属し、フラッシュディスクD5〜D8は、(3D+1P)のドライブ構成を有するRAIDレベル3のRAIDグループ420に所属し、フラッシュディスクD9〜D12は、(3D+1)のドライブ構成を有するRAIDレベル5のRAIDグループ430に所属する。また、RAIDグループ410,420,430は、それぞれホスト計算機40に論理ユニット(LU0),(LU1),(LU2)を提供し、それぞれのVDEV番号は「1」,「2」,「3」とする。
【0034】
ストレージコントローラ20によるフラッシュディスクD0〜D9への書き込み分散処理は、以下のようになる。
(1)ストレージコントローラ20は、ホスト計算機40から論理ユニット(LU0)へのライトアクセス要求を受けると、フラッシュディスク管理テーブル500を参照し、論理ユニット(LU0)を構成する複数のフラッシュディスクD0〜D4のうち何れかのライト寿命が所定の閾値(例えば、80%)を越えたか否かをチェックする。
(2)図5に示す例では、フラッシュディスクD2のライト寿命が所定の閾値を超えているので、ストレージコントローラ20は、フラッシュディスクD2のライト寿命が所定の閾値を超えたことを検出する。
(3)ストレージコントローラ20は、書き込み回数の少ないフラッシュディスクを記憶装置30の中から検索する。図7に示す例ではフラッシュディスクD2の全てのデータを格納できるだけの空き容量を有するフラッシュディスクが一つも存在しないものとする。すると、ストレージコントローラ20は、フラッシュディスクD2の移動先として複数のフラッシュディスクを選択する。移動先として選択されるフラッシュディスクは、できるだけ多くの空き容量を有し且つ書き込み回数の少ないものが好ましい。ここでは、ストレージコントローラ20は、フラッシュディスクD2の移動先として、フラッシュディスクD8とフラッシュディスクD11とを選択する。
(4)ストレージコントローラ20は、図8に示すようにフラッシュディスクD2の一部のデータC1をフラッシュディスクD8のアドレス範囲A1に移動し、残りのデータC2をフラッシュディスクD11のアドレス範囲A2に移動させる。
(5)ストレージコントローラ20は、フラッシュディスクD2の移動先がフラッシュディスクD8とD11であることを示すようにフラッシュディスク管理テーブル500を更新する。かかるテーブル更新により、今後、フラッシュディスクD2に書き込まれるべきデータはフラッシュディスクD8とD11に書き込まれる。
(6)ストレージコントローラ20は、フラッシュディスクD2のアクセス属性をライト制限用途に更新する。
【0035】
図9は上述のテーブル更新後のフラッシュディスク管理テーブル500を示す。フラッシュディスクD2のアクセス属性は、“R/W”から“R/W*”に更新される。フラッシュディスクD2の移動先として、フラッシュディスクD8の識別子及びアドレス範囲A1と、フラッシュディスクD11の識別子及びアドレス範囲A2とがそれぞれ登録される。フラッシュディスクD2のVDEV番号が「1」から「0」に更新される。更に、フラッシュディスクD8のVDEV番号は、「2」から「1」に更新され、フラッシュディスクD11のVDEV番号は、「3」から「1」に更新される。かかるテーブル更新により、フラッシュディスクD2のデータの移動先がフラッシュディスクD8とD11であることが示されるとともに、フラッシュディスクD2はライト制限用途のRAIDグループに所属することが示される。また、フラッシュディスクD8のアドレス範囲A1が所属するRAIDグループがRAIDグループ420からRAIDグループ410に変更され、フラッシュディスクD11のアドレス範囲A2が所属するRAIDグループがRAIDグループ430からRAIDグループ410に変更されたことが示される。
【0036】
ここで、フラッシュディスクD2の一部のデータC1をフラッシュディスクD8のアドレス範囲A1に移動し、残りのデータC2をフラッシュディスクD11のアドレス範囲A2に移動させた場合における、パリティ更新方法について説明する。ストレージコントローラ20は、フラッシュディスクD2のデータC1に更新データを書き込むと、RAIDグループ410のパリティを新しい値に更新する。更に、フラッシュディスクD8のアドレス範囲A1に当該更新データを書き込み、RAIDグループ420のパリティを更新する。また、例えば、フラッシュディスクD1へ更新データを書き込むことにより、フラッシュディスクD2内のデータC1又はC2にあるパリティを更新する必要があるときは、フラッシュディスクD2内のデータC1又はC2にあるパリティを更新するとともに、フラッシュディスクD8のアドレス範囲A1にあるパリティ又はフラッシュディスクD11のアドレス範囲A2にあるパリティも新しい値に更新する。
【0037】
次に、図10乃至図16を参照しながらフラッシュディスク内部で書き込み処理を分散する例について説明する。フラッシュディスク内部における書き込み処理の分散は、階層的に複数の段階に分けて実施する。第一段階の分散処理として、フラッシュメモリ300内で書き込み処理を分散する。第一段階の分散処理では、フラッシュメモリ管理テーブル610(図11乃至図12参照)を用いて、フラッシュメモリ300内の各セクタのライト寿命を管理し、ライト寿命が所定の閾値を超えたセクタのデータを他のセクタ(書き込み回数の少ないセクタ)に移動することによって、フラッシュメモリ300内の書き込みを均等に分散する。
【0038】
フラッシュメモリ300内の各セクタへの書き込み回数がほぼ全体的に使用寿命に近づきつつあると、第一段階の分散処理だけでは書き込み処理を分散できない。このような場合に、スロット310内で書き込み処理を分散する。これが第二段階の分散処理である。第二段階の分散処理では、スロット内管理テーブル620(図13乃至図14参照)を用いて、スロット310内の各セクタのライト寿命を管理し、ライト寿命が所定の閾値を超えたセクタのデータを他のセクタ(書き込み回数の少ないセクタ)に移動することによって、スロット310内の書き込みを均等に分散する。
【0039】
スロット310内の各セクタへの書き込み回数がほぼ全体的に使用寿命に近づきつつあると、第二段階の分散処理だけでは書き込み処理を分散できない。このような場合に、スロット310間で書き込み処理を分散する。これが第三段階の分散処理である。第三段階の分散処理では、スロット間管理テーブル630(図15乃至図16参照)を用いて、スロット310間の各セクタのライト寿命を管理し、ライト寿命が所定の閾値を超えたセクタのデータを他のセクタ(書き込み回数の少ないセクタ)に移動することによって、スロット310間の書き込みを均等に分散する。
【0040】
このように複数の段階に分けて、書き込み処理を階層的に分散することで、フラッシュディスク31内の各セクタへの書き込み回数を全体的に均等化できる。
【0041】
図10はフラッシュディスク31内のマイクロプロセッサ340が実行する書き込み分散処理を示すフローチャートである。マイクロプロセッサ340は、ストレージコントローラ20からライトコマンドを受信すると(ステップ101)、ライトコマンド内に含まれている書き込みアドレスへの書き込み処理を起動する(ステップ102)。
【0042】
このとき、書き込み先セクタのライト寿命が所定の閾値を超えていると、フラッシュメモリコントローラ320から割り込み入力がなされる(ステップ103)。この割り込み入力が分散処理要求である場合には(ステップ104;YES)、マイクロプロセッサ340は、フラッシュディスク31内の各セクタへの書き込み状態に応じて、フラッシュメモリ300内の書き込み分散処理、スロット310内の書き込み分散処理、又はスロット310間の書き込み分散処理のうち何れかの処理を選択する(ステップ105)。
【0043】
そして、マイクロプロセッサ340は、移動元セクタから移動先セクタへデータを移動し(ステップ106)、フラッシュメモリ管理テーブル610、スロット内管理テーブル620、又はスロット間管理テーブル630を更新する(ステップ107)。
【0044】
一方、割り込み要求が分散処理要求でない場合には(ステップ104;NO)、マイクロプロセッサ340は、書き込み容量不足に対処するための処理(例えば、書き込みエラーの報告や書き込み制限などの処理)を実行する。
【0045】
次に、図11乃至図12を参照しながら、フラッシュメモリ300内の書き込み分散処理に伴うフラッシュメモリ管理テーブル610の更新処理について説明する。
【0046】
フラッシュメモリ管理テーブル610は、フラッシュメモリ300内の管理情報を格納するためのものであり、セクタ識別子601、ライト寿命602、アクセス属性603、論理セクタ604、物理セクタ605、及び変更回数606を対応付けている。セクタ識別子601は、セクタを識別するための情報である。ライト寿命602は、各セクタへの書き込み回数が使用寿命(書き込み可能回数の上限値)に対してどの程度の割合であるかを示す。アクセス属性603は、例えば、リード/ライト(Read/Write)可能、リードオンリ(Read Only)、リード/ライト(Read/Write)不可などの情報を示す。論理セクタ604は、セクタの論理番号を示す。物理セクタ605は、セクタの物理番号を示す。変更回数606は、セクタの論理番号を入れ替えた回数を示す。
【0047】
マイクロプロセッサ340は、フラッシュメモリ300内のセクタのライト寿命が所定の閾値(例えば、50%)を超えているか否かを、フラッシュメモリ管理テーブル610を参照することによりチェックする。図11に示す例では、セクタ0のライト寿命が所定の閾値を超えているので、マイクロプロセッサ340は、フラッシュメモリ管理テーブル610を参照し、ライト寿命が所定値(例えば、30%)未満のセクタを検索する。図11に示す例では、セクタnのライト寿命が0%なので、マイクロプロセッサ340は、セクタnを移動先セクタとして選択する。そして、マイクロプロセッサ340は、移動元セクタ(セクタ0)から移動先セクタ(セクタn)へデータを移動し、それぞれの論理番号を交換する。更に、マイクロプロセッサ340は、移動元セクタ(セクタ0)と移動先セクタ(セクタn)のそれぞれの変更回数を1だけインクリメントする。かかる処理を経てフラッシュメモリ管理テーブル610は、図12に示すように更新される。
【0048】
尚、セクタRは、書き込み容量が不足した場合に備えて予め用意されている冗長セクタである。セクタ0〜セクタnの中で移動先となり得るものがない場合には、セクタRを移動先セクタとして選定してもよい。
【0049】
次に、図13乃至図14を参照しながら、スロット310内の書き込み分散処理に伴うスロット内管理テーブル620の更新処理について説明する。
【0050】
スロット内管理テーブル620は、スロット310内の管理情報を格納するためのものであり、セクタ識別子601、ライト寿命602、アクセス属性603、論理セクタ604、物理セクタ605、変更回数606、及びフラッシュメモリ識別子607を対応付けている。フラッシュメモリ識別子607は、フラッシュメモリ300を識別するための情報である。
【0051】
マイクロプロセッサ340は、スロット310内のセクタのライト寿命が所定の閾値(例えば、50%)を超えているか否かを、スロット内管理テーブル620を参照することによりチェックする。図13に示す例では、フラッシュメモリ0のセクタ0のライト寿命が所定の閾値を超えているので、マイクロプロセッサ340は、スロット内管理テーブル620を参照し、ライト寿命が所定値(例えば、30%)未満のセクタを検索する。図13に示す例では、フラッシュメモリ1のセクタnのライト寿命が0%なので、マイクロプロセッサ340は、フラッシュメモリ1のセクタnを移動先セクタとして選択する。そして、マイクロプロセッサ340は、移動元セクタ(フラッシュメモリ0のセクタ0)から移動先セクタ(フラッシュメモリ1のセクタn)へデータを移動し、それぞれの論理番号を交換する。更に、マイクロプロセッサ340は、移動元セクタ(フラッシュメモリ0のセクタ0)と移動先セクタ(フラッシュメモリ1のセクタn)のそれぞれの変更回数を1だけインクリメントする。かかる処理を経て、スロット内管理テーブル620は、図14に示すように更新される。
【0052】
次に、図15乃至図16を参照しながら、スロット310間の書き込み分散処理に伴うスロット間管理テーブル630の更新処理について説明する。
【0053】
スロット間管理テーブル630は、スロット310間の管理情報を格納するためのものであり、セクタ識別子601、ライト寿命602、アクセス属性603、論理セクタ604、物理セクタ605、変更回数606、フラッシュメモリ識別子607、及びスロット識別子608を対応付けている。スロット識別子608は、スロット310を識別するための情報である。
【0054】
マイクロプロセッサ340は、スロット310間のセクタのライト寿命が所定の閾値(例えば、50%)を超えているか否かを、スロット間管理テーブル630を参照することによりチェックする。図15に示す例では、スロット0のフラッシュメモリ0のセクタ0のライト寿命が所定の閾値を超えているので、マイクロプロセッサ340は、スロット間管理テーブル630を参照し、ライト寿命が所定値(例えば、30%)未満のセクタを検索する。図15に示す例では、スロットNのフラッシュメモリ1のセクタnのライト寿命が0%なので、マイクロプロセッサ340は、スロットNのフラッシュメモリ1のセクタnを移動先セクタとして選択する。そして、マイクロプロセッサ340は、移動元セクタ(スロット0のフラッシュメモリ0のセクタ0)から移動先セクタ(スロットNのフラッシュメモリ1のセクタn)へデータを移動し、それぞれの論理番号を交換する。更に、マイクロプロセッサ340は、移動元セクタ(スロット0のフラッシュメモリ0のセクタ0)と移動先セクタ(スロットNのフラッシュメモリ1のセクタn)のそれぞれの変更回数を1だけインクリメントする。かかる処理を経て、スロット間管理テーブル630は、図16に示すように更新される。
【0055】
ところで、一つのスロット310は、ホスト計算機40からは一つの論理的な記憶領域として認識されるので、フラッシュディスク31内のフラッシュメモリ300をスロット単位で交換することができる。フラッシュメモリ300をスロット単位で交換する方式においては、フラッシュメモリコントローラ320は、フラッシュディスク31に新規に実装されたスロット310に搭載されているフラッシュメモリ300の書き込み回数を把握する手段が必要になる。かかる手段として、例えば、スロット310内の各フラッシュメモリ300に自身の書き込み回数を記憶しておき、或いはスロット310内の不揮発性メモリにフラッシュメモリ300の書き込み回数を記憶させておくことで、新規のスロット310がフラッシュディスク31に実装されたことを契機として、フラッシュメモリコントローラ320がそれぞれのフラッシュメモリ300の書き込み回数を読み取るように構成してもよい。
【0056】
尚、フラッシュメモリ300をスロット単位で交換する場合には、フラッシュメモリ300の書き込み回数がスロット間でばらつく可能性がある。スロット間で書き込み分散処理を実行することで、このようなばらつきを解消し、フラッシュメモリ300への書き込み回数をスロット間で均等化できる。
【0057】
また、記憶装置30全体の中の複数の記憶領域(スロット、フラッシュメモリ又はセクタ等の記憶単位)において、ライト寿命が所定の閾値を超えるタイミングがほぼ同時に重なる場合も想定され得る。このような場合には、ライト寿命が所定の閾値を超えるタイミングが先行する記憶領域のデータを優先的に移動させた後で、ライト寿命が所定の閾値を超えるタイミングが後行する記憶領域のデータを移動させるのが好ましい。
【0058】
次に、図17乃至図18を参照しながら、管理端末50に表示される管理画面について説明する。図17は、フラッシュディスク31の管理画面を示す。この管理画面では、フラッシュディスク31のアクセス属性や容量(ライト可能容量、限定ライト容量、残存ライト容量、リードオンリ容量など)が表示される。同図において“N”は通常状態のフラッシュディスクを示し、“L”はライト制限用途のフラッシュディスクを示し、“S”はスペア用のフラッシュディスクを示し、“F”は障害が生じたフラッシュディスクを示し、“R”はリードオンリのアクセス属性が設定されたフラッシュディスクを示す。ここで、ストレージ管理者が何れかのフラッシュディスク31を管理画面上で選択すると、選択されたフラッシュディスク31のライト寿命、残存使用回数、予測使用期間などが表示される。
【0059】
本実施形態によれば、フラッシュメモリの書き込み回数を階層的に均等化できるので、フラッシュディスクの使用寿命を長期化できる。また、本実施形態では、セクタ単位で書き込み分散処理を実行する例を示したが、セクタ単位よりも大きな記憶容量を単位として書き込み処理を分散してもよく、或いはセクタ単位よりも小さな記憶容量を単位として書き込み処理を分散してもよい。
【図面の簡単な説明】
【0060】
【図1】本実施形態に係るストレージシステムのハードウェア構成図である。
【図2】フラッシュディスクのハードウェア構成図である。
【図3】フラッシュディスクのメモリ空間の説明図である。
【図4】各フラッシュディスクへの書き込み処理を分散する処理を示す説明図である。
【図5】フラッシュディスク管理テーブルの説明図である。
【図6】フラッシュディスク管理テーブルの説明図である。
【図7】各フラッシュディスクへの書き込み処理を分散する処理を示す説明図である。
【図8】フラッシュディスクの対応関係を示す説明図である。
【図9】フラッシュディスク管理テーブルの説明図である。
【図10】書き込み分散処理を示すフローチャートである。
【図11】フラッシュメモリ管理テーブルの説明図である。
【図12】フラッシュメモリ管理テーブルの説明図である。
【図13】スロット内管理テーブルの説明図である。
【図14】スロット内管理テーブルの説明図である。
【図15】スロット間管理テーブルの説明図である。
【図16】スロット間管理テーブルの説明図である。
【図17】フラッシュディスク管理画面の説明図である。
【図18】フラッシュディスク管理画面の説明図である。
【符号の説明】
【0061】
10…ストレージシステム 20…コントローラ 30…記憶装置 31…フラッシュディスク 300…フラッシュメモリ 310…スロット 320…フラッシュメモリコントローラ 330…インタフェース 340…マイクロプロセッサ 350…メモリ

【特許請求の範囲】
【請求項1】
複数のフラッシュメモリを有するフラッシュディスクと、
各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、
前記管理テーブルに基づいて前記フラッシュメモリへの書き込み処理を階層的に分散するコントローラと、
を備えるストレージシステム。
【請求項2】
請求項1に記載のストレージシステムであって、
前記コントローラは、書き込み先である第一の記憶領域のライト寿命が所定の閾値を超えた場合に、ライト寿命が所定の閾値未満の第二の記憶領域に前記第一の記憶領域のデータを移動し、前記第一の記憶領域宛の書き込みを前記第二の記憶領域に行う、ストレージシステム。
【請求項3】
請求項1に記載のストレージシステムであって、
前記フラッシュメモリは、複数のセクタから成る記憶領域を有しており、
前記フラッシュディスクは、複数のフラッシュメモリから成るスロットを複数有しており、
前記コントローラは、一つのフラッシュメモリ内における書き込み処理をセクタ単位で分散し、一つのフラッシュメモリ内の各セクタのライト寿命が均等化した段階で、一つのスロット内における書き込み処理をセクタ単位で分散し、一つのスロット内の各セクタのライト寿命が均等化した段階で、一つのフラッシュディスク内における書き込み処理をセクタ単位で分散する、ストレージシステム。
【請求項4】
請求項2に記載のストレージシステムであって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、バックアップデータの格納領域として使用される、ストレージシステム。
【請求項5】
請求項2に記載のストレージシステムであって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、書き込み回数が制限されるデータの格納に使用される、ストレージシステム。
【請求項6】
複数のフラッシュメモリを有するフラッシュディスクと、
各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理する管理テーブルと、
前記管理テーブルに基づいて前記フラッシュメモリへの書き込み先を変更するコントローラと、
を備えるストレージシステム。
【請求項7】
請求項6に記載のストレージシステムであって、
前記コントローラは、変更先の記憶領域単位の論理アドレスを変更元の記憶領域単位の論理アドレスに変更することにより前記書き込み先の変更を行う、ストレージシステム。
【請求項8】
複数のフラッシュメモリを有するフラッシュディスクについて各フラッシュメモリのライト寿命を所定の記憶領域単位で階層的に管理するステップと、
前記管理テーブルに基づいて前記フラッシュメモリへの書き込み処理を階層的に分散するステップと、
を備える書き込み分散方法。
【請求項9】
請求項8に記載の書き込み分散方法であって、
前記書き込み処理を階層的に分散するステップは、書き込み先である第一の記憶領域のライト寿命が所定の閾値を超えた場合に、ライト寿命が所定の閾値未満の第二の記憶領域に前記第一の記憶領域のデータを移動し、前記第一の記憶領域宛の書き込みを前記第二の記憶領域に行うステップを含む、書き込み分散方法。
【請求項10】
請求項8に記載の書き込み分散方法であって、
前記フラッシュメモリは、複数のセクタから成る記憶領域を有しており、
前記フラッシュディスクは、複数のフラッシュメモリから成るスロットを複数有しており、
前記書き込み処理を階層的に分散するステップは、一つのフラッシュメモリ内における書き込み処理をセクタ単位で分散し、一つのフラッシュメモリ内の各セクタのライト寿命が均等化した段階で、一つのスロット内における書き込み処理をセクタ単位で分散し、一つのスロット内の各セクタのライト寿命が均等化した段階で、一つのフラッシュディスク内における書き込み処理をセクタ単位で分散するステップを含む、書き込み分散方法。
【請求項11】
請求項9に記載の書き込み分散方法であって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、バックアップデータの格納領域として使用される、書き込み分散方法。
【請求項12】
請求項9に記載の書き込み分散方法であって、
ライト寿命が所定の閾値を超えた前記第一の記憶領域は、書き込み回数が制限されるデータの格納に使用される、書き込み分散方法。
【請求項13】
請求項8に記載の書き込み分散方法であって、
前記書き込み処理を階層的に分散するステップは、前記フラッシュメモリへの書き込み先を変更するステップを含む、書き込み分散方法。
【請求項14】
請求項13に記載の書き込み分散方法であって、
前記書き込み処理を階層的に分散するステップは、変更先の記憶領域単位の論理アドレスを変更元の記憶領域単位の論理アドレスに変更することにより前記書き込み先の変更を行うステップを含む、書き込み分散方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate


【公開番号】特開2008−15769(P2008−15769A)
【公開日】平成20年1月24日(2008.1.24)
【国際特許分類】
【出願番号】特願2006−185898(P2006−185898)
【出願日】平成18年7月5日(2006.7.5)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】