JP6067819B1 - 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法 - Google Patents

階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法 Download PDF

Info

Publication number
JP6067819B1
JP6067819B1 JP2015207130A JP2015207130A JP6067819B1 JP 6067819 B1 JP6067819 B1 JP 6067819B1 JP 2015207130 A JP2015207130 A JP 2015207130A JP 2015207130 A JP2015207130 A JP 2015207130A JP 6067819 B1 JP6067819 B1 JP 6067819B1
Authority
JP
Japan
Prior art keywords
physical
chunk
logical
storage device
data
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
Application number
JP2015207130A
Other languages
English (en)
Other versions
JP2017078983A (ja
Inventor
誉明 今枝
誉明 今枝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Toshiba Digital Solutions Corp
Original Assignee
Toshiba Corp
Toshiba Solutions Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Toshiba Corp, Toshiba Solutions Corp filed Critical Toshiba Corp
Priority to JP2015207130A priority Critical patent/JP6067819B1/ja
Priority to US15/046,002 priority patent/US10037161B2/en
Priority to CN201610091584.7A priority patent/CN106610903B/zh
Application granted granted Critical
Publication of JP6067819B1 publication Critical patent/JP6067819B1/ja
Publication of JP2017078983A publication Critical patent/JP2017078983A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • G06F3/0649Lifecycle management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays

Abstract

【課題】論理ディスクの性能を最適化する。【解決手段】実施形態によれば、階層化ストレージシステムのストレージコントローラは、重複排除制御部と階層化制御部とを具備する。前記重複排除制御部は物理チャンクを単位にデータの重複を排除する。前記階層化制御部は、複数の論理チャンクの入出力統計値に基づいて、前記複数の論理チャンクのいずれかが割り当てられた物理チャンクそれぞれの入出力統計値を取得する。前記階層化制御部は更に、第1のストレージ装置内の物理チャンクのデータを前記第1のストレージ装置よりもアクセス速度が低い第2のストレージ装置内の物理チャンクに再配置するための動作、及び前記第2のストレージ装置内の物理チャンクのデータを前記第1のストレージ装置内の物理チャンクに再配置するための動作の少なくとも一方を、前記物理チャンクそれぞれの入出力統計値に基づいて実行する。【選択図】 図2

Description

本発明の実施形態は、階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法に関する。
近年、アクセス速度の異なる複数のストレージ装置を含むストレージシステムが開発されている。このようなストレージシステムにおいて、ストレージコントローラは、複数のストレージ装置の記憶領域に基づいて、当該ストレージシステムを利用するホスト計算機(ホスト)に対して、仮想化された記憶領域を含む論理ディスクを提供する。論理ディスクは、論理ボリュームまたは論理ユニットとも呼ばれる。
複数のストレージ装置の記憶領域(物理記憶領域)は、管理のために特定の単位領域に分割される。特定の単位領域は、一般に物理エクステントと呼ばれる。ストレージコントローラは、複数のストレージ装置内の任意の物理エクステントを、論理ディスクのサイズに相当する数だけ、当該論理ディスクに割り当てる。これにより、ストレージコントローラは論理ディスクを構築する。物理エクステントが割り当てられる論理ディスク内の領域は、論理エクステントと呼ばれる。
ここで、上述のストレージシステムが、第1及び第2のストレージ装置を含むものとする。また、第1のストレージ装置は、アクセス速度が高い、ソリッドステートドライブ(SSD)のような高速ストレージ装置であるものする。一方、第2のストレージ装置は、第1のストレージ装置よりもアクセス速度が低い、ハードディスクドライブ(HDD)のような低速ストレージ装置であるものとする。
ストレージコントローラは、第1及び第2のストレージ装置を、アクセス速度の違いに基づいて区別して、第1及び第2のストレージ装置内の物理エクステントを階層的に組み合わせる。このような動作はストレージ階層化と呼ばれ、当該ストレージ階層化を適用するストレージシステムは階層化ストレージシステムと呼ばれる。以下の説明では、第1のストレージ装置及び第2のストレージ装置を、それぞれ、高速ストレージ装置及び低速ストレージ装置と称する。
階層化ストレージシステムにおいてストレージコントローラは、論理エクステント毎に、対応する論理エクステントへのアクセスの状況を監視する。ストレージコントローラは、このアクセスの状況を表す指標として、アクセス(入出力)統計値を用いるのが一般的である。アクセス統計値は。例えば、論理エクステント毎のアクセス回数(つまり、リード/ライトのための入出力回数)によって表される。
ストレージコントローラは、論理エクステント毎のアクセス統計値に基づいて、論理エクステントへの物理エクステントの割り当てを動的に変更する。つまり、ストレージコントローラは、アクセスの頻度が高い論理エクステントに低速ストレージ装置内の物理エクステントが割り当てられている場合、当該アクセスの頻度が高い論理エクステントに高速ストレージ装置内の物理エクステントを再割り当てする。同様にストレージコントローラは、アクセスの頻度が低い論理エクステントに高速ストレージ装置内の物理エクステントが割り当てられている場合、当該アクセスの頻度が低い論理エクステントに低速ストレージ装置内の物理エクステントを再割り当てする。
このようにストレージコントローラは、論理エクステント毎のアクセス統計値に基づいて、上位階層の物理エクステントのデータを下位階層の物理エクステントに、下位階層の物理エクステントのデータを上位階層の物理エクステントに、それぞれ動的に再配置する。この再配置(再割り当て)によりストレージコントローラは、限られたストレージリソースで論理ディスクの性能の最適化を図ることができる。
また従来から、ストレージシステムの限られた記憶容量を有効に利用する技術が開発されている。このような技術の1つとして、重複排除技術が注目されている。重複排除技術によれば、同一内容のデータが重複してストレージシステムに格納されるのを防止する。このデータの重複は、例えば、チャンクと呼ばれる小領域を単位に判定されるのが一般的である。チャンクのサイズは、一般に、エクステントのそれより(エクステントサイズ)も小さい。
特開2010−218194号公報
近年、上述のような階層化ストレージシステムにおいても重複排除の適用が要求されている。しかし、重複排除を適用する従来のストレージシステムでは、エクステントよりも小さなサイズのチャンクを単位に、重複排除が行われるのが一般的である。そこで、階層化ストレージシステムにおいて重複排除を適用するためには、論理ディスク内の論理エクステント各々のアクセス統計値を取得する代わりに、論理ディスク内の論理チャンク各々のアクセス統計値を取得することが好ましい。
さて、重複排除を適用した場合、高速ストレージ装置または低速ストレージ装置内の特定のチャンク(物理チャンク)のデータが、論理ディスク内の複数のチャンク(論理チャンク)のデータとして用いられる可能性が高い。この場合、たとえ論理ディスク内の論理チャンク各々のアクセス統計値を取得したとしても、当該アクセス統計値は、対応する物理チャンクのアクセス統計値を示すとは限らない。したがって、このような論理チャンク毎のアクセス統計値に基づいて物理チャンクのデータを再配置しても、必ずしも物理チャンクへのアクセスの状況を反映した再配置とはならず、したがって論理ディスクの性能の最適化を図ることは難しい。
本発明が解決しようとする課題は、論理チャンクを単位にデータの重複を排除しつつ、物理チャンクへのアクセスの状況を反映したデータの再配置により、論理ディスクの性能を最適化することができる、階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法を提供することにある。
実施形態によれば、階層化ストレージシステムは、第1のストレージ装置と、第2のストレージ装置と、ストレージコントローラとを具備する。前記第1のストレージ装置は、複数の物理チャンクから構成される記憶領域を含む。前記第2のストレージ装置は、複数の物理チャンクから構成される記憶領域を含み、前記第1のストレージ装置よりもアクセス速度が低い。前記ストレージコントローラは、前記第1及び第2のストレージ装置へのアクセスを制御し、構成管理部と、入出力制御部と、重複排除制御部と、入出力管理部と、階層化制御部とを具備する。前記構成管理部は、前記第1及び第2のストレージ装置各々の前記記憶領域に基づいて、複数の論理チャンクから構成される仮想化された記憶領域を含む論理ディスクを構築し、前記階層化ストレージシステムを利用するホスト計算機に前記論理ディスクを提供する。前記入出力制御部は、前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする。前記重複排除制御部は、前記アクセス要求に応じて第1の論理チャンクに第1のデータが仮想的にライトされる場合、前記第1のデータと同一内容の第2のデータが前記第1及び第2のストレージ装置のいずれかに格納されているかを判定する。前記第2のデータが、前記第1及び第2のストレージ装置のいずれかにおける、少なくとも第2の論理チャンクに割り当てられた第1の物理チャンクに格納されている第1の場合、前記重複排除制御部は、重複排除のために、前記第1の物理チャンクを前記第1の論理チャンクにも割り当てて且つ前記第1のデータの実際のライトを抑止する。前記第2のデータが前記第1及び第2のストレージ装置のいずれにも格納されていない第2の場合、前記重複排除制御部は、前記第1及び第2のストレージ装置のいずれか一方における空きの第2の物理チャンクを前記第1の論理チャンクに割り当てて、前記入出力制御部により、前記第2の物理チャンクに前記第1のデータをライトさせる。前記入出力管理部は、前記複数の論理チャンクそれぞれへのアクセスの状況を示す入出力統計値を取得する。前記階層化制御部は、前記複数の論理チャンクそれぞれの入出力統計値に基づいて、前記複数の論理チャンクのいずれかが割り当てられた物理チャンクそれぞれの入出力統計値を取得する。前記階層化制御部は更に、第3の論理チャンクに割り当てられた前記第2のストレージ装置内の第3の物理チャンクのデータを前記第1のストレージ装置内の第4の物理チャンクに再配置するための第1の再配置動作、及び第4の論理チャンクに割り当てられた前記第1のストレージ装置内の第5の物理チャンクのデータを前記第2のストレージ装置内の第6の物理チャンクに再配置するための第2の再配置動作の少なくとも一方を、前記物理チャンクそれぞれの入出力統計値に基づいて実行する。
一つの実施形態に係る階層化ストレージシステムを含むコンピュータシステムの典型的なハードウェア構成を示すブロック図。 図1に示されるストレージコントローラの典型的な機能構成を主として示すブロック図。 同実施形態における、物理エクステントと物理チャンクとの典型的な関係、及び当該物理チャンクと論理チャンクとの典型的な関係を示す図。 図2に示されるアドレス変換テーブルのデータ構造例を示す図。 図2に示される重複管理テーブルのデータ構造例を示す図。 図2に示される入出力(IO)統計テーブルのデータ構造例を示す図。 同実施形態における重複排除の例を示す図。 同実施形態におけるライト処理の典型的な手順を示すフローチャート。 図8に示されるライト処理における新規チャンク選択処理の典型的な手順を示すフローチャート。 新規チャンク選択処理で選択された物理チャンクが、データライトが指定された論理チャンクに割り当てられる場合のIOカウントの典型的な引き継ぎを説明するための図。 物理チャンクへのデータのライトが重複排除のために抑止される場合のIOカウントの典型的な引き継ぎを説明するための図。 同実施形態におけるリード処理の典型的な手順を示すフローチャート。 同実施形態における再配置処理の典型的な処理手順を示すフローチャート。 図13に示される再配置処理における第1の再配置動作の典型的な手順を示すフローチャート。 図13に示される再配置処理における第2の再配置動作の典型的な手順を示すフローチャート。 図13に示される再配置処理における第3の再配置動作の典型的な手順を示すフローチャート。 同実施形態の第1の変形例における再配置処理の典型的な処理手順を示すフローチャート。 同第1の変形例における第1の再配置動作の典型的な手順を示すフローチャート。 同第1の変形例における第2の再配置動作の典型的な手順を示すフローチャート。 同第1の変形例における第3の再配置動作の典型的な手順を示すフローチャート。 同第1の変形例における再配置の第1の例を示す図。 同第1の変形例における再配置の第2の例を示す図。 同第1の変形例における再配置の第3の例を示す図。 同第1の変形例における再配置の第4の例を示す図。 同実施形態の第2の変形例における再配置の例を示す図。 同実施形態の第3の変形例における再配置の例を示す図。
以下、実施の形態につき図面を参照して説明する。
図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は、サーバ、或いはクライアントパーソナルコンピュータ(クライアントPC)のような物理計算機である。ホスト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は、ホストからの入出力要求(リード要求またはライト要求)を受信し、当該入出力要求に対する応答を返信する。この入出力(IO)要求は、論理ディスクからデータをリードすること、或いは当該論理ディスクにデータをライトすること(つまり、論理ディスクへのアクセス)を指定する。HIFコントローラ131は、ホスト20からIO(アクセス)要求を受信すると、当該IO要求を、CPU135に伝達する。IO要求を受け取ったCPU135は、当該IO要求を処理する。
SIFコントローラ132は、CPU135が受信したホスト20からのIO要求に対応するアクセス要求(より詳細には、高速ストレージ装置11または低速ストレージ装置12に対するリード要求またはライト要求)を、CPU135から受信する。SIFコントローラ132は、受信されたアクセス要求に応じて、高速ストレージ装置11または低速ストレージ装置12へのアクセスを実行する。
メモリ133は、DRAMのような、書き換えが可能な揮発性メモリである。メモリ133の記憶領域の一部は、ローカルHDD134からロードされる制御プログラム(例えば、ファームウェアプログラム)を格納するのに用いられる。メモリ133の記憶領域の他の一部は、ローカルHDD134からロードされるアドレス変換テーブル1331、重複管理テーブル1332、及び入出力(IO)統計テーブル1333(図2)を格納するのに用いられる。
ローカルHDD134には、ファームウェア(FW)プログラムが格納されている。CPU135は、ストレージコントローラ13が起動されたときにイニシャルプログラムローダ(IPL)を実行することにより、ローカルHDD134に格納されているFWプログラムの少なくとも一部をメモリ133にロードする。IPLは、ROMまたはフラッシュROM(FROM)のような不揮発性メモリに格納されている。
CPU135は、メモリ133にロードされたFWプログラムに従い、構成管理部1361、入出力(IO)制御部1362、重複排除制御部1363、入出力(IO)管理部1364、及び階層化制御部1365(図2)として機能する。つまりCPU135は、メモリ133に格納されているFWプログラムを実行することで、階層化ストレージシステム10全体を制御する。
本実施形態においてストレージコントローラ13は、図1に示されているようにホスト20から独立して備えられている。しかし、ストレージコントローラ13が、ホスト20に内蔵されていても構わない。この場合、ストレージコントローラ13(より詳細には、ストレージコントローラ13の機能)が、ホスト20の有するオペレーティングシステム(OS)の機能の一部を用いて実現されていても構わない。
また、ストレージコントローラ13が、ホスト20のカードスロットに装着して用いられるカードに備えられていても構わない。また、ストレージコントローラ13の一部がホスト20に内蔵され、当該ストレージコントローラ13の残りがカードに備えられていても構わない。また、ホスト20と、ストレージコントローラ13と、高速ストレージ装置11及び低速ストレージ装置12の一部または全部とが、1つの筐体に収められていても構わない。
図2は、図1に示されるストレージコントローラ13の典型的な機能構成を主として示すブロック図である。ストレージコントローラ13は、ファームウェア(FW)136を備えている。FW136は、CPU135がFWプログラムを実行することにより実現される。FW136は、構成管理部1361、IO制御部1362、重複排除制御部1363、IO管理部1364及び階層化制御部1365を含む。構成管理部1361、IO制御部1362、重複排除制御部1363、IO管理部1364及び階層化制御部1365の少なくとも1つがハードウェアによって実現されても構わない。
構成管理部1361は、階層化ストレージシステム10のストレージ構成を管理する。この構成管理は、高速ストレージ装置11及び低速ストレージ装置12の記憶領域に基づいて、仮想化された記憶領域(つまり、論理記憶領域)を含む論理ディスクを構築し、当該論理ディスクをホスト20に提供することを含む。
本実施形態では、論理ディスクの構築(及び管理)のために、当該論理ディスクの記憶領域(論理記憶領域)は、論理チャンクと呼ばれる一定サイズの小領域に分割される。同様に、高速ストレージ装置11及び低速ストレージ装置12の記憶領域(物理記憶領域)は、物理エクステントと呼ばれる、論理チャンクより大きなサイズの領域に分割される。各物理エクステントは、物理チャンクと呼ばれる論理チャンクと同サイズの小領域に更に分割される。つまり、各物理エクステントは、一定数の連続する物理チャンクから構成される。
物理エクステントのサイズ(つまりエクステントサイズ)は、例えば8メガバイト(MB)、即ち8,388,608バイト(B)である。一方、論理チャンク及び物理チャンクのサイズ(つまりチャンクサイズ)は、例えば4キロバイト(KB)、即ち4,096バイト(B)である。しかし、エクステントサイズ及びチャンクサイズは、それぞれ、8MB及び4KBに限らない。
構成管理は更に、高速ストレージ装置11及び低速ストレージ装置12の記憶領域内の物理チャンクを、論理ディスクの記憶領域内の論理チャンクに割り当てること、及び当該割り当ての状態を管理することを含む。この割り当ての状態の管理には、アドレス変換テーブル1331が用いられる。
IO制御部1362は、ホスト20からのデータリードのためのIO要求(アクセス)に応じて、高速ストレージ装置11または低速ストレージ装置12からデータをリードする、またIO制御部1362は、ホスト20からのデータライトのためのIO要求に応じて、高速ストレージ装置11または低速ストレージ装置12にデータをライトする。
重複排除制御部1363は、同一内容のデータが複数の物理チャンクに格納される、いわゆるデータ重複を、物理チャンクを単位に排除する。そのために重複排除制御部1363は、或る論理チャンク(第1の論理チャンク)にデータ(第1のデータ)が仮想的にライトされる場合、当該データと同一内容のデータが高速ストレージ装置11または低速ストレージ装置12に既に格納されているかを判定する。この判定は重複判定と呼ばれ、例えば、第1のデータのハッシュ値を、高速ストレージ装置11及び低速ストレージ装置12内の物理チャンクのそれぞれに格納されているデータのハッシュ値と比較することにより行われる。物理チャンクのそれぞれに格納されているデータのハッシュ値は、重複管理テーブル1332を用いて管理される。
ここで、高速ストレージ装置11または低速ストレージ装置12内の或るデータ(第2のデータ)のハッシュ値が第1のデータのハッシュ値に一致し、且つ第2のデータが、第1の論理チャンクとは異なる少なくとも1つの論理チャンク(例えば、第2の論理チャンク)に割り当てられた第1の物理チャンクに格納されているものとする。この場合、重複排除制御部1363は、第1物理チャンクを第1の論理チャンクにも割り当て、且つ第1のデータが高速ストレージ装置11または低速ストレージ装置12に実際にライトされるのを抑止する。第1の論理チャンクへのアクセスは、第1物理チャンクに物理的にアクセスすることにより実現される。第2の論理チャンクへのアクセスも、第1物理チャンクに物理的にアクセスすることにより実現される。
IO管理部1364は、ホスト20からのIO要求に対応するIOを管理する。このIO管理は、例えば一定期間における各論理チャンクへのアクセスの状況を示すIO(アクセス)統計値(以下、IOカウントと称する)を取得することを含む。論理チャンク毎のIOカウントは、IO統計テーブル1333を用いて管理される。
階層化制御部1365は、低速ストレージ装置12内のアクセスの頻度の高い物理チャンクのデータを、高速ストレージ装置11内の物理チャンクに再配置する。また階層化制御部1365は、高速ストレージ装置11内のアクセスの頻度の低い物理チャンクのデータを、低速ストレージ装置12内の物理チャンクに再配置する。この再配置のために階層化制御部1365は、論理チャンク毎のIOカウントに基づいて、物理チャンク毎のIOカウントを取得する。特に、単一の物理チャンクが重複排除のために複数の論理チャンクに割り当てられている場合、階層化制御部1365は、当該複数の論理チャンクのIOカウントの合計値を当該単一の物理チャンクのIOカウントとして取得する。単一の物理チャンクが複数の論理チャンクに割り当てられていることは、単一の物理チャンクが複数の論理チャンクによって参照されているとも称される。
図3は、本実施形態における、物理エクステントと物理チャンクとの典型的な関係、及び当該物理チャンクと論理チャンクとの典型的な関係を示す。図3に示されるように、高速ストレージ装置11の記憶領域は、物理エクステントPE0_iを含むm個の物理エクステントPE0_0乃至PE0_m−1に分割される。また、低速ストレージ装置12の記憶領域は、物理エクステントPE1_jを含むn個の物理エクステントPE1_0乃至PE1_n−1に分割される。つまり高速ストレージ装置11及び低速ストレージ装置12は、それぞれ、物理エクステントPE0_0乃至PE0_m−1及び物理エクステントPE1_0乃至PE1_n−1を備えている。
物理エクステントPE0_iは、例えば、ストレージ識別子(ID)(=SID=SID0=0)と、エクステント(物理エクステント)ID(=PEID=PEIDi)とによって示される。SID=SID0=0は、高速ストレージ装置11を示す。PEID=PEIDiは、SID=SID0=0で示されるストレージ装置(つまり高速ストレージ装置11)内でユニークなIDであり、当該ストレージ装置内のi番目の物理エクステントを示す。
物理エクステントPE1_jは、例えば、ストレージID(=SID=SID1=1)と、エクステントID(=PEID=PEIDj)とによって示される。SID=SID1=1は、低速ストレージ装置12を示す。PEID=PEIDjは、SID=SID1=1で示されるストレージ装置(つまり低速ストレージ装置12)内でユニークなIDであり、当該ストレージ装置内のj番目の物理エクステントを示す。
物理エクステントPE0_iは、物理チャンクPCi_xを含むp個の物理チャンクPCi_0乃至PCi_p−1に分割され、物理エクステントPE1_jは、物理チャンクPCj_yを含むp個の物理チャンクPCj_0乃至PCj_p−1に分割される。つまり、物理エクステントPE0_i及びPE1_jは、それぞれ、物理チャンクPCi_0乃至PCi_p−1及びPCj_0乃至PCj_p−1を備えている。
物理エクステントPE0_iにおける物理チャンクPCi_0乃至PCi_p−1の位置(つまり相対位置)は、物理エクステントPE0_i内のオフセットOFST0乃至OFSTp−1によって示される。同様に、物理エクステントPE1_jにおける物理チャンクPCj_0乃至PCj_p−1の位置(相対位置)は、物理エクステントPE1_j内のオフセットOFST0乃至OFSTp−1によって示される。
したがって、例えば、物理チャンクPCi_xは、ストレージID(=SID=SID0=0)と、エクステントID(=PEID=PEIDi)と、オフセットOFSTxとによって示される。同様に、物理チャンクPCj_yは、ストレージID(=SID=SID1=1)と、エクステントID(=PEID=PEIDj)と、オフセットOFSTyとによって示される。即ち、ストレージIDと、エクステントIDと、オフセットとの組は、物理アドレスを示す。本実施形態において物理チャンクPCi_x及びPCj_yは、それぞれ、階層化ストレージシステム10内でユニークな物理チャンクID(PCIDα及びPCIDβ)によっても示される。
図3には、2つの論理ディスク137及び138も示されている。論理ディスク137及び138は、ストレージコントローラ13内の構成管理部1361によって構築されて、ホスト20に提供される。論理ディスク137の記憶領域は、論理チャンクLC0_uを含む複数の論理チャンクに分割され、論理ディスク138の記憶領域は、論理チャンクLC1_vを含む複数の論理チャンクに分割される。
論理チャンクLC0_uは、論理ディスクID(=LDID=LDID0=0)と論理ブロックアドレス(LBA=LBAr)とによって示され、論理チャンクLC1_vは、論理ディスクID(=LDID=LDID1=1)と論理ブロックアドレス(LBA=LBAs)とによって示される。LDID=LDID0=0は論理ディスク137を示し、LDID=LDID1=1は論理ディスク138を示す。LBA=LBArは、論理ディスク137における論理チャンクLC0_uの先頭位置の論理ブロックアドレスを示し、LBA=LBAsは論理ディスク138における論理チャンクLC1_vの先頭位置の論理ブロックアドレスを示す。即ち、論理ディスクID(LDID)と論理ブロックアドレス(LBA)との組は、論理アドレスを示す。
図3の例では、物理チャンクPCi_xは、矢印301で示されるように論理チャンクLC1_vに割り当てられている。また、物理チャンクPCj_yは、矢印302で示されるように論理チャンクLC0_uに割り当てられている。
図4は、図2に示されるアドレス変換テーブル1331のデータ構造例を示す。アドレス変換テーブル1331は、2つのテーブル1331a及び1331bから構成される。テーブル1331aの各エントリは論理ディスクIDフィールド、LBAフィールド及び物理チャンクIDフィールドを有しており、論理ディスクID(LDID)、LBA及び物理チャンクID(PCID)の組を保持するのに用いられる。つまり、テーブル1331aの各エントリにおいて、論理ディスクID及びLBAの組は、物理チャンクIDと対応付けられている。
図4において、テーブル1331aの先頭のエントリの論理ディスクIDフィールド、LBAフィールド及び物理チャンクIDフィールドには、LDID0、LBA0及びPCID0が保持されている。この場合、テーブル1331aの先頭のエントリは、LDID0及びLBA0で示される論理ディスク137内の論理チャンクに、PCID0で示される物理チャンクが割り当てられていることを示す。テーブル1331aの2番目のエントリの論理ディスクIDフィールド、LBAフィールド及び物理チャンクIDフィールドには、LDID0、LBA1及び無効値が保持されている。図4において、無効値は記号−で表されており、対応する有効な情報(ここでは、PCID)が未設定であることを示す。この場合、テーブル1331aの2番目のエントリは、LDID0及びLBA1で示される論理ディスク137内の論理チャンクに、物理チャンクが割り当てられていないことを示す。なお、有効な情報(PCID)が未設定であるのを示すのに、対応するフィールド(物理チャンクIDフィールド)がブランクに設定されても良い。
テーブル1331bの各エントリは物理チャンクIDフィールド、ストレージIDフィールド、エクステントIDフィールド及びオフセットフィールドを有しており、物理チャンクID(PCID)、ストレージID(SID)、エクステントID(PEID)及びオフセット(OFST)の組を保持するのに用いられる。つまり、テーブル1331bの各エントリにおいて、物理チャンクIDは、ストレージID、エクステントID及びオフセットの組と対応付けられている。
図4において、テーブル1331bの先頭のエントリの物理チャンクIDフィールド、ストレージIDフィールド、エクステントIDフィールド及びオフセットフィールドには、PCID0,SID0、PEID0及びOFST0が保持されている。この場合、テーブル1331bの先頭のエントリは、PCID0で示される物理チャンクが、SID0、PEID0及びOFST0で示される高速ストレージ装置11内の物理チャンクであることを示す。上述のアドレス変換テーブル1331のデータ構造から明らかなように、アドレス変換テーブル1331は、論理ディスクID及びLBAの組によって示される論理チャンクのアドレス(論理アドレス)を、ストレージID、エクステントID及びオフセットの組によって示される物理チャンクのアドレス(物理アドレス)に変換するのに用いられる。
図5は、図2に示される重複管理テーブル1332のデータ構造例を示す。重複管理テーブル1332の各エントリは物理チャンクIDフィールド、ハッシュ値フィールド及び重複カウントフィールドを有しており、物理チャンクID(PCID)、ハッシュ値(H)及び重複カウント(DCNT)の組を保持するのに用いられる。Hは、PCIDで示される物理チャンクのデータのハッシュ値を示す。つまり本実施形態では、物理チャンクのデータのハッシュ値が、当該データの内容を特定するのに用いられる代表値として用いられる。また、ハッシュ値の計算には、SHA−256のような周知のハッシュ関数が用いられる。
図5において、重複管理テーブル1332の先頭エントリの物理チャンクIDフィールド、ハッシュ値フィールド及び重複カウントフィールドには、PCID0、Ha及びDCNTcが保持されている。この場合、重複管理テーブル1332の先頭のエントリは、PCID0で示される物理チャンクのデータのハッシュ値はHaであり、当該データの重複カウント(つまり、重複数)はDCNTcであることを示す。重複カウント=DCNTcは、PCID0で示される物理チャンクが、DCNTc個の論理チャンクに割り当てられていること、つまりDCNTc個の論理チャンクによって参照されていることを示す。
重複管理テーブル1332の2番目のエントリの物理チャンクIDフィールド、ハッシュ値フィールド及び重複カウントフィールドには、PCID1、無効値(H=“−”)及び0(DCNT=0)が保持されている。この場合、重複管理テーブル1332の2番目のエントリは、PCID1で示される物理チャンクに有効なデータが存在しないこと、つまりPCID1で示される物理チャンクは空きチャンクであることを示す。
図6は、図2に示されるIO統計テーブル1333のデータ構造例を示す。IO統計テーブル1333の各エントリは論理ディスクIDフィールド、LBAフィールド及びIOカウントフィールドを有しており、論理ディスクID(LDID)、LBA及びIOカウントの組を保持するのに用いられる。IOカウントは、LDID及びLBAの組で示される論理チャンクへのアクセスの回数を示す。IO統計テーブル1333は、例えば、階層化制御部1365によるデータ再配置のための処理(再配置処理)に用いられる。
本実施形態において、再配置処理で用いられたIO統計テーブル1333の内容は、次の再配置処理が開始されるまで、旧IO統計テーブルとして、例えばローカルHDD134に保存される。しかし、IO統計テーブル1333の各エントリに、旧IOカウントフィールドが追加されても構わない。この旧IOカウントフィールドは、最新の再配置処理の終了時におけるIOカウントを旧IOカウントとして保持するのに用いられる。
図7は、本実施形態における重複排除の例を示す。図7において、階層化ストレージシステム10の高速ストレージ装置11及び低速ストレージ装置12内には、複数の矩形枠が実線で表されている。実線で表された矩形枠は物理チャンクを示し、当該矩形枠内の文字は当該矩形枠で示される物理チャンクに格納されているデータを示す。図7には、論理ディスク137及び138も示されている。論理ディスク137及び138内には、複数の矩形枠が破線で表されている。破線で表された矩形枠は論理チャンクを示し、当該矩形枠内の文字は当該矩形枠で示される論理チャンクに仮想的に格納されているデータを示す。図7の例では、高速ストレージ装置11においてデータAが格納された物理チャンクは、破線の矢印で示されるように、論理ディスク137内の1つの論理チャンクと、論理ディスク138内の2つの論理チャンクとに割り当てられている。これにより、データAが重複して、高速ストレージ装置11または低速ストレージ装置12に格納されるのが防止される。
次に、本実施形態の動作について説明する。まず、ホスト20からのライトコマンドWCをストレージコントローラ13のHIFコントローラ131が受信した場合に実行されるライト処理について図8を参照して説明する。図8は、本実施形態におけるライト処理の典型的な手順を示すフローチャートである。
一般にライトコマンドWC(及び後述のリードコマンドの各々)は、論理ディスクID(=LDID=LDIDa)、LBA(=LBAb)及びデータ転送サイズを含み、データ転送サイズは、チャンクサイズの整数倍のサイズを有するブロックを単位に表される。本実施形態では説明の簡略化のために、ブロックサイズはチャンクサイズに等しく、且つデータ転送サイズは1ブロックのサイズ(つまり、1チャンクのサイズ)に等しいものとする。
ストレージコントローラ13の重複排除制御部1363は、ライトコマンドWCに応じてライトされるべきライトデータWDのハッシュ値Hcを算出する(ステップS1)。次に重複排除制御部1363は、ハッシュ値Hcに基づいて重複管理テーブル1332を参照することにより、ハッシュ値Hcに等しいハッシュ値を含むエントリ(目標エントリ)を重複管理テーブル1332から探索するための動作を実行する(ステップS2)。そして重複排除制御部1363は、目標エントリを探索できたかを判定する(ステップS3)。
もし、目標エントリを探索できなかったならば(ステップS3のNo)、重複排除制御部1363は、ライトデータWDと同一内容のデータは、高速ストレージ装置11及び低速ストレージ装置12のいずれの物理チャンクにも存在せず、したがってライトデータWDに関する重複排除は不要であると判断する。この場合、重複排除制御部1363は、ライトデータWDが仮想的にライトされるべき論理チャンクLCc(つまり、データライトが指定された論理チャンクLCc)に割り当てられた物理チャンクを特定するための動作を次のように実行する(ステップS4)。論理チャンクLCcは、ライトコマンドWCに含まれている(ライトコマンドWCの指定する)LDIDa及びLBAbの組(論理アドレス)によって指定される。
まず重複排除制御部1363は、上述のLDIDa及びLBAbの組に基づいて、アドレス変換テーブル1331内のテーブル1331aを参照する。そして重複排除制御部1363は、LDIDa及びLBAbの組に対応付けられた有効な物理チャンクIDを、テーブル1331aから探索することにより、LDIDa及びLBAbの組によって指定される論理チャンクLCcに割り当てられた物理チャンクを特定する。
次に重複排除制御部1363は、論理チャンクLCcに割り当てられた物理チャンクを特定できたかを次のように判定する(ステップS5)。まず、LDIDa及びLBAbの組に対応付けられた有効な物理チャンクIDを探索できなかったならば、重複排除制御部1363は、論理チャンクLCcには物理チャンクが割り当てられていないと判断する。この場合、重複排除制御部1363は、論理チャンクLCcに割り当てられた物理チャンクを特定できないと判断する(ステップS5のNo)。
これに対して、有効な物理チャンクIDを探索できたならば、重複排除制御部1363は、探索された物理チャンクIDに基づいて、アドレス変換テーブル1331内のテーブル1331bを参照する。これにより重複排除制御部1363は、探索された物理チャンクIDに対応付けられたストレージID、エクステントID及びオフセットの組を取得する。即ち、重複排除制御部1363は、LDIDa及びLBAbの組(論理アドレス)を、ストレージID、エクステントID及びオフセットの組(物理アドレス)に変換する。ストレージID、エクステントID及びオフセットの組は、LDIDa及びLBAbの組によって指定される論理チャンクLCcに割り当てられた物理チャンクPCdを示す。この場合、重複排除制御部1363は、論理チャンクLCcに割り当てられた物理チャンク(ここでは、物理チャンクPCd)を特定できたと判断する(ステップS5のYes)。
重複排除制御部1363は、物理チャンクPCdを特定できた場合(ステップS5のYes)、重複管理テーブル1332において、当該特定された物理チャンクPCdの物理チャンクIDに対応付けられたエントリ中の重複カウントDCNTdを参照する(ステップS6)。物理チャンクPCdが少なくとも論理チャンクLCcに割り当てられている場合、重複カウントDCNTdは1以上である。
次に重複排除制御部1363は、重複カウントDCNTdが1であるかを判定する(ステップS7)。もし、重複カウントDCNTdが1であるならば(ステップS7のYes)、重複排除制御部1363は、特定された物理チャンクPCdは論理チャンクLCcのみに割り当てられていると判断する。即ち重複排除制御部1363は、物理チャンクPCdに現在格納されているデータは、論理チャンクLCc以外の論理チャンクから参照されておらず、論理チャンクLCc以外の論理チャンクに仮想的に格納されたデータとは異なっていると判断する。この場合、重複排除制御部1363は、特定された物理チャンクPCdに、IO制御部1362によってライトデータWDをライトさせる(ステップS8)。するとIO管理部1364は、IO統計テーブル1333において論理チャンクLCc(より詳細には、論理チャンクLCcを示すLDIDa及びLBAbの組)に対応付けられたエントリ(つまり、LDIDa及びLBAbの組を含むエントリ)中のIOカウントを1インクリメントする(ステップS9)。これにより、ライト処理は終了する。
これに対し、重複カウントDCNTdが1でないならば(ステップS7のNo)、つまり重複カウントDCNTdが1を超えているならば、重複排除制御部1363は、特定された物理チャンクPCdは、論理チャンクLCc以外の少なくとも1つの論理チャンクにも割り当てられていると判断する。即ち重複排除制御部1363は、物理チャンクPCdに現在格納されているデータは、論理チャンクLCc以外の少なくとも1つの論理チャンクからも参照されていると判断する。この場合、重複排除制御部1363は、ライトデータWDは、物理チャンクPCdとは別の空きの物理チャンクにライトされるべきであると判断する。
そこで重複排除制御部1363は、重複カウントDCNTdを1ディクリメントする(ステップS10)。そして重複排除制御部1363は、論理チャンクLCcに新たに割り当てられる空き物理チャンクを高速ストレージ装置11及び低速ストレージ装置12のいずれかから選択するための新規チャンク選択処理を実行する(ステップS11)。本実施形態では、物理チャンクPCeが選択されたものとする。このとき、重複管理テーブル1332において物理チャンクPCeの物理チャンクIDに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容は、それぞれ無効値(“−”)及び0、即ち初期値である。
重複排除制御部1363は、選択された物理チャンクPCeに、IO制御部1362によってライトデータWDをライトさせる(ステップS12)。そして重複排除制御部1363は、重複管理テーブル1332において物理チャンクPCe(新規チャンク)の物理チャンクIDに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドに、それぞれ、算出されたハッシュ値(つまり、ライトデータWDのハッシュ値)Hc及び1を設定する(ステップS13)。即ち重複排除制御部1363は、重複管理テーブル1332において新規チャンクに対応付けられたエントリ中のハッシュ値及び重複カウントを、それぞれ、無効値(“−”)及び0からHc及び1に更新する。
次に重複排除制御部1363は、論理チャンクLCcに対応付けられたアドレス変換テーブル1331内エントリの内容を更新する(ステップS14)。即ち重複排除制御部1363は、アドレス変換テーブル1331のテーブル1331aにおいて、論理チャンクLCcを示すLDIDa及びLBAbの組を含むエントリ中の物理チャンクIDを、物理チャンクPCdの物理チャンクIDから物理チャンクPCeの物理チャンクIDに更新する。するとIO管理部1364は、IO統計テーブル1333において論理チャンクLCcに対応付けられたエントリ中のIOカウントを1インクリメントする(ステップS9)。
一方、目標エントリを探索できたならば(ステップS3のYes)、重複排除制御部1363は、ライトデータWDと同一内容のデータが、高速ストレージ装置11及び低速ストレージ装置12のいずれかにおける物理チャンクに既に存在しており、したがってライトデータWDに関する重複排除が必要であると判断する。この例では、ライトデータWDと同一内容のデータが、物理チャンクPCfに既に存在するものとする。
この場合、重複排除制御部1363は重複排除のために、IO制御部1362による新規物理チャンクへのライトデータWDのライトを抑止する。そして重複排除制御部1363は、重複管理テーブル1332から探索されたエントリ(つまり、物理チャンクPCfに対応付けられたエントリ)中の重複カウントを1インクリメントする(ステップS15)。
重複排除制御部1363はステップS15を実行するとステップS14に進む。ステップS14において重複排除制御部1363は、論理チャンクLCcに対応付けられたアドレス変換テーブル1331内エントリの内容を更新する。即ち重複排除制御部1363は、アドレス変換テーブル1331のテーブル1331aにおいて、論理チャンクLCcを示すLDIDa及びLBAbの組を含むエントリの物理チャンクIDフィールドに、物理チャンクPCfの物理チャンクIDを設定する。このように、物理チャンクPCfが新たに論理チャンクLCcに割り当てられた結果、物理チャンクPCfが割り当てられている(つまり、物理チャンクPCfを参照する)論理チャンクの数は1増加する。重複排除制御部1363によってステップS14が実行されると、IO管理部1364は、IO統計テーブル1333において論理チャンクLCcに対応付けられたエントリ中のIOカウントを1インクリメントする(ステップS9)。
ここで、ステップS3の判定がYesであるために上述のようにステップS15及びS14が実行される場合において、物理チャンクPCfとは別の物理チャンク、例えば物理チャンクPCdが既に論理チャンクLCcに割り当てられているものとする。この場合、重複排除制御部1363は、ステップS14において、上述のアドレス変換テーブル1331を更新する処理に加えて、以下の重複管理テーブル1332を更新する処理を次のように実行する。
まず、物理チャンクPCdに対応付けられた重複管理テーブル1332内エントリを特定エントリと称する。ステップS15及びS14が実行される直前において論理チャンクLCcに物理チャンクPCdが割り当てられていることから、特定エントリ中の重複カウントは1以上である。もし、特定エントリ中の重複カウントが1であるならば、重複排除制御部1363は、当該特定エントリ中のハッシュ値及び重複カウントを、それぞれ無効値(“−”)及び0に更新する。これに対して特定エントリ中の重複カウントが1を超えているならば、重複排除制御部1363は、当該重複カウントを1ディクリメントする。
次に、論理チャンクLCcに割り当てられた物理チャンクを、重複排除制御部1363が特定できなかったものとする(ステップS5のNo)。この場合、重複排除制御部1363は、論理チャンクLCcには有効な物理チャンクが割り当てられていないと判断する。そこで重複排除制御部1363は、論理チャンクLCcに新たに割り当てられるべき空きの物理チャンク(新規チャンク)を選択する(ステップS16)。本実施形態では、低速ストレージ装置12内の空きの物理チャンクが、新規チャンクとして選択される。しかし、高速ストレージ装置11内の空きの物理チャンクが、新規チャンクとして選択されても構わない。また、このような選択のルールが、例えばユーザによりホスト20を介して予め指定されていても構わない。本実施形態では、物理チャンクPCgが選択されたものとする。
重複排除制御部1363は、選択された物理チャンクPCgに、IO制御部1362によってライトデータWDをライトさせる(ステップS12)。そして重複排除制御部1363は、重複管理テーブル1332において物理チャンクPCg(新規チャンク)の物理チャンクIDに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドに、それぞれ、算出されたハッシュ値Hc及び1を設定する(ステップS13)。
そして重複排除制御部1363は、論理チャンクLCcに対応付けられたアドレス変換テーブル1331内エントリの内容を更新する(ステップS14)。即ち重複排除制御部1363は、アドレス変換テーブル1331のテーブル1331aにおいて、論理チャンクLCcを示すLDIDa及びLBAbの組を含むエントリ中の物理チャンクID(=“−”)を、物理チャンクPCgの物理チャンクIDに更新する。するとIO管理部1364は、IO統計テーブル1333において論理チャンクLCcに対応付けられたエントリ中のIOカウントを1インクリメントする(ステップS9)。
次に、図8に示されるライト処理における新規チャンク選択処理(ステップS11)について、図9を参照して説明する。図9は、新規チャンク選択処理の典型的な手順を示すフローチャートである。
まず重複排除制御部1363は、IO統計テーブル1333において、論理チャンクLCc(つまり、データライトが指定された論理チャンクLCc)を示すLDIDa及びLBAbの組と対応付けられたエントリ中の入出力カウント(=IOCNTnew)を取得する(ステップS21)。次に重複排除制御部1363は、最新の再配置処理の終了時における、低速ストレージ装置12内の物理チャンクのIOカウントの中から最大のIOカウント(=IOCNTmax)を選択する(ステップS22)。重複排除制御部1363は、低速ストレージ装置12内の物理チャンクそれぞれのIOカウントを、当該それぞれの物理チャンクが割り当てられる全ての論理チャンクのIOカウントの合計値を算出することにより取得する。重複排除制御部1363は、合計値の算出に、最新の再配置処理の終了時におけるIO統計テーブル1333、つまり旧IO統計テーブルを用いる。
次に重複排除制御部1363は、IOCNTnew及びIOCNTmaxの大小を比較して、例えばIOCNTnewがIOCNTmaxより大きいかを判定する(ステップS23)。もし、IOCNTnewがIOCNTmaxより大きいならば(ステップS23のYes)、重複排除制御部1363は、論理チャンクLCcへのアクセスの頻度が十分高いと判断する。この場合、重複排除制御部1363は、高速ストレージ装置11内の空きの物理チャンクを新規チャンクとして選択する(ステップS24)。そして重複排除制御部1363は、新規チャンク選択処理(図8のステップS11)を終了する。
これに対し、IOCNTnewがIOCNTmaxより大きくないならば(ステップS23のNo)、重複排除制御部1363は、論理チャンクLCcへのアクセスの頻度が低いと判断する。この場合、重複排除制御部1363は、低速ストレージ装置12内の空きの物理チャンクを新規チャンクとして選択する(ステップS25)。そして重複排除制御部1363は、新規チャンク選択処理(図8のステップS11)を終了する。
次に、新規チャンク選択処理(図8のステップS11)で新規チャンクとして選択された物理チャンクを、データライトが指定された論理チャンクに重複排除制御部1363が割り当てた場合のIOカウントの典型的な引き継ぎについて、図10を参照して説明する。図10において、物理チャンクPCaは、矢印101,102及び103で示されるように、論理チャンクLCa,LCb及びLCcに割り当てられている。物理チャンクPCaにはデータAが格納されている。この場合、論理チャンクLCa,LCb及びLCcに、データAが仮想的に格納されている。
本実施形態において物理チャンクPCaのIOCNTは、当該物理チャンクPCaが割り当てられた論理チャンクLCa,LCb及びLCcのIOCNTの合計値により表される。図10において、論理チャンクLCa,LCb及びLCcのIOカウント(IOCNT)は、それぞれ、3,1及び2である。したがって物理チャンクPCaのIOCNTは6である。
このような状態で、論理チャンクLCcへのデータBのライトが矢印104で示されるように要求されたものとする。そして、図9のフローチャートで示される新規チャンク選択処理において、物理チャンクPCbが、論理チャンクLCcに割り当てられるべき新規チャンクとして選択されたものとする。この場合、物理チャンクPCaの割当先は、矢印105で示されるように論理チャンクLCa及びLCbの2つに減少する。そして、論理チャンクLCcには、物理チャンクPCaに代えて物理チャンクPCbが矢印106で示されるように割り当てられる。
物理チャンクPCbにはデータBがライトされる。したがってデータBは、論理チャンクLCcに仮想的にライトされる。これにより論理チャンクLCcのIOCNTは、2から3にインクリメントされる。この場合、階層化制御部1365は、この論理チャンクLCcのインクリメントされたIOCNT(=3)を、物理チャンクPCbのIOCNTとして引き継ぐ。つまり、物理チャンクPCbのIOCNTは、論理チャンクLCcのインクリメントされたIOCNT(=3)を引き継ぐ。一方、物理チャンクPCaのIOCNTは、論理チャンクLCa及びLCbのIOCNT(3及び1)の合計値(=4)に減少する。
次に、物理チャンクへのデータのライトが重複排除のために抑止される場合、つまり物理チャンクに割り当てられる論理チャンクの数が1増加する場合のIOカウントの典型的な引き継ぎについて、図11を参照して説明する。図11において、物理チャンクPCbは、図10におけるデータBのライト後の状態にあるものとする。この状態では、物理チャンクPaは、矢印101及び102で示されるように論理チャンクLCa及びLCbに割り当てられ、物理チャンクPCbは、矢印106で示されるように、論理チャンクLCcに割り当てられている。物理チャンクPCaにはデータAが格納され、物理チャンクPCbにはデータBが格納されている。この場合、論理チャンクLCa及びLCbにデータAが仮想的に格納され、論理チャンクLCcにデータBが仮想的に格納されている。物理チャンクPCaのIOCNTは、当該物理チャンクPCaが割り当てられた論理チャンクLCa及びLCbのIOCNT(3及び1)の合計値(4)により表される。一方、物理チャンクPCcのIOCNTは、当該物理チャンクPCcが割り当てられた論理チャンクLCcのIOCNT(3)により表される。
このような状態で、論理チャンクLCcへのデータAのライトが矢印107で示されるように要求されたものとする。データAは、物理チャンクPCaに既に存在する。そこで重複排除制御部1363は、論理チャンクLCcに現在割り当てられている物理チャンクPCbへのデータAのライトを、重複排除のために抑止する。この場合、物理チャンクPCaの割当先は、矢印108で示されるように論理チャンクLCa,LCb及びLCcの3つに増加する。つまり、物理チャンクPCaは、矢印109で示されるように論理チャンクLCcにも割り当てられる。これにより、データAは新たな物理チャンクにライトされないものの、論理チャンクLCcに仮想的にライトされる。したがって、論理チャンクLCcのIOCNTは、3から4にインクリメントされる。この場合、階層化制御部1365は、データAのライトが要求される前の物理チャンクPCaのIOCNT(4)に、論理チャンクLCcのインクリメントされたIOCNT(4)を加算した値(8)を、当該物理チャンクPCaのIOCNTとして引き継ぐ。つまり、物理チャンクPCaのIOCNTは、データAのライトが要求される前の値(4)と、論理チャンクLCcのインクリメントされたIOCNT(4)との合計値(8)を引き継ぐ。これにより、物理チャンクPCaのIOCNTは、論理チャンクLCcのインクリメントされたIOCNTの値(4)だけ増加する。
次に、本実施形態においてホスト20からのリードコマンドRCをHIFコントローラ131が受信した場合に実行されるリード処理について、図12を参照して説明する。図12は、本実施形態におけるリード処理の典型的な手順を示すフローチャートである。
まず、リードコマンドRCが、論理チャンクLChからのデータリード(仮想的なデータリード)を指定しているものとする。この場合、ストレージコントローラ13のIO制御部1362は、論理チャンクLChに割り当てられた物理チャンクを、前述のライト処理において重複排除制御部1363によって実行されるステップS4(図8)と同様に特定する(ステップS31)。
次にIO制御部1362は、特定された物理チャンクからデータをリードする(ステップS32)。リードされたデータは、HIFコントローラ131によってホスト20に転送される。するとIO管理部1364は、IO統計テーブル1333において論理チャンクLChに対応付けられたエントリ中のIOカウントを1インクリメントする(ステップS33)。これにより、リード処理は終了する。
次に、本実施形態において物理チャンクのデータを再配置するための再配置処理について、図13を参照して説明する。図13は、本実施形態における再配置処理の典型的な処理手順を示すフローチャートである。この再配置処理は、予め定められたスケジュールで(例えば、定期的に)実行される。しかし再配置処理が、例えばユーザによりホスト20を介して指定されたタイミングで実行されても構わない。
今、再配置処理が実行されるべきタイミングが到来したものとする。すると階層化制御部1365は、再配置処理を次のように実行する。まず階層化制御部1365は、全ての有効な物理チャンクを、当該物理チャンクが割り当てられる論理チャンクのIOカウント(IOCNT)の合計値の降順にソートする(ステップS41)。ここで、IOカウントの合計値を取得するための方法について、物理チャンクがPCaであり、物理チャンクPCaの物理チャンクIDがPCIDaである場合を例に説明する。
まず階層化制御部1365は、重複管理テーブル1332において物理チャンクID=PCIDaに対応付けられたエントリから重複カウントDCNTaを取得する。ここで、重複カウントDCNTaは1を超えているものとする。階層化制御部1365は、アドレス変換テーブル1331のテーブル1331aにおいて、物理チャンクID=PCIDaに対応付けられた全てのエントリを参照する。物理チャンクID=PCIDaに対応付けられたエントリの数は、重複カウントDCNTaに一致する。
階層化制御部1365は、物理チャンクID=PCIDaに対応付けられた全てのエントリ(DCNTa個のエントリ)から、物理チャンクPCaが割り当てられた全ての論理チャンク(DCNTa個の論理チャンク)の論理ディスクID及びLBAの組を取得する。階層化制御部1365は、IO統計テーブル1333において、取得された全ての論理チャンクの論理ディスクID及びLBAの組にそれぞれ対応付けられたエントリから、IOカウントを取得する。そして階層化制御部1365は、取得されたIOカウントの合計値を、物理チャンクPCaのIOカウントとして算出する。なお、重複カウントDCNTaが1である場合、アドレス変換テーブル1331内の1エントリのみが、物理チャンクID=PCIDaに対応付けられている。この場合、階層化制御部1365は、IO統計テーブル1333において、上述の1エントリ中の論理ディスクID及びLBAの組に対応付けられたエントリに設定されているIOカウントを、物理チャンクPCaのIOカウントとして取得する。
階層化制御部1365は、ステップS41を実行すると、実使用量Cauを許可量Cpuと比較する(ステップS42)。実使用量Cauとは、高速ストレージ装置11において実際に使用されている(つまり、論理チャンクの群に割り当てられている物理チャンクの群の)容量(第1の容量)を指す。許可量Cpuとは、高速ストレージ装置11において使用が許可されている(上限の)容量(第2の容量)を指す。
次に階層化制御部1365は、上述の比較の結果に基づき、実使用量Cauが許可量Cpuに等しいかを判定する(ステップS43)。もし、実使用量Cauが許可量Cpuに等しくないならば(ステップS43のNo)、階層化制御部1365は、実使用量Cauが許可量Cpu未満であるかを判定する(ステップS44)。
もし、実使用量Cauが許可量Cpu未満であるならば(ステップS44のYes)、階層化制御部1365は、第1の再配置動作(ステップS46)を、第1の条件が成立するまで繰り返す(ステップS45)。そして階層化制御部1365は再配置処理を終了する。第1の条件は、許可量Cpuに満たなかった使用量Cauが当該許可量Cpuに等しくなることである。第1の再配置動作については後述する。
これに対し、実使用量Cauが許可量Cpu未満でなく(ステップS44のNo)、したがって実使用量Cauが許可量Cpuを超えているならば、階層化制御部1365は、第2の再配置動作(ステップS48)を、第2の条件が成立するまで繰り返す(ステップS47)。そして階層化制御部1365は再配置処理を終了する。第2の条件は、許可量Cpuを超えていた使用量Cauが当該許可量Cpuに等しくなることである。第2の再配置動作については後述する。
一方、使用量Cauが許可量Cpuに等しいならば(ステップS43のYes)、階層化制御部1365は、第3の再配置動作(ステップS50)を、第3の条件が成立するまで繰り返す(ステップS49)。そして階層化制御部1365は再配置処理を終了する。第3の条件は、高速ストレージ装置11内の有効な物理チャンクの最小のIOカウントが、低速ストレージ装置12内の有効な物理チャンクの最大のIOカウント以上となることである。有効な物理チャンクとは、論理チャンクに割り当てられている物理チャンク、つまり空きでない物理チャンクを指す。第3の再配置動作については後述する。
次に、図13に示される再配置処理における第1の再配置動作(ステップS46)について、図14を参照して説明する。図14は、第1の再配置動作の典型的な手順を示すフローチャートである。まず階層化制御部1365は、前述のソート処理(図13のステップS41)の結果に基づいて、低速ストレージ装置12内の未選択の物理チャンクの群の中から、IOカウントが最大の物理チャンクを選択する(ステップS51)。
次に階層化制御部1365は、選択された物理チャンク内のデータを、高速ストレージ装置11内の空きの物理チャンクにコピー(再配置)する(ステップS52)。ここで、コピー元の物理チャンク(つまり、選択された物理チャンク)の物理チャンクIDがPCIDcsであり、コピー先の物理チャンクの物理チャンクIDがPCIDcdであるものとする。また、コピー先の物理チャンクは、論理チャンクLCu_wに割り当てられているものとする。この場合、アドレス変換テーブル1331のテーブル1331aにおいて論理チャンクLCu_w(を示す論理ディスクID及びLBAの組)に対応付けられたエントリの物理チャンクIDフィールドには、PCIDcdが設定されている。
階層化制御部1365はステップS52を実行すると、アドレス変換テーブル1331における、コピー元の物理チャンク(つまり、選択された物理チャンク)に対応付けられたエントリの内容を次のように更新する(ステップS53)。まず階層化制御部1365は、アドレス変換テーブル1331内のテーブル1331aにおける、コピー元の物理チャンクに対応付けられたエントリ(つまり、PCIDcsが設定されたエントリ)を特定する。そして階層化制御部1365は、特定されたエントリ中の物理チャンクIDフィールドの内容を、PCIDcsからPCIDcdに変更する。これにより、論理チャンクLCu_wに割り当てられる物理チャンクは、コピー元の物理チャンクからコピー先の物理チャンクに変更される。
また階層化制御部1365は、重複管理テーブル1332における、コピー元の物理チャンク及びコピー先の物理チャンクに対応付けられたエントリの内容を、重複排除制御部1363によって更新させる(ステップS54)。即ち重複排除制御部1363は、重複管理テーブル1332における、コピー元の物理チャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容を、重複管理テーブル1332における、コピー先の物理チャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容(無効値及び0)と入れ替える。すると階層化制御部1365は、第1の再配置動作(図13のステップS46)を終了する。なお、ステップS54がステップS53の前に実行されても構わない。
次に、図13に示される再配置処理における第2の再配置動作(ステップS48)について、図15を参照して説明する。図15は、第2の再配置動作の典型的な手順を示すフローチャートである。まず階層化制御部1365は、前述のソート処理の結果に基づいて、高速ストレージ装置11内の未選択の物理チャンクの群の中から、IOカウントが最小の物理チャンクを選択する(ステップS61)。
次に階層化制御部1365は、選択された物理チャンク内のデータを、低速ストレージ装置12内の空きの物理チャンクにコピーする(ステップS62)。次に階層化制御部1365は、アドレス変換テーブル1331における、コピー元の物理チャンクに対応付けられたエントリの内容を、前述のステップS53(図14)と同様に更新する(ステップS63)。
次に階層化制御部1365は、重複管理テーブル1332における、コピー元の物理チャンク及びコピー先の物理チャンクに対応付けられたエントリの内容を、重複排除制御部1363によって前述のステップS54(図14)と同様に更新させる(ステップS64)。すると階層化制御部1365は、第2の再配置動作(図13のステップS48)を終了する。
次に、図13に示される再配置処理における第3の再配置動作(ステップS50)について、図16を参照して説明する。図16は、第3の再配置動作の典型的な手順を示すフローチャートである。第3の再配置動作は、第1及び第2の再配置動作に相当する2つの再配置動作から構成される。
まず階層化制御部1365は、第1の再配置動作(図14のステップS51乃至S54)に相当する再配置動作(ステップS71乃至S74)を実行する。必要ならば、前述の第1の再配置動作に関する説明において、ステップS51乃至S54を、ステップS71乃至S74に置き換えられたい。次に階層化制御部1365は、第2の再配置動作(図15のステップS61乃至S64)に相当する再配置動作(ステップS75乃至S78)を実行する。必要ならば、前述の第2の再配置動作に関する説明において、ステップS61乃至S64を、ステップS75乃至S78に置き換えられたい。
上述したように本実施形態によれば、重複排除制御部1363は、論理チャンクを単位にデータの重複を排除する。一方、階層化制御部1365は、IO管理部1364によって取得される複数の論理チャンクそれぞれのIOカウントに基づいて、複数の論理チャンクのいずれかが割り当てられた物理チャンクそれぞれのIOカウントを取得する。そして階層化制御部1365は、物理チャンクそれぞれのIOカウント(つまり、物理チャンクへのアクセスの状況)に基づいて、高速ストレージ装置11及び低速ストレージ装置12の間(つまり階層間)のデータの再配置を、物理チャンクを単位に実行する。これにより本実施形態は、論理チャンクを単位にデータの重複を排除しつつ、物理チャンクへのアクセスの状況を反映したデータの再配置を実現できる。よって本実施形態によれば、論理ディスクの性能を最適化することができる。
なお、ステップS75乃至S78が、ステップS71乃至S74の前に実行されても構わない。また階層化制御部1365が、前述の2つのコピー処理(ステップS72及びS76)に代えて、ステップS71で選択された物理チャンク内のデータとステップS75で選択された物理チャンク内のデータとを交換する処理を、例えばステップS75の次に実行しても構わない。
また、前述の第1の再配置動作に相当する再配置動作が、図11に示されるような、物理チャンクに割り当てられる論理チャンクの数が1増加することに伴うIOカウントの引き継ぎ時に実行されても構わない。図11の例は、物理チャンクPCaに格納されているデータAと同一内容のデータが論理チャンクLCcに仮想的にライトされる場合を想定している。この場合、重複排除のために、データAと同一内容のデータの物理チャンクへの新規ライトが抑止され、物理チャンクPCaが論理チャンクLCcにも割り当てられる。図11の例では、この割り当てにより、物理チャンクPCaが割り当てられている論理チャンクの数は、2から3に増加する。これにより、物理チャンクPCaのIOCNTも、4から8に増加する。このとき、物理チャンクPCaが低速ストレージ装置12内の物理チャンクであるものする。この場合、階層化制御部1365は、最新の再配置処理の終了時における、高速ストレージ装置112内の物理チャンクのIOカウントの中から最小のIOカウント(=IOCNTmin)を選択する。そして階層化制御部1365は、物理チャンクPCaのIOCNTが、IOCNTminを超えているならば、物理チャンクPCaのアクセス頻度は上昇したと判断する。そこで階層化制御部1365は、物理チャンクPCaのデータを、第1の再配置動作と同様に、高速ストレージ装置11内の空きの物理チャンクに再配置する。
同様に、前述の第2の再配置動作に相当する再配置動作が、図10に示されるような、特定の論理チャンクへの新規チャンク(物理チャンク)の割り当てに伴う当該新規チャンクへのIOカウントの引き継ぎ時に実行されても構わない。図10の例では、論理チャンクLCcに新たに物理チャンクPcbが割り当てられた結果、物理チャンクPCaが割り当てられている論理チャンクの数は、3から2に減少する。これにより、物理チャンクPCaのIOCNTも、6から4に減少する。このとき、物理チャンクPCaが高速ストレージ装置11内の物理チャンクであるものする。この場合、階層化制御部1365は、最新の再配置処理の終了時における、低速ストレージ装置12内の物理チャンクのIOカウントの中から最大のIOカウント(=IOCNTmax)を選択する。そして階層化制御部1365は、物理チャンクPCaのIOCNTが、IOCNTmax未満であるならば、物理チャンクPCaのアクセス頻度は低下したと判断する。そこで階層化制御部1365は、物理チャンクPCaのデータを、第2の再配置動作と同様に、低速ストレージ装置12内の空きの物理チャンクに再配置する。
<第1の変形例>
次に、前記実施形態の第1の変形例について説明する。第1の変形例の特徴は、エクステントに基づいて実行される再配置処理を適用することにある。以下、第1の変形例における再配置処理について、図17を参照して説明する。図17は、第1の変形例における再配置処理の典型的な処理手順を示すフローチャートである。以下の説明では、高速ストレージ装置11内の物理エクステントを高速エクステントと呼び、低速ストレージ装置12内の物理エクステントを低速エクステントと称する。
今、再配置処理が実行されるべきタイミングが到来したものとする。すると階層化制御部1365は、再配置処理を次のように実行する。まず階層化制御部1365は、前記実施形態における再配置処理のステップS41乃至S43(図13)に相当するステップS81乃至S83を実行する。必要ならば、前記実施形態における再配置処理に関する説明において、ステップS41乃至S43を、ステップS81乃至S83に置き換えられたい。
階層化制御部1365は、ステップS83において、実使用量Cauが許可量Cpuに等しいかを判定する。もし、実使用量Cauが許可量Cpuに等しくないならば(ステップS83のNo)、階層化制御部1365は、実使用量Cauが許可量Cpu未満であるかを判定する(ステップS84)。
もし、実使用量Cauが許可量Cpu未満であるならば(ステップS84のYes)、階層化制御部1365は、第1の再配置動作(ステップS86)を、前述の第1の条件が成立するまで繰り返す(ステップS85)。第1の再配置動作(ステップS86)は後述のようにエクステントに基づいて実行される点で、前記実施形態における第1の再配置動作(図13のステップS46)と異なる。
これに対し、実使用量Cauが許可量Cpu未満でないならば(ステップS84のNo)、階層化制御部1365は、第2の再配置動作(ステップS88)を、前述の第2の条件が成立するまで繰り返す(ステップS87)。第2の再配置動作(ステップS88)は後述のようにエクステントに基づいて実行される点で、前記実施形態における第2の再配置動作(図13のステップS48)と異なる。
一方、使用量Cauが許可量Cpuに等しいならば(ステップS83のYes)、階層化制御部1365は、第3の再配置動作(ステップS90)を、前述の第3の条件が成立するまで繰り返す(ステップS89)。第3の再配置動作(ステップS90)は後述のようにエクステントに基づいて実行される点で、前記実施形態における第3の再配置動作(図13のステップS50)と異なる。
次に、図17に示される再配置処理における第1の再配置動作(ステップS86)について、図18を参照して説明する。図18は、第1の変形例における第1の再配置動作の典型的な手順を示すフローチャートである。まず階層化制御部1365は、少なくとも1つの空きチャンクを含む使用中の高速エクステントを次のように探す(ステップS91)。
第1の変形例において、空きチャンクの物理チャンクIDは、重複管理テーブル1332において無効値(“−”)が設定されたハッシュ値フィールドを含むエントリの物理チャンクフィールドにより示される。なお、空きチャンクの物理チャンクIDが、空きチャンクリストによって示されていても構わない。ここで、空きチャンクがPCfcであり、空きチャンクPCfcの物理チャンクIDがPCIDfcであるものとする。また、空きチャンクPCfcを含む物理エクステントのエクステントIDがPEIDfcであるものとする。この場合、階層化制御部1365は、アドレス変換テーブル1331のテーブル1331bにおいてSID0及びPEIDfcを含む全てのエントリの物理チャンクフィールドに設定されている物理チャンクIDを取得する。
階層化制御部1365は、取得された物理チャンクIDに基づいて重複管理テーブル1332を参照することにより、当該取得された物理チャンクIDの少なくとも1つが有効なハッシュ値と対応付けられたエントリを探す。もし、このようなエントリを探すことができたならば、階層化制御部1365は、PEIDfcで示される物理エクステントは、空きチャンクを含む使用中の高速エクステントであると判断する。
なお、ストレージコントローラ13が、高速ストレージ装置11及び低速ストレージ装置12内の物理エクステントの各々の状態を管理するためエクステント管理テーブルを備えていても良い。このエクステント管理テーブルは、物理エクステントそれぞれに対応付けられたエントリを有し、対応する物理エクステントが使用中または空きのいずれであるかを示すフラグと、対応する物理エクステントにおける使用中の物理チャンクのリスト及び空きの物理チャンクのリストの少なくとも一方とを含むものとする。この場合、階層化制御部1365は、この管理テーブルに基づいて、空きチャンクを含む使用中の高速エクステント(または低速エクステント)を簡単に探すことができる。また、階層化制御部1365は、この管理テーブルに基づいて、空きの高速エクステント(または低速エクステント)を探すこともできる。
さて階層化制御部1365は、ステップS91を実行すると、目的の高速エクステント(即ち、空きチャンクを含む使用中の高速エクステント)を探すことができたかを判定する(ステップS92)。もし、目的の高速エクステントを探すことができなかったならば(ステップS92のNo)、階層化制御部1365は、空きの高速エクステントを選択する(ステップS93)。次に階層化制御部1365は、物理エクステント中の物理チャンクの数pを変数tに設定する(ステップS94)。そして階層化制御部1365はステップS98に進む。
これに対し、目的の高速エクステントを探すことができたならば(ステップS92のYes)、階層化制御部1365は、当該目的の高速エクステントを選択する(ステップS95)。次に階層化制御部1365は、選択された高速エクステント内の空きチャンクの数qを検出し(ステップS96)、検出された数qを変数tに設定する(ステップS97)。そして階層化制御部1365はステップS98に進む。明らかなように、qは1以上p未満である。
ステップS98において階層化制御部1365は、低速ストレージ装置12(低速エクステントの群)内の未選択のチャンクの群の中から、IOカウントが上位のt個のチャンクを選択する。次に階層化制御部1365は、選択されたt個のチャンク内のデータを、選択された高速エクステント内のt個の空きチャンクにコピー(再配置)する(ステップS99)。もし、コピー元のt個のチャンクが、ステップS95で選択された使用中の高速エクステント内の空きのチャンクである場合、当該使用中の高速エクステントの部分的な空き状態(いわゆる虫食い状態)は、ステップS99におけるコピーで解消される。
次に階層化制御部1365は、アドレス変換テーブル1331における、コピー元のt個のチャンクに対応付けられたエントリの内容を更新する(ステップS100)。即ち、階層化制御部1365は、アドレス変換テーブル1331における、コピー元のt個のチャンクに対応付けられたt個のエントリ中の物理チャンクIDフィールドの内容を、コピー先のt個のチャンクの物理チャンクIDに変更する。
また階層化制御部1365は、重複管理テーブル1332における、コピー元のt個のチャンク及びコピー先のt個のチャンクに対応付けられたエントリの内容を、重複排除制御部1363によって更新させる(ステップS101)。即ち重複排除制御部1363は、重複管理テーブル1332における、コピー元のt個のチャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容を、重複管理テーブル1332における、コピー先のt個のチャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容(無効値及び0)と入れ替える。すると階層化制御部1365は、第1の再配置動作(図17のステップS86)を終了する。なお、ステップS101がステップS100の前に実行されても構わない。
次に、図17に示される再配置処理における第2の再配置動作(ステップS88)について、図19を参照して説明する。図19は、第1の変形例における第2の再配置動作の典型的な手順を示すフローチャートである。まず階層化制御部1365は、少なくとも1つの空きチャンクを含む使用中の低速エクステントを探す(ステップS111)。ここで、空きチャンクがPCfdであり、空きチャンクPCfdの物理チャンクIDがPCIDfdであるものとする。また、空きチャンクPCfdを含む物理エクステントのエクステントIDがPEIDfdであるものとする。この場合、階層化制御部1365は、アドレス変換テーブル1331のテーブル1331bにおいてSID1及びPEIDfdを含む全てのエントリの物理チャンクフィールドに設定されている物理チャンクIDを取得する。
階層化制御部1365は、取得された物理チャンクIDに基づいて重複管理テーブル1332を参照することにより、当該取得された物理チャンクIDの少なくとも1つが有効なハッシュ値と対応付けられたエントリを探す。もし、このようなエントリを探すことができたならば、階層化制御部1365は、PEIDfdで示される物理エクステントは、空きチャンクを含む使用中の低速エクステントであると判断する。
さて階層化制御部1365は、ステップS111を実行すると、目的の低速エクステント(即ち、空きチャンクを含む使用中の低速エクステント)を探すことができたかを判定する(ステップS112)。もし、目的の低速エクステントを探すことができなかったならば(ステップS112のNo)、階層化制御部1365は、空きの低速エクステントを選択する(ステップS113)。次に階層化制御部1365は、前述のステップS93(図18)と同様に、物理エクステント中の物理チャンクの数pを変数tに設定する(ステップS114)。そして階層化制御部1365はステップS118に進む。
これに対し、目的の低速エクステントを探すことができたならば(ステップS112のYes)、階層化制御部1365は、当該目的の低速エクステントを選択する(ステップS115)。次に階層化制御部1365は、選択された低速エクステント内の空きチャンクの数qを検出し(ステップS116)、検出された数qを前述のステップS97(図18)と同様に変数tに設定する(ステップS117)。そして階層化制御部1365はステップS118に進む。
ステップS118において階層化制御部1365は、高速ストレージ装置11(高速エクステントの群)内の未選択のチャンクの群の中から、IOカウントが下位のt個のチャンクを選択する。次に階層化制御部1365は、選択されたt個のチャンク内のデータを、選択された低速エクステント内のt個の空きチャンクにコピー(再配置)する(ステップS119)。もし、コピー元のt個のチャンクが、ステップS115で選択された使用中の低速エクステント内の空きのチャンクである場合、当該使用中の低速エクステントの部分的な空き状態は、ステップS119におけるコピーで解消される。
次に階層化制御部1365は、アドレス変換テーブル1331における、コピー元のt個のチャンクに対応付けられたエントリの内容を、前述のステップS100(図18)と同様に更新する(ステップS120)。また階層化制御部1365は、重複管理テーブル1332における、コピー元のt個のチャンク及びコピー先のt個のチャンクに対応付けられたエントリの内容を、重複排除制御部1363によって前述のステップS101(図18)と同様に更新させる(ステップS121)。すると階層化制御部1365は、第2の再配置動作(図17のステップS88)を終了する。なお、ステップS121がステップS120の前に実行されても構わない。
次に、図17に示される再配置処理における第3の再配置動作(ステップS90)について、図20を参照して説明する。図20は、第1の変形例における第3の再配置動作の典型的な手順を示すフローチャートである。まず階層化制御部1365は、低速エクステントの群内の未選択のチャンクの群の中から、IOカウントが上位のp個のチャンク(つまり、1つの物理エクステントを構成する数のチャンク)を選択する(ステップS131)。そして階層化制御部1365は、選択されたp個のチャンク内のデータを、空きの高速エクステント内のp個のチャンクにコピー(再配置)する(ステップS132)。
次に階層化制御部1365は、アドレス変換テーブル1331における、コピー元のp個のチャンクに対応付けられたエントリの内容を更新する(ステップS133)。即ち、階層化制御部1365は、アドレス変換テーブル1331における、コピー元のp個のチャンクに対応付けられたp個のエントリ中の物理チャンクIDフィールドの内容を、コピー先の高速エクステント内のp個のチャンクの物理チャンクIDに変更する。
また階層化制御部1365は、重複管理テーブル1332における、コピー元のp個のチャンク及びコピー先の高速エクステント内のp個のチャンクに対応付けられたエントリの内容を、重複排除制御部1363によって更新させる(ステップS134)。即ち重複排除制御部1363は、重複管理テーブル1332における、コピー元のp個のチャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容を、重複管理テーブル1332における、コピー先のp個のチャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容(無効値及び0)と入れ替える。
ステップS131乃至S134は、図18に示される第1の再配置動作において、S92の判定がNoの場合に実行される処理に相当する。なお、ステップS134がステップS133の前に実行されても構わない。
次に、階層化制御部1365は、高速エクステントの群内の未選択のチャンクの群の中から、IOカウントが下位のp個のチャンクを選択する(ステップS135)。そして階層化制御部1365は、選択されたp個のチャンク内のデータを、空きの低速エクステント内のp個のチャンクにコピー(再配置)する(ステップS136)。
次に階層化制御部1365は、アドレス変換テーブル1331における、コピー元のp個のチャンクに対応付けられたエントリの内容を更新する(ステップS137)。即ち、階層化制御部1365は、アドレス変換テーブル1331における、コピー元のp個のチャンクに対応付けられたp個のエントリ中の物理チャンクIDフィールドの内容を、コピー先の低速エクステント内のp個のチャンクの物理チャンクIDに変更する。
また階層化制御部1365は、重複管理テーブル1332における、コピー元のp個のチャンク及びコピー先の低速エクステント内のp個のチャンクに対応付けられたエントリの内容を、重複排除制御部1363によって更新させる(ステップS138)。即ち重複排除制御部1363は、重複管理テーブル1332における、コピー元のp個のチャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容を、重複管理テーブル1332における、コピー先のp個のチャンクに対応付けられたエントリのハッシュ値フィールド及び重複カウントフィールドの内容(無効値及び0)と入れ替える。すると階層化制御部1365は、第3の再配置動作(図17のステップS90)を終了する。
ステップS135乃至S138は、図19に示される第2の再配置動作において、S112の判定がNoの場合に実行される処理に相当する。なお、ステップS138がステップS137の前に実行されても構わない。また、ステップS135乃至S138が、ステップS131乃至S134の前に実行されても構わない。
次に、第1の変形例における再配置の例について図21乃至図24を参照して説明する。図21は、再配置の第1の例を示す。第1の例は、図18に示される第1の再配置動作においてS92の判定がNoの場合の再配置(ステップS99)、または図20に示される第3の再配置動作における再配置(ステップS132)の例を指す。図21において、高速ストレージ装置11は空きの物理(高速)エクステント110を含み、低速ストレージ装置12は使用中の物理(低速)エクステント121,122及び123を含む。
低速エクステント121,122及び123は、それぞれ、データA,B及びCが格納された物理チャンクを含む。データA,B及びCそれぞれが格納された3つの物理チャンクが、ステップS98(図18)またはS131(図20)で選択されたp(t=p)個の物理チャンクの一部であるものとする。図21の例では、ステップS98またはS131で選択されたp個の物理チャンクのデータ(つまり、データA,B及びCを含むp個のデータ)は、高速ストレージ装置11内の空きの高速エクステント110に再配置される。
図22は、第1の変形例における再配置の第2の例を示す。第2の例は、図18に示される第1の再配置動作においてS92の判定がYesの場合の再配置(ステップS99)の例を指す。図22において、高速ストレージ装置11は使用中の高速エクステント111及び112を含み、低速ストレージ装置12は図21の例と同様に使用中の低速エクステント121,122及び123を含む。高速エクステント111及び112は、それぞれ、q1個及びq2個の空きの物理チャンクを含むものとする。
前述のように、低速エクステント121,122及び123は、それぞれ、データA,B及びCが格納された物理チャンクを含む。データA及びBがそれぞれ格納された2つの物理チャンクが、最初のステップS98(図18)で選択されたq1(t=q=q1)個の物理チャンクの一部であり、データCが格納された物理チャンクが、2回目のステップS98で選択されたq2(t=q=q2)個の物理チャンクの一部であものとする。図22の例では、最初のステップS98で選択されたq1個の物理チャンクのデータ(つまり、データA及びBを含むq1個のデータ)は、高速ストレージ装置11内の高速エクステント111に含まれているq1個の空きの物理チャンクに再配置される。同様に、2回目のステップS98で選択されたq2個の物理チャンクのデータ(つまり、データCを含むq2個のデータ)は、高速ストレージ装置11内の高速エクステント112に含まれているq2個の空きの物理チャンクに再配置される。
図23は、第1の変形例における再配置の第3の例を示す。第3の例は、図19に示される第2の再配置動作においてS112の判定がNoの場合の再配置(ステップS119)、または図20に示される第3の再配置動作における再配置(ステップS136)の例を指す。図23において、高速ストレージ装置11は使用中の高速エクステント113,114及び115を含み、低速ストレージ装置12は空きの低速エクステント120を含む。
高速エクステント113,114及び115は、それぞれ、データR,S及びTが格納された物理チャンクを含む。データR,S及びTがそれぞれ格納された3つの物理チャンクが、ステップS118(図19)またはS135(図20)で選択されたp(t=p)個の物理チャンクの一部であるものとする。図23の例では、ステップS118またはS135で選択されたp個の物理チャンクのデータ(つまり、データR,S及びTを含むp個のデータ)は、低速ストレージ装置12内の空きの低速エクステント120に再配置される。
図24は、第1の変形例における再配置の第4の例を示す。第4の例は、図19に示される第2の再配置動作においてS112の判定がYesの場合の再配置(ステップS119)の例を指す。図24において、高速ストレージ装置11は図23の例と同様に使用中の高速エクステント113,114及び115を含み、低速ストレージ装置12は使用中の低速エクステント124及び125を含む。低速エクステント124及び125は、それぞれ、q3個及びq4個の空きの物理チャンクを含むものとする。
前述のように、高速エクステント113,114及び115は、それぞれ、データR,S及びTが格納された物理チャンクを含む。データRが格納された物理チャンクが、最初のステップS118(図19)で選択されたq3(t=q=q3)個の物理チャンクの一部であり、データS及びTがそれぞれ格納された2つの物理チャンクが、2回目のステップS118で選択されたq4(t=q=q4)個の物理チャンクの一部であものとする。図24の例では、最初のステップS118で選択されたq3個の物理チャンクのデータ(つまり、データRを含むq3個のデータ)は、低速ストレージ装置12内の低速エクステント124に含まれているq3個の空きの物理チャンクに再配置される。同様に、2回目のステップS118で選択されたq4個の物理チャンクのデータ(つまり、データS及びTを含むq4個のデータ)は、低速ストレージ装置12内の低速エクステント125に含まれているq4個の空きの物理チャンクに再配置される。
<第2の変形例>
次に前記実施形態の第2の変形例について説明する。第1の変形例における再配置処理では、コピー元は物理チャンクを単位に選択される。このため第1の変形例では、再配置処理が実行される都度、コピー元の物理チャンクを含む物理エクステントにおいて断片化が生じ、いずれかの時点でデフラグメンテーション処理が必要となる。そこで第2の変形例の特徴は、物理エクステント(特に低速エクステント)の断片化を低減するために、低速ストレージ装置12から高速ストレージ装置11にデータを再配置する際に、コピー元が物理エクステント単位に選択されることにある。そのために第2の変形例では、物理エクステント内の全物理チャンクのIOカウントの例えば合計値(または平均値)が、当該物理エクステントのIOカウントして用いられる。
以下、第2の変形例について第1の変形例と相違する点を中心に説明する。第2の変形例において階層化制御部1365は、例えば第1の変形例の第3の再配置動作におけるステップS131(図20)に相当する処理で、未選択の低速エクステント群の中からIOカウントが最上位の低速エクステントをコピー元として選択する。また階層化制御部1365は、選択された低速エクステント内のp個の物理チャンクのデータのコピー(再配置)先を確保するために、高速エクステント群の中から複数の使用中の高速エクステントをコピー先として選択する。複数の使用中の高速エクステントの各々は、少なくとも1つの空きの物理チャンクを含み、且つ複数の使用中の高速エクステントにそれぞれ含まれる空きの物理チャンクの合計はp以上である。そして、階層化制御部1365は、選択された低速エクステント内のp個の物理チャンクのデータを、選択された複数の高速エクステント内のp個の空きの物理チャンクに再配置する。
図25は、第2の変形例における上述の再配置の例を示す。図25において、高速ストレージ装置11は、使用中の高速エクステント116,117及び118を含む。高速エクステント116,117及び118の各々は、少なくとも1つの空きの物理チャンクを含み、且つ高速エクステント116,117及び118にそれぞれ含まれる空きの物理チャンクの合計はp以上である。低速ストレージ装置12は、使用中の低速エクステント126を含む。低速エクステント126のp個の物理チャンクは使用中であり、当該p個の物理チャンクには、データA,B及びCを含むp個のデータが格納されている。
図25において、低速エクステント126がコピー元として選択され、高速エクステント116,117及び118がコピー先として選択されたものとする。この場合、階層化制御部1365は、低速エクステント126のp個の物理チャンクに格納されている、データA,B及びCを含むp個のデータを、高速エクステント116,117及び118内のp個の空きの物理チャンクにコピー(再配置)する。これにより、低速エクステント126は、空きエクステントとして利用可能となる。
第2の変形例によれば、コピー元の(物理チャンクを含む)低速エクステントにおいて、再配置動作によって断片化が発生するのを防止できる。また、コピー先の(物理チャンクを含む)複数の高速エクステントにおける断片化が、再配置動作によって低減される。特に、コピー先の複数の高速エクステントに含まれている空きの物理チャンクの合計がpに一致するならば、当該複数の高速エクステントにおける断片化が解消される。なお、第2の変形例における上述の再配置動作が、第1の変形例における第1の再配置動作に代えて実行されても構わない。
<第3の変形例>
次に前記実施形態の第3の変形例について説明する。第3の変形例の特徴は、第1の変形例で生じるような物理エクステント(特に高速エクステント)の断片化を低減するために、第2の変形例とは逆に高速ストレージ装置11から低速ストレージ装置12にデータを再配置する際に、コピー元が物理エクステント単位に選択されることにある。
以下、第3の変形例について第1及び第2の変形例と相違する点を中心に説明する。第3の変形例において階層化制御部1365は、例えば第1の変形例の第3の再配置動作におけるステップS135(図20)に相当する処理で、未選択の高速エクステント群の中からIOカウントが最下位の高速エクステントをコピー元として選択する。また階層化制御部1365は、選択された高速エクステント内のp個の物理チャンクのデータのコピー(再配置)先を確保するために、低速エクステント群の中から複数の使用中の低速エクステントをコピー先として選択する。複数の使用中の低速エクステントの各々は、少なくとも1つの空きの物理チャンクを含み、且つ複数の使用中の低速エクステントにそれぞれ含まれる空きの物理チャンクの合計はp以上である。そして、階層化制御部1365は、選択された高速エクステント内のp個の物理チャンクのデータを、選択された複数の低速エクステント内のp個の空きの物理チャンクに再配置する。
図26は、第3の変形例における上述の再配置の例を示す。図26において、高速ストレージ装置11は、使用中の高速エクステント119を含む。高速エクステント119のp個の物理チャンクは使用中であり、当該p個の物理チャンクには、データR,S及びTを含むp個のデータが格納されている。低速ストレージ装置12は、使用中の低速エクステント127及び128を含む。低速エクステント127及び128の各々は、少なくとも1つの空きの物理チャンクを含み、且つ低速エクステント127及び128にそれぞれ含まれる空きの物理チャンクの合計はp以上である。
図26において、高速エクステント119がコピー元として選択され、低速エクステント127及び128がコピー先として選択されたものとする。この場合、階層化制御部1365は、高速エクステント119のp個の物理チャンクに格納されている、データR,S及びTを含むp個のデータを、低速エクステント127及び128内のp個の空きの物理チャンクにコピー(再配置)する。これにより、高速エクステント119は、空きエクステントとして利用可能となる。
第3の変形例によれば、コピー元の(物理チャンクを含む)高速エクステントにおいて、再配置動作によって断片化が発生するのを防止できる。また、コピー先の(物理チャンクを含む)複数の低速エクステントにおける断片化が、再配置動作によって低減される。特に、コピー先の複数の低速エクステントに含まれている空きの物理チャンクの合計がpに一致するならば、当該複数の高速エクステントにおける断片化が解消される。なお、第3の変形例における上述の再配置動作が、第1の変形例における第2の再配置動作に代えて実行されても構わない。
以上説明した少なくとも1つの実施形態によれば、論理チャンクを単位にデータの重複を排除しつつ、物理チャンクへのアクセスの状況を反映したデータの再配置により、論理ディスクの性能を最適化することができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10…階層化ストレージシステム、11…高速ストレージ装置(第1のストレージ装置)、12…低速ストレージ装置(第2のストレージ装置)、13…ストレージコントローラ、20…ホスト(ホスト計算機)、137,138…論理ディスク、1331…アドレス変換テーブル、1332…重複管理テーブル、1333…IO(入出力)統計テーブル、1361…構成管理部、1362…IO制御部、1363…重複排除制御部、1364…IO管理部、1365…階層化制御部。

Claims (16)

  1. 複数の物理チャンクから構成される記憶領域を含む第1のストレージ装置と、
    複数の物理チャンクから構成される記憶領域を含み、前記第1のストレージ装置よりもアクセス速度が低い第2のストレージ装置と、
    前記第1及び第2のストレージ装置へのアクセスを制御するストレージコントローラと を具備する階層化ストレージシステムであって、
    前記ストレージコントローラは、
    前記第1及び第2のストレージ装置各々の前記記憶領域に基づいて、複数の論理チャンクから構成される仮想化された記憶領域を含む論理ディスクを構築し、前記階層化ストレージシステムを利用するホスト計算機に前記論理ディスクを提供する構成管理部と、
    前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする入出力制御部と、
    前記アクセス要求に応じて第1の論理チャンクに第1のデータが仮想的にライトされる場合、前記第1のデータと同一内容の第2のデータが前記第1及び第2のストレージ装置のいずれかに格納されているかを判定し、前記第2のデータが、前記第1及び第2のストレージ装置のいずれかにおける、少なくとも第2の論理チャンクに割り当てられた第1の物理チャンクに格納されている第1の場合、重複排除のために、前記第1の物理チャンクを前記第1の論理チャンクにも割り当てて且つ前記第1のデータの実際のライトを抑止し、前記第2のデータが前記第1及び第2のストレージ装置のいずれにも格納されていない第2の場合、前記第1及び第2のストレージ装置のいずれか一方における空きの第2の物理チャンクを前記第1の論理チャンクに割り当てて、前記入出力制御部により、前記第2の物理チャンクに前記第1のデータをライトさせる重複排除制御部と、
    前記複数の論理チャンクそれぞれへのアクセスの状況を示す入出力統計値を取得する入出力管理部と、
    前記複数の論理チャンクそれぞれの入出力統計値に基づいて、前記複数の論理チャンクのいずれかが割り当てられた物理チャンクそれぞれの入出力統計値を取得し、第3の論理チャンクに割り当てられた前記第2のストレージ装置内の第3の物理チャンクのデータを前記第1のストレージ装置内の第4の物理チャンクに再配置するための第1の再配置動作、及び第4の論理チャンクに割り当てられた前記第1のストレージ装置内の第5の物理チャンクのデータを前記第2のストレージ装置内の第6の物理チャンクに再配置するための第2の再配置動作の少なくとも一方を、前記物理チャンクそれぞれの入出力統計値に基づいて実行する階層化制御部と
    を具備する階層化ストレージシステム。
  2. 前記階層化制御部は、前記第3の物理チャンクが前記第3の論理チャンクを含む2つ以上の論理チャンクに割り当てられている場合、前記2つ以上の論理チャンクそれぞれの入出力統計値の合計値を、前記第3の物理チャンクの入出力統計値として取得し、前記第1の再配置動作が実行された場合、前記第4の物理チャンクの入出力統計値として、前記2つ以上の論理チャンクそれぞれの入出力統計値の合計値を引き継ぐ請求項1記載の階層化ストレージシステム。
  3. 前記入出力管理部は、前記第1の論理チャンクに前記第1のデータが仮想的にライトされる場合、前記第1のデータの実際のライトが抑止されるか否かに無関係に、前記第1の論理チャンクの入出力統計値をインクリメントし、
    前記階層化制御部は、前記第2の物理チャンクに前記第1のデータがライトされた場合、前記第2の物理チャンクの入出力統計値として前記第1の論理チャンクの入出力統計値を引き継ぐ
    請求項1及び請求項2のいずれか一項に記載の階層化ストレージシステム。
  4. 前記階層化制御部は、前記第1の論理チャンクに割り当てられている第7の物理チャンクに前記第1のデータとは異なる第3のデータが格納されていて、且つ前記第1のデータの実際のライトが抑止された場合、前記第1の物理チャンクの入出力統計値として、前記第1及び第2の論理チャンクを含み且つ前記第1の物理チャンクが割り当てられた全ての論理チャンクそれぞれの入出力統計値の合計値を引き継ぎ、且つ前記第1の論理チャンクへの前記第7の物理チャンクの割り当てを解消する請求項1乃至請求項3のいずれか一項に記載の階層化ストレージシステム。
  5. 前記第1の再配置動作は、前記第2のストレージ装置内の未選択の物理チャンクの群から入出力統計値が最大の物理チャンクを前記第3の物理チャンクとして選択することを含み、
    前記第2の再配置動作は、前記第1のストレージ装置内の未選択の物理チャンクの群から入出力統計値が最小の物理チャンクを前記第5の物理チャンクとして選択することを含む
    請求項1乃至請求項4のいずれか一項に記載の階層化ストレージシステム。
  6. 前記階層化制御部は、前記第1のストレージ装置において使用されている第1の容量を、使用が許可されている第2の容量と比較し、その比較結果に基づいて、前記第1の再配置動作、前記第2の再配置動作、及び、前記第1及び第2の再配置動作の両方のいずれか一つを実行する請求項5記載の階層化ストレージシステム。
  7. 前記階層化制御部は、前記第1の容量が前記第2の容量未満の場合、前記第1の再配置動作を実行し、前記第1の容量が前記第2の容量を超えている場合、前記第2の再配置動作を実行し、前記第1の容量が前記第2の容量に等しい場合、前記第1及び第2の再配置動作の両方を実行する請求項6記載の階層化ストレージシステム。
  8. 前記第1及び第2のストレージ装置各々の前記記憶領域は、管理のために、一定数の物理チャンクから構成される複数の物理エクステントに分割され、
    前記第1の再配置動作は、前記第2のストレージ装置内の未選択の物理チャンクの群から入出力統計値が上位の物理チャンクの群を前記第3の物理チャンクを含む物理チャンクの第1の群として選択することと、選択された第1の群のデータを、前記第1のストレージ装置内の前記第4の物理チャンクを含む第1の物理エクステントに再配置することとを含み、
    前記第2の再配置動作は、前記第1のストレージ装置内の未選択の物理チャンクの群から入出力統計値が下位の物理チャンクの群を前記第5の物理チャンクを含む物理チャンクの第2の群として選択することと、選択された第2の群のデータを、前記第2のストレージ装置内の前記第6の物理チャンクを含む第2の物理エクステントに再配置することとを含む
    請求項1乃至請求項4のいずれか一項に記載の階層化ストレージシステム。
  9. 前記階層化制御部は、前記第1のストレージ装置において使用されている第1の容量を、使用が許可されている第2の容量と比較し、その比較結果に基づいて、前記第1の再配置動作、前記第2の再配置動作、及び、前記第1及び第2の再配置動作の両方のいずれか一つを実行する請求項8記載の階層化ストレージシステム。
  10. 前前記階層化制御部は、前記第1の容量が前記第2の容量未満の場合、前記第1の再配置動作を実行し、前記第1の容量が前記第2の容量を超えている場合、前記第2の再配置動作を実行し、前記第1の容量が前記第2の容量に等しい場合、前記第1及び第2の再配置動作の両方を実行する請求項9記載の階層化ストレージシステム。
  11. 前記第4の物理チャンクは空きの物理チャンクであり、
    前記第1の再配置動作は、空きの物理チャンクの群を含む使用中の物理エクステントを前記第1の物理エクステントとして選択することを含む請求項10記載の階層化ストレージシステム。
  12. 前記第1の再配置動作は、前記第1のストレージ装置内に空きの物理チャンクの群を含む使用中の物理エクステントが存在しない場合に、空きの物理エクステントを前記第1の物理エクステントとして選択することを更に含む請求項11記載の階層化ストレージシステム。
  13. 前記第6の物理チャンクは空きの物理チャンクであり、
    前記第2の再配置動作は、空きの物理チャンクの群を含む使用中の物理エクステントを前記第2の物理エクステントとして選択することを含む請求項10記載の階層化ストレージシステム。
  14. 前記第2の再配置動作は、前記第2のストレージ装置内に空きの物理チャンクの群を含む使用中の物理エクステントが存在しない場合に、空きの物理エクステントを前記第2の物理エクステントとして選択することを更に含む請求項13記載の階層化ストレージシステム。
  15. 複数の物理チャンクから構成される記憶領域を含む第1のストレージ装置、及び複数の物理チャンクから構成される記憶領域を含み、前記第1のストレージ装置よりもアクセス速度が低い第2のストレージ装置を制御するストレージコントローラにおいて、
    前記第1及び第2のストレージ装置各々の前記記憶領域に基づいて、複数の論理チャンクから構成される仮想化された記憶領域を含む論理ディスクを構築し、前記第1のストレージ装置、前記第2のストレージ装置及び前記ストレージコントローラを具備する階層化ストレージシステムを利用するホスト計算機に前記論理ディスクを提供する構成管理部と、
    前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする入出力制御部と、
    前記アクセス要求に応じて第1の論理チャンクに第1のデータが仮想的にライトされる場合、前記第1のデータと同一内容の第2のデータが前記第1及び第2のストレージ装置のいずれかに格納されているかを判定し、前記第2のデータが、前記第1及び第2のストレージ装置のいずれかにおける、少なくとも第2の論理チャンクに割り当てられた第1の物理チャンクに格納されている第1の場合、重複排除のために、前記第1の物理チャンクを前記第1の論理チャンクにも割り当てて且つ前記第1のデータの実際のライトを抑止し、前記第2のデータが前記第1及び第2のストレージ装置のいずれにも格納されていない第2の場合、前記第1及び第2のストレージ装置のいずれか一方における空きの第2の物理チャンクを前記第1の論理チャンクに割り当てて、前記入出力制御部により、前記第2の物理チャンクに前記第1のデータをライトさせる重複排除制御部と、
    前記複数の論理チャンクそれぞれへのアクセスの状況を示す入出力統計値を取得する入出力管理部と、
    前記複数の論理チャンクそれぞれの入出力統計値に基づいて、前記複数の論理チャンクのいずれかが割り当てられた物理チャンクそれぞれの入出力統計値を取得し、第3の論理チャンクに割り当てられた前記第2のストレージ装置内の第3の物理チャンクのデータを前記第1のストレージ装置内の第4の物理チャンクに再配置するための第1の再配置動作、及び第4の論理チャンクに割り当てられた前記第1のストレージ装置内の第5の物理チャンクのデータを前記第2のストレージ装置内の第6の物理チャンクに再配置するための第2の再配置動作の少なくとも一方を、前記物理チャンクそれぞれの入出力統計値に基づいて実行する階層化制御部と
    を具備するストレージコントローラ。
  16. 複数の物理チャンクから構成される記憶領域を含む第1のストレージ装置、及び複数の物理チャンクから構成される記憶領域を含み、前記第1のストレージ装置よりもアクセス速度が低い第2のストレージ装置を制御するストレージコントローラであって、前記第1及び第2のストレージ装置各々の前記記憶領域に基づいて、複数の論理チャンクから構成される仮想化された記憶領域を含む論理ディスクを構築し、前記第1のストレージ装置、前記第2のストレージ装置及び前記ストレージコントローラを具備する階層化ストレージシステムを利用するホスト計算機に前記論理ディスクを提供する構成管理部と、前記ホスト計算機からのアクセス要求に応じて、前記第1もしくは第2のストレージ装置からデータをリードし、または前記第1もしくは第2のストレージ装置にデータをライトする入出力制御部とを含むストレージコントローラにおける重複排除及びストレージ階層化のための方法であって、
    前記アクセス要求に応じて第1の論理チャンクに第1のデータが仮想的にライトされる場合、前記第1のデータと同一内容の第2のデータが前記第1及び第2のストレージ装置のいずれかに格納されているかを判定し、
    前記第2のデータが、前記第1及び第2のストレージ装置のいずれかにおける、少なくとも第2の論理チャンクに割り当てられた第1の物理チャンクに格納されている第1の場合、重複排除のために、前記第1の物理チャンクを前記第1の論理チャンクにも割り当てて且つ前記第1のデータの実際のライトを抑止し、
    前記第2のデータが前記第1及び第2のストレージ装置のいずれにも格納されていない第2の場合、前記第1及び第2のストレージ装置のいずれか一方における空きの第2の物理チャンクを前記第1の論理チャンクに割り当てて、前記入出力制御部により、前記第2の物理チャンクに前記第1のデータをライトさせ、
    前記複数の論理チャンクそれぞれへのアクセスの状況を示す入出力統計値を取得し、
    前記複数の論理チャンクそれぞれの入出力統計値に基づいて、前記複数の論理チャンクのいずれかが割り当てられた物理チャンクそれぞれの入出力統計値を取得し、
    第3の論理チャンクに割り当てられた前記第2のストレージ装置内の第3の物理チャンクのデータを前記第1のストレージ装置内の第4の物理チャンクに再配置するための第1の再配置動作、及び第4の論理チャンクに割り当てられた前記第1のストレージ装置内の第5の物理チャンクのデータを前記第2のストレージ装置内の第6の物理チャンクに再配置するための第2の再配置動作の少なくとも一方を、前記物理チャンクそれぞれの入出力統計値に基づいて実行する
    重複排除及びストレージ階層化のための方法。
JP2015207130A 2015-10-21 2015-10-21 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法 Active JP6067819B1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015207130A JP6067819B1 (ja) 2015-10-21 2015-10-21 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法
US15/046,002 US10037161B2 (en) 2015-10-21 2016-02-17 Tiered storage system, storage controller, and method for deduplication and storage tiering
CN201610091584.7A CN106610903B (zh) 2015-10-21 2016-02-19 层级化存储器系统、存储器控制器和去重及存储器层级化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015207130A JP6067819B1 (ja) 2015-10-21 2015-10-21 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法

Publications (2)

Publication Number Publication Date
JP6067819B1 true JP6067819B1 (ja) 2017-01-25
JP2017078983A JP2017078983A (ja) 2017-04-27

Family

ID=57890479

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015207130A Active JP6067819B1 (ja) 2015-10-21 2015-10-21 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法

Country Status (3)

Country Link
US (1) US10037161B2 (ja)
JP (1) JP6067819B1 (ja)
CN (1) CN106610903B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018185760A (ja) * 2017-04-27 2018-11-22 株式会社東芝 データの重複を排除するためのストレージ装置
JP7296025B1 (ja) 2023-03-13 2023-06-21 日立Astemo株式会社 センサ装置、及び減衰力可変サスペンションシステム

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9665287B2 (en) * 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller
KR102525061B1 (ko) * 2016-07-19 2023-04-21 에스케이하이닉스 주식회사 입력 데이터를 압축하여 저장하는 데이터 저장 장치
US10382751B1 (en) * 2017-06-30 2019-08-13 EMC IP Holding Company LLC Transparent, fine-grained and adaptive data compression
JP6906405B2 (ja) * 2017-09-12 2021-07-21 キオクシア株式会社 情報処理装置、情報処理方法、情報処理プログラム、および情報処理システム
US10891137B2 (en) 2018-07-13 2021-01-12 International Business Machines Corporation Making available input/output statistics for data sets opened during initial program load
US10691593B1 (en) 2018-12-19 2020-06-23 Micron Technology, Inc. Predictive data storage hierarchical memory systems and methods
US11016691B2 (en) 2019-01-25 2021-05-25 International Business Machines Corporation Migrating data from a large extent pool to a small extent pool
US11809379B2 (en) * 2019-11-19 2023-11-07 International Business Machines Corporation Storage tiering for deduplicated storage environments
US11385817B2 (en) * 2020-09-22 2022-07-12 Vmware, Inc. Supporting deduplication in object storage using subset hashes
US20230039999A1 (en) * 2021-08-06 2023-02-09 Bank Of America Corporation System and method for data warehouse storage capacity optimization based on usage frequency of data objects

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011076294A (ja) * 2009-09-30 2011-04-14 Hitachi Ltd 階層ストレージ管理システムにおける重複ファイルの転送方法及びシステム
JP2011150681A (ja) * 2010-01-20 2011-08-04 Hitachi Ltd ストレージシステムのためのi/o変換方法及び装置
WO2015065322A1 (en) * 2013-10-28 2015-05-07 Hitachi, Ltd. De-duplication and host based qos in tiered storage
JP5730446B1 (ja) * 2014-03-18 2015-06-10 株式会社東芝 トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム
JP2015170345A (ja) * 2014-03-11 2015-09-28 日本電気株式会社 ストレージシステム
JP5797848B1 (ja) * 2014-03-04 2015-10-21 株式会社東芝 階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4246754B2 (ja) * 2006-05-26 2009-04-02 富士通株式会社 階層型ストレージシステムの階層制御装置,2重化メディアの保守管理方法及びプログラム
JP5298982B2 (ja) 2009-03-17 2013-09-25 日本電気株式会社 ストレージシステム
JP5310480B2 (ja) * 2009-10-27 2013-10-09 富士通株式会社 ストレージ制御装置および方法
US8935487B2 (en) * 2010-05-05 2015-01-13 Microsoft Corporation Fast and low-RAM-footprint indexing for data deduplication
CN103079488A (zh) 2010-08-06 2013-05-01 Dgs计算机株式会社 冷冻治疗元件以及冷冻治疗装置
US8600949B2 (en) 2011-06-21 2013-12-03 Netapp, Inc. Deduplication in an extent-based architecture
US8965856B2 (en) 2011-08-29 2015-02-24 Hitachi, Ltd. Increase in deduplication efficiency for hierarchical storage system
CN102508789A (zh) * 2011-10-14 2012-06-20 浪潮电子信息产业股份有限公司 一种系统分级存储的方法
JP5323170B2 (ja) * 2011-12-05 2013-10-23 ウィンボンド エレクトロニクス コーポレーション 不揮発性半導体メモリおよびそのデータの読出し方法
US20130238832A1 (en) * 2012-03-07 2013-09-12 Netapp, Inc. Deduplicating hybrid storage aggregate
CN104969170B (zh) * 2014-01-31 2017-09-08 株式会社东芝 层次化存储系统、存储控制器以及代替层次间的数据移动的方法
JP6118285B2 (ja) * 2014-03-20 2017-04-19 株式会社東芝 キャッシュメモリシステムおよびプロセッサシステム

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011076294A (ja) * 2009-09-30 2011-04-14 Hitachi Ltd 階層ストレージ管理システムにおける重複ファイルの転送方法及びシステム
JP2011150681A (ja) * 2010-01-20 2011-08-04 Hitachi Ltd ストレージシステムのためのi/o変換方法及び装置
WO2015065322A1 (en) * 2013-10-28 2015-05-07 Hitachi, Ltd. De-duplication and host based qos in tiered storage
JP5797848B1 (ja) * 2014-03-04 2015-10-21 株式会社東芝 階層化ブロックストレージ装置を有するコンピュータシステム、ストレージコントローラ、及びプログラム
JP2015170345A (ja) * 2014-03-11 2015-09-28 日本電気株式会社 ストレージシステム
JP5730446B1 (ja) * 2014-03-18 2015-06-10 株式会社東芝 トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018185760A (ja) * 2017-04-27 2018-11-22 株式会社東芝 データの重複を排除するためのストレージ装置
JP7296025B1 (ja) 2023-03-13 2023-06-21 日立Astemo株式会社 センサ装置、及び減衰力可変サスペンションシステム

Also Published As

Publication number Publication date
JP2017078983A (ja) 2017-04-27
CN106610903A (zh) 2017-05-03
US10037161B2 (en) 2018-07-31
CN106610903B (zh) 2019-12-17
US20170115922A1 (en) 2017-04-27

Similar Documents

Publication Publication Date Title
JP6067819B1 (ja) 階層化ストレージシステム、ストレージコントローラ、並びに重複排除及びストレージ階層化のための方法
US8886882B2 (en) Method and apparatus of storage tier and cache management
JP5685676B2 (ja) 計算機システム及びデータ管理方法
US9449011B1 (en) Managing data deduplication in storage systems
JP5314772B2 (ja) 性能の異なる実領域群で構成されたプールを有するストレージシステムの管理システム及び方法
JP5946521B2 (ja) データのデフラグに対する要求に応答するための方法、データ・ストレージ・システム及びプログラム
JP5410386B2 (ja) ストレージシステムのためのi/o変換方法及び装置
US20060212495A1 (en) Method and system for storing data into a database
US20180203637A1 (en) Storage control apparatus and storage control program medium
US9229860B2 (en) Storage system
US10664182B2 (en) Storage system
WO2015162758A1 (ja) ストレージシステム
JP2011242840A (ja) ThinProvisioningが適用されたストレージ装置
WO2010131373A1 (en) Storage subsystem
JPWO2016016989A1 (ja) 階層化ストレージシステム、ストレージコントローラ及びプログラム
JP6253752B1 (ja) 階層化ストレージシステム
JP2017211920A (ja) ストレージ制御装置、ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US10929299B2 (en) Storage system, method and non-transitory computer-readable storage medium
JP5730446B1 (ja) トライアル領域を備えた階層化ストレージシステム、ストレージコントローラ及びプログラム
CN107203479B (zh) 层级化存储系统、存储控制器及层级化控制方法
US8732422B2 (en) Storage apparatus and its control method
JP6022116B1 (ja) 階層化ストレージシステム、ストレージコントローラ及びレプリケーション初期化方法
US9552292B2 (en) Apparatus and method for allocating virtual memory addresses to continuous physical addresses
JP6427913B2 (ja) ストレージシステム、制御装置、ストレージ装置、入出力制御方法、及びプログラム
JP2020027433A (ja) 情報システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161028

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: 20161122

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067819

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