(57)【特許請求の範囲】
【請求項１】
複数の不揮発性メモリを所定サイズで区分けした複数の領域のそれぞれに対する書き込み量を管理する第１のデータと、前記複数の不揮発性メモリに対応する書き込み状態を管理する第２のデータとを格納するメモリと、
前記複数の不揮発性メモリに対する書き込み対象データの書き込みにおいて、前記メモリに格納されている前記第１のデータと前記第２のデータとに基づいて、前記複数の不揮発性メモリのそれぞれに対する第１の評価値を計算し、前記第１の評価値に基づいて、前記書き込み対象データの書き込み先の不揮発性メモリを選択する補正手段と、
前記補正手段によって選択された前記不揮発性メモリに対して、前記書き込み対象データを書き込み、前記メモリに格納されている前記第１のデータと前記第２のデータとを更新する書き込み手段と、
前記複数の不揮発性メモリの使用開始後に、前記メモリに格納されている前記第２のデータに基づいて、前記複数の不揮発性メモリのそれぞれに対する第２の評価値を計算し、前記第２の評価値に基づいて、前記複数の不揮発性メモリのうちの少なくとも１つに対して使用可能容量の設定を変更する設定変更手段と、
を具備するメモリ制御装置。
【請求項２】
前記補正手段は、さらに、前記複数の不揮発性メモリに書き込まれている再配置対象データを前記複数の不揮発性メモリに再配置する場合に、前記第１のデータと前記第２のデータとに基づいて、前記複数の不揮発性メモリのそれぞれに対する第３の評価値を計算し、前記第３の評価値に基づいて、前記再配置対象データの再配置先の不揮発性メモリを選択し、前記再配置先の不揮発性メモリに対して前記再配置対象データを書き込み、前記メモリに格納されている前記第１のデータと前記第２のデータとを更新する、
ことを特徴とする請求項１に記載のメモリ制御装置。
【請求項３】
前記第１のデータは、前記複数の領域に対する第１の統計情報を含み、
前記第２のデータは、前記複数の不揮発性メモリに対する第２の統計情報を含み、
前記補正手段は、
前記複数の不揮発性メモリのそれぞれに対する性能評価値と寿命評価値とのうちの少なくとも１つが、前記複数の不揮発性メモリ間で平準化されるように、前記書き込み先の不揮発性メモリを選択し、及び、前記複数の不揮発性メモリのうちの少なくとも１つに対して前記使用可能容量の設定を変更する、
ことを特徴とする請求項１又は請求項２に記載のメモリ制御装置。
【請求項４】
前記補正手段によって実行される計算に用いられるパラメータの値を変更する変更手段をさらに具備する、
ことを特徴とする請求項１乃至請求項３のいずれか１項に記載のメモリ制御装置。
【請求項５】
使用開始後に使用可能容量の設定を変更可能な複数の不揮発性メモリ装置と、
前記複数の不揮発性メモリ装置の記憶領域を所定サイズで区分けした複数の領域のそれぞれに対する書き込み量を管理する第１のデータと、前記複数の不揮発性メモリ装置に対応する書き込み状態を管理する第２のデータとを格納するメモリと、
前記複数の不揮発性メモリ装置に対する書き込み対象データの書き込みにおいて、前記メモリに格納されている前記第１のデータと前記第２のデータとに基づいて、前記複数の不揮発性メモリ装置のそれぞれに対する第１の評価値を計算し、前記第１の評価値に基づいて、前記書き込み対象データの書き込み先の不揮発性メモリ装置を選択する補正手段と、
前記補正手段によって選択された前記不揮発性メモリ装置に対して、前記書き込み対象データを書き込み、前記メモリに格納されている前記第１のデータと前記第２のデータとを更新する書き込み手段と、
前記複数の不揮発性メモリ装置の使用開始後に、前記メモリに格納されている前記第２のデータに基づいて、前記複数の不揮発性メモリ装置のそれぞれに対する第２の評価値を計算し、前記第２の評価値に基づいて、前記複数の不揮発性メモリ装置のうちの少なくとも１つに対して前記使用可能容量の設定を変更する設定変更手段と、
を具備するストレージ装置。
【請求項６】
前記複数の不揮発性メモリ装置は、複数のディスクアレイであり、
前記複数のディスクアレイのそれぞれは、複数のソリッド・ステート・ドライブを含む、
ことを特徴とする請求項５に記載のストレージ装置。
【請求項７】
使用開始後に使用可能容量の設定を変更可能な複数の不揮発性メモリ装置を含むストレージ装置を、
前記複数の不揮発性メモリ装置の記憶領域を所定サイズで区分けした複数の領域のそれぞれに対する書き込み量を管理する第１のデータと、前記複数の不揮発性メモリ装置に対応する書き込み状態を管理する第２のデータとを、メモリに格納する手段、
前記複数の不揮発性メモリ装置に対する書き込み対象データの書き込みにおいて、前記メモリに格納されている前記第１のデータと前記第２のデータとに基づいて、前記複数の不揮発性メモリ装置のそれぞれに対する第１の評価値を計算し、前記第１の評価値に基づいて、前記書き込み対象データの書き込み先の不揮発性メモリ装置を選択する補正手段、
前記補正手段によって選択された前記不揮発性メモリ装置に対して、前記書き込み対象データを書き込み、前記メモリに格納されている前記第１のデータと前記第２のデータとを更新する書き込み手段、
前記複数の不揮発性メモリ装置の使用開始後に、前記メモリに格納されている前記第２のデータに基づいて、前記複数の不揮発性メモリ装置のそれぞれに対する第２の評価値を計算し、前記第２の評価値に基づいて、前記複数の不揮発性メモリ装置のうちの少なくとも１つに対して前記使用可能容量の設定を変更する設定変更手段、
として機能させるための制御プログラム。
【請求項８】
使用開始後に使用可能容量の設定を変更可能な複数の不揮発性メモリ装置を含むストレージ装置を制御する制御方法であって、
前記複数の不揮発性メモリ装置の記憶領域を所定サイズで区分けした複数の領域のそれぞれに対する書き込み量を管理する第１のデータと、前記複数の不揮発性メモリ装置に対応する書き込み状態を管理する第２のデータとを、メモリに格納することと、
前記複数の不揮発性メモリ装置に対する書き込み対象データの書き込みにおいて、前記メモリに格納されている前記第１のデータと前記第２のデータとに基づいて、前記複数の不揮発性メモリ装置のそれぞれに対する第１の評価値を計算し、前記第１の評価値に基づいて、前記書き込み対象データの書き込み先の不揮発性メモリ装置を選択することと、
選択された前記不揮発性メモリ装置に対して、前記書き込み対象データを書き込み、前記メモリに格納されている前記第１のデータと前記第２のデータとを更新することと、
前記複数の不揮発性メモリ装置の使用開始後に、前記メモリに格納されている前記第２のデータに基づいて、前記複数の不揮発性メモリ装置のそれぞれに対する第２の評価値を計算し、前記第２の評価値に基づいて、前記複数の不揮発性メモリ装置のうちの少なくとも１つに対して前記使用可能容量の設定を変更することと、
を具備する制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリ制御装置、ストレージ装置、ストレージ装置の制御プログラム、及び、ストレージ装置の制御方法に関する。
【背景技術】
【０００２】
フラッシュメモリの寿命を長期化する技術の一例として、オーバープロビジョニングがある。オーバープロビジョニングとは、例えばＳＳＤ（ソリッド・ステート・ドライブ）の論理容量を制限し、ＳＳＤの物理容量の特定領域を書き込み不能な領域として確保することで、データの書き込み可能な量を増加させる技術である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−０６１８４７号公報
【特許文献２】特開２０１１−１８６５６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、ストレージ装置の寿命を長期化することを目的とする。
【課題を解決するための手段】
【０００５】
本実施形態によれば、メモリ制御装置は、メモリと、補正手段と、書き込み手段と、設定変更手段とを含む。メモリは、複数の不揮発性メモリを所定サイズで区分けした複数の領域のそれぞれに対する書き込み量を管理する第１のデータと、複数の不揮発性メモリに対応する書き込み状態を管理する第２のデータとを格納する。補正手段は、複数の不揮発性メモリに対する書き込み対象データの書き込みにおいて、メモリに格納されている第１のデータと第２のデータとに基づいて、複数の不揮発性メモリのそれぞれに対する第１の評価値を計算し、第１の評価値に基づいて、書き込み対象データの書き込み先の不揮発性メモリを選択する。書き込み手段は、補正手段によって選択された不揮発性メモリに対して、書き込み対象データを書き込み、メモリに格納されている第１のデータと第２のデータとを更新する。設定変更手段は、複数の不揮発性メモリの使用開始後に、メモリに格納されている第２のデータに基づいて、複数の不揮発性メモリのそれぞれに対する第２の評価値を計算し、第２の評価値に基づいて、複数の不揮発性メモリのうちの少なくとも１つに対して使用可能容量の設定を変更する。 
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るメモリ制御装置を含むストレージ装置の一例を示すブロック図。
【図２】第１の実施形態に係るストレージ装置のディスク構造の一例を示す概念図。
【図３】第１の実施形態に係るデバイス固有情報テーブルの一例を示すデータ構造図。
【図４】第１の実施形態に係る論理ディスク情報テーブルの一例を示すデータ構造図。
【図５】第１の実施形態に係る論理エクステント情報テーブルの一例を示すデータ構造図。
【図６】第１の実施形態に係る物理エクステント情報テーブルの一例を示すデータ構造図。
【図７】第１の実施形態に係るデバイス構成部の処理の一例を示すフローチャート。
【図８】第１の実施形態に係るデバイス構成部のレコード追加処理の一例を示すフローチャート。
【図９】第１の実施形態に係る論理ディスク構成部の処理の一例を示すフローチャート。
【図１０】第１の実施形態に係る論理ディスク構成部によって実行される論理ディスクに関するレコード追加処理の一例を示すフローチャート。
【図１１】第１の実施形態に係る読み出し部の処理の一例を示すフローチャート。
【図１２】第１の実施形態に係るアドレス範囲抽出部の処理の一例を示すフローチャート。
【図１３】第１の実施形態に係る書き込み部の処理の一例を示すフローチャート。
【図１４】第１の実施形態に係る寿命補正部のアロケート書き込み先選択処理の一例を示すフローチャート。
【図１５】第１の実施形態に係る寿命補正部のアロケート書き込み先評価処理の一例を示すフローチャート。
【図１６】デバイス固有情報テーブルの一例を示すデータ構造図。
【図１７】論理エクステント情報テーブルの一例を示すデータ構造図。
【図１８】物理エクステント情報テーブルの一例を示すデータ構造図。
【図１９】デバイスと評価値との関係の一例を示す図。
【図２０】更新後の論理エクステント情報テーブルの一例を示すデータ構造図。
【図２１】第１の実施形態に係る寿命補正部の寿命補正処理の一例を示すフローチャート。
【図２２】第１の実施形態に係る寿命補正部の寿命補正処理の変形例を示すフローチャート。
【図２３】デバイスＩＤごとの累積書き込み量を例示する図。
【図２４】デバイスＩＤごとの評価値を例示する図。
【図２５】再配置後の論理エクステント情報テーブルの一例を示すデータ構造図。
【図２６】再配置後のデバイス固有情報テーブルの一例を示すデータ構造図。
【図２７】オーバープロビジョニングの設定評価処理によって得られる評価結果の例を示す図。
【図２８】第１の実施形態に係る寿命補正部の再配置処理の一例を示すフローチャート。
【図２９】第１の実施形態に係る寿命補正部の再配置先評価処理の一例を示すフローチャート。
【図３０】第１の実施形態に係る設定変更部によって実行されるオーバープロビジョニングの設定変更処理の一例を示すフローチャート。
【図３１】第１の実施形態に係る設定変更部によって実行されるオーバープロビジョニングの設定評価処理の一例を示すフローチャート。
【図３２】第２の実施形態に係るメモリ制御装置を含むストレージ装置の一例を示すブロック図。
【図３３】第２の実施形態に係るポリシー変更部の処理の一例を示すフローチャート。
【図３４】第２の実施形態に係るポリシー情報テーブルの一例を示すデータ構造図。
【図３５】第３の実施形態に係るメモリ制御装置を含むストレージ装置の一例を示すブロック図。
【図３６】第３の実施形態に係るＲＡＩＤグループ情報テーブルの一例を示すデータ構造図。
【図３７】第３の実施形態に係るＳＳＤ固有情報テーブルの一例を示すデータ構造図。
【図３８】第３の実施形態に係るＲＡＩＤ処理部の処理の一例を示すフローチャート。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら本実施形態について説明する。なお、以下の各図において同一又はほぼ同一の要素には同一の符号を付して説明を省略するか又は簡単に説明し、異なる部分についてのみ詳しく説明する。
【０００８】
［第１の実施形態］
本実施形態においては、オーバープロビジョニングの設定を変更することにより、メモリの寿命を長期化するメモリ制御装置について説明する。
【０００９】
以下、識別情報はＩＤと表記する。
【００１０】
本実施形態において、メモリ装置は、デバイスという。
【００１１】
本実施形態において、ストレージ装置に含まれる複数のデバイス間の寿命、性能、負荷、容量の不均衡を低減することは、寿命、性能、負荷、容量の平準化という。
【００１２】
本実施形態において、デバイスは、デバイス起動後に、オーバープロビジョニングの設定を変更可能である。オーバープロビジョニングの設定変更によってデバイスの寿命を長期化する処理を、寿命補正処理という。
【００１３】
本実施形態において、アクセスとは、データ読み出し又はデータ書き込みの双方を含むとする。
【００１４】
本実施形態において、デバイスと当該デバイスのＩＤとは、同じ符号で表記する。エクステントと当該エクステントのＩＤとは、同じ符号で表記する。
【００１５】
図１は、本実施形態に係るメモリ制御装置を含むストレージ装置の一例を示すブロック図である。
【００１６】
ストレージシステム１は、ホスト装置２１〜２３と、ストレージ装置３とを含む。図１の例では、ストレージ装置３が３台のホスト装置２１〜２３と通信可能な場合を例示している。しかしながら、ストレージ装置３は、１台、２台、又は、４台以上のホスト装置と通信可能でもよい。
【００１７】
ホスト装置２１〜２３は、書き込みコマンドと書き込み先アドレスと書き込みデータをストレージ装置３へ送信する。また、ホスト装置２１〜２３は、読み出しコマンドと読み出し先アドレスとをストレージ装置３へ送信し、ストレージ装置３から読み出しデータを受信する。
【００１８】
ストレージ装置３は、ホストインタフェース部４、メモリ制御装置５、デバイスＤ0〜ＤN-1を含む。図１の例ではデバイスがＮ台（Ｎは自然数）の場合を例示しているが、デバイスは１台以上でよい。本実施形態では、デバイスＤ0〜ＤN-1のうちのそれぞれをデバイスＤiと表記する。ｉは、０，１，…，Ｎ−１である。
【００１９】
例えば、ホストインタフェース部４、メモリ制御装置５、デバイスＤ0〜ＤN-1は、互いにデータ、アドレス、コマンド、情報、信号、指示などを送受信可能である。
【００２０】
ホストインタフェース部４は、ホスト装置２１〜２３からのアクセスを受け付ける。
【００２１】
メモリ制御装置５は、メモリ５１、プロセッサ５２を含む。
【００２２】
メモリ５１は、例えば、主記憶装置として機能してもよい。メモリ５１は、バッファメモリを含むとしてもよく、キャッシュメモリを含むとしてもよく、不揮発性メモリを含むとしてもよい。メモリ５１としては、例えば、ＤＲＡＭ（Dynamic Random Access Memory）が用いられる。
【００２３】
メモリ５１は、例えば、制御プログラムＣＰと各種データを格納する。制御プログラムＣＰは、例えば、オペレーティングシステム、アプリケーションプログラム、ファームウェアなどでもよい。例えば、メモリ５１は、各種のデータとして、デバイス固有情報テーブル６、論理ディスク情報テーブル７、論理エクステント情報テーブル８、物理エクステント情報テーブル９を格納する。
【００２４】
プロセッサ５２は、メモリ５１をアクセスし、各種処理を実行し、デバイスＤ0〜ＤN-1に対するアクセス制御を実行し、オーバープロビジョニングの設定変更を行う。
【００２５】
プロセッサ５２は、例えば、メモリ５１に格納されている制御プログラムＣＰを実行し、これによりデバイス構成部１０、論理ディスク構成部１１、読み出し部１２、書き込み部１３、アドレス範囲抽出部１４、寿命補正部１５、オーバープロビジョニングの設定変更部１６として機能する。
【００２６】
デバイスＤ0〜ＤN-1は、それぞれ、コントローラ１７と１以上の不揮発性メモリ１８とを含む。
【００２７】
コントローラ１７は、プロセッサ５２からのコマンドにしたがって、不揮発性メモリ１８にデータを書き込み、又は、不揮発性メモリ１８からデータを読み出す。
【００２８】
本実施形態では、不揮発性メモリ１８がＮＡＮＤ型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリ１８は、例えば、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase change Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、又は、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などＮＡＮＤ型フラッシュメモリではない他の種別のメモリを含むとしてもよい。また、不揮発性メモリ１８は、３次元構造のフラッシュメモリを含むとしてもよい。
【００２９】
デバイスＤ0〜ＤN-1は、オーバープロビジョニングの設定の変更を当該デバイスＤ0〜ＤN-1の運用後であっても可能である。本実施形態において、デバイスＤ0〜ＤN-1は、例えば、半導体記憶装置であり、より具体的には、例えばＳＳＤであるとする。しかしながら、デバイスは、例えば、ＳＳＤとＨＤＤとを組み合わせたハイブリッド型のデバイスでもよい。
【００３０】
デバイスＤ0〜ＤN-2は、データ格納のための装置である。デバイスＤN-1は、ホットスペアのための予備的な装置である。
【００３１】
デバイス構成部１０、論理ディスク構成部１１、読み出し部１２、書き込み部１３、アドレス範囲抽出部１４、寿命補正部１５、設定変更部１６の具体的な説明は後述する。
【００３２】
図２は、本実施形態に係るストレージ装置３のディスク構造の一例を示す概念図である。
【００３３】
ストレージ装置３は、ホスト装置２１〜２３に対して、ストレージ装置３内のデバイスＤ0〜ＤN-1の記憶領域を、複数の論理ディスクＬＤ0〜ＬＤN-1として提供する。この図２では、Ｎ個の論理ディスクが用いられる場合を例として説明するが、論理ディスクの数は、１以上で変更可能である。各論理ディスクＬＤ0〜ＬＤN-1には、識別用の論理ディスクＩＤが割り当てられている。各論理ディスクＬＤ0〜ＬＤN-1はセクタに分割され、各セクタには論理ブロックアドレス(論理アドレス)が割り当てられる。ホスト装置２１〜２３は論理アドレスを用いて各論理ディスクＬＤ0〜ＬＤN-1内のセクタにアクセスする。
【００３４】
論理アドレスは、ストレージ装置３に備えられているデバイスＤ0〜ＤN-1のデータが格納されている各セクタの番号(物理アドレス)に一対一に対応している。物理アドレス及び論理アドレス１つに対応するセクタのサイズは一定であり、例えば５１２Byteでもよい。
【００３５】
論理ディスクＬＤ0〜ＬＤN-1内の記憶領域は、固定長の論理エクステントと呼ぶ単位で管理する。論理エクステントのサイズ(エクステントサイズ)はストレージ装置３内で一定であり、例えば８MByteとしてもよい。論理エクステントは、寿命補正処理における処理単位として扱われる。
【００３６】
上記の図２では、論理ディスクＬＤ0〜ＬＤN-1のそれぞれが、論理エクステントｌｅ１〜ｌｅ９を含む。デバイスＤ0〜ＤN-1のそれぞれが、物理エクステントｐｅ１〜ｐｅ９を含む。
【００３７】
論理ディスクＬＤ0の論理エクステントｌｅ１は、デバイスＤ0の物理エクステントｐｅ２に対応している。論理ディスクＬＤ0の論理エクステントｌｅ２は、デバイスＤ0の物理エクステントｐｅ９に対応している。論理ディスクＬＤ0の論理エクステントｌｅ３は、デバイスＤN-1の物理エクステントｐｅ３に対応している。論理ディスクＬＤ0の論理エクステントｌｅ９はどの物理エクステントとも対応していない。
【００３８】
ストレージ装置３において、論理エクステントと物理エクステントは一対一で対応しており、論理エクステント内の論理アドレスそれぞれも、論理エクステントと対応する物理エクステント内の物理アドレスと一対一に対応している。
【００３９】
ここで、ストレージ装置３のデータ読み出し、データ書き込みの概要を述べる。まず、ホスト装置２１〜２３は、論理ディスクＩＤ及び論理アドレスをストレージ装置３に送信する。次に、ストレージ装置３は、論理ディスクＩＤ及び論理アドレスを、デバイスＤ0〜ＤN-1の物理アドレスに変換し、物理アドレスに該当するデータを読み出し、又は、物理アドレスに対応する記憶領域へデータを書き込む。そして、ストレージ装置３は、応答をホスト装置２１〜２３に送信し、処理を終了する。アドレスの変換は、後述する論理エクステント情報テーブル８を参照して行われる。
【００４０】
本実施形態においては、ストレージ装置３内の各デバイスＤ0〜ＤN-1に対して、ワークロードに適切なオーバープロビジョニング設定を行うための処理を説明する。
【００４１】
以下で、上記図１で例示されているストレージ装置３の機能について詳しく説明する。
【００４２】
デバイス構成部１０は、ストレージ装置３にデバイスが追加又は交換される場合の設定を行う。デバイス構成部１０は、例えば、デバイスに関するレコード追加処理を行う。
【００４３】
論理ディスク構成部１１は、論理ディスクが追加される場合の設定を行う。論理ディスク構成部１１は、例えば、論理ディスクに関するレコード追加処理を行う。
【００４４】
読み出し部１２は、対象アドレス抽出処理、読み出し処理、テーブル更新処理を行う。
【００４５】
書き込み部１３は、対象アドレス抽出処理、書き込み処理、テーブル更新処理を行う。
【００４６】
アドレス範囲抽出部１４は、読み出し、書き込みの対象を抽出する。
【００４７】
寿命補正部１５は、デバイスＤ0〜ＤN-1の寿命補正処理、再配置先選択処理、再配置処理、再配置先評価処理、アロケート書き込み先選択処理、アロケート書き込み先評価処理を行う。
【００４８】
設定変更部１６は、オーバープロビジョニングの設定変更処理、設定評価処理を行う。
【００４９】
デバイス固有情報テーブル６は、ストレージ装置３のデバイスＤ0〜ＤN-1の論理容量等を管理する。
【００５０】
論理ディスク情報テーブル７は、論理ディスクＬＤ0〜ＬＤN-1の論理容量等を管理する。
【００５１】
論理エクステント情報テーブル８は、論理エクステントのアドレス情報と物理エクステントとの対応関係を管理する。
【００５２】
物理エクステント情報テーブル９は、物理エクステントの情報を管理する。
【００５３】
本実施形態の各図において、MbyteはMBと表記する。
【００５４】
図３は、本実施形態に係るデバイス固有情報テーブル６の一例を示すデータ構造図である。
【００５５】
デバイス固有情報テーブル６は、デバイスＤiの使用容量、書き込み量を管理するための情報である。図３の１エントリは、１つのデバイスに対応している。デバイス固有情報テーブル６には、ストレージ装置３内のホットスペア用のデバイスを含むすべてのデバイスＤiの情報がエントリされている。
【００５６】
デバイス固有情報テーブル６の各エントリは、各デバイスＤiのデバイスＩＤ、最大容量、論理容量、現在使用容量、残り書き込み量、保証書き込み量、読み出し量、更新量、追記量、性能仕様、最大負荷を含む。
【００５７】
デバイスＩＤは、デバイスＤiを一意に特定するためのＩＤであり、例えば、対応するデバイスのＳＣＳＩ（Small Computer System Interface） ＩＤを用いてもよい。
【００５８】
最大容量は、ホスト装置２１〜２３が使用できる容量の最大値を表す。
【００５９】
論理容量は、ホスト装置２１〜２３の使用可能な容量であり、最大容量とは異なる。
【００６０】
現在使用容量は、論理容量のうち、実際にホスト装置２１〜２３が使用している分の容量である。
【００６１】
残り書き込み量は、デバイスＤiのベンダが保証する総書み込み量から、デバイスＤiの使用開始からの書み込み量の合計を引いた値である。メモリ制御装置５は、残り書き込み量の値に基づいて、デバイスＤiに対して適切なオーバープロビジョニングの設定を行う。
【００６２】
保証書き込み量は、ベンダが保証する、単位時間あたりの書き込み量である。この保証書き込み量にそったペース以内で書き込みが実行されれば、ベンダの保証期間を過ぎるまでデバイスＤiは寿命に達しないことが保証される。本実施形態において、例えば、単位時間は一日としてもよい。
【００６３】
読み出し量は、デバイスＤiに対する単位時間あたりの読み出されたデータ量の累計値である。
【００６４】
更新量は、デバイスＤiに対する単位時間あたりに更新されたデータ量の累計値である。
【００６５】
追記量は、デバイスＤiに対する単位時間あたりのアロケート書き込みされたデータ量の累計値である。
【００６６】
アロケート書き込みとは、物理エクステントの割り当ての行われていない論理エクステントへの書き込みを指す。
【００６７】
性能仕様は、デバイスＤiの最大性能の仕様である。性能指数としては、ＩＯＰＳ（Input/Output Per Second）、応答時間(単位:millisecond)、スループット(単位:MB/sec)などが用いられてもよい。本実施形態では性能指数の一例としてＩＯＰＳを使用する。
【００６８】
最大負荷は、デバイスＤiに対する単位時間中に記録された性能指数の最大値である。換言すれば、最大負荷は、単位時間中に記録されるデバイスＤiの最大性能を表す。
【００６９】
本実施形態におけるオーバープロビジョニングの設定では、論理容量を、最大容量以下の値で、デバイスＤiに対して設定することができる。
【００７０】
デバイス構成部１１は、新しいデバイスが追加される場合に、デバイス固有情報テーブル６における各属性の初期化を行う。
【００７１】
ここで、デバイス構成部１１によるデバイス固有情報テーブル６における各属性の初期化及び更新について説明する。デバイス固有情報テーブル６の更新は、デバイスＤiの種類により適宜変更される。
【００７２】
デバイス構成部１１は、デバイス固有情報テーブル６に、デバイスＩＤ、最大容量、保証書き込み量、性能仕様として、固定値を設定する。
【００７３】
デバイス構成部１１は、論理容量と書き込み量上限を初期化し、寿命補正部１５は、論理容量を更新する。
【００７４】
デバイス構成部１１は、現在使用容量、残り書き込み量、更新量、追記量を初期化し、書き込み部１３は、現在使用容量、残り書き込み量、更新量、追記量を更新する。デバイス構成部１１は、単位時間が経過すると、更新量、追記量をリセットする。
【００７５】
デバイス構成部１１は、読み出し量を初期化し、読み出し部１２は、読み出し量を更新する。デバイス構成部１１は、単位時間が経過すると、読み出し量をリセットする。
【００７６】
デバイス構成部１１は、最大負荷を、単位時間中に記録し続ける。デバイス構成部１１は、単位時間が経過すると、最大負荷をリセットする。
【００７７】
図４は、本実施形態に係る論理ディスク情報テーブル７の一例を示すデータ構造図である。
【００７８】
論理ディスク情報テーブル７は、論理ディスクＬＤ0〜ＬＤN-1の論理容量を管理するための情報である。図４の１エントリは、１つの論理ディスクに対応している。論理ディスク情報テーブル７には、ストレージ装置３内のすべての論理ディスクＬＤ0〜ＬＤN-1の情報がエントリされている。
【００７９】
論理ディスク情報テーブル７の各エントリは、論理ディスクＩＤと論理容量とを含む。
【００８０】
論理ディスクＩＤは、論理ディスクを一意に特定するためのＩＤである。
【００８１】
論理容量は、論理ディスクに設定されている論理容量を表す。
【００８２】
論理ディスク構成部１１は、論理ディスク情報テーブル７の初期化と更新を行う。
【００８３】
図５は、本実施形態に係る論理エクステント情報テーブル８の一例を示すデータ構造図である。
【００８４】
論理エクステント情報テーブル８は、論理エクステントを格納する位置を示すアドレス情報と、論理エクステントＩＤと、物理エクステントＩＤとの対応関係を管理するための情報である。図５の１エントリは、１つの論理エクステントに対応している。論理エクステント情報テーブル８の各エントリは、各論理エクステントの論理エクステントＩＤ、論理ディスクＩＤ、先頭論理アドレス、所属デバイスＩＤ、物理エクステントＩＤ、読み出し量、書き込み量を含む。論理エクステント情報テーブル８には、ストレージ装置３内の全ての論理エクステントがエントリされている。
【００８５】
論理エクステントＩＤは、論理ディスク内で論理エクステントを一意に特定するための識別情報である。
【００８６】
論理ディスクＩＤは、論理エクステントを含む論理ディスクを特定するためのＩＤである。
【００８７】
先頭論理アドレスは、論理ディスク内で論理エクステントを管理する論理アドレス領域の先頭の論理アドレスである。
【００８８】
所属デバイスＩＤは、論理エクステントと対応する物理エクステントを含むデバイスを特定するためのＩＤである。
【００８９】
物理エクステントＩＤは、論理エクステントと対応する物理エクステントを特定するためのＩＤである。
【００９０】
読み出し量は、論理エクステントに対する単位時間あたりの読み出されたデータ量の累計値である。
【００９１】
書き込み量は、論理エクステントに対する単位時間あたりの更新されたデータ量の累計値である。
【００９２】
デバイス構成部１０は、論理エクステントＩＤ、論理ディスクＩＤ、先頭論理アドレスを初期化し、更新は行わない。
【００９３】
書き込み部１３は、各論理エクステントの所属デバイスＩＤと物理エクステントＩＤとの組を初期化する。寿命補正部１５は、再配置処理に基づいて、各論理エクステントに対応する所属デバイスＩＤと物理エクステントＩＤとの組を更新する。
【００９４】
論理ディスク構成部１１は、読み出し量、書き込み量を初期化し、それぞれゼロとする。読み出し部１２は、読み出し量を更新する。論理ディスク構成部１１は、単位時間が経過すると、読み出し量をリセットする。書き込み部１３は、書き込み量を更新する。論理ディスク構成部１１は、単位時間が経過すると、書き込み量をリセットする。
【００９５】
図６は、本実施形態に係る物理エクステント情報テーブル９の一例を示すデータ構造図である。
【００９６】
物理エクステント情報テーブル９は、物理エクステントの情報を管理するための情報である。図６の１エントリは、１つの物理エクステントに対応している。物理エクステント情報テーブル９の各エントリは、各物理エクステントの物理エクステントＩＤ、所属デバイスＩＤ、先頭物理アドレス、空き情報を含む。物理エクステント情報テーブル９には、ストレージ装置３内のすべての物理エクステントがエントリされている。物理エクステントは、ストレージ装置３に備えられるデバイスＤ0〜ＤN-1が提供する全記憶領域に対して定義される。
【００９７】
物理エクステントＩＤは、物理エクステントをデバイスＭＤ0〜ＭＤN-1内で一意に特定するためのＩＤである。
【００９８】
所属デバイスＩＤは、物理エクステントを含むデバイスを特定するためのＩＤである。
【００９９】
先頭物理アドレスは、物理エクステントを管理する物理アドレス領域の先頭の物理アドレスである。
【０１００】
空き情報は、物理エクステントの状態を示す情報である。空き情報は、物理エクステントを管理するアドレス領域に基づいて以下の値を持つ。
【０１０１】
物理エクステントのアドレス領域がすべて消去済みの場合、空き情報は１(「空き」)となる。
【０１０２】
物理エクステントのアドレス領域にデータが格納されている場合、空き情報は０(「使用」)となる。
【０１０３】
物理エクステントのアドレス領域がオーバープロビジョニングによりホスト装置２１〜２３によって使用されない範囲となっている場合、空き情報はＮＵＬＬ(「非使用領域」)となる。
【０１０４】
デバイス構成部１０は、新しいデバイスが追加された場合に、物理エクステント情報テーブル９を設定する。
【０１０５】
書き込み部１３は、物理エクステント情報テーブル９に対して、物理エクステントＩＤ、所属デバイスＩＤ、先頭物理アドレスに対するレコード追加及び初期値の設定を行う。書き込み部１３は、物理エクステント情報テーブル９に対して、物理エクステントＩＤ、所属デバイスＩＤ、先頭物理アドレスの更新を行わない。書き込み部１３は、空き情報に初期値として１を設定し、その後更新を行う。
【０１０６】
メモリ制御装置５は、論理エクステント情報テーブル８と物理エクステント情報テーブル８とを参照することにより、論理アドレスに対応する物理アドレスを求める。この論理アドレスから物理アドレスへの変換は、後述する。
【０１０７】
以下で、メモリ制御装置５で実行される各種の処理について説明する。
【０１０８】
図７は、本実施形態に係るデバイス構成部１０の処理の一例を示すフローチャートである。
【０１０９】
デバイス構成部１０は、ストレージ装置３に追加されるデバイスのリストを受け付けた場合に、ステップＳ７０１において、リストの全てのデバイスに対する設定が完了したか否か判断する。受け付けたリストはＤＬと表記する。
【０１１０】
リストＤＬの全てのデバイスに対する設定が完了している場合、処理は終了する。
【０１１１】
リストＤＬの全てのデバイスに対する設定が完了していない場合、ステップＳ７０２において、デバイス構成部１０は、未設定のデバイスＤiを選択する。
【０１１２】
ステップＳ７０３において、デバイス構成部１０は、デバイスＤiに関するレコード追加処理を実行する。その後、処理はステップＳ７０１に戻る。
【０１１３】
図８は、本実施形態に係るデバイス構成部１０のレコード追加処理の一例を示すフローチャートである。
【０１１４】
ステップＳ８０１において、デバイス構成部１０は、デバイス固有情報テーブル６へデバイスＤiに関するレコードを新規生成する。
【０１１５】
具体的には、デバイス構成部１０は、デバイスＩＤ、最大容量、保証書込量、性能仕様を以下の方式で設定する。
【０１１６】
デバイス構成部１０は、デバイスＤiへコマンドを送り、デバイスＤiからのコマンドに対する応答にしたがって、デバイスＩＤ、最大容量、保証書込量、性能仕様を設定する。コマンドは、例えば、ＳＣＳＩのINQUIRYコマンドである。
【０１１７】
デバイス構成部１０は、デバイスＤiがこのようなコマンドを扱わない場合に、例えばユーザなどの人手で設定された追加されるデバイスＤiの初期値を設定する。
【０１１８】
デバイス構成部１０は、デバイスＤiの種類ごとに設定値の定義されたテーブルを参照することで、デバイスＤiの設定値を設定する。
【０１１９】
デバイス構成部１０は、論理容量の初期値を、最大容量の５０％で設定する。しかしながら、論理容量は、最大容量に対して５０％ではない他の割合で設定されてもよい。
【０１２０】
デバイス構成部１０は、現在使用容量、読み出し量、更新量、追記量、最大負荷をゼロで初期化する。
【０１２１】
ステップＳ８０２において、デバイス構成部１０は、デバイスＤiの最大容量／エクステントサイズにより、追加物理エクステント数を計算する。
【０１２２】
ステップＳ８０３において、デバイス構成部１０は、追加物理エクステント数分の物理エクステントのレコード追加が完了したか否か判断する。
【０１２３】
追加物理エクステント数分の物理エクステントの設定（レコード追加）が完了した場合、処理は終了する。
【０１２４】
追加物理エクステント数分の物理エクステントの設定が完了していない場合、ステップＳ８０４において、デバイス構成部１０は、物理エクステント情報テーブル９に物理エクステントのレコードを新規生成する。
【０１２５】
具体的には、デバイス構成部１０は、物理エクステントＩＤとして、物理エクステント情報テーブル９内で一意な物理エクステントＩＤを設定する。デバイス構成部１０は、所属デバイスＩＤとして、デバイスＤiのデバイスＩＤを設定する。デバイス構成部１０は、先頭物理アドレスとして、デバイスＤiに対してすでに設定したレコード数×エクステントサイズ分のセクタ数、を設定する。デバイス構成部１０は、デバイスＤiの空き情報を「空き」とする。
【０１２６】
なお、ストレージ装置３の運用中にデバイスＤiが故障した場合、デバイス構成部１０は、所属デバイスＩＤが故障したデバイスＤiを示す全ての論理エクステントと物理エクステントとを削除する。
【０１２７】
図９は、本実施形態に係る論理ディスク構成部１１の処理の一例を示すフローチャートである。
【０１２８】
論理ディスク構成部１１は、論理ディスクが設定される場合に、論理ディスク情報テーブル７、論理エクステント情報テーブル８を更新する。論理ディスクの生成、論理ディスクＩＤの付与、論理容量の付与、及びパーティション分け等の設定は、例えば、人手によりすでに行われているとする。
【０１２９】
論理ディスク構成部１１は、追加される論理ディスクのリストを受け付けた場合に、ステップＳ９０１において、リストの全ての論理ディスクに対する設定が完了したか否か判断する。追加される論理ディスクのリストはＬＬと表記する。
【０１３０】
リストＬＬの全ての論理ディスクに対する設定が完了している場合、処理は終了する。
【０１３１】
リストＬＬの全ての論理ディスクに対する設定が完了していない場合、ステップＳ９０２において、論理ディスク構成部１１は、未設定の論理ディスクを選択する。選択された論理ディスクはＬiと表記する。
【０１３２】
ステップＳ９０３において、論理ディスク構成部１１は、論理ディスクＬiに関するレコード追加処理を実行する。その後、処理はステップＳ９０１に戻る。
【０１３３】
図１０は、本実施形態に係る論理ディスク構成部１１によって実行される論理ディスクＬiに関するレコード追加処理の一例を示すフローチャートである。
【０１３４】
論理ディスク構成部１１は、論理ディスクＬiの論理ディスクＩＤと論理容量とを入力する。入力される論理ディスクＩＤはＬＩＤ、入力される論理容量はＬＶと表記する。論理ディスクＩＤ ＬＩＤと論理容量ＬＶとの入力値は、論理ディスクＬiが設定される場合に参照される構成情報の一部とする。
【０１３５】
ステップＳ１００１において、論理ディスク構成部１１は、論理ディスク情報テーブル７へ未設定の論理ディスクＬiに関するレコードを新規生成し、レコードに、入力した論理ディスクＩＤ ＬＩＤと入力した論理容量ＬＶとを設定する。
【０１３６】
ステップＳ１００２において、論理ディスク構成部１１は、論理ディスクＬiの入力した論理容量ＬＶ／エクステントサイズにより、追加論理エクステント数を計算する。
【０１３７】
ステップＳ１００３において、論理ディスク構成部１１は、論理ディスクＬiに所属する全論理エクステントの設定が完了したか否か判断する。
【０１３８】
論理ディスクＬiに所属する全論理エクステントの設定が完了した場合、処理は終了する。
【０１３９】
論理ディスクＬiに所属する全論理エクステントの設定が完了していない場合、ステップＳ１００４において、論理ディスク構成部１１は、論理エクステント情報テーブル８に、追加論理エクステントサイズ数分の論理エクステントのレコードを新規生成する。さらに、論理ディスク構成部１１は、論理エクステント情報テーブル８のレコード１つに対応する論理エクステントの設定を、以下の方式で行う。
【０１４０】
論理ディスク構成部１１は、論理エクステントＩＤとして、論理エクステント情報テーブル８内で一意なＩＤを設定する。
【０１４１】
論理ディスク構成部１１は、入力した論理ディスクＩＤ ＬＩＤを、論理ディスクＩＤとして設定する。
【０１４２】
論理ディスク構成部１１は、ゼロから始まり論理エクステント情報テーブル８中の同じ論理ディスクＩＤに所属する論理エクステントの数×エクステントサイズ分のアドレス数により、論理エクステントの先頭論理アドレスを設定する。
【０１４３】
論理ディスク構成部１１は、所属デバイスＩＤを、ＮＵＬＬに設定する。所属デバイスＩＤの値は、データ書き込み時に書き込み部１３が設定する。
【０１４４】
論理ディスク構成部１１は、物理エクステントＩＤを、ＮＵＬＬに設定する。物理エクステントＩＤの値は、データ書き込み時に書き込み部１３が設定する。
【０１４５】
論理ディスク構成部１１は、読み出し量及び書き込み量を、ゼロに設定する。
【０１４６】
図１１は、本実施形態に係る読み出し部１２の処理の一例を示すフローチャートである。ただし、図１１の一部、具体的にはステップＳ１１０２は、アドレス範囲抽出部１４の処理に相当する。
【０１４７】
ホスト装置２１〜２３のいずれかは、論理ディスクＩＤ ＬＩＤ、論理アドレス、データサイズをパラメータとする読み出しコマンドを、ストレージ装置３に送信する。ストレージ装置３は、パラメータとデバイス情報とに基づいてデータ読み出しを行い、読み出しデータをホスト装置２１〜２３のいずれかに返す。
【０１４８】
読み出し部１２は、対象アドレス抽出処理、読み出し処理、テーブル更新処理を実行する。
【０１４９】
図１１において、ステップＳ１１０１〜Ｓ１１０３は、対象アドレス抽出処理に相当する。
【０１５０】
ステップＳ１１０１において、読み出し部１２は、ホスト装置２１〜２３のいずれかから、読み出し先である論理ディスクの論理ディスクＩＤ ＬＩＤ、論理アドレス、データサイズを受信する。受信した論理アドレスはＡＤＤＲと表記し、データサイズはＳＩＺＥと表記する。
【０１５１】
ステップＳ１１０２において、アドレス範囲抽出部１４は、受信した論理ディスクＩＤ ＬＩＤ、論理アドレスＡＤＤＲ、データサイズＳＩＺＥに基づいて、読み出し対象の論理エクステントの論理エクステントＩＤと、当該読み出し対象の論理エクステント内の読み出し対象の先頭アドレスと、当該読み出し対象の論理エクステント内でのデータのサイズとの組を含むアドレス範囲のリストを計算する。読み出し対象の論理エクステントはＥjと表記し、読み出し対象の先頭アドレスはＡjと表記し、サイズはＳjと表記し、アドレス範囲のリストはＬＲと表記する。
【０１５２】
ステップＳ１１０３において、読み出し部１２は、読み出しデータを格納するためのバッファメモリを、データサイズＳＩＺＥ分確保する。
【０１５３】
図１１において、ステップＳ１１０４〜Ｓ１１１０は、読み出し処理とテーブル更新処理とに相当する。
【０１５４】
ステップＳ１１０４において、読み出し部１２は、リストＬＲ内から、読み出し対象の論理エクステントＩＤ Ｅjと先頭アドレスＡjとサイズＳjとの組（Ｅj，Ａj，Ｓj）を選択する。
【０１５５】
ステップＳ１１０５において、読み出し部１２は、論理エクステント情報テーブル８を参照し、読み出し対象の論理エクステントＩＤ Ｅjに対応する読み出し対象の物理エクステントＩＤを選択する。読み出し対象の物理エクステントＩＤはＰkと表記する。
【０１５６】
ステップＳ１１０６において、読み出し部１２は、物理エクステントＩＤ Ｐkの示す物理エクステントにおける先頭アドレスＡjからサイズＳj分までのデータを読み出し、読み出しデータとしてバッファメモリに格納する。
【０１５７】
ステップＳ１１０７において、読み出し部１２は、論理エクステント情報テーブル８を参照し、読み出し対象の論理エクステントＩＤ Ｅjに対応する読み出し量を、サイズＳj分増加する。
【０１５８】
ステップＳ１１０８において、読み出し部１２は、デバイス固有情報テーブル６を参照し、データ読み出しの行われたデバイスＤiを示すデバイスＩＤに対応する読み出し量を、サイズＳj分増加する。
【０１５９】
ステップＳ１１０９において、読み出し部１２は、リストＬＲ内から、全ての論理エクステントＩＤ Ｅjと先頭アドレスＡjとサイズＳjとの組（Ｅj，Ａj，Ｓj）が選択されたか否か判断する。
【０１６０】
リストＬＲ内から、全ての組（Ｅj，Ａj，Ｓj）が選択されていない場合には、処理はステップＳ１１０４に移動する。
【０１６１】
リストＬＲ内から全ての組（Ｅj，Ａj，Ｓj）が選択されている場合には、ステップＳ１１１０において、読み出し部１２は、ホスト装置２１〜２３のいずれかにバッファメモリの読み出しデータを送信し、処理を終了する。データはＤＡＴＡと表記する。
【０１６２】
図１２は、本実施形態に係るアドレス範囲抽出部１４の処理の一例を示すフローチャートである。この図１２の処理は、上記図１１のステップＳ１１０２に相当する。
【０１６３】
アドレス範囲抽出部１４は、アドレス範囲を抽出する対象の論理ディスクＩＤ ＬＩＤ、対象のアドレスＡＤＤＲ、データサイズＳＩＺＥを入力し、論理エクステントＩＤ Ｅjと先頭アドレスＡjとサイズＳjとを含むリストＬＲを出力する。
【０１６４】
図１２において、ステップＳ１２０１及びステップＳ１２０２は、初期化処理に相当する。
【０１６５】
ステップＳ１２０１において、アドレス範囲抽出部１４は、アドレス範囲のリストＬＲを空リストとして初期化する。
【０１６６】
ステップＳ１２０２において、アドレス範囲抽出部１４は、変数ＮＳ＝ＳＩＺＥとし、変数ＮＡ＝ＡＤＤＲとする。
【０１６７】
図１２において、ステップＳ１２０３以降は、リストＬＲの生成処理に相当する。
【０１６８】
ステップＳ１２０３において、アドレス範囲抽出部１４は、論理エクステント情報テーブル８を参照し、論理エクステントＩＤのうち、論理エクステントＩＤ Ｅjの先頭論理アドレス≦ＮＡ＜（Ｅjの先頭論理アドレス＋エクステントサイズ分のセクタ数）、を満たす論理エクステントＩＤ Ｅjを計算する。
【０１６９】
ステップＳ１２０４において、アドレス範囲抽出部１４は、先頭アドレスＡj＝ＮＡとする。
【０１７０】
ステップＳ１２０５において、アドレス範囲抽出部１４は、論理エクステントＩＤ Ｅjの残りサイズＲＳ＝Ｅjの（終端論理アドレス−ＡＤＤＲ）× セクタサイズ、とする。アドレス範囲抽出部１４は、ＲＳ＞ＳＩＺＥの場合、Ｓj＝ＮＳ、ＮＡ＝０とする。アドレス範囲抽出部１４は、ＲＳ＞ＳＩＺＥではない場合、Ｓj＝ＲＳ、ＮＡ＝（Ｅjの先頭論理アドレス＋エクステントサイズ分のセクタ数）、とする。
【０１７１】
ステップＳ１２０６において、アドレス範囲抽出部１４は、リストＬＲに、（Ｅj，Ａj，Ｓj）を追加する。
【０１７２】
ステップＳ１２０７において、アドレス範囲抽出部１４は、ＮＳ＝ＮＡ−Ｓjとする。
【０１７３】
ステップＳ１２０８において、アドレス範囲抽出部１４は、ＮＳ＝０か否か判断する。
【０１７４】
ＮＳ＝０ではない場合、処理はステップＳ１２０５に移る。
【０１７５】
ＮＳ＝０の場合、ステップＳ１２０９において、アドレス範囲抽出部１４は、リストＬＲを、読み出し部１２又は書き込み部１３に返す。
【０１７６】
図１３は、本実施形態に係る書き込み部１３の処理の一例を示すフローチャートである。図１３におけるステップＳ１３０２は、上記図１２のアドレス範囲抽出部１４の処理に相当し、ステップＳ１３０４は、寿命補正部１５のアロケート書き込み先選択処理に相当する。
【０１７７】
ホスト装置２１〜２３のいずれかは、論理ディスクＩＤ、論理アドレス、データサイズ、書き込みデータをパラメータとする書き込みコマンドを、ストレージ装置３に送信する。ストレージ装置３は、パラメータとデバイス情報とに基づいてデータ書き込みを行う。
【０１７８】
図１３において、ステップＳ１３０１〜Ｓ１３０４は、対象アドレス抽出処理に相当する。
【０１７９】
ステップＳ１３０１において、書き込み部１３は、ホスト装置２１〜２３のいずれかから、書き込み先である論理ディスクの論理ディスクＩＤ ＬＩＤ、論理アドレスＡＤＤＲ、データサイズＳＩＺＥ、書き込みデータＤＡＴＡを受信する。書き込み部１３は、書き込みデータＤＡＴＡを格納するためのバッファメモリを、データサイズＳＩＺＥ分確保し、バッファメモリに書き込みデータＤＡＴＡを格納する。
【０１８０】
ステップＳ１３０２において、アドレス範囲抽出部１４は、受信した論理ディスクＩＤ ＬＩＤ、論理アドレスＡＤＤＲ、データサイズＳＩＺＥに基づいて、書き込み対象の論理エクステントの論理エクステントＩＤ Ｅjと、当該書き込み対象の論理エクステント内の書き込み対象の先頭アドレスＡjと、当該書き込み対象の論理エクステント内でのデータのサイズＳjとの組（Ｅj，Ａj，Ｓj）を含むアドレス範囲のリストＬＲを計算する。
【０１８１】
ステップＳ１３０３において、書き込み部１３は、論理エクステント情報テーブル８を参照し、リストＬＲ内の論理エクステントＩＤ Ｅjのうち、所属デバイスＩＤが設定されていない論理エクステントＩＤがあるか否か、すなわち、論理エクステントＩＤと物理エクステントＩＤとの新規の対応付けが必要か否か判断する。
【０１８２】
新規の対応付けが必要でない場合、処理は、ステップＳ１３０５に移動する。
【０１８３】
新規の対応付けが必要な場合、ステップＳ１３０４において、寿命補正部１５は、アロケート書き込み先選択処理により、論理エクステントＩＤと一対一で対応する物理エクステントＩＤを設定する。
【０１８４】
図１３において、ステップＳ１３０５〜Ｓ１３１４は、書き込み処理とテーブル更新処理とに相当する。
【０１８５】
ステップＳ１３０５において、書き込み部１３は、OFFSET＝０とする。
【０１８６】
ステップＳ１３０６において、書き込み部１３は、リストＬＲ内から、読み出し対象の論理エクステントＩＤ Ｅjと先頭アドレスＡjとサイズＳjとの組（Ｅj，Ａj，Ｓj）を選択する。
【０１８７】
ステップＳ１３０７において、書き込み部１３は、論理エクステント情報テーブル８を参照し、書き込み対象の論理エクステントＩＤ Ｅjに対応する書き込み対象の物理エクステントＩＤ Ｐkを選択する。
【０１８８】
ステップＳ１３０８において、書き込み部１３は、書き込み対象の物理エクステントＩＤ Ｐkで示される物理エクステントに対して、先頭アドレスＡjからサイズＳj分までに、バッファメモリのOFFSETの位置からサイズＳj分のデータを書き込む。
【０１８９】
ステップＳ１３０９において、書き込み部１３は、OFFSET＝OFFSET＋Ｓjにより、バッファメモリの参照位置を更新する。
【０１９０】
ステップＳ１３１０において、書き込み部１３は、論理エクステント情報テーブル８を参照し、書き込み対象の論理エクステントＩＤ Ｅjに対応するレコードの書き込み量を、サイズＳj分増加する。
【０１９１】
ステップＳ１３１１において、書き込み部１３は、物理エクステント情報テーブル９を参照し、書き込み対象の物理エクステントＩＤ Ｐkに対応するレコードの空き情報を「使用中」に設定する。
【０１９２】
ステップＳ１３１２において、書き込み部１３は、デバイス固有情報テーブル６を参照し、データ書き込みの行われたデバイスＤiの残り書き込み量を、サイズＳj分減少する。書き込み部１３は、エクステントサイズを現在使用容量に加え、デバイスＤiの現在使用容量を更新する。書き込み部１３は、アップデート書き込みの場合は更新量に、アロケート書き込みの場合は追記量に書き込みデータのデータサイズを加算する。アップデート書き込みとは、物理エクステントに対する割り当てが行われている論理エクステントへの書き込みを指す。
【０１９３】
ステップＳ１３１３において、書き込み部１３は、リストＬＲ内の全ての論理エクステントＩＤ Ｅjと先頭アドレスＡjとサイズＳjとの組（Ｅj，Ａj，Ｓj）が選択されたか否か判断する。
【０１９４】
リストＬＲ内の全ての組（Ｅj，Ａj，Ｓj）が選択されていない場合、処理はステップＳ１３０６に移動する。
【０１９５】
リストＬＲ内の全ての組（Ｅj，Ａj，Ｓj）が選択された場合、ステップＳ１３１４において、書き込み部１３は、ホスト装置１３のいずれかに書き込み完了通知を送信し、処理は終了する。
【０１９６】
図１４は、本実施形態に係る寿命補正部１５のアロケート書き込み先選択処理の一例を示すフローチャートである。この図１４のアロケート書き込み先選択処理は、上記図１３のステップＳ１３０４に相当する。
【０１９７】
寿命補正部１５によって実行されるアロケート書き込み先選択処理は、デバイスＤ0〜ＤN-1の寿命及び性能を後述するアロケート書き込み先評価処理によって評価し、評価値が最も大きいデバイスを適切なアロケート書き込み先として選択する。
【０１９８】
図１４において、ステップＳ１４０２は、初期化処理に相当する。
【０１９９】
ステップＳ１４０１において、寿命補正部１５は、リストＬＲから、論理エクステントＩＤ Ｅjを１つ選択する。
【０２００】
ステップＳ１４０２において、寿命補正部１５は、評価リストＥＬを空リストとして初期化する。
【０２０１】
図１４において、ステップＳ１４０３〜Ｓ１４０６は、アロケート書き込みデバイス決定処理に相当する。
【０２０２】
ステップＳ１４０３において、寿命補正部１５は、デバイス固有情報テーブル６を参照し、デバイスＩＤの昇順にデバイスＤiの情報を選択する。
【０２０３】
ステップＳ１４０４において、寿命補正部１５は、後述するアロケート書き込み先評価処理により、論理エクステントＩＤ ＥjとデバイスＤiの情報とに基づいて、評価値を計算する。計算した評価値はＦと表記する。そして、寿命補正部１５は、デバイスＤiの情報と評価値Ｆとの組をリストＥＬに追加する。
【０２０４】
ステップＳ１４０５において、寿命補正部１５は、デバイス固有情報テーブル６から全てのデバイスＤiの情報が選択されたか否か判断する。
【０２０５】
デバイス固有情報テーブル６から全てのデバイスＤiの情報が選択されていない場合、処理はステップＳ１４０３に移動する。
【０２０６】
デバイス固有情報テーブル６から全てのデバイスＤiの情報が選択された場合、ステップＳ１４０６において、寿命補正部１５は、リストＥＬから、評価値Ｆが最大であるデバイスＤiのデバイスＩＤを選択する。
【０２０７】
図１４において、ステップＳ１４０７〜Ｓ１４０９は、論理エクステントＩＤと物理エクステントＩＤとの対応付け処理に相当する。
【０２０８】
ステップＳ１４０７において、寿命補正部１５は、選択されたデバイスＩＤで示されるデバイスＤiに所属し、かつ、空き情報「空き」に対応する物理エクステントＩＤから、ＩＤの昇順に、１つの物理エクステントＩＤ Ｐkを選択する。このステップＳ１４０７の処理は、必要な情報として、物理エクステント情報テーブル９における各物理エクステントＩＤと、当該物理エクステントＩＤに対応する所属デバイスＩＤと、空き情報と、を用いる。
【０２０９】
ステップＳ１４０８において、寿命補正部１５は、論理エクステント情報テーブル８を参照し、論理エクステントＩＤ Ｅjに対応するレコードに、デバイスＤiを示すデバイスＩＤと物理エクステントＩＤ Ｐkとを格納し、論理エクステントＩＤ Ｅjと物理エクステントＩＤ Ｐkとを対応付ける。
【０２１０】
ステップＳ１４０９において、寿命補正部１５は、リストＬＲから全ての論理エクステントＩＤが選択されたか否か判断する。
【０２１１】
リストＬＲから全ての論理エクステントＩＤが選択されていない場合、処理はステップＳ１４０１に移動する。
【０２１２】
リストＬＲから全ての論理エクステントＩＤが選択された場合、処理は終了する。
【０２１３】
図１５は、本実施形態に係る寿命補正部１５のアロケート書き込み先評価処理の一例を示すフローチャートである。この図１５のアロケート書き込み先評価処理は、上記図１４のステップＳ１４０４に相当する。この図１５において、ステップＳ１５０１〜Ｓ１５０４の実行順序は、自由に変更可能であり、並列に実行されてもよい。
【０２１４】
寿命補正部１５は、デバイスＤiのデバイス情報、論理エクステントＩＤ Ｅj、重みＷ1〜Ｗ4（ΣＷi＝１, ∀i． ０≦Ｗi）を入力し、評価値Ｆを出力する。例えば、重みＷ1〜Ｗ4は、ストレージ装置３のパラメータに含まれるポリシー情報としてユーザが設定可能な値とする。例えば、重みＷ1〜Ｗ4の初期値は、すべて０．２５としてもよい。例えば、重みＷ1〜Ｗ4などのようなデバイス又は論理エクステントに関わる情報は、デバイス固有情報テーブル６又は論理エクステント情報テーブル８に格納されていてもよい。
【０２１５】
ステップＳ１５０１において、寿命補正部１５は、性能値Ｖ1＝Ｗ1×（デバイスＤiの性能仕様−デバイスＤiの現在ＩＯＰＳ）／デバイスＤiの性能仕様、を計算する。例えば、デバイスＤiの現在ＩＯＰＳは、このアロケート書き込み先評価処理を実行中に計測されたＩＯＰＳ値とする。
【０２１６】
ステップＳ１５０２において、寿命補正部１５は、平準化後保証書き込み量ＥＷ＝（残り寿命／ストレージ装置３全体のデバイスの残り寿命平均）×デバイスＤiの保証書き込み量）、を計算し、寿命値Ｖ2＝Ｗ2×（ＥＷ−Σ（デバイスＤiに含まれる論理エクステントの書き込み量））／ＥＷ、を計算する。
【０２１７】
ステップＳ１５０３において、寿命補正部１５は、容量値Ｖ3＝Ｗ3×（デバイスＤiの論理容量−デバイスＤiの現在使用容量−エクステントサイズ）／デバイスＤiの論理容量、を計算する
ステップＳ１５０４において、寿命補正部１５は、追記率ＡＲ＝デバイスＤiの追記量／（デバイスＤiの追記量＋デバイスＤiの読み出し量＋デバイスＤiの更新量）、を計算し、追記値Ｖ4＝Ｗ4×（１−ＡＲ）、を計算する。
【０２１８】
ステップＳ１５０５において、寿命補正部１５は、評価関数Ｆ＝Ｖ1＋Ｖ2＋Ｖ3＋Ｖ4に基づいて、評価値Ｆを計算し、評価値Ｆを返す。もし、Ｖ1＜０又はＶ3＜０の場合はＦ＝０とする。
【０２１９】
上記のような評価関数を用いて、アロケート書き込み先を管理することにより、以下の効を得ることができる。
【０２２０】
例えば、デバイスの性能仕様に対して現在の負荷が小さく、負荷に余裕が有るほど、デバイスに対する評価値Ｆは高くなる。したがって、負荷に余裕のあるデバイスに対してエクステントがアロケート書き込みされる割合を増やすことができる。
【０２２１】
デバイスに対する書き込み量が保証書き込み量に対して少ない場合に、このデバイスの寿命に余裕が生じる。書き込み量が少ない場合、評価関数によって、寿命に余裕のあるデバイスの評価値Ｆは高くなる。したがって、寿命に余裕のあるデバイスに対してエクステントがアロケート書き込みされる割合を増やすことができ、寿命の少ないデバイスへエクステントがアロケート書き込みされる割合を減らすことができる。
【０２２２】
アロケート書き込み先評価処理における寿命値の計算では、保証書き込み量に対して、デバイスの寿命とデバイス全体の残り寿命平均との比を、掛けている。これにより、ストレージ装置３に既に設置済みのデバイス全体と比較し、残り寿命が大きい新規設置のデバイスは、評価値Ｆが高くなる。このため、新規設置のデバイスに対してエクステントがアロケート書き込みされる割合を増やすことができる。一方、残り寿命が少ないデバイスへエクステントがアロケート書き込みされる割合は減少し、デバイスの寿命平準化を行うことができる。
【０２２３】
アロケート書き込み先評価処理では、デバイスの最大容量に対して現在使用容量が少なほど、デバイスに対する評価値Ｆが高くなり、アロケート書き込みされ易くなる。したがって、現在使用容量が論理容量に近いデバイスへのアロケート書き込みの割合を減らすことができる。
【０２２４】
アロケート書き込み先評価処理では、追記率の高いデバイスの評価値Ｆは低くなる。したがって、現在のアロケート書き込みの多いデバイスに対してアロケート書き込みが行われる割合は減少し、過剰なアロケート書き込みによる容量圧迫を抑え、デバイス間で容量平準化を行うことができる。
【０２２５】
ここで、図１６乃至図２０を用いてアロケート書き込み先選択処理の具体例を説明する。
【０２２６】
図１６は、デバイス固有情報テーブル６の一例を示すデータ構造図である。
【０２２７】
デバイス固有情報テーブル６は、デバイスＩＤ Ｄ1〜Ｄ3を含む。
【０２２８】
図１７は、論理エクステント情報テーブル７の一例を示すデータ構造図である。
【０２２９】
論理エクステント情報テーブル７は、５つの論理エクステントＩＤ Ｅ1〜Ｅ5を含む。本実施形態において、論理エクステントＩＤ Ｄ1〜Ｄ3のそれぞれは、一般化して論理エクステントＩＤ Ｅjと表記する。
【０２３０】
図１８は、物理エクステント情報テーブル９の一例を示すデータ構造図である。
【０２３１】
物理エクステント情報テーブル８は、６つの物理エクステントＩＤ Ｐ1〜Ｐ6を含む。本実施形態において、物理エクステントＩＤ Ｐ1〜Ｐ6のそれぞれは、一般化して物理エクステントＩＤ Ｐkと表記する。
【０２３２】
例えば、論理エクステント情報テーブル８における論理エレメントＩＤ Ｅ5を新たにアロケート書き込みする場合について説明する。
【０２３３】
まず、寿命補正部１５は、上記図１４のステップＳ１４０３からステップＳ１４０５までのループにより、各デバイスＤ1〜Ｄ3の評価値Ｆを計算する。
【０２３４】
図１９は、デバイスと評価値との関係の一例を示す図である。
【０２３５】
寿命補正部１５は、上記図１４のステップＳ１４０６において、評価値Ｆが最大のデバイスＤ3に対してアロケート書き込みを行うことを決定する。
【０２３６】
寿命補正部１５は、上記図１４のステップＳ１４０７及びステップＳ１４０８において、論理エクステントＩＤ Ｅ5を、評価値Ｆが最大のデバイスＩＤ Ｄ3の空き状態の物理エクステントＩＤ Ｐ6と対応付け、論理エクステント情報テーブル８を更新する。
【０２３７】
図２０は、更新後の論理エクステント情報テーブル８の一例を示すデータ構造図である。
【０２３８】
論理エクステントＩＤ Ｅ5に対応するレコードに、所属デバイスＩＤとして、デバイスＩＤ Ｄ3が格納され、物理エクステントＩＤとして、物理エクステントＩＤ Ｐ6が格納される。
【０２３９】
図２１は、本実施形態に係る寿命補正部１５の寿命補正処理の一例を示すフローチャートである。ただし、図２１におけるステップＳ２１１８は、後述する設定変更部１６の処理に相当する。
【０２４０】
寿命補正部１５は、各デバイスＤ0〜ＤN-1内の論理エクステントごとに、デバイス固有情報テーブル６に基づいて評価を行い、各論理エクステントを評価値の高いデバイスに再配置する。
【０２４１】
また、寿命補正部１５は、各デバイスＤ0〜ＤN-1の論理容量を、デバイス固有情報テーブル６に基づいて計算されたオーバープロビジョニングの設定に、変更する。
【０２４２】
寿命補正処理は、ストレージ装置３内のデバイスＤ0〜ＤN-1の寿命を平準化する。
【０２４３】
寿命補正処理では、まず、初期化処理によって、再配置を行う候補となる論理エクステントのリストを初期化する。
【０２４４】
次に、寿命補正処理では、移動候補となる論理エクステントの追加処理によって、保証書き込み量を上回るデバイス上の論理エクステントを１つ又は複数選択し、移動候補とする。
【０２４５】
次に、寿命補正処理では、１つ又は複数の論理エクステントの再配置を行い、各デバイスＤ0〜ＤN-1の寿命及び性能の無駄をなくす。
【０２４６】
そして、寿命補正処理では、最後に、各デバイスＤ0〜ＤN-1のオーバープロビジョニングの設定を、後述する設定変更部１６によって実行されるオーバープロビジョニングの設定評価処理によって適切な値に設定し、処理を終了する。
【０２４７】
図２１において、ステップＳ２１０１は、初期化処理に相当する。
【０２４８】
ステップＳ２１０１において、寿命補正部１５は、再配置を行う候補となる論理エクステントのリストを空リストとして生成する。再配置を行う候補となる論理エクステントのリストはＣＬと表記する。
【０２４９】
図２１において、ステップＳ２１０２〜Ｓ２１０８は、移動候補となる論理エクステントの追加処理に相当する。
【０２５０】
ステップＳ２１０２において、寿命補正部１５は、デバイス固有情報テーブル６からデバイスＩＤの昇順で、デバイスＩＤ Ｄiを選択する。
【０２５１】
ステップＳ２１０３において、寿命補正部１５は、論理エクステント情報テーブル８を参照し、所属デバイスＩＤ Ｄiに対応付けられている論理エクステントＩＤ群を、論理エクステント情報テーブル８から全て選択する。
【０２５２】
ステップＳ２１０４において、寿命補正部１５は、選択された論理エクステントＩＤ群を書き込み量の降順にソートする。
【０２５３】
ステップＳ２１０５において、寿命補正部１５は、論理エクステントＩＤ群の書き込み量の総和を累積書き込み量ＡＷとする。
【０２５４】
ステップＳ２１０６において、寿命補正部１５は、累積書き込み量ＡＷ＜保証書き込み量か否か判断する。
【０２５５】
累積書き込み量ＡＷ＜保証書き込み量ではない場合、ステップＳ２１０７において、寿命補正部１５は、書き込み量が最大の論理エクステントＩＤを、リストＣＬに追加し、論理エクステントＩＤ群から省き、処理はステップＳ２１０５へ移動する。
【０２５６】
累積書き込み量ＡＷ＜保証書き込み量の場合、ステップＳ２１０８において、寿命補正部１５は、上記のステップＳ２１０２において、デバイス固有情報テーブル６から全てのデバイスＩＤ Ｄiが選択されたか否か判断する。
【０２５７】
デバイス固有情報テーブル６から全てのデバイスＩＤ Ｄiが選択されていない場合、処理はステップＳ２１０２に移動する。
【０２５８】
デバイス固有情報テーブル６から全てのデバイスＩＤ Ｄiが選択された場合、処理はステップＳ２１０９に移動する。
【０２５９】
図２１におけるステップＳ２１０９〜Ｓ２１１７は、寿命補正部１５の論理エクステント単位の再配置先選択処理及び再配置処理に相当する。
【０２６０】
ステップＳ２１０９において、寿命補正部１５は、リストＣＬ内の論理エクステントＩＤを、書き込み量の降順にソートする。
【０２６１】
ステップＳ２１１０において、寿命補正部１５は、リストＣＬ内から書き込み量が大きい順で論理エクステントＩＤ Ｅjを選択する。
【０２６２】
ステップＳ２１１１において、寿命補正部１５は、初期化された空の評価値リストＥＬを生成する。
【０２６３】
ステップＳ２１１２において、寿命補正部１５は、デバイス固定情報テーブル６から昇順でデバイスＩＤ Ｄiを選択する。
【０２６４】
ステップＳ２１１３において、寿命補正部１５は、選択された論理エクステントＩＤ ＥjとデバイスＩＤ Ｄiと評価関数とに基づいて、評価値Ｆを計算し、デバイスＩＤ Ｄiと評価値Ｆの組（デバイスＩＤ Ｄi，評価値Ｆ）を評価値リストＥＬに追加する。
【０２６５】
ステップＳ２１１４において、寿命補正部１５は、ステップＳ２１１２において、全てのデバイスＩＤが選択されたか否か判断する。
【０２６６】
全てのデバイスＩＤが選択されていない場合、処理はステップＳ２１１２に移動する。これにより、全デバイスのＦが計算される。
【０２６７】
全てのデバイスＩＤが選択された場合、ステップＳ２１１５において、リストＥＬ内で、評価値Ｆが最大のデバイスＩＤ Ｄiを選択する。
【０２６８】
ステップＳ２１１６において、寿命補正部１５は、後述する論理エクステントの再配置処理を行い、論理エクステントＥjを選択されたＤiに再配置する。
【０２６９】
ステップＳ２１１７において、寿命補正部１５は、上記ステップＳ２１１０において、リストＣＬ内から全ての論理エクステントＩＤ Ｅjが選択されたか否か判断する。
【０２７０】
リストＣＬ内から全ての論理エクステントＩＤが選択されていない場合、処理はステップＳ２１１０に移動する。すなわち、リストＣＬから全論理エクステントＩＤが選択されるまでステップＳ２１１０〜ステップＳ２１１７が繰り返される。
【０２７１】
リストＣＬ内から全ての論理エクステントＩＤが選択された場合、ステップＳ２１１８において、設定変更部１６は、オーバープロビジョニングの設定評価処理を実行し、全デバイスＤ0〜ＤN-1のオーバープロビジョニングの設定を適切な値に変更する。
【０２７２】
なお、上記の図２１の処理のうちステップＳ２１０９〜Ｓ２１１８の処理は、適宜変更可能である。
【０２７３】
図２２は、本実施形態に係る寿命補正部１５の寿命補正処理の変形例を示すフローチャートである。上記図２１では評価値Ｆを計算するごとに論理エクステントを再配置する。これに代えて、この図２２では、全ての論理エクステントとデバイスとの組み合わせに対する評価値Ｆを計算し、その全ての論理エクステントとデバイスとの組み合わせに対する評価値Ｆに基づいて、再配置の優先順位を判断する。
【０２７４】
ステップＳ２２０９において、寿命補正部１５は、評価値を格納するための評価値リストを空リストとして初期化する。評価値リストは、ＥＬと表記する。
【０２７５】
ステップＳ２２１０において、寿命補正部１５は、リストＣＬ内の論理エクステントＩＤ Ｅjを選択する。
【０２７６】
ステップＳ２２１１において、寿命補正部１５は、デバイス固定情報テーブル６から昇順でデバイスＩＤ Ｄiを選択する。
【０２７７】
ステップＳ２２１２において、寿命補正部１５は、選択された論理エクステントＩＤ ＥjとデバイスＩＤ Ｄiと評価関数とに基づいて、評価値Ｆを計算し、デバイスＩＤ Ｄiと評価値Ｆの組（デバイスＩＤ Ｄi，評価値Ｆ）を評価値リストＥＬに追加する。
【０２７８】
ステップＳ２２１３において、寿命補正部１５は、ステップＳ２２１１において、全てのデバイスＩＤが選択されたか否か判断する。
【０２７９】
全てのデバイスＩＤが選択されていない場合、処理はステップＳ２２１１に移動する。これにより、全デバイスの評価値Ｆが計算される。
【０２８０】
全てのデバイスＩＤが選択された場合、寿命補正部１５は、ステップＳ２２１４において、リストＣＬ内の全ての論理エクステントＩＤが選択されたか否か判断する。
【０２８１】
リストＣＬ内の全ての論理エクステントＩＤが選択されていない場合、処理はステップＳ２２１０に移動する。これにより、リストＣＬ内の全ての論理エクステントＩＤが選択されるまでステップＳ２２１０〜Ｓ２２１４までが繰り返される。
【０２８２】
図２２におけるステップＳ２２１５〜Ｓ２２２１は、寿命補正部１５によって実行される論理エクステント単位の再配置先選択処理及び再配置処理に相当する。
【０２８３】
ステップＳ２２１５において、寿命補正部１５は、デバイス固有情報テーブル６から、昇順でデバイスＤiを選択する。
【０２８４】
ステップＳ２２１６において、寿命補正部１５は、デバイスＩＤ Ｄiに対するオーバープロビジョニングの設定変更処理を行う。設定変更処理の入力値となる論理容量は、デバイスＩＤ Ｄiで示されるデバイスに再配置される論理エクステント分の容量である。すなわち、設定変更の入力値となる論理容量は、例えば、今の論理容量と、評価値リストＥＬ内のデバイスＩＤ Ｄiを含む組の個数×エクステントサイズ分の容量との和である。
【０２８５】
ステップＳ２２１７において、寿命補正部１５は、ステップＳ２２１５において、全てのデバイスＩＤが選択されたか否か判断する。
【０２８６】
全てのデバイスＩＤが選択されていない場合、処理はステップＳ２２１５に移動する。これにより、全デバイスに対してステップＳ２２１６の処理が実行される。
【０２８７】
全てのデバイスＩＤが選択された場合、ステップＳ２２１８において、寿命補正部１５は、評価値リストＥＬを評価値Ｆの降順にソートする。
【０２８８】
ステップＳ２２１９において、寿命補正部１５は、評価値リストＥＬ内で評価値Ｆが最大の論理エクステントＩＤ ＥjとデバイスＩＤ Ｄiを選択する。
【０２８９】
ステップＳ２２２０において、寿命補正部１５は、選択された論理エクステントＩＤ Ｅjを、選択されたデバイスＩＤ Ｄiで示されるデバイスに再配置する。
【０２９０】
ステップＳ２２２１において、寿命補正部１５は、上記ステップＳ２２１９において、リストＥＬ内から全ての論理エクステントＩＤとデバイスＩＤとが選択されたか否か判断する。
【０２９１】
リストＥＬ内から全ての論理エクステントＩＤとデバイスＩＤとが選択されていない場合、処理はステップＳ２２１９に移動する。すなわち、リストＥＬから全ての論理エクステントＩＤとデバイスＩＤとが選択されるまでステップＳ２２１９〜ステップＳ２２２１が繰り返される。
【０２９２】
リストＥＬ内から全ての論理エクステントＩＤとデバイスＩＤとが選択された場合、ステップＳ２２２２において、設定変更部１６は、オーバープロビジョニングの設定評価処理を実行し、全デバイスＤ0〜ＤN-1のオーバープロビジョニングの設定を適切な値に変更する。
【０２９３】
例えば、上記図２１の処理では、論理エクステントの再配置時に、評価値Ｆが大きいデバイスの残り容量が不足し、評価値Ｆが大きいデバイスが再配置先とならない場合がある。すると、例えば残り寿命が多いので再配置先としたいデバイスであっても、容量不足のため再配置先として選択されない場合がある。しかしながら、上記図２２の処理では、各デバイスに、再配置される論理エクステント分の論理容量を予め確保することにより、容量不足によって評価値Ｆが大きいデバイスに再配置されないことを防止することができる。
【０２９４】
ここで、図２３乃至図２７を用いて寿命補正処理の具体例を説明する。寿命補正処理前の各テーブルのレコードは、例えば、上述の図１６乃至図１８、図２０と同様である。
【０２９５】
ステップＳ２１０１において、寿命補正部１５は、再配置候補のリストＣＬを初期化する。
【０２９６】
ステップＳ２１０２〜Ｓ２１０４において、寿命補正部１５は、デバイスＩＤ Ｄiごとに、デバイスＩＤ Ｄiに対応する論理エクステントＩＤ Ｅjをソートする。
【０２９７】
ステップＳ２１０５において、寿命補正部１５は、デバイスＩＤ Ｄiごとに、論理エクステントの書き込み量の総和である累積書き込み量ＡＷを計算する。
【０２９８】
図２３は、デバイスＩＤごとの累積書き込み量を例示する図である。
【０２９９】
この図２３では、デバイスＩＤ Ｄ1で示されるデバイスが、保証書き込み量より累積書き込み量が多い。したがって、このデバイスＩＤ Ｄ1に対する処理は、ステップＳ２１０６からステップＳ２１０７へ移動し、寿命補正部１５は、候補リストＣＬに、デバイスＩＤ Ｄ1に対応付けられている論理エクステントのうち、最大の書き込み量に対応する論理エクステントＩＤを追加する。
【０３００】
寿命補正部１５は、再びステップＳ２１０５で累積書き込み量を計算する。この場合、ステップＳ２１０６において、累積書き込み量ＡＷが保証書き込み量を下回るため、処理はステップＳ２１０８に移動する。同様の処理が全てのデバイスＩＤに対して実行される。この図２３の例では、リストＣＬは論理エクステントＩＤ Ｅ2のみを含む。この例では、リストＣＬ内に１つの論理エクステントＩＤしか含まれないため、ステップＳ２１０９におけるソートは必要ない。ステップＳ２１１０において、寿命補正部１５は、論理エクステントＩＤ Ｅ2を選択する。
【０３０１】
ステップＳ２１１２〜Ｓ２１１４のループで、寿命補正部１５は、各デバイスＩＤに対応する評価値Ｆを、再配置先評価処理によって計算する。
【０３０２】
図２４は、デバイスＩＤごとの評価値Ｆを例示する図である。この図２４において、評価値Ｆが最大なのはデバイスＩＤ Ｄ3である。
【０３０３】
図２５は、再配置後の論理エクステント情報テーブル８の一例を示すデータ構造図である。
【０３０４】
寿命補正部１５は、ステップＳ２１１５で、デバイスＩＤ Ｄ3を選択し、ステップＳ２１１６において、論理エクステントＩＤ Ｅ2で示される論理エクステントを、デバイスＩＤ Ｄ3で示されるデバイス内の、物理エクステントＩＤ Ｐ5で示される物理エクステントに再配置する。
【０３０５】
図２６は、再配置後のデバイス固有情報テーブル６の一例を示すデータ構造図である。寿命補正部１５は、デバイス固有情報テーブル６のうち、デバイスＩＤ Ｄ1に対応する現在使用容量を減少させる。また、寿命補正部１５は、デバイス固有情報テーブル６のうち、デバイスＩＤ Ｄ3に対応する現在使用容量を増加させ、残り書き込み量を増加させ、更新量を増加させる。
【０３０６】
寿命補正部１５は、ステップＳ２１１８において、オーバープロビジョニングの設定評価処理を実行し、全デバイスＤ0〜ＤN-1のオーバープロビジョニングの設定を変更する。
【０３０７】
図２７は、オーバープロビジョニングの設定評価処理によって得られる評価結果の例を示す図である。
【０３０８】
評価結果は、デバイスＩＤ Ｄ1〜Ｄ3ごとに、性能値Ｖ1、平準化後保証書き込み量ＥＷ、累積書き込み量ＡＷ、寿命値Ｖ2、容量値Ｖ3、追記率ＡＲ、追記値Ｖ4、評価値Ｆ、容量増加量又は容量減少量Ｖ、計算前論理容量、計算後論理容量、計算後論理容量と計算前論理容量との差分を含む。
【０３０９】
計算前論理容量は、各デバイスの元の論理容量である。計算後論理容量は、オーバープロビジョニング設定の変更後の論理容量である。この図２７の評価結果においては、書き込みの多いデバイスＩＤ Ｄ1は、あまり論理容量が増えず、アロケート書き込みされにくくなる。
【０３１０】
図２８は、本実施形態に係る寿命補正部１５の再配置処理の一例を示すフローチャートである。再配置処理において、寿命補正部１５は、論理エクステントＩＤ Ｅjと再配置先のデバイスＩＤ Ｄiとを入力し、エクステントを再配置する。
【０３１１】
図２８において、ステップＳ２８０１〜Ｓ２８０６は、再配置前の元のデバイスからのデータの読み出し処理と配置先のデバイスへの書き込み処理に相当する。
【０３１２】
ステップＳ２８０１において、寿命補正部１５は、論理エクステント情報テーブル８を参照し、論理エクステントＩＤ Ｅjに対応する物理エクステントＩＤ Ｐkを選択する。
【０３１３】
ステップＳ２８０２において、寿命補正部１５は、物理エクステント情報テーブル９を参照し、物理エクステントＩＤ Ｐkに対応する元のデバイスのデバイスＩＤを選択する。
【０３１４】
ステップＳ２８０３において、寿命補正部１５は、物理エクステントＩＤ Ｐkで示される物理エクステントからデータを読み出し、バッファメモリに格納する。
【０３１５】
ステップＳ２８０４において、寿命補正部１５は、物理エクステント情報テーブル９を参照し、配置先のデバイスＩＤ Ｄiに対応し、かつ、空き情報が「空き」を示す任意の再配置先の物理エクステントＩＤを選択する。
【０３１６】
ステップＳ２８０５において、寿命補正部１５は、選択された再配置先の物理エクステントＩＤで示される物理エクステントへ、バッファメモリに格納されているデータを書き込む。
【０３１７】
ステップＳ２８０６において、寿命補正部１５は、物理エクステントＩＤ Ｐkで示される物理エクステントのデータを消去する。元のデバイスがＳＡＴＡ（Serial ATA）に準拠している場合には、trimコマンドを用いてデータが消去される。元のデバイスがＳＡＳ（Serial Attached SCSI）に準拠している場合には、unmapコマンドを用いてデータが消去される。
【０３１８】
図２８において、ステップＳ２８０７〜Ｓ２８０９は、テーブル更新処理に相当する。このステップＳ２８０７〜Ｓ２８０９の実行順序は、自由に変更可能であり、並列に実行されてもよい。
【０３１９】
ステップＳ２８０７において、寿命補正部１５は、論理エクステント情報テーブル８を参照し、論理エクステントＩＤ Ｅjに対応する所属デバイスＩＤを再配置先のデバイスを示すデバイスＩＤに変更し、論理エクステントＩＤ Ｅjに対応する物理エクステントＩＤを再配置先の物理エクステントを示す物理エクステントＩＤに変更する。
【０３２０】
ステップＳ２８０８において、寿命補正部１５は、物理エクステント情報テーブル９を参照し、再配置前の元の物理エクステントＩＤ Ｐkに対応する空き情報を「空き」に変更し、再配置先の物理エクステントＩＤに対応する空き情報を「使用」に変更する。
【０３２１】
ステップＳ２８０９において、寿命補正部１５は、デバイス固有情報テーブル６を参照し、元のデバイスを示すデバイスＩＤに対応する現在使用容量をエクステントサイズ分減少し、配置先のデバイスＩＤ Ｄiに対応する現在使用容量をエクステントサイズ分増加し、配置先のデバイスＩＤ Ｄiの残り書き込み量をエクステントサイズ分減少する。
【０３２２】
図２９は、本実施形態に係る寿命補正部１５の再配置先評価処理の一例を示すフローチャートである。
【０３２３】
寿命補正部１５の再配置先評価処理は、寿命補正部１５のアロケート書き込み先評価処理と類似する。
【０３２４】
ステップＳ２９０１において、寿命補正部１５は、性能値Ｖ1＝Ｗ1×（デバイスＤiの性能仕様−デバイスＤiの最大負荷)／デバイスＤiの性能仕様、を計算する。このステップＳ２９０１は、デバイスＤiの最大負荷を用いる点で、デバイスＤiのＩＯＰＳを用いるアロケート書き込み先評価処理のステップＳ１５０１と相違している。
【０３２５】
ステップＳ２９０２において、寿命補正部１５は、上記アロケート書き込み先評価処理のステップＳ１５０１と同様に、寿命値Ｖ2を計算する。
【０３２６】
ステップＳ２９０３において、寿命補正部１５は、容量値Ｖ3＝Ｗ3×（デバイスＤiの最大容量−デバイスＤiの現在使用容量−エクステントサイズ)／デバイスＤiの論理容量、を計算する。上記アロケート書き込み先評価処理のステップＳ１５０３において、デバイスＤiの論理容量を用いていた部分が、このステップＳ２９０３では、デバイスＤiの最大容量を用いている。アロケート書き込み先評価処理では、現在の論理容量を超えて論理エクステントをデバイスに新たに配置することができないため、デバイスＤiの論理容量とデバイスＤiの現在使用容量が等しい場合は評価値をゼロとしている。一方、寿命補正処理では、デバイスＤiの論理容量をオーバープロビジョニングの設定変更により後から増加可能であるため、デバイスＤiの論理容量を超えて論理エクステントを再配置することが可能である。ただし、最大容量を超えた再配置はできない。
【０３２７】
ステップＳ２９０４において、寿命補正部１５は、追記値Ｖ4を計算する。
【０３２８】
ステップＳ２９０５において、寿命補正部１５は、評価関数Ｆ＝Ｖ1＋Ｖ2＋Ｖ3＋Ｖ4に基づいて、評価値Ｆを計算し、評価値Ｆを返す。
【０３２９】
このような再配置先評価処理を実行することにより、アロケート書き込み先評価処理とほぼ同様の効果を得ることができる。
【０３３０】
図３０は、本実施形態に係る設定変更部１６によって実行されるオーバープロビジョニングの設定変更処理の一例を示すフローチャートである。
【０３３１】
設定変更部１６は、デバイスＩＤ Ｄiと論理容量ＬＶとを入力する。
【０３３２】
ステップＳ３００１において、設定変更部１６は、デバイスＤiへオーバープロビジョニングの設定変更をＳＣＳＩコマンドなどで指示し、デバイスＤiで示されるデバイスの論理容量をＬＶの値に変更する。
【０３３３】
ステップＳ３００２において、設定変更部１６は、デバイスＤiで示されるデバイスの論理容量が増加するか否か判断する。
【０３３４】
デバイスＤiの論理容量が増加する場合、処理はステップＳ３００３に移動し、デバイスＤiの論理容量が増加しない場合、処理はステップＳ３００４に移動する。
【０３３５】
ステップＳ３００３において、設定変更部１６は、物理エクステント情報テーブル９を参照し、容量増加量Ｖ＝ＬＶ−現在のデバイスＤiの論理容量を計算する。設定変更部１６は、デバイス固有情報テーブル６を参照し、デバイスＤiの論理容量を得る。設定変更部１６は、（容量増加量Ｖ／エクステントサイズ）個の、空き情報が「非使用領域」となっている物理エクステント群を物理エクステントＩＤの昇順に選択する。設定変更部１６は、空き情報が「非使用領域」となっている物理エクステント群の空き情報を「空き」に設定する。
【０３３６】
ステップＳ３００４において、設定変更部１６は、物理エクステント情報テーブル９を参照し、容量減少量Ｖ＝現在のデバイスＤiの論理容量−論理容量ＬＶを計算する。設定変更部１６は、デバイス固有情報テーブル６を参照し、デバイスＤiの論理容量を得る。設定変更部１６は、（Ｖ／エクステントサイズ)個の、空き情報が「空き」となっている物理エクステント群を物理エクステントＩＤの昇順に選択する。設定変更部１６は、空き情報が「空き」となっている物理エクステント群の空き情報を「未使用領域」に設定する。
【０３３７】
ステップＳ３００５において、設定変更部１６は、デバイス固有情報テーブル６を参照し、デバイスＩＤ Ｄiに対応する論理容量を、論理容量ＬＶに変更する。
【０３３８】
図３１は、本実施形態に係る設定変更部１６によって実行されるオーバープロビジョニングの設定評価処理（余剰容量評価処理）の一例を示すフローチャートである。
【０３３９】
オーバープロビジョニングの設定評価処理は、上記図２１のステップＳ２１１９及び上記図２２のステップＳ２２２２などで実行される。
【０３４０】
設定評価処理は、エクステントを再配置した後に、寿命が平準化されるように各デバイスの論理容量を設定する。
【０３４１】
ステップＳ３１０１において、設定変更部１６は、オーバープロビジョニングの設定を変更する対象のデバイスを示すデバイスＩＤ Ｄiを選択する。
【０３４２】
ステップＳ３１０２において、設定変更部１６は、デバイスＩＤ Ｄiの最大容量の特定の割合（例えば１０％）を基準余剰容量として計算する。設定変更部１６は、論理容量ＬＶ＝デバイスＤiの現在使用容量＋基準余剰容量＋デバイスＤiの追記量×１．２、を計算する。ここで、追記量を１．２倍しているのは、追記量が現状から２０％上昇しても余裕のある論理容量ＬＶを計算するためである。論理容量ＬＶは、最大容量を超えない範囲とする。この論理容量ＬＶの計算式では、基準余剰容量を加えることで、容量不足となることを防止する。また、論理容量ＬＶの計算式では、追記量を加えることで、寿命補正処理後に、同程度のアロケート書き込みが発生しても容量不足になることを防止する。
【０３４３】
Ｓ３１０３において、設定変更部１６は、デバイスＩＤ Ｄiと論理容量ＬＶとに基づいて、上記図３０で説明されたオーバープロビジョニングの設定変更処理を行う。
【０３４４】
Ｓ３１０４において、設定変更部１６は、全てのデバイスのオーバープロビジョニングの設定が実行されたか否か判断する。
【０３４５】
全てのデバイスのオーバープロビジョニングの設定が実行されていない場合、すなわち、全てのデバイスの再配置が完了していない場合、処理はステップＳ３１０１に移動し、上記の処理を繰り返す。
【０３４６】
全てのデバイスのオーバープロビジョニングの設定が実行された場合、処理は終了する。
【０３４７】
このように、設定評価処理は、アロケート書き込み量（追記量）の多いデバイスの論理容量を上げ、これによりアロケート書き込み量の多いデバイスが容量不足のためにアロケート書き込み先に選択されないことを防止することができる。
【０３４８】
以上説明した本実施形態においては、個々のデバイスＤ0〜ＤN-1に対して、評価値Ｆに基づいてアロケート書き込み及び再配置、オーバープロビジョニングの設定を行い、ストレージ装置３におけるデバイスＤ0〜ＤN-1の寿命、容量、性能を平準化することができる。
【０３４９】
本実施形態においては、アロケート書き込み先の選択により、残り寿命の少ないデバイス、単位時間の書き込み量が保証書き込み量に近いデバイスに対して、アロケート書き込みが発生することを抑制することができ、デバイスＤ0〜ＤN-1の寿命を長くすることができる。
【０３５０】
本実施形態においては、書き込み量の多いエクステントを、評価関数を用いて残り寿命が大きいデバイス、書き込み量が少ないデバイスに再配置することができ、寿命の少ないデバイスに対する将来的な書き込み量を抑えることができる。
【０３５１】
本実施形態においては、未使用のデバイスの追加又は故障したデバイスの交換によりストレージ装置３内のデバイスの寿命が不均等になった場合であっても、アロケート書き込み先評価処理、再配置先評価処理、オーバープロビジョニングの設定評価処理により、寿命の短いデバイスへの書き込みを抑制し、寿命の長いデバイスへの書き込みを増加させ、ストレージ装置３全体で寿命を平準化することができる。
【０３５２】
本実施形態においては、アロケート書き込み先評価処理、再配置先評価処理、オーバープロビジョニングの設定評価処理により、負荷が高いデバイスへのアロケート書き込みを減らし、負荷の少ないデバイスのアロケート書き込みを増やし、ストレージ装置３全体で性能平準化を行うことができる。新規データの書き込みがある場合、新規データに対しては短期間に読み出し又は書き込みが発生しやすい傾向がある。本実施形態では、負荷が高いデバイスへの新規データの書き込みを減らすことができ、これにより負荷が高いデバイスに対する書き込み及び読み出しを抑制することができる。
【０３５３】
本実施形態においては、評価値Ｆに基づいてデータの再配置が実行される。これにより、本実施形態においては、高負荷のデバイス、過剰に書き込まれているデバイス、残り寿命の短いデバイスへの将来的な負荷、書き込みを減らすことができ、これとは逆に、低負荷のデバイス、書き込みの少ないデバイス、残り寿命に余裕のあるデバイスに対する書き込みを増やすことができ、性能平準化及び寿命平準化を行うことができる。
【０３５４】
本実施形態においては、デバイスの論理容量が変更される。例えば、一度も書き込みのされていない領域に対する書き込みを新規書き込みとする。本実施形態においては、高負荷のデバイス、過剰に書き込まれているデバイス、残り寿命の短いデバイスの論理容量を減らすことができ、評価値Ｆを下げることで新規書き込みを抑制することができる。これとは逆に、本実施形態においては、低負荷のデバイス、書き込みの少ないデバイス、残り寿命に余裕のあるデバイスの論理容量を上げることができ、評価値Ｆを上げ、新規書き込みを増やすことができる。このように、デバイスの論理容量の増減が評価値Ｆに影響を与え、性能平準化及び寿命平準化を実現することができる。
【０３５５】
本実施形態においては、新規書き込み時に評価値Ｆに基づいて書き込み先を選択することで、寿命平準化及び性能平準化を行うことができる。本実施形態では、例えば、書き込み量が多い場合に評価値を下げることで、基準値より過剰に書き込まれているデバイスに対する新規書き込みの割合を減らすことができる。これとは逆に、本実施形態では、書き込み量の少ないデバイスの評価値Ｆを上げ、新規書き込み先となる割合を増やし、ストレージ装置３の寿命平準化を行うことができる。同様に、本実施形態では、負荷が高いデバイスの評価値Ｆを下げ、新規書き込み先としないことで、負荷が高いデバイスに対する新規書き込みを減らし、反対に、負荷の少ないデバイスの評価値Ｆを上げ、新規書き込み先となる割合を増やすことで、デバイスの性能平準化を行うことができる。
【０３５６】
［第２の実施形態］
本実施形態においては、上記第１の実施形態の変形例について説明する。本実施形態においては、例えば、アロケート書き込み先評価処理、再配置先評価処理、オーバープロビジョニングの設定評価処理などの各種の評価処理で用いられるパラメータを変更可能とする。本実施形態では、ホスト装置２１〜２３からの指示にしたがって、評価関数に含まれているストレージ装置３のパラメータを調整可能とする。これにより、書き込み量の抑制より性能負荷の削減を重視する設定とすること、又は、性能負荷の削減より書き込み量の抑制を重視する設定とすること、など、重視する指標を調整することで、ストレージ装置３をユーザのポリシーにそって最適化可能である。
【０３５７】
本実施形態では、パラメータは、各種の評価処理で用いられる重みの場合を例として説明する。しかしながら、パラメータは、例えば、重みではない他の数値でもよく、例えば評価関数に含まれている定数などでもよい。
【０３５８】
図３２は、本実施形態に係るメモリ制御装置５を含むストレージ装置３の一例を示すブロック図である。
【０３５９】
本実施形態において、プロセッサ５２は、メモリ５１に格納されている制御プログラムＣＰを実行し、ポリシー変更部１９としての機能を実行する。メモリ５１は、ポリシー情報テーブル２０を格納する。
【０３６０】
ポリシー変更部１９は、ホスト装置２１〜２３のいずれかからホストインタフェース４経由で受信したポリシー設定コマンドにしたがって、ポリシー情報テーブル２０を更新する。
【０３６１】
ポリシー情報テーブル２０は、各種の評価処理で用いられる重みとその値との組み合わせを管理する。
【０３６２】
図３３は、本実施形態に係るポリシー変更部１９の処理の一例を示すフローチャートである。
【０３６３】
ステップＳ３３０１において、ポリシー変更部１９は、ホスト装置２１〜２３のいずれかからホストインタフェース４経由で、新規のポリシー設定として、重みＷ1〜Ｗ4のうちの少なくとも１つを受信する。
【０３６４】
ステップＳ３３０２において、ポリシー変更部１９は、新規のポリシー設定に基づいて、ポリシー情報テーブル２０を更新する。
【０３６５】
ステップＳ３３０３において、ポリシー変更部１９は、ポリシー変更終了を示す応答を、ホストインタフェース４経由でホスト装置２１〜２３のいずれかへ送信する。
【０３６６】
図３４は、本実施形態に係るポリシー情報テーブル２０の一例を示すデータ構造図である。
【０３６７】
ポリシー情報テーブル２０では、評価処理に用いられる係数として重みＷ1〜Ｗ4が管理されており、重みＷ1〜Ｗ4のそれぞれに対してユーザによって設定された値が関連付けられている。
【０３６８】
以上説明した本実施形態においては、例えば、アロケート書き込み先評価処理、再配置先評価処理などの重みをユーザが自由にポリシーとして設定することができる。これにより、ユーザのニーズに応じて、性能、寿命、容量、追記量に基づいて行われる評価処理を最適化することができる。
【０３６９】
例えば、性能を重視する場合には、性能値Ｖ1に関わる重みＷ1の値を増やすことで、アロケート書き込みの集中を防ぎ、性能平準化を行うことができる。例えば、アロケート書き込み先評価処理において、重みＷ1の値を増加すると、性能負荷が少ないデバイスは評価値Ｆが上がり、アロケート書き込み先となりやすくなる。したがって、性能負荷の少ないデバイスへのアロケート書き込みの割合を増加させ、性能平準化を達成することができる。
【０３７０】
本実施形態の効果をより具体的に説明する。
【０３７１】
上記第１の実施形態では、各種の評価処理で用いられる重みＷ1〜Ｗ4は、評価項目の間で同じ値であり、定数としている。この場合、例えば、新規に追加されたデバイスは、残り寿命が大きいため、評価処理で計算される評価値が高まり、アロケート書き込み先として選択されやすくなる。この結果、新規に追加されたデバイスは、アロケート書き込みが集中し、性能劣化が生じる可能性がある。
【０３７２】
本実施形態では、例えば、デバイスが新規に追加された場合に、アロケート書き込み先評価処理の計算の性能値Ｖ1の重みＷ1を増やす。すると、重みＷ1の増加により、ストレージ装置３における性能が重視され、性能負荷の低いデバイスの評価値Ｆが上がり、アロケート書き込み先として選択されやすくなる。このように、重みＷ1を増加することにより、新規に追加されたデバイスに対するアロケート書き込みの集中を防ぐことができ、性能負荷の少ないデバイスに対するアロケート書き込みの割合を増加させることができ、デバイスＤ0〜ＤN-1の性能平準化を行うことができる。
【０３７３】
例えば、ユーザは残り寿命を重視したい場合に、寿命値Ｖ2に関する重みＷ2を増やすことで、寿命の少ないデバイスへのアロケート書き込みを減らすことができる。
【０３７４】
以上説明したように、重みＷ1〜Ｗ4の値を変えることで、ユーザのニーズに応じて、性能、寿命、容量、追記量の影響を最適化することができる。
【０３７５】
［第３の実施形態］
本実施形態においては、上記第１及び第２の実施形態の変形例である。上記第１及び第２の実施形態では、各デバイスＤ0〜ＤN-1が例えばＳＳＤ単体の場合について説明している。これに対して、本実施形態においては、複数のデバイスＤ0〜ＤN-1のそれぞれが複数のＲＡＩＤ（Redundant Arrays of Inexpensive Disks）グループ（ＲＡＩＤデバイス）である場合について説明する。本実施形態に係るメモリ制御装置５は、ＲＡＩＤグループ上の記憶領域（物理領域）を、エクステント（物理エクステント）単位で管理する。ストレージ装置３は、ホスト装置２１〜２３に対して、複数のＲＡＩＤグループの記憶領域を、複数の論理ディスクＬＤ0〜ＬＤN-1として提供する。
【０３７６】
上記第１及び第２の実施形態のストレージ装置３は、ＲＡＩＤ０に相当する。冗長化の考慮されてないＲＡＩＤ０に代えて、本実施形態では、冗長化を考慮したＲＡＩＤ１〜ＲＡＩＤ５に相当するストレージ装置３を説明する。
【０３７７】
図３５は、本実施形態に係るメモリ制御装置５を含むストレージ装置３の一例を示すブロック図である。
【０３７８】
本実施形態において、プロセッサ５２は、メモリ５１に格納されている制御プログラムＣＰを実行し、ＲＡＩＤ処理部２４としての機能を実行する。メモリ５１は、ＲＡＩＤグループ情報テーブル２５と、ＳＳＤ固有情報テーブル２６とを格納する。
【０３７９】
本実施形態において、デバイスＤ0〜ＤN-1は、例えば、それぞれ、ＲＡＩＤグループであり、複数のＳＳＤを含む。
【０３８０】
デバイスＤ0〜ＤN-1に備えられている複数のＳＳＤに対しては、オーバープロビジョニングの設定の変更を運用後からでも可能である。
【０３８１】
デバイスＤ0〜ＤN-1のＲＡＩＤレベルは、ストレージ装置３内ですべて同一とする。本実施形態は、各種のＲＡＩＤレベルに適用可能であるが、ＲＡＩＤ１の場合を例に説明する。
【０３８２】
本実施形態において、デバイスＭＤ0〜ＭＤN-1のそれぞれに備えられるＳＳＤの個数は、異なってもよい。ＲＡＩＤのストライプサイズは、例えば、２５６Kbyte又は５１２Kbyteでもよい。
【０３８３】
本実施形態において、デバイスＤ0〜ＤN-1内のＳＳＤは、同一のオーバープロビジョニングの設定を持つとする。ＲＡＩＤ０又はＲＡＩＤ５などでは、ＳＳＤへの書き込みは、デバイスＤ0〜ＤN-1内のＳＳＤ間でほぼ均一である。このため、デバイスＤ0〜ＤN-1内の各ＳＳＤの残り書き込み量も、同程度と仮定する。また、ストレージ装置３は、デバイスＤ0〜ＤN-1に加えて、例えばホットスペア用のＳＳＤなどのような、１以上の予備のメモリ装置２７を備える。
【０３８４】
上記第１及び第２の実施形態においては、個々のＳＳＤがデバイスＤ0〜ＤN-1に相当し、個々のデバイスＤ0〜ＤN-1に対して読み出し処理、書き込み処理、寿命補正処理を実行している。これに対して、本実施形態においては、ＲＡＩＤグループ単位の個々のデバイスＤ0〜ＤN-1を仮想デバイスとして同様の処理を行う。
【０３８５】
ＲＡＩＤ処理部２４は、ストレージ装置３でＲＡＩＤを適用する場合に、ＲＡＩＤグループ情報テーブル２５及びＳＳＤ固有情報テーブル２６に設定値を格納する。例えば、ＲＡＩＤ処理部２４は、ＲＡＩＤグループ情報テーブル２５及びＳＳＤ固有情報テーブル２６の初期化を行い、また、ＲＡＩＤグループ情報テーブル２５及びＳＳＤ固有情報テーブル２６への情報の登録及び更新を行う。
【０３８６】
ＲＡＩＤグループ情報テーブル２５は、各デバイスＤ0〜ＤN-1に所属するＳＳＤを管理する。
【０３８７】
ＳＳＤ固有情報テーブル２６は、各デバイスＤ0〜ＤN-1に所属するＳＳＤの個々の情報を管理する。
【０３８８】
図３６は、本実施形態に係るＲＡＩＤグループ情報テーブル２５の一例を示すデータ構造図である。
【０３８９】
ＲＡＩＤグループ情報テーブル２５は、デバイスＩＤ、ＲＡＩＤレベル、所属ＳＳＤ ＩＤを互いに関連付けて格納する。ＲＡＩＤグループ情報テーブル２５には、ストレージ装置３内の全てのデバイスＤ0〜ＤN-1に対する情報がエントリされる。
【０３９０】
デバイスＩＤは、上記のデバイス固有情報テーブル６におけるデバイスＩＤと同一である。
【０３９１】
ＲＡＩＤレベルは、ストレージ装置３におけるＲＡＩＤレベルを表す。このＲＡＩＤレベルは、ストレージ装置３で既に実行しているＲＡＩＤ設定を参照して設定されてもよい。
【０３９２】
所属ＳＳＤ ＩＤは、デバイスＤ0〜ＤN-1内に含まれるＳＳＤを示すＩＤである。
【０３９３】
図３７は、本実施形態に係るＳＳＤ固有情報テーブル２６の一例を示すデータ構造図である。
【０３９４】
ＳＳＤ固有情報テーブル２６には、ストレージ装置３内の全てのＳＳＤの情報がエントリされている。
【０３９５】
この図３７では、ＳＳＤデバイスＩＤに対して、最大容量、論理容量、現在使用容量、残り書き込み量、保証書き込み量が関連付けられている。
【０３９６】
図３８は、本実施形態に係るＲＡＩＤ処理部２４の処理の一例を示すフローチャートである。
【０３９７】
ＲＡＩＤ処理部２４は、ストレージ装置３へ追加されたＲＡＩＤグループに関する各テーブルの初期化を行う。この図３８において、各ＳＳＤとＲＡＩＤグループとの関連付けは終わっているとする。
【０３９８】
ステップＳ３８０１において、ＲＡＩＤ処理部２４は、ストレージ装置３内の全てのＳＳＤの設定が完了したか否か判断する。
【０３９９】
ストレージ装置３内の全てのＳＳＤの設定が完了した場合、処理はステップＳ３８０４に移動する。
【０４００】
ストレージ装置３内の全てのＳＳＤの設定が完了していない場合、ステップＳ３８０２において、ＲＡＩＤ処理部２４は、未設定のＳＳＤを選択する
ステップＳ３８０３において、ＲＡＩＤ処理部２４は、ＳＳＤ固有情報テーブル２６に対して、選択されたＳＳＤに対応するレコードを生成する。その後、処理はステップＳ３８０１に移動する。
【０４０１】
ステップＳ３８０４において、ＲＡＩＤ処理部２４は、ストレージ装置３内の全てのＲＡＩＤグループ、すなわちデバイスＤ0〜ＤN-1の設定が完了したか否か判断する。
【０４０２】
ストレージ装置３内の全てのＲＡＩＤグループの設定が完了した場合、処理はステップＳ３８０７に移動する。
【０４０３】
ストレージ装置３内の全てのＲＡＩＤグループの設定が完了していない場合、ステップＳ３８０５において、ＲＡＩＤ処理部２４は、未設定のＲＡＩＤグループを選択する。
【０４０４】
ステップＳ３８０６において、ＲＡＩＤ処理部２４は、ＲＡＩＤグループ情報テーブル２５に対して、選択されたＲＡＩＤグループに対応するレコードを生成する。
【０４０５】
ＲＡＩＤグループ情報テーブル２５のレコード生成において、各種のＩＤは、ＲＡＩＤグループ情報テーブル２５内で一意な情報とする。
【０４０６】
ＲＡＩＤレベルとしては、ストレージ装置３のＲＡＩＤ構成情報を参照して得られた設定が設定される。
【０４０７】
所属ＳＳＤデバイスＩＤには、ＲＡＩＤ構成情報に含まれるＳＳＤデバイスＩＤが設定される。
【０４０８】
選択されたＲＡＩＤグループに対応するレコードの生成後、処理はステップＳ３８０４に移動する。
【０４０９】
ステップＳ３８０７において、ＲＡＩＤ処理部２４は、ストレージ装置３内の全てのＲＡＩＤグループに関するレコード追加処理が完了したか否か判断する。
【０４１０】
ストレージ装置３内の全てのＲＡＩＤグループに関するレコード追加処理が完了した場合、処理は終了する。
【０４１１】
ストレージ装置３内の全てのＲＡＩＤグループに関するレコード追加処理が完了していない場合、ステップＳ３８０８において、ＲＡＩＤ処理部２４は、レコード追加処理を未実行のＲＡＩＤグループを選択する。
【０４１２】
ステップＳ３８０９において、ＲＡＩＤ処理部２４は、デバイス固有情報テーブル６に対して、選択されたＲＡＩＤグループに対応するレコード追加処理を実行する。
【０４１３】
例えば、ＲＡＩＤ処理部２４は、デバイス固有情報テーブル６におけるデバイスＩＤとして、ＲＡＩＤグループ情報テーブル２５のデバイスＩＤを設定する。
【０４１４】
例えば、ＲＡＩＤ処理部２４は、デバイス固有情報テーブル６における最大容量及び論理容量として、ＲＡＩＤレベルによって異なる値を設定する。例えば、ＲＡＩＤレベルがＲＡＩＤ１の場合、ＲＡＩＤ処理部２４は、ＲＡＩＤグループに所属するＳＳＤのうちのいずれかの値を設定する。例えば、ＲＡＩＤレベルがＲＡＩＤ０の場合、ＲＡＩＤ処理部２４は、最大容量に対して、各ＳＳＤの最大容量の合計を設定する。論理容量も同様に、ＲＡＩＤレベルに応じて、異なる値が設定される。
【０４１５】
例えば、ＲＡＩＤ処理部２４は、デバイス固有情報テーブル６における保証書き込み量、性能仕様として、ＲＡＩＤグループに所属するＳＳＤのいずれかの値を設定する。
【０４１６】
例えば、ＲＡＩＤ処理部２４は、デバイス固有情報テーブル６における現在使用容量、読み出し量、更新量、追記量、最大負荷をゼロで初期化する。
【０４１７】
レコード追加処理の実行後、処理はステップＳ３８０７に移動する。
【０４１８】
以上説明した本実施形態では、デバイスＤ0〜ＤN-1がＲＡＩＤグループとして機能する場合に、デバイスＤ0〜ＤN-1のそれぞれを、１つの仮想的なデバイスとして扱うことができ、上記第１及び第２の実施形態と同様の効果を得ることができる。すなわち、本実施形態においては、ストレージ装置３が備える複数台のディスクアレイの間で、性能平準化及び寿命平準化を実現することができる。
【０４１９】
［第４の実施形態］
本実施形態においては、上記第１乃至第３の実施形態に係るストレージ装置３と、比較例のストレージ装置とを対比し、上記第１乃至第３の実施形態に係るストレージ装置３の有効性を説明する。
【０４２０】
比較例のストレージ装置は、ＳＳＤ内のフラッシュメモリの寿命劣化を防ぐため、書き込み寿命の異なる複数台のＳＳＤを備え、データの書き込み先となるＳＳＤを選択することにより、フラッシュメモリの寿命劣化を防ぐ。書き込み寿命とは、ベンダの保証するＳＳＤの書き込み総量から現在までに書き込まれた量を引いた残りである。比較例のストレージ装置では、１ビットあたりの単価が高いが、書き込み寿命の長いＳＬＣ（Single Level Cell）を備えるＳＳＤと、１ビットあたりの単価は低いが、書き込み寿命の短いＭＬＣ（Multi Level Cell）を備えるＳＳＤとの間で、書き込み量の多いデータをＳＬＣのＳＳＤへ書き込み、書き込み量の少ないデータをＭＬＣのＳＳＤへ書き込む。この比較例のストレージ装置では、比較例のストレージ装置のワークロード、すなわち、比較例のストレージ装置に対する書き込み量とユーザの使用容量を予め想定し、ワークロードに対して適切な寿命と容量になるようにＳＬＣのＳＳＤ及びＭＬＣのＳＳＤの台数を決定する。
【０４２１】
ワークロードに対して比較例のストレージ装置の寿命と容量とを適切にするために、以下のような検討がなされる。
【０４２２】
ＳＬＣのＳＳＤの容量をＳsとする。ＭＬＣのＳＳＤの容量をＳmとする。ＳＬＣのＳＳＤの書き込み寿命をＷsとする。ＭＬＣのＳＳＤの書き込み寿命をＷmとする。ＳＬＣのＳＳＤの個数をＰsとする。ＭＬＣのＳＳＤの個数をＰmとする。
【０４２３】
比較例のストレージ装置で想定される使用可能な最大容量をＳt、想定される書き込み総量をＷtとする。
【０４２４】
比較例のストレージ装置は、以下の（１）式、（２）式を、使用期間中、常に満たすことが望まれる。
【０４２５】
Ｓm×Ｐm＋Ｓs×Ｐs＞Ｓt  …  （１）
Ｗm×Ｐm＋Ｗs×Ｐs＞Ｗt  …  （２）
（１）式が成り立たない場合は容量が不足していることを示す。（２）が成り立たない場合は書き込み寿命が不足していることを示す。
【０４２６】
比較例のストレージ装置は、上記（１）式及び（２）式を満たしつつ、当該比較例のストレージ装置内のＳＳＤのコスト合計が最小に成るように、ＳtとＷtとを事前に想定し、ＳＬＣのＳＳＤの個数ＰsとＭＬＣのＳＳＤの個数Ｐmとを決定する。
【０４２７】
しかしながら、比較例のストレージ装置では、当該比較例のストレージ装置に対するワークロードを運用する前から正確に把握することは困難である。また、運用後に、ワークロードは刻々と変化する。よって、想定しているワークロードに最適と思われる構成をしても、比較例のストレージ装置の運用後に、現在の書き込み量が想定した書き込み量から変化し、寿命劣化又は寿命過剰となる場合がある。より具体的には、実際のワークロードに対して、比較例のストレージ装置内にＳＳＤを必要以上に備えた場合、（２）式のＷtが想定より非常に小さく、書き込み寿命に達する前の運用終了自体は問題ないが、過剰にＳＳＤを用意したことになり、コストが高くなる場合がる。また、実際のワークロードに対して、比較例のストレージ装置内のＳＳＤの数が不足した場合、（２）式のＷtが想定より大きくなり、ベンダの保証する期間より前に書き込み寿命が尽きてしまい、運用途中でのＳＳＤの交換が必要となる場合がある。
【０４２８】
また、比較例のストレージ装置においては、容量について、（１）式で想定した場合よりもＳtが大きくなり、容量不足になる場合がある。また、比較例のストレージ装置においては、容量について、（１）式で想定した場合よりもＳtが小さくなり、容量過剰となる場合がある。
【０４２９】
これに対して、上記第１乃至第３の実施形態に係るストレージ装置３は、オーバープロビジョニングの設定を運用後に変更可能なデバイスＤ0〜ＤN-1を用いて、ワークロードに応じて、寿命、容量を最適化する。オーバープロビジョニングの効果として、書き込み不能な領域を変化させることで、デバイスＤ0〜ＤN-1の書き込み寿命を変化（増減）させることが可能である。上記第１乃至第３の実施形態では、オーバープロビジョニングの設定を運用後でも変更することが可能なデバイスＤ0〜ＤN-1を用い、オーバープロビジョニングで論理容量を適切に設定する。このため、実際のワークロードの変化に応じて、デバイスＤ0〜ＤN-1の書き込み量を適切化することができる。
【０４３０】
上記第１乃至第３の実施形態に係るストレージ装置３では、ストレージ装置３の運用中のワークロードの変化にそってオーバープロビジョニングの設定及びデータの配置が実行されるため、ワークロードに対してデバイスＤ0〜ＤN-1の寿命、容量を適切に設定することができる。
【０４３１】
上記第１乃至第３の実施形態に係るストレージ装置３は、運用中に、デバイスＤ0〜ＤN-1のうちのいずれかの故障、寿命、使用する容量の増加等の理由により、新しくデバイスを増設、交換してもよい。この場合であっても、上記第１乃至第３の実施形態に係るストレージ装置３では、ストレージ装置３内の各デバイスの書き込み寿命は、デバイス間で不均衡にならない。上記第１乃至第３の実施形態に係るストレージ装置３では、書き込み寿命に達しそうなデバイスに対する書き込みを削減し、書き込み寿命が十分あるデバイスに優先的に書き込みを行うことで、書き込み寿命に達しそうなデバイスの寿命低下を抑えることができる。その結果、デバイスの書き込み寿命が尽きることを防止することができる。
【０４３２】
上記第１乃至第３の実施形態によれば、論理ディスクを固定サイズの領域に分割し、所定サイズの領域単位で書き込み量を計測する。ストレージ装置３は、書き込み量及びデバイスＤ0〜ＤN-1の性能値Ｖ1、寿命値Ｖ2、容量値Ｖ3、追記値Ｖ4に基づいて評価値Ｆを計算し、まだデータの書き込まれていない所定サイズの領域に対するデータの書き込み時に、評価値Ｆに基づいて書き込み先デバイスを選択する。また、ストレージ装置３は、評価値Ｆに基づいてデバイスＤ0〜ＤN-1に対する各所定サイズの領域の再配置と、デバイスＤ0〜ＤN-1のオーバープロビジョニングの設定を行う。これにより、上記第１乃至第３の実施形態においては、ワークロードが変化した場合でも、ワークロードに応じて、デバイスＤ0〜ＤN-1の寿命、負荷、性能、容量を平準化することができる。
【０４３３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる
【符号の説明】
【０４３４】
１…ストレージシステム、２１〜２３…ホスト装置、４…ホストインタフェース部、５…メモリ制御装置、５１…メモリ、５２…プロセッサ、ＣＰ…制御プログラム、６…デバイス固定情報テーブル、７…論理ディスク情報テーブル、８…論理エクステント情報テーブル、９…物理エクステント情報テーブル、１０…デバイス構成部、１１…論理ディスク構成部、１２…読み出し部、１３…書き込み部、１４…アドレス範囲抽出部、１５…寿命補正部、１６…設定変更部、１７…コントローラ、１８…不揮発性メモリ、Ｄ0〜ＤN-1…デバイス、ＬＤ0〜ＬＤN-1…論理ディスク、ｌｅ９…論理エクステント、ｐｅ１…物理エクステント、１９…ポリシー変更部、２０…ポリシー情報テーブル、２４…ＲＡＩＤ処理部、２５…ＲＡＩＤグループ情報テーブル、２６…ＳＳＤ固有情報テーブル、２７…予備のメモリ装置。
【図１】
0006320439.tif 000002
【図２】
0006320439.tif 000003
【図３】
0006320439.tif 000004
【図４】
0006320439.tif 000005
【図５】
0006320439.tif 000006
【図６】
0006320439.tif 000007
【図７】
0006320439.tif 000008
【図８】
0006320439.tif 000009
【図９】
0006320439.tif 000010
【図１０】
0006320439.tif 000011
【図１１】
0006320439.tif 000012
【図１２】
0006320439.tif 000013
【図１３】
0006320439.tif 000014
【図１４】
0006320439.tif 000015
【図１５】
0006320439.tif 000016
【図１６】
0006320439.tif 000017
【図１７】
0006320439.tif 000018
【図１８】
0006320439.tif 000019
【図１９】
0006320439.tif 000020
【図２０】
0006320439.tif 000021
【図２１】
0006320439.tif 000022
【図２２】
0006320439.tif 000023
【図２３】
0006320439.tif 000024
【図２４】
0006320439.tif 000025
【図２５】
0006320439.tif 000026
【図２６】
0006320439.tif 000027
【図２７】
0006320439.tif 000028
【図２８】
0006320439.tif 000029
【図２９】
0006320439.tif 000030
【図３０】
0006320439.tif 000031
【図３１】
0006320439.tif 000032
【図３２】
0006320439.tif 000033
【図３３】
0006320439.tif 000034
【図３４】
0006320439.tif 000035
【図３５】
0006320439.tif 000036
【図３６】
0006320439.tif 000037
【図３７】
0006320439.tif 000038
【図３８】
0006320439.tif 000039