JP6253752B1 - 階層化ストレージシステム - Google Patents
階層化ストレージシステム Download PDFInfo
- Publication number
- JP6253752B1 JP6253752B1 JP2016231202A JP2016231202A JP6253752B1 JP 6253752 B1 JP6253752 B1 JP 6253752B1 JP 2016231202 A JP2016231202 A JP 2016231202A JP 2016231202 A JP2016231202 A JP 2016231202A JP 6253752 B1 JP6253752 B1 JP 6253752B1
- Authority
- JP
- Japan
- Prior art keywords
- extent
- logical
- group
- extents
- physical
- 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
- 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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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/061—Improving I/O performance
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
-
- 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のストレージ装置と、第2のストレージ装置と、ストレージコントローラとを含む。前記ストレージコントローラは、前記第1および第2のストレージ装置の記憶領域が複数の物理ブロックから構成される物理エクステント単位に割り当てられる、前記物理ブロックと同サイズの複数の論理ブロックから構成される複数の論理エクステントを含む論理ユニットに対するホスト計算機からのアクセス要求の範囲が、前記論理ユニット内の複数の論理エクステントに跨る場合、当該複数の論理エクステントは相関があると判定し、相関のある論理エクステントの集合を1つのエクステントグループとして、前記第1および第2のストレージ装置間における物理エクステント単位のデータの移動を一括的に行う。【選択図】図2
Description
本発明の実施形態は、階層化ストレージシステムに関する。
近年、アクセス速度の異なる第1および第2のストレージ装置を備えたストレージシステムが開発されている。ここで、第1のストレージ装置のアクセス速度および記憶容量は高速で小容量であり、第2のストレージ装置のアクセス速度および記憶容量は、第1のストレージ装置のそれと比較して低速で大容量であるものとする。ストレージシステムは、第1および第2のストレージ装置を、それぞれ上位階層および下位階層として階層的に組み合わせることにより実現される。このような技術はストレージ階層化技術とも呼ばれ、当該ストレージ階層化技術を適用するストレージシステムは階層化ストレージシステムとも呼ばれる。
階層化ストレージシステムでは、データが配置(格納)されるべき階層(ストレージ装置)が、当該データの特性に応じて決定・変更される。具体的には、アクセス頻度の高いデータは上位階層(第1のストレージ装置)に配置され、アクセス頻度の低いデータは下位階層(第2のストレージ装置)に配置される。このような配置(階層化)により、階層化ストレージシステムの高パフォーマンス化と低コスト化とを両立することができる。
階層化ストレージシステムにおける階層化は、一般に自動的に行われる。この自動的な階層化のために、ストレージコントローラは、例えば、階層化ストレージシステムにおけるアクセスの状況を、エクステントと呼ばれるデータ集合を単位に監視する。エクステントは、一般に、データ管理(データアクセス)の基本サイズ(いわゆるブロックサイズ)よりも大きいサイズを有する。エクステントそれぞれへのアクセスの状況は、アクセス回数のようなアクセス統計値により表される。
ストレージコントローラは、例えば定期的に、エクステントそれぞれのアクセス統計値に基づき、当該エクステントそれぞれのアクセス頻度に関する評価を行う。ストレージコントローラは、この定期的な評価結果に基づき、下位階層から上位階層へのデータの移動(再配置)または上位階層から下位階層へのデータの移動をエクステント単位に行う。しかし、定期的なアクセス頻度評価に基づく階層間のデータ移動は、オーバーヘッドが大きく、処理に時間を費やす。
本発明が解決しようとする課題は、階層間のデータ移動を効率化できる階層化ストレージシステムを提供することである。
実施形態によれば、階層化ストレージシステムは、第1のストレージ装置と、ストレージコントローラとを含む。前記第1のストレージ装置は、上位階層に位置づけられる。前記第2のストレージ装置は、下位階層に位置づけられる。前記ストレージコントローラは、前記第1および第2のストレージ装置へのアクセスを制御する。前記ストレージコントローラは、前記第1および第2のストレージ装置の記憶領域が複数の物理ブロックから構成される物理エクステント単位に割り当てられる、前記物理ブロックと同サイズの複数の論理ブロックから構成される複数の論理エクステントの各々に対応づけて、対応する論理エクステントと共に同一のアクセス要求によりアクセスされた当該対応する論理エクステントの前方に位置する論理エクステントを示す前方リンクエクステント識別子と、対応する論理エクステントと共に同一のアクセス要求によりアクセスされた当該対応する論理エクステントの後方に位置する論理エクステントを示す後方リンクエクステント識別子とを少なくとも保持するエクステント管理テーブルを管理し、前記複数の論理エクステントを含む論理ユニットに対するホスト計算機からのアクセス要求の範囲が、前記論理ユニット内の複数の論理エクステントに跨る場合、当該複数の論理エクステントは相関があると判定し、相関のある論理エクステントの集合を1つのエクステントグループとして、前記エクステント管理テーブルに保持される前方リンクエクステント識別子を辿って各エクステントグループの先頭の論理エクステントを特定するとともに、当該先頭の論理エクステントを起点に前記エクステント管理テーブルに保持される後方リンクエクステント識別子を辿って各エクステントグループに属する論理エクステントの数を取得して、各エクステントグループの先頭の論理エクステントを示す代表エクステント識別子と各エクステントグループに属する論理エクステントの数とを少なくとも保持するエクステントグループ管理テーブルを管理し、前記エクステント管理テーブルと前記エクステントグループ管理テーブルとに基づき、各エクステントグループに属する複数の論理エクステントに各々対応づけられた複数の物理エクステントに格納されるデータを前記第1および第2のストレージ装置間において一括的に移動させる。
以下、実施の形態について図面を参照して説明する。
(第1実施形態)
まず、第1実施形態について説明する。
まず、第1実施形態について説明する。
図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は、ホスト20からのアクセス要求を受信し、当該アクセス要求に対する応答を返信する。アクセス要求は、論理ユニットからデータをリードすること、あるいは当該論理ユニットにデータをライトすること(つまり、論理ユニットへのアクセス)を指定する。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の記憶領域は複数の物理エクステントから構成され、各物理エクステントは一定数の連続する物理ブロックから構成される。
本実施形態において論理ユニットの記憶領域は、論理エクステントと呼ばれる、物理エクステントと同サイズの領域にも分割される。つまり論理ユニットの記憶領域は、複数の論理エクステントからも構成される。各論理エクステントは、物理エクステントを構成する物理ブロックの数と同数の連続する論理ブロックから構成される。つまり、各論理エクステントの境界は、論理ブロックの境界に一致する。
物理エクステントおよび論理エクステントのサイズ(つまりエクステントサイズ)は、例えば4キロバイト(KB)、即ち4,096バイト(B)である。一方、物理ブロックおよび論理ブロックのサイズ(つまりブロックサイズ)は、例えば512バイト(B)である。つまり、前述の一定数は8であり、物理エクステント(論理エクステント)は、8個の物理ブロック(論理ブロック)から構成される。しかし、エクステントサイズおよびブロックサイズは、それぞれ、4KBおよび512Bに限らず、前述の一定数も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は、相関のある論理エクステントの集合をエクステントグループとして管理する。エクステントグループは、エクステントグループ管理テーブル1333を用いて管理される。論理エクステント間の相関については後述する。
階層化制御部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は前述の一定数を示し、エクステントサイズが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)フィールド、前方リンクエクステント(PLE)フィールド、前方リンク強度(PLI)フィールド、後方リンクエクステント(SLE)フィールド、後方リンク強度(SLI)フィールド、アクセスカウント(AC)フィールドおよび最終アクセス時刻(LAT)フィールドを有している。
LENフィールドは、対応する論理エクステントを示す論理エクステント番号を保持するのに用いられる。
PLEフィールドは、前方リンクエクステントの論理エクステント番号を保持するのに用いられる。前方リンクエクステントとは、対応する論理エクステントが、ホスト20からの1つのアクセス要求によって共にアクセスされた、当該対応する論理エクステントの前方に位置する直近の論理エクステントを指す。PLIフィールドは、対応する論理エクステントが、ホスト20からの1つのアクセス要求によって前方リンクエクステント(PLEフィールドで示される論理エクステント)と共にアクセスされた回数を保持するのに用いられる。
SLEフィールドは、後方リンクエクステントの論理エクステント番号を保持するのに用いられる。後方リンクエクステントとは、対応する論理エクステントが、ホスト20からの1つのアクセス要求によって共にアクセスされた、当該対応する論理エクステントの後方に位置する直近の論理エクステントを指す。SLIフィールドは、対応する論理エクステントが、ホスト20からの1つのアクセス要求によって後方リンクエクステント(SLEフィールドで示される論理エクステント)と共にアクセスされた回数を保持するのに用いられる。
ACフィールドは、対応する論理エクステントがアクセスされた回数(アクセス頻度)を示すアクセスカウントを保持するのに用いられる。LATフィールドは、対応する論理エクステントが最後にアクセスされた時刻(日時)を示す最終アクセス時刻データを保持するのに用いられる。
図6に示されるエクステント管理テーブル1332の例では、すべてのエントリのPLEフィールド、PLIフィールド、SLEフィールド、SLIフィールド、ACフィールドおよびLATフィールドに、値0が設定されている。PLEフィールド、PLIフィールド、SLEフィールドおよびSLIフィールドにおける値0は初期値であり、ホスト20からの1つのアクセス要求によって共にアクセスされた前方リンクエクステントおよび後方リンクエクステントが存在しないことを示す。そこで本実施形態では、論理エクステント番号0の使用は禁止されているものとする。なお、PLEフィールドおよびSLEフィールドの初期値は0に限るものではなく、使用可能な論理エクステント番号以外の特定値であれば良い。
エクステント管理テーブル1332のそれぞれのエントリは次のように初期設定される。まず、それぞれのエントリに対応付けられた論理エクステントの論理エクステント番号が、当該それぞれのエントリのLENフィールドに設定される。それぞれのエントリの他の各フィールドには、例えば0が設定される。図6は、初期化されたエクステント管理テーブル1332を示す。
図7は、図2に示されるエクステントグループ管理テーブル1333のデータ構造例を示す。エクステントグループ管理テーブル1333は、例えば、グループ管理部1354によってエクステントグループとして管理される、論理エクステントの集合に対応付けられたエントリの群を有している。また、グループ管理部1354は、他のいずれの論理エクステントとも相関のない論理エクステントを単独の論理エクステント(1つの論理エクステントで構成されるエクステントグループ)として管理するために、このエクステントグループ管理テーブル1333を用いる。即ち、エクステントグループ管理テーブル1333が有するエントリの群の中には、グループ管理部1354によって単独の論理エクステントとして管理される論理エクステントに対応付けられたエントリが含まれる。したがって、エクステントグループ管理テーブル1333のエントリは、最大、論理エクステントの数だけ存在し得る。エクステントグループ管理テーブル1333の各エントリは、エクステントグループ番号(EGN)フィールド、代表エクステント番号(REN)フィールドおよびエクステントグループ構成数(QTY)フィールドを有している。
EGNフィールドは、論理エクステントの集合であるエクステントグループを識別するための識別子としてのエクステントグループ番号を保持するのに用いられる。エクステントグループ番号は、例えばエクステントグループの作成時、グループ管理部1354によって発番される。
RENフィールドは、論理エクステントの集合であるエクステントグループを代表する論理エクステント、より詳細には、その集合の先頭に位置する論理エクステントを示す論理エクステント番号を保持するのに用いられる。
QTYフィールドは、論理エクステントの集合であるエクステントグループに属する論理エクステントの数、つまり、エクステントグループを構成する論理エクステントの数を保持するのに用いられる。
エクステントグループ管理テーブル1333のEGNフィールド、RENフィールドおよびQTYフィールドの初期値は、例えば0である。図7に示されるエクステントグループ管理テーブル1333は、エクステントグループが作成されていない状態を示す。エクステントグループ管理テーブル1333のエントリは、前述したように、最大、論理エクステントの数だけ存在し得るが、必ずしも、予め論理エクステントの数だけ用意しておく必要はない。グループ管理部1354が、必要に応じてエントリを追加し、また、不要となったエントリを削除すべく、論理エクステントのエントリ数を適応的に管理するようにしてもよい。
ここで、図8を参照して、本実施形態において、複数の論理エクステントについて、それらは相関があると判断する基準について説明する。本実施形態の階層化ストレージシステム10、より詳細には、ストレージコントローラ13のグループ管理部1354は、図8(A)に示すように、ホスト20からの(1つのコマンドによる)アクセス要求の範囲が複数の論理エクステントに跨る場合、当該複数の論理エクステントは相関があると判断する。図8(A)に示す例では、アクセス要求の範囲がエクステントNとエクステントN+1とに跨っているので、これらは相関があると判断される。図8(A)では、アクセス要求の範囲が2つの論理エクステントに跨る場合を示しているが、言うまでも無く、アクセス要求の範囲が3つ以上の論理エクステントに跨る場合、当該3つ以上の論理エクステントは相関があると判断される。
一方、図8(B)は、本実施形態とは異なり、時間的に連続してアクセスされた論理エクステントは相関があると判断する一比較例を示している。図8(B)では、エクステントNがアクセスされた直後、エクステントN+1がアクセスされたことをもって、これらは相関があると判断されることになる。しかしながら、近時、CPU135は、複数のタスクを並行して実行するマルチタスク機能をもはや標準的に備えており、時間的に連続するアクセスが同一のタスクによるものとは限らない。図8(B)は、エクステントNがタスクAによってアクセスされ、その直後、エクステントN+1がタスクBによってアクセスされた例を示している。つまり、このような場合において、エクステントNとエクステントN+1とは相関があると判断することは誤りである。
本実施形態においては、ホスト20からの(1つのコマンドによる)アクセス要求の範囲が複数の論理エクステントに跨る場合、当該複数の論理エクステントは相関があると判断するので、このような誤った判断が行われることがない。即ち、相関のある論理エクステントの集合であるエクステントグループを正しく作成することが可能である。
この論理エクステントの相関についての判断基準を踏まえて、次に、本実施形態の動作について、アクセス処理を例に図9を参照して説明する。図9は、アクセス処理の典型的な手順を示すフローチャートである。まず、ホスト20から階層化ストレージシステム10のストレージコントローラ13に、ホストインタフェースバス30を介してアクセス要求が発行されたものとする。
ストレージコントローラ13のHIFコントローラ131は、ホスト20によって発行されたアクセス要求をホストインタフェースバス30から受領する。アクセス要求は、論理ユニット番号LUN、論理ブロックアドレスLBAtおよびデータ転送サイズを含む。データ転送サイズは、転送(アクセス)されるべき論理ブロックの数を示す。データ転送サイズが例えばNである場合、アクセス要求は、論理ブロックアドレスLBAtから始まる連続するN論理ブロックの範囲へのアクセスを指定する。
ストレージコントローラ13のIO管理部1353は、受領されたアクセス要求によって指定される論理ブロック範囲に対応する論理エクステント範囲を、次のように特定する(ステップA1)。まず、IO管理部1353は、アドレス変換テーブル1331において、指定論理ブロック範囲内のそれぞれの論理ブロックを示す論理ユニット番号および論理ブロックアドレスの組に対応付けられたエントリを参照する。そしてIO管理部1353は、指定論理ブロック範囲内のそれぞれの論理ブロックに対応付けられた論理エクステント番号によって示される論理エクステントを特定する。これによりIO管理部1353は、指定論理ブロック範囲に対応する論理エクステント範囲を特定する。特定された論理エクステント範囲は、ホスト20からのアクセス要求で指定された論理ブロック範囲に対応することから、ホスト20からのアクセス要求で(間接的に)指定されたと称することもできる。
論理エクステント範囲が特定されると(ステップA1)、グループ管理部1354が起動される。グループ管理部1354は、エクステント管理テーブル1332およびエクステントグループ管理テーブル1333を、特定された論理エクステント範囲に基づいて更新するためのテーブル更新処理を、IO管理部1353と協同して実行する(ステップA2)。
以下、このテーブル更新処理(ステップA2)の詳細について、図10乃至図12を参照して説明する。図10は、エクステント管理テーブル1332に関するテーブル更新処理(テーブル更新処理[1])の典型的な手順を示すフローチャートである。また、図11および図12は、エクステントグループ管理テーブル1333に関するテーブル更新処理(テーブル更新処理[2])の典型的な手順を示すフローチャートである。テーブル更新処理(ステップA2)は、まず、テーブル更新処理[1]が実行され、次いで、テーブル更新処理[2]が実行される。まず、図10を参照して、テーブル更新処理[1]について説明する。
まずグループ管理部1354は、特定された論理エクステント範囲内の先頭の論理エクステントをLE1(論理エクステントLE1)として選択する(ステップB1)。またグループ管理部1354は、特定された論理エクステント範囲内に、現在の論理エクステントLE1(つまり、ステップB1で選択された論理エクステント)の次の論理エクステントが存在するかを判定する(ステップB2)。
もし、特定された論理エクステント範囲が複数の論理エクステントを含む場合、次の論理エクステントは存在する(ステップB2のYes)。特定された論理エクステント範囲が複数の論理エクステントを含む場合とは、アクセス要求の範囲が複数の論理エクステントに跨る場合である。この場合、グループ管理部1354は、次の論理エクステントを、LE2として選択する(ステップB3)。ここで、LE1およびLE2の論理エクステント番号(LEN)を、それぞれLEN_LE1およびLEN_LE2と表記する。また、LE1およびLE2に対応付けられたエクステント管理テーブル1332のエントリを、それぞれ、エントリEMTE_LE1およびEMTE_LE2と表記する。
次にグループ管理部1354は、エントリEMTE_LE1のSLEフィールドの内容(初期値0)を、LEN_LE2に変更する。(ステップB4)。またグループ管理部1354は、エントリEMTE_LE1のSLIフィールドの内容を更新し、一方、IO管理部1353は、エントリEMTE_LE1のACフィールドおよびLATフィールドの内容を更新する(ステップB5)。即ち、グループ管理部1354は、SLIフィールドの内容(初期値0)を1インクリメントし、一方、IO管理部1353は、ACフィールドの内容(初期値0)を1インクリメントし、LATフィールドの内容(初期値0)を現在時刻を示すように更新する。
次にグループ管理部1354は、エントリEMTE_LE2のPLEフィールドの内容(初期値0)を、LEN_LE1に変更する(ステップB6)。またグループ管理部1354は、エントリEMTE_LE2のPLIフィールドの内容を更新し、一方、IO管理部1353は、エントリEMTE_LE2のACフィールドおよびLATフィールドの内容を更新する(ステップB7)。即ち、グループ管理部1354は、PLIフィールドの内容(初期値0)を1インクリメントし、一方、IO管理部1353は、ACフィールドの内容(初期値0)を1インクリメントし、LATフィールドの内容(初期値0)を現在時刻を示すように更新する。
次にグループ管理部1354は、特定された論理エクステント範囲内に次の論理エクステント(つまり、現在のLE2の次の論理エクステント)が存在するかを判定する(ステップB8)。もし、次の論理エクステントが存在しないならば(ステップB8のNo)、グループ管理部1354は、図10のフローチャートに従うテーブル更新処理(テーブル更新処理[1])を終了する。
これに対して、次の論理エクステントが存在するならば(ステップB8のYes)、グループ管理部1354は現在のLE2を新たなLE1として選択する(ステップB9)。またグループ管理部1354は、特定された論理エクステント範囲内の次の論理エクステント(つまり、新たなLE1の次の論理エクステント)を新たなLE2として選択する(ステップB10)。
次にグループ管理部1354は、新たなLE1に対応付けられたエントリEMTE_LE1(つまり、前回のLE2に対応付けられたエントリEMTE_LE2)のSLEフィールドの内容(初期値0)を、LEN_LE2に変更する(ステップB11)。またグループ管理部1354は、エントリEMTE_LE1のSLIフィールドの内容を更新する(ステップB12)。即ち、グループ管理部1354は、SLIフィールドの内容(初期値0)を1インクリメントする。そしてグループ管理部1354はステップB6に戻る。
一方、ステップB2において、次の論理エクステントが存在しないと判定されたものとする。つまり、特定された論理エクステント範囲が単一の論理エクステントのみを含むものとする。特定された論理エクステント範囲が単一の論理エクステントのみを含む場合とは、アクセス要求の範囲が1つの論理エクステント内である場合である。この場合(ステップB2のNo)、IO管理部1353は、ステップB7と同様に、エントリEMTE_LE1のACフィールドおよびLATフィールドの内容を更新する(ステップB13)。そしてグループ管理部1354は、図10のフローチャートに従うテーブル更新処理(テーブル更新処理[1])を終了する。
次に、図11および図12を参照して、テーブル更新処理[2]について説明する。
まずグループ管理部1354は、特定された論理エクステント範囲内の論理エクステント数は複数か否かを判定する(ステップC1)。特定された論理エクステント範囲内の論理エクステント数が複数の場合(ステップC1のYes)、グループ管理部1354は、エクステント管理テーブル1332を参照して、特定された論理エクステント範囲内の先頭の論理エクステントに前方リンクエクステントは存在するか否かを判定する(ステップC2)。特定された論理エクステント範囲内の先頭の論理エクステントに前方リンクエクステントが存在する場合とは、当該先頭の論理エクステントが、当該先頭の論理エクステントの前方に位置する直近の論理エクステントと共に既存のエクステントグループに属している場合である。この場合(ステップC2のYes)、グループ管理部1354は、当該先頭の論理エクステントが属しているエクステントグループの代表エクステントを探索すべく、エクステント管理テーブル1332を参照して、当該先頭の論理エクステントを起点に前方リンクエクステントを辿る(ステップC3)。グループ管理部1354は、辿り着いた論理エクステントが代表エクステントとしてエクステントグループ管理テーブル1333に登録されているエクステントグループのエクステント構成数を、エクステントグループ管理テーブル1333を参照して取得する(ステップC4)。また、グループ管理部1354は、上記テーブル更新処理[1]による更新後のエクステント管理テーブル1332に対応する、当該エクステントグループのエクステント構成数を取得すべく、エクステント管理テーブル1332を参照して、辿り着いた論理エクステント、つまり代表エクステントを起点に今度は後方リンクエクステントを辿る(ステップC5)。そして、グループ管理部1354は、ステップC4で取得したエクステント構成数と、ステップC5で取得したエクステント構成数とを比較する(ステップC6)。
ステップC4で取得したエクステント構成数と、ステップC5で取得したエクステント構成数とが一致する場合とは、特定された論理エクステント範囲が既存のエクステントグループ内にある場合である。この場合(ステップC6のYes)、グループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。一方、ステップC4で取得したエクステント構成数と、ステップC5で取得したエクステント構成数とが一致しない場合とは、ステップC3で辿り着いた論理エクステントを代表エクステントとするエクステントグループを、例えば後続するエクステントグループと統合すべく後方に拡張させる場合である。この場合(ステップC6のNo)、グループ管理部1354は、まず、ステップC3で辿り着いた論理エクステントを代表エクステントとするエクステントグループのエクステント構成数を、ステップC5で取得したエクステント構成数に変更すべく、エクステントグループ管理テーブル1333を更新する(ステップC7)。次に、グループ管理部1354は、エクステント管理テーブル1332を参照して、特定された論理エクステント範囲内の先頭の論理エクステントを起点に後方リンクエクステントを辿り、特定された論理エクステント範囲内の2番目以降の論理エクステントが代表エクステントとしてエクステントグループ管理テーブル1333に登録されているエクステントグループをエクステントグループ管理テーブル1333から削除する(ステップC8)。そしてグループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。
また、ステップC2において、特定された論理エクステント範囲内の先頭の論理エクステントに前方リンクエクステントが存在しないと判定される場合とは、当該先頭の論理エクステントが、当該先頭の論理エクステントの前方に位置する直近の論理エクステントと共に既存のエクステントグループに属してはいない場合である。この場合(ステップC2のNo)、グループ管理部1354は、特定された論理エクステント範囲内の先頭の論理エクステントを代表エクステントとするエクステントグループがエクステントグループ管理テーブル1333に登録済みか否かを判定する(ステップC9)。登録済みである場合(ステップC9のYes)、グループ管理部1354は、特定された論理エクステント範囲内の先頭の論理エクステントが代表エクステントとしてエクステントグループ管理テーブル1333に登録されているエクステントグループのエクステント構成数を、エクステントグループ管理テーブル1333を参照して取得する(ステップC10)。また、グループ管理部1354は、更新後のエクステント管理テーブル1332に対応する、当該エクステントグループのエクステント構成数を取得すべく、エクステント管理テーブル1332を参照して、特定された論理エクステント範囲内の先頭の論理エクステントを起点に後方リンクエクステントを辿る(ステップC11)。そして、グループ管理部1354は、ステップC10で取得したエクステント構成数と、ステップC11で取得したエクステント構成数とを比較する(ステップC12)。
ステップC10で取得したエクステント構成数と、ステップC11で取得したエクステント構成数とが一致する場合とは、特定された論理エクステント範囲が既存のエクステントグループ内にある場合である。この場合(ステップC12のYes)、グループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。一方、ステップC10で取得したエクステント構成数と、ステップC11で取得したエクステント構成数とが一致しない場合とは、特定された論理エクステント範囲内の先頭の論理エクステントを代表エクステントとするエクステントグループを、例えば後続するエクステントグループと統合すべく後方に拡張させる場合である。この場合(ステップC12のNo)、グループ管理部1354は、まず、特定された論理エクステント範囲内の先頭の論理エクステントを代表エクステントとするエクステントグループのエクステント構成数を、ステップC11で取得したエクステント構成数に変更すべく、エクステントグループ管理テーブル1333を更新する(ステップC13)。次に、グループ管理部1354は、エクステント管理テーブル1332を参照して、特定された論理エクステント範囲内の先頭の論理エクステントを起点に後方リンクエクステントを辿り、2番目以降の論理エクステントが代表エクステントとしてエクステントグループ管理テーブル1333に登録されているエクステントグループをエクステントグループ管理テーブル1333から削除する(ステップC14)。そしてグループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。
一方、ステップC9において、特定された論理エクステント範囲内の先頭の論理エクステントを代表エクステントとするエクステントグループがエクステントグループ管理テーブル1333に登録されていないと判定した場合(ステップC9のNo)、グループ管理部1354は、当該エクステントグループのエクステント構成数を取得すべく、エクステント管理テーブル1332を参照して、特定された論理エクステント範囲内の先頭の論理エクステントを起点に後方リンクエクステントを辿る(ステップC15)。そして、グループ管理部1354は、特定された論理エクステント範囲内の先頭の論理エクステントを代表エクステントとし、かつ、ステップC15で取得したエクステント構成数のエクステントグループを、エクステントグループ管理テーブル1333へ登録する(ステップC16)。そしてグループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。
また、ステップC1にて、特定された論理エクステント範囲内の論理エクステント数が複数ではない、つまり1であると判定した場合(ステップC1のNo)、グループ管理部1354は、エクステント管理テーブル1332を参照して、特定された論理エクステント範囲内の論理エクステントに前方リンクエクステントまたは後方リンクエクステントは存在するか否かを判定する(ステップC17)。特定された論理エクステント範囲内の論理エクステントに前方リンクエクステントまたは後方リンクエクステントが存在する場合とは、当該論理エクステントが既存のエクステントグループに属している場合である。この場合(ステップC17のYes)、グループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。
一方、特定された論理エクステント範囲内の論理エクステントに前方リンクエクステントも後方リンクエクステントも存在しない場合(ステップC17のNo)、グループ管理部1354は、当該論理エクステントを代表エクステントとするエクステントグループがエクステントグループ管理テーブル1333に登録済みか否かを判定する(ステップC18)。登録済みである場合(ステップC18のYes)、グループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。一方、特定された論理エクステント範囲内の論理エクステントを代表エクステントとするエクステントグループはエクステントグループ管理テーブル1333に登録されていないと判定した場合(ステップC18のNo)、グループ管理部1354は、特定された論理エクステント範囲内の論理エクステントを代表エクステントとし、かつ、エクステント構成数が1のエクステントグループを、エクステントグループ管理テーブル1333へ登録する(ステップC19)。そしてグループ管理部1354は、図11および図12のフローチャートに従うテーブル更新処理(テーブル更新処理[2])を終了する。
ここで、エクステント管理テーブル1332とエクステントグループ管理テーブル1333とがどのように更新されていくのかの具体例について、第1の場合を例に、図13乃至図15を参照して説明する。第1の場合とは、ホスト20からのアクセス要求の範囲が1つの論理エクステント内である場合を指す。このとき、エクステント管理テーブル1332およびエクステントグループ管理テーブル1333は、それぞれ図6および図7に示される初期状態にあるものとする。
ホスト20からのアクセス要求の範囲が、図13に示すように、論理エクステント1内である場合、このアクセス要求に基づいて特定される論理エクステント範囲は、論理エクステント1のみとなる。この場合、エクステント管理テーブル1332は、図14に示すように、LENフィールドに1が保持されるエントリが、IO管理部1353によって更新される。より詳細には、ACフィールドの内容が1インクリメントされ、LATフィールドの内容が現在の時刻を示すように更新される。
また、この第1の場合、グループ管理部1354により、論理エクステント1に対してエクステントグループ番号が発番される。当該発番されたエクステントグループ番号が1であるものとすると、エクステントグループ管理テーブル1333は、図15に示すように、グループ管理部1354によって更新される。より詳細には、エクステントグループ番号が1のエクステントグループがエクステントグループ管理テーブル1333へ登録され(EGNフィールドに1が保持されるエントリが作成され)、EGNフィールドに1が保持されるエントリのPENフィールドの内容が0から(論理エクステント1を示す)1へ、QTYフィールドの内容が0から(アクセス回数1を示す)1へ変更される。
続いて、エクステント管理テーブル1332とエクステントグループ管理テーブル1333とがどのように更新されていくのかの具体例について、第2の場合を例に、図16乃至図18を参照して説明する。第2の場合とは、ホスト20からのアクセス要求の範囲が2つの論理エクステントに跨る場合を指す。第1の場合と同様、このとき、エクステント管理テーブル1332およびエクステントグループ管理テーブル1333は、それぞれ図6および図7に示される初期状態にあるものとする。
ホスト20からのアクセス要求の範囲が、図16に示すように、論理エクステント1と論理エクステント2とに跨る場合、このアクセス要求に基づいて特定される論理エクステント範囲は、論理エクステント1と論理エクステント2とになる。この場合、エクステント管理テーブル1332は、図17に示すように、LENフィールドに2が保持されるエントリと、LENフィールドに3が保持されるエントリとが、グループ管理部1354とIO管理部1353とによって更新される。より詳細には、LENフィールドに2が保持されるエントリにおいては、SLEフィールドの内容が0から3へ変更され、SLIフィールドおよびACフィールドの内容がそれぞれ1インクリメントされ、LATフィールドの内容が現在の時刻を示すように更新される。また、LENフィールドに3が保持されるエントリにおいては、PLEフィールドの内容が0から2へ変更され、PLIフィールドおよびACフィールドの内容がそれぞれ0から1へインクリメントされ、LATフィールドの内容が現在の時刻を示すように更新される。
また、この第2の場合、グループ管理部1354により、論理エクステント2と論理エクステント3との集合に対してエクステントグループ番号が発番される。当該発番されたエクステントグループ番号が1であるものとすると、エクステントグループ管理テーブル1333は、図18に示すように、グループ管理部1354によって更新される。より詳細には、エクステントグループ番号が1のエクステントグループがエクステントグループ管理テーブル1333へ登録され(EGNフィールドに1が保持されるエントリが作成され)、EGNフィールドに1が保持されるエントリのRENフィールドの内容が0から(論理エクステント2を示す)2へ、QTYフィールドの内容が0から(エクステント構成数2を示す)2へ変更される。
続いて、エクステント管理テーブル1332とエクステントグループ管理テーブル1333とがどのように更新されていくのかの具体例について、第3の場合を例に、図19乃至図23を参照して説明する。第3の場合とは、ホスト20からのアクセス要求の範囲が2つの論理エクステントに跨る場合であって、当該2つの論理エクステントがそれぞれ異なるエクステントグループに属している場合を指す。
ホスト20からのアクセス要求の範囲が、図19に示すように、論理エクステント3と論理エクステント4とに跨る場合、このアクセス要求に基づいて特定される論理エクステント範囲は、論理エクステント3と論理エクステント4とになる。この場合、エクステント管理テーブル1332は、図20に示すように、LENフィールドに3が保持されるエントリと、LENフィールドに4が保持されるエントリとが、グループ管理部1354とIO管理部1353とによって更新される。より詳細には、LENフィールドに3が保持されるエントリにおいては、SLEフィールドの内容が0から4へ変更され、SLIフィールドおよびACフィールドの内容がそれぞれ1インクリメントされ、LATフィールドの内容が現在の時刻を示すように更新される。また、LENフィールドに4が保持されるエントリにおいては、PLEフィールドの内容が0から3へ変更され、PLIフィールドおよびACフィールドの内容がそれぞれ1インクリメントされ、LATフィールドの内容が現在の時刻を示すように更新される。
また、ここでは、図19に示すように、論理エクステント3は、論理エクステント1〜3で構成されるエクステントグループに属し、論理エクステント4は、論理エクステント4〜6で構成されるエクステントグループに属しているものとする。そのため、論理エクステント3が属するエクステントグループの当該論理エクステント3以外の論理エクステント1,2に対応づけられる各エントリ、および論理エクステント4が属するエクステントグループの当該論理エクステント4以外の論理エクステント5,6に対応づけられる各エントリ、つまりエクステント管理テーブル1332のLENフィールドに1、2、5、6が保持される各エントリのPLEフィールド、PLIフィールド、SLEフィールド、SLIフィールドおよびACフィールドが、例えば図20に示すような内容となっている。
また、この第3の場合、グループ管理部1354により、論理エクステント3が属するエクステントグループと、論理エクステント4が属するエクステントグループとが統合される。換言すれば、グループ管理部1354は、論理エクステント3が属するエクステントグループと、論理エクステント4が属するエクステントグループとを統合すべく、エクステントグループ管理テーブル1333を更新する。
このエクステントグループ管理テーブル1333の更新において、グループ管理部1354は、まず、エクステント管理テーブル1332を参照して、ホスト20からのアクセス要求の範囲の先頭の論理エクステント3が属するエクステントグループの代表エクステントを取得する。より詳細には、図21に示すように、エクステント管理テーブル1332のPLEフィールドを論理エクステント3を起点に辿って行く。PLEフィールドの内容が0の論理エクステントに辿り着いたら、グループ管理部1354は、その論理エクステントを代表エクステントと判定する。ここでは、論理エクステント1が取得される。代表エクステントが取得できたならば、グループ管理部1354は、更新後のエクステント管理テーブル1332に対応する、取得した論理エクステントを代表エクステントとするエクステントグループのエクステント構成数を取得する。より詳細には、図22に示すように、今度は、エクステント管理テーブル1332のSLEフィールドを代表エクステント(論理エクステント1)を起点に辿って行く。SLEフィールドの内容が0の論理エクステントに辿り着いたら、グループ管理部1354は、その論理エクステントをエクステントグループ終端の論理エクステントと判定し、エクステントグループ始端の代表エクステントから当該エクステントグループ終端の論理エクステントまでの論理エクステント数をエクステント構成数として取得する。
次に、グループ管理部1354は、エクステントグループ管理テーブル1333に登録されている、論理エクステント1を代表エクステントとするエクステントグループのエクステント構成数を確認する。より詳細には、RENフィールドの内容が1のエントリのQTYフィールドの内容を確認する。このエクステント構成数がエクステント管理テーブル1332のSLEフィールドを辿って取得したエクステント構成数と異なる場合、当該エクステントグループの拡張を意味する。ここでは、エクステントグループ管理テーブル1333上における、論理エクステント1を代表エクステントとするエクステントグループのエクステント構成数は3であり、一方、エクステント管理テーブル1332のSLEフィールドを辿って取得したエクステント構成数は6である。そこで、第1に、グループ管理部1354は、論理エクステント1を代表エクステントとするエクステントグループのエクステント構成数を6に改めるべくエクステントグループ管理テーブル1333を更新する。第2に、グループ管理部1354は、論理エクステント1を代表エクステントとするエクステントグループに属する論理エクステントであって、論理エクステント3以降に位置する論理エクステントを代表エクステントとするエクステントグループがエクステントグループ管理テーブル1333に登録されていないかを調べ、登録されている場合、そのエクステントグループを削除すべくエクステントグループ管理テーブル1333を更新する。その結果、エクステントグループ管理テーブル1333は、図23に示すように更新される。より具体的には、RENフィールドの内容が1のエントリのQTYフィールドの内容が3から6へ更新され、また、RENフィールドの内容が4のエントリのすべてのフィールドの内容が初期値へ更新される。
図9のフローチャートに戻る。テーブル更新処理(ステップA2)が実行されると、IO制御部1352が起動される。まずIO制御部1352は、受領されたアクセス要求で示されるアクセスを実行するために、特定された論理エクステント範囲内の論理エクステントの数を変数eとして設定する(ステップA3)。変数eは、アクセスされるべき(つまり、アクセスが未完了の)論理エクステントの数を示す。
次にIO制御部1352は、次にアクセスされるべき1つの論理エクステント(つまりターゲット論理エクステント)を、変数eで示される数の論理エクステントの中から選択する(ステップA4)。次にIO制御部1352は、ターゲット論理エクステント内のアクセスされるべきすべての論理ブロックに割り当てられた同数の物理ブロックに、次のようにアクセスする(ステップA5)。ここで、ターゲット論理エクステント内のアクセスされるべき論理ブロックの数がcであるものとする。この場合、このc個の論理ブロックに割り当てられた物理ブロックの数もcである。
まずIO制御部1352は、ターゲット論理エクステント内のアクセスされるべき全論理ブロックのうちの先頭の論理ブロックに割り当てられた物理ブロック(つまり先頭の物理ブロック)の物理エクステント番号およびオフセットの組を取得する。この物理エクステント番号およびオフセットの組は、前述の先頭の論理ブロックの論理ブロックアドレスおよび論理エクステント番号に基づいて、IO制御部1352がアドレス変換テーブル1331を参照することにより取得される。
IO制御部1352は、先頭の物理ブロックの物理エクステント番号およびオフセットの組を取得することにより、先頭の物理ブロックから始まる、実際にアクセスされるべきc個の物理ブロックと、当該c個の物理ブロックを含むストレージ装置(階層)とを特定する。そしてIO制御部1352は、特定されたストレージ装置内の特定されたc個の物理ブロックに、SIFコントローラ132を介してアクセスする。なお、アクセス要求がライトアクセス要求であり、かつ、当該アクセス要求で指定される論理ブロック範囲内の論理ブロックに物理ブロックが割り当てられていない場合、IO管理部1353は、例えばステップA3の実行時に、論理ブロック範囲内の論理ブロックに高速ストレージ装置11(上位階層)内の連続する同数の空き物理ブロックを割り当てる。
IO制御部1352は、特定されたc個の物理ブロックにアクセスすると(ステップA5)、HIFコントローラ131を介してホスト20に応答を返す(ステップA6)。そしてIO制御部1352は、階層化制御部1355に制御を渡す。すると階層化制御部1355は、低速ストレージ装置12(下位階層)へのアクセスであったかを判定する(ステップA7)。
もし、下位階層へのアクセスであったならば(ステップA7のYes)、ターゲット論理エクステントは近い将来アクセスされる可能性が高いことから、階層化制御部1355は、当該ターゲット論理エクステントに割り当てられた物理エクステントのデータを、アクセス性能の向上のために上位階層に移動すべきであると判断する。また、ターゲット論理エクステントがエクステントグループに属しているならば、当該エクステントグループ内の他のすべての論理エクステントも近い将来アクセスされる可能性が高いことから、階層化制御部1355は、当該他のすべての論理エクステントに割り当てられたそれぞれの物理エクステントのデータも、上位階層に移動すべきであると判断する。そこで、階層化制御部1355は、ターゲット論理エクステントに割り当てられた物理エクステントを含む1つ以上の物理エクステントをデータ移動元として決定するためのデータ移動元決定処理を実行する(ステップA8)。
以下、データ移動元決定処理(ステップA8)の詳細について、図24を参照して説明する。図24はデータ移動元決定処理の典型的な手順を示すフローチャートである。まず階層化制御部1355は、ターゲット論理エクステントが属するエクステントグループに対応付けられたエクステントグループ管理テーブル1333のエントリ、より詳細には、ターゲット論理エクステントが属するエクステントグループの代表エクステントの番号がRENフィールドに設定されているエントリのQTYフィールドを参照する(ステップD1)。
次に階層化制御部1355は、参照されたQTYフィールドに1以外の数値が設定されているかに応じて、ターゲット論理エクステントが、複数の論理エクステントで構成されるエクステントグループに属しているかを判定する(ステップD2)。もし、ターゲット論理エクステントが、複数の論理エクステントで構成されるエクステントグループに属しているならば(ステップD2のYes)、階層化制御部1355はステップD3に進む。ステップD3において階層化制御部1355は、ターゲット論理エクステントが属しているエクステントグループ内の全論理エクステントに割り当てられた物理エクステントの集合を特定する。また、ステップD3において階層化制御部1355は、特定された物理エクステントの集合に含まれている、下位階層内の全物理エクステントを、データ移動元として決定する。決定されたデータ移動元は、ターゲット論理エクステントが割り当てられた物理エクステントを含む。そして階層化制御部1355は、データ移動元決定処理を終了する。
一方、ターゲット論理エクステントが、複数の論理エクステントで構成されるエクステントグループに属していないならば(ステップD2のNo)、階層化制御部1355は、当該ターゲット論理エクステントに割り当てられた物理エクステントのみを、データ移動元として決定する(ステップD4)。そして階層化制御部1355は、データ移動元決定処理を終了する。
図9に戻って、アクセス処理について更に説明する。階層化制御部1355は、図24のフローチャートに従ってデータ移動元決定処理(ステップA8)を実行すると、ステップA9に進む。ステップA9において階層化制御部1355は、データ移動元として決定された物理エクステントの数を変数qとして設定する(ステップA9)。
次に階層化制御部1355は、上位階層内の空き領域を探索する(ステップA10)。即ち階層化制御部1355は、アドレス変換テーブル1331に基づいて、上位階層(高速ストレージ装置11)に含まれていて、かつ論理エクステントに割り当てられてない物理エクステント(つまり、空き物理エクステント)を探索する。なお、空き物理エクステントリストがメモリ133(ローカルHDD134)に格納されているならば、階層化制御部1355が、上位階層内の空き物理エクステントを、当該リストから探索しても良い。ただし、空き物理エクステントリストには、空き物理エクステントの物理エクステント番号の配列が保持されているものとする。
階層化制御部1355は、上位階層内の空き物理エクステントを探索すると、当該空き物理エクステントの数を変数fとして設定する(ステップA11)。ステップA11において階層化制御部1355は、変数qから変数fを差し引いて、その差分q−fを変数rとして設定する。次に階層化制御部1355は、変数r(=q−f)が正であるかを判定する(ステップA12)。
もし、変数rが正であるならば(ステップA12のYes)、即ちq>fであるならば、階層化制御部1355は、データ移動元として決定されたq個の物理エクステントのデータを上位階層に移動するのにr個の空きの物理エクステントが不足していると判断する。この場合、階層化制御部1355は、少なくともr個の新たな空きの物理エクステントを上位階層内に確保するための空き領域確保処理を実行する(ステップA13)。そして階層化制御部1355は、ステップA14に進む。
これに対して変数rが正でないならば(ステップA12のNo)、即ちq≦fであるならば、階層化制御部1355は、データ移動元として決定されたq個の物理エクステントのデータを上位階層に移動するのに十分な数の空きの物理エクステントが既に存在すると判断する。この場合、階層化制御部1355は、ステップA13をスキップしてステップA14に進む。
以下、空き領域確保処理(ステップA13)の詳細について、図25を参照して説明する。図25は空き領域確保処理の典型的な手順を示すフローチャートである。以下の説明では、論理エクステントに上位階層内の物理エクステントが割り当てられている場合、当該論理エクステントを、上位階層に対応する論理エクステントと称する。同様に、エクステントグループ内の複数の論理エクステントに上位階層内の同数の物理エクステントが割り当てられている場合、当該エクステントグループを、上位階層に対応するエクステントグループと称する。
空き領域確保処理において、まず階層化制御部1355は、上位階層に対応するすべてのエクステントグループ(エクステントグループ構成数が1のエクステントグループを含む)に関するリストを生成する(ステップE1)。生成されたリストは、エクステントグループに関する要素群の配列を含む。リストに含まれている、エクステントグループに関する各要素は、当該エクステントグループのエクステントグループ番号、アクセスカウントおよび最終アクセス時刻情報の組を有する。
本実施形態において階層化制御部1355は、エクステントグループに属するすべての論理エクステントのアクセスカウントの平均値を、当該エクステントグループのアクセスカウントとして用いる。しかし階層化制御部1355が、エクステントグループに属するすべての論理エクステントのアクセスカウントのうち、最大のアクセスカウントを、当該エクステントグループのアクセスカウントとして用いても構わない。また、本実施形態において階層化制御部1355は、エクステントグループに属するすべての論理エクステントの最終アクセス時刻のうち、最も新しい最終アクセス時刻を示す最終アクセス時刻情報を、当該エクステントグループの最終アクセス時刻情報として用いる。
前述のリストの生成において階層化制御部1355は、エクステントグループを、エクステントグループ管理テーブル1333に基づいて特定する。また階層化制御部1355は、特定された論理エクステントが上位階層に対応するかを、当該論理エクステントの論理エクステント番号に基づいてアドレス変換テーブル1331を参照することにより判定する。つまり階層化制御部1355は、特定されたエクステントグループが上位階層に対応するかを、当該特定されたエクステントグループ内の論理エクステントの論理エクステント番号に基づいてアドレス変換テーブル1331を参照することにより判定する。つまり階層化制御部1355は、特定されたエクステントグループ内の論理エクステントに割り当てられた物理エクステントの物理エクステント番号に基づいて、当該特定されたエクステントグループ内の論理エクステントが上位階層に対応するかを判定し、この判定結果に基づいて、当該特定されたエクステントグループが上位階層に対応するかを判定する。
階層化制御部1355は、前述のリストを生成すると、当該リスト内の全要素を、それぞれの要素のアクセスカウント(より詳細には、アクセスカウントおよび最終アクセス時刻)に基づいて(例えば、アクセスカウントの昇順に)ソートする(ステップE2)。このソートにおいて、アクセスカウントが同一の複数の要素が存在する場合、階層化制御部1355は、最終アクセス時刻が古い要素ほど低い順位に位置付ける。ただし、説明の簡略化のために、ある要素の順位が別の要素の順位よりも高い(低い)場合、当該ある要素のアクセスカウントは当該別の要素のアクセスカウントよりも大きい(小さい)ものとする。また、アクセスカウントが最小の要素の順位は最下位として扱われる。
次に階層化制御部1355は、生成されたリスト内の要素の数を変数xの初期値として設定する(ステップE3)。変数xは、生成されたリスト内の要素(より詳細には、ソート後の要素)の位置(つまり順位)を示すポインタとして用いられる。そこで、以下の説明では、変数xをポインタxと称する。ステップE3において階層化制御部1355は、変数yを初期値0に設定する。変数yは、空き領域確保処理において上位階層から下位階層にデータが移動された物理エクステントの数、つまり上位階層内に新たに確保された空き物理エクステントの数を示す。
次に階層化制御部1355は、ポインタxで指定されるリスト内の要素(つまり順位が第x位の要素)が、複数の論理エクステントで構成されるエクステントグループであるかを判定する(ステップE4)。もし、第x位の要素が複数の論理エクステントで構成されるエクステントグループであるならば(ステップE4のYes)、階層化制御部1355は、当該第x位のエクステントグループ内の全論理エクステントに割り当てられた同数の物理エクステント内のデータを、上位階層(高速ストレージ装置11)から下位階層(低速ストレージ装置12)内の空き領域に移動する(ステップE5)。このデータの移動により、階層化制御部1355は、第x位のエクステントグループ内の全論理エクステントに割り当てられた上位階層内の同数の物理エクステントを、空き物理エクステント(空き領域)として新たに確保することができる。
次に階層化制御部1355は、変数yを、今回のステップE4の実行によってデータが移動された物理エクステントの数だけインクリメントする(ステップE6)。そして階層化制御部1355は、ステップE9に進む。
これに対し、第x位の要素が複数の論理エクステントで構成されるエクステントグループでないならば(ステップE4のNo)、つまり第x位の要素が、エクステントグループ構成数が1のエクステントグループであるならば、階層化制御部1355は、当該第x位のエクステントグループ(エクステントグループ構成数が1のエクステントグループ)の論理エクステントに割り当てられた物理エクステント内のデータを、上位階層から下位階層内の空き領域に移動する(ステップE7)。このデータの移動により、階層化制御部1355は、第x位のエクステントグループ(エクステントグループ構成数が1のエクステントグループ)の論理エクステントに割り当てられた上位階層内の物理エクステントを、空き物理エクステントとして確保することができる。次に階層化制御部1355は、変数yを1だけインクリメントして(ステップE8)、ステップE9に進む。
ステップE9において階層化制御部1355は、ステップE5またはE7におけるデータの移動が反映されるように、アドレス変換テーブル1331を更新する。即ち、ステップE5の実行に応じてステップE9が実行される場合、階層化制御部1355は、第x位のエクステントグループ内の全論理エクステント(内の論理ブロック群)に割り当てられる同数の物理エクステント(内の物理ブロック群)が、ステップE5におけるデータ移動元の物理エクステント群(内の物理ブロック群)からステップE5におけるデータ移動先の物理エクステント群(内の物理ブロック群)に変更されるように、アドレス変換テーブル1331を更新する。これに対してステップE7の実行に応じてステップE9が実行される場合、階層化制御部1355は、第x位のエクステントグループ(エクステントグループ構成数が1のエクステントグループ)の論理エクステントに割り当てられる物理エクステントが、ステップE7におけるデータ移動元の物理エクステントからステップE7におけるデータ移動先の物理エクステントに変更されるように、アドレス変換テーブル1331を更新する。
階層化制御部1355は、アドレス変換テーブル1331を更新すると、ステップE10に進む。ステップE10において階層化制御部1355は、ステップE6またはE8で更新された変数yが変数r以上であるかを判定する。もし、変数yが変数r以上であるならば(ステップE10のYes)、階層化制御部1355は、空き領域確保処理によって、少なくともr個の新たな空きの物理エクステントを上位階層内に確保できたと判断する。そこで階層化制御部1355は、空き領域確保処理を終了する。
一方、変数yが変数r以上でないならば(ステップE10のNo)、階層化制御部1355は、少なくともr個の新たな空きの物理エクステントを上位階層内に未だ確保できていないと判断する。そこで、階層化制御部1355は、空き領域確保処理を次のように継続する。
まず階層化制御部1355は、ポインタxを1だけディクリメントする(ステップE11)。そして、階層化制御部1355はステップE4に戻って、ディクリメントされたポインタxで指定されるリスト内の要素が、複数の論理エクステントで構成されるエクステントグループであるかを判定する。明らかなように、今回の判定に用いられた要素の順位は、前回の判定に用いられた要素より1つだけ高い。以降の動作は、前回の判定後の動作と同様である。ステップE4〜E11は、少なくともr個の新たな空きの物理エクステントが上位階層内に確保されるまで繰り返し実行される。
図9に戻って、アクセス処理について更に説明する。階層化制御部1355は、図25のフローチャートに従って空き領域確保処理(ステップA13)を実行すると、ステップA14に進む。このとき上位階層内には、少なくともf+r(=q)個の空き物理エクステントが存在する。そこで階層化制御部1355は、データ移動元決定処理(ステップA8)で決定されたq個の物理エクステント内のデータを、上位階層内の空き領域(より詳細には、q個の空き物理エクステント)に移動する(ステップA14)。また階層化制御部1355は、空き領域確保処理(ステップA13)をスキップした場合にも(ステップA12のNo)、前述のデータの移動を実行する(ステップA14)。
次に階層化制御部1355は、ステップA14におけるデータの移動が反映されるように、アドレス変換テーブル1331およびエクステント管理テーブル1332を更新する(ステップA15)。即ち階層化制御部1355は、データ移動元のq個の物理エクステント(内の物理ブロック群)が割り当てられていたq個の論理エクステント(内の論理ブロック群)に、データ移動先のq個の物理エクステント(内の物理ブロック群)が割り当てられるように、アドレス変換テーブル1331を更新する。
階層化制御部1355はステップA15を実行すると、IO制御部1352に制御を返す。するとIO制御部1352は、変数eを1ディクリメントする(ステップA16)。そしてIO制御部1352は、1ディクリメントされた変数eが0以下であるかを判定する(ステップA17)。もし、1ディクリメントされた変数eが0以下であるならば(ステップA17のYes)、IO制御部1352は特定された論理エクステント範囲内のすべての論理エクステントへのアクセスが完了したと判断する。そこでIO制御部1352は、図9のフローチャートに従うアクセス処理を終了する。
これに対し、1ディクリメントされた変数eが0以下でないならば(ステップA17のNo)、IO制御部1352は、特定された論理エクステント範囲内に未だアクセスされていないe個の論理エクステントが存在すると判断する。そこで、IO制御部1352はステップA4に戻り、未だアクセスされていないe個(つまり、変数eで示される数)の論理エクステントの中から、先行してアクセスされた論理エクステントに後続する論理エクステントをターゲット論理エクステントとして選択する。そして、最初のステップA4でターゲット論理エクステントが選択された場合と同様に、ステップA4に続く処理(つまり、ステップA5〜A7を含む処理)が実行される。
最初のステップA4で選択されたターゲット論理エクステントに割り当てられた物理エクステントが下位階層に存在する場合(ステップA7のYes)、最初のステップA14で下位階層から上位階層へのデータ移動が実行される。また、最初のステップA4で選択されたターゲット論理エクステントが複数の論理エクステントで構成されるエクステントグループに属している場合、最初のステップA14の実行後、当該エクステントグループ内の全論理エクステントに割り当てられた物理エクステントの集合は上位階層に存在する。したがって、2回目のステップA4で選択されたターゲット論理エクステントに割り当てられた物理エクステントは、上位階層に存在する(ステップA7のNo)。この場合、ステップA8〜A15をスキップしてステップA16が実行される。
なお、最初のステップA4で選択されたターゲット論理エクステントに割り当てられた物理エクステントが上位階層に存在する場合にも(ステップA7のNo)、ステップA8〜A15をスキップしてステップA16が実行される。そして、2回目のステップA4で選択されたターゲット論理エクステントに割り当てられた物理エクステントが下位階層に存在するならば(ステップA7のYes)、ステップA8が実行される。
本実施形態によれば、階層化制御部1355は、ホスト20からのアクセス要求で指定された論理エクステント範囲が属するエクステントグループ内のすべての論理エクステントに割り当てられた物理エクステントの集合に含まれている、下位階層内のすべての物理エクステントのデータを、当該アクセス要求に従うアクセス処理におけるステップA14の実行により、上位階層に移動する。このデータ移動は、従来実行されていた、定期的なアクセス頻度評価に基づく階層間のデータ移動に比べて、オーバーヘッドが小さく、短時間で実行できる。
指定の論理エクステント範囲が属するエクステントグループ内のそれぞれの論理エクステントは、同時アクセスに関する関連性が高く、仮にアクセスカウントが小さいとしても、近い将来アクセスされる可能性が高い。本実施形態では、このエクステントグループ内のそれぞれの論理エクステント(に割り当てられた物理エクステント)のデータは、前述のデータ移動により、すべて上位階層に存在することが保証される。したがって、データ移動後の近い将来に、前述のエクステントグループ内の任意の論理ブロック範囲へのアクセスが要求された場合、IO制御部1352は、当該任意の論理ブロック範囲に対応する物理ブロック範囲に高速にアクセスすることができる。
図9のフローチャートでは、変数eに関する判定(ステップA17)が、変数eのディクリメント(ステップA16)の直後に実行される。しかし、変数eに関する判定が、例えば、ターゲット論理エクステントの選択(ステップA4)の直前に実行されても良い。もし、変数eが0以下でないならば、IO制御部1352はステップA4に進めばよい。また、変数eが0以下であるならば、IO制御部1352は図9のフローチャートに従うアクセス処理を終了すれば良い。またIO制御部1352は、変数eのディクリメント(ステップA16)の後に、ステップA4の直前に実行される変数eに関する判定に戻ればよい。
このように、本実施形態によれば、階層間のデータ移動を効率化できる。
次に、エクステントグループの分離について説明する。エクステントグループは、時間の経過に伴い、巨大化する可能性がある。エクステントグループが巨大化すると、当該エクステントグループ内の例えば全論理エクステント(に割り当てられている物理エクステント)のデータを下位階層から上位階層に移動するのに、多大な時間を要する。そこで、巨大化したエクステントグループを、グループ分離処理により、2つのエクステントグループに分ける。
以下、グループ分離処理について、図26を参照して説明する。図26は、グループ分離処理の手順を示すフローチャートである。グループ分離処理は、例えば、図9のフローチャートで示されるアクセス処理において、ステップA3の直前(つまり、ステップA2の直後)に追加されるものとする。したがって必要ならば、図9のフローチャートにおいて、ステップA2とステップA3との間に、グループ分離処理を挿入されたい。
まず、グループ管理部1354は、図9のステップA2におけるエクステントグループ管理テーブル1333の更新の結果に基づいて、エクステントグループの拡張が発生したかを判定する(ステップF1)。エクステントグループの拡張とは、当該エクステントグループのエクステントグループ構成数が増加することを指す。
もし、エクステントグループの拡張が発生していないならば(ステップF1のNo)、グループ管理部1354はグループ分離は不要であると判断する。この場合、グループ管理部1354はグループ分離処理を終了して、図9のステップA3に進む。
これに対し、エクステントグループの拡張が発生しているならば(ステップF1のyes)、グループ管理部1354は、拡張されたエクステントグループを特定する(ステップF2)。次にグループ管理部1354は、エクステントグループ管理テーブル1333に基づいて、特定されたエクステントグループのエクステントグループ構成数Neを検出する(ステップF3)。
次にグループ管理部1354は、検出されたエクステントグループ構成数Neが閾値Nthを超えているかを判定する(ステップF4)。閾値Nthは、特定されたエクステントグループが巨大化しているかを判定するための基準値である。本実施形態において、閾値Nthは、上位階層(高速ストレージ装置11)に配置可能な最大のエクステントの数の一定割合、例えば1/2に設定される。しかし、閾値Nthが他の値であっても構わない。
もし、NeがNthを超えていないならば(ステップF4のNo)、グループ管理部1354は、特定されたエクステントグループを分離することは不要であると判断する。この場合、グループ管理部1354はグループ分離処理を終了して、図9のステップA3に進む。
これに対し、NeがNthを超えているならば(ステップF4のYes)、グループ管理部1354は、エクステント管理テーブル1332に基づいて、特定されたエクステントグループ内でリンク強度の最も低い論理エクステント間を検出する(ステップF5)。最小のリンク強度の論理エクステント間が複数検出された場合には、例えば、当該エクステントグループの中央に最も近い論理エクステント間を選択する。
そして、グループ管理部1354は、検出した論理エクステント間でエクステントグループを分離すべく、エクステント管理テーブル1332およびエクステントグループ管理テーブル1333を更新する(ステップF7)。より詳細には、グループ管理部1354は、検出した論理エクステント間について、先方の論理エクステントの後方リンクエクステントおよび後方リンク強度の内容を初期値に戻し、後方の論理エクステントの前方リンクエクステントおよび前方リンク強度の内容を初期値に戻すべく、エクステント管理テーブル1332を更新する。また、グループ管理部1354は、登録済みの当該エクステントグループのエクステントグループ構成数を、分離後の前方のエクステントグループのエクステントグループ構成数に改め、分離後の後方のエクステントグループを別途登録すべく、エクステントグループ管理テーブル1333を更新する。
グループ管理部1354は、グループ分離(ステップF7)を実行すると、グループ分離処理を終了する。そして、図9のフローチャートにおけるステップA3が実行される。なお、グループ分離処理が、ステップA3の直前以外のタイミング、例えばステップA3の直後に実行されても構わない。
(第2実施形態)
次に、第2実施形態について説明する。
次に、第2実施形態について説明する。
本実施形態に係る階層化ストレージシステムも、第1実施形態と同様、階層化ストレージシステム10とホスト20とから構成されるコンピュータシステムに含まれるものとする。以下、第1実施形態と同一の要素については、同一の符号を使用し、その説明を省略する。
第1実施形態では、エクステント管理テーブル1332とエクステントグループ管理テーブル1333とを用いて、ホスト20からの1つのコマンドによりアクセスされたことにより相関があると判断された論理エクステントの集合であるエクステントグループを管理した。これに対して、本実施形態では、エクステント管理テーブル1332とエクステントグループ管理テーブル1333とを用いずに、エクステントグループ単位で階層間のデータ移動を行うことを実現する。
図27は、本実施形態におけるストレージコントローラ13−2の典型的な機能構成を主として示すブロック図である。第1実施形態との違いは、エクステント管理テーブル1332およびエクステントグループ管理テーブル1333に代わり、論理エクステント情報1334が用いられる点にある。
第1実施形態において説明したように、構成管理部1351は、例えば図28に示すように、高速メディア(高速ストレージ装置11)の記憶領域と低速メディア(低速ストレージ装置12)の記憶領域とを仮想化して1以上の論理ユニットを提供する。論理エクステント情報1334は、構成管理部1351によって論理ユニットが作成された際、その論理ユニット用に作成される。論理エクステント情報1334は、例えば図29に示すように、論理エクステント番号(i)フィールド、論理エクステントアドレス(l_address)フィールド、アクセスカウント(access_cnt)フィールド、最終アクセス時刻(last_time)フィールド、リンク強度(link_intensity)フィールドおよび物理エクステントアドレス(p_address)フィールドを有するデータ構造体が、その論理ユニットに含まれる論理エクステント数分設けられる配列(Lext[i])である。この配列には、例えば論理エクステント番号(i)フィールドをキーとした検索を行うためのインデックスが設けられる。その他、例えばアクセスカウント(access_cnt)フィールドの内容に基づいて配列を並べ替えて参照するための副インデックスが設けられてもよい。以下、説明を分かり易くするために、例えば論理エクステント1に対応づけられるデータ構造体(Lext[1])を、論理エクステント1に対応づけられる論理エクステント情報1334と称することがある。
また、論理エクステント情報1334は、論理エクステントアドレス(l_address)フィールドと物理エクステントアドレス(p_address)フィールドとを含むので、アドレス変換テーブル1331の役割を担うことができる。つまり、エクステント管理テーブル1332およびエクステントグループ管理テーブル1333に加え、さらに、アドレス変換テーブル1331を用いないようにしてもよい。逆に、アドレス変換テーブル1331を用いるならば、論理エクステント情報1334の論理エクステントアドレス(l_address)フィールドと物理エクステントアドレス(p_address)フィールドとを省いてもよい。
ここで、論理エクステント情報1334がどのように更新されていくのかの具体例について、第1の場合を例に、図30を参照して説明する。第1の場合とは、ホスト20からのアクセス要求の範囲が1つの論理エクステント内である場合を指す。
ホスト20からのアクセス要求の範囲が1つの論理エクステント内である場合、IO管理部1353−2は、その論理エクステントに対応づけられる論理エクステント情報1334のアクセスカウント(access_cnt)フィールドの内容を1インクリメントし、最終アクセス時刻(last_time)フィールドの内容を現在の時刻を示すように更新する。
続いて、論理エクステント情報1334がどのように更新されていくのかの具体例について、第2の場合を例に、図31を参照して説明する。第2の場合とは、ホスト20からのアクセス要求の範囲が2つの論理エクステントに跨る場合を指す。
ホスト20からのアクセス要求の範囲が、図31に示すように、論理エクステント1と論理エクステント2とに跨る場合、IO管理部1353−2は、論理エクステント1に対応づけられる論理エクステント情報1334(論理エクステント番号(i)フィールドの内容が1のデータ構造体)については、アクセスカウント(access_cnt)フィールドの内容を1インクリメントし、最終アクセス時刻(last_time)フィールドの内容を現在の時刻を示すように更新する。また、IO管理部1353−2は、論理エクステント2に対応づけられる論理エクステント情報1334(論理エクステント番号(i)フィールドの内容が2のデータ構造体)については、アクセスカウント(access_cnt)フィールドの内容を1インクリメントし、最終アクセス時刻(last_time)フィールドの内容を現在の時刻を示すように更新することに加えて、リンク強度(link_intensity)フィールドの内容を1インクリメントする。つまり、本実施形態においては、ホスト20からのアクセス要求の範囲が2つの論理エクステントに跨る場合、後方の論理エクステント対応づけられる論理エクステント情報1334のリンク強度(link_intensity)フィールドの内容のみが1インクリメントされる。換言すれば、論理エクステント情報1334のリンク強度(link_intensity)フィールドの内容は、前方の論理エクステントとの間のリンク強度を示す。
続いて、論理エクステント情報1334がどのように更新されていくのかの具体例について、第3の場合を例に、図32を参照して説明する。第3の場合とは、ホスト20からのアクセス要求の範囲が2つの論理エクステントに跨る場合であって、前方の論理エクステントはさらに1つ前方の論理エクステントとの間で相関があり、また、後方の論理エクステントはさらに1つ後方の論理エクステントとの間で相関がある場合を指す。
ここでは、ホスト20からのアクセス要求の範囲が、図32に示すように、論理エクステント2と論理エクステント3とに跨り、論理エクステント2は前方の論理エクステント1と相関があり、論理エクステント3は後方の論理エクステント4と相関があるものとする。この場合も、IO管理部1353−2は、前述した第2の場合と同様に、論理エクステント情報1334を更新する。より詳細には、IO管理部1353−2は、論理エクステント2に対応づけられる論理エクステント情報1334(論理エクステント番号(i)フィールドの内容が2のデータ構造体)については、アクセスカウント(access_cnt)フィールドの内容を1インクリメントし、最終アクセス時刻(last_time)フィールドの内容を現在の時刻を示すように更新する。また、IO管理部1353−2は、論理エクステント3に対応づけられる論理エクステント情報1334(論理エクステント番号(i)フィールドの内容が2のデータ構造体)については、アクセスカウント(access_cnt)フィールドの内容を1インクリメントし、最終アクセス時刻(last_time)フィールドの内容を現在の時刻を示すように更新することに加えて、リンク強度(link_intensity)フィールドの内容を1インクリメントする。
次に、図33および図34を参照して、階層化制御部1355−2が、以上のように更新される論理エクステント情報1334に基づいて、相関のある論理エクステントの集合をエクステントグループとして取り扱う方法について説明する。
図33は、相関のある論理エクステントの集合、つまりエクステントグループの代表エクステントの探し方を説明するための図である。ここでは、図33に示すように、論理エクステント1〜4の4つの論理エクステントがエクステントグループとして取り扱うべき状況にあるものとする。
このような状況下においては、論理エクステント2〜4のリンク強度が0以外となっている。階層化制御部1355−2は、例えば、論理エクステント1〜4の中のいずれがアクセス要求の範囲となった場合であっても、その論理エクステントを起点にリンク強度が0の論理エクステントへ辿り着くまで論理エクステントを前方へ(番号の小さい方へ)辿ることで、代表エクステントを探し当てることができる。つまり、論理エクステント1が代表エクステントであることを認識することができる。
図34は、相関のある論理エクステントの集合、つまりエクステントグループのエクステントグループ構成数の調べ方を説明するための図である。
代表エクステントを探し当てると、階層化制御部1355−2は、今度は、代表エクステントを起点にリンク強度が0の論理エクステントへ辿り着くまで論理エクステントを後方へ(番号の大きい方へ)辿ることで、エクステントグループ構成数を調べることができる。より詳細には、リンク強度が0の論理エクステントへ辿り着いたら、その1つ前の論理エクステントまでを当該エクステントグループに属する論理エクステントであると判断して、エクステントグループ構成数を取得する。つまり、リンク強度が0以外の論理エクステントが連続する間において論理エクステントを後方へ辿ることで、エクステントグループ構成数を調べることができる。
このように、論理エクステント情報1334に基づいて、アクセス要求の範囲となった論理エクステントが属するエクステントグループの代表エクステントを探し当てることができ、かつ、エクステントグループ構成数を取得することができるので、階層化制御部1355−2は、エクステント管理テーブル1332とエクステントグループ管理テーブル1333とを用いずに、エクステントグループ単位で階層間のデータ移動を行うことが可能である。
以上説明した、少なくとも1つの実施形態によれば、階層間のデータ移動を効率化できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…階層化ストレージシステム、11…高速ストレージ装置(第1のストレージ装置)、12…低速ストレージ装置(第2のストレージ装置)、13…ストレージコントローラ、20…ホスト(ホスト計算機)、133…メモリ、134…ローカルHDD、135…CPU、1331…アドレス変換テーブル、1332…エクステント管理テーブル、1333…エクステントグループ管理テーブル、1334…論理エクステント情報、1351…構成管理部、1352…入出力(IO)制御部、1353…IO管理部、1354…グループ管理部、1355…階層化制御部。
Claims (7)
- 上位階層に位置づけられる第1のストレージ装置と、
下位階層に位置づけられる第2のストレージ装置と、
前記第1および第2のストレージ装置へのアクセスを制御するストレージコントローラと、
を具備し、
前記ストレージコントローラは、
前記第1および第2のストレージ装置の記憶領域が複数の物理ブロックから構成される物理エクステント単位に割り当てられる、前記物理ブロックと同サイズの複数の論理ブロックから構成される複数の論理エクステントの各々に対応づけて、対応する論理エクステントと共に同一のアクセス要求によりアクセスされた当該対応する論理エクステントの前方に位置する論理エクステントを示す前方リンクエクステント識別子と、対応する論理エクステントと共に同一のアクセス要求によりアクセスされた当該対応する論理エクステントの後方に位置する論理エクステントを示す後方リンクエクステント識別子とを少なくとも保持するエクステント管理テーブルを管理し、
前記複数の論理エクステントを含む論理ユニットに対するホスト計算機からのアクセス要求の範囲が、前記論理ユニット内の複数の論理エクステントに跨る場合、当該複数の論理エクステントは相関があると判定し、相関のある論理エクステントの集合を1つのエクステントグループとして、前記エクステント管理テーブルに保持される前方リンクエクステント識別子を辿って各エクステントグループの先頭の論理エクステントを特定するとともに、当該先頭の論理エクステントを起点に前記エクステント管理テーブルに保持される後方リンクエクステント識別子を辿って各エクステントグループに属する論理エクステントの数を取得して、各エクステントグループの先頭の論理エクステントを示す代表エクステント識別子と各エクステントグループに属する論理エクステントの数とを少なくとも保持するエクステントグループ管理テーブルを管理し、
前記エクステント管理テーブルと前記エクステントグループ管理テーブルとに基づき、各エクステントグループに属する複数の論理エクステントに各々対応づけられた複数の物理エクステントに格納されるデータを前記第1および第2のストレージ装置間において一括的に移動させる、
階層化ストレージシステム。 - 前記ストレージコントローラは、前記ホスト計算機からのアクセス要求の範囲が、互いに異なるエクステントグループに属する2以上の論理エクステントに跨る場合、当該2以上の論理エクステントが各々属する2以上のエクステントグループを1つのエクステントグループに統合するために前記エクステントグループ管理テーブルを更新する請求項1に記載の階層化ストレージシステム。
- 前記エクステント管理テーブルは、さらに、対応する論理エクステントへのアクセス回数を保持し、
前記ストレージコントローラは、前記第1のストレージ装置内の物理エクステントに格納されるデータを前記第2のストレージ装置内の物理エクステントに移動させて前記第1のストレージ装置内に空きの物理エクステントを確保する場合、前記エクステント管理テーブルに保持されるアクセス回数に基づき、前記第1のストレージ装置内の物理エクステントにすべての論理エクステントが対応づけられているエクステントグループそれぞれのアクセス回数を算出し、当該算出したアクセス回数に基づき、前記第1のストレージ装置の物理エクステントから前記第2のストレージ装置内の物理エクステントへデータを移動させるエクステントグループを選択する、
請求項1または2に記載の階層化ストレージシステム。 - 前記エクステント管理テーブルは、さらに、対応する論理エクステントが当該対応する論理エクステントの前方に位置する論理エクステントと共に同一のアクセス要求によりアクセスされた回数が示す前方リンク強度と、対応する論理エクステントが当該対応する論理エクステントの後方に位置する論理エクステントと共に同一のアクセス要求によりアクセスされた回数が示す後方リンク強度とを保持し、
前記ストレージコントローラは、エクステントグループに属する論理エクステントの数が閾値を超えた場合、前記エクステント管理テーブルに保持される前方リンク強度および後方リンク強度に基づき、当該エクステントグループを2つのエクステントグループに分離すべく前記エクステント管理テーブルおよび前記エクステントグループ管理テーブルを更新する、
請求項1乃至3のいずれか1項に記載の階層化ストレージシステム。 - 上位階層に位置づけられる第1のストレージ装置と、
下位階層に位置づけられる第2のストレージ装置と、
前記第1および第2のストレージ装置へのアクセスを制御するストレージコントローラと、
を具備し、
前記ストレージコントローラは、
前記第1および第2のストレージ装置の記憶領域が複数の物理ブロックから構成される物理エクステント単位に割り当てられる、前記物理ブロックと同サイズの複数の論理ブロックから構成される複数の論理エクステントの各々に対応づけて、対応する論理エクステントが当該対応する論理エクステントの前方に位置する論理エクステントと共に同一のアクセス要求によりアクセスされた回数が示すリンク強度を少なくとも含む論理エクステント情報を管理し、
前記複数の論理エクステントを含む論理ユニットに対するホスト計算機からのアクセス要求の範囲が、前記論理ユニット内の複数の論理エクステントに跨る場合、当該複数の論理エクステントは相関があると判定し、相関のある論理エクステントの集合を1つのエクステントグループとして、前記回数が0の論理エクステント情報に辿り着くまで前記論理エクステント情報を論理エクステントの並び順に沿って前方に辿って各エクステントグループの先頭の論理エクステントを特定するとともに、当該先頭の論理エクステントを起点に前記回数が0以外の論理エクステント情報が連続する間において前記論理エクステント情報を論理エクステントの並び順に沿って後方に辿って各エクステントグループに属する論理エクステントの数を取得し、
前記特定した各エクステントグループの先頭の論理エクステントと、前記取得した各エクステントグループに属する論理エクステントの数とに基づき、各エクステントグループに属する複数の論理エクステントに各々対応づけられた複数の物理エクステントに格納されるデータを前記第1および第2のストレージ装置間において一括的に移動させる、
階層化ストレージシステム。 - 前記論理エクステント情報は、さらに、対応する論理エクステントへのアクセス回数を含み、
前記ストレージコントローラは、前記第1のストレージ装置内の物理エクステントに格納されるデータを前記第2のストレージ装置内の物理エクステントに移動させて前記第1のストレージ装置内に空きの物理エクステントを確保する場合、前記論理エクステント情報に含まれるアクセス回数に基づき、前記第1のストレージ装置内の物理エクステントにすべての論理エクステントが対応づけられているエクステントグループそれぞれのアクセス回数を算出し、当該算出したアクセス回数に基づき、前記第1のストレージ装置の物理エクステントから前記第2のストレージ装置内の物理エクステントへデータを移動させるエクステントグループを選択する、
請求項5に記載の階層化ストレージシステム。 - 前記ストレージコントローラは、エクステントグループに属する論理エクステントの数が閾値を超えた場合、前記論理エクステント情報に保持されるリンク強度に基づき、当該エクステントグループを2つのエクステントグループに分離するために前記論理エクステント情報を更新する、
請求項5または6に記載の階層化ストレージシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016231202A JP6253752B1 (ja) | 2016-11-29 | 2016-11-29 | 階層化ストレージシステム |
CN201710113310.8A CN108121501B (zh) | 2016-11-29 | 2017-02-28 | 分级存储***、存储控制器以及分级控制方法 |
US15/453,191 US10235071B2 (en) | 2016-11-29 | 2017-03-08 | Tiered storage system, storage controller and tiering control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016231202A JP6253752B1 (ja) | 2016-11-29 | 2016-11-29 | 階層化ストレージシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6253752B1 true JP6253752B1 (ja) | 2017-12-27 |
JP2018088135A JP2018088135A (ja) | 2018-06-07 |
Family
ID=60860137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016231202A Active JP6253752B1 (ja) | 2016-11-29 | 2016-11-29 | 階層化ストレージシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10235071B2 (ja) |
JP (1) | JP6253752B1 (ja) |
CN (1) | CN108121501B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010116A (zh) * | 2021-03-23 | 2021-06-22 | 深圳市元征科技股份有限公司 | 一种数据处理方法、装置、终端设备及可读存储介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10599624B1 (en) * | 2017-02-28 | 2020-03-24 | EMC IP Holding Company LLC | Storage system with directory-based storage tiering |
CN110858124B (zh) | 2018-08-24 | 2021-06-01 | 华为技术有限公司 | 数据迁移方法及装置 |
CN112181274B (zh) * | 2019-07-01 | 2023-06-20 | 北京忆恒创源科技股份有限公司 | 提升存储设备性能稳定性的大块的组织方法及其存储设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258911A (ja) * | 2008-04-15 | 2009-11-05 | Toshiba Corp | ディスクアレイ装置、方法及びプログラム |
WO2015162766A1 (ja) * | 2014-04-24 | 2015-10-29 | 株式会社日立製作所 | ストレージシステム及び半導体記憶装置 |
Family Cites Families (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0490034A (ja) | 1990-08-02 | 1992-03-24 | Hitachi Ltd | 外部記憶装置のデータセット割当方法 |
JPH06139297A (ja) | 1992-10-23 | 1994-05-20 | Ricoh Co Ltd | 回路図自動生成装置及び回路図自動生成方法 |
JPH09297699A (ja) | 1996-04-30 | 1997-11-18 | Hitachi Ltd | 階層記憶装置および階層記憶ファイル管理方法 |
JP3618234B2 (ja) | 1998-10-23 | 2005-02-09 | 松下電器産業株式会社 | 3次元モデル圧縮方法および3次元モデル画像生成方法 |
JP4818812B2 (ja) * | 2006-05-31 | 2011-11-16 | 株式会社日立製作所 | フラッシュメモリストレージシステム |
JP2003085221A (ja) | 2001-09-10 | 2003-03-20 | Nec Corp | Rtl自動階層化システムおよび方法、rtl自動階層化プログラム |
US7404036B2 (en) * | 2005-11-23 | 2008-07-22 | International Business Machines Corporation | Rebalancing of striped disk data |
US8838620B2 (en) * | 2006-02-03 | 2014-09-16 | International Business Machines Corporation | Predictive data object retrieval |
JP5115003B2 (ja) | 2007-03-30 | 2013-01-09 | 日本電気株式会社 | 論理設計支援システム及びプログラム |
JP4586864B2 (ja) | 2008-02-28 | 2010-11-24 | 日本電気株式会社 | プロパティ自動生成装置 |
CN101983376B (zh) * | 2008-04-04 | 2014-04-09 | 松下电器产业株式会社 | 访问装置、信息记录装置、信息记录***、文件管理方法和程序 |
US9454368B2 (en) * | 2009-01-21 | 2016-09-27 | Vmware, Inc. | Data mover permitting data transfer without transferring data between application and operating system |
CN101840308B (zh) * | 2009-10-28 | 2014-06-18 | 创新科存储技术有限公司 | 一种分级存储***及其逻辑卷管理方法 |
US8266325B2 (en) * | 2010-02-05 | 2012-09-11 | International Business Machines Corporation | Compression on thin provisioned volumes using extent based mapping |
US20130138884A1 (en) | 2011-11-30 | 2013-05-30 | Hitachi, Ltd. | Load distribution system |
CN102523300A (zh) * | 2011-12-23 | 2012-06-27 | 国网电力科学研究院 | 面向智能电网的数据密集型云存储模型 |
WO2013103003A1 (ja) | 2012-01-05 | 2013-07-11 | 株式会社日立製作所 | 計算機システムの管理装置及び管理方法 |
WO2013132407A1 (en) * | 2012-03-06 | 2013-09-12 | Koninklijke Philips N.V. | Stereo x-ray tube based suppression of outside body high contrast objects |
JP5942511B2 (ja) | 2012-03-19 | 2016-06-29 | 富士通株式会社 | バックアップ装置,バックアップ方法,およびバックアッププログラム |
US8825724B2 (en) | 2012-03-29 | 2014-09-02 | Lsi Corporation | File system hinting |
US8793466B2 (en) * | 2012-04-27 | 2014-07-29 | Netapp, Inc. | Efficient data object storage and retrieval |
JP6039699B2 (ja) * | 2012-07-23 | 2016-12-07 | 株式会社日立製作所 | ストレージシステム及びデータ管理方法 |
JP2014119831A (ja) | 2012-12-13 | 2014-06-30 | Fujitsu Ltd | ストレージ装置、制御方法及び制御プログラム |
JP6081213B2 (ja) | 2013-02-12 | 2017-02-15 | 株式会社日立ソリューションズ | 業務文書処理装置、業務文書処理プログラム |
KR20150131359A (ko) * | 2013-03-15 | 2015-11-24 | 브래킷 컴퓨팅, 인크. | 데이터의 융통성있는 배치를 위한 다층형 저장 관리 |
CN104246721B (zh) | 2013-03-29 | 2017-02-22 | 株式会社东芝 | 存储***、存储控制器及存储控制方法 |
JP6070371B2 (ja) | 2013-03-29 | 2017-02-01 | 富士通株式会社 | データ配置プログラム、及び情報処理装置 |
JP6160236B2 (ja) | 2013-05-20 | 2017-07-12 | 富士通株式会社 | 情報処理装置、情報処理システム、情報処理装置の制御方法及び情報処理装置の制御プログラム |
US9727255B2 (en) * | 2013-07-19 | 2017-08-08 | Hitachi, Ltd. | Storage apparatus and storage control method |
US9354994B2 (en) * | 2014-02-18 | 2016-05-31 | International Business Machines Corporation | Preemptive relocation of failing data |
CN105074675B (zh) * | 2014-03-04 | 2017-11-07 | 株式会社东芝 | 具有层级化块存储装置的计算机***、存储控制器及介质 |
JP2015170160A (ja) | 2014-03-07 | 2015-09-28 | 富士通株式会社 | 情報処理システム,情報処理装置,情報処理プログラム及び情報処理方法 |
JP6260407B2 (ja) | 2014-03-28 | 2018-01-17 | 富士通株式会社 | ストレージ管理装置、性能調整方法及び性能調整プログラム |
JP6286542B2 (ja) | 2014-06-20 | 2018-02-28 | 株式会社日立製作所 | 計算機システム |
WO2016016989A1 (ja) * | 2014-07-31 | 2016-02-04 | 株式会社 東芝 | 階層化ストレージシステム、ストレージコントローラ及びプログラム |
US9323463B2 (en) | 2014-08-05 | 2016-04-26 | Hitachi, Ltd. | Storage system and cache control method |
CN104573020B (zh) * | 2015-01-12 | 2017-11-10 | 浪潮电子信息产业股份有限公司 | 一种分级存储***中数据自动迁移优化方法 |
US9996294B2 (en) * | 2016-02-02 | 2018-06-12 | International Business Machines Corporation | Dynamically managing a table of contents |
JP6165909B1 (ja) | 2016-03-16 | 2017-07-19 | 株式会社東芝 | 階層化ストレージシステム、ストレージコントローラ、及び階層化制御方法 |
US9927991B2 (en) * | 2016-05-18 | 2018-03-27 | International Business Machines Corporation | Extent movement speed in multi-tiered systems |
US10445235B2 (en) * | 2016-07-29 | 2019-10-15 | Seagate Technology Llc | Weighted data striping |
JP6224186B1 (ja) | 2016-08-01 | 2017-11-01 | 株式会社東芝 | Raidストレージシステム、ストレージコントローラ及びraidアレイパトロール方法 |
-
2016
- 2016-11-29 JP JP2016231202A patent/JP6253752B1/ja active Active
-
2017
- 2017-02-28 CN CN201710113310.8A patent/CN108121501B/zh active Active
- 2017-03-08 US US15/453,191 patent/US10235071B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009258911A (ja) * | 2008-04-15 | 2009-11-05 | Toshiba Corp | ディスクアレイ装置、方法及びプログラム |
WO2015162766A1 (ja) * | 2014-04-24 | 2015-10-29 | 株式会社日立製作所 | ストレージシステム及び半導体記憶装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113010116A (zh) * | 2021-03-23 | 2021-06-22 | 深圳市元征科技股份有限公司 | 一种数据处理方法、装置、终端设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108121501A (zh) | 2018-06-05 |
US20180150250A1 (en) | 2018-05-31 |
CN108121501B (zh) | 2021-02-09 |
JP2018088135A (ja) | 2018-06-07 |
US10235071B2 (en) | 2019-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11994984B2 (en) | Namespace mapping optimization in non-volatile memory devices | |
CN106610903B (zh) | 层级化存储器***、存储器控制器和去重及存储器层级化方法 | |
US9311015B2 (en) | Storage system capable of managing a plurality of snapshot families and method of operating thereof | |
JP5362145B1 (ja) | 論理アドレスと物理アドレスとの間のマッピングを管理するストレージシステム、ストレージコントローラ及び方法 | |
US9229860B2 (en) | Storage system | |
US20060212495A1 (en) | Method and system for storing data into a database | |
JPH08185275A (ja) | ディスクアレイのための領域割り当て方法およびディスクアレイアクセス方法 | |
US10095439B2 (en) | Tiered storage system, storage controller and data location estimation method | |
US20180253252A1 (en) | Storage system | |
JP6253752B1 (ja) | 階層化ストレージシステム | |
JP6867578B2 (ja) | ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム | |
US20180341423A1 (en) | Storage control device and information processing system | |
CN107203479B (zh) | 层级化存储***、存储控制器及层级化控制方法 | |
CN114327272A (zh) | 一种数据处理方法、固态硬盘控制器及固态硬盘 | |
JP5730446B1 (ja) | トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム | |
JP5141234B2 (ja) | 階層記憶制御装置、階層記憶制御システム及びそれらに用いる階層記憶制御方法及びそのプログラム | |
WO2020164216A1 (zh) | 应用于NVMe SSD控制器的namespace的LBA分配方法和映射方法 | |
JP6022116B1 (ja) | 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法 | |
KR20230096359A (ko) | LSM-tree 및 근사 인덱싱에 기반한 FTL을 이용하는 SSD 장치 및 그 동작 방법 | |
KR20200120480A (ko) | 하프-매치(half match) 중복 제거를 수행하는 메모리 시스템 및 이의 동작 방법 | |
WO2018051446A1 (ja) | オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171019 |
|
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: 20171031 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20171128 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6253752 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |