(57)【要約】【課題】データの信頼性を向上させる。【解決手段】実施形態のストレージ制御装置は、インターフェースと、記憶部と、制御部と、を備える。インターフェースは、不揮発性の半導体記憶装置と接続を可能とする。記憶部は、データの保存領域となる。制御部は、インターフェースで接続された不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、記憶部に移動した後、当該記憶部から、不揮発性の半導体記憶装置のブロックに移動させる。【選択図】図２
2014178867.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の半導体記憶装置と接続を可能とするインターフェースと、
データの保存領域となる記憶部と、
前記インターフェースで接続された前記不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記不揮発性の半導体記憶装置のブロックに移動させる制御部と、
を備えるストレージ制御装置。
【請求項２】
前記制御部は、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記記憶部に移動させる前と同一のブロックに移動させる、
請求項１に記載のストレージ制御装置。
【請求項３】
前記不揮発性の半導体記憶装置は、ブロック毎に更新されたか否かを示すフラグを記憶し、
前記制御部は、前記不揮発性の半導体記憶装置に記憶された前記フラグを参照し、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記不揮発性の半導体記憶装置のブロックに移動させる、
請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記インターフェースは、前記不揮発性の半導体記憶装置の複数と接続を可能とし、
前記制御部は、ＲＡＩＤ  ０（Redundant  Arrays  of  Inexpensive  Disks  0）を用いて、前記複数の前記不揮発性の半導体記憶装置を制御する、
請求項１乃至３のいずれか１つに記載のストレージ制御装置。
【請求項５】
前記インターフェースで接続される前記不揮発性の半導体記憶装置は、ＮＡＮＤ型フラッシュメモリであるＳＳＤ（Solid  State  Drive）である、
請求項１乃至４のいずれか１つに記載のストレージ制御装置。
【請求項６】
複数の不揮発性の半導体記憶装置と、当該半導体記憶装置を制御するストレージ制御装置と、で構成されるストレージ制御システムにおいて、
ストレージ制御装置は、
前記半導体記憶装置と接続を可能とするインターフェースと、
データの保存領域となる記憶部と、
前記インターフェースで接続された前記不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記不揮発性の半導体記憶装置のブロックに移動させる制御部と、を備える、
ストレージ制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージ制御装置、及びストレージ制御システムに関する。
【背景技術】
【０００２】
従来から、ネットワークを介して、動画などの大容量データを通信端末に送信する技術が提案されている。例えば、ディスクアレイへの高速アクセスを行うために、ディスクアレイに対し複数のデータを読み書きする仕組み、例えば周知のＲＡＩＤ（Redundant  Arrays  of  Independent  Disks）のような仕組みを利用した上で、記憶装置としてデータを高速に読み出し可能な、不揮発性の半導体記憶装置（例えばフラッシュメモリを用いたＳＳＤ（Solid  State  Drive））を使用する技術が提案されている。
【０００３】
しかしながら、ＭＬＣ（Multi  Level  Cell）方式のＳＳＤなどの不揮発性の半導体記憶装置を動画などの大容量データを記憶するサーバに使用する場合、従来のハードディスクドライブと比べると信頼性が低い傾向にある。そこで、ＳＳＤの信頼性を高くする技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−３３４５３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術として、ＳＳＤ内部のコントローラで信頼性を高くする技術は提案されているが、発売されている全てのＳＳＤで信頼性を向上する技術が用いられているとは限られない。このため、ディスクアレイに複数のＳＳＤを搭載した場合、ディスクシステム全体、つまり、ストレージを具備するサーバとして信頼性が低くなるという問題が生じる。
【課題を解決するための手段】
【０００６】
実施形態のストレージ制御装置は、インターフェースと、記憶部と、制御部と、を備える。インターフェースは、不揮発性の半導体記憶装置と接続を可能とする。記憶部は、データの一時的な保存領域となる。制御部は、インターフェースで接続された不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、記憶部に移動した後、当該記憶部から、不揮発性の半導体記憶装置のブロックに移動させる。
【図面の簡単な説明】
【０００７】
【図１】図１は、実施形態にかかるサーバの構成を示した図である。
【図２】図２は、実施形態にかかるコントローラの構成を示したブロック図である。
【図３】図３は、実施形態にかかる更新管理テーブルのテーブル構造の例を示した図である。
【図４】図４は、実施形態にかかるサーバにおける、全体的な処理の手順を示すフローチャートである。
【発明を実施するための形態】
【０００８】
本実施形態は、ストレージの制御を行うストレージ制御装置を適用したサーバについて説明する。図１は、本実施形態にかかるサーバの構成を示した図である。図１に示されるように、サーバ１００は、ホストＣＰＵ１０１と、コントローラ１０２と、第１のＩ／Ｆ（インターフェース）１１１と、第２のＩ／Ｆ１１２と、第３のＩ／Ｆ１１３と、第４のＩ／Ｆ１１４と、第１のＳＳＤ１２１と、第２のＳＳＤ１２２と、第３のＳＳＤ１２３と、第４のＳＳＤ１２４と、を備える。そして、ホストＣＰＵ１０１は、サーバ１００の全体を制御する。また、図１に示すサーバ１００は、複数のＳＳＤ（不揮発性の半導体記憶装置）と、複数のＳＳＤ（不揮発性の半導体記憶装置）を制御するディスクアレイ装置と、で構成されるディスクシステム（ストレージ制御システム）とも称することができる。
【０００９】
第１のＩ／Ｆ１１１〜第４のＩ／Ｆ１１４は、ＳＳＤとの接続を可能とするインターフェースで有り、例えば、シリアルＡＴＡ（SATA、Serial  Advanced  Technology  Attachment）等の規格に従ったインターフェースとする。本実施形態にかかるサーバ１００は、第１のＩ／Ｆ１１１〜第４のＩ／Ｆ１１４を介して接続された第１のＳＳＤ１２１〜第４のＳＳＤ１２４から、データの読み出し、書き込みを制御する。
【００１０】
コントローラ１０２は、複数のＳＳＤを論理的に１つにまとめるためにＩ／Ｆ制御を行うコントローラとする。本実施形態にかかるコントローラ１０２は、ＲＡＩＤ  ０に従って、第１のＳＳＤ１２１〜第４のＳＳＤ１２４を制御する例とするが、ＲＡＩＤ  ０に制限するものではなく、他の管理手法を用いても良い。
【００１１】
本実施形態においては、ハードウェアであるコントローラ１０２がＲＡＩＤ機能を提供する例について説明するが、ハードウェア制御に制限するものではなく、ソフトウェア制御であっても良い。
【００１２】
本実施形態は、コントローラ１０２がＲＡＩＤ  ０を用いて第１のＳＳＤ１２１〜第４のＳＳＤ１２４を制御して、ファイルシステムを構築する例とする。ＲＡＩＤ  ０を用いることで、第１のＳＳＤ１２１〜第４のＳＳＤ１２４を組み合わせた上で、第１のＳＳＤ１２１〜第４のＳＳＤ１２４のうち、複数のＳＳＤに対して同時並行的な読み書き制御を実現する。これにより、アクセスの高速化を実現する。
【００１３】
つまり、本実施形態にかかるサーバ１００では、ＲＡＩＤ  ０（ストライピング）を用いることで、連続しているデータを、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に合わせて分割して、第１のＳＳＤ１２１〜第４のＳＳＤ１２４の各々に格納している。これにより、１つのデータを読み出す際に、高速読み出し可能な第１のＳＳＤ１２１〜第４のＳＳＤ１２４に同時並行してアクセスすることで、さらなる高速な読み出しを実現できる。
【００１４】
第１のＳＳＤ１２１〜第４のＳＳＤ１２４は、読み書き可能なデータを記憶する記憶部とする。本実施形態にかかる第１のＳＳＤ１２１〜第４のＳＳＤ１２４は、ＭＬＣ方式のドライブを用いる例とするが、他の方式を用いても良い。
【００１５】
ところで、フラッシュメモリを用いたＳＳＤをディスクシステムに使用する際に、データの長期保存に対する信頼性を向上させたい場合に、一般的には信頼性が高いＳＬＣ(Single  Level  Cell)方式のドライブを用いるのが良いとされている。しかしながら、ＭＬＣ(Multi  Level  Cell)方式のドライブより高価であるため、複数のドライブを用いて大容量化を実現する際に、コストが高くなる傾向にあった。
【００１６】
そこで、本実施形態にかかるサーバ１００では、ＭＬＣ方式のドライブを用いて低コスト化を実現した上、コントローラ１０２が、第１のＳＳＤ１２１〜第４のＳＳＤ１２４の信頼性を向上させる制御を行うこととした。
【００１７】
また、第１のＳＳＤ１２１〜第４のＳＳＤ１２４の各々は、データの信頼性を維持するための更新管理テーブル１５１〜１５４を備えている。なお、更新管理テーブル１５１〜１５４については後述する。
【００１８】
図２は、本実施形態にかかるコントローラ１０２の構成を示したブロック図である。図２に示す様に、コントローラ１０２は、ホストコントローラ２０１と、ＲＡＩＤコントローラ２０２と、タイマー２０３と、リフレッシュコントローラ２０４と、記憶部２０５と、第１のデバイスコントローラ２１１と、第２のデバイスコントローラ２１２と、第３のデバイスコントローラ２１３と、第４のデバイスコントローラ２１４と、を備える。
【００１９】
ホストコントローラ２０１は、ホストＣＰＵ１０１との間の通信を制御する。本実施形態にかかるホストコントローラ２０１は、ＲＡＩＤコントローラ２０２の制御に従って、第１のＳＳＤ１２１〜第４のＳＳＤ１２４とホストＣＰＵ１０１との通信を制御する。ホストコントローラ２０１は、ホストＣＰＵ１０１から送信されたコマンドを受信し、当該コマンドによってデータの書き込みが要求されている場合、当該コマンド（ライトコマンド）をＲＡＩＤコントローラ２０２に送信する。また、当該コマンドによってデータの読み込みが要求されている場合、当該コマンド（リードコマンド）をＲＡＩＤコントローラ２０２に送信する。
【００２０】
ＲＡＩＤコントローラ２０２は、ホストコントローラ２０１を介して、ホストＣＰＵ１０１から送信されたコマンドを解釈し、解釈したコマンドに応じてホストコントローラ２０１、ライトバッファ２５１、リードバッファ２５２、第１のデバイスコントローラ２１１〜第４のデバイスコントローラ２１４などの構成要素を制御し、第１のＳＳＤ１２１〜第４のＳＳＤ１２４へのデータの書き込み、及びデータの読み出しを制御する。
【００２１】
ＲＡＩＤコントローラ２０２は、データを分割し複数のディスクに書き込む処理、冗長データの計算などと、逆に読み出したデータから元のデータを復元する機能などを持つ。
【００２２】
本実施形態にかかるＲＡＩＤコントローラ２０２は、ストライピング（ＲＡＩＤ  ０）により、データを分割して複数のＳＳＤ（第１のＳＳＤ１２１〜第４のＳＳＤ１２４のうちいずれか２つ以上）に同時に書き込む制御を行う。その際に、ＲＡＩＤコントローラ２０２は、ＲＡＩＤ  ５（分散データガーディング）のように冗長データの算出が必要であれば計算を行う。さらには、ＲＡＩＤコントローラ２０２は、複数のＳＳＤ（第１のＳＳＤ１２１〜第４のＳＳＤ１２４のうちいずれか２つ以上）から読み出されたデータを元のデータに復元する機能を有する。
【００２３】
本実施形態にかかるファイルシステムでは、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に記憶されたデータは、論理ブロック単位で管理されている。本実施形態では、論理ブロックを指定する手法として、ＬＢＡ(Logical  Block  Address)を用いるが、ＬＢＡに制限するものではなく、他の手法を用いても良い。また、本実施形態においては、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に内蔵されているコントローラが、ウェアレベリング（Wear  Leveling）機能を有しており、同じ論理ブロック（ＬＢＡ）に書き込みを行っても、物理的に異なるアドレスに書き込まれるよう制御が行われる。換言すれば、物理的に同一のアドレスに対して集中的に書き込みが行われるのを抑止している。
【００２４】
タイマー２０３は、現在の時刻を計測するための装置とする。本実施形態にかかるタイマー２０３は、サーバ１００の電源を停止した場合でも、現在時刻を保持している、又はサーバ１００の起動時に、外部（例えば、時刻サーバ）から現在時刻を取り込むことで、他の構成に対して正確な時刻を提供する仕組みを保持する。または、タイマー２０３が、常にホストＣＰＵ１０１から時刻の提供を受ける仕組みを保持してもよい。
【００２５】
記憶部２０５は、ライトバッファ２５１と、リードバッファ２５２とを備え、データの保存領域として機能する。ライトバッファ２５１は、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に書き込むデータを一時的に蓄積する。リードバッファ２５２は、第１のＳＳＤ１２１〜第４のＳＳＤ１２４から読み込んだデータを一時的に蓄積する。
【００２６】
第１のデバイスコントローラ２１１は、第１のＩ／Ｆ１１１を介して接続されている第１のＳＳＤ１２１と、記憶部２０５（ライトバッファ２５１及びリードバッファ２５２）との間のデータ転送制御を実行する。同様に、第２のデバイスコントローラ２１２〜第４のデバイスコントローラ２１４も、各々に接続されているＳＳＤと、記憶部２０５との間のデータ転送制御を行う。
【００２７】
一般的なディスクシステムにおいては、ホストＣＰＵ１０１からデータの書き込み要求、又は更新要求があった場合に、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に記録されたデータの更新を行い、それ以外の状況では、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に書き込まれたデータの更新を行わなかった。
【００２８】
一方、ディスクシステムに用いられる一般的な不揮発性の半導体記憶装置（フラッシュメモリ）は、低コスト化のため、フローティングゲートに記憶するデータの多値化（いわゆるＭＬＣ方式の採用）が進んでいる。しかしながら、フローティングゲートの電荷でデータを記憶しているため、長期的に書き換えが行われなかった場合にデータの信頼性が低下する可能性がある。特に書き換え回数の増加による酸化膜の劣化や、高温状態で放置されると、信頼性が低下する可能性が高まる。さらには、ＲＡＩＤ  ０では、一般的にデータの冗長化は行われないため、データの信頼性を向上させたいという要求もある。
【００２９】
そこで、本実施形態にかかるコントローラ１０２においては、データの信頼性を向上させるためにリフレッシュコントローラ２０４を備えることとした。リフレッシュコントローラ２０４は、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に書き込まれたデータを、定期的に更新することで、データの信頼性を向上させている。
【００３０】
つまり、第１のＳＳＤ１２１〜第４のＳＳＤ１２４に書き込まれたデータは、書き込まれた時点からの時間の経過と共に、書き込まれたデータの信頼性が低下していくが、本実施形態にかかるリフレッシュコントローラ２０４が、書き込まれてから一定期間が経過したデータを更新する制御を行う。本実施形態にかかるリフレッシュコントローラ２０４が、一定期間ごとにデータの更新を行うため、第１のＳＳＤ１２１〜第４のＳＳＤ１２４において、長期的に同じデータを保持している領域が無くなり、書き込まれたデータの信頼性が、所定の基準以下に低下するのを抑止できる。換言すれば、書き込まれたデータの信頼性が向上する。
【００３１】
リフレッシュコントローラ２０４は、判定部２６１と、制御部２６２と、を備え、ＬＢＡ（論理ブロック）単位で、一定期間が経過したデータを読み出した後、同一のＬＢＡに対して読み出したデータ（つまり、同一のＬＢＡに同一のデータ）を書き込む制御を行う。
【００３２】
上述したように、本実施形態にかかる第１のＳＳＤ１２１〜第４のＳＳＤ１２４は、各々の内部に、ＬＢＡ単位で書き込みが行われたか否かを管理する更新管理テーブル１５１〜１５４を備えている。
【００３３】
そして、判定部２６１は、タイマー２０３により計測された現在時刻と更新管理テーブル１５１〜１５４とに基づいて、ＬＢＡ単位で書き込みから一定時間が経過しているか否かを判定する。
【００３４】
図３は、本実施形態にかかる更新管理テーブル１５１〜１５４のテーブル構造の例を示した図である。図３に示す例では、更新管理テーブル１５１〜１５４が、第１のＳＳＤ１２１〜第４のＳＳＤ１２４のＬＢＡのアドレス‘０’〜‘１００００’までを管理しているが、説明を容易にするために示したものであり、ＳＳＤの態様に応じて異なるものとする。
【００３５】
また、本実施形態は、一年間書き込みが行われていないＬＢＡのデータについて更新を行う例とするが、データの更新期間はＳＳＤの性能など実施の態様に応じて適切な期間が設定されるものとする。
【００３６】
図３に示す更新管理テーブル１５１〜１５４では、初期状態では全て‘１’が書き込まれている。そして、データの書き込みが行われた場合に、データが書き込まれたＬＢＡに対応するフィールドを‘０’に書き換える（リセットする）。更新管理テーブル１５１〜１５４は、更新期間より短い期間（例えば３０日や１月）における、更新の有無を管理している。これら更新管理テーブルは、上述した更新期間より短い期間が経過する毎に作成される。また、更新管理テーブル１５１〜１５４は、一年間分のデータを格納可能なリングバッファとして作成しても良い。この場合、一年経過した更新管理テーブルに対して、初期化処理が行われる。
【００３７】
そして、判定部２６１は、タイマー２０３の現在時刻に基づいて、所定期間分（一年間分）の更新管理テーブル１５１〜１５４を参照することで、第１のＳＳＤ１２１〜第４のＳＳＤ１２４について、ＬＢＡ単位で所定期間にデータの書き込み（更新含む）が行われたか否かを判定できる。なお、本実施形態は、更新管理テーブル１５１〜１５４を用いて、所定期間データが書き込まれたか否かを判定する例について説明するが、本実施形態は、更新管理テーブル１５１〜１５４を用いた判定手法を制限するものではなく、所定期間データの書き込みが行われたか否かを判定できる手法であれば良い。
【００３８】
本実施形態では、ディスクシステム（ストレージ制御システム）の性能が低下するのを抑止するために、ホストＣＰＵ１０１からのデータの読み込み、書き込み命令がないときに、上述した処理を行うこととする。
【００３９】
制御部２６２は、判定部２６１により所定期間書き込みが行われていないと判定されたＬＢＡのデータを更新する制御を行う。本実施形態にかかる制御部２６２は、第１のＳＳＤ１２１〜第４のＳＳＤ１２４の記憶領域を分割するＬＢＡ単位の論理ブロックのうち、所定期間更新が行われていないＬＢＡの論理ブロックのデータを、記憶部２０５（リードバッファ２５２、ライトバッファ２５１）に移動した後、当該記憶部２０５（リードバッファ２５２、ライトバッファ２５１）から、第１のＳＳＤ１２１〜第４のＳＳＤ１２４の、同一のＬＢＡで示される論理ブロックに移動させる。
【００４０】
次に、本実施形態にかかるサーバ１００における、全体的な処理について説明する。図４は、本実施形態にかかるサーバ１００における上述した処理の手順を示すフローチャートである。
【００４１】
まず、ホストコントローラ２０１が、ホストＣＰＵ１０１から、アクセス要求があるか否かを判定する（ステップＳ４０１）。アクセス要求があったと判定した場合（ステップＳ４０１：Ｙｅｓ）、ホストコントローラ２０１は、書き込み要求であるか否かを判定する（ステップＳ４０２）。書き込み要求があったと判定した場合（ステップＳ４０２：Ｙｅｓ）、ＲＡＩＤコントローラ２０２が、第１のデバイスコントローラ２１１〜第４のデバイスコントローラ２１４を制御することで、ＬＢＡ単位でデータの書き込みを行う（ステップＳ４０３）。さらに、ＲＡＩＤコントローラ２０２が、第１のデバイスコントローラ２１１〜第４のデバイスコントローラ２１４を制御して、更新管理テーブル１５１〜１５４に対して、書き込みがなされたＬＢＡのフラグをリセットする（‘１’から‘０’に書き換える）（ステップＳ４０４）。
【００４２】
一方、読み込み要求があった（書き込み要求ではない）と判定した場合（ステップＳ４０２：Ｎｏ）、ＲＡＩＤコントローラ２０２が、第１のデバイスコントローラ２１１〜第４のデバイスコントローラ２１４を制御することで、ＬＢＡ単位でデータの読み込みを行う（ステップＳ４０５）。この場合、特に更新管理テーブル１５１〜１５４について処理を行わない。
【００４３】
また、ホストコントローラ２０１が、ステップＳ４０１でアクセス要求がないと判定した場合（ステップＳ４０１：Ｎｏ）、リフレッシュコントローラ２０４が、更新されるＬＢＡのフラグをチェック済みか否か判定する（ステップＳ４０６）。チェックとは、後述するステップＳ４０９の処理とする。
【００４４】
ホストコントローラ２０１が、チェック済みではないと判定した場合（ステップＳ４０６：Ｎｏ）、リフレッシュコントローラ２０４は、タイマー２０３をチェックし、前回のチェックから一定時間（例えば１０秒）経過したか否かを判定する（ステップＳ４０７）。一定時間経過していないと判定した場合（ステップＳ４０７：Ｎｏ）、処理を終了する。
【００４５】
一方、リフレッシュコントローラ２０４は、前回のチェックから一定時間経過したと判定した場合（ステップＳ４０７：Ｙｅｓ）、チェックの対象となるＬＢＡの範囲を特定する（ステップＳ４０８）。本実施形態では、一回に複数の（例えば１０個の）の論理ブロック（ＬＢＡ）について、一年間更新が行われたか否かをチェックする。なお、チェックするＬＢＡ（論理ブロック）の数は、チェックの頻度及びＳＳＤの記憶容量に応じて設定されるものとする。例えば、更新管理テーブル１５１〜１５４が３０日又は一ヶ月単位で作成される場合、一ヶ月間に第１のＳＳＤ１２１〜第４のＳＳＤ１２４の全ての論理ブロックについてチェックできるように設定すれば、第１のＳＳＤ１２１〜第２のＳＳＤ１２４の全ての論理ブロックについて一年間更新が行われなかったか否かを判定できる。
【００４６】
そして、判定部２６１が、特定された範囲について、更新管理テーブル１５１〜１５４に記憶されたＬＢＡ単位のフラグを参照して、一年間更新が行われないＬＢＡをチェックする（ステップＳ４０９）。
【００４７】
そして、制御部２６２が、一年間更新が行われていなかった（一年分の更新管理テーブル１５１〜１５４の全てでリセットが行われていなかった）ＬＢＡのデータを読み込んで、リードバッファ２５２に移動し、処理を終了する（ステップＳ４１０）。なお、データを移動させる際に、元のＬＢＡのデータは削除しなくても良い。
【００４８】
さらに、ステップＳ４０６において、判定部２６１が、ＬＢＡのチェック済みであると判定した場合（ステップＳ４０６：Ｙｅｓ）、制御部２６２が、ステップＳ４１０でリードバッファ２５２に移動されたデータを、ライトバッファ２５１に移動させる（ステップＳ４１１）。その後、制御部２６２が、ステップＳ４１１でライトバッファ２５１に移動されたデータを、当該データの移動元（移動させる前と同一の）のＬＢＡに書き込む（ステップＳ４１２）。
【００４９】
その後、制御部２６２は、第１のデバイスコントローラ２１１〜第４のデバイスコントローラ２１４を制御して、更新管理テーブル１５１〜１５４に対して、書き込みがなされたＬＢＡのフラグをリセットする（ステップＳ４１３）。
【００５０】
上述した処理手順により、一年間更新がされていなかったＬＢＡのデータの更新が実行される。また、ホストＣＰＵ１０１からアクセスがない期間に、データの更新を行うため、データの更新による性能の低下を抑止できる。
【００５１】
本実施形態では、サーバ１００の内部にディスクアレイ装置としてＳＳＤを４個接続した例について説明したが、４個に制限するものではなく、例えば８個など複数個接続されていれば良いものとする。また、ＳＳＤの接続形態も内部に接続することに制限するものではなく、外部に接続しても良い。
【００５２】
また、本実施形態では、第１のＳＳＤ１２１〜第２のＳＳＤ１２４に対してデータの読み書きする例について説明したが、読み書きの対象をデータに制限するものではなく、発行されたコマンドによって異なるものとする。
【００５３】
また、サーバ１００を起動させる際にはアクセスが多いため、起動してから一定期間について、データの更新を停止させる等の制御を行っても良い。
【００５４】
さらには、サーバ１００にアクセスが生じた場合に、データの更新を行わないよう制御するだけでなく、サーバ１００の性能が低下しないように、データ更新の処理の速度を低下させるなどの制御を行っても良い。
【００５５】
さらには、本実施形態は、ＲＡＩＤ  ０に制限するものではなく、例えば、ＲＡＩＤ  １に適用しても良い。ＲＡＩＤ  １に適用する場合に、ミラーリングされている複数台のＳＳＤについて、データの更新を交互に行う等の制御が考えられる。
【００５６】
さらには、ＲＡＩＤ  ５やＲＡＩＤ  ６に適用しても良い。ＲＡＩＤ  ５やＲＡＩＤ  ６に適用したディスクアレイ装置（ディスクシステム）では、データの更新の対象となるＳＳＤドライブ１つについて、当該ＳＳＤに対する書き込み処理の速度を低下させて、他のＳＳＤへの書き込みが先に終了するよう制御しても良い。
【００５７】
従来において、ディスクアレイ装置を具備するサーバやディスクシステムでは、データの書き換え要求に従って、ＳＳＤ等のドライブに記録されたデータを更新し、それ以外の状況ではドライブに書き込まれたデータを更新することは無かった。このため、ＳＳＤ（不揮発性の半導体記憶装置）を備えた際、半導体記憶装置自体にデータの更新機能を有していない場合に、データの信頼性が時間の経過と共に低下していた。また、半導体記憶装置自体にデータの更新機能を有している場合でも、サーバやディスクシステム側でデータの更新を行うよう制御した方が、さらなるデータの信頼性の向上を望むことができる。
【００５８】
そこで、本実施形態にかかるサーバ１００などのディスクシステムでは、不揮発性の半導体記憶装置において、データの書き換えが一定の期間ない場合には、不揮発性の半導体記憶装置に書き込まれたデータを更新することとした。これにより、不揮発性の半導体記憶装置（ＳＳＤ）内部で、長期的に同じデータを保持している記憶領域が無くなるため、記憶されているデータの信頼性を向上させることができる。
【００５９】
さらには、本実施形態においては、装置の性能が低下しないように、ホストＣＰＵ１０１等からのアクセスが行われている場合には、当該アクセスの処理が終了してから（当該アクセスの処理が行われない期間に限り）、データの書き換え処理を行うよう制御することとした。これにより、外部からのデータのアクセス要求が生じた場合に、サーバ１００の性能が低下することを抑止できる。
【００６０】
なお、本実施形態のサーバ１００は、ＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。また、本実施形態は、サーバに限定するものではなく、不揮発性の半導体装置を制御する装置であれば（例えばＲＡＩＤ機能を有していれば）良く、例えば、上述した構成を具備するＰＣであってもよい。
【００６１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６２】
１００…サーバ、１０１…ホストＣＰＵ、１０２…コントローラ、１１１…第１のＩ／Ｆ、１１２…第２のＩ／Ｆ、１１３…第３のＩ／Ｆ、１１４…第４のＩ／Ｆ、１２１…第１のＳＳＤ、１２２…第２のＳＳＤ、１２３…第３のＳＳＤ、１２４…第４のＳＳＤ、２０１…ホストコントローラ、２０２…ＲＡＩＤコントローラ、２０３…タイマー、２０４…リフレッシュコントローラ、２０５…記憶部、２１１…第１のデバイスコントローラ、２１２…第２のデバイスコントローラ、２１３…第３のデバイスコントローラ、２１４…第４のデバイスコントローラ、２５１…ライトバッファ、２５２…リードバッファ、２６１…判定部、２６２…制御部。
【図１】
2014178867.tif 000003
【図２】
2014178867.tif 000004
【図３】
2014178867.tif 000005
【図４】
2014178867.tif 000006
【手続補正書】
【提出日】平成26年4月21日(2014.4.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性の半導体記憶装置と接続を可能とするインターフェースと、
データの保存領域となる記憶部と、
前記インターフェースで接続された前記不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記不揮発性の半導体記憶装置のブロックに移動させ、第１の期間で前記半導体記憶装置の予め定められた記憶領域について前記予め定められた期間更新が行われていないか否かを判定できるように、前記予め定められた期間更新が行われていないか否かの判定を前記第１の期間より短い第２の期間毎に行うとともに、当該第１の期間、当該第２の期間、及び前記予め定められた記憶領域のサイズに基づいて設定されたブロック数単位で判定を行う制御部と、
を備えるストレージ制御装置。
【請求項２】
前記制御部は、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記記憶部に移動させる前と同一のブロックに移動させる、
請求項１に記載のストレージ制御装置。
【請求項３】
前記不揮発性の半導体記憶装置は、ブロック毎に更新されたか否かを示すフラグを記憶し、
前記制御部は、前記不揮発性の半導体記憶装置に記憶された前記フラグを参照し、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記不揮発性の半導体記憶装置のブロックに移動させる、
請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記インターフェースは、前記不揮発性の半導体記憶装置の複数と接続を可能とし、
前記制御部は、ＲＡＩＤ  ０（Redundant  Arrays  of  Inexpensive  Disks  0）を用いて、前記複数の前記不揮発性の半導体記憶装置を制御する、
請求項１乃至３のいずれか１つに記載のストレージ制御装置。
【請求項５】
前記インターフェースで接続される前記不揮発性の半導体記憶装置は、ＮＡＮＤ型フラッシュメモリであるＳＳＤ（Solid  State  Drive）である、
請求項１乃至４のいずれか１つに記載のストレージ制御装置。
【請求項６】
複数の不揮発性の半導体記憶装置と、当該半導体記憶装置を制御するストレージ制御装置と、で構成されるストレージ制御システムにおいて、
ストレージ制御装置は、
前記半導体記憶装置と接続を可能とするインターフェースと、
データの保存領域となる記憶部と、
前記インターフェースで接続された前記不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、前記記憶部に移動した後、当該記憶部から、前記不揮発性の半導体記憶装置のブロックに移動させ、第１の期間で前記半導体記憶装置の予め定められた記憶領域について前記予め定められた期間更新が行われていないか否かを判定できるように、前記予め定められた期間更新が行われていないか否かの判定を前記第１の期間より短い第２の期間毎に行うとともに、当該第１の期間、当該第２の期間、及び前記予め定められた記憶領域のサイズに基づいて設定されたブロック数単位で判定を行う制御部と、を備える
ストレージ制御システム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
実施形態のストレージ制御装置は、インターフェースと、記憶部と、制御部と、を備える。インターフェースは、不揮発性の半導体記憶装置と接続を可能とする。記憶部は、データの一時的な保存領域となる。制御部は、インターフェースで接続された不揮発性の半導体記憶装置の記憶領域を分割するブロックのうち、予め定められた期間更新が行われていないブロックのデータを、記憶部に移動した後、当該記憶部から、不揮発性の半導体記憶装置のブロックに移動させ、第１の期間で半導体記憶装置の予め定められた記憶領域について予め定められた期間更新が行われていないか否かを判定できるように、予め定められた期間更新が行われていないか否かの判定を第１の期間より短い第２の期間毎に行うとともに、当該第１の期間、当該第２の期間、及び予め定められた記憶領域のサイズに基づいて設定されたブロック数単位で判定を行う。