以下、図面を参照しながら本実施形態について説明する。なお、以下の各図において同一又はほぼ同一の要素には同一の符号を付して説明を省略するか又は簡単に説明し、異なる部分についてのみ詳しく説明する。
[第1の実施形態]
本実施形態においては、オーバープロビジョニングの設定を変更することにより、メモリの寿命を長期化するメモリ制御装置について説明する。
以下、識別情報はIDと表記する。
本実施形態において、メモリ装置は、デバイスという。
本実施形態において、ストレージ装置に含まれる複数のデバイス間の寿命、性能、負荷、容量の不均衡を低減することは、寿命、性能、負荷、容量の平準化という。
本実施形態において、デバイスは、デバイス起動後に、オーバープロビジョニングの設定を変更可能である。オーバープロビジョニングの設定変更によってデバイスの寿命を長期化する処理を、寿命補正処理という。
本実施形態において、アクセスとは、データ読み出し又はデータ書き込みの双方を含むとする。
本実施形態において、デバイスと当該デバイスのIDとは、同じ符号で表記する。エクステントと当該エクステントのIDとは、同じ符号で表記する。
図1は、本実施形態に係るメモリ制御装置を含むストレージ装置の一例を示すブロック図である。
ストレージシステム1は、ホスト装置21〜23と、ストレージ装置3とを含む。図1の例では、ストレージ装置3が3台のホスト装置21〜23と通信可能な場合を例示している。しかしながら、ストレージ装置3は、1台、2台、又は、4台以上のホスト装置と通信可能でもよい。
ホスト装置21〜23は、書き込みコマンドと書き込み先アドレスと書き込みデータをストレージ装置3へ送信する。また、ホスト装置21〜23は、読み出しコマンドと読み出し先アドレスとをストレージ装置3へ送信し、ストレージ装置3から読み出しデータを受信する。
ストレージ装置3は、ホストインタフェース部4、メモリ制御装置5、デバイスD0〜DN-1を含む。図1の例ではデバイスがN台(Nは自然数)の場合を例示しているが、デバイスは1台以上でよい。本実施形態では、デバイスD0〜DN-1のうちのそれぞれをデバイスDiと表記する。iは、0,1,…,N−1である。
例えば、ホストインタフェース部4、メモリ制御装置5、デバイスD0〜DN-1は、互いにデータ、アドレス、コマンド、情報、信号、指示などを送受信可能である。
ホストインタフェース部4は、ホスト装置21〜23からのアクセスを受け付ける。
メモリ制御装置5は、メモリ51、プロセッサ52を含む。
メモリ51は、例えば、主記憶装置として機能してもよい。メモリ51は、バッファメモリを含むとしてもよく、キャッシュメモリを含むとしてもよく、不揮発性メモリを含むとしてもよい。メモリ51としては、例えば、DRAM(Dynamic Random Access Memory)が用いられる。
メモリ51は、例えば、制御プログラムCPと各種データを格納する。制御プログラムCPは、例えば、オペレーティングシステム、アプリケーションプログラム、ファームウェアなどでもよい。例えば、メモリ51は、各種のデータとして、デバイス固有情報テーブル6、論理ディスク情報テーブル7、論理エクステント情報テーブル8、物理エクステント情報テーブル9を格納する。
プロセッサ52は、メモリ51をアクセスし、各種処理を実行し、デバイスD0〜DN-1に対するアクセス制御を実行し、オーバープロビジョニングの設定変更を行う。
プロセッサ52は、例えば、メモリ51に格納されている制御プログラムCPを実行し、これによりデバイス構成部10、論理ディスク構成部11、読み出し部12、書き込み部13、アドレス範囲抽出部14、寿命補正部15、オーバープロビジョニングの設定変更部16として機能する。
デバイスD0〜DN-1は、それぞれ、コントローラ17と1以上の不揮発性メモリ18とを含む。
コントローラ17は、プロセッサ52からのコマンドにしたがって、不揮発性メモリ18にデータを書き込み、又は、不揮発性メモリ18からデータを読み出す。
本実施形態では、不揮発性メモリ18がNAND型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリ18は、例えば、NOR型フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)などNAND型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリ18は、3次元構造のフラッシュメモリを含むとしてもよい。
デバイスD0〜DN-1は、オーバープロビジョニングの設定の変更を当該デバイスD0〜DN-1の運用後であっても可能である。本実施形態において、デバイスD0〜DN-1は、例えば、半導体記憶装置であり、より具体的には、例えばSSDであるとする。しかしながら、デバイスは、例えば、SSDとHDDとを組み合わせたハイブリッド型のデバイスでもよい。
デバイスD0〜DN-2は、データ格納のための装置である。デバイスDN-1は、ホットスペアのための予備的な装置である。
デバイス構成部10、論理ディスク構成部11、読み出し部12、書き込み部13、アドレス範囲抽出部14、寿命補正部15、設定変更部16の具体的な説明は後述する。
図2は、本実施形態に係るストレージ装置3のディスク構造の一例を示す概念図である。
ストレージ装置3は、ホスト装置21〜23に対して、ストレージ装置3内のデバイスD0〜DN-1の記憶領域を、複数の論理ディスクLD0〜LDN-1として提供する。この図2では、N個の論理ディスクが用いられる場合を例として説明するが、論理ディスクの数は、1以上で変更可能である。各論理ディスクLD0〜LDN-1には、識別用の論理ディスクIDが割り当てられている。各論理ディスクLD0〜LDN-1はセクタに分割され、各セクタには論理ブロックアドレス(論理アドレス)が割り当てられる。ホスト装置21〜23は論理アドレスを用いて各論理ディスクLD0〜LDN-1内のセクタにアクセスする。
論理アドレスは、ストレージ装置3に備えられているデバイスD0〜DN-1のデータが格納されている各セクタの番号(物理アドレス)に一対一に対応している。物理アドレス及び論理アドレス1つに対応するセクタのサイズは一定であり、例えば512Byteでもよい。
論理ディスクLD0〜LDN-1内の記憶領域は、固定長の論理エクステントと呼ぶ単位で管理する。論理エクステントのサイズ(エクステントサイズ)はストレージ装置3内で一定であり、例えば8MByteとしてもよい。論理エクステントは、寿命補正処理における処理単位として扱われる。
上記の図2では、論理ディスクLD0〜LDN-1のそれぞれが、論理エクステントle1〜le9を含む。デバイスD0〜DN-1のそれぞれが、物理エクステントpe1〜pe9を含む。
論理ディスクLD0の論理エクステントle1は、デバイスD0の物理エクステントpe2に対応している。論理ディスクLD0の論理エクステントle2は、デバイスD0の物理エクステントpe9に対応している。論理ディスクLD0の論理エクステントle3は、デバイスDN-1の物理エクステントpe3に対応している。論理ディスクLD0の論理エクステントle9はどの物理エクステントとも対応していない。
ストレージ装置3において、論理エクステントと物理エクステントは一対一で対応しており、論理エクステント内の論理アドレスそれぞれも、論理エクステントと対応する物理エクステント内の物理アドレスと一対一に対応している。
ここで、ストレージ装置3のデータ読み出し、データ書き込みの概要を述べる。まず、ホスト装置21〜23は、論理ディスクID及び論理アドレスをストレージ装置3に送信する。次に、ストレージ装置3は、論理ディスクID及び論理アドレスを、デバイスD0〜DN-1の物理アドレスに変換し、物理アドレスに該当するデータを読み出し、又は、物理アドレスに対応する記憶領域へデータを書き込む。そして、ストレージ装置3は、応答をホスト装置21〜23に送信し、処理を終了する。アドレスの変換は、後述する論理エクステント情報テーブル8を参照して行われる。
本実施形態においては、ストレージ装置3内の各デバイスD0〜DN-1に対して、ワークロードに適切なオーバープロビジョニング設定を行うための処理を説明する。
以下で、上記図1で例示されているストレージ装置3の機能について詳しく説明する。
デバイス構成部10は、ストレージ装置3にデバイスが追加又は交換される場合の設定を行う。デバイス構成部10は、例えば、デバイスに関するレコード追加処理を行う。
論理ディスク構成部11は、論理ディスクが追加される場合の設定を行う。論理ディスク構成部11は、例えば、論理ディスクに関するレコード追加処理を行う。
読み出し部12は、対象アドレス抽出処理、読み出し処理、テーブル更新処理を行う。
書き込み部13は、対象アドレス抽出処理、書き込み処理、テーブル更新処理を行う。
アドレス範囲抽出部14は、読み出し、書き込みの対象を抽出する。
寿命補正部15は、デバイスD0〜DN-1の寿命補正処理、再配置先選択処理、再配置処理、再配置先評価処理、アロケート書き込み先選択処理、アロケート書き込み先評価処理を行う。
設定変更部16は、オーバープロビジョニングの設定変更処理、設定評価処理を行う。
デバイス固有情報テーブル6は、ストレージ装置3のデバイスD0〜DN-1の論理容量等を管理する。
論理ディスク情報テーブル7は、論理ディスクLD0〜LDN-1の論理容量等を管理する。
論理エクステント情報テーブル8は、論理エクステントのアドレス情報と物理エクステントとの対応関係を管理する。
物理エクステント情報テーブル9は、物理エクステントの情報を管理する。
本実施形態の各図において、MbyteはMBと表記する。
図3は、本実施形態に係るデバイス固有情報テーブル6の一例を示すデータ構造図である。
デバイス固有情報テーブル6は、デバイスDiの使用容量、書き込み量を管理するための情報である。図3の1エントリは、1つのデバイスに対応している。デバイス固有情報テーブル6には、ストレージ装置3内のホットスペア用のデバイスを含むすべてのデバイスDiの情報がエントリされている。
デバイス固有情報テーブル6の各エントリは、各デバイスDiのデバイスID、最大容量、論理容量、現在使用容量、残り書き込み量、保証書き込み量、読み出し量、更新量、追記量、性能仕様、最大負荷を含む。
デバイスIDは、デバイスDiを一意に特定するためのIDであり、例えば、対応するデバイスのSCSI(Small Computer System Interface) IDを用いてもよい。
最大容量は、ホスト装置21〜23が使用できる容量の最大値を表す。
論理容量は、ホスト装置21〜23の使用可能な容量であり、最大容量とは異なる。
現在使用容量は、論理容量のうち、実際にホスト装置21〜23が使用している分の容量である。
残り書き込み量は、デバイスDiのベンダが保証する総書み込み量から、デバイスDiの使用開始からの書み込み量の合計を引いた値である。メモリ制御装置5は、残り書き込み量の値に基づいて、デバイスDiに対して適切なオーバープロビジョニングの設定を行う。
保証書き込み量は、ベンダが保証する、単位時間あたりの書き込み量である。この保証書き込み量にそったペース以内で書き込みが実行されれば、ベンダの保証期間を過ぎるまでデバイスDiは寿命に達しないことが保証される。本実施形態において、例えば、単位時間は一日としてもよい。
読み出し量は、デバイスDiに対する単位時間あたりの読み出されたデータ量の累計値である。
更新量は、デバイスDiに対する単位時間あたりに更新されたデータ量の累計値である。
追記量は、デバイスDiに対する単位時間あたりのアロケート書き込みされたデータ量の累計値である。
アロケート書き込みとは、物理エクステントの割り当ての行われていない論理エクステントへの書き込みを指す。
性能仕様は、デバイスDiの最大性能の仕様である。性能指数としては、IOPS(Input/Output Per Second)、応答時間(単位:millisecond)、スループット(単位:MB/sec)などが用いられてもよい。本実施形態では性能指数の一例としてIOPSを使用する。
最大負荷は、デバイスDiに対する単位時間中に記録された性能指数の最大値である。換言すれば、最大負荷は、単位時間中に記録されるデバイスDiの最大性能を表す。
本実施形態におけるオーバープロビジョニングの設定では、論理容量を、最大容量以下の値で、デバイスDiに対して設定することができる。
デバイス構成部11は、新しいデバイスが追加される場合に、デバイス固有情報テーブル6における各属性の初期化を行う。
ここで、デバイス構成部11によるデバイス固有情報テーブル6における各属性の初期化及び更新について説明する。デバイス固有情報テーブル6の更新は、デバイスDiの種類により適宜変更される。
デバイス構成部11は、デバイス固有情報テーブル6に、デバイスID、最大容量、保証書き込み量、性能仕様として、固定値を設定する。
デバイス構成部11は、論理容量と書き込み量上限を初期化し、寿命補正部15は、論理容量を更新する。
デバイス構成部11は、現在使用容量、残り書き込み量、更新量、追記量を初期化し、書き込み部13は、現在使用容量、残り書き込み量、更新量、追記量を更新する。デバイス構成部11は、単位時間が経過すると、更新量、追記量をリセットする。
デバイス構成部11は、読み出し量を初期化し、読み出し部12は、読み出し量を更新する。デバイス構成部11は、単位時間が経過すると、読み出し量をリセットする。
デバイス構成部11は、最大負荷を、単位時間中に記録し続ける。デバイス構成部11は、単位時間が経過すると、最大負荷をリセットする。
図4は、本実施形態に係る論理ディスク情報テーブル7の一例を示すデータ構造図である。
論理ディスク情報テーブル7は、論理ディスクLD0〜LDN-1の論理容量を管理するための情報である。図4の1エントリは、1つの論理ディスクに対応している。論理ディスク情報テーブル7には、ストレージ装置3内のすべての論理ディスクLD0〜LDN-1の情報がエントリされている。
論理ディスク情報テーブル7の各エントリは、論理ディスクIDと論理容量とを含む。
論理ディスクIDは、論理ディスクを一意に特定するためのIDである。
論理容量は、論理ディスクに設定されている論理容量を表す。
論理ディスク構成部11は、論理ディスク情報テーブル7の初期化と更新を行う。
図5は、本実施形態に係る論理エクステント情報テーブル8の一例を示すデータ構造図である。
論理エクステント情報テーブル8は、論理エクステントを格納する位置を示すアドレス情報と、論理エクステントIDと、物理エクステントIDとの対応関係を管理するための情報である。図5の1エントリは、1つの論理エクステントに対応している。論理エクステント情報テーブル8の各エントリは、各論理エクステントの論理エクステントID、論理ディスクID、先頭論理アドレス、所属デバイスID、物理エクステントID、読み出し量、書き込み量を含む。論理エクステント情報テーブル8には、ストレージ装置3内の全ての論理エクステントがエントリされている。
論理エクステントIDは、論理ディスク内で論理エクステントを一意に特定するための識別情報である。
論理ディスクIDは、論理エクステントを含む論理ディスクを特定するためのIDである。
先頭論理アドレスは、論理ディスク内で論理エクステントを管理する論理アドレス領域の先頭の論理アドレスである。
所属デバイスIDは、論理エクステントと対応する物理エクステントを含むデバイスを特定するためのIDである。
物理エクステントIDは、論理エクステントと対応する物理エクステントを特定するためのIDである。
読み出し量は、論理エクステントに対する単位時間あたりの読み出されたデータ量の累計値である。
書き込み量は、論理エクステントに対する単位時間あたりの更新されたデータ量の累計値である。
デバイス構成部10は、論理エクステントID、論理ディスクID、先頭論理アドレスを初期化し、更新は行わない。
書き込み部13は、各論理エクステントの所属デバイスIDと物理エクステントIDとの組を初期化する。寿命補正部15は、再配置処理に基づいて、各論理エクステントに対応する所属デバイスIDと物理エクステントIDとの組を更新する。
論理ディスク構成部11は、読み出し量、書き込み量を初期化し、それぞれゼロとする。読み出し部12は、読み出し量を更新する。論理ディスク構成部11は、単位時間が経過すると、読み出し量をリセットする。書き込み部13は、書き込み量を更新する。論理ディスク構成部11は、単位時間が経過すると、書き込み量をリセットする。
図6は、本実施形態に係る物理エクステント情報テーブル9の一例を示すデータ構造図である。
物理エクステント情報テーブル9は、物理エクステントの情報を管理するための情報である。図6の1エントリは、1つの物理エクステントに対応している。物理エクステント情報テーブル9の各エントリは、各物理エクステントの物理エクステントID、所属デバイスID、先頭物理アドレス、空き情報を含む。物理エクステント情報テーブル9には、ストレージ装置3内のすべての物理エクステントがエントリされている。物理エクステントは、ストレージ装置3に備えられるデバイスD0〜DN-1が提供する全記憶領域に対して定義される。
物理エクステントIDは、物理エクステントをデバイスMD0〜MDN-1内で一意に特定するためのIDである。
所属デバイスIDは、物理エクステントを含むデバイスを特定するためのIDである。
先頭物理アドレスは、物理エクステントを管理する物理アドレス領域の先頭の物理アドレスである。
空き情報は、物理エクステントの状態を示す情報である。空き情報は、物理エクステントを管理するアドレス領域に基づいて以下の値を持つ。
物理エクステントのアドレス領域がすべて消去済みの場合、空き情報は1(「空き」)となる。
物理エクステントのアドレス領域にデータが格納されている場合、空き情報は0(「使用」)となる。
物理エクステントのアドレス領域がオーバープロビジョニングによりホスト装置21〜23によって使用されない範囲となっている場合、空き情報はNULL(「非使用領域」)となる。
デバイス構成部10は、新しいデバイスが追加された場合に、物理エクステント情報テーブル9を設定する。
書き込み部13は、物理エクステント情報テーブル9に対して、物理エクステントID、所属デバイスID、先頭物理アドレスに対するレコード追加及び初期値の設定を行う。書き込み部13は、物理エクステント情報テーブル9に対して、物理エクステントID、所属デバイスID、先頭物理アドレスの更新を行わない。書き込み部13は、空き情報に初期値として1を設定し、その後更新を行う。
メモリ制御装置5は、論理エクステント情報テーブル8と物理エクステント情報テーブル8とを参照することにより、論理アドレスに対応する物理アドレスを求める。この論理アドレスから物理アドレスへの変換は、後述する。
以下で、メモリ制御装置5で実行される各種の処理について説明する。
図7は、本実施形態に係るデバイス構成部10の処理の一例を示すフローチャートである。
デバイス構成部10は、ストレージ装置3に追加されるデバイスのリストを受け付けた場合に、ステップS701において、リストの全てのデバイスに対する設定が完了したか否か判断する。受け付けたリストはDLと表記する。
リストDLの全てのデバイスに対する設定が完了している場合、処理は終了する。
リストDLの全てのデバイスに対する設定が完了していない場合、ステップS702において、デバイス構成部10は、未設定のデバイスDiを選択する。
ステップS703において、デバイス構成部10は、デバイスDiに関するレコード追加処理を実行する。その後、処理はステップS701に戻る。
図8は、本実施形態に係るデバイス構成部10のレコード追加処理の一例を示すフローチャートである。
ステップS801において、デバイス構成部10は、デバイス固有情報テーブル6へデバイスDiに関するレコードを新規生成する。
具体的には、デバイス構成部10は、デバイスID、最大容量、保証書込量、性能仕様を以下の方式で設定する。
デバイス構成部10は、デバイスDiへコマンドを送り、デバイスDiからのコマンドに対する応答にしたがって、デバイスID、最大容量、保証書込量、性能仕様を設定する。コマンドは、例えば、SCSIのINQUIRYコマンドである。
デバイス構成部10は、デバイスDiがこのようなコマンドを扱わない場合に、例えばユーザなどの人手で設定された追加されるデバイスDiの初期値を設定する。
デバイス構成部10は、デバイスDiの種類ごとに設定値の定義されたテーブルを参照することで、デバイスDiの設定値を設定する。
デバイス構成部10は、論理容量の初期値を、最大容量の50%で設定する。しかしながら、論理容量は、最大容量に対して50%ではない他の割合で設定されてもよい。
デバイス構成部10は、現在使用容量、読み出し量、更新量、追記量、最大負荷をゼロで初期化する。
ステップS802において、デバイス構成部10は、デバイスDiの最大容量/エクステントサイズにより、追加物理エクステント数を計算する。
ステップS803において、デバイス構成部10は、追加物理エクステント数分の物理エクステントのレコード追加が完了したか否か判断する。
追加物理エクステント数分の物理エクステントの設定(レコード追加)が完了した場合、処理は終了する。
追加物理エクステント数分の物理エクステントの設定が完了していない場合、ステップS804において、デバイス構成部10は、物理エクステント情報テーブル9に物理エクステントのレコードを新規生成する。
具体的には、デバイス構成部10は、物理エクステントIDとして、物理エクステント情報テーブル9内で一意な物理エクステントIDを設定する。デバイス構成部10は、所属デバイスIDとして、デバイスDiのデバイスIDを設定する。デバイス構成部10は、先頭物理アドレスとして、デバイスDiに対してすでに設定したレコード数×エクステントサイズ分のセクタ数、を設定する。デバイス構成部10は、デバイスDiの空き情報を「空き」とする。
なお、ストレージ装置3の運用中にデバイスDiが故障した場合、デバイス構成部10は、所属デバイスIDが故障したデバイスDiを示す全ての論理エクステントと物理エクステントとを削除する。
図9は、本実施形態に係る論理ディスク構成部11の処理の一例を示すフローチャートである。
論理ディスク構成部11は、論理ディスクが設定される場合に、論理ディスク情報テーブル7、論理エクステント情報テーブル8を更新する。論理ディスクの生成、論理ディスクIDの付与、論理容量の付与、及びパーティション分け等の設定は、例えば、人手によりすでに行われているとする。
論理ディスク構成部11は、追加される論理ディスクのリストを受け付けた場合に、ステップS901において、リストの全ての論理ディスクに対する設定が完了したか否か判断する。追加される論理ディスクのリストはLLと表記する。
リストLLの全ての論理ディスクに対する設定が完了している場合、処理は終了する。
リストLLの全ての論理ディスクに対する設定が完了していない場合、ステップS902において、論理ディスク構成部11は、未設定の論理ディスクを選択する。選択された論理ディスクはLiと表記する。
ステップS903において、論理ディスク構成部11は、論理ディスクLiに関するレコード追加処理を実行する。その後、処理はステップS901に戻る。
図10は、本実施形態に係る論理ディスク構成部11によって実行される論理ディスクLiに関するレコード追加処理の一例を示すフローチャートである。
論理ディスク構成部11は、論理ディスクLiの論理ディスクIDと論理容量とを入力する。入力される論理ディスクIDはLID、入力される論理容量はLVと表記する。論理ディスクID LIDと論理容量LVとの入力値は、論理ディスクLiが設定される場合に参照される構成情報の一部とする。
ステップS1001において、論理ディスク構成部11は、論理ディスク情報テーブル7へ未設定の論理ディスクLiに関するレコードを新規生成し、レコードに、入力した論理ディスクID LIDと入力した論理容量LVとを設定する。
ステップS1002において、論理ディスク構成部11は、論理ディスクLiの入力した論理容量LV/エクステントサイズにより、追加論理エクステント数を計算する。
ステップS1003において、論理ディスク構成部11は、論理ディスクLiに所属する全論理エクステントの設定が完了したか否か判断する。
論理ディスクLiに所属する全論理エクステントの設定が完了した場合、処理は終了する。
論理ディスクLiに所属する全論理エクステントの設定が完了していない場合、ステップS1004において、論理ディスク構成部11は、論理エクステント情報テーブル8に、追加論理エクステントサイズ数分の論理エクステントのレコードを新規生成する。さらに、論理ディスク構成部11は、論理エクステント情報テーブル8のレコード1つに対応する論理エクステントの設定を、以下の方式で行う。
論理ディスク構成部11は、論理エクステントIDとして、論理エクステント情報テーブル8内で一意なIDを設定する。
論理ディスク構成部11は、入力した論理ディスクID LIDを、論理ディスクIDとして設定する。
論理ディスク構成部11は、ゼロから始まり論理エクステント情報テーブル8中の同じ論理ディスクIDに所属する論理エクステントの数×エクステントサイズ分のアドレス数により、論理エクステントの先頭論理アドレスを設定する。
論理ディスク構成部11は、所属デバイスIDを、NULLに設定する。所属デバイスIDの値は、データ書き込み時に書き込み部13が設定する。
論理ディスク構成部11は、物理エクステントIDを、NULLに設定する。物理エクステントIDの値は、データ書き込み時に書き込み部13が設定する。
論理ディスク構成部11は、読み出し量及び書き込み量を、ゼロに設定する。
図11は、本実施形態に係る読み出し部12の処理の一例を示すフローチャートである。ただし、図11の一部、具体的にはステップS1102は、アドレス範囲抽出部14の処理に相当する。
ホスト装置21〜23のいずれかは、論理ディスクID LID、論理アドレス、データサイズをパラメータとする読み出しコマンドを、ストレージ装置3に送信する。ストレージ装置3は、パラメータとデバイス情報とに基づいてデータ読み出しを行い、読み出しデータをホスト装置21〜23のいずれかに返す。
読み出し部12は、対象アドレス抽出処理、読み出し処理、テーブル更新処理を実行する。
図11において、ステップS1101〜S1103は、対象アドレス抽出処理に相当する。
ステップS1101において、読み出し部12は、ホスト装置21〜23のいずれかから、読み出し先である論理ディスクの論理ディスクID LID、論理アドレス、データサイズを受信する。受信した論理アドレスはADDRと表記し、データサイズはSIZEと表記する。
ステップS1102において、アドレス範囲抽出部14は、受信した論理ディスクID LID、論理アドレスADDR、データサイズSIZEに基づいて、読み出し対象の論理エクステントの論理エクステントIDと、当該読み出し対象の論理エクステント内の読み出し対象の先頭アドレスと、当該読み出し対象の論理エクステント内でのデータのサイズとの組を含むアドレス範囲のリストを計算する。読み出し対象の論理エクステントはEjと表記し、読み出し対象の先頭アドレスはAjと表記し、サイズはSjと表記し、アドレス範囲のリストはLRと表記する。
ステップS1103において、読み出し部12は、読み出しデータを格納するためのバッファメモリを、データサイズSIZE分確保する。
図11において、ステップS1104〜S1110は、読み出し処理とテーブル更新処理とに相当する。
ステップS1104において、読み出し部12は、リストLR内から、読み出し対象の論理エクステントID Ejと先頭アドレスAjとサイズSjとの組(Ej,Aj,Sj)を選択する。
ステップS1105において、読み出し部12は、論理エクステント情報テーブル8を参照し、読み出し対象の論理エクステントID Ejに対応する読み出し対象の物理エクステントIDを選択する。読み出し対象の物理エクステントIDはPkと表記する。
ステップS1106において、読み出し部12は、物理エクステントID Pkの示す物理エクステントにおける先頭アドレスAjからサイズSj分までのデータを読み出し、読み出しデータとしてバッファメモリに格納する。
ステップS1107において、読み出し部12は、論理エクステント情報テーブル8を参照し、読み出し対象の論理エクステントID Ejに対応する読み出し量を、サイズSj分増加する。
ステップS1108において、読み出し部12は、デバイス固有情報テーブル6を参照し、データ読み出しの行われたデバイスDiを示すデバイスIDに対応する読み出し量を、サイズSj分増加する。
ステップS1109において、読み出し部12は、リストLR内から、全ての論理エクステントID Ejと先頭アドレスAjとサイズSjとの組(Ej,Aj,Sj)が選択されたか否か判断する。
リストLR内から、全ての組(Ej,Aj,Sj)が選択されていない場合には、処理はステップS1104に移動する。
リストLR内から全ての組(Ej,Aj,Sj)が選択されている場合には、ステップS1110において、読み出し部12は、ホスト装置21〜23のいずれかにバッファメモリの読み出しデータを送信し、処理を終了する。データはDATAと表記する。
図12は、本実施形態に係るアドレス範囲抽出部14の処理の一例を示すフローチャートである。この図12の処理は、上記図11のステップS1102に相当する。
アドレス範囲抽出部14は、アドレス範囲を抽出する対象の論理ディスクID LID、対象のアドレスADDR、データサイズSIZEを入力し、論理エクステントID Ejと先頭アドレスAjとサイズSjとを含むリストLRを出力する。
図12において、ステップS1201及びステップS1202は、初期化処理に相当する。
ステップS1201において、アドレス範囲抽出部14は、アドレス範囲のリストLRを空リストとして初期化する。
ステップS1202において、アドレス範囲抽出部14は、変数NS=SIZEとし、変数NA=ADDRとする。
図12において、ステップS1203以降は、リストLRの生成処理に相当する。
ステップS1203において、アドレス範囲抽出部14は、論理エクステント情報テーブル8を参照し、論理エクステントIDのうち、論理エクステントID Ejの先頭論理アドレス≦NA<(Ejの先頭論理アドレス+エクステントサイズ分のセクタ数)、を満たす論理エクステントID Ejを計算する。
ステップS1204において、アドレス範囲抽出部14は、先頭アドレスAj=NAとする。
ステップS1205において、アドレス範囲抽出部14は、論理エクステントID Ejの残りサイズRS=Ejの(終端論理アドレス−ADDR)× セクタサイズ、とする。アドレス範囲抽出部14は、RS>SIZEの場合、Sj=NS、NA=0とする。アドレス範囲抽出部14は、RS>SIZEではない場合、Sj=RS、NA=(Ejの先頭論理アドレス+エクステントサイズ分のセクタ数)、とする。
ステップS1206において、アドレス範囲抽出部14は、リストLRに、(Ej,Aj,Sj)を追加する。
ステップS1207において、アドレス範囲抽出部14は、NS=NA−Sjとする。
ステップS1208において、アドレス範囲抽出部14は、NS=0か否か判断する。
NS=0ではない場合、処理はステップS1205に移る。
NS=0の場合、ステップS1209において、アドレス範囲抽出部14は、リストLRを、読み出し部12又は書き込み部13に返す。
図13は、本実施形態に係る書き込み部13の処理の一例を示すフローチャートである。図13におけるステップS1302は、上記図12のアドレス範囲抽出部14の処理に相当し、ステップS1304は、寿命補正部15のアロケート書き込み先選択処理に相当する。
ホスト装置21〜23のいずれかは、論理ディスクID、論理アドレス、データサイズ、書き込みデータをパラメータとする書き込みコマンドを、ストレージ装置3に送信する。ストレージ装置3は、パラメータとデバイス情報とに基づいてデータ書き込みを行う。
図13において、ステップS1301〜S1304は、対象アドレス抽出処理に相当する。
ステップS1301において、書き込み部13は、ホスト装置21〜23のいずれかから、書き込み先である論理ディスクの論理ディスクID LID、論理アドレスADDR、データサイズSIZE、書き込みデータDATAを受信する。書き込み部13は、書き込みデータDATAを格納するためのバッファメモリを、データサイズSIZE分確保し、バッファメモリに書き込みデータDATAを格納する。
ステップS1302において、アドレス範囲抽出部14は、受信した論理ディスクID LID、論理アドレスADDR、データサイズSIZEに基づいて、書き込み対象の論理エクステントの論理エクステントID Ejと、当該書き込み対象の論理エクステント内の書き込み対象の先頭アドレスAjと、当該書き込み対象の論理エクステント内でのデータのサイズSjとの組(Ej,Aj,Sj)を含むアドレス範囲のリストLRを計算する。
ステップS1303において、書き込み部13は、論理エクステント情報テーブル8を参照し、リストLR内の論理エクステントID Ejのうち、所属デバイスIDが設定されていない論理エクステントIDがあるか否か、すなわち、論理エクステントIDと物理エクステントIDとの新規の対応付けが必要か否か判断する。
新規の対応付けが必要でない場合、処理は、ステップS1305に移動する。
新規の対応付けが必要な場合、ステップS1304において、寿命補正部15は、アロケート書き込み先選択処理により、論理エクステントIDと一対一で対応する物理エクステントIDを設定する。
図13において、ステップS1305〜S1314は、書き込み処理とテーブル更新処理とに相当する。
ステップS1305において、書き込み部13は、OFFSET=0とする。
ステップS1306において、書き込み部13は、リストLR内から、読み出し対象の論理エクステントID Ejと先頭アドレスAjとサイズSjとの組(Ej,Aj,Sj)を選択する。
ステップS1307において、書き込み部13は、論理エクステント情報テーブル8を参照し、書き込み対象の論理エクステントID Ejに対応する書き込み対象の物理エクステントID Pkを選択する。
ステップS1308において、書き込み部13は、書き込み対象の物理エクステントID Pkで示される物理エクステントに対して、先頭アドレスAjからサイズSj分までに、バッファメモリのOFFSETの位置からサイズSj分のデータを書き込む。
ステップS1309において、書き込み部13は、OFFSET=OFFSET+Sjにより、バッファメモリの参照位置を更新する。
ステップS1310において、書き込み部13は、論理エクステント情報テーブル8を参照し、書き込み対象の論理エクステントID Ejに対応するレコードの書き込み量を、サイズSj分増加する。
ステップS1311において、書き込み部13は、物理エクステント情報テーブル9を参照し、書き込み対象の物理エクステントID Pkに対応するレコードの空き情報を「使用中」に設定する。
ステップS1312において、書き込み部13は、デバイス固有情報テーブル6を参照し、データ書き込みの行われたデバイスDiの残り書き込み量を、サイズSj分減少する。書き込み部13は、エクステントサイズを現在使用容量に加え、デバイスDiの現在使用容量を更新する。書き込み部13は、アップデート書き込みの場合は更新量に、アロケート書き込みの場合は追記量に書き込みデータのデータサイズを加算する。アップデート書き込みとは、物理エクステントに対する割り当てが行われている論理エクステントへの書き込みを指す。
ステップS1313において、書き込み部13は、リストLR内の全ての論理エクステントID Ejと先頭アドレスAjとサイズSjとの組(Ej,Aj,Sj)が選択されたか否か判断する。
リストLR内の全ての組(Ej,Aj,Sj)が選択されていない場合、処理はステップS1306に移動する。
リストLR内の全ての組(Ej,Aj,Sj)が選択された場合、ステップS1314において、書き込み部13は、ホスト装置13のいずれかに書き込み完了通知を送信し、処理は終了する。
図14は、本実施形態に係る寿命補正部15のアロケート書き込み先選択処理の一例を示すフローチャートである。この図14のアロケート書き込み先選択処理は、上記図13のステップS1304に相当する。
寿命補正部15によって実行されるアロケート書き込み先選択処理は、デバイスD0〜DN-1の寿命及び性能を後述するアロケート書き込み先評価処理によって評価し、評価値が最も大きいデバイスを適切なアロケート書き込み先として選択する。
図14において、ステップS1402は、初期化処理に相当する。
ステップS1401において、寿命補正部15は、リストLRから、論理エクステントID Ejを1つ選択する。
ステップS1402において、寿命補正部15は、評価リストELを空リストとして初期化する。
図14において、ステップS1403〜S1406は、アロケート書き込みデバイス決定処理に相当する。
ステップS1403において、寿命補正部15は、デバイス固有情報テーブル6を参照し、デバイスIDの昇順にデバイスDiの情報を選択する。
ステップS1404において、寿命補正部15は、後述するアロケート書き込み先評価処理により、論理エクステントID EjとデバイスDiの情報とに基づいて、評価値を計算する。計算した評価値はFと表記する。そして、寿命補正部15は、デバイスDiの情報と評価値Fとの組をリストELに追加する。
ステップS1405において、寿命補正部15は、デバイス固有情報テーブル6から全てのデバイスDiの情報が選択されたか否か判断する。
デバイス固有情報テーブル6から全てのデバイスDiの情報が選択されていない場合、処理はステップS1403に移動する。
デバイス固有情報テーブル6から全てのデバイスDiの情報が選択された場合、ステップS1406において、寿命補正部15は、リストELから、評価値Fが最大であるデバイスDiのデバイスIDを選択する。
図14において、ステップS1407〜S1409は、論理エクステントIDと物理エクステントIDとの対応付け処理に相当する。
ステップS1407において、寿命補正部15は、選択されたデバイスIDで示されるデバイスDiに所属し、かつ、空き情報「空き」に対応する物理エクステントIDから、IDの昇順に、1つの物理エクステントID Pkを選択する。このステップS1407の処理は、必要な情報として、物理エクステント情報テーブル9における各物理エクステントIDと、当該物理エクステントIDに対応する所属デバイスIDと、空き情報と、を用いる。
ステップS1408において、寿命補正部15は、論理エクステント情報テーブル8を参照し、論理エクステントID Ejに対応するレコードに、デバイスDiを示すデバイスIDと物理エクステントID Pkとを格納し、論理エクステントID Ejと物理エクステントID Pkとを対応付ける。
ステップS1409において、寿命補正部15は、リストLRから全ての論理エクステントIDが選択されたか否か判断する。
リストLRから全ての論理エクステントIDが選択されていない場合、処理はステップS1401に移動する。
リストLRから全ての論理エクステントIDが選択された場合、処理は終了する。
図15は、本実施形態に係る寿命補正部15のアロケート書き込み先評価処理の一例を示すフローチャートである。この図15のアロケート書き込み先評価処理は、上記図14のステップS1404に相当する。この図15において、ステップS1501〜S1504の実行順序は、自由に変更可能であり、並列に実行されてもよい。
寿命補正部15は、デバイスDiのデバイス情報、論理エクステントID Ej、重みW1〜W4(ΣWi=1, ∀i. 0≦Wi)を入力し、評価値Fを出力する。例えば、重みW1〜W4は、ストレージ装置3のパラメータに含まれるポリシー情報としてユーザが設定可能な値とする。例えば、重みW1〜W4の初期値は、すべて0.25としてもよい。例えば、重みW1〜W4などのようなデバイス又は論理エクステントに関わる情報は、デバイス固有情報テーブル6又は論理エクステント情報テーブル8に格納されていてもよい。
ステップS1501において、寿命補正部15は、性能値V1=W1×(デバイスDiの性能仕様−デバイスDiの現在IOPS)/デバイスDiの性能仕様、を計算する。例えば、デバイスDiの現在IOPSは、このアロケート書き込み先評価処理を実行中に計測されたIOPS値とする。
ステップS1502において、寿命補正部15は、平準化後保証書き込み量EW=(残り寿命/ストレージ装置3全体のデバイスの残り寿命平均)×デバイスDiの保証書き込み量)、を計算し、寿命値V2=W2×(EW−Σ(デバイスDiに含まれる論理エクステントの書き込み量))/EW、を計算する。
ステップS1503において、寿命補正部15は、容量値V3=W3×(デバイスDiの論理容量−デバイスDiの現在使用容量−エクステントサイズ)/デバイスDiの論理容量、を計算する
ステップS1504において、寿命補正部15は、追記率AR=デバイスDiの追記量/(デバイスDiの追記量+デバイスDiの読み出し量+デバイスDiの更新量)、を計算し、追記値V4=W4×(1−AR)、を計算する。
ステップS1505において、寿命補正部15は、評価関数F=V1+V2+V3+V4に基づいて、評価値Fを計算し、評価値Fを返す。もし、V1<0又はV3<0の場合はF=0とする。
上記のような評価関数を用いて、アロケート書き込み先を管理することにより、以下の効を得ることができる。
例えば、デバイスの性能仕様に対して現在の負荷が小さく、負荷に余裕が有るほど、デバイスに対する評価値Fは高くなる。したがって、負荷に余裕のあるデバイスに対してエクステントがアロケート書き込みされる割合を増やすことができる。
デバイスに対する書き込み量が保証書き込み量に対して少ない場合に、このデバイスの寿命に余裕が生じる。書き込み量が少ない場合、評価関数によって、寿命に余裕のあるデバイスの評価値Fは高くなる。したがって、寿命に余裕のあるデバイスに対してエクステントがアロケート書き込みされる割合を増やすことができ、寿命の少ないデバイスへエクステントがアロケート書き込みされる割合を減らすことができる。
アロケート書き込み先評価処理における寿命値の計算では、保証書き込み量に対して、デバイスの寿命とデバイス全体の残り寿命平均との比を、掛けている。これにより、ストレージ装置3に既に設置済みのデバイス全体と比較し、残り寿命が大きい新規設置のデバイスは、評価値Fが高くなる。このため、新規設置のデバイスに対してエクステントがアロケート書き込みされる割合を増やすことができる。一方、残り寿命が少ないデバイスへエクステントがアロケート書き込みされる割合は減少し、デバイスの寿命平準化を行うことができる。
アロケート書き込み先評価処理では、デバイスの最大容量に対して現在使用容量が少なほど、デバイスに対する評価値Fが高くなり、アロケート書き込みされ易くなる。したがって、現在使用容量が論理容量に近いデバイスへのアロケート書き込みの割合を減らすことができる。
アロケート書き込み先評価処理では、追記率の高いデバイスの評価値Fは低くなる。したがって、現在のアロケート書き込みの多いデバイスに対してアロケート書き込みが行われる割合は減少し、過剰なアロケート書き込みによる容量圧迫を抑え、デバイス間で容量平準化を行うことができる。
ここで、図16乃至図20を用いてアロケート書き込み先選択処理の具体例を説明する。
図16は、デバイス固有情報テーブル6の一例を示すデータ構造図である。
デバイス固有情報テーブル6は、デバイスID D1〜D3を含む。
図17は、論理エクステント情報テーブル7の一例を示すデータ構造図である。
論理エクステント情報テーブル7は、5つの論理エクステントID E1〜E5を含む。本実施形態において、論理エクステントID D1〜D3のそれぞれは、一般化して論理エクステントID Ejと表記する。
図18は、物理エクステント情報テーブル9の一例を示すデータ構造図である。
物理エクステント情報テーブル8は、6つの物理エクステントID P1〜P6を含む。本実施形態において、物理エクステントID P1〜P6のそれぞれは、一般化して物理エクステントID Pkと表記する。
例えば、論理エクステント情報テーブル8における論理エレメントID E5を新たにアロケート書き込みする場合について説明する。
まず、寿命補正部15は、上記図14のステップS1403からステップS1405までのループにより、各デバイスD1〜D3の評価値Fを計算する。
図19は、デバイスと評価値との関係の一例を示す図である。
寿命補正部15は、上記図14のステップS1406において、評価値Fが最大のデバイスD3に対してアロケート書き込みを行うことを決定する。
寿命補正部15は、上記図14のステップS1407及びステップS1408において、論理エクステントID E5を、評価値Fが最大のデバイスID D3の空き状態の物理エクステントID P6と対応付け、論理エクステント情報テーブル8を更新する。
図20は、更新後の論理エクステント情報テーブル8の一例を示すデータ構造図である。
論理エクステントID E5に対応するレコードに、所属デバイスIDとして、デバイスID D3が格納され、物理エクステントIDとして、物理エクステントID P6が格納される。
図21は、本実施形態に係る寿命補正部15の寿命補正処理の一例を示すフローチャートである。ただし、図21におけるステップS2118は、後述する設定変更部16の処理に相当する。
寿命補正部15は、各デバイスD0〜DN-1内の論理エクステントごとに、デバイス固有情報テーブル6に基づいて評価を行い、各論理エクステントを評価値の高いデバイスに再配置する。
また、寿命補正部15は、各デバイスD0〜DN-1の論理容量を、デバイス固有情報テーブル6に基づいて計算されたオーバープロビジョニングの設定に、変更する。
寿命補正処理は、ストレージ装置3内のデバイスD0〜DN-1の寿命を平準化する。
寿命補正処理では、まず、初期化処理によって、再配置を行う候補となる論理エクステントのリストを初期化する。
次に、寿命補正処理では、移動候補となる論理エクステントの追加処理によって、保証書き込み量を上回るデバイス上の論理エクステントを1つ又は複数選択し、移動候補とする。
次に、寿命補正処理では、1つ又は複数の論理エクステントの再配置を行い、各デバイスD0〜DN-1の寿命及び性能の無駄をなくす。
そして、寿命補正処理では、最後に、各デバイスD0〜DN-1のオーバープロビジョニングの設定を、後述する設定変更部16によって実行されるオーバープロビジョニングの設定評価処理によって適切な値に設定し、処理を終了する。
図21において、ステップS2101は、初期化処理に相当する。
ステップS2101において、寿命補正部15は、再配置を行う候補となる論理エクステントのリストを空リストとして生成する。再配置を行う候補となる論理エクステントのリストはCLと表記する。
図21において、ステップS2102〜S2108は、移動候補となる論理エクステントの追加処理に相当する。
ステップS2102において、寿命補正部15は、デバイス固有情報テーブル6からデバイスIDの昇順で、デバイスID Diを選択する。
ステップS2103において、寿命補正部15は、論理エクステント情報テーブル8を参照し、所属デバイスID Diに対応付けられている論理エクステントID群を、論理エクステント情報テーブル8から全て選択する。
ステップS2104において、寿命補正部15は、選択された論理エクステントID群を書き込み量の降順にソートする。
ステップS2105において、寿命補正部15は、論理エクステントID群の書き込み量の総和を累積書き込み量AWとする。
ステップS2106において、寿命補正部15は、累積書き込み量AW<保証書き込み量か否か判断する。
累積書き込み量AW<保証書き込み量ではない場合、ステップS2107において、寿命補正部15は、書き込み量が最大の論理エクステントIDを、リストCLに追加し、論理エクステントID群から省き、処理はステップS2105へ移動する。
累積書き込み量AW<保証書き込み量の場合、ステップS2108において、寿命補正部15は、上記のステップS2102において、デバイス固有情報テーブル6から全てのデバイスID Diが選択されたか否か判断する。
デバイス固有情報テーブル6から全てのデバイスID Diが選択されていない場合、処理はステップS2102に移動する。
デバイス固有情報テーブル6から全てのデバイスID Diが選択された場合、処理はステップS2109に移動する。
図21におけるステップS2109〜S2117は、寿命補正部15の論理エクステント単位の再配置先選択処理及び再配置処理に相当する。
ステップS2109において、寿命補正部15は、リストCL内の論理エクステントIDを、書き込み量の降順にソートする。
ステップS2110において、寿命補正部15は、リストCL内から書き込み量が大きい順で論理エクステントID Ejを選択する。
ステップS2111において、寿命補正部15は、初期化された空の評価値リストELを生成する。
ステップS2112において、寿命補正部15は、デバイス固定情報テーブル6から昇順でデバイスID Diを選択する。
ステップS2113において、寿命補正部15は、選択された論理エクステントID EjとデバイスID Diと評価関数とに基づいて、評価値Fを計算し、デバイスID Diと評価値Fの組(デバイスID Di,評価値F)を評価値リストELに追加する。
ステップS2114において、寿命補正部15は、ステップS2112において、全てのデバイスIDが選択されたか否か判断する。
全てのデバイスIDが選択されていない場合、処理はステップS2112に移動する。これにより、全デバイスのFが計算される。
全てのデバイスIDが選択された場合、ステップS2115において、リストEL内で、評価値Fが最大のデバイスID Diを選択する。
ステップS2116において、寿命補正部15は、後述する論理エクステントの再配置処理を行い、論理エクステントEjを選択されたDiに再配置する。
ステップS2117において、寿命補正部15は、上記ステップS2110において、リストCL内から全ての論理エクステントID Ejが選択されたか否か判断する。
リストCL内から全ての論理エクステントIDが選択されていない場合、処理はステップS2110に移動する。すなわち、リストCLから全論理エクステントIDが選択されるまでステップS2110〜ステップS2117が繰り返される。
リストCL内から全ての論理エクステントIDが選択された場合、ステップS2118において、設定変更部16は、オーバープロビジョニングの設定評価処理を実行し、全デバイスD0〜DN-1のオーバープロビジョニングの設定を適切な値に変更する。
なお、上記の図21の処理のうちステップS2109〜S2118の処理は、適宜変更可能である。
図22は、本実施形態に係る寿命補正部15の寿命補正処理の変形例を示すフローチャートである。上記図21では評価値Fを計算するごとに論理エクステントを再配置する。これに代えて、この図22では、全ての論理エクステントとデバイスとの組み合わせに対する評価値Fを計算し、その全ての論理エクステントとデバイスとの組み合わせに対する評価値Fに基づいて、再配置の優先順位を判断する。
ステップS2209において、寿命補正部15は、評価値を格納するための評価値リストを空リストとして初期化する。評価値リストは、ELと表記する。
ステップS2210において、寿命補正部15は、リストCL内の論理エクステントID Ejを選択する。
ステップS2211において、寿命補正部15は、デバイス固定情報テーブル6から昇順でデバイスID Diを選択する。
ステップS2212において、寿命補正部15は、選択された論理エクステントID EjとデバイスID Diと評価関数とに基づいて、評価値Fを計算し、デバイスID Diと評価値Fの組(デバイスID Di,評価値F)を評価値リストELに追加する。
ステップS2213において、寿命補正部15は、ステップS2211において、全てのデバイスIDが選択されたか否か判断する。
全てのデバイスIDが選択されていない場合、処理はステップS2211に移動する。これにより、全デバイスの評価値Fが計算される。
全てのデバイスIDが選択された場合、寿命補正部15は、ステップS2214において、リストCL内の全ての論理エクステントIDが選択されたか否か判断する。
リストCL内の全ての論理エクステントIDが選択されていない場合、処理はステップS2210に移動する。これにより、リストCL内の全ての論理エクステントIDが選択されるまでステップS2210〜S2214までが繰り返される。
図22におけるステップS2215〜S2221は、寿命補正部15によって実行される論理エクステント単位の再配置先選択処理及び再配置処理に相当する。
ステップS2215において、寿命補正部15は、デバイス固有情報テーブル6から、昇順でデバイスDiを選択する。
ステップS2216において、寿命補正部15は、デバイスID Diに対するオーバープロビジョニングの設定変更処理を行う。設定変更処理の入力値となる論理容量は、デバイスID Diで示されるデバイスに再配置される論理エクステント分の容量である。すなわち、設定変更の入力値となる論理容量は、例えば、今の論理容量と、評価値リストEL内のデバイスID Diを含む組の個数×エクステントサイズ分の容量との和である。
ステップS2217において、寿命補正部15は、ステップS2215において、全てのデバイスIDが選択されたか否か判断する。
全てのデバイスIDが選択されていない場合、処理はステップS2215に移動する。これにより、全デバイスに対してステップS2216の処理が実行される。
全てのデバイスIDが選択された場合、ステップS2218において、寿命補正部15は、評価値リストELを評価値Fの降順にソートする。
ステップS2219において、寿命補正部15は、評価値リストEL内で評価値Fが最大の論理エクステントID EjとデバイスID Diを選択する。
ステップS2220において、寿命補正部15は、選択された論理エクステントID Ejを、選択されたデバイスID Diで示されるデバイスに再配置する。
ステップS2221において、寿命補正部15は、上記ステップS2219において、リストEL内から全ての論理エクステントIDとデバイスIDとが選択されたか否か判断する。
リストEL内から全ての論理エクステントIDとデバイスIDとが選択されていない場合、処理はステップS2219に移動する。すなわち、リストELから全ての論理エクステントIDとデバイスIDとが選択されるまでステップS2219〜ステップS2221が繰り返される。
リストEL内から全ての論理エクステントIDとデバイスIDとが選択された場合、ステップS2222において、設定変更部16は、オーバープロビジョニングの設定評価処理を実行し、全デバイスD0〜DN-1のオーバープロビジョニングの設定を適切な値に変更する。
例えば、上記図21の処理では、論理エクステントの再配置時に、評価値Fが大きいデバイスの残り容量が不足し、評価値Fが大きいデバイスが再配置先とならない場合がある。すると、例えば残り寿命が多いので再配置先としたいデバイスであっても、容量不足のため再配置先として選択されない場合がある。しかしながら、上記図22の処理では、各デバイスに、再配置される論理エクステント分の論理容量を予め確保することにより、容量不足によって評価値Fが大きいデバイスに再配置されないことを防止することができる。
ここで、図23乃至図27を用いて寿命補正処理の具体例を説明する。寿命補正処理前の各テーブルのレコードは、例えば、上述の図16乃至図18、図20と同様である。
ステップS2101において、寿命補正部15は、再配置候補のリストCLを初期化する。
ステップS2102〜S2104において、寿命補正部15は、デバイスID Diごとに、デバイスID Diに対応する論理エクステントID Ejをソートする。
ステップS2105において、寿命補正部15は、デバイスID Diごとに、論理エクステントの書き込み量の総和である累積書き込み量AWを計算する。
図23は、デバイスIDごとの累積書き込み量を例示する図である。
この図23では、デバイスID D1で示されるデバイスが、保証書き込み量より累積書き込み量が多い。したがって、このデバイスID D1に対する処理は、ステップS2106からステップS2107へ移動し、寿命補正部15は、候補リストCLに、デバイスID D1に対応付けられている論理エクステントのうち、最大の書き込み量に対応する論理エクステントIDを追加する。
寿命補正部15は、再びステップS2105で累積書き込み量を計算する。この場合、ステップS2106において、累積書き込み量AWが保証書き込み量を下回るため、処理はステップS2108に移動する。同様の処理が全てのデバイスIDに対して実行される。この図23の例では、リストCLは論理エクステントID E2のみを含む。この例では、リストCL内に1つの論理エクステントIDしか含まれないため、ステップS2109におけるソートは必要ない。ステップS2110において、寿命補正部15は、論理エクステントID E2を選択する。
ステップS2112〜S2114のループで、寿命補正部15は、各デバイスIDに対応する評価値Fを、再配置先評価処理によって計算する。
図24は、デバイスIDごとの評価値Fを例示する図である。この図24において、評価値Fが最大なのはデバイスID D3である。
図25は、再配置後の論理エクステント情報テーブル8の一例を示すデータ構造図である。
寿命補正部15は、ステップS2115で、デバイスID D3を選択し、ステップS2116において、論理エクステントID E2で示される論理エクステントを、デバイスID D3で示されるデバイス内の、物理エクステントID P5で示される物理エクステントに再配置する。
図26は、再配置後のデバイス固有情報テーブル6の一例を示すデータ構造図である。寿命補正部15は、デバイス固有情報テーブル6のうち、デバイスID D1に対応する現在使用容量を減少させる。また、寿命補正部15は、デバイス固有情報テーブル6のうち、デバイスID D3に対応する現在使用容量を増加させ、残り書き込み量を増加させ、更新量を増加させる。
寿命補正部15は、ステップS2118において、オーバープロビジョニングの設定評価処理を実行し、全デバイスD0〜DN-1のオーバープロビジョニングの設定を変更する。
図27は、オーバープロビジョニングの設定評価処理によって得られる評価結果の例を示す図である。
評価結果は、デバイスID D1〜D3ごとに、性能値V1、平準化後保証書き込み量EW、累積書き込み量AW、寿命値V2、容量値V3、追記率AR、追記値V4、評価値F、容量増加量又は容量減少量V、計算前論理容量、計算後論理容量、計算後論理容量と計算前論理容量との差分を含む。
計算前論理容量は、各デバイスの元の論理容量である。計算後論理容量は、オーバープロビジョニング設定の変更後の論理容量である。この図27の評価結果においては、書き込みの多いデバイスID D1は、あまり論理容量が増えず、アロケート書き込みされにくくなる。
図28は、本実施形態に係る寿命補正部15の再配置処理の一例を示すフローチャートである。再配置処理において、寿命補正部15は、論理エクステントID Ejと再配置先のデバイスID Diとを入力し、エクステントを再配置する。
図28において、ステップS2801〜S2806は、再配置前の元のデバイスからのデータの読み出し処理と配置先のデバイスへの書き込み処理に相当する。
ステップS2801において、寿命補正部15は、論理エクステント情報テーブル8を参照し、論理エクステントID Ejに対応する物理エクステントID Pkを選択する。
ステップS2802において、寿命補正部15は、物理エクステント情報テーブル9を参照し、物理エクステントID Pkに対応する元のデバイスのデバイスIDを選択する。
ステップS2803において、寿命補正部15は、物理エクステントID Pkで示される物理エクステントからデータを読み出し、バッファメモリに格納する。
ステップS2804において、寿命補正部15は、物理エクステント情報テーブル9を参照し、配置先のデバイスID Diに対応し、かつ、空き情報が「空き」を示す任意の再配置先の物理エクステントIDを選択する。
ステップS2805において、寿命補正部15は、選択された再配置先の物理エクステントIDで示される物理エクステントへ、バッファメモリに格納されているデータを書き込む。
ステップS2806において、寿命補正部15は、物理エクステントID Pkで示される物理エクステントのデータを消去する。元のデバイスがSATA(Serial ATA)に準拠している場合には、trimコマンドを用いてデータが消去される。元のデバイスがSAS(Serial Attached SCSI)に準拠している場合には、unmapコマンドを用いてデータが消去される。
図28において、ステップS2807〜S2809は、テーブル更新処理に相当する。このステップS2807〜S2809の実行順序は、自由に変更可能であり、並列に実行されてもよい。
ステップS2807において、寿命補正部15は、論理エクステント情報テーブル8を参照し、論理エクステントID Ejに対応する所属デバイスIDを再配置先のデバイスを示すデバイスIDに変更し、論理エクステントID Ejに対応する物理エクステントIDを再配置先の物理エクステントを示す物理エクステントIDに変更する。
ステップS2808において、寿命補正部15は、物理エクステント情報テーブル9を参照し、再配置前の元の物理エクステントID Pkに対応する空き情報を「空き」に変更し、再配置先の物理エクステントIDに対応する空き情報を「使用」に変更する。
ステップS2809において、寿命補正部15は、デバイス固有情報テーブル6を参照し、元のデバイスを示すデバイスIDに対応する現在使用容量をエクステントサイズ分減少し、配置先のデバイスID Diに対応する現在使用容量をエクステントサイズ分増加し、配置先のデバイスID Diの残り書き込み量をエクステントサイズ分減少する。
図29は、本実施形態に係る寿命補正部15の再配置先評価処理の一例を示すフローチャートである。
寿命補正部15の再配置先評価処理は、寿命補正部15のアロケート書き込み先評価処理と類似する。
ステップS2901において、寿命補正部15は、性能値V1=W1×(デバイスDiの性能仕様−デバイスDiの最大負荷)/デバイスDiの性能仕様、を計算する。このステップS2901は、デバイスDiの最大負荷を用いる点で、デバイスDiのIOPSを用いるアロケート書き込み先評価処理のステップS1501と相違している。
ステップS2902において、寿命補正部15は、上記アロケート書き込み先評価処理のステップS1501と同様に、寿命値V2を計算する。
ステップS2903において、寿命補正部15は、容量値V3=W3×(デバイスDiの最大容量−デバイスDiの現在使用容量−エクステントサイズ)/デバイスDiの論理容量、を計算する。上記アロケート書き込み先評価処理のステップS1503において、デバイスDiの論理容量を用いていた部分が、このステップS2903では、デバイスDiの最大容量を用いている。アロケート書き込み先評価処理では、現在の論理容量を超えて論理エクステントをデバイスに新たに配置することができないため、デバイスDiの論理容量とデバイスDiの現在使用容量が等しい場合は評価値をゼロとしている。一方、寿命補正処理では、デバイスDiの論理容量をオーバープロビジョニングの設定変更により後から増加可能であるため、デバイスDiの論理容量を超えて論理エクステントを再配置することが可能である。ただし、最大容量を超えた再配置はできない。
ステップS2904において、寿命補正部15は、追記値V4を計算する。
ステップS2905において、寿命補正部15は、評価関数F=V1+V2+V3+V4に基づいて、評価値Fを計算し、評価値Fを返す。
このような再配置先評価処理を実行することにより、アロケート書き込み先評価処理とほぼ同様の効果を得ることができる。
図30は、本実施形態に係る設定変更部16によって実行されるオーバープロビジョニングの設定変更処理の一例を示すフローチャートである。
設定変更部16は、デバイスID Diと論理容量LVとを入力する。
ステップS3001において、設定変更部16は、デバイスDiへオーバープロビジョニングの設定変更をSCSIコマンドなどで指示し、デバイスDiで示されるデバイスの論理容量をLVの値に変更する。
ステップS3002において、設定変更部16は、デバイスDiで示されるデバイスの論理容量が増加するか否か判断する。
デバイスDiの論理容量が増加する場合、処理はステップS3003に移動し、デバイスDiの論理容量が増加しない場合、処理はステップS3004に移動する。
ステップS3003において、設定変更部16は、物理エクステント情報テーブル9を参照し、容量増加量V=LV−現在のデバイスDiの論理容量を計算する。設定変更部16は、デバイス固有情報テーブル6を参照し、デバイスDiの論理容量を得る。設定変更部16は、(容量増加量V/エクステントサイズ)個の、空き情報が「非使用領域」となっている物理エクステント群を物理エクステントIDの昇順に選択する。設定変更部16は、空き情報が「非使用領域」となっている物理エクステント群の空き情報を「空き」に設定する。
ステップS3004において、設定変更部16は、物理エクステント情報テーブル9を参照し、容量減少量V=現在のデバイスDiの論理容量−論理容量LVを計算する。設定変更部16は、デバイス固有情報テーブル6を参照し、デバイスDiの論理容量を得る。設定変更部16は、(V/エクステントサイズ)個の、空き情報が「空き」となっている物理エクステント群を物理エクステントIDの昇順に選択する。設定変更部16は、空き情報が「空き」となっている物理エクステント群の空き情報を「未使用領域」に設定する。
ステップS3005において、設定変更部16は、デバイス固有情報テーブル6を参照し、デバイスID Diに対応する論理容量を、論理容量LVに変更する。
図31は、本実施形態に係る設定変更部16によって実行されるオーバープロビジョニングの設定評価処理(余剰容量評価処理)の一例を示すフローチャートである。
オーバープロビジョニングの設定評価処理は、上記図21のステップS2119及び上記図22のステップS2222などで実行される。
設定評価処理は、エクステントを再配置した後に、寿命が平準化されるように各デバイスの論理容量を設定する。
ステップS3101において、設定変更部16は、オーバープロビジョニングの設定を変更する対象のデバイスを示すデバイスID Diを選択する。
ステップS3102において、設定変更部16は、デバイスID Diの最大容量の特定の割合(例えば10%)を基準余剰容量として計算する。設定変更部16は、論理容量LV=デバイスDiの現在使用容量+基準余剰容量+デバイスDiの追記量×1.2、を計算する。ここで、追記量を1.2倍しているのは、追記量が現状から20%上昇しても余裕のある論理容量LVを計算するためである。論理容量LVは、最大容量を超えない範囲とする。この論理容量LVの計算式では、基準余剰容量を加えることで、容量不足となることを防止する。また、論理容量LVの計算式では、追記量を加えることで、寿命補正処理後に、同程度のアロケート書き込みが発生しても容量不足になることを防止する。
S3103において、設定変更部16は、デバイスID Diと論理容量LVとに基づいて、上記図30で説明されたオーバープロビジョニングの設定変更処理を行う。
S3104において、設定変更部16は、全てのデバイスのオーバープロビジョニングの設定が実行されたか否か判断する。
全てのデバイスのオーバープロビジョニングの設定が実行されていない場合、すなわち、全てのデバイスの再配置が完了していない場合、処理はステップS3101に移動し、上記の処理を繰り返す。
全てのデバイスのオーバープロビジョニングの設定が実行された場合、処理は終了する。
このように、設定評価処理は、アロケート書き込み量(追記量)の多いデバイスの論理容量を上げ、これによりアロケート書き込み量の多いデバイスが容量不足のためにアロケート書き込み先に選択されないことを防止することができる。
以上説明した本実施形態においては、個々のデバイスD0〜DN-1に対して、評価値Fに基づいてアロケート書き込み及び再配置、オーバープロビジョニングの設定を行い、ストレージ装置3におけるデバイスD0〜DN-1の寿命、容量、性能を平準化することができる。
本実施形態においては、アロケート書き込み先の選択により、残り寿命の少ないデバイス、単位時間の書き込み量が保証書き込み量に近いデバイスに対して、アロケート書き込みが発生することを抑制することができ、デバイスD0〜DN-1の寿命を長くすることができる。
本実施形態においては、書き込み量の多いエクステントを、評価関数を用いて残り寿命が大きいデバイス、書き込み量が少ないデバイスに再配置することができ、寿命の少ないデバイスに対する将来的な書き込み量を抑えることができる。
本実施形態においては、未使用のデバイスの追加又は故障したデバイスの交換によりストレージ装置3内のデバイスの寿命が不均等になった場合であっても、アロケート書き込み先評価処理、再配置先評価処理、オーバープロビジョニングの設定評価処理により、寿命の短いデバイスへの書き込みを抑制し、寿命の長いデバイスへの書き込みを増加させ、ストレージ装置3全体で寿命を平準化することができる。
本実施形態においては、アロケート書き込み先評価処理、再配置先評価処理、オーバープロビジョニングの設定評価処理により、負荷が高いデバイスへのアロケート書き込みを減らし、負荷の少ないデバイスのアロケート書き込みを増やし、ストレージ装置3全体で性能平準化を行うことができる。新規データの書き込みがある場合、新規データに対しては短期間に読み出し又は書き込みが発生しやすい傾向がある。本実施形態では、負荷が高いデバイスへの新規データの書き込みを減らすことができ、これにより負荷が高いデバイスに対する書き込み及び読み出しを抑制することができる。
本実施形態においては、評価値Fに基づいてデータの再配置が実行される。これにより、本実施形態においては、高負荷のデバイス、過剰に書き込まれているデバイス、残り寿命の短いデバイスへの将来的な負荷、書き込みを減らすことができ、これとは逆に、低負荷のデバイス、書き込みの少ないデバイス、残り寿命に余裕のあるデバイスに対する書き込みを増やすことができ、性能平準化及び寿命平準化を行うことができる。
本実施形態においては、デバイスの論理容量が変更される。例えば、一度も書き込みのされていない領域に対する書き込みを新規書き込みとする。本実施形態においては、高負荷のデバイス、過剰に書き込まれているデバイス、残り寿命の短いデバイスの論理容量を減らすことができ、評価値Fを下げることで新規書き込みを抑制することができる。これとは逆に、本実施形態においては、低負荷のデバイス、書き込みの少ないデバイス、残り寿命に余裕のあるデバイスの論理容量を上げることができ、評価値Fを上げ、新規書き込みを増やすことができる。このように、デバイスの論理容量の増減が評価値Fに影響を与え、性能平準化及び寿命平準化を実現することができる。
本実施形態においては、新規書き込み時に評価値Fに基づいて書き込み先を選択することで、寿命平準化及び性能平準化を行うことができる。本実施形態では、例えば、書き込み量が多い場合に評価値を下げることで、基準値より過剰に書き込まれているデバイスに対する新規書き込みの割合を減らすことができる。これとは逆に、本実施形態では、書き込み量の少ないデバイスの評価値Fを上げ、新規書き込み先となる割合を増やし、ストレージ装置3の寿命平準化を行うことができる。同様に、本実施形態では、負荷が高いデバイスの評価値Fを下げ、新規書き込み先としないことで、負荷が高いデバイスに対する新規書き込みを減らし、反対に、負荷の少ないデバイスの評価値Fを上げ、新規書き込み先となる割合を増やすことで、デバイスの性能平準化を行うことができる。
[第2の実施形態]
本実施形態においては、上記第1の実施形態の変形例について説明する。本実施形態においては、例えば、アロケート書き込み先評価処理、再配置先評価処理、オーバープロビジョニングの設定評価処理などの各種の評価処理で用いられるパラメータを変更可能とする。本実施形態では、ホスト装置21〜23からの指示にしたがって、評価関数に含まれているストレージ装置3のパラメータを調整可能とする。これにより、書き込み量の抑制より性能負荷の削減を重視する設定とすること、又は、性能負荷の削減より書き込み量の抑制を重視する設定とすること、など、重視する指標を調整することで、ストレージ装置3をユーザのポリシーにそって最適化可能である。
本実施形態では、パラメータは、各種の評価処理で用いられる重みの場合を例として説明する。しかしながら、パラメータは、例えば、重みではない他の数値でもよく、例えば評価関数に含まれている定数などでもよい。
図32は、本実施形態に係るメモリ制御装置5を含むストレージ装置3の一例を示すブロック図である。
本実施形態において、プロセッサ52は、メモリ51に格納されている制御プログラムCPを実行し、ポリシー変更部19としての機能を実行する。メモリ51は、ポリシー情報テーブル20を格納する。
ポリシー変更部19は、ホスト装置21〜23のいずれかからホストインタフェース4経由で受信したポリシー設定コマンドにしたがって、ポリシー情報テーブル20を更新する。
ポリシー情報テーブル20は、各種の評価処理で用いられる重みとその値との組み合わせを管理する。
図33は、本実施形態に係るポリシー変更部19の処理の一例を示すフローチャートである。
ステップS3301において、ポリシー変更部19は、ホスト装置21〜23のいずれかからホストインタフェース4経由で、新規のポリシー設定として、重みW1〜W4のうちの少なくとも1つを受信する。
ステップS3302において、ポリシー変更部19は、新規のポリシー設定に基づいて、ポリシー情報テーブル20を更新する。
ステップS3303において、ポリシー変更部19は、ポリシー変更終了を示す応答を、ホストインタフェース4経由でホスト装置21〜23のいずれかへ送信する。
図34は、本実施形態に係るポリシー情報テーブル20の一例を示すデータ構造図である。
ポリシー情報テーブル20では、評価処理に用いられる係数として重みW1〜W4が管理されており、重みW1〜W4のそれぞれに対してユーザによって設定された値が関連付けられている。
以上説明した本実施形態においては、例えば、アロケート書き込み先評価処理、再配置先評価処理などの重みをユーザが自由にポリシーとして設定することができる。これにより、ユーザのニーズに応じて、性能、寿命、容量、追記量に基づいて行われる評価処理を最適化することができる。
例えば、性能を重視する場合には、性能値V1に関わる重みW1の値を増やすことで、アロケート書き込みの集中を防ぎ、性能平準化を行うことができる。例えば、アロケート書き込み先評価処理において、重みW1の値を増加すると、性能負荷が少ないデバイスは評価値Fが上がり、アロケート書き込み先となりやすくなる。したがって、性能負荷の少ないデバイスへのアロケート書き込みの割合を増加させ、性能平準化を達成することができる。
本実施形態の効果をより具体的に説明する。
上記第1の実施形態では、各種の評価処理で用いられる重みW1〜W4は、評価項目の間で同じ値であり、定数としている。この場合、例えば、新規に追加されたデバイスは、残り寿命が大きいため、評価処理で計算される評価値が高まり、アロケート書き込み先として選択されやすくなる。この結果、新規に追加されたデバイスは、アロケート書き込みが集中し、性能劣化が生じる可能性がある。
本実施形態では、例えば、デバイスが新規に追加された場合に、アロケート書き込み先評価処理の計算の性能値V1の重みW1を増やす。すると、重みW1の増加により、ストレージ装置3における性能が重視され、性能負荷の低いデバイスの評価値Fが上がり、アロケート書き込み先として選択されやすくなる。このように、重みW1を増加することにより、新規に追加されたデバイスに対するアロケート書き込みの集中を防ぐことができ、性能負荷の少ないデバイスに対するアロケート書き込みの割合を増加させることができ、デバイスD0〜DN-1の性能平準化を行うことができる。
例えば、ユーザは残り寿命を重視したい場合に、寿命値V2に関する重みW2を増やすことで、寿命の少ないデバイスへのアロケート書き込みを減らすことができる。
以上説明したように、重みW1〜W4の値を変えることで、ユーザのニーズに応じて、性能、寿命、容量、追記量の影響を最適化することができる。
[第3の実施形態]
本実施形態においては、上記第1及び第2の実施形態の変形例である。上記第1及び第2の実施形態では、各デバイスD0〜DN-1が例えばSSD単体の場合について説明している。これに対して、本実施形態においては、複数のデバイスD0〜DN-1のそれぞれが複数のRAID(Redundant Arrays of Inexpensive Disks)グループ(RAIDデバイス)である場合について説明する。本実施形態に係るメモリ制御装置5は、RAIDグループ上の記憶領域(物理領域)を、エクステント(物理エクステント)単位で管理する。ストレージ装置3は、ホスト装置21〜23に対して、複数のRAIDグループの記憶領域を、複数の論理ディスクLD0〜LDN-1として提供する。
上記第1及び第2の実施形態のストレージ装置3は、RAID0に相当する。冗長化の考慮されてないRAID0に代えて、本実施形態では、冗長化を考慮したRAID1〜RAID5に相当するストレージ装置3を説明する。
図35は、本実施形態に係るメモリ制御装置5を含むストレージ装置3の一例を示すブロック図である。
本実施形態において、プロセッサ52は、メモリ51に格納されている制御プログラムCPを実行し、RAID処理部24としての機能を実行する。メモリ51は、RAIDグループ情報テーブル25と、SSD固有情報テーブル26とを格納する。
本実施形態において、デバイスD0〜DN-1は、例えば、それぞれ、RAIDグループであり、複数のSSDを含む。
デバイスD0〜DN-1に備えられている複数のSSDに対しては、オーバープロビジョニングの設定の変更を運用後からでも可能である。
デバイスD0〜DN-1のRAIDレベルは、ストレージ装置3内ですべて同一とする。本実施形態は、各種のRAIDレベルに適用可能であるが、RAID1の場合を例に説明する。
本実施形態において、デバイスMD0〜MDN-1のそれぞれに備えられるSSDの個数は、異なってもよい。RAIDのストライプサイズは、例えば、256Kbyte又は512Kbyteでもよい。
本実施形態において、デバイスD0〜DN-1内のSSDは、同一のオーバープロビジョニングの設定を持つとする。RAID0又はRAID5などでは、SSDへの書き込みは、デバイスD0〜DN-1内のSSD間でほぼ均一である。このため、デバイスD0〜DN-1内の各SSDの残り書き込み量も、同程度と仮定する。また、ストレージ装置3は、デバイスD0〜DN-1に加えて、例えばホットスペア用のSSDなどのような、1以上の予備のメモリ装置27を備える。
上記第1及び第2の実施形態においては、個々のSSDがデバイスD0〜DN-1に相当し、個々のデバイスD0〜DN-1に対して読み出し処理、書き込み処理、寿命補正処理を実行している。これに対して、本実施形態においては、RAIDグループ単位の個々のデバイスD0〜DN-1を仮想デバイスとして同様の処理を行う。
RAID処理部24は、ストレージ装置3でRAIDを適用する場合に、RAIDグループ情報テーブル25及びSSD固有情報テーブル26に設定値を格納する。例えば、RAID処理部24は、RAIDグループ情報テーブル25及びSSD固有情報テーブル26の初期化を行い、また、RAIDグループ情報テーブル25及びSSD固有情報テーブル26への情報の登録及び更新を行う。
RAIDグループ情報テーブル25は、各デバイスD0〜DN-1に所属するSSDを管理する。
SSD固有情報テーブル26は、各デバイスD0〜DN-1に所属するSSDの個々の情報を管理する。
図36は、本実施形態に係るRAIDグループ情報テーブル25の一例を示すデータ構造図である。
RAIDグループ情報テーブル25は、デバイスID、RAIDレベル、所属SSD IDを互いに関連付けて格納する。RAIDグループ情報テーブル25には、ストレージ装置3内の全てのデバイスD0〜DN-1に対する情報がエントリされる。
デバイスIDは、上記のデバイス固有情報テーブル6におけるデバイスIDと同一である。
RAIDレベルは、ストレージ装置3におけるRAIDレベルを表す。このRAIDレベルは、ストレージ装置3で既に実行しているRAID設定を参照して設定されてもよい。
所属SSD IDは、デバイスD0〜DN-1内に含まれるSSDを示すIDである。
図37は、本実施形態に係るSSD固有情報テーブル26の一例を示すデータ構造図である。
SSD固有情報テーブル26には、ストレージ装置3内の全てのSSDの情報がエントリされている。
この図37では、SSDデバイスIDに対して、最大容量、論理容量、現在使用容量、残り書き込み量、保証書き込み量が関連付けられている。
図38は、本実施形態に係るRAID処理部24の処理の一例を示すフローチャートである。
RAID処理部24は、ストレージ装置3へ追加されたRAIDグループに関する各テーブルの初期化を行う。この図38において、各SSDとRAIDグループとの関連付けは終わっているとする。
ステップS3801において、RAID処理部24は、ストレージ装置3内の全てのSSDの設定が完了したか否か判断する。
ストレージ装置3内の全てのSSDの設定が完了した場合、処理はステップS3804に移動する。
ストレージ装置3内の全てのSSDの設定が完了していない場合、ステップS3802において、RAID処理部24は、未設定のSSDを選択する
ステップS3803において、RAID処理部24は、SSD固有情報テーブル26に対して、選択されたSSDに対応するレコードを生成する。その後、処理はステップS3801に移動する。
ステップS3804において、RAID処理部24は、ストレージ装置3内の全てのRAIDグループ、すなわちデバイスD0〜DN-1の設定が完了したか否か判断する。
ストレージ装置3内の全てのRAIDグループの設定が完了した場合、処理はステップS3807に移動する。
ストレージ装置3内の全てのRAIDグループの設定が完了していない場合、ステップS3805において、RAID処理部24は、未設定のRAIDグループを選択する。
ステップS3806において、RAID処理部24は、RAIDグループ情報テーブル25に対して、選択されたRAIDグループに対応するレコードを生成する。
RAIDグループ情報テーブル25のレコード生成において、各種のIDは、RAIDグループ情報テーブル25内で一意な情報とする。
RAIDレベルとしては、ストレージ装置3のRAID構成情報を参照して得られた設定が設定される。
所属SSDデバイスIDには、RAID構成情報に含まれるSSDデバイスIDが設定される。
選択されたRAIDグループに対応するレコードの生成後、処理はステップS3804に移動する。
ステップS3807において、RAID処理部24は、ストレージ装置3内の全てのRAIDグループに関するレコード追加処理が完了したか否か判断する。
ストレージ装置3内の全てのRAIDグループに関するレコード追加処理が完了した場合、処理は終了する。
ストレージ装置3内の全てのRAIDグループに関するレコード追加処理が完了していない場合、ステップS3808において、RAID処理部24は、レコード追加処理を未実行のRAIDグループを選択する。
ステップS3809において、RAID処理部24は、デバイス固有情報テーブル6に対して、選択されたRAIDグループに対応するレコード追加処理を実行する。
例えば、RAID処理部24は、デバイス固有情報テーブル6におけるデバイスIDとして、RAIDグループ情報テーブル25のデバイスIDを設定する。
例えば、RAID処理部24は、デバイス固有情報テーブル6における最大容量及び論理容量として、RAIDレベルによって異なる値を設定する。例えば、RAIDレベルがRAID1の場合、RAID処理部24は、RAIDグループに所属するSSDのうちのいずれかの値を設定する。例えば、RAIDレベルがRAID0の場合、RAID処理部24は、最大容量に対して、各SSDの最大容量の合計を設定する。論理容量も同様に、RAIDレベルに応じて、異なる値が設定される。
例えば、RAID処理部24は、デバイス固有情報テーブル6における保証書き込み量、性能仕様として、RAIDグループに所属するSSDのいずれかの値を設定する。
例えば、RAID処理部24は、デバイス固有情報テーブル6における現在使用容量、読み出し量、更新量、追記量、最大負荷をゼロで初期化する。
レコード追加処理の実行後、処理はステップS3807に移動する。
以上説明した本実施形態では、デバイスD0〜DN-1がRAIDグループとして機能する場合に、デバイスD0〜DN-1のそれぞれを、1つの仮想的なデバイスとして扱うことができ、上記第1及び第2の実施形態と同様の効果を得ることができる。すなわち、本実施形態においては、ストレージ装置3が備える複数台のディスクアレイの間で、性能平準化及び寿命平準化を実現することができる。
[第4の実施形態]
本実施形態においては、上記第1乃至第3の実施形態に係るストレージ装置3と、比較例のストレージ装置とを対比し、上記第1乃至第3の実施形態に係るストレージ装置3の有効性を説明する。
比較例のストレージ装置は、SSD内のフラッシュメモリの寿命劣化を防ぐため、書き込み寿命の異なる複数台のSSDを備え、データの書き込み先となるSSDを選択することにより、フラッシュメモリの寿命劣化を防ぐ。書き込み寿命とは、ベンダの保証するSSDの書き込み総量から現在までに書き込まれた量を引いた残りである。比較例のストレージ装置では、1ビットあたりの単価が高いが、書き込み寿命の長いSLC(Single Level Cell)を備えるSSDと、1ビットあたりの単価は低いが、書き込み寿命の短いMLC(Multi Level Cell)を備えるSSDとの間で、書き込み量の多いデータをSLCのSSDへ書き込み、書き込み量の少ないデータをMLCのSSDへ書き込む。この比較例のストレージ装置では、比較例のストレージ装置のワークロード、すなわち、比較例のストレージ装置に対する書き込み量とユーザの使用容量を予め想定し、ワークロードに対して適切な寿命と容量になるようにSLCのSSD及びMLCのSSDの台数を決定する。
ワークロードに対して比較例のストレージ装置の寿命と容量とを適切にするために、以下のような検討がなされる。
SLCのSSDの容量をSsとする。MLCのSSDの容量をSmとする。SLCのSSDの書き込み寿命をWsとする。MLCのSSDの書き込み寿命をWmとする。SLCのSSDの個数をPsとする。MLCのSSDの個数をPmとする。
比較例のストレージ装置で想定される使用可能な最大容量をSt、想定される書き込み総量をWtとする。
比較例のストレージ装置は、以下の(1)式、(2)式を、使用期間中、常に満たすことが望まれる。
Sm×Pm+Ss×Ps>St … (1)
Wm×Pm+Ws×Ps>Wt … (2)
(1)式が成り立たない場合は容量が不足していることを示す。(2)が成り立たない場合は書き込み寿命が不足していることを示す。
比較例のストレージ装置は、上記(1)式及び(2)式を満たしつつ、当該比較例のストレージ装置内のSSDのコスト合計が最小に成るように、StとWtとを事前に想定し、SLCのSSDの個数PsとMLCのSSDの個数Pmとを決定する。
しかしながら、比較例のストレージ装置では、当該比較例のストレージ装置に対するワークロードを運用する前から正確に把握することは困難である。また、運用後に、ワークロードは刻々と変化する。よって、想定しているワークロードに最適と思われる構成をしても、比較例のストレージ装置の運用後に、現在の書き込み量が想定した書き込み量から変化し、寿命劣化又は寿命過剰となる場合がある。より具体的には、実際のワークロードに対して、比較例のストレージ装置内にSSDを必要以上に備えた場合、(2)式のWtが想定より非常に小さく、書き込み寿命に達する前の運用終了自体は問題ないが、過剰にSSDを用意したことになり、コストが高くなる場合がる。また、実際のワークロードに対して、比較例のストレージ装置内のSSDの数が不足した場合、(2)式のWtが想定より大きくなり、ベンダの保証する期間より前に書き込み寿命が尽きてしまい、運用途中でのSSDの交換が必要となる場合がある。
また、比較例のストレージ装置においては、容量について、(1)式で想定した場合よりもStが大きくなり、容量不足になる場合がある。また、比較例のストレージ装置においては、容量について、(1)式で想定した場合よりもStが小さくなり、容量過剰となる場合がある。
これに対して、上記第1乃至第3の実施形態に係るストレージ装置3は、オーバープロビジョニングの設定を運用後に変更可能なデバイスD0〜DN-1を用いて、ワークロードに応じて、寿命、容量を最適化する。オーバープロビジョニングの効果として、書き込み不能な領域を変化させることで、デバイスD0〜DN-1の書き込み寿命を変化(増減)させることが可能である。上記第1乃至第3の実施形態では、オーバープロビジョニングの設定を運用後でも変更することが可能なデバイスD0〜DN-1を用い、オーバープロビジョニングで論理容量を適切に設定する。このため、実際のワークロードの変化に応じて、デバイスD0〜DN-1の書き込み量を適切化することができる。
上記第1乃至第3の実施形態に係るストレージ装置3では、ストレージ装置3の運用中のワークロードの変化にそってオーバープロビジョニングの設定及びデータの配置が実行されるため、ワークロードに対してデバイスD0〜DN-1の寿命、容量を適切に設定することができる。
上記第1乃至第3の実施形態に係るストレージ装置3は、運用中に、デバイスD0〜DN-1のうちのいずれかの故障、寿命、使用する容量の増加等の理由により、新しくデバイスを増設、交換してもよい。この場合であっても、上記第1乃至第3の実施形態に係るストレージ装置3では、ストレージ装置3内の各デバイスの書き込み寿命は、デバイス間で不均衡にならない。上記第1乃至第3の実施形態に係るストレージ装置3では、書き込み寿命に達しそうなデバイスに対する書き込みを削減し、書き込み寿命が十分あるデバイスに優先的に書き込みを行うことで、書き込み寿命に達しそうなデバイスの寿命低下を抑えることができる。その結果、デバイスの書き込み寿命が尽きることを防止することができる。
上記第1乃至第3の実施形態によれば、論理ディスクを固定サイズの領域に分割し、所定サイズの領域単位で書き込み量を計測する。ストレージ装置3は、書き込み量及びデバイスD0〜DN-1の性能値V1、寿命値V2、容量値V3、追記値V4に基づいて評価値Fを計算し、まだデータの書き込まれていない所定サイズの領域に対するデータの書き込み時に、評価値Fに基づいて書き込み先デバイスを選択する。また、ストレージ装置3は、評価値Fに基づいてデバイスD0〜DN-1に対する各所定サイズの領域の再配置と、デバイスD0〜DN-1のオーバープロビジョニングの設定を行う。これにより、上記第1乃至第3の実施形態においては、ワークロードが変化した場合でも、ワークロードに応じて、デバイスD0〜DN-1の寿命、負荷、性能、容量を平準化することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる