(57)【要約】【課題】  データの信頼性を向上させつつ、動画データ等のリアルタイム性を要求されるデータを高速に記憶することのできるデータ記憶装置を、より少数のディスクドライブでもって実現する。【解決手段】  書き込み時は複数個のＨＤＤに同一のデータを書き込み、読み込み時は複数個のＨＤＤの何れかからデータを読み込む第一の動作モードを備える。また、それとともに、読み書きを要求されているストリーム全体を、個々の本数がＨＤＤ１個当りの許容ストリーム本数を越えないようにｎ分割して、それぞれを複数個のＨＤＤに分散して処理する第二の動作モードを備える。ストリーム数判定手段で得られた判定結果の多寡に基づいて、上記第一、第二どちらかの動作モードで記憶動作を行う。【選択図】  図1
2008158572.tif 000002
【特許請求の範囲】
【請求項１】
複数個（ｎ個）の記憶媒体と、
読み書きを要求されているストリーム数を判定するストリーム数判定手段と、
書き込み時は上記複数個の記憶媒体に同一のデータを書き込み、読み込み時は上記複数個の記憶媒体のいずれかからデータを読み込む第一の動作モードと、読み書きを要求されているストリーム全体を、個々の本数が上記記憶媒体１個当りの許容ストリーム本数を越えないようにｎ分割して、それぞれを上記複数個の記憶媒体に分散して処理する第二の動作モードとを有し、上記ストリーム数判定手段で得られた判定結果に基づいて、上記第一の動作モードと上記第二の動作モードとの何れかで記憶動作を行う記憶動作制御手段と、
上記複数個の記憶媒体にデータが多重化（ｎ重化）されて書き込まれたか否かを記憶するデータ多重化管理記憶手段と、
上記ストリーム数判定手段で得られた判定結果が所定値以下である場合に、上記データ多重化管理記憶手段の記憶結果に基づいて、上記複数の記憶媒体にデータを多重化（ｎ重化）して書き込むデータ多重化処理手段とを有することを特徴とするデータ記憶装置。
【請求項２】
複数個（ｎ個）の記憶媒体と、
読み書きを要求されているストリーム全体の合計データ転送レートを判定する合計データ転送レート判定手段と、
書き込み時は上記複数個の記憶媒体に同一のデータを書き込み、読み込み時は上記複数個の記憶媒体のいずれかからデータを読み込む第一の動作モードと、読み書きを要求されているストリーム全体を、個々のデータ転送レートの合計が上記記憶媒体１個当りの許容データ転送レートを越え得ないようにｎ分割して、それぞれを上記複数個の記憶媒体に分散して処理する第二の動作モードとを有し、上記合計データ転送レート判定手段で得られた判定結果に基づいて、上記第一の動作モードと上記第二の動作モードとの何れかで記憶動作を行う記憶動作制御手段と、
上記複数個の記憶媒体にデータが多重化（ｎ重化）されて書き込まれたか否かを記憶するデータ多重化管理記憶手段と、
上記合計データ転送レート判定手段で得られた判定結果が所定値以下である場合に、上記データ多重化管理記憶手段の記憶結果に基づいて、上記複数の記憶媒体にデータを多重化（ｎ重化）して書き込むデータ多重化処理手段とを有することを特徴とするデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータを二重化（あるいは３以上の多重化）させることでデータの信頼性を向上させつつ、動画データ等のリアルタイム性を要求されるデータを高速に記憶することのできるデータ記憶装置に関するものである。
【背景技術】
【０００２】
近年、動画データや音声データなどを従来のテープメディアに代えて、ハードディスクドライブに記憶するデータ記憶装置が広く普及しつつある。ハードディスクドライブはランダムアクセス性に優れている。そのため、所望のコンテンツを瞬時に再生したり、記録のための空き領域を速やかに探し出すことができる等、従来のテープメディアにはない使い勝手の良さを有している。
【０００３】
また、パーソナルコンピュータ（以下、ＰＣ）等の情報機器においても、チューナーやコーデック（ＣＯＤＥＣ）ＬＳＩを搭載して、動画データ等を内蔵／外付けハードディスクドライブに記憶する機能を備えた機種が多数市販されている。
【０００４】
さて、動画データ等は連続的なデータであり、単にデータが誤りなく記憶媒体上に記憶されるだけでは十分でなく、時間軸上の記録・再生速度、すなわちデータの転送速度が所定値以上に維持される必要がある。
【０００５】
特に、動画データは高精細、大画面の要望により、ますます大容量化、高データ転送レート化する傾向にあり、加えて複数の動画データの記録・再生を同時に扱うことも要求されている。このことから今日、どうがデータ等を記憶するハードディスクドライブには高いデータ転送性能が望まれている。
【０００６】
一方で、ハードディスクドライブは機構部品であることから、ＰＣ等の電子機器を構成する部品としては、比較的寿命の短い部品の一つである。記憶を担う部品の故障は、単に装置が機能しないというだけに留まらず、蓄積しておいた情報を喪失してしまうことになるので、高い信頼性を確保する必要がある場合には何らかの対策が必要となってくる。
【０００７】
信頼性を向上させるために、複数のディスクドライブを備え上位装置からの書き込みに対して、複数のディスクドライブに同一のデータを重複して書き込み、データを二重化（あるいは３以上の多重化）したデータ記憶装置が知られている。
【０００８】
しかしながら、このようにデータを多重化させたデータ記憶装置においては、その動作速度は１個のディスクドライブを用いたデータ記憶装置と概ね同等か、場合によっては遅くなってしまうことが知られている。
【０００９】
そこで、データを多重化させたデータ記憶装置の動作速度を改善する工夫が、従来提案されている。例えば特許文献１に開示されるミラードディスク制御装置は、書き込み時は２個のディスク装置に同時にデータを書き込むミラーリング構成としている。読み込み時には各ディスクのヘッド位置を考慮し、ヘッド位置がより近いどちらかのディスク装置に対して読み込み要求を発行して、読み込み時の動作速度を改善したものである。
【００１０】
また、特許文献２には、第一のディスク装置を書き込み主体、第二のディスク装置を読み込み主体で使用して、ディスク装置の応答性を改善した多重化ディスク制御装置が開示されている。
【００１１】
さらに、特許文献３には、データの記憶を複数のハードディスク装置に分散させて高速化を図るとともに、分散させた個々のハードディスク装置をミラーリング構成にして、冗長化による信頼性を確保したデータアクセス装置が開示されている。
【００１２】
【特許文献１】特開平５−１６５５７９号公報
【特許文献２】特開平６−６７８１１号公報
【特許文献３】特開平７−３０２１７３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
しかしながら、特許文献１に開示される発明は、読み込みに対しては速度改善の効果が見られるものの、書き込みに対しては全く改善がなされていない。
【００１４】
一方、特許文献２に開示される発明は、書き込み要求と読み込み要求とを別々のディスクに分散して処理することで、動作速度を向上させることが可能である。
【００１５】
しかしながら、その効果は書き込み要求と読み込み要求とが適度に混在している場合に限定され、例えば書き込み要求だけが集中する場合には、ほとんど効果が期待できない。
【００１６】
特許文献３に開示される発明は、分散記憶と多重化記憶（記憶の二重化）を組み合わせることで、上記特許文献１、２に開示される発明のような欠点は解消される。しかしながらこの構成は、少なくとも４個以上のディスクドライブを必要とするため、装置の低コスト化、小型化には著しく不利となる。
【００１７】
そこで、本発明の目的は、データの信頼性を向上させつつ、動画データ等のリアルタイム性を要求されるデータを高速に記憶することのできるデータ記憶装置を、より少数のディスクドライブでもって実現することにある。
【課題を解決するための手段】
【００１８】
本発明のデータ記憶装置の第１の態様は、複数個（ｎ個）の記憶媒体と、読み書きを要求されているストリーム数を判定するストリーム数判定手段と、書き込み時は上記複数個の記憶媒体に同一のデータを書き込み、読み込み時は上記複数個の記憶媒体のいずれかからデータを読み込む第一の動作モードと、読み書きを要求されているストリーム全体を、個々の本数が上記記憶媒体１個当りの許容ストリーム本数を越えないようにｎ分割して、それぞれを上記複数個の記憶媒体に分散して処理する第二の動作モードとを有し、上記ストリーム数判定手段で得られた判定結果に基づいて、上記第一の動作モードと上記第二の動作モードとの何れかで記憶動作を行う記憶動作制御手段と、上記複数個の記憶媒体にデータが多重化（ｎ重化）されて書き込まれたか否かを記憶するデータ多重化管理記憶手段と、上記ストリーム数判定手段で得られた判定結果が所定値以下である場合に、上記データ多重化管理記憶手段の記憶結果に基づいて、上記複数の記憶媒体にデータを多重化（ｎ重化）して書き込むデータ多重化処理手段とを有することを特徴とする。
本発明のデータ記憶装置の第２の態様は、複数個（ｎ個）の記憶媒体と、読み書きを要求されているストリーム全体の合計データ転送レートを判定する合計データ転送レート判定手段と、書き込み時は上記複数個の記憶媒体に同一のデータを書き込み、読み込み時は上記複数個の記憶媒体のいずれかからデータを読み込む第一の動作モードと、読み書きを要求されているストリーム全体を、個々のデータ転送レートの合計が上記記憶媒体１個当りの許容データ転送レートを越え得ないようにｎ分割して、それぞれを上記複数個の記憶媒体に分散して処理する第二の動作モードとを有し、上記合計データ転送レート判定手段で得られた判定結果に基づいて、上記第一の動作モードと上記第二の動作モードとの何れかで記憶動作を行う記憶動作制御手段と、上記複数個の記憶媒体にデータが多重化（ｎ重化）されて書き込まれたか否かを記憶するデータ多重化管理記憶手段と、上記合計データ転送レート判定手段で得られた判定結果が所定値以下である場合に、上記データ多重化管理記憶手段の記憶結果に基づいて、上記複数の記憶媒体にデータを多重化（ｎ重化）して書き込むデータ多重化処理手段とを有することを特徴とする。
【発明の効果】
【００１９】
本発明においては、取り扱うストリームが少ないうちは複数個のＨＤＤに同一のデータを二重化（またはｎ重化）して記憶する。但し、取り扱うストリームが増加してＨＤＤの許容データ転送レートが不足した場合には、二重化記憶（またはｎ重化記憶）を取りやめて複数個のＨＤＤを個別に動作させる。そして、それぞれに異なるストリームの処理を割り当てて、データ記憶装置全体としての許容データ転送レートを増大させる。そして、データ記憶装置の取り扱うストリームが「０〜少数」の低負荷時に、データの二重化処理（またはｎ重化処理）を実行するようにした。
【００２０】
従って、本発明によれば、データを二重化（またはｎ重化）させることでデータの信頼性を向上させることができる。また、本発明によれば、動画データ等のリアルタイム性を要求されるデータを高速に記憶することのできるデータ記憶装置を、最少２個のディスクドライブを使用する構成で実現することができる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００２２】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るデータ記憶装置のブロック図である。図１の１０は、装置全体の制御を司るＣＰＵである。ＣＰＵ１０のバス（システムバス）上には、ＲＯＭ１１、ＲＡＭ１２、ＮＩＣ１３、外部機器接続インタフェース１４、デコーダ１５、ディスクコントローラ１６、グラフィック・サウンドコントローラ１７が接続されている。これらによって全体としてデータ記憶装置３０を構成する。
【００２３】
１３は、データ記憶装置３０をＬＡＮに接続するためのネットワークコントローラ（ＮＩＣ）である。１４は、データ記憶装置３０を３１の映像機器（デジタルビデオカメラ等）と接続する外部機器接続インタフェース（ＵＳＢやＩＥＥＥ１３９４等）のコントローラである。
【００２４】
１６は、１８、１９のハードディスクドライブ（ＨＤＤ）の動作を制御するディスクコントローラである。データ記憶装置３０では、ネットワークカメラや画像配信サーバ等からＬＡＮ経由で転送された動画・音声データ又は外部機器接続インタフェース１４を介して接続された映像機器３１から出力された動画・音声データをＨＤＤ１８、１９に記憶する。即ち、動画・音声データをＨＤＤ１８、１９に録画・記憶する。
【００２５】
ＨＤＤ１８、１９に記憶する動画・音声データは、通常ＭＰＥＧ、ＭｏｔｉｏｎＪＰＥＧ等、周知のフォーマットで圧縮（符号化）されている。
【００２６】
１５は、この圧縮データを伸長するためのデコーダ回路である。データの再生時、デコーダ回路１５で伸長された動画・音声データは１７のグラフィック・サウンドコントローラを介して、外部に接続されたモニタ装置３２に出力される。
【００２７】
１１は、ＲＯＭであり、ＣＰＵ１０の動作プログラムや各種テーブルデータ等が格納される。
【００２８】
１２は、ＲＡＭでＣＰＵ１０の動作メモリとして使用されるほか、システムバス上の各ブロック間で行われるデータ転送のバッファメモリとしても使用される。
【００２９】
２０は、ＣＰＵ１０の入出力ポートに接続された操作パネルであり、ボタンスイッチ、ＬＣＤ等で構成される。
【００３０】
ユーザは操作パネル２０を操作することで、データ記憶装置３０に対する所望の動作指示を行うことができる。
【００３１】
以上の構成によりデータ記憶装置３０は、ＬＡＮ経由で転送された動画・音声データおよび映像機器３１から出力された動画・音声データをＨＤＤ１８、１９に記憶して、当該記憶したデータをモニタ装置３２に出力する、録画・再生装置として機能する。
【００３２】
また、データ記憶装置３０はネットワークサーバとしての機能も有しており、ＨＤＤ１８、１９に記憶した動画・音声データを、ＬＡＮ上に接続されたＰＣ等の情報機器に配信することもできる。
【００３３】
次に、図２を用いて、ＨＤＤ１８、１９の論理的な構成（領域の区分等）について説明する。
【００３４】
図２はＨＤＤ１８、１９のフォーマット状態を示す図である。ＨＤＤ１８、１９の記憶領域は大きく二つに区分されており、記憶媒体上の外周側にシステム領域、内周側にデータ領域が割り当てられている。システム領域内のＦＡＴエントリはファイルを構成するクラスタのアロケーションテーブルであり、一つのファイルが構成される複数のクラスタのチェーン情報（次のクラスタ番号）が記憶される。
【００３５】
なお、ＦＡＴの値にはチェーン情報のほかに、未使用クラスタ、欠陥クラスタ、ファイルの終端（ＥＯＦ）が定義される。
【００３６】
ディレクトリエントリにはファイル名（パス情報を含む）と、当該ファイルの最初のクラスタ番号が記憶される。
【００３７】
ＦＡＴとディレクトリエントリにより、記憶データは「ファイル」という単位で取り扱うことが可能となる。なお二重化管理領域については後述する。
【００３８】
データ領域は外周側から順に０〜ｎのクラスタに分割されている。データ領域の大きさを７２Ｇバイト（７２Ｇバイト×１０２４×１０２４＝７５，４９７，４７２Ｋバイト）、クラスタの大きさを１２８Ｋバイトとした場合には
７５４９７４７２÷１２８＝５８９８２４
となり、データ領域全体には５８９、８２４個のクラスタが存在する。
【００３９】
図２から明らかなように、ＨＤＤ１８とＨＤＤ１９は全く同一の構成となっており、本実施形態におけるデータ記憶装置はシステム領域、データ領域とも、同一のデータをＨＤＤ１８と１９に重複（二重化）して記憶する。
【００４０】
システム領域内の二重化管理テーブルは、個々のクラスタがＨＤＤ１８、１９に二重化されて記録されているか否かを管理するためのものである。
【００４１】
二重化管理テーブルはクラスタ数×２ビット（本実施形態では５８９８２４×２ビット＝１１７９６４８ビット＝１４４Ｋバイト）分の大きさを持っており、各クラスタ毎に以下の状態情報を記憶しておく。
００ｂ：未使用のクラスタ
０１ｂ：ＨＤＤ１８にだけデータが記憶してあるクラスタ
１０ｂ：ＨＤＤ１９にだけデータが記憶してあるクラスタ
１１ｂ：ＨＤＤ１８、１９に二重化してデータが記憶してあるクラスタ
【００４２】
次に、図３を用いてディスクコントローラ１６の詳細な構成を説明する。図３中の４０はディスクコントローラ１６全体の制御を司るＭＰＵである。
【００４３】
ＭＰＵ４０には、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏポート等が１チップに集積されている。
【００４４】
ＭＰＵ４０のバス（ローカルバス）上には、後述するバスブリッジ４１、ステータスレジスタ４２、コマンドキューイングメモリ４３、データバッファメモリ４４、二重化管理テーブルメモリ４５、ＡＴＡインタフェース４６、４７が接続されている。これらが全体としてディスクコントローラ１６を構成する。
【００４５】
ディスクコントローラ１６は、バスブリッジ４１を介して図１で説明したシステムバスに接続される。
【００４６】
これにより、システムバス上に接続された各ブロックと、ローカルバス上に接続された各ブロック間で、データの交換が行えるようになっている。
【００４７】
また、バスブリッジ４１を介して、ＣＰＵ１０とＭＰＵ４０との間でプロセッサ間通信が行うことができる。
【００４８】
ステータスレジスタ４２は、ディスクコントローラ１６の動作ステータスなど（各種動作の進捗状況等）を記憶しておくレジスタ回路である。
【００４９】
ステータスレジスタ４２の設定値は、動作状況に応じてＭＰＵ４０によって時々刻々設定される。ステータスレジスタ４２は図１のＣＰＵ１０からも参照することが可能で、これによりＣＰＵ１０はディスクコントローラ１６に対して指示した各種動作の完了等を知ることができる。
【００５０】
また、ステータスレジスタ４２には、ＣＰＵ１０、ＭＰＵ４０の双方からリード／ライトアクセス可能な領域が設けられており、当該領域はＣＰＵ１０−ＭＰＵ４０間のプロセッサ間通信に使用される。
【００５１】
コマンドキューイングメモリ４３は、ディスクコントローラ１６に対して発行されるトランザクションコマンドをキューイングするメモリである。
【００５２】
図４にトランザクションコマンドのフォーマットを示す。トランザクションコマンドはヘッダ部（２バイト）、ＤＭＡ開始アドレス（４バイト）、クラスタ番号またはＬＢＡ（２バイト）の都合１０バイトで構成される。
【００５３】
ヘッダ部の先頭１ビットは、ＦＡＴおよびディレクトリエントリを読み書きするためのトランザクションであるのか、動画・音声データのストリームを読み書きするためのトランザクションであるのかを区別するビットである。続く１ビットは読み込み、書き込みを区別するビットである。
【００５４】
次の６ビットはストリームの番号を示す。１回のトランザクションでは１クラスタ分のデータ（１２８Ｋバイト）を転送することができるが、通常の動画・音声データはこれよりは遥かに大きいので、動作・音声データの転送には複数のトランザクションが費やされる。
【００５５】
そこで個々のトランザクションがどのストリームのデータ転送に属するのかを、このストリーム番号を用いて区別する。ストリーム番号は絶対的にユニークな番号である必要はなく、（時分割的に並列で）同時にトランザクションが実行されている複数のストリームの区別がつけばよいだけであるから、６ビット分（０〜６３）を繰り返し使用することで十分事足りる。
【００５６】
トランザクションコマンドは、コマンドキューイングメモリ４３に空きがあるうちは次々と発行することができる。
【００５７】
ディスクコントローラ１６はコマンドキューイングメモリ４３から、キューイングされたトランザクションコマンドを読み出して対応する処理動作を逐次実行する。
【００５８】
従って、コマンドの発行と処理動作の実行とにはタイムラグが存在することになり、そのままでは発行したコマンドの処理動作がいつ完了したのかを知る術がない。
【００５９】
最後の８ビットはこの事に対処するためのもので、コマンドの番号を示すフィールドである。ＭＰＵ１０は、ある番号が附されたコマンドの処理動作を実行し終えたら、ステータスレジスタ４２内に存在するコマンド番号レジスタのうち、対応する番号のレジスタにだけ値「１」をセットする。ＣＰＵ１０はこのコマンド番号レジスタをポーリングすることで、発行したコマンドの処理動作の完了を知ることができる。
【００６０】
コマンド番号は絶対的にユニークな番号である必要はなく、コマンドキューイングメモリ４３にキューイングされている複数のコマンドで重複がなければよいだけであるから、８ビット分（０〜２５５）を繰り返し使用することで十分に事足りる。
【００６１】
トランザクションのためのデータは、ＲＡＭ１２に格納される。即ち、書き込み時においては、ＨＤＤ１８、１９に書き込むべきデータをＲＡＭ１２に格納した後にトランザクションコマンドが発行される。また、読み込み時はトランザクションコマンド発行後、処理動作が実行されてＨＤＤ１８、１９から読み込まれたデータがＲＡＭ１２に格納される。
【００６２】
データ転送は「ＲＡＭ１２−ディスクコントローラ１６」間のＤＭＡ転送により実施されるが、このときのＤＭＡ転送開始アドレスをヘッダ部に続く４バイトで指定する。
【００６３】
最後の４バイトは読み書きの対象となるクラスタの番号を指定するフィールドである。なお、ＦＡＴおよびディレクトリエントリの読み書きはクラスタではなくセクタ単位で行われるため、ＦＡＴおよびディレクトリエントリのためのトランザクションでは、この部分はクラスタ番号ではなくＬＢＡ（論理アドレス）が指定される。
【００６４】
図３に戻り、データバッファメモリ４４は、ＨＤＤ１８、１９からの読み込みデータ及び書き込みデータを一時的に格納するバッファメモリである。
【００６５】
上記の「ＲＡＭ１２−ディスクコントローラ１６」間のＤＭＡ転送は、実際には「ＲＡＭ１２−データバッファメモリ４４」間で実施される。ＡＴＡインタフェース４６、４７は、ＨＤＤ１８、１９を物理的に接続するためのインタフェース回路である。
【００６６】
二重化管理テーブルメモリ４５は、図２で説明した二重化管理テーブルの記憶内容を丸ごとキャッシュしておくためのメモリである。二重化管理テーブルの記憶内容は、電源投入時（あるいはＨＤＤ初期化後）に二重化管理テーブルメモリ４５にコピーされる。以後、二重化管理テーブルを更新する場合は、ＨＤＤ１８、１９上の二重化管理テーブルを直接書き換えるのではなく二重化管理テーブルメモリ４５を操作する。
【００６７】
そして、装置の運用を終了する時（すなわち電源ＯＦＦ時）に、二重化管理テーブルメモリ４５の記憶内容はＨＤＤ１８、１９上の二重化管理テーブルにコピーされる。
【００６８】
なお、説明の都合上、図４においてはコマンドキューイングメモリ４３、データバッファメモリ４４、二重化管理テーブルメモリ４５がそれぞれ独立したブロックになっている。但し、実際には単一系統のメモリだけを具備し、それぞれの用途で当該メモリを共用する構成としても、もちろんよい。
【００６９】
本実施形態におけるデータ記憶装置は、基本的にはＨＤＤ１８、１９に同一のデータを二重化（ミラーリング）して記憶する。但し、取り扱う動画・音声データのストリーム本数が増加してＨＤＤの許容データ転送レートが不足した場合には、二重化記憶（ミラーリング記憶）を取りやめてＨＤＤ１８、１９を個別に動作させる。そして、それぞれに異なるストリームの処理を割り当てて、データ記憶装置全体としての許容データ転送レートを倍化させる。
【００７０】
そして、データ記憶装置の取り扱うストリームが「０〜少数」の低負荷時に、データの二重化処理（ＨＤＤ１８、１９相互間のコピー処理）を実行する。
【００７１】
図５〜１０のフローチャートを用いて、データ記憶装置３０の動作について詳細に説明する。図５はＨＤＤ１８、１９の初期化時の動作フローである。本動作フローはＣＰＵ１０のプログラム動作により実行されるものである。
【００７２】
物理フォーマットが終了した後、まずステップ１００において、ＨＤＤ１８、１９の総容量、クラスタの大きさ（１２８Ｋバイト）から、システム領域、データ領域、それぞれの大きさを計算する。ＨＤＤ１８、１９とで容量が異なっている場合は、小さいほうを基準に計算を行う。
【００７３】
次に、ステップ１０１でシステム領域内に二重化管理テーブルを作成する。この際、全てのクラスタについて「未使用」としておく。
【００７４】
次いでステップ１０２でシステム領域内にＦＡＴ（ファイルアロケーションテーブル）を作成する。この際、個々のクラスタに対するＦＡＴ値については「未使用クラスタ」としておく。
【００７５】
次に、ステップ１０３で、ディレクトリエントリにルートディレクトリを作成する。
【００７６】
図６〜９はＨＤＤ１８、１９に対してデータを読み書きする時の動作フローである。図６、７に示した動作フローはＣＰＵ１０のプログラム動作により実行されるものである。
【００７７】
データ記憶装置３０で、ＨＤＤ１８、１９にアクセスすべき事態が発生した場合には、まずステップ２００、２０１でディスクコントローラ１６に対してトランザクションの要求が受付けられるか否かを問い合わせ、受付が許可されるまで待機する。当該問い合わせは、ＣＰＵ１０−ＭＰＵ４０プロセッサ間通信により実行される。
【００７８】
次に、ステップ２０２で書き込みであるのか読み込みであるのか判定する。書き込みの場合は、ステップ２０３〜２０６でＦＡＴおよびディレクトリエントリの読み込みコマンドを複数回発行してＦＡＴおよびディレクトリエントリを読み込む。次いで、ステップ２０７で読み込んだＦＡＴおよびディレクトリエントリから空きクラスタを検索し、書き込みクラスタを決定する。
【００７９】
そして、ステップ２０８〜２１１で必要な回数分ＦＡＴおよびディレクトリエントリの書き込みコマンドを発行して、ＦＡＴおよびディレクトリエントリの内容を更新する。
【００８０】
この際、ファイル名はデータ入力がＬＡＮ経由であってファイル名を知り得る場合にはその名前を、映像機器３１がファイル名を指定する場合にはその名前を使用する。
【００８１】
ファイル名が外部から指定されない場合には、英数字などを適宜組み合わせたファイル名とする。
【００８２】
また、操作パネル２０等を用いて使用者がファイル名やパス情報を指定した場合にはそれに従う。
【００８３】
ＦＡＴおよびディレクトリエントリの更新書き込みが完了したら、ステップ２１２、２１３でディスクコントローラ１６に対してトランザクションの要求が受付けられるか否かを問い合わせ、受付が許可されるまで待機する。受付が許可されたらステップ２１４で1クラスタ分の書き込みコマンドを発行する。
【００８４】
以上の動作を書き込むべき全てのクラスタについてステップ２１２から繰り返して実行する（ステップ２１５）。
【００８５】
コマンドの発行が完了したら、ステップ２１６で発行したコマンドの処理動作が完了するのを待機して、書き込みのための一連の処理を終了する。
【００８６】
ステップ２０２に戻り、読み込みであった場合は図７のステップ２１７〜２１９でＦＡＴおよびディレクトリエントリの読み込みコマンドを複数回発行してＦＡＴおよびディレクトリエントリを読み込む。
【００８７】
次いで、ステップ２２０で読み込んだＦＡＴおよびディレクトリエントリから読み込むべきファイルのデータが記憶されているクラスタを検索して決定する。
【００８８】
次に、ステップ２２１、２２２でディスクコントローラ１６に対してトランザクションの要求が受付けられるか否かを問い合わせ、受付が許可されるまで待機する。
【００８９】
受付が許可されたらステップ２２３で１クラスタ分の読み込みコマンドを発行する。以上の動作を読み込むべき全てのクラスタについてステップ２２１から繰り返して実行する（ステップ２２４）。
【００９０】
コマンドの発行が完了したら、ステップ２２５で発行したコマンドの処理動作が完了するのを待機して、読み込みのための一連の処理を終了する。
【００９１】
以上ステップ２００〜２２６までのタスクは、複数のストリームを同時に取り扱う場合には、許容される範囲内において（本実施形態では６つまで）複数のタスクが（時分割的な並列処理として）同時に起動、実行される。但し、書き込みトランザクションの場合、ＦＡＴおよびディレクトリエントリ操作に関する処理（すなわちステップ２０３〜２１１の処理）だけは、ＦＡＴおよびディレクトリエントリの二重更新を防止するために排他的に実行されなければならない。
【００９２】
図８、９に示した動作フローはＭＰＵ４０のプログラム動作により実行されるものである。まず図８を用いて、トランザクション要求受付可否の動作処理について説明する。
【００９３】
ステップ３００において、ＣＰＵ１０からのトランザクション要求受付可否の問い合わせの有無を判定する。
【００９４】
問い合わせがない場合には、何もせずに処理を終了する。問い合わせがあった場合は、ステップ３０１でコマンドキューイングメモリ４３が「フル」状態にあるか否かを判定する。
【００９５】
「フル」状態の場合はステップ３０２で、当該トランザクション要求の受付を拒絶し、「フル」状態でなかった場合は、ステップ３０３で当該トランザクション要求の受付を許可する。
【００９６】
次に、図９を用いて、ＨＤＤ１８、１９への読み書き動作処理について説明する。
ステップ４００でコマンドキューイングメモリ４３からコマンドを一つ取得し、ステップ４０１で当該コマンドがＦＡＴおよびディレクトリエントリのトランザクションコマンドなのかストリームのトランザクションコマンドなのかを判定する。
【００９７】
ＦＡＴおよびディレクトリエントリのトランザクションコマンドであった場合は、ステップ４０２でＦＡＴおよびディレクトリエントリの書き込み／読み込みを実行する。具体的には指示されたＬＢＡへデータを書き込む、または指示されたＬＢＡからデータを読み込む動作を実行する。
【００９８】
なお、ＦＡＴおよびディレクトリエントリの書き込みは、常にＨＤＤ１８、１９に二重化して書き込まれる。
【００９９】
ストリームのトランザクションコマンドであった場合は、ステップ４０３、４０４で現在処理中のストリームの本数を計算する。処理中のストリーム本数が３本以下であった場合は、ステップ４０５で書き込みトランザクションコマンドなのか読み込みトランザクションコマンドなのかを判定する。
【０１００】
書き込みトランザクションコマンドであった場合は、ステップ４０６でＨＤＤ１８、１９双方のドライブの指示されたクラスタに、同一のデータを二重化して書き込む。そしてステップ４０７で二重化管理テーブルメモリ４５の対応するクラスタの部分を「１１ｂ」に更新する。そして、ステップ４０８でレジスタを更新する。また読み込みトランザクションコマンドであった場合は、ステップ４０９で指示されたクラスタのデータを読み込む（ここでは、どちらか任意のドライブからデータを読み込むことができる）。
【０１０１】
ステップ４０４に戻る。処理中のストリーム本数が３本超であった場合は、ステップ４１０で書き込みトランザクションコマンドなのか、読み込みトランザクションコマンドなのか、読み込みトランザクションコマンドの場合にそのデータが二重化されているデータなのか否かを判定する。二重化されているか否かは、二重化管理テーブルメモリ４５を検索することで容易に知ることができる。
【０１０２】
二重化されていないデータの読み込みトランザクションコマンドであった場合は、ステップ４１１でデータが存在するドライブから指示されたクラスタのデータを読み込む。どちらのドライブにデータが存在するのかは、二重化管理テーブルメモリ４５の値（「１０ｂ」なのか「０１ｂ」なのか）から直ちに知ることができる。そして、ステップ４１０に戻り、二重化されているデータの読み込みトランザクションコマンであった場合は、ステップ４１２でどちらかのドライブから指示されたクラスタのデータを読み込む。
【０１０３】
さらに書き込みトランザクションコマンドであった場合は、ステップ４１３でどちらかのドライブに指示されたクラスタのデータを書き込み、ステップ４１４で二重化管理テーブルメモリ４５の対応するクラスタの部分を「１０ｂ」または「０１ｂ」に更新する。
【０１０４】
ステップ４０８、４０９、４１１、４１２、４１４の処理をし終えたら、ステップ４０８でコマンド番号レジスタを更新して、当該コマンドの処理動作が完了したことをＣＰＵ１０に通知する。以上の動作をステップ４００から繰り返し実行する。
【０１０５】
ここでステップ４１２、４１３においてどちらのドライブを選択するべきなのかについて考察する。ここでは６本のストリームを３本ずつに分け、それぞれをＨＤＤ１８、１９に担当させるようにしたい。従って、書き込みは二重化されていないデータを記憶しているドライブを優先して、読み込みは扱っているストリーム本数が少ないドライブを優先して、使用するドライブを選択するようにする。
【０１０６】
なお、このような工夫を行っても、６本のストリームを常に完全に処理できるわけではない。例えば、二重化されていないデータを読み込む必要のあるストリームの読み込みは３本を越えては扱うことができない場合が当然存在する。
【０１０７】
そこで、データ記憶装置３０の仕様として、同時に取り扱うことのできるストリーム数を
書き込み（記録）６本以下
読み込み（再生）６本以下
書き込み（記録）３本以下、かつ読み込み（再生）３本以下
とする。
【０１０８】
図１０はデータの二重化処理の動作フローである。図１０に示した動作フローはＭＰＵ４０のプログラム動作により実行され、バックグラウンドにおいて常時動作させてある処理である。
【０１０９】
まず、ステップ５００、５０１で、ＨＤＤ１８、１９のパフォーマンスに余裕があるか否かを判定する。
【０１１０】
具体的には、ステップ５００で現在処理中のストリームの本数を計算し、ステップ５０１でその本数が２本以下か否かを判定する。パフォーマンスに余裕がない場合は、そのまま処理を終了する。
【０１１１】
パフォーマンスに余裕がある場合は、ステップ５０２、５０３で二重化管理テーブルメモリを検索して、データを二重化して記憶していないクラスタがあるか否かを判定する。二重化していないクラスタが存在しない場合は、そのまま処理を終了する。
【０１１２】
二重化していないクラスタが存在する場合は、ステップ５０４で当該クラスタのデータを、他方のＨＤＤの同一番号のクラスタにコピーする。二重化管理テーブルメモリ４５の値が「０１ｂ」であれば、ＨＤＤ１８からＨＤＤ１９へ、「１０ｂ」であればＨＤＤ１９からＨＤＤ１８へコピーを行う。
【０１１３】
そして、ステップ５０５で、二重化管理テーブルメモリ４５の対応するクラスタの部分を「１１ｂ」に更新する。以上の処理をステップ５００から繰り返し実行する。
【０１１４】
なお、ストリームファイルを削除する場合についての動作フローは特に図示しないが、当該ストリームファイルのデータを記憶しているクラスタのＦＡＴ値を「未使用クラスタ」に更新すればよい。また、二重化管理テーブルメモリ４５の対応するクラスタの部分を「００ｂ」に更新すればよい。すなわち個々のクラスタ自身の記憶データを書き換えるのではなく、ＦＡＴおよび二重化管理テーブルの更新だけで事足りる。
【０１１５】
以上説明してきたように、本実施形態では
ａ）同時に取り扱うストリーム数が所定値以下（３本以下）の場合は、ＨＤＤ１８、１９に同一のデータを二重化（ミラーリング）して記憶する。
ｂ）同時に取り扱うストリーム数が所定値を越えた（３本超）場合は、二重化記憶を取りやめてＨＤＤ１８、１９とで異なるストリームを記憶（記録・再生）する。
ｃ）同時に取り扱うストリーム数が所定値以下（２本以下）の場合に、二重化記憶されていないデータの二重化処理をバックグラウンドで行う。
【０１１６】
上記のようにしたことでデータの信頼性を向上させつつ、動画データ等のリアルタイム性を要求されるデータを高速に記憶するデータ記憶装置を、従来技術より少数（本実施形態においては２個）のディスクドライブでもって実現することができる。
【０１１７】
なお、本実施形態においては、ＨＤＤ１８、１９の実効データ転送レートを約１５０Ｍｂｐｓ、個々のストリームのデータ転送レートをＳＸＧＡサイズ、ＭｏｔｉｏｎＪＰＥＧ（３０ｆｐｓ、１／２０圧縮）の動画として約５０Ｍｂｐｓを前提とする。その前提の上で、１個当りのＨＤＤが同時取り扱うことのできるストリーム数を３本（データ記憶装置全体としては６本）として説明を行った。但し、これはあくまで一例であり、使用するＨＤＤの特性や取り扱うストリームのデータ符号化形式、画像サイズ、フレームレートなどで適宜変更可能であることはいうまでもない。
【０１１８】
また、図６、７では、ストリームの読み書きを実行する度にＨＤＤ上のＦＡＴ領域およびディレクトリエントリ領域へのアクセスを行う動作フローとなっている。但し、ＦＡＴおよびディレクトリエントリの内容をＲＡＭ１２上のキャッシュ領域にキャッシュしておき、以後ＦＡＴおよびディレクトリエントリへのアクセスは当該ＲＡＭ１２上のキャッシュ領域で行うようにしてもよい。
【０１１９】
このことにより、ＨＤＤ上のＦＡＴ領域およびディレクトリエントリ領域へのアクセス動作が省略され、結果としてより高速にストリームの記憶動作を実行させることができるようになる。
【０１２０】
なお、図９のステップＳ４０３及びＳ４０４、図１０のステップＳ５００、Ｓ５０１は、本発明のストリーム数判定手段の一処理例となる処理である。ステップＳ４０６及びＳ４０９は、本発明の第一の動作モードの一例となる処理である。ステップＳ４１１〜４１３は、本発明の第二の動作モードの一例となる処理である。ステップＳ４０４からＳ４０５以降への処理とステップＳ４０４からＳ４１０以降への処理間における制御処理は、本発明の記憶動作制御手段の一制御例となる処理である。二重化管理テーブルメモリ４５は、本発明のデータ多重化管理記憶手段の一適用例となる構成である。図１０のステップＳ５０４は、本発明のデータ多重化処理手段の一処理例となる処理である。
【０１２１】
（第２の実施形態）
上記実施形態では、同一のデータ転送レートを持つ複数のストリームを記憶する場合を想定している。しかしながら、この種のデータ記憶装置においては、様々なデータ転送レート（圧縮率が異なる、符号化形式が異なる、画像サイズが異なる、フレームレートが異なる等）のストリームを複数本同時に取り扱うことも十分に考えられる。
【０１２２】
そのような場合には、取り扱っているストリームの本数にだけ着目したのでは都合がよくない。本実施形態ではこの点に対処した。
【０１２３】
図１１に本実施形態でのトランザクションコマンドのフォーマットを示す。図１１からも明らかなように、ヘッダ部が３バイトに拡張されている。３バイト目はデータ転送レートの係数を表す。
【０１２４】
すなわち、１Ｍｂｐｓを単位として、ストリームが必要とするデータ転送レートの係数をここに設定する。これにより、ＭＰＵ４０は、個々のストリームが必要とするデータ転送レートを「Ｍｂｐｓ」単位で知ることができる。
【０１２５】
ＣＰＵ１０は、許容される範囲内において複数のストリームに関するトランザクションコマンドを発行してよいが、本実施形態では個々のストリームが必要とするデータ転送レートの合計が２５０Ｍｂｐｓを越えない範囲内に制限される。
【０１２６】
図１２に本実施形態でのＨＤＤ１８、１９への読み書き動作処理の動作フローを示す。本動作フローは第１の実施形態での図９で説明した動作フローに相当する。図１２中のステップ４００〜４０２、４０５〜４１４は図９と同一であるので説明は割愛する。
【０１２７】
ステップ４０３'で現在処理中のストリームの、合計のデータ転送レートを計算する。合計のデータ転送レートが１００Ｍｂｐｓ以下であった場合は、ステップ４０５からの処理を実行する。合計のデータ転送レートが１００Ｍｂｐｓ超であった場合は、ステップ４０９からの処理を実行する。
【０１２８】
なお、ステップ４１２、４１３では、個々のドライブが担当するストリームの合計データ転送レートが、全体の合計データ転送レートの略１／２となるようにドライブの選択を分散させる。
【０１２９】
この処理により、ＨＤＤ１個あたりが担当するデータ転送レートの合計を略１００〜１５０Ｍｂｐｓ以下とすることができる。
【０１３０】
ところで、ＨＤＤでは同時に取り扱うストリームの本数が増えると、ヘッドのシーク時間やディスクプラッタの回転待ち時間が増大して、実効データ転送レートは低下する。
【０１３１】
そこで、単に個々のストリームのデータ転送レートを合計するのではなく、ストリームの本数に制限を設けるとよい結果が得られる。又は、ストリームの本数に応じて合計のデータ転送レートに補正係数を掛け、必要とするデータ転送レートを多めに計算するとよい結果が得られる。
【０１３２】
図１３に本実施形態でのデータの二重化処理の動作フローを示す。本動作フローは第１の実施形態での図１０で説明した動作フローに相当する。図中ステップ５０２〜５０５は図１０と同一であるので説明は割愛する。
【０１３３】
ステップ５００'で現在処理中のストリームの、合計のデータ転送レートを計算する。ステップ５０１'で、合計のデータ転送レートが５０Ｍｂｐｓ超であってパフォーマンスに余裕がない場合はそのまま処理を終了し、５０Ｍｂｐｓ以下であってパフォーマンスに余裕がある場合は、ステップ５０２からの処理を実行する。
【０１３４】
以上のように、本実施形態では、同時に取り扱うストリームの合計のデータ転送レートに基づいて、ＨＤＤ１８、１９に同一のデータを二重化（ミラーリング）して記憶するのか、二重化記憶を取りやめてＨＤＤ１８、１９とで異なるストリームを記憶（記録・再生）するのかを決定するようにした。
【０１３５】
従って、様々なデータ転送レートのストリームを複数本同時に取り扱うデータ記憶装置においても、本発明を良好に実施することができる。  
【０１３６】
なお、図１２のステップＳ４０３´及びＳ４０４´、図１３のステップＳ５００´、Ｓ５０１´は、本発明の合計データ転送レート判定手段の一処理例となる処理である。ステップＳ４０６及びＳ４０９は、本発明の第一の動作モードの一例となる処理である。ステップＳ４１１〜４１３は、本発明の第二の動作モードの一例となる処理である。ステップＳ４０４からＳ４０５以降への処理とステップＳ４０４からＳ４１０以降への処理間における制御処理は、本発明の記憶動作制御手段の一制御例となる処理である。二重化管理テーブルメモリ４５は、本発明のデータ多重化管理記憶手段の一適用例となる構成である。図１３のステップＳ５０４は、本発明のデータ多重化処理手段の一処理例となる処理である。
【０１３７】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体をシステム或いは装置に供給し、そのシステム等のコンピュータが記憶媒体からプログラムコードを読み出し実行することによっても達成される。
【０１３８】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、プログラムコード自体及びそのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０１３９】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。
【０１４０】
また、コンピュータが読み出したプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【０１４１】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに接続された機能拡張ユニット等に備わるメモリに書込まれた後、そのプログラムコードの指示に基づきＣＰＵ等が実際の処理を行い、前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０１４２】
【図１】本発明の実施形態に係るデータ記憶装置の構成を示すブロック図である。
【図２】ＨＤＤの論理的な構成を説明するための図である。
【図３】ディスクコントローラの詳細な構成を示す図である。
【図４】トランザクションコマンドのフォーマットを説明するための図である。
【図５】データ記憶装置の動作を示すフローチャートである。
【図６】データ記憶装置の動作を示すフローチャートである。
【図７】データ記憶装置の動作を示すフローチャートである。
【図８】データ記憶装置の動作を示すフローチャートである。
【図９】データ記憶装置の動作を示すフローチャートである。
【図１０】データ記憶装置の動作を示すフローチャートである。
【図１１】本発明の第２の実施形態でのコマンドフォーマットを説明するための図である。
【図１２】本発明の第２の実施形態における動作を示すフローチャートである。
【図１３】本発明の第２の実施形態における動作を示すフローチャートである。
【符号の説明】
【０１４３】
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  ＮＩＣ（ネットワークコントローラ）
１４  外部機器接続インタフェース
１５  デコーダ回路
１６  ディスクコントローラ
１７  グラフィック・サウンドコントローラ
１８、１９  ＨＤＤ（ハードディスクドライブ）
２０  操作パネル
３０  データ記憶装置
３１  映像機器
３２  モニタ装置
【図１】
2008158572.tif 000003
【図２】
2008158572.tif 000004
【図３】
2008158572.tif 000005
【図４】
2008158572.tif 000006
【図５】
2008158572.tif 000007
【図６】
2008158572.tif 000008
【図７】
2008158572.tif 000009
【図８】
2008158572.tif 000010
【図９】
2008158572.tif 000011
【図１０】
2008158572.tif 000012
【図１１】
2008158572.tif 000013
【図１２】
2008158572.tif 000014
【図１３】
2008158572.tif 000015