JP6995728B2 - ストレージ装置、管理方法及びプログラム - Google Patents

ストレージ装置、管理方法及びプログラム Download PDF

Info

Publication number
JP6995728B2
JP6995728B2 JP2018184119A JP2018184119A JP6995728B2 JP 6995728 B2 JP6995728 B2 JP 6995728B2 JP 2018184119 A JP2018184119 A JP 2018184119A JP 2018184119 A JP2018184119 A JP 2018184119A JP 6995728 B2 JP6995728 B2 JP 6995728B2
Authority
JP
Japan
Prior art keywords
data
storage
pool
volume
amount
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
JP2018184119A
Other languages
English (en)
Other versions
JP2020052919A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2018184119A priority Critical patent/JP6995728B2/ja
Priority to CN201910720466.1A priority patent/CN110968262B/zh
Priority to US16/559,866 priority patent/US11093134B2/en
Publication of JP2020052919A publication Critical patent/JP2020052919A/ja
Application granted granted Critical
Publication of JP6995728B2 publication Critical patent/JP6995728B2/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/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/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/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
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/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/065Replication mechanisms
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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/0689Disk arrays, e.g. RAID, JBOD

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)

Description

本発明は、複数の記憶階層を有するストレージシステムの自動階層制御に関する。
ストレージシステムは、一般的に1以上のストレージ装置を含む。1以上のストレージ装置の各々は、一般的に記憶媒体として例えばHDD(Hard Disk Drive)又はSSD(Solid State Drive)を含む。ストレージシステムが、SAN(Storage Area Network)又はLAN(Local Area Network)といったネットワーク経由で、1又は複数の上位装置(例えば、ホスト計算機)からアクセスされる。一般的にストレージ装置は、RAID(Redundant Array of Independent (or Inexpensive) Disks)技術に従う高信頼化方法を用いることで信頼性を向上している。
ストレージシステムの記憶媒体に掛かるコストを削減する方法として、データ量を削減する圧縮技術や重複排除技術が普及している。特許文献1には、ホスト計算機からのデータ書き込み速度を維持しながら、データを圧縮させることができる情報システムが開示されている。特許文献1によれば、ストレージ装置においてホスト計算機からのデータ書き込みを受け付ける第1ボリュームと、第1ボリューム上のデータを圧縮して管理する第2ボリュームを提供する。ホスト計算機から第1ボリュームに対するデータ書き込みを終えると、ストレージ装置はホスト計算機に対して書き込み処理が完了したとして応答を返す。その後ストレージ装置は、ホスト計算機からのデータ書き込みとは非同期的な契機にデータを圧縮して第2ボリュームに格納する。
一方、ストレージシステムの記憶媒体の多様化により、データを適切な記憶媒体に自動的に格納する自動階層配置機能が普及している。この機能により、高頻度にアクセスされるデータを高速なSSD、アクセスの少ないデータをSSDより低速だが安価で大容量なHDDに格納することで記憶媒体に掛かるコストを削減することができる。特許文献2には、データのアクセス頻度に応じて階層配置を管理可能な情報システムが開示されている。特許文献2によれば記憶領域毎に長周期と短周期の各周期中に発生したI/Oを数えることで、長周期と短周期のそれぞれの観点で規定された負荷指標値に基づく判定を行い、プロモーション(上位階層へのデータ移動)やデモーション(下位階層へのデータ移動)を実施する。
前述したデータ書き込み速度を維持しながら、データを圧縮させる機能とデータのアクセス頻度に応じて階層配置を管理する機能を組み合わせることで、記憶媒体のコスト削減に加え、上位階層の記憶媒体に格納できるデータ量の増加によるI/O性能の改善が期待できる。
米国特許出願公開第2009/0144496号明細書 米国特許出願公開第2012/0246386号明細書
圧縮や重複排除などのデータ量の削減技術を用いると、ホスト計算機からストレージシステムに書き込まれるデータサイズと記憶媒体に書き込まれるデータサイズに削減量に応じた差が生じる。そのため、記憶媒体の領域を効率的に利用する方法として、削減後のデータを前詰めで追記する追い書き方式(例えば、Log-Structured Storage)が広く用いられている。追い書き方式ではデータが更新されると新しく書き込まれたデータは、更新前のデータとは異なる位置に追記され、更新前のデータは無効な領域(ガベージ)となる。
前述の追い書き方式に対して自動階層配置機能を適用すると、ガベージの発生によって記憶領域毎に集計したI/O数が無効になり、アクセス頻度情報が実際の値から乖離する。また、更新されたデータは新しい領域に記録され、過去のアクセス頻度情報を引き継がないため、当該データに適した階層配置を判定することができない。更新されたデータの記録領域にアクセス頻度情報を引き継ぐには、追記されるデータの管理単位毎にI/O数を集計する必要があるが、従来例で扱われる数キロバイトから数百キロバイトの単位でI/O数を集計すると管理情報が増大してしまう。
本発明は、プロセッサと、記憶媒体を有し、データを階層管理して格納するストレージシステムにおいて、データを格納する記憶領域を有する第1の記憶層と、第1の記憶層の記憶領域に格納されたデータの格納する領域を変更して格納する記憶領域を有する第2の記憶層と、を有し、プロセッサは、第1の記憶層のデータに対するI/O量を算出し、I/O量に基づいてデータを格納する階層を決定し、決定した階層に応じた記憶媒体に第2の記憶層に格納したデータを物理的に格納する。
本発明の一態様によれば、データ量削減技術と自動階層配置機能を組み合わせることが可能となる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
本発明の実施例1を示し、ストレージシステムが実行する、追い書き方式における階層の再配置の手順を示す図である。 本発明の実施例1を示し、ストレージ装置の構成を示すブロック図である。 本発明の実施例1を示し、ストレージ装置が保持するVOL管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置が保持するプール構成管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置が保持するRAID構成管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置が保持するプール割当管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置が保持するドライブ割当管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置によって管理される論理記憶階層の構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置が保持する階層管理テーブルの構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置におけるキャッシュ領域割当の構成の一例を示す図である。 本発明の実施例1を示し、ストレージ装置が実行するリード処理を示すフローチャートである。 本発明の実施例1を示し、ストレージ装置が実行するライト処理を示すフローチャートである。 本発明の実施例1を示しストレージ装置が実行するデステージ処理を示すフローチャートである。 本発明の実施例1を示し、ストレージ装置が実行するデータ量削減処理を示すフローチャートである。 本発明の実施例1を示し、ストレージ装置が実行する階層再配置処理を示すフローチャートである。 本発明の実施例1を示し、ストレージ装置が実行するガベージコレクション処理を示すフローチャートである。 本発明の実施例2を示し、ストレージ装置の記憶領域の一例を示す図である。
以下、図面に基づいて、本発明の実施例を説明する。添付図面では、機能的に同じ要素を同じ番号で表示する場合がある。添付図面は、本発明の原理に則った具体的な実施形態と実施例とを示している。それらの実施形態及び実施例は、本発明の理解のためのものであり、本発明を限定的に解釈するために用いてはならない。
さらに、本発明の実施形態は、後述するように、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェアで実装してもよいし、又はソフトウェアとハードウェアの組み合わせで実装してもよい。
以下では「プログラム」を主語(処理主体)として本発明の実施形態における各処理について説明を行う場合がある。プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主語とした説明としてもよい。プログラムの一部又は全ては専用ハードウェアで実現してもよく、また、モジュール化されていてもよい。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
以下の説明では、「インターフェース部」は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも1つを含んでよい。ユーザインターフェース部は、1以上のI/Oデバイス(例えば入力デバイス(例えばキーボード及びポインティングデバイス)と出力デバイス(例えば表示デバイス))と表示用計算機とのうちの少なくとも1つのI/Oデバイスを含んでよい。通信インターフェース部は、1以上の通信インターフェースデバイスを含んでよい。1以上の通信インターフェースデバイスは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。メモリ部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的にはCPU(Central Processing Unit)である。
また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下ではデータ量削減手段の例としてデータ圧縮について説明するが、データ重複排除に置き換えてもよい。データ重複排除処理では、複数のデータファイルの中で、重複する部分を共有データファイルとして保持し、各データファイルを共有データファイルに関連付けることによって、保持するデータの総量を削減する。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号(又は要素のID(例えば識別番号))を使用することがある。例えば、複数のストレージコントローラを区別しない場合には、「ストレージコントローラ22」と記載し、各ストレージコントローラを区別する場合には、「ストレージコントローラ1_22A」、「ストレージコントローラ2_22B」のように記載する。他の要素(例えばキャッシュ領域203、バッファ領域202、割当先アドレス1100等)も同様である。
また、以下の説明では、「ストレージシステム」は、1以上のストレージ装置を含む。少なくとも1つのストレージ装置は、汎用的な物理計算機であってもよい。また、少なくとも1つのストレージ装置が、仮想的なストレージ装置であってもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-defined Datacenter)を採用することができる。
以下、本発明の実施例を図面に基づいて説明する。
以下、本発明の実施例1を説明する。
<追い書き方式における階層の再配置手順>
図1は、本発明の実施例1のストレージシステム100が実行する、追い書き方式における階層の再配置手順を示す図である。
ストレージシステム100は、ホスト計算機30及びストレージ装置11によって構成される。ホスト計算機30は、ネットワーク31を介してストレージ装置11に接続され、管理計算機(図示せず)によって管理される。
ストレージ装置11は、内部に2つ以上のストレージコントローラ22を有し、複数の論理的な記憶領域1201を含む1つ以上のボリューム1000をホスト計算機30に提供している。
ホスト計算機30は、物理的な計算機でもよいし、物理的な計算機で実行される仮想的な計算機でもよい。ホスト計算機30は、ストレージシステム100において実行される仮想的な計算機でもよい。
ホスト計算機30から、ボリューム(VOL)1000内の記憶領域1201に対してデータの書き込み(または読み出し)が行われる。アクセスの際、ホスト計算機30はデータが格納された割当先アドレス1100を指定することで、ストレージ装置11がデータの論理的な格納位置を決定する。
ストレージコントローラ22は、記憶領域1201を指定して書き込まれたデータを圧縮し、物理的なデータの格納領域であるプール1001内にある追記領域1202の追記アドレス1101に対して圧縮後のデータを割当てる。すなわち、領域(データの位置またはサイズの一方又は両方)を変更してプール1001に書き込む。
なお、追記領域1202に対して、パリティサイクル分のデータが割当てられると、ストレージコントローラ22はパリティを生成する。そして、ストレージコントローラ22は、追記領域1202に対応する階層(Tier)1200に属するRAIDグループ1002のアドレス空間1003へ圧縮データ及びパリティを格納する。
この際、ホスト計算機30からのアクセス頻度が高くなるデータを上位階層のTier1_1200-1へ優先的に格納することによって、ストレージシステム全体の性能が向上する。
なお、本実施例1のストレージ装置11の階層は、Tier1_1200-1の方がTier2_1200-2に比して読み書きの速度が高速な例を示す。なお、ストレージ装置11の階層は、速度に限定されるものではなく、レイテンシや容量または可用性などの指標で階層を構成することができる。
本実施例1では、ストレージシステム100において、ホスト計算機30からのI/O後にTier1200の再配置を行う場合について示す。具体例は、下記に示す通りである。
(S1)ストレージ装置11は、ホスト計算機30からネットワーク31を介してライト命令又はリード命令を受信する。命令を受信するとストレージコントローラ22はホスト計算機30から要求されたライト処理又はリード処理を実行する。本実施例1ではI/O処理終了後に、記憶領域1201にデータA、B、Cが割当てられており、データA、B、Cに対応する圧縮データa、b、cがTier2_1200-2を格納位置とする追記領域1202-2に割当てられている。
(S2)ストレージコントローラ22は、ライト命令又はリード命令を受け付けるとI/O要求(命令)を受けた論理的な領域である記憶領域1201毎に、ライト及びリードそれぞれのI/O数をカウントする。前記従来例の自動階層配置機能では、物理的な記憶領域に対してI/O数を集計していたのに対し、本実施例1では論理的(または仮想的)な記憶領域1201に対するI/O数を集計する。
これによって、記憶領域1201では階層間でデータの移動の影響を受けることなく、I/O数のカウントを継続することができる。
(S3)ストレージコントローラ22は、I/O数の集計時ないし周期的な契機で記憶領域1201毎に集計したI/O数から、データの格納位置に適した仮想階層配置を判定する。ストレージコントローラ22が、データに適した仮想階層配置はTier1_1200-1と判定し、判定時にデータが格納されている階層が別の階層Tier2_1200-2であった場合、仮想階層配置によりTier1_1200-1へのデータの再配置が実行される。
(S4)ストレージコントローラ22は、圧縮データa、b、cを再配置先のTier1_1200-1で、対応する追記領域1202-1に移動させる。
(S5)ストレージコントローラ22は、上記(S4)で移動させた圧縮データa、b、cと記憶領域1201内のデータA、B、Cを対応付けるように論理アドレスと物理アドレスのマッピング情報を更新する。
以上が、階層再配置の一例である。なお、追い書き方式は、前記従来例と同様のLog-Structured Storageであり、書き込みが変更差分の追記のみで実現されるファイルシステムである。
<ストレージ装置>
図2は、本発明の実施例1のストレージ装置11の構成を示すブロック図である。ストレージ装置11は、1以上のストレージコントローラ22と、1以上のストレージコントローラ22に接続された種々のドライブ29とを有する。
ストレージコントローラ22は、ホスト計算機30との通信を行うFE_I/F(フロントエンドインターフェースデバイス)23と、ストレージ装置間での通信を行うためのストレージI/F(ストレージインターフェースデバイス)28と、装置全体を制御するプロセッサ24と、プロセッサ24で使用されるプログラム及び情報を格納するメモリ25と、ドライブ29との通信を行うBE_I/F(バックエンドインターフェースデバイス)27、及びそれらを接続する内部ネットワーク26を含む。
メモリ25は、制御プログラムを管理するプログラム領域201と、データの転送及びコピーの際に一時的な保存領域であるバッファ領域202と、ホスト計算機30からのライトデータ(ライト命令に応答して書き込まれるデータ)及びドライブ29からのリードデータ(リード命令に応答して読み出されたデータ)を一時的に格納するキャッシュ領域203、及び、種々のテーブルを格納するテーブル管理領域206を有する。
プログラム領域201にロードされた制御プログラムは、プロセッサ24によって実行され、リード処理やライト処理などを実行してストレージ装置11の各種機能を提供する。
キャッシュ領域203は、ホスト計算機30からのライトデータを一時的に格納する非圧縮データ格納領域204、及び、圧縮したデータを格納する圧縮データ格納領域205を有する。
テーブル管理領域206は、VOL1000に関する情報を保持するVOL管理テーブル207と、プール1001に関する情報を保持するプール構成管理テーブル208と、RAID構成に関する情報を保持するRAID構成管理テーブル209と、プール割当てに関する情報を保持するプール割当管理テーブル210と、ドライブ割当てに関する情報を保持するドライブ割当管理テーブル211、及び、記憶領域毎のI/O数やI/O頻度に関する情報を保持する階層管理テーブル212を格納する。
ドライブ29は、不揮発性のデータ記憶媒体を有する装置であり、性能の異なる複数種類のドライブを含む。ドライブ29は、例えば、FC(Fibre Channel)、NVMe(Non-Volatile Memory Express)、SAS(Serial Attached SCSI)、SATA(Serial Advanced Technology Attachment)などのインターフェースを有するハードディスクドライブ、I/Oスループット性能及びI/Oレスポンス性能がハードディスクドライブより高いSSD(Solid State Drive)などによって構成される。
これらの複数の種類のドライブ29を、近い性能を有するドライブ群に分類したものが階層(Tier)である。階層間の関係は性能の高低関係によって定義される。例えば、性能の高い順に(SSDなど)、Tier1からTier2、3と定義する。また、使用されなくなった旧機種などを外部ストレージとして接続するケースを想定し、性能が低いことを前提とした最下位Tierを定義してもよいし、ユーザが管理I/Fを介して外部ストレージの性能に応じた階層を設定してもよい。
SSDは複数のフラッシュメモリと、それらを制御するSSDコントローラとを有する半導体記憶媒体であり、外観形状等はフォームファクタに限定されない。また、フラッシュメモリには、NORやNAND等の不揮発性の半導体メモリを使用してよい。また、フラッシュメモリに代えて、磁気抵抗メモリであるMRAM(Magnetoresistive random access memory)や、抵抗変化型メモリであるReRAM(Resistance random access memory)、強誘電体メモリであるFeRAM(Ferroelectric random access memory)等の各種半導体メモリを使用してもよい。
FE_I/F23、BE_I/F27及びストレージI/F28が、インターフェース部の一例である。メモリ25が、メモリ部の一例である。プロセッサ24が、プロセッサ部の一例である。
<VOL管理テーブル>
図3は、本発明の実施例1のストレージ装置11が保持するVOL管理テーブル207の構成例を示す図である。
VOL管理テーブル207は、VOL1000毎にエントリを有する。各エントリは、VOL_ID41と、VOL属性42と、VOL容量43及びプールID44といった情報を格納する。以下、1つのVOL(図3の説明において「対象VOL」)の例について説明する。
VOL_ID41は、対象VOLのID(識別情報)である。VOL属性42は、対象VOLの属性(例えば、対象VOLがシンプロビジョニングを適用されるVOLであるか、通常のVOLであるか、また、圧縮が有効であるか否かなど)を示す。VOL容量43は、対象VOLの容量を示す。プールID44は、対象VOLに関連付けられているプール1001のIDである。
プロセッサ24は、VOL管理テーブル207のVOL属性42を参照することで、データ圧縮を必要とするVOL1000か否かを判定できる。例えば、VOL属性42が“圧縮有効”であればプロセッサ24は、データ圧縮処理を行う。
<構成管理テーブル>
図4は、本発明の実施例1のストレージ装置11が保持するプール構成管理テーブル208の構成例を示す図である。
プール1001は、1以上のRAIDグループ1002を基に構成された論理記憶領域である。プール構成管理テーブル208は、プール1001毎にエントリを有する。各エントリは、プールID51と、RAIDグループID52と、プール容量53及びプール使用容量54と、自動階層管理55の適用有無(ON/OFF)といった情報を格納する。以下、1つのプール(図4の説明において「対象プール」)の例について説明する。
プールID51は、対象プールのIDである。RAIDグループID52は、対象プールの基になっている1以上のRAIDグループ1002の各々のIDである。プール容量53は、対象プールの容量を示す。プール使用容量54は、対象プールのプール容量のうちVOL1000に割り当てられている領域の総量を示す。自動階層管理55は対象プールが自動階層管理の対象か否かを示す。
図5は、本発明の実施例1のストレージ装置11が保持するRAID構成管理テーブル209の構成例を示す図である。
RAID構成管理テーブル209は、RAIDグループ1002毎にエントリを有する。各エントリは、RAIDグループID61と、RAIDレベル62と、ドライブID63と、ドライブ種別64と、容量65及び使用容量66といった情報を格納する。以下、1つのRAIDグループ(図5の説明において「対象RAIDグループ」)の例について説明する。
RAIDグループID61は、対象RAIDグループのIDである。RAIDレベル62は、対象RAIDグループに適用されるRAIDアルゴリズムの種別を示す。ドライブID63は、対象RAIDグループを構成する1以上のドライブ29の各々のIDである。ドライブ種別64は、対象RAIDグループを構成するドライブの種別(例えばHDDかSSDか)を示す。容量65は、対象RAIDグループの容量を示す。使用容量66は、対象RAIDグループの容量のうちの使用されている容量を示す。
<割当管理テーブル>
図6は、本発明の実施例1のストレージ装置11が保持するプール割当管理テーブル210の構成例を示す図である。
プール割当管理テーブル210は、VOLアドレス(VOL内のスロットを示すアドレス)毎にエントリを有する。各エントリは、VOL_ID71と、VOLアドレス72と、プールID73と、プールアドレス74と、圧縮前サイズ75と、圧縮後サイズ76、及びキュー状態77といった情報を格納する。以下、1つのVOLアドレス(図6の説明において「対象VOLアドレス」)の例について説明する。
VOL_ID71は、対象VOLアドレスによって識別されるスロットが属するVOLのIDである。VOLアドレス72は、対象VOLのアドレスである。プールID73は、対象VOLアドレスに割り当てられている記憶領域を含むプール1001のIDである。
プールアドレス74は、対象VOLアドレスに割り当てられている記憶領域のアドレス(プール1001に属するアドレス)である。圧縮前サイズ75は、対象プールアドレスを指定したライト命令に従うデータの圧縮前のサイズを示す。圧縮後サイズ76は、対象プールアドレスを指定したライト命令に従うデータの圧縮後のサイズを示す。
キュー状態77は、データの格納位置を示しており、キャッシュ領域203上のみにデータが存在すると“Dirty”、ドライブ29へ書き出し済みだと“Clean”、ドライブのみにデータが存在すると“キャッシュMiss”のように表す。
なお、上記スロットは、ストレージコントローラ22が利用する記憶領域の管理単位のひとつである。本実施例1のストレージコントローラ22は、数キロバイトのチャンクと、32個のチャンクを纏めたスロットと、42MB単位でスロットを管理するページの3つの単位で記憶領域を管理する。
図7は、本発明の実施例1のストレージ装置11が保持するドライブ割当管理テーブル211の構成例を示す図である。
ドライブ割当管理テーブル211は、プールアドレス毎にエントリを有する。各エントリは、プールID81と、プールアドレス82と、RAIDグループID83と、ドライブID84及びドライブアドレス85といった情報を格納する。以下、1つのプールアドレス(図7の説明において「対象プールアドレス」)の例について説明する。
プールID81は、対象プールアドレスが属するプール1001のIDである。プールアドレス82は、対象プールアドレスである。RAIDグループID83は、対象プールアドレスが示す記憶領域の基になっているRAIDグループのIDである。
ドライブID84は、対象プールアドレスが示す記憶領域の基になっているドライブ29のIDである。ドライブアドレス85は、対象プールアドレスに対応したドライブアドレスである。
<論理記憶階層>
図8は、本発明の実施例1のストレージ装置11によって管理される論理記憶階層の構成例を示す図である。
VOL1000は、ホスト計算機30に提供される。また、コピー処理又は重複排除処理によって、VOL1000内の複数の論理データの管理単位(スロット)から1つのプールアドレスを指すことがあり、複数のVOLのスロットから一つのプールアドレスを指すこともある。
図8の例では、異なる2つのスロット(VOLアドレス)1102及び1103が、同一のプールアドレス1105-2を指している。なお、VOL1000からプール1001の割当ては、プール割当管理テーブル210を基に管理される。また、プール1001からアドレス空間1003(すなわちRAIDグループ1002を構成する複数のドライブ29が提供する複数のアドレス空間)への割当ては、ドライブ割当管理テーブル211を基に管理される。
<階層管理テーブル>
図9は、本発明の実施例1のストレージ装置11が保持する階層管理テーブル212の構成例を示す図である。
階層管理テーブル212は、記憶領域1201(ページ:複数のスロットを含むアドレス範囲)毎にエントリを有する。各エントリは、VOL_ID91と、記憶領域VOLアドレス92と、ライトI/O数93と、リードI/O数94と、I/O頻度95及び仮想階層配置96といった情報を格納する。以下、1つの記憶領域VOLアドレス(図9の説明において「対象VOLアドレス」)の例について説明する。
VOL_ID91は、対象VOLアドレスによって識別されるページが属するVOLのIDである。記憶領域VOLアドレス92は、対象VOLアドレスである。ライトI/O数93は、対象VOLアドレスを指定してライトされた回数の単位時間当たりの集計数を示す。リードI/O数94は、対象VOLアドレスを指定してリードされた回数の単位時間当たりの集計数を示す。
I/O頻度95は、ライトI/O数93とリードI/O数94から所定の計算式で算出した単位時間当たりのI/O負荷の度数を示す。例えば、ライトI/O数93に係数1、リードI/O数94に係数2を掛けた値の合計値を、I/O頻度95として算出すればよい。なお、I/O頻度95の算出については、これに限定されるものではなく、平均値などの統計的手法により算出してもよい。
仮想階層配置96は、ストレージコントローラ22がI/O頻度95から判定したデータの格納に適する階層配置を示す。I/O頻度95の値が高ければ上位階層であるTier_1(1200-1)となり、I/O頻度95の値が低ければ下位階層であるTier_2(1200-2)となる。なお、I/O頻度95の高低はソート結果から所定のページ数を高いI/O頻度95のページとして判定してもよいし、任意の閾値を用いて判定してもよい。また、上位階層へ配置できるページ数の上限はデータの圧縮率に依存することから、プール割当管理テーブル210の圧縮後サイズ76やRAID構成管理テーブル209の使用容量66から導出してもよい。
図10は、本発明の実施例1のストレージ装置11におけるキャッシュ領域割当の構成例を示す図である。
キャッシュ領域203は、VOL1000に対応した仮想的なアドレス空間である非圧縮データを格納する記憶領域1201-1及び1201-2と、プールアドレスに対応した圧縮データを格納する追記領域1202-1及び1202-2をストレージコントローラ22へ提供している。
ホスト計算機30からストレージコントローラ22に対するライト命令によって、ホスト計算機30が指定するVOLアドレスに対応する記憶領域1201が割当てられる。ストレージコントローラ22は、データを圧縮すると圧縮したデータを、キャッシュ領域203内のプールアドレスに対応する追記領域1202に格納する。その際、追記領域1202はVOLアドレスに対応したページの階層管理テーブル212における仮想階層配置96から判定され、追記領域1202-1もしくは1202-2に格納される。
図10の例では、記憶領域1201-1にライトされたデータが追記領域1202-1を指し、記憶領域1201-2にライトされたデータが追記領域1202-2を指している。なお、VOLアドレスとプールアドレスの割当ては、プール割当管理テーブル210で管理される。追記領域1202では、領域内に追記されたデータ量がパリティサイクルのサイズに達すると、プロセッサ24を介して記憶領域1201とは対応しないパリティ1104が生成される。
以下、本実施例1で行われる処理の例を説明する。
<リード処理>
図11は、本発明の実施例1のストレージ装置11が実行するリード処理を示すフローチャートである。
リード処理は、ホスト計算機30からネットワーク31を介してストレージ装置11がリード命令を受けた場合に開始される。リード命令では、例えば、仮想ID(例えば、仮想VOL_ID)と、アドレス、及びデータサイズが指定される。
ステップS1201で、プロセッサ24は、リード命令から特定されるスロットの排他を確保する。なお、スロットの排他確保時に他の処理がスロットの排他を確保している場合、プロセッサ24は、一定の時間待機してから、ステップS1201を行う。なお、排他の確保は、当該領域(スロット)に対するアクセスが禁止されることを示す。
ステップS1202で、プロセッサ24は、リードデータがキャッシュ領域203に存在するか否かを判定する。ステップS1202の判定結果が真(YES)の場合、ステップS1204に進む。ステップS1202の判定結果が偽(NO)の場合、プロセッサ24は、S1203で、RAIDグループからリードデータをバッファ領域202に転送する。
なお、この際、プロセッサ24は、ホスト計算機30が指定したVOL_IDとVOLアドレスから、プール割当管理テーブル210のプールID73と、プールアドレス74及び圧縮後サイズ76を特定し、ドライブ割当管理テーブル211からドライブID84及びドライブアドレス85を参照し、データの格納場所及びデータサイズを特定する。
ステップS1204で、プロセッサ24はバッファ領域202上のリードデータが圧縮されているか否かを圧縮後サイズ76から判定し、圧縮済みのデータであればステップS1205において伸長し、圧縮データで無い場合はステップS1205をスキップする。
ステップS1206で、プロセッサ24はバッファ領域202上のリードデータをホスト計算機30に転送する。ホスト計算機30は、ステップS1206のデータ転送が完了した時点でリード処理が終了したと判定する。
その後、プロセッサ24は、ステップS1207で、確保していたスロットの排他を解除する。ステップS1207の完了後、プロセッサ24はリード処理が完了したと判定してステップS1208においてリード対象のスロットが属する階層管理テーブル212内の記憶領域VOLアドレス92を特定し、リードI/O数94をカウントアップして処理を終了する。
<ライト処理>
図12は、本発明の実施例1のストレージ装置11が実行するライト処理を示すフローチャートである。
ライト処理は、ホスト計算機30からストレージ装置11がライト命令を受信した場合に開始される。なお、以下の説明では、例えば、複数のストレージコントローラ22を区別するためにストレージコントローラ1_22A、ストレージコントローラ2_22Bのように記載する。また、プロセッサ24をプロセッサ24Aと記載するなど、ストレージコントローラ1_22A及びストレージコントローラ2_22Bに属するものをそれぞれ参照符号に付した「A」及び「B」によって区別する。
ホスト計算機30からのライト命令には、データの割当て(格納)先アドレスが含まれている。ストレージ装置11は、ステップS1301において割当先アドレス1100が示すスロットの排他を確保する。なお、スロットの排他の確保の後に、プロセッサ24Aは、データのライト先とするキャッシュ領域203Aにスロットを割当てる。
ステップS1302で、プロセッサ24Aは、ホスト計算機30に対してライト処理の準備ができたことを示す「Ready」を応答する。プロセッサ24Aは、「Ready」を受信したホスト計算機30から、ライトデータを受け付ける。
プロセッサ24Aは、ステップS1303において受け付けたライトデータを、スロットを割当てたキャッシュ領域203Aへ格納する。ステップS1304において、ストレージコントローラ1_22Aからストレージコントローラ2_22Bに対してキャッシュ領域203Aに格納したライトデータを転送し、キャッシュ領域203Bに格納することで二重化を行う。
ステップS1305において、プロセッサ24Aは、プール割当管理テーブル210のキュー状態77を更新する。なお、本ケースにおいてライトデータは未だ圧縮されていない。そのため、データのライト先として割当てられたスロットに対応する圧縮後サイズ76の値は無い。また、キュー状態77はドライブ29への書き出し処理であるデステージ処理を待つ“Dirty”状態としてデータがキャッシュ領域203A及びキャッシュ領域203Bに留まる。
二重化とマッピング情報の更新が完了した後、ステップS1306においてストレージ装置11から、ネットワーク31を介してホスト計算機30に対してライト処理が完了したことを示す完了応答を返信する。完了応答を返信すると、ステップS1307においてストレージ装置11は確保していたスロットの排他を解放する。
ステップS1308において、プロセッサ24Aは、VOL管理テーブル207の内、ライト対象となったVOL-ID41に対応するVOL属性42を参照して、データ削減の有無を判定する。
プロセッサ24Aは、VOL属性42がデータ削減無効かつ、プール構成管理テーブル208における自動階層管理55がONの場合、特許文献2で述べられている集計方法による従来の自動階層管理機能によって階層を決定する。ステップS1311において、プロセッサ24Aは、決定した階層へのデステージ処理を実行する。
ステップS1308において、VOL属性42がデータ削減有効の場合、プロセッサ24Aは、ステップS1309でスロットに対応する階層管理テーブル212内の記憶領域VOLアドレス92を特定し、ライトI/O数93をカウントアップする。次に、ステップS1310においてデータ量削減処理が実行される。
<デステージ処理>
図13は本発明の実施例1のストレージ装置11が実行するデステージ処理を示すフローチャートである。
デステージ処理は、ホスト計算機30からストレージ装置11へのライト命令が完了した後、図12のステップ1311で実行される。なお、デステージ処理は、ライト命令が完了した後に非同期的に行ってもよい。また、デステージ処理はライト命令を契機として開始されてもよいし、周期的な起動や、キャッシュ領域203の消費量などから起動の要否を判定してもよい。デステージ処理の対象データは、データ削減が無効であれば記憶領域1201から選択され、データ削減が有効であれば追記領域1202から選択される。
デステージ処理が開始されると、プロセッサ24Aは、ステップS1401においてキャッシュ領域203上のデステージ処理の対象範囲に対してスロットの排他を確保する。なお、データ削減が無効の場合、従来から追い書き方式を用いないことから連続領域への書き込み(シーケンシャルライト)以外では、デステージ先のドライブ29の格納位置は不連続になる。そのため、ステップS1402のパリティ生成において、プロセッサ24Aが、パリティ計算に必要なデータをドライブ29から読み出す処理が発生する。
一方、データ削減が有効な場合、追い書き方式を用いることからパリティサイクル分のデータが並ぶデータ列(ストライプ列)からパリティが生成される。ステップS1403で、プロセッサ24Aは、対象のデータ列及び生成したパリティデータをドライブ29に書き出す。
ステップS1404において、プロセッサ24Aは、プール割当管理テーブル210のキュー状態77を更新する。なお、本ケースにおいて、キュー状態77が“Clean”に更新される。ステップS1405で、プロセッサ24Aは、デステージされた範囲のスロットの排他を解放し、処理を終了する。
<データ量削減処理>
図14は本発明の実施例1のストレージ装置11が実行するデータ量削減処理を示すフローチャートである。
データ量削減処理は、図12のステップ1310のように、ライト命令の完了を契機として開始されてもよいし、周期的な起動や、キャッシュ領域203の消費量などから起動の要否を判定してもよい。
データ量削減処理は、データ削減が有効なVOL1000の記憶領域1201における“Dirty”状態のデータを対象に実行される。フローチャートで示す圧縮はライトデータに対して行われる所定の処理の一例である。プロセッサ24Aは、圧縮以外の処理、例えば、重複排除や暗号化又は冗長化等を行ってもよい。
ステップS1501において、プロセッサ24Aはプール割当管理テーブル210の圧縮後サイズ76が無効かつキュー状態77が“Dirty”状態のデータを選択する。次に、ステップS1502において、プロセッサ24Aは、選択したデータのスロットの排他を取得する。
次に、プロセッサ24Aは、排他を取得したデータを、ステップS1503においてバッファ領域202Aに読み出してバッファ領域202A上で圧縮する。ステップS1504において、プロセッサ24Aは、対象スロットのVOLアドレス72に対応する、記憶領域VOLアドレス92の仮想階層配置96を判定する。
なお、仮想階層配置96が初回の割り当てなどの初期状態で値が無い場合、プロセッサ24Aは、RAID構成管理テーブル209の容量65と使用容量66から空き容量があることを判定し、空きのある上位階層(Tier1_1200-1)を仮想階層配置96に登録する。
上位階層から優先的にデータを割当てることで、ストレージシステムの性能が向上するが、上位階層に空きが無い場合、プロセッサ24Aは、空きのある下位階層を選択する。なお、全ての階層において空き容量が無い場合はドライブ29上にデータ量削減後のデータ格納先が無いため、処理を中断してI/Oとは非同期に起動されるガベージコレクションなどの容量回収処理を待つ。
プロセッサ24Aは、判定した仮想階層配置96に対応する追記領域1202を割り当て、ステップS1505においてバッファ領域202A上にある圧縮データをキャッシュ領域203A内の追記領域1202Aに転送する。
なお、本実施例1ではI/O負荷に応じて階層の配置を変更するが、VOLのポリシーとして上位階層を指定するなど、格納先の階層が固定されていることもある。プロセッサ24Aは、転送が完了すると、ステップS1506においてキャッシュ領域203Bに対して二重化の転送を行い、追記領域1202Bに圧縮データを格納する。
その後、プロセッサ24Aは、ステップS1507においてプール割当管理テーブル210のVOLアドレス72(仮想的な格納位置)に対するプールアドレス74(論理的な格納位置)のマッピングと、圧縮後サイズ76を更新する。
次に、ステップS1508において、プロセッサ24Aは、対象スロットの排他を解放してデータ量削減を完了する。なお、ステップS1509ではキャッシュ領域203上の追記領域1202に格納されたデータがパリティサイクル分に達しているか否かを判定しており、真である場合はステップS1510で先述のデステージ処理を実行し、偽である場合は処理を終了する。
<階層再配置処理>
図15は本発明の実施例1のストレージ装置11が実行する階層再配置処理を示すフローチャートである。
階層再配置処理は、I/O頻度95の集計周期に基づいて周期的に起動される。なお、I/O頻度95の集計周期は、例えば、1時間などの予め設定された周期である。
ステップS1601において、プロセッサ24Aは階層管理テーブル212のエントリを選択する。プロセッサ24Aが選択するエントリは、例えば、先頭のエントリから順次選択していく。
次にステップS1602において、プロセッサ24Aは、ライトI/O数93とリードI/O数94から所定の計算式によってI/O頻度95を上述した合計値で算出し、I/O頻度95に登録する。そして、プロセッサ24Aは、ライトI/O数93とリードI/O数94をゼロにリセットする。
プロセッサ24Aは、上記処理を階層管理テーブル212の全てのエントリに対して実行し、ステップS1603において実行が完了したか否かを判定する。プロセッサ24Aは、全エントリのI/O頻度95が算出されると、次にデータの再配置先となる階層の領域に空きがあるか否かをステップS1604において判定する。
階層再配置処理は、ストレージシステムのI/O性能を高くすることを目的に上位階層から優先的にデータを割当てており、再配置はまず上位階層から下位階層へのデモーションを実施してから、下位階層から上位階層へのプロモーションを行う。
プロセッサ24Aは、まずRAID構成管理テーブル209のRAIDグループ1002の内で、下位階層に当たるRAIDグループID_2の容量65と使用容量66からデモーション先の空き容量の有無を判定する(S1604)。
プロセッサ24Aは、容量65と使用容量66の差(空き容量)が所定の閾値未満であれば、空き容量が無く領域枯渇が発生していると判定し、データの再配置が実行できないことから処理を中断し、ステップS1605においてガベージコレクション処理による領域回収を実施する。
一方、プロセッサ24Aは、空き容量が所定の閾値以上であれば空き領域があると判定し、算出したI/O頻度95を基にステップS1606において再配置対象となるエントリを階層管理テーブル212から選択する。
なお、再配置対象となるエントリの選択方法は、I/O頻度95の値で階層管理テーブル212をソートした結果を用いてもよいし、任意の閾値を用いて比較してもよい。更には、I/O頻度95に加えて短周期や長周期など複数周期のI/O頻度や、プール割当管理テーブル210から取得したページ内のデータの圧縮率などを用いてもよい。上記ソート結果を用いる場合、プロセッサ24Aは、I/O頻度95が低くTier1_1200-1に配置されているデータをTier2_1200-2へ移動し、I/O頻度95が高くTier2_1200-2に配置されているデータをTier1_1200-1へ移動する。
ステップS1607において、プロセッサ24Aは、上記選択したエントリに属するデータのスロットの排他を取得する。次に、ステップS1608で、プロセッサ24Aは、再配置先に対応する追記領域1202に圧縮データを移動させる。
プロセッサ24Aは、データの移動が完了するとステップS1609においてプール割当管理テーブル210のマッピング情報を更新する。すなわち、プロセッサ24Aは、プール割当管理テーブル210のプールアドレス74を、データの移動先のアドレスに更新する。これにより、VOLアドレス72は当初のアドレスを維持して、階層が変更されてもI/O頻度95を継続して検出することが可能となる。
次にステップS1610において、プロセッサ24Aは、再配置が完了したデータのスロット排他を解放する。ステップS1611において、プロセッサ24Aは、再配置対象のエントリについて再配置の処理が完了したか否かを判定する。
再配置の完了は、対象として選択したエントリに属するスロットの再配置が完了したことに加え、任意のエントリ数の再配置がデモーションとプロモーションが共に完了したか否かを判定する。再配置が完了していない場合、プロセッサ24Aは、ステップS1604に戻って上記処理を繰り返す。再配置が完了していれば、プロセッサ24Aは再配置処理を終了する。
なお、ステップS1604において領域枯渇と判定された場合、階層管理テーブル212のエントリ内のスロットの再配置が途中であっても処理が中断されることから、仮想階層配置96と物理的な階層配置が乖離することを許容する。
また、S1607において、データの階層を変更して移動させる場合に、データ圧縮、暗号化、重複排除、冗長化などのデータ削減処理の要否を変更してもよい。圧縮の場合、圧縮率の変更を含めてもよい。データ削減処理を行うと一般にI/O速度が遅くなるためである。データ削減処理の要否は、データごとに個別に判断してもよいし、Tier単位で設定してもよい。例えばデータ圧縮の場合、上位のTierに移動させるときに、下位Tierの記憶媒体に格納された圧縮済みデータを伸長して上位Tierの記憶媒体に格納したり、下記のTierに移動させるときに、上位Tierの記憶媒体に格納された圧縮済みデータにさらに圧縮率の高い圧縮を行って下位Tierの記憶媒体に格納したりする。
上記処理によって、I/O頻度95に応じて性能の高い階層(Tier1_1200-1)と性能の低い階層(Tier2_1200-2)の間でデータの移動が行われ、最適なデータの配置が実現される。
<ガベージコレクション>
図16は本発明の実施例1のストレージ装置11が実行するガベージコレクション処理を示すフローチャートである。
ガベージコレクション処理は、上記図15のステップ1605で実施されるのに加え、ライト命令の完了を契機として開始されてもよい。さらに、ガベージコレクション処理は、周期的な起動や階層再配置処理から起動してもよく、プール構成管理テーブル208のプール使用容量54や、RAID構成管理テーブル209の使用容量66などから起動の要否を判定してもよい。
ステップS1701において、プロセッサ24Aは複数の追記領域1202から、ガベージコレクションの対象とする追記領域1202を選択する。なお、対象とする追記領域1202は、ガベージコレクションの起動の際に指定してもよい。あるいは、複数の追記領域1202に対してプロセッサ24Aがラウンドロビン等の手法で選択してもよい。
次にステップS1702において、プロセッサ24Aは、選択した追記領域1202内で所定のページ範囲を選択する。なお、ガベージコレクションの容量回収の効率を向上する方法として、追記領域1202内のデータをページなどの所定の範囲で区切り、ページ内のガベージ量を集計することで、プロセッサ24Aがガベージ量の多いページに対して優先的にガベージコレクションを行うことができる。
ステップS1703において、プロセッサ24Aは、選択したページ内にガベージが存在するか否かを判定する。ガベージの判定は、追記領域1202Aから記憶領域1201Aへの参照関係や、プール割当管理テーブル210でのプールアドレス74の有無からプロセッサ24Aがスロット単位で判定する。
プロセッサ24Aは、選択したページにガベージが無い場合、ステップS1702からの処理を追記領域1202Aの終端(1101)まで繰り返して実行する。そして、プロセッサ24Aは、選択したページ内にガベージが存在する場合、ステップS1704で選択されたページの排他を取得する。
次にステップS1705において、プロセッサ24Aは、ページ内の有効なスロットを順に追記領域1202の終端(1101)に追記していく。なお、データ(スロット)の移動は上記ステップS1701において選択した追記領域1202内で行われるが、スロットに対応する仮想階層配置96が移動先の階層と異なる場合、プロセッサ24Aは、仮想階層配置96と同じ階層の追記領域1202へデータを移動させてもよい。
ステップS1706において、プロセッサ24Aは、プール割当管理テーブル210を書き換えることで、移動したスロットのマッピング情報を更新する。マッピング情報更新が完了すると、ステップS1707において、プロセッサ24Aは、ページの排他を解放する。
更に、この時点で対象のページ内はガベージのみになることから、ステップS1708でプロセッサ24Aは、ドライブ割当管理テーブル211の対象エントリを削除して領域を解放する。
最後にステップS1709でプロセッサ24Aは、追記領域1202の終端(1101)までガベージコレクション処理が実行されたか否かを判定する。ガベージコレクション処理の途中であれば、プロセッサ24Aは、上記ステップS1701に戻って上記処理を繰り返す。一方、追記領域1202の終端(1101)まで処理が終わっていればプロセッサ24Aは、ガベージコレクション処理を終了する。
以上のように、本実施例1のストレージ装置11では、ホスト計算機30に提供する仮想的な記憶領域(VOL1000)と、記憶媒体(ドライブ29)の格納位置と論理的な格納位置を対応付けて管理する論理的な記憶領域(プール1001)を有し、論理的な記憶領域では性能の異なる階層(Tier1200)でデータを格納する記憶媒体を管理し、仮想的な記憶領域におけるデータのI/O負荷(I/O頻度95)に応じて、当該データを格納する階層を決定する。
これにより、仮想的な記憶領域(VOL1000)毎にI/O数を集計することによって、管理情報を削減することができる。また、仮想的な記憶領域(VOL1000)でI/O負荷を測定することで、データ削減技術と自動階層管理機能を組み合わせることが可能となり、上位階層のデータヒット率を向上することができる。
以下、本発明の実施例2を説明する。
<複数位置から参照されるデータの階層決定方法>
図17は、本発明の実施例2のストレージ装置11によって管理されるクローンVOLの構成例を示す図である。
実施例1では、追記領域1202と記憶領域1201に割当てられるデータのマッピング状態は1対1の対応を有する。しかし、本実施例2では重複排除や、VOLのイメージをコピーするシャドウイメージや、VOLを複製したクローンVOL_1000Xなどの記憶領域1201内の複数の割当先アドレス1100、1100Xから追記領域1202の1つのデータaを指す構成を示している。
この様な構成において、先述の階層管理テーブル212の仮想階層配置96から物理的なデータの階層を決める方法について以下に説明する。
(S11):プロセッサ24は、複数のスロットが所属する各々の記憶領域1201における仮想階層配置96の中から最上位の階層を選択する。
(S12):複数のスロットが所属する各々の記憶領域1201に対して集計したI/O頻度95の合算から階層を決定する。
また、複数のスロットから参照される重複データのみを格納する領域(共通領域)を定義する場合がある。共通領域は記憶領域1201をホスト計算機30に直接提供しておらず、重複データの参照先からのリードI/Oのみ受け付ける。この様な、重複データに対応する記憶領域1201に対しても仮想階層配置を定義することで、実施例1と同様の手順による階層管理を実現できる。
<まとめ>
上記した実施例1、2では階層をドライブの種別や外部接続ストレージなどの物理的な記録媒体によって区別したが、これに限定されることはなく仮想的な階層であってもよい。例えば、上位階層と下位階層は圧縮アルゴリズムの差や、重複排除や暗号化の有無、データの種別によって分けられてもよい。
更に、ドライブの種別が同じであってもドライブの物理的な接続位置や、ドライブの寿命といった指標で階層を分けてもよく、I/Oを受信するFE_I/F23の位置やドライブの寿命消費によって階層間のI/O性能差が逆転し、階層順序が逆転することもありえる。
また、上記の実施例1、2では追い書き方式について説明したが、仮想的な階層配置を基に物理的な階層配置を決める構成であれば、追い書き方式だけに限定されない。加えて、上記の実施例1、2では、記憶領域1201や追記領域1202をストレージコントローラ22で定義しているが、物理的な位置に限定は無くドライブ29などの記録媒体のコントローラ内に定義してもよい。
以上のように、上記実施例1、2のストレージ装置11は、プロセッサ24と、メモリ25と、記憶媒体(ドライブ29)を有し、外部の計算機(ホスト計算機30)に提供する仮想的な格納位置(VOLアドレス72)でデータを管理する第1の記憶領域(VOL1000)と、前記記憶媒体(ドライブ29)の性能の違いに応じた階層(Tier1200)と、前記記憶媒体の格納位置(ドライブアドレス85)と、論理的な格納位置(プールアドレス74、82)を対応付けてデータを管理する論理的な第2の記憶領域(プール1001)と、前記プロセッサ24は、前記第1の記憶領域に対するデータ毎のI/O負荷(I/O頻度95)を算出し、前記I/O負荷に応じて前記データを格納する前記階層を決定する。
これにより、仮想的な格納位置でデータを管理する第1の記憶領域でI/O負荷を算出することによって、前記従来例を適用した場合に比して管理情報を削減することができる。また、第1の記憶領域と第2の記憶領域でデータの管理を行うことで、データ削減技術と自動階層配置機能を組み合わせることが可能となる。上位階層のデータヒット率を向上することができる。
また、プロセッサ24は、前記第1の記憶領域のデータについて前記I/O負荷を所定の周期で算出し、前記データの前記I/O負荷の変動に応じて前記階層の再配置を行う。これにより、データ削減技術と自動階層配置機能を組み合わせて、上位階層のデータヒット率を向上することができる。
また、前記記憶媒体は、前記階層ごとに物理的なデータ格納領域(RAIDグループ1002)を有し、前記プロセッサ24は、前記階層の再配置の際には、前記記憶媒体の格納位置(ドライブアドレス85)と前記論理的な格納位置(プールアドレス82)の対応関係を更新し、前記仮想的な格納位置(VOLアドレス72)と前記論理的な格納位置(プールアドレス74)の対応関係を更新する。
これにより、ストレージ装置11は、データの物理的な格納位置が変更されても、仮想的な格納位置は同じデータに紐付けられるので、仮想的な格納位置(ドライブアドレス)を参照することでI/O負荷を継続して算出することが可能となる。
また、前記プロセッサは24、前記第2の記憶領域を追い書きによって管理し、前記階層の再配置の際には、前記階層間で移動するデータを前記第2の記憶領域の終端に追記する。これにより、書き込みが変更差分の追記のみで実現され、処理の高速化を図ることができる。
また、前記プロセッサ24は、前記階層の再配置の際には、前記階層間で移動するデータのデータ削減要否を変更して前記第2の記憶領域へ格納する。これにより、階層に応じたデータ量の削減を図ることができる。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されるものではない。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
100 ストレージシステム
11 ストレージ装置
22 ストレージコントローラ
29 ドライブ
30 ホスト計算機
31 ネットワーク
202 バッファ領域
203 キャッシュ領域
204 非圧縮データ格納領域
205 圧縮データ格納領域

