(57)【特許請求の範囲】
【請求項１】
階層化ブロックストレージシステムと、前記階層化ブロックストレージシステムにアクセスするホスト機器とを備えるコンピュータシステムにおいて、
前記階層化ブロックストレージシステムは、階層化ブロックストレージ装置と、ストレージコントローラとを備え、
前記階層化ブロックストレージ装置は、アクセス応答性能の異なる複数種類のストレージ装置であって、前記アクセス応答性能にそれぞれ対応した階層に割り当てられた複数種類のストレージ装置を備え、
前記複数種類のストレージ装置の少なくとも２種類のストレージ装置のそれぞれ少なくとも一部の記憶領域は、第１のサイズの複数のブロックを備えた論理ディスクであって、前記ホスト機器によって利用されるファイルを格納するのに用いられる論理ディスクに割り当てられ、
前記ストレージコントローラは、モード切替部と、データ入出力制御部と、データ配置制御部とを備え、
前記ホスト機器は、ファイルシステムと、ルール入力部と、階層配置指示部と、ファイル指定部とを備え、
前記モード切替部は、前記ホスト機器からの要求に応じて、前記階層化ブロックストレージシステムの動作モードを第１のモードから第２のモードに切り替え、
前記データ入出力制御部は、前記ホスト機器からのアクセス要求に応じて前記論理ディスクにアクセスし、
前記ファイルシステムは、前記論理ディスクに格納されるファイル毎に、対応するファイルを示すファイルパスと当該対応するファイルが格納されている論理アドレス範囲との対応を管理し、前記ファイル指定部から、ファイルを構成するブロック列が格納された論理アドレス範囲へのアクセスが要求された場合、前記要求された論理アドレス範囲内のブロック列に前記データ入出力制御部を介してアクセスし、
前記ルール入力部は、外部からの要求に基づいて、ファイルを指定するためのファイルパス情報と、当該ファイルが配置されるべき階層を指定するため階層情報と、開始時刻情報とを含む階層配置ルールを入力し、
前記階層配置指示部は、前記階層配置ルール内の前記開始時刻情報によって示される開始時刻の到来に応じて、前記第２のモードへの切り替えを前記ストレージコントローラに要求し、
前記ファイル指定部は、前記階層配置ルール内の前記ファイルパス情報によって示される第１のファイルを構成する第１のブロック列が格納された論理アドレス範囲へのアクセスを前記ファイルシステムに要求し、
前記データ配置制御部は、前記第２のモードにおいてアクセスされた論理アドレス範囲内のブロック列を含むエクステントであって、論理アドレスが連続する第２の数のブロックから構成されるエクステント内のデータを、前記階層配置ルールによって指定される階層の記憶領域に移動する
コンピュータシステム。
【請求項２】
前記第１のファイルへのアクセスがリードアクセスである請求項１記載のコンピュータシステム。
【請求項３】
前記ファイル指定部は、前記第１のファイルを構成する第１のブロック列から一部のブロックを選択し、当該選択されたブロックが格納された論理アドレス範囲へのリードアクセスを、前記ファイルシステムを介して前記データ入出力制御部に要求する請求項２記載のコンピュータシステム。
【請求項４】
前記ファイル指定部は、前記第１のファイルを構成する前記第１のブロック列から、前記第２の数のブロック毎に先頭のブロックを選択し、且つ前記第１のブロック列の最終のブロックを選択する請求項３記載のコンピュータシステム。
【請求項５】
前記第１のファイルが断片化を起こしているために、当該第１のファイルが複数のセグメントから構成され、且つ前記複数のセグメントの各々が、論理アドレスが連続するブロック列から構成されている場合、前記ファイル指定部は、前記複数のセグメントのそれぞれから、前記第２の数のブロック毎に先頭のブロックを選択し、且つ対応するセグメントの最終のブロックを選択する請求項４記載のコンピュータシステム。
【請求項６】
前記ホスト機器は、前記第１のファイルを構成する前記第１のブロック列を、前記論理ディスク内の論理アドレスが連続する記憶領域に前記ファイルシステムによって複製させるファイル配置部を更に具備し、
前記ファイル指定部は、前記複製の後に、前記複製されたファイルを構成する前記第１のブロック列が格納された論理アドレス範囲へのリードアクセスを前記ファイルシステムを介して前記データ入出力制御部に要求する
請求項２記載のコンピュータシステム。
【請求項７】
前記階層配置ルールは、当該階層配置ルールの種別が第１の種別であるか、或いは第２の種別であるかを示すルール種別を含み、
前記階層配置ルールの種別が前記第１の種別である場合、前記階層配置ルールは前記ファイルパス情報を含み、前記階層配置ルールの種別が前記第２の種別である場合、前記階層配置ルールは、特定のアプリケーションを起動する第１のプログラムを指定するプログラム指定情報を含み、
前記階層配置指示部は、前記階層配置ルールの種別が前記第２の種別である場合、前記プログラム指定情報によって指定される第１のプログラムを起動し、
前記ファイルシステムは、前記第１のプログラムによって前記特定のアプリケーションが起動されて、前記特定のアプリケーションから前記論理ディスクへのアクセスが要求された場合、要求された論理アドレス範囲内のブロック列に前記データ入出力制御部を介してアクセスする
請求項１記載のコンピュータシステム。
【請求項８】
前記ストレージコントローラは、前記第２の数のブロックから構成されるそれぞれのエクステントに対応付けられたエントリを含むエクステント管理テーブルを更に備え、
前記エントリの各々にはエクステント情報が保持され、
前記エクステント情報は、対応するエクステントの論理アドレス範囲及び物理アドレス範囲を示すアドレス情報と、当該対応するエクステントが移動されるべき階層を指定する階層情報と、当該対応するエクステントが指定の階層に移動されるべきかを示す階層移動フラグとを含み、
前記データ配置制御部は、前記第２のモードにおいて、前記データ入出力制御部が前記ホスト機器からのアクセス要求に応じて前記論理ディスクにアクセスした場合、前記アクセスされた論理アドレス範囲内のブロック列を含むエクステントに対応付けられた、前記エクステント管理テーブルのエントリ内の前記階層移動フラグを、当該エクステントが指定の階層に移動されるべきであることを示す第１の状態に設定し、
前記データ配置制御部は、前記階層配置指示部によって前記第２のモードから前記第１のモードへの切り替えが要求された場合、前記エクステント管理テーブルを参照し、前記第１の状態に設定されている階層移動フラグを含むエントリに対応するエクステントを、指定される階層に移動されるべきエクステントと特定する
請求項１記載のコンピュータシステム
【請求項９】
前記ホスト機器は、ファイル抽出部を更に備え、
前記階層配置指示部は、前記階層配置ルールに基づいてファイルパスの抽出を前記ファイル抽出部に要求し、
前記ファイル抽出部は、前記ファイルパス抽出要求に応じて、前記階層配置ルール内の前記ファイルパス情報の示すファイルパスを前記ファイルシステムから抽出し、
前記第１のファイルは、前記抽出されたファイルパスによって示される
請求項１記載のコンピュータシステム。
【請求項１０】
アクセス応答性能の異なる複数種類のストレージ装置であって、前記アクセス応答性能にそれぞれ対応した階層に割り当てられた複数種類のストレージ装置を備え、前記複数種類のストレージ装置の少なくとも２種類のストレージ装置のそれぞれ少なくとも一部の記憶領域が、第１のサイズの複数のブロックを備えた論理ディスクであって、ホスト機器によって利用されるファイルを格納するのに用いられる論理ディスクに割り当てられる階層化ブロックストレージ装置を具備する階層化ストレージシステムにおいて、前記ホスト機器からのアクセス要求を処理するストレージコントローラにおいて、
前記ホスト機器への外部からの要求に基づいて、ファイルを指定するためのファイルパス情報と、当該ファイルが配置されるべき階層を指定するため階層情報と、開始時刻情報とを含む階層配置ルールが前記ホスト機器に入力され、前記階層配置ルール内の前記開始時刻情報によって示される開始時刻の到来に応じて、前記ホスト機器から前記ストレージコントローラに第１のモードから第２のモードへの切り替えが要求された場合、前記階層化ブロックストレージシステムの動作モードを前記第１のモードから前記第２のモードに切り替えるモード切替部と、
前記階層配置ルール内の前記ファイルパス情報によって示される第１のファイルを構成する第１のブロック列が格納された論理アドレス範囲へのアクセスが、前記ホスト機器から前記ストレージコントローラに要求された場合、前記論理ディスクの前記要求された論理アドレス範囲内の前記第１のブロック列にアクセスするデータ入出力制御部と、
前記第２のモードにおいてアクセスされた論理アドレス範囲内のブロック列を含むエクステントであって、論理アドレスが連続する第２の数のブロックから構成されるエクステント内のデータを、前記階層配置ルールによって指定される階層の記憶領域に移動するデータ配置制御部と
を具備するストレージコントローラ。
【請求項１１】
アクセス応答性能の異なる複数種類のストレージ装置であって、前記アクセス応答性能にそれぞれ対応した階層に割り当てられた複数種類のストレージ装置を備え、前記複数種類のストレージ装置の少なくとも２種類のストレージ装置のそれぞれ少なくとも一部の記憶領域が、第１のサイズの複数のブロックを備えた論理ディスクであって、ホスト機器によって利用されるファイルを格納するのに用いられる論理ディスクに割り当てられる階層化ブロックストレージ装置を具備する階層化ストレージシステムにおいて、前記ホスト機器からのアクセス要求を処理するストレージコントローラに、
前記ホスト機器への外部からの要求に基づいて、ファイルを指定するためのファイルパス情報と、当該ファイルが配置されるべき階層を指定するため階層情報と、開始時刻情報とを含む階層配置ルールが前記ホスト機器に入力され、前記階層配置ルール内の前記開始時刻情報によって示される開始時刻の到来に応じて、前記ホスト機器から前記ストレージコントローラに第１のモードから第２のモードへの切り替えが要求された場合、前記階層化ブロックストレージシステムの動作モードを前記第１のモードから前記第２のモードに切り替えることと、
前記階層配置ルール内の前記ファイルパス情報によって示される第１のファイルを構成する第１のブロック列が格納された論理アドレス範囲へのアクセスが、前記ホスト機器から前記ストレージコントローラに要求された場合、前記論理ディスクの前記要求された論理アドレス範囲内の前記第１のブロック列にアクセスすることと、
前記第２のモードにおいてアクセスされた論理アドレス範囲内のブロック列を含むエクステントであって、論理アドレスが連続する第２の数のブロックから構成されるエクステント内のデータを、前記階層配置ルールによって指定される階層の記憶領域に移動すること
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラムに関する。
【背景技術】
【０００２】
近年、ストレージ階層化技術を利用した種々のストレージ装置、いわゆる階層化ブロックストレージ装置が開発されている。ストレージ階層化技術は、アクセス応答性能の異なる複数種類のストレージ装置の物理的な記憶領域（以下、物理ボリュームと称する）を束ねる。これによりストレージ階層化技術は、複数の物理ボリュームを実体として有する少なくとも１つの仮想的な記憶領域（以下、論理ボリュームと称する）を構成する。論理ボリュームは論理ディスクとも呼ばれ、ホスト機器（コンピュータ）から認識可能である。【０００３】
ストレージ階層化技術では、同種類のストレージ装置（物理ボリューム）の集合は、「階層」と呼ばれる。一般にアクセス応答性能が高いストレージ装置ほど、上位の階層に割り当て（位置付け）られる。つまり、階層化ブロックストレージ装置は、階層の異なる複数種類のストレージ装置を備え、論理ディスクは、このような階層の異なるストレージ装置の物理ボリュームを用いて構成される。【０００４】
階層化ブロックストレージ装置を備えたコンピュータシステムでは、指定のファイルが指定の階層に配置されることが要求される。一般に、階層化ブロックストレージ装置は、ファイルを認識することはできない。そこで従来技術では、階層化ブロックストレージ装置に特別なファイルシステム（ファイルシステムプログラム）が設けられる。この特別なファイルシステムは、ホスト機器によって利用されるファイルと、当該ファイルを構成するブロックの論理ディスク上の位置とを対応付ける。これにより階層化ブロックストレージ装置（より詳細には、階層化ブロックストレージ装置のストレージコントローラ）は、指定のファイルを構成するブロックを特定して、当該特定されたブロックを指定の階層に配置することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２９５４５７号公報
【特許文献２】特開２０１０−２５７０９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、従来技術は、指定のファイルを指定の階層に配置する機能を、階層化ブロックストレージ装置に設けられた特別のファイルシステムにより実現している。つまり、従来技術では、階層化ブロックストレージ装置は、特別のファイルシステムを必要とする。【０００７】
本発明が解決しようとする課題は、階層化ブロックストレージ装置側にファイルシステムを必要とすることなく、指定のファイルを指定の階層に配置することができる、コンピュータシステム、ストレージコントローラ、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
実施形態によれば、コンピュータシステムは、階層化ブロックストレージシステムと、ホスト機器とを備える。前記ホスト機器は、前記階層化ブロックストレージシステムにアクセスする。前記階層化ブロックストレージシステムは、階層化ブロックストレージ装置と、ストレージコントローラとを備える。前記階層化ブロックストレージ装置は、アクセス応答性能の異なる複数種類のストレージ装置を備える。前記複数種類のストレージ装置は、前記アクセス応答性能にそれぞれ対応した階層に割り当てられる。前記複数種類のストレージ装置の少なくとも２種類のストレージ装置のそれぞれ少なくとも一部の記憶領域は、第１のサイズの複数のブロックを備えた論理ディスクに割り当てられる。前記論理ディスクは、前記ホスト機器によって利用されるファイルを格納するのに用いられる。前記ストレージコントローラは、モード切替部と、データ入出力制御部と、データ配置制御部とを備える。前記ホスト機器は、ファイルシステムと、ルール入力部と、階層配置指示部と、ファイル指定部とを備える。前記モード切替部は、前記ホスト機器からの要求に応じて、前記階層化ブロックストレージシステムの動作モードを第１のモードから第２のモードに切り替える。前記データ入出力制御部は、前記ホスト機器からのアクセス要求に応じて前記論理ディスクにアクセスする。前記ファイルシステムは、前記論理ディスクに格納されるファイル毎に、対応するファイルを示すファイルパスと当該対応するファイルが格納されている論理アドレス範囲との対応を管理する。前記ファイルシステムは更に、前記ファイル指定部から、ファイルを構成するブロック列が格納された論理アドレス範囲へのアクセスが要求された場合、前記要求された論理アドレス範囲内のブロック列に前記データ入出力制御部を介してアクセスする。前記ルール入力部は、外部からの要求に基づいて、ファイルを指定するためのファイルパス情報と、当該ファイルが配置されるべき階層を指定するため階層情報と、開始時刻情報とを含む階層配置ルールを入力する。前記階層配置指示部は、前記階層配置ルール内の前記開始時刻情報によって示される開始時刻の到来に応じて、前記第２のモードへの切り替えを前記ストレージコントローラに要求する。前記ファイル指定部は、前記階層配置ルール内の前記ファイルパス情報によって示される第１のファイルを構成する第１のブロック列が格納された論理アドレス範囲へのアクセスを前記ファイルシステムに要求する。前記データ配置制御部は、前記第２のモードにおいてアクセスされた論理アドレス範囲内のブロック列を含むエクステントであって、論理アドレスが連続する第２の数のブロックから構成されるエクステント内のデータを、前記階層配置ルールによって指定される階層の記憶領域に移動する。
【図面の簡単な説明】
【０００９】
【図１】図１は、１つの実施形態に係るコンピュータシステムの典型的なハードウェア構成を示すブロック図である。
【図２】図２は、図１に示される階層化ストレージシステム及びホスト機器の典型的な機能構成を主として示すブロック図である。
【図３】図３は、同実施形態におけるエクステント管理テーブルのデータ構造の例を示す図である。
【図４】図４は、同実施形態におけるファイル−論理アドレス管理テーブルのデータ構造の例を示す図である。
【図５】図５は、同実施形態における階層配置ルールリストのデータ構造の例を示す図である。
【図６】図６は、同実施形態におけるファイルパスリストのデータ構造の例を示す図である。
【図７】図７は、同実施形態においてホスト機器側で実行される階層配置処理の典型的な手順を説明するためのフローチャートである。
【図８】図８は、図７に示される階層配置処理に含まれているブロックアクセス処理の典型的な手順を説明するためのフローチャートである。
【図９】図９は、同実施形態において階層化ストレージシステム側で実行される階層配置処理の典型的な手順を説明するためのフローチャートである。
【図１０】図１０は、同実施形態の第１の変形例におけるファイル配置処理の概要を説明するための図である。
【図１１】図１１は、同第１の変形例においてホスト機器側で実行されるファイル配置処理の典型的な手順を説明するためのフローチャートである。
【図１２】図１２は、同実施形態の第２の変形例における部分リード処理の概要を説明するための図である。
【図１３】図１３は、第２の変形例においてホスト機器側で実行される部分リード処理の典型的な手順を説明するためのフローチャートである。
【発明を実施するための形態】
【００１０】
以下、種々の実施の形態につき図面を参照して説明する。  
図１は、１つの実施形態に係るコンピュータシステムの典型的なハードウェア構成を示すブロック図である。コンピュータシステムは、階層化ストレージシステム１０及びホスト機器２０から構成される。階層化ストレージシステム１０（より詳細には、階層化ストレージシステム１０のストレージコントローラ１２）は、ファイバチャネル（ＦＣ）、スモールコンピュータシステムインタフェース（ＳＣＳＩ）、シリアルアタッチドＳＣＳＩ（ＳＡＳ）、インターネットＳＣＳＩ（ｉＳＣＳＩ）、イーサネット（登録商標）、或いはシリアルＡＴアタッチメント（ＳＡＴＡ）のようなホストインタフェースバス３０を介してホスト機器２０と接続されている。ホスト機器２０は、階層化ストレージシステム１０を外部ストレージ装置として利用する。なお、階層化ストレージシステム１０が、ストレージエリアネットワーク（ＳＡＮ）、インターネット或いはイントラネットのようなネットワークを介してホスト機器２０と接続されていても良い。更に、階層化ストレージシステム１０が、ホスト機器２０を含む複数のホスト機器と接続されていても良い。
【００１１】
階層化ストレージシステム１０は、階層化ブロックストレージ装置１１と、ストレージコントローラ１２とから構成される。階層化ブロックストレージ装置１１は、高速ストレージ装置（第１の種類のストレージ装置）１１１と、低速ストレージ装置（第２の種類のストレージ装置）１１２とを備えている。高速ストレージ装置１１１及び低速ストレージ装置１１２は、ＦＣ、ＳＣＳＩ、ＳＡＳ、ｉＳＣＳＩ、イーサネット、或いはＳＡＴＡのようなストレージインタフェースバス１３を介してストレージコントローラ１２と接続されている。
【００１２】
高速ストレージ装置１１１は、例えば、フラッシュアレイのような、アクセス応答性能に優れた（つまり、アクセス速度が高速な）フラッシュストレージ装置から構成される。フラッシュストレージ装置は、複数のフラッシュメモリボードを用いて実現される。フラッシュメモリボードの各々は、フラッシュメモリの集合を含む。本実施形態では、複数のフラッシュメモリボードの各々はハードディスクドライブ（ＨＤＤ）との互換性を有していないものとする。しかし、複数のフラッシュメモリボードに代えて、ＨＤＤとの互換性を有する複数のソリッドステートドライブ（ＳＳＤ）が用いられても構わない。
【００１３】
一方、低速ストレージ装置１１２は、例えば、高速ストレージ装置１１１（フラッシュストレージ装置）と比較してアクセス応答性能が低い（つまり、アクセス速度が低速な）ハードディスクドライブ（ＨＤＤ）アレイから構成される。ＨＤＤアレイは、例えば、複数のＨＤＤを備えたＲＡＩＤ（Redundant Arrays of Inexpensive DisksまたはRedundant Arrays of Independent Disks）構成のストレージ装置である。なお、高速ストレージ装置１１１及び低速ストレージ装置１１２が必ずしもアレイ構成を有している必要はない。
【００１４】
高速ストレージ装置１１１及び低速ストレージ装置１１２は、第１のサイズのデータの塊を最小単位としてアクセスが可能である。この第１のサイズのデータの塊はブロックと呼ばれる。このため、高速ストレージ装置１１１及び低速ストレージ装置１１２は、ブロックストレージ装置と呼ばれる。
【００１５】
上述のように、図１に示される階層化ストレージシステム１０（階層化ブロックストレージ装置１１）には、アクセス応答性能（アクセス速度）の異なる２つ（２種類）のストレージ装置（つまり、高速ストレージ装置１１１及び低速ストレージ装置１１２）が存在する。この場合、高速ストレージ装置１１１は上位階層（高速階層、第１の階層）に、低速ストレージ装置１１２は下位階層（低速階層、第２の階層）に、それぞれ割り当てられる。なお、階層化ストレージシステム１０が、例えば磁気テープ装置のような、低速ストレージ装置１１２よりも更に低速（低階層、第３の階層）のストレージ装置（第３の階層のストレージ装置）を備えていても良い。
【００１６】
ストレージコントローラ１２は、ホストインタフェースコントローラ（以下、ＨＩＦＣと称する）１２０と、ストレージインタフェースコントローラ（以下、ＳＩＦＣと称する）１２１と、メモリ１２２と、ＨＤＤ１２３と、ＣＰＵ１２４とを備えている。
【００１７】
ＨＩＦＣ１２０は、ホスト機器２０との間のデータ転送（データ転送プロトコル）を制御する。ＨＩＦＣ１２０は、ホスト機器２０からの論理ボリュームに対するデータアクセス要求（リード要求またはライト要求）を受信し、当該データアクセス要求に対する応答を返信する。ＨＩＦＣ１２０は、ホスト機器２０からデータアクセス要求を受信すると、当該要求を、ＣＰＵ１２４に伝達する。データアクセス要求を受け取ったＣＰＵ１２４は、当該データアクセス要求を処理する。
【００１８】
ＳＩＦＣ１２１は、ＣＰＵ１２４が受信したホスト機器２０からのデータアクセス要求（論理ボリュームに対するライト要求またはリード要求）に基づく入出力（Ｉ／Ｏ）要求を受信する。ＳＩＦＣ１２１は、受信されたＩ／Ｏ要求に応じて、高速ストレージ装置１１１または低速ストレージ装置１１２へのアクセスを実行する。
【００１９】
メモリ１２２は、ＤＲＡＭのような書き換えが可能な揮発性メモリである。メモリ１２２の一部の領域は、ＨＤＤ１２３からロードされるストレージ制御プログラムを格納するのに用いられる。メモリ１２２の他の一部の領域は、ＣＰＵ１２４のためのワーク領域として用いられる。
【００２０】
ＨＤＤ１２３には、ストレージ制御プログラムが格納されている。ＣＰＵ１２４は、ストレージコントローラ１２が起動されたときにイニシャルプログラムローダ（ＩＰＬ）を実行することにより、ＨＤＤ１２３に格納されているストレージ制御プログラムをメモリ１２２にロードする。ＩＰＬは、読み出し専用メモリ（ＲＯＭ）またはフラッシュＲＯＭ（ＦＲＯＭ）のような不揮発性メモリに格納されている。
【００２１】
ＣＰＵ１２４は、メモリ１２２にロードされたストレージ制御プログラムに従い、後述のモード切替部１２５、データ入出力制御部１２６及びデータ配置制御部１２７として機能する。つまりＣＰＵ１２４は、メモリ１２２に格納されているストレージ制御プログラムを実行することで、階層化ストレージシステム１０全体（特にストレージコントローラ１２内の各部）を制御する。
【００２２】
ホスト機器２０は、ＳＩＦＣ（インタフェースコントローラ）２０１と、メモリ２０２と、ＨＤＤ２０３と、ＣＰＵ２０４とを備えている。ＳＩＦＣ２０１は、階層化ストレージシステム１０のストレージコントローラ１２（より詳細には、ストレージコントローラ１２のＨＩＦＣ１２０）との間のデータ転送を制御する。ＳＩＦＣ２０１は、ＣＰＵ２０４からのデータアクセス要求をストレージコントローラ１２に送信し、当該データアクセス要求に対するストレージコントローラ１２からの応答を受信する。ＳＩＦＣ２０１は、ストレージコントローラ１２からの応答を受信すると、当該応答を、ＣＰＵ２０４に伝達する。
【００２３】
メモリ２０２は、メモリ１２２と同様に、ＤＲＡＭのような書き換えが可能な揮発性メモリである。メモリ２０２の一部の領域は、ＨＤＤ２０３からロードされるオペレーティングシステム（ＯＳ）及び種々のプログラムを格納するのに用いられる。メモリ２０２の他の一部の領域は、ＣＰＵ２０４のためのワーク領域として用いられる。
【００２４】
ＨＤＤ２０３には、ＯＳ及び複数のプログラムが格納されている。複数のプログラムは、アプリケーションプログラム（以下、アプリケーションと称する）及びユーティリティプログラムを含む。ＣＰＵ２０４は、ホスト機器２０が起動されたときに、ＲＯＭまたはＦＲＯＭのような不揮発性メモリ格納されているＩＰＬを実行することにより、ＨＤＤ２０３に格納されているＯＳをメモリ２０２にロードする。またＣＰＵ２０４は、ＨＤＤ２０３に格納されているプログラムを適宜メモリ２０２にロードする。
【００２５】
ＣＰＵ２０４は、メモリ２０２にロードされた特定のプログラム（例えば、特定のユーティリティプログラム）及びＯＳに従い、後述のルール入力部２１、階層配置指示部２２、ファイル抽出部２３、ファイル指定部２４、ファイルシステム２５（より詳細には、ファイルシステム２５のファイルアクセス制御部２５１）、及びファイル配置部２６として機能する。本実施形態では、ＣＰＵ２０４は、特定のユーティリティプログラムに従い、ルール入力部２１、階層配置指示部２２、ファイル抽出部２３及びファイル配置部２６として機能し、ＯＳに従い、ファイル指定部２４及びファイルシステム２５（ファイルアクセス制御部２５１）として機能する。
【００２６】
図２は、図１に示される階層化ストレージシステム１０及びホスト機器２０の典型的な機能構成を主として示すブロック図である。階層化ストレージシステム１０の階層化ブロックストレージ装置１１は、論理ディスク１１０を備えている。本実施形態では、説明の簡略化のために、階層化ブロックストレージ装置１１が１つの論理ディスク（１１０）を備えている場合を想定している。しかし、階層化ブロックストレージ装置１１が、複数の論理ディスクを備えていても構わない。
【００２７】
論理ディスク１１０は、論理ボリュームとも呼ばれ、仮想的な記憶領域（いわゆる、論理アドレス空間）を有する。この仮想的な記憶領域は、管理のために第１のサイズの複数の論理ブロックに分割される。つまり、論理ディスク１１０は、複数の論理ブロックを備えている。複数の論理ブロックはそれぞれ論理ブロックアドレス（ＬＢＡ）で指定される。仮想的な記憶領域は更に、管理のために第２のサイズの複数の論理エクステントにも分割される。第２のサイズは、Ｎを１より大きい整数とすると、第１のサイズのＮ倍である。つまり、論理エクステントの各々は、Ｎ個の連続するＬＢＡで指定されるＮ個の論理ブロックから構成される。本実施形態において、Ｎは８，１９２である。しかし、Ｎが８，１９２以外の１より大きい整数であっても構わない。なお、以下の説明では、論理ブロック及び論理エクステントが、それぞれ単にブロック及びエクステントと称されることもある。
【００２８】
論理ディスク１１０の仮想的な記憶領域の一部には、高速ストレージ装置１１１の少なくとも一部の記憶領域（つまり物理ボリューム）が割り当てられる（つまりマッピングされる）。また、この仮想的な記憶領域の他の一部には、低速ストレージ装置１１２の少なくとも一部の記憶領域が割り当てられる。このように、論理ディスク１１０は、階層の異なる複数の物理ボリューム（ここでは、上位階層の物理ボリューム及び下位階層の物理ボリューム）を実体として有する。つまり論理ディスク１１０（より詳細には論理ディスク１１０の実体）は、高速ストレージ装置１１１及び低速ストレージ装置１１２内の物理ボリューム（第１及び第２の物理ボリューム）を組み合わせて構成される。第１及び第２の物理ボリュームの各々は、論理ブロックと同一サイズ（第１のサイズ）の複数の物理ブロックを備えている。論理ディスク１１０には、例えばホスト機器２０によって利用されるファイルが格納される。このファイルは、１つ以上のブロックから構成される。
【００２９】
階層化ストレージシステム１０のストレージコントローラ１２は、モード切替部１２５、データ入出力制御部１２６及びデータ配置制御部１２７を備えている。これらの機能要素１２５乃至１２７は、図１に示されるストレージコントローラ１２のＣＰＵ１２４がストレージ制御プログラムを実行することにより実現されるソフトウェアモジュールである。しかし、機能要素１２５乃至１２７の少なくとも１つがハードウェアモジュールによって実現されても構わない。
【００３０】
モード切替部１２５は、階層化ストレージシステム１０の動作モードを切り替える。本実施形態において、階層化ストレージシステム１０のストレージコントローラ１２は、少なくとも通常モード（第１のモード）及び領域配置モード（第２のモード）でそれぞれ動作可能である。通常モードとは、ホスト機器２０によって要求された論理ディスク１１０内の１つ以上のブロックへのアクセスを実行するための動作モードを指す。以下の説明では簡略化のために、特に断らない限り、１つを超えるブロックへのアクセスを前提とする。領域配置モードとは、ホスト機器２０によって要求されたブロックへのアクセスに加えて、主として次の第１及び第２の動作を実行するための動作モードを指す。第１の動作は、アクセスされたブロックを含むエクステントに対応付けられた階層移動フラグをオンすることを含む。階層移動フラグについては後述する。第２の動作は、ホスト機器２０によって領域配置モードの終了が指定された場合に、オン状態にある階層移動フラグに対応する全てのエクステントを指定の階層の記憶領域に配置して、しかる後に、階層化ストレージシステム１０の動作モードを領域配置モードから通常モードに切り替えることを含む。
【００３１】
データ入出力制御部１２６は、ホスト機器２０によって要求された論理ディスク１１０内のブロックにアクセスする。データ配置制御部１２７は、上述の階層移動フラグを操作し、且つオン状態にある階層移動フラグに対応する全てのエクステントを指定の階層の記憶領域に配置する。
【００３２】
ストレージコントローラ１２は、エクステント管理テーブル１２８を更に備える。エクステント管理テーブル１２８は、図１に示されるストレージコントローラ１２のＨＤＤ１２３に保存されており、必要に応じて（例えば、当該ストレージコントローラ１２の起動時に）ＨＤＤ１２３からメモリ１２２にロードされる。
【００３３】
図３は、エクステント管理テーブル１２８のデータ構造の例を示す。エクステント管理テーブル１２８は、論理ディスク１１０のエクステントにそれぞれ対応付けられたエントリを有する。エクステント管理テーブル１２８の各エントリは、エクステント識別子（ＩＤ）フィールド、ＬＢＡフィールド、物理ストレージＩＤフィールド、物理ストレージアドレスフィールド、及び階層移動フラグフィールドを含む。階層移動フラグフィールドは、対応するエクステントが指定の階層に移動されるべきかを示す階層移動フラグを保持するのに用いられる。
【００３４】
エクステントＩＤフィールドは、対応するエクステントを識別するためのＩＤ（エクステントＩＤ）を保持するのに用いられる。ＬＢＡフィールドは、対応するエクステントを構成するＮ個の連続するブロック（論理ブロック）に関するＬＢＡ情報を保持するのに用いられる。本実施形態では、ＬＢＡ情報は、対応するエクステントの先頭ブロック及び最終ブロックのそれぞれＬＢＡを含む。つまり、ＬＢＡ情報は、対応するエクステントのＬＢＡ範囲を示す。
【００３５】
物理ストレージＩＤフィールドは、対応するエクステント内のＮ個の連続するブロックに割り当てられたＮ個の物理ブロックを含む記憶装置（物理ストレージ装置）を識別するためのＩＤ（物理ストレージＩＤ）を保持するのに用いられる。物理ストレージアドレスフィールドは、対応するエクステント内のＮ個の連続する論理ブロック（つまり、Ｎ個の論理ブロックの列）に割り当てられたＮ個の物理ブロックに関する物理ストレージアドレス情報を保持するのに用いられる。
【００３６】
本実施形態では、Ｎ個の物理ブロックは対応する物理ストレージ装置において連続している。物理ストレージアドレス情報は、この連続するＮ個の物理ブロックの先頭物理ブロック及び最終物理ブロックのそれぞれ物理ストレージアドレスを含む。つまり、物理ストレージアドレス情報は、対応するエクステントの物理アドレス範囲を示す。
【００３７】
このように、エクステント管理テーブル１２８のエントリの各々には、対応するエクステントを管理するのに用いられるエクステント情報が保持される。このエクステント情報は、エクステントＩＤ、ＬＢＡ情報、物理ストレージＩＤ、物理ストレージアドレス情報及び階層移動フラグを含む。
【００３８】
なお、階層化ブロックストレージ装置１１が複数の論理ディスクを備えている場合、当該複数の論理ディスクにそれぞれ対応付けて、当該複数の論理ディスクと同数のエクステント管理テーブル１２８が用意されれば良い。また、エクステント管理テーブル１２８の各エントリに、論理ディスクＩＤフィールドを追加するならば、当該エクステント管理テーブル１２８を、複数の論理ディスクに共通に用いることも可能である。これらは、例えば、後述のファイル−論理アドレス管理テーブル２５２においても同様である。
【００３９】
ホスト機器２０は、図２に示されているように、ルール入力部２１、階層配置指示部２２、ファイル抽出部２３、ファイル指定部２４、ファイルシステム２５、及びファイル配置部２６を備えている。ファイルシステム２５は、ファイルアクセス制御部２５１を含む。前述したように、これらの機能要素２１乃至２６（より詳細には、機能要素２１乃至２４，２６及び２５１）は、図１に示されるホスト機器２０のＣＰＵ２０４が特定のプログラム及びＯＳを実行することにより実現されるソフトウェアモジュールである。しかし、機能要素機能要素２１乃至２６の少なくとも１つがハードウェアモジュールによって実現されても構わない。ファイルシステム２５は、ファイル−論理アドレス管理テーブル２５２を更に含む。
【００４０】
ホスト機器２０はまた、階層配置ルールリスト２７、ファイルパスリスト２８及びアプリケーション２９を備えている。階層配置ルールリスト２７、ファイルパスリスト２８、アプリケーション２９及びファイル−論理アドレス管理テーブル２５２は、図１に示されるホスト機器２０のＨＤＤ２０３に保存されており、必要に応じて（例えば、当該当ホスト機器２０の起動時に）ＨＤＤ２０３からメモリ２０２にロードされる。
【００４１】
ルール入力部２１は、ホスト機器２０の外部から階層配置ルール（より詳細には、階層配置ルールが記述された階層配置ルール情報）を入力する。階層配置ルールとは、指定のファイルを構成するブロックを含むエクステントを、指定階層に移動（配置）するためのルールを指す。階層配置ルールの詳細については後述する。ルール入力部２１によって入力された階層配置ルールは、階層配置ルールリスト２７に保持される。
【００４２】
階層配置指示部２２は、階層配置ルールリスト２７内の階層配置ルールで指定されたファイルを構成するブロックを含むエクステントを当該ルールで指定された階層に移動するために、ストレージコントローラ１２内のモード切替部１２５と、ホスト機器２０内のファイル抽出部２３、ファイル指定部２４及びファイル配置部２６とを制御する。ファイル抽出部２３は、階層配置ルールによって示されるファイルパスを全て抽出する。抽出されたファイルパスはファイルパスリスト２８に保持される。
【００４３】
ファイル指定部２４は、ファイルパスリスト２８に保持されているファイルパス毎に、対応するファイルパスで指定されるファイルへのアクセスを、ファイルシステム２５のファイルアクセス制御部２５１に対して要求する。ファイルシステム２５は、階層化ブロックストレージ装置１１内の論理ディスク（図２の例では、論理ディスク１１０）に格納されるファイルと当該ファイルを構成するブロックの集合（より詳細には、１つ以上のブロック列）との対応を管理し、且つ当該論理ディスクへのアクセスを制御する周知の機能を有する。一方、階層化ストレージシステム１０（より詳細には、階層化ストレージシステム１０のストレージコントローラ１２）は、論理ディスク内のいずれのブロックの集合がいずれのファイルに対応付けられているかを考慮しない。
【００４４】
ファイルシステム２５のファイルアクセス制御部２５１は、ファイル指定部２４によって要求されたファイルを構成するブロックに、ストレージコントローラ１２のデータ入出力制御部１２６を介してアクセスする。ファイル配置部２６は、ファイルパスリスト２８に保持されているファイルパスで指定されるファイルを構成するブロックの集合が論理ディスク１１０内で連続するように再配置する。ファイル配置部２６は、後述の第１の変形例で用いられる。
【００４５】
図４は、ファイル−論理アドレス管理テーブル２５２のデータ構造の例を示す。ファイル−論理アドレス管理テーブル２５２は、ファイルシステム２５によって管理されるファイルにそれぞれ対応付けられたエントリを有する。ファイル−論理アドレス管理テーブル２５２の各エントリは、ファイルパスフィールド、及びＬＢＡフィールドを含む。
【００４６】
ファイルパスフィールドは、対応するファイルのファイルパス（より詳細には、ファイルパスを示す情報）を保持するのに用いられる。ＬＢＡフィールドは、対応するファイルを構成するブロックの集合に関するＬＢＡ情報を保持するのに用いられる。ここで、対応するファイルを構成するブロックの全てが、論理ディスク１１０（より詳細には、論理ディスク１１０の仮想的な記憶領域）において連続しているものとする。この場合、ＬＢＡ情報は、前記連続するブロック（つまり、ＬＢＡが連続するブロックの列）内の先頭ブロック及び最終ブロックのそれぞれＬＢＡを含む。つまりＬＢＡ情報は、前記連続するブロックのＬＢＡ範囲を示す。このＬＢＡ範囲が、前記連続するブロック内の先頭ブロックのＬＢＡと、当該連続するブロックの数（または当該連続するブロック全体のサイズ）とにより示されても構わない。なお、対応するファイルが１つのブロックから構成されていても構わない。この場合、ＬＢＡ情報に含まれる先頭ブロック及び最終ブロックのＬＢＡは一致する。
【００４７】
次に、対応するファイルが断片化を起こして、当該対応するファイルを構成するブロックの集合が、階層化ストレージシステム１０において複数のセグメントに分断されているものとする。複数のセグメントの各々は、論理ディスク１１０において連続するブロック（つまり、ブロックの列）から構成される。この場合、ＬＢＡ情報は、セグメント毎に、対応するセグメントの先頭ブロック及び最終ブロックのそれぞれＬＢＡを含む。つまりＬＢＡ情報は、セグメント毎に、対応するセグメントのＬＢＡ範囲を示す。なお、複数のセグメントの少なくとも１つが、１つのブロックから構成されていても構わない。
【００４８】
以下の説明では、ファイルを構成するブロックの全てが論理ディスク１１０において連続している場合にも、当該ブロックの集合を便宜的にセグメントと称する。つまり以下の説明では、ファイルは、１つ以上のセグメントから構成されるものとする。
【００４９】
図５は、階層配置ルールリスト２７のデータ構造の例を示す。階層配置ルールリスト２７の各要素（つまり、階層配置ルール）は、ルールＩＤ、階層情報、ルール種別、ルール内容、及び開始時刻情報及び打切時刻情報を含む。ルールＩＤは、対応する階層配置ルールに固有のＩＤを示す。階層情報は、データが配置されるべき階層を示す。ルール種別は、階層配置ルールの種別、例えばファイル指定（第１の種別）であるか、或いはアプリケーション連携（第２の種別）であるかを示す。ファイル指定とは、階層情報によって示される階層（つまり指定階層）に配置されるべきデータとして、ファイルが指定されることを示す。アプリケーション連携とは、指定階層に配置されるべきデータが、予め定められたプログラム（以下、連携プログラムと称する）によって起動される特定のアプリケーションによりアクセスされるブロックであることを示す。以下の説明では、ルール種別がファイル指定である階層配置ルールを、ファイル指定配置ルールと称し、ルール種別がアプリケーション連携である階層配置ルールを、アプリケーション連携配置ルールと称する。
【００５０】
ルール内容は、ルール種別に依存する。ルール種別がファイル指定の場合、ルール内容（第１のルール内容）として、ファイルパスが記述される。ファイルパスには、例えば＊のような特別の記号を用いた、正規表現またはワイルドカードの指定も可能である。つまり、ファイル指定配置ルールは、ルール内容で指定されたファイルを構成するブロック（ブロックの集合）を含むエクステントを、指定階層に移動（配置）するルールを指す。一方、ルール種別がアプリケーション連携の場合、ルール内容（第２のルール内容）として、連携プログラムを指定するプログラム情報が記述される。つまり、アプリケーション連携配置ルールは、ルール内容で指定された連携プログラムによって起動された特定のアプリケーション（本実施形態では、アプリケーション２９）がアクセスしたブロックを含むエクステントを、指定階層に移動するルールを指す。第２のルール内容として、バッチファイル（バッチプログラム）或いはスクリプトのようなプログラムを指定する情報が記述されても良い。
【００５１】
開始時刻情報は、対応する階層配置ルールが適用される階層配置処理が開始される時刻を示す。打切時刻情報は、対応する階層配置処理が打ち切られる時刻を示す。なお、開始時刻情報が、対応する階層配置処理が開始される日時を示し、打切時刻情報が、対応する階層配置処理が打ち切られる日時を示しても良い。
【００５２】
図６は、ファイルパスリスト２８のデータ構造の例を示す。ファイルパスリスト２８は、ファイル抽出部２３によって抽出されたファイルパスを保持するのに用いられる。ファイルパスリスト２８の各要素は、ファイルパスＩＤ、及びファイルパス（ファイルパス情報）を含む。ファイルパスＩＤは、対応するファイルパスのＩＤを示す。
【００５３】
次に、本実施形態における、（１）階層配置ルールの登録、及び（２）階層配置処理について順に説明する。  
（１）階層配置ルールの登録
まず、階層配置ルールの登録について説明する。今、ホスト機器２０の外部から当該ホスト機器２０に対して、階層配置ルールの登録が要求されたものとする。ここでは、階層配置ルールの登録が、ユーザの操作に従って要求されたものとする。この場合、ホスト機器２０のルール入力部２１は、ユーザの操作によって指定された階層配置ルールを当該ホスト機器２０の外部から入力し、当該入力された階層配置ルールを階層配置ルールリスト２７に追加する。なお、ユーザの操作は、例えば、ホスト機器２０に接続されたキーボード、或いは当該ホスト機器２０にネットワークを介して接続された端末のような外部機器を用いて行われる。
【００５４】
（２）階層配置処理
次に、階層配置処理について、図７乃至図９を参照して説明する。図７は、ホスト機器２０側で実行される階層配置処理（以下、第１の階層配置処理と称する）の典型的な手順を説明するためのフローチャート、図８は図７に示される第１の階層配置処理に含まれているブロックアクセス処理の典型的な手順を説明するためのフローチャートである。図９は、図７に示される第１の階層配置処理で発行されるモード切替命令に応じて階層化ストレージシステム１０側で実行される階層配置処理（以下、第２の階層配置処理と称する）の典型的な手順を説明するためのフローチャートである。
【００５５】
まず階層配置指示部２２は、階層配置ルールリスト２７に保持されている全ての階層配置ルールの開始時刻を監視して、開始時刻が到来したかを判定する（ステップＳ１）。ここでは、ルールＩＤが１の階層配置ルールの開始時刻（０：００）が到来したものとする（ステップＳ１のＹｅｓ）。この場合、階層配置指示部２２は、開始時刻が到来した階層配置ルールの適用を開始するために、ステップＳ２に進む。
【００５６】
ステップＳ２において階層配置指示部２２は、階層化ストレージシステム１０を通常モードから領域配置モードに切り替えることを指示するモード切替命令を、当該階層化ストレージシステム１０のストレージコントローラ１２に発行する。このモード切替命令は、領域配置モードにおいて、オン状態に設定された階層移動フラグに対応する全てのエクステントが配置されるべき階層をも指定する。
【００５７】
階層配置指示部２２によって発行されたモード切替命令は、ストレージコントローラ１２のモード切替部１２５によって受信される。するとストレージコントローラ１２では、図９のフローチャートで示される第２の階層配置処理が次のように開始される。まずモード切替部１２５は、階層化ストレージシステム１０を通常モードから領域配置モードに切り替える（ステップＳ３１）。そしてモード切替部１２５は、モード切替に成功したかを判定する（ステップＳ３２）。もし、モード切替に成功したならば（ステップＳ３２のＹｅｓ）、モード切替部１２５は、モード切替命令に対する応答として、モード切替成功をホスト機器２０に通知する（ステップＳ３３）。これに対し、モード切替に失敗したならば（ステップＳ３２のＮｏ）、モード切替部１２５は、モード切替失敗をホスト機器２０に通知する（ステップＳ３４）。この場合、第２の階層配置処理は終了する。
【００５８】
モード切替部１２５からホスト機器２０に返された通知は階層配置指示部２２によって受信される。すると階層配置指示部２２は、モード切替成功通知であるかを判定する（ステップＳ３）。もし、モード切替失敗通知であるならば（ステップＳ３のＮｏ）、第１の階層配置処理は終了する。これに対してモード切替成功通知であるならば（ステップＳ３のＹｅｓ）、ブロックアクセス処理（ステップＳ４）が、図８に示されるフローチャートに従って次のように実行される。
【００５９】
まず階層配置指示部２２は、開始時刻が到来した階層配置ルールのルール種別が、ファイル指定またはアプリケーション連携のいずれであるかを判定する（ステップＳ１１）。以下、２ａ）ファイル指定の場合のブロックアクセス処理、及び２ｂ）アプリケーション連携の場合のブロックアクセス処理について順に説明する。
【００６０】
２ａ）ファイル指定の場合のブロックアクセス処理
ステップＳ１１においてルール種別がファイル指定であると判定された場合、階層配置指示部２２は、ファイル抽出部２３にファイル抽出命令を発行する。このファイル抽出命令は、開始時刻が到来した階層配置ルールのルール内容、つまりファイルパス情報を含む。ファイル抽出部２３は、階層配置指示部２２によって発行されたファイル抽出命令を受信する。するとファイル抽出部２３は、受信されたファイル抽出命令に含まれているファイルパス情報の示すファイルパス（つまり、階層配置ルールによって示されるファイルパス）を、ファイル−論理アドレス管理テーブル２５２から全て抽出する（ステップＳ１２）。この階層配置ルールのルールＩＤが１である場合、ルール内容は、ファイルパス／ｖａｒ／ｌｏｇ／＊．ｌｏｇを含む。ここでは、例えば、ファイルパス／ｖａｒ／ｌｏｇ／ｍｅｓｓａｇｅ．ｌｏｇを含むファイルパスの集合が抽出されたものとする。抽出されたファイルパスの集合はファイルパスリスト２８に保持される。
【００６１】
このように、階層配置ルールによって示される全てのファイルパスがファイル抽出部２３によって抽出されて、当該抽出されたファイルパスがファイルパスリスト２８に保持されたものとする（ステップＳ１２）。この場合、階層配置指示部２２は、抽出されたファイルパスで示されるそれぞれのファイルの集合へのアクセスを指示するアクセス命令を、ファイル指定部２４に発行する。
【００６２】
するとファイル指定部２４は、ファイルパスリスト２８から１つの未選択のファイルパスを選択する（ステップＳ１３）。そしてファイル指定部２４は、選択されたファイルパスに対応付けられているＬＢＡ（論理ブロックアドレス）範囲を、ファイルアクセス制御部２５１に問い合わせる。
【００６３】
この問い合わせに応じて、ファイルアクセス制御部２５１はファイル−論理アドレス管理テーブル２５２を参照して、選択されたファイルパスに対応付けられているＬＢＡ範囲を全て特定する（ステップＳ１４）。ファイルアクセス制御部２５１は、特定されたＬＢＡ範囲を全てファイル指定部２４に通知する。
【００６４】
するとファイル指定部２４は、通知されたＬＢＡ範囲から１つのＬＢＡ範囲を選択する（ステップＳ１５）。そしてファイル指定部２４は、選択されたＬＢＡ範囲内のブロック（ブロックの列）へのアクセスをファイルアクセス制御部２５１に要求する。
【００６５】
この要求に応じてファイルアクセス制御部２５１は、階層化ブロックストレージ装置１１内の論理ディスク１１０に存在し、且つ選択されたＬＢＡ範囲内のブロック（より詳細には、ＬＢＡが連続するブロックの列、つまりセグメント）に、ストレージコントローラ１２のデータ入出力制御部１２６を介してアクセスする（ステップＳ１６）。本実施形態では、このアクセスはリードアクセスであり、選択されたＬＢＡ範囲内のブロックのデータが読み出される。
【００６６】
選択されたＬＢＡ範囲内のブロックへのアクセス（ステップＳ１６）が完了すると、ファイル指定部２４は、特定されたＬＢＡ範囲の中に未選択のＬＢＡ範囲があるかを判定する（ステップＳ１７）。もし、未選択のＬＢＡ範囲があるならば（ステップＳ１７のＹｅｓ）、ファイル指定部２４はステップＳ１５に戻って、未選択の１つのＬＢＡ範囲を選択する。ファイルアクセス制御部２５１は、ファイル指定部２４によって選択されたＬＢＡ範囲内のブロックにデータ入出力制御部１２６を介してアクセスする（ステップＳ１６）。
【００６７】
このとき、階層化ストレージシステム１０は、モード切替部１２５によって領域配置モードに設定されている（ステップＳ３１乃至Ｓ３３）。データ入出力制御部１２６は、モード切替部１２５によってモード切替成功がホスト機器２０に通知された場合（ステップＳ３３）、ホスト機器２０のファイルアクセス制御部２５１からのアクセス（つまりブロックアクセス）を、例えば第１の時間を上限に監視する（ステップＳ３５）。領域配置モードにおいて、この第１の時間が経過する前に、ファイルアクセス制御部２５１によってブロックアクセスが行われた場合（ステップＳ３５のＹｅｓ）、データ入出力制御部１２６は、アクセスされたＬＢＡ範囲内のブロックを含むエクステントに対応する階層移動フラグをオンするように、データ配置制御部１２７に要求する。
【００６８】
この要求に応じて、データ配置制御部１２７は第１の動作を実行する。即ちデータ配置制御部１２７は、エクステント管理テーブル１２８を参照して、アクセスされたＬＢＡ範囲内のブロックを含むエクステントを特定し、当該特定されたエクステントに対応付けられた階層移動フラグをオンする（ステップＳ３６）。そしてデータ配置制御部１２７はモード切替部１２５に制御を渡す。するとモード切替部１２５は、領域配置モード終了命令を受信しているかを判定する（ステップＳ３７）。もし、モード切替部１２５が領域配置モード終了命令を受信していないならば（ステップＳ３７のＮｏ）、当該モード切替部１２５はデータ入出力制御部１２６に制御を渡す。
【００６９】
するとデータ入出力制御部１２６は、第１の時間を上限に次のブロックアクセスを待つ（ステップＳ３５）。もし、第１の時間が経過する前に、ファイルアクセス制御部２５１によって次のブロックアクセスが行われたならば（ステップＳ３５のＹｅｓ）、データ入出力制御部１２６は、上述したように階層移動フラグをオンするように、データ配置制御部１２７に要求する。
【００７０】
ここで、ファイルアクセス制御部２５１が、特定された全てのＬＢＡ範囲内のブロックにアクセスしたものとする。この場合、未選択のＬＢＡ範囲がないことから（ステップＳ１７のＮｏ）、ファイル指定部２４は、選択されたファイルパスで指定されるファイルへのアクセスが完了したと判定する。そしてファイル指定部２４は、ファイルパスリスト２８内に未選択のファイルパスがあるかを判定する（ステップＳ１８）。
【００７１】
もし、未選択のファイルパスがあるならば（ステップＳ１８のＹｅｓ）、ファイル指定部２４はステップＳ１３に戻り、未選択の１つのファイルパスを選択する。そしてファイル指定部２４は、前述したように、選択されたファイルパスに対応付けられているＬＢＡ範囲を、ファイルアクセス制御部２５１に問い合わせる。するとファイルアクセス制御部２５１は、選択されたファイルパスに対応付けられているＬＢＡ範囲を全て特定する（ステップＳ１４）。そして、特定された全てのＬＢＡ範囲について、ステップＳ１５乃至Ｓ１７が実行される。即ち選択されたファイルパスで示されるファイルがアクセスされる。
【００７２】
このようにして、ファイルパスリスト２８内の全てのファイルパスで示されるファイルへのアクセスが完了し、これによりファイルパスリスト２８内に未選択のファイルパスがなくなったものとする（ステップＳ１８のＮｏ）。この場合、ブロックアクセス処理（ステップＳ４）は終了する。
【００７３】
すると階層配置指示部２２は、領域配置モードの終了を指示する領域配置モード終了命令をストレージコントローラ１２に発行する（ステップＳ５）。これにより、ホスト機器２０における第１の階層配置処理は終了する。階層配置指示部２２によって発行された領域配置モード終了命令は、ストレージコントローラ１２のモード切替部１２５によって受信される。
【００７４】
さてストレージコントローラ１２では、上述の第１の時間が経過しても次のブロックアクセスが行われなかった場合（ステップＳ３５のＮｏ）、モード切替部１２５に制御が渡される。また、階層移動フラグがオンされた場合にも（ステップＳ３６）、前述のようにモード切替部１２５に制御が渡される。このような場合、モード切替部１２５は、領域配置モード終了命令を受信しているかを判定する（ステップＳ３７）。
【００７５】
もし、モード切替部１２５が領域配置モード終了命令を受信していたならば（ステップＳ３７のＹｅｓ）、当該モード切替部１２５はデータ配置制御部１２７に制御を渡す。するとデータ配置制御部１２７は、第２の動作を実行する。即ちデータ配置制御部１２７は、エクステント管理テーブル１２８を参照して、現在オン状態にある階層移動フラグに対応する全てのエクステントを特定し、当該特定された全てのエクステント（より詳細には、特定された全てのエクステント内のデータ）を指定の階層の物理ストレージの記憶領域に配置（移動）する（ステップＳ３８）。
【００７６】
ステップＳ３８においてデータ配置制御部１２７は、例えば、指定階層の物理ストレージにエクステントが配置される都度、エクステント管理テーブル１２８の対応するエントリの物理ストレージＩＤフィールド及び物理ストレージアドレスフィールドの内容を更新する。ここで、指定階層の物理ストレージが高速ストレージ装置１１１であり当該高速ストレージ装置１１１の第１の物理ストレージアドレス範囲に第１のエクステントが配置されたものとする。この場合、データ配置制御部１２７は、第１のエクステントに対応するエクステント管理テーブル１２８のエントリの物理ストレージＩＤフィールド及び物理ストレージアドレスフィールドの内容を、高速ストレージ装置１１１のＩＤ及び第１の物理ストレージアドレス範囲に更新する。またデータ配置制御部１２７は、上述の対応エントリ内の階層移動フラグをオフする。
【００７７】
ところでデータ配置制御部１２７は、第１のエクステントの配置先を、高速ストレージ装置１１１（指定階層の物理ストレージ）内の空きエクステントの集合から選択する。もし、第１のエクステントの配置に用いることが可能な空きエクステントが高速ストレージ装置１１１内に存在しないならば、データ配置制御部１２７は第１のエクステントを配置する前に、高速ストレージ装置１１１から低速ストレージ装置１１２にデータが移動される（追い出される）べき第２のエクステントを選択する。そしてデータ配置制御部１２７は、第２のエクステントのデータを低速ストレージ装置１１２に移動することにより、第１のエクステントの配置に用いることが可能な空きエクステントを確保する。第２のエクステントは、例えば、高速ストレージ装置１１１に配置されている全てのエクステントのうち、アクセス頻度が最も低いエクステントである。
【００７８】
一方、未選択のＬＢＡ範囲がないならば（ステップＳ１７のＮｏ）、ファイル指定部２４はステップＳ１８に進む。ステップＳ１３で選択されたファイルパスが、例えば／ｖａｒ／ｌｏｇ／ｍｅｓｓａｇｅ．ｌｏｇである場合、図４に示されるファイル−論理アドレス管理テーブル２５２から明らかなように、１つのＬＢＡ範囲０００−０１５のみが特定される。この場合、ＬＢＡ範囲０００−０１５内のブロックがアクセスされると（ステップＳ１６）、未選択のＬＢＡ範囲がないことから（ステップＳ１７のＮｏ）、ファイル指定部２４はステップＳ１８に進む。
【００７９】
特定された全てのエクステントが指定階層の物理ストレージに配置されたならば（ステップＳ３８）、その旨をモード切替部１２５に通知する。するとモード切替部１２５は、領域配置モードを終了させて、階層化ストレージシステム１０の動作モードを通常モードに戻す（ステップＳ３９）。これにより、階層化ストレージシステム１０（ストレージコントローラ１２）における第２の階層配置処理は終了する。
【００８０】
２ｂ）アプリケーション連携の場合のブロックアクセス処理
次に、開始時刻が到来した階層配置ルールのルール種別がアプリケーション連携であるとステップＳ１１で判定された場合のブロックアクセス処理について説明する。この場合、階層配置指示部２２は、開始時刻が到来した階層配置ルールのルール内容の示す連携プログラムを起動する（ステップＳ１９）。即ち階層配置指示部２２は、連携プログラムを実行する。すると連携プログラムは、当該連携プログラムと連携するように予め定められた特定のアプリケーション、例えばアプリケーション２９を起動する（ステップＳ２０）。
【００８１】
階層配置指示部２２は、連携プログラムによってアプリケーション２９が起動されると（ステップＳ２０）、当該連携プログラムの終了を待つ（ステップＳ２１）。一方、アプリケーション２９は、当該アプリケーション２９の動作状態において、適宜階層化ストレージシステム１０（より詳細には、階層化ストレージシステム１０内の論理ディスク１１０）へのブロックアクセス（リードアクセスまたはライトアクセス）を要求する。ファイルアクセス制御部２５１は、アプリケーション２９からブロックアクセスが要求される都度（ステップＳ２２のＹｅｓ）、要求されたＬＢＡ範囲内のブロック（ブロックの列）に、ストレージコントローラ１２のデータ入出力制御部１２６を介してアクセスする（ステップＳ２３）。
【００８２】
このとき、階層化ストレージシステム１０は、領域配置モードに設定されている（ステップＳ３１乃至Ｓ３３）。領域配置モードにおいてファイルアクセス制御部２５１によってブロックアクセスが行われた場合（ステップＳ３５のＹｅｓ）、前述したようにデータ配置制御部１２７は、アクセスされたＬＢＡ範囲内のブロックを含むエクステントを特定し、当該特定されたエクステントに対応付けられた階層移動フラグをオンする（ステップＳ３６）。
【００８３】
やがて、連携プログラムによってアプリケーション２９が終了させられ、しかる後に当該連携プログラムの実行が終了したものとする（ステップＳ２１のＹｅｓ）。この場合、ブロックアクセス処理（ステップＳ４）は終了する。以降の動作は、ルール種別がファイル指定の場合と同様である。即ち、階層配置指示部２２は、領域配置モード終了命令をストレージコントローラ１２に発行する（ステップＳ５）。この場合（ステップＳ３７のＹｅｓ）、ストレージコントローラ１２のデータ配置制御部１２７は、現在オン状態にある階層移動フラグに対応する全てのエクステントを特定し、当該特定された全てのエクステントを指定の階層の物理ストレージの記憶領域に配置する（ステップＳ３８）。
【００８４】
なお、現在適用されている階層配置ルールの打切時刻が、ブロックアクセス処理（ステップＳ４）の途中で到来した場合、階層配置指示部２２は当該ブロックアクセス処理（ステップＳ４）を終了する。より詳細には、現在実行中のブロックアクセスの終了を待って、階層配置指示部２２はブロックアクセス処理（ステップＳ４）を終了する。そして、階層配置指示部２２は領域配置モード終了命令をストレージコントローラ１２に発行する（ステップＳ５）。
【００８５】
上述のように本実施形態においてホスト機器２０は、指定のファイルを、階層化ストレージシステム１０内の指定の階層の記憶領域に配置するために、モード切替部１２５によって階層化ストレージシステム１０を領域配置モードに設定させる（ステップＳ２）。この状態においてホスト機器２０は、通常のファイルアクセスの場合と同様に、ファイルシステム２５に基づいて指定のファイルを構成するブロックを特定する（ステップＳ１３及びＳ１４）。そしてホスト機器２０は、指定のファイルの配置に必要な、階層化ストレージシステム１０内の当該特定されたブロックとエクステントとの対応関係を認識することなく、当該特定されたブロックにアクセスする（ステップＳ１５及びＳ１６）。
【００８６】
一方、階層化ストレージシステム１０のストレージコントローラ１２は、ブロックとエクステントとの対応関係をエクステント管理テーブル１２８を用いて管理する。そしてストレージコントローラ１２は、領域配置モードにおけるホスト機器２０からのブロックアクセスに応じて、アクセスされたブロックを含むエクステントを特定し、特定されたエクステントに対応付けられた階層移動フラグをオン状態（つまり、階層移動指示状態）に設定する（ステップＳ３５及びＳ３６）。
【００８７】
上述の指定ファイル（より詳細には、ファイルパス）は、階層配置ルールに記述されている。ホスト機器２０は、開始時刻が到来した階層配置ルールに基づいて指定ファイルを特定し、当該指定ファイルを構成するブロックにアクセスする。ここで、階層配置ルールに記述されるファイルが、当該階層配置ルールの示す開始時刻が到来した場合にホスト機器２０によって利用されることが予定されているファイルであっても良い。この場合、階層配置ルールに記述されたファイルをホスト機器２０が利用すると同時に、階層化ブロックストレージ装置１１における指定階層の記憶領域に配置することができる。なお、階層配置ルールに基づくブロックアクセスが、一種のダミーアクセスであっても良い（階層配置ルールの種別がファイル指定の場合）。より詳細には、階層配置ルールに基づくブロックアクセスが、アクセスされるブロックを含むエクステント（つまり、指定階層に配置されるべきエクステント）を指定して、当該エクステントに対応付けられた階層移動フラグをオン状態に設定するためのトリガとして用いられても良い。この場合、アクセスされたブロックのデータがホスト機器２０で利用されずに捨てられても構わない。
【００８８】
ホスト機器２０は、全ての指定ファイルをそれぞれ構成するブロックにアクセスすると、領域配置モード終了命令をストレージコントローラ１２に発行する。するとストレージコントローラ１２は、オン状態にある階層移動フラグに対応付けられたエクステントを全て階層化ブロックストレージ装置１１内の指定階層の記憶領域に配置する（ステップＳ３７及びＳ３８）。このように本実施形態によれば、ストレージコントローラ１２は、指定の階層に配置されるべきファイル（指定ファイル）を、特別なファイルシステムを必要とすることなく、当該指定の階層の記憶領域に配置することができる。ここで、ホスト機器２０は、ブロックとエクステントとの対応関係を扱う必要がなく、ストレージコントローラ１２はホスト機器２０内のファイルシステム２５にアクセスする必要がない。
【００８９】
また本実施形態によれば、階層配置ルールのルール種別がアプリケーション連携の場合、連携プログラムによって起動されたアプリケーション２９（つまり、特定のアプリケーション）から要求されたブロックへのアクセスに応じて、ストレージコントローラ１２は当該アクセスされたブロックを含むエクステントに対応付けられた階層移動フラグをオン状態に設定する（ステップＳ３５及びＳ３６）。したがって本実施形態によれば、アプリケーション２９からのブロックアクセス要求に応じて、要求されたブロックを含むエクステントを、指定階層の記憶領域に配置することができる。
【００９０】
さて本実施形態において、階層化ストレージシステム１０が領域配置モードに設定されている状態で、ホスト機器２０上で動作する通常のアプリケーションからファイルアクセス制御部２５１に対してブロックアクセスが要求されたものとする。この要求に応じてファイルアクセス制御部２５１は、要求されたブロックにデータ入出力制御部１２６を介してアクセスする。この場合、アクセスされたブロックを含むエクステントに対応する階層移動フラグがオンされる。つまり通常のアプリケーションからアクセスされたブロックを含むエクステントも、現在の領域配置モードで適用されている階層配置ルールで指定される階層の記憶領域に配置される。そこで、領域配置モードの期間、通常のアプリケーションからのアクセス要求が待たされるようにしても構わない。
【００９１】
＜第１の変形例＞
次に、前記実施形態の第１の変形例について説明する。まず前記実施形態において、指定ファイルのサイズが小さく、当該指定ファイルを構成するブロックが、対応するエクステントのごく一部だけを占めているものとする。このような場合、指定階層の記憶領域に配置（つまり移動）されるエクステント内の殆どのブロックは、指定ファイルとは無関係である。つまり、前記実施形態では、指定ファイルとは無関係のブロックのデータも指定階層の記憶領域に移動される。したがって、指定階層が上位階層である場合、当該上位階層（高速ストレージ装置１１１）の記憶領域の利用効率が低下する。
【００９２】
そこで、第１の変形例は、上位階層の記憶領域の利用効率の低下を防止するために、指定ファイルを構成するブロック（ブロックの集合）を、同一エクステントに予め配置するための処理（以下、ファイル配置処理と称する）を適用する。図１０は、このファイル配置処理の概要を説明するための図である。図１０において、ブロックＢａ，Ｂｂ，Ｂｃ，Ｂｄ．Ｂｅ，Ｂｆ，Ｂｇ及びＢｈは、指定ファイルを構成するものとする。図１０の例では、ブロックＢａ及びＢｂはエクステントＥＸＴａ１に、ブロックＢｃ及びＢｄはエクステントＥＸＴａ２に、それぞれ含まれている。またブロックＢｅはエクステントＥＸＴａ３に、ブロックＢｆ及びＢｇはエクステントＥＸＴａ４に、それぞれ含まれている。そしてブロックＢｈはエクステントＥＸＴａ５に含まれている。なお図１０では、作図の都合で、１エクステントが８個のブロックから構成される場合（つまり、Ｎ＝８）を想定している。
【００９３】
前記実施形態では、エクステントＥＸＴａ１乃至ＥＸＴａ５が、指定階層の記憶領域に配置される。これに対して第１の変形例では、まずブロックＢａ，Ｂｂ，Ｂｃ，Ｂｄ．Ｂｅ，Ｂｆ，Ｂｇ及びＢｈが、図１０に示されるようにエクステントＥＸＴｂに配置される。そして、このエクステントＥＸＴｂが指定階層の記憶領域に配置される。したがって図１０の例では、指定階層の記憶領域に配置されるエクステントの数が、前記実施形態と比較して、５から１に低減される。
【００９４】
上述のファイル配置処理は、例えば図８に示されるフローチャートのステップＳ１２及びＳ１３の間で実行される。以下、このファイル配置処理の手順について、図１１を参照して説明する。図１１は、ホスト機器２０側で実行されるファイル配置処理の典型的な手順を説明するためのフローチャートである。
【００９５】
今、ファイル抽出部２３が、階層配置ルールによって示されるファイルパスを、ファイル−論理アドレス管理テーブル２５２から全て抽出したものとする（ステップＳ１２）。この場合、階層配置指示部２２は、抽出されたファイルパスで示されるファイルの集合へのアクセスを指示するアクセス命令をファイル指定部２４に発行する前に、ファイル配置命令をファイル配置部２６に発行する。このファイル配置命令は、ファイルを構成するブロックを、できる限り同一エクステントに配置することを指示する。
【００９６】
ファイル配置部２６は、階層配置指示部２２からのファイル配置命令に従い、ファイル配置処理を次のように実行する。まずファイル配置部２６は、ファイルパスリスト２８から１つの未選択のファイルパスを選択する（ステップＳ４１）。そしてファイル配置部２６は、選択されたファイルパスで示されるファイル（つまり、指定ファイル）を構成するブロック（ブロックの集合）を、ストレージコントローラ１２のデータ入出力制御部１２６を介して、論理ディスク１１０内のＬＢＡが連続する領域に複製する（ステップＳ４２）。
【００９７】
ステップＳ４２について、詳細に説明する。まずファイル配置部２６は、指定ファイルを構成するブロックを、論理ディスク１１０内のＬＢＡが連続する領域に複製することを、ファイルシステム２５のファイルアクセス制御部２５１を介してストレージコントローラ１２のデータ入出力制御部１２６に要求する。するとデータ入出力制御部１２６は、要求されたブロックを、論理ディスク１１０内の空きエクステントに複製する。最初のステップＳ４２において、この複製に用いられる領域は、空きエクステントの先頭から始まる領域である。この複製により、指定ファイルを構成するブロック（ブロックの集合）が同一エクステントに配置される可能性が高くなる。
【００９８】
なお、エクステント管理テーブル１２８によって示されるエクステントのうちのいずれが空きエクステントであるかを管理する手法は従来からよく知られている。このような手法の１つに、空きエクステントのＩＤの集合が保持される空きエクステントリストを用いる手法がある。また、エクステント管理テーブル１２８の各エントリに、対応するエクステントが空きエクステントであるかを示すフラグフィールドを用意しても良い。
【００９９】
データ入出力制御部１２６は要求されたブロックを、論理ディスク１１０内の空きエクステントに複製すると、当該ブロックが複製された領域のＬＢＡ範囲をファイル配置部２６に通知する。するとファイル配置部２６は、仮のファイルパスを複製先のファイルパスとして用い、当該複製先のファイルパスと通知されたＬＢＡ範囲との対を含むエントリを、ファイルアクセス制御部２５１を介して、ファイル−論理アドレス管理テーブル２５２に追加する。
【０１００】
次にファイル配置部２６は、複製先（仮）のファイルパスを、ファイルアクセス制御部２５１を介して、複製元と同じファイルパス名（ファイル名）にリネーム（上書き）する（ステップＳ４３）。このリネームに際し、ファイル配置部２６は、複製元のファイルパスを含むエントリを、ファイルアクセス制御部２５１を介して、ファイル−論理アドレス管理テーブル２５２から削除する。ファイル配置部２６は、上述の動作（ステップＳ４１乃至Ｓ４３）を、ファイルパスリスト２８内に未選択のファイルパスがなくなるまで繰り返す（ステップＳ４４）。
【０１０１】
ここで、ファイルパスリスト２８内のファイルパスで示されるファイルの集合が第１及び第２のファイルを含むものとする。また、第１のファイルを構成する第１のブロック（第１のブロックの集合）が、最初のステップＳ４２において、第１のエクステントの先頭から始まる第１の領域に複製されたものとする。更に、この状態で、第１のエクステントに空きがあり、且つ第１のエクステントの残りの領域が、第２のファイルを構成する第２のブロック（第２のブロックの集合）のサイズよりも大きいものとする。このような場合、２回目のステップＳ４２において、第２のブロックの集合が、第１のエクステントの第１の領域に後続する第２の領域に複製されると良い。一方、第１のエクステントの残りの領域が第２のブロックの集合のサイズよりも小さい場合、第２のブロックの集合の一部が、第１のエクステントの前記残りの領域に複製され、第２のブロックの集合の例えば残りが、第１のエクステントとは別の第２のエクステントの先頭から始まる領域に複製されると良い。
【０１０２】
ファイル配置部２６は、ステップＳ４１乃至Ｓ４３を、ファイルパスリスト２８内に未選択のファイルパスがなくなるまで繰り返すと（ステップＳ４４のＮｏ）、ファイル配置処理の完了を階層配置指示部２２に通知する。すると階層配置指示部２２は、前記実施形態において階層配置ルールによって示されるファイルパスが全て抽出された場合（ステップＳ１２）と同様に、抽出されたファイルパスで示されるファイルの集合へのアクセスを指示するアクセス命令を、ファイル指定部２４に発行する。これにより前記実施形態と同様に、ステップＳ１３から始まる処理が実行される。
【０１０３】
第１の変形例によれば、指定階層の記憶領域に配置されるべきファイルに含まれるブロックの集合が、可能な限り同一のエクステントに配置される。これにより、指定階層が上位階層である場合に、上位階層（つまり高速ストレージ装置１１１）に配置されるエクステントに、指定ファイルに含まれないブロックが紛れ込む確率が少なくなる。よって第１の変形例によれば、高速ストレージ装置１１１の記憶領域の利用効率を高めることができる。
【０１０４】
＜第２の変形例＞
次に、前記実施形態の第２の変形例について説明する。まず前記実施形態において、指定ファイルのサイズが大きいものとする。このような場合、指定ファイルを構成する全てのブロックのデータをリードするのに多大な時間を要し、階層化ストレージシステム１０のスループットが低下する。一方、階層配置ルールに基づくブロックアクセスがダミーアクセスであるならば（階層配置ルールの種別がファイル指定の場合）、指定ファイルを構成するブロックを必ずしも全てリードする必要はない。
【０１０５】
そこで、第２の変形例は、指定ファイルを構成するブロック（ブロックの集合）のうちの一部のブロックのみをリードするための処理（以下、部分リード処理）を適用する。つまり第２の変形例では、階層配置ルールに基づくブロックアクセスに、部分リード処理が適用される。この部分リード処理はダミーアクセス処理であり、アクセスされたブロックを含むエクステントに対応付けられた階層移動フラグをオン状態に設定するためのトリガとして用いられる。
【０１０６】
ここで、指定ファイルが複数のセグメントから構成され、当該複数のセグメントがそれぞれ複数のエクステントにまたがっているものとする。この場合、部分リード処理では、セグメント毎に、対応するセグメントが存在する複数のエクステントからそれぞれ１つずつブロックが選択される。そして１つのブロックが選択される毎に、当該選択されたブロック（ブロックのデータ）がリードされる。第２の変形例では、この選択の効率化のために、セグメントは、当該セグメントの先頭からエクステントのサイズＮ（ここでは、エクステントを構成するブロックの数）で小セグメントに分割される。この場合、最終の小セグメントのサイズ（ブロックの数）は、Ｎ以下となる。そして小セグメント毎に、対応する小セグメント内の先頭ブロックが選択される。更に、セグメント内の最終ブロックを含む最終の小セグメントの場合、当該最終の小セグメント内の最終ブロックも選択される。なお、セグメントのサイズ（ブロックの数）がＮ以下である場合、当該セグメント内の先頭ブロック及び最終ブロックが選択されれば良い。
【０１０７】
図１２は、第２の変形例における部分リード処理の概要を説明するための図である。図１２において、エクステントＥＸＴｃ１乃至ＥＸＴｃ８は、論理ディスク１１０において連続するものとする。また、セグメントＳＥＧａ及びＳＥＧｂは、指定ファイルを構成するものとする。セグメントＳＥＧａは、ブロックＢａ１乃至Ｂａ２３から構成され、エクステントＥＸＴｃ１乃至ＥＸＴｃ４にまたがって存在する。セグメントＳＥＧｂは、ブロックＢｂ１乃至Ｂｂ１３から構成され、エクステントＥＸＴｃ５及びＥＸＴｃ６にまたがって存在する。なお図１２では、作図の都合で、１エクステントが８個のブロックから構成される場合（つまり、Ｎ＝８）を想定している。
【０１０８】
図１２の例では、セグメントＳＥＧａ内の先頭（１番目）のブロックＢａ１、９番目のブロックＢａ９、１７番目のブロックＢａ１７、及び最終（２３番目）のブロックＢａ２３が、リードされるべきブロックとして選択される。同様に、セグメントＳＥＧｂ内の先頭（１番目）のブロックＢｂ１、９番目のブロックＢｂ９、及び最終（１３番目）のブロックＢｂ１３が、リードされるべきブロックとして選択される。これらのセグメントＳＥＧａ及びＳＥＧｂから選択されるブロックは、図１２において黒四角で示されており、セグメントＳＥＧａ及びＳＥＧｂから選択されないブロックは、図１２において白四角で示されている。
【０１０９】
前記実施形態では、セグメントＳＥＧａ及びＳＥＧｂを構成する合計３６個のブロック（即ち、ブロックＢａ１乃至Ｂａ２３及びＢｂ１乃至Ｂｂ１３）がリードされる。これに対して、第２の変形例では、セグメントＳＥＧａ及びＳＥＧｂから選択された７個のブロック（即ち、ブロックＢａ１，Ｂａ９，Ｂａ１７，Ｂａ２３，Ｂｂ１，Ｂｂ９及びＢｂ１３）のみがリードされる。
【０１１０】
そして、ブロックＢａ１，Ｂａ９，Ｂａ１７，Ｂａ２３及びＢｂ１のリードに応じて、エクステントＥＸＴｃ１，ＥＸＴｃ２，ＥＸＴｃ３，ＥＸＴｃ４及びＥＸＴｃ５にそれぞれ対応付けられた階層移動フラグがオンされる。また、ブロックＢｂ９及びＢｂ１３のリードに応じて、エクステントＥＸＴｃ６に対応付けられた階層移動フラグがオンされる。その後、エクステントＥＸＴｃ１乃至ＥＸＴｃ６は、指定階層に配置される。
【０１１１】
このように、第２の変形例は、ファイル内の一部のブロックをリードするだけで、ファイルが存在する全てのエクステントにそれぞれ対応付けられた階層移動フラグをオンして、当該全てのエクステントを指定階層に配置することができる。つまり第２の変形例によれば、最小限のブロックリードで、ファイルが存在する全てのエクステントにアクセスすることができる。
【０１１２】
上述の部分リード処理は、例えば図８に示されるフローチャートのステップＳ１３乃至Ｓ１８に代えて実行される。以下、この部分リード処理の手順について、図１３を参照して説明する。図１３は、ホスト機器２０側で実行される部分リード処理の典型的な手順を説明するためのフローチャートである。
【０１１３】
今、ファイル抽出部２３が、階層配置ルールによって示されるファイルパスを、ファイル−論理アドレス管理テーブル２５２から全て抽出したものとする（ステップＳ１２）。この場合、階層配置指示部２２は、抽出されたファイルパスで示されるファイルの集合へのアクセスを指示するアクセス命令を、ファイル指定部２４に発行する
するとファイル指定部２４は、ファイルパスリスト２８から１つの未選択のファイルパスを選択する（ステップＳ５１）。そしてファイル指定部２４は、選択されたファイルパスに対応付けられているＬＢＡ（論理ブロックアドレス）範囲を、ファイルアクセス制御部２５１に問い合わせる。
【０１１４】
この問い合わせに応じて、ファイルアクセス制御部２５１は、選択されたファイルパスに対応付けられているＬＢＡ範囲を全て特定する（ステップＳ５２）。ファイルアクセス制御部２５１は、特定されたＬＢＡ範囲を全てファイル指定部２４に通知する。ファイル指定部２４は、通知されたＬＢＡ範囲から１つのＬＢＡ範囲を選択する（ステップＳ５３）。上述のステップＳ５１乃至Ｓ５３は、図８に示されるステップ１３乃至Ｓ１５と同様である。
【０１１５】
次にファイル指定部２４は、ポインタＰを初期値１に設定する（ステップＳ５４）。ポインタＰは、選択されたＬＢＡ範囲（つまりセグメント）におけるアクセスされるべきブロックの相対位置を指す。ポインタＰが１の場合、当該ポインタは、選択されたＬＢＡ範囲内の先頭（１番目）のブロックを指す。また、ステップＳ５４においてファイル指定部２４は、パラメータＮ及びＭとして、それぞれエクステントのサイズ（より詳細には、エクステントを構成するブロックの数）及び選択されたＬＢＡ範囲のサイズ（より詳細には、選択されたＬＢＡ範囲内のブロックの数）を設定する。図１２のセグメントＳＥＧａの例では、Ｎ＝８、Ｍ＝２３である。
【０１１６】
次にファイル指定部２４は、選択されたＬＢＡ範囲の先頭ブロックのＬＢＡ（以下、ＬＢＡ＿１と称する）とポインタＰとに基づいて、選択されたＬＢＡ範囲のＰ番目のブロックのＬＢＡ（以下、ＬＢＡ＿Ｐと称する）を、次式に従って算出する。  
ＬＢＡ＿Ｐ＝ＬＢＡ＿１＋（Ｐ−１）
次にファイル指定部２４は、選択されたＬＢＡ範囲内のＰ番目のブロックへのアクセスをファイルアクセス制御部２５１に要求する。即ちファイル指定部２４は、ＬＢＡがＬＢＡ＿Ｐであるブロックへのアクセスをファイルアクセス制御部２５１に要求する。するとファイルアクセス制御部２５１は、論理ディスク１１０に存在し、且つ選択されたＬＢＡ範囲内のＰ番目のブロックに、データ入出力制御部１２６を介してアクセスする（ステップＳ５５）。即ちファイルアクセス制御部２５１は、論理ディスク１１０内のＬＢＡ＿Ｐに位置するブロックに、ストレージコントローラ１２のデータ入出力制御部１２６を介してアクセスする。ストレージコントローラ１２のデータ配置制御部１２７は、このブロックアクセスに応じて（ステップＳ３５のＹｅｓ）、アクセスされたブロックを含むエクステントに対応する階層移動フラグをオンする（ステップＳ３６）。
【０１１７】
一方、ファイル指定部２４は、選択されたＬＢＡ範囲内のＰ番目のブロックへのアクセス（ステップＳ５５）が完了すると、ポインタＰをＮだけインクリメントする（ステップＳ５６）。インクリメントされたポインタＰは、インクリメントされる前のポインタＰの指すブロックよりもＬＢＡが増加する方向に、Ｎブロックだけ先のブロックを指す。例えば、インクリメントされる前のポインタＰが、図１２に示されるブロックＢａ１を指している場合、インクリメントされたポインタＰはブロックＢａ９を指す。次にファイル指定部２４は、インクリメントされたポインタＰの値がＭ以上であるかを判定する（ステップＳ５７）。
【０１１８】
もし、インクリメントされたポインタＰの値がＭ未満であるならば（ステップＳ５７のＮｏ）、ファイル指定部２４は、選択されたＬＢＡ範囲の最終ブロックにポインタＰが到達していないと判定する。この場合、ファイル指定部２４は、インクリメントされたポインタＰの指すブロックへのアクセスをファイルアクセス制御部２５１に要求する。するとファイルアクセス制御部２５１は、論理ディスク１１０に存在し、且つ選択されたＬＢＡ範囲内のＰ番目のブロックに、データ入出力制御部１２６を介してアクセスする（ステップＳ５５）。
【０１１９】
これに対し、インクリメントされたポインタＰの値がＭ以上であるならば（ステップＳ５７のＹｅｓ）、ファイル指定部２４は、ポインタＰが、選択されたＬＢＡ範囲の最終ブロックに到達したか、或いは当該最終ブロックを通過したものと判定する。この場合、ファイル指定部２４は、選択されたＬＢＡ範囲の最終ブロックへのアクセスをファイルアクセス制御部２５１に要求する。するとファイルアクセス制御部２５１は、論理ディスク１１０に存在し、且つ選択されたＬＢＡ範囲内の最終ブロックに、データ入出力制御部１２６を介してアクセスする（ステップＳ５８）。
【０１２０】
例えば、インクリメントされる前のポインタＰが、図１２に示されるブロックＢａ１７を指している場合（Ｐ＝１７）、インクリメントされたポインタＰの値（Ｐ＝２５）は、Ｍ＝２３を超える（ステップＳ５７のＹｅｓ）。この場合、セグメントＳＥＧａ内の最終ブロックＢａ２３がアクセスされる（ステップＳ５８）。そして、ブロックＢａ２３を含むエクステントＥＸＴｃ４に対応する階層移動フラグがオンされる（ステップＳ３６）
選択されたＬＢＡ範囲内の最終ブロックへのアクセス（ステップＳ５８）が完了すると、ファイル指定部２４は、特定されたＬＢＡ範囲の中に未選択のＬＢＡ範囲があるかを判定する（ステップＳ５９）。もし、未選択のＬＢＡ範囲があるならば（ステップＳ５９のＹｅｓ）、ファイル指定部２４はステップＳ５３に戻って、未選択の１つのＬＢＡ範囲を選択する。これに対し、未選択のＬＢＡ範囲がないならば（ステップＳ５９のＮｏ）、ファイル指定部２４は、ファイルパスリスト２８内に未選択のファイルパスがあるかを判定する（ステップＳ６０）。
【０１２１】
もし、未選択のファイルパスがあるならば（ステップＳ６０のＹｅｓ）、ファイル指定部２４はステップＳ５１に戻る。これに対し、未選択のファイルパスがないならば（ステップＳ６０のＮｏ）、ブロックアクセス処理（ステップＳ４）は終了する。
【０１２２】
このように第２の変形例では、指定ファイルを構成するブロックのうちの一部のブロックのみがリードされ、リードされたブロックを含むエクステントに対応するそれぞれの階層移動フラグがオンされる。つまり第２の変形例では、指定階層に配置されるべきエクステントを指定するためのブロックアクセスに部分リード処理が適用される。したがって第２の変形例によれば、指定階層に配置されるべきエクステントを指定するためのブロックアクセスに要する時間を短縮でき、且つ当該ブロックアクセスによって階層化ストレージシステム１０のスループットが低下するのを防止できる。
【０１２３】
以上説明した少なくとも１つの実施形態によれば、階層化ブロックストレージ装置側にファイルシステムを必要とすることなく、指定のファイルを指定の階層に配置することができる。
【０１２４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、ストレージコントローラは、モード切替部と、データ入出力制御部と、データ配置制御部とを含む。モード切替部は、階層配置ルールに基づくホスト機器からのモード切替要求に応じて、階層化ブロックストレージシステムを第１のモードから第２のモードに切り替える。前記データ入出力制御部は、前記階層配置ルールの示す第１のファイルを構成する第１のブロック列が格納された論理アドレス範囲へのアクセスが前記ホスト機器から要求された場合、前記要求された論理アドレス範囲内の前記第１のブロック列にアクセスする。前記データ配置制御部は、前記第２のモードにおいてアクセスされた論理アドレス範囲内のブロック列を含むエクステント内のデータを、前記階層配置ルールによって指定される階層の記憶領域に移動する。【図１】
0005797848.tif 000002
【図２】
0005797848.tif 000003
【図３】
0005797848.tif 000004
【図４】
0005797848.tif 000005
【図５】
0005797848.tif 000006
【図６】
0005797848.tif 000007
【図７】
0005797848.tif 000008
【図８】
0005797848.tif 000009
【図９】
0005797848.tif 000010
【図１０】
0005797848.tif 000011
【図１１】
0005797848.tif 000012
【図１２】
0005797848.tif 000013
【図１３】
0005797848.tif 000014