(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-06
(45)【発行日】2023-01-17
(54)【発明の名称】制御装置、制御プログラム、及び制御方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20230110BHJP
G06F 3/08 20060101ALI20230110BHJP
G06F 12/02 20060101ALI20230110BHJP
G06F 11/14 20060101ALI20230110BHJP
【FI】
G06F3/06 302J
G06F3/06 304Z
G06F3/08 H
G06F3/06 302A
G06F12/02 510A
G06F12/02 530E
G06F11/14 656
(21)【出願番号】P 2018133588
(22)【出願日】2018-07-13
【審査請求日】2021-04-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(72)【発明者】
【氏名】小川 純一
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2018-022397(JP,A)
【文献】米国特許出願公開第2017/0220292(US,A1)
【文献】特開2014-106918(JP,A)
【文献】米国特許出願公開第2017/0177235(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 12/02
G06F 11/14
(57)【特許請求の範囲】
【請求項1】
揮発性メモリと、
停電が発生した場合に実行される前記揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部と、
前記不揮発性メモリが有するコントローラから得られる割合であって、前記ダミーデータの書き込み後の
、前記不揮発性メモリの全体の記憶領域に対する、前記不揮発性メモリにおける
制御装置が前記不揮発性メモリの記憶領域として認識しない領域と前記制御装置が前記不揮発性メモリの記憶領域として認識する領域のうちのデータが書き込まれていない空き領域
とを含むフリースペースの
前記割合に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの
フリースペースが不足するか否かを判定する判定部と、
前記判定部により前記不揮発性メモリの
フリースペースが不足すると判定された場合、前
記コントローラに対して、前記不揮発性メモリの
フリースペースを増加させる増加処理
であって、前記不揮発性メモリに離散して書き込まれたデータを集めてブロック単位で前記フリースペースに書き込み、前記離散して書き込まれたデータの格納元の複数のブロックを解放して前記フリースペースを増加させる前記増加処理を実行させる実行信号を送信する送信部と、
をそなえる、制御装置。
【請求項2】
前記判定部は、前記コントローラから前
記割合を取得し、前
記割合が所定の閾値以下である場合、前記不揮発性メモリの
フリースペースが不足すると判定する、
請求項1に記載の制御装
置。
【請求項3】
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
請求項1
又は請求項2に記載の制御装置。
【請求項4】
前記実行信号は、前記増加処理の実行時間を含み、
前記送信部は、前記実行信号により前記増加処理が実行された後の前
記割合が所定の割合を超えるまで、前記コントローラに対して、前記実行信号を繰り返し送信する、
請求項1~
3のいずれか1項に記載の制御装置。
【請求項5】
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記不揮発性メモリが有するコントローラから得られる割合であって、前記ダミーデータの書き込み後の
、前記不揮発性メモリの全体の記憶領域に対する、前記不揮発性メモリにおける
コンピュータが前記不揮発性メモリの記憶領域として認識しない領域と前記コンピュータが前記不揮発性メモリの記憶領域として認識する領域のうちのデータが書き込まれていない空き領域
とを含むフリースペースの
前記割合に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの
フリースペースが不足するか否かを判定し、
前記不揮発性メモリの
フリースペースが不足すると判定した場合、前
記コントローラに対して、前記不揮発性メモリの
フリースペースを増加させる増加処理
であって、前記不揮発性メモリに離散して書き込まれたデータを集めてブロック単位で前記フリースペースに書き込み、前記離散して書き込まれたデータの格納元の複数のブロックを解放して前記フリースペースを増加させる前記増加処理を実行させる実行信号を送信する、
処理を
前記コンピュータに実行させる、制御プログラム。
【請求項6】
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記不揮発性メモリが有するコントローラから得られる割合であって、前記ダミーデータの書き込み後の
、前記不揮発性メモリの全体の記憶領域に対する、前記不揮発性メモリにおける
コンピュータが前記不揮発性メモリの記憶領域として認識しない領域と前記コンピュータが前記不揮発性メモリの記憶領域として認識する領域のうちのデータが書き込まれていない空き領域
とを含むフリースペースの
前記割合に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの
フリースペースが不足するか否かを判定し、
前記不揮発性メモリの
フリースペースが不足すると判定した場合、前
記コントローラに対して、前記不揮発性メモリの
フリースペースを増加させる増加処理
であって、前記不揮発性メモリに離散して書き込まれたデータを集めてブロック単位で前記フリースペースに書き込み、前記離散して書き込まれたデータの格納元の複数のブロックを解放して前記フリースペースを増加させる前記増加処理を実行させる実行信号を送信する、
処理を前記コンピュータが実行する、制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御装置、制御プログラム、及び制御方法に関する。
【背景技術】
【0002】
ストレージ装置を制御するストレージ制御装置では、動作中に外部電源が喪失した(停電した)場合に、不揮発性メモリに対して、揮発性メモリのバックアップが行なわれることがある。不揮発性メモリとしては、例えば、SSD(Solid State Drive)等の半導体記憶デバイス等が挙げられる。
【0003】
バックアップでは、揮発性メモリに格納されたデータ、例えばストレージ制御装置の動作に用いられるデータが、バッテリ等の予備電源を利用して不揮発性メモリのバックアップ領域に書き込まれる。これにより、外部電源の再投入後、ストレージ制御装置は、不揮発性メモリのバックアップ領域から揮発性メモリにバックアップデータを読み出すことで、停電発生前の動作を再開することができる。
【0004】
SSD等の不揮発性メモリは、データの格納領域として複数のブロックを有する。各ブロックは複数のページにより構成される。
【0005】
不揮発性メモリでは、ページ又はブロックに対するデータの書き込みや消去が繰り返されると、不揮発性メモリの格納領域には、有効なデータが複数のブロック上で離散して格納された状態になり、全ページが空き状態である空きブロック数が減少することがある。
【0006】
不揮発性メモリのコントローラは、空きブロックが一定量(一定数)以下になった場合、空きブロックの作成のためにガベージコレクション(GC;garbage collection)動作と呼ばれる自律動作を行なうことがある。GCでは、コントローラは、複数のブロック上で離散している有効なデータを集めて1つの空きブロックに書き込み、これらの有効なデータの格納元である複数のブロックを消去して複数の空きブロックを作成する、という処理を繰り返す。
【先行技術文献】
【特許文献】
【0007】
【文献】特開2013-200726号公報
【文献】特開2016-192025号公報
【文献】特開2013-61799号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
ここで、停電時のバックアップでは、不揮発性メモリの格納領域に対して、揮発性メモリ内のデータがブロック単位でシーケンシャルに書き込まれる。このとき、格納領域において、バックアップの書込先となる空きブロックの不足が発生した場合、不揮発性メモリが自律的にGCを実行することがある。
【0009】
停電時のバックアップは予備電源を利用して行なわれるため、バックアップを実行可能な時間は予備電源の電力容量に応じて制限される。
【0010】
しかし、停電時のバックアップにおいてGCが発生する場合、バックアップ完了までの平均書込速度が低下するため、バックアップの実行時間が増加し得る。この場合、制限された時間内にメモリのバックアップが完了せず、ストレージ制御装置の外部電源の再投入後に、停電発生前の動作を再開することが困難となる場合がある。
【0011】
また、バックアップ中にGCが発生した場合にもバックアップを正常に完了させようとすると、性能、コスト、装置規模等の観点でストレージ制御装置の設計自由度が低下する場合がある。
【0012】
なお、上述した不都合は、ストレージ制御装置に限らず、種々の制御装置、例えば、装置の停電が発生した場合にSSD等の不揮発性メモリに対して揮発性メモリのバックアップを行なう情報処理装置においても同様に生じ得る。
【0013】
1つの側面では、本発明は、不揮発性メモリに対するバックアップ実行時間の増加を抑制することを目的とする。
【課題を解決するための手段】
【0014】
1つの態様では、制御装置は、揮発性メモリと、書込部と、判定部と、送信部と、をそなえてよい。前記書込部は、不揮発性メモリに設けられたバックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なってよい。前記バックアップ領域は、停電が発生した場合に実行される前記揮発性メモリ内のデータのバックアップの書き込み先であってよい。前記判定部は、前記不揮発性メモリが有するコントローラから得られる割合であって、前記ダミーデータの書き込み後の、前記不揮発性メモリの全体の記憶領域に対する、前記不揮発性メモリにおける制御装置が前記不揮発性メモリの記憶領域として認識しない領域と前記制御装置が前記不揮発性メモリの記憶領域として認識する領域のうちのデータが書き込まれていない空き領域とを含むフリースペースの前記割合に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリのフリースペースが不足するか否かを判定してよい。前記送信部は、前記判定部により前記不揮発性メモリのフリースペースが不足すると判定された場合、前記コントローラに対して、前記不揮発性メモリのフリースペースを増加させる増加処理であって、前記不揮発性メモリに離散して書き込まれたデータを集めてブロック単位で前記フリースペースに書き込み、前記離散して書き込まれたデータの格納元の複数のブロックを解放して前記フリースペースを増加させる前記増加処理を実行させる実行信号を送信してよい。
【発明の効果】
【0015】
1つの側面では、不揮発性メモリに対するバックアップ実行時間の増加を抑制することができる。
【図面の簡単な説明】
【0016】
【
図2】一実施形態の一例としてのストレージ装置の機能構成例を示すブロック図である。
【
図3】
図2に示す記憶部のデータ構成例を示す図である。
【
図4】
図2に示す記憶部における物理記憶ブロックの状態の一例を示す図である。
【
図5】一実施形態に係るGCの実行条件の一例を示す図である。
【
図6】ダミーデータの書き込みによるフリースペースの残容量の変化の一例を示す図である。
【
図7】一実施形態に係るCM(Controller Module)によるGC実施判定処理の動作例を示すフローチャートである。
【
図8】
図7に示すGC実行処理の動作例を示すフローチャートである。
【
図9】一実施形態に係るCMによる停電検出後処理の動作例を示すフローチャートである。
【
図10】一実施形態に係るCMによる復電後処理の動作例を示すフローチャートである。
【
図11】一実施形態に係るストレージ装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【0017】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【0018】
〔1〕一実施形態
〔1-1〕一実施形態について
上述したストレージ制御装置においては、DRAM(Dynamic Random Access Memory)の大容量化により、バックアップ対象の揮発性メモリの容量が拡大している。一方、バッテリ等の予備電源の電力容量は、一定に留まっている。このため、ストレージ制御装置の筐体サイズを変えずに、バックアップ対象の容量の拡大に対応するには、SSD等の不揮発性メモリの書込速度を向上させることになる。
【0019】
ストレージ制御装置によるメモリのバックアップ先となるSSDとしては、例えば、NANDフラッシュメモリを利用したSSDが挙げられる。NANDフラッシュメモリはデータの上書き動作に非対応であるため、コントローラは、データの書き換えを行なう際に、事前に既存のデータを消去することになる。しかし、NANDフラッシュメモリにおけるデータの消去は、複数のページにより構成されるブロック単位での実行に制限される。
【0020】
(処理1)
このため、コントローラは、1ページの書き換えを行なう場合、REMW(Read-Erase-Modify-Write)を実行する。REMWでは、コントローラは、書込対象のページを含むブロック内の全ページを不揮発性メモリのキャッシュに読み出し、格納領域の当該ブロックを消去する。そして、コントローラは、キャッシュ上のブロックデータに書込対象のデータをマージし、当該ブロックデータを格納領域の消去後のブロックに書き込む。
【0021】
(処理2)
上記処理1におけるREMWの動作では、ブロック単位でのデータの読出、消去、変更、及び書込が発生し、データの書込速度の低下を引き起こす。そこで、コントローラは、ブロックの交代処理を行なう。例えば、コントローラは、データの書き込みを行なう際に、消去済みの空きブロックが存在する場合、REMWにおけるブロックの消去を省略とし、変更後のブロックデータを空きブロックに書き込むことで、消去の待ち時間分の時間短縮を図る。なお、コントローラは、所定のタイミングで、消去を省略したブロックを消去し、当該ブロックを次の書き込みのための空きブロックとする。なお、以下の説明において、空きブロックは、予備ブロック又はフリーブロックと称されてもよい。
【0022】
(処理3)
処理1及び処理2におけるデータの書き込みや消去が繰り返されると、SSDの格納領域には、有効なデータが複数のブロック上で離散して格納された状態になり、予備ブロックが減少することがある。そこで、SSDのコントローラは、空きブロックが一定量(一定数)以下になった場合、上述したGC動作を行なう。
【0023】
図1は、GCの動作の一例を説明する図である。
図1の(1)に示すように、ホスト装置からのライトにより、記憶領域(NANDフラッシュメモリ)が歯抜けにライトされた状態となる。なお、
図1の(1)において、各枠はページを示し、白塗りの枠はデータの書き込みが可能なフリーページであり、網掛けの枠はデータが書き込まれているページである。また、8×5の枠の集合はブロックを示す。
【0024】
ホスト装置からのライトにより、SSDのフリースペースの残容量が、例えば“Low_Threshold”(閾値)以下になった場合、SSDのコントローラは、GCが不要となる閾値(例えば、“High_Threshold”になるまでGCを実施する。なお、
図1の中段には、SSDのフリースペースの残容量に応じたGCの実施要否と、その閾値とを示す。例えば、フリースペースの残容量が、SSDが主導でGCを行なう範囲“Device Initiated GC”であれば、SSDは、GCが不要の範囲“No GC”、又は、“High_Threshold”と“Low_Threshold”との間の範囲、となるように、GCを実施する。なお、“High_Threshold”と“Low_Threshold”との間の範囲では、GCが実行されてもされなくてもよい。
【0025】
SSDは、
図1の(2)に示すように、ホストI/O中に、フリースペースの残容量が閾値以下になった場合、能動的にGCを実行する。例えば、SSDは、歯抜けにライトされたブロック内のページを、他のフリーブロックに隙間なく書き込み(
図1の(2-1)参照)、歯抜けにライトされたブロックを消去して予備(フリー)ブロックとする(
図1の(2-2)参照)。
【0026】
しかし、このようなGCの処理は、ホストI/Oの処理と競合するため、ホストI/Oが待たされることになる。例えば、ホストI/Oの処理中にGCが実行される場合、レスポンス(応答時間)は、GCが実行されない場合のレスポンスの1.5~8倍程度になることがある。
【0027】
ところで、一実施形態においては、ストレージ制御装置として、コントローラモジュール(CM;Controller Module)を例に挙げて説明する。CMは、例えば、RAID(Redundant Arrays of Inexpensive Disks)システムを構成するストレージ装置を制御するRAIDコントローラであってもよい。
【0028】
また、SSDは、バックアップデバイス(BUD;Back Up Device)の一例であってよく、メモリのバックアップ領域を有するとともに、CMの動作を実現するFW(Firmware)の格納領域、及びシステムの動作ログの記憶領域を有するものとする。
【0029】
例えば、CMは、BUDの動作ログの記憶領域に対して、ログを不定期にランダム領域に書き込む。
【0030】
この場合、BUDでは、予備ブロックの枯渇とブロックの交代処理とが不定期に発生する(処理1及び処理2が発生する)。当該ログの書き込み中にストレージ装置の停電が発生した場合、バックアップ書き込み動作では、大容量のデータが連続して書き込まれるため、BUDでは上述した処理1及び処理3が発生し、バックアップ完了までの平均書込速度が低下する。
【0031】
また、CMの動作中に停電が発生した場合、CMは、BUDのバックアップ領域に対して、停電時のメモリのバックアップ書き込みとして、連続したLBA(Logical Block Address)のシーケンシャル書き込みを行なう。
【0032】
この場合、BUD内部では、バックアップのデータがページ・ブロックに集中し歯抜けなく書き込まれる。バックアップデータが消去されると、GCの不要なフリーブロックが生成される。しかし、BUDは、指示を受けない限りバックアップデータを書き込み状態(有効なデータ)として保持するため、バックアップデータが書き込まれたブロックは、フリーブロックにはカウントされない。
【0033】
なお、停電時のバックアップ書き込みにおいて、フリーブロックの不足が発生しないように、CMが主導となってBUDのGC動作を行なうことで、書込性能低下の回避を実現することも考えられる。しかし、以下の(i)及び(ii)の理由から、CMが主導でGC動作を実行させるための実行条件は、一意ではない。
【0034】
(i)バックアップにより使用されるBUDのフリーブロック数の特定が困難である。例えば、メモリのバックアップに利用されるフリーブロックの容量(フリースペース)は、メモリサイズから一意に決まるものではない。また、バックアップ領域が複数回に亘って上書きされるときには、書込済みのブロックの消去(イレーズ)が処理されるが、CMは、これらのブロックをフリーブロックとしては算出しない。さらに、一般的なSSDデバイスのブロックやページサイズは情報開示されないことが多いため、CMは、バックアップを行なったメモリサイズの履歴から使用済みブロック数を算出することは困難である。
【0035】
(ii)バックアップが実行されるときにBUDに存在するフリーブロック数の特定が困難である。例えば、ログ書き込みの累積状態によって、BUDのブロックやページの消費状況は異なる。このため、バックアップが実行される時点でのBUDにおけるフリーブロック数は不定となる。
【0036】
以上の点に鑑み、一実施形態においては、バックアップ実行時間の増加を抑制する手法について説明する。例えば、一実施形態では、バックアップの実行時に、バックアップ書き込み先の予備ブロックの不足に起因するBUDの自己判断でのGC動作が発生しないように、CMが予備ブロックの枯渇を防ぐためのBUDのGC制御を行なう。
【0037】
ここで、一実施形態に係る手法では、SI(Storage Intelligence)を利用するものとする。SIは、GC処理のような、SSDの速度性能に影響を与える内部処理を実行するタイミングをCM等の制御装置側で制御できる技術の総称であり、標準化が進んでいる。
【0038】
SIの代表的な機能として、例えば、GC処理をSSD外部の制御装置側から起動する命令機能がある。制御装置は、当該命令を制御装置側のタイミングでSSDに発行することにより、SSDの自律GCを起動させることができる。また、当該命令では、GCの動作時間や、GCにより作成する予備ブロック容量(数)を指定することも可能である。
【0039】
〔1-2〕ストレージ装置の構成例
次に、
図2を参照して、一実施形態に係るストレージ装置1の機能構成例を説明する。ストレージ装置1は、情報処理装置の一例であり、
図2に例示するように、CM2、及び、ストレージ3をそなえてよい。
【0040】
ストレージ3は、ストレージ装置1により図示しないホスト装置等に対して提供される記憶領域を有する。例えば、ストレージ3は、複数のディスク3aをそなえてよい。例えば、ストレージ3は、複数のディスク3aによりRAID等のディスクアレイを構成してもよい。
【0041】
CM2は、ストレージ制御装置又は制御装置の一例である。CM2は、例えば、ストレージ装置1を制御し、図示しないホスト装置に対して、ストレージ3の記憶領域を提供するための種々の制御を行なってよい。なお、以下の説明において、ホスト装置からストレージ装置1に対して発行されたストレージ3へのアクセス要求に基づき、CM2が実行するストレージ3へのアクセスに係る処理を、「ホストI/O」と表記する場合がある。
【0042】
図2に示すように、CM2は、例示的に、保持部10、メモリ20、BUD30、バックアップ処理部41、ダミーデータ書込部42、及びGC実行制御部43をそなえてよい。
【0043】
保持部10は、CM2の制御に用いられる種々の情報を記憶するメモリ部の一例であり、例えば、制御情報11を記憶してよい。制御情報11は、例えば、後述するダミーデータ書込部42及びGC実行制御部43の処理に利用される閾値(TH1、TH2)等の種々のパラメータを含んでよい。
【0044】
メモリ20は、CM2の動作に用いられる種々の情報を記憶する揮発性メモリの一例である。一実施形態において、メモリ20は、ストレージ装置1(CM2)の停電が発生した際に実行されるバックアップの対象(バックアップ元)である。
【0045】
メモリ20は、例えば、ストレージ装置1(CM2)の停電後、再起動された際に、ストレージ装置1(CM2)の動作を再開するために使用される動作再開情報を記憶してよい。動作再開情報としては、例えば、CM2が停電発生の直前に実行していた処理の制御情報や、ホストI/Oに係るキャッシュの情報等が挙げられる。
【0046】
BUD30は、CM2の動作に用いられる種々の情報を記憶する不揮発性メモリの一例である。一実施形態において、BUD30は、ストレージ装置1(CM2)の停電が発生した際に実行されるバックアップの格納(退避)先(バックアップ先)である。
【0047】
BUD30は、制御部31及び記憶部32をそなえてよい。制御部31は、BUD30のコントローラの一例であり、記憶部32に対して、上述した(処理1)~(処理3)、例えば、REMWの制御、ブロックの交代処理の制御、及び、GC処理の制御、等を行なってよい。GC処理の制御は、記憶部32のフリースペースの残容量に応じて、BUD30が主導で実行されてよい。
【0048】
記憶部32は、BUD30の記憶領域であって、
図3に例示するように、論理ブロックとして、FW格納領域32a、ログメタ書込領域32b、バックアップ領域32c、空き領域32d、及び不可視領域32eを有してよい。なお、これらの領域32a~32eは、それぞれ、連続した論理アドレスによる論理アドレス範囲として表されてもよい。
【0049】
FW格納領域32aは、CM2の動作を実現するFWを格納する記憶領域であり、ログメタ書込領域32bは、システムの動作ログ等を格納する記憶領域である。バックアップ領域32cは、CM2の停電が発生した場合にCM2の予備電源を利用して実行されるメモリ20内のデータのバックアップの書き込み先の記憶領域である。不可視領域32eは、BUD30の容量としてCM2からは認識されない領域であり、制御部31により、データが未書き込みである空き領域32dとともに、フリーブロックとして使用されてよい。
【0050】
次に、
図4を参照して、記憶部32の論理アドレス、換言すれば、
図3に示す領域32a~32eの各々に対応する物理ブロック(物理記憶ブロック)の状態例を説明する。
【0051】
図4は、物理記憶ブロックの状態の一例を示す図である。
図4の例では、便宜上、1つの枠がページであり、4つのページの集合がブロックであるものとする。ページの状態としては、白塗りのページは消去済み、網掛けのページは有効なデータが記憶されている記憶有効、斜線のページは無効なデータが記憶されている(消去待ちである)記憶無効、をそれぞれ示す。
【0052】
また、
図4の例では、(a)で囲ったブロックはFW格納領域32aとして使用されており、(b)で囲ったブロックはログメタ書込領域32bとして使用されていることを示す。さらに、(c)で囲ったブロックはバックアップ領域32cとして使用されており、(d)で囲ったブロックは空き領域32dとして使用されていることを示す。これらの領域は、記憶部32の記憶容量として算出される可視領域である。一方、(e)で囲ったブロックは、記憶部32の記憶容量として算出されない不可視領域32eであることを示す。
【0053】
なお、
図4の例において、全ページが消去状態のブロックは、フリーブロックのカウント対象となる。
【0054】
図4に例示するように、BUD30のI/O性能の劣化を低減するため、制御部31は、GC、ブロックの交代処理、消去等をバックグラウンドで処理する。当該処理において、論理アドレスと
図4に示す物理ブロックとは、逐次に変換されるため、可視領域及び不可視領域における論理-物理間の割り当てが経時的に変化する。このため、
図4に示すように、論理アドレスは、連続した物理ブロックに割り当てられないことがある。
【0055】
バックアップ処理部41は、CM2に電力を供給する電源(外部電源)の喪失をCM2が検出した(停電を検出した)場合に、バッテリ等の予備電源を利用して、BUD30のバックアップ領域32cに対して、メモリ20のバックアップを行なう。バックアップの対象となるデータは、例えば、停電が検出されたときにメモリ20が記憶する有効なデータであってよい。
【0056】
なお、バックアップが完了すると、CM2は、例えば「停電」等の動作停止要因(電源切断要因)をBUD30のログメタ書込領域32b、或いは、他の不揮発性メモリ等に格納して、動作を停止してよい。また、外部電源の復旧により、CM2に外部電力が再投入されると、バックアップ処理部41は、前回の動作停止要因を参照し、停電であった場合、BUD30のバックアップ領域32cからデータをメモリ20に書き戻してよい。これにより、CM2は、停電が検出されたときのメモリ20の状態を復元してからシステム動作を再開できる。
【0057】
このように、バックアップ処理部41は、CM2の停電が発生した場合に、予備電源を利用して、バックアップ領域32cに対して、メモリ20内のデータのバックアップを実行するバックアップ部の一例である。
【0058】
ここで、CM2は、CM2における動作ログを定期的にBUD30のログメタ書込領域32bに書き込む。このため、動作ログの書き込み等により、記憶部32は、
図4に例示するような歯抜けにライトされた状態になることがある。
【0059】
図4に例示する状態において、例えば、停電によりバックアップ処理部41がバックアップ処理を実行している間に、記憶部32のフリースペースの残容量が、“Low_Threshold”(閾値)以下となった場合を想定する(
図5参照)。この場合、上述したように、BUD30においては、制御部31による内部制御としてのGCが実行され得るため、バックアップ処理におけるBUD30に対する書き込み性能が低下することになる。
【0060】
一実施形態においては、以下の手法によって、バックアップ処理の実行中にBUD30による自発的なGC(物理的なGC)の発生を抑制することにより、書き込み性能の低下を抑止する。
【0061】
ダミーデータ書込部42は、CM2の動作中、定期的に、BUD30に対して記憶部32のバックアップ領域32cに対するダミーデータの書き込み指示を発行することで、バックアップ領域32cに対してダミーデータの書き込みを行なう。CM2の動作中とは、例えば、停電が発生しておらず、外部電源からCM2に正常に給電が行なわれている状態、換言すれば、CM2の正常稼働中を意味してよい。
【0062】
例えば、ダミーデータ書込部42は、以下のダミーデータ書込処理を行なってよい。ダミーデータ書込処理は、例示的に、バックアップ領域32cに対する一定容量のダミーデータを書き込む書き込み処理、BUD30のフリースペースの残容量に基づきダミー書き込みの終了条件を満たすか否かを判定する判定処理、を含んでよい。
【0063】
なお、ダミーデータは、どのようなデータであってもよく、例示的に、実際のメモリ20内のデータ、ランダムデータ、オール“0”又は“1”、等であってよい。また、書き込まれるダミーデータの一定容量としては、例えば、1ブロック~数ブロック又は数十ブロック等のサイズであってよい。
【0064】
ダミーデータ書込処理の終了条件としては、例えば、以下の(I)及び(II)が挙げられる。ダミーデータ書込部42は、判定により、これらの終了条件のうちの少なくとも1つを満たすと判定するまで、書込処理及び判定処理、の組(セット)を繰り返し実行してよい。なお、当該終了条件を満たすと判定した場合、ダミーデータ書込部42は、ダミーデータ書込処理を打ち切って(停止して)よい。
【0065】
(I)書き込みを行なったダミーデータの総量が、バックアップ対象であるメモリ20の有効データの容量に達したこと。
【0066】
上記(I)の終了条件を満たす場合、ダミーデータ書込部42は、例えば、現在のメモリ20の有効データの容量に相当する(或いはそれ以上の)サイズのダミーデータを、バックアップ領域32cに対して書き込んだ(ダミーバックアップした)といえる。これにより、停電時に実行されるバックアップ処理によるBUD30のフリー(予備)ブロックの使用状態を疑似的に作り出すことができ、フリーブロックの残容量を予測することができる。
【0067】
(II)フリースペース(又はフリースペースの残容量)が飽和した。
【0068】
以下、上記(II)のフリースペースの飽和について説明する。なお、フリースペースは、フリーブロックの合計容量を意味してよく、以下の説明では、便宜上、フリースペース(又はその残容量)を、フリーブロック(又はその残容量)と表記する場合がある。
図5は、一実施形態に係るGCの実行条件の一例を示す図である。
【0069】
一実施形態では、SIによって定義されるGCの実行条件を採用する。GCの実行条件では、例えば、
図5に示すように、記憶部32のフリースペースの残容量に応じて、“No GC”、“Host Initiated GC”、“Device Initiated GC”の範囲が定義される。
【0070】
“No GC”は、残容量が“High_Threshold”よりも大きい状態の範囲であり、この場合、GCは不要である。
【0071】
“Host Initiated GC”は、残容量が“Low_Threshold”よりも大きく“High_Threshold”以下である状態の範囲であり、この場合、ホストの一例であるCM2が主導でGCの実行をBUD30に対して指示してよい。なお、“Host Initiated GC”において、CM2(GC実行制御部43)は、GCの実行要否の判断を含む制御を行なってよい。
【0072】
“Device Initiated GC”は、残容量が“Low_Threshold”以下である状態の範囲であり、この場合、デバイスの一例であるBUD30が主導でGCを行なってよい。
【0073】
図6は、ダミーデータの書き込みによるフリースペースの残容量の変化の一例を示す図である。
図6の例において、横軸はダミーデータの書き込み実行回数(又は実行時間)、換言すれば、ダミーデータの書き込み総容量(合計容量)を示す。
【0074】
BUD30の制御部31は、ダミーデータ書込部42からの指示に応じて、バックアップ領域32cに対するダミーデータの書き込みを行ないながら、不可視領域32eに対して、ページの結合、GC、ブロック交代等をバックグラウンドで行なう。このように、ダミーデータの書き込みでは、ブロックの消去及び書き込みが繰り返される。
【0075】
このため、記憶部32においては、フリースペースが枯渇せず(残容量が“0”にならず)、最小でも不可視領域32e分のフリースペースが残ることになる。従って、ダミーデータ書込部42による書込処理及び判定処理が繰り返し実行されると、記憶部32では、フリーブロック数が、ダミーデータ以外の記憶部32の空き容量とバックアップ領域32cの空き容量との合計容量に飽和することになる。
【0076】
上記(II)の終了条件を満たす場合、書込処理及び判定処理の組が繰り返し実行されたとしても、これ以上の大幅なフリーブロックの減少は発生しないと考えられる。従って、ダミーデータ書込部42は、上記(I)の終了条件が満たされているか否かに関わらず、上記(II)の終了条件を満たす場合には、ダミーデータ書込処理を停止してよい。
【0077】
なお、ダミーデータ書込部42は、上記(II)の判定において、例えば、書込処理によるフリーブロックの残容量の変化量(今回の書き込みによる残容量と前回の書き込みによる残容量との差分)が、“0”となった場合に、残容量が飽和したと判定してよい。なお、他の例では、ダミーデータ書込部42は、変化量が飽和閾値以下となった場合に、残容量が飽和したと判定してもよい。飽和閾値としては、一例として、数%未満の値であってよい。
【0078】
また、ダミーデータ書込部42は、停電が発生した場合には、バックアップ処理部41により実行されるバックアップ処理に先立って、ダミーデータの書き込みを停止してよい。これにより、停電時のバックアップ処理中に、ダミーデータ書込部42によるダミーバックアップが実行されることを抑止できる。
【0079】
以上のように、ダミーデータ書込部42は、BUD30に設けられたバックアップ領域32cに対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部の一例である。このバックアップ領域32cは、停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域である。
【0080】
GC実行制御部43は、ダミーデータ書込部42によるダミーデータ書込処理の実行結果に基づいて、CM2が主導となるGCの実行制御を行なう。
【0081】
例えば、GC実行制御部43は、ダミーデータ書込処理が終了したときのフリースペースに基づき、停電時のバックアップ処理中にBUD30においてフリーブロックの不足によるデバイス自己判断でのGC動作が発生するか否かを判定してよい。
【0082】
一例として、GC実行制御部43は、ダミーデータ書込処理の終了後のフリースペースの残容量が、
図5に例示する“High_Threshold”以下(“Host Initiated GC”又は“Device Initiated GC”の範囲)であるか否かを判定してよい。
【0083】
残容量が“High_Threshold”以下となる場合、GC実行制御部43は、停電時のバックアップ処理中にフリースペースの残容量が“Host Initiated GC”又は“Device Initiated GC”の範囲になると判断(予測)し、GCを実行するように制御してよい。
【0084】
一例として、GC実行制御部43は、フリースペースの残容量が“High_Threshold”よりも大きくなる(“No GC”の範囲になる)まで、BUD30に対して、以下のGC実行制御処理を行なってよい。GC実行制御処理は、例えば、BUD30に対するGCの実行時間(例えば一定時間)を指定したGC実行指示の送信処理、及び、GC完了後にBUD30のフリースペースの残容量が“High_Threshold”を超えたか否かを判定する判定処理、を含んでよい。
【0085】
例えば、GC実行制御部43は、GC実行制御処理において、BUD30のフリースペースの残容量(割合)が所定の割合、例えば“High_Threshold”を超えるまで、送信処理及び判定処理の組(セット)を繰り返し実行してよい。
【0086】
このように、ダミーデータ書込処理が完了したときに、フリーブロックの残容量が所定の閾値よりも少ない場合、バックアップ処理(書き込み)中に、BUD30においてBUD30主導のGCが発生することが予測される。そこで、GC実行制御部43は、BUD30に対して、強制的にGCを実行させる指示を行なうのである。
【0087】
このように、ダミーデータ書込部42及びGC実行制御部43によれば、ダミーバックアップによって、停電時のバックアップ処理中に不足するフリーブロック数(総容量)を予測することができる。
【0088】
なお、上述した説明では、GC実行制御部43によるGC実行制御処理において、所定の閾値として“High_Threshold”が用いられるものとしたが、これに限定されるものではない。例えば、GC実行制御部43は、所定の閾値として、“Low_Threshold”(例えば、“Device Initiated GC”の範囲)、或いは、“Low_Threshold”から“High_Threshold”までの間の値を用いてもよい。
【0089】
また、GC実行制御部43は、ダミーデータ書込部42によるダミーデータ書込処理(ダミーバックアップ)によってバックアップ領域32cに書き込まれたブロックを消去する消去処理を行なってよい。消去処理は、GC実行制御処理の前に実行されてもよい。
【0090】
さらに、GC実行制御部43は、停電が発生した場合には、バックアップ処理部41により実行されるバックアップ処理に先立って、BUD30に対して、GC動作を抑止させるGC抑止指示(停止指示)を送信してよい。また、GC実行制御部43は、バックアップ領域32cにおけるダミーデータが書き込まれた記憶領域を空き領域とするための指示(制御信号)を送信してよい。これらの指示により、停電時のバックアップ処理中に、GC実行制御部43からの指示によるGCの実行を抑止でき、また、フリースペースを増加させることができるため、バックアップ処理の書込速度の向上を図ることができる。
【0091】
このように、GC実行制御部43は、ダミーデータの書き込み結果に基づき、メモリ20のバックアップが実行される場合にBUD30の空き領域が不足するか否かを判定する判定部の一例である。
【0092】
また、GC実行制御部43は、BUD30の空き領域が不足すると判定した場合、BUD30が有する制御部31に対して、GCを実行させる実行信号を送信する送信部の一例である。なお、一実施形態において、GCは、BUD30の空き領域を増加させる増加処理の一例である。
【0093】
以上のように、一実施形態に係る手法によれば、バックアップ先であるBUD30の制御部31ではなく、バックアップを制御するCM2が、BUD30においてGCを実施するか否かを判定する。そして、CM2は、GCを実施すると判断した場合、停電時に制御部31によりGCが実行されることを抑止するために、事前に制御部31にGCを実施させるように制御する。
【0094】
これにより、停電発生により実行されるメモリバックアップ処理によるBUD30での書き込み処理において、BUD30の自律動作によるGCの実施を回避できるため、バックアップ時間の高速化、及び、予備電源であるバッテリの容量削減を図ることができる。
【0095】
〔1-3〕動作例
次に、
図7~
図10を参照して、上述の如く構成されたストレージ装置1(CM2)の動作例の説明を行なう。
【0096】
〔1-3-1〕GC実施判定処理
まず、
図7を参照して、CM2によるGC実施判定処理の動作例を説明する。なお、
図7に示すGC実施判定処理は、所定のタイミングで、例えば、定期的に実行されてよい。
【0097】
図7に例示するように、ダミーデータ書込部42は、ダミーデータ書込処理を実行する。例えば、ダミーデータ書込部42は、メモリ20から、メモリ20内のバックアップ対象のデータサイズ“BU_Size”を取得し(ステップS1)、書込オフセットアドレスNとして、N=0を設定する(ステップS2)。
【0098】
次いで、ダミーデータ書込部42は、BUD30のバックアップ領域32cのオフセットアドレスNに対して、一定容量(例えばサイズX)のダミーデータを積極的に書き込む(ステップS3)。
【0099】
ダミーデータ書込部42は、BUD30からフリースペースの利用率FS(N)を取得する(ステップS4)。利用率FS(N)は、例えば、オフセットアドレスNに対してダミーデータを書き込んだ後の、記憶部32における(全体の)記憶容量に対するフリースペースの割合を示す値であってよい。
【0100】
ダミーデータ書込部42は、例えば、BUD30に対して、記憶容量やフリースペース数等を取得するためのコマンドを送信し、当該コマンドに対してBUD30から送信された応答に基づき、フリースペースの利用率FS(N)を算出してもよい。なお、BUD30において算出可能であれば、ダミーデータ書込部42は、BUD30から利用率FS(N)そのものを取得してもよい。フリースペースの利用率の取得手法については、以下の説明においても同様である。
も同様である。
【0101】
そして、ダミーデータ書込部42は、直前からのフリースペースの利用率の差分(FS(N)-FS(N-1))が“0”か(或いは飽和閾値以下か)否か、及び/又は、書き込んだダミーデータの合計が“BU_size”以上か否か、を判定する(ステップS5)。書き込んだダミーデータの合計は、例えば、ダミーデータのサイズXと、書込回数(例示的に、オフセットアドレスNに1を加えた値(N+1)と、の乗算により求められてよい。
【0102】
判定の結果、利用率の差分が“0”(或いは飽和閾値以下)ではなく、且つ、書き込んだダミーデータの合計が“BU_size”以上ではない、と判定した場合(ステップS5でNo)、処理がステップS6に移行する。ステップS6では、ダミーデータ書込部42は、オフセットアドレスNに“1”を加算して、処理がステップS3に移行する。
【0103】
一方、判定の結果、利用率の差分が“0”(或いは飽和閾値以下)である、又は、書き込んだダミーデータの合計が“BU_size”以上である、と判定した場合(ステップS5でYes)、ダミーデータ書込部42によるダミーデータ書込処理が終了する。そして、処理がステップS7に移行する。
【0104】
ダミーデータ書込処理が終了すると、GC実行制御部43は、消去処理及びGC実行制御処理を行なう。例えば、GC実行制御部43は、消去処理として、記憶部32の例えばバックアップ領域32cにおけるダミーデータ書込済みの領域(ブロック)を消去し、当該領域をフリースペース化する(ステップS7)。
【0105】
また、GC実行制御部43は、GC実行制御処理の実行要否の判断として、ステップS4において最後に取得したFS(N)が、閾値TH1以下か否かを判定する(ステップS8)。閾値TH1は、所定の閾値又は第1の閾値の一例であり、例えば、
図5に示す“High_Threshold”であってよい。FS(N)が閾値TH1以下ではないと判定した場合(ステップS8でNo)、GC実行制御部43は、CM2による強制的なGCの実行は不要であると判断し、処理が終了する。
【0106】
一方、FS(N)が閾値TH1以下であると判定した場合(ステップS8でYes)、BUD30に対するGC実行処理(GC実行制御処理)を行ない(ステップS9)、処理が終了する。
【0107】
〔1-3-2〕GC実行処理
次に、
図8を参照して、
図7のステップS9に示すGC実行処理の動作例を説明する。
【0108】
図8に例示するように、GC実行制御部43は、変数n=0を設定し(ステップS11)、初期値として、BUD30から現在のフリースペース利用率FSを取得する(ステップS12)。
【0109】
次いで、GC実行制御部43は、BUD30に対して、GCの実行指示を発行する(ステップS13)。実行指示では、例えば、実行期間が指定されてよい。制御部31は、指定された実行期間内において、GCを実行してよい。
【0110】
次いで、GC実行制御部43は、BUD30からフリースペースFS(n)を取得し(ステップS14)、FS(n)が閾値TH2を超えたか否かを判定する(ステップS15)。閾値TH2は、第2の閾値の一例であり、例えば、
図5に示す“High_Threshold”であってよい。なお、閾値TH2は、
図7のステップS8における閾値TH1と同一の値であってもよく、この場合、閾値TH2は、所定の閾値の一例である。
【0111】
FS(n)が閾値TH2を超えていないと判定した場合(ステップS15でNo)、GC実行制御部43は、変数nに“1”を加算して(ステップS16)、処理がステップS13に移行する。
【0112】
一方、FS(n)が閾値TH2を超えたと判定した場合(ステップS15でYes)、停電時のバックアップ処理中にフリーブロック数が不足する可能性が低減した(GCが不要な量までフリースペースが増加した)ため、処理が終了する。
【0113】
このように、GC実行制御部43は、GCの実行単位時間として特定の実行期間を指定し、フリースペースの残容量が閾値TH2を超えるまで、当該単位時間のGCを繰り返し実行することで、フリースペースの容量(フリーブロック数)を増加させる。
【0114】
なお、ステップS13において、GC実行制御部43が指定するGCの実行期間は、一定の期間であってもよいし、現在のFSや不足するフリーブロック数等に応じて可変の期間であってもよい。例えば、GC実行制御部43は、初期値FSからFS(n)までのフリースペースの増加量(差分)と、FS(n)から閾値TH2までの増加予定量(差分)とに基づいて、ステップS13が到来する都度、実行期間を決定してもよい。
【0115】
〔1-3-3〕停電検出後処理
次に、
図9を参照して、ストレージ装置1(CM2)の停電が検出された後の動作例を説明する。なお、以下の処理は、CM2のバッテリ等の予備電源により実行されるものとする。
【0116】
図9に例示するように、CM2は、停電を検出すると、ダミーデータ書込部42によるダミーデータ書込処理を強制終了させる(ステップS21)。また、CM2は、GC実行制御部43によるBUD30に対するGC実行指示を強制停止させる(ステップS22)。上記ステップS21及びS22により、
図7に示すGC実施判定処理(
図8に示すGC実行処理を含む)の実行が終了又は停止させられる。
【0117】
なお、強制終了又は強制停止は、当該処理が実行されている場合に、当該処理の官僚を待たずに、当該処理を強制的に停止させる又は終了させることを含んでよい。また、強制終了又は強制停止は、当該処理の実行が予定されている場合には、当該処理の実行予定を中止(キャンセル)させることを含んでもよい。
【0118】
また、GC実行制御部43は、記憶部32の例えばバックアップ領域32cにおけるダミーデータ書込済みの領域(ブロック)を消去し、当該領域をフリースペース化する(ステップS23)。
【0119】
そして、CM2は、停電処理、例えば、バックアップ処理部41によるメモリ20のBUD30へのバックアップ処理を実行し(ステップS24)、処理が終了する。なお、CM2は、例えば、電源切断要因(電源OFF要因)として、「停電」による電源切断であることをBUD30、例えばログメタ書込領域32bに設定し、電源を切断(シャットダウン)してよい。
【0120】
〔1-3-4〕復電後処理
次に、
図10を参照して、復電後、すなわち、ストレージ装置1(CM2)への電源供給が再開された場合の動作例を説明する。
【0121】
図10に例示するように、CM2は、復電により電源ONになると、システム起動処理を開始する(ステップS31)。システム起動処理では、CM2は、BUD30の例えばログメタ書込領域32bを参照して、直前の電源切断要因が停電か否かを判定する(ステップS32)。
【0122】
直前の電源切断要因が停電であると判定した場合(ステップS32でYes)、バックアップ処理部41は、BUD30からメモリ20に対するデータリストアを実行する(ステップS33)。例えば、バックアップ処理部41は、バックアップ領域32cに格納されたバックアップデータ(停電時にバックアップしたメモリ20の有効なデータ)を読み出してメモリ20に書き込んでよい。
【0123】
次いで、GC実行制御部43は、記憶部32のバックアップ領域32cに格納されたバックアップ書込済みの領域(ブロック)を消去する(ステップS34)。
【0124】
また、GC実行制御部43は、BUD30に対して、GCの実行指示を行なう(ステップS35)。このように、システム起動のための処理が完了した後、CM2は、GC実行指示処理を行ない、記憶部32における全ての記憶領域のGCを実施することで、システム起動時に、最大限のフリースペースを確保することができる。
【0125】
以上により、システム起動処理が完了し(ステップS36)、処理が終了する。
【0126】
一方、ステップS32において、直前の電源切断要因が停電ではないと判定した場合(ステップS32でNo)、CM2は、電源切断要因に応じた処理を行ない(ステップS37)、処理がステップS36に移行する。
【0127】
〔1-4〕ストレージ装置のハードウェア構成例
図11は、一実施形態の一例としてのストレージ装置1のハードウェア構成例を示すブロック図である。
図11に示すように、ストレージ装置1は、例示的に、プロセッサ1a、DRAM1b、フラッシュROM(Read Only Memory)1c、SSD1d、NWIF(Network Interface)1e、及び、チャネルIF1fをそなえてよい。また、ストレージ装置1は、例示的に、デバイスIF1g-1及び1g-2、複数のディスク1h、バッテリ1i、I/O(Input / Output)部1j、並びに、読取部1kをそなえてよい。
【0128】
プロセッサ1aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ1aは、各ブロック1b~1kとバス1pで相互に通信可能に接続されてよい。プロセッサ1aとしては、CPU、MPU、DSP、ASIC、PLD(例えばFPGA)等の集積回路(IC;Integrated Circuit)が用いられてもよい。なお、CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称である。また、ASICはApplication Specific Integrated Circuitの略称であり、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0129】
DRAM1bは、種々のデータやプログラムを格納する揮発性メモリの一例である。一実施形態において、DRAM1bの少なくとも一部の記憶領域は、例えば、図示しないホスト装置からディスク1hに対するアクセスに係る種々のデータを一時的に格納するキャッシュとして利用されてよい。
【0130】
フラッシュROM1cは、種々のデータやプログラム等を格納する不揮発性メモリの一例である。例えば、フラッシュROM1cには、OS(Operating System)やFW、アプリケーション等のプログラム、及び各種データが格納されてよい。フラッシュROM1cとしては、種々の不揮発性メモリ、例えば、NANDフラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
【0131】
SSD1dは、種々のデータやプログラム等を格納する不揮発性メモリの一例である。SSD1dは、例示的に、記憶領域に対する種々のアクセスの制御を行なうコントローラ1daをそなえてよい。コントローラ1daとしては、プロセッサ及びメモリを含む集積回路(IC)等が挙げられる。プロセッサとしては、種々の演算処理装置が挙げられる。メモリとしては、種々の揮発性メモリ又は不揮発性メモリが挙げられる。
【0132】
例えば、SSD1dには、OSやFW、アプリケーション等のプログラム、及び各種データが格納されてよい。SSD1dとしては、例えば、SATA、SAS、又はNVMe等のIFに対応した、NANDフラッシュメモリを利用したSSDが挙げられる。SATAは、Serial ATA(Advanced Technology Attachment)の略称であり、SASは、Serial Attached SCSI(Small Computer System Interface)の略称である。NVMeは、Non-Volatile Memory Expressの略称である。なお、SSD1dとして、例えば、3D XPoint(登録商標)技術を採用したIntel Optane SSD(登録商標)のような低レイテンシSSDが用いられてもよい。
【0133】
フラッシュROM1c及びSSD1dの少なくとも一方には、CM2の各種機能の全部若しくは一部を実現するプログラム1mが格納されてもよい。例えば、CM2のプロセッサ1aは、フラッシュROM1cに格納されたFWとしてのプログラム1mを読み出し、DRAM1bに展開して実行することにより、CM2としての機能を実現してよい。或いは、CM2のプロセッサ1aは、SSD1dに格納されたFWとしてのプログラム1mを読み出し、DRAM1b又はフラッシュROM1cに展開して実行することにより、CM2としての機能を実現してもよい。CM2としての機能には、上述した、バックアップ処理部41、ダミーデータ書込部42、及びGC実行制御部43の機能が含まれてよい。
【0134】
なお、
図2に示す保持部10は、例えば、CM2のDRAM1b、フラッシュROM1c、及びSSD1dの少なくとも1つの記憶領域により実現されてよい。また、
図2に示すメモリ20は、例えば、CM2のDRAM1bの記憶領域により実現されてよい。さらに、
図2に示すBUD30は、例えば、CM2のSSD1dの記憶領域により実現されてよい。
【0135】
NWIF1e及びチャネルIF1fは、それぞれ、LAN(Local Area Network)、及び、SAN(Storage Area Network)との間の接続及び通信の制御等を行なう通信IFの一例である。これらの通信IFは、例えば、LANカード等のIFや、ファイバチャネル(FC;Fibre Channel)等に準拠したIFをそなえてよい。
【0136】
なお、CM2は、管理者の管理端末との間の接続及び通信の制御等を行なう通信IFをそなえてもよく、当該通信IFを用いて、図示しないネットワークからプログラム1mをダウンロードしてもよい。
【0137】
デバイスIF1g-1及び1g-2は、それぞれ、複数のディスク1hとの間の接続及び通信の制御等を行なう通信IFの一例である。デバイスIF1g-1及び1g-2としては、例えば、デバイスアダプタ等のIFや、SASエクスパンダ等のスイッチ装置等が挙げられる。
【0138】
複数のディスク1hは、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、ディスク1hは、図示しないホスト装置等にストレージ装置1の記憶領域を提供する記憶装置として使用されてよい。ディスク1hとしては、例えば、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM、ROM等が挙げられる。一実施形態において、複数のディスク1hは、
図2に示すストレージ3を構成する複数のディスク3aの一例である。
【0139】
バッテリ1iは、ストレージ装置1(CM2)に電力を供給する電源が喪失した場合(停電が発生した場合)に、当該ストレージ装置1(CM2)に対して予備電力を供給する予備電源の一例である。バッテリ1iは、例えば、電源が喪失したことを検出し、当該検出に応じて予備電力の供給を制御する制御回路をそなえてもよい。
【0140】
I/O部1jは、例えば、マウス、キーボード、タッチパネル、操作ボタン等の入力部、及び、ディスプレイやプリンタ等の出力部、の一方又は双方を含んでよい。読取部1kは、記録媒体1nに記録されたデータやプログラムを読み出しプロセッサ1aに出力するリーダの一例である。読取部1kは、記録媒体1nを接続又は挿入可能な接続端子又は装置を含んでもよい。読取部1kとしては、例えばUSB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体1nにはプログラム1mが格納されてもよい。
【0141】
記録媒体1nとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。なお、CDとしては、例示的に、CD-ROM、CD-R、CD-RW等が挙げられる。また、DVDとしては、例示的に、DVD-ROM、DVD-RAM、DVD-R、DVD-RW、DVD+R、DVD+RW等が挙げられる。
【0142】
上述したストレージ装置1のハードウェア構成は例示である。従って、ストレージ装置1内、又は、CM2でのハードウェアの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
【0143】
例えば、ストレージ3を構成するディスク1hは、CM2或いはストレージ装置1とは別のモジュール、例えばデバイスエンクロージャ(DE;Device Enclosure)として構成されてもよい。また、CM2としてのブロック1a~1kは、ストレージ装置1において冗長化(例えば二重化)されてもよい。なお、ストレージ装置1が複数のCM2をそなえる場合、これらのCM2の各々とストレージ3との間のアクセスパスも冗長化されてよい。また、ストレージ装置1は、例えば、カスケード状に接続(縦列接続)した複数のストレージ3をそなえてもよい。
【0144】
〔2〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【0145】
例えば、
図2に示すCM2の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
【0146】
また、一実施形態では、制御装置の一例としてCM2を例に挙げたが、これに限定されるものではない。制御装置としては、例えば、SSD等の不揮発性メモリを停電時のメモリバックアップ先としてそなえる種々の情報処理装置が用いられてもよい。
【0147】
〔3〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【0148】
(付記1)
揮発性メモリと、
停電が発生した場合に実行される前記揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部と、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定する判定部と、
前記判定部により前記不揮発性メモリの空き領域が不足すると判定された場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する送信部と、
をそなえる、制御装置。
【0149】
(付記2)
前記判定部は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
付記1に記載の制御装置。
【0150】
(付記3)
前記書込部は、前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
付記1又は付記2に記載の制御装置。
【0151】
(付記4)
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
付記1~3のいずれか1項に記載の制御装置。
【0152】
(付記5)
前記停電が発生した場合に、予備電源を利用して、前記バックアップ領域に対して、前記揮発性メモリ内のデータのバックアップを実行するバックアップ部、をさらにそなえる
付記1~4のいずれか1項に記載の制御装置。
【0153】
(付記6)
前記停電が発生した場合に、前記バックアップ部による前記バックアップの実行前に、
前記書込部は、前記予備電源を利用して、前記バックアップ領域に対する前記ダミーデータの書き込みを停止し、
前記送信部は、前記予備電源を利用して、前記コントローラに対して、前記増加処理の実行を停止する停止信号を送信するとともに、前記バックアップ領域における前記書込部により前記ダミーデータが書き込まれた記憶領域を空き領域とするための制御信号を送信する、
付記5に記載の制御装置。
【0154】
(付記7)
前記バックアップ部は、前記制御装置への電源投入後において、前回の前記制御装置の電源切断の要因が停電であると判定された場合、前記不揮発性メモリの前記バックアップ領域に格納されたデータを前記揮発性メモリに書き込む、
付記5又は付記6に記載の制御装置。
【0155】
(付記8)
前記実行信号は、前記増加処理の実行時間を含み、
前記送信部は、前記実行信号により前記増加処理が実行された後の前記不揮発性メモリの空き領域の残容量の割合が所定の割合を超えるまで、前記コントローラに対して、前記実行信号を繰り返し送信する、
付記1~7のいずれか1項に記載の制御装置。
【0156】
(付記9)
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定し、
前記不揮発性メモリの空き領域が不足すると判定した場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する、
処理をコンピュータに実行させる、制御プログラム。
【0157】
(付記10)
前記判定は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
付記9に記載の制御プログラム。
【0158】
(付記11)
前記書き込みは、
前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、
前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
付記9又は付記10に記載の制御プログラム。
【0159】
(付記12)
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
付記9~11のいずれか1項に記載の制御プログラム。
【0160】
(付記13)
前記停電が発生した場合に、予備電源を利用して、前記バックアップ領域に対して、前記揮発性メモリ内のデータのバックアップを実行する、
処理を前記コンピュータに実行させる、付記9~12のいずれか1項に記載の制御プログラム。
【0161】
(付記14)
前記停電が発生した場合に、前記バックアップの実行前に、
前記予備電源を利用して、前記バックアップ領域に対する前記ダミーデータの書き込みを停止し、
前記予備電源を利用して、前記コントローラに対して、前記増加処理の実行を停止する停止信号を送信し、
前記バックアップ領域における前記書込部により前記ダミーデータが書き込まれた記憶領域を空き領域とするための制御信号を送信する、
処理を前記コンピュータに実行させる、付記13に記載の制御プログラム。
【0162】
(付記15)
前記コンピュータへの電源投入後において、前回の前記コンピュータの電源切断の要因が停電であると判定した場合、前記不揮発性メモリの前記バックアップ領域に格納されたデータを前記揮発性メモリに書き込む、
付記13又は付記14に記載の制御プログラム。
【0163】
(付記16)
前記実行信号は、前記増加処理の実行時間を含み、
前記実行信号の送信は、前記実行信号により前記増加処理が実行された後の前記不揮発性メモリの空き領域の残容量の割合が所定の割合を超えるまで、前記コントローラに対して、前記実行信号を繰り返し送信する、
付記9~15のいずれか1項に記載の制御プログラム。
【0164】
(付記17)
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定し、
前記不揮発性メモリの空き領域が不足すると判定した場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する、
制御方法。
【0165】
(付記18)
前記判定は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
付記17に記載の制御方法。
【0166】
(付記19)
前記書き込みは、
前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、
前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
付記17又は付記18に記載の制御方法。
【0167】
(付記20)
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
付記17~19のいずれか1項に記載の制御方法。
【符号の説明】
【0168】
1 ストレージ装置
2 CM
3 ストレージ
3a ディスク
10 保持部
11 制御情報
20 メモリ
30 BUD
31 制御部
32 記憶部
41 バックアップ処理部
42 ダミーデータ書込部
43 GC実行制御部