JP6802209B2 - ストレージシステム - Google Patents

ストレージシステム Download PDF

Info

Publication number
JP6802209B2
JP6802209B2 JP2018060662A JP2018060662A JP6802209B2 JP 6802209 B2 JP6802209 B2 JP 6802209B2 JP 2018060662 A JP2018060662 A JP 2018060662A JP 2018060662 A JP2018060662 A JP 2018060662A JP 6802209 B2 JP6802209 B2 JP 6802209B2
Authority
JP
Japan
Prior art keywords
data
area
storage
control unit
stored
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
JP2018060662A
Other languages
English (en)
Other versions
JP2019174994A (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 JP2018060662A priority Critical patent/JP6802209B2/ja
Priority to US16/117,330 priority patent/US10656849B2/en
Publication of JP2019174994A publication Critical patent/JP2019174994A/ja
Priority to US16/860,237 priority patent/US11294578B2/en
Application granted granted Critical
Publication of JP6802209B2 publication Critical patent/JP6802209B2/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/0604Improving or facilitating administration, e.g. storage management
    • G06F3/0605Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
    • 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/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/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/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/285Redundant cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks

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)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)
  • Memory System Of A Hierarchy Structure (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ボリュームに格納する。
非特許文献1には、ホスト計算機から書き込まれた重複するデータを一つにまとめる重複排除処理について、ストレージ装置の稼働率に応じて処理契機を切り替えることで、レスポンスとスループットを両立させる方法について開示されている。
例えば、非特許文献1には、「方式の違いによってIOPSやレイテンシーに関する特性が異なっており、これらを使い分けることでdedup-back方式の低レイテンシー、dedup-through方式の高IOPSを実現するのが本稿で提案するハイブリッド方式である。」及び「本稿では、従来の同期的に重複除去を行うdedup-through方式に加えて、非同期に重複除去を行うdedup-back方式の2つを比較して、dedup-through方式の高いIOPS性能と同期的な重複除去処理のオーバーヘッドによる高レイテンシー、dedup-back方式の低レイテンシーとtail latencyの増加に伴うIOPS低下を明らかにして、この2つの方式を組み合わせることで高IOPSと低レイテンシーの両立を目指すハイブリッド方式を提案した。」と記載されている。
すなわち、非特許文献1によれば、ストレージ装置の稼働率が低い場合、ホスト計算機からのデータ書き込みを終えてから重複排除処理を実施することで応答時間を短くし、稼働率が高い場合はデータ書き込みと同時に重複排除処理を実施する。
米国特許出願公開第2009/0144496号明細書
加藤 純,大辻 弘貴,鈴木 康介,佐藤 充,吉田 英司:「インメモリー重複除去における書き込み高速化」,研究報告コンピュータシステム・シンポジウム,2016年11月28日,p.51−59
データ書き込みにおいてRAID技術に従ったデータ保護を行うには、冗長化に必要なデータ量(パリティサイクル)を集める必要がある。パリティサイクル分のデータが集まるまでキャッシュメモリ上でのデータ保護が必要なため、キャッシュメモリ上のデータは二重化される。これは、ホスト計算機から書き込まれたデータ及び圧縮されたデータについても同様に行われる。このような場合、データ書き込みの最大速度は、データの読み出し及び二重化によるキャッシュアクセス量によって制限される。
キャッシュアクセス量を低減する方法として、書き込みと同期してデータを圧縮することによって圧縮前のデータを二重化する処理を省略する方法が考えられる。しかし、ホスト計算機に対しての処理完了の応答を返すには、圧縮データを二重化する必要があるため、圧縮処理の時間だけ応答速度が遅くなる。
このような課題は、圧縮機能を有するストレージシステムに限らず、重複排除などの他のデータ量削減機能を有するストレージシステム、及び、暗号化又は冗長化などを行うストレージシステムについてもあり得る。
上記の課題の少なくとも一つを解決するための本発明の代表的な一例を示せば、次の通りである。すなわち、第1のストレージ制御部と、第2のストレージ制御部と、少なくとも前記第1のストレージ制御部に接続され、不揮発性の記憶媒体を有するストレージドライブと、を有するストレージシステムであって、前記第1のストレージ制御部は、それぞれ、データを格納する第1のキャッシュ領域と、データを格納する第1のバッファ領域と、を有しており、前記第2のストレージ制御部は、それぞれ、データを格納する第2のキャッシュ領域と、データを格納する第2のバッファ領域と、を有しており、前記第1のストレージ制御部は、前記第1のキャッシュ領域に格納されたデータを前記第2のキャッシュ領域にも格納して二重化を行うようになっており、前記第1のストレージ制御部は、ホスト計算機からデータの書き込み命令を受信すると、前記書き込み命令の対象のデータを、前記第1のストレージ制御部の前記第1のキャッシュ領域に格納するとともに、前記第1のキャッシュ領域に格納したデータを前記第2のストレージ制御部の前記第2のキャッシュ領域に格納して二重化を行い、前記二重化が完了したら、前記ホスト計算機に、前記データの書き込みの終了を示す応答を送信し、前記第1のストレージ制御部は、前記書き込み命令の対象のデータに所定の処理を行い、前記所定の処理を行った前記書き込み命令の対象のデータを前記ストレージドライブに送信して格納させ、前記第1のストレージ制御部は、前記ストレージシステムにおいてレスポンス性能及びスループット性能のいずれが優先されるかを判定するための所定の条件を保持して、前記所定の条件に基づいて、レスポンス性能及びスループット性能のいずれが優先されるかを判定し、レスポンス性能が優先される場合、前記データを前記二重化により前記第1及び第2のキャッシュ領域に格納して前記データの書き込みの終了を示す応答を送信してから、前記所定の処理を行い、スループット性能が優先される場合、前記所定の処理を行い、前記所定の処理を行ったデータを前記二重化により前記第1及び第2のキャッシュ領域に格納することを特徴とする。
本発明の一態様によれば、圧縮処理から記憶デバイスへの格納までを一括で行うことによって、圧縮データの二重化処理が省略される。圧縮データの二重化が不要になることで、キャッシュアクセス量を削減し、データ書き込みの最大速度が向上できる。また、記憶デバイスへの圧縮データの格納が完了するまでキャッシュメモリ上に圧縮前のデータを保持することによって、圧縮処理や記憶デバイスへの格納などの処理中に装置障害が発生してもデータを保護することが出来る。
上記した以外の課題、構成及び効果は、以下の実施形態の説明によって明らかにされる。
本発明の実施例1のストレージシステムが実行する、データ圧縮処理を伴うデータライト手順を示す説明図である。 本発明の実施例1のストレージ装置の構成を示すブロック図である。 本発明の実施例1のストレージ装置が保持するVOL管理テーブルの構成例を示す説明図である。 本発明の実施例1のストレージ装置が保持するプール構成管理テーブルの構成例を示す説明図である。 本発明の実施例1のストレージ装置が保持するRAID構成管理テーブルの構成例を示す説明図である。 本発明の実施例1のストレージ装置が保持するプール割当管理テーブルの構成例を示す説明図である。 本発明の実施例1のストレージ装置が保持するドライブ割当管理テーブルの構成例を示す説明図である。 本発明の実施例1のストレージ装置によって管理される論理記憶階層の構成例を示す説明図である。 本発明の実施例1のストレージ装置が保持するメモリ割当管理テーブルの構成例を示す説明図である。 本発明の実施例1のストレージ装置におけるメモリ割当の構成例を示す図である。 本発明の実施例1のストレージ装置が実行するリード処理を示すフローチャートである。 本発明の実施例1のストレージ装置が実行するライト処理を示すフローチャートである。 本発明の実施例1のストレージ装置が実行するデステージ処理を示すフローチャートである。 本発明の実施例1のストレージ装置が実行する、排他手順を変更したデステージ処理を示すフローチャートである。
以下の説明では、「インターフェース部」は、ユーザインターフェース部と、通信インターフェース部とのうちの少なくとも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、1101、1104等)も同様である。
また、以下の説明では、「ストレージシステム」は、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は、1以上のボリューム(論理的な記憶領域)を有する。ホスト計算機30は、物理的な計算機でもよいし、物理的な計算機で実行される仮想的な計算機でもよい。ホスト計算機30は、ストレージシステムにおいて実行される仮想的な計算機でもよい。
ホスト計算機30からは、ストレージ装置11のストレージコントローラ1_22A又はストレージコントローラ2_22Bに対してデータの書き込みが行われる。このストレージシステム100において、ホスト計算機30からの圧縮処理を伴うデータのライト処理について説明する。
本実施例では、ホスト計算機30からのライト命令をストレージコントローラ1_22Aが受領した場合について示す。
具体例は、下記に示す通りである。
(S1)ストレージ装置11は、ホスト計算機30からネットワーク31を介してライト命令を受信する。ライト命令は、データとデータの割当先アドレス1100とを含んでいる。ライト命令を受信した場合に、S2以降のライト処理が開始する。
(S2)ストレージ装置11は、ライト命令に応答して、割当先アドレス1100が示すスロットの排他を確保する。これによって、そのスロット内のデータが他のライト命令によって更新されることを防ぐ。「スロット」とは、ボリューム(VOL)における領域である。具体的には、本実施例のスロットは、ドライブ29への書き込みが行われたか否か、及び、バッファ領域202への転送が行われたか否か等の管理の単位となる領域である。本実施例ではこの領域を「スロット」と呼ぶが、他の名称で呼ばれてもよい。
「スロットの排他を確保」とは、ホスト計算機30からのリード命令及びライト命令で指定されたアドレスが示すスロットに対するリード及びライトを防ぐ操作であり、排他を確保したことをホスト計算機30が認識するための情報が管理される。なお、この情報はビットマップ又は時間情報など識別できるものであれば種別は問わない。また、本実施例において、「スロット」が、VOL(例えば、シンプロビジョニングに従うVOLであるTP−VOL)における領域であるのに対し、「データ領域」は、スロットに割り当てられる領域(例えば、プール内の領域であるプール領域)である。
(S3)ストレージ装置11のストレージコントローラ1_22A内、キャッシュ領域203Aにおいて、データの割当先アドレス1100に対応するアドレス1100Aにデータを格納する。
(S4)ストレージコントローラ1_22Aは、キャッシュ領域203A内に格納されたデータをストレージコントローラ2_22Bに転送する。ストレージコントローラ2_22Bは、割当先アドレス1100に対応するキャッシュ領域203B内のアドレス1100Bに受領したデータを格納して、ストレージコントローラ1_22Aへ応答を返すことでストレージ装置11内での二重化を完了する。
(S5)二重化を完了した後にストレージ装置11からホスト計算機30に対してネットワーク31を介してライト完了を応答する。なお、この時点でホスト計算機30はライトが完了したと認識する。
(S6)ストレージコントローラ1_22Aは、キャッシュ領域203Aからドライブへ書き出すデータを選択し、選択したデータを圧縮してバッファ領域202A内のアドレス1101Aに格納する。なお、この処理はバッファ領域202A内にパリティサイクル分のデータが溜まるまで実施される。
また、後述するように、ストレージコントローラ1_22Aは、選択したデータを圧縮せずにそのままアドレス1101Aに格納してもよいし、圧縮以外の処理(例えば重複排除又は暗号化等)を行って、処理後のデータをアドレス1101Aに格納してもよい。
(S7)ストレージコントローラ1_22Aは、バッファ領域202A内のデータ量がパリティサイクル分に達すると、格納したデータからパリティデータを生成し、バッファ領域202A内のアドレス1104Aへ格納する。
(S8)ストレージコントローラ1_22Aは、バッファ領域202A内の圧縮データ及びパリティデータをドライブ29へ書き出す(デステージ処理)。
(S9)ストレージコントローラ1_22Aは、デステージ処理が完了すると、(S2)において確保したスロットの排他を解放する。
以上が、ライト処理の一例である。
<ストレージ装置>
図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を有する。
キャッシュ領域203は、ホスト計算機30からのライトデータを一時的に格納する非圧縮データ格納領域204、及び、圧縮したデータを格納する圧縮データ格納領域205を有する。テーブル管理領域206は、VOLに関する情報を保持するVOL管理テーブル207、プールに関する情報を保持するプール構成管理テーブル208、RAID構成に関する情報を保持するRAID構成管理テーブル209、プール割当てに関する情報を保持するプール割当管理テーブル210、ドライブ割当てに関する情報を保持するドライブ割当管理テーブル211、及び、メモリ割当てに関する情報を保持するメモリ割当管理テーブル212を格納する。
ドライブ29は、不揮発性のデータ記憶媒体を有する装置であり、例えばSSD(Solid State Drive)でもHDD(Hard Disk Drive)でもよい。複数のドライブ29が、複数のRAIDグループ(パリティグループとも呼ばれる)を構成してよい。各RAIDグループは、1以上のドライブ29から構成される。
FE_I/F23、BE_I/F27及びストレージI/F28が、インターフェース部の一例である。メモリ25が、メモリ部の一例である。プロセッサ24が、プロセッサ部の一例である。
<VOL管理テーブル>
図3は、本発明の実施例1のストレージ装置11が保持するVOL管理テーブル207の構成例を示す説明図である。
VOL管理テーブル207は、VOL毎にエントリを有する。各エントリは、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に関連付けられているプールのIDである。
プロセッサ24は、デステージ処理において、VOL管理テーブル207のVOL属性42を参照することで、データ圧縮を必要とするVOLか否かを判定できる。例えば、VOL属性42“圧縮有効”ならばデータ圧縮処理を行う。
<構成管理テーブル>
図4は、本発明の実施例1のストレージ装置11が保持するプール構成管理テーブル208の構成例を示す説明図である。
プールは、1以上のRAIDグループを基に構成された論理記憶領域である。プール構成管理テーブル208は、プール毎にエントリを有する。各エントリは、プールID51、RAIDグループID52、プール容量53及びプール使用容量54といった情報を格納する。以下、1つのプール(図4の説明において「対象プール」)を例に取る。
プールID51は、対象プールのIDである。RAIDグループID52は、対象プールの基になっている1以上のRAIDグループの各々のIDである。プール容量53は、対象プールの容量を示す。プール使用容量54は、対象プールのプール容量のうちVOLに割り当てられている領域の総量を示す。
図5は、本発明の実施例1のストレージ装置11が保持するRAID構成管理テーブル209の構成例を示す説明図である。
RAID構成管理テーブル209は、RAIDグループ毎にエントリを有する。各エントリは、RAIDグループID61、RAIDレベル62、ドライブID63、ドライブ種別64、容量65及び使用容量66といった情報を格納する。以下、1つのRAIDグループ(図5の説明において「対象RAIDグループ」)を例に取る。
RAIDグループID61は、対象RAIDグループのIDである。RAIDレベル62は、対象RAIDグループに適用されるRAIDアルゴリズムの種別を示す。ドライブID63は、対象RAIDグループを構成する1以上のドライブの各々の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アドレスに割り当てられているデータ領域を含むプールのIDである。プールアドレス74は、対象VOLアドレスに割り当てられているデータ領域のアドレス(プールに属するアドレス)である。圧縮前サイズ75は、対象プールアドレスを指定したライト命令に従うデータの圧縮前サイズを示す。圧縮後サイズ76は、対象プールアドレスを指定したライト命令に従うデータの圧縮後のサイズを示す。圧縮率77は、圧縮後サイズ76/圧縮前サイズ75の値である。
図7は、本発明の実施例1のストレージ装置11が保持するドライブ割当管理テーブル211の構成例を示す説明図である。
ドライブ割当管理テーブル211は、プールアドレス毎にエントリを有する。各エントリは、プールID81、プールアドレス82、RAIDグループID83、ドライブID84及びドライブアドレス85といった情報を格納する。以下、1つのプールアドレス(図7の説明において「対象プールアドレス」)を例に取る。
プールID81は、対象プールアドレスが属するプールのIDである。プールアドレス82は、対象プールアドレスである。RAIDグループID83は、対象プールアドレスが示すデータ領域の基になっているRAIDグループのIDである。ドライブID84は、対象プールアドレスが示すデータ領域の基になっているドライブのIDである。ドライブアドレス85は、対象プールアドレスに対応したドライブアドレスである。
<論理記憶階層>
図8は、本発明の実施例1のストレージ装置11によって管理される論理記憶階層の構成例を示す説明図である。
VOL1000は、ホスト計算機30に提供される。また、コピー処理又は重複排除処理によって、VOL1000内の複数のスロットから1つのプールアドレスを指すことがあり、複数のVOLのスロットから一つのプールアドレスを指すこともある。図8の例では、異なる2つのスロット(VOLアドレス)1100及び1103が、同一のプールアドレス1101を指している。なお、VOL1000からプール1001の割当ては、プール割当管理テーブル210を基に管理される。また、プール1001からドライブアドレス空間1003(すなわちRAIDグループ1002を構成する複数のドライブ29が提供する複数のドライブアドレス空間)への割当ては、ドライブ割当管理テーブル211を基に管理される。
<メモリ割当管理テーブル>
図9は、本発明の実施例1のストレージ装置11が保持するメモリ割当管理テーブル212の構成例を示す説明図である。
メモリ割当管理テーブル212は、VOLアドレス(スロットを示すアドレス)毎にエントリを有する。各エントリは、VOL_ID91、VOLアドレス92、バッファ(BF)アドレス93、圧縮後VOLアドレス94、キュー状態95及びBF転送状態96といった情報を格納する。以下、1つのVOLアドレス(図9の説明において「対象VOLアドレス」)を例に取る。
VOL_ID91は、対象VOLアドレスによって識別されるスロットが属するVOLのIDである。VOLアドレス92は、対象VOLアドレスである。BFアドレス93は、対象VOLアドレスを指定してライトされたデータの転送先BFアドレスを示す。圧縮後VOLアドレス94は、対象VOLアドレスを指定してライトされたデータの内、BFへの転送の対象外となったデータの転送先VOLアドレスを示す。キュー状態95は、対象VOLアドレスを指定してライトされたデータのドライブ29へのデータ格納が完了しているかを示す。図9では、キュー状態95の値のうち“Dirty”はドライブ29への格納が出来ていないことを、“Clean”はドライブ29への格納が済んでいることを表す。BF転送状態96は、対象VOLアドレスを指定してライトされたデータが圧縮されてBFへ転送されているか否かを示す。BFへの転送が完了している場合、BF転送状態96の値は“転送済み”となり、転送が行われていない場合は“無し”となる。
図10は、本発明の実施例1のストレージ装置11におけるメモリ割当の構成例を示す図である。
キャッシュ領域203は、VOLに対応した仮想的なアドレス空間である非圧縮データ格納領域204、及び、プールアドレスに対応した圧縮データ格納領域205をストレージコントローラ22へ提供している。ホスト計算機30からストレージコントローラ22へのライト命令によって、VOLアドレスに対応した非圧縮データ格納領域204が割当てられる。ストレージコントローラ22は、ライト命令と非同期でデータを圧縮すると、圧縮したデータを、バッファ領域202、又は、キャッシュ領域203内圧縮データ格納領域205に、プールアドレスに対応させて格納する。
図10の例では、ライトされたデータが格納されているVOL内のスロット1100が、プールアドレスに対応したバッファ領域202上の領域1101を指している。VOLアドレスとプールアドレスの割当ては、プール割当管理テーブル210で管理される。また、バッファ領域202への割当てはメモリ割当管理テーブル212のBFアドレス93で、圧縮データ格納領域への割当てはメモリ割当管理テーブル212の圧縮後VOLアドレス94で、それぞれ管理される。
バッファ領域202では、バッファ領域内のデータ量がパリティサイクルのサイズに達すると、プロセッサ24を介して非圧縮データ格納領域204とは対応しないパリティ1104が生成される。
以下、本実施例で行われる処理の例を説明する。
<リード処理>
図11は、本発明の実施例1のストレージ装置11が実行するリード処理を示すフローチャートである。
リード処理は、ホスト計算機30からネットワーク31を介してストレージ装置11がリード命令を受けた場合に開始する。リード命令では、例えば、仮想ID(例えば、仮想VOL_ID)、アドレス、及びデータサイズが指定される。
S1201で、プロセッサ24は、リード命令から特定されるスロットの排他を確保する。なお、スロット排他確保時に他の処理がスロットの排他を確保している場合、プロセッサ24は、一定の時間待ってから、S1201を行う。
S1202で、プロセッサ24は、リードデータがキャッシュ領域203に存在するか否かを判定する。S1202の判定結果が真の場合、S1204に進む。S1202の判定結果が偽の場合、プロセッサ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は、S1205で、確保していたスロット排他を解除する。
<ライト処理>
図12は、本発明の実施例1のストレージ装置11が実行するライト処理を示すフローチャートである。
ライト処理は、ホスト計算機30からストレージ装置11がライト命令を受信した場合に開始する。なお、以下の説明では、例えば、ストレージコントローラ2_22Aのプロセッサ24をプロセッサ24Aと記載するなど、ストレージコントローラ2_22A及びストレージコントローラ2_22Bに属するものをそれぞれ参照符号に付した「A」及び「B」によって区別する。
ホスト計算機30からのライト命令には、割当て先アドレスが付随している。ストレージ装置11は、S1301において割当て先アドレスが示すスロットの排他を確保する。なお、スロット排他確保と同時に、プロセッサ24Aは、データのライト先とするキャッシュ領域203Aのスロット領域を割当てる。
S1302で、プロセッサ24Aは、ホスト計算機30に対してライト処理の準備ができたことを示す「Ready」を応答する。プロセッサ24Aは、「Ready」を受け取ったホスト計算機30から、ライトデータを受ける。その後、S1303でプロセッサ24はライト命令と同期して圧縮処理を実行する必要があるかを判定する。なお、プロセッサ24Aの負荷、ストレージ装置11に対するライト量、及びライトデータのデータ長から、ストレージシステム100においてレスポンス性能を優先するケース1及びスループット性能を優先するケース2のいずれかへ分岐する。例えば、ストレージ装置11は、以下のような条件を保持し、プロセッサ24Aは、ライト命令を受信すると、保持している条件に基づいてレスポンス性能及びスループット性能のいずれを優先するかを判定してもよい。
<ケース1>レスポンス優先
レスポンス性能を優先する条件として以下のものがある。例えば、以下の複数の条件のうちいずれか一つのみ、又は、複数の組合せに基づいて、レスポンス性能を優先するか否かが判定されてもよい。後述するスループット性能に関する条件についても同様である。
(1)ストレージコントローラ22の(すなわちプロセッサ24の)負荷が所定の基準より低い
(2)ライトデータを圧縮した場合の圧縮率が所定の基準より低くなることが予想される
(3)書き込み先のボリュームに圧縮データを格納できない
ここで、上記(1)は、所定の基準近傍で判定結果が頻繁に切り替わると負荷の変動が不安定になるため、これを防ぐために多段階で基準を変動させてもよい。また、上記(1)は、例えばストレージ装置11に対するIO命令の量に基づいて判定されてもよい。例えば、単位時間当たりのIO命令の回数、又は、IO命令によって書き込み/読み出しが行われるデータ量が所定の基準より少ない場合に、負荷が低いと判定されてもよい。
上記(2)は、例えば、ライトデータのサイズが所定の基準より小さい場合に、ライトデータの圧縮率が低い、すなわち圧縮によるデータ削減が見込めないと判定されてもよい。上記(3)は、例えば、ライトデータの書き込み先のVOLに対応するVOL管理テーブル207のVOL属性42が“圧縮有効”でない場合に、書き込み先のボリュームに圧縮データを格納できないと判定されてもよい。
例えばプロセッサ24Aが低負荷であり、レスポンス性能を優先する場合、S1303の判定において偽となる。この場合、プロセッサ24Aは、S1306において受け取ったライトデータを割当てたキャッシュ領域203Aへ格納する。S1307において、ストレージコントローラ1_22Aからストレージコントローラ2_22Bに対してキャッシュ領域203Aに格納したライトデータを転送し、キャッシュ領域203Bに格納することで二重化を行う。
S1308において、プロセッサ24Aは、メモリ割当管理テーブル212を更新する。なお、本ケースにおいてライトデータは未だ圧縮されていない。このため、データのライト先として割当てられたスロットのVOLアドレスに対応するBFアドレス93及び圧縮後VOLアドレス94の値は無く、プロセッサ24Aは、キュー状態95を“Dirty”に更新する。
次に、S1309において、ストレージ装置11から、ネットワーク31を介してホスト計算機30に対してライト処理が完了したとして完了応答を返却する。完了応答を返却すると、S1310においてストレージ装置11は確保していたスロットの排他を解放してライト処理を終了する。
<ケース2>スループット優先
スループット性能を優先する条件として以下のものがある。
(4)ストレージコントローラ22の(すなわちプロセッサ24の)負荷が所定の基準より高い
(5)ライトデータを圧縮した場合の圧縮率が所定の基準より高くなることが予想される
ここで、上記(4)は、上記(1)と同様に、例えばストレージ装置11に対するIO命令の量に基づいて判定することができる。例えば、単位時間当たりのIO命令の回数等が所定の基準より多い場合に、負荷が高いと判定されてもよい。
上記(5)は、例えば、ライトデータのサイズが所定の基準より大きい場合に、ライトデータの圧縮率が高い、すなわち圧縮によるデータ削減が見込まれると判定されてもよい。
例えばプロセッサ24が高負荷であり、スループット性能を優先する場合、S1303の判定において真となる。この場合、プロセッサ24Aは、S1304において受け取ったライトデータをバッファ領域202Aへ転送する。次に、S1305で、プロセッサ24Aは、バッファ内のデータを圧縮する。
なお、S1304及びS1305において、ライトデータのバッファ領域202Aへの格納時に圧縮が行われても良い(すなわち、バッファ領域202Aへの格納前に圧縮が行われ、圧縮されたデータがバッファ領域202Aへ格納されても良い)し、バッファ領域202Aへの格納後にバッファ領域202A内で圧縮が行われても良い。いずれの場合も、最終的には、圧縮後のデータがバッファ領域202Aに格納される。
また、この圧縮は、バッファ領域202A以外の記憶領域(例えばプロセッサ24A内のメモリ)において行われてもよい。
ここで、圧縮は、ライトデータに対して行われる所定の処理の一例である。プロセッサ24は、圧縮以外の処理、例えば、重複排除、暗号化又は冗長化等を行い、処理後のデータをバッファ領域202Aに格納してもよい。後述する図14のS1411についても同様である。
次に、S1306において、プロセッサ24Aは、バッファ領域202A内の圧縮データを、割当てたキャッシュ領域203Aへ格納する。S1307において、ストレージコントローラ1_22Aからストレージコントローラ2_22Bに対してキャッシュ領域203Aに格納したライトデータを転送し、キャッシュ領域203Bに格納することで圧縮データの二重化を行う。
S1308において、プロセッサ24Aは、メモリ割当管理テーブル212を更新する。なお、本ケースにおいてライトデータは圧縮されており、圧縮データに対してアドレスが割当てられる。このため、データのライト先として割当てられたスロットのVOLアドレスに対応する圧縮後VOLアドレス94が更新される。また、BFアドレス93の値は無く、プロセッサ24Aは、キュー状態95を“Dirty”に更新する。
次に、S1309において、ストレージ装置11から、ネットワーク31を介してホスト計算機30に対してライト処理が完了したとして完了応答を返却する。完了応答を返却すると、S1310においてストレージ装置11は確保していたスロットの排他を解放してライト処理を終了する。
<デステージ処理>
図13は、本発明の実施例1のストレージ装置11が実行するデステージ処理を示すフローチャートである。
デステージ処理は、ホスト計算機30からストレージ装置11へのライト命令が完了した後、非同期的に行われる。なお、デステージは、ライト命令が完了したことを契機として開始されても良いし、周期的に起動しても良いし、キャッシュ領域203の消費量などからライト量を判定して選択しても良い。
デステージ処理が開始されると、ストレージ装置11は、S1401において、デステージ処理の対象領域がキャッシュ領域上の圧縮データ格納領域205に属しているか否かを判定する。判定が真の場合(すなわち対象領域が圧縮データ格納領域205に属している場合)はケース2−1、判定が偽の場合(すなわち対象領域が非圧縮データ格納領域204に属している場合)はケース1−1の処理が行われる。
<ケース2−1>圧縮済データのデステージ
S1401の判定が真の場合、キャッシュ領域203内の圧縮データ格納領域205に対してデステージ処理(S1402〜S1406)が行われる。S1402では、プロセッサ24Aは、圧縮データ格納領域205からデステージ処理を実行するデータを選択する。通常、パリティサイクル分のデータが並ぶデータ列(ストライプ列)が選択され、それに対してデステージが行われる。
S1403で、プロセッサ24は、デステージするデータが属するスロットの排他を確保する。排他を確保した後、プロセッサ24Aは、S1404で対象のデータ列からパリティデータを生成する。S1405で、プロセッサ24Aは、対象のデータ列及び生成したパリティデータをドライブに書き出す。S1406において、プロセッサ24Aは、メモリ割当管理テーブル212を更新する。なお、本ケースにおいて、キュー状態95が“Clean”に更新される。S1407で、プロセッサ24Aは、デステージされた範囲のスロットの排他を解放し、処理を終了する。
<ケース1−1>圧縮及びデステージ一括処理(デステージ中排他保持)
S1401の判定が偽の場合、キャッシュ領域203内の非圧縮データ格納領域204に対してデステージ処理(S1408〜S1415)が行われる。S1408では、プロセッサ24Aは、非圧縮データ格納領域204に格納されているデータのうち、キュー状態95が“Dirty”であるスロットに属するデータから、デステージ処理を実行するデータを選択する。通常、パリティサイクル分のデータが並ぶデータ列(ストライプ列)が選択され、それに対してデステージが行われる。
S1409で、プロセッサ24は、デステージするデータが属するスロットの排他を確保する。なお、図13に示すデステージ処理が、図12に示したライト処理の終了を契機として(すなわちライト処理の直後に)行われる場合には、S1310及びS1409を省略してもよい。
排他を確保した後、プロセッサ24Aは、S1410で対象のデータを読み出して、バッファ領域202へ転送する。なお転送の際、プロセッサ24は、メモリ割当管理テーブル212のBFアドレス93及び圧縮後VOLアドレス94を割当てる。また、プロセッサ24Aは、バッファ領域202への転送完了後、BF転送状態96を“転送済”に更新する。なお、圧縮後VOLアドレス94の割当ては、パリティサイクル分を割当てることが明らかなため、あらかじめパリティサイクル分の領域を割当てることで、マッピング情報の更新回数を削減できる。
S1411で、プロセッサ24Aは、転送したデータを圧縮する。なお、圧縮処理はバッファ転送時に行っても良い(すなわち、バッファ領域202への格納前に圧縮が行われ、圧縮されたデータがバッファ領域202へ格納されても良い)し、転送後バッファ内で行っても良い。
S1412において、プロセッサ24Aは、バッファ内の圧縮データの量を判定する。圧縮データ量がパリティサイクル分よりも小さい場合、プロセッサ24は、S1408に戻ってデステージするデータを追加で選択する。パリティサイクル分のデータがバッファ領域202内に溜まった場合、S1412の判定を真としてS1413に進む。なお、圧縮データサイズは可変長であるため、バッファ領域202内のデータが必ずしもパリティサイクル分揃うとは限らないことから、パリティサイクルを超える前にS1413へ処理を進めることもありえる。
S1413において、プロセッサ24Aは、バッファ領域202内の圧縮データからパリティデータを生成する。S1414で、プロセッサ24Aは、対象のデータ列及び生成したパリティデータを、RAIDグループを構成するドライブ29に書き出す。S1415において、プロセッサ24Aは、メモリ割当管理テーブル212の更新を確定する。なお、本ケースにおいて、キュー状態95が“Clean”に更新される。S1407で、プロセッサ24Aは、デステージされた範囲のスロットの排他を解放し、処理を終了する。
上記の例では、S1412において、バッファ内の圧縮データの量がパリティサイクルのデータ量に達したか否かが判定されている。しかし、ドライブ29がRAIDを構成するか否かにかかわらず、所定の量のデータをまとめてドライブ29に格納する場合には、プロセッサ24Aは、S1412においてバッファ内の圧縮データの量が当該所定の量に達したか否かを判定する。本実施例のS1412におけるパリティサイクルのデータ量は、上記の所定のデータ量の一例である。
なお、プロセッサ24Aは、S1401の判定が偽の場合であっても、S1408〜S1415ではなく、S1402〜S1406を実行する場合がある。例えば、ライトデータの書き込み先のVOL属性42が圧縮有効でないために、図12のS1303の判定が偽であった場合、非圧縮データがキャッシュ領域203Aに格納されている。この場合、S1401の判定は偽となるが、データの圧縮は行わないため、S1402〜S1406が実行される。
上記の例では、スループット性能が優先される場合に、ライト処理時には圧縮後のデータがキャッシュ領域203で二重化された時点でホスト計算機30に応答が返され、デステージ処理ではデータの圧縮が不要となる。これによって、レスポンス性能は低下するが、デステージ処理の際のキャッシュアクセスが削減されるため、スループット性能が向上する。このような処理は一例であり、スループット性能が優先される場合に、ライト処理の際にさらに多くの処理が行われてもよい。
例えば、プロセッサ24Aは、S1303(図12)の判定が真である場合に、S1304〜S1308を実行し、続いて、S1412、S1404〜S1406(図13)と同様の処理を実行し、その後にS1309、S1310を実行してもよい。すなわち、ライト命令に対して圧縮処理及びデステージまで一括して行われるため、レスポンス性能はさらに低下するが、スループット性能は向上する。
この場合も、S1303(図12)の判定が偽であるときの処理は、上記の図12及び図13を示して説明した通りである。すなわち、プロセッサ24Aは、S1304〜S1305を実行せずに、S1306〜S1310を実行する。さらに、プロセッサ24Aは、S1408〜S1415及びS1407を実行する。
上記の例によれば、デステージが開始されるとスロットの排他が確保され(S1409)、その後、データのドライブ29への転送が終了して(S1414)マッピング情報が更新される(S1415)まで、スロットの排他が確保される(S1407)。このように長時間排他を確保することによって、必要なIO命令が実行できないといったトラブルが発生する場合がある。このようなトラブルを回避するために、ケース1−1における排他手順を変更した実施例として、以下のケース1−2を示す。
図14は、本発明の実施例1のストレージ装置11が実行する、排他手順を変更したデステージ処理を示すフローチャートである。
<ケース1−2>圧縮及びデステージ一括処理(デステージ中排他解放)
S1501において、ストレージ装置11は、図13のS1401と同様の判定を行う。S1501の判定が真の場合、キャッシュ領域203内の圧縮データ格納領域205に対してデステージ処理(S1502〜S1507)が行われる。これらの処理は、図13のS1402〜S1407と同様であるため、説明を省略する。
S1501の判定が偽の場合、キャッシュ領域203内の非圧縮データ格納領域204に対してデステージ処理が行われる(S1508〜S1519)。S1508では、プロセッサ24は、非圧縮データ格納領域204に格納されているデータのうち、キュー状態95が“Dirty”であるスロットに属するデータからデステージ処理を実行するデータを選択する。通常、パリティサイクル分のデータが並ぶデータ列(ストライプ列)が選択され、それに対してデステージが行われる。
先述のケース1−1ではデステージ処理が完了するまでデステージ対象となるスロット範囲が保持されている。しかし、圧縮後のデータサイズがパリティサイクル分に達する広範囲の排他を保持し続けると、ホスト計算機30からのライト命令が排他範囲に生じることによってデステージ待ちを生じる可能性が高くなる。そこで、プロセッサ24は、S1509でデステージするデータが属するスロットの排他を確保した後、S1510のバッファ転送及びS1511の圧縮処理を行う。そして、プロセッサ24は、圧縮処理が完了した後のS1512でメモリ割当管理テーブル212のBF転送状態96を“転送済”に更新する。更新が完了すると、プロセッサ24は、S1513においてスロット排他を解放する。
以後、プロセッサ24は、S1514のドライブ転送可否の判定、S1515のパリティ生成、S1516のドライブ転送を、それぞれケース1−1のS1412、S1413及びS1414と同様に行う。
S1517において、プロセッサ24は、デステージ範囲のスロット排他を再度確保し、S1518でメモリ割当管理テーブル212のキュー状態95を“Clean”に更新する。
なお、S1517までの間に、上記のデステージ範囲のスロットに対してホスト計算機30からの更新ライトが発生した場合、プロセッサ24は、S1308においてメモリ割当管理テーブル212のBF転送状態96を“無し”に更新する。この場合、S1518でプロセッサ24がキュー状態95を更新する際にBF転送状態96が切り替わったことを判定することによって、更新ライトが発生したことに気づくことが出来る。
なお、更新ライトの発生に気づいた(すなわちS1512で“転送済”に更新したBF転送状態96がS1517の時点で“無し”となっていた)場合、プロセッサ24は、処理をやり直すか又は対象箇所のマッピング情報更新をスキップする。具体的には、プロセッサ24は、S1518に進まずにS1508に戻り、更新ライトが行われたスロットを対象とするデステージ処理をやり直してもよい。あるいは、プロセッサは、そのままS1508に進み、更新ライトが行われたスロットのキュー状態95を“Clean”に更新せずに、S1519に進んでもよい。その場合、当該スロットは次回以降のデステージ処理の対象となる。
最後にS1519で、プロセッサ24は、デステージされた範囲のスロットの排他を解放し、処理を終了する。
以上の本発明の実施例によれば、キャッシュ領域に格納されたデータをデステージする際に、圧縮処理から記憶デバイス(ドライブ)への格納までを一括で行うことによって、圧縮データの二重化処理が省略される。キャッシュ領域における圧縮データの二重化が不要になることで、キャッシュアクセス量を削減し、データ書き込みの最大速度が向上できる。
また、記憶デバイスへの圧縮データの格納が完了するまでキャッシュメモリ上に圧縮前のデータを二重化して保持することによって、圧縮処理及び記憶デバイスへの格納などの処理中に装置障害が発生してもデータを保護することができる。ストレージ装置が圧縮以外の処理(例えば重複排除、暗号化又は冗長化等)を行う場合にも、同様の効果が得られる。
また、デステージの際に圧縮処理を行う場合、例えばパリティサイクル等の所定の大きさの領域を予め割り当てることができるため、マッピング情報の更新回数を削減することができる。
また、本発明の実施例によれば、ストレージ装置は、所定の条件に基づいてレスポンス性能及びスループット性能のいずれを優先するかを判定する。そして、レスポンス性能を優先する場合にはキャッシュメモリ上に圧縮前のデータを二重化して保持したところでホストに応答する。これによって、レスポンス性能が向上する。一方、スループット性能を優先する場合には圧縮を行い、圧縮後のデータを二重化して保持したところでホストに応答する。これによってレスポンス性能は低下するが、デステージの際のキャッシュアクセス量が削減されるため、スループット性能は向上する。
例えば、IO命令の量、予想される圧縮率又は書き込み先のボリュームの属性などに基づいてレスポンス性能又はスループット性能のいずれを優先するかを判定することによって、状況に応じて最適な性能を実現することができる。
また、キャッシュ領域に格納された圧縮前のデータをデステージする場合に、当該データをキャッシュ領域から読み出すときから記憶デバイスへの圧縮後のデータの格納が完了し、キュー状態を“Clean”に変更するまで(S1409〜S1415、S1407)、当該データの領域の排他を確保してもよい。これによって、まだデステージされていないデータがデステージされたと誤って判定することが防止される。
あるいは、当該データを読み出して、圧縮を行い、バッファ領域に転送した時点で排他を一旦解除してもよい(S1513)。これによって、排他が確保される時間が短縮し、必要なIOが実行できないというトラブルが軽減される。この場合、排他を一旦解除(S1513)してから当該データの記憶デバイスへの転送が終了(S1516)するまでの間に新たな書き込みが行われると、そのことが記録される(すなわちBF転送状態が“転送済み”から“なし”に更新される)。これによって、まだデステージされていないデータがデステージされたと誤って判定することが防止される。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明のより良い理解のために詳細に説明したのであり、必ずしも説明の全ての構成を備えるものに限定されものではない。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によってハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによってソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
また、制御線及び情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線及び情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
100 ストレージシステム
11 ストレージ装置
22、22A、22B ストレージコントローラ
202 バッファ領域
203、203A、203B キャッシュ領域
204 非圧縮データ格納領域
205 圧縮データ格納領域
29 ドライブ
30 ホスト計算機
31 ネットワーク

Claims (6)

  1. 第1のストレージ制御部と、第2のストレージ制御部と、少なくとも前記第1のストレージ制御部に接続され、不揮発性の記憶媒体を有するストレージドライブと、を有するストレージシステムであって、
    前記第1のストレージ制御部は、それぞれ、データを格納する第1のキャッシュ領域と、データを格納する第1のバッファ領域と、を有しており、
    前記第2のストレージ制御部は、それぞれ、データを格納する第2のキャッシュ領域と、データを格納する第2のバッファ領域と、を有しており、
    前記第1のストレージ制御部は、前記第1のキャッシュ領域に格納されたデータを前記第2のキャッシュ領域にも格納して二重化を行うようになっており、
    前記第1のストレージ制御部は、ホスト計算機からデータの書き込み命令を受信すると、前記書き込み命令の対象のデータを、前記第1のストレージ制御部の前記第1のキャッシュ領域に格納するとともに、前記第1のキャッシュ領域に格納したデータを前記第2のストレージ制御部の前記第2のキャッシュ領域に格納して二重化を行い、前記二重化が完了したら、前記ホスト計算機に、前記データの書き込みの終了を示す応答を送信し、
    前記第1のストレージ制御部は、前記書き込み命令の対象のデータに所定の処理を行い、前記所定の処理を行った前記書き込み命令の対象のデータを前記ストレージドライブに送信して格納させ、
    前記第1のストレージ制御部は、
    前記ストレージシステムにおいてレスポンス性能及びスループット性能のいずれが優先されるかを判定するための所定の条件を保持して、前記所定の条件に基づいて、レスポンス性能及びスループット性能のいずれが優先されるかを判定し、
    レスポンス性能が優先される場合、前記データを前記二重化により前記第1及び第2のキャッシュ領域に格納して前記データの書き込みの終了を示す応答を送信してから、前記所定の処理を行い、
    スループット性能が優先される場合、前記所定の処理を行い、前記所定の処理を行ったデータを前記二重化により前記第1及び第2のキャッシュ領域に格納することを特徴とするストレージシステム。
  2. 請求項1に記載のストレージシステムであって、
    前記第1のストレージ制御部は、前記第1のストレージ制御部の処理の負荷が所定の基準より低い場合に、レスポンス性能が優先されると判定することを特徴とするストレージシステム。
  3. 請求項1に記載のストレージシステムであって、
    前記所定の処理は、前記データの圧縮であり、
    前記第1のストレージ制御部は、前記データの圧縮率が所定の基準より低くなることが予測される場合、又は、前記データの書き込み対象として指定されたボリュームに圧縮データを格納することができない場合に、レスポンス性能が優先されると判定することを特徴とするストレージシステム。
  4. 請求項1に記載のストレージシステムであって、
    前記第1のストレージ制御部は、
    前記データが書き込まれるボリュームの管理単位領域ごとに、当該管理単位領域に書き込まれたデータが前記ストレージドライブに格納されたかを示すキュー状態を保持し、
    前記ホスト計算機から前記データの書き込み命令を受信すると、前記データの書き込み対象である前記管理単位領域の排他を確保した後に、前記第1のキャッシュ領域に前記データを格納し、
    前記ホスト計算機に、前記データの書き込みの終了を示す応答を送信した後に、前記データの書き込み対象である前記管理単位領域の排他を解除し、
    前記管理単位領域のうち、前記キュー状態が、書き込まれたデータが前記ストレージドライブに格納されていないことを示す前記管理単位領域の排他を確保した後に、当該管理単位領域に書き込まれたデータを前記第1のキャッシュ領域から読み出して、前記所定の処理後のデータを前記第1のバッファ領域に格納し、
    前記第1のバッファ領域から読み出した前記所定の処理後のデータの前記ストレージドライブへの格納が終了すると、前記キュー状態を、書き込まれたデータが前記ストレージドライブに格納されたことを示す値に更新し、その後、当該管理単位領域の排他を解除することを特徴とするストレージシステム。
  5. 請求項1に記載のストレージシステムであって、
    前記第1のストレージ制御部は、
    前記データが書き込まれるボリュームの管理単位領域ごとに、当該管理単位領域に書き込まれたデータが前記ストレージドライブに格納されたかを示すキュー状態、及び、当該管理単位領域に書き込まれたデータが前記第1のバッファ領域に格納されたかを示すバッファ転送状態を保持し、
    前記ホスト計算機から前記データの書き込み命令を受信すると、前記データの書き込み対象である前記管理単位領域の排他を確保した後に、前記第1のキャッシュ領域に前記データを格納し、
    前記ホスト計算機に、前記データの書き込みの終了を示す応答を送信した後に、前記データの書き込み対象である前記管理単位領域の排他を解除し、
    前記管理単位領域のうち、前記キュー状態が、書き込まれたデータが前記ストレージドライブに格納されていないことを示す前記管理単位領域の排他を確保した後に、当該管理単位領域に書き込まれたデータを前記第1のキャッシュ領域から読み出して、前記所定の処理後のデータを前記第1のバッファ領域に格納し、
    当該管理単位領域の前記バッファ転送状態を、格納されたデータが前記第1のバッファ領域に格納されたことを示す値に更新した後に、当該管理単位領域の排他を解除し、
    当該管理単位領域の排他が解除されている間に、当該管理単位領域に対するデータの書き込みを行った場合、当該管理単位領域の前記バッファ転送状態を、書き込まれたデータが前記第1のバッファ領域に格納されていないことを示す値に更新し、
    前記第1のバッファ領域から読み出した前記所定の処理後のデータが前記ストレージドライブに格納された後に、当該管理単位領域の排他を確保し、
    当該管理単位領域の前記バッファ転送状態が、書き込まれたデータが前記第1のバッファ領域に格納されていることを示す場合、前記キュー状態を、書き込まれたデータが前記ストレージドライブに格納されたことを示す値に更新した後に、当該管理単位領域の排他を解除することを特徴とするストレージシステム。
  6. 請求項1に記載のストレージシステムであって、
    前記第1のストレージ制御部は、データを格納する第3のキャッシュ領域をさらに有し、
    前記第2のストレージ制御部は、データを格納する第4のキャッシュ領域をさらに有し、
    前記第1のストレージ制御部は、前記所定の条件に基づいて、スループット性能が優先されると判定した場合、前記データに前記所定の処理を行い、前記所定の処理後のデータを前記第3のキャッシュ領域に格納して、前記所定の処理後のデータを前記第2のストレージ制御部に送信し、
    前記第2のストレージ制御部は、前記第1のストレージ制御部から受信した前記所定の処理後のデータを前記第4のキャッシュ領域に格納して二重化を行い、
    前記第1のストレージ制御部は、
    前記第2のストレージ制御部による前記第4のキャッシュ領域への前記所定の処理後のデータの格納が終了すると、前記ホスト計算機に、前記データの書き込みの終了を示す応答を送信し、
    前記第3のキャッシュ領域に格納したデータを読み出して前記ストレージドライブに送信することを特徴とするストレージシステム。
