(57)【要約】【課題】不要なTrimコマンドの処理に起因するオーバーヘッドをなくすこと。【解決手段】取得部５１ａが第１制御部４０から判別情報及び管理情報を取得して、それぞれ判別情報記憶部５１ｂ及び管理情報記憶部５１ｃに格納する。そして、消去領域特定部５１ｄが判別情報記憶部５１ｂ及び管理情報記憶部５１ｃがそれぞれ記憶する判別情報及び管理情報に基づいて、消去領域を特定し、消去指示部５１eが消去領域についてTrimコマンドを発行する。そして、消去実行部４４がデータの消去を行う。【選択図】図２
2015014963.tif 000002
【特許請求の範囲】
【請求項１】
不要なデータを記憶する領域に対し、次回の書き込みに備えてあらかじめデータの物理的な消去が行なわれる第１の記憶装置を含む複数の記憶装置により構築された記憶ボリュームに対する上位装置からのコマンドを受けて、前記記憶装置を制御するストレージ制御装置において、
前記第１の記憶装置において前記不要なデータを記憶する領域を消去領域として特定する特定部と、
前記特定部により特定された消去領域のデータの消去を前記第１の記憶装置に指示する指示部と
を有することを特徴とするストレージ制御装置。
【請求項２】
前記特定部又は前記指示部による処理中に、前記第１の記憶装置へのデータの読み書きを指示する上位装置からのデータの書き込み指示を記憶する指示記憶部と、
前記特定部及び前記指示部による処理の終了後に前記指示記憶部に記憶された書き込み指示を実行する書込部と
をさらに有することを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記上位装置からデータの読み出し要求を受信すると、前記指示記憶部に記憶された書き込み指示により書き込まれるデータの読み出し要求であるか否かを判定し、前記指示記憶部に記憶された書き込み要求により書き込まれるデータの読み出し要求である場合に、該書き込まれるデータを前記上位装置に送信する読出部
をさらに有することを特徴とする請求項２に記載のストレージ制御装置。
【請求項４】
前記第１の記憶装置へ書き込まれたデータの量を測定する測定部をさらに有し、
前記測定部により測定されたデータの量が所定の閾値を越えると前記特定部に処理の開始を指示する開始指示部と
をさらに有することを特徴とする請求項１、２又は３に記載のストレージ制御装置。
【請求項５】
前記特定部は、前記記憶装置へのデータの読み書きを指示する上位装置で動作するファイルシステムに基づいて前記消去領域を特定することを特徴とする請求項１〜４のいずれか一つに記載のストレージ制御装置。
【請求項６】
不要なデータを記憶する領域に対し、次回の書き込みに備えてあらかじめデータの物理的な消去が行なわれる第１の記憶装置を含む複数の記憶装置により構築された記憶ボリュームに対する上位装置からのコマンドを受けて、前記記憶装置を制御するストレージ制御装置に組み込まれたコンピュータで実行される制御プログラムにおいて、
前記第１の記憶装置において前記不要なデータを記憶する領域を消去領域として特定し、
特定した消去領域のデータの消去を前記第１の記憶装置に指示する
処理を前記コンピュータに実行させることを特徴とする制御プログラム。
【請求項７】
不要なデータを記憶する領域に対し、次回の書き込みに備えてあらかじめデータの物理的な消去が行なわれる第１の記憶装置を含む複数の記憶装置により構築された記憶ボリュームに対する上位装置からのコマンドを受けて、前記記憶装置を制御するストレージ制御装置の制御方法において、
前記第１の記憶装置で不要なデータを記憶する領域を消去領域として特定し、
特定した消去領域のデータの消去を前記第１の記憶装置に指示する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、制御プログラム及び制御方法に関する。
【背景技術】
【０００２】
近年、フラッシュメモリの容量拡大にともない、ＳＳＤ（Solid  State  Drive）がストレージ装置に用いられるようになっている。しかしながら、ＳＳＤには、使用を続けていくと書き込み性能が低下していく構造的な欠点が存在する。その理由は、データの書き換えが必要な場合に書き込み処理の工程が複雑になって時間がかかるためである。
【０００３】
ＳＳＤ内に使用済みの領域が増えるとデータの書き換えが増えるため、書き込み性能が低下していく。ここで、使用済みの領域とは、ファイルシステムの管理上は非使用領域だが、物理的には古いデータが残っている領域である。この欠点を補うために、Trimコマンド（消去コマンド）が存在する。Trimコマンドは、ホスト(オペレーションシステムＯＳ)がＳＳＤに非使用領域を通知し、次回の書き込みに備えてあらかじめデータの物理的な消去を促すコマンドである。データ消去済みの領域への書き込みは１工程で行えるため、Trimコマンドを用いることによって書き込み性能は向上する。したがって、ファイルの削除時にTrimコマンドを併せて発行しておくことが一般的である。
【０００４】
また、ソリッドステート記憶デバイスにTrimコマンドを発行するためのインタフェースを提供する従来技術がある（例えば、特許文献１参照。）。また、ＳＳＤとＨＤＤ（Hard  Disk  Drive）をストレージシステムの記憶媒体として用いる従来技術がある（例えば、特許文献２参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１３−５０４１４２号公報
【特許文献２】特表２０１１−５１５７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ＳＳＤとＨＤＤの両方を記憶媒体として用いると不要なTrimコマンドが発行され、処理のオーバーヘッドが発生するという問題がある。図１５は、ホストから発行される不要なTrimコマンドを説明するための図である。
【０００７】
図１５に示すように、ストレージ装置９２は、ＣＭ（Controller  Module）９３と、ＳＳＤ９４ａと、ＨＤＤ９４ｂとを有する。ＣＭ９３は、ホスト９１からコマンドを受信し、受信したコマンドに基づいてストレージ装置９２を制御する。ＳＳＤ９４ａ及びＨＤＤ９４ｂは、データを記憶する記憶媒体である。
【０００８】
また、ストレージ装置９２は、データの保存先をデータの使用頻度に基づいてＳＳＤ９４ａ又はＨＤＤ９４ｂに割り当てる自動階層機能を有する。したがって、ストレージ装置９２は、ホスト９１からは１つのボリュームに見えるので、ホスト９１に対しては論理ボリューム９４をＳＳＤとして見せる。このため、ホスト９１は、使用済みの領域に対してTrimコマンドを発行すると、ＨＤＤ９４ｂに対してTrimコマンドを発行する場合があり、不要なTrimコマンド発行することになる。
【０００９】
本発明は、１つの側面では、不要なTrimコマンドの処理に起因するオーバーヘッドをなくすことを目的とする。
【課題を解決するための手段】
【００１０】
本願の開示するストレージ制御装置は、１つの態様において、不要なデータを記憶する領域に対し、次回の書き込みに備えてあらかじめデータの物理的な消去が行なわれる第１の記憶装置を含む複数の記憶装置により構築された記憶ボリュームに対する上位装置からのコマンドを受けて、前記記憶装置を制御するストレージ制御装置である。ストレージ制御装置は、前記第１の記憶装置で不要なデータを記憶する領域を消去領域として特定する特定部と、前記特定部により特定された消去領域のデータの消去を前記第１の記憶装置に指示する指示部とを有する。
【発明の効果】
【００１１】
１実施態様によれば、不要なTrimコマンドの処理に起因するオーバーヘッドをなくすことができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るストレージ装置の構成を示す図である。
【図２】図２は、実施例１に係るＣＭの機能構成を示す図である。
【図３】図３は、ファイルの管理情報を記憶する管理情報領域を示す図である。
【図４Ａ】図４Ａは、スーパーブロックに格納される情報の一例を示す図である。
【図４Ｂ】図４Ｂは、空き領域管理領域に格納される情報の一例を示す図である。
【図４Ｃ】図４Ｃは、ｉノードに格納される情報の一例を示す図である。
【図４Ｄ】図４Ｄは、ディレクトリデータ領域に格納される情報の一例を示す図である。
【図５】図５は、判別情報の一例を示す図である。
【図６】図６は、性能改善処理のシーケンスを示す図である。
【図７】図７は、第２制御部による性能改善処理のフローを示すフローチャートである。
【図８】図８は、性能改善処理によるデータ破壊を説明するための図である。
【図９】図９は、実施例２に係るストレージ装置の構成を示す図である。
【図１０】図１０は、実施例２に係るＣＭの機能構成を示す図である。
【図１１】図１１は、改善処理中に書き込み要求があった場合の処理シーケンスを示す図である。
【図１２】図１２は、改善処理中に読み出し要求があった場合の第１の処理シーケンスを示す図である。
【図１３】図１３は、改善処理中に読み出し要求があった場合の第２の処理シーケンスを示す図である。
【図１４】図１４は、コマンドプール使用モードでホストからコマンドを受信したときの第１制御部の処理のフローを示すフローチャートである。
【図１５】図１５は、ホストから発行される不要なTrimコマンドを説明するための図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するストレージ制御装置、制御プログラム及び制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例１】
【００１４】
まず、実施例１に係るストレージ装置の構成について説明する。図１は、実施例１に係るストレージ装置の構成を示す図である。図１に示すように、ストレージ装置１は、ＣＭ１０と、ＳＳＤ２０と、ＨＤＤ３０とを有する。
【００１５】
ＣＭ１０は、ホスト２からの指示に基づいてストレージ装置１を制御する。ＳＳＤ２０は、フラッシュメモリを記憶媒体として用いる記憶装置である。ＨＤＤ３０は、磁気ディスクを記憶媒体として用いる記憶装置である。
【００１６】
ＣＭ１０は、ＣＰＵ１１と、ＣＰＵ１２と、ＲＡＭ（Random  Access  Memory）１３と、フラッシュメモリ１４とを有する。ＣＰＵ１１及びＣＰＵ１２は、フラッシュメモリ１４からプログラムを読み出して実行する中央処理装置である。ＲＡＭ１３は、ＳＳＤ２０やＨＤＤ３０が記憶するデータ、ＣＰＵ１１やＣＰＵ１２が処理に用いるデータなどを記憶するメモリである。フラッシュメモリ１４は、ＣＰＵ１１及びＣＰＵ１２で実行されるプログラムを記憶するメモリである。
【００１７】
ＣＰＵ１１では、ストレージ装置１の制御に用いられる第１ＯＳ（Operating  System）１１ａが実行される。ＣＰＵ１２では、ホスト２が使用するファイルシステムを有する第２ＯＳ１２ａが実行される。第２ＯＳ１２ａは、ホスト２が使用するファイルシステムを用いてＳＳＤ２０をマウントする。第２ＯＳ１２ａがホスト２が使用するファイルシステムを用いてＳＳＤ２０をマウントすることで、第２ＯＳ１２ａで実行されるプログラムは、ホスト２が使用するファイルシステムが管理する管理情報を参照して解釈することができる。
【００１８】
第２ＯＳ１２ａで実行されるプログラムとして性能改善プログラム１００がある。性能改善プログラム１００は、ＳＳＤ２０の使用済みの領域を特定し、使用済み領域のデータを消去するために第１ＯＳ１１ａを経由してＳＳＤ２０にTrimコマンドを発行する。性能改善プログラム１００は、第１ＯＳ１１ａの指示に基づいて起動される。
【００１９】
次に、実施例１に係るＣＭ１０の機能構成について説明する。図２は、実施例１に係るＣＭ１０の機能構成を示す図である。図２に示すように、ＣＭ１０は、第１制御部４０と、第２制御部５０とを有する。第１制御部４０は、ストレージ装置１を制御する。第１制御部４０の機能は、第１ＯＳ１１ａ及び第１ＯＳ１１ａで制御されるプログラムがＣＰＵ１１で実行されることにより実現される。
【００２０】
第１制御部４０は、計数部４１と、性能改善指示部４２と、情報送信部４３と、消去実行部４４と、通信部４５とを有する。計数部４１は、ＳＳＤ２０にデータが書き込まれたセクタ数の合計をカウントする。ここで、１セクタは５１２バイト（Ｂ）である。
【００２１】
性能改善指示部４２は、計数部４１によりカウントされたセクタ数がＳＳＤ２０の容量の９０％を超えたか否かを判定し、超えた場合には、第２制御部５０に性能改善処理の開始を指示する。ここで、性能改善処理とは、ＳＳＤ２０の使用済みの領域に対してTrimコマンドを発行することにより、ＳＳＤ２０の書き込み性能を改善する処理である。
【００２２】
情報送信部４３は、第２制御部５０からの要求に基づいて、ディスク装置に記憶されたファイルの管理情報、及び、ディスク装置のある領域がＳＳＤ２０に属する領域であるかＨＤＤ３０に属する領域であるかを判別する判別情報を第２制御部５０に送信する。ここで、ディスク装置とは、ＳＳＤ２０とＨＤＤ３０を合わせた記憶装置である。
【００２３】
図３は、ファイルの管理情報を記憶する管理情報領域を示す図である。図３に示すように、管理情報領域は、ディスク装置全体の記憶領域の先頭の領域を占め、残りの領域は、ユーザーのデータを記憶するユーザーデータ領域である。管理情報領域は、スーパーブロックと、空き領域管理領域と、ｉノード領域と、ディレクトリデータ領域とを含む。
【００２４】
図４Ａは、スーパーブロックに格納される情報の一例を示す図である。図４Ａに示すように、スーパーブロックに格納される情報には、管理情報領域サイズと、ブロックサイズと、使用中のユーザーデータブロック数と、最大ファイル数と、使用中ファイル数と、空き領域管理領域位置と、空き領域管理領域サイズが含まれる。また、スーパーブロックに格納される情報には、ｉノード領域位置と、ｉノード領域サイズと、ディレクトリデータ領域位置と、ディレクトリデータ領域サイズと、ユーザーデータ領域位置と、ユーザーデータ領域サイズとが含まれる。
【００２５】
管理情報領域サイズは、管理情報領域の大きさを示し、ブロックサイズは、ファイルシステムにおける領域の管理単位であるブロックの大きさを示す。ここでは、ブロックサイズは、４キロバイト（ＫＢ）である。使用中のユーザーデータブロック数は、ユーザーデータの記憶領域として使用されているブロックの数である。最大ファイル数は、ファイルシステムが記憶できるファイルの最大数を示し、使用中ファイル数は、ファイルシステムが記憶するファイルの数である。
【００２６】
空き領域管理領域位置は、空き領域を管理する領域である空き領域管理領域の開始位置をブロック番号で示し、空き領域管理領域サイズは、空き領域管理領域の大きさをブロック数で示す。ｉノード領域位置は、ｉノード情報を記憶する領域であるｉノード領域の開始位置をブロック番号で示し、ｉノード領域サイズは、ｉノード領域の大きさをブロック数で示す。
【００２７】
ディレクトリデータ領域位置は、ディレクトリデータを記憶する領域であるディレクトリデータ領域の開始位置をブロック番号で示し、ディレクトリデータ領域サイズは、ディレクトリデータ領域の大きさをブロック数で示す。ユーザーデータ領域位置は、ユーザーデータを記憶するユーザーデータ領域の開始位置をブロック番号で示し、ユーザーデータ領域サイズは、ユーザーデータ領域の大きさをブロック数で示す。
【００２８】
図４Ｂは、空き領域管理領域に格納される情報の一例を示す図である。図４Ｂに示すように、空き領域管理領域に格納される情報には、空き領域の位置と空き領域のサイズとが空き領域の個数分含まれる。空き領域の位置は、空き領域の開始位置をブロック番号で示し、空き領域のサイズは、空き領域の大きさをブロック数で示す。なお、使用済み領域は、空き領域として管理される。
【００２９】
図４Ｃは、ｉノード領域がファイル毎に記憶するｉノードに格納される情報の一例を示す図である。図４Ｃに示すように、ｉノード領域がファイル毎に記憶するｉノードに格納される情報には、ファイル種別と、アクセス権と、所有者と、更新時刻と、リンク数と、ブロック数と、ファイルデータ位置とが含まれる。
【００３０】
ファイル種別は、ファイルの種類を示す。アクセス権は、ファイルへのアクセス権に関する情報を示す。所有者は、ファイルの所有者を示す。更新時刻は、ファイルが最後に更新された日時を示す。リンク数は、ｉノード情報を参照するファイルの数である。ブロック数は、ファイルのサイズをブロック数で示す。ファイルデータ位置は、ファイルデータの開始位置をブロック番号で示す。
【００３１】
図４Ｄは、ディレクトリデータ領域に格納される情報の一例を示す図である。図４Ｄに示すように、ディレクトリデータ領域に格納される情報は、ファイル名とファイルの情報を記憶するｉノード番号とを対応付けたディレクトリデータをディレクトリの個数分記憶する。
【００３２】
図５は、判別情報の一例を示す図である。図５に示すように、判別情報には、開始セクタ番号とセクタ数とがＳＳＤ２０内の領域の個数分含まれる。開始セクタ番号は、ＳＳＤ２０内の各領域の開始位置をセクタ番号で示し、セクタ数は領域の大きさをセクタの数で示す。
【００３３】
図２に戻って、消去実行部４４は、第２制御部５０が発行するTrimコマンドに基づいて、ＳＳＤ２０の使用済み領域のデータを消去する。消去実行部４４は、セクタ番号を指定して使用済み領域のデータを消去する。通信部４５は、第２制御部５０との間で通信を行う。
【００３４】
第２制御部５０は、ホスト２と同じファイルシステムをサポートし、図３、図４Ａ及び図４Ｂに示した管理情報を解釈することができる。第２制御部５０の機能は、第２ＯＳ１２ａ及び第２ＯＳ１２ａで制御されるプログラムがＣＰＵ１２で実行されることにより実現される。
【００３５】
第２制御部５０は、性能改善部５１と通信部５２とを有する。性能改善部５１は、性能改善処理を実行する。性能改善部５１は、取得部５１ａと、判別情報記憶部５１ｂと、管理情報記憶部５１ｃと、消去領域特定部５１ｄと、消去指示部５１ｅとを有する。なお、性能改善部５１の機能は、性能改善プログラム１００が第２ＯＳ１２ａの制御の下に実行されることにより実現される。
【００３６】
取得部５１ａは、情報送信部４３が送信する管理情報及び判別情報を受信し、管理情報を管理情報記憶部５１ｃに格納し、判別情報を判別情報記憶部５１ｂに格納する。判別情報記憶部５１ｂは、判別情報を記憶し、管理情報記憶部５１ｃは、管理情報を記憶する。
【００３７】
消去領域特定部５１ｄは、判別情報記憶部５１ｂが記憶する判別情報及び管理情報記憶部５１ｃが記憶する管理情報に基づいて、ＳＳＤ２０の消去領域を特定する。具体的には、消去領域特定部５１ｄは、判別情報に含まれるセクタ毎に、セクタの位置情報をブロックの位置情報に換算して各セクタが空き領域に含まれるか否かを判定し、空き領域に含まれるセクタを消去領域として特定する。消去領域特定部５１ｄが、判別情報及び管理情報に基づいて、ＳＳＤ２０の消去領域を特定することによって、性能改善部５１は書き込み処理の性能を改善することができる。
【００３８】
消去指示部５１ｅは、消去領域特定部５１ｄにより特定された消去領域のデータを消去するように、第１制御部４０に指示する。具体的には、消去指示部５１ｅは、消去領域特定部５１ｄにより特定されたセクタに対してTrimコマンドを発行する。
【００３９】
通信部５２は、第１制御部４０と通信を行う。なお、通信部４５と通信部５２との間の通信は、ＣＰＵ１１とＣＰＵ１２との間のＣＰＵ間通信として実現される。
【００４０】
次に、性能改善処理のシーケンスについて説明する。図６は、性能改善処理のシーケンスを示す図である。図６に示すように、第１制御部４０は、ＳＳＤ２０のセクタのうちデータが書き込まれたセクタの割合が９０％を超えると、性能改善処理の開始を第２制御部５０へ指示する（ステップＳ１）。
【００４１】
すると、第２制御部５０は、判別情報の送信を第１制御部４０に対して要求する（ステップＳ２）。すると、第１制御部４０は、判別情報を第２制御部５０に送信する（ステップＳ３）。すると、第２制御部５０は、判別情報を受信して判別情報記憶部５１ｂに格納する（ステップＳ４）。
【００４２】
そして、第２制御部５０は、管理情報の送信を第１制御部４０に対して要求する（ステップＳ５）。すると、第１制御部４０は、管理情報の読み出しをディスク装置に要求し（ステップＳ６）、ディスク装置は、管理情報を読み出して（ステップＳ７）、第１制御部４０に渡す。すると、第１制御部４０は、管理情報を第２制御部５０に送信する（ステップＳ８）。すると、第２制御部５０は、管理情報を受信して管理情報記憶部５１ｃに格納する（ステップＳ９）。
【００４３】
そして、第２制御部５０は、判別情報及び管理情報に基づいて消去領域を特定し（ステップＳ１０）、特定した消去領域についてTrimコマンドを発行する（ステップＳ１１）。すると、第１制御部４０は、Trimコマンドを受信して、ディスク装置に送信する（ステップＳ１２）。すると、ディスク装置は、Trimコマンドで指定されたセクタのデータの消去を実行する（ステップＳ１３）。なお、ステップＳ１１〜ステップ１３の処理は、消去領域に含まれるセクタの数だけ繰り返される。
【００４４】
このように、第２制御部５０が、消去領域を特定し、消去領域のデータの消去を第１制御部４０に指示することによって、第２制御部５０は、ＳＳＤ２０の書き込み処理の性能を向上することができる。
【００４５】
次に、第２制御部５０による性能改善処理のフローについて説明する。図７は、第２制御部５０による性能改善処理のフローを示すフローチャートである。図７に示すように、第２制御部５０は、第１制御部４０から性能改善処理の開始指示を受信する（ステップＳ２１）。
【００４６】
すると、性能改善部５１は、判別情報及び管理情報を第１制御部４０から取得する（ステップＳ２２）。そして、性能改善部５１は、判別情報からＳＳＤ２０の１つの領域の情報を取り出し（ステップＳ２３）、取り出した領域が空き領域か否かを管理情報を用いて判定する（ステップＳ２４）。
【００４７】
その結果、空き領域である場合には、性能改善部５１は、空き領域についてTrimコマンドを発行する（ステップＳ２５）。そして、性能改善部５１は、未処理の領域があるか否かを判定し（ステップＳ２６）、未処理の領域がある場合には、判別情報から次の領域の情報を取り出し（ステップＳ２７）、ステップＳ２４に戻る。
【００４８】
一方、未処理の領域がない場合には、性能改善部５１は、性能改善処理を停止し（ステップＳ２８）、第２制御部５０は、性能改善処理の停止を第１制御部４０に通知する（ステップＳ２９）。
【００４９】
このように、性能改善部５１が、ＳＳＤ２０の空き領域についてTrimコマンドを発行することにより、ＳＳＤ２０への書き込み性能を改善することができる。
【００５０】
上述してきたように、実施例１では、取得部５１ａが第１制御部４０から判別情報及び管理情報を取得して、それぞれ判別情報記憶部５１ｂ及び管理情報記憶部５１ｃに格納する。そして、消去領域特定部５１ｄが判別情報記憶部５１ｂ及び管理情報記憶部５１ｃがそれぞれ記憶する判別情報及び管理情報に基づいて、消去領域を特定し、消去指示部５１eが消去領域についてTrimコマンドを発行する。したがって、ホストに代わって、ストレージ装置の内部構成を把握しているＣＭ１０が、ＳＳＤ２０だけにTrimコマンドを発行することができ、ＨＤＤ３０への不要なTrimコマンドの処理に起因するオーバーヘッドをなくすことができる。また、ホストは、Trimコマンドを発行する必要がない。
【００５１】
また、実施例１では、計数部４１がＳＳＤ２０にデータが書き込まれたセクタ数の合計をカウントし、計数部４１によりカウントされたセクタ数がＳＳＤ２０の容量の９０％を超えた場合に、性能改善指示部４２が第２制御部５０に性能改善処理の開始を指示する。したがって、ＣＭ１０は、ＳＳＤ２０への書き込み性能の劣化が発生する前に、性能改善処理を実行することができる。
【００５２】
また、実施例１では、第２ＯＳ１２ａがホスト２が使用するファイルシステムを用いてＳＳＤ２０をマウントするので、性能改善部５１は、ホスト２が使用するファイルシステムが管理する管理情報を参照して解釈することができる。
【実施例２】
【００５３】
ところで、上記実施例１では、性能改善処理を実行するタイミングによっては、性能改善処理がＳＳＤ２０のデータを破壊することがある。図８は、性能改善処理によるデータ破壊を説明するための図である。図８に示すように、データの書き込み要求が発生すると、ホスト２は、ディスク装置が記憶する管理情報を第１制御部４０経由で参照する（１）。一方、第２制御部５０は、性能改善処理を実行し、ディスク装置が記憶する管理情報を第１制御部４０経由で取得する（２）。
【００５４】
そして、ホスト２は、管理情報に基づいて、非使用領域に書き込みを実行する（３）。すると、書き込みが行われたデータ領域には、新しいデータが書き込まれ、データが書き込まれた領域の管理情報は使用中に更新される。一方、第２制御部５０は、更新前の管理情報に基づいて、新しいデータが書き込まれたデータ領域が非使用であると判断し、そのデータ領域についてTrimコマンドを発行する（４）。その結果、新しいデータが書き込まれたデータ領域が消去され、データが破壊される。
【００５５】
このように、ストレージ装置の稼働中に性能改善処理を実行すると、性能改善処理を実行するタイミングによっては、性能改善処理がＳＳＤ２０のデータを破壊することがあるため、データの破壊が発生しないような対策が必要となる。そこで、実施例２では、性能改善処理によるＳＳＤ２０のデータの破壊を防ぐストレージ装置について説明する。
【００５６】
図９は、実施例２に係るストレージ装置の構成を示す図である。なお、ここでは説明の便宜上、図１に示した各部と同一の部分については同一符号を付すこととしてその詳細な説明を省略する。図９に示すように、実施例２に係るストレージ装置３は、ＣＭ６０を有する。ＣＭ６０は、ホスト２からの指示に基づいてストレージ装置３を制御する。
【００５７】
ＣＭ６０は、データを記憶するＲＡＭ６３を有し、ＲＡＭ６３は、コマンドプール７１を有する。コマンドプール７１は、性能改善処理中のＳＳＤ２０への書き込み要求について、管理情報及び書き込みデータを一時的に記憶する。なお、性能改善処理中であっても、ＨＤＤ３０への書き込み要求は実行される。コマンドプール７１が記憶する書き込みデータは、性能改善処理の終了後ＳＳＤ２０に書き込まれる。
【００５８】
このように、ＣＭ６０は、性能改善処理中のＳＳＤ２０への書き込み要求について、コマンドプール７１に管理情報及び書き込みデータを一時的に保存し、性能改善処理の終了後にＳＳＤ２０への書き込み処理を実行する。したがって、ＣＭ６０は、性能改善処理によるＳＳＤ２０のデータの破壊を防ぐことができる。
【００５９】
図１０は、実施例２に係るＣＭ６０の機能構成を示す図である。なお、ここでは説明の便宜上、図２に示した各部と同一の部分については同一符号を付すこととしてその詳細な説明を省略する。図１０に示すように、ＣＭ６０は、第１制御部７０と、第２制御部５０とを有する。
【００６０】
第１制御部７０は、コマンドプール７１と、書込部７２と、読出部７３とを有する。書込部７２は、ホスト２からの要求に基づいてディスク装置へのデータの書き込みを行う。ただし、書込部７２は、性能改善処理中のＳＳＤ２０への書き込み要求については、ディスク装置へのデータの書き込みを行うことなく、コマンドプール７１に管理情報及び書き込みデータを一時的に保存する。そして、書込部７２は、性能改善処理が終了すると、コマンドプール７１から管理情報及び書き込みデータを取り出してＳＳＤ２０にデータを書き込む。
【００６１】
読出部７３は、ホスト２からの要求に基づいてディスク装置からデータの読み出しを行う。ただし、読出部７３は、性能改善処理中のＳＳＤ２０からのデータの読み出しについては、まずコマンドプール７１にデータがあるか否かを判定する。その結果、コマンドプール７１にデータがある場合には、読出部７３は、コマンドプール７１にあるデータをホスト２に応答し、コマンドプール７１にデータがない場合には、ＳＳＤ２０からデータを読み出してホスト２に応答する。
【００６２】
次に、改善処理中に書き込み要求があった場合の処理シーケンスについて説明する。図１１は、改善処理中に書き込み要求があった場合の処理シーケンスを示す図である。図１１に示すように、第１制御部７０は、ＳＳＤ２０のセクタのうちデータが書込まれたセクタの割合が９０％超えると、コマンドプール７１の使用モードに移行し（ステップＳ３１）、性能改善処理の開始を第２制御部５０に指示する（ステップＳ３２）。
【００６３】
その後、第２制御部５０が管理情報を取得する前に、ホスト２に書き込み要求が発生し、ホスト２が管理情報の取得を要求すると（ステップＳ３３）、ディスク装置が、管理情報を読み出し（ステップＳ３４）、第１制御部７０経由でホスト２に送信する。
【００６４】
そして、第２制御部５０が管理情報の取得を要求すると（ステップＳ３５）、ディスク装置が、管理情報を読み出し（ステップＳ３６）、第１制御部７０経由で第２制御部５０に送信する。
【００６５】
そして、ホスト２が、取得した管理情報に基づいてデータの書き込みを実行すると（ステップＳ３７）、第１制御部７０は、コマンドプール使用モードであるため、ＳＳＤ２０へのデータの書き込みであるときは、管理情報及び書き込みデータをコマンドプール７１に保存する（ステップＳ３８）。
【００６６】
一方、第２制御部５０は、取得した管理情報に基づいて消去領域を特定し、特定した消去領域についてTrimコマンドを第１制御部７０経由でディスク装置に発行する（ステップＳ３９）。そして、ディスク装置が消去を実行する（ステップＳ４０）。
【００６７】
その後、第２制御部５０は、性能改善処理を終了すると、性能改善処理の終了を第１制御部７０に通知する（ステップＳ４１）。すると、第１制御部７０は、コマンドプール７１にあるデータをＳＳＤ２０に書き込み（ステップＳ４２）、ディスク装置がデータの書き込みを実行する（ステップＳ４３）。
【００６８】
このように、第１制御部７０は、改善処理中のＳＳＤ２０への書き込み要求について、コマンドプール７１に管理情報及び書き込みデータを保存し、性能改善処理終了後にコマンドプール７１のデータをＳＳＤ２０に書き込む。したがって、ＣＭ６０は、性能改善処理によるＳＳＤ２０のデータ破壊を防ぐことができる。
【００６９】
次に、改善処理中に読み出し要求があった場合の処理シーケンスについて説明する。図１２及び図１３は、改善処理中に読み出し要求があった場合の処理シーケンスを示す図である。図１２は、読み出すデータがコマンドプール７１にない場合のシーケンスを示し、図１３は、読み出すデータがコマンドプール７１にある場合のシーケンスを示す。
【００７０】
図１２に示すように、第１制御部７０は、ＳＳＤ２０のセクタのうちデータが書き込まれたセクタの割合が９０％を超えると、コマンドプール７１の使用モードに移行し（ステップＳ５１）、性能改善処理の開始を第２制御部５０に指示する（ステップＳ５２）。
【００７１】
その後、ホスト２に読み出し要求が発生し、ホスト２が管理情報の取得を要求すると（ステップＳ５３）、第１制御部７０は、コマンドプール７１をチェックする（ステップＳ５４）。すなわち、第１制御部７０は、コマンドプール７１内の管理情報に基づいて、読み出すデータがコマンドプール７１内にあるか否かを判定する。ここでは、コマンドプール７１内には対象データがない場合であるので、ディスク装置が、管理情報を読み出し（ステップＳ５５）、第１制御部７０経由でホスト２に送信する。
【００７２】
そして、ホスト２は、管理情報に基づいて第１制御部７０経由でデータの読み出しを実行し（ステップＳ５６）、ディスク装置が、データを読み出し（ステップＳ５７）、第１制御部７０経由でホスト２にデータを送信する。その後、第２制御部５０は、性能改善処理を終了すると、性能改善処理の終了を第１制御部７０に通知する（ステップＳ５８）。
【００７３】
また、図１３に示すように、第１制御部７０は、ＳＳＤ２０のセクタのうちデータが書き込まれたセクタの割合が９０％を超えると、コマンドプール７１の使用モードに移行し（ステップＳ６１）、性能改善処理の開始を第２制御部５０に指示する（ステップＳ６２）。
【００７４】
その後、ホスト２に書き込み要求が発生し、ホスト２が管理情報の取得を要求すると（ステップＳ６３）、ディスク装置が、管理情報を読み出し（ステップＳ６４）、第１制御部７０経由でホスト２に送信する。
【００７５】
そして、ホスト２が、取得した管理情報に基づいてデータの書き込みを実行すると（ステップＳ６５）、第１制御部７０は、コマンドプール使用モードであるため、ＳＳＤ２０へのデータの書き込みであるときは、管理情報及び書き込みデータをコマンドプール７１に保存する（ステップＳ６６）。
【００７６】
その後、ホスト２に読み出し要求が発生し、ホスト２が管理情報の取得を要求すると（ステップＳ６７）、第１制御部７０は、コマンドプール７１をチェックする（ステップＳ６８）。すなわち、第１制御部７０は、コマンドプール７１内の管理情報に基づいて読み出すデータがコマンドプール７１内にあるか否かを判定する。ここでは、コマンドプール７１内には対象データがある場合であるので、第１制御部７０は、管理情報をホスト２に送信する（ステップＳ６９）。
【００７７】
そして、ホスト２は、管理情報に基づいてデータの読み出しを実行し（ステップＳ７０）、第１制御部７０が、コマンドプール７１からデータを読み出してホスト２に送信する（ステップＳ７１）。その後、第２制御部５０は、性能改善処理を終了すると、性能改善処理の終了を第１制御部７０に通知する（ステップＳ７２）。
【００７８】
このように、性能改善処理中にホスト２からデータの読み出し要求が発生すると、第１制御部７０は、コマンドプール７１をチェックし、コマンドプール７１に対象のデータがある場合には、コマンドプール７１のデータをホスト２に送信する。したがって、ホスト２は、性能改善処理中に書き込まれた最新のデータを読み出すことができる。
【００７９】
次に、コマンドプール使用モードでホスト２からコマンドを受信したときの第１制御部７０の処理のフローについて説明する。図１４は、コマンドプール使用モードでホスト２からコマンドを受信したときの第１制御部７０の処理のフローを示すフローチャートである。
【００８０】
図１４に示すように、第１制御部７０は、ホスト２からコマンドを受信すると（ステップＳ８１）、対象データの場所はＳＳＤ２０であるかＨＤＤ３０であるかを判定する（ステップＳ８２）。その結果、ＨＤＤ３０である場合には、第１制御部７０は、ＨＤＤ３０の読み出し処理又は書き込み処理を行う（ステップＳ８３）。
【００８１】
一方、対象データの場所がＳＳＤ２０である場合には、第１制御部７０は、コマンド種別が読み出しか書き込みかを判定し（ステップＳ８４）、読み出しである場合には、第１対象データはコマンドプール７１にあるか否かを判定する（ステップＳ８５）。その結果、第１制御部７０は、コマンドプール７１にない場合には、ＳＳＤ２０からデータを読み出し（ステップＳ８６）、コマンドプール７１にある場合には、コマンドプール７１からデータを読み出す（ステップＳ８７）。
【００８２】
また、コマンド種別が書き込みである場合には、第１制御部７０は、コマンドプール７１へ管理情報及び書き込みデータを格納し（ステップＳ８８）、コマンドプール７１に空きがあるか否かを判定する（ステップＳ８９）。その結果、空きがない場合には、第１制御部７０は、第２制御部５０に性能改善処理終了を指示する（ステップＳ９０）。
【００８３】
このように、コマンドプール７１に空きがない場合に、第１制御部７０は、第２制御部５０に性能改善処理終了を指示することによって、書き込みデータの喪失を防ぐことができる。
【００８４】
上述してきたように、実施例２では、性能改善処理中にＳＳＤ２０へのデータの書き込みが発生すると、第１制御部７０は、管理情報とともに書き込みデータをコマンドプール７１に保存する。そして、性能改善処理が終了すると、書込部７２がコマンドプール７１に保存されているデータをＳＳＤ２０に書き込む。したがって、ＣＭ６０は、性能改善処理中のデータの破壊を防ぐことができる。
【００８５】
また、実施例２では、性能改善処理中にホスト２からデータの読み出し要求が発生すると、第１制御部７０は、コマンドプール７１をチェックし、コマンドプール７１に対象のデータがある場合には、コマンドプール７１のデータをホスト２へ送信する。したがって、ホスト２は、性能改善処理中に書き込まれた最新のデータを読み出すことができる。
【００８６】
なお、実施例では、ＳＳＤを用いるストレージ装置について説明したが、本発明はこれに限定されるものではなく、新たなデータを書き込む前に、記憶する古いデータを消去する必要がある記憶媒体を用いるストレージ装置にも同様に適用することができる。
【符号の説明】
【００８７】
１，３，９２    ストレージ装置
２，９１    ホスト
１０，６０，９３    ＣＭ
１１，１２    ＣＰＵ
１１ａ    第１ＯＳ
１２ａ    第２ＯＳ
１３，６３    ＲＡＭ
１４    フラッシュメモリ
２０，９４ａ    ＳＳＤ
３０，９４ｂ    ＨＤＤ
４０，７０    第１制御部
４１    計数部
４２    性能改善指示部
４３    情報送信部
４４    消去実行部
４５    通信部
５０    第２制御部
５１    性能改善部
５１ａ    取得部
５１ｂ    判別情報記憶部
５１ｃ    管理情報記憶部
５１ｄ    消去領域特定部
５１ｅ    消去指示部
５２    通信部
７１    コマンドプール
７２    書込部
７３    読出部
９４    論理ボリューム
１００    性能改善プログラム
【図１】
2015014963.tif 000003
【図２】
2015014963.tif 000004
【図３】
2015014963.tif 000005
【図４Ａ】
2015014963.tif 000006
【図４Ｂ】
2015014963.tif 000007
【図４Ｃ】
2015014963.tif 000008
【図４Ｄ】
2015014963.tif 000009
【図５】
2015014963.tif 000010
【図６】
2015014963.tif 000011
【図７】
2015014963.tif 000012
【図８】
2015014963.tif 000013
【図９】
2015014963.tif 000014
【図１０】
2015014963.tif 000015
【図１１】
2015014963.tif 000016
【図１２】
2015014963.tif 000017
【図１３】
2015014963.tif 000018
【図１４】
2015014963.tif 000019
【図１５】
2015014963.tif 000020