以下、図面を参照しながら本発明の一実施の形態を説明する。なお以下に説明する実施の形態は、本発明を実現するための一例であって、本発明の技術的範囲を限定するものではない。また各図において共通の構成については、同一の参照番号を付してその説明を省略する。また各図において複数の同一部材を図示する場合は、「201A」、「201B」のようにアルファベットを付して区別する一方で、総称して呼ぶ場合には「201」のようにアルファベットを省略する。さらに本発明の実施の形態は、汎用コンピュータ上で稼動するソフトウェアに実装してもよいし、専用ハードウェアに実装してもよい。またソフトウェアとハードウェアとの組み合わせに実装してもよい。以下の説明では、管理用の情報をテーブル形式で説明するが、管理用の情報は必ずしもテーブルによるデータ構造で表現されなくてもよく、「リスト」、「DB」、「キュー」などについて単に「情報」と呼ぶことがある。また「プログラム」を主語(動作主体)として本発明の実施の形態における各処理について説明する場合がある。プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部又は全部は専用ハードウェアで実現してもよく、またモジュール化されていてもよい。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
(1)第1の実施の形態
第1の実施の形態は、記憶装置として半導体メモリ(SSD)のみを搭載するストレージシステムにおいて、特性の異なる半導体メモリ間(例えばTLC−MLC間)でデータを再配置することにより、半導体メモリの長寿命化を実現するとともに、ビットコストを低減しようとするものである。さらには同一種別の半導体メモリ間(例えばTLC−TLC間)でデータを再配置することにより、負荷分散を実現して長寿命化を実現しようとするものである。
(1−1)計算機システムの全体構成
図1は、第1の実施の形態における計算機システム1の全体構成を示す。計算機システム1は、ホスト101、管理サーバ102、ネットワーク103及びストレージシステム104から構成される。ホスト101は、例えば一般的なサーバであり、ネットワーク103を介してストレージシステム104のポート105に接続される。ホスト101は、ストレージシステム104に対してリード要求又はライト要求を発行して、データの読み書きを実行する。
ネットワーク103は、例えばSAN(Storage Area Network)やイーサネット(登録商標)等の通信回線である。管理サーバ102は、ネットワーク103を介して、ストレージシステム104の保守I/F106又はポート105に接続される。ストレージ管理者は、管理サーバ102を操作して、ストレージシステム104を運用する上で必要な各種設定や管理を行う。
次にストレージシステム104の内部構成について説明する。ストレージシステム104は、ポート105、保守I/F106、プロセッサパッケージ107、キャッシュメモリ108、共有メモリ109、ドライブ111及びドライブ112等を備える。これらは内部ネットワーク110を介して互いに通信可能に接続される。
キャッシュメモリ108は、ストレージシステム104のI/O処理のスループットやレスポンスを向上させるために、データを一時的なキャッシュとして格納するための高速アクセス可能なメモリである。プロセッサパッケージ107は、ローカルメモリ113及びプロセッサ114を備えて構成される。なおここではプロセッサパッケージ107は、107A及び107Bの2つを図示しているが、数はこれに限定されない。
プロセッサ114は、ホスト101からのリード要求及びライト要求を処理するために、ドライブ111及び112と、キャッシュメモリ108との間のデータの転送処理を実行する。共有メモリ109は、プロセッサ114がリード要求又はライト要求を処理し、またストレージシステム104の機能(ボリュームのコピー機能など)を実行する上で必要な制御用の情報を格納するメモリである。共有メモリ109は、複数のプロセッサパッケージ107(ここでは107A及び107B)のプロセッサ114により共有される情報を格納する。
ローカルメモリ113は、プロセッサ114がリード要求又はライト要求を処理し、またストレージシステム104の機能を実行する上で必要な制御用の情報を格納するメモリである。ローカルメモリ113は、各プロセッサ114により占有される情報を格納する。ローカルメモリ113には、例えばプロセッサ114により実行するプログラムが格納される。
ドライブ111及び112は、複数の半導体メモリ(SSD:Solid State Drive)から構成される記憶装置である。ここでのドライブ111は、1つのセルに2ビットの情報を格納するMLC SSD(Multi Level Cell SSD)であり、ドライブ112は、1つのセルに3ビットの情報を格納するTLC(Triple Level Cell SSD)である。
MLC SSDと、TLC SSDとの違いは、上記の通りセル当たりの情報量が異なることに加えて、寿命(書き込み上限回数)及びビットコストが異なる。寿命は、一般にセル当たりの情報量が多くなるほど短くなる。よってMLC SSDの方がTLC SSDよりも長い。またビットコストは、単位面積当たりの情報量が多いほど低く抑えられるため、MLC SSDの方がTLC SSDよりも高い。
すなわちMLC SSDは、寿命が長くてビットコストが高く、TLC SSDは、寿命が短くてビットコストが低いと言える。なおここではMLC SSD及びTLC SSDを利用してドライブ111及び112を構成するとしているが、これに限らず、SLC SSD(Single Level Cell SSD)を利用するとしてもよい。
ドライブ111及び112について、以降は同一種別であって特性の異なる記憶装置であることを強調する場合にはドライブ111をMLC SSDと呼び、ドライブ112をTLC SSDと呼ぶ場合がある。また複数のMLC SSDから構成されるパリティグループをMLC PGと呼び、複数のTLC SSDから構成されるパリティグループをTLC PGと呼ぶ場合がある。
(1−2)ストレージシステムの論理構成
図2は、ストレージシステム104の論理構成を示す。プロセッサ114がホスト101に提供する仮想ボリューム202A及び202Bは、ホスト101から認識される論理的な記憶領域であり、ホスト101からのリード要求又はライト要求の発行対象となる記憶領域である。
プール204は、1個以上のプールボリューム206A〜206Eにより構成される。プールボリューム206A〜206Eは、それぞれMLC SSD又はTLC SSDの何れかの記憶領域から構成される。一又は複数のプールボリューム206A〜206Eにより、パリティグループ(PG:Parity Group)205A又は205Bが形成される。
なおここでのパリティグループ205Aは、MLC SSDのみで構成され、パリティグループ205BはTLC SSDのみで構成されているが、必ずしもこれに限らず、MLC SSD及びTLC SSDが混在して1つのパリティグループを構成するとしてもよい。プールボリューム206は、パリティグループ205の一部又は全部の領域が切り出されて使用される。
プロセッサ114は、例えばホスト101が仮想ボリューム202Aに対してライト要求を発行した場合、この仮想ボリューム202Aにおいてライト要求の対象となった仮想的な記憶領域に対し、未使用の実記憶領域をプール204から所定単位(ページ)で割り当てる。
なおページとは、データを書き込む際の最小単位の記憶領域である。ここでは仮想ボリューム202A又は202Bに対して割り当てられた仮想ページを201A〜201Eとして図示しており、これらのページ201A〜201Eに対して割り当てるプールボリューム206A〜206Eにおける実ページを207A〜207Fとして図示している。
次回ホスト101から同じページ201Aに対してリード要求又はライト要求が発行された場合、プロセッサ114は、既に割り当てられているプールボリューム206Aの記憶領域207Aに対してI/O処理を実行することにより、あたかもホスト101が仮想ボリューム202Aに対してI/O処理を実行しているように処理することができる。
すなわち仮想ボリューム202A又は202Bを用いて、使用する部分のみプールボリューム206A〜206Eの記憶領域(ページ)207A〜207Fを割り当てることにより、限られた記憶容量を効率的に使用することできる。
ここで、各仮想ボリューム202A又は202Bを構成するページ201毎に、ホスト101からの単位時間当たりの書き込み回数(これをライト頻度と呼ぶ)は異なる。よって例えばライト頻度が高いページ201Aは、特性として書き込み上限回数の多いMLC SSDで構成されたパリティグループ205Aに配置することで、TLC SSDのような書き込み上限回数の少ない記憶装置の寿命を延ばすことができる。
上記の再配置は、具体的にはページ207Cに格納されたデータを未使用のページ207Bにコピーし、仮想ボリューム202Aのページ201Cとプールボリューム206Bのページ207Cとの対応付けを仮想ボリューム202Aのページ201Cとプールボリューム206Aのページ207Bとの対応付けに変更することにより実行する。
(1−3)ページ配置処理の概念構成
図3は、TLC−MLC間で行われるページ再配置処理の概念構成を示す。ここではMLC SSDで構成されたパリティグループ(以下、MLC PGと呼ぶ)205Aと、TLC SSDで構成されたパリティグループ(以下、TLC PGと呼ぶ)205Bとの間で、ページ301を再配置する。ページ301の再配置先は、MLC PG205A及びTLC 205B上のページ301毎に採取しているモニタ情報に基づいて決定される。
具体的には、ページ301毎にライト回数を一定期間採取し、周期の満了後、モニタ情報に基づいて算出されたMLC PG205A及びTLC PG205B毎のライト頻度と、TLC−MLC間ライト閾値302とに基づいてページ301の再配置先を決定する。
図3では、TLC−MLC間ライト閾値302が2000以上のライト負荷のページ301をMLC PG205Aに再配置し(矢印303A)、2000未満のライト負荷のページ301をTLC PGに再配置する(矢印303B)。
このように寿命の異なるSSDで構成されたMLC PG205AとTLC PG205Bとの間で、ライト頻度の高いページを書き込み上限回数の多いSSDで構成されたMLC PG205Aに再配置し、ライト頻度の低いページを書き込み上限回数の少ないSSDで構成されたTLC PG205Bに再配置する。
この結果、書き込み上限回数の少ないSSDで構成されたTLC PG205Bにおけるライト回数を削減することができ、書き込み上限回数の少ないSSD(ここではTLC SSD)の寿命を延ばすことができる。
図4は、同一特性のドライブ間(TLC−TLC間又はMLC−MLC間)で行われるページ再配置処理の概念構成を示す。同一特性のドライブ間で行われるページ再配置処理は、書き込み上限回数が同程度であるSSDで構成されたパリティグループ間でのライト頻度を調整することを目的として行われる。
実際にはパリティグループ間のライト頻度を調整するライトリバランスと、ライトリバランスにより崩れたパリティグループ間のI/O頻度を調整する性能リバランスとの2種類のリバランス処理を行う。
ここではTLC PG間で行うライトリバランス及び性能リバランスについて説明する。まずライトリバランスでは、寿命を保証するために削減が必要なライト頻度(これをライト削減要求量と呼ぶ)又は寿命を保証することができる範囲内で追加可能なライト頻度(これをライト追加可能量と呼ぶ)をパリティグループ毎に算出する。
このときライト削減要求量が正の値のパリティグループをライト削減PG205Bとし、ライト追加可能量が正の値のパリティグループをライト追加PG205Cとする。そしてライト削減PG205Bのライト高負荷なページ401Aとライト追加PG205Cのライト低負荷なページ401Bとを互いに移動して(矢印403)、パリティグループ間のライト頻度を調整する。
ライトリバランスの際の移動対象となるページは、モニタ情報を元にした閾値に基づいて決定される。閾値には、ライト高負荷なページを決定する閾値(これをライト削減閾値呼ぶ)405と、ライト低負荷なページを決定する閾値(これをライト追加閾値と呼ぶ)406とがある。ライトリバランスの際、ライト削減PG205Bでは、ライト削減閾値405以上のライト頻度のページ401Aを移動対象とし、ライト追加PG205Cでは、ライト追加閾値406以下のライト頻度のページ401Bを移動対象とする。そしてそれぞれのページを移動することでライト頻度を調整する。
移動するページ数は、1回のページ移動で移動するライト頻度を算出し、目標とするライト削減要求量を満たすために必要な移動ページ数(これを移動計画ページ数と呼ぶ)を予め算出することにより決定される。そしてこの算出された移動計画ページ数分だけページの移動(再配置)が行われる。
次に性能リバランスでは、ライトリバランスにより移動したライト頻度の分だけリード頻度をライトリバランスとは逆の方向に移動することで、各パリティグループのリード頻度及びライト頻度を合算したI/O頻度をパリティグループ間で調整する。具体的には、ライト削減PG205Bのリード低負荷なページ402Bとライト追加PG205Cのリード高負荷なページ402Aとを移動して(矢印404)、パリティグループ間のリード頻度を調整する。
性能リバランスの際の移動対象となるページは、モニタ情報を元にした閾値に基づいて決定される。閾値には、リード高負荷なページを決定する閾値(これをリード削減閾値と呼ぶ)407とリード低負荷なページを決定する閾値(これをリード追加閾値と呼ぶ)408がある。
性能リバランスの際、ライト削減PG205Bでは、リード追加閾値408以下のリード頻度のページ402Bを移動対象とし、ライト追加PG205Cでは、リード削減閾値407以上のリード頻度のページ402Aを移動対象とする。そしてそれぞれのページを移動することでリード頻度を調整する。移動するページ数は、ライトリバランスと同様、移動計画ページ数を予め算出することにより決定される。そしてこの移動計画ページ数分だけページの移動(再配置)が行われる。
(1−4)メモリの内部構成
図5は、共有メモリ109の内部構成を示す。共有メモリ109には、ページ毎モニタテーブル501、パリティグループ毎モニタテーブル502、パリティグループ毎再配置管理テーブル503、プール毎再配置管理テーブル504、キャッシュ管理テーブル505、ダイナミックマッピングテーブル506及び論理物理アドレス変換テーブル507が格納される。
ページ毎モニタテーブル501は、I/O回数を含む各ページのモニタ情報を管理するテーブルであり、パリティグループ毎モニタテーブル502は、I/O回数を含む各パリティグループのモニタ情報を管理するテーブルである。またパリティグループ毎再配置管理テーブル503は、パリティグループ毎のページ再配置に関する制御情報を管理するテーブルである。
プール毎再配置管理テーブル504は、プール毎のページ再配置に関する制御情報を管理するテーブルであり、キャッシュ管理テーブル505は、キャッシュメモリ108にデータを格納する際にキャッシュメモリ108にあるデータのダーティ/クリーン状態管理を保持するテーブルである。
またプール毎再配置管理テーブル504は、仮想ボリューム202に対して書き込むデータをキャッシュする場合には、キャッシュメモリ108のアドレスと、対応する仮想ボリューム202のページ201を特定するアドレスとを対応づけて管理するテーブルである。
ダイナミックマッピングテーブル506は、仮想ボリューム202の各ページ201と、各ページ201に割り当てられているプールボリューム206のページ207と、各ページ201のモニタ情報との対応関係を管理するテーブルである。
論理物理アドレス変換テーブル507は、パリティグループと、プールボリュームと、プールボリュームのデータを格納する物理ディスクに対応するパリティグループのアドレスとの対応関係を管理するテーブルである。
図6は、ローカルメモリ113の内部構成を示す。ローカルメモリ113には、ホストI/O処理プログラム601、デステージ処理プログラム602、寿命情報採取処理プログラム603、閾値決定処理プログラム604、再配置処理プログラム604A及び新規割り当て決定処理プログラム605が格納される。これらの各種プログラムは、プロセッサ114により実行される。
ホストI/O処理プログラム601は、ホスト101からのI/O要求を受領した場合に仮想ボリューム202に対するリード要求又はライト要求を処理するプログラムである。デステージ処理プログラム602は、キャッシュメモリ108上の物理ディスクに未反映のデータを物理ディスクに格納するプログラムである。この処理は、ホスト101からのI/O要求に対する処理とは非同期に実行される。
寿命情報採取処理プログラム603は、ドライブ111及び112に対して所定周期でコマンドを発行して寿命情報を採取し、採取した情報を共有メモリ109に反映するプログラムである。閾値決定処理プログラム604は、所定周期で採取したモニタ情報とドライブ111及び112の寿命情報とに基づいて、ページ再配置のための閾値を算出するプログラムである。
再配置処理プログラム604Aは、閾値決定処理プログラム604により呼び出されるプログラムであり、閾値決定処理プログラム604により決定された各種閾値に基づいて、ページを再配置するプログラムである。新規割り当て決定処理プログラム605は、ホストI/O処理プログラム601に同期して実行され、仮想ボリューム202における新規の仮想ページに対して実ページの割り当て先であるパリティグループ205を閾値に基づいて決定するプログラムである。
(1−5)テーブル構成
図7は、ページ毎モニタテーブル501の論理構成を示す。ページ毎モニタテーブル501は、ページ番号欄701、ライトI/Oカウンタ欄702、リードI/Oカウンタ欄703、合計I/Oカウンタ欄704及び新規ライトフラグ欄705から構成される。
ページ番号欄701には、ページ201を特定するページ番号が格納され、ライトI/Oカウンタ欄702には、一定周期のライト回数が格納される。またリードI/Oカウンタ欄703には、一定周期のリード回数が格納され、合計I/Oカウンタ欄704には、一定周期のリード回数及びライト回数の合計I/O回数が格納される。
周期は、上記した閾値決定処理プログラム604がモニタ情報を採取する周期と同じであり、閾値決定処理プログラム604は、この一定期間のモニタ情報を処理対象とする。また新規ライトフラグ欄705には、ページが新規割り当てページか否かを示すフラグが格納される。
図8は、パリティグループ毎モニタテーブル502の論理構成を示す。パリティグループ毎モニタテーブル502は、パリティグループ番号欄801、最大ライト頻度欄802、最小ライト頻度欄803、最大リード頻度欄804、最小リード頻度欄805、リード/ライト比率欄806、ライト追加可能量欄807、ライト削減要求量欄808、新規ライトI/Oカウンタ欄809、新規ライト比率欄810、平均I/O頻度欄811及び割り当てページ数欄812から構成される。
パリティグループ番号欄801には、パリティグループ205を特定するパリティグループ番号が格納され、最大ライト頻度欄802には、パリティグループ内のページの最大ライト頻度が格納される。また最小ライト頻度欄803には、パリティグループ内のページの最小ライト頻度が格納される。
最大リード頻度欄804には、パリティグループ内のページの最大リード頻度が格納され、最小リード頻度欄805には、パリティグループ内のページの最小リード頻度が格納される。またリード/ライト比率欄806には、パリティグループに対するリード回数とライト回数との比率が格納される。
ライト追加可能量欄807には、寿命を保証することができる範囲内でパリティグループに追加可能なライト頻度が格納され、ライト削減要求量欄808には、寿命を保証するためにパリティグループから削減が必要なライト頻度が格納される。ライト追加可能量欄807及びライト削減要求量欄808には、パリティグループのライト頻度及びSSDの寿命情報に基づいて算出される値が格納され、何れかが正の値となる。
ライト追加可能量欄807及びライト削減要求量欄808に格納される値は、SSDから採取できる寿命情報がライト追加可能率及びライト削減要求率である場合、下記式1及び2を計算して算出することができる。
なおライト追加可能率とは、現状のライト頻度を100%として、追加可能なライト頻度の割合であり、ライト削減要求率とは、現状のライト頻度を100%として寿命を維持するために削減すべきライト頻度の割合である。
新規ライトI/Oカウンタ欄809には、パリティグループに対する新規ライト回数が格納され、新規ライト比率欄810には、パリティグループにおける書き込み処理のうち、更新ライトと新規ライトとの比率が格納される。また平均I/O頻度欄811には、パリティグループにおける各ページの平均I/O頻度が格納され、割り当てページ数欄812には、パリティグループに割り当てられているページ数が格納される。
図9は、パリティグループ毎再配置管理テーブル503の論理構成を示す。パリティグループ毎再配置管理テーブル503は、パリティグループ番号欄901、メディアタイプ欄902、移動元PG種別欄903、移動先PG欄904、ライト削減閾値欄905、ライト追加閾値欄906、リード削減閾値欄907、リード追加閾値欄908、移動計画ページ数欄909A及び909B、移動実績ページ数欄910A及び910B並びに新規ライト可能量欄911から構成される。
パリティグループ番号欄901には、パリティグループを特定するパリティグループ番号が格納され、メディアタイプ欄902には、パリティグループを構成するSSDの特性の情報が格納される。また移動元PG種別欄903には、ライト削減PG又はライト追加PGの何れかを示す情報が格納される。移動元PG種別は、パリティグループ毎モニタテーブル502のライト追加可能量欄807又はライト削減要求量欄808に格納される情報に基づいて決定される。
具体的には、ライト追加可能量欄807に正の値が格納されている場合、このパリティグループの移動元PG種別欄903には、ライト追加PGを示す情報が格納される。またライト削減要求量欄808に正の値が格納されている場合、このパリティグループの移動元PG種別903には、ライト削減PGを示す情報が格納される。
移動先PG欄904には、ページ再配置実行時の移動先のパリティグループ番号が格納される。移動先のパリティグループ番号は、再配置進捗度が最低のパリティグループを移動先として決定してもよい。再配置進捗度は、移動計画ページ数欄909A及び909Bと、移動実績ページ数欄910A及び910Bとを用いて、下記式3を計算して算出することができる。
ライト削減閾値欄905には、ライト削減PGでのライトリバランス時の移動対象のページを決定するための閾値が格納され、ライト追加閾値欄906には、ライト追加PGでのライトリバランス時の移動対象のページを決定するための閾値が格納される。
リード削減閾値欄907には、ライト追加PGでの性能リバランス時の移動対象ページを決定するための閾値が格納され、リード追加閾値欄908には、ライト削減PGでの性能リバランス時の移動対象ページを決定するための閾値が格納される。ライト削減閾値、ライト追加閾値、リード削減閾値及びリード追加閾値は、下記式4を計算して算出することができる。
移動計画ページ数(ライトリバランス)欄909Aには、同一特性のSSDにより構成されるパリティグループ間でライト頻度を調整するために必要なページの移動数が格納され、移動計画ページ数(性能リバランス)欄909Bには、同一特性のSSDにより構成されるパリティグループ間でリード頻度を含むI/O頻度を調整するために必要なページの移動数が格納される。ライトリバランス用の移動計画ページ数は、下記式5を計算して算出することができる。
また性能リバランス用の移動計画ページ数は、下記式6を計算して算出することができる。
移動実績ページ数(ライトリバランス)欄910Aには、ライトリバランスのために他のパリティグループに移動したページ数が格納され、移動実績ページ数(性能リバランス)欄910Bには、性能リバランスのために他のパリティグループに移動したページ数が格納される。新規ライト可能量欄912には、パリティグループで処理することのできる新規ライト回数が格納される。新規ライト可能量は、下記式7を計算して算出することができる。
図10は、プール毎再配置管理テーブル504の論理構成を示す。プール毎再配置管理テーブル504は、プール番号欄1001、寿命制御再配置周期欄1002、TLC−MLC間ライト閾値欄1003、新規ライト閾値欄1004、ワークロードタイプ欄1005、同種ドライブ間新規割り当てポリシ欄1006、新規割り当てバッファ欄1007及び再配置バッファ欄1008から構成される。
プール番号欄1001には、プールを特定するプール番号が格納され、寿命制御再配置周期欄1002には、プールにおいて寿命制御によるページの再配置を実行する周期が格納される。またTLC−MLC間ライト閾値欄1003には、TLC PGとMLC PGとの間でページを再配置する際にどちらの種類のパリティグループにページを配置するのかを決定するための閾値が格納される。TLC−MLC間ライト閾値は、下記式8を計算して算出することができる。
新規ライト閾値欄1004には、プールにおいて新規ページに対する割り当て処理を行う際、TLC PGとMLC PGのどちらから新規ページに対する実ページの割り当てを行うかを決定するための閾値が格納される。新規ライト閾値は、ページ移動時のペナルティ(=1ページあたりのデータサイズ)としてストレージシステム104が指定してもよい。
ワークロードタイプ欄1005には、プールに関連付けられている仮想ボリュームに対してホスト101から発行されるI/O要求の特性の情報が格納される。ワークロードタイプには、例えばWrite intensive、Read intensive、Unknown等がある。
Write intensiveは、ホスト101からのI/O要求のうち、ライト比率が高いことを意味し、Read intensiveは、ホスト101からのI/O要求のうち、リード比率が高いことを意味し、Unknownは、ホスト101からのI/O要求のうち、リード/ライト比率が不明であることを意味する。ワークロードタイプは、ユーザが指定してもよいし、ストレージシステム104が自動で決定してもよい。
同種ドライブ間新規割り当てポリシ欄1006には、新規割り当て処理でTLC PG内又はMLC PG内でどのパリティグループから新規ページに対する実ページの割り当てを行うかを決定するための情報が格納される。新規割り当てポリシには、例えばパリティグループ間で順番に割り当てるラウンドロビン、容量の多いパリティグループから割り当てる容量優先又はライト追加可能量の多いパリティグループから割り当てる寿命優先がある。新規割り当てポリシは、ユーザが指定してもよいし、ストレージシステム104が自動で決定してもよい。
新規割り当てバッファ欄1007には、プールで新規割り当て処理のために使用するバッファのプール容量に対する比率が格納される。再配置バッファ欄1008には、プールでページの再配置処理のために使用するバッファのプール容量に対する比率が格納される。なおこのプール毎再配置管理テーブル504内には、再配置の制御情報のデフォルト値を格納するエントリが1つ存在し、ユーザからの指定がない制御情報にはデフォルト値が格納される。
(1−6)フローチャート
図11は、ホストI/O処理のフローチャートを示す。このホストI/O処理は、ストレージシステム104がホスト101からのI/O要求を受領したことを契機として、プロセッサ114とホストI/O処理プログラム601との協働により実行される。説明の便宜上、処理主体をホストI/O処理プログラム601として説明する。
まずホストI/O処理プログラム601は、ホスト101からのI/O処理要求を受領すると、受領したI/O処理要求が仮想ボリューム202に対してデータを書き込むライト要求であるか否かを判断する(S1101)。
ライト要求である場合(S1101:Y)、ホストI/O処理プログラム601は、ダイナミックマッピングテーブル506を参照して、ライト対象の仮想ページに対して実ページが割り当て済みであるか否かを判断する。そして未割り当ての場合には、未使用の実ページを割り当てる新規割り当て決定処理を実行する(S1109)。新規割り当て決定処理の詳細については後述する(図19)。
新規割り当て決定処理を実行した後、次いでホストI/O処理プログラム601は、仮想ボリューム202上のライト対象のアドレスに対応した領域がキャッシュメモリ108上に確保されているか否かを確認し、確保されていない場合にはキャッシュメモリ108上の領域を確保する(S1110)。
次いでホストI/O処理プログラム601は、ホスト101に対してライト用のデータを送信するように通知する。ホストI/O処理プログラム601は、ホスト101からデータが送信されると、このデータをキャッシュメモリ108上の確保した領域に書き込む(S1111)。そしてホストI/O処理プログラム601は、まだドライブ111又は112に書き込みが完了していない領域であることを示すダーティフラグをキャッシュ管理テーブル505においてONに設定する。
ここで、ダーティフラグは、キャッシュメモリ108にのみデータが格納されており、ドライブ111又は112にはまだ格納されていない状態を示す情報である。ダーティフラグは、キャッシュメモリ108の領域を管理するキャッシュ管理テーブル505においてON又はOFに設定される。キャッシュ管理テーブル505は、後述するデステージ処理(図12)において参照される。
そしてダーティフラグがONである場合にはキャッシュメモリ108上の領域に格納されているデータは、ドライブ111又は112に書き込まれる。ドライブ111又は112に書き込まれた後は、ダーティフラグはOFFに設定され、リード処理に対応してドライブ111又は112から読み込んだデータをキャッシュメモリ108に格納した場合を含めて、キャッシュ管理テーブル505にはクリーンフラグがONに設定される。
このようにキャッシュ管理テーブル505は、キャッシュメモリ108上のアドレスと対応する仮想ボリューム202のアドレスと、キャッシュメモリ108上のデータの状態とを少なくとも管理する。なおキャッシュメモリ108のアドレスに対応する仮想ボリューム202のアドレスは、仮想ボリューム202のデータを置くためにキャッシュメモリ108上の領域を確保した場合にのみ、有効な値である仮想ボリューム202のアドレスが格納される。
以上の処理を行った後、ホストI/O処理プログラム601は、ホスト101にI/O処理(ライト処理)が完了したことを通知して(S1112)、本処理を終了する。
ステップS1101に戻り、ホストI/O処理プログラム601は、ホスト101から受領したI/O要求が仮想ボリューム202からデータを読み込むリード要求である場合(S1101:N)、キャッシュ管理テーブル505を参照して、リード要求に対応する仮想ボリューム202上のアドレスに対応したデータがキャッシュメモリ108上に格納されているか否かを判断する(S1102)。
リード要求に対応する仮想ボリューム202上のアドレスに対応したデータがキャッシュメモリ108上に格納されている場合をキャッシュヒットと呼ぶ。キャッシュヒットである場合(S1102:Y)、ホストI/O処理プログラム601は、キャッシュメモリ108上のデータをホスト101に転送するとともに(S1108)、I/O処理(リード処理)が完了したことをホスト101に通知して、本処理を終了する。
これに対し、キャッシュヒットしなかった場合(S1102:N)、ホストI/O処理プログラム601は、リード対象の仮想ボリューム202のアドレスに対応したデータを格納するための領域をキャッシュメモリ108上に確保する(S1103)。次いでホストI/O処理プログラム601は、ダイナミックマッピングテーブル506を参照して、リード対象の仮想ボリューム202のアドレスにプール204から実ページが割り当てられているか否かを確認する。
仮想ボリューム202に実ページが割り当てられていない場合、ホストI/O処理プログラム601は、ダイナミックマッピングテーブル506を参照して、デフォルト値を格納するページを用いてデフォルト値の格納ページのドライブ111又は112のアドレスを算出し、ドライブ111又は112からデフォルト値をキャッシュメモリ108の領域に転送する(S1105)。
ここで、デフォルト値の場合は、ダイナミックマッピングテーブル506の仮想ボリューム202及び論理アドレスに対応する、プールボリューム番号及び論理アドレスには、デフォルト値格納ページのあるプールボリューム番号及び論理アドレスが設定されている。デフォルト値格納ページは、プール204に1つ以上あればよい。容量効率を考えればプール204にデフォルト値ページは1又は2つである。
デフォルト値格納ページのアドレスと対応付けられている仮想ボリューム202の論理アドレスは、ホスト101から新規にデータの書き込みがあった際に、ホスト101のデータ書き込み用のページで未だどの仮想ボリューム202のアドレスにも対応付けられていない未使用のページと対応付け直される。
これに対し、仮想ボリューム202に実ページが割り当てられている場合、ホストI/O処理プログラム601は、ダイナミックマッピングテーブル506を参照して、プールボリューム番号及び論理アドレスを取得し、更に論理物理アドレス変換テーブル507を参照して、物理ドライブ番号及び物理開始アドレスを算出することで、リード対象の仮想ボリューム202のアドレスに対応したデータが格納されているドライブ111又は112のアドレスを算出する(S1104)。
次にホストI/O処理プログラム601は、算出したアドレスからデータをキャッシュメモリ108上の領域に転送する(S1105)。そしてリード時にページ毎モニタテーブル501を参照して、リードI/Oカウンタの数値をカウントアップする(S1106)。
そしてホストI/O処理プログラム601は、ドライブ111又は112からキャッシュメモリ108上に格納したデータをホスト101に転送するとともに(S1107)、I/O処理(リード処理)が完了したことをホスト101に通知して、本処理を終了する。
以上の処理により、ホストI/O処理を行うとともに、必要なモニタ情報を採取することができる。
図12は、デステージ処理のフローチャートを示す。このデステージ処理は、ホストI/O処理(図11)とは非同期で、プロセッサ114とデステージ処理プログラム602との協働により適宜実行される。説明の便宜上、処理主体をデステージ処理プログラム602として説明する。
まずデステージ処理プログラム602は、キャッシュ管理テーブル505を参照して、ダーティフラグのON又はOFFを確認し、ドライブ111又は112に書き込みがなされていない未反映データがキャッシュメモリ108上にあるか否かを判断する(S1201)。
デステージ処理プログラム602は、未反映データがキャッシュメモリ108上にある場合、キャッシュ管理テーブル505から仮想ボリューム番号及び論理アドレスを取得する。そしてこの仮想ボリューム番号及び論理アドレスを元にダイナミックマッピングテーブル506を参照して、プールボリューム番号及び論理アドレスを取得する。
このときプールボリューム番号及び論理アドレスがデフォルト値格納ページのアドレスであった場合、デステージ処理プログラム602は、新規データを書き込むためにダイナミックマッピングテーブル506から新規空きページを割り当てる。そしてこの割り当てページのプールボリューム番号及び論理アドレスをダイナミックマッピングテーブル506の対応する仮想ボリューム番号及び論理アドレスに対応付けて格納する。
既にページが割り当てられている場合は、デフォルト値のプールボリューム番号及び論理アドレスとは異なるプールボリューム番号及び論理アドレスの値が仮想ボリュームの論理アドレスに対応付けて格納されている。デステージ処理プログラム602は、プールボリューム番号及び論理アドレスを取得した後、論理物理アドレス変換テーブル507を参照して、ドライブ111又は112のアドレスを算出する(S1202)。
次いでデステージ処理プログラム602は、算出したドライブ111又は112のアドレスに対して、キャッシュメモリ108上の未反映データを書き込む(S1203)。そしてダイナミックマッピングテーブル506のページ番号に対応するページ毎モニタテーブル501を参照して、ライトI/Oカウンタの数値をカウントアップする(S1204)。
次いでデステージ処理プログラム602は、ページ毎モニタテーブル501の新規ライトフラグ欄705を参照して、デステージ処理対象のページが新規割り当てページであるか否かを判断する(S1205)。新規割り当てページである場合(S1205:Y)、デステージ処理プログラム602は、このページの格納先のパリティグループに対応するパリティグループ毎モニタテーブル502を参照して、新規ライトI/Oカウンタの数値をカウントアップする(S1206)。
これに対し、デステージ処理プログラム602は、テージ処理対象のページが新規割り当てページでない場合(S1205:N)、ステップS1201に移行する。ステップS1201においてデステージ処理プログラム602は、キャッシュメモリ108上に未反映データがさらにあるか否かを判断する。そしてさらなる未反映データがない場合には(S1201:N)、本処理を終了する。
以上の処理により、キャッシュメモリ108上のデータを非同期にドライブ111又は112に格納するとともに、必要なモニタ情報を採取することができる。
図13は、寿命情報採取処理のフローチャートである。この寿命情報採取処理は、プロセッサ114と寿命情報採取処理プログラム603との協働により一定周期で実行される。説明の便宜上、処理主体を寿命情報採取処理プログラム603として説明する。
まず寿命情報採取処理プログラム603は、ドライブ111又は112に対して寿命採取のコマンドを発行する(S1301)。次いで寿命情報採取処理プログラム603は、寿命情報としてライト追加可能率又はライト削減要求率を受信する(S1302)。そして受信した寿命情報をローカルメモリ113に格納して(S1303)、本処理を終了する。
以上の処理により、ドライブ111又は112から寿命情報を採取することができる。
図14は、閾値決定処理のフローチャートである。この閾値決定処理は、プロセッサ114と閾値決定処理プログラム604との協働により一定周期で実行される。一定周期の情報は、プール毎再配置管理テーブル504の寿命制御再配置周期欄1002に格納される。説明の便宜上、処理主体を閾値決定処理プログラム604として説明する。
まず閾値決定処理プログラム604は、全てのパリティグループについて、ページ毎のモニタ情報の集計が完了したか否かを判断する(S1401)。すなわちパリティグループ毎モニタテーブル502の各欄に情報が格納されているか否かを判断する。
集計が完了していない場合(S1401:N)、閾値決定処理プログラム604は、寿命情報採取処理プログラム603を呼び出してドライブ111又は112から寿命情報を採取し(S1402)、ページ毎のモニタ情報をパリティグループ毎に集計する(S1403)。集計が完了している場合(S1401:Y)、閾値決定処理プログラム604は、ページ再配置のための各種閾値を算出する(S1404)。
ここで算出される各種閾値は、パリティグループ毎モニタテーブル502、パリティグループ毎再配置管理テーブル503及びプール毎再配置管理テーブル504の各欄に格納される。そして閾値決定処理プログラム604は、再配置処理プログラム604Aを呼び出して再配置処理を実行した後(S1405)、本処理を終了する。
以上の処理により、パリティグループ毎にモニタ情報を集計し、集計したモニタ情報に基づいて、各種閾値を算出することができる。そして算出した閾値を用いて再配置処理を実行することができる。
図15は、再配置処理のフローチャートである。この再配置処理は、プロセッサ114と閾値決定処理プログラム604により呼び出される再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
まず再配置処理プログラム604Aは、閾値決定処理プログラム604により算出されたTLC−MLC間ライト閾値に基づいて、TLC PGとMLC PGとの間でページを再配置するTLC−MLC間再配置処理を実行する(S1501)。
このTLC−MLC間再配置処理により、TLC SSD(ドライブ112)の寿命を延ばすことができる。またビットコストを削減することができる。
次に再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503を参照し、ライトリバランス用の移動計画ページ数に基づいて、同一特性のSSDで構成されたパリティグループ間(TLC PG間又はMLC PG間)でページを再配置するライトリバランス処理を実行する(S1502)。
このライトリバランス処理により、同一特性のSSDで構成されたパリティグループ間でライト負荷を分散して、寿命を平準化することができる。
次に再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503を参照して、ライト削減PGのライトリバランス用の移動計画ページ数が0以下であるか否かを判断する(S1503)。ライト削減PGのライトリバランス用の移動計画ページ数が0以下である場合(S1503:Y)、再配置処理プログラム604Aは、ライト頻度の調整が完了していると判断して、次に性能リバランス処理を実行する(S1504)。
これに対し、ライト削減PGのライトリバランス用の移動計画ページ数が0よりも大きい場合(S1503:N)、再配置処理プログラム604Aは、現在のパリティグループの構成では、ライト頻度を調整できず、寿命を維持することができないため、警告画面を表示して、寿命を保証するために追加すべきTLC SSD又はMLC SSDの容量をユーザに通知する(S1505)。
以上の処理により、パリティグループ間でのライト頻度及びリード頻度を調整することができる。またライト頻度及びリード頻度を調整することができない場合には寿命を維持するために必要なTLC SSD又はMLC SSDの容量をユーザに通知することができる。
図16は、TLC−MLC間再配置処理のフローチャートである。このTLC−MLC間再配置処理は、プロセッサ114と再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
まず再配置処理プログラム604Aは、閾値決定処理プログラム604により算出されたTLC−MLC間ライト閾値に基づいて、全てのパリティグループ内の各ページをTLC PG又はMLC PGに再配置する。このとき再配置について未判定のページがあるか否かを判断する(S1601)。
未判定のページがある場合(S1601:Y)、再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503を参照して、この未判定の対象ページが所属するパリティグループのメディアタイプがTLCであるか否かを判断する(S1602)。メディアタイプがTLCである場合(S1602:Y)、再配置処理プログラム604Aは、対象ページのライト頻度がTLC−MLC間ライト閾値以上であるか否かを判断する(S1603)。
対象ページのライト頻度がTLC−MLC間ライト閾値以上である場合(S1603:Y)、再配置処理プログラム604Aは、このページをTLC PGからMLC PGに移動する(S1604)。これに対し、対象ページのライト頻度がTLC−MLC間ライト閾値未満である場合(S1603:N)、再配置処理プログラム604Aは、何もせずにステップS1601に移行する。
ステップS1602に戻り、メディアタイプがMLCである場合(S1602:N)、対象ページのライト頻度がTLC−MLC間ライト閾値未満であるか否かを判断する(S1605)。対象ページのライト頻度がTLC−MLC間ライト閾値未満である場合(S1605:Y)、再配置処理プログラム604Aは、このページをMLC PGからTLC PGに移動する(S1606)。
これに対し、対象ページのライト頻度がTLC−MLC間ライト閾値以上である場合(S1605:N)、再配置処理プログラム604Aは、何もせずにステップS1601に移行する。再配置処理プログラム604Aは、全てのパリティグループ内の各ページについて判定を終えると、本処理を終了する。以上の処理により、TLC−MLC間でページを再配置して、TLC SSD(ドライブ112)の寿命を延ばすとともに、ビットコストを削減することができる。
図17は、ライトリバランス処理のフローチャートである。このライトリバランス処理は、プロセッサ114と再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
まず再配置処理プログラム604Aは、閾値決定処理プログラム604により算出されたライトリバランス用移動計画ページ数、ライト削減閾値及びライト追加閾値に基づいて、同一特性のSSDで構成されたパリティグループ間(TLC PG間又はMLC PG間)でページを再配置する。このとき再配置について未判定のページがあるか否かを判断する(S1701)。
未判定のページがない場合には(S1701:N)、再配置処理プログラム604Aは、本処理を終了する。これに対し、未判定のページがある場合(S1701:Y)、再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503を参照して、この未判定の対象ページが所属するパリティグループの移動元PG種別がライト削減PGであるか否かを判断する(S1702)。
対象ページが所属するパリティグループの移動元PG種別がライト削減PGである場合(S1702:Y)、再配置処理プログラム604Aは、ページ毎モニタテーブル501のライトI/Oカウンタを参照して、この対象ページのライト頻度を取得する。そして取得したライト頻度がライト削減閾値以上であるか否かを判断する(S1703)。
対象ページのライト頻度がライト削減閾値未満である場合(S1703:N)、再配置処理プログラム604Aは、ステップS1701に移行する。これに対し、対象ページのライト頻度がライト削減閾値以上である場合(S1703:Y)、再配置処理プログラム604Aは、この対象ページの移動先のパリティグループを決定する。
移動先のパリティグループを決定する際、再配置処理プログラム604Aはパリティグループ毎再配置管理テーブル503を参照して、ライト追加PGのうち、ライトリバランス用の移動実績ページ数がライトリバランス用の移動計画ページ数未満であるパリティグループが存在するか否かを判断する(S1704)。
ライト追加PGのうち、ライトリバランス用の移動実績ページ数がライトリバランス用の移動計画ページ数未満であるパリティグループが存在する場合(S1704:Y)、再配置処理プログラム604Aは、このパリティグループにライト負荷の高い対象ページを移動しても寿命を維持することができると判断して、このパリティグループを移動先PGとしてパリティグループ毎再配置管理テーブル503に登録し、対象ページをこのパリティグループに移動する(S1705)。
これに対し、ライト追加PGのうち、ライトリバランス用の移動実績ページ数がライトリバランス用の移動計画ページ数未満であるパリティグループが存在しない場合(S1704:N)、再配置処理プログラム604Aは、この対象ページについては判定を終え、ステップS1701に移行する。
ステップS1702に戻り、対象ページが所属するパリティグループの移動元PG種別がライト削減PGでない場合(S1702:N)、すなわち対象ページが所属するパリティグループの移動元PG種別がライト追加PGである場合、再配置処理プログラム604Aは、ページ毎モニタテーブル501のライトI/Oカウンタ欄702を参照して、この対象ページのライト頻度を取得する。そして取得したライト頻度がライト追加閾値未満であるか否かを判断する(S1706)。
対象ページのライト頻度がライト追加閾値以上である場合には(S1706:N)、再配置処理プログラム604Aは、ステップS1701に移行する。これに対し、対象ページのライト頻度がライト追加閾値未満である場合(S1706:Y)、再配置処理プログラム604Aは、この対象ページの移動先のパリティグループを決定する。
移動先のパリティグループを決定する際の処理は、上記のステップS1704及びS1705と同様であるため説明を省略する。以上の処理により、同一特性のSSDで構成された異なるパリティグループ間でページを再配置してライト負荷を分散し、寿命を平準化することができる。
図18は、性能リバランス処理のフローチャートである。この性能リバランス処理は、プロセッサ114と再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
なお性能リバランス処理は、ライトリバランス処理(図17)で調整したライト頻度と同程度のリード頻度のページをライトリバランス処理で移動させた方向とは逆方向に移動する点で、ライトリバランス処理と異なり、他の基本的な処理内容は同様である。
まず再配置処理プログラム604Aは、閾値決定処理プログラム604により算出された性能リバランス用の移動計画ページ数、ライト削減閾値及びライト追加閾値に基づいて、同一特性のSSDで構成されたパリティグループ間(TLC PG間又はMLC PG間)でページを再配置する。このとき再配置について未判定のページがあるか否かを判断する(S1801)。
未判定のページがない場合には(S1801:N)、再配置処理プログラム604Aは、本処理を終了する。これに対し、未判定のページがある場合(S1801:Y)、再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503を参照して、この未判定の対象ページが所属するパリティグループの移動元PG種別がライト削減PGであるか否かを判断する(S1802)。
対象ページが所属するパリティグループの移動元PG種別がライト削減PGである場合(S1802:Y)、再配置処理プログラム604Aは、ページ毎モニタテーブル501のリードI/Oカウンタを参照して、この対象ページのリード頻度を取得する。そして取得したリード頻度がリード追加閾値未満であるか否かを判断する(S1803)。
対象ページのリード頻度がリード追加閾値以上である場合には(S1803:N)、再配置処理プログラム604Aは、ステップS1801に移行する。これに対し、対象ページのリード頻度がリード追加閾値未満である場合(S1803:Y)、再配置処理プログラム604Aは、この対象ページの移動先のパリティグループを決定する。
移動先のパリティグループを決定する際、再配置処理プログラム604Aはパリティグループ毎再配置管理テーブル503を参照して、ライト追加PGのうち、性能リバランス用の移動実績ページ数が性能リバランス用の移動計画ページ数未満であるパリティグループが存在するか否かを判断する(S1804)。
ライト追加PGのうち、性能リバランス用の移動実績ページ数が性能リバランス用の移動計画ページ数未満であるパリティグループが存在する場合(S1804:Y)、再配置処理プログラム604Aは、このパリティグループにリード負荷の低い対象ページを移動させても高負荷にならないと判断して、このパリティグループを移動先PGとしてパリティグループ毎再配置管理テーブル503に登録し、対象ページをこのパリティグループに移動する(S1805)。
これに対し、ライト追加PGのうち、性能リバランス用の移動実績ページ数が性能リバランス用の移動計画ページ数未満であるパリティグループが存在しない場合(S1804:N)、再配置処理プログラム604Aは、この対象ページについては判定を終え、ステップS1801に移行する。
ステップS1802に戻り、対象ページが所属するパリティグループの移動元PG種別がライト削減PGでない場合(S1802:N)、すなわち対象ページが所属するパリティグループの移動元PG種別がライト追加PGである場合、再配置処理プログラム604Aは、ページ毎モニタテーブル501のリードI/Oカウンタ欄703を参照して、この対象ページのリード頻度を取得する。そして取得したリード頻度がリード削減閾値以上であるか否かを判断する(S1806)。
対象ページのリード頻度がリード削減閾値未満である場合には(S1806:N)、再配置処理プログラム604Aは、ステップS1801に移行する。これに対し、対象ページのリード頻度がリード削減閾値以上である場合(S1806:Y)、再配置処理プログラム604Aは、この対象ページの移動先のパリティグループを決定する。
移動先のパリティグループを決定する際の処理は、上記のステップS1804及びS1805と同様であるため説明を省略する。以上の処理により、同一特性のSSDで構成された異なるパリティグループ間でページを再配置してリード負荷を分散し、I/O頻度を平準化することができる。
図19は、新規割り当て決定処理のフローチャートを示す。この新規割り当て決定処理は、ホスト101から新規の仮想ページに対するライト要求を受領したことを契機として、プロセッサ114と新規割り当て決定処理プログラム605との協働により実行される。説明の便宜上、処理主体を新規割り当て決定処理プログラム605として説明する。
まず新規割り当て決定処理プログラム605は、プール毎再配置管理テーブル504を参照して、新規ページの割り当て対象の仮想ボリューム202に記憶領域を提供するプール204のワークロードタイプが「Unknown」であるか否かを判断する(S1901)。
プール204のワークロードタイプが「Unknown」ではない場合(S1901:N)、新規割り当て決定処理プログラム605は、更に「Write intensive」であるか否かを判断する(S1906)。ワークロードタイプが「Write intensive」である場合(1906:Y)、新規割り当て決定処理プログラム605は、新規ページに対するライト頻度は多いと予測して、書き込み上限回数が比較的多いMLC PGを新規ページに対する実ページの割り当て先のパリティグループに設定する(S1907)。
これに対し、ワークロードタイプが「Read intensive」である場合(S1906:N)、新規割り当て決定処理プログラム605は、新規ページに対するライト頻度は少ないものと予測して、書き込み上限回数が少ないTLC PGを新規ページに対する実ページの割り当て先のパリティグループに設定する(S1904)。
ステップS1901に戻り、ワークロードタイプが「Unknown」である場合(S1901:Y)、新規割り当て決定処理プログラム605は、ホスト101からのI/O特性が分からないため、新規ページに対する将来のライト頻度を予測して、割り当て先を決定する。まずは新規ページの予測ライト頻度を算出する(S1902)。
例えば新規割り当て決定処理プログラム605は、ホスト101からの1ページ当たりの平均ライト頻度をモニタ情報として採取して見積もることにより、予測ライト頻度を算出する。
次いで新規割り当て決定処理プログラム605は、プール毎再配置管理テーブル504を参照して、予測ライト頻度が新規ライト閾値未満であるか否かを判断する(S1903)。予測ライト頻度が新規ライト閾値未満の場合(S1903:Y)、新規割り当て決定処理プログラム605は、書き込み上限回数の少ないTLC PGを割り当て先のパリティグループに設定する(S1904)。
これに対し、予測ライト頻度が新規ライト閾値以上の場合(S1903:N)、新規割り当て決定処理プログラム605は、書き込み上限回数の多いMLC PGを割り当て先のパリティグループに設定する(S1907)。
次いで新規割り当て決定処理プログラム605は、割り当て先に設定した特性のパリティグループについて、新規ページの割り当てが可能か否かを判断するため、パリティグループ毎モニタテーブル502及びパリティグループ毎再配置管理テーブル503を参照して、新規ライト可能量が新規ライトI/Oカウンタよりも大きいか否かを割り当て先に設定した特性のパリティグループごとに判断する(S1905)。
新規ライト可能量が新規ライトI/Oカウンタよりも大きいパリティグループが存在する場合(S1905:Y)、新規割り当て決定処理プログラム605は、このパリティグループから新規ページを割り当てるために、ページ毎モニタテーブル501を参照して、このパリティグループにおける何れかのページについて新規ライトフラグを設定し(S1909)、本処理を終了する。
これに対し、新規ライト可能量が新規ライトI/Oカウンタよりも大きいパリティグループが存在しない場合(S1905:N)、新規割り当て決定処理プログラム605は、寿命を維持するにあたり新規に許容可能なライト頻度を超えているため、ユーザに推奨容量を通知する(S1908)。
そして新規割り当て決定処理プログラム605は、判断対象のパリティグループから新規ページを割り当てるために、何れかのパリティグループにおける何れかのページについて新規ライトフラグを設定し(S1909)、本処理を終了する。
以上の処理により、ホスト101から新規ページにデータを書き込むライト要求を受領した場合、新規ページに対するライト頻度を考慮して、寿命特性に応じたSSDにより構成されたパリティグループから新規ページに対して実ページを割り当てることができる。
(1−7)推奨容量算出方法の概念構成
図20は、ホスト101からのライト頻度に対して寿命を保証するにあたり推奨される書き込み上限回数の異なる記憶装置の容量比率の算出方法の考え方を示す。図20は、プール204内の各ページ207(又は仮想ボリューム202内の各ページ201)のライト頻度の分布を表す。グラフ2007は、左からライト頻度が多い順番に全ページ207を並べたときの各ページ207のライト頻度を示す。縦軸はライト頻度であり、横軸はページ数である。
TLC−MLC間ライト閾値2005は、TLC PGとMLC PGのどちらにページを配置するのかを決める閾値であり、TLC−MLC間ライト閾値2005とグラフ2007との交点がTLCとMLCの推奨される容量比率(2006)となる。TLC−MLC間ライト閾値2005は、ユーザが指定してもよいし、ストレージシステム104が算出してもよい。
ストレージシステム104が算出する場合、推奨容量比率は、顧客要件のライト頻度(=Whost)、プール204(又は仮想ボリューム202)容量(=C)及び各SSDの寿命を保証するにあたり許容できるライト頻度の相関グラフ2001、2002を利用し、下記式9を計算して算出することができる。
ここでグラフ2001は、寿命を保証するにあたり単位容量当たりに許容できるライト頻度(=Wtlc)を傾きとしたTLC SSDの容量と許容できるライト頻度との相関を表す。またグラフ2002は、寿命を保証するにあたり単位容量当たりに許容できるライト頻度(=Wmlc)を傾きとしたMLC SSDの容量と許容できるライト頻度との相関を表す。
以上により、顧客要件ライト頻度とプール容量とを満たすTLC SSDとMLC SSDとの容量比率を算出することができる。
(1−8)画面構成
図21は、プール毎にパラメータを設定する際の画面構成の一例を示す。プール単位のGUI画面2101は、設定対象のプール204を特定できるプール番号を表示する領域2102と、寿命制御再配置のON/OFFを設定する領域2103と、寿命制御再配置をONにした場合の詳細設定のON/OFFを設定する領域2104と、詳細設定の内容を設定する領域2105とから構成される。本画面で設定した情報は、プール毎再配置管理テーブル504の各欄に格納される。
寿命制御再配置領域2103の設定がOFFの場合、閾値決定処理プログラム604が閾値決定処理を実行することはなく、よって再配置処理プログラム604Aがページの再配置を実行することはないが、寿命制御の精度の低下を防ぐため、モニタ情報は寿命制御再配置のON/OFFにかかわらず採取される。
寿命制御再配置領域2103の設定がONの場合、上記説明してきた通りページの再配置が行われる。この場合、詳細設定領域2104の項目設定領域2105が入力可能に表示される。詳細設定領域2104の設定がOFFの場合、項目設定領域2105の各種パラメータには、デフォルト値又はストレージシステム104内で自動的に算出された値が設定される。
再配置周期領域2106には、寿命制御のための再配置を実行する周期が設定される。この周期はユーザが指定することができる。例えばユーザが「7days」と指定すると、7日周期でページの再配置が実行される。
ワークロードタイプ領域2107には、ホスト101からのI/O特性が設定される。このI/O特性はユーザが指定することができる。ホスト101からのI/O特性を予め把握している場合は、ユーザがI/O特性を指定することにより、新規割り当て先のSSDの特性を明示的に指定することができる。
具体的には「Write intensive」が指定された場合、ホスト101のI/O特性は、ライト高負荷であるため、書き込み上限回数の比較的多いMLC PGから新規ページに対して実ページの割り当てが行われる。
また「Read intensive」が指定された場合、ホスト101のI/O特性は、ライト低負荷であるため、書き込み上限回数の少ないTLC PGから新規ページに対して実ページの割り当てが行われる。
またホスト101のI/O特性をユーザが把握していない場合、ユーザは「Unknown」を指定する。この場合、ストレージシステム104が新規ページに対して実ページの割り当て先のパリティグループを自動的に決定することになる。
同種ドライブ間新規割り当てポリシ領域2108には、新規ページに対する実ページの割り当て時にTLC PG又はMLC PGのうち、何れの特性のパリティグループからページを割り当てるかを決定するポリシが設定される。
例えばユーザにより「ラウンドロビン」が指定された場合、各パリティグループから均等にページが割り当てられる。また「容量優先」が指定された場合、容量が少なパリティグループから優先してページが割り当てられる。また「寿命優先」が指定された場合、寿命が長いパリティグループから優先してページが割り当てられる。
バッファサイズ領域2109及び2110には、特性がMLC PGであるパリティグループの容量に対するバッファの割合が設定される。新規割り当て用領域2109には、特性がMLC PGであるパリティグループから新規ページを割り当てる際に使用するバッファが設定される。新規割り当て時にMLC PGから割り当てられるはずのライト高負荷なページがMLC PGの残容量が足りないことによってTLC PGから割り当てられることを防ぐ効果がある。
新規割り当てバッファは、再配置周期毎に確保しなおされる。このため、新規割り当てバッファは、周期内に予想されるホスト101から新規ページに対して書き込まれるデータ量に基づいて最適なサイズを見積もることができる。
再配置バッファ用領域2110には、ページの再配置時に使用されるバッファが設定される。再配置バッファにより、再配置時に単位時間当たりに移動できるデータサイズを調整する。このため、再配置バッファを多くとることにより、再配置時のスループットを増やす効果がある。
図22は、ストレージシステム104がユーザに通知する警告画面の画面構成の一例を示す。警告画面は、ホスト101からのライト頻度が多く、現在の構成では目標期間よりもSSDの寿命が短くなること又は寿命を保証するにあたり過剰にSSDを搭載していることをユーザに通知することができる。
画面を表示する契機は、周期的に実行されるページ再配置処理の完了後にストレージシステム104が自動で表示するとしてもよいし、ユーザがストレージシステム104に対する操作により、任意のタイミングで表示させてもよい。後者の場合、任意の操作が行われたタイミングでのモニタ情報に基づいて推奨容量が算出される。
プール単位のGUI画面2201は、設定対象のプール204を特定できるプール番号を表示する領域2202と、警告の内容を通知する領域2203から構成される。警告の内容を通知する領域2203は、現在のドライブ構成から追加が必要又は削減が可能なTLC又はMLCの容量を通知する領域2204及び現在のホスト101からのI/O要求の情報から推奨されるMLCとTLCの容量を通知する領域2205から構成される。なお通知する容量の情報は、TLCとMLCの容量の比率で表してもよい。
(1−9)第1の実施の形態による効果
以上のように第1の実施の形態におけるストレージシステム104によれば、TLC−MLC間でページを再配置することにより、寿命の異なるSSDから構成されたパリティグループ間でライト頻度を調整することができる。またライトリバランス処理を行うことにより、同一特性のSSDで構成されたパリティグループ間でライト頻度を調整することができる。よって寿命劣化の激しいSSDに対するライト頻度のページを寿命劣化の緩やかなSSDに移動して、SSDの保守交換回数を削減することができる。またストレージシステム104のコストを削減することができる。
(2)第2の実施の形態
第2の実施の形態は、記憶装置として半導体メモリ(SSD)だけでなく、ハードディスクドライブ(HDD)を搭載するストレージシステムにおいて、記憶装置(SSD及びHDD)を性能に応じた階層に分類し、ホストからのアクセス頻度に応じて適切な階層の記憶装置にデータを配置する階層制御を行う点で、第1の実施の形態と異なる。
(2−1)計算機システムの全体構成
図23は、第2の実施の形態における計算機システム1Aの全体構成を示す。計算機システム1Aは、SAS(Serial Attached SCSI)規格のHDD(ドライブ2301)を搭載している点及びSSD(ドライブ111及び112)をティア1に設定し、SAS規格のHDD(ドライブ2301)をティア2に設定するとともに、各ページのI/O頻度に応じてティア間でデータを再配置する点で、第1の実施の形態と異なる。
例えばティア1からはI/O頻度が100[IOPS]のページを割り当てるように設定されており、ティア2からはI/O頻度が10[IOPS]のページを割り当てるように設定されているとする。一方でI/O頻度が50[IOPS]のページがティア2から割り当てられており、I/O頻度が20[IOPS]のページがティア1から割り当てられているとする。
この場合、ストレージシステム104Aは全体として10(ティア2の上限IOPH)+20=30[IOPS]の性能しか発揮することができない。そこでI/O頻度が50[IOPH]のページをティア2からティア1に移動(再配置)すると、ストレージシステム104Aは全体として50+20=70[IOPS]の性能を発揮することができるようになる。
(2−2)ストレージシステムの論理構成
図24は、ストレージシステム104Aの論理構成を示す。ストレージシステム104Aは、プールボリューム206A〜206CがMLC SSD又はTLC SSDから構成され、プールボリューム206D及び206EがSAS HDDから構成されており、各プールボリューム206A〜206Eがティア1又は2に分類されている点で、第1の実施の形態と異なる。
そして第2の実施の形態のストレージシステム104Aは、第1の実施の形態において説明してきたページの再配置に加えて、SSDから構成されるティア1においてホスト101からのライト負荷が高くなり、SSDの寿命を保証することができなくなった場合、ライト負荷の高い例えばページ207Dをティア2に移動するライトデモーション処理を実行する。これによりSSDの寿命劣化を防ぐことができる。
(2−3)ページ配置処理の概念構成
図25は、ライトデモーション処理によるページ再配置処理の概念構成を示す。ここではMLC PG205A又はTLC PG205Bから構成されるティア1と、SAS HDDで構成されたパリティグループ(以下、SAS PGと呼ぶ)205Cから構成されるティア2との間で、ページ301を再配置する。ライトデモーション処理は、閾値決定処理時にティア1内でのページ再配置だけではSSDの寿命を維持することができないと判断された場合に実行される。
具体的には、閾値決定処理においてライトリバランスによる移動計画ページ数を算出した後、ライト削減PGのライト削減要求量を満たすだけのページを移動することができなかった場合、移動することができなかった分のライト頻度に基づいて、ライトデモーション処理による移動計画ページ数を算出する。そしてライトリバランス実行時に、ライトデモーション処理による移動計画ページ数分だけMLC PG205A又はTLC PG205BからSAS PG205Cにライトデモーション閾値2501以上のライト頻度のページを移動する。
(2−4)テーブル構成
図26は、第2の実施の形態におけるパリティグループ毎再配置管理テーブル503Aの論理構成を示す。パリティグループ毎再配置管理テーブル503Aは、パリティグループ毎再配置管理テーブル503(図9)の各欄に加えて、ライトデモーション閾値欄2601、ライトデモーション用移動計画ページ数欄2602、ライトデモーション用移動実績ページ数欄2603及びティアレベル欄2604から構成される。
ライトデモーション閾値欄2601には、ライトデモーション処理対象のページを決定するための閾値が格納され、ライトデモーション用移動計画ページ数欄2602には、ライトデモーション処理により移動するページ数が格納される。またライトデモーション用移動実績ページ数欄2603には、ライトデモーション処理により移動したページ数が格納される。ティアレベル欄2604には、パリティグループが所属する階層順序(例えばティア1、ティア2、ティア3)が格納される。なおここでは階層順序の値が小さいティアほど高性能のドライブで構成されている。
図27は、第2の実施の形態におけるプール毎再配置管理テーブル504Aの論理構成を示す。プール毎再配置管理テーブル504Aは、プール毎再配置管理テーブル504(図10)の各欄に加えて、ティア間I/O閾値欄2701から構成される。ティア間I/O閾値欄2701には、ページをどの階層に配置するのかを決定するための閾値が格納される。
(2−5)フローチャート
図28は、第2の実施の形態における再配置処理のフローチャートを示す。この再配置処理は、プロセッサ114と閾値決定処理プログラム604により呼び出される再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
なお前提として閾値決定処理プログラム604は、閾値決定処理(図14)においてティア間I/O閾値及びライトデモーション用移動計画ページ数を算出し、各種閾値をパリティグループ毎再配置管理テーブル503A及びプール毎再配置管理テーブル504Aにそれぞれ格納しているものとする。
まず再配置処理プログラム604Aは、ティア間再配置処理を実行する(S2801)。ここでは再配置処理プログラム604Aは、プール毎再配置管理テーブル504Aのティア間I/O閾値欄2701を参照して、対象ページを配置するティアを決定する。
その後再配置処理プログラム604Aは、第1の実施の形態における再配置処理(図15)と同様にTLC−MLC間再配置処理を実行し(S1501)、次いでライトリバランス処理を実行する(S1502)。ライトリバランス処理を実行した後、再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503Aを参照して、ライトデモーション用移動計画ページ数が0であるか否かを判断する(S2802)。
ライトデモーション用移動計画ページ数が0でない場合(S2802:N)、再配置処理プログラム604Aは、ライトリバランス処理を実行しただけではライト頻度を調整しきれなかったため、ライトデモーション処理を実行する(S2803)。その後再配置処理プログラム604Aは、性能リバランスを実行して(S1504)、本処理を終了する。
これに対し、ライトデモーション用移動計画ページ数が0である場合(S2802:Y)、再配置処理プログラム604Aは、ライトデモーション処理を実行する必要はないため、性能リバランスを実行して(S1504)、本処理を終了する。以上の処理により、ホスト101からのライト頻度が過多であるためティア1を構成するSSDの寿命を維持することができない場合、ティア2にライト負荷が高いページを移動して、ティア1内のSSDの寿命を維持することができる。
図29は、ティア間再配置処理のフローチャートを示す。このティア間再配置処理は、プロセッサ114と再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
まず再配置処理プログラム604Aは、閾値決定処理プログラム604により算出されたティア間I/O閾値に基づいて、全てのパリティグループ内の各ページをティア1又は2に再配置する。このとき再配置について未判定のページがあるか否かを判断する(S2901)。
未判定のページがある場合(S2901:Y)、再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503Aを参照して、この未判定の対象ページが所属するティアがティア2であるか否かを判断する(S2902)。
対象ページが所属するティアがティア2である場合(S2902:Y)、再配置処理プログラム604Aは、プール毎再配置管理テーブル504Aを参照して、対象ページのI/O頻度がティア間I/O閾値以上であるか否かを判断する(S2903)。
対象ページのI/O頻度がティア間I/O閾値以上である場合(S2903:Y)、再配置処理プログラム604Aは、対象ページをティア2からティア1に移動する(S2904)。これに対し、対象ページのI/O頻度がティア間I/O頻度未満である場合(S2903:N)、再配置処理プログラム604Aは、何もせずにステップS2901に移行する。
ステップS2902に戻り、対象ページが所属するティアがティア1の場合(S2902:N)、再配置処理プログラム604Aは、プール毎再配置管理テーブル504Aを参照して、対象ページのI/O頻度がティア間I/O閾値未満であるか否かを判断する(S2905)。
対象ページのI/O頻度がティア間I/O閾値未満である場合(S2905:Y)、再配置処理プログラム604Aは、対象ページをティア1からティア2に移動する(S2906)。これに対し、対象ページのI/O頻度がティア間I/O頻度以上である場合(S2905:N)、再配置処理プログラム604Aは、何もせずにステップS2901に移行する。
再配置処理プログラム604Aは、全てのパリティグループ内の各ページについて判定を終えると、本処理を終了する。以上の処理により、ホスト101からのI/O頻度及び各ティアの性能に応じて、各ティアにページを再配置することができる。
図30は、ライトデモーション処理のフローチャートを示す。このライトデモーション処理は、プロセッサ114と再配置処理プログラム604Aとの協働により実行される。説明の便宜上、処理主体を再配置処理プログラム604Aとして説明する。
まず再配置処理プログラム604Aは、閾値決定処理プログラム604により算出されたライトデモーション用移動計画ページ数、ライト削減閾値及びライトデモーション閾値に基づいて、異なるティア間でページを再配置する。このとき再配置について未判定のページがあるか否かを判断する(S3001)。
未判定のページがない場合(S3001:N)、再配置処理プログラム604Aは本処理を終了する。これに対し未判定のページがある場合(S3001:Y)、再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503Aを参照して、この未判定の対象ページが所属するパリティグループの移動元PG種別がライト削減PGであるか否かを判断する(S3002)。
対象ページが所属するパリティグループの移動元PG種別がライト削減PGでない場合(S3002:N)、すなわちライト追加PGである場合、再配置処理プログラム604Aは対象ページに対してライトデモーション処理を実行する必要はないと判断して、ステップS3001に移行する。
これに対し、対象ページが所属するパリティグループの移動元PG種別がライト削減PGである場合(S3002:Y)、再配置処理プログラム604Aは、ページ毎モニタテーブル501のライトI/Oカウンタ欄702を参照して、この対象ページのライト頻度を取得する。
そして再配置処理プログラム604Aは、パリティグループ毎再配置管理テーブル503Aのライト削減閾値欄905及びライトデモーション閾値欄2601を参照して、ライト削減閾値及びライトデモーション閾値を取得する。
そして取得した対象ページのライト頻度がライトデモーション閾値以上であり、かつ、ライト削減閾値未満であるか否かを判断する(S3003)。対象ページのライト頻度がライトデモーション閾値以上であり、かつ、ライト削減閾値未満でない場合(S3003:N)、再配置処理プログラム604AはステップS3001に移行する。
これに対し、対象ページのライト頻度がライトデモーション閾値以上であり、かつ、ライト削減閾値未満である場合(S3003:Y)、再配置処理プログラム604Aは、対象ページが所属するパリティグループのライトデモーション用移動実績ページ数がライトデモーション用移動計画ページ数未満であるか否かを判断する(S3004)。
対象ページが所属するパリティグループのライトデモーション用移動実績ページ数がライトデモーション用移動計画ページ数未満でない場合(S3004:N)、再配置処理プログラム604Aは、ステップS3001に移行する。
これに対し、対象ページが所属するパリティグループのライトデモーション用移動実績ページ数がライトデモーション用移動計画ページ数未満である場合(S3004:Y)、再配置処理プログラム604Aは、対象ページをティア1からティア2に移動する(S3005)。再配置処理プログラム604Aは、未判定の全てのページについて判定を終えると、本処理を終了する。
図31は、新規割り当て決定処理のフローチャートを示す。この新規割り当て決定処理は、ホスト101から新規ページに対するライト要求を受領したことを契機として、プロセッサ114と新規割り当て決定処理プログラム605との協働により実行される。説明の便宜上、処理主体を新規割り当て決定処理プログラム605として説明する。
ステップS1901〜S1905までは、第1の実施の形態における新規割り当て決定処理(図19)と同様であるため、ここでの説明は省略する。ステップS1905において、新規割り当て決定処理プログラム605は、割り当て先に設定した特性のティア1のパリティグループについて、新規ライト可能量が新規ライトI/Oカウンタよりも大きいか否かを判断する(S1905)。
新規ライト可能量が新規ライトI/Oカウンタよりも大きいパリティグループが存在しない場合(S1905:N)、再配置処理プログラム604Aは、ティア1からこれ以上ページを割り当てると、SSDの寿命を維持することができなくなると判断して、新規ページに対する実ページの割り当て先をティア2に設定する(S3101)。
ステップS1909は、第1の実施の形態における新規割り当て決定処理(図19)と同様であるため説明は省略する。以上の処理により、寿命維持のために必要な分のライト頻度をティア1から削減することができる。なお新規割り当て時にホスト101からのライト要求がシーケンシャルライトである場合、新規割り当て決定処理プログラムを実行せずに、ティア2からページを割り当てるようにしてもよい。
(2−6)第2の実施の形態による効果
以上のように第2の実施の形態におけるストレージシステム104Aによれば、ホスト101からティア1に対するライト頻度をティア2に移動することにより、一定期間当たりに許容できるライト頻度を超えたSSDの寿命劣化を緩やかにすることができる。よってSSDの保守交換回数を削減でき、ストレージシステム104Aのコストを削減することができる。
(3)第3の実施の形態
第3の実施の形態では、第1の実施の形態において説明したライト追加可能量及びライト削減要求量(図8)を算出する手法について説明する。第1の実施の形態においては、SSDからライト追加可能率及びライト削減要求率を採取し、これらを用いて上記式1及び2を計算することによりライト追加可能量及びライト削減要求量を算出するとしたが、ライト追加可能率及びライト削減要求率をSSDから直接採取することができない場合、以下の手法を用いてライト追加可能量及びライト削減要求量を算出することができる。
図32は、SSDの寿命情報として磨耗指標(Wear out Indicator)を取得し、磨耗指標からライト追加可能量及びライト削減要求量を算出するための考え方を示す。グラフの縦軸は、SSDの磨耗指標(寿命率)3201であり、横軸は、SSDを使用しはじめてからの経過年数(経過時間率)3202である。
寿命率3201は、SSDの消去回数から算出される磨耗指標を意味しており、一般的にS.M.A.R.T.情報として取得できることが知られている。磨耗指標は、値が100(=Le)に達したとき、SSDの寿命を意味し、保守交換が必要となる。経過時間率は、目標寿命期間(例えば、3年や5年)を100%(=Te)とした経過時間の割合を意味する。
直線3215は、区間Δt1(=T1−T0)の寿命率の変化ΔL1(=L1−L0)を示しており、直線の傾きは、区間Δt1のライト頻度(=W0)を表している。直線3215のライト頻度が継続すると、目標寿命期間を達成する前にSSDの寿命が尽きる。
このため、直線3216で示すライト頻度(=W1)までライト頻度を削減し、区間Δt2(=Te−T1)の間の寿命率の増加量がΔL(=Le−L1)となるように寿命劣化の速度を調整する。また一般的にSSDに対するライト頻度は、WA(Write Amplification)により、ホスト101がSSDに対して発行したライト要求の回数よりもSSD内部のフラッシュチップに対するライト回数の方が大きくなることが知られている。SSDのWA値は、(フラッシュチップに対するライト回数÷ホスト101からのライト要求の回数)により算出される。
以上の数値を用いてストレージシステム104は、寿命を維持するために必要なライト削減要求量を算出する。ライト削減要求量は、下記式10を計算して算出することができる。
またライト頻度が目標寿命期間を達成するにあたり余裕がある場合、ストレージシステム104は、ライト追加可能量を算出する。ライト追加可能量は、下記式11を計算して算出することができる。
以上により、一般的に取得可能なSSDの寿命情報からSSD PGに対するライト追加可能量及びライト削減要求量(図8)を算出することができる。そして算出したライト追加可能量及びライト削減要求量に基づいてページを再配置することにより、ストレージシステム104のコストを削減することができる。
なお上記説明してきた実施の形態においては、「書き込み」上限回数の少ないSSDのライト回数を削減するようにページを再配置することで、書き込み上限回数の少ないSSDの寿命を延ばす構成について説明してきたが、「書き換え」上限回数の少ないSSDについても上記構成を採用することにより、同様に寿命を延ばすことができる。SSDにおける書き換えとは、複数ページから構成されるブロックを一旦消去し、その後ブロック内の各ページにデータを書き込む一連の処理をいう。よって書き換えを1回行うと、消去と書き込みとを両方行うことになる。すなわち書き換え上限回数の少ないSSDと、書き込み上限回数の少ないSSDとを同様に取り扱うことで、書き換え上限回数の少ないSSDの寿命を延ばすことができる。
また上記説明してきた実施の形態においては、書き込み上限回数の少ないSSDの「ライト頻度」(ライト回数)を削減するようにページを再配置することで、書き込み上限回数の少ないSSDの寿命を延ばす構成について説明してきたが、ライトする「データ量」を削減するようにページを再配置することでも、同様に書き込み上限回数の少ないSSDの寿命を延ばすことができる。ライトするデータ量が大きい場合には複数ページにデータをライトする必要があり、よってライト回数も増加するためである。