特許第6044402号(P6044402)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6044402情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6044402
(24)【登録日】2016年11月25日
(45)【発行日】2016年12月14日
(54)【発明の名称】情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法
(51)【国際特許分類】
   G06F 13/10 20060101AFI20161206BHJP
【FI】
   G06F13/10 340A
【請求項の数】10
【全頁数】68
(21)【出願番号】特願2013-54936(P2013-54936)
(22)【出願日】2013年3月18日
(65)【公開番号】特開2014-182444(P2014-182444A)
(43)【公開日】2014年9月29日
【審査請求日】2015年10月7日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100072718
【弁理士】
【氏名又は名称】古谷 史旺
(74)【代理人】
【識別番号】100116001
【弁理士】
【氏名又は名称】森 俊秀
(72)【発明者】
【氏名】野口 泰生
【審査官】 田中 啓介
(56)【参考文献】
【文献】 特開2000−141782(JP,A)
【文献】 特開2012−238973(JP,A)
【文献】 特表2008−547360(JP,A)
【文献】 特開2006−301714(JP,A)
【文献】 特開平10−049311(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06−3/08
13/10−13/14
15/16−15/177
H04N7/10−7/173
7/20−7/56
19/00−21/858
(57)【特許請求の範囲】
【請求項1】
演算処理をそれぞれ実行する複数の演算処理装置と、
データをそれぞれ記憶する複数の記憶装置と、
前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、
前記複数の演算処理装置および前記接続装置を制御する管理装置を有し、
前記複数の演算処理装置のうちの第1の演算処理装置は、前記複数の記憶装置のうちの第1の記憶装置にデータを書き込み、前記第1の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続し、
前記第1の演算処理装置は、前記第2の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第1の演算処理装置から前記第1の記憶装置を切り離すことを特徴とする情報処理システム。
【請求項2】
前記第1の演算処理装置は、前記接続装置を介して接続された記憶装置に所定量のデータを書き込む毎に前記管理装置に前記割り当て要求および前記開放要求を発行し、
前記管理装置は、前記割り当て要求および前記開放要求に基づいて、前記第1の演算処理装置に接続する記憶装置を切り替え、データを未書き込みの記憶装置が存在しない場合に、前記割り当て要求に基づいて、他の記憶装置に比べて古いデータを保持した記憶装置を前記第1の演算処理装置に接続し、
前記第1の演算処理装置は、前記古いデータを保持した記憶装置に新たなデータを上書きすることを特徴とする請求項1記載の情報処理システム。
【請求項3】
前記管理装置は、検索要求に基づいて、前記接続装置を制御して、前記複数の演算処理装置のうちの第2の演算処理装置を、データを保持した前記第1の記憶装置のいずれかである第3の記憶装置に接続し、
前記第2の演算処理装置は、前記検索要求に基づいて、前記第3の記憶装置に保持されたデータを検索し、検索結果を前記管理装置に通知し、
前記管理装置は、前記検索結果の受信に応答して、前記第2の演算処理装置と前記第3の記憶装置との接続を解除することを特徴とする請求項1または請求項2記載の情報処理システム。
【請求項4】
前記管理装置は、データが生成された時刻を示す時刻情報を、データが書き込まれた記憶装置毎に記憶する記憶部を有し、前記検索要求に含まれる検索キーが示す時刻情報に対応するデータを保持する記憶装置を、前記記憶部に記憶した前記時刻情報に基づいて選択し、選択した記憶装置を前記第3の記憶装置として前記第2の演算処理装置に接続することを特徴とする請求項3記載の情報処理システム。
【請求項5】
前記管理装置は、前記検索要求で指示された検索対象の記憶装置が前記第1の演算処理装置に接続された前記第1の記憶装置の場合、前記接続装置を制御して、前記第1の演算処理装置に前記第2の記憶装置を接続し、前記第1の演算処理装置から前記第1の記憶装置を切り離して前記第3の記憶装置として前記第2の演算処理装置に接続することを特徴とする請求項3または請求項4記載の情報処理システム。
【請求項6】
前記第1の演算処理装置は、複数の前記第1の記憶装置にデータを冗長に書き込み、
前記管理装置は、前記接続装置を制御して、前記複数の演算処理装置のうちの第3の演算処理装置に、データを冗長に保持する複数の前記第1の記憶装置のうち前記第1の演算処理装置に接続されない第4の記憶装置を接続し、
前記第3の演算処理装置は、前記第4の記憶装置を検査し、検査結果を前記管理装置に通知し、
前記管理装置は、前記検査結果が前記第4の記憶装置の故障を示す場合に、前記接続装置を制御して、前記第3の演算処理装置に前記複数の記憶装置のうちの第5の記憶装置を接続し、前記第4の記憶装置とともにデータを冗長に保持する第6の記憶装置に保持されたデータを前記第5の記憶装置にコピーし、故障した前記第4の記憶装置の前記第1の演算処理装置に対する割り当てを前記第5の記憶装置に変更することを特徴とする請求項1ないし請求項5のいずれか1項記載の情報処理システム。
【請求項7】
前記管理装置は、前記検査結果が修復可能なエラーを示す場合に、前記第6の記憶装置に保持されたデータを、エラーが発生した前記第4の記憶装置にコピーすることを特徴とする請求項6記載の情報処理システム。
【請求項8】
演算処理をそれぞれ実行する複数の演算処理装置の各々を、接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置において、
前記複数の演算処理装置のうちの第1の演算処理装置が、前記複数の記憶装置のうちの第1の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続し、
前記第1の演算処理装置が、前記第2の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置から前記第1の記憶装置を切り離すことを特徴とする管理装置。
【請求項9】
演算処理をそれぞれ実行する複数の演算処理装置の各々を、接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置の制御プログラムにおいて、
前記管理装置に、
前記複数の演算処理装置のうちの第1の演算処理装置が、前記複数の記憶装置のうちの第1の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御させ、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続させ、
前記第1の演算処理装置が、前記第2の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御させ、前記第1の演算処理装置から前記第1の記憶装置を切り離させることを特徴とする管理装置の制御プログラム。
【請求項10】
演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、前記複数の演算処理装置および前記接続装置を制御する管理装置を含む情報処理システムの制御方法において、
前記複数の演算処理装置のうちの第1の演算処理装置は、前記複数の記憶装置のうちの第1の記憶装置にデータを書き込み、前記第1の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続し、
前記第1の演算処理装置は、前記第2の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第1の演算処理装置から前記第1の記憶装置を切り離すことを特徴とする情報処理システムの制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法に関する。
【背景技術】
【0002】
複数の演算処理装置のいずれかと複数の記憶装置のいずれかとを、スイッチを介して接続することで、クライアントの仕様に適したシステムを構築する手法が提案されている(例えば、特許文献1参照)。この種のシステムは、プログラムの使用頻度が少ない期間に、複数の記憶装置に分散した複数のプログラムを1つの記憶装置に移動することで、消費電力を抑制する(例えば、特許文献2参照)。
【0003】
また、楽器から発生した楽音を所定時間単位で記録装置に記録することで、楽音を検索可能にし、記録装置がデジタル情報で満杯になると、記録されたデジタル情報を新たなデジタル情報で上書きする音声記録装置が提案されている(例えば、特許文献3参照)。
【0004】
さらに、冗長化されたデータを異なる記憶装置にそれぞれ格納し、記憶装置の異常が検出された場合に、冗長データを保持する記憶装置から新たに割り当てられた記憶装置にデータをコピーする手法が提案されている(例えば、特許文献4参照)。データをマスタディスクとバックアップディスクに格納し、マスタディスクの欠陥が検出された場合に、バックアップディスクに保持されたデータをマスタディスクの代替領域にコピーする手法が提案されている(例えば、特許文献5参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−240697号公報
【特許文献2】特開2010−97533号公報
【特許文献3】特表2003−504673号公報
【特許文献4】国際公開第2005/3951号
【特許文献5】特開2006−260376号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、この種のシステムでは、複数の記憶装置がスイッチを介して演算処理装置に接続され、演算処理装置は、スイッチを介して接続された記憶装置のいずれかにデータを書き込む。すなわち、データが書き込まれない記憶装置や、データの書き込みが完了した記憶装置が、スイッチを介して演算処理装置に接続される。このため、演算処理装置が記憶装置の1つにデータを書き込む場合に、スイッチに接続された他の記憶装置による干渉の影響で、データの書き込み性能が低下するおそれがある。
【0007】
本件開示の情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法は、記憶装置のいずれかにデータを書き込む場合に、データを書き込まない他の記憶装置がデータの書き込みに干渉することを抑止し、データの書き込み性能を維持することを目的とする。
【課題を解決するための手段】
【0008】
一つの観点によれば、情報処理システムは、演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、複数の演算処理装置の各々を複数の記憶装置のいずれかに接続する接続装置と、複数の演算処理装置および接続装置を制御する管理装置を有し、複数の演算処理装置のうちの第1の演算処理装置は、複数の記憶装置のうちの第1の記憶装置にデータを書き込み、第1の記憶装置に所定量のデータを書き込んだことに基づいて、管理装置に割り当て要求を発行し、管理装置は、割り当て要求に基づいて、接続装置を制御して、第1の演算処理装置に複数の記憶装置のうちの第2の記憶装置を接続し、第1の演算処理装置は、第2の記憶装置へのデータの書き込みを開始した後に管理装置に開放要求を発行し、管理装置は、開放要求に基づいて、接続装置を制御して第1の演算処理装置から第1の記憶装置を切り離す。
【0009】
別の観点によれば、演算処理をそれぞれ実行する複数の演算処理装置の各々を、接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置は、複数の演算処理装置のうちの第1の演算処理装置が、複数の記憶装置のうちの第1の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、接続装置を制御して、第1の演算処理装置に複数の記憶装置のうちの第2の記憶装置を接続し、第1の演算処理装置が、第2の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、接続装置を制御して、第1の演算処理装置から第1の記憶装置を切り離すことを特徴とする。
【0010】
別の観点によれば、演算処理をそれぞれ実行する複数の演算処理装置の各々を、接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置の制御プログラムは、管理装置に、複数の演算処理装置のうちの第1の演算処理装置が、複数の記憶装置のうちの第1の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、接続装置を制御させ、第1の演算処理装置に複数の記憶装置のうちの第2の記憶装置を接続させ、第1の演算処理装置が、第2の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、接続装置を制御させ、第1の演算処理装置から第1の記憶装置を切り離させる。
【0011】
別の観点によれば、演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、複数の演算処理装置の各々を複数の記憶装置のいずれかに接続する接続装置と、複数の演算処理装置および接続装置を制御する管理装置を含む情報処理システムの制御方法は、複数の演算処理装置のうちの第1の演算処理装置は、複数の記憶装置のうちの第1の記憶装置にデータを書き込み、第1の記憶装置に所定量のデータを書き込んだことに基づいて、管理装置に割り当て要求を発行し、管理装置は、割り当て要求に基づいて、接続装置を制御して、第1の演算処理装置に複数の記憶装置のうちの第2の記憶装置を接続し、第1の演算処理装置は、第2の記憶装置へのデータの書き込みを開始した後に管理装置に開放要求を発行し、管理装置は、開放要求に基づいて、接続装置を制御して第1の演算処理装置から第1の記憶装置を切り離す。
【発明の効果】
【0012】
本件開示の情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法では、記憶装置のいずれかにデータを書き込む場合に、データを書き込まない他の記憶装置がデータの書き込みに干渉することを抑止でき、データの書き込み性能を維持できる。
【図面の簡単な説明】
【0013】
図1】情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の別の実施形態を示す図である。
図2図1に示した情報処理システムの動作の例を示す図である。
図3図1に示した情報処理システムの動作の別の例を示す図である。
図4図1に示した情報処理システムの動作のさらなる別の例を示す図である。
図5】情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の別の実施形態を示す図である。
図6図5に示した接続装置の例を示す図である。
図7図5に示した管理装置の例を示す図である。
図8図7に示した記憶装置内に割り当てられるテーブルの例を示す図である。
図9図5に示した情報処理システムが実行するキャプチャ動作のシーケンスの例を示す図である。
図10図9(a)に示したキャプチャ開始スレッドにより起動用のHDDがマザーボードに接続された後のテーブルの状態の例を示す図である。
図11図9(b)に示したキャプチャプロセスが、HDD1−HDD4にデータの書き込みを開始した後のテーブルの状態の例を示す図である。
図12図9(e)に示した割り当て要求スレッドの処理後に、キャプチャプロセスがHDD1−HDD4に並行してHDD5−HDD8へのデータの書き込みを開始した後のテーブルの状態の例を示す図である。
図13図9(g)に示した開放要求スレッドにより、マザーボードMB1、MB2からHDD1−HDD4が切り離された後のテーブルTBLの状態の例を示す図である。
図14】キャプチャ用の全てのHDDにデータが保持された場合のテーブルの状態の例を示す図である。
図15】データが保持されたHDDにデータを上書きする場合のテーブルの状態の例を示す図である。
図16図9に示した管理プロセスの例を示す図である。
図17図16に示したステップS200により起動されるキャプチャ開始スレッドの例を示す図である。
図18図16に示したステップS100により起動される切り替えスレッドの例を示す図である。
図19図8に示したデータのキャプチャ用の各HDD1−HDD24の記憶領域の割り当ての例を示す図である。
図20図17に示したステップS500により起動されるキャプチャプロセスの例を示す図である。
図21図17に示したステップS500により起動されるキャプチャプロセスの例(図20の続き)を示す図である。
図22図21に示したステップS530により起動される割り当て要求スレッドの例を示す図である。
図23図21に示したステップS534により起動される開放要求スレッドの例を示す図である。
図24図20から図23に示したキャプチャプロセスにより実行されるデータのキャプチャ動作の例を示す図である。
図25図5に示した情報処理システムが実行する検索動作のシーケンスの例を示す図である。
図26図25に示した検索スレッドにより検索用のHDDがマザーボードに接続された後のテーブルの状態の例を示す図である。
図27図25に示した検索プロセスが起動された後のテーブルの状態の例を示す図である。
図28図16に示したステップS300により起動される検索スレッドの例を示す図である。
図29図16に示したステップS300により起動される検索スレッドの例(図28の続き)を示す図である。
図30図29に示したステップS600により起動される検索プロセスの例を示す図である。
図31図30に示したステップS700により起動されるHDD検索スレッドの例を示す図である。
図32図31に示したHDD検索スレッドにより求められる開始アドレスおよび終了アドレスの例を示す図である。
図33図31に示したステップS710により起動される開始アドレス検索ルーチンの例を示す図である。
図34図31に示したステップS740により起動される終了アドレス検索ルーチンの例を示す図である。
図35図33に示したステップS830により起動される開始アドレス検出ルーチンの例を示す図である。
図36図34に示したステップS860により起動される終了アドレス検出ルーチンの例を示す図である。
図37図33図34図35図36に示したステップS800により起動されるタイムスタンプ読み出しルーチンの例を示す図である。
図38図5に示した情報処理システムが実行する検査動作のシーケンスの例を示す図である。
図39図38に示した検査プロセスの起動時のテーブルの状態の例を示す図である。
図40図38に示した検査プロセスを実行中のテーブルの状態の例を示す図である。
図41図16に示したステップS400により起動される検査スレッドの例を示す図である。
図42図41に示したステップS430により呼び出される検査するHDDの選択ルーチンの例を示す図である。
図43図41に示したステップS450により呼び出される検査プロセスの起動ルーチンの例を示す図である。
図44図41に示したステップS470により呼び出される検査結果の受信ルーチンの例を示す図である。
図45図43に示したステップS460により呼び出される検査プロセスルーチンの例を示す図である。
図46図5に示した情報処理システムが実行するコピー動作のシーケンスの例を示す図である。
図47図46に示したコピープロセスの起動時のテーブルの状態の例を示す図である。
図48図46に示したコピープロセスを実行中のテーブルの状態の例を示す図である。
図49図46に示したコピープロセスの実行後のテーブルの状態の例を示す図である。
図50図46に示したコピープロセスを実行中のテーブルの状態の別の例を示す図である。
図51図46に示したコピープロセスの実行後のテーブルの状態の別の例を示す図である。
図52図41に示したステップS900により呼び出されるコピー処理ルーチンの例を示す図である。
図53図52に示したステップS930により呼び出されるHDD障害処理ルーチンの例を示す図である。
図54図52に示したステップS960により呼び出されるブロック救済処理ルーチンの例を示す図である。
図55図53および図54に示したステップS990により起動されるコピープロセスの例を示す図である。
【発明を実施するための形態】
【0014】
以下、図面を用いて実施形態を説明する。
【0015】
図1は、情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の一実施形態を示す。この実施形態の情報処理システムSYSは、複数のCPU(CPU1、CPU2、CPU3;Central Processing Unit)と、データをそれぞれ記憶する複数の記憶装置MEM(MEM1、MEM2、MEM3)と、接続装置SWと、管理装置CNTLとを有する。CPUは、演算処理を実行する演算処理装置の一例である。例えば、記憶装置MEMは、ハードディスクドライブである。なお、情報処理システムSYSに搭載されるCPUの数および記憶装置MEMの数は3個に限定されない。
【0016】
各CPUは、複数のプロセッサコアが搭載されたマルチコアタイプでもよい。また、情報処理システムSYSは、CPUとDRAM(Dynamic Random Access Memory)チップを含むDIMM(Dual Inline Memory Module)等の記憶装置とが搭載されたマザーボード等のコンピュータ装置を、CPUの代わりに有してもよい。
【0017】
なお、情報処理システムSYSは、CPUの代わりに、プログラムを実行することで動作するDSP(Digital Signal Processor)やGPU(Graphics Processing Unit)等のプロセッサや、これ等のプロセッサを含むコンピュータ装置を有してもよい。記憶装置MEMは、SSD(Solid State Drive)等のフラッシュストレージやDIMMでもよい。
【0018】
記憶装置MEMは、ストレージ装置であり、CPU等を含むサーバ装置でない。このため、サーバ装置をストレージサーバとして記憶装置MEMの代わりに用いることに比べて、情報処理システムSYSのコストを削減でき、消費電力を削減できる。
【0019】
接続装置SWは、各CPU1−CPU3を記憶装置MEM1−MEM3の少なくともいずれかに接続して情報処理装置を構築する。例えば、図1は、CPU1と記憶装置MEM1とにより情報処理装置が構築された状態を示す。CPU1と記憶装置MEM1とによる情報処理装置は、情報処理システムSYSの外部から転送されるデータをキャプチャするキャプチャサーバとして動作する。
【0020】
例えば、接続装置SWは、記憶装置MEMの帯域(データ転送速度)を下げることなく、記憶装置MEMをCPUに接続する性能を有する。換言すれば、接続装置SWを介してCPUに接続された記憶装置MEMの性能は、接続装置SWを介することなくCPUに接続された記憶装置MEMの性能と同等である。
【0021】
管理装置CNTLは、CPU1−CPU3および接続装置SWを制御する。例えば、管理装置CNTLは、CPU等のプロセッサと、プロセッサが実行するプログラムを格納した記憶装置とを有するサーバ等のコンピュータ装置であり、制御プログラムを実行することにより、CPU1−CPU3および接続装置SWを制御する。
【0022】
例えば、情報処理システムSYSは、携帯電話での会話の音声データを収集するデータセンタに接続され、音声データをリアルタイムでキャプチャする。そして、データセンタのコンピュータ装置は、携帯電話の通信回線の不具合が発生した場合に、不具合が発止した日時の音声データを情報処理システムSYSから読み出し、読み出した音声データに含まれる雑音等を解析することで、不具合の原因を調べる。なお、情報処理システムSYSは、複数の記憶装置MEMにデータを重複して書き込み、記憶装置MEMに保持されたデータにエラーが発生した場合、エラーを修復してもよい。
【0023】
図2は、図1に示した情報処理システムSYSの動作の例を示す。図2は、情報処理システムの制御方法を示している。図2の動作は、管理装置CNTLが制御プログラムの1つであるキャプチャプログラムを実行することにより実現される。
【0024】
図2では、CPU1と、CPU1に接続された記憶装置MEM1−MEM3の少なくともいずれかにより情報処理装置(キャプチャサーバ)が構築される。図2において、太枠で示した記憶装置MEMは、例えば、満杯に近い所定量のデータが書き込まれたことを示す。
【0025】
まず、図2(A)において、CPU1は、キャプチャされたデータを記憶装置MEM1に書き込む。CPU1は、記憶装置MEM1に所定量のデータを書き込んだことに基づいて、管理装置CNTLに割り当て要求を発行する。
【0026】
次に、図2(B)において、管理装置CNTLは、割り当て要求に基づいて、接続装置SWを制御して、CPU1に記憶装置MEM2を接続する。CPU1は、例えば、記憶装置MEM1、MEM2に重複してデータを書き込む。CPU1は、記憶装置MEM2へのデータの書き込みを開始した後に管理装置CNTLに開放要求を発行する。
【0027】
次に、図2(C)において、管理装置CNTLは、開放要求に基づいて、接続装置SWを制御して、CPU1から記憶装置MEM1を切り離す。この後、CPU1は、キャプチャされたデータを記憶装置MEM2に書き込む。CPU1は、記憶装置MEM2に所定量のデータを書き込んだことに基づいて、管理装置CNTLに割り当て要求を発行する。
【0028】
管理装置CNTLが、データを書き込む記憶装置MEM2をCPU1に接続し、データの書き込みが完了した記憶装置MEM1をCPU1から切り離すことで、CPUは、記憶装置MEM1の接続による干渉を受けることなく、記憶装置MEM2にアクセスできる。すなわち、CPU1が記憶装置MEM2にデータを書き込む場合に、データを書き込まない他の記憶装置MEM1、MEM3がデータの書き込みに干渉することを抑止できる。これにより、CPUは、記憶装置MEMに対するデータの書き込み性能を維持できる。
【0029】
次に、図2(D)において、管理装置CNTLは、割り当て要求に基づいて、接続装置SWを制御して、CPU1は、記憶装置MEM2に所定量のデータを書き込んだことに基づいて、管理装置CNTLに割り当て要求を発行する。そして、図2(B)と同様に、管理装置CNTLは、CPU1と記憶装置MEM3とを接続する。CPU1は、キャプチャされたデータを記憶装置MEM2、MEM3に書き込み、記憶装置MEM3へのデータの書き込みを開始した後に管理装置CNTLに開放要求を発行する。
【0030】
次に、図2(E)において、管理装置CNTLは、開放要求に基づいて、接続装置SWを制御して、CPU1から記憶装置MEM2を切り離す。CPU1は、キャプチャされたデータを記憶装置MEM3に書き込む。CPU1は、記憶装置MEM2に所定量のデータを書き込んだことに基づいて、管理装置CNTLに割り当て要求を発行する。
【0031】
次に、図2(F)において、データが書き込まれていない未使用の記憶装置MEMがないため、管理装置CNTLは、割り当て要求に基づいて、他の記憶装置MEMに比べて古いデータを保持した記憶装置MEMをCPU1に接続する。この例では、管理装置CNTLは、最も古いデータを保持した記憶装置MEM1をCPU1に接続する。CPU1は、キャプチャされたデータを記憶装置MEM3に書き込むとともに、キャプチャされたデータを記憶装置MEM1に上書きする。
【0032】
この後、CPU1は、管理装置CNTLによる管理に基づいて、キャプチャされたデータを順次に古いデータを保持した記憶装置MEMに上書きする。このように、データが書き込まれていない未使用の記憶装置MEMがない場合に、CPU1が古いデータを保持した記憶装置MEMにデータを書き込むことで、有限の数の記憶装置MEMを用いて、キャプチャされたデータを保持できる。
【0033】
なお、情報処理システムSYSに配置されるデータのキャプチャ用の記憶装置MEMの数は、記憶装置MEMに保持するデータの保存期間に依存して決められる。この例では、図2(F)に示した記憶装置MEM1は、データの保存期間が経過しており、記憶装置MEM1が保持するデータは検索動作の対象ではない。
【0034】
図3は、図1に示した情報処理システムSYSの動作の別の例を示す。図3は、情報処理システムの制御方法を示している。図3の動作は、管理装置CNTLが制御プログラムの1つである検索プログラムを実行することにより実現される。
【0035】
この例では、図2(C)と同様の状態である図3(A)において、管理装置CNTLは、情報処理システムSYSの外部(例えば、データセンタ)から検索要求を受信する。
【0036】
図3(B)において、管理装置CNTLは、検索要求に基づいて、接続装置SWを制御して、データを保持した記憶装置MEM1、MEM2のいずれかにCPU2を接続する。
【0037】
例えば、管理装置CNTLは、データが生成された時刻(すなわち、データがキャプチャされた日時)を示す時刻情報を、データが書き込まれた記憶装置毎に記憶する記憶部TBLを有する。例えば、管理装置CNTLは、各記憶装置MEMに最初に書き込んだデータがキャプチャされた時刻を、記憶部TBLに書き込む。なお、記憶部は、管理装置CNTLの外部に配置されてもよい。
【0038】
管理装置CNTLは、検索要求に含まれる検索キーが示す時刻情報に対応するデータを保持する記憶装置MEM(この例では、MEM1)を、記憶部TBLに記憶した時刻情報に基づいて特定し、特定した記憶装置MEMをCPU2に接続する。図3において、接続装置SW内の破線は、検索動作を実行するCPU2と検索対象の記憶装置MEMとが接続されることを示す。
【0039】
CPU2は、管理装置CNTLを介して受信する検索要求(検索キー)に基づいて、記憶装置MEM1に保持されたデータを検索し、検索結果を管理装置CNTLに通知する。このように、CPU2および記憶装置MEM1は、検索要求に基づいてデータを検索する検索サーバとして動作する。
【0040】
一方、図3(C)において、管理装置CNTLは、検索要求で指示された検索対象の記憶装置MEMがデータをキャプチャ中の記憶装置MEM2である場合、図2(D)と同様に、接続装置SWを制御して、CPU1に記憶装置MEM3を接続する。
【0041】
次に、図3(D)に示すように、管理装置CNTLは、CPU1から記憶装置MEM2を切り離す。この場合、記憶装置MEM2に書き込まれたデータが所定量に満たない場合にも、所定量が書き込まれたことにする(図3(D)の太枠のMEM2)。そして、管理装置CNTLは、CPU1から切り離した記憶装置MEM2をCPU2に接続し、CPU2に検索動作を実行させる。これにより、CPU1によりデータが書き込まれる記憶装置MEMと、CPU2により検索される記憶装置MEMとが重複することがなくなり、CPU1は、記憶装置MEMの帯域を下げることなく、記憶装置MEMにデータを安定して書き込みできる。
【0042】
次に、図3(E)に示すように、例えば、検索要求に応答する検索動作が終了した場合、管理装置CNTLは、CPU2と記憶装置MEMとの接続を解除し、検索サーバとしての動作を完了する。
【0043】
この実施形態では、検索要求に応答して実行される検索動作は、データのキャプチャ動作を実行するCPU1とは異なるCPU2により実行される。キャプチャサーバとして動作するCPU1は、検索動作を実行しないため、キャプチャ動作を集中して実行できる。この結果、CPU1は、音声データのようにスループットの高いデータを、検索要求の有無に拘わらず、記憶装置MEM1−MEM3に安定して書き込みできる。
【0044】
図4は、図1に示した情報処理システムSYSの動作のさらなる別の例を示す。図4は、情報処理システムの制御方法を示している。図4の動作は、管理装置CNTLが制御プログラムの1つである検査プログラムを実行することにより実現される。
【0045】
この例では、CPU1は、キャプチャされたデータを複数の記憶装置MEMに冗長に書き込む。すなわち、情報処理システムSYSは、データをミラーリングするRAID1(Redundant Arrays of Independent Disks)の機能を有する。このため、図4では、データを冗長に保持する3つの記憶装置ペア(MEM1、MEM2)、(MEM3、MEM4)、(MEM5、MEM6)を示す。記憶装置MEM7、MEM8は、故障した記憶装置MEM1−MEM6と交換されるスペアである。
【0046】
図4(A)は、図2(E)に対応する状態において、CPU3が、データを冗長に保持する記憶装置ペア(MEM1、MEM2)のうち記憶装置MEM1を検査する状態を示す。図4において、接続装置SW内の一点鎖線は、検査動作を実行するCPU3と検査対象の記憶装置MEMとが接続されることを示す。CPU1は、CPU3による記憶装置MEM1の検査中に、検査とは独立して記憶装置ペア(MEM5、MEM6)にデータを冗長に書き込む。
【0047】
管理装置CNTLは、検査する記憶装置MEMを、CPU1によるキャプチャ動作を実行していない記憶装置MEM(この例では、MEM1−MEM4のいずれか)から選択する。CPU3は、記憶装置MEM1の検査の完了後、検査結果を管理装置CNTLに通知する。このように、CPU3は、記憶装置MEMに保持されたデータを検査する検査サーバとして動作する。管理装置CNTLは、CPU3から記憶装置MEM1の検査結果を受信後、接続装置SWを制御して、CPU3と記憶装置MEM1との接続を解除する。
【0048】
図4(B)において、管理装置CNTLは、検査結果が記憶装置MEM1の故障を示す場合に、接続装置SWを制御して、記憶装置MEM2と未使用の記憶装置MEM7とをCPU3に接続する。そして、管理装置CNTLは、記憶装置MEM2に保持された冗長データを、記憶装置MEM7にコピーすることをCPU3に指示する。CPU3は、記憶装置MEM2に保持された冗長データを記憶装置MEM7にコピーする。
【0049】
次に、管理装置CNTLは、故障した記憶装置MEM1のCPU1に対する割り当てを記憶装置MEM7に変更する。これにより、キャプチャサーバとして動作するCPU1は、これ以降に記憶装置MEM2にデータを書き込む場合、記憶装置MEM1ではなく記憶装置MEM7にも冗長データを書き込む。
【0050】
管理装置CNTLは、記憶装置MEM2から記憶装置MEM7への冗長データのコピー後、接続装置SWを制御して、CPU3から記憶装置MEM2、MEM7を切り離す。
【0051】
このように、管理装置CNTLは、データを書き込むCPU1の動作とは関係なく、記憶装置MEM1の故障を検出し、故障した記憶装置MEM1とペアの記憶装置MEM2から他の記憶装置MEM7に冗長データをコピーできる。すなわち、管理装置CNTLは、CPU1によるデータの記憶装置MEMへの書き込み動作と独立して、データを保持する他の記憶装置MEMのエラー検出とエラー訂正ができる。
【0052】
一方、管理装置CNTLは、検査結果が修復可能なエラーを示す場合に、接続装置SWを制御して、CPU3に記憶装置MEM1、MEM2を接続する。そして、管理装置CNTLは、記憶装置MEM2に保持されたデータを、エラーが発生した記憶装置MEM1にコピーすることをCPU3に指示する。CPU3は、記憶装置MEM2に保持されたデータを、エラーが発生した記憶装置MEM1にコピーし、記憶装置MEM1に発生したデータのエラーを修復する。管理装置CNTLは、記憶装置MEM1のエラーを修復後、接続装置SWを制御して、CPU3から記憶装置MEM1、MEM2を切り離す。
【0053】
このように、管理装置CNTLは、データを書き込むCPU1の動作とは関係なく、記憶装置MEM1のエラーを検出し、記憶装置MEM1とペアの記憶装置MEM2から記憶装置MEM1にデータをコピーすることでエラーを訂正できる。換言すれば、キャプチャサーバとして動作するCPU1は、検査を実行するCPU3とは独立に動作するため、データを記憶装置MEMに安定して書き込みできる。
【0054】
図4(C)は、記憶装置MEM1の修復可能なエラーが修復された後の状態を示す。管理装置CNTLは、記憶装置MEM1の検査の完了後、次に検査する記憶装置MEM2をCPU3に接続する。そして、管理装置CNTLは、CPU3に、記憶装置MEM2の検査を指示する。このように、管理装置CNTLは、CPU3に接続する記憶装置MEMを順に切り替えて検査を実行する。
【0055】
なお、図4(C)では、CPU1によるキャプチャ動作の実行中で、CPU3による検査動作の実行中に、管理装置CNTLは、検索要求を受け、CPU2により検索動作を実行する例を示す。この例では、管理装置CNTLは、記憶部TBLを参照することで、検索対象のデータが記憶装置ペア(MEM1、MEM2)に含まれることを検出する。そして、管理装置CNTLは、記憶装置ペア(MEM1、MEM2)のうち、検査が実行されない記憶装置MEM1を用いて検索動作を実行する。
【0056】
このように、記憶装置MEMが順次に検査される場合にも、キャプチャサーバとして動作するCPU1は、検査動作を実行しないため、キャプチャ動作を集中して実行できる。このため、図3と同様に、検査動作が実行される場合にも、CPU1は、音声データのようにスループットの高いデータを記憶装置MEM1−MEM3に安定して書き込みできる。さらに、図4(C)に示したように、検査動作、検索動作およびキャプチャ動作が重複して実行される場合にも、CPU1は、データを記憶装置MEM5、MEM6に安定して書き込みできる。
【0057】
以上、図1から図4に示した実施形態では、キャプチャされたデータをCPU1に順次に接続される記憶装置MEMに書き込むことで、他の記憶装置MEMによるデータの書き込みの干渉を抑制でき、データの書き込み性能を維持できる。キャプチャ動作と、検索動作および検査動作の少なくともいずれかが重複して実行される場合にも、CPU1は、検索動作および検査動作の影響を受けることなく、キャプチャされたデータを記憶装置MEMに安定して書き込みできる。
【0058】
図5は、情報処理システム、管理装置、管理装置の制御プログラム、および情報処理システムの制御方法の別の実施形態を示す。
【0059】
この実施形態の情報処理システムSYSは、マザーボードプール100、ストレージドライブプール200、接続装置300および管理装置400を有する。マザーボードプール100は、複数のマザーボードMB(MB1、MB2、MB3、MB4、...、MB7、MB8)を有する。各マザーボードMBは、CPUおよびメモリモジュール等の記憶装置MD(主記憶)を有する。図5では、マザーボードMB1を除いて、CPUおよび記憶装置MDの記載は省略するが、マザーボードMB2−MB8は、マザーボードMB1と同一または同様の構成を有する。なお、情報処理システムSYSは、CPUの代わりに、プログラムを実行することで動作するDSPやGPU等のプロセッサを有してもよい。
【0060】
各マザーボードMBに搭載されるCPUの数は複数でもよく、CPUに搭載されるプロセッサコアの数は複数でもよい。例えば、記憶装置MDは、DRAMチップを含むDIMMである。マザーボードMBは、ネットワークNWに接続される。マザーボードMBは、情報処理装置の一例である。この例では、マザーボードプール100は、8個のマザーボードMB1−MB8を有するが、マザーボードMBの数は8個に限定されない。
【0061】
図5は、図9に示すデータのキャプチャ動作を実現するシステムの構成を示しており、マザーボードMB1、MB2の入力ポートは、スイッチ装置500のミラーポートMPにそれぞれ接続される。なお、マザーボードMB1、MB2の入力ポートは、中継器の一種であるスイッチを介してスイッチ装置500のミラーポートMPに接続されてもよい。
【0062】
例えば、スイッチ装置500は、データセンタ等に設けられ、通信回線上を伝送されるデータをモニタする被キャプチャスイッチとして機能する。キャプチャ対象のデータは、例えば、携帯電話で通話中の音声データである。そして、この実施形態の情報処理システムSYSは、スイッチ装置500から供給される音声データをリアルタイムでキャプチャするキャプチャ装置として動作する。
【0063】
また、情報処理システムSYSは、例えば、通信回線等で通信障害が発生した場合に、通信障害が発生した日時の音声データを検索する検索装置として動作する。データセンタのコンピュータ装置は、検索された音声データに含まれる雑音等を解析することで、通信障害の原因を調べる。さらに、情報処理システムSYSは、ストレージドライブプール200に保持されたデータにエラーが発止した場合、エラーを訂正するエラー訂正装置として動作する。
【0064】
ストレージドライブプール200は、複数のハードディスクドライブHDD(HDD1、HDD2、...、HDD31、HDD32)を有する。ハードディスクドライブHDDは、記憶装置の一例である。この例では、ストレージドライブプール200は、32個のハードディスクドライブHDD1−HDD32を有するが、ハードディスクドライブHDDの数は、32個に限定されない。以下の説明では、ハードディスクドライブHDDは、HDDとも称される。なお、ストレージドライブプール200は、記憶装置として、ハードディスクドライブHDDの代わりに、複数のフラッシュメモリチップを含むフラッシュストレージ(SSD;Solid State Drive)やDIMMを有してもよい。
【0065】
接続装置300は、マザーボードMBのいずれかをHDDの少なくともいずれかに接続するインターコネクト装置である。接続装置300の例は、図6に示す。接続装置300を介して互いに接続されたマザーボードMBおよびHDD間のデータ転送速度は、例えば、HDD1台当たり6Gbps(Gigabit per second)である。すなわち、マザーボードMBに接続されたHDDは、サーバのローカルディスクと同様のアクセス性能を有し、接続装置300を介して互いに接続されたマザーボードMBおよびHDDは、サーバ等の情報処理装置として動作可能である。
【0066】
HDDに接続されないマザーボードMBは、情報処理システムSYSの動作に寄与しない未使用のマザーボードMBであり、マザーボードMBに接続されないHDDは、情報処理システムSYSの動作に寄与しない未使用のHDDである。なお、未使用のマザーボードMBおよび未使用のHDDに供給される電源は、管理装置400の制御に基づいて遮断されてもよい。
【0067】
図5では、マザーボードMB1とHDD1、HDD2、HDD29とが互いに接続され、マザーボードMB2とHDD3、HDD4、HDD30とが互いに接続された状態を模式的に示す。そして、OS(Operating System)およびデータをHDDに書き込むキャプチャプログラムが、HDD29、HDD30にインストールされる。
【0068】
マザーボードMB1は、プログラムを実行することで、キャプチャされたデータをHDD1、HDD2に書き込み、マザーボードMB2は、プログラムを実行することで、キャプチャされたデータをHDD3、HDD4に書き込む。
【0069】
データのキャプチャに使用するHDDの台数Mは、データをキャプチャする最大速度をMSPとし、HDD1台当たりのデータ転送速度をHSPとすると、式(1)で示される。
M=MSP/HSP …(1)
但し、台数Mは、式(1)を切り上げ処理することで求められる。最大速度MSPは、データをキャプチャする通信のプロトコルに依存する定数である。HDDのデータ転送速度HSPは、HDDの仕様または実測値である。例えば、データセンタがデータをキャプチャする速度は10Gbps(毎秒10ギガビット)であり、HDDのデータ転送速度は、連続書き込みでは100MB/s(毎秒100メガバイト)である。このとき必要なHDDは13台である。なお、マザーボードMB1が2台のHDDに冗長にデータを書き込む場合、式(1)で求めた台数Mの2倍のHDDがマザーボードMB1に接続される。
【0070】
管理装置400は、ネットワークNWおよび接続装置300の管理ポートCNTPに接続される。管理装置400は、管理ポートCNTPを介して接続装置300を制御することで、マザーボードMBとHDDとを接続し、あるいは、マザーボードMBとHDDとの接続を解除する。また、管理装置400は、HDDに接続されないマザーボードMBへの電源の供給を遮断する機能と、マザーボードMBに接続されないHDDへの電源の供給を遮断する機能とを有する。すなわち、サーバ等の情報処理装置として機能しないマザーボードMBおよびHDDは、電源が遮断され、電力を消費しない。
【0071】
ネットワークNWは、例えば、LAN(Local Area Network)である。この実施形態では、マザーボードMB1−MB8および管理装置400に加えて、コンソールCNSLおよび記憶装置BTがネットワークNWに接続される。コンソールCNSLは、オペレータにより操作され、情報処理システムSYSを管理する。例えば、情報処理システムSYSは、コンソールCNSLに入力される指示に基づいて、データのHDDへの書き込み動作やHDDに保持されたデータの検索動作を実行する。
【0072】
例えば、記憶装置BTは、ハードディスクドライブHDDであり、マザーボードMBのCPUが実行するOSおよびソフトウェア(アプリケーションプログラム)を格納する。OSおよびソフトウェアは、コンソールCNSLに入力される指示に基づいて、所定のHDDにインストールされ、マザーボードMBのCPUにより実行可能になる。
【0073】
図6は、図5に示した接続装置300の例を示す。接続装置300は、マザーボードプール100に接続されたポートP(i、j)とストレージドライブプール200に接続されたポートPnを有する。ここで、iは整数1−8のいずれかであり、マザーボードMBの番号を示す。jは整数1−8のいずれかであり、各マザーボードMBのポートの番号を示す。すなわち、ポート(i、j)は、マザーボードMBiの8つのポートにそれぞれ接続される。nは整数1−32のいずれかであり、HDDの番号を示す。なお、以下の説明では、ポートP(i、j)は、マザーボードMBを示す場合にも使用され、ポートPnは、HDDを示す場合にも使用する。
【0074】
図7は、図5に示した管理装置400の例を示す。管理装置400は、ネットワークインタフェースNWIF、CPU4、接続インタフェースCNIF、ROM(Read Only Memory)、RAM(Random Access Memory)および記憶装置MD4(主記憶)を有する。CPU4は、ネットワークインタフェースNWIFを介してネットワークNWに接続され、接続インタフェースCNIFを介して接続装置300の管理ポートCNTPに接続される。管理装置400に搭載されるCPU4の数は複数でもよく、CPU4に搭載されるプロセッサコアの数は複数でもよい。
【0075】
例えば、ROMは、管理装置400の起動時にCPU4が実行するブートプログラムを記憶する。例えば、RAMは、管理装置400の起動後にCPU4が実行するプログラムを記憶する。
【0076】
例えば、記憶装置MD4は、DRAMチップを含むDIMMであり、管理装置400は、マザーボードMBと同様の構成を有する。このため、例えば、マザーボードプール100内のマザーボートMBの1つが、管理装置400として使用されてもよい。
【0077】
管理装置400のCPU4は、記憶装置MD4の記憶領域に割り当てられた8つのテーブルTBL(MBTBL、HDDTBL、CNTBL、MSTBL、HSTBL、INDTBL、CHKTBL、FAILTBL)を管理する。CPU4は、8つのテーブルTBLに保持された情報に基づいて、接続装置300によるマザーボードMBとHDDとの接続を管理し、検索動作を実行し、HDDのエラーを管理する。テーブルMBTBL、HDDTBL、CNTBL、MSTBL、HSTBL、INDTBL、CHKTBL、FAILTBLの例は、図8に示す。
【0078】
なお、情報処理システムSYSが、HDDのエラーを管理しない場合、記憶装置MD4は、テーブルCHKTBL、FAILTBLが割り当てられた記憶領域を持たない。
【0079】
記憶装置MD4は、8つのテーブルTBLに加えて、CPU4が実行するオペレーティングシステムOS4および制御プログラムPGM4を格納する領域を有する。CPU4は、ブートプログラムの実行により記憶装置MD4からRAMにオペレーティングシステムOS4および制御プログラムPGM4を転送する。そして、CPU4は、RAM上のオペレーティングシステムOS4および制御プログラムPGM4を実行することで、管理装置400の機能を実現する。
【0080】
図8は、図7に示した記憶装置MD4内に割り当てられるテーブルMBTBL、HDDTBL、CNTBL、MSTBL、HSTBL、INDTBL、CHKTBL、FAILTBLの例を示す。テーブルMBTBL、CNTBLの”MBPNo”の領域には、接続装置300におけるマザーボードMB側のポート番号が格納される。テーブルHDDTBL、CNTBLの”HDDPNo”の領域には、接続装置300におけるHDD側のポート番号が格納される。テーブルMSTBLの”MBNo”の領域には、マザーボードMBの番号が格納される。テーブルINDTBL、HSTBL、CHKTBL、FAILTBLの”HDDNo”の領域には、HDDの番号が格納される。”null”は、その領域に情報が存在せず、空白であることを示す。
【0081】
なお、図8は、管理装置400の起動後に、テーブルMBTBL、HDDTBLが設定された状態を示す。このため、テーブルCNTBL、MSTBL、HSTBLは、初期状態である。
【0082】
テーブルMBTBLは、図6に示したマザーボードMBのポートと接続装置300との接続関係を保持する。テーブルHDDTBLは、図6に示したHDDと接続装置300との接続関係を保持する。テーブルMBTBL、HDDTBLの情報は、情報処理システムSYSハードウェア構成により決まり、情報処理システムSYSの起動時に設定ファイルから読み込んで記憶装置MD4に格納される。設定ファイルは、ROMに記憶されてもよく、管理装置400の外部から転送されてもよい。
【0083】
テーブルCNTBLは、接続装置300によるマザーボードMBとHDDとの接続仕様の情報が格納される。すなわち、接続装置300を介して接続されるマザーボードMBとHDDとの接続関係は、テーブルCNTBLにより示される。テーブルMSTBLは、マザーボードMBの使用状態を示す。テーブルINDTBLには、データをキャプチャした時間を示すタイムスタンプ(開始時刻および終了時刻)の索引の情報がHDD毎に格納される。テーブルINDTBLは、データが生成された時刻を示す時刻情報を、データが書き込まれたHDD毎に記憶する記憶部の一例である。データが生成された時刻は、データがキャプチャされた時刻であり、日時の情報を含む。
【0084】
テーブルHSTBLは、HDDの使用状態を示す。なお、この実施形態では、テーブルHSTBLに示されるように、24台のHDD1−HDD24はデータのキャプチャ用に使用され、4台のHDD25−HDD28はスペア用に使用され、4台のHDD29−HDD32は起動用に使用される。
【0085】
テーブルCHKTBLには、HDDを検査した時刻を示す情報が格納される。テーブルFAILTBLには、故障したHDDの情報またはエラーが発生したHDDの記憶領域の情報が格納される。テーブルFAILTBLの”種別”の領域には、HDDが故障したことを示す情報またはHDDに修復可能なエラーが発生したことを示す情報が格納される。テーブルFAILTBLの”アドレス”の領域には、修復可能なエラーが発生した領域のアドレスを示す情報が格納される。
【0086】
図9は、図5に示した情報処理システムSYSが実行するキャプチャ動作のシーケンスの例を示す。すなわち、図9は、キャプチャ装置として動作する情報処理システムSYSのシーケンスの例を示す。以下の説明では、管理装置400の動作は、管理装置400のCPU4による動作を含み、マザーボードMBの動作は、マザーボードMBのCPUによる動作を含む。
【0087】
この実施形態では、図5に示したように、マザーボードMB1、MB2の各々がキャプチャ装置として動作し、スイッチ装置400のミラーポートMPから供給される音声データをHDDに格納する。しかしながら、図が複雑になることを避けるため、マザーボードMB2に関するシーケンスは省略し、マザーボードMB2に接続されるHDD30、HDD3、HDD4、HDD7、HDD8の動作を破線の矩形枠で示す。また、マザーボードMB1は、キャプチャされたデータをHDD1、HDD2に分散して書き込み、マザーボードMB2は、キャプチャされたデータをHDD3、HDD4に分散して書き込む。
【0088】
マザーボードMB2によるキャプチャ動作のシーケンスは、マザーボードMB1によるキャプチャ動作のシーケンスと同様である。マザーボードMB2によるキャプチャ動作のシーケンスは、図9のMB1、HDD29、HDD1、HDD2、HDD5、HDD6を、MB2、HDD30、HDD3、HDD4、HDD7、HDD8と読み替えればよい。
【0089】
管理装置400により実行される管理プロセスは、図9のシーケンスが開始される前に開始される。管理プロセスは、図7に示した制御プログラムPGM4により実行される。図9のシーケンスの開始時に、全てのマザーボードMBとHDDとの接続は解除される。すなわち、図8に示したように、テーブルCNTBLの全ての領域は、”null”であり、テーブルMSTBL、HSTBLの状態は”未使用”である。管理プロセスが起動するキャプチャ開始スレッドおよび切り替えスレッドを実行する制御プログラムは、図7に示した記憶装置MD4およびRAMに予め格納される。
【0090】
管理装置400は、コンソールCNSLからのキャプチャ開始の指示に基づいて、キャプチャ開始スレッドを実行する(図9(a))。例えば、キャプチャ開始スレッドは、マザーボードMB1とHDD29とを接続する制御情報を接続装置300に出力する。接続装置300は、制御情報に基づいてマザーボードMB1とHDD29とを接続する。キャプチャ開始スレッドは、マザーボードMB1とHDD29とが互いに接続された後、マザーボードMB1を介してHDD29にOSおよびキャプチャプログラムCPをインストールする。例えば、インストールは、キックスタートなどのリモートインストール手法により、図5に示した記憶装置BTからデータを転送することにより実行される。
【0091】
HDD29へのOSおよびキャプチャプログラムCPのインストール後、マザーボードMB1は再起動される。マザーボードMB1のCPUは、OSの実行を開始し、HDD29のアクセスを開始する。また、マザーボードMB1は、インストールが完了したことを示す完了応答を管理装置400に送信する。
【0092】
キャプチャ開始スレッドは、インストールの完了応答の受信に基づいて、マザーボードMB1にキャプチャプロセスを起動する指示を出力する。マザーボードMB1は、キャプチャプロセスを起動する指示に基づいて、キャプチャプログラムCPにより実行されるキャプチャプロセスを開始する(図9(b))。キャプチャプロセスは、割り当て要求スレッドを起動し、キャプチャしたデータを格納するHDDの割り当て要求を管理装置400に出力する(図9(c))。
【0093】
管理プロセスは、割り当て要求に基づいて、切り替えスレッドを起動し、マザーボードMB1とHDD1、HDD2とを接続する制御情報を接続装置300に出力する(図9(d))。接続装置300は、制御情報に基づいてマザーボードMB1とHDD1、HDD2とを接続する。キャプチャプロセスは、マザーボードMB1とHDD1、HDD2とが互いに接続された後、キャプチャ動作を開始し、音声データをHDD1、HDD2に分散して書き込む。
【0094】
キャプチャプロセスは、各HDD1、HDD2に所定量のデータが格納されたことに基づいて、割り当て要求スレッドを起動し、キャプチャしたデータを書き込む未使用のHDDの割り当て要求を管理装置400に出力する(図9(e))。
【0095】
管理プロセスは、割り当て要求に基づいて、切り替えスレッドを起動し、マザーボードMB1とHDD5、HDD6とを接続する制御情報を接続装置300に出力する(図9(f))。接続装置300は、制御情報に基づいてマザーボードMB1とHDD5、HDD6とを接続する。キャプチャプロセスは、マザーボードMB1とHDD5、HDD6とが互いに接続された後、キャプチャ動作を開始し、音声データをHDD5、HDD6に分散して書き込む。すなわち、マザーボードMB1は、HDD1、HDD2に書き込む音声データを、HDD5、HDD6にも重複して書き込む。
【0096】
キャプチャプロセスは、HDD5、HDD6へのデータの書き込みが開始された後、HDD1、HDD2へのデータの書き込みを終了する。キャプチャプロセスは、HDD1、HDD2へのデータの書き込みを終了した後、開放要求スレッドを起動し、HDD1、HDD2をマザーボードMB1から切り離す開放要求を管理装置400に出力する(図9(g))。
【0097】
管理プロセスは、開放要求に基づいて、切り替えスレッドを起動し、マザーボードMB1とHDD1、HDD2との接続を解除する制御情報を接続装置300に出力する(図9(h))。接続装置300は、制御情報に基づいてマザーボードMB1とHDD1、HDD2との接続を解除する。この後、キャプチャプロセスは、データをHDD5、HDD6に書き込み、各HDD5、HDD6に所定量のデータが格納されたことに基づいて、割り当て要求スレッドを起動する。管理プロセスは、割り当て要求に基づいて、未使用の2台のHDDをマザーボードMB1に接続し、開放要求に基づいて、HDD5、HDD6をマザーボードMB1から切り離す。以降、同様の動作が実行され、複数組のHDDにデータが順次に書き込まれる。
【0098】
なお、割り当て要求に基づいてマザーボードMB1に接続する未使用のHDDがない場合、切り替えスレッドは、他のHDDに比べて古いデータを保持したHDDをマザーボードMB1に接続する制御を実行する。
【0099】
図10は、図9(a)に示したキャプチャ開始スレッドにより起動用のHDDがマザーボードMBに接続された後のテーブルTBLの状態の例を示す。換言すれば、図10は、キャプチャ開始スレッドがキャプチャプロセスを起動する前の状態を示す。図10において、網掛けで示した領域は、図8に対して変化した箇所を示す。なお、図8に示したテーブルMBTBL、HDDTBL、CHKTBL、FAILTBLは、状態が変化しないため、記載は省略する。
【0100】
テーブルCNTBLは、ポートP(1、8)に対応するマザーボードMB1にポートP29に対応するHDD29が接続され、ポートP(2、8)に対応するマザーボードMB2にポートP30に対応するHDD30が接続されたことを示す。テーブルMSTBLは、マザーボードMB1、MB2がデータのキャプチャ動作を実行することを示す。テーブルHSTBLは、HDD29、HDD30がOSおよびキャプチャプログラムCPのインストールおよび起動に使用されることを示す。
【0101】
テーブルMSTBLにおいて、”未使用”状態のマザーボードMB3、MB4は、電源が遮断され、電力を消費しない。テーブルHSTBLにおいて、”未使用”状態のHDDは、電源が遮断され、電力を消費しない。動作させないマザーボードMBおよびHDDへの電源の供給を遮断することで、電源を供給する場合に比べて情報処理システムSYSの消費電力を削減できる。
【0102】
図11は、図9(b)に示したキャプチャプロセスが、HDD1−HDD4にデータの書き込みを開始した後のテーブルTBLの状態の例を示す。図11において、網掛けで示した領域は、図10に対して変化した箇所を示す。
【0103】
図11に示した状態では、マザーボードMB1によるHDD1、HDD2へのデータの書き込みと、マザーボードMB2によるHDD3、HDD4へのデータの書き込みが分散して実行される。このため、テーブルCNTBLでは、図10の状態に加えて、マザーボードMB1およびHDD1、HDD2の接続を示す情報と、マザーボードMB2およびHDD3、HDD4の接続を示す情報とが格納される。
【0104】
テーブルHSTBLでは、HDD1、HDD2、HDD3、HDD4の状態が”キャプチャ中”に設定される。テーブルINDTBLでは、HDD1−HDD4に対応する開始時刻の領域に日時t1、t2、t3、t4を示す情報がそれぞれ格納され、HDD1−HDD4に対応する終了時刻の領域に”キャプチャ中”を示す情報が格納される。日時t1−t4は、キャプチャされたデータの各HDDへの書き込みが開始された日時であり、各HDDに書き込まれるデータがキャプチャされた日時を示す。
【0105】
図12は、図9(e)に示した割り当て要求スレッドの処理後に、キャプチャプロセスがHDD1−HDD4に並行してHDD5−HDD8へのデータの書き込みを開始した後のテーブルTBLの状態の例を示す。図12において、網掛けで示した領域は、図11に対して変化した箇所を示す。
【0106】
テーブルCNTBLでは、図11の状態に加えて、マザーボードMB1とHDD5、HDD6との接続を示す情報と、マザーボードMB2とHDD7、HDD8との接続を示す情報とが格納される。テーブルMSTBLは、図11と同様である。テーブルHSTBLでは、HDD1−HDD4の状態に加えて、HDD5−HDD8の状態が”キャプチャ中”に設定される。テーブルINDTBLでは、HDD5−HDD8に対応する開始時刻の領域に日時t5、t6、t7、t8を示す情報がそれぞれ格納される。日時t5−t8は、日時t1−t4と同様に、キャプチャされたデータの各HDDへの書き込みが開始された日時であり、各HDDに書き込まれるデータがキャプチャされた日時を示す。
【0107】
図13は、図9(g)に示した開放要求スレッドにより、マザーボードMB1、MB2からHDD1−HDD4が切り離された後のテーブルTBLの状態の例を示す。図13において、網掛けで示した領域は、図12に対して変化した箇所を示す。
【0108】
テーブルCNTBLでは、図12に比べて、マザーボードMB1とHDD1、HDD2との接続を示す情報およびマザーボードMB2とHDD3、HDD4との接続を示す情報が削除される。テーブルMSTBLは、図11と同様である。
【0109】
テーブルHSTBLでは、HDD5、HDD6、HDD7、HDD8の状態が”キャプチャ中”に設定されたまま、HDD1、HDD2、HDD3、HDD4が”待機中”に設定される。ここで、”待機中”は、HDD1、HDD2、HDD3、HDD4が有効なキャプチャデータを保持中であることを示す。
【0110】
テーブルHSTBLにおいて、”未使用”状態のHDDおよび”待機中”状態のHDDは、電源が遮断され、電力を消費しない。データのキャプチャ後に、データを保持するHDDの電源を遮断することで、データを保持するHDDに電源を供給する場合に比べて情報処理システムSYSの消費電力を削減できる。
【0111】
テーブルINDTBLでは、HDD1−HDD4に対応する終了時刻の領域に日時t1’、t2’、t3’、t4’を示す情報が格納される。日時t1’−t4’は、各HDDに最後に書き込まれたデータの書き込み日時であり、各HDDに最後に書き込まれたデータがキャプチャされた日時を示す。
【0112】
図14は、キャプチャ用の全てのHDD1−HDD24にデータが保持された場合のテーブルTBLの状態の例を示す。図14において、網掛けで示した領域は、図13に対して変化した箇所を示す。
【0113】
テーブルCNTBLでは、図13に比べて、マザーボードMB1とHDD5、HDD6との接続を示す情報が削除され、マザーボードMB1とHDD21、HDD22との接続を示す情報が格納される。また、テーブルCNTBLでは、図13に比べて、マザーボードMB2とHDD7、HDD8との接続を示す情報が削除され、マザーボードMB2とHDD23、HDD24との接続を示す情報が格納される。
【0114】
テーブルMSTBLは、図11と同様である。テーブルHSTBLでは、有効なキャプチャデータを保持中のHDD1−HDD20の状態は、”待機中”に設定され、キャプチャ動作中のHDD21−HDD24の状態は、”キャプチャ中”に設定される。
【0115】
テーブルINDTBLでは、HDD1−HDD20に対応する開始時刻の領域に日時t1−t20を示す情報が格納され、HDD1−HDD20に対応する終了時刻の領域に日時t1’−t20’を示す情報が格納される。なお、便宜上、開始時刻および終了時刻の数値は、HDDの番号とする。また、HDD22−HDD24に対応する開始時刻の領域に日時t21、t22、t23、t24が格納され、HDD22−HDD24に対応する終了時刻の領域に”キャプチャ中”を示す情報が格納される。
【0116】
日時t9−t24は、日時t1−t4と同様に、キャプチャされたデータの各HDDへの書き込みが開始された日時である。日時t5’−t20’は、日時t1’−t4’と同様に、各HDDに最後に書き込まれたデータの書き込み日時である。
【0117】
図15は、データが保持されたHDDにデータを上書きする場合のテーブルTBLの状態の例を示す。図15において、網掛けで示した領域は、図14に対して変化した箇所を示す。
【0118】
データのHDD21−HDD24への書き込みが開始されると、キャプチャ用のHDDで状態が”未使用”のHDDは無くなる。このため、所定量のデータがHDD21−HDD24に書き込まれた場合、データは、待機中のHDDのうち最も古いデータを保持するHDD1−HDD4に上書きされる。
【0119】
テーブルCNTBL、MSTBLは、図11と同様である。テーブルHSTBLでは、有効なキャプチャデータを保持中のHDD5−HDD24に対応する領域は、”待機中”に設定され、HDD1−HDD4に対応する領域は、”キャプチャ中”に設定される。
【0120】
テーブルINDTBLでは、HDD1−HDD4に対応する開始時刻の領域に新たな日時t25、t26、t27、t28を示す情報がそれぞれ格納され、HDD1−HDD4に対応する終了時刻の領域に”キャプチャ中”を示す情報が格納される。また、テーブルINDTBLでは、HDD21−HDD24に対応する終了時刻の領域に日時t21’、t22’、t23’、t24を示す情報がそれぞれ格納される。日時t25−t28は、日時t1−t4と同様に、キャプチャされたデータの各HDDへの書き込みが開始された日時である。日時t21’−t24’は、日時t1’−t4’と同様に、各HDDに最後に書き込まれたデータの書き込み日時である。
【0121】
図16は、図9に示した管理プロセスの例を示す。管理プロセスは、図7に示した管理装置400のCPU4が制御プログラムPGM4を実行することで実現され、管理装置400の起動後に自動的に起動される。
【0122】
ステップS10において、管理装置400は、図7に示したROMや管理装置400の外部の記憶装置に格納された設定ファイルを読み込み、読み込んだ設定ファイルの情報を、記憶装置MD4内のテーブルMBTBL、HDDTBLに格納する。
【0123】
次に、ステップS12において、制御プログラムPGM4は、テーブルMBTBL、HDDTBLに格納された情報に基づいて、テーブルCNTBL、MSTBL、HSTBL、INDTBLを初期化する。初期化により、テーブルCNTBL、INDTBLでは、全ての領域が”null”に設定される。初期化により、テーブルMSTBLでは、マザーボードMBの状態を示す領域が”未使用”に設定され、テーブルHSTBLでは、HDDの状態を示す領域が未使用に設定される。ステップS12の実行後のテーブルTBLの状態は、図8に示される。
【0124】
次に、ステップS400において、制御プログラムPGM4は、検査スレッドを起動する。検査スレッドの例は、図41に示す。検査スレッドの実行により、HDDの故障が検出され、あるいは、HDDに保持されたデータのエラーが検出され、修復される。なお、情報処理システムSYSが、HDDの故障やエラーの検出、修復機能を持たない場合、ステップS400は実行されない。
【0125】
次に、ステップS16において、制御プログラムPGM4は、マザーボードMBまたはコンソールCNSLからコマンドの受信を待つ。制御プログラムPGM4は、コマンドを受信した場合、処理をステップS18に移行し、コマンドの受信がない場合、ステップS16を繰り返し実行する。
【0126】
ステップS18において、制御プログラムPGM4は、マザーボードMBのいずれかからHDDの割り当て要求を受信したか否かを判定する。制御プログラムPGM4は、割り当て要求を受信した場合、処理をステップS100に移行し、割り当て要求を受信しない場合、処理をステップS20に移行する。
【0127】
ステップS20において、制御プログラムPGM4は、マザーボードMBのいずれかからHDDの開放要求を受信したか否かを判定する。制御プログラムPGM4は、開放要求を受信した場合、処理をステップS100に移行し、開放要求を受信しない場合、処理をステップS24に移行する。
【0128】
ステップS100において、制御プログラムPGM4は、マザーボードMBにHDDを接続し、あるいは、マザーボードMBからHDDを切り離す切り替えスレッドを起動する。制御プログラムPGM4は、切り替えスレッドの起動後、処理をステップS24に移行する。切り替えスレッドの例は、図18に示す。
【0129】
ステップS24において、制御プログラムPGM4は、コンソールCNSLからキャプチャの開始要求を受信したか否かを判定する。制御プログラムPGM4は、キャプチャの開始要求を受信した場合、処理をステップS200に移行し、キャプチャの開始要求を受信しない場合、処理をステップS26に移行する。
【0130】
ステップS200において、制御プログラムPGM4は、データのキャプチャ動作をマザーボードMBに実行させるキャプチャ開始スレッドを起動する。制御プログラムPGM4は、キャプチャ開始スレッドの起動後、処理をステップS16に戻す。キャプチャ開始スレッドの例は、図17に示す。
【0131】
ステップS26において、制御プログラムPGM4は、コンソールCNSLから検索要求を受信したか否かを判定する。制御プログラムPGM4は、検索要求を受信した場合、処理をステップS300に移行し、検索要求を受信しない場合、処理をステップS16に戻す。
【0132】
ステップS300において、制御プログラムPGM4は、HDDに保持されたデータを検索する検索スレッドを起動する。制御プログラムPGM4は、検索スレッドの起動後、処理をステップS16に戻す。検索スレッドの例は、図28および図29に示す。
【0133】
図17は、図16のステップS200により起動されるキャプチャ開始スレッドの例を示す。キャプチャ開始スレッドは、コンソールCNSLからの指示に基づいて、制御プログラムPGM4のCPU4が制御プログラムPGM4を実行することにより実現される。
【0134】
まず、ステップS202において、制御プログラムPGM4は、コンソールCNSLから指定された数のマザーボードMBを選択したか否かを判定する。指定された数のマザーボードMBが選択された場合、処理はステップS212に移行され、選択したマザーボードMBの数が指定された数に満たない場合、処理はステップS204に移行される。
【0135】
ステップS204において、制御プログラムPGM4は、テーブルMSTBLを参照し、未使用のマザーボードMBのいずれかを選択する。次に、ステップS206において、制御プログラムPGM4は、テーブルHSTBLを参照し、起動用のHDDのうち未使用のHDDを選択する。
【0136】
次に、ステップS208において、制御プログラムPGM4は、接続装置300を制御することにより、選択したマザーボードMBと選択した起動用のHDDとを互いに接続する。次に、ステップS210において、制御プログラムPGM4は、テーブルCNTBL、MSTBL、HSTBLを更新する。
【0137】
そして、制御プログラムPGM4は、データのキャプチャ動作を実行する全てのマザーボードMBを選択するまで、ステップS204、S206、S208、S210の処理を繰り返す。例えば、図10に示したように、更新後のテーブルCNTBLは、マザーボードMB1とHDD29とが接続され、マザーボードMB2とHDD30とが接続された状態に設定される。テーブルMSTBLは、マザーボードMB1、MB2が”キャプチャ状態”に設定され、テーブルHSTBLは、HDD29、HDD30が”起動用”に設定される。
【0138】
データのキャプチャ動作を実行する全てのマザーボードMBが選択された場合、ステップS212において、制御プログラムPGM4は、選択したマザーボードMBとHDDとの接続装置300による接続が完了することを待つ。例えば、管理装置は、図5に示した接続装置300の管理ポートCNTPを介して、接続装置300内の情報をモニタすることにより、接続の完了を判定する。
【0139】
マザーボードMBとHDDとの接続が完了した場合、ステップS214において、制御プログラムPGM4は、コンソールCNSLにより指定された数のマザーボードMBの初期化が完了したか否かを判定する。指定された数のマザーボードMBの初期化が完了した場合、処理はステップS222に移行し、初期化が完了していない場合、処理はステップS216に移行する。
【0140】
ステップS216において、制御プログラムPGM4は初期化されていないマザーボードMBのいずれかを選択する。次に、ステップS218において、制御プログラムPGM4は、選択したマザーボードMBに接続された起動用のHDDに、選択したマザーボードMBを介してOSとキャプチャプログラムCPをインストールする。インストールは、キックスタートなどのリモートインストール手法を用いて実行される。次に、ステップS220において、制御プログラムPGM4は、選択したマザーボードMBを再起動する。再起動されたマザーボードMBは、OSを実行し、キャプチャプロセスを実行可能な状態になる。
【0141】
コンソールCNSLにより指定された数のマザーボードMBの初期化が完了した場合、ステップS222において、制御プログラムPGM4は、マザーボードMBが再起動されることを待つ。次に、ステップS224において、制御プログラムPGM4は、コンソールCNSLにより指定された数のマザーボードMBがキャプチャプロセスの起動を完了したか否かを判定する。指定された数のマザーボードMBのキャプチャプロセスの起動が完了した場合、キャプチャ開始スレッドは終了し、キャプチャプロセスの起動が完了していないマザーボードMBがある場合、処理はステップS226に移行する。
【0142】
ステップS226において、制御プログラムPGM4は、選択したマザーボードMBのうち、キャプチャプロセスの起動が完了していないマザーボードMBを選択する。次に、ステップS500において、制御プログラムPGM4は、ステップS226で選択したマザーボードMBのキャプチャプロセスを起動する。例えば、キャプチャプロセスの起動は、リモートシェルにより実行される。
【0143】
図18は、図16のステップS100により起動される切り替えスレッドの例を示す。切り替えスレッドは、キャプチャプロセスを実行中のマザーボードMBからの割り当て要求または開放要求に基づいて、管理装置400のCPU4が制御プログラムPGM4を実行することにより実現される。
【0144】
まず、ステップS102において、制御プログラムPGM4は、マザーボードMBからHDDの割り当て要求またはHDDの開放要求のいずれを受信したかを判定する。割り当て要求を受信した場合、処理はステップS104に移行し、開放要求を受信した場合、処理はステップS124に移行する。
【0145】
ステップS104において、制御プログラムPGM4は、マザーボードMBにより指定された新たに割り当てるHDDの数を変数Mとして設定する。次に、ステップS106において、制御プログラムPGM4は、ステップS108からステップS122までの処理がM回繰り返されたか否かを判定する。処理がM回繰り返された場合、指定された数のHDDの割り当てが完了したため、処理はステップS136に移行する。
【0146】
指定されたM個のHDDの割り当てが完了していない場合、ステップS108において、制御プログラムPGM4は、テーブルHSTBLを参照し、データキャプチャ用のHDDのうち未使用のHDDがあるか否かを判定する。未使用のHDDがある場合、処理はステップS110に移行し、未使用のHDDがない場合、処理はステップS114に移行する。
【0147】
ステップS110において、制御プログラムPGM4は、データキャプチャ用のHDDのうち未使用のHDDを1つ選択する。次に、ステップS112において、制御プログラムPGM4は、選択したHDDの番号(HDDNo)をテーブルINDTBLに登録する。そして、処理はステップS116に移行する。
【0148】
一方、未使用のHDDがない場合、ステップS114において、制御プログラムPGM4は、テーブルINDTBLを参照し、待機中のHDDの中から終了時刻の最も古いHDDを選択する。そして、処理はステップS116に移行する。ここで、待機中のHDDは、キャプチャされたデータを保持中である。
【0149】
ステップS116において、制御プログラムPGM4は、接続装置300を制御することにより、割り当て要求を発行したマザーボードMBに選択したHDDを接続する。次に、ステップS118において、制御プログラムPGM4は、テーブルCNTBL、HSTBLを更新する。例えば、キャプチャプロセスの最初にM個のHDDが接続された状態のテーブルCNTBL、HSTBLの例は、図11に示される。キャプチャプロセス中に、既に接続済みのM個のHDDに加えて、M個のHDDが接続された状態のテーブルCNTBL、HSTBLの例は、図12に示される。なお、図11-図15は、変数Mが”4”である例を示した。
【0150】
次に、ステップS120において、制御プログラムPGM4は、ステップS116で接続したHDDに対応するテーブルINDTBLの開始時刻の領域に現在時刻を示す情報を書き込む。次に、ステップS122において、制御プログラムPGM4は、ステップS116で接続したHDDに対応するテーブルINDTBLの終了時刻の領域にキャプチャ中を示す情報を書き込む。この後、処理はステップS106に戻る。
【0151】
一方、開放要求を受信した場合、ステップS124において、制御プログラムPGM4は、マザーボードMBにより指定された開放するHDDの数を変数Mとして設定する。次に、ステップS126において、制御プログラムPGM4は、ステップS128からステップS134までの処理がM回繰り返されたか否かを判定する。処理がM回繰り返された場合、指定された数のHDDの接続が解除されたため、処理はステップS136に移行する。
【0152】
指定された数のHDDの接続が解除されていない場合、ステップS128において、制御プログラムPGM4は、テーブルINDTBLを参照し、キャプチャ中のHDDのうち、開始時刻が最も古いHDDの1つを選択する。次に、ステップS130において、制御プログラムPGM4は、ステップS128で選択したHDDと、開放要求を発行したマザーボードMBとの接続を遮断する。
【0153】
次に、ステップS132において、制御プログラムPGM4は、テーブルCNTBL、HSTBLを更新する。例えば、テーブルCNTBLにおいて、マザーボードMBとHDDとの接続関係を示す情報が削除され、テーブルHSTBLにおいて、マザーボードMBから切り離されたHDDの状態が”待機中”に設定される。次に、ステップS134において、制御プログラムPGM4は、ステップS130で切り離したHDDに対応するテーブルINDTBLの終了時刻の領域に現在時刻を書き込む。この後、処理はステップS126に戻る。
【0154】
M個のHDDのマザーボードMBへの接続、またはM個のHDDのマザーボードMBからの切り離しの実行後、ステップS136において、制御プログラムPGM4は、切り替えスレッドを停止する。
【0155】
図19は、図8に示したデータのキャプチャ用の各HDD1−HDD24の記憶領域の割り当ての例を示す。キャプチャ用のHDDの記憶領域には、セパレータとタイムスタンプとデータ領域とを有するデータユニットが繰り返し割り当てられる。先頭アドレスの領域には、HDDへのデータのキャプチャの開始時刻を示すタイムスタンプが格納される。アドレスA1の領域には、先頭データの識別子が格納され、アドレスA6の領域には、最終データの識別子が格納される。最終データの識別子から末尾アドレスまでは、所定のマージンを有する。
【0156】
データ領域は、データの属性を示すメタデータの領域およびキャプチャされたデータを格納する領域を有する。データを格納する領域は不定長であるため、メタデータは、データサイズの情報を含む。このため、セパレータの位置を示すアドレスA2、A3、A4、A5は等間隔ではない。例えば、セパレータは、キャプチャデータとして出現しないデータ列を有する。タイムスタンプは、対応するデータがキャプチャされた時刻を示す。
【0157】
アドレスVT1は、HDDにおいて書き込み可能な記憶領域が少なくなったことを示す閾値である。キャプチャしたデータをHDDに書き込むマザーボードMBは、書き込みアドレスが閾値VT1を超えた場合に、HDDの記憶容量が少なくなったと判断し、キャプチャしたデータを新たに書き込むHDDの接続を管理装置400に要求する。新たなHDDの接続は、図21のステップS530で起動される割り当て要求スレッド(図22)に基づいて、管理装置400により実行される。
【0158】
アドレスVT2は、HDDにおいて書き込み可能な記憶領域がなくなったことを示す閾値である。キャプチャしたデータをHDDに書き込むマザーボードMBは、書き込みアドレスが閾値VT2を超えた場合に、最後のデータの後に最終データの識別子を書き込み、HDDへの書き込みを停止する。また、マザーボードMBは、書き込みアドレスが閾値VT2を超えたHDDの開放を管理装置400に要求する。HDDの開放は、図21のステップS534で起動される開放要求スレッド(図23)に基づいて、管理装置400により実行される。
【0159】
なお、マザーボードMBは、HDDの1つが閾値VT1を超えてから閾値VT2に到達するまで、割り当て要求スレッドに基づいて新たに接続されたHDDにもデータを重複して書き込む。閾値VT1、VT2のアドレス差は、閾値VT1を超えたことに基づいて割り当て要求スレッドが発行されてから新たなHDDが接続されるまでの期間にキャプチャしたデータをHDDに書き込み可能なように設定される。例えば、閾値VT1は、データをキャプチャする最大速度をMSPとし、マザーボードMBに接続されるHDDの台数をMとし、新たなHDDが接続されるまでの最大の待ち時間をTMAXとすると、式(2)で示される。式(2)において”*”は、乗算を示す。
VT1=VT2−(MSP/M)*TMAX …(2)
最大時間TMAXは、マザーボードMBがHDDの割り当て要求スレッドを発行してから接続装置300の接続状態が切り替えられ、マザーボードMBのOSが新たに接続されたHDDを認識するまでの待ち時間である。最大時間TMAXは、情報処理システムSYSのシステム仕様に依存する定数である。式(2)により閾値VT1が設定されることで、HDDの切り替え期間中にも、キャプチャしたデータは失われることなくHDDに書き込みできる。
【0160】
なお、式(2)のMSP/Mは、上述した式(1)よりHSPに等しいため、閾値VT1は、式(2)に式(1)を代入した式(3)としても表せる。
VT1=VT2−HSP*TMAX …(3)
また、閾値VT2のアドレス値は、セパレータのサイズをSS、タイムスタンプのサイズをTS、最大のデータサイズをDMAX、メタデータのサイズをMS、最終データの識別子のサイズをESとすると、HDDの末尾アドレスを用いて式(4)で示される。データの最大サイズDMAXは、データをキャプチャする通信のプロトコルに依存する定数である。
VT2=末尾アドレス−(SS+TS+DMAX+MS+ES) …(4)
式(4)を用いて閾値VT2が設定されることで、閾値VT2を超えた場合にも、データをHDDに書き込みできる。このように、閾値VT1、VT2のアドレス値は、HDDの記憶容量、データ転送速度、HDDの接続の待ち時間から決定できる。
【0161】
図20および図21は、図17のステップS500により起動されるキャプチャプロセスの例を示す。図21は、図20の処理の続きを示す。キャプチャプロセスは、管理装置400からキャプチャプロセスの起動指示を受信したマザーボードMBのCPUにより実行される。
【0162】
まず、ステップS502において、キャプチャプロセスは、キャプチャしたデータを分散して書き込むHDDの台数を変数Nとして設定する。なお、データを分散して書き込まない場合、変数Nは”1”に設定される。また、キャプチャプロセスは、キャプチャ動作に使用する変数periodおよびリストLIST1、LIST2を初期化する。リストLIST1、LIST2は、所定のサイズが割り当てられた記憶領域あるいはレジスタである。
【0163】
変数periodは、マザーボードMBに接続されたHDD群の割り当て回数(延べ数)を示し、初期値は”1”である。変数periodは、キャプチャ中のHDDの書き込み容量が所定量(図19に示した閾値VT1)を超え、新たなHDDが割り当てられる毎に”1”ずつ増加される。
【0164】
リストLIST1、LIST2には、HDDの番号(HDDNo)が格納される。リストLIST1、LIST2は、初期状態で”null”に設定される。リストLIST1は、奇数回目に割り当てられたHDDの番号を保持し、HDDが切り離されるときに”null”に設定される。変数LIST2は、偶数回目に割り当てられたHDDの番号を保持し、HDDが切り離されるときに”null”に設定される。
【0165】
次に、ステップS504において、キャプチャプロセスは、データのキャプチャ用のHDDの割り当て要求スレッドを起動する。割り当て要求スレッドの例は、図22に示す。次に、ステップS506において、キャプチャプロセスは、リストLIST1が”null”を保持するか否かを判定する。リストLIST1が”null”を保持する場合、データをキャプチャするHDDのマザーボードMBへの接続が完了していないため、処理はステップS508に移行する。リストLIST1が”null”を保持しない場合、マザーボードMBに接続されたデータのキャプチャ用のHDDが存在するため、処理はステップS512に移行する。
【0166】
ステップS508において、キャプチャプロセスは、データのキャプチャ用のHDDが接続されるのを待つ。例えば、HDDが接続されたか否かは、マザーボードMBが管理装置400に問い合わせることで判断される。次に、ステップS510において、キャプチャプロセスは、接続されたHDDの番号(例えば、HDD1とHDD2を示す情報)をリストLIST1に格納する。
【0167】
次に、ステップS512において、キャプチャプロセスは、変数periodが奇数か否かを判定する。変数periodが奇数の場合、処理はステップS514に移行し、変数periodが偶数の場合、処理はステップS516に移行する。
【0168】
ステップS514において、キャプチャプロセスは、リストLIST1に保持されたHDDの番号を変数NOWHDDに格納し、リストLIST2に保持されたHDDの番号を変数ENDHDDに格納する。一方、ステップS516において、キャプチャプロセスは、リストLIST2に保持されたHDDの番号を変数NOWHDDに格納し、リストLIST1に保持されたHDDの番号を変数ENDHDDに格納する。ここで、変数NOWHDDで示されるHDDは、書き込まれたデータが閾値VT1に到達していないことを示し、変数ENDHDDで示されるHDDは、データが閾値VT1を超える領域までデータが書き込まれたことを示す。
【0169】
次に、図21のステップS518において、キャプチャプロセスは、図5に示したスイッチ装置500から供給されるデータを保持するバッファからデータを読み込む。例えば、バッファは、マザーボードMB内に設けられる。次に、ステップS520において、キャプチャプロセスは、バッファから読み込んだデータを、変数NOWHDDが示すM台のHDDに分散して書き込む。
【0170】
次に、ステップS522において、キャプチャプロセスは、変数ENDHDDが”null”か否かを判定する。変数ENDHDDが”null”の場合、データが閾値VT1を超える領域まで、変数ENDHDDにHDDの番号が設定されないため、キャプチャプロセスは、変数NOWHDDで示されるHDDにのみ書き込み動作を実行中である。この場合、処理はステップS528に移行する。変数ENDHDDが”null”でない場合、処理はステップS524に移行する。
【0171】
ステップS524において、キャプチャプロセスは、変数ENDHDDが示すHDDの書き込みアドレスが閾値VT2を超えたか否かを判定する。例えば、書き込みアドレスは、HDDにおいてデータを書き込む記憶領域を示し、HDDへのデータの書き込みは、アドレスが小さい側から昇順に実行される。書き込みアドレスが閾値VT2を超えた場合、HDDへのデータの書き込みを停止するため、処理はステップS528に移行する。書き込みアドレスが閾値VT2以下の場合、HDDへのデータの書き込みが可能なため、処理はステップS526に移行する。
【0172】
ステップS526において、キャプチャプロセスは、バッファから読み込んだデータを、変数ENDHDDが示すHDDに分散して書き込む。なお、マザーボードMBは、式(1)で示した台数のキャプチャ用のHDDを接続するため、バッファに書き込まれる単位時間当たりのデータ量は、M台のHDDに書き込む単位時間当たりデータ量よりも小さい。このため、バッファがデータによりオーバフローすることなく、データをHDDに書き込みできる。
【0173】
ステップS528において、キャプチャプロセスは、変数NOWHDDが示すHDDの書き込みアドレスが閾値VT1を超えたか否かを判定する。キャプチャしたデータが複数のHDDに分散して書き込まれる場合(M=複数)、HDDの少なくとも1つの書き込みアドレスが閾値VT1を超えたか否かが判定される。書き込みアドレスが閾値VT1を超えた場合、変数NOWHDDが示すHDDの容量の余裕が少なくなったため、処理はステップS530に移行する。書き込みアドレスが閾値VT1以下の場合、変数NOWHDDが示すHDDの容量に余裕があるため、処理はステップS532に移行する。
【0174】
ステップS530において、キャプチャプロセスは、キャプチャ用の新たなHDDをマザーボードMBに接続する割り当て要求スレッドを起動する。書き込みアドレスが閾値VT1を超えた時点で新たなHDDの接続処理を開始することで、キャプチャ用のHDDが切り替わる場合にも、マザーボードMBは、データを絶え間なくHDDに書き込みできる。この後、処理はステップS532に移行する。
【0175】
ステップS532において、キャプチャプロセスは、変数ENDHDDが示すHDDの書き込みアドレスが閾値VT2を超えたか否かを判定する。キャプチャしたデータが複数のHDDに分散して書き込まれる場合(M=複数)、HDDの少なくとも1つの書き込みアドレスが閾値VT2を超えたか否かが判定される。書き込みアドレスが閾値VT2を超えた場合、HDDへのデータの書き込みを停止するため、処理はステップS534に移行する。なお、書き込みアドレスが閾値VT2を超えた場合、新たなHDDがマザーボードMBに接続済みである。書き込みアドレスが閾値VT2以下の場合、新たなHDDがマザーボードMBに接続されていないため、処理は図20のステップS512に戻る。
【0176】
ステップS534において、キャプチャプロセスは、データをキャプチャする変数ENDHDDが示すHDDをマザーボードMBから切り離す開放要求スレッドを起動する。この後、処理は図20のステップS512に戻る。
【0177】
図22は、図21のステップS530により起動される割り当て要求スレッドの例を示す。割り当て要求スレッドは、マザーボードMBが実行中のキャプチャプロセスにより起動される。
【0178】
まず、ステップS540において、割り当て要求スレッドは、データをキャプチャするM台の新たなHDDを接続する割り当て要求を管理装置400に発行する。次に、ステップS542において、割り当て要求スレッドは、データをキャプチャするM台のHDDが接続されるまで待つ。
【0179】
次に、ステップS544において、割り当て要求スレッドは、変数periodを”1”増加させる。次に、ステップS546において、割り当て要求スレッドは、変数periodが奇数か否かを判定する。変数periodが奇数の場合、処理はステップS548に移行し、変数periodが偶数の場合、処理はステップS550に移行する。
【0180】
次に、ステップS548において、割り当て要求スレッドは、新たに接続されたHDDの番号をリスト変数LIST1に格納し、開放要求スレッドを終了する。一方、ステップS550において、割り当て要求スレッドは、新たに接続されたHDDの番号をリストLIST2に格納し、割り当て要求スレッドを終了する。
【0181】
図23は、図21のステップS534により起動される開放要求スレッドの例を示す。開放要求スレッドは、マザーボードMBが実行中のキャプチャプロセスにより起動される。
【0182】
まず、ステップS560において、開放要求スレッドは、変数periodが奇数か否かを判定する。変数periodが奇数の場合、処理はステップS562に移行し、変数periodが偶数の場合、処理はステップS566に移行する。
【0183】
ステップS562において、開放要求スレッドは、リストLIST2に格納された番号により示されるHDDをマザーボードMBから切り離す開放要求を管理装置400に発行する。次に、ステップS564において、開放要求スレッドは、リストLIST2を”null”に設定し、開放要求スレッドを終了する。
【0184】
一方、ステップS566において、開放要求スレッドは、リストLIST1に格納された番号により示されるHDDをマザーボードMBから切り離す開放要求を管理装置400に発行する。次に、ステップS568において、開放要求スレッドは、リストLIST1を”null”に設定し、開放要求スレッドを終了する。
【0185】
図24は、図20から図23に示したキャプチャプロセスにより実行されるデータのキャプチャ動作の例を示す。この例では、説明を簡単にするために、データのキャプチャ用のHDDとして、4組の(HDD1、HDD2)、(HDD5、HDD6)、(HDD9、HDD10)、(HDD13、HDD14)が使用されるとする。細長い矩形は、対応するHDDが図5に示したマザーボードMB1に接続中(キャプチャされたデータの書き込みが可能)であることを示す。
【0186】
まず始めに、図5に示したマザーボードMB1にHDD1、HDD2が接続され、キャプチャされたデータは、HDD1、HDD2に順に書き込まれる(図24(a))。初期状態では、変数periodは”1”のため、変数NOWHDDはリストLIST1の内容が示すHDD1、HDD2に設定される。リストLIST2および変数ENDHDDは”null”である。
【0187】
変数NOWHDDが示すHDD1、HDD2のいずれかの書き込みアドレスが閾値VT1を超えると、変数periodは”2”になり、未使用のHDD5、HDD6がマザーボードMB1に接続される(図24(b))。また、変数NOWHDDは、リストLIST2の内容が示すHDD5、HDD6に設定され、変数ENDHDDは、リストLIST1の内容が示すHDD1、HDD2に設定される(図24(c))。
【0188】
次に、変数ENDHDDが示すHDD1、HDD2の書き込みアドレスのいずれかが閾値VT2を超えると、リストLIST1の内容が示すHDD1、HDD2がマザーボードMB1から切り離される(図24(d))HDD1、HDD2の書き込みアドレスが閾値VT1を超えてから閾値VT2に到達するまでの間に、マザーボードMB1にHDD5、HDD6を接続することで、データを途切れることなくHDD1、HDD2またはHDD5、HDD6の少なくともいずれかに書き込みできる。例えば、”未使用”状態や”待機中”状態のHDDの電源を遮断する場合にも、閾値VT1、VT2をHDDの電源立ち上げ時間を考慮して設定することで、消費電力を抑制しながら、データを失うことなくHDDに保持できる。
【0189】
次に、変数NOWHDDが示すHDD5、HDD6のいずれかの書き込みアドレスが閾値VT1を超えると、未使用のHDD9、HDD10がマザーボードMB1に接続され、変数periodは”3”になる(図24(e))。また、変数NOWHDDは、リストLIST1の内容が示すHDD9、HDD10に設定され、変数ENDHDDは、リストLIST2の内容が示すHDD5、HDD6に設定される(図24(f))。
【0190】
次に、変数ENDHDDが示すHDD5、HDD6の書き込みアドレスのいずれかが閾値VT2を超えると、リストLIST2の内容が示すHDD5、HDD6がマザーボードMB1から切り離される(図24(g))。この後、HDDが順次切り替えられながら、キャプチャされたデータは失われることなくHDDに書き込まれる。
【0191】
さらに、変数NOWHDDが示すHDD13、HDD14のいずれかの書き込みアドレスが閾値VT1を超えると、状態が”待機中”に設定されたHDDのうち最も古いデータを保持するHDD1、HDD2がマザーボードMB1に接続される(図24(h))。そして、キャプチャされたデータは、HDD13、HDD14とともに、HDD1、HDD2に書き込まれる。
【0192】
図25は、図5に示した情報処理システムSYSが実行する検索動作のシーケンスの例を示す。すなわち、図25は、キャプチャされたデータの検索装置として動作する情報処理システムSYSのシーケンスの例を示す。以下の説明では、図7に示した管理装置400の動作は、管理装置400のCPU4による動作を含み、マザーボードMBの動作は、マザーボードMBのCPUによる動作を含む。
【0193】
この例では、図15に示した状態後、キャプチャ中のHDD1−HDD4がデータで満杯になり、HDD5−HDD8がキャプチャ用のHDDとして動作中に検索要求が初めて発行される。検索対象のデータを含むHDDは、コンソールCNSLから検索要求とともに受信する検索対象の時間(図28のステップS302の開始時刻Tsおよび終了時刻Te)に基づいて、管理装置400により起動される検索スレッドが選択する。この例では、HDD1−HDD4が検索対象のデータを含むHDDとして選択される。
【0194】
図25では、説明を簡単にするために、HDD3、HDD4およびHDD3、HDD4に保持されたデータを検索するマザーボードMB4、HDD32の動作は、破線の矩形枠で示し、説明は省略する。マザーボードMB4、HDD32、HDD3、HDD4の動作は、図25において、マザーボードMB3、HDD31、HDD1、HDD2をマザーボードMB4、HDD32、HDD3、HDD4に置き換えることで説明される。
【0195】
管理装置400は、コンソールCNSLからの検索要求に基づいて、検索スレッドを起動する(図25(a))。例えば、検索スレッドは、マザーボードMB3とHDD31とを接続する制御情報を接続装置300に出力する。接続装置300は、制御情報に基づいてマザーボードMB3とHDD31とを接続する。検索スレッドは、マザーボードMB3とHDD31とが互いに接続された後、マザーボードMB3を介してHDD31にOSおよび検索プログラムSPをインストールする。インストールの手法は、図9に示したキャプチャプログラムCPのインストールと同様である。
【0196】
HDD31へのOSおよび検索プログラムSPのインストール後、マザーボードMB3は再起動される。マザーボードMB3のCPUは、OSの実行を開始し、HDD31のアクセスを開始する。これ以降、マザーボードMB3およびHDD31は、検索サーバとして動作可能になる。マザーボードMB3は、インストールが完了したことを示す完了応答を管理装置400に送信する。なお、検索スレッドは、マザーボードMBとHDDとを複数組接続し、複数の検索サーバとして動作させてもよい。検索対象のHDDが複数ある場合、複数の検索サーバを起動してデータを検索することで、1台の検索サーバでデータを検索する場合に比べて検索時間を短縮できる。
【0197】
この実施形態では、検索スレッドは、コンソールCNSLからの指示された数の未使用のマザーボードMBと未使用のHDDとを用いて、任意の数の検索サーバを起動可能である。これにより、検索する範囲の大きさに応じて、最適な数の検索サーバを起動することが可能になり、コンソールCNSL側の要求に合わせて検索時間を最適化できる。
【0198】
検索スレッドは、インストールの完了応答の受信に基づいて、マザーボードMB3に検索プロセスを起動する指示を出力する。マザーボードMB3は、検索スレッドからの指示に基づいて、検索プロセスを開始する(図25(b))。
【0199】
検索プロセスは、少なくとも1つのHDD検索スレッドを起動する。例えば、HDD検索スレッドは、検索するHDD毎に起動される(図25(c))。この例では、HDD検索スレッド(1)がHDD1に保持されたキャプチャデータを検索し、HDD検索スレッド(2)がHDD2に保持されたキャプチャデータを検索する。
【0200】
検索プロセスは、HDD検索スレッド(1)、HDD検索スレッド(2)による検索の終了に基づいて、管理装置400が実行中の検索スレッドに検索結果を送信する(図25(d))。検索スレッドは、検索結果をコンソールに送信し(図25(e))、マザーボードMB3とHDD1、HDD2との接続を解除する制御情報を接続装置300に出力する(図25(f))。接続装置300は、制御情報に基づいてマザーボードMB3とHDD1、HDD2との接続を解除する。そして、検索スレッドは終了する。
【0201】
例えば、検索スレッドの終了後、管理プロセスは、マザーボードMB3およびHDD31の接続を維持する。この場合、2回目以降の検索要求に応答して起動される検索スレッドは、HDD31へのOSおよび検索プログラムSPのインストールは実行しない。
【0202】
なお、検索スレッドの終了後、管理プロセスは、マザーボードMB3およびHDD31の接続を維持した状態で、マザーボードMB3およびHDD31への電源の供給を遮断してもよい。この場合、HDD31は、OSおよび検索プログラムSPを保持しているため、2回目以降の検索要求に応答して起動される検索スレッドは、マザーボードMBを再起動すればよい。
【0203】
また、検索スレッドの終了後、管理プロセスは、マザーボードMB3およびHDD31の接続を解除し、マザーボードMB3およびHDD31への電源の供給を遮断してもよい。この場合、HDD31は、OSおよび検索プログラムSPを保持しているため、2回目以降の検索要求に応答して起動される検索スレッドは、マザーボードMB3にHDD31を接続した後、マザーボードMBを再起動すればよい。
【0204】
例えば、検索スレッドの終了後に電源を遮断するか否かは、検索要求の発生頻度に応じて管理プロセスが判断してもよく、コンソールCNSLが検索キーKEYとともに管理プロセスに指示してもよい。
【0205】
図26は、図25に示した検索スレッドにより検索用のHDDがマザーボードMBに接続された後のテーブルTBLの状態の例を示す。換言すれば、図26は、管理装置400の検索スレッドがマザーボードMB3の検索プロセスを起動する前の状態を示す。なお、図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。
【0206】
図26においても、図25と同様に、図15に示した状態後、キャプチャ中のHDD1−HDD4がデータで満杯になり、HDD5−HDD8がキャプチャ用のHDDとして動作中に検索要求が初めて発行される。図26において、網掛けで示した領域は、検索スレッドの起動に伴い変化した箇所を示す。
【0207】
図26では、管理装置400は、HDD5−HDD8を用いてデータをキャプチャ中に、コンソールCNSLから検索要求を受信する。検索要求に含まれる検索対象の日時を示すデータは、HDD1−HDD4で保持中であるとする。図25に示した検索スレッドは、マザーボードMB3およびHDD31の接続を示す情報と、マザーボードMB4およびHDD32の接続を示す情報とをテーブルCNTBLに追加する。また、検索スレッドは、テーブルMSTBLにおけるマザーボードMB3、MB4の状態を”検索”に設定し、テーブルHSTBLにおけるHDD31、HDD32の状態を”起動用”に設定する。
【0208】
図27は、図25に示した検索プロセスが起動された後のテーブルTBLの状態の例を示す。図27において、網掛けで示した領域は、図26に対して変化した箇所を示す。なお、図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。
【0209】
図25に示した検索スレッドは、各マザーボードMB(この例では、MB3、MB4)により検索プロセスを起動する毎にテーブルCNTBL、HSTBLを更新する。テーブルCNTBLは、図26に対して、マザーボードMB3とHDD1、HDD2との接続を示す情報と、マザーボードMB4とHDD3、HDD4との接続を示す情報とが追加される。HDD1−HDD4は、検索対象のHDDであるため、テーブルHSTBLでは、HDD1−HDD4の状態が”検索中”に設定される。テーブルTBLのその他の状態は、図26と同様である。
【0210】
この実施形態では、例えば、データのキャプチャ動作は、マザーボードMB1、MB2で実行され、データの検索動作は、マザーボードMB1、MB2とは異なるマザーボードMB3、MB4で実行される。このため、図1から図4に示した実施形態と同様に、キャプチャ動作を実行するマザーボードMB1、MB2は、音声データのようにスループットの高いデータを、検索要求の有無に拘わらず、HDDに安定して書き込みできる。また、検索動作を実行するマザーボードMB3、MB4は、リアルタイムで実行されるデータのキャプチャ動作の割り込みを受けることなく、検索動作を集中して実行できる。
【0211】
図28および図29は、図16に示したステップS300により起動される検索スレッドの例を示す。図29は、図28の処理の続きを示す。検索スレッドは、図25に示したように、コンソールCNSLからの検索要求に基づいて、管理装置400が制御プログラムPGM4を実行することにより実現される。
【0212】
例えば、HDDに保持されるデータは、データセンタを経由して受信する携帯電話での会話の音声データである。データセンタのコンピュータ装置は図5に示したコンソールCNSLを含む。そして、携帯電話の通信回線の不具合が発生した場合に、不具合が発止した日時を含む検索キーKEY(開始時刻Tsおよび終了時刻Te)が、検索に使用するマザーボードMBの数”M”とともに、コンソールCNSLから情報処理システムSYSに送信される。
【0213】
情報処理システムSYSの管理装置400は、検索スレッドを起動する。検索スレッドは、開始時刻Tsおよび終了時刻Teで指定される範囲の音声データを含むHDDを特定し、特定したHDDから音声データを読み出し、読み出した音声データをコンソールCNSLに送信する。コンソールCNSLを含むデータセンタのコンピュータ装置は、情報処理システムSYSから受信した音声データに含まれる雑音等を解析することで、不具合の原因を調べる。
【0214】
まず、ステップS302において、検索スレッドは、コンソールCNSLから受信した、検索動作を実行するマザーボードMB(検索サーバ)の数と、検索キーKEYに含まれる開始時刻および終了時刻とを、変数M、Ts、Teとしてそれぞれ設定する。また、検索スレッドは、検索対象のHDDを示すリストLISTを”null”に初期化する。リストLISTには、検索対象のHDDを示す情報が登録される。
【0215】
次に、ステップS304において、検索スレッドは、データをキャプチャした時間を示すタイムスタンプ(開始時刻および終了時刻)の索引の情報が格納されるテーブルINDTBLのレコード番号を示す変数Kを”1”に設定する。レコード番号は、図27等に示したテーブルINDTBLの行番号である。以降の説明では、テーブルINDTBLの行番号は、レコード番号Kとも称される。
【0216】
次に、ステップS306において、検索スレッドは、テーブルTBLの全てのレコードを走査したか否かを判定する。検索スレッドは、全てのレコードを走査した場合、処理をステップS316に移行し、走査していないレコードがある場合、処理をステップS308に移行する。
【0217】
ステップS308において、検索スレッドは、テーブルINDTBLのK番目のレコードの開始時刻と終了時刻(対応するHDDが保持するデータの開始時刻と終了時刻)とを読み込む。次に、ステップS310において、検索スレッドは、K番目のレコードから読み出した開始時刻と終了時刻に基づいて、対応するHDDが、検索キーKEYに含まれる開始時刻Tsから終了時刻Teまでの期間にキャプチャされたデータを含むか否かを判定する。
【0218】
例えば、K番目のレコードに格納された終了時刻が開始時刻Tsより前の場合、またはK番目のレコードに格納された開始時刻が終了時刻Teより後の場合、対応するHDDは、検索対象のデータを含まない。換言すれば、K番目のレコードに格納された開始時刻または終了時刻のいずれかが、開始時刻Tsから終了時刻Teまでの期間に含まれる場合、対応するHDDは、検索するデータを含む。検索スレッドは、対応するHDDが検索するデータを含む場合、処理をステップS312に移行し、対応するHDDが検索するデータを含まない場合、処理をステップS314に移行する。
【0219】
ステップS312において、検索スレッドは、K番目のレコードに対応するHDD(K)の情報をリストLISTに追加する。次に、ステップS314において、検索スレッドは、レコード番号Kを”1”インクリメントし、処理をステップS306に戻す。
【0220】
一方、テーブルINDTBLの全てのレコードが走査された場合、ステップS316からS324において、検索スレッドは、検索を実行するM個のマザーボードMBをHDDにそれぞれ接続する。なお、図25で説明したように、検索スレッドの終了後、管理プロセスがマザーボードMB3およびHDD31の接続を維持する場合、ステップS316からS324は省略される。
【0221】
ステップS316において、検索スレッドは、M個のマザーボードMBの選択が完了したか否かを判定する。検索スレッドは、M個のマザーボードMBの選択が完了した場合、処理をステップS326に移行し、M個のマザーボードMBの選択が完了していない場合、処理をステップS318に移行する。
【0222】
ステップS318において、検索スレッドは、テーブルMSTBLを参照し、図5に示したマザーボードプール100の中から未使用のマザーボードMBを選択する。次に、ステップS320において、検索スレッドは、テーブルHSTBLを参照し、図5に示したストレージドライブプール200の中から未使用の起動用のHDDを選択する。
【0223】
次に、ステップS322において、検索スレッドは、接続装置300を制御することにより、選択したマザーボードMBを選択したHDDに接続する。次に、ステップS324において、検索スレッドは、テーブルCNTBL、MSTBL、HSTBLを更新し、例えば、図26に示した状態にする。この後、処理は、ステップS316に戻る。
【0224】
一方、M個のマザーボードMBの選択が完了した場合、ステップS326からS332において、検索スレッドは、選択したM個のマザーボードMBにOSと検索プログラムSPとをそれぞれインストールする。
【0225】
なお、検索スレッドの終了後、管理プロセスがマザーボードMB3およびHDD31の接続を維持し、マザーボードMB3およびHDD31の電源の供給を維持する場合、ステップS326からS332は省略される。また、検索スレッドの終了後、管理プロセスがマザーボードMB3およびHDD31の接続を維持した状態で、マザーボードMB3およびHDD31の電源を遮断する場合、ステップS326からS330は省略され、ステップS332の再起動は実行される。
【0226】
まず、ステップS326において、検索スレッドは、選択したM個のマザーボードMBの初期化が完了したか否かを判定する。M個のマザーボードMBの初期化が完了した場合、処理はステップS334に移行し、初期化が完了していない場合、処理はステップS328に移行する。ステップS328、S330、S332、S334の処理は、インストールされるプログラムが異なることを除き、図17に示したステップS216、S218、S220、S222の処理と同様のため、説明は省略する。
【0227】
次に、図29のステップS336において、検索スレッドは、リストLISTに登録されたHDDの数を、初期化したマザーボードMB数(M個)で除した値を変数Nとして設定する。なお、変数Nは、検索サーバとして動作する各マザーボードMBが並列に起動する検索スレッドの数を示す。変数Nは、除算結果の小数点以下を切り上げることで算出されてもよく、除算結果が割り切れない場合、マザーボードMB毎に、変数Nがほぼ均等になるように設定されてもよい。
【0228】
ステップS338において、検索スレッドは、検索サーバとして動作させる全てのマザーボードMBの検索プロセスを起動したか否かを判定する。全てのマザーボードMBの検索プロセスが起動された場合、処理はステップS348に移行され、全てのマザーボードMBの検索プロセスが起動されていない場合、処理はステップS340に移行される。
【0229】
ステップS340において、検索スレッドは、テーブルMSTBLを参照し、未使用のマザーボードMBのいずれかを選択する。次に、ステップS342において、検索スレッドは、リストLISTに登録されたHDDからN個のHDDを選択する。次に、ステップS344において、検索スレッドは、接続装置300を制御することにより、選択したマザーボードMBに選択したN個のHDDを接続する。次に、ステップS346において、検索スレッドは、テーブルCNTBL、HSTBLを更新し、例えば、図27に示した状態にする。
【0230】
次に、ステップS600おいて、検索スレッドは、選択中のマザーボードMBの検索プロセスを起動する。検索プロセスの例は、図30に示す。この後、処理は、ステップS338に戻る。
【0231】
一方、全てのマザーボードMBの検索プロセスが起動された場合、ステップS348において、検索スレッドは、リストRSLTLIST1を”null”に初期化する。例えば、リストRSLTLIST1には、検索結果が格納され、あるいは、検索結果が格納される記憶領域のアドレスが格納される。
【0232】
次に、ステップS350において、検索スレッドは、検索サーバとして動作する全てのマザーボードMBの検索結果を受信したか否かを判定する。全てのマザーボードMBの検索結果が受信された場合、処理はステップS360に移行され、検索結果が受信されないマザーボードMBがある場合、処理はステップS352に移行される。
【0233】
ステップS352において、検索スレッドは、検索サーバとして動作するマザーボードMBのいずれかからN個のHDDの検索結果を受信したか否かを判定する。検索結果が受信された場合、処理はステップS354に移行され、検索結果が受信されない場合、処理はステップS350に戻る。すなわち、ステップS352では、検索スレッドは、マザーボードMBからの検索結果の受信を待つ。
【0234】
ステップS354において、検索結果を受信した検索スレッドは、リストRSLTLIST1に検索結果を追加する。次に、ステップS356において、検索スレッドは、接続装置300を制御することにより、検索結果を出力したマザーボードMBと検索対象のN個のHDDとの接続を解除する。
【0235】
ステップS358において、検索スレッドは、接続を解除したHDDに合わせて、テーブルCNTBL、MSTBL、HSTBLを更新した後、ステップS350に戻る。
【0236】
一方、全てのマザーボードMBの検索結果が受信された場合、ステップS360において、検索スレッドは、リストRSLTLIST1に格納された検索結果をコンソールCNSLに送信し、処理を終了する。例えば、検索スレッドは、開始時刻Tsから終了時刻Teまでにキャプチャされた全てのデータをコンソールCNSLに送信する。
【0237】
なお、検索スレッドは、開始時刻Tsから終了時刻Teまでにキャプチャされたデータを含む各HDDについて、データが格納された領域の開始アドレスと終了アドレスとをコンソールCNSLに送信してもよい。この場合、管理プロセスは、HDDからデータを読み出すコマンドをコンソールCNSLから受信し、HDDから読み出し、読み出したデータをコンソールCNSLに送信する。
【0238】
図30は、図29に示したステップS600により起動される検索プロセスの例を示す。検索プロセスは、図25に示したように、管理装置400から検索プロセスの起動指示を受信したマザーボードMBのCPUにより、マザーボードMB毎に実行される。
【0239】
まず、ステップS602において、検索プロセスは、リストLISTに登録されたHDDの数を、初期化したマザーボードMB数(M個)で除した値を変数Nとして設定する。変数Nの求め方は、図29に示したステップS336と同様である。
【0240】
次に、ステップS604において、検索プロセスは、データを検索するHDDに対応して全てのHDD検索スレッドを起動したか否かを判定する。全てのHDD検索スレッドが起動された場合、処理はステップS608に移行され、全てのHDD検索スレッドが起動されていない場合、処理はステップS606に移行される。
【0241】
ステップS606において、検索プロセスは、選択していないHDDを選択する。次に、ステップS700において、検索プロセスは、ステップS606で選択したHDDに格納されたデータを検索するHDD検索スレッドを起動し、ステップS604に戻る。HDD検索スレッドの例は、図31から図36に示す。
【0242】
一方、全てのHDD検索スレッドが起動された場合、ステップS608において、検索プロセスは、リストRSLTLIST2を”null”に初期化する。例えば、リストRSLTLIST2には、検索結果が格納され、あるいは、検索結果が格納される記憶領域のアドレスが格納される。
【0243】
次に、ステップS610において、検索プロセスは、起動した全てのHDD検索スレッドから検索結果を受信したか否かを判定する。全てのHDD検索スレッドから検索結果が受信された場合、処理はステップS616に移行され、検索結果が受信されないHDD検索スレッドがある場合、処理はステップS612に移行される。
【0244】
ステップS612において、検索プロセスは、HDD検索スレッドのいずれかから検索結果を受信したか否かを判定する。検索結果が受信された場合、処理はステップS614に移行され、検索結果が受信されない場合、処理はステップS612を繰り返す。すなわち、ステップS612では、検索プロセスは、HDD検索スレッドから検索結果の受信を待つ。ステップS614において、検索プロセスは、リストRSLTLIST2に検索結果を追加する。
【0245】
一方、全てのHDD検索スレッドから検索結果が受信された場合、ステップS616において、検索プロセスは、リストRSLTLIST2に格納された検索結果を管理装置400に送信し、処理を終了する。
【0246】
図31は、図30に示したステップS700により起動されるHDD検索スレッドの例を示す。HDD検索スレッドは、図25に示したように、マザーボードMBのCPUにより、検索するHDD毎に実行される。
【0247】
まず、ステップS702において、HDD検索スレッドは、対応するHDDがマザーボードMBに接続されるのを待つ。対応するHDDとマザーボードMBとの接続は、図29に示したステップS344により実行される。次に、ステップS704において、HDD検索スレッドは、検索キーKEYに含まれる開始時刻および終了時刻を変数Ts、Teに設定し、リストRSLTLIST3を”null”に初期化し、変数START、ENDを”0”に初期化する。
【0248】
例えば、リストRSLTLIST3には、検索により得られたデータが格納される。変数STARTには、ステップS710の実行により、各HDDにおいて検索対象のデータが格納された記憶領域の開始アドレスが格納され、変数ENDには、ステップS740の実行により、各HDDにおいて検索対象のデータが格納された記憶領域の終了アドレスが格納される。
【0249】
検索キーKEYに含まれる開始時刻および終了時刻は、それぞれ開始時刻Tsおよび終了時刻Teとも称される。また、各HDDにおいて検索対象のデータが格納された記憶領域の開始アドレスおよび終了アドレスは、開始アドレスSTARTおよび終了アドレスENDとも称される。
【0250】
次に、ステップS710において、HDD検索スレッドは、図32に示す開始アドレス検索ルーチンを起動する。開始アドレス検索ルーチンでは、HDDにおける検索対象のデータが格納された記憶領域の開始アドレスSTARTが求められる。次に、ステップS740において、HDD検索スレッドは、図35に示す終了アドレス検索ルーチンを起動する。終了アドレス検索ルーチンでは、HDDにおける検索対象のデータが格納された記憶領域の終了アドレスENDが求められる。
【0251】
次に、ステップS770において、HDD検索スレッドは、HDDの開始アドレスSTARTから終了アドレスENDまでに格納されたデータを検索データとして読み出し、読み出した検索データをリストRSLTLIST3に格納する。次に、ステップS706において、HDD検索スレッドは、リストRSLTLIST3に格納された検索データを、図30に示した検索プロセスに送信する。
【0252】
図32は、図31に示したHDD検索スレッドにより求められる開始アドレスSTARTおよび終了アドレスENDの例を示す。図32の網掛けの領域は、図31に示したステップS770においてHDDから読み出される検索対象のデータを示す。
【0253】
図32(A)は、HDD検索スレッドにより検索されるHDDaに格納されたデータが開始時刻Tsを含み、終了時刻Teを含まない場合を示す。この場合、開始時刻Tsに対応するデータが格納されたアドレスが、開始アドレスSTARTとして求められ、最後のデータが格納されたアドレスが、終了アドレスENDとして求められる。
【0254】
図32(B)は、HDD検索スレッドにより検索されるHDDbに格納されたデータが開始時刻Tsを含まず、終了時刻Teを含む場合を示す。この場合、最初のデータが格納されたアドレスが、開始アドレスSTARTとして求められ、終了時刻Teに対応するデータが、終了アドレスENDとして求められる。
【0255】
なお、図24で説明したように、データが複数のHDDに順次に書き込まれる場合、HDDの切り替わり時に、データは、2つのHDDに重複して書き込まれる。例えば、図32に示したHDDaとHDDbの重複部分は、HDDaからHDDbへの切り替わり動作を示す。
【0256】
図32(C)は、HDD検索スレッドにより検索されるHDDcに格納されたデータが開始時刻Tsおよび終了時刻Teのいずれも含まず、開始時刻Tsと終了時刻Teとの間にある場合を示す。この場合、最初のデータが格納されたアドレスが、開始アドレスSTARTとして求められ、最後のデータが格納されたアドレスが、終了アドレスENDとして求められる。
【0257】
図32(D)は、HDD検索スレッドにより検索されるHDDdに格納されたデータが開始時刻Tsおよび終了時刻Teの両方を含む場合を示す。この場合、開始時刻Tsに対応するデータが格納されたアドレスが、開始アドレスSTARTとして求められ、終了時刻Teに対応するデータが、終了アドレスENDとして求められる。
【0258】
図33は、図31に示したステップS710により起動される開始アドレス検索ルーチンの例を示す。開始アドレス検索ルーチンは、HDD検索スレッドから起動され、マザーボードMBのCPUにより、検索するHDD毎に実行される。開始アドレス検索ルーチンは、図32に示した開始アドレスSTARTを算出する。
【0259】
まず、ステップS712において、開始アドレス検索ルーチンは、変数LOWERにHDDの先頭アドレスを格納する。次に、ステップS714において、開始アドレス検索ルーチンは、変数UPPERにHDDの末尾アドレスを格納する。
【0260】
次に、ステップS800において、開始アドレス検索ルーチンは、タイムスタンプ読み出しルーチンを起動し、変数LOWERをパラメータとして、HDDに最初に格納されたデータのキャプチャ時刻であるタイムスタンプを読み出す。以降の説明では、符号TMSは、タイムスタンプおよびタイムスタンプの値(すなわち、データがキャプチャされた時刻)を示す。
【0261】
次に、ステップS716において、開始アドレス検索ルーチンは、タイムスタンプTMSで示される時刻が検索キーKEYに含まれる開始時刻Tsより遅いか否かを判定する。タイムスタンプTMSで示される時刻が開始時刻Tsより遅い場合(TMS>Ts)、処理はステップS718に移行される。例えば、図32(B)、図32(C)では、ステップS718が実行される。一方、タイムスタンプTMSで示される時刻が開始時刻Tsと等しいか開始時刻Tsより早い場合、処理はステップS830に移行される。例えば、図32(A)、図32(D)では、ステップS830が実行される。
【0262】
ステップS718において、開始アドレス検索ルーチンは、図32(B)、図32(C)に示したように、HDDの先頭アドレスを開始アドレスSTARTに設定する。一方、図32(A)、図32(D)に示したように、開始時刻Tsに対応するデータがHDDの記憶領域の途中に格納された場合、ステップS830において、開始アドレス検索ルーチンは、開始アドレス検出ルーチンを起動し、二分探索法を用いて、開始アドレスSTARTを求める。
【0263】
図34は、図31に示したステップS740により起動される終了アドレス検索ルーチンの例を示す。終了アドレス検索ルーチンは、HDD検索スレッドから起動され、マザーボードMBのCPUにより、検索するHDD毎に実行される。終了アドレス検索ルーチンは、図32に示した終了アドレスENDを算出する。
【0264】
まず、ステップS742において、終了アドレス検索ルーチンは、変数LOWERにHDDの先頭アドレスを格納する。次に、ステップS744において、終了アドレス検索ルーチンは、変数UPPERにHDDの末尾アドレスを格納する。
【0265】
次に、ステップS800において、終了アドレス検索ルーチンは、タイムスタンプ読み出しルーチンを起動し、変数UPPERをパラメータとして、HDDに最後に格納されたデータのキャプチャ時刻であるタイムスタンプTMSを読み出す。
【0266】
次に、ステップS746において、終了アドレス検索ルーチンは、タイムスタンプTMSで示される時刻が検索キーKEYに含まれる終了時刻Teより早いか否かを判定する。タイムスタンプTMSで示される時刻が終了時刻Teより早い場合(TMS<Te)、処理はステップS748に移行される。例えば、図32(A)、図32(C)では、ステップS748が実行される。一方、タイムスタンプTMSで示される時刻が終了時刻Teと等しいか終了時刻Teより遅い場合、処理はステップS860に移行される。例えば、図32(B)、図32(D)では、ステップS860が実行される。
【0267】
ステップS748において、終了アドレス検索ルーチンは、図32(A)、図32(C)に示したように、HDDの末尾アドレスを終了アドレスENDに設定する。一方、図32(B)、図32(D)に示したように、終了時刻Teに対応するデータがHDDの記憶領域の途中に格納された場合、ステップS860において、終了アドレス検索ルーチンは、終了アドレス検出ルーチンを起動し、二分探索法を用いて、終了アドレスENDを求める。
【0268】
図35は、図33に示したステップS830により起動される開始アドレス検出ルーチンの例を示す。開始アドレス検出ルーチンは、マザーボードMBのCPUにより、検索するHDD毎に実行される。開始アドレス検出ルーチンでは、二分探索法により、HDDの記憶領域の途中にある開始アドレスSTART(図32(A)、図32(D))が検出される。
【0269】
まず、ステップS832において、開始アドレス検出ルーチンは、HDDの先頭アドレス(LOWER)と末尾アドレス(UPPER)の中間のアドレスを変数CENTERに設定する。以降の説明では、変数CENTERに設定された値は、中央アドレスCENTERとも称される。
【0270】
次に、ステップS800において、開始アドレス検出ルーチンは、タイムスタンプ読み出しルーチンを起動し、HDDの中央アドレスCENTERの記憶領域に格納されたデータのキャプチャ時刻であるタイムスタンプを読み出す。開始アドレス検出ルーチンは、読み出したタイムスタンプの値を変数TMSに設定する。
【0271】
次に、ステップS836において、開始アドレス検出ルーチンは、タイムスタンプTMSで示される時刻が開始時刻Tsであるか否かを判定する。タイムスタンプTMSで示される時刻が開始時刻Tsである場合、開始アドレスSTARTが検出されたため、処理はステップS848に移行される。タイムスタンプTMSで示される時刻が開始時刻Tsでない場合、開始アドレスSTARTを検出するために処理はステップS838に移行される。
【0272】
ステップS838において、開始アドレス検出ルーチンは、タイムスタンプTMSで示される時刻が開始時刻Tsより遅いか否かを判定する。タイムスタンプTMSで示される時刻が開始時刻Tsより遅い場合(TMS>Ts)、開始アドレスSTARTが中央アドレスCENTERより先頭アドレスLOWER側にあるため、処理はステップS840に移行される。タイムスタンプTMSで示される時刻が開始時刻Tsより早い場合、開始アドレスSTARTが中央アドレスCENTERより末尾アドレスUPPER側にあるため、処理はステップS842に移行される。
【0273】
ステップS840において、開始アドレス検出ルーチンは、中央アドレスCENTERよりアドレス値が小さい側を検索するために、中央アドレスCENTERを新たな末尾アドレスUPPERに設定し、処理をステップS844に移行する。一方、ステップS842において、開始アドレス検出ルーチンは、中央アドレスCENTERよりアドレス値が大きい側を検索するために、中央アドレスCENTERを新たな先頭アドレスLOWERに設定し、処理をステップS844に移行する。
【0274】
ステップS844において、開始アドレス検出ルーチンは、検索する領域が図9に示したデータユニットのサイズより小さくなったか否かを判定する。例えば、開始アドレス検出ルーチンは、現在の末尾アドレスUPPERと現在の先頭アドレスLOWERの差と、データユニットのサイズとを比較する。データユニットのサイズは、最大のデータサイズとタイムスタンプのサイズとセパレータのサイズの和である。検索する領域がデータユニットのサイズより小さくなった場合、二分探索を終了し、処理はステップS846に移行する。検索する領域がデータユニットのサイズ以上の場合、処理はステップS832に戻り、二分された新たな領域が検索される。
【0275】
ステップS846において、開始アドレス検出ルーチンは、現在の先頭アドレスLOWERを開始アドレスSTARTに設定し、処理を終了する。一方、ステップS848において、開始アドレス検出ルーチンは、現在の中央アドレスCENTERを開始アドレスSTARTに設定し、処理を終了する。
【0276】
図36は、図34に示したステップS860により起動される終了アドレス検出ルーチンの例を示す。終了アドレス検出ルーチンは、マザーボードMBのCPUにより、検索するHDD毎に実行される。終了アドレス検出ルーチンでは、二分探索法により、HDDの記憶領域の途中にある終了アドレスEND(図32(B)、図32(D))が検出される。
【0277】
まず、ステップS862において、終了アドレス検出ルーチンは、HDDの先頭アドレス(LOWER)と末尾アドレス(UPPER)の中間のアドレスを変数CENTERに設定する。次に、ステップS800において、終了アドレス検出ルーチンは、タイムスタンプ読み出しルーチンを起動し、HDDの中央アドレスCENTERの記憶領域に格納されたデータのキャプチャ時刻であるタイムスタンプを読み出す。終了アドレス検出ルーチンは、読み出したタイムスタンプの値を変数TMSに設定する。
【0278】
次に、ステップS866において、終了アドレス検出ルーチンは、タイムスタンプTMSで示される時刻が終了時刻Teであるか否かを判定する。タイムスタンプTMSで示される時刻が終了時刻Teである場合、終了アドレスENDが検出されたため、処理はステップS878に移行される。タイムスタンプTMSで示される時刻が終了時刻Teでない場合、終了アドレスENDを検出するために処理はステップS868に移行される。
【0279】
ステップS868において、終了アドレス検出ルーチンは、タイムスタンプTMSで示される時刻が終了時刻Teより遅いか否かを判定する。タイムスタンプTMSで示される時刻が終了時刻Teより遅い場合(TMS>Te)、終了アドレスENDが中央アドレスCENTERより先頭アドレスLOWER側にあるため、処理はステップS870に移行される。タイムスタンプTMSで示される時刻が終了時刻Teより早い場合、終了アドレスENDが中央アドレスCENTERより末尾アドレスUPPER側にあるため、処理はステップS872に移行される。
【0280】
ステップS870において、終了アドレス検出ルーチンは、中央アドレスCENTERよりアドレス値が小さい側を検索するために、中央アドレスCENTERを新たな末尾アドレスUPPERに設定し、処理をステップS874に移行する。一方、ステップS872において、終了アドレス検出ルーチンは、中央アドレスCENTERよりアドレス値が大きい側を検索するために、中央アドレスCENTERを新たな先頭アドレスLOWERに設定し、処理をステップS874に移行する。
【0281】
ステップS874において、終了アドレス検出ルーチンは、図35に示したステップS844と同様に、検索する領域が図19に示したデータユニットのサイズより小さくなったか否かを判定する。検索する領域がデータユニットのサイズより小さくなった場合、二分探索を終了し、処理はステップS876に移行する。検索する領域がデータユニットのサイズ以上の場合、処理はステップS862に戻り、二分された新たな領域が検索される。
【0282】
ステップS876において、終了アドレス検出ルーチンは、現在の末尾アドレスUPPERを終了アドレスENDに設定し、処理を終了する。一方、ステップS878において、終了アドレス検出ルーチンは、現在の中央アドレスCENTERを終了アドレスENDに設定し、処理を終了する。
【0283】
図37は、図33図34図35図36に示したステップS800により起動されるタイムスタンプ読み出しルーチンの例を示す。タイムスタンプ読み出しルーチンは、マザーボードMBのCPUにより、検索するHDD毎に実行される。
【0284】
まず、ステップS802において、タイムスタンプ読み出しルーチンは、図19に示したデータユニットのサイズを変数RSIZEに設定する。以降の説明では、データユニットのサイズは、サイズRSIZEとも称される。サイズRSIZEは、図19に示したセパレータのサイズと、タイムスタンプのサイズと、最大のデータサイズとの和である。
【0285】
次に、ステップS804において、タイムスタンプ読み出しルーチンは、HDDの先頭アドレスを変数LOWERに格納する。なお、タイムスタンプ読み出しルーチンは、図33に示したステップS712および図34に示したステップS742の変数LOWERを参照可能なとき、ステップS804は省略可能である。
【0286】
次に、ステップS806において、タイムスタンプ読み出しルーチンは、開始アドレス検索ルーチンまたは終了アドレス検索ルーチンの引数ADDRからサイズRSIZEを引いたアドレスが変数LOWER(先頭アドレス)より小さいか否かを判定する。
【0287】
例えば、引数ADDRは、開始アドレス検索ルーチンではHDDの先頭アドレスを示し、終了アドレス検索ルーチンではHDDの末尾アドレスを示す。また、引数ADDRは、START検出ルーチンおよびEND検出ルーチンでは、HDDの記憶領域の途中のアドレスを示す。
【0288】
引数ADDRからサイズRSIZEを引いたアドレスが先頭アドレスより小さい場合、処理はステップS808に移行される。引数ADDRからサイズRSIZEを引いたアドレスが先頭アドレス以上の場合、処理はステップS810に移行される。
【0289】
ステップS808において、タイムスタンプ読み出しルーチンは、変数LOWER(先頭アドレス)からサイズRSIZE分のデータを読み出し、処理をステップS812に移行する。ステップS810において、タイムスタンプ読み出しルーチンは、引数ADDRからサイズRSIZEを引いたアドレスからサイズRSIZE分のデータを読み出し、処理をステップS812に移行する。
【0290】
ステップS812において、タイムスタンプ読み出しルーチンは、読み出したデータを先頭から検索し、セパレータを検出する。次に、ステップS814において、タイムスタンプ読み出しルーチンは、検出したセパレータの直後に位置するタイムスタンプを読み出す。次に、ステップS816において、タイムスタンプ読み出しルーチンは、読み出したタイムスタンプの値を変数TMSに設定し、呼び出し元に戻る。
【0291】
図38は、図5に示した情報処理システムSYSが実行する検査動作のシーケンスの例を示す。すなわち、図38は、キャプチャ用のHDDの検査装置として動作する情報処理システムSYSのシーケンスの例を示す。以下の説明では、図7に示した管理装置400の動作は、管理装置400のCPU4による動作を含み、マザーボードMBの動作は、マザーボードMBのCPUによる動作を含む。
【0292】
なお、検査動作は、複数のマザーボードMBをキャプチャ用のHDDの検査を実行する検査サーバとして動作させることで実行されるが、図38では説明を簡単にするために、1つのマザーボードMBm(mは正の整数)による検査動作を示す。
【0293】
検査スレッドは、管理プロセスが起動されたのち、外部からの検査要求等を受信することなく管理プロセスにより起動される(図38(a))。検査スレッドは、例えば、図5に示したマザーボードプール100内で未使用のマザーボードMBmとストレージプール200内で未使用の起動用のHDDn(nは正の整数)とを接続する制御情報を接続装置300に出力する。接続装置300は、制御情報に基づいてマザーボードMBmとHDDnとを接続する。検査スレッドは、マザーボードMBmとHDDnとが互いに接続された後、マザーボードMBmを介してHDDnにOSおよび検査プログラムCHKPをインストールする。例えば、インストールは、キックスタートなどのリモートインストール手法により、図5に示した記憶装置BTからデータを転送することにより実行される。
【0294】
HDDnへのOSおよび検査プログラムCHKPのインストール後、マザーボードMBmは再起動される。マザーボードMBmのCPUは、OSの実行を開始し、HDDnのアクセスを開始する。また、マザーボードMBnは、インストールが完了したことを示す完了応答を検査スレッドに送信する(図38(b))。
【0295】
検査スレッドは、インストールの完了応答の受信に基づいて、例えば、マザーボードMBmとキャプチャ動作を実行していないHDD1−HDD4とを接続する制御情報を接続装置300に出力する(図38(c))。接続装置300は、制御情報に基づいてマザーボードMBmとHDD1−HDD4とを接続する。
【0296】
なお、図38から図55に示す例では、データが一対のHDDに冗長に書き込まれる。例えば、データは、HDD1とHDD2に冗長に書き込まれ、HDD3とHDD4に冗長に書き込まれる。すなわち、情報処理システムSYSは、データをミラーリングするRAID1の機能を有する。
【0297】
次に、検査スレッドは、マザーボードMBmに検査プロセスを起動する指示を出力する。マザーボードMBmは、検査プロセスを起動する指示に基づいて、検査プロセスを開始する(図38(d))。検査プロセスは、HDD1−HDD4の検査を開始し、HDD1−HDD4の検査の終了後に検査結果を検査スレッドに送信する(図38(e))。
【0298】
検査スレッドは、HDD1−HDD4の検査の終了後、マザーボードMBmとHDD1−HDD4との接続を解除する制御情報を接続装置300に出力する(図38(f))。接続装置300は、制御情報に基づいてマザーボードMBmとHDD1−HDD4との接続を解除する。
【0299】
この後、検査スレッドは、マザーボードMBmとキャプチャ動作を実行していない次のHDD5−HDD8とを接続する制御情報を接続装置300に出力する(図38(g))。接続装置300は、制御情報に基づいてマザーボードMBmとHDD5−HDD8とを接続する。
【0300】
検査スレッドは、マザーボードMBmに検査プロセスを起動する指示を出力する。マザーボードMBmは、検査プロセスを起動する指示に基づいて、検査プロセスを開始する(図38(h))。そして、検査スレッドは、HDD1−HDD4の検査と同様にHDD5−HDD8の検査を実行し、検査結果を検査スレッドに送信する。以降、キャプチャ動作を実行していないHDDの検査が順に実行される。
【0301】
図39は、図38に示した検査プロセスの起動時のテーブルの状態の例を示す。なお、図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。この例では、図38に示したマザーボードMBmは、マザーボードMB3であり、HDDnはHDD31であるとする。図39において、網掛けで示した領域は、図38に示した検査スレッドが、検査プロセスを起動する前に設定する箇所を示す。
【0302】
図38に示したように、検査スレッドは、検査プロセスを起動する前に、マザーボードMB3とHDD31とを接続し、マザーボードMB3に検査プログラムCHKPをインストールする。このため、検査スレッドは、マザーボードMB3およびHDD31の接続を示す情報をテーブルCNTBLに追加する。また、検査スレッドは、テーブルMSTBLにおけるマザーボードMB3の状態を”検査”に設定し、テーブルHSTBLにおけるHDD31の状態を”起動用”に設定する。
【0303】
なお、テーブルHSTBL中の”ミラー”の矢印で示すは、2つのHDDが共通のデータを保持することを表す。すなわち、2つのHDDがミラーリングされることで、一方のHDDが故障した場合に、破壊されたデータは、他方のHDDに保持されたデータを用いて復元可能である。
【0304】
図40は、図38に示した検査プロセスを実行中のテーブルの状態の例を示す。図40において、網掛けで示した領域は、図39に対して変化した箇所を示す。なお、図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。
【0305】
検査スレッドは、検査プログラムCHKPを実行するマザーボードMB3と、HDD(この例では、HDD1、HDD2、HDD3、HDD4)とを接続し、HDDを検査する。このため、検査スレッドは、マザーボードMB3およびHDD1−HDD4の接続を示す情報をテーブルCNTBLに追加し、テーブルHSTBLにおけるHDD1−HDD4の状態を”検査中”に設定する。また、検査スレッドは、検査するHDD1−HDD4と、各HDD1−HDD4の検査を開始する時刻t33、t34、t35、t36をテーブルCHKTBLに格納する。テーブルTBLのその他の状態は、図39と同様である。
【0306】
この実施形態では、例えば、データのキャプチャ動作は、マザーボードMB1、MB2で実行され、データの検査動作は、マザーボードMB1、MB2とは異なるマザーボードMB3で実行される。このため、図1から図4に示した実施形態と同様に、キャプチャ動作を実行するマザーボードMB1、MB2は、音声データのようにスループットの高いデータを、検査の実行の影響を受けることなく、HDDに安定して書き込みできる。また、検査動作を実行するマザーボードMB3は、リアルタイムで実行されるデータのキャプチャ動作の割り込みを受けることなく、検査動作を集中して実行できる。
【0307】
図41は、図16に示したステップS400により起動される検査スレッドの例を示す。検査スレッドは、管理装置400のCPU4が制御プログラムを実行することにより実現される。
【0308】
まず、ステップS402において、検査スレッドは、検査サーバとして動作させるマザーボードMBの数を変数Nに設定し、各マザーボードMBが検査するHDDの数を変数Mに設定する。変数N、Mに設定する値は、管理プロセスにより予め決められ、あるいは、図9に示したキャプチャ開始の指示とともにコンソールCNSLから指示される。
【0309】
次に、ステップS404において、検査スレッドは、図39に示したように、テーブルCHKTBLを”null”に初期化する。次に、ステップS406において、検査スレッドは、M個のマザーボードMBを選択したか否かを判定する。M個のマザーボードMBが選択された場合、処理はステップS416に移行され、M個のマザーボードMBが選択されていない場合、処理はステップS408に移行される。
【0310】
ステップS408において、検査スレッドは、テーブルMSTBLを参照し、未使用のマザーボードMBのいずれかを選択する。次に、ステップS410において、検査スレッドは、テーブルHSTBLを参照し、起動用のHDDのうち未使用のHDDを選択する。
【0311】
次に、ステップS412において、検査スレッドは、接続装置300を制御することにより、選択したマザーボードMBと選択した起動用のHDDとを互いに接続する。次に、ステップS414において、検査スレッドは、テーブルCNTBL、MSTBL、HSTBLを更新する。更新されたテーブルTBLの状態の例は、図39に示す。そして、検査スレッドは、検査動作を実行する全てのマザーボードMBを選択するまで、ステップS408、S410、S412、S414の処理を繰り返す。
【0312】
検査動作を実行する全てのマザーボードMBが選択された場合、ステップS416からS442において、検査スレッドは、選択したM個のマザーボードMBにOSと検査プログラムCHKPをそれぞれインストールする。まず、ステップS416において、検査スレッドは、選択したM個のマザーボードMBの初期化が完了したか否かを判定する。M個のマザーボードMBの初期化が完了した場合、処理はステップS424に移行し、初期化が完了していない場合、処理はステップS418に移行する。ステップS418、S420、S422、424の処理は、インストールされるプログラムが異なることを除き、図17に示したステップS216、S218、S220、S222の処理と同様のため、説明は省略する。
【0313】
次に、検査スレッドは、ステップS430において、検査するHDDの選択ルーチンを起動し、ステップS450において、検査プロセスの起動ルーチンを起動し、ステップS470において、検査結果の受信ルーチンを起動する。検査するHDDの選択ルーチンの例は、図42に示し、検査プロセスの起動ルーチンの例は、図43に示し、検査結果の受信ルーチンの例は、図44に示す。
【0314】
次に、ステップS426において、検査スレッドは、検査プロセスから受信した検査結果にHDDのエラーを示す情報が含まれるか否かを判定する。エラーを示す情報が含まれる場合、処理はステップS900に移行される。HDDのエラーを示す情報が含まれない場合、処理はステップS430に戻り、次のキャプチャ用のHDDの検査が実行される。ここで、HDDのエラーは、HDDの故障またはHDDの記憶領域に発生した修復可能なエラーである。
【0315】
ステップS900において、検査スレッドは、エラーを回復するコピー処理ルーチンを起動した後、処理をステップS430に戻す。コピー処理ルーチンの例は、図52図53図54に示す。
【0316】
図42は、図41に示したステップS430により呼び出される検査するHDDの選択ルーチンの例を示す。検査するHDDの選択ルーチンは、管理装置400のCPU4により実行される。
【0317】
まず、ステップS432において、選択ルーチンは、図41に示したステップS402と同様に、検査サーバとして起動したマザーボードMBの数を変数Nに設定し、各マザーボードMBが検査するHDDの数を変数Mに設定する。
【0318】
次に、ステップS434において、選択ルーチンは、リストHDDLIST1を”null”に初期化する。リストHDDLIST1には、検査するHDDを示す情報(HDDの番号等)が格納される。
【0319】
次に、ステップS436において、選択ルーチンは、並列して検査可能なHDDがリストHDDLIST1に保持されたか否かを判定する。例えば、並列して検査可能なHDDは、起動したマザーボードMBの数Nと、各マザーボードMBが検査するHDDの数Mとの積である。検査対象の全てのHDDがリストHDDLIST1に格納された場合、処理は終了し、検査対象のHDDのいずれかがリストHDDLIST1に格納されていない場合、処理はステップS438に移行する。
【0320】
ステップS438において、選択ルーチンは、前回の検査から最も時間が経過した待機中のHDDを選択する。次に、ステップS440において、選択ルーチンは、リストHDDLIST1を書き換えることで、ステップS438で選択したHDDをリストHDDLIST1に追加する。次に、ステップS442において、選択ルーチンは、図7に示したテーブルCHKTBLを更新し、処理をステップS436に戻す。
【0321】
図43は、図41に示したステップS450により呼び出される検査プロセスの起動ルーチンの例を示す。検査プロセスの起動ルーチンは、管理装置400のCPU4により実行される。
【0322】
まず、ステップS452において、起動ルーチンは、N個のマザーボードMBの検査プロセスが起動されたか否かを判定する。N個のマザーボードMBの検査プロセスが起動された場合、処理は終了し、検査プロセスが起動されていないマザーボードMBがある場合、処理はステップS454に移行される。
【0323】
ステップS454において、起動ルーチンは、検査プロセスが起動されていないマザーボードMBの1つを選択する。次に、ステップS456において、起動ルーチンは、リストHDDLIST1に格納されたHDDの情報の中からM個の情報を取り出す。
【0324】
次に、ステップS458において、起動ルーチンは、選択したマザーボードMBとリストHDDLIST1から取り出したM個のHDDとを接続する。次に、ステップS460において、起動ルーチンは、テーブルCNTBL、HSTBL、CHKTBLを更新する。更新されたテーブルTBLの状態の例は、図40に示す。そして、ステップS1000において、起動ルーチンは、ステップS454で選択したマザーボードMBの検査プロセスを起動し、処理をステップS452に戻す。検査プロセスの例は、図45に示す。
【0325】
図44は、図41に示したステップS470により呼び出される検査結果の受信ルーチンの例を示す。検査結果の受信ルーチンは、管理装置400のCPU4により実行される。
【0326】
まず、ステップS472において、受信ルーチンは、リストRSLTLIST4を”null”に初期化する。例えば、リストRSLTLIST4には、検査結果が格納され、あるいは、検査結果が格納される記憶領域のアドレスが格納される。
【0327】
次に、ステップS474において、受信ルーチンは、検査サーバとして動作する全てのマザーボードMBの検査結果を受信したか否かを判定する。全てのマザーボードMBからの検査結果が受信された場合、処理は終了し、検査結果が受信されないマザーボードMBがある場合、処理はステップS476に移行される。
【0328】
ステップS476において、受信ルーチンは、検査サーバとして動作するマザーボードMBのいずれかからM個のHDDの検索結果を受信したか否かを判定する。検査結果が受信された場合、処理はステップS478に移行され、検査結果が受信されない場合、処理はステップS474に戻る。すなわち、ステップS476では、受信ルーチンは、検査結果の受信を待つ。
【0329】
ステップS478において、検査結果を受信した受信ルーチンは、リストRSLTLIST4に検索結果を追加する。次に、ステップS480において、受信ルーチンは、接続装置300を制御することにより、検査結果を出力したマザーボードMBと検査対象のM個のHDDとの接続を解除する。
【0330】
次に、ステップS482において、受信ルーチンは、接続を解除したHDDに合わせて、テーブルCNTBL、HSTBLを更新した後、ステップS474に戻る。
【0331】
図45は、図43に示したステップS1000により起動される検査プロセスの例を示す。
【0332】
まず、ステップS1002において、検査プロセスは、検査スレッドから検査を実行するHDDの番号を、例えば、コマンドライン等を用いて受信し、受信したHDDの番号をリストHDDLIST2に登録する。また、検査プロセスは、検査結果を格納する検査リストCHKLISTを”null”に初期化する。
【0333】
次に、ステップS1004において、検査プロセスは、検査するHDDがマザーボードMBに接続されるのを待つ。次に、ステップS1006において、検査プロセスは、マザーボードMBに接続されたHDDにアクセス可能か否かを判定する。アクセス可能な場合、HDDに故障が発生していないため、処理はステップS1012に移行される。アクセスエラーが発生する場合、HDDが故障したため、処理はステップS1008に移行される。例えば、アクセスエラーは、HDDの複数の記憶領域に対する書き込みアクセスおよび読み出しアクセスの少なくともいずれかでエラーが発生する場合に認識される。
【0334】
ステップS1008において、検査プロセスは、故障したHDDの番号を検査リストCHKLISTに登録する。次に、ステップS1010において、検査プロセスは、故障したHDDの番号を検査スレッドから受信したリストHDDLIST2から削除する。
【0335】
ステップS1012において、検査プロセスは、検査していないHDDがあるか否かを判定する。検査していないHDDがある場合、処理はステップS1014に移行され、検査対象の全てのHDDが検査された場合、処理はステップS1022に移行される。
【0336】
ステップS1014において、検査プロセスは、検査していないHDDを選択する。次に、ステップS1016において、検査プロセスは、HDDにアクセスし、バッドブロックのチェック結果を読み出す。バッドブロックは、HDDの記憶領域であるブロックのうち、データの読み出し時または書き込み時にエラーが発生するブロックである。バッドブロックは、他のブロックと置き換え、使用禁止にすることでエラーをなくすことが可能である。例えば、バッドブロックのチェックは、HDDのメディアチェック機能を利用して実行される。
【0337】
次に、ステップS1018において、検査プロセスは、バッドブロックのチェック結果に基づいて、バッドブロックがあるか否かを判定する。バッドブロックがある場合、処理はステップS1020に移行され、バッドブロックがない場合、処理はステップS1012に戻る。ステップS1020において、検査プロセスは、検出されたバッドブロックとバッドブロックを示すアドレスとを、HDDの番号とともに検査リストCHKLISTに登録する。この後、処理はステップS1012に戻る。
【0338】
一方、検査対象の全てのHDDの検査が完了した場合、ステップS1022において、検査プロセスは、管理装置400が実行する検査スレッドに、検査リストCHKLISTの内容を送信する。そして、検査プロセスが完了する。
【0339】
図46は、図5に示した情報処理システムが実行するコピー動作のシーケンスの例を示す図である。すなわち、図46は、HDDのデータのコピー装置として動作する情報処理システムSYSのシーケンスの例を示す。コピー動作のシーケンスは、図41に示した検査スレッドにおいて、HDDの故障が検出され、またはHDDのバッドブロックが検出された場合に実行される。以下の説明では、図7に示した管理装置400の動作は、管理装置400のCPU4による動作を含み、マザーボードMBの動作は、マザーボードMBのCPUによる動作を含む。
【0340】
なお、コピー動作は、複数のマザーボードMBをHDDのデータのコピーを実行するコピーサーバとして動作させることで実行されるが、図46では説明を簡単にするために、1つのマザーボードMBm(mは正の整数)によるコピー動作を示す。
【0341】
検査スレッドは、図38と同様に、制御装置300を制御して、マザーボードMBmとHDDnとを接続する。検査スレッドは、図38と同様に、マザーボードMBmとHDDnとの接続後、マザーボードMBmを介してHDDnにOSおよびコピープログラムCPYP等のプログラムをインストールする(図46(a))。
【0342】
検査スレッドは、HDDnへのOSおよびコピープログラムCPYPのインストール後、マザーボードMBmを再起動する。マザーボードMBmのCPUは、OSの実行を開始し、HDDnのアクセスを開始する。また、マザーボードMBnは、インストールが完了したことを示す完了応答を検査スレッドに送信する(図46(b))。
【0343】
インストール完了の受信後、検査スレッドは、接続装置300を制御して、マザーボードMBmと不具合のあるHDDとミラー関係にあるHDD(例えば、HDD1)、HDDxとを接続する(図46(c))。ここで、HDDxは、不具合のあるHDDと置き換えられるHDD、または不具合のあるHDD(例えば、HDD1とミラー関係にあるHDD)である。
【0344】
次に、検査スレッドは、マザーボードMBmにコピープロセスを起動する指示を出力する。マザーボードMBmは、コピープロセスを起動する指示に基づいて、コピープロセスを開始する(図46(d))。コピープロセスは、HDD1に保持されたデータをHDDxにコピーする処理を実行する。例えば、HDDxは、検査スレッドによりHDDの故障が検出された場合、スペア用の未使用のHDDである。HDDxは、検査スレッドによりバッドブロックが検出された場合、バッドブロックが検出されたHDDである。
【0345】
コピープロセスは、コピーの実行後、検査スレッドにコピーが完了したことを示す完了応答を送信する(図46(e))。検査スレッドは、コピーの完了応答の受信に基づいて、制御装置300を制御することで、マザーボードMBmとHDD1、HDDxとの接続を解除する(図46(f))。
【0346】
図47は、図46に示したコピープロセスの起動時のテーブルの状態の例を示す図である。図47において、網掛けで示した領域は、コピープロセスの起動に伴い変化した箇所を示す。図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。テーブルHSTBL中の”ミラー”の矢印は、図39と同様に、データを冗長に保持することを示す。この例では、図46に示したマザーボードMBmは、マザーボードMB4であり、HDDnはHDD32であるとする。
【0347】
この例では、図46に示したように、検査スレッドは、コピープロセスを起動する前に、マザーボードMB4とHDD32とを接続し、マザーボードMB4にコピープログラムCPYPをインストールする。このため、検査スレッドは、マザーボードMB4およびHDD32の接続を示す情報をテーブルCNTBLに追加する。また、検査スレッドは、テーブルMSTBLにおけるマザーボードMB4の状態を”コピー”に設定し、テーブルHSTBLにおけるHDD32の状態を”起動用”に設定する。
【0348】
図48は、図46に示したコピープロセスを実行中のテーブルの状態の例を示す図である。図48において、網掛けで示した領域は、図47に対して変化した箇所を示す。図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。
【0349】
この例では、図38に示した検査プロセスによりHDD3の故障が検出され、HDD3とペアの関係にあるHDD1からスペアのHDD25にデータがコピーされる。
【0350】
検査スレッドは、コピープログラムCPYPを実行するマザーボードMB4と、コピーを実行するHDD1、HDD25とを接続する。このため、検査スレッドは、マザーボードMB4およびHDD1、HDD25の接続を示す情報をテーブルCNTBLに追加する。また、検査スレッドは、テーブルHSTBLにおけるHDD25を”スペア用”から”データキャプチャ用”に変更し、HDD3を”データキャプチャ用”から”スペア用”に変更する。検査スレッドは、テーブルHSTBLにおけるHDD1、HDD25の状態を”コピー中”に設定し、HDD3の状態を”故障”に設定する。
【0351】
さらに、検査スレッドは、テーブルINDTBLにおいてHDD3が登録されたレコード(行)をHDD25に置き換える(開始時刻と終了時刻は”null”に初期化)。検査スレッドは、テーブルCHKTBLにおいて、HDD3が登録されたレコード(行)をHDD25に置き換える(検査時刻は”null”に初期化)。また、検査スレッドは、HDD3が故障した情報(HDD障害)をテーブルFAILTBLに登録する。テーブルTBLのその他の状態は、図47と同様である。
【0352】
図49は、図46に示したコピープロセスの実行後のテーブルの状態の例を示す図である。図49において、網掛けで示した領域は、図48に対して変化した箇所を示す。図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。この例では、コピープロセスの実行により、HDD3と置き換えられたHDD25によりデータのキャプチャ動作が実行可能な状態に設定される。
【0353】
コピープロセスの完了に基づいて、検査スレッドは、マザーボードMB4およびHDD1、HDD25の接続を示す情報をテーブルCNTBLから削除し、テーブルMSTBLにおけるマザーボードMB4の状態を”未使用”に設定する。また、検査スレッドは、テーブルHSTBLにおけるHDD1、HDD25の状態を図48に示した”コピー中”から”待機中”に変更し、HDD32の状態を図48に示した”起動用”から”未使用”に変更する。検査スレッドは、テーブルCHKTBLにおけるHDD1、HDD25の検査時刻をコピー動作が完了した時刻である”t37”に設定する。さらに、検査スレッドは、テーブルINDTBLにおいてHDD25が登録されたレコード(行)の開始時刻および終了時刻を、HDD1と同じ”t25”および”t25’”に設定する。
【0354】
図50は、図46に示したコピープロセスを実行中のテーブルの状態の別の例を示す図である。図50において、網掛けで示した領域は、図47に対して変化した箇所を示す。図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。
【0355】
この例では、図38に示した検査プロセスによりHDD3のバッドブロックが検出され、HDD3およびHDD3とペアの関係にあるHDD1がマザーボードMB4に接続される。そして、HDD1からHDD3にデータがコピーされ、バッドブロックに記憶されたデータが回復する。図48と同様の動作については、詳細な説明は省略する。
【0356】
検査スレッドは、図48と同様に、マザーボードMB4およびHDD1、HDD3の接続を示す情報をテーブルCNTBLに追加し、テーブルHSTBLにおけるHDD1、HDD3の状態を”コピー中”に設定する。また、検査スレッドは、HDD3にバッドブロックが発生した情報(Bad Block)をバッドブロックのアドレスaddrとともにテーブルFAILTBLに登録する。
【0357】
図51は、図46に示したコピープロセスの実行後のテーブルの状態の別の例を示す図である。図51において、網掛けで示した領域は、図50に対して変化した箇所を示す。図8に示したテーブルMBTBL、HDDTBLは、状態が変化しないため、記載は省略する。
【0358】
この例では、コピープロセスの実行により、バッドブロックのデータを回復したHDD3がHDD1とともにデータのキャプチャ動作が実行可能な状態に設定される。テーブルFAILTBLにエントリされたHDD3は修復されるため、テーブルFAILTBLの1行目は、”null”にクリアされる。図49と同様の動作については、詳細な説明は省略する。
【0359】
コピープロセスの完了に基づいて、検査スレッドは、マザーボードMB4およびHDD1、HDD3の接続を示す情報をテーブルCNTBLから削除し、テーブルMSTBLにおけるマザーボードMB4の状態を”未使用”に設定する。また、検査スレッドは、テーブルHSTBLにおけるHDD1、HDD3の状態を図50に示した”コピー中”から”待機中”に変更し、HDD32の状態を図50に示した”起動用”から”未使用”に変更する。
【0360】
図52は、図41に示したステップS900により呼び出されるコピー処理ルーチンの例を示す図である。コピー処理ルーチンは、管理装置400のCPU4が制御プログラムを実行することにより実現される。
【0361】
まず、ステップS902において、コピー処理ルーチンは、指定された数のマザーボードMBを選択したか否かを判定する。指定された数のマザーボードMBが選択された場合、処理はステップS912に移行され、選択したマザーボードMBの数が指定された数に満たない場合、処理はステップS904に移行される。マザーボードMBの数の指定は、管理プロセスにより予め決められてもよく、図9に示したキャプチャ開始の指示とともにコンソールCNSLから受信してもよい。
【0362】
次に、ステップS904において、コピー処理ルーチンは、テーブルMSTBLを参照し、未使用のマザーボードMBのいずれかを選択する。次に、ステップS908において、コピー処理ルーチンは、テーブルHSTBLを参照し、起動用のHDDのうち未使用のHDDを選択する。
【0363】
次に、ステップS908において、コピー処理ルーチンは、接続装置300を制御することにより、選択したマザーボードMBと選択した起動用のHDDとを互いに接続する。次に、ステップS910において、コピー処理ルーチンは、テーブルCNTBL、MSTBL、HSTBLを更新する。更新されたテーブルTBLの状態の例は、図47に示す。そして、コピー処理ルーチンは、コピー動作を実行する全てのマザーボードMBを選択するまで、ステップS904、S906、S908、S910の処理を繰り返す。
【0364】
コピー動作を実行する全てのマザーボードMBが選択された場合、ステップS912からS918において、コピー処理ルーチンは、選択したマザーボードMBにOSとコピープログラムCPYPをそれぞれインストールする。ステップS912、S914、S916、S918、S920の処理は、インストールされるプログラムが異なることを除き、図17に示したステップS216、S218、S220、S222の処理と同様のため、説明は省略する。
【0365】
次に、コピー処理ルーチンは、ステップS922において、HDDのエラー情報が格納されたリストRSLTLIST4が”null”か否かを判定する。リストRSLTLIST4が”null”の場合、エラーが発生したHDDが存在しないため、コピー処理ルーチンは終了する。リストRSLTLIST4が”null”でない場合、エラーが発生したHDDが存在するため、処理はステップS924に移行される。
【0366】
ステップS924において、コピー処理ルーチンは、リストRSLTLIST4からHDDの障害情報を取り出す。次に、ステップS926において、コピー処理ルーチンは、HDDが故障したか、HDDにバッドブロックが発生したかを判定する。HDDが故障した場合、処理はステップS930に移行され、HDDにバッドブロックが発生した場合、処理はステップS960に移行される。
【0367】
ステップS930において、コピー処理ルーチンは、HDD障害処理ルーチンを起動する。ステップS924において、コピー処理ルーチンは、ブロック救済処理ルーチンを起動する。HDD障害処理ルーチンの例は、図53に示す。ブロック救済処理ルーチンの例は、図54に示す。ステップS930、S960の後、処理はステップS922に戻る。
【0368】
図53は、図52に示したステップS930により呼び出されるHDD障害処理ルーチンの例を示す図である。HDD障害処理ルーチンは、管理装置400のCPU4が制御プログラムを実行することにより実現される。
【0369】
まず、ステップS932において、HDD障害処理ルーチンは、テーブルHSTBLのスペア用の領域を参照し、故障したHDDと交換するスペアのHDDを未使用のHDDの中から選択する。次に、ステップS934において、HDD障害処理ルーチンは、テーブルTSTBLを更新し、データキャプチャ用の領域に格納された故障したHDDの番号をスペアのHDDの番号に書き換え、故障したHDDの番号をスペア用の領域に格納する。これにより、スペアのHDDと故障したHDDとが互いに入れ換えられる。
【0370】
次に、ステップS936において、HDD障害処理ルーチンは、故障したHDDとミラー関係にあるHDDであるミラーHDDを選択する。次に、ステップS938において、HDD障害処理ルーチンは、制御装置300を制御することで、コピー動作を実行するマザーボードMB、ミラーHDDおよびスペアのHDDを互いに接続する。次に、ステップS940において、HDD障害処理ルーチンは、接続したマザーボードMBおよびHDDに合わせてテーブルCNTBLを更新し、テーブルHSTBLにおけるコピー処理するHDDの状態を”コピー中”にする。更新されたテーブルTBLの状態の例は、図48に示す。
【0371】
次に、ステップS990において、HDD障害処理ルーチンは、コピープロセスを起動する。コピープロセスの例は、図55に示す。次に、ステップS942において、HDD障害処理ルーチンは、コピープロセスからの完了応答を待つ。次に、ステップS944において、HDD障害処理ルーチンは、コピープロセスからの完了応答の受信に基づいて、制御装置300を制御することで、コピー動作を実行したマザーボードMB、ミラーHDDおよびスペアのHDDとの接続を解除する。
【0372】
次に、ステップS946において、HDD障害処理ルーチンは、テーブルCNTBL、MSTBL、HSTBL、INDTBL、CHKTBLを更新する。更新されたテーブルTBLの状態の例は、図49に示す。そして、HDD障害処理ルーチンは終了する。
【0373】
図54は、図52に示したステップS960により呼び出されるブロック救済処理ルーチンの例を示す図である。ブロック救済処理ルーチンは、管理装置400のCPU4が制御プログラムを実行することにより実現される。
【0374】
まず、ステップS962において、ブロック救済処理ルーチンは、バッドブロックが検出されたHDDとミラー関係にあるHDDであるミラーHDDを選択する。次に、ステップS964において、ブロック救済処理ルーチンは、制御装置300を制御することで、コピー動作を実行するマザーボードMB、ミラーHDDおよびバッドブロックが発生したHDDを互いに接続する。次に、ステップS966において、ブロック救済処理ルーチンは、CNTBL、HSTBLを更新する。更新されたテーブルTBLの状態の例は、図50に示す。
【0375】
次に、ステップS990において、ブロック救済処理ルーチンは、コピープロセスを起動する。コピープロセスの例は、図55に示す。次に、ステップS968において、ブロック救済処理ルーチンは、コピープロセスからの完了応答を待つ。次に、ステップS970において、ブロック救済処理ルーチンは、コピープロセスからの完了応答の受信に基づいて、制御装置300を制御することで、コピー動作を実行したマザーボードMB、ミラーHDDおよびバッドブロックが発生したHDDとの接続を解除する。
【0376】
次に、ステップS972において、ブロック救済処理ルーチンは、テーブルCNTBL、MSTBL、HSTBL、INDTBL、CHKTBLを更新する。更新されたテーブルTBLの状態の例は、図51に示す。そして、ブロック救済処理ルーチンは終了する。
【0377】
図55は、図53および図54に示したステップS990により起動されるコピープロセスの例を示す。コピープロセスは、マザーボードMBのCPUがコピープログラムCPYPを実行することにより実現される。
【0378】
まず、ステップS992において、コピープロセスは、図53に示したステップ938または図54に示したステップS964によるHDDのマザーボードMBへの接続を待つ。
【0379】
次に、ステップS994において、コピープロセスは、コピー元であるミラーHDDの番号、コピー先のHDDの番号、およびデータをコピーする範囲を、例えば、コマンドライン等を用いて取得する。コピー先のHDDは、スペアのHDDまたはバッドブロックが発生したHDDである。
【0380】
次に、ステップS996において、コピープロセスは、コピー動作を実行する。次に、ステップS998において、コピープロセスは、検査スレッドにコピー動作が完了したことを示すコピー完了応答を送信する。
【0381】
以上、この実施形態においても、図1から図4に示した実施形態と同様に、マザーボードMB1、MB2に接続されるHDDを順次に切り替えながらキャプチャ動作を実行することで、他のHDDの干渉を受けることなく選択したHDDにデータを安定して書き込みできる。キャプチャ動作を実行するマザーボードMB1、MB2は、検索動作および検査動作を実行しないため、キャプチャ動作を中断することなく実行でき、検索動作や検査動作によって、データのHDDへの書き込みレートが低下することはない。
【0382】
検索動作を実行するマザーボードMB3は、データのキャプチャ動作を実行するマザーボードMB1とは独立に動作するため、キャプチャ動作による割り込みを受けることなく、データを検索できる。検査動作を実行するマザーボードMB4は、データのキャプチャ動作を実行するマザーボードMB1とは独立に動作するため、キャプチャ動作による割り込みを受けることなく、データを検査できる。
【0383】
さらに、キャプチャ動作において、管理装置400の制御により、書き込みアドレスが閾値VT1を超えた時点で新たなHDDの接続処理を開始することで、キャプチャ用のHDDが切り替わる場合にも、マザーボードMBは、データを失うことなくHDDに書き込みできる。
【0384】
管理装置400の制御により、キャプチャ動作によってデータが保持された待機状態のHDDの電源を遮断することで、消費電力の増加を抑制しながら、データを失うことなくHDDに保持できる。検索動作および検査動作を実行しないマザーボードMBおよびHDDへの電源の供給を停止することで、電源を供給する場合に比べて情報処理システムSYSの消費電力を削減できる。この際、電源が遮断されたHDDは、OSおよびプログラムを保持するため、マザーボードMBを再起動させることで、検索動作または検査動作が実行可能になる。
【0385】
以上の実施形態において説明した発明を整理して、付記として開示する。
(付記1)
演算処理をそれぞれ実行する複数の演算処理装置と、
データをそれぞれ記憶する複数の記憶装置と、
前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、
前記複数の演算処理装置および前記接続装置を制御する管理装置を有し、
前記複数の演算処理装置のうちの第1の演算処理装置は、前記複数の記憶装置のうちの第1の記憶装置にデータを書き込み、前記第1の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続し、
前記第1の演算処理装置は、前記第2の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第1の演算処理装置から前記第1の記憶装置を切り離すことを特徴とする情報処理システム。
(付記2)
前記第1の演算処理装置は、前記接続装置を介して接続された記憶装置に所定量のデータを書き込む毎に前記管理装置に前記割り当て要求および前記開放要求を発行し、
前記管理装置は、前記割り当て要求および前記開放要求に基づいて、前記第1の演算処理装置に接続する記憶装置を切り替え、データを未書き込みの記憶装置が存在しない場合に、前記割り当て要求に基づいて、他の記憶装置に比べて古いデータを保持した記憶装置を前記第1の演算処理装置に接続し、
前記第1の演算処理装置は、前記古いデータを保持した記憶装置に新たなデータを上書きすることを特徴とする付記1記載の情報処理システム。
(付記3)
前記管理装置は、前記第1の記憶装置に最初にデータを書き込む前に、前記第1の演算処理装置に前記複数の記憶装置のうちの1つを接続し、接続した記憶装置に、前記第1の記憶装置にデータを書き込むプログラムをインストールすることを特徴とする付記1または付記2記載の情報処理システム。
(付記4)
前記管理装置は、検索要求に基づいて、前記接続装置を制御して、前記複数の演算処理装置のうちの第2の演算処理装置を、データを保持した前記第1の記憶装置のいずれかである第3の記憶装置に接続し、
前記第2の演算処理装置は、前記検索要求に基づいて、前記第3の記憶装置に保持されたデータを検索し、検索結果を前記管理装置に通知し、
前記管理装置は、前記検索結果の受信に応答して、前記第2の演算処理装置と前記第3の記憶装置との接続を解除することを特徴とする付記1ないし付記3のいずれか1項記載の情報処理システム。
(付記5)
前記管理装置は、データが生成された時刻を示す時刻情報を、データが書き込まれた記憶装置毎に記憶する記憶部を有し、前記検索要求に含まれる検索キーが示す時刻情報に対応するデータを保持する記憶装置を、前記記憶部に記憶した前記時刻情報に基づいて選択し、選択した記憶装置を前記第3の記憶装置として前記第2の演算処理装置に接続することを特徴とする付記4記載の情報処理システム。
(付記6)
前記管理装置は、前記検索要求で指示された検索対象の記憶装置が前記第1の演算処理装置に接続された前記第1の記憶装置の場合、前記接続装置を制御して、前記第1の演算処理装置に前記第2の記憶装置を接続し、前記第1の演算処理装置から前記第1の記憶装置を切り離して前記第3の記憶装置として前記第2の演算処理装置に接続することを特徴とする付記4または付記5記載の情報処理システム。
(付記7)
前記管理装置は、前記検索要求に基づいて、前記第2の演算処理装置に前記複数の記憶装置のうちの1つを接続し、接続した記憶装置に、前記第3の記憶装置に保持されたデータを検索するプログラムをインストールすることを特徴とする付記1ないし付記6のいずれか1項記載の情報処理システム。
(付記8)
前記第1の演算処理装置は、複数の前記第1の記憶装置にデータを冗長に書き込み、
前記管理装置は、前記接続装置を制御して、前記複数の演算処理装置のうちの第3の演算処理装置に、データを冗長に保持する複数の前記第1の記憶装置のうち前記第1の演算処理装置に接続されない第4の記憶装置を接続し、
前記第3の演算処理装置は、前記第4の記憶装置を検査し、検査結果を前記管理装置に通知し、
前記管理装置は、前記検査結果が前記第4の記憶装置の故障を示す場合に、前記接続装置を制御して、前記第3の演算処理装置に前記複数の記憶装置のうちの第5の記憶装置を接続し、前記第4の記憶装置とともにデータを冗長に保持する第6の記憶装置に保持されたデータを前記第5の記憶装置にコピーし、故障した前記第4の記憶装置の前記第1の演算処理装置に対する割り当てを前記第5の記憶装置に変更することを特徴とする付記1ないし付記7のいずれか1項記載の情報処理システム。
(付記9)
前記管理装置は、前記検査結果が修復可能なエラーを示す場合に、前記第6の記憶装置に保持されたデータを、エラーが発生した前記第4の記憶装置にコピーすることを特徴とする付記8記載の情報処理システム。
(付記10)
前記管理装置は、前記第3の演算処理装置に接続する記憶装置を順に切り替えて検査を実行することを特徴とする付記8または付記9記載の情報処理システム。
(付記11)
前記管理装置は、前記第1の記憶装置の前記1つを検査する前に、前記第3の演算処理装置に前記複数の記憶装置のうちの1つを接続し、接続した記憶装置に、前記記憶装置を検査するプログラムをインストールすることを特徴とする付記8ないし付記10のいずれか1項記載の情報処理システム。
(付記12)
演算処理をそれぞれ実行する複数の演算処理装置の各々を、前記接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置において、
前記複数の演算処理装置のうちの第1の演算処理装置が、前記複数の記憶装置のうちの第1の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続し、
前記第1の演算処理装置が、前記第2の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置から前記第1の記憶装置を切り離すことを特徴とする管理装置。
(付記13)
演算処理をそれぞれ実行する複数の演算処理装置の各々を、前記接続装置を介して、データをそれぞれ記憶する複数の記憶装置のいずれかに接続する管理装置の制御プログラムにおいて、
前記管理装置に、
前記複数の演算処理装置のうちの第1の演算処理装置が、前記複数の記憶装置のうちの第1の記憶装置に所定量のデータを書き込んだことに基づいて発行する割り当て要求に基づいて、前記接続装置を制御させ、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続させ、
前記第1の演算処理装置が、前記第2の記憶装置へのデータの書き込みを開始した後に発行する開放要求に基づいて、前記接続装置を制御させ、前記第1の演算処理装置から前記第1の記憶装置を切り離させることを特徴とする管理装置の制御プログラム。
(付記14)
演算処理をそれぞれ実行する複数の演算処理装置と、データをそれぞれ記憶する複数の記憶装置と、前記複数の演算処理装置の各々を前記複数の記憶装置のいずれかに接続する接続装置と、前記複数の演算処理装置および前記接続装置を制御する管理装置を含む情報処理システムの制御方法において、
前記複数の演算処理装置のうちの第1の演算処理装置は、前記複数の記憶装置のうちの第1の記憶装置にデータを書き込み、前記第1の記憶装置に所定量のデータを書き込んだことに基づいて、前記管理装置に割り当て要求を発行し、
前記管理装置は、前記割り当て要求に基づいて、前記接続装置を制御して、前記第1の演算処理装置に前記複数の記憶装置のうちの第2の記憶装置を接続し、
前記第1の演算処理装置は、前記第2の記憶装置へのデータの書き込みを開始した後に前記管理装置に開放要求を発行し、
前記管理装置は、前記開放要求に基づいて、前記接続装置を制御して前記第1の演算処理装置から前記第1の記憶装置を切り離すことを特徴とする情報処理システムの制御方法。
【0386】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0387】
100…マザーボードプール;200…ストレージドライブプール;300…接続装置;400…管理装置;500…スイッチ装置;BT…記憶装置;CHKTBL…テーブル;CNIF…接続インタフェース;CNSL…コンソール;CNTBL…テーブル;CNTL…管理装置;CPU、CPU4…演算処理装置;FAILTBL…テーブル;HDD…ハードディスクドライブ;HDDTBL…テーブル;HSTBL…テーブル;INDTBL…テーブル;MB…マザーボード;MD、MD4…記憶装置;MEM…記憶装置;MBTBL…テーブル;MSTBL…テーブル;NW…ネットワーク;NWIF…ネットワークインタフェース;SW…接続装置;SYS…情報処理システム;TBL…テーブル
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34
図35
図36
図37
図38
図39
図40
図41
図42
図43
図44
図45
図46
図47
図48
図49
図50
図51
図52
図53
図54
図55