(57)【要約】【課題】ストレージ間のデータ転送を、より適切なタイミングで行うための技術を提供する。【解決手段】ブロック３１へのアクセス数は、アクセス数カウントテーブル２１４ａを用いて、ブロック３１を分割するサブブロック３１ａ毎にカウントされる。アクセス数が閾値Ｗ以上となったサブブロック３１ａのアドレスを代表するサブブロックアドレス値と、アクセス数が閾値Ｗ以上となった時刻は、アドレス・時刻記録テーブル２１４ｂの１エントリに格納される。そのサブブロックアドレス値と時刻の相関分析により、シーケンシャルアクセスを検出し、ＳＳＤに転送すべきブロック３１、及びそのブロック３１の転送を終了すべき時刻であるデッドラインを特定し、特定したブロック３１をそのデッドラインまでに転送するようにスケジューリングを行う。【選択図】図３
2014229144.tif 000002
【特許請求の範囲】
【請求項１】
第１のストレージと前記第１のストレージよりもアクセス速度が低速である第２のストレージとに接続される情報処理装置において、
前記第２のストレージに記憶された各ブロックにアクセスするアクセス部と、
各ブロックに対するアクセス数を、各ブロック毎にそれぞれ計数する計数部と、
前記計数部が各ブロック毎に計数したアクセス数に基づき、前記第２のストレージから前記第１のストレージに転送を行う対象である転送対象ブロックと前記転送対象ブロックの転送を行う転送タイミングとを特定する特定部と、
特定された前記転送対象ブロックを、特定された前記転送タイミングで、前記第１のストレージに転送する転送部を有することを特徴とする情報処理装置。
【請求項２】
前記計数部は、
各ブロックに対するアクセス数の計数を、各ブロックに複数含まれるサブブロック毎に行い、
前記特定部は、
前記計数部が前記サブブロック毎に計数したアクセス数に基づき、前記転送対象ブロックと前記転送対象ブロックの転送を行うタイミングとを特定することを特徴とする請求項１記載のデータ転送制御方法。
【請求項３】
第１のストレージと、前記第１のストレージよりもアクセス速度が低速である第２のストレージと、前記第１のストレージと前記第２のストレージとに接続される情報処理装置とを有する情報処理システムにおいて、
前記情報処理装置は、
前記第２のストレージに記憶された各ブロックにアクセスするアクセス部と、
各ブロックに対するアクセス数を、各ブロック毎にそれぞれ計数する計数部と、
前記計数部が各ブロック毎に計数したアクセス数に基づき、前記第２のストレージから前記第１のストレージに転送を行う対象である転送対象ブロックと前記転送対象ブロックの転送を行うタイミングとを特定する特定部と、
特定された前記転送対象ブロックを、タイミングで、前記第１のストレージに転送する転送部とを有することを特徴とする情報処理システム。
【請求項４】
第１のストレージと前記第１のストレージよりもアクセス速度が低速である第２のストレージとに接続される情報処理装置の制御方法において、
前記情報処理装置が有するアクセス部が、前記第２のストレージに記憶された各ブロックにアクセスし、
前記情報処理装置が有する計数部が、各ブロックに対するアクセス数を、各ブロック毎にそれぞれ計数し、
前記情報処理装置が有する特定部が、前記計数部が各ブロック毎に計数したアクセス数に基づき、前記第２のストレージから前記第１のストレージに転送を行う対象である転送対象ブロックと前記転送対象ブロックの転送を行う転送タイミングとを特定し、
前記情報処理装置が有する転送部が、特定された前記転送対象ブロックを、特定された前記転送タイミングで、前記第１のストレージに転送することを特徴とする情報処理装置の制御方法。
【請求項５】
第１のストレージと前記第１のストレージよりもアクセス速度が低速である第２のストレージとに接続される情報処理装置の制御プログラムにおいて、
前記情報処理装置が有するアクセス部に、前記第２のストレージに記憶された各ブロックにアクセスさせ、
前記情報処理装置が有する計数部に、各ブロックに対するアクセス数を、各ブロック毎にそれぞれ計数させ、
前記情報処理装置が有する特定部に、前記計数部が各ブロック毎に計数したアクセス数に基づき、前記第２のストレージから前記第１のストレージに転送を行う対象である転送対象ブロックと前記転送対象ブロックの転送を行う転送タイミングとを特定させ、
前記情報処理装置が有する転送部に、特定された前記転送対象ブロックを、特定された前記転送タイミングで、前記第１のストレージに転送させることを特徴とする情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、情報処理装置、情報処理システム、情報処理装置の制御方法および情報処理装置の制御プログラムに関する。
【背景技術】
【０００２】
コンピュータ等の情報処理装置に処理させるデータ量は、近年、ますます増大傾向にある。現在では、従来よりも大きいデータ量を情報処理装置に処理させることも通常である。このことから、データの格納に要するコストを抑えつつ、高速なアクセスを可能にさせるストレージの階層化が採用されている。
【０００３】
ストレージは、一般的にアクセス速度が速くなるほど、単位データ量当たりの格納コストが大きくなる傾向にある。このことから、アクセス速度の異なる２種類のストレージの階層化では、アクセス速度の遅い安価なストレージ（以降「低速ストレージ」と表記）にデータを全て、或いはアクセス頻度が比較的に低いと推測されるデータが格納される。アクセス速度の速い高価なストレージ（以降「高速ストレージ」と表記）には、アクセス頻度が比較的に高いと推測されるデータが格納される。それにより、データの格納コストは抑えられ、高速なアクセスも可能となる。
【０００４】
ストレージの階層化では、必要に応じて、低速ストレージと高速ストレージ間のデータ転送が行われる。このストレージ間のデータ転送は、そのデータ転送が行われる低速ストレージと高速ストレージの双方にアクセス可能な情報処理装置（データ転送制御装置）によって行われる。情報処理装置は、ストレージの階層化のためのプログラムによって、ストレージ間のデータ転送を行う。このストレージ間のデータ転送は、一方のストレージのデータを他方のストレージにコピーするためのデータ転送と、一方のストレージのデータを他方のストレージに移動させる再配置のためのデータ転送と、に大別することができる。
【０００５】
ストレージ間のデータ転送を行う転送単位は、ＬＵＮ（Logical Unit Number）、或いはサブＬＵＮ等が転送単位となる。具体的には転送単位は例えば数百ＧＢである。ここでは、転送単位とするデータは「ブロック」と呼ぶことにする。
【０００６】
高速ストレージは低速ストレージと比較して低容量であり、格納可能なブロック数は制限される。そのため、実際にはアクセス頻度の低いブロックを高速ストレージに移動させることは、高速ストレージに格納されるブロックのなかで実際にアクセス頻度の高いブロックが占める割合をより小さくさせることになる。また、アクセス頻度のより高いブロックを高速ストレージから消去させる可能性もある。このようなことから、アクセス頻度の高いブロックを適切に予測することは非常に重要である。
【０００７】
通常、高速ストレージ上のブロックの消去は、低速ストレージから新たに転送される他のブロックを格納する領域がない場合に行われる。消去の対象として選択されるのは、例えばアクセスが行われていない期間が最も長いブロックである。
【０００８】
図１は、アクセスパターンを説明する図である。横軸に時間、縦軸にアクセスされた論理アドレス（図１中「アクセス論理アドレス」と表記）、をそれぞれ取っている。図１中の各丸は、それぞれ実際のアクセスを表している。この図１を参照し、アクセス頻度が高いブロックの予測方法について具体的に説明する。
【０００９】
アクセスパターンは、シーケンシャルアクセスと、ランダムアクセスとに大別することができる。シーケンシャルアクセスは、図１中の枠１１で囲ったアクセス群のように、論理アドレス値の小さいほうから大きい方、或いはその逆に１方向に沿ってアクセスされる論理アドレス値が変化していくアクセスパターンである。ここでのシーケンシャルアクセスには、連続するアクセスで指定された論理アドレス値の変化量であるストライドが比較的に大きく変化する疑似シーケンシャルアクセスが含まれる。一方のランダムアクセスは、アクセスされる論理アドレス値が不規則に変化するアクセスパターンである。
【００１０】
シーケンシャルアクセスでは、論理アドレス値が全体として一方向に沿って変化していることから、シーケンシャルアクセスが行われているブロックとその一方向上に隣接するブロックにも高い頻度でアクセスが行われると期待できる。このことから、従来、シーケンシャルアクセスに着目し、高速ストレージに転送するブロックを特定することが行われている。
【００１１】
従来のシーケンシャルアクセスの検出方法としては、ブロックを複数の領域に分け、各領域のなかで実際にアクセスされた領域の割合の変化を監視し、その割合が増加、或いは一定値以上であればシーケンシャルアクセスと判定するものがある。また、アクセスされたブロックのアドレスについてのストライドにマージンを設けることで、疑似シーケンシャルアクセスを検出可能にしたものがある。
【００１２】
シーケンシャルアクセスの検出による転送すべきブロックの特定では、シーケンシャルアクセスの検出により、特定すべきブロックの特定が行われる。従来、ストレージ間のデータ転送を行う情報処理装置は、ブロックの特定により、そのブロックを高速ストレージに転送するようになっている。
【００１３】
上記のように、高速ストレージに格納可能なブロック数は、低速ストレージと比較して小さい。そのため、高速ストレージにブロックを転送する場合、高速ストレージ上のブロックを消去させなければならないのが通常である。しかし、消去するブロックへのアクセスが行われる可能性があるため、高速ストレージへのブロックの転送は、そのブロックへのアクセスが開始されると予測されるタイミングまでに行うことも重要である。これは、新たなブロックの転送によって消去されるブロックへのアクセスを高速ストレージ上で行える可能性がより高くなると期待できるからである。
【００１４】
転送すべきブロックは、比較的に短い期間内に複数、特定される可能性がある。ブロックは比較的に大きいデータ量であることから、転送に要する転送時間も比較的に長い。その転送時間を考慮するならば、実際にアクセス頻度が高くなると予想されるまでの時間がより短いと推測されるほうを優先的に転送するのが望ましい。これは、高速ストレージ上でアクセスを行う回数がより多くなると期待できるからである。
【００１５】
上記のようなことから、ブロックの転送を行うタイミングも制御するのが望ましい。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００２−１８２９７８号公報
【特許文献２】特開２０００−７６０１７号公報
【特許文献３】再表２００８／１５５８１５号公報
【特許文献４】特開平４−２５９０４８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
一側面では、本発明は、ストレージ間のデータ転送を、より適切なタイミングで行うための技術を提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明を適用したシステムは、第１のストレージと第１のストレージよりもアクセス速度が低速である第２のストレージとに接続される情報処理装置であることを前提とし、第２のストレージに記憶された各ブロックにアクセスするアクセス部と、各ブロックに対するアクセス数を、各ブロック毎にそれぞれ計数する計数部と、計数部が各ブロック毎に計数したアクセス数に基づき、第２のストレージから第１のストレージに転送を行う対象である転送対象ブロックと転送対象ブロックの転送を行う転送タイミングとを特定する特定部と、特定された転送対象ブロックを、特定された転送タイミングで、第１のストレージに転送する転送部とを有する。
【発明の効果】
【００１９】
本発明を適用した場合には、ストレージ間のデータ転送を、より適切なタイミングで行うことができる。
【図面の簡単な説明】
【００２０】
【図１】アクセスパターンを説明する図である。
【図２】本実施形態による情報処理装置を用いて構築された階層化ストレージシステムの構成例を説明する図である。
【図３】本実施形態における転送すべきブロック、及びそのブロックの転送を行うべきタイミングの特定方法を説明する図である。
【図４】サブブロック単位でのアクセス数のカウントによるシーケンシャルアクセスの検出方法を説明するための図である。
【図５】データ転送制御処理のフローチャートである。
【図６】上昇パターン処理のフローチャートである。
【図７】本実施形態におけるサーバとして使用可能な情報処理装置の構成例を表す図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について、図面を参照しながら詳細に説明する。
図２は、本実施形態による情報処理装置を用いて構築された階層化ストレージシステムの構成例を説明する図である。図２に表すように、階層化ストレージシステムは、本実施形態による情報処理装置であるサーバ２０、低速なストレージであるハードディスク装置（ＨＤＤ）３０、及び高速なストレージであるＳＳＤ（Solid State Drive）４０を備えている。
【００２２】
図２では、説明上、便宜的にハードディスク装置３０、及びＳＳＤ４０はそれぞれ１台のみ表している。しかし、多くの場合、ハードディスク装置３０、及びＳＳＤ４０はそれぞれ複数台、用意される。また、ストレージの階層化は、アクセス速度の異なる２種類のストレージとしてハードディスク装置３０、及びＳＳＤ４０を採用することで実現されているが、採用するストレージはこの組合せに限定されない。階層数も２に限定されない。つまり階層数は３以上であっても良い。
【００２３】
図２には、サーバ２０上で実行されるプログラムとして、ＯＳ２１のみを表している。このＯＳ２１には、通常の基本ソフトウェアとしての機能に加えて、ストレージ間、ここではハードディスク装置３０とＳＳＤ４０間で転送を行うべきブロックの特定、及び特定したブロックの転送を実現させるための機能が搭載されている。図２中に表すデータアクセス部２１１、データ移動部２１２、スケジューラ２１３、アクセス履歴記録部２１４、及びアクセス解析部２１５は、転送単位とするデータであるブロックの転送に特に関係する機能である。図２中の３１、３１−０は何れもブロックである。３１−０は、ハードディスク装置３０からＳＳＤ４０に転送により再配置されたブロックである。
【００２４】
データアクセス部２１１は、ＯＳ２１上で動作するアプリケーション・プログラム（以降「アプリケーション」と略記）からの要求により、ユーザリクエストを発行する機能である。図２中の２つの破線で表す矢印２ａ（２ａ−１、２ａ−２）は、ユーザリクエストがハードディスク装置３０、或いはＳＳＤ４０に送信され、その送信によってレスポンスがデータアクセス部２１１に返信されることを表している。
【００２５】
データ移動部２１２は、ハードディスク装置３０とＳＳＤ４０間のデータ転送を実現する機能であり、そのデータ転送のためのデータ転送リクエストをブロック単位で発行する。図２中の実線で表す矢印２ｂは、データ移動部２１２を介して、ハードディスク装置３０に格納されているデータ３１−０をＳＳＤ４０に格納させるデータ転送が行われた場合の転送経路を表している。ここでは、ブロック３１のデータ転送は、データの再配置のために行われると想定する。
【００２６】
スケジューラ２１３は、データアクセス部２１１、及びデータ移動部２１２からそれぞれ発行されたリクエストを入力して、入力したリクエストのなかから一つを選択し、選択したリクエストを送信すべきストレージに送信する機能である。
【００２７】
データアクセス部２１１が発行したリクエストとデータ移動部２１２が発行するリクエストは、優先度が異なる。データアクセス部２１１が発行したリクエストは高優先度であり、データ移動部２１２が発行するリクエストは低優先度である。スケジューラ２１３は、データアクセス部２１１が発行したリクエストが存在する状況では、データ移動部２１２が発行するリクエストは一定時間が経過する毎に選択される。
【００２８】
アクセス履歴記録部２１４は、ブロック３１毎に、データアクセス部２１１が発行するリクエストによるそのブロック３１へのアクセスを履歴として記録する機能である。アクセス数カウントテーブル２１４ａ、及びアドレス・時刻記録テーブル２１４ｂは、履歴の記録に用いられるテーブルであり、ブロック３１毎に用意される。
【００２９】
アクセス解析部２１５は、ブロック３１毎に、そのアドレス・時刻記録テーブル２１４ｂを参照し、ＳＳＤ４０に転送すべきブロック３１を特定する。アクセス解析部２１５は、転送すべきブロック３１を特定した場合、そのブロック３１の転送を完了すべき時刻を計算し、計算した時刻が到来する前に、そのブロック３１の転送が完了するように、データ移動部２１２への指示を行う。
【００３０】
図３は、本実施形態における転送すべきブロック、及びそのブロックの転送を行うべきタイミングの特定方法を説明する図である。転送すべきブロック、及びそのブロックの転送を行うべきタイミングの特定は、アクセス履歴記憶部２１４とアクセス解析部２１５の連携によって実現される。このことから、次に図３を参照し、アクセス履歴記憶部２１４、及びアクセス解析部２１５の動作について具体的に説明する。
【００３１】
本実施形態では、後述するアクセス数カウントテーブルを用いて、各ブロック３１に含まれる複数のサブブロック３１ａ単位でアクセス数をカウントする。各ブロック３１のアクセス数カウントテーブル２１４ａは、サブブロック３１ａ毎のアクセス数のカウントに用いられる。図３に表す例では、各ブロック３１は計１４個のサブブロック３１ａを含む。
【００３２】
図３中に０〜１３で表記のアドレス値は、対応するサブブロック３１ａを代表するアドレス値として表している。アクセス数カウントテーブル２１４ａ中に表記の「０」「１」「５」及び「１０」等の数字は、対応するサブブロック３１ａで実際にカウントされたアクセス数を表している。以降、サブブロック３１ａを代表するアドレス値は、「サブブロックアドレス値」と呼ぶことにする。
【００３３】
アドレス・時刻記録テーブル２１４ｂは、サブブロック３１ａのなかでアクセス数が閾値Ｗ以上となったサブブロック３１ａに関する情報を記録するためのテーブルである。各エントリ（レコード）には、アクセス数が閾値Ｗ以上となったサブブロック３１ａのサブブロックアドレス値、アクセス数が閾値Ｗ以上となった時刻が記録される。図３中に表記の「４，２０１２／０９／２７  １２：４７：００」は、サブブロックアドレス値として４を表記のサブブロック３１ａのアクセス数が、２０１２年９月２７日の１２時４７分００秒に閾値Ｗ（ここでは２００）以上となったことを表している。
【００３４】
サブブロック３１ａ単位でのアクセス数のカウントは、シーケンシャルアクセスの検出のために行われる。そのシーケンシャルアクセスには、疑似シーケンシャルアクセスが含まれる。ここで、図４を参照し、サブブロック３１ａ毎のアクセス数のカウントによるシーケンシャルアクセスの検出方法について具体的に説明する。
【００３５】
図４では、横軸に時間、縦軸にアクセスされた論理アドレス（図１中「アクセス論理アドレス」と表記）、をそれぞれ取っている。横軸に平行に引いた各線は、サブブロック３１ａにデータが含まれる論理アドレスの範囲を表している。直線４０１は、シーケンシャルアクセス時にアクセスされる論理アドレス値の変化の例を表している。図４には、直線４０１の枠Ａ内の部分４０１ａの拡大図を併せて表している。
【００３６】
図４の枠Ａ内の部分４０１ａのように、疑似シーケンシャルアクセスでは、ストライドが比較的に大きく変動する。そのため、疑似シーケンシャルアクセスの検出は困難な面がある。また、シーケンシャルアクセスによるアクセスと、ランダムアクセスによるアクセスとが、比較的に近い範囲内の論理アドレスに対して行われる可能性もある。そのように異なるパターンによるアクセスが混在するような場合、ストライドは大きく変動しやすいことから、シーケンシャルアクセス（特に疑似シーケンシャルアクセス）の検出はより困難となる。
【００３７】
しかし、サブブロック３１ａ毎にアクセス数をカウントする場合、シーケンシャルアクセスによるアクセスが行われていれば、論理アドレス値が変化する方向に、カウントされるアクセス数が増大するサブブロック３１ａが現れることになる。例えば図４において、論理アドレス値が大きくなる方向にシーケンシャルアクセスが存在し、現在、枠Ａ内の範囲の論理アドレス値を有するサブブロック３１ａへのアクセスが主に行われていると想定する。そのように想定する場合、現在アクセスが連続的に行われているサブブロック３１ａの次に、論理アドレス値が大きいほうに隣接するサブブロック３１ａへのアクセスが連続的に行われることになる。
【００３８】
このようなことから、サブブロック３１ａ毎にアクセス数をカウントする場合、シーケンシャルアクセスは、論理アドレス値を変化させていく方向に沿って、アクセス数が閾値Ｗ以上となるサブブロック３１ａが出現していくことになる。ストライドの変動量は、サブブロック３１ａ単位で無視される。このようなことから、不規則の度合いが大きい、或いは／及び、別のパターンによるアクセスが他に行われている疑似シーケンシャルアクセスであっても、高精度に検出することができる。ストライドの変動量を考慮する必要がないことから、シーケンシャルアクセスの検出もより容易に行えうことができる。
【００３９】
アクセス数が閾値Ｗ以上となるサブブロック３１ａの新たな出現は、連続的に行われるサブブロック３１ａが推移していく時間、つまり論理アドレス値を変化させる単位時間当たりの速度を表していると見なすことができる。このことから、本実施形態では、その速度を、新たに転送すべきブロック３１ａの転送を行うタイミングの決定に用いている。その速度については、以降「アドレス変化速度Ｓ」と呼ぶことにする。
【００４０】
このアドレス変化速度Ｓは、アドレス・時刻記録テーブル２１４ｂを参照し、各エントリに格納されたサブブロックアドレス値と時刻の相関の計算を通して求めることができる。そのサブブロックアドレス値と時刻の相関計算とは、例えば図４に表すように、横軸に時間、縦軸に時刻を取ったグラフ（相関図）を想定した場合、各エントリに格納されたサブブロックアドレス値と時刻とで特定される各点との距離が最小となる直線を特定する操作に相応する。
【００４１】
サブブロック３１ａを表すサブブロックアドレス値は、サブブロック３１ａのブロック３１上の位置を表す識別情報である。その識別情報としてサブブロックアドレス値を採用しているのは、ブロック３１によってサブブロック３１ａの数、及び各サブブロック３１ａのデータ量が異なる場合であっても対応可能にするためである。ブロック３１によってサブブロック３１ａの数、及び各サブブロック３１ａのデータ量が同じ場合、サブブロック３１ａのブロック３１上の位置を特定可能なデータは、サブブロックアドレス値の代わりとして用いることができる。このことから、上記の直線を特定する操作は、正規化することができる。
【００４２】
アドレス変化速度Ｓは、常に一定であるとは限らない。このことから、本実施形態では、予め定めた所定数Ｎ分、アクセス数が閾値Ｗ以上となったサブブロック３１ａをアドレス・時刻記録テーブル２１４ｂに登録するようにしている。そのために、登録したサブブロック３１ａが所定数Ｎとなった場合、最も前に登録したサブブロック３１ａ分を消去するようにしている。アドレス変化速度Ｓの計算は、所定数Ｎ分、サブブロック３１ａをアドレス・時刻記録テーブル２１４ｂに登録していることを条件に行うようにしている。図４に表すアドレス・時刻記録テーブル２１４ａは、所定数Ｎが４の場合のものである。
【００４３】
本実施形態では、アドレス変化速度Ｓを用いて、ブロック３１への主なアクセスが終了すると予想される時刻をデッドラインとして計算する。そのデッドラインまでの残り時間は、シーケンシャルアクセスの方向上のブロック３１の論理アドレス値の残り分をアドレス変化速度Ｓで割ることで計算することができる。論理アドレス値の残り分とは、シーケンシャルアクセスで論理アドレス値が変化していく方向上において、ブロック３１でアクセスが行われる対象と推測される論理アドレスの範囲である。その論理アドレスの範囲は、論理アドレス値を大きくなる方向に変化させるシーケンシャルアクセスでは、ブロック３１上で最大の論理アドレス値から、アクセス数が閾値Ｗ以上となったサブブロック３１ａのなかで最大となる論理アドレス値を引いて得られる値である。
【００４４】
図４に表記の「次ブロック開始アドレス」は、論理アドレス値が大きい側で隣接するブロック３１ａ上で最小の論理アドレス値を表している。そのブロック３１と論理アドレス値が小さい側で隣接するブロック３１の最大の論理アドレス値は、アクセスを行ううえでその最小の論理アドレス値と隣接する論理アドレス値である。その「次ブロック開始アドレス」を表記したグラフにおいて、点線で表す部分は、上記論理アドレスの範囲に相当する。
【００４５】
アクセス数が閾値Ｗ以上となったサブブロック３１ａのブロック３１上の位置によっては、所定数Ｎ分のサブブロック３１ａのアドレス・時刻記録テーブル２１４ｂへの登録が事実上、不可能となる。このことから、登録するサブブロック３１ａは所定数Ｎに制限しなくとも良く、アドレス変化速度Ｓの計算に所定数Ｎ以上のサブブロック３１ａの登録を条件にしなくとも良い。また、アドレス変化速度Ｓ、及びデッドラインを計算した場合に、アドレス・時刻記録テーブル２１４ａをリセット、つまり全てのエントリの情報を消去するようにしても良い。
【００４６】
ブロック３１は比較的に大きいデータ量であることから、その転送には比較的に長い時間（移動コスト）が必要である。ブロック３１の再配置のための転送では、通常、ＳＳＤ４０上から消去するブロック３１のハードディスク装置３０への書き込みを行った後、そのブロック３１が格納されていた領域に新たに転送されるブロック３１が書き込まれる。そのため、新たにブロック３１をＳＳＤ４０に格納する転送に要する転送時間Ｃは、ＳＳＤ４０からハードディスク装置３０への転送（書き込み）に要する時間と、ハードディスク装置３０からＳＳＤ４０への転送（書き込み）に要する時間とを含む時間となる。その転送時間Ｃは、ほぼ一定と見なすことができる。このことから、本実施形態では、計算したデッドラインには終了するように、基本的にはそのデッドラインの転送時間Ｃ前からブロック３１の転送を開始するようにしている。
【００４７】
そのようにＳＳＤ４０にブロック３１を転送するタイミングのスケジューリングを行う場合、転送によってＳＳＤ４０から消去するブロック３１をより長い時間、そのＳＳＤ４０上に残すことができる。殆どアクセスが行われていないようなブロック３１が消去対象であれば、転送すべきブロック３１の転送を直ちに行えば良い。このようなことから、ＳＳＤ４０上でブロック３１へのアクセスを行える可能性はより高くすることができる。
【００４８】
また、比較的に短い時間内に転送すべきブロック３１が複数、特定された場合には、デッドラインから転送を行ううえでの優先順位を設定し、設定した優先順位に従った転送を行うことができる。各ブロック３１のデッドライン、他に転送すべきブロック３１の数、等を考慮して、各ブロック３１へのアクセスがＳＳＤ４０上でより行えるように、各ブロック３１を転送することができる。
【００４９】
このようなことから、どのような状況であっても、ＳＳＤ４０の利用効率、つまりブロック３１へのアクセスがＳＳＤ４０上で行える確率はより向上させることができる。
【００５０】
ブロック３１は比較的に大きいデータ量であることから、その転送に要する転送時間Ｃは比較的に長い時間であり、ブロック３１の移動コストは小さくない。このことから、上記閾値Ｗは、その移動コストを考慮して設定される。より具体的には、ハードディスク装置３０へのアクセスに要する時間をＫ秒、ＳＳＤ４０へのアクセスに要する時間をＬ秒、サブブロック数をＢｓとした場合、閾値Ｗは以下の式から求めることができる。
Ｗ  ＝  Ｃ／（（Ｋ−Ｌ）・Ｂｓ）      ・・・  （１）
【００５１】
上記式（１）は、新たに転送するブロック３１全体に渡って、各サブブロック３１ａに少なくとも閾値Ｗ分のアクセスが行われるのを想定した場合のものである。閾値Ｗの計算に用いる式は、式（１）に限定されない。
【００５２】
図２に表すアクセス履歴記録部２１４は、ブロック３１毎に、アクセス数カウントテーブル２１４ａ、及びアドレス・時刻記録テーブル２１４ｂを管理し、必要に応じた操作を行う。アクセス解析部２１５は、ブロック３１毎に、アドレス・時刻記録テーブル２１４ａを参照して、シーケンシャルアクセスの検出を行い、その検出結果に応じて、ＳＳＤ４０に転送すべきブロック３１を特定し、そのブロック３１のデッドラインを決定する。アクセス解析部２１５は、決定したデッドラインから、転送すべきブロック３１を実際に転送するうえでのスケジューリングを行い、データ移動部２１２への指示を行う。それにより、アクセス解析部２１５は、ＳＳＤ４０の利用効率が最大となるように、ブロック３１の転送を制御する。
【００５３】
上記アクセス履歴記録部２１４、及びアドレス・時刻記録テーブル２１４ｂを機能として備えたＯＳ２１を実行するサーバ２０は、例えば図７に表すようなハードウェア構成である。ここで図７を参照し、本実施形態におけるサーバ２０として使用可能な情報処理装置の構成例について具体的に説明する。
【００５４】
この情報処理装置は、図７に表すように、ＣＰＵ（Central Processing Unit）７１、ＦＷＨ（Firm-Ware Hub）７２、メモリ（メモリモジュール）７３、ＮＩＣ（Network Interface Card）７４、ハードディスク装置（ＨＤ）７５、インタフェース（Ｉ／Ｆ）部７６、コントローラ７７、及びＢＭＣ（Baseboard Management Controller）７８を備えている。この構成は、サーバ２０として用いることが可能な情報処理装置の１例であり、本実施形態による情報処理装置として使用可能な情報処理装置の構成は、図７に表すようなものに限定されない。
【００５５】
ＦＷＨ７２は、ファームウェアを格納したメモリである。このファームウェアは、ＣＰＵ７１によってメモリ７３に読み出され実行される。ハードディスク装置７５には、ＯＳ２１、及びそのＯＳ２１上で動作する各種プログラム（例えばアプリケーション・プログラム。以降「アプリケーション」と略記）が格納されている。ＣＰＵ７１は、ファームウェアの起動が完了した後、コントローラ７７を介してハードディスク装置７５からＯＳ２１、及び実行すべき各種プログラムをメモリ７３上に読み出して実行することができる。ＮＩＣ７４を介した通信は、ファームウェア、或いはＯＳ２１の起動によって可能となる。
【００５６】
Ｉ／Ｆ部７６は、複数のストレージとの通信を行うアクセス部である。図２に表すハードディスク装置３０、及びＳＳＤ４０は、このＩ／Ｆ部７６と接続させることができる。Ｉ／Ｆ部７６を介した通信は、例えばファームウェアの起動によって可能となる。
【００５７】
ＮＩＣ７４は、ＬＡＮ（Local Area Network）等のネットワークを介した通信を可能にさせる。図２に表すハードディスク装置３０、及びＳＳＤ４０は、このＮＩＣ７４が通信可能なネットワークと接続させても良い。
【００５８】
ＢＭＣ７８は、情報処理装置を管理するための専用の管理装置である。ＢＭＣ７８は、ＣＰＵ７１のオン／オフ、各構成要素に発生するエラーの監視、等を行う。
【００５９】
図２に表すＯＳ２１は、ＣＰＵ７１がコントローラ７７を介してハードディスク装置７５からメモリ７３に読み出されて実行される。コントローラ７７を介したハードディスク装置７５へのＣＰＵ７１によるアクセスは、ＦＷＨ７２から読み出したファームウェアの実行を開始した後に行われる。それにより、ＯＳ２１が備えた全ての機能は、例えばＣＰＵ７１、ＦＷＨ７２、メモリ７３、コントローラ７７、及びハードディスク装置７５によって実現される。各ブロック３１のアクセス数カウントテーブル２１４ａ、及びアドレス・時刻記録テーブル２１４ｂは、通常、メモリ７３に保存される。
【００６０】
本実施形態によるデータ転送制御装置は、ＯＳ２１をＣＰＵ７１が実行することによって実現される。それにより、本実施形態による情報処理装置であるサーバ２０は、本実施形態によるデータ転送制御装置を搭載したものとなっている。サーバ２０は、搭載したデータ転送制御装置によるスケジューリングに従って、ハードディスク装置３０とＳＳＤ４０間のデータ転送を行うことにより、本実施形態による情報処理装置として機能する。
【００６１】
図５は、データ転送制御処理のフローチャートである。このデータ転送制御処理は、ＯＳ２１をＣＰＵ７１が実行することによって実現される処理である。アクセス履歴記録部２１４の全て、及びアクセス解析部２１５の大部分は、このデータ転送制御処理の実行によって実現される。次に図７を参照し、データ転送制御処理について詳細に説明する。
【００６２】
先ず、ＣＰＵ７１は、式（１）を用いて閾値Ｗを計算する（Ｓ１）。このＳ１に続くＳ２以降は、アプリケーションからの要求に発行したユーザリクエストを処理した場合に実行される一連の処理である。
【００６３】
Ｓ２では、ＣＰＵ７１は、ＳＳＤ（図７中「高速デバイス」と表記）４０上のブロック３１へのアクセスを行った場合に、実際にアクセスを行ったサブブロック３１ａのアクセス数をカウントアップ（インクリメント）する。次にＣＰＵ７１は、カウントアップ後のアクセス数が閾値Ｗ以上となったか否か判定する（Ｓ３）。そのアクセス数がカウントアップによって閾値Ｗ以上となった場合、Ｓ３の判定はＹｅｓとなってＳ４に移行する。そのアクセス数がカウントアップによって閾値Ｗ以上となっていない場合、つまり既にアクセス数が閾値Ｗ以上となっているか、或いはカウントアップ後のアクセス数が閾値Ｗ未満であった場合、Ｓ３の判定はＮｏとなって上記Ｓ２に戻る。それにより、次のユーザリクエストの処理に備える。
【００６４】
Ｓ４では、ＣＰＵ７１は、アクセスを行ったブロック３１のアドレス・時刻履歴テーブル２１４ｂ（図７中「アクセス履歴」と表記）に、アクセス数が閾値Ｗ以上となったサブブロック３１ａのブロック番号（図７中「サブブロックアドレス」と表記）、及び現在時刻を記録する。その後、ＣＰＵ７１は、アドレス・時刻履歴テーブル２１４ｂにブロック番号と時刻が登録されたサブブロック３１ａの数（図７中「記録数」）が所定数Ｎ以上か否か判定する（Ｓ５）。登録されたサブブロック３１ａの数が所定数Ｎ以上であった場合、Ｓ５の判定はＹｅｓとなってＳ６に移行する。そのサブブロック３１ａの数が所定数Ｎ未満であった場合、Ｓ５の判定はＮｏとなって上記Ｓ２に戻る。
【００６５】
Ｓ６では、ＣＰＵ７１は、アドレス・時刻記録テーブル２１４ｂを参照して、各エントリの時刻とサブブロックアドレス値の相関分析を行い、アドレス変化速度Ｓを計算する。次にＣＰＵ７１は、アドレス・時刻記録テーブル２１４ｂに、アクセスされる論理アドレス値が大きくなる方向に変化する上昇パターンのシーケンシャルアクセスが現れているか否か判定する（Ｓ７）。サブブロックアドレス値が小さいほうから大きいほうに、アクセス数が閾値Ｗ以上となったサブブロック３１ａが順次、登録されていた場合、Ｓ７の判定はＹｅｓとなってＳ８に移行する。サブブロックアドレス値が小さいほうから大きいほうに、アクセス数が閾値Ｗ以上となったサブブロック３１ａが順次、登録されていない場合、Ｓ７の判定はＮｏとなってＳ９に移行する。
【００６６】
Ｓ８では、ＣＰＵ７１は、アクセスしたブロック３１の論理アドレス値が大きい側に隣接するブロック（以降「上位隣接ブロック」と表記）３１をＳＳＤ４０に移動させるための上昇パターン処理を実行する。その実行後は、Ｓ１１に移行する。
【００６７】
一方、Ｓ９では、ＣＰＵ７１は、アドレス・時刻記録テーブル２１４ｂに、アクセスされる論理アドレス値が小さくなる方向に変化する下降パターンのシーケンシャルアクセスが現れているか否か判定する。サブブロックアドレス値が大きいほうから小さいほうに、アクセス数が閾値Ｗ以上となったサブブロック３１ａが順次、登録されていた場合、Ｓ９の判定はＹｅｓとなってＳ１０に移行する。サブブロックアドレス値が大きいほうから小さいほうに、アクセス数が閾値Ｗ以上となったサブブロック３１ａが順次、登録されていない場合、Ｓ９の判定はＮｏとなってＳ１１に移行する。Ｓ９でのＮｏの判定は、シーケンシャルアクセスが現れていないことを意味する。
【００６８】
Ｓ１０では、ＣＰＵ７１は、アクセスしたブロック３１の論理アドレス値が小さい側に隣接するブロック（以降「下位隣接ブロック」と表記）３１をＳＳＤ４０に移動させるための下降パターン処理を実行する。その実行後は、Ｓ１１に移行する。
【００６９】
Ｓ１１では、ＣＰＵ７１は、アドレス・時刻記録テーブル２１４ｂにサブブロックアドレス値と時刻が登録されたエントリのなかで最も前に登録されたエントリをクリアする。その後、上記Ｓ２に戻る。
【００７０】
図６は、上昇パターン処理のフローチャートである。次に、図６を参照し、上記データ転送制御処理内でＳ８として実行される上昇パターン処理について詳細に説明する。
【００７１】
先ず、ＣＰＵ７１は、デッドラインを計算する（Ｓ２１）。デッドラインの計算は、ブロック３１の最大アドレス値からアクセス数が閾値Ｗ以上となったサブブロック３１ａのなかの最大アドレス値を減算した値をアドレス変化速度Ｓで割って得られる時間を、現在時刻に加えることで行われる。デッドラインの計算後はＳ２２に移行する。
【００７２】
Ｓ２２では、ＣＰＵ７１は、上位隣接ブロック３１がＳＳＤ４０に移動済みか否か判定する。その上位隣接ブロック３１が既にＳＳＤ４０上に存在する場合、Ｓ２２の判定はＹｅｓとなり、ここで上昇パターン処理が終了する。その上位隣接ブロック３１がＳＳＤ４０上に存在しない場合、Ｓ２２の判定はＮｏとなってＳ２３に移行する。
【００７３】
Ｓ２３では、ＣＰＵ７１は、上位隣接ブロック３１がデッドラインまでにＳＳＤ４０上に移動されるように、その隣接ブロック３１の転送を行うスケジュールを設定する。その後、この上昇パターン処理が終了する。
【００７４】
データ転送制御処理でＳ１０として実行される下降パターン処理は、上記上昇パターン処理と基本的に同じ流れの一連の処理である。このことから、図６で付した符号をそのまま用いつつ、上昇パターン処理から異なる部分について詳細に説明する。
【００７５】
下降パターン処理では、Ｓ２１でのデッドラインの計算は、サブブロック３１ａの最小アドレス値からアクセス数が閾値Ｗ以上となったサブブロック３１ａのなかの最小アドレス値を減算した値を減算した値をアドレス変化速度Ｓで割って得られる時間を、現在時刻に加えることで行われる。Ｓ２２の判定は、下位隣接ブロック３１がＳＳＤ４０に移動済みか否かを確認するために行われる。Ｓ２３でのスケジューリングは、下位隣接ブロック３１がデッドラインまでにＳＳＤ４０上に移動されるように行われる。
【００７６】
このようにして、本実施形態では、ユーザリクエストを処理する度に、状況に応じて、ＳＳＤ４０に移動させるべきブロック３１の特定、及び特定したブロック３１を移動させるためのスケジューリングを行う。そのスケジューリングに従ったブロック３１の移動により、ＳＳＤ４０の利用効率は最大化されることとなる。
【００７７】
なお、上記実施形態では、サーバ２０はデータ転送制御装置を搭載するものとなっているが、データ転送制御装置は、ストレージ間のデータ転送を行う情報処理装置とは別の情報処理装置上に搭載させても良い。つまり、データ転送制御装置は、サーバ２０がブロック３１に対して行うアクセスを認識可能であれば、そのサーバ２０上に搭載させなくとも良い。このことから、データ転送制御装置は、階層化ストレージシステムを構成する１台の情報処理装置であれば良い。
【００７８】
以上の変形例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
ストレージにアクセス可能な情報処理装置に、
ストレージ上の単位とするデータ単位に複数含まれる部分データ単位毎に、前記部分データ単位に対するアクセス数を計数させ、
前記部分データ単位のなかで前記アクセス数が所定数以上となった各部分データ単位の前記データ単位上の位置、及び前記各部分データ単位のアクセス数が前記所定数以上となった時刻を基に、アクセスされるアドレス値が一方向に沿って変化するシーケンシャルアクセスを検出させる、
ことを特徴とするシーケンシャルアクセス検出方法。
【符号の説明】
【００７９】
２０    サーバ（情報処理装置）
２１    ＯＳ
３０    ハードディスク装置
３１    ブロック
３１ａ    サブブロック
４０    ＳＳＤ
２１１    データアクセス部
２１２    データ移動部
２１３    スケジューラ
２１４    アクセス履歴記録部
２１４ａ    アクセス数カウントテーブル
２１４ｂ    アドレス・時刻記録テーブル
２１５    アクセス解析部
【図５】
2014229144.tif 000003
【図６】
2014229144.tif 000004
【図７】
2014229144.tif 000005
【図１】
2014229144.tif 000006
【図２】
2014229144.tif 000007
【図３】
2014229144.tif 000008
【図４】
2014229144.tif 000009