(57)【要約】【課題】ＮＶＭ（Non-Volatile Memory）ドライブのビットコストを改善する。【解決手段】一つ以上のＮＶＭドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域に対するデータの入出力を行う上位システムが、当該記憶領域を管理し、且つ、当該記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理する。複数のチャンクの各々のチャンクサイズは同一であり、複数のチャンクの各々は、一つ以上の論理領域の各々の一部で構成される。複数のチャンクの各々は、一つ以上のＮＶＭドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない。【選択図】図１
2020095548.tif 000002
【特許請求の範囲】
【請求項１】
一つ以上のＮＶＭ（Non-Volatile Memory）ドライブと、
前記一つ以上のＮＶＭドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域に対するデータの入出力を行う上位システムと
を有し、
前記一つ以上のＮＶＭドライブの各々は、それぞれがデータの消去単位である複数の物理ブロックを有するＮＶＭを有し、
前記一つ以上のＮＶＭドライブの各々について、当該ＮＶＭドライブから提供された論理領域の容量である論理容量は、当該ＮＶＭドライブのＮＶＭにおける複数の物理ブロックに基づく物理領域の容量である物理容量に基づいており、
上位システムは、前記記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理し、
前記複数のチャンクの各々のチャンクサイズは同一であり、
前記複数のチャンクの各々は、前記一つ以上の論理領域の各々の一部で構成され、
前記複数のチャンクの各々は、前記一つ以上のＮＶＭドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない、
システム。
【請求項２】
各ＮＶＭドライブに関し、下記の（ｘ）又は（ｙ）が採用されている、
（ｘ）当該ＮＶＭドライブの物理容量は、ユーザ領域の容量であるユーザ容量と予備領域の容量である予備容量とを含み、当該ＮＶＭドライブの論理容量は、前記ユーザ容量に加えて前記予備容量にも基づいている、
（ｙ）当該ＮＶＭドライブの予備容量はゼロである、
請求項１に記載のシステム。
【請求項３】
前記一つ以上のＮＶＭドライブは、複数のＮＶＭドライブであり、
チャンクサイズは、前記複数のＮＶＭドライブにそれぞれ対応した複数の物理ブロックサイズに基づいている、
請求項１に記載のシステム。
【請求項４】
チャンクサイズは、前記複数の物理ブロックサイズの最小公倍数とＮＶＭドライブの数との積のα倍（αは自然数）である、
請求項３に記載のシステム。
【請求項５】
前記複数のＮＶＭドライブの各々において、物理ブロック間でデータが移動しない、
請求項３に記載のシステム。
【請求項６】
前記複数のＮＶＭドライブの一つ以上のＮＶＭドライブの各々において、当該ＮＶＭドライブが、物理ブロック間でデータを移動する機能であるデータ移動機能を有し、
前記上位システムは、前記一つ以上のＮＶＭドライブの各々について、当該ＮＶＭドライブのデータ移動機能を停止することの要求である停止要求を送信し、
前記一つ以上のＮＶＭドライブの各々において、当該ＮＶＭドライブが、当該ＮＶＭドライブに対する停止要求に応答して、前記データ移動機能を停止する、
請求項５に記載のシステム。
【請求項７】
前記複数のＮＶＭドライブは、ＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループを構成している、
請求項５に記載のシステム。
【請求項８】
いずれかのチャンクに一部だけが含まれる論理ブロックが許容され、当該論理ブロックの残りの部分は、前記記憶領域を構成するいずれのチャンクにも含まれない、
請求項３に記載のシステム。
【請求項９】
前記上位システムは、
前記複数の物理ブロックサイズの最小公倍数を採用しても所定の条件を満たすチャンクサイズが得られるか否かを判断し、
当該判断の結果が真の場合、当該最小公倍数を基にチャンクサイズを決定し、
当該判断の結果が偽の場合、前記複数の物理ブロックサイズのうちなるべく多くの物理ブロックサイズの最小公倍数を基にチャンクサイズを決定し、いずれかのチャンクに一部だけが含まれる論理ブロックの残りの部分を、前記記憶領域を構成するいずれのチャンクにも含めない、
請求項３に記載のシステム。
【請求項１０】
前記複数のＮＶＭドライブの少なくとも一つのＮＶＭドライブが、当該ＮＶＭドライブの物理ブロックサイズと異なる物理ブロックサイズのＮＶＭドライブに交換される場合、又は、新たに少なくとも一つ以上のＮＶＭドライブが追加される場合、前記上位システムは、
チャンクサイズを維持するか否かを判断し、
当該判断の結果が偽の場合、当該交換又は当該追加を許可しチャンクサイズを変更する、或いは、当該交換又は当該追加を拒否する、
請求項３に記載のシステム。
【請求項１１】
前記上位システムは、
（ａ）前記複数のＮＶＭドライブからそれぞれ複数の物理ブロックサイズを収集し、
（ｂ）当該収集された複数の物理ブロックサイズを基にチャンクサイズを決定し、
（ｃ）前記複数のＮＶＭドライブにそれぞれ対応した複数の論理容量のうちの最小の論理容量と、ＮＶＭドライブの数と、決定されたチャンクサイズとに基づいて、チャンクの数を決める、
請求項３に記載のシステム。
【請求項１２】
それぞれが複数のＮＶＭドライブで構成された複数のドライブグループが同一のプールに属する場合、
前記複数のドライブグループの各々について、（ａ）乃至（ｃ）が行われ、
前記複数のドライブグループの各々について、（ｃ）において、前記決定されたチャンクサイズは、前記複数のドライブグループについてそれぞれ決定された複数のチャンクサイズに基づき前記プールについて決定されたチャンクサイズである、
請求項１１に記載のシステム。
【請求項１３】
前記一つ以上のＮＶＭドライブの各々において、当該ＮＶＭドライブが、物理ブロック間でデータを移動する機能であるデータ移動機能を有し、
前記上位システムは、前記一つ以上のＮＶＭドライブの各々について、当該ＮＶＭドライブのデータ移動機能を停止することの要求である停止要求を送信し、
前記一つ以上のＮＶＭドライブの各々において、当該ＮＶＭドライブが、当該ＮＶＭドライブに対する停止要求に応答して、前記データ移動機能を停止する、
請求項１に記載のシステム。
【請求項１４】
一つ以上のＮＶＭ（Non-Volatile Memory）ドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域を管理し、
前記一つ以上のＮＶＭドライブの各々は、それぞれがデータの消去単位である複数の物理ブロックを有するＮＶＭを有し、
前記一つ以上のＮＶＭドライブの各々について、当該ＮＶＭドライブから提供された論理領域の容量である論理容量は、当該ＮＶＭドライブのＮＶＭにおける複数の物理ブロックに基づく物理領域の容量である物理容量に基づいており、
前記記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理し、
前記複数のチャンクの各々のチャンクサイズは同一であり、
前記複数のチャンクの各々は、前記一つ以上の論理領域の各々の一部で構成され、
前記複数のチャンクの各々は、前記一つ以上のＮＶＭドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない、
記憶制御方法。
【請求項１５】
下記（Ａ）及び（Ｂ）を計算機に実行させる、
（Ａ）一つ以上のＮＶＭ（Non-Volatile Memory）ドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域を管理すること、
前記一つ以上のＮＶＭドライブの各々は、それぞれがデータの消去単位である複数の物理ブロックを有するＮＶＭを有し、
前記一つ以上のＮＶＭドライブの各々について、当該ＮＶＭドライブから提供された論理領域の容量である論理容量は、当該ＮＶＭドライブのＮＶＭにおける複数の物理ブロックに基づく物理領域の容量である物理容量に基づいており、
（Ｂ）前記記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理すること、
前記複数のチャンクの各々のチャンクサイズは同一であり、
前記複数のチャンクの各々は、前記一つ以上の論理領域の各々の一部で構成され、
前記複数のチャンクの各々は、前記一つ以上のＮＶＭドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない、
コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、不揮発性メモリドライブを備えたシステムでの記憶制御に関する。
【背景技術】
【０００２】
ＮＶＭ（Non-Volatile Memory）を有するＮＶＭドライブとして、例えば、ＮＡＮＤ型フラッシュメモリ（以下、ＦＭ）を搭載するＦＭドライブ（例えばＳＳＤ（Solid State Drive））が知られている。ＦＭは、それぞれがデータの消去単位である複数の物理ブロックを有する。各物理ブロックは、それぞれがデータのＩ／Ｏ（Input/Output）単位である物理ページを有する。各物理ページは、上書き不可の領域であり、故に、各物理ブロックは、追書き領域（log-structured領域）である。このため、データが満杯の物理ブロックにデータを新たに書き込むためには、当該物理ブロックからデータを消去する必要がある。
【０００３】
特許文献１は、書き込みユニット単位でデータを非揮発性ソリッドステートストレージ装置に書き込むこと、及び、書き込みユニットのサイズは、非揮発性ソリッドステートストレージ装置における消去ブロックのサイズの整数倍であることを開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１５−５１８９８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＦＭドライブは、一般に、リクラメーション処理を必要とする。リクラメーション処理とは、一つ以上の物理ブロックの各々から有効データを読み出し、読み出したデータを物理ブロック（例えば、移動元の物理ブロックよりも消去回数の少ない物理ブロック）へ移動し、移動元物理ブロックに対して消去処理を実行する処理である。リクラメーション処理により、空きの物理ブロックを増やすことができる。
【０００６】
リクラメーション処理を実施可能とするため、ＦＭドライブにおいて、ＦＭを構成する複数の物理ブロックに基づく物理領域は、通常、上位システムに公開される領域であるユーザ領域の他に、上位システムに公開されない領域である予備領域（オーバープロビジョニング領域）を含む。予備領域に属する物理ブロックは、一般に、リクラメーション処理において移動先とされ得る物理ブロック、或いは、無効データを格納している使用不可の物理ブロックである。
【０００７】
このため、ＦＭドライブに実際に格納なデータの量は、物理領域の容量である物理容量から、予備領域の容量である予備容量を引いた容量（つまり、ユーザ領域の容量であるユーザ容量）以下に制限される。故に、ビットコストが低い。
【０００８】
この種の課題は、ＦＭ以外のＮＶＭについてもあり得る。
【課題を解決するための手段】
【０００９】
一つ以上のＮＶＭドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域に対するデータの入出力を行う上位システムが、当該記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理する。複数のチャンクの各々のチャンクサイズは同一である。複数のチャンクの各々は、一つ以上の論理領域の各々の一部で構成される。複数のチャンクの各々は、一つ以上のＮＶＭドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない。
【発明の効果】
【００１０】
ＮＶＭドライブのビットコストが改善する。
【図面の簡単な説明】
【００１１】
【図１】実施例１の概要を示す。
【図２】実施例１の一比較例を示す。
【図３】実施例１に係るストレージシステムを含んだシステム全体の構成を示す。
【図４】ストレージシステムにおける記憶管理を示す。
【図５】記憶領域の更新の一例を模式的に示す。
【図６】ストレージコントローラのメモリに格納されるプログラム及びテーブルの一例を示す。
【図７】ＦＭコントローラのメモリに格納されるプログラム及びテーブルの一例を示す。
【図８】プール管理テーブルの構成を示す。
【図９】チャンク管理テーブルの構成を示す。
【図１０】ＦＭサイズ管理テーブルの構成を示す。
【図１１】記憶領域の更新として行われるチャンク間のデータ再配置の一例と、チャンクと物理ブロックとの関係の一例とを示す。
【図１２】実施例１により解決される課題の一例を示す。
【図１３】実施例１において行われるデータ復元の一例を示す。
【図１４】プールチャンクサイズプログラムが行う処理のフローを示す。
【図１５】グループチャンクサイズプログラムが行う処理のフローを示す。
【図１６】停止指示プログラムが行う処理のフローを示す。
【図１７】実施例２におけるチャンクと物理ブロックとの関係の一例を示す。
【図１８】実施例３におけるチャンクサイズ管理の一例を示す。
【発明を実施するための形態】
【００１２】
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のＩ／Ｏ（Input/Output）インターフェースデバイス。Ｉ／Ｏ（Input/Output）インターフェースデバイスは、Ｉ／Ｏデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するＩ／Ｏインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのＩ／Ｏデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「メモリ」は、ＮＶＭドライブ内のＮＶＭと異なるメモリであって、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【００１４】
また、以下の説明では、「永続記憶デバイス」は、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）であり、具体的には、例えば、ＨＤＤ（Hard Disk Drive）及びＮＶＭドライブのうち少なくともＮＶＭドライブである。
【００１５】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスである。少なくとも一つのプロセッサデバイスは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサデバイスであるが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路（例えばＦＰＧＡ（Field-Programmable Gate Array）又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサデバイスでもよい。
【００１６】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１７】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び／又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ（或いは、そのプロセッサを有するコントローラのようなデバイス）とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【００１８】
また、以下の説明では、「ストレージシステム」は、１以上の物理的なストレージ装置を含む。少なくとも１つの物理的なストレージ装置は、汎用的な物理計算機でもよい。少なくとも１つの物理的なストレージ装置は、仮想的な計算機（例えばＶＭ（Virtual Machine））を実行してもよいし、ＳＤｘ（Software-Defined anything）を実現するためのソフトウェアを実行してもよい。ＳＤｘとしては、例えば、ＳＤＳ（Software Defined Storage）（仮想的なストレージ装置の一例）又はＳＤＤＣ（Software-defined Datacenter）を採用することができる。
【００１９】
また、以下の説明では、同種の要素を区別しないで説明する場合は、その要素の参照符号（例えば、ＦＭドライブ１８０Ｆ）、又は、参照符号の共通部分（例えば、永続記憶デバイス１８０）を使用することがある。同種の要素を区別して説明する場合は、その要素のＩＤを参照符号の末尾に付加（例えば、ＦＭドライブ１８０Ｆ−１、ＦＭドライブ１８０Ｆ−２）、又は、その要素の参照符号（例えば、ＦＭドライブ１８０Ｆ、ＨＤＤ１８０Ｈ）を使用することがある。
【００２０】
また、以下の説明では、ＩＤ（識別情報）として番号が使用されるが、番号に代えて又は加えて他種の情報（例えば、名称）が使用されてもよい。
【００２１】
以下、本発明の幾つかの実施例を図面に基づいて説明する。なお、以下の実施例では、ＮＶＭの一例として、ＦＭ（特にＮＡＮＤ型のフラッシュメモリ）が採用されており、故に、ＮＶＭドライブの一例として、ＦＭドライブが採用されるが、本発明は、ＦＭ以外の記憶素子を有する場合にも適用することができる。また、以下の説明では、混同を避けるために、ストレージシステムに対する要求を「要求」と言い、ＦＭドライブに対する要求を「指示」と言い、ＦＭに対する要求を「指示」と言うことがある。
【実施例１】
【００２２】
図１は、実施例１の概要を示す。
【００２３】
実施例１では、一つ以上のＦＭドライブ１８０Ｆと、一つ以上のＦＭドライブ１８０Ｆの上位システムとを備えたシステムとして、ストレージシステムが採用される。このため、上位システムの一例として、一つ以上のＦＭドライブ１８０Ｆに対してデータの入出力を行うストレージコントローラ１２０が採用される。各ＦＭドライブ１８０Ｆは、複数の物理ブロック１６０で構成された物理領域２２０としてＦＭを有する。各物理ブロック１６０は、複数の物理ページ１７０を有する。物理ブロック１６０が消去単位であり、物理ページ１７０がＩ／Ｏ単位である。
【００２４】
ＦＭドライブ１８０Ｆ内でリクラメーション処理のようなデータ移動処理が不要となり、結果として、ＦＭドライブ１８０Ｆ内の予備領域が開放、すなわち、下記の（ｘ）又は（ｙ）が採用される。
（ｘ）ＦＭドライブ１８０Ｆの論理容量（ＦＭドライブ１８０Ｆが提供する論理領域２１０の容量）は、ユーザ容量（ユーザ領域の容量）に加えて予備容量（予備領域の容量）にも基づいている。別の言い方をすれば、ユーザ領域の他に予備領域も、ＦＭドライブ１８０Ｆの上位システムの一例であるストレージコントローラ１２０に公開される。
（ｙ）ＦＭドライブ１８０Ｆの予備容量はゼロである。すなわち、ＦＭドライブ１８０Ｆが予備領域を有さず、ＦＭドライブ１８０Ｆの物理領域２２０の全域がユーザ領域である。
【００２５】
一つ以上のＦＭドライブ１８０Ｆからそれぞれ一つ以上の論理領域２１０が、ストレージコントローラ１２０に提供される。各ＦＭドライブ１８０Ｆについて、論理領域２１０は、連続した論理アドレス範囲（空間）に相当する。論理アドレスは、例えばＬＢＡ（Logical Block Address）である。ストレージコントローラ１２０は、それら一つ以上の論理領域２１０で構成された記憶領域１４０を管理し、且つ、当該記憶領域１４０を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンク１３０を管理する。複数のチャンク１３０の各々のチャンクサイズは同一である。複数のチャンク１３０の各々は、一つ以上の論理領域２１０の各々の一部で構成される。複数のチャンク１３０の各々は、一つ以上のＦＭドライブ１８０Ｆの各々について、一つ以上の物理ブロック１６０がそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロック１９０の各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロック１９０の少なくとも一部を含まない（ここでいう「又は一部」に関する詳細は、実施例２において説明される）。
【００２６】
これにより、記憶領域１４０内のデータが更新される場合、当該データを格納している第１のチャンク（例えばチャンク１３０−０）とは別の第２のチャンク（例えば次のチャンク１３０−１）に更新後のデータが書き込まれる。結果として、更新前のデータを格納している第１のチャンクの基になっている全物理ブロック１６０内の全データは無効データとなり、更新後のデータが格納された第２のチャンクの基になっている全物理ブロック１６０内の全データは有効データである。つまり、記憶領域１４０の基になっているいずれのＦＭドライブ１８０Ｆにおいても、物理ブロック１６０間で有効データを移動する必要が生じない。別の言い方をすれば、ストレージコントローラ１２０がチャンク１３０間でデータ再配置を行うと、配下のＦＭドライブ１８０内で物理ブロック１６０間のデータ再配置が完了するように、複数のチャンク１３０が構成される。故に、ユーザ容量の他に予備容量をも基にした論理容量を実現すること、或いは、予備容量をゼロにすることが可能である。このため、図１に例示のように、各ＦＭドライブ１８０Ｆから、物理領域２２０の容量である物理容量（例えば、ユーザ容量の他に予備容量を含んだ、又は、予備容量がゼロの物理容量）に等しい論理容量の論理領域２１０が提供され、結果として、ＮＶＭドライブのビットコストが改善する。
【００２７】
チャンクサイズは、複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズに基づいている。具体的には、例えば、複数のＦＭドライブ１８０において物理ブロックサイズが同一とは限らず（例えば、ＦＭドライブ１８０Ｆ−１の物理ブロックサイズはＦＭドライブ１８０Ｆ−２及び１８０Ｆ−３の物理ブロックサイズよりも小さく）、チャンクサイズは、複数の物理ブロックサイズの最小公倍数とＮＶＭドライブの数との積のＮ倍（Ｎは自然数）である。これにより、記憶領域１４０の基になるいずれのＦＭドライブ１８０Ｆについても、論理領域２１０のうち同一の物理ブロック１６０に対応した範囲である論理ブロック１９０が、異なる二つ以上のチャンク１３０から共有されることがない。このため、チャンク１３０内のデータの更新のためにチャンク１３０間のデータ再配置がストレージコントローラ１２０により行われても、再配置元のチャンク１３０の基になる物理ブロック１６０にも再配置先のチャンク１３０の基になる物理ブロック１６０にも有効データと無効データの混在が生じること（つまり、リクラメーション処理な必要な状況が生じること）を避けることができる。
【００２８】
なお、上述の特許文献１は、予備領域を開放することや上書き不可とされたチャンクを管理することに加えて、記憶領域１４０が複数のＦＭドライブ１８０Ｆに跨ることは開示も示唆もされていない。
【００２９】
そのため、図２が示す一比較例によれば、各ＦＭドライブ１８Ｆに、ストレージコントローラ１２のような上位システムに公開不可の予備領域が必要である。このため、各ＦＭドライブ１８Ｆについて、提供される論理領域２１の容量は、物理容量（物理領域２２の容量）よりも少ない容量、具体的には、物理容量から予備容量を引いた容量である。結果として、記憶領域１４の容量も少なく、故に、ビットコストが低い。
【００３０】
また、チャンクが上書き不可として管理されなかったり、複数のＦＭドライブ１８Ｆにそれぞれ対応した複数の物理ブロックサイズが考慮されなかったりすると、記憶領域１４の基になる物理ブロック１６において有効データと無効データ（有効データを格納した物理ページ１７と無効データを格納した物理ページ１７）が混在することになり、結果として、リクラメーション処理が必要である。このため、比較例では、予備領域が必要であり、本実施例と異なり予備領域を開放することができない。
【００３１】
以下、本実施例を詳細に説明する。なお、本実施例では、記憶領域１４０は、追書き領域であるとする（このため、複数のチャンク１３０がシーケンシャルに使用されるとする）。「論理ブロック」は、当該論理ブロックに対応した物理ブロックを構成する複数の物理ページにそれぞれ対応した複数の論理ページで構成されてよい。また、各論理アドレス（例えば各論理ページ）について、「有効データ」とは、或る論理アドレスについて最新のデータを意味し、「無効データ」とは、有効データを更新後のデータとする更新前のデータを意味する。有効データを格納した物理ページは「有効ページ」と呼ばれ、「無効データ」を格納したページは「無効ページ」と呼ばれてよい。
【００３２】
図３は、実施例１に係るストレージシステムを含んだシステム全体の構成を示す。
【００３３】
ストレージシステム１００は、ＳＡＮ（Storage Area Network）１０１のような第１の通信ネットワークを介して、１又は複数のホストシステム１０２と接続されている。また、ストレージシステム１００は、図示しない第２の通信ネットワークを介して管理システム１０３と接続されている。本実施例では、ホストシステム１０２及び管理システム１０３の各々は、プロセッサやメモリを有する物理計算機であるが、物理計算機により所定のソフトウェアが実行されることで実現されたシステムでもよい。ホストシステム１０２は、ストレージシステム１００にＩ／Ｏ要求を送信する。管理システム１０３は、ストレージシステム１００を管理するシステムである。第１の通信ネットワークと第２の通信ネットワークは、異なるネットワークでもよいし同一のネットワークでもよい。
【００３４】
ストレージシステム１００は、複数の永続記憶デバイス１８０と、複数の永続記憶デバイス１８０に対してデータを入出力するストレージコントローラ１２０とを有する。複数の永続記憶デバイス１８０は、複数のＦＭドライブ１８０Ｆを含み、更に別種の永続記憶デバイス、例えば複数のＨＤＤ１８０Ｈを含んでもよい。
【００３５】
ストレージコントローラ１２０は、フロントエンドＩ／Ｆ（インターフェースデバイス）１１６、バックエンドＩ／Ｆ１１３、管理Ｉ／Ｆ１１８、メモリ１１１、プロセッサ１１２及びそれらに接続された内部バス１１９を有する。フロントエンドＩ／Ｆ１１６、バックエンドＩ／Ｆ１１３及び管理Ｉ／Ｆ１１８が、インターフェース装置の一例である。
【００３６】
フロントエンドＩ／Ｆ１１６は、ストレージシステム１００とＳＡＮ１０１を接続するためのインターフェースデバイスであり、Ethernet（登録商標）やＦＣ（Fibre Channel）等のプロトコルにより、ＳＡＮ１０１を介して要求やデータの転送を行う。
【００３７】
バックエンドＩ／Ｆ１１３は、永続記憶デバイス１８０と接続するためのインターフェースデバイスであり、ＳＡＳ（Serial Attached SCSI）やＦＣ等のプロトコルにより各種指示やデータの転送を行う。
【００３８】
管理Ｉ／Ｆ１１８は、管理システム１０３と接続するためのインターフェースデバイスであり、ＴＣＰ／ＩＰ等のプロトコルにより各種要求やデータの転送を行う。
【００３９】
メモリ１１１は、プログラムの格納やデータの一時的な格納を行うコンポーネントであり、ホストシステム１０２から受信したデータをライトキャッシュとして一時格納する。
【００４０】
プロセッサ１１２は、ストレージシステム１００の制御を行うコンポーネントであり、メモリ１１１内のプログラムを実行することで、ストレージシステム１００内の各種データ転送を制御する。
【００４１】
ＦＭドライブ１８０Ｆは、内部にＦＭを搭載しており、上位システム（ここではストレージコントローラ１２０）からの指示に応じてデータをＦＭに書き込む、又はデータをＦＭから読み出す。
【００４２】
ＦＭドライブ１８０Ｆは、ＦＭ１５５と、ＦＭ１５５へのデータの入出力を制御するＦＭコントローラ１５０とを有する。
【００４３】
ＦＭ１５５は、一つ以上のＦＭチップで構成されていてよい。ＦＭチップは、複数の物理ブロック１６０で構成され、各物理ブロック１６０は、複数の物理ページ１７０で構成されている。物理ページ単位でデータのＩ／Ｏ（ライト及びリード）が行われ、物理ブロック単位でデータが消去される。
【００４４】
ＦＭコントローラ１５０は、ストレージコントローラ１２０のような上位システムに接続されるＩ／Ｆ１５１と、ＦＭ１５５に接続されるＩ／Ｆ１５２と、メモリ１５３と、Ｉ／Ｆ１５１、Ｉ／Ｆ１５２及びメモリ１５３に接続されたプロセッサ１５４とを有する。プロセッサ１５４は、論理領域２１０をストレージコントローラ１２０に提供する。論理領域２１０は、論理アドレス範囲と言い換えられてもよい。プロセッサ１５４は、論理アドレスと物理アドレスの対応関係を管理する（例えば、メモリ１５３が、論理アドレスと物理アドレスの対応関係を表す後述のアドレス変換テーブルを格納する）。プロセッサ１５４は、ストレージコントローラ１２０からのＩ／Ｏ指示で指定されている論理アドレスに対応した物理アドレスが属する物理ページ１７０を特定し、特定した物理ページ１７０に対してＩ／Ｏを行う。論理アドレスは、例えば、ＬＢＡ（Logical Block Address）であるが、ＬＢＡに代えて又は加えて、論理ブロック番号又は論理ページ番号を含んでよい。物理アドレスは、例えば、ＰＢＡ（Physical Block Address）であるが、ＰＢＡに代えて又は加えて、物理ブロック番号又は物理ページ番号を含んでよい。
【００４５】
図４は、ストレージシステム１００における記憶管理を示す。
【００４６】
複数のＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）グループ４００がある。各ＲＡＩＤグループ４００は、複数のＦＭドライブ１８０Ｆで構成される。ストレージコントローラ１２０は、ＲＡＩＤグループ４００毎に、当該ＲＡＩＤグループ４００に基づく記憶領域１４０を管理する。従って、ＲＡＩＤグループ４００毎に、当該ＲＡＩＤグループ４００に基づく記憶領域１４０が複数のチャンク１３０に区切られる。各ＲＡＩＤグループ４００において、各チャンク１３０は、当該ＲＡＩＤグループ４００を構成する複数のＦＭドライブ１８０Ｆに跨るため、一つ以上のストライプに相当してよい。「ストライプ」とは、記憶領域１４０（ここでは冗長構成領域）を構成する複数の論理領域２１０（複数のＦＭドライブ１８０Ｆがそれぞれ提供した複数の論理領域２１０）にそれぞれ存在する複数のストリップ（例えば同一論理アドレスの複数のストリップ）で構成された記憶領域部分である。各論理領域２１０について、「ストリップ」とは、当該論理領域２１０の一部である。
【００４７】
一つ以上の仮想プール４５０が、ストレージコントローラ１２０により管理される。仮想プール４５０に、一つ以上のＲＡＩＤグループ４００が属する。言い換えれば、複数のＲＡＩＤグループ４００の各々が、いずれかの仮想プール４５０に属する。
【００４８】
ストレージコントローラ１２０によりホストシステム１０２に一つ以上の論理ボリューム４６０が提供される。各論理ボリューム４６０は、仮想的な論理ボリューム、例えば、Thin Provisioning技術に従う論理ボリュームである。論理ボリューム４６０を指定したライト要求をストレージコントローラ１２０が受け付けた場合、当該論理ボリュームのライト先アドレス（ライト要求で指定された論理アドレス）に従う領域を含んだ範囲に、チャンク１３０が割り当てられる。なお、チャンクサイズは、仮想プール４５０毎に同一である（すなわち、一つの仮想プール４５０に存在する全てのチャンク１３０のチャンクサイズは同一である）。本実施例では、仮想プール４５０が論理ボリューム４６０に関連付けられ、当該論理ボリューム４６０には、当該論理ボリューム４６０に関連付けられている仮想プール４５０からチャンク１３０が割り当てられるためである）。
【００４９】
図５は、記憶領域１４０の更新の一例を模式的に示す。なお、図５を参照した説明では、チャンク単位のデータを特に「チャンクデータ」と言う。
【００５０】
チャンク１３０は、追書き領域として管理されている記憶領域１４０に対するデータ入出力の単位である。
【００５１】
先頭から末尾にかけて、チャンク１３０−１、チャンク１３０−２、…、チャンク１３０−（Ｎ−１）、チャンク１３０−Ｎが、並んでいるとする。チャンク１３０−０〜チャンク１３０−２にデータが格納されており（別の言い方をすれば、チャンク１３０−０〜チャンク１３０−２の各々はいずれかの論理ボリューム４６０に割当て済みであり）、チャンク１３０−３以降が空きであるとする。ストレージコントローラ１２０は、論理ボリューム４６０の論理アドレスとチャンク１３０の論理アドレスとの対応関係、及び、空きのチャンク１３０の論理アドレスを管理する。
【００５２】
ここで、ストレージコントローラ１２０が、チャンク１３０−０に格納されているチャンクデータの更新が必要なライト要求を受け付けたとする（Ｓ５０１）。この場合、ストレージコントローラ１２０は、チャンク１３０−０からメモリ１１１にチャンクデータを読み出し（Ｓ５０２）、当該チャンクデータに、受け付けたライト要求に従うデータを上書きする（Ｓ５０３）。ストレージコントローラ１２０は、上書き後（更新後）のチャンクデータを、先頭の空きチャンク１３０−３に書き込み（Ｓ５０４）、且つ、更新前のチャンク１３０−０を無効化する（Ｓ５０５）。
【００５３】
上書き後のチャンクデータはメモリ１１１に格納されている間に、チャンク１３０−０のチャンクデータの更新が必要なライト要求をストレージコントローラ１２０が新たに受け付けた場合、ストレージコントローラ１２０は、上書き後のチャンクデータを空きチャンク１３０−３に書き込む前に、メモリ１１１上の上書き後のチャンクデータに、当該新たに受け付けたライト要求に従うデータを上書きしてもよい。言い換えれば、上書き（更新）の都度にチャンク単位のいわゆるリードモディファイライトが行われる必要はなく、同一のチャンクデータについて２回以上の上書きが行われた後に、最終上書き後のチャンクデータが空きのチャンクに書き込まれてもよい。
【００５４】
また、チャンク群（連続した又は離散した一つ以上のチャンク１３０）は、消去単位でもよい。具体的には、例えば、ストレージコントローラ１２０は、無効化されたチャンク１３０−０に対して、チャンク単位のデータ消去を行ってよい。それにより、空きのチャンク１３０を増やすことができる。また、チャンク１３０−０に対するデータ消去により、チャンク１３０−０に含まれている全論理ブロックに対応した全物理ブロックの各々には物理ブロック単位のデータ消去が行われることになる。
【００５５】
図６は、ストレージコントローラ１２０のメモリ１１１に格納されるプログラム及びテーブルの一例を示す。
【００５６】
メモリ１１１が、仮想プール４５０毎のチャンクサイズを決定するプールチャンクサイズプログラム６０１と、ＲＡＩＤグループ４００毎のチャンクサイズを決定するグループチャンクサイズプログラム６０２と、リクラメーション処理のようなデータ移動処理の停止指示を送信する停止指示プログラム６０３と、データ入出力を制御するＩ／Ｏプログラム６０４とを格納する。また、メモリ１１１が、仮想プール４５０に関する情報を保持するプール管理テーブル６１１と、チャンク１３０に関する情報を保持するチャンク管理テーブル６１２とを格納する。
【００５７】
図７は、ＦＭコントローラ１５０のメモリ１５３に格納されるプログラム及びテーブルの一例を示す。
【００５８】
メモリ１５３が、物理ブロックサイズを通知するブロックサイズ通知プログラム７０１と、アドレス変換テーブル７１２を基に論理アドレスと物理アドレス間の変換を行うことを含むデータ入出力を行うＩ／Ｏプログラム７０２とを格納する。また、メモリ１５３が、ＦＭ１５５のサイズに関する情報を保持するＦＭサイズ管理テーブル７１１と、論理アドレスと物理アドレスの対応関係を示す情報を保持するアドレス変換テーブル７１２とを格納する。
【００５９】
図８は、プール管理テーブル６１１の構成を示す。
【００６０】
プール管理テーブル６１１は、例えば、チャンク１３０毎にエントリを有する。各エントリが、プール＃８０１、ＲＧ＃８０２、チャンク＃８０３、ステータス８０４及び割当先８０５といった情報を格納する。以下、一つのチャンク１３０を例に取る（図８の説明において「対象チャンク１３０」）。
【００６１】
プール＃８０１は、対象チャンクを含んだ仮想プール４５０の識別番号を示す。ＲＧ＃８０２は、対象チャンクの基になっているＲＡＩＤグループ４００の識別番号を示す（「ＲＧ」は、ＲＡＩＤグループの略である）。チャンク＃８０３は、対象チャンク１３０の識別番号を示す。
【００６２】
ステータス８０４は、対象チャンクのステータスを示す。“有効”は、対象チャンク１３０が最新のデータを含んだチャンクであることを意味し、“無効”は、対象チャンク１３０が無効化されたチャンクであることを意味し、“空き”は、対象チャンク１３０が空きのチャンクであることを意味する。
【００６３】
割当先８０５は、対象チャンク１３０の割当先を示す情報（例えば、ＶＯＬ＃（論理ボリューム４６０の識別番号）とＬＢＡ（論理ボリューム４６０のＬＢＡ）との組合せ）である。対象チャンク１３０のステータス８０４が“無効”又は“空き”の場合、対象チャンク１３０は論理ボリューム４６０に割り当てられていない。
【００６４】
図９は、チャンク管理テーブル６１２の構成を示す。
【００６５】
チャンク管理テーブル６１２は、例えば、ＲＡＩＤグループ４００毎にエントリを有する。各エントリが、ＲＧ＃９０１、プール＃９０２、ドライブ＃９０３、ブロックサイズ（「ＢＳ」と表記）９０４、Ｌｃｍ＿Ｂ９０５、ドライブ数（「ｎ」と表記）９０６、チャンクサイズ係数（「α」と表記）９０７、チャンクサイズ（「ＣＳ」と表記）９０８、物理容量（「ＰＳ」と表記）９０９、及び、チャンク数（「ｃ」と表記）９１０といった情報を格納する。以下、一つのＲＡＩＤグループ４００を例に取る（図９の説明において「対象ＲＡＩＤグループ４００」）。
【００６６】
ＲＧ＃９０１は、対象ＲＡＩＤグループ４００の識別番号を示す。プール＃９０２は、対象ＲＡＩＤグループ４００が属する仮想プール４５０の識別番号を示す。
【００６７】
ドライブ＃９０３は、対象ＲＡＩＤグループ４００に含まれる複数のＦＭドライブ１８０Ｆの各々の識別番号を示す。
【００６８】
ブロックサイズ９０４は、対象ＲＡＩＤグループ４００に含まれる複数のＦＭドライブ１８０Ｆの各々について当該ＦＭドライブ１８０Ｆに対応した物理ブロックサイズを示す。
【００６９】
Ｌｃｍ＿Ｂ９０５は、対象ＲＡＩＤグループ４００に含まれる複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズの最小公倍数を示す。
【００７０】
ドライブ数９０６は、対象ＲＡＩＤグループ４００が属する仮想プール４５０に属するＦＭドライブ１８０Ｆの数を示す。
【００７１】
チャンクサイズ係数９０７は、対象ＲＡＩＤグループ４００が属する仮想プール４５０についてチャンクサイズの決定に使用された係数を示す。
【００７２】
チャンクサイズ９０８は、対象ＲＡＩＤグループ４００が属する仮想プール４５０について決定されたチャンクサイズを示す。
【００７３】
物理容量９０９は、対象ＲＡＩＤグループ４００に含まれる複数のＦＭドライブ１８０Ｆの各々について当該ＦＭドライブ１８０Ｆの物理容量を示す。
【００７４】
チャンク数９１０は、対象ＲＡＩＤグループ４００に基づく記憶領域１４０に含まれるチャンク１３０の数を示す。
【００７５】
図１０は、ＦＭサイズ管理テーブル７１１の構成を示す。
【００７６】
ＦＭサイズ管理テーブル７１１は、物理ブロックサイズを示す情報である物理ブロックサイズ（「ＢＳ」と表記）１００１、物理容量（物理領域２２０の容量）を示す情報である物理容量（「ＰＳ」と表記）１００２、及び、論理容量（論理領域２１０の容量）を示す情報である論理容量（「ＬＳ」と表記）１００３を格納する。
【００７７】
なお、図１０の例によれば、論理容量（６ＴＢ）は物理容量（１０ＴＢ）から予備容量（４ＴＢ）を引いた値である。これは、このテーブル７１１を保持するＦＭドライブ１８０Ｆが、予備容量（予備領域）を公開する機能を有しているものの、本実施例に係るストレージコントローラ１２０のような機能を有さない上位システムにも適用可能とするため（つまり汎用性の向上のため）予備領域を有しているからである。本実施例では、例えば、停止指示プログラム６０３が、ＦＭドライブ１８０Ｆに対して、予備容量を含む物理容量の問合せ（公開指示）をＦＭドライブ１８０Ｆに送信し、ＦＭドライブ１８０Ｆ（ＦＭコントローラ１５０）が、その問合せに応答して、予備容量を含む物理容量“１０ＴＢ”（＝論理容量）を停止指示プログラム６０３に回答する（つまり、予備容量（予備領域）を公開する）。
【００７８】
本実施例では、予備容量を有しないＦＭドライブ１８０Ｆが採用されてよい。具体的には、図１０において、物理容量１００２と論理容量１００３の各々の値が同じであるＦＭドライブ１８０Ｆが採用されてよい。
【００７９】
図１１は、記憶領域１４０の更新として行われるチャンク１３０間のデータ再配置の一例と、チャンク１３０と物理ブロック１６０との関係の一例とを示す。
【００８０】
以下、説明の簡単化のため、全ＦＭドライブ１８０Ｆにおいて物理ページサイズは同一であり、故に、物理ブロックサイズは、物理ブロック１６０に含まれる物理ページ１７０の数に依存するものとする。また、図１１（及び、図１２、図１３、図１７〜図１９）において、物理ページ１７０間の比較的大きい境界は、物理ブロック１６０間の境界を意味する。従って、図１１の例によれば、ＦＭドライブ１８０Ｆ−１０及び１８０Ｆ−１１の各々の物理ブロックサイズは“６”（物理ページ六つ分）であり、ＦＭドライブ１８０Ｆ−１２及び１８０Ｆ−１３の各々の物理ブロックサイズは“４”（物理ページ四つ分）である。
【００８１】
また、物理ページ１７０内の番号は、チャンク１３０におけるＬＢＡ（当該チャンク１３０が割り当てられている領域（論理ボリューム４６０における領域）のＬＢＡ）に相当する。図１１によれば、チャンク１３０−１０のＬＢＡ“１”に対応したデータは、ＲＡＩＤグループ４００を構成するＦＭドライブ１８０Ｆ−１０〜１８０Ｆ−１３に書き込まれる。
【００８２】
図１１によれば、チャンク１３０−１０に書き込まれたデータのいずれかが更新される場合、Ｉ／Ｏプログラム６０４が、チャンク１３０−１０からデータを読み出し、読み出されたデータを更新し、更新後のデータを先頭の空きチャンク１３０−１１に書き込む（チャンク単位でのチャンク１３０間のデータ再配置）。
【００８３】
ＦＭドライブ１８０Ｆ−１０〜１８０Ｆ−１３にそれぞれ対応した四つの物理ブロックサイズを基にチャンクサイズが最適化されている。具体的には、チャンクサイズは、物理ブロックサイズ“４”と“６”との最小公倍数である“１２”と、ＦＭドライブ１８０Ｆの数“４”との積のα倍（αは係数であり自然数、ここではα＝１）であるため、チャンクサイズは“４８”である。このようにしてチャンクサイズが決定されるため、各チャンク１３０は、他のチャンク１３０と物理ブロック１６０を共有しない。このため、各チャンク１３０について、当該チャンク１３０の基になる各物理ブロックに、有効データと無効データが混在することがなく、故に、リクラメーション処理を不要とすることができる。
【００８４】
複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズに基づいてチャンクサイズを決定するために、本実施例では、当該複数のＦＭドライブ１８０Ｆの各々が、物理ブロックサイズを上位システムに提供するインターフェースとしてブロックサイズ通知プログラム７０１を有し、ストレージコントローラ１２０が、後に詳述するプールチャンクサイズプログラム６０１及びグループチャンクサイズプログラム６０２を有する。仮想プール４５０がない場合、プールチャンクサイズプログラム６０１は無くてもよい。また、ＲＡＩＤグループ４００とは異なるドライブグループ（複数のＦＭドライブ１８０Ｆ）が設けられてもよく、グループチャンクサイズプログラム６０２は、そのようなドライブグループについてもチャンクサイズを決定することができる。
【００８５】
なお、複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズは、例えば、管理システム１０３により管理されていて、ＦＭドライブ１８０Ｆに代えて管理システム１０３からストレージコントローラ１２０に物理ブロックサイズが通知されてもよい。また、管理システム１０３が、複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズを基にチャンクサイズを決定し、決定したチャンクサイズをストレージコントローラ１２０に通知してもよい。
【００８６】
上述したように、本実施例によれば、各ＦＭドライブ１８０Ｆにおいて、リクラメーション処理は不要になるが、リクラメーション処理は、物理ブロック１６０間のデータ移動処理の一例である。当該データ移動処理の別の例として、例えば、図１２に例示するようい、或る物理ページ１７０についてリードエラー（所定回数リードリトライが行われてもデータを読み出せないこと）が生じた場合、当該物理ページ１７０を含んだ物理ブロック１６０のうち残りの物理ページ１７０からデータを別の物理ブロック１６０に移動する処理が走ることがある。
【００８７】
また、リフレッシュ処理が走ることもある。リフレッシュ処理とは、ＦＭのデータリテンション特性に起因して行われる処理であって、エラー訂正可能にデータを保持するためにデータを物理ブロックから（エラー訂正した上で）別の物理ブロックに定期的に移動する処理である。
【００８８】
このようなデータ移動処理が行われると、或るチャンク内のデータの一部が別のチャンクに存在することなり、チャンク単位のＩ／Ｏを維持することができない。
【００８９】
そこで、本実施例では、図１３に例示するように、物理ブロック１６０間の一切のデータ移動処理を停止する（禁止する）ことの指示である停止指示を、ストレージコントローラ１２０が、各ＦＭドライブ１８０Ｆに送信する。具体的には、例えば、ストレージコントローラ１２０では上述した停止指示プログラム６０３が実行される。停止指示プログラム６０３が、各ＦＭドライブ１８０Ｆに停止指示を送信する。ＦＭドライブ１８０ＦのＩ／Ｏプログラム７０２は、停止指示に応答して、リクラメーション処理に限らず物理ブロック１６０間の一切のデータ移動処理を行わないようにする。これにより、チャンク単位のＩ／Ｏを維持することができる。また、ＦＭドライブ１８０Ｆにおいてデータ移動処理が行われないので、ストレージシステム１００全体としてのＩ／Ｏ性能の向上が期待できる。
【００９０】
リフレッシュ処理のような物理ブロック１６０間のデータ移動処理が一切停止すると、一部のデータについて、ＥＣＣ（Error Correcting Code）を用いて訂正することは不可能な状態、つまり、アンコレクタブルなエラーが生じる可能性がある（符号１３０１参照）。しかし、本実施例では、各チャンク１３０は、いずれかのＲＡＩＤグループ４００に基づいているため、Ｉ／Ｏプログラム６０４は、チャンク１３０間のデータ再配置の対象となるデータのうちの一部のデータにアンコレクタブルなエラーが生じている場合（すなわち、いずれかのＦＭドライブ１８０Ｆから読み出されたデータが欠損している場合）、当該データ再配置の際にパリティを用いて当該一部のデータ（欠損しているデータ）を復元する（符号１３０２参照）。
【００９１】
以下、チャンクサイズ決定に関する処理の詳細を説明する。
【００９２】
図１４は、プールチャンクサイズプログラム６０１が行う処理のフローを示す。プールチャンクサイズプログラム６０１は、例えば、仮想プール４５０の構成時（例えば、管理システム１０３から仮想プール４５０を構成することの要求を受けた時）に起動される。図１４の説明では、構成された仮想プール４５０を「対象仮想プール４５０」と言う。
【００９３】
プールチャンクサイズプログラム６０１は、対象仮想プール４５０に属する複数のＲＡＩＤグループ４００の各々について、グループチャンクサイズプログラム６０２を起動することで当該ＲＡＩＤグループ４００のチャンクサイズを収集する（Ｓ１４０１）。なお、少なくとも一つのＲＡＩＤグループ４００についてチャンクサイズの収集が不可の場合（Ｓ１４０２：Ｎｏ）、プールチャンクサイズプログラム６０１は、管理システム１０３にエラーを通知する（Ｓ１４０３）。
【００９４】
対象仮想プール４５０に属する各ＲＡＩＤグループ４００についてチャンクサイズが収集された場合（Ｓ１４０２：Ｙｅｓ）、プールチャンクサイズプログラム６０１は、チャンクサイズ＝Ｌｃｍ＿Ｒ＊ｍ＊αを算出、すなわち、Ｌｃｍ＿Ｒとｍとαとの積を、対象仮想プール４５０のチャンクサイズとして決定する（Ｓ１４０４）。「Ｌｃｍ＿Ｒ」は、対象仮想プール４５０に属する複数のＲＡＩＤグループ４００についてそれぞれＳ１４０１で収集された複数のチャンクサイズの最小公倍数である。「ｍ」は、対象仮想プール４５０に属するＲＡＩＤグループ４００の数である。「α」は、任意の自然数であり、係数である。
【００９５】
プールチャンクサイズプログラム６０１は、チャンク管理テーブル６１２に、対象仮想プール４５０について、チャンクサイズ９０８（Ｓ１４０４で決定されたチャンクサイズを示す情報）、及び、チャンクサイズ係数９０７（Ｓ１４０４で使用された係数αとしての値）を記録する（Ｓ１４０５）。
【００９６】
プールチャンクサイズプログラム６０１は、対象仮想プール４５０に属する複数のＲＡＩＤグループ４００の各々について、停止指示プログラム６０３を起動することで当該ＲＡＩＤグループ４００に属する各ＦＭドライブ１８０Ｆにおいてデータ移動処理が行われないようにする（Ｓ１４０６）。
【００９７】
プールチャンクサイズプログラム６０１は、プール管理テーブル６１１に、対象仮想プール４５０について、プール＃８０１（対象仮想プール４５０の識別番号を示す情報）、ＲＧ＃８０２（対象仮想プール４５０に属するＲＡＩＤグループ４００毎の識別番号を示す情報）、チャンク＃８０３（対象仮想プール４５０に属する各ＲＡＩＤグループ４００について各チャンク１３０の識別番号を示す情報）、ステータス８０４（対象仮想プール４５０に属する各ＲＡＩＤグループ４００について各チャンク１３０のステータス（初期は“空き”）を示す情報）、及び、割当先８０５（対象仮想プール４５０に属する各ＲＡＩＤグループ４００について各チャンク１３０の割当先（初期は“−”）を示す情報）を記録する（Ｓ１４０７）。
【００９８】
プールチャンクサイズプログラム６０１は、対象仮想プール４５０の構成完了を管理システム１０３に通知する（Ｓ１４０８）。
【００９９】
図１５は、グループチャンクサイズプログラム６０２が行う処理のフローを示す。図１５の説明では、一つのＲＡＩＤグループ４００を例に取る（図１５の説明において「対象ＲＡＩＤグループ４００」）。
【０１００】
グループチャンクサイズプログラム６０２は、対象ＲＡＩＤグループ４００に属する複数のＦＭドライブ１８０Ｆの各々について、下記を行う。一つのＦＭドライブ１８０Ｆを例に取る（図１５の説明において「対象ＦＭドライブ１８０Ｆ」）。
・グループチャンクサイズプログラム６０２は、対象ＦＭドライブ１８０Ｆから物理ブロックサイズを収集する（Ｓ１５０１）。具体的には、例えば、グループチャンクサイズプログラム６０２は、対象ＦＭドライブ１８０Ｆにブロックサイズ問合せを送信し、対象ＦＭドライブ１８０Ｆのブロックサイズ通知プログラム７０１から、対象ＦＭドライブ１８０ＦのＦＭサイズ管理テーブル７１１に記録されている物理ブロックサイズ１００１を示す回答を受ける。
・物理ブロックサイズが収集された場合（Ｓ１５０２：Ｙｅｓ）、グループチャンクサイズプログラム６０２は、チャンク管理テーブル６１２に、対象ＲＡＩＤグループ４００に属する対象ＦＭドライブ１８０Ｆについて、ブロックサイズ９０４（Ｓ１５０１で収集された物理ブロックサイズを示す情報）を記録する（Ｓ１５０４）。
【０１０１】
対象ＦＭドライブ１８０Ｆについて物理ブロックサイズの収集が不可の場合（Ｓ１５０２：Ｎｏ）、グループチャンクサイズプログラム６０２は、プールチャンクサイズプログラム６０１にチャンクサイズの収集不可を報告する（Ｓ１５０３）。
【０１０２】
グループチャンクサイズプログラム６０２は、チャンクサイズ＝Ｌｃｍ＿Ｂ＊ｎを算出、すなわち、Ｌｃｍ＿Ｂとｎとの積を、対象ＲＡＩＤグループ４００のチャンクサイズとして決定する（Ｓ１５０５）。「Ｌｃｍ＿Ｂ」は、対象ＲＡＩＤグループ４００に属する複数のＦＭドライブ１８０ＦについてそれぞれＳ１５０１で収集された複数の物理ブロックサイズの最小公倍数である。「ｎ」は、対象ＲＡＩＤグループ４００に属するＦＭドライブ１８０Ｆの数である。
【０１０３】
グループチャンクサイズプログラム６０２は、対象ＲＡＩＤグループ４００についてＳ１５０５で決定されたチャンクサイズをプールチャンクサイズプログラム６０１に通知する（Ｓ１５０６）。
【０１０４】
図１６は、停止指示プログラム６０３が行う処理のフローを示す。図１６の説明では、一つのＲＡＩＤグループ４００を例に取る（図１６の説明において「対象ＲＡＩＤグループ４００」）。
【０１０５】
停止指示プログラム６０３は、対象ＲＡＩＤグループ４００に属する複数のＦＭドライブ１８０Ｆの各々について、下記を行う。一つのＦＭドライブ１８０Ｆを例に取る（図１６の説明において「対象ＦＭドライブ１８０Ｆ」）。
・停止指示プログラム６０３は、対象ＦＭドライブ１８０Ｆに、データ移動処理（例えばリクラメーション処理）の停止指示を送信する（Ｓ１６０１）。その停止指示に応答して、対象ＦＭドライブ１８０Ｆのデータ移動機能（物理ブロック１６０間のデータ移動処理を行う機能）を停止する。
・停止指示プログラム６０３は、論理容量、具体的には、予備容量を含む物理容量を対象ＦＭドライブ１８０Ｆから取得する（Ｓ１６０２）。具体的には、停止指示プログラム６０３は、予備容量を含む物理容量の問合せ（公開指示）を対象ＦＭドライブ１８０Ｆに送信する。その問合せに応答して対象ＦＭドライブ１８０Ｆが、予備容量を含む物理容量を論理容量として停止指示プログラム６０３に回答する。
・停止指示プログラム６０３は、チャンク管理テーブル６１２に、対象ＦＭドライブ１８０Ｆについて、物理容量９０９（Ｓ１６０２で取得された物理容量を示す情報）を記録する（Ｓ１６０３）。
【０１０６】
停止指示プログラム６０３は、対象ＲＡＩＤグループ４００に属する複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理容量（論理容量）のうちの最小の物理容量を特定する（Ｓ１６０４）。
【０１０７】
停止指示プログラム６０３は、チャンク数＝（ＰＳｍｉｎ＊ｎ）／ＣＳｘを算出、つまり、対象ＲＡＩＤグループ４００についてのチャンク数を算出する（Ｓ１６０５）。「ＰＳｍｉｎ」は、Ｓ１６０４で特定された最小の物理容量である。「ｎ」は、対象ＲＡＩＤグループ４００に属するＦＭドライブ１８０Ｆの数である。「ＣＳｘ」は、対象ＲＡＩＤグループ４００が属する仮想プール４５０について決定されたチャンクサイズ（図１０のチャンクサイズ９０８が示すチャンクサイズ）である。
【０１０８】
停止指示プログラム６０３は、チャンク管理テーブル６１２に、対象ＲＡＩＤグループ４００について、チャンク数９１０（Ｓ１６０５で算出されたチャンク数を示す情報）を記録する（Ｓ１６０６）。
【０１０９】
図１４〜図１６の説明によれば、例えば以下のことが言える。
【０１１０】
ストレージコントローラ１２０は、下記の（ａ）乃至（ｃ）を行う。
（ａ）複数のＦＭドライブ１８０Ｆからそれぞれ複数の物理ブロックサイズを収集すること。
（ｂ）当該収集された複数の物理ブロックサイズを基にチャンクサイズを決定すること。
（ｃ）複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の論理容量（例えば予備容量を含んだ物理容量）のうちの最小の論理容量と、ＦＭドライブ１８０Ｆの数と、決定されたチャンクサイズとに基づいて、チャンクの数を決めること。
【０１１１】
なお、ここでは、複数のＲＡＩＤグループ４００（ＲＡＩＤグループ４００はドライブグループの一例）が同一の仮想プール４５０（プールの一例）に属しているため、下記が採用される。
・当該複数のＲＡＩＤグループ４００の各々について、（ａ）乃至（ｃ）が行われる。
・複数のＲＡＩＤグループ４００の各々について、（ｃ）において、上記決定されたチャンクサイズは、複数のＲＡＩＤグループ４００についてそれぞれ決定された複数のチャンクサイズに基づき当該仮想プール４５０について決定されたチャンクサイズである。
【実施例２】
【０１１２】
実施例２を説明する。その際、実施例１との相違点を主に説明し、実施例１との共通点については説明を省略又は簡略する。
【０１１３】
図１７は、実施例２におけるチャンク１３０と物理ブロック１６０との関係の一例を示す。
【０１１４】
実施例２でも、実施例１と同様に、チャンクサイズは、複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズに基づいている。但し、ＲＡＩＤグループ４００についてのチャンクサイズの決定では、複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズの最小公倍数であることが厳密に守られなくてよく、結果として、チャックサイズの柔軟性が実施例１よりも高い。
【０１１５】
具体的には、いずれかのチャンク１３０−２０に一部１７０１（例えば一部の論理ページ）だけが含まれる論理ブロック１９０Ｘが許容され、当該論理ブロック１９０Ｘの残りの部分１７０２（例えば残りの論理ページ）は、記憶領域１４０を構成するいずれのチャンク１３０にも含まれない（言い換えれば、同一の論理ブロック１９０を二つ以上のチャンク１３０が共有することが無いように複数のチャンク１３０が構成される）。残りの部分１７０２の基になる物理ページ１７０は、端数ページであり、残りの部分１７０２は、記憶領域１４０を構成するいずれのチャンク１３０にも含まれないため、端数ページにデータが格納されることがない。故に、チャンクサイズの柔軟性を高めても、リクラメーション処理の必要が生じないことを維持することができる。
【０１１６】
なお、本実施例では、例えば、ＲＡＩＤグループ４００について、所定の条件を満たすチャンクサイズ（例えば、チャンクサイズ上限以下のチャンクサイズ）が得られる場合には、当該ＲＡＩＤグループ４００に属する複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズの最小公倍数が採用されてよい。具体的には、例えば、下記が行われてよい。
・ストレージコントローラ１２０は、当該複数の物理ブロックサイズの最小公倍数を採用しても所定の条件を満たすチャンクサイズが得られるか否かを判断する。
・当該判断の結果が真の場合、ストレージコントローラ１２０は、当該最小公倍数を基にチャンクサイズ（例えば、チャンクサイズ＝（当該最小公倍数）＊（ＲＡＩＤグループ４００に属するＦＭドライブ１８０Ｆの数）＊係数β（βは任意の自然数））を決定する。
・当該判断の結果が偽の場合、ストレージコントローラ１２０は、当該複数の物理ブロックサイズのうちなるべく多くの物理ブロックサイズの最小公倍数を基にチャンクサイズ（例えば、チャンクサイズ＝（当該なるべく多くの物理ブロックサイズの最小公倍数）＊（ＲＡＩＤグループ４００に属するＦＭドライブ１８０Ｆの数）＊係数β）を決定し、いずれかのチャンクに一部だけが含まれる論理ブロックの残りの部分を、記憶領域１４０を構成するいずれのチャンク１３０にも含めない。
【実施例３】
【０１１７】
実施例３を説明する。その際、実施例１及び２の少なくとも一つとの相違点を主に説明し、実施例１及び２の少なくとも一つとの共通点については説明を省略又は簡略する。
【０１１８】
図１８は、実施例３におけるチャンクサイズ管理の一例を示す。
【０１１９】
ＲＡＩＤグループ４００についてチャンクサイズが決定された後、当該ＲＡＩＤグループ４００について少なくとも一つのＦＭドライブ１８０Ｆが交換されることがある。交換後のＦＭドライブ１８０Ｆの物理ブロックサイズが、交換前のＦＭドライブ１８０Ｆの物理ブロックサイズと同じであれば、当該ＲＡＩＤグループ４００について現在のチャンクサイズを維持することができる。しかし、それらが異なっていれば、当該現在のチャンクサイズを維持することができない可能性がある。
【０１２０】
そこで、本実施例では、ＲＡＩＤグループ４００における少なくとも一つのＦＭドライブ１８０Ｆの交換が行われる場合、ストレージコントローラ１２０は、下記を行う。
・ストレージコントローラ１２０は、交換後のＦＭドライブ１８０Ｆの物理ブロックサイズが、交換前のＦＭドライブ１８０Ｆ前の物理ブロックサイズと異なっていて、且つ、交換前のＬｃｍ＿Ｂ（ＲＡＩＤグループ４００に属する複数のＦＭドライブ１８０Ｆにそれぞれ対応した複数の物理ブロックサイズの最小公倍数）と交換後のＬｃｍ＿Ｂとの関係が当該ＲＡＩＤグループ４００の現在のチャンクサイズを維持するための所定の条件を満たす（例えば、交換前のＬｃｍ＿Ｂが交換後のＬｃｍ＿Ｂの倍数である）か否かを判断する。
・この判断の結果が真の場合、ストレージコントローラ１２０は、ＦＭドライブ１８０Ｆが交換されても現在のチャンクサイズを維持する。
・この判断の結果が偽の場合、ストレージコントローラ１２０は、当該交換を許可し（例えば当該交換の後に）チャンクサイズを変更する（例えば、図１４〜図１６を行う）、或いは、当該交換を拒否する（例えば、交換の拒否を音声で又はＬＥＤ点灯等で報知する、或いは、管理システム１０３に交換の拒否を通知する）。
【０１２１】
また、仮想プール４５０についてチャンクサイズが決定された後、当該仮想プール４５０について少なくとも一つのＲＡＩＤグループ４００が交換又は追加されることがある。交換後又は追加後のＲＡＩＤグループ４００のチャンクサイズが、交換前のＲＡＩＤグループ４００又は既存のいずれかのＲＡＩＤグループ４００のチャンクサイズと同じであれば、当該仮想プール４５０について現在のチャンクサイズを維持することができる。しかし、それらが異なっていれば、当該現在のチャンクサイズを維持することができない可能性がある。
【０１２２】
そこで、本実施例では、仮想プール４５０について少なくとも一つのＲＡＩＤグループ４００が交換又は追加される場合、ストレージコントローラ１２０は、下記を行う。
・ストレージコントローラ１２０は、交換後又は追加後のＲＡＩＤグループ４００について決定されたチャンクサイズが、交換前又は既存のＲＡＩＤグループ４００について決定されたチャンクサイズと異なっていて、且つ、交換前又は追加前のＬｃｍ＿Ｒ（仮想プール４５０に属する複数のＲＡＩＤグループ４００についてそれぞれＳ１４０１で収集された複数のチャンクサイズの最小公倍数）と交換後のＬｃｍ＿Ｒとの関係が当該仮想プール４５０の現在のチャンクサイズを維持するための所定の条件を満たす（例えば、交換前のＬｃｍ＿Ｒが交換後のＬｃｍ＿Ｒの倍数である）か否かを判断する。
・この判断の結果が真の場合、ストレージコントローラ１２０は、ＲＡＩＤグループ４００が交換又は追加されても仮想プール４５０について現在のチャンクサイズを維持する。
・この判断の結果が偽の場合、ストレージコントローラ１２０は、当該交換又は追加を許可し（例えば当該交換又は追加の後に）当該仮想プール４５０についてチャンクサイズを変更する（例えば、図１４〜図１６を行う）、或いは、当該交換又は追加を拒否する（例えば、交換又は追加の拒否を音声で又はＬＥＤ点灯等で報知する、或いは、管理システム１０３に交換又は追加の拒否を通知する）。
【０１２３】
以上のように、複数のＦＭドライブ１８０Ｆの少なくとも一つのＦＭドライブ１８０Ｆが、当該ＦＭドライブ１８０Ｆの物理ブロックサイズと異なる物理ブロックサイズのＦＭドライブ１８０Ｆに交換される場合、又は、新たに少なくとも一つ以上のＦＭドライブ１８０Ｆが追加される場合、ストレージコントローラ１２０は、下記を行う。
・ストレージコントローラ１２０は、現在のチャンクサイズを維持するか否かを判断する。
・当該判断の結果が偽の場合、ストレージコントローラ１２０は、当該交換又は当該追加を許可しチャンクサイズを変更する、或いは、当該交換又は当該追加を拒否する。
【０１２４】
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【０１２５】
例えば、ＦＭドライブ１８０Ｆの上位システムとして、ストレージコントローラ１２０以外の上位システム、例えば、ホストシステム１０２のような計算機が採用されてもよい。
【０１２６】
また、複数のＦＭドライブ１８０Ｆを有する複数のノードで構成された分散システム（例えば、冗長構成グループとしてのシステム）が採用されてもよい。上位システムは、複数のノードのうちの少なくとも一つに搭載されるシステム（例えば機能）でよい。冗長構成の例としては、Erasure Coding、ＲＡＩＮ（Redundant Array of Independent Nodes）、ノード間ミラーリング、ノードを一つのドライブとみなしたＲＡＩＤ（Redundant Array of Independent (or Inexpensive) Disks）などがあり、いずれでもよい。
【符号の説明】
【０１２７】
１００…ストレージシステム
【図１】
2020095548.tif 000003
【図２】
2020095548.tif 000004
【図３】
2020095548.tif 000005
【図４】
2020095548.tif 000006
【図５】
2020095548.tif 000007
【図６】
2020095548.tif 000008
【図７】
2020095548.tif 000009
【図８】
2020095548.tif 000010
【図９】
2020095548.tif 000011
【図１０】
2020095548.tif 000012
【図１１】
2020095548.tif 000013
【図１２】
2020095548.tif 000014
【図１３】
2020095548.tif 000015
【図１４】
2020095548.tif 000016
【図１５】
2020095548.tif 000017
【図１６】
2020095548.tif 000018
【図１７】
2020095548.tif 000019
【図１８】
2020095548.tif 000020