(57)【要約】【課題】ストレージシステムにおいて、第１の記憶装置に書き込んだデータの第２の記憶装置への書き出し処理を最適化する。【解決手段】第１の記憶装置３０と第２の記憶装置４０とに対して、アクセスコマンドを処理する情報処理装置１０において、前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の間欠時間の複数回分の平均を平均間欠時間として算出する算出部１７と、アクセスコマンド処理を完了した後、平均間欠時間を超えて情報処理装置１０へのアクセスが行なわれなかった場合、第１の記憶装置３０から第２の記憶装置４０に対する書き出し処理を実行する非同期書き出し処理部１９と、を備える。【選択図】図７
2020170458.tif 000002
【特許請求の範囲】
【請求項１】
第１の記憶装置と第２の記憶装置とに対して、アクセスコマンドに基づく処理を行なう情報処理装置において、
前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出する算出部と、
前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれなかった場合、前記第１の記憶装置から前記第２の記憶装置に対する書き出し処理を実行する非同期書き出し処理部と、
を備えることを特徴とする、情報処理装置。
【請求項２】
前記非同期書き出し処理部は、前記平均間欠時間に基づき算出された起動時刻と現在時刻とを比較して、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれたか否かを判断する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記情報処理装置は、前記第１の記憶装置に対して書き込みを行なう同期書き込み処理部をさらに備え、
前記非同期書き出し処理部は、起動時に、前記同期書き込み処理部が実行中でないことを確認した後に前記第２の記憶装置に対して書き出し処理を実行する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
第１の記憶装置と第２の記憶装置とに対して、アクセスコマンドに基づく処理を行なう情報処理装置のプロセッサに、
前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出し、
前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれなかった場合、前記第１の記憶装置から前記第２の記憶装置へ書き出す、
処理を実行させる、
ことを特徴とする、制御プログラム。
【請求項５】
前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出する処理と、
前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて情報処理装置へのアクセスが行なわれなかった場合、第１の記憶装置から第２の記憶装置への書き出す処理を実行する処理と、
を備えることを特徴とする、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、制御プログラム、及び制御方法に関する。
【背景技術】
【０００２】
高性能計算（ＨＰＣ；high-performance computing）向けの分散並列ストレージシステムでは、クライアントコンピュータ（ノード）のデータを保存するためのストレージを階層化させることでデータへのアクセス性能を向上させる手法の開発が広く行なわれている。
【０００３】
この階層化の手法として、クライアントコンピュータと最終的なデータの保存先であるＨＤＤ（Hard Disk Drive）等の第２階層ストレージとの間に、ＳＳＤ(Solid State Drive)等の高速な第１階層ストレージを備える場合がある。
【０００４】
ジョブが階層化ストレージシステムに書き込みを行なうと、まず第1階層ストレージに書き込みを行なう。第1階層ストレージに書き込まれた情報はジョブの実行終了までに第２階層ストレージに反映される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−９５１９８号公報
【特許文献２】国際公開第２００８／１４９６５７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、ジョブから第１階層ストレージへのアクセス中に第１階層ストレージから第２階層ストレージへの書き出し（非同期書き出し）を行なうと、第1階層ストレージの書き込み速度が低下し、ジョブの処理速度が低下する。
【０００７】
１つの側面では、第１の記憶装置に書き込んだデータの第２の記憶装置への書き出し処理を最適化することを目的とする。
【課題を解決するための手段】
【０００８】
第１の記憶装置と第２の記憶装置とに対して、アクセスコマンドを処理する情報処理装置において、前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出する算出部と、前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれなかった場合、前記第１の記憶装置から前記第２の記憶装置に対する書き出し処理を実行する非同期書き出し処理部と、を備える。
【発明の効果】
【０００９】
一実施形態によれば、第１の記憶装置に書き込んだデータの第２の記憶装置への書き出し処理を最適化することができる。
【図面の簡単な説明】
【００１０】
【図１】実施形態の一例としてのストレージシステムを例示する図である。
【図２】実施形態の一例としてのストレージシステムにおける第１階層ストレージサーバのハードウェア構成を例示する図である。
【図３】実施形態の一例としてのストレージシステムにおける第２階層ストレージサーバのハードウェア構成を例示する図である。
【図４】実施形態の一例としてのストレージシステムにおけるクライアントコンピュータのハードウェア構成を例示する図である。
【図５】実施形態の一例としてのストレージシステムにおけるクライアントコンピュータの機能構成を例示する図である。
【図６】実施形態の一例としてのストレージシステムにおける第１階層ストレージサーバの機能構成を例示する図である。
【図７】実施形態の一例としてのストレージシステムにおける各装置間の通信の概要を説明するための図である。
【図８】実施形態の一例としてのストレージシステムにおけるクライアントコンピュータからのデータアクセス要求と、同期Ｉ／Ｏ処理部における非同期書き出し処理の起動制御との関係を説明するための図である。
【図９】実施形態の一例としてのストレージシステムにおける第２階層ストレージサーバの機能構成を例示する図である。
【図１０】実施形態の一例としてのストレージシステムにおける同期Ｉ／Ｏ処理部における処理を説明するための図である。
【図１１】実施形態の一例としてのストレージシステムにおける同期Ｉ／Ｏ処理部における処理を説明するための図である。
【図１２】実施形態の一例としてのストレージシステムにおける間欠時間の算出を説明するための図である。
【図１３】実施形態の一例としてのストレージシステムにおける非同期Ｉ／Ｏ処理を説明するための図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形や技術の適用を排除する意図等はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の実施形態で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
【００１２】
〔１〕一実施形態
〔１−１〕一実施形態に係るストレージシステムのハードウェア構成例
図１は、実施形態の一例としてのストレージシステム１のハードウェア構成を例示する図である。
【００１３】
この図１に例示するように、ストレージシステム１は、１つ以上の第１階層ストレージサーバ１０（第１階層ストレージサーバ１０−０，・・・，第１階層ストレージサーバ１０−ｎ；ｎは０以上の整数）を備える。
【００１４】
これらの第１階層ストレージサーバ１０−０，・・・，第１階層ストレージサーバ１０−ｎは、それぞれ、第１階層ストレージサーバ＃０,・・・，第１階層ストレージサーバ＃ｎとも表される。以下、１つ以上の第１階層ストレージサーバ１０−０〜１０−ｎを特に区別しない場合には、第１階層ストレージサーバ１０と表記する。なお、“＃”に続く数字（０，・・・，ｎ）は、識別子（ＩＤ）ともいい、第１階層ストレージサーバ１０の特定に用いる。
【００１５】
この第１階層ストレージサーバ１０はストレージ制御装置であり、後述する各ＳＳＤ３０に対するデータの入出力（読み出しや書き込み）を制御する。また、第１階層ストレージサーバ１０は後述するクライアントコンピュータ５０に対して後述するＳＳＤ３０の記憶領域を提供する。
【００１６】
また、各第１階層ストレージサーバ１０は、高速記憶装置として、１つ以上のＳＳＤ３０（ＳＳＤ３０−０，・・・，ＳＳＤ３０−ｎ；ｎは０以上の整数）を備える。これらのＳＳＤ３０−０，・・・，ＳＳＤ３０−ｎは、それぞれ、ＳＳＤ＃０,・・・，ＳＳＤ＃ｎとも表される。以下、１つ以上のＳＳＤ３０−０〜３０−ｎを特に区別しない場合には、ＳＳＤ３０と表記する。なお、“＃”に続く数字（０，・・・，ｎ）は、識別子ともいい、ＳＳＤ３０の特定に用いる。
【００１７】
このＳＳＤ３０は、不揮発性の半導体メモリを記憶素子として備える記憶装置である。なお、図１では、第１階層ストレージサーバ１０にはＳＳＤ３０が備えられる例を示したが、第１階層ストレージサーバ１０に備えられる記憶装置はＳＳＤ３０に限定されない。また、第１階層ストレージサーバ１０に備えられる記憶装置は、後述するＨＤＤ４０に比べて、読み書き速度が速いが書き込み容量が小さい特性を備える他の記憶装置であってもよい。
【００１８】
また、この図１に示すように、ストレージシステム１は、１つ以上の第２階層ストレージサーバ２０（第２階層ストレージサーバ２０−０，・・・，第２階層ストレージサーバ２０−ｎ；ｎは０以上の整数）を備える。
【００１９】
これらの第２階層ストレージサーバ２０−０，・・・，第２階層ストレージサーバ２０−ｎは、それぞれ、第２階層ストレージサーバ＃０,・・・，第２階層ストレージサーバ＃ｎとも表される。以下、１つ以上の第２階層ストレージサーバ２０−０〜２０−ｎを特に区別しない場合には、第２階層ストレージサーバ２０と表記する。なお、“＃”に続く数字（０，・・・，ｎ）は、識別子ともいい、第２階層ストレージサーバ２０の特定に用いる。
【００２０】
この第２階層ストレージサーバ２０はストレージ制御装置であり、後述する各ＨＤＤ４０に対するデータの入出力を制御する。また、第２階層ストレージサーバ２０は、後述するクライアントコンピュータ５０の最終的なデータの保存先として、後述するＨＤＤ４０の記憶領域を提供する。
【００２１】
また、各第２階層ストレージサーバ２０は、低速記憶装置として、１つ以上のＨＤＤ４０（ＨＤＤ４０−０，・・・，ＨＤＤ４０−ｎ；ｎは０以上の整数）を備える。これらのＨＤＤ４０−０，・・・，ＨＤＤ４０−ｎは、それぞれ、ＨＤＤ＃０,・・・，ＨＤＤ＃ｎとも表される。以下、１つ以上のＨＤＤ４０−０〜４０−ｎを特に区別しない場合には、ＨＤＤ４０と表記する。なお、“＃”に続く数字（０，・・・，ｎ）は、識別子ともいい、ＨＤＤ４０の特定に用いる。
【００２２】
このＨＤＤ４０は、磁気ディスク装置である。なお、図１では、第２階層ストレージサーバ２０にはＨＤＤ４０が備えられる例を示したが、第２階層ストレージサーバ２０に備えられる記憶装置はＨＤＤ４０に限定されない。また、第２階層ストレージサーバ２０に備えられる記憶装置は、ＳＳＤ３０に比べて、読み書き速度が遅いが書き込み容量が大きい特性を備える他の記憶装置であってもよい。
【００２３】
また、この図１に示すように、ストレージシステム１は、１つ以上のクライアントコンピュータ５０（クライアントコンピュータ５０−０，・・・，クライアントコンピュータ５０−ｍ；ｍは０以上の整数）を備える。
【００２４】
これらのクライアントコンピュータ５０−０，・・・，クライアントコンピュータ５０−ｍは、それぞれ、クライアントコンピュータ＃０,・・・，クライアントコンピュータ＃ｍとも表される。以下、１つ以上のクライアントコンピュータ５０−０〜５０−ｍを特に区別しない場合には、クライアントコンピュータ５０と表記する。なお、“＃”に続く数字（０，・・・，ｍ）は、識別子ともいい、クライアントコンピュータ５０の特定に用いる。
【００２５】
クライアントコンピュータ５０は、サーバ機能を有するコンピュータであってもよく、第１階層ストレージサーバ１０に対してデータアクセスを要求する。このデータアクセス要求（アクセスコマンド）は、Ｉ／Ｏ要求やファイルアクセス要求ともいい、書き込み（ライト；ｗｒｉｔｅ）要求や読み出し（リード，読み込み；ｒｅａｄ）要求を含んでもよい。なお、本システムでは、クライアントコンピュータ５０は、複数の第１階層ストレージサーバ＃０〜＃ｎのうちいずれの第１階層ストレージサーバ１０にアクセスしてもよいものとするが、これに限られない。
【００２６】
なお、本システムにおいて、第１階層ストレージサーバ１０が備えるＳＳＤ３０へのライトを書き込みという。また、第１階層ストレージサーバ１０のＳＳＤ３０へライトしたデータを、第２階層ストレージサーバ２０が備えるＨＤＤ４０にライトすることを書き出し、または、ライトバックといってもよい。
【００２７】
なお、この図１では、各第１階層ストレージサーバ１０が、高速記憶装置として１つのＳＳＤ３０を備える例を示したが、これに限定されない。各第１階層ストレージサーバ１０は２つ以上のＳＳＤ３０を備えてもよく、第１階層ストレージサーバ１０毎に備えられるＳＳＤ３０の数が異なってもよい。
【００２８】
なお、図１では、各第２階層ストレージサーバ２０が、低速記憶装置として、１つのＨＤＤ４０を備える例を示したが、これに限定されない。各第２階層ストレージサーバ２０は２つ以上のＨＤＤ４０を備えてもよく、第２階層ストレージサーバ２０毎に備えられるＨＤＤ４０の数が異なってもよい。また、本ストレージシステム１に備えられる第１階層ストレージサーバ１０と第２階層ストレージサーバ２０との数は同一でなくてもよい。
【００２９】
また、第１階層ストレージサーバ１０、第２階層ストレージサーバ２０、及び、クライアントコンピュータ５０は図示しないネットワークを介して、例えば、システム管理者が用いる図示しない管理端末と接続されてもよい。
【００３０】
〔１−２〕一実施形態に係るストレージシステムにおける各装置のハードウェア構成例
上述したストレージシステム１における各装置（第１階層ストレージサーバ１０，第２階層ストレージサーバ２０，クライアントコンピュータ５０）のハードウェア構成について説明する。
【００３１】
図２は、実施形態の一例としてのストレージシステム１における第１階層ストレージサーバ１０のハードウェア構成を例示する図である。
【００３２】
この図２を用いて、図１に示す第１階層ストレージサーバ１０のハードウェア構成について説明する。本システムでは、図１に例示する複数の第１階層ストレージサーバ１０のそれぞれが、図２に例示するハードウェア構成を備えるものとする。
【００３３】
第１階層ストレージサーバ１０は、例示的に、ＣＰＵ（Central Processing Unit）１１、記憶部１２、メモリ１３、ＩＦ（Interface）部１４、及び、入力部１５を備えてよい。
【００３４】
ＣＰＵ１１は、後述する記憶部１２に格納されるＯＳ（Operating System）や第１制御プログラム９０（後述）を実行し、例えば、クライアントコンピュータ５０からの指示に応じ、例えば、ＳＳＤ３０を制御する演算処理装置（プロセッサ）である。
【００３５】
記憶部１２は、種々のデータやプログラム等を格納するハードウェアの一例である。例えば、記憶部１２は、第１階層ストレージサーバ１０の二次記憶装置として使用されてよい。また、この記憶部１２は、ＯＳやファームウェア、アプリケーション等のプログラム、及び、各種データが格納されてよい。記憶部１２としては、例えば、ＨＤＤの他、ＳＳＤやＳＣＭ（Storage Class Memory）等の他の記憶装置であってもよい。記憶部１２は、第１階層ストレージサーバ１０の各種機能の全部若しくは一部を実現するプログラム（第１制御プログラム９０）を格納してもよい。
【００３６】
メモリ１３は、種々のデータやプログラム等を格納するハードウェアの一例である。メモリ１３としては、ＲＡＭ（Random Access Memory）等の揮発性メモリや、フラッシュメモリ、ＳＣＭ、及び、ＲＯＭ（Read Only Memory）等の不揮発性メモリが挙げられる。また、メモリ１３は、第１制御プログラム９０を格納してもよく、メモリ１３のＲＡＭは一次記憶メモリあるいはワーキングメモリとして利用してもよい。
【００３７】
ＩＦ部１４は、第２階層ストレージサーバ２０、クライアントコンピュータ５０、及び、図示しない管理装置との間の接続及び通信の制御等を行なう通信インタフェースの一例である。また、ＩＦ部１４は、他の第１階層ストレージサーバ１０との間の接続及び通信の制御等を行なう通信インタフェースとして機能してもよい。
【００３８】
このＩＦ部１４は、例えば、図示しない管理装置を接続するためのアダプタ（ポート）を備えてもよい。ＩＦ部１４は、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）インタフェースや光通信インタフェースを備えてもよい。なお、第１制御プログラム９０は、図示しないネットワークから当該ＩＦ部１４を介してダウンロードされてもよい。
【００３９】
入力部１５は、例えば、マウス、キーボード、タッチパネル、及び、操作ボタン等の入力装置のうちの少なくともいずれか一つを含んでよい。
【００４０】
上述した第１階層ストレージサーバ１０のハードウェア構成は例示である。したがって、第１階層ストレージサーバ１０内でのハードウェアの増減（例えば、任意のブロックの追加や省略）、分割、及び、任意の組み合わせでの統合等は適宜行なわれてもよい。また、第１階層ストレージサーバ１０は、ディスプレイや、プロジェクタ、スピーカ、及び、プリンタ等の出力装置を備える表示部を備えてもよい。
【００４１】
次に、図３を用いて、図１に示す第２階層ストレージサーバ２０のハードウェア構成を説明する。
【００４２】
図３は、実施形態の一例としてのストレージシステム１における第２階層ストレージサーバ２０のハードウェア構成を例示する図である。
【００４３】
第２階層ストレージサーバ２０は、例えば、サーバ機能を備えるコンピュータ（情報処理装置）であり、例示的に、ＣＰＵ２１、記憶部２２、メモリ２３、ＩＦ部２４、及び、入力部２５を備えてよい。なお、記憶部２２、メモリ２３、及び、入力部２５は、それぞれ、図２を用いて説明した第１階層ストレージサーバ１０の記憶部１２、メモリ１３、及び、入力部１５と概ね同様であるので説明を省略する。
【００４４】
ＣＰＵ２１は、記憶部２２に格納されるＯＳや第２制御プログラム９１を実行し、例えば、第１階層ストレージサーバ１０からの要求に応じ、ＨＤＤ４０へのアクセスを実行すべくＨＤＤ４０を制御する。本システムでは、ＣＰＵ２１は、記憶部２２に格納される第２制御プログラム９１を実行する。
【００４５】
ＩＦ部２４は、第１階層ストレージサーバ１０、及び、図示しない管理装置との間の接続及び通信の制御等を行なう通信インタフェースの一例である。また、ＩＦ部２４は、他の第２階層ストレージサーバ２０との間の接続及び通信の制御等を行なう通信インタフェースとして機能してもよい。
【００４６】
このＩＦ部２４は、例えば、図示しない管理装置を接続するためのアダプタ（ポート）を備えてもよい。ＩＦ部２４は、例えば、ＰＣＩｅインタフェースや光通信インタフェースを備えてもよい。なお、記憶部２２に格納される第２制御プログラム９１は、図示しないネットワークから当該ＩＦ部２４を介してダウンロードされてもよい。
【００４７】
次に、図４を用いて、図１に示すクライアントコンピュータ５０のハードウェア構成を説明する。
【００４８】
図４は、実施形態の一例としてのストレージシステム１におけるクライアントコンピュータ５０のハードウェア構成を例示する図である。
【００４９】
クライアントコンピュータ５０は、例えば、サーバ機能を備えるコンピュータ（情報処理装置）であり、例示的に、ＣＰＵ５１、記憶部５２、メモリ５３、ＩＦ部５４、及び、入力部５５を備えてよい。なお、記憶部５２、メモリ５３、及び、入力部５５は、それぞれ、図２を用いて説明した第１階層ストレージサーバ１０の記憶部１２、メモリ１３、及び、入力部１５と概ね同様であるので説明を省略する。
【００５０】
ＣＰＵ５１は、記憶部５２に格納されるＯＳやクライアントプログラム９２を実行し、第１階層ストレージサーバ１０に対する要求の送信や、データの授受を行なう。本システムでは、ＣＰＵ５１は、記憶部５２に格納されるクライアントプログラム９２を実行する。
【００５１】
ＩＦ部５４は、第１階層ストレージサーバ１０との間の接続及び通信の制御等を行なう通信インタフェースの一例である。また、ＩＦ部５４は、他のクライアントコンピュータ５０との間の接続及び通信の制御等を行なう通信インタフェースとして機能してもよい。
【００５２】
このＩＦ部５４は、例えば、図示しない管理装置を接続するためのアダプタ（ポート）を備えてもよい。ＩＦ部５４は、例えば、ＰＣＩｅインタフェースや光通信インタフェースを備えてもよい。なお、記憶部５２に格納されるクライアントプログラム９２は、図示しないネットワークから当該ＩＦ部５４を介してダウンロードされてもよい。
【００５３】
〔１−３〕一実施形態に係るストレージシステムにおける各装置の機能構成例
上述したストレージシステム１における各装置（クライアントコンピュータ５０，第１階層ストレージサーバ１０，第２階層ストレージサーバ２０）の機能構成について説明する。
【００５４】
図５は、実施形態の一例としてのストレージシステム１におけるクライアントコンピュータ５０の機能構成を例示する図である。
【００５５】
この図５を用いて、図１に示すクライアントコンピュータ５０の機能構成を説明する。本システムでは、図１に例示する複数のクライアントコンピュータ５０のそれぞれが、図５に示す機能構成を備えるものとする。
【００５６】
図５に例示するように、クライアントコンピュータ５０は、例示的に、要求発行部５６、及び、通信制御部５７を備えてもよい。
【００５７】
要求発行部５６は、第１階層ストレージサーバ１０が備えるＳＳＤ３０に格納されるデータにアクセスするために、当該第１階層ストレージサーバ１０に対して、データアクセスの要求を発行する。本システムにおいて、このデータアクセス要求は、公知の書き込み（ｗｒｉｔｅ）のシステムコールや、公知の読み出し（ｒｅａｄ）のシステムコールを用いて実行される。なお、この要求発行部５６は、ＯＳ空間で実行されるクライアントプログラム９２として実現されてよい。
【００５８】
通信制御部５７は、第１階層ストレージサーバ１０と通信を行ない、上述の要求発行部５６によって要求されたデータアクセス要求を第１階層ストレージサーバ１０に対して送信する。この通信制御部５７は、例えば、ネットワークアダプタ等のドライバとして実現されてよい。
【００５９】
この通信制御部５７は、要求発行部５６による複数のシステムコールを、書き込みと読み出しとでそれぞれ１つに纏めてもよい。また、通信制御部５７は、システムコールによって指定されたデータの長さが所定のパケット長を超える場合には、データアクセス要求を所定のパケット長に分割してから、第１階層ストレージサーバ１０に送信してもよい。
【００６０】
次に、図７を参照しながら、図６を用いて、図１に示す第１階層ストレージサーバ１０の機能構成を説明する。
【００６１】
図６は、実施形態の一例としてのストレージシステム１における第１階層ストレージサーバ１０の機能構成を例示する図である。本システムでは、図１に例示する複数の第１階層ストレージサーバ１０のそれぞれが、図６に示す機能構成を備えるものとする。
【００６２】
図７は、本ストレージシステム１における各装置間の通信の概要を例示する図である。
【００６３】
図６に例示するように、第１階層ストレージサーバ１０は、例示的に、通信制御部１６、同期Ｉ／Ｏ処理部１７、デバイス制御部１８、及び、非同期書き出し処理部１９を備えてもよい。
【００６４】
通信制御部１６は、クライアントコンピュータ５０との通信を行ない、クライアントコンピュータ５０からのデータアクセス要求を受信する（図７の矢印Ｐ１参照）。
【００６５】
通信制御部１６は、クライアントコンピュータ５０から受信したデータアクセス要求を後述の同期Ｉ／Ｏ処理部１７に対して送信する（図７の矢印Ｐ１参照）。そして、通信制御部１６は、後述の同期Ｉ／Ｏ処理部１７から読み出し要求を受信すると、当該読み出し要求を第２階層ストレージサーバ２０に送信する（図７の矢印Ｐ２参照）。さらに、通信制御部１６は、アクセス対象（読み出し対象）のデータを第２階層ストレージサーバ２０から受信し（図７の矢印Ｐ２参照）、クライアントコンピュータ５０に送信する（図７の矢印Ｐ１参照）。
【００６６】
また、通信制御部１６は後述の非同期書き出し処理部１９から非同期書き出し指示を受信すると、第２階層ストレージサーバ２０と通信し、書き出し対象データを第２階層ストレージサーバ２０に送信する（図７の矢印Ｐ３参照）。
【００６７】
また、通信制御部１６は、読み出しや書き込み等のＩ／Ｏ要求に対する処理を完了した通知（Ｉ／Ｏ要求完了通知）をクライアントコンピュータ５０に対して送信してもよい。
【００６８】
同期Ｉ／Ｏ処理部１７は、クライアントコンピュータ５０からのデータアクセス要求を受信した後、遅滞することなく当該要求の処理を実行する。
【００６９】
本システムにおいて、このように、クライアントコンピュータ５０からのデータアクセス要求を受信した後、遅滞することなく当該要求を処理すること、すなわち、データアクセス要求に同期して当該要求を処理することを同期Ｉ／Ｏ処理という。この同期Ｉ／Ｏ処理は、同期Ｉ／Ｏ処理部１７によって実行される。
【００７０】
例えば、第１階層ストレージサーバ１０において、同期Ｉ／Ｏ処理部１７がクライアントコンピュータ５０からのデータ書き込み要求を受信すると、遅滞することなくＳＳＤ３０に対してデータを書き込む（図７の矢印Ｐ１参照）。
【００７１】
一方、第１階層ストレージサーバ１０のＳＳＤ３０から、第２階層ストレージサーバ２０のＨＤＤ４０へのデータの書き出しは、クライアントコンピュータ５０からの要求とは非同期に行なわれる。したがって、本システムにおいて、このＨＤＤ４０へのデータの書き出しを非同期書き出し処理、または、非同期Ｉ／Ｏ処理という。この非同期書き出し処理は、同期Ｉ／Ｏ処理部１７が後述する非同期書き出し処理部１９を起動することを契機として開始され、非同期書き出し処理部１９によって実行される。
【００７２】
同期Ｉ／Ｏ処理部１７は、クライアントコンピュータ５０からのデータアクセス要求が読み出し要求である場合、読み出し対象データが第１階層ストレージサーバ１０のＳＳＤ３０に格納されているか否かを判断する。なお、読み出し対象データが第１階層ストレージサーバ１０のＳＳＤ３０に格納されているか否かの判断は公知の手法を用いて実現できるので、ここではその具体的な説明を省略する。
【００７３】
読み出し対象データが第１階層ストレージサーバ１０のＳＳＤ３０に格納されている場合、同期Ｉ／Ｏ処理部１７はクライアントコンピュータ５０からの読み出し要求を処理すべく、後述するデバイス制御部１８を介しＳＳＤ３０から読み出し対象データを取得する。そして、同期Ｉ／Ｏ処理部１７は、取得した読み出し対象データを、通信制御部１６を介してクライアントコンピュータ５０に送信する（図７の矢印Ｐ１参照）。
【００７４】
一方、読み出し対象データが第１階層ストレージサーバ１０のＳＳＤ３０に格納されていない場合、同期Ｉ／Ｏ処理部１７は、通信制御部１６を介して、当該読み出し要求を第２階層ストレージサーバ２０に送信する（図７の矢印Ｐ２参照）。
【００７５】
なお、同期Ｉ／Ｏ処理部１７は、ＳＳＤ３０や第２階層ストレージサーバ２０からの対象データの読み出しが完了すると、通信制御部１６を介して、読み出し完了通知（Ｉ／Ｏ要求完了通知）をクライアントコンピュータ５０に対して送信してもよい。
【００７６】
クライアントコンピュータ５０からのデータアクセス要求が書き込み要求である場合、同期Ｉ／Ｏ処理部１７は、書き込み対象データを第１階層ストレージサーバ１０のＳＳＤ３０へ格納する指示と共に、書き込み対象データをデバイス制御部１８に対して送信する。そして、同期Ｉ／Ｏ処理部１７は、ＳＳＤ３０への書き込み処理が完了すると、書き込み完了通知（Ｉ／Ｏ要求完了通知）を通信制御部１６を介してクライアントコンピュータ５０に対して送信してもよい。
【００７７】
また、本システムでは、同期Ｉ／Ｏ処理部１７によってＳＳＤ３０へのデータアクセス（同期Ｉ／Ｏ処理）が実行されているか否か（実行中か否か）を示す同期Ｉ／Ｏ中フラグを設ける。同期Ｉ／Ｏ処理部１７が同期Ｉ／Ｏ処理（データアクセス）を実行中である場合には、同期Ｉ／Ｏ処理部１７は、同期Ｉ／Ｏ中フラグに、例えば“１”を設定する。一方、同期Ｉ／Ｏ処理部１７が同期Ｉ／Ｏ処理（データアクセス）を実行中でない場合には、同期Ｉ／Ｏ処理部１７は、同期Ｉ／Ｏ中フラグに、例えば“０”を設定する。
【００７８】
なお、この同期Ｉ／Ｏ中フラグに設定する値は“０”や“１”に限らず、同期Ｉ／Ｏ処理部１７による同期Ｉ／Ｏ処理（データアクセス）が実行中か否かを判断できるものであればよい。また、本システムの起動時には、同期Ｉ／Ｏ中フラグには“０”（初期値）が設定されるものとする。また、この同期Ｉ／Ｏ中フラグに設定する値は、第１階層ストレージサーバ１０のメモリ１３に格納されてもよいが、これに限られない。
【００７９】
また、同期Ｉ／Ｏ処理部１７は、ＳＳＤ３０への同期Ｉ／Ｏ処理（データアクセス）の実行を開始する前に、同期Ｉ／Ｏ中フラグに“１”を設定する。また、同期Ｉ／Ｏ処理部１７は、ＳＳＤ３０への同期Ｉ／Ｏ処理（データアクセス）を完了した後、同期Ｉ／Ｏ中フラグに“０”を設定する。
【００８０】
本システムでは、ＳＳＤ３０へデータが書き込まれた後、非同期的に、第２階層ストレージサーバ２０が備えるＨＤＤ４０へデータを書き出すが、ＨＤＤ４０への書き出し処理を最適化するために、同期Ｉ／Ｏ処理部１７ではこのタイミングを制御する。上述したとおり、本システムにおいて、第２階層ストレージサーバ２０が備えるＨＤＤ４０へのデータの書き込み指示は、非同期書き出し処理部１９によって行なわれる。そのため、同期Ｉ／Ｏ処理部１７では、非同期書き出し処理を実行するタイミング、すなわち、非同期書き出し処理部１９を起動するタイミング（非同期書き出し処理部１９に対して当該指示を出すタイミング）を制御する。
【００８１】
同期Ｉ／Ｏ処理部１７による、この非同期書き出し処理の起動制御について図８を参照しながら説明する。
【００８２】
図８は、実施形態の一例としてのストレージシステム１におけるクライアントコンピュータ５０からのデータアクセス要求と、同期Ｉ／Ｏ処理部１７による非同期書き出し処理の起動制御との関係を説明するための図である。
【００８３】
この図８は、クライアントコンピュータ５０におけるジョブが、データアクセス要求，演算，データアクセス要求，演算，・・・の繰り返し（ループ）により構成されていることを例示している。図８に例示するように、この各データアクセス要求は、データの書き込み要求または読み出し要求である。
【００８４】
また、図８に例示するように、第１階層ストレージサーバ１０は、クライアントコンピュータ５０から連続してデータアクセス要求を受信する場合がある。２つのデータアクセス要求の間には、所定時間に一定のデータアクセス要求がない時間帯、すなわち、間欠時間がある。複数のデータアクセス要求間での間欠時間がしきい値よりも小さい状態が継続する場合には、これらの連続するデータアクセス要求をバーストＩ／Ｏという。なお、このバーストＩ／Ｏは、１つ以上の書き込み要求または１つ以上の読み出し要求のジョブであってもよいし、１つ以上の書き込み要求と１つ以上の読み出し要求とが混在したジョブであってもよい。
【００８５】
クライアントコンピュータ５０がバーストＩ／Ｏに係るジョブを実行している間は、第１階層ストレージサーバ１０において、当該ジョブに係るデータの書き込みや読み出しを行なう。そのため、この期間においては、これらのジョブが第１階層ストレージサーバ１０のＣＰＵ１１やメモリ１３，ＳＳＤ３０等を概ね占有する。
【００８６】
そこで、本システムでは、第１階層ストレージサーバ１０におけるＳＳＤ３０に対するデータの書き込みや読み出し処理と、第２階層ストレージサーバ２０のＨＤＤ４０への書き出し処理が重複することを回避する。そこで、同期Ｉ／Ｏ処理部１７は、随時間欠時間を算出し、算出した間欠時間がしきい値以下の場合、バーストＩ／Ｏが発生していると判断する。この場合、同期Ｉ／Ｏ処理部１７は、バーストＩ／Ｏに係るジョブ以外のジョブを実行しない、つまり、第２階層ストレージサーバ２０へのデータの書き出しを抑止する。これにより、ＳＳＤ３０に対する書き込みや読み出しの速度を維持することができ、ジョブの処理速度が低下することを回避できる。
【００８７】
一方、同期Ｉ／Ｏ処理部１７は、算出した間欠時間がしきい値よりも大きい場合、バーストＩ／Ｏが発生していないと判断する。この場合、同期Ｉ／Ｏ処理部１７は、バーストＩ／Ｏに係るジョブ以外のジョブを実行する。つまり、同期Ｉ／Ｏ処理部１７は、バーストＩ／Ｏが発生していない期間は、ＳＳＤ３０に対するジョブが発生していないことから、その間に、第２階層ストレージサーバ２０へのデータの書き出し（非同期書き出し）を行なうよう制御する。これにより、ＳＳＤ３０に対する書き込みや読み出しの速度やジョブの処理速度に影響を与えずに、第２階層ストレージサーバ２０へのデータの書き出すことが可能となる。
【００８８】
なお、この同期Ｉ／Ｏ処理部１７は、カーネルスレッドとして実現されてよい。
【００８９】
デバイス制御部１８は、同期Ｉ／Ｏ処理部１７からの指示を受け、ＳＳＤ３０へのアクセス（書き込みや読み出し）を制御する。なお、このデバイス制御部１８は、ＳＳＤ３０の（デバイス）ドライバとして実現されてよい。
【００９０】
非同期書き出し処理部１９は、同期Ｉ／Ｏ処理部１７によって起動され、非同期書き出し処理（非同期Ｉ／Ｏ処理）を実行する。なお、非同期書き出し処理部１９は、第２階層ストレージサーバ２０へ書き出す対象となるデータが第１階層ストレージサーバ１０に存在していない間はスリープする。
【００９１】
また、非同期書き出し処理部１９は、同期Ｉ／Ｏ処理部１７から第２階層ストレージサーバ２０のＨＤＤ４０に対する書き出しを依頼されると、書き出し対象データが第２階層ストレージサーバ２０のＨＤＤ４０に書き出されているか否かを判断する。言い換えると、非同期書き出し処理部１９は、当該書き出し対象データが、ＨＤＤ４０に書き出されていない（格納されていない）データ、すなわち、未書き出しデータ（ブロック）であるか否かを判断する。なお、非同期書き出し処理部１９は、書き出し対象データが第２階層ストレージサーバ２０のＨＤＤ４０に格納されているか否かをデータブロック毎に管理している。この未書き出しデータの判断は公知の手法を用いて実現できるので、ここではその具体的な説明を省略する。
【００９２】
非同期書き出し処理部１９は、書き出し対象データが未書き出しデータであると判断した場合、当該書き出し対象データを第２階層ストレージサーバ２０のＨＤＤ４０に書き出す処理を行なう。具体的に、非同期書き出し処理部１９は、通信制御部１６を介して第２階層ストレージサーバ２０に対し、例えば、書き出しの指示（非同期書き出し指示）を送信する（図７の矢印Ｐ３参照）。そして、第２階層ストレージサーバ２０のＩ／Ｏ処理部２７（後述）は、デバイス制御部２８を介してＨＤＤ４０に対して書き出し対象データの書き出しを行なう。
【００９３】
なお、この非同期書き出し処理部１９は、カーネルスレッドとして実現されてよく、同期Ｉ／Ｏ処理部１７とのメモリ共有が可能である。
【００９４】
また、本システムでは、非同期書き出し処理部１９が同期Ｉ／Ｏ処理部１７によって起動されているか、すなわち、非同期書き出し処理部１９が実行中（稼働中）であるか否かを示す非同期書き出し稼働中フラグを設ける。非同期書き出し処理部１９が同期Ｉ／Ｏ処理部１７によって起動されると、同期Ｉ／Ｏ処理部１７は、非同期書き出し稼働中フラグに、例えば“１”を設定する。一方、非同期書き出し処理部１９が同期Ｉ／Ｏ処理部１７によって起動されていない場合には、同期Ｉ／Ｏ処理部１７は、非同期書き出し稼働中フラグに、例えば“０”を設定する。なお、この非同期書き出し稼働中フラグに設定する値は、第１階層ストレージサーバ１０のメモリ１３に格納されてもよいが、これに限られない。
【００９５】
この非同期書き出し稼働中フラグに設定する値は“０”や“１”に限らず、非同期書き出し処理部１９が実行中か否かを判断できるものであればよい。なお、非同期書き出し稼働中フラグは、本システムの起動時や、非同期書き出し処理部１９による処理（稼働）が終了してスリープする際には“０”が設定される（解除される）ものとする。
【００９６】
次に、本ストレージシステムに係る第２階層ストレージサーバ２０の機能構成について、図９を用いて説明する。
【００９７】
図９は、図１に示す実施形態の一例としての第２階層ストレージサーバ２０の機能構成を例示する図である。本システムでは、図１に例示する複数の第２階層ストレージサーバ２０のそれぞれが、図９に示す機能構成を備えるものとする。
【００９８】
図９に例示するように、第２階層ストレージサーバ２０は、例示的に、通信制御部２６、Ｉ／Ｏ処理部２７、及び、デバイス制御部２８を備えてもよい。
【００９９】
通信制御部２６は、第１階層ストレージサーバ１０との通信を行ない、クライアントコンピュータ５０からの読み出し要求や、ＨＤＤ４０への書き出しの指示（非同期書き出し指示）を受信する。
【０１００】
また、通信制御部２６が第１階層ストレージサーバ１０から、クライアントコンピュータ５０からの読み出し要求を受信すると、ＨＤＤ４０から読み出されたデータ（読み出し対象データ）を第１階層ストレージサーバ１０に対し送信する（図７の矢印Ｐ２参照）。
【０１０１】
また、通信制御部２６が、ＨＤＤ４０への書き出しの指示（非同期書き出し指示）を受信した場合、この非同期書き出し指示をＩ／Ｏ処理部２７に対して送信する（図７の矢印Ｐ３参照）。
【０１０２】
また、通信制御部２６は、読み出しや書き込み等のＩ／Ｏを完了した通知（Ｉ／Ｏ要求完了通知）を第２階層ストレージサーバ２０に対して送信してもよい。
【０１０３】
Ｉ／Ｏ処理部２７は、クライアントコンピュータ５０からの読み出し要求や、ＨＤＤ４０への書き出しの指示（非同期書き出し指示）を処理する。
【０１０４】
Ｉ／Ｏ処理部２７は、クライアントコンピュータ５０からの読み出し要求を受信した場合、当該読み出し要求を処理すべく、後述するデバイス制御部２８を介してＨＤＤ４０から読み出し対象データを取得する。そして、Ｉ／Ｏ処理部２７は、取得した読み出し対象データを、通信制御部２６を介して第１階層ストレージサーバ１０に送信する（図７の矢印Ｐ２参照）。
【０１０５】
なお、Ｉ／Ｏ処理部２７は、読み出し対象データの送信が完了すると、通信制御部１６を介して、読み出し完了通知（Ｉ／Ｏ要求完了通知）を第１階層ストレージサーバ１０に対して送信してもよい。
【０１０６】
Ｉ／Ｏ処理部２７は、ＨＤＤ４０への書き出しの指示（非同期書き出し指示）を受信した場合、書き出し対象データをＨＤＤ４０へ格納する指示と共に、書き出し対象データをデバイス制御部２８に対して送信する（図７の矢印Ｐ３参照）。そして、Ｉ／Ｏ処理部２７は、書き出し処理が完了すると、通信制御部２６を介して、書き出し完了通知を第１階層ストレージサーバ１０に対して送信してもよい。
【０１０７】
デバイス制御部２８は、Ｉ／Ｏ処理部２７からの指示を受け、ＨＤＤ４０へのアクセス（書き込みや読み出し）を制御する。なお、このデバイス制御部２８は、ＨＤＤ４０の（デバイス）ドライバとして実現されてよい。
【０１０８】
〔１−４〕一実施形態に係るストレージシステムにおける同期Ｉ／Ｏ処理
上述の如く構成された実施形態の一例としてのストレージシステム１における同期Ｉ／Ｏ処理を、図１２を参照しながら、図１０及び図１１に示すフローチャート（ステップＳ１〜Ｓ１７）に従って説明する。
【０１０９】
なお、図１０は、ステップＳ１〜Ｓ１０の処理を例示し、図１１は、ステップＳ１１〜Ｓ１７の処理を例示する。同期Ｉ／Ｏ処理は、第１階層ストレージサーバ１０の同期Ｉ／Ｏ処理部１７により実行される。したがって、図１０、及び、図１１に示すフローチャートは、第１階層ストレージサーバ１０の同期Ｉ／Ｏ処理部１７による処理を例示するものである。
【０１１０】
図１２は、一実施形態に係るストレージシステム１における間欠時間の算出を説明するための図である。
【０１１１】
図１０の結合子“Ｄ１”は、図１１の結合子“Ｄ１”への入口を示しており、図１０に例示するステップＳ１０の処理に続けて、図１１（Ｓ１１〜Ｓ１７）に例示する処理を経ることにより、データの書き込み処理を実行するものとする。
【０１１２】
また、図１０に例示する処理は、クライアントコンピュータ５０が第１階層ストレージサーバ１０に対してデータアクセス（データの書き込み）を要求したことを契機として開始される。したがって、同期Ｉ／Ｏ処理部１７は、クライアントコンピュータ５０からの要求を受信するまではスリープしているものとする。
【０１１３】
図１０のステップＳ１において、同期Ｉ／Ｏ処理部１７は、第１階層ストレージサーバ１０の通信制御部１６を介してクライアントコンピュータ５０からのデータアクセス（データの書き込み）要求を受信する。
【０１１４】
続く図１０のステップＳ２において、同期Ｉ／Ｏ処理部１７は、同期Ｉ／Ｏ中フラグに“１”を設定する。これにより、同期Ｉ／Ｏ処理部１７が同期Ｉ／Ｏ処理を実行中であることが明示される。
【０１１５】
続く図１０のステップＳ３において、同期Ｉ／Ｏ処理部１７は、現在時刻を示す変数であるＴ＿ｂｅｇｉｎ（ｎ）に、現在のタイムスタンプの値（現在時刻）を代入する。上記Ｔ＿ｂｅｇｉｎ（ｎ）中の変数ｎは間欠時間の測定回数を示すカウンタとして機能し、ｎには０以上の整数が入力される。なお、ｎには初期値として“０”が代入される。なお、この現在のタイムスタンプの取得は既知の手法で実現することでき、その説明は省略する。なお、本実施形態において、間欠時間の測定回数はＣ（回）とし（Ｃは２以上の整数）、図１０，図１１では、Ｃ＝１０（回）の例を示すが、これに限られない。
【０１１６】
続く図１０のステップＳ４で、同期Ｉ／Ｏ処理部１７は、１つ前（前回）の要求に対する処理が終了した時刻を示す変数であるＴ＿ｅｎｄ（ｎ−１）をＴ＿ｂｅｇｉｎ（ｎ）から差し引くことにより、当該要求と前回の要求との差分時間を間欠時間として算出する。なお、１回目の要求よりも前の要求は存在しないため、Ｔ＿ｅｎｄ（−１）には初期値として“０”が代入される。
【０１１７】
ここで図１２を参照すると、２回目の書き込みが要求された場合、この要求の処理を開始する時刻はｘであり、当該要求より１つ前の要求（１回目の書き込み要求）の処理を完了した時刻はｙである。このことから、同期Ｉ／Ｏ処理部１７は、このステップＳ３では、ｘからｙを差し引くことにより、１回目と２回目との要求間の間欠時間を求めることになる（図１２の矢印Ｐ４参照）。
【０１１８】
そして、同期Ｉ／Ｏ処理部１７は、算出した間欠時間がしきい値Ｔｍａｘ以下であるか否かを判断する。算出した間欠時間がしきい値Ｔｍａｘ以下である場合（ステップＳ４におけるＹｅｓルート参照）、処理が図１０のステップＳ５に移行する。なお、しきい値Ｔｍａｘは、当該システムの稼働状況に応じた間欠時間（例えば、５秒）が設定されるものとし、この値は適宜設定または変更されてもよい。
【０１１９】
続く図１０のステップＳ５において、同期Ｉ／Ｏ処理部１７は、上述したステップＳ４で算出した間欠時間を配列Ａｒｒａｙ［ｎ］に格納する。上述したように、間欠時間の測定回数が１０回である場合には、配列Ａｒｒａｙ［０］〜Ａｒｒａｙ［９］に計測した各間欠時間が格納される。そして、処理が図１０のステップＳ７に移行する。
【０１２０】
一方、上述したステップＳ４において、算出した間欠時間がしきい値Ｔｍａｘよりも大きい場合（ステップＳ４におけるＮｏルート参照）、処理が図１０のステップＳ６に移行する。図１２を参照すると、１回目の書き込み要求時には、ｘから“０”を差し引いた値を求めることになり、その値はしきい値Ｔｍａｘより大きくなるから、処理が図１０のステップＳ６に移行する。
【０１２１】
続く図１０のステップＳ６において、同期Ｉ／Ｏ処理部１７は、ｎに「−１」を代入する。
【０１２２】
続く図１０のステップＳ７において、同期Ｉ／Ｏ処理部１７は、ＳＳＤ３０に対するＩ／Ｏ処理（書き込みや読み出し）を実行する。
【０１２３】
続く図１０のステップＳ８において、同期Ｉ／Ｏ処理部１７は、Ｔ＿ｅｎｄ（ｎ）に現在のタイムスタンプの値（現在時刻）を代入する。すなわち、今回のＩ／Ｏ処理の完了時刻（終了時刻）がＴ＿ｅｎｄ（ｎ）に代入される。
【０１２４】
続く図１０のステップＳ９において、同期Ｉ／Ｏ処理部１７は、ｎの値をインクリメントする。
【０１２５】
続く図１０のステップＳ１０において、同期Ｉ／Ｏ処理部１７は、同期Ｉ／Ｏ中フラグに“０”を設定する。これにより、同期Ｉ／Ｏ処理部１７によるＳＳＤ３０に対するＩ／Ｏ処理が完了し、同期Ｉ／Ｏ処理部１７が現時点で同期Ｉ／Ｏ処理を実行していないことが明示される。そして、結合子“Ｄ１”を経て、図１１のステップＳ１１に処理が移行する。
【０１２６】
図１１のステップＳ１１において、同期Ｉ／Ｏ処理部１７は、間欠時間の測定回数を示すカウンタｎの値が、間欠時間の測定回数がＣ回であるか否か、すなわち、上述したステップＳ４での間欠時間の算出が、Ｃ回目であるか否かを判断する。カウンタｎの値がＣである場合、処理が図１１のステップＳ１２に移行する。
【０１２７】
続く図１１のステップＳ１２において、同期Ｉ／Ｏ処理部１７は、Ｃ回分の間欠時間の平均を算出する。そこで、同期Ｉ／Ｏ処理部１７は、上述したステップＳ５において間欠時間を代入した、配列Ａｒｒａｙ［０］〜Ａｒｒａｙ［Ｃ−１］の平均を算出する。
【０１２８】
そして、同期Ｉ／Ｏ処理部１７は、算出したＣ回分の間欠時間の平均に、所定のマージン時間Ｔｍａｒｇｉｎを加算することにより、非同期書き出し処理部１９を起動するまでの時間Ｔ２ｎｄを算出する。このＴ２ｎｄは、非同期書き出し処理部１９が第２階層ストレージデバイス２０への書き出し処理を実行するまでの時間でもある。このＴ２ｎｄを求めるうえでマージン時間Ｔｍａｒｇｉｎを加算したのは、本システムにおいて、同期Ｉ／Ｏ処理部１７による処理が完了した後、所定の時間をおいて第２階層ストレージサーバ２０への書き出が行なわれるものとしたためであり、これに限られない。なお、このＴ２ｎｄは、平均間欠時間ともいい、当該システムの稼働状況に応じて適宜設定または変更されてもよい。処理が図１１のステップＳ１３に移行する。
【０１２９】
続く図１１のステップＳ１３において、同期Ｉ／Ｏ処理部１７は、Ｔ＿ｅｎｄ（−１）に、今回の要求に対する処理が終了した時刻Ｔ＿ｅｎｄ（Ｃ−１）を代入する。これは、今回の要求に対する処理が終了した時刻Ｔ＿ｅｎｄ（Ｃ−１）を、次回のループにおけるステップＳ４で間欠時間を算出する際に用いるためである。
【０１３０】
そして、同期Ｉ／Ｏ処理部１７は、間欠時間の測定回数を０（回）に設定（リセット）する。これにより、バーストＩ／Ｏ毎に間欠時間の平均値やＴ２ｎｄを算出することになり、新たなバーストＩ／Ｏが発生した場合に、これらの値を更新することになる。
【０１３１】
上述のステップＳ４において、バーストＩ／Ｏが終了した場合には、算出された間欠時間がしきい値Ｔｍａｘを超えたと判断される。このような場合にも、このステップＳ１３において、間欠時間の測定回数が０（回）に設定（リセット）される。そして、処理が図１１のステップＳ１４に移行する。
【０１３２】
続く図１１のステップＳ１４において、同期Ｉ／Ｏ処理部１７は、ＳＳＤ３０に対するＩ／Ｏ処理（書き込みや読み出し）が完了した旨の通知（Ｉ／Ｏ要求完了通知）を通信制御部１６を介してクライアントコンピュータ５０に対して送信する。そして、処理が図１１のステップＳ１５に移行する。
【０１３３】
続く図１１のステップＳ１５において、同期Ｉ／Ｏ処理部１７は、現在の時刻に、上述したステップＳ１２で算出したＴ２ｎｄを加算する。これにより、同期Ｉ／Ｏ処理部１７が非同期書き出し処理部１９を起動する時刻（起動時刻）Ｔｓｔａｒｔが求まる。そして、処理が図１１のステップＳ１６に移行する。
【０１３４】
一方、上述したステップＳ１１において、カウンタｎの値がＣではなかった場合（ステップＳ１１におけるＮｏルート参照）、処理が上述したステップＳ１５に移行する。
【０１３５】
続くステップＳ１６において、同期Ｉ／Ｏ処理部１７は、非同期書き出し稼働中フラグに“１”が設定されているかを判断する。“１”が設定されていないと判断した場合（非同期書き出し処理部１９が起動されていない場合；ステップＳ１６におけるＮｏルート参照）、処理が図１１のステップＳ１７に移行する。
【０１３６】
続く図１１のステップＳ１７において、同期Ｉ／Ｏ処理部１７は、非同期書き出し処理部１９を起動する。そして、同期Ｉ／Ｏ処理部１７による処理が終了する。なお、このステップＳ１７における処理が終了すると、後述する図１３のステップＱ１（非同期書き出し処理部１９による処理）に処理が移行する。
【０１３７】
一方、上述したステップＳ１６にて、“１”が設定されていると判断した場合（非同期書き出し処理部１９が起動されている場合；ステップＳ１６におけるＹｅｓルート参照）、同期Ｉ／Ｏ処理部１７による処理が終了する。これは、既に非同期書き出し処理部１９が起動しているため、同期Ｉ／Ｏ処理部１７によって再度非同期書き出し処理部１９を起動することを回避するためである。なお、この場合も、後述する図１３に例示するステップＱ１（非同期書き出し処理部１９による処理）に処理が移行する。
【０１３８】
なお、ステップＳ１７において、同期Ｉ／Ｏ処理部１７が非同期書き出し処理部１９を起動した後においても、クライアントコンピュータ５０からデータアクセス要求を受信すると、図１０のステップＳ１に示す処理を開始することになる。この場合、図１０，図１１のステップＳ１〜Ｓ１６に示す処理を経て、非同期書き出し処理部１９が起動される時刻Ｔｓｔａｒｔが更新される。
【０１３９】
〔１−５〕一実施形態に係るストレージシステムにおける非同期Ｉ／Ｏ処理
上述の如く構成された実施形態の一例として、ストレージシステム１における非同期Ｉ／Ｏ処理を、図１３に示すフローチャート（ステップＱ１〜Ｑ９）に従って説明する。この図１３においては、非同期書き出し処理部１９によるＨＤＤ４０へのデータの書き出し処理を例示する。
【０１４０】
この非同期Ｉ／Ｏ処理は、第２階層ストレージサーバ２０の非同期書き出し処理部１９により実行されるから、図１３は、第２階層ストレージサーバ２０の非同期書き出し処理部１９による処理を例示するものでもある。
【０１４１】
なお、この図１３に例示する処理は、図１１のステップＳ１７に示す処理を経ることを契機として実行されるものとする。したがって、非同期書き出し処理部１９は、同期Ｉ／Ｏ処理部１７によって起動されるまではスリープしているものとする。
【０１４２】
ステップＱ１において、非同期書き出し処理部１９は、非同期書き出し稼働中フラグに“１”を設定する。これは、非同期書き出し処理部１９が同期Ｉ／Ｏ処理部１７によって起動され、実行中となったためである。
【０１４３】
続くステップＱ２で、非同期書き出し処理部１９は、非同期書き出し処理部１９が起動される時刻Ｔｓｔａｒｔが現在時刻よりも大きいか（進んでいるか）否か、すなわち、非同期書き出し処理部１９が起動される時刻Ｔｓｔａｒｔに到達したか否かを判断する。すなわち、Ｔｓｔａｒｔが現在時刻よりも大きい（進んでいる）と判断された場合、すなわち、非同期書き出し処理部１９が起動される時刻Ｔｓｔａｒｔに到達していない場合（ステップＱ２におけるＹｅｓルート参照）、処理がステップＱ３に移行する。
【０１４４】
続くステップＱ３において、非同期書き出し処理部１９は、Ｔｓｔａｒｔから現在時刻を差し引いた時間分だけスリープし、Ｔｓｔａｒｔが現在時刻になるまで待つ。そして、非同期書き出し処理部１９は、Ｔｓｔａｒｔが現在時刻になるまでスリープした後、処理がステップＱ２に戻り、Ｔｓｔａｒｔが現在時刻よりも大きいか（進んでいるか）否かを再度判断する。これは、非同期書き出し処理部１９がスリープしている間に、間欠時間がしきい値Ｔｍａｘを超えるデータアクセス要求をクライアントコンピュータ５０から受けたか否かを判断するためである。非同期書き出し処理部１９がスリープしている間に、間欠時間がしきい値Ｔｍａｘを超えるデータアクセス要求を再度受けた場合、上述の図１１のステップＳ１５に示す処理を経るため、Ｔｓｔａｒｔが更新され、Ｔｓｔａｒｔはスリープ完了後の現在時刻よりも進むからである。一方、非同期書き出し処理部１９がスリープしている間に、間欠時間がしきい値Ｔｍａｘを超えるデータアクセス要求を受けなかった場合には、Ｔｓｔａｒｔは更新されず、処理がステップＱ４に移行する。
【０１４５】
また、このステップＱ３におけるスリープの間、非同期書き出し稼働中フラグは“１”を設定したままとするが、これは、非同期書き出し処理部１９がスリープしている間に、再度同期Ｉ／Ｏ処理部１７によって起動されるのを回避するためである。
【０１４６】
一方、上記ステップＱ２でＴｓｔａｒｔが現在時刻以下である（現在時刻がＴｓｔａｒｔより進んでいる）と判断されると、すなわち、非同期書き出し処理部１９が起動される時刻Ｔｓｔａｒｔに到達した場合（ステップＱ２のＮｏルート参照）、処理がステップＱ４に移行する。
【０１４７】
続くステップＱ４において、非同期書き出し処理部１９は、同期Ｉ／Ｏ中フラグに“１”が設定されているか否かを判断する。同期Ｉ／Ｏ中フラグに“１”が設定されている場合（ステップＱ４におけるＹｅｓルート参照）、すなわち、同期Ｉ／Ｏ処理部１７が実行中である場合、処理がステップＱ５に移行する。
【０１４８】
続くステップＱ５において、非同期書き出し処理部１９は、非同期書き出し稼働中フラグに“０”を設定し、ステップＱ６において、非同期書き出し処理部１９はスリープする。これは、第１階層ストレージサーバ１０の同期Ｉ／Ｏ処理部１７が実行中であることから、この処理を妨げずに処理速度を維持するためである。その後、処理を終了する。
【０１４９】
一方、上述のステップＱ４で、同期Ｉ／Ｏ中フラグに“１”が設定されていない場合（ステップＱ４のＮｏルート参照）、すなわち、同期Ｉ／Ｏ中フラグに“０”が設定されている（同期Ｉ／Ｏ処理部１７が実行中ではない）場合、処理がステップＱ７に移行する。
【０１５０】
続くステップＱ７において、非同期書き出し処理部１９は、書き出し対象データの中に未書き出しデータがあるか否かを判断する。未書き出しデータがないと判断した場合には（ステップＱ７におけるＮｏルート参照）、処理がステップＱ５に移行する。
【０１５１】
一方、上述したステップＱ７において、未書き出しデータがあると判断した場合には（ステップＱ７におけるＹｅｓルート参照）、処理がステップＱ８に移行する。
【０１５２】
続くステップＱ８において、非同期書き出し処理部１９は、第２階層ストレージサーバ２０に対し、未書き出しデータの書き出し処理を実行する。具体的に、非同期書き出し処理部１９は、通信制御部１６を介して第２階層ストレージサーバ２０に対し、例えば、書き出しの指示（非同期書き出し指示）を送信する。そして、第２階層ストレージサーバ２０のＩ／Ｏ処理部２７は、デバイス制御部２８を介してＨＤＤ４０に対して書き出し対象データの書き出しを行なう。なお、このＨＤＤ４０への書き出し対象データは、ＳＳＤ３０に格納されているものとする。そして、処理がステップＱ９に移行する。
【０１５３】
続くステップＱ９において、非同期書き出し処理部１９は、第２階層ストレージサーバ２０から書き出し完了通知を受信する。そして、処理がステップＱ４に戻り、ステップＱ４〜Ｑ９に示す処理を繰り返す。本システムでは、これらのステップＱ４〜Ｑ９に示す処理を、書き出し対象データの１ブロック毎に行なうものとした。これは、第１階層ストレージサーバ１０における同期Ｉ／Ｏ処理の実行中に、第２階層ストレージサーバ２０への書き出し処理を実行することを可能な限り回避するためである。そのため、非同期書き出し処理部１９は、同期Ｉ／Ｏ中フラグに基づき、第１階層ストレージサーバ１０における同期Ｉ／Ｏ処理が実行中であるか否かを、書き出し対象データの１ブロック毎に判断するものとした。
【０１５４】
〔２〕効果
上述のように、一実施形態に係るストレージシステム１では、第１階層ストレージサーバ１０にて、前回のデータアクセス要求に係るＩ／Ｏ処理の完了時刻と現在時刻との差分時間を間欠時間として算出し、この間欠時間としきい値とを比較する。そして、クライアントコンピュータ５０からデータアクセス要求を受信しなかったことを確認した後に、ＳＳＤ３０からＨＤＤ４０への書き出し処理を実行する。これにより、第１階層ストレージサーバ１０内のジョブの実行と、ＨＤＤ４０へのデータの書き出し処理との重複を回避することができる。
【０１５５】
したがって、ＨＤＤ４０へのデータの書き出し処理を最適化することができる。
【０１５６】
また、一実施形態に係るストレージシステム１において、同期Ｉ／Ｏ処理部１７は、非同期書き出し処理部１９を起動するまでの時間Ｔ２ｎｄを算出する際、Ｃ回分の間欠時間の平均を用いる。これにより、当該システムの稼働状況に応じた平均的な間欠時間を考慮して、非同期書き出し処理部１９を起動するまでの時間Ｔ２ｎｄを算出することができる。
【０１５７】
また、一実施形態に係るストレージシステム１において、同期Ｉ／Ｏ中フラグに基づき同期Ｉ／Ｏ処理部１７が実行中ではないことを確認したうえで、非同期書き出し処理部１９によるＨＤＤ４０への書き出し処理を実行する。これにより、第１階層ストレージサーバ１０での同期Ｉ／Ｏ処理部１７による処理を妨げずに処理速度を維持することができる。
【０１５８】
〔３〕その他
上述した一実施形態及び変形例に係る技術は、以下のように変形、変更して実施することができる。
【０１５９】
上述した一実施形態では、同期Ｉ／Ｏ処理部１７と非同期書き出し処理部１９とをそれぞれ備えたが、同期Ｉ／Ｏ処理部１７が非同期書き出し処理部１９の機能も併せもつものとしてもよい。その場合、同期Ｉ／Ｏ処理部１７において同期Ｉ／Ｏ処理と非同期Ｉ／Ｏ処理とを実行し、同期Ｉ／Ｏ処理部１７が、ＨＤＤ３０への非同期の書き出し処理を実行してもよい。
【０１６０】
上述した一実施形態では、同期Ｉ／Ｏ中フラグと非同期書き出し稼働中フラグとを備えたが、これらのフラグに替えて、例えばテーブル形式の情報として同期Ｉ／Ｏ処理部１７と非同期書き出し処理部１９との実行状況を管理するものとしてもよい。
【０１６１】
上述した一実施形態では、クライアントコンピュータ５０は、複数の第１階層ストレージサーバ＃０〜＃ｎのうちいずれの第１階層ストレージサーバ１０にアクセスしてもよいものとしたが、これに限られない。例えば、クライアントコンピュータ＃０は、第１階層ストレージサーバ＃０に対してアクセスする構成（１対１で通信を行なう構成）としてもよい。
【０１６２】
そして、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１６３】
〔４〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１６４】
（付記１）
第１の記憶装置と第２の記憶装置とに対して、アクセスコマンドに基づく処理を行なう情報処理装置において、
前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出する算出部と、
前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれなかった場合、前記第１の記憶装置から前記第２の記憶装置に対する書き出し処理を実行する非同期書き出し処理部と、
を備えることを特徴とする、情報処理装置。
【０１６５】
（付記２）
前記非同期書き出し処理部は、前記平均間欠時間に基づき算出された起動時刻と現在時刻とを比較して、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれたか否かを判断する、
ことを特徴とする付記１記載の情報処理装置。
【０１６６】
（付記３）
前記情報処理装置は、前記第１の記憶装置に対して書き込みを行なう同期書き込み処理部をさらに備え、
前記非同期書き出し処理部は、起動時に、前記同期書き込み処理部が実行中でないことを確認した後に前記第２の記憶装置に対して書き出し処理を実行する、
ことを特徴とする付記１又は２記載の情報処理装置。
【０１６７】
（付記４）
第１の記憶装置と第２の記憶装置とに対して、アクセスコマンドに基づく処理を行なう情報処理装置のプロセッサに、
前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出し、
前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれなかった場合、前記第１の記憶装置から前記第２の記憶装置へ書き出す、
処理を実行させる、
ことを特徴とする、制御プログラム。
【０１６８】
（付記５）
前記平均間欠時間に基づき算出された起動時刻と現在時刻とを比較して、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれたか否かを判断する、
処理を、前記プロセッサに実行させる、
ことを特徴とする、付記４記載の制御プログラム。
【０１６９】
（付記６）
前記第１の記憶装置に対して書き込みを行なう処理と、
起動時に、前記第１の記憶装置に対して書き込みを行なう処理が実行中でないことを確認した後に前記第２の記憶装置に対して書き出し処理を実行する処理とを、
前記プロセッサに実行させる、
ことを特徴とする、付記４又は５記載の制御プログラム。
【０１７０】
（付記７）
前回のアクセスコマンド処理の終了時刻と現在時刻との差分時間を間欠時間として算出し、所定時間以内の前記間欠時間の複数回分の平均を平均間欠時間として算出する処理と、
前記アクセスコマンド処理を完了した後、前記平均間欠時間を超えて情報処理装置へのアクセスが行なわれなかった場合、第１の記憶装置から第２の記憶装置への書き出す処理を実行する処理と、
を備えることを特徴とする、制御方法。
【０１７１】
（付記８）
前記平均間欠時間に基づき算出された起動時刻と現在時刻とを比較して、前記平均間欠時間を超えて前記情報処理装置へのアクセスが行なわれたか否かを判断する処理、
を備えることを特徴とする、付記７記載の制御方法。
【０１７２】
（付記９）
前記第１の記憶装置に対して書き込みを行なう処理と、
前記第１の記憶装置に対して書き込みを行なう処理が実行中でないことを確認した後に前記第２の記憶装置に対して書き出し処理を実行する処理と、
を備えることを特徴とする、付記７又は８記載の制御方法。
【符号の説明】
【０１７３】
１    ストレージシステム
１０    第１階層ストレージサーバ（情報処理装置）
１１    ＣＰＵ
１２    記憶部
１３    メモリ
１４    ＩＦ部
１５    入力部
１６    通信制御部
１７    同期Ｉ／Ｏ処理部（算出部，同期書き込み処理部）
１８    デバイス制御部
１９    非同期書き出し処理部
２０    第２階層ストレージサーバ
２１    ＣＰＵ
２２    記憶部
２３    メモリ
２４    ＩＦ部
２５    入力部
２６    通信制御部
２７    Ｉ／Ｏ処理部
２８    デバイス制御部
３０    ＳＳＤ（第１の記憶装置）
４０    ＨＤＤ（第２の記憶装置）
５０    クライアントコンピュータ
５１    ＣＰＵ
５２    記憶部
５３    メモリ
５４    ＩＦ部
５５    入力部
５６    要求発行部
５７    通信制御部
９０    第１制御プログラム
９１    第２制御プログラム
９２    クライアントプログラム
【図１】
2020170458.tif 000003
【図２】
2020170458.tif 000004
【図３】
2020170458.tif 000005
【図４】
2020170458.tif 000006
【図５】
2020170458.tif 000007
【図６】
2020170458.tif 000008
【図７】
2020170458.tif 000009
【図８】
2020170458.tif 000010
【図９】
2020170458.tif 000011
【図１０】
2020170458.tif 000012
【図１１】
2020170458.tif 000013
【図１２】
2020170458.tif 000014
【図１３】
2020170458.tif 000015