JP2018060662A 2018-03-27 2018-03-27 ストレージシステム Active JP6802209B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2018060662A JP6802209B2 (ja) 2018-03-27 2018-03-27 ストレージシステム
US16/117,330 US10656849B2 (en) 2018-03-27 2018-08-30 Storage system and control method thereof
US16/860,237 US11294578B2 (en) 2018-03-27 2020-04-28 Storage system and control method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018060662A JP6802209B2 (ja) 2018-03-27 2018-03-27 ストレージシステム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2020185556A Division JP7065928B2 (ja) 2020-11-06 2020-11-06 ストレージシステム及びその制御方法

Publications (2)

Publication Number Publication Date
JP2019174994A JP2019174994A (ja) 2019-10-10
JP6802209B2 true JP6802209B2 (ja) 2020-12-16

Family

ID=68056195

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018060662A Active JP6802209B2 (ja) 2018-03-27 2018-03-27 ストレージシステム

Country Status (2)

Country Link
US (2) US10656849B2 (ja)
JP (1) JP6802209B2 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6802209B2 (ja) * 2018-03-27 2020-12-16 株式会社日立製作所 ストレージシステム
US20200241781A1 (en) * 2019-01-29 2020-07-30 Dell Products L.P. Method and system for inline deduplication using erasure coding
US11442642B2 (en) 2019-01-29 2022-09-13 Dell Products L.P. Method and system for inline deduplication using erasure coding to minimize read and write operations
US11328071B2 (en) 2019-07-31 2022-05-10 Dell Products L.P. Method and system for identifying actor of a fraudulent action during legal hold and litigation
US11372730B2 (en) 2019-07-31 2022-06-28 Dell Products L.P. Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool
US11609820B2 (en) 2019-07-31 2023-03-21 Dell Products L.P. Method and system for redundant distribution and reconstruction of storage metadata
US11775193B2 (en) 2019-08-01 2023-10-03 Dell Products L.P. System and method for indirect data classification in a storage system operations
US11645174B2 (en) * 2019-10-28 2023-05-09 Dell Products L.P. Recovery flow with reduced address lock contention in a content addressable storage system
JP7034132B2 (ja) * 2019-12-20 2022-03-11 株式会社日立製作所 ストレージシステムおよびストレージシステムのデータ圧縮方法
JP7028902B2 (ja) 2020-02-07 2022-03-02 株式会社日立製作所 ストレージシステム及び入出力制御方法
JP7242928B2 (ja) * 2020-02-07 2023-03-20 株式会社日立製作所 ストレージシステム及び入出力制御方法
US11281535B2 (en) 2020-03-06 2022-03-22 Dell Products L.P. Method and system for performing a checkpoint zone operation for a spare persistent storage
US11416357B2 (en) 2020-03-06 2022-08-16 Dell Products L.P. Method and system for managing a spare fault domain in a multi-fault domain data cluster
US11301327B2 (en) 2020-03-06 2022-04-12 Dell Products L.P. Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster
US11418326B2 (en) 2020-05-21 2022-08-16 Dell Products L.P. Method and system for performing secure data transactions in a data cluster

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4413518B2 (ja) * 2003-04-16 2010-02-10 株式会社日立製作所 記憶デバイス制御装置、及び記憶デバイス制御装置の制御方法
JP4412981B2 (ja) 2003-11-26 2010-02-10 株式会社日立製作所 ストレージシステム及同システムにおけるデータキャッシング方法
JP4835249B2 (ja) * 2006-04-26 2011-12-14 株式会社日立製作所 ストレージシステム、リモートコピー、その管理方法
JP4990066B2 (ja) * 2007-08-21 2012-08-01 株式会社日立製作所 論理ボリュームのペアを利用したデータ保存の方式を変更する機能を備えたストレージシステム
US8131927B2 (en) 2007-11-30 2012-03-06 Hitachi, Ltd. Fast accessible compressed thin provisioning volume
JP5369807B2 (ja) 2009-03-24 2013-12-18 日本電気株式会社 ストレージ装置
JP4936088B2 (ja) * 2010-03-15 2012-05-23 日本電気株式会社 ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法
WO2013175529A1 (en) * 2012-05-23 2013-11-28 Hitachi, Ltd. Storage system and storage control method for using storage area based on secondary storage as cache area
WO2014147657A1 (en) 2013-03-18 2014-09-25 Hitachi, Ltd. Compound storage system and storage control method
WO2017056219A1 (ja) * 2015-09-30 2017-04-06 株式会社日立製作所 ストレージ装置およびストレージ装置の制御方法
JP6802209B2 (ja) * 2018-03-27 2020-12-16 株式会社日立製作所 ストレージシステム

