(57)【特許請求の範囲】
【請求項１】
複数の二次記憶装置にデータを書き込むデータ書き込み装置であって、
複数の二次記憶装置と、
データを取得するインタフェース回路と、
前記インタフェース回路で取得されたデータを前記複数の二次記憶装置のいずれかに書き込むコンピュータ装置とを備え、
前記コンピュータ装置は、
ソフトウェアを保持するメモリと、
前記ソフトウェアを実行するプロセッサとを備え、
前記ソフトウェアは、
マルチプロセスのオペレーティングシステムと、
前記オペレーティングシステムの管理下で実行されるアプリケーションとを含み、
前記アプリケーションは、
前記複数の二次記憶装置のそれぞれに対応して設けられた複数の書き込みプロセスであって、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する複数の書き込みプロセスと、
前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出する監視プロセスと、
前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするデータ振り分けプロセスとを含み、
前記複数の書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する
データ書き込み装置。
【請求項２】
前記データ振り分けプロセスは、書き込む対象となる前記二次記憶装置として、前記依頼データ量から前記完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を前記複数の二次記憶装置の中から選択する
請求項１記載のデータ書き込み装置。
【請求項３】
前記インタフェース回路は、取得したデータを一時的に保持する第１バッファメモリを有し、前記第１バッファメモリに保持されたデータを前記メモリに転送し、
前記メモリは、前記インタフェース回路から転送されてきたデータを一時的に保持する第２バッファメモリを有し、
前記複数の書き込みプロセスのそれぞれは、前記第２バッファメモリに保持されたデータを対応する前記二次記憶装置に書き込むことを前記オペレーティングシステムに依頼する
請求項１又は２記載のデータ書き込み装置。
【請求項４】
前記複数の書き込みプロセスのそれぞれは、対応する前記二次記憶装置に対して、空き容量を確認することなく、前記データを書き込むように前記オペレーティングシステムに依頼する
請求項１〜３のいずれか１項に記載のデータ書き込み装置。
【請求項５】
前記複数の書き込みプロセスのそれぞれは、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼した場合に、前記依頼データ量を更新し、
前記データ振り分けプロセスは、前記複数の書き込みプロセスのそれぞれから受け取った更新後の前記依頼データ量から、前記監視プロセスから受け取った前記完了データ量を差し引き、得られた値が最も小さい書き込みプロセスに対応する二次記憶装置を前記複数の二次記憶装置の中から選択する
請求項２記載のデータ書き込み装置。
【請求項６】
インタフェース回路で取得されたデータをコンピュータ装置によって複数の二次記憶装置に書き込むデータ書き込み方法であって、
前記複数の二次記憶装置のそれぞれに対応して設けられた書き込みプロセスが、対応する前記二次記憶装置へのデータの書き込みをオペレーティングシステムに依頼するステップと、
監視プロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するステップと、
データ振り分けプロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするステップとを含み、
複数の前記書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼し、
前記オペレーティングシステムは、マルチプロセスのオペレーティングシステムであり、
前記複数の書き込みプロセス、前記監視プロセス、前記データ振り分けプロセスは、前記オペレーティングシステムの管理下で実行されるプロセスであり、
前記オペレーティングシステム、前記複数の書き込みプロセス、前記監視プロセス、及び、前記データ振り分けプロセスは、前記コンピュータ装置が備えるプロセッサが所定のソフトウェアを実行することによって前記コンピュータ装置上に一時的に実現されるものである
データ書き込み方法。
【請求項７】
インタフェース回路で取得されたデータを複数の二次記憶装置に書き込むコンピュータ装置が備えるプロセッサに、複数の書き込みプロセス、監視プロセス、及び、データ振り分けプロセスを実現させるためのプログラムであって、
前記複数の二次記憶装置のそれぞれに対応して設けられた前記複数の書き込みプロセスが、対応する前記二次記憶装置へのデータの書き込みをオペレーティングシステムに依頼し、
前記監視プロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出し、
前記データ振り分けプロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をし、
前記複数の書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ書き込み装置及び方法に関し、特に、複数の二次記憶装置にデータを書き込むデータ書き込み装置及び方法に関する。
【背景技術】
【０００２】
イーサネット（登録商標）等の通信ネットワークにおける通信障害の対応に備えて、通信ネットワークを流れる全てのパケットを長期間に渡ってキャプチャできる装置が必要とされる。そのために、発生したデータを取りこぼしなく高速に二次記憶装置に記録することが求められる。【０００３】
従来、二次記憶装置に高速に書き込む技術として、並列二次記憶装置を用いたデータ書き込み方法が提案されている（例えば、特許文献１参照）。特許文献１では、二次記憶装置を並列化し、書き込み要求があったときに、複数の二次記憶装置のうちの最小負荷量のものにデータを書き込む。これにより、アクセス負荷量の偏りがなく、並列二次記憶装置のデータ入出力を高速化するというものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平９−５４６５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術では、「アクセス負荷管理装置」、「データ位置決定装置」及び「データ位置管理装置」等の独自のハードウェアを必要とし、実現するのに多大な時間とコストを要する。【０００６】
なお、特許文献１には、「汎用のＣＰＵないしマイクロプロセッサで実現することもできる」と記載されているが（明細書の段落００２６）、具体的な実現方法は開示されておらず、長期間に渡って極めて高速にデータ書き込みをできる保証はない。例えば、特許文献１の技術では、１００Ｇｂｐｓという極めて高速な通信ネットワークを流れる全てのパケットを１０分以上という長期間に渡って取りこぼしなく二次記憶装置に記録することは困難である。【０００７】
また、一般に、二次記憶装置の多くは、時間的に書き込み性能が変化し、長期間に渡って安定した高い書き込み性能を実現できないという問題もある。図６は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）の書き込み性能のテスト結果を示すデータ図である。横軸は時間（秒）、縦軸は書き込み性能（ＭＢ／ｓ）を示す。このテストでは、コンピュータ装置における処理負荷が変動しない状態にしたうえで、一定速度で発生するデータをコンピュータ装置からＳＳＤに書き込み続け、書き込み性能（ＭＢ／ｓ）の時間変化を計測した。このテスト結果から分かるように、二次記憶装置への長期間の書き込みにおいては、間欠的に書き込み性能が劣化する現象が現れる。よって、従来の技術では、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置にデータを書き込むことは困難である。【０００８】
そこで、本発明は、このような状況に鑑みてなされたものであり、独自のハードウェアを必要とすることなく、かつ、例えば１００Ｇｂｐｓ等の高速の通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することができるデータ書き込み装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の一形態に係るデータ書き込み装置は、複数の二次記憶装置にデータを書き込むデータ書き込み装置であって、複数の二次記憶装置と、データを取得するインタフェース回路と、前記インタフェース回路で取得されたデータを前記複数の二次記憶装置のいずれかに書き込むコンピュータ装置とを備え、前記コンピュータ装置は、ソフトウェアを保持するメモリと、前記ソフトウェアを実行するプロセッサとを備え、前記ソフトウェアは、マルチプロセスのオペレーティングシステムと、前記オペレーティングシステムの管理下で実行されるアプリケーションとを含み、前記アプリケーションは、前記複数の二次記憶装置のそれぞれに対応して設けられた複数の書き込みプロセスであって、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する複数の書き込みプロセスと、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出する監視プロセスと、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするデータ振り分けプロセスとを含み、前記複数の書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼する。【００１０】
また、上記目的を達成するために、本発明の一形態に係るデータ書き込み方法は、インタフェース回路で取得されたデータをコンピュータ装置によって複数の二次記憶装置に書き込むデータ書き込み方法であって、前記複数の二次記憶装置のそれぞれに対応して設けられた書き込みプロセスが、対応する前記二次記憶装置へのデータの書き込みをオペレーティングシステムに依頼するステップと、監視プロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するステップと、データ振り分けプロセスが、前記複数の二次記憶装置のそれぞれについて、対応する前記書き込みプロセスが前記オペレーティングシステムに書き込みを依頼したデータの量である依頼データ量と、前記監視プロセスによって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を前記複数の二次記憶装置の中から選択し、選択した前記二次記憶装置に対応する前記書き込みプロセスに対して、前記インタフェース回路で取得されたデータを対応する前記二次記憶装置に書き込む指示をするステップとを含み、複数の前記書き込みプロセスのそれぞれは、前記データ振り分けプロセスからの指示に従って、対応する前記二次記憶装置へのデータの書き込みを前記オペレーティングシステムに依頼し、前記オペレーティングシステムは、マルチプロセスのオペレーティングシステムであり、前記複数の書き込みプロセス、前記監視プロセス、前記データ振り分けプロセスは、前記オペレーティングシステムの管理下で実行されるプロセスであり、前記オペレーティングシステム、前記複数の書き込みプロセス、前記監視プロセス、及び、前記データ振り分けプロセスは、前記コンピュータ装置が備えるプロセッサによって実行されるソフトウェアである。
【発明の効果】
【００１１】
本発明により、独自のハードウェアを必要とすることなく、かつ、例えば１００Ｇｂｐｓ等の高速の通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することができるデータ書き込み装置及び方法が実現される。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態に係るデータ書き込み装置の構成を示すブロック図である。
【図２】図２は、実施の形態に係るデータ書き込み装置におけるプロセスの処理内容及びプロセス間通信を示す図である。
【図３】図３は、実施の形態に係るデータ書き込み装置におけるデータ振り分けプロセスによる各書き込みプロセスでの処理中のデータ量の算出例を示すデータ構造図である。
【図４】図４は、実施の形態に係るデータ書き込み装置におけるデータの流れを示す概念図である。
【図５】図５は、実験に用いたデータ書き込み装置の外観図である。
【図６】図６は、ＳＳＤの書き込み性能のテスト結果を示すデータ図である。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、以下で説明する実施の形態は、いずれも本発明の一具体例を示すものである。以下の実施の形態で示される数値、形状、製造会社、型番、構成要素、構成要素の配置位置及び接続形態、ステップ、ステップの順序等は、一例であり、本発明を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、本発明の最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また、各図は、必ずしも厳密に図示したものではない。各図において、実質的に同一の構成については同一の符号を付し、重複する説明は省略又は簡略化する。
【００１４】
図１は、本発明の実施の形態に係るデータ書き込み装置１０の構成を示すブロック図である。
【００１５】
データ書き込み装置１０は、複数の二次記憶装置２０ａ〜２０ｃにデータを書き込む装置であり、本実施の形態では、１００Ｇｂｐｓのイーサネット（登録商標）を物理層とする通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置２０ａ〜２０ｃに記録する装置である。なお、データ書き込み装置１０は、二次記憶装置２０ａ〜２０ｃから、書き込んだデータを読み出して各種処理（表示、抽出、分析等）をする機能も有するが、以下では、特徴的な書き込み機能について説明する。
【００１６】
このデータ書き込み装置１０は、図１に示されるように、複数の二次記憶装置２０ａ〜２０ｃと、データ（ここでは、通信ネットワーク１２を流れる全てのパケット）を取得するインタフェース回路３０と、インタフェース回路３０で取得されたデータを複数の二次記憶装置２０ａ〜２０ｃのいずれかに書き込むコンピュータ装置４０とを備える。
【００１７】
二次記憶装置２０ａ〜２０ｃは、データを保存する不揮発性記憶装置であり、ＳＳＤ又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。例えば、二次記憶装置２０ａ〜２０ｃのそれぞれは、８個の４００ＧＢｙｔｅ容量のＳＡＳ（Ｓｅｒｉａｌ  Ａｔｔａｃｈｅｄ  ＳＣＳＩ）規格に対応したＳＳＤで構成されるＲＡＩＤ（Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙｓ  ｏｆ  Ｉｎｅｘｐｅｎｓｉｖｅ  Ｄｉｓｋｓ）である。
【００１８】
インタフェース回路３０は、取得したデータを一時的に保持するＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式の第１バッファメモリ３１を有し、第１バッファメモリ３１に保持されたデータをメモリ４２にＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）転送する。インタフェース回路３０は、例えば、１００Ｇｂｐｓのイーサネット（登録商標）用のネットワークアダプタである。
【００１９】
コンピュータ装置４０は、ソフトウェア４２ｂを保持するメモリ４２、ソフトウェア４２ｂを実行するプロセッサ４１、及び、二次記憶装置２０ａ〜２０ｃのデータ入出力を制御するＲＡＩＤコントローラ４３ａ〜４３ｃを備える。
【００２０】
メモリ４２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であり、ＨＤＤ（図示せず）等からロードされた実行形式のソフトウェア４２ｂを保持するだけでなく、インタフェース回路３０からＤＭＡ転送されてきたデータを一時的に保持するデータ領域であるＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式の第２バッファメモリ４２ａを有する。メモリ４２は、例えば、ＲＤＩＭＭ（Ｒｅｇｉｓｔｅｒｄ  ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ））で構成される。
【００２１】
プロセッサ４１は、メモリ４２に保持されたソフトウェア４２ｂを実行するＣＰＵで構成される。
【００２２】
ＲＡＩＤコントローラ４３ａ〜４３ｃは、それぞれ、二次記憶装置２０ａ〜２０ｃとコンピュータ装置４０とを接続し、二次記憶装置２０ａ〜２０ｃのデータ入出力を制御する。
【００２３】
なお、本実施の形態では、高速なデータ転送を確保するために、インタフェース回路３０、プロセッサ４１、及び、ＲＡＩＤコントローラ４３ａ〜４３ｃは、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓ  ３．０（Ｇｅｎ３）規格対応のバスで接続される。また、プロセッサ４１とメモリ４２とは、ＤＤＲ４（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  ４）規格に対応したデータ転送方式で接続される。また、ＲＡＩＤコントローラ４３ａ〜４３ｃと二次記憶装置２０ａ〜２０ｃとは、ＳＡＳ規格に対応した転送バスで接続される。
【００２４】
メモリ４２に保持されたソフトウェア４２ｂは、マルチプロセスのオペレーティングシステム（以下、「ＯＳ」ともいう）６０と、ＯＳ６０の管理下で実行されるソフトウェアであるアプリケーション５０とを含む。
【００２５】
ＯＳ６０は、コンピュータ装置４０を動作させるためのマルチプロセス（つまり、マルチタスク）の基本ソフトウェアであり、ここでは、アプリケーションとは区別されるカーネル・ソフトウェアである。例えば、ＯＳ６０には、二次記憶装置２０ａ〜２０ｃのデータ入出力を行うプロセス（デバイスドライバ）等が含まれる。ＯＳ６０は、例えば、Ｍｉｃｒｏｓｏｆｔ社のＷｉｎｄｏｗｓ（登録商標）、Ｌｉｎｕｘ（登録商標）等である。
【００２６】
アプリケーション５０は、ＯＳ６０の管理下で実行されるソフトウェアであり、二次記憶装置２０ａ〜２０ｃのそれぞれに対応する書き込みプロセス５１ａ〜５１ｃ、監視プロセス５３、及び、データ振り分けプロセス５２を含む。
【００２７】
書き込みプロセス５１ａ〜５１ｃは、それぞれ、二次記憶装置２０ａ〜２０ｃに対応して設けられ、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをＯＳ６０に依頼するプロセスである。具体的には、書き込みプロセス５１ａ〜５１ｃのそれぞれは、データ振り分けプロセス５２からの指示に従って、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをＯＳ６０に依頼する。つまり、書き込みプロセス５１ａ〜５１ｃのそれぞれは、指示された書き込みデータを独立して処理し、高速化を図っている。
【００２８】
このとき、書き込みプロセス５１ａ〜５１ｃのそれぞれは、対応する二次記憶装置２０ａ〜２０ｃに対して、空き容量を確認することなく、データを書き込むようにＯＳ６０に依頼する。もし、空き容量がない場合には、例えば、上書き保存するようにデータを書き込む。なお、書き込みプロセス５１ａ〜５１ｃのそれぞれは、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをＯＳ６０に依頼した場合に、依頼データ量を更新してデータ振り分けプロセス５２に通知する。
【００２９】
監視プロセス５３は、二次記憶装置２０ａ〜２０ｃのそれぞれについて、対応する書き込みプロセス５１ａ〜５１ｃから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するプロセスである。つまり、書き込みの監視を独立して行うプロセスである。
【００３０】
データ振り分けプロセス５２は、二次記憶装置２０ａ〜２０ｃのそれぞれについて、対応する書き込みプロセス５１ａ〜５１ｃがＯＳ６０に書き込みを依頼したデータの量である依頼データ量と、監視プロセス５３によって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を複数の二次記憶装置２０ａ〜２０ｃの中から選択し、選択した二次記憶装置に対応する書き込みプロセスに対して、インタフェース回路３０で取得されたデータを、対応する二次記憶装置に書き込む指示をするプロセスである。
【００３１】
より詳しくは、データ振り分けプロセス５２は、書き込む対象となる二次記憶装置として、依頼データ量から完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を複数の二次記憶装置２０ａ〜２０ｃの中から選択する。具体的には、データ振り分けプロセス５２は、複数の書き込みプロセス５１ａ〜５１ｃのそれぞれから受け取った更新後の依頼データ量から、監視プロセス５３から受け取った完了データ量を差し引き、得られた値を処理中のデータ量とし、処理中のデータ量が最も小さい書き込みプロセスに対応する二次記憶装置を、書き込み性能が最も高い二次記憶装置とみなし、複数の二次記憶装置２０ａ〜２０ｃの中から選択する。これにより、複数の二次記憶装置２０ａ〜２０ｃにおけるロードバランスが図られ、長期間に渡って高い書き込み性能が維持される。なお、「書き込み性能が最も高いとみなす」とは、その時点で最も速やかに書き込み処理を行える可能性があると判断することを意味する。
【００３２】
なお、データ振り分けプロセス５２は、処理中のデータ量が最も小さい書き込みプロセスが２つ以上である（つまり、処理中のデータ量が最小で、かつ、同数の書き込みプロセスが２つ以上存在する）場合には、それら２つ以上の書き込みプロセスのいずれかに対応する二次記憶装置を書き込み対象として選択する。そのときに、完了データ量の少ない書き込みプロセスに対応する二次記憶装置を優先して選択してもよい。
【００３３】
次に、以上のように構成される本実施の形態に係るデータ書き込み装置１０の動作について、説明する。
【００３４】
図２は、本実施の形態に係るデータ書き込み装置１０におけるプロセスの処理内容及びプロセス間通信（つまり、データ書き込み方法）を示す図である。
【００３５】
データ振り分けプロセス５２は、書き込み対象のデータを取得する（Ｓ１）。つまり、メモリ４２の第２バッファメモリ４２ａに、二次記憶装置２０ａ〜２０ｃへの書き込み対象となるデータ（ここでは、所定量のデータであるブロック）が存在するか否かを確認し、存在する場合に、次のステップＳ２に進む。
【００３６】
ステップＳ２では、データ振り分けプロセス５２は、書き込みプロセス５１ａ〜５１ｃのそれぞれについて、処理中のデータ量を算出する（Ｓ２）。処理中のデータ量は、書き込みプロセスがＯＳ６０に二次記憶装置への書き込みを依頼したデータの量（ここでは、ブロック数）である依頼データ量から、二次記憶装置への書き込みが完了したデータの量である完了データ量（ここでは、ブロック数）を差し引いて得られる値である。依頼データ量については、書き込みプロセス５１ａ〜５１ｃのそれぞれから取得する。完了データ量については、監視プロセス５３から取得する。
【００３７】
図３は、データ振り分けプロセス５２による各書き込みプロセス５１ａ〜５１ｃでの処理中のデータ量の算出例を示すデータ構造図である。
【００３８】
データ振り分けプロセス５２は、書き込みプロセス５１ａ〜５１ｃのそれぞれについて、書き込みプロセス５１ａ〜５１ｃから取得した依頼データ量（単位はブロック数）から、監視プロセス５３から取得した完了データ量（単位はブロック数）を差し引くことで、処理中のデータ量（単位はブロック数）を算出する。図３に示される例では、書き込みプロセス５１ａ〜５１ｃの処理中のデータ量（単位はブロック数）として、それぞれ、「１」、「０」、「３」が算出される。
【００３９】
そして、データ振り分けプロセス５２は、処理中のデータ量が最も小さい書き込みプロセスを、次に書き込む対象となる二次記憶装置に対応する書き込みプロセスとして選択し、選択した書き込みプロセスのキューに、第２バッファメモリ４２ａに存在するブロックのアドレスを格納することで、対応する二次記憶装置へのデータの書き込みを指示する（Ｓ３）。図３に示される例では、データ振り分けプロセス５２は、処理中のデータ量が最も小さい（ここでは、「０」である）書き込みプロセス５１ｂを選択し、選択した書き込みプロセス５１ｂのキューに、書き込み対象データ、つまり、第２バッファメモリ４２ａに存在するブロックの第２バッファメモリ４２ａでのアドレスを格納する（つまり、キューにデータをつめる）ことで、対応する二次記憶装置２０ｂへのデータの書き込みを指示する。
【００４０】
ステップＳ３の処理を終えると、データ振り分けプロセス５２は、ステップＳ１に戻り、同様の処理を繰り返す。
【００４１】
書き込みプロセス５１ａ〜５１ｃのそれぞれは、自分のキューに、書き込み対象のブロックのアドレスが格納されると（Ｓ１１）、書き込み先となる二次記憶装置に対応するファイルＤ１１を用意し（Ｓ１２）、ＯＳ６０に対して、ファイルＤ１１への書き込みを依頼する（Ｓ１３）。ここで、ファイルＤ１１は、対応する二次記憶装置を示す論理ファイルであり、例えば、ＯＳ６０が管理するファイルシステムにおけるディレクトリファイルである。このとき、書き込みプロセス５１ａ〜５１ｃのそれぞれは、対応する二次記憶装置２０ａ〜２０ｃに対して、空き容量を確認することなく、データを書き込むようにＯＳ６０に依頼する。
【００４２】
そして、書き込みプロセス５１ａ〜５１ｃのそれぞれは、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをＯＳ６０に依頼した後に、内部に保持している（つまり、自分の）依頼データ量を更新し（ここでは、書き込んだブロック数である「１」だけインクリメントし）、更新後の依頼データ量をデータ振り分けプロセス５２に通知する（Ｓ１４）。
【００４３】
ステップＳ１４の処理を終えると、書き込みプロセス５１ａ〜５１ｃのそれぞれは、ステップＳ１１に戻り、同様の処理を繰り返す。
【００４４】
書き込みの依頼を受けたＯＳ６０は、依頼してきた書き込みプロセスのキューに格納されたアドレスが示すブロックを第２バッファメモリ４２ａから読み出し、指定されたファイルＤ１１（つまり、指定された二次記憶装置）に書き込む（Ｓ２１）。
【００４５】
監視プロセス５３は、ＯＳ６０から、二次記憶装置への書き込み情報を取得することで（Ｓ３１）、ＯＳ６０が二次記憶装置への書き込みを完了したか否かを判断し（Ｓ３２）、完了していないと判断した場合には（Ｓ３２でｎｏ）、しばらく待機した後に（Ｓ３３）、書き込み情報の取得（Ｓ３１）と判断（Ｓ３２）とを繰り返す。
【００４６】
二次記憶装置への書き込みを完了したと判断した場合には（Ｓ３２でｙｅｓ）、監視プロセス５３は、内部に保持している、完了した書き込みプロセスに対応する完了データ量を更新し（ここでは、書き込みが完了したブロック数である「１」だけインクリメントし）、更新後の完了データ量をデータ振り分けプロセス５２に通知する（Ｓ３４）。その後、監視プロセス５３は、再び、ステップＳ３１からの処理を繰り返す。
【００４７】
図４は、本実施の形態に係るデータ書き込み装置１０におけるデータの流れを示す概念図である。
【００４８】
いま、第２バッファメモリ４２ａには、未書き込みのデータとして、ブロック５〜７が保存されており、それらのうち、最も古いデータであるブロック５が書き込みの対象となっている。
【００４９】
また、書き込みプロセス５１ａ〜５１ｃの処理中のデータ（単位はブロック数）は、それぞれ、「１」、「０」、「３」である。具体的には、書き込みプロセス５１ａについては、そのキューに、ブロック２（より詳しくは、第２バッファメモリ４２ａにおけるブロック２のアドレス）が格納され、書き込みプロセス５１ａからの依頼を受けたＯＳ６０によって、ブロック２の二次記憶装置２０ａへの書き込み処理が進行している。書き込みプロセス５１ｂについては、そのキューにはデータが格納されておらず、二次記憶装置２０ｂは、アイドル状態である。書き込みプロセス５１ｃについては、そのキューに、ブロック１、３及び４（より詳しくは、第２バッファメモリ４２ａにおけるブロック１、３及び４のアドレス）が格納され、書き込みプロセス５１ｃからの依頼を受けたＯＳ６０によって、ブロック１、３及び４の二次記憶装置２０ａへの書き込み処理が進行している。
【００５０】
このような状況において、書き込みプロセス５１ａ〜５１ｃのそれぞれは、データの書き込みをＯＳ６０に依頼した場合に、最新の依頼データ量（つまり、総依頼データ量）をデータ振り分けプロセス５２に通知する。また、監視プロセス５３は、ＯＳ６０による二次記憶装置２０ａ〜２０ｃへの書き込みを監視することで、書き込みプロセスごとの最新の完了データ量（つまり、総完了データ量）をデータ振り分けプロセス５２に通知する。
【００５１】
よって、データ振り分けプロセス５２は、書き込みプロセス５１ａ〜５１ｃのそれぞれについて、書き込みプロセス５１ａ〜５１ｃから取得した依頼データ量から、監視プロセス５３から取得した完了データ量を差し引くことで、処理中のデータ量を算出し、処理中のデータ量が最も小さい書き込みプロセスのキューに、第２バッファメモリ４２ａに存在するブロック（より詳しくは、第２バッファメモリ４２ａにおけるブロックのアドレス）を格納する。図４に示される例では、データ振り分けプロセス５２は、第２バッファメモリ４２ａのブロック５（より詳しくは、第２バッファメモリ４２ａにおけるブロック５のアドレス）を、書き込みプロセス５１ｂのキューに格納する。
【００５２】
これにより、処理中のデータ量が最も小さい書き込みプロセスに対応する二次記憶装置が、書き込み性能が最も高い二次記憶装置とみなして、書き込みプロセス５１ｂのキューにデータが保存され、そのデータがＯＳ６０によって二次記憶装置２０ｂに書き込まれ、ロードバランスが図られる。
【実施例】
【００５３】
次に、本実施の形態に係るデータ書き込み装置１０を用いて、１００Ｇｂｐｓのイーサネット（登録商標）を流れるパケットをキャプチャする実験を行ったので、以下、その実験について説明する。なお、実験では、１つのＲＡＩＤコントローラについて２つの二次記憶装置を接続し、合計６個の二次記憶装置を用いた。【００５４】
実験に用いたデータ書き込み装置１０は、図５の外観図に示されるように、キーボード及びディスプレイ等のユーザインタフェースも含めて一体化されたポータブル型システムとして構築されたものであり、その主要なハードウェア構成は、次の通りである。【００５５】
二次記憶装置２０ａ〜２０ｃのそれぞれは、４個の８００ＧＢｙｔｅ容量のＳＡＳ規格に対応したＳＳＤで構成される。プロセッサ４１は、２個のＩｎｔｅｌ社のモデルＸｅｏｎ  Ｅ５−２６３７  ｖ３のプロセッサで構成される。メモリ４２は、４個の１６ＧＢｙｔｅ容量の２１３３ＭＨｚ対応のＲＤＩＭＭで構成される。ＲＡＩＤコントローラ４３ａ〜４３ｃのそれぞれ、ＬＳＩ社のＳＡＳ規格に対応したＲＡＩＤ  Ｃａｒｄで構成される。インタフェース回路３０は、Ａｃｃｏｌａｄｅ  ｔｅｃｈｎｏｌｏｇｙ社のモデルＡＮＩＣ−２００Ｋ  １００Ｇ（１００Ｇｂｐｓのイーサネット（登録商標）用のネットワークアダプタ）で構成される。インタフェース回路３０、プロセッサ４１、及び、ＲＡＩＤコントローラ４３ａ〜４３ｃは、ＰＣＩ  Ｅｘｐｒｅｓｓ  ３．０（Ｇｅｎ３）規格対応のバスで接続され、プロセッサ４１とメモリ４２とは、ＤＤＲ４規格に対応したデータ転送方式で接続され、ＲＡＩＤコントローラ４３ａ〜４３ｃと二次記憶装置２０ａ〜２０ｃとは、ＳＡＳ規格に対応した転送バスで接続される。【００５６】
ＯＳ６０は、Ｌｉｎｕｘ（登録商標）（Ｕｂｕｎｔｕ  １６．０４．０１）である。アプリケーション５０は、上記実施の形態で説明した機能をもつ書き込みプロセス５１ａ〜５１ｃ、データ振り分けプロセス５２及び監視プロセス５３で構成される。【００５７】
以上のように構成されるデータ書き込み装置１０を用いて、１００Ｇｂｐｓのイーサネット（登録商標）を流れるパケットを連続的にキャプチャするテストを行った結果、４８時間の連続キャプチャを、取りこぼし率０％で、実現した。【００５８】
以上のように、本実施の形態に係るデータ書き込み装置１０は、複数の二次記憶装置２０ａ〜２０ｃにデータを書き込む装置であって、複数の二次記憶装置２０ａ〜２０ｃと、データを取得するインタフェース回路３０と、インタフェース回路３０で取得されたデータを複数の二次記憶装置２０ａ〜２０ｃのいずれかに書き込むコンピュータ装置４０とを備える。コンピュータ装置４０は、ソフトウェア４２ｂを保持するメモリ４２と、ソフトウェア４２ｂを実行するプロセッサ４１とを備える。ソフトウェア４２ｂは、マルチプロセスのオペレーティングシステム６０と、オペレーティングシステム６０の管理下で実行されるアプリケーション５０とを含む。アプリケーション５０は、複数の二次記憶装置２０ａ〜２０ｃのそれぞれに対応して設けられた複数の書き込みプロセスであって、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをオペレーティングシステム６０に依頼する複数の書き込みプロセス５１ａ〜５１ｃと、複数の二次記憶装置２０ａ〜２０ｃのそれぞれについて、対応する書き込みプロセス５１ａ〜５１ｃから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出する監視プロセス５３と、複数の二次記憶装置２０ａ〜２０ｃのそれぞれについて、対応する書き込みプロセス５１ａ〜５１ｃがオペレーティングシステム６０に書き込みを依頼したデータの量である依頼データ量と、監視プロセス５３によって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を複数の二次記憶装置２０ａ〜２０ｃの中から選択し、選択した二次記憶装置に対応する書き込みプロセスに対して、インタフェース回路３０で取得されたデータを対応する二次記憶装置に書き込む指示をするデータ振り分けプロセス５２とを含み、複数の書き込みプロセス５１ａ〜５１ｃは、データ振り分けプロセス５２からの指示に従って、それぞれ、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをオペレーティングシステム６０に依頼する。【００５９】
これにより、汎用のコンピュータ装置４０においてマルチプロセスのオペレーティングシステム６０の管理下で実行されるアプリケーション５０によって、二次記憶装置２０ａ〜２０ｃへのデータ書き込みが実現される。よって、データ書き込み装置１０を構築するのに独自のハードウェアを必要としない。【００６０】
また、並列実行されるプロセスとして、二次記憶装置２０ａ〜２０ｃのそれぞれに対応する書き込みプロセス５１ａ〜５１ｃ、二次記憶装置２０ａ〜２０ｃのそれぞれごとの書き込みが完了したデータ量を検出する監視プロセス５３、及び、二次記憶装置２０ａ〜２０ｃのそれぞれごとの依頼データ量及び完了データ量に基づいて次に書き込み対象となる二次記憶装置を選択するデータ振り分けプロセス５２が設けられる。このような並列的な機能分散により、依頼データ量及び完了データ量に基づいて、書き込み性能が最も高いとみなせる二次記憶装置が次に書き込み対象となる二次記憶装置として選択され、データ書き込みが行われることで、ロードバランスが図られる。その結果、全体として安定した高い書き込み性能が実現され、例えば１００Ｇｂｐｓ等の極めて高速な通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することが可能になる。【００６１】
ここで、データ振り分けプロセス５２は、書き込む対象となる二次記憶装置として、依頼データ量から完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を複数の二次記憶装置２０ａ〜２０ｃの中から選択する。【００６２】
これにより、データ振り分けプロセス５２は、依頼データ量と完了データ量とを用いた簡単な演算によって、二次記憶装置２０ａ〜２０ｃそれぞれの処理中のデータ量を算出して書き込み性能を評価できる。よって、書き込み性能が最も高いとみなせる二次記憶装置を次に書き込み対象となる二次記憶装置として選択することで、高速に、かつ、長期間に渡って取りこぼしなく、二次記憶装置へのデータ書き込みが可能になる。【００６３】
また、インタフェース回路３０は、取得したデータを一時的に保持する第１バッファメモリ３１を有し、第１バッファメモリ３１に保持されたデータをメモリ４２に転送する。メモリ４２は、インタフェース回路３０から転送されてきたデータを一時的に保持する第２バッファメモリ４２ａを有する。複数の書き込みプロセス５１ａ〜５１ｃは、それぞれ、第２バッファメモリ４２ａに保持されたデータを対応する二次記憶装置２０ａ〜２０ｃに書き込むことをオペレーティングシステム６０に依頼する。【００６４】
これにより、インタフェース回路３０で取得されたデータは、インタフェース回路３０が有する第１バッファメモリ３１、及び、メモリ４２が有する第２バッファメモリ４２ａを経て二次記憶装置２０ａ〜２０ｃに転送される。よって、データ転送をする構成要素間での処理速度や転送速度の差が吸収され、インタフェース回路３０で取得されたデータは、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置に書き込まれる。【００６５】
また、複数の書き込みプロセス５１ａ〜５１ｃは、それぞれ、対応する二次記憶装置２０ａ〜２０ｃに対して、空き容量を確認することなく、データを書き込むようにオペレーティングシステム６０に依頼する。【００６６】
これにより、二次記憶装置２０ａ〜２０ｃの空き容量の確認に伴うオーバヘッドがなくなり、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置にデータが書き込まれる。【００６７】
また、複数の書き込みプロセス５１ａ〜５１ｃは、それぞれ、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをオペレーティングシステム６０に依頼した場合に、依頼データ量を更新し、データ振り分けプロセス５２は、複数の書き込みプロセス５１ａ〜５１ｃのそれぞれから受け取った更新後の依頼データ量から、監視プロセス５３から受け取った完了データ量を差し引き、得られた値が最も小さい書き込みプロセスに対応する二次記憶装置を複数の二次記憶装置２０ａ〜２０ｃの中から選択する。【００６８】
これにより、データ振り分けプロセス５２は、書き込みプロセス５１ａ〜５１ｃで更新された依頼データ量、及び、監視プロセス５３から受け取った完了データ量に基づいて、次に書き込む対象となる二次記憶装置を選択できる。よって、データ振り分けプロセス５２は、並列実行される書き込みプロセス５１ａ〜５１ｃ、及び、監視プロセス５３から得た情報に基づいて、処理中のデータ量が最小、言い換えると、書き込み性能が最も高いとみなせる二次記憶装置を適切に選択できる。【００６９】
また、本実施の形態に係るデータ書き込み方法は、インタフェース回路３０で取得されたデータをコンピュータ装置４０によって複数の二次記憶装置２０ａ〜２０ｃに書き込む方法であって、複数の二次記憶装置２０ａ〜２０ｃのそれぞれに対応して設けられた書き込みプロセス５１ａ〜５１ｃが、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをオペレーティングシステム６０に依頼するステップ（Ｓ１３）と、監視プロセス５３が、複数の二次記憶装置２０ａ〜２０ｃのそれぞれについて、対応する書き込みプロセス５１ａ〜５１ｃから書き込みの依頼を受けたデータのうち、書き込みが完了したデータの量を検出するステップ（Ｓ３１〜Ｓ３４）と、データ振り分けプロセス５２が、複数の二次記憶装置２０ａ〜２０ｃのそれぞれについて、対応する書き込みプロセス５１ａ〜５１ｃがオペレーティングシステム６０に書き込みを依頼したデータの量である依頼データ量と、監視プロセス５３によって検出された書き込みが完了したデータの量である完了データ量とに基づいて、次に書き込む対象となる二次記憶装置を複数の二次記憶装置２０ａ〜２０ｃの中から選択し、選択した二次記憶装置に対応する書き込みプロセスに対して、インタフェース回路３０で取得されたデータを対応する二次記憶装置に書き込む指示をするステップ（Ｓ１〜Ｓ３）とを含む。そして、複数の書き込みプロセス５１ａ〜５１ｃは、データ振り分けプロセス５２からの指示に従って、それぞれ、対応する二次記憶装置２０ａ〜２０ｃへのデータの書き込みをオペレーティングシステム６０に依頼する（Ｓ１１〜Ｓ１３）。【００７０】
これにより、汎用のコンピュータ装置４０においてマルチプロセスのオペレーティングシステム６０の管理下で実行されるアプリケーション５０によって、二次記憶装置２０ａ〜２０ｃへのデータ書き込みが実現され、独自のハードウェアを必要としない。【００７１】
また、並列実行されるプロセスとして、二次記憶装置２０ａ〜２０ｃのそれぞれに対応する書き込みプロセス５１ａ〜５１ｃ、二次記憶装置２０ａ〜２０ｃのそれぞれごとの書き込みが完了したデータ量を検出する監視プロセス５３、及び、二次記憶装置２０ａ〜２０ｃのそれぞれごとの依頼データ量及び完了データ量に基づいて次に書き込み対象となる二次記憶装置を選択するデータ振り分けプロセス５２が設けられる。このような並列的な機能分散により、依頼データ量及び完了データ量に基づいて、書き込み性能が最も高いとみなせる二次記憶装置が次に書き込み対象となる二次記憶装置として選択され、データ書き込みが行われることで、ロードバランスが図られる。その結果、全体として安定した高い書き込み性能が実現され、例えば１００Ｇｂｐｓ等の極めて高速な通信ネットワークを流れる全てのパケットを長期間に渡って取りこぼしなく二次記憶装置に記録することが可能になる。【００７２】
なお、本発明は、データ書き込み装置及びデータ書き込み方法として実現できるだけでなく、コンピュータに、データ書き込み方法に含まれるステップを実行させるプログラムとして実現してもよい。そして、そのプログラムは、ＤＶＤ等のコンピュータ読み取り可能な記録媒体に格納して配布されてもよいし、インターネット等の通信ネットワークを介して配布されてもよい。【００７３】
以上、本発明に係るデータ書き込み装置及びデータ書き込み方法について、実施の形態に基づいて説明したが、本発明は、この実施の形態に限定されるものではない。本発明の主旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、実施の形態における一部の構成要素を組み合わせて構築される別の形態も、本発明の範囲内に含まれる。【００７４】
例えば、上記実施の形態では、データ振り分けプロセス５２は、書き込む対象となる二次記憶装置として、依頼データ量から完了データ量を差し引いて得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を選択したが、このような方法に限定されない。データ振り分けプロセス５２は、書き込む対象となる二次記憶装置として、完了データ量を依頼データ量で除して得られる値が最も小さい書き込みプロセスに対応する二次記憶装置を選択してもよい。これにより、依頼データ量のうち、完了データ量が占める割合に基づいて書き込み対象となる二次記憶装置が選択され、二次記憶装置の種類によっては、書き込み性能の劣化が効率的に回避され得る。【００７５】
また、上記実施の形態では、更新後の依頼データ量は、書き込みプロセス５１ａ〜５１ｃからデータ振り分けプロセス５２に通知され、更新後の完了データ量は、監視プロセス５３からデータ振り分けプロセス５２に通知されたが、必ずしも、このようなプロセス間通信は必須ではない。例えば、各プロセスがアクセス可能なメモリ４２内のグローバル記憶領域に、図３に示されるようなデータテーブルが設けられ、書き込みプロセス５１ａ〜５１はそのデータテーブルに依頼データ量を書き込み、監視プロセス５３はそのデータテーブルに完了データ量を書き込み、データ振り分けプロセス５２はそのデータテーブルを参照することで処理中のデータ量を算出してもよい。【００７６】
また、依頼データ量の更新は、書き込みプロセス５１ａ〜５１ｃが行うのではなく、ＯＳ６０への書き込み依頼を完了した書き込みプロセス５１ａ〜５１ｃからの書き込み依頼の完了通知を受けたデータ振り分けプロセス５２が、行ってもよい。同様に、完了データ量の更新は、監視プロセス５３が行うではなく、監視プロセス５３からの書き込みの完了通知を受けたデータ振り分けプロセス５２が、行ってもよい。【００７７】
また、上記実施の形態及び実験例では、１００Ｇｂｐｓイーサネット（登録商標）のパケットをキャプチャしたが、本発明に係るデータ書き込み装置は、データ取得の対象として、１００Ｇｂｐｓイーサネット（登録商標）に限定されるものではない。１００Ｇｂｐｓイーサネット（登録商標）のパケットをキャプチャできることは、本発明に係るデータ書き込み装置の能力の一例に過ぎない。つまり、本発明に係るデータ書き込み装置は、１００Ｇｂｐｓよりも高い、又は、低い伝送速度のデータをキャプチャする装置であってもよいし、通信ネットワークとは異なる伝送路又は装置（例えば、配線パターン又は信号発生器等）からデータを取得する装置であってもよい。【００７８】
また、上記実験例では、ポータブル型システムとして構築されたデータ書き込み装置が示されたが、本発明に係るデータ書き込み装置は、これに限られず、ラックマウント型システムとして構築されてもよい。【００７９】
また、上記実施の形態では、二次記憶装置２０ａ〜２０ｃのそれぞれは、複数のＳＳＤ又はＨＤＤを全体でひとつの記憶装置として扱うＲＡＩＤで構成されたが、これに限られず、単体のＳＳＤ又はＨＤＤで構成されてもよい。【００８０】
また、上記実施の形態では、１ブロックの単位で、次に書き込む対象となる二次記憶装置が選択され、書き込み処理が行われたが、この単位に限定されない。複数のブロック、あるいは、可変サイズのデータの単位で、二次記憶装置の選択及び書き込み処理が行われてもよい。例えば、書き込むべきデータの発生頻度が変動する場合には、一定時間に発生する可変データ量のデータを単位として、二次記憶装置の選択及び書き込み処理が行われてもよい。これによって、二次記憶装置への書き込み頻度が一定化され得る。
【産業上の利用可能性】
【００８１】
本発明は、複数の二次記憶装置にデータを書き込むデータ書き込み装置として、特に、取得したデータを、高速に、かつ、長期間に渡って取りこぼしなく二次記憶装置に記録する装置として、例えば、１００Ｇｂｐｓイーサネット（登録商標）のパケットを長期間に渡って取りこぼしなくキャプチャする装置として、利用できる。
【符号の説明】
【００８２】
１０  データ書き込み装置
１２  通信ネットワーク
２０ａ、２０ｂ、２０ｃ  二次記憶装置
３０  インタフェース回路
３１  第１バッファメモリ
４０  コンピュータ装置
４１  プロセッサ
４２  メモリ
４２ａ  第２バッファメモリ
４２ｂ  ソフトウェア
４３ａ、４３ｂ、４３ｃ  ＲＡＩＤコントローラ
５０  アプリケーション
５１ａ、５１ｂ、５１ｃ  書き込みプロセス
５２  データ振り分けプロセス
５３  監視プロセス
６０  オペレーティングシステム（ＯＳ）
【要約】
データ書き込み装置（１０）は、二次記憶装置（２０ａ〜２０ｃ）と、データを取得するインタフェース回路（３０）と、取得されたデータを二次記憶装置（２０ａ〜２０ｃ）のいずれかに書き込むコンピュータ装置（４０）とを備える。コンピュータ装置（４０）は、アプリケーション（５０）として、二次記憶装置（２０ａ〜２０ｃ）のそれぞれに対応する書き込みプロセス（５１ａ〜５１ｃ）と、二次記憶装置（２０ａ〜２０ｃ）のそれぞれについて書き込みが完了したデータの量を検出する監視プロセス（５３）と、二次記憶装置（２０ａ〜２０ｃ）のそれぞれについての依頼データ量と完了データ量とに基づいて次に書き込む対象となる二次記憶装置を選択し、対応する書き込みプロセスに対して書き込みを指示するデータ振り分けプロセス（５２）とを含む。【図１】
0006377304.tif 000002
【図２】
0006377304.tif 000003
【図３】
0006377304.tif 000004
【図４】
0006377304.tif 000005
【図５】
0006377304.tif 000006
【図６】
0006377304.tif 000007