(57)【特許請求の範囲】
【請求項１】
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置であって、
書き込み対象となるファイルをブロックデータに分割して当該ブロックデータを記憶媒体に書き込む際に、当該ブロックデータを参照する、当該ブロックデータのデータ内容及び格納位置に基づくアドレスデータを生成し、データ内容が同一である前記ブロックデータを同一の前記アドレスデータで参照することで、同一内容の前記ブロックデータの重複記憶を排除する機能を有するデータ書き込み部と、
前記ブロックデータを参照する前記アドレスデータに、当該ブロックデータが前記ファイルに共有されている当該ファイルの数を記憶する重複回数記録部と、
記憶媒体に記憶されている前記ブロックデータが前記ファイルに共有されている当該ファイルの数を表す共有数を、当該ブロックデータを参照する前記アドレスデータを基に取得する共有数取得部と、
記憶媒体に形成された記憶領域毎の書き込み回数を取得する書き込み回数取得部と、
予め設定された基準により前記共有数が多いと判断された前記ブロックデータを、当該ブロックデータが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える書き換え部と、
を備えたストレージ装置。
【請求項２】
請求項１に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上の前記ブロックデータを、予め設定された前記書き込み回数以上の他の記憶領域に書き換える、
ストレージ装置。
【請求項３】
請求項２に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上の前記ブロックデータを、予め設定された前記書き込み回数以上の他の記憶領域のうち他のデータが記憶されていない空き記憶領域に書き換える、
ストレージ装置。
【請求項４】
請求項２又は３に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上の前記ブロックデータを、当該ブロックデータの前記共有数よりも少ない共有数の前記ブロックデータが記憶されている予め設定された前記書き込み回数以上の他の記憶領域に書き換える、
ストレージ装置。
【請求項５】
請求項１乃至４のいずれかに記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断された前記ブロックデータを、当該ブロックデータが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
ストレージ装置。
【請求項６】
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置に装備されたコンピュータに、
書き込み対象となるファイルをブロックデータに分割して当該ブロックデータを記憶媒体に書き込む際に、当該ブロックデータを参照する、当該ブロックデータのデータ内容及び格納位置に基づくアドレスデータを生成し、データ内容が同一である前記ブロックデータを同一の前記アドレスデータで参照することで、同一内容の前記ブロックデータの重複記憶を排除する機能を有するデータ書き込み部と、
前記ブロックデータを参照する前記アドレスデータに、当該ブロックデータが前記ファイルに共有されている当該ファイルの数を記憶する重複回数記録部と、
記憶媒体に記憶されている前記ブロックデータが前記ファイルに共有されている当該ファイルの数を表す共有数を、当該ブロックデータを参照する前記アドレスデータを基に取得する共有数取得部と、
記憶媒体に形成された記憶領域毎の書き込み回数を取得する書き込み回数取得部と、
予め設定された基準により前記共有数が多いと判断された前記ブロックデータを、当該ブロックデータが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える書き換え部と、
を実現させるためのプログラム。
【請求項７】
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置による書き換え方法であって、
書き込み対象となるファイルをブロックデータに分割して当該ブロックデータを記憶媒体に書き込む際に、当該ブロックデータを参照する、当該ブロックデータのデータ内容及び格納位置に基づくアドレスデータを生成し、データ内容が同一である前記ブロックデータを同一の前記アドレスデータで参照することで、同一内容の前記ブロックデータの重複記憶を排除し、
前記ブロックデータを参照する前記アドレスデータに、当該ブロックデータが前記ファイルに共有されている当該ファイルの数を記憶し、
記憶媒体に記憶されている前記ブロックデータが前記ファイルに共有されている当該ファイルの数を表す共有数を、当該ファイルのデータを参照する前記アドレスデータを基に取得すると共に、
記憶媒体に形成された記憶領域毎の書き込み回数を取得し、
予め設定された基準により前記共有数が多いと判断された前記ブロックデータを、当該ブロックデータが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
書き換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置にかかり、特に、書き込み回数に応じて使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置に関する。
【背景技術】
【０００２】
近年、フラッシュメモリは、大容量化や記録再生速度の高速化、さらには低価格化が進んでおり、広く普及してきている。また、エンタープライズ向けストレージ装置においても、フラッシュメモリのみを用いた製品が販売されるようになっている。
【０００３】
一方で、フラッシュメモリの課題として、書き込み可能回数が限られることがあげられる。このため、特定のメモリセルに書き込みが集中しないようにし、フラッシュメモリの使用寿命を延ばすための技術であるウェアレベリング（摩耗平滑化）が必要になる（例えば、特許文献１の段落００３９）。特に、高信頼性が求められるエンタープライズ向け製品でフラッシュメモリを使用する場合は、より高度なウェアレベリングが求められる。
【０００４】
ここで、ウェアレベリングの方法として、メモリセルの書き込み回数の統計情報を基に書き込み回数を均等化する方法がある。具体的には、Ｉ／Ｏ（Input/Output）統計情報を基に書き込み先のメモリセルを決定する方法や、Ｉ／Ｏ統計情報を基にメモリセル間の書き込み回数が平準化するようにデータの再配置を行う方法、がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−２２５２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したＩ／Ｏ統計情報を用いたウェアレベリング方法では、フラッシュメモリの使用寿命を延ばすことが困難である、という問題が生じる。つまり、上述した方法では、Ｉ／Ｏの挙動が変わった場合には、メモリセルのデータが今後も書き換えられるかを予測することは困難であり、効率的なウェアレベリング処理が困難となる。その結果、フラッシュメモリの使用寿命が短くなってしまう。
【０００７】
そして、上述した問題は、フラッシュメモリだけでなく、データの書き換えによって使用寿命が短くなるあらゆる記憶媒体に対しても生じうる。
【０００８】
このため、本発明の目的は、上述した課題である、記憶媒体の使用寿命が短くなることを解消することにある。
【課題を解決するための手段】
【０００９】
本発明の一形態であるストレージ装置は、
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置であって、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部と、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部と、
を備えた、
という構成をとる。
【００１０】
また、本発明の一形態であるプログラムは、
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置に装備された制御部に、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部と、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部と、
を実現させる、
という構成をとる。
【００１１】
また、本発明の一形態である書き換え方法は、
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置による書き換え方法であって、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得し、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える、
という構成をとる。
【発明の効果】
【００１２】
本発明は、以上のように構成されることにより、記憶媒体の使用寿命が短くなることを抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態１におけるストレージ装置の構成を示す機能ブロック図である。
【図２】図１に開示したストレージ装置に格納されたデータの構造の一例を示す図である。
【図３】図２に開示したコンテンツアドレスのデータ構造の一例を示す図である。
【図４】ストレージ装置によるデータ書き換え処理の動作を示すフローチャートである。
【図５】ストレージ装置によるデータ書き換え処理の様子を示す図である。
【図６】ストレージ装置によるデータ書き換え処理の他の様子を示す図である。
【図７】本発明の実施形態２におけるストレージ装置によるデータ書き換え処理の様子を示す図である。
【図８】本発明の実施形態３におけるストレージ装置の構成を示す機能ブロック図である。
【発明を実施するための形態】
【００１４】
＜実施形態１＞
本発明の第１の実施形態を、図１乃至図６を参照して説明する。図１乃至図３は、ストレージ装置の構成を説明するための図であり、図４乃至図６は、ストレージ装置によるデータ書き換え処理を説明するための図である。
【００１５】
［構成］
本発明におけるストレージ装置１０は、記憶媒体に対してデータを読み書きする装置である。本実施形態では、図１に示すように、ストレージ装置１０が記憶媒体であるフラッシュメモリ２０に接続されている。このとき、ストレージ装置１０とフラッシュメモリ２０とは、例えば、SCSI（Small Computer System Interface）、SAS（Serial Attached SCSI）、SATA（Serial ATA）、FC（Fibre Channel）などのストレージインタフェースによって接続されている。なお、図１では、フラッシュメモリ２０がストレージ装置１０の外部に配置されているものとして記載しているが、フラッシュメモリ２０はストレージ装置１０の内部に搭載されていてもよい。
【００１６】
ここで、フラッシュメモリ２０は、データを記憶する記憶領域の単位となるメモリセルを複数備えており、メモリセルごとに書き込み可能回数が限られている。つまり、フラッシュメモリ２０は、データの書き換えにより使用寿命が短くなる性質を有している。このため、特定のメモリセルに書き込みが集中しないようにするウェアレベリングが必要になる。本発明では、ウェアレベリング方法に特徴を有しており、かかる方法を以下に説明する。なお、図１では、フラッシュメモリ２０が１つのように記載されているが、１つでも複数でもよい。
【００１７】
上記ストレージ装置１０は、図示しない演算部と記憶部とを備えている。そして、ストレージ装置１０の演算部は、プログラムが当該演算部によって実行されることで実現された、データ書き込み部１１、重複回数記録部１２、重複回数取得部１３、データ再配置開始部１４、スケジューラ１５、を備えている。
【００１８】
また、上記フラッシュメモリ２０は、図示しない演算装置と記憶部とを備えている。そして、フラッシュメモリ２０の演算部は、プログラムが当該演算部によって実行されることで実現された、データ書き込み部２１、書き込み回数記録処理部２２、書き込み回数取得部２３、データ再配置部２４、アドレス変換部２５、を備えている。また、フラッシュメモリ２０の記憶部は、アドレス変換記録部２６、書き込み回数記録部２７、データ記憶部２８、を備えている。
【００１９】
以下、ストレージ装置１０とフラッシュメモリ２０とが備える各構成について詳述する。
【００２０】
ストレージ装置１０のデータ書き込み部１１は、ユーザからの要求に応じてデータの書き込みを行う。例えば、データ書き込み部１１としては、CIFS/NFS（Common Internet File System / Network File System）などのプロトコルがあげられる。具体的に、ストレージ装置１０のデータ書き込み部１１は、フラッシュメモリ２０のデータ書き込み部２１と協働して、データの書き込みを行う。ここで、データ書き込み時の様子を、図２及び図３を参照して説明する。
【００２１】
データ書き込み部１１，２１は、まず、書き込み対象となるファイルを、所定容量のブロックデータに分割して、当該ブロックデータ（実データ）をフラッシュメモリ２０のデータ記憶部２８となるメモリセルに記憶する。このとき、データ書き込み部１１，１２は、ブロックデータを参照する、当該ブロックデータのデータ内容及び格納位置に基づくアドレスデータ（コンテンツアドレス：ＣＡ）を生成して、当該コンテンツアドレスと共にツリー構造にてフラッシュメモリ２０に格納する。このため、データ書き込み部１１，２１は、異なるファイルのブロックデータであっても、データ内容が同一であれば、同じアドレスデータで参照すればよいため、１つのブロックデータを記憶装置に記憶しておけばよいこととなる。このように、データ書き込み部１１，２１は、同一内容のブロックデータの重複記憶を排除する機能（重複記憶排除機能）を有している。
【００２２】
一例として、図２の例では、例えば、ファイル１は３つのブロックデータ１１，１２，１３で構成されているものとし、これらがメモリセルに格納される。そして、これらブロックデータ１１，１２，１３の格納位置を参照するコンテンツアドレスＣＡ１１，１２，１３をたどることで、ファイル１を読み出すことができる。一方、ファイル２は、３つのブロックデータ２１，２２，２３で構成されているものとし、これらがメモリセルに格納される。このうちブロックデータ２１が、ファイル１を構成するブロックデータ１３と同一内容である場合には、ブロックデータ２１の実データを格納することなく、すでに格納されているブロックデータ１３のコンテンツアドレスＣＡ１３を参照すればよいこととなる。これにより、すでに格納されているブロックデータ１３が、ファイル２のブロックデータとして格納されたこととなる。
【００２３】
そして、ストレージ装置１０の重複回数記録部１２は、上述したように格納されたブロックデータ毎に、当該ブロックデータがいくつのファイルから参照されて共有されているかを表す参照数（共有数）を記憶する。例えば、図３に示すように、各ブロッックデータを参照するコンテンツアドレスＣＡ内に、当該ブロックデータを参照しているファイルを特定する情報、例えば、i-node番号を記録する。つまり、ブロックデータを参照するコンテンツアドレスＣＡ内のi-node番号の数が、当該コンテンツアドレスＣＡが参照するブロックデータがいくつのファイルから参照されているか、つまり、いくつのファイルによって共有されているか、を表す参照数（共有数）となる。例えば、図２の例では、ブロックデータ１３はファイル１とファイル２によって参照（共有）されているため、当該ブロックデータ１３の参照数は「２」となる。
【００２４】
また、フラッシュメモリ２０のアドレス変換部２５は、ブロックデータを書き込む場合、ブロックデータが書き込まれた位置と、実際にブロックデータが格納されたメモリセルと、の対応を表す情報を、アドレス変換記録部２６に記録する。この変換により、後述するように、ブロックデータのメモリセル上の配置位置が変更されたとしても、ストレージ装置１０からは、同じ書き込み位置を指定してブロックデータにアクセスすることができる。このように、アドレス変換部２５は、ストレージ装置１０から見えるデータの配置位置と、メモリセル上のデータ配置位置と、の対応を更新している。
【００２５】
また、フラッシュメモリ２０の書き込み回数記録処理部２２は、メモリセル毎の書き込み回数をカウントして、書き込み回数記録部２７に記録する。例えば、書き込み回数記録処理部２２は、データ書き込み部２１などによってメモリセルが更新されると、そのメモリセルの書き込み回数を１つ増やして、書き込み回数記録部２７に記録する。なお、メモリセル毎の書き込み回数のカウントは、後述するブロックデータの書き換え時にも行われる。
【００２６】
次に、ストレージ装置１０によるブロックデータの再配置処理を行う構成について説明する。まず、ストレージ装置１０のスケジューラ１５は、定期的にデータ再配置開始部１４を呼び出して実行する。これに応じて、データ再配置開始部１４は、フラッシュメモリ２０内の各メモリセルに格納されているブロックデータ（実データ）の書き換え処理であるウェアレベリングを実行する。
【００２７】
ウェアレベリングでは、以下の処理を実行する。まず、ストレージ装置１０の重複回数取得部１３（共有数取得部）は、フラッシュメモリ２０に格納されている各ブロックデータを参照するコンテンツアドレスＣＡを基に、各ブロックデータがいくつのファイルから参照されているかを表す参照数を取得する。具体的には、図２に示すように、ブロックデータを参照するコンテンツアドレスＣＡ内に記憶されているi-node番号の数を、そのブロックデータの参照数として取得する。
【００２８】
また、フラッシュメモリ２０の書き込み回数取得部２３は、各ブロックデータが配置されているメモリセルの書き込み回数を、書き込み回数記録部２７から取得する。
【００２９】
そして、データ再配置部２４（書き換え部）は、メモリセル毎に、その位置と、当該メモリセルの書き込み回数と、当該メモリセルに格納されているブロックデータの参照数と、を受け取る。そして、データ再配置部２４は、これら情報を基に実際にウェアレベリング、つまり、メモリセルに格納されているブロックデータの書き換え処理を実施する。この書き換え処理は、例えば、参照数が多いブロックデータを、使用寿命が短い他のメモリセルつまり書き込み回数が多い他のメモリセルに書き書き換える処理となる。書き換え処理の具体例については、以下の動作説明時に詳述する。
【００３０】
また、上述したアドレス変換部２５は、データ再配置部２４によりブロックデータが書き換えられた際にも、当該ブロックデータが格納された位置と実際のメモリセルとの対応を表す情報を、アドレス変換記録部２６に記録する。
【００３１】
［動作］
次に、上述した構成のストレージ装置１０による動作、特に、ウェアレベリングの動作を、図４のフローチャート及び図５、図６のブロックデータの様子を示す図を参照して説明する。
【００３２】
まず、スケジューラ１５は、定期的にデータ再配置開始部１４を呼び出す。データ再配置開始部１４は、まず、書き込み回数取得部２３にて取得した各メモリセルの書き込み回数を取得し、重複回数取得部１３にて取得した各メモリセルに格納されているブロックデータの参照数を取得する。
【００３３】
そして、データ再配置開始部１４は、取得した書き込み回数と参照数とから、一定数未満の書き込み回数であるメモリセルに、一定数以上の参照数を持つブロックデータがあるか確認する（ステップＳ１）。もし、そのようなブロックデータが存在しない場合には（ステップＳ１でＮｏ）、本発明によるウェアレベリングは実施せずに終了する。そのようなブロックデータが存在した場合は（ステップＳ１でＹｅｓ）、かかるブロックデータを、以降のステップにおける置き換え候補（書き換え候補）として選択する（ステップＳ２）。
【００３４】
なお、メモリセルの書き込み回数が一定数未満か否かの判断は、メモリセルの書き込み回数が予め設定された書き込み回数閾値よりも小さいか否かによって行う。また、ブロックデータの参照数が一定数以上か否かの判断は、ブロックデータの参照数が予め設定された参照数閾値以上であるか否かによって行う。
【００３５】
続いて、データ再配置開始部１４は、書き込み回数が一定数以上のメモリセルのうち、他のデータが格納されていない空きのメモリセルがあるかを確認する（ステップＳ３）。なお、メモリセルの書き込み回数が一定数以上か否かの判断は、メモリセルの書き込み回数が上述した書き込み回数閾値以上であるか否かによって行うが、当該書込み回数閾値よりも大きい値の他の閾値以上であるか否かによって行ってもよい。
【００３６】
そして、書き込み回数が一定数以上の空きのメモリセルがある場合は（ステップＳ３でＹｅｓ）、データ再配置部２４は、上記ステップＳ２で置き換え候補として選択したブロックデータを、空きのメモリセルに移動する（ステップＳ４）。つまり、データ再配置部２４は、図５（Ａ）に示すように、一定数未満の少ない書き込み回数であるメモリセルに格納されており一定数以上の多い参照数を持つブロックデータを、図５（Ｂ）に示すように、一定数以上の多い書き込み回数であるメモリセルに格納し直す。
【００３７】
上記ステップＳ３で、書き込み回数が一定数以上の空きのメモリセルが無い場合は（ステップＳ３でＮｏ）、データ再配置開始部１４は、書き込み回数が一定数以上のメモリセルに一定数未満の参照数を持つブロックデータがあるかを確認する（ステップＳ５）。なお、ブロックデータの参照数が一定数未満か否かの判断は、ブロックデータの参照数が上述した参照数閾値未満であるか否かによって行うが、当該参照数閾値よりも小さい値の他の閾値未満であるか否かによって行ってもよい。そして、このようなブロックデータが無かった場合（ステップＳ５でＮｏ）、ステップＳ２で置き換え候補として選択したブロックデータの移動先はないと判断し、ウェアレベリングは実施しない。
【００３８】
一方、ステップＳ５において、書き込み回数が一定数以上のメモリセルに一定数未満の参照数を持つブロックデータがあった場合には（ステップＳ５でＹｅｓ）、データ再配置部２４は、ステップＳ２で置き換え候補として選択したブロックデータと、ステップＳ５で見つかったブロックデータのメモリセル上の配置を交換する（ステップＳ６）。つまり、データ再配置部２４は、図６（Ａ）に示すように、一定数未満の少ない書き込み回数であるメモリセルに格納されている一定数以上の多い参照数を持つブロックデータを、図６（Ｂ）に示すように、一定数以上の多い書き込み回数であるメモリセルに格納し直す。これと同時に、図６（Ａ）に示すように、一定数以上の多い書き込み回数であるメモリセルに格納されている一定数未満の少ない参照数を持つブロックデータを、図６（Ｂ）に示すように、一定数未満の少ない書き込み回数であるメモリセルに格納し直す。
【００３９】
なお、上記ステップＳ５において、書き込み回数が一定数以上のメモリセルに一定数未満の参照数を持つブロックデータが無かった場合であっても（ステップＳ５でＮｏ）、データ再配置開始部１４は、以下のようにウェアレベリングは実施してもよい。まず、書き込み回数が一定数以上のメモリセルに格納されているブロックデータの参照数と、ステップＳ２で置き換え候補として選択したブロックデータの参照数と、を比較する。そして、比較の結果、参照数が多いブロックデータを書き込み回数が一定数以上のメモリセルに配置するよう書き換えを行う。例えば、ステップＳ２で置き換え候補として選択したブロックデータの参照数の方が大きい場合には、かかるブロックデータを書き込み回数が一定数以上のメモリセルに書き換える。これと同時に、書き込み回数が一定数以上のメモリセルに格納されているブロックデータを、一定数未満の少ない書き込み回数であるメモリセルに書き換える。
【００４０】
そして、ステップＳ４やステップＳ６などの処理によりブロックデータ書き換えを行なった後に、アドレス変換部２５は、それぞれのブロックデータの位置とメモリセル上の位置が対応するように、アドレス変換記録部２６を更新する。
【００４１】
以上のように、本発明では、参照数の多いブロックデータを書き込み回数の多いメモリセルに配置するよう書き換えを行なっている。ここで、参照数が多いブロックデータは、さまざまなファイルから参照されているため、参照している全てのファイルが削除されない限り解放されない。このため、参照数が多いブロックデータは、以後、削除される可能性が低く、当該ブロックデータが格納されているメモリセルは書き換えられる可能性が低くなる。逆に、参照数が少ないブロックデータは以後に削除される可能性が高いため、当該ブロックデータが格納されているメモリセルは書き換えられる可能性が高くなる。
【００４２】
このようなことから、上述したように、将来書き換えられる可能性の低いブロックデータを、書き込み回数の多いメモリセルに配置することで、当該書き込み回数の多いメモリセルに対する以後の書き込み回数の増加を抑制することができる。その結果、フラッシュメモリの長寿命化を実現することができる。
【００４３】
なお、上記では、書き込み回数が一定数未満であり参照数が一定数以上のブロックデータを、書き込み回数が一定数以上のメモリセルに書き換えることとしているが、本発明は、かかる方法で書き換えを行うことに限定されない。例えば、ブロックデータの参照数に応じて、当該ブロックデータを他のメモリセルに記憶してもよい。このとき、書き換え先となる他のメモリセルは、上述したように書き込み回数から使用寿命の異なるものを選択してもよく、他の方法で使用寿命の異なるものを選択してもよい。
【００４４】
また、上記では、図３に示すように、コンテンツアドレスごとに、ブロックを参照しているファイルのi-node番号を記録して、参照数を取得していた。しかしながら、このような永続的な情報を記録することなく、他の方法で参照数を取得してもよい。例えば、重複排除を行うストレージ装置においては、ブロックデータは参照される回数が０になるまで解放されず、また、参照数が０になったブロックを解放するために、定期的にガベージコレクションを行う。このガベージコレクションにおいて、i-nodeがどのプロックデータを参照しているのかを確認し、図３に示す内容を作成することもできる。そして、その後、データ再配置開始部１４を呼び出すことで上述同様のウェアレベリングを実施することができる。この方法によれば、データ再配置開始部１４の処理が完了したあと、図３の内容は解放できる。
【００４５】
また、上記では、重複排除機能を有するストレージ装置におけるブロックデータの参照数（重複数）を基にウェアレベリングを実施しているが、他のストレージ装置においても本発明の構成を利用することができる。例えば、スナップショット機能を持つファイルシステムやRAWデバイスにおいては、スナップショット間でデータを共有するが、当該データの共有数を、上述した参照数として用いて、ウェアレベリングを行なってもよい。
【００４６】
＜実施形態２＞
次に、本発明の第２の実施形態を、図７を参照して説明する。図７は、ストレージ装置によるデータ書き換え処理を説明するための図である。
【００４７】
本発明におけるストレージ装置１０は、上述した実施形態１とほぼ同様の構成を有するが、フラッシュメモリ２０の構成が異なる。本実施形態におけるフラッシュメモリ２０は、SLC（Single Level Cell）、MLC（Multi Level Cell）、TLC（Triple Level Cell）が混在している。このような構成において、ストレージ装置１０のデータ再配置部２４は、ブロックデータの参照数に応じて、以下に説明するように適切なフラッシュメモリを選択する機能を有する。
【００４８】
ここで、SLC, MLC, TLCは、それぞれ性能や価格が異なっており、特に、使用寿命つまり書き換え可能回数が設定されている。例えば、MLC, TLCは、SLCよりも書き換え可能回数が少なく設定されており、使用寿命が短いものである。
【００４９】
そして、データ再配置部２４は、例えば、図７（Ａ）に示すように、書き換え可能回数が多いSLCに格納されており一定数以上の多い参照数を持つブロックデータを、図７（Ｂ）に示すように、書き換え可能回数の少ないMLCに書き換える。
【００５０】
このように、参照数が多く削除される可能性が低いブロックデータを、書き換え可能回数の少ないMLCに配置することで、当該MLCに対する以後の書き込み回数の増加を抑制することができる。その結果、使用寿命の短いフラッシュメモリであっても、長寿命化を実現することができる。
【００５１】
＜実施形態３＞
次に、本発明の第３の実施形態を、図８を参照して説明する。図８は、ストレージ装置の構成を示すブロック図である。
【００５２】
本発明におけるストレージ装置１００は、書き換えにより使用寿命が短くなる記憶媒体１１０に対してデータを書き込むストレージ装置１００であって、記憶媒体１１０に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部１０１と、前記共有数に基づいて、記憶媒体１１０に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部１０２と、を備える。なお、上記共有数取得部１０１と書き換え部１０２とは、ストレージ装置１００に装備された制御部（図示せず）でプログラムが実行されることで構築される。
【００５３】
そして、上記ストレージ装置１００は、まず、共有数取得部１０１が、記憶媒体１１０に記憶されているデータが共有されている数を表す共有数を取得する。そして、書き換え部１０２が、取得した共有数に基づいて、記憶媒体１１０に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える。
【００５４】
このように、データの共有数に基づいて、当該データを使用寿命の異なる他の記憶領域に書き換えることで、記憶媒体に対する書き込み回数を抑制することができ、当該記憶媒体の長寿命化を図ることができる。
【００５５】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるストレージ装置、プログラム、書き換え方法の構成の概略を説明する。但し、本発明は、以下の構成に限定されない。
【００５６】
（付記１）
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置であって、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部と、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部と、
を備えたストレージ装置。
【００５７】
（付記２）
付記１に記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも使用寿命の短い他の記憶領域に書き換える、
ストレージ装置。
【００５８】
（付記３）
付記１又は２に記載のストレージ装置であって、
記憶媒体に形成された記憶領域毎の書き込み回数を取得する書き込み回数取得部を備え、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
ストレージ装置。
【００５９】
（付記４）
付記３に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上のデータを、予め設定された前記書き込み回数以上の他の記憶領域に書き換える、
ストレージ装置。
【００６０】
（付記５）
付記４に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上のデータを、予め設定された前記書き込み回数以上の他の記憶領域のうち他のデータが記憶されていない空き記憶領域に書き換える、
ストレージ装置。
【００６１】
（付記６）
付記４又は５に記載のストレージ装置であって、
前記書き換え部は、予め設定された前記書き込み回数未満の記憶領域に記憶されており、予め設定された前記共有数以上のデータを、当該データの前記共有数よりも少ない共有数のデータが記憶されている予め設定された前記書き込み回数以上の他の記憶領域に書き換える、
ストレージ装置。
【００６２】
（付記７）
付記２に記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも使用寿命の短い他の記憶媒体に書き換える、
ストレージ装置。
【００６３】
（付記８）
付記７に記載のストレージ装置であって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
ストレージ装置。
【００６４】
（付記９）
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置に装備された制御部に、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得する共有数取得部と、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える書き換え部と、
を実現させるためのプログラム。
【００６５】
（付記９−１）
付記９に記載のプログラムであって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも使用寿命の短い他の記憶領域に書き換える、
プログラム。
【００６６】
（付記９−２）
付記９又は９−１にプログラムであって、
前記制御部に、さらに、記憶媒体に形成された記憶領域毎の書き込み回数を取得する書き込み回数取得部を実現させ、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
プログラム。
【００６７】
（付記９−３）
付記９−１に記載のプログラムであって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも使用寿命の短い他の記憶媒体に書き換える、
プログラム。
【００６８】
（付記９−４）
付記９−３に記載のプログラムであって、
前記書き換え部は、予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
プログラム。
【００６９】
（付記１０）
書き換えにより使用寿命が短くなる記憶媒体に対してデータを書き込むストレージ装置による書き換え方法であって、
記憶媒体に記憶されているデータが共有されている数を表す共有数を取得し、
前記共有数に基づいて、記憶媒体に記憶されているデータを、使用寿命の異なる他の記憶領域に書き換える、
書き換え方法。
【００７０】
（付記１０−１）
付記１０に記載の書き換え方法であって、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも使用寿命の短い他の記憶領域に書き換える、
書き換え方法。
【００７１】
（付記１０−２）
付記１０又は１０−１に書き換え方法であって、
さらに、記憶媒体に形成された記憶領域毎の書き込み回数を取得し、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶領域よりも前記書き込み回数が多い他の記憶領域に書き換える、
書き換え方法。
【００７２】
（付記１０−３）
付記１０−１に記載の書き換え方法であって、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも使用寿命の短い他の記憶媒体に書き換える、
書き換え方法。
【００７３】
（付記１０−４）
付記１０−３に記載の書き換え方法であって、
予め設定された基準により前記共有数が多いと判断されたデータを、当該データが記憶されている記憶媒体よりも書き換え可能回数が少なく設定された他の記憶媒体に書き換える、
書き換え方法。
【００７４】
なお、上述したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されている。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【００７５】
以上、上記実施形態等を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることができる。
【符号の説明】
【００７６】
１０  ストレージ装置
１１  データ書き込み部
１２  重複回数記録部
１３  重複回数取得部
１４  データ再配置開始部
１５  スケジューラ
２０  フラッシュメモリ
２１  データ書き込み部
２２  書き込み回数記録処理部
２３  書き込み回数取得部
２４  データ再配置部
２５  アドレス変換部
２６  アドレス変換取得部
２７  書き込み回数記録部
２８  データ記憶部
１００  ストレージ装置
１０１  共有数取得部
１０２  書き換え部
１１０  記憶媒体
【図１】
0006805501.tif 000002
【図２】
0006805501.tif 000003
【図３】
0006805501.tif 000004
【図４】
0006805501.tif 000005
【図５】
0006805501.tif 000006
【図６】
0006805501.tif 000007
【図７】
0006805501.tif 000008
【図８】
0006805501.tif 000009