(57)【要約】【課題】不揮発性メモリに対するバックアップ実行時間の増加を抑制する。【解決手段】揮発性メモリ２０と、停電が発生した場合に実行される前記揮発性メモリ２０内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリ３０に設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部４２と、前記ダミーデータの書き込み結果に基づき、前記揮発性メモリ２０のバックアップが実行される場合に前記不揮発性メモリ３０の空き領域が不足するか否かを判定する判定部４３と、空き領域が不足すると判定された場合、前記不揮発性メモリ３０が有するコントローラ３１に対して、前記不揮発性メモリ３０の空き領域を増加させる増加処理を実行させる実行信号を送信する送信部４３と、をそなえる。【選択図】図２
2020013222.tif 000002
【特許請求の範囲】
【請求項１】
揮発性メモリと、
停電が発生した場合に実行される前記揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部と、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定する判定部と、
前記判定部により前記不揮発性メモリの空き領域が不足すると判定された場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する送信部と、
をそなえる、制御装置。
【請求項２】
前記判定部は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
請求項１に記載の制御装置。
【請求項３】
前記書込部は、前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
請求項１又は請求項２に記載の制御装置。
【請求項４】
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
請求項１〜３のいずれか１項に記載の制御装置。
【請求項５】
前記実行信号は、前記増加処理の実行時間を含み、
前記送信部は、前記実行信号により前記増加処理が実行された後の前記不揮発性メモリの空き領域の残容量の割合が所定の割合を超えるまで、前記コントローラに対して、前記実行信号を繰り返し送信する、
請求項１〜４のいずれか１項に記載の制御装置。
【請求項６】
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定し、
前記不揮発性メモリの空き領域が不足すると判定した場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する、
処理をコンピュータに実行させる、制御プログラム。
【請求項７】
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定し、
前記不揮発性メモリの空き領域が不足すると判定した場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する、
制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置、制御プログラム、及び制御方法に関する。
【背景技術】
【０００２】
ストレージ装置を制御するストレージ制御装置では、動作中に外部電源が喪失した（停電した）場合に、不揮発性メモリに対して、揮発性メモリのバックアップが行なわれることがある。不揮発性メモリとしては、例えば、ＳＳＤ（Solid State Drive）等の半導体記憶デバイス等が挙げられる。
【０００３】
バックアップでは、揮発性メモリに格納されたデータ、例えばストレージ制御装置の動作に用いられるデータが、バッテリ等の予備電源を利用して不揮発性メモリのバックアップ領域に書き込まれる。これにより、外部電源の再投入後、ストレージ制御装置は、不揮発性メモリのバックアップ領域から揮発性メモリにバックアップデータを読み出すことで、停電発生前の動作を再開することができる。
【０００４】
ＳＳＤ等の不揮発性メモリは、データの格納領域として複数のブロックを有する。各ブロックは複数のページにより構成される。
【０００５】
不揮発性メモリでは、ページ又はブロックに対するデータの書き込みや消去が繰り返されると、不揮発性メモリの格納領域には、有効なデータが複数のブロック上で離散して格納された状態になり、全ページが空き状態である空きブロック数が減少することがある。
【０００６】
不揮発性メモリのコントローラは、空きブロックが一定量（一定数）以下になった場合、空きブロックの作成のためにガベージコレクション（ＧＣ；garbage collection）動作と呼ばれる自律動作を行なうことがある。ＧＣでは、コントローラは、複数のブロック上で離散している有効なデータを集めて１つの空きブロックに書き込み、これらの有効なデータの格納元である複数のブロックを消去して複数の空きブロックを作成する、という処理を繰り返す。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１３−２００７２６号公報
【特許文献２】特開２０１６−１９２０２５号公報
【特許文献３】特開２０１３−６１７９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、停電時のバックアップでは、不揮発性メモリの格納領域に対して、揮発性メモリ内のデータがブロック単位でシーケンシャルに書き込まれる。このとき、格納領域において、バックアップの書込先となる空きブロックの不足が発生した場合、不揮発性メモリが自律的にＧＣを実行することがある。
【０００９】
停電時のバックアップは予備電源を利用して行なわれるため、バックアップを実行可能な時間は予備電源の電力容量に応じて制限される。
【００１０】
しかし、停電時のバックアップにおいてＧＣが発生する場合、バックアップ完了までの平均書込速度が低下するため、バックアップの実行時間が増加し得る。この場合、制限された時間内にメモリのバックアップが完了せず、ストレージ制御装置の外部電源の再投入後に、停電発生前の動作を再開することが困難となる場合がある。
【００１１】
また、バックアップ中にＧＣが発生した場合にもバックアップを正常に完了させようとすると、性能、コスト、装置規模等の観点でストレージ制御装置の設計自由度が低下する場合がある。
【００１２】
なお、上述した不都合は、ストレージ制御装置に限らず、種々の制御装置、例えば、装置の停電が発生した場合にＳＳＤ等の不揮発性メモリに対して揮発性メモリのバックアップを行なう情報処理装置においても同様に生じ得る。
【００１３】
１つの側面では、本発明は、不揮発性メモリに対するバックアップ実行時間の増加を抑制することを目的とする。
【課題を解決するための手段】
【００１４】
１つの態様では、制御装置は、揮発性メモリと、書込部と、判定部と、送信部と、をそなえてよい。前記書込部は、不揮発性メモリに設けられたバックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なってよい。前記バックアップ領域は、停電が発生した場合に実行される前記揮発性メモリ内のデータのバックアップの書き込み先であってよい。前記判定部は、前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定してよい。前記送信部は、前記判定部により前記不揮発性メモリの空き領域が不足すると判定された場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信してよい。
【発明の効果】
【００１５】
１つの側面では、不揮発性メモリに対するバックアップ実行時間の増加を抑制することができる。
【図面の簡単な説明】
【００１６】
【図１】ＧＣの動作の一例を説明する図である。
【図２】一実施形態の一例としてのストレージ装置の機能構成例を示すブロック図である。
【図３】図２に示す記憶部のデータ構成例を示す図である。
【図４】図２に示す記憶部における物理記憶ブロックの状態の一例を示す図である。
【図５】一実施形態に係るＧＣの実行条件の一例を示す図である。
【図６】ダミーデータの書き込みによるフリースペースの残容量の変化の一例を示す図である。
【図７】一実施形態に係るＣＭ（Controller Module）によるＧＣ実施判定処理の動作例を示すフローチャートである。
【図８】図７に示すＧＣ実行処理の動作例を示すフローチャートである。
【図９】一実施形態に係るＣＭによる停電検出後処理の動作例を示すフローチャートである。
【図１０】一実施形態に係るＣＭによる復電後処理の動作例を示すフローチャートである。
【図１１】一実施形態に係るストレージ装置のハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１８】
〔１〕一実施形態
〔１−１〕一実施形態について
上述したストレージ制御装置においては、ＤＲＡＭ（Dynamic Random Access Memory）の大容量化により、バックアップ対象の揮発性メモリの容量が拡大している。一方、バッテリ等の予備電源の電力容量は、一定に留まっている。このため、ストレージ制御装置の筐体サイズを変えずに、バックアップ対象の容量の拡大に対応するには、ＳＳＤ等の不揮発性メモリの書込速度を向上させることになる。
【００１９】
ストレージ制御装置によるメモリのバックアップ先となるＳＳＤとしては、例えば、ＮＡＮＤフラッシュメモリを利用したＳＳＤが挙げられる。ＮＡＮＤフラッシュメモリはデータの上書き動作に非対応であるため、コントローラは、データの書き換えを行なう際に、事前に既存のデータを消去することになる。しかし、ＮＡＮＤフラッシュメモリにおけるデータの消去は、複数のページにより構成されるブロック単位での実行に制限される。
【００２０】
（処理１）
このため、コントローラは、１ページの書き換えを行なう場合、ＲＥＭＷ（Read-Erase-Modify-Write）を実行する。ＲＥＭＷでは、コントローラは、書込対象のページを含むブロック内の全ページを不揮発性メモリのキャッシュに読み出し、格納領域の当該ブロックを消去する。そして、コントローラは、キャッシュ上のブロックデータに書込対象のデータをマージし、当該ブロックデータを格納領域の消去後のブロックに書き込む。
【００２１】
（処理２）
上記処理１におけるＲＥＭＷの動作では、ブロック単位でのデータの読出、消去、変更、及び書込が発生し、データの書込速度の低下を引き起こす。そこで、コントローラは、ブロックの交代処理を行なう。例えば、コントローラは、データの書き込みを行なう際に、消去済みの空きブロックが存在する場合、ＲＥＭＷにおけるブロックの消去を省略とし、変更後のブロックデータを空きブロックに書き込むことで、消去の待ち時間分の時間短縮を図る。なお、コントローラは、所定のタイミングで、消去を省略したブロックを消去し、当該ブロックを次の書き込みのための空きブロックとする。なお、以下の説明において、空きブロックは、予備ブロック又はフリーブロックと称されてもよい。
【００２２】
（処理３）
処理１及び処理２におけるデータの書き込みや消去が繰り返されると、ＳＳＤの格納領域には、有効なデータが複数のブロック上で離散して格納された状態になり、予備ブロックが減少することがある。そこで、ＳＳＤのコントローラは、空きブロックが一定量（一定数）以下になった場合、上述したＧＣ動作を行なう。
【００２３】
図１は、ＧＣの動作の一例を説明する図である。図１の（１）に示すように、ホスト装置からのライトにより、記憶領域（ＮＡＮＤフラッシュメモリ）が歯抜けにライトされた状態となる。なお、図１の（１）において、各枠はページを示し、白塗りの枠はデータの書き込みが可能なフリーページであり、網掛けの枠はデータが書き込まれているページである。また、８×５の枠の集合はブロックを示す。
【００２４】
ホスト装置からのライトにより、ＳＳＤのフリースペースの残容量が、例えば“Low_Threshold”（閾値）以下になった場合、ＳＳＤのコントローラは、ＧＣが不要となる閾値（例えば、“High_Threshold”になるまでＧＣを実施する。なお、図１の中段には、ＳＳＤのフリースペースの残容量に応じたＧＣの実施要否と、その閾値とを示す。例えば、フリースペースの残容量が、ＳＳＤが主導でＧＣを行なう範囲“Device Initiated GC”であれば、ＳＳＤは、ＧＣが不要の範囲“No GC”、又は、“High_Threshold”と“Low_Threshold”との間の範囲、となるように、ＧＣを実施する。なお、“High_Threshold”と“Low_Threshold”との間の範囲では、ＧＣが実行されてもされなくてもよい。
【００２５】
ＳＳＤは、図１の（２）に示すように、ホストＩ／Ｏ中に、フリースペースの残容量が閾値以下になった場合、能動的にＧＣを実行する。例えば、ＳＳＤは、歯抜けにライトされたブロック内のページを、他のフリーブロックに隙間なく書き込み（図１の（２−１）参照）、歯抜けにライトされたブロックを消去して予備（フリー）ブロックとする（図１の（２−２）参照）。
【００２６】
しかし、このようなＧＣの処理は、ホストＩ／Ｏの処理と競合するため、ホストＩ／Ｏが待たされることになる。例えば、ホストＩ／Ｏの処理中にＧＣが実行される場合、レスポンス（応答時間）は、ＧＣが実行されない場合のレスポンスの１．５〜８倍程度になることがある。
【００２７】
ところで、一実施形態においては、ストレージ制御装置として、コントローラモジュール（ＣＭ；Controller Module）を例に挙げて説明する。ＣＭは、例えば、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）システムを構成するストレージ装置を制御するＲＡＩＤコントローラであってもよい。
【００２８】
また、ＳＳＤは、バックアップデバイス（ＢＵＤ；Back Up Device）の一例であってよく、メモリのバックアップ領域を有するとともに、ＣＭの動作を実現するＦＷ（Firmware）の格納領域、及びシステムの動作ログの記憶領域を有するものとする。
【００２９】
例えば、ＣＭは、ＢＵＤの動作ログの記憶領域に対して、ログを不定期にランダム領域に書き込む。
【００３０】
この場合、ＢＵＤでは、予備ブロックの枯渇とブロックの交代処理とが不定期に発生する（処理１及び処理２が発生する）。当該ログの書き込み中にストレージ装置の停電が発生した場合、バックアップ書き込み動作では、大容量のデータが連続して書き込まれるため、ＢＵＤでは上述した処理１及び処理３が発生し、バックアップ完了までの平均書込速度が低下する。
【００３１】
また、ＣＭの動作中に停電が発生した場合、ＣＭは、ＢＵＤのバックアップ領域に対して、停電時のメモリのバックアップ書き込みとして、連続したＬＢＡ（Logical Block Address）のシーケンシャル書き込みを行なう。
【００３２】
この場合、ＢＵＤ内部では、バックアップのデータがページ・ブロックに集中し歯抜けなく書き込まれる。バックアップデータが消去されると、ＧＣの不要なフリーブロックが生成される。しかし、ＢＵＤは、指示を受けない限りバックアップデータを書き込み状態（有効なデータ）として保持するため、バックアップデータが書き込まれたブロックは、フリーブロックにはカウントされない。
【００３３】
なお、停電時のバックアップ書き込みにおいて、フリーブロックの不足が発生しないように、ＣＭが主導となってＢＵＤのＧＣ動作を行なうことで、書込性能低下の回避を実現することも考えられる。しかし、以下の（ｉ）及び（ii）の理由から、ＣＭが主導でＧＣ動作を実行させるための実行条件は、一意ではない。
【００３４】
（ｉ）バックアップにより使用されるＢＵＤのフリーブロック数の特定が困難である。例えば、メモリのバックアップに利用されるフリーブロックの容量（フリースペース）は、メモリサイズから一意に決まるものではない。また、バックアップ領域が複数回に亘って上書きされるときには、書込済みのブロックの消去（イレーズ）が処理されるが、ＣＭは、これらのブロックをフリーブロックとしては算出しない。さらに、一般的なＳＳＤデバイスのブロックやページサイズは情報開示されないことが多いため、ＣＭは、バックアップを行なったメモリサイズの履歴から使用済みブロック数を算出することは困難である。
【００３５】
（ii）バックアップが実行されるときにＢＵＤに存在するフリーブロック数の特定が困難である。例えば、ログ書き込みの累積状態によって、ＢＵＤのブロックやページの消費状況は異なる。このため、バックアップが実行される時点でのＢＵＤにおけるフリーブロック数は不定となる。
【００３６】
以上の点に鑑み、一実施形態においては、バックアップ実行時間の増加を抑制する手法について説明する。例えば、一実施形態では、バックアップの実行時に、バックアップ書き込み先の予備ブロックの不足に起因するＢＵＤの自己判断でのＧＣ動作が発生しないように、ＣＭが予備ブロックの枯渇を防ぐためのＢＵＤのＧＣ制御を行なう。
【００３７】
ここで、一実施形態に係る手法では、ＳＩ（Storage Intelligence）を利用するものとする。ＳＩは、ＧＣ処理のような、ＳＳＤの速度性能に影響を与える内部処理を実行するタイミングをＣＭ等の制御装置側で制御できる技術の総称であり、標準化が進んでいる。
【００３８】
ＳＩの代表的な機能として、例えば、ＧＣ処理をＳＳＤ外部の制御装置側から起動する命令機能がある。制御装置は、当該命令を制御装置側のタイミングでＳＳＤに発行することにより、ＳＳＤの自律ＧＣを起動させることができる。また、当該命令では、ＧＣの動作時間や、ＧＣにより作成する予備ブロック容量（数）を指定することも可能である。
【００３９】
〔１−２〕ストレージ装置の構成例
次に、図２を参照して、一実施形態に係るストレージ装置１の機能構成例を説明する。ストレージ装置１は、情報処理装置の一例であり、図２に例示するように、ＣＭ２、及び、ストレージ３をそなえてよい。
【００４０】
ストレージ３は、ストレージ装置１により図示しないホスト装置等に対して提供される記憶領域を有する。例えば、ストレージ３は、複数のディスク３ａをそなえてよい。例えば、ストレージ３は、複数のディスク３ａによりＲＡＩＤ等のディスクアレイを構成してもよい。
【００４１】
ＣＭ２は、ストレージ制御装置又は制御装置の一例である。ＣＭ２は、例えば、ストレージ装置１を制御し、図示しないホスト装置に対して、ストレージ３の記憶領域を提供するための種々の制御を行なってよい。なお、以下の説明において、ホスト装置からストレージ装置１に対して発行されたストレージ３へのアクセス要求に基づき、ＣＭ２が実行するストレージ３へのアクセスに係る処理を、「ホストＩ／Ｏ」と表記する場合がある。
【００４２】
図２に示すように、ＣＭ２は、例示的に、保持部１０、メモリ２０、ＢＵＤ３０、バックアップ処理部４１、ダミーデータ書込部４２、及びＧＣ実行制御部４３をそなえてよい。
【００４３】
保持部１０は、ＣＭ２の制御に用いられる種々の情報を記憶するメモリ部の一例であり、例えば、制御情報１１を記憶してよい。制御情報１１は、例えば、後述するダミーデータ書込部４２及びＧＣ実行制御部４３の処理に利用される閾値（ＴＨ１、ＴＨ２）等の種々のパラメータを含んでよい。
【００４４】
メモリ２０は、ＣＭ２の動作に用いられる種々の情報を記憶する揮発性メモリの一例である。一実施形態において、メモリ２０は、ストレージ装置１（ＣＭ２）の停電が発生した際に実行されるバックアップの対象（バックアップ元）である。
【００４５】
メモリ２０は、例えば、ストレージ装置１（ＣＭ２）の停電後、再起動された際に、ストレージ装置１（ＣＭ２）の動作を再開するために使用される動作再開情報を記憶してよい。動作再開情報としては、例えば、ＣＭ２が停電発生の直前に実行していた処理の制御情報や、ホストＩ／Ｏに係るキャッシュの情報等が挙げられる。
【００４６】
ＢＵＤ３０は、ＣＭ２の動作に用いられる種々の情報を記憶する不揮発性メモリの一例である。一実施形態において、ＢＵＤ３０は、ストレージ装置１（ＣＭ２）の停電が発生した際に実行されるバックアップの格納（退避）先（バックアップ先）である。
【００４７】
ＢＵＤ３０は、制御部３１及び記憶部３２をそなえてよい。制御部３１は、ＢＵＤ３０のコントローラの一例であり、記憶部３２に対して、上述した（処理１）〜（処理３）、例えば、ＲＥＭＷの制御、ブロックの交代処理の制御、及び、ＧＣ処理の制御、等を行なってよい。ＧＣ処理の制御は、記憶部３２のフリースペースの残容量に応じて、ＢＵＤ３０が主導で実行されてよい。
【００４８】
記憶部３２は、ＢＵＤ３０の記憶領域であって、図３に例示するように、論理ブロックとして、ＦＷ格納領域３２ａ、ログメタ書込領域３２ｂ、バックアップ領域３２ｃ、空き領域３２ｄ、及び不可視領域３２ｅを有してよい。なお、これらの領域３２ａ〜３２ｅは、それぞれ、連続した論理アドレスによる論理アドレス範囲として表されてもよい。
【００４９】
ＦＷ格納領域３２ａは、ＣＭ２の動作を実現するＦＷを格納する記憶領域であり、ログメタ書込領域３２ｂは、システムの動作ログ等を格納する記憶領域である。バックアップ領域３２ｃは、ＣＭ２の停電が発生した場合にＣＭ２の予備電源を利用して実行されるメモリ２０内のデータのバックアップの書き込み先の記憶領域である。不可視領域３２ｅは、ＢＵＤ３０の容量としてＣＭ２からは認識されない領域であり、制御部３１により、データが未書き込みである空き領域３２ｄとともに、フリーブロックとして使用されてよい。
【００５０】
次に、図４を参照して、記憶部３２の論理アドレス、換言すれば、図３に示す領域３２ａ〜３２ｅの各々に対応する物理ブロック（物理記憶ブロック）の状態例を説明する。
【００５１】
図４は、物理記憶ブロックの状態の一例を示す図である。図４の例では、便宜上、１つの枠がページであり、４つのページの集合がブロックであるものとする。ページの状態としては、白塗りのページは消去済み、網掛けのページは有効なデータが記憶されている記憶有効、斜線のページは無効なデータが記憶されている（消去待ちである）記憶無効、をそれぞれ示す。
【００５２】
また、図４の例では、（ａ）で囲ったブロックはＦＷ格納領域３２ａとして使用されており、（ｂ）で囲ったブロックはログメタ書込領域３２ｂとして使用されていることを示す。さらに、（ｃ）で囲ったブロックはバックアップ領域３２ｃとして使用されており、（ｄ）で囲ったブロックは空き領域３２ｄとして使用されていることを示す。これらの領域は、記憶部３２の記憶容量として算出される可視領域である。一方、（ｅ）で囲ったブロックは、記憶部３２の記憶容量として算出されない不可視領域３２ｅであることを示す。
【００５３】
なお、図４の例において、全ページが消去状態のブロックは、フリーブロックのカウント対象となる。
【００５４】
図４に例示するように、ＢＵＤ３０のＩ／Ｏ性能の劣化を低減するため、制御部３１は、ＧＣ、ブロックの交代処理、消去等をバックグラウンドで処理する。当該処理において、論理アドレスと図４に示す物理ブロックとは、逐次に変換されるため、可視領域及び不可視領域における論理−物理間の割り当てが経時的に変化する。このため、図４に示すように、論理アドレスは、連続した物理ブロックに割り当てられないことがある。
【００５５】
バックアップ処理部４１は、ＣＭ２に電力を供給する電源（外部電源）の喪失をＣＭ２が検出した（停電を検出した）場合に、バッテリ等の予備電源を利用して、ＢＵＤ３０のバックアップ領域３２ｃに対して、メモリ２０のバックアップを行なう。バックアップの対象となるデータは、例えば、停電が検出されたときにメモリ２０が記憶する有効なデータであってよい。
【００５６】
なお、バックアップが完了すると、ＣＭ２は、例えば「停電」等の動作停止要因（電源切断要因）をＢＵＤ３０のログメタ書込領域３２ｂ、或いは、他の不揮発性メモリ等に格納して、動作を停止してよい。また、外部電源の復旧により、ＣＭ２に外部電力が再投入されると、バックアップ処理部４１は、前回の動作停止要因を参照し、停電であった場合、ＢＵＤ３０のバックアップ領域３２ｃからデータをメモリ２０に書き戻してよい。これにより、ＣＭ２は、停電が検出されたときのメモリ２０の状態を復元してからシステム動作を再開できる。
【００５７】
このように、バックアップ処理部４１は、ＣＭ２の停電が発生した場合に、予備電源を利用して、バックアップ領域３２ｃに対して、メモリ２０内のデータのバックアップを実行するバックアップ部の一例である。
【００５８】
ここで、ＣＭ２は、ＣＭ２における動作ログを定期的にＢＵＤ３０のログメタ書込領域３２ｂに書き込む。このため、動作ログの書き込み等により、記憶部３２は、図４に例示するような歯抜けにライトされた状態になることがある。
【００５９】
図４に例示する状態において、例えば、停電によりバックアップ処理部４１がバックアップ処理を実行している間に、記憶部３２のフリースペースの残容量が、“Low_Threshold”（閾値）以下となった場合を想定する（図５参照）。この場合、上述したように、ＢＵＤ３０においては、制御部３１による内部制御としてのＧＣが実行され得るため、バックアップ処理におけるＢＵＤ３０に対する書き込み性能が低下することになる。
【００６０】
一実施形態においては、以下の手法によって、バックアップ処理の実行中にＢＵＤ３０による自発的なＧＣ（物理的なＧＣ）の発生を抑制することにより、書き込み性能の低下を抑止する。
【００６１】
ダミーデータ書込部４２は、ＣＭ２の動作中、定期的に、ＢＵＤ３０に対して記憶部３２のバックアップ領域３２ｃに対するダミーデータの書き込み指示を発行することで、バックアップ領域３２ｃに対してダミーデータの書き込みを行なう。ＣＭ２の動作中とは、例えば、停電が発生しておらず、外部電源からＣＭ２に正常に給電が行なわれている状態、換言すれば、ＣＭ２の正常稼働中を意味してよい。
【００６２】
例えば、ダミーデータ書込部４２は、以下のダミーデータ書込処理を行なってよい。ダミーデータ書込処理は、例示的に、バックアップ領域３２ｃに対する一定容量のダミーデータを書き込む書き込み処理、ＢＵＤ３０のフリースペースの残容量に基づきダミー書き込みの終了条件を満たすか否かを判定する判定処理、を含んでよい。
【００６３】
なお、ダミーデータは、どのようなデータであってもよく、例示的に、実際のメモリ２０内のデータ、ランダムデータ、オール“０”又は“１”、等であってよい。また、書き込まれるダミーデータの一定容量としては、例えば、１ブロック〜数ブロック又は数十ブロック等のサイズであってよい。
【００６４】
ダミーデータ書込処理の終了条件としては、例えば、以下の（Ｉ）及び（II）が挙げられる。ダミーデータ書込部４２は、判定により、これらの終了条件のうちの少なくとも１つを満たすと判定するまで、書込処理及び判定処理、の組（セット）を繰り返し実行してよい。なお、当該終了条件を満たすと判定した場合、ダミーデータ書込部４２は、ダミーデータ書込処理を打ち切って（停止して）よい。
【００６５】
（Ｉ）書き込みを行なったダミーデータの総量が、バックアップ対象であるメモリ２０の有効データの容量に達したこと。
【００６６】
上記（Ｉ）の終了条件を満たす場合、ダミーデータ書込部４２は、例えば、現在のメモリ２０の有効データの容量に相当する（或いはそれ以上の）サイズのダミーデータを、バックアップ領域３２ｃに対して書き込んだ（ダミーバックアップした）といえる。これにより、停電時に実行されるバックアップ処理によるＢＵＤ３０のフリー（予備）ブロックの使用状態を疑似的に作り出すことができ、フリーブロックの残容量を予測することができる。
【００６７】
（II）フリースペース（又はフリースペースの残容量）が飽和した。
【００６８】
以下、上記（II）のフリースペースの飽和について説明する。なお、フリースペースは、フリーブロックの合計容量を意味してよく、以下の説明では、便宜上、フリースペース（又はその残容量）を、フリーブロック（又はその残容量）と表記する場合がある。図５は、一実施形態に係るＧＣの実行条件の一例を示す図である。
【００６９】
一実施形態では、ＳＩによって定義されるＧＣの実行条件を採用する。ＧＣの実行条件では、例えば、図５に示すように、記憶部３２のフリースペースの残容量に応じて、“No GC”、“Host Initiated GC”、“Device Initiated GC”の範囲が定義される。
【００７０】
“No GC”は、残容量が“High_Threshold”よりも大きい状態の範囲であり、この場合、ＧＣは不要である。
【００７１】
“Host Initiated GC”は、残容量が“Low_Threshold”よりも大きく“High_Threshold”以下である状態の範囲であり、この場合、ホストの一例であるＣＭ２が主導でＧＣの実行をＢＵＤ３０に対して指示してよい。なお、“Host Initiated GC”において、ＣＭ２（ＧＣ実行制御部４３）は、ＧＣの実行要否の判断を含む制御を行なってよい。
【００７２】
“Device Initiated GC”は、残容量が“Low_Threshold”以下である状態の範囲であり、この場合、デバイスの一例であるＢＵＤ３０が主導でＧＣを行なってよい。
【００７３】
図６は、ダミーデータの書き込みによるフリースペースの残容量の変化の一例を示す図である。図６の例において、横軸はダミーデータの書き込み実行回数（又は実行時間）、換言すれば、ダミーデータの書き込み総容量（合計容量）を示す。
【００７４】
ＢＵＤ３０の制御部３１は、ダミーデータ書込部４２からの指示に応じて、バックアップ領域３２ｃに対するダミーデータの書き込みを行ないながら、不可視領域３２ｅに対して、ページの結合、ＧＣ、ブロック交代等をバックグラウンドで行なう。このように、ダミーデータの書き込みでは、ブロックの消去及び書き込みが繰り返される。
【００７５】
このため、記憶部３２においては、フリースペースが枯渇せず（残容量が“０”にならず）、最小でも不可視領域３２ｅ分のフリースペースが残ることになる。従って、ダミーデータ書込部４２による書込処理及び判定処理が繰り返し実行されると、記憶部３２では、フリーブロック数が、ダミーデータ以外の記憶部３２の空き容量とバックアップ領域３２ｃの空き容量との合計容量に飽和することになる。
【００７６】
上記（II）の終了条件を満たす場合、書込処理及び判定処理の組が繰り返し実行されたとしても、これ以上の大幅なフリーブロックの減少は発生しないと考えられる。従って、ダミーデータ書込部４２は、上記（Ｉ）の終了条件が満たされているか否かに関わらず、上記（II）の終了条件を満たす場合には、ダミーデータ書込処理を停止してよい。
【００７７】
なお、ダミーデータ書込部４２は、上記（II）の判定において、例えば、書込処理によるフリーブロックの残容量の変化量（今回の書き込みによる残容量と前回の書き込みによる残容量との差分）が、“０”となった場合に、残容量が飽和したと判定してよい。なお、他の例では、ダミーデータ書込部４２は、変化量が飽和閾値以下となった場合に、残容量が飽和したと判定してもよい。飽和閾値としては、一例として、数％未満の値であってよい。
【００７８】
また、ダミーデータ書込部４２は、停電が発生した場合には、バックアップ処理部４１により実行されるバックアップ処理に先立って、ダミーデータの書き込みを停止してよい。これにより、停電時のバックアップ処理中に、ダミーデータ書込部４２によるダミーバックアップが実行されることを抑止できる。
【００７９】
以上のように、ダミーデータ書込部４２は、ＢＵＤ３０に設けられたバックアップ領域３２ｃに対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部の一例である。このバックアップ領域３２ｃは、停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域である。
【００８０】
ＧＣ実行制御部４３は、ダミーデータ書込部４２によるダミーデータ書込処理の実行結果に基づいて、ＣＭ２が主導となるＧＣの実行制御を行なう。
【００８１】
例えば、ＧＣ実行制御部４３は、ダミーデータ書込処理が終了したときのフリースペースに基づき、停電時のバックアップ処理中にＢＵＤ３０においてフリーブロックの不足によるデバイス自己判断でのＧＣ動作が発生するか否かを判定してよい。
【００８２】
一例として、ＧＣ実行制御部４３は、ダミーデータ書込処理の終了後のフリースペースの残容量が、図５に例示する“High_Threshold”以下（“Host Initiated GC”又は“Device Initiated GC”の範囲）であるか否かを判定してよい。
【００８３】
残容量が“High_Threshold”以下となる場合、ＧＣ実行制御部４３は、停電時のバックアップ処理中にフリースペースの残容量が“Host Initiated GC”又は“Device Initiated GC”の範囲になると判断（予測）し、ＧＣを実行するように制御してよい。
【００８４】
一例として、ＧＣ実行制御部４３は、フリースペースの残容量が“High_Threshold”よりも大きくなる（“No GC”の範囲になる）まで、ＢＵＤ３０に対して、以下のＧＣ実行制御処理を行なってよい。ＧＣ実行制御処理は、例えば、ＢＵＤ３０に対するＧＣの実行時間（例えば一定時間）を指定したＧＣ実行指示の送信処理、及び、ＧＣ完了後にＢＵＤ３０のフリースペースの残容量が“High_Threshold”を超えたか否かを判定する判定処理、を含んでよい。
【００８５】
例えば、ＧＣ実行制御部４３は、ＧＣ実行制御処理において、ＢＵＤ３０のフリースペースの残容量（割合）が所定の割合、例えば“High_Threshold”を超えるまで、送信処理及び判定処理の組（セット）を繰り返し実行してよい。
【００８６】
このように、ダミーデータ書込処理が完了したときに、フリーブロックの残容量が所定の閾値よりも少ない場合、バックアップ処理（書き込み）中に、ＢＵＤ３０においてＢＵＤ３０主導のＧＣが発生することが予測される。そこで、ＧＣ実行制御部４３は、ＢＵＤ３０に対して、強制的にＧＣを実行させる指示を行なうのである。
【００８７】
このように、ダミーデータ書込部４２及びＧＣ実行制御部４３によれば、ダミーバックアップによって、停電時のバックアップ処理中に不足するフリーブロック数（総容量）を予測することができる。
【００８８】
なお、上述した説明では、ＧＣ実行制御部４３によるＧＣ実行制御処理において、所定の閾値として“High_Threshold”が用いられるものとしたが、これに限定されるものではない。例えば、ＧＣ実行制御部４３は、所定の閾値として、“Low_Threshold”（例えば、“Device Initiated GC”の範囲）、或いは、“Low_Threshold”から“High_Threshold”までの間の値を用いてもよい。
【００８９】
また、ＧＣ実行制御部４３は、ダミーデータ書込部４２によるダミーデータ書込処理（ダミーバックアップ）によってバックアップ領域３２ｃに書き込まれたブロックを消去する消去処理を行なってよい。消去処理は、ＧＣ実行制御処理の前に実行されてもよい。
【００９０】
さらに、ＧＣ実行制御部４３は、停電が発生した場合には、バックアップ処理部４１により実行されるバックアップ処理に先立って、ＢＵＤ３０に対して、ＧＣ動作を抑止させるＧＣ抑止指示（停止指示）を送信してよい。また、ＧＣ実行制御部４３は、バックアップ領域３２ｃにおけるダミーデータが書き込まれた記憶領域を空き領域とするための指示（制御信号）を送信してよい。これらの指示により、停電時のバックアップ処理中に、ＧＣ実行制御部４３からの指示によるＧＣの実行を抑止でき、また、フリースペースを増加させることができるため、バックアップ処理の書込速度の向上を図ることができる。
【００９１】
このように、ＧＣ実行制御部４３は、ダミーデータの書き込み結果に基づき、メモリ２０のバックアップが実行される場合にＢＵＤ３０の空き領域が不足するか否かを判定する判定部の一例である。
【００９２】
また、ＧＣ実行制御部４３は、ＢＵＤ３０の空き領域が不足すると判定した場合、ＢＵＤ３０が有する制御部３１に対して、ＧＣを実行させる実行信号を送信する送信部の一例である。なお、一実施形態において、ＧＣは、ＢＵＤ３０の空き領域を増加させる増加処理の一例である。
【００９３】
以上のように、一実施形態に係る手法によれば、バックアップ先であるＢＵＤ３０の制御部３１ではなく、バックアップを制御するＣＭ２が、ＢＵＤ３０においてＧＣを実施するか否かを判定する。そして、ＣＭ２は、ＧＣを実施すると判断した場合、停電時に制御部３１によりＧＣが実行されることを抑止するために、事前に制御部３１にＧＣを実施させるように制御する。
【００９４】
これにより、停電発生により実行されるメモリバックアップ処理によるＢＵＤ３０での書き込み処理において、ＢＵＤ３０の自律動作によるＧＣの実施を回避できるため、バックアップ時間の高速化、及び、予備電源であるバッテリの容量削減を図ることができる。
【００９５】
〔１−３〕動作例
次に、図７〜図１０を参照して、上述の如く構成されたストレージ装置１（ＣＭ２）の動作例の説明を行なう。
【００９６】
〔１−３−１〕ＧＣ実施判定処理
まず、図７を参照して、ＣＭ２によるＧＣ実施判定処理の動作例を説明する。なお、図７に示すＧＣ実施判定処理は、所定のタイミングで、例えば、定期的に実行されてよい。
【００９７】
図７に例示するように、ダミーデータ書込部４２は、ダミーデータ書込処理を実行する。例えば、ダミーデータ書込部４２は、メモリ２０から、メモリ２０内のバックアップ対象のデータサイズ“BU_Size”を取得し（ステップＳ１）、書込オフセットアドレスＮとして、Ｎ＝０を設定する（ステップＳ２）。
【００９８】
次いで、ダミーデータ書込部４２は、ＢＵＤ３０のバックアップ領域３２ｃのオフセットアドレスＮに対して、一定容量（例えばサイズＸ）のダミーデータを積極的に書き込む（ステップＳ３）。
【００９９】
ダミーデータ書込部４２は、ＢＵＤ３０からフリースペースの利用率ＦＳ（Ｎ）を取得する（ステップＳ４）。利用率ＦＳ（Ｎ）は、例えば、オフセットアドレスＮに対してダミーデータを書き込んだ後の、記憶部３２における（全体の）記憶容量に対するフリースペースの割合を示す値であってよい。
【０１００】
ダミーデータ書込部４２は、例えば、ＢＵＤ３０に対して、記憶容量やフリースペース数等を取得するためのコマンドを送信し、当該コマンドに対してＢＵＤ３０から送信された応答に基づき、フリースペースの利用率ＦＳ（Ｎ）を算出してもよい。なお、ＢＵＤ３０において算出可能であれば、ダミーデータ書込部４２は、ＢＵＤ３０から利用率ＦＳ（Ｎ）そのものを取得してもよい。フリースペースの利用率の取得手法については、以下の説明においても同様である。
も同様である。
【０１０１】
そして、ダミーデータ書込部４２は、直前からのフリースペースの利用率の差分（ＦＳ（Ｎ）−ＦＳ（Ｎ−１））が“０”か（或いは飽和閾値以下か）否か、及び／又は、書き込んだダミーデータの合計が“BU_size”以上か否か、を判定する（ステップＳ５）。書き込んだダミーデータの合計は、例えば、ダミーデータのサイズＸと、書込回数（例示的に、オフセットアドレスＮに１を加えた値（Ｎ＋１）と、の乗算により求められてよい。
【０１０２】
判定の結果、利用率の差分が“０”（或いは飽和閾値以下）ではなく、且つ、書き込んだダミーデータの合計が“BU_size”以上ではない、と判定した場合（ステップＳ５でＮｏ）、処理がステップＳ６に移行する。ステップＳ６では、ダミーデータ書込部４２は、オフセットアドレスＮに“１”を加算して、処理がステップＳ３に移行する。
【０１０３】
一方、判定の結果、利用率の差分が“０”（或いは飽和閾値以下）である、又は、書き込んだダミーデータの合計が“BU_size”以上である、と判定した場合（ステップＳ５でＹｅｓ）、ダミーデータ書込部４２によるダミーデータ書込処理が終了する。そして、処理がステップＳ７に移行する。
【０１０４】
ダミーデータ書込処理が終了すると、ＧＣ実行制御部４３は、消去処理及びＧＣ実行制御処理を行なう。例えば、ＧＣ実行制御部４３は、消去処理として、記憶部３２の例えばバックアップ領域３２ｃにおけるダミーデータ書込済みの領域（ブロック）を消去し、当該領域をフリースペース化する（ステップＳ７）。
【０１０５】
また、ＧＣ実行制御部４３は、ＧＣ実行制御処理の実行要否の判断として、ステップＳ４において最後に取得したＦＳ（Ｎ）が、閾値ＴＨ１以下か否かを判定する（ステップＳ８）。閾値ＴＨ１は、所定の閾値又は第１の閾値の一例であり、例えば、図５に示す“High_Threshold”であってよい。ＦＳ（Ｎ）が閾値ＴＨ１以下ではないと判定した場合（ステップＳ８でＮｏ）、ＧＣ実行制御部４３は、ＣＭ２による強制的なＧＣの実行は不要であると判断し、処理が終了する。
【０１０６】
一方、ＦＳ（Ｎ）が閾値ＴＨ１以下であると判定した場合（ステップＳ８でＹｅｓ）、ＢＵＤ３０に対するＧＣ実行処理（ＧＣ実行制御処理）を行ない（ステップＳ９）、処理が終了する。
【０１０７】
〔１−３−２〕ＧＣ実行処理
次に、図８を参照して、図７のステップＳ９に示すＧＣ実行処理の動作例を説明する。
【０１０８】
図８に例示するように、ＧＣ実行制御部４３は、変数ｎ＝０を設定し（ステップＳ１１）、初期値として、ＢＵＤ３０から現在のフリースペース利用率ＦＳを取得する（ステップＳ１２）。
【０１０９】
次いで、ＧＣ実行制御部４３は、ＢＵＤ３０に対して、ＧＣの実行指示を発行する（ステップＳ１３）。実行指示では、例えば、実行期間が指定されてよい。制御部３１は、指定された実行期間内において、ＧＣを実行してよい。
【０１１０】
次いで、ＧＣ実行制御部４３は、ＢＵＤ３０からフリースペースＦＳ（ｎ）を取得し（ステップＳ１４）、ＦＳ（ｎ）が閾値ＴＨ２を超えたか否かを判定する（ステップＳ１５）。閾値ＴＨ２は、第２の閾値の一例であり、例えば、図５に示す“High_Threshold”であってよい。なお、閾値ＴＨ２は、図７のステップＳ８における閾値ＴＨ１と同一の値であってもよく、この場合、閾値ＴＨ２は、所定の閾値の一例である。
【０１１１】
ＦＳ（ｎ）が閾値ＴＨ２を超えていないと判定した場合（ステップＳ１５でＮｏ）、ＧＣ実行制御部４３は、変数ｎに“１”を加算して（ステップＳ１６）、処理がステップＳ１３に移行する。
【０１１２】
一方、ＦＳ（ｎ）が閾値ＴＨ２を超えたと判定した場合（ステップＳ１５でＹｅｓ）、停電時のバックアップ処理中にフリーブロック数が不足する可能性が低減した（ＧＣが不要な量までフリースペースが増加した）ため、処理が終了する。
【０１１３】
このように、ＧＣ実行制御部４３は、ＧＣの実行単位時間として特定の実行期間を指定し、フリースペースの残容量が閾値ＴＨ２を超えるまで、当該単位時間のＧＣを繰り返し実行することで、フリースペースの容量（フリーブロック数）を増加させる。
【０１１４】
なお、ステップＳ１３において、ＧＣ実行制御部４３が指定するＧＣの実行期間は、一定の期間であってもよいし、現在のＦＳや不足するフリーブロック数等に応じて可変の期間であってもよい。例えば、ＧＣ実行制御部４３は、初期値ＦＳからＦＳ（ｎ）までのフリースペースの増加量（差分）と、ＦＳ（ｎ）から閾値ＴＨ２までの増加予定量（差分）とに基づいて、ステップＳ１３が到来する都度、実行期間を決定してもよい。
【０１１５】
〔１−３−３〕停電検出後処理
次に、図９を参照して、ストレージ装置１（ＣＭ２）の停電が検出された後の動作例を説明する。なお、以下の処理は、ＣＭ２のバッテリ等の予備電源により実行されるものとする。
【０１１６】
図９に例示するように、ＣＭ２は、停電を検出すると、ダミーデータ書込部４２によるダミーデータ書込処理を強制終了させる（ステップＳ２１）。また、ＣＭ２は、ＧＣ実行制御部４３によるＢＵＤ３０に対するＧＣ実行指示を強制停止させる（ステップＳ２２）。上記ステップＳ２１及びＳ２２により、図７に示すＧＣ実施判定処理（図８に示すＧＣ実行処理を含む）の実行が終了又は停止させられる。
【０１１７】
なお、強制終了又は強制停止は、当該処理が実行されている場合に、当該処理の官僚を待たずに、当該処理を強制的に停止させる又は終了させることを含んでよい。また、強制終了又は強制停止は、当該処理の実行が予定されている場合には、当該処理の実行予定を中止（キャンセル）させることを含んでもよい。
【０１１８】
また、ＧＣ実行制御部４３は、記憶部３２の例えばバックアップ領域３２ｃにおけるダミーデータ書込済みの領域（ブロック）を消去し、当該領域をフリースペース化する（ステップＳ２３）。
【０１１９】
そして、ＣＭ２は、停電処理、例えば、バックアップ処理部４１によるメモリ２０のＢＵＤ３０へのバックアップ処理を実行し（ステップＳ２４）、処理が終了する。なお、ＣＭ２は、例えば、電源切断要因（電源ＯＦＦ要因）として、「停電」による電源切断であることをＢＵＤ３０、例えばログメタ書込領域３２ｂに設定し、電源を切断（シャットダウン）してよい。
【０１２０】
〔１−３−４〕復電後処理
次に、図１０を参照して、復電後、すなわち、ストレージ装置１（ＣＭ２）への電源供給が再開された場合の動作例を説明する。
【０１２１】
図１０に例示するように、ＣＭ２は、復電により電源ＯＮになると、システム起動処理を開始する（ステップＳ３１）。システム起動処理では、ＣＭ２は、ＢＵＤ３０の例えばログメタ書込領域３２ｂを参照して、直前の電源切断要因が停電か否かを判定する（ステップＳ３２）。
【０１２２】
直前の電源切断要因が停電であると判定した場合（ステップＳ３２でＹｅｓ）、バックアップ処理部４１は、ＢＵＤ３０からメモリ２０に対するデータリストアを実行する（ステップＳ３３）。例えば、バックアップ処理部４１は、バックアップ領域３２ｃに格納されたバックアップデータ（停電時にバックアップしたメモリ２０の有効なデータ）を読み出してメモリ２０に書き込んでよい。
【０１２３】
次いで、ＧＣ実行制御部４３は、記憶部３２のバックアップ領域３２ｃに格納されたバックアップ書込済みの領域（ブロック）を消去する（ステップＳ３４）。
【０１２４】
また、ＧＣ実行制御部４３は、ＢＵＤ３０に対して、ＧＣの実行指示を行なう（ステップＳ３５）。このように、システム起動のための処理が完了した後、ＣＭ２は、ＧＣ実行指示処理を行ない、記憶部３２における全ての記憶領域のＧＣを実施することで、システム起動時に、最大限のフリースペースを確保することができる。
【０１２５】
以上により、システム起動処理が完了し（ステップＳ３６）、処理が終了する。
【０１２６】
一方、ステップＳ３２において、直前の電源切断要因が停電ではないと判定した場合（ステップＳ３２でＮｏ）、ＣＭ２は、電源切断要因に応じた処理を行ない（ステップＳ３７）、処理がステップＳ３６に移行する。
【０１２７】
〔１−４〕ストレージ装置のハードウェア構成例
図１１は、一実施形態の一例としてのストレージ装置１のハードウェア構成例を示すブロック図である。図１１に示すように、ストレージ装置１は、例示的に、プロセッサ１ａ、ＤＲＡＭ１ｂ、フラッシュＲＯＭ（Read Only Memory）１ｃ、ＳＳＤ１ｄ、ＮＷＩＦ（Network Interface）１ｅ、及び、チャネルＩＦ１ｆをそなえてよい。また、ストレージ装置１は、例示的に、デバイスＩＦ１ｇ−１及び１ｇ−２、複数のディスク１ｈ、バッテリ１ｉ、Ｉ／Ｏ（Input / Output）部１ｊ、並びに、読取部１ｋをそなえてよい。
【０１２８】
プロセッサ１ａは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ１ａは、各ブロック１ｂ〜１ｋとバス１ｐで相互に通信可能に接続されてよい。プロセッサ１ａとしては、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤ（例えばＦＰＧＡ）等の集積回路（ＩＣ；Integrated Circuit）が用いられてもよい。なお、ＣＰＵはCentral Processing Unitの略称であり、ＭＰＵはMicro Processing Unitの略称であり、ＤＳＰはDigital Signal Processorの略称である。また、ＡＳＩＣはApplication Specific Integrated Circuitの略称であり、ＰＬＤはProgrammable Logic Deviceの略称であり、ＦＰＧＡはField Programmable Gate Arrayの略称である。
【０１２９】
ＤＲＡＭ１ｂは、種々のデータやプログラムを格納する揮発性メモリの一例である。一実施形態において、ＤＲＡＭ１ｂの少なくとも一部の記憶領域は、例えば、図示しないホスト装置からディスク１ｈに対するアクセスに係る種々のデータを一時的に格納するキャッシュとして利用されてよい。
【０１３０】
フラッシュＲＯＭ１ｃは、種々のデータやプログラム等を格納する不揮発性メモリの一例である。例えば、フラッシュＲＯＭ１ｃには、ＯＳ（Operating System）やＦＷ、アプリケーション等のプログラム、及び各種データが格納されてよい。フラッシュＲＯＭ１ｃとしては、種々の不揮発性メモリ、例えば、ＮＡＮＤフラッシュメモリ、ＳＣＭ（Storage Class Memory）、ＲＯＭ（Read Only Memory）等が挙げられる。
【０１３１】
ＳＳＤ１ｄは、種々のデータやプログラム等を格納する不揮発性メモリの一例である。ＳＳＤ１ｄは、例示的に、記憶領域に対する種々のアクセスの制御を行なうコントローラ１ｄａをそなえてよい。コントローラ１ｄａとしては、プロセッサ及びメモリを含む集積回路（ＩＣ）等が挙げられる。プロセッサとしては、種々の演算処理装置が挙げられる。メモリとしては、種々の揮発性メモリ又は不揮発性メモリが挙げられる。
【０１３２】
例えば、ＳＳＤ１ｄには、ＯＳやＦＷ、アプリケーション等のプログラム、及び各種データが格納されてよい。ＳＳＤ１ｄとしては、例えば、ＳＡＴＡ、ＳＡＳ、又はＮＶＭｅ等のＩＦに対応した、ＮＡＮＤフラッシュメモリを利用したＳＳＤが挙げられる。ＳＡＴＡは、Serial ATA（Advanced Technology Attachment）の略称であり、ＳＡＳは、Serial Attached SCSI（Small Computer System Interface）の略称である。ＮＶＭｅは、Non-Volatile Memory Expressの略称である。なお、ＳＳＤ１ｄとして、例えば、3D XPoint（登録商標）技術を採用したIntel Optane SSD（登録商標）のような低レイテンシＳＳＤが用いられてもよい。
【０１３３】
フラッシュＲＯＭ１ｃ及びＳＳＤ１ｄの少なくとも一方には、ＣＭ２の各種機能の全部若しくは一部を実現するプログラム１ｍが格納されてもよい。例えば、ＣＭ２のプロセッサ１ａは、フラッシュＲＯＭ１ｃに格納されたＦＷとしてのプログラム１ｍを読み出し、ＤＲＡＭ１ｂに展開して実行することにより、ＣＭ２としての機能を実現してよい。或いは、ＣＭ２のプロセッサ１ａは、ＳＳＤ１ｄに格納されたＦＷとしてのプログラム１ｍを読み出し、ＤＲＡＭ１ｂ又はフラッシュＲＯＭ１ｃに展開して実行することにより、ＣＭ２としての機能を実現してもよい。ＣＭ２としての機能には、上述した、バックアップ処理部４１、ダミーデータ書込部４２、及びＧＣ実行制御部４３の機能が含まれてよい。
【０１３４】
なお、図２に示す保持部１０は、例えば、ＣＭ２のＤＲＡＭ１ｂ、フラッシュＲＯＭ１ｃ、及びＳＳＤ１ｄの少なくとも１つの記憶領域により実現されてよい。また、図２に示すメモリ２０は、例えば、ＣＭ２のＤＲＡＭ１ｂの記憶領域により実現されてよい。さらに、図２に示すＢＵＤ３０は、例えば、ＣＭ２のＳＳＤ１ｄの記憶領域により実現されてよい。
【０１３５】
ＮＷＩＦ１ｅ及びチャネルＩＦ１ｆは、それぞれ、ＬＡＮ（Local Area Network）、及び、ＳＡＮ（Storage Area Network）との間の接続及び通信の制御等を行なう通信ＩＦの一例である。これらの通信ＩＦは、例えば、ＬＡＮカード等のＩＦや、ファイバチャネル（ＦＣ；Fibre Channel）等に準拠したＩＦをそなえてよい。
【０１３６】
なお、ＣＭ２は、管理者の管理端末との間の接続及び通信の制御等を行なう通信ＩＦをそなえてもよく、当該通信ＩＦを用いて、図示しないネットワークからプログラム１ｍをダウンロードしてもよい。
【０１３７】
デバイスＩＦ１ｇ−１及び１ｇ−２は、それぞれ、複数のディスク１ｈとの間の接続及び通信の制御等を行なう通信ＩＦの一例である。デバイスＩＦ１ｇ−１及び１ｇ−２としては、例えば、デバイスアダプタ等のＩＦや、ＳＡＳエクスパンダ等のスイッチ装置等が挙げられる。
【０１３８】
複数のディスク１ｈは、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、ディスク１ｈは、図示しないホスト装置等にストレージ装置１の記憶領域を提供する記憶装置として使用されてよい。ディスク１ｈとしては、例えば、ＨＤＤ（Hard Disk Drive）等の磁気ディスク装置、ＳＳＤ等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、ＳＣＭ、ＲＯＭ等が挙げられる。一実施形態において、複数のディスク１ｈは、図２に示すストレージ３を構成する複数のディスク３ａの一例である。
【０１３９】
バッテリ１ｉは、ストレージ装置１（ＣＭ２）に電力を供給する電源が喪失した場合（停電が発生した場合）に、当該ストレージ装置１（ＣＭ２）に対して予備電力を供給する予備電源の一例である。バッテリ１ｉは、例えば、電源が喪失したことを検出し、当該検出に応じて予備電力の供給を制御する制御回路をそなえてもよい。
【０１４０】
Ｉ／Ｏ部１ｊは、例えば、マウス、キーボード、タッチパネル、操作ボタン等の入力部、及び、ディスプレイやプリンタ等の出力部、の一方又は双方を含んでよい。読取部１ｋは、記録媒体１ｎに記録されたデータやプログラムを読み出しプロセッサ１ａに出力するリーダの一例である。読取部１ｋは、記録媒体１ｎを接続又は挿入可能な接続端子又は装置を含んでもよい。読取部１ｋとしては、例えばＵＳＢ（Universal Serial Bus）等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、ＳＤカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体１ｎにはプログラム１ｍが格納されてもよい。
【０１４１】
記録媒体１ｎとしては、例示的に、磁気／光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気／光ディスクとしては、例示的に、フレキシブルディスク、ＣＤ（Compact Disc）、ＤＶＤ（Digital Versatile Disc）、ブルーレイディスク、ＨＶＤ（Holographic Versatile Disc）等が挙げられる。フラッシュメモリとしては、例示的に、ＵＳＢメモリやＳＤカード等の半導体メモリが挙げられる。なお、ＣＤとしては、例示的に、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ等が挙げられる。また、ＤＶＤとしては、例示的に、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等が挙げられる。
【０１４２】
上述したストレージ装置１のハードウェア構成は例示である。従って、ストレージ装置１内、又は、ＣＭ２でのハードウェアの増減（例えば任意のブロックの追加や削除）、分割、任意の組み合わせでの統合、バスの追加又は省略等は適宜行なわれてもよい。
【０１４３】
例えば、ストレージ３を構成するディスク１ｈは、ＣＭ２或いはストレージ装置１とは別のモジュール、例えばデバイスエンクロージャ（ＤＥ；Device Enclosure）として構成されてもよい。また、ＣＭ２としてのブロック１ａ〜１ｋは、ストレージ装置１において冗長化（例えば二重化）されてもよい。なお、ストレージ装置１が複数のＣＭ２をそなえる場合、これらのＣＭ２の各々とストレージ３との間のアクセスパスも冗長化されてよい。また、ストレージ装置１は、例えば、カスケード状に接続（縦列接続）した複数のストレージ３をそなえてもよい。
【０１４４】
〔２〕その他
上述した一実施形態に係る技術は、以下のように変形、変更して実施することができる。
【０１４５】
例えば、図２に示すＣＭ２の各機能ブロックは、それぞれ任意の組み合わせで併合してもよく、分割してもよい。
【０１４６】
また、一実施形態では、制御装置の一例としてＣＭ２を例に挙げたが、これに限定されるものではない。制御装置としては、例えば、ＳＳＤ等の不揮発性メモリを停電時のメモリバックアップ先としてそなえる種々の情報処理装置が用いられてもよい。
【０１４７】
〔３〕付記
以上の実施形態に関し、更に以下の付記を開示する。
【０１４８】
（付記１）
揮発性メモリと、
停電が発生した場合に実行される前記揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行なう書込部と、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定する判定部と、
前記判定部により前記不揮発性メモリの空き領域が不足すると判定された場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する送信部と、
をそなえる、制御装置。
【０１４９】
（付記２）
前記判定部は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
付記１に記載の制御装置。
【０１５０】
（付記３）
前記書込部は、前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
付記１又は付記２に記載の制御装置。
【０１５１】
（付記４）
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
付記１〜３のいずれか１項に記載の制御装置。
【０１５２】
（付記５）
前記停電が発生した場合に、予備電源を利用して、前記バックアップ領域に対して、前記揮発性メモリ内のデータのバックアップを実行するバックアップ部、をさらにそなえる
付記１〜４のいずれか１項に記載の制御装置。
【０１５３】
（付記６）
前記停電が発生した場合に、前記バックアップ部による前記バックアップの実行前に、
前記書込部は、前記予備電源を利用して、前記バックアップ領域に対する前記ダミーデータの書き込みを停止し、
前記送信部は、前記予備電源を利用して、前記コントローラに対して、前記増加処理の実行を停止する停止信号を送信するとともに、前記バックアップ領域における前記書込部により前記ダミーデータが書き込まれた記憶領域を空き領域とするための制御信号を送信する、
付記５に記載の制御装置。
【０１５４】
（付記７）
前記バックアップ部は、前記制御装置への電源投入後において、前回の前記制御装置の電源切断の要因が停電であると判定された場合、前記不揮発性メモリの前記バックアップ領域に格納されたデータを前記揮発性メモリに書き込む、
付記５又は付記６に記載の制御装置。
【０１５５】
（付記８）
前記実行信号は、前記増加処理の実行時間を含み、
前記送信部は、前記実行信号により前記増加処理が実行された後の前記不揮発性メモリの空き領域の残容量の割合が所定の割合を超えるまで、前記コントローラに対して、前記実行信号を繰り返し送信する、
付記１〜７のいずれか１項に記載の制御装置。
【０１５６】
（付記９）
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定し、
前記不揮発性メモリの空き領域が不足すると判定した場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する、
処理をコンピュータに実行させる、制御プログラム。
【０１５７】
（付記１０）
前記判定は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
付記９に記載の制御プログラム。
【０１５８】
（付記１１）
前記書き込みは、
前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、
前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
付記９又は付記１０に記載の制御プログラム。
【０１５９】
（付記１２）
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
付記９〜１１のいずれか１項に記載の制御プログラム。
【０１６０】
（付記１３）
前記停電が発生した場合に、予備電源を利用して、前記バックアップ領域に対して、前記揮発性メモリ内のデータのバックアップを実行する、
処理を前記コンピュータに実行させる、付記９〜１２のいずれか１項に記載の制御プログラム。
【０１６１】
（付記１４）
前記停電が発生した場合に、前記バックアップの実行前に、
前記予備電源を利用して、前記バックアップ領域に対する前記ダミーデータの書き込みを停止し、
前記予備電源を利用して、前記コントローラに対して、前記増加処理の実行を停止する停止信号を送信し、
前記バックアップ領域における前記書込部により前記ダミーデータが書き込まれた記憶領域を空き領域とするための制御信号を送信する、
処理を前記コンピュータに実行させる、付記１３に記載の制御プログラム。
【０１６２】
（付記１５）
前記コンピュータへの電源投入後において、前回の前記コンピュータの電源切断の要因が停電であると判定した場合、前記不揮発性メモリの前記バックアップ領域に格納されたデータを前記揮発性メモリに書き込む、
付記１３又は付記１４に記載の制御プログラム。
【０１６３】
（付記１６）
前記実行信号は、前記増加処理の実行時間を含み、
前記実行信号の送信は、前記実行信号により前記増加処理が実行された後の前記不揮発性メモリの空き領域の残容量の割合が所定の割合を超えるまで、前記コントローラに対して、前記実行信号を繰り返し送信する、
付記９〜１５のいずれか１項に記載の制御プログラム。
【０１６４】
（付記１７）
停電が発生した場合に実行される揮発性メモリ内のデータのバックアップの書き込み先であるバックアップ領域であって、不揮発性メモリに設けられた前記バックアップ領域に対して、動作中における所定のタイミングでダミーデータの書き込みを行ない、
前記ダミーデータの書き込み結果に基づき、前記揮発性メモリのバックアップが実行される場合に前記不揮発性メモリの空き領域が不足するか否かを判定し、
前記不揮発性メモリの空き領域が不足すると判定した場合、前記不揮発性メモリが有するコントローラに対して、前記不揮発性メモリの空き領域を増加させる増加処理を実行させる実行信号を送信する、
制御方法。
【０１６５】
（付記１８）
前記判定は、前記コントローラから前記不揮発性メモリにおける空き領域の残容量の割合を取得し、前記残容量の割合が所定の閾値以下である場合、前記不揮発性メモリの空き領域が不足すると判定する、
付記１７に記載の制御方法。
【０１６６】
（付記１９）
前記書き込みは、
前記バックアップ領域に対して、前記ダミーデータをブロック単位で書き込み、前記ダミーデータの一部であるブロックを前記バックアップ領域に書き込むごとに、前記不揮発性メモリの空き領域の残容量が飽和したか否かを判定し、
前記空き領域の残容量が飽和したと判定した場合に、前記ダミーデータの書き込みを終了する、
付記１７又は付記１８に記載の制御方法。
【０１６７】
（付記２０）
前記ダミーデータのデータサイズは、前記揮発性メモリ内のデータのデータサイズ以上のサイズである、
付記１７〜１９のいずれか１項に記載の制御方法。
【符号の説明】
【０１６８】
１    ストレージ装置
２    ＣＭ
３    ストレージ
３ａ    ディスク
１０    保持部
１１    制御情報
２０    メモリ
３０    ＢＵＤ
３１    制御部
３２    記憶部
４１    バックアップ処理部
４２    ダミーデータ書込部
４３    ＧＣ実行制御部
【図１】
2020013222.tif 000003
【図２】
2020013222.tif 000004
【図３】
2020013222.tif 000005
【図４】
2020013222.tif 000006
【図５】
2020013222.tif 000007
【図６】
2020013222.tif 000008
【図７】
2020013222.tif 000009
【図８】
2020013222.tif 000010
【図９】
2020013222.tif 000011
【図１０】
2020013222.tif 000012
【図１１】
2020013222.tif 000013