Claims (4)

  1. プロセッサと、記憶媒体を有し、データを階層管理して格納するストレージシステムにおいて、
    外部の計算機からのデータを格納する記憶領域を有するボリュームと、
    前記ボリュームの記憶領域に格納されたデータを格納する領域を変更して格納する記憶領域を有するプールと、
    前記ボリュームのアドレスと前記プールのアドレスとのマッピングを管理する、第1管理情報と、
    前記外部の計算機がアクセスした前記ボリュームのアドレスと前記アドレスに対するライトI/O量及びリードI/O量を示す、第2管理情報と、
    を有し、
    前記ボリュームでは、前記記憶領域は階層に分かれておらず、上書き方式にてデータが格納され、
    前記プールでは、前記記憶領域は階層に分かれており、追い書き方式にてデータが格納され
    前記プールは、前記ボリュームに格納されたデータのデータ量を変更して格納し、
    前記ライトI/O量及び前記リードI/O量に基づいて前記データを格納する前記階層を変更可能であり、
    前記データの階層が変更された場合に、
    前記ボリュームでは、前記データの格納位置が変更されず、
    前記プールでは、前記データの格納位置が変更され、
    前記データを物理的に格納する前記記憶媒体が変更され、
    前記プロセッサは、
    前記外部の計算機の前記ボリュームのアドレスへのリードアクセス及びライトアクセスに対して、前記第2管理情報において、前記アクセスされたアドレスのリードI/O量及びライトI/O量を更新し、
    前記第2管理情報が示す前記ボリュームのデータの前記リードI/O量及びライトI/O量から計算されたI/O負荷を表す値に基づいて、前記データを格納する前記プールにおける前記階層を決定し、
    前記決定された階層に基づいて、前記第1管理情報を更新し、
    前記決定した階層に応じた記憶媒体に前記プールに格納したデータを物理的に格納し、
    データ圧縮、暗号化またはデータ重複排除の少なくとも一つを含むデータ量削減を行って前記記憶媒体にデータを格納することが可能であり、
    前記データの階層が変更された場合に、データ毎にデータ量削減の適用要否が変更可能であり、
    前記データ量削減の適用または非適用に変更して処理を行って前記データを前記記憶媒体間で移動させる
    ことを特徴とするストレージシステム。
  2. 請求項1に記載のストレージシステムにおいて、
    前記データ量の変更は、データ重複排除であり、前記プールのデータは、前記ボリュームの複数のデータと対応付けられており、
    前記ボリュームの複数のデータにかかる階層のうち、前記I/O負荷を表す値が大きい方に対応する階層に基づいて、前記プールにおけるデータの階層を決定する
    ことを特徴とするストレージシステム。
  3. プロセッサと、記憶媒体を有するストレージシステムを用いて、データを階層管理して格納するデータ記憶方法において、
    前記ストレージシステムは、
    外部の計算機からのデータを格納する記憶領域を有するボリュームと、
    前記ボリュームの記憶領域に格納されたデータを格納する領域を変更して格納する記憶領域を有するプールと、
    前記ボリュームのアドレスと前記プールのアドレスとのマッピングを管理する、第1管理情報と、
    前記外部の計算機がアクセスした前記ボリュームのアドレスと前記アドレスに対するライトI/O量及びリードI/O量を示す、第2管理情報と、
    を有し、
    前記ボリュームでは、前記記憶領域は階層に分かれておらず、上書き方式にてデータが格納され、
    前記プールでは、前記記憶領域は階層に分かれており、追い書き方式にてデータが格納され
    前記プールは、前記ボリュームに格納されたデータのデータ量を変更して格納し、
    前記ライトI/O量及び前記リードI/O量に基づいて前記データを格納する前記階層を変更可能であり、
    前記データの階層が変更された場合に、
    前記ボリュームでは、前記データの格納位置が変更されず、
    前記プールでは、前記データの格納位置が変更され、
    前記データを物理的に格納する前記記憶媒体が変更され、
    前記データ記憶方法は、前記プロセッサが、
    前記外部の計算機の前記ボリュームのアドレスへのリードアクセス及びライトアクセスに対して、前記第2管理情報において、前記アクセスされたアドレスのリードI/O量及びライトI/O量を更新し、
    前記プロセッサが、前記第2管理情報が示す前記ボリュームのデータの前記リードI/O量及びライトI/O量から計算されたI/O負荷を表す値に基づいて、前記データを格納する前記プールにおける前記階層を決定し、
    前記決定された階層に基づいて、前記第1管理情報を更新し、
    前記プロセッサが、前記決定した階層に応じた記憶媒体に前記プールに格納したデータを物理的に格納し、
    データ圧縮、暗号化またはデータ重複排除の少なくとも一つを含むデータ量削減を行って前記記憶媒体にデータを格納し、
    前記データの階層が変更された場合に、データ毎にデータ量削減の適用要否を決定し、
    前記データ量削減の適用または非適用に変更して処理を行って前記データを前記記憶媒体間で移動させる
    ことを特徴とするデータ記憶方法。
  4. 請求項3に記載のデータ記憶方法において、
    前記データ量の変更は、データ重複排除であり、前記プールのデータは、前記ボリュームの複数のデータと対応付けられており、
    前記プロセッサが、前記ボリュームの複数のデータにかかる階層のうち、前記I/O負荷を表す値が大きい方に対応する階層に基づいて、前記プールにおけるデータの階層を決定する
    ことを特徴とするデータ記憶方法。
