(57)【要約】【課題】書き込み回数に制限のある不揮発性記憶媒体への書き込み回数を減らすこと。【解決手段】論物メタ記憶部２４ａが、データの論理アドレスと、データを記憶するデータブロック番号及びデータブロック内でのデータの位置を示すインデックスと、を対応付ける論物メタを記憶する。また、ＤＢＭ記憶部２４ｂが、データブロック番号とストレージ３でのデータブロックの記憶位置を示す物理番号とを対応付けるデータブロックマップを記憶する。また、データブロックは、記憶するデータ毎にデータブロック内での位置を示すオフセットとデータの長さを示すデータ長とを含むデータユニットヘッダをインデックスで指定される位置に記憶するヘッダ領域と、データを記憶するペイロード領域を有する。【選択図】図１１
2019133601.tif 000002
【特許請求の範囲】
【請求項１】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御装置において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内での前記データの追記書き順番を示すインデックスと、を対応付ける論物メタ情報を記憶する論物メタ情報記憶部と、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報を記憶するマップ情報記憶部と、
前記データを書き込む制御を行う制御部と、
を備え、
前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有し、
前記制御部は、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う、
ことを特徴とするストレージ制御装置。
【請求項２】
前記制御部は、
前記データをバッファ上の対応するデータブロックに書き込み、
書き込みの都度、前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域において使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きを実行する
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記書き込む制御は、
前記データユニットヘッダに、前記データの誤りを検出するコードを書き込む制御を含むことを特徴とする請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記書き込む制御は、
前記ヘッダ領域に、前記データブロックに記憶するデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダを書き込む制御をさらに含むことを特徴とする請求項１、２又は３に記載のストレージ制御装置。
【請求項５】
前記物理識別子は、
複数の記憶媒体をグループ化したドライブグループを識別するＤＧ識別子と、
前記ストレージに前記データブロックをまとめ書きする単位であるまとめ書き単位領域を識別するＲＵ識別子と、
前記まとめ書き単位領域内で前記データブロックを記憶するスロットを識別するスロット識別子と
を有することを特徴とする請求項１〜４のいずれか１つに記載のストレージ制御装置。
【請求項６】
前記制御部は、データの重複排除及び圧縮の制御を行うものであり、
データの重複がある場合は、前記論物メタ情報におけるデータブロック識別子及びインデックスを参照先のデータブロック識別子及びインデックスと同じに設定し、
リファレンス情報記憶部に前記データの重複数を示すリファレンスカウントと前記データを対応付けるリファレンス情報を記憶させ、
データの重複がない場合は、データの圧縮を行う
ことを特徴とする請求項１〜５のいずれか１つに記載のストレージ制御装置。
【請求項７】
前記記憶媒体は、書き込み回数に制限を有する半導体メモリであることを特徴とする請求項１〜６のいずれか１つに記載のストレージ制御装置。
【請求項８】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御方法において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内での前記データの追記書き順番を示すインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有するものであり、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行うことを特徴とするストレージ制御方法。
【請求項９】
書き込み回数に制限を有する記憶媒体を用いるストレージ装置を制御するストレージ制御装置が備えるコンピュータで実行されるプログラムにおいて、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内での前記データの追記書き順番を示すインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有するものであり、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラムに関する。
【背景技術】
【０００２】
昨今、ストレージ装置の記憶媒体は、ＨＤＤ（Hard  Disk  Drive）からよりアクセススピードの速いＳＳＤ（Solid  State  Drive）等のフラッシュメモリに移行している。ＳＳＤでは、メモリセルへの上書きを直接行うことはできず、例えば１ＭＢ（メガバイト）の大きさのブロックの単位でデータの消去が行われた後にデータの書き込みが行われる。
【０００３】
このため、ブロック内の一部のデータを更新する場合には、ブロック内の他のデータを退避し、ブロックを消去した後に、退避したデータと更新データを書き込むことが行われるので、ブロックの大きさに較べて小さいデータを更新する処理が遅い。また、ＳＳＤには書き込み回数の上限がある。このため、ＳＳＤでは、ブロックの大きさに較べて小さいデータの更新をできるだけ避けることが望ましい。そこで、ブロック内の一部のデータを更新する場合に、ブロック内の他のデータと更新データを新たなブロックに書き込むことが行われる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−２１２４６号公報
【特許文献２】国際公開第２０１６／１８５５７３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＳＳＤを用いるストレージ装置では、ブロック内の一部のデータを更新する場合にブロック内の他のデータと更新データを新たなブロックに書き込んで書き込み回数を減らすだけでなく、より書き込み回数を減らすことができるデータ構造が求められている。
【０００６】
本発明は、１つの側面では、書き込み回数を減らすことができるデータ構造を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、ストレージ制御装置は、書き込み回数に制限を有する記憶媒体を用いるストレージを制御する。前記ストレージ装置は、論物メタ情報記憶部とマップ情報記憶部と制御部とを有する。前記論物メタ情報記憶部は、論理アドレスとデータブロック識別子及びインデックスとを対応付ける。前記論理アドレスは、前記ストレージを使用する情報処理装置からのデータの識別に用いられる。前記データブロック識別子は、前記データをストレージ上で配置するためのデータブロックを識別する。前記インデックスは、前記データブロック内での前記データの追記書き順番を示す。前記マップ情報記憶部は、前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付ける。前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有する。前記制御部は、前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込む制御を行う。前記制御部は、前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う。
【発明の効果】
【０００８】
１つの側面では、本発明は、書き込み回数を減らすことができる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施例に係るストレージ装置の記憶構成を示す図である。
【図２】図２は、実施例に係るストレージ制御装置が用いるメタデータを説明するための図である。
【図３】図３は、データブロックを説明するための図である。
【図４】図４は、データブロックマップを説明するための図である。
【図５】図５は、物理領域を説明するための図である。
【図６】図６は、ＲＡＩＤユニットの追記書きを説明するための図である。
【図７】図７は、ＲＡＩＤユニットのまとめ書きを説明するための図である。
【図８Ａ】図８Ａは、論物メタのフォーマットを示す図である。
【図８Ｂ】図８Ｂは、データユニットヘッダのフォーマットを示す図である。
【図８Ｃ】図８Ｃは、データブロックヘッダのフォーマットを示す図である。
【図９】図９は、論物メタとデータユニットヘッダとリファレンス情報との関係を示す図である。
【図１０】図１０は、容量効率化を説明するための図である。
【図１１】図１１は、実施例に係る情報処理システムの構成を示す図である。
【図１２】図１２は、重複のないデータの書き込み処理のシーケンスを示す図である。
【図１３】図１３は、追記位置を決定する処理のフローを示すフローチャートである。
【図１４】図１４は、データユニットヘッダ及びデータブロックヘッダを更新する処理のフローを示すフローチャートである。
【図１５】図１５は、重複のあるデータの書き込み処理のシーケンスを示す図である。
【図１６】図１６は、読み出し処理のシーケンスを示す図である。
【図１７】図１７は、実施例に係るストレージ制御プログラムを実行するストレージ制御装置のハードウェア構成を示す図である。
【発明を実施するための形態】
【００１０】
以下に、本願の開示するストレージ制御装置、ストレージ制御方法及びストレージ制御プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１１】
まず、実施例に係るストレージ装置の記憶構成について説明する。図１は、実施例に係るストレージ装置の記憶構成を示す図である。図１に示すように、実施例に係るストレージ装置は、複数のＳＳＤ３ｄを使用してＲＡＩＤ（Redundant  Arrays  of  Inexpensive  Disks）６ベースのプール３ａを管理する。また、実施例に係るストレージ装置は、複数のプール３ａを有する。
【００１２】
プール３ａには、仮想化プールと階層化プールがある。仮想化プールは１つのティア３ｂを有し、階層化プールは２つ以上のティア３ｂを有する。ティア３ｂは、１つ以上のドライブグループ３ｃを有する。ドライブグループ３ｃは、ＳＳＤ３ｄのグループであり、６〜２４台のＳＳＤ３ｄを有する。例えば、１つのストライプを記憶する６台のＳＳＤ３ｄのうち、３台はユーザデータ（以下単に「データ」という）の記憶用に用いられ、２台はパリティ記憶用に用いられ、１台はホットスペア用に用いられる。なお、ドライブグループ３ｃは、２５台以上のＳＳＤ３ｄを有してよい。
【００１３】
次に、実施例に係るストレージ制御装置が用いるメタデータについて説明する。ここで、メタデータとは、ストレージ装置が記憶するデータを管理するためにストレージ制御装置が用いるデータである。
【００１４】
図２は、実施例に係るストレージ制御装置が用いるメタデータを説明するための図である。図２に示すように、メタデータには、論物メタと、データブロックマップと、リファレンス情報とが含まれる。
【００１５】
論物メタは、論理番号をデータブロック番号とインデックスに対応付ける情報である。論理番号は、ストレージ装置を使用する情報処理装置がデータの識別に用いる論理アドレスであり、ＬＵＮ（Logical  Unit  Number：論理ユニット番号）とＬＢＡ（Logical  Block  Address：論理ブロックアドレス）の組合せである。なお、論理ブロックの大きさは８ＫＢ（キロバイト）であり、重複排除を行う単位サイズになっている。情報処理装置(ホスト)からストレージ装置へのコマンドによる処理が５１２バイト単位であるため、本実施例では重複排除の効率化のため５１２バイトの整数倍分の８ＫＢ(８１９２バイト)にまとめたものを、ここでは一論理ブロックとしている。データブロック番号は、論理番号で識別される８ＫＢのデータを記憶するデータブロックを識別する番号である。インデックスは、データブロック内でのデータの番号である。
【００１６】
図３は、データブロックを説明するための図である。図３では、データブロック番号（ＤＢ＃）は「１０１」である。図３に示すように、データブロックの大きさは３８４ＫＢである。データブロックは、８ＫＢのヘッダ領域と３７６ＫＢのペイロード領域を有する。ペイロード領域は、圧縮されたデータを記憶する領域であるデータユニットを有する。データユニットはペイロード領域に追記される。
【００１７】
ヘッダ領域には、１９２バイトのデータブロックヘッダと最大２００個の４０バイトのデータユニットヘッダが含まれる。データブロックヘッダは、データブロックに関する情報を記憶する領域である。データブロックヘッダには、データユニットが追記書き可能か否か、追記書きされているデータユニットの数、データユニットが次に追記書きされる位置に関する情報等が含まれる。
【００１８】
データユニットヘッダは、ペイロード領域に含まれるデータユニットに対応する。データユニットヘッダは、対応するデータユニットが記憶するデータのインデックスに対応する位置にある。データユニットヘッダには、オフセットと長さとＣＲＣ（Cyclic  Redundancy  Check）とが含まれる。オフセットは、対応するデータユニットのデータブロック内での書き込み開始位置（先頭位置）を示す。長さは、対応するデータユニットの長さを示す。ＣＲＣは、対応するデータユニットの圧縮前の誤り検出コードである。
【００１９】
図２の論物メタにおいて、例えば、論理番号が「１−１」であるデータは、データブロック番号が「Ｂ１」であるデータブロックの１番目に記憶される。ここで、「１−１」は、ＬＵＮが１でありＬＢＡが１であることを示す。また、同じデータは、重複排除により、データブロック番号とインデックスが同じになる。図２では、「１−２」、「２−１」及び「２−４」で識別されるデータが同じであるため、「１−２」、「２−１」及び「２−４」は、データブロック番号「Ｂ２」とインデックス「２」に対応づけられる。
【００２０】
データブロックマップは、データブロック番号と物理番号とを対応付けるテーブルである。物理番号は、ドライブグループ（ＤＧ）３ｃを識別するＤＧ番号（ＤＧ＃）とＲＡＩＤユニット（ＲＵ）を識別するＲＵ番号（ＲＵ＃）とスロットを識別するスロット番号（スロット＃）との組合せである。ＲＡＩＤユニット（まとめ書き単位領域）は、データがストレージ装置に書き込まれる場合にメインメモリ上でバッファリングされるまとめ書き単位領域であり、複数のデータブロックが配置可能である。データは、ＲＡＩＤユニット単位でまとめてストレージ装置に追記書きされる。ＲＡＩＤユニットの大きさは例えば２４ＭＢ（メガバイト）である。ＲＡＩＤユニット内において各データブロックは、スロットを用いて管理される。
【００２１】
図４は、データブロックマップを説明するための図である。図４は、ＤＧ番号が「１」（ＤＧ＃１）でＲＵ番号が「１」（ＲＵ＃１）であるＲＡＩＤユニットに関するデータブロックマップを示す。図４に示すように、ＲＡＩＤユニットの大きさは２４ＭＢであり、データブロックの大きさは３８４ＫＢであるので、スロットの数は６４個である。
【００２２】
図４は、データブロックのアドレスの昇順に各スロットに割り当てられる例を示し、データブロック＃１０１がスロット＃１に記憶され、データブロック＃１０２がスロット＃２に記憶され、・・・、データブロック＃１６４がスロット＃６４に記憶される。
【００２３】
図２のデータブロックマップにおいて、例えば、データブロック番号「Ｂ１」が物理番号「１−１−１」に対応付けられる。データブロック番号「Ｂ１」のデータは、圧縮されてプール３ａのドライブグループ＃１のＲＵ番号が「１」のＲＡＩＤユニットのスロット番号が「１」のスロットに記憶される。なお、図２のプール３ａにおいてティア３ｂ及びそのスロットは省略されている。
【００２４】
リファレンス情報は、インデックスと物理番号とリファレンスカウンタを対応付ける情報である。リファレンスカウンタは、インデックスと物理番号で識別されるデータの重複数である。なお、図２において、物理番号にインデックスを含めてもよい。
【００２５】
図５は、物理領域を説明するための図である。図５に示すように、論物メタは、メインメモリとストレージの両方に記憶される。メインメモリには、一部の論物メタだけが記憶される。論物メタは、メインメモリでは各ＬＵＮについて１ページ（４ＫＢ）だけ記憶される。ＬＵＮとＬＢＡの組合せに対応するページがメインメモリ上にない場合には、ＬＵＮのページがページアウトされ、ＬＵＮとＬＢＡの組合せに対応するページがストレージからメインメモリに読み込まれる。
【００２６】
ストレージでは、４ＴＢ（テラバイト）のボリューム毎に３２ＧＢの論物メタ域（論物メタが記憶される領域）３ｅが記憶される。論物メタ域３ｅは、ＬＵＮ作成時に動的領域から割り当てられ固定領域化される。ここで、動的領域とは、プール３ａから動的に割り当てられる領域である。論物メタ域３ｅはガベージコレクション（ＧＣ：Garbage  Collection）の対象外である。ＲＡＩＤユニットは、ストレージにデータを追記書きする時に動的領域から割り当てられる。実際には、ＲＡＩＤユニットはストレージに書き込む前に一時的に記憶するライトバッファに追記書きする時に割り当てられる。ＲＡＩＤユニットが記憶されるデータユニット域３ｆは、ＧＣの対象である。
【００２７】
図６は、ＲＡＩＤユニットの追記書きを説明するための図である。図６に示すように、ＬＵＮ＃１において８ＫＢのライトＩ／Ｏ（ストレージへのデータの書き込み命令）を受け付けると、ライトバッファ上のデータブロックのヘッダ領域にデータユニットヘッダが書き込まれ、データは圧縮されてペイロード領域に書き込まれ、データブロックヘッダは更新される。その後、ＬＵＮ＃２において８ＫＢのライトＩ／Ｏを受付すると、図６の例では同じデータブロックのヘッダ領域にデータユニットヘッダが追記され、データは圧縮されてペイロード領域に追記され、データブロックヘッダは更新される。
【００２８】
そして、ライトバッファ内に確保されたデータブロックの容量分の記憶領域において、データブロック内のヘッダ領域又はペイロード領域が一杯になる(使用可能な空き領域がなくなる)と、以降そのデータブロックには追記書きしない。そして、ライトバッファ内のＲＡＩＤユニットの全てのデータブロックが一杯になる(使用可能な空き領域がなくなる)と、ライトバッファの内容がストレージに書き込まれる。その後、当該ＲＡＩＤユニットに割り当てられたライトバッファの記憶領域は解放される。図６では、ＤＧ＃１、ＲＵ＃１５のＲＡＩＤユニットが動的領域から割り当てられている。
【００２９】
また、ＬＵＮ＃１へのライトＩ／Ｏが論物メタのＬＵＮ＃１に対応する領域に反映され、ＬＵＮ＃２へのライトＩ／Ｏが論物メタのＬＵＮ＃２に対応する領域に反映される。また、ライトＩ／Ｏのデータに関するリファレンスカウントが更新され、ライトＩ／Ｏがリファレンス情報に反映される。
【００３０】
また、ＲＵ＃１５に関する情報であるＲＵ情報＃１５に含まれるＴＤＵＣ（Total  Data  Unit  Count）及びＧＤＵＣ（ＧＣ  Data  Unit  Count）が更新され、ライトＩ／Ｏがガベージメータに反映される。ここで、ガベージメータは、ＲＵ情報に含まれるＧＣ関連情報である。ＴＤＵＣは、ＲＵ内のデータユニットの総数であり、データユニットの書き込み時に更新される。ＧＤＵＣは、ＲＵ内の無効データユニットの数であり、リファレンスカウンタ更新時に更新される。
【００３１】
また、データブロックマップにおいて、ＤＢ＃１０１にＤＧ＃１、ＲＵ＃１５、スロット＃１が対応付けられ、ライトＩ／Ｏがデータブロックマップに反映される。
【００３２】
図７は、ＲＡＩＤユニットのまとめ書きを説明するための図である。図７に示すように、データブロックはライトバッファにバッファリングされ、ＲＡＩＤユニット単位でまとめてストレージに書き込まれる。例えば、データブロック＃１は、１つのストライプを記憶する６台のＳＳＤ３ｄに書き込まれる。図７において、Ｐ及びＱはパリティであり、Ｈはホットスペアである。データブロック＃１は、１２８バイト毎に、図７の「０」、「１」、・・・、「１４」、・・・の領域に書き込まれる。
【００３３】
図８Ａは、論物メタのフォーマットを示す図である。図８Ａに示すように、３２バイトの論物メタには、１バイトのＳｔａｔｕｓと、１バイトのＤａｔａ  Ｕｎｉｔ  Ｉｎｄｅｘと、２バイトのＣｈｅｃｋｓｕｍと、２バイトのＮｏｄｅ  Ｎｏ．と、６バイトのＢＩＤが含まれる。また、３２バイトの論物メタには、８バイトのＤａｔａ  Ｂｌｏｃｋ  Ｎｏ．が含まれる。
【００３４】
Ｓｔａｔｕｓは、論物メタの状態を示す。状態としては、有効と無効がある。有効とは、対応ＬＢＡに論物メタが割り当て済の状態であり、無効とは、対応ＬＢＡに論物メタが未割り当ての状態である。Ｄａｔａ  Ｕｎｉｔ  Ｉｎｄｅｘは、インデックスである。Ｃｈｅｃｋｓｕｍは、対応するデータの誤り符号検出値である。Ｎｏｄｅ  Ｎｏ．は、ストレージ装置（ノード）を識別する番号である。ＢＩＤは、ブロックＩＤ（位置情報）すなわちＬＢＡである。Ｄａｔａ  Ｂｌｏｃｋ  Ｎｏ．は、データブロック番号である。なお、Ｒｅｓｅｒｖｅｄは、将来の拡張用で全ビットが０であることを示す。
【００３５】
図８Ｂは、データユニットヘッダのフォーマットを示す図である。図８Ｂに示すように、４０バイトのデータユニットヘッダには、１バイトのＤａｔａ  Ｕｎｉｔ  Ｓｔａｔｕｓと、２バイトのＣｈｅｃｋｓｕｍと、２バイトのＯｆｆｓｅｔ  Ｂｌｏｃｋ  Ｃｏｕｎｔが含まれる。また、４０バイトのデータユニットヘッダには、２バイトのＣｏｍｐｒｅｓｓｉｏｎ  Ｂｙｔｅ  Ｓｉｚｅと、３２バイトのＣＲＣが含まれる。
【００３６】
Ｄａｔａ  Ｕｎｉｔ  Ｓｔａｔｕｓは、データユニットの追記が可能か否かを示す。データユニットヘッダに対応するデータユニットが存在しない場合には追記可能であり、データユニットヘッダに対応するデータユニットが存在する場合には追記不可能である。Ｃｈｅｃｋｓｕｍは、対応するデータユニットの誤り符号検出値である。
【００３７】
Ｏｆｆｓｅｔ  Ｂｌｏｃｋ  Ｃｏｕｎｔは、対応するデータユニットのペイロード領域の先頭からのオフセットである。Ｏｆｆｓｅｔ  Ｂｌｏｃｋ  Ｃｏｕｎｔは、ブロック数で表される。ただし、ここでのブロックは、ＳＳＤの消去単位のブロックではなく、５１２バイトのブロックである。以下では、ＳＳＤの消去単位のブロックと区別するため、５１２バイトのブロックを小ブロックと呼ぶ。Ｃｏｍｐｒｅｓｓｉｏｎ  Ｂｙｔｅ  Ｓｉｚｅは、対応するデータの圧縮後の大きさである。ＣＲＣは、対応するデータユニットの誤り検出コードである。
【００３８】
図８Ｃは、データブロックヘッダのフォーマットを示す図である。図８Ｃに示すように、１９２バイトのデータブロックヘッダには、１バイトのＤａｔａ  Ｂｌｏｃｋ  Ｆｕｌｌ  Ｆｌａｇと、１バイトのＷｒｉｔｅ  Ｄａｔａ  Ｕｎｉｔ  Ｃｏｕｎｔが含まれる。また、１９２バイトのデータブロックヘッダには、１バイトのＮｅｘｔ  Ｄａｔａ  Ｕｎｉｔ  Ｈｅａｄｅｒ  Ｉｎｄｅｘと、８バイトのＮｅｘｔ  Ｗｒｉｔｅ  Ｂｌｏｃｋ  Ｏｆｆｓｅｔと、８バイトのＤａｔａ  Ｂｌｏｃｋ  Ｎｏ．が含まれる。
【００３９】
Ｄａｔａ  Ｂｌｏｃｋ  Ｆｕｌｌ  Ｆｌａｇは、データユニットの追記書きが可能か否かを示すフラグである。データブロックの書き込み残容量が閾値以上で、データユニットの追記書きに十分な空き容量が存在する場合には、データユニットの追記書きが可能である。一方、データブロックの書き込み残容量が閾値未満で、データユニットの追記書きに十分な空き容量が存在しない場合には、データユニットの追記書きが不可能である。
【００４０】
Ｗｒｉｔｅ  Ｄａｔａ  Ｕｎｉｔ  Ｃｏｕｎｔは、データブロックに追記書きしてあるデータユニットの数である。Ｎｅｘｔ  Ｄａｔａ  Ｕｎｉｔ  Ｈｅａｄｅｒ  Ｉｎｄｅｘは、次に書き込むデータユニットヘッダのインデックスである。Ｎｅｘｔ  Ｗｒｉｔｅ  Ｂｌｏｃｋ  Ｏｆｆｓｅｔは、次に書き込むデータユニットのペイロード領域の先頭からのオフセット位置である。単位は小ブロックの数である。Ｄａｔａ  Ｂｌｏｃｋ  Ｎｏ．は、スロットに割り当てられたデータブロック番号である。
【００４１】
図９及び図１０は、実施例に係るメタデータ方式の特徴を説明するための図である。図９は、論物メタとデータユニットヘッダとリファレンス情報との関係を示す図である。図９に示すように、実施例に係るメタデータ方式では、論物メタ、データユニットヘッダ及びリファレンス情報が用いられる。論物メタのＤＢ＃とインデックスからデータユニットヘッダの格納場所が特定される。データユニットヘッダのオフセットと長さからデータブロック内でのデータユニットの位置が特定される。
【００４２】
論物メタに同一のデータが複数格納された場合、重複排除機能により、同一データは１つにまとめられ、重複数はリファレンスカウンタ（ＲＣ）としてカウントされる。図９では、ＤＧ＃１のＲＵ＃２に記憶されたＤＢ＃１０２のインデックス「１」及び「２」のデータが２箇所ずつから参照されている。この時、インデックス「１」及び「２」のリファレンスカウンタは「２」である。インデックス「１」及び「２」のデータは有効データである。インデックス「３」及び「４」のデータは、リファレンスカウンタが「０」であるので、無効データである。
【００４３】
図１０は、容量効率化を説明するための図である。図１０は、８ＫＢのデータを非圧縮で書き込む場合を示す。ＬＵＮ／ＬＢＡで指定されるデータのデータユニットへの書き込みは小ブロック単位で行われる。このため、図１０（ａ）は、ペイロード領域に非圧縮のデータとＣＲＣを詰め、データユニットに１６小ブロックを詰めた場合を示す。また、データユニットヘッダにはＣＲＣが含まれないため、データユニットヘッダの大きさは３２バイトである。データブロック全体の記憶容量は３８４ＫＢであり、ヘッダ領域は２ＫＢ、ペイロード領域は３８２ＫＢである。
【００４４】
この場合、非圧縮の場合のペイロード領域の使用容量は、ＬＵＮ／ＬＢＡで指定される５１２バイト×１６小ブロック＋ＣＲＣ３２バイト＝８２２４バイトである。しかしながら、ＳＳＤに対するコマンドは５１２バイトの１以上の整数倍で指定されるため、８２２４バイトを読み出すには５１２バイト×１７小ブロック=８７０４バイトととなり、１つのデータユニットのペイロード領域は最大８７０４バイトに設定される。つまり、８７０４−８２２４＝４８０バイトの記憶領域が使用されず無駄になる。非圧縮のデータユニットが多くなるほど、４８０バイトの整数倍の記憶領域が無駄になる。
【００４５】
一方、図１０（ｂ）に示すように、ＣＲＣをデータユニットヘッダに含めると、ペイロード領域には、５１２バイト×１６小ブロック＝８１９２バイトのデータを配置することになる。つまり、１つのデータユニットのペイロード領域は最大８１９２バイトに設定できる。したがって、前述の４８０バイトの無駄をなくすことができる。また、１７小ブロック目の無駄な書き込みを削減でき、書き込み回数の削減の効果に寄与できる。なお、データブロック全体の記憶容量の３８４ＫＢは固定であるため、ヘッダ領域は８ＫＢ、ペイロード領域は３７６ＫＢとなる。したがって、実施例に係るメタデータ方式は、非圧縮時であっても、ペイロード領域を最大限に活用することができる。また、非圧縮データおよび圧縮データを効率良く詰めることができる。
【００４６】
次に、実施例に係る情報処理システムの構成について説明する。図１１は、実施例に係る情報処理システムの構成を示す図である。図１１に示すように、実施例に係る情報処理システム１は、ストレージ装置１ａとサーバ１ｂとを有する。ストレージ装置１ａは、サーバ１ｂが使用するデータを記憶する装置である。サーバ１ｂは、情報処理などの業務を行う情報処理装置である。ストレージ装置１ａとサーバ１ｂとの間は、ＦＣ（Fibre  Channel）及びｉＳＣＳＩ（Internet  Small  Computer  System  Interface）で接続される。
【００４７】
ストレージ装置１ａは、ストレージ装置１ａを制御するストレージ制御装置２とデータを記憶するストレージ（記憶装置）３とを有する。ここで、ストレージ３は、複数台のＳＳＤ３ｄの集まりである。
【００４８】
なお、図１１では、ストレージ装置１ａは、ストレージ制御装置＃０及びストレージ制御装置＃１で表される２台のストレージ制御装置２を有するが、ストレージ装置１ａは、３台以上のストレージ制御装置２を有してよい。また、図１１では、情報処理システム１は、１台のサーバ１ｂを有するが、情報処理システム１は、２台以上のサーバ１ｂを有してよい。
【００４９】
ストレージ制御装置２は、ストレージ３を分担して管理し、１つ以上のプール３ａを担当する。ストレージ制御装置２は、上位接続部２１と、キャッシュ管理部２２と、重複管理部２３と、メタ管理部２４と、追記部２５と、ＩＯ部２６とを有する。
【００５０】
上位接続部２１は、ＦＣドライバ及びｉＳＣＳＩドライバとキャッシュ管理部２２との間の情報の受け渡しを行う。キャッシュ管理部２２は、キャッシュメモリ上のデータを管理する。重複管理部２３は、データ重複排除／復元の制御を行うことで、ストレージ装置１ａ内に格納されているユニークなデータを管理する。
【００５１】
メタ管理部２４は、論物メタ、データブロックマップ及びリファレンスカウントを管理する。また、メタ管理部２４は、論物メタ及びデータブロックマップを用いて、仮想ボリュームにおけるデータの識別に用いる論理アドレスとＳＳＤ３ｄにおけるデータが記憶された位置を示す物理アドレスの変換処理を行う。ここで、物理アドレスは、データブロック番号とインデックスの組である。
【００５２】
メタ管理部２４は、論物メタ記憶部２４ａと、ＤＢＭ記憶部２４ｂと、リファレンス記憶部２４ｃとを有する。論物メタ記憶部２４ａは、論物メタを記憶する。ＤＢＭ記憶部２４ｂは、データブロックマップを記憶する。リファレンス記憶部２４ｃは、リファレンス情報を記憶する。
【００５３】
追記部２５は、データを連続的なデータユニットで管理し、ＲＡＩＤユニットの単位でＳＳＤ３ｄに追記及びまとめ書きを行う。また、追記部２５は、データの圧縮解凍を行う。追記部２５は、メインメモリ上のバッファであるライトバッファにライトデータを溜め、ライトバッファにライトデータを書き込む都度ライトバッファの空き領域が一定の閾値以下になったか否かを判定する。そして、追記部２５は、ライトバッファの空き領域が一定の閾値以下になるとライトバッファをＳＳＤ３ｄに書き出す。追記部２５は、プール３ａの物理スペースを管理し、ＲＡＩＤユニットの配置を行う。ＩＯ部２６は、ＲＡＩＤユニットのストレージ３への書き込みを行う。
【００５４】
上位接続部２１がデータ重複排除／復元の制御を行い、追記部２５がデータの圧縮解凍を行うことで、ストレージ制御装置２は、書き込みデータを減らし、さらなる書き込み回数の削減を行うことができる。
【００５５】
次に、書き込み処理のシーケンスについて説明する。図１２は、重複のないデータの書き込み処理のシーケンスを示す図であり、図１５は、重複のあるデータの書き込み処理のシーケンスを示す図である。
【００５６】
重複のないデータの書き込み処理では、図１２に示すように、キャッシュ管理部２２は、重複管理部２３にデータのライトバックを依頼する（ｔ１）。すると、重複管理部２３は、データの重複判定を行って重複はないので（ｔ２）、新規のデータユニットのライトを追記部２５に依頼する（ｔ３）。
【００５７】
すると、追記部２５は、ライトバッファを獲得し（ｔ４）、ＲＵ＃がライトバッファに割り当てられていないときに、ＩＯ部２６にＲＵ＃の割り当てを依頼する（ｔ５）。そして、追記部２５は、ＩＯ部２６から割り当てられたＲＵ＃を受け取る（ｔ６）。なお、ＲＵ＃がライトバッファに割り当てられている場合には、ｔ５〜ｔ６の処理は省略される。
【００５８】
そして、追記部２５は、追記位置を決定し（ｔ７）、データを圧縮して追記する（ｔ８）。そして、追記部２５は、データユニットヘッダ及びデータブロックヘッダを更新し（ｔ９）、まとめ書き判定を行う（ｔ１０）。そして、追記部２５は、ライトバッファが一杯でまとめ書きが必要と判定した場合には、ＩＯ部２６へライトバッファのまとめ書きを依頼する。そして、追記部２５は、重複管理部２３に完了を応答する（ｔ１１）。
【００５９】
そして、重複管理部２３は、メタ管理部２４にリファレンスカウンタの更新を依頼し（ｔ１２）、メタ管理部２４は、リファレンスカウンタを更新する（ｔ１３）。具体的には、メタ管理部２４は、書き込んだデータのリファレンスカウンタをインクリメントする。また、データを上書きしている場合には、メタ管理部２４は、上書き前のデータのリファレンスカウンタをデクリメントする。
【００６０】
そして、メタ管理部２４は、更新完了を重複管理部２３に応答し（ｔ１４）、データ有効数の更新をＩＯ部２６に依頼する（ｔ１５）。ここで、データ有効数とは、ＴＤＬＣ及びＧＤＬＣである。ＩＯ部２６は、書き込んだデータのＴＤＬＣをインクリメントし、データが上書きされる場合には、上書き前のデータのＲＣが０になると上書き前のデータが格納されていたＲＵのＧＬＤＣをデクリメントする。そして、ＩＯ部２６は、データ有効数の更新完了をメタ管理部２４に応答する（ｔ１６）。
【００６１】
そして、重複管理部２３は、論物メタの更新をメタ管理部２４に依頼する（ｔ１７）。そして、メタ管理部２４は、論物メタを更新し（ｔ１８）、更新完了を重複管理部２３に応答する（ｔ１９）。そして、重複管理部２３は、ライトバック完了をキャッシュ管理部２２に応答する（ｔ２０）。キャッシュ管理部２２はライトバッファの解放を行う。
【００６２】
このように、追記部２５は、追記位置を決定し、データを圧縮してデータブロックに追記し、データユニットヘッダ及びデータブロックヘッダを更新することで、重複のないデータをストレージ３に書き込むことができる。なお、データの圧縮／非圧縮は切替可能であり、選択的に追記部２５に設定することができる。
【００６３】
図１３は、追記位置を決定する処理のフローを示すフローチャートである。なお、図１３に示す処理は、図１２のｔ７の処理に対応する。図１３に示すように、追記部２５は、ライトバッファの先頭のデータブロックから順番にデータブロックに追記書きが可能か否かを判定（ステップＳ１）する。追記部２５は、データブロックヘッダのＤａｔａ  Ｂｌｏｃｋ  Ｆｕｌｌ  Ｆｌａｇをチェックすることで、データブロックに追記書きが可能か否かを判定する。なお、ライトバッファに追記書きが可能でなくなると新たなライトバッファが用意されるので、追記書きが可能なデータブロックはライトバッファに必ずみつかる。
【００６４】
そして、追記書きが可能なデータブロックが見つかると、追記部２５は、データブロック番号は未割り当てであるか否かを判定し（ステップＳ２）、未割り当ての場合には、メタ管理部２４にデータブロック番号の割り当てを依頼する（ステップＳ３）。メタ管理部２４は、データブロック番号を割り当て、データブロックマップで物理番号とデータブロック番号を対応付ける。
【００６５】
そして、追記部２５は、Ｎｅｘｔ  Ｄａｔａ  Ｕｎｉｔ  Ｈｅａｄｅｒ  Ｉｎｄｅｘを用いてデータブロックヘッダのインデックスを特定し（ステップＳ４）、データブロック番号とデータユニットヘッダのインデックスを追記位置と決定する。
【００６６】
このように、追記部２５は、データブロックヘッダとデータユニットヘッダを用いてデータの追記位置を決定することができる。
【００６７】
図１４は、データユニットヘッダ及びデータブロックヘッダを更新する処理のフローを示すフローチャートである。なお、図１４に示す処理は、図１２のｔ９の処理に対応する。図１４に示すように、追記部２５は、書き込まれたデータに対応するデータユニットヘッダを更新する（ステップＳ１１）。具体的には、追記部２５は、Ｄａｔａ  Ｕｎｉｔ  Ｓｔａｔｕｓを追記不可能に更新する。
【００６８】
そして、追記部２５は、データが書き込まれたデータブロックのデータブロックヘッダを更新する（ステップＳ１２）。具体的には、追記部２５は、Ｗｒｉｔｅ  Ｄａｔａｕｎｉｔ  Ｃｏｕｎｔ、Ｎｅｘｔ  Ｄａｔａ  Ｕｎｉｔ  Ｈｅａｄｅｒ  Ｉｎｄｅｘ及びＮｅｘｔ  Ｗｒｉｔｅ  Ｂｌｏｃｋ  Ｏｆｆｓｅｔを更新する。
【００６９】
そして、追記部２５は、データブロックにまだ追記書き可能か否かを判定する（ステップＳ１３）。追記部２５は、Ｎｅｘｔ  Ｗｒｉｔｅ  Ｂｌｏｃｋ  Ｏｆｆｓｅｔが閾値以下か否かに基づいて追記書き可能か否かを判定する。ペイロード領域の大きさは３７６ＫＢであり、非圧縮時の場合追記書きのためには８ＫＢの空きが必要であるので、３７６ＫＢ−８ＫＢ＝３６８ＫＢ≒７３６小ブロック（７３６×５１２バイト）、Ｎｅｘｔ  Ｗｒｉｔｅ  Ｂｌｏｃｋ  Ｏｆｆｓｅｔ＞７３６のとき追記不可能となる。
【００７０】
そして、データブロックに追記書きが不可能な場合、追記部２５は、データブロックヘッダのＤａｔａ  Ｂｌｏｃｋ  Ｆｕｌｌ  Ｆｌａｇを追記書きが不可能を意味する値に更新する（ステップＳ１４）。
【００７１】
このように、追記部２５は、データを書き込んだ際にデータユニットヘッダ及びデータブロックヘッダを更新することで、次にデータを書き込む際にデータブロックヘッダとデータユニットヘッダを用いてデータの追記位置を決定することができる。
【００７２】
重複のあるデータの書き込み処理では、図１５に示すように、キャッシュ管理部２２は、重複管理部２３にデータのライトバックを依頼する（ｔ３１）。すると、重複管理部２３は、データの重複判定を行って重複があるので（ｔ３２）、データを記憶するデータブロックの番号とインデックスを特定し、メタ管理部２４にＤＢ→ＲＵ変換を依頼する（ｔ３３）。ここで、ＤＢ→ＲＵ変換とは、データブロック番号を物理番号に変換することである。
【００７３】
そして、メタ管理部２４は、ＤＢ→ＲＵ変換を行い（ｔ３４）、物理番号を重複管理部２３に応答する（ｔ３５）。そして、重複管理部２３は、物理番号及びインデックスに対応するリファレンスカウンタの更新をメタ管理部２４に依頼し（ｔ３６）、メタ管理部２４は、リファレンスカウンタを更新する（ｔ３７）。
【００７４】
そして、メタ管理部２４は、ＩＯ部２６にデータ有効数の更新を依頼する（ｔ３８）。そして、ＩＯ部２６は、データ有効数を更新し、データ有効数の更新完了をメタ管理部２４に応答する（ｔ３９）。そして、メタ管理部２４は、重複管理部２３にリファレンスカウンタの更新完了を応答する（ｔ４０）。
【００７５】
そして、重複管理部２３は、論物メタの更新をメタ管理部２４に依頼する（ｔ４１）。そして、メタ管理部２４は、論物メタを更新し（ｔ４２）、更新完了を重複管理部２３に応答する（ｔ４３）。そして、重複管理部２３は、ライトバック完了をキャッシュ管理部２２に応答する（ｔ４４）。
【００７６】
このように、重複管理部２３は、リファレンスカウンタの更新及び論物メタの更新をメタ管理部２４に依頼することで、重複のあるデータを書き込む処理を行うことができる。
【００７７】
次に、読み出し処理のシーケンスについて説明する。図１６は、読み出し処理のシーケンスを示す図である。図１６に示すように、キャッシュ管理部２２は、論理アドレスを用いてデータのステージングを重複管理部２３に依頼する（ｔ５１）。すると、重複管理部２３は、論理アドレスに対応する論物メタの獲得をメタ管理部２４に依頼する（ｔ５２）。
【００７８】
すると、メタ管理部２４は、論物メタのリードをＩＯ部２６に依頼する（ｔ５３）。なお、該当の論物メタがキャッシュ上にない場合には、キャッシュ上のＬＵＮ及びＬＢＡで特定されるページがページアウトされ、該当の論物メタに対応するページがページインされる。そして、ＩＯ部２６は、リードした論物メタをメタ管理部２４に応答し（ｔ５４）、メタ管理部２４は、獲得した論物メタを重複管理部２３に応答する（ｔ５５）。
【００７９】
そして、重複管理部２３は、獲得した論物メタに含まれるデータブロック番号について、メタ管理部２４にＤＢ→ＲＵ変換を依頼する（ｔ５６）。メタ管理部２４は、ＤＢ→ＲＵ変換を行い（ｔ５７）、物理番号を重複管理部２３に応答する（ｔ５８）。そして、重複管理部２３は、応答された物理番号と論物メタに含まれるインデックスを用いて追記部２５にデータユニットのリードを依頼する（ｔ５９）。
【００８０】
そして、追記部２５は、依頼されたデータユニットに対応するデータユニットヘッダのリードをＩＯ部２６に依頼し（ｔ６０）、ＩＯ部２６からデータユニットヘッダを受け取る（ｔ６１）。そして、追記部２５は、受け取ったデータユニットヘッダからデータユニットのオフセット位置を取得し（ｔ６２）、取得したオフセット位置のデータユニットのリードをＩＯ部２６に依頼する（ｔ６３）。
【００８１】
そして、追記部２５は、ＩＯ部２６からデータユニットを受け取り（ｔ６４）、圧縮データを伸張する（ｔ６５）。そして、追記部２５は、伸張したデータを重複管理部２３に応答し（ｔ６６）、重複管理部２３は、データを受け取ってキャッシュ管理部２２に応答する（ｔ６７）。
【００８２】
このように、重複管理部２３は、論理アドレスに対応する論物メタを取得し、取得した論物メタに含まれるデータブロック番号を物理番号に変換し、物理番号と取得した論物メタに含まれるインデックスとを指定して追記部２５にデータユニットのリードを依頼する。したがって、重複管理部２３は、キャッシュ管理部２２に依頼されたデータをストレージ３から読み出すことができる。
【００８３】
上述してきたように、実施例では、論物メタ記憶部２４ａが、データの論理アドレスと、データを記憶するデータブロック番号及びデータブロック内でのデータの位置を示すインデックスと、を対応付ける論物メタを記憶する。また、ＤＢＭ記憶部２４ｂが、データブロック番号とストレージ３でのデータブロックの記憶位置を示す物理番号とを対応付けるデータブロックマップを記憶する。また、データブロックは、記憶するデータ毎にデータブロック内での位置を示すオフセットとデータの長さを含むデータユニットヘッダをインデックスで指定される位置に記憶するヘッダ領域と、データを記憶するペイロード領域を有する。したがって、ストレージ制御装置２は、論物メタ記憶部２４ａ、ＤＢＭ記憶部２４ｂ及びヘッダ領域を用いてペイロード領域にデータを追記書きすることで、ストレージ３への書き込み回数を減らすことができる。
【００８４】
また、実施例では、ストレージ３を読み書きする単位長の整数倍の大きさを単位としてデータを記憶し、データのＣＲＣをデータユニットヘッダに記憶するので、データが非圧縮の場合にペイロード領域を有効に利用することができる。
【００８５】
また、実施例では、リファレンス記憶部２４ｃが、データの重複数を示すリファレンスカウンタを物理番号及びインデックスと対応付けて記憶するので、ストレージ制御装置２は、重複排除を行うことができる。
【００８６】
また、実施例では、データブロックに記憶するデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダをヘッダ領域に記憶する。したがって、ストレージ制御装置２は、ペイロード領域にデータを効率良く書き込むことができる。
【００８７】
また、実施例では、ストレージ制御装置２は、物理番号としてドライブグループ３ｃの番号、ＲＡＩＤユニットの番号及びスロットの番号を用いるので、データブロックのストレージ３での記憶位置を一意に特定することができる。
【００８８】
また、実施例では、追記部２５がメタ管理部２４及びＩＯ部２６と連携してストレージ３へデータの追記及びまとめ書きを行うので、ストレージ３への書き込み回数を減らすことができる。
【００８９】
なお、実施例では、ストレージ制御装置２について説明したが、ストレージ制御装置２が有する構成をソフトウェアによって実現することで、同様の機能を有するストレージ制御プログラムを得ることができる。そこで、ストレージ制御プログラムを実行するストレージ制御装置２のハードウェア構成について説明する。
【００９０】
図１７は、実施例に係るストレージ制御プログラムを実行するストレージ制御装置２のハードウェア構成を示す図である。図１７に示すように、ストレージ制御装置２は、メインメモリ４１と、プロセッサ４２と、ホストＩ／Ｆ４３と、通信Ｉ／Ｆ４４と、接続Ｉ／Ｆ４５とを有する。
【００９１】
メインメモリ４１は、プログラムやプログラムの実行途中結果などを記憶するＲＡＭ（Random  Access  Memory）である。プロセッサ４２は、メインメモリ４１からプログラムを読み出して実行する処理装置である。
【００９２】
ホストＩ／Ｆ４３は、サーバ１ｂとのインタフェースである。通信Ｉ／Ｆ４４は、他のストレージ制御装置２と通信するためのインタフェースである。接続Ｉ／Ｆ４５は、ストレージ３とのインタフェースである。
【００９３】
そして、プロセッサ４２において実行されるストレージ制御プログラムは、可搬記録媒体５１に記憶され、メインメモリ４１に読み込まれる。あるいは、ストレージ制御プログラムは、通信Ｉ／Ｆ４４を介して接続されたコンピュータシステムのデータベースなどに記憶され、これらのデータベースから読み出されてメインメモリ４１に読み込まれる。
【００９４】
また、実施例では、ＳＳＤ３ｄを不揮発性記憶媒体として用いる場合について説明したが、本発明はこれに限定されるものではなく、ＳＳＤ３ｄと同様に書き込み回数に制限がある他の不揮発性記憶媒体を用いる場合にも同様に適用することができる。
【００９５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【００９６】
（付記１）書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御装置において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内での前記データの追記書き順番を示すインデックスと、を対応付ける論物メタ情報を記憶する論物メタ情報記憶部と、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報を記憶するマップ情報記憶部と、
前記データを書き込む制御を行う制御部と、
を備え、
前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有し、
前記制御部は、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う、
ことを特徴とするストレージ制御装置。
【００９７】
（付記２）前記制御部は、
前記データをバッファ上の対応するデータブロックに書き込み、
書き込みの都度、前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域において使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きを実行する
ことを特徴とする付記１に記載のストレージ制御装置。
【００９８】
（付記３）前記書き込む制御は、
前記データユニットヘッダに、前記データの誤りを検出するコードを書き込む制御を含むことを特徴とする付記１又は２に記載のストレージ制御装置。
【００９９】
（付記４）前記書き込む制御は、
前記ヘッダ領域に、前記データブロックに記憶するデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダを書き込む制御をさらに含むことを特徴とする付記１、２又は３に記載のストレージ制御装置。
【０１００】
（付記５）前記物理識別子は、
複数の記憶媒体をグループ化したドライブグループを識別するＤＧ識別子と、
前記ストレージに前記データブロックをまとめ書きする単位であるまとめ書き単位領域を識別するＲＵ識別子と、
前記まとめ書き単位領域内で前記データブロックを記憶するスロットを識別するスロット識別子と
を有することを特徴とする付記１〜４のいずれか１つに記載のストレージ制御装置。
【０１０１】
（付記６）前記制御部は、データの重複排除及び圧縮の制御を行うものであり、
データの重複がある場合は、前記論物メタ情報におけるデータブロック識別子及びインデックスを参照先のデータブロック識別子及びインデックスと同じに設定し、
リファレンス情報記憶部に前記データの重複数を示すリファレンスカウントと前記データを対応付けるリファレンス情報を記憶させ、
データの重複がない場合は、データの圧縮を行う
ことを特徴とする付記１〜５のいずれか１つに記載のストレージ制御装置。
【０１０２】
（付記７）前記記憶媒体は、書き込み回数に制限を有する半導体メモリであることを特徴とする付記１〜６のいずれか１つに記載のストレージ制御装置。
【０１０３】
（付記８）書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御方法において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内での前記データの追記書き順番を示すインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有するものであり、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む書込制御を行うことを特徴とするストレージ制御方法。
【０１０４】
（付記９）前記書込制御は、
前記データをバッファ上の対応するデータブロックに書き込み、
書き込みの都度、前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域において使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きを実行する
ことを特徴とする付記８に記載のストレージ制御方法。
【０１０５】
（付記１０）前記書込制御は、
前記データユニットヘッダに、前記データの誤りを検出するコードを書き込む制御を含むことを特徴とする付記８又は９に記載のストレージ制御方法。
【０１０６】
（付記１１）前記書込制御は、
前記ヘッダ領域に、前記データブロックに記憶するデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダを書き込む制御をさらに含むことを特徴とする付記８、９又は１０に記載のストレージ制御方法。
【０１０７】
（付記１２）書き込み回数に制限を有する記憶媒体を用いるストレージ装置を制御するストレージ制御装置が備えるコンピュータで実行されるプログラムにおいて、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内での前記データの追記書き順番を示すインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、複数インデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、複数インデックス分のデータが記憶可能な容量を有するペイロード領域を有するものであり、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む書込制御を行う
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【０１０８】
（付記１３）前記書込制御は、
前記データをバッファ上の対応するデータブロックに書き込み、
書き込みの都度、前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域において使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きを実行する
ことを特徴とする付記１２に記載のストレージ制御プログラム。
【０１０９】
（付記１４）前記書込制御は、
前記データユニットヘッダに、前記データの誤りを検出するコードを書き込む制御を含むことを特徴とする付記１２又は１３に記載のストレージ制御プログラム。
【０１１０】
（付記１５）前記書込制御は、
前記ヘッダ領域に、前記データブロックに記憶するデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダを書き込む制御をさらに含むことを特徴とする付記１２、１３又は１４に記載のストレージ制御プログラム。
【符号の説明】
【０１１１】
１    情報処理システム
１ａ    ストレージ装置
１ｂ    サーバ
２    ストレージ制御装置
３    ストレージ
３ａ    プール
３ｂ    ティア
３ｃ    ドライブグループ
３ｄ    ＳＳＤ
３ｅ    論物メタ域
３ｆ    データユニット域
２１    上位接続部
２２    キャッシュ管理部
２３    重複管理部
２４    メタ管理部
２４ａ    論物メタ記憶部
２４ｂ    ＤＢＭ記憶部
２４ｃ    リファレンス記憶部
２５    追記部
２６    ＩＯ部
４１    メインメモリ
４２    プロセッサ
４３    ホストＩ／Ｆ
４４    通信Ｉ／Ｆ
４５    接続Ｉ／Ｆ
５１    可搬記録媒体
【図１】
2019133601.tif 000003
【図２】
2019133601.tif 000004
【図３】
2019133601.tif 000005
【図４】
2019133601.tif 000006
【図５】
2019133601.tif 000007
【図６】
2019133601.tif 000008
【図７】
2019133601.tif 000009
【図８Ａ】
2019133601.tif 000010
【図８Ｂ】
2019133601.tif 000011
【図８Ｃ】
2019133601.tif 000012
【図９】
2019133601.tif 000013
【図１０】
2019133601.tif 000014
【図１１】
2019133601.tif 000015
【図１２】
2019133601.tif 000016
【図１３】
2019133601.tif 000017
【図１４】
2019133601.tif 000018
【図１５】
2019133601.tif 000019
【図１６】
2019133601.tif 000020
【図１７】
2019133601.tif 000021
【手続補正書】
【提出日】平成30年8月22日(2018.8.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御装置において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内で前記データを識別するインデックスと、を対応付ける論物メタ情報を記憶する論物メタ情報記憶部と、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報を記憶するマップ情報記憶部と、
前記データを書き込む制御を行う制御部と、
を備え、
前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有し、
前記制御部は、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う、
ことを特徴とするストレージ制御装置。
【請求項２】
前記制御部は、
前記データをバッファ上の対応するデータブロックに書き込み、
書き込みの都度、前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域において使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きを実行する
ことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記書き込む制御は、
前記データユニットヘッダに、前記データの誤りを検出するコードを書き込む制御を含むことを特徴とする請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記書き込む制御は、
前記ヘッダ領域に、前記データブロックに記憶するデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダを書き込む制御をさらに含むことを特徴とする請求項１、２又は３に記載のストレージ制御装置。
【請求項５】
前記物理識別子は、
複数の記憶媒体をグループ化したドライブグループを識別するＤＧ識別子と、
前記ストレージに前記データブロックをまとめ書きする単位であるまとめ書き単位領域を識別するＲＵ識別子と、
前記まとめ書き単位領域内で前記データブロックを記憶するスロットを識別するスロット識別子と
を有することを特徴とする請求項１〜４のいずれか１つに記載のストレージ制御装置。
【請求項６】
前記制御部は、データの重複排除及び圧縮の制御を行うものであり、
データの重複がある場合は、前記論物メタ情報におけるデータブロック識別子及びインデックスを参照先のデータブロック識別子及びインデックスと同じに設定し、
リファレンス情報記憶部に前記データの重複数を示すリファレンスカウントと前記データを対応付けるリファレンス情報を記憶させ、
データの重複がない場合は、データの圧縮を行う
ことを特徴とする請求項１〜５のいずれか１つに記載のストレージ制御装置。
【請求項７】
前記記憶媒体は、書き込み回数に制限を有する半導体メモリであることを特徴とする請求項１〜６のいずれか１つに記載のストレージ制御装置。
【請求項８】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御方法において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内で前記データを識別するインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有するものであり、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行うことを特徴とするストレージ制御方法。
【請求項９】
書き込み回数に制限を有する記憶媒体を用いるストレージ装置を制御するストレージ制御装置が備えるコンピュータで実行されるプログラムにおいて、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内で前記データを識別するインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有するものであり、
前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
１つの態様では、ストレージ制御装置は、書き込み回数に制限を有する記憶媒体を用いるストレージを制御する。前記ストレージ装置は、論物メタ情報記憶部とマップ情報記憶部と制御部とを有する。前記論物メタ情報記憶部は、論理アドレスとデータブロック識別子及びインデックスとを対応付ける。前記論理アドレスは、前記ストレージを使用する情報処理装置からのデータの識別に用いられる。前記データブロック識別子は、前記データをストレージ上で配置するためのデータブロックを識別する。前記インデックスは、前記データブロック内で前記データを識別する。前記マップ情報記憶部は、前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付ける。前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有する。前記制御部は、前記データブロックの物理識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データを書き込む制御を行う。前記制御部は、前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う。
【手続補正書】
【提出日】平成30年10月17日(2018.10.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御装置において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内で前記データを識別するインデックスと、を対応付ける論物メタ情報を記憶する論物メタ情報記憶部と、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報を記憶するマップ情報記憶部と、
前記データを書き込む制御を行う制御部と、
を備え、
前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有し、
前記制御部は、
前記データブロック識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データをバッファ上の対応するデータブロックに書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込み、
前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域においてデータの書き込みに使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きする制御を行う、
ことを特徴とするストレージ制御装置。
【請求項２】
前記書き込む制御は、
前記データユニットヘッダに、前記データの誤りを検出するコードを書き込む制御を含むことを特徴とする請求項１に記載のストレージ制御装置。
【請求項３】
前記書き込む制御は、
前記ヘッダ領域に、前記データブロックに既に記憶してあるデータの数、次に書き込むデータのインデックス、次に書き込むデータのオフセットを含むデータブロックヘッダを書き込む制御をさらに含むことを特徴とする請求項１又は２に記載のストレージ制御装置。
【請求項４】
前記物理識別子は、
複数の記憶媒体をグループ化したドライブグループを識別するＤＧ識別子と、
前記ストレージに前記データブロックをまとめ書きする単位であるまとめ書き単位領域を識別するＲＵ識別子と、
前記まとめ書き単位領域内で前記データブロックを記憶するスロットを識別するスロット識別子と
を有することを特徴とする請求項１〜３のいずれか１つに記載のストレージ制御装置。
【請求項５】
前記制御部は、データの重複排除及び圧縮の制御を行うものであり、
データの重複がある場合は、前記論物メタ情報におけるデータブロック識別子及びインデックスを参照先のデータブロック識別子及びインデックスと同じに設定し、
リファレンス情報記憶部に前記データの重複数を示すリファレンスカウントと前記データを対応付けるリファレンス情報を記憶させ、
データの重複がない場合は、データの圧縮を行う
ことを特徴とする請求項１〜４のいずれか１つに記載のストレージ制御装置。
【請求項６】
前記記憶媒体は、書き込み回数に制限を有する半導体メモリであることを特徴とする請求項１〜５のいずれか１つに記載のストレージ制御装置。
【請求項７】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御方法において、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内で前記データを識別するインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有するものであり、
前記データブロック識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データをバッファ上の対応するデータブロックに書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込み、
前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域においてデータの書き込みに使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きする制御を行うことを特徴とするストレージ制御方法。
【請求項８】
書き込み回数に制限を有する記憶媒体を用いるストレージを制御するストレージ制御装置が備えるコンピュータで実行されるプログラムにおいて、
前記ストレージを使用する情報処理装置からのデータの識別に用いる論理アドレスと、前記データをストレージ上で配置するためのデータブロックを識別するデータブロック識別子及び前記データブロック内で前記データを識別するインデックスと、を対応付ける論物メタ情報を論物メタ情報記憶部に記憶し、
前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付けるマップ情報をマップ情報記憶部に記憶し、
前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有するものであり、
前記データブロック識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データをバッファ上の対応するデータブロックに書き込み、
前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込み、
前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域においてデータの書き込みに使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きする制御を行う
処理を前記コンピュータに実行させることを特徴とするストレージ制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
１つの態様では、ストレージ制御装置は、書き込み回数に制限を有する記憶媒体を用いるストレージを制御する。前記ストレージ装置は、論物メタ情報記憶部とマップ情報記憶部と制御部とを有する。前記論物メタ情報記憶部は、論理アドレスとデータブロック識別子及びインデックスとを対応付ける。前記論理アドレスは、前記ストレージを使用する情報処理装置からのデータの識別に用いられる。前記データブロック識別子は、前記データをストレージ上で配置するためのデータブロックを識別する。前記インデックスは、前記データブロック内で前記データを識別する。前記マップ情報記憶部は、前記データブロック識別子と前記データブロックを記憶する前記ストレージ上の物理位置を示す物理識別子とを対応付ける。前記データブロックは、固定容量であり、所定数のインデックス分のデータに関わるヘッダ情報が記憶可能な容量を有するヘッダ領域と、各インデックスに対応付けられたデータが記憶されるペイロード領域を有する。前記制御部は、前記データブロック識別子と前記インデックスに基づいて、前記データブロック及びそのペイロード領域における書き込み位置を特定して前記データをバッファ上の対応するデータブロックに書き込む制御を行う。前記制御部は、前記データブロック内での前記書き込み位置を示すオフセットと前記データの長さを示すデータ長とを含むデータユニットヘッダを、前記ヘッダ領域における前記インデックスで指定される位置に書き込む制御を行う。前記制御部は、前記バッファ上の、複数のデータブロックが配置される容量分のまとめ書き単位領域においてデータの書き込みに使用可能な空き領域がなくなったか否かを判定し、判定の結果に応じて前記ストレージへのまとめ書きする制御を行う。