(57)【要約】【課題】記憶領域１０内のあるボリューム領域４０から他のボリューム領域にデータをボリューム単位でバックアップする（３３０）際に、転送元のボリューム領域内に未使用領域１１０が存在しても、転送先のボリュームでは対応する未使用領域のためにセクタ２０を割当てず、記憶容量の利用効率を高める。【解決手段】ボリューム領域４０へのセクタ２０の割当てはセグメント６３０単位で管理し、セグメントの割当てはそこへ実際にデータが書き込まれるまで遅延させ、未割当てのセグメント群６６０は記憶領域１０内の全てのボリューム領域で利用可能とする。【選択図】図２
2008171311.tif 000002
【特許請求の範囲】
【請求項１】
保存すべきデータを生成するデータ発生源と、
記憶アドレス空間を複数のボリューム空間に分割し、
各ボリューム空間毎に独立したファイルシステム空間をもつ記憶装置を１つまたは複数有し、
前記データ発生源で生成された第１のデータを保存先である第１のボリューム空間にファイルとして記録するデータ保存装置において、
ボリューム空間を固定長の記憶ブロックが動的に割当てられる仮想記憶として管理し、
前記第１のデータ中に有意な情報を保持していない無為データ部分が存在する場合、
前記第１のボリューム空間において前記の無為データ部分に対応する空間へ前記記憶ブロックを割当てないことを特徴とするデータ保存装置。
【請求項２】
請求項１記載のデータ保存装置において、
前記データ発生源で生成されたデータにおいて同一のデータ値が所定の長さ以上続く部分を前記無為データ部分とすることを特徴とするデータ保存装置。
【請求項３】
請求項１記載のデータ保存装置において、
前記データ発生源は第２のボリューム空間内のデータを所定の順番に読出し、
前記第２のボリューム空間内でファイルが配置されていない空間を前記無為データ部分とすることを特徴とするデータ保存装置。
【請求項４】
請求項３記載のデータ保存装置において、
前記第２のボリューム空間のファイルシステム空間はＦＡＴファイルシステム空間であり、
ＦＡＴエントリが零であるか非零であるかにより、対応するファイルシステム空間にファイルが配置されているか否かを判断することを特徴としたデータ保存装置。
【請求項５】
請求項３記載のデータ保存装置において、
前記第２のボリューム空間のファイルシステム空間はユニバーサルディスクフォーマットファイルシステム空間であり、
空間ビットマップ記述子が零であるか非零であるかにより、対応するファイルシステム空間にファイルが配置されているか否かを判断することを特徴としたデータ保存装置。
【請求項６】
記憶アドレス空間を複数のボリューム空間に分割し、
各ボリューム空間毎に独立したファイルシステム空間をもつ記憶装置を有し、
各ボリューム空間を仮想記憶として管理するデータ保存装置において、
前記記憶装置の記憶領域は複数のブロックから構成され、
各ボリューム空間は複数のサブ空間に分割され、
各サブ空間は前記ブロックのうちの特定の１つにのみ割当て可能であり、
あるサブ空間（第１のサブ空間）へ割当て可能なブロックが他のサブ空間（第２のサブ空間）に割当て済みである場合、
前記第１のサブ空間へのアクセスを不良記憶領域へのアクセスとして取り扱うことを特徴としたデータ保存装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置上のデータを他の記憶装置へ転送するデータ転送装置およびデータ転送方法に関するものであり、特に複数のボリュームに分割された記憶領域に対する情報記録管理に関する。
【背景技術】
【０００２】
近年、音声・動画等の大容量の記憶領域を必要とするコンテンツのディジタル化に伴い、これら情報を保存することができる、大容量の記憶媒体が普及している。ハードディスク、ＤＶＤディスク、不揮発性メモリカード等の記憶媒体の大容量化に伴い、これら記憶媒体間でのデータ転送を高速に実行する必要性が高まっている。
【０００３】
記憶媒体間でのデータ転送は、同程度の容量をもつ記憶媒体間での転送（以下では、対称型転送と呼ぶ）と、容量が異なる記憶媒体間での転送（以下では、非対称型転送と呼ぶ）に分類できる。対称型転送の例としては、パーソナルコンピュータ等の情報処理機器に内蔵されている大容量ハードディスクのデータを、外部のハードディスクやディジタルテープにバックアップする場合がある。非対称型転送の例としては、リムーバブルな不揮発性メモリカードをムービー等の携帯型レコーダーに対する記憶媒体として使用し、前記不揮発性メモリカード上のデータを情報処理機器に内蔵されている大容量ハードディスクに移動する場合がある。
【０００４】
近年、据え置き機器に内蔵されているハードディスクは数十ギガバイトから数百ギガバイトの容量をもつようになっており、さらに、リムーバブルな不揮発性メモリカードとしても容量が数ギガバイトに及ぶものが普及し始めている。そこで、記憶媒体間でのデータ転送ではギガバイト・オーダーのデータを転送する必要があり、転送速度が不十分ならば利用者の利便性を著しく損なう可能性がある。例えば、非対称型転送の前記例において、４ギガバイトのメモリカードに高画質のＤＶファーマット動画を記録すると最大８分程度の動画を記録できるが、メモリカードからハードディスクへの転送が１メガバイト／秒とすると４ギガバイトの転送に１時間以上を要し、撮影時間の約８倍の転送時間がかかってしまう。そこで、記憶媒体間でのデータ転送を高速化することが課題となっている。
【０００５】
図に基づいて、記憶媒体間でのデータ転送処理について説明する。図７は、記憶媒体における保存データの配置の一例を示している。
【０００６】
記憶領域１０は、記録再生の最小単位である固定長ブロック（セクタ２０と呼ぶ）で構成されており、各セクタ２０はセクタアドレス３０により記憶領域１０内で一意に識別される。記憶領域１０を構成するセクタ群は、通常いくつかの部分集合に分割され、この部分集合毎に独立した記憶領域として使用されるが、この部分記憶領域をボリューム領域４０と呼ぶ。ボリューム領域４０を構成するセクタ２０は、そのボリューム領域内で閉じた仮想セクタアドレスにより識別可能である。どのボリューム領域４０にも属さない未使用セクタは未使用セクタ群６０に分類され、新たにボリューム領域４０を作成する時に使用することができる。ボリューム領域４０、及び、未使用セクタ群を管理するための情報は、ボリューム管理情報７０として記憶領域１０内に記録されている。
【０００７】
ボリューム領域４０には、１つのファイル領域８０が構築される。ファイル領域８０では、ユーザが、任意長の利用者データをファイル９０として記録することができる。セクタ２０は通常５１２バイトであり、これをファイル領域８０での管理の基本単位とすると大容量ファイルに対する管理負荷が大きくなる。そこで、ファイル領域８０では所定数の隣接するセクタ２０群（以下、クラスタ１００と呼ぶ）を読書きの基本単位とすることにより、管理単位の粒度を大きくしてファイル管理負荷を低減が図られている。通常、クラスタ１００は数キロバイトから数十キロバイト程度のサイズとなる。ファイル９０として使用されていないクラスタ１００は、ファイル領域内未使用領域１１０として管理されている。ファイル９０、及び、ファイル領域内未使用領域１１０を管理するための情報は、ファイル管理情報１２０としてボリューム領域４０内に記録されている。
【０００８】
図８は、ハードディスクの記憶領域における保存データの配置例をファイル領域レベルで表している。ハードディスク記憶領域１３０は、３つのボリューム領域、すなわち、ボリュームＡ（４０−Ａ）、ボリュームＢ（４０−Ｂ）、及び、ボリュームＣ（４０−Ｃ）に分割して使用されている。
【０００９】
ボリューム管理情報７０としては、ＭＢＲ（Ｍａｓｔｅｒ  Ｂｏｏｔ  Ｒｅｃｏｒｄ）１４０とＥＢＲ（Ｅｘｔｅｎｄｅｄ  Ｂｏｏｔ  Ｒｅｃｏｒｄ）１５０中にパーティションテーブル１６０が存在する。各パーティションテーブル・エントリ１７０は、対応するボリューム４０に関する情報として、ボリュームの種類を表すボリュームタイプ１８０、ボリュームの開始セクタを示す開始セクタアドレス１９０、及び、ボリュームの総セクタ数を表すボリュームサイズ２００をもつ。各パーティションテーブル１６０では、最初のエントリが１つのボリューム４０を表し、２つ目のエントリが後続のボリュームを管理しているＥＢＲが配置されている領域を表す。例えば、ＭＢＲ中のパーティションテーブル１６０では、最初のエントリがボリュームＡ（４０−Ａ）を表し、２つ目のエントリがボリュームＢ（４０−Ｂ）を管理しているＥＢＲ（１６０−２）が先頭に配置されている領域を表す。このパーティションテーブルのチェーンを用いることにより、任意個のボリュームを記憶領域に作成することが可能である。
【００１０】
図８の例では、各ボリューム領域中には各々１つのＦＡＴ（Ｆｉｌｅ  Ａｌｌｏｃａｔｉｏｎ  ｔａｂｌｅ）ファイルシステムが構築されている。すなわち各ボリューム領域４０上には、ファイル領域８０に加えてファイル管理情報１２０として、ブートセクタ２１０、ＦＡＴ領域２２０、及び、ディレクトリ領域２３０が存在する。ファイル領域８０の基本単位であるクラスタ１００のサイズは、ブートセクタ２１０中のセクタ当りのバイト数２４０と、クラスタ当りのセクタ数２５０により指定される（本図の例では、４キロバイトとしている）。
【００１１】
クラスタ１００の線形リストによりファイル９０が構成されるが、図８のファイル領域８０ではファイルＡが番号１６０のクラスタ、番号１６１のクラスタ等で構成されている場合を表している。ファイル８０の構成は、ＦＡＴ領域２２０とディレクトリ領域２３０により管理されている。ディレクトリ領域２３０には各ファイル８０に対応してディレクトリエントリ２６０が存在し、ファイル名２７０からそのファイルの先頭クラスタの番号（ファイル開始位置２８０）と、ファイルサイズ２９０を取得することが可能である。図８の例ではディレクトリエントリ２６０より、ファイルＡは１６０番目のクラスタから始まり、ファイル長が５メガバイトであることがわかる。
【００１２】
ファイルを構成するクラスタ１００の線形リストは、ＦＡＴ領域２２０にＦＡＴエントリ３００のチェーンとして記録されている。各ＦＡＴエントリ３００はクラスタと１対１に対応しており、ｎ番目のＦＡＴエントリはｎ番目のクラスタに対応する。ＦＡＴエントリ３００は値として、そのエントリの次に位置するＦＡＴエントリの番号が記録されている。ＦＡＴチェーンの終端のエントリには、ＥＯＦ（Ｅｎｄ  ｏｆ  Ｆｉｌｅ）として特別な値（例えば、０ｘＦＦＦＦＦＦＦＦ）が記録されており、どのＦＡＴチェーンに属さないＦＡＴエントリには零が記録される。図８の例では、ＦＡＴエントリの１６０番目から１６３番目がＦＡＴチェーン３１０を構成している。これは、ＦＡＴチェーン３１０中の各ＦＡＴエントリ３００と対応するクラスタ、すなわち、クラスタ番号１６０、クラスタ番号１６１、クラスタ番号１６２等のクラスタ１００がファイルＡを構成していることを示している。
【００１３】
ボリューム間のファイル転送について、図８のボリュームＣ（４０−Ｃ）上のファイルＡを、ボリュームＢ（４０−Ｂ）にコピーする場合を例として説明する。
【００１４】
まず転送元ボリュームに対する処理として、ディレクトリ領域２３０を検索して、ファイル名２７０がファイルＡであるディレクトリエントリ２６０を取得する。このディレクトリエントリのファイル開始位置２８０より、ファイルＡが１６０番目のクラスタから始まることが判明する。次に、ＦＡＴ領域２２０から１６０番目のＦＡＴエントリから始まるＦＡＴチェーン３１０を取得する。取得したＦＡＴチェーンにおいて、先頭のＦＡＴエントリから順次、それに対応するクラスタを読み込む。
【００１５】
転送元でのクラスタの読込みに対応して、その転送先となる転未使用クラスタを送先ボリュームで検索する。すなわち、転送先ボリュームのＦＡＴ領域２２０中をサーチして、値が零であるＦＡＴエントリを取得する。そして、取得したＦＡＴエントリに対応したクラスタに、前記の転送元で読込んだクラスタ・データを書き込む。
（従来技術１）
前述したようにボリューム間のファイル転送では、転送元ボリュームでのファイルを構成するクラスタ群を同定するためのＦＡＴ領域の検索処理と、転送先での未使用クラスタを取得するためのＦＡＴ領域の検索処理が必要となる。ギガバイトのサイズをもつファイルを転送する場合、粒度の小さいクラスタ毎に転送元と転送先のＦＡＴ領域を検索することは処理負荷が大きい。例えば、４ギガバイトのファイルを４キロバイトのクラスタ単位で転送すると、転送元と転送先でそれぞれ１メガ個のＦＡＴエントリを読込んで、同数のクラスタを同定する必要がある。ファイルのサイズに比べて、過小な単位で管理しているために、ファイル管理のためのコストが、ファイル転送処理全体に占める比率が過大となっている。
【００１６】
そこで、記憶領域１０に、ファイル管理方法の異なる複数のボリューム領域４０を設け、保存されるファイル９０毎にその特性に最適のファイル管理方法をもつボリューム領域を選択して、そこに保存することを特徴とするファイル保存方式が従来技術として考案されている（例えば特許文献１参照。）。
【００１７】
この従来技術では、１つの記憶領域１０中にクラスタサイズの異なる複数のボリューム領域４０を設け、保存するファイル毎に、ファイル管理コストと記憶容量の利用効率との間のトレードオフを考慮して、記録するボリュームを決定する。図８の例では、前記のようにボリュームＣ（４０−Ｃ）におけるクラスタ１００のサイズを４キロバイトとしたが、ボリュームＢ（４０−Ｂ）のクラスタサイズは３２キロバイトとボリュームＣの８倍の大きさとする。
【００１８】
動画ファイルのようにサイズの大きなファイルは、クラスタサイズの大きなボリュームＢへ記録する。これにより、クラスタサイズが８分の１であるボリュームＣに記録した場合に比べて、転送元ボリュームでのファイルを構成するクラスタ群を同定するためのＦＡＴ領域の検索処理と、転送先での未使用クラスタを取得するためのＦＡＴ領域の検索処理といったファイル管理のためのコストが８分の１となる。
【００１９】
しかし、たとえ１バイト長のファイルであっても記憶領域として１つのクラスタが割当てられるので、クラスタのサイズを大きくすると記憶領域の利用効率が低下する。そこで、小規模のテキストファイルのようにサイズの小さなファイルは、クラスタサイズの小さなボリュームＣに記録することにより、記憶容量の利用効率を改善することができる。
（従来技術２）
ファイル転送に伴うファイル管理コストを低減するために、「従来技術１」では１つの記憶領域１０中にクラスタサイズの異なる複数のボリューム領域４０を設けたが、１つのボリューム領域においてファイルのサイズに応じて管理単位のサイズを変更して、通常のファイルに対してはクラスタ単位で転送を実施し、大きいサイズのファイルに対しては複数の連続するクラスタ群をまとめた単位（以下では、スーパークラスタ３２０と呼ぶ）で転送を実施する転送方式が従来技術として考案されている（例えば特許文献２参照。）。この従来技術について、図７に基づいて説明する。
【００２０】
ファイル管理情報１２０には、ファイル９０をクラスタ１００単位で管理するための、前記ＦＡＴ領域２２０と前記ディレクトリ領域２３０が存在する。それに加えて、所定の数の連続するクラスタをまとめたスーパークラスタ３２０毎に、使用中であるか未使用であるかを管理するための使用状況管理領域がファイル管理情報１２０として存在する。所定閾値以上のサイズのファイルをボリューム間転送する場合、転送先ドライブでＦＡＴ領域２２０を検索してクラスタ単位に未使用領域を求める代りに、前記の使用状況管理領域を参照してスパークラスタ３２０単位で未使用領域を取得する。転送先でのファイル管理単位を大きくすることにより、転送データを書き込むための領域を検索するための負荷が低減する。さらに、転送先での書込み領域の連続性がスーパークラスタ３２０単位で保証されるので、転送速度が向上する。
（従来技術３）
記憶媒体間でのデータ転送としては、「従来技術２」で述べた「ファイル単位の転送」以外に、ボリュームのバックアップのように転送元ボリュームの全記録データを転送先にコピーする「ボリューム単位の転送３３０」がある。
【００２１】
ボリューム単位の転送３３０では、セクタ２０がファイル９０として使用されているかどうかに関わらず、ボリューム内の全てのセクタをそのまま転送先に書き込めばよい。すなわち、転送元ボリューム４０のサイズ以上のボリュームを転送先の記憶領域１０に割当て、転送元ボリューム４０内のセクタ２０を仮想セクタアドレス空間５０内での並びの順序で読出し、転送先ボリュームの仮想セクタアドレス空間内で同一のアドレスをもつセクタへ読込んだセクタデータを書き込むことで、転送元ボリュームのセクタイメージをそのまま転送先ボリュームに複製することができる。
【００２２】
ボリューム単位の転送３３０は、転送元ボリューム内の全てのセクタをそのまま転送先に複製するだけなので、ファイル管理情報１２０を解析するためのオーバーヘッドが発生しない。しかし、転送元ボリュームのファイル領域８０に未使用のセクタ群（以下では、ファイル空間内未使用領域１１０と呼ぶ）が大容量で存在すると、本来は転送する必要がないこの領域も転送してしまうためのオーバーヘッドが発生する。
【００２３】
そこで、ボリューム単位の転送３３０においても、転送元ボリュームのＦＡＴ領域２２０をチェックし、未使用のクラスタ（すなわち、対応するＦＡＴエントリ３００の値が零であるクラスタ）は転送の対象から除外するする転送方式が従来技術として考案されている（例えば特許文献３参照。）。
【特許文献１】特開平９−３１９５２３号公報（第１頁、第１図）
【特許文献２】特開２００３−２９６１５６号公報（第１４頁、第１図）
【特許文献３】特開２００３−２５６１４８号公報（第１８頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【００２４】
通常、ボリューム領域４０のサイズは一旦割当てられた後で、増減させることは困難である。従来技術１では１つの記憶領域１０をクラスタサイズの異なる複数のボリューム領域４０に分割するが、各ボリューム領域のサイズをその使用に先立って、固定的に決定する必要がある。しかし、各ボリューム領域の使用量は使用状況に依存して決まるので、予め決定することは困難である。例えば、動画ファイルを多く記録するユーザに対してはクラスタサイズの大きなボリュームの容量を大きくする必要が有り、逆に、サイズの小さいデータファイルを多く記録するユーザに対してクラスタサイズの小さなボリュームの容量を大きくする必要がある。動画ファイルを記録する場合、クラスタサイズの小さなボリュームにいくら空き領域が存在しても使用することができない。したがって、従来技術１では記録するファイルの特性に合わせて、各ボリュームのサイズを予め設定しておく必要があるがこれは困難であり、その結果、記憶容量の利用率が低下してしまうことが多い。
【００２５】
また、記憶媒体間でのデータ転送アプリケーションとしては、転送先の記憶媒体は転送されたファイル群をそのままの形で保持しておくだけでよく、保存ファイルへの書込みアクセスが不要なものがある。例えば、情報処理機器の内蔵ハードディスクを外部のハードディスクにバックアップした場合、転送先の外部ハードディスクに対してはバックアップデータを復旧する場合の読出しアクセスは必須であるが、保存されているファイルを変更するための書込みアクセスは不要である。前記外部ハードディスクへの書込みアクセスは、新たなバックアップデータを上書きする場合だけ必要となる。
【００２６】
ボリューム４０が前記のようにファイルへの書込みアクセスが不要である場合、ファイル空間内未使用領域１１０に割当てられたセクタ２０は使用されることはない。しかし、前記の従来技術２と従来技術３では、ファイル空間内未使用領域１１０に対してもセクタ２０が固定的に割当てられるので、転送先ボリュームの記憶容量を浪費することになる。
【００２７】
また、従来技術２では転送先での空き領域を管理する単位（スーパークラスタ３２０）を大きくすることにより、ボリューム４０間でのファイル転送のための管理コストを低減しているが、転送元ファイル９０を構成するクラスタ１００を同定するためにＦＡＴ領域２２０の検索は必要である。ＦＡＴ領域２２０の検索において、対象ファイルが分断化している場合は対応するＦＡＴチェーン３１０も分断化するので、ＦＡＴチェーン上で隣り合うＦＡＴエントリ３００がセクタアドレス空間３０上では大きく隔たっている場合がある。ハードディスク等のディスク型記録媒体では、セクタアドレス空間３０上で隔たったセクタにアクセスするためには、磁気ヘッド３４０を移動させるための時間（シーク時間）が数十ミリ秒必要となる。したがって、転送元ボリュームにおけるファイル領域８０の分断化状況によっては、従来技術２によるファイル単位の転送ではＦＡＴ領域２２０の検索に長時間要する危険性がある。
【００２８】
また、従来技術３のボリューム単位のデータ転送３３０では、転送元ボリューム４０中の全セクタ２０が転送先ボリュームの対応するセクタにそのまま複製される（ただし、転送先ボリュームのファイル空間内未使用領域１１０には書き込みは実行されない）。このため、転送元で分断化していたファイル９０は、転送先でもそのまま分断化したままのセクタ配置で記録される。これに対して、従来技術２のようにファイル単位で転送すると、転送先ボリュームでファイルが新たなセクタ配置で再構成されるので、転送元のファイルが分断化していても転送先では連続セクタに記録される。前述のように、分断化した記録データへのアクセスはシーク時間のためにアクセス性能の低下につながるので、記憶媒体間でのデータ転送においてファイルの配置が再構成されないことは、従来技術３における問題点である。
【００２９】
以上の従来技術１、従来技術２および従来技術３における課題を受け、本発明では、複数のボリュームが存在する記憶領域において、記憶容量の高い利用効率を実現するボリューム管理装置を実現することを目的とする。
【００３０】
特に、バックアップ形式のボリューム間データ転送において、転送先ボリュームの記憶容量の高い利用効率を実現するとするデータ転送装置を実現することを目的とする。
【００３１】
また、ボリューム単位のデータ転送３３０を、転送元ボリュームでの記録状態に依らず高速に実行できるデータ転送装置を実現することを目的とする。
【００３２】
さらに、転送先ボリュームにおいてデータ記録位置を再配置することでデータ配置の分断化を解消することができるデータ転送装置を実現することを目的とする。
【課題を解決するための手段】
【００３３】
前記の目的を達成するために請求項１に記載のデータ保存装置は、保存すべきデータを生成するデータ発生源と、記憶アドレス空間を複数のボリューム空間に分割し、各ボリューム空間毎に独立したファイルシステム空間をもつ記憶装置を１つまたは複数有し、前記データ発生源で生成された第１のデータを保存先である第１のボリューム空間にファイルとして記録するデータ保存装置であって、ボリューム空間を固定長の記憶ブロックが動的に割当てられる仮想記憶として管理し、前記第１のデータ中に有意な情報を保持していない無為データ部分が存在する場合、
前記第１のボリューム空間において前記の無為データ部分に対応する空間へ前記記憶ブロックを割当てないことを特徴としたものである。
【００３４】
また請求項２に記載のデータ保存装置は、請求項１記載のデータ保存装置であって、前記データ発生源で生成されたデータにおいて同一のデータ値が所定の長さ以上続く部分を前記無為データ部分とすることを特徴としたものである。
【００３５】
また請求項３に記載のデータ保存装置は、請求項１記載のデータ保存装置であって、前記データ発生源は第２のボリューム空間内のデータを所定の順番に読出し、前記第２のボリューム空間内でファイルが配置されていない空間を前記無為データ部分とすることを特徴としたものである。
【００３６】
また請求項４に記載のデータ保存装置は、請求項３記載のデータ保存装置であって、前記第２のボリューム空間のファイルシステム空間はＦＡＴファイルシステム空間であり、ＦＡＴエントリが零であるか非零であるかにより、対応するファイルシステム空間にファイルが配置されているか否かを判断することを特徴としたものである。
【００３７】
また請求項５に記載のデータ保存装置は、請求項３記載のデータ保存装置であって、前記第２のボリューム空間のファイルシステム空間はユニバーサルディスクフォーマットファイルシステム空間であり、空間ビットマップ記述子が零であるか非零であるかにより、対応するファイルシステム空間にファイルが配置されているか否かを判断することを特徴としたものである。
【００３８】
また請求項６に記載のデータ保存装置は、記憶アドレス空間を複数のボリューム空間に分割し、各ボリューム空間毎に独立したファイルシステム空間をもつ記憶装置を有し、各ボリューム空間を仮想記憶として管理するデータ保存装置であって、前記記憶装置の記憶領域は複数のブロックから構成され、各ボリューム空間は複数のサブ空間に分割され、各サブ空間は前記ブロックのうちの特定の１つにのみ割当て可能であり、あるサブ空間（第１のサブ空間）へ割当て可能なブロックが他のサブ空間（第２のサブ空間）に割当て済みである場合、前記第１のサブ空間へのアクセスを不良記憶領域へのアクセスとして取り扱うことを特徴としたものである。
【発明の効果】
【００３９】
本発明の情報記録管理装置では、各ボリューム内でファイルとして使用されていない記憶領域は、他のボリュームの記憶領域として使用することが可能なので、複数のボリュームが存在する記憶装置における記憶容量の利用効率を向上することができる。
【００４０】
また本発明の情報記録管理装置では、各ボリューム内で同一のデータが連続して記録されている記憶空間に対しては物理的な記憶領域を割当てられず、この使用されなかった記憶領域を他のボリュームの記憶領域として使用することが可能なので、複数のボリュームが存在する記憶装置における記憶容量の利用効率を向上することができる。
【００４１】
また本発明の情報記録管理装置では、あるボリュームから他のボリュームにデータを転送する時に、ボリューム空間がファイルとして使用されているかどうかを判断するためにファイル管理情報にアクセスする必要があるが、これはファイル管理情報の先頭から最後までシーケンシャルに一通りだけアクセスすればよく、ファイル管理情報に対する検索等のランダムアクセスは不要なので、転送を高速化することができる。
【００４２】
また本発明の情報記録管理方法では、ボリューム空間に対する記憶領域の割当てはそのボリューム空間にデータが書き込まれる時に実行されるので、アドレス空間内で分断化しているデータであっても、物理的な記憶領域上では連続的に配置される可能性がある。
【００４３】
また本発明の情報記録管理装置では、記憶装置の全記憶容量を全てのボリューム間で共有させ、各ボリュームにその使用状況に応じた記憶容量を動的に割り付けることができるので、複数のボリュームが存在する記憶装置における記憶容量の利用効率を向上することができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の実施の形態について、図を用いて説明する。
【実施例１】
【００４５】
図１は、本発明を適用したデータ転送装置の全体構成を示す。データ転送装置４００は、リームバブル記憶媒体であるメモリカード４１０に記録されたデータを、大容量のＨＤＤ装置４２０に複製する機能を有する。本実施例では、データ転送装置４００およびＨＤＤ装置４２０は小型かつ軽量で、外出先でムービー等でメモリカード４１０に記録されたディジタルコンテンツをその場で移動して保存することができる携帯型データ蓄積装置として使用される。そこで本実施例では、ＨＤＤ装置４２０に保存されるデータは携帯先での一時的なものであり、この一時保存されたデータはデータ転送装置４００に内蔵されているＵＳＢインタフェース４３０を介して、パーソナルコンピュータ等に移動して永続的に保存される。
【００４６】
データ転送装置４００は、装置内の動作を制御するプロセッサ４４０と、プロセッサ４４０の作業用一時記録領域である主メモリ４５０と、電源ＯＮ／ＯＦＦを跨いで保持される必要のある情報を読み書きするための不揮発性メモリであるＥＥＰＲＯＭ４６０と、前記プロセッサにより解釈／実行さえる命令群が記録されているＲＯＭ４７０と、ＵＳＢ回線との通信を終端するＵＳＢ  Ｉ／Ｆ４３０と、ＨＤＤ装置４２０との通信を終端するＨＤＤインタフェース４８０と、メモリカード４１０との通信を終端するカードＩ／Ｆ４９０と、ＨＤＤ装置４２０またはメモリカード４１０との間で送受信されるデータを一時的に保持しておくためのデータバッファ５００と、ＨＤＤ装置４２０またはメモリカード４１０とデータバッファ５００間のデータ転送を実行するＤＭＡＣ５１０から構成される。
【００４７】
メモリカード４１０は、データ転送装置４００からの指示を受け付けてデータ転送を実行するカード制御部５２０と、記憶領域１０としての不揮発性半導体メモリ５３０から構成される。不揮発性半導体メモリ５３０は数ギガバイトの容量をもち、これは再生時間が十分程度の高精彩動画を記録可能な容量に相当する。不揮発性半導体メモリ５３０には、１つのボリューム領域４０−Ｄが構築されており、このボリューム内のファイル領域８０−Ｄのファイルとして、動画等のコンテンツが記録される。
【００４８】
ＨＤＤ装置４２０は、記録データの流れに直接関与するデータ系の構成要素と、ＨＤＤ装置自体の動作を制御するための制御系の構成要素からなる。データ系の構成要素としては、記録領域１０としてのＨＤＤディスク５５０と、ＨＤＤディスク上のデータへのアクセスを実行する磁気ヘッド３４０と、データ転送装置４００から渡された書込みデータを一時保存するライトバッファ５６０と、ＨＤＤディスク５５０から読み出されたデータを一時保存するリードバッファ５７０がある。制御系の構成要素としては、データ転送装置４００からの指示を受け付けてデータ転送を制御するＨＤＤ制御部５８０と、ＨＤＤの動作を管理するための情報であるＨＤＤ管理情報５９０と、磁気ヘッド３４０によるＨＤＤディスク５５０へのアクセスを制御するヘッドアクセス回路６００と、ライトバッファ５６０とヘッドアクセス回路６００の間に位置して書込みデータの定数性を判断するセグメント定数性検出部６１０がある。これらの制御系の構成要素は、内部バス６２０により連結されている。
【００４９】
ＨＤＤディスク５５０上には複数のボリューム領域４０が構築されているが、各ボリューム領域にはメモリカード４１０のボリューム４０−Ｄのある時点でのデータイメージが複製されている。例えば、最初に撮影したメモリカード１枚分の動画をボリューム４０−Ａに保存さあれ、次に撮影したメモリカード１枚分の動画をボリューム４０−Ｂに保存されている。これにより、数ギガバイトのメモリカード４１０が１枚と、１００ギガバイト程度のＨＤＤ装置４２０があれば、メモリカード数十枚分の動画を保存可能となる。
【００５０】
次に、ＨＤＤディスク５５０上のボリューム領域へのセクタ２０の割当方法について、図２に基づいて説明する。図２は本発明に固有のボリューム領域割当方式を示しており、図７で示した従来技術に対応している。ここでは、図７との差分に関してのみ述べる。図７の従来技術では、ファイル領域８０の仮想セクタアドレス空間５０に対しては、セクタアドレス空間３０内の実セクタ２０が１対１で漏れなく割当てられている。このため前記のように、ファイル空間内未使用領域１１０に対しても実セクタ２０が固定的に割当てられる。
【００５１】
これに対して、図２に示す本発明のボリューム領域割当管理では、セクタアドレス空間３０内の実セクタ２０は所定の数を１纏めとした単位（以下では、セグメント６３０と呼ぶ）で仮想セクタアドレス空間への割当を管理する。ファイル領域８０内でファイル９０として使用されている仮想セクタアドレス空間（図２の割当済み仮想セクタドレス空間６４０）にのみセグメント６３０を割当て、ファイル空間内未使用領域１１０に対しては仮想セクタアドレス空間（図２の未割当仮想セクタアドレス空間６５０）は存在するが対応するセグメント６３０は割当てない。これにより、各ボリューム領域内のファイル空間内未使用領域１１０に相当するセグメント６３０を未使用セグメント群６６０として、新たなボリューム領域４０を割当てる時に使用することができる。
【００５２】
例えば、４ギガバイトのメモリカード４１０に２ギガバイトの動画コンテンツを記録し、８０ギガバイトのＨＤＤ装置４２０にボリューム単位で転送するとする。この場合、従来のボリューム領域割当管理では、２ギガバイト分のファイル９０しか存在しなくともボリューム領域４０として４ギガバイトであれば、ＨＤＤ装置４２０中のセクタ２０を４ギガバイト分必要とするので、８０ギガバイトのＨＤＤ装置４２０では２０枚分のメモリカード４１０のデータしか保存できない。一方、本発明のボリューム領域割当管理では、２ギガバイト分のファイル９０しか存在しなくともボリューム領域４０はボリューム領域自体のサイズに無関係に２ギガバイト分のセクタ２０のみを必要とするので、８０ギガバイトのＨＤＤ装置４２０では４０枚分のメモリカード４１０のデータが保存可能となる。
【００５３】
セグメント６３０のサイズとしては、記憶領域１０の容量に応じて、数十メガバイトから数ギガバイトの範囲で、セグメント管理のためのコストと記憶領域の利用率とのトレードオフを考慮した値を用いる。また、ファイル領域８０での管理単位との整合性をとるために、セグメント６３０長としては、クラスタ１００のサイズの倍数となるサイズを用いる。
【００５４】
本発明のボリューム領域割当管理では、未割当仮想セクタアドレス空間６５０として実際にセグメント６３０が割当てられていない領域がファイル領域３０内に存在するために、新規にファイルを作成する場合や、既存のファイルに追記する場合に、ファイル書込み処理に先立ってセグメント６３０を割当てる必要がある。このファイル書込み時のオーバーヘッドは、データ転送装置４００の使用形態によれば問題にならない場合がある。例えば、本実施例のように携帯型データ蓄積装置として使用される場合、ＨＤＤ装置４２０に保存されるデータは携帯先での一時的なものであるので、それに対するファイル書込みは必要ない。また、セグメント６３０のサイズを数百メガバイト以上とすれば、セグメント割当による処理オーバーヘッドは十分小さく抑えることができる。
【００５５】
次に、ボリューム領域へのセグメント６３０の動的な割当を実現するための管理情報について述べる。図１に示すように、ＨＤＤ装置４２０内のＨＤＤ管理情報５９０として、セグメント・ビットマップ６７０とセグメント・マッピングテーブル６８０が存在する。これらの管理情報の意味を図３に示す。ＨＤＤディスク５５０上の各セグメント６３０は、２つの識別番号すなわち、物理セグメント番号６９０と仮想セグメント番号７００をもつ。物理セグメント番号６９０は、セグメント６３０の物理的な配置を表す物理セグメント空間７１０内で一意な番号である。仮想セグメント番号７００は、ＨＤＤ装置に対するＡＴＡコマンド／レスポンス７２０のパラメータとして指定される値であり、データ保存装置４００から見たデータ配置は仮想セグメント番号７００に基づいた仮想セグメント空間７３０となる。したがって、データ保存装置４００はＨＤＤディスクの仮想セグメント空間７３０内にボリューム領域４０を構築するが、ＨＤＤ装置４２０内で実際に保存される配置は物理セグメント空間７１０に変換されたものとなる。
【００５６】
ＨＤＤ管理情報５９０内のセグメント・ビットマップ６７０は、各物理セグメント番号６９０に対応するセグメント６３０が割当済みか未割当かを表すビットマップとなっている。図３の例では、物理セグメント番号が０から２までが使用中である場合を示している。
【００５７】
ＨＤＤ管理情報５９０内のセグメント・マッピングテーブル６８０は、仮想セグメント番号７００から物理セグメント番号６９０へのマッピングを管理する。セグメント・マッピングテーブル６８０は、仮想セグメント番号７００毎にセグメントマッピングエントリ７４０を持つ。セグメントマッピングエントリ７４０の割当状態フラグフィールド７５０は、仮想セグメント番号に対するセグメント６３０の割当状態を表し、このフィールドに「割当済み」が設定されている場合は、物理セグメント番号フィールド７６０に割当てられているセグメント６３０の物理セグメント番号６９０が設定されている。図３の例では、０番目の仮想セグメントに０番目の物理セグメントが、１番目の仮想セグメントに１番目の物理セグメントが、４番目の仮想セグメントに２番目の物理セグメントがそれぞれ割当てられている。
【００５８】
このセグメント・マッピングテーブル６８０により、仮想的なアドレス（データ転送装置４００に見える記録位置）で指定されるセグメントを、セグメント境界を満たす任意の物理的な記録位置に配置することが可能となる。これにより、従来技術３の課題として前述した、ボリューム単位のデータ転送３３０においてセクタ配置が再構成されないという問題に対応することができる。例えば図３では、プロセッサ４４０から見える仮想アドレスとしては１番目のセグメントと４番目のセグメントは２つのセグメント分だけ隔たっているが、実際に記録されている物理位置は１番目と２番目のセグメントであり、隣接しているのでこれらのデータにアクセスするためのシーク時間は短い。
【００５９】
図３の例における２番目の仮想セグメントのように、１つのセグメント分の仮想アドレス空間がファイル空間内未使用領域１１０に含まれる場合は、この仮想アドレス空間に対するセグメント６３０の割当は実施されず、対応するセグメントマッピングエントリの割当状態フラグフィールド７５０は「未割当」となる。１つの仮想セグメント全体がファイル領域８０内で使用されているかどうかは、ＦＡＴ領域２２０により判断できる。前記のように、ＦＡＴエントリ３００は対応するクラスタ１００が未使用ならば値が零となるので、１つの仮想セグメントに含まれるクラスタに対応したＦＡＴエントリ群をチェックし、前記ＦＡＴエントリ群の値が全て零ならば対応する仮想セグメントは未使用である判断できる。
【００６０】
よって、転送元のボリューム空間がファイルとして使用されているかどうかを判断するためにファイル管理情報にアクセスする必要があるが、これはファイル管理情報の先頭から最後までシーケンシャルに一通りだけアクセスすればよく、ファイル管理情報に対する検索等のランダムアクセスは不要なので、転送を高速化することができる。
【００６１】
本発明のボリューム領域割当管理では、ファイルとして使用されていない仮想セグメントに対しては物理セグメントを割当てないことに加えて、１つの仮想セグメントに記録されているデータ値が全て同一である場合も物理セグメントを割当てないことで、記憶領域の利用効率の向上を図ることを特徴としている。図３の例では、３番目の仮想セグメントにはオール０が記録されており、対応するセグメントマッピングエントリ７４０は割当状態フラグ７５０として「定数」が設定され、データ値フィールド７７０に零が設定されている。ＨＤＤ装置４２０内のＨＤＤ制御部５８０は、割当状態７５０が「定数」であるセグメントへの読込み要求を受け付けると、対応するデータ値フィールド７７０に設定されている値をセグメントのサイズ分だけリードバッファ５７０に書き込むことにより、物理セグメント６３０が未割手でも読出しアクセスを実現できる。
【００６２】
１つの仮想セグメントに記録されているデータ値が全て同一であるかどうかの判断は、図１に示すセグメント定数性検出部６１０が実行する。セグメント定数性検出部６１０は、ライトバッファ５６０中のデータを監視し、１つのセグメントに渡って同一のデータが連続していることを検出すると、内部バス６２０を介してＨＤＤ制御部４２０に通知する。
【００６３】
以上に説明したボリューム領域割当管理により、本発明のＨＤＤ装置４２０では、セグメントに渡って同一のデータ値であるファイルが多数存在すれば、実際の記憶容量を越えたデータ量を保存することができる。この種のファイルとしては、データを記録する位置（すなわち、ファイル先頭からのオフセット値）が意味をもつ記録フォーマットであるためにファイル中に有効なデータが局所的に点在する場合が考えられる。
【００６４】
このようなファイルはスパースファイルと呼ばれ、ＵＤＦ（Ｕｎｉｖｅｒｓａｌ  Ｄｉｓｋ  Ｆｏｒｍａｔ）、ＮＴＦＳ（ＮＴ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）等の既存のファイルシステムにおいても、有効なデータ部分のみへ記憶領域を割当てることにより、記憶容量の利用効率を改善している。しかし、これらの従来ファイルシステムでは、スパースファイルにおいて割当を省くことができたセクタ群はファイル空間内未使用領域１１０に属することになるが、前述のようにこの領域内のセクタは特定のボリュームに固定的に割当てられるため、他のボリュームにおいて使用することができない。このため前記の例のように、４ギガバイトのボリュームに２ギガバイトの有効データしか存在しなければ、残りの２ギガバイトはこのボリューム中のファイル空間内未使用領域に存在するが、この未使用領域を他のボリュームで使用することができないので、複数のボリュームが存在する記憶領域１０においては記憶容量の利用効率が低下する。
【００６５】
これに対して本発明では、スパースファイルにおいて割当を省くことができたセクタ群は未使用セグメント群６６０に属することになり、全てのボリューム（新たに作成するボリュームを含む）で使用することができるので、複数のボリュームが存在する記憶領域１０において記憶容量の利用効率を改善することができる。
【００６６】
次に、ボリュームにデータを書き込むための処理手順を、図４に基づいて説明する。図４に示すセクタ書込み処理は、書込み対象セクタの開始位置を示す「ボリューム内仮想セクタアドレス」７８０と、書き込むセクタ数を示す「ライトセクタ数」７９０と、書き込むデータが配置されているデータバッファ５００上の開始アドレスを示す「ライトデータバッファ」８００を入力情報として受け取る。
【００６７】
まず、「セクタ−セグメントアドレス変換処理」８１０を実行して、「ボリューム内仮想セクタアドレス」７８０と「ライトセクタ数」７９０から、書込み対象のセクタ群が属するセグメント６３０の識別番号である「仮想セグメント番号」８２０と、書込み対象領域のセグメント内オフセット値を表す「セグメント内オフセット」８３０を算出する。ここでの計算には、パーティションテーブルエントリ中の開始セクタアドレス１９０とボリュームサイズ２００を使用する。
【００６８】
次に、前記の「仮想セグメント番号」８２０により識別される書込み対象の仮想セグメントについて、その割当状態をチェックする（「仮想セグメントの割当状態チェック」８４０）。対象の仮想セグメントに対するセグメント・マッピングテーブルエントリ７４０において、その割当状態フラグ７５０が未割当か定数であれば、前記仮想セグメントには物理セグメントが割り当てられていないので新たに割り当てる必要がある。
【００６９】
仮想セグメントへの物理セグメントの割当は、まずセグメント・ビットマップ６７０に基づいて、未使用の物理セグメントを検索する（「未使用物理セグメントの検索」８５０）。未使用の物理セグメントが見つかれば、これを仮想セグメントに割り当てるために、対応するセグメント・マッピングテーブルエントリ７４０とセグメント・ビットマップ６７０を更新する（「物理セグメントの割当」８６０）。
【００７０】
書込み対象の仮想セグメントへ割り当てられている物理セグメントの番号８７０が同定されると、この物理セグメントの前記セグメント内オフセット位置８３０へ、ライトデータバッファ８００中のデータを、ライトセクタ数７９０で指示されたサイズだけ書き込む（「物理セグメントへのデータ書込み」８８０）。ここで書き込まれるデータはセグメント定数性検出部６１０により監視されている。セグメント定数性検出部６１０は、書き込み対象の仮想セグメント全体が１つの定数値を検出すると、その仮想セグメントを定数かする処理を起動する。
【００７１】
セグメントの定数化８９０では、対象のセグメントに書き込まれている定数値を、セグメント・マッピングテーブルエントリのデータ値フィールド７７０に設定し、割当状態フラグフィールド７５０を定数に設定し、その後セグメント・ビットマップ６７を更新して、この仮想セグメントに割当てられていた物理セグメントを未使用にする。
【００７２】
次に、ボリューム中のデータを読み出すための処理手順を、図５に基づいて説明する。図４に示すセクタ読込み処理は、読込み対象セクタの開始位置を示す「ボリューム内仮想セクタアドレス」９００と、読み出すセクタ数を示す「リードセクタ数」９１０と、読み出したデータを格納するデータバッファ５００上の開始アドレスを示す「リードデータバッファ」９２０を入力情報として受け取る。
【００７３】
まず、「セクタ−セグメントアドレス変換処理」９３０を実行して、「ボリューム内仮想セクタアドレス」９００と「リードセクタ数」９１０から、読み出し対象のセクタ群が属するセグメント６３０の識別番号である「仮想セグメント番号」９４０と、書込み対象領域のセグメント内オフセット値を表す「セグメント内オフセット」９５０を算出する。
【００７４】
次に、前記の「仮想セグメント番号」９４０により識別される仮想セグメントについて、その割当状態をセグメント・マッピングテーブルエントリ７４０に基づいてチェックする（「仮想セグメントの割当状態チェック」９６０）。
【００７５】
物理セグメントが割当て済みならば、この物理セグメントの前記セグメント内オフセット位置９５０に記録されているデータをリードセクタ数９１０で指示されたサイズだけ読み出し、リードデータバッファ９２０へ転送する（「物理セグメント・データの読出し」９７０）。
【００７６】
セグメント・マッピングテーブルエントリの割当状態フィールド７５０が定数ならば、データ値フィールド７７０の値を、リードセクタ数９１０で指示されたサイズだけリードデータバッファ９２０へ転送する（「定数データ生成」９８０）。
【００７７】
以上の「書込み処理」と「読出し処理」により、ＨＤＤ装置４２０を使用するデータ転送装置４００は、ＨＤＤ装置４２０内で実行されているセグメント６３０単位での記憶領域管理を意識せず、通常のハードディスクと同様に使用することができる。
【００７８】
実施例１では、ボリューム上のファイルを管理するファイルシステムが固定長のブロック単位（すなわち、クラスタ単位）である場合に対して、本発明の情報記録管理方法を適用したが、管理単位が可変長であるファイルシステムに対しても本発明を適用可能である。例えば、ＵＤＦのボリュームに本発明を適用する場合は、セグメントがファイルシステムにより使用されているかどうかを判断するために、ＦＡＴ領域２２０の代わりに、ＵＤＦボリューム中の各論理ブロックが使用中か未使用かを表す「空間ビットマップ記述子」を使用する。
【実施例２】
【００７９】
実施例１では、図１に記載のデータ転送装置４００はメモリカード４１０に記録されたデータをＨＤＤ装置４２０に転送する携帯型バックアップ装置である場合について述べた。これに対して実施例２では、転送元のデータがストリームデータであるデータ転送装置４００に対して、本発明を適用した場合について述べる。実施例２の説明では、実施例１との差分についてのみ述べる。
【００８０】
図１のデータ転送装置４００は、動画インタフェース９９０と静止画インタフェース１０００を介して、外部のカメラ装置で撮影された動画および静止画を受け取る。動画はストリームデータとして撮影中にリアルタイムで送られてき、静止画は１枚撮影する毎にそのデータが送られてくる。データ転送装置４００は、これらのデータを受信するとＨＤＤ装置４２０にファイルとして保存していく。
【００８１】
１枚の静止画データは数百キロバイト程度のサイズであるが、動画は数百メガバイトから数十ギガバイトとなり、記録した場合のファイルサイズが大きく異なる。そこで、静止画と動画を記録するボリュームを分ける。ファイル管理コストと記憶容量の利用効率との間のトレードオフを考慮して、静止画を記録するボリューム４０−Ａはクラスタのサイズは通常の値である４キロバイトとしたが、動画を記録するボリューム４０−Ｂはクラスタのサイズを３２キロバイトと大きくする。
【００８２】
これにより、１つの動画ファイルを保存する場合のファイル管理コストは同じサイズの静止画ファイルを保存する場合の８分の１となり、転送速度の高速化が図れる。反面、１つの動画ファイルを保存する時に無駄に使用される記憶領域は最大で３２ＫＢと大きくなるが、数百メガバイトから数十ギガバイトのファイルサイズと比較すれば十分小さい。これに対して、数百キロバイト程度のファイルサイズしかない静止画ファイルの保存においては、ファイル管理コストが増加してもクラスタサイズを小さくして無駄に使用される領域を小さくする必要がある。
【００８３】
ファイルの種類により保存先のボリュームを分けると、従来技術１の課題として述べたように、各ボリューム領域のサイズをその使用に先立って固定的に決定する必要があるが、使用状況に依存して決まる各ボリューム領域の必要容量を予め決定することは困難であり、結果として記憶容量の利用率が低下してしまうことが多い。そこで本発明では、各ボリュームの未使用領域を全ボリュームで共有させ、ボリュームの使用状況に応じて動的に容量を割当てることで、ＨＤＤディスク５５０全体としての記憶容量の利用効率を改善する。
【００８４】
ボリューム領域への物理セグメントの割当て管理方法を図６に示す。図３に示した実施例１のセグメント割当管理では、各ボリュームは仮想セグメント空間７３０内でボリュームのサイズに応じた独立した区分を固定的に割当てられている。これに対して図６のセグメント割当管理では、仮想セグメント空間７３０内で各ボリュームはＨＤＤディスク全体の記憶容量に相当するサイズの区分を持つ。ボリューム中の仮想セグメントは、ファイルシステムの管理情報が配置される先頭セグメントを除いて、仮想セグメント番号７００と同一の値の物理セグメント番号６９０をもつ物理セグメントにのみ対応付けられ得る（図６中の「ストレートマッピング・セグメント１０２０」）。
【００８５】
ストレートマッピング・セグメント１０２０は、対応する物理セグメントが他のボリュームに使用されると、記憶領域をもつことができなくなる。この物理セグメントを割当できなくなった仮想セグメントに対するライトアクセスはエラーとなるので、データ転送装置４００はこの領域を不良セクタ領域と判断して、今後使用されることが無いようにファイル空間内未使用領域１１０から取り出す。ＦＡＴファイルシステムでは、不良セクタを含むクラスタに対応したＦＡＴエントリ３００に、不良であることを表す非零値を書き込む。このような他のボリュームに割当てられているために使用することが不可となったストレートマッピング・セグメントを以下では擬似不良セグメント１０３０と呼ぶこととする。図６の例では、ボリューム４０−Ｂの２番目の仮想セグメントは、対応する物理セグメントがボリューム４０−Ａに割当てられているため擬似不良セグメントとなっている。
【００８６】
ストレートマッピング・セグメント１０２０は各ボリュームのその使用状況に応じて動的に割当てられるが、ＦＡＴ領域２２０等のファイル管理情報１２０は各ボリュームの仮想セクタアドレス空間５０内で所定の位置に格納される必要があるので擬似不良セグメント化する可能性のあるストレートマッピング・セグメント１０２０に配置することはできない。例えば図８に示すように、ブートセクタ２１０はボリュームの先頭に配置し、ＦＡＴ領域２２０はその直後に配置しなければならない。このように配置する位置がファイルシステムにより決定されている領域に対しては、セグメントを固定的に割当てる（固定割当セグメント１０４０）。図６に示す例では、ファイル管理情報１２０が存在する各ボリュームの先頭セグメントのみを固定割当セグメント１０４０として割当てている。
【００８７】
全ボリュームのファイル領域内未使用領域１１０をストレートマッピング・セグメント１０２０として共有し、あるボリュームに割当てられたストレートマッピング・セグメントについては他のボリュームでは不良セクタ領域として認識させて使用不可とする。このボリューム領域の共有管理により、各領域のファイル領域９０に対してはその使用状況に応じて物理領域が割当てられることになる。例えば先の例では、ユーザデータをまだ記録していない状態では静止画用のボリューム４０−Ａと動画用のボリューム４０−Ｂは未使用のストレートマッピング・セグメント１０２０を共有しており、両方のボリュームともＨＤＤディスク５５０の全容量とほぼ等しいサイズのファイル領域内未使用領域１１０を所有している。その後ユーザデータとして１０ギガバイトの静止画と９０ギガバイトの動画を記録したとすると、静止画用ボリューム４０−Ａは１０ギガバイトのファイル領域８０と９０ギガバイトの不良セクタ領域をもち、逆に動画用ボリューム４０−Ｂは９０ギガバイトのファイル領域８０と１０ギガバイトの不良セクタ領域をもつようになる。
【００８８】
次に図６に基づいて、本実施例おける管理情報について述べる。ＨＤＤ管理情報５９０としては、ボリューム管理テーブル１０５０、物理セグメント管理テーブル１０６０及び、未使用セグメント数カウンタ１０７０がある。
【００８９】
ボリューム管理テーブル１０５０は、各ボリュームへの物理セグメントの割当状態を表すボリューム情報１０７５をテーブルエントリとしてもつ。ボリューム情報１０７５は、ボリュームの先頭セグメントに対してどの物理セグメントが割当てられているかを示す先頭物理セグメント番号１０８０と、ボリュームに割当てられている物理セグメントの数を表す割当済みセグメント数１０９０をもつ。先頭物理セグメント番号１０８０により、前記の固定割当セグメント１０４０を登録する。図６の例では、ボリューム４０−Ａの状態を表す０番目のエントリは、先頭セグメントとして０番目の物理セグメントが割当てられおり、現在には合計２つの物理セグメントが割当て済みであることを示している。
【００９０】
物理セグメント管理テーブル１０６０は、各物理セグメントの割当状態を表す物理セグメント管理情報１１００をテーブルエントリとしてもつ。物理セグメント管理情報１１００は、対象物理セグメントの割当状態を表す使用状態フラグ１１１０と、対象物理セグメントが割当られているボリュームの番号を表す割当先ボリューム番号１１２０をもつ。使用状態フラグ１１１０は、対象物理セグメントが未割当てならば「未割当」、固定割当セグメント１０４０として割当てられているならば「固定割当」、ストレートマッピング・セグメント１０２０として割当てられているならば「動的割当」を値とする。図６の例では、０番目と１番目の物理セグメントはそれぞれボリューム４０−Ａとボリューム４０−Ｂの先頭セグメントに固定的に割当てられており、２番目の物理セグメントはボリューム４０−Ａに、３番目の物理セグメントはボリューム４０−Ｂに動的に割当てられている。
【００９１】
未使用セグメント数カウンタ１０７０は、ボリュームに割当てられていない物理セグメントの総数を表す。
【００９２】
以上のボリューム領域の共有管理により、各ボリューム領域のファイル領域９０にその使用状況に応じて物理領域が割当てられることができ、従来技術１の課題として述べた、ファイルの種類により保存先のボリュームを分けることによる記憶容量の利用率低下を回避することができる。その上、他のボリュームに割当てられたため使用することができなくなった領域は、ファイルシステムにおける通常の不良クラスタ処理により取り扱われるので、既存のファイルシステムに対して本発明をそのまま適用することが可能である。
【００９３】
上記では、他のボリュームに割当てられたセグメントにアクセスするとエラーとなることで、そのセグメントがアクセス不能であることをデータ転送装置４００に認識させているが、この方法では１つの物理セグメント全体を使用禁止とするためにはそのセグメントに属するクラスタ全てにアクセスする必要があり、多数の無駄なアクセスを試行することになる。そこで代替手段として、ＨＤＤ制御部５８０が擬似不良セグメント１０３０内へのアクセス要求を受け取ると、その擬似不良セグメントの開始アドレスとサイズをＡＴＡコマンド／レスポンス７２０により、データ転送装置４００に通知することも可能である。この特殊なＡＴＡコマンド／レスポンス７２０を導入することで既存ファイルシステムを流用することはできなくなるが、擬似不良セグメント１０３０内の各クラスタへのアクセスを試みる必要が無くなる。
【００９４】
次に、あるボリュームに一旦割当てられた物理セグメントが未使用となった場合、それを開放して他のボリュームで再利用できるようにする必要がある。この物理セグメントの再利用処理の１実施例として、データ転送装置４００が主導する場合について述べる。データ転送装置４００は、使用中のクラスタ１００を未使用とする時に前記のセグメント定数性検出６１０を用いてセグメント６３０単位で未使用となっていないかをチェックする。もしセグメントが未使用となっていれば、そのセグメントへの物理セグメントの割当を解除するようにＨＤＤ装置４２０に依頼する。
【００９５】
その後、データ転送装置４００が他のボリュームへの書き込みにおいて擬似不良セグメント１０３０の発生を検出すると、そのボリューム中のＦＡＴ領域２２０を検索し、不良クラスタとしてマークされている領域へのアクセスを実施する。先の処理で開放された物理セグメントに対応する擬似不良セグメント１０３０は割当可能となっているので、このアクセスが成功し、通常にファイル領域として使用することができる。
【００９６】
実施例２では、各ボリュームが同種のファイルシステムすなわち、ＦＡＴファイルシステによりファイルを管理していたが、ボリューム毎に異なるファイルシステムを用いることも可能である。例えば、静止画用ボリュームはＦＡＴファイルシステムとし、動画用ボリュームはＵＤＦとすることも可能である。
【産業上の利用可能性】
【００９７】
本発明にかかるデータ転送方法は、大量のデータを記憶装置間で転送する場合、特に、携帯型のバックアップ用記憶装置に一時保存するデータを転送する場合に、転送速度の高速化と記憶容量の利用効率向上する転送装置として有用である。
【図面の簡単な説明】
【００９８】
【図１】本発明を適用したデータ転送装置の構成を表す図
【図２】本発明によるボリュームへの記憶領域の動的な割当方法を表す図
【図３】実施例１におけるボリュームへの記憶領域割当のための管理情報を表す図
【図４】実施例１におけるボリュームへのデータ書込み手順を示す図
【図５】実施例１におけるボリュームからのデータ読出し手順を示す図
【図６】実施例２におけるボリュームへの記憶領域割当のための管理情報を表す図
【図７】従来技術におけるボリュームへの記憶領域の割当方法を表す図
【図８】ボリュームに保存されているデータのファイルレベルでの配置例を表す図
【符号の説明】
【００９９】
１０  記憶領域
２０  セクタ
３０  セクタアドレス空間
４０  ボリューム領域
５０  仮想セクタアドレス空間
６０  未使用セクタ群
７０  ボリューム管理情報
８０  ファイル領域
９０  ファイル
１００  クラスタ
１１０  ファイル領域内未使用領域
１２０  ファイル管理情報
１３０  ハードディスク記憶領域
１４０  ＭＢＲ（Ｍａｓｔｅｒ  Ｂｏｏｔ  Ｒｅｃｏｒｄ）
１５０  ＥＢＲ（Ｅｘｔｅｎｄｅｄ  Ｂｏｏｔ  Ｒｅｃｏｒｄ）
１６０  パーティションテーブル
１７０  パーティションテーブル・エントリ
１８０  ボリュームタイプ
１９０  開始セクタアドレス
２００  ボリュームサイズ
２１０  ブートセクタ
２２０  ＦＡＴ領域
２３０  ディレクトリ領域
２４０  セクタ当りのバイト数
２５０  クラスタ当りのセクタ数
２６０  ディレクトリエントリ
２７０  ファイル名
２８０  ファイル開始位置
２９０  ファイルサイズ
３００  ＦＡＴエントリ
３１０  ＦＡＴチェーン
３２０  スーパークラスタ
３３０  ボリューム単位のデータ転送
３４０  磁気ヘッド
４００  データ転送装置
４１０  メモリカード
４２０  ＨＤＤ装置
４３０  ＵＳＢインターフェイス
４４０  プロセッサ
４５０  主メモリ
４６０  ＥＥＰＲＯＭ
４７０  ＲＯＭ
４８０  ＨＤＤインタフェース
４９０  カードＩ／Ｆ
５００  データバッファ
５１０  ＤＭＡＣ
５２０  カード制御部
５３０  不揮発性半導体メモリ
５５０  ＨＤＤディスク
５６０  ライトバッファ
５７０  リードバッファ
５８０  ＨＤＤ制御部
５９０  ＨＤＤ管理情報
６００  ヘッドアクセス回路
６１０  セグメント定数性検出部
６２０  内部バス
６３０  セグメント
６４０  割当済み仮想セクタドレス空間
６５０  未割当仮想セクタドレス空間
６６０  未使用セグメント群
６７０  セグメント・ビットマップ
６８０  セグメント・マッピングテーブル
６９０  物理セグメント番号
７００  仮想セグメント番号
７１０  物理セグメント空間
７２０  ＡＴＡコマンド／レスポンス
７３０  仮想セグメント空間
７４０  セグメントマッピングエントリ
７５０  割当状態フラグフィールド
７６０  物理セグメント番号フィールド
７７０  データ値フィールド
７８０  ボリューム内仮想セクタアドレス
７９０  ライトセクタ数
８００  ライトデータバッファ
８１０  セクタ−セグメントアドレス変換
８２０  仮想セグメント番号
８３０  セグメント内オフセット
８４０  仮想セグメントの割当状態チェック
８５０  未使用物理セグメントの検索
８６０  物理セグメントの割当
８７０  書き込み対象物理セグメントの番号
８８０  物理セグメントへのデータ書込み
８９０  セグメントの定数化
９００  ボリューム内仮想セクタアドレス
９１０  ライトセクタ数
９２０  ライトデータバッファ
９３０  セクタ−セグメントアドレス変換
９４０  仮想セグメント番号
９５０  セグメント内オフセット
９６０  仮想セグメントの割当状態チェック
９７０  物理セグメント・データの読出し
９８０  定数データ生成
９９０  動画入力インタフェース
１０００  静止画入力インタフェース
１０２０  ストレートマッピング・セグメント
１０３０  擬似不良セグメント
１０４０  固定割当セグメント
１０５０  ボリューム管理テーブル
１０６０  物理セグメント管理テーブル
１０７０  未使用セグメント数カウンタ
１０７５  ボリューム情報
１０８０  先頭物理セグメント番号
１０９０  割当済みセグメント数
１１００  物理セグメント管理情報
１１１０  使用状態フラグ
１１２０  割当先ボリューム番号
【図１】
2008171311.tif 000003
【図２】
2008171311.tif 000004
【図３】
2008171311.tif 000005
【図４】
2008171311.tif 000006
【図５】
2008171311.tif 000007
【図６】
2008171311.tif 000008
【図７】
2008171311.tif 000009
【図８】
2008171311.tif 000010