JP6165909B1 - 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 - Google Patents
階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 Download PDFInfo
- Publication number
- JP6165909B1 JP6165909B1 JP2016052510A JP2016052510A JP6165909B1 JP 6165909 B1 JP6165909 B1 JP 6165909B1 JP 2016052510 A JP2016052510 A JP 2016052510A JP 2016052510 A JP2016052510 A JP 2016052510A JP 6165909 B1 JP6165909 B1 JP 6165909B1
- Authority
- JP
- Japan
- Prior art keywords
- logical
- extent
- extents
- physical
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】階層間のデータ移動を効率化できるようにする。【解決手段】実施形態によれば、階層化ストレージシステムのストレージコントローラは、ホストからのアクセス要求が第1の論理ブロックを含む1つ以上の論理ブロックへのアクセスを指定し、且つ前記第1の論理ブロックが第1の論理エクステントに含まれていて、且つ前記第1の論理エクステントが前記第2のストレージ装置内のq個の物理エクステントが割り当てられたq個の論理エクステントを含むエクステントグループに属している場合、前記q個の物理エクステントのデータを、上位階層に位置付けられるストレージ装置内の空きのq個の物理エクステントに移動する。【選択図】図2
Description
本発明の実施形態は、階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法に関する。
近年、アクセス速度の異なる第1及び第2のストレージ装置を備えたストレージシステムが開発されている。ここで、第1のストレージ装置のアクセス速度及び記憶容量は高速で小容量であり、第2のストレージ装置のアクセス速度及び記憶容量は、第1のストレージ装置のそれと比較して低速で大容量であるものとする。ストレージシステムは、第1及び第2のストレージ装置を、それぞれ上位階層及び下位階層として階層的に組み合わせることにより実現される。このような技術はストレージ階層化技術とも呼ばれ、当該ストレージ階層化技術を適用するストレージシステムは階層化ストレージシステムとも呼ばれる。
階層化ストレージシステムでは、データが配置(格納)されるべき階層(ストレージ装置)が、当該データの特性に応じて決定・変更される。具体的には、アクセス頻度の高いデータは上位階層(第1のストレージ装置)に配置され、アクセス頻度の低いデータは下位階層(第2のストレージ装置)に配置される。このような配置(つまり階層化)により、階層化ストレージシステムの高パフォーマンス化と低コスト化とを両立することができる。
階層化ストレージシステムにおける階層化は、一般に自動的に行われる。この自動的な階層化のためにストレージコントローラは、例えば、階層化ストレージシステムにおけるアクセスの状況を、エクステントと呼ばれるデータ集合を単位に監視する。エクステントは一般に、データ管理(データアクセス)の基本サイズ(いわゆるブロックサイズ)よりも大きいサイズを有する。エクステントそれぞれへのアクセスの状況は、アクセス回数のようなアクセス統計値により表される。
ストレージコントローラは、例えば定期的に、エクステントそれぞれのアクセス統計値に基づいて、当該エクステントそれぞれのアクセス頻度に関する評価を行う。そしてストレージコントローラは、この定期的な評価結果に基づいて、下位階層から上位階層へのデータの移動(再配置)、及び/または、上位階層から下位階層へのデータの移動をエクステントを単位に行う。しかし、定期的なアクセス頻度評価に基づく階層間のデータ移動は、オーバーヘッドが大きく、処理に時間を費やす。
本発明が解決しようとする課題は、階層間のデータ移動を効率化できる階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法を提供することにある。
実施形態によれば、階層化ストレージシステムは、第1のストレージ装置と、ストレージコントローラとを含む。前記第1のストレージ装置は、各々が第1の数の物理ブロックから構成される複数の物理エクステントを有する第1の記憶領域を含み、且つ上位階層に位置付けられる。前記第2のストレージ装置は、各々が前記第1の数と同数の物理ブロックから構成される複数の物理エクステントを有する第2の記憶領域を含み、且つ前記第1のストレージ装置よりもアクセス速度が低く、且つ下位階層に位置付けられる。前記ストレージコントローラは、前記第1及び第2のストレージ装置へのアクセスを制御し、構成管理部と、入出力制御部と、入出力管理部と、グループ管理部と、階層化制御部とを含む。前記構成管理部は、各々が前記物理ブロックと同サイズの複数の論理ブロックから構成される仮想化された記憶領域を含む論理ユニットを構築し、前記階層化ストレージシステムを利用するホスト計算機に前記論理ユニットを提供する。前記入出力制御部は、前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする。前記入出力管理部は、前記論理ユニット内の前記仮想化された記憶領域を、各々が前記第1の数と同数の論理ブロックから構成される複数の論理エクステントを有する記憶領域として管理する。前記グループ管理部は、前記複数の論理エクステント内のそれぞれ異なる2つの論理エクステントから構成される組み合わせ毎に、対応する2つの論理エクステントのアクセスに関する結合の強さを、当該対応する2つの論理エクステントが順にアクセスされる度合いを示す結合度に基づいて管理し、且つ相互に結合関係を有する組み合わせの系列毎に対応する系列に含まれている論理エクステントの集合をエクステントグループとして管理する。前記階層化制御部は、前記アクセス要求が第1の論理ブロックを含む1つ以上の論理ブロックへのアクセスを指定し、且つ前記第1の論理ブロックが第1の論理エクステントに含まれていて、且つ前記第1の論理エクステントが前記第2のストレージ装置内のq個の物理エクステントが割り当てられたq個の論理エクステントを含むエクステントグループに属している場合、前記q個の物理エクステントのデータを、前記第1のストレージ装置内の空きのq個の物理エクステントに移動し、且つ前記q個の論理エクステントに割り当てられるq個の物理エクステントを、前記データの移動元のq個の物理エクステントから、前記データの移動先のq個の物理エクステントに変更する。
以下、実施の形態につき図面を参照して説明する。
図1は一つの実施形態に係る階層化ストレージシステムを含むコンピュータシステムの典型的なハードウェア構成を示すブロック図である。図1に示されるコンピュータシステムは、階層化ストレージシステム10及びホストコンピュータ(以下、ホストと称する)20から構成される。つまりコンピュータシステムは、単一のホストを備えている。しかし、コンピュータシステムが、複数のホストを備えていても良い。
図1は一つの実施形態に係る階層化ストレージシステムを含むコンピュータシステムの典型的なハードウェア構成を示すブロック図である。図1に示されるコンピュータシステムは、階層化ストレージシステム10及びホストコンピュータ(以下、ホストと称する)20から構成される。つまりコンピュータシステムは、単一のホストを備えている。しかし、コンピュータシステムが、複数のホストを備えていても良い。
ホスト20は、階層化ストレージシステム10が提供する論理ユニットを自身の外部ストレージ装置として利用する。論理ユニットは、論理ディスクまたは論理ボリュームとも呼ばれ、仮想化された記憶領域(つまり、論理記憶領域)を含む。ホスト20は、例えば、ホストインタフェースバス30を介して階層化ストレージシステム10(より、詳細には、階層化ストレージシステム10のストレージコントローラ13)と接続されている。本実施形態においてホストインタフェースバス30は、ファイバチャネル(FC)である。しかしホストインタフェースバス30が、スモールコンピュータシステムインタフェース(SCSI)、シリアルアタッチドSCSI(SAS)、インターネットSCSI(iSCSI)、イーサネット(登録商標)、或いはシリアルATアタッチメント(SATA)のような、FC以外のインタフェースバスであっても構わない。またホスト20が、ストレージエリアネットワーク(SAN)、インターネット或いはイントラネットのようなネットワークを介して階層化ストレージシステム10と接続されていても良い。
ホスト20は、サーバ、或いはクライアントパーソナルコンピュータのような物理計算機である。ホスト20内では、階層化ストレージシステム10が提供する論理ユニット内のデータにアクセスするためのアプリケーションプログラムが動作する。このアプリケーションプログラムに従い、ホスト20はホストインタフェースバス30を介して階層化ストレージシステム10を利用する。
階層化ストレージシステム10は、高速ストレージ装置(第1のストレージ装置)11と、低速ストレージ装置(第2のストレージ装置)12と、ストレージコントローラ13とを備えている。高速ストレージ装置11及び低速ストレージ装置12は、ストレージインタフェースバス14を介してストレージコントローラ13と接続されている。本実施形態においてストレージインタフェースバス14はFC(ファイバチャネル)である。しかしストレージインタフェースバス14が、ホストインタフェースバス30と同様に、FC以外のインタフェースバスであっても構わない。
高速ストレージ装置11は、例えば、ハードディスクドライブ(HDD)との互換性を有し、且つHDDよりもアクセス速度が高速な(つまりアクセス性能が優れた)単一のソリッドステートドライブ(SSD)から構成される。一方、低速ストレージ装置12は、例えば単一のHDDから構成される。
したがって本実施形態において低速ストレージ装置12は、高速ストレージ装置11よりもアクセス速度が低い(つまりアクセス性能が劣る)。これに対して低速ストレージ装置12の記憶容量は、高速ストレージ装置11のそれよりも大きいものとする。本実施形態では、高速ストレージ装置11は上位階層(高速階層、第1の階層)のストレージ装置として、低速ストレージ装置12は下位階層(低速階層、第2の階層)のストレージ装置として、それぞれ用いられる。なお、階層化ストレージシステム10が、低速ストレージ装置12よりも更に低速(低階層)のストレージ装置(第3の階層のストレージ装置)を備えていても良い。
なお、本実施形態とは異なって、高速ストレージ装置11が、フラッシュメモリを搭載したフラッシュアレイストレージ装置或いはオールフラッシュアレイと呼ばれるストレージ装置であっても構わない。同様に、低速ストレージ装置12が、複数のHDDから構成されるアレイ構成のストレージ装置であっても構わない。
また、高速ストレージ装置11が、FC用のHDDのような高速HDDから構成され、低速ストレージ装置12が、SATA用のHDDのような低速HDDから構成されても構わない。また低速ストレージ装置12が、ブルーレイディスク(登録商標)ドライブ、或いはDVD(登録商標)ドライブのような光学式ディスクドライブ、或いはテープ装置であっても構わない。また、テープ装置が低速ストレージ装置12として用いられる場合、光学式ディスクドライブが高速ストレージ装置11として用いられても構わない。
ストレージコントローラ13は、ホスト20から与えられる、論理アドレスを用いたアクセス(リードアクセスまたはライトアクセス)の要求(入出力要求)を受信して、要求されたアクセス(入出力)を実行する。このアクセスの実行に際し、ストレージコントローラ13は、周知のアドレス変換機能を用いて、論理アドレスを物理アドレスに変換する。論理アドレスは、論理ユニット内のアドレスを指す。物理アドレスは、高速ストレージ装置11または低速ストレージ装置12に含まれていて、且つ論理アドレスに対応付けられている記憶領域の物理位置を示す。ストレージコントローラ13は、物理アドレスに基づいて、高速ストレージ装置11または低速ストレージ装置12にアクセスする。
ストレージコントローラ13は、ホストインタフェースコントローラ(以下、HIFコントローラと称する)131と、ストレージインタフェースコントローラ(以下、SIFコントローラと称する)132と、メモリ133と、ローカルHDD134と、CPU135とを備えている。
HIFコントローラ131は、当該HIFコントローラ131とホスト20との間のデータ転送(データ転送プロトコル)を制御する。HIFコントローラ131は、ホストからのアクセス要求を受信し、当該アクセス要求に対する応答を返信する。アクセ要求は、論理ユニットからデータをリードすること、或いは当該論理ユニットにデータをライトすること(つまり、論理ユニットへのアクセス)を指定する。HIFコントローラ131は、ホスト20からアクセス要求を受信すると、当該アクセス要求を、CPU135に伝達する。アクセス要求を受け取ったCPU135は、当該アクセス要求を処理する。
SIFコントローラ132は、CPU135が受信したホスト20からのアクセス要求に対応するアクセスコマンド(より詳細には、高速ストレージ装置11または低速ストレージ装置12に対するリードコマンドまたはライトコマンド)を、CPU135から受信する。SIFコントローラ132は、受信されたアクセスコマンドに応じて、高速ストレージ装置11または低速ストレージ装置12へのアクセスを実行する。
メモリ133は、DRAMのような、書き換えが可能な揮発性メモリである。メモリ133の記憶領域の一部は、ローカルHDD134からロードされる制御プログラムの少なくとも一部を格納するのに用いられる。メモリ133の記憶領域の他の一部は、ローカルHDD134からロードされるアドレス変換テーブル1331、エクステント管理テーブル1332、及び結合管理テーブル1333(図2)を格納するのに用いられる。
ローカルHDD134には、制御プログラムが格納されている。CPU135は、ストレージコントローラ13が起動されたときにイニシャルプログラムローダ(IPL)を実行することにより、ローカルHDD134に格納されている制御プログラムの少なくとも一部をメモリ133にロードする。IPLは、ROMまたはフラッシュROMのような不揮発性メモリに格納されている。
CPU135は、例えば、マイクロプロセッサのようなプロセッサである。CPU135は、メモリ133にロードされた制御プログラムに従い、構成管理部1351、入出力(IO)制御部1352、入出力(IO)管理部1353、グループ管理部1354、及び階層化制御部1355(図2)として機能する。つまりCPU135は、メモリ133に格納されている制御プログラムを実行することで、階層化ストレージシステム10全体を制御する。
本実施形態においてストレージコントローラ13は、図1に示されているようにホスト20から独立して備えられている。しかし、ストレージコントローラ13が、ホスト20に内蔵されていても構わない。この場合、ストレージコントローラ13(より詳細には、ストレージコントローラ13の機能)が、ホスト20の有するオペレーティングシステム(OS)の機能の一部を用いて実現されていても構わない。
また、ストレージコントローラ13が、ホスト20のカードスロットに装着して用いられるカードに備えられていても構わない。また、ストレージコントローラ13の一部がホスト20に内蔵され、当該ストレージコントローラ13の残りがカードに備えられていても構わない。また、ホスト20と、ストレージコントローラ13と、高速ストレージ装置11及び低速ストレージ装置12の一部または全部とが、1つの筐体に収められていても構わない。
図2は、図1に示されるストレージコントローラ13の典型的な機能構成を主として示すブロック図である。ストレージコントローラ13は、構成管理部1351、IO制御部1352、IO管理部1353、グループ管理部1354及び階層化制御部1355を含む。構成管理部1351、IO制御部1352、IO管理部1353、グループ管理部1354及び階層化制御部1355の少なくとも1つがハードウェアによって実現されても構わない。
構成管理部1351は、階層化ストレージシステム10のストレージ構成を管理する。この構成管理は、高速ストレージ装置11及び低速ストレージ装置12の記憶領域に基づいて、論理ユニットを構築し、当該論理ユニットをホスト20に提供することを含む。本実施形態では、論理ユニットの記憶領域(論理記憶領域)は当該論理ユニットの管理のために、論理ブロックと呼ばれる一定サイズの小領域に分割される。つまり論理ユニットは、複数の論理ブロックから構成される。
一方、高速ストレージ装置11及び低速ストレージ装置12の記憶領域(物理記憶領域)は、物理エクステントと呼ばれる、論理ブロックより大きなサイズの領域に分割される。各物理エクステントは、物理ブロックと呼ばれる、論理ブロックと同サイズの小領域に更に分割される。つまり、高速ストレージ装置11及び低速ストレージ装置12の記憶領域は複数の物理エクステントから構成され、各物理エクステントは一定数(第1の数)の連続する物理ブロックから構成される。
本実施形態において論理ユニットの記憶領域は、論理エクステントと呼ばれる、物理エクステントと同サイズの領域にも分割される。つまり論理ユニットの記憶領域は、複数の論理エクステントからも構成される。各論理エクステントは、物理エクステントを構成する物理ブロックの数(つまり、第1の数)と同数の連続する論理ブロックから構成される。つまり、各論理エクステントの境界は、論理ブロックの境界に一致する。
物理エクステント及び論理エクステントのサイズ(つまりエクステントサイズ)は、例えば4キロバイト(KB)、即ち4,096バイト(B)である。一方、物理ブロック及び論理ブロックのサイズ(つまりブロックサイズ)は、例えば512バイト(B)である。つまり、第1の数は8であり、物理エクステント(論理エクステント)は、8個の物理ブロック(論理ブロック)から構成される。しかし、エクステントサイズ及びブロックサイズは、それぞれ、4KB及び512Bに限らず、第1の数も8に限らない。
IO制御部1352は、ホスト20からのデータリードのためのアクセス要求に応じて、高速ストレージ装置11または低速ストレージ装置12からデータをリードする、またIO制御部1352は、ホスト20からのデータライトのためのアクセス要求に応じて、高速ストレージ装置11または低速ストレージ装置12にデータをライトする。
IO管理部1353は、ホスト20からのアクセス要求に対応するIO(アクセス)を管理する。IO管理部1353は、主としてこのIO管理のために、論理ユニットの記憶領域を前記複数の論理エクステントに分割する。つまりIO管理部1353は、論理ユニットの記憶領域を、複数の論理エクステントを有する記憶領域として管理する。IO管理は、高速ストレージ装置11及び低速ストレージ装置12の記憶領域内の物理ブロックを、論理ユニットの記憶領域内の論理ブロックに割り当てること、及び当該割り当ての状態を管理することを含む。この割り当ての状態の管理には、アドレス変換テーブル1331が用いられる。なお、論理エクステントへの分割が、構成管理部1351によってなされても構わない。IO管理は更に、各論理エクステントへのアクセスの状況を示すアクセス(IO)統計値(以下、アクセスカウントと称する)を取得することを含む。論理エクステント毎のアクセスカウントは、エクステント管理テーブル1332を用いて管理される。
グループ管理部1354は、前記複数の論理エクステント内のそれぞれ異なる2つの論理エクステントから構成される組み合わせ毎に、対応する2つの論理エクステントのアクセスに関する結合の強さを、当該対応する2つの論理エクステントが順にアクセスされる度合いを示す結合度に基づいて管理する。組み合わせ毎の結合度は、結合管理テーブル1333を用いて管理される。グループ管理部1354は更に、相互に結合関係を有する組み合わせの系列毎に対応する系列に含まれている論理エクステントの集合をエクステントグループとして管理する。
階層化制御部1355は、低速ストレージ装置12内のアクセスの頻度の高い物理エクステント内のデータを、高速ストレージ装置11内の物理エクステントに移動(再配置)する。また階層化制御部1355は、高速ストレージ装置11内のアクセスの頻度の低い物理エクステント内のデータを、低速ストレージ装置12内の物理エクステントに移動する。
図3は、本実施形態における、物理エクステントと物理ブロックとの典型的な関係を示す。図3に示されるように、高速ストレージ装置11の記憶領域は、m個の物理エクステントPE0,PE1,…,PEm−1に分割される。つまり高速ストレージ装置11は、m個の物理エクステントPE0乃至PEm−1を備えている。また、高速ストレージ装置11の記憶領域は、m×n個の物理ブロックPB0_0,…,PB0_n−1,PB1_0,…,PB1_n−1,…,PBm−1_0,…,PBm−1_n−1に分割される。つまり高速ストレージ装置11はm×n個の物理ブロックPB0_0,…,PB0_n−1,PB1_0,…,PB1_n−1,…,PBm−1_0,…,PBm−1_n−1を備えている。
ここで、高速ストレージ装置11におけるi番目(i=0,1,…,m−1)の物理エクステントを物理エクステントPEiと表記する。物理エクステントPEiは、高速ストレージ装置11の記憶領域において連続するn個の物理ブロックPBi_0乃至PBi_n−1から構成される。換言するならば、物理ブロックPBi_0乃至PBi_n−1は、物理エクステントPEiを構成する。nは前述の第1の数を示し、エクステントサイズが4KB、ブロックサイズが512Bである本実施形態では8である。
上述の高速ストレージ装置11における物理エクステントと物理ブロックとの関係は、低速ストレージ装置12においても同様である。必要ならば、上述の物理エクステントと物理ブロックとの関係に関する説明において、高速ストレージ装置11を低速ストレージ装置12に、記号mを他の記号(例えば、d)に、それぞれ置き換えられたい。記号dは、低速ストレージ装置12内の物理エクステントの数を示す。
高速ストレージ装置11内の物理エクステントPEiは、例えば、物理エクステント番号0iによって示される。つまり物理エクステント番号0iは、物理エクステントPEiを識別するための識別子である。物理エクステント番号0iは、例えば、ストレージ番号0と内部物理エクステント番号iとの結合から構成される。ストレージ番号0は、高速ストレージ装置11を示す識別子(ストレージ識別子)として用いられる。内部物理エクステント番号iは、ストレージ番号0によって示されるストレージ装置(つまり、高速ストレージ装置11)内のi番目の物理エクステント(つまり、物理エクステントPEi)を示す識別子(エクステント識別子)として用いられる。
物理エクステントPEi内のj番目の物理ブロックPBi_j(j=0,1,…,n−1)は、物理エクステント番号0iとオフセットOFSTjとによって示される。オフセットOFSTjは、物理エクステントPEiにおけるj番目の物理ブロック(つまり、物理ブロックPBi_j)の相対位置を示す。
同様に、低速ストレージ装置12内のk番目の物理エクステントPEk(k=0,1,…,h−1)は、物理エクステント番号1kによって示される。物理エクステント番号1kは、ストレージ番号1と内部物理エクステント番号kとの結合から構成される。ストレージ番号1は、低速ストレージ装置12を示す識別子として用いられる。内部物理エクステント番号kは、ストレージ番号1によって示されるストレージ装置(つまり、低速ストレージ装置12)内のk番目の物理エクステント(つまり、物理エクステントPEk)を示す識別子として用いられる。
物理エクステントPEk内のj番目の物理ブロックPBk_jは、物理エクステント番号1kとオフセットOFSTjとによって示される。上述の物理エクステント番号0i及び1kは、高速ストレージ装置11及び低速ストレージ装置12を用いて提供される物理記憶領域全体(物理アドレス空間)においてユニークである。
図4は、本実施形態における、論理エクステントと論理ブロックとの典型的な関係を示す。図4には論理ユニットLUが示されている。論理ユニットLUの記憶領域(より詳細には、仮想的な記憶領域)は、u×n個の論理ブロックLB0_0,…,LB0_n−1,LB1_0,…,LB1_n−1,…,LBu−1_0,…,LBu−1_n−1に分割される。つまり論理ユニットLUは、u×n個の論理ブロックLB0_0,…,LB0_n−1,LB1_0,…,LB1_n−1,…,LBu−1_0,…,LBu−1_n−1を備えている。また、論理ユニットLUの記憶領域は、u個の論理エクステントLE0,…,LEu−1に分割される。つまり論理ユニットLUは、u個の論理エクステントLE0乃至LEu−1を備えている。
ここで、論理ユニットLU内のs番目(s=0,1,…,u−1)の論理エクステントを論理エクステントLEsと表記する。論理エクステントLEsは、論理ユニットLUの記憶領域において連続するn個の論理ブロックLBs_0乃至LBs_n−1から構成される。換言するならば、論理ブロックLBs_0乃至LBs_n−1は、論理エクステントLEsを構成する。論理ブロックLBs_0乃至LBs_n−1は、それぞれ、論理ユニットLU内のs×n番目乃至(s+1)×n−1番目の論理ブロックである。
本実施形態においてストレージコントローラ13は、論理ユニットLU内の論理ブロックLB0_0,…,LB0_n−1,LB1_0,…,LB1_n−1,…,LBu−1_0,…,LBu−1_n−1、及び論理ユニットLU内の論理エクステントLE0乃至LEu−1を認識できる。これに対してホスト20は、論理ブロックLB0_0,…,LB0_n−1,LB1_0,…,LB1_n−1,…,LBu−1_0,…,LBu−1_n−1のみを認識できる。しかし、構成管理部1351が、論理エクステントのサイズを含む論理エクステントに関する定義内容をホスト20に通知することにより、当該ホスト20が論理ユニットLU内の論理エクステントLE0乃至LEu−1を認識できるようにしても構わない。
ホスト20は、論理ユニットLU内のt番目(t=0,1,…,u×n−1)の論理ブロックを、論理ユニット番号LUNと論理ブロックアドレスLBAt(LBA=LBAt=t)とによって認識(指定)する。論理ユニット番号LUN(例えば0)は論理ユニットLUを示す識別子として用いられ、論理ブロックアドレスLBAtは論理ユニット(より詳細には、論理ユニット番号LUNによって示される論理ユニットLU)内のt番目の論理ブロックを示すアドレスとして用いられる。
論理ユニットLU内のt番目の論理ブロック(つまり、論理ブロックアドレスがLBAt=tの論理ブロック)は、t/nの商をv(v=0,1,…,u−1)、剰余をw(w=0,1,…,n−1)と表記するならば、LBv_w(論理ブロックLBv_w)のように表される。LBv_wは、論理ユニットLU内のv番目の論理エクステントにおけるw番目の論理ブロックを示す。明らかなように、tはv×n+w=(v+1)×n−(n−w)に一致する。本実施形態においてIO管理部1353は、論理ブロックアドレスLBAt(=t)をnで除することにより、当該論理ブロックアドレスLBAtで指定される論理ブロック(LBv_w)が属する論理エクステントLEv、及び当該論理ブロックの論理エクステントLEv内の相対位置wを特定する。
図5は、図2に示されるアドレス変換テーブル1331のデータ構造例を示す。アドレス変換テーブル1331は、例えば、構成管理部1351が提供する全ての論理ユニット内の全ての論理ブロックに対応付けられたエントリの群を有している。アドレス変換テーブル1331の各エントリは、論理ユニット番号(LUN)フィールド、論理ブロックアドレス(LBA)フィールド、論理エクステント番号(LEN)フィールド、物理エクステント番号(PEN)フィールド及びオフセットフィールドを有している。
LUNフィールドは、対応する論理ブロックを含む論理ユニットを示す論理ユニット番号を保持するのに用いられる。LBAフィールドは、対応する論理ブロックのアドレス(論理ブロックアドレス)を保持するのに用いられる。
LENフィールドは、対応する論理ブロックを含む論理エクステントを識別するための識別子としての論理エクステント番号を保持するのに用いられる。論理エクステント番号は、構成管理部1351によって提供される全ての論理ユニットが属する論理記憶領域全体(論理アドレス空間)においてユニークである。論理エクステント番号は、論理ユニット番号と内部論理エクステント番号との結合から構成される。内部論理エクステント番号は、対応する論理ブロックを含む論理ユニットにおいてユニークであり、当該論理ユニットにおいて当該対応する論理ブロックを含む論理エクステントを識別するための識別子である。
PENフィールドは、物理エクステント番号を保持するのに用いられる。この物理エクステント番号は、対応する論理ブロックを含む論理エクステントに割り当てられる物理エクステント(つまり、対応する論理ブロックに割り当てられる物理ブロックを含む物理エクステント)を示す。オフセットフィールドは、オフセット(オフセットデータ)を保持するのに用いられる。このオフセットは、対応する論理ブロックに割り当てられる物理ブロックの、当該物理ブロックを含む物理エクステントにおける相対位置を示す。
図6は、図2に示されるエクステント管理テーブル1332のデータ構造例を示す。エクステント管理テーブル1332は、例えば、構成管理部1351が提供する全ての論理ユニット内の全ての論理エクステントに対応付けられたエントリの群を有している。エクステント管理テーブル1332の各エントリは、論理エクステント番号(LEN)フィールド、エクステントグループ番号(EGN)フィールド、前方リンクエクステント(PLE)フィールド、後方リンクエクステント(SLE)フィールド、アクセスカウント(AC)フィールド及び最終アクセス時刻(LAT)フィールドを有している。
LENフィールドは、対応する論理エクステントを示す論理エクステント番号を保持するのに用いられる。EGNフィールドは、対応する論理エクステントが属するエクステントグループを識別するための識別子としてのエクステントグループ番号を保持するのに用いられる。図6に示されるエクステント管理テーブル1332の例では、全てのエントリのEGNフィールドに値0が設定されている。EGNフィールドにおける値0は初期値であり、対応する論理エクステントがエクステントグループに属していないことを示す。そのため本実施形態では、エクステントグループ番号0の使用は禁止されているものとする。しかし、EGNフィールドの初期値は0に限るものではなく、使用可能なエクステントグループ番号以外の特定値であれば良い。
PLEフィールド及びSLEフィールドは、それぞれ、前方リンクエクステントの論理エクステント番号及び後方リンクエクステントの論理エクステント番号をそれぞれ保持するのに用いられる。前方リンクエクステントとは、アクセス順に関し、対応する論理エクステントに先行する直近の論理エクステントを指す。後方リンクエクステントとは、アクセス順に関し、対応する論理エクステントに後続する直近の論理エクステントを指す。
図6に示されるエクステント管理テーブル1332の例では、全てのエントリのPLEフィールド及びSLEフィールドに、値0が設定されている。PLEフィールド及びSLEフィールドにおける値0は初期値であり、アクセス順に関し、それぞれ対応する論理エクステントに先行論理エクステント及び後続する論理エクステントが存在しないことを示す。そこで本実施形態では、論理エクステント番号0の使用は禁止されているものとする。なお、PLEフィールド及びSLEフィールドの初期値は0に限るものではなく使用可能な論理エクステント番号以外の特定値であれば良い。
PLEフィールドに、初期値及び論理エクステント番号以外の特定値、例えば−1が設定されている場合、当該特定値(−1)は、アクセス順に関し、対応する論理エクステントに先行する論理エクステントが存在しないことを示す。同様に、SLEフィールドに、−1が設定されている場合、当該特定値(−1)は、アクセス順に関し、対応する論理エクステントに後続する論理エクステントが存在しないことを示す。なお、PLEフィールド及びSLEフィールドに、初期値及び論理エクステント番号以外のそれぞれ異なる特定値(例えば−1及び−2)が設定されても構わない。
ACフィールドは、対応する論理エクステントがアクセスされた回数(アクセス頻度)を示すアクセスカウントを保持するのに用いられる。LATフィールドは、対応する論理エクステントが最後にアクセスされた時刻(日時)を示す最終アクセス時刻データを保持するのに用いられる。
エクステント管理テーブル1332のそれぞれのエントリは次のように初期設定される。まず、それぞれのエントリに対応付けられた論理エクステントの論理エクステント番号が、当該それぞれのエントリのLENフィールドに設定される。それぞれのエントリの他の各フィールドには、例えば0が設定される。図6は、初期化されたエクステント管理テーブル1332を示す。
図7は、図2に示される結合管理テーブル1333のデータ構造例を示す。結合管理テーブル1333は、行列の構造を有している。即ち、結合管理テーブル1333は、複数の行項目及び複数の列項目を有している。複数の行項目には、それぞれ固有の論理エクステント番号が設定される。複数の列項目には、それぞれ固有の論理エクステント番号が設定される。行項目の数は列項目の数に一致する。また、本実施形態では、全行項目における論理エクステント番号の並び順は、全列項目における論理エクステント番号の並び順に一致する。
図7において、A,B,C,D及びEは、それぞれ論理エクステントA,B,C,D及びEの論理エクステント番号を示す。ここで、行列における第x行(x=1,2,…)及び第y行(y=1,2,…,但しy≠x)が、それぞれエクステント番号X(X=A,B,C,D,E,…)及びY(Y=A,B,C,D,E,…,但しY≠X)に対応し、したがって行列における第x列及び第y列も、それぞれエクステント番号X及びYに対応しているものとする。エクステント番号X及びYで示される論理エクステントを、それぞれ論理エクステントX及びYと表記する。
行列における第x行、第y列の位置(x,y)、つまり結合管理テーブル1333における第x行、第y列のエントリ(x,y)は、例えば、論理エクステントYが論理エクステントXに先行または後続してアクセスされた回数を保持するのに用いられる。同様に、行列における第y行、第x列の位置(y,x)、つまり結合管理テーブル1333における第y行、第x列のエントリ(y,x)は、例えば、論理エクステントXが論理エクステントYに先行または後続してアクセスされた回数を保持するのに用いられる。
エントリ(x,y)及び(y,x)に保持される回数は一致する。この回数は、論理エクステントX及びYが、その順、または、その逆順に続けてアクセスされる度合いを示す。この度合い(回数)は、連続するアクセスに関する論理エクステントX及びYの関連性(つまり、結合)の強さを示す。そこで、この回数を結合度と称する。エントリ(x,y)及び(y,x)内の結合度は、論理エクステントXに続いて論理エクステントYがアクセスされる場合、或いは論理エクステントYに続いて論理エクステントXがアクセスされる場合、グループ管理部1354によって1インクリメントされる。
結合管理テーブル1333のエントリ(x,y)及び(y,x)の初期値(つまり初期結合度)は、例えば0である。図7に示される結合管理テーブル1333において、空欄のエントリは、結合度0が設定されたエントリを示す。必要ならば、結合管理テーブル1333における空欄のエントリに数値0を加えられたい。
本実施形態では、結合管理テーブル1333は行列の構造を有している。しかし、結合管理テーブル1333が、結合関係を有する全ての論理エクステントの組み合わせに対応付けられた結合度の配列(つまり、リスト構造)を有していても構わない。
次に、本実施形態の動作について、アクセス処理を例に図8を参照して説明する。図8はアクセス処理の典型的な手順を示すフローチャートである。まず、ホスト20から階層化ストレージシステム10のストレージコントローラ13に、ホストインタフェースバス30を介してアクセス要求が発行されたものとする。
ストレージコントローラ13のHIFコントローラ131は、ホスト20によって発行されたアクセス要求をホストインタフェースバス30から受領する。アクセス要求は、論理ユニット番号LUN、論理ブロックアドレスLBAt及びデータ転送サイズを含む。データ転送サイズは、転送(アクセス)されるべき論理ブロックの数を示す。データ転送サイズが例えばNである場合、アクセス要求は、論理ブロックアドレスLBAtから始まる連続するN論理ブロックの範囲へのアクセスを指定する。
ストレージコントローラ13のIO管理部1353は、受領されたアクセス要求によって指定される論理ブロック範囲に対応する論理エクステント範囲を、次のように特定する(ステップS1)。まず、IO管理部1353は、アドレス変換テーブル1331において、指定論理ブロック範囲内のそれぞれの論理ブロックを示す論理ユニット番号及び論理ブロックアドレスの組に対応付けられたエントリを参照する。そしてIO管理部1353は、指定論理ブロック範囲内のそれぞれの論理ブロックに対応付けられた論理エクステント番号によって示される論理エクステントを特定する。これによりIO管理部1353は、指定論理ブロック範囲に対応する論理エクステント範囲を特定する。特定された論理エクステント範囲は、ホスト20からのアクセス要求で指定された論理ブロック範囲に対応することから、ホスト20からのアクセス要求で(間接的に)指定されたと称することもできる。
論理エクステント範囲が特定されると(ステップS1)、グループ管理部1354が起動される。グループ管理部1354は、エクステント管理テーブル1332及び結合管理テーブル1333を、特定された論理エクステント範囲に基づいて更新するためのテーブル更新処理を、IO管理部1353と協同して実行する(ステップS2)。
以下、テーブル更新処理(ステップS2)の詳細について、図9を参照して説明する。図9はテーブル更新処理の典型的な手順を示すフローチャートである。まずグループ管理部1354は、メモリ133内の特定領域を参照する(ステップS21)。この特定領域は、後述するように、図8のフローチャートで示されるアクセス処理で最後に処理された論理エクステントの論理エクステント番号を格納するのに用いられる。
次にグループ管理部1354は、メモリ133内の特定領域に、有効な論理エクステント番号が格納されているかを判定する(ステップS22)。もし、有効な論理エクステント番号が格納されていないならば(ステップS22のNo)、グループ管理部1354は、今回のアクセス処理が、エクステント管理テーブル1332及び結合管理テーブル1333の初期化後に最初に実行されるアクセス処理であると判断する。この場合、グループ管理部1354は、特定された論理エクステント範囲内の先頭の論理エクステントをLE1(論理エクステントLE1)として選択する(ステップS23)。そしてグループ管理部1354は、第1のテーブル更新処理を実行して(ステップS24)、図9のフローチャートに従うテーブル更新処理を終了する。
これに対し、特定領域に、有効な論理エクステント番号(LENz)が格納されているならば(ステップS22のYes)、グループ管理部1354は、今回のアクセス処理に先行するアクセス処理が既に実行されており、LENzは、当該先行するアクセス処理において最後に処理(アクセス)された論理エクステントを示している判断する。この場合、グループ管理部1354は、LENzによって示される論理エクステントをLE1として選択する(ステップS25)。またグループ管理部1354は、特定された論理エクステント範囲内の先頭の論理エクステントをLE2(論理エクステントLE2)として選択する(ステップS26)。そしてグループ管理部1354は、第2のテーブル更新処理を実行して(ステップS27)、図9のフローチャートに従うテーブル更新処理を終了する。
以下、第1のテーブル更新処理(ステップS24)の詳細について、図10を参照して説明する。図10は第1のテーブル更新処理の典型的な手順を示すフローチャートである。なお、図9のステップS23が、第1のテーブル更新処理の先頭で実行されても良い。
まずグループ管理部1354は、特定された論理エクステント範囲内に、現在の論理エクステントLE1(つまり、図9のステップS23で選択された論理エクステント)の次の論理エクステントが存在するかを判定する(ステップS31)。もし、特定された論理エクステント範囲が、複数の論理エクステントを含む場合、次の論理エクステントは存在する(ステップS31のYes)。この場合、グループ管理部1354は、次の論理エクステントを、LE2として選択する(ステップS32)。ここで、LE1及びLE2の論理エクステント番号(LEN)を、それぞれLEN_LE1及びLEN_LE2と表記する。また、LE1及びLE2に対応付けられたエクステント管理テーブル1332のエントリを、それぞれ、エントリEMTE_LE1及びEMTE_LE2と表記する。
次にグループ管理部1354は、エントリEMTE_LE1のEGNフィールド、PLEフィールド及びSLEフィールドの内容(初期値0)を、それぞれ、先頭のEGN(=1)、−1及びLEN_LE2に変更する。(ステップS33)。なお、先頭のEGN以外のEGNが用いられても構わない。一方、IO管理部1353は、エントリEMTE_LE1のACフィールド及びLATフィールドの内容を更新する(ステップS34)。即ちIO管理部1353は、ACフィールドの内容(初期値0)を1インクリメントし、LATフィールドの内容(初期値0)を現在時刻を示すように更新する。
次にグループ管理部1354は、エントリEMTE_LE2のEGNフィールド、PLEフィールド及びSLEフィールドの内容(初期値0)を、それぞれ、先頭EGN(=1)、LEN_LE1及び−1に変更する(ステップS35)。グループ管理部1354はまた、エントリEMTE_LE2のACフィールド及びLATフィールドの内容を更新する(ステップS36)。グループ管理部1354は更に、LE1及びLE2の組み合わせに対応付けられた結合管理テーブル1333のエントリの内容(結合度)を1インクリメントする(ステップS37)。
次にグループ管理部1354は、特定された論理エクステント範囲内に次の論理エクステント(つまり、現在のLE2の次の論理エクステント)が存在するかを判定する(ステップS38)。もし、次の論理エクステントが存在しないならば(ステップS38のNo)、グループ管理部1354は、図10のフローチャートに従う第1のテーブル更新処理(図9のステップS24)を終了する。つまりグループ管理部1354は、図9のフローチャートに従うテーブル更新処理(図8のステップS2)を終了する。
これに対して、次の論理エクステントが存在するならば(ステップS38のYes)、グループ管理部1354は現在のLE2を新たなLE1として選択する(ステップS39)。またグループ管理部1354は、特定された論理エクステント範囲内の次の論理エクステント(つまり、新たなLE1の次の論理エクステント)を新たなLE2として選択する(ステップS40)。
次にグループ管理部1354は、新たなLE1に対応付けられたエントリEMTE_LE1(つまり、前回のLE2に対応付けられたエントリEMTE_LE2)のSLEフィールドの内容を、−1からLEN_LE2に変更する(ステップS41)。そしてグループ管理部1354はステップS35に戻る。
一方、ステップS31において、次の論理エクステントが存在しないと判定されたものとする。つまり、特定された論理エクステント範囲が単一の論理エクステントのみを含むものとする。この場合(ステップS31のNo)、グループ管理部1354は、エントリEMTE_LE1のEGNフィールド、PLEフィールド及びSLEフィールドの内容を、それぞれ、先頭のEGN(=1)、−1及び−1に変更する(ステップS42)。一方、IO管理部1353は、ステップS34と同様に、エントリEMTE_LE1のACフィールド及びLATフィールドの内容を更新する(ステップS43)。その後、グループ管理部1354は、図10のフローチャートに従う第1のテーブル更新処理(図9のステップS24)を終了する。
次に、第2のテーブル更新処理(図9のステップS27)の詳細について、図11を参照して説明する。図11は第2のテーブル更新処理の典型的な手順を示すフローチャートである。なお、図9のステップS25及びS26が、第2のテーブル更新処理の先頭で実行されても良い。
まずグループ管理部1354は、現在のLE1及びLE2に対応付けられたエントリEMTE_LE1及びEMTE_LE2から、エントリEMTE_LE1のSLEフィールドの内容LEN_SLE(LE1)とエントリEMTE_LE2のPLEフィールドの内容LEN_PLE(LE2)とを取得する(ステップS51)。次にグループ管理部1354は、エントリEMTE_LE1のSLEフィールドの内容を、LEN_LE2に変更する(ステップS52)。
次にグループ管理部1354は、エントリEMTE_LE2のEGNフィールド及びSLEフィールドの内容に応じて、当該内容を変更する(ステップS53)。以下、ステップS53について詳細に説明する。
ステップS53においてグループ管理部1354は、エントリEMTE_LE2のEGNフィールドの内容が、LE1が属するエクステントグループ(EGα)を示すEGN_LE1(=EGNα)とは異なるかを判定する。もし、異なるならば、グループ管理部1354は、EGNフィールドの内容をEGNαに変更する。またステップS53においてグループ管理部1354は、エントリEMTE_LE2のSLEフィールドの内容が初期値0であるならば、当該SLEフィールドの内容を−1に変更する。
ここで、エントリEMTE_LE2のEGNフィールドの内容がEGNαとは異なるものの、初期値0以外であるものとする。つまり、LE2がEGαとは異なるエクステントグループEGβに属しているものとする。この場合、グループ管理部1354は、エントリEMTE_LE2のSLEフィールドの内容が初期値0(及び−1)以外の値、つまりEGβに属する論理エクステントLEγの論理エクステント番号であったとしても、当該SLEフィールドの内容を−1に変更する。そしてグループ管理部1354は、LE2及びLEγの結合を解消するために、LE2及びLEγの組み合わせに対応付けられた結合管理テーブル1333のエントリの内容(結合度)を、初期値0に変更する。
グループ管理部1354は、上述のステップS53を実行するとステップS54に進む。ステップS54においてグループ管理部1354は、エントリEMTE_LE2のPLEフィールドの内容を、LEN_LE1に変更する。一方、IO管理部1353は、エントリEMTE_LE2のACフィールド及びLATフィールドの内容を、ステップS34と同様に更新する(ステップS55)。
すると、グループ管理部1354は、LE1及びLE2の組み合わせに対応する結合度を1インクリメントする(ステップS56)。次にグループ管理部1354は、取得されたLEN_SLE(LE1)がLEN_LE2とは異なっており、且つ−1以外(より詳細には−1及び0以外)であるかを判定する(ステップS57)。ここで、LEN_SLE(LE1)によって示される論理エクステントをLEsと表記する。
もし、ステップS57の判定がYesであるならば、グループ管理部1354は、LE1にLE2を結合させるには、LEs及びLE1の結合を解消する必要があると判断する。そこでグループ管理部1354は、LEsをLE1との結合から切り離す(ステップS58)。即ちグループ管理部1354は、LEs及びLE1の組み合わせに対応する結合度を0に変更(設定)し、且つ、エントリEMTE_LEsのPLEフィールドの内容を−1に変更する。そしてグループ管理部1354は、ステップS59に進む。これに対し、ステップS57の判定がNoであるならば、グループ管理部1354はステップS58をスキップしてステップS59に進む。
ステップS59においてグループ管理部1354は、取得されたLEN_PLE(LE2)がLEN_LE1とは異なっており、且つ−1以外(より詳細には−1及び0以外)であるかを判定する。ここで、LEN_PLE(LE2)によって示される論理エクステントをLEpと表記する。
もし、ステップS59の判定がYesであるならば、グループ管理部1354は、LE1にLE2を結合させるには、LEp及びLE2の結合を解消する必要があると判断する。そこでグループ管理部1354は、LEpをLE2との結合から切り離す(ステップS60)。即ちグループ管理部1354は、LEp及びLE2の組み合わせに対応する結合度を0に変更し、且つ、エントリEMTE_LEpのSLEフィールドの内容を−1に変更する。
次にグループ管理部1354は、LEN_SLE(LE1)がLEN_PLE(LE2)に等しいかを判定する(ステップS61)。図11のフローチャートでは、ステップS61は、ステップS59の判定がYesであれば、ステップS57の判定の結果に無関係に実行される。しかし、ステップS60が、ステップS57及びS59の判定がいずれもYesの場合に実行されても構わない。
LEN_SLE(LE1)がLEN_PLE(LE2)に等しい場合(ステップS61のYes)、グループ管理部1354はLEs及びLEpが同一の論理エクステントであり、当該LEs(=LEp)は、LE1及びLE2が属しているエクステントグループから切り離されるべきであると判断する。この場合、グループ管理部1354は、エントリEMTE_LEs(=LEp)のEGNフィールドの内容を、新たなエクステントグループを示すEGNに変更する(ステップS62)。
次にグループ管理部1354は、特定された論理エクステント範囲内に次の論理エクステント(つまり、現在のLE2の次の論理エクステント)が存在するかを判定する(ステップS63)。もし、次の論理エクステントが存在しないならば(ステップS63のNo)、グループ管理部1354は、図11のフローチャートに従う第2のテーブル更新処理(図9のステップS27)を終了する。つまりグループ管理部1354は、図9のフローチャートに従うテーブル更新処理(図8のステップS2)を終了する。
これに対して、次の論理エクステントが存在するならば(ステップS63のYes)、グループ管理部1354は現在のLE2を新たなLE1として選択する(ステップS64)。またグループ管理部1354は、特定された論理エクステント範囲内の次の論理エクステントを新たなLE2として選択する(ステップS65)。そしてグループ管理部1354はステップS51に戻る。
次に、上述のテーブル更新処理の具体例について、第1の場合を例に、図6及び図7に加えて、図12及び図13を参照して説明する。第1の場合とは、ホスト20からの第1のアクセス要求に応じてテーブル更新処理(図8のステップS2)が実行される場合を指す。このとき、エクステント管理テーブル1332及び結合管理テーブル1333は、それぞれ図6及び図7に示される初期状態にあるものとする。図12及び図13は、第1のアクセス要求に応じてテーブル更新処理が実行された後のエクステント管理テーブル1332及び結合管理テーブル1333の例を示す。
まず、第1のアクセス要求に基づいて特定される論理エクステント範囲が、論理エクステントA及びBの2つの論理エクステントにまたがる範囲であり、論理エクステントBが論理エクステントAに後続するものとする。この場合、グループ管理部1354は、論理エクステントAをLE1として選択する(図9のステップS23)。そしてグループ管理部1354は、第1のテーブル更新処理(図9のステップS24)を、図10のフローチャートに従って、IO管理部1353と協同して次のように実行する。
まずグループ管理部1354は、論理エクステントAに後続する論理エクステントBをLE2として選択する(ステップS31及びS32)。次にグループ管理部1354は、論理エクステントA(=LE1)に対応付けられたエントリEMTE_AのEGNフィールド、PLEフィールド及びSLEフィールドの内容を、図6に示される0、0及び0から図12に示される1(先頭EGN)、−1及びBに、それぞれ変更する(ステップS33)。先頭EGNは、グループ管理部1354によって決定される。一方、IO管理部1353は、エントリEMTE_AのACカウントフィールドの内容を、図6に示される0から図12に示される1に1だけインクリメントし、且つ当該エントリEMTE_AのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS34)。
すると、グループ管理部1354は、論理エクステントB(=LE2)に対応付けられたエントリEMTE_BのEGNフィールド、PLEフィールド及びSLEフィールドの内容を、図6に示される0、0及び0から図12に示される1(先頭EGN)、A及び−1に、それぞれ変更する(ステップS35)。一方、IO管理部1353は、エントリEMTE_BのACカウントフィールドの内容を、図6に示される0から図12に示される1に1だけインクリメントし、且つ当該エントリEMTE_BのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS36)。
すると、グループ管理部1354は、論理エクステントA及びBに対応付けられた結合管理テーブル1333のエントリ(A,B)及び(B,A)中の結合度を、図7に示される0(空欄によって示される0)から図13に示される1に1だけインクリメントする(ステップS37)。グループ管理部1354は、上述のテーブル更新処理を含むアクセス処理の最後で、最後に処理された論理エクステントB(つまり、第1のアクセス要求に基づいて特定される論理エクステント範囲の最後の論理エクステントB)の論理エクステント番号Bを、有効な論理エクステント番号LENzとして、メモリ133の特定領域に格納する(図8のステップS18)。
次に、上述のテーブル更新処理の具体例について、第2の場合を例に、図12及び図13に加えて、図14及び図15を参照して説明する。第2の場合とは、第1のアクセス要求の次に発行されたホスト20からの第2のアクセス要求に応じてテーブル更新処理(図8のステップS2)が実行される場合を指す。このとき、エクステント管理テーブル1332及び結合管理テーブル1333は、それぞれ図12及び図13に示される状態にある。図14及び図15は、第2のアクセス要求に応じてテーブル更新処理が実行された後のエクステント管理テーブル1332及び結合管理テーブル1333の例を示す。
ここで、第2のアクセス要求に基づいて特定される論理エクステント範囲が、論理エクステントC及びDの2つの論理エクステントにまたがる範囲であり、論理エクステントDが論理エクステントCに後続するものとする。このとき、メモリ133の特定領域には、論理エクステントBの論理エクステント番号Bが格納されている。論理エクステントBは、第1のアクセス要求に基づいて特定された論理エクステント範囲の最後の論理エクステントである。明らかなように、論理エクステントBはアクセス順に関し、論理エクステントCに先行する論理エクステントであり、論理エクステントCはアクセス順に関し、論理エクステントBに後続する論理エクステントである。つまり、論理エクステントB及びCは、アクセス順に関して連続している。
この場合、グループ管理部1354は、論理エクステントB及びCをそれぞれLE1及びLE2として選択する(図9のステップS25及びS26)。するとグループ管理部1354は、第2のテーブル更新処理(図9のステップS27)を、図11のフローチャートに従って、IO管理部1353と協同して次のように実行する。
グループ管理部1354は、論理エクステントB(=LE1)に対応付けられたエクステント管理テーブル1332のエントリEMTE_BのSLEフィールドの内容を、図12に示される−1から図14に示されるCに変更する(ステップS52)。また、グループ管理部1354は、論理エクステントC(=LE2)に対応付けられたエクステント管理テーブル1332のエントリEMTE_CのEGNフィールド及びSLEフィールドの内容を、図12に示される0及び0から図14に示される1(つまり、先行する論理エクステントBが属するエクステントグループのEGN)及び−1に、それぞれ変更する(ステップS53)。
グループ管理部1354は更に、エントリEMTE_CのPLEフィールドの内容を、図12に示される0から図14に示されるBに変更する(ステップS54)。一方、IO管理部1353は、エントリEMTE_CのACカウントフィールドの内容を、図12に示される0から図14に示される1に1だけインクリメントし、且つ当該エントリEMTE_CのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS55)。すると、グループ管理部1354は、論理エクステントB及びCに対応付けられた結合管理テーブル1333のエントリ(B,C)及び(C,B)中の結合度を、図13に示される0(空欄によって示される0)から図15に示される1に1だけインクリメントする(ステップS56)。
その後、グループ管理部1354は、論理エクステントC及びDをそれぞれLE1及びLE2として選択する(図11のステップS64及びS65)。そしてグループ管理部1354は、エントリEMTE_CのSLEフィールドの内容を、図14に示されるように−1からDに変更する(ステップS52)。また、グループ管理部1354は、論理エクステントDに対応付けられたエクステント管理テーブル1332のエントリEMTE_DのEGNフィールド及びSLEフィールドの内容を、図12に示される0及び0から図14に示される1(つまり、先行する論理エクステントCが属するエクステントグループのEGN)及び−1に、それぞれ変更する(ステップS53)。
グループ管理部1354は更に、エントリEMTE_DのPLEフィールドの内容を、図12に示される0から図14に示されるCに変更する(ステップS54)。一方、IO管理部1353は、エントリEMTE_DのACカウントフィールドの内容を、図12に示される0から図14に示される1に1だけインクリメントし、且つ当該エントリEMTE_DのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS55)。
すると、グループ管理部1354は、論理エクステントC及びDに対応付けられた結合管理テーブル1333のエントリ(C,D)及び(D,C)中の結合度を、図13に示される0(空欄によって示される0)から図15に示される1に1だけインクリメントする(ステップS56)。グループ管理部1354は、上述のテーブル更新処理を含むアクセス処理の最後で、最後に処理された論理エクステントDの論理エクステント番号Dを、メモリ133の特定領域に格納する(図8のステップS18)。
次に、上述のテーブル更新処理の具体例について、第3の場合を例に、図14及び図15に加えて、図16及び図17を参照して説明する。第3の場合とは、第2のアクセス要求の次に発行されたホスト20からの第3のアクセス要求に応じてテーブル更新処理(図8のステップS2)が実行される場合を指す。このとき、エクステント管理テーブル1332及び結合管理テーブル1333は、それぞれ図14及び図15に示される状態にある。図16及び図17は、第3のアクセス要求に基づくテーブル更新処理が実行された後のエクステント管理テーブル1332及び結合管理テーブル1333の例を示す。
ここで、第3のアクセス要求に基づいて特定される論理エクステント範囲が、論理エクステントA及びBの2つの論理エクステントにまたがる範囲であるものとする。このとき、メモリ133の特定領域には、論理エクステントDの論理エクステント番号Dが格納されている。論理エクステントDは、第2のアクセス要求に基づいて特定された論理エクステント範囲の最後の論理エクステントである。明らかなように、論理エクステントD及びAは、アクセス順に関して連続している。
この場合、グループ管理部1354は、論理エクステントD及びAをそれぞれLE1及びLE2として選択する(図9のステップS25及びS26)。するとグループ管理部1354は、第2のテーブル更新処理(図9のステップS27)を、図11のフローチャートに従って、IO管理部1353と協同して次のように実行する。
グループ管理部1354は、論理エクステントD(=LE1)に対応付けられたエクステント管理テーブル1332のエントリEMTE_DのSLEフィールドの内容を、図14に示される−1から図16に示されるAに変更する(ステップS52)。このとき、グループ管理部1354は、論理エクステントA(=LE2)に対応付けられたエクステント管理テーブル1332のエントリEMTE_AのEGNフィールド及びSLEフィールドの内容(1及びB)を変更しない(ステップS53)。
グループ管理部1354は更に、エントリEMTE_AのPLEフィールドの内容を、図14に示される−1から図16に示されるDに変更する(ステップS54)。一方、IO管理部1353は、エントリEMTE_AのACカウントフィールドの内容を、図14に示される1から図16に示される2に1だけインクリメントし、且つ当該エントリEMTE_AのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS55)。すると、グループ管理部1354は、論理エクステントD及びAに対応付けられた結合管理テーブル1333のエントリ(D,A)及び(A,D)中の結合度を、図15に示される0(空欄によって示される0)から図17に示される1に1だけインクリメントする(ステップS56)。
その後、グループ管理部1354は、論理エクステントA及びBをそれぞれLE1及びLE2として選択する(ステップS64及びS65)。次にグループ管理部1354は、論理エクステントA(=LE1)及びB(=LE2)に対応付けられたエントリEMTE_A及びEMTE_Bから、エントリEMTE_AのSLEフィールドの内容LEN_SLE(A)とエントリEMTE_BのPLEフィールドの内容LEN_PLE(B)とを取得する(ステップS51)。取得されたLEN_SLE(A)及びLEN_PLE(B)は、図14に示されるように、それぞれB及びAである。つまり論理エクステントB及びAは、それぞれ、論理エクステントAの後方リンクエクステント及び論理エクステントBの前方リンクエクステントとして、既にエクステント管理テーブル1332に登録されている。このことは、論理エクステントA及びBが、既に互いに結合関係を有していることを示す。
このような場合、図11のフローチャートでは省略されているが、グループ管理部1354は、ステップS52及び54をスキップする。これによりグループ管理部1354は、エントリEMTE_AのSLEフィールド及びエントリEMTE_BのPLEフィールドの内容LEN_SLE(A)及びLEN_PLE(B)を、図16に示されるように、現在の状態(つまり、図14に示されるB及びA)に維持する。このとき、グループ管理部1354は、エントリEMTE_BのEGNフィールド及びSLEフィールドの内容(1及びC)を変更しない(ステップS53)。
なお、ステップS52及び54が実行されても構わない。その理由は、ステップS52の実行により、エントリEMTE_AのSLEフィールドにBが再設定され、且つステップS54の実行により、エントリEMTE_BのPLEフィールドにAが再設定されるためである。つまりステップS52及び54が実行されても、エントリEMTE_AのSLEフィールド及びエントリEMTE_BのPLEフィールドの内容が、それぞれB及びAに維持されるためである。
一方、IO管理部1353は、エントリEMTE_BのACカウントフィールドの内容を、図14に示される1から図16に示される2に1だけインクリメントし、且つ当該エントリEMTE_BのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS55)。すると、グループ管理部1354は、論理エクステントA及びBに対応付けられた結合管理テーブル1333のエントリ(A,B)及び(B,A)中の結合度を、図15に示される1から図17に示される2に1だけインクリメントする(ステップS56)。グループ管理部1354は、上述のテーブル更新処理を含むアクセス処理の最後で、最後に処理された論理エクステントBの論理エクステント番号Bを、メモリ133の特定領域に格納する(図8のステップS18)。
次に、上述のテーブル更新処理の具体例について、第4の場合を例に、図16及び図17に加えて、図18及び図19を参照して説明する。第4の場合とは、第3のアクセス要求の次に発行されたホスト20からの第4のアクセス要求に応じてテーブル更新処理(図8のステップS2)が実行される場合を指す。このとき、エクステント管理テーブル1332及び結合管理テーブル1333は、それぞれ図16及び図17に示される状態にある。図18及び図19は、第4のアクセス要求に基づくテーブル更新処理が実行された後のエクステント管理テーブル1332及び結合管理テーブル1333の例を示す。
ここで、第4のアクセス要求に基づいて特定される論理エクステント範囲が、論理エクステントD及びEの2つの論理エクステントにまたがる範囲であるものとする。このとき、メモリ133の特定領域には、論理エクステントBの論理エクステント番号Bが格納されている。論理エクステントBは、第3のアクセス要求に基づいて特定された論理エクステント範囲の最後の論理エクステントである。明らかなように、論理エクステントB及びDは、アクセス順に関して連続している。
この場合、グループ管理部1354は、論理エクステントB及びDをそれぞれLE1及びLE2として選択する(図9のステップS25及びS26)。するとグループ管理部1354は、第2のテーブル更新処理(図9のステップS27)を、図11のフローチャートに従って、IO管理部1353と協同して次のように実行する。
まずグループ管理部1354は、論理エクステントB(=LE1)及びD(=LE2)に対応付けられたエクステント管理テーブル1332のエントリEMTE_B及びEMTE_Dから、エントリEMTE_BのSLEフィールドの内容LEN_SLE(B)とエントリEMTE_DのPLEフィールドの内容LEN_PLE(D)とを取得する(ステップS51)。取得されたLEN_SLE(B)及びLEN_PLE(D)は、図16に示されるように、いずれもCである。つまり論理エクステントCは、論理エクステントBの後方リンクエクステント及び論理エクステントDの前方リンクエクステントとして既にエクステント管理テーブル1332に登録されている。このことは、論理エクステントB及びCが、既に互いに結合関係を有しており、論理エクステントBC及びDも、既に互いに結合関係を有していることを示す。
次にグループ管理部1354は、論理エクステントBに対応付けられたエクステント管理テーブル1332のエントリEMTE_BのSLEフィールドの内容を、図16に示されるCから図18に示されるDに変更する(ステップS52)。このとき、グループ管理部1354は、論理エクステントDに対応付けられたエクステント管理テーブル1332のエントリEMTE_DのEGNフィールド及びSLEフィールドの内容(1及びA)を変更しない(ステップS53)。
グループ管理部1354は更に、エントリEMTE_DのPLEフィールドの内容を、図16に示されるCから図18に示されるBに変更する(ステップS54)。一方、IO管理部1353は、エントリEMTE_DのACカウントフィールドの内容を、図16に示される1から図18に示される2に1だけインクリメントし、且つ当該エントリEMTE_DのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS55)。すると、グループ管理部1354は、論理エクステントB及びDに対応付けられた結合管理テーブル1333のエントリ(B,D)及び(D,B)中の結合度を、図17に示される0(空欄によって示される0)から図19に示される1に1だけインクリメントする(ステップS56)
次にグループ管理部1354は、取得されたLEN_SLE(B)がLEN_D(=D)とは異なっており、且つ−1以外であるかを判定する(ステップS57)。この例では、取得されたLEN_SLE(B)はCであり、LEN_D(=D)とは異なっており、且つ−1以外である(ステップS57のYes)。
次にグループ管理部1354は、取得されたLEN_SLE(B)がLEN_D(=D)とは異なっており、且つ−1以外であるかを判定する(ステップS57)。この例では、取得されたLEN_SLE(B)はCであり、LEN_D(=D)とは異なっており、且つ−1以外である(ステップS57のYes)。
この場合、グループ管理部1354は、論理エクステントBに論理エクステントDを結合させるには、LEN_SLE(B)で示される論理エクステントCと論理エクステントBとの結合を解消する必要があると判断する。そこでグループ管理部1354は、論理エクステントC(=LEs)を論理エクステントB(=LE1)との結合から切り離す(ステップS58)。即ちグループ管理部1354は、論理エクステントC及びBの組み合わせに対応する結合度を、図17に示される1から図19に示される0に変更し、且つ、エントリEMTE_CのPLEフィールドの内容を、図16に示されるBから図18に示される−1に変更する。
次にグループ管理部1354は、取得されたLEN_PLE(D)がLEN_B(=B)とは異なっており、且つ−1以外であるかを判定する(ステップS59)。この例では、取得されたLEN_PLE(D)はCであり、LEN_B(=B)とは異なっており、且つ−1以外である(ステップ59のYes)。
この場合、グループ管理部1354は、論理エクステントBに論理エクステントDを結合させるには、LEN_PLE(D)によって示される論理エクステントCと論理エクステントDとの結合を解消する必要があると判断する。そこでグループ管理部1354は、論理エクステントC(=LEp)を論理エクステントD(=LE2)との結合から切り離す(ステップS60)。即ちグループ管理部1354は、論理エクステントC及びDの組み合わせに対応する結合度を、図17に示される1から図19に示される0に変更し、且つ、エントリEMTE_CのSLEフィールドの内容を、図16に示されるDから図18に示される−1に変更する。
次にグループ管理部1354は、取得されたLEN_SLE(B)及びLEN_PLE(D)が等しいかを判定する(ステップS61)。この例では、取得されたLEN_SLE(B)及びLEN_PLE(D)は、いずれもCであり、等しい(ステップS61のYes)。このことは、ステップS58において論理エクステントB(=LE1)との結合関係が解消された論理エクステント(LEs)が、ステップS60において論理エクステントD(=LE2)との結合関係が解消された論理エクステント(LEp)に等しい論理エクステントCであることを示す。そこでグループ管理部1354は、論理エクステントCを、論理エクステントB及びDが属しているエクステントグループから切り離すために、エントリEMTE_CのEGNフィールドの内容を、図16に示される1から、新たなエクステントグループを示すEGN(例えば図18に示される2)に変更する(ステップS62)。
その後、グループ管理部1354は、論理エクステントD及びEをそれぞれLE1及びLE2として選択する(ステップS64及びS65)。次にグループ管理部1354は、論理エクステントD(=LE1)及びE(=LE2)に対応付けられたエントリEMTE_D及びEMTE_Eから、エントリEMTE_DのSLEフィールドの内容LEN_SLE(D)とエントリEMTE_DのPLEフィールドの内容LEN_PLE(E)とを取得する(ステップS51)。取得されたLEN_SLE(D)及びLEN_PLE(E)は、図16に示されるように、それぞれA及び0である。
次にグループ管理部1354は、エントリEMTE_DのSLEフィールドの内容を、図16に示されるAから図18に示されるEに変更する(ステップS52)。またグループ管理部1354は、エントリEMTE_EのEGNフィールド及びSLEフィールドの内容を、図16に示される0及び0から図18に示される1及び−1に変更する(ステップS53)。
グループ管理部1354は更に、エントリEMTE_EのPLEフィールドの内容を、図16に示される0から図18に示されるDに変更する(ステップS54)。一方、IO管理部1353は、エントリEMTE_EのACカウントフィールドの内容を、図16に示される0から図18に示される1に1だけインクリメントし、且つ当該エントリEMTE_EのLATフィールドの内容を、現在の時刻を示すように更新する(ステップS55)。すると、グループ管理部1354は、論理エクステントD及びEに対応付けられた結合管理テーブル1333のエントリ(D,E)及び(E,D)中の結合度を、図17に示される0(空欄によって示される0)から図19に示される1に1だけインクリメントする(ステップS56)
さて、取得されたLEN_SLE(D)は上述のようにAであり、LEN_E(=E)とは異なり、且つ−1以外である(ステップS57のYes)。この場合、グループ管理部1354は、論理エクステントDに論理エクステントEを結合させるには、LEN_SLE(D)で示される論理エクステントAと論理エクステントDとの結合を解消する必要があると判断する。そこでグループ管理部1354は、論理エクステントA(=LEs)を論理エクステントD(=LE1)との結合から切り離す(ステップS58)。即ちグループ管理部1354は、論理エクステントA及びDの組み合わせに対応する結合度を、図17に示される1から図19に示される0に変更し、且つ、エントリEMTE_AのPLEフィールドの内容を、図16に示されるDから図18に示される−1に変更する。本実施形態では、現在のLE2、つまり論理エクステントEは、特定された論理エクステント範囲の最後の論理エクステントである(ステップS63のNo)。そこでグループ管理部1354は、第2のテーブル更新処理(図9のステップS27)を終了する。即ちグループ管理部1354は、テーブル更新処理(図8のステップS2)を終了する。
さて、取得されたLEN_SLE(D)は上述のようにAであり、LEN_E(=E)とは異なり、且つ−1以外である(ステップS57のYes)。この場合、グループ管理部1354は、論理エクステントDに論理エクステントEを結合させるには、LEN_SLE(D)で示される論理エクステントAと論理エクステントDとの結合を解消する必要があると判断する。そこでグループ管理部1354は、論理エクステントA(=LEs)を論理エクステントD(=LE1)との結合から切り離す(ステップS58)。即ちグループ管理部1354は、論理エクステントA及びDの組み合わせに対応する結合度を、図17に示される1から図19に示される0に変更し、且つ、エントリEMTE_AのPLEフィールドの内容を、図16に示されるDから図18に示される−1に変更する。本実施形態では、現在のLE2、つまり論理エクステントEは、特定された論理エクステント範囲の最後の論理エクステントである(ステップS63のNo)。そこでグループ管理部1354は、第2のテーブル更新処理(図9のステップS27)を終了する。即ちグループ管理部1354は、テーブル更新処理(図8のステップS2)を終了する。
図8のフローチャートに戻る。テーブル更新処理(ステップS2)が実行されると、IO制御部1352が起動される。まずIO制御部1352は、受領されたアクセス要求で示されるアクセスを実行するために、特定された論理エクステント範囲内の論理エクステントの数を変数eとして設定する(ステップS3)。変数eは、アクセスされるべき(つまり、アクセスが未完了の)論理エクステントの数を示す。
次にIO制御部1352は、次にアクセスされるべき1つの論理エクステント(つまりターゲット論理エクステント)を、変数eで示される数の論理エクステントの中から選択する(ステップS4)。次にIO制御部1352は、ターゲット論理エクステント内のアクセスされるべき全ての論理ブロックに割り当てられた同数の物理ブロックに、次のようにアクセスする(ステップS5)。ここで、ターゲット論理エクステント内のアクセスされるべき論理ブロックの数がcであるものとする。この場合、このc個の論理ブロックに割り当てられた物理ブロックの数もcである。
まずIO制御部1352は、ターゲット論理エクステント内のアクセスされるべき全論理ブロックのうちの先頭の論理ブロックに割り当てられた物理ブロック(つまり先頭の物理ブロック)の物理エクステント番号及びオフセットの組を取得する。この物理エクステント番号及びオフセットの組は、上述の先頭の論理ブロックの論理ブロックアドレス及び論理エクステント番号に基づいて、IO制御部1352がアドレス変換テーブル1331を参照することにより取得される。
IO制御部1352は、先頭の物理ブロックの物理エクステント番号及びオフセットの組を取得することにより、先頭の物理ブロックから始まる、実際にアクセスされるべきc個の物理ブロックと、当該c個の物理ブロックを含むストレージ装置(階層)とを特定する。そしてIO制御部1352は、特定されたストレージ装置内の特定されたc個の物理ブロックに、SIFコントローラ132を介してアクセスする。なお、アクセス要求がライトアクセス要求であり、且つ当該アクセス要求で指定される論理ブロック範囲内の論理ブロックに物理ブロックが割り当てられていない場合、IO管理部1353は、例えばステップS3の実行時に、論理ブロック範囲内の論理ブロックに高速ストレージ装置11(上位階層)内の連続する同数の空き物理ブロックを割り当てる。
IO制御部1352は、特定されたc個の物理ブロックにアクセスすると(ステップS5)、HIFコントローラ131を介してホスト20に応答を返す(ステップS6)。そしてIO制御部1352は、階層化制御部1355に制御を渡す。すると階層化制御部1355は、低速ストレージ装置12(下位階層)へのアクセスであったかを判定する(ステップS7)。
もし、下位階層へのアクセスであったならば(ステップS7のYes)、ターゲット論理エクステントは近い将来アクセスされる可能性が高いことから、階層化制御部1355は、当該ターゲット論理エクステントに割り当てられた物理エクステントのデータを、アクセス性能の向上のために上位階層に移動すべきであると判断する。また、ターゲット論理エクステントがエクステントグループに属しているならば、当該エクステントグループ内の他の全ての論理エクステントも近い将来アクセスされる可能性が高いことから、階層化制御部1355は、当該他の全ての論理エクステントに割り当てられたそれぞれの物理エクステントのデータも、上位階層に移動すべきであると判断する。そこで、階層化制御部1355は、ターゲット論理エクステントに割り当てられた物理エクステントを含む1つ以上の物理エクステントをデータ移動元として決定するためのデータ移動元決定処理を実行する(ステップS8)。
以下、データ移動元決定処理(ステップS8)の詳細について、図20を参照して説明する。図20はデータ移動元決定処理の典型的な手順を示すフローチャートである。まず階層化制御部1355は、ターゲット論理エクステントに対応付けられたエクステント管理テーブル1332のエントリのEGNフィールドを参照する(ステップS71)。
次に階層化制御部1355は、参照されたEGNフィールドに初期値0以外の数値が設定されているかに応じて、ターゲット論理エクステントがエクステントグループに属しているかを判定する(ステップS72)。もし、ターゲット論理エクステントがエクステントグループに属しているならば(ステップS72のYes)、階層化制御部1355はステップS73に進む。ステップS73において階層化制御部1355は、ターゲット論理エクステントが属しているエクステントグループ内の全論理エクステントに割り当てられた物理エクステントの集合を特定する。また、ステップS73において階層化制御部1355は、特定された物理エクステントの集合に含まれている、下位階層内の全物理エクステントを、データ移動元として決定する。決定されたデータ移動元は、ターゲット論理エクステントが割り当てられた物理エクステントを含む。そして階層化制御部1355は、データ移動元決定処理を終了する。
一方、ターゲット論理エクステントがエクステントグループに属していないならば(ステップS72のNo)、階層化制御部1355は、当該ターゲット論理エクステントに割り当てられた物理エクステントのみを、データ移動元として決定する(ステップS74)。そして階層化制御部1355は、データ移動元決定処理を終了する。
図8に戻って、アクセス処理について更に説明する。階層化制御部1355は、図20のフローチャートに従ってデータ移動元決定処理(ステップS8)を実行すると、ステップS9に進む。ステップS9において階層化制御部1355は、データ移動元として決定された物理エクステントの数を変数qとして設定する(ステップS9)。
次に階層化制御部1355は、上位階層内の空き領域を探索する(ステップS10)。即ち階層化制御部1355は、アドレス変換テーブル1331に基づいて、上位階層(高速ストレージ装置11)に含まれていて、且つ論理エクステントに割り当てられてない物理エクステント(つまり、空き物理エクステント)を探索する。なお、空き物理エクステントリストがメモリ133(ローカルHDD134)に格納されているならば、階層化制御部1355が、上位階層内の空き物理エクステントを、当該リストから探索しても良い。但し、空き物理エクステントリストには、空き物理エクステントの物理エクステント番号の配列が保持されているものとする。
階層化制御部1355は、上位階層内の空き物理エクステントを探索すると、当該空き物理エクステントの数を変数fとして設定する(ステップS11)。ステップS11において階層化制御部1355は、変数qから変数fを差し引いて、その差分q−fを変数rとして設定する。次に階層化制御部1355は、変数r(=q−f)が正であるかを判定する(ステップS12)。
もし、変数rが正であるならば(ステップS12のYes)、即ちq>fであるならば、階層化制御部1355は、データ移動元として決定されたq個の物理エクステントのデータを上位階層に移動するのにr個の空きの物理エクステントが不足していると判断する。この場合、階層化制御部1355は、少なくともr個の新たな空きの物理エクステントを上位階層内に確保するための空き領域確保処理を実行する(ステップS13)。そして階層化制御部1355は、ステップS14に進む。
これに対して変数rが正でないならば(ステップS12のNo)、即ちq≦fであるならば、階層化制御部1355は、データ移動元として決定されたq個の物理エクステントのデータを上位階層に移動するのに十分な数の空きの物理エクステントが既に存在すると判断する。この場合、階層化制御部1355は、ステップS13をスキップしてステップS14に進む。
以下、空き領域確保処理(ステップS13)の詳細について、図21を参照して説明する。図21は空き領域確保処理の典型的な手順を示すフローチャートである。以下の説明では、論理エクステントに上位階層内の物理エクステントが割り当てられている場合、当該論理エクステントを、上位階層に対応する論理エクステントと称する。同様に、エクステントグループ内の複数の論理エクステントに上位階層内の同数の物理エクステントが割り当てられている場合、当該エクステントグループを、上位階層に対応するエクステントグループと称する。
空き領域確保処理において、まず階層化制御部1355は、上位階層に対応しており、且つエクステントグループに属していない全ての論理エクステント、及び上位階層に対応する全てのエクステントグループに関するリストを生成する(ステップS81)。生成されたリストは、エクステントグループに属していない論理エクステントに関する要素群、及びエクステントグループに関する要素群の配列を含む。
リストに含まれている、エクステントグループに属していない論理エクステントに関する各要素は、当該論理エクステントの論理エクステント番号、アクセスカウント及び最終アクセス時刻情報の組を有する。一方、リストに含まれている、エクステントグループに関する各要素は、当該エクステントグループのエクステントグループ番号、アクセスカウント及び最終アクセス時刻情報の組を有する。
本実施形態において階層化制御部1355は、エクステントグループに属する全ての論理エクステントのアクセスカウントの平均値を、当該エクステントグループのアクセスカウントとして用いる。しかし階層化制御部1355が、エクステントグループに属する全ての論理エクステントのアクセスカウントのうち、最大のアクセスカウントを、当該エクステントグループのアクセスカウントとして用いても構わない。また、本実施形態において階層化制御部1355は、エクステントグループに属する全ての論理エクステントの最終アクセス時刻のうち、最も新しい最終アクセス時刻を示す最終アクセス時刻情報を、当該エクステントグループの最終アクセス時刻情報として用いる。
上述のリストの生成において階層化制御部1355は、エクステントグループに属していない論理エクステント、及びエクステントグループを、エクステント管理テーブル1332に基づいて特定する。また階層化制御部1355は、特定された論理エクステントが上位階層に対応するかを、当該論理エクステントの論理エクステント番号に基づいてアドレス変換テーブル1331を参照することにより判定する。つまり階層化制御部1355は、特定された論理エクステントに割り当てられた物理エクステントの物理エクステント番号に基づいて、当該特定された論理エクステントが上位階層に対応するかを判定する。同様に階層化制御部1355は、特定されたエクステントグループが上位階層に対応するかを、当該特定されたエクステントグループ内の論理エクステントの論理エクステント番号に基づいてアドレス変換テーブル1331を参照することにより判定する。つまり階層化制御部1355は、特定されたエクステントグループ内の論理エクステントに割り当てられた物理エクステントの物理エクステント番号に基づいて、当該特定されたエクステントグループ内の論理エクステントが上位階層に対応するかを判定し、この判定結果に基づいて。当該特定されたエクステントグループが上位階層に対応するかを判定する。
階層化制御部1355は、上述のリストを生成すると、当該リスト内の全要素を、それぞれの要素のアクセスカウント(より詳細には、アクセスカウント及び最終アクセス時刻)に基づいて(例えば、アクセスカウントの昇順に)ソートする(ステップS82)。このソートにおいて、アクセスカウントが同一の複数の要素が存在する場合、階層化制御部1355は、最終アクセス時刻が古い要素ほど低い順位に位置付ける。但し、説明の簡略化のために、或る要素の順位が別の要素の順位よりも高い(低い)場合、当該或る要素のアクセスカウントは当該別の要素のアクセスカウントよりも大きい(小さい)ものとする。また、アクセスカウントが最小の要素の順位は最下位として扱われる。
次に階層化制御部1355は、生成されたリスト内の要素の数を変数xの初期値として設定する(ステップS83)。変数xは、生成されたリスト内の要素(より詳細には、ソート後の要素)の位置(つまり順位)を示すポインタとして用いられる。そこで、以下の説明では、変数xをポインタxと称する。ステップS83において階層化制御部1355は、変数yを初期値0に設定する。変数yは、空き領域確保処理において上位階層から下位階層にデータが移動された物理エクステントの数、つまり上位階層内に新たに確保された空き物理エクステントの数を示す。
次に階層化制御部1355は、ポインタxで指定されるリスト内の要素(つまり順位が第x位の要素)が、エクステントグループであるかを判定する(ステップS84)。もし、第x位の要素がエクステントグループであるならば(ステップS84のYes)、階層化制御部1355は、当該第x位のエクステントグループ内の全論理エクステントに割り当てられた同数の物理エクステント内のデータを、上位階層(高速ストレージ装置11)から下位階層(低速ストレージ装置12)内の空き領域に移動する(ステップS85)。このデータの移動により、階層化制御部1355は、第x位のエクステントグループ内の全論理エクステントに割り当てられた上位階層内の同数の物理エクステントを、空き物理エクステント(空き領域)として新たに確保することができる。
次に階層化制御部1355は、変数yを、今回のステップS84の実行によってデータが移動された物理エクステントの数だけインクリメントする(ステップS86)。そして階層化制御部1355は、ステップS89に進む。
これに対し、第x位の要素がエクステントグループでないならば(ステップS84のNo)、つまり第x位の要素が論理エクステントであるならば、階層化制御部1355は、当該第x位の論理エクステントに割り当てられた物理エクステント内のデータを、上位階層から下位階層内の空き領域に移動する(ステップS87)。このデータの移動により、階層化制御部1355は、第x位の論理エクステントに割り当てられた上位階層内の物理エクステントを、空き物理エクステントとして確保することができる。次に階層化制御部1355は、変数yを1だけインクリメントして(ステップS88)、ステップS89に進む。
ステップS89において階層化制御部1355は、ステップS85またはS87におけるデータの移動が反映されるように、アドレス変換テーブル1331を更新する。即ち、ステップS85の実行に応じてステップS89が実行される場合、階層化制御部1355は、第x位のエクステントグループ内の全論理エクステント(内の論理ブロック群)に割り当てられる同数の物理エクステント(内の物理ブロック群)が、ステップS85におけるデータ移動元の物理エクステント群(内の物理ブロック群)からステップS85におけるデータ移動先の物理エクステント群(内の物理ブロック群)に変更されるように、アドレス変換テーブル1331を更新する。これに対してステップS87の実行に応じてステップS89が実行される場合、階層化制御部1355は、第x位の論理エクステントに割り当てられる物理エクステントが、ステップS87におけるデータ移動元の物理エクステントからステップS87におけるデータ移動先の物理エクステントに変更されるように、アドレス変換テーブル1331を更新する。
階層化制御部1355は、アドレス変換テーブル1331を更新すると、ステップS90に進む。ステップS90において階層化制御部1355は、ステップS86またはS88で更新された変数yが変数r以上であるかを判定する。もし、変数yが変数r以上であるならば(ステップS90のYes)、階層化制御部1355は、空き領域確保処理によって、少なくともr個の新たな空きの物理エクステントを上位階層内に確保できたと判断する。そこで階層化制御部1355は、空き領域確保処理を終了する。
上述のように本実施形態では、階層化制御部1355は、ステップS85及びS87で実行される空き領域を確保するためのデータ移動を、エクステント管理テーブル1332及び結合管理テーブル1333に反映しない。しかし階層化制御部1355が、空き領域を確保するためのデータ移動に応じて、エクステント管理テーブル1332及び結合管理テーブル1333を更新しても構わない。但し、このデータ移動がステップS87において実行される場合、結合管理テーブル1333は更新されない。
一方、変数yが変数r以上でないならば(ステップS90のNo)、階層化制御部1355は、少なくともr個の新たな空きの物理エクステントを上位階層内に未だ確保できていないと判断する。そこで、階層化制御部1355は、空き領域確保処理を次のように継続する。
まず階層化制御部1355は、ポインタxを1だけディクリメントする(ステップS91)。そして、階層化制御部1355はステップS84に戻って、ディクリメントされたポインタxで指定されるリスト内の要素が、エクステントグループであるかを判定する。明らかなように、今回の判定に用いられた要素の順位は、前回の判定に用いられた要素より1つだけ高い。以降の動作は、前回の判定後の動作と同様である。ステップS84乃至S91は、少なくともr個の新たな空きの物理エクステントが上位階層内に確保されるまで繰り返し実行される。
図8に戻って、アクセス処理について更に説明する。階層化制御部1355は、図21のフローチャートに従って空き領域確保処理(ステップS13)を実行すると、ステップS14に進む。このとき上位階層内には、少なくともf+r(=q)個の空き物理エクステントが存在する。そこで階層化制御部1355は、データ移動元決定処理(ステップS8)で決定されたq個の物理エクステント内のデータを、上位階層内の空き領域(より詳細には、q個の空き物理エクステント)に移動する(ステップS14)。また階層化制御部1355は、空き領域確保処理(ステップS13)をスキップした場合にも(ステップS12のNo)、上述のデータの移動を実行する(ステップS14)。
次に階層化制御部1355は、ステップS14におけるデータの移動が反映されるように、アドレス変換テーブル1331、エクステント管理テーブル1332、及び結合管理テーブル1333を更新する(ステップS15)。即ち階層化制御部1355は、データ移動元のq個の物理エクステント(内の物理ブロック群)が割り当てられていたq個の論理エクステント(内の論理ブロック群)に、データ移動先のq個の物理エクステント(内の物理ブロック群)が割り当てられるように、アドレス変換テーブル1331を更新する。また階層化制御部1355は、エクステント管理テーブル1332において、上述のq個の論理エクステントに対応付けられているエントリ中のアクセスカウント及び最終アクセス時刻情報を更新する。また、階層化制御部1355は、上述のq個の論理エクステントにおけるアクセスが連続する論理エクステントの組み合わせ毎に、結合管理テーブル1333における対応する結合度を1インクリメントする。
階層化制御部1355はステップS15を実行すると、IO制御部1352に制御を返す。するとIO制御部1352は、変数eを1ディクリメントする(ステップS16)。そしてIO制御部1352は、1ディクリメントされた変数eが0未満(負)であるかを判定する(ステップS17)。もし、1ディクリメントされた変数eが0未満であるならば(ステップS17のYes)、IO制御部1352は特定された論理エクステント範囲内の全ての論理エクステントへのアクセスが完了したと判断する。そこでIO制御部1352は、最後に処理されたターゲット論理エクステント(つまり、特定された論理エクステント範囲の最後の論理エクステント)の論理エクステント番号を、メモリ133の特定領域に格納して(ステップS18)、図8のフローチャートに従うアクセス処理を終了する。
これに対し、1ディクリメントされた変数eが0未満でないならば(ステップS17のNo)、IO制御部1352は、特定された論理エクステント範囲内に未だアクセスされていないe個の論理エクステントが存在すると判断する。そこで、IO制御部1352はステップS4に戻り、未だアクセスされていないe個(つまり、変数eで示される数)の論理エクステントの中から、先行してアクセスされた論理エクステントに後続する論理エクステントをターゲット論理エクステントとして選択する。そして、最初のステップS4でターゲット論理エクステントが選択された場合と同様に、ステップS4に続く処理(つまり、ステップS5乃至S7を含む処理)が実行される。
最初のステップS4で選択されたターゲット論理エクステントに割り当てられた物理エクステントが下位階層に存在する場合(ステップS7のYes)、最初のステップS14で下位階層から上位階層へのデータ移動が実行される。このため、最初のステップS4で選択されたターゲット論理エクステントがエクステントグループに属しているならば、最初のステップS14の実行後、当該エクステントグループ内の全論理エクステントに割り当てられた物理エクステントの集合は上位階層に存在する。したがって、2回目のステップS4で選択されたターゲット論理エクステントに割り当てられた物理エクステントは、上位階層に存在する(ステップS7のNo)。この場合、ステップS8乃至S15をスキップしてステップS16が実行される。
なお、最初のステップS4で選択されたターゲット論理エクステントに割り当てられた物理エクステントが上位階層に存在する場合にも(ステップS7のNo)、ステップS8乃至S15をスキップしてステップS16が実行される。そして、2回目のステップS4で選択されたターゲット論理エクステントに割り当てられた物理エクステントが下位階層に存在するならば(ステップS7のYes)、ステップS8が実行される。
本実施形態によれば、階層化制御部1355は、ホスト20からのアクセス要求で指定された論理エクステント範囲が属するエクステントグループ内の全ての論理エクステントに割り当てられた物理エクステントの集合に含まれている、下位階層内の全ての物理エクステントのデータを、当該アクセス要求に従うアクセス処理におけるステップS14の実行により、上位階層に移動する。このデータ移動は、従来実行されていた、定期的なアクセス頻度評価に基づく階層間のデータ移動に比べて、オーバーヘッドが小さく、短時間で実行できる。
指定の論理エクステント範囲が属するエクステントグループ内のそれぞれの論理エクステントは、同時アクセスに関する関連性が高く、仮にアクセスカウントが小さいとしても、近い将来アクセスされる可能性が高い。本実施形態では、このエクステントグループ内のそれぞれの論理エクステント(に割り当てられた物理エクステント)のデータは、上述のデータ移動により、全て上位階層に存在することが保証される。したがって、データ移動後の近い将来に、上述のエクステントグループ内の任意の論理ブロック範囲へのアクセスが要求された場合、IO制御部1352は、当該任意の論理ブロック範囲に対応する物理ブロック範囲に高速にアクセスすることができる。
図8のフローチャートでは、変数eに関する判定(ステップS17)が、変数eのディクリメント(ステップS16)の直後に実行される。しかし、変数eに関する判定が、例えば、ターゲット論理エクステントの選択(ステップS4)の直前に実行されても良い。この場合、IO制御部1352は、ステップS17とは異なって、変数eが1未満であるかを判定する必要がある。もし、変数eが1未満でないならば、IO制御部1352はステップS4に進み、変数eが1未満であるならば、IO制御部1352はステップS18に進めば良い。またIO制御部1352は、変数eのディクリメント(ステップS16)の後に、変数eが1未満であるかを判定すれば良い。
<変形例>
次に前記実施形態の変形例について説明する。前記実施形態では、エクステントグループの規模について制約は設けられていない。このため、時間の経過に伴い、エクステントグループが巨大化する可能性がある。エクステントグループが巨大化すると、当該エクステントグループ内の例えば全論理エクステント(に割り当てられている物理エクステント)のデータを下位階層から上位階層に移動するのに、多大な時間を要する。そこで、本変形例の特徴は、巨大化したエクステントグループを、再グループ分け処理により、2つのエクステントグループに分けることにある。
次に前記実施形態の変形例について説明する。前記実施形態では、エクステントグループの規模について制約は設けられていない。このため、時間の経過に伴い、エクステントグループが巨大化する可能性がある。エクステントグループが巨大化すると、当該エクステントグループ内の例えば全論理エクステント(に割り当てられている物理エクステント)のデータを下位階層から上位階層に移動するのに、多大な時間を要する。そこで、本変形例の特徴は、巨大化したエクステントグループを、再グループ分け処理により、2つのエクステントグループに分けることにある。
以下、本変形例における再グループ分け処理について、図22を参照して説明する。図22は、再グループ分け処理の手順を示すフローチャートである。本変形例では、再グループ分け処理は、図8のフローチャートで示されるアクセス処理において、ステップS3の直前(つまり、ステップS2の直後)に追加されるものとする。したがって必要ならば、図8のフローチャートにおいて、ステップS2とステップS3との間に、再グループ分け処理を挿入されたい。
まず、グループ管理部1354は、図8のステップS2におけるエクステント管理テーブル1332の更新の結果に基づいて、エクステントグループの拡張が発生したかを判定する(ステップS101)。エクステントグループの拡張とは、当該エクステントグループを構成する論理エクステントの数が増加することを指す。前述の第2の場合、エクステントグループの拡張が発生する。
もし、エクステントグループの拡張が発生していないならば(ステップS101のNo)、グループ管理部1354は再グループ分けは不要であると判断する。この場合、グループ管理部1354は図22のフローチャートに従う再グループ分け処理を終了して、図8のステップS3に進む。
これに対し、エクステントグループの拡張が発生しているならば(ステップS101のyes)、グループ管理部1354は、拡張されたエクステントグループを特定する(ステップS102)。次にグループ管理部1354は、エクステント管理テーブル1332に基づいて、特定されたエクステントグループを構成する論理エクステントの数Neを検出する(ステップS103)。
なお、エクステントグループ毎に論理エクステントの数を管理するために、グループ管理部1354が、各エクステントグループに対応付けられたエントリを有するエクステントグループ管理テーブルを用いても良い。このエクステントグループ管理テーブルの各エントリは、対応するエクステントグループを構成する論理エクステントの数を保持するのに用いられる。
次にグループ管理部1354は、検出された論理エクステントの数Neが閾値Nthを超えているかを判定する(ステップS104)。閾値Nthは、特定されたエクステントグループが巨大化しているかを判定するための基準値である。本変形例において、閾値Nthは、上位階層(高速ストレージ装置11)に配置可能な最大のエクステントの数の一定割合、例えば1/2に設定される。しかし、閾値Nthが他の値であっても構わない。
もし、NeがNthを超えていないならば(ステップS104のNo)、グループ管理部1354は、特定されたエクステントグループを再グループ分けすることは不要であると判断する。この場合、グループ管理部1354は再グループ分け処理を終了して、図8のステップS3に進む。
これに対し、NeがNthを超えているならば(ステップS104のYes)、グループ管理部1354は、特定されたエクステントグループを再グループ分けするための3つの前処理(第1乃至第3の前処理)を次のように実行する。まずグループ管理部1354は、第1の前処理を実行して、特定されたエクステントグループ内で最小の結合度(より詳細には、0以外で最小の結合度)を持つ論理エクステントの対(第2及び第3の論理エクステントの組み合わせ)を検出する(ステップS105)。以下、ステップS105の詳細について説明する。
まずグループ管理部1354は、エクステント管理テーブル1332に基づいて、特定されたエクステントグループ内の全論理エクステントを特定する。次にグループ管理部1354は、特定された全論理エクステントにおけるアクセスが連続する論理エクステントの対毎の結合度を、結合管理テーブル1333から取得する。そしてグループ管理部1354は、取得された結合度の中から最小の結合度を検出する。これによりグループ管理部1354は、最小の結合度を持つ論理エクステントの対を検出する。
図23は、拡張されたエクステントグループとしてエクステントグループGR1が特定された場合の、当該エクステントグループGR1の構成と、当該エクステントグループGR1内のアクセスが連続する論理エクステントの対毎の結合度との例を、結合管理テーブル1333の例と共に示す。図23の例は、簡略化のために、エクステントグループGR1が、6つの論理エクステントA,B,C,D,E及びFから構成され(Ne=6)、Nthが5である場合を想定している。しかし、Ne及びNthは、一般にこの例よりも十分に大きい。
図23において、論理エクステントA,B,C,D,E及びFをこの順で結合する矢印は、アクセス順を示す。したがって、例えば論理エクステントCの前方リンクエクステント及び後方リンクエクステントは、それぞれ、論理エクステントB及びDである。図23の例では、クステントグループGR1内の互いに隣接する論理エクステントの対の結合度(A,B)[=(B,A)],(B,C)[=(C,B)],(C,D)[=(D,C)],(D,E)[=(E,D)],及び(E,F)[=(F,E)]は、それぞれ、50,132,5,37及び82である。これらの結合度は、矢印230で示されるように、結合管理テーブル1333に反映されている。図23の例では、最小の結合度として5が検出される。
次にグループ管理部1354は、第2の前処理を実行して、結合管理テーブル1333内の全結合度(より詳細には、0以外の全結合度)を、検出された最小の結合度で正規する(ステップS106)。この正規化とは、結合管理テーブル1333内の全結合度を検出された最小の結合度で除することを指す。図23の例では、最小の結合度は結合度(C,D)[=(D,C)]であり、5である。
図24は、第2の前処理(正規化)実行前後の結合管理テーブル1333の例を対比して示す。図24において、正規化前の結合管理テーブル1333は矢印240の基端側に、正規化後の結合管理テーブル1333は矢印240の先端側に、それぞれ示されている。正規化前の結合管理テーブル1333の内容は、図23に示される結合管理テーブル1333のそれに一致する。結合管理テーブル1333における最小の結合度(C,D)[=(D,C)]は、正規化により、図24に示されているように、5から1に変更される。
次にグループ管理部1354は、第3の前処理を実行して、結合管理テーブル1333内の正規化された最小の結合度(つまり、1)を、結合無しを示す0に置き換える(ステップS107)。結合度0は、前述のように、空欄で示されるそれと等価である。この置き換えにより、最小の結合度1を持つ論理エクステントの対の結合は解消される。
図25は、第3の前処理(0置き換え)実行前後の結合管理テーブル1333の例を対比して示す。図25において、0置き換え前の結合管理テーブル1333は矢印250の基端側に、0置き換え後の結合管理テーブル1333は矢印250の先端側に、それぞれ示されている。
次にグループ管理部1354は、特定されたエクステントグループ内の全エクステントを、上述の結合度0への置き換えが反映される(つまり、結合度が0に置き換えられた論理エクステントの対の結合関係が解消される)ように、再グループ分けする(ステップS108)。即ちグループ管理部1354は、特定されたエクステントグループ(第2のエクステントグループ)を、結合度が0に置き換えられた論理エクステントの対の一方(第2の論理エクステント)を含むエクステントグループ(第3のエクステントグループ)と、当該論理エクステントの対の他方(第3の論理エクステント)を含むエクステントグループ(第4のエクステントグループ)とに、エクステント管理テーブル1332及び結合管理テーブル1333に基づいて分割する。
本変形例においてグループ管理部1354は、結合度が0に置き換えられた論理エクステントの対のうちの先行する論理エクステント(以下、前エクステントと称する)を含むエクステントグループに、現在用いられていない新たなエクステントグループ番号を付与する。またグループ管理部1354は、結合度が0に置き換えられた論理エクステントの対のうちの後続する論理エクステント(以下、後エクステントと称する)を含むエクステントグループに、元のエクステントグループ(つまり、特定されたエクステントグループ)のエクステントグループ番号を付与する。しかし、この逆であっても構わない。
再グループ分け(ステップS108)においてグループ管理部1354は、エクステント管理テーブル1332を次のように更新する。まずグループ管理部1354は、前エクステントに対応付けられたエクステント管理テーブル1332のエントリ中のEGNフィールドの内容及びSLEフィールドの内容を、それぞれ、上述の新たなエクステントグループ番号及び−1に更新する。またグループ管理部1354は、後エクステントに対応付けられたエクステント管理テーブル1332のエントリ中のPLEフィールドの内容を−1に更新する。
グループ管理部1354は、再グループ分け(ステップS108)を実行すると、図22のフローチャートに従う再グループ分け処理を終了する。そして本変形例では、図8のフローチャートにおけるステップS3が実行される。なお、再グループ分け処理が、ステップS3の直前以外のタイミング、例えばステップS3の直後に実行されても構わない。
図26は、再グループ分け前(つまり、第3の前処理実行直後)における結合管理テーブル1333の例を示すと共に、再グループ分け前後のエクステントグループの例を対比して示す。図26において、再グループ分け前の結合管理テーブル1333は、矢印261の基端側に示されている。上述のステップS108の説明から明らかなように、再グループ分けでは、結合管理テーブル1333の更新は発生しない。つまり、結合管理テーブル1333は、再グループ分けの前後で変わらない。したがって、図26に示される結合管理テーブル1333は、再グループ分け後の状態をも示す。図26において、矢印261の先端側及び矢印262の基端側には、エクステントグループGR1の再グループ分け前の構成が示されている。図26に示される再グループ分け前のエクステントグループGR1は、図23からも明らかなように、論理エクステントA,B,C,D,E及びFから構成されている。
再グループ分け前のエクステントグループGR1内の論理エクステントC及びDの対の結合度は、第3の前処理(ステップS107)により0に変更されている。そこで階層化制御部1355は、論理エクステントC及びDの結合を解消する。そして階層化制御部1355は、論理エクステントCと、論理エクステントA及びB(つまり、論理エクステントCと間接または直接に結合関係を有する論理エクステントA及びB)とを、エクステントグループGR1から外して、新たなエクステントグループGRaに所属させる。即ち階層化制御部1355は、エクステントグループGR1内の論理エクステントA,B,C,D,E及びFを、図26において矢印262で示されるように、論理エクステントA,B及びCから構成される新たなエクステントグループGRaと、論理エクステントD,E及びFから構成される縮小されたエクステントグループGR1とに、再グループ分けする(ステップS108)。
以上説明した少なくとも1つの実施形態によれば、階層間のデータ移動を効率化できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…階層化ストレージシステム、11…高速ストレージ装置(第1のストレージ装置)、12…低速ストレージ装置(第2のストレージ装置)、13…ストレージコントローラ、20…ホスト(ホスト計算機)、133…メモリ、134…ローカルHDD、135…CPU、1331…アドレス変換テーブル、1332…エクステント管理テーブル、1333…結合管理テーブル、1351…構成管理部、1352…入出力(IO)制御部、1353…IO管理部、1354…グループ管理部、1355…階層化制御部。
Claims (12)
- 各々が第1の数の物理ブロックから構成される複数の物理エクステントを有する第1の記憶領域を含み、且つ上位階層に位置付けられる第1のストレージ装置と、
各々が前記第1の数と同数の物理ブロックから構成される複数の物理エクステントを有する第2の記憶領域を含み、且つ前記第1のストレージ装置よりもアクセス速度が低く、且つ下位階層に位置付けられる第2のストレージ装置と、
前記第1及び第2のストレージ装置へのアクセスを制御するストレージコントローラと を具備する階層化ストレージシステムであって、
前記ストレージコントローラは、
各々が前記物理ブロックと同サイズの複数の論理ブロックから構成される仮想化された記憶領域を含む論理ユニットを構築し、前記階層化ストレージシステムを利用するホスト計算機に前記論理ユニットを提供する構成管理部と、
前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする入出力制御部と、
前記論理ユニット内の前記仮想化された記憶領域を、各々が前記第1の数と同数の論理ブロックから構成される複数の論理エクステントを有する記憶領域として管理する入出力管理部と、
前記複数の論理エクステント内のそれぞれ異なる2つの論理エクステントから構成される組み合わせ毎に、対応する2つの論理エクステントのアクセスに関する結合の強さを、当該対応する2つの論理エクステントが順にアクセスされる度合いを示す結合度に基づいて管理し、且つ相互に結合関係を有する組み合わせの系列毎に対応する系列に含まれている論理エクステントの集合をエクステントグループとして管理するグループ管理部と、
前記アクセス要求が第1の論理ブロックを含む1つ以上の論理ブロックへのアクセスを指定し、且つ前記第1の論理ブロックが第1の論理エクステントに含まれていて、且つ前記第1の論理エクステントが前記第2のストレージ装置内のq個の物理エクステントが割り当てられたq個の論理エクステントを含むエクステントグループに属している場合、前記q個の物理エクステントのデータを、前記第1のストレージ装置内の空きのq個の物理エクステントに移動し、且つ前記q個の論理エクステントに割り当てられるq個の物理エクステントを、前記データの移動元のq個の物理エクステントから、前記データの移動先のq個の物理エクステントに変更する階層化制御部と
を具備する階層化ストレージシステム。 - 前記入出力管理部は、前記複数の論理エクステントそれぞれへのアクセスの状況を示すアクセス統計値を取得し、
前記グループ管理部は、エクステントグループ毎のアクセス統計値を、対応するエクステントグループに属する全ての論理エクステントのアクセス統計値に基づいて決定し、
前記階層化制御部は、前記第1のストレージ装置内の空きの物理エクステントの数が前記qに対してrだけ不足する場合、いずれのエクステントグループにも属さない論理エクステントのうち、前記第1のストレージ装置内のそれぞれの物理エクステントが割り当てられる論理エクステントのアクセス統計値、及び前記第1のストレージ装置内のそれぞれの物理エクステントの集合が割り当てられる論理エクステントの集合から構成されるエクステントグループのアクセス統計値の昇順に、前記第1のストレージ装置から前記第2のストレージ装置へデータが移動されるべき少なくともr個の物理エクステントに対応する、いずれのエクステントグループにも属さない1つ以上の論理エクステント及び/または1つ以上のエクステントグループを選択して、選択された1つ以上の論理エクステント及び/または1つ以上のエクステントグループ内の全ての論理エクステントに割り当てられた、前記第1のストレージ装置内の前記少なくともr個の物理エクステントのデータを、前記1のストレージ装置内の前記少なくともr個の物理エクステントと同数の前記第2のストレージ装置内の空きの物理エクステントに移動することにより、前記第1のストレージ装置内の空きの物理エクステントの数を少なくともr増やす
請求項1記載の階層化ストレージシステム。 - 前記入出力管理部は、前記対応するエクステントグループに属する全ての論理エクステントのアクセス統計値の最大値または平均値を、前記対応するエクステントグループのアクセス統計値として決定する請求項2記載の階層化ストレージシステム。
- 前記入出力管理部は、前記複数の論理エクステントそれぞれへのアクセスの状況を、前記複数の論理エクステントそれぞれのアクセス統計値と最終アクセス時刻とを用いて管理し、
前記グループ管理部は、前記エクステントグループの各々を構成する論理エクステントの最終アクセス時刻のうち最も新しい最終アクセス時刻を、前記エクステントグループの各々の最終アクセス時刻として用い、
前記階層化制御部は、アクセス統計値が同一の複数の選択候補が存在する場合、最終アクセス時刻がより古い選択候補ほど、選択される順位を上げる
請求項2及び請求項3のいずれか一項に記載の階層化ストレージシステム。 - 前記グループ管理部は、エクステントグループそれぞれを構成する論理エクステントの数に基づき、第2の数を超える論理エクステントから構成される第1のエクステントグループを検出して、前記第1のエクステントグループ内で最小の結合度を持つ、第2及び第3の論理エクステントの組み合わせを検出し、前記第1のエクステントグループを、前記第2の論理エクステントを含む第2のエクステントグループと、前記第3の論理エクステントを含む第3のエクステントグループとに再グループ分けする請求項1乃至請求項4のいずれか一項に記載の階層化ストレージシステム。
- 前記グループ管理部は、前記組み合わせ毎の結合度を前記最小の結合度で正規化し、且つ前記正規化された最小の結合度を結合無しを示す値に置き換える請求項5記載の階層化ストレージシステム。
- 前記第2の数は、前記第1のストレージ装置においてデータが配置可能な物理エクステントの数に基づいて決定される請求項5及び請求項6のいずれか一項に記載の階層化ストレージシステム。
- pが2以上の整数であるものとすると、前記1つ以上の論理ブロックが前記論理ユニット内で連続するp個の論理ブロックであり、且つ前記p個の論理ブロックの一部が前記第1の論理エクステントに含まれていて、且つ前記p個の論理ブロックの他の一部が第4の論理エクステントに含まれているならば、前記第1の論理エクステントと前記第4の論理エクステントとの組み合わせの結合度をインクリメントする請求項5乃至請求項7のいずれか一項に記載の階層化ストレージシステム。
- 前記複数の論理エクステントの各々に対応付けて、対応する論理エクステントが属するエクステントグループを示すエクステントグループ識別子、アクセス順に関し、当該対応する論理エクステントに先行する論理エクステントを示す前方リンクエクステント識別子、アクセス順に関し、当該対応する論理エクステントに後続する論理エクステントを示す後方リンクエクステント識別子、当該対応する論理エクステントのアクセス統計値、及び当該対応する論理エクステントが最後にアクセスされた最終アクセス時刻を示す最終アクセス時刻情報を保持するエクステント管理テーブルを更に具備し、
前記入出力管理部は、前記アクセス要求で指定されたアクセス範囲に対応する少なくとも1つの論理エクステントに対応付けられたアクセス統計値及び最終アクセス時刻情報を、前記アクセス要求に応じて更新し、
前記グループ管理部は、前記指定された前記アクセス範囲に対応する少なくとも1つの論理エクステントに対応付けられたエクステントグループ識別子、前方リンクエクステント識別子及び後方リンクエクステント識別子を、前記アクセス要求に応じて更新する
請求項4乃至請求項8のいずれか一項に記載の階層化ストレージシステム。 - 前記組み合わせ毎に、対応する組み合わせの結合度を保持する結合管理テーブルを更に具備する請求項9記載の階層化ストレージシステム。
- 各々が第1の数の物理ブロックから構成される複数の物理エクステントを有する第1の記憶領域を含み、且つ上位階層に位置付けられる第1のストレージ装置と、各々が前記第1の数と同数の物理ブロックから構成される複数の物理エクステントを有する第2の記憶領域を含み、且つ前記第1のストレージ装置よりもアクセス速度が低く、且つ下位階層に位置付けられる第2のストレージ装置とを具備する階層化ストレージシステムにおいて、前記第1及び第2のストレージ装置へのアクセスを制御するストレージコントローラであって、
各々が前記物理ブロックと同サイズの複数の論理ブロックから構成される仮想化された記憶領域を含む論理ユニットを構築し、前記階層化ストレージシステムを利用するホスト計算機に前記論理ユニットを提供する構成管理部と、
前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする入出力制御部と、
前記論理ユニット内の前記仮想化された記憶領域を、各々が前記第1の数と同数の論理ブロックから構成される複数の論理エクステントを有する記憶領域として管理する入出力管理部と、
前記複数の論理エクステント内のそれぞれ異なる2つの論理エクステントから構成される組み合わせ毎に、対応する2つの論理エクステントのアクセスに関する結合の強さを、当該対応する2つの論理エクステントが順にアクセスされる度合いを示す結合度に基づいて管理し、且つ相互に結合関係を有する組み合わせの系列毎に対応する系列に含まれている論理エクステントの集合をエクステントグループとして管理するグループ管理部と、
前記アクセス要求が第1の論理ブロックを含む1つ以上の論理ブロックへのアクセスを指定し、且つ前記第1の論理ブロックが第1の論理エクステントに含まれていて、且つ前記第1の論理エクステントが前記第2のストレージ装置内のq個の物理エクステントが割り当てられたq個の論理エクステントを含むエクステントグループに属している場合、前記q個の物理エクステントのデータを、前記第1のストレージ装置内の空きのq個の物理エクステントに移動し、且つ前記q個の論理エクステントに割り当てられるq個の物理エクステントを、前記データの移動元のq個の物理エクステントから、前記データの移動先のq個の物理エクステントに変更する階層化制御部と
を具備するストレージコントローラ。 - 各々が第1の数の物理ブロックから構成される複数の物理エクステントを有する第1の記憶領域を含む第1のストレージ装置、及び、各々が前記第1の数と同数の物理ブロックから構成される複数の物理エクステントを有する第2の記憶領域を含み、且つ前記第1のストレージ装置よりもアクセス速度が低い第2のストレージ装置へのアクセスを制御するストレージコントローラであって、各々が前記物理ブロックと同サイズの複数の論理ブロックから構成される仮想化された記憶領域を含む論理ユニットを構築し、前記第1のストレージ装置及び前記第2のストレージ装置を具備する階層化ストレージシステムを利用するホスト計算機に前記論理ユニットを提供するストレージコントローラにおいて、前記第1及び第2のストレージ装置を、それぞれ上位階層及び下位階層として階層化するための階層化制御方法であって、
前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトし、
前記論理ユニット内の前記仮想化された記憶領域を、各々が前記第1の数と同数の論理ブロックから構成される複数の論理エクステントを有する記憶領域として管理し、
前記複数の論理エクステント内のそれぞれ異なる2つの論理エクステントから構成される組み合わせ毎に、対応する2つの論理エクステントのアクセスに関する結合の強さを、当該対応する2つの論理エクステントが順にアクセスされる度合いを示す結合度に基づいて管理し、
相互に結合関係を有する組み合わせの系列毎に対応する系列に含まれている論理エクステントの集合をエクステントグループとして管理し、
前記アクセス要求が第1の論理ブロックを含む1つ以上の論理ブロックへのアクセスを指定し、且つ前記第1の論理ブロックが第1の論理エクステントに含まれていて、且つ前記第1の論理エクステントが前記第2のストレージ装置内のq個の物理エクステントが割り当てられたq個の論理エクステントを含むエクステントグループに属している場合、前記q個の物理エクステントのデータを、前記第1のストレージ装置内の空きのq個の物理エクステントに移動し、且つ前記q個の論理エクステントに割り当てられるq個の物理エクステントを、前記データの移動元のq個の物理エクステントから、前記データの移動先のq個の物理エクステントに変更する
階層化制御方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016052510A JP6165909B1 (ja) | 2016-03-16 | 2016-03-16 | 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 |
US15/206,412 US9891828B2 (en) | 2016-03-16 | 2016-07-11 | Tiered storage system, storage controller, and tiering control method |
CN201710116790.3A CN107203479B (zh) | 2016-03-16 | 2017-03-01 | 层级化存储系统、存储控制器及层级化控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016052510A JP6165909B1 (ja) | 2016-03-16 | 2016-03-16 | 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6165909B1 true JP6165909B1 (ja) | 2017-07-19 |
JP2017167819A JP2017167819A (ja) | 2017-09-21 |
Family
ID=59351281
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016052510A Active JP6165909B1 (ja) | 2016-03-16 | 2016-03-16 | 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9891828B2 (ja) |
JP (1) | JP6165909B1 (ja) |
CN (1) | CN107203479B (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10373119B2 (en) * | 2016-01-11 | 2019-08-06 | Microsoft Technology Licensing, Llc | Checklist generation |
JP6253752B1 (ja) | 2016-11-29 | 2017-12-27 | 株式会社東芝 | 階層化ストレージシステム |
WO2021120140A1 (en) | 2019-12-20 | 2021-06-24 | Intel Corporation | Managing runtime apparatus for tiered object memory placement |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4856932B2 (ja) * | 2005-11-18 | 2012-01-18 | 株式会社日立製作所 | 記憶システム及びデータ移動方法 |
US8170990B2 (en) * | 2008-05-30 | 2012-05-01 | Hitachi, Ltd. | Integrated remote replication in hierarchical storage systems |
US8645653B2 (en) * | 2010-10-14 | 2014-02-04 | Hitachi, Ltd | Data migration system and data migration method |
CN102521152B (zh) * | 2011-11-29 | 2014-12-24 | 华为数字技术(成都)有限公司 | 一种分级存储方法及系统 |
US8886882B2 (en) * | 2012-09-14 | 2014-11-11 | Hitachi, Ltd. | Method and apparatus of storage tier and cache management |
JP6065695B2 (ja) * | 2013-03-26 | 2017-01-25 | 富士通株式会社 | ストレージ制御方法、ストレージシステム、およびストレージ制御プログラム |
CN104246721B (zh) | 2013-03-29 | 2017-02-22 | 株式会社东芝 | 存储系统、存储控制器及存储控制方法 |
US9753987B1 (en) * | 2013-04-25 | 2017-09-05 | EMC IP Holding Company LLC | Identifying groups of similar data portions |
US20150039825A1 (en) * | 2013-08-02 | 2015-02-05 | Seagate Technology Llc | Federated Tiering Management |
US9367247B2 (en) * | 2013-08-20 | 2016-06-14 | Seagate Technology Llc | Memory access requests in hybrid memory system |
CN105074675B (zh) * | 2014-03-04 | 2017-11-07 | 株式会社东芝 | 具有层级化块存储装置的计算机系统、存储控制器及介质 |
WO2015162766A1 (ja) * | 2014-04-24 | 2015-10-29 | 株式会社日立製作所 | ストレージシステム及び半導体記憶装置 |
US9952808B2 (en) * | 2015-03-26 | 2018-04-24 | International Business Machines Corporation | File system block-level tiering and co-allocation |
-
2016
- 2016-03-16 JP JP2016052510A patent/JP6165909B1/ja active Active
- 2016-07-11 US US15/206,412 patent/US9891828B2/en active Active
-
2017
- 2017-03-01 CN CN201710116790.3A patent/CN107203479B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107203479A (zh) | 2017-09-26 |
US20170269840A1 (en) | 2017-09-21 |
JP2017167819A (ja) | 2017-09-21 |
CN107203479B (zh) | 2020-09-22 |
US9891828B2 (en) | 2018-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10037161B2 (en) | Tiered storage system, storage controller, and method for deduplication and storage tiering | |
JP5362145B1 (ja) | 論理アドレスと物理アドレスとの間のマッピングを管理するストレージシステム、ストレージコントローラ及び方法 | |
JP5000316B2 (ja) | オブジェクト・ベースのデータ記憶装置 | |
US9146877B2 (en) | Storage system capable of managing a plurality of snapshot families and method of snapshot family based read | |
JP5603997B2 (ja) | ストレージ装置及びデータ制御方法 | |
JP5976980B1 (ja) | 階層化ストレージシステム、階層化ストレージ装置を利用するコンピュータ、及びファイルへのアクセスのカウントを補正する方法 | |
US20140089582A1 (en) | Disk array apparatus, disk array controller, and method for copying data between physical blocks | |
US10936203B2 (en) | Memory storage device and system employing nonvolatile read/write buffers | |
JP6196383B2 (ja) | 階層化ストレージシステム | |
JP6165909B1 (ja) | 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 | |
US20180341423A1 (en) | Storage control device and information processing system | |
US10235071B2 (en) | Tiered storage system, storage controller and tiering control method | |
JP5730446B1 (ja) | トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム | |
JP2006072441A (ja) | メモリ装置および不揮発性メモリの制御方法 | |
US20200019539A1 (en) | Efficient and light-weight indexing for massive blob/objects | |
JP6050794B2 (ja) | フラッシュメモリモジュール、不揮発性半導体メモリモジュール及びストレージ装置 | |
JP6022116B1 (ja) | 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法 | |
JP2018156594A (ja) | ストレージシステムおよび処理方法 | |
JP2014170325A (ja) | ストレージ装置と方法並びにプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170523 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170621 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6165909 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |