(57)【要約】データのアクセスが所定データ量毎に行われる情報処理装置であって、ホストシステム側から送信されるデータを書き込む際に、送信されるデータが一つのファイルを構成する連続するデータと推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む。
2020129612.tif 000002
【特許請求の範囲】
【請求項１】
データのアクセスが所定データ量毎に行われる情報処理装置であって、
ホストシステム側から送信されるデータを書き込む際に、送信されるデータが一つのファイルを構成する連続するデータと推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む、
情報処理装置。
【請求項２】
ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定する、
請求項１に記載の情報処理装置。
【請求項３】
ホストシステム側から送られるデータのサイズを確認し、所定のサイズのデータ以上であるか否かに基づいて、連続するデータと推定されるか否かを判定する、
請求項１に記載の情報処理装置。
【請求項４】
ホストシステム側からファイルの読み出しが指定される場合に、メタデータに基づいて格納されているデータの先読みを行う、
請求項１に記載の情報処理装置。
【請求項５】
所定データ量は、ページ単位のデータ量である、
請求項１に記載の情報処理装置。
【請求項６】
情報処理装置は、複数ページをブロックとするブロック単位でデータを管理する、
請求項５に記載の情報処理装置。
【請求項７】
情報処理装置は、データが消去されているブロックに対して、データの書き込みを行う、
請求項６に記載の情報処理装置。
【請求項８】
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む、
請求項６に記載の情報処理装置。
【請求項９】
書き込み対象となる各ページに対して、ホストシステム側からのデータとメタデータとが書き込まれる、
請求項８に記載の情報処理装置。
【請求項１０】
ホストシステム側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される、
請求項８に記載の情報処理装置。
【請求項１１】
所定データ量は、セクタ単位のデータ量である、
請求項１に記載の情報処理装置。
【請求項１２】
情報処理装置は、複数セクタをクラスタとするクラスタ単位でデータを管理する、
請求項１１に記載の情報処理装置。
【請求項１３】
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたセクタ情報とを含む、
請求項１１に記載の情報処理装置。
【請求項１４】
書き込み対象となる各セクタに対して、ホストシステム側からのデータとメタデータとが書き込まれる、
請求項１３に記載の情報処理装置。
【請求項１５】
ホストシステム側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される、
請求項１３に記載の情報処理装置。
【請求項１６】
データのアクセスが所定データ量毎に行われる情報処理装置において、ホストシステム側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定する工程、及び、
連続するデータであると推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む工程、
を行う、
情報処理方法。
【請求項１７】
データのアクセスが所定データ量毎に行われる情報処理装置の制御をコンピュータで実行させるプログラムであって、
ホストシステム側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定するステップ、及び、
連続するデータであると推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込むステップ、
を含む処理をコンピュータに実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、情報処理装置、情報処理方法および情報処理プログラムに関する。より詳しくは、データのアクセスが所定データ量毎に行われる情報処理装置、係る情報処理装置における情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
近年、デジタルデータを格納する情報処理装置として、ハードディスクや、フラッシュメモリなどを用いたシリコンディスクといった情報処理装置が広く用いられている。通常、デジタルデータは、ファイルシステムを用いて情報処理装置に格納される。【０００３】
例えば、ハードディスクをフォーマットして所謂ＦＡＴファイルシステムを構築すると、ハードディスク内には、ファイル・アロケーション・テーブル（File Allocation Table）やルートディレクトリ領域が形成される。通常、オペレーティングシステム（ＯＳ）などのホストシステム側は複数セクタから成るクラスタ単位でデータを管理し、ファイルを構成するバイナリデータはセクタ単位で読み書きされる。ルートディレクトリ領域には、ディレクトリエントリとして、ファイル名や属性に加え、格納されるファイルの開始クラスタ番号などの情報が保存される。【０００４】
ホストシステム側は、ディレクトリエントリを参照してファイルの開始クラスタ番号を得、これに基づいてファイル・アロケーション・テーブルにおける開始クラスタ番号のエントリを参照し、次のクラスタ番号を得る。そして、ファイル・アロケーション・テーブルにおける次のクラスタ番号のエントリを参照し、さらに次のクラスタ番号を得る。このような動作を続けて行うことによって、特定のファイルのバイナリデータが格納されているクラスタ番号を特定することができる。【０００５】
フラッシュメモリを用いた情報処理装置においても、基本的な動作は上述したと同様である。例えばＮＡＮＤ型フラッシュメモリにあっては、読み込みはページと呼ばれる複数ビット単位で行われる。但し、既に何かが記録されたページに直接データを上書きすることはできず、一旦ページ全体を消去する必要がある。更には、消去は前述のページを複数纏めたブロック単位で行う必要がある。このため、データの書き換えを行う場合には、ブロック消去されている消去済ブロックに新たなデータを書き込むと共に、古いデータが書き込まれていたブロックを消去するという処理を行わなければならない。従って、ＮＡＮＤ型フラッシュメモリにおいて、書き換え後のデータは、書き換え前のデータとは異なるブロックに書き込まれざるを得ない（特許文献１参照）。【０００６】
このため、ホストシステム側から与えられる論理ブロックアドレスと、フラッシュメモリ内の物理ブロックアドレスとの対応関係は、データを書き換える毎に動的に変化する。従って、フラッシュメモリにアクセスする場合には、論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルが必要となる。こうした処理はフラッシュメモリのメモリコントローラによって行われ、ホストシステム側は関知しない。従って、ホストシステム側は連続したデータを連続したブロックに書き込んだつもりであっても、実際にはバラバラなブロックに書き込まれているといったことが起こる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−１５５３３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
例えば、ファイル・アロケーション・テーブルのインデックス情報が毀損あるいは消失し、ファイルシステムが破損した場合、書き込まれたファイルはアクセス不能となる。この状態において、所定のファイルが連続したクラスタや連続したブロックに格納されている場合には、格納場所の連続性に基づいてファイルのバイナリデータを読み込むことによって、ファイルの復旧を試みることができる。しかしながら、所定のファイルが不連続なクラスタやブロックに格納されている場合、格納場所の連続性に基づいたデータの復旧は極めて困難となる。特に、フラッシュメモリにあっては、ホストシステム側は連続したデータを連続したブロックに書き込んだつもりであっても、バラバラなブロックに書き込まれているといったことが起こり得るため、データの復旧は極めて困難となる。【０００９】
従って、本開示の目的は、ファイルシステムが破損した場合であっても、書き込まれたファイルのデータが格納されたクラスタやブロックなどをある程度まで特定し得る情報処理装置、係る情報処理装置における情報処理方法および情報処理プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記の目的を達成するための本開示の情報処理装置は、データのアクセスが所定データ量毎に行われる情報処理装置であって、
ホストシステム側から送信されるデータを書き込む際に、送信されるデータが一つのファイルを構成する連続するデータと推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む、
情報処理装置である。【００１１】
上記の目的を達成するための本開示の情報処理方法は、
データのアクセスが所定データ量毎に行われる情報処理装置において、ホストシステム側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定する工程、及び、
連続するデータであると推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む工程、
を行う、
情報処理方法である。【００１２】
上記の目的を達成するための本開示の情報処理プログラムは、
データのアクセスが所定データ量毎に行われる情報処理装置の制御をコンピュータで実行させるプログラムであって、
ホストシステム側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定するステップ、及び、
連続するデータであると推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込むステップ、
を含む処理をコンピュータに実行させるための情報処理プログラムである。
【図面の簡単な説明】
【００１３】
【図１】図１は、第１の実施形態に係る情報処理装置の模式的なブロック図である。
【図２】図２は、フラッシュメモリから成るストレージデバイスにおけるブロックとページとの関係を示す説明図である。図２Ａはブロックの構造を示し、図２Ｂはブロックに含まれるページの構造を示す。
【図３】図３は、ホストシステム側から示される論理ブロックと、ストレージデバイス側における物理ブロックとが異なることがあることを示す説明図である。
【図４】図４は、書き込み処理における基本的な動作を説明するための模式的なフローチャートである。
【図５】図５は、ストレージデバイスの各ページに格納されるデータを説明するための模式図である。
【図６】図６は、ストレージデバイスにおける書き込み処理の例を説明するための説明図である。
【図７】図７は、図６に示す動作においてストレージデバイスの各ページに書き込まれるメタデータの内容を説明するための説明図である。
【図８】図８は、ファイルシステムの情報によらずにメタデータに基づいて関連するページをアクセスすることができることを説明するための説明図である。
【図９】図９は、送信データのサイズ判定を含む書き込み処理における基本的な動作を説明するための模式的なフローチャートである。
【図１０】図１０は、図９における例外処理の詳細を説明するための模式的なフローチャートである。
【図１１】図１１は、図９および図１０に示す動作においてストレージデバイスの各ページに書き込まれるメタデータの内容を説明するための説明図である。
【図１２】図１２は、ＬＢＡ（Logical Block Addressing）によってセクタを特定する場合を説明するための説明図である。
【図１３】図１３は、ＬＢＡによってセクタを特定する場合のメタデータの内容を説明するための説明図である。
【図１４】図１４は、ホストシステム側からのデータとメタデータとを共にセクタに書き込む場合の例を説明するための説明図である。
【図１５】図１５は、ホストシステム側からのデータとメタデータとを、独立した記録領域に格納する場合の例を説明するための説明図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照して、実施形態に基づき本開示を説明する。本開示は実施形態に限定されるものではなく、実施形態における種々の数値や材料は例示である。以下の説明において、同一要素または同一機能を有する要素には同一符号を用いることとし、重複する説明は省略する。尚、説明は、以下の順序で行う。
１．本開示に係る、情報処理装置、情報処理方法および情報処理プログラム、全般に関する説明
２．第１の実施形態
３．第２の実施形態
４．変形例
５．その他
【００１５】
［本開示に係る、情報処理装置、情報処理方法および情報処理プログラム、全般に関する説明］
本開示に係る、情報処理装置、情報処理方法および情報処理プログラム（以下、これらを単に「本開示」と呼ぶ場合がある）において、ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定する構成とすることができる。
【００１６】
ホストシステム側の構成などにもよるが、１つのファイルを情報処理装置に書き込む場合に、複数回の書き込み命令がホストシステム側から発行されるケースが考えられる。そして、このような場合、２回目以降の書き込み命令は、従前の書き込み命令からさほど間をおかずに発行されると考えられる。従って、ホストシステム側からの書き込み命令が一つ前の書き込み命令からさほど間をおかずに発行されている場合、それらは、１つのファイルを構成する連続するデータを書き込む処理に対応していることが推定される。従って、ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かを判断することによって、連続するデータと推定されるか否かを判定することができる。尚、「所定の時間」は、ホストシステムや情報処理装置などの仕様に基づいて、適宜好適に設定すればよい。
【００１７】
上述した好ましい構成を含む本開示において、ホストシステム側から送られるデータのサイズを確認し、所定のサイズのデータ以上であるか否かに基づいて、連続するデータと推定されるか否かを判定する構成とすることができる。
【００１８】
ホストシステム側の構成などにもよるが、例えば書き込みサイズが４ＫＢ程度に留まるといった場合、これ自体が単独で一つのファイルを構成するといったことが推定される。逆に、例えば書き込みサイズが６４ＫＢを超えるといった場合には、直前の書き込み命令に対応したデータと連続することが推定される。例えば動画データや画像データなどのように、大きなファイルサイズのデータを書き込む場合には、ある程度の大きさのデータを連続して書き込むような処理が行われるからである。従って、ホストシステム側からの書き込みサイズの大きさを判断することによって、連続するデータと推定されるか否かを判定することができる。尚、「所定のサイズ」は、ホストシステムや情報処理装置などの仕様に基づいて、適宜好適に設定すればよい。
【００１９】
上述した各種の好ましい構成を含む本開示において、ホストシステム側からファイルの読み出しが指定される場合に、メタデータに基づいて格納されているデータの先読みを行う構成とすることができる。
【００２０】
ホストシステム側からファイルの読み込み命令が発行される場合、情報処理装置側はメタデータに基づいて、ファイルのバイナリデータが格納されている領域の先読みを行うことができる。これによって、読み込み速度の向上を図ることができる。
【００２１】
上述した各種の好ましい構成を含む本開示において、所定データ量は、ページ単位のデータ量である構成とすることができる。
【００２２】
この場合において、情報処理装置は、複数ページをブロックとするブロック単位でデータを管理する構成とすることができる。また、情報処理装置は、データが消去されているブロックに対して、データの書き込みを行う構成とすることができる。
【００２３】
この場合において、メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む構成とすることができる。そして、書き込み対象となる各ページに対して、ホストシステム側からのデータとメタデータとが書き込まれる構成とすることができる。あるいは又、ホストシステム側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される構成とすることもできる。
【００２４】
あるいは又、上述した好ましい構成を含む本開示において、所定データ量は、セクタ単位のデータ量である構成とすることもできる。
【００２５】
この場合において、情報処理装置は、複数セクタをクラスタとするクラスタ単位でデータを管理する構成とすることができる。また、メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたセクタ情報とを含む構成とすることができる。そして、書き込み対象となる各セクタに対して、ホストシステム側からのデータとメタデータとが書き込まれる構成とすることができる。あるいは又、ホストシステム側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される構成とすることができる。
【００２６】
本開示において、書き込み対象となる媒体は特に限定するものではなく、フラッシュメモリなどの半導体メモリ媒体、ＦＤＤ、ＣＤ−Ｒ、ＤＶＤ−Ｒ、ＨＤＤなどのディスク媒体といった周知の媒体を用いて構成することができる。情報処理装置は、これらの媒体のほか、情報処理を行うコントローラなどから構成することができる。コントローラは、例えば、コンピュータや論理回路などを組み合わせて構成することができる。
【００２７】
［第１の実施形態］
第１の実施形態は、本開示に係る、情報処理装置、情報処理方法および情報処理プログラム関する。
【００２８】
図１は、第１の実施形態に係る情報処理装置の模式的なブロック図である。
【００２９】
情報処理装置１は、例えばフラッシュメモリからなるストレージデバイス２０と、それを制御するメモリコントローラ１０を含んでいる。情報処理装置１は、例えばホストシステム９と着脱可能に接続され、ホストシステム９の記憶装置として用いられる。ホストシステム９として、パーソナルコンピュータ、デジタルビデオカメラ、デジタルスチルカメラの他、スマートフォンや携帯電話などの携帯電子端末を例示することができる。
【００３０】
メモリコントローラ１０は、メモリコントローラ全般の制御を司るマイクロプロセッサ１１、ＲＡＭなどから成るデータバッファ１２、ホストシステム９側とのインターフェースを構成するホストシステムＩ／Ｆ（符号１３）、及び、ストレージデバイス２０側とのインターフェースを構成するストレージデバイスＩ／Ｆ（符号１４）を含んでいる。メモリコントローラ１０は、図示せぬ記憶手段に格納されている情報処理プログラムに基づいて動作する。そして、ホストシステム９側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定するステップ、及び、
連続するデータであると推定される場合に、ホストシステム９側からのデータと共に連続するデータであることを示すメタデータを書き込むステップ、
を実行する。
【００３１】
符号１３で示すホストシステムＩ／Ｆは、ホストシステム９との間で、書き込みや読み込みに関する命令の他、ファイルのデータ、論理アドレス情報などに関する通信を行う。符号１４で示すストレージデバイスＩ／Ｆは、ストレージデバイス２０との間で、動作を制御するコマンド、データ、物理アドレス情報などに関する通信を行う。
【００３２】
データバッファ１２は、ストレージデバイス２０に書き込むデータあるいはストレージデバイス２０から読み込むデータを一時的に保持する。例えば、ストレージデバイス２０から読み出したデータは、ホストシステム９側での受信準備ができるまでデータバッファ１２に保持される。同様に、ストレージデバイス２０に書き込むデータは、ストレージデバイス２０の書き込み準備ができるまでデータバッファ１２に保持される。
【００３３】
ストレージデバイス２０は、所謂ＮＡＮＤ型のフラッシュメモリから構成されている。ストレージデバイス２０において、読み込みはページと呼ばれる複数ビット単位で行われる。上述したように、既に何かが記録されたページに直接データを上書きすることはできず、一旦ページ全体を消去する必要がある。また、消去は前述のページを複数纏めたブロック単位で行われる。このため、情報処理装置１は、データが消去されているブロックに対して、データの書き込みを行う。
【００３４】
図２は、フラッシュメモリから成るストレージデバイスにおけるブロックとページとの関係を示す説明図である。図２Ａはブロックの構造を示し、図２Ｂはブロックに含まれるページの構造を示す。
【００３５】
図２Ａに示すように、ストレージデバイス２０には、例えば符号ＰＢ＃００ないしＰＢ＃９９で示される複数のブロックが含まれている。そして、図２Ｂに示すように、各ブロックは、符号ＰＧ００ないしＰＧ３１で示されるページから構成されている。後で図５を参照して説明するが、各ページは、例えば４０９６ビットのデータ領域と３４ビットの冗長領域から構成されている。そして、後述するように、冗長領域がメタデータ保存領域として使用される。
【００３６】
図３は、ホストシステム側から示される論理ブロックと、フラッシュメモリ側における物理ブロックとが異なることがあることを示す説明図である。
【００３７】
ホストシステム９は、論理アドレスを指定して書き込みを行う。図３は、連続した論理アドレスを指定しての書き込みを行う場合の例である。論理アドレスＬＢＡ００ないしＬＢＡ３１が論理ブロックＬＢ＃００に対応し、論理アドレスＬＢＡ３２ないしＬＢＡ６３が論理ブロックＬＢ＃０１に対応するといった関係にある。
【００３８】
上述したように、ＮＡＮＤ型フラッシュメモリにあっては、既に何かが記録されたページに直接データを上書きすることはできず、一旦ページ全体を消去する必要がある。更には、消去は前述のページを複数纏めたブロック単位で行う必要がある。このため、データの書き込みを行う場合には、論理ブロックと物理ブロックとの対応関係は一意ではない。図３は、論理ブロックＬＢ＃００には物理ブロックＰＢ＃０３が対応し、論理ブロックＬＢ＃０１には物理ブロックＰＢ＃０１が対応し、論理ブロックＬＢ＃０２には物理ブロックＰＢ＃０５が対応するといった場合の例を示す。
【００３９】
論理ブロックアドレスと物理ブロックアドレスの対応関係を示したアドレス変換テーブルは、メモリコントローラ１０内に構築されており、ホストシステム９側は関知しない。従って、ホストシステム９側は連続したデータを連続したブロックに書き込むといった命令を発行しているが、実際には、ストレージデバイス２０内のバラバラなブロックに書き込まれている。このような場合、通常、ファイルシステムが破損した場合には、書き込まれたファイルのデータが格納された複数のブロックを特定することは難しい。
【００４０】
そこで、情報処理装置１にあっては、ホストシステム９側から送信されるデータを書き込む際に、送信されるデータが一つのファイルを構成する連続するデータと推定される場合に、ホストシステム９側からのデータと共に連続するデータであることを示すメタデータを書き込む。より具体的には、ホストシステム９側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定する。
【００４１】
図４は、書き込み処理における基本的な動作を説明するための模式的なフローチャートである。
【００４２】
メモリコントローラ１０は、ホストシステム９側からファイルについての書き込み命令が発行されると、送信データにファイルの［開始］を示すフラグを割り当てる（ステップＳ１０１）。そして、フラグ情報を含むメタデータと送信データとを書き込む（ステップＳ１０２）。
【００４３】
１つのファイルを情報処理装置１に書き込む場合に、通常、複数回の書き込み命令がホストシステム９側から発行される。このような場合、２回目以降の書き込み命令は、従前の書き込み命令からさほど間をおかずに発行されると考えられる。
【００４４】
メモリコントローラ１０は、次の書き込み命令が所定の設定期間内に来たと判定した場合には、ホストシステム９側からの送信データは、先のデータに連続すると推定し、送信データにデータの［連続］を示すフラグを割り当てる（ステップＳ１０３）。そして、フラグ情報を含むメタデータと送信データとを書き込む（ステップＳ１０２）。そして、基本的には、上述したループを繰り返す。
【００４５】
尚、次の書き込み命令が所定の設定期間内ではなかった場合には、別のファイルの書き込みであると推定される。この場合には、上述したループを脱し、図４のＳｔａｒｔに戻る。
【００４６】
以上、第１の実施形態における書き込み処理の基本的な動作について説明した。
【００４７】
図５は、ストレージデバイスの各ページに格納されるデータを説明するための模式図である。
【００４８】
情報処理装置１において、データのアクセスは、所定データ量毎、より具体的には、ページ単位のデータ量毎に行われる。そして、情報処理装置１は、複数ページをブロックとするブロック単位でデータを管理する。各ページは、例えば４０９６ビットのデータ領域と３４ビットの冗長領域から構成されている。そして、冗長領域がメタデータ保存領域として使用される。メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む。
【００４９】
図に示す例では、メタデータ保存領域のＢｉｔ０が対応する［区画Ａ］は、ファイルの［開始］を示すフラグに対応し、［０：開始でない］、［１：開始である］といった意味を示す。また、メタデータ保存領域のＢｉｔ１が対応する［区画Ｂ］はデータの［連続］に関する情報を示すフラグに対応し、［０：連続でない］、［１：連続である］といった意味を示す。Ｂｉｔ２ないしＢｉｔ１７が対応する［区画Ｃ］には、一つ前の［連続データ］が格納されている物理ページ番号が格納され、Ｂｉｔ１８ないしＢｉｔ３３が対応する［区画Ｄ］には、一つ前の［連続データ］が格納されている物理ブロック番号が格納される。そして、書き込み対象となる各ページに対して、ホストシステム９側からのデータとメタデータとが書き込まれる。
【００５０】
以下、図６と図７を参照して、フラッシュメモリから成るストレージデバイス２０における書き込み処理の例について説明する。
【００５１】
図６は、ストレージデバイスにおける書き込み処理の例を説明するための説明図である。図７は、図６に示す動作においてストレージデバイスの各ページに書き込まれるメタデータの内容を説明するための説明図である。
【００５２】
図６に示す例では、ホストシステム９側から論理アドレスＬＢＡ００ないしＬＢＡ６３によって指定されるデータがストレージデバイス２０側に書き込まれる例を示す。ここで、論理アドレスＬＢＡ００ないしＬＢＡ３１は論理ブロックＬＢ＃００を構成し、論理アドレスＬＢＡ３２ないしＬＢＡ６３は論理ブロックＬＢ＃０１を構成する。そして、論理ブロックＬＢ＃００のデータはストレージデバイス２０の物理ブロックＰＢ＃０３に書き込まれ、論理ブロックＬＢ＃０１のデータはストレージデバイス２０の物理ブロックＰＢ＃０１に書き込まれるものとする。
【００５３】
先ず、メモリコントローラ１０は、論理アドレスＬＢＡ００によって指定される送信データに介して［開始］を示すフラグを割り当てる（図４のステップＳ１０１）。そして、ホストシステム９側からのデータと、［開始］を示すフラグを含むメタデータとを、物理ブロックＰＢ＃０３のページＰＧ００に書き込む（図４のステップＳ１０２）。
【００５４】
図５に示すように、メタデータは、［開始］を示すフラグ、［連続］を示すフラグ、直前にデータが格納されたブロック情報およびページ情報を含む。［開始］を示すフラグを割り当てるときには、［連続］を示すフラグは０に設定するものとする。また、直前にデータが格納されたブロック情報およびページ情報は不定である。よって、図７に示すように、物理ブロックＰＢ＃０３のページＰＧ００におけるメタデータは、
［区画Ａ：１］  ［区画Ｂ：０］  ［区画Ｃ：  Ｎ／Ａ］  ［区画Ｄ：  Ｎ／Ａ  ］
となる。
【００５５】
引き続く書き込み命令が所定の設定期間内にあるとすれば、メモリコントローラ１０は、ホストからの送信データに［連続］を示すフラグを割り当てる（図４のステップＳ１０３，Ｓ１０４）。メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む。物理ブロックＰＢ＃０３のページＰＧ０１におけるメタデータは、
［区画Ａ：０］  ［区画Ｂ：１］  ［区画Ｃ：ＰＧ００］  ［区画Ｄ：ＰＢ＃０３］
となる。
【００５６】
以下、物理ブロックＰＢ＃０３のページＰＧ３１まで同様な処理が行われる。そして、次の書き込みは物理ブロックＰＢ＃０１に行われる。物理ブロックＰＢ＃０１のページＰＧ００におけるメタデータは、
［区画Ａ：０］  ［区画Ｂ：１］  ［区画Ｃ：ＰＧ３１］  ［区画Ｄ：ＰＢ＃０３］
となる。
【００５７】
引き続く、物理ブロックＰＢ＃０１のページＰＧ０１におけるメタデータは、
［区画Ａ：０］  ［区画Ｂ：１］  ［区画Ｃ：ＰＧ００］  ［区画Ｄ：ＰＢ＃０１］
となる。以下、物理ブロックＰＢ＃０１のページＰＧ３１まで同様な処理が行われる。
【００５８】
上述のようなメタデータが書き込まれたストレージデバイス２０にあっては、ファイル・アロケーション・テーブルのインデックス情報が毀損あるいは消失し、ファイルシステムが破損した場合であっても、メタデータの情報を手がかりとして、特定のファイルが書き込まれた複数のページを辿ることができる。
【００５９】
図８は、ファイルシステムの情報によらずにメタデータに基づいて関連するページをアクセスすることができることを説明するための説明図である。
【００６０】
例えば、物理ブロックＰＢ＃０１のページＰＧ３１がファイルの終端情報であると見込まれた場合、ページＰＧ３１のメタデータによって、直前に書き込まれたページはＰＧ３０、ブロックはＰＢ＃０１であって、［区画Ｂ：１］であるので連続するデータと類推できる。これを繰り返すことで、物理ブロックＰＢ＃０１のページＰＧ００にたどり着く。
【００６１】
そして、ページＰＧ００のメタデータによって、直前に書き込まれたページはＰＧ３１、ブロックはＰＢ＃０３であって、［区画Ｂ：１］であるので連続するデータと類推できる。上述した動作を繰り返していくと、ページＰＧ００のメタデータの［区画Ａ：１］であるので、ここがファイルの開始位置であることがわかる。
【００６２】
従って、或るファイルのデータは、物理ブロックＰＢ＃０３のページＰＧ００ないしＰＧ３１、及び、物理ブロックＰＢ＃０１のページＰＧ００ないしＰＧ３１によって構成されているということを推定することができる。これらのページに含まれているバイナリデータを読み出すことによって、ファイルの修復を試みることができる。
【００６３】
以上説明したように、第１の実施形態にあっては、メタデータの情報を参照することによって、書き込まれたファイルのデータが格納されたブロックなどをある程度まで特定し得る。従って、離散したブロックなどにファイルのデータが格納されていたとしても、ファイルの修復を試みることができる。
【００６４】
尚、上述の説明では、書き込み対象となる各ページに対して、ホストシステム９側からのデータとメタデータとが書き込まれるとして説明した。場合によっては、ホストシステム９側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される構成とすることもできる。例えば、特定のブロックは専らメタデータのみを格納するといった構成である。
【００６５】
また、情報処理装置１にあっては、メタデータの情報を参照することによって、書き込まれたファイルのデータが格納されたブロックなどを特定することができる。従って、ホストシステム９側からファイルの読み出しが指定される場合に、メタデータに基づいて格納されているデータの先読みを行うといったことも可能である。これによって、データの読み出し性能を向上させることもできる。
【００６６】
また、このデータの連続性を基にデータを読み出す機能をホストシステム９側に提供することによって、ホストシステム９は、必要に応じて情報処理装置１からデータの書き込みを行った際に連続に書き込んだデータについてその連続性を確認しながら読み出すといったことも可能である。
【００６７】
また、ホストシステム９側が予めデータの連続性を情報処理装置１に伝える機能を備えており、情報処理装置１は、ホストシステム９側から通知されるデータの連続性の情報に基づいてメタデータを生成して、ファイルのデータとともに格納するといった態様とすることもできる。
【００６８】
［第２の実施形態］
第２の実施形態も、本開示に係る、情報処理装置、情報処理方法および情報処理プログラム関する。
【００６９】
第１の実施形態は、ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定するといった構成であった。
【００７０】
ホストシステム側からのデータが連続するものである場合、通常、ホストシステム側から送られるデータのサイズは、或る程度の大きさであることが予想される。逆に言えば、送信されるデータのサイズを勘案することによっても、データの不連続性あるいは連続性を推定することができる。
【００７１】
第２の実施形態にあっては、第１の実施形態に加えて、ホストシステム側から送られるデータのサイズを確認し、所定のサイズのデータ以上であるか否かに基づいて、連続するデータと推定されるか否かを判定するといったことを行う。
【００７２】
第２の実施形態に係る情報処理装置２の模式的なブロック図は、図１において、情報処理装置１を情報処理装置２と読み替えればよい。
【００７３】
図９は、送信データのサイズ判定を含む書き込み処理における基本的な動作を説明するための模式的なフローチャートである。図１０は、図９における例外処理の詳細を説明するための模式的なフローチャートである。
【００７４】
図９に示す動作は、基本的には、第１の実施形態において参照した図４における（ステップＳ１０３）と（ステップＳ１０４）との間において、送信データは所定のサイズ以上であるかを判定する（ステップＳ２００）を行うといったものである。送信データは所定のサイズ以上ではない場合には、連続性に疑義があるとして、ステップＳ２０１ないしＳ２０７からなる例外処理が行われる。以下、図を参照して、例外処理について説明する。
【００７５】
図１０は、図９における例外処理の詳細を説明するための模式的なフローチャートである。
【００７６】
メモリコントローラ１０は、送信データが所定のサイズ以上ではない場合、先ず、ホストシステム９側からの書き込み命令において、１つ前の書き込みと連続した論理アドレスが指定されているかどうかを判定する（ステップＳ２０１）。
【００７７】
この判定が［Ｙｅｓ］の場合には、（ステップＳ１０４）の処理を行い、（ステップＳ１０２）に戻る。一方、判定が［Ｎｏ］の場合には、送信データを一時的に保持し、次の書き込み命令を待ち（ステップＳ２０２）、次の書き込み命令が所定の設定期間内に来たか否かを判定する（ステップＳ２０３）。
【００７８】
（ステップＳ２０３）の判定が［Ｎｏ］の場合には、別のファイルの書き込みであることが推定される。そこで、後述するループを脱し、図４のＳｔａｒｔに戻る。尚、一時的に保持したデータは、別のファイルの先頭データであるとして処理すればよい。一方、（ステップＳ２０３）の判定が［Ｙｅｓ］の場合には、送信データは所定のサイズ以上であるかを判定する（ステップＳ２０４）。
【００７９】
（ステップＳ２０４）の判定が［Ｙｅｓ］の場合には、先のデータとの連続性に疑義があると推定し、送信データにデータの［連続性の疑義］を示すフラグを割り当てる（ステップＳ２０５）。そして、（ステップＳ１０２）に戻って処理を繰り返す。尚、一時的に保持したデータと次の書き込み命令のデータとの双方に［連続性の疑義］を示すフラグを割り当ててもよいし、前者には［連続性の疑義］を示すフラグを割り当て、後者には［連続］を示すフラグを割り当ててもよい。
【００８０】
（ステップＳ２０４）の判定が［Ｎｏ］の場合には、ホストシステム９側から、２つ前の書き込みと連続した論理アドレスが指定されているか否かを判断する（ステップＳ２０６）。
【００８１】
（ステップＳ２０６）の判定が［Ｙｅｓ］の場合には、先のデータとの連続性があると推定し、送信データにデータの［連続］を示すフラグを割り当てる（ステップＳ２０７）。そして、（ステップＳ１０２）に戻って処理を繰り返す。尚、一時的に保持したデータと次の書き込み命令のデータとの双方に［連続］を示すフラグを割り当てればよい。
【００８２】
（ステップＳ２０６）の判定が［Ｎｏ］の場合には、別のファイルの書き込みであることが推定される。そこで、後述するループを脱し、図４のＳｔａｒｔに戻る。尚、一時的に保持したデータは、別のファイルの先頭データであるとして処理すればよい。
【００８３】
以上、第２の実施形態における書き込み処理の基本的な動作について説明した。
【００８４】
上述したように、第２の実施形態にあっては、連続性に疑義がある場合にもフラグを付与する。第１の実施形態にあっては、図５に示す［区画Ａ］と［区画Ｂ］とをそれぞれ単独で使用した。図１１に示すように、第２の実施形態にあっては、例えば、［区画Ａ］と［区画Ｂ］とを連続する２Ｂｉｔとして扱うことによって、連続性に疑義がある場合に［１１］といったフラグを付与する。
【００８５】
［変形例］
上述した各実施形態においては、ストレージデバイスはフラッシュメモリから成るとして説明した。本開示に用いられるストレージデバイスはフラッシュメモリに限るものではなく、ＨＤＤなどのディスクデバイスも使用することができる。ディスクデバイスの場合、所定データ量は、セクタ単位のデータ量である構成とすることができる。この場合において、情報処理装置は、複数セクタをクラスタとするクラスタ単位でデータを管理する構成とすることができる。
【００８６】
ここで、ＨＤＤにおいてセクタを特定する場合の例を説明する。図１２は、ＬＢＡ（Logical Block Addressing）によってセクタを特定する場合を説明するための説明図である。
【００８７】
フラッシュメモリにおいてページを特定するためには、そのページが属するブロックの番号とブロック内におけるページ番号とを特定する必要があった。これに対し、ＬＢＡの場合には、各セクタはそれぞれ一意の番号によって特定される。従って、メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたセクタ情報とを含む構成とすることができる。図１３は、ＬＢＡによってセクタを特定する場合のメタデータの内容を説明するための説明図である。
【００８８】
変形例においても、書き込み対象となる各セクタに対して、ホストシステム９側からのデータとメタデータとが書き込まれる構成とすることができる。図１４は、ホストシステム９側からのデータとメタデータとを共にセクタに書き込む場合の例を説明するための説明図である。
【００８９】
あるいは又、ホストシステム９側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される構成とすることができる。例えば、ＨＤＤの所定の領域のセクタ全てをメタデータ格納用としておき、データとメタデータとを独立した記録領域に格納するといったこともできる。図１５は、メタデータ記録用のセクタにおけるメタデータの格納例である。
【００９０】
以上、本開示の実施形態について具体的に説明したが、本開示の上述の実施形態に限定されるものではなく、本開示の技術的思想に基づく各種の変形が可能である。
【００９１】
なお、本開示の技術は以下のような構成も取ることができる。
【００９２】
［Ａ１］
データのアクセスが所定データ量毎に行われる情報処理装置であって、
ホストシステム側から送信されるデータを書き込む際に、送信されるデータが一つのファイルを構成する連続するデータと推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む、
情報処理装置。
［Ａ２］
ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定する、
上記［Ａ１］に記載の情報処理装置。
［Ａ３］
ホストシステム側から送られるデータのサイズを確認し、所定のサイズのデータ以上であるか否かに基づいて、連続するデータと推定されるか否かを判定する、
上記［Ａ１］または［Ａ２］に記載の情報処理装置。
［Ａ４］
ホストシステム側からファイルの読み出しが指定される場合に、メタデータに基づいて格納されているデータの先読みを行う、
上記［Ａ１］ないし［Ａ３］のいずれかに記載の情報処理装置。
［Ａ５］
所定データ量は、ページ単位のデータ量である、
上記［Ａ１］ないし［Ａ４］のいずれかに記載の情報処理装置。
［Ａ６］
情報処理装置は、複数ページをブロックとするブロック単位でデータを管理する、
上記［Ａ５］に記載の情報処理装置。
［Ａ７］
情報処理装置は、データが消去されているブロックに対して、データの書き込みを行う、
上記［Ａ６］に記載の情報処理装置。
［Ａ８］
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む、
上記［Ａ６］または［Ａ７］に記載の情報処理装置。
［Ａ９］
書き込み対象となる各ページに対して、ホストシステム側からのデータとメタデータとが書き込まれる、
上記［Ａ８］に記載の情報処理装置。
［Ａ１０］
ホストシステム側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される、
上記［Ａ８］に記載の情報処理装置。
［Ａ１１］
所定データ量は、セクタ単位のデータ量である、
上記［Ａ１］に記載の情報処理装置。
［Ａ１２］
情報処理装置は、複数セクタをクラスタとするクラスタ単位でデータを管理する、
上記［Ａ１１］に記載の情報処理装置。
［Ａ１３］
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたセクタ情報とを含む、
上記［Ａ１１］または［Ａ１２］に記載の情報処理装置。
［Ａ１４］
書き込み対象となる各セクタに対して、ホストシステム側からのデータとメタデータとが書き込まれる、
上記［Ａ１３］に記載の情報処理装置。
［Ａ１５］
ホストシステム側からのデータとメタデータとは、それぞれ、独立した記録領域に格納される、
上記［Ａ１３］に記載の情報処理装置。
【００９３】
［Ｂ１］
データのアクセスが所定データ量毎に行われる情報処理装置において、ホストシステム側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定する工程、及び、
連続するデータであると推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込む工程、
を行う、
情報処理方法。
［Ｂ２］
ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定する、
上記［Ｂ１］に記載の情報処理方法。
［Ｂ３］
ホストシステム側から送られるデータのサイズを確認し、所定のサイズのデータ以上であるか否かに基づいて、連続するデータと推定されるか否かを判定する、
上記［Ｂ１］または［Ｂ２］に記載の情報処理方法。
［Ｂ４］
ホストシステム側からファイルの読み出しが指定される場合に、メタデータに基づいて格納されているデータの先読みを行う、
上記［Ｂ１］ないし［Ｂ３］のいずれかに記載の情報処理方法。
［Ｂ５］
所定データ量は、ページ単位のデータ量である、
上記［Ｂ１］ないし［Ｂ４］のいずれかに記載の情報処理方法。
［Ｂ６］
複数ページをブロックとするブロック単位でデータを管理する、
上記［Ｂ５］に記載の情報処理方法。
［Ｂ７］
データが消去されているブロックに対して、データの書き込みを行う、
上記［Ｂ６］に記載の情報処理方法。
［Ｂ８］
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む、
上記［Ｂ６］または［Ｂ７］に記載の情報処理方法。
［Ｂ９］
書き込み対象となる各ページに対して、ホストシステム側からのデータとメタデータとを書き込む、
上記［Ｂ８］に記載の情報処理方法。
［Ｂ１０］
ホストシステム側からのデータとメタデータとを、それぞれ、独立した記録領域に格納する、
上記［Ｂ８］に記載の情報処理方法。
［Ｂ１１］
所定データ量は、セクタ単位のデータ量である、
上記［Ｂ１］に記載の情報処理方法。
［Ｂ１２］
複数セクタをクラスタとするクラスタ単位でデータを管理する、
上記［Ｂ１１］に記載の情報処理方法。
［Ｂ１３］
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたセクタ情報とを含む、
上記［Ｂ１１］または［Ｂ１２］に記載の情報処理方法。
［Ｂ１４］
書き込み対象となる各セクタに対して、ホストシステム側からのデータとメタデータとを書き込む、
上記［Ｂ１３］に記載の情報処理方法。
［Ｂ１５］
ホストシステム側からのデータとメタデータとを、それぞれ、独立した記録領域に格納する、
上記［Ｂ１３］に記載の情報処理方法。
【００９４】
［Ｃ１］
データのアクセスが所定データ量毎に行われる情報処理装置の制御をコンピュータで実行させるプログラムであって、
ホストシステム側から送信されるデータを書き込む際に、
送信されるデータが一つのファイルを構成する連続するデータと推定されるか否かを判定するステップ、及び、
連続するデータであると推定される場合に、ホストシステム側からのデータと共に連続するデータであることを示すメタデータを書き込むステップ、
を含む処理をコンピュータに実行させるための情報処理プログラム。
［Ｃ２］
ホストシステム側からの書き込み命令が一つ前の書き込み命令から所定の時間内に発行されているか否かに基づいて、連続するデータと推定されるか否かを判定する、
上記［Ｃ１］に記載の情報処理プログラム。
［Ｃ３］
ホストシステム側から送られるデータのサイズを確認し、所定のサイズのデータ以上であるか否かに基づいて、連続するデータと推定されるか否かを判定する、
上記［Ｃ１］または［Ｃ２］に記載の情報処理プログラム。
［Ｃ４］
ホストシステム側からファイルの読み出しが指定される場合に、メタデータに基づいて格納されているデータの先読みを行う、
上記［Ｃ１］ないし［Ｃ３］のいずれかに記載の情報処理プログラム。
［Ｃ５］
所定データ量は、ページ単位のデータ量である、
上記［Ｃ１］ないし［Ｃ４］のいずれかに記載の情報処理プログラム。
［Ｃ６］
複数ページをブロックとするブロック単位でデータを管理する、
上記［Ｃ５］に記載の情報処理プログラム。
［Ｃ７］
データが消去されているブロックに対して、データの書き込みを行う、
上記［Ｃ６］に記載の情報処理プログラム。
［Ｃ８］
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたブロック情報およびページ情報とを含む、
上記［Ｃ６］または［Ｃ７］に記載の情報処理プログラム。
［Ｃ９］
書き込み対象となる各ページに対して、ホストシステム側からのデータとメタデータとを書き込む、
上記［Ｃ８］に記載の情報処理プログラム。
［Ｃ１０］
ホストシステム側からのデータとメタデータとを、それぞれ、独立した記録領域に格納する、
上記［Ｃ８］に記載の情報処理プログラム。
［Ｃ１１］
所定データ量は、セクタ単位のデータ量である、
上記［Ｃ１］に記載の情報処理プログラム。
［Ｃ１２］
複数セクタをクラスタとするクラスタ単位でデータを管理する、
上記［Ｃ１１］に記載の情報処理プログラム。
［Ｃ１３］
メタデータは、連続するデータと推定されることを示すフラグと、直前にデータが格納されたセクタ情報とを含む、
上記［Ｃ１１］または［Ｃ１２］に記載の情報処理プログラム。
［Ｃ１４］
書き込み対象となる各セクタに対して、ホストシステム側からのデータとメタデータとを書き込む、
上記［Ｃ１３］に記載の情報処理プログラム。
［Ｃ１５］
ホストシステム側からのデータとメタデータとを、それぞれ、独立した記録領域に格納する、
上記［Ｃ１３］に記載の情報処理プログラム。
【符号の説明】
【００９５】
１・・・情報処理装置、１０・・・コントローラ、１１・・・マイクロプロセッサ、１２・・・データバッファ、１３・・・ホストシステムＩ／Ｆ、１４・・・ストレージデバイスＩ／Ｆ、２０・・・ストレージデバイス
【図１】
2020129612.tif 000003
【図２】
2020129612.tif 000004
【図３】
2020129612.tif 000005
【図４】
2020129612.tif 000006
【図５】
2020129612.tif 000007
【図６】
2020129612.tif 000008
【図７】
2020129612.tif 000009
【図８】
2020129612.tif 000010
【図９】
2020129612.tif 000011
【図１０】
2020129612.tif 000012
【図１１】
2020129612.tif 000013
【図１２】
2020129612.tif 000014
【図１３】
2020129612.tif 000015
【図１４】
2020129612.tif 000016
【図１５】
2020129612.tif 000017
【国際調査報告】
2020129612.tif 000018
2020129612.tif 000019
2020129612.tif 000020
2020129612.tif 000021