Also Published As

Publication number Publication date
US10656849B2 (en) 2020-05-19
JP2019174994A (ja) 2019-10-10
US20200257457A1 (en) 2020-08-13
US11294578B2 (en) 2022-04-05
US20190303022A1 (en) 2019-10-03

Similar Documents

Publication Publication Date Title
JP6802209B2 (ja) ストレージシステム
JP5792313B2 (ja) ストレージシステム
US7574577B2 (en) Storage system, storage extent release method and storage apparatus
US8924659B2 (en) Performance improvement in flash memory accesses
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
US20120254513A1 (en) Storage system and data control method therefor
EP2413245A1 (en) Storage system provided with a plurality of flash packages
WO2015162681A1 (ja) ストレージシステムおよび記憶デバイスの制御方法
US10866743B2 (en) Storage control device using index indicating order of additional writing of data, storage control method using index indicating order of additional writing of data, and recording medium recording program using index indicating order of additional writing of data
US11321229B2 (en) System controller and system garbage collection method
CN110968262B (zh) 存储装置和数据存储方法
JP5826949B2 (ja) ストレージ装置及びデータ管理方法
JP5944502B2 (ja) 計算機システム及び制御方法
US20190243758A1 (en) Storage control device and storage control method
US20210278989A1 (en) Storage system and control method thereof
EP3798852B1 (en) System controller and system garbage recovery method
JP7065928B2 (ja) ストレージシステム及びその制御方法
CN116483263A (zh) 一种存储系统的存储设备、存储系统
US8850087B2 (en) Storage device and method for controlling the same
JP5597266B2 (ja) ストレージシステム
JP6643524B2 (ja) ストレージシステム及び記憶制御方法
JPWO2018235149A1 (ja) ストレージ装置及び記憶領域管理方法
WO2018167950A1 (ja) ストレージシステム及び複製制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190205

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200623

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200818

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201106

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201126

R150 Certificate of patent or registration of utility model

Ref document number: 6802209

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150