JPWO2018150561A1 - ストレージシステム及び記憶制御方法 - Google Patents

ストレージシステム及び記憶制御方法 Download PDF

Info

Publication number
JPWO2018150561A1
JPWO2018150561A1 JP2019500143A JP2019500143A JPWO2018150561A1 JP WO2018150561 A1 JPWO2018150561 A1 JP WO2018150561A1 JP 2019500143 A JP2019500143 A JP 2019500143A JP 2019500143 A JP2019500143 A JP 2019500143A JP WO2018150561 A1 JPWO2018150561 A1 JP WO2018150561A1
Authority
JP
Japan
Prior art keywords
nonvolatile memory
capacity
memory devices
user
area
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.)
Granted
Application number
JP2019500143A
Other languages
English (en)
Other versions
JP6681512B2 (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
Publication of JPWO2018150561A1 publication Critical patent/JPWO2018150561A1/ja
Application granted granted Critical
Publication of JP6681512B2 publication Critical patent/JP6681512B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • 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/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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
    • 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/08Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers from or to individual record carriers, e.g. punched card, memory card, integrated circuit [IC] card or smart card
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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/1032Reliability improvement, data loss prevention, degraded operation etc
    • G06F2212/1036Life time enhancement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • 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/7202Allocation control and policies
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices

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)
  • Microelectronics & Electronic Packaging (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

ストレージシステムは、1以上の不揮発メモリデバイスと、その1以上の不揮発メモリデバイスに接続された1以上のプロセッサであるプロセッサ部とを有する。1以上の不揮発メモリデバイスの各々について、不揮発メモリのうちの少なくとも一部が、データが書き込まれる記憶領域であるユーザ領域と、そのデータの更新データが書き込まれる記憶領域である更新領域とで構成されている。プロセッサ部は、1以上の不揮発メモリデバイスの1以上のリソース使用率のうちの少なくとも1つに基づき、1以上の不揮発メモリデバイスの各々について、ユーザ領域の容量であるユーザ容量を変更する。

Description

本発明は、概して、記憶制御に関し、例えば、オーバープロビジョニングのための予備領域の容量の変更に関する。
フラッシュメモリは、一般に、追記型、すなわち、データを書き換えるためには、そのデータを記憶している領域からデータを消去する必要がある。フラッシュメモリは、データの書換回数(言い換えれば消去回数)に上限がある。この上限を超えたフラッシュメモリは、新たにデータを書き込めなかったり、書き込まれたデータにエラーが発生する確率が高くなったりする。フラッシュメモリの書換回数がその上限に達するまでの期間を、フラッシュメモリの「寿命」という。したがって、複数のフラッシュメモリによって構成されるFMPK(Flash Memory Package)にも寿命が存在する。
特許文献1には、RAIDグループの総記憶容量を使用可能容量と余剰容量の和とし、論理ボリュームへの書換頻度に応じて、余剰容量のサイズを変更する技術が開示されている。
WO2015/052811
ストレージシステムの用途は様々であり、例えば、書換頻度の低い(リードがメインの)データを格納するストレージシステムは、更新領域(予備領域)を削減し、ユーザ領域(データ格納領域)を拡大することで、ビットコストを低減することが可能である。
しかしながら、FMPKの更新領域を必要以上に削減してしまうと、そのFMPKに書き込まれる更新データ(上書きされるデータ)の総量に依っては、非同期処理の実行頻度が高くなる。このため、ストレージシステムのI/O性能(I/O要求に応答してFMPKに対してI/Oを行う処理の性能)が低下してしまう(なお、非同期処理とは、更新データのようなデータをライト対象としたライトコマンドに応答してFMPKにより行われるライト処理とは非同期にFMPKにより行われる処理であって、典型的には、リクラメーション処理及びリフレッシュ処理のように、FM(フラッシュメモリ)に対するデータのライトが発生する処理である)。
一方、FMPKの更新領域を必要以上に増やしてしまうと、FMPKのユーザ領域が小さくなってしまうので、書き込むことができるデータの量は少ない。
このような課題は、FMPKのようなフラッシュメモリデバイスに限らず、他の追記型の不揮発メモリデバイスについても、あり得る。
本発明は、ホストI/O性能の維持とビットコストの低減とを両立することを目的とする。
ストレージシステムは、1以上の不揮発メモリデバイスと、その1以上の不揮発メモリデバイスに接続された1以上のプロセッサであるプロセッサ部とを有する。1以上の不揮発メモリデバイスの各々について、不揮発メモリのうちの少なくとも一部が、データが書き込まれる記憶領域であるユーザ領域と、そのデータの更新データが書き込まれる記憶領域である更新領域とで構成されている。プロセッサ部は、1以上の不揮発メモリデバイスの1以上のリソース使用率のうちの少なくとも1つに基づき、1以上の不揮発メモリデバイスの各々について、ユーザ領域の容量であるユーザ容量を変更する。
ストレージシステムの稼働中に、1以上の不揮発メモリデバイスの動作状況に最適なユーザ容量(言い換えれば、更新領域の容量である更新容量)を維持すること、結果として、ホストI/O性能の維持とビットコストの低減との両立を維持することが期待できる。
実施例1の概要を示す。 ストレージシステムの構成例を示す。 FMPKの構成を示す。 FMチップの構成を示す。 ストレージコントローラのメモリの構成を示す。 ストレージコントローラのテーブル領域に格納されるテーブルの構成を示す。 FMPKコントローラのメモリの構成を示す。 FMPKコントローラのテーブル領域に格納されるテーブルの構成を示す。 ライト要求に応答して行われる処理のシーケンス図である。 ライトコマンドを受けるFMPKが行う処理のフローチャートである。 定期処理コマンドを受けるFMPKが行う処理のフローチャートである。 ストレージコントローラがアラートを受けたことに応答して行われる処理のシーケンス図である。 拡張/縮小判定を含む処理のフローチャートである。 拡張/縮小判定の詳細を示すフローチャートである。 S1202に関してストレージコントローラが行う処理の詳細を示すフローチャートである。 拡張に関してFMPKが行う処理のフローチャートである。 縮小に関してFMPKが行う処理のフローチャートである。 拡張/縮小判定テーブルの構成を示す。 ライト処理の性能と非同期処理の性能との関係の一例を示す。 設定画面の一例を示す。 予測画面の一例を示す。 実施例2におけるユーザ容量遷移と性能遷移との関係の一例を示す。
以下の説明では、「abcテーブル」の表現にて情報を説明することがあるが、情報は、テーブル以外のデータ構成で表現されていてもよい。データ構成に依存しないことを示すために「abcテーブル」のうちの少なくとも1つを「abc情報」と呼ぶことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
また、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「記憶部」は、1以上のメモリを含む。記憶部に関して少なくとも1つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェース部(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
また、以下の説明では、「ストレージシステム」は、1以上のストレージ装置でよい。「ストレージ装置」は、記憶デバイスにデータを格納する機能を有する装置であればよい。このため、ストレージ装置は、ファイルサーバのような計算機(例えば汎用計算機)であってもよい。例えば、少なくとも1つの物理的なストレージ装置が、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-defined Datacenter)を採用することができる。また、例えば、少なくとも1つのストレージ装置(計算機)は、ハイパーバイザを有していてよい。ハイパーバイザが、サーバとして動作するサーバVM(Virtual Machine)と、ストレージとして動作するストレージVMとを生成してよい。サーバVMが、I/O要求を発行するホスト計算機として動作し、ストレージVMが、サーバVMからのI/O要求に応答してFMPKに対するI/Oを行うストレージコントローラとして動作してよい。
また、以下の説明では、「時刻」は、年月日時分秒の単位で表現されるが、時刻の単位は、それよりも粗くても細かくてもよいし、また異なる単位でもよい。
図1は、実施例1の概要を示す。
ストレージシステム104は、パリティグループ(以下、PG)810と、PG810に対するI/O(Input/Output)を制御するストレージコントローラ111とを有する。
PG810は、複数のFMPK(Flash Memory Package)131で構成されており、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループとも呼ばれる。
各FMPK131は、FM(フラッシュメモリ)と、複数種類のリソース(例えばプロセッサ及びメモリ)を含んだ複数のリソースとを有する。以下、各FMPK131について、FM以外のリソースを、「FMリソース」と総称する。
各FMPK131において、FMは、ユーザ領域801Uと、更新領域801Pとを有する。ユーザ領域801Uは、データ(例えば新規のファイルのデータ)が書き込まれる記憶領域である。更新領域801Pは、そのデータの更新データ(例えば、ファイルの更新データ)が書き込まれる記憶領域である。以下、各FMPK131について、ユーザ領域801Uの容量を「ユーザ容量」と呼び、更新領域801Pの容量を「更新容量」と呼ぶ。なお、FMは、ユーザ領域801U及び更新領域801P以外の領域を含んでもよい。
各FMPK131において、ユーザ容量と更新容量の合計は一定である。このため、ユーザ容量が大きくなれば、更新容量が小さくなり、ユーザ容量が小さくなれば、更新容量が大きくなる。
FMPK131の更新領域801Pを必要以上に削減してしまうと、そのFMPK131に書き込まれる更新データの総量に依っては、非同期処理の実行頻度が高くなる。このため、ストレージシステム104のホストI/O性能(ホスト計算機101からのI/O要求に応答してFMPK131に対してI/Oを行う処理の性能)が低下してしまう。一方、FMPK131の更新領域801Pを必要以上に増やしてしまうと、FMPK131のユーザ領域801Uが小さくなってしまうので、書き込むことができるデータの量は少ない。
そこで、ストレージコントローラ111は、PG810を構成する複数のFMPK131の複数のFMリソース使用率のうちの少なくとも1つを特定し、特定したFMリソース使用率に基づき、その複数のFMPK131の各々について、ユーザ容量を変更する。ユーザ容量の変更は、ユーザ容量を拡張する(大きくする)ことと、ユーザ容量を縮小する(小さくする)ことのいずれかである。
本実施例では、ユーザ容量の変更は、OP(Over Provisioning)率の変更である。OP率は、ユーザ容量、更新容量及び物理容量(ユーザ容量と更新容量の合計)のうちの少なくとも2つに基づいて決定された比率であって、ユーザ容量が大きい程に小さい値となる。本実施例では、OP率の計算式として、OP率=(更新容量)/(ユーザ容量)が採用される。このため、ユーザ容量の拡張とは、OP率を下げることであり、ユーザ容量の縮小とは、OP率を上げることである。OP率の計算式として、他の計算式、例えば、OP率=((物理容量)/(ユーザ容量))−1が採用されてもよい。
ストレージシステム104の稼働中、PG810に対するI/Oの状況によって、PG810における各FMPK131にとって適切な更新容量は変わり得る。一方、PG810において、各FMPK131のOP率は同一である。PGユーザ領域(PG810における複数のFMPK131がそれぞれ有する複数のユーザ領域801Uの集合)に基づく論理記憶空間の少なくとも一部が、論理ボリュームとして使用される。
そこで、ストレージコントローラ111は、PG単位で、各FMPK131のOP率を変更する。
以下、本実施例を詳細に説明する。
図2は、ストレージシステム104の構成を示す。なお、以下の説明では、混同を避けるため、ホスト計算機101からストレージシステム104への要求を「要求」と言い、ストレージコントローラ111からFMPK131への要求を「コマンド」と言うことにする。
ストレージシステム104に、ホスト計算機101と、管理計算機102とが接続されている。ホスト計算機101は、例えば、SAN(Storage Area Network)103のような通信ネットワークを通じてストレージシステム104に接続されている。管理計算機102は、例えば、所定の通信線15(又はLAN(Local Area Network)のような通信ネットワーク)を通じてストレージシステム104に接続されている。
ホスト計算機101は、ストレージシステム104に対してライト要求を送信することで、ストレージシステム104にデータをライトする。ホスト計算機101は、ストレージシステム104に対してリード要求を送信することで、ストレージシステム104からデータをリードする。ホスト計算機101は、I/O要求(ライト要求又はリード要求)の発行元の一例でよい。I/O要求の発行元としては、例えば、上述のサーバVM及びストレージVMを実行するストレージシステムにおいてはサーバVMでもよい。
管理計算機102は、ユーザがストレージシステム104を管理及び制御ための装置である。管理計算機102は、キーボード及びマウスのような入力デバイスと、表示デバイスのような出力デバイスを備えてもよい。
ストレージシステム104は、ストレージコントローラ111と、ドライブボックス112とを備える。ドライブボックス112は、複数のFMPK131を備える。
ストレージコントローラ111は、H−I/F(インターフェース)121と、プロセッサ123と、メモリ124と、D−I/F122、M−I/F125とを備え、それら要素121〜125は、データ送受信が可能な内部ネットワーク126で接続されている。H−I/F121、D−I/F122、M−I/F125が、インターフェース部の一例である。メモリ124が、記憶部の一例である。プロセッサ123が、プロセッサ部の一例である。
H−I/F121は、ストレージコントローラ111にホスト計算機101を接続するためのI/Fである。M−I/F125は、ストレージコントローラ111に管理計算機102を接続するためのI/Fである。D−I/F126は、ストレージコントローラ111にFMPK131を接続するためのI/Fである。
プロセッサ123は、コンピュータプログラム(以下、プログラム)等を実行する。プロセッサがプログラムを実行することにより、ストレージシステム104の備える様々な機能が実現される。
メモリ124は、データを記憶する。メモリ124は、例えば、DRAM(Dynamic Random Access Memory)のような揮発性半導体メモリであるが、フラッシュメモリのような不揮発性半導体メモリでもよい。メモリ124に記憶されたプログラム及びデータは、プロセッサ123、H−I/F121及びD−I/F122等からアクセスされる。
図3は、FMPK131の構成を示す。
FMPK131は、FM220と、FM220に接続されたFMPKコントローラ50とを備える。FM220は、複数のFM(フラッシュメモリ)チップ202で構成されている。
FMPKコントローラ50は、プロセッサ214と、メモリ212と、FMPK I/F211と、FMチップI/F213とを有する。これらの要素211〜214は、データ送受信可能な内部ネットワーク215で接続されており、双方向にデータを送受信できる。なお、以下、特に、内部ネットワーク215にメモリ212を接続するバス58を、「キャッシュバス58」と呼ぶことにする。
プロセッサ214は、プログラム等を実行する。プロセッサ214がプログラムを実行することにより、FMPK131の備える様々な機能が実現される。
メモリ212は、データを記憶する。メモリは、例えば、DRAMのような揮発性半導体メモリであるが、フラッシュメモリのような不揮発性半導体メモリでもよい。メモリ212に記憶されたプログラム及びデータは、プロセッサ214、FMPK I/F211及びFMチップI/F213等からアクセスされる。
FMPK I/F211は、FMPK131をストレージコントローラ111に接続するためのI/Fである。FMチップI/F213は、FMPKコントローラ50(プロセッサ)にFMチップ202を接続するためのI/Fである。なお、以下、特に、FMチップI/F213にFMチップ202を接続するバス59を、「FMバス59」と呼ぶことにする。
上述した要素211〜215、58及び59が、それぞれ、複数のFMリソースである。
図4は、FMチップ202の構成を示す。
FMチップ202は、例えばNAND型のFMチップであり、FMコントローラ301と、複数のブロック(物理ブロック)302とを有する。そして、ブロック302は、複数のページ(物理ページ)303で構成されている。FMチップ202は、その特性上、ページ単位でデータのリードおよびライトを行う必要がある。そして、FMチップ202は、その特性上、ブロック単位でデータの消去を行う必要がある。
また、FMチップ202は、追記型、すなわち、ライト済みのページ303に対してデータをオーバーライトすることができない。従って、FMPKコントローラ50は、ライト済みページ303の物理アドレスが割り当てられている論理アドレスをライト先としたライトコマンドを受信した場合、そのライトコマンドに従う更新データ(オーバーライトのデータ)を未使用のページ303にライトし、そのページ303の物理アドレスを、ライト済みページ303の物理アドレスに代えて、ライト先の論理アドレスに割り当てる。
FMPK131の上位システムは、本実施例ではストレージコントローラ111であるが、限定されないでよい。すなわち、上位システムは、ストレージシステムにおいて、FMPK131が外部付けされた計算機であってもよいし、FMPK131を内蔵した計算機内のプロセッサであってもよい。
FMPKコントローラ50は、論理記憶空間(例えば、連続した論理アドレス空間)を上位システムに提供する。論理記憶空間は、複数の論理領域に区切られてよい。例えば、論理記憶空間が、複数の論理ブロックで構成され、各論理ブロックが、複数の論理ページで構成されていてもよい。論理ブロック又は論理ページが論理領域の一例でよい。論理領域は、論理アドレス範囲(例えば、連続した1以上の論理アドレス)と言い換えられてもよい。FMPKコントローラ50は、論理アドレスと物理アドレスの対応関係を管理している。FMPKコントローラ50は、上位システムからのI/Oコマンドで指定されている論理アドレスに対応した物理アドレスが属する物理領域を特定し、特定した物理領域に対してI/Oを行う。論理アドレスは、例えば、LBA(Logical Block Address)であるが、LBAに代えて又は加えて、論理領域ID(例えば論理ページ番号)でよい。物理アドレスは、例えば、PBA(Physical Block Address)であるが、PBAに代えて又は加えて、物理領域ID(例えば物理ページ番号)でよい。ユーザ領域801U内のページ303が割り当てられている論理領域がライト先の場合、ライト先論理領域に、割当て済のページ303に代えて新たに更新領域801P内の空きページ303が割り当てられ、新たに割り当てられたページ303に更新データが書き込まれる。各論理領域について、最近割り当てられたページ303に書き込まれているデータ(つまり最新のデータ)は「有効データ」であり、有効データが書き込まれているページ303は「有効ページ」であり、過去に割り当てられていたページ303に格納されているデータは「無効データ」であり、無効データが書き込まれているページ303は「無効ページ」である。また、有効ページでも無効ページでも無く新たにデータを格納可能なページが、「空きページ」である。
また、FM220に代えて、FM以外の不揮発メモリ、例えばPRAM(Phase-change Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)が採用されてもよい。
図5は、ストレージコントローラ111のメモリ124の構成を示す。
メモリ124は、プログラム領域401、テーブル領域402及びデータキャッシュ領域403を有する。
プログラム領域401は、プログラム、例えば、ストレージコントローラ111の動作を制御するストレージ制御プログラム411を格納する。プログラムは、プロセッサ123により実行される。例えば、ストレージ制御プログラム411は、ホスト計算機101からのライト要求に従って、FMPK131にデータをライトする処理を実行する。また、例えば、ストレージ制御プログラム411は、ホスト計算機101からのリード要求に従って、FMPK131からデータをリードして、ホスト計算機101に返す処理を実行する。
テーブル領域402は、テーブル、例えば、ドライブ管理テーブル421と、プール管理テーブル422と、仮想ボリューム管理テーブル423と、PG管理テーブル424と、ドライブ個別管理テーブル425と、拡張/縮小判定テーブル426とを格納する。これらのテーブルについては後に詳述する。
データキャッシュ領域403は、ユーザデータ431を一時的に格納する。ユーザデータ431は、I/O要求に従うデータ(具体的には、ライト対象又はリード対象のデータ)である。
図6は、ストレージコントローラ111のテーブル領域402に格納されるテーブルの構成を示す。図6に示すように、拡張/縮小判定テーブル426の構成は、図18に示す。
ドライブ管理テーブル421は、ドライブ(本実施例ではFMPK131)に関する情報を保持する。ドライブ管理テーブル421は、ドライブ毎にエントリを有する。各エントリは、ドライブ番号501、ドライブ種別502及び物理容量503といった情報を保持する。ドライブ番号501は、ドライブの識別番号である。ドライブ種別502は、ドライブの種別を示す。物理容量503は、ドライブの物理容量を示す。
プール管理テーブル422は、プールに関する情報を保持する。プール管理テーブル422は、プール毎にエントリを有する。各エントリは、プール番号511及びPG番号512といった情報を保持する。プール番号511は、プールの識別番号である。PG番号512は、プールにおけるプールボリュームを提供するPGの識別番号である。なお、本実施例では、プールは、PG810のPGユーザ領域に基づく論理ボリュームで構成された記憶空間である。プールを構成する論理ボリュームを「プールボリューム」と呼ぶ。プール(プールボリューム)は、複数のセグメント(以下、物理セグメント)に分割されている。仮想ボリューム(例えば、Thin Provisioningに従う仮想的な論理ボリューム)におけるライト先仮想セグメントに、その仮想ボリュームが関連付けられているプールから、物理セグメントが割り当てられる。
PG管理テーブル424は、PGに関する情報を保持する。PG管理テーブル424は、PG毎にエントリを有する。各エントリは、PG番号521、RAIDレベル522、RAID構成523、ドライブリスト524、ポリシー525、OP率526及びPG容量527といった情報を保持する。PG番号521は、PGの識別番号である。RAIDレベル522は、RAIDレベルを示す。RAID構成523は、RAID構成を示す。RAIDレベル及びRAID構成によりRAID種別が定義されている。ドライブリスト524は、PGを構成するドライブの識別番号のリストである。ポリシー525は、PGに関連付けられているポリシーを示す。ポリシーとしては、容量優先と性能優先とがある。各ポリシーについては後述する。OP率526は、PGについて採用されているOP率を示す。PG容量527は、PGを構成する複数のFMPK131にそれぞれ対応した複数の物理容量の合計である。PG容量527とOP率526から、PGユーザ領域の容量が算出される。
ドライブ個別管理テーブル425は、ドライブ毎に存在する。ドライブ個別管理テーブル425は、ドライブ領域毎に、ドライブ番号531、LBA(Logical Block Address)532及びレングス533といった情報を保持する。ドライブ番号531は、ドライブ領域を有するドライブの識別番号である。LBA532は、ドライブ領域の先頭のLBAを示す。レングス533は、ドライブ領域のサイズを示す。
仮想ボリューム管理テーブル423は、仮想ボリュームに関する情報を保持する。仮想ボリューム管理テーブル423は、仮想ボリューム毎にエントリを有する。各エントリは、ボリューム番号541、プール番号542及び容量543といった情報を保持する。ボリューム番号541は、仮想ボリュームの識別番号である。プール番号542は、仮想ボリュームに関連付けられているプールの識別番号である。容量543は、仮想ボリュームの容量を示す。
拡張/縮小判定テーブル426は、図18に示すように、FMリソース使用率と、非同期処理性能と、後述の拡張/縮小可否判定の結果との関係を示す。つまり、本実施例では、OP率の変更は、FMリソース使用率の他に、非同期処理性能に基づく。OP率(更新容量の大きさ)は、非同期処理の発生頻度に影響する。このため、OP率の変更を、FMリソース使用率の他に、非同期処理性能を基に、行うことで、ストレージシステム104の稼働中に最適なOP率を維持することが一層期待できる。なお、ライト処理(ライトコマンドに応答して行われる処理)の性能と、非同期処理の性能との関係の一例は、図19に示す通りである。すなわち、FMPK131の性能に余裕があれば(ライト処理性能と非同期処理性能の合計と、FMPKの限界性能との差が十分にあれば)、非同期処理の性能(負荷)が高くなってもライト処理の性能は下がらない。しかし、FMPK131の性能に余裕が無ければ、非同期処理の性能が高くなると、ライト処理の性能が下がる。
FMリソース使用率範囲(以下、使用率範囲)として、N個の使用率範囲があり、非同期処理性能範囲(以下、性能範囲)として、M個の性能範囲がある。N及びMは、いずれも2以上の整数であればよく、且つ、NとMは同じ値でも異なる値でもよい。本実施例では、N=3及びM=3である。
使用率範囲として、第1の使用率範囲(使用率X未満(Xは例えば10%))、第2の使用率範囲(使用率X以上使用率Y未満(Yは例えば50%))及び第3の使用率範囲(使用率Y以上)がある。使用率範囲は、複数種類のFMリソース使用率(メモリ723〜キャッシュ帯域727)のうち最も高い(最も悪い)FMリソース使用率と比較される。最も高い(最も悪い)FMリソース使用率が、FMPK131においてネックと考えられ、そのようなFMリソース使用率が参酌されるので、PG単位のOP率を最適値にする可能性を高めることができる。
性能範囲として、第1の性能範囲(性能A未満)、第2の性能範囲(性能A以上性能B未満)及び第3の性能範囲(性能B以上)がある。なお、図示のH、M及びLは、高、中及び低をそれぞれ意味する。
図18によれば、FMリソース使用率が低く、且つ、非同期処理性能が低いと、拡張/縮小可否判定の結果は、「拡張可」となる傾向である。すなわち、FMリソース使用率及び非同期処理性能のいずれについても余裕がある場合、ユーザ領域が大きくなれば、ビットコストの一層の低減が期待され、且つ、非同期処理の発生頻度が高くなっても差し支えないことが期待される。一方、FMリソース使用率が高く、且つ、非同期処理性能が低いと、拡張/縮小可否判定の結果は、「縮小可」となる傾向である。すなわち、FMリソース使用率及び非同期処理性能のいずれについても余裕が無い場合、更新領域が大きくなれば、非同期処理の発生頻度の低下が期待される。具体的には、FMリソース使用率が使用率X(第1の使用率の一例)未満、且つ、非同期処理性能が性能A(第1の処理性能の一例)未満の場合、拡張/縮小判定の結果は、拡張可である。一方、FMリソース使用率が使用率Y(第2の使用率の一例)以上、且つ、非同期処理性能が性能B(第2の処理性能の一例)以上の場合、拡張/縮小判定の結果は、縮小可である。
なお、判定結果として、「拡張可」及び「縮小可」の他に、「不可」(拡張及び縮小のいずれも不可)がある。
また、少なくとも1つの性能範囲の境界値、すなわち、性能A及びBのうちの少なくとも1つは、ポリシー、すなわち、容量優先と性能優先とのいずれが採用されているかによって異なる。「容量優先」とは、ライト処理の性能が高いことよりもユーザ容量が大きいことを優先することである。「性能優先」とは、ユーザ容量が大きいことよりもライト処理の性能が高いことを優先することである。性能A及びBのうちの少なくとも1つは、容量優先が採用されている場合、性能優先が採用されている場合に比して高い。このため、非同期処理性能が同じであっても、ポリシーによって、拡張/縮小可否判定の結果が異なり得る。例えば、非同期処理性能が30KIOPSの場合、性能優先では、縮退可が得られ(すなわち、非同期処理性能を下げることでライト処理性能の向上が優先され)、容量優先では、拡張可が得られる(すなわち、非同期処理性能が高くなってもユーザ容量が大きいことが優先される)。
図7は、FMPKコントローラ50のメモリ212の構成を示す。
メモリ212は、プログラム領域601、テーブル領域602及びデータキャッシュ領域603を有する。
プログラム領域601は、プログラム、例えば、FMPKコントローラ50の動作を制御するFMPK制御プログラム611を格納する。プログラムは、プロセッサ214により実行される。例えば、FMPK制御プログラム611は、ストレージコントローラ111からのライトコマンドに応答して、論理物理変換テーブル621を基にライト先の物理ページを特定し、特定したライト先物理ページを有するFMチップ202にデータをライトする。また、例えば、FMPK制御プログラム611は、ストレージコントローラ111からのリードコマンドに応答して、論理物理変換テーブル621を基にリード元の物理ページを特定し、特定したリード元物理ページを有するFMチップ202からデータをリードする。
テーブル領域602は、テーブル、例えば、論理物理変換テーブル621、FMリソース管理テーブル622、ページ管理テーブル623、OP率管理テーブル624及び非同期性能管理テーブル625を格納する。これらのテーブルについては後に詳述する。
データキャッシュ領域603は、ユーザデータ631を一時的に格納する。ユーザデータ631は、ストレージコントローラ111からのI/Oコマンドに従うデータ(ライト対象又はリード対象のデータ)である。
図8は、FMPKコントローラ50のテーブル領域602に格納されるテーブルの構成を示す。なお、図8の説明では、図8に示すテーブル領域602を有するFMPK131を「対象FMPK131」と呼ぶことにする。
OP率管理テーブル624は、対象FMPK131のOP率に関する情報、具体的には、OP率701及びユーザ容量702を保持する。OP率701は、決定されたOP率を示す。ユーザ容量702は、対象FMPK131のユーザ容量を示す。ユーザ容量702は、対象FMPK131の物理容量及びOP率に基づき算出される。
FMリソース管理テーブル622は、対象FMPK131のFMリソース使用率に関する情報を保持する。FMリソース管理テーブル622は、期間毎にエントリを有する。各エントリは、ID721、時刻722、メモリ723、CPU724、バス帯域725、キャッシュ使用率726及びキャッシュ帯域727といった情報を保持する。ID721は、期間のIDである。時刻722は、期間の開始時刻を表す。メモリ723は、期間において特定されたメモリ使用率(メモリ212の使用率)を示す。CPU724は、期間において特定されたプロセッサ使用率(プロセッサ214の使用率)を示す。バス帯域725は、期間において特定されたバス帯域(FMバス59の帯域)を示す。キャッシュ使用率726は、期間において特定されたキャッシュ使用率(データキャッシュ領域403の使用率)を示す。キャッシュ帯域727は、期間において特定されたキャッシュ帯域(キャッシュバス58の帯域)を示す。期間は、一定期間(例えば30分)である。メモリ723〜キャッシュ帯域727の各々は、FMリソース率の一例である。同一期間中に、同一種類のFMリソース率が複数回特定された場合、テーブル622に登録される値は、特定されたFMリソース率のうちの少なくとも1つに従う値、例えば、平均値、又は、最も高い(最も悪い)FMリソース率である。また、テーブル624に登録されるFMリソース使用率は1種類でもよい。
非同期性能管理テーブル625は、対象FMPK131の非同期処理の性能(例えば、単位時間当たりのI/O数、又は、単位時間当たりのデータ転送サイズ)に関する情報を保持する。非同期性能管理テーブル625は、期間毎にエントリを有する。各エントリは、ID711、時刻712、リクラメーション713及びリフレッシュ714といった情報を保持する。ID711は、期間のIDである。時刻712は、期間の開始時刻を表す。リクラメーション713は、期間において特定されたリクラメーション処理性能を示す。リフレッシュ714は、期間において特定されたリフレッシュ処理の性能を示す。リクラメーション処理及びリフレッシュ処理は、それぞれ、非同期処理の一例である。同一期間中に、同一種類の非同期処理性能が複数回特定された場合、テーブル625に登録される値は、特定された非同期処理性能のうちの少なくとも1つに従う値、例えば、平均値、最も低い(最も悪い)性能、又は、最も高い(最も良い)性能である。
なお、「非同期処理」とは、更新データのようなデータをライト対象としたライトコマンドに応答してFMPK131により行われるライト処理とは非同期にFMPK131により行われる処理であって、典型的には、リクラメーション処理及びリフレッシュ処理のように、FM220に対するデータのライトが発生する処理である。
「リクラメーション処理」とは、1以上の物理ブロックの各々から有効データを読み出し、読み出したデータを物理ブロック(例えば、移動元の物理ブロックよりも消去回数の少ない物理ブロック)へ移動し、移動元物理ブロックに対して消去処理を実行する処理である。リクラメーション処理により、空きの物理ブロックを増やすことができる。
また、「リフレッシュ処理」とは、物理ブロックからデータ(特に有効データ)を読み出してエラー訂正し、エラー訂正したデータを別の物理ブロック(例えば、移動元の物理ブロックよりもPE回数の少ない物理ブロック)へ移動する処理である。リフレッシュ処理により、移動元物理ブロックが割り当てられていた論理領域(例えば論理ブロック)には、移動元物理ブロックに代えて移動先物理ブロックが割り当てられる。
論理物理変換テーブル621は、論理アドレスと物理アドレスの対応関係に関する情報を保持する。論理物理変換テーブル621は、論理ページ(論理領域の一例)毎にエントリを有する。各エントリは、論理ページ番号731、LBA732、論理ページサイズ733、ステータス734、物理ページ番号735及びブロック番号736といった情報を保持する。論理ページ番号731は、論理ページの識別番号である。LBA732は、論理ページの先頭LBAを示す。論理ページサイズ733は、論理ページのサイズを示す。ステータス734は、論理ページのステータスを示す。例えば、ステータス734としては、“有効”(ユーザ領域に基づく論理ページであってその論理ページがプールの一部として割り当てられている)、“無効”(ユーザ領域に基づく論理ページであるがその論理ページがプールの一部として割り当てられていない)、及び、“使用不可”(更新領域に基づく論理ページ)がある。物理ページ番号735は、論理ページに割り当てられた物理ページの識別番号である。ブロック番号736は、論理ページに割り当てられた物理ページを含む物理ブロックの識別番号である。
ページ管理テーブル623は、物理ページに関する情報を保持する。ページ管理テーブル623は、物理ページ毎にエントリを有する。各エントリは、物理ページ番号741及びステータス742といった情報を保持する。物理ページ番号741は、物理ページの識別番号である。ステータス742は、物理ページのステータスを示す。
以下、本実施例で行われる処理を説明する。
図9は、ライト要求に応答して行われる処理の流れを示す。図10は、ライトコマンドを受けるFMPK131が行う処理の流れを示す。
ストレージコントローラ111が、ホスト計算機101からライト要求を受信する(S900)。ストレージコントローラ111(ストレージ制御プログラム411)が、そのライト要求に基づき、ライトコマンドを、PG810における少なくとも1つのFMPK131に送信する。以下、図9及び図10の説明において、1つのFMPK131を例に取る。図9及び図10の説明において、そのFMPK131を「対象FMPK131」と呼ぶ。
対象FMPK131のFMPKコントローラ50(プロセッサ214)が、ライトコマンドを受信する(S901)。プロセッサ214(FMPK制御プログラム611)は、そのライトコマンドに従い、そのライトコマンドに従うライト対象のデータをFM220に書き込む(S902)。
FMPK制御プログラム611は、対象FMPK131の複数種類のFMリソース使用率(メモリ723〜キャッシュ帯域727)をFMリソース管理テーブル622から取得する(S903)。なお、複数種類のFMリソース使用率は、それぞれ、定期的に計測されてFMリソース管理テーブル622に登録されてもよいし、このS903において計測されてもよい。
FMPK制御プログラム611は、非同期処理の要否を判定する(S904)。ライトコマンドに応答して行われる処理に関し、非同期処理は、典型的には、リクラメーション処理である。例えば、物理ブロック総数に対する空きブロック数が閾値未満の場合(つまり空きブロックが少ない場合)、リクラメーション処理が要と判定される。
S904の判定結果が真の場合(S904:Y)、FMPK制御プログラム611は、非同期処理を実行する(S905)。そして、FMPK制御プログラム611は、その非同期処理に伴う変更後のFMリソース率をFMリソース管理テーブル622に登録する(S906)。
FMPK制御プログラム611は、対象FMPK131に障害が生じたか否かを判定する(S907)。ここで言う「障害」とは、対象FMPK131のユーザ容量のうちの空き容量が所定の容量未満になった(例えば、ユーザ領域801Uを構成する論理ページの総数に対し、論理ページ“無効”の数の比率が所定の値未満になった)、又は、対象FMPK131のライト処理の性能が所定の性能未満になった、である。
S907の判定結果が真の場合(S907:Y)、FMPK制御プログラム611は、アラートを発行する(S908)。
以上が、ライト要求に応答して行われる処理である。なお、この処理において、FM220に対するライトに対して応答950が返り、ライトコマンドに対する応答960が返り、ライト要求に対する応答970が返る。
各FMPK131は、定期的に、非同期処理要否を判定してもよい。例えば、ストレージコントローラ111は、定期的に、定期処理コマンドを、FMPK131に送信してもよい。
図11は、定期処理コマンドを受けるFMPK131が行う処理の流れを示す。図11の説明では、そのFMPK131を「対象FMPK131」と呼ぶ。
FMPKコントローラ50(プロセッサ214)が、定期処理コマンドを受信する(S1101)。
プロセッサ214(FMPK制御プログラム611)は、対象FMPK131の複数種類のFMリソース使用率(メモリ723〜キャッシュ帯域727)をFMリソース管理テーブル622から取得する(S1102)。
FMPK制御プログラム611は、非同期処理の要否を判定する(S1103)。ここでの非同期処理は、リクラメーション処理に限られない。
S1103の判定結果が真の場合(S1103:Y)、FMPK制御プログラム611は、非同期処理を実行する(S1104)。そして、FMPK制御プログラム611は、その非同期処理に伴う変更後のFMリソース率をFMリソース管理テーブル622に登録する(S1105)。
FMPK制御プログラム611は、対象FMPK131に上述の障害が生じたか否かを判定する(S1106)。
S1106の判定結果が真の場合(S1106:Y)、FMPK制御プログラム611は、アラートを発行する(S1107)。
図12は、ストレージコントローラ111がアラートを受けたことに応答して行われる処理の流れを示す。図13は、拡張/縮小判定を含む処理の流れを示す。ユーザ容量枯渇又は性能低下によるアラートが生じたことを契機にユーザ容量の拡張又は縮小が行われるので、ユーザ容量を最適にすることが、アラートの原因を解消することにもなる。
プロセッサ123(ストレージ制御プログラム411)は、FMPK131からアラートを受けた場合、そのFMPK131を含んだPG810を、PG管理テーブル424を基に特定し、その特定したPG810について、ユーザ容量の拡張又は縮小を実行するか否かの判定である拡張/縮小判定を実行する(S1201)。
S1201の判定結果が真の場合(S1201:Y)、ストレージ制御プログラム411は、その特定したPG810について、ユーザ容量の拡張又は縮小を実行する(S1202)。
以下、図12及び図14を参照して、拡張/縮小判定の詳細を説明する。なお、アラートの発行元のFMPK131を含んだPG810を、以下、「対象PG810」と呼ぶ。
ストレージ制御プログラム411は、対象PG810のうち、S1201−1及びS1201−2が未だされていないいずれかのFMPK131を選択する。ここで選択されたFMPK131を、「選択FMPK131」と呼ぶ。
ストレージ制御プログラム411は、選択FMPK131からFMリソース使用率及び非同期処理性能を特定する(S1201−1)。具体的には、ストレージ制御プログラム411は、選択FMPK131に対し、取得コマンドを送信する。選択FMPK131のプロセッサ214(FMPK制御プログラム611)は、その取得コマンドに応答して、FMリソース管理テーブル622から複数種類のFMリソース使用率(メモリ723〜キャッシュ帯域727)を取得し、且つ、非同期性能管理テーブル625から最新の非同期処理性能(リクラメーション713及びリフレッシュ714)を取得し(S1201−1−1)、取得したFMリソース使用率及び非同期処理性能を含んだ応答(取得コマンドに対する応答)を、ストレージコントローラ111に返す。
ストレージ制御プログラム411は、選択FMPK131の最高FMリソース使用率及び最高非同期処理性能に対応した結果を、拡張/縮小判定テーブル426から特定する(S1201−2)。
結果が「不可」の場合、ストレージ制御プログラム411は、対象PG810について、S1201の判定結果を偽(S1201:N)とする。
結果が「拡張可」又は「縮小可」の場合、ストレージ制御プログラム411は、対象PG810に、S1201−1及びS1201−2が未だされていないFMPK131があれば、そのFMPK131について、S1201−1及びS1201−2を実行する。
結果が「拡張可」又は「縮小可」の場合、ストレージ制御プログラム411は、対象PG810に、S1201−1及びS1201−2が未だされていないFMPK131が無ければ、対象PG810の全てのFMPK131について、同じ結果が得られたか(すなわち、全て「拡張可」であるか、又は、全て「縮小可」であるか)を、判定する(S1201−3)。S1201−3の判定結果が真の場合(S1201−3:Y)、S1201の判定結果が真(S1201:Y)となる。S1201−3の判定結果が偽の場合(S1201−3:N)、S1201の判定結果が偽(S1201:N)となる。これにより、対象PG810について、PG単位での拡張又は縮小を行うことができる。なお、ストレージ制御プログラム411は、対象PG810について、異なる結果が得られ次第、S1201の判定結果をS1201:Nとしてもよい。
以下、図12及び図15を参照して、S1202に関してストレージコントローラ111が行う処理の詳細を説明する。
対象PG810を構成する各FMPK131について、S1202−1が実行される。すなわち、S1201の判定結果が、「拡張可」の場合、ストレージ制御プログラム411は、対象PG810を構成する各FMPK131に、拡張コマンドを送信する。一方、S1201の判定結果が、「縮小可」の場合、ストレージ制御プログラム411は、対象PG810を構成する各FMPK131に、縮小コマンドを送信する。
その後、S1202−2が実行される。すなわち、ストレージ制御プログラム411は、対象PG810について、拡張コマンド又は縮小コマンドに従う変更後のOP率を、OP率526として、PG管理テーブル424に登録する。なお、本実施例では、拡張コマンドに従うOP率変化量、及び、縮小コマンドに従うOP率変化量は、一定である。但し、拡張コマンドに従うOP率変化量と、縮小コマンドに従うOP率変化量は、同じであっても異なっていてもよい。
なお、OP率変化量に代えて、ユーザ容量変化量が、一定でもよい。また、ユーザ容量変化量に関し、拡張の際の変化量と、縮小の際の変化量は、同じであっても異なっていてもよい。
また、いずれかのFMPK131からアラートが発生したときに代えて、例えば定期的に、S1201が実行されてもよい。
以上のように、アラートが発生する都度に、又は、定期的に、拡張/縮小可否判定が実行されて、判定結果に応じて、PG単位でOP率が変更される。つまり、ストレージシステム104の稼働中にFMリソース使用率と非同期処理性能とに基づくOP率変更が繰り返されることになる。結果として、ストレージシステム104の稼働中に最適なOP率を維持することが期待できる。
図16は、拡張に関してFMPK131が行う処理の流れを示す。
FMPK131(FMPK制御プログラム611)が、拡張コマンドを受信し(S1201−1−A1)、ユーザ容量を拡張する(S1201−1−A2)。具体的には、例えば、FMPK制御プログラム611は、更新領域からOP率変化量分の空き領域(1以上の空きブロック(空きページの集合としてブロック))を確保する。なお、OP率変化量分の空き領域が無い場合、リクラメーション処理により、空きブロックが増やされてよい。
その後、FMPK制御プログラム611が、OP率変化量分の論理ページの各々のステータス734を、“使用不可”から“無効”に変更し、且つ、OP率701を、拡張後のOP率に変更する(S1201−1−A3)。FMPK制御プログラム611は、拡張コマンドに対する完了応答をストレージコントローラ111に返す。
図17は、縮小に関してFMPK131が行う処理の流れを示す。
FMPK131(FMPK制御プログラム611)が、縮小コマンドを受信し(S1201−1−B1)、OP率変化量分の論理ページの各々のステータス734を、“無効”から“使用不可”に変更し、OP率701を、縮小後のOP率に変更する(S1201−1−B2)。FMPK制御プログラム611は、縮小コマンドに対する完了応答をストレージコントローラ111に返す。縮小は、ユーザ領域に空き領域があるために可能なので、ユーザ領域からOP率変化量分の空き領域の確保は不要である。
以上が、実施例1の説明である。
なお、本実施例では、図20に例示する設定画面2000(例えばGUI(Graphical User Interface))経由で、種々の設定が行われてもよい。画面2000は、例えば、管理計算機102に表示されてよい。画面2000は、例えば、PG指定UI(ユーザインターフェース)2003と、ユーザ容量変更設定UI2004と、ポリシー設定UI2005と、設定変更ボタン2001と、OP率手動変更ボタン2002とを有する。PG指定UI2003により、設定が関連付けられるPGを指定することができる。ユーザ容量変更設定UI2004により、ユーザ容量の変更(OP率の変更)の有無や、その変更を自動で行うか手動で行うかを指定することができる。ポリシー設定UI2005により、性能優先と容量優先のいずれを採用するのかを指定することができる。設定変更ボタン2001が押された場合に、UI2003、2004及び2005経由での指定(設定)が、テーブル424に反映される(テーブル424には、OP率変更が有効か否か(自動か手動か)を表すカラムが設けられていてもよい)。OP率手動変更ボタン2002が押された場合に、手動で、OP率が変更される。
また、本実施例では、図21に例示する予測画面2100(例えばGUI)が、例えばストレージ制御プログラム411により表示されてもよい。例えば、ストレージ制御プログラム411は、アラート発行元のFMPK131について、最高FMリソース使用率(FMリソース使用率の種別も含む)とOP率(ユーザ容量)とを含む現在状況2014と、OP率を変更(拡張又は縮小)したと仮定した場合のFMリソース使用率とOP率(ユーザ容量)とを含む予測状況2015とを画面2100に表示してよい。画面2100は、OP率変更ボタン2101とキャンセルボタン2102とを有する。OP率変更ボタン2101が押された場合、ストレージ制御プログラム411が、アラート発行元のFMPK131を含むPG810について、OP率変更を実行してもよい。これにより、OP率変更後の予測状況を確認した上で、OP率を変更することを決定することができる。なお、キャンセルボタン2102が押された場合、ストレージ制御プログラム411が、アラート発行元のFMPK131を含むPG810について、OP率変更をスキップしてよい。
また、本実施例では、ストレージシステム104の稼働中、ユーザ容量が変わるが、ホスト計算機101からは、ユーザ容量の変更は見えない。なぜなら、ホスト計算機101に提供されているボリュームは、仮想ボリュームであり、プールの容量が変わるものの、仮想ボリュームそれ自体の容量は変更しないためである。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
本実施例では、ユーザ容量の変更量は可変である。例えば、ストレージ制御プログラム411及びFMPK制御プログラム611のうちのいずれかが、FMリソース使用率と非同期処理性能とに基づいて、ユーザ容量の変更量を決定する。具体的には、例えば、ストレージ制御プログラム411及びFMPK制御プログラム611のうちのいずれかが、FMPK131毎に、そのFMPK131の最高FMリソース使用率と最高非同期処理性能とを基に、ユーザ容量の最大変更量を決定する。PG810について、ストレージ制御プログラム411が、PG810を構成する複数のFMPK131にそれぞれ対応した複数の最大変更量に基づく最大変更量(例えば、複数の最大変更量のうちの最小値)を決定する。ストレージ制御プログラム411が、決定した最大変更量から所定のマージンを削減した変更量を、ユーザ容量の変更量として決定する。
実施例2によれば、ユーザ容量の変更量は、固定値ではなく、FMリソース使用率と非同期処理性能とに従う最大変更量がベースとなる。これにより、OP率を最適値とするまでの時間を短縮することが期待できる。
また、実施例2によれば、ユーザ容量の変化量は、最大変更量から所定のマージンが削減された量である。これにより、ストレージシステム104の性能に悪影響が生じる可能性を軽減することができる。
以下、拡張を例に取り、実施例2の一例を、図22を参照して、説明する。図22の左側が、ユーザ容量遷移を示し、図22の右側が、その遷移に伴う性能遷移を示す。
非同期処理性能が低く、且つ、FMリソース使用率も低い場合、ライト処理性能と非同期処理性能の合計とFMPKの限界性能との差が十分にある。この場合、FMリソース使用率と非同期処理性能とに従う最大拡張量は、比較的大きい。ストレージ制御プログラム411(又はFMPK制御プログラム611)が、その最大拡張量から所定のマージンを削減した量Pを、拡張量として決定する。ユーザ容量を拡張量P分拡張すると、拡張量P分更新容量が減るため、非同期処理の発生頻度が増え、結果として、非同期処理性能が性能R分増える。
非同期処理性能が増え、FMリソース使用率が高くなった場合、FMリソース使用率と非同期処理性能とに従う最大拡張量として、ストレージ制御プログラム411(又はFMPK制御プログラム611)は、非同期処理性能が低く、且つ、FMリソース使用率も低い場合の最大拡張量に比べて小さい量を決定する。そして、ストレージ制御プログラム411は、その決定した最大拡張量から所定のマージンを削減した量Qを、拡張量として決定する(マージンは、固定サイズでよいが、最大拡張量と同様、可変でもよい)。ユーザ容量を更に拡張量Q分拡張すると、拡張量Q分更新容量が減るため、非同期処理の発生頻度が更に増え、結果として、非同期処理性能が更に性能S分増える。
このようにして、ライト処理性能の低下を避けながら、ユーザ容量をできるだけ拡張していくことができるが、ユーザ容量の変更量を、FMリソース使用率と非同期処理性能とに従う可変量とすることで、最適なユーザ容量とすること(最適なOP率とすること)を、実施例1よりも短い時間で実現することが、期待できる。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実施することが可能である。例えば、PGが採用されないストレージシステムにおいては、FMPKが、拡張/縮小可否判定を実行してもよい。例えば、FMPK制御プログラムは、内部的にアラート発行し(アラートの発行先がFMPK制御プログラムであり)、そのアラートを受けて、拡張/縮小可否判定を実行してもよい。そして、FMPKのFMPK制御プログラムは、ユーザ容量を、そのFMPKの1以上のリソース使用率のうちの少なくとも1つに基づく決定に従うユーザ容量に変更することができる。「ユーザ容量を、そのFMPKの1以上のリソース使用率のうちの少なくとも1つに基づく決定に従うユーザ容量に変更する」とは、FMPKの上位システムからの変更コマンドに応答して行われることであってもよいし、FMPK制御プログラムが、そのFMPKの1以上のリソース使用率のうちの少なくとも1つに基づいて、ユーザ容量を変更することであってもよい。
104:ストレージシステム

Claims (14)

  1. それぞれが、不揮発メモリと、複数種類のリソースを含む複数のリソースとを有する、1以上の不揮発メモリデバイスと、
    前記1以上の不揮発メモリデバイスに接続された1以上のプロセッサであるプロセッサ部と
    を有し、
    前記1以上の不揮発メモリデバイスの各々について、前記不揮発メモリのうちの少なくとも一部が、データが書き込まれる記憶領域であるユーザ領域と、そのデータの更新データが書き込まれる記憶領域である更新領域とで構成されており、
    前記プロセッサ部は、前記1以上の不揮発メモリデバイスの1以上のリソース使用率のうちの少なくとも1つに基づき、前記1以上の不揮発メモリデバイスの各々について、ユーザ領域の容量であるユーザ容量を変更する、
    ストレージシステム。
  2. 前記1以上の不揮発メモリデバイスの各々は、
    ライトコマンドに応答してそのライトコマンドに従うライト対象データをその不揮発メモリデバイスの不揮発メモリに書き込む処理であるライト処理と、
    前記ライト処理とは非同期に行われる処理である非同期処理と
    を実行するようになっており、
    前記1以上の不揮発メモリデバイスの各々について、ユーザ容量の変更は、更に、前記1以上の不揮発メモリデバイスの各々についての非同期処理性能に基づく、
    請求項1記載のストレージシステム。
  3. 前記1以上の不揮発メモリデバイスの少なくとも1つについて、その不揮発メモリデバイスと前記プロセッサ部とのうちのいずれかがが、その不揮発メモリデバイスのリソース使用率と、その不揮発メモリデバイスの非同期処理性能とに基づいて、その不揮発メモリデバイスのユーザ容量を拡張可、縮小可及び変更不可のいずれであるかの判定である拡張/縮小可否判定を実行し、
    前記1以上の不揮発メモリデバイスの各々について、ユーザ容量の変更は、前記1以上の不揮発メモリデバイスの少なくとも1つについての拡張/縮小判定の結果に基づいている、
    請求項2記載のストレージシステム。
  4. 前記1以上の不揮発メモリデバイスの少なくとも1つについて、
    その不揮発メモリデバイスのリソース使用率が第1の使用率未満、且つ、その不揮発メモリデバイスの非同期処理性能が第1の処理性能未満の場合、拡張/縮小判定の結果は、拡張可であり、
    その不揮発メモリデバイスのリソース使用率が第2の使用率以上、且つ、その不揮発メモリデバイスの非同期処理性能が第2の処理性能以上の場合、拡張/縮小判定の結果は、縮小可であり、
    前記第2の使用率は、前記第1の使用率以上であり、
    前記第2の処理性能は、前記第1の処理性能以上である、
    請求項3記載のストレージシステム。
  5. 前記1以上の不揮発メモリデバイスの少なくとも1つについて、前記第1及び前記第2の処理性能の各々は、前記ライト処理の性能が高いことよりも前記ユーザ容量が大きいことを優先することである容量優先というポリシーが採用されている場合、前記ユーザ容量が大きいことよりも前記ライト処理の性能が高いことを優先することである性能優先というポリシーが採用されている場合に比して、高い、
    請求項4記載のストレージシステム。
  6. 前記1以上の不揮発メモリデバイスは、パリティグループを構成する複数の不揮発メモリデバイスであり、
    前記複数の不揮発メモリデバイスの各々について、ユーザ容量の変更は、前記複数の不揮発メモリデバイスの拡張/縮小判定の結果が同じ場合に実行される、
    請求項3記載のストレージシステム。
  7. 前記1以上の不揮発メモリデバイスの少なくとも1つについて、その不揮発メモリデバイスのユーザ容量のうちの空き容量が所定の容量未満になった、又は、その不揮発メモリデバイスのライト処理の性能が所定の性能未満になった場合、その不揮発メモリデバイスと前記プロセッサ部とのうちのいずれかがが、前記拡張/縮小可否判定を実行する、
    請求項3記載のストレージシステム。
  8. 前記1以上の不揮発メモリデバイスの各々について、ユーザ容量の変更のために参酌されるリソース使用率は、その不揮発メモリデバイスの複数のリソース使用率のうち最も高いリソース使用率である、
    請求項1記載のストレージシステム。
  9. 前記1以上の不揮発メモリデバイスの各々について、ユーザ容量に関する変更量は一定である、
    請求項1記載のストレージシステム。
  10. 前記1以上の不揮発メモリデバイスの各々について、ユーザ容量に関する変更量は、リソース使用率と非同期処理性能とに従う最大変更量よりも所定のマージン量を削減した量である、
    請求項2記載のストレージシステム。
  11. 前記1以上の不揮発メモリデバイスの各々について、ユーザ容量の変更とは、OP(Over Provisioning)率の変更であり、
    前記1以上の不揮発メモリデバイスの各々について、OP率は、下記の(a)、(b)及び(c)のうちの少なくとも2つに基づいて決定された比率であって、ユーザ容量が大きい程に小さい値となる、
    (a)ユーザ容量、
    (b)更新領域の容量である更新容量、及び、
    (c)前記ユーザ領域と前記更新領域とで構成された記憶領域の容量である物理容量、
    請求項1記載のストレージシステム。
  12. 前記プロセッサ部は、前記1以上の不揮発メモリデバイスの少なくとも1つについて、リソース使用率とユーザ容量とを含む現在状況と、ユーザ容量を変更したと仮定した場合のリソース使用率とユーザ容量とを含む予測状況とを表す情報の表示を実行し、
    前記プロセッサ部は、その表示に対して変更の指示を受けた場合に、前記1以上の不揮発メモリデバイスの各々について、ユーザ容量を変更する、
    請求項1記載のストレージシステム。
  13. それぞれが、不揮発メモリと、複数種類のリソースを含む複数のリソースとを有する、1以上の不揮発メモリデバイスの1以上のリソース使用率を取得し、
    前記1以上の不揮発メモリデバイスの各々について、前記不揮発メモリのうちの少なくとも一部が、データが書き込まれる記憶領域であるユーザ領域と、そのデータの更新データが書き込まれる記憶領域である更新領域とで構成されており、
    前記取得した1以上のリソース使用率のうちの少なくとも1つに基づき、前記1以上の不揮発メモリデバイスの各々について、ユーザ領域の容量であるユーザ容量を変更する、
    記憶制御方法。
  14. 不揮発メモリと、
    複数種類のリソースを含み、前記不揮発メモリに接続された複数のリソースと
    を有し、
    前記複数のリソースは、1以上のプロセッサを含むプロセッサ部を含み、
    前記不揮発メモリのうちの少なくとも一部が、データが書き込まれる記憶領域であるユーザ領域と、そのデータの更新データが書き込まれる記憶領域である更新領域とで構成されており、
    前記プロセッサ部は、前記ユーザ領域の容量であるユーザ容量を、1以上のリソース使用率のうちの少なくとも1つに基づく決定に従うユーザ容量に変更する、
    不揮発メモリデバイス。
JP2019500143A 2017-02-20 2017-02-20 ストレージシステム及び記憶制御方法 Active JP6681512B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2017/006034 WO2018150561A1 (ja) 2017-02-20 2017-02-20 ストレージシステム及び記憶制御方法

Publications (2)

Publication Number Publication Date
JPWO2018150561A1 true JPWO2018150561A1 (ja) 2019-04-25
JP6681512B2 JP6681512B2 (ja) 2020-04-15

Family

ID=63170141

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019500143A Active JP6681512B2 (ja) 2017-02-20 2017-02-20 ストレージシステム及び記憶制御方法

Country Status (4)

Country Link
US (1) US10838855B2 (ja)
JP (1) JP6681512B2 (ja)
CN (1) CN109964210B (ja)
WO (1) WO2018150561A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6878369B2 (ja) * 2018-09-03 2021-05-26 株式会社日立製作所 ボリューム配置管理装置、ボリューム配置管理方法、及びボリューム配置管理プログラム

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099320A1 (en) * 2009-10-23 2011-04-28 International Business Machines Corporation Solid State Drive with Adjustable Drive Life and Capacity
JP2014513356A (ja) * 2011-04-26 2014-05-29 エルエスアイ コーポレーション 不揮発性記憶のための可変オーバープロビジョニング
JP2016507816A (ja) * 2012-12-26 2016-03-10 ウェスタン デジタル テクノロジーズ インコーポレーテッド データストレージシステムのための動的オーバープロビジョニング
JP2016162397A (ja) * 2015-03-05 2016-09-05 富士通株式会社 ストレージ制御装置、制御システム及び制御プログラム
WO2016181528A1 (ja) * 2015-05-13 2016-11-17 株式会社日立製作所 ストレージ装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4083997B2 (ja) * 2001-04-16 2008-04-30 株式会社日立製作所 レンタルストレージのサービス方法、および、レンタルストレージシステム
KR100818797B1 (ko) 2006-10-19 2008-04-01 삼성전자주식회사 메모리 용량 조절 방법과 메모리 용량 조절 장치
US9183133B2 (en) 2007-11-28 2015-11-10 Seagate Technology Llc System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
CN102081575A (zh) * 2011-01-27 2011-06-01 北京深思洛克软件技术股份有限公司 虚拟磁盘存储空间的动态分配方法和装置
US9817768B2 (en) 2013-10-10 2017-11-14 Hitachi, Ltd. Storage system and data storing method
JP6444917B2 (ja) * 2016-03-08 2018-12-26 東芝メモリ株式会社 ストレージシステム、情報処理システムおよび制御方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110099320A1 (en) * 2009-10-23 2011-04-28 International Business Machines Corporation Solid State Drive with Adjustable Drive Life and Capacity
JP2014513356A (ja) * 2011-04-26 2014-05-29 エルエスアイ コーポレーション 不揮発性記憶のための可変オーバープロビジョニング
JP2016507816A (ja) * 2012-12-26 2016-03-10 ウェスタン デジタル テクノロジーズ インコーポレーテッド データストレージシステムのための動的オーバープロビジョニング
JP2016162397A (ja) * 2015-03-05 2016-09-05 富士通株式会社 ストレージ制御装置、制御システム及び制御プログラム
WO2016181528A1 (ja) * 2015-05-13 2016-11-17 株式会社日立製作所 ストレージ装置

Also Published As

Publication number Publication date
CN109964210B (zh) 2023-05-30
US20190196962A1 (en) 2019-06-27
CN109964210A (zh) 2019-07-02
US10838855B2 (en) 2020-11-17
WO2018150561A1 (ja) 2018-08-23
JP6681512B2 (ja) 2020-04-15

Similar Documents

Publication Publication Date Title
US11354235B1 (en) Memory controller for nonvolatile memory that tracks data write age and fulfills maintenance requests targeted to host-selected memory space subset
JP6802209B2 (ja) ストレージシステム
JP6527961B2 (ja) 計算機システム
JP6006431B2 (ja) ストレージシステムおよびデータ記憶方法
KR101612922B1 (ko) 메모리 시스템 및 메모리 시스템 관리 방법
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
US20180011642A1 (en) Storage unit
US20190361611A1 (en) Storage system
WO2016067328A1 (ja) 不揮発メモリデバイスを有するストレージ装置、及び、不揮発メモリデバイス
JP6507261B2 (ja) ストレージ装置、記録媒体、および記憶制御方法
WO2016135954A1 (ja) ストレージ装置および不揮発メモリデバイス
WO2015132877A1 (ja) 計算機およびメモリ制御方法
WO2018131127A1 (ja) ストレージ装置及び分散ストレージシステム
CN106557428B (zh) 数据存储设备的映射系统选择
WO2017077624A1 (ja) 不揮発メモリデバイス、及び、不揮発メモリデバイスを有するストレージ装置
US10049042B2 (en) Storage device, semiconductor memory device, and method for controlling same
JP2018160189A (ja) メモリシステム
JP2010237907A (ja) ストレージ装置および記録方法
JP6681512B2 (ja) ストレージシステム及び記憶制御方法
US20190004708A1 (en) Electronic device and data compression method thereof
US10915441B2 (en) Storage system having non-volatile memory device
JP6817340B2 (ja) 計算機
WO2018167890A1 (ja) 計算機システム及び管理方法
JP6696052B2 (ja) ストレージ装置及び記憶領域管理方法
JP7065928B2 (ja) ストレージシステム及びその制御方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190108

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200323

R150 Certificate of patent or registration of utility model

Ref document number: 6681512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150