(57)【要約】【課題】同じデータに対して複数のクライアントが同時にアクセスする場合であっても、スループットの低下を抑制することが可能な記憶装置を提供する。【解決手段】記憶装置１は、それぞれが同一のデータを記憶する複数の記憶部２と、各記憶部の負荷状況を示す第１負荷情報に基づいて、複数の記憶部２のいずれかを選択する管理部４と、選択された記憶部２からデータを読み出す読出部３を有する。【選択図】図１
2015200930.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが同一のデータを記憶する複数の記憶部と、
各記憶部の負荷状況を示す第１負荷情報に基づいて、前記複数の記憶部のいずれかを選択する管理部と、
選択された前記記憶部から前記データを読み出す読出部と、を備える記憶装置。
【請求項２】
前記管理部は、前記複数の記憶部のいずれかを選択した後で、当該選択された記き憶部の前記第１負荷情報が所定の条件を満たした場合、他の記憶部を選択することで、前記データを読み出すために用いられる記憶部を切り替える、請求項１に記載の記憶装置。
【請求項３】
前記管理部は、前記第１負荷情報を繰り返し取得し、前記第１負荷情報が前記所定の条件を連続して満たした回数をカウントし、当該回数が規定数を超えた場合、前記他の記憶部を選択する、請求項２に記載の記憶装置。
【請求項４】
前記管理部は、前記データの読み出しを要求する読出要求を受け付けると、前記第１負荷情報に基づいて前記複数の記憶部のいずれかを選択する、請求項１ないし３のいずれか１項に記載の記憶装置。
【請求項５】
前記複数の記憶部のそれぞれは制御装置を有し、
前記管理部は、前記第１負荷情報として、各制御装置の使用率および各記憶部に対するアクセス数の少なくとも一方を用いる、請求項１ないし４のいずれか１項に記載の記憶装置。
【請求項６】
前記管理部は、前記使用率および前記アクセス数を前記第１負荷情報として用いるものであって、各記憶部について、当該記憶部のアクセス数と当該記憶部に対して設定された上限値との差を算出し、当該算出結果に基づいて、前記複数の記憶部のいずれかを選択し、前記使用率に基づいて、前記上限値を前記記憶部ごとに調整する、請求項５に記載の記憶装置。
【請求項７】
前記管理部は、前記使用率を繰り返し取得し、当該使用率が連続して所定の閾値を超えた回数をカウントし、当該回数が規定値を超えた場合、前記上限値を下げる、請求項６に記載の記憶装置。
【請求項８】
前記読出部を複数備え、
前記管理部は、各読出部の負荷状況を示す第２負荷情報に基づいて、前記複数の読出部のいずれかを選択し、
選択された前記読出部は、前記選択された記憶部から前記データを読み出す、請求項１ないし７のいずれか１項に記載の記憶装置。
【請求項９】
それぞれが同一のデータを記憶する複数の記憶部のそれぞれの負荷状況を示す第１負荷情報に基づいて、前記複数の記憶部のいずれかを選択し、
選択された前記記憶部から前記データを読み出す、データ読出方法。
【請求項１０】
コンピュータを、
それぞれが同一のデータを記憶する複数の記憶部と、
各記憶部の負荷状況を示す第１負荷情報に基づいて、前記複数の記憶部のいずれかを選択する管理部と、
選択された前記記憶部から前記データを読み出す読出部と、を備える記憶装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置、データ読出方法、およびプログラムに関する。
【背景技術】
【０００２】
近年、各種のセンサが生成したデータ、監視カメラの映像データ、テレビ放送の映像データ、ラジオ放送の音声データなどの時系列データを扱う機会が増大している。このような時系列データをリアルタイムで分析することにより、現在起きている事象をリアルタイムで知ることができたり、過去のデータに基づいて、これから発生する事象の予測を行うことが可能になる。
【０００３】
例えば、時系列データをリアルタイムで分析したり、映像データまたは音声データを遅延なく再生したりするためには、記憶されたデータを一定のスループットを保って読み出すことが必要となる。記憶されたデータを一定のスループットを保って読み出すためには、データ読出処理の処理負荷が特定のリソースに集中することを抑制するために、処理負荷を分散させることが重要である。
【０００４】
特許文献１には、負荷分散に関する技術として、アクセスの多い複数のデータを記憶した特定のストレージに処理負荷が集中することを抑制するために、データをストレージ間で移動させる分散データ管理システムが記載されている。この分散データ管理システムでは、移動元サーバの負荷状況に基づいて、データを移動させるタイミングを決定している。
【０００５】
特許文献２には、負荷分散に関する技術として、ジョブを複数の計算機に分散して実行させる負荷分散システムが記載されている。この負荷分散システムでは、ジョブの実行に必要なデータが、高速にデータを読み出すことが可能な高速ストレージ、または大容量ディスクドライブを備える大容量ストレージに記憶されている。そして指定されたジョブの実行に必要なデータが大容量ストレージに記憶されている場合、データを大容量ストレージから高速ストレージに移動させて、高速ストレージからデータを読み出している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−２２２２２１号公報
【特許文献２】特開２００８−０１５８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の分散データ管理システムおよび特許文献２に記載の負荷分散システムでは、同じデータに対して複数のクライアントが同時にアクセスする場合、同じストレージに処理負荷が集中することを抑制することはできなかった。例えば、時系列データをリアルタイムで分析して複数の分析結果を取得する場合、同じデータに対して複数の分析処理が同時に行われるため、同じデータに対して複数のクライアントが同時にアクセスされる場合がある。このため、記憶されたデータを読み出す際に、スループットが低下してしまう場合があった。
【０００８】
本発明の目的は、同じデータに対して複数のクライアントが同時にアクセスする場合であっても、スループットの低下を抑制することが可能な記憶装置、データ読出方法、およびプログラムを提供することである。
【課題を解決するための手段】
【０００９】
本発明による記憶装置は、
それぞれが同一のデータを記憶する複数の記憶部と、
各記憶部の負荷状況を示す第１負荷情報に基づいて、前記複数の記憶部のいずれかを選択する管理部と、
選択された前記記憶部から前記データを読み出す読出部とを有する。
【００１０】
また、本発明によるデータ読出方法は、
それぞれが同一のデータを記憶する複数の記憶部のそれぞれの負荷状況を示す第１負荷情報に基づいて、前記複数の記憶部のいずれかを選択し、
選択された前記記憶部から前記データを読み出す。
【００１１】
また、本発明によるプログラムは、
コンピュータを、
それぞれが同一のデータを記憶する複数の記憶部と、
各記憶部の負荷状況を示す第１負荷情報に基づいて、前記複数の記憶部のいずれかを選択する管理部と、
選択された前記記憶部から前記データを読み出す読出部と、を備える記憶装置として機能させるためのプログラムである。
【発明の効果】
【００１２】
本発明によれば、同じデータに対して複数のクライアントが同時にアクセスする場合であっても、スループットの低下を抑制することが可能である。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施形態にかかるリアルタイムデータ記録装置１の構成を示すブロック図である。
【図２】各ストレージ２の第１負荷情報とストレージ２の選択方法について説明するための図である。
【図３】上限値の調整を行った場合の各ストレージ２の第１負荷情報とストレージ２の選択方法について説明するための図である。
【図４】リアルタイムデータ記録装置１のデータ記録処理について説明するためのフローチャートである。
【図５】リアルタイムデータ記録装置１の負荷状況確認処理について説明するためのフローチャートである。
【図６】図５のステップＳ２０１の詳細について説明するためのサブフローチャートである。
【図７】図５のステップＳ２０４の詳細について説明するためのサブフローチャートである。
【図８】リアルタイムデータ記録装置１の読出要求応答処理について説明するためのフローチャートである。
【図９】本発明の第２の実施形態に係る記憶装置１００の構成を示すブロック図である。
【図１０】記憶装置１００の動作例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態について添付の図面を参照して説明する。なお、本明細書および図面において、同一の機能を有する構成要素については同じ符号を付することにより重複説明を省略する場合がある。
【００１５】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るリアルタイムデータ記録装置１の構成を示すブロック図である。リアルタイムデータ記録装置１は、複数のストレージ２と、複数の読出サーバ３と、管理サーバ４と、内部ネットワーク５とを有する。なお、図１ではリアルタイムデータ記録装置１は、複数の読出サーバ３を有することとしたが、１つの読出サーバ３を有するものであってもよい。
【００１６】
ストレージ２は、データ格納用の装置であり、例えばフラッシュメモリなどの不揮発性メモリや、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの磁気記録媒体と、制御装置であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とを含む。ストレージ２は、内部ネットワーク５を介して読出サーバ３および管理サーバ４と接続されている。また、ストレージ２は、読出サーバ３からの指示に従って、記憶しているデータを読出サーバ３に出力する。
【００１７】
読出サーバ３は、ストレージ２からデータを読み出す装置である。読出サーバ３は、制御装置であるＣＰＵを含む。読出サーバ３は、内部ネットワーク５を介して管理サーバ４およびストレージ２と接続されており、ネットワーク６２を介してクライアント７２と接続されている。読出サーバ３は、管理サーバ４の指示に従ってデータを読み出すと、データの読み出しを要求したクライアント７２にデータを送信する。
【００１８】
なお、ストレージ２および読出サーバ３は、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）に従って監視および制御されており、ＣＰＵ使用率やアクセス数などをＭＩＢ（Ｍａｎａｇｅｍｅｎｔ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｂａｓｅ）に記録して保持している。
【００１９】
管理サーバ４は、リアルタイムデータ記録装置１の全体を管理する管理部である。管理サーバ４は、ネットワーク６１を介してリアルタイムデータ入力装置７１と接続され、内部ネットワーク５を介してストレージ２および読出サーバ３と接続され、ネットワーク６２を介してクライアント７２と接続される。
【００２０】
管理サーバ４は、図示しないマイクロプロセッサやメモリ等を備え、メモリ等に記憶されたプログラムを読み取って実行することによって、リアルタイムデータ記録装置１の動作を制御する。具体的には、管理サーバ４は、リアルタイムデータ入力装置７１がリアルタイムデータを取得して、管理サーバ４に入力すると、入力されたリアルタイムデータを受け付けて、当該リアルタイムデータを複数のストレージ２にマルチキャストすることにより、リアルタイムデータを複数のストレージ２に記録させる。これにより、複数のストレージ２は、それぞれが同一のデータを記憶することになる。
【００２１】
また、管理サーバ４は、クライアント７２から、ストレージ２に記憶されたデータの読み出しを要求する読出要求を受け付けると、リアルタイムデータ記録装置１の負荷状況に基づいて、読出要求に応じたデータ読出処理を行うか否かを判断する。また、管理サーバ４は、データ読出処理を行う場合、リアルタイムデータ記録装置１の負荷状況に基づいて、複数のストレージ２および複数の読出サーバ３の負荷を分散させる。リアルタイムデータ記録装置１の負荷状況を示す情報は、例えば、ストレージ２の負荷状況を示す第１負荷情報、および読出サーバ３の負荷状況を示す第２負荷情報である。また、第１負荷情報は、ストレージ２内の各リソースの負荷状況をそれぞれ示す複数の種類の情報を含んでいてもよい。第１負荷情報は、例えば、ストレージ２が備える制御装置であるＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の使用率と、各ストレージ２に対するアクセス数であるストレージアクセス数とを含む。また読出サーバ３についても同様に、第２負荷情報は、例えば、読出サーバ３が備える制御装置であるＣＰＵの使用率と、各読出サーバ３に対するアクセス数である読出サーバアクセス数とを含む。
【００２２】
管理サーバ４は、リアルタイムデータ記録装置１の負荷状況を示す情報として、第１負荷情報および第２負荷情報を用いて、データ読出処理を行うか否かを判断する。管理サーバ４は、例えば、各ストレージ２に対するストレージアクセス数の合計が上限値以下であり、且つ、各読出サーバ３に対する読出サーバアクセス数の合計が上限値以下である場合、データ読出処理を行う。このとき、管理サーバ４は、各ストレージ２に対するストレージアクセス数の上限値を取得して、その合計をストレージアクセス数の合計に対する上限値とする。また読出サーバ３に関しても同様であり、管理サーバ４は、各読出サーバ３に対する読出サーバアクセス数の上限値を取得して、その合計を読出サーバアクセス数の合計に対する上限値とする。
【００２３】
また管理サーバ４は、データ読出処理を行う場合、第１負荷情報に基づいて、データ読出処理に用いるストレージ２を選択することで、複数のストレージ２間で負荷を分散させる。また、管理サーバ４は、第２負荷情報に基づいて、データ読出処理に用いる読出サーバ３を選択することで、複数の読出サーバ３間で負荷を分散させる。管理サーバ４は、例えば、ストレージアクセス数に基づいて、ストレージ２を選択することができる。具体的には、管理サーバ４は、各ストレージ２のストレージアクセス数と、各ストレージ２に対して設定された上限値との差異を算出し、当該算出結果に基づいて、複数のストレージ２のいずれかを選択する。より具体的には、管理サーバ４は、算出結果が最も大きいストレージ２を選択する。
【００２４】
図２は、各ストレージ２の第１負荷情報とストレージ２の選択方法について説明するための図である。図２の例では、リアルタイムデータ記録装置１は、ストレージＡ〜Ｃの３つのストレージ２を有している。ストレージＡ〜Ｃのそれぞれに対して設けられた上限値は、全て５であるとする。ここで、ストレージアクセス数が、ストレージＡ〜Ｃのそれぞれに対して、順に２、３、４であるとする。この場合、各ストレージＡ〜Ｃについて、上限値とストレージアクセス数との差異は、順に３、２、１となる。したがって、この場合、管理サーバ４は、この差異が最も大きいストレージＡを選択する。
【００２５】
しかしながら、ストレージ２において、データの書き込みや、読み出しを行うデータアクセス処理以外の要因で、ストレージ２の処理負荷が増大することがある。例えば、図２のストレージＡに障害が発生した場合、バックグラウンドプロセスとして、リビルド処理が発生することがある。この場合、ストレージアクセス数と上限値との差異は必ずしもストレージＡの処理負荷を反映した値とならず、処理負荷が増大しているにも関わらず、この差異が大きい値となる。このため、管理サーバ４は、ストレージアクセス数の上限値を、各ストレージ２のＣＰＵ使用率に基づいて調整する。
【００２６】
管理サーバ４は、各ストレージ２のＣＰＵ使用率が所定の閾値以上である場合、ストレージアクセス数の上限値を制限することで、上限値とストレージアクセス数との差異に、当該ストレージ２のＣＰＵ使用率に基づいた負荷状況を反映させる。また、管理サーバ４は、各ストレージ２のＣＰＵ使用率が連続して所定の閾値以上となった回数をカウントし、この回数が規定回数以上となった場合に、ストレージ２のＣＰＵに定常的に高い負荷がかかっている状態であると判断し、ストレージアクセス数の上限値を制限してもよい。図２の「カウント」は、この連続してＣＰＵ使用率が閾値以上となった回数を示している。ＣＰＵ使用率が連続して所定の閾値以上となった回数を用いることで、瞬時的にＣＰＵ使用率が上昇してすぐにＣＰＵ使用率が下がった場合には上限値が制限されない。このため、実際にはストレージ２が高負荷な状態ではないにも関わらず、クライアント７２からの読出要求に対してアクセスエラーが発生してしまうことを抑制することができる。
【００２７】
図３は、上限値の調整を行った場合の各ストレージ２の第１負荷情報とストレージ２の選択方法について説明するための図である。上限値の調整において、この例では、ＣＰＵ使用率に対する閾値を７０％とし、ＣＰＵ使用率が連続して３回以上７０％以上となった場合に、上限値を制限することとする。図２には、ストレージＡのＣＰＵ使用率が「９０％」であり、カウントが「２」となっていることが示されている。この場合、管理サーバ４は、ストレージＡのＣＰＵ使用率が７０％以上であることから、カウントをインクリメントして「３」とする。そして、カウントが３以上となったため、管理サーバ４は、このストレージＡについて、ストレージアクセス数の上限値を制限する。ここでは、制限した上限値を「２」とした。また管理サーバ４は、ストレージＢおよびＣについても同様に、ＣＰＵ使用率が７０％以上であるか否かを判断する。ストレージＣのＣＰＵ使用率は７０％以上であるため、管理サーバ４は、カウントをインクリメントして「１」とする。そして、カウントはまだ３以上とはなっていないため、管理サーバ４は、ストレージＣについては上限値を制限しない。
【００２８】
上限値を制限すると、図３に示されるように、ストレージＡについて、上限値とストレージアクセス数との差異は「０」となる。これにより、ストレージＡ〜Ｃのうち、最も上限値とストレージアクセス数との差異が大きいストレージ２は、ストレージＢとなる。
【００２９】
また、管理サーバ４が第２負荷情報を用いて読出サーバ３を選択する場合も、ストレージ２を選択する場合と同様である。上記の説明中において、ストレージ２を読出サーバ、第１負荷情報を第２負荷情報、ストレージアクセス数を読出サーバアクセス数と置き換えることで、読出サーバ３の選択についての説明となる。管理サーバ４は、データ読出処理を行うストレージ２および読出サーバ３を選択すると、選択した読出サーバ３に、選択したストレージ２を通知して、選択したストレージ２からデータを読み出させる。これにより、複数の読出サーバ３のうち、選択された読出サーバ３だけがデータの読出しを実行することになる。
【００３０】
次に、図４〜図８を用いて、リアルタイムデータ記録装置１が各種の処理を行う際の動作例について説明する。リアルタイムデータ記録装置１の行う処理は、主に、リアルタイムデータを記録するデータ記録処理と、リアルタイムデータ記録装置１の負荷状況を確認する負荷状況確認処理と、クライアント７２からの読出要求に応答する読出要求応答処理とを含む。読出要求応答処理には、データ読出処理が含まれる。
【００３１】
図４は、リアルタイムデータ記録装置１がデータ記録処理を行う際の動作例を説明するためのフローチャートである。データ記録処理は、リアルタイムデータ入力装置７１がリアルタイムデータ記録装置１にリアルタイムデータを入力することで開始される。
【００３２】
リアルタイムデータ入力装置７１がリアルタイムデータ記録装置１にリアルタイムデータを入力すると、リアルタイムデータ記録装置１の管理サーバ４は、入力されたリアルタイムデータを受け付ける（ステップＳ１００）。
【００３３】
管理サーバ４は、受け付けたリアルタイムデータのデータ形式を変換してファイル化する（ステップＳ１０１）。
【００３４】
続いて管理サーバ４は、ファイル化されたリアルタイムデータを、全ストレージ２にマルチキャストして記録させる（ステップＳ１０２）。これにより、全てのストレージ２に同一のデータが記憶されることになる。
【００３５】
図５は、リアルタイムデータ記録装置１が負荷状況確認処理を行う際の動作例を説明するためのフローチャートである。負荷状況確認処理は、リアルタイムデータ記録装置１の管理サーバ４によって、定期的に実行される。
【００３６】
管理サーバ４は、ストレージ負荷確認処理が終わっていないストレージ２から１つのストレージ２を選択する（ステップＳ２００）。そして、管理サーバ４は、選択されたストレージ２について、負荷状況を確認するストレージ負荷確認処理を行う（ステップＳ２０１）。なお、ストレージ負荷確認処理の詳細な内容については、図８を用いて後述する。管理サーバ４は、ストレージ負荷確認処理が終わっていないストレージ２が有るか否かを判断する（ステップＳ２０２）。
【００３７】
ストレージ負荷確認処理が終わっていないストレージ２が有る場合、管理サーバ４は、ステップＳ２００〜ステップＳ２０２の処理を再び行う。これにより、全てのストレージ２についてストレージ負荷確認処理が行われるまで、ステップＳ２００〜ステップＳ２０２の処理が繰り返される。
【００３８】
ストレージ負荷確認処理が終わっていないストレージ２がなくなると、管理サーバ４は、続いて、サーバ負荷確認処理が終わっていない読出サーバ３を選択する（ステップＳ２０３）。そして、管理サーバ４は、選択された読出サーバ３について、サーバ負荷確認処理を行う（ステップＳ２０４）。なお、サーバ負荷確認処理の詳細な内容については、図７を用いて後述する。管理サーバ４は、サーバ負荷確認処理が終わっていない読出サーバ３があるか否かを判断する（ステップＳ２０５）。
【００３９】
サーバ負荷確認処理が終わっていない読出サーバ３がある場合、管理サーバ４は、ステップＳ２０３〜ステップＳ２０５の処理を再び行う。これにより、全ての読出サーバ３についてサーバ負荷確認処理が行われるまで、ステップＳ２０３〜ステップＳ２０５の処理が繰り返される。これにより、全てのストレージ２と全ての読出サーバ３について、定期的に負荷状況が確認されることになる。
【００４０】
図６は、図５のステップＳ２０１のサブフローチャートであり、管理サーバ４がストレージ負荷確認処理を行う際の動作例を説明するための図である。ストレージ負荷確認処理は、各ストレージ２について、負荷状況を確認して第１負荷情報を生成し、管理テーブルに記録する処理と、第１負荷情報に含まれるストレージアクセス数の上限値を制限するか否かを決定し、現在の上限値を管理テーブルに記録する処理とを主に含む。
【００４１】
管理サーバ４は、選択されたストレージ２に関して、現在のＣＰＵ使用率、現在のストレージアクセス数、およびストレージアクセス数の上限値を取得する（ステップＳ３００）。管理サーバ４は、例えば現在のＣＰＵ使用率および現在のストレージアクセス数を、ストレージ２のＭＩＢから取得することができる。また、管理サーバ４は、選択されたストレージ２のアクセス数の上限値を管理テーブルから取得することができる。
【００４２】
管理サーバ４は、取得したＣＰＵ使用率が所定の閾値以上であるか否かを判断する（ステップＳ３０１）。ＣＰＵ使用率が閾値以上である場合、管理サーバ４は、ＣＰＵ使用率が連続して閾値以上となった回数が規定回数以上であるか否かを判断する（ステップＳ３０２）。連続して閾値以上となった回数が規定回数以上である場合、管理サーバ４は、ストレージアクセス数の上限値を制限する（ステップＳ３０３）。
【００４３】
ＣＰＵ使用率が連続して閾値以上となった回数が規定回数未満である場合、管理サーバ４は、連続して閾値以上となった回数をカウントアップする（ステップＳ３０４）。また、ＣＰＵ使用率が閾値未満である場合、管理サーバ４は、ストレージアクセス数の上限値に対する制限を解除する（ステップＳ３０５）。ストレージアクセス数の上限値に対する制限を解除すると、管理サーバ４は、連続して閾値以上となった回数を初期化して「０」とする（ステップＳ３０６）。
【００４４】
ステップＳ３０３の処理、ステップＳ３０４の処理、またはステップＳ３０６の処理が終わると、管理サーバ４は、管理テーブルを書き換えて、現在のＣＰＵ使用率、およびストレージアクセス数を更新する。また、管理サーバ４は、ストレージアクセス数の上限値が変化している場合、ストレージアクセス数の上限値についても、管理テーブルを書き換えて更新する（ステップＳ３０７）。
【００４５】
図７は、図５のステップＳ２０４のサブフローチャートであり、管理サーバ４がサーバ負荷確認処理を行う際の動作例を説明するための図である。サーバ負荷確認処理は、各読出サーバ３について、負荷状況を確認して第２負荷情報を生成し、管理テーブルに記録する処理と、第２負荷情報に含まれる読出サーバアクセス数の上限値を制限するか否かを決定し、現在の上限値を管理テーブルに記録する処理とを主に含む。
【００４６】
管理サーバ４は、選択された読出サーバ３に関して、現在のＣＰＵ使用率、現在の読出サーバアクセス数、および読出サーバアクセス数の上限値を取得する（ステップＳ４００）。管理サーバ４は、例えば現在のＣＰＵ使用率および現在の読出サーバアクセス数を、読出サーバ３のＭＩＢから取得することができる。また、管理サーバ４は、選択された読出サーバ３のアクセス数の上限値を管理テーブルから取得することができる。
【００４７】
管理サーバ４は、取得したＣＰＵ使用率が所定の閾値以上であるか否かを判断する（ステップＳ４０１）。ＣＰＵ使用率が閾値以上である場合、管理サーバ４は、ＣＰＵ使用率が連続して閾値以上となった回数が規定回数以上であるか否かを判断する（ステップＳ４０２）。連続して閾値以上となった回数が規定回数以上である場合、管理サーバ４は、読出サーバアクセス数の上限値を制限する（ステップＳ４０３）。
【００４８】
ＣＰＵ使用率が連続して閾値以上となった回数が規定回数未満である場合、管理サーバ４は、連続して閾値以上となった回数をカウントアップする（ステップＳ４０４）。また、ＣＰＵ使用率が閾値未満である場合、管理サーバ４は、読出サーバアクセス数の上限値に対する制限を解除する（ステップＳ４０５）。読出サーバアクセス数の上限値に対する制限を解除すると、管理サーバ４は、連続して閾値以上となった回数を初期化して「０」とする（ステップＳ４０６）。
【００４９】
ステップＳ４０３の処理、ステップＳ４０４の処理、またはステップＳ４０６の処理が終わると、管理サーバ４は、管理テーブルを書き換えて、現在のＣＰＵ使用率、および読出サーバアクセス数を更新する。また、管理サーバ４は、読出サーバアクセス数の上限値が変化している場合、読出サーバアクセス数の上限値についても、管理テーブルを書き換えて更新する（ステップＳ４０７）。
【００５０】
図８は、クライアント７２がリアルタイムデータ記録装置１に記憶されたデータの読み出しを要求する読出要求を管理サーバ４に入力したときに、管理サーバ４が読出要求応答処理を行う際の動作例を説明するためのフローチャートである。
【００５１】
管理サーバ４は、クライアント７２が入力した読出要求を受け付ける（ステップＳ５００）。管理サーバ４は、ストレージアクセス数の合計は、上限以下であるか否かを判断する。例えば、管理サーバ４は、管理テーブルから各ストレージ２のストレージアクセス数と上限値とをそれぞれ取得して、ストレージアクセス数の合計が上限値の合計以下であるか否かを判断する（ステップＳ５０１）。
【００５２】
ストレージアクセス数の合計が上限以下である場合、管理サーバ４は、第１負荷情報に基づいて、複数のストレージ２のいずれかを、データ読出処理に用いるストレージ２として選択する。管理サーバ４は、例えば、図２を用いて説明したように、各ストレージ２の上限値とストレージアクセス数との差異が最も大きいストレージ２を選択する（ステップＳ５０２）。
【００５３】
管理サーバ４は、読出サーバアクセス数の合計が上限以下であるか否かを判断する。例えば、管理サーバ４は、管理テーブルから各読出サーバ３の読出サーバアクセス数と上限値とをそれぞれ取得して、読出サーバアクセス数の合計が上限値の合計以下であるか否かを判断する（ステップＳ５０３）。
【００５４】
読出サーバアクセス数の合計が上限以下である場合、管理サーバ４は、第２負荷情報に基づいて、複数の読出サーバ３のいずれかを、データ読出処理に用いる読出サーバ３として選択する。管理サーバ４は、例えば読出サーバ３についても、各読出サーバ３の上限値と読出サーバアクセス数との差異が最も大きい読出サーバ３を選択する（ステップＳ５０４）。
【００５５】
そして管理サーバ４は、選択した読出サーバ３に、選択したストレージ２を通知することで、データを選択されたストレージ２から読み出させる（ステップＳ５０５）。
【００５６】
また、読出サーバアクセス数の合計が上限未満である場合、管理サーバ４は、ステップＳ５０２で選択したストレージ２の選択を解除する（ステップＳ５０６）。そして管理サーバ４は、エラー応答をクライアント７２に返す。またステップＳ５０１でストレージアクセス数の合計が上限未満である場合にも、管理サーバ４は、エラー応答をクライアント７２に返す（ステップＳ５０７）。
【００５７】
（変形例）
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００５８】
例えば、上記実施形態では、リアルタイムデータ記録装置１は、複数の読出サーバ３を備えることとしたが、本発明はかかる例に限定されない。例えば、リアルタイムデータ記録装置１は、１つの読出サーバ３を有してもよい。ストレージ２や読出サーバ３は、各リソースの処理能力に応じて、様々な構成をとることができる。
【００５９】
また、上記実施形態では、図８の読出要求応答処理は、クライアント７２からの読出要求に応じて実行されることとしたが、本発明はかかる例に限定されない。例えば管理サーバ４は、既に読出処理が開始された状態であっても定期的に第１負荷情報に基づいたストレージ２の選択を行うことができる。例えば、管理サーバ４は、複数のストレージ２のいずれかを選択した後、選択されたストレージ２の第１負荷情報が所定の条件を満たした場合、他のストレージ２を選択することで、データを読み出すために用いられるストレージ２を切り替える。これにより、既に読出処理が開始された後であっても、読出処理に用いられているストレージ２の負荷が高まった場合、読出処理に用いるストレージ２を切り替えることができる。この場合、読出要求を受け付けた際には、所定の順番で複数のストレージ２のいずれかを選択してもよいし、第１負荷情報に基づいて複数のストレージ２のいずれかを選択してもよい。また、管理サーバ４は、第１負荷情報を繰り返し取得し、第１負荷情報が所定の条件を連続して満たした回数をカウントし、当該回数が規定数を超えた場合、他のストレージ２を選択してもよい。これにより、データを読み出すために用いれらるストレージ２が頻繁に切り替わることを抑制することが可能になる。
【００６０】
また、上記実施形態では、リアルタイムデータ記録装置１の構成と、動作例について主に説明したが、リアルタイムデータ記録装置１の各機能を実現するためのコンピュータプログラムを作成することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。また、コンピュータプログラムは、記録媒体を用いずに、例えば有線または無線の通信によりネットワークを介して配信されてよい。
【００６１】
以上説明したように、本発明の第１の実施形態によれば、記憶装置の一例であるリアルタイムデータ記録装置１は、記憶部であるストレージ２と、管理部である管理サーバ４と、読出部である読出サーバ３とを有する。ストレージ２は、それぞれが同一のデータを記憶し、管理サーバ４は、各ストレージ２の負荷状況を示す第１負荷情報に基づいて、複数のストレージ２のいずれかを選択する。読出サーバ３は、選択されたストレージ２からデータを読み出す。これにより、複数のストレージ２には、同一のデータが記憶されているため、リアルタイムデータ記録装置１に記憶されているデータを、データを移動させることなく、どのストレージ２からでも取り出すことができる。そして、各ストレージ２の負荷状況に基づいて選択されたストレージ２からデータを取り出すことができるため、同じストレージ２にアクセスが集中することを抑制して、負荷の低いストレージ２からデータを取り出すことができる。したがって、同じデータに対して複数のクライアントが同時にアクセスする場合であっても、スループットの低下を抑制することが可能になる。
【００６２】
また、上記実施形態の変形例によれば、管理サーバ４は、複数のストレージ２のいずれかを選択した後、選択されたストレージ２の第１負荷情報が所定の条件を満たした場合、他のストレージ２を選択することで、データを読み出すために用いられるストレージ２を切り替える。これにより、読出処理が開始された後であっても、ストレージ２の負荷状況に応じて、読出処理に用いられるストレージ２を切り替えることができる。したがって、より確実に、スループットの低下を抑制することが可能になる。
【００６３】
また、上記実施形態によれば、管理サーバ４は、第１負荷情報を繰り返し取得し、第１負荷情報が所定の条件を連続して満たした回数をカウントし、当該回数が規定数を超えた場合、他のストレージ２を選択する。これにより、第１負荷情報が所定の条件を満たしている期間が短い場合には、ストレージ２が切り替えられないため、頻繁にストレージ２が切り替わって信頼性が低下することを抑制することが可能になる。
【００６４】
また、上記実施形態によれば、管理サーバ４は、データの読み出しを要求する読出要求を受け付けると、第１負荷情報に基づいて複数のストレージ２のいずれかを選択する。これにより、読み出し開始時に各ストレージ２の負荷状況に応じて読出処理に用いるストレージ２が選択されるため、より確実に、スループットの低下を抑制することが可能になる。
【００６５】
また、上記実施形態によれば、複数のストレージ２のそれぞれは制御装置であるＣＰＵを有し、管理サーバ４は、第１負荷情報として、各ＣＰＵの使用率および各ストレージ２に対するアクセス数の少なくともいずれかを用いる。これにより、ＣＰＵ使用率またはアクセス数に基づいて、負荷が低いストレージ２を選択することが可能になる。したがって、より確実に、スループットの低下を抑制することが可能になる。
【００６６】
また、上記実施形態によれば、管理サーバ４は、使用率およびアクセス数を第１負荷情報として用いるものであって、各ストレージ２について、当該ストレージ２のアクセス数と当該ストレージ２に対して設定された上限値との差異を算出し、当該算出結果に基づいて、複数のストレージ２のいずれかを選択し、ＣＰＵ使用率に基づいて、上限値をストレージ２ごとに調整する。これにより、使用率およびアクセス数に基づいてより正確にストレージ２の負荷状況を把握することができる。また、外部からのアクセスを伴わない内部処理によって処理負荷が増大しており、アクセス数は増大しないがＣＰＵ使用率が増大している場合であっても、処理負荷の増大に応じた値となる差異に基づいてストレージ２を選択することができる。したがって、より確実に、スループットの低下を抑制することが可能になる。
【００６７】
また、上記実施形態によれば、管理サーバ４は、ＣＰＵ使用率を繰り返し取得し、ＣＰＵ使用率が連続して所定の閾値を超えた回数をカウントし、当該回数が規定値を超えた場合、上限値を下げる。これにより、ＣＰＵ使用率に基づいて処理負荷が高いと判断される状態が所定時間以上続いた場合、アクセス数が制限され、瞬時的に処理負荷が上昇した場合、アクセス数は制限されない。したがって、不要にアクセス数が制限されることを抑制することが可能であり、より確実に、スループットの低下を抑制することが可能になる。
【００６８】
また、上記実施形態によれば、リアルタイムデータ記録装置１は、複数の読出サーバ３を備え、管理サーバ４は、各読出サーバ３の負荷状況を示す第２負荷情報に基づいて、複数の読出サーバ３のいずれかを選択する。そして選択された読出サーバ３は、選択されたストレージ２からデータを読み出す。これにより、読出サーバ３についても処理負荷が分散され、より確実に、スループットの低下を抑制することが可能になる。
【００６９】
（第２の実施形態）
図９は、本発明の第２の実施形態にかかる記憶装置１００の構成を示すブロック図である。
【００７０】
記憶装置１００は、複数の記憶部１２０と、管理部１３０と、読出部１４０とを有する。記憶部１２０は、それぞれが同一のデータを記憶する。管理部１３０は、各記憶部１２０の負荷状況を示す第１負荷情報に基づいて、複数の記憶部１２０のいずれかを選択する。読出部１４０は、選択された記憶部１２０からデータを読み出す。
【００７１】
図１０は、記憶装置１００の動作を説明するためのフローチャートである。記憶装置１００の管理部１３０は、第１負荷情報に基づいて、複数の記憶部１２０のいずれかを選択する（ステップＳ６００）。読出部１４０は、選択された記憶部１２０からデータを読み出す（ステップＳ６０１）。
【００７２】
以上説明したように、本発明の第２の実施形態によれば、複数の記憶部１２０には、同一のデータが記憶されているため、どのデータを取り出す場合であっても、記憶部１２０間でデータを移動させることなくどの記憶部１２０からでもデータを取り出すことができる。また、各記憶部１２０の負荷状況に基づいて選択された記憶部１２０からデータを取り出すことができるため、同じ記憶部１２０にアクセスが集中することを抑制して、負荷の低い記憶部１２０からデータを取り出すことができる。したがって、同じデータに対して複数のクライアントが同時にアクセスする場合であっても、スループットの低下を抑制することが可能になる。
【符号の説明】
【００７３】
１      リアルタイムデータ記録装置
２      ストレージ
３      読出サーバ
４      管理サーバ
７１    リアルタイムデータ入力装置
７２    クライアント
【図１】
2015200930.tif 000003
【図２】
2015200930.tif 000004
【図３】
2015200930.tif 000005
【図４】
2015200930.tif 000006
【図５】
2015200930.tif 000007
【図６】
2015200930.tif 000008
【図７】
2015200930.tif 000009
【図８】
2015200930.tif 000010
【図９】
2015200930.tif 000011
【図１０】
2015200930.tif 000012