(57)【要約】  本発明の一観点に係るストレージシステムは、フラッシュメモリを記憶媒体とする記憶デバイスを複数搭載する。また記憶デバイスに用いられるフラッシュメモリは、各セルをn-bitの情報を格納可能なセルまたはm-bit(n＜m)の情報を格納可能なセルのいずれかとして運用可能なフラッシュメモリである。ストレージシステムは定期的に記憶デバイスから残消去可能回数を取得し、取得した残消去可能回数と記憶デバイスの稼働時間を用いて記憶デバイスの寿命を予測する。予測した寿命が所定値(耐用年数)より大きい場合、所定数のセルについて、m-bit情報を格納可能なセルに変更する。
2017090176.tif 000002
【特許請求の範囲】
【請求項１】
ストレージコントローラと、前記ストレージコントローラに接続される複数の記憶デバイスとを有するストレージシステムにおいて、
前記記憶デバイスは、デバイスコントローラと、データの消去単位であるブロックを複数有する不揮発性記憶媒体とを有し、前記ブロックは複数のセルを含み、前記ブロックはそれぞれ、前記ブロック内の前記セルを、ｎビットの情報を格納可能な第１モードで運用中の状態から、ｍビット（ｎ＜ｍ）の情報を格納可能な第２モードに変更可能であって、
前記デバイスコントローラは、前記ブロックごとに残消去可能回数を管理しており、
前記ブロックのモードが前記第１モードから前記第２モードに変更された場合、前記デバイスコントローラは前記ブロックの残消去可能回数を削減するよう構成されており、
前記ストレージコントローラは、
前記記憶デバイスから前記記憶デバイスの残消去可能回数を取得して、前記記憶デバイスの残消去可能回数の変化率を算出し、
前記記憶デバイスの残消去可能回数の変化率を用いて、前記記憶デバイスの寿命予測値を算出し、
前記寿命予測値が目標寿命より大きい場合、
前記第１モードで運用中の前記ブロックのうち、所定数の前記ブロックのモードを前記第２モードに変更させることで、前記記憶デバイスの記憶容量を増加させる、
ことを特徴とする、ストレージシステム。
【請求項２】
前記所定数は、
前記第１モードで運用中の前記ブロックのうち、前記ブロックのモードが前記第２モードに変更されても前記目標寿命を満足可能な数の前記ブロックの数である、
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項３】
前記ストレージコントローラは、前記記憶デバイスの残消去可能回数の変化率を用いて、前記目標寿命を満足可能な前記記憶デバイスの残消去回数である、目標残消去可能回数を算出する、
ことを特徴とする、請求項２に記載のストレージシステム。
【請求項４】
前記ストレージコントローラは、前記記憶デバイスに前記目標残消去可能回数を通知し、
前記記憶デバイスは、前記目標残消去可能回数を用いて、前記記憶デバイスの増加後の記憶容量を算出する、
ことを特徴とする、請求項３に記載のストレージシステム。
【請求項５】
前記ストレージシステムは、前記複数の記憶デバイスから複数のＲＡＩＤグループを構成しており、
前記ストレージコントローラは、前記ＲＡＩＤグループに属する各前記記憶デバイスが算出した、前記記憶デバイスの増加後の記憶容量を取得し、
前記取得した各前記記憶デバイスの増加後の記憶容量の最小値を、前記ＲＡＩＤグループに属する各前記記憶デバイスに通知し、
前記通知を受領した前記記憶デバイスは、前記記憶容量が通知された前記最小値になるまで、前記第１モードで運用中の前記ブロックのモードを前記第２モードに変更する処理を繰り返す、
ことを特徴とする、請求項４に記載のストレージシステム。
【請求項６】
前記ブロックに格納可能な情報量の変更可否は、前記ＲＡＩＤグループ毎に設定可能で、
前記ストレージコントローラは、前記ブロックのモードの変更が可能と設定された前記ＲＡＩＤグループに属する前記記憶デバイスのみについて、前記記憶デバイスの記憶容量を増加させる、
ことを特徴とする、請求項５に記載のストレージシステム。
【請求項７】
前記ストレージコントローラは、前記寿命予測値の変動傾向を表す差分比率を算出することで、前記寿命予測値が減少傾向にあるか判定し、
前記寿命予測値が減少傾向にある場合、前記ブロックのモードの変更を行わせない、
ことを特徴とする、請求項１に記載のストレージシステム。
【請求項８】
前記ストレージコントローラは定期的に前記差分比率を算出し、過去に算出された前記差分比率を所定個数記録しており、
前記所定個数の前記差分比率がいずれも所定の範囲内に収まる値の場合、前記ブロックのモードの変更を行わせる、
ことを特徴とする、請求項７に記載のストレージシステム。
【請求項９】
ストレージコントローラに接続される記憶デバイスであって、
前記記憶デバイスは、デバイスコントローラと、データの消去単位であるブロックを複数有する不揮発性記憶媒体とを有し、前記ブロックは複数のセルを含み、前記ブロックはそれぞれ、前記ブロック内の前記セルを、ｎビットの情報を格納可能な第１モードで運用中の状態から、ｍビット（ｎ＜ｍ）の情報を格納可能な第２モードに変更可能であって、
前記デバイスコントローラは、前記ブロックごとに残消去可能回数を管理しており、
前記ブロックのモードが前記第１モードから前記第２モードに変更された場合、前記デバイスコントローラは前記ブロックの残消去可能回数を削減するよう構成されており、
前記デバイスコントローラは、前記ストレージコントローラから目標残消去可能回数を受領すると、
前記目標残消去可能回数に基づいて、前記ブロックのうち前記第２モードで運用可能なブロックの数を特定し、
特定された前記ブロックを前記第２モードに変更した場合の、前記記憶デバイスの記憶容量をストレージコントローラに返却する、
ことを特徴とする記憶デバイス。
【請求項１０】
前記デバイスコントローラは、前記記憶デバイスの残消去可能回数が、前記目標残消去可能回数以下という条件を満たす場合の、前記第２モードで運用される前記ブロックの上限数を、前記ブロックのうち前記第２モードで運用可能なブロックの数とする、
ことを特徴とする、請求項９に記載の記憶デバイス。
【請求項１１】
前記デバイスコントローラは、前記ストレージコントローラからセルモード変更コマンドを受領すると、
前記記憶デバイスの記憶容量が前記セルモード変更コマンドに含まれている容量に達するまで、前記第１モードで運用中の前記ブロックを、前記第２モードに変更する処理を繰り返す、
ことを特徴とする、請求項９に記載の記憶デバイス。
【請求項１２】
前記デバイスコントローラは、前記ストレージコントローラから残消去可能回数の取得要求を受領すると、前記ブロックそれぞれの残消去可能回数の合計を、前記記憶デバイスの残消去可能回数として、前記ストレージコントローラに返却する、
ことを特徴とする、請求項９に記載の記憶デバイス。
【請求項１３】
ストレージコントローラと、前記ストレージコントローラに接続される複数の記憶デバイスとを有するストレージシステムの制御方法であって、
前記記憶デバイスは、デバイスコントローラと、データの消去単位であるブロックを複数有する不揮発性記憶媒体とを有し、前記ブロックは複数のセルを含み、前記ブロックはそれぞれ、前記ブロック内の前記セルを、ｎビットの情報を格納可能な第１モードで運用中の状態から、ｍビット（ｎ＜ｍ）の情報を格納可能な第２モードに変更可能であって、
前記デバイスコントローラは、前記ブロックごとに残消去可能回数を管理しており、
前記ブロックのモードが前記第１モードから前記第２モードに変更された場合、前記デバイスコントローラは前記ブロックの残消去可能回数を削減するよう構成されており、
前記ストレージコントローラが、
１）前記記憶デバイスから前記記憶デバイスの残消去可能回数を
取得して、前記記憶デバイスの残消去可能回数の変化率を算
出する工程と、
２）前記記憶デバイスの残消去可能回数の変化率を用いて、前記
記憶デバイスの寿命予測値を算出する工程と、
３）前記寿命予測値が目標寿命より大きい場合、前記第１モード
で運用中の前記ブロックのうち、所定数の前記ブロックを、
前記第２モードに変更させることで、前記記憶デバイスの記
憶容量を増加させる工程と、
を実行することを特徴とする、ストレージシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性半導体メモリを用いたストレージシステムに関する。
【背景技術】
【０００２】
不揮発性半導体メモリは、磁気記憶デバイスに比べて省電力・高性能であり、高価格であった。このような不揮発性半導体メモリは、例えばＮＡＮＤ型のフラッシュメモリである。近年は半導体技術の進歩に伴って低価格化が進み、ＨＤＤに替わるメインストリームの記憶デバイスとして注目されてきている。【０００３】
フラッシュメモリは、データを記憶するための複数のメモリセル（以下、「セル」と略記する）を有する。セルには、１ビットの情報を記憶可能なセル（ＳＬＣという）の他に、２ビット以上の情報を記憶可能なセル（ＭＬＣという。また３ビット以上の情報を記憶可能なセルをＴＬＣと呼ぶこともある）もある。フラッシュメモリにＭＬＣ型セルを用いると、ＳＬＣ型セルを用いる場合よりも、ビットコストを低減させることができる。さらにＭＬＣ型セルの中でも、３ビット以上の情報を記憶可能なセル（ＴＬＣ）を用いれば、２ビット情報を記憶可能なセルを用いるよりも、ビットコストを低減させることができる。【０００４】
また近年、セルに格納可能な情報量（ビット数）を変更可能にする技術も現れてきている。たとえば特許文献１には、ある領域は１つのメモリセルトランジスタに１ビットのデータを書き込むことができるモードで運用し、別の領域は多ビットのデータを書き込むことができるモードで運用するように設定することができるメモリが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００８／０２５０２２０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ただし、セルに多くの情報（ビット数）を格納すればするほど、その寿命（耐用年数）が短くなる傾向がある。そのため、信頼性・耐久性を重視する場合には、格納可能なビット数の少ないセル（ＳＬＣやＭＬＣ）を用い、コスト（価格）を重視する場合には、格納可能なビット数の多いセル（ＴＬＣ）を用いる等の、使い分けを行う必要がある。【０００７】
特許文献１に開示の、格納可能なビット数の少ないセルと格納可能なビット数の多いセルを混在させて運用する技術を用いると、従来のフラッシュメモリよりもコストと耐久性のバランスが良い記憶デバイスを実現することができる可能性がある。ただし、フラッシュメモリ（セル）の寿命は、その消去頻度によって変動するため、格納可能なビット数の少ないセルと格納可能なビット数の多いセルの混在比率をあらかじめ決定することは困難である。【０００８】
消去頻度が少ない場合、そのフラッシュメモリは長期間の使用に耐えることができる。ただし消去頻度は、ストレージシステムの稼働状態（アクセス頻度）に大きく依存する。そのため、格納可能なビット数の多いセルを多く含むように記憶デバイスを設定したが、当初想定よりもアクセス頻度が高くなることもあり得る。その場合、あらかじめ想定された記憶デバイスの寿命（耐用年数）が経過する前に、記憶デバイスが使用できなくなる可能性がある。【０００９】
逆に、格納可能なビット数の少ないセルを多く含むように記憶デバイスを設定したが、当初想定よりもアクセス頻度が低い場合もあり得る。その場合は記憶デバイスの寿命は長くなるが、記憶容量が少ないため、ストレージシステムのコスト増につながる。【００１０】
そのため、ストレージシステムの稼働状態に合わせて、格納可能なビット数の少ないセルと格納可能なビット数の多いセルの混在比率を適切に変更できる技術が求められる。
【課題を解決するための手段】
【００１１】
本発明の一観点に係るストレージシステムは、フラッシュメモリを記憶媒体とする記憶デバイスを複数搭載する。また記憶デバイスに用いられるフラッシュメモリは、各セルを、n-bitの情報を格納可能なセルまたはm-bit (n＜m)の情報を格納可能なセルのいずれかのセルとして運用可能なフラッシュメモリである。【００１２】
ストレージシステムは定期的に記憶デバイスから残消去可能回数を取得し、取得した残消去可能回数と記憶デバイスの稼働時間を用いて記憶デバイスの寿命を予測する。予測した寿命が所定値(耐用年数)より大きい場合、所定数のセルについて、m-bit情報を格納可能なセルに変更する。
【発明の効果】
【００１３】
本発明によれば、大記憶容量と高い耐久性を両立可能なストレージシステムを実現できる。
【図面の簡単な説明】
【００１４】
【図１】実施例に係るストレージシステムの構成例を示す図である。
【図２】ＳＳＤの構成例を示す図である。
【図３】ブロック管理テーブルの構成を説明する図である。
【図４】ＲＡＩＤグループの説明図である。
【図５】仮想ボリュームとＲＡＩＤグループ、プールの関係を表す図である。
【図６】ＲＡＩＤグループ管理テーブルの構成を説明する図である。
【図７】処理の全体の流れを説明する図である。
【図８】セルモード変更要否判定処理のフローチャート（１）である。
【図９】セルモード変更要否判定処理のフローチャート（２）である。
【図１０】寿命予測値の算出方法を説明するための図である。
【図１１】容量確認コマンドを受領したＳＳＤが行う処理のフローチャートである。
【図１２】セルモード変更コマンドを受領したＳＳＤが行う処理のフローチャートである。
【図１３】セルモード変更処理のフローチャートである。
【図１４】確認用画面の一例である。
【発明を実施するための形態】
【００１５】
以下の実施例では、記憶デバイスに用いられる不揮発半導体記憶媒体は、フラッシュメモリ（ＦＭ）であるとする。そのフラッシュメモリは、ページ単位でリード／ライトが行われる種類のフラッシュメモリ、典型的にはＮＡＮＤ型のフラッシュメモリであるとする。しかし、フラッシュメモリは、ＮＡＮＤ型に代えて他種のフラッシュメモリでも良い。また、フラッシュメモリに代えて、他種の不揮発半導体記憶媒体、例えば相変化メモリなどが採用されても良い。
【実施例】
【００１６】
以下、実施例に係るストレージ装置１の構成と動作の詳細を説明していく。図１は、ストレージシステム１（または「ストレージ装置１」とも呼ぶ）を含む計算機システムの構成例を示す図である。【００１７】
ストレージ装置１は、ストレージコントローラ１０と、ストレージコントローラ１０に接続された複数の記憶デバイス（ＳＳＤ２１、ＨＤＤ２５）を有する。【００１８】
ＳＳＤ２１は、ホスト（ホスト計算機）２などの外部装置からのライトデータを格納するための記憶デバイスで、フラッシュメモリ等の不揮発性半導体メモリを記憶媒体として採用した記憶デバイスである。ＳＳＤ２１の内部構成は後述する。ＳＳＤ２１は一例として、ＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格に従う伝送線（ＳＡＳリンク）や、ＰＣＩ  （Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）規格に従う伝送線（ＰＣＩリンク）などによって、ストレージコントローラ１０と接続される。【００１９】
また、図１に示されているように、本実施例のストレージ装置１は記憶デバイスとして、ＳＳＤ２１の他にＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）２５も使用可能である。ＨＤＤ２５は、磁気ディスクを記録媒体とする記憶デバイスである。ＨＤＤ２５もＳＳＤ２１と同様、ストレージコントローラ１０に接続される。またＳＳＤ２１と同様、ＨＤＤ２５もＳＡＳリンクなどによってストレージコントローラ１０に接続される。ただし以下では、本実施例のストレージ装置１には、記憶デバイスとしてＳＳＤ２１のみが接続されている構成について中心に説明する。【００２０】
ストレージコントローラ１０は、ホスト２からのデータアクセス要求を受け付け、受け付けたアクセス要求に応じて、ＳＳＤ２１やＨＤＤ２５に対する処理（リード処理やライト処理）を行うコンポーネントである。以下ではストレージコントローラ１０は、ＤＫＣ１０と略記されることもある。ストレージコントローラ１０には、１以上のホスト２が接続される。またストレージコントローラ１０には、管理ホスト５が接続される。ストレージコントローラ１０とホスト２とは、一例としてファイバチャネルを用いて形成されるＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）３を介して接続される。ストレージコントローラ１０と管理ホスト５とは、一例としてイーサネットを用いて形成されるＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）６を介して接続される【００２１】
ストレージコントローラ１０は少なくとも、プロセッサ（ＣＰＵ）１１、ホストインタフェース（図中では「ホストＩ／Ｆ」と表記）１２、デバイスインタフェース（図中では「デバイスＩ／Ｆ」と表記）１３、メモリ１４、管理用Ｉ／Ｆ１５を有する。そしてプロセッサ１１、ホストＩ／Ｆ１２、デバイスＩ／Ｆ１３、メモリ１４、管理用Ｉ／Ｆ１５は、内部スイッチ（内部ＳＷ）１６を介して相互接続されている。図１ではこれらの構成要素がそれぞれ１つだけ示されているが、高性能化及び高可用性の確保のため、これらの構成要素のそれぞれがストレージコントローラ１０内に複数搭載されていてもよい。また内部ＳＷ１６ではなく、共通バスを介して各構成要素が相互接続された構成にしてもよい。【００２２】
デバイスＩ／Ｆ１３は少なくとも、インタフェースコントローラと転送回路（非図示）を有する。インタフェースコントローラは、ＳＳＤ２１の用いているプロトコル（一例ではＳＡＳ）をストレージコントローラ１０内部で用いられている通信プロトコル（一例としてＰＣＩ−Ｅｘｐｒｅｓｓ）に変換するためのコンポーネントである。転送回路は、ストレージコントローラ１０が、ＳＳＤ２１に対してデータの転送（リード、ライト）を行う際に用いられる。【００２３】
ホストＩ／Ｆ１２は、デバイスＩ／Ｆ１３と同様に、少なくともインタフェースコントローラと転送回路（非図示）を有する。ホストＩ／Ｆ１２が有するインタフェースコントローラは、ホスト２とストレージコントローラ１０間のデータ転送経路で用いられている通信プロトコル（たとえばファイバチャネル）と、ストレージコントローラ１０内部で用いられている通信プロトコルを変換するためのものである。【００２４】
プロセッサ１１は、ストレージ装置１の各種制御を行う。メモリ１４は、プロセッサ１１が実行するプログラムや、プロセッサ１１が使用するストレージ装置１の各種管理情報を記憶するために用いられる。メモリ１４にはたとえば、構成管理プログラム１４１、セルモード制御プログラム１４２、Ｉ／Ｏプログラム１４３が格納される。これらのプログラムの詳細は後述する。またメモリ１４は、ＳＳＤ２１に対するＩ／Ｏ対象データを一時的に記憶するためにも用いられる。以下、ＳＳＤ２１に対するＩ／Ｏ対象データを一時的に記憶するために用いられる、メモリ１４中の記憶領域を、「キャッシュ」と呼ぶ。メモリ１４はＤＲＡＭ、ＳＲＡＭ等の揮発性記憶媒体で構成されるが、別の実施形態として、不揮発性メモリを用いてメモリ１４を構成してもよい。【００２５】
管理ホスト５は、ストレージ装置１の管理操作を行うための計算機である。管理ホスト５は、キーボードやディスプレイ等の入出力デバイス（非図示）を備え、ユーザ（管理者）は入出力デバイスを用いてストレージ装置１に対する設定指示を行うことができる。また管理ホスト５は、ストレージ装置１の状態等の情報をディスプレイ等の出力デバイスに表示することもできる。【００２６】
図２は、ＳＳＤ２１の構成例を示す図である。なお、ＳＳＤ２１は、複数のフラッシュメモリと、それらを制御するコントローラとを備える記憶デバイスであればよく、フォームファクタ等が公知のＨＤＤ等と同等の物でなくてもよい。【００２７】
ＳＳＤ２１は、ＳＳＤコントローラ２００と複数のＦＭチップ２１０を有する。ＳＳＤコントローラ２００は、プロセッサ（ＣＰＵ）２０１、上流Ｉ／Ｆ（ｕｐｓｔｒｅａｍ  Ｉ／Ｆ）２０２、下流Ｉ／Ｆ（ｄｏｗｎｓｔｒｅａｍ  Ｉ／Ｆ）２０３、メモリ２０４を有し、これらは内部接続スイッチ（内部接続ＳＷ）２０５を介して相互接続されている。【００２８】
上流Ｉ／Ｆ２０２は、ＳＳＤ２１とストレージコントローラ１０間の通信を行うためのインタフェースコントローラである。上流Ｉ／Ｆ２０２は、伝送線（ＳＡＳリンクや、ＰＣＩリンク）を介してストレージコントローラ１０のデバイスＩＦ１３に接続される。一方下流Ｉ／Ｆ２０３は、ＳＳＤコントローラ２００とＦＭチップ２１０間の通信を行うためのインタフェースコントローラである。【００２９】
ＣＰＵ２０１は、ストレージコントローラ１０から到来する各種コマンドに係る処理等を行う。メモリ２０４は、ＣＰＵ２０１が実行するプログラムや、各種管理情報が記憶される。メモリ２０４にはたとえば、セルモード変更プログラム２４２、ＦＭ  Ｉ／Ｏプログラム２４３が格納される。これらのプログラムの詳細は後述する。またメモリ２０４の一部の領域は、ストレージコントローラ１０からライトコマンドと共に送信されてくるライトデータや、ＦＭチップ２１０から読み出されたデータを一次的に格納するためのバッファとしても用いられる。メモリ２０４には、ＤＲＡＭ等の揮発性メモリが用いられる。ただしメモリ２０４に不揮発性メモリが使用されても良い。【００３０】
ＦＭチップ２１０は、たとえばＮＡＮＤ型フラッシュメモリ等の不揮発性半導体メモリチップである。ＦＭチップ２１０は複数のダイ２１３を有し、各ダイ２１３には複数のセル２１４が存在する。セル２１４はトランジスタ等から構成された記憶素子で、各セル２１４は、１または複数ビットのデータを保持することができる。ＳＳＤコントローラ２００からのライトデータは、このセル２１４に格納される。また本実施例におけるＦＭチップ２１０が有するセル２１４は、ＳＳＤコントローラ２００からの指示によって、セル２１４に格納可能な情報量（ビット数）が変更可能である。周知の通り、フラッシュメモリのデータの読み出し・書き込みは、セル２１４単位に行うことはできない。複数のセル２１４の集合で、ページと呼ばれる所定サイズ（たとえば８ＫＢ等）の領域ごとに行われる。またデータ消去は、ページの集合であるブロック２１１ごとに行われる。【００３１】
本実施例に係るＳＳＤ２１は各ＦＭチップ２１０にユニークな識別番号を付して管理しており、この識別番号をチップ番号（チップ＃）と呼ぶ。またＦＭチップ２１０内の各ダイ２１３にも、ＦＭチップ２１０内でユニークな識別番号が付されており、この識別番号をダイ＃と呼ぶ。さらにダイ２１３内の各ブロック２１１には、ダイ２１３内でユニークな識別番号が付されており、この識別番号をブロック＃と呼ぶ。ＳＳＤコントローラ２００がＦＭチップ２１０のブロック２１１にアクセスする際には、チップ＃、ダイ＃、ブロック＃を指定することで、ＳＳＤ２１内のブロック２１１を一意に特定する。【００３２】
一方、本実施例に係るＳＳＤ２１（ＳＳＤコントローラ２００）がＤＫＣ１０等のイニシエータに対して提供する記憶アドレス空間（論理アドレス空間またはＬＢＡ空間と呼ぶ）は、チップ＃、ダイ＃、ブロック＃とは独立した空間である。そのためＤＫＣ１０がＳＳＤ２１に対してアクセス要求（リードコマンドやライトコマンド）を発行する際、ＦＭチップ２１０やブロック２１１等を指定する必要はない。ＬＢＡ空間上の領域には、所定サイズ（たとえば５１２バイト）毎にアドレスがアサインされており、このアドレスのことをＬｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ（ＬＢＡ）と呼ぶ。ＤＫＣ１０は、論理アドレス空間上の領域（ＬＢＡとアクセス対象領域のサイズで特定される領域）が指定されたコマンドを発行することで、ＳＳＤ２１からのデータのリード、あるいはＳＳＤ２１へのデータライトが可能である。ＬＢＡ空間上の領域に対するライトコマンドがＤＫＣ１０から到来した時、ＳＳＤコントローラ２００はその領域に対してページを割り当てる。ライトデータは割り当てられたページ（内のセル２１４）に格納される。既にページが割り当て済みのＬＢＡ空間上領域に対するライト要求（つまり上書き要求）が到来した時は、ＳＳＤコントローラ２００は、その領域に対して、新たな未使用ページ（まだデータが格納されていないページ）を割り当て、ライトデータを新たに割り当てられた未使用ページに格納する。【００３３】
ＳＳＤコントローラ２００は、ＬＢＡ空間上領域と、このＬＢＡ空間上領域に割り当てられたページとの関係（マッピング）を管理するための管理情報（マッピングテーブル）を有する。これは公知のフラッシュメモリが持つ情報と同じであるため、本明細書では説明を略す。【００３４】
先にも述べたが、セル２１４に格納可能なビット数は可変である。本実施例では、各セル２１４は、ｎビットのデータを格納可能なモード、あるいはｍビット（ただしｎ＜ｍの関係にある）のデータを格納可能なモードのいずれかで運用可能という前提で説明する。また、以下では特に断りのない限り、ｎ＝２、ｍ＝３の場合について説明する。また、セル２１４がｎビット（２ビット）のデータを格納可能なモードのことを、ＭＬＣ（Ｍｕｌｔｉ−Ｌｅｖｅｌ  Ｃｅｌｌ）モードと呼び、セル２１４がｍビット（３ビット）のデータを格納可能なモードのことを、ＴＬＣ（Ｔｒｉｐｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ）モードと呼ぶ。また、ＭＬＣモードとＴＬＣモードを総称して、「セルモード」または「モード」と呼ぶ。【００３５】
本実施例では、各ＳＳＤ２１の初期状態（使用開始直後）では、全セル２１４がＭＬＣモードに設定されている前提で説明する。使用開始後しばらくして、ストレージコントローラ１０がＳＳＤ２１の稼働状況を考慮して、ＳＳＤ２１に幾つかのセル２１４のモードを変更（ＭＬＣモードからＴＬＣモードに変更）させる。【００３６】
また、セルモードの変更は、ブロック２１１単位で行われる前提とする。つまり１ブロックに含まれるセル２１４はすべて、同じモードに設定される。そしてＳＳＤコントローラ２００がＦＭチップ２１０に対して、ＦＭチップ２１０内のあるブロックについてセルモード変更を指示した場合、そのブロック２１１内の全セル２１４がＴＬＣモードに変更される。以下では、ブロック２１１内の全セル２１４がＭＬＣモードに設定されている場合、「ブロックがＭＬＣモードである」と表現する。同様にブロック２１１内の全セル２１４がＴＬＣモードに設定されている場合、「ブロックがＴＬＣモードである」と表現する。ただし、必ずしもブロック２１１毎にモードが変更されなければならないわけではない。別の実施形態として、ダイ２１３毎にモード変更が行われてもよいし、あるいはページ毎、セル２１４毎にモード変更が行われてもよい。【００３７】
本実施例に係るＳＳＤ２１は、ＤＫＣ１０に提供するＬＢＡ空間のサイズを変えることができる。ＤＫＣ１０に提供されるＬＢＡ空間のサイズのことを「論理容量」と呼ぶ。本実施例に係るＳＳＤ２１では、論理容量は、ＳＳＤ２１内の全セル２１４の合計記憶容量と等しい。たとえばＳＳＤ２１内のセル２１４の数がＮ個で、全セル２１４がＭＬＣモードに設定されている場合、ＳＳＤ２１の論理容量はＮ×２（ｂｉｔ）である。その後、ＳＳＤ２１内セル２１４のうち、１０％のセル２１４がＴＬＣモードに変更された場合、ＳＳＤ２１の論理容量は、（０．１×Ｎ）×３＋（０．９×Ｎ）×２＝Ｎ×２．１（ｂｉｔ）になり、論理容量が増加する。ただし別の実施形態として、ＳＳＤ２１内のセル２１４のうち、一部を代替セル（障害のために使用できなくなったセル２１４の代替）として確保しておき、代替セルを除いたセル２１４の合計記憶容量を、論理容量と定義してもよい。【００３８】
図３を用いて、ＳＳＤ２１の管理するブロック管理テーブル１１５０の内容を説明する。ブロック管理テーブル１１５０は、メモリ２０４に格納されている。ブロック管理テーブル１１５０の各行（レコード）には、ＳＳＤ２１内の各ブロック２１１についての情報が格納される。ブロック管理テーブル１１５０のカラムのうち、チップ＃１１５１、ダイ＃１１５２、ブロック＃１１５３は、ブロック２１１のチップ＃、ダイ＃、ブロック＃を格納するためのカラムである。チップ＃１１５１、ダイ＃１１５２、ブロック＃１１５３が指定されることで、ＳＳＤ２１内のブロック２１１が一意に特定される。【００３９】
モード１１５４は、ブロック２１１がＭＬＣモードかＴＬＣモードかを表す情報を格納するためのカラムである。モード１１５４に０が格納されている時、ブロック２１１がＭＬＣモードであることを意味し、モード１１５４に１が格納されている時、ブロック２１１がＴＬＣモードであることを意味する。【００４０】
残消去可能回数１１５５には、ブロック２１１があと何回消去処理を行ってもよいかを表す情報が格納される。ＳＳＤ２１のブロック２１１の消去回数には限りがあり、ブロック２１１に対して所定回数（ここではこれを「消去可能回数」と呼ぶ）の消去処理を行うと、そのブロック２１１は使用できなくなる。消去可能回数はフラッシュメモリのベンダ等によって定められた値で、ＭＬＣ型のフラッシュメモリの場合、数万回程度と言われている。残消去可能回数は、ブロック２１１の消去可能回数から、実際にそのブロック２１１に対して消去処理が行われた回数（消去回数と呼ぶ）を減算することで求められる値である。そのため初期状態（一度も消去処理が行われていない状態）では、残消去可能回数と消去可能回数は等しい。【００４１】
たとえばブロック２１１の消去可能回数が３００００回と定められている場合、あるブロック２１１に対して２００００回消去処理を行ったとする。その場合、このブロック２１１の残消去可能回数は１００００（３００００−２００００＝１００００）である。【００４２】
初期状態では、各ブロック２１１の残消去可能回数１１５５には、消去可能回数（たとえば数万）が格納されている。なお、ＳＳＤ２１内の各ブロックの消去可能回数は等しい。ＳＳＤコントローラ２００がブロック２１１の消去処理を１回行うと、ＳＳＤコントローラ２００はそのブロック２１１の残消去可能回数１１５５を１減算する。ブロック２１１の残消去可能回数１１５５が０になると、そのブロック２１１への書き込み及び消去は禁止される。【００４３】
またＴＬＣ型フラッシュメモリの場合、消去可能回数はＭＬＣ型のフラッシュメモリよりも小さい。そのため、フラッシュメモリの使用中にブロック２１１のモードが変更された時、残消去可能回数１１５５の値も変更される。本実施例では、残消去可能回数１１５５がｎ（ｎは０以上の整数）で、かつＭＬＣモードに設定されていたブロック２１１がＴＬＣモードに変更された時、そのブロック２１１の残消去可能回数１１５５はｎ／ｃに変更される前提で、以下の説明を行う。なお、ｃは２以上の値で、以下の説明では特に断りのない限り、ｃ＝１０である場合について説明する。つまりブロック２１１のモードがＭＬＣモードからＴＬＣモードに変更されると、そのブロック２１１の残消去可能回数１１５５の値は、モード変更前の値の１０分の１になる。【００４４】
ＬＢＡ空間にブロック２１１（内のページ）を割り当てる時、ＳＳＤ２１はブロック管理テーブル１１５０の残消去可能回数１１５５を参照することで、残消去可能回数１１５５の最も大きいブロック２１１を選択し、そのブロック２１１内のページをＬＢＡ空間に割り当てる。このようなブロック２１１の選択方法が採用されているので、ＳＳＤ２１内の特定のブロック２１１だけが消去回数が多くなる(残消去可能回数が少なくなる）事象が発生しにくい。ただしそれでも各ブロック２１１の残消去可能回数に不均衡が発生することがあるため、本実施例に係るＳＳＤ２１は、公知のフラッシュメモリと同様に、各ブロック２１の残消去可能回数を極力均等にするための処理（いわゆるウェアレベリング処理）を行ってもよい。ウェアレベリングは公知の処理であるから、ここでの説明は略す。【００４５】
次に、本実施例に係るストレージ装置１がホスト２に提供するボリューム（仮想ボリューム）と、ＲＡＩＤグループと、ＳＳＤ２１がＤＫＣ１０に提供するＬＢＡ空間との関係について、図４、図５を用いて説明する。ストレージ装置１は、ＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ／Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ）技術を用いることで、複数のＳＳＤ２１から論理的な１つの記憶空間を形成する。ＲＡＩＤ技術で１つの論理的記憶空間を形成するために用いられるＳＳＤ２１のセットを、ＲＡＩＤグループと呼ぶ。【００４６】
ＲＡＩＤ技術では、ＲＡＩＤグループにデータを格納する際に、そのデータを用いて冗長情報（パリティ）を生成し、データとパリティとをＲＡＩＤグループ内の異なるＳＳＤ２１に格納する。そのためＲＡＩＤグループ内で１つ（あるいは２つ）のＳＳＤ２１に障害が発生してデータアクセスできなくなった場合に、ストレージ装置１は残りのＳＳＤ２１内のデータ（及びパリティ）を用いて、障害が発生したＳＳＤ２１に格納されていたデータを復旧できる。【００４７】
図４は、ＲＡＩＤグループ３０の記憶空間を説明するための概念図である。図４では、ＲＡＩＤグループ３０が４台のＳＳＤ２１から構成される例が示されている。また図４において、ＳＳＤ＃０（２０−０）〜ＳＳＤ＃３（２０−３）はそれぞれ、ＳＳＤ２１がストレージコントローラ１０に提供している論理アドレス空間（ＬＢＡ空間）を表している。ＳＳＤ＃０（２０−０）〜ＳＳＤ＃３（２０−３）の上端が、論理アドレス空間の先頭アドレス（ＬＢＡ＝０）を表し、下端が論理アドレス空間の終端である。【００４８】
また図４では、ＲＡＩＤグループ３０のＲＡＩＤレベル（ＲＡＩＤ技術におけるデータ冗長化方式を表すもので、一般的にはＲＡＩＤ１〜ＲＡＩＤ６のＲＡＩＤレベルがある）がＲＡＩＤ５である場合の例を表している。図４において、ＲＡＩＤグループ３０内の、「０」、「１」、「Ｐ」などのボックスがストライプブロックを表しており、ストライプブロックのサイズはたとえば、６４ＫＢ、２５６ＫＢ、５１２ＫＢなどである。また、各ストライプブロックに付されている、「１」等の番号のことを、「ストライプブロック番号」と呼ぶ。【００４９】
図４で、ストライプブロックのうち、「Ｐ」と記載されているストライプブロックは、冗長データ（パリティ）の格納されるストライプブロックであり、これを「パリティストライプ」と呼ぶ。一方、数字（０、１等）が記載されているストライプブロックは、ホスト２などの外部装置から書き込まれるデータ（冗長データではないデータ）が格納されるストライプブロックである。このストライプブロックのことは、「データストライプ」と呼ばれる。【００５０】
パリティストライプに格納される冗長データは、データストライプ内のデータを用いて生成される。以下、パリティストライプと、当該パリティストライプに格納される冗長データを生成するために用いられるデータストライプのセット（たとえば図４中の要素３００）のことを、「ストライプライン」と呼ぶ。本実施例に係るストレージ装置１の場合、図４に示されているストライプライン３００のように、１つのストライプラインに属する各ストライプブロックは、ＳＳＤ＃０（２０−０）〜ＳＳＤ＃３（２０−３）上の同じ位置（ＬＢＡ）に存在するという規則で、ストライプラインが構成される。【００５１】
さらにストレージコントローラ１０は、ＲＡＩＤグループ内に連続配置される複数のストライプラインを「チャンク」と呼ばれる管理単位で管理する。図４に示されているように、１つのチャンク３１は、複数のストライプラインを有する。各チャンクのサイズは同一である。ただし１つのチャンク３１が１つのストライプラインのみを有する構成でもよい。【００５２】
各チャンクには、ＲＡＩＤグループ内で一意な識別番号が付され、この識別番号はチャンク番号と呼ばれる。ＲＡＩＤグループの先頭のストライプライン（ＳＳＤ＃０（２０−０）〜ＳＳＤ＃３（２０−３）の先頭にあるストライプブロックから構成されるストライプライン）を含むチャンクのチャンク番号を１とし、それ以降に位置する各チャンクには、連続した整数値が付される。【００５３】
各チャンクは上で述べたとおり、ＲＡＩＤグループ内に規則的に配置されているため、チャンク番号から、そのチャンクに属するＳＳＤ２１のＬＢＡ空間上のアドレス（の範囲）は、比較的単純な計算で求められる。逆にＳＳＤ２１のＬＢＡ空間上アドレスから、そのアドレスが属するチャンクのチャンク番号も計算で求められる。【００５４】
図５は、仮想ボリュームとＲＡＩＤグループ、プールの関係を表す図である。ストレージコントローラ１０は、ホスト２にはＲＡＩＤグループの記憶領域とは異なる、１以上の仮想的な記憶空間を提供する。この仮想的な記憶空間を「仮想ボリューム」と呼ぶ。仮想ボリュームの記憶空間も、所定サイズの領域ごとに分割管理される。この所定サイズの領域は「仮想チャンク」と呼ばれる。仮想チャンクとは、仮想ボリュームの記憶領域の割り当て単位である。【００５５】
１つの仮想チャンクには１つのチャンクがマップされ、ホスト２から仮想チャンクに対するデータライトがあった時、マップされたチャンクにデータが格納される。ただし、仮想チャンクにチャンクがマップされる時、チャンク内のデータストライプのみがマップされる。そのため、仮想チャンクのサイズは、チャンクに含まれる全データストライプの合計サイズに等しい。ストレージコントローラ１０は、仮想チャンクとチャンクのマッピングを記録する管理テーブルを有し、この管理テーブルを用いて、仮想チャンクに割り当てられる記憶領域（チャンク）を管理している【００５６】
仮想ボリュームが定義された直後は、仮想ボリュームの各仮想チャンクには、チャンクがマップされていない。ストレージコントローラ１０は、ホスト２から仮想チャンク上の領域に対するライト要求を受信した時にはじめて、当該領域に対してライトされたデータの書き込まれるべき、ＳＳＤ２１の論理アドレス空間上の記憶領域（チャンク）を決定する。ここで決定されるチャンクは、まだどの仮想チャンクにも割り当てられていないチャンク（未使用チャンク）のなかから１つのチャンクが決定される。【００５７】
本実施例では、仮想チャンクに割り当て（マップ）可能な記憶領域（チャンク）を有するＲＡＩＤグループの集合を、プールと呼ぶ。仮想ボリュームの仮想チャンクにチャンクを割り当てる時、ストレージ装置１はプールで管理されているＲＡＩＤグループの中から未使用チャンクを１つ選択し、選択されたチャンクを仮想チャンクに割り当てる。【００５８】
先にも述べたが、ＳＳＤ２１内のセルのセルモードがＭＬＣモードからＴＬＣモードに変更されると、論理容量が増加する。図５は、ＳＳＤ＃０の論理容量が拡大する場合の例を表している。このように、ＳＳＤ２１の論理容量が増加すると、そのＳＳＤ２１を含むＲＡＩＤグループから形成可能なチャンク３１の数も増加する。ただし、チャンク３１は１以上のストライプ列から成る記憶領域であるので、ＲＡＩＤグループ内の１つのＳＳＤ２１の論理容量だけが増加しても、チャンク３１の数は増加しない。ＲＡＩＤグループ内の各ＳＳＤ２１のうち、論理容量の最も小さかったＳＳＤ２１の論理容量が増加した場合、チャンク３１が増加し得る。【００５９】
続いて、ストレージコントローラ１０で使用される管理情報について説明を行う。ストレージコントローラ１０は多くの管理情報を有するが、以下では、本実施例で主たる説明の対象となる、セルモードの変更処理に関連する管理情報を中心に説明する。【００６０】
図６は、ＲＡＩＤグループ管理テーブルの構成を説明する図である。【００６１】
ＲＡＩＤグループ管理テーブル６５０は、ストレージ装置１が管理するＲＡＩＤグループと、ＲＡＩＤグループに属するＳＳＤ２１の属性情報を管理するためのテーブルで、メモリ１４に格納されている。ＲＡＩＤグループ管理テーブル６５０の各行（レコード）には、管理対象のＲＡＩＤグループの属性情報、または管理対象のＲＡＩＤグループに属するＳＳＤ２１の属性情報が格納される。ＲＡＩＤグループ管理テーブル６５０は、ＲＧ＃６５１、ＲＡＩＤレベル６５２、ドライブ番号６５３、論理容量６５４、残消去可能回数６５５、開始日６５６、差分比率６５７、寿命予測値６５８、Ｔ．Ｃｅｌｌ６５９、前回実施日６６０、チャンク数６６１のカラムを有する。【００６２】
ＲＧ＃６５１にはＲＡＩＤグループの識別番号（ＲＡＩＤグループ番号）が格納され、ＲＡＩＤレベル６５２は、ＲＡＩＤグループのＲＡＩＤレベルを示している。ドライブ番号６５３には、ＲＡＩＤグループに属するＳＳＤ２１の識別子が格納される。【００６３】
論理容量６５４には、ドライブ番号６５３で特定される記憶デバイス（ＳＳＤ２１）の論理容量が格納される。本実施例では、それぞれのＲＡＩＤグループに属する各ＳＳＤ２１の論理容量の初期値（ストレージ装置１にインストールされた時点の論理容量）は等しいものとするが、別の実施形態として、異なる論理容量のＳＳＤ２１を用いてＲＡＩＤグループが形成されてもよい。先に述べたとおり、時間経過とともに論理容量６５４の値は変化し得る。【００６４】
残消去可能回数６５５には、ドライブ番号６５３で特定される記憶デバイス（ＳＳＤ２１）の残消去可能回数が格納される。先に述べたとおり、ＳＳＤ２１も内部で残消去可能回数を管理しているが、ＳＳＤ２１はＳＳＤ２１内のブロックの残消去可能回数をブロックごとに管理している。一方、残消去可能回数６５５に格納される値は、各ブロックの残消去可能回数の総和である。以下では「ＳＳＤの残消去可能回数」とは、ＳＳＤ２１内の全ブロックの残消去可能回数の合計値を意味する語として用いられる。本実施例に係るＳＳＤ２１は、ＤＫＣ１０等のイニシエータから残消去可能回数の取得要求を受領すると、ＳＳＤ２１の残消去可能回数をイニシエータに返却する機能を持つ。ＤＫＣ１０はＳＳＤ２１に残消去可能回数の取得要求を発行することで、ＳＳＤ２１から残消去可能回数の情報を得て、残消去可能回数６５５に格納する。【００６５】
開始日６５６には、ＳＳＤ２１の稼働が開始された日（稼働開始日と呼ぶ）が格納される。具体的には、ＳＳＤ２１がストレージ装置１にインストールされ、管理者によってそのＳＳＤ２１を含むＲＡＩＤグループが定義された時、ＤＫＣ１０はその時の日付を開始日６５６に格納する。【００６６】
差分比率６５７は、本実施例においてＤＫＣ１０が各ＳＳＤ２１の稼働状況の変化を予測するために用いる指標値である。差分比率の算出方法については後述する。ＤＫＣ１０は所定時間（たとえば１ヶ月等）ごとに、各ＳＳＤ２１の差分比率を算出する。ＲＡＩＤグループ管理テーブル６５０には過去に算出された差分比率６５７も記録される。ＤＫＣ１０が差分比率を算出すると、算出された値はＤ０（６５７−０）に格納される。そしてＤ０（６５７−０）に値を格納した時点から１単位時間前（たとえば１ヶ月前）に算出された差分比率は、Ｄ１（６５７−１）に格納される。同様に、Ｄ０（６５７−０）に値を格納した時点から２単位時間前（たとえば２ヶ月前）に算出された差分比率は、Ｄ２（６５７−２）に格納され、Ｄ０（６５７−０）に値を格納した時点から３単位時間前（たとえば３ヶ月前）に算出された差分比率は、Ｄ３（６５７−３）に格納される。【００６７】
Ｔ．Ｃｅｌｌ６５９は、セルモード変更の可否に関する情報である。レコードのＴ．Ｃｅｌｌ６５９に“０”が格納されている場合、ＤＫＣ１０はそのレコードに対応するＲＡＩＤグループ内のＳＳＤ２１については、セルモード変更処理を行わない。一方Ｃｅｌｌ６５９に“１”が格納されている場合、ＤＫＣ１０はそのレコードに対応するＲＡＩＤグループ内のＳＳＤ２１のセルモード変更処理を行う。Ｔ．Ｃｅｌｌ６５９には、ストレージ装置１のユーザ（管理者）がＲＡＩＤグループの定義時に、値を格納する。【００６８】
前回実施日６６０には、過去に管理対象のＲＡＩＤグループに属するＳＳＤ２１に対してセルモード変更処理が行われた日のうち、最も新しい日が格納される。初期状態（ＲＡＩＤグループが定義された直後）では、前回実施日６６０にＮＵＬＬ（無効値、たとえば０等の、日付として用いられない値）が格納される。【００６９】
寿命予測値６５８には、ＤＫＣ１０がＳＳＤ２１の残消去可能回数の変化率に基づいて算出した、ＳＳＤ２１の寿命の予測値が格納される。本実施例に係るストレージシステム１における寿命の定義であるが、ＳＳＤ２１の残消去可能回数が０になった場合、そのＳＳＤ２１が寿命を迎えた、と定義している。そのため、ＳＳＤ２１の残消去可能回数が０になると予測される日（時刻）が、寿命予測値である。ＤＫＣ１０はＳＳＤ２１の残消去可能回数の変化率に基づいて、ＳＳＤ２１の残消去可能回数が０になる時期を予測する。寿命予測値の算出方法の詳細は後述する。なお、ＳＳＤ２１の残消去可能回数が０になる日（時刻）を寿命と定義するかわりに、ＳＳＤ２１の残消去可能回数があらかじめ定められた閾値（ただしこの閾値は０以上の値である）を下回った日（時刻）を寿命としてもよい。【００７０】
また、ＲＡＩＤグループ管理テーブル６５０には、上で説明した情報以外の情報が含まれていてもよい。たとえばＲＡＩＤグループ管理テーブル６５０に、各ＲＡＩＤグループ内に定義可能なチャンクの数等が格納されてもよい。【００７１】
ＤＫＣ１０はＲＡＩＤグループ管理テーブル６５０以外の管理情報も有する。たとえばストレージ装置１内に定義された各仮想ボリューム内の仮想チャンクと、チャンクとのマッピング関係を管理するためのテーブル、プール内のチャンクの使用状況を管理するテーブルなどである。ただしこれらは、仮想ボリュームをホストに提供する機能を持つ、公知のストレージ装置が通常有している情報と同じであるため、ここでは説明を略す。【００７２】
これ以降では、各処理のフローについて説明する。まず、ストレージコントローラ１０で実行されるプログラムについて説明する。ストレージ装置１のメモリ１４にはたとえば、構成管理プログラム１４１、セルモード制御プログラム１４２、Ｉ／Ｏプログラム１４３が格納される。ストレージコントローラ１０のＣＰＵ１１が、これらのプログラムを実行することで、以下で説明する各種の処理が実行される。ただし説明が冗長になることを避けるために、以下では各処理について説明する際に、プログラムを主語として各処理の説明を行うことがある。【００７３】
構成管理プログラム１４１は、ストレージ装置１が定義する仮想ボリュームやＲＡＩＤグループの管理を行うためのプログラムである。ユーザが管理ホスト５を用いてＲＡＩＤグループの定義指示をストレージ装置１に発行した時、ストレージ装置１（のＣＰＵ１１）では構成管理プログラム１４１が実行される。構成管理プログラム１４１はユーザからの指示に基づいて、ＲＡＩＤグループ管理テーブル６５０に情報（たとえばＲＡＩＤグループに属するＳＳＤ２１の識別子等）を格納する。【００７４】
またＲＡＩＤグループを定義する際、ユーザはそのＲＡＩＤグループに属するＳＳＤ２１がセルモード変更を行うことを許可するか否か、についても指定を行う。ユーザが、ＲＡＩＤグループに属するＳＳＤ２１がセルモード変更を行うことを許可した場合、構成管理プログラム１４１はＲＡＩＤグループ管理テーブル６５０内のレコードのうち、定義対象のＲＡＩＤグループについてのレコードのＴ．Ｃｅｌｌ６５９に“１”を格納し、そうでない場合にはＴ．Ｃｅｌｌ６５９に“０”を格納する。【００７５】
Ｉ／Ｏプログラム１４３は、ホスト２からのＩ／Ｏ要求（リードコマンドやライトコマンド）を処理するためのプログラムである。Ｉ／Ｏプログラム１４３が実行する具体的な処理の内容は、本実施例とは直接関係しないため、説明を略す。【００７６】
セルモード制御プログラム１４２は、ＳＳＤ２１の稼働状況に基づいて、セルモード変更の要否を判定し、必要に応じてＳＳＤ２１にセルモード変更処理を行わせるプログラムである。【００７７】
図７を用いて、ストレージ装置１で実施されるセルモード変更処理の全体の処理の流れを説明する。なお、図７以降の各図において、参照番号の前に付されているアルファベットの“Ｓ”は、「ステップ」を意味する。【００７８】
ステップ１、ステップ２は、ＲＡＩＤグループが定義される時に行われる処理の一部であり、構成管理プログラム１４１がこれらのステップを実行する。なおここでは、ＲＡＩＤグループを定義する処理の説明は略す。ステップ１でユーザは管理ホスト５を用いて、ＲＡＩＤグループに属するＳＳＤ２１がセルモード変更を行うことを許可する旨の指示をストレージ装置１に発行する。そして構成管理プログラム１４１はこの指示を受領する。【００７９】
続いてステップ２で構成管理プログラム１４１は、定義対象のＲＡＩＤグループについてのレコードのＴ．Ｃｅｌｌ６５９に“１”を格納する。この処理が終わると、構成管理プログラム１４１はＲＡＩＤグループの定義が完了したこと、またユーザがセルモード変更を許可した場合には、セルモード変更の設定が行われたことを、ユーザに通知する。【００８０】
ＲＡＩＤグループは、Ｉ／Ｏプログラム１４３によってアクセス（リードまたはライト）が行われる。たとえばステップ１、ステップ２で定義されたＲＡＩＤグループがプールに登録されると、ホスト２が仮想ボリュームに対してライトコマンドを発行することに応じて、Ｉ／Ｏプログラム１４３は定義されたＲＡＩＤグループ内のチャンクを、仮想ボリュームの仮想チャンクにマップし、マップされたチャンクに対するＩ／Ｏ処理を実行する。ただしＩ／Ｏプログラム１４３の処理の具体的内容は本実施例と直接関係しないため、説明を略す。【００８１】
またＲＡＩＤグループが定義された後、そのＲＡＩＤグループに対してセルモード制御プログラム１４２が定期的に（たとえば１ヶ月に１回）処理を行う（ステップ３〜ステップ６）。ここではストレージコントローラ１０とＳＳＤ２１間で行われるやり取り、またユーザとストレージコントローラ１０の間で行われるやり取りを中心に説明する。【００８２】
セルモード制御プログラム１４２はＲＡＩＤグループ毎に実行される。ただし、ＲＡＩＤグループ管理テーブル６５０のＴ．Ｃｅｌｌ６５９に“１”が設定されたＲＡＩＤグループに対してのみ、ステップ３〜ステップ６の処理が行われる。以下では一例として、ＲＧ＃ｎ（ｎは非負の整数値である）を対象としてセルモード制御プログラム１４２が実行される例を説明する。セルモード制御プログラム１４２が開始されると、まずセルモード制御プログラム１４２はＲＧ＃ｎに属する各ＳＳＤ２１に対し、残消去可能回数の取得要求を発行する（ステップ３）。残消去可能回数の取得要求を受領したＳＳＤ２１は、ＳＳＤ２１の残消去可能回数をストレージコントローラ１０に返却する（ステップ４）。【００８３】
その後、セルモード制御プログラム１４２は、ステップ４で受領したＳＳＤ２１の残消去可能回数等を用いて、セルモード変更要否の判定を行う（ステップ５）。またステップ５で、セルモード変更要と判定された場合、セルモード制御プログラム１４２はＲＧ＃ｎに属するＳＳＤ２１が所定の年数稼働可能な残消去可能回数を算出し、セルモード変更処理（ステップ６）を実施する。なお、本実施例では、期待されているＳＳＤ２１の耐用年数が、最低５年の例を説明する。ステップ５、６の詳細は後述する。なお、本実施例において、ステップ６のセルモード変更処理は、“Ｔ．Ｃｅｌｌ”と呼ばれることもある。また、ステップ５でセルモード変更不要と判定された場合には、セルモード制御プログラム１４２はステップ６を行わず、処理を終了する。【００８４】
続いて、図７のステップ３〜ステップ５の処理の詳細を、図８、図９を用いて説明する。なお、図８、図９に記載の処理は、図７のステップ３〜ステップ５に相当する処理である。またステップ６の詳細は図１３に記載されている。【００８５】
ステップ１０１０：セルモード制御プログラム１４２は、ＲＧ＃ｎに属する各ＳＳＤ２１の稼働時間を算出する。本実施例において、ＳＳＤ２１の稼働時間とは、ＳＳＤ２１が稼働を開始してからの経過時間を意味し、現在の日付（時刻）からＳＳＤ２１の稼働開始日（ＲＡＩＤグループ管理テーブル６５０の開始日６５６に格納されている値）を減算することで得られる値である。【００８６】
またステップ１０１０でセルモード制御プログラム１４２は、ＲＧ＃ｎに属する各ＳＳＤ２１の残消去可能回数を取得するために、残消去可能回数の取得要求を各ＳＳＤ２１に発行する。残消去可能回数の取得要求を受領したＳＳＤ２１はブロック管理テーブル１１５０を参照し、ＳＳＤ２１が有する全ブロックの残消去可能回数１１５５の合計を算出する。そしてＳＳＤ２１は、算出された合計値（つまりＳＳＤ２１の残消去可能回数）をストレージコントローラ１０（セルモード制御プログラム１４２）に返却する。【００８７】
ステップ１０２０：セルモード制御プログラム１４２は、ＲＧ＃ｎに属する各ＳＳＤ２１の寿命予測値及び差分比率を算出する。以下では寿命予測値及び差分比率の定義及び算出方法について説明する。【００８８】
図１０を用いて寿命予測値の算出方法の概念について説明する。図１０の点（ａ１）、（ａ２）は、あるＳＳＤ２１の残消去可能回数をプロットしたものである。図１０に記載の座標系で、横軸は時刻（日時）を表し、縦軸は残消去可能回数を表す。点（ａ２）は現在時刻（Ｔ２）におけるＳＳＤ２１の残消去可能回数（Ｎ２）を表し、点（ａ１）は前回セルモード制御プログラム１４２を実行した時（Ｔ１）のＳＳＤ２１の残消去可能回数（Ｎ１）を表す。なお、以下のステップ１０２０の説明において、現在時刻（日時）とは、今回セルモード制御プログラム１４２を実行している時点（瞬間）の時刻（日時）を意味する。【００８９】
この場合、時刻Ｔ１からＴ２の間の、ＳＳＤ２１の残消去可能回数の（平均）変化率は、図１０の直線（Ａ）の傾き（以下、この傾きをＧと表記することもある）に等しく、Ｇは以下の式（１）で表すことができる。
【数１】
2017090176.tif 000003
【００９０】
寿命予測値の算出にあたっては、ＳＳＤ２１の残消去可能回数が、式（１）で求めた変化率で減少していくという仮定のもとで、算出が行われる。先に述べたとおり、寿命予測値とはＳＳＤ２１の残消去可能回数が０になる時刻のことである。そのため、図１０の直線（Ａ）の延長線上と横軸との交点（図１０中の点（ａ３））が、寿命予測値を表すことになる。寿命予測値をＴ３とすると、Ｔ３は、以下の式（２）で表される。
【数２】
2017090176.tif 000004
セルモード制御プログラム１４２は、式（２）を用いてＴ３を算出する事で、ＳＳＤ２１の寿命予測値を得る。【００９１】
続いて差分比率について説明する。上で説明したＳＳＤ２１の寿命予測値は、ＳＳＤ２１の残消去可能回数の変化率が一定という仮定の元で算出された値であるが、残消去可能回数の変化率は変動することもあり得る。そのため、残消去可能回数の変化率をもとに導出される寿命予測値も変動し得る。差分比率は寿命予測値の変動傾向を表す指標値である。【００９２】
セルモード制御プログラム１４２は、以下に示す式（３）を用いて、差分比率を算出する。なお、以下の式（３）では、ＳＳＤ２１の稼働開始日（開始日６５６）をＬ０、最新の寿命予測値（今回セルモード制御プログラム１４２を実行した時に算出された寿命予測値）をＬ１、前回セルモード制御プログラム１４２を実行した時に算出された寿命予測値をＬ２、そして差分比率をＤと表記する。
【数３】
2017090176.tif 000005
【００９３】
差分比率Ｄが正の値をとる場合、寿命予測値（Ｌ１）が増加傾向にある（過去の寿命予測値（Ｌ２）より増加している）ことを意味する。この場合、たとえばＳＳＤ２１へのライト頻度が減少傾向にあることが考えられる。逆に差分比率Ｄが負の値をとる場合、寿命予測値（Ｌ１）が減少傾向にある（過去の寿命予測値（Ｌ２）より小さくなっている）ことを意味し、この場合はたとえばＳＳＤ２１へのライト頻度が増加傾向にあることが考えられる。【００９４】
また、差分比率が０の場合、または０に極めて近い値をとる場合、Ｌ１とＬ２に殆ど差がない（寿命予測値の変動がない）ことを意味し、この場合にはＳＳＤ２１へのライト頻度に変化がない（一定のライト頻度である）と推定することができる。【００９５】
ステップ１０２０では、セルモード制御プログラム１４２は上で述べた式（２）〜式（３）を用いて、ＲＧ＃ｎに属する各ＳＳＤ２１の寿命予測値と差分比率を算出する。またセルモード制御プログラム１４２は、差分比率の算出後にＲＧ＃ｎに属する各ＳＳＤ２１の残消去可能回数と寿命予測値をＲＡＩＤグループ管理テーブル６５０の残消去可能回数６５５、寿命予測値６５８に格納する。そのため、ステップ１０２０の実行開始時点では、残消去可能回数６５５、寿命予測値６５８には、前回セルモード制御プログラム１４２が実行された時点のＳＳＤ２１の残消去可能回数、寿命予測値が格納されている。【００９６】
たとえばＲＧ＃ｎに属するあるＳＳＤ２１（以下ではこれを“ＳＳＤ＃ｋ”と表記する）について寿命予測値、差分比率を計算する場合、以下の手順で計算すればよい。セルモード制御プログラム１４２は、式（２）のＮ２に、ステップ１０１０で得られたＳＳＤ＃ｋの残消去可能回数を代入し、またＮ１にはＲＡＩＤグループ管理テーブル６５０のレコードのうち、ＳＳＤ＃ｋに対応するレコードの残消去可能回数６５５を代入する。さらにセルモード制御プログラム１４２は、Ｔ２に現在時刻（日時）を代入し、そしてＴ１には前回セルモード制御プログラム１４２が実行された時刻（日時）を代入する。セルモード制御プログラム１４２は定期的（たとえば１ヶ月に１回）が実行される。そのため、たとえば１ヶ月に１回セルモード制御プログラム１４２が実行される場合、セルモード制御プログラム１４２はＴ１に、現在時刻（日時）から１か月前の日時を代入すればよい。セルモード制御プログラム１４２は、この計算をＲＧ＃ｎに属する各ＳＳＤ２１について実施することで、各ＳＳＤ２１の寿命予測値を算出する。【００９７】
続いてセルモード制御プログラム１４２は、式（２）を用いて得られた寿命予測値を式（３）のＬ１に代入し、前回セルモード制御プログラム１４２を実行した時に算出された寿命予測値（ＲＡＩＤグループ管理テーブル６５０のレコードのうち、ＳＳＤ＃ｋに対応するレコードの寿命予測値６５８に格納されている）を式（３）のＬ２に代入し、そして稼働開始日（ＲＡＩＤグループ管理テーブル６５０のレコードのうち、ＳＳＤ＃ｋに対応するレコードの開始日６５６に格納されている）を式（３）のＬ０に代入することで、ＳＳＤ＃ｋの差分比率Ｄを算出する。【００９８】
差分比率Ｄの算出後、セルモード制御プログラム１４２は、ＲＡＩＤグループ管理テーブル６５０のレコードのうち、ＳＳＤ＃ｋに対応するレコードのＤ０（６５７−０）、Ｄ１（６５７−１）、Ｄ２（６５７−２）に格納されていた値をそれぞれ、Ｄ１（６５７−１）、Ｄ２（６５７−２）、Ｄ３（６５７−３）に移動する。その後セルモード制御プログラム１４２は、先に式（３）を用いて算出した差分比率Ｄの値を、Ｄ０（６５７−０）に格納する。これにより、Ｄ０（６５７−０）、Ｄ１（６５７−１）、Ｄ２（６５７−２）、Ｄ３（６５７−３）にはそれぞれ、最新の差分比率Ｄ、１ヶ月前に算出した差分比率、２ヶ月前に算出した差分比率、３ヶ月前に算出した差分比率が格納されることになる。【００９９】
ステップ１０３０：セルモード制御プログラム１４２は、前回セルモード制御プログラム１４２がＲＧ＃ｎに属するＳＳＤ２１にセルモード変更処理を行ってから所定の期間が経過したか判定する。ここでの「所定の期間」とは、ＲＧ＃ｎを対象としてセルモード制御プログラム１４２が実行される周期よりも長い期間である。本実施例ではこの「所定の期間」が６ヶ月である例を説明するが、「所定の期間」は必ずしも６ヶ月である必要はない。「所定の期間」は、セルモード制御プログラム１４２が実行される周期よりも長い期間であればよい。ステップ１０３０では具体的には、セルモード制御プログラム１４２はＲＡＩＤグループ管理テーブル６５０のレコードのうち、ＲＧ＃ｎについての情報を格納するレコード（ＲＧ＃６５１が“ｎ”のレコード）の前回実施日６６０が、現在時刻よりも６ヶ月以上前であるかを判定する。【０１００】
ただし、これまでにＲＧ＃ｎに属するＳＳＤ２１に対して一度もセルモード変更処理が行われていない場合（たとえばＲＧ＃ｎがストレージシステム１に導入されて間もない場合が該当する）、前回実施日６６０にはＮＵＬＬが格納されている。その場合には、セルモード制御プログラム１４２はＲＧ＃ｎに属する全ＳＳＤ２１の稼働開始日（開始日６５６）から所定の期間（たとえば６ヶ月）経過したかを判定する。【０１０１】
前回のセルモード変更処理実行時点から６ヶ月以上経過していない場合（ステップ１０３０：ＮＯ）、セルモード制御プログラム１４２はＲＧ＃ｎに属する全ＳＳＤ２１のセルモードの変更を行わないと決定し、処理を終了する（ステップ１１５０）。またステップ１１５０では、セルモード制御プログラム１４２は、ステップ１０１０で取得した各ＳＳＤ２１の残消去可能回数をＲＡＩＤグループ管理テーブル６５０の残消去可能回数６５５に格納し、ステップ１０２０で算出された寿命予測値をＲＡＩＤグループ管理テーブル６５０の寿命予測値６５８に格納した後、処理を終了する。【０１０２】
一方ステップ１０３０の判定が肯定的な場合は、ステップ１０６０以降の処理が行われる。なお、ステップ１０６０以降の処理は、ＲＧ＃ｎに属するＳＳＤ２１毎に行われる。以下、ＲＧ＃ｎに属するある１つのＳＳＤ２１（仮にこれを“ＳＳＤ＃ｋ”と呼ぶ）についてステップ１０６０〜ステップ１２７０が行われるケースについて説明する。【０１０３】
ステップ１０６０：セルモード制御プログラム１４２は、ＳＳＤ＃ｋのＤ０（６５７−０）を参照する（Ｄ０（６５７−０）は、ステップ１０２０で算出された差分比率Ｄである）。そしてセルモード制御プログラム１４２は、ＳＳＤ＃ｋのＤ０（６５７−０）が、以下の（ａ）〜（ｃ）のいずれに該当するか判定する。
（ａ）０に極めて近い値
（ｂ）負の値
（ｃ）正の値【０１０４】
ここで、Ｄ０（６５７−０）がーα〜αの範囲にある場合、セルモード制御プログラム１４２はＤ０（６５７−０）が“０に極めて近い値”（（ａ）に該当する）と判定する。なお、αは０＜α＜１の関係にある値で、０に近い値（たとえば０．０５等）である。以下では特に断りのない限り、α＝０．０５の場合の例を説明する。【０１０５】
またＤ０（６５７−０）がーαより小さい値だった場合、セルモード制御プログラム１４２はＤ０（６５７−０）が負の値である（（ｂ）に該当する）と判定する。そしてＤ０（６５７−０）がαより大きい値だった場合、セルモード制御プログラム１４２はＤ０（６５７−０）が正の値である（（ｃ）に該当する）と判定する。【０１０６】
ＳＳＤ＃ｋのＤ０（６５７−０）が、（ｂ）に該当する場合（ステップ１０６０：Ｄ０＝マイナス値）、セルモード制御プログラム１４２は、ＲＧ＃ｎ内の全ＳＳＤ２１についてセルモード変更処理を実行しないと決定し（ステップ１１５０）、処理を終了する。この場合は、先に述べたとおりＳＳＤ２１へのライト頻度が増加傾向にあると推定される。ＳＳＤ＃ｋに対する今後のライト頻度が増加する場合、実際の寿命がステップ１０２０で求められた寿命予測値よりも短くなる可能性がある。そのためセルモード制御プログラム１４２は、この場合にはセルモード変更処理を実行しないと決定する。【０１０７】
ＳＳＤ＃ｋのＤ０（６５７−０）が（ｃ）に該当する場合（ステップ１０６０：Ｄ０＝プラス値）、セルモード制御プログラム１４２は次にステップ１０７０を実行する。またＳＳＤ＃ｋのＤ０（６５７−０）が（ａ）に該当する場合（ステップ１０６０：Ｄ０＝ほぼゼロ値）、セルモード制御プログラム１４２は次にステップ１２１０（図９）を実行する。【０１０８】
ステップ１０７０：セルモード制御プログラム１４２はＳＳＤ＃ｋの稼働時間（ステップ１０１０で算出された値である）が１年未満か判定する。ＳＳＤ＃ｋの稼働時間が１年以上の場合（ステップ１０７０：ＮＯ）、セルモード制御プログラム１４２はＲＧ＃ｎ内の全ＳＳＤ２１についてセルモード変更処理を実行しないと決定し（ステップ１１５０）、処理を終了する。ＳＳＤ＃ｋの稼働時間が１年未満の場合（ステップ１０７０：ＹＥＳ）、セルモード制御プログラム１４２は次にステップ１０８０を実行する。ＳＳＤ＃ｋのＤ０（６５７−０）が（ｃ）に該当する場合、先に述べたとおりＳＳＤ＃ｋへのライト頻度が減少傾向にあると推定される。そのためＳＳＤ＃ｋの実際の寿命がステップ１０２０で求められた寿命予測値よりも長くなる可能性があるため、セルモード変更処理が行われてもよいかもしれない。ただし一般に、ボリュームあるいは記憶デバイスへのアクセス傾向（ホスト等によるリードまたはライトの頻度）は、運用が開始されてからしばらくの間（たとえば半年）は変動が大きく、それ以上経つと徐々にアクセス傾向が安定する。そのためセルモード制御プログラム１４２は、ＳＳＤ＃ｋの稼働時間も考慮して、セルモード変更処理の実行可否を決定する。ＳＳＤ＃ｋの稼働時間が１年未満で、かつライト頻度が単調減少傾向にある場合、セルモード制御プログラム１４２は、ＳＳＤ＃ｋのアクセス傾向が安定し始める時期に入っていると判断し、セルモード変更処理を行って良いと判断する。ただしＳＳＤ＃ｋの稼働時間が短いため、寿命予測値が充分長い（たとえば想定される耐用年数の倍以上）場合に限って、セルモード変更処理が行われる。一方、ライト頻度が減少傾向にあるがＳＳＤ＃ｋの稼働時間が１年以上の場合、ＳＳＤ＃ｋへのアクセス傾向が一般的な傾向とは異なる物と推定される。たとえばＳＳＤ＃ｋに格納されているデータの種類が、ホストからの更新によって変わった場合などである。その場合にセルモード変更処理が行うことはリスク（耐用年数を待たずにＳＳＤ＃ｋが寿命を迎えるリスク）がある。そのためセルモード制御プログラム１４２は、この場合にはセルモード変更処理を実行しないと決定する。【０１０９】
ステップ１０８０：セルモード制御プログラム１４２はＳＳＤ＃ｋの寿命予測値が、稼働開始日から１１年後以上で、かつＳＳＤ＃ｋの差分比率の履歴（Ｄ０（６５７−０）〜Ｄ３（６５７−３））が、Ｄ０≦Ｄ１≦Ｄ２≦Ｄ３の関係にあるか判定する。ステップ１０８０の判定が否定的だった場合（ステップ１０８０：ＮＯ）、つまりＳＳＤ＃ｋの寿命予測値が稼働開始日から１１年未満である、あるいは差分比率の履歴がＤ０≦Ｄ１≦Ｄ２≦Ｄ３の関係にない場合、セルモード制御プログラム１４２はＲＧ＃ｎ内の全ＳＳＤ２１についてセルモード変更処理を実行しないと決定し（ステップ１１５０）、処理を終了する。ステップ１０８０の判定が肯定的だった場合（ステップ１０８０：ＹＥＳ）、セルモード制御プログラム１４２は次にステップ１０９０を実行する。【０１１０】
ステップ１０９０：ステップ１０８０の判定が肯定的だった場合は、ＳＳＤ＃ｋの寿命予測値（稼働開始日から１１年以上）が、想定されているＳＳＤ２１の耐用年数（たとえば５年）よりも長い場合である。またＳＳＤ＃ｋへのＤＫＣ１０からのライト頻度が単調減少傾向にあるといえる。この場合、セルモード制御プログラム１４２は、ＲＧ＃ｎに属するＳＳＤ２１の寿命（寿命予測値）が減少しても、ＳＳＤ２１の論理容量を増やすほうが良いと判断する。そこでセルモード制御プログラム１４２は、ＳＳＤ＃ｋの寿命予測値を削減した場合の残消去可能回数（ＳＳＤ＃ｋの論理容量を増やした場合の残消去可能回数と言い換えることもできる）を見積もる。以下では、論理容量を増やした場合のＳＳＤ２１の寿命予測値のことを「目標寿命値」と呼び、またその時の残消去可能回数のことは「目標残消去可能回数」と呼ぶ。なお、ステップ１０９０では、セルモード制御プログラム１４２はＳＳＤ＃ｋの目標寿命値を稼働開始後から１０年後として、残消去可能回数を求める。ここでＳＳＤ＃ｋの目標寿命値を稼働開始後から１０年後、つまり期待されている耐用年数の倍という長い値に設定される理由は、ＳＳＤ＃ｋの稼働時間が短く（稼働開始後１年未満）、今後ＳＳＤ＃ｋに対するライト頻度（更新頻度）が変動する可能性もあるからである。セルモード制御プログラム１４２は目標寿命値を大きめにすることで、ＳＳＤ＃ｋのセルモードの変更が過剰に行われないようにしている。【０１１１】
ステップ１０９０（あるいは後述するステップ１２３０、ステップ１２５０、ステップ１２７０）で行われる目標残消去可能回数の算出方法を説明する。ここでは、ステップ１０２０で用いた情報を再び用いる。以下では、現在の時刻（今回セルモード制御プログラム１４２を実行している時点）をＴ２、また前回セルモード制御プログラム１４２を実行した時刻をＴ１とする。また、ステップ１０２０において使用した、時刻Ｔ２（現在の時刻）におけるＳＳＤ＃ｋの残消去可能回数をＮ２、そして時刻Ｔ１におけるＳＳＤ＃ｋの残消去可能回数をＮ１とする。【０１１２】
ここで、目標寿命値をＴ３’、目標残消去可能回数をＮ２’とする。この時、目標残消去可能回数（Ｎ２’）は以下の式（４）を用いることで求められる。
【数４】
2017090176.tif 000006
【０１１３】
目標残消去可能回数の算出方法について、再び図１０を用いて説明する。セルモード制御プログラム１４２が目標残消去可能回数を算出する際、ステップ１０２０で寿命予測値を算出した時と同様に、ＳＳＤ２１の残消去可能回数は、式（１）で表される変化率で推移するという仮定に基づいて算出する。ステップ１０２０では、残消去可能回数が０になる時の時刻を算出し、これを寿命予測値とする処理が行われた。ステップ１０９０では逆に、寿命予測値（つまり残消去可能回数が０になる時の時刻）が所定の値（たとえばステップ１０９０では、稼働開始日から１０年後の時刻）であると仮定し、その寿命予測値を満たすために必要な、現在の残消去可能回数の最小値を求める。直線（Ａ）は、ステップ１０２０で行われる寿命予測値の算出で用いた直線である。【０１１４】
ここでの残消去可能回数の算出においても、ステップ１０２０における寿命予測値）との算出と同様、ＳＳＤ２１の残消去可能回数が、式（１）で求めた変化率で減少していくという仮定のもとで、算出が行われる。ステップ１０８０の判定が肯定的だった場合、図１０のＴ３が１１年以上と判定された場合である。またこの場合、ＳＳＤ２１の寿命（寿命予測値）が過剰に長いため、寿命がもう少し短くてもよいから論理容量を増加させたいケースである。【０１１５】
図１０の直線（Ｂ）は、直線（Ａ）と平行な直線（つまり傾きが式（１）で表される値に等しい直線）で、かつ座標（Ｔ３’，０）を通る直線である（ただしＴ３’＜Ｔ３の関係にある）。また直線（Ｂ）上の点（ｂ１）の座標値は、横軸（時刻）の値がＴ２、縦軸（残消去可能回数）の値がＮ２’である。ＳＳＤ２１の残消去可能回数が、式（１）で求めた変化率で減少していくと仮定すると、時刻Ｔ２（現在時刻）における残消去可能回数（Ｎ２’）が、直線（Ｂ）上（図１０における点（ｂ１））に存在していれば、寿命予測値（目標寿命値）はＴ３’になる（時刻Ｔ３’の時に残消去可能回数が０になる）。式（４）は、直線（Ｂ）の時刻Ｔ２における残消去可能回数（つまりＮ２’）を求めるための式である。【０１１６】
ステップ１０９０ではセルモード制御プログラム１４２は、式（４）のＮ１，Ｎ２，Ｔ１，Ｔ２にはステップ１０２０で代入した値と同じ値を代入し、またＴ３’（目標寿命値）には、ＳＳＤ＃ｋの稼働開始日から１０年後の日付を代入することでＮ２’を求める。【０１１７】
ステップ１０９５：セルモード制御プログラム１４２はＲＧ＃ｎに属する全てのＳＳＤ２１について処理（ステップ１０６０〜ステップ１０９０、あるいはステップ１２１０〜ステップ１２７０の処理）を行っていない場合には、未処理のＳＳＤ２１に対してステップ１０６０の処理を実行する。ＲＧ＃ｎに属する全てのＳＳＤ２１について処理が完了している場合には、セルモード制御プログラム１４２は次にステップ１１００を行う。【０１１８】
ステップ１１００：セルモード制御プログラム１４２は、ステップ１０９０等で求められた目標残消去可能回数を用いて、ＳＳＤ＃ｋのセルモード変更処理を行うことを決定する。またここでセルモード制御プログラム１４２は、ステップ１０１０で取得した各ＳＳＤ２１の残消去可能回数をＲＡＩＤグループ管理テーブル６５０の残消去可能回数６５５に格納し、ステップ１０２０で算出された寿命予測値をＲＡＩＤグループ管理テーブル６５０の寿命予測値６５８に格納する。その後セルモード制御プログラム１４２は、ステップ６（セルモード変更処理）を実行する。ステップ６の詳細は後述する。【０１１９】
続いてステップ１０６０の判定において、ＳＳＤ＃ｋのＤ０（６５７−０）が０に極めて近い値だった場合（ステップ１０６０：Ｄ０＝ほぼゼロ値）の処理（図９に記載のステップ１２１０以降の処理）について説明する。この場合、ＳＳＤ＃ｋへのライト頻度に変化がない（一定のライト頻度である）と推定されるので、セルモード制御プログラム１４２は原則として、セルモード変更処理を行ってよいと判断する。詳細は後述する。【０１２０】
ステップ１２１０：セルモード制御プログラム１４２は、ＳＳＤ＃ｋの稼働時間が１年未満か、１年以上３年未満か、３年以上か判定する。【０１２１】
ステップ１２１０で稼働時間が１年未満と判定された場合、ステップ１２４０が実行される。ステップ１２４０でセルモード制御プログラム１４２は、ＳＳＤ＃ｋの寿命予測値が稼働開始日から７年以上で、かつ過去に算出した差分比率（Ｄ１，Ｄ２，Ｄ３）がいずれも０に極めて近い値（−α〜αの範囲の値）であるか判定する。ステップ１２４０の判定が否定的だった場合（ステップ１２４０：ＮＯ）、セルモード制御プログラム１４２はＲＧ＃ｎ内の全ＳＳＤ２１についてセルモード変更処理を実行しないと決定し（ステップ１１５０）、処理を終了する。ステップ１２４０でセルモード制御プログラム１４２が、Ｄ１，Ｄ２，Ｄ３がいずれも−α〜αの範囲の値であるか判定する理由は、ＳＳＤ２１へのライト頻度に変化がないこと、つまりＳＳＤ２１へのアクセス傾向が安定した状態にあるかを確認するためである。ＳＳＤ２１へのアクセス傾向が安定していない状態の場合、今後ライト頻度（消去頻度）が増加する等のリスクがあるため、セルモード制御プログラム１４２はセルモード変更処理を実行しない。【０１２２】
ステップ１２４０の判定が肯定的だった場合（ステップ１２４０：ＹＥＳ）、セルモード制御プログラム１４２はＳＳＤ＃ｋについて、残消去可能回数決定処理を行う（ステップ１２５０）。ステップ１２５０の処理は、ステップ１０９０と同様である。ただしここでは、ＳＳＤ＃ｋの目標寿命値を、稼働開始日から７年とした場合の目標残消去可能回数を決定する。つまり式（４）のＴ３’に稼働開始日から７年後の日付を代入して寿命予測値を算出する点が、ステップ１０９０と異なる。【０１２３】
その後セルモード制御プログラム１４２は、ＲＧ＃ｎに属する全てのＳＳＤ２１について、ステップ１２１０〜ステップ１２７０の処理が完了していない場合には（ステップ１２７５：ＮＯ）、未処理のＳＳＤ２１についてステップ１０６０から処理を繰り返す。ステップ１２７５の判定が肯定的な場合は、続いてステップ１１００が実行される。【０１２４】
ステップ１２１０で稼働時間が１年以上３年未満と判定された場合、ステップ１２６０が実行される。ステップ１２６０でセルモード制御プログラム１４２は、ＳＳＤ＃ｋの寿命予測値が稼働開始日から６年以上で、かつＤ１，Ｄ２，Ｄ３がいずれも０に極めて近い値（−α〜αの範囲の値）であるか判定する。ステップ１２４０の判定が否定的だった場合（ステップ１２６０：ＮＯ）、セルモード制御プログラム１４２はＲＧ＃ｎ内の全ＳＳＤ２１についてセルモード変更処理を実行しないと決定し（ステップ１１５０）、処理を終了する。【０１２５】
ステップ１２６０の判定が肯定的だった場合（ステップ１２６０：ＹＥＳ）、セルモード制御プログラム１４２はＳＳＤ＃ｋについて、残消去可能回数決定処理を行う（ステップ１２７０）。ステップ１２７０の処理は、ステップ１０９０と同様である。ただしここでは、ＳＳＤ＃ｋの目標寿命値を、稼働開始日から６年とした場合の残消去可能回数を決定する。つまり式（４）のＴ３’に稼働開始日から６年後の日付を代入して寿命予測値を算出する点が、ステップ１０９０と異なる。【０１２６】
その後セルモード制御プログラム１４２は、ＲＧ＃ｎに属する全てのＳＳＤ２１について、ステップ１２１０〜ステップ１２７０の処理が完了していない場合には（ステップ１２７５：ＮＯ）、未処理のＳＳＤ２１についてステップ１０６０から処理を繰り返す。ステップ１２７５の判定が肯定的な場合は、続いてステップ１１００が実行される。【０１２７】
ステップ１２１０で稼働時間が３年以上と判定された場合、ステップ１２２０が実行される。ステップ１２２０でセルモード制御プログラム１４２は、ＳＳＤ＃ｋの寿命予測値が稼働開始日から５．５年以上で、かつＤ１，Ｄ２，Ｄ３がいずれも０に極めて近い値（−α〜αの範囲の値）であるか判定する。ステップ１２２０の判定が否定的だった場合（ステップ１２２０：ＮＯ）、セルモード制御プログラム１４２はＲＧ＃ｎ内の全ＳＳＤ２１についてセルモード変更処理を実行しないと決定し（ステップ１１５０）、処理を終了する。【０１２８】
ステップ１２２０の判定が肯定的だった場合（ステップ１２２０：ＹＥＳ）、セルモード制御プログラム１４２はＳＳＤ＃ｋについて、残消去可能回数決定処理を行う（ステップ１２３０）。ステップ１２３０の処理は、ステップ１０９０と同様である。ただしここでは、ＳＳＤ＃ｋの目標寿命値を、稼働開始日から５．５年とした場合の残消去可能回数を決定する。つまり式（４）のＴ３’に稼働開始日から５．５年後の日付を代入して寿命予測値を算出する点が、ステップ１０９０と異なる。【０１２９】
その後セルモード制御プログラム１４２は、ＲＧ＃ｎに属する全てのＳＳＤ２１について、ステップ１２１０〜ステップ１２７０の処理が完了していない場合には（ステップ１２７５：ＮＯ）、未処理のＳＳＤ２１についてステップ１０６０から処理を繰り返す。ステップ１２７５の判定が肯定的な場合は、続いてステップ１１００が実行される。【０１３０】
続いて、図７のステップ６に相当する処理（セルモード変更処理）の詳細を、図１３、図１１、図１２を用いて説明する。【０１３１】
まず、図１３を参照しながら、ステップ６の処理の概略を説明する。セルモード制御プログラム１４２は、ＲＧ＃ｎに属する各ＳＳＤ２１に、容量確認コマンドを発行する（ステップ７）。容量確認コマンドには、残消去可能回数の情報が含まれている。ここに含まれる残消去可能回数の情報は、セルモード制御プログラム１４２が図８、図９に示された処理（図７のステップ３〜ステップ５に相当する処理）を実行した結果得られた、ＳＳＤ２１の目標残消去可能回数である。【０１３２】
ＳＳＤ２１の一部または全部のブロック２１１をＭＬＣモードからＴＬＣモードに変更すると、ＳＳＤ２１の論理容量が増加するが残消去可能回数が減少する。このコマンドを受領したＳＳＤ２１は、コマンドに含まれている残消去可能回数の情報を用いてＴＬＣモードに変更可能なブロック２１１の数を求め、さらにそれをもとに、ブロック２１１をＴＬＣモードに変更した場合の論理容量を算出する（ステップ８）、ＳＳＤ２１は算出された論理容量をストレージコントローラ１０に返却する（ステップ９）。なお、ここでＳＳＤ２１が実行する処理の詳細は、後述する。【０１３３】
図１１を参照しながら、ステップ８でＳＳＤ２１が実行する処理の流れを説明する。図１１の処理は、ＳＳＤ２１が有するセルモード変更プログラム２４２により行われる。【０１３４】
ステップ２０１０：セルモード変更プログラム２４２はＤＫＣ１０から容量確認コマンドを受領すると、容量確認コマンドに含まれている残消去可能回数の情報を抽出する。【０１３５】
ステップ２０２０：セルモード変更プログラム２４２はブロック管理テーブル１１５０の複製を作成する。ここでは作成されたブロック管理テーブル１１５０の複製のことを「複製テーブル」と呼ぶ。また複製テーブルの各カラムは、ブロック管理テーブル１１５０と同様に、チップ＃１１５１、ダイ＃１１５２、ブロック＃１１５３、モード１１５４、残消去可能回数１１５５と呼ぶ。そしてセルモード変更プログラム２４２は複製テーブルの各レコードについて、残消去可能回数１１５５の大きい順にソートする。【０１３６】
ステップ２０３０：セルモード変更プログラム２４２は、複製テーブルの中から、レコードを１つ選択する。ここで選択されるレコードは、以下で説明するステップ２０４０以降の処理が行われていないレコードで、かつ残消去可能回数１１５５が最も大きいレコードである。【０１３７】
ステップ２０４０：セルモード変更プログラム２４２は、複製テーブルの内容を元にＳＳＤ２１の残消去可能回数を算出する。この時セルモード変更プログラム２４２は、ステップ２０３０で選択されたレコードで管理されるブロックが、ＭＬＣモードからＴＬＣモードに変更されたという前提で、ＳＳＤ２１の残消去可能回数を算出する。具体的には以下の手順で計算が行われる。【０１３８】
まずセルモード変更プログラム２４２は、複製テーブルの中の、ステップ２０３０で選択されたレコードを除く全てのレコードの残消去可能回数１１５５の合計値を算出する。続いてセルモード変更プログラム２４２は、ステップ２０３０で選択されたレコードの残消去可能回数に０．１を乗じた値を算出し、ここで算出された値を、先に算出した残消去可能回数１１５５の合計値に加算する。【０１３９】
そしてセルモード変更プログラム２４２は、ここで算出されたＳＳＤ２１の残消去可能回数が、ステップ２０１０で受領した残消去可能回数以下であるか判定する。算出されたＳＳＤ２１の残消去可能回数が、ステップ２０１０で受領した残消去可能回数以下の場合（ステップ２０４０：ＹＥＳ）、次にステップ２０５０が行われる。算出されたＳＳＤ２１の残消去可能回数が、ステップ２０１０で受領した残消去可能回数よりも大きい場合（ステップ２０４０：ＮＯ）、セルモード変更プログラム２４２はステップ２０５０〜ステップ２０７０の処理をスキップし、次にステップ２０８０を行う。【０１４０】
また、ステップ２０４０では、もしステップ２０３０で選択されたレコードのモード１１５４が“１”だった場合（つまり選択されたレコードで管理されるブロックが既にＴＬＣモードだった場合）も、ステップ２０５０〜ステップ２０７０の処理はスキップされ、ステップ２０８０が行われる。【０１４１】
ステップ２０５０：セルモード変更プログラム２４２は、ステップ２０３０で選択されたレコードの残消去可能回数１１５５を変更し（０．１倍する）、またこのレコードのモード１１５４を“１”に変更する。【０１４２】
ステップ２０７０：セルモード変更プログラム２４２は、複製テーブルの中に未処理のレコード（ステップ２０３０、ステップ２０４０等の処理が行われていないレコード）があるか判定する。未処理のレコードがある場合（ステップ２０７０：ＹＥＳ）、セルモード変更プログラム２４２は再びステップ２０３０の処理を行う。未処理のレコードがない場合（ステップ２０７０：ＮＯ）、次にステップ２０８０が行われる。【０１４３】
ステップ２０８０：セルモード変更プログラム２４２は、幾つかのブロックがＴＬＣモードに変更された場合の、ＳＳＤ２１の論理容量を算出する。具体的には以下の計算を行う。【０１４４】
セルモード変更プログラム２４２は、複製テーブルのレコードのうち、モード１１５４が“０”であるレコードの数（これをＭとする）及びモード１１５４が“１”であるレコードの数（これをＴとする）を計数する。計数された値（Ｍ，Ｔ）はそれぞれ、ＳＳＤ２１内の幾つかのブロック２１１がＴＬＣモードに変更された場合の、ＭＬＣモードのブロック数、ＴＬＣモードのブロック数に相当する。そしてセルモード変更プログラム２４２は、Ｍ×ＭＬＣモードのブロックのサイズ＋Ｔ×ＴＬＣモードのブロックのサイズを算出することで、ＳＳＤ２１の論理容量を求める。なお、ＴＬＣモードのブロックのサイズはＭＬＣモードのブロックのサイズの１．５倍の関係にある（１つのセル２１４に格納可能なビット数が、ＴＬＣはＭＬＣの１．５倍だからである）。【０１４５】
ステップ２０９０：セルモード変更プログラム２４２は、ステップ２０８０で算出されたＳＳＤ２１の論理容量をＤＫＣ１０に通知し、複製テーブルを破棄し、処理を終了する。【０１４６】
図１３の説明、つまりＤＫＣ１０のセルモード制御プログラム１４２で実行される処理の説明に戻る。【０１４７】
各ＳＳＤ２１から論理容量が返却された後、セルモード制御プログラム１４２はＲＧ＃ｎに属するＳＳＤ２１の最小容量を決定する（ステップ１０）。具体的にはセルモード制御プログラム１４２は、ＲＧ＃ｎに属する各ＳＳＤ２１から返却された論理容量の最小値を特定する。特定された値が、ＲＧ＃ｎに属するＳＳＤ２１の最小容量である。その後セルモード制御プログラム１４２は、セルモードの変更可否をユーザに確認する（ステップ１１）。一例として、セルモード制御プログラム１４２は管理ホスト５に、図１４に示されるような確認用画面を管理ホスト５のディスプレイに表示させ、セルモードの変更を承諾するか否か、ユーザからの返答を得る。図１４の確認用画面のうち“実施する”ボタンをユーザが押した場合、管理ホスト５はその旨をセルモード制御プログラム１４２に返却する（ステップ１２）。【０１４８】
セルモードの変更をユーザが許可しなかった場合、つまり確認用画面の“実施しない”ボタンをユーザが押した場合、セルモード制御プログラム１４２は処理を終了する。【０１４９】
セルモードの変更をユーザが許可した場合、つまり確認用画面の“実施する”ボタンをユーザが押した場合、セルモード制御プログラム１４２は、ＲＧ＃ｎに属する各ＳＳＤ２１に、セルモード変更コマンドを発行する。セルモード変更コマンドには、容量情報が含まれている。セルモード制御プログラム１４２は、ステップ１０で決定したＳＳＤ２１の最小容量が容量情報として設定されたセルモード変更コマンドを、各ＳＳＤ２１に発行する。このコマンドを受領したＳＳＤ２１は、コマンドに含まれている容量情報を用いて、ＳＳＤ２１内のいくつかのブロックのセルモードを、ＭＬＣモードからＴＬＣモードに変更する（ステップ１４）。【０１５０】
図１２を用いて、セルモード変更コマンドを受領したＳＳＤ２１が実施する処理（ステップ１４）の詳細を説明する。【０１５１】
ステップ２５１０：セルモード変更プログラム２４２はＤＫＣ１０からセルモード変更コマンドを受領すると、セルモード変更コマンドに含まれている容量情報を抽出する。先に述べたとおり、この容量情報はステップ１０で決定された、ＲＧ＃ｎに属するＳＳＤ２１の最小容量である。【０１５２】
ステップ２５２０：セルモード変更プログラム２４２はブロック管理テーブル１１５０の中から、レコードを１つ選択する。ここで選択されるレコードは、以下で説明するステップ２５３０以降の処理が行われていないレコードで、かつ残消去可能回数１１５５が最も大きいレコードである。【０１５３】
ステップ２５３０：セルモード変更プログラム２４２は、ステップ２５２０で選択されたレコードで管理されるブロックがＴＬＣモードに変更された想定の元、ＳＳＤ２１の論理容量を算出する。算出方法は以下の通りである。【０１５４】
セルモード変更プログラム２４２は、ブロック管理テーブル１１５０のレコードのうち、モード１１５４が“０”であるレコードの数から１を減算した値を算出する。この値を以下では“ｍ”と表記する。またセルモード変更プログラム２４２は、ブロック管理テーブル１１５０のレコードのうち、モード１１５４が“１”であるレコードの数に１を加算した値を算出する。この値を以下では“ｍ”と表記する。ｍとｔは、ステップ２５２０で選択されたレコードで管理されるブロック（つまり１つのブロック）がＴＬＣモードに変更されたと仮定した場合、ＳＳＤ２１内のＭＬＣモードのブロック数、ＴＬＣモードのブロック数になる。【０１５５】
そしてセルモード変更プログラム２４２は、
ｍ×ＭＬＣモードのブロックのサイズ＋ｔ×ＴＬＣモードのブロックのサイズ
を算出することで、セルモード変更後のＳＳＤ２１の論理容量を求める。【０１５６】
ここで求められたセルモード変更後のＳＳＤ２１の論理容量が、ステップ２５１０で取得した容量情報以下の場合（ステップ２５３０：ＹＥＳ）、次にステップ２５４０が行われる。一方、セルモード変更後のＳＳＤ２１の論理容量がステップ２５１０で取得した容量情報より大きい場合（ステップ２５３０：ＮＯ）、セルモード変更プログラム２４２はステップ２５４０〜ステップ２５５０の処理をスキップし、次にステップ２５６０を行う。【０１５７】
ステップ２５４０：セルモード変更プログラム２４２はＦＭチップ２１０に、ステップ２５２０で選択されたレコードで管理されるブロック２１１のセルモード変更の指示を発行し、そのブロック２１１をＴＬＣモードに変更させる。その後セルモード変更プログラム２４２は、ブロック管理テーブル１１５０のレコード（ステップ２５２０で選択されたレコード）のモード１１５４を“１”に変更するとともに、残消去可能回数１１５５を変更する（０．１倍する）。【０１５８】
ステップ２５５０：セルモード変更プログラム２４２は、ブロック管理テーブル１１５０の中に未処理のレコード（ステップ２５２０、ステップ２５３０等の処理が行われていないレコード）があるか判定する。未処理のレコードがある場合（ステップ２５５０：ＹＥＳ）、セルモード変更プログラム２４２は再びステップ２５２０の処理を行う。未処理のレコードがない場合（ステップ２５５０：ＮＯ）、次にステップ２５６０が行われる。【０１５９】
ステップ２５６０：セルモード変更プログラム２４２は、処理が完了した旨をＤＫＣ１０に通知し、処理を終了する。この時セルモード変更プログラム２４２は、変更後のＳＳＤ２１の論理容量をＤＫＣ１０に通知する。【０１６０】
ステップ１４（図１２の処理）が終了すると（ＲＧ＃ｎに属する全ＳＳＤ２１から処理完了の応答を受領すると）、セルモード制御プログラム１４２はＳＳＤ２１から返却されたＳＳＤ２１の論理容量をＲＡＩＤグループ管理テーブル６５０（論理容量６５４）に格納し、また前回実施日６６０に現在の日付（時刻）を格納し、処理を終了する。【０１６１】
以上が、本実施例に係るストレージシステムで行われる処理である。本実施例に係るストレージシステムでは、ＳＳＤ２１の残消去可能回数の変化率からＳＳＤ２１の寿命を予測し、予測した寿命が所定値(耐用年数)より大きい場合、一部のブロック（セル）のモードをＭＬＣモードからＴＬＣモードに変更して、ＳＳＤ２１の記憶容量を増加させる。具体的にはストレージコントローラが、目標寿命を満足するＳＳＤ２１の残消去可能回数（目標残消去可能回数）を算出する。そしてＳＳＤ２１は、ＳＳＤ２１の残消去可能回数が目標残消去可能回数に変更された場合、何個のブロックをＴＬＣモードで運用可能か決定し、決定された数のブロックについてセルモードを変更する。これによりストレージシステムは、ＳＳＤ２１の寿命（耐用年数）を維持しつつ、より大きな記憶容量をユーザに提供することができる。【０１６２】
以上、本発明の実施例を説明したが、これらは、本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。すなわち、本発明は、他の種々の形態でも実施する事が可能である。【０１６３】
上で説明した実施例では、ＳＳＤ２１の各セルが、２ビットまたは３ビットのデータを格納可能な例を説明したが、本発明はこれに限定されるものではない。たとえばＳＳＤ２１の各セルが、ｎビット（ｎは２以上の整数）のデータを格納可能なモードからｍビット（ただしｍは、ｎ＜ｍを満たす整数）のデータを格納可能なモードに変更可能である場合にも、適用可能である。また上の実施例では、あるブロックのセルモードがＭＬＣモードからＴＬＣモードに変更されると、そのブロックの残消去可能回数がセルモード変更前の残消去可能回数の１／ｃ（たとえばｃ＝１０）に変更される例が説明されたが、これは一例であり、これ以外の例が用いられてもよい【０１６４】
また、上で説明した実施例では、ストレージシステムは複数のＳＳＤ２１をＲＡＩＤグループとして運用する例が説明されたが、ＳＳＤ２１がＲＡＩＤグループとして運用される構成は必須ではない。たとえばストレージシステムは、単一のＳＳＤ２１が提供する記憶アドレス空間をプールに登録して運用してもよいし、あるいはＳＳＤ２１が提供する記憶アドレス空間が直接ホスト２に提供されてもよい。【０１６５】
また上で説明した実施例では、ＳＳＤ２１はストレージコントローラ１０から容量確認コマンドを受領することで、残消去可能回数（目標残消去可能回数）を取得すると、一旦算出された容量の情報をストレージコントローラ１０に返却する。そしてストレージコントローラ１０から容量情報（セルモード変更コマンドに含まれている）を受領すると、その容量情報に基づいて、幾つかのセル（ブロック）のモードをＭＬＣモードからＴＬＣモードに変更する。つまりセルモード変更が行われるまでに、ストレージコントローラ１０とＳＳＤ２１の間で２回のコマンドのやり取りが行われる。ただし別の実施形態として、ＳＳＤ２１はストレージコントローラ１０から目標残消去可能回数を与えられた時点で、一旦ストレージコントローラ１０に応答を返すことなく、セルモードの変更を行ってもよい。具体的にはたとえば、図１１のステップ２０７０までの処理で、ＴＬＣモードに変更されてもよいブロックが決定されるので、ＳＳＤ２１はステップ２０８０で決定されたブロックをＴＬＣモードに変更するとよい。【０１６６】
また、上で説明した実施例ではＴＬＣモードに変更後のセルの残寿命を推定するために残消去可能回数を使用したが、残寿命の推定方法はこの方法に限られるものではない。一例を挙げると、セルの寿命は消去回数だけでなく消去間隔（前回消去からの経過時間）にも依存することが知られている。そこで、残消去可能回数に代えて、消去間隔を加味したポイントを管理し、そのポイントの変化率に基づいて残寿命を算出（推定）するようにしてもよい（たとえば残消去可能回数の代わりに、最初は一定のポイントをすべてのブロックに与えておく。そして、ブロックの消去が行われると、消去間隔に応じてブロックから所定量の値を削減するが、消去間隔が短い場合には削減する量を多くするとよい）。これにより、より正確な残寿命の推定が可能になると考えられる。
【符号の説明】
【０１６７】
１：ストレージ装置，  ２：ホスト計算機，  ３：ＳＡＮ，  ５：管理ホスト，  １０：ストレージコントローラ，  １１：ＣＰＵ，  １２ホストＩ／Ｆ，  １３：デバイスＩ／Ｆ，  １４：メモリ，  １５：管理用Ｉ／Ｆ，  ２１：ＳＳＤ，  ２５：ＨＤＤ，  ２００：ＳＳＤコントローラ，  ２０１：ＣＰＵ，  ２０２：上流Ｉ／Ｆ，  ２０３：下流Ｉ／Ｆ，  ２０４：メモリ，  ２０５：内部接続スイッチ，  ２１０：ＦＭチップ，  ２１１：ブロック，  ２１３：ダイ，  ２１４：セル
【図１】
2017090176.tif 000007
【図２】
2017090176.tif 000008
【図３】
2017090176.tif 000009
【図４】
2017090176.tif 000010
【図５】
2017090176.tif 000011
【図６】
2017090176.tif 000012
【図７】
2017090176.tif 000013
【図８】
2017090176.tif 000014
【図９】
2017090176.tif 000015
【図１０】
2017090176.tif 000016
【図１１】
2017090176.tif 000017
【図１２】
2017090176.tif 000018
【図１３】
2017090176.tif 000019
【図１４】
2017090176.tif 000020
【国際調査報告】
2017090176.tif 000021
2017090176.tif 000022
2017090176.tif 000023
2017090176.tif 000024