JP2020095548A - 不揮発性メモリドライブを備えたシステム - Google Patents

不揮発性メモリドライブを備えたシステム Download PDF

Info

Publication number
JP2020095548A
JP2020095548A JP2018233912A JP2018233912A JP2020095548A JP 2020095548 A JP2020095548 A JP 2020095548A JP 2018233912 A JP2018233912 A JP 2018233912A JP 2018233912 A JP2018233912 A JP 2018233912A JP 2020095548 A JP2020095548 A JP 2020095548A
Authority
JP
Japan
Prior art keywords
nvm
drives
chunk
logical
drive
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.)
Pending
Application number
JP2018233912A
Other languages
English (en)
Inventor
幸弘 吉野
Yukihiro Yoshino
幸弘 吉野
純司 小川
Junji Ogawa
純司 小川
上原 剛
Takeshi Uehara
剛 上原
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 JP2018233912A priority Critical patent/JP2020095548A/ja
Priority to US16/564,115 priority patent/US11068180B2/en
Publication of JP2020095548A publication Critical patent/JP2020095548A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of 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/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/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • 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
    • 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
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】NVM(Non-Volatile Memory)ドライブのビットコストを改善する。【解決手段】一つ以上のNVMドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域に対するデータの入出力を行う上位システムが、当該記憶領域を管理し、且つ、当該記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理する。複数のチャンクの各々のチャンクサイズは同一であり、複数のチャンクの各々は、一つ以上の論理領域の各々の一部で構成される。複数のチャンクの各々は、一つ以上のNVMドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない。【選択図】図1

Description

本発明は、概して、不揮発性メモリドライブを備えたシステムでの記憶制御に関する。
NVM(Non-Volatile Memory)を有するNVMドライブとして、例えば、NAND型フラッシュメモリ(以下、FM)を搭載するFMドライブ(例えばSSD(Solid State Drive))が知られている。FMは、それぞれがデータの消去単位である複数の物理ブロックを有する。各物理ブロックは、それぞれがデータのI/O(Input/Output)単位である物理ページを有する。各物理ページは、上書き不可の領域であり、故に、各物理ブロックは、追書き領域(log-structured領域)である。このため、データが満杯の物理ブロックにデータを新たに書き込むためには、当該物理ブロックからデータを消去する必要がある。
特許文献1は、書き込みユニット単位でデータを非揮発性ソリッドステートストレージ装置に書き込むこと、及び、書き込みユニットのサイズは、非揮発性ソリッドステートストレージ装置における消去ブロックのサイズの整数倍であることを開示している。
特表2015−518987号公報
FMドライブは、一般に、リクラメーション処理を必要とする。リクラメーション処理とは、一つ以上の物理ブロックの各々から有効データを読み出し、読み出したデータを物理ブロック(例えば、移動元の物理ブロックよりも消去回数の少ない物理ブロック)へ移動し、移動元物理ブロックに対して消去処理を実行する処理である。リクラメーション処理により、空きの物理ブロックを増やすことができる。
リクラメーション処理を実施可能とするため、FMドライブにおいて、FMを構成する複数の物理ブロックに基づく物理領域は、通常、上位システムに公開される領域であるユーザ領域の他に、上位システムに公開されない領域である予備領域(オーバープロビジョニング領域)を含む。予備領域に属する物理ブロックは、一般に、リクラメーション処理において移動先とされ得る物理ブロック、或いは、無効データを格納している使用不可の物理ブロックである。
このため、FMドライブに実際に格納なデータの量は、物理領域の容量である物理容量から、予備領域の容量である予備容量を引いた容量(つまり、ユーザ領域の容量であるユーザ容量)以下に制限される。故に、ビットコストが低い。
この種の課題は、FM以外のNVMについてもあり得る。
一つ以上のNVMドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域に対するデータの入出力を行う上位システムが、当該記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理する。複数のチャンクの各々のチャンクサイズは同一である。複数のチャンクの各々は、一つ以上の論理領域の各々の一部で構成される。複数のチャンクの各々は、一つ以上のNVMドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない。
NVMドライブのビットコストが改善する。
実施例1の概要を示す。 実施例1の一比較例を示す。 実施例1に係るストレージシステムを含んだシステム全体の構成を示す。 ストレージシステムにおける記憶管理を示す。 記憶領域の更新の一例を模式的に示す。 ストレージコントローラのメモリに格納されるプログラム及びテーブルの一例を示す。 FMコントローラのメモリに格納されるプログラム及びテーブルの一例を示す。 プール管理テーブルの構成を示す。 チャンク管理テーブルの構成を示す。 FMサイズ管理テーブルの構成を示す。 記憶領域の更新として行われるチャンク間のデータ再配置の一例と、チャンクと物理ブロックとの関係の一例とを示す。 実施例1により解決される課題の一例を示す。 実施例1において行われるデータ復元の一例を示す。 プールチャンクサイズプログラムが行う処理のフローを示す。 グループチャンクサイズプログラムが行う処理のフローを示す。 停止指示プログラムが行う処理のフローを示す。 実施例2におけるチャンクと物理ブロックとの関係の一例を示す。 実施例3におけるチャンクサイズ管理の一例を示す。
以下の説明では、「インターフェース装置」は、一つ以上のインターフェースデバイスでよい。当該一つ以上のインターフェースデバイスは、下記のうちの少なくとも一つでよい。
・一つ以上のI/O(Input/Output)インターフェースデバイス。I/O(Input/Output)インターフェースデバイスは、I/Oデバイスと遠隔の表示用計算機とのうちの少なくとも一つに対するインターフェースデバイスである。表示用計算機に対するI/Oインターフェースデバイスは、通信インターフェースデバイスでよい。少なくとも一つのI/Oデバイスは、ユーザインターフェースデバイス、例えば、キーボード及びポインティングデバイスのような入力デバイスと、表示デバイスのような出力デバイスとのうちのいずれでもよい。
・一つ以上の通信インターフェースデバイス。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「メモリ」は、NVMドライブ内のNVMと異なるメモリであって、一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
また、以下の説明では、「永続記憶デバイス」は、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)であり、具体的には、例えば、HDD(Hard Disk Drive)及びNVMドライブのうち少なくともNVMドライブである。
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスである。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスであるが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし、入力に対する出力を発生するニューラルネットワークのような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び/又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ(或いは、そのプロセッサを有するコントローラのようなデバイス)とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な(例えば非一時的な)記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
また、以下の説明では、「ストレージシステム」は、1以上の物理的なストレージ装置を含む。少なくとも1つの物理的なストレージ装置は、汎用的な物理計算機でもよい。少なくとも1つの物理的なストレージ装置は、仮想的な計算機(例えばVM(Virtual Machine))を実行してもよいし、SDx(Software-Defined anything)を実現するためのソフトウェアを実行してもよい。SDxとしては、例えば、SDS(Software Defined Storage)(仮想的なストレージ装置の一例)又はSDDC(Software-defined Datacenter)を採用することができる。
また、以下の説明では、同種の要素を区別しないで説明する場合は、その要素の参照符号(例えば、FMドライブ180F)、又は、参照符号の共通部分(例えば、永続記憶デバイス180)を使用することがある。同種の要素を区別して説明する場合は、その要素のIDを参照符号の末尾に付加(例えば、FMドライブ180F−1、FMドライブ180F−2)、又は、その要素の参照符号(例えば、FMドライブ180F、HDD180H)を使用することがある。
また、以下の説明では、ID(識別情報)として番号が使用されるが、番号に代えて又は加えて他種の情報(例えば、名称)が使用されてもよい。
以下、本発明の幾つかの実施例を図面に基づいて説明する。なお、以下の実施例では、NVMの一例として、FM(特にNAND型のフラッシュメモリ)が採用されており、故に、NVMドライブの一例として、FMドライブが採用されるが、本発明は、FM以外の記憶素子を有する場合にも適用することができる。また、以下の説明では、混同を避けるために、ストレージシステムに対する要求を「要求」と言い、FMドライブに対する要求を「指示」と言い、FMに対する要求を「指示」と言うことがある。
図1は、実施例1の概要を示す。
実施例1では、一つ以上のFMドライブ180Fと、一つ以上のFMドライブ180Fの上位システムとを備えたシステムとして、ストレージシステムが採用される。このため、上位システムの一例として、一つ以上のFMドライブ180Fに対してデータの入出力を行うストレージコントローラ120が採用される。各FMドライブ180Fは、複数の物理ブロック160で構成された物理領域220としてFMを有する。各物理ブロック160は、複数の物理ページ170を有する。物理ブロック160が消去単位であり、物理ページ170がI/O単位である。
FMドライブ180F内でリクラメーション処理のようなデータ移動処理が不要となり、結果として、FMドライブ180F内の予備領域が開放、すなわち、下記の(x)又は(y)が採用される。
(x)FMドライブ180Fの論理容量(FMドライブ180Fが提供する論理領域210の容量)は、ユーザ容量(ユーザ領域の容量)に加えて予備容量(予備領域の容量)にも基づいている。別の言い方をすれば、ユーザ領域の他に予備領域も、FMドライブ180Fの上位システムの一例であるストレージコントローラ120に公開される。
(y)FMドライブ180Fの予備容量はゼロである。すなわち、FMドライブ180Fが予備領域を有さず、FMドライブ180Fの物理領域220の全域がユーザ領域である。
一つ以上のFMドライブ180Fからそれぞれ一つ以上の論理領域210が、ストレージコントローラ120に提供される。各FMドライブ180Fについて、論理領域210は、連続した論理アドレス範囲(空間)に相当する。論理アドレスは、例えばLBA(Logical Block Address)である。ストレージコントローラ120は、それら一つ以上の論理領域210で構成された記憶領域140を管理し、且つ、当該記憶領域140を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンク130を管理する。複数のチャンク130の各々のチャンクサイズは同一である。複数のチャンク130の各々は、一つ以上の論理領域210の各々の一部で構成される。複数のチャンク130の各々は、一つ以上のFMドライブ180Fの各々について、一つ以上の物理ブロック160がそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロック190の各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロック190の少なくとも一部を含まない(ここでいう「又は一部」に関する詳細は、実施例2において説明される)。
これにより、記憶領域140内のデータが更新される場合、当該データを格納している第1のチャンク(例えばチャンク130−0)とは別の第2のチャンク(例えば次のチャンク130−1)に更新後のデータが書き込まれる。結果として、更新前のデータを格納している第1のチャンクの基になっている全物理ブロック160内の全データは無効データとなり、更新後のデータが格納された第2のチャンクの基になっている全物理ブロック160内の全データは有効データである。つまり、記憶領域140の基になっているいずれのFMドライブ180Fにおいても、物理ブロック160間で有効データを移動する必要が生じない。別の言い方をすれば、ストレージコントローラ120がチャンク130間でデータ再配置を行うと、配下のFMドライブ180内で物理ブロック160間のデータ再配置が完了するように、複数のチャンク130が構成される。故に、ユーザ容量の他に予備容量をも基にした論理容量を実現すること、或いは、予備容量をゼロにすることが可能である。このため、図1に例示のように、各FMドライブ180Fから、物理領域220の容量である物理容量(例えば、ユーザ容量の他に予備容量を含んだ、又は、予備容量がゼロの物理容量)に等しい論理容量の論理領域210が提供され、結果として、NVMドライブのビットコストが改善する。
チャンクサイズは、複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズに基づいている。具体的には、例えば、複数のFMドライブ180において物理ブロックサイズが同一とは限らず(例えば、FMドライブ180F−1の物理ブロックサイズはFMドライブ180F−2及び180F−3の物理ブロックサイズよりも小さく)、チャンクサイズは、複数の物理ブロックサイズの最小公倍数とNVMドライブの数との積のN倍(Nは自然数)である。これにより、記憶領域140の基になるいずれのFMドライブ180Fについても、論理領域210のうち同一の物理ブロック160に対応した範囲である論理ブロック190が、異なる二つ以上のチャンク130から共有されることがない。このため、チャンク130内のデータの更新のためにチャンク130間のデータ再配置がストレージコントローラ120により行われても、再配置元のチャンク130の基になる物理ブロック160にも再配置先のチャンク130の基になる物理ブロック160にも有効データと無効データの混在が生じること(つまり、リクラメーション処理な必要な状況が生じること)を避けることができる。
なお、上述の特許文献1は、予備領域を開放することや上書き不可とされたチャンクを管理することに加えて、記憶領域140が複数のFMドライブ180Fに跨ることは開示も示唆もされていない。
そのため、図2が示す一比較例によれば、各FMドライブ18Fに、ストレージコントローラ12のような上位システムに公開不可の予備領域が必要である。このため、各FMドライブ18Fについて、提供される論理領域21の容量は、物理容量(物理領域22の容量)よりも少ない容量、具体的には、物理容量から予備容量を引いた容量である。結果として、記憶領域14の容量も少なく、故に、ビットコストが低い。
また、チャンクが上書き不可として管理されなかったり、複数のFMドライブ18Fにそれぞれ対応した複数の物理ブロックサイズが考慮されなかったりすると、記憶領域14の基になる物理ブロック16において有効データと無効データ(有効データを格納した物理ページ17と無効データを格納した物理ページ17)が混在することになり、結果として、リクラメーション処理が必要である。このため、比較例では、予備領域が必要であり、本実施例と異なり予備領域を開放することができない。
以下、本実施例を詳細に説明する。なお、本実施例では、記憶領域140は、追書き領域であるとする(このため、複数のチャンク130がシーケンシャルに使用されるとする)。「論理ブロック」は、当該論理ブロックに対応した物理ブロックを構成する複数の物理ページにそれぞれ対応した複数の論理ページで構成されてよい。また、各論理アドレス(例えば各論理ページ)について、「有効データ」とは、或る論理アドレスについて最新のデータを意味し、「無効データ」とは、有効データを更新後のデータとする更新前のデータを意味する。有効データを格納した物理ページは「有効ページ」と呼ばれ、「無効データ」を格納したページは「無効ページ」と呼ばれてよい。
図3は、実施例1に係るストレージシステムを含んだシステム全体の構成を示す。
ストレージシステム100は、SAN(Storage Area Network)101のような第1の通信ネットワークを介して、1又は複数のホストシステム102と接続されている。また、ストレージシステム100は、図示しない第2の通信ネットワークを介して管理システム103と接続されている。本実施例では、ホストシステム102及び管理システム103の各々は、プロセッサやメモリを有する物理計算機であるが、物理計算機により所定のソフトウェアが実行されることで実現されたシステムでもよい。ホストシステム102は、ストレージシステム100にI/O要求を送信する。管理システム103は、ストレージシステム100を管理するシステムである。第1の通信ネットワークと第2の通信ネットワークは、異なるネットワークでもよいし同一のネットワークでもよい。
ストレージシステム100は、複数の永続記憶デバイス180と、複数の永続記憶デバイス180に対してデータを入出力するストレージコントローラ120とを有する。複数の永続記憶デバイス180は、複数のFMドライブ180Fを含み、更に別種の永続記憶デバイス、例えば複数のHDD180Hを含んでもよい。
ストレージコントローラ120は、フロントエンドI/F(インターフェースデバイス)116、バックエンドI/F113、管理I/F118、メモリ111、プロセッサ112及びそれらに接続された内部バス119を有する。フロントエンドI/F116、バックエンドI/F113及び管理I/F118が、インターフェース装置の一例である。
フロントエンドI/F116は、ストレージシステム100とSAN101を接続するためのインターフェースデバイスであり、Ethernet(登録商標)やFC(Fibre Channel)等のプロトコルにより、SAN101を介して要求やデータの転送を行う。
バックエンドI/F113は、永続記憶デバイス180と接続するためのインターフェースデバイスであり、SAS(Serial Attached SCSI)やFC等のプロトコルにより各種指示やデータの転送を行う。
管理I/F118は、管理システム103と接続するためのインターフェースデバイスであり、TCP/IP等のプロトコルにより各種要求やデータの転送を行う。
メモリ111は、プログラムの格納やデータの一時的な格納を行うコンポーネントであり、ホストシステム102から受信したデータをライトキャッシュとして一時格納する。
プロセッサ112は、ストレージシステム100の制御を行うコンポーネントであり、メモリ111内のプログラムを実行することで、ストレージシステム100内の各種データ転送を制御する。
FMドライブ180Fは、内部にFMを搭載しており、上位システム(ここではストレージコントローラ120)からの指示に応じてデータをFMに書き込む、又はデータをFMから読み出す。
FMドライブ180Fは、FM155と、FM155へのデータの入出力を制御するFMコントローラ150とを有する。
FM155は、一つ以上のFMチップで構成されていてよい。FMチップは、複数の物理ブロック160で構成され、各物理ブロック160は、複数の物理ページ170で構成されている。物理ページ単位でデータのI/O(ライト及びリード)が行われ、物理ブロック単位でデータが消去される。
FMコントローラ150は、ストレージコントローラ120のような上位システムに接続されるI/F151と、FM155に接続されるI/F152と、メモリ153と、I/F151、I/F152及びメモリ153に接続されたプロセッサ154とを有する。プロセッサ154は、論理領域210をストレージコントローラ120に提供する。論理領域210は、論理アドレス範囲と言い換えられてもよい。プロセッサ154は、論理アドレスと物理アドレスの対応関係を管理する(例えば、メモリ153が、論理アドレスと物理アドレスの対応関係を表す後述のアドレス変換テーブルを格納する)。プロセッサ154は、ストレージコントローラ120からのI/O指示で指定されている論理アドレスに対応した物理アドレスが属する物理ページ170を特定し、特定した物理ページ170に対してI/Oを行う。論理アドレスは、例えば、LBA(Logical Block Address)であるが、LBAに代えて又は加えて、論理ブロック番号又は論理ページ番号を含んでよい。物理アドレスは、例えば、PBA(Physical Block Address)であるが、PBAに代えて又は加えて、物理ブロック番号又は物理ページ番号を含んでよい。
図4は、ストレージシステム100における記憶管理を示す。
複数のRAID(Redundant Array of Independent (or Inexpensive) Disks)グループ400がある。各RAIDグループ400は、複数のFMドライブ180Fで構成される。ストレージコントローラ120は、RAIDグループ400毎に、当該RAIDグループ400に基づく記憶領域140を管理する。従って、RAIDグループ400毎に、当該RAIDグループ400に基づく記憶領域140が複数のチャンク130に区切られる。各RAIDグループ400において、各チャンク130は、当該RAIDグループ400を構成する複数のFMドライブ180Fに跨るため、一つ以上のストライプに相当してよい。「ストライプ」とは、記憶領域140(ここでは冗長構成領域)を構成する複数の論理領域210(複数のFMドライブ180Fがそれぞれ提供した複数の論理領域210)にそれぞれ存在する複数のストリップ(例えば同一論理アドレスの複数のストリップ)で構成された記憶領域部分である。各論理領域210について、「ストリップ」とは、当該論理領域210の一部である。
一つ以上の仮想プール450が、ストレージコントローラ120により管理される。仮想プール450に、一つ以上のRAIDグループ400が属する。言い換えれば、複数のRAIDグループ400の各々が、いずれかの仮想プール450に属する。
ストレージコントローラ120によりホストシステム102に一つ以上の論理ボリューム460が提供される。各論理ボリューム460は、仮想的な論理ボリューム、例えば、Thin Provisioning技術に従う論理ボリュームである。論理ボリューム460を指定したライト要求をストレージコントローラ120が受け付けた場合、当該論理ボリュームのライト先アドレス(ライト要求で指定された論理アドレス)に従う領域を含んだ範囲に、チャンク130が割り当てられる。なお、チャンクサイズは、仮想プール450毎に同一である(すなわち、一つの仮想プール450に存在する全てのチャンク130のチャンクサイズは同一である)。本実施例では、仮想プール450が論理ボリューム460に関連付けられ、当該論理ボリューム460には、当該論理ボリューム460に関連付けられている仮想プール450からチャンク130が割り当てられるためである)。
図5は、記憶領域140の更新の一例を模式的に示す。なお、図5を参照した説明では、チャンク単位のデータを特に「チャンクデータ」と言う。
チャンク130は、追書き領域として管理されている記憶領域140に対するデータ入出力の単位である。
先頭から末尾にかけて、チャンク130−1、チャンク130−2、…、チャンク130−(N−1)、チャンク130−Nが、並んでいるとする。チャンク130−0〜チャンク130−2にデータが格納されており(別の言い方をすれば、チャンク130−0〜チャンク130−2の各々はいずれかの論理ボリューム460に割当て済みであり)、チャンク130−3以降が空きであるとする。ストレージコントローラ120は、論理ボリューム460の論理アドレスとチャンク130の論理アドレスとの対応関係、及び、空きのチャンク130の論理アドレスを管理する。
ここで、ストレージコントローラ120が、チャンク130−0に格納されているチャンクデータの更新が必要なライト要求を受け付けたとする(S501)。この場合、ストレージコントローラ120は、チャンク130−0からメモリ111にチャンクデータを読み出し(S502)、当該チャンクデータに、受け付けたライト要求に従うデータを上書きする(S503)。ストレージコントローラ120は、上書き後(更新後)のチャンクデータを、先頭の空きチャンク130−3に書き込み(S504)、且つ、更新前のチャンク130−0を無効化する(S505)。
上書き後のチャンクデータはメモリ111に格納されている間に、チャンク130−0のチャンクデータの更新が必要なライト要求をストレージコントローラ120が新たに受け付けた場合、ストレージコントローラ120は、上書き後のチャンクデータを空きチャンク130−3に書き込む前に、メモリ111上の上書き後のチャンクデータに、当該新たに受け付けたライト要求に従うデータを上書きしてもよい。言い換えれば、上書き(更新)の都度にチャンク単位のいわゆるリードモディファイライトが行われる必要はなく、同一のチャンクデータについて2回以上の上書きが行われた後に、最終上書き後のチャンクデータが空きのチャンクに書き込まれてもよい。
また、チャンク群(連続した又は離散した一つ以上のチャンク130)は、消去単位でもよい。具体的には、例えば、ストレージコントローラ120は、無効化されたチャンク130−0に対して、チャンク単位のデータ消去を行ってよい。それにより、空きのチャンク130を増やすことができる。また、チャンク130−0に対するデータ消去により、チャンク130−0に含まれている全論理ブロックに対応した全物理ブロックの各々には物理ブロック単位のデータ消去が行われることになる。
図6は、ストレージコントローラ120のメモリ111に格納されるプログラム及びテーブルの一例を示す。
メモリ111が、仮想プール450毎のチャンクサイズを決定するプールチャンクサイズプログラム601と、RAIDグループ400毎のチャンクサイズを決定するグループチャンクサイズプログラム602と、リクラメーション処理のようなデータ移動処理の停止指示を送信する停止指示プログラム603と、データ入出力を制御するI/Oプログラム604とを格納する。また、メモリ111が、仮想プール450に関する情報を保持するプール管理テーブル611と、チャンク130に関する情報を保持するチャンク管理テーブル612とを格納する。
図7は、FMコントローラ150のメモリ153に格納されるプログラム及びテーブルの一例を示す。
メモリ153が、物理ブロックサイズを通知するブロックサイズ通知プログラム701と、アドレス変換テーブル712を基に論理アドレスと物理アドレス間の変換を行うことを含むデータ入出力を行うI/Oプログラム702とを格納する。また、メモリ153が、FM155のサイズに関する情報を保持するFMサイズ管理テーブル711と、論理アドレスと物理アドレスの対応関係を示す情報を保持するアドレス変換テーブル712とを格納する。
図8は、プール管理テーブル611の構成を示す。
プール管理テーブル611は、例えば、チャンク130毎にエントリを有する。各エントリが、プール#801、RG#802、チャンク#803、ステータス804及び割当先805といった情報を格納する。以下、一つのチャンク130を例に取る(図8の説明において「対象チャンク130」)。
プール#801は、対象チャンクを含んだ仮想プール450の識別番号を示す。RG#802は、対象チャンクの基になっているRAIDグループ400の識別番号を示す(「RG」は、RAIDグループの略である)。チャンク#803は、対象チャンク130の識別番号を示す。
ステータス804は、対象チャンクのステータスを示す。“有効”は、対象チャンク130が最新のデータを含んだチャンクであることを意味し、“無効”は、対象チャンク130が無効化されたチャンクであることを意味し、“空き”は、対象チャンク130が空きのチャンクであることを意味する。
割当先805は、対象チャンク130の割当先を示す情報(例えば、VOL#(論理ボリューム460の識別番号)とLBA(論理ボリューム460のLBA)との組合せ)である。対象チャンク130のステータス804が“無効”又は“空き”の場合、対象チャンク130は論理ボリューム460に割り当てられていない。
図9は、チャンク管理テーブル612の構成を示す。
チャンク管理テーブル612は、例えば、RAIDグループ400毎にエントリを有する。各エントリが、RG#901、プール#902、ドライブ#903、ブロックサイズ(「BS」と表記)904、Lcm_B905、ドライブ数(「n」と表記)906、チャンクサイズ係数(「α」と表記)907、チャンクサイズ(「CS」と表記)908、物理容量(「PS」と表記)909、及び、チャンク数(「c」と表記)910といった情報を格納する。以下、一つのRAIDグループ400を例に取る(図9の説明において「対象RAIDグループ400」)。
RG#901は、対象RAIDグループ400の識別番号を示す。プール#902は、対象RAIDグループ400が属する仮想プール450の識別番号を示す。
ドライブ#903は、対象RAIDグループ400に含まれる複数のFMドライブ180Fの各々の識別番号を示す。
ブロックサイズ904は、対象RAIDグループ400に含まれる複数のFMドライブ180Fの各々について当該FMドライブ180Fに対応した物理ブロックサイズを示す。
Lcm_B905は、対象RAIDグループ400に含まれる複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズの最小公倍数を示す。
ドライブ数906は、対象RAIDグループ400が属する仮想プール450に属するFMドライブ180Fの数を示す。
チャンクサイズ係数907は、対象RAIDグループ400が属する仮想プール450についてチャンクサイズの決定に使用された係数を示す。
チャンクサイズ908は、対象RAIDグループ400が属する仮想プール450について決定されたチャンクサイズを示す。
物理容量909は、対象RAIDグループ400に含まれる複数のFMドライブ180Fの各々について当該FMドライブ180Fの物理容量を示す。
チャンク数910は、対象RAIDグループ400に基づく記憶領域140に含まれるチャンク130の数を示す。
図10は、FMサイズ管理テーブル711の構成を示す。
FMサイズ管理テーブル711は、物理ブロックサイズを示す情報である物理ブロックサイズ(「BS」と表記)1001、物理容量(物理領域220の容量)を示す情報である物理容量(「PS」と表記)1002、及び、論理容量(論理領域210の容量)を示す情報である論理容量(「LS」と表記)1003を格納する。
なお、図10の例によれば、論理容量(6TB)は物理容量(10TB)から予備容量(4TB)を引いた値である。これは、このテーブル711を保持するFMドライブ180Fが、予備容量(予備領域)を公開する機能を有しているものの、本実施例に係るストレージコントローラ120のような機能を有さない上位システムにも適用可能とするため(つまり汎用性の向上のため)予備領域を有しているからである。本実施例では、例えば、停止指示プログラム603が、FMドライブ180Fに対して、予備容量を含む物理容量の問合せ(公開指示)をFMドライブ180Fに送信し、FMドライブ180F(FMコントローラ150)が、その問合せに応答して、予備容量を含む物理容量“10TB”(=論理容量)を停止指示プログラム603に回答する(つまり、予備容量(予備領域)を公開する)。
本実施例では、予備容量を有しないFMドライブ180Fが採用されてよい。具体的には、図10において、物理容量1002と論理容量1003の各々の値が同じであるFMドライブ180Fが採用されてよい。
図11は、記憶領域140の更新として行われるチャンク130間のデータ再配置の一例と、チャンク130と物理ブロック160との関係の一例とを示す。
以下、説明の簡単化のため、全FMドライブ180Fにおいて物理ページサイズは同一であり、故に、物理ブロックサイズは、物理ブロック160に含まれる物理ページ170の数に依存するものとする。また、図11(及び、図12、図13、図17〜図19)において、物理ページ170間の比較的大きい境界は、物理ブロック160間の境界を意味する。従って、図11の例によれば、FMドライブ180F−10及び180F−11の各々の物理ブロックサイズは“6”(物理ページ六つ分)であり、FMドライブ180F−12及び180F−13の各々の物理ブロックサイズは“4”(物理ページ四つ分)である。
また、物理ページ170内の番号は、チャンク130におけるLBA(当該チャンク130が割り当てられている領域(論理ボリューム460における領域)のLBA)に相当する。図11によれば、チャンク130−10のLBA“1”に対応したデータは、RAIDグループ400を構成するFMドライブ180F−10〜180F−13に書き込まれる。
図11によれば、チャンク130−10に書き込まれたデータのいずれかが更新される場合、I/Oプログラム604が、チャンク130−10からデータを読み出し、読み出されたデータを更新し、更新後のデータを先頭の空きチャンク130−11に書き込む(チャンク単位でのチャンク130間のデータ再配置)。
FMドライブ180F−10〜180F−13にそれぞれ対応した四つの物理ブロックサイズを基にチャンクサイズが最適化されている。具体的には、チャンクサイズは、物理ブロックサイズ“4”と“6”との最小公倍数である“12”と、FMドライブ180Fの数“4”との積のα倍(αは係数であり自然数、ここではα=1)であるため、チャンクサイズは“48”である。このようにしてチャンクサイズが決定されるため、各チャンク130は、他のチャンク130と物理ブロック160を共有しない。このため、各チャンク130について、当該チャンク130の基になる各物理ブロックに、有効データと無効データが混在することがなく、故に、リクラメーション処理を不要とすることができる。
複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズに基づいてチャンクサイズを決定するために、本実施例では、当該複数のFMドライブ180Fの各々が、物理ブロックサイズを上位システムに提供するインターフェースとしてブロックサイズ通知プログラム701を有し、ストレージコントローラ120が、後に詳述するプールチャンクサイズプログラム601及びグループチャンクサイズプログラム602を有する。仮想プール450がない場合、プールチャンクサイズプログラム601は無くてもよい。また、RAIDグループ400とは異なるドライブグループ(複数のFMドライブ180F)が設けられてもよく、グループチャンクサイズプログラム602は、そのようなドライブグループについてもチャンクサイズを決定することができる。
なお、複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズは、例えば、管理システム103により管理されていて、FMドライブ180Fに代えて管理システム103からストレージコントローラ120に物理ブロックサイズが通知されてもよい。また、管理システム103が、複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズを基にチャンクサイズを決定し、決定したチャンクサイズをストレージコントローラ120に通知してもよい。
上述したように、本実施例によれば、各FMドライブ180Fにおいて、リクラメーション処理は不要になるが、リクラメーション処理は、物理ブロック160間のデータ移動処理の一例である。当該データ移動処理の別の例として、例えば、図12に例示するようい、或る物理ページ170についてリードエラー(所定回数リードリトライが行われてもデータを読み出せないこと)が生じた場合、当該物理ページ170を含んだ物理ブロック160のうち残りの物理ページ170からデータを別の物理ブロック160に移動する処理が走ることがある。
また、リフレッシュ処理が走ることもある。リフレッシュ処理とは、FMのデータリテンション特性に起因して行われる処理であって、エラー訂正可能にデータを保持するためにデータを物理ブロックから(エラー訂正した上で)別の物理ブロックに定期的に移動する処理である。
このようなデータ移動処理が行われると、或るチャンク内のデータの一部が別のチャンクに存在することなり、チャンク単位のI/Oを維持することができない。
そこで、本実施例では、図13に例示するように、物理ブロック160間の一切のデータ移動処理を停止する(禁止する)ことの指示である停止指示を、ストレージコントローラ120が、各FMドライブ180Fに送信する。具体的には、例えば、ストレージコントローラ120では上述した停止指示プログラム603が実行される。停止指示プログラム603が、各FMドライブ180Fに停止指示を送信する。FMドライブ180FのI/Oプログラム702は、停止指示に応答して、リクラメーション処理に限らず物理ブロック160間の一切のデータ移動処理を行わないようにする。これにより、チャンク単位のI/Oを維持することができる。また、FMドライブ180Fにおいてデータ移動処理が行われないので、ストレージシステム100全体としてのI/O性能の向上が期待できる。
リフレッシュ処理のような物理ブロック160間のデータ移動処理が一切停止すると、一部のデータについて、ECC(Error Correcting Code)を用いて訂正することは不可能な状態、つまり、アンコレクタブルなエラーが生じる可能性がある(符号1301参照)。しかし、本実施例では、各チャンク130は、いずれかのRAIDグループ400に基づいているため、I/Oプログラム604は、チャンク130間のデータ再配置の対象となるデータのうちの一部のデータにアンコレクタブルなエラーが生じている場合(すなわち、いずれかのFMドライブ180Fから読み出されたデータが欠損している場合)、当該データ再配置の際にパリティを用いて当該一部のデータ(欠損しているデータ)を復元する(符号1302参照)。
以下、チャンクサイズ決定に関する処理の詳細を説明する。
図14は、プールチャンクサイズプログラム601が行う処理のフローを示す。プールチャンクサイズプログラム601は、例えば、仮想プール450の構成時(例えば、管理システム103から仮想プール450を構成することの要求を受けた時)に起動される。図14の説明では、構成された仮想プール450を「対象仮想プール450」と言う。
プールチャンクサイズプログラム601は、対象仮想プール450に属する複数のRAIDグループ400の各々について、グループチャンクサイズプログラム602を起動することで当該RAIDグループ400のチャンクサイズを収集する(S1401)。なお、少なくとも一つのRAIDグループ400についてチャンクサイズの収集が不可の場合(S1402:No)、プールチャンクサイズプログラム601は、管理システム103にエラーを通知する(S1403)。
対象仮想プール450に属する各RAIDグループ400についてチャンクサイズが収集された場合(S1402:Yes)、プールチャンクサイズプログラム601は、チャンクサイズ=Lcm_R*m*αを算出、すなわち、Lcm_Rとmとαとの積を、対象仮想プール450のチャンクサイズとして決定する(S1404)。「Lcm_R」は、対象仮想プール450に属する複数のRAIDグループ400についてそれぞれS1401で収集された複数のチャンクサイズの最小公倍数である。「m」は、対象仮想プール450に属するRAIDグループ400の数である。「α」は、任意の自然数であり、係数である。
プールチャンクサイズプログラム601は、チャンク管理テーブル612に、対象仮想プール450について、チャンクサイズ908(S1404で決定されたチャンクサイズを示す情報)、及び、チャンクサイズ係数907(S1404で使用された係数αとしての値)を記録する(S1405)。
プールチャンクサイズプログラム601は、対象仮想プール450に属する複数のRAIDグループ400の各々について、停止指示プログラム603を起動することで当該RAIDグループ400に属する各FMドライブ180Fにおいてデータ移動処理が行われないようにする(S1406)。
プールチャンクサイズプログラム601は、プール管理テーブル611に、対象仮想プール450について、プール#801(対象仮想プール450の識別番号を示す情報)、RG#802(対象仮想プール450に属するRAIDグループ400毎の識別番号を示す情報)、チャンク#803(対象仮想プール450に属する各RAIDグループ400について各チャンク130の識別番号を示す情報)、ステータス804(対象仮想プール450に属する各RAIDグループ400について各チャンク130のステータス(初期は“空き”)を示す情報)、及び、割当先805(対象仮想プール450に属する各RAIDグループ400について各チャンク130の割当先(初期は“−”)を示す情報)を記録する(S1407)。
プールチャンクサイズプログラム601は、対象仮想プール450の構成完了を管理システム103に通知する(S1408)。
図15は、グループチャンクサイズプログラム602が行う処理のフローを示す。図15の説明では、一つのRAIDグループ400を例に取る(図15の説明において「対象RAIDグループ400」)。
グループチャンクサイズプログラム602は、対象RAIDグループ400に属する複数のFMドライブ180Fの各々について、下記を行う。一つのFMドライブ180Fを例に取る(図15の説明において「対象FMドライブ180F」)。
・グループチャンクサイズプログラム602は、対象FMドライブ180Fから物理ブロックサイズを収集する(S1501)。具体的には、例えば、グループチャンクサイズプログラム602は、対象FMドライブ180Fにブロックサイズ問合せを送信し、対象FMドライブ180Fのブロックサイズ通知プログラム701から、対象FMドライブ180FのFMサイズ管理テーブル711に記録されている物理ブロックサイズ1001を示す回答を受ける。
・物理ブロックサイズが収集された場合(S1502:Yes)、グループチャンクサイズプログラム602は、チャンク管理テーブル612に、対象RAIDグループ400に属する対象FMドライブ180Fについて、ブロックサイズ904(S1501で収集された物理ブロックサイズを示す情報)を記録する(S1504)。
対象FMドライブ180Fについて物理ブロックサイズの収集が不可の場合(S1502:No)、グループチャンクサイズプログラム602は、プールチャンクサイズプログラム601にチャンクサイズの収集不可を報告する(S1503)。
グループチャンクサイズプログラム602は、チャンクサイズ=Lcm_B*nを算出、すなわち、Lcm_Bとnとの積を、対象RAIDグループ400のチャンクサイズとして決定する(S1505)。「Lcm_B」は、対象RAIDグループ400に属する複数のFMドライブ180FについてそれぞれS1501で収集された複数の物理ブロックサイズの最小公倍数である。「n」は、対象RAIDグループ400に属するFMドライブ180Fの数である。
グループチャンクサイズプログラム602は、対象RAIDグループ400についてS1505で決定されたチャンクサイズをプールチャンクサイズプログラム601に通知する(S1506)。
図16は、停止指示プログラム603が行う処理のフローを示す。図16の説明では、一つのRAIDグループ400を例に取る(図16の説明において「対象RAIDグループ400」)。
停止指示プログラム603は、対象RAIDグループ400に属する複数のFMドライブ180Fの各々について、下記を行う。一つのFMドライブ180Fを例に取る(図16の説明において「対象FMドライブ180F」)。
・停止指示プログラム603は、対象FMドライブ180Fに、データ移動処理(例えばリクラメーション処理)の停止指示を送信する(S1601)。その停止指示に応答して、対象FMドライブ180Fのデータ移動機能(物理ブロック160間のデータ移動処理を行う機能)を停止する。
・停止指示プログラム603は、論理容量、具体的には、予備容量を含む物理容量を対象FMドライブ180Fから取得する(S1602)。具体的には、停止指示プログラム603は、予備容量を含む物理容量の問合せ(公開指示)を対象FMドライブ180Fに送信する。その問合せに応答して対象FMドライブ180Fが、予備容量を含む物理容量を論理容量として停止指示プログラム603に回答する。
・停止指示プログラム603は、チャンク管理テーブル612に、対象FMドライブ180Fについて、物理容量909(S1602で取得された物理容量を示す情報)を記録する(S1603)。
停止指示プログラム603は、対象RAIDグループ400に属する複数のFMドライブ180Fにそれぞれ対応した複数の物理容量(論理容量)のうちの最小の物理容量を特定する(S1604)。
停止指示プログラム603は、チャンク数=(PSmin*n)/CSxを算出、つまり、対象RAIDグループ400についてのチャンク数を算出する(S1605)。「PSmin」は、S1604で特定された最小の物理容量である。「n」は、対象RAIDグループ400に属するFMドライブ180Fの数である。「CSx」は、対象RAIDグループ400が属する仮想プール450について決定されたチャンクサイズ(図10のチャンクサイズ908が示すチャンクサイズ)である。
停止指示プログラム603は、チャンク管理テーブル612に、対象RAIDグループ400について、チャンク数910(S1605で算出されたチャンク数を示す情報)を記録する(S1606)。
図14〜図16の説明によれば、例えば以下のことが言える。
ストレージコントローラ120は、下記の(a)乃至(c)を行う。
(a)複数のFMドライブ180Fからそれぞれ複数の物理ブロックサイズを収集すること。
(b)当該収集された複数の物理ブロックサイズを基にチャンクサイズを決定すること。
(c)複数のFMドライブ180Fにそれぞれ対応した複数の論理容量(例えば予備容量を含んだ物理容量)のうちの最小の論理容量と、FMドライブ180Fの数と、決定されたチャンクサイズとに基づいて、チャンクの数を決めること。
なお、ここでは、複数のRAIDグループ400(RAIDグループ400はドライブグループの一例)が同一の仮想プール450(プールの一例)に属しているため、下記が採用される。
・当該複数のRAIDグループ400の各々について、(a)乃至(c)が行われる。
・複数のRAIDグループ400の各々について、(c)において、上記決定されたチャンクサイズは、複数のRAIDグループ400についてそれぞれ決定された複数のチャンクサイズに基づき当該仮想プール450について決定されたチャンクサイズである。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図17は、実施例2におけるチャンク130と物理ブロック160との関係の一例を示す。
実施例2でも、実施例1と同様に、チャンクサイズは、複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズに基づいている。但し、RAIDグループ400についてのチャンクサイズの決定では、複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズの最小公倍数であることが厳密に守られなくてよく、結果として、チャックサイズの柔軟性が実施例1よりも高い。
具体的には、いずれかのチャンク130−20に一部1701(例えば一部の論理ページ)だけが含まれる論理ブロック190Xが許容され、当該論理ブロック190Xの残りの部分1702(例えば残りの論理ページ)は、記憶領域140を構成するいずれのチャンク130にも含まれない(言い換えれば、同一の論理ブロック190を二つ以上のチャンク130が共有することが無いように複数のチャンク130が構成される)。残りの部分1702の基になる物理ページ170は、端数ページであり、残りの部分1702は、記憶領域140を構成するいずれのチャンク130にも含まれないため、端数ページにデータが格納されることがない。故に、チャンクサイズの柔軟性を高めても、リクラメーション処理の必要が生じないことを維持することができる。
なお、本実施例では、例えば、RAIDグループ400について、所定の条件を満たすチャンクサイズ(例えば、チャンクサイズ上限以下のチャンクサイズ)が得られる場合には、当該RAIDグループ400に属する複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズの最小公倍数が採用されてよい。具体的には、例えば、下記が行われてよい。
・ストレージコントローラ120は、当該複数の物理ブロックサイズの最小公倍数を採用しても所定の条件を満たすチャンクサイズが得られるか否かを判断する。
・当該判断の結果が真の場合、ストレージコントローラ120は、当該最小公倍数を基にチャンクサイズ(例えば、チャンクサイズ=(当該最小公倍数)*(RAIDグループ400に属するFMドライブ180Fの数)*係数β(βは任意の自然数))を決定する。
・当該判断の結果が偽の場合、ストレージコントローラ120は、当該複数の物理ブロックサイズのうちなるべく多くの物理ブロックサイズの最小公倍数を基にチャンクサイズ(例えば、チャンクサイズ=(当該なるべく多くの物理ブロックサイズの最小公倍数)*(RAIDグループ400に属するFMドライブ180Fの数)*係数β)を決定し、いずれかのチャンクに一部だけが含まれる論理ブロックの残りの部分を、記憶領域140を構成するいずれのチャンク130にも含めない。
実施例3を説明する。その際、実施例1及び2の少なくとも一つとの相違点を主に説明し、実施例1及び2の少なくとも一つとの共通点については説明を省略又は簡略する。
図18は、実施例3におけるチャンクサイズ管理の一例を示す。
RAIDグループ400についてチャンクサイズが決定された後、当該RAIDグループ400について少なくとも一つのFMドライブ180Fが交換されることがある。交換後のFMドライブ180Fの物理ブロックサイズが、交換前のFMドライブ180Fの物理ブロックサイズと同じであれば、当該RAIDグループ400について現在のチャンクサイズを維持することができる。しかし、それらが異なっていれば、当該現在のチャンクサイズを維持することができない可能性がある。
そこで、本実施例では、RAIDグループ400における少なくとも一つのFMドライブ180Fの交換が行われる場合、ストレージコントローラ120は、下記を行う。
・ストレージコントローラ120は、交換後のFMドライブ180Fの物理ブロックサイズが、交換前のFMドライブ180F前の物理ブロックサイズと異なっていて、且つ、交換前のLcm_B(RAIDグループ400に属する複数のFMドライブ180Fにそれぞれ対応した複数の物理ブロックサイズの最小公倍数)と交換後のLcm_Bとの関係が当該RAIDグループ400の現在のチャンクサイズを維持するための所定の条件を満たす(例えば、交換前のLcm_Bが交換後のLcm_Bの倍数である)か否かを判断する。
・この判断の結果が真の場合、ストレージコントローラ120は、FMドライブ180Fが交換されても現在のチャンクサイズを維持する。
・この判断の結果が偽の場合、ストレージコントローラ120は、当該交換を許可し(例えば当該交換の後に)チャンクサイズを変更する(例えば、図14〜図16を行う)、或いは、当該交換を拒否する(例えば、交換の拒否を音声で又はLED点灯等で報知する、或いは、管理システム103に交換の拒否を通知する)。
また、仮想プール450についてチャンクサイズが決定された後、当該仮想プール450について少なくとも一つのRAIDグループ400が交換又は追加されることがある。交換後又は追加後のRAIDグループ400のチャンクサイズが、交換前のRAIDグループ400又は既存のいずれかのRAIDグループ400のチャンクサイズと同じであれば、当該仮想プール450について現在のチャンクサイズを維持することができる。しかし、それらが異なっていれば、当該現在のチャンクサイズを維持することができない可能性がある。
そこで、本実施例では、仮想プール450について少なくとも一つのRAIDグループ400が交換又は追加される場合、ストレージコントローラ120は、下記を行う。
・ストレージコントローラ120は、交換後又は追加後のRAIDグループ400について決定されたチャンクサイズが、交換前又は既存のRAIDグループ400について決定されたチャンクサイズと異なっていて、且つ、交換前又は追加前のLcm_R(仮想プール450に属する複数のRAIDグループ400についてそれぞれS1401で収集された複数のチャンクサイズの最小公倍数)と交換後のLcm_Rとの関係が当該仮想プール450の現在のチャンクサイズを維持するための所定の条件を満たす(例えば、交換前のLcm_Rが交換後のLcm_Rの倍数である)か否かを判断する。
・この判断の結果が真の場合、ストレージコントローラ120は、RAIDグループ400が交換又は追加されても仮想プール450について現在のチャンクサイズを維持する。
・この判断の結果が偽の場合、ストレージコントローラ120は、当該交換又は追加を許可し(例えば当該交換又は追加の後に)当該仮想プール450についてチャンクサイズを変更する(例えば、図14〜図16を行う)、或いは、当該交換又は追加を拒否する(例えば、交換又は追加の拒否を音声で又はLED点灯等で報知する、或いは、管理システム103に交換又は追加の拒否を通知する)。
以上のように、複数のFMドライブ180Fの少なくとも一つのFMドライブ180Fが、当該FMドライブ180Fの物理ブロックサイズと異なる物理ブロックサイズのFMドライブ180Fに交換される場合、又は、新たに少なくとも一つ以上のFMドライブ180Fが追加される場合、ストレージコントローラ120は、下記を行う。
・ストレージコントローラ120は、現在のチャンクサイズを維持するか否かを判断する。
・当該判断の結果が偽の場合、ストレージコントローラ120は、当該交換又は当該追加を許可しチャンクサイズを変更する、或いは、当該交換又は当該追加を拒否する。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
例えば、FMドライブ180Fの上位システムとして、ストレージコントローラ120以外の上位システム、例えば、ホストシステム102のような計算機が採用されてもよい。
また、複数のFMドライブ180Fを有する複数のノードで構成された分散システム(例えば、冗長構成グループとしてのシステム)が採用されてもよい。上位システムは、複数のノードのうちの少なくとも一つに搭載されるシステム(例えば機能)でよい。冗長構成の例としては、Erasure Coding、RAIN(Redundant Array of Independent Nodes)、ノード間ミラーリング、ノードを一つのドライブとみなしたRAID(Redundant Array of Independent (or Inexpensive) Disks)などがあり、いずれでもよい。
100…ストレージシステム

Claims (15)

  1. 一つ以上のNVM(Non-Volatile Memory)ドライブと、
    前記一つ以上のNVMドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域に対するデータの入出力を行う上位システムと
    を有し、
    前記一つ以上のNVMドライブの各々は、それぞれがデータの消去単位である複数の物理ブロックを有するNVMを有し、
    前記一つ以上のNVMドライブの各々について、当該NVMドライブから提供された論理領域の容量である論理容量は、当該NVMドライブのNVMにおける複数の物理ブロックに基づく物理領域の容量である物理容量に基づいており、
    上位システムは、前記記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理し、
    前記複数のチャンクの各々のチャンクサイズは同一であり、
    前記複数のチャンクの各々は、前記一つ以上の論理領域の各々の一部で構成され、
    前記複数のチャンクの各々は、前記一つ以上のNVMドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない、
    システム。
  2. 各NVMドライブに関し、下記の(x)又は(y)が採用されている、
    (x)当該NVMドライブの物理容量は、ユーザ領域の容量であるユーザ容量と予備領域の容量である予備容量とを含み、当該NVMドライブの論理容量は、前記ユーザ容量に加えて前記予備容量にも基づいている、
    (y)当該NVMドライブの予備容量はゼロである、
    請求項1に記載のシステム。
  3. 前記一つ以上のNVMドライブは、複数のNVMドライブであり、
    チャンクサイズは、前記複数のNVMドライブにそれぞれ対応した複数の物理ブロックサイズに基づいている、
    請求項1に記載のシステム。
  4. チャンクサイズは、前記複数の物理ブロックサイズの最小公倍数とNVMドライブの数との積のα倍(αは自然数)である、
    請求項3に記載のシステム。
  5. 前記複数のNVMドライブの各々において、物理ブロック間でデータが移動しない、
    請求項3に記載のシステム。
  6. 前記複数のNVMドライブの一つ以上のNVMドライブの各々において、当該NVMドライブが、物理ブロック間でデータを移動する機能であるデータ移動機能を有し、
    前記上位システムは、前記一つ以上のNVMドライブの各々について、当該NVMドライブのデータ移動機能を停止することの要求である停止要求を送信し、
    前記一つ以上のNVMドライブの各々において、当該NVMドライブが、当該NVMドライブに対する停止要求に応答して、前記データ移動機能を停止する、
    請求項5に記載のシステム。
  7. 前記複数のNVMドライブは、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループを構成している、
    請求項5に記載のシステム。
  8. いずれかのチャンクに一部だけが含まれる論理ブロックが許容され、当該論理ブロックの残りの部分は、前記記憶領域を構成するいずれのチャンクにも含まれない、
    請求項3に記載のシステム。
  9. 前記上位システムは、
    前記複数の物理ブロックサイズの最小公倍数を採用しても所定の条件を満たすチャンクサイズが得られるか否かを判断し、
    当該判断の結果が真の場合、当該最小公倍数を基にチャンクサイズを決定し、
    当該判断の結果が偽の場合、前記複数の物理ブロックサイズのうちなるべく多くの物理ブロックサイズの最小公倍数を基にチャンクサイズを決定し、いずれかのチャンクに一部だけが含まれる論理ブロックの残りの部分を、前記記憶領域を構成するいずれのチャンクにも含めない、
    請求項3に記載のシステム。
  10. 前記複数のNVMドライブの少なくとも一つのNVMドライブが、当該NVMドライブの物理ブロックサイズと異なる物理ブロックサイズのNVMドライブに交換される場合、又は、新たに少なくとも一つ以上のNVMドライブが追加される場合、前記上位システムは、
    チャンクサイズを維持するか否かを判断し、
    当該判断の結果が偽の場合、当該交換又は当該追加を許可しチャンクサイズを変更する、或いは、当該交換又は当該追加を拒否する、
    請求項3に記載のシステム。
  11. 前記上位システムは、
    (a)前記複数のNVMドライブからそれぞれ複数の物理ブロックサイズを収集し、
    (b)当該収集された複数の物理ブロックサイズを基にチャンクサイズを決定し、
    (c)前記複数のNVMドライブにそれぞれ対応した複数の論理容量のうちの最小の論理容量と、NVMドライブの数と、決定されたチャンクサイズとに基づいて、チャンクの数を決める、
    請求項3に記載のシステム。
  12. それぞれが複数のNVMドライブで構成された複数のドライブグループが同一のプールに属する場合、
    前記複数のドライブグループの各々について、(a)乃至(c)が行われ、
    前記複数のドライブグループの各々について、(c)において、前記決定されたチャンクサイズは、前記複数のドライブグループについてそれぞれ決定された複数のチャンクサイズに基づき前記プールについて決定されたチャンクサイズである、
    請求項11に記載のシステム。
  13. 前記一つ以上のNVMドライブの各々において、当該NVMドライブが、物理ブロック間でデータを移動する機能であるデータ移動機能を有し、
    前記上位システムは、前記一つ以上のNVMドライブの各々について、当該NVMドライブのデータ移動機能を停止することの要求である停止要求を送信し、
    前記一つ以上のNVMドライブの各々において、当該NVMドライブが、当該NVMドライブに対する停止要求に応答して、前記データ移動機能を停止する、
    請求項1に記載のシステム。
  14. 一つ以上のNVM(Non-Volatile Memory)ドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域を管理し、
    前記一つ以上のNVMドライブの各々は、それぞれがデータの消去単位である複数の物理ブロックを有するNVMを有し、
    前記一つ以上のNVMドライブの各々について、当該NVMドライブから提供された論理領域の容量である論理容量は、当該NVMドライブのNVMにおける複数の物理ブロックに基づく物理領域の容量である物理容量に基づいており、
    前記記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理し、
    前記複数のチャンクの各々のチャンクサイズは同一であり、
    前記複数のチャンクの各々は、前記一つ以上の論理領域の各々の一部で構成され、
    前記複数のチャンクの各々は、前記一つ以上のNVMドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない、
    記憶制御方法。
  15. 下記(A)及び(B)を計算機に実行させる、
    (A)一つ以上のNVM(Non-Volatile Memory)ドライブからそれぞれ提供された一つ以上の論理領域で構成された記憶領域を管理すること、
    前記一つ以上のNVMドライブの各々は、それぞれがデータの消去単位である複数の物理ブロックを有するNVMを有し、
    前記一つ以上のNVMドライブの各々について、当該NVMドライブから提供された論理領域の容量である論理容量は、当該NVMドライブのNVMにおける複数の物理ブロックに基づく物理領域の容量である物理容量に基づいており、
    (B)前記記憶領域を構成する複数の領域でありそれぞれがデータ入出力の単位であり上書き不可である複数のチャンクを管理すること、
    前記複数のチャンクの各々のチャンクサイズは同一であり、
    前記複数のチャンクの各々は、前記一つ以上の論理領域の各々の一部で構成され、
    前記複数のチャンクの各々は、前記一つ以上のNVMドライブの各々について、一つ以上の物理ブロックがそれぞれ対応する一つ以上の範囲である一つ以上の論理ブロックの各々の全部又は一部を含み、いずれか別のチャンクに全部又は一部が含まれている論理ブロックの少なくとも一部を含まない、
    コンピュータプログラム。
JP2018233912A 2018-12-13 2018-12-13 不揮発性メモリドライブを備えたシステム Pending JP2020095548A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018233912A JP2020095548A (ja) 2018-12-13 2018-12-13 不揮発性メモリドライブを備えたシステム
US16/564,115 US11068180B2 (en) 2018-12-13 2019-09-09 System including non-volatile memory drive

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018233912A JP2020095548A (ja) 2018-12-13 2018-12-13 不揮発性メモリドライブを備えたシステム

Publications (1)

Publication Number Publication Date
JP2020095548A true JP2020095548A (ja) 2020-06-18

Family

ID=71071566

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018233912A Pending JP2020095548A (ja) 2018-12-13 2018-12-13 不揮発性メモリドライブを備えたシステム

Country Status (2)

Country Link
US (1) US11068180B2 (ja)
JP (1) JP2020095548A (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617361B2 (en) * 2006-03-29 2009-11-10 International Business Machines Corporation Configureable redundant array of independent disks
JP2008046923A (ja) * 2006-08-17 2008-02-28 Toshiba Corp 半導体メモリカードシステムの制御方法
JP2010009548A (ja) * 2008-06-30 2010-01-14 Toshiba Corp 記憶装置、制御装置、記憶システム、および記憶方法
US8402217B2 (en) * 2009-09-15 2013-03-19 Marvell International Ltd. Implementing RAID in solid state memory
US9645917B2 (en) 2012-05-22 2017-05-09 Netapp, Inc. Specializing I/O access patterns for flash storage
US9977613B2 (en) * 2015-12-30 2018-05-22 Dell Products L.P. Systems and methods for zone page allocation for shingled media recording disks
US11503136B2 (en) * 2016-11-30 2022-11-15 Microsoft Technology Licensing, Llc Data migration reservation system and method

Also Published As

Publication number Publication date
US20200192573A1 (en) 2020-06-18
US11068180B2 (en) 2021-07-20

Similar Documents

Publication Publication Date Title
US11829617B2 (en) Virtual storage system
US8984248B2 (en) Data migration system and data migration method
US9146695B2 (en) Method and system for distributed RAID implementation
JP5437373B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
JP5816303B2 (ja) フラッシュメモリを含むストレージシステム、及び記憶制御方法
JP2020035300A (ja) 情報処理装置および制御方法
US10545684B2 (en) Storage device
US20180275894A1 (en) Storage system
KR20100077156A (ko) 씬 프로비저닝 이송 및 스크러빙 방법
US10067882B2 (en) Storage system and storage control method
JP2017199043A (ja) ストレージ装置とシステム及び方法とプログラム
JP2020095548A (ja) 不揮発性メモリドライブを備えたシステム
JP5768118B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP7373018B2 (ja) 仮想ストレージシステム
WO2018142622A1 (ja) 計算機
JP6138318B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
JP5945040B2 (ja) 複数のフラッシュパッケージを有するストレージシステム
WO2018131067A1 (ja) 記憶ドライブの故障により消失したデータを復元する装置