(57)【特許請求の範囲】
【請求項１】
ネットワークを介してサーバに結合されたストレージシステムであって、
プロセッサと、
メモリと、
書き込み要求のデータについて仮想ボリュームの未割り当てのターゲットアドレスを取得し、前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算し、かつ前記論理ボリューム内の対応する位置に最も近い近ページを検索するように構成されたページ選択モジュールと、
前記仮想ボリュームの前記未割り当てのターゲットアドレスに、前記論理ボリューム内の前記近ページを割り当てるように構成されたディスク制御モジュールと
を備えたストレージシステムであり、
前記仮想ボリュームのより低位のアドレスに、前記論理ボリュームのより低位のアドレスを割り当てるとともに、前記仮想ボリュームのより高位のアドレスに、前記論理ボリュームのより高位のアドレスを割り当てるように、前記論理ボリュームが前記仮想ボリュームに割り当てられる
ストレージシステム。
【請求項２】
前記論理ボリュームは、
複数のハードディスクドライブにマップされ、
各ハードディスクドライブは、
前記複数のハードディスクドライブの内側セクションよりも、前記論理ボリュームのより低位のアドレスを有する前記複数のハードディスクドライブの外側セクションを備える
請求項１に記載のストレージシステム。
【請求項３】
前記サーバのアプリケーションからの書き込み要求に応じて、前記ディスク制御モジュールは、
前記書き込み要求の第１のデータを書き込むためのハードディスクドライブの第１のセクションに対応する前記仮想ボリュームの第１のアドレスを割り当てるとともに、前記書き込み要求の第２のデータを書き込むための前記ハードディスクドライブの第２のセクションに対応する前記仮想ボリュームの第２のアドレスを割り当て、
前記第１のデータは、
前記第２のデータよりも頻繁にアクセスされ、
前記第１のアドレスは、
前記第２のアドレスより低位のアドレスである
請求項２に記載のストレージシステム。
【請求項４】
より低い円周のセクションよりも、前記仮想ボリュームのより低位のアドレスに、より高い円周のセクションを割り当てるように、前記論理ボリュームはＲＡＩＤグループにマッピングされ、前記ＲＡＩＤグループは複数のハードディスクドライブにマッピングされる
請求項２に記載のストレージシステム。
【請求項５】
前記論理ボリュームは、
異なる性能レベルを有する異なるタイプの記憶媒体にマップされ、
より高性能の媒体は、
より低性能の媒体よりも前記論理ボリュームのより低位のアドレスを有し、前記仮想ボリュームのより低位のアドレスに、より高性能の媒体を割り当て、前記仮想ボリュームのより高位のアドレスに、より低性能の媒体を割り当てるように、前記論理ボリュームが仮想ボリュームに割り当てられる
請求項１に記載のストレージシステム。
【請求項６】
前記仮想ボリュームの前記ターゲットアドレスは、
前記仮想ボリュームを識別する仮想ボリューム名と、前記仮想ボリューム内の仮想ボリュームアドレスとを含む
請求項１に記載のストレージシステム。
【請求項７】
前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算することは、
前記仮想ボリューム名によって識別された前記仮想ボリュームの容量によって分割される前記仮想アドレスに相当する位置パーセンテージを計算することを含み、
前記位置パーセンテージは、
前記論理ボリューム内で前記近ページを見つけるために使用される
請求項６に記載のストレージシステム。
【請求項８】
ネットワークを介してサーバに結合されたストレージシステムのための割り当て方法であって、
書き込み要求のデータについて仮想ボリュームの未割り当てのターゲットアドレスを取得することと、
前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算することと、
前記論理ボリューム内の対応する位置に最も近い近ページを検索することと、
前記仮想ボリュームの前記未割り当てのターゲットアドレスに、前記論理ボリューム内の前記近ページを割り当てることと
を含む割り当て方法であり、
前記仮想ボリュームのより低位のアドレスに、前記論理ボリュームのより低位のアドレスを割り当てるとともに、前記仮想ボリュームのより高位のアドレスに、前記論理ボリュームのより高位のアドレスを割り当てるように、前記論理ボリュームが前記仮想ボリュームに割り当てられる
割り当て方法。
【請求項９】
前記論理ボリュームを複数のハードディスクドライブにマップすることをさらに含む割り当て方法であって、
各ハードディスクドライブは、
前記複数のハードディスクドライブの内側セクションよりも、前記論理ボリュームのより低位のアドレスを有する前記複数のハードディスクドライブの外側セクションを備える
請求項８に記載の割り当て方法。
【請求項１０】
前記サーバのアプリケーションからの書き込み要求に応じて、前記書き込み要求の第１のデータを書き込むためのハードディスクドライブの第１のセクションに対応する前記仮想ボリュームの第１のアドレスを割り当てることと、前記書き込み要求の第２のデータを書き込むための前記ハードディスクドライブの第２のセクションに対応する前記仮想ボリュームの第２のアドレスを割り当てることとをさらに含む割り当て方法であって、
前記第１のデータは、
前記第２のデータよりも頻繁にアクセスされ、前記第１のアドレスは、前記第２のアドレスより低位のアドレスである
請求項９に記載の割り当て方法。
【請求項１１】
より低い円周のセクションよりも、前記仮想ボリュームのより低位のアドレスに、より高い円周のセクションを割り当てるように、前記論理ボリュームはＲＡＩＤグループにマッピングされ、前記ＲＡＩＤグループは複数のハードディスクドライブにマッピングされる
請求項９に記載の割り当て方法。
【請求項１２】
前記論理ボリュームを、異なる性能レベルを有する異なるタイプの記憶媒体にマップすることをさらに含む割り当て方法であって、
より高性能の媒体は、
より低性能の媒体よりも前記論理ボリュームのより低位のアドレスを有し、前記仮想ボリュームのより低位のアドレスに、より高性能の媒体を割り当て、前記仮想ボリュームのより高位のアドレスに、より低性能の媒体を割り当てるように、前記論理ボリュームが前記仮想ボリュームに割り当てられる
請求項８に記載の割り当て方法。
【請求項１３】
前記仮想ボリュームの前記ターゲットアドレスは、
前記仮想ボリュームを識別する仮想ボリューム名と、前記仮想ボリューム内の仮想ボリュームアドレスとを含む
請求項８に記載の割り当て方法。
【請求項１４】
前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算することは、
前記仮想ボリューム名によって識別された前記仮想ボリュームの容量によって分割される前記仮想アドレスに相当する位置パーセンテージを計算することを含み、
前記位置パーセンテージは、
前記論理ボリューム内で前記近ページを見つけるために使用される
請求項１３に記載の割り当て方法。
【発明の詳細な説明】
【技術分野】
【０００１】
０００１    本発明は概して、シンプロビジョニングを備えるストレージシステムに関し、特に、論理ボリュームの領域を仮想ボリュームに割り当てることに関する。
【背景技術】
【０００２】
０００２    ＨＤＤ（ハードディスクドライブ）は、磁気データを格納するためのプラッターを有する。プラッター上に多くのセクタがある。またＨＤＤは、セクタからデータを読み取り、かつセクタからデータを書き込むためのディスクヘッドを有する。セクタの長さは固定である。プラッターの外周の長さが内周の長さよりも大きいため、プラッターの外周上のセクタの数は、内周上のセクタの数よりも多い。従って、外周からの読み取り時間及び外周への書き込み時間は、内周からの読み取り時間及び内周への書き込み時間よりも短い。
【０００３】
０００３    ＨＤＤは、読み取る又は書き込む領域を指定するためのアドレスでアクセスされる。より低位のアドレスは、外周に割り当てられ、より高位のアドレス（は、内周に割り当てられる。従って、より低位のアドレスからの読み取り時間及びより低位のアドレスへの書き込み時間は、より高位のアドレスからの読み取り時間及びより高位のアドレスへの書き込み時間よりも短い。読み取り及び書き込みプロセスをよく迅速に完了するために、頻繁にアクセスされるデータをより低位のアドレスに格納し、稀にしかアクセスされないデータをより高位のアドレスに格納するためのアプリケーションがある。
【０００４】
０００４    近年、シンプロビジョニングが普及してきている。シンプロビジョニングとは、ストレージサブシステムが未割り当て領域へのライトコマンドを受信した場合に、仮想ボリュームに領域を割り当てる方法である。既存の方法では、シンプロビジョニング機能が、いくつかのＨＤＤからランダムに選択された領域を仮想ボリュームに割り当てることを可能にする（図１を参照）。より高位のアドレスの領域が仮想ボリュームのより低位のアドレスに割り当てられた場合、アプリケーションは、頻繁にアクセスされるデータをＨＤＤのより高位のアドレスに格納する。その結果、アプリケーションの性能は下がる。ユーティリティストレージサーバシステムで仮想ボリュームを管理する例は、米国特許第６，８２３，４４２号に見つけられる。
【発明の概要】
【０００５】
０００５    本発明の例示的な実施形態は、性能の向上のために論理ボリュームの領域を仮想ボリュームに割り当てるための技術を提供する。特定の実施形態では、ページ選択プログラムは、ターゲットアドレスを取得し、仮想ボリューム内の位置を計算し、計算された位置に最も近い近ページを検索し、そして、ストレージシステムが仮想ボリューム上の未割り当て領域へのライトコマンドを受信した場合に、ディスク制御プログラムは、当該ページを仮想ボリュームに割り当てる。一実施形態では、ページ選択プログラムは、ページのアドレスに基づいて、ＲＡＩＤグループのページの位置を事前に計算する。他の実施形態では、ページ選択プログラムは、ページのアドレス及び媒体の性能に基づいて、ＲＡＩＤグループのページの位置を事前に計算する。このようにして、より低位のアドレスの領域は、仮想ボリュームのより低位のアドレスに割り当てられ、アプリケーションの性能は下がらない。
【０００６】
０００６    本発明の一態様に従い、ストレージシステムは、複数のハードディスクドライブと、サーバに複数の仮想ボリュームを提供するとともに、プロセッサ及びメモリを含むストレージコントローラとを備える。前記ストレージコントローラは、書き込み要求に応じて前記複数のハードディスクドライブに前記複数の仮想ボリュームのページを割り当て、かつ前記ストレージコントローラは、前記仮想ボリュームの第１のアドレスに前記複数のハードディスクの外側セクションを割り当てるように制御し、かつ前記仮想ボリュームの第２のアドレスに前記複数のハードディスクドライブの内側セクションを割り当て、前記第１のアドレスは、前記第２のアドレスよりも低位である。
【０００７】
０００７    いくつかの実施態様では、前記複数のハードディスクドライブは、複数の論理ボリュームに割り当てられる。前記ストレージコントローラは、前記複数の論理ボリュームの第１のアドレスに割り当てられる前記複数のハードディスクドライブの第１のアドレスをマッピングするとともに、前記複数の論理ボリュームの第２のアドレスに割り当てられる前記複数のハードディスクドライブの第２のアドレスをマッピングし、前記複数のハードディスクドライブの前記第１のアドレスは、前記複数のハードディスクドライブの前記第２のアドレスよりも比較的小さく、前記複数の論理ボリュームの前記第１のアドレスは、前記複数の論理ボリュームの前記第２のアドレスよりも比較的小さい。書き込み要求に応じて、前記書き込み要求に従った仮想ボリュームのターゲットページは、前記複数の論理ボリュームのページに割り当てられ、前記複数の論理ボリュームのうちの前記割り当てられるページは、前記仮想ボリュームの前記アドレスに基づいて選択される。前記ターゲットページ用の前記仮想ボリュームの比例位置に対して、前記複数の論理ボリュームの比例位置に最も近い未割り当てのページが選択されるように、前記複数の論理ボリュームのうちの前記割り当てられるページが選択される。
【０００８】
０００８    本発明の他の態様に従って、ネットワークを介してサーバに結合されたストレージシステムは、プロセッサと、メモリと、書き込み要求のデータについて仮想ボリュームの未割り当てのターゲットアドレスを取得し、前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算し、かつ前記論理ボリューム内の対応する位置に最も近い近ページを検索するように構成されたページ選択モジュールと、前記仮想ボリュームの前記未割り当てのターゲットアドレスに、前記論理ボリューム内の前記近ページを割り当てるように構成されたディスク制御モジュールとを備える。前記仮想ボリュームのより低位のアドレスに、前記論理ボリュームのより低位のアドレスを割り当てるとともに、前記仮想ボリュームのより高位のアドレスに、前記論理ボリュームのより高位のアドレスを割り当てるように、前記論理ボリュームが前記仮想ボリュームに割り当てられる。
【０００９】
０００９    いくつかの態様では、前記論理ボリュームは、複数のハードディスクドライブにマップされ、各ハードディスクドライブは、前記複数のハードディスクドライブの内側セクションよりも、前記論理ボリュームのより低位のアドレスを有する前記複数のハードディスクドライブの外側セクションを備える。前記サーバのアプリケーションからの書き込み要求に応じて、前記ディスク制御モジュールは、前記書き込み要求の第１のデータを書き込むためのハードディスクドライブの第１のセクションに対応する前記仮想ボリュームの第１のアドレスを割り当てるとともに、前記書き込み要求の第２のデータを書き込むための前記ハードディスクドライブの第２のセクションに対応する前記仮想ボリュームの第２のアドレスを割り当て、前記第１のデータは、前記第２のデータよりも頻繁にアクセスされ、前記第１のアドレスは、前記第２のアドレスより低位のアドレスである。より低い円周のセクションよりも、前記仮想ボリュームのより低位のアドレスに、より高い円周のセクションを割り当てるように、前記論理ボリュームはＲＡＩＤグループにマッピングされ、前記ＲＡＩＤグループは複数のハードディスクドライブにマッピングされる。
【００１０】
００１０    特定の態様では、前記論理ボリュームは、異なる性能レベルを有する異なるタイプの記憶媒体にマップされ、より高性能の媒体は、より低性能の媒体よりも前記論理ボリュームのより低位のアドレスを有する。前記仮想ボリュームのより低位のアドレスに、より高性能の媒体を割り当て、かつ前記仮想ボリュームのより高位のアドレスに、より低性能の媒体を割り当てるように、前記論理ボリュームが仮想ボリュームに割り当てられる。前記仮想ボリュームの前記ターゲットアドレスは、前記仮想ボリュームを識別する仮想ボリューム名と、前記仮想ボリューム内の仮想ボリュームアドレスとを含む。前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算することは、前記仮想ボリューム名によって識別された前記仮想ボリュームの容量によって分割される前記仮想アドレスに相当する位置パーセンテージを計算することを含む。前記位置パーセンテージは、前記論理ボリューム内で前記近ページを見つけるために使用される。
【００１１】
００１１    本発明の他の態様は、複数のハードディスクドライブを有するストレージシステムのための割り当て方法を対象とする。前記割り当て方法は、複数の仮想ボリュームをサーバに提供することと、前記サーバからの書込み要求に応じて、前記複数の仮想ボリュームのページを前記複数のハードディスクドライブに割り当てることとを含み、当該割り当ては、前記複数のハードディスクの外側セクションを、前記仮想ボリュームの第１のアドレスに割り当て、かつ前記複数のハードディスクドライブの内側セクションを、前記仮想ボリュームの第２のアドレスに割り当てることを含み、前記第１のアドレスは、前記第２のアドレスより低位である。
【００１２】
００１２    本発明の他の態様は、ネットワークを介してサーバに結合されたストレージシステムのための割り当て方法を対象とする。この割り当て方法は、書き込み要求のデータについて仮想ボリュームの未割り当てのターゲットアドレスを取得することと、前記ターゲットアドレスに基づいて前記仮想ボリューム内の位置を計算することと、前記論理ボリューム内の対応する位置に最も近い近ページを検索することと、前記仮想ボリュームの前記未割り当てのターゲットアドレスに、前記論理ボリューム内の前記近ページを割り当てることとを含む。前記仮想ボリュームのより低位のアドレスに、前記論理ボリュームのより低位のアドレスを割り当てるとともに、前記仮想ボリュームのより高位のアドレスに、前記論理ボリュームのより高位のアドレスを割り当てるように、前記論理ボリュームが前記仮想ボリュームに割り当てられる。
【００１３】
００１３    本発明の上記及びその他の特徴及び効果は、特定の実施形態についての以下の詳細な説明を考慮することにより、当業者にとって明らかとなるであろう。
【図面の簡単な説明】
【００１４】
【図１】００１４    図１は、いくつかのＨＤＤからランダムに選択された領域を仮想ボリュームに割り当てるための公知のシンプロビジョニング機能を示す。
【図２】００１５    図２は、本発明の実施形態に従って、いくつかのＨＤＤから選択された領域を仮想ボリュームに割り当てるためのシンプロビジョニング機能を示す。
【図３】００１６    図３は、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。
【図４】００１７    図４は、本発明の第１の実施形態に従った、図３のアプリケーションサーバのメモリ及びストレージサブシステムのメモリの一例を示す。
【図５】００１８    図５は、第１の実施形態に従ったＲＡＩＤグループ情報の一例を示す。
【図６】００１９    図６は、第１の実施形態に従ったＲＡＩＤ情報の一例を示す。
【図７】００２０    図７は、論理ボリューム情報の一例を示す。
【図８】００２１    図８は、プール情報の一例を示す。
【図９】００２２    図９は、仮想ボリューム情報の一例を示す。
【図１０】００２３    図１０は、リードコマンド及びライトコマンドの一例を示す。
【図１１】００２４    図１１は、仮想ボリュームと論理ボリューム、論理ボリュームとＲＡＩＤグループ、及びＲＡＩＤグループとＨＤＤとの間の関係を例示する図の一例を示す。
【図１２】００２５    図１２は、ディスク制御プログラムがアプリケーションプログラムからリードコマンド又はライトコマンドを受信し、ディスク制御プログラムが読み取り又は書き込みの結果を送信することを示す流れ図の一例を示す。
【図１３】００２６    図１３は、ページ選択プログラムがページを選択し、ディスク制御プログラムが図１２のステップ１００４の仮想ボリュームにページを割り当てることを示す流れ図の一例である。
【図１４】００２７    図１４は、本発明の第２の実施形態に従った、図３のアプリケーションサーバのメモリ及びストレージサブシステムのメモリの一例を示す。
【図１５】００２８    図１５は、第２の実施形態に従ったＲＡＩＤグループ情報の一例を示す。
【図１６】００２９    図１６は、第２の実施形態に従ったＲＡＩＤ情報の一例を示す。
【図１７】００３０    図１７は、第２の実施形態に従った性能情報の一例を示す。
【図１８】００３１    図１８は、第２の実施形態に従った位置の計算を例示する図の一例を示す。
【発明を実施するための形態】
【００１５】
００３２    以下の本発明についての詳細な説明では、開示の一部を成すとともに、それによって本発明が実施され得る例示的実施形態が実例として（但し限定ではない）示される、添付の図面を参照する。当該図面において、類似の数字は、いくつかの図面を通してほぼ同様の構成要素を示すものである。また、留意すべき点として、詳細な説明では様々な例示的実施形態を提供する（以下に説明し、かつ図面で示される通り）が、本発明は本明細書において説明されかつ示される実施形態に限定されず、当業者が知っているであろう又は知るようになり得るその他の実施形態にも及び得る。本明細書における「一実施形態」、「本実施形態」、又は「上述の実施形態」の言及は、当該実施形態に関連して説明される特定の特性、構造又は特徴が、本発明の少なくとも一つの実施形態に含まれることを意味し、本明細書の様々な箇所において上記文言が使用されていても、必ずしもすべてが同一の実施形態を言及するものではない。さらに、以下の詳細な説明において、本発明を徹底して理解できるように、多くの具体的な詳細が記載されている。但し、本発明を実施するためにこれらの具体的な詳細すべてが必要なわけではないことは、当業者にとって明らかであろう。他の状況では、本発明を不必要に曖昧にしないように、周知の構造、材料、回路、プロセス及びインタフェースの詳細については説明しておらず、かつ／又はブロック図において図示している場合もある。
【００１６】
００３３    さらに、以下の詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様に関して示されている。これらのアルゴリズム記述及び象徴的な態様は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。本発明において、実施されるステップは、具体的な結果を達成するための相当量の物理的操作を必要とする。通常は（必ずしもそうではないが）、当該数量は、格納、転送、組み合わせ、比較、その他の操作が可能な電気もしくは磁気信号又は命令の形態を取る。主に一般的な使用のために、上記の信号をビット、値、要素、記号、文字、用語、数字、命令等として言及することが時として便利であることが証明されている。但し、上記の及び類似の用語のすべてが、適切な物理数量に関連付けられるものであり、かつ当該数量に適用される単に便利なラベルであることを留意すべきである。別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的（電子的）数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。
【００１７】
００３４    本発明は、本明細書における動作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等（但し、これらに限定されない）のコンピュータ読取可能記憶媒体に格納され得る。本明細書において示されるアルゴリズム及び（情報）提示は、特定のコンピュータ又はその他の装置に本質的に関係しているわけではない。様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが判明するかもしれない。さらに、本発明は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置（ＣＰＵ）、プロセッサ、又はコントローラによって実行され得る。
【００１８】
００３５    以下により詳細に示す本発明の例示的実施形態は、論理ボリュームの領域を仮想ボリュームに割り当てるための装置、方法、及びコンピュータプログラムを提供する。
【００１９】
００３６    第１の実施形態  １つの媒体タイプだけを有するボリュームプール
【００２０】
００３７    Ａ．システム構成
【００２１】
００３８    図３は、本発明の方法及び装置が適用され得る情報システムのハードウェア構成の一例を示す。このシステムは、アプリケーションサーバ１００、ＳＡＮ（ストレージエリアネットワーク）１２０、ＬＡＮ（ローカルエリアネットワーク）１４０、及びストレージサブシステム１６０を備える。アプリケーションサーバ１００は、ＣＰＵ（中央演算処理装置）１０１、メモリ１０２、ＨＤＤ（ハードディスクドライブ）１０３、ＳＡＮインタフェース１０４、及びＬＡＮインタフェース１０５を備える。ＣＰＵ１０１は、メモリ１０２からプログラムを読み取り、プログラムを実行する。アプリケーションサーバ１００がプログラム及びデータを開始かつ格納する時に、メモリ１０２は、ＨＤＤ１０３からプログラム及びデータを読み取る。ＨＤＤ１０３は、プログラム及びデータを格納する。ＳＡＮインタフェース１０４は、アプリケーションサーバ１００とＳＡＮ１２０を接続する。ＬＡＮインタフェース１０５は、アプリケーションサーバ１００とＬＡＮ１４０を接続する。ＳＡＮ１２０は、アプリケーションサーバ１００とストレージサブシステム１６０を接続する。アプリケーションサーバ１００は、ストレージサブシステム１６０にアプリケーションデータを送信し、ストレージサブシステム１６０からアプリケーションを受信するために、ＳＡＮ１２０を使用する。アプリケーションサーバ１００は、ストレージサブシステム１６０に管理データを送信し、ストレージサブシステム１６０から管理データを受信するためにＬＡＮ１４０を使用する。ＬＡＮ１４０は、アプリケーションサーバ１００とストレージサブシステム１６０を接続する。ストレージサブシステム１６０は、ＳＡＮインタフェース１６１、ＬＡＮインタフェース１６２、ＣＰＵ１６３、メモリ１６４、ディスクインタフェース１６５、ＨＤＤ１６６、及びＳＳＤ（ソリッドステートドライブ）１６７を備える。ＳＡＮインタフェース１６１は、ストレージサブシステム１６０とＳＡＮ１２０を接続する。ＬＡＮインタフェース１６２は、ストレージサブシステム１６０とＬＡＮ１４０を接続する。ＣＰＵ１６３は、メモリ１６４からプログラムを読み取り、プログラムを実行する。ストレージサブシステム１６０がプログラム及びデータを開始かつ格納する時に、メモリ１６４は、ＨＤＤ１６６及びＳＳＤ１６７からプログラム及びデータを読み取る。ディスクインタフェース１６５は、ストレージサブシステム１６０、ＨＤＤ１６６、及びＳＳＤ１６７を接続する。ＨＤＤ１６６は、プログラム及びデータを格納する。ＳＳＤ１６７は、プログラム及びデータを格納する。
【００２２】
００３９    図４は、第１の実施形態に従って、図１のアプリケーションサーバ１００のメモリ１０２及びストレージサブシステム１６０のメモリ１６４の一例を示す。メモリ１０２は、ＯＳ（オペレーティングシステム）プログラム２０１及びアプリケーションプログラム２０２を備える。ＯＳプログラム２０１は、アプリケーションプログラム２０２を実行する。アプリケーションプログラム２０２（例えば、データベースプログラム）は、ストレージサブシステム１６０からデータを読み取り、データを処理し、かつストレージサブシステム１６０に結果を書き込む。
【００２３】
００４０    ストレージサブシステム１６０のメモリ１６４は、ディスク制御プログラム２２１、ＲＡＩＤ（Redundant Arrays of Inexpensive (or Independent) Disks）グループ情報２２２、ＲＡＩＤ情報２２３、論理ボリューム情報２２４、プール情報２２５、仮想ボリューム情報２２６、及びページ選択プログラム２２７を備える。ディスク制御プログラム２２１は、アプリケーションサーバ１００からリードコマンド及びライトコマンドを受信し、ＨＤＤ１６６及びＳＳＤ１６７からデータを読み取り、ＲＡＩＤグループ情報２２２、ＲＡＩＤ情報２２３、論理ボリューム情報２２４、プール情報２２５、及び仮想ボリューム情報２２６を用いて、ＨＤＤ１６６及びＳＳＤ１６７にデータを書き込む。
【００２４】
００４１    図５は、第１の実施形態に従ったＲＡＩＤグループ情報２２２の一例を示す。ＲＡＩＤグループ情報２２２は、ＲＡＩＤグループ名３０１、媒体名３０２、ＲＡＩＤレベル３０３、媒体タイプ３０４、及び容量３０５の欄を含む。例えば、行３０６は、「ＲＧ  Ａ」が「ＨＤＤ  Ａ」、「ＨＤＤ  Ｂ」、「ＨＤＤ  Ｃ」、及び「ＨＤＤ  Ｄ」を含み、「ＲＧ  Ａ」のＲＡＩＤレベルが「ＲＡＩＤ５」であり、「ＲＧ  Ａ」が「ＨＤＤ１５,０００ｒｐｍ」を含み、「ＲＧ  Ａ」の容量が「１００」であることを示す。第１の実施形態には媒体タイプが１つだけある。
【００２５】
００４２    図６は、第１の実施形態に従ったＲＡＩＤ情報２２３の一例を示す。ＲＡＩＤ情報２２３は、ＲＡＩＤグループ名４０１、ページ番号４０２、位置４０３、ＲＡＩＤグループアドレス４０４、データ媒体名４０５、データ媒体アドレス４０６、パリティ媒体名４０７、及びパリティ媒体アドレス４０８の欄を含む。例えば、行４０９及び行４１０は、「ＲＧ  Ａ」上の「ページ２００」のアドレス「０」〜「９」が、「ＨＤＤ  Ａ」上のアドレス「０」〜「９」に割り当てられ、「ＲＧ  Ａ」の初めから「０％」に位置し、「ＲＧ  Ａ」上の「ページ２００」のアドレス「１０」〜「１９」が、「ＨＤＤ  Ｂ」上のアドレス「０」〜「９」に割り当てられ、「ＲＧ  Ａ」の始めから「０％」に位置し、「ＲＧ  Ａ」上の「ページ２００」のパリティが「ＨＤＤ  Ｃ」上のアドレス「０」〜「９」に位置することを示している。
【００２６】
００４３    ページ選択プログラム２２７は、ＲＡＩＤ情報２２３が更新される位置４０３を計算する。例えば、「ＲＧ  Ａ」上の「ページ２０１」のアドレスは「２０」〜「３９」であり、「ＲＧ  Ａ」の容量３０５は「１００」である。従って、「ページ２０１」の位置４０３は、「２０％」（２０／１００）である。
【００２７】
００４４    図７は、テーブル形式の論理ボリューム情報２２４の一例を示す。論理ボリューム情報２２４は、論理ボリューム名５０１、論理ボリュームアドレス５０２、ＲＡＩＤグループ名５０３、及びＲＡＩＤグループアドレス５０４の欄を含む。例えば、行５０５は、「Ｌ−ＶＯＬ  Ａ」のアドレス「０」〜「９９」が「ＲＧ  Ａ」のアドレス「０」〜「９９」に割り当てられることを示す。
【００２８】
００４５    図８は、テーブル形式のプール情報２２５の一例を示す。プール情報２２５は、プール名６０１、論理ボリューム名６０２、仮想ボリューム名６０３、及び容量６０４の欄を含む。例えば、行６０５は、「プールＡ」が「Ｌ−ＶＯＬ  Ａ」及び「Ｌ−ＶＯＬ  Ｂ」を含み、「プールＡ」の領域が「Ｖ−ＶＯＬ  Ａ」によって使用され、「Ｖ−ＶＯＬ  Ａ」の容量が「２００」であることを示す。
【００２９】
００４６    図９は、テーブル形式の仮想ボリューム情報２２６の一例を示す。仮想ボリューム情報２２６は、仮想ボリューム名７０１、仮想ボリュームアドレス７０２、ページ番号７０３、論理ボリューム名７０４、論理ボリュームアドレス７０５、及びページ番号７０６の欄を含む。例えば、行７０７は、「Ｖ−ＶＯＬ  Ａ」上のアドレス「０」〜「１９」が「ページ０」であり、「Ｌ−ＶＯＬ  Ａ」上のアドレス「０」〜「１９」が「ページ１００」であり、「ページ０」が「ページ１００」に割り当てられることを示す。
【００３０】
００４７    図１０は、リードコマンド８００及びライトコマンド８２０の一例を示す。リードコマンド８００は、コマンドタイプ８０１、ボリューム名８０２、及びボリュームアドレス８０３を含む。リードコマンド８００は、アプリケーションプログラム２０２からストレージサブシステム１６０に送信される。ライトコマンド８２０は、コマンドタイプ８２１、ボリューム名８２２、ボリュームアドレス８２３、及びデータ８２４を含む。ライトコマンド８２０は、アプリケーションプログラム２０２からストレージサブシステム１６０に送信される。
【００３１】
００４８    図１１は、仮想ボリュームと論理ボリュームの間、論理ボリュームとＲＡＩＤグループの間、及びＲＡＩＤグループとＨＤＤの間の関係を例示する図の一例を示す。例えば、「Ｖ−ＶＯＬＡ」上のアドレス「４０」〜「５９」は、「Ｌ−ＶＯＬ  Ａ」上のアドレス「２０」〜「３９」にマッピングされる。「Ｌ−ＶＯＬＡ」上のアドレス「２０」〜「３９」は、「ＲＧ  Ａ」上のアドレス「２０」〜「３９」にマッピングされる。「ＲＧ  Ａ」上のアドレス「２０」〜「２９」は、「ＨＤＤ  Ａ」上のアドレス「１０」〜「１９」にマッピングされる。「ＲＧ  Ａ」上のアドレス「３０」〜「３９」は、「ＨＤＤ  Ｃ」上のアドレス「１０」〜「１９」にマッピングされる。
【００３２】
００４９    Ｂ．プロセスフロー
【００３３】
００５０    図１２は、ディスク制御プログラム２２１がアプリケーションプログラム２０２からリードコマンド８００又はライトコマンド８２０を受信し、ディスク制御プログラム２２１が読み取り又は書き込みの結果を送信することを示す流れ図の一例である。ステップ１００１では、ディスク制御プログラム２２１は、アプリケーションプログラム２０２からリードコマンド８００又はライトコマンド８２０を受信する。決定ステップ１００２では、ステップ１００１で受信されたディスク制御プログラム２２１がライトコマンド８２０である場合、プロセスは決定ステップ１００３に進む。そうでない場合、プロセスは決定ステップ１００６に進む。
【００３４】
００５１    決定ステップ１００３では、ライトコマンド８２０のボリューム名８２２及びボリュームアドレス８２３によって指定された領域が仮想ボリューム情報２２６に割り当てられる場合、プロセスは、ステップ１００５に進む。そうでない場合、プロセスはステップ１００４に進む。ステップ１００４では、ディスク制御プログラム２２１は、ボリューム名８２２及びボリュームアドレス８２３によって指定された仮想ボリュームに論理ボリュームの未割り当て領域を割り当て、仮想ボリューム情報２２６を更新する。
【００３５】
００５２    ステップ１００５では、ディスク制御プログラム２２１は、ライトコマンド８２０からボリューム名８２２及びボリュームアドレス８２３を取得し、仮想ボリューム情報２２６から論理ボリューム名７０４及び論理ボリュームアドレス７０５を取得し、論理ボリューム情報２２４からＲＡＩＤグループ名５０３及びＲＡＩＤグループアドレス５０４を取得し、ＲＡＩＤ情報２２３からデータ媒体名４０５及びデータ媒体アドレス４０６を取得し、ＲＡＩＤ情報２２３からパリティ媒体名４０７及びパリティ媒体アドレス４０８を取得し、データ媒体名４０５及びデータ媒体アドレス４０６によって指定された領域を読み取り、パリティを計算し、データ媒体名４０５及びデータ媒体アドレス４０６によって指定された領域にライトコマンド８２０のデータ８２４を書き込み、パリティ媒体名４０７及びパリティ媒体アドレス４０８によって指定された領域にパリティを書き込む。例えば、ボリューム名８２２が「Ｖ−ＶＯＬ  Ａ」であり、ボリュームアドレス８２３がアドレス「４０」〜「４３」である時に、データ８２４は、「ＨＤＤ  Ａ」上のアドレス「１０」〜「１３」に書き込まれ、ディスク制御プログラム２２１は、「ＨＤＤ  Ａ」上のアドレス「１０」〜「１９」及び「ＨＤＤ  Ｃ」上のアドレス「１０」〜「１９」を読み取り、パリティを計算し、パリティを「ＨＤＤ  Ｂ」上のアドレス「１０」〜「１９」に書き込む。
【００３６】
００５３    決定ステップ１００６では、リードコマンド８００のボリューム名８０２及びボリュームアドレス８０３によって指定される領域が仮想ボリューム情報２２６に割り当てられる場合、プロセスはステップ１００８に進む。そうでない場合、プロセスはステップ１００７に進む。ステップ１００７では、ディスク制御プログラム２２１は、アプリケーションサーバ１００に「０」を戻す。なぜならば、ボリューム名８０２及びボリュームアドレス８０３によって指定される領域には書き込みがなされないからである。ステップ１００８では、ディスク制御プログラム２２１は、リードコマンド８００からボリューム名８０２及びボリュームアドレス８０３を取得し、仮想ボリューム情報２２６から論理ボリューム名７０４及び論理ボリュームアドレス７０５を取得し、論理ボリューム情報２２４からＲＡＩＤグループ名５０３及びＲＡＩＤグループアドレス５０４を取得し、ＲＡＩＤ情報２２３からデータ媒体名４０５及びデータ媒体アドレス４０６を取得し、データ媒体名４０５及びデータ媒体アドレス４０６によって指定される領域を読み取り、データを戻す。
【００３７】
００５４    図１３は、ページ選択プログラム２２７がページを選択し、ディスク制御プログラム２２１が図１２のステップ１００４において仮想ボリュームにページを割り当てることを示す流れ図の一例である。ステップ１１０１では、ページ選択プログラム２２７は、ライトコマンド８２０のボリューム名８２２及びボリュームアドレス８２３からターゲットアドレスを取得する。ステップ１１０２では、ページ選択プログラム２２７は、ボリューム名８２２及びボリュームアドレス８２３に基づいてターゲット仮想ボリュームの位置を計算する。例えば、ボリューム名８２２が「Ｖ−ＶＯＬ  Ａ」であり、ボリュームアドレス８２３が「４０」〜「４３」であり、「Ｖ−ＶＯＬ  Ａ」の容量６０４が「２００」である場合、「Ｖ−ＶＯＬ  Ａ」の位置は「２０％」（＝４０／２００）である。ステップ１１０３では、ページ選択プログラム２２７は、ＲＡＩＤ情報２２３からステップ１１０２で計算される位置に最も近い近ページを選択する。例えば、ページ選択プログラム２２７は位置を計算し、位置は「２０％」であった。従って、ページ選択プログラム２２７は、ＲＡＩＤ情報２２３の位置４０３が「２０％」である「ページ２０１」を選択する。ステップ１１０４では、ディスク制御プログラム２２１は、ボリューム名８２２及びボリュームアドレス８２３によって指定されるアドレスに「Ｌ−ＶＯＬ  Ａ」上のアドレス「２０」〜「３９」を割り当てる。なぜならば、ステップ１１０３で選択されたページのアドレスが、論理ボリューム情報２２４から「ＲＧ  Ａ」上の「２０」〜「３９」だからである。
【００３８】
００５５    第２の実施形態  いくつかの媒体タイプを有するボリュームプール
【００３９】
００５６    以下は、第２の実施形態と第１の実施形態の違いだけを説明する。
【００４０】
００５７    Ａ．システム構成
【００４１】
００５８    図１４は、第２の実施形態に従った図３のアプリケーションサーバ１００のメモリ１０２及びストレージサブシステム１６０のメモリ１６４の一例を示す。メモリ１６４は、ディスク制御プログラム２２１、ＲＡＩＤグループ情報２２２、ＲＡＩＤ情報２２３、論理ボリューム情報２２４、プール情報２２５、仮想ボリューム情報２２６、ページ選択プログラム２２７、及び性能情報２２８を備える。性能情報２２８は、図４の第１の実施形態では提供されない。
【００４２】
００５９    図１５は、第２の実施形態に従ったＲＡＩＤグループ情報２２２の一例を示す。第１の実施形態（図５）のＲＡＩＤグループ情報と異なり、第２の実施形態にいくつかの媒体タイプがある。
【００４３】
００６０    図１６は、第２の実施形態に従ったＲＡＩＤ情報２２３の一例を示す。第１の実施形態（図６）のＲＡＩＤ情報と異なり、第２の実施形態にいくつかの媒体タイプがある。
【００４４】
００６１    図１７は、第２の実施形態に従った性能情報２２８の一例を示す。性能情報２２８は、ランク１５０１及び媒体名１５０２の欄を含む。例えば、欄１５０３は、「ＳＳＤ  ＭＬＣ」が最高性能の媒体であることを示す。
【００４５】
００６２    図１８は、第２の実施形態に従った位置の計算を例示する図の一例を示す。図１５のＲＡＩＤグループ情報２２２に３つの媒体タイプがある。最高性能の媒体タイプは、性能情報２２８によると「ＳＳＤ  ＭＬＣ」であり、その容量は、図１５のＲＡＩＤグループ情報２２２によると「１００」である。２番目に高い性能の媒体タイプは、性能情報２２８によると「ＨＤＤ  １５，０００ｒｐｍ」であり、その容量は、図１５のＲＡＩＤグループ情報２２２によると「２００」である。３番目に高い性能の媒体タイプは、性能情報２２８によると「ＨＤＤ  １０,０００ｒｐｍ」であり、その容量は、図１５のＲＡＩＤグループ情報２２２によると「１００」である。従って、例えば、「ＲＧ  Ｂ」上の「ページ５０１」のアドレスは「２０」〜「３９」であり、図１５の容量３０５の合計は、「４００」である（＝１００＋１００＋１００＋１００）。「ページ５０１」の位置４０３は、「３５％」である（１００＋２０＊２／４００）。ページ選択プログラム２２７は、ＲＡＩＤ情報２２３が更新される時に位置４０３を計算する。
【００４６】
００６３    当然のことながら、図３に示すシステム構成は、本発明が実施され得る情報システムの単なる例示であり、本発明は特定のハードウェア構成に限定されない。本発明を実施するコンピュータ及びストレージシステムは、上述の発明を実施するために用いられるモジュール、プログラム及びデータ構造を格納しかつ読み出すことができる公知のＩ／Ｏ装置（例えば、ＣＤ及びＤＶＤドライブ、フロッピー（登録商標）ディスクドライブ、ハードドライブ等）も有し得る。これらのモジュール、プログラム及びデータ構造は、当該コンピュータ読取可能媒体上で符号化することができる。例えば、本発明のデータ構造は、本発明で使用されるプログラムが存在する一つ以上のコンピュータ読取可能媒体から独立したコンピュータ読取可能媒体に格納することができる。システムの構成要素は、あらゆる形態又は媒体のデジタルデータ通信（例えば、通信ネットワーク）によって相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク、ワイドエリアネットワーク（例えば、インターネット）、無線ネットワーク、ストレージエリアネットワーク等を含む。
【００４７】
００６４    説明では、本発明を徹底的に理解できるようにするために説明する目的で多くの詳細が記載されている。しかし、当業者にとっては、本発明を実施するためにはこれら具体的な詳細のすべてが必要なわけではないことは明らかであるだろう。また、留意すべき点として、本発明は、通常はフローチャート、流れ図、構成図又はブロック図として記載されるプロセスとして説明されてもよい。フローチャートでは動作を逐次プロセスとして説明し得るが、動作の多くは並行して又は同時に実行することができる。さらに、動作の順番は並び替えてもよい。
【００４８】
００６５    当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。本発明の実施形態の様々な態様は、回路や論理装置（ハードウェア）を用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体（ソフトウェア）上に記憶された命令を用いて実施してもよく、これがプロセッサによって実行された場合には、本発明の実施形態を実行する方法をプロセッサに実施させるものである。さらに、本発明のいくつかの実施形態は、ハードウェアのみにおいて実施されてよく、その他の実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に分散することができる。ソフトウェアによって実施された場合、上記の方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び／又は暗号化形式で命令を媒体に記憶することができる。
【００４９】
００６６    上記により、本発明が、論理ボリュームの領域を仮想ボリュームに割り当てる方法、装置及びコンピュータ読取可能媒体に記憶されたプログラムを提供するものであることが明らかであろう。さらに、本明細書において特定の実施形態が示され説明されているが、当業者にとって当然のことながら、開示された特定の実施形態の代わりに、同じ目的を達成するために創出されたいかなる構成（を用いてもよい。本開示は、本発明のあらゆる適応又はバリエーションを対象とすることを意図したものであり、また以下の請求項で用いられる用語は、本発明を本明細書で開示されている特定の実施形態に限定するものとは解釈されるべきではないことが理解される。むしろ本発明の範囲は、以下の請求項によって全面的に判断されるものであり、以下の請求項は、当該請求項が権利を有する同等物の範囲全体と共に、請求項の解釈について確立された原則に従って解釈されるものである。
【図１】
0005567545.tif 000002
【図２】
0005567545.tif 000003
【図３】
0005567545.tif 000004
【図４】
0005567545.tif 000005
【図５】
0005567545.tif 000006
【図６】
0005567545.tif 000007
【図７】
0005567545.tif 000008
【図８】
0005567545.tif 000009
【図９】
0005567545.tif 000010
【図１０】
0005567545.tif 000011
【図１１】
0005567545.tif 000012
【図１２】
0005567545.tif 000013
【図１３】
0005567545.tif 000014
【図１４】
0005567545.tif 000015
【図１５】
0005567545.tif 000016
【図１６】
0005567545.tif 000017
【図１７】
0005567545.tif 000018
【図１８】
0005567545.tif 000019