以下、図面を参照して本ストレージシステム,ストレージ制御装置および制御プログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
(I)第1実施形態の説明
図1は第1実施形態の一例としての情報処理装置1のハードウェア構成を例示する図、図2はその機能構成を示す図である。
情報処理装置1は、例えば、ストレージ装置やサーバコンピュータであり、図1に例示するように、CPU(Central Processing Unit)10,アダプタ20,DRAM(Dynamic Random Access Memory)31,HDD(Hard Disk Drive)40および複数(本実施形態では2つ)のSSD32−1,32−2を備える。
HDD40は、各種データやプログラム等を格納する記憶装置である。HDD40は2つ以下もしくは4つ以上備えてもよい。また、複数のHDD40を用いてRAID(Redundant Arrays of Inexpensive Disks)を形成してもよい。以下、HDD40をディスク40という場合がある。
ストレージ装置においては、CPU10,アダプタ20,DRAM31およびSSD32−1,32−2は、ストレージ制御装置(CM:コントロールモジュール)に備えられる。
アダプタ20は、CPU10とHDD40およびSSD32−1,32−2とを通信可能に接続し、これらのCPU10,HDD40,SSD32−1,32−2の間で各種コマンドやデータの授受を行なうインタフェースである。
DRAM31は、主記憶装置であり、CPU10が各種処理を実行する際のワーキングメモリとして利用されるとともに、情報処理装置1としての1次キャッシュとしても用いられる。
以下、DRAM31を、メモリ31という場合がある。メモリ31は、DRAMに限定されるものではなく、例えば、DDR SDRAM(Double-Data-Rate Synchronous Dynamic Random Access Memory)等の揮発性メモリであってもよい。
DRAM31の記憶領域には、後述する寿命管理テーブル123aを構成する情報が格納される。
SSD32−1,32−2は、記憶媒体にNANDフラッシュ等の半導体素子メモリを用いた半導体記憶装置である。半導体素子メモリは、データの書き込みや削除を行なうことで、ビットエラー率が増える特性を有する。従って、SSD32−1,32−2には使用回数制限がある。
なお、一般に、SSD32−1,32−2はDRAM31よりもアクセス性能が低く(低速)、且つ、DRAM31よりも大容量である。
本情報処理装置1においては、これらの複数(本実施形態では2つ)のSSD32−1,32−2の記憶領域が、2次キャッシュとして用いられる。
以下、SSD32−1をSSD#0と表し、SSD32−2をSSD#1と表す場合がある。
また、以下、SSDを示す符号としては、複数のSSDのうち1つを特定する必要があるときには符号32−1,32−2または#0,#1を用いるが、任意のSSDを指すときには符号32を用いる。
HDD40から読み出されたデータは、2次キャッシュであるSSD32に格納(ステージング)される。また、これらのSSD32に格納されたデータは、2次キャッシュドライバ102によって読み出され(キャッシュリード)、1次キャッシュであるメモリ31(DRAM31)に格納される。
以下、SSD32を2次キャッシュ32という場合がある。また、メモリ31を1次キャッシュ31という場合がある。
CPU10は、種々の制御や演算を行なう処理装置(プロセッサ,コンピュータ)であり、図示しないROM(Read Only Memory)やHDD40に格納されたOS(Operating System)やプログラム(制御プログラム,デバイスドライバ)を実行することにより、種々の機能を実現する。
本第1実施形態の情報処理装置1は、図2に示すように、キャッシュ制御部101,2次キャッシュドライバ102,ディスクドライバ103およびユーザアプリ104としての機能を有する。
そして、これらのキャッシュ制御部101,2次キャッシュドライバ102,ディスクドライバ103およびユーザアプリ104は、CPU10がプログラム(制御プログラム)を実行することで実現される。
なお、これらのキャッシュ制御部101,2次キャッシュドライバ102およびディスクドライバ103としての機能を実現するためのプログラム(制御プログラム)は、例えば図示しない記録媒体に記録された形態で提供される。そして、CPU10(コンピュータ)はその記録媒体からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してCPU10に提供するようにしてもよい。
キャッシュ制御部101,2次キャッシュドライバ102およびディスクドライバ103としての機能を実現する際には、内部記憶装置(本実施形態ではDRAM31等)に格納されたプログラムがCPU10によって実行される。このとき、記録媒体に記録されたプログラムをCPU10が読み取って実行するようにしてもよい。
キャッシュ制御部101は、ユーザアプリ104からデータの読み出しもしくは書き込みの要求を受け付ける。キャッシュ制御部101は、データの読み出しもしくは書き込みの要求を受けると、そのアクセス対象のデータが1次キャッシュ31もしくは2次キャッシュ32上に存在するかを確認する。アクセス対象のデータが1次キャッシュ31上に存在する場合、そのデータはDRAM31上に配置されているので、キャッシュ制御部101は、直接、DRAM31からデータの読み出しもしくは、DRAM31へのデータの書き込みを行なってユーザアプリ104に応答を行なう。
一方、アクセス対象のデータが2次キャッシュ32上に存在する場合は、キャッシュ制御部101は、2次キャッシュドライバ102にデータの読み出しもしくは書き込み要求を行なう。
データが1次キャッシュ31および2次キャッシュ32のいずれにもない場合、キャッシュ制御部101は、ディスクドライバ103に対して、データの読み出し要求または書き込み要求を行なう。このディスクドライバ103がHDD40からのデータの読み出し、もしくはHDD40へのデータの書き込みを行なう。
また、キャッシュ制御部101は、データのアクセス頻度に応じて、ディスクドライバ103に対してデータの読み出しを要求し、読み出したデータを2次キャッシュ32へ書き込ませるステージング(Staging)を行なう。ステージングは、ユーザアプリ104からのデータ要求とは非同期にバックグラウンドで実行される。
なお、ステージングに対して、2次キャッシュ32上の任意のデータをユーザアプリ104からの要求に応じて書き換える操作を、2次キャッシュ32へのライトと呼び、ステージングとは区別するものとする。
2次キャッシュ32に載せるデータの選択方法は、例えば1次キャッシュ31から追い出されたデータをHDD40から再読出しして2次キャッシュ32へ書き込むなど、適宜変更して実施することができる。
ディスクドライバ103は、HDD40からのデータ読み出し、もしくはHDD40へのデータの書き込みを行なう。ディスクドライバ103は、キャッシュ制御部101からのディスクアクセス要求に応じて、HDD40からのデータ読み出し、もしくはHDD40へのデータの書き込みを行なう。
2次キャッシュドライバ102は、SSD32からのデータ読み出し、もしくはSSD32へのデータの書き込みを行なう。すなわち、2次キャッシュドライバ102は、2次キャッシュ32に対するデータの書き込みや読み出しを行なう。
本第1実施形態において、2次キャッシュドライバ102は平準化制御部121としての機能を有する。
平準化制御部121は、本情報処理装置1の2次キャッシュ32として使用している複数(本実施形態では2つ)のSSD32について、全てのSSD32の寿命満了時期が同じ(もしくはほぼ同じ)になるように一定時間当たりの書き込み量を制限する。
従来手法においては、SSDの保証期間はSSD毎に固定の値として取り扱っている。本第1実施形態の情報処理装置1においては、2次キャッシュ32として使用している全てのSSD32が同時期に寿命を迎えるようにするために、残り保証期間を全てのSSD32で同一にする制御を行なう。
すなわち、平準化制御部121は、残り保証期間をSSD32単体から2次キャッシュ32全体へと拡張して取り扱う。
平準化制御部121は、各SSD32の残り保証期間に基づき、以下の式(1)により2次キャッシュ全体の残り保証期間を算出する。
2次キャッシュ全体の残り保証期間 =(SSD#0の残り保証期間 + SSD#1の残り保証期間)/SSD台数・・・(1)
また、平準化制御部121は、上記式(1)を用いて算出した2次キャッシュ全体の残り保証期間を用いて、以下の式(2)により、SSD32毎に単位時間当たりの書き込み可能量を算出する。このSSD32の単位時間当たりの書き込み可能量は、個々のSSD32に単位時間に書き込むことができるデータ量を示す。なお、単位時間は、SSD32の書き込み可能量を制限する時間単位であり、例えば、10秒とする。
単位時間当たりSSDの書き込み可能量 = ((SSD TBW−SSDへの総書き込み量)/2次キャッシュ全体の残り保証期間)×単位時間・・・(2)
従って、SSD#0およびSSD#1の各書き込み可能量は、それぞれ、上記式(2)を用いて以下のように求められる。
SSD#0の単位時間当たり書き込み可能量 = ((SSD#0 TBW − SSD#0への総書き込み量)/2次キャッシュ全体の残り保証期間)×単位時間
SSD#1の単位時間当たり書き込み可能量 = ((SSD#1 TBW − SSD#0への総書き込み量)/2次キャッシュ全体の残り保証期間)×単位時間
平準化制御部121(2次キャッシュドライバ102)は、寿命管理テーブル123aを用いて、各SSD32の寿命を管理する。
図3は本第1実施形態の一例としての情報処理装置1における寿命管理テーブル123aを説明するための図である。
この図3に示す例においては、寿命管理テーブル123aは、TBW,保証期間,総書き込み量,稼動時間,単位時間当たり書き込み可能量,書き込み制限状態および全体の残り保証期間を寿命情報として管理する。
なお、TBW,保証期間,総書き込み量,単位時間当たり書き込み可能量および書き込み制限状態は、SSD32毎に設定される(管理単位)。これに対して、全体の残り保証期間は、複数の2次キャッシュ32を含むシステム全体を単位に設定される。また、図中の上向き矢印(↑)は、一つ上の項と同じ値(同上)であることを示す。
また、TBW,保証期間,総書き込み量および稼動時間としては、当該SSD32に予め書き込まれた値が初期値として用いられる。また、単位時間当たり書き込み可能量については、当該SSD32の本情報処理装置1への組み込み時に、上記式(2)を用いて算出された値が初期値として用いられる。
総書き込み量は、SSD32に書き込まれたデータの総量であり、例えばメモリ31上に保持される。2次キャッシュドライバ102は、SSD32への書き込みを行うたびに総書き込み量を加算するとともに、単位時間当たりの書き込み可能量を減算する。
また、2次キャッシュドライバ102は、単位時間が経過するごとに単位時間当たり書き込み可能量の値を式(2)により再計算する。
単位時間当たり書き込み可能量の値が0となった場合に、2次キャッシュドライバ102は、そのSSD32に対して、書き込み制限状態を設定する。すなわち、書き込み制限状態フラグ“1”を設定する。2次キャッシュドライバ102は、書き込み制限状態に“1”が設定されたSSD32に、これ以降、単位時間が経過するまでの間は、当該SSD32への書き込み要求に対してエラーを応答する。
稼動時間は、そのSSD32が使用された時間の総計であり、2次キャッシュドライバ102により定期的(例えば、数時間毎)に更新される。
単位時間当たり書き込み可能量は、上述した式(2)により算出される値である。書き込み制限状態とは、SSD32への書き込みが制限されているか否かを示す情報である。全体の残り保証期間は、上述した式(1)により算出される値である。
本第1実施形態の情報処理装置1において、平準化制御部121は、単位時間当たりの書き込み可能量を算出するに際して、SSD32毎の保証期間ではなく、上記式(1)により算出した、2次キャッシュ全体の残り保証期間を用いる。
この2次キャッシュ全体の残り保証期間としては、本情報処理装置1の起動時に上記式(1)を用いて算出された値が初期値として設定される。また、2次キャッシュ全体の残り保証期間は、2次キャッシュ32を構成するうちの少なくとも1つのSSD32を交換または増設する際に再計算される。また、この際、交換や増設を行なわないSSD32についても、単位時間当たり書き込み可能量の再計算を行なう。
2次キャッシュドライバ102は、単位時間が経過する毎に、単位時間当たり書き込み可能量を再計算し、また、SSD32が書き込み制限状態に設定されていれば、“0”を設定することでこれをリセットする。
上述の如く構成された情報処理装置1において、2次キャッシュドライバ102は、SSD32への書き込みを行うたびに総書き込み量を加算するとともに、単位時間当たりの書き込み可能量を減算する。書き込み可能量が再計算されるまでの間に、この単位時間当たりの書き込み可能量の値が0となった場合、単位時間あたりに書き込み可能な容量を超過したことを示す。そこで、2次キャッシュドライバ102は、SSD32を書き込み制限状態にする。
具体的には、2次キャッシュドライバ102は、寿命管理テーブル123aに書き込み制限状態フラグをセットすることで、SSD32を書き込み制限状態にする。
2次キャッシュドライバ102は、SSD32を書き込み制限状態にした場合には、それ以降の所定期間の間は該当SSD32への書き込み要求に対してはエラーを応答する。
また、所定時間が経過すると、2次キャッシュドライバ102は、上記の式(2)に基づき、書き込み可能量を再計算し、SSD32が書き込み制限状態であればこれをリセットする。
図4は従来の情報処理装置におけるSSDの寿命管理方法と、本第1実施形態の情報処理装置1におけるSSDの寿命管理方法とを例示する図である。
この図4においては、残り保証期間が3年のSSD#0と残り保証期間が5年のSSD#1との2つのSSD32を用いて2次キャッシュ32を構成する例を示す。
従来手法においては、符号(A)に示すように、個々のSSD32毎に保証期間が管理されるので、SSD#0は3年後に寿命を迎える一方で、SSD#1は5年後に寿命を迎え、3年後と5年後とにSSD32の交換作業が生じる。
これに対して、本第1実施形態の情報処理装置1においては、符号(B)に示すように、平準化制御部121は、先ず、以下に示すように、SSD#0とSSD#1とで構成した2次キャッシュ全体の残り保証期間を上記式(1)を用いて算出する。すなわち、
2次キャッシュ全体の残り保証期間 =(3年+5年)/2台=4年
これは2つのSSD32が4年後に同時に寿命を迎えるように書き込みを制限すべきことを意味する。
ここで、SSD#0のTBWが5PB(ペタバイト:petabyte)であり、SSD#0の総書き込み量(既に書き込んだ量)が2PBであるものとし、また、SSD#1のTBWが5PBであり、SSD#1の総書き込み量が0PBであるものとする。この場合、各SSD32の単位時間当たりの書き込み可能量は上記式(2)を用いることで、以下のように算出される。なお、書き込み制限の単位時間はSSD#0,#1間において共通で10秒であるものとする。
SSD#0の単位時間当たり書き込み可能量 =(5PB−2PB)/[{4年×(365×24×60×60)}秒]×10秒 =23MB/10秒
SSD#1の単位時間当たり書き込み可能量 =(5PB−0PB)/[{4年×(365×24×60×60)}秒]×10秒 =39MB/10秒
すなわち、残り寿命が短いSSD#0の単位時間当たり書き込み可能量を、SSD#0よりも残り寿命が長いSSD#1の単位時間当たり書き込み可能量より少なくし、SSD#0への書き込み量を絞ることで、残り保証期間が3年のSSD#0を4年もたせる。
その一方で、SSD#1の単位時間当たり書き込み可能量を多くすることで、本来5年の保証期間があるところを4年でTBWに到達するよう、データの書き込み量を制御する。
これにより、元々は異なる残り寿命を有していたSSD#0とSSD#1とが共に4年でTBWに到達し、1度の保守作業でSSD32の交換を完了させることができる。すなわち、2次キャッシュ32を構成する複数のSSD32の寿命を揃え、効率的に使用することができる。
2次キャッシュドライバ102は、残り保証期間および単位時間当たり書き込み可能量を定期的に更新する。また、SSD32を交換した場合にも2次キャッシュ32全体の残り寿命を算出し直す。これにより、SSD32が交換されて寿命の長いSSD32が追加された場合に、その分だけ2次キャッシュ32全体の寿命を長くすることができる。
(II)第2実施形態の説明
(A)構成
第2実施形態の情報処理装置1は、図1に示す第1実施形態の情報処理装置1と同様のハードウェア構成を有する。
本情報処理装置1において、SSD32は2次キャッシュ32として使用されており、SSD32上のデータは一様にアクセスされるわけではない。
図5は第2実施形態の一例としての情報処理装置1におけるキャッシュデータの分類を説明するための図である。
本第2実施形態においては、図5に示すように、SSD32上のデータを、そのデータアクセスの傾向に基づいてアクセスパターンA,B,Cの3種類に分類する。
アクセスパターンA:ライトアクセスが多いデータ。書き換え頻度が高いデータである。このアクセスパターンAのデータを、残り書き込み量の多いSSD32へ配置すべきデータであるとして取り扱う。すなわち、アクセスパターンAのページのデータは、残り寿命が長いSSD32に配置されるべきデータである。
アクセスパターンB:ライトアクセスが少なく、且つ、リードアクセスが多いデータ。リードキャッシュとしてとしてヒット率が高いが、書き換えはされないデータであるので、このアクセスパターンBのデータは、残り書き込み量の少ないSSD32へ配置することができる。すなわち、アクセスパターンBのページのデータは、残り寿命が短いSSD32に配置されるべきデータである。
アクセスパターンC:ライトアクセスが少なく、且つ、リードアクセスも少ないデータ。アクセス頻度の低いデータである。このアクセスパターンCのデータは、近い将来に破棄され、新たなデータがステージングされると考えられるため、残り書き込み量の多いSSD32へ配置すべきであるとして取り扱う。すなわち、アクセスパターンCのページのデータは、残り寿命が長いSSD32に配置されるべきデータである。
なお、上記アクセスパターンA,B,Cは、1次キャッシュ31から追い出された後、2次キャッシュ32へステージングされるデータについても同様の傾向がある。
本第2実施形態の情報処理装置1においては、上記アクセスパターンA〜Cに分類したアクセス傾向に基づいてデータをSSD32間で再配置することで、残り書き込み量の少ないSSD32へライトやステージングが集中することを防ぎ、且つ、リードキャッシュとして有効利用することができる。
なお、各SSD32は、それぞれが内部のファームウェアによって、既知の手法によりウェアレベリングを行なわれているものとする。従って、再配置の際に考慮すべき事項は、どのSSD32にデータを配置するかということであり、SSD32上のデータのありか(SSD32上の論理LBA)を考慮する必要は無い。
アクセスパターンによるデータ配置の変更は、2次キャッシュドライバ102とキャッシュ制御部101とを連携させることで実現する。
本第2実施形態の情報処理装置1においては、DRAM31の記憶領域には、後述する1次キャッシュ管理テーブル111,2次キャッシュ管理テーブル112,寿命管理テーブル123b,ページマッピングテーブル124,フリーページリスト125および交換候補ページリスト126を構成する各情報が格納される(図6参照)。
図6は第2実施形態の一例としての情報処理装置1の機能構成を示す図である。
また、第2実施形態の情報処理装置1は、図6に示すように、キャッシュ制御部101,2次キャッシュドライバ102,ディスクドライバ103およびユーザアプリ104としての機能を有する。
そして、本第2実施形態においても、これらのキャッシュ制御部101,2次キャッシュドライバ102,ディスクドライバ103およびユーザアプリ104は、CPU10がプログラム(制御プログラム)を実行することで実現される。
キャッシュ制御部101は、1次キャッシュ管理テーブル111の管理を行ない、この1次キャッシュ管理テーブル111を参照して、ユーザアプリ104より要求されたデータが1次キャッシュ31上に存在するかを確認する。
図7は第2実施形態の一例としての情報処理装置1における1次キャッシュ管理テーブル111を例示する図である。
1次キャッシュ管理テーブル111は、図7に示すように、エントリNo.に対して、LUN(Logical Unit Number),LU LBA,Read回数,Write回数およびその他キャッシュ管理情報を対応付けて管理する。
ここで、LUNは、HDD40の論理ユニット番号である。LU LBAは各HDD40における論理ブロックアドレスを示す。また、この1次キャッシュ管理テーブル111におけるエントリはキャッシュの1ページに相当する。ページとは、あるLU LBAを先頭とした固定長サイズ(例えば256ブロック)のデータの塊であり、キャッシュ制御部101はこの単位でデータを1次キャッシュ31および2次キャッシュ32に配置する。以下、キャッシュのページをキャッシュページという場合がある。
従って、例えば、1次キャッシュ管理テーブル111に、LUN=0,LU LBA=0x00となるエントリ(図7のエントリNo.=1参照)が存在する場合、1次キャッシュ31上にLUN0のLBA 0x00から1ページ分のデータが存在することを示している。
Read回数およびWrite回数は、各エントリのデータに対するリード処理およびライト処理により行なわれるアクセスのカウント値であり、キャッシュ制御部101は、1次キャッシュ31における各エントリのデータに対してデータの読み出しや書き込みを行なう度に、1次キャッシュ管理テーブル111における該当ページのRead回数もしくはWrite回数をカウントアップする。
その他のキャッシュ管理情報は、例えば、ページ内のデータ有効、無効等を示すビットマップやキャッシュのヒットミスを判定するハッシュ情報等である。キャッシュ制御部101は1次キャッシュ管理テーブル111上に様々な管理情報を保持することによって1次キャッシュ31上のページを管理する。なお、キャッシュ管理情報として管理される情報は、これらに限定されるものではなく適宜変更して実施することができる。また、これらの情報の管理方法は、適宜変更して実施することができる。
また、キャッシュ制御部101は、2次キャッシュ管理テーブル112の管理を行ない、この2次キャッシュ管理テーブル112を参照して、ユーザアプリ104より要求されたデータが2次キャッシュ32上に存在するかを確認する。
図8は第2実施形態の一例としての情報処理装置1における2次キャッシュ管理テーブル112を例示する図である。
2次キャッシュ管理テーブル112は、図8に示すように、エントリNo.に対して、LUN(Logical Unit Number),LU LBA,Read回数,Write回数,2次キャッシュLBAおよびその他キャッシュ管理情報を対応付けて管理する。
以下、図中において既述の項目や既述の符号と同じ項目や符号は、同様の内容を示しているので、その説明は省略する。
2次キャッシュLBAは、2次キャッシュ32上の論理ブロックアドレスである。本情報処理装置1において、2次キャッシュ32は、複数(例えば2つ)のSSD32を備えて構成されている。キャッシュ制御部101は、これらの複数のSSD32の記憶領域を、単一のLBA空間として扱い、下位の2次キャッシュドライバ102にて個別のSSD32の論理LBA(SSD LBA)への変換を行なうものとする。
図8に例示する2次キャッシュ管理テーブル112において、例えば、エントリNo.=1の2次キャッシュLBAの値“0x00”は、該当LU LBAのデータが2次キャッシュ32上のLBA 0x00から1ページ分存在することを示している。データが2次キャッシュ32を構成するSSD32の内のどこに存在するかは、より下層の2次キャッシュドライバ102にて判断することができる。
キャッシュ制御部101は、2次キャッシュ32上の各エントリのデータに対してデータの読み出しや書き込みを行なう度に、2次キャッシュ管理テーブル112における該当ページのRead回数もしくはWrite回数をカウントアップする。
例えば、図8に例示する2次キャッシュ管理テーブル112のエントリNo.=1の“LUN=0”および“LU LBA=0x1000”は、2次キャッシュ32上にLUN0のLBA 0x1000から1ページ分のデータが存在することを示している。そして、エントリNo.=1においては、このデータに対して、リードアクセスおよびライトアクセスがそれぞれ10回あったことを示す。
また、キャッシュ制御部101は、2次キャッシュドライバ102へデータの読み出し(Read)、書き込み(Write/Staging)を要求する際に、該当ページのRead回数、Write回数を2次キャッシュドライバ102へ通知する。
2次キャッシュ32上に存在するデータについては、キャッシュ制御部101は2次キャッシュ管理テーブル112のRead回数およびWrite回数を通知する。すなわち、1次キャッシュ31へのリードアクセスやライトアクセスを行なう場合である。
2次キャッシュ32上に存在しないデータを新たに書き込む場合、すなわちステージングアクセスを行なう場合には、キャッシュ制御部101は、1次キャッシュ管理テーブル111上のRead回数およびWrite回数を通知する。
キャッシュ制御部101は、1次キャッシュ31から破棄されたページのエントリを2次キャッシュ32へのステージング候補として記憶する。そして、キャッシュ制御部101は、バックグラウンドで該当ページをHDD40から読み出して2次キャッシュ32へステージングする際に、該当エントリのRead回数およびWrite回数を2次キャッシュドライバ102へ通知する。
ここで、キャッシュ制御部101は、1次キャッシュ管理テーブル111とは別に、2次キャッシュ管理テーブル112のような中間テーブルによって破棄したデータのRead回数やWrite回数を記憶しても良い。
2次キャッシュドライバ102は、これらの回数を元に該当ページのアクセス傾向を判定する。このページに対するアクセス傾向の判定方法については後述する。
キャッシュ制御部101は、2次キャッシュ32のLBA(2次キャッシュLBA)を指定することで2次キャッシュドライバ102へデータの読み出しや書き込みを要求する。なお、読み出しおよび書き込みの単位は、ステージングはページ単位であり、リードおよびライトは論理ブロック単位である。
ディスクドライバ103は、HDD40からのデータ読み出し、もしくはHDD40へのデータの書き込みを行なう。すなわち、ディスクドライバ103は、HDD40に対するデータの書き込みや読み出しを行なう。
2次キャッシュドライバ102は、SSD32からのデータ読み出し、もしくはSSD32へのデータの書き込みを行なう。すなわち、2次キャッシュドライバ102は、2次キャッシュ32に対するデータの書き込みや読み出しを行なう。
2次キャッシュドライバ102は、2次キャッシュ32および1次キャッシュ31のデータのアクセスパターンに応じて、データを配置するSSD32を動的に変更する。
そして、本第2実施形態においては、2次キャッシュドライバ102は、図6に示すように、第1実施形態における2次キャッシュドライバ102としての機能に加えて、再配置制御部122としての機能を備える。
再配置制御部122は、データの書き込み頻度と読み込み頻度とに着目して、SSD32間においてデータの再配置(交換,移動)を行なう。
具体的には、再配置制御部122は、書き込み頻度の高いデータを、残り書き込み量の少ないSSD32から、残り書き込み量の多いSSD32へ移動させる。また、再配置制御部122は、残り書き込み量の多いSSD32から、書き込み頻度が低く、且つ、読み込み頻度がより高いデータを選択して残り書き込み量の少ないSSD32へ移動させる制御を行なう。
本情報処理装置1においては、SSD32間においてデータの再配置を行なうことによりSSD32の残り書き込み量の偏りを解消し、書き込み制限により発生する2次キャッシュ32のヒット率低下を防ぐとともに、残り書き込み量の少ないSSD32をリードキャッシュとして有効に活用することができる。
SSD32間におけるデータの再配置においては、再配置対象のデータが格納されている再配置元のSSD32から、再配置先のSSD32へのデータ(再配置対象のデータ)の移動(第1の移動,再配置移動)が行なわれる。
また、データの再配置には、再配置の前後での各SSD32のデータ量を一定に保つために、再配置先のSSD32から再配置元のSSD32へ、交換データ(再配置対象のデータ)の移動(第2の移動,交換移動)が行なわれる。
すなわち、SSD32間におけるデータの再配置は、SSD32間におけるデータの再配置移動と交換移動との2つの処理を含む。
例えば、再配置制御部122は、SSD32間においてページデータの再配置を行なうに際して、一方のSSD32(例えば、SSD#1)から他方のSSD32(例えば、SSD32#0)にページデータを移動(再配置移動:第1の移動)させた後、これと交換に、SSD#0からSSD#1へページデータの移動(交換移動:第2の移動)を行なう。
2次キャッシュドライバ102は、SSD32へアクセスを行なう際に、指定された2次キャッシュLBAを、2次キャッシュ32を構成するSSD32のSSD NoおよびSSD32の物理LBA(SSD LBA)へ変換してSSD32へアクセスを行なう。
2次キャッシュドライバ102は、この2次キャッシュLBAの変換にページマッピングテーブル124を用いる。
図9は第2実施形態の一例としての情報処理装置1におけるページマッピングテーブル124を例示する図である。
ページマッピングテーブル124は、2次キャッシュ32の全ページを管理するものである。ページマッピングテーブル124は、例えば、図9に示すように、エントリNo.に対して、2次キャッシュLU LBA(2次キャッシュLBA),SSD No.およびSSD LBAを対応付けて管理する。
ページマッピングテーブル124は、例えば、2次キャッシュLBAの昇順で並んでいることが望ましい。
初期状態、すなわち、2次キャッシュ32へのデータ書き込みなしの状態では、各ページは特定のSSD32の物理LBAにマッピングされている。
また、キャッシュページにマッピングされた物理LBAとは別に、各SSD32は特定のページにマッピングされていないフリーの物理LBA領域を保持している。このフリーの物理LBA領域は、2次キャッシュドライバ102によって、後述するフリーページリスト125にてページ単位で管理されるものとする。
図10は第2実施形態の一例としての情報処理装置1におけるLBAマッピングの初期状態を説明するための図である。
この図10に示す例において、SSD#0は、2次キャッシュLBA=0〜999に相当し、SSD#1は2次キャッシュLBA=1000〜1999に相当する。
そして、SSD#0において、SSD LBA=0〜999が2次キャッシュLBA=0〜999に相当し、SSD#1において、SSD LBA=0〜999が2次キャッシュLBA=1000〜1999に相当する。
また、各SSD#0,#1には、それぞれ、フリー域と寿命情報を格納する領域とが備えられる。
前述した第1実施形態においては、キャッシュページに対する物理LBAのマッピングは固定であったが、本第2実施形態においては、再配置制御部122が、ページマッピングテーブル124を書き換え、SSD32間でデータの交換(再配置)を行なうことでマッピングを変更する。
なお、データの再配置はページ単位で行なう。これはキャッシュデータの空間的局所性を生かして再配置を効率的に行なうためである。
データの再配置は2つのSSD32への書き込みを伴う。そのため、頻繁に行なうとそれ自体によりSSD32の寿命を消費することになる。
ここで、データの再配置が必要とされるのはSSD32の残り書き込み量に偏りがある場合であり、残り書き込み量が均一な場合、再配置は不要である。従って、再配置制御部122は、SSD32の残り書き込み量に基づいてデータ再配置の必要性を判定する。
このように、再配置制御部(必要性判定部)122は、2次キャッシュ32を構成する複数のSSD32間において再配置を行なう必要があるか否かを判定する、再配置必要性判定機能を有する。
具体的には、再配置制御部122は、2次キャッシュ32を構成する全てのSSD32の書き込み可能量の平均値と、各SSD32の書き込み可能量とを比較する。そして、これらの値において乖離が激しい場合に、該当SSD32上にマッピングされたページについて再配置を行なう。
SSD32間におけるデータの再配置は、2つのSSD32への書き込みを伴うため、頻繁に行なうと、この再配置処理自体により、SSD32の寿命を消費することになる。
本情報処理装置1においては、再配置が必要とされるのはSSD32の残り書き込み量に偏りがある場合であり、残り書き込み量が均一な場合には再配置は不要であるものとする。そこで、再配置必要性判定機能においては、SSD32の残り書き込み量に基づいてデータ再配置の必要性を判定する。
具体的には、2次キャッシュ32を構成する全てのSSD32の書き込み可能量の平均値と、各SSD32の書き込み可能量とを比較し、乖離の激しい場合に該当SSD32上にマッピングされたページについて再配置を行なう。
再配置制御部122は、以下の式(3)〜(6)を用いて、書き込み可能量が平均値よりも一日分以上少ない場合に再配置が必要であると判定する。
2次キャッシュ全体の残り書き込み量=(SSD#0 TBW−SSD#0への総書き込み量)+(SSD#1 TBW−SSD#1への総書き込み量)・・・(3)
1日当たりの書き込み可能量平均=(2次キャッシュ全体の残り書き込み量/2次キャッシュ全体の残り保証期間(秒)×1日(=60×60×24秒))/SSD台数・・・(4)
SSDの残り書き込み量平均=2次キャッシュ全体の残り書き込み量/SSD台数・・・(5)
各SSDの残り書き込み量=(SSD TBW−SSDへの総書き込み量)・・・(6)
再配置制御部122は、上記の式(5),(6)において、以下の式(7)に示す条件を満たす場合に、再配置が必要であると判定する。
[SSDの残り書き込み量]+[1日当たりの書き込み可能量平均]<[SSDの残り書き込み量平均]・・・(7)
このように、再配置制御部(必要性判定部)122は、個々のSSD32の書き込み可能量(SSDの残り書き込み量)と、複数のSSD32におけるデータ書き込み可能量の平均値(SSDの残り書き込み量平均)とを比較する。そして、個々のSSD32の書き込み可能量と、複数のSSD32におけるデータ書き込み可能量の平均値との差が閾値(1日当たりの書き込み可能量平均)以上となった場合に、SSD32間におけるデータの再配置が必要であると判断する。
なお、上記例においては、再配置の必要性を判断する閾値として[1日当たりの書き込み可能量平均]を用いた例を示したが、これに限定されるものではなく、他の固定値を用いる等、適宜変更して実施することができる。
これらの計算は寿命管理テーブル123b(図11参照)の使用時間を更新する度に行なう。再配置制御部122は、再配置が必要であると判定した場合は、寿命管理テーブル123bにその旨を示す情報(再配置対象状態)を記憶する。また、反対に残り寿命が多いSSD32についてもそれを記憶する。
図11は第2実施形態の一例としての情報処理装置1における寿命管理テーブル123bを例示する図である。
この図11に示す例において、寿命管理テーブル123bは、図3に例示した寿命管理テーブル123aに加えて、再配置対象状態,残り書き込み量,再配置先SSDおよび1日当たりの平均書き込み可能量を寿命情報として管理する。
本第2実施形態の情報処理装置1においては、寿命管理テーブル123bに記録されるこれらの情報を用いることで、再配置必要性判定機能を実現することができる。
ここで、再配置対象状態は、SSD32毎に当該SSD32が上記の式(7)に示す条件を満たすか否かを示すフラグである。例えば、再配置対象であると判定された場合、すなわち、再配置が必要である場合には“1”が設定される。この再配置対象状態は、稼動時間更新時およびSSD32の交換時のタイミングで更新される。
残り書き込み量は、当該SSD32に書き込み可能な残容量を示す。再配置制御部122は、この残り書き込み量の値を比較して再配置先のSSD32を決定する。この残り書き込み量は、稼動時間更新時およびSSD32の交換時のタイミングで更新される。
再配置先SSDは、再配置先として決定されたSSD32を特定するための識別情報(SSD No.)が登録される。なお、再配置対象SSD数が非対象SSD数よりも多い場合には(再配置対象SSD数>非対象SSD数)、1つのSSD32が複数の再配置対象SSDの再配置先となってもよい。この再配置先SSDは、SSD32が再配置対象となったタイミングで設定される。
1日当たりの平均書き込み可能量は、上記式(4)によって算出される値であり、本情報処理装置1の起動時に算出される。また、この1日当たりの平均書き込み可能量は、例えば、稼動時間更新時およびSSD32の交換時のタイミングで更新される。
再配置制御部122(2次キャッシュドライバ102)は、単位時間ごと(例えば、10秒ごと:第1の間隔)に各SSD32について、以下に示す処理(a1)〜(a3)を行なう。
(a1)上記の式(6)に基づき、各SSD32の残り書き込み量を算出する。
(a2)上記の式(2)に基づき、単位時間あたりSSD書き込み可能量を算出する。
(a3)SSD32が書き込み制限状態であれば、この状態を解除する。
すなわち、再配置制御部122(2次キャッシュドライバ102)は、単位時間が経過する毎に、単位時間当たり書き込み可能量を再計算し、また、SSD32が書き込み制限状態に設定されていれば、“0”を設定することでこれをリセットする。
また、再配置制御部122(2次キャッシュドライバ102)は、単位時間よりはるかに大きな間隔(例えば、数時間ごと;第2の間隔)で、書き込み制限量の元となる稼働時間および再配置対象状態の更新を行なう。書き込み制限は短い時間間隔で行なうことで書き込みエラーとなる時間を最小とし、かつリアルタイム性のある制御を行なうものである。その一方で、データの再配置は短い時間間隔では効果が出にくいため、数時間の間隔で更新を行なうのである。
これらの稼働時間および再配置対象状態の更新処理は以下の処理(b1)〜(b6)に示すように行なう。
(b1)各SSD32について記憶している稼働時間を加算する。
(b2)上記の式(6)に基づき、各SSD32の残り書き込み量を更新する。
(b3)上記の式(1)に基づき、2次キャッシュ全体の残り保証期間を更新する。
(b4)上記の式(4)に基づき、1日当たりの平均書き込み可能量を更新する。
(b5)各SSD32について、上記の式(7)に基づき、再配置対象状態であるか判定する。再配置対象としたSSD32には再配置対象状態フラグを“1”に設定する。
(b6)処理(b5)で再配置対象とならなかった残りのSSD32を、残り書き込み量の多い順に再配置対象SSD32の再配置先として割り振る。具体的には再配置対象となったSSD32のエントリの再配置先SSD32に非再配置対象SSD32のSSD Noを設定する。なお、[再配置対象SSD数]>[非対象SSD数]の場合、一つのSSD32が複数の再配置対象SSD32の再配置先となっても良い。
また、再配置制御部122(2次キャッシュドライバ102)は、フリーページリスト125および交換候補ページリスト126を管理する。
フリーページリスト125には、SSD32において、データが格納されていない空きページ(空き領域)のSSD LBAがエントリ要素として登録される。すなわち、フリーページリスト125は、SSD32における空きページを管理するキューとして機能する。
初期状態ではフリーページリスト125のエントリには、2次キャッシュLBAが割り当てられていないページ(領域)のSSD LBAが設定されている。
交換候補ページリスト126には、他のSSD32にデータを交換移動させる候補であるページ(領域)のSSD LBA,2次キャッシュLBAおよびリード回数/ライト回数比率が、エントリ要素として登録される。すなわち、交換候補ページリスト126は、SSD32における移動候補(交換候補)ページを管理するキューとして機能する。
初期状態では、交換候補ページリスト126には、2次キャッシュLBAの割り当てられた任意の領域のSSD LBAが設定されている。
再配置制御部122は、SSD32間においてデータの再配置を行なうに際して、フリーページリスト125を参照して、再配置先のSSD32における空きページを確認し、この空きページに再配置対象のデータを格納することで再配置移動を実現する。
また、再配置制御部122は、データの再配置に伴う、再配置先のSSD32からの交換移動を行なうに際して、再配置先のSSD32の交換候補ページリスト126を参照して、交換移動させる交換候補のデータが格納されているページを確認する。
また、再配置制御部122は、再配置元のSSD32のフリーページリスト125を参照して、再配置元のSSD32における空きページを確認する。
そして、再配置制御部122は、再配置先のSSD32から交換候補のデータを読み出し、再配置元のSSD32の空きページに交換データを格納することで、交換移動を実現する。
本情報処理装置1においては、上述の如き、SSD32間におけるデータの再配置は、2次キャッシュ32に対するライトアクセスおよびステージングアクセスのそれぞれに伴って行なわれる。
なお、ライトアクセスに伴うデータの再配置においては、図16を用いて後述するように、DRAM31のドライバ作業域において、ライト対象2次キャッシュページのデータ(再配置対象データ)にライトデータがマージされ、このマージ後のデータが、再配置先のSSD32に格納する。
また、これらのSSD32間におけるデータの再配置(再配置移動および交換移動)に伴い、再配置制御部122は、再配置先SSD32および再配置元SSD32のそれぞれについて、フリーページリスト125と交換候補ページリスト126との更新を行なう。
なお、これらのフリーページリスト125および交換候補ページリスト126の更新方法については後述する。
図12は、第2実施形態の一例としての情報処理装置1における寿命管理テーブル123b,ページマッピングテーブル124,フリーページリスト125および交換候補ページリスト126と、SSD32との対応関係を説明するための図である。
この図12に示すように、フリーページリスト125および交換候補ページリスト126は、SSD32毎に備えられる。
また、寿命管理テーブル123bにおいては、個々のSSD32を管理対象とする要素と、システム全体を管理対象とする要素とを含む。
図11に示すように、寿命管理テーブル123bにおける個々のSSD32を管理対象とする要素とは、具体的には、TBW,保証期間,総書き込み量,稼動時間,単位時間当たり書き込み可能量,書き込み制限状態,再配置対象状態,残り書き込み量および再配置先SSDである。また、システム全体を管理対象とする要素は、全体の残り保証期間および1日当たりの平均書き込み可能量である。
これに対して、ページマッピングテーブル124においては、エントリ毎に関連付けられるSSD32が異なる。
再配置制御部122は、交換候補ページリスト126に登録されたページのデータを他のSSD32に移動させる。その際、再配置制御部122は、フリーページリスト125を参照することで、移動先のSSD32における空きページの位置を確認し、この空きページに移動対象のデータを格納することで、SSD32に格納済みのデータに影響を与えることなく、SSD32間におけるデータの移動(再配置)を実現する。
すなわち、フリーページリスト125および交換候補ページリスト126は、データ(ページ)の再配置先のSSD32(以下、再配置先SSD32という)において、ページ再配置の管理に使用される。
なお、フリーページリスト125の最大エントリ数と交換候補ページリスト126の最大エントリ数とは等しい。また、フリーページの容量は同時にデータの交換を行なう上限値となり、1単位時間当たりにSSD32へ書き込み可能な容量と同程度とする。また、この容量は、再配置元SSD32が書き込み制限状態になっても、次の単位時間までデータ交換せずに待機できる程度の容量であることが望ましい。
なお、この容量は各SSD32単体の保証期間とTBWとに基づいて算出する固定値としても良く、また、SSD32組み込み時に算出する2次キャッシュ32の全体書き込み可能量から動的に設定しても良い。
再配置制御部122(2次キャッシュドライバ102)は、再配置元SSD32からライト頻度の高いページ(図5に示すアクセスパターンAのページ)を、再配置先SSD32のフリーページリスト125の示す領域に書き込む(第1の再配置)。また、これと交換に、再配置制御部122は、交換候補ページリスト126の示すリード頻度の高いページ(アクセスパターンBのページ)を、再配置元SSD32へ書き込む(第2の再配置)。
これらのフリーページリスト125および交換候補ページリスト126は双方向リストである。例えば、フリーページリスト125のエントリには、SSD LBAが記録されている。
これに対して、交換候補ページリスト126のエントリには、SSD LBAが記録されている。さらに、交換候補ページリスト126のエントリには、2次キャッシュLBA,およびリード回数/ライト回数の回転比率が記録されている。
(B)動作
(B−1)2次キャッシュリードアクセス
例えば、ユーザアプリ104からの読み込み要求に対してキャッシュ制御部101が2次キャッシュ32のキャッシュヒット(2次キャッシュヒット)を判定した場合に、2次キャッシュ32のリードアクセスが行なわれる。
再配置制御部122は、リードアクセスを契機に、対象の2次キャッシュ32のキャッシュページのリード回数(Read回数)、およびRead回数とWrite回数との比を確認する。再配置制御部122は、例えば、2次キャッシュ32における当該リード対象のキャッシュページ(対象ページ、該当ページ)がアクセスパターンB、すなわち、残り寿命の短いSSD32へ配置すべきデータであるか判定する。
対象ページがアクセスパターンBに該当する場合には、再配置制御部122は、この対象ページについての情報をSSD32の交換候補ページリスト126に記録する。そして、再配置制御部122は、後述のライトアクセス、ステージングアクセスにおいて再配置の実施を決定した場合に、この対象ページのデータを寿命の短いSSD32へ移動(再配置)させる。
上述の如く構成された第2実施形態の一例としての情報処理装置1における2次キャッシュ32に対するリードアクセス処理を、図13に示すフローチャート(ステップA1〜A11)に従って説明する。
キャッシュ制御部101が2次キャッシュドライバ102にリード要求を発行することで、以下の処理が開始される。
本処理においては、2次キャッシュLBA,論理ブロック数,リード対象ページ(以下、対象ページ,該当2次キャッシュページもしくは該当ページという場合がある)の2次キャッシュ管理テーブル112におけるRead回数およびWrite回数が入力される。また、これらの情報に加えて、DRAM31上におけるデータを転送すべき領域の指定も行なわれる。
ステップA1において、再配置制御部122(2次キャッシュドライバ102)は、ページマッピングテーブル124に対して、該当2次キャッシュLBAを含むページのエントリを参照する。
ステップA2において、再配置制御部122は、対象ページにマッピングされたSSD No,SSD LBAおよびLBAオフセットより、対応するSSD32のSSD LBAからデータを読み出し、指定されたDRAM31上の1次キャッシュ領域に転送する。
なお、指定された全てのデータを転送した後、2次キャッシュドライバ102は、キャッシュ制御部101にリード完了を通知する。また、キャッシュ制御部101は、さらに上位のユーザアプリ104にリード完了を通知する。以降の処理は、ユーザアプリ104に対してはバックグラウンド処理として実行することができる。
ステップA3において、キャッシュ制御部101は、2次キャッシュドライバ102からリード完了の通知を受けると、2次キャッシュ管理テーブル112の該当ページのRead回数をインクリメント(1を加算)する。
ステップA4において、2次キャッシュドライバ102は、キャッシュ制御部101から受け取ったRead回数が一定の閾値以上であるかを判定する。Read回数が閾値より小さい場合は(ステップA4のNOルート参照)、該当2次キャッシュページを交換候補とはせずに、処理を終了する。
一方、ステップA4における確認の結果、Read回数が閾値以上の場合は(ステップA4のYESルート参照)、ステップA5に移行する。
ステップA5において、2次キャッシュドライバ102は、キャッシュ制御部101から通知された該当2次キャッシュ32のキャッシュページのWrite回数およびRead回数を用いて、該当2次キャッシュページのRead回数/Write回数の比率を算出する。
ステップA6において、ステップA5で算出したRead回数/Write回数の比が1未満である場合(ステップA6のNOルート参照)、すなわち、対象ページがRead回数よりWrite回数が多いページの場合には、処理を終了する。
一方、ステップA5で算出したRead回数/Write回数の比が1以上である場合(ステップA6のYESルート参照)、すなわち、対象ページがRead回数の方がWrite回数よりも多いページである場合には、前述したアクセスパターンBに該当し、このページのデータは、寿命の短い他のSSD32に書き込む交換候補ページとする。
ステップA7において、再配置制御部122は、交換候補ページリスト126を参照して、リードした2次キャッシュページがマッピングされている該当SSD32の交換候補ページリスト126のエントリが最大まで埋まっているかを確認する。すなわち、再配置制御部122は、交換候補ページリスト126に空きがあるかを確認する。
確認の結果、該当SSD32の交換候補ページリスト126に空きが無ければ(ステップA7のNOルート参照)、ステップA8に移行する。
ステップA8において、再配置制御部122は、交換候補ページリスト126の最後のエントリのRead回数/Write回数比率が、リード対象2次キャッシュ32のページのRead回数/Write回数比以上かを確認する。すなわち、再配置制御部122は、対象ページのRead回数/Write回数比が、交換候補ページリスト126の最後尾に登録されている(最終エントリの)Read回数/Write回数比よりも大きいか否かを確認する。
確認の結果、リード対象ページのRead回数/Write回数比が、交換候補ページリスト126の最終エントリ以下の場合には(ステップA8のNOルート参照)、再配置制御部122は、対象の2次キャッシュ32のキャッシュページを交換候補とはせずに、処理を終了する。
また、確認の結果、リード対象ページのRead回数/Write回数比が、交換候補ページリスト126の最終エントリより大きい場合には(ステップA8のYESルート参照)、ステップA9に移行する。
ステップA9において、再配置制御部122は、交換候補ページリスト126の最終エントリをリード対象ページのSSD LBA,2次キャッシュLBAおよびRead回数/Write回数比を用いて上書きする。その後、ステップA11に移行する。
また、ステップA7における確認の結果、該当SSD32の交換候補ページリスト126に空きがある場合には(ステップA7のYESルート参照)、ステップA10に移行する。
ステップA10においては、再配置制御部122は、交換候補ページリスト126の最後尾にエントリを追加し、SSD LBA,2次キャッシュLBAおよびRead回数/Write回数比を記録する。
その後、ステップA11において、再配置制御部122は、交換候補ページリスト126の最後尾エントリについて、当該交換候補ページリスト126に登録されている他のエントリとRead回数/Write回数比を比較する。そして、再配置制御部122は、交換候補ページリスト126に登録されたエントリを、Read回数/Write回数比の大きいものから順に並ぶようにソートして(並べ替えて)、処理を終了する。
(B−2)2次キャッシュライトアクセス
再配置制御部122は、2次キャッシュ32上のデータが更新されるタイミングで、書き込み対象(ライト対象)のSSD32が再配置対象状態である場合には、書き込み先ページのデータの再配置を検討する。
具体的には、例えば、ライト対象の2次キャッシュ32のキャッシュページ(以下、ライト対象ページ、対象ページ,当該ページという場合がある)のWrite回数が一定値以上の場合に、再配置制御部122は、対象ページが前述したアクセスパターンA、すなわち、対象ページのデータは寿命の長いSSD32へ配置すべきデータであると判定する。再配置制御部122は、寿命管理テーブル123bに設定されたSSD32へマッピングを変更する。
また、再配置制御部122は、再配置先SSD32の交換候補ページリスト126からRead回数/Write回数比の大きいページを再配置対象のSSD32へ書き込む。これによって、ライトアクセス頻度の高いページは残り書き込み量の多いSSD32へ、ライトアクセス頻度は低く、リードキャッシュとしては有用なページを残り書き込み量の少ないSSD32へ再配置してSSD32の使用の効率化を図る。
上述の如く構成された第2実施形態の一例としての情報処理装置1における2次キャッシュ32に対するライトアクセス時の処理を、図16および図17を参照しながら、図14および図15に示すフローチャート(ステップB1〜B32)に従って説明する。
なお、図14はステップB1〜B18を、図15はステップB19〜B32を、それぞれ示す。また、図16および図17は、それぞれデータの再配置を伴うライトの過程を説明するための図であり、図16はSSD#1からSSD#0へのデータの移動(再配置)を、図17はSSD#0からSSD#1へのデータの移動(再配置)をそれぞれ示す。
なお、これらの図16,図17に示す例においては、SSD#0の残り書き込み可能量が多く、SSD#1の残り書き込み可能量が少ないものとする。
例えば、ユーザアプリ104からのライト要求に対してキャッシュ制御部101が2次キャッシュ32のキャッシュヒットを判定した場合に、2次キャッシュ32のライトアクセスが行なわれる。
なお、ライトの2次キャッシュヒットに対する処理として、2次キャッシュ32上のデータを直接書き換える手法と、1次キャッシュ31上に書き込んだ後にバックグラウンドで2次キャッシュ32上のデータを書き換える手法とが考えられる。本第2実施形態においては、後者を想定するものとする。
キャッシュ制御部101が2次キャッシュドライバ102に対してライト要求を発行することで、以下の処理が開始される(図16の符号P00参照)。
本処理においては、2次キャッシュLBA,論理ブロック数,ライト対象ページ(以下、対象ページ,該当2次キャッシュページもしくは該当ページという場合がある)の2次キャッシュ管理テーブル112におけるRead回数およびWrite回数が入力される。また、これらの情報に加えて、DRAM31上におけるデータを転送すべき領域の指定も行なわれる。
ステップB1において、再配置制御部122(2次キャッシュドライバ102)は、ページマッピングテーブル124に対して、該当2次キャッシュLBAを含むページのエントリを参照する。
ステップB2において、再配置制御部122は、対象ページのマッピングされたSSD32の寿命管理テーブル123bを参照し、該当SSD32が書き込み制限状態であるかを確認する。
該当SSD32が書き込み制限状態の場合、すなわち、ライト要求されたページのマッピング先SSD32が書き込み制限状態の場合には(ステップB2のYESルート参照)、ステップB3に移行する。
ステップB3において、再配置制御部122は、データの書き込みをあきらめて該当2次キャッシュページを破棄する。
再配置制御部122は、キャッシュ制御部101に対して、書き込み不可である旨を通知する。キャッシュ制御部101は、2次キャッシュ管理テーブル112から該当ページを削除し、処理を終了する。
ここで、ユーザアプリ104によるライトデータは、2次キャッシュ32上には直接格納されず、常にDRAM31の1次キャッシュ31上もしくはHDD40上に存在するものとする。2次キャッシュ32上にしか存在しないライトデータを有する場合は、該当2次キャッシュページの削除が不可能だからである。
なお、このようなデータの存在を許す実装は、上述したステップB3の処理に代えて、該当2次キャッシュページを読み出してDRAM31の1次キャッシュ31もしくはHDD40に書き込んでから削除する等の処理に置き換えることで実現可能である。
また、ステップB2における確認の結果、該当SSD32が書き込み制限状態でない場合(ステップB2のNOルート参照)、ステップB4に移行する。
ステップB4において、再配置制御部122は、更に、該当SSD32の寿命管理テーブル123bを参照して、再配置対象状態であるかを確認する。確認の結果、SSD32が再配置対象状態でない場合には(ステップB4のNOルート参照)、データのSSD32間の再配置(移動)は実施せず、ステップB8に移行する。
一方、確認の結果、SSD32が再配置状態である場合には(ステップB4のYESルート参照)、ステップB5に移行する。
ステップB5においては、再配置制御部122は、該当2次キャッシュページのWrite回数が所定の閾値以上であるかを確認する。確認の結果、Write回数が閾値未満の場合は(ステップB5のNOルート参照)、データのSSD32間の再配置は不要と判断され、ステップB8に移行する。
また、ステップB5における確認の結果、Write回数が閾値以上の場合は(ステップB5のYESルート参照)、ステップB6に移行する。
ステップB6においては、再配置制御部122は、ライト要求された2次キャッシュページのマッピング先SSD32の寿命管理テーブル123bより再配置先SSD Noを取得し、再配置先SSD32が書き込み制限状態であるかを確認する。
確認の結果、再配置先SSD32が書き込み制限状態である場合(ステップB6のYESルート参照)、書き込みの制限を優先して再配置はあきらめ、ステップB8へ移行する。
また、確認の結果、再配置先SSD32が書き込み制限状態でない場合には(ステップB6のNOルート参照)、ステップB7に移行する。
ステップB7においては、再配置制御部122は、再配置先SSD32のフリーページリスト125にエントリが存在するか確認する。再配置先SSD32のフリーページリスト125にエントリがない場合(ステップB7のNOルート参照)、すなわち、フリーページが枯渇している場合は、再配置をあきらめて、ステップB8に移行する。
なお、上記のステップB6,B7の処理を、再配置先SSD32を確認する再配置先SSDチェック処理という。この再配置先SSDチェック処理においては、SSD32の再配置をあきらめて、再配置を行なわないという選択が行なわれ得る。
この再配置先SSDチェック処理は後述するステージングアクセスにおいても同様に行なわれる(図18のステップC8参照)。
また、以下のステップB8〜B13においては、データの再配置を実施せずに、現在マッピングされているSSD32のSSD LBAへライトデータを書き込む処理を行なう。
先ず、ステップB8〜B10において、SSD32への書き込み量判定処理を行なう。以下のステップB8〜B10の処理は、SSD32にデータの書き込みを行うたびに実施する処理であり、これによりSSD32が書き込み制限状態になるべきかを判定する。
ステップB8において、再配置制御部122は、マッピング先SSD32の寿命管理テーブル123bを参照して、単位時間当たりの書き込み可能量からライト要求で指定された論理ブロック数を減算する。
ステップB9において、再配置制御部122は、減算した結果の書き込み可能量が0以下であるかを判定し、書き込み可能量が0以下である場合には(ステップB9のYESルート参照)、ステップB10に移行する。
ステップB10において、再配置制御部122は、マッピング先SSD32の単位時間当たり書き込み可能量が0以下となった場合に、該当SSD32を書き込み制限状態にする。
なお、書き込み可能量が0以下となった場合に、超過した分の書き込み量を寿命管理テーブル123bに記憶し、次の単位時間で設定される書き込み可能量からあらかじめ超過分の書き込み量を減じても良い。
その後、ステップB11において、再配置制御部122は、マッピング先SSD32が書き込み制限状態でなく再配置も実施しない場合、マッピング先SSD32にライトデータを書きこむ。また、ステップB9における確認の結果、減算した結果の書き込み可能量が0より多い場合にも(ステップB9のNOルート参照)、ステップB11に移行する。
ステップB12において、マッピング先SSD32へのデータ書き込みが完了したら、再配置制御部122は、該当SSD32の寿命管理テーブル123bの総書き込み量に書き込んだブロック数分を加算する。その後、再配置制御部122は、キャッシュ制御部101にライト(Write)処理の処理完了を通知する。
ステップB13において、2次キャッシュドライバ102からライト処理の完了を通知されたキャッシュ制御部101は2次キャッシュ管理テーブル112の該当ページのエントリのWrite回数を加算し、処理を終了する。
一方、ステップB7における確認の結果、再配置先SSD32のフリーページリスト125にエントリがある場合(ステップB7のYESルート参照)、すなわち、フリーページがある場合は、ページの再配置を行なうべく、ステップB14以下の処理を行なう。
ステップB14において、再配置制御部122は、フリーページリスト125の先頭エントリを取得し、同エントリに記載されたページをライト対象ページの再配置先とする。
ステップB15において、再配置制御部122は、再配置先に指定されたSSD32(再配置先SSD32)について書き込み量判定処理を行なう。すなわち、再配置制御部122は、再配置先SSD32の寿命管理テーブル123bにおける単位時間当たり書き込み可能量を減算して、0以下となるか判定する。単位時間当たり書き込み可能量が0以下の場合は、該当SSD32を書き込み制限状態にする。なお、前述したステップB8においては、ライト要求された論理ブロック数を減じたのに対し、ここでは1ページ分のブロック数を減じる。
ステップB16において、再配置制御部122は、ライト要求された2次キャッシュページのマッピングされたSSD32(再配置元SSD32)から、DRAM31上の作業領域(ドライバ作業域)に該当ページのデータ(1ページ分)を読み出す(図16の符号P01参照)。
再配置元SSD32からのライト対象2次キャッシュページのデータ(再配置対象データ)の読み出しが完了すると、ステップB17において、再配置制御部122は、DRAM31の作業領域上に読み出したライト対象2次キャッシュページのデータに、キャッシュ制御部101より要求され、DRAM31(1次キャッシュ31)に格納されていたライトデータをマージする(図16の符号P02参照)。
ステップB18において、再配置制御部122は、DRAM31上の作業領域から再配置先SSD32のSSD LBAへ該当ページデータを書きこむ(図16の符号P03参照)。
ステップB19において、再配置制御部122は、再配置先SSD32への書き込みが完了すると、再配置先SSD32の寿命管理テーブル123bの総書き込み量を加算する。
ステップB20において、再配置制御部122は、ページマッピングテーブル124の該当ページエントリのSSD No、SSD LBAを再配置先のページの値に更新する。なお、SSD LBAは再配置先SSD32のフリーページリスト125のエントリで指定された値を用いる。
ステップB21において、再配置制御部122は、再配置元SSD32のライト対象ページが存在したSSD LBAをフリーページとして、再配置元SSD32のフリーページリスト125の最後尾エントリに追加する(図16の符号P04参照)。
ステップB22において、再配置制御部122は、ページマッピングテーブル124および再配置元SSD32のフリーページリスト125の更新が完了すると、キャッシュ制御部101へライト完了を通知する。通知を受けたキャッシュ制御部101は2次キャッシュ管理テーブル112の該当ページのWrite回数を1加算する。
以上のように、SSD32間における2次キャッシュページデータの再配置(第1の再配置)を伴うライト処理が行なわれる。
なお、これ以降、すなわち、ステップB23以降の処理は、2次キャッシュドライバ102のみが実施し、キャッシュ制御部101に対してはバックグラウンド処理として動作できる。
そして、以下に示すステップB23〜B32の処理を、ページ交換処理という。このページ交換処理は、後述するステージングアクセスにおいても同様に行なわれる(図18のステップC18参照)。
ステップB23において、上述の如く第1の再配置を実施した場合、再配置制御部122は、キャッシュ制御部101にライト完了を通知した後でバックグラウンドに処理を継続する。
初めに、再配置制御部122は再配置先SSD32の交換候補ページリスト126の先頭エントリを取得する。これはRead回数が一定以上でRead回数/Write回数の比率の高い寿命の近い再配置元SSD32に配置すべきデータである。
ステップB24において、2次キャッシュドライバ102は再配置元SSD32が書き込み制限状態であるか確認する。なお、前述した図14のステップB2において当該SSD32が書き込み制限状態であるか否かを確認したにもかかわらず再確認を行なうのは、以下の理由による。すなわち、再配置元SSD32からのデータの読み出しおよび再配置先SSD32へのデータ書き込みを待っている間に、別のプロセスによって再配置元SSD32へ更なるデータ書き込みが実施された可能性があるからである。
ステップB24における確認の結果、再配置元SSD32が書き込み制限状態でない場合には(ステップB24のNOルート参照)、ステップB25において、次の監視時間まで待機する。すなわち、次の単位時間まで処理を待ち、制限状態が解除されると、ステップB26に移行する。
また、ステップB24における確認の結果、再配置元SSD32が書き込み制限状態である場合にも(ステップB24のYESルート参照)、ステップB26に移行する。
ステップB26においては、再配置制御部122は再配置元SSD32について書き込み量判定処理を行なう。すなわち、前述したステップB8〜B10と同様の処理を行なう。ここで、単位時間当たり書き込み可能量から減じるブロック数は1ページ分のブロック数である。
ステップB27において、再配置制御部122は、再配置先SSD32の交換候補ページリスト126の先頭エントリを取得し、そこに記載された再配置先SSD32のSSD LBAから1ページ分のデータをDRAM31上の作業領域に読み出す(図17の符号P05参照)。
DRAM31上の作業領域へのデータの読み出しが完了すると、ステップB28において、再配置制御部122は、再配置元SSD32のフリーページリスト125の任意のエントリ(フリーページエントリ)を取得する。
ステップB29において、再配置制御部122は、再配置元SSD32のフリーページエントリに指定されたSSD LBAに、ステップB27においてDRAM31の作業領域に読み出したページデータを書きこむ(図17の符号P06参照)。
このフリーページへのデータの書き込みが完了すると、ステップB30において、再配置制御部122は、再配置元SSD32の総書き込み量を1ページ分加算する。
ステップB31において、再配置制御部122は、交換候補ページリスト126のエントリ(交換候補ページエントリ)の2次キャッシュLBAに基づいて、ページマッピングテーブル124の該当ページエントリを検索し、SSD No、SSD LBAの値を再配置元SSD32のフリーページエントリに記載されたSSD LBAを用いて更新する。これにより、再配置制御部122は、ページマッピングテーブル124における交換候補ページのエントリを書き換える。
ステップB32において、再配置制御部122は、再配置先SSD32の交換候補ページリスト126のエントリのSSD LBAをフリーページリスト125のエントリの最後尾に追加して、処理を終了する。
(B−3)ステージングアクセス
2次キャッシュ32へのステージングは、ライトと同様にSSD32への書き込みを伴う処理であるが、ライトアクセスが既存のデータ変更であるのに対し、書き込まれるデータがこれまでとは別もの、すなわち、HDD40上の別の領域のデータである点で、ライトアクセスと異なる。
このため、キャッシュ制御部101は、Read回数やWrite回数を通知する際に、2次キャッシュ管理テーブル112ではなく、1次キャッシュ管理テーブル111(もしくは別のステージング管理テーブル)の値を使用する。
2次キャッシュ管理テーブル112の該当エントリは新規作成され、Read回数およびWrite回数は0に初期化される。
再配置制御部122(2次キャッシュドライバ102)は、ライトアクセスと同様に、このWrite回数をもとにページの再配置を決定するが、閾値はライトアクセスの場合とは異なる。
1次キャッシュ31と2次キャッシュ32とでは、アクセス頻度やデータがキャッシュ上(記憶領域上)に存在する時間が異なるため、Write回数の閾値はライトアクセスとステージングアクセスとで別に設定され、それぞれ適切にチューニングされることが望ましい。
Write回数が閾値以上の場合は、再配置制御部122は、該当ページがアクセスパターンA、すなわち、寿命の長いSSD32に配置すべきデータであると判定して、ライトアクセスの場合と同様に再配置先SSD32へページを再配置する。
上述の如く構成された第2実施形態の一例としての情報処理装置1における2次キャッシュ32に対するステージングアクセス時の処理を、図19および図20を参照しながら、図18に示すフローチャート(ステップC1〜C18)に従って説明する。
なお、図19および図20は、それぞれデータの再配置を伴うステージングの過程を説明するための図であり、図19はSSD#0へのデータの移動(再配置)を、図20はSSD#0からSSD#1へのデータの移動(再配置)をそれぞれ示す。
なお、これらの図19,図20に示す例においては、SSD#0の残り書き込み可能量が多く、SSD#1の残り書き込み可能量が少ないものとする。
キャッシュ制御部101は、ユーザアプリ104の要求とは非同期に2次キャッシュ32へのデータのステージングを決定し、ステージング要求が発行される。これにより、以下の処理が開始される。
これは例えば1次キャッシュ31からのデータの追い出しなどを契機に対象ページが設定され、ユーザアプリ104に対してバックグラウンドで実行される。
ステップC1において、キャッシュ制御部101は、HDD40よりステージング対象ページをDRAM31の作業領域に読み出す。なお、実際には、キャッシュ制御部101は、ディスクドライバ103等の、HDD40の制御を管理する別のソフトウェアモジュールに、HDD40からのデータの読み出しを依頼する。
HDD40からDRAM31上へ1ページ分のデータの読み出しが完了すると、ステップC2において、キャッシュ制御部101は、2次キャッシュドライバ102にステージング要求を行なう(図19の符号P07参照)。
本処理においては、2次キャッシュLBAおよび、1次キャッシュ管理テーブル111の該当ページのRead回数およびWrite回数が入力される。また、これらの情報に加えて、DRAM31上における該当ページが存在する作業領域の指定も行なわれる。
ここで、ステージング対象の2次キャッシュLBAは、キャッシュ制御部101が、2次キャッシュ32の領域の内の無効なページの中から選択する。キャッシュ制御部101は、無効なページを管理するために2次キャッシュ管理テーブル112とは別に2次キャッシュLBAに関するフリーページリストなどを持つ。
キャッシュ制御部101からステージング要求を受けると、ステップC3において、再配置制御部122(2次キャッシュドライバ102)は、要求された2次キャッシュLBAに一致する、ページマッピングテーブル124のエントリを参照する。
ステップC4においては、再配置制御部122は、ページマッピングテーブル124でステージング要求先の2次キャッシュ32のページ(2次キャッシュページ)にマッピングされたSSD32の寿命管理テーブル123bを参照する。そして、該当ページにマッピングされたSSD32が書き込み制限状態であるかを確認する。
確認の結果、SSD32が書き込み制限状態である場合は(ステップC4のYESルート参照)、ステップC5に移行する。ステップC5において、再配置制御部122は、キャッシュ制御部101へステージング不能である旨を通知する。再配置制御部122は、該当ページのステージングを諦め、DRAM31上に読み出したデータを破棄して処理を終了する。
ステップC4における確認の結果、マッピング先SSD32が書き込み制限状態でない場合(ステップC4のNOルート参照)、ステップC6に移行する。ステップC6においては、再配置制御部122は、さらに、該当SSD32が再配置対象状態であるかを確認する。
ステップC6における確認の結果、SSD32が再配置対象状態の場合(ステップC6のYESルート参照)、ステップC7において、再配置制御部122は、ステージング要求時に受け取った該当ページの1次キャッシュ31上のWrite回数が閾値以上であるかを判定する。
1次キャッシュ31上のWrite回数が閾値以上である場合(ステップC7のYESルート参照)、再配置制御部122は、ステージングするSSD32を再配置先SSD32に変更する。
再配置制御部122(2次キャッシュドライバ102)は、ステージング要求された2次キャッシュLBAのマッピングされていたSSD32の寿命管理テーブル123bより再配置先SSD Noを取得する。ステップC8において、再配置制御部122は、このSSD32について再配置先SSDチェック処理を実施する。すなわち、前述した図14のステップB6,B7と同様の処理を行なう。
このステップC8における再配置先SSDチェック処理において、ステージング先のSSD32の再配置をあきらめ、再配置を行なわない場合には、ステップC9に移行する。
また、ステップC6においてSSD32が再配置対象状態でない場合(ステップC6のNOルート参照)、および、ステップC7において1次キャッシュ31上のWrite回数が閾値未満である場合(ステップC7のNOルート参照)も、それぞれステップC9に移行する。
ステップC9において、再配置制御部122は、マッピング先SSD32について書き込み量判定処理を行なう。すなわち、前述した図14のステップB8〜B10と同様の処理を行なう。なお、単位時間当たり書き込み可能量から減算するのはキャッシュ制御部101からのステージング要求で指定された1ページ分の論理ブロック数である。
その後、ステップC10において、再配置制御部122は、ページマッピングテーブル124上でステージング対象2次キャッシュLBAがマッピングされたSSD32のSSD LBAへデータを書き込む。この書き込むデータは、上記ステップC1において、DRAM31上に読み出されたHDD40上のデータである。
SSD32へのHDD40のデータの書き込みが完了すると、ステップC11において、再配置制御部122は、マッピング先SSD32の総書き込み量に1ページ分の論理ブロック数を加算する。
ステップC12において、再配置制御部122は、キャッシュ制御部101にステージング完了を通知する。通知を受けたキャッシュ制御部101は2次キャッシュ管理テーブル112にステージングが成功した2次キャッシュページのエントリを追加する。2次キャッシュ管理テーブル112のWrite回数およびRead回数は0に初期化される。テーブルの更新が完了すると、ステージング処理を終了する。
一方、ステップC8の再配置先SSDチェック処理の結果、ステージング対象ページを再配置する場合には、ステップC13に移行する。
ステップC13において、再配置制御部122は、再配置先SSD32のフリーページリスト125の先頭エントリを取得し、同エントリのSSD LBAを再配置先とする。
ステップC14において、再配置制御部122は、上述したステップC1でDRAM31上に読み出されたHDD40上のデータを再配置先SSD32のフリーページエントリに示されたSSD LBAへ書きこむ(図19の符号P08参照)。
なお、ライトアクセスとは異なり、ステージングにおいては、再配置元SSD32上のマッピングされたSSD LBA上のデータは無効データなので、読み出しとマージ処理は不要である。
ステップC14における、再配置先SSD32へのDRAM31上のデータの書き込みが完了すると、ステップC15において、再配置制御部122は、再配置先SSD32の寿命管理テーブル123bの総書き込み量を1ページ分加算する。
ステップC16において、再配置制御部122は、ページマッピングテーブル124の該当ページエントリのSSD No、SSD LBAを更新する。すなわちSSD Noを再配置先SSD32に、SSD LBAをフリーページリスト125のエントリに示されたSSD LBAに変更する。
ステップC17において、再配置制御部122は、キャッシュ制御部101へステージング完了を通知する。ステージング完了の通知を受けたキャッシュ制御部101は2次キャッシュ管理テーブル112にステージングしたページのエントリを追加する。これは、スップC12における再配置しない場合の処理と同様の処理が実行される。
キャッシュ制御部101へステージング完了通知を行なった後、再配置制御部122は、ステップC18においてページ交換処理を実施する。
ページ交換処理は、図15のステップB23〜B32と同様の処理が行なわれる(図20の符号P09,P10参照)。また、この処理は、キャッシュ制御部101に対してはバックグラウンドに行われる。その後、処理を終了する。
(C)効果
このように、第2実施形態の一例としての情報処理装置1によれば、上述した第1実施形態と同様の作用効果を得ることができる他、2次キャッシュ32のデータについて、リード回数およびライト回数を計数することでページ毎にデータアクセス傾向を求め、各データアクセス傾向に応じて、再配置先のSSD32を決定する。
具体的には、再配置制御部122が、ライトアクセスが多いデータ(アクセスパターンA)を、残り書き込み量の多い(残り寿命が長い)SSD32へ再配置する。
また、ライトアクセスが少なく、且つ、リードアクセスが多いデータ(アクセスパターンB)を、残り書き込み量の少ないSSD32へ配置する。
さらに、ライトアクセスが少なく、且つ、リードアクセスも少ないデータ(アクセスパターンC)を残り書き込み量の多いSSD32へ配置する。
これらにより、SSD32の寿命を縮め易いライトアクセスが多いデータが、残り寿命が長いSSD32に配置される一方で、SSD32の寿命を縮め難いデータが、残り寿命が短いSSD32に配置され、SSD32の残り寿命の差を短くすることができ、2次キャッシュ32として用いられる複数のSSD32をバランスよく利用することができる。
再配置制御部122が、アクセスパターンに基づいてページデータの再配置を行なうことで、SSD32の残り書き込み量の片よりを防止し、特定のSSD32に対して極端な書き込み制限が行なわれることで生じる弊害を阻止することができる。例えば、SSD32への書き込み失敗多発や、これによって生じる2次キャッシュ32のヒット率低下を防止することができる。
ページマッピングテーブル124を書き換えることで、SSD32間のデータの再配置を容易に行なうことができる。
また、SSD32間におけるデータの再配置をページ単位で行なうことで、キャッシュデータの空間的局所性を生かして再配置を効率的に行なうことができる。
キャッシュ制御部101が、1次キャッシュ31における各エントリのデータに対してデータの読み出しや書き込みを行なう度に、1次キャッシュ管理テーブル111における該当ページのRead回数もしくはWrite回数をカウントアップする。そして、再配置制御部122が、これらのRead回数およびWrite回数に基づき、ページ毎のアクセスパターンを容易に判定することができる。
前述した第1実施形態の情報処理装置1においては、式(2)に基づき、残りの書き込み可能量が少ないSSD32ほど制限量が少なくなる。また、この制限量は複数のSSD32の間での書き込み可能量の差が大きいほど少なくなる。
第1実施形態の手法ではSSD32の物理LBAとキャッシュデータ(論理LBA)のマッピングとは固定であるが、上記のように制限量が極端に少なくなった場合に、特定の論理LBAについてキャッシュデータの更新(ライトアクセス)や新規キャッシュデータの配置(ステージング)が制限される。すなわち、寿命の短いSSD32の領域に、ライトアクセスやステージングが集中した場合にエラーとなるケースが多くなり、2次キャッシュ32の使用効率が低下するおそれがある。
これに対して、本第2実施形態の情報処理装置1においては、書き込み頻度の高いデータを残り書き込み量の少ないSSD32からより多いSSD32へ移動し、また、残り書き込み量の多いSSD32から書き込み頻度が低く、読み込み頻度のより高いデータを選択して残り書き込み量の少ないSSD32へ移動する。
これによりSSD32の残り書き込み量の偏りを解消し、書き込み制限により発生する2次キャッシュ32のヒット率低下を防ぐとともに、残り書き込み量の少ないSSD32をリードキャッシュとして有効に活用することができる。
また、再配置制御部122が、複数のSSD32の残り書き込み量に偏りがあるかを判断することで、再配置の必要性を判断する。すなわち、再配置制御部122が、例えば、上記の式(5),(6)において、上記の式(7)に示す条件を満たす場合に、再配置が必要であると判定する。
これにより、SSD32の残り書き込み可能量が平均値よりも一日分以上少ない場合に再配置が必要であると判定され、再配置が行なわれるので、複数のSSD32間において、残り書き込み量の偏りが大きくなり過ぎることを阻止することができる。
(III)その他
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
例えば、上述した各実施形態においては、2つのSSD32を2次キャッシュ32として用いる例を示しているが、これに限定されるものではない。すなわち、3つ以上のSSD32を2次キャッシュ32として用いてもよく、種々変形して実施することができる。
また、2次キャッシュ32は、SSD32に限定されるものではなく、SSD以外の半導体記憶装置等を2次キャッシュ32として用いてもよい。
上述した各実施形態においては、情報処理装置1の2次キャッシュとして備えられた複数のSSD32間におけるデータの再配置を行なう例について示しているが、これに限定されるものではない。例えば、ストレージ装置の記憶装置(ストレージ)として複数のSSD32を備え、これらの複数のSSD32間におけるデータの再配置に適用してもよく、種々変形して実施することができる。
第2実施形態においては、2次キャッシュドライバ102が平準化制御部121および再配置制御部122としての機能を備えているが、これに限定されるものではなく、平準化制御部121としての機能を削除もしくは無効化してもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
(IV)付記
以上の各実施形態に関し、更に以下の付記を開示する。
(付記1)
記憶装置と、
データを一時的に格納する複数の半導体記憶装置と、
前記半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部と
を備えることを特徴とする、ストレージシステム。
(付記2)
前記決定部が、
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記1記載のストレージシステム。
(付記3)
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
ことを特徴とする、付記1または2記載のストレージシステム。
(付記4)
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記1〜3のいずれか1項に記載のストレージシステム。
(付記5)
前記複数の半導体記憶装置のそれぞれの書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定する必要性判定部を備え、
前記必要性判定部が、前記データの移動が必要であると判定した場合に、前記移動処理部が、前記データを前記移動先の半導体記憶装置に移動させる
ことを特徴とする、付記1〜4のいずれか1項に記載のストレージシステム。
(付記6)
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出する算出部と、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する制限部と
を備えることを特徴とする、付記1〜5のいずれか1項に記載のストレージシステム。
(付記7)
データを一時的に格納する複数の半導体記憶装置を備え、
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
ことを特徴とする、ストレージシステム。
(付記8)
複数の半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定する決定部と、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる、移動処理部と
を備えることを特徴とする、ストレージ制御装置。
(付記9)
前記決定部が、
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記8記載のストレージ制御装置。
(付記10)
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
ことを特徴とする、付記8または9記載のストレージ制御装置。
(付記11)
前記決定部が、
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
ことを特徴とする、付記8〜10のいずれか1項に記載のストレージ制御装置。
(付記12)
前記複数の半導体記憶装置のそれぞれの書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定する必要性判定部を備え、
前記必要性判定部が、前記データの移動が必要であると判定した場合に、前記移動処理部が、前記データを前記移動先の半導体記憶装置に移動させる
ことを特徴とする、付記8〜11のいずれか1項に記載のストレージ制御装置。
(付記13)
前記複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出する算出部と、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する制限部と
を備えることを特徴とする、付記8〜12のいずれか1項に記載のストレージ制御装置。
(付記14)
複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
ことを特徴とする、ストレージ制御装置。
(付記15)
複数の半導体記憶装置上のデータに対するアクセス傾向と前記複数の半導体記憶装置のそれぞれの残り書き込み量とに基づいて、当該データの移動先の半導体記憶装置を、前記複数の半導体記憶装置の中から決定し、
前記複数の半導体記憶装置のうち一の半導体記憶装置のデータを、前記決定部によって決定された前記移動先の半導体記憶装置に移動させる
処理を、プロセッサに実行させる、制御プログラム。
(付記16)
ライトアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
処理を、前記プロセッサに実行させる、付記15記載の制御プログラム。
(付記17)
ライトアクセスが少なく、且つ、リードアクセスが多いデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が少ない前記半導体装置を前記移動先として決定する
処理を、前記プロセッサに実行させる、付記15または16記載の制御プログラム。
(付記18)
ライトアクセスが少なく、且つ、リードアクセスが少ないデータに対して、前記複数の半導体記憶装置の中で残り書き込み量が多い前記半導体装置を前記移動先として決定する
処理を、前記プロセッサに実行させる、付記15〜17のいずれか1項に記載の制御プログラム。
(付記19)
前記複数の半導体記憶装置のそれぞれの書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値とを比較し、前記半導体記憶装置の書き込み可能量と、前記複数の半導体記憶装置におけるデータ書き込み可能量の平均値との差が閾値以上の場合に、前記複数の半導体装置間のデータの移動が必要であると判定し、
前記データの移動が必要であると判定した場合に、前記データを前記移動先の半導体記憶装置に移動させる
処理を、前記プロセッサに実行させる、付記15〜18のいずれか1項に記載の制御プログラム。
(付記20)
前記複数の前記半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
処理を、前記プロセッサに実行させる、付記15〜19のいずれか1項に記載の制御プログラム。
(付記21)
複数の半導体記憶装置の各残り保障期間の平均値を算出して、前記複数の半導体記憶装置全体の残り平均保証期間を決定し、
前記残り平均保証期間を用いて、各半導体記憶装置のそれぞれの単位時間当たり残り書き込み可能量を算出し、
前記単位時間当たり残り書き込み可能量が所定値以下となった前記半導体記憶装置に対して、書き込み制限状態を設定する
処理をプロセッサに実行させる制御プログラム。