(57)【要約】【課題】ログ形式でデータを記憶する場合に冗長なデータの記憶を抑える。【解決手段】キャッシュテーブルを有する情報処理装置が、指定されたアドレスのユーザデータを記録媒体から読み込み、読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して読み込んだユーザデータとし、読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定されたアドレスを前記キャッシュテーブルのアドレス領域に書き込み、指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分データを得て、得た差分データを前記ディスクに書き込む。【選択図】図１
2010238107.tif 000002
【特許請求の範囲】
【請求項１】
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルを有する情報処理装置に、
指定されたアドレスのユーザデータを記録媒体から読み込む読み込み手順、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手順、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定されたアドレスを前記キャッシュテーブルのアドレス領域に書き込むキャッシュ書き込み手順、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分データを得る差分手順、
得た差分データを前記ディスクに書き込む書き込み手順、
を実行させるためのデータ記憶プログラム。
【請求項２】
前記情報処理装置に、
読み込んだユーザデータが前記差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを前記ディスクに書き込むガベージコレクション手順、
を更に実行させるための請求項1記載のデータ記憶プログラム。
【請求項３】
前記閾値はページサイズまたはセクタサイズである、請求項１または２記載のデータ記憶プログラム。
【請求項４】
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルと、
指定されたアドレスのユーザデータをディスクから読み込む読み込み手段と、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手段、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定された論理アドレスを前記キャッシュテーブルの論理アドレス領域に書き込むキャッシュ書き込み手段と、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分を圧縮して前記差分データを得る差分圧縮手段と、
得た差分データを前記ディスクに書き込む書き込み手段と、
を有する情報処理装置。
【請求項５】
読み込んだユーザデータが前記差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを前記ディスクに書き込むことを特徴とするガベージコレクション手段、
を更に有する請求項４記載の情報処理装置。
【請求項６】
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルを有する情報処理装置が、
指定されたアドレスのユーザデータを記録媒体から読み込む読み込み手順、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手順、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定されたアドレスを前記キャッシュテーブルのアドレス領域に書き込むキャッシュ書き込み手順、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分データを得る差分手順、
得た差分データを前記ディスクに書き込む書き込み手順、
を実行するデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本件は、情報処理装置によってデータを記憶する技術に関する。
【背景技術】
【０００２】
情報処理装置が、ストレージデバイスに記憶されているデータを更新する場合、アドレスによって当該データを特定し、当該アドレスのデータを新たなデータに書き直すのが一般的である。
【０００３】
なお、データベースを管理する情報処理装置は、データベースを更新する際、元データとは別に更新の内容をログとして順次追記するといったログ形式の記憶処理を採用するものもある。これにより、例えばデータベースに障害が生じた場合に、元データとログとに基づいて更新後のデータの復元が可能になる。
【０００４】
また、関連技術としては、下記の文献に開示の技術が挙げられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−０６２７５９号公報
【特許文献２】特開２００８−２０４２８７号公報
【特許文献３】特開平０９−３３０１８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置は、ストレージデバイスにアクセスする場合、所定単位でアクセスする。例えば、ディスク状のストレージデバイスに対して情報処理装置は、最小記録単位であるセクタ毎に読み取りや書き込みを行う。
【０００７】
また、情報処理装置は、採用するＯＳ(Operating System)の仕様によっては、複数のセクタをまとめたクラスタ単位や、ページサイズ(典型的には4KB)単位で読み書きを行う。
【０００８】
即ち、情報処理装置は、ストレージデバイスやＯＳの仕様によって決まる読み書き単位で、データの読み出しや書き込みを行う。このため、例えばページサイズを読み書き単位としたＯＳを用いて、このページサイズよりも小さい新データを書き込む場合、情報処理装置は、旧データをページサイズ単位でメモリ上に読み出す。そして情報処理装置は、メモリ上で旧データの一部を新データに変更し、ページサイズ単位でデータをストレージデバイスに書き込むといった一連の処理、所謂read-modify-writeを行う。
【０００９】
従って、ページサイズを読み書き単位とするＯＳを用いた情報処理装置が、ページサイズよりも小さなサイズのデータをログ形式でストレージデバイスに記憶する場合、read-modify-writeを行ってログを追記することになる。
【００１０】
即ち、ログ形式の記憶処理では、新規のデータが読み書き単位より小さなサイズであった場合でも、読み書き単位のログが追加されるので、新規のデータ以外にも冗長なデータの書き込みが行なわれることになるという問題があった。このため、冗長なデータが無駄に記憶領域を占有してしまい、ストレージデバイスの利用効率が悪化する。また、冗長なデータを書き込む時間が余分に必要になってしまう。
【００１１】
そこで、開示の情報処理装置は、ログ形式でデータを記憶する場合に冗長なデータの記憶を抑える技術を提供する。
【課題を解決するための手段】
【００１２】
前記課題を解決するため、本件の情報処理装置は、
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルと、
指定されたアドレスのユーザデータをディスクから読み込む読み込み手段と、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手段、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定された論理アドレスを前記キャッシュテーブルの論理アドレス領域に書き込むキャッシュ書き込み手段と、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分を圧縮して前記差分データを得る差分圧縮手段と、
得た差分データを前記ディスクに書き込む書き込み手段と、を有する。
【発明の効果】
【００１３】
開示の情報処理装置は、ログ形式でデータを記憶する場合に冗長なデータの記憶を抑える技術を提供できる。
【図面の簡単な説明】
【００１４】
【図１】実施形態１の情報処理装置の概略図
【図２】ブロックマップテーブルのデータ構造を示す図
【図３】キャッシュテーブルのデータ構造を示す図
【図４】ログのデータ構造を示す図
【図５】ログに付加するヘッダの説明図
【図６】情報処理装置によるデータの読み込みの説明図
【図７】情報処理装置によるデータの書き込みの説明図
【図８】情報処理装置によるガベージコレクションの説明図
【図９】本実施形態としての情報処理装置の概略図
【図１０】ＳＳＤの書き込み方式の説明図
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について説明する。以下の実施の形態の構成は例示であり、本発明は実施の形態の構成に限定されない。
【００１６】
〈実施形態１〉
図１は、実施形態１の情報処理装置の概略図である。
【００１７】
本形態の情報処理装置１０は、アプリケーション部１や、ストレージ制御部２、ストレージデバイス３を備えている。
【００１８】
アプリケーション部１は、ストレージデバイス３からのユーザデータの読み出しや、ストレージデバイス３へのユーザデータの読み出しを伴う処理を行う。例えば、アプリケーション部１は、文章の作成、表計算、データベースの運用、画像表示などの処理を行い、この処理に伴い文章、表、画像といったデータの読み書きをストレージデバイス３に対して指示する。なお、本例のアプリケーション部１は、４ｋＢのページサイズを読み書き単
位としてデータの読み書きを要求する。
【００１９】
ストレージデバイス３は、記憶媒体を備え、当該記憶媒体へデータを書き込んで記憶したり、当該記憶媒体に記憶したデータを読み出したりする。ストレージデバイス３としては、例えば、ＨＤＤ［Hard Disk Drive］、ＢＤ［Blue-ray Disk］ドライブ、ＤＶＤ［Digital Versatile Disk］ドライブ、ＣＤ［Compact Disk］ドライブ、メモリーカード装置がある。また、記憶媒体としては、例えば、不揮発性半導体メモリ（フラッシュメモリ）、ハードディスク、ＢＤ、ＤＶＤ、ＣＤ、メモリーカード、及び、フレキシブルディスクがある。以上に例示した記録媒体は、ストレージデバイス３に対して着脱自在であってもよいし、ストレージデバイス３内に固定的に装着されたものであってもよい。なお本形態における記憶媒体は、コンピュータ可読媒体である。
【００２０】
ストレージ制御部２は、アプリケーション部からの要求に基づき、ストレージデバイス３に対するデータの読み書きの制御を行う。本例のストレージ制御部２は、ログ形式でユーザデータをストレージデバイスに記憶させる。
【００２１】
即ち、データを更新する場合でも逐次ログが書き込まれ、書き込まれる毎にディスクの空きに応じて当該ログの書き込まれるアドレスが決まる。
【００２２】
一方、アプリケーション部１は、ログ形式ではなく、例えばデータを更新する場合、旧データと同じアドレスを指定して新データを上書きさせる一般的な手順で書き込みを要求する。
【００２３】
このため、ストレージ制御部２は、アプリケーション部１がユーザデータの記憶先として指定する論理的なアドレスと、実際にユーザデータがログとして書き込まれるディスク上のアドレスとの対応関係をブロックマップテーブルに記憶する。そして、ストレージ制御部２は、ブロックマップテーブルに基づいてユーザデータの読み書きを行う。
【００２４】
ストレージ制御部２は、Ｉ／Ｏインタフェース処理部２１、読み込み処理部２２、データ伸長処理部２３、差分伸長処理部２４、ブロックマップテーブル処理部２５、キャッシュメモリ２６、ディスクＩ／Ｏインタフェース２７を備えている。また、ストレージ制御部２は、書き込み処理部２８や、データ圧縮処理部２９、差分圧縮処理部３０、ＧＣ（garbage collection）処理部３１、メモリ３２を備えている。
【００２５】
Ｉ／Ｏインタフェース処理部２１は、アプリケーション部１とのインタフェースであり、アプリケーション部１から受信した読込み要求を読み込み処理部２２に送る。そして、Ｉ／Ｏインタフェース処理部２１は、読込み要求に応じて読み込んだデータを読み込み処理部２２から受信すると、当該データをアプリケーション部１へ送る。また、Ｉ／Ｏインタフェース処理部２１は、アプリケーション部１から受信した書き込み要求を書き込み部２８へ送る。ここで、読込み要求は、読込みを示すコードと、読み込み位置を指定するアドレスを含む信号である。また、書き込み要求は、書き込みを示すコードと、書き込みを行うアドレス、書き込むユーザデータを含む信号である。
【００２６】
メモリ３２は、ブロックマップテーブル処理部２５によって記憶されるブロックマップテーブルを有している。図２はブロックマップテーブルのデータ構造を示す図である。
【００２７】
図２に示すブロックマップテーブルは、ログ形式で逐次的に書き込まれたデータのディスク上での記憶位置やデータの種別を記憶する。即ち、ユーザデータがログ形式で書き込まれるので、ブロックマップテーブルは、アプリケーション部１がユーザデータの記憶先として指定する論理的なアドレスと、実際にユーザデータがログとして書き込まれるディ
スク上のアドレスとの対応関係を記憶する。
【００２８】
図２のブロックマップテーブルは、例えばＬＢＡ（Logical Block Addressing）及びそのデータ長、ディスクＬＢＡ及びそのデータ長、種別といった項目を有している。ＬＢＡは、アプリケーション部１で指定されるアドレス、ディスクＬＢＡは指定されたデータのディスク上のアドレス、種別はログとして記憶されるデータが圧縮ログか差分ログかを示している。
【００２９】
キャッシュメモリ２６は、読み込み処理部２２によって記憶されるキャッシュテーブルを有する。図３はキャッシュテーブルのデータ構造を示す図である。
【００３０】
図３に示すキャッシュテーブルは、読み取りを行ったユーザデータとそのアドレスを対応付けて記憶し、読み取りが行われたデータであるか否か、即ちリード・モディファイ・ライトされるデータか否かの判断に用いられる。図３のキャッシュテーブルは、例えばＬＢＡ及びそのデータ長、ディスクＬＢＡ、ユーザデータといった項目を有している。
【００３１】
データ圧縮処理部２９は、書き込み処理部２８に送られた書き込み要求のユーザデータを圧縮する。データ圧縮処理部２９は、圧縮アルゴリズムとして、LZ77やDeflateなど、
周知のアルゴリズムを採用している。この圧縮アルゴリズムは、可逆圧縮を行うものであれば如何なるアルゴリズムであっても良い。
【００３２】
差分圧縮処理部３０は、書き込み処理部２８に送られた書き込み要求のユーザデータがリード・モディファイ・ライトされる場合に、読み出したデータと書き込むデータの差分をとり、当該差分を書き込む。これにより書き込まれるデータが圧縮される。なお、差分圧縮処理部３０は、書き込み要求のユーザデータの大きさが閾値以下、即ちページサイズ以下で、且つ指定されたアドレスが前記キャッシュテーブル上にあるならば、当該ユーザデータがリード・モディファイ・ライトされるデータと判断する。
【００３３】
書き込み処理部２８は、データ圧縮処理部２９で圧縮したデータや、差分圧縮処理部３０で差分圧縮したデータをディスクＩ／Ｏインタフェース２７を介してストレージデバイス３に書き込む書き込み手段である。また、書き込み処理部２８は、ストレージデバイス３上のデータの消去も行う。
【００３４】
書き込み処理部２８は、圧縮データや差分データをログ形式で書き込む。ここで書き込み処理部２８は、ユーザデータにヘッダを付加してログとする。図４は、ログのデータ構造を示す。
【００３５】
図５は、ログに付加するヘッダの説明図である。図５に示すヘッダは、種別、データ長、アルゴリズム、圧縮パラメータ、元データ位置、ＬＢＡ、チェックサム等を備えている。図５において、種別は、差分ログか、差分でないログかの区別を示す。なお、本例において差分でないログは、圧縮して記憶されるので圧縮ログと示す。
【００３６】
データ長は、ヘッダとユーザデータとを含むログのサイズを示す。アルゴリズムは、圧縮或いは差分処理する際のアルゴリズムの種類を示す。圧縮パラメータは、圧縮を行うか否かを判別するための閾値など、圧縮に用いる情報を示す。
【００３７】
元データ位置は、差分ログの差分をとる元となったデータのアドレスを示す。ＬＢＡは、アプリケーション部１によって指定されるアドレスを示す。チェックサムは、データの誤りを検出するためのコードである。なお、チェックサムに限らず、他の誤り訂正符号を用いても良い。
【００３８】
読み込み処理部２２は、読み込み要求によって指定されたアドレスのユーザデータをディスクＩ／Ｏインタフェース２７を介してストレージデバイス３から読み込む読み込み手段である。また、読み込み処理部２２は、キャッシュメモリ２６のキャッシュテーブルに読み込んだデータをキャッシュするキャッシュ書き込み手段としてのキャッシュ管理部２２Ａを備えている。キャッシュ管理部２２Ａは、読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータをキャッシュテーブルのユーザデータ領域に書き込み、指定されたアドレスをキャッシュテーブルのＬＢＡ領域に書き込む。
【００３９】
データ伸長処理部２３は、データ圧縮処理部２９で圧縮して記録された圧縮データを読み込み処理部２２がストレージデバイス３から読み込んだ際に、当該圧縮データを伸長処理して圧縮前の状態に戻す。ここで伸長処理は、データ圧縮処理部２９で採用した圧縮アルゴリズムに応じた処理、例えば圧縮と逆の手順で行えば良い。圧縮アルゴリズムは、LZ77やDeflateなど、周知のアルゴリズムであり、伸長の手順も周知であるので、詳細な説
明は省略する。
【００４０】
差分伸長処理部２４は、読み込み処理部２２で読み出したデータが差分データであった場合、差分をとった元データに当該差分データを加えることにより差分データを伸長してユーザデータとし、読み込み処理部２２へ送る。
【００４１】
ブロックマップテーブル処理部２５は、書き込み処理部２８で書き込んだユーザデータの記憶位置と種別をブロックマップテーブルに記憶させる。本例のブロックマップテーブルは、記憶位置としてアプリケーション部が指定するＬＢＡと、ディスクＬＢＡとを記憶している。
【００４２】
ＧＣ処理部３１は、ブロックマップテーブルに基づいて不要なデータを削除するなどのＧＣ処理を行う。例えば 、ＧＣ（garbage collection）処理部３１は、定期的にブロッ
クマップテーブルを検索し、差分データの参照元とならなくなったデータを検出して削除する。
【００４３】
本例の情報処理装置１０の構成要素のうち、情報を処理する要素は、特定の動作を行う基本的な回路を組み合わせて各々の機能を実現したハードウェアである。また、これら情報を処理する要素の一部或いは全部は、汎用のプロセッサがソフトウェアとしてのプログラムを実行することによって各々の機能を実現するものでも良い。
【００４４】
情報処理装置１０において、アプリケーション部１、Ｉ／Ｏインタフェース処理部２１、読み込み処理部２２、データ伸長処理部２３、差分伸長処理部２４、ブロックマップテーブル処理部２５は、前記情報を処理する要素である。更に、ディスクＩ／Ｏインタフェース部２７、書き込み処理部２８、データ圧縮処理部２９、差分圧縮処理部３０、ＧＣ処理部３１は、前記情報を処理する要素である。
【００４５】
これら情報を処理する要素であるハードウェアは、例えば、ＦＰＧＡ［Field Programmable Gate Array］、ＡＳＩＣ［Application Specific Integrated Circuit］、ＬＳＩ［Large Scale Integration］といった基本的な回路を備える。また、当該ハードウェアは
、ＩＣ［Integrated Circuit］、ゲートアレイ、論理回路、信号処理回路、アナログ回路といった基本的な回路を備えても良い。
【００４６】
論理回路としては、例えば、ＡＮＤ、ＯＲ、ＮＯＴ、ＮＡＮＤ、ＮＯＲ、フリップフロップ、カウンタ回路がある。信号処理回路には、信号値に対し、例えば、加算、乗算、除算、反転、積和演算、微分、積分を実行する回路が、含まれていてもよい。アナログ回路
には、例えば、信号値に対して、増幅、加算、乗算、微分、積分を実行する回路が、含まれていてもよい。
【００４７】
図６は、上記構成の情報処理装置１０によるデータの読み込みの説明図である。
アプリケーション部１から読み込み要求を受けると、読み込み処理部２２は読み込み処理を開始する（Ｓ１）。
【００４８】
読み込み処理部２２は、ブロックマップテーブルを検索し、読み込み要求で指定されたＬＢＡと対応するディスクＬＢＡを求め（Ｓ２）、求めたディスクＬＢＡからログデータを読み込む（Ｓ３）。
【００４９】
また、読み込み処理部２２は、ブロックマップテーブルの種別を参照して読み込んだログが差分ログが否かを判定する（Ｓ４）。読み込んだデータが差分ログであった場合（Ｓ４，Ｙｅｓ）、差分ログのヘッダを参照して元データの記憶されている位置、本例ではアドレスを求める（Ｓ５）。そして読み込み処理部２２は、Ｓ３の手順に戻り、元データを読み込み、差分ログか否かを判定する（Ｓ４）。ここで、差分ログであれば更にＳ５の手順へ進み、差分の元となった圧縮ログが得られるまでＳ５→Ｓ３→Ｓ４の手順を繰り返す。
【００５０】
読み込んだユーザデータが圧縮ログであった場合（Ｓ４，Ｎｏ）、データ伸長処理部２３が、圧縮ログを伸長処理して非圧縮のユーザデータとする（Ｓ６）。
【００５１】
差分伸長処理部２４は、読み出したログに差分ログが含まれているか否かを判定する（Ｓ７）。差分ログが含まれている場合（Ｓ７，Ｙｓｅ）、差分伸長処理部２４は、差分ログを伸長処理、即ち差分元のユーザデータに差分ログの差分データを加えて更新後のユーザデータを得る（Ｓ８）。
【００５２】
読み込み処理部２２のキャッシュ管理部２２Ａは、Ｓ６又はＳ８で伸長したユーザデータのサイズが所定の閾値以下か否かを判定する。本例では、ページサイズを閾値としている。そして、本例では、最小の読み書き単位がページサイズであるため、キャッシュ管理部２２Ａは、読み込んだデータが、ページサイズと同じか（Ｓ９，Ｙｅｓ）、ページサイズを越えたか（Ｓ９，Ｎｏ）を判定する。
【００５３】
ユーザデータが閾値以下であった場合（Ｓ９，Ｙｅｓ）、キャッシュ管理部２２Ａが当該ユーザデータ、ＬＢＡ、ディスクＬＢＡをキャッシュテーブルに記憶させる（Ｓ１０)
。ここで、キャッシュ管理部２２Ａは、キャッシュテーブルが満杯であれば（Ｓ１１，Ｙｅｓ）古いキャッシュデータを破棄する（Ｓ１２）。
【００５４】
そして、読み込み処理部２２は、読み込んだユーザデータをアプリケーション部１に返信し（Ｓ１３）、読込み処理を終了する（Ｓ１４）。
【００５５】
図７は、情報処理装置１０によるデータの書き込みの説明図である。
【００５６】
アプリケーション部１から書き込み要求を受けると、書き込み処理部２８は書き込み処理を開始する（Ｓ２１）。
【００５７】
書き込み処理部２８は、書き込み要求されたユーザデータのサイズが閾値以下か否かを判定する（Ｓ２２）。ここで、ユーザデータが閾値以下の場合（Ｓ２２，Ｙｅｓ）、書き込み処理部２８は、キャッシュテーブルを検索し、書き込み要求されたユーザデータがキャッシュテーブルに保持されているか否かを判定する（Ｓ２４)。
【００５８】
Ｓ２４でユーザデータがキャッシュテーブルに保持されていた場合（Ｓ２４，Ｙｅｓ）、差分圧縮処理部３０は、キャッシュテーブルに保持されているユーザデータを元データとして、当該元データと書き込み要求されたユーザデータとの差分を求める（Ｓ２５）。そして差分圧縮処理部３０は、元データの位置や、差分ログであることを示す種別、データ長、差分アルゴリズム、チェックサムをヘッダとし、求めた差分に付加して差分ログを作成する（Ｓ２６）。
【００５９】
一方、Ｓ２２でユーザデータのサイズが閾値以下であった場合や（Ｓ２２，Ｎｏ）、Ｓ２４でユーザデータがキャッシュテーブルに保持されていない場合（Ｓ２４，Ｎｏ）、データ圧縮処理部２９が当該ユーザデータを圧縮処理する（Ｓ２７）。そしてデータ圧縮処理部２９は、圧縮ログであることを示す種別や、データ長、圧縮アルゴリズムを示す情報、圧縮パラメータ、チェックサムをヘッダとして、圧縮した前記ユーザデータに付加して圧縮ログを作成する（Ｓ２８）。
【００６０】
書き込み処理部２８は、Ｓ２６で作成した差分ログ又はＳ２８で作成した圧縮ログをディスクＩ／Ｏインタフェース部２７を介してストレージデバイス３に記憶させる（Ｓ２９）。なお、差分ログが閾値以下であった場合、書き込み処理部２８は、差分ログを一旦、メモリ上に書き込み、差分ログが閾値に達した場合に、まとめてストレージデバイスに欠き込んでも良い。例えばストレージデバイス３の読み書き単位が５１２バイトの場合、閾値を４００バイトとし、メモリ上に蓄積した差分ログが４００バイトを超えた場合に、書き込み処理部２８がストレージデバイス３に書き込みを行っても良い。
【００６１】
ブロックマップテーブル処理部２５は、Ｓ２９でログを書き込んだディスクＬＢＡと当該ログの書き込み要求時にアプリケーション部が指定したＬＢＡと、ログの種別とを対応つけてブロックマップテーブルに記憶させる（Ｓ３０）。
【００６２】
図８は、情報処理装置１０によるガベージコレクションの説明図である 。
【００６３】
ＧＣ処理部３１は、ユーザによる指示を受けた場合や、ユーザデータの書き込みを行った後、所定のタイミング、或いは定期的にＧＣ処理を開始する（Ｓ４１）。まず、ＧＣ処理部３１は、ＧＣが必要か否か、即ちＧＣを行う条件を満たしているか否かを判定する。ＧＣを行う条件としては、例えば、ストレージデバイスの空き容量が少なくなった場合や、前回のＧＣから所定期間以上経過した場合、ログの書き込み回数が所定数に達した場合、ＣＰＵの稼働率が所定値以下の場合などである。
【００６４】
ＧＣが必要と判定した場合（Ｓ４１，Ｙｅｓ）、ＧＣ処理部３１は、読み込み処理部２２にＧＣ開始位置からログを読み込ませる（Ｓ４２）。本例では、書き込み処理部２８が、ディスクＬＢＡの順にストレージデバイス３への書き込みを行う。このため、ストレージデバイスの記憶領域のうち、順番に書き込みを始めたディスクＬＢＡから最新の書き込みを行ったディスクＬＢＡまでが使用領域である。ＧＣ処理部３１はディスクＬＢＡの小さい順に処理を行うので、使用領域のディスクＬＢＡのうち、最も小さいディスクＬＢＡが最初のＧＣ開始位置となる。なお、ＧＣ処理の順序及びＧＣ開始位置は、ディスク上のログを順次処理できれば、どのように設定しても良い。
【００６５】
ＧＣ処理部３１は、読み込んだログのヘッダの情報と、ブロックマップテーブルの情報とを照合し（Ｓ４３）、一致しているか否かを判定する（Ｓ４４）。本例のＧＣ処理部３１は、ディスク上から読み込んだログのヘッダに記録されているＬＢＡ及びそのデータ長、並びに当該ログを読み出したディスクＬＢＡと、ブロックマップテーブル上の最新の情報とを比較する。これらの情報が一致すれば、ＧＣ処理部３１は、読み込んだデータが最
新で、必要なデータであると判定する。
【００６６】
ここで、読み込んだデータが必要なデータであった場合（Ｓ４４，Ｙｅｓ）、このまま次のログのＧＣ処理に移っても良いが、本例のＧＣ処理部３１はデフラグメンテーションのため読み込んだデータを新たな領域に配置しなおす（Ｓ４５−Ｓ４９）。即ち本例のＧＣ処理部３１は所謂コピーＧＣを行う。
【００６７】
このためＳ４５では、読み込んだログが差分ログか否かを判定し、差分ログであれば元データを読み込む（Ｓ４６）。更にＳ４６で読み込んだログが差分ログか否かを判定し、差分ログでなくなるまで読み込みを繰り返す（Ｓ４６−Ｓ４７）。
【００６８】
Ｓ４６−Ｓ４７で、差分ログでない元データが読み込まれた場合、データ伸長処理部２３が、圧縮ログを伸長処理して非圧縮のユーザデータとする。そして、差分伸長処理部２４が、差分ログを伸長処理、即ち差分元のユーザデータに差分ログの差分データを加えて更新後のユーザデータを得る（Ｓ４８）。
【００６９】
ＧＣ処理部３１は、差分伸長後のユーザデータを読み込み処理部２２から得て、書き込み処理部２８に送り、データ圧縮処理部２９で圧縮してストレージデバイス３に書き込ませる（Ｓ４９）。
【００７０】
また、読み込んだログがＳ４５で差分ログでないと判定された場合（Ｓ４５，Ｎｏ）、ＧＣ処理部３１は、読み込み処理部２２から読み込んだログを得て、書き込み処理部２８に送りストレージデバイス３に書き込ませる（Ｓ４９）。
【００７１】
このＳ４９で新たに書き込みを行った場合、Ｓ４１やＳ４６で読み込んだログが不要になるため、ＧＣ処理部３１は、使用領域の開始位置であるＧＣ開始位置を次へ進める（Ｓ５２）。即ち、ＧＣ開始位置を進めることで、不要になったログが書き込まれている個所は、使用領域から外れ、新たに書込みが可能な未使用領域となる。なお、ストレージデバイス３の使用領域をＧＣ開始位置から最新の書込み位置までとするのではなく、例えばログをランダムに記憶させる方式を採用した場合、ＧＣ開始位置を進める際に不要となったログを書込み処理部２８が削除すれば良い。
一方、Ｓ４４で、読み込んだログの情報とブロックマップテーブルの情報とが一致しない場合（Ｓ４４，Ｎｏ）、ＧＣ処理部３１は、読み込んだログが差分ログか否かを判定する（Ｓ５０）。Ｓ４４で、この両情報が一致しないケースには、古くて不要なデータであるためブロックマップテーブルに登録されていない場合と、Ｓ４１で読み出した差分ログから更に差分ログが作られ、ブロックマップテーブルの情報が最新の差分ログの情報となっている場合がある。即ち、更に差分が作られた差分ログは、最新の差分ログの差分元として必要なデータの可能性がある。従ってＳ５０で差分データでないと判定した場合は（Ｓ５０，Ｎｏ）、不要なデータであるので、書き込み処理を行わずにＳ５１へ移行し、ＧＣ開始位置を進める。
【００７２】
一方、Ｓ５０で差分ログと判定した場合（Ｓ５０，Ｙｅｓ）、ＧＣ処理部３１は、Ｓ４２で読み出した差分ログのヘッダからＬＢＡを読み出し、当該ＬＢＡと一致する最新のログをブロックマップテーブルから求める。即ち、ＧＣ処理部３１は、当該ＬＢＡと対応するディスクＬＢＡをブロックマップテーブルから求め、このディスクＬＢＡに記録されている最新の差分ログを読み込み処理部２２に読み込ませる（Ｓ５２）。ＧＣ処理部３１は、Ｓ５２で読み込んだ差分データのヘッダに書き込まれた元データ位置がＳ４２で読み込んだ差分ログの位置（ディスクＬＢＡ）と一致していれば（Ｓ５３，Ｙｅｓ）、Ｓ４２及びＳ５２で読み込んだログが必要と判断する。即ちＧＣ処理部３１は、Ｓ４２及びＳ５２で読み込んだログを差分伸長処理部２４で伸長処理させ、伸長したデータを書き込み処理
部２８に送り、データ圧縮処理部２９で圧縮処理して圧縮ログとしてストレージデバイス３に書き込ませる（Ｓ４９）。
【００７３】
また、ＧＣ処理部３１は、Ｓ５３で両位置が一致していなければ（Ｓ５３，Ｎｏ）、Ｓ５２で読み出したログが差分データか否かを判定（Ｓ５４）する。差分データであれば（Ｓ５４，Ｙｅｓ）、Ｓ４２で読み込んだ差分ログとＳ５２で読み込んだ差分ログとの間に、更に差分ログが存在する可能性があるので、ＧＣ処理部３１は、Ｓ５２で読み込んだログのヘッダにおける元データ位置で示されるログを読み込み処理部２２によって読み込ませる（Ｓ５５）。ＧＣ処理部３１は、Ｓ５３で両位置が一致するまでＳ５３からＳ５５を繰り返し、一致すれば（Ｓ５３，Ｙｅｓ）、前述のようにＳ４２、Ｓ５２及びＳ５５で読み込んだログを伸長処理させ、圧縮ログとしてストレージデバイス３に書き込ませる（Ｓ４９）。なお、Ｓ５２又はＳ５５で読み込んだログが、差分データで無かった場合（Ｓ５４，Ｎｏ）、即ち、ブロックマップテーブルから求めた最新の差分ログの元データとしてＳ４２で読み込んだログは必要無いので、書き込みを行わずにＳ５１へ移行してＧＣ開始位置を次へ進める。
【００７４】
ＧＣ処理部３１は、ＧＣ開始位置を進めてＳ４１からＳ５５の処理を繰り返し、ＧＣの必要が無くなった場合に（Ｓ４１，Ｎｏ）、処理を終了する。
【００７５】
以上のように、本実施形態の情報処理装置は、ログ形式で書き込むデータが所定の閾値よりも小さい場合、差分データとして書き込むので、リード・モディファイ・ライトする場合と比べて記憶領域が少なくてすむ。このため本実施形態の情報処理装置は、ストレージデバイスの利用効率を向上させることができる。
【００７６】
また、本実施形態の情報処理装置は、ログ形式で書き込むデータが所定の閾値よりも小さい場合、差分データとして書き込むので、リード・モディファイ・ライトする場合と比べて書き込み時間を短縮することができる。
【００７７】
更に、本実施形態の情報処理装置は、読み込んだユーザデータが前記差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを前記ディスクに書き込んだ後に、前記ディスクをガベージコレクションする。これにより、本実施形態の情報処理装置は、ガベージコレクションと共にデフラグメンテーションを行うことができる。
【００７８】
また、本実施形態の情報処理装置は、前記閾値としてページサイズまたはセクタサイズを用いることにより、ＯＳやストレージデバイスによって読み書き単位に制限を受ける環境であっても、閾値以下のデータを差分ログとして書き込むことができる。
【００７９】
〈実施形態２〉
図９は、本実施形態２としての情報処理装置の概略図である。本実施形態２の情報処理装置１０は、ユーザ端末１からネットワークを介してユーザデータの読み書きの要求を受ける所謂データサーバである。本実施形態２において、前述の実施形態１と同じ要素は、同符号を付すなどにより再度の説明が省略される。
【００８０】
ユーザ端末１は、パーソナルコンピュータやワークステーションといったコンピュータであり、ファイやワイヤーやｉＳＣＳＩといったネットワークを介してデータサーバ１０と接続している。
【００８１】
データサーバ１０は、ストレージデバイス３と、当該ストレージデバイスの制御装置２を備えている。
【００８２】
制御装置２は、ＣＣＵ（communication control unit）２１や、演算処理部４０、記憶装置５１、ＤＡ（ディスクアダプタ）２７を備えている。
【００８３】
ＣＣＵ２１は、ユーザ端末１との通信を制御するインタフェースであり、ユーザ端末１から受信した読み込み要求及び書き込み要求を演算処理部４０に送る。そして、Ｉ／Ｏインタフェース処理部２１は、読込み要求に応じて読み込んだユーザデータを演算処理部４０から受信してユーザ端末１へ送信する。
【００８４】
記憶部５１には、オペレーティングシステム（ＯＳ）やファームウェア（制御プログラム等）がインストールされている。
【００８５】
メモリ３２，２６は、ＣＰＵ４１等から読み書き可能なメインメモリであり、ブロックマップテーブルを記憶するメモリ３２と、キャッシュメモリ２６に相当する。
【００８６】
ＤＡ２７は、前述のディスクＩ／Ｏインタフェースに相当する。ＤＡ２７は、バスを介してＣＰＵ４１やメモリ３２，２６と接続し、ＣＰＵ４１からの読み書き要求を受信する。そしてＤＡ２７は、読み書き要求に応じてストレージデバイス３からの読み込み、書き込み要求に応じてストレージデバイス３への書き込みを行う。
【００８７】
演算処理部４０は、ＣＰＵ４１やメインメモリを備え、前記ＯＳやファームウェアを記憶部５１から適宜読み出して実行し、ＣＣＵ２１、ディスクアダプタ２７から入力された情報、及び記憶部５１から読み出した情報を演算処理する。本例の演算処理部４０は、ファームウェアに従う演算処理により、読み込み処理部２２、データ伸長処理部２３、差分伸長処理部２４、ブロックマップテーブル処理部２５としても機能する。更に、演算処理部４０は、書き込み処理部２８、データ圧縮処理部２９、差分圧縮処理部３０、ＧＣ処理部３１としても機能する。
【００８８】
ユーザ端末１からＣＣＵ２１を介して読み取り要求を受けると、演算処理部４０は、読み込み処理部２２、データ伸長部２３、差分伸長処理部２４、ブロックマップテーブル処理部２５として図６と同様に読み込みを行う。即ち、読み込み処理部２２等としてＤＡ２７を介してストレージデバイス３からユーザデータを読み込み、読み込んだデータをＣＣＵ２１を介してユーザ端末１へ送信する。
【００８９】
また、ユーザ端末１からＣＣＵ２１を介して書き込み要求を受けると、演算処理部４０は、書き込み処理部２８、データ圧縮処理部２９、差分圧縮処理部３０、ブロックマップテーブル処理部２５等として図７と同様に書き込みを行う。即ち、書き込み処理部２８としてＤＡ２７を介してストレージデバイス３へユーザデータを書き込む。
【００９０】
また、演算処理部４０は、ＧＣ処理部３１、ブロックマップテーブル処理部２５等として図８と同様にＧＣ処理を行う。
【００９１】
上述のようにデータサーバとした本実施形態２の構成であっても、実施形態１と同様の効果を奏する。即ち、データサーバ１０は、ログ形式で書き込むデータが所定の閾値よりも小さい場合、差分データとして書き込むので、リード・モディファイ・ライトする場合と比べて記憶領域が少なくてすみ、ストレージデバイスの利用効率を向上させることができる。
【００９２】
なお、ＤＡ２７がプロセッサを備え、ファームウェアに従う演算処理により、前述の演算処理部４０の代わりに、読み込み処理部２２、データ伸長処理部２３、差分伸長処理部２４、ブロックマップテーブル処理部２５として機能する構成でも良い。更に、ＤＡ２７
は、書き込み処理部２８、データ圧縮処理部２９、差分圧縮処理部３０、ＧＣ処理部３１として機能しても良い。
【００９３】
〈実施形態３〉
前述の実施形態１において、ストレージデバイス３は、ＳＳＤ（Solid State Drive）
であっても良い。なお、ＳＳＤを用いた以外の構成は、前述の実施形態１と同じであるので、同一の要素には同符号を付すなどして再度の説明は省略する。
【００９４】
図１０は、ＳＳＤの書き込み方式の説明図である。ＳＳＤでは、データを管理するための最小単位として「ページ」と「ブロック」という概念がある。ＳＳＤにファイルを記録する場合、例えば8KBのページ６１を最小単位として、各ファイルに領域が割り当てられ
る。一方、データを消去する場合は、ページ６１を64個ずつ集約した、512KBのブロック
６２ごとに処理が行われる。
【００９５】
また、ＳＳＤにおいて、読み出したデータを同じアドレスに書き戻すように一般的な方式でリード・モディファイ・ライトを行う場合、更新するデータを読み出し、読み出したデータを変更し、ＳＳＤ上の元データを消去して、変更後のデータを書き戻す。即ち、データを単に上書きするのではなく、データを消去してから書き戻す必要がある。従って、データを消去する最少単位であるブロック単位でリード・モディファイ・ライトする必要があった。
【００９６】
これに対し本実施形態３の情報処理装置１０は、ログ形式でデータを書き込むので、書き込み毎に元データを消去する必要がなく、ページ単位で書き込みを行うことができる。
【００９７】
特に、本実施形態３の情報処理装置１０は、図７と同様に、ページ単位以下の書き込みを行う場合には、差分ログとしてデータを書き込みので、データを記憶する領域が最小限で済む。
【００９８】
このため、本実施形態３の情報処理装置１０は、ストレージデバイスとしてのＳＳＤ３の使用効率を向上させることができる。更に、本実施形態３の情報処理装置１０は、ＳＳＤ３のデータを消去する回数が減らせるので、ＳＳＤ３の寿命を延ばすことができる。
【００９９】
なお、本実施形態３の情報処理装置１０においても、読み込み処理は図６と同様、ＧＣ処理は図８と同様に行うことができる。
【０１００】
更に、前述の実施形態２において、ストレージデバイス３は、ＳＳＤであっても良い。実施形態２のデータサーバ１０が、ストレージデバイス３としてＳＳＤを採用した構成であっても、本実施形態３と同様の効果が得られる。
【０１０１】
〈その他〉
本発明は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
【０１０２】
例えば、前述の実施形態１〜３に関し、さらに以下の付記を開示する。これらの構成であっても上述の実施形態と同様の効果が得られる。また、これらの構成要素は可能な限り組み合わせることができる。
【０１０３】
（付記１）
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルを有する情報処理装置に、
指定されたアドレスのユーザデータを記録媒体から読み込む読み込み手順、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手順、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定されたアドレスを前記キャッシュテーブルのアドレス領域に書き込むキャッシュ書き込み手順、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分データを得る差分手順、
得た差分データを前記ディスクに書き込む書き込み手順、
を実行させるためのデータ記憶プログラム。
【０１０４】
（付記２）
前記情報処理装置に、
読み込んだユーザデータが前記差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを前記ディスクに書き込んだ後に、前記ディスクをガベージコレクションするガベージコレクション手順、
を更に実行させるための付記１記載のデータ記憶プログラム。
【０１０５】
（付記３）
前記閾値はページサイズまたはセクタサイズである、付記１または２記載のデータ記憶プログラム。
【０１０６】
（付記４）
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルと、
指定されたアドレスのユーザデータをディスクから読み込む読み込み手段と、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手段、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定された論理アドレスを前記キャッシュテーブルの論理アドレス領域に書き込むキャッシュ書き込み手段と、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分を圧縮して前記差分データを得る差分圧縮手段と、
得た差分データを前記ディスクに書き込む書き込み手段と、
を有する情報処理装置。
【０１０７】
（付記５）
読み込んだユーザデータが前記差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを前記ディスクに書き込んだ後に、前記ディスクをガベージコレクションするガベージコレクション手段、
を更に有する付記４記載の情報処理装置。
【０１０８】
（付記６）
前記閾値はページサイズまたはセクタサイズである、付記４または５記載の情報処理装置。
【０１０９】
（付記７）
アドレスを格納するアドレス領域と前記アドレスに対応するユーザデータを格納するユーザデータ領域とを有するキャッシュテーブルを有する情報処理装置が、
指定されたアドレスのユーザデータを記録媒体から読み込む読み込み手順、
読み込んだユーザデータが差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを読み込んだユーザデータとする差分伸長手順、
読み込んだユーザデータの大きさが閾値以下ならば、読み込んだユーザデータを前記キャッシュテーブルのユーザデータ領域に書き込み、指定されたアドレスを前記キャッシュテーブルのアドレス領域に書き込むキャッシュ書き込み手順、
指定されたアドレスの更新されたユーザデータの大きさが閾値以下で、かつ、指定されたアドレスが前記キャッシュテーブル上にあるならば、前記指定されたアドレスの更新されたユーザデータと前記キャッシュテーブル上のユーザデータとの差分データを得る差分手順、
得た差分データを前記ディスクに書き込む書き込み手順、
を実行するデータ記憶方法。
【０１１０】
（付記８）
前記情報処理装置に、
読み込んだユーザデータが前記差分データならば、読み込んだ差分データを伸長して、伸長したユーザデータを前記ディスクに書き込んだ後に、前記ディスクをガベージコレクションするガベージコレクション手順、
を更に実行させる付記７記載のデータ記憶方法。
【０１１１】
（付記９）
前記閾値はページサイズまたはセクタサイズである、付記７または８記載のデータ記憶方法。
【図１】
2010238107.tif 000003
【図２】
2010238107.tif 000004
【図３】
2010238107.tif 000005
【図４】
2010238107.tif 000006
【図５】
2010238107.tif 000007
【図６】
2010238107.tif 000008
【図７】
2010238107.tif 000009
【図８】
2010238107.tif 000010
【図９】
2010238107.tif 000011
【図１０】
2010238107.tif 000012