(57)【要約】【課題】物理サーバが複数の仮想ＰＣの一斉リブートを行ったときに、重複排除された情報を記録する共有記憶部への負荷を分散させるストレージ装置を提供する。【解決手段】第１のコントローラが、仮想ＰＣが個別に利用する情報を記憶する個別記憶部と、共有記憶部の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段とを備え、個別記憶部と、主キャッシュ手段と、共有記憶部と、第２コントローラの副キャッシュ手段と、対応する仮想ＰＣとの間で情報の入出力処理を行う。第２のコントローラは、第１のコントローラに対応する複数の仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、共有記憶部の記憶する情報を所定のタイミングで読み出して記録する副キャッシュ手段とを備え、個別記憶部と、副キャッシュ手段と、主キャッシュ手段と、対応する複数の仮想ＰＣとの間で情報の入出力処理を行う。【選択図】図２
2020166776.tif 000002
【特許請求の範囲】
【請求項１】
通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記憶する共有記憶部と、
前記仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段と、を備え、前記個別記憶部と、前記主キャッシュ手段と、前記共有記憶部と、第２のコントローラの副キャッシュ手段と、対応する前記仮想ＰＣとの間で情報の入出力処理を行う第１のコントローラと、
前記第１のコントローラに対応する前記仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録することを特徴とする副キャッシュ手段と、を備え、対応する前記個別記憶部と、前記副キャッシュ手段と、前記主キャッシュ手段と、対応する複数の前記仮想ＰＣとの間で情報の入出力処理を行う第２のコントローラと、
を備えるストレージ装置。
【請求項２】
前記第１のコントローラは、
前記第２のコントローラに対応する複数の前記仮想ＰＣから前記共有記憶部の記憶する情報に対するリード要求があった場合、前記情報を前記第２のコントローラに対して返信し、
前記第２のコントローラは、
前記情報を前記副キャッシュ手段に記録し、前記記録した情報を前記第２のコントローラに対応する複数の前記仮想ＰＣに返信することを特徴とする、
請求項１に記載のストレージ装置。
【請求項３】
前記第２のコントローラは、
対応する前記仮想ＰＣから前記共有記憶部の記憶する情報の新たなリード要求を取得した場合には、前記副キャッシュ手段に記憶する前記共有記憶部の記憶する情報を、前記リード要求に対して返信することを特徴とする
請求項１または請求項２に記載のストレージ装置。
【請求項４】
前記第２のコントローラは、
対応する前記仮想ＰＣから前記共有記憶部の記憶する情報の新たなリード要求であって予め規定された連続する前記リード要求を取得した場合には、当該連続するリード要求のうち未だ取得していないリード要求に対応する情報を前記共有記憶部から先読みして前記副キャッシュ手段に記録することを特徴とする
請求項１から請求項３の何れか一項に記載のストレージ装置。
【請求項５】
前記第１のコントローラは、
対応する前記仮想ＰＣから前記共有記憶部の記憶する情報の新たなリード要求を取得し、当該第２のコントローラに先読みを含む当該リード要求に対応する情報を送信することを特徴とする
請求項１から請求項４の何れか一項に記載のストレージ装置。
【請求項６】
前記各コントローラは、
対応する前記仮想ＰＣから前記共有記憶部の記憶する情報の新たなリード要求を取得した場合に、前記主キャッシュ手段もしくは前記副キャッシュ手段に記憶する前記共有記憶部の情報を、前記主キャッシュ手段もしくは副キャッシュ手段から個別キャッシュ手段にコピーし、その情報を前記リード要求に対応して返信し、当該返信後に、当該情報を個別キャッシュ手段から削除することを特徴とする
請求項１から請求項５の何れか一項に記載のストレージ装置。
【請求項７】
ストレージ装置の共有記憶部が、通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記憶し、
前記ストレージ装置の第１のコントローラが、前記仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段と、を備え、前記個別記憶部と、前記主キャッシュ手段と、前記共有記憶部と、第２のコントローラの副キャッシュ手段と、対応する前記仮想ＰＣとの間で情報の入出力処理を行い、
前記ストレージ装置の第２のコントローラが、前記第１のコントローラに対応する前記仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する前記副キャッシュ手段と、を備え、対応する前記個別記憶部と、前記副キャッシュ手段と、前記主キャッシュ手段と、対応する複数の前記仮想ＰＣとの間で情報の入出力処理を行う
ストレージ管理方法。
【請求項８】
ストレージ装置に、
共有記憶部に通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記録する共有情報記録手段と、
個別記憶部に前記仮想ＰＣそれぞれが個別に利用する情報を記録し、主キャッシュ手段に前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録し、前記個別記憶部と、前記主キャッシュ手段と、前記共有記憶部と、第２のコントロール手段の副キャッシュ手段と、対応する前記仮想ＰＣとの間で情報の入出力処理を行う第１のコントロール手段と、
個別記憶部に前記第１のコントロール手段に対応する前記仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記録し、前記副キャッシュ手段に前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録し、対応する前記個別記憶部と、前記副キャッシュ手段と、前記主キャッシュ手段と、対応する複数の前記仮想ＰＣとの間で情報の入出力処理を行う第２のコントロール手段と、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ストレージ装置、ストレージ管理方法、及びプログラムに関する。
【背景技術】
【０００２】
特許文献１には、２つのコントローラで処理機能を分散させて負荷の低減を図る技術がある。特許文献２には、ハッシュ技術を用いた重複排除技術がある。特許文献３には、重複排除された重複排除ボリュームからデータを読み出す技術がある。特許文献４には、同一データが一次記憶装置上の複数位置に重複してキャッシュされることを防ぐ技術がある。特許文献５には、ハッシュ関数を用いてデータを検索する技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０７−１１０７８８号公報
【特許文献２】特許第５６９１２３４号公報
【特許文献３】国際公開第２０１４／１３６１８３号
【特許文献４】特許第６０１０７０６号公報
【特許文献５】特許第５０２６２１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
複数の仮想ＰＣのＯＳデータ等の重複するデータを記録するための共有記憶部及び各仮想ＰＣのための個別記憶部を有するストレージ装置と、当該複数の仮想ＰＣと、当該複数の仮想ＰＣに対応する端末とを備えるシンクライアントシステムがある。このシステムでは、緊急セキュリティパッチ適用後や、メモリリークのリスク排除等を目的として、仮想ＰＣの一斉リブートが行われることがある。このとき、複数の仮想ＰＣが同一データを一斉に読み出すため、共有記憶部を有するコントローラに負荷が集中し、一斉リブートの時間が長くなり、ストレージ装置の性能が低下するという問題があった。
【０００５】
そこで、この発明は、上述の課題を解決するストレージ装置、ストレージ管理方法、及びプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００６】
本発明の第１の態様によれば、ストレージ装置は、通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記憶する共有記憶部と、前記仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段と、を備え、前記個別記憶部と、前記主キャッシュ手段と、前記共有記憶部と、第２のコントローラの副キャッシュ手段と、対応する前記仮想ＰＣとの間で情報の入出力処理を行う第１のコントローラと、前記第１のコントローラに対応する複数の前記仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する前記副キャッシュ手段と、を備え、対応する前記個別記憶部と、前記副キャッシュ手段と、前記主キャッシュ手段と、対応する複数の前記仮想ＰＣとの間で情報の入出力処理を行う第２のコントローラと、を備える。
【０００７】
本発明の第２の態様によれば、ストレージ管理方法は、ストレージ装置の共有記憶部が、通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記憶し、前記ストレージ装置の第１のコントローラが、前記仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段と、を備え、前記個別記憶部と、前記主キャッシュ手段と、前記共有記憶部と、第２のコントローラの副キャッシュ手段と、対応する前記仮想ＰＣとの間で情報の入出力処理を行い、前記ストレージ装置の第２のコントローラが、前記第１のコントローラに対応する複数の前記仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記憶する個別記憶部と、前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録する前記副キャッシュ手段と、を備え、対応する前記個別記憶部と、前記副キャッシュ手段と、前記主キャッシュ手段と、対応する複数の前記仮想ＰＣとの間で情報の入出力処理を行う。
【０００８】
本発明の第３の態様によれば、プログラムは、ストレージ装置に、共有記憶部に通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記録する共有情報記録手段と、個別記憶部に前記仮想ＰＣそれぞれが個別に利用する情報を記録し、主キャッシュ手段に前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録し、前記個別記憶部と、前記主キャッシュ手段と、前記共有記憶部と、第２のコントロール手段の副キャッシュ手段と、対応する前記仮想ＰＣとの間で情報の入出力処理を行う第１のコントロール手段と、個別記憶部に前記第１のコントロール手段に対応する前記仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記録し、前記副キャッシュ手段に前記共有記憶部の記憶する情報を所定のタイミングで読み出して記録し、対応する前記個別記憶部と、前記副キャッシュ手段と、前記主キャッシュ手段と、対応する複数の前記仮想ＰＣとの間で情報の入出力処理を行う第２のコントロール手段と、を実行させる。
【発明の効果】
【０００９】
上記態様のうち少なくともいずれかの態様によれば、複数の仮想ＰＣが同一情報を一斉に読み出す場合に、ストレージ装置の処理能力を向上させることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係るシンクライアントシステムの全体構成を示す図である。
【図２】第１の実施形態に係るストレージ装置の機能構成を示す図である。
【図３】第１の実施形態に係る個別キャッシュ手段の構成を示す図である。
【図４】第１の実施形態に係る主及び副キャッシュ手段の構成を示す図である。
【図５】第１の実施形態に係るストレージ装置のリード要求に対する動作を示すフロー図である。
【図６】第２の実施形態に係るストレージ装置のリード要求に対する動作を示すフロー図である。
【図７】第３の実施形態に係るストレージ装置のリード要求に対する動作を示すフロー図である。
【図８】第４の実施形態に係るストレージ装置のライト要求に対する動作を示すフロー図である。
【図９】少なくとも１つの実施形態に係るストレージ装置の最小構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１２】
＜第１の実施形態＞
以下、第１の実施形態に係るシンクライアントシステムについて、図１から図５を参照しながら説明する。
（全体構成）
図１は、第１の実施形態に係るシンクライアントシステムの全体構成を示す図である。
シンクライアントシステムは、ストレージ装置１と、物理サーバ２Ａから２Ｎと、ネットワークと、端末５ａから５ｋとを含む。
【００１３】
（ストレージ装置１の機能構成）
図２は、第１の実施形態に係るストレージ装置１の機能構成を示す図である。
ストレージ装置１は、第１のコントローラ３と、第２のコントローラ４とを備える。
第１のコントローラ３は、個別キャッシュ手段３１と、個別記憶部３２と、個別キャッシュ手段３３と、個別記憶部３４と、主キャッシュ手段３５と、共有記憶部３６とを備える。
第２のコントローラ４は、個別キャッシュ手段４１と、個別記憶部４２と、個別キャッシュ手段４３と、個別記憶部４４と、副キャッシュ手段４５とを備える。図２と図３に示す個別キャッシュ手段３１は、個別処理手段３１１と、個別キャッシュ３１２とを備える。同様に、個別キャッシュ手段３３は、個別処理手段３３１と、個別キャッシュ３３２とを備える。個別キャッシュ手段４１は、個別処理手段４１１と、個別キャッシュ４１２とを備える。個別キャッシュ手段４３は、個別処理手段４３１と、個別キャッシュ４３２とを備える。図２と図４に示す主キャッシュ手段３５は、主処理手段３５１と、主キャッシュ３５２とを備える。副キャッシュ手段４５は、副処理手段４５１と、副キャッシュ４５２とを備える。
【００１４】
第１の物理サーバ２Ａは、仮想ＰＣ２Ａ１及び仮想ＰＣ２Ａ２を備える。第２の物理サーバ２Ｂは、仮想ＰＣ２Ｂ１及び仮想ＰＣ２Ｂ２を備える。第１の物理サーバ２Ａ及び第２の物理サーバ２Ｂは、ストレージ装置１に接続されている。第１の物理サーバ２Ａは、第１のコントローラ３に対応する。第２の物理サーバ２Ｂは、第２のコントローラ４に対応する。
端末５ａから５ｄは、ネットワークを介して、仮想ＰＣ２Ａ１、仮想ＰＣ２Ａ２及び仮想ＰＣ２Ｂ１、仮想ＰＣ２Ｂ２にそれぞれ接続されている。端末５ａから５ｄは、仮想ＰＣ２Ａ１、仮想ＰＣ２Ａ２及び仮想ＰＣ２Ｂ１、仮想ＰＣ２Ｂ２にそれぞれ一対一で対応する。端末５ａから５ｄは、仮想ＰＣ２Ａ１、仮想ＰＣ２Ａ２及び仮想ＰＣ２Ｂ１、仮想ＰＣ２Ｂ２のうち対向して接続される仮想ＰＣに対してライト情報を含むライト要求を送信する。
【００１５】
仮想ＰＣ２Ａ１は、対応する端末５ａとの間で情報を送受信する。同様に、仮想ＰＣ２Ａ２は、対応する端末５ｂとの間で情報を送受信する。同様に、仮想ＰＣ２Ｂ１は、対応する端末５ｃとの間で情報を送受信する。同様に、仮想ＰＣ２Ｂ２は、対応する端末５ｄとの間で情報を送受信する。仮想ＰＣ２Ａ１、２及び２Ｂ１、２は、個別キャッシュ手段３１と、個別キャッシュ手段３３と、個別キャッシュ手段４１と、個別キャッシュ手段４３とに一対一でそれぞれ対応する。仮想ＰＣ２Ａ１は、個別キャッシュ手段３１との間で情報を送受信する。仮想ＰＣ２Ａ２は、個別キャッシュ手段３３との間で情報を送受信する。仮想ＰＣ２Ｂ１は、個別キャッシュ手段４１との間で情報を送受信する。仮想ＰＣ２Ｂ２は、個別キャッシュ手段４３との間で情報を送受信する。
仮想ＰＣ２Ａ１、２及び２Ｂ１、２は、仮想サーバ型シンクライアント（ＶＤＩ：Ｖｉｒｔｕａｌ Ｄｅｓｋｔｏｐ Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）システムにおいて設定されている仮想ＰＣであってもよい。仮想ＰＣ２Ａ１、２及び２Ｂ１、２を備える第１の物理サーバ２Ａ及び第２の物理サーバ２Ｂは、公知技術を使用して、ストレージ装置１上に設定されていてもよい。端末５ａから５ｄは、画面転送プロトコル等を使用して、仮想ＰＣ２Ａ１、２及び２Ｂ１、２に接続してもよい。
図２の第１の物理サーバ２Ａは、２つの仮想ＰＣ２Ａ１、２を備えているが、１つ以上の任意の数の仮想ＰＣを備えてもよい。第２の物理サーバ２Ｂも、同様に１つ以上の任意の数の仮想ＰＣを備えてもよい。また、個別キャッシュ手段と個別記憶部の組み合わせも仮想ＰＣの数に応じて２つ以上が各コントローラに配置されてもよく、また一つのコントローラのみに個別キャッシュ手段と個別記憶部の組み合わせが配置されてもよい。更に、主キャッシュ手段、副キャッシュ手段、共有記憶部の３つをセットとして、複数のセットがストレージ装置１内に存在しても良い。
仮想ＰＣと端末は、接続時は、論理的に一対一に対応するように接続する。
【００１６】
個別処理手段３１１は、個別記憶部３２及び主キャッシュ手段３５との間で情報を送受信する。個別処理手段３１１は、個別キャッシュ３１２に対して情報の書き込み又は読み取りをする。個別キャッシュ３１２は、個別記憶部３２のデータの一部をキャッシュしている。個別記憶部３２は、仮想ＰＣ２Ａ１によってのみ使用される情報を記録している。
【００１７】
個別処理手段３３１は、個別記憶部３４及び主キャッシュ手段３５との間で情報を送受信する。個別処理手段３３１は、個別キャッシュ３３２に対して情報の書き込み又は読み取りをする。個別キャッシュ３３２は、個別記憶部３４のデータの一部をキャッシュしている。個別記憶部３４は、仮想ＰＣ２Ａ２によってのみ使用される情報を記録している。
【００１８】
個別処理手段４１１は、個別記憶部４２及び副キャッシュ手段４５との間で情報を送受信する。個別処理手段４１１は、個別キャッシュ４１２に対して情報の書き込み又は読み取りをする。個別キャッシュ４１２は、個別記憶部４２のデータの一部をキャッシュしている。個別記憶部４２は、仮想ＰＣ２Ｂ１によってのみ使用される情報を記録している。
【００１９】
個別処理手段４３１は、個別記憶部４４及び副キャッシュ手段４５との間で情報を送受信する。個別処理手段４３１は、個別キャッシュ４３２に対して情報の書き込み又は読み取りをする。個別キャッシュ４３２は、個別記憶部４４のデータの一部をキャッシュしている。個別記憶部４４は、仮想ＰＣ２Ｂ２によってのみ使用される情報を記録している。
【００２０】
主キャッシュ手段３５の主処理手段３５１は、主キャッシュ３５２に対して情報の書き込み又は読み取りをする。主処理手段３５１は、共有記憶部３６との間で情報を送受信する。主キャッシュ３５２は、共有記憶部３６のデータの一部をキャッシュしている。
副キャッシュ手段４５の副処理手段４５１は、副キャッシュ４５２に対して情報の書き込み又は読み取りをする。副処理手段４５１は、主キャッシュ手段３５との間で情報を送受信する。副キャッシュ４５２、共有記憶部３６のデータの一部をキャッシュしている。
共有記憶部３６は、仮想ＰＣ２Ａ１、２及び２Ｂ１、２の中で少なくとも２つの仮想ＰＣによって使用される情報を記録している。共有記憶部３６は、ストレージ装置１内部に設けられているが、ストレージ装置１外部に設けられてもよい。
【００２１】
個別記憶部３２、個別記憶部３４、個別記憶部４２、個別記憶部４４及び共有記憶部３６は、ストレージ装置１に内蔵される大容量記憶装置（不揮発性記憶デバイス）である。例えば、これらの大容量記憶装置は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ Ｓｔａｔｅ Ｄｒｉｖｅ）、ＮＶＭｅ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ）等である。
【００２２】
（ストレージ装置の処理フロー）
図５は、第１の実施形態に係るストレージ装置１のリード要求に対する動作を示すフロー図である。
まず、シンクライアントシステムにおいて第１の物理サーバ２Ａ、第２の物理サーバ２Ｂは、すべての仮想ＰＣ２Ａ１、２及び２Ｂ１、２の一斉リブートを行う（ステップＳ５０１）。例えば、緊急セキュリティパッチ適用後又はメモリリークのリスク検知時に、ユーザやスクリプトなど外部指示に応答して、仮想ＰＣの一斉リブート指示が、第１の物理サーバ２Ａ、第２の物理サーバ２Ｂのすべての仮想ＰＣ２Ａ１、２及び２Ｂ１、２に送信される。
【００２３】
第１の実施形態に係るストレージ装置１の動作として、第２のコントローラ４に対応する仮想ＰＣ２Ｂ１、２に着目して説明する。第２の物理サーバ２Ｂの仮想ＰＣ２Ｂ１、２は、ストレージ装置１から一斉リブートによるリブート指示を同一時間帯に受信する。起動に必要な情報であるリード情報を取得するために、仮想ＰＣ２Ｂ１は、個別キャッシュ手段４１の個別処理手段４１１にリード要求を送信する。同一時間帯に、仮想ＰＣ２Ｂ１が取得するリード情報と同一のリード情報を取得するため、仮想ＰＣ２Ｂ２は、個別キャッシュ手段４３の個別処理手段４３１にリード要求を送信する。
【００２４】
個別処理手段４１１は、リード要求が指定するリード情報が個別記憶部４２に存在するか、共有記憶部３６に存在するか判定する（ステップＳ５０２）。同様に、個別処理手段４３１は、リード要求が指定するリード情報が個別記憶部４４に存在するか、共有記憶部３６に存在するか判定する（ステップＳ５０２）。
【００２５】
個別記憶部４２にリード要求が指定するリード情報が存在すると判定された場合（ステップＳ５０２：Ｙｅｓ）、個別処理手段４１１は、個別キャッシュ４１２にリード要求が指定するリード情報が存在するか否かを判定する。具体的には、リード要求が指定するリード情報にハッシュ関数を適用し、ハッシュ値を取得する。取得されたハッシュ値に対応する値が個別キャッシュ４１２に記録されている場合、個別処理手段４１１は、個別キャッシュ４１２にリード要求が指定するリード情報が存在すると判定する。このとき、個別処理手段４１１は、個別キャッシュ４１２に記録されたリード情報を仮想ＰＣ２Ｂ１に送信する（ステップＳ５０３）。取得されたハッシュ値に対応する値が個別キャッシュ４１２に記録されていない場合、個別処理手段４１１は、個別記憶部４２に記録されたリード情報を仮想ＰＣ２Ｂ１に送信する（ステップＳ５０３）。同様に、個別記憶部４４にリード要求が指定するリード情報が存在すると判定された場合（ステップＳ５０２：Ｙｅｓ）、個別処理手段４３１は、個別キャッシュ４３２にリード要求が指定するリード情報が存在するか否かを判定する。具体的には、当該判定処理は、ハッシュ関数を用いた上記処理と同様の処理であってよい。個別処理手段４３１は、個別キャッシュ４３２にリード要求が指定するリード情報が存在すると判定したとき、個別処理手段４３１は、個別キャッシュ４３２に記録されたリード情報を仮想ＰＣ２Ｂ２に送信する（ステップＳ５０３）。取得されたハッシュ値に対応する値が個別キャッシュ４３２に記録されていない場合、個別処理手段４３１は、個別記憶部４４に記録されたリード情報を仮想ＰＣ２Ｂ２に送信する（ステップＳ５０３）。
【００２６】
リード要求が指定するリード情報が共有記憶部３６に存在する場合（ステップＳ５０２：Ｎｏ）、個別処理手段４１１は、副キャッシュ手段４５の副処理手段４５１にリード要求を送信する。同様に、リード要求が指定するリード情報が共有記憶部３６に存在する場合（ステップＳ５０２：Ｎｏ）、個別処理手段４３１は、副キャッシュ手段４５の副処理手段４５１にリード要求を送信する。
【００２７】
副処理手段４５１は、個別処理手段４１１から受信したリード要求に対応するリード情報が副キャッシュ４５２上に存在するか確認する（ステップＳ５０４）。具体的には、リード要求が指定するリード情報にハッシュ関数を適用し、ハッシュ値を取得する。取得されたハッシュ値に対応する値が副キャッシュ４５２に記録されている場合、副処理手段４５１は、副キャッシュ４５２にリード要求が指定するリード情報が存在すると判定する（ステップＳ５０４：Ｙｅｓ）。このとき、副処理手段４５１は、リード情報が記録された副キャッシュ４５２上のアドレスを個別キャッシュ手段４１の個別処理手段４１１に返送する（ステップＳ５０８）。個別処理手段４１１は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ１に送信する（ステップＳ５０９）。ここでは、個別処理手段４１１が、リード情報を格納しているメモリアドレスを参照して、そのアドレスに記録されるリード情報を仮想ＰＣ２Ｂ１へ送信しているが、副キャッシュ４５２から個別キャッシュ手段４１へリード情報を送信し、一旦、個別キャッシュ４１２上にバッファリングしたリード情報を仮想ＰＣ２Ｂ１へ送信し、送信後個別キャッシュ４１２にバッファリングしたリード情報を削除して、同じリード情報により個別キャッシュ４１２の記憶容量を圧迫しないようにしても良い。
【００２８】
取得されたハッシュ値に対応する値が副キャッシュ４５２に記録されていない場合、（ステップＳ５０４：Ｎｏ）、副処理手段４５１は、主キャッシュ手段３５の主処理手段３５１にリード要求を送信する。
【００２９】
同様に、副処理手段４５１は、個別処理手段４３１から受信したリード要求に対応するリード情報が副キャッシュ４５２上に存在するか確認する（ステップＳ５０４）。具体的には、リード要求が指定するリード情報にハッシュ関数を適用し、ハッシュ値を取得する。取得されたハッシュ値に対応する値が副キャッシュ４５２に記録されている場合、副処理手段４５１は、副キャッシュ４５２にリード要求が指定するリード情報が存在すると判定する（ステップＳ５０４：Ｙｅｓ）。このとき、副処理手段４５１は、リード情報が記録された副キャッシュ４５２上のアドレスを個別キャッシュ手段４３の個別処理手段４３１に返送する（ステップＳ５０８）。個別処理手段４３１は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ２に送信する（ステップＳ５０９）。ここでは、個別処理手段４３１が、リード情報を格納しているメモリアドレスを参照して、そのアドレスに記録されるリード情報を仮想ＰＣ２Ｂ２へ送信しているが、副キャッシュ４５２から個別キャッシュ手段４３へリード情報を送信し、一旦、個別キャッシュ４３２上にバッファリングしたリード情報を仮想ＰＣ２Ｂ２へ送信し、送信後個別キャッシュ４３２にバッファリングしたリード情報を削除して、同じリード情報により個別キャッシュ４３２の記憶容量を圧迫しないようにしても良い。
【００３０】
個別処理手段４３１から受信したリード要求についても同様に、ハッシュ値に対応する値が副キャッシュ４５２に記録されていないとする（ステップＳ５０４：Ｎｏ）。このとき、副処理手段４５１は、主キャッシュ手段３５の主処理手段３５１にリード要求を送信する。
【００３１】
主処理手段３５１は、個別処理手段４１１を経由したリード要求を受信する。同一時間帯に、主処理手段３５１は、個別処理手段４３１を経由したリード要求を受信する。
主処理手段３５１は、主キャッシュ３５２上にリード要求に対応するリード情報が存在するか確認する（ステップＳ５０５）。具体的には、リード要求が指定するリード情報にハッシュ関数を適用し、ハッシュ値を取得する。取得されたハッシュ値に対応する値が主キャッシュ３５２に記録されている場合、主処理手段３５１は、主キャッシュ３５２にリード要求が指定するリード情報が存在すると判定する（ステップＳ５０５：Ｙｅｓ）。
【００３２】
主キャッシュ３５２上にリード情報が存在する場合（ステップＳ５０５：Ｙｅｓ）、主処理手段３５１は、主キャッシュ３５２上のリード情報を副キャッシュ手段４５にリード情報を送信する（ステップＳ５０７）。副処理手段４５１は、送信されたリード情報を副キャッシュ４５２に記録する。その後、副処理手段４５１は、リード情報が記録された副キャッシュ４５２上のアドレスを個別キャッシュ手段４１の個別処理手段４１１と、個別キャッシュ手段４３の個別処理手段４３１とにそれぞれ返送する（ステップＳ５０８）。個別処理手段４１１は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ１に送信する（ステップＳ５０９）。同様に、個別処理手段４３１は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ２に送信する（ステップＳ５０９）。ここでは、個別処理手段４１１が、リード情報を格納しているメモリアドレスを参照して、そのアドレスに記録されるリード情報を仮想ＰＣ２Ｂ１へ送信しているが、副キャッシュ４５２から個別キャッシュ手段４１へリード情報を送信し、一旦、個別キャッシュ４１２上にバッファリングしたリード情報を仮想ＰＣ２Ｂ１へ送信し、送信後個別キャッシュ４１２にバッファリングしたリード情報を削除して、同じリード情報により個別キャッシュ４１２の記憶容量を圧迫しないようにしても良い。同様に、個別処理手段４３１が、リード情報を格納しているメモリアドレスを参照して、そのアドレスに記録されるリード情報を仮想ＰＣ２Ｂ２へ送信しているが、副キャッシュ４５２から個別キャッシュ手段４３へリード情報を送信し、一旦、個別キャッシュ４３２上にバッファリングしたリード情報を仮想ＰＣ２Ｂ２へ送信し、送信後個別キャッシュ４３２にバッファリングしたリード情報を削除して、同じリード情報により個別キャッシュ４３２の記憶容量を圧迫しないようにしても良い。
【００３３】
主キャッシュ３５２上にリード情報が存在しない場合（ステップＳ５０５：Ｎｏ）、主処理手段３５１は、共有記憶部３６からリード情報を読み出す（ステップＳ５０６）。主処理手段３５１は、読み出したリード情報を副キャッシュ手段４５に送信する（ステップＳ５０７）。副処理手段４５１は、送信されたリード情報を副キャッシュ４５２に記録する。その後、副処理手段４５１は、リード情報が記録された副キャッシュ４５２上のアドレスを個別キャッシュ手段４１の個別処理手段４１１と、個別キャッシュ手段４３の個別処理手段４３１とにそれぞれ返送する（ステップＳ５０８）。個別処理手段４１１は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ１に送信する（ステップＳ５０９）。同様に、個別処理手段４３１は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ２に送信する（ステップＳ５０９）。ここでは、個別処理手段４１１が、リード情報を格納しているメモリアドレスを参照して、そのアドレスに記録されるリード情報を仮想ＰＣ２Ｂ１へ送信しているが、副キャッシュ４５２から個別キャッシュ手段４１へリード情報を送信し、一旦、個別キャッシュ４１２上にバッファリングしたリード情報を仮想ＰＣ２Ｂ１へ送信し、送信後個別キャッシュ４１２にバッファリングしたリード情報を削除して、同じリード情報により個別キャッシュ４１２の記憶容量を圧迫しないようにしても良い。同様に、個別処理手段４３１が、リード情報を格納しているメモリアドレスを参照して、そのアドレスに記録されるリード情報を仮想ＰＣ２Ｂ２へ送信しているが、副キャッシュ４５２から個別キャッシュ手段４３へリード情報を送信し、一旦、個別キャッシュ４３２上にバッファリングしたリード情報を仮想ＰＣ２Ｂ２へ送信し、送信後個別キャッシュ４３２にバッファリングしたリード情報を削除して、同じリード情報により個別キャッシュ４３２の記憶容量を圧迫しないようにしても良い。
【００３４】
以上のとおり、シンクライアントシステムの物理サーバが仮想ＰＣの一斉リブート処理を開始してから、仮想ＰＣがリード情報を受信するまでの処理内容を説明した。
【００３５】
一斉リブートされる仮想ＰＣが、２つの仮想ＰＣ２Ｂ１、２である場合について説明した。しかしながら、第２のコントローラ４について３つ以上の仮想ＰＣが設定されている場合、第２のコントローラ４に対応する当該３つ以上の仮想ＰＣのみが一斉リブートされてもよい。
リード要求が、一斉リブート動作に基づくリード要求である場合について説明した。しかしながら、リード要求は、他の動作に基づくリード要求であってもよい。
リード要求に対するリード情報が個別キャッシュ４１２、個別キャッシュ４３２、副キャッシュ４５２、又は主キャッシュ３５２に存在するか否かの判定が、それぞれのキャッシュ手段で個別に行われる場合について説明した。しかしながら、個別処理手段４１１又は個別処理手段４３１で計算されたハッシュ値は、副キャッシュ手段４５及び主キャッシュ手段３５に送信されて、副キャッシュ手段４５及び主キャッシュ手段３５におけるキャッシュ判定に使用されてもよい。
【００３６】
主処理手段３５１は、副処理手段４５１から同一時間帯に２つのリード要求を受信する場合について説明した。しかしながら、第２のコントローラ４について３つ以上の仮想ＰＣが設定されている場合、当該３つ以上の仮想ＰＣからリード要求を受信した場合にのみ同様の動作が行われてもよい。
副処理手段４５１からの２つのリード要求が、同一時間帯に主処理手段３５１によって受信される場合について説明した。ここで、同一時間帯の長さは、シンクライアントシステム設計時に予め設定されてもよく、または、適宜変更されてもよい。
主処理手段３５１によって受信される２つのリード要求が同一時間帯でない場合、副キャッシュ手段４５は副キャッシュ４５２にリード情報を記録しなくてもよい。すなわち、主処理手段３５１は、リード情報が記録された主キャッシュ３５２上のアドレスを個別処理手段４１１又は個別処理手段４３１に返送してもよい。
副キャッシュ手段は、共有記憶部３６の情報を、主キャッシュ手段３５を介して取得すると説明した。しかしながら、副キャッシュ手段４５は、共有記憶部３６の情報を、主キャッシュ手段３５を介さず共有記憶部３６から直接取得してもよい。
【００３７】
上記の説明では、個別処理手段４１１は、ステップＳ５０８の後、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ１に送信する（ステップＳ５０９）と説明した。すなわち、個別処理手段４１１は、個別キャッシュ４１２にリード情報を記録していない。しかしながら、個別処理手段４１１は、リード情報が記録された副キャッシュ４５２上のアドレスを参照して、個別キャッシュ４１２にリード情報を記録してもよい。記録後、個別処理手段４１１は、個別キャッシュ４１２上のリード情報を仮想ＰＣ２Ｂ１に送信してもよい。
【００３８】
（作用、効果）
上述したように、すなわち、第１の実施形態に係るストレージ装置１は、共有記憶部３６と、第１のコントローラ３と、第２のコントローラ４とを備える。共有記憶部３６は、通信接続する複数の端末５ａから５ｄに対向して物理サーバにおいて立ち上げられた複数の仮想ＰＣ２Ａ１、２及び２Ｂ１、２が共通して利用する情報を記憶する。第１のコントローラ３は、仮想ＰＣ２Ａ１、２それぞれが個別に利用する情報を記憶する個別記憶部３２及び３４と、共有記憶部３６の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段３５と、を備える。また、第１のコントローラ３は、個別記憶部３２及び３４と、主キャッシュ手段３５と、共有記憶部３６と、第２のコントローラ４の副キャッシュ手段４５と、対応する仮想ＰＣ２Ａ１、２との間で情報の入出力処理を行う。第２のコントローラ４は、第１のコントローラ３に対応して接続される仮想ＰＣ２Ａ１、２以外の複数の仮想ＰＣ２Ｂ１、２それぞれが個別に利用する情報を記憶する個別記憶部４２及び４４を備える。また、第２のコントローラ４は、共有記憶部３６の記憶する情報を所定のタイミングで読み出して記録する副キャッシュ手段４５を備える。また、第２のコントローラ４は、個別記憶部４２及び４４と、副キャッシュ手段４５と、主キャッシュ手段３５と、対応する複数の仮想ＰＣ２Ｂ１、２との間で情報の入出力処理を行う。
また、例えば、第１のコントローラ３は、第２のコントローラ４に対応する複数の仮想ＰＣ２Ｂ１、２から共有記憶部３６の記憶する情報に対するリード要求があった場合、当該情報を第２のコントローラ４に対して返信する。また、第２のコントローラ４は、当該情報を副キャッシュ手段４５に記録し、記録した情報を第２のコントローラ４に対応する複数の仮想ＰＣ２Ｂ１、２に返信する。
これにより、第１の実施形態では、個別キャッシュ手段４１、副キャッシュ手段４５、主キャッシュ手段３５が連携して、キャッシュ上の情報を管理する。そして、仮想ＰＣの一斉リブートの時の同一情報の読出しによる主キャッシュ手段３５に対する負荷が、副キャッシュ手段４５に分散される。それによって、ストレージ装置１全体の処理能力を向上させることが可能となる。
【００３９】
（第１の実施形態の変形例）
以上、第１の実施形態に係るストレージ装置１について詳細に説明したが、ストレージ装置１の具体的な態様は、上述のものに限定されることはなく、要旨を逸脱しない範囲内において種々の設計変更等を加えることは可能である。
【００４０】
（第１の実施形態の第１の変形例）
例えば、第１の実施形態の第１の変形例として、副キャッシュ手段４５が、共有記憶部３６のリード情報を副キャッシュ４５２に記録する。この後、第２のコントローラ４内の仮想ＰＣ２Ｂ１、２以外の仮想ＰＣ２Ｂ３は、対応する個別キャッシュ手段に対して、記録されたリード情報についての新たなリード要求を送信する。このとき、仮想ＰＣ２Ｂ３に対応する個別キャッシュ手段の個別処理手段は、副キャッシュ手段４５の副処理手段４５１にリード要求を送信する。そして、副処理手段４５１は、副キャッシュ４５２に記録されたリード情報に対応するアドレスを、仮想ＰＣ２Ｂ３に対応する個別キャッシュ手段に送信する。仮想ＰＣ２Ｂ３に対応する個別キャッシュ手段の個別処理手段は、副キャッシュ４５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ｂ３に送信する。
【００４１】
上述したように、すなわち、第２のコントローラ４は、対応する仮想ＰＣ２Ｂ３から共有記憶部３６の記憶する情報の新たなリード要求を取得した場合には、副キャッシュ手段４５に記憶する共有記憶部３６の記憶する情報を、リード要求に対して返信する。
これによって、仮想ＰＣ２Ｂ３に対応する個別キャッシュ手段がリード要求を副キャッシュ手段４５に送信したとき、既にリード要求に対応するリード情報は副キャッシュ４５２に記録されている。従って、リード要求に対するキャッシュヒット率を向上させることができる。
＜第２の実施形態＞
以下、第２の実施形態に係るストレージ装置１ついて、図２及び図６を参照しながら説明する。
【００４２】
（ストレージ装置１の処理フロー）
図６は、第２の実施形態に係るストレージ装置１のリード要求に対する動作を示すフロー図である。
図６に示す第２の実施形態に係るストレージ装置１の処理フローは、仮想ＰＣ２Ｂ１、２から予め規定された連続する情報についてリード要求があったときの処理フローである。この処理フローは、ステップＳ６０１からステップＳ６０２が更に追加されている点で、図５に示す第１の実施形態に係るストレージ装置１の処理フローと相違する。第２の実施形態に係るストレージ装置１のステップＳ６０１からステップＳ６０２以外の処理は、第１の実施形態に係るストレージ装置１の処理と同様であるので、以下では、相違する処理について説明する。
【００４３】
図６に示すように、まず、第１の実施形態と同様にステップＳ５０１及びステップＳ５０２の処理が行われる。
続いて、個別記憶部４２にリード要求が指定するリード情報が存在すると判定された場合（ステップＳ５０２：Ｙｅｓ）、第１の実施形態と同様にステップ５０３の処理が行われる。個別記憶部４４にリード要求が指定するリード情報が存在すると判定された場合（ステップＳ５０２：Ｙｅｓ）も同様に、第１の実施形態のステップ５０３の処理が行われる。
【００４４】
リード要求が指定するリード情報が共有記憶部３６に存在する場合（ステップＳ５０２：Ｎｏ）、個別処理手段４１１及び個別処理手段４３１は、リード要求が予め規定された連続する情報に対するリード要求か判定する（ステップＳ６０１）。例えば、過去に受信したリード要求が、情報Ａ、Ｂ、Ｃ、Ｄの順番で要求するためのリード要求であったとする。このとき、この順番でリード要求されたことが個別キャッシュ４１２及び個別キャッシュ４３２に記録されている。この場合、個別処理手段４１１及び４３１は、後のリード要求において、情報Ａ、Ｂについてのリード要求を受信した場合、その後に情報Ｃ、Ｄのリード要求を受信する可能性があることを判定する。つまり、個別処理手段４１１及び４３１は、情報Ａ、Ｂについてのリード要求を受信した場合、個別キャッシュ４１２及び４３２をそれぞれ参照して、当該リード要求が、予め規定された連続する情報Ａ、Ｂ、Ｃ、Ｄに対するリード要求であると判定する。
【００４５】
予め規定された連続する情報に対するリード要求であると判定された場合（ステップＳ６０１：Ｙｅｓ）、個別処理手段４１１及び個別処理手段４３１は、それぞれ先読み要求を副キャッシュ手段４５に送信する（ステップＳ６０２）。例えば、リード要求は、予め規定された連続する情報Ａ、Ｂ、Ｃ、Ｄに対するリード要求である。このとき、個別処理手段４１１及び個別処理手段４３１は、リード要求が、情報Ａ、Ｂについての読み出し要求であると認識した時点で、情報Ｃの一つ後のリード要求として指定される可能性のある情報Ｄについてのリード要求、すなわち、情報Ｄについての先読み要求を副キャッシュ手段４５に送信する。なお、個別処理手段４１１及び個別処理手段４３１は、情報Ｄのリード要求の前に、情報Ｃについてのリード要求、すなわち、情報Ｃについての先読み要求を副キャッシュ手段４５に送信してもよい。
【００４６】
図６に示すように、予め規定された連続する情報に対するリード要求でないと判定された場合（ステップＳ６０１：Ｎｏ）又はステップ６０２の次に、第１の実施形態と同様にステップＳ５０４からＳ５０９の処理が行われ、図６に示す処理フローが完了する。
【００４７】
以上のとおり、仮想ＰＣ２Ｂ１、２から予め規定された連続する情報についてリード要求があったときの処理フローについて説明した。
予め規定された連続する情報か否かの判定は、個別キャッシュ４１２に記録された過去に受信したリード要求の情報を用いる場合について説明した。しかしながら、当該判定は、別の判定方法を用いて行われてもよい。
【００４８】
（作用、効果）
上述したように、すなわち、第２の実施形態に係るストレージ装置１の第２のコントローラ４は、対応する仮想ＰＣから共有記憶部３６の記憶する情報の新たなリード要求であって予め規定された連続するリード要求を取得する。この場合には、第２のコントローラ４は、当該連続するリード要求のうち未だ取得していないリード要求に対応する情報を共有記憶部から先読みして副キャッシュ手段に記録する。
これにより、予め規定された連続する情報についてのリード要求である場合に、先読みすべき情報が副キャッシュに迅速に記録される。他の個別キャッシュ手段が、当該先読みすべき情報について副キャッシュ手段にリード要求を送信したときには既にリード要求に対応するリード情報は記録されている。従って、予め規定された連続する情報について先読みが行われることによって、他の仮想ＰＣからのリード要求に対するキャッシュヒット率を向上させることができる。
【００４９】
＜第３の実施形態＞
以下、第３の実施形態に係るストレージ装置１ついて、図２及び図７を参照しながら説明する。
【００５０】
（ストレージ装置１の処理フロー）
図７は、第３の実施形態に係るストレージ装置１のリード要求に対する動作を示すフロー図である。
図７に示す第３の実施形態に係るストレージ装置１の処理フローは、仮想ＰＣ２Ａ１、２がリード要求を送信するときの処理フローである。この処理フローのステップＳ５０１は、第１の実施形態に係るストレージ装置１の処理フローのステップＳ５０１と同様である。
【００５１】
まず、各物理サーバはストレージ装置１の要求に基づいてすべての仮想ＰＣ２Ａ１、２及び２Ｂ１、２の一斉リブートを行う（ステップＳ５０１）。この時、仮想ＰＣ２Ａ１、２は、一斉リブートによるリブート指示を同一時間帯に受信する。起動に必要な情報であるリード情報を取得するために、仮想ＰＣ２Ａ１は、個別キャッシュ手段３１の個別処理手段３１１にリード要求を送信する。同一時間帯に、仮想ＰＣ２Ａ１が取得するリード情報と同一のリード情報を取得するため、仮想ＰＣ２Ａ２は、個別キャッシュ手段３３の個別処理手段３３１にリード要求を送信する。
【００５２】
個別処理手段３１１は、リード要求が指定するリード情報が個別記憶部３２に存在するか、共有記憶部３６に存在するか判定する（ステップＳ７０１）。
同様に、個別処理手段３３１は、リード要求が指定するリード情報が個別記憶部３４に存在するか、共有記憶部３６に存在するか判定する（ステップＳ７０１）。
【００５３】
個別記憶部３２にリード要求が指定するリード情報が存在すると判定された場合（ステップＳ７０１：Ｙｅｓ）、個別処理手段３１１は、個別キャッシュ３１２にリード要求が指定するリード情報が存在するか否かを判定する。具体的には、リード要求が指定するリード情報にハッシュ関数を適用し、ハッシュ値を取得する。取得されたハッシュ値に対応する値が個別キャッシュ３１２に記録されている場合、個別処理手段３１１は、個別キャッシュ３１２にリード要求が指定するリード情報が存在すると判定する。このとき、個別処理手段３１１は、個別キャッシュ３１２に記録されたリード情報を仮想ＰＣ２Ａ１に送信する（ステップＳ７０２）。取得されたハッシュ値に対応する値が個別キャッシュ３１２に記録されていない場合、個別処理手段３１１は、個別記憶部３２に記録されたリード情報を仮想ＰＣ２Ａ１に送信する（ステップＳ７０２）。同様に、個別記憶部３４にリード要求が指定するリード情報が存在すると判定された場合（ステップＳ７０１：Ｙｅｓ）、個別処理手段３３１は、個別キャッシュ３３２にリード要求が指定するリード情報が存在するか否かを判定する。具体的には、当該判定処理は、ハッシュ関数を用いた上記処理と同様の処理であってよい。個別処理手段３３１は、個別キャッシュ３３２にリード要求が指定するリード情報が存在すると判定したとき、個別処理手段３３１は、個別キャッシュ３３２に記録されたリード情報を仮想ＰＣ２Ａ２に送信する（ステップＳ７０２）。取得されたハッシュ値に対応する値が個別キャッシュ３３２に記録されていない場合、個別処理手段３３１は、個別記憶部３４に記録されたリード情報を仮想ＰＣ２Ａ２に送信する（ステップＳ７０２）。
【００５４】
リード要求が指定するリード情報が共有記憶部３６に存在する場合（ステップＳ７０１：Ｎｏ）、個別処理手段３１１は、主キャッシュ手段３５の主処理手段３５１にリード要求を送信する。同様に、リード要求が指定するリード情報が共有記憶部３６に存在する場合（ステップＳ７０１：Ｎｏ）、個別処理手段３３１は、主キャッシュ手段３５の主処理手段３５１にリード要求を送信する。
【００５５】
主処理手段３５１は、個別処理手段３１１を経由したリード要求を受信する。同一時間帯に、主処理手段３５１は、個別処理手段３３１を経由したリード要求を受信する。ここで、同一時間帯の長さは、シンクライアントシステム設計時に予め設定されてもよく、または、適宜変更されてもよい。
主処理手段３５１は、主キャッシュ３５２上にリード要求に対応するリード情報が存在するか確認する（ステップＳ７０３）。具体的には、リード要求が指定するリード情報にハッシュ関数を適用し、ハッシュ値を取得する。取得されたハッシュ値に対応する値が主キャッシュ３５２に記録されている場合、主処理手段３５１は、主キャッシュ３５２にリード要求が指定するリード情報が存在すると判定する（ステップＳ７０３：Ｙｅｓ）。このとき、主処理手段３５１は、副キャッシュ手段４５にリード情報を送信する（ステップＳ７０５）。副処理手段４５１は、送信されたリード情報を副キャッシュ４５２に記録する。
【００５６】
取得されたハッシュ値に対応する値が主キャッシュ３５２に記録されていない場合、（ステップＳ７０３：Ｎｏ）、主処理手段３５１は、共有記憶部３６からリード情報を読み出す（ステップＳ７０４）。主処理手段３５１は、読み出したリード情報を主キャッシュ３５２に記録するとともに、副キャッシュ手段４５に送信する（ステップＳ７０５）。副処理手段４５１は、送信されたリード情報を副キャッシュ４５２に記録する。
【００５７】
主処理手段３５１は、リード情報が記録された主キャッシュ３５２上のアドレスを個別キャッシュ手段３１の個別処理手段３１１及び個別キャッシュ手段３３の個別処理手段３３１に返送する（ステップＳ７０６）。個別処理手段３１１は、主キャッシュ３５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ａ１に送信する（ステップＳ７０７）。同様に、個別処理手段３３１は、主キャッシュ３５２上のアドレスを参照して、リード情報を仮想ＰＣ２Ａ２に送信する（ステップＳ７０７）。
【００５８】
以上のとおり、シンクライアントシステムの物理サーバが仮想ＰＣの一斉リブート処理を開始してから、仮想ＰＣ２Ａ１、２がリード情報を受信するまでの処理内容を説明した。
【００５９】
（作用、効果）
上述したように、すなわち、第３の実施形態に係るストレージ装置１の第１のコントローラ３は、対応する仮想ＰＣから共有記憶部３６の記憶する情報の新たなリード要求を取得する。この場合に、第１のコントローラ３は、第２のコントローラ４に当該リード要求に対応する情報を送信する。そして、第２のコントローラ４は、受信したリード情報を副キャッシュ４５２に記録する。
これにより、副キャッシュ手段４５から要求される情報は、予め第２のコントローラ４の副キャッシュ４５２に記録される。従って、キャッシュヒット率を向上させることができ、ストレージ装置の性能を更に向上させることができる。
【００６０】
＜第４の実施形態＞
以下、第４の実施形態に係るストレージ装置１ついて、図２及び図８を参照しながら説明する。
（ストレージ装置１の処理フロー）
図８は、第４の実施形態に係るストレージ装置のライト要求に対する動作を示すフロー図である。以下では、仮想ＰＣ２Ａ１がライト要求を送信した場合に着目して説明する。
【００６１】
まず、端末５ａのユーザの操作によって、端末５ａは、仮想ＰＣ２Ａ１に、書き込むべき情報であるライト情報を含むライト要求を送信する（ステップＳ８０１）。仮想ＰＣ２Ａ１は、個別キャッシュ手段３１にライト要求を送信する。個別キャッシュ手段３１の個別処理手段３１１は、ライト要求を受信する。個別処理手段３１１は、受信されたライト要求に含まれるライト情報が、共有記憶部３６に記録された情報と重複していないか確認する。
【００６２】
具体的には、個別処理手段３１１は、ライト情報の一部又はすべてにハッシュ関数を適用しハッシュ値を計算する。個別処理手段３１１は、計算されたハッシュ値を用いて、ライト情報の一部又はすべてが、共有記憶部３６に記録された情報と重複していないか判定する（ステップＳ８０２）。
【００６３】
重複すると判定された場合（ステップＳ８０２：Ｙｅｓ）、個別処理手段３１１は、共有記憶部３６の重複したデータへのリンク情報を個別記憶部３２に記録する（ステップＳ８０４）。また、個別処理手段３１１は、当該リンク情報を主処理手段３５１に送信する。主処理手段３５１は、受信したリンク情報を主キャッシュ３５２に記録する。また、主処理手段３５１は、当該リンク情報を共有記憶部３６に記録する。
【００６４】
重複しないと判定されたとき（ステップＳ８０２：Ｎｏ）、個別処理手段３１１は、ライト情報を個別記憶部３２に記録する（ステップＳ８０３）。
以上のとおり、ストレージ装置１が端末５Ａからライト要求を受信してから、ライト要求に応答する処理が終了するまでの処理内容を説明した。
【００６５】
上記の説明では、端末５ａがライト要求を送信するときの処理について説明した。しかしながら、端末５ａ以外の端末５ｂから５ｄがライト要求を送信した場合についても同様の処理が行われてもよい。
上記の説明におけるハッシュ関数を用いたデータ重複検索方法については、特許文献５に示されるハッシュ関数が用いられてもよい。
【００６６】
また、端末５Ａが、既に共有記憶部３６に記録されている情報を変更又は上書きするためのライト要求を送信したときの処理について説明する。
端末５ａが、既に共有記憶部３６に記録されている情報を変更又は上書きするためのライト情報を含むライト要求を仮想ＰＣ２Ａ１に送信する。仮想ＰＣ２Ａ１は、ライト要求を個別キャッシュ手段３１に送信する。個別キャッシュ手段３１の個別処理手段３１１は、個別記憶部３２にライト情報を記録する。個別処理手段３１１は、主キャッシュ手段３５に、重複した情報へのリンク情報の削除要求を送信する。主キャッシュ手段３５の主処理手段３５１は、指定された個別記録部のリンク情報を削除する。もし、リンクされた個別記録部が１つも存在しなければ、ライト要求に対応する重複データを、共有記憶部３６から削除する。これによって、共有記憶部の不要となったデータ削除でき、不要データの増加を防ぐことができる。
【００６７】
なお、主キャッシュ手段３５が、共有記憶部３６に記録されている情報を変更又は上書きするためのライト要求を受信したときに、共有記憶部３６上に記録された変更又は上書きの対象となった情報を削除すると説明した。しかしながら、変更又は上書きの対象となった情報を削除する代わりに、リンク先が１つである場合に、主キャッシュ手段３５は、当該情報を、当該リンク先の個別記録部に移動させてもよい。これによって、当該情報はいずれかの個別記憶部において管理される。従って、データの一貫性が保たれる。
【００６８】
図９は、少なくとも１つの実施形態に係るストレージ装置１の最小構成を示す図である。以下に、それぞれの構成要素について説明する。
【００６９】
ストレージ装置１は、共有記憶部３６と、第１のコントローラ３と、第２のコントローラ４とを備える。共有記憶部３６は、通信接続する複数の端末５ａ、５ｃ、及び５ｄに対向して物理サーバにおいて立ち上げられた複数の仮想ＰＣ２Ａ１及び２Ｂ１、２が共通して利用する情報を記憶する。第１のコントローラ３は、仮想ＰＣ２Ａ１が個別に利用する情報を記憶する個別記憶部３２と、共有記憶部３６の記憶する情報を所定のタイミングで読み出して記録する主キャッシュ手段３５と、を備える。また、第１のコントローラ３は、個別記憶部３２と、主キャッシュ手段３５と、共有記憶部３６と、第２のコントローラの副キャッシュ手段４５と、対応する仮想ＰＣ２Ａ１との間で情報の入出力処理を行う。第２のコントローラ４は、第１のコントローラ３に対応して接続される仮想ＰＣ２Ａ１以外の複数の仮想ＰＣ２Ｂ１、２それぞれが個別に利用する情報を記憶する個別記憶部４２及び４４を備える。また、第２のコントローラ４は、共有記憶部３６の記憶する情報を所定のタイミングで読み出して記録する副キャッシュ手段４５を備える。また、第２のコントローラ４は、個別記憶部４２及び４４と、副キャッシュ手段４５と、主キャッシュ手段３５と、対応する複数の仮想ＰＣ２Ｂ１、２との間で情報の入出力処理を行う。
これにより、個別キャッシュ手段４１、副キャッシュ手段４５、主キャッシュ手段３５が連携して、キャッシュ上の情報を管理する。そして、仮想ＰＣの一斉リブートの時の同一情報の読出しによる主キャッシュ手段３５に対する負荷が副キャッシュ手段４５に分散される。それによって、ストレージ装置１全体の処理能力を向上させることが可能となる。
【００７０】
上述したストレージ装置１は内部に、コンピュータシステムを有している。そして、上述したストレージ装置１の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって、上記処理が行われる。ここでコンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしても良い。
【００７１】
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７２】
具体的には、上記プログラムは、ストレージ装置に、共有記憶部に通信接続する複数の端末に対向して立ち上げた複数の仮想ＰＣが共通して利用する情報を記録する共有情報記録手段と、個別記憶部に仮想ＰＣそれぞれが個別に利用する情報を記録し、主キャッシュ手段に共有記憶部の記憶する情報を所定のタイミングで読み出して記録し、個別記憶部と主キャッシュ手段と、共有記憶部と、第２のコントロール手段の副キャッシュ手段と、対応する仮想ＰＣとの間で情報の入出力処理を行う第１のコントロール手段と、個別記憶部に第１のコントロール手段に対応する仮想ＰＣ以外の複数の仮想ＰＣそれぞれが個別に利用する情報を記録し、副キャッシュ手段に共有記憶部の記憶する情報を所定のタイミングで読み出して記録し、対応する個別記憶部と、副キャッシュ手段と、主キャッシュ手段と、対応する複数の仮想ＰＣとの間で情報の入出力処理を行う第２のコントロール手段と、を実行させるプログラムであってもよい。
【符号の説明】
【００７３】
１           ストレージ装置
２Ａ         第１の物理サーバ
２Ａ１、２       仮想ＰＣ
２Ｂ         第２の物理サーバ
２Ｂ１、２       仮想ＰＣ
３           第１のコントローラ
３１         個別キャッシュ手段
３１１       個別処理手段
３１２       個別キャッシュ
３２         個別記憶部
３３         個別キャッシュ手段
３３１       個別処理手段
３３２       個別キャッシュ
３４         個別記憶部
３５         主キャッシュ手段
３５１       主処理手段
３５２       主キャッシュ
３６         共有記憶部
４           第２のコントローラ
４１         個別キャッシュ手段
４１１       個別処理手段
４１２       個別キャッシュ
４２         個別記憶部
４３         個別キャッシュ手段
４３１       個別処理手段
４３２       個別キャッシュ
４４         個別記憶部
４５         副キャッシュ手段
４５１       副処理手段
４５２       副キャッシュ
５a〜d 端末
【図１】
2020166776.tif 000003
【図２】
2020166776.tif 000004
【図３】
2020166776.tif 000005
【図４】
2020166776.tif 000006
【図５】
2020166776.tif 000007
【図６】
2020166776.tif 000008
【図７】
2020166776.tif 000009
【図８】
2020166776.tif 000010
【図９】
2020166776.tif 000011