JP2018184119A 2018-09-28 2018-09-28 ストレージ装置、管理方法及びプログラム Active JP6995728B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018184119A JP6995728B2 (ja) 2018-09-28 2018-09-28 ストレージ装置、管理方法及びプログラム
CN201910720466.1A CN110968262B (zh) 2018-09-28 2019-08-06 存储装置和数据存储方法
US16/559,866 US11093134B2 (en) 2018-09-28 2019-09-04 Storage device, management method, and program in tiered storage system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018184119A JP6995728B2 (ja) 2018-09-28 2018-09-28 ストレージ装置、管理方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2020052919A JP2020052919A (ja) 2020-04-02
JP6995728B2 true JP6995728B2 (ja) 2022-01-17

Family

ID=69947541

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018184119A Active JP6995728B2 (ja) 2018-09-28 2018-09-28 ストレージ装置、管理方法及びプログラム

Country Status (3)

Country Link
US (1) US11093134B2 (ja)
JP (1) JP6995728B2 (ja)
CN (1) CN110968262B (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220264277A1 (en) 2020-03-24 2022-08-18 Nec Corporation Gateway device, core network device, communication system, delivery method, and non-transitory computer-readable medium
US11625370B2 (en) * 2020-04-07 2023-04-11 Vmware, Inc. Techniques for reducing data log recovery time and metadata write amplification
CN111737296B (zh) * 2020-06-15 2024-03-01 中国建设银行股份有限公司 一种业务处理方法、装置、设备及存储介质
CN117215475A (zh) * 2022-05-31 2023-12-12 上海寒武纪信息科技有限公司 数据存储、访问、运算方法及相关产品

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077168A1 (en) 2008-09-24 2010-03-25 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
US20130290281A1 (en) 2012-04-27 2013-10-31 Hitachi, Ltd. Storage apparatus and data management method
WO2015145532A1 (ja) 2014-03-24 2015-10-01 株式会社日立製作所 ストレージシステム及びデータ処理方法
WO2016052665A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
JP2016511474A (ja) 2013-10-28 2016-04-14 株式会社日立製作所 階層化ストレージにおける重複排除及びホストベースQoS
WO2016203612A1 (ja) 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
WO2012082792A2 (en) * 2010-12-13 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for auto-commit memory
CN103299265B (zh) 2011-03-25 2016-05-18 株式会社日立制作所 存储系统和存储区域分配方法
CN103744617B (zh) * 2013-12-20 2016-09-28 北京奇虎科技有限公司 一种键-值存储系统中数据文件的合并压缩方法及装置
JP5707540B1 (ja) * 2014-01-31 2015-04-30 株式会社東芝 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
JP6118380B2 (ja) * 2015-09-24 2017-04-19 株式会社日立製作所 ストレージシステム及び記憶領域の割当方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100077168A1 (en) 2008-09-24 2010-03-25 Hitachi, Ltd. System and method for controlling automated page-based tier management in storage systems
US20130290281A1 (en) 2012-04-27 2013-10-31 Hitachi, Ltd. Storage apparatus and data management method
JP2016511474A (ja) 2013-10-28 2016-04-14 株式会社日立製作所 階層化ストレージにおける重複排除及びホストベースQoS
WO2015145532A1 (ja) 2014-03-24 2015-10-01 株式会社日立製作所 ストレージシステム及びデータ処理方法
WO2016052665A1 (ja) 2014-09-30 2016-04-07 株式会社日立製作所 分散型ストレージシステム
WO2016203612A1 (ja) 2015-06-18 2016-12-22 株式会社日立製作所 ストレージ装置

Also Published As

Publication number Publication date
JP2020052919A (ja) 2020-04-02
US20200104055A1 (en) 2020-04-02
US11093134B2 (en) 2021-08-17
CN110968262B (zh) 2023-04-11
CN110968262A (zh) 2020-04-07

Similar Documents

Publication Publication Date Title
JP6802209B2 (ja) ストレージシステム
JP5792313B2 (ja) ストレージシステム
JP6995728B2 (ja) ストレージ装置、管理方法及びプログラム
JP5438827B2 (ja) 記憶制御装置及び仮想ボリュームの制御方法
US20180173632A1 (en) Storage device and method for controlling storage device
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
JP5944587B2 (ja) 計算機システム及び制御方法
US8984221B2 (en) Method for assigning storage area and computer system using the same
US10222988B2 (en) Efficient management storage system via defining of several size units in advance
JP4690765B2 (ja) ストレージ管理システム、ストレージ管理サーバ、データ再配置制御方法およびデータ再配置制御プログラム
WO2015145532A1 (ja) ストレージシステム及びデータ処理方法
US9792073B2 (en) Method of LUN management in a solid state disk array
WO2015162758A1 (ja) ストレージシステム
JP2015517697A (ja) 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法
US8954658B1 (en) Method of LUN management in a solid state disk array
EP3662359A1 (en) Extending ssd longevity
JPWO2017149592A1 (ja) ストレージ装置
US20190243758A1 (en) Storage control device and storage control method
JP2008299559A (ja) ストレージシステム及びストレージシステムにおけるデータ移行方法
JP7065928B2 (ja) ストレージシステム及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210622

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210817

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211215

R150 Certificate of patent or registration of utility model

Ref document number: 6995728

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150