(57)【要約】  複数のメモリセルとストレージコントローラを含むストレージシステムであって、ストレージコントローラは複数のメモリセルに記憶すべきビット数を直接的または間接的に示すセルモード情報を管理する。セルモード情報は管理システムからのリクエストに応じて変更できる。
2013094041.tif 000002
【特許請求の範囲】
【請求項１】
ストレージコントローラと１以上の不揮発性メモリデバイスを含むストレージシステムと、
前記ストレージシステムに接続する管理システムと、で構成される計算機システムであって、
前記不揮発性メモリデバイスは、複数のメモリセルを含み、各々のメモリセルはＮビット分のデータを格納可能な半導体特性を有し、
前記ストレージコントローラは：
前記不揮発性メモリデバイスの容量又はアドレス空間を示すストレージ構成情報を格納し、
メモリセルに記憶するビット数を定めるセルモードを示すセルモード情報を格納し、
前記管理システムからセルモード変更リクエストを受信し、
当該リクエストに従って前記セルモード情報を変更し、前記ストレージ構成情報の前記容量又は前記アドレス空間を変更することで、当該リクエスト以後の前記不揮発性メモリデバイスに記憶するデータ量を増加又は減少させる、
ことを特徴とした計算機システム。
【請求項２】
請求項１記載の計算機システムであって、
メモリセルは、記憶するビット数を変更すると、メモリセルに格納したデータ関する特性が変化する、フラッシュメモリセルである、
ことを特徴とした計算機システム。
【請求項３】
請求項２記載の計算機システムであって、
メモリセルのデータ記憶は、ドレインゲートとソースゲートとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることで行い、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、最小値が含まれる第１分割レンジと、最大値を含まない分割レンジである第２分割レンジと、を使用する、
ことを特徴とした計算機システム。
【請求項４】
請求項３記載の計算機システムであって、
セルモードを前記第２のセルモードから第２のセルモードに切り替える場合、前記ストレージコントローラは、前記第１の分割レンジと前記第２の分割レンジで表されていたデータの退避を抑止しつつ、モード切替を行う、
ことを特徴とした計算機システム。
【請求項５】
請求項４記載の計算機システムであって、
前記管理システムは前記セルモード情報を表示する、ことを特徴とした計算機システム。
【請求項６】
請求項５記載の計算機システムであって、
前記ストレージシステムはＨＤＤを含み、
前記ストレージコントローラは：
前記不揮発性メモリデバイスと前記ＨＤＤとをストレージデバイスとして管理し、
前記ストレージデバイスを用いてストレージプールを定義し、前記ストレージデバイスのアドレス空間を複数のセグメントに分割して管理し、
前記ストレージプールを用いて仮想論理ユニットを計算機に提供し、
仮想ボリュームのアドレス空間を複数のチャンクに分割して管理し、当該セグメントを当該チャンクに割当て又は再割当てし、
前記セルモードは、当該セグメント毎に変更可能である、
ことを特徴とした計算機システム。
【請求項７】
請求項６記載の計算機システムであって、
前記管理システムは、前記ストレージシステムに含まれるコンポーネントについて、対応するセルモードを表示し、
前記コンポーネントは、
不揮発性メモリデバイス、
前記不揮発性メモリデバイスから構成されるパリティグループ、
前記不揮発性メモリデバイスから間接的または直接的に構成される内部論理ユニット、
前記不揮発性メモリデバイスから間接的または直接的に構成されるストレージプール、
前記不揮発性メモリデバイスから間接的または直接的に構成されるティア、又は
前記不揮発性メモリデバイスから間接的または直接的に構成される仮想内部論理ユニット、
である、
ことを特徴とした計算機システム。
【請求項８】
請求項７記載の計算機システムであって、
前記コンポーネントの容量と、
一つ以上のセルモード毎に、前記コンポーネントに含まれ、かつ当該セルモードが設定されたセグメントの容量と、
を対応付けて表示する、
ことを特徴とした計算機システム。
【請求項９】
請求項２記載の計算機システムであって、
メモリセルのデータ記憶は、ドレインゲートとソースゲートとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることで行い、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、前記レンジを第１と第２の分割レンジに分割し、当該第１と第２の分割レンジを使用する、
ことを特徴とした計算機システム。
【請求項１０】
請求項２記載の計算機システムであって、
前記特性とは、
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスに対するリード又はライトの時間が長くなる、または
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスのデータ保持可能期間が短くなる、
ことを特徴とした計算機システム。
【請求項１１】
請求項６記載の計算機システムであって、
前記ストレージコントローラは、前記不揮発性メモリデバイスを用いてパリティグループを定義し、
前記セルモードは、当該パリティグループ毎に変更可能である、
ことを特徴とした計算機システム。
【請求項１２】
請求項６記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
前記管理システムが送信したセルモード変更リクエストは、前記管理システムが：
Ｉ／Ｏ性能要件の入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏ性能要件に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１３】
請求項６記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントが処理するアクセス計測値の割合の目標値であるＩ／Ｏカバー比率、を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏカバー比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１４】
請求項６記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントの比率を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記セグメントの比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１５】
複数のメモリセルを含むストレージシステムを管理する管理システムであって、
前記管理システムは、
前記ストレージシステムの構成情報と、前記メモリセルに記憶するビット数に関係した値であるセルモードと、を格納する１つ以上の記憶資源と、
前記構成情報に基づいて前記セルモードを変換し、前記変換したセルモードを表示させる一つ以上のプロセッサと、
を有することを特徴とした計算機システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを有するストレージシステムを有する計算機システム、及びストレージシステムを管理する管理システムに関する。
【背景技術】
【０００２】
近年、フラッシュメモリのビットコストが低下しつつあることから、フラッシュメモリが、有力な記憶デバイスとなりつつある。特許文献１に記載の技術では、不揮発性メモリの一つであるフラッシュメモリを用いたＨＤＤ（ハードディスクドライブ）の代替装置について開示している。【０００３】
より具体的には、特許文献１の代替装置は、１メモリセルにつき２ビット記憶可能なメモリセルを含む２値フラッシュメモリと揮発性メモリを含む。揮発性メモリは、２値フラッシュメモリのキャッシュメモリとして機能する。電源遮断時は、代替装置は揮発性メモリの記憶内容を多値フラッシュメモリに退避する。この時、代替装置は１メモリセルに対して１ビットのデータのみ書き込むことで、書き込み時の消費電力量を削減する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２８９０１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の代替装置はＨＤＤの代わりとしてストレージシステムに接続するものの、ストレージシステム導入後にメモリセルに記憶するビット数を柔軟に変化することができず、柔軟なストレージシステムを提供できない。また、このような柔軟なストレージシステムを管理することもできない。
【課題を解決するための手段】
【０００６】
複数のメモリセルとストレージコントローラを含むストレージシステムであって、ストレージコントローラは複数のメモリセルに記憶すべきビット数を直接的または間接的に示すセルモード情報を管理する。セルモード情報は管理システムからのリクエストに応じて変更できる。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１実施例に係る計算機システムの構成例を示す図である。
【図２】図２は、第１実施例に係るＦＭＤの構成例を示す図である。
【図３】図３は、第１実施例の概要の一例を示す図である。
【図４】図４は、第１実施例に係るストレージシステムとホストの構成例を示す図である。
【図５】図５は、第１実施例に係るＳＤＥＶ情報の一例を示す図である。
【図６】図６は、第１実施例に係るＰＧ構成情報の一例を示す図である。
【図７】図７は、第１実施例に係る内部ＬＵ構成情報の一例を示す図である。
【図８】図８は、第１実施例に係るＦＭＤと、ＲＡＩＤを組んだＳＤＥＶとのアドレス空間の関係の一例を示す第１の図である。
【図９】図９は、第１実施例に係るＦＭＤと、ＲＡＩＤを組んだＳＤＥＶとのアドレス空間の関係の一例を示す第２の図である。
【図１０】図１０は、第１実施例に係るプール情報の一例を示す図である。
【図１１】図１１は、第１実施例に係るＶＬ変換情報の一例を示す図である。
【図１２】図１２は、第１実施例に係るセルモード情報の一例を示す図である。
【図１３】図１３は、第１実施例に係るＬＵパス情報の一例を示す図である。
【図１４】図１４は、第１実施例に係るＰＧ作成処理の一例のフローチャートである。
【図１５】図１５は、第１実施例に係る内部ＬＵ作成処理の一例のフローチャートである。
【図１６】図１６は、第１実施例に係るパス定義処理の一例のフローチャートである。
【図１７】図１７は、第１実施例に係るライト処理の一例のフローチャートである。
【図１８】図１８は、第１実施例に係るリード処理の一例のフローチャートである。
【図１９】図１９は、第１実施例に係るデータ移動処理の一例のフローチャートである。
【図２０】図２０は、第１実施例に係るＬＵからＦＭＣまでのアドレス空間の関係の一例を示す図である。
【図２１】図２１は、第１実施例に係る管理側プール情報の一例を示す図である。
【図２２】図２２は、第１実施例に係る管理側ＶＬ変換情報の一例を示す図である。
【図２３】図２３は、第１実施例に係る管理側セルモード情報の一例を示す図である。
【図２４】図２４は、第１実施例に係る管理サーバの構成例を示す図である。
【図２５】図２５は、第１実施例に係る管理側ＳＤＥＶ情報の一例を示す図である。
【図２６】図２６は、第１実施例に係る管理側ＰＧ構成情報の一例を示す図である。
【図２７】図２７は、第１実施例に係る管理側内部ＬＵ構成情報の一例を示す図である。
【図２８】図２８は、第１実施例に係る管理側ＬＵパス情報の一例を示す図である。
【図２９】図２９は、第１実施例に係るストレージプール作成、更新処理の一例のフローチャートである。
【図３０】図３０は、第１実施例に係る仮想内部ＬＵ作成処理の一例のフローチャートである。
【図３１】図３１は、第１実施例に係るライト時のセルモード情報更新処理の一例のフローチャートである。
【図３２】図３２は、第１実施例に係るセルモード変更処理受付時のセルモード情報変更処理の一例のフローチャートである。
【図３３】図３３は、第１実施例に係るティア情報を設定する処理の一例のフローチャートである。
【図３４】図３４は、第１実施例に係るセグメント単位の階層管理の概要を示す図である。
【図３５】図３５は、第１実施例に係るセグメント単位で移動する対象を判断する処理の一例のフローチャートである。
【図３６】図３６は、第１実施例に係るセルモードを考慮したセグメント単位の階層管理の概要を示す図である。
【図３７】図３７は、第１実施例に係るセルモード変更量判断処理の一例のフローチャートである。
【図３８】図３８は、第１実施例に係るＬＳＢ／ＭＳＢ両方利用可能なセルをＬＳＢのみ利用可能なセルに変更するセル変更処理の一例の第１のフローチャートである。
【図３９】図３９は、第１実施例に係るＬＳＢ／ＭＳＢ両方利用可能なセルをＬＳＢのみ利用可能なセルに変更するセル変更処理の一例の第２のフローチャートである。
【図４０】図４０は、第１実施例に係るＬＳＢのみ利用可能なセルをＬＳＢ／ＭＳＢ両方利用可能なセルに変更するセル変更処理の一例のフローチャートである。
【図４１】図４１は、第１実施例に係るストレージプール詳細を示すＧＵＩの一例を示す図である。
【図４２】図４２は、第１実施例に係るティア詳細を示すＧＵＩの一例を示す図である。
【図４３】図４３は、第１実施例に係る仮想内部ＬＵ詳細を示すＧＵＩの一例を示す図である。
【図４４】図４４は、第２実施例に係るＩ／Ｏカバー比率を考慮したセルモード変更処理の一例のフローチャートである。
【図４５】図４５は、第３実施例に係る管理サーバの構成例を示す図である。
【図４６】図４６は、第１実施例に係るパリティグループ詳細を示すＧＵＩの一例を示す図である。
【図４７】図４７は、第１実施例に係る内部ＬＵ詳細を示すＧＵＩの一例を示す図である。
【図４８】図４８は、第１実施例に係るＦＭＤ詳細を示すＧＵＩの一例を示す図である。
【図４９】図４９は、第３実施例に係る容量課金チェック処理の一例のフローチャートである。
【図５０】図５０は、第２実施例に係るＩ／Ｏヒストグラムを表示するＧＵＩの一例を示す図である。
【図５１】図５１は、第１実施例に係るＡＰ性能要件情報の一例を示す図である。
【図５２】図５２は、第１実施例に係るセグメント割当傾向情報の一例を示す図である。
【図５３】図５３は、第１実施例に係るティア管理情報の一例を示す図である。
【図５４】図５４は、第３実施例に係る課金情報の一例を示す図である。
【図５５】図５５は、第１実施例に係るＦＭセルのセル構造を示す図である。
【図５６】図５６は、第１実施例に係るＦＭセルのセルイレースを説明する図である。
【図５７】図５７は、第１実施例に係るＦＭセルのセルプログラミングを説明する図である。
【図５８】図５８は、第１実施例に係るＦＭセルのセルリードを説明する図である。
【図５９】図５９は、第１実施例に係るＦＭセルで１ビットのみ記憶する場合の閾値電圧の分布を示す図である。
【図６０】図６０は、第１実施例に係るＦＭセルで２ビット記憶する場合の閾値電圧の分布を示す図である。
【図６１】図６１は、第１実施例に係るＦＭセルでセルプログラミングとセルイレース過多による閾値電圧の時間経過による降下を説明する図である。
【図６２】図６２は、第１実施例に係るＦＭセルのＬＳＢ及びＭＳＢと、ＦＭＤのＬＵＮ毎のブロックアドレス空間との関係の一例を示す図である。
【図６３】図６３は、第１実施例に係るリード処理の一例のフローチャートである。
【図６４】図６４は、第１実施例に係るライト処理の一例の第１のフローチャートである。
【図６５】図６５は、第１実施例に係るライト処理の一例の第２のフローチャートである。
【図６６】図６６は、第４実施例を示す図である。
【発明を実施するための形態】
【０００８】
幾つかの実施例を、図面を参照して説明する。なお、以下に説明する実施例は特許請求の範囲にかかる発明を限定するものではなく、また実施例の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００９】
なお、以後の説明では「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等の表現にて情報を説明するが、これら情報は必ずしもテーブル、リスト、ＤＢ、キュー、等のデータ構造以外で表現されていてもよい。そのため、データ構造に依存しないことを示すために「ａａａテーブル」、「ａａａリスト」、「ａａａＤＢ」、「ａａａキュー」等について「ａａａ情報」と呼ぶことがある。さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いるが、これらについてはお互いに置換が可能である。さらに、データ内容を示すために「情報」という表現を用いているが、他の表現形式であってもよい。
【００１０】
また、以後の説明では「プログラム」を主語として説明を行う場合があるが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（Ｉ／Ｏポート等）を用いながら行うため、プロセッサ或いはプロセッサを有する制御デバイスを主語とした説明としてもよい。また、プログラム或いは制御デバイスを主語として開示された処理は管理サーバ又はストレージシステム等の計算機、情報処理装置が行う処理としてもよい。また、制御デバイスは、プロセッサに代えて又は加えて、一部または全ての処理を行う専用ハードウェアを有してもよい。また、各種プログラムは、プログラム配布サーバ或いは記憶メディアから計算機にインストールされてもよい。
【００１１】
なお、不揮発性メモリの「不揮発」とは、通常の意味通り、いかなる場合でも記憶内容を保持することや、永久に記憶内容を保持できることを指すのではなく、電源供給されない場合でも相応の期間（例えば１年から数年等）、記憶内容を保持できることを意味する。本実施例においては不揮発性メモリとしてフラッシュメモリを例に取るが、製造時に複数のビット数を記憶可能なメモリセルを有するメモリであれば他種のメモリ（例えばＰＲＡＭ（Phase change Random Access Memory、ＭＲＡＭ（Magnetoresistive
Random Access Memory）等）であってもよい。
【００１２】
また、制御デバイス（及びその制御デバイスを有する計算機）の「表示する」という行為は、制御デバイスが、その制御デバイスを有する計算機の表示デバイスに画面部品等を表示する行為と、表示デバイスを有する上記第２の計算機に、その表示デバイスに表示される画面部品等の表示用情報を送信する行為のいずれであっても良い。第２の計算機は、表示用情報を受信した場合、その表示用情報が表す画面部品等を表示デバイスに表示することができる。
【実施例１】
【００１３】
以下、図面を参照して、第１実施例について説明する。【００１４】
＜１．情報システムの構成＞。【００１５】
図１は、第１実施例に係る計算機システムの構成例を示す図である。【００１６】
計算機システムは、例えば、ストレージシステム１０００及び管理サーバ１２００を含む。ストレージシステム１０００が、ホストコンピュータ（以後ホストと省略する）１１００から送信されたＩ／Ｏリクエスト（ライトリクエスト及びリードリクエスト）を受ける。ホスト１１００及び管理サーバ１２００の数は、それぞれ、１以上とすることができる。ストレージシステム１０００とホスト１１００とは、Ｉ／Ｏネットワーク１３００を介して、相互に接続される。ストレージシステム１０００と管理サーバ１２００及びホスト１１００は、管理ネットワーク（図示せず）またはＩ／Ｏネットワーク１３００を介して、相互に接続される。【００１７】
ホスト１１００は、ホスト内部ネットワーク１１０４（例えばバス）を有している。ホスト内部ネットワーク１１０４に、プロセッサ（図中ではＰｒｏｃと略記）１１０１と、メモリ（図中ではＭｅｍと略記）１１０２と、Ｉ／Ｏポート（図中ではＩ／Ｏ  Ｐと略記）１１０３とが接続されている。【００１８】
管理サーバ１２００は、管理サーバ内部ネットワーク１２０４（例えばバス）を有している。管理サーバ内部ネットワーク１２０４に、プロセッサ（図中ではＰｒｏｃと略記）１２０１と、記憶資源１２１０と、管理ポート（図中ではＭ  Ｐと略記）１２０３と、入出力装置１２０５（図中ではＩ／Ｏデバイスと略記）とが接続されている。なお、記憶資源１２１０は、半導体メモリ又はＨＤＤ、及びこれら組み合わせであることが考えられるが、情報及びプログラムを記憶できるのであれば他のデバイスでもよい。入出力装置１２０５としては、例えば、ディスプレイと、キーボードと、ポインタデバイスとが考えられるが、これ以外の装置であってもよい。また、入出力装置１２０５の代替として、シリアルインターフェースやイーサーネットインターフェースを入出力装置とし、当該インターフェースにディスプレイ又はキーボード又はポインタデバイスを含む表示用計算機を接続し、表示用情報を表示用計算機に送信したり、入力用情報を表示用計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入出力装置での入力及び表示を代替してもよい。【００１９】
また、管理サーバ１２００は、管理操作リクエストを、ユーザ（例えば管理サーバ１２００のオペレーター、単に管理者と呼ぶこともある）から受付け、その受け付けた管理操作リクエストを、ストレージシステム１０００に送信することができる。管理操作リクエストは、ストレージシステム１０００の操作のためのリクエストであり、例えば、パリティグループ作成リクエスト、内部ＬＵ作成リクエスト、パス定義リクエスト、プール定義リクエスト、仮想内部ＬＵ作成リクエスト、セルモード設定リクエスト、及びデータ移動リクエストがある。それぞれのリクエストについては、後述する。【００２０】
以後、計算機システム内のストレージシステムを管理し、表示用情報を表示する一つ以上の計算機の集合を管理システムと呼ぶことがある。管理サーバ１２００が表示用情報を表示する場合は管理サーバ１２００が管理システムである、また、管理サーバ１２００と表示用計算機の組み合わせも管理システムである。また、管理処理の高速化や高信頼化のために複数の計算機で管理計算機と同等の処理を実現してもよく、この場合は当該複数の計算機（表示を表示用計算機が行う場合は表示用計算機も含め）が管理システムである。【００２１】
Ｉ／Ｏネットワーク１３００は、ファイバーチャネルによる接続が第一に考えられるが、それ以外でも、ＦＩＣＯＮ（ＦＩｂｒｅ  ＣＯＮｎｅｃｔｉｏｎ：登録商標）やＥｔｈｅｒｎｅｔ（登録商標）とＴＣＰ／ＩＰとｉＳＣＳＩの組み合わせや、ＥｔｈｅｒｎｅｔとＮＦＳ（Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）やＣＩＦＳ（Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等のネットワークファイルシステムの組み合わせ等が考えられる。さらに、Ｉ／Ｏネットワーク１３００は、Ｉ／Ｏリクエストを転送可能な通信ネットワークであればこれ以外でもよい。また、Ｉ／Ｏネットワーク１３００と管理ネットワークは同じネットワークであってもよい。【００２２】
ストレージシステム１０００は、コントローラ（図中はＣＴＬと表記）１０１０と、キャッシュメモリ（図中はＣａｃｈｅ／Ｓｈａｒｅｄ  Ｍｅｍと表記）１０２０と、複数のフラッシュメモリデバイス（Ｆｌａｓｈ  Ｍｅｍｏｒｙ  Ｄｅｖｉｃｅ：以後ＦＭＤと省略することがある）１０３０とを含む。なお、ストレージシステム１０００は、複数のＨＤＤ１０４０を含んでも良い。なお、以後の説明ではＦＭＤ１０３０とＨＤＤ１０４０とを区別しないで総称する場合は記憶デバイスまたはＳＤＥＶと呼ぶ。【００２３】
好ましい形態としては、ストレージコントローラ１０１０及びキャッシュメモリ１０２０は、それぞれ複数のコンポーネントから構成することが考えられる。なぜなら、コンポーネント単体に障害が発生して閉塞した（利用不可能となったことを指す）場合でも、残りのコンポーネントを用いてリードやライトに代表されるＩ／Ｏリクエストを引き続き受けることができるためである。ただし、ストレージコントローラ１０１０及びキャッシュメモリ１０２０の少なくとも一方は、必ずしも複数コンポーネントで構成されなくても良い。【００２４】
ストレージコントローラ１０１０は、ストレージシステム１０００の動作を制御する装置（例えば回路基板）である。ストレージコントローラ１０１０は、内部ネットワーク１０１６を含む。内部ネットワーク１０１６には、Ｉ／Ｏポート１０１３、キャッシュポート（図中ではＣ  Ｐと表記）１０１５、管理ポート（図中ではＭ  Ｐと表記）１０１６、バックエンドポート（図中ではＢ／Ｅ  Ｐと表記）１０１４、プロセッサ（例えばＣＰＵ）１０１１及びメモリ１０１２が接続されている。ストレージコントローラ１０１０同士とキャッシュメモリ１０２０は、ストレージ内部ネットワーク１０５０にて相互に接続される。また、ストレージコントローラ１０１０と、各ＦＭＤ１０３０及び各ＨＤＤ１０４０とは、複数のバックエンドネットワーク１０４０にて相互接続される。なお、バックエンドネットワーク１０４０として、Ｉ／Ｏネットワーク１３００で紹介した接続媒体及びプロトコルを採用してもよいが、ＳＡＳ、ＳＡＴＡ、またはＰＣＩ−Ｅｘｐｒｅｓｓ等の他の媒体及びプロトコルであってもよい。【００２５】
なお、ホスト１１００及びストレージシステム１０００の内部のネットワークは、好ましくは、Ｉ／Ｏポート１０１３の含む転送帯域より広帯域であり、また、バスやスイッチ型のネットワークによって全てまた一部が代替されてもよい。また、図１では、Ｉ／Ｏポート１０１３は、ストレージコントローラ１０１０に一つ存在することになっているが、実際には、複数のＩ／Ｏポート１０１３がストレージコントローラ１０１０に存在してもよい。【００２６】
以上のハードウェア構成によって、ストレージシステム１０００のＦＭＤ１０３０又はＨＤＤ１０４０に保存された全てまたは一部のデータを、ホスト１１００が読出したり、書き込んだりすることができ、管理サーバ１２００が計算機システムを管理できるようになる。【００２７】
図２は、第１実施例に係るＦＭＤの構成例を示す図である。【００２８】
ＦＭＤ１０３０は、Ｉ／Ｏポート２０３０と、ＦＭＤコントローラ２０１０と、複数のＦＭＣ（フラッシュメモリチップ）２０２０とを含む。Ｉ／Ｏポート２０３０は、バックエンドネットワーク１０４０と、ＦＭＤコントローラ２０１０とに接続される。ＦＭＤコントローラ２０１０は、複数のＦＭＣ２０２０に接続される。ＦＭＣ２０２０は、複数のフラッシュメモリセル（ＦＭセル：図中ではＣｅｌｌと表記）を含む。【００２９】
なお、好ましくは、ＦＭＤ１０３０は、複数のＩ／Ｏポート２０３０を含む。なぜならば、バックエンドネットワーク１０４０が冗長化されているために、冗長化された各々のバックエンドネットワーク１０４０とＦＭＤ１０３０とが独立の部品で接続されたほうが冗長性維持のためには望ましいからである。しかし、ＦＭＤ１０３０は１つのＩ／Ｏポート２０３０であっても良い。【００３０】
＜１．１．  フラッシュメモリの概要＞。【００３１】
本章では、ＦＭＣ２０２０に複数含まれるＦＭセルについて説明する。【００３２】
＜１．１．２．  ＦＭセルの説明＞。【００３３】
図５５は、第１実施例に係るＦＭセルのセル構造を示す図である。【００３４】
ＦＭセルは、ｐ型半導体であるシリコン基板５５０１と、ｎ型半導体（ソース）５５０２と、他のｎ型半導体（ドレイン）５５０３と、トンネル酸化膜５５０４と、フローティングゲート５５０５と、酸化膜５５０６と、コントロールゲート５５０７とを含む。フローティングゲート５５０５は、トンネル酸化膜５５０４と、酸化膜５５０６とにより絶縁された構造である。フローティングゲート５５０５は、後述するセルプログラミング操作によってトンネル効果を生み出すことで、電子を蓄積できる。また、フローティングゲート５５０５は、後述するセルイレース操作によって、トンネル効果を生み出すことで蓄積した電子を解放する。なお、トンネル酸化膜５５０４は、劣化が進むと絶縁能力が低下するため、時間的経過とともにフローティングゲート５５０５に蓄積された電子が漏れる。この劣化を進める原因の一つがセルプログラミングとセルイレースとの繰り返しである。【００３５】
＜１．１．３．  セルイレース操作＞。【００３６】
図５６は、第１実施例に係るＦＭセルのセルイレースを説明する図である。【００３７】
セルイレース操作は、フローティングゲート５５０５に蓄積された電子を解放する操作である。この操作は、コントロールゲート５５０７にグランド電圧、ドレイン５５０３、ソース５５０２、及びシリコン基板５５０１に、所定の電圧（Ｖｅ）を加えることで実現される。なお、ドレイン５５０３、ソース５５０２、及びシリコン基板５５０１のそれぞれの電圧Ｖｅは、微細な視点で同じ電圧でなければならないわけではない。なお、セルイレース操作の単位が、セルプログラミング操作やセルリード操作の単位より大きい典型的な理由は、ＦＭＣ２０２０の構造をシンプルにすることで実装密度を上げるためである。【００３８】
＜１．１．４．  セルプログラミング操作＞。【００３９】
図５７は、第１実施例に係るＦＭセルのセルプログラミングを説明する図である。【００４０】
セルプログラミング操作は、フローティングゲート５５０５に、電子を蓄積させる操作である。この操作は、ドレイン５５０３、ソース５５０２、シリコン基板５５０１にグランド電圧を加え、コントロールゲート５５０７に所定の電圧（Ｖｐｇｍ）を加えることで実現される。なお、ドレイン５５０３、ソース５５０２、シリコン基板５５０１に加えるグランド電圧が微細に異なってもよい。【００４１】
＜１．１．５．  セルリード操作＞。【００４２】
図５８は、第１実施例に係るＦＭセルのセルリードを説明する図である。【００４３】
セルリード操作は、ドレイン５５０３からソース５５０２への電流Ｉｄｓの有無によって、フローティングゲート５５０５に蓄積された電子蓄積の有無（より正確には蓄積した電子の量）を測る（センスする）操作である。この操作は、コントロールゲート５５０７に所定の電圧（Ｖｒｅａｄ）を加えることで、ドレイン＝ソース間を流れる電流Ｉｄｓを測ること（電流が所定量流れたか否か確認すること）で実現される。【００４４】
＜１．１．６．閾値電圧と各操作について＞。【００４５】
ここで、ドレイン＝ソース間に電流が流れない状態から所定の電流量だけ電流が流れる状態に変化するＶｒｅａｄを閾値電圧（Ｖｔｈ）と呼ぶ。閾値電圧はフローティングゲート５５０５に蓄積された電子の量に関係し、フローティングゲート５５０５に蓄積された電子の量が多いほど、閾値電圧は高くなる。閾値電圧の定義の通り、閾値電圧より高い電圧をＶｒｅａｄとしてもＩｄｓは流れる。【００４６】
しかし、セルプログラミング及びセルイレース操作の基となるトンネル効果は確率的に発生する現象であり、また個々のＦＭセルの個体差もあることから、フローティングゲート５５０５に蓄積または解放する電子の量は簡単に制御できない。そのため、実際のセルプログラミング操作では、電圧Ｖｐｇｍを加えた後に閾値電圧を確認することを繰り返して、セルリード操作の際の閾値電圧が事前に定められた境界電圧Ｖｒａより高くなるように、Ｖｐｇｍの大きさ及び加圧期間を調整する。【００４７】
なお、境界電圧Ｖｒａは、セルイレースされたＦＭセルの閾値電圧より高くなければならない。なぜならばセルイレース後のＦＭセルの閾値電圧が境界電圧Ｖｒａより高いことがあれば、そのＦＭセルはセルプログラミングされたものと間違えられてしまうからである。【００４８】
＜１．１．７．  １ＦＭセルに複数ビット記憶する場合＞。【００４９】
１つのＦＭセルに２ビット記憶する場合、フローティングゲート５５０５に蓄積される電子の量をセルイレース直後の状態を含めて４状態にコントロールする。その上で、セルリード操作時の閾値電圧として境界電圧Ｖｒａ、Ｖｒｂ、Ｖｒｃを加えてＩｄｓを測る。そのために、ＦＭセルは、境界電圧Ｖｒａ未満の閾値電圧であるイレース直後の第１状態、境界電圧Ｖｒａより高くかつＶｒｂより低い閾値電圧となるようにセルプログラミングされた第２状態、境界電圧Ｖｒｂより高くかつＶｒｃより低い閾値電圧となるようにセルプログラミングされた第３状態、境界電圧Ｖｒｃより高い閾値電圧となるようにセルプログラミングされた第４状態を取りうる。ここでイレース直後の第１状態が示す２ビット値を”１１”、第２状態が示すビット値を”１０”、第３状態が示すビット値を”００”、第４状態が示すビット値を”０１”とする。なお、セルの各状態が示すビット値と、上位装置（ストレージコントローラ１０１０等）がセルに書き込むデータのビット値とは、同じであってもよく、また、各ビットの値を反転させたものであってもよく、いずれかに統一されていればよい。すなわち、上位装置が書き込むデータが“１０”の場合に、セルには、そのまま“１０”として書き込むようにしてもよく、また、上位装置が書き込むデータが“１０”の場合に、セルには、各ビットの“１”と“０”とを反転させた“０１”を書き込むようにしてもよい。【００５０】
図６０は、第１実施例に係るＦＭセルで２ビット記憶する場合の閾値電圧の分布を示す図である。【００５１】
セルイレース後の”１１”状態から、ＦＭセルの低位ビット（ＬＳＢ：Least significant bit）を”０”にする場合は、セルプログラミング操作によってＦＭセルの閾値電圧はＶｒａより高く、Ｖｒｂより低くなるようにコントロールされる。その結果、ＦＭセルは”１０”状態となる。【００５２】
ＦＭセルの高位ビット（ＭＳＢ：Most
significant bit）のセルプログラミングは、ＬＳＢのセルプログラミングの後に実施する。ＬＳＢの状態が”０”の状態からさらに高位ビット（ＭＳＢ）を”０”（即ち”００”）にする場合は、セルプログラミング操作によってＦＭセルの閾値電圧は”００”の分布の範囲内（即ちＶｒｂより高く、Ｖｒｃより低く）となるようにコントロールされる。同様にＬＳＢの状態が”１”からＭＳＢだけ”０”
（即ち”０１”）にする場合は、セルプログラミング操作によってＦＭセルの閾値電圧は”０１”の分布の範囲内（即ちＶｒｃより高く）となるようにコントロールされる。なお、ＭＳＢを”０”にした後にＬＳＢを”０”にするためには、セルイレース操作が必要となる。【００５３】
このような状態のＦＭセルからＭＳＢをセルリードする場合、コントロールゲート５５０７に加える電圧ＶｒｅａｄをＶｒｂとした場合の電流Ｉｄｓを測ることで、ＦＭセルが”１１”または”１０”といったＭＳＢが”１”であるのか、またはＦＭセルが”０１”または”００”といったＭＳＢが”０”であるのかを確認する。また、ＦＭセルからＬＳＢをセルリードする場合は、コントロールゲート５５０７に加える電圧Ｖｒｅａｄを電圧Ｖｒｃとした場合と、電圧Ｖｒａとした場合との電流Ｉｄｓを測り、その測定結果により確認する。即ち、コントロールゲート５５０７に加える電圧ＶｒｅａｄをＶｒｃとした場合の電流ＩｄｓをＩｄｓｃ、電圧ＶｒｅａｄをＶｒａとした場合の電流ＩｄｓをＩｄｓａとすると、まず電圧ＶｒｅａｄをＶｒａとして、電流Ｉｄｓａが流れると、ＦＭセルが”１１”であると判断し、ＬＳＢが”１”であるとする。さらにＶｒｅａｄをＶｒｃとし、Ｉｄｓｃが流れなければＦＭセルが”０１”であると判断し、ＬＳＢが”１”であるとし、Ｉｄｓｃが流れればＦＭセルが”００”または”１０”であると判断し、ＬＳＢが”０”であるとする。【００５４】
＜１．１．８．  ＦＭセルの劣化＞。【００５５】
各状態における閾値電圧分布と境界電圧Ｖｒａ、Ｖｒｂ、Ｖｒｃとの電圧マージンは、ＦＭセルに記憶した２ビット値を誤って検出しないために必要である。しかし、ＦＭセルの劣化が進んだ場合、セルプログラミング当初は、図６０に示すような閾値電圧分布であったものが、時間経過に伴って、図６１に示すように、一部の分布は境界電圧を下回ることになる（例えばＶｒｃ）。なお、１つのＦＭセルに１ビット記憶する場合は、ＦＭの閾値電圧の分布を、図５９に示すように電圧マージンを多めに取ることが出来るため、ＦＭセルの劣化に強い。一方で、１つのＦＭセルに３ビット以上記憶する場合は、閾値電圧の分布がより過密になって電圧マージンが狭くなるため、ＦＭセルの劣化に弱い。なお、ＦＭＣ２０２０に供給する電圧を上げると１つのＦＭセルに複数ビット記憶する場合でも電圧マージンを大きくとることができるが、この場合は消費電力や高電圧を取り扱うための回路設計に注意を払う必要がある。【００５６】
＜１．１．９．  ＬＳＢのみ記憶する場合＞。【００５７】
ＦＭセルの劣化に伴った閾値電圧の低下量は、元々の閾値電圧が高いものほど大きくなる傾向にある。そのため、１つのＦＭセル当りに２ビット記憶可能であったとしても、ＬＳＢにのみ記憶させることでセルの劣化に強くなる場合がある。また、ＭＳＢのセルプログラミング操作を行う場合、前述の閾値電圧の繰り返し確認操作が必要になるため、セルプログラミング時間が長くなる傾向にある。そのため、ＬＳＢのみ記憶することでセルプログラミング時間が短くなる。【００５８】
＜１．１．１０．  １ビット記憶に切り替える場合＞。【００５９】
前述の通り、１つのＦＭセルに１ビット記憶する場合は、ＦＭセルの閾値電圧の分布を図５９のように電圧マージンを多めに取ることが出来るため、ＦＭセルの劣化に強い。また、セルプログラミング操作についても１つのＦＭセルに２ビット記憶する場合と比較して短時間で操作が完了する傾向にある。なぜならば、状態”０”の閾値分布の幅は２ビット記憶する場合と比べて広くしても十分電圧マージンがあるため、セルプログラミング操作におけるＶｐｇｍの大きさ及び加圧期間を粗くしてもよく、そして閾値電圧の確認回数も削減してもよいからである。【００６０】
このようにＦＭセルを用いてＮビットを記憶する場合は、閾値電圧の最小値と最大値とで定義されるレンジを２のＮ乗のサブレンジに分割し、ＦＭＤコントローラは、全てのサブレンジを用いてＮビット分の状態を記憶させ、そして、記憶していたＮビットの情報を読み取る。なお、境界電圧は、サブレンジの境目に相当する電圧であるが、サブレンジ同士の間は、必ずしも隣接していなくてもよい。なお、閾値電圧の最小値とは、セルイレース後の境界電圧と同じか小さい電圧であり、閾値電圧の最大値とは、ＦＭセルの閾値電圧が取り得る最大値であることが考えられる。しかし、これらの値の少なくとも１つは、ＦＭＤコントローラにとって好適な値であれば、他の値を最小値及び／又は最大値としてもよい。【００６１】
なお、製造段階で１つのセルにＮ（２以上）ビット記憶することを想定していたとしても、そこに記憶するビット数をＮより小さくすることで、セルの記憶特性（例えば、書き込み速度、読み込み速度、ＦＭセルの劣化に対する耐久性を含めた信頼性）が変化することを示した。サブレンジの視点で信頼性を説明すれば、１ビット記憶する場合のほうがセルプログラミング時点で目標とする閾値電圧のサブレンジよりとセルリード時点のサブレンジを大きくできるため、データ消失耐性が高くなると言える。【００６２】
以後の説明では、不揮発性メモリのセルに記憶させるビット数を定める状態としてセルモードという言葉を導入する。１つのセルに２ビット記憶できる場合（Ｎが２の場合）、セルモードは２つ（１ビット記憶モード及び２ビット記憶モード）である。１つのセルに３ビット記憶できる場合（Ｎが３の場合）は、セルモードは３つ（１ビット記憶モード、２ビット記憶モード、及び３ビット記憶モード）であることが考えられるが、１つのセルモードに複数の記憶ビット数を対応させてもよい（例えば、第１セルモードは１ビット記憶モードであり、第２セルモードは２または３ビット記憶モード）。【００６３】
なお、以上は不揮発性メモリの一つであるフラッシュメモリを用いて説明したが、ＰＲＡＭ、ＭＲＡＭのセルについても何らかの操作で変更可能であり、その後保持可能な所定の観測量を、複数のサブレンジに分割している点ではＦＭと同様である。【００６４】
＜１．１．１１．  ＦＭＣにおける各操作の単位＞。【００６５】
ＦＭＣ２０２０は、複数のＦＭセルに対してまとめてセルリード操作及びセルプログラム操作を許す。このセルリード及びセルプログラムするバイトサイズをページサイズと呼ぶ。例えば、ページサイズが４１９２バイト（データ４０９６バイト＋冗長コード９６バイト）で１バイトが８ビットであれば、１ページに含まれるＦＭセルの数は３３５３６となる。なお、セルリード操作は、ページアドレスとリード対象ビットとしてＬＳＢまたはＭＳＢを指定する。セルプログラム操作は、ページアドレスとプログラム対象ビットとしてＬＳＢまたはＭＳＢを指定し、その後ページサイズのデータをＦＭＣ２０２０は受信し、指定されたページに含まれるＦＭセルに格納する。なお、セルプログラム操作のほかの実現例としては、ＦＭＣ２０２０はページアドレスとページサイズのデータを受信してもよい。この場合、もしＬＳＢのみのプログラミングをするのであれば、”１０”状態になるようなデータが渡されればよく、もし、ＭＳＢのみをプログラミングするのであれば、現在のセルが”１１”であるか”１０”であるかで記憶済みのＬＳＢが判断され、その上で”０１”（”１１”だった場合）又は”００”（”１０”だった場合）になるようなデータが渡されればよい。【００６６】
ＦＭＣ２０２０は、所定の数のページを単位としてセルイレース操作を許す。このセルイレースの単位をイレースブロックと呼ぶ。なお、セルイレース操作は、イレースブロックアドレスを指定する。そのため、ＦＭＤコントローラ２０１０は、ライトの場合はセルプログラム操作と必要に応じてセルイレース操作を行う。【００６７】
＜２．  本実施例の概要＞。【００６８】
本実施例の概要を説明する。【００６９】
図３は、第１実施例の概要を示す図である。なお、図３は概要説明用の図であるため、後述する実施例の具体的説明と表記が必ずしも一致するとは限らない。また本概要を含め、以後の説明では、セルモードとして図６０のような（１）ＬＳＢのみリードライト対象とする第１モード、（２）ＬＳＢ／ＭＳＢの両方をリードライト対象とする第２モードについて説明する。しかし、本実施例は、図５９のようなビット記憶を行うセルモードにも適用できることは言うまでもない。また、以後の説明は、１つのＦＭセルに３ビット以上記憶させる場合にも適用できる。【００７０】
ストレージシステム１０００が、ＦＭＤ１０３０を有しており、ＦＭＤ１０３０に対して、異なるセルモード（ＬＳＢのみリードライト実行、又はＬＳＢ／ＭＳＢ両方にリードライト実行）で情報を記録又は参照する。さらに、ストレージシステム１０００は、このセルモードの設定情報（モード情報）と、記憶特性に関する情報をセルモード情報４０９０に格納し、ＦＭＤ１０３０の管理に利用する。また、管理サーバ１２００は、ストレージシステム１０００からセルモード情報４０９０を受信し、管理側セルモード情報１２０９０に保持し、ＧＵＩやＣＬＩ等により、セルモードを表示し、セルモード変更リクエストを受け付け、ストレージコントローラ１０１０へセルモード変更リクエストを送信することにより、セルモード情報を利用してＦＭＤ１０３０を有するストレージシステム１０００を管理する。このようにすることで、管理者は、ＦＭＤ１０３０の容量効率と容量以外の特性（例えば、前述のようなライト時間、ＦＭセル劣化に伴うデータ保持期間）を踏まえてストレージシステムを柔軟に利用することができる。【００７１】
さらに、管理サーバ１２００は、アプリケーションの性能要件やアクセス測定値に応じて、ＬＵ１０７０もしくは仮想ＬＵ１０９０の実記憶領域として利用されるＦＭＤ１０３０に関して、ＬＳＢのみ利用可能なＦＭセルと、ＬＳＢ／ＭＳＢ両方利用可能なＦＭセルとの割合を判断し、さらに、セルモード変更対象とすべきＦＭセルを特定し、セルモード変更指示をストレージコントローラ１０１０へ出すことで、アプリケーション要求や利用状況に適したセルモードを設定する。【００７２】
このようにすることで、管理者は、実際のストレージシステムの利用形態に適するセルモードでストレージシステムを運用できる。また、別な視点を述べるとすれば、管理者はＨＤＤ等の、フラッシュメモリ以外のＳＤＥＶも考慮して、包括的に適するセルモードを指定することができる。なお、ＦＭＤ１０３０は、必ずしもストレージプール１０８０又はパリティグループ１０６０に属さなくてもよい。また、ＬＵ１０７０の全てのデータは、ＦＭセルのＬＳＢに記憶されてもよく、全てＭＳＢに記憶されてもよく、あるいはＬＳＢとＭＳＢ両方に記憶されてもよい。例えば、当初は、ＬＳＢのみ利用するセルモードで、パリティグループ（より具体的にはパリティグループに含まれるＦＭＤ１０３０）を用いていたとして、ＦＭＤ１０３０を追加購入せずに一時的にＨＤＤより高速なＬＵ１０７０を提供したいと管理者が考えたとする。この場合、管理者は、パリティグループのセルモードを変更することで新たに記憶領域を取得し、その取得された新たな記憶領域にＬＵ１０７０を新規に定義することができる。なお、典型的には、ＦＭＤ１０３０のＭＳＢに格納したデータに対するアクセスは、ＨＤＤよりは早いことが多く、また、短時間の使用であれば、データ保持期間が問題になることもない。無論、他のユースケースによってセルモードの使い分けをしてもよいことは言うまでもない。【００７３】
なお、以後の説明では、性能要件の一例として、ＩＯＰＳ（アクセス頻度の一例）を扱う場合を中心に説明を行う、しかし、本実施例は、性能要件の別の例として、単位時間当たりの平均レスポンスタイムが扱われても良い。この場合、各実施例の「ＩＯＰＳ」が「平均レスポンスタイム」に読みかえられればよい。この場合は、ストレージコントローラの測定値は、平均又は最大レスポンスタイムでもよい。【００７４】
＜３．  ホストとストレージシステムのプログラム及び情報＞。【００７５】
再び、計算機システム全体の説明に戻る。【００７６】
図４は、第１実施例に係るストレージシステムとホストの構成例を示す図である。なお、管理サーバ１２００が含むコンピュータプログラムと各種情報とについては後ほど記す。【００７７】
ストレージコントローラ１０１０では、プロセッサ１０１１とメモリ１０１２とＩ／Ｏポート１０１３とバックエンドポート１０１４とキャッシュポート１０１５とのうちの少なくとも一つによって、ＳＤＥＶ情報４０５０とＰＧ構成情報４０６０と内部ＬＵ構成情報４０７０とＬＵパス情報４０８０とセルモード情報４０９０とプール情報４０４０ＡとＶＬ変換情報（仮想−論理変換情報の略）４０４０Ｂとを保持し、且つ、Ｉ／Ｏ処理プログラム４０１０とキャッシュ制御プログラム４０２０と構成制御プログラム４０３０とを実行する。なお、典型的には、これら情報及びプログラムは、メモリ１０１２に格納される。しかし、ストレージコントローラ１０１０で保持される情報の一部または全ては、ストレージシステム１０００内部でストレージコントローラ１０１０外部の構成（例えばキャッシュメモリ１０２０や、ＦＭＤ１０３０の一部）にて保持されてもよい。【００７８】
Ｉ／Ｏ処理プログラム４０１０は、ホスト１１００からＩ／Ｏリクエスト（例えばリードリクエスト又はライトリクエスト）を受け、そのＩ／Ｏリクエストに従う処理を実行する。具体的には、例えば、Ｉ／Ｏ処理プログラム４０１０は、キャッシュメモリ１０２０に保存されたデータ（リードリクエストに従う読出し対象データ）を、ホスト１１００へ転送したり、ホスト１１００から受信したデータ（ライトリクエストに従う書込み対象データ）を、キャッシュメモリ１０２０へ保存したりする。なお、ホスト１１００からのＩ／Ｏリクエストがブロックアクセス形式の場合は、Ｉ／Ｏ処理プログラム４０１０は、アクセス対象である論理ボリューム（例えばＳＣＳＩでの論理ユニット（ＬＵと略すことがある））を提供するための処理も行うことができる。また、ホスト１１００からのＩ／Ｏリクエストがファイル形式の場合は、Ｉ／Ｏ処理プログラム４０１０は、アクセス対象であるファイルやディレクトリを提供するための処理を行うことができる。なお、Ｉ／Ｏ処理プログラム４０１０は、他のＩ／Ｏリクエスト（例えば、データベースクエリーやＣＫＤ形式のＩ／Ｏリクエスト）でのアクセスを提供するために必要な処理を行っても良い。【００７９】
キャッシュ制御プログラム４０２０は、Ｉ／Ｏ処理プログラム４０１０と連動または自律的に、ＳＤＥＶが保存するデータをキャッシュメモリ１０２０へコピー（移動を含む）したり、キャッシュメモリ１０２０が保存するデータをＳＤＥＶへコピーしたりすることができる。キャッシュ制御プログラム４０２０は、さらに、信頼性を向上させるための処理として、例えば、ＲＡＩＤ（Redundant Array of Independent
(or Inexpensive) Disksの略）に代表される冗長化データを、キャッシュメモリ１０２０に保存されたデータから作成する及び／又は更新することを行ってもよい。【００８０】
構成制御プログラム４０３０は、構成変更及び／又は構成参照のリクエストに応答して、ＳＤＥＶ情報４０５０、ＰＧ構成情報４０６０、内部ＬＵ構成情報４０７０、ＬＵパス情報４０８０、セルモード情報４０９０、プール情報４０４０Ａ、及びＶＬ変換情報４０４０Ｂのうちの少なくとも一つを参照及び／又は更新する処理を行うことができる。構成変更及び／又は構成参照のリクエストは、例えば、管理サーバ１２００、ホスト１１００及びその他コンピュータのうちの少なくとも一つから発行される。なお、構成制御プログラム４０３０は、管理サーバ１２００から他のリクエストを受信し、当該リクエストに対して応答を行う。【００８１】
ＳＤＥＶ情報４０５０は、ＳＤＥＶに関する情報を含む。ＰＧ構成情報４０６０は、パリティグループ（Ｐａｒｉｔｙ  Ｇｒｏｕｐ：以後ＰＧと省略することがある）の構成情報を含む。内部ＬＵ構成情報４０７０は、パリティグループに含まれるＳＤＥＶの一部または全ての領域を内部的な論理ユニット（以後、「内部論理ユニット」や「内部ＬＵ」と省略する）として構成するための情報を含む。なお、本実施例において、内部ＬＵは、ストレージプールにパリティグループの記憶領域を含める時に用いることが主である。しかし、前述のように、ストレージプールを介さずにＦＭＤ１０３０の記憶領域を提供するのであれば、内部ＬＵに対してパスが定義されてもよい。もちろん、前述の通り、ＦＭＤ１０３０やパリティグループそのものがストレージプールに含められても良い。【００８２】
論理ユニットに対する容量又はブロックサイズを問い合わせるリクエストをホスト１０００又は管理サーバ１２００から受信した場合、ストレージコントローラ１０１０は、問い合わせリクエストで指定された論理ユニットに対応する内部ＬＵの容量またはブロックサイズを送信してもよい。ここで、リクエストで指定されたＬＵがＶＬＵ（仮想論理ユニット）であれば、ストレージコントローラ１０１０は、ＶＬＵについて定義された容量（仮想容量）を送信するようにしてもよい。同様に、論理ユニットに対する識別子を問い合わせるリクエストをホスト１０００又は管理サーバ１２００から受信した場合、ストレージコントローラ１０１０は、論理ユニットに割り当てられたＬＵＮに基づく値を送信したり、又は論理ユニットに対応する内部ＬＵの識別子に基づく値を送信したりしてもよい。【００８３】
セルモード情報４０９０は、ＦＭＤ１０３０が含む不揮発性メモリのセルモードを含む。プール情報４０４０Ａは、ストレージプール（以後、単にプールと略す場合がある）の構成情報を含む。ＶＬ変換情報４０４０Ｂは、ストレージプールから作成される仮想内部ＬＵの仮想-論理変換情報、及び仮想内部ＬＵに割り当てられるセグメントへのアクセス情報を含む。【００８４】
なお、ＳＤＥＶ情報４０５０、ＰＧ構成情報４０６０、内部ＬＵ構成情報４０７０、ＬＵパス情報４０８０、セルモード情報４０９０、プール情報４０４０Ａ、ＶＬ変換情報４０４０Ｂの一つ以上または全てをまとめてストレージ構成情報と呼ぶことがある。またストレージ構成情報には他の情報が含まれても良い。【００８５】
ホスト１１００では、プロセッサ１１０１とメモリ１１０２とＩ／Ｏポート１１０３の少なくとも一つによって、ＯＳ４１０１とファイルシステム４１０２とアプリケーションプログラム（以後アプリケーション、又はＡＰと省略する）４１０３、ホスト管理プログラム４１０４の少なくとも一つが実行される。【００８６】
アプリケーション４１０３は、ＯＳ４１０１やファイルシステム４１０２に依頼することで、ファイル等のデータを読み書きしつつ、ユーザや他のコンピュータからのリクエストに応じて業務処理等を行うプログラム（例えばＷｅｂサーバプログラムやデータベース管理プログラム）である。【００８７】
ＯＳ４１０１は、アプリケーション４１０３やファイルシステム４１０２から発行されるＩ／Ｏリクエストを、ストレージシステム１０００のＩ／Ｏポート１０１３へ送信したり、データをストレージシステム１０００から受信したりする。ファイルシステム４１０２は、アプリケーションからのファイル形式のＩ／Ｏリクエストを、ブロック形式のＩ／Ｏリクエストやネットワークファイルシステムプロトコル形式のＩ／Ｏリクエストに変換して、ＯＳ４１０１へＩ／Ｏリクエストの転送を依頼することができる。なお、ＯＳ４１０１及びファイルシステム４１０２はこれら以外の処理を含んでも良い。【００８８】
ホスト管理プログラム４１０４は、ホスト１１００にあるアプリケーション４１０３、ＦＳ４１０２、及びＯＳ４１０１の情報を、管理サーバ１２００のシステム管理プログラム１２０１０（図２４参照）と通信するプログラムである。【００８９】
なお、ホスト１１００において、これ以外のプログラムが実行されていてもよい。また、ホスト１１００は、ブロックＩ／ＯリクエストやファイルＩ／Ｏリクエスト以外にデータベースクエリーやＣＫＤ方式のリクエストを送信及び受信してもよい。また、ホスト１１００やストレージコントローラ１０１０で実行されるＯＳやファイルシステムを含めたプログラムは、一部または全ての処理をハードウェアにて実装されてもよい。【００９０】
図２４は、第１実施例に係る管理サーバの構成例を示す図である。【００９１】
管理サーバ１２００の記憶資源１２１０は、システム管理プログラム１２０１０、管理側ＳＤＥＶ情報１２０５０、管理側ＰＧ構成情報１２０６０、管理側内部ＬＵ構成情報１２０７０、管理側ＬＵパス情報１２０８０、管理側セルモード情報１２０９０、管理側プール情報１２０４０Ａ、管理側ＶＬ変換情報１２０４０Ｂ、ＡＰ性能要件情報１２１００、セグメント割当傾向情報１２１１０、及びティア管理情報（Ｔｉｅｒ管理情報）１２１２０を格納する。なお、記憶資源１２１０はこれ以外のデータを格納してもよく、上記情報の一部の格納を省略してもよい。【００９２】
システム管理プログラム１２０１０は、ストレージシステム１０００又はホスト１１００を管理するプログラムである。【００９３】
管理側ＳＤＥＶ情報１２０５０は、ストレージシステム１０００に設置されたＳＤＥＶについての情報を格納する。管理側ＰＧ構成情報１２０６０は、ストレージシステム１０００に定義されたパリティグループについての情報を格納する。管理側内部ＬＵ構成情報１２０７０は、ストレージシステム１０００に定義された内部ＬＵについての情報を格納する。管理側ＬＵパス情報１２０８０は、ストレージシステム１０００に定義された論理ユニットについての情報を格納する。【００９４】
管理側セルモード情報１２０９０は、ストレージシステム１０００に定義されたセルモードについての情報を格納する。管理側プール情報１２０４０Ａは、ストレージシステム１０００に定義されたストレージプールについての情報を格納する。管理側ＶＬ変換情報１２０４０Ｂは、ストレージシステムが提供する仮想内部ＬＵとストレージプール及び割当られるセグメントの関係の情報を格納する。ＡＰ性能要件情報１２１００は、ホスト１１００に割り当てられる内部ＬＵまたは仮想内部ＬＵとＬＵで動作するアプリケーションと、そのアプリケーションの動作に求められる性能要件（例えば、ＩＯＰＳ、レスポンスタイムなど）を格納する。セグメント割当傾向情報１２１１０は、仮想内部ＬＵ−ＩＤに割り当てられるセグメントの単位時間ごとの量と、単位時間ごとのＩＯＰＳ（又は平均レスポンスタイム）とを格納する。ティア管理情報１２１２０は、ストレージプールに属する記憶領域のうち、性能や信頼性が等しい（又はほぼ等しい）記憶領域をまとめた集合（この集合をティア（Ｔｉｅｒ）と呼ぶことがある）を管理するための情報を格納する。なお、一つのティアに異なる種類のＳＤＥＶが含まれてもよい。【００９５】
なお、管理サーバ１２００は、ＣＤ−ＲＯＭ等の媒体を用いて、システム管理プログラム１２０１０を記憶資源１２１０に格納してもよい。また、管理サーバ１２００は、配布計算機（図示せず）から配布されたシステム管理プログラム１２０１０を記憶資源１２１０へ格納してもよく、または配布計算機から配布されたインストールプログラムを実行することでシステム管理プログラム１２０１０を記憶資源１２１０へ格納してもよい。【００９６】
なお、管理側ＳＤＥＶ情報１２０５０、管理側ＰＧ構成情報１２０６０、管理側内部ＬＵ構成情報１２０７０、管理側ＬＵパス情報１２０８０、管理側セルモード情報１２０９０、管理側プール情報１２０４０Ａ、管理側ＶＬ変換情報１２０４０Ｂ、ＡＰ性能要件情報１２１００、セグメント割当傾向情報１２１１０、及びティア管理情報１２１２０の一つ以上または全てをまとめて管理側ストレージ構成情報と呼ぶことがある。また管理側ストレージ構成情報には他の情報が含まれても良い。【００９７】
＜４．詳細＞。【００９８】
＜４．０．アドレス空間の呼び名と関係＞。【００９９】
より詳細な説明に入る前に、実施例におけるブロックサイズについて、図面を用いて説明する。【０１００】
図２０は、第１実施例に係るＬＵからＦＭＣまでのアドレス空間の関係の一例を示す図である。ブロック［Ｄ］、ブロック［Ｇ］などの表記は、それぞれ各レイヤにおけるアドレス空間を示すために用いられている。【０１０１】
第１実施例では、以下に示すアドレッシングを行う。【０１０２】
（レイヤ１）ＦＭＤコントローラ２０１０がＦＭＣ２０２０に対してセルプログラミング操作及びセルリード操作を行う場合、ＦＭＣ２０２０の識別子（ＦＭＣ１、ＦＭＣ２等）と、ページを指定するページアドレスを指定する。よってデータ操作の単位はページサイズとなる。なお、セルイレース操作の場合のみ、ＦＭＤコントローラ２０１０はＦＭＣ２０２０の識別子と、イレースブロックを指定するイレースブロックアドレスを指定する。したがってセルイレース操作で削除するデータの単位はイレースブロックサイズとなる。【０１０３】
（レイヤ２）ストレージコントローラ１０１０がＦＭＤ１０３０にリードまたはライトする場合、ＦＭＤ１０３０の識別子（ＦＭＤ１、ＦＭＤ２等）と、ＬＵＮと、ブロック［Ｄ］アドレスを指定する。よってリード、ライトの単位はブロック［Ｄ］サイズとなる。なお、本実施例では、ＬＵＮとして“０”を指定した場合はブロック［Ｄ］はＦＭセルのＬＳＢにより構成されるブロックである。また、ＬＵＮとして“１”を指定した場合はブロック［Ｄ］はＦＭセルのＭＳＢにより構成されるブロックである。ストレージコントローラ１０１０がＨＤＤ１０４０にアクセスする場合、ＨＤＤ１０４０の識別子（ＨＤＤ１等）とブロック［Ｄ］アドレスを指定する。なお、ＦＭＤ１０３０のブロック［Ｄ］のサイズと、ＨＤＤ１０４０のブロック［Ｄ］のサイズは異なってもよく、同じであってもよい。【０１０４】
（レイヤ３）ストレージコントローラ１０１０がキャッシュメモリ１０２０上のデータにリードまたはライトする場合、パリティグループの識別子（ＰＧ１、ＰＧｘ、ＰＧｙ等）と、ブロック［Ｇ］アドレスを指定する。よってデータ操作の単位はブロック［Ｇ］サイズ単位となる。【０１０５】
（レイヤ４）ストレージコントローラ１０１０がプールに含まれる内部ＬＵにリードまたはライトする場合、内部ＬＵの識別子（Ｉ−ＬＵ１、Ｉ−ＬＵ２、Ｉ−ＬＵ３等）と、ブロック［Ｉ］アドレスを指定する。【０１０６】
（レイヤ５）ストレージコントローラ１０１０は、プールに含まれる内部ＬＵの記憶領域をセグメントと呼ぶ所定のサイズの記憶領域を単位として、内部ＬＵへの割当及び空き領域の管理を行う。しかし、リードまたはライトの場合は、ストレージコントローラ１０１０は、セグメントアドレスと、セグメント内ブロックアドレスを指定する。なお、典型的にはセグメント内ブロックのサイズはブロック［Ｉ］と同サイズである。【０１０７】
（レイヤ６）ホストは、仮想内部ＬＵにリードまたはライトする場合、仮想内部ＬＵの識別子と、ブロック［Ｖ］アドレスを指定する。ストレージコントローラ１０１０は、ブロック［Ｖ］をまとめてセグメントと同サイズのチャンクとして、セグメントの割当管理及び対応関係の管理を行う。【０１０８】
（レイヤ７）図示は省略しているが、ストレージコントローラ１０１０は、プールに含まれない内部ＬＵにＩ／Ｏポート１０１３のＬＵＮを１つ以上割り当てることができる。このようなＬＵＮを割り当てられた内部ＬＵは、ホスト側からはＬＵＮを割り当てられたＬＵとして検知することができる。なお、この検知の例としては、ＬＵ（内部ＬＵ）の（仮想の場合も含め）記憶容量をストレージコントローラ１０１０から通知することがある。その結果として、ホスト１１００はＩ／Ｏポート１０１３宛にＬＵＮとＬＢＡを指定してＬＵにリードまたはライトを行うことができる。なお、典型的にはＬＢＡのブロックサイズはブロック［Ｉ］と同じである。【０１０９】
以上が実施例におけるアドレス空間の関係である。ただし、以上のアドレス空間は一例に過ぎない。また、内部ＬＵをプールに含める代わりに、パリティグループやＦＭＤ１０３０やＨＤＤ１０４０を含めても良い。また、ストレージコントローラは、一部のアドレス空間を採用しなくてもよい。例えば、内部ＬＵに関するアドレス空間（レイヤ４）を用いずにレイヤ５と３との間でアドレス変換を行う場合である。この場合、内部ＬＵの識別子とブロック［Ｉ］のアドレスの変わりにパリティグループの識別子とブロック［Ｇ］のアドレスを用いればよい。なお、当然ながら内部ＬＵはプールに含めずに、直接ＬＵＮを割り当てても良い。また、各ブロック、セグメント、チャンク、ページ、イレースブロックのサイズはホストからのデータを格納するバイト数以外に冗長コードや制御情報を格納するバイト数を含んでもよい。【０１１０】
＜４．１．ＦＭＤ＞。【０１１１】
＜４．１．１．ＦＭＤコントローラ＞。【０１１２】
再び、図２を用い、ＦＭＤコントローラ２０１０について説明する。【０１１３】
ＦＭＤコントローラ２０１０は、例えば、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１、ＦＭＤ内部構成情報通知プログラム２０１４、ＦＭＤアドレス変換情報２０１２、及びＦＭＤ内部構成情報２０１３を有する。ＦＭＤ１０３０は、複数のＦＭＣ２０２０の総記憶容量より少ない記憶容量を提供容量としてストレージコントローラ１０１０へ報告することで、空き領域を確保することができる。【０１１４】
ＦＭＤアドレス変換情報２０１２は、ＦＭＤコントローラ２０１０が受信するリードリクエストまたはライトリクエストで指定されたブロック［Ｄ］アドレスと、ＦＭＣ２０２０の識別子とページアドレスとの対応関係を含む。例えば、ＦＭＤアドレス変換情報２０１２は、以下に示す種類（Ｂ１）及び（Ｂ２）の情報、
（Ｂ１）ブロック［Ｄ］のデータが実際に保存されているＦＭＣの識別子とページアドレス、
（Ｂ２）ブロック［Ｄ］が参照された回数、
を各ブロック［Ｄ］毎に持つ（ただしＢ２は無くても良い）。【０１１５】
ＦＭＤ内部構成情報２０１３は、各ＦＭセルの障害状況を管理する情報であり、好ましくは、各ＦＭＣ２０２０内のイレースブロックを１つ以上集めた単位で以下に示す種類（Ｃ１）乃至（Ｃ３）の情報
（Ｃ１）障害状況、
（Ｃ２）セルイレース済み情報、
（Ｃ３）セルプログラミングとセルイレースのサイクル回数、またはセルイレース回数、
を保持する。【０１１６】
また、ＦＭＤ内部構成情報２０１３は、ＦＭＤ１０３０としてストレージコントローラ１０１０に提供する記憶領域の属性（例えば、ブロック［Ｄ］サイズ、ブロック［Ｄ］の数）と、空きイレースブロックを管理するための情報を保持する。【０１１７】
ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、Ｉ／Ｏポート２０３０を通じてＦＭＤコントローラ２０１０が受信したライトリクエスト又はリードリクエストを解析する。ライトリクエストの場合、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＦＭＤアドレス変換情報２０１２を用いて、リクエストが指定したブロック［Ｄ］のデータが実際に保存されているＦＭＣ２０２０の識別子と、ページアドレスを特定する。そして、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、特定したページに含まれるＦＭセルに対してセルプログラミング操作によってライトデータを格納し、必要に応じてセルイレース操作を行う。リードリクエストの場合も、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＦＭＤアドレス変換情報２０１２を用いて、リクエストが指定したブロック［Ｄ］のデータが実際に保存されているＦＭＣ２０２０の識別子と、ページアドレスを特定する。そして、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、特定したページに含まれるＦＭセルに対してセルリード操作を行い、ＦＭセルに格納されたビットを読み込み、リードデータとしてストレージコントローラ１０１０に送信する。【０１１８】
＜４．１．２．ＦＭＤのＬＵＮとＬＳＢとＭＳＢとの関係＞。【０１１９】
図６２は、第１実施例に係るＦＭセルのＬＳＢ及びＭＳＢと、ＦＭＤのＬＵＮ毎のブロック［Ｄ］アドレス空間との関係の一例を示す図である。なお、同図では説明の簡易化のために、１ページをブロック［Ｄ］４つ分の大きさとし、ページ内の冗長コード格納用のＦＭセルは省略している。【０１２０】
同図に示すように、所定のページ（例えば、ページ１）のＬＳＢはＬＵＮ０の所定のブロックアドレス（例えば、アドレス４から７）で示されるブロック［Ｄ］の実際の記憶領域として機能する。所定のページ（例えば、ページ１）のＭＳＢはＬＵＮ１の所定のブロックアドレス（アドレス４から７）で示されるブロック［Ｄ］の実際の記憶領域として機能する。従って、ＬＵＮが０の場合も１の場合もブロック［Ｄ］アドレスからページアドレスへの変換は共通のＦＭＤアドレス変換情報２０１２を参照する。なお、ページのＬＳＢ及びＭＳＢの提供方法はこれに限られない。例えばブロック［Ｄ］アドレスの偶数アドレスがＬＳＢに対応し、奇数アドレスがＭＳＢに対応してもよく、ページサイズ毎に交互にＬＳＢとＭＳＢに対応してもよい。【０１２１】
＜４．１．２．ＦＭＤのＩ／Ｏ処理＞。【０１２２】
ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１の処理のうち、リードリクエストを処理するリード処理を説明する。【０１２３】
図６３は、第１実施例に係るリード処理の一例のフローチャートである。【０１２４】
ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、開始ブロック［Ｄ］アドレス、ブロック長［Ｄ］、及びＬＵＮを指定したリードリクエストを受信する（ＳｔｅｐＦ１０１）。次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、当該リードリクエストで指定された開始ブロック［Ｄ］アドレス、ブロック長［Ｄ］から、ＦＭＤアドレス変換情報２０１２を用いて、指定ブロック［Ｄ］に対応するＦＭＣ２０２０とページを特定する（ＳｔｅｐＦ１０２）。【０１２５】
次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、当該リードリクエストで指定されたＬＵＮの値を判断する（ＳｔｅｐＦ１０３）。ＬＵＮが０の場合（ＳｔｅｐＦ１０３でＬＵＮ＝０）は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＳｔｅｐＦ１０２で特定したＦＭＣ２０２０に対して特定したページを指定したＬＳＢのセルリード操作を行い、ページに格納された（よりミクロな表現ではページに含まれるＦＭセルに格納された）データを取得し（ＳｔｅｐＦ１０４）、処理をＳｔｅｐＦ１０６に進める。【０１２６】
一方、ＬＵＮが１の場合（ＳｔｅｐＦ１０３でＬＵＮ＝１）は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＳｔｅｐＦ１０２で特定したＦＭＣ２０２０に対して特定したページを指定したＭＳＢのセルリード操作を行い、ページに格納された（よりミクロな表現ではページに含まれるＦＭセルに格納された）データを取得し（ＳｔｅｐＦ１０５）、処理をＳｔｅｐＦ１０６に進める。【０１２７】
ＳｔｅｐＦ１０６では、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＳｔｅｐＦ１０４またはＳｔｅｐＦ１０５で取得したデータを、ストレージコントローラ１０１０へ送信し、処理を終了する。【０１２８】
ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１の処理のうち、ライトリクエストを処理するライト処理を説明する。【０１２９】
図６４は、第１実施例に係るライト処理の一例の第１のフローチャートである。図６５は、第１実施例に係るライト処理の一例の第２のフローチャートである。【０１３０】
ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、開始ブロック［Ｄ］アドレス、ブロック長［Ｄ］、及びＬＵＮを指定したライトリクエストと、ライトデータを受信する（ＳｔｅｐＦ１１１）。次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、当該ライトリクエストで指定された開始ブロック［Ｄ］アドレス、ブロック長［Ｄ］から、ＦＭＤアドレス変換情報２０１２を用いて、指定ブロック［Ｄ］に対応するＦＭＣ２０２０とページを特定する（ＳｔｅｐＦ１１２）。【０１３１】
次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、当該ライトリクエストで指定されたＬＵＮの値を判断する（ＳｔｅｐＦ１１３）。ＬＵＮが０の場合（ＳｔｅｐＦ１１３でＬＵＮ＝０）は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、セルイレースされたページ（より正確にはセルイレースしたブロックから一度もセルプログラミングされていないページ）を検索する（ＳｔｅｐＦ１１４）。【０１３２】
次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、検索したページのＬＳＢとＭＳＢの両方を指定してセルプログラミング操作を行う（ＳｔｅｐＦ１１５）。このとき、ＬＳＢにはライトデータを記憶させ、ＭＳＢには、ＳｔｅｐＦ１１２で特定したページのＭＳＢに格納されたデータをセルリードし、リードしたデータを記憶させる。なお、当該ページに対応するセルモードがＬＳＢ  Ｏｎｌｙの場合、ＳｔｅｐＦ１１２で特定したページのＦＭセルは、”１１”又は”１０”状態、つまりＭＳＢがセルプログラムされていない状態である。このため、本ステップのプログラム結果も、”１１”又は”１０”のままで、結果的に、ＭＳＢのセルプログラミングを省略していることになる。【０１３３】
次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、指定ブロック［Ｄ］に対応するＦＭＣ識別子及びページアドレスをＳｔｅｐＦ１１２で特定したＦＭＣ２０２０及びページとなるように、ＦＭＤアドレス変換情報２０１２を更新し（ＳｔｅｐＦ１１６）、処理を終了する。【０１３４】
一方、ＳｔｅｐＦ１１３でＬＵＮが１の場合（ＳｔｅｐＦ１１３でＬＵＮ＝１）は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、特定したページのＦＭセルの状態を確認する（ＳｔｅｐＦ１１７）。この結果、ページ内の全てのＦＭセルが”１１”または”１０”の場合（ＳｔｅｐＦ１１７で、“１１”ｏｒ“１０”）は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＳｔｅｐＦ１１２で特定したＦＭＣ２０２０に対して特定したページを指定したＭＳＢのセルプログラミング操作を行い（ＳｔｅｐＦ１１８）、処理を終了する。このときに与えるデータはライトデータである。より具体的には、もし、ＭＳＢに”０”を記憶する場合、そして、ＳｔｅｐＦ１１２で特定したＦＭセルの状態が、”１１”であれば、その状態は、セルプログラミングによって”０１”状態になる。また、ＦＭセルの状態が、”１０”であれば、セルプログラミングによって、その状態は”００”状態になる。ちなみに、ＭＳＢに”１”を記憶する場合は、結果的に、”１１”又は”１０”状態のままであることは言うまでもない。【０１３５】
一方、ページ内の全てのＦＭセルが”１１”または”１０”ではない場合（ＳｔｅｐＦ１１７で、それ以外）は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＳｔｅｐＦ１１４と同様に、セルイレースされたページを検索する（ＳｔｅｐＦ１１９）。次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、検索したページのＬＳＢとＭＳＢの両方を指定してセルプログラミング操作を行う（ＳｔｅｐＦ１２０）。このとき、ＬＳＢには、ＳｔｅｐＦ１１２で特定したページのＬＳＢに格納されたデータをセルリードし、リードしたデータを記憶させ、ＭＳＢにはライトデータを記憶させる。次いで、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、指定ブロック［Ｄ］に対応するＦＭＣ識別子と及びページアドレスをＳｔｅｐＦ１１９で特定したＦＭＣ２０２０とページになるように、ＦＭＤアドレス変換情報２０１２を更新し（ＳｔｅｐＦ１２１）、処理を終了する。【０１３６】
ここで、セルイレースされたページを検索する場合においては、以下の条件（Ｄ１）乃至（Ｄ３）、
（Ｄ１）ページに障害が発生していないこと、
（Ｄ２）ページに含まれるＦＭセルの状態が”１１”であること（言い方を変えると、セルイレース直後の状態であること）、
（Ｄ３）イレースブロック内で自ページより高いページアドレスを持つ他のページがＬＳＢ、ＭＳＢともにセルプログラミングされていないこと、
の全てを満たすページが検索されることがある。なお、ＳｔｅｐＦ１１９で探すページとしては、障害発生していないという条件以外にも何らかの理由で使用しないものと設定されたものが除外されてもよい。例えば、サイクル回数又はセルイレース回数が上限を超えた場合や、冗長コードで回復可能な範囲だが所定のビット数を超えたデータ化けが発生した、等である。【０１３７】
なお、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ページに対するセルプログラミング操作に付随して以下の（Ｅ１）及び（Ｅ２）のいずれかまたはすべての処理を行ってもよい。
（Ｅ１）ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、保存前に、ライトデータからＬＲＣ（Ｌｏｎｇｉｔｕｄｉｎａｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）やＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）等の冗長コードを計算し、その冗長コードと共にライトデータを保存する。なお、当該冗長コードは、リードリクエスト受付時に、データ化けの有無を確認するために使うものある。データ化けが発生した場合は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、当該リードリクエストでエラーを返し、ＦＭＤ内部構成情報２０１３に、ブロック障害が発生したことを記録する。
（Ｅ２）保存後に、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＦＭＣ２０２０から当該ブロックデータを読み込んで比較を行う。比較が失敗した場合は、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、ＦＭＤ内部構成情報２０１３にブロックに障害が発生したことを記録し、再びセルプログラミング操作をやり直す。【０１３８】
また、ＳｔｅｐＦ１１６及びＳｔｅｐＦ１２１の後続の処理として、更新前に指定ブロック［Ｄ］に対応していたページを無効扱いするようにしてもよい。【０１３９】
また、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、別処理として、新たに無効となったページを含むイレースブロックをセルイレースするようにしても良い。そのために、ＦＭＤ  Ｉ／Ｏ処理プログラム２０１１は、セルイレース対象ブロックから有効なページのＦＭセルのビット（データ）をセルリードし、他のブロックのページにセルプログラミングする。当該処理は、リクエスト処理と連動あるいは非同期のタイミングで繰り返し行うことができる。このとき、イレースブロックごとにセルイレース操作回数を記録し、セルイレース対象のイレースブロックを選択する際にイレース操作回数の少ないものを選ぶことでイレース操作回数の平準化を図っても良い。【０１４０】
＜４．１．３．ＦＭＤ内部構成情報通知プログラム＞。【０１４１】
ＦＭＤ内部構成情報通知プログラム２０１４は、ＦＭＤ１０３０の内部情報をストレージコントローラ１０１０等に通知するプログラムである。ＦＭＤ内部構成情報通知プログラム２０１４が提供する情報の例は、以下（Ｇ１）乃至（Ｇ６）である。
（Ｇ１）ＦＭＤ１０３０のブロック［Ｄ］サイズ（ストレージコントローラ１０１０は、当該ブロックサイズ単位でアクセスを行ってくる）。
（Ｇ２）ＦＭＤ１０３０の提供ブロック数［Ｄ］（ストレージコントローラ１０１０は、当該ブロック数とブロック［Ｄ］サイズから提供記憶容量を知ることがある）。
（Ｇ３）ＦＭＤ１０３０内部の空き容量値（ブロック数での表現も可）。当該空き容量値は、ＦＭＤ内部構成情報２０１３での障害が発生したイレースブロック数（またはブロック数）を求めて以下の計算式により算出できる。すなわち、空きブロック数＝（全フラッシュメモリチップのブロック数）−（障害発生ブロック数）−（（Ｇ２）に記載のブロック数）、又は未使用ブロック数（ＦＭＤ使用開始時点から提供ブロック数［Ｄ］が提供容量分だけ必ず割り当てられている場合）。なお、フラッシュメモリチップの一部の領域を管理用や内部冗長化等に用いている場合は、そのブロック数を考慮して（例えば、減じて）、空ブロック数を計算しても良い。また、上記計算式は、ＦＭＣ１０３０のブロックサイズを基準としているため、情報提供に当たってはＦＭＤ１０３０のブロックサイズに換算して提供することができる。なお、ブロック数での計算式の例を示したが、ブロック数に所定の値を掛けることで、空き容量値が得られることは言うまでも無いことである。
（Ｇ４）ＦＭＤ１０３０へ提供される電圧または電力が不足していることや、ＦＭＤ１０３０の内部バスやＦＭＤコントローラ２０１０の破損。
（Ｇ５）ＦＭＤコントローラ２０１０による、ＦＭＣ１０３０に保存されたデータのデータ化けの検知。
（Ｇ６）セルプログラミングとセルイレースのサイクル回数、またはセルイレース回数。以降ではこれらの情報をまとめてセル書き換え回数と呼ぶことがある。【０１４２】
なお、ＦＭＤ１０３０とストレージコントローラ１０１０との接続媒体及び通信プロトコルはどのようなものでもよい。さらにはＦＭＤ１０３０へのライトリクエストはＦＭＤ１０３０が格納するデータを更新するリクエストであれば良く、ＦＭＤ１０３０へのリードリクエストはＦＭＤ１０３０が格納するデータを参照するリクエストであれば良い。以上に示したＦＭＤ１０３０の詳細はあくまでも例示に過ぎない。メモリセルの半導体特性として複数ビット記憶可能であり、その上で、ストレージコントローラ１０１０と連携し、セルモードによって定められたビット数をメモリセルに記憶できるのであれば、他のＦＭＤ１０３０が採用されてもよい。例えば、ＦＭＤ１０３０のコントローラが、ストレージコントローラ１０１０から指定されたセルモードを保持し、図５９と図６０のようなＦＭセルの使い分けを行ってもよい。【０１４３】
なお、後述するように、本実施例ではあるＦＭＤ１０３０に対して、異なるセルモードが用いられても良い。例えば、ＦＭＤ１０３０のブロック［Ｄ］アドレス空間の一部が第１セルモードで用いられ、その他の部分が、第２セルモードで用いられてよい。ＦＭＤ１０３０内部では、上記の通り、ブロック［Ｄ］とページとの対応が常に同じではなくて、ライト要求によって別なページが用いられるため、一見すると上記２つのセルモードを用いることができないように考えられる。しかし、セルモードによって変更されるのはＦＭセルに対するビットの記憶のさせ方であり、元々の半導体特性・品質等が大幅に異なるＦＭセルの使い分けではない。従って、ブロック［Ｄ］とページとの対応が動的に変化する場合でも、このように複数のセルモードを同時に用いても、第１セルモードで所定のＦＭＤ１０３０に保存したライトデータは第１セルモードの特性を持ち、第２セルモードで前記所定のＦＭＤ１０３０に保存したライトデータは第２セルモードの特性を持つことができる。【０１４４】
＜４．２．ストレージシステムで管理する情報＞。【０１４５】
図５は、第１実施例に係るＳＤＥＶ情報の一例を示す図である。【０１４６】
ＳＤＥＶ情報４０５０は、それぞれのＳＤＥＶに対応するＳＤＥＶの識別子（ＳＤＥＶ−ＩＤ）毎に以下の（Ｈ１）乃至（Ｈ４）の情報を持つ。
（Ｈ１）閉塞情報。閉塞情報は、当該ＳＤＥＶが使用不可能な状況の場合に閉塞状態となり、そうではない場合に、正常状態となる。なお、使用不可能な状況の例としては、ハードウェア障害や、ＳＤＥＶをシステムから抜き取った場合や、ＳＤＥＶがＦＭＤ１０３０であれば、空き領域が不足または枯渇した場合等がある。
（Ｈ２）ＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）。ＳＤＥＶにアクセスするために必要なＦｉｂｒｅＣｈａｎｎｅｌの通信識別子。なお、実際のＦｉｂｒｅＣｈａｎｎｅｌではＷＷＮからポート番号（ポートＩＤと呼ぶことがある）を作成して、その値を使って通信を行っているため、ポート番号を登録してもよい。また、これ以外にも、ストレージコントローラ１０１０からＳＤＥＶに通信するための他の識別子（例えば、ＩＰアドレス、ＴＣＰ／ＩＰのポート番号、ｉＳＣＳＩ  Ｎａｍｅ等）で代替されてもよい。
（Ｈ３）ＳＤＥＶの型番。これによってＳＤＥＶがＨＤＤ１０４０であるか、ＦＭＤ１０３０であるか判別することができる。
（Ｈ４）ＳＤＥＶの提供容量。提供容量については、ＳＤＥＶから提供される。【０１４７】
なお、上記情報以外に、各ＦＭＤ１０３０についてストレージシステム１０００に搭載した物理的な場所が判る情報をＳＤＥＶ情報４０５０に含めてもよい。【０１４８】
図６は、第１実施例に係るＰＧ構成情報の一例を示す図である。【０１４９】
ＰＧ構成情報４０６０は、それぞれのパリティグループ（ＰＧ）の識別子（ＰＧ−ＩＤ毎に、以下の（Ｉ１）乃至（Ｉ３）の情報を持つ。
（Ｉ１）閉塞情報。閉塞情報はＰＧが使用不可能な状況の場合に閉塞状態となり、そうではない場合に正常状態となる。なお、使用不可能な状況とは、以下に例示する事象が多重に発生した場合が考えられる。
（事象１）ハードウェア障害。
（事象２）ＳＤＥＶの抜き取り。
（事象３）ＳＤＥＶがＦＭＤ１０３０の場合には、空き領域が少ない、又は不足することの報告をストレージコントローラ１０１０が受信。なお、閉塞情報の代替として上記事象が識別可能な情報を記憶しても良い。
（Ｉ２）ＲＡＩＤレベル。
（Ｉ３）パリティグループに属するＳＤＥＶの数と、そのＳＤＥＶの識別子。【０１５０】
なお、前述のとおり、ストレージコントローラ１０１０は、パリティグループに対してアドレス空間を割り当てることができる。【０１５１】
図８は、第１実施例に係るＦＭＤと、ＲＡＩＤを組んだＳＤＥＶとのアドレス空間の関係の一例を示す第１の図である。図９は、第１実施例に係るＦＭＤと、ＲＡＩＤを組んだＳＤＥＶとのアドレス空間の関係の一例を示す第２の図である。図８は、ＲＡＩＤ１＋０を例に採ったパリティグループのアドレス空間［Ｇ］と、ＦＭＤ１０３０のアドレス空間［Ｄ］の関係の一例を示す。図９は、ＲＡＩＤ５を例に採った場合の同様の関係の一例を示す。【０１５２】
用例についての説明：
図８及び図９は、４つのＳＤＥＶ８２００、８２１０、８２２２、８２３０を用いてパリティグループ８１００を構成する例を示している。図中用例に示すハッチングされた箱８０１０は、ＳＤＥＶのブロック［Ｄ］を示し、符号８０１１は、そのブロック［Ｄ］のアドレスを示している。箱８０１０の中の点線の枠を持つ箱８０２０は、ストレージコントローラ１０１０がパリティグループ８１００に割り当てたブロック［Ｇ］を示し、符号８０２１は、ストレージコントローラ１０１０が割り当てるブロック［Ｇ］のアドレスを示す。なお、ブロック８０２０のブロック［Ｇ］サイズは、ＳＣＳＩの規格が提供しうる最低のブロックサイズである５１２バイトとすることが考えられるが、これ以外のサイズでもよい。【０１５３】
ＲＡＩＤ１＋０：
ＲＡＩＤ１＋０の場合、図８に示すように、ミラーリングのために、ストレージコントローラ１０１０は、二組のＳＤＥＶで同じアドレス空間を割り当て（例では、ＳＤＥＶ８２００と８２１０、ＳＤＥＶ８２２０と８２３０）、その後ストライピングする。ストライピングの場合、ストレージコントローラ１０１０は、定められたブロック数（以後、ストライピング用連続ブロック数と呼ぶ）毎に、続きのアドレス空間［Ｇ］を別なＳＤＥＶへ切り替える（例では、ブロック［Ｇ］では４つ、ブロック［Ｄ］では２つ）。なお、ストライプサイズ（パリティグループ内の全ＳＤＥＶからデータを読み書きすることで行うＩ／Ｏサイズ）は、以下の式、
ストライプサイズ＝（ストライピング用連続ブロック［Ｇ］数）×（ＳＤＥＶの数／２）×（ブロック［Ｇ］サイズ）
で算出することができる。なお、ＲＡＩＤ１の場合は、ＲＡＩＤ１＋０のストライピングを省略したものであるため、説明は省略する。【０１５４】
ＲＡＩＤ５：
ＲＡＩＤ５の場合も、図９に示すように、ストレージコントローラ１０１０は、ストライピング用連続ブロック数を単位にストライピング処理を行い、パリティ保存領域を割り当てる（例では、アドレスＰ０からＰ３が、アドレス０から１１までのパリティを保存する領域）。ＲＡＩＤ５の場合のストライプサイズは、以下の式、
ストライプサイズ＝（ストライピング用連続ブロック［Ｇ］数）×（ＳＤＥＶ数−１）×（ブロック［Ｇ］サイズ）
で算出することができる。【０１５５】
図７は、第１実施例に係る内部ＬＵ構成情報の一例を示す図である。【０１５６】
内部ＬＵ構成情報４０７０は、それぞれの内部ＬＵの識別子（内部ＬＵ−ＩＤ）毎に以下の（Ｊ１）乃至（Ｊ４）の情報を持つ。なお、ホスト１１００に記憶領域として提供されるＬＵは、この内部ＬＵを元にパスを定義することによって、外部に提供される。なお、ここで言う「外部」とは、ホスト１１００に代えて又は加えて、他種の装置、例えば、仮想化スイッチや別のストレージシステムであっても良い。換言すれば、他種の装置が、ホスト１１００に代わって又は加えて、ストレージシステムにＩ／Ｏリクエストを発行することができる。
（Ｊ１）閉塞情報。閉塞情報は当該内部ＬＵが使用不可能な状況（例えば、パリティグループが閉塞している場合や、当該内部ＬＵに領域が割り当てられていない場合等）の場合に閉塞状態となり、そうではない場合に正常状態となる。
（Ｊ２）ＰＧ識別子（ＰＤ−ＩＤ）と、開始アドレス［Ｇ］と、終了アドレス［Ｇ］。当該内部ＬＵの記憶領域として用いるパリティグループの識別子と、パリティグループ内の開始ブロックアドレス［Ｇ］と、終了ブロックアドレス［Ｇ］とを示す。【０１５７】
図１３は、第１実施例に係るＬＵパス情報の一例を示す図である。【０１５８】
ＬＵパス情報４０８０は、例えば、以下の（Ｋ１）乃至（Ｋ３）の情報を持つ。
（Ｋ１）ホスト１１００に対して提供する仮想内部ＬＵの識別子（仮想内部ＬＵ−ＩＤ）。なお、仮想内部ＬＵについては後述する。
（Ｋ２）ＷＷＮ（またはＩ／Ｏポート１０１３の識別子）。ＷＷＮは、ホスト１１００に対して提供する仮想内部ＬＵを、どのポート１０１３から提供するかを示す。なお、ＷＷＮに代えて、ポート番号など、他種の識別子で代替されてもよい。なお、以後は「ポートの識別子」と記載した場合はこれらいずれかの値であるものとする。
（Ｋ３）ＬＵＮ。ＬＵＮは、ホストへ向けて提供する仮想内部ＬＵを、ＷＷＮ（Ｋ２）のどのＬＵＮとして提供するかを示す。【０１５９】
なお、ＬＵＮは限られた数しか定義できないため、ストレージシステム１０００内で定義された全ての仮想内部ＬＵにＷＷＮとＬＵＮを割り当てる必要はなく、あるＷＷＮとＬＵＮをある時間帯は、ある仮想内部ＬＵに割り当て、別な時間は別な仮想内部ＬＵに割り当てることで、ＬＵＮの有効利用が行われても良い。また、内部ＬＵを、直接ホストへ提供する場合は、仮想内部ＬＵ−ＩＤの代わりに内部ＬＵのＩＤが設定されればよい。また、本情報に仮想内部ＬＵの仮想容量（図２２の「容量」カラムに相当）が含められ、仮想容量を表す値は、ストレージコントローラが、ホストに仮想容量を知らせる時に用いられても良い。【０１６０】
図１０は、第１実施例に係るプール情報の一例を示す図である。【０１６１】
プール情報４０４０ＡはプールＩＤ（Ｐｏｏｌ−ＩＤ）とセグメントＩＤ（ＳＥＧ−ＩＤ）毎に以下の（ａ１）乃至（ａ３）の情報を持つ。
（ａ１）割当済みか否かを示す割当情報。当該セグメント仮想内部ＬＵのチャンクに割り当てられていればＹｅｓとなり、そうでない場合はＮｏとなる。
（ａ２）当該セグメントに対応する内部ＬＵの識別子と、開始及び終了ブロック［Ｉ］アドレス。
（ａ３）当該セグメントがＦＭＤ１０３０から割り当てられている場合におけるＦＭＤ１０３０のセルモードを示すＭＳＢフラグ。【０１６２】
図１１は、第１実施例に係るＶＬ変換情報の一例を示す図である。【０１６３】
ＶＬ変換情報４０４０Ｂは、仮想内部ＬＵ−ＩＤと、仮想内部ＬＵ内のチャンクＩＤ毎に、以下の（ｂ１）乃至（ｂ４）の情報を持つ。
（ｂ１）当該仮想内部ＬＵの仮想容量。
（ｂ２）当該チャンクに割り当てられたセグメントのＩＤと当該セグメントを含むプールのＩＤ。
（ｂ３）当該チャンクに割り当てられたセグメントのセグメントＩＤ。なお、未割当の場合はＮＵＬＬ値が格納される。
（ｂ４）当該チャンクに対するアクセス測定値。アクセス測定値としては、例えば、リードやライトの回数、リードやライトのレスポンスタイム、単位時間当たりのリードライトの回数（ＩＯＰＳ）、平均又は最大レスポンスタイム、等がある。【０１６４】
なお、二つのプールから一つの仮想内部ＬＵにセグメントを同時提供しない場合は、チャンク毎にプールＩＤを管理する必要はなく、仮想内部ＬＵ毎に対応するストレージプールのＩＤを管理しておけば良い。また、容量は、仮想内部ＬＵに関する情報であるため、別な情報として保有してもよい。例えば、仮想内部ＬＵ構成情報として仮想内部ＬＵ毎の容量が保持される等である。この場合、各種容量が関係する処理は、当該情報を参照したり、生成したりすることは言うまでも無い。また、アクセス測定値は、チャンクではなくセグメントに対応する内容として図１０に示す情報に格納されてもよい。これは後述する管理側情報でも同様である。【０１６５】
図１２は、第１実施例に係るセルモード情報の一例を示す図である。【０１６６】
セルモード情報は、プールＩＤ（Ｐｏｏｌ−ＩＤ）及びセグメントＩＤ（ＳＥＧ−ＩＤ）毎のセルモード値、及びセル書き換え回数を含む。なお、プールにはＨＤＤが提供するブロック［Ｄ］を含むセグメントが含まれる場合があり、このようなセグメントに対しては、セルモード値は無効値（図中ではＨＤＤと記載）が設定される。その他のセルモード値が取りうる値は以下の通りである。
ＬＳＢ  ｏｎｌｙ：当該セグメントが、ＦＭＤ１０３０のＦＭセルのＬＳＢのみを利用した記憶領域を用いて、実体のアドレスＸのブロック［Ｄ］のデータを格納していることを示す。
ＬＳＢ／ＭＳＢ：当該セグメントが、ＦＭＤ１０３０のＦＭセルのＬＳＢまたはＭＳＢを利用した記憶領域を用いて、実体のアドレスＸのブロック［Ｄ］のデータを格納していることを示す。【０１６７】
なお、セルモードは、最も細かい粒度では１つのＦＭセルを単位として設定可能であり、１つのＦＭセルに対して１つのセルモード値が割り当てられるようにしてもよい。ただし、現実的には、１ページ、１イレースブロック、１ＦＭＤ１０３０、１パリティグループ、１内部ＬＵ、１仮想内部ＬＵといった単位でセルモード値を管理しても良い。【０１６８】
セル書き換え回数は、ＦＭＤ内部構成情報２０１３が持つセルプログラミングとセルイレースのサイクル回数、またはセルイレース回数である。【０１６９】
＜４．３．パリティグループ定義＞。【０１７０】
図１４は、第１実施例に係るＰＧ作成処理の一例のフローチャートである。なお、ＰＧ作成処理は、構成制御プログラム４０３０によって実行される。【０１７１】
構成制御プログラム４０３０は、管理サーバ１２００から、複数のＳＤＥＶの識別子（識別子は、物理的なストレージシステム１０００への搭載位置や論理的な識別情報でも代替可能である）とＲＡＩＤレベルとを含んだパリティグループ定義リクエストを受信し、そのリクエストに付随した情報（各ＦＭＤ識別子及びＲＡＩＤレベル）に基づいて、ＰＧ構成情報４０６０を作成及び／又は更新する（Ｓｔｅｐ１４００２）。なお、ＰＧ構成情報４０６０の対応するパリティグループの閉塞情報については、閉塞状態と設定する。【０１７２】
次いで、構成制御プログラム４０３０は、パリティグループを初期化（ミラーデータやパリティデータの作成を含む）する（Ｓｔｅｐ１４００３）。【０１７３】
次いで、構成制御プログラム４０３０は、ＰＧ構成情報４０６０の該当するパリティグループの閉塞情報を閉塞状態から正常状態へ変更し、利用可能なことを示し、管理サーバ１２００に完了メッセージを返す（Ｓｔｅｐ１４００４）。【０１７４】
＜４．４．内部ＬＵ定義＞。【０１７５】
図１５は、第１実施例に係る内部ＬＵ作成処理の一例のフローチャートである。内部ＬＵ作成処理は、構成制御プログラム４０３０によって実行される。【０１７６】
構成制御プログラム４０３０は、管理サーバ１２００から、以下に例示する（引数１）乃至（引数３）の一部または全ての情報を含んだ内部ＬＵ定義リクエストを受信したら、当該リクエストに付随した情報に基づいて、内部ＬＵ構成情報４０７０を作成及び／又は更新する（Ｓｔｅｐ１５００２）。なお、内部ＬＵ構成情報４０７０の対応する内部ＬＵの閉塞情報については、閉塞状態と設定する。
（引数１）パリティグループの識別子。
（引数２）パリティグループの開始アドレス［Ｇ］。
（引数３）内部ＬＵの記憶容量またはパリティグループの終了アドレス［Ｇ］。【０１７７】
なお、（引数３）については、終了アドレスが当該パリティグループのストライピングサイズの整数倍となることで、一つのパリティデータが複数の内部ＬＵで共有することを回避するチェックを実施してもよい。また、（引数２）と（引数３）は、パリティグループのブロックサイズで指定するとしたが、ストライピングサイズを単位として当該引数の値を受け取ってもよい。同様に、最終的にパリティグループの開始アドレス［Ｇ］と終了アドレス［Ｇ］を求められるのであれば、他の形式で引数を受け取ってもよい。【０１７８】
次いで、構成制御プログラム４０３０は、必要に応じて、内部ＬＵの初期化処理を行う（Ｓｔｅｐ１５００３）。例えば、初期化処理の一環として内部ＬＵの管理領域を作成してもよい。【０１７９】
次いで、構成制御プログラム４０３０は、内部ＬＵ構成情報４０７０の該当する内部ＬＵの閉塞情報を閉塞状態から正常状態へ変更することで、内部ＬＵが利用可能であることを示し、管理サーバ１２００に完了メッセージを返す（Ｓｔｅｐ１５００４）。【０１８０】
＜４．５．ＬＵパス定義＞。【０１８１】
図１６は、第１実施例に係るパス定義処理の一例のフローチャートである。パス定義処理は、構成制御プログラム４０３０によって実行される。【０１８２】
構成制御プログラム４０３０は、管理サーバ１２００から、仮想内部ＬＵの識別子とポート情報（最終的にＩ／Ｏポート１０１３の識別子またはＷＷＮへ変換可能な識別情報であればこれら以外の情報でもよい）とＬＵＮを含んだパス定義リクエストを受信する（Ｓｔｅｐ１６００２）。【０１８３】
次いで、構成制御プログラム４０３０は、リクエストで指定されたＷＷＮとＬＵＮが割り当て済みでないか確認し（Ｓｔｅｐ１６００３）、割り当て済みの場合はエラーで応答して処理を終了する。【０１８４】
一方、割り当て済みでない場合には、構成制御プログラム４０３０は、リクエストに付随した情報に基づいて、ＬＵパス情報４０８０を作成及び／又は更新し、完了メッセージを管理サーバ１２００へ返す（Ｓｔｅｐ１６００４）。【０１８５】
なお、ホスト１１００からのアクセスパス多重化のために、仮想内部ＬＵに対して複数のパス定義を行っても良い。また、定義されたパスの解除処理の場合は、管理サーバ１２００から、仮想内部ＬＵの識別子か、或いは、ＷＷＮとＬＵＮの組み合わせを用いて、ＬＵパス情報の対応エントリを見つけ、当該エントリを削除することによって、パス設定を解除してもよい。また、ＬＵパス定義リクエストでＷＷＮとＬＵＮを指定する代わりに、構成制御プログラム４０３０が空いているＷＷＮとＬＵＮを探して割り当ててもよい。【０１８６】
＜４．６．  ストレージプール定義＞。【０１８７】
図２９は、第１実施例に係るストレージプール作成、更新処理の一例のフローチャートである。ストレージプール作成、更新処理は、構成制御プログラム４０３０によって実行される。【０１８８】
構成制御プログラム４０３０は、管理サーバ１２００から、以下に例示する（引数１）乃至（引数２）の一部または全ての情報を含んだストレージプール定義リクエストを受信する（Ｓｔｅｐ２９００１）。
（引数１）ストレージプールの識別子（Ｐｏｏｌ−ＩＤ）。
（引数２）内部ＬＵのＬＵＩＤ（１つ以上指定）。【０１８９】
次いで、構成制御プログラム４０３０は、ストレージプール定義リクエストの中でストレージのＰｏｏｌ−ＩＤが指定されているかを確認する（Ｓｔｅｐ２９００２）。この結果、Ｐｏｏｌ−ＩＤが指定されている場合（Ｓｔｅｐ２９００２でＹＥＳ）には、構成制御プログラム４０３０は、プール情報４０４０Ａにおいて、指定されたＰｏｏｌ−ＩＤに該当するストレージプールに対して、指定された内部ＬＵを関連付け（Ｓｔｅｐ２９００３）、Ｓｔｅｐ２９００５に処理を進める。【０１９０】
一方、Ｐｏｏｌ−ＩＤが指定されていない場合（Ｓｔｅｐ２９００２でＮＯ）には、構成制御プログラム４０３０は、新規ストレージプール番号を採番、プール情報４０４０Ａにおいて、対応するエントリを作成し、指定された内部ＬＵを関連付け（Ｓｔｅｐ２９００４）、Ｓｔｅｐ２９００５に処理を進める。【０１９１】
Ｓｔｅｐ２９００５では、構成制御プログラム４０３０は、追加された内部ＬＵのセグメントに対してＳＥＧ−ＩＤを割り当て、プール情報４０４０Ａを更新する。なお、初期状態では、割当カラムをＮｏに設定し、ＭＬＢフラグをＮｏに設定する。【０１９２】
＜４．６ａ．  仮想内部ＬＵ定義＞。【０１９３】
図３０は、第１実施例に係る仮想内部ＬＵ作成処理の一例のフローチャートである。仮想内部ＬＵ作成処理は、構成制御プログラム４０３０によって実行される。【０１９４】
構成制御プログラム４０３０は、管理サーバ１２００から、以下に例示する（引数１）乃至（引数２）の一部または全ての情報を含んだ仮想内部ＬＵ定義リクエストを受信する（Ｓｔｅｐ３０００１）。
（引数１）ストレージプールの識別子。
（引数２）仮想内部ＬＵの仮想容量。【０１９５】
次いで、構成制御プログラム４０３０は、受信したリクエストに付随した情報に基づいて、新規作成する仮想内部ＬＵ−ＩＤ、仮想容量、指定されたＰｏｏｌ−ＩＤ、容量分のチャンクＩＤをＶＬ変換情報４０４０Ｂに設定する（Ｓｔｅｐ３０００２）。初期状態では、ＳＥＧ−ＩＤには、ｎｕｌｌが設定される。ライトが発生し、新規ページ割当が発生しタ場合には、ＶＬ変換情報４０４０ＢのＳＥＧ−ＩＤが更新される。なお、仮想容量は、これまで説明した通り、ＶＬ変換情報以外に設定されても良い。【０１９６】
＜４．６ｂ．  セルモード設定・変更＞。【０１９７】
＜４．６ｂ．１  ライト処理によるセルモード情報の更新＞【０１９８】
図３１は、第１実施例に係るライト時のセルモード情報更新処理の一例のフローチャートである。【０１９９】
内部ＬＵにホスト１１００からライトが発生する（Ｓｔｅｐ３１００１）と、構成制御プログラム４０３０が、プール情報４０４０Ａ、内部ＬＵ情報４０７０、ＳＤＥＶ情報４０５０を参照し、ライト対象セグメントのＳＤＥＶ情報を調べ、ＳＤＥＶがＦＭＤ１０３０かどうかを調べる（Ｓｔｅｐ３１００２）。【０２００】
この結果、ＳＤＥＶがＦＭＤ１０３０の場合（Ｓｔｅｐ３１００２でＹＥＳ）には、構成制御プログラム４０３０は、ＦＭＤ内部構成情報通知プログラム２０１４から該当セグメントに対応する全てのページのセル書き換え回数を取得し、それらのうち最大値（又は平均値、最小値、或いは、その他統計的な値）を計算する（Ｓｔｅｐ３１００３）。次いで、構成制御プログラム４０３０は、セルモードをＬＳＢ
Ｏｎｌｙとし、セルプログラミング・セルイレースのサイクル回数をＳｔｅｐ３１００３で計算した最大値として、セルモード情報４０９０に設定し（Ｓｔｅｐ３１００４）、処理を終了する。【０２０１】
一方、ＳＤＥＶがＦＭＤ１０３０でない場合（Ｓｔｅｐ３１００２でＹＥＳ）には、構成制御プログラム４０３０は、セルモードをＨＤＤとし、セル書き換え回数は空欄として、セルモード情報４０９０に設定し（Ｓｔｅｐ３１００５）、処理を終了する。【０２０２】
なお、本処理は、必ずしも１ライト単位で実施されなくてもよい。また、本処理は、ライト処理とは別なタイミングで実施されてもよい。また、前述の通り、ＦＭＤ１０３０のブロック［Ｄ］とページとの対応は動的に変化するため、常にセグメントとページの対応関係が固定されているわけではない。そのため、セル書き換え回数は、ＦＭＤ１０３０としてのセル書き換え回数としてＦＭＤ１０３０から取得され、この値が、Ｓｔｅｐ３１００３で用いられても良い。なお、ＦＭＤ１０３０としてのセル書き換え回数は、ＦＭＤ１０３０に含まれる全てのページ（予備扱いされているページは除いても良い）のセル書き換え回数の最大値であることが考えられるが、その他、最大値の代わりとして平均値、合計値、或いはその他統計的な値が採用されもよい。【０２０３】
また、上述の通り、セグメントサイズは、ページサイズより大きいため、多少のライトでセグメントに対応するページが変化したとしても、それは、セグメントに関係する全ページ数と比較すれば、影響は僅かである場合が想定される。この場合は、上述のように、セグメントに関係するブロック［Ｄ］をＦＭＤ１０３０に指示する等して、対応するページの書き換え回数の統計値が取得されれば、相応に正確な値を取得することが期待できる。【０２０４】
なお、これらセル書き換え回数については、ＦＭＤコントローラ２０１０が計算し、ストレージコントローラに送ることが考えられるが、ストレージコントローラが直接計算してもよい。また、他の方法でセル書き換え回数が得られても良い。【０２０５】
＜４．６ｂ．２  セルモード変更＞。【０２０６】
図３２は、第１実施例に係るセルモード変更処理受付時のセルモード情報変更処理の一例のフローチャートである。【０２０７】
構成制御プログラム４０３０は、管理サーバ１２００から、以下に例示する（引数１）乃至（引数２）の一部または全ての情報を含んだセルモード情報更新リクエストを受信したら、当該リクエストに付随した情報を基に、セルモード情報４０９０を更新する（Ｓｔｅｐ３２００１）。
（引数１）ストレージプールの識別子（Ｐｏｏｌ−ＩＤ）。
（引数２）セグメントの識別子（ＳＥＧ−ＩＤ）。
（引数３）セルモード値。【０２０８】
次いで、構成制御プログラム４０３０が、引数３をチェックし、セルモード値がＬＳＢ  ＯｎｌｙからＬＳＢ／ＭＳＢへの変更かどうかチェックする（Ｓｔｅｐ３２００２）。セルモード値がＬＳＢ  ＯｎｌｙからＬＳＢ／ＭＳＢへの変更である場合（Ｓｔｅｐ３２００２でＹＥＳ）には、構成制御プログラム４０３０は、プール情報４０４０Ａにおいて、引数１で指定されたＰｏｏｌ−ＩＤ、引数２で指定されたＳＥＧ−ＩＤを持つとともに、内部ＬＵ−ＩＤ、開始―終了アドレスを持った行を探索する。次いで、構成制御プログラム４０３０は、プール情報４０４０Ａにおいて、Ｐｏｏｌ−ＩＤには引数１の値、ＳＥＧ−ＩＤには新規セグメント番号、割当にはＮｏ、内部ＬＵ−ＩＤには、探索した内部ＬＵ−ＩＤの値、ＭＳＢフラグにはＹｅｓ、開始―終了アドレスには、探索した値を持つ行を１行追加し（Ｓｔｅｐ３２００３）、処理を終了する。【０２０９】
一方、セルモード値がＬＳＢ  ＯｎｌｙからＬＳＢ／ＭＳＢへの変更でない場合（Ｓｔｅｐ３２００２でＮＯ）には、構成制御プログラム４０３０は、引数３をチェックし、セルモード値がＬＳＢ／ＭＳＢからＬＳＢ  Ｏｎｌｙへの変更かどうかチェックする（Ｓｔｅｐ３２００４）。この結果、セルモード値がＬＳＢ／ＭＳＢからＬＳＢ  Ｏｎｌｙへの変更でない場合（Ｓｔｅｐ３２００４でＮＯ）には、構成制御プログラム４０３０は、処理を終了する。【０２１０】
一方、セルモード値がＬＳＢ／ＭＳＢからＬＳＢ  Ｏｎｌｙへの変更である場合（Ｓｔｅｐ３２００４でＹＥＳ）には、構成制御プログラム４０３０は、プール情報４０４０Ａにおいて、指定されたＳＥＧ−ＩＤのうち、ＭＳＢフラグがＹｅｓの行を１行削除する（Ｓｔｅｐ３２００５）。【０２１１】
なお、本実施例では、セルモードの変更はセグメント識別子を基準に実行しているが、必ずしもこれに制限されない。例えば、内部ＬＵのセルモードを内部ＬＵ単位で変更する場合に、内部ＬＵの開始から終了アドレス［Ｉ］、又は内部ＬＵの識別子を指定してもよい。また、パリティグループ単位でセルモードを変更する場合に、パリティグループの開始―終了アドレス［Ｇ］、又はパリティグループの識別子を指定してもよい。また、ＦＭＤ単位でセルモードを変更する場合に、ＦＭＤの開始―終了アドレス［Ｄ］、又はＦＭＤの識別子を指定してもよい。また、ＦＭセル単位でセルモードを変更する場合に、ＦＭセルの識別子を指定してもよい。【０２１２】
＜４．７  ライト処理＞。【０２１３】
図１７は、第１実施例に係るライト処理の一例のフローチャートである。【０２１４】
Ｉ／Ｏ処理プログラム４０１０は、ホスト１１００からライトリクエスト（ライトコマンド、及びライトデータ）を受信する（Ｓｔｅｐ１７００１）と、受け取ったライトリクエストが有するＩ／Ｏ情報を利用し、ライト先の仮想内部ＬＵのＩＤ、及びチャンクＩＤを特定する（Ｓｔｅｐ１７００２）。【０２１５】
次いで、Ｉ／Ｏ処理プログラム４０１０は、ＶＬ変換情報４０４０Ｂを利用して、特定したライト先のチャンクにセグメントが割り当て済みかどうかを調べる（Ｓｔｅｐ１７００３）。【０２１６】
この結果、セグメントが割り当て済みの場合（Ｓｔｅｐ１７００３でＹＥＳ）には、Ｉ／Ｏ処理プログラム４０１０は、Ｓｔｅｐ１７００５へ処理を進める。一方、セグメントが未割り当ての場合（Ｓｔｅｐ１７００３でＮＯ）には、Ｉ／Ｏ処理プログラム４０１０は、プール情報４０４０Ａを調べ、未割り当てのセグメントをチャンクに割り当てる。その後、Ｉ／Ｏ処理プログラム４０１０は、割り当てたセグメントに対応するプール情報４０４０Ａの割当をＹｅｓへ変更する。また、Ｉ／Ｏ処理プログラム４０１０は、現在割り当てたセグメントのＳＥＧ−ＩＤとＭＳＢフラグとをそれぞれ、ＶＬ変換情報４０４０ＢのＳＥＧ−ＩＤ及びＭＳＢフラグに設定し（Ｓｔｅｐ１７００４）、Ｓｔｅｐ１７００５に処理を進める。【０２１７】
Ｓｔｅｐ１７００５では、Ｉ／Ｏ処理プログラム４０１０は、プール情報４０４０Ａからライト対象となるセグメントのアドレス［Ｉ］をストライピングの計算とブロックサイズの変換とによって、ＳＤＥＶの識別子とＳＤＥＶのブロックアドレス［Ｄ］に変換する。【０２１８】
次いで、Ｉ／Ｏ処理プログラム４０１０は、変換したＳＤＥＶに対して、変換したブロックアドレス［Ｄ］と、ライト対象セグメントのＭＳＢフラグとを含むライトリクエストを送信する（Ｓｔｅｐ１７００６）。ここで、Ｉ／Ｏ処理プログラム４０１０は、ＭＳＢフラグがＹｅｓの場合は、ＳＤＥＶに対するライトリクエストのＬＵＮを１とし、ＭＳＢフラグがＮｏの場合は、ＳＤＥＶに対するライトリクエストのＬＵＮを０とする。なお、ライトデータをＳＤＥＶへ書き込む前に、一時的にキャッシュメモリにライトデータを格納してもよい。【０２１９】
次いで、Ｉ／Ｏ処理プログラム４０１０は、ＳＤＥＶからライト完了情報を受け取り、ライトを実行したブロックアドレス［Ｄ］に対応するセグメントについて、ＶＬ変換情報４０４０Ｂのアクセス測定情報を更新する（Ｓｔｅｐ１７００７）。なお、セルモード情報更新処理（図３１）が実行されて、セルモード情報４０９０が更新される。そして、Ｉ／Ｏ処理プログラム４０１０は、完了をホスト１１００に応答する（Ｓｔｅｐ１７００８）。【０２２０】
以上がライト処理である。なお、キャッシュメモリにライトデータを一時格納する場合、Ｓｔｅｐ１７００５以降は、ライトリクエストとは非同期に行われる。さらに、キャッシュメモリを用いる場合は、Ｓｔｅｐ１７００４のセグメントを探す処理は、ライトデータをキャッシュメモリに一時格納した後に実施されてもよい。また、キャッシュメモリの領域管理情報には、一時格納したライトデータがＬＳＢに書くべきなのかＭＳＢに書くべきなのか示す情報が含まれても良い。
＜４．８  リード処理＞。【０２２１】
図１８は、第１実施例に係るリード処理の一例のフローチャートである。【０２２２】
Ｉ／Ｏ処理プログラム４０１０は、リードリクエスト（リードコマンド）をホスト１１００から受信する（Ｓｔｅｐ１８００１）と、受信したリードコマンドが有するＩ／Ｏ先情報からリード元の仮想内部ＬＵのＩＤとチャンクＩＤを特定する。なお、キャッシュメモリ１０２０に対象となるチャンクＩＤのデータが存在している場合は、そのリード対象データをホスト１１００へ応答して当該フローを終了する。【０２２３】
Ｉ／Ｏ処理プログラム４０１０が、ＶＬ変換情報４０４０Ｂに基づいて、指定されたチャンクＩＤにセグメントが割り当てられているか確認する（Ｓｔｅｐ１８００２）。この結果、セグメントが割り当て済みでない場合（Ｓｔｅｐ１８００２でＮＯ）には、Ｉ／Ｏ処理プログラム４０１０が、所定の応答（例えば、ゼロを表すデータ）をホスト１１００へ応答し（Ｓｔｅｐ１８００３）、処理を終了する。【０２２４】
一方、セグメントが割当て済みの場合（Ｓｔｅｐ１８００２でＹＥＳ）には、Ｉ／Ｏ処理プログラム４０１０が、ＶＬ変換情報４０４０Ｂに基づいて、指定されたチャンクＩＤに対応するセグメントのＳＥＧ−ＩＤ、ＭＳＢフラグを調べ、さらにプール情報４０４０Ａの開始アドレス、終了アドレスに基づいて、リード対象となるセグメントのアドレス［Ｉ］をストライピングの計算とブロックサイズの変換とによって、ＳＤＥＶの識別子とＳＤＥＶのブロックアドレス［Ｄ］に変換する（Ｓｔｅｐ１８００４）。【０２２５】
次いで、Ｉ／Ｏ処理プログラム４０１０が、変換したＳＤＥＶに対して、変換したブロックアドレス［Ｄ］と、リード対象セグメントのＭＳＢフラグとを含むリードリクエストを送信する（Ｓｔｅｐ１８００５）。ここで、Ｉ／Ｏ処理プログラム４０１０は、ＭＳＢフラグがＹｅｓの場合には、ＳＤＥＶに対するリードリクエストのＬＵＮを１とし、ＭＳＢフラグがＮｏの場合には、ＳＤＥＶに対するリードリクエストのＬＵＮを０とする。【０２２６】
次いで、Ｉ／Ｏ処理プログラム４０１０は、ＳＤＥＶからリード完了情報を受け取り、リードを実行したブロックアドレス［Ｄ］に対応するセグメントについて、ＶＬ変換情報４０４０Ｂのアクセス測定情報を更新し（Ｓｔｅｐ１８００６）、処理を終了する。【０２２７】
＜４．９．  データ移動＞。【０２２８】
図１９は、第１実施例に係るデータ移動処理の一例のフローチャートである。【０２２９】
構成制御プログラム４０３０は、管理サーバ１２００から、以下に例示する（引数１）乃至（引数１０）の一部または全ての情報を含んだデータ移動リクエストを受信する（Ｓｔｅｐ１９００１）。
（引数１）移動元ストレージの識別子。
（引数２）移動元ストレージプールの識別子。
（引数３）移動元セグメントの識別子。
（引数４）移動元セグメントのＭＳＢフラグ。
（引数５）移動元セグメントの開始―終了アドレス［Ｉ］。
（引数６）移動先ストレージの識別子。
（引数７）移動先ストレージプールの識別子。
（引数８）移動先セグメントの識別子。
（引数９）移動先セグメントのＭＳＢフラグ。
（引数１０）移動先セグメントの開始―終了アドレス［Ｉ］。【０２３０】
なお、当該リクエストに含まれる引数は、チャンクと、チャンクに新たに対応させる、いわゆるデータ移動先となるセグメントと、を特定できれば、上記引数以外であってもよい。例えば、チャンクとセグメントのＩＤが、引数の一例であり、チャンクが、ブロック［Ｉ］アドレスで指定されるのも、引数の一例である。この場合、移動元セグメントは、指定されたチャンクに割り当てられたセグメントをＶＬ変換情報から特定されればよい。また、他の例としては、移動元のセグメントＩＤと移動先のセグメントＩＤが指定されても良い。【０２３１】
構成制御プログラム４０３０は、指定された移動元セグメントと移動先セグメントとそれぞれのアドレス［Ｉ］を、ストライピングの計算とブロックサイズの変換とによって、それぞれのＳＤＥＶの識別子とＳＤＥＶのブロックアドレス［Ｄ］に変換する（Ｓｔｅｐ１９００２）。【０２３２】
構成制御プログラム４０３０は、変換した移動元ＳＤＥＶに対して、変換したブロックアドレス［Ｄ］と、リード対象セグメントのＭＳＢフラグとを含むリードリクエストを送信し、対応するデータをリードする（Ｓｔｅｐ１９００３）。ここで、構成制御プログラム４０３０は、ＭＳＢフラグがＹｅｓの場合には、ＳＤＥＶに対するリードリクエストのＬＵＮを１とし、ＭＳＢフラグがＮｏの場合には、ＳＤＥＶに対するリードリクエストのＬＵＮを０とする。【０２３３】
次いで、構成制御プログラム４０３０は、変換した移動先ＳＤＥＶに対して、変換したブロックアドレス［Ｄ］と、ＭＳＢフラグと、Ｓｔｅｐ１９００３でリードしたデータとを含むライトリクエストを送信する（Ｓｔｅｐ１９００４）。ここで、構成制御プログラム４０３０は、ＭＳＢフラグがＹｅｓの場合には、ＳＤＥＶに対するライトリクエストのＬＵＮを１とし、ＭＳＢフラグがＮｏの場合には、ＳＤＥＶに対するライトリクエストのＬＵＮを０とする。なお、構成制御プログラム４０３０は、ライトデータをＳＤＥＶへ書き込む前に、一時的にキャッシュメモリ１０２０にライトデータを格納してもよい。【０２３４】
構成制御プログラム４０３０は、変換した移動元ＳＤＥＶに対して、変換したブロックアドレス［Ｄ］と、ＭＳＢフラグと、ゼロデータを含むライトリクエストを送信する（Ｓｔｅｐ１９００５）。この操作により、移動元ＳＤＥＶのデータが削除される。なお、Ｓｔｅｐ１９００５の処理は、Ｓｔｅｐ１９００４の処理後であれば、非同期に実行してもよい。つまり、ゼロデータのライトは、移動先ＳＤＥＶへのデータのライト後すぐに実行する必要はなく、例えば、移動元のセグメントに対して新たにライトリクエストが来たときに実行してもよい。また、本データの削除は行わなれなくても良い。【０２３５】
構成制御プログラム４０３０は、ＳＤＥＶからリード、ライト、削除（ゼロデータライト）完了を受信すると、プール情報４０４０Ａの割当、ＶＬ変換情報４０４０ＢのＳＥＧ−ＩＤとアクセス測定値、セルモード情報４０９０のセル書き換え回数の値を更新し（Ｓｔｅｐ１９００６）、処理を終了する。【０２３６】
＜５．管理サーバの詳細＞。【０２３７】
次に、管理サーバ１２００について説明する。【０２３８】
＜５．１．管理サーバが含む情報の詳細＞。【０２３９】
図２５は、第１実施例に係る管理側ＳＤＥＶ情報の一例を示す図である。【０２４０】
管理側ＳＤＥＶ情報１２０５０は、各ストレージシステム１０００に取り付けられたＳＤＥＶ（１０３０、１０４０等）に関する以下の情報を含む。
（ＭＡ１）ストレージシステム１０００の識別子。
（ＭＡ２）ＳＤＥＶの識別子。
（ＭＡ３）ＳＤＥＶの閉塞情報。
（ＭＡ４）ＳＤＥＶのＷＷＮ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｎａｍｅ）。ＳＤＥＶにアクセスするために必要なＦｉｂｒｅＣｈａｎｎｅｌの通信識別子。
（ＭＡ５）ＳＤＥＶの型番。これによってＳＤＥＶがＨＤＤ１０４０であるか、ＦＭＤ１０３０であるか判別することができる。
（ＭＡ６）ＳＤＥＶの提供容量。提供容量については、ＳＤＥＶから提供される。【０２４１】
なお、上記（ＭＡ２）乃至（ＭＡ６）のそれぞれの意味は、図５で説明したＳＤＥＶ情報４０５０の意味と同じである。しかし、管理側ＳＤＥＶ情報１２０５０とＳＤＥＶ情報４０５０とは同じデータ構造である必要は無い。同様に管理側ＳＤＥＶ情報１２０５０とＳＤＥＶ情報４０５０とは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要は無い。【０２４２】
図２６は、第１実施例に係る管理側ＰＧ構成情報の一例を示す図である。【０２４３】
管理側ＰＧ構成情報１２０６０は、各ストレージシステム１０００に定義されたパリティグループに関する以下の情報を含む。
（ＭＢ１）ストレージシステム１０００の識別子。
（ＭＢ２）パリティグループの識別子。
（ＭＢ３）パリティグループの閉塞情報。
（ＭＢ４）パリティグループのＲＡＩＤレベル。
（ＭＢ５）パリティグループに属するＳＤＥＶの数とＳＤＥＶの識別子。【０２４４】
なお、上記（ＭＢ２）乃至（ＭＢ５）のそれぞれの意味は図６で説明したＰＧ構成情報４０６０の意味と同じである。しかし、管理側ＰＧ構成情報１２０６０とＰＧ構成情報４０６０とは同じデータ構造である必要は無い。同様に管理側ＰＧ構成情報１２０６０とＰＧ構成情報４０６０とは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要は無い。【０２４５】
図２７は、第１実施例に係る管理側内部ＬＵ構成情報の一例を示す図である。【０２４６】
管理側内部ＬＵ構成情報１２０７０は、各ストレージシステム１０００に定義された内部ＬＵに関する以下の情報を含む。
（ＭＣ１）ストレージシステム１０００の識別子。
（ＭＣ２）内部ＬＵの識別子。
（ＭＣ３）内部ＬＵの閉塞情報。
（ＭＣ４）ＰＧ識別子と開始アドレス［Ｇ］と終了アドレス［Ｇ］。当該内部ＬＵの記憶領域として用いるパリティグループと、パリティグループ内の開始ブロックアドレス［Ｇ］と終了ブロックアドレス［Ｇ］とを示す。【０２４７】
なお、上記（ＭＣ２）乃至（ＭＣ４）のそれぞれの意味は図７で説明した内部ＬＵ構成情報４０７０の意味と同じである。しかし、管理側内部ＬＵ構成情報１２０７０と内部ＬＵ構成情報４０７０とは同じデータ構造である必要は無い。同様に管理側内部ＬＵ構成情報１２０７０と内部ＬＵ構成情報４０７０とは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要は無い。【０２４８】
図２８は、第１実施例に係る管理側ＬＵパス情報の一例を示す図である。【０２４９】
管理側ＬＵパス情報１２０８０は、各ストレージシステム１０００に定義された論理ユニットに関する以下の情報を含む。
（ＭＤ１）ストレージシステム１０００の識別子。
（ＭＤ２）ホスト１１００に対して提供する仮想内部ＬＵの識別子。
（ＭＤ３）ＷＷＮ（またはＩ／Ｏポート１０１３の識別子）。ＷＷＮは、ホスト１１００に対して提供する内部ＬＵを、どのポート１０１３から提供するかを示す。なお、ＷＷＮに代えて、ポート番号など、他種の識別子で代替されてもよい。また、ＬＵパス情報４０８０の該当する情報と異なる内容であってもよい（例えば、ストレージシステム１０００はＷＷＮで管理し、管理サーバ１２００はポート番号で管理する）。
（ＭＤ４）ＬＵＮ。【０２５０】
なお、上記（ＭＤ２）乃至（ＭＤ４）のそれぞれの意味は図１３で説明したＬＵパス情報４０８０の意味と同じである。しかし、管理側ＬＵパス情報１２０８０とＬＵパス情報４０８０とは同じデータ構造である必要は無い。同様に管理側ＬＵパス情報１２０８０とＬＵパス情報４０８０とは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要は無い。また、図１３で説明した通り、当該情報のＭＤ２には、内部ＬＵの識別子が登録されてもよい。また、本情報に仮想内部ＬＵの仮想容量が登録されてもよい。【０２５１】
図２１は、第１実施例に係る管理側プール情報の一例を示す図である。【０２５２】
管理側プール情報１２０４０Ａは、各ストレージシステム１０００に定義されたストレージプールに関して以下の情報を含む。
（ＭＥ１）ストレージシステム１０００の識別子。
（ＭＥ２）ストレージプールの識別子。
（ＭＥ３）ストレージプールに割り当てられたセグメント識別子。
（ＭＥ４）セグメント識別子が仮想内部ＬＵに割当済みか否かを示す割当情報。割当情報は、当該セグメントが後述する内部ＬＵの一つである仮想内部ＬＵのチャンクに割り当てられていればＹｅｓとなり、そうでない場合はＮｏとなる。
（ＭＥ５）当該セグメントに対応する内部ＬＵの識別子と、開始及び終了ブロック［Ｉ］アドレス。
（ＭＥ６）そのセグメントがＦＭＤ１０３０から割り当てられている場合におけるＦＭＤ１０３０のセルモードを示すＭＳＢフラグ。【０２５３】
なお、上記（ＭＥ４）乃至（ＭＥ６）のそれぞれの意味は図１０で説明したプール情報４０４０Ａの意味と同じである。しかし、管理側プール情報１２０４０Ａとプール情報４０４０Ａとは同じデータ構造である必要はない。同様に管理側プール情報１２０４０Ａとプール情報４０４０Ａとは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要はない。【０２５４】
図２２は、第１実施例に係る管理側ＶＬ変換情報の一例を示す図である。【０２５５】
管理側ＶＬ変換情報１２０４０Ｂは各ストレージシステム１０００に定義された仮想内部ＬＵに関して以下の情報を含む。
（ＭＦ１）ストレージシステム１０００の識別子。
（ＭＦ２）当該仮想内部ＬＵの仮想容量。
（ＭＦ３）当該チャンクに割り当てられたセグメントのＩＤと当該セグメントを含むプールのＩＤ。
（ＭＦ４）当該チャンクに割り当てられたセグメントのセグメントＩＤ。なお、セグメントが未割当の場合にはＮＵＬＬ値が格納される。
（ＭＦ５）当該チャンクに対するアクセス測定値。アクセス測定値としては、例えば、リードやライトの回数、リードやライト時間、単位時間当たりのリードライトの回数等がある。【０２５６】
なお、上記（ＭＦ２）乃至（ＭＦ５）のそれぞれの意味は図１１で説明したＶＬ変換情報４０４０Ｂの意味と同じである。しかし、管理側ＶＬ変換情報１２０４０ＢとＶＬ変換情報４０４０Ｂとは同じデータ構造である必要はない。同様に管理側ＶＬ変換情報１２０４０ＢとＶＬ変換情報４０４０Ｂとは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要はない。【０２５７】
図２３は、第１実施例に係る管理側セルモード情報の一例を示す図である。【０２５８】
管理側セルモード情報１２０９０は、各セグメント毎のセルモードに関して以下の情報を含む。
（ＭＧ１）ストレージシステム１０００の識別子。
（ＭＧ２）ストレージプールの識別子。
（ＭＧ３）ストレージプールに割り当てられたセグメント識別子。
（ＭＧ４）セルプログラミングとセルイレースのサイクル回数、またはセルイレース回数を表すセル書き換え回数。
（ＭＧ５）セルモード情報。なお、セルモードは、最も細かい粒度では１つのＦＭセルを単位として設定可能であり、一つのＦＭセルに対して１つのセルモード値が割り当てられるようにしてもよい。ただし、現実的には、１ページ、１イレースブロック、１ＦＭＤ１０３０、１パリティグループ、１内部ＬＵ、１仮想内部ＬＵといった単位でセルモード値を管理しても良い。【０２５９】
なお、上記（ＭＧ３）乃至（ＭＧ４）のそれぞれの意味は図１２で説明したセルモード情報４０９０の意味と同じである。しかし、管理側セルモード情報１２０９０とセルモード情報４０９０とは同じデータ構造である必要はない。同様に管理側セルモード情報１２０９０とセルモード情報４０９０とは同じ意味を持つ情報を含む場合も同じデータ表現形式で格納する必要はない。【０２６０】
図５１は、第１実施例に係るＡＰ性能要件情報の一例を示す図である。【０２６１】
ＡＰ性能要件情報１２１００は、ホスト１１００に割り当てられる内部ＬＵまたは仮想内部ＬＵと、ＬＵで動作するアプリケーション（以下、ＡＰと略す場合がある）と、そのアプリケーションの動作に求められる性能要件（例えばＩＯＰＳやレスポンスタイム）の情報を格納する。ＡＰ性能要件情報１２１００は、例えば、以下の情報を含む。
（ＭＨ１）ストレージシステム１０００を識別するためのストレージＩＤ。
（ＭＨ２）仮想内部ＬＵを識別するための識別子。内部ＬＵをホストが利用している場合は、当該箇所に内部ＬＵの識別子が含められても良い。
（ＭＨ３）ＬＵを利用しているホストを識別するためのホスト識別子。
（ＭＨ４）ＬＵで動作しているアプリケーションを識別するためのアプリケーション情報。
（ＭＨ５）アプリケーションの動作で求められる性能要件を示すＩＯＰＳ。【０２６２】
図５２は、第１実施例に係るセグメント割当傾向情報の一例を示す図である。【０２６３】
セグメント割当傾向情報１２１１０は、仮想内部ＬＵに単位時間に割り当てられるセグメントの量の傾向（増加の傾き）やＩＯＰＳを示す情報を格納する。セグメント割当傾向情報１２１１０は、例えば、以下の情報を含む。
（ＭＩ１）ストレージシステム１０００の識別子。
（ＭＩ２）仮想内部ＬＵの識別子。
（ＭＩ３）仮想内部ＬＵに割り当てられているＳＤＥＶの種別、又はセルモード。
（ＭＩ４）セグメント割当量の傾きを調べる単位時間。同図では１時間単位に情報が設定されているが、特にこの期間に限定されない。
（ＭＩ５）単位時間に増加したセグメントの割当量。
（ＭＩ６）仮想内部ＬＵの単位時間の間の平均ＩＯＰＳ。【０２６４】
図５３は、第１実施例に係るティア管理情報の一例を示す図である。【０２６５】
ティア管理情報１２１２０は、ストレージプールに属する記憶領域のうち、同等の性能や信頼性を持つ記憶領域をまとめた集合であるＴｉｅｒの情報を格納する。ティア管理情報１２１２０は、例えば、以下の情報を含む。
（ＭＪ１）ストレージシステム１０００の識別子。
（ＭＪ２）ストレージプールの識別子。
（ＭＪ３）ティアの識別子。
（ＭＪ４）当該ティアに含まれるセグメントで要求される性能の範囲。この性能の範囲としては、単位時間あたりのＩＯＰＳや累積ＩＯ数などが設定される。以降ではこの情報をティアレンジと呼ぶ場合がある。
（ＭＪ５）当該ストレージプールの当該ティアに含まれるセグメントの識別子。
（ＭＪ６）当該セグメントを構成するＳＤＥＶの種別、又はセルモード。セルモードを意識しないデータ移動処理の場合にはＳＤＥＶの種別が設定される。セルモードを意識したデータ移動処理の場合にはセルモードが設定される。詳細は後述する。【０２６６】
＜５．２．  ストレージシステムからの管理情報受信＞。【０２６７】
システム管理プログラム１２０１０は、以下の処理を行うことでストレージシステム１０００の情報を受信する。【０２６８】
システム管理プログラム１２０１０は、ストレージシステム１０００からストレージシステムの管理情報を受信する（Ｓｔｅｐ１）。次いで、システム管理プログラム１２０１０は、前述のストレージシステム管理情報に基づいて、以下の情報を作成または更新する（Ｓｔｅｐ２）。
（＊）管理側ＳＤＥＶ情報１２０５０
（＊）管理側ＰＧ構成情報１２０６０
（＊）管理側内部ＬＵ構成情報１２０７０
（＊）管理側ＬＵパス情報１２０８０
（＊）管理側セルモード情報１２０９０
（＊）管理側プール情報１２０４０Ａ
（＊）管理側ＶＬ変換情報１２０４０Ｂ
（＊）セグメント割当傾向情報１２１１０【０２６９】
なお、ストレージシステム１０００が送信するストレージシステム管理情報はストレージシステム１０００が含む以下の情報に基づいて作成される。
（＊）ＳＤＥＶ情報４０５０
（＊）ＰＧ構成情報４０６０
（＊）内部ＬＵ構成情報４０７０
（＊）ＬＵパス情報４０８０
（＊）セルモード情報４０９０
（＊）プール情報４０４０Ａ
（＊）ＶＬ変換情報４０４０Ｂ【０２７０】
ストレージシステム管理情報は、上記情報の一部または全て、または前回送信分からの差分を含むことが考えられるが、これら情報と同じデータ構造やデータ表現形式でストレージシステム管理情報に含める必要は無い。【０２７１】
なお、上記処理は管理者による管理サーバ１２００への指示を契機として実施しても良く、また、一部の情報がホスト１１００を経由せずに管理者から管理サーバ１２００へ入力された情報に基づいても良い。また、上記処理は繰り返し実行してもよい。【０２７２】
なお、セグメント割当傾向情報１２１１０は単位時間当たりの情報であるため、システム管理プログラム１２０１０は、ストレージシステム１０００からストレージシステム管理情報を単位時間ごとに繰り返し情報を受信することで、セグメント割当傾向情報１２１１０の値が設定される。【０２７３】
ＡＰ性能要件情報１２１００について、アプリケーション情報はシステム管理プログラム１２０１０がホスト１１００のホスト管理プログラム４０１４から情報を取得する。また、ストレージシステム管理情報はストレージシステム１０００が含む以下の情報に基づいて作成される。
（＊）ＳＤＥＶ情報４０５０
（＊）内部ＬＵ構成情報４０７０
（＊）ＬＵパス情報４０８０【０２７４】
なお、性能要件の値はユーザ（管理者）がＧＵＩなどで事前に設定しておく。もしくはアプリケーションがデフォルトで持っている値を設定する。【０２７５】
＜５．３  ティア定義手順＞。【０２７６】
管理サーバ１２００のティア管理情報１２１２０の設定方法について説明する。【０２７７】
ティア管理情報１２１２０は、ストレージプール作成時に作成される。ティア管理情報１２１２０のティア識別子とティアレンジは、システム管理プログラム１２０１０が自動的に決定してもよく、ユーザがストレージプール作成時に指定してもよい。【０２７８】
図３３は、第１実施例に係るティア情報を設定する処理の一例のフローチャートである。同図に示す処理は、ユーザが指定する場合のフローチャートである。【０２７９】
システム管理プログラム１２０１０は、ユーザから、以下に例示する（引数１）乃至（引数４）の一部または全ての情報を含んだストレージプール作成入力を受信したら（Ｓｔｅｐ３３００１）、当該入力に付随した情報に基づいて、管理側プール情報１２０４０Ａ及びティア管理情報１２１２０を更新する。
（引数１）ストレージプールの識別子。
（引数２）内部ＬＵのＬＵＩＤ（１つ以上指定）。
（引数３）各内部ＬＵをどのティアとするか、ティア識別子（引数２に対応して１つ以上指定）。
（引数４）ティア識別子の毎のティアレンジ。【０２８０】
次いで、システム管理プログラム１２０１０は、ストレージシステム１０００に対して、引数１と引数２の情報を含めたストレージプール定義リクエストを送信する（Ｓｔｅｐ３３００２）。【０２８１】
これにより、ストレージシステム１０００の構成制御プログラム４０３０は、ストレージプール作成、更新処理（図２９参照）を実行する（Ｓｔｅｐ３３００３）。【０２８２】
次いで、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａに作成したストレージプールの情報を追加し（Ｓｔｅｐ３３００４）、作成されたストレージプールの情報と引数３と引数４の情報からティア管理情報１２１２０を更新し（Ｓｔｅｐ３３００５）、処理を終了する。【０２８３】
＜５．４  セルモードを含むストレージシステム管理情報の表示＞。【０２８４】
次に、管理サーバ１２００の管理情報の表示について、表示内容の算出処理と共に説明する。なお、それぞれの管理情報の表示は、管理サーバ１２００が有する以下の情報に基づいて行われる。
（＊）管理側ＳＤＥＶ情報１２０５０
（＊）管理側ＰＧ構成情報１２０６０
（＊）管理側内部ＬＵ構成情報１２０７０
（＊）管理側ＬＵパス情報１２０８０
（＊）管理側セルモード情報１２０９０
（＊）管理側プール情報１２０４０Ａ
（＊）管理側ＶＬ変換情報１２０４０Ｂ
（＊）ＡＰ性能要件情報１２１００
（＊）セグメント割当傾向情報１２１１０
（＊）ティア管理情報１２１２０【０２８５】
なお、以後の説明では、管理サーバ１２００が管理する上記情報をまとめてシステム管理情報と呼ぶことがある。なお、このシステム管理情報は上記情報が全て含まれるとは限らない。例えば、本発明は、ＡＰ性能要件情報１２１００や、セグメント割当傾向情報１２１１０を用いない運用も可能であり、また、ホストＬＵやアプリケーションを考慮せずにセルモードを設定する場合もあるため、そうした実施例の際には、上記全ての情報が必要ではないからである。【０２８６】
図４１は、第１実施例に係るストレージプール詳細を示すＧＵＩの一例を示す図である。同図は、管理サーバ１２００が、ストレージシステム１０００のストレージプール１０８０に関する情報を入出力装置により表示する画面の一例である。【０２８７】
表示画面４１０００は、第１ペイン４１００１、第２ペイン４１００２、第３ペイン４１００３、第４ペイン４１００４、及び第５ペイン４１００５の５つのいずれか又は全てを含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。【０２８８】
（第１ペイン４１００１）第１ペイン４１００１には、管理サーバ１２００が管理するストレージシステム１０００及びストレージシステム１０００のストレージプール、及びストレージプールに関するコンポーネント（たとえばティア）を意味する表示オブジェクトが表示される。なお、図４１における表示オブジェクトは、アイコン又は／及び文字列を指すが、他の映像又は音声であってもよい。さらに、第１ペイン４１００１は、表示オブジェクト間の上位関係、等位関係、又は下位関係を表示する。なお、以後の説明では、第１ペインを用いて指定された表示オブジェクトを第１ペイン指定表示オブジェクトと呼ぶことがある。【０２８９】
（第２ペイン４１００２）第２ペイン４１００２には、第１ペイン指定表示オブジェクトに対応するストレージプール１０８０の管理情報が表示される。図４１では、ストレージプール１０８０が有する管理情報として、ティア識別子、ティアの容量、ティアの空き容量、ティアの空き容量のうちＬＳＢ  Ｏｎｌｙモードの空き容量、ティアの空き容量のうちＬＳＢ／ＭＳＢモードの空き容量、ティアの空き容量のうちＨＤＤモードの空き容量を管理情報として表示しているが、これに限定されない。なお、ティアの空き容量とは、ティアに割り当てられた内部ＬＵの全容量のうち、実際に仮想内部ＬＵに割り当てられていないセグメントの容量である。【０２９０】
図示されているように、第２ペインには、セルモード毎のプール内空き容量も表示される。また第２ペインは、各ティアとセルモードとの対応関係についても表示される。【０２９１】
（第３ペイン４１００３）第３ペイン４１００３には、第１ペイン指定表示オブジェクトに対応するストレージプール１０８０の一定時間毎のセグメント割り当て容量が、ストレージプールのティア毎にグラフで表示される。図４１では、全てのティア情報を１つのペインで表示しているが、例えば入出力装置にポインティングデバイス（例えばマウス、タッチパッド、タッチスクリーン、ペンタブレット）を含む場合で、第２ペイン４１００２の管理情報において、或るティアを選択したときに、選択したティアのみの情報を表示するようにしてもよい。なお、必ずしもグラフで表示する必要はなく、例えば単位時間毎の各ティアの容量を表形式で表示してもよい。【０２９２】
（第４ペイン４１００４）第４ペイン４１００４には、指定表示オブジェクトに対応するストレージプール１０８０について、構成要素のＳＤＥＶがＦＭＤ１０３０である場合におけるＬＳＢ  Ｏｎｌｙ又はＬＳＢ／ＭＳＢのセルモードの比率が表示される。また、そのセルモード比率をユーザが手動で設定するか、管理システムで自動制御するかどうかを選択するためのチェックボックスを表示する。図４１では、「ユーザ指定」と書かれたチェックボックスはユーザが手動でセルモード比率を設定することを可能とするチェックボックスである。このチェックボックスにチェックされた場合には、図４１の第４ペイン４１００４のスライダを動かすことが可能となり、セルモード比率変更ボタンをクリックすることにより、ユーザがセルモード比率の変更指示を出すことが可能となる。図４１の「Ａｕｔｏ」と書かれたチェックボックスがチェックされた場合は、＜５．６＞で後述するセルモードを意識した記憶領域階層管理を管理システムが実施する。【０２９３】
なお、これらのチェックはチェックボックスに限定されず、例えば、ラジオボタンやその他のアイコンでチェックすることも可能である。また、セルモード比率の変更もスライダに限定されず、例えばテキストボックスにＬＳＢ
Ｏｎｌｙ比率を直接値で入力してもよい。また、セルモード比率変更ボタンを押さずにスライドの移動のみでセルモード変更リクエストが送信されてもよい。【０２９４】
（第５ペイン４１００５）第５ペイン４１００５には、第１ペイン指定表示オブジェクトに対応するストレージプール１０８０について、当該ストレージプール１０８０から作成される仮想内部ＬＵの管理情報が表示される。図４１の画面表示では、ストレージプール１０８０に定義された仮想内部ＬＵの管理情報として、以下の内容が表示される。
（＊）仮想内部ＬＵ識別子。
（＊）仮想内部ＬＵの容量。
（＊）仮想内部ＬＵの空き容量（仮想内部ＬＵの容量のうち、実際に仮想内部ＬＵにセグメントが割り当てられていない容量）。
（＊）仮想内部ＬＵの実際のＩＯＰＳと当該ＬＵで動作しているアプリケーションが要求しているＩＯＰＳの値とその比率。
（＊）仮想内部ＬＵに割り当てられているセグメントのうち、ＬＳＢ  Ｏｎｌｙのセルモードの割合
（＊）仮想内部ＬＵに割り当てられているセグメントのうち、ＬＳＢ／ＭＳＢのセルモードの割合
（＊）仮想内部ＬＵに割り当てられているセグメントのうち、ＨＤＤのセルモードの割合。【０２９５】
しかし、上記の全てが表示されなくてもよく、また追加の情報が表示されてもよい。なお、実際のＩＯＰＳと要求ＩＯＰＳの比率が１を十分に超えている場合は、要求以上の性能が出ているため問題無いが、１に近いか、１より少ない場合は、要求される性能を満たさない、あるいは満たさなくなる恐れがあるため、例えば、ＬＳＢ  Ｏｎｌｙのセルモードを増やして性能向上を図るという判断をすることが可能となる。【０２９６】
なお、図４１又は以後説明する図４２乃至図４３、図４６乃至図５０の例ではＧＵＩを想定しているが、コマンドラインインターフェース（ＣＬＩ）を用いたコンソール出力であってもよい。【０２９７】
図４２は、第１実施例に係るティア詳細を示すＧＵＩの一例を示す図である。同図は、管理サーバ１２００が、ストレージシステム１０００のストレージプール１０８０に関連するティアの情報を入出力装置により表示する画面の一例である。なお、以後の図では仮想内部ＬＵを「Vol」と表現している。【０２９８】
表示画面４２０００は、第１ペイン４２００１、第２ペイン４２００２、第３ペイン４２００３、第４ペイン４２００４、及び第５ペイン４２００５の５つのいずれか又は全てを含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。【０２９９】
（第１ペイン４２００１）第１ペイン４２００１には、図４１の第１ペイン４１００１と同様に、管理サーバ１２００が管理するストレージシステム１０００及びストレージシステム１０００のストレージプール、及びストレージプールに関するコンポーネント（たとえばティア）を意味する表示オブジェクトが表示される。図４２ではプールの下位関係としてティアを表示している。【０３００】
（第２ペイン４２００２）第２ペイン４２００２には、第１ペイン指定表示オブジェクトに対応するティアの管理情報が表示される。図４２では、ティアの管理情報として以下の情報が表示される。
（＊）全容量
（＊）空き容量（ティアに割り当てられた内部ＬＵの全容量のうち実際に仮想内部ＬＵに割り当てられていないセグメントの容量）。
（＊）セグメントが割り当てられている容量のうちＬＳＢ  Ｏｎｌｙモードの割合。
（＊）セグメントが割り当てられている容量のうちＬＳＢ／ＭＳＢモードの割合。
（＊）セグメントが割り当てられている容量のうちＨＤＤモードの割合。
（＊）ティアの空き容量のうちＬＳＢ  Ｏｎｌｙモードの空き容量。
（＊）ティアの空き容量のうちＬＳＢ／ＭＳＢモードの空き容量。
（＊）ティアの空き容量のうちＨＤＤモードの空き容量。【０３０１】
しかし、上記の全てが表示されなくてもよく、また追加の情報が表示されてもよい。【０３０２】
（第３ペイン４２００３）第３ペイン４２００３には、第１ペイン指定表示オブジェクトに対応するティアについてのセグメント割り当て容量が時系列でグラフとして表示される。なお、必ずしもグラフで表示する必要はなく、例えば単位時間毎の割り当てセグメント容量を表形式で表示してもよい。【０３０３】
（第４ペイン４２００４）第４ペイン４２００４には、第１ペイン指定表示オブジェクトが、ストレージプール１０８０のティアであり、ティアに含まれるＳＤＥＶがＦＭＤ１０３０である場合の、ＬＳＢ  Ｏｎｌｙ又はＬＳＢ／ＭＳＢのセルモードの比率が表示される。また、そのセルモード比率をユーザが手動で設定するか、ストレージ管理システムで自動制御するかどうかを選択するためのチェックボックスが表示される。機能は図４１の第４ペイン４１００４と同じであるが、当該ＧＵＩからはティア単位でセルモード変更を制御するために利用される。【０３０４】
（第５ペイン４２００５）第５ペイン４２００５には、第１ペイン指定表示オブジェクトに対応するティアを構成する内部ＬＵの情報が表示される。図４２では、ティアを構成する内部ＬＵの情報として、内部ＬＵ識別子、内部ＬＵの容量、ＳＤＥＶの種別、ＳＤＥＶがＦＭＤの場合はＬＳＢ  Ｏｎｌｙモードの割合、及びＳＤＥＶがＦＭＤの場合はＬＳＢ／ＭＳＢモードの割合、が管理情報として表示される。しかしこれら全てを表示しなくてもよく、また追加の情報を表示してもよい。なお、ティアを構成する要素が内部ＬＵに限定される必要はなく、例えばＰａｒｉｔｙＧｒｏｕｐでも、ＳＤＥＶそのものでもよい。その場合、それらについての上記項目が管理情報として表示される。【０３０５】
図４３は、第１実施例に係る仮想内部ＬＵ詳細を示すＧＵＩの一例を示す図である。同図は、管理サーバ１２００が、ストレージシステム１０００のストレージプール１０８０から作成する仮想内部ＬＵの管理情報を入出力装置により表示する画面の一例である。【０３０６】
表示画面４３０００は、第１ペイン４３００１、第２ペイン４３００２、第３ペイン４３００３、及び第４ペイン４３００４の４つのいずれか又は全てを含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。【０３０７】
（第１ペイン４３００１）第１ペイン４３００１には、図４１の第１ペイン４１００１と同様に、管理サーバ１２００が管理するストレージシステム１０００及びストレージシステム１０００のストレージプール、及びストレージプールに関するコンポーネント（たとえばティア）を意味する表示オブジェクトが表示される。図４３ではプールの下位関係として仮想内部ＬＵを表示している。なお、仮想内部ＬＵの数は数万個を超えることもある。このとき第１ペイン４３００１に必ずしも全てを一度に表示しなくてもよく、千個又は百個単位等でまとめる表示オブジェクトを表示してもよい。そのまとめた表示オブジェクトをクリックすると下位関係要素で１つずつ仮想内部ＬＵの表示オブジェクトが表示されてもよい。【０３０８】
（第２ペイン４３００２）第２ペイン４３００２には、第１ペイン指定表示オブジェクトに対応する仮想内部ＬＵの管理情報が表示される。図４３では、仮想内部ＬＵの管理情報として以下の内容が表示される。
（＊）仮想容量。
（＊）空き容量（仮想内部ＬＵにセグメントが割り当てられていない容量）。
（＊）ホストのＷＷＮ。
（＊）ＬＵＮ。
（＊）ストレージシステムが測定したＩＯＰＳ等のアクセス測定値。
（＊）当該仮想内部ＬＵ上で動作するアプリケーション。
（＊）当該アプリケーションが要求するＩＯＰＳ。
（＊）セグメントが割り当てられている容量のうちＬＳＢ  Ｏｎｌｙモードの割合。
（＊）セグメントが割り当てられている容量のうちＬＳＢ／ＭＳＢモードの割合。
（＊）セグメントが割り当てられている容量のうちＨＤＤモードの割合。【０３０９】
しかし、これら全てが表示されなくてもよく、また、追加の情報が表示されてもよい。これは、例えば、ホストのＷＷＮ、当該仮想内部ＬＵ上で動作するアプリケーション、及び、当該アプリケーションが要求するＩＯＰＳが、管理サーバ１２００に表示されない場合である。【０３１０】
（第３ペイン４３００３）第３ペイン４３００３には、第１ペイン指定表示オブジェクトに対応する仮想内部ＬＵのセグメント割り当て容量及びＩＯＰＳが時系列でグラフとして表示される。なお、必ずしもグラフで表示する必要はなく、例えば単位時間毎の割り当てセグメント容量を表形式で表示してもよい。また、本ペインには、割り当て容量の代わりに仮想容量に対する割合が表示されてもよい。【０３１１】
（第４ペイン４３００４）第４ペイン４３００４は、第１ペイン指定表示オブジェクトに対応する仮想内部ＬＵを対象に、仮想内部ＬＵに割り当てられているセグメントのセルモードを制御するためのペインである。機能は図４１の第４ペイン４１００４と同様である。【０３１２】
図４６は、第１実施例に係るパリティグループ詳細を示すＧＵＩの一例を示す図である。同図は、管理サーバ１２００が、ストレージシステム１０００のパリティグループ１０６０の管理情報を入出力装置により表示する画面の一例である。【０３１３】
表示画面４６０００は、第１ペイン４６００１、第２ペイン４６００２、第３ペイン４６００３、及び第４ペイン４６００４の４つのいずれか又は全てを含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。【０３１４】
（第１ペイン４６００１）第１ペイン４６００１には、管理サーバ１２００が管理するストレージシステム１０００及びストレージシステム１０００のパリティグループ、及びパリティグループに関するコンポーネント（たとえばＳＤＥＶ、内部ＬＵ）を意味する表示オブジェクトが表示される。図４６ではパリティグループの下位関係として内部ＬＵを表示している。なお、内部ＬＵの数は数万個を超えることもある。このとき第１ペイン４６００１に必ずしも全てを一度に表示しなくてもよく、千個又は百個単位等でまとめる表示オブジェクトを表示してもよい。そのまとめた表示オブジェクトをクリックすると下位関係要素で１つずつ仮想内部ＬＵの表示オブジェクトが表示されてもよい。【０３１５】
（第２ペイン４６００２）第２ペイン４６００２には、第１ペイン指定表示オブジェクトに対応するパリティグループの詳細情報が表示される。図４６では、パリティグループの管理情報として、全容量、未使用容量（内部ＬＵ作成に使用されていない容量）、ＲＡＩＤレベル、パリティグループ作成に利用されているＳＤＥＶのＩＤ、ＬＳＢ  Ｏｎｌｙモードの割合、ＬＳＢ／ＭＳＢモードの割合を管理情報として表示しているが、これに限定されない。【０３１６】
（第３ペイン４６００３）第３ペイン４６００３には、第１ペイン指定表示オブジェクトに対応するパリティグループの使用容量が時系列でグラフとして表示される。なお、必ずしもグラフで表示する必要はなく、例えば単位時間毎の割り当てセグメント容量を表形式で表示してもよい。【０３１７】
（第４ペイン４６００４）第４ペイン４６００４は、第１ペイン指定表示オブジェクトに対応するパリティグループを対象に、セルモードを制御するためのペインである。機能は、図４１の第４ペイン４１００４と同様である。【０３１８】
以上が、パリティグループに関係した表示であるが、図４３のように、アプリケーション要求ＩＯＰＳ、ＬＳＢ  Ｏｎｌｙ割合、ＬＳＢ／ＭＳＢ割合のいずれか一つ以上が表示されてもよい。【０３１９】
図４７は、第１実施例に係る内部ＬＵ詳細を示すＧＵＩの一例を示す図である。同図は、管理サーバ１２００が、ストレージシステム１０００の内部ＬＵ１０７０の管理情報を入出力装置により表示する画面の一例である。なお、本図における「Vol」は内部ＬＵである。ただし、本表示は、内部ＬＵを仮想内部ＬＵを経由せずにホストへ提供する場合、またはストレージプールに含めた内部ＬＵいずれに適用されてもよい。【０３２０】
表示画面４７０００は、第１ペイン４７００１、第２ペイン４７００２、第３ペイン４７００３、及び第４ペイン４７００４の４つのいずれか又は全てを含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。【０３２１】
（第１ペイン４７００１）第１ペイン４７００１には、図４６の第１ペイン４６００１と同様に、管理サーバ１２００が管理するストレージシステム１０００及びストレージシステム１０００の内部ＬＵ、及び内部ＬＵに関するコンポーネントを意味する表示オブジェクトが表示される。【０３２２】
（第２ペイン４７００２）第２ペイン４７００２には、第１ペイン指定表示オブジェクトに対応する内部ＬＵの詳細情報が表示される。図４７では、内部ＬＵの管理情報として、全容量、未使用容量、内部ＬＵ作成元パリティグループ、ホストのＷＷＮ、ＬＵＮ、ＩＯＰＳ、当該仮想内部ＬＵ上で動作するアプリケーション、当該アプリケーションが要求するＩＯＰＳ、ＬＳＢ  Ｏｎｌｙモードの割合、ＬＳＢ／ＭＳＢモードの割合、を管理情報として表示する。しかし、これらの全てが表示されなくてもよく、また追加の情報が表示されてもよい。【０３２３】
（第３ペイン４７００３）第３ペイン４７００３には、第１ペイン指定表示オブジェクトに対応する内部ＬＵについて、使用容量及びＩＯＰＳが時系列でグラフとして表示される。なお、必ずしもグラフで表示する必要はなく、例えば単位時間毎の割り当てセグメント容量を表形式で表示してもよい。【０３２４】
（第４ペイン４７００４）第４ペイン４７００４は、第１ペイン指定表示オブジェクトに対応する内部ＬＵに関して、内部ＬＵ単位でセルモードを制御するためのペインである。機能は図４１の第４ペイン４１００４と同様である。【０３２５】
図４８は、第１実施例に係るＦＭＤ詳細を示すＧＵＩの一例を示す図である。同図は、管理サーバ１２００が、ストレージシステム１０００のＦＭＤ１０３０の管理情報を入出力装置により表示する画面の一例である。【０３２６】
表示画面４８０００は、第１ペイン４８００１、第２ペイン４８００２、及び第３ペイン４８００３の３つのいずれか又は全てを含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。【０３２７】
（第１ペイン４８００１）第１ペイン４８００１には、図４６の第１ペイン４６００１と同様に、管理サーバ１２００が管理するストレージシステム１０００及びストレージシステム１０００のＦＭＤ１０３０、及びＦＭＤ１０３０に関するコンポーネントを意味する表示オブジェクトを表示する。図４８ではパリティグループの下位関係としてＦＭＤ１０３０を表示している。【０３２８】
（第２ペイン４８００２）第２ペイン４８００２には、第１ペイン指定表示オブジェクトに対応するＦＭＤの詳細情報が表示される。図４８では、ＦＭＤ１０３０の管理情報として、全容量、利用されているパリティグループ識別子、利用されているパリティグループに利用されている別のＦＭＤ識別子、ＬＳＢ  Ｏｎｌｙモードの割合、ＬＳＢ／ＭＳＢモードの割合、を管理情報として表示している。しかし、これら全てが表示されなくてもよく、また追加の情報が表示されてもよい。【０３２９】
（第３ペイン４８００３）第３ペイン４８００３は、第１ペイン４８００１を用いて入出力装置から指定された表示オブジェクトに対応するＦＭＤに関して、ＦＭＤ単位でセルモードを制御するためのペインである。機能は、ほぼ図４１の第４ペイン４１００４と同様であるが、同一パリティグループに属する別のＦＭＤ１０３０も同時にセルモードを変更可能とするチェックボックスが記載されている。【０３３０】
以上、本実施例の画面表示について説明してきた。なお、画面表示は、ペインを採用しなくてもよく、管理情報を表示すべきストレージシステム内部のコンポーネント（前述の通り、ＳＤＥＶ、パリティグループ、内部ＬＵ、ストレージプール、仮想内部ＬＵ）を管理者から入力を受け付けられれば第１ペインが表示されなくてもよい。また、セルモードに関する設定は、前述の通り比率による入力が受け付けられても良いが、よりシンプルに、対象コンポーネントに対してのセルモード自体を管理者に選択させ、その選択結果が入力として受け付けられてもよい。この場合、管理サーバの処理は、セルモード比率が０％か１００％で受け付ける場合と同様である。【０３３１】
＜５．５  セグメント単位での記憶領域階層管理＞。【０３３２】
セグメント単位での記憶領域階層管理について説明する。【０３３３】
図３４は、第１実施例に係るセグメント単位の階層管理の概要を示す図である。【０３３４】
ストレージプールＰＯＯＬ１が３つのティアを持っている。同図では、ストレージプールＰＯＯＬ１には、ＳＳＤティア、ＦＣティア、ＳＡＴＡティアの３つのティアがあり、ＳＳＤティアが最も高速、ＦＣティアが次に高速、ＳＡＴＡティアが最も低速という特性を持っている。【０３３５】
仮想内部ＬＵには、ストレージプールＰＯＯＬ１の各ティアから実記憶領域としてセグメントが割り当てられる。ストレージシステム、必要に応じて管理サーバは、ある一定期間毎に各チャンクのアクセス測定値を参照し、測定値の大きいチャンクを高性能Ｔｉｅｒのセグメントへ再配置し、測定値の大きくないチャンクを低性能Ｔｉｅｒのセグメントへ再配置することで、仮想内部ＬＵの利用状況に適したセグメントを割り当てる。これをセグメント単位での記憶領域階層管理と呼ぶ。【０３３６】
図３５は、第１実施例に係るセグメント単位で移動する対象を判断する処理の一例のフローチャートである。【０３３７】
システム管理プログラム１２０１０は、管理対象ストレージシステム１０００におけるＬＵ識別子が最も若い仮想内部ＬＵを選択し（Ｓｔｅｐ３５００１）、仮想内部ＬＵのチャンクＩＤが最も若いチャンクを選択する（Ｓｔｅｐ３５００２）。【０３３８】
次いで、システム管理プログラム１２０１０は、管理側ＶＬ変換情報１２０４０Ｂを利用し、選択中のチャンクに割り当てられているセグメントが適切か否か（言い方を変えれば別なセグメントに移動させるべきか否か）判定する（Ｓｔｅｐ３５００３）。本ステップは、具体的には選択中のチャンクに割当済みのセグメントを求め、求めたセグメントのティアレンジの条件（ティア管理情報１２１２０に格納）にチャンクのアクセス測定値が含まれるか否かをチェックする。この結果、ティアレンジの条件を満足している場合（Ｓｔｅｐ３５００３でＮＯ）には、システム管理プログラム１２０１０は、処理をＳｔｅｐ３５００５へ進める。【０３３９】
一方、ティアレンジの条件を満足しておらず、データ移動が必要である場合（Ｓｔｅｐ３５００３でＹＥＳ）には、システム管理プログラム１２０１０は、当該チャンクのアクセス測定値を含められるティアレンジを調べ、そのティアへ移動するようにストレージシステム１０００に対しデータ移動リクエストを送信する（Ｓｔｅｐ３５００４）。なお、データ移動リクエストで指定する移動先セグメントは、管理側ＶＬ変換情報１２０４０Ｂ、管理側セルモード情報１２０９０、管理側ＰＧ構成情報１２０６０（ＲＡＩＤレベル等）を利用し、ティアレンジを満足するセルモード（ＳＤＥＶ情報）であり、且つ未割当のセグメントを探索することで特定される。なお、データ移動リクエストで当該チャンクのＩＤを指定する。【０３４０】
これにより、構成制御プログラム４０３０は、データ移動処理（図１９）を実行し、レスポンスをシステム管理プログラム１２０１０に返すこととなる。システム管理プログラム１２０１０は、レスポンスが返ってくると、ティア管理情報１２１２０におけるセグメントのティア情報、ＳＤＥＶ情報を更新する。【０３４１】
次いで、システム管理プログラム１２０１０は、１つの仮想内部ＬＵの全てのチャンクＩＤに関してチェックしたかどうかを確認する（Ｓｔｅｐ３５００５）。この結果、全てのチャンクＩＤについてチェックしていない場合（Ｓｔｅｐ３５００５でＮＯ）には、システム管理プログラム１２０１０は、次の番号のチャンクＩＤを選択し（Ｓｔｅｐ３５００６）、処理をＳｔｅｐ３５００３へ進める。【０３４２】
一方、全てのチャンクＩＤについてチェックした場合（Ｓｔｅｐ３５００５でＹＥＳ）には、システム管理プログラム１２０１０は、１つのストレージシステム１０００の全ての仮想内部ＬＵに関してチェックしたかを確認する（Ｓｔｅｐ３５００７）。この結果、全ての仮想内部ＬＵについてチェックしていない場合（Ｓｔｅｐ３５００７でＮＯ）には、システム管理プログラム１２０１０は、次の仮想内部ＬＵを選択し（Ｓｔｅｐ３５００８）、処理をＳｔｅｐ３５００２へ進める。【０３４３】
一方、全ての仮想内部ＬＵについてチェックをしている場合（Ｓｔｅｐ３５００７でＹＥＳ）には、処理を終了する。【０３４４】
なお、データ移動リクエストに直接的に移動先セグメントのＩＤを指定できない場合は、他の指定方法で間接的に移動先セグメントを指定しても良い。また、当該リクエストに、移動先セグメントを検索する条件が含まれ、そのストレージシステム１０００に送信してもよい。この場合、ストレージコントローラは当該条件に基いて移動先セグメントを検索する。また、システム管理プログラム１２０１０は複数のチャンクについてのデータ移動リクエストをまとめて送信してもよい。【０３４５】
＜５．６．セグメント単位での記憶領域階層管理（セルモード変更を考慮）＞。【０３４６】
仮想内部ＬＵを利用した運用でのセルモードを考慮した階層管理を説明する。【０３４７】
図３６は、第１実施例に係るセルモードを考慮したセグメント単位の階層管理の概要を示す図である。【０３４８】
セルモード変更が可能な場合、従来のティア間でのデータコピーだけではなく、セグメント自身のセルモード変更（ＬＳＢ  Ｏｎｌｙと、ＬＳＢ／ＭＳＢとの変更）によりティアの変更が可能となる。よって、セルモード変更を考慮した階層管理を行う場合は、必ずしもデータコピーが発生しない。ただし、セルモード変更により利用可能な容量及びセル書き換え回数が増減するため、従来のティアレンジ（性能情報）だけではなく、容量やセル書き換え回数を意識して階層管理を行う。【０３４９】
図３７は、第１実施例に係るセルモード変更量判断処理の一例のフローチャートである。図３８と図３９は、第１実施例に係るセルモードをＬＳＢ／ＭＳＢモードからＬＳＢ  Ｏｎｌｙモードに変更する処理の一例のフローチャートである。図４０は、第１実施例に係るセルモードをＬＳＢ  ＯｎｌｙモードからＬＳＢ／ＭＳＢモードに変更する処理の一例のフローチャートである。概要を説明すると、図３７の処理にて、どのぐらいの量のセグメントについて、対応するＦＭＤ１０３０のセルモードを変更すべきかが判断される。その判断の結果、ＬＳＢ  Ｏｎｌｙモードのセグメントを増やすべきと判断された場合は、図３８及び３９で具体的にＬＳＢ  Ｏｎｌｙモードに変更するセグメントと、それに伴って行うべきデータ移動が判断される。また、ＬＳＢ／ＭＳＢモードのセグメントを増やすべきと判断した場合は、図４０で具体的にＬＳＢ／ＭＳＢモードに変更するセグメントと、それに伴って行うべきデータ移動が判断される。【０３５０】
これらのフローチャートでは、性能要件はティアレンジの情報を利用せず、アプリケーションで要求される性能要件を利用するが、特にこれに限定されず、ティアレンジの情報を利用してもよいし、別の要件を利用してもよい。【０３５１】
これら図３７乃至図４０が示す各処理は、定期的に（又はくり返し）、システム管理プログラム１２０１０によって実行される。実行される期間は、ユーザが設定しても、システム管理プログラム１２０１０が自動で決定してもよい。【０３５２】
＜５．６．１  セルモード変更判断＞。【０３５３】
以下に、図３７を説明する。なお、以下のフローでは、仮想内部ＬＵ単位で適切なセルモードが判断され、その結果を集約することでストレージプールとしてどのぐらいの量のセグメントについて、対応するＦＭＤ１０３０のセルモードを変更すべきかについて判断される。しかし、仮想内部ＬＵより細かい単位でこうした判断が行われても、また、仮想内部ＬＵより大きい単位でこうした判断が行われてもよい。【０３５４】
システム管理プログラム１２０１０は、管理対象ストレージシステム１０００におけるあるストレージプールに対して、ＬＵ識別子が最も若い仮想内部ＬＵを選択する（Ｓｔｅｐ３７００１）。【０３５５】
次いで、システム管理プログラム１２０１０は、セグメント容量使用傾向情報１２１１０を調べ、仮想内部ＬＵに対するセグメント割り当ての増加率を調べ、いずれかのティアが一定時間後にこの仮想内部ＬＵのセグメントの割り当てにより枯渇しないかどうかを確認することで、セグメント使用量増加率の高低を判断する（Ｓｔｅｐ３７００２）。この一定時間は当該処理が行われる期間でもよいし、別の基準でもよい。また枯渇するかどうかではなく、ある一定の増加率を超えた場合に、セグメント使用量増加率が高いと判断してもよい。【０３５６】
セグメント使用量増加率が高いと判断した場合（Ｓｔｅｐ３７００２でＹＥＳ）には、システム管理プログラム１２０１０は、処理をＳｔｅｐ３７００３へ進める一方、セグメント使用量増加率が高くないと判断した場合（Ｓｔｅｐ３７００２でＮＯ）には、処理をＳｔｅｐ３７００４へ進める。【０３５７】
Ｓｔｅｐ３７００３では、システム管理プログラム１２０１０は、セグメント容量使用傾向情報１２１１０を利用し、仮想内部ＬＵの平均ＩＯＰＳを調べ、このＩＯＰＳがＡＰ性能要件情報１２１００の性能要件を満足しているかどうかを調べる。【０３５８】
この結果、ＩＯＰＳが性能要件を満足している場合（Ｓｔｅｐ３７００３でＹＥＳ）には、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、平均ＩＯＰＳが要求値よりも大きく、容量増加率が高く今後ティアの枯渇の恐れがあるため、過剰性能かつ容量不足と判断し（Ｓｔｅｐ３７００５）、処理をＳｔｅｐ３７００９へ進める。【０３５９】
一方、ＩＯＰＳが性能要件を満足していない場合（Ｓｔｅｐ３７００３でＮＯ）には、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、平均ＩＯＰＳが要求値よりも小さく、容量増加率が高く今後ティアの枯渇の恐れがあるため、性能不足かつ容量不足と判断し（Ｓｔｅｐ３７００６）、処理をＳｔｅｐ３７０１１に進める。【０３６０】
Ｓｔｅｐ３７００９では、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、セルモード変更可能かどうかを判断するために、管理側セルモード情報１２０９０と管理側ＶＬ変換情報１２０４０Ｂとを利用し、仮想内部ＬＵに割り当てられているセグメントに対応するセルのセル書き換え回数と所定の閾値と比較する（Ｓｔｅｐ３７００９）。なお、所定の閾値とは、ＭＳＢ書き換え時のカタログスペックにおける上限であることが考えられるが、他の値でもよい。なお、この時のカタログスペックとしては、ＭＬＣとして用いた場合の値であることが考えられる。しかし、所定の閾値は、他（例えばＳＬＣ）のカタログスペック値であってもよい。また、所定の閾値は、ユーザによって設定された上限値であってもよい。【０３６１】
セル書き換え回数が上限に達しているものがない場合（Ｓｔｅｐ３７００９でＹＥＳ）には、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、ＬＳＢ／ＭＳＢモードのセルを増やすべきと判断する（Ｓｔｅｐ３７０１０）。そして当該プログラムは、当該仮想内部ＬＵへの割り当て済みセグメントのうち、ＬＳＢ
Ｏｎｌｙのセルモードのセグメントの全容量を取得し、変更すべきＬＳＢ Ｏｎｌｙ容量（Ｃａｐ＿ＬＳＢＯｎｌｙと命名）から減算し（Ｓｔｅｐ３７０１４）、処理をＳｔｅｐ３７０１６に進める。【０３６２】
一方、セル書き換え回数が上限に達しているものがある場合（Ｓｔｅｐ３７００９でＮＯ）には、システム管理プログラム１２０１０は、処理をＳｔｅｐ３７０１１へ進める。【０３６３】
Ｓｔｅｐ３７０１１では、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、セルモード変更のみでは当該ボリュームの問題（性能不足、容量不足）は解決できないと判断しユーザへ警告を出す。また、ユーザに対して警告だけではなく、セルモード変更ではなくＨＤＤへの暫定ページの移動による容量不足解決や、ＦＭＤ追加による性能不足、容量不足問題を解決することなど別途解決案を表示してもよい。その後、システム管理プログラム１２０１０は、処理をＳｔｅｐ３７０１６に進める。【０３６４】
一方、Ｓｔｅｐ３７００４では、システム管理プログラム１２０１０は、セグメント容量使用傾向情報１２１１０を利用し、仮想内部ＬＵの平均ＩＯＰＳを調べ、このＩＯＰＳがＡＰ性能要件情報１２１００の性能要件を満足しているかどうかを調べる。【０３６５】
この結果、ＩＯＰＳが性能要件を満足している場合（Ｓｔｅｐ３７００４でＹＥＳ）には、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、平均ＩＯＰＳが要求値よりも大きく、容量増加率が低く今後ティアの枯渇の恐れが無いため、過剰性能かつ過剰容量と判断し（Ｓｔｅｐ３７００７）、当該仮想内部ＬＵについて、特にセルモードの変更は不要と判断し（Ｓｔｅｐ３７０１２）、処理をＳｔｅｐ３７０１６へ進める。【０３６６】
一方、ＩＯＰＳが性能要件を満足していない場合（Ｓｔｅｐ３７００４でＮＯ）には、システム管理プログラム１２０１０は、当該仮想内部ＬＵについて、平均ＩＯＰＳが要求値よりも小さく、容量増加率が低く今後ティアの枯渇の恐れが無いため、性能不足かつ過剰容量と判断し（Ｓｔｅｐ３７００８）、当該仮想内部ＬＵについて、ＬＳＢ  Ｏｎｌｙ領域を増やすべきと判断する（Ｓｔｅｐ３７０１３）。【０３６７】
次いで、システム管理プログラム１２０１０は、当該仮想内部ＬＵへの割り当て済みセグメントのうち、ＬＳＢ
Ｏｎｌｙのセルモードのセグメントの全容量を取得し、変更すべきＬＳＢ Ｏｎｌｙ容量（Ｃａｐ＿ＬＳＢＯｎｌｙ）へ加算し（Ｓｔｅｐ３７０１５）、処理Ｓｔｅｐ３７０１６に進める。【０３６８】
Ｓｔｅｐ３７０１６では、システム管理プログラム１２０１０は、ストレージプールに属する全ての仮想内部ＬＵに対してチェックしたかどうかを確認する。この結果、全てチェックしていなければ（Ｓｔｅｐ３７０１６でＮＯ）、システム管理プログラム１２０１０は、次の番号の仮想内部ＬＵに対して、Ｓｔｅｐ３７００２からの処理を実行する。一方、全てチェックしていれば（Ｓｔｅｐ３７０１６でＹＥＳ）、システム管理プログラム１２０１０は、変更すべきＬＳＢ
Ｏｎｌｙ容量（Ｃａｐ＿ＬＳＢＯｎｌｙ）の値だけＬＳＢ  Ｏｎｌｙモードのセルを増加させると判断し（Ｓｔｅｐ３７０１７）、処理を終了する。なお、Ｃａｐ＿ＬＳＢＯｎｌｙが負の値の場合は、その容量だけＬＳＢ／ＭＳＢモードセルを増加させると判断する。【０３６９】
以上がセルモード変更量判断処理の説明である。なお、アプリケーションが低負荷で要求性能以上のリード又はライトリクエストを送信しない場合は、仮想内部ＬＵについて性能が不足と判断されてしまう。その対策として、アプリケーションの負荷や処理待ち状況や当該リクエストの送信待ち状況等の負荷状況が測定され、上記低負荷と判断された場合は、低負荷と判断された対象が、本処理の対象から外されても良い。また、ＩＯＰＳの代わりに、平均レスポンスタイム又は最大レスポンスタイムが用いられても良い。また、その他の方法でこのようなアプリケーション自体が低負荷だが性能不足と判断しないようにされてもよい。【０３７０】
＜５．６．２. 変更対象セル探索、変換処理＞。【０３７１】
図３８、図３９、及び図４０にセルモード変更量の判断が決まった場合に実行する変更対象セル探索及び変換処理の一例のフローチャートを示す。図３８と図３９は、図３７の処理においてＬＳＢ  Ｏｎｌｙモードのセルを増やすべきと判断した後の処理の一例のフローチャートである。ＬＳＢ／ＭＳＢモードからＬＳＢ  Ｏｎｌｙモードへ変更する場合は、ＭＳＢに記憶しているデータが無くなるため、ＭＳＢにデータが記憶されている場合はデータを移動する必要がある。そこで、図３８と図３９に示す処理では、セルモード変更時に移動せず変更してよいか、移動するか、移動する場合はどこからどこへ移動するかを判断してセルモードをＬＳＢ／ＭＳＢモードからＬＳＢ  Ｏｎｌｙモードへ変更する。以下、詳細に説明する。【０３７２】
図３８に示すように、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するストレージプールからセグメント番号が最も若いものを選択する（Ｓｔｅｐ３８００１）。【０３７３】
次いで、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセルモードを調べ（Ｓｔｅｐ３８００２）、セルモードがＬＳＢ／ＭＳＢである場合（Ｓｔｅｐ３８００２でＹＥＳ）には、処理をＳｔｅｐ３８００３に進める一方、セルモードがＬＳＢ／ＭＳＢ以外である場合（Ｓｔｅｐ３８００２でＮＯ）には、処理をＳｔｅｐ３８００４へ進める。【０３７４】
Ｓｔｅｐ３８００３では、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するセグメントがＦＭＤ１０３０のＭＳＢから構成されているか判断する。ＭＳＢから構成されている（つまりＭＳＢセグメントである）場合（ＹＥＳ）はＳｔｅｐ３８００７へ進む一方、ＬＳＢから構成されている（つまりＬＳＢセグメントである）場合（ＮＯ）はＳｔｅｐ３８００６へ進む。【０３７５】
Ｓｔｅｐ３８００６では、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するセグメントの割り当て状態を調べる。割り当て済みの場合（Ｓｔｅｐ３８００６でＹＥＳ）には、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するＬＳＢセグメントに対応するＭＳＢセグメントの割り当て状態を調べる（Ｓｔｅｐ３８００８）。【０３７６】
この結果、割り当て済みではない場合（Ｓｔｅｐ３８００８でＮＯ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ  Ｏｎｌｙ変換候補とし（Ｓｔｅｐ３８０１１）、処理をＳｔｅｐ３８０１６に進める。一方、割り当て済みの場合（Ｓｔｅｐ３８００８でＹＥＳ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ  Ｏｎｌｙ変換候補が少ない場合の移動元候補とし（Ｓｔｅｐ３８０１２）、処理をＳｔｅｐ３８０１６に進める。【０３７７】
一方、該当ＬＳＢセグメントが割り当て済みではない場合（Ｓｔｅｐ３８００６でＮＯ）には、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するＬＳＢセグメントに対応するＭＳＢセグメントの割り当て状態を調べる（Ｓｔｅｐ３８００９）。【０３７８】
この結果、調べたＭＳＢセグメントが割り当て済みではない場合（Ｓｔｅｐ３８００９でＮＯ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ  Ｏｎｌｙ変換候補とし（Ｓｔｅｐ３８０１１）、処理をＳｔｅｐ３８０１６に進める。一方、調べたＭＳＢセグメントが割り当て済みの場合（Ｓｔｅｐ３８００９でＹＥＳ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、自分自身がＬＳＢの場合はＭＳＢの内容をデータ移動するよう、データ移動リクエストをストレージシステム１０００に送信し、構成制御プログラム４０３０によるデータ移動処理（図１９）の完了後に、ＬＳＢの方のページをＬＳＢ  Ｏｎｌｙ候補とし（Ｓｔｅｐ３８０１３）、処理をＳｔｅｐ３８０１６に進める。なお、この時のデータ移動リクエストは、Ｓｔｅｐ３８００１又はＳｔｅｐ３８０１６で選択したセグメントを移動元として指定する。しかし、移動元セグメントが割り当てられたチャンクのＩＤが調べられ、当該チャンクＩＤがデータ移動リクエストで指定されてもよい。なお、例えば、この時の移動先セグメントは、未割当のＬＳＢセグメントであることが考えられる。【０３７９】
一方、Ｓｔｅｐ３８００１又はＳｔｅｐ３８０１６で選択したセグメントがＭＳＢセグメントの場合（Ｓｔｅｐ３８００３）には、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するセグメントの割り当て状態を調べる（Ｓｔｅｐ３８００７）。この結果、割り当て済みの場合（Ｓｔｅｐ３８００７でＹＥＳ）には、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するＭＳＢセグメントに対応するＬＳＢセグメントの割り当て状態を調べる（Ｓｔｅｐ３８０１０）。【０３８０】
この結果、割り当て済みの場合（Ｓｔｅｐ３８０１０でＹＥＳ）には、ステム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ  Ｏｎｌｙ変換候補が少ない場合の移動元候補とし（Ｓｔｅｐ３８０１２）、処理をＳｔｅｐ３８０１６に進める。一方、割り当て済みでない場合（Ｓｔｅｐ３８０１０でＮＯ）には、既に説明したＳｔｅｐ３０８１３を処理し、処理をＳｔｅｐ３８０１６に進める。【０３８１】
一方、Ｓｔｅｐ３８００１又はＳｔｅｐ３８０１６で選択したセグメントがＭＳＢセグメントであるが割り当て済みではない場合（Ｓｔｅｐ３８００７でＮＯ）には、システム管理プログラム１２０１０は、該当するＭＳＢセグメントに対応するＬＳＢセグメントのセル書き換え回数を保持し、そのセグメントをＬＳＢ  Ｏｎｌｙ候補とし（Ｓｔｅｐ３８０１４）、処理をＳｔｅｐ３８０１６に進める。【０３８２】
一方、Ｓｔｅｐ３８００４では、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセルモードを調べ、セルモードがＬＳＢ  ＯｎｌｙでなくＨＤＤである場合（Ｓｔｅｐ３８００４でＮＯ）には、処理を終了する一方、セルモードがＬＳＢ  Ｏｎｌｙモードである場合（Ｓｔｅｐ３８００４でＹＥＳ）には、処理をＳｔｅｐ３８００５へ進める。【０３８３】
Ｓｔｅｐ３８００５では、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するセグメントの割り当て状態を調べる。この結果、割り当て済みの場合（Ｓｔｅｐ３８００５でＹＥＳ）には、処理をＳｔｅｐ３８０１６に進める。【０３８４】
一方、未割当の場合（Ｓｔｅｐ３８００５でＮＯ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ  Ｏｎｌｙ変換候補が少ない場合の移動先候補とし（Ｓｔｅｐ３８０１５）、処理をＳｔｅｐ３８０１６に進める。【０３８５】
Ｓｔｅｐ３８０１６では、システム管理プログラム１２０１０は、１つのストレージプールに属する全てのセグメントのチェックが終わったかどうかを確認する。終わっていれば、システム管理プログラム１２０１０は、処理を図３９に示すＳｔｅｐ３８０１７へ進める一方、終わっていなければ、次のセグメントＩＤのセグメントを選択して、処理をＳｔｅｐ３８００２へ進める。【０３８６】
Ｓｔｅｐ３８０１７では、システム管理プログラム１２０１０は、Ｓｔｅｐ３８０１６までの処理で調べたＬＳＢ  Ｏｎｌｙ変換候補の全容量が、セル増加判断処理（図３７）で調べた変更すべきＬＳＢ  Ｏｎｌｙ容量を満足するか調べる（Ｓｔｅｐ３８０１７）。【０３８７】
この結果、容量を満足していれば（Ｓｔｅｐ３８０１７でＹＥＳ）、システム管理プログラム１２０１０は、ＬＳＢ  Ｏｎｌｙ変換候補のうち、セル書き換え回数の多いセグメントから必要な容量だけ選択し、ＬＳＢ  Ｏｎｌｙモードへセルモード変更するよう、構成制御プログラム４０３０へ指示を出し、管理側プール情報１２０４０Ａと管理側ＶＬ変換情報１２０４０Ｂと管理側セルモード情報１２０９０を更新し（Ｓｔｅｐ３８０１８）、処理を終了する。なお、書き換え回数の多いセグメントを優先してＬＳＢ  Ｏｎｌｙモードに変更するのは、ＬＳＢ  Ｏｎｌｙモードのほうが閾値電圧の低下度合いが小さく、データ読み込みエラーが発生しにくいからである。しかし、他のセグメントが優先されてもよい。【０３８８】
一方、容量を満足していなければ（Ｓｔｅｐ３８０１７でＮＯ）、システム管理プログラム１２０１０は、全ての変換候補に対して、ＬＳＢ  Ｏｎｌｙモードへセルモード変更するよう、構成制御プログラム４０３０へ指示を出し、管理側プール情報１２０４０Ａと管理側ＶＬ変換情報１２０４０Ｂと管理側セルモード情報１２０９０を更新する（Ｓｔｅｐ３８０１９）。【０３８９】
次いで、システム管理プログラム１２０１０は、Ｓｔｅｐ３８０１９で不足していた容量分だけ、書き換え回数の多い移動元候補（Ｓｔｅｐ３８０１２で選択）のＭＳＢセグメントから移動先候補（Ｓｔｅｐ３８０１５で選択）のＬＳＢセグメントへデータ移動するよう、データ移動リクエストをストレージシステム１０００に送信し、管理側プール情報１２０４０Ａ、管理側ＶＬ変換情報１２０４０Ｂ、及び管理側セルモード情報１２０９０を更新し（Ｓｔｅｐ３８０２０）、処理を終了する。なお、この時のデータ移動リクエストは、移動元候補セグメントと移動先候補セグメントを指定する。しかし、移動元セグメントが割り当てられたチャンクのＩＤが調べられ、当該チャンクＩＤがデータ移動リクエストで指定されてもよい。【０３９０】
なお、セルモードを考慮した階層管理における処理として、仮想内部ＬＵのセグメント単位でのセルモード変更を実行しているが、これに制限されない。階層管理ではない記憶領域の管理として、内部ＬＵ単位、パリティグループ単位、ＦＭＤ単位、ＦＭセル単位でＬＳＢ／ＭＳＢモードからＬＳＢ  Ｏｎｌｙモードへ変更する場合にも、入力の単位をそれぞれ、開始―終了アドレス［Ｉ］、開始―終了アドレス［Ｇ］、開始―終了アドレス［Ｄ］または内部ＬＵ識別子、パリティグループ識別子、ＦＭＤ識別子、ＦＭセル識別子を設定してもよい。【０３９１】
図４０は、図３７の処理においてＬＳＢ／ＭＳＢモードのセルを増やすべきと判断した後の処理の一例のフローチャートである。なお、ＬＳＢ  ＯｎｌｙモードからＬＳＢ／ＭＳＢモードへ変換する場合は、データが減らないためデータの移動は不要である。【０３９２】
システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するストレージプールからセグメント番号が最も若いものを選択する（Ｓｔｅｐ４０００１）。次いで、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセルモードを調べる（Ｓｔｅｐ４０００２）。【０３９３】
この結果、セルモードがＬＳＢ  Ｏｎｌｙ以外だった場合（Ｓｔｅｐ４０００２でＮＯ）には、システム管理プログラム１２０１０は、処理をＳｔｅｐ４０００６へ進める。一方、セルモードがＬＳＢ  Ｏｎｌｙモードだった場合（Ｓｔｅｐ４０００２でＹＥＳ）には、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、該当するセグメントの割り当て状態を調べる（Ｓｔｅｐ４０００３）。【０３９４】
この結果、未割当の場合（Ｓｔｅｐ４０００３でＹＥＳ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ／ＭＳＢ第一変換候補とし（Ｓｔｅｐ４０００４）、処理をＳｔｅｐ４０００６に進める。【０３９５】
一方、割り当て済みの場合（Ｓｔｅｐ４０００３でＮＯ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、該当するセグメントのセル書き換え回数を保持し、当該セグメントをＬＳＢ／ＭＳＢ第二変換候補とし（Ｓｔｅｐ４０００５）、処理をＳｔｅｐ４０００６に進める。【０３９６】
Ｓｔｅｐ４０００６では、システム管理プログラム１２０１０は、１つのストレージプールに属する全てのセグメントのチェックが終わったかどうかを確認する。終わっていなければ（Ｓｔｅｐ４０００６でＮＯ）、システム管理プログラム１２０１０は、次のセグメントＩＤのセグメントを選択し、処理をＳｔｅｐ４０００２へ進める。【０３９７】
一方、終わっていれば（Ｓｔｅｐ４０００６でＹＥＳ）、システム管理プログラム１２０１０は、Ｓｔｅｐ４０００６までで調べたＬＳＢ／ＭＳＢ変換候補の全容量が、セル増加判断処理（図３７）で調べた変更すべきＬＳＢ／ＭＳＢ容量を満足するか調べる（Ｓｔｅｐ４０００７）。【０３９８】
この結果、容量を満足していれば（Ｓｔｅｐ４０００７でＹＥＳ）、システム管理プログラム１２０１０は、ＬＳＢ／ＭＳＢ第一変換候補のうち、セル書き換え回数の少ないセルから必要な容量だけ選択し、ＬＳＢ／ＭＳＢモードへセルモード変更するよう、構成制御プログラム４０３０へ指示を出し、管理側プール情報１２０４０Ａと管理側ＶＬ変換情報１２０４０Ｂと管理側セルモード情報１２０９０を更新し（Ｓｔｅｐ４０００８）、処理を終了する。【０３９９】
一方、容量を満足していなければ（Ｓｔｅｐ４０００７でＮＯ）、システム管理プログラム１２０１０は、全ての第一変換候補に対して、ＬＳＢ／ＭＳＢモードへセルモード変更するよう、構成制御プログラム４０３０へ指示を出し、管理側プール情報１２０４０Ａと管理側ＶＬ変換情報１２０４０Ｂと管理側セルモード情報１２０９０を更新する（Ｓｔｅｐ４０００９）。【０４００】
次いで、システム管理プログラム１２０１０は、Ｓｔｅｐ４０００９で不足していた容量分だけ、書き換え回数の少ないＬＳＢ／ＭＳＢ第二変換候補をＬＳＢ／ＭＳＢモードへセルモード変更するよう、構成制御プログラム４０３０へ指示を出し、管理側プール情報１２０４０Ａ、管理側ＶＬ変換情報、及び管理側セルモード情報１２０９０を更新し（Ｓｔｅｐ４００１０）、処理を終了する。【０４０１】
なお、セルモードを考慮した階層管理における処理として、仮想内部ＬＵのセグメント単位でのセルモード変更を実行しているが、これに制限されない。階層管理ではない記憶領域の管理として、内部ＬＵ単位、パリティグループ単位、ＦＭＤ単位、ＦＭセル単位でＬＳＢ／ＭＳＢモードからＬＳＢ  Ｏｎｌｙモードへ変更する場合にも入力の単位をそれぞれ、開始―終了アドレス［Ｉ］、開始―終了アドレス［Ｇ］、開始―終了アドレス［Ｄ］または内部ＬＵ識別子、パリティグループ識別子、ＦＭＤ識別子、ＦＭセル識別子を設定してもよい。【０４０２】
第１実施例によると、ストレージシステム導入後にメモリセルに記憶するビット数を柔軟に変化することのできるストレージシステムを提供することができる。また、このストレージシステムを柔軟に管理することができる。【０４０３】
以上、第１実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、ストレージコントローラ１０１０は、他の構成を採用することもできる。例えば、上記の構成に代えて、上位装置との通信を制御する複数の第一の制御部（例えば制御回路基板）と、ＦＭＤ１０３０との通信を制御する複数の第二の制御部（例えば制御回路基板）と、上位装置とＦＭＤ１０３０との間で授受されるデータを記憶することができるキャッシュメモリと、ストレージシステム１０００を制御するためのデータを記憶することができる制御メモリと、各第一の制御部、各第二の制御部、キャッシュメモリ及び制御メモリを接続する接続部（例えば、クロスバスイッチなどのスイッチ）とを含むことができる。この場合、第一の制御部と第二の制御部の一方が、又は双方が協働して、前述したストレージコントローラ１０１０としての処理を行うことができる。制御メモリは無くても良く、その場合、キャッシュメモリに、制御メモリが記憶する情報を記憶する領域が設けられても良い。【０４０４】
また、ＦＭＤのセルモードを管理するのはストレージコントローラ１０１０ではなくＦＭＤコントローラ２０１０でもよい。【０４０５】
また、メモリセルの値は、ＬＳＢとＭＳＢの２ビットだけではなく、１つのメモリセルに３ビット以上の値をセルプログラミング、セルイレースすることにより、ＦＭＤに対応するセルモードを３ビット以上に対応させてもよい。例えば、３ビットの場合は１ビットＯｎｌｙ、２ビット変更可、３ビット変更可の３つのセルモードを指定可能となる。
【実施例２】
【０４０６】
以下、図面を参照して、第２実施例について説明する。なお、第２実施例の説明では、第１実施例との差異について説明する。【０４０７】
第２実施例では、セルモードを制御するための基準の情報として、第１実施例のアプリケーションのＩ／Ｏ性能要件ではなく、アクセス測定値に基づいてセルモードを制御する。第２実施例は、第１実施例に対して、Ｉ／Ｏヒストグラム表示画面（図５０）を新たに設けるとともに、図３７に示すセルモード変更判断処理を、図４４に示す処理に変えたものである。【０４０８】
図５０は、第２実施例に係るＩ／Ｏヒストグラムを表示するＧＵＩの一例を示す図である。【０４０９】
表示画面５００００は、第１ペイン５０００１、第２ペイン５０００２、第３ペイン５０００３を含み、それぞれのペインでは以下に示すような情報が表示され、また入出力装置による入力を支援する。なお、表示画面５００００に表示されるペインは、これに限定されず、例えば、図４１に示す第４ペイン４１００４、第５ペイン４１００５を含んでもよい。【０４１０】
（第１ペイン５０００１）第１ペイン５０００１は、図４１の第１ペイン４１００１と同様な構成である。【０４１１】
（第２ペイン５０００２）第２ペイン５０００２は、図４１の第２ペイン４１００２と同様な構成である。【０４１２】
（第３ペイン５０００３）第３ペイン５０００３には、第１ペイン５０００１を用いて入出力装置から指定された表示オブジェクトに対応するストレージプール１０８０に含まれるセグメントのＩ／Ｏヒストグラムが表示される。Ｉ／Ｏヒストグラムは、グラフの縦軸を各セグメントのアクセス測定値とし、アクセス測定値の多い順に左からセグメントを並べたものである。したがって、本表示をするために、システム管理プログラム１２０１０は、管理側ＶＬ変換情報１２０４０Ｂのアクセス測定値でソートした内容でヒストグラムを作成することは言うまでもない。第３ペイン５０００３には、セルモードを制御するためのスライダがあり、ユーザ指定のチェックボックスにチェックを入れている場合には、スライダを左右に操作することでセルモードの比率を変更する指示を行うことができる。すなわち、第３ペイン５０００３においては、スライダを右に動かすことにより、より多くのアクセス測定値が多いセグメントをＬＳＢ  Ｏｎｌｙモードに設定することができる。なお、本画面ではスライダを変更した後、セルモード比率変更ボタンが押下したときに、システム管理プログラム１２０１０に、セルモード比率を入力として受信する。ユーザによるチェックを受け付ける方法としては、チェックボックスに限定されず、例えばラジオボタンやその他のアイコンでチェックを受け付けることも可能である。【０４１３】
なお、ヒストグラムの横軸とスライダのレールオブジェクトは、平行に配置するほうが好ましい。さらに、レールオブジェクトのスライダからの左右の長さはセルモード変更前におけるＬＳＢ  Ｏｎｌｙモードであるセグメントの数（又は容量）と、ＬＳＢ／ＭＳＢモードであるセグメントの数（又は容量）に比例させてもよい。さらには、ヒストグラムの横軸の単位長が示すセグメント数（又は容量）と、レールの単位長が示すセグメント数（又は容量）は、同じになるように、レールが画面に配置されてもよい。これは、例えば、一例として１ドットが１セグメントを指すのであれば、レールの１ドットも１セグメント分のセルモード変更に関するものとして表示するということである。これは、１cm分が１００セグメントや１ＧＢ分のセグメントである場合も同様である。さらには、変更後のセルモード比率をシミュレーションできるように、スライダを操作中にＬＳＢ  Ｏｎｌｙモードを表す左側レールの長さと、ＬＳＢ／ＭＳＢモードを表す右側レールの長さを変更させてもよい。これは例えば、ＬＳＢ  Ｏｎｌｙモード側へ１ｃｍスライダを移動させた場合は、左側レールは１ｃｍ短くなるが、右側レールは２ｃｍ長くなる（１ｃｍ分のＬＳＢ  Ｏｎｌｙモードから２ｃｍ分のセグメントからＬＳＢ／ＭＳＢモード分のセグメントが生じる）。【０４１４】
また、ＦＭＤ１０３０から構成される未割当のセグメントも、本ヒストグラム表示対象にされてもよい。この場合、未割当セグメントに対するアクセス測定値は、ゼロ相当として表示されてよい。また、ＨＤＤから構成されるセグメントも、本ヒストグラムの表示対象にされてもよい。【０４１５】
しかし、セルモード比率の変更も、スライダに限定されず、例えば、テキストボックスにＬＳＢ
Ｏｎｌｙ比率を直接値で入力してもよく、図５０の縦点線をスライダ相当として移動させてもよい。また、セルモード比率変更ボタンを押さずにスライドの移動のみでセルモード変更リクエストが送信されるようにしてもよい。また、ＧＵＩに限定されず、ＣＬＩでアクセス測定値を表示し、管理サーバ１２００を用いるユーザにセルモード比率を入力させてもよい。【０４１６】
＜アクセス測定値を考慮したセルモード変更判断処理＞。【０４１７】
図４４は、第２実施例に係るアクセス測定値を考慮したセルモード変更処理の一例のフローチャートである。同図においては、図５０のＧＵＩからユーザがスライダによりＬＳＢ  Ｏｎｌｙモードの比率を指定したことを前提に説明する【０４１８】
システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａと管理側セルモード情報１２０９０を利用し、該当するストレージプールから、セルモードがＬＳＢ  ＯｎｌｙまたはＬＳＢ／ＭＳＢのセグメントでかつ、セグメント番号が最も若いものを選択する（Ｓｔｅｐ４４００１）。【０４１９】
次いで、システム管理プログラム１２０１０は、管理側プール情報１２０４０Ａを利用し、当該セグメントが割り当て済みかどうかを調べる（Ｓｔｅｐ４４００２）。割り当て済みでない場合（Ｓｔｅｐ４４００２でＮＯ）には、システム管理プログラム１２０１０は、Ｓｔｅｐ４４００８に処理を進める。【０４２０】
一方、割り当て済みの場合（Ｓｔｅｐ４４００２でＹＥＳ）には、システム管理プログラム１２０１０は、管理側ＶＬ変換情報１２０４０Ｂのアクセス測定値を利用して、当該セグメントが、ユーザが指定したセルモード比率より上位のセグメントかどうかをチェックする（Ｓｔｅｐ４４００３）。本処理は、セルモード比率とストレージプール内のＦＭＤ１０３０のＬＳＢから構成されるセグメントの総数とを掛け合わせた閾値が計算され、当該セグメントについてアクセス測定値でソートした場合に値が多いセグメントから数えて何番目かが算出され、この値が先程の閾値より少なければ、上位のセグメントと判断することができる。【０４２１】
上位のセグメントの場合（Ｓｔｅｐ４４００３でＹＥＳ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、現在のセルモードがＬＳＢ  Ｏｎｌｙかどうかを調べる（Ｓｔｅｐ４４００４）。この結果、ＬＳＢ  Ｏｎｌｙの場合（Ｓｔｅｐ４４００４でＹＥＳ）には、システム管理プログラム１２０１０は、処理をＳｔｅｐ４４００８へ進める一方、ＬＳＢ  Ｏｎｌｙでない場合（Ｓｔｅｐ４４００４でＮＯ）には、当該セグメントをＬＳＢ  Ｏｎｌｙモードへ変更する対象として（Ｓｔｅｐ４４００６）、処理をＳｔｅｐ４４００８へ進める。【０４２２】
一方、上位のセグメントでない場合（Ｓｔｅｐ４４００３でＮＯ）には、システム管理プログラム１２０１０は、管理側セルモード情報１２０９０を利用し、現在のセルモードがＬＳＢ  Ｏｎｌｙかどうかを調べる（Ｓｔｅｐ４４００５）。この結果、ＬＳＢ  Ｏｎｌｙの場合（Ｓｔｅｐ４４００５でＹＥＳ）には、システム管理プログラム１２０１０は、当該セグメントをＬＳＢ／ＭＳＢモードへ変更する対象として（Ｓｔｅｐ４４００７）、処理をＳｔｅｐ４４００８へ進める一方、ＬＳＢ  Ｏｎｌｙでない場合（Ｓｔｅｐ４４００５でＮＯ）には、処理をＳｔｅｐ４４００８へ進める。【０４２３】
Ｓｔｅｐ４４００８では、システム管理プログラム１２０１０は、セルモードがＬＳＢ  ＯｎｌｙまたはＬＳＢ／ＭＳＢのセグメントの全てについてのチェックが終わったかどうかを調べる。全て終わっていなければ（Ｓｔｅｐ４４００８でＮＯ）、システム管理プログラム１２０１０は、次に番号の若いセグメントを選択して処理をＳｔｅｐ４４００２に進める。【０４２４】
一方、全て終わっていれば（Ｓｔｅｐ４４００８でＹＥＳ）、システム管理プログラム１２０１０は、チェックの終わったセグメントのうち、ＬＳＢ  Ｏｎｌｙへセルモードを変更する対象となっているセグメント全てに対し、図３８及び図３９の処理を実行することでセルモードを変更する（Ｓｔｅｐ４４００９）。次に、システム管理プログラム１２０１０は、チェックの終わったセグメントのうち、ＬＳＢ／ＭＳＢへセルモードを変更する対象となっているセグメント全てに対し、図４０の処理を実行することでセルモードを変更し（Ｓｔｅｐ４４０１０）、処理を終了する。【０４２５】
第２実施例によると、ホスト計算機１１００からのＩ／Ｏ量を基準にして、セルモードの制御を実現することが可能となる。【０４２６】
以上、第２実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。例えば、管理サーバ１２００は、図５０にてセルモードの比率の代わりにＬＳＢ  ＯｎｌｙモードであるセグメントがカバーすべきＩ／Ｏカバー比率を入力として受信してもよい。なお、Ｉ／Ｏカバー比率とは、ストレージプールに対応する全ての割当済みセグメントに対して行われたアクセス測定値の合計を母数として、セルモードがＬＳＢ  Ｏｎｌｙモードである割当済みセグメント対して行われたアクセス数の合計を割合で算出した値である。なお、セグメントのアクセス測定値は、管理側ＶＬ変換情報１２０４０ＢをセグメントＩＤで検索することで得られる。このような入力に基づいて各セグメントのセルモードを変更する場合、システム管理プログラム１２０１０の処理は以下の通りである。
（Ｓｔｅｐ１）システム管理プログラム１２０１０は、ストレージプールに含まれる全ての割当済みセグメントに対して行われたアクセス測定値の合計値（第１合計値）を算出する。
（Ｓｔｅｐ２）システム管理プログラム１２０１０は、ストレージプールに含まれる割当済みセグメントを、アクセス計測値に基づいてソートする。
（Ｓｔｅｐ３）システム管理プログラム１２０１０は第２合計値変数を０に設定する。
（Ｓｔｅｐ４）システム管理プログラム１２０１０は、ソートしたセグメントのリストの先頭（つまりアクセス測定値が最も多い割当済みセグメント）から順に取り出す。
（Ｓｔｅｐ５）システム管理プログラム１２０１０は、取り出したセグメントのアクセス測定値を第２合計変数値に加算する。
（Ｓｔｅｐ６）システム管理プログラム１２０１０は、第２合計変数値がＩ／Ｏカバー比率と第１合計値を掛けた値より小さい場合は、ソートしたセグメントリストから次のセグメントを取り出し、Ｓｔｅｐ５に処理を移す。小さくない場合は、Ｓｔｅｐ７に処理を移す。
（Ｓｔｅｐ７）システム管理プログラム１２０１０は、ソートしたリストに残っているセグメントについて、図４０を実行してＬＳＢ／ＭＳＢモードにセルモードを変更する。なお、図４０の処理を実行中に新たなＭＳＢセグメントが生成されるため、適宜ソートしたリストに残っているセグメントを移動元とし、生成したＭＳＢセグメントを移動先としたデータ移動リクエストを送信してもよい。
（Ｓｔｅｐ８）システム管理プログラム１２０１０は、ソートしたリストに残っていない割当済みセグメントについて、図３８及び図３９を処理することで、該当セグメントのセルモードをＬＳＢ  Ｏｎｌｙモードにする。【０４２７】
以上がＩ／Ｏカバー比率によるセルモード制御であるが、この時のＳｔｅｐ１の対象セグメントから少数セグメントが外されても問題ない。つまり、「ストレージプールに含まれる全ての割当済みセグメント」とは、「ストレージプールに含まれるほぼ全ての割当て済みセグメント」でも良いということである。
【実施例３】
【０４２８】
以下、図面を参照して、第３実施例について説明する。なお、第３実施例の説明では、第１実施例、第２実施例との差異について説明する。【０４２９】
第３実施例では、セルモードの変更による容量課金チェック方法を示す。【０４３０】
図４５は、第３実施例に係る管理サーバの構成例を示す図である。第３実施例に係る管理サーバ１２００は、第１実施例に係る管理サーバにおいて、さらに、課金情報１２１３０を格納したものである。【０４３１】
図５４は、第３実施例に係る課金情報の一例を示す図である。【０４３２】
課金情報１２１３０は、ストレージシステム１０００を利用するユーザとユーザが払った額に応じて使用可能な容量の情報を格納する。課金情報１２１３０は、例えば、以下の情報を含む。
（ＭＫ１）利用ユーザ識別子。
（ＭＫ２）使用可能容量。使用可能容量が無制限の場合は“−”が入る。なお、”−“以外の記号でもよい。【０４３３】
これらの情報は、ストレージシステム利用開始時に、ストレージ管理者がユーザの課金額に応じて設定される。【０４３４】
図４９は、第３実施例に係る容量課金チェック処理の一例のフローチャートである。同図では、内部ＬＵのセルモードを変更する際の処理を示しているが、特にこれに制限されず、任意の単位（仮想内部ＬＵ、ストレージプール、ティア、パリティグループ、ＦＭＤ）のセルモード変更に適用可能である。【０４３５】
システム管理プログラム１２０１０は、指定されたＬＵ（セルモードを変更するＬＵ）の識別子と指定したユーザ情報（ログインユーザ情報）を選択する（Ｓｔｅｐ４９００１）。【０４３６】
次いで、システム管理プログラム１２０１０は、ＬＳＢ  ＯｎｌｙモードからＬＳＢ／ＭＳＢモードへの変更かどうかを調べる（Ｓｔｅｐ４９００２）。この結果、ＬＳＢ  ＯｎｌｙモードからＬＳＢ／ＭＳＢモードへの変更でない場合（Ｓｔｅｐ４９００２でＮＯ）には、システム管理プログラム１２０１０は、処理を終了する。【０４３７】
一方、ＬＳＢ  ＯｎｌｙモードからＬＳＢ／ＭＳＢモードへの変更である場合（Ｓｔｅｐ４９００２でＹＥＳ）には、システム管理プログラム１２０１０は、課金情報１２１３０を利用し、セルモード変更リクエストを出したユーザに関して、セルモード変更後のＬＵ容量が、使用容量可能範囲内にあるかどうかを確認する（Ｓｔｅｐ４９００３）。【０４３８】
この結果、使用容量可能範囲内の場合（Ｓｔｅｐ４９００３でＹＥＳ）には、システム管理プログラム１２０１０は、セルモード変更処理を実行し（Ｓｔｅｐ４９００４）、処理を終了する一方、使用容量可能範囲内ではない場合（Ｓｔｅｐ４９００３でＮＯ）には、ユーザに対して、課金額に応じた使用可能容量を超えていることを警告し（Ｓｔｅｐ４９００５）、処理を終了する。なお、警告は、ＧＵＩやＣＵＩにより画面に表示してもよいし、音による警告でもよい。【０４３９】
第３実施例によると、セルモード変更時の容量課金チェックを適切に実現することが可能となる。【０４４０】
以上、第３実施例を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施例にのみ限定する趣旨ではない。
【実施例４】
【０４４１】
以下、図６６を参照して、第４実施例について説明する。【０４４２】
実施例１乃至３に記載にわたり、セルモードを変更することで容量とその他の特性を変更可能なストレージシステム及び管理サーバについて説明してきた。なお、このセルモードの初期状態は、速度やデータ消失に対する耐久性のその他の特性を優先してＬＳＢ  ＯｎｌｙモードやＳＬＣモードとする場合もあれば、記憶容量を優先してＬＳＢ／ＭＳＢモードとする場合もある。なお、ＬＳＢ／ＭＳＢモードの場合、他のセルモードと比較してセル書き換え回数の上限が低くなるため、他のセルモードと比較してより早い時期にＦＭＤ１０３０内部の空き領域が無くなり、ＦＭＤ１０３０として閉塞せざるおえない状況になる。そのため、図６６に示すように、ＦＭＤ１０３０のセルモードを変更して、ＬＳＢ  ＯｎｌｙモードやＳＬＣモードに変更することが考えられる。これらモードでは、セルの書き換え回数上限が高くなっているため、引き続き閉塞の恐れがあったＦＭＤ１０３０を使い続けることができる。ただし、ＦＭＤ１０３０に記憶可能なデータ量は、セルモード変更によって減るため、一部のデータが他のＦＭＤ１０３０に移動されてもよい。なお、コストの視点で見た場合、記憶データ量が半分になるもののＦＭＤ１０３０を継続使用できるため、閉塞させて全く使えない場合と比較してもコストパフォーマンスが良い。【０４４３】
なお、以上の処理は、管理サーバ１２００のユーザが管理サーバ１２００の画面表示を参照しながらセルモード変更によって実現してもよいが、システム管理プログラム１２０１０が処理してもよい。また、本実施例で説明したセルモードの変更はＦＭＤ１０３０以外の単位で行っても良く、他の目的でのセルモードの設定及び変更を否定するものでもない。【０４４４】
以上、幾つかの実施例を説明したが、本発明は、これらの実施例に限定されるものでなく、その趣旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０４４５】
例えば、上記各実施例において、管理サーバ１２００が実行していた処理の一部又は全てを、ストレージシステム１０００のストレージコントローラ１０１０が実行するようにしてもよく、また、ストレージシステム１０００のストレージコントローラ１０１０が実行していた処理の一部をＦＭＤ１０３０のＦＭＤコントローラ２０１０が実行するようにしてもよく、この場合には、必要な情報及びプログラムの処理を実行する側の装置に用意するようにすればよい。【０４４６】
以上、本明細書では、ストレージコントローラと１以上の不揮発性メモリデバイスを含むストレージシステムと、
前記ストレージシステムに接続する管理システムと、で構成される計算機システムであって、
前記不揮発性メモリデバイスは、複数のメモリセルを含み、各々のメモリセルはＮビット分（Ｎは１以上の整数）のデータを格納可能な半導体特性を有し、
前記ストレージコントローラは：
前記不揮発性メモリデバイスの容量又はアドレス空間を示すストレージ構成情報を格納し、
メモリセルに記憶するビット数を定めるセルモードを示すセルモード情報を格納し、
前記管理システムからセルモード変更リクエストを受信し、
当該リクエストに従って前記セルモード情報を変更し、前記ストレージ構成情報の前記容量又は前記アドレス空間を変更することで、当該リクエスト以後の前記不揮発性メモリデバイスに記憶するデータ量を増加又は減少させる、ことを説明した。【０４４７】
また本明細書では、メモリセルは、記憶するビット数を変更すると、メモリセルに格納したデータ関する特性が変化する、フラッシュメモリセルであってもよいことを説明した。【０４４８】
また本明細書では、メモリセルのデータ記憶は、ドレインゲートとソースゲートとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることで行い、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、最小値が含まれる第１分割レンジと、最大値を含まない分割レンジである第２分割レンジと、を使用してもよいことを説明した。【０４４９】
また本明細書では、メモリセルのデータ記憶は、ドレインゲートとソースゲートとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることで行い、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、前記レンジを第１と第２の分割レンジに分割し、当該第１と第２の分割レンジを使用してもよいことを説明した。【０４５０】
また本明細書では、前記特性とは、
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスに対するリード又はライトの時間が長くなる、または
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスのデータ保持可能期間が短くなる、特性であってもよいことを説明した。【０４５１】
また本明細書では、セルモードを前記第２のセルモードから第２のセルモードに切り替える場合、前記ストレージコントローラは、前記第１の分割レンジと前記第２の分割レンジで表されていたデータの退避を抑止しつつ、モード切替を行ってもよいことを説明した。【０４５２】
また本明細書では、前記管理システムは前記セルモード情報を表示してもよいことを説明した。【０４５３】
また本明細書では、前記ストレージコントローラは、前記不揮発性メモリデバイスを用いてパリティグループを定義し、
前記セルモードは、当該パリティグループ毎に変更可能であってもよいことを説明した。【０４５４】
また本明細書では、前記ストレージシステムはＨＤＤを含み、
前記ストレージコントローラは：
前記不揮発性メモリデバイスと前記ＨＤＤとをストレージデバイスとして管理し、
前記ストレージデバイスを用いてストレージプールを定義し、前記ストレージデバイスのアドレス空間を複数のセグメントに分割して管理し、
前記ストレージプールを用いて仮想論理ユニットを計算機に提供し、
仮想ボリュームのアドレス空間を複数のチャンクに分割して管理し、当該セグメントを当該チャンクに割当て又は再割当てし、
前記セルモードは、当該セグメント毎に変更可能であってもよいことを説明した。【０４５５】
また本明細書では、前記セルモード変更リクエストの送信として、前記管理システムは：
Ｉ／Ｏ性能要件の入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏ性能要件に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行ってもよいことを説明した。【０４５６】
また本明細書では、前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントが処理するアクセス計測値の割合の目標値であるＩ／Ｏカバー比率、を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏカバー比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行ってもよいことを説明した。【０４５７】
また本明細書では、前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントの比率を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記セグメントの比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行ってもよいことを説明した。【０４５８】
また本明細書では、前記管理システムは、前記ストレージシステムに含まれるコンポーネントについて、対応するセルモードを表示し、
前記コンポーネントは、
不揮発性メモリデバイス、
前記不揮発性メモリデバイスから構成されるパリティグループ、
前記不揮発性メモリデバイスから間接的または直接的に構成される内部論理ユニット、
前記不揮発性メモリデバイスから間接的または直接的に構成されるストレージプール、
前記不揮発性メモリデバイスから間接的または直接的に構成されるティア、又は
前記不揮発性メモリデバイスから間接的または直接的に構成される仮想内部論理ユニット、
であってもよいことを説明した。なお、このコンポーネントはこれら以外にも物理的に含まれている存在であってもよく、また、ストレージコントローラに定義された存在であってもよい。【０４５９】
また本明細書では、前記コンポーネントの容量と、
一つ以上のセルモード毎に、前記コンポーネントに含まれ、かつ当該セルモードが設定されたセグメントの容量と、
を対応付けて表示してもよいことを説明した。【０４６０】
なお、別な視点でみれば本明細書は、複数のメモリセルを含むストレージシステムを管理する管理システムであって、
前記管理システムは、
前記ストレージシステムの構成情報と、前記メモリセルに記憶するビット数に関係した値であるセルモードと、を格納する１つ以上の記憶資源と、
前記構成情報に基づいて前記セルモードを変換し、前記変換したセルモードを表示させる一つ以上のプロセッサと、
を有しても良いことを説明した。【０４６１】
また本明細書では、複数のセルモードの中からビット記憶量は多いがセルの劣化でデータ消失する特性が高い所定のセルモードに関し、管理システムは前記所定のセルモードに関するセル書き換え回数の上限値を超えたメモリセルについては所定のセルモード以外のセルモードに変更してもよいことを説明した。【０４６２】
また本明細書では、複数のセルモードの中からビット記憶容量は多いがリード又はライト時間が長い特性を持つ所定のセルモードに関し、管理システムはその他のセルモードとの間でモード変更を行うことでストレージプールの記憶階層管理を実現してもよいことを説明した。
【符号の説明】
【０４６３】
１０００…ストレージシステム、１０１０…コントローラ、１０２０…キャッシュメモリ、１０３０…ＦＭＤ（フラッシュメモリデバイス）、１１００…ホスト、１２００…管理サーバ
【図１】
2013094041.tif 000003
【図２】
2013094041.tif 000004
【図３】
2013094041.tif 000005
【図４】
2013094041.tif 000006
【図５】
2013094041.tif 000007
【図６】
2013094041.tif 000008
【図７】
2013094041.tif 000009
【図８】
2013094041.tif 000010
【図９】
2013094041.tif 000011
【図１０】
2013094041.tif 000012
【図１１】
2013094041.tif 000013
【図１２】
2013094041.tif 000014
【図１３】
2013094041.tif 000015
【図１４】
2013094041.tif 000016
【図１５】
2013094041.tif 000017
【図１６】
2013094041.tif 000018
【図１７】
2013094041.tif 000019
【図１８】
2013094041.tif 000020
【図１９】
2013094041.tif 000021
【図２０】
2013094041.tif 000022
【図２１】
2013094041.tif 000023
【図２２】
2013094041.tif 000024
【図２３】
2013094041.tif 000025
【図２４】
2013094041.tif 000026
【図２５】
2013094041.tif 000027
【図２６】
2013094041.tif 000028
【図２７】
2013094041.tif 000029
【図２８】
2013094041.tif 000030
【図２９】
2013094041.tif 000031
【図３０】
2013094041.tif 000032
【図３１】
2013094041.tif 000033
【図３２】
2013094041.tif 000034
【図３３】
2013094041.tif 000035
【図３４】
2013094041.tif 000036
【図３５】
2013094041.tif 000037
【図３６】
2013094041.tif 000038
【図３７】
2013094041.tif 000039
【図３８】
2013094041.tif 000040
【図３９】
2013094041.tif 000041
【図４０】
2013094041.tif 000042
【図４１】
2013094041.tif 000043
【図４２】
2013094041.tif 000044
【図４３】
2013094041.tif 000045
【図４４】
2013094041.tif 000046
【図４５】
2013094041.tif 000047
【図４６】
2013094041.tif 000048
【図４７】
2013094041.tif 000049
【図４８】
2013094041.tif 000050
【図４９】
2013094041.tif 000051
【図５０】
2013094041.tif 000052
【図５１】
2013094041.tif 000053
【図５２】
2013094041.tif 000054
【図５３】
2013094041.tif 000055
【図５４】
2013094041.tif 000056
【図５５】
2013094041.tif 000057
【図５６】
2013094041.tif 000058
【図５７】
2013094041.tif 000059
【図５８】
2013094041.tif 000060
【図５９】
2013094041.tif 000061
【図６０】
2013094041.tif 000062
【図６１】
2013094041.tif 000063
【図６２】
2013094041.tif 000064
【図６３】
2013094041.tif 000065
【図６４】
2013094041.tif 000066
【図６５】
2013094041.tif 000067
【図６６】
2013094041.tif 000068
【手続補正書】
【提出日】平成26年4月7日(2014.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージコントローラと１以上の不揮発性メモリデバイスを含むストレージシステムと、
前記ストレージシステムに接続する管理システムと、で構成される計算機システムであって、
前記不揮発性メモリデバイスは、複数のメモリセルを含み、各々のメモリセルはＮビット分のデータを格納可能な半導体特性を有し、
メモリセルは、記憶するビット数を変更すると、メモリセルに格納したデータに関する特性が変化する、フラッシュメモリセルであり、
メモリセルのデータ記憶は、ドレインゲートとソースゲートとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることで行い、
前記ストレージコントローラは：
前記不揮発性メモリデバイスの容量又はアドレス空間を示すストレージ構成情報を格納し、
メモリセルに記憶するビット数を定めるセルモードを示すセルモード情報を格納し、
前記管理システムからセルモード変更リクエストを受信し、
当該リクエストに従って前記セルモード情報を変更し、前記ストレージ構成情報の前記容量又は前記アドレス空間を変更することで、当該リクエスト以後の前記不揮発性メモリデバイスに記憶するデータ量を増加又は減少させ、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、最小値が含まれる第１分割レンジと、最大値を含まない分割レンジである第２分割レンジと、を使用し、
セルモードを前記第２のセルモードから前記第１のセルモードに切り替える場合、前記ストレージコントローラは、前記第１の分割レンジと前記第２の分割レンジで表されていた前記メモリセル内のデータを移動せずに、モード切り替えを行う、
ことを特徴とした計算機システム。
【請求項２】
請求項１記載の計算機システムであって、
前記管理システムは前記セルモード情報を表示する、ことを特徴とした計算機システム。
【請求項３】
請求項２記載の計算機システムであって、
前記ストレージシステムはＨＤＤを含み、
前記ストレージコントローラは：
前記不揮発性メモリデバイスと前記ＨＤＤとをストレージデバイスとして管理し、
前記ストレージデバイスを用いてストレージプールを定義し、前記ストレージデバイスのアドレス空間を複数のセグメントに分割して管理し、
前記ストレージプールを用いて仮想論理ユニットを計算機に提供し、
仮想ボリュームのアドレス空間を複数のチャンクに分割して管理し、当該セグメントを当該チャンクに割当て又は再割当てし、
前記セルモードは、当該セグメント毎に変更可能である、
ことを特徴とした計算機システム。
【請求項４】
請求項３記載の計算機システムであって、
前記管理システムは、前記ストレージシステムに含まれるコンポーネントについて、対応するセルモードを表示し、
前記コンポーネントは、
不揮発性メモリデバイス、
前記不揮発性メモリデバイスから構成されるパリティグループ、
前記不揮発性メモリデバイスから間接的または直接的に構成される内部論理ユニット、
前記不揮発性メモリデバイスから間接的または直接的に構成されるストレージプール、
前記不揮発性メモリデバイスから間接的または直接的に構成されるティア、又は
前記不揮発性メモリデバイスから間接的または直接的に構成される仮想内部論理ユニット、
である、
ことを特徴とした計算機システム。
【請求項５】
請求項４記載の計算機システムであって、
前記コンポーネントの容量と、
一つ以上のセルモード毎に、前記コンポーネントに含まれ、かつ当該セルモードが設定されたセグメントの容量と、
を対応付けて表示する、
ことを特徴とした計算機システム。
【請求項６】
請求項１記載の計算機システムであって、
前記特性とは、                                                  
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスに対するリード又はライトの時間が長くなる、または
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスのデータ保持可能期間が短くなる、
ことを特徴とした計算機システム。
【請求項７】
請求項３記載の計算機システムであって、
前記ストレージコントローラは、前記不揮発性メモリデバイスを用いてパリティグループを定義し、
前記セルモードは、当該パリティグループ毎に変更可能である、
ことを特徴とした計算機システム。
【請求項８】
請求項３記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
前記管理システムが送信したセルモード変更リクエストは、前記管理システムが：
Ｉ／Ｏ性能要件の入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏ性能要件に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項９】
請求項３記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントが処理するアクセス計測値の割合の目標値であるＩ／Ｏカバー比率、を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏカバー比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１０】
請求項３記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントの比率を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記セグメントの比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１１】
複数のメモリセルを含む不揮発性メモリデバイスを有するストレージシステムを管理する管理システムであって、
各々のメモリセルはＮビット分のデータを格納可能な半導体特性を有し、記憶するビット数を変更すると、メモリセルに格納したデータに関する特性が変化する、フラッシュメモリセルであり、
前記メモリセルのデータ記憶は、ドレインゲートとソースゲートとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることにより行われ、
前記ストレージシステムは、
前記不揮発性メモリデバイスの容量又はアドレス空間を示すストレージ構成情報と、
メモリセルに記憶するビット数を定めるセルモードを示すセルモード情報とを格納し、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、最小値が含まれる第１分割レンジと、最大値を含まない分割レンジである第２分割レンジと、を使用し、
前記管理システムは、
前記ストレージシステムの管理側構成情報と、メモリセルに記憶するビット数に関係した値である管理側セルモード情報と、を格納する１つ以上の記憶資源と、
前記管理側構成情報に基づいて前記管理側セルモード情報を変更し、前記変更した管理側セルモード情報を表示させる一つ以上のプロセッサと、
を有し、
前記変更した管理側セルモード情報に基づき、前記ストレージシステムに対し、前記セルモード変更リクエストを送信し、
前記セルモード変更リクエストは、前記第１の分割レンジと前記第２の分割レンジで表されていた前記メモリセル内のデータの移動を伴わない、前記第２のセルモードから前記第１のセルモードへの切り替えるためのリクエストを含む
ことを特徴とした管理システム。
【手続補正書】
【提出日】平成27年1月30日(2015.1.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストレージコントローラと１以上の不揮発性メモリデバイスを含むストレージシステムと、
前記ストレージシステムに接続する管理システムと、で構成される計算機システムであって、
前記不揮発性メモリデバイスは、複数のメモリセルを含み、各々のメモリセルはＮビット分のデータを格納可能な半導体特性を有し、
メモリセルは、記憶するビット数を変更すると、メモリセルに格納したデータに関する特性が変化する、フラッシュメモリセルであり、
メモリセルのデータ記憶は、ドレインとソースとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることで行い、
前記ストレージコントローラは：
前記不揮発性メモリデバイスの容量又はアドレス空間を示すストレージ構成情報を格納し、
メモリセルに記憶するビット数を定めるセルモードを示すセルモード情報を格納し、
前記管理システムからセルモード変更リクエストを受信し、
当該リクエストに従って前記セルモード情報を変更し、前記ストレージ構成情報の前記容量又は前記アドレス空間を変更することで、当該リクエスト以後の前記不揮発性メモリデバイスに記憶するデータ量を増加又は減少させ、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、最小値が含まれる第１分割レンジと、最大値を含まない分割レンジである第２分割レンジと、を使用し、
セルモードを前記第２のセルモードから前記第１のセルモードに切り替える場合、前記ストレージコントローラは、前記第１の分割レンジと前記第２の分割レンジで表されていた前記メモリセル内のデータを移動せずに、モード切り替えを行う、
ことを特徴とした計算機システム。
【請求項２】
請求項１記載の計算機システムであって、
前記管理システムは前記セルモード情報を表示する、ことを特徴とした計算機システム。
【請求項３】
請求項２記載の計算機システムであって、
前記ストレージシステムはＨＤＤを含み、
前記ストレージコントローラは：
前記不揮発性メモリデバイスと前記ＨＤＤとをストレージデバイスとして管理し、
前記ストレージデバイスを用いてストレージプールを定義し、前記ストレージデバイスのアドレス空間を複数のセグメントに分割して管理し、
前記ストレージプールを用いて仮想論理ユニットを計算機に提供し、
仮想ボリュームのアドレス空間を複数のチャンクに分割して管理し、当該セグメントを当該チャンクに割当て又は再割当てし、
前記セルモードは、当該セグメント毎に変更可能である、
ことを特徴とした計算機システム。
【請求項４】
請求項３記載の計算機システムであって、
前記管理システムは、前記ストレージシステムに含まれるコンポーネントについて、対応するセルモードを表示し、
前記コンポーネントは、
不揮発性メモリデバイス、
前記不揮発性メモリデバイスから構成されるパリティグループ、
前記不揮発性メモリデバイスから間接的または直接的に構成される内部論理ユニット、
前記不揮発性メモリデバイスから間接的または直接的に構成されるストレージプール、
前記不揮発性メモリデバイスから間接的または直接的に構成されるティア、又は
前記不揮発性メモリデバイスから間接的または直接的に構成される仮想内部論理ユニット、
である、
ことを特徴とした計算機システム。
【請求項５】
請求項４記載の計算機システムであって、
前記コンポーネントの容量と、
一つ以上のセルモード毎に、前記コンポーネントに含まれ、かつ当該セルモードが設定されたセグメントの容量と、
を対応付けて表示する、
ことを特徴とした計算機システム。
【請求項６】
請求項１記載の計算機システムであって、
前記特性とは、
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスに対するリード又はライトの時間が長くなる、または
前記記憶するビット数を増加させると、前記不揮発性メモリデバイスのデータ保持可能期間が短くなる、
ことを特徴とした計算機システム。
【請求項７】
請求項３記載の計算機システムであって、
前記ストレージコントローラは、前記不揮発性メモリデバイスを用いてパリティグループを定義し、
前記セルモードは、当該パリティグループ毎に変更可能である、
ことを特徴とした計算機システム。
【請求項８】
請求項３記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
前記管理システムが送信したセルモード変更リクエストは、前記管理システムが：
Ｉ／Ｏ性能要件の入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏ性能要件に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項９】
請求項３記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントが処理するアクセス計測値の割合の目標値であるＩ／Ｏカバー比率、を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記Ｉ／Ｏカバー比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１０】
請求項３記載の計算機システムであって、
前記セルモード変更リクエストの送信として、前記管理システムは：
第１のセルモードであるセグメントの比率を示す入力を受信し、
前記セグメントに関して前記ストレージコントローラが測定したアクセス測定値、及び前記セグメントの比率に基づいて、セルモードを変更すべきセグメントを特定し、
前記特定したセグメントを直接または間接的に指定し、前記セルモード変更リクエストの送信を行う、
ことを特徴とした計算機システム。
【請求項１１】
複数のメモリセルを含む不揮発性メモリデバイスを有するストレージシステムを管理する管理システムであって、
各々のメモリセルはＮビット分のデータを格納可能な半導体特性を有し、記憶するビット数を変更すると、メモリセルに格納したデータに関する特性が変化する、フラッシュメモリセルであり、
前記メモリセルのデータ記憶は、ドレインとソースとの間に所定量の電流が流れ始める時にコントロールゲートに与えた電圧である閾値電圧を、セルプログラミングによって変化させることにより行われ、
前記ストレージシステムは、
前記不揮発性メモリデバイスの容量又はアドレス空間を示すストレージ構成情報と、
メモリセルに記憶するビット数を定めるセルモードを示すセルモード情報とを格納し、
第１のセルモードでは１つのメモリセルにＮビット分のデータを記憶するために、前記閾値電圧の最小値と最大値との間のレンジを、２のＮ乗に分割し、全ての分割レンジを使用し、
第２のセルモードでは１つのメモリセルに１ビット分のデータを記憶するために、最小値が含まれる第１分割レンジと、最大値を含まない分割レンジである第２分割レンジと、を使用し、
前記管理システムは、
前記ストレージシステムの管理側構成情報と、メモリセルに記憶するビット数に関係した値である管理側セルモード情報と、を格納する１つ以上の記憶資源と、
前記管理側構成情報に基づいて前記管理側セルモード情報を変更し、前記変更した管理側セルモード情報を表示させる一つ以上のプロセッサと、
を有し、
前記変更した管理側セルモード情報に基づき、前記ストレージシステムに対し、前記セルモード変更リクエストを送信し、
前記セルモード変更リクエストは、前記第１の分割レンジと前記第２の分割レンジで表されていた前記メモリセル内のデータの移動を伴わない、前記第２のセルモードから前記第１のセルモードへの切り替えるためのリクエストを含む
ことを特徴とした管理システム。
【国際調査報告】
2013094041.tif 000069
2013094041.tif 000070