(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023040677
(43)【公開日】2023-03-23
(54)【発明の名称】ストレージシステム
(51)【国際特許分類】
G06F 3/06 20060101AFI20230315BHJP
G06F 11/34 20060101ALI20230315BHJP
G06F 16/185 20190101ALI20230315BHJP
【FI】
G06F3/06 301R
G06F3/06 302A
G06F3/06 304N
G06F11/34 142
G06F16/185
【審査請求】有
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2021147792
(22)【出願日】2021-09-10
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】中村 隆喜
(72)【発明者】
【氏名】山本 貴大
(72)【発明者】
【氏名】伊藤 晋太郎
(72)【発明者】
【氏名】揚妻 匡邦
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042MA08
5B042MA14
5B042MC25
(57)【要約】
【課題】階層型ストレージ管理を行うストレージシステムにおいて、適切なバッファ領域を設定する。
【解決手段】ストレージシステムは、ストレージプール102を提供するストレージ装置と、ストレージプール102を階層化して管理するストレージ管理部とを備える。ストレージプール102には、第1階層111、第2階層112および第3階層114と、このうちバッファ対象階層である第3階層114に対してデータを読み書きする際のバッファとして利用されるバッファ領域である第3階層用バッファ113と、が設定される。ストレージ管理部は、第3階層114のアクセス頻度に基づいて第3階層用バッファ113のサイズを決定する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
ストレージ管理部を稼働させるプロセッサと、データを格納するストレージ装置とを備え、前記ストレージ装置を少なくとも含む複数種類のストレージによるストレージプールを有するストレージシステムにおいて、
前記ストレージ管理部は、
前記ストレージプールの記憶領域を複数の階層に階層化して、各階層をそれぞれ異なるアクセス性能を有する前記ストレージに割り当て、
データのアクセス頻度に基づいて、前記複数の階層の中から前記データを格納する階層を決定し、
前記複数の階層のうち少なくとも一つの階層であるバッファ対象階層に格納されているデータを一時的に格納するバッファ領域を前記ストレージプールに設けて、当該バッファ領域を前記バッファ対象階層が割り当てられたストレージよりもアクセス性能が高いストレージに割り当て、
前記バッファ対象階層のアクセス頻度に基づいて前記バッファ領域のサイズを決定する、
ストレージシステム。
【請求項2】
請求項1に記載のストレージシステムにおいて、
前記複数の階層は、前記バッファ対象階層よりもアクセス性能が高いストレージに割り当てられた上位の階層を含み、
前記バッファ領域は、前記上位の階層と同じストレージに割り当てられる、
ストレージシステム。
【請求項3】
請求項2に記載のストレージシステムにおいて、
前記ストレージ管理部は、前記バッファ対象階層のサイズと、前記バッファ対象階層のアクセス頻度と、前記バッファ対象階層の期待アクセス確率とに基づいて、前記バッファ領域のサイズを決定する、
ストレージシステム。
【請求項4】
請求項2に記載のストレージシステムにおいて、
前記ストレージ管理部は、前記ストレージプールの各階層のアクセス頻度に基づくアクセスコストと、前記バッファ領域のサイズを変更した場合の前記アクセスコストの変化と、に基づいて前記バッファ領域のサイズを決定する、
ストレージシステム。
【請求項5】
請求項2に記載のストレージシステムにおいて、
前記ストレージ管理部は、前記ストレージプールの運用中に前記バッファ領域のサイズを動的に変更する、
ストレージシステム。
【請求項6】
請求項2に記載のストレージシステムにおいて、
前記ストレージ管理部は、
前記ストレージプールの各ページのアクセス頻度に基づいて、各階層に格納するページを決定し、格納を決定したページのサイズの合計に基づいて、前記複数の階層の各々のサイズを決定する、
ストレージシステム。
【請求項7】
請求項4に記載のストレージシステムにおいて、
前記ストレージ管理部は、アクセス頻度の高いページほど上位の階層に格納されるように、各階層に格納するページを決定する、
ストレージシステム。
【請求項8】
請求項1に記載のストレージシステムにおいて、
前記ストレージは、ネットワークを介して接続されるオブジェクトストレージを含み、
前記ストレージ管理部は、前記バッファ領域を前記ストレージ装置に割り当て、前記バッファ対象階層を前記オブジェクトストレージに割り当てる、
ストレージシステム。
【請求項9】
請求項8に記載のストレージシステムにおいて、
外部より提供されるストレージサービスを前記オブジェクトストレージとして利用する、
ストレージシステム。
【請求項10】
請求項1に記載のストレージシステムにおいて、
前記ストレージ管理部は、
データのアクセス頻度に基づいて、前記データを格納する階層を決定し、
前記バッファ対象階層でアクセスのあったデータを、前記バッファ領域及び前記バッファ対象階層にそれぞれ格納し、
前記バッファ領域において一定期間以上アクセスされていないデータのページを開放する、
ストレージシステム。
【請求項11】
請求項10に記載のストレージシステムにおいて、
前記ストレージ管理部は、前記バッファ領域において一定期間以上アクセスされていない複数のページを抽出するとともに、抽出した各ページのデータへのアクセス頻度に基づいて所定数のページを開放する、
ストレージシステム。
【請求項12】
ストレージプールの記憶領域を複数の階層に階層化して、各階層をそれぞれ異なるアクセス性能を有するストレージに割り当て、
データのアクセス頻度に基づいて、前記複数の階層の中から前記データを格納する階層を決定し、
前記複数の階層のうち少なくとも一つの階層であるバッファ対象階層に格納されているデータを一時的に格納するバッファ領域を前記ストレージプールに設けて、当該バッファ領域を前記バッファ対象階層に割り当てられたストレージよりも性能が高いストレージに割り当て、
前記バッファ対象階層のアクセス頻度に基づいて前記バッファ領域のサイズを決定する、
ストレージシステムの管理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ストレージシステムに関する。
【背景技術】
【0002】
本発明に関して、下記の特許文献1が知られている。特許文献1には、ストレージデバイスをそれぞれ有する複数のノードのうち、第1のノードは、上位装置からライト要求とともに複数のユーザデータを受信し、受信した複数のユーザデータに基づいて第1の冗長コードを生成し、生成した第1の冗長コードと複数のユーザデータを他のノードに送信するとともに、複数のユーザデータをストレージデバイスに格納し、第2のノードは、複数の他ノードからユーザデータ及び第1の冗長コードを受信し、受信したユーザデータ及び第1の冗長コードに基づいて第2の冗長コードを生成し、第2の冗長コードをストレージデバイスに格納する分散型ストレージシステムが開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、オブジェクト単位でデータを取り扱うオブジェクトストレージの利用が進んでいる。ファイルストレージやブロックストレージに加えてオブジェクトストレージを有するストレージシステムでは、ストレージに格納されるデータの種類に応じて各ストレージを階層化して管理する階層型ストレージ管理が一般的に行われる。このような階層型ストレージ管理では、外部のオブジェクトストレージに格納されるデータのように、アクセスレイテンシが大きいデータに対して、リードキャッシュやライトバッファ等のバッファ領域を確保する必要がある。バッファ領域の確保には上位階層のストレージ容量の一部が利用されるため、低コストで高性能なストレージサービスを提供するためには、適切なバッファ領域を設定する必要がある。しかしながら、特許文献1に記載の技術では、こうした点への対処が不十分である。
【0005】
そこで、本発明では、階層型ストレージ管理を行うストレージシステムにおいて、適切なバッファ領域を設定することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様によるストレージシステムは、ストレージ管理部を稼働させるプロセッサと、データを格納するストレージ装置とを備え、前記ストレージ装置を少なくとも含む複数種類のストレージによるストレージプールを有するものであって、前記ストレージ管理部は、前記ストレージプールの記憶領域を複数の階層に階層化して、各階層をそれぞれ異なるアクセス性能を有する前記ストレージに割り当て、データのアクセス頻度に基づいて、前記複数の階層の中から前記データを格納する階層を決定し、前記複数の階層のうち少なくとも一つの階層であるバッファ対象階層に格納されているデータを一時的に格納するバッファ領域を前記ストレージプールに設けて、当該バッファ領域を前記バッファ対象階層が割り当てられたストレージよりもアクセス性能が高いストレージに割り当て、前記バッファ対象階層のアクセス頻度に基づいて前記バッファ領域のサイズを決定する。
本発明の第2の態様によるストレージシステムの管理方法は、ストレージプールの記憶領域を複数の階層に階層化して、各階層をそれぞれ異なるアクセス性能を有するストレージに割り当て、データのアクセス頻度に基づいて、前記複数の階層の中から前記データを格納する階層を決定し、前記複数の階層のうち少なくとも一つの階層であるバッファ対象階層に格納されているデータを一時的に格納するバッファ領域を前記ストレージプールに設けて、当該バッファ領域を前記バッファ対象階層に割り当てられたストレージよりも性能が高いストレージに割り当て、前記バッファ対象階層のアクセス頻度に基づいて前記バッファ領域のサイズを決定する。
【発明の効果】
【0007】
本発明によれば、階層型ストレージ管理を行うストレージシステムにおいて、適切なバッファ領域を設定することができる。
【図面の簡単な説明】
【0008】
【
図1】本発明の一実施形態に係るストレージシステムのハードウェア構成図である。
【
図2】本発明の一実施形態に係るストレージシステムを含む計算機システムの構成例を示す図である。
【
図3】本発明の一実施形態に係るストレージシステムを含む計算機システムの構成例を示す図である。
【
図4】本発明の一実施形態に係るストレージシステムにおけるリソースの対応関係を示す図である。
【
図5】ストレージプールの階層構造例を示す図である。
【
図6】ストレージシステムにおけるページ間の対応関係を示す図である。
【
図7】各プールページのアクセス頻度の例を示すグラフである。
【
図8】メモリに記憶されるテーブルとプログラムの例を示す図である。
【
図10】プールページ/ボリュームページ管理テーブルの例を示す図である。
【
図11】ボリュームページ/階層ページ管理テーブルの例を示す図である。
【
図12】階層サイズ・バッファサイズ管理テーブルの例を示す図である。
【
図13】階層ページ/オブジェクト管理テーブルの例を示す図である。
【
図14】バッファページ/オブジェクト管理テーブルの例を示す図である。
【
図15】階層移動対象ページ管理テーブルの例を示す図である。
【
図16】階層サイズ決定処理のフローチャートである。
【
図17】バッファサイズ決定処理のフローチャートである。
【
図18】バッファサイズ決定処理のフローチャートである。
【
図19】ストレージサービス処理のフローチャートである。
【
図20】オブジェクトストレージアクセス処理のフローチャートである。
【
図21】バッファページリクレイム処理のフローチャートである。
【
図23】アクセス頻度監視処理のフローチャートである。
【
図24】サイズ見直し指示処理のフローチャートである。
【発明を実施するための形態】
【0009】
以下、図面を参照して本発明の実施形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。本発明が本実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。特に限定しない限り、各構成要素は複数でも単数でも構わない。
【0010】
以下の説明では、例えば、「xxx表」や「xxxテーブル」の表現にて各種情報を説明することがあるが、各種情報は表やテーブル以外のデータ構造で表現されていてもよい。各種情報がデータ構造に依存しないことを示すために、「xxx表」や「xxxテーブル」を「xxx情報」と呼ぶことがある。
【0011】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号(又は参照符号における共通部分)を使用し、同種の要素を区別して説明する場合は、要素のID(又は要素の参照符号)を使用することがある。
【0012】
また、以下の説明では、「ストレージシステム」、「外部接続機能付きストレージ」は、1以上の計算機を含むシステムである。このため、「ストレージシステム」、「外部接続機能付きストレージ」は、1つの計算機であってもよいし、複数の計算機であってもよいし、計算機の他に計算機以外のデバイスを含んでいてもよい。その1以上の計算機は、典型的には、少なくとも1つの物理計算機を含む。
【0013】
その1以上の計算機は、少なくとも1つの仮想計算機を含んでもよい。この場合、仮想計算機が内包するリソース(後述するストレージ装置やドライブなど)も同様に仮想的なリソースとして構成される。
【0014】
また、以下の説明では、「ストレージ利用計算機」や「管理用端末」は、一以上の計算機で構成されてよい。
【0015】
以下の説明では、「プログラム」あるいはそのプロセスを主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えば、CPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶資源(例えば、メモリ)及び/又は通信インタフェース装置(例えば、通信ポート)を用いながら行うため、処理の主語がプロセッサであってもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
【0016】
また、以下の説明では、「ストレージシステム」、「外部接続機能付きストレージ」は、物理的な記憶デバイスを有する計算機を意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)を有する計算機でよい。補助記憶デバイスは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。これらに異なる種類の記憶デバイスが混在していてもよい。
【0017】
以下、本発明の一実施形態について説明する。
【0018】
図1は、本発明の一実施形態に係るストレージシステムのハードウェア構成図である。本実施形態のストレージシステム10は、例えば、PCやサーバ等の計算機によって構成され、CPU(Central Processing Unit)11、メモリ12、HBA(Host Bus Adapter)13、NIC(Network Interface Card)14、USB(Universal Serial Bus)15、VGA(Video Graphic Array)16、およびストレージ装置17を含む。これらの構成要素は、内部バスや外部バスにより互いに接続されている。
【0019】
CPU11は、メモリ12に記憶された様々なプログラムを実行することにより、ストレージ装置17の管理および制御を行う。メモリ12には各種テーブルが記憶されており、プログラムの実行時には、必要に応じてテーブルに格納されたデータが参照および更新される。なお、メモリ12に記憶されているテーブルおよびプログラムの詳細については後述する。
【0020】
HBA13、NIC14、USB15およびVGA16は、それぞれ所定の外部装置との間で入出力されるデータのインタフェース処理を行う。なお、これ以外のものを用いて外部装置とのインタフェース処理を行ってもよい。
【0021】
ストレージ装置17は、様々なデータを格納することが可能な不揮発性の記録媒体であり、CPU11の制御に応じてデータの読み書きが行われる。ストレージ装置17は、例えばNVMe(Non-Volatile Memory express)ドライブ、SAS(Serial Attached SCSI)ドライブ、SATA(Serial ATA)ドライブ等を組み合わせて構成される。
【0022】
図2および
図3は、本発明の一実施形態に係るストレージシステムを含む計算機システムの構成例を示す図である。
図2の計算機システムは、ストレージシステム10がオンプレミス環境で利用される場合の構成例であり、サイト210とサイト220がインターネット230を介して接続されている。
【0023】
図2の計算機システムにおけるサイト210では、ストレージ利用計算機211、管理用端末212、外部接続機能付きストレージ(以下、単に「ストレージ」と称する)213およびストレージシステム10が、スイッチ214を介して互いに接続されている。これらはゲートウェイ215を介してインターネット230と接続される。ストレージ利用計算機211は、ストレージシステム10やストレージ213により提供されるストレージサービスを利用する計算機であり、例えばPCや各種IoT(Internet of Things)機器等で構成される。なお、
図2ではサイト210に2台のストレージ利用計算機211が存在しているが、ストレージ利用計算機211の台数はこれに限らない。管理用端末212は、ストレージシステム10の管理者によって操作される端末である。管理者は管理用端末212を用いて、ストレージシステム10の管理を行うことができる。
【0024】
サイト220には、オブジェクトストレージサービス221が含まれる。オブジェクトストレージサービス221は、ストレージ利用計算機211、ストレージシステム10、ストレージ213に対してクラウド環境で提供されるオブジェクトストレージであり、ゲートウェイ222を介してインターネット230と接続される。オブジェクトストレージサービス221は、インターネット230を介してサイト210と接続されるため、サイト210側のストレージに比べてアクセス性能が低くなる。
【0025】
図2の計算機システムにおいて、ストレージシステム10は、自身が有するストレージ装置17(
図1参照)や、ストレージ213、オブジェクトストレージサービス221の制御を行い、ストレージ利用計算機211からの要求に応じて、これらの記憶容量を用いたストレージサービスをストレージ利用計算機211へ提供する。
【0026】
図3の計算機システムは、ストレージシステム10がクラウド環境上でインスタンスとして利用される場合の構成例であり、
図2の計算機システムと同様に、サイト210とサイト220がインターネット230を介して接続されている。
【0027】
図3の計算機システムにおけるサイト210では、ストレージ利用計算機211とストレージ213がスイッチ214を介して互いに接続されており、これらはゲートウェイ215を介してインターネット230と接続される。
【0028】
サイト220には、オブジェクトストレージサービス221とインスタンス223が含まれる。インスタンス223は、仮想計算機やコンテナを用いてそれぞれ実現される仮想的なシステムとして、ストレージ利用計算機211、管理用端末212およびストレージシステム10を有する。これらはインスタンス223内で仮想的なスイッチ224を介して互いに接続されている。オブジェクトストレージサービス221とインスタンス223は、ゲートウェイ222を介してインターネット230と接続される。
【0029】
なお、
図3ではサイト210とサイト220にそれぞれストレージ利用計算機211が1台ずつ存在しているが、各サイトでのストレージ利用計算機211の台数はこれに限らない。また、サイト210とサイト220の一方にのみストレージ利用計算機211が存在してもよい。
【0030】
図2の計算機システムと同様に、
図3の計算機システムにおいても、ストレージシステム10は、自身が有するストレージ装置17(
図1参照)や、ストレージ213、オブジェクトストレージサービス221の制御を行い、ストレージ利用計算機211からの要求に応じて、これらの記憶容量を用いたストレージサービスをストレージ利用計算機211へ提供する。
【0031】
なお、
図2および
図3の計算機システムにおいて、ストレージ利用計算機211がストレージシステム10を介さずにストレージ213に直接アクセスし、ストレージ213の記憶容量を利用できるようにしてもよい。また、サイト210にはストレージ213を設けなくてもよい。
【0032】
図4は、本発明の一実施形態に係るストレージシステムにおけるリソースの対応関係を示す図である。本実施形態のストレージシステム10は、例えば
図4に示すように、複数のドライブ101(
図1のストレージ装置17)を組み合わせて実現されるストレージプール102を有する。このストレージプール102がストレージ利用計算機211から直接、またはストレージ213を介してアクセスされることで、ストレージシステム10はストレージ利用計算機211に対して仮想ボリューム103を提供することができる。
【0033】
ストレージ213も同様に、複数のドライブ301aを組み合わせて実現されるストレージプール302を有しており、ストレージ利用計算機211に対して仮想ボリューム303を提供する。なお、ドライブ301aとともに、ストレージシステム10が提供する仮想ボリューム103を外部ドライブ301bとして用いることで、ストレージプール302を構成してもよい。
【0034】
なお、
図4に示したストレージプール102は、
図2、
図3に示したオブジェクトストレージサービス221を含んでいないが、オブジェクトストレージサービス221が提供する記憶容量をストレージプール102の一部として利用してもよい。
【0035】
次に、ストレージシステム10におけるストレージプール102の論理構造について説明する。本実施形態のストレージシステム10は、ストレージプール102を階層化して管理する階層型ストレージ管理を採用している。
【0036】
図5は、ストレージプール102の階層構造例を示す図である。
図5(a)は、ストレージプール102にバッファ専用領域を設けた場合の階層構造例を示している。この場合、例えばストレージプール102は、第1階層111、第2階層112、第3階層用バッファ113および第3階層114を含んで構成される。
【0037】
第1階層111は、高速アクセスが必要なデータを格納するためのストレージ階層であり、この階層に格納されるデータは高速ドライブ101aに物理的に格納される。第2階層112は、第1階層111に比べて低速なアクセスが許容されるデータを格納するためのストレージ階層であり、この階層に格納されるデータは低速ドライブ101bに物理的に格納される。第3階層114は、第1階層111や第2階層112と比べてアクセス頻度が低いデータが格納され、この階層に格納されるデータはオブジェクトストレージサービス221によって提供されるストレージに物理的に格納される。このように、第1階層111、第2階層112、第3階層114の各階層は、CPU11の制御により、それぞれ異なるアクセス性能を有するストレージに割り当てられる。第3階層用バッファ113は、第3階層114に格納されるデータを読み書きする際のリードキャッシュやライトバッファに利用されるバッファ領域であり、第2階層112と同じく低速ドライブ101bが割り当てられているが、高速ドライブ101aやメモリなどストレージシステム10内の他の記憶装置を割り当ててもよい。第3階層114にライトされるデータは、一時的に第3階層用バッファ113に格納され、その後に第3階層114に格納されたり(ライトバッファ)、第3階層114からリードされるデータが一時的に第3階層用バッファ113に格納されるとともに、リード対象データが第3階層用バッファ113に存在するときにリード要求を受けた場合に、第3階層114ではなく第3階層用バッファ113から読み出しを行う(リードキャッシュ)。このようにして、CPU11は、第3階層用バッファ113を、バッファ対象である第3階層114が割り当てられたオブジェクトストレージサービス221よりもアクセス性能が高いストレージ(低速ドライブ101b、高速ドライブ101a等)に割り当てるように、ストレージシステム10の制御を行う。
【0038】
図5(b)は、ストレージプール102においてストレージ階層とバッファ領域を兼用した場合の階層構造例を示している。この場合、例えばストレージプール102は、第2階層112の一部を第3階層用バッファ113として利用している。第1階層111および第3階層114については、
図5(a)とそれぞれ同様である。
【0039】
本実施形態のストレージシステム10では、
図5(a)または
図5(b)いずれかの階層構造を用いて、管理を行うことができる。なお、
図5(a)、
図5(b)では、ストレージプール102が第1階層111から第3階層114までの三段階の階層構造を有する例を説明したが、ストレージプール102において設定される階層数はこれに限定されない。
【0040】
図6は、ストレージシステム10におけるページ間の対応関係を示す図である。
図4および
図5で説明したように、ストレージシステム10では、複数のドライブ101(高速ドライブ101a、低速ドライブ101b)とオブジェクトストレージサービス221により、階層構造を有するストレージプール102を構成し、このストレージプール102を仮想ボリューム103としてストレージ利用計算機211に提供する。したがって、仮想ボリューム103の各ページは、ストレージプール102のいずれかの階層におけるページと、複数のドライブ101のいずれかまたはオブジェクトストレージサービス221のオブジェクトにおけるページと、にそれぞれ対応付けされる。
【0041】
具体的には、例えば
図6に示すように、仮想ボリューム103におけるページ121は、ストレージプール102の第1階層111におけるページ122と、複数の高速ドライブ101aのうちいずれかにおけるページ123と、にそれぞれ対応する。また、仮想ボリューム103におけるページ131は、ストレージプール102の第3階層用バッファ113におけるページ132と、複数の低速ドライブ101bのうちいずれかにおけるページ133と、にそれぞれ対応する。同様に、仮想ボリューム103におけるページ141は、ストレージプール102の第3階層114におけるページ142と、オブジェクトストレージサービス221のオブジェクトにおけるページ143と、にそれぞれ対応する。
【0042】
本実施形態のストレージシステム10では、メモリ12に記憶される所定の管理テーブルを用いて、上記のようなページ間の対応関係の管理を行う。なお、この管理テーブルの詳細については後述する。
【0043】
次に、本実施形態のストレージシステム10におけるストレージプール102の各階層のサイズ決定方法について説明する。本実施形態のストレージシステム10では、ストレージプール102における各ページ(以下、「プールページ」と称する)のアクセス頻度に基づき、ストレージプール102内に設定する各階層のサイズ(ページ数)を決定する。例えば、各階層に対して予め定めたアクセス頻度の範囲内にある全てのプールページが含まれるように、各階層のサイズを決定することができる。
【0044】
図7は、ストレージプール102における各プールページのアクセス頻度の例を示すグラフである。
図7において、グラフ601は各プールページのアクセス頻度を度数分布で示した例であり、横軸はページ番号、縦軸はアクセス頻度(IOPH)を表している。また、グラフ602は各プールページのアクセス頻度を累積度数分布で示した例であり、横軸はページ番号、縦軸はストレージプール102全体に対するアクセス頻度の累積度数を表している。なお、グラフ601,602における横軸のページ番号は、各プールページをアクセス頻度が高いものから順に並べてソートしたときの一連の番号を表しており、最小値は1、最大値はNである。すなわち、ストレージプール102の全ページ数はNであり、各プールページにはアクセス頻度の順に1からNまでのページ番号が設定されるものとする。
【0045】
本実施形態のストレージシステム10は、グラフ601に基づき、例えば次のような方法で、ストレージプール102における第1階層111、第2階層112、第3階層114のサイズをそれぞれ設定することができる。
【0046】
まず、所定のアクセス頻度x1以上のプールページが第1階層111に含まれるように、グラフ601においてアクセス頻度の値がx1であるプールページ(ページ番号n1)を選択する。そして、ページ番号1~n1の各プールページの合計サイズ(合計ページ数)を求めることにより、第1階層111のサイズを決定する。次に、所定のアクセス頻度x2以上かつx1未満(x1>x2)のプールページが第2階層112に含まれるように、グラフ601においてアクセス頻度の値がx2であるプールページ(ページ番号n2)を選択する。そして、ページ番号n1+1~n2の各プールページの合計サイズ(合計ページ数)を求めることにより、第2階層112のサイズを決定する。最後に、残りの全プールページが第3階層114に含まれるように、第3階層114のサイズを決定する。
【0047】
また、本実施形態のストレージシステム10は、グラフ602に基づき、例えば次のような方法で、ストレージプール102における第1階層111、第2階層112、第3階層114のサイズをそれぞれ設定することができる。
【0048】
まず、アクセス頻度が高いものから順に所定の累積度数y1となるまでのプールページが第1階層111に含まれるように、グラフ602においてプールページ(ページ番号n1)を選択する。累積度数y1は、基本的に管理者が自由に設定可能な値である。ただしリソースに物理的な制約がある場合、累積度数y1は、第1階層に対応するストレージ装置である高速ドライブ101が対応可能なアクセス量や容量を上限として定まる値である。パブリッククラウドのように実質的にリソースに物理的な制約がない場合はこの限りではない。そして、ページ番号1~n1の各プールページの合計サイズ(合計ページ数)を求めることにより、第1階層111のサイズを決定する。次に、所定の累積度数y2(y2>y1)までのプールページが第2階層112に含まれるように、グラフ602において累積度数の値がy2となるプールページ(ページ番号n2)を選択する。そして、ページ番号n1+1~n2の各プールページの合計サイズ(合計ページ数)を求めることにより、第2階層112のサイズを決定する。最後に、残りの全プールページが第3階層114に含まれるように、第3階層114のサイズを決定する。
【0049】
本実施形態のストレージシステム10では、以上説明したような方法により、第1階層111、第2階層112、第3階層114のサイズをそれぞれ設定することができる。このとき、グラフ601で説明した方法と、グラフ602で説明した方法とのうち、いずれの方法を用いてもよい。なお、本説明では全ての階層のサイズは可変である場合での方法を述べたが、一部の階層もしくは全ての階層のサイズは固定であってもよい。また、いずれの方法を用いた場合であっても、第3階層用バッファ113のバッファサイズkは、第3階層114のサイズよりも小さくなる。このバッファサイズkの決定方法については後述する。
【0050】
次に、本実施形態のストレージシステム10におけるテーブルとプログラムについて以下に説明する。本実施形態のストレージシステム10では、前述のようにメモリ12において様々なテーブルとプログラムが記憶されており、これらを用いてストレージシステム10の制御を行う。これにより、ストレージシステム10が提供するストレージプール102を
図5のように階層化して管理する階層型ストレージ管理を実現している。
【0051】
図8は、メモリ12に記憶されるテーブルとプログラムの例を示す図である。
図8に示すように、メモリ12には、性能情報テーブル1200、プールページ/ボリュームページ管理テーブル1300、ボリュームページ/階層ページ管理テーブル1400、階層サイズ・バッファサイズ管理テーブル1500、階層ページ/オブジェクト管理テーブル1600、バッファページ/オブジェクト管理テーブル1700、階層移動対象ページ管理テーブル1800の各テーブルと、アクセス頻度監視プログラム2100、サイズ見直し指示プログラム2200、階層サイズ決定プログラム2300、バッファサイズ決定プログラム2400、サイズ変更プログラム2500、階層制御プログラム2600、プール管理プログラム2700、ストレージサービスプログラム2800、オブジェクトストレージアクセスプログラム2900、バッファページリクレイムプログラム3000の各プログラムと、が記憶される。
【0052】
性能情報テーブル1200は、ストレージプール102の各ページ(プールページ)の性能情報を表すテーブルである。プールページ/ボリュームページ管理テーブル1300は、各プールページが、どのボリュームのどのページ(ボリュームページ)に対応しているかの関係を表すテーブルである。ボリュームページ/階層ページ管理テーブル1400は、各ボリュームページが、ストレージプール102においてどの階層のどのページ(階層ページ)に対応しているかの関係を表すテーブルである。階層サイズ・バッファサイズ管理テーブル1500は、ストレージプール102において設定される第1階層111、第2階層112、第3階層114の各階層およびオブジェクトストレージサービス221向けの第3階層用バッファ113のサイズと、これらが格納されるデバイスの種類とを表すテーブルである。階層ページ/オブジェクト管理テーブル1600は、オブジェクトストレージサービス221に対応する第3階層114の各階層ページの番号と、そのページに対応するオブジェクトストレージサービス221の各オブジェクトに設定されるオブジェクトIDとの対応関係を表すテーブルである。バッファページ/オブジェクト管理テーブル1700は、オブジェクトストレージサービス221向けの第3階層用バッファ113の各ページ(バッファページ)の番号と、オブジェクトストレージサービス221の各オブジェクトページのオブジェクトIDとの対応関係を表すテーブルである。階層移動対象ページ管理テーブル1800は、階層移動の対象とされた各プールページの現在の階層番号と移動先の階層番号を表すテーブルである。
【0053】
図9は、性能情報テーブル1200の例を示す図である。性能情報テーブル1200は、ストレージプール102の各プールページに対応してレコードが設定される。各レコードは、ページ番号1201、IOPH1202、転送レート1203、アクセス時間1204の情報を有する。
【0054】
ページ番号1201は、各プールページに固有の番号であり、各プールページを一意に識別するために用いられる。IOPH1202は、直近値1221およびカウンタ1222を含んで構成される。直近値1221は、直近の一定期間(例えば1時間)における各ページのアクセス回数(アクセス頻度)を表し、カウンタ1222は、現在集計中の各ページのアクセス回数を表している。転送レート1203は、直近値1231およびカウンタ1232を含んで構成される。直近値1231は、直近の一定期間(例えば1時間)における各ページの転送データ量(転送レート)を表し、カウンタ1222は、現在集計中の各ページの転送データ量を表している。アクセス時間1204は、各ページが最後にアクセスされた日時を表している。
【0055】
CPU11は、ストレージプール102へのアクセスが行われると、性能情報テーブル1200のうち該当するプールページのレコードにおいて、カウンタ1222,1232の値をそれぞれ更新する。また、一定期間が経過すると、それまでに集計されたカウンタ1222,1232の値を直近値1221,1231へそれぞれコピーするとともに、カウンタ1222,1232の値を0にリセットした後、これらの集計を再開する。これにより、ストレージプール102の性能をプールページごとに求めることができる。
【0056】
図10は、プールページ/ボリュームページ管理テーブル1300の例を示す図である。プールページ/ボリュームページ管理テーブル1300は、ストレージプール102の各プールページに対応してレコードが設定される。各レコードは、プールページ番号1301、ボリューム番号1302、ボリュームページ番号1303の情報を有する。
【0057】
プールページ番号1301は、各プールページに固有の番号であり、
図9に示した性能情報テーブル1200のページ番号1201と対応している。ボリューム番号1302は、プール上に作成される仮想ボリューム103の番号を表している。ボリュームページ番号1303は、各ボリュームにおけるボリュームページの番号を表している。本図面では分かり易さのために、ボリューム番号とページ番号の組み合わせで表現しているが、各ボリューム毎にシーケンシャルな番号であればよい。
【0058】
CPU11は、ストレージ利用計算機211からストレージプール102へのアクセス要求が行われると、プールページ/ボリュームページ管理テーブル1300を参照することで、ストレージ装置17またはオブジェクトストレージサービス221のうち対応するボリュームページにアクセスすることができる。
【0059】
図11は、ボリュームページ/階層ページ管理テーブル1400の例を示す図である。ボリュームページ/階層ページ管理テーブル1400は、ストレージ装置17およびオブジェクトストレージサービス221の各ボリュームページに対応してレコードが設定される。各レコードは、ボリューム番号1401、ボリュームページ番号1402、階層番号1403、階層ページ番号1404の情報を有する。
【0060】
ボリューム番号1401は、プール上に作成される仮想ボリューム103の番号を表しており、
図10に示したプールページ/ボリュームページ管理テーブル1300のボリューム番号1302と対応している。ボリュームページ番号1402は、ボリューム毎に固有の番号であり、
図10に示したプールページ/ボリュームページ管理テーブル1300のボリュームページ番号1303と対応している。階層番号1403は、各ボリュームページが属するボリュームに対応するストレージプール102の階層の番号を表している。階層ページ番号1404は、各ボリュームページが対応する階層ページの番号を表しており、各階層毎に固有の番号である。
【0061】
CPU11は、ボリュームページ/階層ページ管理テーブル1400を参照することで、ボリュームページと階層ページの対応関係を取得することができる。
【0062】
図12は、階層サイズ・バッファサイズ管理テーブル1500の例を示す図である。階層サイズ・バッファサイズ管理テーブル1500は、ストレージプール102に設定される各階層およびバッファに対応してレコードが設定される。各レコードは、階層・バッファ番号1501、サイズ1502、格納デバイス1503の情報を有する。
【0063】
階層・バッファ番号1501は、各階層またはバッファの番号を表しており、例えば前述の第1階層111、第2階層112、第3階層114をそれぞれ表す「T1」,「T2」,「T3」の階層番号や、第3階層用バッファ113を表す「B3」のバッファ番号などで表現される。サイズ1502は、各階層またはバッファのデータサイズを表している。格納デバイス1503は、各階層またはバッファが格納されるストレージの種類を表しており、ストレージシステム10のドライブ101の種類やオブジェクトストレージサービス221を表す文字等で表現される。
【0064】
CPU11は、階層サイズ・バッファサイズ管理テーブル1500を参照することで、ストレージプール102における各階層およびバッファの設定情報を取得することができる。
【0065】
図13は、階層ページ/オブジェクト管理テーブル1600の例を示す図である。階層ページ/オブジェクト管理テーブル1600は、ストレージプール102の各階層ページに対応してレコードが設定される。各レコードは、階層ページ番号1601、オブジェクトID1602の情報を有する。
【0066】
階層ページ番号1601は、階層番号とページ番号の組み合わせで表現された各階層ページの番号を表しており、
図11に示したボリュームページ/階層ページ管理テーブル1400の階層ページ番号1404と対応している。オブジェクトID1602は、各階層ページが対応するオブジェクトのIDを表している。
【0067】
CPU11は、階層ページ/オブジェクト管理テーブル1600を参照することで、階層ページとオブジェクトの対応関係を取得することができる。
【0068】
図14は、バッファページ/オブジェクト管理テーブル1700の例を示す図である。バッファページ/オブジェクト管理テーブル1700は、ストレージプール102の各バッファページに対応してレコードが設定される。各レコードは、バッファページ番号1701、オブジェクトID1702の情報を有する。
【0069】
バッファページ番号1701は、各バッファページの番号を表しており、バッファで固有の番号である。オブジェクトID1702は、各バッファページが対応するオブジェクトページのIDを表している。
【0070】
CPU11は、バッファページ/オブジェクト管理テーブル1700を参照することで、バッファページとオブジェクトの対応関係を取得することができる。
【0071】
図15は、階層移動対象ページ管理テーブル1800の例を示す図である。階層移動対象ページ管理テーブル1800は、ストレージプール102において階層移動の対象に指定された各プールページに対応してレコードが設定される。各レコードは、プールページ番号1801、現在の階層番号1802、移動先階層番号1803の情報を有する。
【0072】
プールページ番号1801は、階層移動の対象に指定されたプールページを特定するための番号であり、
図10に示したプールページ/ボリュームページ管理テーブル1300のプールページ番号1301と対応している。現在の階層番号1802および移動先階層番号1803は、各プールページの現在の階層と移動先の階層をそれぞれ表す番号であり、
図11に示したボリュームページ/階層ページ管理テーブル1400の階層番号1403と対応している。
【0073】
CPU11は、ストレージプール102においていずれかのプールページが階層移動の対象に指定されると、そのプールページのレコードを階層移動対象ページ管理テーブル1800に登録し、プールページ番号1801、現在の階層番号1802、移動先階層番号1803の各情報を設定する。これらの情報を参照することで、当該プールページを元の階層から別の階層へと移動させることができる。
【0074】
アクセス頻度監視プログラム2100は、ストレージプール102の各プールページのアクセス頻度を監視して性能情報テーブル1200を更新するためのプログラムである。サイズ見直し指示プログラム2200は、ストレージプール102に設定された各階層およびバッファのサイズを定期的に見直すためのプログラムである。階層サイズ決定プログラム2300は、ストレージプール102を階層化する際の各階層のサイズを決定するためのプログラムである。バッファサイズ決定プログラム2400は、ストレージプール102を階層化する際のバッファサイズを決定するためのプログラムである。サイズ変更プログラム2500は、サイズ見直し指示プログラム2200で見直された各階層およびバッファのサイズを反映するためのプログラムである。階層制御プログラム2600は、ストレージプール102において階層移動の対象とするプールページを決定し、当該プールページの階層を移動するためのプログラムである。プール管理プログラム2700は、ストレージシステム10におけるボリュームの追加・削除や、これに伴う各テーブルの更新などを行うことで、ストレージプール102の管理を行うためのプログラムである。ストレージサービスプログラム2800は、ストレージ利用計算機211からのアクセス要求に応じてストレージ装置17またはオブジェクトストレージサービス221へのアクセスを行い、性能情報テーブル1200を更新するためのプログラムである。オブジェクトストレージアクセスプログラム2900は、ストレージ利用計算機211からストレージシステム10が管理するオブジェクトストレージサービス221へのアクセス要求があった場合に、そのアクセス要求に応じてオブジェクトストレージサービス221の読み書きを行うためのプログラムである。バッファページリクレイムプログラム3000は、一定期間アクセスがないバッファページを第3階層用バッファ113から追い出して開放するためのプログラムである。CPU11は、これらのプログラムを実行することにより、ストレージプール102を階層化して管理するストレージ管理部として機能することができる。
【0075】
図16は、CPU11が階層サイズ決定プログラム2300を実行することで行われる階層サイズ決定処理2301のフローチャートである。
【0076】
ステップ2302では、各プールページのアクセス頻度の情報を性能情報テーブル1200より取得する。ここでは、性能情報テーブル1200において各レコードに設定されているIOPH1202の値(直近値1221の値)を取得することで、各プールページのアクセス頻度を取得することができる。
【0077】
ステップ2303では、ステップ2302で取得した各プールページのアクセス頻度を降順で、すなわちアクセス頻度が高いものから順に並べてソートする。これにより、
図7のグラフ601に例示したような各プールページのアクセス頻度の度数分布が得られる。
【0078】
ステップ2304では、ステップ2303でソートした各プールページのアクセス頻度の累積度数分布を計算する。これにより、
図7のグラフ602に例示したような各プールページのアクセス頻度の累積度数分布が得られる。
【0079】
ステップ2305では、ストレージプール102においてサイズ変更が可能な階層ごとに、ステップ2306、2307の処理を繰り返すループ処理を実施する。以下では、今回のループ処理の実施対象階層をi番目の階層として、ステップ2306、2307の処理を説明する。すなわち、
図5に例示した第1階層111、第2階層112、第3階層114に対してループ処理を実施する場合、i=1~3の各階層に対して、ステップ2306、2307の処理をそれぞれ行う。
【0080】
ステップ2306では、ステップ2303で得られた度数分布においてi番目の階層に対するターゲットのアクセス頻度値xi、または、ステップ2304で得られた累積度数分布においてi番目の階層に対するターゲットの累積度数値yiを取得し、これらの値に対応するソート後のページ番号ni,ni-1を抽出する。これにより、ページ番号ni-1+1~niの各プールページが、i番目の階層に格納するページとして決定される。このとき、アクセス頻度が高いページほど上位の階層に格納されるように、各階層に格納するページが決定される。なお、i=1の場合はni-1=n0=0であり、iがストレージプール102において最下位の階層番号(例えばi=3)である場合はni=Nである。
【0081】
ステップ2307では、ステップ2306で抽出したページ番号ni,ni-1とストレージプール102の各プールページのサイズから、i番目の階層のサイズを決定する。ここでは前述のように、i番目の階層への格納を決定したページ番号ni-1+1~niの各プールページの合計サイズ(合計ページ数)を求めることにより、i番目の階層のサイズを決定する。
【0082】
全ての階層に対してステップ2306、2307の処理を行ったら、ステップ2305のループ処理を抜け、
図16のフローチャートに示す階層サイズ決定処理2301を終了する。
【0083】
CPU11は、階層サイズ決定プログラム2300を実行して上記の階層サイズ決定処理2301を行うことにより、ストレージプール102のアクセス頻度をページ単位で集計して得られた度数分布または累積度数分布に基づいて、ストレージプール102に設定される複数の階層の各々のサイズを決定することができる。
【0084】
なお、上記の階層サイズ決定処理2301では、アクセス種別(リードまたはライト)ごとにアクセス頻度を評価し、各階層のサイズを決定してもよい。
【0085】
図17は、CPU11がバッファサイズ決定プログラム2400を実行することで行われるバッファサイズ決定処理2401のフローチャートである。
【0086】
ステップ2402では、各プールページのアクセス頻度の情報を性能情報テーブル1200より取得する。ここでは、性能情報テーブル1200において各レコードに設定されているIOPH1202の値(直近値1221の値)を取得することで、各プールページのアクセス頻度を取得することができる。
【0087】
ステップ2403では、ステップ2402で取得した各プールページのアクセス頻度に基づいて、バッファ対象の階層、すなわちオブジェクトストレージサービス221に対応する階層(以下、「オブジェクトストレージ階層」と称する)のサイズを計算する。ここでは、例えば
図16の階層サイズ決定処理2301により決定済みの上位階層のサイズから、オブジェクトストレージ階層のサイズを計算することができる。具体的には、例えば
図5の例では、上位階層である第1階層111および第2階層112のサイズから、オブジェクトストレージ階層である第3階層114のサイズが計算される。なお、階層サイズ決定処理2301で決定されたオブジェクトストレージ階層のサイズを用いることで、ステップ2403の処理を省略してもよい。
【0088】
ステップ2404では、ステップ2402で取得した各プールページのアクセス頻度を合計することで、ストレージプール102内の全階層に対するアクセス頻度値の合計aを計算する。
【0089】
ステップ2405では、ステップ2402で取得した各プールページのアクセス頻度のうち、オブジェクトストレージ階層(第3階層114)に割り当てられる各プールページのアクセス頻度を合計することで、オブジェクトストレージ階層に対するアクセス頻度bを計算する。そして、計算したオブジェクトストレージ階層のアクセス頻度bをステップ2404で求められた全階層のアクセス頻度値の合計aで割ることにより、ストレージプール102全体に対するオブジェクトストレージ階層のアクセス頻度の割合b/aを計算する。
【0090】
ステップ2406では、予め設定されたオブジェクトストレージサービス221の期待アクセス確率cと、ステップ2405で求められたアクセス頻度割合b/aとに基づき、オブジェクトストレージ階層に対するバッファ領域のサイズを決定する。ここでは、例えばステップ2403で求められたオブジェクトストレージ階層のサイズをsとすると、以下の式(1)により、バッファ領域(第3階層用バッファ113)のサイズを表すバッファサイズkを計算する。なお、期待アクセス確率cとは、ストレージ利用計算機211からオブジェクトストレージ階層へのアクセス要求が行われる確率の想定値であり、事前のシミュレーション結果や類似システムの過去の統計値等から定めることができる。
k=s×c×b/a ・・・(1)
【0091】
ステップ2406でバッファサイズkを決定したら、
図17のフローチャートに示すバッファサイズ決定処理2401を終了する。
【0092】
CPU11は、バッファサイズ決定プログラム2400を実行して上記のバッファサイズ決定処理2401を行うことにより、バッファ対象階層であるオブジェクトストレージ階層の各ページのアクセス頻度の合計bと、オブジェクトストレージ階層に対応するオブジェクトストレージサービス221の期待アクセス確率cとに基づいて、バッファ領域である第3階層用バッファ113のサイズkを決定することができる。
【0093】
あるいは、上記のバッファサイズ決定処理2401とは異なるバッファサイズ決定処理2411により、バッファ領域のサイズを決定してもよい。
図18は、CPU11がバッファサイズ決定プログラム2400を実行することで行われるバッファサイズ決定処理2411のフローチャートである。
【0094】
ステップ2412では、
図17のステップ2402と同様に、各プールページのアクセス頻度の情報を性能情報テーブル1200より取得する。
【0095】
ステップ2413では、ストレージプール102のコスト関数を選択する。ここで選択されるコスト関数とは、ストレージプール102を階層化したときの階層全体でのアクセスコストを表す関数であり、例えば以下の式(2)で表される。
【0096】
【0097】
式(2)において、C
i(k,n
i)はi番目の階層に対するコスト関数を表している。なお、T番目の階層はオブジェクトストレージサービス221によって提供されるストレージ階層であり、
図5の例では第3階層114がこれに相当する(T=3)。すなわち、式(2)で計算されるコスト関数は、全ての階層のコスト関数を合計したものである。
【0098】
ここで、オブジェクトストレージサービス221によって提供されるT番目の階層のコスト関数は、以下の式(3)で表される。
CT(k,nT)=B(k,nT)+O(k,nT) ・・・(3)
【0099】
式(3)において、B(k,nT)はオブジェクトストレージサービス221に対するバッファ領域、すなわち第3階層用バッファ113のコスト関数を表す。また、O(k,nT)はバッファ領域(第3階層用バッファ113)の外にある各ページのコスト関数であり、以下の式(4)により求められる。
O(k,nT)=U×P(k,nT)×Q(k,nT) ・・・(4)
【0100】
式(4)において、Uはオブジェクトストレージサービス221へのアクセスに対するペナルティ値を表す。また、P(k,nT)はオブジェクトストレージ階層へのアクセス確率を表し、Q(k,nT)はオブジェクトストレージ階層へのアクセス時にバッファ領域のページが書き換えられる確率を表す。これらは以下の式(5)、(6)によりそれぞれ計算される。
【0101】
【0102】
式(5)、(6)において、xijは第i階層の第jページのアクセス頻度を表している。なお、i=Tの場合、xTjは第T階層、すなわちオブジェクトストレージ階層の第jページのアクセス頻度を表している。また、nTは第T階層、すなわちオブジェクトストレージ階層の合計ページ数を表し、kはバッファサイズ、すなわちバッファ領域の合計ページ数を表している。すなわち、前述の式(2)で表されるストレージプール102のコスト関数Call(k)は、ストレージプール102の各階層のアクセス頻度に基づいて計算される。
【0103】
ステップ2414では、ステップ2413で選択したストレージプール102のコスト関数を最小化するバッファサイズ値を求める。ここでは、前述の式(2)で表されるコスト関数の値が最小となるkの値を求めることにより、バッファサイズの値を決定する。
【0104】
ステップ2415では、ステップ2414で求めたkの値、すなわちストレージプール102のコスト関数を最小化するバッファサイズを、オブジェクトストレージ階層に対するバッファ領域のサイズとして決定する。
【0105】
ステップ2415でバッファサイズ領域のサイズkを決定したら、
図18のフローチャートに示すバッファサイズ決定処理2411を終了する。
【0106】
CPU11は、バッファサイズ決定プログラム2400を実行して上記のバッファサイズ決定処理2411を行うことにより、ストレージプール102の各階層のアクセス頻度に基づくアクセスコストを表すコスト関数Call(k)と、バッファ領域である第3階層用バッファ113のサイズを変更した場合のコスト関数Call(k)の変化と、に基づいて、第3階層用バッファ113のサイズkを決定することができる。
【0107】
なお、上記のバッファサイズ決定処理2401,2411では、アクセス種別(リードまたはライト)ごとにアクセス頻度を評価し、バッファ領域のサイズを決定してもよい。
【0108】
図19は、CPU11がストレージサービスプログラム2800を実行することで行われるストレージサービス処理2801のフローチャートである。
【0109】
ステップ2802では、仮想ボリューム103に対するアクセス要求としてのIOリクエストを、ストレージ利用計算機211より受信したか否かを判定する。IOリクエストを受信するまではステップ2802において待機し、IOリクエストを受信したらステップ2803へ進む。
【0110】
ステップ2803では、ボリュームページ/階層ページ管理テーブル1400を参照し、ステップ2802で受信したIOリクエストが、オブジェクトストレージ階層のページに対するものであるか否かを判定する。その結果、オブジェクトストレージ階層のページに対するIOリクエストである場合はステップ2901へ進み、他の階層のページに対するIOリクエストである場合はステップ2804へ進む。
【0111】
ステップ2901では、オブジェクトストレージ階層のページに対するアクセス処理として、オブジェクトストレージアクセス処理を実行する。なお、オブジェクトストレージアクセス処理の詳細については、
図20を参照して後述する。
【0112】
ステップ2804では、オブジェクトストレージ階層以外の階層のページに対するアクセス処理として、ドライブアクセス処理を実行する。ここでは、ストレージ装置17の複数のドライブ101が有するボリュームページの中から、受信したIOリクエストに対応するボリュームページを指定し、当該ボリュームページに対してデータを読み書きすることにより、ドライブアクセス処理を実行する。
【0113】
ステップ2901またはステップ2804の処理を実行した後、ステップ2805では、これらの処理結果を反映して性能情報テーブル1200を更新する。ここでは、例えば
図9の性能情報テーブル1200において、該当ページの該当アクセス種別(リードまたはライト)のカウンタ1222,1232の値を更新するとともに、アクセス時間1204を更新する。
【0114】
ステップ2805で性能情報テーブル1200を更新したら、ステップ2802へ戻り、次のIOリクエストを受信するまで待機する。
【0115】
CPU11は、ストレージサービスプログラム2800を実行して上記のストレージサービス処理2801を行うことにより、ストレージ利用計算機211からのアクセス要求に応じて、ストレージ装置17またはオブジェクトストレージサービス221のうち該当するページへのアクセスを行うことができる。
【0116】
図20は、CPU11がオブジェクトストレージアクセスプログラム2900を実行することで行われるオブジェクトストレージアクセス処理2901のフローチャートである。このオブジェクトストレージアクセス処理2901は、
図19のストレージサービス処理2801において、ステップ2901で呼び出されて実行される。
【0117】
ステップ2902では、バッファページ/オブジェクト管理テーブル1700を参照し、
図19のステップ2802で受信したIOリクエストに対応するページが、バッファ領域(第3階層用バッファ113)内にバッファページとして存在するか否かを判定する。その結果、該当するページがバッファページとして存在する場合はステップ2903へ進み、存在しない場合はステップ3001へ進む。
【0118】
ステップ2903では、IOリクエストに対応するバッファページに対するアクセス処理を実行する。ステップ2903の処理を実行したら、
図20のフローチャートに示すオブジェクトストレージアクセス処理2901を終了する。
【0119】
ステップ3001では、一定期間アクセスがないバッファページを第3階層用バッファ113から追い出して開放するための処理として、バッファページリクレイム処理を実行する。なお、バッファページリクレイム処理の詳細については、
図21を参照して後述する。
【0120】
ステップ2904では、IOリクエストがリード要求であるかを判定する。その結果、リード要求である場合はステップ2905へ進み、リード要求でない場合、すなわちライト要求である場合はステップ2907へ進む。
【0121】
ステップ2905では、階層ページ/オブジェクト管理テーブル1600を参照し、オブジェクトストレージサービス221により提供されるオブジェクトストレージから、リード要求されたページに対応するオブジェクトを取得する。続いてステップ2906では、ステップ2905で取得したオブジェクトのデータを、バッファ領域内の空きバッファページへ書き込む。
【0122】
ステップ2907では、ライト要求されたデータを、バッファ領域内の空きバッファページへ書き込む。なお、ステップ2907でバッファ領域(第3階層用バッファ113)に格納されたデータは、その後CPU11の処理により、適切なタイミングでオブジェクトストレージ(第3階層114)に格納される。
【0123】
ステップ2906またはステップ2907の処理を実行した後、ステップ2908では、これらの処理結果を反映し、バッファページ/オブジェクト管理テーブル1700を更新する。
【0124】
ステップ2908の処理を実行したら、
図20のフローチャートに示すオブジェクトストレージアクセス処理2901を終了する。
【0125】
CPU11は、オブジェクトストレージアクセスプログラム2900を実行して上記のオブジェクトストレージアクセス処理2901を行うことにより、ストレージ利用計算機211からのアクセス要求に応じて、バッファページを介してオブジェクトストレージサービス221へのアクセスを行うことができる。
【0126】
図21は、CPU11がバッファページリクレイムプログラム3000を実行することで行われるバッファページリクレイム処理3001のフローチャートである。このバッファページリクレイム処理3001は、
図20のオブジェクトストレージアクセス処理2901において、ステップ3001で呼び出されて実行される。
【0127】
ステップ3002では、性能情報テーブル1200を参照し、バッファ領域(第3階層用バッファ113)において、ある一定期間(例えば1時間)以上アクセスがないバッファページを抽出する。
【0128】
ステップ3003では、ステップ3002で抽出したバッファページごとに、ステップ3004の処理を繰り返すループ処理を実施する。
【0129】
ステップ3004では、処理対象のバッファページのランク値を計算する。ここでは、例えば以下の式(7)により、j番目のバッファページのランク値Rjを計算する。
Rj=wp×wij+rp×rij ・・・(7)
【0130】
式(7)において、wpはライト時のペナルティ係数を表し、例えば「PUT」および「GET」の命令に対するオブジェクトストレージサービス221のレスポンス時間の合計値や、所定の定数などが設定される。また、rpはリード時のペナルティ係数を表し、例えば「GET」の命令に対するオブジェクトストレージサービス221のレスポンス時間や、所定の定数などが設定される。wij,rijは、j番目のバッファページに対するライトとリードのアクセス頻度をそれぞれ表す。
【0131】
全てのバッファページに対してステップ3004の処理を行ったら、ステップ3003のループ処理を抜け、ステップ3005へ進む。
【0132】
ステップ3005では、ステップ3004で計算されたランク値の低いものから順に、予め指定されたページ数分だけ、ステップ3006の処理を繰り返すループ処理を実施する。
【0133】
ステップ3006では、バッファ領域のうち処理対象のバッファページに格納されているデータを消去することで、そのバッファページに該当するバッファを開放する。このとき、該当するバッファページにダーティーデータ(オブジェクトストレージへの書き込みが完了していないデータ)がある場合は、そのデータをオブジェクトストレージサービス221へ送信した後に、バッファを開放する。
【0134】
ランク値の低いものから昇順で、予め指定されたページ数の各バッファページに対してステップ3006の処理を行ったら、ステップ3005のループ処理を抜け、
図21のフローチャートに示すバッファページリクレイム処理3001を終了する。
【0135】
CPU11は、バッファページリクレイムプログラム3000を実行して上記のバッファページリクレイム処理3001を行うことにより、バッファ領域である第3階層用バッファ113において一定期間以上アクセスされていない複数のページを抽出するとともに、抽出した各ページのアクセス頻度に基づくランク値を算出し、ランク値を昇順に並べたときに上位から所定数までのページを開放することができる。すなわち、抽出した各ページのデータへのアクセス頻度に基づいて、所定数のページを開放することができる。
【0136】
図22は、CPU11が階層制御プログラム2600を実行することで行われる階層制御処理2601のフローチャートである。この処理は、例えば
図16の階層サイズ決定処理2301が実行されてストレージプール102の各階層のサイズが決定された後、各階層に対してサイズに応じたページを割り当てるときや、任意のタイミングで各ページのアクセス頻度に応じた階層の見直しを行うときなどに実行される。
【0137】
ステップ2602では、ストレージプール102に設定されている全ての階層について、上位階層より順に、ステップ2603~2605の処理を繰り返すループ処理をそれぞれ実施する。例えば
図5に例示したストレージプール102の階層構造の場合、第1階層111、第2階層112、第3階層114の順に、ステップ2602のループ処理を実施する。
【0138】
ステップ2603では、ストレージプール102内で階層が未割当のプールページおよび階層の見直し対象に指定されたプールページの全てについて、前述の式(7)で求められるランク値の高いものから順に、処理対象の階層のサイズに空きがなくなるまで、ステップ2604,2605の処理を繰り返すループ処理をそれぞれ実施する。
【0139】
ステップ2604では、処理対象の階層を見直し後の階層として、処理対象のページが現在格納されている階層と、見直し後の階層とが同じであるか否かを判定する。その結果、これらの階層が同一ではない場合はステップ2605へ進み、同一である場合はステップ2605の処理を実行せずに次のループ処理に移行する。なお、処理対象のページがまだいずれの階層にも割り当てられていない場合は、ステップ2604を否定判定してステップ2605へ進むようにすればよい。
【0140】
ステップ2605では、階層移動対象ページ管理テーブル1800にエントリを追加する。ここでは、
図15の例示した階層移動対象ページ管理テーブル1800において、処理対象のページに対応するレコードを追加し、そのレコードに対してプールページ番号1801、現在の階層番号1802、移動先階層番号1803の各情報を設定することにより、処理対象のページに対応するエントリを追加する。
【0141】
ストレージプール102の全階層について、それぞれ空きページの分だけステップ2604,2605の処理を行ったら、ステップ2602のループ処理を抜け、ステップ2606へ進む。
【0142】
ステップ2606では、階層移動対象ページ管理テーブル1800を参照し、ここに記録されている全ての階層対象移動ページについて、ステップ2607~2609の処理を繰り返すループ処理をそれぞれ実施する。
【0143】
ステップ2607では、処理対象のページに現在格納されているデータを移動先のページにコピーする。
【0144】
ステップ2608では、ボリュームページ/階層ページ管理テーブル1400を更新する。ここでは、ボリュームページ/階層ページ管理テーブル1400のうち、処理対象のページに対応するレコードにおいて、階層番号1403、階層ページ番号1404の値をそれぞれ更新する。
【0145】
ステップ2609では、移動元のページに格納されていたデータを削除し、当該ページを開放する。
【0146】
全ての階層対象移動ページに対してステップ2607~2609の処理を行ったら、ステップ2606のループ処理を抜け、
図22のフローチャートに示す階層制御処理2601を終了する。
【0147】
CPU11は、階層制御プログラム2600を実行して上記の階層制御処理2601を行うことにより、ストレージプール102の各階層に対して、サイズに応じたページを割り当てることができる。すなわち、ストレージプール102の各ページのアクセス頻度に基づいて、各階層に格納するページを決定し、格納を決定したページのサイズの合計に基づいて、各階層のサイズを決定することができる。
【0148】
図23は、CPU11がアクセス頻度監視プログラム2100を実行することで行われるアクセス頻度監視処理2101のフローチャートである。
【0149】
ステップ2102では、一定時間(例えば1時間)ごとに、ステップ2103~2105の処理を繰り返すループ処理をそれぞれ実施する。
【0150】
ステップ2103では、ストレージプール102の全ページについて、ステップ2104,2105の処理を繰り返すループ処理をそれぞれ実施する。
【0151】
ステップ2104では、性能情報テーブル1200において処理対象のページに対応するカウンタ1222,1232の値を、対応する直近値1221,1231の単位に合わせてそれぞれ規格化し、その規格化した値を直近値1221,1231にそれぞれ保存する。これにより、一定期間内に得られたカウンタ1222,1232の集計値を、直近値1221,1231へそれぞれ反映させるようにする。
【0152】
ステップ2105では、ステップ2104で直近値1221,1231に反映したカウンタ1222,1232の値を、それぞれ0に初期化する。
【0153】
ストレージプール102の全ページについてステップ2104,2105の処理を行ったら、ステップ2103のループ処理を抜け、
図23のフローチャートに示すアクセス頻度監視処理2101を終了する。
【0154】
CPU11は、アクセス頻度監視プログラム2100を実行して上記のアクセス頻度監視処理2101を行うことにより、一定時間ごとに性能情報テーブル1200をリセットすることができる。
【0155】
図24は、CPU11がサイズ見直し指示プログラム2200を実行することで行われるサイズ見直し指示処理2201のフローチャートである。
【0156】
ステップ2202では、一定時間(例えば1時間)ごとにループ処理をそれぞれ実施する。このループ処理では、
図16で説明した階層サイズ決定処理2301と、
図17,18でそれぞれ説明したバッファサイズ決定処理2401,2411のいずれかと、をそれぞれ実施するとともに、サイズ変更処理2501を実施する。なお、サイズ変更処理2501の詳細については、
図25を参照して後述する。
【0157】
CPU11は、サイズ見直し指示プログラム2200を実行して上記のサイズ見直し指示処理2201を行うことにより、一定時間ごとに階層サイズやバッファサイズの見直しを行うことができる。
【0158】
図25は、CPU11がサイズ変更プログラム2500を実行することで行われるサイズ変更処理2501のフローチャートである。このサイズ変更処理2501は、
図24のサイズ見直し指示処理2201において、ステップ2501で呼び出されて実行される。
【0159】
ステップ2502では、ストレージプール102においてサイズ変更が可能な全ての階層について、ステップ2503~2507の処理を繰り返すループ処理を実施する。
【0160】
ステップ2503では、処理対象の階層の現在のサイズと、変更後のサイズ、すなわち、
図24のサイズ見直し指示処理2201において実行された階層サイズ決定処理2301により決定されたサイズと、を比較する。その結果、現在のサイズよりも変更後のサイズの方が大きい場合はステップ2504へ進み、そうでない場合、すなわち現在のサイズが変更後のサイズ以上である場合はステップ2505へ進む。
【0161】
ステップ2504では、処理対象の階層に対してドライブを追加する。ここでは、ストレージ装置17またはオブジェクトストレージサービス221において、当該階層のデータを格納するためのドライブを追加することで、現在のサイズと変更後のサイズとの差分を埋め合わせるためのストレージ容量を拡充する。
【0162】
ステップ2505では、処理対象の階層におけるページの一部を下位の階層に移動する。ここでは、例えば前述の式(7)で求められるランク値の低いものから順に、現在のサイズと変更後のサイズとの差分に応じたペース数の分だけ、下位の階層にページを移動する。
【0163】
ステップ2506では、ステップ2505でページ移動を行うことによって空となったドライブをストレージプール102から削除する。
【0164】
ステップ2504または2506を実行した後、ステップ2507では、これらの処理結果を反映して、階層サイズ・バッファサイズ管理テーブル1500を更新する。ここでは、階層サイズ・バッファサイズ管理テーブル1500において、処理対象の階層に対応するレコードのサイズ1502の値を更新する。
【0165】
サイズ変更が可能な全ての階層に対してステップ2503~2507の処理を行ったら、ステップ2502のループ処理を抜け、ステップ2508へ進む。
【0166】
ステップ2508では、バッファ領域(第3階層用バッファ113)の現在のサイズと、変更後のサイズ、すなわち、
図24のサイズ見直し指示処理2201において実行されたバッファサイズ決定処理2401または2411により決定されたサイズと、を比較する。その結果、現在のサイズよりも変更後のサイズの方が大きい場合はステップ2509へ進み、そうでない場合、すなわち現在のサイズが変更後のサイズ以上である場合はステップ3001へ進む。
【0167】
ステップ2509では、ストレージプール102においてバッファ領域が専用の領域として設けられているか否かを判定する。
図5(a)で示した階層構造例のように、オブジェクトストレージ階層の上位に位置する階層と、オブジェクトストレージ階層のデータの読み書きに使用されるバッファ領域とが別々に設けられている場合は、ステップ2510へ進む。そうでない場合、すなわち
図5(b)で示した階層構造例のように、オブジェクトストレージ階層の上位に位置する階層の一部がオブジェクトストレージ階層のバッファ領域を兼ねている場合は、ステップ2510の処理を実行せずに、
図25のフローチャートに示すサイズ変更処理2501を終了する。
【0168】
ステップ2510では、バッファ領域に対してドライブを追加する。ここでは、ストレージ装置17において、オブジェクトストレージサービス221に対するバッファデータを格納するためのドライブを追加することで、現在のバッファサイズと変更後のバッファサイズとの差分を埋め合わせるためのストレージ容量を拡充する。その後、
図25のフローチャートに示すサイズ変更処理2501を終了する。
【0169】
ステップ3001では、
図21で説明したバッファページリクレイム処理を実施することで、前述のように、一定期間アクセスがないバッファページをバッファ領域から追い出して開放する。
【0170】
ステップ2512では、ステップ2509と同様に、ストレージプール102においてバッファ領域が専用の領域として設けられているか否かを判定する。ストレージプール102がバッファ専用領域を有する場合はステップ2513へ進み、そうでない場合はステップ2513の処理を実行せずに、
図25のフローチャートに示すサイズ変更処理2501を終了する。
【0171】
ステップ2513では、ステップ3001のバッファページリクレイム処理によって空となったドライブをストレージプール102から削除する。その後、
図25のフローチャートに示すサイズ変更処理2501を終了する。
【0172】
CPU11は、
図24のサイズ見直し指示処理2201において、サイズ変更プログラム2500を実行して上記のサイズ変更処理2501を行うことにより、ストレージプール102の運用中に、ストレージプール102に設定されている各階層やバッファ領域のサイズを動的に変更する行うことができる。
【0173】
以上説明した本発明の一実施形態によれば、以下の作用効果を奏する。
【0174】
(1)ストレージシステム10は、ストレージプール102を階層化して管理するストレージ管理部を稼働させるCPU11と、データを格納するストレージ装置17とを備え、ストレージ装置17を少なくとも含む複数種類のストレージによるストレージプール102を有する。ストレージ管理部(CPU11)は、ストレージプール102の記憶領域を第1階層111、第2階層112および第3階層114に階層化して、各階層をそれぞれ異なるアクセス性能を有するストレージ(高速ドライブ101a、低速ドライブ101b、オブジェクトストレージサービス221)に割り当て、データのアクセス頻度に基づいて、第1階層111、第2階層112および第3階層114の中からデータを格納する階層を決定する。そして、このうちバッファ対象階層である第3階層114に格納されているデータを一時的に格納するバッファ領域としての第3階層用バッファ113をストレージプール102に設けて、この第3階層用バッファ113を、第3階層114が割り当てられたストレージ(オブジェクトストレージサービス221)よりもアクセス性能が高いストレージ(低速ドライブ101b)に割り当てる。さらに、ストレージ管理部(CPU11)は、バッファサイズ決定処理2401,2411により、第3階層114のアクセス頻度に基づいて第3階層用バッファ113のサイズを決定する。このようにしたので、階層型ストレージ管理を行うストレージシステム10において、適切なバッファ領域を設定することができる。
【0175】
(2)ストレージプール102に設定される階層は、バッファ対象階層である第3階層114よりもアクセス性能が高いストレージ(低速ドライブ101b)に割り当てられた上位の第2階層112を含む。第3階層用バッファ113は、この第2階層112と同じストレージ(低速ドライブ101b)に割り当てられる。このようにしたので、バッファ領域用のストレージを別途用意しなくても、第3階層114のバッファ領域としての第3階層用バッファ113をストレージプール102に設けることができる。
【0176】
(3)ストレージ管理部(CPU11)は、第3階層114のサイズsと、第3階層114のアクセス頻度bと、第3階層114の期待アクセス確率cとに基づいて、第3階層用バッファ113のサイズを表すバッファサイズkを決定する(ステップ2406)ことができる。このようにすれば、バッファサイズkを適切な値に決定することができる。
【0177】
(4)ストレージ管理部(CPU11)は、ストレージプール102の各階層のアクセス頻度に基づくアクセスコストを表すコスト関数Call(k)を算出し(ステップ2413)、算出したコスト関数Call(k)と、第3階層用バッファ113のサイズを変更した場合のコスト数Call(k)の変化と、に基づいてバッファサイズkを決定する(ステップ2414,2415)こともできる。このようにしても、バッファサイズkを適切な値に決定することができる。
【0178】
(5)ストレージ管理部(CPU11)は、サイズ変更処理2501により、ストレージプール102の運用中に第3階層用バッファ113のサイズを動的に変更する(ステップ2508~2513)。このようにしたので、ストレージプール102の運用中であっても、第3階層用バッファ113のサイズを常に最適な状態に保つことができる。
【0179】
(6)ストレージ管理部(CPU11)は、階層サイズ決定処理2301により、ストレージプール102の各ページのアクセス頻度に基づいて、第1階層111、第2階層112および第3階層114の各階層に格納するページを決定する(ステップ2306)。すなわち、アクセス頻度の高いページほど上位の階層に格納されるように、各階層に格納するページを決定する。そして、格納を決定したページのサイズの合計に基づいて、各階層のサイズを決定する。具体的には、ストレージプール102のアクセス頻度をページ単位で集計して得られた度数分布または累積度数分布に基づいて、第1階層111、第2階層112および第3階層114の各々のサイズを決定する(ステップ2306,2307)。このようにしたので、各階層のサイズと、各階層に格納するページとを、ページごとのアクセス頻度に応じてそれぞれ適切に決定することができる。
【0180】
(7)ストレージプール102を構築するストレージは、ネットワークを介してストレージシステム10と接続されるオブジェクトストレージを含む。ストレージ管理部(CPU11)は、バッファ領域である第3階層用バッファ113を、ストレージシステム10が有するストレージ装置17に割り当て、バッファ対象階層である第3階層114を、オブジェクトストレージに割り当てる。さらに、外部より提供されるストレージサービスであるオブジェクトストレージサービス221を、第3階層114に割り当てるオブジェクトストレージとして利用することができる。このようにしたので、オブジェクトストレージを含むストレージシステム10において、バッファ領域を有する階層化構造を実現できる。
【0181】
(8)CPU11は、例えば
図5(b)に示すように、第3階層114の上位階層である第2階層112の一部を、第3階層用バッファ113として利用することができる。このようにすれば、ストレージプール102の記憶容量を効率的に利用することができる。
【0182】
(9)CPU11は、サイズ変更処理2501により、ストレージプール102の運用中に第2階層112および第3階層用バッファ113のサイズをそれぞれ動的に変更する(ステップ2502~2513)。このようにしたので、ストレージプール102の運用中であっても、第2階層112や第3階層用バッファ113のサイズを常に最適な状態に保つことができる。
【0183】
(10)CPU11は、オブジェクトストレージアクセス処理2901により、第3階層114のデータでアクセスのあったデータを、第3階層用バッファ113および第3階層114にそれぞれ格納する(ステップ2907)。また、バッファページリクレイム処理3001により、第3階層用バッファ113において一定期間以上アクセスされていないデータのページを開放する。具体的には、第3階層用バッファ113において一定期間以上アクセスされていない複数のページを抽出する(ステップ3002)。そして、抽出した各ページのアクセス頻度に基づくランク値を算出し(ステップ3004)、ランク値を昇順に並べたときに上位から所定数までのページを開放する(ステップ3005~3006)。これにより、抽出した各ページのデータへのアクセス頻度に基づいて所定数のページを開放する。このようにしたので、第3階層用バッファ113を効率的に利用することができる。
【0184】
なお、本発明は上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、任意の構成要素を用いて実施可能である。例えば、
図16~
図25で説明した各処理を、CPU11ではなく、FPGA(Field-Programmable Gate Array)等のハードウェアにより実現してもよい。
【0185】
以上説明した実施形態や変形例はあくまで一例であり、発明の特徴が損なわれない限り、本発明はこれらの内容に限定されるものではない。また、上記では種々の実施形態や変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。
【符号の説明】
【0186】
10…ストレージシステム、11…CPU、12…メモリ、13…HBA、14…NIC、15…USB、16…VGA、17…ストレージ装置、101…ドライブ、102…ストレージプール、103…仮想ボリューム、111…第1階層、112…第2階層、113…第3階層用バッファ、114…第3階層、211…ストレージ利用計算機、212…管理用端末、213…外部接続機能付きストレージ、221…オブジェクトストレージサービス、1200…性能情報テーブル、1300…プールページ/ボリュームページ管理テーブル、1400…ボリュームページ/階層ページ管理テーブル、1500…階層サイズ・バッファサイズ管理テーブル、1600…階層ページ/オブジェクト管理テーブル、1700…バッファページ/オブジェクト管理テーブル、1800…階層移動対象ページ管理テーブル、2100…アクセス頻度監視プログラム、2200…サイズ見直し指示プログラム、2300…階層サイズ決定プログラム、2400…バッファサイズ決定プログラム、2500…サイズ変更プログラム、2600…階層制御プログラム、2700…プール管理プログラム、2800…ストレージサービスプログラム、2900…オブジェクトストレージアクセスプログラム、3000…バッファページリクレイムプログラム