(57)【要約】【課題】  記憶装置のいずれかにデータを書き込む場合に、データを書き込まない他の記憶装置がデータの書き込みに干渉することを抑止し、データの書き込み性能を維持する。【解決手段】  複数の演算処理装置のうちの第１の演算処理装置は、複数の記憶装置のうちの第１の記憶装置にデータを書き込み、第１の記憶装置に所定量のデータを書き込んだことに基づいて、管理装置に割り当て要求を発行する。管理装置は、割り当て要求に基づいて、接続装置を制御して、第１の演算処理装置に複数の記憶装置のうちの第２の記憶装置を接続する。第１の演算処理装置は、第２の記憶装置へのデータの書き込みを開始した後に管理装置に開放要求を発行する。管理装置は、開放要求に基づいて、接続装置を制御して第１の演算処理装置から第１の記憶装置を切り離す。【選択図】    図１
2014182444.tif 000002
【特許請求の範囲】
【請求項１】
演算処理をそれぞれ実行する複数の演算処理装置と、
データをそれぞれ記憶する複数の記憶装置と、
前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、
前記複数の演算処理装置および前記接続装置を制御する管理装置を有し、
前記複数の演算処理装置のうちの第１の演算処理装置は、前記複数の記憶装置のうちの第１の記憶装置にデータを書き込み、前記第１の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続し、
前記第１の演算処理装置は、前記第２の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第１の演算処理装置から前記第１の記憶装置を切り離すことを特徴とする情報処理システム。
【請求項２】
前記第１の演算処理装置は、前記接続装置を介して接続された記憶装置に所定量のデータを書き込む毎に前記管理装置に前記割り当て要求および前記開放要求を発行し、
前記管理装置は、前記割り当て要求および前記開放要求に基づいて、前記第１の演算処理装置に接続する記憶装置を切り替え、データを未書き込みの記憶装置が存在しない場合に、前記割り当て要求に基づいて、他の記憶装置に比べて古いデータを保持した記憶装置を前記第１の演算処理装置に接続し、
前記第１の演算処理装置は、前記古いデータを保持した記憶装置に新たなデータを上書きすることを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記管理装置は、検索要求に基づいて、前記接続装置を制御して、前記複数の演算処理装置のうちの第２の演算処理装置を、データを保持した前記第１の記憶装置のいずれかである第３の記憶装置に接続し、
前記第２の演算処理装置は、前記検索要求に基づいて、前記第３の記憶装置に保持されたデータを検索し、検索結果を前記管理装置に通知し、
前記管理装置は、前記検索結果の受信に応答して、前記第２の演算処理装置と前記第３の記憶装置との接続を解除することを特徴とする請求項１または請求項２記載の情報処理システム。
【請求項４】
前記管理装置は、データが生成された時刻を示す時刻情報を、データが書き込まれた記憶装置毎に記憶する記憶部を有し、前記検索要求に含まれる検索キーが示す時刻情報に対応するデータを保持する記憶装置を、前記記憶部に記憶した前記時刻情報に基づいて選択し、選択した記憶装置を前記第３の記憶装置として前記第２の演算処理装置に接続することを特徴とする請求項３記載の情報処理システム。
【請求項５】
前記管理装置は、前記検索要求で指示された検索対象の記憶装置が前記第１の演算処理装置に接続された前記第１の記憶装置の場合、前記接続装置を制御して、前記第１の演算処理装置に前記第２の記憶装置を接続し、前記第１の演算処理装置から前記第１の記憶装置を切り離して前記第３の記憶装置として前記第２の演算処理装置に接続することを特徴とする請求項３または請求項４記載の情報処理システム。
【請求項６】
前記第１の演算処理装置は、複数の前記第１の記憶装置にデータを冗長に書き込み、
前記管理装置は、前記接続装置を制御して、前記複数の演算処理装置のうちの第３の演算処理装置に、データを冗長に保持する複数の前記第１の記憶装置のうち前記第１の演算処理装置に接続されない第４の記憶装置を接続し、
前記第３の演算処理装置は、前記第４の記憶装置を検査し、検査結果を前記管理装置に通知し、
前記管理装置は、前記検査結果が前記第４の記憶装置の故障を示す場合に、前記接続装置を制御して、前記第３の演算処理装置に前記複数の記憶装置のうちの第５の記憶装置を接続し、前記第４の記憶装置とともにデータを冗長に保持する第６の記憶装置に保持されたデータを前記第５の記憶装置にコピーし、故障した前記第４の記憶装置の前記第１の演算処理装置に対する割り当てを前記第５の記憶装置に変更することを特徴とする請求項１ないし請求項５のいずれか１項記載の情報処理システム。
【請求項７】
前記管理装置は、前記検査結果が修復可能なエラーを示す場合に、前記第６の記憶装置に保持されたデータを、エラーが発生した前記第４の記憶装置にコピーすることを特徴とする請求項６記載の情報処理システム。
【請求項８】
演算処理をそれぞれ実行する複数の演算処理装置の各々を、前記接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置において、
前記複数の演算処理装置のうちの第１の演算処理装置が、前記複数の記憶装置のうちの第１の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続し、
前記第１の演算処理装置が、前記第２の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置から前記第１の記憶装置を切り離すことを特徴とする管理装置。
【請求項９】
演算処理をそれぞれ実行する複数の演算処理装置の各々を、前記接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置の制御プログラムにおいて、
前記管理装置に、
前記複数の演算処理装置のうちの第１の演算処理装置が、前記複数の記憶装置のうちの第１の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御させ、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続させ、
前記第１の演算処理装置が、前記第２の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御させ、前記第１の演算処理装置から前記第１の記憶装置を切り離させることを特徴とする管理装置の制御プログラム。
【請求項１０】
演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、前記複数の演算処理装置および前記接続装置を制御する管理装置を含む情報処理システムの制御方法において、
前記複数の演算処理装置のうちの第１の演算処理装置は、前記複数の記憶装置のうちの第１の記憶装置にデータを書き込み、前記第１の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続し、
前記第１の演算処理装置は、前記第２の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第１の演算処理装置から前記第１の記憶装置を切り離すことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法に関する。
【背景技術】
【０００２】
複数の演算処理装置のいずれかと複数の記憶装置のいずれかとを、スイッチを介して接続することで、クライアントの仕様に適したシステムを構築する手法が提案されている（例えば、特許文献１参照）。この種のシステムは、プログラムの使用頻度が少ない期間に、複数の記憶装置に分散した複数のプログラムを１つの記憶装置に移動することで、消費電力を抑制する（例えば、特許文献２参照）。
【０００３】
また、楽器から発生した楽音を所定時間単位で記録装置に記録することで、楽音を検索可能にし、記録装置がデジタル情報で満杯になると、記録されたデジタル情報を新たなデジタル情報で上書きする音声記録装置が提案されている（例えば、特許文献３参照）。
【０００４】
さらに、冗長化されたデータを異なる記憶装置にそれぞれ格納し、記憶装置の異常が検出された場合に、冗長データを保持する記憶装置から新たに割り当てられた記憶装置にデータをコピーする手法が提案されている（例えば、特許文献４参照）。データをマスタディスクとバックアップディスクに格納し、マスタディスクの欠陥が検出された場合に、バックアップディスクに保持されたデータをマスタディスクの代替領域にコピーする手法が提案されている（例えば、特許文献５参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２４０６９７号公報
【特許文献２】特開２０１０−９７５３３号公報
【特許文献３】特表２００３−５０４６７３号公報
【特許文献４】国際公開第２００５／３９５１号
【特許文献５】特開２００６−２６０３７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、この種のシステムでは、複数の記憶装置がスイッチを介して演算処理装置に接続され、演算処理装置は、スイッチを介して接続された記憶装置のいずれかにデータを書き込む。すなわち、データが書き込まれない記憶装置や、データの書き込みが完了した記憶装置が、スイッチを介して演算処理装置に接続される。このため、演算処理装置が記憶装置の１つにデータを書き込む場合に、スイッチに接続された他の記憶装置による干渉の影響で、データの書き込み性能が低下するおそれがある。
【０００７】
本件開示の情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法は、記憶装置のいずれかにデータを書き込む場合に、データを書き込まない他の記憶装置がデータの書き込みに干渉することを抑止し、データの書き込み性能を維持することを目的とする。
【課題を解決するための手段】
【０００８】
一つの観点によれば、情報処理システムは、演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、複数の演算処理装置の各々を複数の記憶装置のいずれかに接続する接続装置と、複数の演算処理装置および接続装置を制御する管理装置を有し、複数の演算処理装置のうちの第１の演算処理装置は、複数の記憶装置のうちの第１の記憶装置にデータを書き込み、第１の記憶装置に所定量のデータを書き込んだことに基づいて、管理装置に割り当て要求を発行し、管理装置は、割り当て要求に基づいて、接続装置を制御して、第１の演算処理装置に複数の記憶装置のうちの第２の記憶装置を接続し、第１の演算処理装置は、第２の記憶装置へのデータの書き込みを開始した後に管理装置に開放要求を発行し、管理装置は、開放要求に基づいて、接続装置を制御して第１の演算処理装置から第１の記憶装置を切り離す。
【０００９】
別の観点によれば、演算処理をそれぞれ実行する複数の演算処理装置の各々を、接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置は、複数の演算処理装置のうちの第１の演算処理装置が、複数の記憶装置のうちの第１の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、接続装置を制御して、第１の演算処理装置に複数の記憶装置のうちの第２の記憶装置を接続し、第１の演算処理装置が、第２の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、接続装置を制御して、第１の演算処理装置から第１の記憶装置を切り離すことを特徴とする。
【００１０】
別の観点によれば、演算処理をそれぞれ実行する複数の演算処理装置の各々を、接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置の制御プログラムは、管理装置に、複数の演算処理装置のうちの第１の演算処理装置が、複数の記憶装置のうちの第１の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、接続装置を制御させ、第１の演算処理装置に複数の記憶装置のうちの第２の記憶装置を接続させ、第１の演算処理装置が、第２の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、接続装置を制御させ、第１の演算処理装置から第１の記憶装置を切り離させる。
【００１１】
別の観点によれば、演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、複数の演算処理装置の各々を複数の記憶装置のいずれかに接続する接続装置と、複数の演算処理装置および接続装置を制御する管理装置を含む情報処理システムの制御方法は、複数の演算処理装置のうちの第１の演算処理装置は、複数の記憶装置のうちの第１の記憶装置にデータを書き込み、第１の記憶装置に所定量のデータを書き込んだことに基づいて、管理装置に割り当て要求を発行し、管理装置は、割り当て要求に基づいて、接続装置を制御して、第１の演算処理装置に複数の記憶装置のうちの第２の記憶装置を接続し、第１の演算処理装置は、第２の記憶装置へのデータの書き込みを開始した後に管理装置に開放要求を発行し、管理装置は、開放要求に基づいて、接続装置を制御して第１の演算処理装置から第１の記憶装置を切り離す。
【発明の効果】
【００１２】
本件開示の情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法では、記憶装置のいずれかにデータを書き込む場合に、データを書き込まない他の記憶装置がデータの書き込みに干渉することを抑止でき、データの書き込み性能を維持できる。
【図面の簡単な説明】
【００１３】
【図１】情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の別の実施形態を示す図である。
【図２】図１に示した情報処理システムの動作の例を示す図である。
【図３】図１に示した情報処理システムの動作の別の例を示す図である。
【図４】図１に示した情報処理システムの動作のさらなる別の例を示す図である。
【図５】情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の別の実施形態を示す図である。
【図６】図５に示した接続装置の例を示す図である。
【図７】図５に示した管理装置の例を示す図である。
【図８】図７に示した記憶装置内に割り当てられるテーブルの例を示す図である。
【図９】図５に示した情報処理システムが実行するキャプチャ動作のシーケンスの例を示す図である。
【図１０】図９（ａ）に示したキャプチャ開始スレッドにより起動用のＨＤＤがマザーボードに接続された後のテーブルの状態の例を示す図である。
【図１１】図９（ｂ）に示したキャプチャプロセスが、ＨＤＤ１−ＨＤＤ４にデータの書き込みを開始した後のテーブルの状態の例を示す図である。
【図１２】図９（ｅ）に示した割り当て要求スレッドの処理後に、キャプチャプロセスがＨＤＤ１−ＨＤＤ４に並行してＨＤＤ５−ＨＤＤ８へのデータの書き込みを開始した後のテーブルの状態の例を示す図である。
【図１３】図９（ｇ）に示した開放要求スレッドにより、マザーボードＭＢ１、ＭＢ２からＨＤＤ１−ＨＤＤ４が切り離された後のテーブルＴＢＬの状態の例を示す図である。
【図１４】キャプチャ用の全てのＨＤＤにデータが保持された場合のテーブルの状態の例を示す図である。
【図１５】データが保持されたＨＤＤにデータを上書きする場合のテーブルの状態の例を示す図である。
【図１６】図９に示した管理プロセスの例を示す図である。
【図１７】図１６に示したステップＳ２００により起動されるキャプチャ開始スレッドの例を示す図である。
【図１８】図１６に示したステップＳ１００により起動される切り替えスレッドの例を示す図である。
【図１９】図８に示したデータのキャプチャ用の各ＨＤＤ１−ＨＤＤ２４の記憶領域の割り当ての例を示す図である。
【図２０】図１７に示したステップＳ５００により起動されるキャプチャプロセスの例を示す図である。
【図２１】図１７に示したステップＳ５００により起動されるキャプチャプロセスの例（図２０の続き）を示す図である。
【図２２】図２１に示したステップＳ５３０により起動される割り当て要求スレッドの例を示す図である。
【図２３】図２１に示したステップＳ５３４により起動される開放要求スレッドの例を示す図である。
【図２４】図２０から図２３に示したキャプチャプロセスにより実行されるデータのキャプチャ動作の例を示す図である。
【図２５】図５に示した情報処理システムが実行する検索動作のシーケンスの例を示す図である。
【図２６】図２５に示した検索スレッドにより検索用のＨＤＤがマザーボードに接続された後のテーブルの状態の例を示す図である。
【図２７】図２５に示した検索プロセスが起動された後のテーブルの状態の例を示す図である。
【図２８】図１６に示したステップＳ３００により起動される検索スレッドの例を示す図である。
【図２９】図１６に示したステップＳ３００により起動される検索スレッドの例（図２８の続き）を示す図である。
【図３０】図２９に示したステップＳ６００により起動される検索プロセスの例を示す図である。
【図３１】図３０に示したステップＳ７００により起動されるＨＤＤ検索スレッドの例を示す図である。
【図３２】図３１に示したＨＤＤ検索スレッドにより求められる開始アドレスおよび終了アドレスの例を示す図である。
【図３３】図３１に示したステップＳ７１０により起動される開始アドレス検索ルーチンの例を示す図である。
【図３４】図３１に示したステップＳ７４０により起動される終了アドレス検索ルーチンの例を示す図である。
【図３５】図３３に示したステップＳ８３０により起動される開始アドレス検出ルーチンの例を示す図である。
【図３６】図３４に示したステップＳ８６０により起動される終了アドレス検出ルーチンの例を示す図である。
【図３７】図３３、図３４、図３５、図３６に示したステップＳ８００により起動されるタイムスタンプ読み出しルーチンの例を示す図である。
【図３８】図５に示した情報処理システムが実行する検査動作のシーケンスの例を示す図である。
【図３９】図３８に示した検査プロセスの起動時のテーブルの状態の例を示す図である。
【図４０】図３８に示した検査プロセスを実行中のテーブルの状態の例を示す図である。
【図４１】図１６に示したステップＳ４００により起動される検査スレッドの例を示す図である。
【図４２】図４１に示したステップＳ４３０により呼び出される検査するＨＤＤの選択ルーチンの例を示す図である。
【図４３】図４１に示したステップＳ４５０により呼び出される検査プロセスの起動ルーチンの例を示す図である。
【図４４】図４１に示したステップＳ４７０により呼び出される検査結果の受信ルーチンの例を示す図である。
【図４５】図４３に示したステップＳ４６０により呼び出される検査プロセスルーチンの例を示す図である。
【図４６】図５に示した情報処理システムが実行するコピー動作のシーケンスの例を示す図である。
【図４７】図４６に示したコピープロセスの起動時のテーブルの状態の例を示す図である。
【図４８】図４６に示したコピープロセスを実行中のテーブルの状態の例を示す図である。
【図４９】図４６に示したコピープロセスの実行後のテーブルの状態の例を示す図である。
【図５０】図４６に示したコピープロセスを実行中のテーブルの状態の別の例を示す図である。
【図５１】図４６に示したコピープロセスの実行後のテーブルの状態の別の例を示す図である。
【図５２】図４１に示したステップＳ９００により呼び出されるコピー処理ルーチンの例を示す図である。
【図５３】図５２に示したステップＳ９３０により呼び出されるＨＤＤ障害処理ルーチンの例を示す図である。
【図５４】図５２に示したステップＳ９６０により呼び出されるブロック救済処理ルーチンの例を示す図である。
【図５５】図５３および図５４に示したステップＳ９９０により起動されるコピープロセスの例を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を用いて実施形態を説明する。
【００１５】
図１は、情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の一実施形態を示す。この実施形態の情報処理システムＳＹＳは、複数のＣＰＵ（ＣＰＵ１、ＣＰＵ２、ＣＰＵ３；Central Processing Unit）と、データをそれぞれ記憶する複数の記憶装置ＭＥＭ（ＭＥＭ１、ＭＥＭ２、ＭＥＭ３）と、接続装置ＳＷと、管理装置ＣＮＴＬとを有する。ＣＰＵは、演算処理を実行する演算処理装置の一例である。例えば、記憶装置ＭＥＭは、ハードディスクドライブである。なお、情報処理システムＳＹＳに搭載されるＣＰＵの数および記憶装置ＭＥＭの数は３個に限定されない。
【００１６】
各ＣＰＵは、複数のプロセッサコアが搭載されたマルチコアタイプでもよい。また、情報処理システムＳＹＳは、ＣＰＵとＤＲＡＭ（Dynamic Random Access Memory）チップを含むＤＩＭＭ（Dual Inline Memory Module）等の記憶装置とが搭載されたマザーボード等のコンピュータ装置を、ＣＰＵの代わりに有してもよい。
【００１７】
なお、情報処理システムＳＹＳは、ＣＰＵの代わりに、プログラムを実行することで動作するＤＳＰ（Digital Signal Processor）やＧＰＵ（Graphics Processing Unit）等のプロセッサや、これ等のプロセッサを含むコンピュータ装置を有してもよい。記憶装置ＭＥＭは、ＳＳＤ（Solid State Drive）等のフラッシュストレージやＤＩＭＭでもよい。
【００１８】
記憶装置ＭＥＭは、ストレージ装置であり、ＣＰＵ等を含むサーバ装置でない。このため、サーバ装置をストレージサーバとして記憶装置ＭＥＭの代わりに用いることに比べて、情報処理システムＳＹＳのコストを削減でき、消費電力を削減できる。
【００１９】
接続装置ＳＷは、各ＣＰＵ１−ＣＰＵ３を記憶装置ＭＥＭ１−ＭＥＭ３の少なくともいずれかに接続して情報処理装置を構築する。例えば、図１は、ＣＰＵ１と記憶装置ＭＥＭ１とにより情報処理装置が構築された状態を示す。ＣＰＵ１と記憶装置ＭＥＭ１とによる情報処理装置は、情報処理システムＳＹＳの外部から転送されるデータをキャプチャするキャプチャサーバとして動作する。
【００２０】
例えば、接続装置ＳＷは、記憶装置ＭＥＭの帯域（データ転送速度）を下げることなく、記憶装置ＭＥＭをＣＰＵに接続する性能を有する。換言すれば、接続装置ＳＷを介してＣＰＵに接続された記憶装置ＭＥＭの性能は、接続装置ＳＷを介することなくＣＰＵに接続された記憶装置ＭＥＭの性能と同等である。
【００２１】
管理装置ＣＮＴＬは、ＣＰＵ１−ＣＰＵ３および接続装置ＳＷを制御する。例えば、管理装置ＣＮＴＬは、ＣＰＵ等のプロセッサと、プロセッサが実行するプログラムを格納した記憶装置とを有するサーバ等のコンピュータ装置であり、制御プログラムを実行することにより、ＣＰＵ１−ＣＰＵ３および接続装置ＳＷを制御する。
【００２２】
例えば、情報処理システムＳＹＳは、携帯電話での会話の音声データを収集するデータセンタに接続され、音声データをリアルタイムでキャプチャする。そして、データセンタのコンピュータ装置は、携帯電話の通信回線の不具合が発生した場合に、不具合が発止した日時の音声データを情報処理システムＳＹＳから読み出し、読み出した音声データに含まれる雑音等を解析することで、不具合の原因を調べる。なお、情報処理システムＳＹＳは、複数の記憶装置ＭＥＭにデータを重複して書き込み、記憶装置ＭＥＭに保持されたデータにエラーが発生した場合、エラーを修復してもよい。
【００２３】
図２は、図１に示した情報処理システムＳＹＳの動作の例を示す。図２は、情報処理システムの制御方法を示している。図２の動作は、管理装置ＣＮＴＬが制御プログラムの１つであるキャプチャプログラムを実行することにより実現される。
【００２４】
図２では、ＣＰＵ１と、ＣＰＵ１に接続された記憶装置ＭＥＭ１−ＭＥＭ３の少なくともいずれかにより情報処理装置（キャプチャサーバ）が構築される。図２において、太枠で示した記憶装置ＭＥＭは、例えば、満杯に近い所定量のデータが書き込まれたことを示す。
【００２５】
まず、図２（Ａ）において、ＣＰＵ１は、キャプチャされたデータを記憶装置ＭＥＭ１に書き込む。ＣＰＵ１は、記憶装置ＭＥＭ１に所定量のデータを書き込んだことに基づいて、管理装置ＣＮＴＬに割り当て要求を発行する。
【００２６】
次に、図２（Ｂ）において、管理装置ＣＮＴＬは、割り当て要求に基づいて、接続装置ＳＷを制御して、ＣＰＵ１に記憶装置ＭＥＭ２を接続する。ＣＰＵ１は、例えば、記憶装置ＭＥＭ１、ＭＥＭ２に重複してデータを書き込む。ＣＰＵ１は、記憶装置ＭＥＭ２へのデータの書き込みを開始した後に管理装置ＣＮＴＬに開放要求を発行する。
【００２７】
次に、図２（Ｃ）において、管理装置ＣＮＴＬは、開放要求に基づいて、接続装置ＳＷを制御して、ＣＰＵ１から記憶装置ＭＥＭ１を切り離す。この後、ＣＰＵ１は、キャプチャされたデータを記憶装置ＭＥＭ２に書き込む。ＣＰＵ１は、記憶装置ＭＥＭ２に所定量のデータを書き込んだことに基づいて、管理装置ＣＮＴＬに割り当て要求を発行する。
【００２８】
管理装置ＣＮＴＬが、データを書き込む記憶装置ＭＥＭ２をＣＰＵ１に接続し、データの書き込みが完了した記憶装置ＭＥＭ１をＣＰＵ１から切り離すことで、ＣＰＵは、記憶装置ＭＥＭ１の接続による干渉を受けることなく、記憶装置ＭＥＭ２にアクセスできる。すなわち、ＣＰＵ１が記憶装置ＭＥＭ２にデータを書き込む場合に、データを書き込まない他の記憶装置ＭＥＭ１、ＭＥＭ３がデータの書き込みに干渉することを抑止できる。これにより、ＣＰＵは、記憶装置ＭＥＭに対するデータの書き込み性能を維持できる。
【００２９】
次に、図２（Ｄ）において、管理装置ＣＮＴＬは、割り当て要求に基づいて、接続装置ＳＷを制御して、ＣＰＵ１は、記憶装置ＭＥＭ２に所定量のデータを書き込んだことに基づいて、管理装置ＣＮＴＬに割り当て要求を発行する。そして、図２（Ｂ）と同様に、管理装置ＣＮＴＬは、ＣＰＵ１と記憶装置ＭＥＭ３とを接続する。ＣＰＵ１は、キャプチャされたデータを記憶装置ＭＥＭ２、ＭＥＭ３に書き込み、記憶装置ＭＥＭ３へのデータの書き込みを開始した後に管理装置ＣＮＴＬに開放要求を発行する。
【００３０】
次に、図２（Ｅ）において、管理装置ＣＮＴＬは、開放要求に基づいて、接続装置ＳＷを制御して、ＣＰＵ１から記憶装置ＭＥＭ２を切り離す。ＣＰＵ１は、キャプチャされたデータを記憶装置ＭＥＭ３に書き込む。ＣＰＵ１は、記憶装置ＭＥＭ２に所定量のデータを書き込んだことに基づいて、管理装置ＣＮＴＬに割り当て要求を発行する。
【００３１】
次に、図２（Ｆ）において、データが書き込まれていない未使用の記憶装置ＭＥＭがないため、管理装置ＣＮＴＬは、割り当て要求に基づいて、他の記憶装置ＭＥＭに比べて古いデータを保持した記憶装置ＭＥＭをＣＰＵ１に接続する。この例では、管理装置ＣＮＴＬは、最も古いデータを保持した記憶装置ＭＥＭ１をＣＰＵ１に接続する。ＣＰＵ１は、キャプチャされたデータを記憶装置ＭＥＭ３に書き込むとともに、キャプチャされたデータを記憶装置ＭＥＭ１に上書きする。
【００３２】
この後、ＣＰＵ１は、管理装置ＣＮＴＬによる管理に基づいて、キャプチャされたデータを順次に古いデータを保持した記憶装置ＭＥＭに上書きする。このように、データが書き込まれていない未使用の記憶装置ＭＥＭがない場合に、ＣＰＵ１が古いデータを保持した記憶装置ＭＥＭにデータを書き込むことで、有限の数の記憶装置ＭＥＭを用いて、キャプチャされたデータを保持できる。
【００３３】
なお、情報処理システムＳＹＳに配置されるデータのキャプチャ用の記憶装置ＭＥＭの数は、記憶装置ＭＥＭに保持するデータの保存期間に依存して決められる。この例では、図２（Ｆ）に示した記憶装置ＭＥＭ１は、データの保存期間が経過しており、記憶装置ＭＥＭ１が保持するデータは検索動作の対象ではない。
【００３４】
図３は、図１に示した情報処理システムＳＹＳの動作の別の例を示す。図３は、情報処理システムの制御方法を示している。図３の動作は、管理装置ＣＮＴＬが制御プログラムの１つである検索プログラムを実行することにより実現される。
【００３５】
この例では、図２（Ｃ）と同様の状態である図３（Ａ）において、管理装置ＣＮＴＬは、情報処理システムＳＹＳの外部（例えば、データセンタ）から検索要求を受信する。
【００３６】
図３（Ｂ）において、管理装置ＣＮＴＬは、検索要求に基づいて、接続装置ＳＷを制御して、データを保持した記憶装置ＭＥＭ１、ＭＥＭ２のいずれかにＣＰＵ２を接続する。
【００３７】
例えば、管理装置ＣＮＴＬは、データが生成された時刻（すなわち、データがキャプチャされた日時）を示す時刻情報を、データが書き込まれた記憶装置毎に記憶する記憶部ＴＢＬを有する。例えば、管理装置ＣＮＴＬは、各記憶装置ＭＥＭに最初に書き込んだデータがキャプチャされた時刻を、記憶部ＴＢＬに書き込む。なお、記憶部は、管理装置ＣＮＴＬの外部に配置されてもよい。
【００３８】
管理装置ＣＮＴＬは、検索要求に含まれる検索キーが示す時刻情報に対応するデータを保持する記憶装置ＭＥＭ（この例では、ＭＥＭ１）を、記憶部ＴＢＬに記憶した時刻情報に基づいて特定し、特定した記憶装置ＭＥＭをＣＰＵ２に接続する。図３において、接続装置ＳＷ内の破線は、検索動作を実行するＣＰＵ２と検索対象の記憶装置ＭＥＭとが接続されることを示す。
【００３９】
ＣＰＵ２は、管理装置ＣＮＴＬを介して受信する検索要求（検索キー）に基づいて、記憶装置ＭＥＭ１に保持されたデータを検索し、検索結果を管理装置ＣＮＴＬに通知する。このように、ＣＰＵ２および記憶装置ＭＥＭ１は、検索要求に基づいてデータを検索する検索サーバとして動作する。
【００４０】
一方、図３（Ｃ）において、管理装置ＣＮＴＬは、検索要求で指示された検索対象の記憶装置ＭＥＭがデータをキャプチャ中の記憶装置ＭＥＭ２である場合、図２（Ｄ）と同様に、接続装置ＳＷを制御して、ＣＰＵ１に記憶装置ＭＥＭ３を接続する。
【００４１】
次に、図３（Ｄ）に示すように、管理装置ＣＮＴＬは、ＣＰＵ１から記憶装置ＭＥＭ２を切り離す。この場合、記憶装置ＭＥＭ２に書き込まれたデータが所定量に満たない場合にも、所定量が書き込まれたことにする（図３（Ｄ）の太枠のＭＥＭ２）。そして、管理装置ＣＮＴＬは、ＣＰＵ１から切り離した記憶装置ＭＥＭ２をＣＰＵ２に接続し、ＣＰＵ２に検索動作を実行させる。これにより、ＣＰＵ１によりデータが書き込まれる記憶装置ＭＥＭと、ＣＰＵ２により検索される記憶装置ＭＥＭとが重複することがなくなり、ＣＰＵ１は、記憶装置ＭＥＭの帯域を下げることなく、記憶装置ＭＥＭにデータを安定して書き込みできる。
【００４２】
次に、図３（Ｅ）に示すように、例えば、検索要求に応答する検索動作が終了した場合、管理装置ＣＮＴＬは、ＣＰＵ２と記憶装置ＭＥＭとの接続を解除し、検索サーバとしての動作を完了する。
【００４３】
この実施形態では、検索要求に応答して実行される検索動作は、データのキャプチャ動作を実行するＣＰＵ１とは異なるＣＰＵ２により実行される。キャプチャサーバとして動作するＣＰＵ１は、検索動作を実行しないため、キャプチャ動作を集中して実行できる。この結果、ＣＰＵ１は、音声データのようにスループットの高いデータを、検索要求の有無に拘わらず、記憶装置ＭＥＭ１−ＭＥＭ３に安定して書き込みできる。
【００４４】
図４は、図１に示した情報処理システムＳＹＳの動作のさらなる別の例を示す。図４は、情報処理システムの制御方法を示している。図４の動作は、管理装置ＣＮＴＬが制御プログラムの１つである検査プログラムを実行することにより実現される。
【００４５】
この例では、ＣＰＵ１は、キャプチャされたデータを複数の記憶装置ＭＥＭに冗長に書き込む。すなわち、情報処理システムＳＹＳは、データをミラーリングするＲＡＩＤ１（Redundant Arrays of Independent Disks）の機能を有する。このため、図４では、データを冗長に保持する３つの記憶装置ペア（ＭＥＭ１、ＭＥＭ２）、（ＭＥＭ３、ＭＥＭ４）、（ＭＥＭ５、ＭＥＭ６）を示す。記憶装置ＭＥＭ７、ＭＥＭ８は、故障した記憶装置ＭＥＭ１−ＭＥＭ６と交換されるスペアである。
【００４６】
図４（Ａ）は、図２（Ｅ）に対応する状態において、ＣＰＵ３が、データを冗長に保持する記憶装置ペア（ＭＥＭ１、ＭＥＭ２）のうち記憶装置ＭＥＭ１を検査する状態を示す。図４において、接続装置ＳＷ内の一点鎖線は、検査動作を実行するＣＰＵ３と検査対象の記憶装置ＭＥＭとが接続されることを示す。ＣＰＵ１は、ＣＰＵ３による記憶装置ＭＥＭ１の検査中に、検査とは独立して記憶装置ペア（ＭＥＭ５、ＭＥＭ６）にデータを冗長に書き込む。
【００４７】
管理装置ＣＮＴＬは、検査する記憶装置ＭＥＭを、ＣＰＵ１によるキャプチャ動作を実行していない記憶装置ＭＥＭ（この例では、ＭＥＭ１−ＭＥＭ４のいずれか）から選択する。ＣＰＵ３は、記憶装置ＭＥＭ１の検査の完了後、検査結果を管理装置ＣＮＴＬに通知する。このように、ＣＰＵ３は、記憶装置ＭＥＭに保持されたデータを検査する検査サーバとして動作する。管理装置ＣＮＴＬは、ＣＰＵ３から記憶装置ＭＥＭ１の検査結果を受信後、接続装置ＳＷを制御して、ＣＰＵ３と記憶装置ＭＥＭ１との接続を解除する。
【００４８】
図４（Ｂ）において、管理装置ＣＮＴＬは、検査結果が記憶装置ＭＥＭ１の故障を示す場合に、接続装置ＳＷを制御して、記憶装置ＭＥＭ２と未使用の記憶装置ＭＥＭ７とをＣＰＵ３に接続する。そして、管理装置ＣＮＴＬは、記憶装置ＭＥＭ２に保持された冗長データを、記憶装置ＭＥＭ７にコピーすることをＣＰＵ３に指示する。ＣＰＵ３は、記憶装置ＭＥＭ２に保持された冗長データを記憶装置ＭＥＭ７にコピーする。
【００４９】
次に、管理装置ＣＮＴＬは、故障した記憶装置ＭＥＭ１のＣＰＵ１に対する割り当てを記憶装置ＭＥＭ７に変更する。これにより、キャプチャサーバとして動作するＣＰＵ１は、これ以降に記憶装置ＭＥＭ２にデータを書き込む場合、記憶装置ＭＥＭ１ではなく記憶装置ＭＥＭ７にも冗長データを書き込む。
【００５０】
管理装置ＣＮＴＬは、記憶装置ＭＥＭ２から記憶装置ＭＥＭ７への冗長データのコピー後、接続装置ＳＷを制御して、ＣＰＵ３から記憶装置ＭＥＭ２、ＭＥＭ７を切り離す。
【００５１】
このように、管理装置ＣＮＴＬは、データを書き込むＣＰＵ１の動作とは関係なく、記憶装置ＭＥＭ１の故障を検出し、故障した記憶装置ＭＥＭ１とペアの記憶装置ＭＥＭ２から他の記憶装置ＭＥＭ７に冗長データをコピーできる。すなわち、管理装置ＣＮＴＬは、ＣＰＵ１によるデータの記憶装置ＭＥＭへの書き込み動作と独立して、データを保持する他の記憶装置ＭＥＭのエラー検出とエラー訂正ができる。
【００５２】
一方、管理装置ＣＮＴＬは、検査結果が修復可能なエラーを示す場合に、接続装置ＳＷを制御して、ＣＰＵ３に記憶装置ＭＥＭ１、ＭＥＭ２を接続する。そして、管理装置ＣＮＴＬは、記憶装置ＭＥＭ２に保持されたデータを、エラーが発生した記憶装置ＭＥＭ１にコピーすることをＣＰＵ３に指示する。ＣＰＵ３は、記憶装置ＭＥＭ２に保持されたデータを、エラーが発生した記憶装置ＭＥＭ１にコピーし、記憶装置ＭＥＭ１に発生したデータのエラーを修復する。管理装置ＣＮＴＬは、記憶装置ＭＥＭ１のエラーを修復後、接続装置ＳＷを制御して、ＣＰＵ３から記憶装置ＭＥＭ１、ＭＥＭ２を切り離す。
【００５３】
このように、管理装置ＣＮＴＬは、データを書き込むＣＰＵ１の動作とは関係なく、記憶装置ＭＥＭ１のエラーを検出し、記憶装置ＭＥＭ１とペアの記憶装置ＭＥＭ２から記憶装置ＭＥＭ１にデータをコピーすることでエラーを訂正できる。換言すれば、キャプチャサーバとして動作するＣＰＵ１は、検査を実行するＣＰＵ３とは独立に動作するため、データを記憶装置ＭＥＭに安定して書き込みできる。
【００５４】
図４（Ｃ）は、記憶装置ＭＥＭ１の修復可能なエラーが修復された後の状態を示す。管理装置ＣＮＴＬは、記憶装置ＭＥＭ１の検査の完了後、次に検査する記憶装置ＭＥＭ２をＣＰＵ３に接続する。そして、管理装置ＣＮＴＬは、ＣＰＵ３に、記憶装置ＭＥＭ２の検査を指示する。このように、管理装置ＣＮＴＬは、ＣＰＵ３に接続する記憶装置ＭＥＭを順に切り替えて検査を実行する。
【００５５】
なお、図４（Ｃ）では、ＣＰＵ１によるキャプチャ動作の実行中で、ＣＰＵ３による検査動作の実行中に、管理装置ＣＮＴＬは、検索要求を受け、ＣＰＵ２により検索動作を実行する例を示す。この例では、管理装置ＣＮＴＬは、記憶部ＴＢＬを参照することで、検索対象のデータが記憶装置ペア（ＭＥＭ１、ＭＥＭ２）に含まれることを検出する。そして、管理装置ＣＮＴＬは、記憶装置ペア（ＭＥＭ１、ＭＥＭ２）のうち、検査が実行されない記憶装置ＭＥＭ１を用いて検索動作を実行する。
【００５６】
このように、記憶装置ＭＥＭが順次に検査される場合にも、キャプチャサーバとして動作するＣＰＵ１は、検査動作を実行しないため、キャプチャ動作を集中して実行できる。このため、図３と同様に、検査動作が実行される場合にも、ＣＰＵ１は、音声データのようにスループットの高いデータを記憶装置ＭＥＭ１−ＭＥＭ３に安定して書き込みできる。さらに、図４（Ｃ）に示したように、検査動作、検索動作およびキャプチャ動作が重複して実行される場合にも、ＣＰＵ１は、データを記憶装置ＭＥＭ５、ＭＥＭ６に安定して書き込みできる。
【００５７】
以上、図１から図４に示した実施形態では、キャプチャされたデータをＣＰＵ１に順次に接続される記憶装置ＭＥＭに書き込むことで、他の記憶装置ＭＥＭによるデータの書き込みの干渉を抑制でき、データの書き込み性能を維持できる。キャプチャ動作と、検索動作および検査動作の少なくともいずれかが重複して実行される場合にも、ＣＰＵ１は、検索動作および検査動作の影響を受けることなく、キャプチャされたデータを記憶装置ＭＥＭに安定して書き込みできる。
【００５８】
図５は、情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の別の実施形態を示す。
【００５９】
この実施形態の情報処理システムＳＹＳは、マザーボードプール１００、ストレージドライブプール２００、接続装置３００および管理装置４００を有する。マザーボードプール１００は、複数のマザーボードＭＢ（ＭＢ１、ＭＢ２、ＭＢ３、ＭＢ４、...、ＭＢ７、ＭＢ８）を有する。各マザーボードＭＢは、ＣＰＵおよびメモリモジュール等の記憶装置ＭＤ（主記憶）を有する。図５では、マザーボードＭＢ１を除いて、ＣＰＵおよび記憶装置ＭＤの記載は省略するが、マザーボードＭＢ２−ＭＢ８は、マザーボードＭＢ１と同一または同様の構成を有する。なお、情報処理システムＳＹＳは、ＣＰＵの代わりに、プログラムを実行することで動作するＤＳＰやＧＰＵ等のプロセッサを有してもよい。
【００６０】
各マザーボードＭＢに搭載されるＣＰＵの数は複数でもよく、ＣＰＵに搭載されるプロセッサコアの数は複数でもよい。例えば、記憶装置ＭＤは、ＤＲＡＭチップを含むＤＩＭＭである。マザーボードＭＢは、ネットワークＮＷに接続される。マザーボードＭＢは、情報処理装置の一例である。この例では、マザーボードプール１００は、８個のマザーボードＭＢ１−ＭＢ８を有するが、マザーボードＭＢの数は８個に限定されない。
【００６１】
図５は、図９に示すデータのキャプチャ動作を実現するシステムの構成を示しており、マザーボードＭＢ１、ＭＢ２の入力ポートは、スイッチ装置５００のミラーポートＭＰにそれぞれ接続される。なお、マザーボードＭＢ１、ＭＢ２の入力ポートは、中継器の一種であるスイッチを介してスイッチ装置５００のミラーポートＭＰに接続されてもよい。
【００６２】
例えば、スイッチ装置５００は、データセンタ等に設けられ、通信回線上を伝送されるデータをモニタする被キャプチャスイッチとして機能する。キャプチャ対象のデータは、例えば、携帯電話で通話中の音声データである。そして、この実施形態の情報処理システムＳＹＳは、スイッチ装置５００から供給される音声データをリアルタイムでキャプチャするキャプチャ装置として動作する。
【００６３】
また、情報処理システムＳＹＳは、例えば、通信回線等で通信障害が発生した場合に、通信障害が発生した日時の音声データを検索する検索装置として動作する。データセンタのコンピュータ装置は、検索された音声データに含まれる雑音等を解析することで、通信障害の原因を調べる。さらに、情報処理システムＳＹＳは、ストレージドライブプール２００に保持されたデータにエラーが発止した場合、エラーを訂正するエラー訂正装置として動作する。
【００６４】
ストレージドライブプール２００は、複数のハードディスクドライブＨＤＤ（ＨＤＤ１、ＨＤＤ２、...、ＨＤＤ３１、ＨＤＤ３２）を有する。ハードディスクドライブＨＤＤは、記憶装置の一例である。この例では、ストレージドライブプール２００は、３２個のハードディスクドライブＨＤＤ１−ＨＤＤ３２を有するが、ハードディスクドライブＨＤＤの数は、３２個に限定されない。以下の説明では、ハードディスクドライブＨＤＤは、ＨＤＤとも称される。なお、ストレージドライブプール２００は、記憶装置として、ハードディスクドライブＨＤＤの代わりに、複数のフラッシュメモリチップを含むフラッシュストレージ（ＳＳＤ；Solid State Drive）やＤＩＭＭを有してもよい。
【００６５】
接続装置３００は、マザーボードＭＢのいずれかをＨＤＤの少なくともいずれかに接続するインターコネクト装置である。接続装置３００の例は、図６に示す。接続装置３００を介して互いに接続されたマザーボードＭＢおよびＨＤＤ間のデータ転送速度は、例えば、ＨＤＤ１台当たり６Ｇｂｐｓ（Gigabit per second)である。すなわち、マザーボードＭＢに接続されたＨＤＤは、サーバのローカルディスクと同様のアクセス性能を有し、接続装置３００を介して互いに接続されたマザーボードＭＢおよびＨＤＤは、サーバ等の情報処理装置として動作可能である。
【００６６】
ＨＤＤに接続されないマザーボードＭＢは、情報処理システムＳＹＳの動作に寄与しない未使用のマザーボードＭＢであり、マザーボードＭＢに接続されないＨＤＤは、情報処理システムＳＹＳの動作に寄与しない未使用のＨＤＤである。なお、未使用のマザーボードＭＢおよび未使用のＨＤＤに供給される電源は、管理装置４００の制御に基づいて遮断されてもよい。
【００６７】
図５では、マザーボードＭＢ１とＨＤＤ１、ＨＤＤ２、ＨＤＤ２９とが互いに接続され、マザーボードＭＢ２とＨＤＤ３、ＨＤＤ４、ＨＤＤ３０とが互いに接続された状態を模式的に示す。そして、ＯＳ（Operating System）およびデータをＨＤＤに書き込むキャプチャプログラムが、ＨＤＤ２９、ＨＤＤ３０にインストールされる。
【００６８】
マザーボードＭＢ１は、プログラムを実行することで、キャプチャされたデータをＨＤＤ１、ＨＤＤ２に書き込み、マザーボードＭＢ２は、プログラムを実行することで、キャプチャされたデータをＨＤＤ３、ＨＤＤ４に書き込む。
【００６９】
データのキャプチャに使用するＨＤＤの台数Ｍは、データをキャプチャする最大速度をＭＳＰとし、ＨＤＤ１台当たりのデータ転送速度をＨＳＰとすると、式（１）で示される。
Ｍ＝ＭＳＰ／ＨＳＰ  …（１）
但し、台数Ｍは、式（１）を切り上げ処理することで求められる。最大速度ＭＳＰは、データをキャプチャする通信のプロトコルに依存する定数である。ＨＤＤのデータ転送速度ＨＳＰは、ＨＤＤの仕様または実測値である。例えば、データセンタがデータをキャプチャする速度は１０Ｇｂｐｓ（毎秒１０ギガビット）であり、ＨＤＤのデータ転送速度は、連続書き込みでは１００ＭＢ／ｓ（毎秒１００メガバイト）である。このとき必要なＨＤＤは１３台である。なお、マザーボードＭＢ１が２台のＨＤＤに冗長にデータを書き込む場合、式（１）で求めた台数Ｍの２倍のＨＤＤがマザーボードＭＢ１に接続される。
【００７０】
管理装置４００は、ネットワークＮＷおよび接続装置３００の管理ポートＣＮＴＰに接続される。管理装置４００は、管理ポートＣＮＴＰを介して接続装置３００を制御することで、マザーボードＭＢとＨＤＤとを接続し、あるいは、マザーボードＭＢとＨＤＤとの接続を解除する。また、管理装置４００は、ＨＤＤに接続されないマザーボードＭＢへの電源の供給を遮断する機能と、マザーボードＭＢに接続されないＨＤＤへの電源の供給を遮断する機能とを有する。すなわち、サーバ等の情報処理装置として機能しないマザーボードＭＢおよびＨＤＤは、電源が遮断され、電力を消費しない。
【００７１】
ネットワークＮＷは、例えば、ＬＡＮ（Local Area Network）である。この実施形態では、マザーボードＭＢ１−ＭＢ８および管理装置４００に加えて、コンソールＣＮＳＬおよび記憶装置ＢＴがネットワークＮＷに接続される。コンソールＣＮＳＬは、オペレータにより操作され、情報処理システムＳＹＳを管理する。例えば、情報処理システムＳＹＳは、コンソールＣＮＳＬに入力される指示に基づいて、データのＨＤＤへの書き込み動作やＨＤＤに保持されたデータの検索動作を実行する。
【００７２】
例えば、記憶装置ＢＴは、ハードディスクドライブＨＤＤであり、マザーボードＭＢのＣＰＵが実行するＯＳおよびソフトウェア（アプリケーションプログラム）を格納する。ＯＳおよびソフトウェアは、コンソールＣＮＳＬに入力される指示に基づいて、所定のＨＤＤにインストールされ、マザーボードＭＢのＣＰＵにより実行可能になる。
【００７３】
図６は、図５に示した接続装置３００の例を示す。接続装置３００は、マザーボードプール１００に接続されたポートＰ（ｉ、ｊ）とストレージドライブプール２００に接続されたポートＰｎを有する。ここで、ｉは整数１−８のいずれかであり、マザーボードＭＢの番号を示す。ｊは整数１−８のいずれかであり、各マザーボードＭＢのポートの番号を示す。すなわち、ポート（ｉ、ｊ）は、マザーボードＭＢｉの８つのポートにそれぞれ接続される。ｎは整数１−３２のいずれかであり、ＨＤＤの番号を示す。なお、以下の説明では、ポートＰ（ｉ、ｊ）は、マザーボードＭＢを示す場合にも使用され、ポートＰｎは、ＨＤＤを示す場合にも使用する。
【００７４】
図７は、図５に示した管理装置４００の例を示す。管理装置４００は、ネットワークインタフェースＮＷＩＦ、ＣＰＵ４、接続インタフェースＣＮＩＦ、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）および記憶装置ＭＤ４（主記憶）を有する。ＣＰＵ４は、ネットワークインタフェースＮＷＩＦを介してネットワークＮＷに接続され、接続インタフェースＣＮＩＦを介して接続装置３００の管理ポートＣＮＴＰに接続される。管理装置４００に搭載されるＣＰＵ４の数は複数でもよく、ＣＰＵ４に搭載されるプロセッサコアの数は複数でもよい。
【００７５】
例えば、ＲＯＭは、管理装置４００の起動時にＣＰＵ４が実行するブートプログラムを記憶する。例えば、ＲＡＭは、管理装置４００の起動後にＣＰＵ４が実行するプログラムを記憶する。
【００７６】
例えば、記憶装置ＭＤ４は、ＤＲＡＭチップを含むＤＩＭＭであり、管理装置４００は、マザーボードＭＢと同様の構成を有する。このため、例えば、マザーボードプール１００内のマザーボートＭＢの１つが、管理装置４００として使用されてもよい。
【００７７】
管理装置４００のＣＰＵ４は、記憶装置ＭＤ４の記憶領域に割り当てられた８つのテーブルＴＢＬ（ＭＢＴＢＬ、ＨＤＤＴＢＬ、ＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬ、ＩＮＤＴＢＬ、ＣＨＫＴＢＬ、ＦＡＩＬＴＢＬ）を管理する。ＣＰＵ４は、８つのテーブルＴＢＬに保持された情報に基づいて、接続装置３００によるマザーボードＭＢとＨＤＤとの接続を管理し、検索動作を実行し、ＨＤＤのエラーを管理する。テーブルＭＢＴＢＬ、ＨＤＤＴＢＬ、ＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬ、ＩＮＤＴＢＬ、ＣＨＫＴＢＬ、ＦＡＩＬＴＢＬの例は、図８に示す。
【００７８】
なお、情報処理システムＳＹＳが、ＨＤＤのエラーを管理しない場合、記憶装置ＭＤ４は、テーブルＣＨＫＴＢＬ、ＦＡＩＬＴＢＬが割り当てられた記憶領域を持たない。
【００７９】
記憶装置ＭＤ４は、８つのテーブルＴＢＬに加えて、ＣＰＵ４が実行するオペレーティングシステムＯＳ４および制御プログラムＰＧＭ４を格納する領域を有する。ＣＰＵ４は、ブートプログラムの実行により記憶装置ＭＤ４からＲＡＭにオペレーティングシステムＯＳ４および制御プログラムＰＧＭ４を転送する。そして、ＣＰＵ４は、ＲＡＭ上のオペレーティングシステムＯＳ４および制御プログラムＰＧＭ４を実行することで、管理装置４００の機能を実現する。
【００８０】
図８は、図７に示した記憶装置ＭＤ４内に割り当てられるテーブルＭＢＴＢＬ、ＨＤＤＴＢＬ、ＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬ、ＩＮＤＴＢＬ、ＣＨＫＴＢＬ、ＦＡＩＬＴＢＬの例を示す。テーブルＭＢＴＢＬ、ＣＮＴＢＬの”ＭＢＰＮｏ”の領域には、接続装置３００におけるマザーボードＭＢ側のポート番号が格納される。テーブルＨＤＤＴＢＬ、ＣＮＴＢＬの”ＨＤＤＰＮｏ”の領域には、接続装置３００におけるＨＤＤ側のポート番号が格納される。テーブルＭＳＴＢＬの”ＭＢＮｏ”の領域には、マザーボードＭＢの番号が格納される。テーブルＩＮＤＴＢＬ、ＨＳＴＢＬ、ＣＨＫＴＢＬ、ＦＡＩＬＴＢＬの”ＨＤＤＮｏ”の領域には、ＨＤＤの番号が格納される。”ｎｕｌｌ”は、その領域に情報が存在せず、空白であることを示す。
【００８１】
なお、図８は、管理装置４００の起動後に、テーブルＭＢＴＢＬ、ＨＤＤＴＢＬが設定された状態を示す。このため、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬは、初期状態である。
【００８２】
テーブルＭＢＴＢＬは、図６に示したマザーボードＭＢのポートと接続装置３００との接続関係を保持する。テーブルＨＤＤＴＢＬは、図６に示したＨＤＤと接続装置３００との接続関係を保持する。テーブルＭＢＴＢＬ、ＨＤＤＴＢＬの情報は、情報処理システムＳＹＳハードウェア構成により決まり、情報処理システムＳＹＳの起動時に設定ファイルから読み込んで記憶装置ＭＤ４に格納される。設定ファイルは、ＲＯＭに記憶されてもよく、管理装置４００の外部から転送されてもよい。
【００８３】
テーブルＣＮＴＢＬは、接続装置３００によるマザーボードＭＢとＨＤＤとの接続仕様の情報が格納される。すなわち、接続装置３００を介して接続されるマザーボードＭＢとＨＤＤとの接続関係は、テーブルＣＮＴＢＬにより示される。テーブルＭＳＴＢＬは、マザーボードＭＢの使用状態を示す。テーブルＩＮＤＴＢＬには、データをキャプチャした時間を示すタイムスタンプ（開始時刻および終了時刻）の索引の情報がＨＤＤ毎に格納される。テーブルＩＮＤＴＢＬは、データが生成された時刻を示す時刻情報を、データが書き込まれたＨＤＤ毎に記憶する記憶部の一例である。データが生成された時刻は、データがキャプチャされた時刻であり、日時の情報を含む。
【００８４】
テーブルＨＳＴＢＬは、ＨＤＤの使用状態を示す。なお、この実施形態では、テーブルＨＳＴＢＬに示されるように、２４台のＨＤＤ１−ＨＤＤ２４はデータのキャプチャ用に使用され、４台のＨＤＤ２５−ＨＤＤ２８はスペア用に使用され、４台のＨＤＤ２９−ＨＤＤ３２は起動用に使用される。
【００８５】
テーブルＣＨＫＴＢＬには、ＨＤＤを検査した時刻を示す情報が格納される。テーブルＦＡＩＬＴＢＬには、故障したＨＤＤの情報またはエラーが発生したＨＤＤの記憶領域の情報が格納される。テーブルＦＡＩＬＴＢＬの”種別”の領域には、ＨＤＤが故障したことを示す情報またはＨＤＤに修復可能なエラーが発生したことを示す情報が格納される。テーブルＦＡＩＬＴＢＬの”アドレス”の領域には、修復可能なエラーが発生した領域のアドレスを示す情報が格納される。
【００８６】
図９は、図５に示した情報処理システムＳＹＳが実行するキャプチャ動作のシーケンスの例を示す。すなわち、図９は、キャプチャ装置として動作する情報処理システムＳＹＳのシーケンスの例を示す。以下の説明では、管理装置４００の動作は、管理装置４００のＣＰＵ４による動作を含み、マザーボードＭＢの動作は、マザーボードＭＢのＣＰＵによる動作を含む。
【００８７】
この実施形態では、図５に示したように、マザーボードＭＢ１、ＭＢ２の各々がキャプチャ装置として動作し、スイッチ装置４００のミラーポートＭＰから供給される音声データをＨＤＤに格納する。しかしながら、図が複雑になることを避けるため、マザーボードＭＢ２に関するシーケンスは省略し、マザーボードＭＢ２に接続されるＨＤＤ３０、ＨＤＤ３、ＨＤＤ４、ＨＤＤ７、ＨＤＤ８の動作を破線の矩形枠で示す。また、マザーボードＭＢ１は、キャプチャされたデータをＨＤＤ１、ＨＤＤ２に分散して書き込み、マザーボードＭＢ２は、キャプチャされたデータをＨＤＤ３、ＨＤＤ４に分散して書き込む。
【００８８】
マザーボードＭＢ２によるキャプチャ動作のシーケンスは、マザーボードＭＢ１によるキャプチャ動作のシーケンスと同様である。マザーボードＭＢ２によるキャプチャ動作のシーケンスは、図９のＭＢ１、ＨＤＤ２９、ＨＤＤ１、ＨＤＤ２、ＨＤＤ５、ＨＤＤ６を、ＭＢ２、ＨＤＤ３０、ＨＤＤ３、ＨＤＤ４、ＨＤＤ７、ＨＤＤ８と読み替えればよい。
【００８９】
管理装置４００により実行される管理プロセスは、図９のシーケンスが開始される前に開始される。管理プロセスは、図７に示した制御プログラムＰＧＭ４により実行される。図９のシーケンスの開始時に、全てのマザーボードＭＢとＨＤＤとの接続は解除される。すなわち、図８に示したように、テーブルＣＮＴＢＬの全ての領域は、”ｎｕｌｌ”であり、テーブルＭＳＴＢＬ、ＨＳＴＢＬの状態は”未使用”である。管理プロセスが起動するキャプチャ開始スレッドおよび切り替えスレッドを実行する制御プログラムは、図７に示した記憶装置ＭＤ４およびＲＡＭに予め格納される。
【００９０】
管理装置４００は、コンソールＣＮＳＬからのキャプチャ開始の指示に基づいて、キャプチャ開始スレッドを実行する（図９（ａ））。例えば、キャプチャ開始スレッドは、マザーボードＭＢ１とＨＤＤ２９とを接続する制御情報を接続装置３００に出力する。接続装置３００は、制御情報に基づいてマザーボードＭＢ１とＨＤＤ２９とを接続する。キャプチャ開始スレッドは、マザーボードＭＢ１とＨＤＤ２９とが互いに接続された後、マザーボードＭＢ１を介してＨＤＤ２９にＯＳおよびキャプチャプログラムＣＰをインストールする。例えば、インストールは、キックスタートなどのリモートインストール手法により、図５に示した記憶装置ＢＴからデータを転送することにより実行される。
【００９１】
ＨＤＤ２９へのＯＳおよびキャプチャプログラムＣＰのインストール後、マザーボードＭＢ１は再起動される。マザーボードＭＢ１のＣＰＵは、ＯＳの実行を開始し、ＨＤＤ２９のアクセスを開始する。また、マザーボードＭＢ１は、インストールが完了したことを示す完了応答を管理装置４００に送信する。
【００９２】
キャプチャ開始スレッドは、インストールの完了応答の受信に基づいて、マザーボードＭＢ１にキャプチャプロセスを起動する指示を出力する。マザーボードＭＢ１は、キャプチャプロセスを起動する指示に基づいて、キャプチャプログラムＣＰにより実行されるキャプチャプロセスを開始する（図９（ｂ））。キャプチャプロセスは、割り当て要求スレッドを起動し、キャプチャしたデータを格納するＨＤＤの割り当て要求を管理装置４００に出力する（図９（ｃ））。
【００９３】
管理プロセスは、割り当て要求に基づいて、切り替えスレッドを起動し、マザーボードＭＢ１とＨＤＤ１、ＨＤＤ２とを接続する制御情報を接続装置３００に出力する（図９（ｄ））。接続装置３００は、制御情報に基づいてマザーボードＭＢ１とＨＤＤ１、ＨＤＤ２とを接続する。キャプチャプロセスは、マザーボードＭＢ１とＨＤＤ１、ＨＤＤ２とが互いに接続された後、キャプチャ動作を開始し、音声データをＨＤＤ１、ＨＤＤ２に分散して書き込む。
【００９４】
キャプチャプロセスは、各ＨＤＤ１、ＨＤＤ２に所定量のデータが格納されたことに基づいて、割り当て要求スレッドを起動し、キャプチャしたデータを書き込む未使用のＨＤＤの割り当て要求を管理装置４００に出力する（図９（ｅ））。
【００９５】
管理プロセスは、割り当て要求に基づいて、切り替えスレッドを起動し、マザーボードＭＢ１とＨＤＤ５、ＨＤＤ６とを接続する制御情報を接続装置３００に出力する（図９（ｆ））。接続装置３００は、制御情報に基づいてマザーボードＭＢ１とＨＤＤ５、ＨＤＤ６とを接続する。キャプチャプロセスは、マザーボードＭＢ１とＨＤＤ５、ＨＤＤ６とが互いに接続された後、キャプチャ動作を開始し、音声データをＨＤＤ５、ＨＤＤ６に分散して書き込む。すなわち、マザーボードＭＢ１は、ＨＤＤ１、ＨＤＤ２に書き込む音声データを、ＨＤＤ５、ＨＤＤ６にも重複して書き込む。
【００９６】
キャプチャプロセスは、ＨＤＤ５、ＨＤＤ６へのデータの書き込みが開始された後、ＨＤＤ１、ＨＤＤ２へのデータの書き込みを終了する。キャプチャプロセスは、ＨＤＤ１、ＨＤＤ２へのデータの書き込みを終了した後、開放要求スレッドを起動し、ＨＤＤ１、ＨＤＤ２をマザーボードＭＢ１から切り離す開放要求を管理装置４００に出力する（図９（ｇ））。
【００９７】
管理プロセスは、開放要求に基づいて、切り替えスレッドを起動し、マザーボードＭＢ１とＨＤＤ１、ＨＤＤ２との接続を解除する制御情報を接続装置３００に出力する（図９（ｈ））。接続装置３００は、制御情報に基づいてマザーボードＭＢ１とＨＤＤ１、ＨＤＤ２との接続を解除する。この後、キャプチャプロセスは、データをＨＤＤ５、ＨＤＤ６に書き込み、各ＨＤＤ５、ＨＤＤ６に所定量のデータが格納されたことに基づいて、割り当て要求スレッドを起動する。管理プロセスは、割り当て要求に基づいて、未使用の２台のＨＤＤをマザーボードＭＢ１に接続し、開放要求に基づいて、ＨＤＤ５、ＨＤＤ６をマザーボードＭＢ１から切り離す。以降、同様の動作が実行され、複数組のＨＤＤにデータが順次に書き込まれる。
【００９８】
なお、割り当て要求に基づいてマザーボードＭＢ１に接続する未使用のＨＤＤがない場合、切り替えスレッドは、他のＨＤＤに比べて古いデータを保持したＨＤＤをマザーボードＭＢ１に接続する制御を実行する。
【００９９】
図１０は、図９（ａ）に示したキャプチャ開始スレッドにより起動用のＨＤＤがマザーボードＭＢに接続された後のテーブルＴＢＬの状態の例を示す。換言すれば、図１０は、キャプチャ開始スレッドがキャプチャプロセスを起動する前の状態を示す。図１０において、網掛けで示した領域は、図８に対して変化した箇所を示す。なお、図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬ、ＣＨＫＴＢＬ、ＦＡＩＬＴＢＬは、状態が変化しないため、記載は省略する。
【０１００】
テーブルＣＮＴＢＬは、ポートＰ（１、８）に対応するマザーボードＭＢ１にポートＰ２９に対応するＨＤＤ２９が接続され、ポートＰ（２、８）に対応するマザーボードＭＢ２にポートＰ３０に対応するＨＤＤ３０が接続されたことを示す。テーブルＭＳＴＢＬは、マザーボードＭＢ１、ＭＢ２がデータのキャプチャ動作を実行することを示す。テーブルＨＳＴＢＬは、ＨＤＤ２９、ＨＤＤ３０がＯＳおよびキャプチャプログラムＣＰのインストールおよび起動に使用されることを示す。
【０１０１】
テーブルＭＳＴＢＬにおいて、”未使用”状態のマザーボードＭＢ３、ＭＢ４は、電源が遮断され、電力を消費しない。テーブルＨＳＴＢＬにおいて、”未使用”状態のＨＤＤは、電源が遮断され、電力を消費しない。動作させないマザーボードＭＢおよびＨＤＤへの電源の供給を遮断することで、電源を供給する場合に比べて情報処理システムＳＹＳの消費電力を削減できる。
【０１０２】
図１１は、図９（ｂ）に示したキャプチャプロセスが、ＨＤＤ１−ＨＤＤ４にデータの書き込みを開始した後のテーブルＴＢＬの状態の例を示す。図１１において、網掛けで示した領域は、図１０に対して変化した箇所を示す。
【０１０３】
図１１に示した状態では、マザーボードＭＢ１によるＨＤＤ１、ＨＤＤ２へのデータの書き込みと、マザーボードＭＢ２によるＨＤＤ３、ＨＤＤ４へのデータの書き込みが分散して実行される。このため、テーブルＣＮＴＢＬでは、図１０の状態に加えて、マザーボードＭＢ１およびＨＤＤ１、ＨＤＤ２の接続を示す情報と、マザーボードＭＢ２およびＨＤＤ３、ＨＤＤ４の接続を示す情報とが格納される。
【０１０４】
テーブルＨＳＴＢＬでは、ＨＤＤ１、ＨＤＤ２、ＨＤＤ３、ＨＤＤ４の状態が”キャプチャ中”に設定される。テーブルＩＮＤＴＢＬでは、ＨＤＤ１−ＨＤＤ４に対応する開始時刻の領域に日時ｔ１、ｔ２、ｔ３、ｔ４を示す情報がそれぞれ格納され、ＨＤＤ１−ＨＤＤ４に対応する終了時刻の領域に”キャプチャ中”を示す情報が格納される。日時ｔ１−ｔ４は、キャプチャされたデータの各ＨＤＤへの書き込みが開始された日時であり、各ＨＤＤに書き込まれるデータがキャプチャされた日時を示す。
【０１０５】
図１２は、図９（ｅ）に示した割り当て要求スレッドの処理後に、キャプチャプロセスがＨＤＤ１−ＨＤＤ４に並行してＨＤＤ５−ＨＤＤ８へのデータの書き込みを開始した後のテーブルＴＢＬの状態の例を示す。図１２において、網掛けで示した領域は、図１１に対して変化した箇所を示す。
【０１０６】
テーブルＣＮＴＢＬでは、図１１の状態に加えて、マザーボードＭＢ１とＨＤＤ５、ＨＤＤ６との接続を示す情報と、マザーボードＭＢ２とＨＤＤ７、ＨＤＤ８との接続を示す情報とが格納される。テーブルＭＳＴＢＬは、図１１と同様である。テーブルＨＳＴＢＬでは、ＨＤＤ１−ＨＤＤ４の状態に加えて、ＨＤＤ５−ＨＤＤ８の状態が”キャプチャ中”に設定される。テーブルＩＮＤＴＢＬでは、ＨＤＤ５−ＨＤＤ８に対応する開始時刻の領域に日時ｔ５、ｔ６、ｔ７、ｔ８を示す情報がそれぞれ格納される。日時ｔ５−ｔ８は、日時ｔ１−ｔ４と同様に、キャプチャされたデータの各ＨＤＤへの書き込みが開始された日時であり、各ＨＤＤに書き込まれるデータがキャプチャされた日時を示す。
【０１０７】
図１３は、図９（ｇ）に示した開放要求スレッドにより、マザーボードＭＢ１、ＭＢ２からＨＤＤ１−ＨＤＤ４が切り離された後のテーブルＴＢＬの状態の例を示す。図１３において、網掛けで示した領域は、図１２に対して変化した箇所を示す。
【０１０８】
テーブルＣＮＴＢＬでは、図１２に比べて、マザーボードＭＢ１とＨＤＤ１、ＨＤＤ２との接続を示す情報およびマザーボードＭＢ２とＨＤＤ３、ＨＤＤ４との接続を示す情報が削除される。テーブルＭＳＴＢＬは、図１１と同様である。
【０１０９】
テーブルＨＳＴＢＬでは、ＨＤＤ５、ＨＤＤ６、ＨＤＤ７、ＨＤＤ８の状態が”キャプチャ中”に設定されたまま、ＨＤＤ１、ＨＤＤ２、ＨＤＤ３、ＨＤＤ４が”待機中”に設定される。ここで、”待機中”は、ＨＤＤ１、ＨＤＤ２、ＨＤＤ３、ＨＤＤ４が有効なキャプチャデータを保持中であることを示す。
【０１１０】
テーブルＨＳＴＢＬにおいて、”未使用”状態のＨＤＤおよび”待機中”状態のＨＤＤは、電源が遮断され、電力を消費しない。データのキャプチャ後に、データを保持するＨＤＤの電源を遮断することで、データを保持するＨＤＤに電源を供給する場合に比べて情報処理システムＳＹＳの消費電力を削減できる。
【０１１１】
テーブルＩＮＤＴＢＬでは、ＨＤＤ１−ＨＤＤ４に対応する終了時刻の領域に日時ｔ１’、ｔ２’、ｔ３’、ｔ４’を示す情報が格納される。日時ｔ１’−ｔ４’は、各ＨＤＤに最後に書き込まれたデータの書き込み日時であり、各ＨＤＤに最後に書き込まれたデータがキャプチャされた日時を示す。
【０１１２】
図１４は、キャプチャ用の全てのＨＤＤ１−ＨＤＤ２４にデータが保持された場合のテーブルＴＢＬの状態の例を示す。図１４において、網掛けで示した領域は、図１３に対して変化した箇所を示す。
【０１１３】
テーブルＣＮＴＢＬでは、図１３に比べて、マザーボードＭＢ１とＨＤＤ５、ＨＤＤ６との接続を示す情報が削除され、マザーボードＭＢ１とＨＤＤ２１、ＨＤＤ２２との接続を示す情報が格納される。また、テーブルＣＮＴＢＬでは、図１３に比べて、マザーボードＭＢ２とＨＤＤ７、ＨＤＤ８との接続を示す情報が削除され、マザーボードＭＢ２とＨＤＤ２３、ＨＤＤ２４との接続を示す情報が格納される。
【０１１４】
テーブルＭＳＴＢＬは、図１１と同様である。テーブルＨＳＴＢＬでは、有効なキャプチャデータを保持中のＨＤＤ１−ＨＤＤ２０の状態は、”待機中”に設定され、キャプチャ動作中のＨＤＤ２１−ＨＤＤ２４の状態は、”キャプチャ中”に設定される。
【０１１５】
テーブルＩＮＤＴＢＬでは、ＨＤＤ１−ＨＤＤ２０に対応する開始時刻の領域に日時ｔ１−ｔ２０を示す情報が格納され、ＨＤＤ１−ＨＤＤ２０に対応する終了時刻の領域に日時ｔ１’−ｔ２０’を示す情報が格納される。なお、便宜上、開始時刻および終了時刻の数値は、ＨＤＤの番号とする。また、ＨＤＤ２２−ＨＤＤ２４に対応する開始時刻の領域に日時ｔ２１、ｔ２２、ｔ２３、ｔ２４が格納され、ＨＤＤ２２−ＨＤＤ２４に対応する終了時刻の領域に”キャプチャ中”を示す情報が格納される。
【０１１６】
日時ｔ９−ｔ２４は、日時ｔ１−ｔ４と同様に、キャプチャされたデータの各ＨＤＤへの書き込みが開始された日時である。日時ｔ５’−ｔ２０’は、日時ｔ１’−ｔ４’と同様に、各ＨＤＤに最後に書き込まれたデータの書き込み日時である。
【０１１７】
図１５は、データが保持されたＨＤＤにデータを上書きする場合のテーブルＴＢＬの状態の例を示す。図１５において、網掛けで示した領域は、図１４に対して変化した箇所を示す。
【０１１８】
データのＨＤＤ２１−ＨＤＤ２４への書き込みが開始されると、キャプチャ用のＨＤＤで状態が”未使用”のＨＤＤは無くなる。このため、所定量のデータがＨＤＤ２１−ＨＤＤ２４に書き込まれた場合、データは、待機中のＨＤＤのうち最も古いデータを保持するＨＤＤ１−ＨＤＤ４に上書きされる。
【０１１９】
テーブルＣＮＴＢＬ、ＭＳＴＢＬは、図１１と同様である。テーブルＨＳＴＢＬでは、有効なキャプチャデータを保持中のＨＤＤ５−ＨＤＤ２４に対応する領域は、”待機中”に設定され、ＨＤＤ１−ＨＤＤ４に対応する領域は、”キャプチャ中”に設定される。
【０１２０】
テーブルＩＮＤＴＢＬでは、ＨＤＤ１−ＨＤＤ４に対応する開始時刻の領域に新たな日時ｔ２５、ｔ２６、ｔ２７、ｔ２８を示す情報がそれぞれ格納され、ＨＤＤ１−ＨＤＤ４に対応する終了時刻の領域に”キャプチャ中”を示す情報が格納される。また、テーブルＩＮＤＴＢＬでは、ＨＤＤ２１−ＨＤＤ２４に対応する終了時刻の領域に日時ｔ２１’、ｔ２２’、ｔ２３’、ｔ２４を示す情報がそれぞれ格納される。日時ｔ２５−ｔ２８は、日時ｔ１−ｔ４と同様に、キャプチャされたデータの各ＨＤＤへの書き込みが開始された日時である。日時ｔ２１’−ｔ２４’は、日時ｔ１’−ｔ４’と同様に、各ＨＤＤに最後に書き込まれたデータの書き込み日時である。
【０１２１】
図１６は、図９に示した管理プロセスの例を示す。管理プロセスは、図７に示した管理装置４００のＣＰＵ４が制御プログラムＰＧＭ４を実行することで実現され、管理装置４００の起動後に自動的に起動される。
【０１２２】
ステップＳ１０において、管理装置４００は、図７に示したＲＯＭや管理装置４００の外部の記憶装置に格納された設定ファイルを読み込み、読み込んだ設定ファイルの情報を、記憶装置ＭＤ４内のテーブルＭＢＴＢＬ、ＨＤＤＴＢＬに格納する。
【０１２３】
次に、ステップＳ１２において、制御プログラムＰＧＭ４は、テーブルＭＢＴＢＬ、ＨＤＤＴＢＬに格納された情報に基づいて、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬ、ＩＮＤＴＢＬを初期化する。初期化により、テーブルＣＮＴＢＬ、ＩＮＤＴＢＬでは、全ての領域が”ｎｕｌｌ”に設定される。初期化により、テーブルＭＳＴＢＬでは、マザーボードＭＢの状態を示す領域が”未使用”に設定され、テーブルＨＳＴＢＬでは、ＨＤＤの状態を示す領域が未使用に設定される。ステップＳ１２の実行後のテーブルＴＢＬの状態は、図８に示される。
【０１２４】
次に、ステップＳ４００において、制御プログラムＰＧＭ４は、検査スレッドを起動する。検査スレッドの例は、図４１に示す。検査スレッドの実行により、ＨＤＤの故障が検出され、あるいは、ＨＤＤに保持されたデータのエラーが検出され、修復される。なお、情報処理システムＳＹＳが、ＨＤＤの故障やエラーの検出、修復機能を持たない場合、ステップＳ４００は実行されない。
【０１２５】
次に、ステップＳ１６において、制御プログラムＰＧＭ４は、マザーボードＭＢまたはコンソールＣＮＳＬからコマンドの受信を待つ。制御プログラムＰＧＭ４は、コマンドを受信した場合、処理をステップＳ１８に移行し、コマンドの受信がない場合、ステップＳ１６を繰り返し実行する。
【０１２６】
ステップＳ１８において、制御プログラムＰＧＭ４は、マザーボードＭＢのいずれかからＨＤＤの割り当て要求を受信したか否かを判定する。制御プログラムＰＧＭ４は、割り当て要求を受信した場合、処理をステップＳ１００に移行し、割り当て要求を受信しない場合、処理をステップＳ２０に移行する。
【０１２７】
ステップＳ２０において、制御プログラムＰＧＭ４は、マザーボードＭＢのいずれかからＨＤＤの開放要求を受信したか否かを判定する。制御プログラムＰＧＭ４は、開放要求を受信した場合、処理をステップＳ１００に移行し、開放要求を受信しない場合、処理をステップＳ２４に移行する。
【０１２８】
ステップＳ１００において、制御プログラムＰＧＭ４は、マザーボードＭＢにＨＤＤを接続し、あるいは、マザーボードＭＢからＨＤＤを切り離す切り替えスレッドを起動する。制御プログラムＰＧＭ４は、切り替えスレッドの起動後、処理をステップＳ２４に移行する。切り替えスレッドの例は、図１８に示す。
【０１２９】
ステップＳ２４において、制御プログラムＰＧＭ４は、コンソールＣＮＳＬからキャプチャの開始要求を受信したか否かを判定する。制御プログラムＰＧＭ４は、キャプチャの開始要求を受信した場合、処理をステップＳ２００に移行し、キャプチャの開始要求を受信しない場合、処理をステップＳ２６に移行する。
【０１３０】
ステップＳ２００において、制御プログラムＰＧＭ４は、データのキャプチャ動作をマザーボードＭＢに実行させるキャプチャ開始スレッドを起動する。制御プログラムＰＧＭ４は、キャプチャ開始スレッドの起動後、処理をステップＳ１６に戻す。キャプチャ開始スレッドの例は、図１７に示す。
【０１３１】
ステップＳ２６において、制御プログラムＰＧＭ４は、コンソールＣＮＳＬから検索要求を受信したか否かを判定する。制御プログラムＰＧＭ４は、検索要求を受信した場合、処理をステップＳ３００に移行し、検索要求を受信しない場合、処理をステップＳ１６に戻す。
【０１３２】
ステップＳ３００において、制御プログラムＰＧＭ４は、ＨＤＤに保持されたデータを検索する検索スレッドを起動する。制御プログラムＰＧＭ４は、検索スレッドの起動後、処理をステップＳ１６に戻す。検索スレッドの例は、図２８および図２９に示す。
【０１３３】
図１７は、図１６のステップＳ２００により起動されるキャプチャ開始スレッドの例を示す。キャプチャ開始スレッドは、コンソールＣＮＳＬからの指示に基づいて、制御プログラムＰＧＭ４のＣＰＵ４が制御プログラムＰＧＭ４を実行することにより実現される。
【０１３４】
まず、ステップＳ２０２において、制御プログラムＰＧＭ４は、コンソールＣＮＳＬから指定された数のマザーボードＭＢを選択したか否かを判定する。指定された数のマザーボードＭＢが選択された場合、処理はステップＳ２１２に移行され、選択したマザーボードＭＢの数が指定された数に満たない場合、処理はステップＳ２０４に移行される。
【０１３５】
ステップＳ２０４において、制御プログラムＰＧＭ４は、テーブルＭＳＴＢＬを参照し、未使用のマザーボードＭＢのいずれかを選択する。次に、ステップＳ２０６において、制御プログラムＰＧＭ４は、テーブルＨＳＴＢＬを参照し、起動用のＨＤＤのうち未使用のＨＤＤを選択する。
【０１３６】
次に、ステップＳ２０８において、制御プログラムＰＧＭ４は、接続装置３００を制御することにより、選択したマザーボードＭＢと選択した起動用のＨＤＤとを互いに接続する。次に、ステップＳ２１０において、制御プログラムＰＧＭ４は、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬを更新する。
【０１３７】
そして、制御プログラムＰＧＭ４は、データのキャプチャ動作を実行する全てのマザーボードＭＢを選択するまで、ステップＳ２０４、Ｓ２０６、Ｓ２０８、Ｓ２１０の処理を繰り返す。例えば、図１０に示したように、更新後のテーブルＣＮＴＢＬは、マザーボードＭＢ１とＨＤＤ２９とが接続され、マザーボードＭＢ２とＨＤＤ３０とが接続された状態に設定される。テーブルＭＳＴＢＬは、マザーボードＭＢ１、ＭＢ２が”キャプチャ状態”に設定され、テーブルＨＳＴＢＬは、ＨＤＤ２９、ＨＤＤ３０が”起動用”に設定される。
【０１３８】
データのキャプチャ動作を実行する全てのマザーボードＭＢが選択された場合、ステップＳ２１２において、制御プログラムＰＧＭ４は、選択したマザーボードＭＢとＨＤＤとの接続装置３００による接続が完了することを待つ。例えば、管理装置は、図５に示した接続装置３００の管理ポートＣＮＴＰを介して、接続装置３００内の情報をモニタすることにより、接続の完了を判定する。
【０１３９】
マザーボードＭＢとＨＤＤとの接続が完了した場合、ステップＳ２１４において、制御プログラムＰＧＭ４は、コンソールＣＮＳＬにより指定された数のマザーボードＭＢの初期化が完了したか否かを判定する。指定された数のマザーボードＭＢの初期化が完了した場合、処理はステップＳ２２２に移行し、初期化が完了していない場合、処理はステップＳ２１６に移行する。
【０１４０】
ステップＳ２１６において、制御プログラムＰＧＭ４は初期化されていないマザーボードＭＢのいずれかを選択する。次に、ステップＳ２１８において、制御プログラムＰＧＭ４は、選択したマザーボードＭＢに接続された起動用のＨＤＤに、選択したマザーボードＭＢを介してＯＳとキャプチャプログラムＣＰをインストールする。インストールは、キックスタートなどのリモートインストール手法を用いて実行される。次に、ステップＳ２２０において、制御プログラムＰＧＭ４は、選択したマザーボードＭＢを再起動する。再起動されたマザーボードＭＢは、ＯＳを実行し、キャプチャプロセスを実行可能な状態になる。
【０１４１】
コンソールＣＮＳＬにより指定された数のマザーボードＭＢの初期化が完了した場合、ステップＳ２２２において、制御プログラムＰＧＭ４は、マザーボードＭＢが再起動されることを待つ。次に、ステップＳ２２４において、制御プログラムＰＧＭ４は、コンソールＣＮＳＬにより指定された数のマザーボードＭＢがキャプチャプロセスの起動を完了したか否かを判定する。指定された数のマザーボードＭＢのキャプチャプロセスの起動が完了した場合、キャプチャ開始スレッドは終了し、キャプチャプロセスの起動が完了していないマザーボードＭＢがある場合、処理はステップＳ２２６に移行する。
【０１４２】
ステップＳ２２６において、制御プログラムＰＧＭ４は、選択したマザーボードＭＢのうち、キャプチャプロセスの起動が完了していないマザーボードＭＢを選択する。次に、ステップＳ５００において、制御プログラムＰＧＭ４は、ステップＳ２２６で選択したマザーボードＭＢのキャプチャプロセスを起動する。例えば、キャプチャプロセスの起動は、リモートシェルにより実行される。
【０１４３】
図１８は、図１６のステップＳ１００により起動される切り替えスレッドの例を示す。切り替えスレッドは、キャプチャプロセスを実行中のマザーボードＭＢからの割り当て要求または開放要求に基づいて、管理装置４００のＣＰＵ４が制御プログラムＰＧＭ４を実行することにより実現される。
【０１４４】
まず、ステップＳ１０２において、制御プログラムＰＧＭ４は、マザーボードＭＢからＨＤＤの割り当て要求またはＨＤＤの開放要求のいずれを受信したかを判定する。割り当て要求を受信した場合、処理はステップＳ１０４に移行し、開放要求を受信した場合、処理はステップＳ１２４に移行する。
【０１４５】
ステップＳ１０４において、制御プログラムＰＧＭ４は、マザーボードＭＢにより指定された新たに割り当てるＨＤＤの数を変数Ｍとして設定する。次に、ステップＳ１０６において、制御プログラムＰＧＭ４は、ステップＳ１０８からステップＳ１２２までの処理がＭ回繰り返されたか否かを判定する。処理がＭ回繰り返された場合、指定された数のＨＤＤの割り当てが完了したため、処理はステップＳ１３６に移行する。
【０１４６】
指定されたＭ個のＨＤＤの割り当てが完了していない場合、ステップＳ１０８において、制御プログラムＰＧＭ４は、テーブルＨＳＴＢＬを参照し、データキャプチャ用のＨＤＤのうち未使用のＨＤＤがあるか否かを判定する。未使用のＨＤＤがある場合、処理はステップＳ１１０に移行し、未使用のＨＤＤがない場合、処理はステップＳ１１４に移行する。
【０１４７】
ステップＳ１１０において、制御プログラムＰＧＭ４は、データキャプチャ用のＨＤＤのうち未使用のＨＤＤを１つ選択する。次に、ステップＳ１１２において、制御プログラムＰＧＭ４は、選択したＨＤＤの番号（ＨＤＤＮｏ）をテーブルＩＮＤＴＢＬに登録する。そして、処理はステップＳ１１６に移行する。
【０１４８】
一方、未使用のＨＤＤがない場合、ステップＳ１１４において、制御プログラムＰＧＭ４は、テーブルＩＮＤＴＢＬを参照し、待機中のＨＤＤの中から終了時刻の最も古いＨＤＤを選択する。そして、処理はステップＳ１１６に移行する。ここで、待機中のＨＤＤは、キャプチャされたデータを保持中である。
【０１４９】
ステップＳ１１６において、制御プログラムＰＧＭ４は、接続装置３００を制御することにより、割り当て要求を発行したマザーボードＭＢに選択したＨＤＤを接続する。次に、ステップＳ１１８において、制御プログラムＰＧＭ４は、テーブルＣＮＴＢＬ、ＨＳＴＢＬを更新する。例えば、キャプチャプロセスの最初にＭ個のＨＤＤが接続された状態のテーブルＣＮＴＢＬ、ＨＳＴＢＬの例は、図１１に示される。キャプチャプロセス中に、既に接続済みのＭ個のＨＤＤに加えて、Ｍ個のＨＤＤが接続された状態のテーブルＣＮＴＢＬ、ＨＳＴＢＬの例は、図１２に示される。なお、図１１-図１５は、変数Ｍが”４”である例を示した。
【０１５０】
次に、ステップＳ１２０において、制御プログラムＰＧＭ４は、ステップＳ１１６で接続したＨＤＤに対応するテーブルＩＮＤＴＢＬの開始時刻の領域に現在時刻を示す情報を書き込む。次に、ステップＳ１２２において、制御プログラムＰＧＭ４は、ステップＳ１１６で接続したＨＤＤに対応するテーブルＩＮＤＴＢＬの終了時刻の領域にキャプチャ中を示す情報を書き込む。この後、処理はステップＳ１０６に戻る。
【０１５１】
一方、開放要求を受信した場合、ステップＳ１２４において、制御プログラムＰＧＭ４は、マザーボードＭＢにより指定された開放するＨＤＤの数を変数Ｍとして設定する。次に、ステップＳ１２６において、制御プログラムＰＧＭ４は、ステップＳ１２８からステップＳ１３４までの処理がＭ回繰り返されたか否かを判定する。処理がＭ回繰り返された場合、指定された数のＨＤＤの接続が解除されたため、処理はステップＳ１３６に移行する。
【０１５２】
指定された数のＨＤＤの接続が解除されていない場合、ステップＳ１２８において、制御プログラムＰＧＭ４は、テーブルＩＮＤＴＢＬを参照し、キャプチャ中のＨＤＤのうち、開始時刻が最も古いＨＤＤの１つを選択する。次に、ステップＳ１３０において、制御プログラムＰＧＭ４は、ステップＳ１２８で選択したＨＤＤと、開放要求を発行したマザーボードＭＢとの接続を遮断する。
【０１５３】
次に、ステップＳ１３２において、制御プログラムＰＧＭ４は、テーブルＣＮＴＢＬ、ＨＳＴＢＬを更新する。例えば、テーブルＣＮＴＢＬにおいて、マザーボードＭＢとＨＤＤとの接続関係を示す情報が削除され、テーブルＨＳＴＢＬにおいて、マザーボードＭＢから切り離されたＨＤＤの状態が”待機中”に設定される。次に、ステップＳ１３４において、制御プログラムＰＧＭ４は、ステップＳ１３０で切り離したＨＤＤに対応するテーブルＩＮＤＴＢＬの終了時刻の領域に現在時刻を書き込む。この後、処理はステップＳ１２６に戻る。
【０１５４】
Ｍ個のＨＤＤのマザーボードＭＢへの接続、またはＭ個のＨＤＤのマザーボードＭＢからの切り離しの実行後、ステップＳ１３６において、制御プログラムＰＧＭ４は、切り替えスレッドを停止する。
【０１５５】
図１９は、図８に示したデータのキャプチャ用の各ＨＤＤ１−ＨＤＤ２４の記憶領域の割り当ての例を示す。キャプチャ用のＨＤＤの記憶領域には、セパレータとタイムスタンプとデータ領域とを有するデータユニットが繰り返し割り当てられる。先頭アドレスの領域には、ＨＤＤへのデータのキャプチャの開始時刻を示すタイムスタンプが格納される。アドレスＡ１の領域には、先頭データの識別子が格納され、アドレスＡ６の領域には、最終データの識別子が格納される。最終データの識別子から末尾アドレスまでは、所定のマージンを有する。
【０１５６】
データ領域は、データの属性を示すメタデータの領域およびキャプチャされたデータを格納する領域を有する。データを格納する領域は不定長であるため、メタデータは、データサイズの情報を含む。このため、セパレータの位置を示すアドレスＡ２、Ａ３、Ａ４、Ａ５は等間隔ではない。例えば、セパレータは、キャプチャデータとして出現しないデータ列を有する。タイムスタンプは、対応するデータがキャプチャされた時刻を示す。
【０１５７】
アドレスＶＴ１は、ＨＤＤにおいて書き込み可能な記憶領域が少なくなったことを示す閾値である。キャプチャしたデータをＨＤＤに書き込むマザーボードＭＢは、書き込みアドレスが閾値ＶＴ１を超えた場合に、ＨＤＤの記憶容量が少なくなったと判断し、キャプチャしたデータを新たに書き込むＨＤＤの接続を管理装置４００に要求する。新たなＨＤＤの接続は、図２１のステップＳ５３０で起動される割り当て要求スレッド（図２２）に基づいて、管理装置４００により実行される。
【０１５８】
アドレスＶＴ２は、ＨＤＤにおいて書き込み可能な記憶領域がなくなったことを示す閾値である。キャプチャしたデータをＨＤＤに書き込むマザーボードＭＢは、書き込みアドレスが閾値ＶＴ２を超えた場合に、最後のデータの後に最終データの識別子を書き込み、ＨＤＤへの書き込みを停止する。また、マザーボードＭＢは、書き込みアドレスが閾値ＶＴ２を超えたＨＤＤの開放を管理装置４００に要求する。ＨＤＤの開放は、図２１のステップＳ５３４で起動される開放要求スレッド（図２３）に基づいて、管理装置４００により実行される。
【０１５９】
なお、マザーボードＭＢは、ＨＤＤの１つが閾値ＶＴ１を超えてから閾値ＶＴ２に到達するまで、割り当て要求スレッドに基づいて新たに接続されたＨＤＤにもデータを重複して書き込む。閾値ＶＴ１、ＶＴ２のアドレス差は、閾値ＶＴ１を超えたことに基づいて割り当て要求スレッドが発行されてから新たなＨＤＤが接続されるまでの期間にキャプチャしたデータをＨＤＤに書き込み可能なように設定される。例えば、閾値ＶＴ１は、データをキャプチャする最大速度をＭＳＰとし、マザーボードＭＢに接続されるＨＤＤの台数をＭとし、新たなＨＤＤが接続されるまでの最大の待ち時間をＴＭＡＸとすると、式（２）で示される。式（２）において”＊”は、乗算を示す。
ＶＴ１＝ＶＴ２−（ＭＳＰ／Ｍ）＊ＴＭＡＸ  …（２）
最大時間ＴＭＡＸは、マザーボードＭＢがＨＤＤの割り当て要求スレッドを発行してから接続装置３００の接続状態が切り替えられ、マザーボードＭＢのＯＳが新たに接続されたＨＤＤを認識するまでの待ち時間である。最大時間ＴＭＡＸは、情報処理システムＳＹＳのシステム仕様に依存する定数である。式（２）により閾値ＶＴ１が設定されることで、ＨＤＤの切り替え期間中にも、キャプチャしたデータは失われることなくＨＤＤに書き込みできる。
【０１６０】
なお、式（２）のＭＳＰ／Ｍは、上述した式（１）よりＨＳＰに等しいため、閾値ＶＴ１は、式（２）に式（１）を代入した式（３）としても表せる。
ＶＴ１＝ＶＴ２−ＨＳＰ＊ＴＭＡＸ  …（３）
また、閾値ＶＴ２のアドレス値は、セパレータのサイズをＳＳ、タイムスタンプのサイズをＴＳ、最大のデータサイズをＤＭＡＸ、メタデータのサイズをＭＳ、最終データの識別子のサイズをＥＳとすると、ＨＤＤの末尾アドレスを用いて式（４）で示される。データの最大サイズＤＭＡＸは、データをキャプチャする通信のプロトコルに依存する定数である。
ＶＴ２＝末尾アドレス−（ＳＳ＋ＴＳ＋ＤＭＡＸ＋ＭＳ＋ＥＳ）  …（４）
式（４）を用いて閾値ＶＴ２が設定されることで、閾値ＶＴ２を超えた場合にも、データをＨＤＤに書き込みできる。このように、閾値ＶＴ１、ＶＴ２のアドレス値は、ＨＤＤの記憶容量、データ転送速度、ＨＤＤの接続の待ち時間から決定できる。
【０１６１】
図２０および図２１は、図１７のステップＳ５００により起動されるキャプチャプロセスの例を示す。図２１は、図２０の処理の続きを示す。キャプチャプロセスは、管理装置４００からキャプチャプロセスの起動指示を受信したマザーボードＭＢのＣＰＵにより実行される。
【０１６２】
まず、ステップＳ５０２において、キャプチャプロセスは、キャプチャしたデータを分散して書き込むＨＤＤの台数を変数Ｎとして設定する。なお、データを分散して書き込まない場合、変数Ｎは”１”に設定される。また、キャプチャプロセスは、キャプチャ動作に使用する変数ｐｅｒｉｏｄおよびリストＬＩＳＴ１、ＬＩＳＴ２を初期化する。リストＬＩＳＴ１、ＬＩＳＴ２は、所定のサイズが割り当てられた記憶領域あるいはレジスタである。
【０１６３】
変数ｐｅｒｉｏｄは、マザーボードＭＢに接続されたＨＤＤ群の割り当て回数（延べ数）を示し、初期値は”１”である。変数ｐｅｒｉｏｄは、キャプチャ中のＨＤＤの書き込み容量が所定量（図１９に示した閾値ＶＴ１）を超え、新たなＨＤＤが割り当てられる毎に”１”ずつ増加される。
【０１６４】
リストＬＩＳＴ１、ＬＩＳＴ２には、ＨＤＤの番号（ＨＤＤＮｏ）が格納される。リストＬＩＳＴ１、ＬＩＳＴ２は、初期状態で”ｎｕｌｌ”に設定される。リストＬＩＳＴ１は、奇数回目に割り当てられたＨＤＤの番号を保持し、ＨＤＤが切り離されるときに”ｎｕｌｌ”に設定される。変数ＬＩＳＴ２は、偶数回目に割り当てられたＨＤＤの番号を保持し、ＨＤＤが切り離されるときに”ｎｕｌｌ”に設定される。
【０１６５】
次に、ステップＳ５０４において、キャプチャプロセスは、データのキャプチャ用のＨＤＤの割り当て要求スレッドを起動する。割り当て要求スレッドの例は、図２２に示す。次に、ステップＳ５０６において、キャプチャプロセスは、リストＬＩＳＴ１が”ｎｕｌｌ”を保持するか否かを判定する。リストＬＩＳＴ１が”ｎｕｌｌ”を保持する場合、データをキャプチャするＨＤＤのマザーボードＭＢへの接続が完了していないため、処理はステップＳ５０８に移行する。リストＬＩＳＴ１が”ｎｕｌｌ”を保持しない場合、マザーボードＭＢに接続されたデータのキャプチャ用のＨＤＤが存在するため、処理はステップＳ５１２に移行する。
【０１６６】
ステップＳ５０８において、キャプチャプロセスは、データのキャプチャ用のＨＤＤが接続されるのを待つ。例えば、ＨＤＤが接続されたか否かは、マザーボードＭＢが管理装置４００に問い合わせることで判断される。次に、ステップＳ５１０において、キャプチャプロセスは、接続されたＨＤＤの番号（例えば、ＨＤＤ１とＨＤＤ２を示す情報）をリストＬＩＳＴ１に格納する。
【０１６７】
次に、ステップＳ５１２において、キャプチャプロセスは、変数ｐｅｒｉｏｄが奇数か否かを判定する。変数ｐｅｒｉｏｄが奇数の場合、処理はステップＳ５１４に移行し、変数ｐｅｒｉｏｄが偶数の場合、処理はステップＳ５１６に移行する。
【０１６８】
ステップＳ５１４において、キャプチャプロセスは、リストＬＩＳＴ１に保持されたＨＤＤの番号を変数ＮＯＷＨＤＤに格納し、リストＬＩＳＴ２に保持されたＨＤＤの番号を変数ＥＮＤＨＤＤに格納する。一方、ステップＳ５１６において、キャプチャプロセスは、リストＬＩＳＴ２に保持されたＨＤＤの番号を変数ＮＯＷＨＤＤに格納し、リストＬＩＳＴ１に保持されたＨＤＤの番号を変数ＥＮＤＨＤＤに格納する。ここで、変数ＮＯＷＨＤＤで示されるＨＤＤは、書き込まれたデータが閾値ＶＴ１に到達していないことを示し、変数ＥＮＤＨＤＤで示されるＨＤＤは、データが閾値ＶＴ１を超える領域までデータが書き込まれたことを示す。
【０１６９】
次に、図２１のステップＳ５１８において、キャプチャプロセスは、図５に示したスイッチ装置５００から供給されるデータを保持するバッファからデータを読み込む。例えば、バッファは、マザーボードＭＢ内に設けられる。次に、ステップＳ５２０において、キャプチャプロセスは、バッファから読み込んだデータを、変数ＮＯＷＨＤＤが示すＭ台のＨＤＤに分散して書き込む。
【０１７０】
次に、ステップＳ５２２において、キャプチャプロセスは、変数ＥＮＤＨＤＤが”ｎｕｌｌ”か否かを判定する。変数ＥＮＤＨＤＤが”ｎｕｌｌ”の場合、データが閾値ＶＴ１を超える領域まで、変数ＥＮＤＨＤＤにＨＤＤの番号が設定されないため、キャプチャプロセスは、変数ＮＯＷＨＤＤで示されるＨＤＤにのみ書き込み動作を実行中である。この場合、処理はステップＳ５２８に移行する。変数ＥＮＤＨＤＤが”ｎｕｌｌ”でない場合、処理はステップＳ５２４に移行する。
【０１７１】
ステップＳ５２４において、キャプチャプロセスは、変数ＥＮＤＨＤＤが示すＨＤＤの書き込みアドレスが閾値ＶＴ２を超えたか否かを判定する。例えば、書き込みアドレスは、ＨＤＤにおいてデータを書き込む記憶領域を示し、ＨＤＤへのデータの書き込みは、アドレスが小さい側から昇順に実行される。書き込みアドレスが閾値ＶＴ２を超えた場合、ＨＤＤへのデータの書き込みを停止するため、処理はステップＳ５２８に移行する。書き込みアドレスが閾値ＶＴ２以下の場合、ＨＤＤへのデータの書き込みが可能なため、処理はステップＳ５２６に移行する。
【０１７２】
ステップＳ５２６において、キャプチャプロセスは、バッファから読み込んだデータを、変数ＥＮＤＨＤＤが示すＨＤＤに分散して書き込む。なお、マザーボードＭＢは、式（１）で示した台数のキャプチャ用のＨＤＤを接続するため、バッファに書き込まれる単位時間当たりのデータ量は、Ｍ台のＨＤＤに書き込む単位時間当たりデータ量よりも小さい。このため、バッファがデータによりオーバフローすることなく、データをＨＤＤに書き込みできる。
【０１７３】
ステップＳ５２８において、キャプチャプロセスは、変数ＮＯＷＨＤＤが示すＨＤＤの書き込みアドレスが閾値ＶＴ１を超えたか否かを判定する。キャプチャしたデータが複数のＨＤＤに分散して書き込まれる場合（Ｍ＝複数）、ＨＤＤの少なくとも１つの書き込みアドレスが閾値ＶＴ１を超えたか否かが判定される。書き込みアドレスが閾値ＶＴ１を超えた場合、変数ＮＯＷＨＤＤが示すＨＤＤの容量の余裕が少なくなったため、処理はステップＳ５３０に移行する。書き込みアドレスが閾値ＶＴ１以下の場合、変数ＮＯＷＨＤＤが示すＨＤＤの容量に余裕があるため、処理はステップＳ５３２に移行する。
【０１７４】
ステップＳ５３０において、キャプチャプロセスは、キャプチャ用の新たなＨＤＤをマザーボードＭＢに接続する割り当て要求スレッドを起動する。書き込みアドレスが閾値ＶＴ１を超えた時点で新たなＨＤＤの接続処理を開始することで、キャプチャ用のＨＤＤが切り替わる場合にも、マザーボードＭＢは、データを絶え間なくＨＤＤに書き込みできる。この後、処理はステップＳ５３２に移行する。
【０１７５】
ステップＳ５３２において、キャプチャプロセスは、変数ＥＮＤＨＤＤが示すＨＤＤの書き込みアドレスが閾値ＶＴ２を超えたか否かを判定する。キャプチャしたデータが複数のＨＤＤに分散して書き込まれる場合（Ｍ＝複数）、ＨＤＤの少なくとも１つの書き込みアドレスが閾値ＶＴ２を超えたか否かが判定される。書き込みアドレスが閾値ＶＴ２を超えた場合、ＨＤＤへのデータの書き込みを停止するため、処理はステップＳ５３４に移行する。なお、書き込みアドレスが閾値ＶＴ２を超えた場合、新たなＨＤＤがマザーボードＭＢに接続済みである。書き込みアドレスが閾値ＶＴ２以下の場合、新たなＨＤＤがマザーボードＭＢに接続されていないため、処理は図２０のステップＳ５１２に戻る。
【０１７６】
ステップＳ５３４において、キャプチャプロセスは、データをキャプチャする変数ＥＮＤＨＤＤが示すＨＤＤをマザーボードＭＢから切り離す開放要求スレッドを起動する。この後、処理は図２０のステップＳ５１２に戻る。
【０１７７】
図２２は、図２１のステップＳ５３０により起動される割り当て要求スレッドの例を示す。割り当て要求スレッドは、マザーボードＭＢが実行中のキャプチャプロセスにより起動される。
【０１７８】
まず、ステップＳ５４０において、割り当て要求スレッドは、データをキャプチャするＭ台の新たなＨＤＤを接続する割り当て要求を管理装置４００に発行する。次に、ステップＳ５４２において、割り当て要求スレッドは、データをキャプチャするＭ台のＨＤＤが接続されるまで待つ。
【０１７９】
次に、ステップＳ５４４において、割り当て要求スレッドは、変数ｐｅｒｉｏｄを”１”増加させる。次に、ステップＳ５４６において、割り当て要求スレッドは、変数ｐｅｒｉｏｄが奇数か否かを判定する。変数ｐｅｒｉｏｄが奇数の場合、処理はステップＳ５４８に移行し、変数ｐｅｒｉｏｄが偶数の場合、処理はステップＳ５５０に移行する。
【０１８０】
次に、ステップＳ５４８において、割り当て要求スレッドは、新たに接続されたＨＤＤの番号をリスト変数ＬＩＳＴ１に格納し、開放要求スレッドを終了する。一方、ステップＳ５５０において、割り当て要求スレッドは、新たに接続されたＨＤＤの番号をリストＬＩＳＴ２に格納し、割り当て要求スレッドを終了する。
【０１８１】
図２３は、図２１のステップＳ５３４により起動される開放要求スレッドの例を示す。開放要求スレッドは、マザーボードＭＢが実行中のキャプチャプロセスにより起動される。
【０１８２】
まず、ステップＳ５６０において、開放要求スレッドは、変数ｐｅｒｉｏｄが奇数か否かを判定する。変数ｐｅｒｉｏｄが奇数の場合、処理はステップＳ５６２に移行し、変数ｐｅｒｉｏｄが偶数の場合、処理はステップＳ５６６に移行する。
【０１８３】
ステップＳ５６２において、開放要求スレッドは、リストＬＩＳＴ２に格納された番号により示されるＨＤＤをマザーボードＭＢから切り離す開放要求を管理装置４００に発行する。次に、ステップＳ５６４において、開放要求スレッドは、リストＬＩＳＴ２を”ｎｕｌｌ”に設定し、開放要求スレッドを終了する。
【０１８４】
一方、ステップＳ５６６において、開放要求スレッドは、リストＬＩＳＴ１に格納された番号により示されるＨＤＤをマザーボードＭＢから切り離す開放要求を管理装置４００に発行する。次に、ステップＳ５６８において、開放要求スレッドは、リストＬＩＳＴ１を”ｎｕｌｌ”に設定し、開放要求スレッドを終了する。
【０１８５】
図２４は、図２０から図２３に示したキャプチャプロセスにより実行されるデータのキャプチャ動作の例を示す。この例では、説明を簡単にするために、データのキャプチャ用のＨＤＤとして、４組の（ＨＤＤ１、ＨＤＤ２）、（ＨＤＤ５、ＨＤＤ６）、（ＨＤＤ９、ＨＤＤ１０）、（ＨＤＤ１３、ＨＤＤ１４）が使用されるとする。細長い矩形は、対応するＨＤＤが図５に示したマザーボードＭＢ１に接続中（キャプチャされたデータの書き込みが可能）であることを示す。
【０１８６】
まず始めに、図５に示したマザーボードＭＢ１にＨＤＤ１、ＨＤＤ２が接続され、キャプチャされたデータは、ＨＤＤ１、ＨＤＤ２に順に書き込まれる（図２４（ａ））。初期状態では、変数ｐｅｒｉｏｄは”１”のため、変数ＮＯＷＨＤＤはリストＬＩＳＴ１の内容が示すＨＤＤ１、ＨＤＤ２に設定される。リストＬＩＳＴ２および変数ＥＮＤＨＤＤは”ｎｕｌｌ”である。
【０１８７】
変数ＮＯＷＨＤＤが示すＨＤＤ１、ＨＤＤ２のいずれかの書き込みアドレスが閾値ＶＴ１を超えると、変数ｐｅｒｉｏｄは”２”になり、未使用のＨＤＤ５、ＨＤＤ６がマザーボードＭＢ１に接続される（図２４（ｂ））。また、変数ＮＯＷＨＤＤは、リストＬＩＳＴ２の内容が示すＨＤＤ５、ＨＤＤ６に設定され、変数ＥＮＤＨＤＤは、リストＬＩＳＴ１の内容が示すＨＤＤ１、ＨＤＤ２に設定される（図２４（ｃ））。
【０１８８】
次に、変数ＥＮＤＨＤＤが示すＨＤＤ１、ＨＤＤ２の書き込みアドレスのいずれかが閾値ＶＴ２を超えると、リストＬＩＳＴ１の内容が示すＨＤＤ１、ＨＤＤ２がマザーボードＭＢ１から切り離される（図２４（ｄ））ＨＤＤ１、ＨＤＤ２の書き込みアドレスが閾値ＶＴ１を超えてから閾値ＶＴ２に到達するまでの間に、マザーボードＭＢ１にＨＤＤ５、ＨＤＤ６を接続することで、データを途切れることなくＨＤＤ１、ＨＤＤ２またはＨＤＤ５、ＨＤＤ６の少なくともいずれかに書き込みできる。例えば、”未使用”状態や”待機中”状態のＨＤＤの電源を遮断する場合にも、閾値ＶＴ１、ＶＴ２をＨＤＤの電源立ち上げ時間を考慮して設定することで、消費電力を抑制しながら、データを失うことなくＨＤＤに保持できる。
【０１８９】
次に、変数ＮＯＷＨＤＤが示すＨＤＤ５、ＨＤＤ６のいずれかの書き込みアドレスが閾値ＶＴ１を超えると、未使用のＨＤＤ９、ＨＤＤ１０がマザーボードＭＢ１に接続され、変数ｐｅｒｉｏｄは”３”になる（図２４（ｅ））。また、変数ＮＯＷＨＤＤは、リストＬＩＳＴ１の内容が示すＨＤＤ９、ＨＤＤ１０に設定され、変数ＥＮＤＨＤＤは、リストＬＩＳＴ２の内容が示すＨＤＤ５、ＨＤＤ６に設定される（図２４（ｆ））。
【０１９０】
次に、変数ＥＮＤＨＤＤが示すＨＤＤ５、ＨＤＤ６の書き込みアドレスのいずれかが閾値ＶＴ２を超えると、リストＬＩＳＴ２の内容が示すＨＤＤ５、ＨＤＤ６がマザーボードＭＢ１から切り離される（図２４（ｇ））。この後、ＨＤＤが順次切り替えられながら、キャプチャされたデータは失われることなくＨＤＤに書き込まれる。
【０１９１】
さらに、変数ＮＯＷＨＤＤが示すＨＤＤ１３、ＨＤＤ１４のいずれかの書き込みアドレスが閾値ＶＴ１を超えると、状態が”待機中”に設定されたＨＤＤのうち最も古いデータを保持するＨＤＤ１、ＨＤＤ２がマザーボードＭＢ１に接続される（図２４（ｈ））。そして、キャプチャされたデータは、ＨＤＤ１３、ＨＤＤ１４とともに、ＨＤＤ１、ＨＤＤ２に書き込まれる。
【０１９２】
図２５は、図５に示した情報処理システムＳＹＳが実行する検索動作のシーケンスの例を示す。すなわち、図２５は、キャプチャされたデータの検索装置として動作する情報処理システムＳＹＳのシーケンスの例を示す。以下の説明では、図７に示した管理装置４００の動作は、管理装置４００のＣＰＵ４による動作を含み、マザーボードＭＢの動作は、マザーボードＭＢのＣＰＵによる動作を含む。
【０１９３】
この例では、図１５に示した状態後、キャプチャ中のＨＤＤ１−ＨＤＤ４がデータで満杯になり、ＨＤＤ５−ＨＤＤ８がキャプチャ用のＨＤＤとして動作中に検索要求が初めて発行される。検索対象のデータを含むＨＤＤは、コンソールＣＮＳＬから検索要求とともに受信する検索対象の時間（図２８のステップＳ３０２の開始時刻Ｔｓおよび終了時刻Ｔｅ）に基づいて、管理装置４００により起動される検索スレッドが選択する。この例では、ＨＤＤ１−ＨＤＤ４が検索対象のデータを含むＨＤＤとして選択される。
【０１９４】
図２５では、説明を簡単にするために、ＨＤＤ３、ＨＤＤ４およびＨＤＤ３、ＨＤＤ４に保持されたデータを検索するマザーボードＭＢ４、ＨＤＤ３２の動作は、破線の矩形枠で示し、説明は省略する。マザーボードＭＢ４、ＨＤＤ３２、ＨＤＤ３、ＨＤＤ４の動作は、図２５において、マザーボードＭＢ３、ＨＤＤ３１、ＨＤＤ１、ＨＤＤ２をマザーボードＭＢ４、ＨＤＤ３２、ＨＤＤ３、ＨＤＤ４に置き換えることで説明される。
【０１９５】
管理装置４００は、コンソールＣＮＳＬからの検索要求に基づいて、検索スレッドを起動する（図２５（ａ））。例えば、検索スレッドは、マザーボードＭＢ３とＨＤＤ３１とを接続する制御情報を接続装置３００に出力する。接続装置３００は、制御情報に基づいてマザーボードＭＢ３とＨＤＤ３１とを接続する。検索スレッドは、マザーボードＭＢ３とＨＤＤ３１とが互いに接続された後、マザーボードＭＢ３を介してＨＤＤ３１にＯＳおよび検索プログラムＳＰをインストールする。インストールの手法は、図９に示したキャプチャプログラムＣＰのインストールと同様である。
【０１９６】
ＨＤＤ３１へのＯＳおよび検索プログラムＳＰのインストール後、マザーボードＭＢ３は再起動される。マザーボードＭＢ３のＣＰＵは、ＯＳの実行を開始し、ＨＤＤ３１のアクセスを開始する。これ以降、マザーボードＭＢ３およびＨＤＤ３１は、検索サーバとして動作可能になる。マザーボードＭＢ３は、インストールが完了したことを示す完了応答を管理装置４００に送信する。なお、検索スレッドは、マザーボードＭＢとＨＤＤとを複数組接続し、複数の検索サーバとして動作させてもよい。検索対象のＨＤＤが複数ある場合、複数の検索サーバを起動してデータを検索することで、１台の検索サーバでデータを検索する場合に比べて検索時間を短縮できる。
【０１９７】
この実施形態では、検索スレッドは、コンソールＣＮＳＬからの指示された数の未使用のマザーボードＭＢと未使用のＨＤＤとを用いて、任意の数の検索サーバを起動可能である。これにより、検索する範囲の大きさに応じて、最適な数の検索サーバを起動することが可能になり、コンソールＣＮＳＬ側の要求に合わせて検索時間を最適化できる。
【０１９８】
検索スレッドは、インストールの完了応答の受信に基づいて、マザーボードＭＢ３に検索プロセスを起動する指示を出力する。マザーボードＭＢ３は、検索スレッドからの指示に基づいて、検索プロセスを開始する（図２５（ｂ））。
【０１９９】
検索プロセスは、少なくとも１つのＨＤＤ検索スレッドを起動する。例えば、ＨＤＤ検索スレッドは、検索するＨＤＤ毎に起動される（図２５（ｃ））。この例では、ＨＤＤ検索スレッド（１）がＨＤＤ１に保持されたキャプチャデータを検索し、ＨＤＤ検索スレッド（２）がＨＤＤ２に保持されたキャプチャデータを検索する。
【０２００】
検索プロセスは、ＨＤＤ検索スレッド（１）、ＨＤＤ検索スレッド（２）による検索の終了に基づいて、管理装置４００が実行中の検索スレッドに検索結果を送信する（図２５（ｄ））。検索スレッドは、検索結果をコンソールに送信し（図２５（ｅ））、マザーボードＭＢ３とＨＤＤ１、ＨＤＤ２との接続を解除する制御情報を接続装置３００に出力する（図２５（ｆ））。接続装置３００は、制御情報に基づいてマザーボードＭＢ３とＨＤＤ１、ＨＤＤ２との接続を解除する。そして、検索スレッドは終了する。
【０２０１】
例えば、検索スレッドの終了後、管理プロセスは、マザーボードＭＢ３およびＨＤＤ３１の接続を維持する。この場合、２回目以降の検索要求に応答して起動される検索スレッドは、ＨＤＤ３１へのＯＳおよび検索プログラムＳＰのインストールは実行しない。
【０２０２】
なお、検索スレッドの終了後、管理プロセスは、マザーボードＭＢ３およびＨＤＤ３１の接続を維持した状態で、マザーボードＭＢ３およびＨＤＤ３１への電源の供給を遮断してもよい。この場合、ＨＤＤ３１は、ＯＳおよび検索プログラムＳＰを保持しているため、２回目以降の検索要求に応答して起動される検索スレッドは、マザーボードＭＢを再起動すればよい。
【０２０３】
また、検索スレッドの終了後、管理プロセスは、マザーボードＭＢ３およびＨＤＤ３１の接続を解除し、マザーボードＭＢ３およびＨＤＤ３１への電源の供給を遮断してもよい。この場合、ＨＤＤ３１は、ＯＳおよび検索プログラムＳＰを保持しているため、２回目以降の検索要求に応答して起動される検索スレッドは、マザーボードＭＢ３にＨＤＤ３１を接続した後、マザーボードＭＢを再起動すればよい。
【０２０４】
例えば、検索スレッドの終了後に電源を遮断するか否かは、検索要求の発生頻度に応じて管理プロセスが判断してもよく、コンソールＣＮＳＬが検索キーＫＥＹとともに管理プロセスに指示してもよい。
【０２０５】
図２６は、図２５に示した検索スレッドにより検索用のＨＤＤがマザーボードＭＢに接続された後のテーブルＴＢＬの状態の例を示す。換言すれば、図２６は、管理装置４００の検索スレッドがマザーボードＭＢ３の検索プロセスを起動する前の状態を示す。なお、図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。
【０２０６】
図２６においても、図２５と同様に、図１５に示した状態後、キャプチャ中のＨＤＤ１−ＨＤＤ４がデータで満杯になり、ＨＤＤ５−ＨＤＤ８がキャプチャ用のＨＤＤとして動作中に検索要求が初めて発行される。図２６において、網掛けで示した領域は、検索スレッドの起動に伴い変化した箇所を示す。
【０２０７】
図２６では、管理装置４００は、ＨＤＤ５−ＨＤＤ８を用いてデータをキャプチャ中に、コンソールＣＮＳＬから検索要求を受信する。検索要求に含まれる検索対象の日時を示すデータは、ＨＤＤ１−ＨＤＤ４で保持中であるとする。図２５に示した検索スレッドは、マザーボードＭＢ３およびＨＤＤ３１の接続を示す情報と、マザーボードＭＢ４およびＨＤＤ３２の接続を示す情報とをテーブルＣＮＴＢＬに追加する。また、検索スレッドは、テーブルＭＳＴＢＬにおけるマザーボードＭＢ３、ＭＢ４の状態を”検索”に設定し、テーブルＨＳＴＢＬにおけるＨＤＤ３１、ＨＤＤ３２の状態を”起動用”に設定する。
【０２０８】
図２７は、図２５に示した検索プロセスが起動された後のテーブルＴＢＬの状態の例を示す。図２７において、網掛けで示した領域は、図２６に対して変化した箇所を示す。なお、図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。
【０２０９】
図２５に示した検索スレッドは、各マザーボードＭＢ（この例では、ＭＢ３、ＭＢ４）により検索プロセスを起動する毎にテーブルＣＮＴＢＬ、ＨＳＴＢＬを更新する。テーブルＣＮＴＢＬは、図２６に対して、マザーボードＭＢ３とＨＤＤ１、ＨＤＤ２との接続を示す情報と、マザーボードＭＢ４とＨＤＤ３、ＨＤＤ４との接続を示す情報とが追加される。ＨＤＤ１−ＨＤＤ４は、検索対象のＨＤＤであるため、テーブルＨＳＴＢＬでは、ＨＤＤ１−ＨＤＤ４の状態が”検索中”に設定される。テーブルＴＢＬのその他の状態は、図２６と同様である。
【０２１０】
この実施形態では、例えば、データのキャプチャ動作は、マザーボードＭＢ１、ＭＢ２で実行され、データの検索動作は、マザーボードＭＢ１、ＭＢ２とは異なるマザーボードＭＢ３、ＭＢ４で実行される。このため、図１から図４に示した実施形態と同様に、キャプチャ動作を実行するマザーボードＭＢ１、ＭＢ２は、音声データのようにスループットの高いデータを、検索要求の有無に拘わらず、ＨＤＤに安定して書き込みできる。また、検索動作を実行するマザーボードＭＢ３、ＭＢ４は、リアルタイムで実行されるデータのキャプチャ動作の割り込みを受けることなく、検索動作を集中して実行できる。
【０２１１】
図２８および図２９は、図１６に示したステップＳ３００により起動される検索スレッドの例を示す。図２９は、図２８の処理の続きを示す。検索スレッドは、図２５に示したように、コンソールＣＮＳＬからの検索要求に基づいて、管理装置４００が制御プログラムＰＧＭ４を実行することにより実現される。
【０２１２】
例えば、ＨＤＤに保持されるデータは、データセンタを経由して受信する携帯電話での会話の音声データである。データセンタのコンピュータ装置は図５に示したコンソールＣＮＳＬを含む。そして、携帯電話の通信回線の不具合が発生した場合に、不具合が発止した日時を含む検索キーＫＥＹ（開始時刻Ｔｓおよび終了時刻Ｔｅ）が、検索に使用するマザーボードＭＢの数”Ｍ”とともに、コンソールＣＮＳＬから情報処理システムＳＹＳに送信される。
【０２１３】
情報処理システムＳＹＳの管理装置４００は、検索スレッドを起動する。検索スレッドは、開始時刻Ｔｓおよび終了時刻Ｔｅで指定される範囲の音声データを含むＨＤＤを特定し、特定したＨＤＤから音声データを読み出し、読み出した音声データをコンソールＣＮＳＬに送信する。コンソールＣＮＳＬを含むデータセンタのコンピュータ装置は、情報処理システムＳＹＳから受信した音声データに含まれる雑音等を解析することで、不具合の原因を調べる。
【０２１４】
まず、ステップＳ３０２において、検索スレッドは、コンソールＣＮＳＬから受信した、検索動作を実行するマザーボードＭＢ（検索サーバ）の数と、検索キーＫＥＹに含まれる開始時刻および終了時刻とを、変数Ｍ、Ｔｓ、Ｔｅとしてそれぞれ設定する。また、検索スレッドは、検索対象のＨＤＤを示すリストＬＩＳＴを”ｎｕｌｌ”に初期化する。リストＬＩＳＴには、検索対象のＨＤＤを示す情報が登録される。
【０２１５】
次に、ステップＳ３０４において、検索スレッドは、データをキャプチャした時間を示すタイムスタンプ（開始時刻および終了時刻）の索引の情報が格納されるテーブルＩＮＤＴＢＬのレコード番号を示す変数Ｋを”１”に設定する。レコード番号は、図２７等に示したテーブルＩＮＤＴＢＬの行番号である。以降の説明では、テーブルＩＮＤＴＢＬの行番号は、レコード番号Ｋとも称される。
【０２１６】
次に、ステップＳ３０６において、検索スレッドは、テーブルＴＢＬの全てのレコードを走査したか否かを判定する。検索スレッドは、全てのレコードを走査した場合、処理をステップＳ３１６に移行し、走査していないレコードがある場合、処理をステップＳ３０８に移行する。
【０２１７】
ステップＳ３０８において、検索スレッドは、テーブルＩＮＤＴＢＬのＫ番目のレコードの開始時刻と終了時刻（対応するＨＤＤが保持するデータの開始時刻と終了時刻）とを読み込む。次に、ステップＳ３１０において、検索スレッドは、Ｋ番目のレコードから読み出した開始時刻と終了時刻に基づいて、対応するＨＤＤが、検索キーＫＥＹに含まれる開始時刻Ｔｓから終了時刻Ｔｅまでの期間にキャプチャされたデータを含むか否かを判定する。
【０２１８】
例えば、Ｋ番目のレコードに格納された終了時刻が開始時刻Ｔｓより前の場合、またはＫ番目のレコードに格納された開始時刻が終了時刻Ｔｅより後の場合、対応するＨＤＤは、検索対象のデータを含まない。換言すれば、Ｋ番目のレコードに格納された開始時刻または終了時刻のいずれかが、開始時刻Ｔｓから終了時刻Ｔｅまでの期間に含まれる場合、対応するＨＤＤは、検索するデータを含む。検索スレッドは、対応するＨＤＤが検索するデータを含む場合、処理をステップＳ３１２に移行し、対応するＨＤＤが検索するデータを含まない場合、処理をステップＳ３１４に移行する。
【０２１９】
ステップＳ３１２において、検索スレッドは、Ｋ番目のレコードに対応するＨＤＤ（Ｋ）の情報をリストＬＩＳＴに追加する。次に、ステップＳ３１４において、検索スレッドは、レコード番号Ｋを”１”インクリメントし、処理をステップＳ３０６に戻す。
【０２２０】
一方、テーブルＩＮＤＴＢＬの全てのレコードが走査された場合、ステップＳ３１６からＳ３２４において、検索スレッドは、検索を実行するＭ個のマザーボードＭＢをＨＤＤにそれぞれ接続する。なお、図２５で説明したように、検索スレッドの終了後、管理プロセスがマザーボードＭＢ３およびＨＤＤ３１の接続を維持する場合、ステップＳ３１６からＳ３２４は省略される。
【０２２１】
ステップＳ３１６において、検索スレッドは、Ｍ個のマザーボードＭＢの選択が完了したか否かを判定する。検索スレッドは、Ｍ個のマザーボードＭＢの選択が完了した場合、処理をステップＳ３２６に移行し、Ｍ個のマザーボードＭＢの選択が完了していない場合、処理をステップＳ３１８に移行する。
【０２２２】
ステップＳ３１８において、検索スレッドは、テーブルＭＳＴＢＬを参照し、図５に示したマザーボードプール１００の中から未使用のマザーボードＭＢを選択する。次に、ステップＳ３２０において、検索スレッドは、テーブルＨＳＴＢＬを参照し、図５に示したストレージドライブプール２００の中から未使用の起動用のＨＤＤを選択する。
【０２２３】
次に、ステップＳ３２２において、検索スレッドは、接続装置３００を制御することにより、選択したマザーボードＭＢを選択したＨＤＤに接続する。次に、ステップＳ３２４において、検索スレッドは、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬを更新し、例えば、図２６に示した状態にする。この後、処理は、ステップＳ３１６に戻る。
【０２２４】
一方、Ｍ個のマザーボードＭＢの選択が完了した場合、ステップＳ３２６からＳ３３２において、検索スレッドは、選択したＭ個のマザーボードＭＢにＯＳと検索プログラムＳＰとをそれぞれインストールする。
【０２２５】
なお、検索スレッドの終了後、管理プロセスがマザーボードＭＢ３およびＨＤＤ３１の接続を維持し、マザーボードＭＢ３およびＨＤＤ３１の電源の供給を維持する場合、ステップＳ３２６からＳ３３２は省略される。また、検索スレッドの終了後、管理プロセスがマザーボードＭＢ３およびＨＤＤ３１の接続を維持した状態で、マザーボードＭＢ３およびＨＤＤ３１の電源を遮断する場合、ステップＳ３２６からＳ３３０は省略され、ステップＳ３３２の再起動は実行される。
【０２２６】
まず、ステップＳ３２６において、検索スレッドは、選択したＭ個のマザーボードＭＢの初期化が完了したか否かを判定する。Ｍ個のマザーボードＭＢの初期化が完了した場合、処理はステップＳ３３４に移行し、初期化が完了していない場合、処理はステップＳ３２８に移行する。ステップＳ３２８、Ｓ３３０、Ｓ３３２、Ｓ３３４の処理は、インストールされるプログラムが異なることを除き、図１７に示したステップＳ２１６、Ｓ２１８、Ｓ２２０、Ｓ２２２の処理と同様のため、説明は省略する。
【０２２７】
次に、図２９のステップＳ３３６において、検索スレッドは、リストＬＩＳＴに登録されたＨＤＤの数を、初期化したマザーボードＭＢ数（Ｍ個）で除した値を変数Ｎとして設定する。なお、変数Ｎは、検索サーバとして動作する各マザーボードＭＢが並列に起動する検索スレッドの数を示す。変数Ｎは、除算結果の小数点以下を切り上げることで算出されてもよく、除算結果が割り切れない場合、マザーボードＭＢ毎に、変数Ｎがほぼ均等になるように設定されてもよい。
【０２２８】
ステップＳ３３８において、検索スレッドは、検索サーバとして動作させる全てのマザーボードＭＢの検索プロセスを起動したか否かを判定する。全てのマザーボードＭＢの検索プロセスが起動された場合、処理はステップＳ３４８に移行され、全てのマザーボードＭＢの検索プロセスが起動されていない場合、処理はステップＳ３４０に移行される。
【０２２９】
ステップＳ３４０において、検索スレッドは、テーブルＭＳＴＢＬを参照し、未使用のマザーボードＭＢのいずれかを選択する。次に、ステップＳ３４２において、検索スレッドは、リストＬＩＳＴに登録されたＨＤＤからＮ個のＨＤＤを選択する。次に、ステップＳ３４４において、検索スレッドは、接続装置３００を制御することにより、選択したマザーボードＭＢに選択したＮ個のＨＤＤを接続する。次に、ステップＳ３４６において、検索スレッドは、テーブルＣＮＴＢＬ、ＨＳＴＢＬを更新し、例えば、図２７に示した状態にする。
【０２３０】
次に、ステップＳ６００おいて、検索スレッドは、選択中のマザーボードＭＢの検索プロセスを起動する。検索プロセスの例は、図３０に示す。この後、処理は、ステップＳ３３８に戻る。
【０２３１】
一方、全てのマザーボードＭＢの検索プロセスが起動された場合、ステップＳ３４８において、検索スレッドは、リストＲＳＬＴＬＩＳＴ１を”ｎｕｌｌ”に初期化する。例えば、リストＲＳＬＴＬＩＳＴ１には、検索結果が格納され、あるいは、検索結果が格納される記憶領域のアドレスが格納される。
【０２３２】
次に、ステップＳ３５０において、検索スレッドは、検索サーバとして動作する全てのマザーボードＭＢの検索結果を受信したか否かを判定する。全てのマザーボードＭＢの検索結果が受信された場合、処理はステップＳ３６０に移行され、検索結果が受信されないマザーボードＭＢがある場合、処理はステップＳ３５２に移行される。
【０２３３】
ステップＳ３５２において、検索スレッドは、検索サーバとして動作するマザーボードＭＢのいずれかからＮ個のＨＤＤの検索結果を受信したか否かを判定する。検索結果が受信された場合、処理はステップＳ３５４に移行され、検索結果が受信されない場合、処理はステップＳ３５０に戻る。すなわち、ステップＳ３５２では、検索スレッドは、マザーボードＭＢからの検索結果の受信を待つ。
【０２３４】
ステップＳ３５４において、検索結果を受信した検索スレッドは、リストＲＳＬＴＬＩＳＴ１に検索結果を追加する。次に、ステップＳ３５６において、検索スレッドは、接続装置３００を制御することにより、検索結果を出力したマザーボードＭＢと検索対象のＮ個のＨＤＤとの接続を解除する。
【０２３５】
ステップＳ３５８において、検索スレッドは、接続を解除したＨＤＤに合わせて、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬを更新した後、ステップＳ３５０に戻る。
【０２３６】
一方、全てのマザーボードＭＢの検索結果が受信された場合、ステップＳ３６０において、検索スレッドは、リストＲＳＬＴＬＩＳＴ１に格納された検索結果をコンソールＣＮＳＬに送信し、処理を終了する。例えば、検索スレッドは、開始時刻Ｔｓから終了時刻Ｔｅまでにキャプチャされた全てのデータをコンソールＣＮＳＬに送信する。
【０２３７】
なお、検索スレッドは、開始時刻Ｔｓから終了時刻Ｔｅまでにキャプチャされたデータを含む各ＨＤＤについて、データが格納された領域の開始アドレスと終了アドレスとをコンソールＣＮＳＬに送信してもよい。この場合、管理プロセスは、ＨＤＤからデータを読み出すコマンドをコンソールＣＮＳＬから受信し、ＨＤＤから読み出し、読み出したデータをコンソールＣＮＳＬに送信する。
【０２３８】
図３０は、図２９に示したステップＳ６００により起動される検索プロセスの例を示す。検索プロセスは、図２５に示したように、管理装置４００から検索プロセスの起動指示を受信したマザーボードＭＢのＣＰＵにより、マザーボードＭＢ毎に実行される。
【０２３９】
まず、ステップＳ６０２において、検索プロセスは、リストＬＩＳＴに登録されたＨＤＤの数を、初期化したマザーボードＭＢ数（Ｍ個）で除した値を変数Ｎとして設定する。変数Ｎの求め方は、図２９に示したステップＳ３３６と同様である。
【０２４０】
次に、ステップＳ６０４において、検索プロセスは、データを検索するＨＤＤに対応して全てのＨＤＤ検索スレッドを起動したか否かを判定する。全てのＨＤＤ検索スレッドが起動された場合、処理はステップＳ６０８に移行され、全てのＨＤＤ検索スレッドが起動されていない場合、処理はステップＳ６０６に移行される。
【０２４１】
ステップＳ６０６において、検索プロセスは、選択していないＨＤＤを選択する。次に、ステップＳ７００において、検索プロセスは、ステップＳ６０６で選択したＨＤＤに格納されたデータを検索するＨＤＤ検索スレッドを起動し、ステップＳ６０４に戻る。ＨＤＤ検索スレッドの例は、図３１から図３６に示す。
【０２４２】
一方、全てのＨＤＤ検索スレッドが起動された場合、ステップＳ６０８において、検索プロセスは、リストＲＳＬＴＬＩＳＴ２を”ｎｕｌｌ”に初期化する。例えば、リストＲＳＬＴＬＩＳＴ２には、検索結果が格納され、あるいは、検索結果が格納される記憶領域のアドレスが格納される。
【０２４３】
次に、ステップＳ６１０において、検索プロセスは、起動した全てのＨＤＤ検索スレッドから検索結果を受信したか否かを判定する。全てのＨＤＤ検索スレッドから検索結果が受信された場合、処理はステップＳ６１６に移行され、検索結果が受信されないＨＤＤ検索スレッドがある場合、処理はステップＳ６１２に移行される。
【０２４４】
ステップＳ６１２において、検索プロセスは、ＨＤＤ検索スレッドのいずれかから検索結果を受信したか否かを判定する。検索結果が受信された場合、処理はステップＳ６１４に移行され、検索結果が受信されない場合、処理はステップＳ６１２を繰り返す。すなわち、ステップＳ６１２では、検索プロセスは、ＨＤＤ検索スレッドから検索結果の受信を待つ。ステップＳ６１４において、検索プロセスは、リストＲＳＬＴＬＩＳＴ２に検索結果を追加する。
【０２４５】
一方、全てのＨＤＤ検索スレッドから検索結果が受信された場合、ステップＳ６１６において、検索プロセスは、リストＲＳＬＴＬＩＳＴ２に格納された検索結果を管理装置４００に送信し、処理を終了する。
【０２４６】
図３１は、図３０に示したステップＳ７００により起動されるＨＤＤ検索スレッドの例を示す。ＨＤＤ検索スレッドは、図２５に示したように、マザーボードＭＢのＣＰＵにより、検索するＨＤＤ毎に実行される。
【０２４７】
まず、ステップＳ７０２において、ＨＤＤ検索スレッドは、対応するＨＤＤがマザーボードＭＢに接続されるのを待つ。対応するＨＤＤとマザーボードＭＢとの接続は、図２９に示したステップＳ３４４により実行される。次に、ステップＳ７０４において、ＨＤＤ検索スレッドは、検索キーＫＥＹに含まれる開始時刻および終了時刻を変数Ｔｓ、Ｔｅに設定し、リストＲＳＬＴＬＩＳＴ３を”ｎｕｌｌ”に初期化し、変数ＳＴＡＲＴ、ＥＮＤを”０”に初期化する。
【０２４８】
例えば、リストＲＳＬＴＬＩＳＴ３には、検索により得られたデータが格納される。変数ＳＴＡＲＴには、ステップＳ７１０の実行により、各ＨＤＤにおいて検索対象のデータが格納された記憶領域の開始アドレスが格納され、変数ＥＮＤには、ステップＳ７４０の実行により、各ＨＤＤにおいて検索対象のデータが格納された記憶領域の終了アドレスが格納される。
【０２４９】
検索キーＫＥＹに含まれる開始時刻および終了時刻は、それぞれ開始時刻Ｔｓおよび終了時刻Ｔｅとも称される。また、各ＨＤＤにおいて検索対象のデータが格納された記憶領域の開始アドレスおよび終了アドレスは、開始アドレスＳＴＡＲＴおよび終了アドレスＥＮＤとも称される。
【０２５０】
次に、ステップＳ７１０において、ＨＤＤ検索スレッドは、図３２に示す開始アドレス検索ルーチンを起動する。開始アドレス検索ルーチンでは、ＨＤＤにおける検索対象のデータが格納された記憶領域の開始アドレスＳＴＡＲＴが求められる。次に、ステップＳ７４０において、ＨＤＤ検索スレッドは、図３５に示す終了アドレス検索ルーチンを起動する。終了アドレス検索ルーチンでは、ＨＤＤにおける検索対象のデータが格納された記憶領域の終了アドレスＥＮＤが求められる。
【０２５１】
次に、ステップＳ７７０において、ＨＤＤ検索スレッドは、ＨＤＤの開始アドレスＳＴＡＲＴから終了アドレスＥＮＤまでに格納されたデータを検索データとして読み出し、読み出した検索データをリストＲＳＬＴＬＩＳＴ３に格納する。次に、ステップＳ７０６において、ＨＤＤ検索スレッドは、リストＲＳＬＴＬＩＳＴ３に格納された検索データを、図３０に示した検索プロセスに送信する。
【０２５２】
図３２は、図３１に示したＨＤＤ検索スレッドにより求められる開始アドレスＳＴＡＲＴおよび終了アドレスＥＮＤの例を示す。図３２の網掛けの領域は、図３１に示したステップＳ７７０においてＨＤＤから読み出される検索対象のデータを示す。
【０２５３】
図３２（Ａ）は、ＨＤＤ検索スレッドにより検索されるＨＤＤａに格納されたデータが開始時刻Ｔｓを含み、終了時刻Ｔｅを含まない場合を示す。この場合、開始時刻Ｔｓに対応するデータが格納されたアドレスが、開始アドレスＳＴＡＲＴとして求められ、最後のデータが格納されたアドレスが、終了アドレスＥＮＤとして求められる。
【０２５４】
図３２（Ｂ）は、ＨＤＤ検索スレッドにより検索されるＨＤＤｂに格納されたデータが開始時刻Ｔｓを含まず、終了時刻Ｔｅを含む場合を示す。この場合、最初のデータが格納されたアドレスが、開始アドレスＳＴＡＲＴとして求められ、終了時刻Ｔｅに対応するデータが、終了アドレスＥＮＤとして求められる。
【０２５５】
なお、図２４で説明したように、データが複数のＨＤＤに順次に書き込まれる場合、ＨＤＤの切り替わり時に、データは、２つのＨＤＤに重複して書き込まれる。例えば、図３２に示したＨＤＤａとＨＤＤｂの重複部分は、ＨＤＤａからＨＤＤｂへの切り替わり動作を示す。
【０２５６】
図３２（Ｃ）は、ＨＤＤ検索スレッドにより検索されるＨＤＤｃに格納されたデータが開始時刻Ｔｓおよび終了時刻Ｔｅのいずれも含まず、開始時刻Ｔｓと終了時刻Ｔｅとの間にある場合を示す。この場合、最初のデータが格納されたアドレスが、開始アドレスＳＴＡＲＴとして求められ、最後のデータが格納されたアドレスが、終了アドレスＥＮＤとして求められる。
【０２５７】
図３２（Ｄ）は、ＨＤＤ検索スレッドにより検索されるＨＤＤｄに格納されたデータが開始時刻Ｔｓおよび終了時刻Ｔｅの両方を含む場合を示す。この場合、開始時刻Ｔｓに対応するデータが格納されたアドレスが、開始アドレスＳＴＡＲＴとして求められ、終了時刻Ｔｅに対応するデータが、終了アドレスＥＮＤとして求められる。
【０２５８】
図３３は、図３１に示したステップＳ７１０により起動される開始アドレス検索ルーチンの例を示す。開始アドレス検索ルーチンは、ＨＤＤ検索スレッドから起動され、マザーボードＭＢのＣＰＵにより、検索するＨＤＤ毎に実行される。開始アドレス検索ルーチンは、図３２に示した開始アドレスＳＴＡＲＴを算出する。
【０２５９】
まず、ステップＳ７１２において、開始アドレス検索ルーチンは、変数ＬＯＷＥＲにＨＤＤの先頭アドレスを格納する。次に、ステップＳ７１４において、開始アドレス検索ルーチンは、変数ＵＰＰＥＲにＨＤＤの末尾アドレスを格納する。
【０２６０】
次に、ステップＳ８００において、開始アドレス検索ルーチンは、タイムスタンプ読み出しルーチンを起動し、変数ＬＯＷＥＲをパラメータとして、ＨＤＤに最初に格納されたデータのキャプチャ時刻であるタイムスタンプを読み出す。以降の説明では、符号ＴＭＳは、タイムスタンプおよびタイムスタンプの値（すなわち、データがキャプチャされた時刻）を示す。
【０２６１】
次に、ステップＳ７１６において、開始アドレス検索ルーチンは、タイムスタンプＴＭＳで示される時刻が検索キーＫＥＹに含まれる開始時刻Ｔｓより遅いか否かを判定する。タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓより遅い場合（ＴＭＳ＞Ｔｓ）、処理はステップＳ７１８に移行される。例えば、図３２（Ｂ）、図３２（Ｃ）では、ステップＳ７１８が実行される。一方、タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓと等しいか開始時刻Ｔｓより早い場合、処理はステップＳ８３０に移行される。例えば、図３２（Ａ）、図３２（Ｄ）では、ステップＳ８３０が実行される。
【０２６２】
ステップＳ７１８において、開始アドレス検索ルーチンは、図３２（Ｂ）、図３２（Ｃ）に示したように、ＨＤＤの先頭アドレスを開始アドレスＳＴＡＲＴに設定する。一方、図３２（Ａ）、図３２（Ｄ）に示したように、開始時刻Ｔｓに対応するデータがＨＤＤの記憶領域の途中に格納された場合、ステップＳ８３０において、開始アドレス検索ルーチンは、開始アドレス検出ルーチンを起動し、二分探索法を用いて、開始アドレスＳＴＡＲＴを求める。
【０２６３】
図３４は、図３１に示したステップＳ７４０により起動される終了アドレス検索ルーチンの例を示す。終了アドレス検索ルーチンは、ＨＤＤ検索スレッドから起動され、マザーボードＭＢのＣＰＵにより、検索するＨＤＤ毎に実行される。終了アドレス検索ルーチンは、図３２に示した終了アドレスＥＮＤを算出する。
【０２６４】
まず、ステップＳ７４２において、終了アドレス検索ルーチンは、変数ＬＯＷＥＲにＨＤＤの先頭アドレスを格納する。次に、ステップＳ７４４において、終了アドレス検索ルーチンは、変数ＵＰＰＥＲにＨＤＤの末尾アドレスを格納する。
【０２６５】
次に、ステップＳ８００において、終了アドレス検索ルーチンは、タイムスタンプ読み出しルーチンを起動し、変数ＵＰＰＥＲをパラメータとして、ＨＤＤに最後に格納されたデータのキャプチャ時刻であるタイムスタンプＴＭＳを読み出す。
【０２６６】
次に、ステップＳ７４６において、終了アドレス検索ルーチンは、タイムスタンプＴＭＳで示される時刻が検索キーＫＥＹに含まれる終了時刻Ｔｅより早いか否かを判定する。タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅより早い場合（ＴＭＳ＜Ｔｅ）、処理はステップＳ７４８に移行される。例えば、図３２（Ａ）、図３２（Ｃ）では、ステップＳ７４８が実行される。一方、タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅと等しいか終了時刻Ｔｅより遅い場合、処理はステップＳ８６０に移行される。例えば、図３２（Ｂ）、図３２（Ｄ）では、ステップＳ８６０が実行される。
【０２６７】
ステップＳ７４８において、終了アドレス検索ルーチンは、図３２（Ａ）、図３２（Ｃ）に示したように、ＨＤＤの末尾アドレスを終了アドレスＥＮＤに設定する。一方、図３２（Ｂ）、図３２（Ｄ）に示したように、終了時刻Ｔｅに対応するデータがＨＤＤの記憶領域の途中に格納された場合、ステップＳ８６０において、終了アドレス検索ルーチンは、終了アドレス検出ルーチンを起動し、二分探索法を用いて、終了アドレスＥＮＤを求める。
【０２６８】
図３５は、図３３に示したステップＳ８３０により起動される開始アドレス検出ルーチンの例を示す。開始アドレス検出ルーチンは、マザーボードＭＢのＣＰＵにより、検索するＨＤＤ毎に実行される。開始アドレス検出ルーチンでは、二分探索法により、ＨＤＤの記憶領域の途中にある開始アドレスＳＴＡＲＴ（図３２（Ａ）、図３２（Ｄ））が検出される。
【０２６９】
まず、ステップＳ８３２において、開始アドレス検出ルーチンは、ＨＤＤの先頭アドレス（ＬＯＷＥＲ）と末尾アドレス（ＵＰＰＥＲ）の中間のアドレスを変数ＣＥＮＴＥＲに設定する。以降の説明では、変数ＣＥＮＴＥＲに設定された値は、中央アドレスＣＥＮＴＥＲとも称される。
【０２７０】
次に、ステップＳ８００において、開始アドレス検出ルーチンは、タイムスタンプ読み出しルーチンを起動し、ＨＤＤの中央アドレスＣＥＮＴＥＲの記憶領域に格納されたデータのキャプチャ時刻であるタイムスタンプを読み出す。開始アドレス検出ルーチンは、読み出したタイムスタンプの値を変数ＴＭＳに設定する。
【０２７１】
次に、ステップＳ８３６において、開始アドレス検出ルーチンは、タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓであるか否かを判定する。タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓである場合、開始アドレスＳＴＡＲＴが検出されたため、処理はステップＳ８４８に移行される。タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓでない場合、開始アドレスＳＴＡＲＴを検出するために処理はステップＳ８３８に移行される。
【０２７２】
ステップＳ８３８において、開始アドレス検出ルーチンは、タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓより遅いか否かを判定する。タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓより遅い場合（ＴＭＳ＞Ｔｓ）、開始アドレスＳＴＡＲＴが中央アドレスＣＥＮＴＥＲより先頭アドレスＬＯＷＥＲ側にあるため、処理はステップＳ８４０に移行される。タイムスタンプＴＭＳで示される時刻が開始時刻Ｔｓより早い場合、開始アドレスＳＴＡＲＴが中央アドレスＣＥＮＴＥＲより末尾アドレスＵＰＰＥＲ側にあるため、処理はステップＳ８４２に移行される。
【０２７３】
ステップＳ８４０において、開始アドレス検出ルーチンは、中央アドレスＣＥＮＴＥＲよりアドレス値が小さい側を検索するために、中央アドレスＣＥＮＴＥＲを新たな末尾アドレスＵＰＰＥＲに設定し、処理をステップＳ８４４に移行する。一方、ステップＳ８４２において、開始アドレス検出ルーチンは、中央アドレスＣＥＮＴＥＲよりアドレス値が大きい側を検索するために、中央アドレスＣＥＮＴＥＲを新たな先頭アドレスＬＯＷＥＲに設定し、処理をステップＳ８４４に移行する。
【０２７４】
ステップＳ８４４において、開始アドレス検出ルーチンは、検索する領域が図９に示したデータユニットのサイズより小さくなったか否かを判定する。例えば、開始アドレス検出ルーチンは、現在の末尾アドレスＵＰＰＥＲと現在の先頭アドレスＬＯＷＥＲの差と、データユニットのサイズとを比較する。データユニットのサイズは、最大のデータサイズとタイムスタンプのサイズとセパレータのサイズの和である。検索する領域がデータユニットのサイズより小さくなった場合、二分探索を終了し、処理はステップＳ８４６に移行する。検索する領域がデータユニットのサイズ以上の場合、処理はステップＳ８３２に戻り、二分された新たな領域が検索される。
【０２７５】
ステップＳ８４６において、開始アドレス検出ルーチンは、現在の先頭アドレスＬＯＷＥＲを開始アドレスＳＴＡＲＴに設定し、処理を終了する。一方、ステップＳ８４８において、開始アドレス検出ルーチンは、現在の中央アドレスＣＥＮＴＥＲを開始アドレスＳＴＡＲＴに設定し、処理を終了する。
【０２７６】
図３６は、図３４に示したステップＳ８６０により起動される終了アドレス検出ルーチンの例を示す。終了アドレス検出ルーチンは、マザーボードＭＢのＣＰＵにより、検索するＨＤＤ毎に実行される。終了アドレス検出ルーチンでは、二分探索法により、ＨＤＤの記憶領域の途中にある終了アドレスＥＮＤ（図３２（Ｂ）、図３２（Ｄ））が検出される。
【０２７７】
まず、ステップＳ８６２において、終了アドレス検出ルーチンは、ＨＤＤの先頭アドレス（ＬＯＷＥＲ）と末尾アドレス（ＵＰＰＥＲ）の中間のアドレスを変数ＣＥＮＴＥＲに設定する。次に、ステップＳ８００において、終了アドレス検出ルーチンは、タイムスタンプ読み出しルーチンを起動し、ＨＤＤの中央アドレスＣＥＮＴＥＲの記憶領域に格納されたデータのキャプチャ時刻であるタイムスタンプを読み出す。終了アドレス検出ルーチンは、読み出したタイムスタンプの値を変数ＴＭＳに設定する。
【０２７８】
次に、ステップＳ８６６において、終了アドレス検出ルーチンは、タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅであるか否かを判定する。タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅである場合、終了アドレスＥＮＤが検出されたため、処理はステップＳ８７８に移行される。タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅでない場合、終了アドレスＥＮＤを検出するために処理はステップＳ８６８に移行される。
【０２７９】
ステップＳ８６８において、終了アドレス検出ルーチンは、タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅより遅いか否かを判定する。タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅより遅い場合（ＴＭＳ＞Ｔｅ）、終了アドレスＥＮＤが中央アドレスＣＥＮＴＥＲより先頭アドレスＬＯＷＥＲ側にあるため、処理はステップＳ８７０に移行される。タイムスタンプＴＭＳで示される時刻が終了時刻Ｔｅより早い場合、終了アドレスＥＮＤが中央アドレスＣＥＮＴＥＲより末尾アドレスＵＰＰＥＲ側にあるため、処理はステップＳ８７２に移行される。
【０２８０】
ステップＳ８７０において、終了アドレス検出ルーチンは、中央アドレスＣＥＮＴＥＲよりアドレス値が小さい側を検索するために、中央アドレスＣＥＮＴＥＲを新たな末尾アドレスＵＰＰＥＲに設定し、処理をステップＳ８７４に移行する。一方、ステップＳ８７２において、終了アドレス検出ルーチンは、中央アドレスＣＥＮＴＥＲよりアドレス値が大きい側を検索するために、中央アドレスＣＥＮＴＥＲを新たな先頭アドレスＬＯＷＥＲに設定し、処理をステップＳ８７４に移行する。
【０２８１】
ステップＳ８７４において、終了アドレス検出ルーチンは、図３５に示したステップＳ８４４と同様に、検索する領域が図１９に示したデータユニットのサイズより小さくなったか否かを判定する。検索する領域がデータユニットのサイズより小さくなった場合、二分探索を終了し、処理はステップＳ８７６に移行する。検索する領域がデータユニットのサイズ以上の場合、処理はステップＳ８６２に戻り、二分された新たな領域が検索される。
【０２８２】
ステップＳ８７６において、終了アドレス検出ルーチンは、現在の末尾アドレスＵＰＰＥＲを終了アドレスＥＮＤに設定し、処理を終了する。一方、ステップＳ８７８において、終了アドレス検出ルーチンは、現在の中央アドレスＣＥＮＴＥＲを終了アドレスＥＮＤに設定し、処理を終了する。
【０２８３】
図３７は、図３３、図３４、図３５、図３６に示したステップＳ８００により起動されるタイムスタンプ読み出しルーチンの例を示す。タイムスタンプ読み出しルーチンは、マザーボードＭＢのＣＰＵにより、検索するＨＤＤ毎に実行される。
【０２８４】
まず、ステップＳ８０２において、タイムスタンプ読み出しルーチンは、図１９に示したデータユニットのサイズを変数ＲＳＩＺＥに設定する。以降の説明では、データユニットのサイズは、サイズＲＳＩＺＥとも称される。サイズＲＳＩＺＥは、図１９に示したセパレータのサイズと、タイムスタンプのサイズと、最大のデータサイズとの和である。
【０２８５】
次に、ステップＳ８０４において、タイムスタンプ読み出しルーチンは、ＨＤＤの先頭アドレスを変数ＬＯＷＥＲに格納する。なお、タイムスタンプ読み出しルーチンは、図３３に示したステップＳ７１２および図３４に示したステップＳ７４２の変数ＬＯＷＥＲを参照可能なとき、ステップＳ８０４は省略可能である。
【０２８６】
次に、ステップＳ８０６において、タイムスタンプ読み出しルーチンは、開始アドレス検索ルーチンまたは終了アドレス検索ルーチンの引数ＡＤＤＲからサイズＲＳＩＺＥを引いたアドレスが変数ＬＯＷＥＲ（先頭アドレス）より小さいか否かを判定する。
【０２８７】
例えば、引数ＡＤＤＲは、開始アドレス検索ルーチンではＨＤＤの先頭アドレスを示し、終了アドレス検索ルーチンではＨＤＤの末尾アドレスを示す。また、引数ＡＤＤＲは、ＳＴＡＲＴ検出ルーチンおよびＥＮＤ検出ルーチンでは、ＨＤＤの記憶領域の途中のアドレスを示す。
【０２８８】
引数ＡＤＤＲからサイズＲＳＩＺＥを引いたアドレスが先頭アドレスより小さい場合、処理はステップＳ８０８に移行される。引数ＡＤＤＲからサイズＲＳＩＺＥを引いたアドレスが先頭アドレス以上の場合、処理はステップＳ８１０に移行される。
【０２８９】
ステップＳ８０８において、タイムスタンプ読み出しルーチンは、変数ＬＯＷＥＲ（先頭アドレス）からサイズＲＳＩＺＥ分のデータを読み出し、処理をステップＳ８１２に移行する。ステップＳ８１０において、タイムスタンプ読み出しルーチンは、引数ＡＤＤＲからサイズＲＳＩＺＥを引いたアドレスからサイズＲＳＩＺＥ分のデータを読み出し、処理をステップＳ８１２に移行する。
【０２９０】
ステップＳ８１２において、タイムスタンプ読み出しルーチンは、読み出したデータを先頭から検索し、セパレータを検出する。次に、ステップＳ８１４において、タイムスタンプ読み出しルーチンは、検出したセパレータの直後に位置するタイムスタンプを読み出す。次に、ステップＳ８１６において、タイムスタンプ読み出しルーチンは、読み出したタイムスタンプの値を変数ＴＭＳに設定し、呼び出し元に戻る。
【０２９１】
図３８は、図５に示した情報処理システムＳＹＳが実行する検査動作のシーケンスの例を示す。すなわち、図３８は、キャプチャ用のＨＤＤの検査装置として動作する情報処理システムＳＹＳのシーケンスの例を示す。以下の説明では、図７に示した管理装置４００の動作は、管理装置４００のＣＰＵ４による動作を含み、マザーボードＭＢの動作は、マザーボードＭＢのＣＰＵによる動作を含む。
【０２９２】
なお、検査動作は、複数のマザーボードＭＢをキャプチャ用のＨＤＤの検査を実行する検査サーバとして動作させることで実行されるが、図３８では説明を簡単にするために、１つのマザーボードＭＢｍ（ｍは正の整数）による検査動作を示す。
【０２９３】
検査スレッドは、管理プロセスが起動されたのち、外部からの検査要求等を受信することなく管理プロセスにより起動される（図３８（ａ））。検査スレッドは、例えば、図５に示したマザーボードプール１００内で未使用のマザーボードＭＢｍとストレージプール２００内で未使用の起動用のＨＤＤｎ（ｎは正の整数）とを接続する制御情報を接続装置３００に出力する。接続装置３００は、制御情報に基づいてマザーボードＭＢｍとＨＤＤｎとを接続する。検査スレッドは、マザーボードＭＢｍとＨＤＤｎとが互いに接続された後、マザーボードＭＢｍを介してＨＤＤｎにＯＳおよび検査プログラムＣＨＫＰをインストールする。例えば、インストールは、キックスタートなどのリモートインストール手法により、図５に示した記憶装置ＢＴからデータを転送することにより実行される。
【０２９４】
ＨＤＤｎへのＯＳおよび検査プログラムＣＨＫＰのインストール後、マザーボードＭＢｍは再起動される。マザーボードＭＢｍのＣＰＵは、ＯＳの実行を開始し、ＨＤＤｎのアクセスを開始する。また、マザーボードＭＢｎは、インストールが完了したことを示す完了応答を検査スレッドに送信する（図３８（ｂ））。
【０２９５】
検査スレッドは、インストールの完了応答の受信に基づいて、例えば、マザーボードＭＢｍとキャプチャ動作を実行していないＨＤＤ１−ＨＤＤ４とを接続する制御情報を接続装置３００に出力する（図３８（ｃ））。接続装置３００は、制御情報に基づいてマザーボードＭＢｍとＨＤＤ１−ＨＤＤ４とを接続する。
【０２９６】
なお、図３８から図５５に示す例では、データが一対のＨＤＤに冗長に書き込まれる。例えば、データは、ＨＤＤ１とＨＤＤ２に冗長に書き込まれ、ＨＤＤ３とＨＤＤ４に冗長に書き込まれる。すなわち、情報処理システムＳＹＳは、データをミラーリングするＲＡＩＤ１の機能を有する。
【０２９７】
次に、検査スレッドは、マザーボードＭＢｍに検査プロセスを起動する指示を出力する。マザーボードＭＢｍは、検査プロセスを起動する指示に基づいて、検査プロセスを開始する（図３８（ｄ））。検査プロセスは、ＨＤＤ１−ＨＤＤ４の検査を開始し、ＨＤＤ１−ＨＤＤ４の検査の終了後に検査結果を検査スレッドに送信する（図３８（ｅ））。
【０２９８】
検査スレッドは、ＨＤＤ１−ＨＤＤ４の検査の終了後、マザーボードＭＢｍとＨＤＤ１−ＨＤＤ４との接続を解除する制御情報を接続装置３００に出力する（図３８（ｆ））。接続装置３００は、制御情報に基づいてマザーボードＭＢｍとＨＤＤ１−ＨＤＤ４との接続を解除する。
【０２９９】
この後、検査スレッドは、マザーボードＭＢｍとキャプチャ動作を実行していない次のＨＤＤ５−ＨＤＤ８とを接続する制御情報を接続装置３００に出力する（図３８（ｇ））。接続装置３００は、制御情報に基づいてマザーボードＭＢｍとＨＤＤ５−ＨＤＤ８とを接続する。
【０３００】
検査スレッドは、マザーボードＭＢｍに検査プロセスを起動する指示を出力する。マザーボードＭＢｍは、検査プロセスを起動する指示に基づいて、検査プロセスを開始する（図３８（ｈ））。そして、検査スレッドは、ＨＤＤ１−ＨＤＤ４の検査と同様にＨＤＤ５−ＨＤＤ８の検査を実行し、検査結果を検査スレッドに送信する。以降、キャプチャ動作を実行していないＨＤＤの検査が順に実行される。
【０３０１】
図３９は、図３８に示した検査プロセスの起動時のテーブルの状態の例を示す。なお、図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。この例では、図３８に示したマザーボードＭＢｍは、マザーボードＭＢ３であり、ＨＤＤｎはＨＤＤ３１であるとする。図３９において、網掛けで示した領域は、図３８に示した検査スレッドが、検査プロセスを起動する前に設定する箇所を示す。
【０３０２】
図３８に示したように、検査スレッドは、検査プロセスを起動する前に、マザーボードＭＢ３とＨＤＤ３１とを接続し、マザーボードＭＢ３に検査プログラムＣＨＫＰをインストールする。このため、検査スレッドは、マザーボードＭＢ３およびＨＤＤ３１の接続を示す情報をテーブルＣＮＴＢＬに追加する。また、検査スレッドは、テーブルＭＳＴＢＬにおけるマザーボードＭＢ３の状態を”検査”に設定し、テーブルＨＳＴＢＬにおけるＨＤＤ３１の状態を”起動用”に設定する。
【０３０３】
なお、テーブルＨＳＴＢＬ中の”ミラー”の矢印で示すは、２つのＨＤＤが共通のデータを保持することを表す。すなわち、２つのＨＤＤがミラーリングされることで、一方のＨＤＤが故障した場合に、破壊されたデータは、他方のＨＤＤに保持されたデータを用いて復元可能である。
【０３０４】
図４０は、図３８に示した検査プロセスを実行中のテーブルの状態の例を示す。図４０において、網掛けで示した領域は、図３９に対して変化した箇所を示す。なお、図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。
【０３０５】
検査スレッドは、検査プログラムＣＨＫＰを実行するマザーボードＭＢ３と、ＨＤＤ（この例では、ＨＤＤ１、ＨＤＤ２、ＨＤＤ３、ＨＤＤ４）とを接続し、ＨＤＤを検査する。このため、検査スレッドは、マザーボードＭＢ３およびＨＤＤ１−ＨＤＤ４の接続を示す情報をテーブルＣＮＴＢＬに追加し、テーブルＨＳＴＢＬにおけるＨＤＤ１−ＨＤＤ４の状態を”検査中”に設定する。また、検査スレッドは、検査するＨＤＤ１−ＨＤＤ４と、各ＨＤＤ１−ＨＤＤ４の検査を開始する時刻ｔ３３、ｔ３４、ｔ３５、ｔ３６をテーブルＣＨＫＴＢＬに格納する。テーブルＴＢＬのその他の状態は、図３９と同様である。
【０３０６】
この実施形態では、例えば、データのキャプチャ動作は、マザーボードＭＢ１、ＭＢ２で実行され、データの検査動作は、マザーボードＭＢ１、ＭＢ２とは異なるマザーボードＭＢ３で実行される。このため、図１から図４に示した実施形態と同様に、キャプチャ動作を実行するマザーボードＭＢ１、ＭＢ２は、音声データのようにスループットの高いデータを、検査の実行の影響を受けることなく、ＨＤＤに安定して書き込みできる。また、検査動作を実行するマザーボードＭＢ３は、リアルタイムで実行されるデータのキャプチャ動作の割り込みを受けることなく、検査動作を集中して実行できる。
【０３０７】
図４１は、図１６に示したステップＳ４００により起動される検査スレッドの例を示す。検査スレッドは、管理装置４００のＣＰＵ４が制御プログラムを実行することにより実現される。
【０３０８】
まず、ステップＳ４０２において、検査スレッドは、検査サーバとして動作させるマザーボードＭＢの数を変数Ｎに設定し、各マザーボードＭＢが検査するＨＤＤの数を変数Ｍに設定する。変数Ｎ、Ｍに設定する値は、管理プロセスにより予め決められ、あるいは、図９に示したキャプチャ開始の指示とともにコンソールＣＮＳＬから指示される。
【０３０９】
次に、ステップＳ４０４において、検査スレッドは、図３９に示したように、テーブルＣＨＫＴＢＬを”ｎｕｌｌ”に初期化する。次に、ステップＳ４０６において、検査スレッドは、Ｍ個のマザーボードＭＢを選択したか否かを判定する。Ｍ個のマザーボードＭＢが選択された場合、処理はステップＳ４１６に移行され、Ｍ個のマザーボードＭＢが選択されていない場合、処理はステップＳ４０８に移行される。
【０３１０】
ステップＳ４０８において、検査スレッドは、テーブルＭＳＴＢＬを参照し、未使用のマザーボードＭＢのいずれかを選択する。次に、ステップＳ４１０において、検査スレッドは、テーブルＨＳＴＢＬを参照し、起動用のＨＤＤのうち未使用のＨＤＤを選択する。
【０３１１】
次に、ステップＳ４１２において、検査スレッドは、接続装置３００を制御することにより、選択したマザーボードＭＢと選択した起動用のＨＤＤとを互いに接続する。次に、ステップＳ４１４において、検査スレッドは、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬを更新する。更新されたテーブルＴＢＬの状態の例は、図３９に示す。そして、検査スレッドは、検査動作を実行する全てのマザーボードＭＢを選択するまで、ステップＳ４０８、Ｓ４１０、Ｓ４１２、Ｓ４１４の処理を繰り返す。
【０３１２】
検査動作を実行する全てのマザーボードＭＢが選択された場合、ステップＳ４１６からＳ４４２において、検査スレッドは、選択したＭ個のマザーボードＭＢにＯＳと検査プログラムＣＨＫＰをそれぞれインストールする。まず、ステップＳ４１６において、検査スレッドは、選択したＭ個のマザーボードＭＢの初期化が完了したか否かを判定する。Ｍ個のマザーボードＭＢの初期化が完了した場合、処理はステップＳ４２４に移行し、初期化が完了していない場合、処理はステップＳ４１８に移行する。ステップＳ４１８、Ｓ４２０、Ｓ４２２、４２４の処理は、インストールされるプログラムが異なることを除き、図１７に示したステップＳ２１６、Ｓ２１８、Ｓ２２０、Ｓ２２２の処理と同様のため、説明は省略する。
【０３１３】
次に、検査スレッドは、ステップＳ４３０において、検査するＨＤＤの選択ルーチンを起動し、ステップＳ４５０において、検査プロセスの起動ルーチンを起動し、ステップＳ４７０において、検査結果の受信ルーチンを起動する。検査するＨＤＤの選択ルーチンの例は、図４２に示し、検査プロセスの起動ルーチンの例は、図４３に示し、検査結果の受信ルーチンの例は、図４４に示す。
【０３１４】
次に、ステップＳ４２６において、検査スレッドは、検査プロセスから受信した検査結果にＨＤＤのエラーを示す情報が含まれるか否かを判定する。エラーを示す情報が含まれる場合、処理はステップＳ９００に移行される。ＨＤＤのエラーを示す情報が含まれない場合、処理はステップＳ４３０に戻り、次のキャプチャ用のＨＤＤの検査が実行される。ここで、ＨＤＤのエラーは、ＨＤＤの故障またはＨＤＤの記憶領域に発生した修復可能なエラーである。
【０３１５】
ステップＳ９００において、検査スレッドは、エラーを回復するコピー処理ルーチンを起動した後、処理をステップＳ４３０に戻す。コピー処理ルーチンの例は、図５２、図５３、図５４に示す。
【０３１６】
図４２は、図４１に示したステップＳ４３０により呼び出される検査するＨＤＤの選択ルーチンの例を示す。検査するＨＤＤの選択ルーチンは、管理装置４００のＣＰＵ４により実行される。
【０３１７】
まず、ステップＳ４３２において、選択ルーチンは、図４１に示したステップＳ４０２と同様に、検査サーバとして起動したマザーボードＭＢの数を変数Ｎに設定し、各マザーボードＭＢが検査するＨＤＤの数を変数Ｍに設定する。
【０３１８】
次に、ステップＳ４３４において、選択ルーチンは、リストＨＤＤＬＩＳＴ１を”ｎｕｌｌ”に初期化する。リストＨＤＤＬＩＳＴ１には、検査するＨＤＤを示す情報（ＨＤＤの番号等）が格納される。
【０３１９】
次に、ステップＳ４３６において、選択ルーチンは、並列して検査可能なＨＤＤがリストＨＤＤＬＩＳＴ１に保持されたか否かを判定する。例えば、並列して検査可能なＨＤＤは、起動したマザーボードＭＢの数Ｎと、各マザーボードＭＢが検査するＨＤＤの数Ｍとの積である。検査対象の全てのＨＤＤがリストＨＤＤＬＩＳＴ１に格納された場合、処理は終了し、検査対象のＨＤＤのいずれかがリストＨＤＤＬＩＳＴ１に格納されていない場合、処理はステップＳ４３８に移行する。
【０３２０】
ステップＳ４３８において、選択ルーチンは、前回の検査から最も時間が経過した待機中のＨＤＤを選択する。次に、ステップＳ４４０において、選択ルーチンは、リストＨＤＤＬＩＳＴ１を書き換えることで、ステップＳ４３８で選択したＨＤＤをリストＨＤＤＬＩＳＴ１に追加する。次に、ステップＳ４４２において、選択ルーチンは、図７に示したテーブルＣＨＫＴＢＬを更新し、処理をステップＳ４３６に戻す。
【０３２１】
図４３は、図４１に示したステップＳ４５０により呼び出される検査プロセスの起動ルーチンの例を示す。検査プロセスの起動ルーチンは、管理装置４００のＣＰＵ４により実行される。
【０３２２】
まず、ステップＳ４５２において、起動ルーチンは、Ｎ個のマザーボードＭＢの検査プロセスが起動されたか否かを判定する。Ｎ個のマザーボードＭＢの検査プロセスが起動された場合、処理は終了し、検査プロセスが起動されていないマザーボードＭＢがある場合、処理はステップＳ４５４に移行される。
【０３２３】
ステップＳ４５４において、起動ルーチンは、検査プロセスが起動されていないマザーボードＭＢの１つを選択する。次に、ステップＳ４５６において、起動ルーチンは、リストＨＤＤＬＩＳＴ１に格納されたＨＤＤの情報の中からＭ個の情報を取り出す。
【０３２４】
次に、ステップＳ４５８において、起動ルーチンは、選択したマザーボードＭＢとリストＨＤＤＬＩＳＴ１から取り出したＭ個のＨＤＤとを接続する。次に、ステップＳ４６０において、起動ルーチンは、テーブルＣＮＴＢＬ、ＨＳＴＢＬ、ＣＨＫＴＢＬを更新する。更新されたテーブルＴＢＬの状態の例は、図４０に示す。そして、ステップＳ１０００において、起動ルーチンは、ステップＳ４５４で選択したマザーボードＭＢの検査プロセスを起動し、処理をステップＳ４５２に戻す。検査プロセスの例は、図４５に示す。
【０３２５】
図４４は、図４１に示したステップＳ４７０により呼び出される検査結果の受信ルーチンの例を示す。検査結果の受信ルーチンは、管理装置４００のＣＰＵ４により実行される。
【０３２６】
まず、ステップＳ４７２において、受信ルーチンは、リストＲＳＬＴＬＩＳＴ４を”ｎｕｌｌ”に初期化する。例えば、リストＲＳＬＴＬＩＳＴ４には、検査結果が格納され、あるいは、検査結果が格納される記憶領域のアドレスが格納される。
【０３２７】
次に、ステップＳ４７４において、受信ルーチンは、検査サーバとして動作する全てのマザーボードＭＢの検査結果を受信したか否かを判定する。全てのマザーボードＭＢからの検査結果が受信された場合、処理は終了し、検査結果が受信されないマザーボードＭＢがある場合、処理はステップＳ４７６に移行される。
【０３２８】
ステップＳ４７６において、受信ルーチンは、検査サーバとして動作するマザーボードＭＢのいずれかからＭ個のＨＤＤの検索結果を受信したか否かを判定する。検査結果が受信された場合、処理はステップＳ４７８に移行され、検査結果が受信されない場合、処理はステップＳ４７４に戻る。すなわち、ステップＳ４７６では、受信ルーチンは、検査結果の受信を待つ。
【０３２９】
ステップＳ４７８において、検査結果を受信した受信ルーチンは、リストＲＳＬＴＬＩＳＴ４に検索結果を追加する。次に、ステップＳ４８０において、受信ルーチンは、接続装置３００を制御することにより、検査結果を出力したマザーボードＭＢと検査対象のＭ個のＨＤＤとの接続を解除する。
【０３３０】
次に、ステップＳ４８２において、受信ルーチンは、接続を解除したＨＤＤに合わせて、テーブルＣＮＴＢＬ、ＨＳＴＢＬを更新した後、ステップＳ４７４に戻る。
【０３３１】
図４５は、図４３に示したステップＳ１０００により起動される検査プロセスの例を示す。
【０３３２】
まず、ステップＳ１００２において、検査プロセスは、検査スレッドから検査を実行するＨＤＤの番号を、例えば、コマンドライン等を用いて受信し、受信したＨＤＤの番号をリストＨＤＤＬＩＳＴ２に登録する。また、検査プロセスは、検査結果を格納する検査リストＣＨＫＬＩＳＴを”ｎｕｌｌ”に初期化する。
【０３３３】
次に、ステップＳ１００４において、検査プロセスは、検査するＨＤＤがマザーボードＭＢに接続されるのを待つ。次に、ステップＳ１００６において、検査プロセスは、マザーボードＭＢに接続されたＨＤＤにアクセス可能か否かを判定する。アクセス可能な場合、ＨＤＤに故障が発生していないため、処理はステップＳ１０１２に移行される。アクセスエラーが発生する場合、ＨＤＤが故障したため、処理はステップＳ１００８に移行される。例えば、アクセスエラーは、ＨＤＤの複数の記憶領域に対する書き込みアクセスおよび読み出しアクセスの少なくともいずれかでエラーが発生する場合に認識される。
【０３３４】
ステップＳ１００８において、検査プロセスは、故障したＨＤＤの番号を検査リストＣＨＫＬＩＳＴに登録する。次に、ステップＳ１０１０において、検査プロセスは、故障したＨＤＤの番号を検査スレッドから受信したリストＨＤＤＬＩＳＴ２から削除する。
【０３３５】
ステップＳ１０１２において、検査プロセスは、検査していないＨＤＤがあるか否かを判定する。検査していないＨＤＤがある場合、処理はステップＳ１０１４に移行され、検査対象の全てのＨＤＤが検査された場合、処理はステップＳ１０２２に移行される。
【０３３６】
ステップＳ１０１４において、検査プロセスは、検査していないＨＤＤを選択する。次に、ステップＳ１０１６において、検査プロセスは、ＨＤＤにアクセスし、バッドブロックのチェック結果を読み出す。バッドブロックは、ＨＤＤの記憶領域であるブロックのうち、データの読み出し時または書き込み時にエラーが発生するブロックである。バッドブロックは、他のブロックと置き換え、使用禁止にすることでエラーをなくすことが可能である。例えば、バッドブロックのチェックは、ＨＤＤのメディアチェック機能を利用して実行される。
【０３３７】
次に、ステップＳ１０１８において、検査プロセスは、バッドブロックのチェック結果に基づいて、バッドブロックがあるか否かを判定する。バッドブロックがある場合、処理はステップＳ１０２０に移行され、バッドブロックがない場合、処理はステップＳ１０１２に戻る。ステップＳ１０２０において、検査プロセスは、検出されたバッドブロックとバッドブロックを示すアドレスとを、ＨＤＤの番号とともに検査リストＣＨＫＬＩＳＴに登録する。この後、処理はステップＳ１０１２に戻る。
【０３３８】
一方、検査対象の全てのＨＤＤの検査が完了した場合、ステップＳ１０２２において、検査プロセスは、管理装置４００が実行する検査スレッドに、検査リストＣＨＫＬＩＳＴの内容を送信する。そして、検査プロセスが完了する。
【０３３９】
図４６は、図５に示した情報処理システムが実行するコピー動作のシーケンスの例を示す図である。すなわち、図４６は、ＨＤＤのデータのコピー装置として動作する情報処理システムＳＹＳのシーケンスの例を示す。コピー動作のシーケンスは、図４１に示した検査スレッドにおいて、ＨＤＤの故障が検出され、またはＨＤＤのバッドブロックが検出された場合に実行される。以下の説明では、図７に示した管理装置４００の動作は、管理装置４００のＣＰＵ４による動作を含み、マザーボードＭＢの動作は、マザーボードＭＢのＣＰＵによる動作を含む。
【０３４０】
なお、コピー動作は、複数のマザーボードＭＢをＨＤＤのデータのコピーを実行するコピーサーバとして動作させることで実行されるが、図４６では説明を簡単にするために、１つのマザーボードＭＢｍ（ｍは正の整数）によるコピー動作を示す。
【０３４１】
検査スレッドは、図３８と同様に、制御装置３００を制御して、マザーボードＭＢｍとＨＤＤｎとを接続する。検査スレッドは、図３８と同様に、マザーボードＭＢｍとＨＤＤｎとの接続後、マザーボードＭＢｍを介してＨＤＤｎにＯＳおよびコピープログラムＣＰＹＰ等のプログラムをインストールする（図４６（ａ））。
【０３４２】
検査スレッドは、ＨＤＤｎへのＯＳおよびコピープログラムＣＰＹＰのインストール後、マザーボードＭＢｍを再起動する。マザーボードＭＢｍのＣＰＵは、ＯＳの実行を開始し、ＨＤＤｎのアクセスを開始する。また、マザーボードＭＢｎは、インストールが完了したことを示す完了応答を検査スレッドに送信する（図４６（ｂ））。
【０３４３】
インストール完了の受信後、検査スレッドは、接続装置３００を制御して、マザーボードＭＢｍと不具合のあるＨＤＤとミラー関係にあるＨＤＤ(例えば、ＨＤＤ１）、ＨＤＤｘとを接続する（図４６（ｃ））。ここで、ＨＤＤｘは、不具合のあるＨＤＤと置き換えられるＨＤＤ、または不具合のあるＨＤＤ（例えば、ＨＤＤ１とミラー関係にあるＨＤＤ）である。
【０３４４】
次に、検査スレッドは、マザーボードＭＢｍにコピープロセスを起動する指示を出力する。マザーボードＭＢｍは、コピープロセスを起動する指示に基づいて、コピープロセスを開始する（図４６（ｄ））。コピープロセスは、ＨＤＤ１に保持されたデータをＨＤＤｘにコピーする処理を実行する。例えば、ＨＤＤｘは、検査スレッドによりＨＤＤの故障が検出された場合、スペア用の未使用のＨＤＤである。ＨＤＤｘは、検査スレッドによりバッドブロックが検出された場合、バッドブロックが検出されたＨＤＤである。
【０３４５】
コピープロセスは、コピーの実行後、検査スレッドにコピーが完了したことを示す完了応答を送信する（図４６（ｅ））。検査スレッドは、コピーの完了応答の受信に基づいて、制御装置３００を制御することで、マザーボードＭＢｍとＨＤＤ１、ＨＤＤｘとの接続を解除する（図４６（ｆ））。
【０３４６】
図４７は、図４６に示したコピープロセスの起動時のテーブルの状態の例を示す図である。図４７において、網掛けで示した領域は、コピープロセスの起動に伴い変化した箇所を示す。図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。テーブルＨＳＴＢＬ中の”ミラー”の矢印は、図３９と同様に、データを冗長に保持することを示す。この例では、図４６に示したマザーボードＭＢｍは、マザーボードＭＢ４であり、ＨＤＤｎはＨＤＤ３２であるとする。
【０３４７】
この例では、図４６に示したように、検査スレッドは、コピープロセスを起動する前に、マザーボードＭＢ４とＨＤＤ３２とを接続し、マザーボードＭＢ４にコピープログラムＣＰＹＰをインストールする。このため、検査スレッドは、マザーボードＭＢ４およびＨＤＤ３２の接続を示す情報をテーブルＣＮＴＢＬに追加する。また、検査スレッドは、テーブルＭＳＴＢＬにおけるマザーボードＭＢ４の状態を”コピー”に設定し、テーブルＨＳＴＢＬにおけるＨＤＤ３２の状態を”起動用”に設定する。
【０３４８】
図４８は、図４６に示したコピープロセスを実行中のテーブルの状態の例を示す図である。図４８において、網掛けで示した領域は、図４７に対して変化した箇所を示す。図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。
【０３４９】
この例では、図３８に示した検査プロセスによりＨＤＤ３の故障が検出され、ＨＤＤ３とペアの関係にあるＨＤＤ１からスペアのＨＤＤ２５にデータがコピーされる。
【０３５０】
検査スレッドは、コピープログラムＣＰＹＰを実行するマザーボードＭＢ４と、コピーを実行するＨＤＤ１、ＨＤＤ２５とを接続する。このため、検査スレッドは、マザーボードＭＢ４およびＨＤＤ１、ＨＤＤ２５の接続を示す情報をテーブルＣＮＴＢＬに追加する。また、検査スレッドは、テーブルＨＳＴＢＬにおけるＨＤＤ２５を”スペア用”から”データキャプチャ用”に変更し、ＨＤＤ３を”データキャプチャ用”から”スペア用”に変更する。検査スレッドは、テーブルＨＳＴＢＬにおけるＨＤＤ１、ＨＤＤ２５の状態を”コピー中”に設定し、ＨＤＤ３の状態を”故障”に設定する。
【０３５１】
さらに、検査スレッドは、テーブルＩＮＤＴＢＬにおいてＨＤＤ３が登録されたレコード（行）をＨＤＤ２５に置き換える（開始時刻と終了時刻は”ｎｕｌｌ”に初期化）。検査スレッドは、テーブルＣＨＫＴＢＬにおいて、ＨＤＤ３が登録されたレコード（行）をＨＤＤ２５に置き換える（検査時刻は”ｎｕｌｌ”に初期化）。また、検査スレッドは、ＨＤＤ３が故障した情報（ＨＤＤ障害）をテーブルＦＡＩＬＴＢＬに登録する。テーブルＴＢＬのその他の状態は、図４７と同様である。
【０３５２】
図４９は、図４６に示したコピープロセスの実行後のテーブルの状態の例を示す図である。図４９において、網掛けで示した領域は、図４８に対して変化した箇所を示す。図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。この例では、コピープロセスの実行により、ＨＤＤ３と置き換えられたＨＤＤ２５によりデータのキャプチャ動作が実行可能な状態に設定される。
【０３５３】
コピープロセスの完了に基づいて、検査スレッドは、マザーボードＭＢ４およびＨＤＤ１、ＨＤＤ２５の接続を示す情報をテーブルＣＮＴＢＬから削除し、テーブルＭＳＴＢＬにおけるマザーボードＭＢ４の状態を”未使用”に設定する。また、検査スレッドは、テーブルＨＳＴＢＬにおけるＨＤＤ１、ＨＤＤ２５の状態を図４８に示した”コピー中”から”待機中”に変更し、ＨＤＤ３２の状態を図４８に示した”起動用”から”未使用”に変更する。検査スレッドは、テーブルＣＨＫＴＢＬにおけるＨＤＤ１、ＨＤＤ２５の検査時刻をコピー動作が完了した時刻である”ｔ３７”に設定する。さらに、検査スレッドは、テーブルＩＮＤＴＢＬにおいてＨＤＤ２５が登録されたレコード（行）の開始時刻および終了時刻を、ＨＤＤ１と同じ”ｔ２５”および”ｔ２５’”に設定する。
【０３５４】
図５０は、図４６に示したコピープロセスを実行中のテーブルの状態の別の例を示す図である。図５０において、網掛けで示した領域は、図４７に対して変化した箇所を示す。図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。
【０３５５】
この例では、図３８に示した検査プロセスによりＨＤＤ３のバッドブロックが検出され、ＨＤＤ３およびＨＤＤ３とペアの関係にあるＨＤＤ１がマザーボードＭＢ４に接続される。そして、ＨＤＤ１からＨＤＤ３にデータがコピーされ、バッドブロックに記憶されたデータが回復する。図４８と同様の動作については、詳細な説明は省略する。
【０３５６】
検査スレッドは、図４８と同様に、マザーボードＭＢ４およびＨＤＤ１、ＨＤＤ３の接続を示す情報をテーブルＣＮＴＢＬに追加し、テーブルＨＳＴＢＬにおけるＨＤＤ１、ＨＤＤ３の状態を”コピー中”に設定する。また、検査スレッドは、ＨＤＤ３にバッドブロックが発生した情報（Ｂａｄ  Ｂｌｏｃｋ）をバッドブロックのアドレスａｄｄｒとともにテーブルＦＡＩＬＴＢＬに登録する。
【０３５７】
図５１は、図４６に示したコピープロセスの実行後のテーブルの状態の別の例を示す図である。図５１において、網掛けで示した領域は、図５０に対して変化した箇所を示す。図８に示したテーブルＭＢＴＢＬ、ＨＤＤＴＢＬは、状態が変化しないため、記載は省略する。
【０３５８】
この例では、コピープロセスの実行により、バッドブロックのデータを回復したＨＤＤ３がＨＤＤ１とともにデータのキャプチャ動作が実行可能な状態に設定される。テーブルＦＡＩＬＴＢＬにエントリされたＨＤＤ３は修復されるため、テーブルＦＡＩＬＴＢＬの１行目は、”ｎｕｌｌ”にクリアされる。図４９と同様の動作については、詳細な説明は省略する。
【０３５９】
コピープロセスの完了に基づいて、検査スレッドは、マザーボードＭＢ４およびＨＤＤ１、ＨＤＤ３の接続を示す情報をテーブルＣＮＴＢＬから削除し、テーブルＭＳＴＢＬにおけるマザーボードＭＢ４の状態を”未使用”に設定する。また、検査スレッドは、テーブルＨＳＴＢＬにおけるＨＤＤ１、ＨＤＤ３の状態を図５０に示した”コピー中”から”待機中”に変更し、ＨＤＤ３２の状態を図５０に示した”起動用”から”未使用”に変更する。
【０３６０】
図５２は、図４１に示したステップＳ９００により呼び出されるコピー処理ルーチンの例を示す図である。コピー処理ルーチンは、管理装置４００のＣＰＵ４が制御プログラムを実行することにより実現される。
【０３６１】
まず、ステップＳ９０２において、コピー処理ルーチンは、指定された数のマザーボードＭＢを選択したか否かを判定する。指定された数のマザーボードＭＢが選択された場合、処理はステップＳ９１２に移行され、選択したマザーボードＭＢの数が指定された数に満たない場合、処理はステップＳ９０４に移行される。マザーボードＭＢの数の指定は、管理プロセスにより予め決められてもよく、図９に示したキャプチャ開始の指示とともにコンソールＣＮＳＬから受信してもよい。
【０３６２】
次に、ステップＳ９０４において、コピー処理ルーチンは、テーブルＭＳＴＢＬを参照し、未使用のマザーボードＭＢのいずれかを選択する。次に、ステップＳ９０８において、コピー処理ルーチンは、テーブルＨＳＴＢＬを参照し、起動用のＨＤＤのうち未使用のＨＤＤを選択する。
【０３６３】
次に、ステップＳ９０８において、コピー処理ルーチンは、接続装置３００を制御することにより、選択したマザーボードＭＢと選択した起動用のＨＤＤとを互いに接続する。次に、ステップＳ９１０において、コピー処理ルーチンは、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬを更新する。更新されたテーブルＴＢＬの状態の例は、図４７に示す。そして、コピー処理ルーチンは、コピー動作を実行する全てのマザーボードＭＢを選択するまで、ステップＳ９０４、Ｓ９０６、Ｓ９０８、Ｓ９１０の処理を繰り返す。
【０３６４】
コピー動作を実行する全てのマザーボードＭＢが選択された場合、ステップＳ９１２からＳ９１８において、コピー処理ルーチンは、選択したマザーボードＭＢにＯＳとコピープログラムＣＰＹＰをそれぞれインストールする。ステップＳ９１２、Ｓ９１４、Ｓ９１６、Ｓ９１８、Ｓ９２０の処理は、インストールされるプログラムが異なることを除き、図１７に示したステップＳ２１６、Ｓ２１８、Ｓ２２０、Ｓ２２２の処理と同様のため、説明は省略する。
【０３６５】
次に、コピー処理ルーチンは、ステップＳ９２２において、ＨＤＤのエラー情報が格納されたリストＲＳＬＴＬＩＳＴ４が”ｎｕｌｌ”か否かを判定する。リストＲＳＬＴＬＩＳＴ４が”ｎｕｌｌ”の場合、エラーが発生したＨＤＤが存在しないため、コピー処理ルーチンは終了する。リストＲＳＬＴＬＩＳＴ４が”ｎｕｌｌ”でない場合、エラーが発生したＨＤＤが存在するため、処理はステップＳ９２４に移行される。
【０３６６】
ステップＳ９２４において、コピー処理ルーチンは、リストＲＳＬＴＬＩＳＴ４からＨＤＤの障害情報を取り出す。次に、ステップＳ９２６において、コピー処理ルーチンは、ＨＤＤが故障したか、ＨＤＤにバッドブロックが発生したかを判定する。ＨＤＤが故障した場合、処理はステップＳ９３０に移行され、ＨＤＤにバッドブロックが発生した場合、処理はステップＳ９６０に移行される。
【０３６７】
ステップＳ９３０において、コピー処理ルーチンは、ＨＤＤ障害処理ルーチンを起動する。ステップＳ９２４において、コピー処理ルーチンは、ブロック救済処理ルーチンを起動する。ＨＤＤ障害処理ルーチンの例は、図５３に示す。ブロック救済処理ルーチンの例は、図５４に示す。ステップＳ９３０、Ｓ９６０の後、処理はステップＳ９２２に戻る。
【０３６８】
図５３は、図５２に示したステップＳ９３０により呼び出されるＨＤＤ障害処理ルーチンの例を示す図である。ＨＤＤ障害処理ルーチンは、管理装置４００のＣＰＵ４が制御プログラムを実行することにより実現される。
【０３６９】
まず、ステップＳ９３２において、ＨＤＤ障害処理ルーチンは、テーブルＨＳＴＢＬのスペア用の領域を参照し、故障したＨＤＤと交換するスペアのＨＤＤを未使用のＨＤＤの中から選択する。次に、ステップＳ９３４において、ＨＤＤ障害処理ルーチンは、テーブルＴＳＴＢＬを更新し、データキャプチャ用の領域に格納された故障したＨＤＤの番号をスペアのＨＤＤの番号に書き換え、故障したＨＤＤの番号をスペア用の領域に格納する。これにより、スペアのＨＤＤと故障したＨＤＤとが互いに入れ換えられる。
【０３７０】
次に、ステップＳ９３６において、ＨＤＤ障害処理ルーチンは、故障したＨＤＤとミラー関係にあるＨＤＤであるミラーＨＤＤを選択する。次に、ステップＳ９３８において、ＨＤＤ障害処理ルーチンは、制御装置３００を制御することで、コピー動作を実行するマザーボードＭＢ、ミラーＨＤＤおよびスペアのＨＤＤを互いに接続する。次に、ステップＳ９４０において、ＨＤＤ障害処理ルーチンは、接続したマザーボードＭＢおよびＨＤＤに合わせてテーブルＣＮＴＢＬを更新し、テーブルＨＳＴＢＬにおけるコピー処理するＨＤＤの状態を”コピー中”にする。更新されたテーブルＴＢＬの状態の例は、図４８に示す。
【０３７１】
次に、ステップＳ９９０において、ＨＤＤ障害処理ルーチンは、コピープロセスを起動する。コピープロセスの例は、図５５に示す。次に、ステップＳ９４２において、ＨＤＤ障害処理ルーチンは、コピープロセスからの完了応答を待つ。次に、ステップＳ９４４において、ＨＤＤ障害処理ルーチンは、コピープロセスからの完了応答の受信に基づいて、制御装置３００を制御することで、コピー動作を実行したマザーボードＭＢ、ミラーＨＤＤおよびスペアのＨＤＤとの接続を解除する。
【０３７２】
次に、ステップＳ９４６において、ＨＤＤ障害処理ルーチンは、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬ、ＩＮＤＴＢＬ、ＣＨＫＴＢＬを更新する。更新されたテーブルＴＢＬの状態の例は、図４９に示す。そして、ＨＤＤ障害処理ルーチンは終了する。
【０３７３】
図５４は、図５２に示したステップＳ９６０により呼び出されるブロック救済処理ルーチンの例を示す図である。ブロック救済処理ルーチンは、管理装置４００のＣＰＵ４が制御プログラムを実行することにより実現される。
【０３７４】
まず、ステップＳ９６２において、ブロック救済処理ルーチンは、バッドブロックが検出されたＨＤＤとミラー関係にあるＨＤＤであるミラーＨＤＤを選択する。次に、ステップＳ９６４において、ブロック救済処理ルーチンは、制御装置３００を制御することで、コピー動作を実行するマザーボードＭＢ、ミラーＨＤＤおよびバッドブロックが発生したＨＤＤを互いに接続する。次に、ステップＳ９６６において、ブロック救済処理ルーチンは、ＣＮＴＢＬ、ＨＳＴＢＬを更新する。更新されたテーブルＴＢＬの状態の例は、図５０に示す。
【０３７５】
次に、ステップＳ９９０において、ブロック救済処理ルーチンは、コピープロセスを起動する。コピープロセスの例は、図５５に示す。次に、ステップＳ９６８において、ブロック救済処理ルーチンは、コピープロセスからの完了応答を待つ。次に、ステップＳ９７０において、ブロック救済処理ルーチンは、コピープロセスからの完了応答の受信に基づいて、制御装置３００を制御することで、コピー動作を実行したマザーボードＭＢ、ミラーＨＤＤおよびバッドブロックが発生したＨＤＤとの接続を解除する。
【０３７６】
次に、ステップＳ９７２において、ブロック救済処理ルーチンは、テーブルＣＮＴＢＬ、ＭＳＴＢＬ、ＨＳＴＢＬ、ＩＮＤＴＢＬ、ＣＨＫＴＢＬを更新する。更新されたテーブルＴＢＬの状態の例は、図５１に示す。そして、ブロック救済処理ルーチンは終了する。
【０３７７】
図５５は、図５３および図５４に示したステップＳ９９０により起動されるコピープロセスの例を示す。コピープロセスは、マザーボードＭＢのＣＰＵがコピープログラムＣＰＹＰを実行することにより実現される。
【０３７８】
まず、ステップＳ９９２において、コピープロセスは、図５３に示したステップ９３８または図５４に示したステップＳ９６４によるＨＤＤのマザーボードＭＢへの接続を待つ。
【０３７９】
次に、ステップＳ９９４において、コピープロセスは、コピー元であるミラーＨＤＤの番号、コピー先のＨＤＤの番号、およびデータをコピーする範囲を、例えば、コマンドライン等を用いて取得する。コピー先のＨＤＤは、スペアのＨＤＤまたはバッドブロックが発生したＨＤＤである。
【０３８０】
次に、ステップＳ９９６において、コピープロセスは、コピー動作を実行する。次に、ステップＳ９９８において、コピープロセスは、検査スレッドにコピー動作が完了したことを示すコピー完了応答を送信する。
【０３８１】
以上、この実施形態においても、図１から図４に示した実施形態と同様に、マザーボードＭＢ１、ＭＢ２に接続されるＨＤＤを順次に切り替えながらキャプチャ動作を実行することで、他のＨＤＤの干渉を受けることなく選択したＨＤＤにデータを安定して書き込みできる。キャプチャ動作を実行するマザーボードＭＢ１、ＭＢ２は、検索動作および検査動作を実行しないため、キャプチャ動作を中断することなく実行でき、検索動作や検査動作によって、データのＨＤＤへの書き込みレートが低下することはない。
【０３８２】
検索動作を実行するマザーボードＭＢ３は、データのキャプチャ動作を実行するマザーボードＭＢ１とは独立に動作するため、キャプチャ動作による割り込みを受けることなく、データを検索できる。検査動作を実行するマザーボードＭＢ４は、データのキャプチャ動作を実行するマザーボードＭＢ１とは独立に動作するため、キャプチャ動作による割り込みを受けることなく、データを検査できる。
【０３８３】
さらに、キャプチャ動作において、管理装置４００の制御により、書き込みアドレスが閾値ＶＴ１を超えた時点で新たなＨＤＤの接続処理を開始することで、キャプチャ用のＨＤＤが切り替わる場合にも、マザーボードＭＢは、データを失うことなくＨＤＤに書き込みできる。
【０３８４】
管理装置４００の制御により、キャプチャ動作によってデータが保持された待機状態のＨＤＤの電源を遮断することで、消費電力の増加を抑制しながら、データを失うことなくＨＤＤに保持できる。検索動作および検査動作を実行しないマザーボードＭＢおよびＨＤＤへの電源の供給を停止することで、電源を供給する場合に比べて情報処理システムＳＹＳの消費電力を削減できる。この際、電源が遮断されたＨＤＤは、ＯＳおよびプログラムを保持するため、マザーボードＭＢを再起動させることで、検索動作または検査動作が実行可能になる。
【０３８５】
以上の実施形態において説明した発明を整理して、付記として開示する。
（付記１）
演算処理をそれぞれ実行する複数の演算処理装置と、
データをそれぞれ記憶する複数の記憶装置と、
前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、
前記複数の演算処理装置および前記接続装置を制御する管理装置を有し、
前記複数の演算処理装置のうちの第１の演算処理装置は、前記複数の記憶装置のうちの第１の記憶装置にデータを書き込み、前記第１の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続し、
前記第１の演算処理装置は、前記第２の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第１の演算処理装置から前記第１の記憶装置を切り離すことを特徴とする情報処理システム。
（付記２）
前記第１の演算処理装置は、前記接続装置を介して接続された記憶装置に所定量のデータを書き込む毎に前記管理装置に前記割り当て要求および前記開放要求を発行し、
前記管理装置は、前記割り当て要求および前記開放要求に基づいて、前記第１の演算処理装置に接続する記憶装置を切り替え、データを未書き込みの記憶装置が存在しない場合に、前記割り当て要求に基づいて、他の記憶装置に比べて古いデータを保持した記憶装置を前記第１の演算処理装置に接続し、
前記第１の演算処理装置は、前記古いデータを保持した記憶装置に新たなデータを上書きすることを特徴とする付記１記載の情報処理システム。
（付記３）
前記管理装置は、前記第１の記憶装置に最初にデータを書き込む前に、前記第１の演算処理装置に前記複数の記憶装置のうちの１つを接続し、接続した記憶装置に、前記第１の記憶装置にデータを書き込むプログラムをインストールすることを特徴とする付記１または付記２記載の情報処理システム。
（付記４）
前記管理装置は、検索要求に基づいて、前記接続装置を制御して、前記複数の演算処理装置のうちの第２の演算処理装置を、データを保持した前記第１の記憶装置のいずれかである第３の記憶装置に接続し、
前記第２の演算処理装置は、前記検索要求に基づいて、前記第３の記憶装置に保持されたデータを検索し、検索結果を前記管理装置に通知し、
前記管理装置は、前記検索結果の受信に応答して、前記第２の演算処理装置と前記第３の記憶装置との接続を解除することを特徴とする付記１ないし付記３のいずれか１項記載の情報処理システム。
（付記５）
前記管理装置は、データが生成された時刻を示す時刻情報を、データが書き込まれた記憶装置毎に記憶する記憶部を有し、前記検索要求に含まれる検索キーが示す時刻情報に対応するデータを保持する記憶装置を、前記記憶部に記憶した前記時刻情報に基づいて選択し、選択した記憶装置を前記第３の記憶装置として前記第２の演算処理装置に接続することを特徴とする付記４記載の情報処理システム。
（付記６）
前記管理装置は、前記検索要求で指示された検索対象の記憶装置が前記第１の演算処理装置に接続された前記第１の記憶装置の場合、前記接続装置を制御して、前記第１の演算処理装置に前記第２の記憶装置を接続し、前記第１の演算処理装置から前記第１の記憶装置を切り離して前記第３の記憶装置として前記第２の演算処理装置に接続することを特徴とする付記４または付記５記載の情報処理システム。
（付記７）
前記管理装置は、前記検索要求に基づいて、前記第２の演算処理装置に前記複数の記憶装置のうちの１つを接続し、接続した記憶装置に、前記第３の記憶装置に保持されたデータを検索するプログラムをインストールすることを特徴とする付記１ないし付記６のいずれか１項記載の情報処理システム。
（付記８）
前記第１の演算処理装置は、複数の前記第１の記憶装置にデータを冗長に書き込み、
前記管理装置は、前記接続装置を制御して、前記複数の演算処理装置のうちの第３の演算処理装置に、データを冗長に保持する複数の前記第１の記憶装置のうち前記第１の演算処理装置に接続されない第４の記憶装置を接続し、
前記第３の演算処理装置は、前記第４の記憶装置を検査し、検査結果を前記管理装置に通知し、
前記管理装置は、前記検査結果が前記第４の記憶装置の故障を示す場合に、前記接続装置を制御して、前記第３の演算処理装置に前記複数の記憶装置のうちの第５の記憶装置を接続し、前記第４の記憶装置とともにデータを冗長に保持する第６の記憶装置に保持されたデータを前記第５の記憶装置にコピーし、故障した前記第４の記憶装置の前記第１の演算処理装置に対する割り当てを前記第５の記憶装置に変更することを特徴とする付記１ないし付記７のいずれか１項記載の情報処理システム。
（付記９）
前記管理装置は、前記検査結果が修復可能なエラーを示す場合に、前記第６の記憶装置に保持されたデータを、エラーが発生した前記第４の記憶装置にコピーすることを特徴とする付記８記載の情報処理システム。
（付記１０）
前記管理装置は、前記第３の演算処理装置に接続する記憶装置を順に切り替えて検査を実行することを特徴とする付記８または付記９記載の情報処理システム。
（付記１１）
前記管理装置は、前記第１の記憶装置の前記１つを検査する前に、前記第３の演算処理装置に前記複数の記憶装置のうちの１つを接続し、接続した記憶装置に、前記記憶装置を検査するプログラムをインストールすることを特徴とする付記８ないし付記１０のいずれか１項記載の情報処理システム。
（付記１２）
演算処理をそれぞれ実行する複数の演算処理装置の各々を、前記接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置において、
前記複数の演算処理装置のうちの第１の演算処理装置が、前記複数の記憶装置のうちの第１の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続し、
前記第１の演算処理装置が、前記第２の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置から前記第１の記憶装置を切り離すことを特徴とする管理装置。
（付記１３）
演算処理をそれぞれ実行する複数の演算処理装置の各々を、前記接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置の制御プログラムにおいて、
前記管理装置に、
前記複数の演算処理装置のうちの第１の演算処理装置が、前記複数の記憶装置のうちの第１の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御させ、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続させ、
前記第１の演算処理装置が、前記第２の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御させ、前記第１の演算処理装置から前記第１の記憶装置を切り離させることを特徴とする管理装置の制御プログラム。
（付記１４）
演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、前記複数の演算処理装置および前記接続装置を制御する管理装置を含む情報処理システムの制御方法において、
前記複数の演算処理装置のうちの第１の演算処理装置は、前記複数の記憶装置のうちの第１の記憶装置にデータを書き込み、前記第１の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第１の演算処理装置に前記複数の記憶装置のうちの第２の記憶装置を接続し、
前記第１の演算処理装置は、前記第２の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第１の演算処理装置から前記第１の記憶装置を切り離すことを特徴とする情報処理システムの制御方法。
【０３８６】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０３８７】
１００…マザーボードプール；２００…ストレージドライブプール；３００…接続装置；４００…管理装置；５００…スイッチ装置；ＢＴ…記憶装置；ＣＨＫＴＢＬ…テーブル；ＣＮＩＦ…接続インタフェース；ＣＮＳＬ…コンソール；ＣＮＴＢＬ…テーブル；ＣＮＴＬ…管理装置；ＣＰＵ、ＣＰＵ４…演算処理装置；ＦＡＩＬＴＢＬ…テーブル；ＨＤＤ…ハードディスクドライブ；ＨＤＤＴＢＬ…テーブル；ＨＳＴＢＬ…テーブル；ＩＮＤＴＢＬ…テーブル；ＭＢ…マザーボード；ＭＤ、ＭＤ４…記憶装置；ＭＥＭ…記憶装置；ＭＢＴＢＬ…テーブル；ＭＳＴＢＬ…テーブル；ＮＷ…ネットワーク；ＮＷＩＦ…ネットワークインタフェース；ＳＷ…接続装置；ＳＹＳ…情報処理システム；ＴＢＬ…テーブル
【図１】
2014182444.tif 000003
【図２】
2014182444.tif 000004
【図３】
2014182444.tif 000005
【図４】
2014182444.tif 000006
【図５】
2014182444.tif 000007
【図６】
2014182444.tif 000008
【図７】
2014182444.tif 000009
【図８】
2014182444.tif 000010
【図９】
2014182444.tif 000011
【図１０】
2014182444.tif 000012
【図１１】
2014182444.tif 000013
【図１２】
2014182444.tif 000014
【図１３】
2014182444.tif 000015
【図１４】
2014182444.tif 000016
【図１５】
2014182444.tif 000017
【図１６】
2014182444.tif 000018
【図１７】
2014182444.tif 000019
【図１８】
2014182444.tif 000020
【図１９】
2014182444.tif 000021
【図２０】
2014182444.tif 000022
【図２１】
2014182444.tif 000023
【図２２】
2014182444.tif 000024
【図２３】
2014182444.tif 000025
【図２４】
2014182444.tif 000026
【図２５】
2014182444.tif 000027
【図２６】
2014182444.tif 000028
【図２７】
2014182444.tif 000029
【図２８】
2014182444.tif 000030
【図２９】
2014182444.tif 000031
【図３０】
2014182444.tif 000032
【図３１】
2014182444.tif 000033
【図３２】
2014182444.tif 000034
【図３３】
2014182444.tif 000035
【図３４】
2014182444.tif 000036
【図３５】
2014182444.tif 000037
【図３６】
2014182444.tif 000038
【図３７】
2014182444.tif 000039
【図３８】
2014182444.tif 000040
【図３９】
2014182444.tif 000041
【図４０】
2014182444.tif 000042
【図４１】
2014182444.tif 000043
【図４２】
2014182444.tif 000044
【図４３】
2014182444.tif 000045
【図４４】
2014182444.tif 000046
【図４５】
2014182444.tif 000047
【図４６】
2014182444.tif 000048
【図４７】
2014182444.tif 000049
【図４８】
2014182444.tif 000050
【図４９】
2014182444.tif 000051
【図５０】
2014182444.tif 000052
【図５１】
2014182444.tif 000053
【図５２】
2014182444.tif 000054
【図５３】
2014182444.tif 000055
【図５４】
2014182444.tif 000056
【図５５】
2014182444.tif 000057