JP2020035300A - 情報処理装置および制御方法 - Google Patents
情報処理装置および制御方法 Download PDFInfo
- Publication number
- JP2020035300A JP2020035300A JP2018162817A JP2018162817A JP2020035300A JP 2020035300 A JP2020035300 A JP 2020035300A JP 2018162817 A JP2018162817 A JP 2018162817A JP 2018162817 A JP2018162817 A JP 2018162817A JP 2020035300 A JP2020035300 A JP 2020035300A
- Authority
- JP
- Japan
- Prior art keywords
- storage controller
- address space
- storage
- garbage collection
- controller
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7208—Multiple 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
- Memory System (AREA)
Abstract
【課題】ガベージコレクションによるデータ移動を抑えることで、ソリッドステートドライブ(SSD)の寿命を伸ばすことが可能な情報処理装置を提供する。【解決手段】ストレージコントローラと記憶デバイスとを有する情報処理装置で、ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録する第1のアドレス空間を管理し、記憶デバイスは、ストレージコントローラからの書き込みリクエストに対して追記形式で記録する第2のアドレス空間を管理し、ストレージコントローラは、第1のアドレス空間においてストレージコントローラがガベージコレクションを実行する単位を、第2のアドレス空間において記憶デバイスがガベージコレクションを実行する単位の倍数とする。【選択図】図18
Description
本発明は、ストレージメディアの特性を考慮して動作する情報処理装置およびその制御方法に関する。
ストレージのデータドライブ購入コストを削減するため、圧縮・重複排除機能を搭載するストレージコントローラが主流になっている。特にプライマリストレージとして利用されるオールフラッシュアレイ(AFA:All Flash Array)にはソリッドステートドライブ(SSD:Solid State Drive)が搭載されており、そのデータ格納メディアであるフラッシュメモリ(FM)は高価である。そのため、圧縮・重複排除機能がますます重要になっている。
圧縮機能を搭載するストレージコントローラでは圧縮によって扱うデータが可変長になるため、データが書き換わった際に同一部分を必ずしも書き換えられるわけではない。そこで、ホストからのブロックアドレスを変換し、ストレージコントローラ内部の制御空間に対し、追記形式でデータを格納するのが一般的である。
このとき、データが更新されると旧データが無効化され、利用されないごみ(ガベージ)となる。ストレージコントローラは、このガベージ領域を再利用可能とするため、ある単位サイズ内の有効データを移動し、空き領域を生成するガベージコレクション(GC)を行う。このGCは、ホストからの書き込みとは独立して行われる。
一方FM自身も、ビットコストを低減するため、そのNANDセルに複数のビットを格納する多値化を推進している。FMは書き換え回数に制約があり、多値化によってビットコストは低減されるが、その書き換え可能回数は減少する。またFMは、累積の書き換え回数が増加するにつれて劣化し、読み出し時間が伸びるという特性がある。
FMは物理特性上、上書きが不可能であり、一度書かれた領域を再利用するためには消去が必要となる。また一般に書き込み/読み出しを行う単位(ページと呼ぶ)よりも消去単位(ブロックと呼ぶ)が大きい。そのため、SSDにはドライブのインタフェースとして見せる論理的なアドレスと実際にFMにアクセスするための物理的なアドレスを変換する層があり、FMへの書き込みは追記形式で行われる。このとき、上書きされた旧データはガベージとして残り、回収するためにはSSDによるGCが必要となる。効率的なGCを行う技術として、特許文献1がある。特許文献1は、有効データ量が少ない領域をGCの対象として選択することでデータの移動を抑制する技術が開示されている。
前述のように、FMは書き換え可能回数に制約があり、SSDのGCにおけるデータの移動回数が増加すると、ホストからの書き込み量に関わらずFMの劣化が進行する。そのため、SSDの寿命が短くなったり、エラー訂正により読み出し時間がより早く伸びるようになる。また、GCによるデータ移動と、本来行うべきストレージコントローラからのリード/ライト処理が衝突すると、SSDのリード/ライト性能が悪化する。
ストレージコントローラがGCを行う単位は、ストレージコントローラの事情に合わせて任意に設定が可能である。一方、SSDのGCはFMの物理構成に基づき消去単位の倍数で行わざるを得ない。これら2種類のGCは通常各々独立して行われるため、ストレージコントローラのGCによるデータの移動とSSDのGCによるデータの移動もそれぞれ独立に発生する。すると、FMの書き換え回数が二重で増加し、FMの寿命劣化をさらに加速させてしまう。
しかし、上記特許文献1では、ストレージコントローラのGCとSSDのGCが二重で発生する課題については言及されていない。
そこで、本発明の課題は、ストレージコントローラのGC単位をSSDのFMのブロックの整数倍とすることで、SSDのGC時にデータの移動を少なくする情報処理装置、情報処理装置の記憶空間の制御方法を提供することである。
本発明に係る情報処理装置は、好ましくは、ストレージコントローラと、記憶デバイスと、を有し、ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録する第1のアドレス空間を管理し、記憶デバイスは、ストレージコントローラからの書き込みリクエストに対して追記形式で記録する第2のアドレス空間を管理し、ストレージコントローラは、第1のアドレス空間においてストレージコントローラがガベージコレクションを実行する単位を、第2のアドレス空間において記憶デバイスがガベージコレクションを実行する単位の倍数とする。
また、本発明に係る情報処理装置は、好ましくは、ストレージコントローラと、複数の記憶デバイスとを有し、ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録し、セグメント単位で管理される第1のアドレス空間を有し、記憶デバイスは、ストレージコントローラからの書き込みリクエストに対して追記形式で記録し、パリティグループ単位で管理される第2のアドレス空間を有し、第1のアドレス空間において、ストレージコントローラがガベージコレクションをセグメント単位で実行し、第2のアドレス空間において記憶デバイスがガベージコレクションをパリティグループの単位で実行し、ストレージコントローラは、セグメント単位を、パリティグループの単位の倍数とする。
また、本発明に係る情報処理装置の記憶空間の制御方法は、好ましくは、ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録する第1のアドレス空間を管理し、記憶デバイスは、ストレージコントローラからの書き込みリクエストに対して追記形式で記録する第2のアドレス空間を管理し、ストレージコントローラは、第1のアドレス空間においてストレージコントローラがガベージコレクションを実行する単位を、第2のアドレス空間において記憶デバイスがガベージコレクションを実行する単位の倍数とする。
本発明によれば、ガベージコレクションによるデータ移動を抑えることで、SSDの寿命を伸ばすことができ、SSDの寿命劣化によるエラー訂正処理の軽減等により性能の改善も図ることができる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、各実施例は本発明を実現するための一例であり、本発明の技術的範囲を限定するものではない。また、各図において共通の構成については同一の参照番号が付されている。
以下、図面を参照して本発明の実施形態を説明する。以下の記載および図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略および簡略化がなされている。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は単数でも複数でも構わない。
図面において示す各構成要素の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面に開示された位置、大きさ、形状、範囲などに限定されない。
以下の説明では、「テーブル」、「リスト」、「キュー」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されていてもよい。データ構造に依存しないことを示すために「XXテーブル」、「XXリスト」等を「XX情報」と呼ぶことがある。識別情報について説明する際に、「識別情報」、「識別子」、「名」、「ID」、「番号」等の表現を用いるが、これらについてはお互いに置換が可能である。
同一あるいは同様な機能を有する構成要素が複数ある場合には、同一の符号に異なる添字を付して説明する場合がある。ただし、これらの複数の構成要素を区別する必要がない場合には、添字を省略して説明する場合がある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU、GPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)および/またはインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノードであってもよい。プログラムを実行して行う処理の主体は、演算部であれば良く、特定の処理を行う専用回路(例えばFPGAやASIC)を含んでいてもよい。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサと配布対象のプログラムを記憶する記憶資源を含み、プログラム配布サーバのプロセッサが配布対象のプログラムを他の計算機に配布してもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
<システム構成の概要>
図1は、本発明を含む計算機システム100の概要を示している。計算機システム100は、ホスト計算機101と、ストレージシステム102を有する。ホスト計算機101とストレージシステム102は、ネットワーク103で接続されている。ネットワーク103は例えば、ファイバチャネルを用いて形成されるSAN(Storage Area Network)である。またネットワーク103はSCSIコマンドが転送可能なプロトコルでもよいし、その他のI/Oプロトコルを使用してもよい。
図1は、本発明を含む計算機システム100の概要を示している。計算機システム100は、ホスト計算機101と、ストレージシステム102を有する。ホスト計算機101とストレージシステム102は、ネットワーク103で接続されている。ネットワーク103は例えば、ファイバチャネルを用いて形成されるSAN(Storage Area Network)である。またネットワーク103はSCSIコマンドが転送可能なプロトコルでもよいし、その他のI/Oプロトコルを使用してもよい。
ホスト計算機101はユーザのアプリケーションプログラムを実行する計算機であり、ストレージシステム102の論理的な記憶領域にネットワーク103経由でアクセスする。ストレージシステム102は、ホスト計算機からの要求に応じてSSD105にデータを格納したり、格納されたデータを取り出す。
なお、実施例1では、ホスト計算機101とストレージシステム102が共に1台ずつであるが、複数台のホスト計算機101がネットワーク103を介してストレージシステム102に接続されていたり、複数のストレージシステム102で冗長構成されていてもよい。また、SDS(Software Defined Storage)のように、同一のハードウェア資源で、ホスト計算機101とストレージシステム102のそれぞれの機能を単独あるいは複数台の計算機で実現することもできる。
ストレージシステム102は、ストレージコントローラ(または単にコントローラ)104と、SSD105を有する。ストレージコントローラ104は、Controller CPU(Central Processing Unit)107と、Controller RAM(Random Access Memory)108と、FE I/F(Frontend Interface)109と、BE I/F(Backend Interface)110を有する。ストレージコントローラ104の各部は、バスを介して接続される。
Controller RAM108は、Controller CPU107上で動作するストレージシステム102を制御するためのプログラムおよびメタデータを格納する領域と、データを一時的に格納するキャッシュメモリを含む。またController RAM108は、一般にDRAM等の揮発性記憶媒体が用いられるが、不揮発性記憶媒体が用いられてもよい。また、実施例1のストレージコントローラ104はハードウェア(図示せず)もしくはソフトウェアによる圧縮機能を有する。但し、必ずしも圧縮機能を有さなくてもよい。
FE I/F109は、ネットワーク103に接続するインタフェースである。またBE I/F110は、SSD105に接続するインタフェースである。実施例1において、ストレージシステム102は高信頼化のため複数の記憶媒体をRAID(Redundant Array of Independent(Inexpensive) Disks)機能を用いて、RAID グループ(RG)106として制御する。例えば図1では、SSD105(A)、(B)、(C)、(D)をRGとして構成している。ただし本発明は、ストレージシステム102にRGを構成する機能が無くても有効である。
SSD105は、ホスト計算機101からの書き込みデータを記憶するための不揮発性記憶媒体を含む。記憶媒体としては、例えばフラッシュメモリを用いることができるが、その他の媒体を用いても良い。
<SSDの概要>
図2は、記憶デバイスであるSSD(Solid State Drive)105の内部構成の概要を示している。SSD105は、SSDコントローラ200と、フラッシュメモリ201を有する。SSDコントローラ200は、Drive CPU202と、Drive RAM203と、Drive I/F204と、Flash I/F205を有する。SSDコントローラの各部は、バスを介して接続される。各SSD105には複数のフラッシュメモリ201が搭載されるが、単独のフラッシュメモリ201であっても良い。
図2は、記憶デバイスであるSSD(Solid State Drive)105の内部構成の概要を示している。SSD105は、SSDコントローラ200と、フラッシュメモリ201を有する。SSDコントローラ200は、Drive CPU202と、Drive RAM203と、Drive I/F204と、Flash I/F205を有する。SSDコントローラの各部は、バスを介して接続される。各SSD105には複数のフラッシュメモリ201が搭載されるが、単独のフラッシュメモリ201であっても良い。
Drive RAM203は、Drive CPU202上で動作するSSDを制御するためのプログラムおよびメタデータを格納する領域と、データを一時的に格納する領域を含む。またDrive RAM203は、一般にDRAM等の揮発性記憶媒体が用いられるが、不揮発性記憶媒体が用いられてもよい。
Drive I/F204は、ストレージコントローラ104に接続するインタフェースである。またFlash I/Fは、フラッシュメモリ201に接続するインタフェースである。フラッシュメモリ201のデータ格納領域は、消去単位であるブロック206を複数有する。また、ブロック206はリード/ライト単位であるページ207を有する。
<記憶領域の階層構造概要>
図3は、実施例1にかかる記憶領域における階層構造を模式的に表した一例を示す。ホストアドレス空間300は、ホスト計算機101が認識するストレージコントローラ104のアドレス空間である。実施例1ではストレージコントローラ104がホスト計算機101に認識させるホストアドレス空間300は1つだが、複数有していてもよい。ストレージコントローラは、ホストアドレス空間300を管理し、ホスト101にアドレス空間として提供する。ホストアドレス空間300は、ストレージコントローラ104のH−C変換テーブル301によってコントローラアドレス空間302にマッピングされる。コントローラアドレス空間302は、ライトリクエストを受領した順に従って前詰めでデータが格納される追記形式の空間になっている。また、コントローラアドレス空間302はC−H変換テーブル303によってホストアドレス空間300にマッピングされる。ドライブアドレス空間305は、コントローラが認識する各SSDのアドレス空間である。C−D変換テーブル304は、コントローラアドレス空間302から、各SSD105と、そのSSDのドライブアドレス空間305へアドレスをマッピングする。
図3は、実施例1にかかる記憶領域における階層構造を模式的に表した一例を示す。ホストアドレス空間300は、ホスト計算機101が認識するストレージコントローラ104のアドレス空間である。実施例1ではストレージコントローラ104がホスト計算機101に認識させるホストアドレス空間300は1つだが、複数有していてもよい。ストレージコントローラは、ホストアドレス空間300を管理し、ホスト101にアドレス空間として提供する。ホストアドレス空間300は、ストレージコントローラ104のH−C変換テーブル301によってコントローラアドレス空間302にマッピングされる。コントローラアドレス空間302は、ライトリクエストを受領した順に従って前詰めでデータが格納される追記形式の空間になっている。また、コントローラアドレス空間302はC−H変換テーブル303によってホストアドレス空間300にマッピングされる。ドライブアドレス空間305は、コントローラが認識する各SSDのアドレス空間である。C−D変換テーブル304は、コントローラアドレス空間302から、各SSD105と、そのSSDのドライブアドレス空間305へアドレスをマッピングする。
ホストアドレス空間300、コントローラアドレス空間302、ドライブアドレス空間305は、ストレージコントローラ104によって管理され、上記の各種変換テーブル(H−C変換テーブル301、C−H変換テーブル303、C−D変換テーブル304)によって、各層のアドレスが対応付けられている。
D−F変換テーブル306は、ドライブアドレス空間305からフラッシュメモリ201と、当該フラッシュメモリ201のFMアドレス空間307へアドレスをマッピングする。SSD105のSSDコントローラ200は、FMアドレス空間307を管理する。またF−D変換テーブル308は、FMアドレス空間307からドライブアドレス空間305へマッピングする。
H−C変換テーブル301、C−H変換テーブル303、C−D変換テーブル304は通常、それぞれController RAM108に格納されるが、これらのテーブルを一部SSD105に格納されてもよい。また、D−F変換テーブル306およびF−D変換テーブル308は通常、それぞれDrive RAM203に格納されるが、これらのテーブルを一部フラッシュメモリ201に格納されてもよい。
ドライブアドレス空間305、FMアドレス空間307は、SSD105のSSDコントローラ200によって管理され、D−F変換テーブル306およびF−D変換テーブル308によって、各層のアドレスが対応付けられている。
なお、本発明は図3の階層構造に限定されるものではなく、ストレージコントローラ104はコントローラアドレス空間302よりもホスト側かつ/あるいはドライブ側にさらに階層があってもよく、SSDはドライブアドレス空間305とFMアドレス空間307の間にさらに階層があってもよい。
<ストレージコントローラにおけるアドレス変換テーブル詳細>
図4は、ストレージコントローラ104が有するH−C変換テーブル301、C−H変換テーブル303、C−D変換テーブル304の詳細を示す図である。H−C変換テーブル301は、フィールドとしてホストアドレス510、コントローラアドレス空間302におけるセグメント番号520、セグメントオフセット530、圧縮後サイズ540を有する。ホストアドレス510は、ホストアドレス空間300内の位置を表す。例えば、ブロックアドレスである。セグメント番号520は、コントローラアドレス空間302に割り当てられた、ある一定のサイズからなるセグメント(詳細は後述)を一意に表す番号である。セグメントオフセット530は、当該行が表すデータのセグメント内での先頭の位置を示す。
図4は、ストレージコントローラ104が有するH−C変換テーブル301、C−H変換テーブル303、C−D変換テーブル304の詳細を示す図である。H−C変換テーブル301は、フィールドとしてホストアドレス510、コントローラアドレス空間302におけるセグメント番号520、セグメントオフセット530、圧縮後サイズ540を有する。ホストアドレス510は、ホストアドレス空間300内の位置を表す。例えば、ブロックアドレスである。セグメント番号520は、コントローラアドレス空間302に割り当てられた、ある一定のサイズからなるセグメント(詳細は後述)を一意に表す番号である。セグメントオフセット530は、当該行が表すデータのセグメント内での先頭の位置を示す。
コントローラアドレス空間内の位置は、セグメント番号520とセグメントオフセット530によって表される。圧縮後サイズ540は、ライトリクエスト400のデータ(図5参照)を圧縮した後のデータサイズを表す。これらの情報により、あるホストアドレスに対するコントローラアドレスの位置を一意に特定できる。
例えば、ホストアドレス510が「100」に対して、コントローラアドレス空間302は、セグメント番号520が「100」、セグメントオフセット530が「0」、圧縮後サイズ540が「8」と対応付けられている。
C−H変換テーブル303は、フィールドとしてコントローラアドレス空間302におけるセグメント番号610、セグメントオフセット620、圧縮後サイズ630、ホストアドレス640を有する。セグメント番号610は、コントローラアドレス空間302に割り当てられた、ある一定サイズのセグメントを表す番号である。セグメントオフセット620は、当該行が表すデータのセグメント内での先頭の位置を示す。コントローラアドレス空間内の位置は、セグメント番号610とセグメントオフセット620によって表される。圧縮後サイズ630は、ライトリクエスト400のデータ(図5参照)を圧縮した後のデータサイズを表す。ホストアドレス510は、ホストアドレス空間300内の位置を表す。
例えば、コントローラアドレス空間302において、セグメント番号610が「100」、セグメントオフセット620が「0」、圧縮後サイズ630が「8」に対して、ホストアドレス640の「100」が対応付けられている。
C−D変換テーブル304は、コントローラアドレス空間302における、フィールドとしてセグメント番号710、セグメントオフセット720、圧縮後サイズ730と、ドライブアドレス空間305における、ドライブ番号740、ドライブアドレス750、ドライブアドレスオフセット760を有する。セグメント番号710は、コントローラアドレス空間302に割り当てられたセグメントを表す番号である。セグメントオフセット720は、当該行が表すデータのセグメント内での先頭の位置を示す。コントローラアドレス空間内の位置は、セグメント番号710とセグメントオフセット720によって表される。圧縮後サイズ730は、ライトリクエスト400のデータを圧縮した後のデータサイズを表す。ドライブ番号740は、SSD105を一意に表す番号である。ドライブアドレス750は、ドライブ番号740で指定されたSSD105のドライブアドレス空間305内の位置を表す。ドライブアドレスオフセット760は、ドライブアドレス750で指定されたアドレス内のオフセットを表す。
例えば、コントローラアドレス空間302において、セグメント番号710が「100」、セグメントオフセット720が「0」、圧縮後サイズ730が「8」に対して、ドライブアドレス空間305のドライブ番号740が「0」、ドライブアドレス750が「200」、ドライブアドレスオフセット760が「0」と対応付けられている。
<ストレージコントローラにおけるライトリクエスト処理とアドレスマッピングの概要>
図5は、ホスト計算機101がストレージシステム102に対してライトをリクエストする際の情報の一例を示す。ライトリクエスト400は、ホストアドレス401、ライトサイズ402、ライトデータ403を含む。
図5は、ホスト計算機101がストレージシステム102に対してライトをリクエストする際の情報の一例を示す。ライトリクエスト400は、ホストアドレス401、ライトサイズ402、ライトデータ403を含む。
図6は、実施例1にかかるコントローラにおけるアドレスマッピングの対応関係を模式的に表した一例を示す。ここでは例えば、ホスト計算機101が400(A)、400(B)、400(C)の順でライトをリクエストしたとする。実施例1では圧縮機能を持ち、ストレージコントローラ104がそれぞれのリクエストのライトデータ403(A)、403(B)、403(C)を圧縮し圧縮データ404(A)、404(B)、404(C)を生成した後、これら圧縮データをそれぞれホストアドレス空間300とコントローラアドレス空間302にマッピングする。具体的には、H−C変換テーブル301とC−H変換テーブル303のエントリをそれぞれ追加する。このとき、コントローラアドレス空間302は追記形式の構造のため、図6に示す通り、リクエスト順に前詰めでデータが格納される。
また実施例1において、ストレージコントローラ104によって、コントローラアドレス空間302は、ドライブアドレス空間305にオンデマンドでマッピングされる。このマッピングを行う制御単位をセグメント600と呼ぶ。ストレージコントローラ104が新規にセグメントを確保する際は、仮想的なセグメントプール空間602と呼ぶプール領域から任意のセグメントを選択し、コントローラアドレス空間にマッピングする。セグメントプール空間602は、ドライブアドレス空間305のリソースを一括管理する仮想的なプールである。セグメント600は一般にはRGの一部を切り出した領域で、そのサイズは例えば42MBである。
セグメント600の確保、つまりコントローラアドレス空間302からドライブアドレス空間305へのマッピングは、実際にはC−D変換テーブル304を更新することで行う。また、コントローラアドレス空間302にはマッピングが行われた最後のアドレスを示すコントローラアドレス末尾ポインタ601があり、ホスト計算機101からのライトデータはこの末尾ポインタがある部分に追記される。
図7は、図6の状態からホスト計算機101が上書きを実施した際の様子を模式的に表す。ホスト計算機101が、図6のライトデータ403(B)、403(C)が格納されたホストアドレスに対して、それぞれライトリクエスト400(D)、400(E)を発行したとする。ストレージコントローラ104はライトデータ403(D)、403(E)をそれぞれ圧縮し圧縮データ404(D)、404(E)を生成した後、これら圧縮データをコントローラアドレス空間302にマッピングする。このとき、前述のようにコントローラアドレス空間302は追記形式の構造であり、各データはコントローラアドレス末尾ポインタ601を起点にライト順にマッピングされる。その際、H−C変換テーブル301とC−H変換テーブル303はそれぞれ更新されるが、旧データは、C−H変換テーブル303上にマッピングするがH−C変換テーブル301上にはマッピングしない。即ち、H−C変換テーブル301上にはマッピングしないため、ホスト101からは参照しないとなる。C−H変換テーブル303上にマッピングされているため、一つのホストアドレス(データ403(D)が格納されているアドレス)に対し、二つのコントローラアドレス(コントローラガベージ603と新データ404(D)が格納されている604)の対応が管理される。
コントローラガベージ603は、ホストアドレス空間300へ上書きを行うたびに発生する。すると、ホストアドレス空間300上では容量に余裕があるにもかかわらず、コントローラアドレス空間302上ではガベージのため書き込み先が枯渇する状態が発生する。ガベージコレクション(GC)は、この問題を防止するために実施される。また、コントローラガベージ603がある程度溜まった状態でも動作可能にするため、ホストアドレス空間300よりもコントローラアドレス空間302を大きくするオーバープロビジョニングが行われるのが一般的である。
<ストレージコントローラのライトリクエスト処理フロー>
上記の処理手順は、ストレージコントローラ104で実行される図8のフローチャートで表すことができる。なお本処理手順の項目は、ライトリクエスト400と各アドレス空間の関係についての処理に着目した一例であり、その順序や処理内容について限定するものではない。
上記の処理手順は、ストレージコントローラ104で実行される図8のフローチャートで表すことができる。なお本処理手順の項目は、ライトリクエスト400と各アドレス空間の関係についての処理に着目した一例であり、その順序や処理内容について限定するものではない。
(S100)ストレージコントローラ104がFE I/F109を介してホスト計算機101からのライトリクエストを受領する。ライトリクエストは、ライト先を示すホストアドレス、ライトするサイズ、ライトするデータ等を含む。
(S102)ライトリクエストされたデータが、コントローラアドレス末尾ポインタ601の示すセグメント600の空き領域に収まるかどうかを、判断する。
空き領域に収まる場合、手順S110に進む。
空き領域に収まらない場合、手順S104に進む。
空き領域に収まる場合、手順S110に進む。
空き領域に収まらない場合、手順S104に進む。
(S104)GCが必要かどうかを判定する。判定の閾値は、例えばストレージシステム102の使用容量が90%以上となった場合や、空き容量が100GB以下となった場合などが考えられるが、他の閾値でもよい。ここで重要なのは、ホスト計算機101から見た空き容量が十分あるにもかかわらず、コントローラガベージ603によって新規のセグメントが割り当てられず動作不能となる状況を回避することである。
GCが不要である場合、S108に進む。
GCが必要である場合、S106に進む。
GCが不要である場合、S108に進む。
GCが必要である場合、S106に進む。
なお、後に示すストレージコントローラ104のGC中の処理としてライトリクエスト処理が行われた場合は、GC不要と判定する。
(S106)ストレージコントローラ104がGCを実施する。GCの詳細については後に示す図10の1100にて詳述する。
(S108)ストレージコントローラ104がプール602からセグメント600を新規に割り当てる。
(S110)H−C変換テーブル301を更新する。具体的には、まずライトリクエスト400が示すホストアドレスに該当する行をH−C変換テーブル301のホストアドレス510から選択する。その後、当該行の各エントリを、コントローラアドレス末尾ポインタ601が指し示している、つまりライトを実施するコントローラアドレス空間302に相当するセグメントID520、セグメントオフセット530、圧縮後サイズ540に書き換える。
(S112)C−H変換テーブル303を更新するために、まずC−H変換テーブル303の新しい行を確保する。次に、コントローラアドレス末尾ポインタ601が指し示しているコントローラアドレス空間302に相当するセグメントID610、セグメントオフセット620、圧縮後サイズ630と、ライトリクエスト400が示すホストアドレス640をC−H変換テーブル303に確保した行に追記する。
(S114)C−D変換テーブル304を更新するために、まずC−D変換テーブル304の新しい行を確保する。次に、コントローラアドレス末尾ポインタ601が指し示しているコントローラアドレス空間302に相当するセグメントID710、セグメントオフセット720、圧縮後サイズ730と、ドライブ番号740、ドライブアドレス750、ドライブアドレスオフセット760をC−D変換テーブル304に確保した行に追記する。
(S116)S114にて追記したドライブアドレスに対して、ライトリクエストをBE I/Fを介して送信する。
<ストレージコントローラのGC>
図9は、図7の状態からストレージコントローラ104がGCを実施した様子を模式的に表す。まず、ストレージコントローラ104がセグメント600(A)をGC対象としたとする。ストレージコントローラ104は、GC対象としたセグメント中の各データが有効かどうかを確認する。有効であった場合、ストレージコントローラ104は当該データをコントローラアドレス末尾ポインタ601がある部分に追記すると共に、H−C変換テーブル301、C−H変換テーブル303、C−D変換テーブル304のコントローラアドレスをそれぞれ新しいアドレスに更新する。一方データが有効でなかった場合は何もしない。
図9は、図7の状態からストレージコントローラ104がGCを実施した様子を模式的に表す。まず、ストレージコントローラ104がセグメント600(A)をGC対象としたとする。ストレージコントローラ104は、GC対象としたセグメント中の各データが有効かどうかを確認する。有効であった場合、ストレージコントローラ104は当該データをコントローラアドレス末尾ポインタ601がある部分に追記すると共に、H−C変換テーブル301、C−H変換テーブル303、C−D変換テーブル304のコントローラアドレスをそれぞれ新しいアドレスに更新する。一方データが有効でなかった場合は何もしない。
ストレージコントローラ104がセグメント600(A)の全領域を確認した後、当該セグメントは全てホストアドレス空間300からアクセスされない領域となるため、ストレージコントローラ104がセグメント600(A)を解放する。ストレージコントローラ104は、以上の動作により、ガベージ領域を回収する。なおストレージコントローラ104のGCは、ライトリクエスト処理時のほか、ホスト計算機101からのリクエストがない場合にも任意のタイミングで実施してよい。
<ストレージコントローラのGC処理フロー>
上記のストレージコントローラによるGC処理手順は、図10のフローチャート1100で表すことができる。
上記のストレージコントローラによるGC処理手順は、図10のフローチャート1100で表すことができる。
(S200)ストレージコントローラ104がGCの対象とするセグメントを選択する。対象のセグメントは、例えばコントローラアドレスの先頭から順にセグメントを確認し、セグメント内の全領域に対するガベージの割合が10%以上の場合に当該セグメントを選択する等の方法が考えられるが、他のアルゴリズムを使用してもよい。
(S202)ストレージコントローラ104が、C−H変換テーブル303中で、S200で選択したセグメントかつGC開始後これまで未確認のエントリを選択する。未確認のエントリとは、図4で示した各エントリである。一つのセグメントに対し、複数のエントリが存在するため、未確認エントリの選択を行っている。
(S204)ストレージコントローラ104がS202で選択したエントリを参照し、ホストアドレスのフィールド640を確認する。
(S206)ストレージコントローラ104が、H−C変換テーブル301中で、S204で確認したホストアドレスに対応するエントリを選択する。
(S208)ストレージコントローラ104がS206で選択したエントリを参照し、コントローラアドレスを表すセグメント番号520とセグメントオフセット530を確認する。
確認したコントローラアドレスが、S202で選択したエントリのコントローラアドレスと一致していれば当該コントローラアドレスに格納されているデータは有効であり、S210に進む。
確認したコントローラアドレスが、S202で選択したエントリのコントローラアドレスと不一致であれば、確認したコントローラアドレスに格納されているデータはガベージであり、S212に進む。
(S210)ストレージコントローラ104がS202で選択したエントリのコントローラアドレスに格納されているデータを読み出し、当該データのホストアドレスと合わせてライトリクエスト400を作成し、図8に示したライトリクエスト処理1000を行う。
(S212)ストレージコントローラ104がC−H変換テーブル303中のS202で選択したエントリを削除する。C−H変換テーブル303中のエントリの削除は、セグメント単位でまとめて行うこともできる。
(S214)ストレージコントローラ104が、C−H変換テーブル303中にS200で選択したGC対象セグメントのエントリが存在するかどうか確認する。
エントリが存在する場合、S202に戻る。
エントリが存在しない場合、S216に進む。
エントリが存在する場合、S202に戻る。
エントリが存在しない場合、S216に進む。
(S216)ストレージコントローラ104が、GC対象セグメントを解放する。
その際、ストレージコントローラ104がSSD105に当該ドライブアドレスの解放を通知してもよい。解放の通知は、SCSIのUNMAPコマンドを発行することによって実現できる。なお本処理は、コントローラアドレス空間302がオーバープロビジョニングされていた場合必須ではない。実施例1の以降の説明でも、解放の通知は前提としない。
その際、ストレージコントローラ104がSSD105に当該ドライブアドレスの解放を通知してもよい。解放の通知は、SCSIのUNMAPコマンドを発行することによって実現できる。なお本処理は、コントローラアドレス空間302がオーバープロビジョニングされていた場合必須ではない。実施例1の以降の説明でも、解放の通知は前提としない。
<SSDコントローラにおけるアドレス変換テーブルの詳細>
図11は、SSD105が有するD−F変換テーブル306とF−D変換テーブル308の詳細を示す図である。D−F変換テーブル306は、フィールドとしてドライブアドレス810、FM番号820、ブロック番号830、ページ番号840、ページオフセット850を有する。ドライブアドレス810は、SSD105のドライブアドレス空間305内の位置を表す。FM番号820は、SSD105が有するFMを一意に表す。ブロック番号830は、FM番号820で示したFM内のブロックを一意に表す。ページ番号830は、ブロック番号830で示したブロック内のページを一意に表す。ページオフセット850は、当該行が表すデータのページ内での先頭の位置を示す。ドライブアドレス空間305のドライブアドレス810が「200」と、FMアドレス空間307のFM番号820が「2」、ブロック番号830が「50」、ページ番号840が「0」、ページオフセット850が「0」を対応している。
図11は、SSD105が有するD−F変換テーブル306とF−D変換テーブル308の詳細を示す図である。D−F変換テーブル306は、フィールドとしてドライブアドレス810、FM番号820、ブロック番号830、ページ番号840、ページオフセット850を有する。ドライブアドレス810は、SSD105のドライブアドレス空間305内の位置を表す。FM番号820は、SSD105が有するFMを一意に表す。ブロック番号830は、FM番号820で示したFM内のブロックを一意に表す。ページ番号830は、ブロック番号830で示したブロック内のページを一意に表す。ページオフセット850は、当該行が表すデータのページ内での先頭の位置を示す。ドライブアドレス空間305のドライブアドレス810が「200」と、FMアドレス空間307のFM番号820が「2」、ブロック番号830が「50」、ページ番号840が「0」、ページオフセット850が「0」を対応している。
F−D変換テーブル308は、フィールドとしてFM番号910、ブロック番号920、ページ番号930、ページオフセット940、ドライブアドレス950を有する。FM番号910は、SSD105が有するFMを一意に表す。ブロック番号920は、FM番号910で示したFM内のブロックを一意に表す。ページ番号930は、ブロック番号920で示したブロック内のページを一意に表す。ページオフセット940は、当該行が表すデータのページ内での先頭の位置を示す。ドライブアドレス950は、SSD105のドライブアドレス空間305内の位置を表す。
<SSDにおけるライトリクエスト処理とアドレスマッピングの概要>
図12は、ストレージシステム102がSSD105に対してライトをリクエストする際の情報の一例を示す。ライトリクエスト410は、ドライブアドレス411、ライトサイズ412、ライトデータ413を含む。
図12は、ストレージシステム102がSSD105に対してライトをリクエストする際の情報の一例を示す。ライトリクエスト410は、ドライブアドレス411、ライトサイズ412、ライトデータ413を含む。
図13は、実施例1にかかるSSD105におけるアドレスマッピングの対応関係を模式的に表した一例を示す。ここでは例えば、ストレージコントローラ104が410(A)、410(B)、410(C)の順でライトをリクエストしたとする。SSDコントローラ200は、これらのリクエストがもつライトデータ413(A)、413(B)、413(C)をそれぞれドライブアドレス空間305とFMアドレス空間307にマッピングする。具体的には、D−F変換テーブル306とF−D変換テーブル308のエントリをそれぞれ追加する。また実施例1において、ストレージコントローラによりドライブアドレス空間305は、FMアドレス空間307にオンデマンドでマッピングされる。このマッピングを行う制御単位をParity Group(PG)700と呼ぶ。PG700は、FMの任意のブロックを1以上含む集合である。これは、後に示すSSDのGC時に実施するデータ消去が、FMの物理制約上ブロック単位で実施されるためである。SSD105が新規にPGを確保する際は、仮想的なPGプール空間702と呼ぶプール領域から任意のPGを選択し、FMアドレス空間307にマッピングする。PGプール空間702は、FMアドレス空間307のリソースを一括管理する仮想的なプールである。FMアドレス空間307はPG単位で追記形式の構造を持ち、リクエスト順に前詰めでデータが格納される。
また、FMアドレス空間307にはマッピングが行われた最後のアドレスを示すFMアドレス末尾ポインタ701があり、ストレージコントローラ104からのライトデータはこのFMアドレス末尾ポインタ701がある部分に追記される。さらに、ガベージがある程度溜まった状態でも動作可能にするため、ストレージコントローラ104と同様にSSD105内部でもドライブアドレス空間305よりもFMアドレス空間307を大きくするオーバープロビジョニングが行われるのが一般的である。
<SSDのライトリクエスト処理フロー>
上記の処理手順は、SSDコントローラ200により実行される図14のフローチャート1400で表すことができる。なお本処理手順は、ストレージコントローラ104からのライトリクエストと各アドレス空間の関係についての処理に着目したシーケンスであり、その順序や処理内容について限定するものではない。
上記の処理手順は、SSDコントローラ200により実行される図14のフローチャート1400で表すことができる。なお本処理手順は、ストレージコントローラ104からのライトリクエストと各アドレス空間の関係についての処理に着目したシーケンスであり、その順序や処理内容について限定するものではない。
(S500)SSDコントローラ200がDrive I/F204を介してストレージコントローラ104からのライトリクエスト410を受領する。
(S502)ライトリクエストされたデータが、FMアドレス末尾ポインタ701の示すPGの空き領域に収まるかどうかを、ライトサイズ412をもとに判断する。
空き領域に収まる場合、手順S510に進む。
空き領域に収まらない場合、手順S504に進む。
空き領域に収まる場合、手順S510に進む。
空き領域に収まらない場合、手順S504に進む。
(S504)GCが必要かどうかを判定する。判定の閾値は、例えばSSD105の使用容量とガベージ量の合計が90%以上となった場合や、空き容量が100GB以下となった場合などが考えられるが、他の閾値でもよい。ここで重要なのは、ストレージコントローラ104から見た空き容量が十分あるにもかかわらず、ガベージによって新規のPGが割り当てられなくなる状況を回避することである。
GCが不要である場合、S508に進む。
GCが必要である場合、S506に進む。
なお、後に示すSSDのGC中の処理としてライトリクエスト処理が行われた場合は、GC不要と判定する。
GCが不要である場合、S508に進む。
GCが必要である場合、S506に進む。
なお、後に示すSSDのGC中の処理としてライトリクエスト処理が行われた場合は、GC不要と判定する。
(S506)SSDコントローラ200がGCを実施する。GCの詳細については図15に示す1600にて詳述する。
(S508)SSDコントローラ200がPGを新規に割り当てる。
(S510)D−F変換テーブル306を更新する。具体的には、まずライトリクエスト410が示すドライブアドレス411に該当する行をD−F変換テーブル306のドライブアドレス810から選択する。その後、当該行の各エントリを、FMアドレス末尾ポインタ701が指し示している、つまりライトを実施するFMアドレス空間307に相当するFM ID820、ブロックID830、ページID840、ページオフセット850に書き換える。
(S512)F−D変換テーブル308を更新するために、まずF−D変換テーブル308の新しい行を確保する。次に、FMアドレス末尾ポインタ701が指し示しているドライブアドレス空間305に相当するFM ID910、ブロックID920、ページID930、ページオフセット940と、ライトリクエストが示すドライブアドレスをF−D変換テーブル308の確保した行に追記する。
(S514)S510にて追記したFMアドレスに対して、ライトをFlash I/Fを介して実施する。
<SSDのGC処理フロー>
SSD105のGCは、ストレージコントローラ104のGCにおけるセグメントを、H−C変換テーブル301、C−H変換テーブル303をそれぞれPG、をD−F変換テーブル306、F−D変換テーブル308に置き換えた動作に相当する。
SSD105のGCは、ストレージコントローラ104のGCにおけるセグメントを、H−C変換テーブル301、C−H変換テーブル303をそれぞれPG、をD−F変換テーブル306、F−D変換テーブル308に置き換えた動作に相当する。
また本処理は、SSDコントローラ200による上記ライトリクエスト処理時のほか、ストレージコントローラ104からのリクエストがない場合にも任意のタイミングで実施してよい。以下、図15のフローチャート1600を用いて、SSDのGC(ドライブGC)を説明する。
(S700)SSDコントローラ200がGCの対象とするPGを選択する。対象のPGは、例えばドライブアドレス空間305の先頭から順にPGを確認し、PG内の全領域に対するガベージの割合が10%以上の場合に当該PGを選択する等の方法が考えられるが、他のアルゴリズムを使用してもよい。
(S702)SSDコントローラ200が、F−D変換テーブル308中で、S700で選択したPGかつドライブGC開始後これまで未確認のエントリを選択する。
(S704)SSDコントローラ200がS702で選択したエントリを参照し、ドライブアドレスのフィールド840を確認する。
(S706)SSDコントローラ200が、D−F変換テーブル306中で、S704で確認したドライブアドレスに対応するエントリを選択する。
(S708)SSDコントローラ200がS706で選択したエントリを参照し、FMアドレスを表すFM番号910、ブロック番号920、ページ番号930、ページオフセット940を確認する。
確認したFMアドレスが、S702で選択したエントリのFMアドレスと一致していれば当該FMアドレスに格納されているデータは有効であり、S710に進む。
確認したFMアドレスが、S702で選択したエントリのFMアドレスと不一致であれば、確認したFMアドレスに格納されているデータはガベージであり、S712に進む。
(S710)SSDコントローラ200がS702で選択したエントリのFMアドレスに格納されているデータを読み出し、ライトリクエスト処理1400を行う。
(S712)SSDコントローラ200がF−D変換テーブル308中のS702で選択したエントリを削除する。F−D変換テーブル308のエントリの削除は、GC対象PG単位でまとめて行うこともできる。
(S714)SSDコントローラ200が、F−D変換テーブル308中にS700で選択したGC対象セグメントのエントリが存在するかどうか確認する。
エントリが存在する場合、S702に戻る。
エントリが存在しない場合、S716に進む。
エントリが存在する場合、S702に戻る。
エントリが存在しない場合、S716に進む。
(S716)SSDコントローラ200が、GC対象PG中のFMのそれぞれのブロックに対してデータ消去コマンドを発行する。
<従来技術>
図16に、本特許の実施例1について理解を深めるため、従来技術でのアドレスマッピングの模式図を示す。ストレージコントローラ104において、セグメント600のサイズはストレージコントローラの各種機能、例えば、Thin Provisioning等、の仕様により決まる一方、SSD105において、PG700のサイズはFMのブロックサイズに依存する。また、RGを組むSSD105の数は複数の選択肢が存在する(実施例1ではSSD105(A)〜SSD105(D)の4台)。そのため、1つのセグメント600をあるRGに割り当てたとき、SSD1台あたりに割り当てられる部分セグメント604はまちまちになる。図16の模式図では、上記部分セグメント604は各SSDのPG700の一部としてマッピングされている。つまり、1PG中に2種類以上の部分セグメント604が存在しうることになる。
図16に、本特許の実施例1について理解を深めるため、従来技術でのアドレスマッピングの模式図を示す。ストレージコントローラ104において、セグメント600のサイズはストレージコントローラの各種機能、例えば、Thin Provisioning等、の仕様により決まる一方、SSD105において、PG700のサイズはFMのブロックサイズに依存する。また、RGを組むSSD105の数は複数の選択肢が存在する(実施例1ではSSD105(A)〜SSD105(D)の4台)。そのため、1つのセグメント600をあるRGに割り当てたとき、SSD1台あたりに割り当てられる部分セグメント604はまちまちになる。図16の模式図では、上記部分セグメント604は各SSDのPG700の一部としてマッピングされている。つまり、1PG中に2種類以上の部分セグメント604が存在しうることになる。
例えば、ストレージコントローラ104によって管理されるセグメント600が42MBであるとき、RGを組む各SSD105(A)から(D)の4台のそれぞれの部分セグメント604の大きさは、42/3で14MBとなる。RGを組む一台のSSDはパリティデータを格納するため、セグメントがマップされるホストアドレス空間300には実質3台のSSD105の容量がマップされることになるためである。
一方、PG700の大きさは、FMメモリ201のブロック単位で構成されるため、1ブロック4MBの整数倍、即ち、PG700を構成するFMの数に制約される。例えば、PGが5つのFMで、4D+1Pの構成をとる場合、PG700の大きさは、4MB×4の20MBとなる。
このように、ストレージコントローラ104で管理され、ストレージコントローラ104のGCの単位であるセグメントの大きさ(14MB)と、SSD105で管理され、SSDコントローラ200のGCの単位であるPGの大きさ(20MB)が異なるため、図16に示したように、PGの一部が部分セグメントに対応することになる。
図17に、ストレージコントローラ104がセグメントを再利用するにあたって、上書きを実施した際のドライブアドレス空間305とFMアドレス空間307のマッピングと、その後発生するSSDにおけるGCについて示す。
図17(A)は、ドライブアドレス空間305に部分セグメント604(A)と604(B)が書き込まれた状態を示す。部分セグメント604(A)は、一つのPGに、部分セグメント604(B)は、二つのPGに対応している。図17(B)に示す通り、ストレージコントローラ104が、部分セグメント604(A)を再利用するため、1以上のライトリクエスト410を当該アドレスに発行する。当該アドレスが全て上書きされた段階において、マッピングされていた旧データの属するPGは一部分のみがドライブガベージ703となる。図17(C)に示すように、SSDコントローラ200が当該PGをGCする段階において、再利用されたものとは異なる部分セグメント604(B)の有効データ704が存在するため、データの移動が発生してしまう。
例えば、部分セグメント604(A)、604(B)のサイズが14MB、PGのサイズが20MBであった場合、図17(B)のPGには、部分セグメント604(A)の他に部分セグメント604(B)の有効データ704が6MB分残る。そのため図17(C)に示す通り、FMアドレス末尾ポインタ701に続くアドレスに有効データ704を移動させる。このようにPG700のGCには、ドライブアドレス空間の部分セグメントのサイズとPGのサイズが対応していないことにより、GCによるデータの移動が発生する。
<実施例1のセグメント新規作成手順>
実施例1では、ストレージコントローラ104におけるセグメント600の新規割当てにあたり、図18の処理フロー1300を実施する。以下、その詳細を示す。
実施例1では、ストレージコントローラ104におけるセグメント600の新規割当てにあたり、図18の処理フロー1300を実施する。以下、その詳細を示す。
(S400)セグメント600を作成するRGを決定する。
(S402)ストレージコントローラ104がS400で決定したRGに属するSSD105のPGサイズを取得する。PGサイズの取得方法は例えば、あらかじめ制御プログラムにハードコーディングする、ホスト計算機101との固有I/Fを作成し通知を受け取る、ドライブとの固有I/Fを作成し通知を受け取る、等が挙げられるが、その他の方法を用いてもよい。
(S404)「S402で取得したSSD105のPGサイズ×RGドライブ数」の倍数のサイズをもつセグメント600を作成する。なお、ここでの「PGサイズ」「RAIDグループのドライブ数」は、いずれも誤り訂正符号のサイズを除いた実容量とする。
従来のストレージコントローラ104に本機能を追加することで、SSD105のGC実施時に有効データの移動を抑止することができる。尚、PGは、FMの任意のブロックを1以上含む集合である。これは、SSDのGC時に実施するデータ消去が、FMの物理制約上ブロック単位で実施されるためである。即ち、PGのサイズは、FMのブロックのサイズにPGを構成し、実容量に対応するFMの数によって決まる。例えば、PGが5D+1Pの構成をとる場合には、FMの数は「5」となり、PGのサイズは、5×ブロックサイズとなる。ブロックサイズが4MBの場合には、PGのサイズは20MBとなる。
図19に、その模式図を示す。処理フロー1300に沿ってセグメントを作成することにより、各SSD105に分散した部分セグメント604のサイズはPGサイズ700の倍数となる。その結果、SSD105の各PGは高々1つの部分セグメントしか保持しないことになる。
例えば、図18のS402により取得したPGのサイズが20MBであったとする。この場合、PG700を5D+1P等で構成し、PG700のサイズを20MB(4MBブロック×5)である場合が該当する。コントローラアドレス空間302にマッピングされるドライブアドレス空間305の部分セグメント604は、PG700のサイズに合わせ20MBとすればよい。図18のS400で決定されたRAIDグループは、例えば、3D+1Pであれば、20MBの部分セグメント604を構成すればよく、コントローラアドレス空間302のセグメントのサイズは、60MBとすればよいことになる。
図20に、ストレージコントローラ104がセグメントを再利用するにあたって上書きを実施した際のドライブアドレス空間305とFMアドレス空間307のマッピングを示す。図17と同様に、ストレージコントローラ104が、部分セグメント604(A)を再利用するため、1以上のライトリクエスト410を当該アドレスに発行する。当該アドレスが全て上書きされた段階において、マッピングされていた旧データは、その属するPGを全て使用している。そのため、SSDコントローラ200が当該PGをGCする段階において、有効データが存在せず全てドライブガベージ703となるため、データの移動が発生しない。
なお、あるPGのデータがドライブアドレス空間305上で上書きされている過渡状態において、当該PGがGC対象として選択されると、その時点での当該PGにはドライブガベージ703と有効データが混在しているためデータの移動が発生してしまう。しかし、実際には過渡状態のPGが選択されることはない。その理由は、オーバープロビジョニングによってドライブアドレス空間305よりもFMアドレス空間307が広くなっており、全領域がガベージのPGまたは未使用のPGが必ず存在しているためである。
以上の通り、実施例1では、ストレージコントローラのセグメントのサイズを、PGのサイズ、即ち、SSDのFMのブロックの整数倍とすることで、SSDのGC時にデータの移動が発生することを防ぐことができる。即ち、ストレージコントローラのセグメントはストレージコントローラのGC単位であり、PGのサイズはSSDのGCの単位である。
そのため、ガベージコレクションによるデータ移動を抑えることで、SSDの寿命を伸ばすことができ、SSDの寿命劣化によるエラー訂正処理の軽減等により性能の改善も図ることができる。
実施例2は、実施例1におけるSSD105において、FMアドレス空間307をオーバープロビジョニングしていない場合を対象とする。オーバープロビジョニングしないことにより、SSD105に搭載されたFMの容量を全てストレージコントローラ104が使用可能になる。ただしこの場合、ストレージコントローラ104がSSD105の全容量を把握するため、各SSDに対し、容量を開示させるためのコマンドを発行する。各SSD105は、容量開示コマンドに応答して、自身の容量をストレージコントローラ104に通知する。
ストレージコントローラ104がコントローラGCの実施結果をSSD105に通知しなければ、ストレージコントローラ104によるSSD105への上書きライトでガベージが生成され、SSD105の容量が不足してしまう。そのため、コントローラGC時にUNMAPコマンドを発行し、ストレージコントローラ104とSSD105が認識する空き領域を同期する。以下、図21のフローチャート1600を用いて、SSDのアンマップ処理を説明する。
<SSDのUNMAP処理>
(S800)SSDコントローラがDrive I/F204を介してストレージコントローラ104からUNMAPコマンドを受領する。UNMAPコマンドには、ドライブアドレスとサイズを含む。
(S800)SSDコントローラがDrive I/F204を介してストレージコントローラ104からUNMAPコマンドを受領する。UNMAPコマンドには、ドライブアドレスとサイズを含む。
(S802)SSDコントローラがD−F変換テーブル306を更新する。具体的には、UNMAPコマンドが示すドライブアドレスに該当する行をD−F変換テーブル306から選択し、当該行のFMアドレス空間を無効値に設定する。
図22は、ストレージコントローラ104のGC実施時に、UNMAPコマンド420をSSD105に発行した際のドライブアドレス空間305とFMアドレス空間307のマッピングを示す。図20と同様に、ストレージコントローラ104が、部分セグメント604(A)を再利用するにあたり、マッピングされていた旧データはその属するPGを全て使用している。そのため、UNMAPコマンドもPG全域に渡って発行され、データ移動なしにGC可能である。よって新たにストレージコントローラ104がライトリクエストを発行しても、予備領域は不要である。
例えば、ドライブアドレス空間305の部分セグメント604(A)に対し、複数のライト要求420を受ける、新しいライトデータはFMアドレス末尾ポインタ701に基づいて、新たなPGに書き込まれ、旧データはドライブガベージ703となる。この部分セグメント604(A)に割り当てられているPGをUNMAPコマンドで開放する。
実施例2によれば、オーバープロビジョニングしないことにより、SSD105に搭載されたFMの容量を全てストレージコントローラ104が使用可能になる。
101:ホスト計算機、102:ストレージシステム、103:ネットワーク、104:ストレージコントローラ、105:SSD、106:RAIDグループ、107:コントローラCPU、108:コントローラRAM、109:フロントエンドI/F、110バックエンドI/F、200:SSDコントローラ、201:フラッシュメモリ、202:ドライブCPU、203:ドライブRAM、204:ドライブI/F、205:フラッシュI/F、300:ホストアドレス空間、301:H−C変換テーブル、302:コントローラアドレス空間、303:C−H変換テーブル、304:C−D変換テーブル、305:ドライブアドレス空間、306:D−F変換テーブル、307FMアドレス空間、308:F−D変換テーブル、600:セグメント、603:コントローラガベージ、700:PG、703:ドライブガベージ。
Claims (15)
- ストレージコントローラと、
記憶デバイスと、
を有し、
前記ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録する第1のアドレス空間を管理し、
前記記憶デバイスは、前記ストレージコントローラからの書き込みリクエストに対して追記形式で記録する第2のアドレス空間を管理し、
前記ストレージコントローラは、前記第1のアドレス空間において前記ストレージコントローラがガベージコレクションを実行する単位を、前記第2のアドレス空間において前記記憶デバイスがガベージコレクションを実行する単位の倍数とする、ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置において、
前記ストレージコントローラは、前記第1のアドレス空間においてガベージコレクションを実行した際に、前記記憶デバイスにガベージコレクションによって空きとなった領域を通知するコマンドを発行する、ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置において、
前記ストレージコントローラは、前記記憶デバイスに対してガベージコレクションを実行する単位を要求し、
前記記憶デバイスは、前記ストレージコントローラの要求に対してガベージコレクションを実行する単位を、前記ストレージコントローラに応答し、
前記ストレージコントローラは、前記応答に基づいてガベージコレクションを実行する単位を決定する、
ことを特徴とする情報処理装置。 - 請求項2に記載の情報処理装置において、
前記ストレージコントローラは、前記記憶デバイスに対してガベージコレクションを実行する単位を要求し、
前記記憶デバイスは、前記ストレージコントローラの要求に対してガベージコレクションを実行する単位を、前記ストレージコントローラに応答し、
前記ストレージコントローラは、前記応答に基づいてガベージコレクションを実行する単位を決定する、
ことを特徴とする情報処理装置。 - 請求項1に記載の情報処理装置において、
前記記憶デバイスは、前記ストレージコントローラに対して、前記記憶デバイスが有する記憶領域を開示する、ことを特徴とする情報処理装置。 - ストレージコントローラと、
複数の記憶デバイスと、
を有し、
前記ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録し、セグメント単位で管理される第1のアドレス空間を有し、
前記記憶デバイスは、前記ストレージコントローラからの書き込みリクエストに対して追記形式で記録し、パリティグループ単位で管理される第2のアドレス空間を有し、
前記第1のアドレス空間において、前記ストレージコントローラがガベージコレクションを前記セグメント単位で実行し、前記第2のアドレス空間において前記記憶デバイスがガベージコレクションを前記パリティグループの単位で実行し、
前記ストレージコントローラは、前記セグメント単位を、前記パリティグループの単位の倍数とする、ことを特徴とする情報処理装置。 - 請求項6に記載の情報処理装置において、
前記記憶デバイスは、複数のフラッシュメモリを有し、
前記記憶デバイスにより管理される前記パリティグループのサイズは、前記複数のフラッシュメモリの消去単位の倍数であり、
前記ストレージコントローラにより管理されるセグメントのサイズは、前記複数のフラッシュメモリの消去単位の倍数とする、ことを特徴とする情報処理装置。 - 請求項7に記載の情報処理装置において、
前記ストレージコントローラは、前記第1のアドレス空間においてガベージコレクションを実行した際に、前記記憶デバイスにガベージコレクションによって空きとなった領域を通知するコマンドを発行する、ことを特徴とする情報処理装置。 - 請求項7に記載の情報処理装置において、
前記ストレージコントローラは、前記記憶デバイスに対してガベージコレクションを実行する単位を要求し、
前記記憶デバイスは、前記ストレージコントローラの要求に対してガベージコレクションを実行する単位を、前記ストレージコントローラに応答し、
前記ストレージコントローラは、前記応答に基づいてガベージコレクションを実行する単位を決定する、
ことを特徴とする情報処理装置。 - ストレージコントローラと、複数の記憶デバイスとを有する情報処理装置の記憶空間の制御方法であって、
前記ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録する第1のアドレス空間を管理し、
前記記憶デバイスは、前記ストレージコントローラからの書き込みリクエストに対して追記形式で記録する第2のアドレス空間を管理し、
前記ストレージコントローラは、前記第1のアドレス空間において前記ストレージコントローラがガベージコレクションを実行する単位を、前記第2のアドレス空間において前記記憶デバイスがガベージコレクションを実行する単位の倍数とする、ことを特徴とする制御方法。 - 請求項10に記載の制御方法において、
前記ストレージコントローラは、前記第1のアドレス空間においてガベージコレクションを実行した際に、前記記憶デバイスにガベージコレクションによって空きとなった領域を通知するコマンドを発行する、ことを特徴とする制御方法。 - 請求項10に記載の制御方法において、
前記ストレージコントローラは、前記記憶デバイスに対してガベージコレクションを実行する単位を要求し、
前記記憶デバイスは、前記ストレージコントローラの要求に対してガベージコレクションを実行する単位を、前記ストレージコントローラに応答し、
前記ストレージコントローラは、前記応答に基づいてガベージコレクションを実行する単位を決定する、
ことを特徴とする制御方法。 - 請求項10に記載の制御方法において、
前記ストレージコントローラは、ホストからの書き込みリクエストに対して追記形式で記録し、セグメント単位で管理される第1のアドレス空間を有し、
前記記憶デバイスは、前記ストレージコントローラからの書き込みリクエストに対して追記形式で記録し、パリティグループ単位で管理される第2のアドレス空間を有し、
前記ストレージコントローラの前記第1のアドレス空間においてガベージコレクションを前記セグメント単位で実行し、前記記憶デバイスの前記第2のアドレス空間においてガベージコレクションを前記パリティグループの単位で実行し、
前記ストレージコントローラは、前記セグメント単位を、前記パリティグループの単位の倍数とする、ことを特徴とする制御方法。 - 請求項13に記載の制御方法において、
前記記憶デバイスは、複数のフラッシュメモリを有し、
前記記憶デバイスにより管理される前記パリティグループのサイズは、前記複数のフラッシュメモリの消去単位の倍数であり、
前記ストレージコントローラにより管理されるセグメントのサイズは、前記複数のフラッシュメモリの消去単位の倍数とする、ことを特徴とする制御方法。 - 請求項13に記載の制御方法において、
前記ストレージコントローラは、前記第1のアドレス空間においてガベージコレクションを実行した際に、前記記憶デバイスにガベージコレクションによって空きとなった領域を通知するコマンドを発行する、ことを特徴とする制御方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018162817A JP2020035300A (ja) | 2018-08-31 | 2018-08-31 | 情報処理装置および制御方法 |
US16/292,490 US20200073586A1 (en) | 2018-08-31 | 2019-03-05 | Information processor and control method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018162817A JP2020035300A (ja) | 2018-08-31 | 2018-08-31 | 情報処理装置および制御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020035300A true JP2020035300A (ja) | 2020-03-05 |
Family
ID=69641097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018162817A Pending JP2020035300A (ja) | 2018-08-31 | 2018-08-31 | 情報処理装置および制御方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200073586A1 (ja) |
JP (1) | JP2020035300A (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11947489B2 (en) | 2017-09-05 | 2024-04-02 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11748203B2 (en) | 2018-01-11 | 2023-09-05 | Robin Systems, Inc. | Multi-role application orchestration in a distributed storage system |
US11392363B2 (en) | 2018-01-11 | 2022-07-19 | Robin Systems, Inc. | Implementing application entrypoints with containers of a bundled application |
US11582168B2 (en) | 2018-01-11 | 2023-02-14 | Robin Systems, Inc. | Fenced clone applications |
US11256434B2 (en) | 2019-04-17 | 2022-02-22 | Robin Systems, Inc. | Data de-duplication |
US11249851B2 (en) * | 2019-09-05 | 2022-02-15 | Robin Systems, Inc. | Creating snapshots of a storage volume in a distributed storage system |
US11520650B2 (en) | 2019-09-05 | 2022-12-06 | Robin Systems, Inc. | Performing root cause analysis in a multi-role application |
US11347684B2 (en) | 2019-10-04 | 2022-05-31 | Robin Systems, Inc. | Rolling back KUBERNETES applications including custom resources |
US11403188B2 (en) | 2019-12-04 | 2022-08-02 | Robin Systems, Inc. | Operation-level consistency points and rollback |
US11528186B2 (en) | 2020-06-16 | 2022-12-13 | Robin Systems, Inc. | Automated initialization of bare metal servers |
US11740980B2 (en) | 2020-09-22 | 2023-08-29 | Robin Systems, Inc. | Managing snapshot metadata following backup |
US11743188B2 (en) | 2020-10-01 | 2023-08-29 | Robin Systems, Inc. | Check-in monitoring for workflows |
US11271895B1 (en) | 2020-10-07 | 2022-03-08 | Robin Systems, Inc. | Implementing advanced networking capabilities using helm charts |
US11456914B2 (en) | 2020-10-07 | 2022-09-27 | Robin Systems, Inc. | Implementing affinity and anti-affinity with KUBERNETES |
US11750451B2 (en) | 2020-11-04 | 2023-09-05 | Robin Systems, Inc. | Batch manager for complex workflows |
US11586564B2 (en) | 2020-11-25 | 2023-02-21 | Samsung Electronics Co., Ltd | Head of line entry processing in a buffer memory device |
US11556361B2 (en) | 2020-12-09 | 2023-01-17 | Robin Systems, Inc. | Monitoring and managing of complex multi-role applications |
US11762587B2 (en) | 2021-05-05 | 2023-09-19 | Samsung Electronics Co., Ltd | Method and memory device for atomic processing of fused commands |
-
2018
- 2018-08-31 JP JP2018162817A patent/JP2020035300A/ja active Pending
-
2019
- 2019-03-05 US US16/292,490 patent/US20200073586A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200073586A1 (en) | 2020-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020035300A (ja) | 情報処理装置および制御方法 | |
US10073640B1 (en) | Large scale implementation of a plurality of open channel solid state drives | |
US8832371B2 (en) | Storage system with multiple flash memory packages and data control method therefor | |
US9916248B2 (en) | Storage device and method for controlling storage device with compressed and uncompressed volumes and storing compressed data in cache | |
JP6073471B2 (ja) | ストレージ装置 | |
CN113867647B (zh) | 虚拟存储系统及其控制方法 | |
JP5792313B2 (ja) | ストレージシステム | |
US10542089B2 (en) | Large scale implementation of a plurality of open channel solid state drives | |
JP6677740B2 (ja) | ストレージシステム | |
JP5816303B2 (ja) | フラッシュメモリを含むストレージシステム、及び記憶制御方法 | |
US20150095555A1 (en) | Method of thin provisioning in a solid state disk array | |
WO2015162758A1 (ja) | ストレージシステム | |
US9792073B2 (en) | Method of LUN management in a solid state disk array | |
EP2631916A1 (en) | Data deletion method and device | |
US11928053B2 (en) | System garbage collection method and method for garbage collection in solid state disk | |
KR20100077156A (ko) | 씬 프로비저닝 이송 및 스크러빙 방법 | |
US20190243758A1 (en) | Storage control device and storage control method | |
JP2020071583A (ja) | データ管理装置、データ管理方法、及びデータ管理プログラム | |
JP6817340B2 (ja) | 計算機 | |
US10740250B2 (en) | Storage apparatus | |
WO2019026221A1 (ja) | ストレージシステム及びストレージ制御方法 | |
JP7140807B2 (ja) | 仮想ストレージシステム | |
WO2017212515A1 (ja) | ストレージシステム、計算機、およびストレージ制御方法 | |
US12045517B1 (en) | Storage allocation techniques for large writes based on reserving one or more additional chunks of a block | |
JP6605762B2 (ja) | 記憶ドライブの故障により消失したデータを復元する装置 |