(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-10
(45)【発行日】2024-06-18
(54)【発明の名称】ストレージ制御装置及びストレージ制御プログラム
(51)【国際特許分類】
G06F 3/06 20060101AFI20240611BHJP
G06F 13/10 20060101ALI20240611BHJP
G06F 16/174 20190101ALI20240611BHJP
G06F 16/13 20190101ALI20240611BHJP
【FI】
G06F3/06 301Z
G06F3/06 301W
G06F3/06 304N
G06F13/10 340A
G06F16/174
G06F16/13 120
(21)【出願番号】P 2020028716
(22)【出願日】2020-02-21
【審査請求日】2022-11-17
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】浦田 一宏
【審査官】田名網 忠雄
(56)【参考文献】
【文献】米国特許出願公開第2015/0268861(US,A1)
【文献】米国特許出願公開第2015/0019797(US,A1)
【文献】国際公開第2015/052833(WO,A1)
【文献】特開2019-128906(JP,A)
【文献】特開2017-117055(JP,A)
【文献】特開2011-192260(JP,A)
【文献】特開2016-170583(JP,A)
【文献】米国特許出願公開第2016/0124848(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06-3/08
G06F 13/10-13/14
G06F 16/10-16/188
(57)【特許請求の範囲】
【請求項1】
ストレージ装置の物理的な格納領域に格納されたデータそれぞれに対応付けられたデータ番号と論理ボリュームにおける格納位置とを紐づける情報を保持するテーブルであって、前記論理ボリュームにおける格納位置に紐付けられた前記データ番号に対応する前記格納領域に格納されたデータが使用中データにあたる、管理テーブルと、
データの書込命令を受信し、
前記格納領域に対する前記データの書込処理を実行し、前記書込処理を実行した場合、前記書込処理がデータを追加する書込命令又はデータを上書きする書込命令のいずれであるか、及び、重複データの有無を基に、
前記管理テーブルに登録された論理ボリュームにおけるデータの格納位置
と前記データ番号とを紐づける情報を更新し、前記管理テーブル
において前記論理ボリュームにおける格納位置に紐づけられた前記データ番号に対応する前記格納領域に格納されたデータの総量を前記使用中データの第1使用量
として取得する書込処理部と、
前記書込処理部により取得された前記第1使用量及び前記格納領域に格納された全データによる第2使用量を基に、空き容量確保処理の設定を決定し、決定した前記設定で前記空き容量確保処理を実行する容量確保実行部と
を備えたことを特徴とするストレージ制御装置。
【請求項2】
前記容量確保実行部は、前記第1使用量及び前記第2使用量に加えて、前記ストレージ装置の処理負荷を基に、空き容量確保処理の設定を決定することを特徴とする請求項1に記載のストレージ制御装置。
【請求項3】
前記容量確保実行部は、前記第1使用量と前記第2使用量との差を基に、前記設定を決定することを特徴とする請求項1又は2に記載のストレージ制御装置。
【請求項4】
前記設定は、前記ストレージ装置が実行する処理における前記空き容量確保処理の割合であることを特徴とする請求項1~3のいずれか一つに記載のストレージ制御装置。
【請求項5】
前記容量確保実行部は、前記第1使用量と前記第2使用量との差が閾値以上の場合に、前記空き容量確保処理の前記割合を上昇させることを特徴とする請求項4に記載のストレージ制御装置。
【請求項6】
前記書込処理部は、前記
データの書込処理において重複排除処理及び圧縮処理を実行し、既存データと重複しない場合はデータを書き込み且つ書き込んだデータ
に対応付けられたデータ番号と書込処理の対象とした論理ボリュームにおける格納位置とを紐づける情報を前記管理テーブルに格納し、前記既存データと重複する場合は前記既存データ
に対応付けられたデータ番号と書込処理の対象とした論理ボリュームにおける格納位置とを紐づける情報を前記管理テーブルに格納し、前記既存データを上書きする場合は前記既存データ
に対応付けられたデータ番号と論理ボリュームにおける格納位置とを紐づける情報を前記管理テーブルから
削除することを特徴とする請求項1~5のいずれか一つに記載のストレージ制御装置。
【請求項7】
前記容量確保実行部は、前記空き容量確保処理として前記格納領域における前記使用中データ以外の不要データの削除を実行することを特徴とする請求項1~6のいずれか一つに記載のストレージ制御装置。
【請求項8】
前記容量確保実行部は、前記第2使用量が使用量閾値以上の場合、前記空き容量確保処理の前記割合を上昇させることを特徴とする請求項4又は5に記載のストレージ制御装置。
【請求項9】
前記第2使用量が使用量閾値以上の場合、前記第1使用量と前記第2使用量との差を基にストレージ装置の状態を判定して報知する報知部をさらに備えたことを特徴とする請求項1~8のいずれか一つに記載のストレージ制御装置。
【請求項10】
前記書込処理部は、複数の物理ディスクがまとめられて形成されたプールについて前記第1使用量を算出し、
前記容量確保実行部は、前記第1使用量及び前記プールに格納された全データによる前記第2使用量を基に、空き容量確保処理の設定を決定する
ことを特徴とする請求項1に記載のストレージ制御装置。
【請求項11】
ストレージ装置の物理的な格納領域に格納されたデータそれぞれに対応付けられたデータ番号と論理ボリュームにおける格納位置とを紐づける情報を保持するテーブルであって、前記論理ボリュームにおける格納位置に紐付けられた前記データ番号に対応する前記格納領域に格納されたデータが使用中データにあたる、管理テーブルを有し、
データの書込命令を受信し、
前記格納領域に対する前記データの書込処理を実行し、
前記書込処理を実行した場合、前記書込処理がデータを追加する書込命令又はデータを上書きする書込命令のいずれであるか、及び、重複データの有無を基に、
前記管理テーブルに登録された論理ボリュームにおけるデータの格納位置
と前記データ番号とを紐づける情報を更新し、前記管理テーブル
において前記論理ボリュームにおける格納位置に紐づけられた前記データ番号に対応する前記格納領域に格納されたデータの総量を前記使用中データの第1使用量
として取得し、
取得した前記第1使用量及び前記格納領域に格納された全データによる第2使用量を基に、空き容量確保処理の設定を決定し、
決定した前記設定で前記空き容量確保処理を実行する
処理をコンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージ制御装置及びストレージ制御プログラムに関する。
【背景技術】
【0002】
ストレージ装置には、一度書き込んだデータの消去変更を禁止する追記型の記憶方式を採用した装置が存在する。さらに、追記型のストレージ装置の中には、重複排除機能及び圧縮機能を有する装置もある。
【0003】
重複解除機能及び圧縮機能を有する追記型の排除ストレージでは、重複しない新規の書込データは物理ディスクに上書きせずに追記される。また、追記型の削除や上書きが行われることで参照されなくなった物理ディスク上のデータは、ガベージコレクションと呼ばれる不要データ削除機能によってデータのインプット及びアウトプットとは非同期に、物理ディスクからの削除が行われる。このため、物理ディスクの使用量は、書き込み時に一時的に増加し、その後ガベージコレクションの動作によって減少するといった経過をたどる。
【0004】
ストレージ装置において物理ディスクの使用量は重要な性能指標であり、使用量が少ないほどデータの格納と言うストレージ装置本来の機能を十分に活用することができる。そのため、ストレージ装置では、物理ディスクの使用量はなるべく小さく抑えられることが好ましい。物理ディスクの使用量をなるべく抑えるためには、追記型のストレージ装置ではガベージコレクションを動作させることとなる。
【0005】
このようなガベージコレクションの技術として、書き込み領域が不足した時点でガベージコレクションを動作させる従来技術がある。また、新しい圧縮データを格納するための十分な大きさの空き領域が物理ディスクに存在しない場合に、ガベージコレクションを動作させる従来技術がある。さらに、物理ディスクにおける未使用領域が一定値以下になり、ホスト装置からのアクセスが一定時間到来しない場合に、ガベージコレクションを実行する従来技術がある。
【先行技術文献】
【特許文献】
【0006】
【文献】国際公開第2015/097739号
【文献】特開平7-129470号公報
【文献】特開平9-330185号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、ストレージ装置では、ガベージコレクションを動作させた場合の負荷による性能影響が大きい。そのため、ガベージコレクションを頻繁に実行することはなるべく避けることが好ましい。
【0008】
一方で、ガベージコレクションの実行頻度を低下させると、物理ディスクの使用量が実際に使用可能なデータに比べて大きくなってしまうという問題がある。また、ガベージコレクションを実施しなければ、削除すべきデータが存在するかどうか判定困難であり、ガベージコレクションの頻度を下げた場合、不要なデータの増加に気づかず、物理ディスク上に無駄な領域が増えてしまう。さらに、参照されない不要なデータを除いたディスク実使用量もガベージコレクションを実行しないと不明であり、物理ディスクの容量不足などの事態の発生を迅速に把握することが困難となる。これらの事態が発生すると、ストレージ装置において記憶領域の確保が不十分となり、装置性能を向上させることが困難となる。
【0009】
この点、書き込み領域が不足した時点でガベージコレクションを動作させる従来技術では、書き込み領域が不足する以前に不要なデータの増加を検出することは困難であり、ガベージコレクションの実行が遅れる場合がある。その場合、ストレージ装置の装置性能を向上させることが困難となるおそれがある。これは、新しい圧縮データの格納領域の存否に応じてガベージコレクションを動作させる従来技術や、物理ディスクにおける未使用領域及びアクセス頻度応じてガベージコレクションを実行する従来技術でも同様である。
【0010】
開示の技術は、上記に鑑みてなされたものであって、ストレージ装置の装置性能を向上させるストレージ制御装置及びストレージ制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0011】
本願の開示するストレージ制御装置及びストレージ制御プログラムの一つの態様において、管理テーブルは、ストレージ装置の物理的な格納領域に格納されたデータそれぞれに対応付けられたデータ番号と論理ボリュームにおける格納位置とを紐づける情報を保持するテーブルであって、前記論理ボリュームにおける格納位置に紐付けられた前記データ番号に対応する前記格納領域に格納されたデータが使用中データにあたる。書込処理部は、データの書込命令を受信し、前記格納領域に対する前記データの書込処理を実行し、前記書込処理を実行した場合、前記書込処理がデータを追加する書込命令又はデータを上書きする書込命令のいずれであるか、及び、重複データの有無を基に、前記管理テーブルに登録された論理ボリュームにおけるデータの格納位置と前記データ番号とを紐づける情報を更新し、前記管理テーブルにおいて前記論理ボリュームにおける格納位置に紐づけられた前記データ番号に対応する前記格納領域に格納されたデータの総量を前記使用中データの第1使用量として取得する。容量確保実行部は、前記書込処理部により取得された前記第1使用量及び前記格納領域に格納された全データによる第2使用量を基に、空き容量確保処理の設定を決定し、決定した前記設定で前記空き容量確保処理を実行する。
【発明の効果】
【0012】
1つの側面では、本発明は、ストレージ装置の記装置性能を向上させることができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、ストレージシステムのハードウェア構成図である。
【
図2】
図2は、実施例1に係るコントローラモジュールのブロック図である。
【
図3】
図3は、論理ボリューム側管理テーブルの一例を表す図である。
【
図4】
図4は、物理ボリューム側管理テーブルの一例を表す図である。
【
図5】
図5は、新規データ書き込み時の管理テーブルの遷移を表す図である。
【
図6】
図6は、重複データ書き込み時の管理テーブルの遷移を表す図である。
【
図7】
図7は、データ上書き時の管理テーブルの遷移を表す図である。
【
図8】
図8は、ガベージコレクション処理が割り当てられない場合の処理割り当てを表す図である。
【
図9】
図9は、ガベージコレクション処理の優先度が通常の場合の処理割り当てを表す図である。
【
図10】
図10は、ガベージコレクション処理の優先度が高い場合の処理割り当てを表す図である。
【
図11】
図11は、ガベージコレクション処理の全体のフローチャートである。
【
図12】
図12は、プール使用量算出処理のフローチャートである。
【
図13】
図13は、実施例1に係る優先度設定処理のフローチャートである。
【
図14】
図14は、実施例2に係るコントローラモジュールのブロック図である。
【
図15】
図15は、実施例2に係る優先度設定処理のフローチャートである。
【発明を実施するための形態】
【0014】
以下に、本願の開示するストレージ制御装置及びストレージ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示するストレージ制御装置及びストレージ制御プログラムが限定されるものではない。
【実施例1】
【0015】
図1は、ストレージシステムのハードウェア構成図である。
図1に示すように、ストレージシステム1は、サーバなどのホスト2と接続される。そして、ストレージシステム1は、コントローラモジュール(Controller Module)10及びディスク(Disk)20を有する。
【0016】
ホスト2は、ストレージシステム1に対して命令を送信する。ストレージシステム1は、ホスト2から受信した命令を処理し、その命令に対する応答をホスト2へ返す。ホスト2からの命令は、データの書込命令や読出命令がなどである。データの書込命令には、ストレージシステム1が保持しないデータを書き込む新規データの書込命令及び既にストレージシステム1が保持する既存データに重複するデータを書き込む重複データの書込命令が含まれる、さらに、書込命令には、既にストレージシステム1が保持する既存データを更新する上書命令が含まれる。
【0017】
コントローラモジュール10は、ディスク20の論理構成の生成やディスク20に対するデータの読み出し及び書き込みを実行するストレージ制御装置である。コントローラモジュール10は、チャネルアダプタ(Channel Adapter)11、CPU(Central Processing Unit)12、DRAM(Dynamic Random Access Memory)13、ディスクインタフェース14を有する。
【0018】
チャネルアダプタ11は、ホスト2に接続されるホスト2との間の通信インタフェースである。チャネルアダプタ11は、CPU12に接続され、ホスト2から受信した命令をCPU12へ出力する。また、チャネルアダプタ11は、ホスト2から受信した命令に対する応答をCPU12から受信する。そして、チャネルアダプタ11は、受信した応答をホスト2へ送信する。
【0019】
CPU12は、ホスト2から送信された命令の入力をチャネルアダプタ11から受ける。そして、CPU12は、受信した命令を処理する。例えば、CPU12は、ディスクインタフェース14を介してディスク20にアクセスし、データの書き込みや読み出しの処理を実行する。そして、CPU12は、処理結果を命令に対する応答としてチャネルアダプタ11を介してホスト2へ送信する。また、CPU12は、複数のディスク20をまとめてプール200を形成する。このプール200が、「格納領域」の一例にあたる。さらに、CPU12は、プール200の中にディスク20をまとめた論理構成を構築する。例えば、CPU12は、複数のディスク20を使用してRAID(Redundant Arrays of Inexpensive Disks)を構築して論理ボリュームを構成する。
【0020】
CPU12は、実際には物理的なディスクであるディスク20に対してデータの書き込み及び読み出しを行う。例えば、CPU12は、ホスト2からの命令では論理的なディスクであるボリュームに対しての書き込みや読み出しが指示される。そこで、CPU12は、ホスト2からの命令で指定されたボリュームにおけるアクセス先の情報をディスク20におけるアドレスに変換して、ディスク20に対して書込処理や読出処理を実行する。すなわち、書込処理や読出処理は、ホスト2からは論理ボリュームに対する処理として指定され、コントローラモジュール10により実際のデータは物理ボリュームであるディスク20に格納される。
【0021】
また、CPU12は、ストレージシステム1の制御プログラムをDRAM13上に展開して実行する。ストレージシステム1の制御プログラムとしては、例えば、ガベージコレクションなどを動作させるためのプログラムなどがある。
【0022】
DRAM13は、主記憶装置である。DRAM13は、ストレージシステム1におけるキャッシュとしても使用される。
【0023】
ディスクインタフェース14は、ディスク20との間の通信インタフェースである。ディスクインタフェース14は、CPU12とディスク20との間のデータの送受信を仲介する。
【0024】
ディスク20は、ハードディスクなどの物理ディスクであり補助記憶装置である。ディスク20は、複数まとまって1つのプール200を形成する。さらに、ディスク20はコントローラモジュール10により論理的構成が構築される。例えば、複数のディスク20を用いて1つの論理ボリュームが構築される。
【0025】
次に、
図2を参照して、コントローラモジュール10の詳細について説明する。
図2は、実施例1に係るコントローラモジュールのブロック図である。
【0026】
コントローラモジュール10は、CPU12により実現される、重複圧縮制御部102、キャッシュメモリ制御部104及びバックエンド制御部105を有する。また、DRAM13には、メタデータテーブル103が格納される。
【0027】
メタデータテーブル103は、
図3に示す論理ボリューム側の管理テーブル131及び
図4に示す物理ボリューム側の管理テーブル132を含む。
図3は、論理ボリューム側管理テーブルの一例を表す図である。また、
図4は、物理ボリューム側管理テーブルの一例を表す図である。
【0028】
管理テーブル131は、論理的なディスクである論理ボリュームにおけるデータの格納位置を表すテーブルである。管理テーブル131には、
図3に示すように、論理ボリュームLBA(Logical Block Addressing)とその論理ボリュームLBAで示される領域に格納されたデータの識別情報であるデータ番号とが対応付けられて格納される。管理テーブル131に登録されたデータ番号により、物理ボリューム側の管理テーブル132を介して、ディスク20の集まりである物理ボリューム上のどのデータを参照しているかが確認可能となる。
【0029】
管理テーブル132は、物理ディスクであるディスク20におけるデータの格納位置を表すテーブルである。管理テーブル132には、
図4に示すように、データ番号、参照カウンタ、物理ディスクアドレス及びデータサイズが対応付けられて格納される。データ番号は、論理ボリューム側の管理テーブル131に格納されたデータ番号が用いられる。参照カウンタは、そのデータが参照される参照数を表す。本実施例に係るストレージシステム1は重複排除機能を有するため、1つのデータが複数の異なる情報として参照される場合がある。物理ディスクアドレスは、そのデータが格納されたディスク20におけるアドレスを表す。そして、管理テーブル132の物理ディスクアドレスで指定されたディスク20上の領域にデータ番号に対応するデータが格納される。格納データ210は、管理テーブル132に登録された各情報に対応するディスク20に格納された実際のデータを表す。
【0030】
重複圧縮制御部102は、入出力制御部121及びガベージコレクション制御部122を有する。入出力制御部121は、論理ボリュームLBAを用いて指定されることで参照されているデータ、すなわち使用中のデータによるプール200の使用量を表す使用中データ使用量を保持する。言い換えれば、プール使用量は、プール200の記憶領域に格納された全データから参照されないデータである不要データを除いたデータの使用量である。このプール使用量が、「第1使用量」の一例にあたる。ここで、本実施例では、プール200を基準として記憶領域の使用量を算出しているが、データを格納する記憶領域を対象とするものであれば他の記憶領域を基準としてもよく、例えば、論理ボリュームを基準としてもよい。入出力制御部121は、プール200の作成時にプール使用量を初期化して0にする。
【0031】
入出力制御部121は、チャネルアダプタ11を介してホスト2から送信された命令の入力を受ける。そして、入出力制御部121は、取得した命令を処理する。以下に入出力制御部121の命令処理の動作について説明する。
【0032】
読出命令の場合、入出力制御部121は、メタデータテーブル103を参照して、読み出す対象のデータの格納先を特定する。そして、入出力制御部121は、キャッシュメモリ制御部104に特定した格納先のデータの読み出しを依頼する。その後、入出力制御部121は、読み出し対象のデータの入力をキャッシュメモリ制御部104から受ける。そして、入出力制御部121は、取得したデータをホスト2へチャネルアダプタ11を介して送信する。
【0033】
書込命令の場合、入出力制御部121は、既存データに対する上書き命令であるか、又は、データを追加する書込み命令であるかを判定する。さらに、データを追加する書込み命令である場合、入出力制御部121は、書込み対象のデータが既存データと重複しない新規データであるか又は重複する重複データであるかを判定する。
【0034】
データを追加する書込命令であって書き込み対象のデータが新規データである場合、入出力制御部121は、書き込み対象の新規データのディスク20における格納先を決定する。次に、入出力制御部121は、書き込み対象の新規データを圧縮しキャッシュメモリ制御部104へ出力して決定した格納先への格納を依頼する。さらに、入出力制御部121は、メタデータテーブル103を更新する。この場合のメタデータテーブル103の詳細を以下に説明する。
【0035】
図5は、新規データ書き込み時の管理テーブルの遷移を表す図である。ここでは、新規データを書き込む以前の管理テーブル131及び132の状態が、
図3及び
図4で示される状態であった場合で説明する。
【0036】
入出力制御部121は、論理ボリューム側の管理テーブル131の行301に、新規データのデータ番号とともにその新規データの論理ボリュームLBAを登録する。また、入出力制御部121は、物理ボリューム側の管理テーブル132に新規データのための新しい行302を作成し、データ番号を登録するとともに、物理ディスクアドレス及びデータサイズを格納する。さらに、入出力制御部121は、新たに追加した論理ボリュームLBAにより格納した新規データが参照されるので、管理テーブル132における新規データの行302の参照カウンタを1に設定する。この場合、行302の新規データの情報に対応するデータ211が格納データ210として物理ボリュームに格納される。
【0037】
この場合、参照されているデータである新規データがプール200に追加格納されるので、入出力制御部121は、プール使用量に新規データによる使用量を加算する。
【0038】
一方、データを追加する書込命令であって書き込み対象のデータが重複データである場合、入出力制御部121は、書き込み対象の重複データのディスク20における格納先を決定する。次に、入出力制御部121は、決定した格納先に対する重複した既存データを示す情報の格納をキャッシュメモリ制御部104へ出力する。その後、入出力制御部121は、書き込み完了の応答をキャッシュメモリ制御部104から受ける。そして、入出力制御部121は、チャネルアダプタ11を介してホスト2へ書き込み完了の応答を送信する。また、入出力制御部121は、メタデータテーブル103を更新する。メタデータテーブル103を更新する。この場合のメタデータテーブル103の詳細を以下に説明する。
【0039】
図6は、重複データ書き込み時の管理テーブルの遷移を表す図である。ここでは、重複データを書き込む以前の管理テーブル131及び132の状態が
図5で示される状態であった場合で説明する。
【0040】
入出力制御部121は、論理ボリューム側の管理テーブル131を参照して、重複する既存データである元データを表す行を特定する。そして、入出力制御部121は、特定した行のデータ番号を表す欄304から元データのデータ番号を取得する。次に、入出力制御部121は、論理ボリューム側の管理テーブル131の新たな行303に、重複データのデータ番号として元データのデータ番号を登録し、且つ、重複データの論理ボリュームLBAを登録する。また、入出力制御部121は、物理ボリューム側の管理テーブル132における元データを表す行を特定する。そして、入出力制御部121は、元データに対して今回格納したアドレスからの参照が1つ増えたので、特定した行の参照カウンタの欄305の値を1つインクリメントする。この場合、格納データ210には重複データの新たな格納は行われない。
【0041】
この場合、重複データによるプール200の使用量の増加は発生しないため、入出力制御部121は、プール使用量をそのままの値で維持する。
【0042】
これに対して、データを上書きする書込命令である場合、入出力制御部121は、更新データについては、新規データか重複データかを判定し、それぞれの場合について上述した方法でデータの格納、並びに、管理テーブル131及び132の更新を実行する。一方、上書きされる元データについては、入出力制御部121は、メタデータテーブル103を参照して上書き対象の元データの情報を管理テーブル132の中から特定する。そして、入出力制御部121は、管理テーブル132における上書き対象の元データの参照カウンタを1つデクリメントする。この場合のメタデータテーブル103の詳細を以下に説明する。
【0043】
図7は、データ上書き時の管理テーブルの遷移を表す図である。ここでは、データの上書きを行う以前の管理テーブル131及び132の状態が
図6で示される状態であった場合で説明する。
図7は、更新データが重複データの場合の上書きを表す。
【0044】
入出力制御部121は、論理ボリューム側の管理テーブル131を参照して、上書き対象の元データを表す行を特定する。以降の処理は、更新データが重複データか新規データかで処理が異なる。
【0045】
更新データが重複データの場合、入出力制御部121は、特定した行のデータ番号を表す欄306のデータ番号に、更新データが重複する元データのデータ番号を登録する。また、入出力制御部121は、物理ボリューム側の管理テーブル132における更新データが重複する元データを表す行を特定する。そして、入出力制御部121は、更新データが重複する元データに対して今回の更新データのアドレスからの参照が1つ増えるので、特定した行の参照カウンタの欄308における値を1つインクリメントする。この場合、格納データ210には更新データの新たな格納は行われない。
【0046】
この場合、更新データによるプール200の使用量の増加は発生しないため、入出力制御部121は、プール使用量をそのままの値で維持する。
【0047】
これに対して、更新データが新規データの場合、入出力制御部121は、新たにデータ番号を割り当てて論理ボリューム側の管理テーブル131に新たに更新データの情報を登録する。また、入出力制御部121は、更新データの情報を物理ボリューム側の管理テーブル132にも登録する。
【0048】
この場合、参照されているデータである新規データがプール200に追加格納されるので、入出力制御部121は、プール使用量に新規データによる使用量を加算する。
【0049】
さらに、更新データが新規データ又は重複データのいずれの場合においても、入出力制御部121は、以下の処理を実行する。入出力制御部121は、上書き対象の元データを表す行を特定する。そして、入出力制御部121は、上書き対象の元データに対して今回の更新データのアドレスからの参照が1つ減るので、特定した行の参照カウンタの欄307における値を1つデクリメントする。その後、入出力制御部121は、上書き対象の元データの参照カウンタが0か否かを判定する。
【0050】
参照カウンタが0でなければそのデータはいずれかの論理ボリュームLBAを用いて参照されているので、入出力制御部121は、上書き対象の元データを使用中のデータであると判定する。この場合、入出力制御部121は、プール使用量をそのまま維持する。これに対して、上書き対象の元データの参照カウンタが0である場合、入出力制御部121は、上書き対象の元データは参照されておらず不要なデータであると判定する。この場合、上書き対象の元データが不要なデータとなったため、入出力制御部121は、プール使用量から上書き対象の元データによる使用量を減算する。
【0051】
また、入出力制御部121は、例えば、ホスト2からプール使用量の通知要求を受けた場合、保持するプール使用量の情報をホスト2へチャネルアダプタ11を介して送信する。これにより、管理者は、プール使用量を確認することができ、ある時点での圧縮重複排除後の使用中のデータ量を判断することができる。
【0052】
図2に戻って説明を続ける。ガベージコレクション制御部122は、ガベージコレクションの定期実行を判定するためのタイマを有する。そして、ガベージコレクション制御部122は、タイマを用いてガベージコレクションの定期実行のタイミングの到来を検知して、ガベージコレクションの実行を開始する。ここで、本実施例では、ガベージコレクションは定期実行されるが、不定期の実行でもよい。例えば、プール200の使用量に基づいてガベージコレクションを実行してもよいし、管理者からの指示によりガベージコレクションを実行してもよい。
【0053】
ガベージコレクション制御部122は、ガベージコレクションを実行する場合に、ガベージコレクションの設定を決定して、決定した設定に基づいてガベージコレクションを実行する。本実施例では、ガベージコレクション制御部122は、ガベージコレクションの設定として、ストレージシステム1で実行される処理全体におけるガベージコレクション処理が実行される割合を表す優先度を用いる。すなわち、本実施例に係る特定の処理の優先度とは、優先度が高くなるほど、ストレージシステム1で実行される処理全体におけるその特定の処理が実行される割合が上昇することを表す指標である。以下に、ガベージコレクション制御部122によるガベージコレクション処理の詳細について説明する。
【0054】
ガベージコレクション制御部122は、ストレージシステム1のシステム負荷が閾値以下か否かを判定する。システム負荷が閾値より大きい場合、ガベージコレクションを優先的に処理するための処理能力や資源の余裕をストレージシステム1が有さないと考えられるため、ガベージコレクション制御部122は、ガベージコレクション処理の優先度を通常に設定する。
【0055】
これに対して、システム負荷が閾値以下の場合、ガベージコレクション制御部122は、入出力制御部121からプール使用量を取得する。また、ガベージコレクション制御部122は、プール200に格納された全てのデータによる使用量であるディスク実使用量をバックエンド制御部105から取得する。このディスク実使用量が、「第2使用量」の一例にあたる。
【0056】
次に、ガベージコレクション制御部122は、ディスク実使用量からプール使用量を減算する。そして、ガベージコレクション制御部122は、ディスク実使用量とプール使用量との差を表す減算結果が閾値以上か否かを判定する。
【0057】
ディスク実使用量とプール使用量との差が閾値未満の場合、不要データが少ないと考えられ、ガベージコレクションを実行しても未使用領域の増加はそれほど見込めない。そのため、ガベージコレクション制御部122は、ガベージコレクションの優先度を通常に設定する。
【0058】
これに対して、ディスク実使用量とプール使用量との差が閾値以上の場合、不要データが多いと考えられ、ガベージコレクションを実行することで未使用領域のある程度の増加が見込まれる。そのため、ガベージコレクション制御部122は、ガベージコレクションの優先度を高くする。本実施例では、ガベージコレクションの優先度として、通常の優先度及び高い優先度の2種類が存在する場合で説明する。
【0059】
その後、ガベージコレクション制御部122は、設定した優先度でガベージコレクションをCPUコアに割り当てるとともにバックエンド制御部105に実行させる。ここで、本実施例に係る処理の優先度について説明する。
【0060】
本実施例に係る優先度設定は、ストレージシステム1におけるタスクスケジューラによるCPU12のコア割り当ての優先度やバックエンド制御部105によるディスクへのコマンド発行優先度に反映される。
【0061】
ストレージシステム1に搭載されるCPU12は、複数のコアを有する。そして、タスクスケジューラと呼ばれる制御が、ストレージシステム1が実行する処理を、各コアに割り当てて実行させる。この割り当ての際に、タスクスケジューラは、特定のタスクについて割り当てるコアを固定したり、あるいは優先度の高い処理を優先度が低い処理より先に実行させたりする。
【0062】
例えば、CPU12がコア#1~#9を有し、コア#1~#9が、ホスト2からの読み出し命令及び書き込み命令を処理するIO処理及びガベージコレクション処理を実行する場合で説明する。例えば、ガベージコレクションが実行されていない場合、コア#1~#9には、
図8のようにIO処理が割り当てられる。
図8は、ガベージコレクション処理が割り当てられない場合の処理割り当てを表す図である。
図8における実行中処理にあたる処理が、各コア#1~#9が実行している処理である。そして、実行待ち処理行列にあたる処理が、各コア#1~#9のそれぞれに既に割り当てられて実行中処理が終了すると順次紙面に向かって上から処理されていく処理である。
【0063】
図9は、ガベージコレクション処理の優先度が通常の場合の処理割り当てを表す図である。
図9においてCG処理と記載したものがガベージコレクション処理にあたる。ガベージコレクションの優先度が通常の場合、例えば、コア#9にガベージコレクション処理を割り当て、残りのコア#1~#8は、IO処理を割り当てる。他にも、ガベージコレクション処理が通常の優先度に設定された場合に、IO処理がガベージコレクション処理よりも優先して実行され、ガベージコレクション処理はIO処理が空いたタイミングで実施されるように設定してもよい。このように、通常の優先度にガベージコレクションが設定された場合、IO処理を阻害することなくガベージコレクション処理が実行される。
【0064】
図10は、ガベージコレクション処理の優先度が高い場合の処理割り当てを表す図である。ガベージコレクション処理の優先度が高い場合、ガベージコレクション処理はIO処理と均等に各コア#1~#9に割り当てられる。すなわち、平均すると、5つのコアでIO処理が実施され、残りの5つのコアでガベージコレクション処理が実施されることになる。この場合、IO処理又はガベージコレクション処理のうち、先に登録されたものが先に実行される。これによって、ガベージコレクション処理の処理速度は通常時と比べて大きく向上する。逆に、IO処理は実行がある程度阻害される。ただし、コア#1~#9に対する処理割り当ては固定されないため、IO処理が無い場合には、全てのコア#1~#9でガベージコレクション処理が動作することが可能である。逆に、ガベージコレクション処理が無い場合には、全てのコア#1~#9でIO処理が動作することが可能である。
【0065】
ここで、CPU12のそれぞれのコアは、入出力制御部121、キャッシュメモリ制御部104、バックエンド制御部105及びディスクインタフェース14の機能をそれぞれが実現する。すなわち、ガベージコレクション制御部122は、各コアで動作する入出力制御部121、キャッシュメモリ制御部104、バックエンド制御部105及びディスクインタフェース14に対して設定した優先度を通知して処理を実行させるといえる。このように、本実施例において優先度を上げるということは、具体的には、ガベージコレクションの実行の設定を変更して、コントローラモジュール10が実行する処理全体のうちのガベージコレクション処理の割合を上昇させることにあたる。
【0066】
さらにタスクスケジューリングに加えて、本実施例に係るストレージシステム1では、バックエンド制御部105が実行するディスク20に対するデータの流量制御時の割合にも優先度が反映される。バックエンド制御部105は、RAIDグループを構成する複数のディスク20へのコマンド発行の際に、ガベージコレクション処理対する延長コマンドをどの程度発行するかを優先度に応じて決定する。ガベージコレクション処理の優先度が通常の場合、バックエンド制御部105は、IO処理のコマンドの発行を優先して行い、IO処理のコマンド発行後にガベージコレクション処理の延長コマンドを発行する。これに対して、ガベージコレクション処理の優先度が高い場合、バックエンド制御部105は、ガベージコレクション処理の延長コマンドをIO処理のコマンドと均等に発行する。
【0067】
このガベージコレクション制御部122が、「容量確保実行部」の一例にあたる。また、ガベージコレクション制御部122により実行されるガベージコレクションが、「空き容量確保処理」の一例にあたる。ただし、プール使用量とディスク実使用量との差を基に実行させる空き容量確保処理は、ディスク20の空き容量を増やすことができれば他の処理を対象としてもよい。
【0068】
以上の説明では、ガベージコレクションの優先度として、通常の優先度及び高い優先度の2種類が存在する場合で説明したが、優先度は通常の優先度から最高の優先度まで複数段階あってもよい。ガベージコレクション制御部122は、ガベージコレクションの優先度を高くする場合、複数段階の優先度のうち通常の優先度よりも高い優先度を選択して設定する。ガベージコレクション制御部122は、この優先度の選択を、ディスク実容量の大きさやディスク実容量とプール使用量との差の大きさに応じて選択してもよい。
【0069】
図2に戻って説明を続ける。キャッシュメモリ制御部104は、データの書込命令の入力を入出力制御部121から受ける。そして、キャッシュメモリ制御部104は、書き込み対象のデータをDRAM13のキャッシュ領域に書き込み、書き込み完了の応答を入出力制御部121へ出力する。その後、キャッシュメモリ制御部104は、非同期でDRAM13のキャッシュ領域から書き込み対象のデータを読み出して、バックエンド制御部105に書込命令を出力する。
【0070】
また、キャッシュメモリ制御部104は、データの読出命令の入力を入出力制御部121から受ける。そして、キャッシュメモリ制御部104は、DRAM13のキャッシュ領域に読み出し対象のデータが存在するか否かを確認する。キャッシュヒットした場合、キャッシュメモリ制御部104は、DRAM13のキャッシュ領域から読み出し対象のデータを読み出して入出力制御部121へ出力する。
【0071】
これに対して、キャッシュミスヒットの場合、キャッシュメモリ制御部104は、データの読出命令をバックエンド制御部105へ出力する。その後、キャッシュメモリ制御部104は、読み出し対象のデータの入力をバックエンド制御部105から受ける。そして、キャッシュメモリ制御部104は、取得した読み出し対象のデータをDRAM13のキャッシュ領域に格納するとともに、キャッシュがフルであれば不要なデータを削除する。さらに、キャッシュメモリ制御部104は、読み出し対象のデータを入出力制御部121へ出力する。
【0072】
バックエンド制御部105は、ホスト2から送信されたディスク20の構成情報に基づいてプール200及び論理ボリュームを生成する。この際、バックエンド制御部105は、プール200における全てのデータによる使用量であるディスク実使用量を初期化して0とする。
【0073】
バックエンド制御部105は、データの書込命令をキャッシュメモリ制御部104から受ける。そして、バックエンド制御部105は、データの書込コマンドをディスクインタフェース14を介してディスク20に発行してデータを格納させる。
【0074】
また、バックエンド制御部105は、データの読出命令をキャッシュメモリ制御部104から受ける。そして、バックエンド制御部105は、データの読出コマンドをディスクインタフェース14を介してディスク20に発行してデータを取得する。その後、バックエンド制御部105は、読み出したデータをキャッシュメモリ制御部104へ出力する。
【0075】
また、バックエンド制御部105は、ガベージコレクションの実行の指示をガベージコレクション制御部122から受ける。そして、バックエンド制御部105は、メタデータテーブル103を参照して参照が無いデータである不要データを特定する。そして、バックエンド制御部105は、不要データを削除する。この時、バックエンド制御部105は、ガベージコレクション実行の指示で指定されたガベージコレクションの優先度に応じてガベージコレクション処理の延長コマンドの発行を行う。
【0076】
次に、
図11を参照して本実施例に係るコントローラモジュール10によるガベージコレクション処理の全体の流れを説明する。
図11は、ガベージコレクション処理の全体のフローチャートである。
【0077】
入出力制御部121は、ホスト2から送信された書込命令をチャネルアダプタ11を介して受信する(ステップS1)。
【0078】
次に、入出力制御部121は、保持するプール使用量を更新する(ステップS2)。
【0079】
ガベージコレクション制御部122は、タイマを使用してガベージコレクションの動作タイミングが到来したか否かを判定する(ステップS3)。ガベージコレクションの動作タイミングが到来しない場合(ステップS3:否定)、重複圧縮制御部102の処理はステップS1へ戻る。
【0080】
これに対して、ガベージコレクションの動作タイミングが到来したい場合(ステップS3:肯定)、ガベージコレクション制御部122は、ガベージコレクションの定期動作を開始する(ステップS4)。
【0081】
次に、ガベージコレクション制御部122は、ストレージシステム1のシステム負荷を確認する。また、ガベージコレクション制御部122は、ディスク実使用量をバックエンド制御部105から取得して確認する(ステップS5)。
【0082】
次に、ガベージコレクション制御部122は、入出力制御部121からプール使用量を取得する(ステップS6)。
【0083】
次に、ガベージコレクション制御部122は、プール使用量及びディス実使用量を用いてガベージコレクションの優先度を設定する(ステップS7)。
【0084】
その後、ガベージコレクション制御部122は、設定した優先度でのガベージコレクションの実行を入出力制御部121、キャッシュメモリ制御部104及びバックエンド制御部105に指示する。入出力制御部121、キャッシュメモリ制御部104及びバックエンド制御部105は、IO処理を実行しつつ、設定された優先度でガベージコレクションを実行する(ステップS8)。
【0085】
ここで、
図11のステップS4~S8においてガベージコレクション処理の実行中にも、コントローラモジュール10は、IO処理を並行して実施する。
【0086】
次に、
図12を参照して、プール使用量算出処理の流れについて説明する。
図12は、プール使用量算出処理のフローチャートである。
図12に示した処理は、
図11におけるステップS1及びS2で実行される処理の一例にあたる。
【0087】
入出力制御部121は、ホスト2から送信された書込命令をチャネルアダプタ101を介して受信する(ステップS101)。
【0088】
次に、入出力制御部121は、重複排除圧縮処理を実行し指定されたデータの書込みを実行する(ステップS102)。
【0089】
次に、入出力制御部121は、書き込み対象のデータが既存データと重複しないか否かを判定する(ステップS103)。書き込み対象のデータが既存データと重複する場合(ステップS103:否定)、入出力制御部121は、ステップS105へ進む。
【0090】
これに対して、書き込み対象のデータが既存データと重複しない場合(ステップS103:肯定)、入出力制御部121は、プール使用量に書き込み対象のデータによる使用量を加算する(ステップS104)。
【0091】
その後、入出力制御部121は、書き込みが上書きの場合の元データの参照カウンタが0か否かを判定する(ステップS105)。元データの参照カウンタが0でない場合(ステップS105:否定)、入出力制御部121は、ステップ107へ進む。
【0092】
これに対して、元データの参照カウンタが0の場合(ステップS105:肯定)、入出力制御部121は、プール使用量から元データによる使用量を減算する(ステップS106)。
【0093】
その後、入出力制御部121は、重複する既存データが無い場合は書き込むデータをキャッシュメモリ制御部104へ出力する。そして、キャッシュメモリ制御部104は、キャッシュにデータを書き込む(ステップS107)。
【0094】
その後、キャッシュメモリ制御部104は、非同期で書き込むデータをキャッシュから読み出し、バックエンド制御部105へ出力する。バックエンド制御部105は、キャッシュメモリ制御部104から入力されたデータを書き込む書込コマンドをディスクインタフェース14を介してディスク20に発行してディスク20にデータを書き込む(ステップS108)。
【0095】
次に、
図13を参照して、実施例1に係るコントローラモジュール10による優先度設定処理の流れについて説明する。
図13は、実施例1に係る優先度設定処理のフローチャートである。
図13に示した処理は、
図12におけるステップS4~S8で実行される処理の一例にあたる。
【0096】
ガベージコレクション制御部122は、ガベージコレクションの定期動作を開始する(ステップS201)。
【0097】
次に、ガベージコレクション制御部122は、ストレージシステム1のシステム負荷を取得し、システム負荷が負荷閾値以下か否かを判定する(ステップS202)。システム負荷が負荷閾値以下の場合(ステップS202:肯定)、ガベージコレクション制御部122は、ディスク使用量からプール使用量を減算し、プール使用量とディスク使用量の差が閾値以上か否かを判定する(ステップS203)。
【0098】
プール使用量とディスク使用量の差が閾値以上の場合(ステップS203:肯定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を高に設定する(ステップS204)。
【0099】
一方、システム負荷が負荷閾値より大きい場合(ステップS202:否定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を通常に設定する(ステップS205)。同様に、プール使用量とディスク使用量の差が閾値未満の場合(ステップS203:否定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を通常に設定する(ステップS205)。
【0100】
その後、ガベージコレクション制御部122は、設定した優先度でのガベージコレクションの実行を入出力制御部121、キャッシュメモリ制御部104及びバックエンド制御部105に指示する。入出力制御部121、キャッシュメモリ制御部104及びバックエンド制御部105は、IO処理を実行しつつ、設定された優先度でガベージコレクションを実行する(ステップS206)。
【0101】
以上に説明したように、本実施例に係るコントローラモジュールは、使用中のデータによる使用量であるプール使用量と、全データによる使用量であるディスク実使用量との差を算出する。そして、コントローラモジュールは、ディスク実使用量とプール使用量との差が閾値以上であれば、ガベージコレクションの実行の優先度を上昇させる。すなわち、コントローラモジュールは、ガベージコレクションの実行の設定を変更して、コントローラモジュールが実行する処理全体のうちのガベージコレクションの割合を上昇させる。
【0102】
これにより、ガベージコレクションの実行によるディスクの空き容量の確保の効果が高い場合に、ガベージコレクションの割合を上げることができ、迅速に空き容量を確保することができる。言い換えれば、ガベージコレクションを事項しても十分な効果を得られない場合には、ガベージコレクションの処理の割合を維持することで、より多くのCPU性能をホストコンピュータからのIO処理に割くことが可能となる。結果的に、限りあるディスクのリソースを効率的に使用することが可能となり、ストレージシステムの装置性能を有効に発揮させることができる。
【0103】
また、システム負荷を用いてガベージコレクションの設定を変更することで、例えば、システム負荷が低く余裕があるタイミングで、ガベージコレクションを優先的に動作させてディスクの空き容量を確保することができ、IO処理への影響を抑えることができる。
【0104】
以上のように、本実施例に係るコントローラモジュールは、ストレージ装置における空き容量の確保と処理負荷とのバランスを適切に保つことができ、ストレージ装置の装置性能を向上させることができる。
【実施例2】
【0105】
図14は、実施例2に係るコントローラモジュールのブロック図である。本実施例に係るコントローラモジュール10は、ディスク実使用量が閾値以上の場合にガベージコレクションの優先度を高に設定した上で管理者に通知を行うことが実施例1と異なる。本実施例に係るコントローラモジュール10は、実施例1の各部に加えて報知部106を有する。以下の説明では、実施例1で説明した各部の動作については説明を省略する。
【0106】
ガベージコレクション制御部122は、ガベージコレクションの定期動作を開始すると、ディスク実使用量をバックエンド制御部105から取得する。そして、ガベージコレクション制御部122は、ディスク実使用量が予め決められた使用量閾値以上か否かを判定する。
【0107】
ディスク実使用量が使用量閾値以上の場合、ディスク20の空き容量が僅少であり危険であると判定できることから、ガベージコレクション制御部122は、ガベージコレクションの優先度を高に設定する。次に、ガベージコレクション制御部122は、プール使用量を入出力制御部121から取得する。そして、ガベージコレクション制御部122は、ディスク実使用量からプール使用量を減算して、減算結果であるプール使用量とディスク実使用量との差が閾値以上か否かを判定する。そして、ガベージコレクション制御部122は、判定結果を報知部106に通知する。
【0108】
一方、ディスク実使用量が使用量閾値未満の場合はディスク20の空き容量に余裕があるので、ガベージコレクション制御部122は、実施例1と同様にシステム負荷及びプール使用量とディスク実使用量との差を用いてガベージコレクションの優先度を決定する。
【0109】
報知部106は、プール使用量とディスク実使用量との差が閾値以上か否かの判定結果の通知をガベージコレクション制御部122から受ける。
【0110】
プール使用量とディスク実使用量との差が閾値以上の場合、ガベージコレクションを実行することでディスクの空き容量がある程度確保できることが想定できるので、報知部106は、ストレージシステム1の性能低下の通知を管理者に通知する。
【0111】
これに対して、プール使用量とディスク実使用量との差が閾値未満の場合、ガベージコレクションを実行してもディスクの空き容量の確保が困難であると想定できるので、報知部106は、ディスク20の追加推奨を管理者に通知する。この報知部106の機能も、CPU12により実現される。
【0112】
次に、
図15を参照して、本実施例に係るコントローラモジュール10による優先度設定処理の流れについて説明する。
図15は、実施例2に係る優先度設定処理のフローチャートである。
【0113】
ガベージコレクション制御部122は、ガベージコレクションの定期動作を開始する(ステップS301)。
【0114】
次に、ガベージコレクション制御部122は、ディスク実使用量をバックエンド制御部105から取得する。そして、ガベージコレクション制御部122は、ディスク実使用量が使用量閾値以上か否かを判定する(ステップS302)。
【0115】
ディスク実使用量が使用量閾値以上の場合(ステップS302:否定)、ガベージコレクション制御部122は、ストレージシステム1のシステム負荷を取得し、システム負荷が負荷閾値以下か否かを判定する(ステップS303)。システム負荷が負荷閾値以下の場合(ステップS303:肯定)、ガベージコレクション制御部122は、ディスク使用量からプール使用量を減算し、プール使用量とディスク使用量の差が閾値以上か否かを判定する(ステップS304)。
【0116】
プール使用量とディスク使用量の差が閾値以上の場合(ステップS304:肯定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を高に設定する(ステップS305)。
【0117】
一方、システム負荷が負荷閾値より大きい場合(ステップS303:否定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を通常に設定する(ステップS306)。同様に、プール使用量とディスク使用量の差が閾値未満の場合(ステップS304:否定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を通常に設定する(ステップS306)。
【0118】
一方、ディスク実使用量が使用量閾値以上の場合(ステップS302:肯定)、ガベージコレクション制御部122は、ガベージコレクションの優先度を高に設定する(ステップS307)。
【0119】
次に、ガベージコレクション制御部122は、プール使用量を入出力制御部121から取得する。そして、ガベージコレクション制御部122は、ディスク実使用量からプール使用量を減算して、プール使用量とディスク実使用量との差が閾値以上か否かを判定する(ステップS308)。そして、ガベージコレクション制御部122は、判定結果を報知部106へ通知する。
【0120】
プール使用量とディスク実使用量との差が閾値以上の場合(ステップS308:肯定)、報知部106は、ストレージシステム1の性能低下を管理者に通知する(ステップS309)。
【0121】
これに対して、プール使用量とディスク実使用量との差が閾値未満の場合(ステップS308:否定)、報知部106は、ディスク20の追加推奨を管理者に通知する(ステップS310)。
【0122】
その後、ガベージコレクション制御部122は、設定した優先度でのガベージコレクションの実行を入出力制御部121、キャッシュメモリ制御部104及びバックエンド制御部105に指示する。入出力制御部121、キャッシュメモリ制御部104及びバックエンド制御部105は、IO処理を実行しつつ、設定された優先度でガベージコレクションを実行する(ステップS311)。
【0123】
以上に説明したように、本実施例に係るコントローラモジュールは、ディスク実使用量が使用量閾値以上の場合、ガベージコレクションの優先度を高に設定する。さらに、コントローラモジュールは、プール使用量とディスク実使用量の差から判定される現在のストレージシステムの状態を管理者に通知する。
【0124】
これにより、ディスクの空き容量が僅少な場合に、ガベージコレクション処理を優先させることができ、迅速にディスクの空き容量を確保することができる。また、ディスクの空き容量が僅少で危険な状態と考えられる場合に、管理者にストレージシステムの状態を通知することで障害発生前の対応を促すことができ、ストレージシステムの運転の継続性を維持して信頼性を確保することができる。
【符号の説明】
【0125】
1 ストレージシステム
2 ホスト
10 コントローラモジュール
11 チャネルアダプタ
12 CPU
13 DRAM
14 ディスクインタフェース
20 ディスク
102 重複圧縮制御部
103 メタデータテーブル
104 キャッシュメモリ制御部
105 バックエンド制御部
106 報知部
200 プール