(57)【要約】【課題】アクセス速度の低下を抑制して、効率良く複数の記憶装置にアクセスする。【解決手段】実施形態の記憶システムは、不揮発性の複数の記憶装置と、制御装置とを備える。複数の記憶装置のそれぞれは、複数のブロックに分割され、ブロックの単位でデータを消去する。制御装置は、設定部と、書込読出部とを有する。設定部は、複数の記憶装置のそれぞれについて、記憶領域を分割した複数の第１記憶領域を設定し、複数の記憶装置の全体について、複数の記憶装置の全体の記憶領域を分割した複数の第２記憶領域を設定する。書込読出部は、第２記憶領域の単位で、複数の記憶装置に記憶されたデータを管理する。設定部は、複数の記憶装置の少なくとも１つの記憶装置についての第１記憶領域が、１または複数のブロックの全体を含むように、それぞれの第１記憶領域を設定し、２以上の第１記憶領域を含むように、それぞれの第２記憶領域を設定する。【選択図】図３
2018081627.tif 000002
【特許請求の範囲】
【請求項１】
互いに独立にデータの書き込みおよび読み出しが可能な不揮発性の複数の記憶装置と、
前記複数の記憶装置に対するデータの書き込みおよびデータの読み出しを制御する制御装置と、
を備え、
前記複数の記憶装置のそれぞれは、複数のブロックに分割され、前記ブロックの単位でデータを消去し、
前記制御装置は、
前記複数の記憶装置のそれぞれについて、記憶領域を分割した複数の第１記憶領域を設定し、前記複数の記憶装置の全体について、前記複数の記憶装置の全体の記憶領域を分割した複数の第２記憶領域を設定する設定部と、
前記第２記憶領域の単位で、前記複数の記憶装置に記憶されたデータを管理する書込読出部と、
を有し、
前記設定部は、
前記複数の記憶装置の少なくとも１つの記憶装置についての前記第１記憶領域が、１または複数の前記ブロックの全体を含むように、それぞれの前記第１記憶領域を設定し、
２以上の前記第１記憶領域を含むように、それぞれの前記第２記憶領域を設定する
記憶システム。
【請求項２】
前記設定部は、前記複数の記憶装置のうち異なる２以上の記憶装置から選択された２以上の前記第１記憶領域を、それぞれの前記第２記憶領域に含める
請求項１に記載の記憶システム。
【請求項３】
前記複数の記憶装置のそれぞれは、複数の不揮発性の半導体メモリを有し、
前記ブロックは、前記複数の不揮発性の半導体メモリにより実現される記憶領域を分割した領域である
請求項１または２に記載の記憶システム。
【請求項４】
前記書込読出部は、前記複数の記憶装置に記憶されたデータを、前記第２記憶領域の単位で無効化する
請求項１から３の何れか１項に記載の記憶システム。
【請求項５】
前記複数の記憶装置のそれぞれについての前記ブロックの形成領域を示す特徴情報を記憶する不揮発性の特徴情報記憶部をさらに備え、
前記設定部は、前記特徴情報記憶部から、前記複数の記憶装置のそれぞれについての前記特徴情報を取得し、取得した前記特徴情報に基づき、前記第１記憶領域を設定する
請求項１から４の何れか１項に記載の記憶システム。
【請求項６】
前記複数の記憶装置のそれぞれの属性情報と、対応する記憶装置の前記ブロックの形成領域を示す特徴情報とを対応付けて格納する属性情報テーブルを記憶する不揮発性の特徴情報記憶部をさらに備え、
前記設定部は、前記複数の記憶装置のそれぞれから前記属性情報を取得し、取得した前記属性情報に対応する前記特徴情報を前記特徴情報記憶部から読み出し、読み出した前記特徴情報に基づき、前記第１記憶領域を設定する
請求項１から４の何れか１項に記載の記憶システム。
【請求項７】
前記複数の記憶装置のそれぞれは、前記特徴情報を出力しない
請求項５または６に記載の記憶システム。
【請求項８】
前記設定部は、前記複数の記憶装置のそれぞれから、前記ブロックの形成領域を示す特徴情報を取得し、取得した前記特徴情報に基づき、前記第１記憶領域を設定する
請求項１から４の何れか１項に記載の記憶システム。
【請求項９】
前記設定部は、外部から、前記複数の記憶装置のそれぞれについての前記ブロックの形成領域を示す特徴情報を取得し、取得した前記特徴情報に基づき、前記第１記憶領域を設定する
請求項１から４の何れか１項に記載の記憶システム。
【請求項１０】
前記設定部は、初期化時に、前記第１記憶領域および前記第２記憶領域を設定する
請求項５から９の何れか１項に記載の記憶システム。
【請求項１１】
前記設定部は、全ての前記第１記憶領域を同一サイズに設定する
請求項１から１０の何れか１項に記載の記憶システム。
【請求項１２】
前記複数の記憶装置のそれぞれに含まれる前記ブロックは、同一サイズであり、
前記設定部は、前記第１記憶領域を前記ブロックと同一サイズに設定する
請求項１１に記載の記憶システム。
【請求項１３】
前記設定部は、前記複数の記憶装置のそれぞれから１つずつ選択した前記第１記憶領域を含む複数の前記第２記憶領域を設定する
請求項１から１２の何れか１項に記載の記憶システム。
【請求項１４】
前記複数の記憶装置のうち異なる組み合わせの２以上の記憶装置から選択した２以上の前記第１記憶領域を含む複数の前記第２記憶領域を設定する
請求項１から１０の何れか１項に記載の記憶システム。
【請求項１５】
前記設定部は、前記複数の記憶装置のうちの第１の記憶装置の前記第１記憶領域に含まれる前記ブロックの数と、第２の記憶装置の前記第１記憶領域に含まれる前記ブロックの数とを変える
請求項１１から１３の何れか１項に記載の記憶システム。
【請求項１６】
前記設定部６４は、前記複数の記憶装置のうちの少なくとも１つの記憶装置の前記第１記憶領域を前記ブロックのサイズの自然数倍に設定する
請求項１から１５の何れか１項に記載の記憶システム。
【請求項１７】
前記設定部は、前記複数の記憶装置のそれぞれにおける欠陥部分を取得し、前記ブロックにおける前記欠陥部分を除いた領域の全体を含むように、それぞれの前記第１記憶領域を設定する
請求項１から１６の何れか１項に記載の記憶システム。
【請求項１８】
前記制御装置は、
前記複数の記憶装置のうちの互いに異なるグループに対する、データの書き込みおよびデータの読み出しを制御する複数の制御部を有し、
それぞれの前記制御部は、前記設定部と、前記書込読出部とを有し、
それぞれの前記制御部の前記設定部は、対応する前記グループに属する記憶装置について独自のサイズの前記第１記憶領域を設定する
請求項１から１７の何れか１項に記載の記憶システム。
【請求項１９】
前記設定部は、それぞれの前記第２記憶領域に対して、前記第２記憶領域を分割した複数の書込ユニットを設定し、
前記書込ユニットは、対応する前記第２記憶領域に含まれる複数の前記第１記憶領域のそれぞれの一部を含み、
前記書込読出部は、前記書込ユニットに、対象データと、前記対象データのパリティとの組を書き込む
請求項１から１８の何れか１項に記載の記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶システムに関する。
【背景技術】
【０００２】
ＳＳＤ（Solid  State  Drive）と呼ばれる記憶装置が知られている。ＳＳＤは、ＮＡＮＤ型フラッシュメモリ等の不揮発性の半導体メモリを用いたデバイスである。また、ＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）の記憶デバイスとしてＳＳＤを適用することにより、複数のＳＳＤを仮想的な１つの記憶リソースとして用いる方法も知られている。
【０００３】
ところで、ＳＳＤでは、データを上書きできない。また、ＳＳＤは、データの消去をブロック単位でしか実行できない。このため、ＳＳＤでは、定期的に、ガベージコレクションと呼ばれる処理を実行して、データを書き込むことが可能な空ブロックを生成する。ガベージコレクションでは、処理対象のブロックに記憶されている有効なデータを他のブロックに移動した後、処理対象のブロックに対する消去処理を実行する。このため、ガベージコレクションが頻繁に発生すると、ＳＳＤに記憶されているデータが分散し、アクセス速度の低下を招く場合がある。
【０００４】
ＲＡＩＤでは、分散記録および冗長化を図る等の目的のために、ストライプと呼ばれる複数のデバイスを貫くアクセス単位で、データの無効化および書き込みをする。ストライプは、ＲＡＩＤの制御装置が設定する。これに対して、ブロックは、個々のＳＳＤ毎に独自に設定されており、製造メーカによってはサイズ等が不明な場合もある。
【０００５】
このため、ＳＳＤを適用したＲＡＩＤでは、ストライプとブロックとの間に整合性が無い。このため、ＳＳＤを適用したＲＡＩＤでは、ストライプの単位でデータが無効化されると、無効化したデータと有効なデータとがブロック内に混在する。従って、このようなブロックが多数発生した場合には、ＳＳＤは、ガベージコレクションを実行して空ブロックを生成しなければならなかった。この結果、ＳＳＤを適用したＲＡＩＤでは、アクセス速度の低下を招く可能性があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】米国特許８８８０７８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
発明が解決しようとする課題は、アクセス速度の低下を抑制して、効率良く複数の記憶装置にアクセスすることにある。
【課題を解決するための手段】
【０００８】
実施形態の記憶システムは、互いに独立にデータの書き込みおよび読み出しが可能な不揮発性の複数の記憶装置と、制御装置とを備える。前記制御装置は、前記複数の記憶装置に対するデータの書き込みおよびデータの読み出しを制御する。前記複数の記憶装置のそれぞれは、複数のブロックに分割され、前記ブロックの単位でデータを消去する。前記制御装置は、設定部と、書込読出部とを有する。前記設定部は、前記複数の記憶装置のそれぞれについて、記憶領域を分割した複数の第１記憶領域を設定し、前記複数の記憶装置の全体について、前記複数の記憶装置の全体の記憶領域を分割した複数の第２記憶領域を設定する。前記書込読出部は、前記第２記憶領域の単位で、前記複数の記憶装置に記憶されたデータを管理する。前記設定部は、前記複数の記憶装置の少なくとも１つの記憶装置についての前記第１記憶領域が、１または複数の前記ブロックの全体を含むように、それぞれの前記第１記憶領域を設定し、２以上の前記第１記憶領域を含むように、それぞれの前記第２記憶領域を設定する。
【図面の簡単な説明】
【０００９】
【図１】実施形態に係るコンピュータシステムの構成図。
【図２】記憶装置の機能構成を示す図。
【図３】制御装置の機能構成を複数の記憶装置とともに示す図。
【図４】特徴情報の一例を示す図。
【図５】ブロック、チャンクおよびストライプの関係の一例を示す図。
【図６】異なる２以上の記憶装置のチャンクを含むストライプの一例を示す図。
【図７】ブロックのサイズが異なる場合のチャンクおよびストライプの関係図。
【図８】ブロックの一部分を含むチャンクの一例を示す図。
【図９】記憶装置に欠陥部分を含む場合のブロックおよびチャンクの関係図。
【図１０】制御装置が複数の制御部を有する場合の記憶システムの構成図。
【図１１】ストライプと書込ユニットとの関係図。
【図１２】属性情報テーブルの一例を示す図。
【発明を実施するための形態】
【００１０】
以下、図面を参照しながら実施形態について詳細に説明する。本実施形態に係るコンピュータシステム１０は、ホストコンピュータ２０から記憶システム３０に対するアクセス速度の低下を抑制することにある。
【００１１】
図１は、実施形態に係るコンピュータシステム１０の構成を示す図である。コンピュータシステム１０は、ホストコンピュータ２０と、記憶システム３０とを備える。
【００１２】
ホストコンピュータ２０は、例えば、プロセッサとメインメモリとを備える、プログラムを実行する一般的なコンピュータであってよい。ホストコンピュータ２０は、記憶システム３０を記憶リソースとして用いる。ホストコンピュータ２０と記憶システム３０とは、ＰＣＩ  Ｅｘｐｒｅｓｓ等のインターフェイスにより接続される。
【００１３】
記憶システム３０は、複数の記憶装置５０と、制御装置６０とを有する。例えば、複数の記憶装置５０と制御装置６０とは、同一の製造メーカにより製造され、１つの筐体内に一体的に配置される。
【００１４】
複数の記憶装置５０は、互いに独立にデータの書き込みおよび読み出しが可能な不揮発性の記憶デバイスである。複数の記憶装置５０のそれぞれは、例えば、複数の不揮発性の半導体メモリを備える。複数の記憶装置５０のそれぞれは、例えば、ＳＳＤである。ＳＳＤは、ＮＡＮＤ型フラッシュメモリ等の不揮発性の半導体メモリを用いたデバイスである。
【００１５】
制御装置６０は、ホストコンピュータ２０と通信する。また、制御装置６０は、複数の記憶装置５０を仮想的な１つの記憶リソースとしてホストコンピュータ２０にアクセスさせるための制御を実行する。制御装置６０は、ホストコンピュータ２０から記憶システム３０への書込コマンドおよび読出コマンド等を受け付ける。そして、制御装置６０は、ホストコンピュータ２０からのコマンドに応じて、複数の記憶装置５０に対するデータの書き込みおよびデータの読み出しを制御する。
【００１６】
図２は、記憶装置５０の機能構成を示す図である。複数の記憶装置５０のそれぞれは、第１通信部５２と、データ記憶部５４と、管理部５６とを有する。
【００１７】
第１通信部５２は、制御装置６０からの読出命令に応じて、データ記憶部５４における指定されたアドレスからデータを読み出す。また、第１通信部５２は、制御装置６０からの書込命令に応じて、データ記憶部５４における指定されたアドレスにデータを書き込む。また、第１通信部５２は、制御装置６０からの無効化命令に応じて、データ記憶部５４における指定されたアドレスに書き込まれたデータを無効化する。
【００１８】
データ記憶部５４は、複数の不揮発性の半導体メモリにより実現される記憶領域である。データ記憶部５４は、複数のブロックに分割されている。すなわち、ブロックは、複数の不揮発性の半導体メモリにより実現される記憶領域を分割した領域である。ブロックは、記憶装置５０毎に個別にサイズが設定されている。例えば、ブロックは、記憶装置５０の製造メーカ等によりサイズが設定されている。
【００１９】
記憶装置５０は、データ記憶部５４に書き込まれているデータをブロックの単位で消去する。なお、記憶装置５０は、ブロックより小さい単位で、書き込まれているデータを消去しない。また、記憶装置５０は、データが消去された後のブロックに対して、先頭のアドレスから順次にデータを書き込むことができる。なお、記憶装置５０は、データが書き込まれたアドレスには、ブロックの単位でデータを消去した後でなければ、データを書き込むことができない。
【００２０】
管理部５６は、データ記憶部５４に記憶されているデータを管理する。例えば、管理部５６は、定期的または所定のタイミングにおいて、ガベージコレクションを実行して、データ記憶部５４に空のブロックを生成する。例えば、管理部５６は、処理対象のブロックに記憶されている有効なデータを他のブロックに移動した後、処理対象のブロックに書き込まれているデータを消去する。これにより、管理部５６は、以後、処理対象のブロックの先頭のアドレスから、新たにデータを書き込ませることができる。なお、管理部５６は、独自のタイミングでガベージコレクションを実行してよい。例えば、管理部５６は、制御装置６０の指示によらずにガベージコレクションを実行してよい。また、管理部５６は、他の記憶装置５０とは非同期にガベージコレクションを実行してよい。
【００２１】
図３は、制御装置６０の機能構成を複数の記憶装置５０とともに示す図である。図４は、特徴情報の一例を示す図である。
【００２２】
制御装置６０は、特徴情報記憶部６２と、設定部６４と、設定記憶部６６と、書込読出部６８と、第２通信部７０とを有する。
【００２３】
特徴情報記憶部６２は、特徴情報を記憶する。特徴情報は、複数の記憶装置５０のそれぞれについてのブロックの形成領域を示す。
【００２４】
例えば、特徴情報は、複数の記憶装置５０のそれぞれについての、それぞれのブロックの開始アドレスおよびサイズを含む。また、記憶装置５０毎にブロックのサイズが同一であれば、特徴情報は、複数の記憶装置５０のそれぞれについての、ブロックのサイズを含む。また、記憶装置５０内において１つのブロックが分散して形成されている場合には、特徴情報は、それぞれのブロックが何れのアドレスに分散しているかを示す情報も含んでよい。例えば、図４に示すように、特徴情報は、記憶システム３０に備えられる記憶装置５０毎に、ブロックのサイズを含む。
【００２５】
特徴情報記憶部６２は、不揮発性メモリであってよい。例えば、特徴情報記憶部６２は、記憶システム３０の製造時に書き込まれ、以後、上書きおよび消去をすることができないＲＯＭ（Read  Only  Memory）であってよい。また、特徴情報記憶部６２は、制御装置６０の外部の装置からは特徴情報を読み出せないように構成または設定されていてもよい。
【００２６】
設定部６４は、複数の記憶装置５０のそれぞれについて、記憶領域を分割した複数のチャンク（第１記憶領域）を設定する。さらに、設定部６４は、複数の記憶装置５０の全体について、複数の記憶装置５０の全体の記憶領域を分割した複数のストライプ（第２記憶領域）を設定する。
【００２７】
より具体的には、設定部６４は、複数の記憶装置５０の少なくとも１つの記憶装置５０についてのチャンクが、１または複数のブロックの全体を含むように、それぞれのチャンクを設定する。また、設定部６４は、２以上のチャンクを含むように、それぞれのストライプを設定する。この場合において、設定部６４は、複数の記憶装置５０のうち異なる２以上の記憶装置５０から選択された２以上のチャンクを、それぞれのストライプに含める。なお、チャンクおよびストライプについては、図５以降を参照してさらに説明する。
【００２８】
設定部６４は、例えば、特徴情報記憶部６２に記憶されている特徴情報を取得する。そして、設定部６４は、取得した特徴情報に基づき、チャンクを設定する。さらに、設定部６４は、設定したチャンクに基づき、ストライプを設定する。
【００２９】
なお、設定部６４は、例えば、記憶システム３０の初期化時において、チャンクおよびストライプを設定してよい。また、設定部６４は、記憶システム３０の動作後において、定期的にチャンクおよびストライプを設定してもよい。
【００３０】
設定記憶部６６は、設定部６４が設定したチャンクおよびストライプに関する情報を記憶する。例えば、設定記憶部６６は、複数の記憶装置５０のそれぞれについて設定されたそれぞれのチャンクの位置およびサイズを記憶する。また、設定記憶部６６は、複数の記憶装置５０の全体の記憶領域について設定されたそれぞれのストライプが、何れかのチャンクを含んでいるかを示す情報を記憶する。
【００３１】
書込読出部６８は、ホストコンピュータ２０からの指示に応じて、ホストコンピュータ２０から受信したデータを複数の記憶装置５０に分散して書き込む。また、書込読出部６８は、ホストコンピュータ２０からの指示に応じて、複数の記憶装置５０に書き込まれているデータを読み出して、ホストコンピュータ２０に送信する。
【００３２】
また、書込読出部６８は、設定記憶部６６に記憶されたチャンクおよびストライプに基づき、チャンクおよびストライプの単位で複数の記憶装置５０に記憶されたデータを管理する。例えば、書込読出部６８は、複数の記憶装置５０に記憶されたデータをストライプの単位で無効化する。
【００３３】
第２通信部７０は、複数の記憶装置５０のそれぞれと書込読出部６８との間のデータの送受信を制御する。
【００３４】
なお、複数の記憶装置５０のそれぞれは、それぞれのブロックの形成領域を示す特徴情報を出力しない構成であってよい。このような場合であっても、記憶システム３０の製造者は、記憶装置５０のブロックに関する情報を知っていれば、特徴情報記憶部６２に特徴情報を記憶させることができる。
【００３５】
また、複数の記憶装置５０のそれぞれは、制御装置６０からの要求に応じて、それぞれのブロックの形成領域を示す特徴情報を出力することができてもよい。設定部６４は、例えば、複数の記憶装置５０のそれぞれから、特徴情報を取得する。そして、設定部６４は、取得した特徴情報に基づき、チャンクおよびストライプを設定してもよい。また、制御装置６０は、記憶装置５０が特徴情報を出力する場合には、特徴情報記憶部６２を有さない構成であってもよい。
【００３６】
図５は、ブロック、チャンクおよびストライプの関係の一例を示す図である。設定部６４は、特徴情報を参照して、チャンクおよびストライプを設定する。
【００３７】
設定部６４は、複数の記憶装置５０の少なくとも１つの記憶装置５０についてのチャンクが、１または複数のブロックの全体を含むように、それぞれのチャンクを設定する。
【００３８】
例えば、図５に示す例では、複数の記憶装置５０のそれぞれに含まれる全てのブロックが、同一サイズであり、分割されずに記憶領域に形成されている。このような場合、設定部６４は、全てのチャンクを、ブロックのＮ倍（Ｎは１以上の整数）のサイズに設定してよい。例えば、設定部６４は、チャンクを、ブロックと同一サイズに設定してよい。そして、設定部６４は、それぞれのチャンクの開始位置を、ブロックの先頭位置に一致させる。これにより、設定部６４は、全ての記憶装置５０についてのチャンクがＮ個のブロックの全体を含むように、それぞれのチャンクを設定することができる。
【００３９】
続いて、設定部６４は、２以上のチャンクを含むように、それぞれのストライプを設定する。この場合において、設定部６４は、複数の記憶装置５０のうち異なる２以上の記憶装置５０から選択された２以上のチャンクを、それぞれのストライプに含める。すなわち、設定部６４は、異なる２以上の記憶装置５０から選択された２以上のチャンクを含むように、それぞれのストライプを設定する。
【００４０】
例えば、図５に示す例では、全てのチャンクが同一サイズであり、複数の記憶装置５０のそれぞれが同一の記憶容量を有する。従って、複数の記憶装置５０のそれぞれは、同一の個数のチャンクを含む。このような場合、設定部６４は、複数の記憶装置５０のそれぞれから１つずつ選択したチャンクを含む複数のストライプを設定する。
【００４１】
設定部６４は、以上のようにチャンクおよびストライプを設定することにより、それぞれのブロックが１つのストライプのみに含まれるようにすることができる。すなわち、設定部６４は、１つのブロックが複数のストライプに含まれないようにすることができる。
【００４２】
これにより、設定部６４は、ストライプの単位でデータを無効化した場合に、ブロックの全体のデータを一括して無効化させることができる。すなわち、設定部６４は、一部のデータが無効化されているが、他のデータが有効化されているようなブロックを無くすことができる。従って、記憶システム３０では、ガベージコレクションの発生頻度を減らして、アクセス速度の低下を抑制することができる。
【００４３】
図６は、異なる２以上の記憶装置５０のチャンクを含む３つのストライプの一例を示す図である。
【００４４】
例えば、図６には、設定部６４により設定された、第１のストライプと、第２のストライプと、第３のストライプとが示されている。第１のストライプは、第１の組み合わせの２以上の記憶装置５０から選択した２以上のチャンクを含む。より具体的には、第１のストライプは、第１の記憶装置５０−１と、第２の記憶装置５０−２と、第３の記憶装置５０−３とから選択した３つのチャンクを含む。
【００４５】
また、第２のストライプは、第１の組み合わせとは異なる第２の組み合わせの２以上の記憶装置５０から選択した２以上のチャンクを含む。より具体的には、第２のストライプは、第３の記憶装置５０−３と、第４の記憶装置５０−４と、第５の記憶装置５０−６とから選択した３つのチャンクを含む。
【００４６】
このように設定部６４は、複数の記憶装置５０のうち異なる組み合わせの２以上の記憶装置５０から選択した２以上のチャンクを含む複数のストライプを設定してもよい。これにより、設定部６４は、自由度の高い組み合わせのストライプを設定することができる。
【００４７】
また、例えば、第３のストライプは、第１の記憶装置５０−１に含まれる２つのチャンクと、第２の記憶装置５０−２に含まれる１つのチャンクとを含む。このように設定部６４は、それぞれの記憶装置５０から異なる数のチャンクを選択して、ストライプに含めてもよい。これにより、設定部６４は、自由度の高い組み合わせのストライプを設定することができる。
【００４８】
図７は、記憶装置５０毎にブロックのサイズが異なる場合の、チャンクおよびストライプの関係の一例を示す図である。
【００４９】
例えば、複数の記憶装置５０のうちの第１の記憶装置５０−１に含まれるブロックのサイズと、第２の記憶装置５０−２に含まれるブロックのサイズとが異なる場合がある。このような場合、設定部６４は、第１の記憶装置５０−１のチャンクに含まれるブロックの数と、第２の記憶装置５０−２のチャンクに含まれるブロックの数とを変えてよい。
【００５０】
例えば、図７の例では、第１の記憶装置５０−１のチャンクに含まれるブロックの数は、４個である。また、第２の記憶装置５０−２のチャンクに含まれるブロックの数は、１個である。第３の記憶装置５０−３および第４の記憶装置５０−４のチャンクに含まれるブロックの数は、２個である。第５の記憶装置５０−５のチャンクに含まれるブロックの数は、４個である。このように設定部６４は、記憶装置５０毎に異なる数のブロックをチャンクに含めてよい。
【００５１】
また、設定部６４は、複数の記憶装置５０のそれぞれに含まれるブロックのサイズの公倍数（例えば、最小公倍数）を、チャンクのサイズに設定してもよい。これにより、設定部６４は、全てのチャンクのサイズを同一とするように、それぞれのチャンクを設定することができる。
【００５２】
また、設定部６４は、記憶装置５０毎にチャンクのサイズを変更してもよい。これにより、設定部６４は、チャンクの設定の自由度を大きくすることができる。
【００５３】
図８は、ブロックの一部分を含むチャンクの一例を示す図である。
【００５４】
設定部６４は、ブロックの一部分を含み、他の一部分を含まないように、何れか１以上の記憶装置５０のチャンクを設定してもよい。すなわち、設定部６４は、１つのブロックが２以上のチャンクに含まれるように、何れか１以上の記憶装置５０についてのチャンクを設定してもよい。例えば、図８の例では、第１の記憶装置５０−１および第５の記憶装置５０−５について設定されたチャンクは、ブロックの一部分を含み、そのブロックの他部分を含んでいない。例えば、設定部６４は、少なくとも１つの記憶装置５０のチャンクをブロックのサイズの自然数倍に設定し、他の記憶装置５０のチャンクをブロックの一部分を含み他の一部分を含まないように設定してもよい。
【００５５】
何れか１以上の記憶装置５０のチャンクが、ブロックの一部分を含み、そのブロックの他部分を含まないように設定されていても、他の記憶装置５０のチャンクは、ブロックの全体を含むように設定されている。従って、記憶システム３０は、ブロックの全体が含まれるように設定されているチャンクを含む記憶装置５０については、ガベージコレクションの発生頻度を減らして、アクセス速度の低下を抑制することができる。
【００５６】
図９は、記憶装置５０に欠陥部分を含む場合のブロックおよびチャンクの関係の一例を示す図である。
【００５７】
記憶装置５０は、データを書き込むことができない欠陥部分を含む場合がある。このような場合、設定部６４は、チャンクおよびストライプの設定に先だって、複数の記憶装置５０のそれぞれにおける欠陥部分を取得する。そして、設定部６４は、ブロックにおける欠陥部分を除いた領域の全体を含むように、それぞれのチャンクを設定する。
【００５８】
例えば、図９の例では、設定部６４は、第１の記憶装置５０−１の一部のチャンクが、ブロックにおける欠陥部分を除いた領域の全体を含むように設定されている。設定部６４は、このようにチャンクを設定することにより、欠陥部分に対するデータの書き込みおよび読み出しを禁止させることができる。
【００５９】
なお、欠陥部分がブロックの途中に存在する場合には、設定部６４は、複数の領域に分割されたチャンクを設定してもよい。例えば、図９の例では、設定部６４は、第１の記憶装置５０−１の一部のチャンクが、複数の領域に分割されている。
【００６０】
また、設定部６４は、例えば記憶システム３０の初期化時等において、工場出荷時等において発見された欠陥部分を複数の記憶装置５０のそれぞれから取得してもよい。また、設定部６４は、定期的または所定のタイミングにおいて、記憶装置５０から欠陥部分を取得してもよい。この場合、設定部６４は、新たに追加された欠陥部分を除くように、チャンクを再設定する。
【００６１】
図１０は、制御装置６０が複数の制御部８２を有する場合の記憶システム３０の構成を示す図である。
【００６２】
制御装置６０は、複数の制御部８２と、上位制御部８４とを有してもよい。複数の制御部８２のそれぞれは、複数の記憶装置５０のうちの互いに異なるグループに対する、データの書き込みおよびデータの読み出しを制御する。上位制御部８４は、複数の制御部８２のそれぞれとやり取りをする。また、上位制御部８４は、ホストコンピュータ２０とデータのやり取りをし、ホストコンピュータ２０からのコマンドを何れかの制御部８２へと割り振る。
【００６３】
それぞれの制御部８２は、図３に示した制御装置６０の機能構成を有する。すなわち、それぞれの制御部８２は、特徴情報記憶部６２と、設定部６４と、設定記憶部６６と、書込読出部６８と、第２通信部７０とを有する。それぞれの制御部８２の書込読出部６８は、対応するグループに属する２以上の記憶装置５０に記憶されたデータを、設定されたストライプの単位で管理する。
【００６４】
また、それぞれの制御部８２の設定部６４は、対応するグループに属する記憶装置５０について、独自のサイズのチャンクを設定する。例えば、それぞれの制御部８２の設定部６４は、他の制御部８２とは異なるサイズのチャンクを、対応するグループに属する記憶装置５０について設定してもよい。
【００６５】
例えば、図１０の例では、第１の制御部８２−１は、第１グループに属する複数の記憶装置５０に対して、データの書き込みおよびデータの読み出しを制御する。第２の制御部８２−２は、第１グループとは異なる第２グループに属する複数の記憶装置５０に対して、データの書き込みおよびデータの読み出しを制御する。そして、第１の制御部８２−１の設定部６４と、第２の制御部８２−２の設定部６４とは、異なるサイズのチャンクを設定している。
【００６６】
このように、記憶システム３０は、複数の記憶装置５０をグループ毎に管理することができる。これにより、記憶システム３０によれば、ストライプの設定の自由度を大きくすることができる。
【００６７】
図１１は、ストライプと書込ユニットとの関係の一例を示す図である。設定部６４は、それぞれのストライプについて、そのストライプを分割した複数の書込ユニットを設定する。書込読出部６８は、設定した書込ユニットにデータを書き込む。具体的には、書込読出部６８は、書込の対象データと、対象データのパリティとの組を、書込ユニットに書き込む。
【００６８】
ここで、それぞれの書込ユニットは、対応するストライプに含まれる複数のチャンクのそれぞれの一部を含む。例えば、書込ユニットは、対応するストライプに含まれる複数のチャンクのそれぞれを所定個の小領域に分割し、複数のチャンクのそれぞれから選択された小領域を含む。
【００６９】
これにより、書込読出部６８は、複数の記憶装置５０に分散してデータを書き込むことができる。さらに、書込読出部６８は、何れかの記憶装置５０が故障した場合にも、パリティを用いて書き込んだデータを復元することができる。
【００７０】
図１２は、属性情報テーブルの一例を示す図である。特徴情報記憶部６２は、例えば、特徴情報に代えて、図１２に示すような属性情報テーブルを記憶してもよい。
【００７１】
属性情報テーブルは、複数の記憶装置５０のそれぞれの属性情報と、対応する記憶装置５０のブロックの形成領域を示す特徴情報とを対応付けて格納する。属性情報は、例えば、記憶装置５０のアーキテクチャを特定するための識別番号、および、記憶装置５０のファームウェアを特定するためのバージョン番号等であってよい。例えば、属性情報テーブルは、記憶装置５０のアーキテクチャおよびファームウェア毎に、特徴情報を格納する。属性情報は、アーキテクチャおよびファームウェアを特定することができれば、他の情報であってもよい。
【００７２】
特徴情報記憶部６２が属性情報テーブルを記憶している場合、設定部６４は、例えば初期化時において、複数の記憶装置５０のそれぞれから属性情報を取得する。続いて、設定部６４は、取得した属性情報に対応する特徴情報を、特徴情報記憶部６２に記憶された属性情報テーブルから読み出す。そして、設定部６４は、読み出した特徴情報に基づき、チャンクおよびストライプを設定する。これにより、設定部６４は、記憶装置５０が特徴情報を出力しない場合であっても、チャンクおよびストライプを設定することができる。
【００７３】
また、属性情報テーブルは、外部の装置に記憶されていてもよい。例えば、属性情報テーブルは、ネットワーク上のサーバ等に記憶されていてもよい。この場合、設定部６４は、例えば初期化時において、複数の記憶装置５０のそれぞれから属性情報を取得し、取得した属性情報に対応する特徴情報を、外部の装置に記憶された属性情報テーブルから取得する。これにより、記憶システム３０は、属性情報テーブルを予め記憶していなくても、特徴情報を外部から取得することができる。
【００７４】
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７５】
１０  コンピュータシステム
２０  ホストコンピュータ
３０  記憶システム
５０  記憶装置
５２  第１通信部
５４  データ記憶部
５６  管理部
６０  制御装置
６２  特徴情報記憶部
６４  設定部
６６  設定記憶部
６８  書込読出部
７０  第２通信部
８２  制御部
８４  上位制御部
【図１】
2018081627.tif 000003
【図２】
2018081627.tif 000004
【図３】
2018081627.tif 000005
【図４】
2018081627.tif 000006
【図５】
2018081627.tif 000007
【図６】
2018081627.tif 000008
【図７】
2018081627.tif 000009
【図８】
2018081627.tif 000010
【図９】
2018081627.tif 000011
【図１０】
2018081627.tif 000012
【図１１】
2018081627.tif 000013
【図１２】
2018081627.tif 000014