JP6320318B2 - 記憶装置及び記憶装置を含む情報処理システム - Google Patents

記憶装置及び記憶装置を含む情報処理システム Download PDF

Info

Publication number
JP6320318B2
JP6320318B2 JP2015028631A JP2015028631A JP6320318B2 JP 6320318 B2 JP6320318 B2 JP 6320318B2 JP 2015028631 A JP2015028631 A JP 2015028631A JP 2015028631 A JP2015028631 A JP 2015028631A JP 6320318 B2 JP6320318 B2 JP 6320318B2
Authority
JP
Japan
Prior art keywords
storage device
storage
data
write
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.)
Active
Application number
JP2015028631A
Other languages
English (en)
Other versions
JP2016151868A (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.)
Kioxia Corp
Original Assignee
Toshiba Memory Corp
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 Toshiba Memory Corp filed Critical Toshiba Memory Corp
Priority to JP2015028631A priority Critical patent/JP6320318B2/ja
Priority to US14/836,873 priority patent/US20160239412A1/en
Publication of JP2016151868A publication Critical patent/JP2016151868A/ja
Application granted granted Critical
Publication of JP6320318B2 publication Critical patent/JP6320318B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Description

実施形態は、記憶装置及び記憶装置を含む情報処理システムに関する。
利用寿命のあるメモリ素子を用いた不揮発性の情報記憶装置を含む情報処理システムが知られている。この情報処理システムは、情報記憶装置の領域の更新回数を計算して寿命を判定し、寿命時に自らの機能を無効化することにより、情報記憶装置の寿命時にセキュリティ機能の低下を生じさせないようにする(下記特許文献1参照)。
特許第4394413号公報
ストレージボリュームに対する書き込み性能の低下を解消することができる記憶装置、及び記憶装置を含む情報処理システムが求められている。
実施形態によれば、不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスを備える記憶装置は、前記複数の記憶デバイスを制御するコントローラを具備する。前記コントローラは、前記記憶装置の書き込み性能が低下したことをホストが検出した場合に前記ホストから通知される前記書き込み性能の低下を示す通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値よりも高い第1の記憶デバイスに対してガベージコレクションの実行を指示する。前記コントローラは、前記第1の記憶デバイスがガベージコレクションを実行している間、前記第1の記憶デバイスに対する書き込みデータを退避バッファに書き込む。前記コントローラは、前記第1の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第1の記憶デバイスに書き込む。
また、実施形態によれば、情報処理システムは、不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスと、前記複数の記憶デバイスを制御するコントローラとを具備する記憶装置と、前記記憶装置に対してデータの読み書きを行い、前記記憶装置の書き込み性能の低下を検出した場合に前記書き込み性能が低下したことを通知するホストとを具備する。前記コントローラは、前記通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値が閾値よりも高い第1の記憶デバイスに対してガベージコレクションの実行を指示する。前記コントローラは、前記第1の記憶デバイスがガベージコレクションを実行している間、前記第1の記憶デバイスに対する書き込みデータを退避バッファに書き込む。前記コントローラは、前記第1の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第1の記憶デバイスに書き込む。
実施形態の記憶装置及び情報処理システムによれば、ストレージボリュームに対する書き込み性能の低下を解消することができる。
第1の実施形態に係る記憶装置の概略構成の一例を示す図。 第1の実施形態に係るデータ書き込み時のアドレス表の一例を説明するための図。 第1の実施形態に係るデータ読み取り時のアドレス表の一例を説明するための図。 第1の実施形態に係るデータ書き戻し時のアドレス表の一例を説明するための図。 第1の実施形態に係る処理の一例を示すタイミングチャート。 第2の実施形態に係る情報処理システムの全体構成の一例を示す図。 第2の実施形態に係るホストの概略構成の一例を示す図。 第2の実施形態に係る記憶装置の概略構成の一例を示す図。 第2の実施形態に係る処理のタイミングの一例を示すタイミングチャート。 第2の実施形態に係る処理のタイミングの一例を示すタイミングチャート。 記憶装置を含む情報処理装置の一例を示す図。 記憶装置の概略構成の他の一例を示す図。
以下、各実施形態について説明する。
(第1の実施形態)
図1は第1の実施形態に係る記憶装置の構成の一例を示す図である。
図1に示すように、記憶装置10は、全体コントローラ(第1制御部)100、キャッシュ110、退避用バッファ(データ保存部)120、及び記憶デバイス131〜136を有している。
全体コントローラ100は、PCIe(PCI Express)インタフェース140を介してホスト(図示省略)と接続されている。また、全体コントローラ100は、バスライン141を介して退避用バッファ120、及び記憶デバイス131〜136とそれぞれ接続されており、バスライン142を介して退避用バッファ120と接続されており、バスライン143を介してキャッシュ110と接続されている。
記憶デバイス131〜136は、それぞれ、デバイスコントローラ131A〜136A(第2制御部)、NANDフラッシュメモリ(不揮発性メモリ)131B〜136Bを有している。また、デバイスコントローラ131A〜136Aは、それぞれブロック数管理部(管理部,管理手段)131C〜136C、及び第1閾値記憶部131D〜136Dを有している。
全体コントローラ100は、キャッシュ110、退避用バッファ120、記憶デバイス131〜136を制御する。より詳細には、全体コントローラ100は、ホスト(図示省略)からの指令に基づいて、記憶デバイス131〜136にデータを書き込み、又は、記憶デバイス131〜136からデータを読み出す。
また、全体コントローラ100は、アドレス表101を有している。このアドレス表101には、データの配置、例えばガベージコレクション(以下、GCという)処理中に退避用バッファ120にデータが書き込まれたときに、当該データに対応する論理ブロックアドレスが記録される。全体コントローラ100は、記憶デバイス131〜136がGC処理を実行している間、アドレス表101、キャッシュ110及び退避用バッファ120を利用して、新規データに対する処理を実行する。この処理の詳細は、後述する。
さらに、全体コントローラ100は、記憶デバイス131と記憶デバイス132とを組み合わせ、それぞれの記憶領域を1つのストレージボリューム150として管理する。つまり、全体コントローラ100は、ホスト(図示省略)に対して、ストレージボリューム150、及び記憶デバイス133〜136の5つの記憶領域を提供する。ストレージボリューム150は、記憶デバイス131及び132により、ストライピング、各種のRAID(Redundant Arrays of Inexpensive Disks 又は、Redundant Arrays of Independent Disks)が構成される。また、ストレージボリューム150は、RAIDに代えて、例えば、JBOD(Just a bunch of Disks)のように記憶デバイス131及び132により単純に記憶領域の拡大を行った構成でも良い。このようにストレージボリューム150を構成する方式は問わない。また、本第1の実施形態においては、記憶デバイス131及び132によりストレージボリューム150を構成する場合で説明するが、任意の組み合わせでストレージボリューム150が構成されても良い。
キャッシュ110は、全体コントローラ100がデータを退避用バッファ120、あるいは記憶デバイス133〜136に書き込むとき、又は退避用バッファ120、あるいは記憶デバイス133〜136からデータを読み出すときに、データを一時的に保存するために用いられる。キャッシュ110は、不揮発性メモリにより構成されれば良く、例えば、MRAM(Magneto resistive Random Access Memory)を用いる。また、キャッシュ110の書き込み性能は、NANDフラッシュメモリ131B〜136Bの書き込み性能より高速であることが望ましい。
退避用バッファ120は、不揮発性メモリであり、GC処理を行う際に用いられる。本第1の実施形態においては、退避用バッファ120の記憶容量はNANDフラッシュメモリ131B〜136Bの記憶容量と同一である。NANDフラッシュメモリ131B〜136Bの記憶容量が異なる場合は、退避用バッファ120の記憶容量は記憶容量が最も大きいNANDフラッシュメモリよりも大きくする。また、退避用バッファ120は、不揮発性メモリで構成されればよく、例えばMRAMを用いるのは、キャッシュ110の場合と同様である。また、退避用バッファ120の書き込み性能は、NANDフラッシュメモリ131B〜136Bの書き込み性能より高速であることが望ましい。
次に、記憶デバイス131〜136について説明する。記憶デバイス131〜136は、それぞれ実質的に同様な構成をしているため、記憶デバイス131を一例に挙げて説明する。
記憶デバイス131は、全体コントローラ100の制御に基づいてデータを記憶する。より詳細には、全体コントローラの指示に基づいて、デバイスコントローラ131AがNANDフラッシュメモリ131Bに対してデータの書き込み、読み取り等を制御する。
NANDフラッシュメモリ131Bは、データの書き込み、データの読み出しがページ単位で行われる一方、データの消去はブロック単位で行われる。ここで、例えば、1ページは2112バイトであり、1ブロックは64ページである。NANDフラッシュメモリ131Bは、このような性質を有するため、隙間のメモリ領域などを集め連続して利用可能なメモリ領域を確保する処理、言い換えれば、記憶領域内でデータを配置する処理(GC処理)を行う必要が生じる。そして、GC処理の実行中は、デバイスコントローラ131Aは、NANDフラッシュメモリ131Bに対して新規データの書き込みができない。
デバイスコントローラ131Aは、全体コントローラ100の指示に基づいてNANDフラッシュメモリ131Bにデータを記憶し、又は、NANDフラッシュメモリ131Bからデータを読み出す。
また、デバイスコントローラ131Aは、NANDフラッシュメモリ131Bについて、論理ブロックアドレスと物理ブロックアドレスとの変換処理、ウェアレベリング処理、GC処理を実行する。ウェアレベリング処理は、各記憶領域の書き込み回数を平均化する処理であり、GC処理は既述の処理である。
ブロック数管理部131Cは、ブロック(所定単位)に対応させたガベージコレクションが必要か否かを示す配置情報等を管理する。より詳細には、ブロック数管理部131Cは、GC処理が必要になっているブロック(所定単位)のブロック数(配置情報、以下、GCブロック数という)、及びNANDフラッシュメモリ131Bの全ブロックに対するGCブロック数の割合(以下、GCブロック数率という)を管理する。本第1の実施形態においては、前記全ブロック数(記憶領域)には、NANDフラッシュメモリ131B内の予備ブロックは含まれないこととする。
第1閾値記憶部131Dは、NANDフラッシュメモリ131Bの全ブロック数に対するGCブロック数の占める割合がどの割合になったときに、GC処理を実行するか否かを規定する第1閾値を記憶する。
本第1の実施形態においては、第1閾値は記憶デバイス131〜136に対して共通であり、0.8とする。しかし、第1閾値としては、0〜1未満の値を設定することが可能である。また、ホスト(図示省略)からストレージボリューム150に対する単位時間当たりの書き込みデータ量が多い場合は、当該ストレージボリューム150を構成する記憶デバイス131,132における第1閾値を0.75と既述の第1閾値0.8より小さく設定しても良い。逆に、ホスト(図示省略)からストレージボリューム150への単位時間当たりの書き込みデータ量が少ない場合は、当該ストレージボリューム150に属する記憶デバイス131,132における第1閾値を0.9と既述の第1閾値0.8より大きい値に設定しても良い。これらの処理は、例えば、全体コントローラ100の指示に基づいて、デイバスコントローラ131A,131Bがそれぞれ第1閾値記憶部131D,132Dの閾値を変更する。時間当たりの書き込みデータ量が多い用途が想定される場合は、短時間で記憶デバイスがガベージコレクションの必要な状態に達することが予想されるため、例えば閾値を0.8より小さい値に設定し、書き込み性能劣化に対する余裕を多めにとることができる。それに対し、時間当たりの書き込みデータ量が比較的少ない場合は、記憶デバイスがガベージコレクションの必要な状態に達するまで前記より長い時間がかかる可能性が高いため、例えば閾値を0.8より大きい値に設定することが考えられる。
次に、図2から図4を参照してアドレス表101について説明する。
図2は、データ書き込み時のアドレス表101の一例を説明するための図である。より詳細には、図2は、GC処理の完了前、且つ、退避用バッファ120にデータを書き込む場合に、該データの論理ブロックアドレスを管理する方法の一例を説明するための図である。
図2に示すように、退避用バッファ120に書き込みを行った新規データ(書き換えデータを含む。以下同様)の論理ブロックアドレスについては全てアドレス表101に記録される。例えば、記憶デバイス131がGC処理実行中である場合は、記憶デバイス131に対する新規データの書き込みを行うことができない。このため、退避バッファ120に当該新規データの書き込みが行われる。このとき、新規データの論理ブロックアドレスがアドレス表101に記録される。
図3は、データ読み取り時のアドレス表101の一例を説明するための図である。より詳細には、図3は、GC処理の完了前、且つ、データを読み出す場合に、データの論理ブロックアドレスを管理する方法の一例を説明するための図である。
図3に示すように、記憶デバイス131〜136からのデータの読み取り指示を全体コントローラ100がホスト(図示省略)から受信した場合(T11)、全体コントローラ100は、読み取り対象のデータの論理ブロックアドレスがアドレス表101に存在するか否かを検索する(T12)。全体コントローラ100は、論理ブロックアドレスが存在する場合、退避用バッファ120を参照し、論理ブロックアドレスが存在しない場合、記憶デバイス131〜136のうちの該当する記憶デバイス(以下、該当記憶デバイスという)を参照する(T13)。
論理ブロックアドレスがアドレス表101に存在する場合、全体コントローラ100は、退避用バッファ120にアクセスする(T14)。全体コントローラ100は、論理ブロックアドレスと対応するデータを退避バッファ120より読み出す(T15)。読み出されたデータがホスト(図示省略)に送信される。
一方、論理ブロックアドレスがアドレス表101に存在しない場合、全体コントローラ100は、該当記憶デバイスにアクセスする(T16)。全体コントローラ100は、論理ブロックアドレスと対応するデータを該当記憶デバイスより読み出す(T17)。読み出されたデータがホスト(図示省略)に送信される。
図4は、データ書き戻し時のアドレス表の一例を説明するための図である。より詳細には、GC処理が完了後、且つ、退避用バッファ120に退避させたデータを対応する記憶デバイスに記憶する場合に、データの論理ブロックアドレスを管理する方法の一例を説明するための図である。
全体コントローラ100は、アドレス表101で管理されている論理ブロックアドレスに対して、退避用バッファ120からデータの書き戻しが完了した場合、その論理ブロックアドレスについては、アドレス表101より削除する、言い換えればクリアする(T21)。なお、図4においては、論理ブロックアドレス上に取り消し線を引いて削除を表現している。
また、退避用バッファ120に退避させたデータの書き戻しが完了するまで、書き戻し中の記憶デバイスにはデータが書き込めないので、新規データの書き込みは、退避用バッファ120に行われる(退避される)。このため、書き戻しの処理が進行中のときも新規データに対応する論理ブロックアドレスがアドレス表101に記録(追加)される(T22)。
アドレス表101に記録されている論理ブロックアドレスが全て削除されたときに、退避バッファ120に退避させていたデータが本来の記憶デバイスに送信され、書き戻し処理が完了する。以後は、新規のデータ書き込みは、退避用バッファ120にではなく、本来の記憶デバイスに書き込まれる(T23)。
図5は、GC処理を実行するときの全体コントローラ100とデバイスコントローラ131Aとの処理の一例を示すタイミングチャートである。なお、以下では、ストレージボリューム150を構成する記憶デバイス131に対して、データの書き込み実行期間中(T101)にGC処理が必要になった場合を例に挙げて説明する。
デバイスコントローラ131Aは、データ書き込み実行期間中においては、ブロック数管理部131Cにより、GCブロック数と共にGCブロック数率を管理している。そして、デバイスコントローラ131Aは、例えば、書き込みが行われる毎に、GCブロック数率が第1閾値である0.8を超えた否かを判断する。GCブロック数率が第1閾値を超えたと判断した場合、デバイスコントローラ131Aは、全体コントローラ100へGCブロック数率が第1閾値を超えた旨(第1通知)を通知する(T102)。この通知は、言い換えれば、ガベージコレクション処理が必要である旨の通知である。
この第1通知を受け取った全体コントローラ100は、デバイスコントローラ131Aに対して新規のデータの書き込みを停止する(T103)。GC処理の実行により、記憶デバイス131の書き込みができなくなるためである。
そして、所定時間経過すると、書き込んでいるデータの最終データのNANDフラッシュメモリ131Bに対する書き込みが完了する(T104)。
次に、全体コントローラ100は、記憶デバイス131に対する新規データの書き込み先を退避用バッファ120にリダイレクトする(T106:退避手段)。これにより、新規データの書き込みが退避用バッファ120に行われる。なお、リダイレクトの設定が完了するまでに、ホストから書き込み要求を受信した場合は、全体コントローラ100は、書き込み要求をキャッシュ110に一時保存してから退避用バッファ120に書き込む(T105)。
次に、全体コントローラ100は、デバイスコントローラ131Aに対して、GC処理の実行要求(指示)をする(T107)。この要求(指示)を受信すると、デバイスコントローラ131Aは、NANDフラッシュメモリ131BのGC処理を実行する(T108:実行手段)。
そして、デバイスコントローラ131Aは、GC処理の実行が完了すると、全体コントローラ100に対して、GC処理の実行が完了した旨(第2通知)を通知する(T109)。この通知は、言い換えれば、ガベージコレクション処理が完了した旨の通知である。
全体コントローラ100は、この実行完了の通知(第2通知)を受信すると、退避用バッファ120の読み出しを開始する(T110)。これにより、退避用バッファ120から全体コントローラ100にデータ転送がされ(T111)、更に、全体コントローラ100からデバイスコントローラ131Aにデータ転送がされる(T112)。このときに、転送されるデータに対応する論理ブロックアドレスがアドレス表101から削除される。
デバイスコントローラ131Aは、転送されたデータ(退避用バッファ120のデータ)をNANDフラッシュメモリ131Bに書き出す(T113:書き込み手段)。このように実行完了の通知を受信した場合、退避用バッファ120に退避させていたデータが該通知の通知元の記憶デバイス131に書き込まれる。なお、この処理は、全体コントローラ100を介して退避用バッファ120からのデータが転送されている間、実行される。
そして、全体コントローラ100は、退避用バッファ120から最終のデータが転送された場合(T114)、アドレス表101から論理ブロックアドレスが全て削除されているか(空白か)否かを確認する(T116)。アドレス表101から論理ブロックアドレスが全て削除されていなければ、転送されたデータが最終データでない可能性があるため、所定のエラー処理が実行される。なお、書き出し実行期間が完了(データの書き込みが再開)するまでに、ホストから受信した書き込み要求は全体コントローラ100のキャッシュ110に一時保存してから、記憶デバイス131に書き出す処理が実行される(T115)。
アドレス表101から論理ブロックアドレスが全て削除されている場合は、最終のデータが全体コントローラ100からデバイスコントローラ131Aに転送される(T117)。そして、デバイスコントローラ131Aは、最終のデータをNANDフラッシュメモリ131Bに書き出す。これにより、退避用バッファ120に退避させたデータをNANDフラッシュメモリ131Bに書き出す処理(書き出し実行期間)が終了する。
このように書き出し実行期間が終了した後、全体コントローラ100が記憶デバイス131に対して書き込み要求を受信した場合、デバイスコントローラ131Aに対して、データ書き込みを再開する(T118)。この書き込み要求が実行されている間が、書き込み実行期間となる。
なお、ストレージボリューム150を構成する他の記憶デバイス132についてもGCブロック数率が第1閾値0.8を超えていた場合は、アドレス表101から論理ブロックアドレスが全て削除された後、デバイスコントローラ132A、及び全体コントローラ100により、既述の処理(T101〜T128)と実質的に同様な処理が実行される。記憶デバイス131,132のいずれからGC処理をするかは任意である。
以上のように説明した記憶装置10によると、記憶デバイス131、132により構成されるストレージボリューム150については、いずれの記憶デバイス131、132についてもGCブロック数率が第1閾値(0.8)を超えたときに、GC処理が自動的に実行される。このため、ストレージボリューム150を構成する記憶デバイス131,132について、GC処理が必要なブロック数が多くなり、書き込み性能が低下するという事態を自発的に解消することができる。したがって、ストレージボリューム150を構成する1つの記憶デバイス131(又は132)の書き込み性能の低下の影響を受けて、ストレージボリューム150全体の書き込み性能が低下するという事態を事前に防止することができる。
また、記憶装置10は、GC処理実行中の記憶デバイス131に対する新規データの書き込みを、アドレス表101による管理の下で、退避用バッファ120に一時的に保存し、GC処理が完了した後、記憶デバイスに131一時保存したデータを書き出すことができる。
さらに、記憶装置10は、新規の書き込みを停止(T103)してから新規の書き込みをリダイレクトする(T106)までの間、及び最終のデータ転送(T114)からデータの書き込みが再開(T118)するまでの間は、新規の書き込みデータについては、キャッシュ110に一時的に保存することができる。
また、記憶装置10は、キャッシュ110及び退避用バッファ120に、例えばMRAMを使用する。MRAMの書き込みレイテンシは10ナノ秒オーダーである。一方、NANDフラッシュメモリ131B,132Bの書き込みレイテンシは、ミリ秒オーダーである。このため、MRAMは、NANDフラッシュメモリ131B,132Bよりも高速な書き込みを行うことができる。よって、記憶装置10は、GC処理の際に、キャッシュ110、及び退避用バッファ120を利用した処理を行ってもストレージボリューム150に対する書き込み性能の低下を防止することができる。
一例を挙げてより詳細に説明する。ストレージボリューム150を構成する記憶デバイス131、132のNANDフラッシュメモリ131B、132Bは共に、平均書き込みレイテンシ0.1ミリ秒、最大書き込みレイテンシ100ミリ秒の書き込み性能であるとする。
また、記憶デバイス131の書き込みレイテンシが50ミリ秒であり、記憶デバイス132の書き込み性能が低下しておらず書き込みレイテンシ0.1ミリ秒であったとする。
この場合、従来の記憶装置の場合においては、ストレージボリューム150全体の書き込みレイテンシは、記憶デバイス131の書き込み性能悪化の影響を受けて50ミリ秒になる。これは、記憶デバイス131、132のいずれにも書き込み性能に低下が生じていない場合と比較すると、500倍(0.1ミリ秒:50ミリ秒)になる。
これに対して、本第1の実施形態の記憶装置10の場合、例えば記憶デバイス131で書き込み性能の低下が生じ得る場合(GCブロック数率>第1閾値)、記憶デバイス131には新規データの書き込みを行わない。これに代わり、記憶装置10は、NANDフラッシュメモリ131Bよりも書き込みが高速なキャッシュ110又は退避用バッファ120に該データの書き込みを行う。このため、ストレージボリューム150の書き込みレイテンシは、記憶デバイス132の平均書き込みレイテンシである0.1ミリ秒に抑えられる。したがって、ストレージボリューム150に対する書き込み性能の低下を防止できる。
また、キャッシュ110、及び退避用バッファ120にMRAM(不揮発性メモリ)を用いることによって、既述の処理(参照:図5)を実行中に、記憶装置10に電源断のような異常が発生しても、記憶装置10はデータ損失を回避することができる。
なお、上記第1の実施形態では、ストレージボリューム150は、記憶デバイス131及び132という2つの記憶デバイスから構成されている。しかし、ストレージボリューム150は、3つ以上の記憶デバイスにより構成されていても良い。ストレージボリューム150は、例えば、RAID1+0のように4つの記憶デバイスから構成されている場合、RAID5のように5つの記憶デバイスから構成されている場合、又はRAID6のように6つの記憶デバイスから構成されている場合であっても良い。
(第2の実施形態)
図6は、第2の実施形態に係る情報処理システム1の構成を示す図である。図6に示すように、情報処理システム1は、記憶装置20と、ホスト30とを含み構成されている。また、記憶装置20と、ホスト30とは、PCleインタフェース240、管理用LAN(Local Area Network)250によりそれぞれ接続されている。
図7は、ホスト30の構成の一例を示す図である。図7に示すように、ホスト30は、アプリケーション部310、性能監視部(ホスト制御部)320、及びネットワークインタフェース330を有している。
アプリケーション部310は、記憶装置20に対するデータの書き込み、記憶装置20からのデータの読み出しを制御する。
ネットワークインタフェース330は、記憶装置20のネットワークインタフェース251と管理用LAN250を介して接続する。
性能監視部320は、ホスト30から記憶装置20のストレージボリューム251,252(後述する)に対する書き込みレイテンシを測定する。また、性能監視部320は、ストレージボリューム251,252の書き込み性能が所定条件に合致したか否かを判断する。更に、性能監視部320は、ストレージボリューム251,252について書き込み性能が書き込み所定条件に合致したと判断した場合、ネットワークインタフェース351を介して記憶装置20の全体コントローラ200(後述する)に対して、ストレージボリューム251,252の書き込み性能が所定条件に合致した旨(第3通知,性能低下通知)を通知する。ここで、所定条件とは、ストレージボリュームの書き込み性能が低下したことを判定する条件である(詳細は、後述する)。よって、この通知は、言い換えれば、ストレージボリュームの書き込み性能が低下した旨の通知といえる。
図8は、記憶装置20の構成の一例を示す図である。図8に示すように、記憶装置20は、全体コントローラ200、キャッシュ210、退避用バッファ220,221、記憶デバイス231〜238、及びネットワークインタフェース251を有している。
全体コントローラ200は、アドレス表201,202、第2閾値記憶部211を有している。
記憶デバイス231〜238は、デバイスコントローラ231A〜238A、及びNANDフラッシュメモリ231B〜238Bを有している。また、デバイスコントローラ231A〜238Aは、ブロック数管理部231C〜238C、及び第1閾値記憶部231D〜238Dを有している。このように記憶デバイス231〜238の構成は、それぞれ第1の実施形態の記憶デバイス131と実質的に同様な構成であるため、詳細な説明は省略する。
全体コントローラ200は、バスライン241を介して退避用バッファ220,221、及び記憶デバイス231〜238と接続されており、バスライン242を介してネットワークインタフェース251と接続されており、バスライン243を介してキャッシュ210と接続されている。また、全体コントローラ200は、PCleインタフェース240、及びネットワークインタフェース251並びに管理用LAN250を介してホスト30と接続されている。
全体コントローラ200は、キャッシュ210、退避用バッファ220,221、記憶デバイス231〜238を制御する。より詳細には、全体コントローラ200は、ホスト30からの指令に基づいて、記憶デバイス231〜238にデータを書き込み、又は、記憶デバイス231〜238からデータを読み出す。
キャッシュ210、アドレス表201,202、退避用バッファ220,221については、第1の実施形態のキャッシュ110、アドレス表101、退避用バッファ120とそれぞれ実質的に同様であるため、詳細な説明は省略する。
第2閾値記憶部211は、NANDフラッシュメモリ231B〜238Bそれぞれの全ブロック数に対するGCブロック数の占める割合がどの割合になったときに、GC処理を実行するかを規定する第2閾値を記憶する。なお、全ブロック数には、NANDフラッシュメモリ131B内の予備ブロックは含まれないこととする。本第2の実施形態においては、NANDフラッシュメモリ231B〜238B全て共通して、第2閾値は0.8とする。しかし、第2閾値としては、0〜1未満の値を設定することが可能である。
また、第2閾値記憶部211に記憶される第2閾値は、アプリケーション(プログラム)の種類、アプリケーション(プログラム)の利用状況、時刻、時間帯、アプリケーション実行時のI/O負荷に応じて、ホスト30は管理用LAN250を介して変更を全体コントローラ20に指示することができる。第2閾値は、本第2の実施形態においては、ホスト30は、ストレージボリューム251,252それぞれに対して設定可能になっている。
全体コントローラ200は、記憶デバイス231〜235を組み合わせ、それぞれの記憶領域を1つのストレージボリューム251として管理し、記憶デバイス236〜238を組み合わせ、それぞれの記憶領域を1つのストレージボリューム252として管理する。つまり、全体コントローラ100は、ホスト30に対して、ストレージボリューム251,252(複数の記憶デバイスの組)の2つの記憶領域を提供する。ストレージボリューム251,252は、各種のRAIDが構成されても良いし、JBODでも良く、構成に関する方式は問わないのは第1の実施形態のストレージボリューム150の場合と同様である。
また、全体コントローラ200は、ホスト30から所定のストレージボリュームについて書き込み性能が書き込み性能判定値以下になっている旨の通知(第3通知)を受信したときは、当該ストレージボリュームに対して、書き込み性能の低下を解消する制御を実行する。例えば、ホスト30からストレージボリューム251について上記通知を受信した場合、全体コントローラ200は、ストレージボリューム251を構成する記憶デバイス231〜235からGCブロック数率を取得し、第2閾値を超えている記憶デバイスに対してGC処理を実行させる。
次に、以上のように構成された情報処理システム1において、ホスト30のアプリケーション部310が、ストレージボリューム251,252対して、ストレージボリューム単位でデータの読み書きを行っている場合に、性能監視部320が実行する処理について説明する。
性能監視部320は、ホスト30がデータの読み書きを行っているストレージボリューム、例えばストレージボリューム251に対して、定期的に4096バイトの書き込みテストを実施し、ストレージボリューム251に対する書き込みレイテンシを計測する。書き込みテストの周期は、例えば、20秒に一度とする。また、i回目に計測された書き込みアクセスのレイテンシをL(i)=2ミリ秒とする。レイテンシL(i)の計測は、対象となる記憶デバイス(記憶デバイス231〜235)への書き込み処理完了時の時刻より、書き込み命令発行時の時刻を引くことにより行う。
そして、性能監視部320は、i回目のL(i)からL(i−99)まで過去100回のレイテンシ値の平均値A(i)を求める。ここで、i回目の計測での平均値A(i)は0.3ミリ秒であったとする。性能監視部320は、ストレージボリューム251に次の書き込みテストを行ったときに、i+1回目の計測を行い、レイテンシL(i+1)を求める。この時、仮に、L(i+1)=61ミリ秒という結果が得られたとする。このとき、性能監視部320は、20×A(i)をレイテンシの閾値T(i+1)として用いるとする。なお、係数として、20を用いたが、この値は固定ではなく、調整できるものとする。このときの閾値T(i+1)は6ミリ秒となる。
さらに、性能監視部320は、レイテンシL(i+1)と閾値T(i+1)とを比較し、レイテンシL(i+1)がT(i+1)を上回った場合、閾値を超えたと判断する。今回の場合、L(i+1):T(i+1)=61:6であり、レイテンシの方が大きく、閾値を超えたと判定される。次回の計測では、70ミリ秒のレイテンシが計測され、閾値を再計算し、T(i+2)を求めると18ミリ秒という値が得られる。それぞれの値は、L(i+2):T(i+2)=70:18となり、再度閾値を超えたと判定される。このように、性能監視部320は、2回連続して閾値超過を検出した場合に(既述の所定条件)、ストレージボリューム251に対して、書き込み性能の低下が発生していると判断する。
性能監視部320は、例えば、ストレージボリューム251に対して書き込み性能の低下が発生していると判断した場合、全体コントローラ200に対して、ストレージボリューム251の書き込み性能が低下している旨(第3通知)を通知する。全体コントローラ200は、該通知により、ストレージボリューム251において書き込み性能の低下が発生していることを認識する。
図9は、性能監視部320がストレージボリューム251,252に対して書き込み性能の低下を判断した場合の処理のタイミングの一例を示すタイミングチャートである。以下では、性能監視部320がストレージボリューム251の書き込み性能の低下を判断した場合について説明する。
性能監視部320は、ストレージボリューム251の書き込み性能が低下した旨(第3通知)を全体コントローラ200に通知する(T201:性能低下通知手段)。この通知を受信した場合、全体コントローラ200は、ストレージボリューム251を構成する全ての記憶デバイス231〜235に対して、GCブロック数率の問い合わせを行う(T202〜T206)。つまり、全体コントローラ200から各デバイスコントローラ231A〜235Aに対してGCブロック数率の問い合わせが行われる。
この問い合わせを受信した記憶デバイス231〜235の各デバイスコントローラ231A〜235Aは、それぞれブロック数管理部231C〜235Cに管理しているGCブロック数率を全体コントローラ200に返信する(T207〜T211)。これにより、全体コントローラ200は、記憶デバイス231〜235からブロック数率を取得する(取得手段)。
全体コントローラ200は、デバイスコントローラ231A〜235AからGCブロック数率を受信した場合、各デバイスコントローラ231A〜235Aから受信したGCブロック数率と、第2閾値記憶部211に記憶されている、ストレージボリューム251に対する第2閾値(0.8)とをそれぞれ比較する(T212)。このとき、例えば、デバイスコントローラ233Aから受信したGCブロック数率のみが第2閾値を超過していたとする。
全体コントローラ200は、比較結果に基づいて、ストレージボリューム251の書き込み性能の低下の原因は、記憶デバイス233であると判断する(T213)。次に、全体コントローラ200は、記憶デバイス233に対するデータの書き込みを停止する(T214)。
図10は、書き込み性能の低下の通知を受信したときの全体コントローラ100とデバイスコントローラ233Aとの処理の一例を示すタイミングチャートである。
全体コントローラ200が記憶デバイス233を含むストレージボリューム251に対して書き込みを実行中に(T301)、性能監視部320からの通知に基づいて、ストレージボリューム251の書き込み性能の低下の原因(書き込み性能の低下している記憶デバイス)は、記憶デバイス233であると特定する(T302)。これらの処理は、図9を用いて既述した通りである。
次に、全体コントローラ200は、記憶デバイス233への書き込みを停止する(T303)。このT303以降の処理、つまり、T303〜T318の処理は、図5を用いて説明したT103〜T118の処理と実質的に同様であるため、説明は省略する。なお、T307の処理が、GC処理を実行させる指示を出力する出力手段に該当する。
以上のように構成された情報処理システム1によると、ストレージボリューム251に対する書き込み性能が書き込み性能判定値以下になった場合に、全体コントローラ200は、該ストレージボリューム251を構成する記憶デバイス231〜235のGCブロック数率を取得し、取得したGCブロック数率が第2閾値を超えている記憶デバイス(以下、対象記憶デバイスという)に対してGC処理を実行させることができる。このため、ストレージボリューム251の書き込み性能の低下を解消することができる。
一例を挙げて、より詳細に説明する。ストレージボリューム251を構成する記憶デバイス231〜235のNANDフラッシュメモリ231B〜235Bは共に、平均書き込みレイテンシ0.1ミリ秒、最大書き込みレイテンシ100ミリ秒の書き込み性能であるとする。
また、記憶デバイス233のNANDフラッシュメモリ233BのGCブロック数率が第2閾値(本第2の実施形態では0.8)を超えており、書き込みレイテンシが50ミリ秒となっているとする。
この場合、従来の情報処理システムの場合においては、ストレージボリューム251全体の書き込みレイテンシは、記憶デバイス233の書き込み性能悪化の影響を受けて50ミリ秒になる。これは、記憶デバイス233で書き込み性能に低下が生じていない場合と比較すると、500倍(0.1ミリ秒:50ミリ秒)の値となる。
これに対して、本第2の実施形態の情報処理システム1によると、記憶デバイス233を含むストレージシステム251の書き込み性能が書き込み性能判定値以下になった場合、記憶デバイス233のGCブロック数率は第2閾値を超えていると考えられるため記憶デバイス233のGC処理が実行される。一方、記憶デバイス233に対する新規データの書き込みを行わない。これに代わり、記憶装置20は、NANDフラッシュメモリ233Bよりも書き込みが高速なキャッシュ210又は退避用バッファ220に該データの書き込みを行う。よって、ストレージボリューム251の書き込みレイテンシは、各記憶デバイス231〜235の平均書き込みレイテンシに相当する0.1ミリ秒に、パリティ計算のオーバヘッドを加えた値に抑えられる。
これにより、ストレージボリューム251に対してデータの読み書きを行っているアプリケーション部310は、ストレージボリューム251に対する書き込み遅延に起因する応答時間の悪化、処理スループットの低下、I/Oタイムアウトエラーの発生を防止することができる。
また、記憶装置20は、退避用バッファとして2つの退避用バッファ220,221を有しており、また、アドレス表として2つのアドレス表201,202を有している。よって、全体コントローラ200は、例えばストレージボリューム251を構成する5つの記憶デバイス231〜235のうち2つの記憶デバイスのGCブロック数率が第2閾値を超えていると判断した場合、その2つの記憶デバイスに対する新規な書き込みデータを捕捉し、2つの退避用バッファ220,221及びアドレス表201,202をそれぞれの記憶デバイスに割り当て、退避用バッファにデータを書き込むことができる。
より詳細には、例えば、仮に、全体コントローラ200は、ストレージボリューム251を構成する記憶デバイス231〜235のうち記憶デバイス231、232の2つの記憶デバイスのGCブロック数率が第2閾値を超えていると判断したとする。この場合、全体コントローラ200は、記憶デバイス231に対する新規データの書き込みを退避用バッファ220に書き込む。このとき、全体コントローラ200は、該新規データに関する論理ブロックアドレスの管理をアドレス表201により行う。また、全体コントローラ200は、記憶デバイス232に対する新規データの書き込みを退避用バッファ221に書き込む。このとき、全体コントローラ200は、該新規データに関する論理ブロックアドレスの管理をアドレス表202により行う。このため、情報処理システム1の並行処理性を向上させることができる。
なお、退避用バッファ220,221は、ストレージボリューム252に対して書き込み性能が書き込み性能判定値以下になった場合に、ストレージボリューム252を構成する記憶デバイス236〜238のうちの記憶デバイスに対して、GC処理を実行する必要が生じた場合にも適用することができる。
また、上記第2の実施形態においては、退避用バッファ220,221の2つ、この2つの退避バッファ220,221にそれぞれ対応するアドレス表201,202の2つを記憶装置20に設ける構成で説明したがこれに限られない。退避用バッファと、この退避用バッファに対応するアドレス表を記憶装置20に3以上設けてように構成しても良い。これにより、1つのストレージボリューム内の3つ以上の記憶デバイスにGC処理が必要な場合も、同時に処理することができるため、並列処理性をより向上させることができる。
さらに、退避用バッファ220,アドレス表201をストレージボリューム251に対して用いるようにし、退避用バッファ221,アドレス表202をストレージボリューム252に対して用いるようにしても良い。これにより、情報処理システム1は、2つ以上のストレージボリュームがある場合にも、並列的に処理を行うことが可能になる。
またさらに、記憶装置20とホスト30とのI/OインタフェースとしてPCle240を用いた場合で説明したが、I/Oインタフェースはこれに限るものではない。例えば、PCleに代えて、Fiber−ChannelなどのFC−SAN、イーサネット(登録商標)を使用したFCoE.iSCSIなどの方式を記憶装置20とホスト30とのI/Oインタフェースとして用いても良い。
なお、ストレージボリューム251,252の書き込み性能が書き込み性能判定値以下になったことの通知は、管理用LAN250経由で行うこととしているが、PCleを用いて通知するようにしても良い。ホスト30から記憶装置20への第2閾値の変更の通知も同様に、経由するインタフェースは問わない。
さらに、上記第2の実施形態では、記憶装置20をホスト30の外部記憶装置に適用した場合で説明したが、これに限るものではない。例えば、記憶装置を有する情報処理装置についても適用することが可能である。当該情報処理装置としては、例えば、サーバ装置、パーソナルコンピュータ、携帯端末装置、タブレット端末等を挙げることができる。なお、図11は、記憶装置を組み込んだサーバ装置400の概略構成の一例を示す図である。図11に示すように、サーバ装置400は、CPU410、ROM420、RAM430、記憶装置10、及び通信インタフェース440を含む。
さらに、記憶装置10、記憶装置20、ホスト30は、それぞれコンピュータである。このため、上記第1の実施形態で説明した処理を記憶装置10に実現させるプログラムとして記憶装置10に提供することが可能であり、第2の実施形態で説明した処理を、情報処理システム1を構成する記憶装置20、ホスト30に実現させるプログラムとして記憶装置20、ホスト30に提供することが可能である。この場合、外部装置から若しくはネットワークを介して受信するプログラムを記憶装置10内の所定の記憶領域、記憶装置20内の所定の記憶領域、ホスト30内の所定の記憶領域にそれぞれ格納する。このように格納したプログラムを全体コントローラ100、200、デバイスコントローラ131A〜136A,231A〜238A、及びホスト30内のCPUが実行するようにしても良い。なお、記憶装置10,20、及びホスト30がプログラムを外部から受け取る構成については従来の技術を適用することが可能である。
図12は、記憶装置50の概略構成の一例を示す図である。記憶装置10は、図12に示す構成でも実現することができる。
図12に示すように、記憶装置50は、記憶部60、コネクションユニット(CU)51、インタフェース部(I/F部)52、マネジメントモジュール(MM)53、及びバッファ56を備えている。
記憶部60は、記憶機能およびデータ転送機能を其々有する複数のノードモジュール(NM)54をメッシュネットワークにより相互に接続した構成を備える。記憶部60は、複数のNM54に対してデータを分散して記憶する。データ転送機能は、各NM54が効率的にパケットを転送する転送方式を備える。
図12では、各NM54が其々格子点に配置された、矩形状のネットワークの例を示す。格子点の座標を座標(x、y)で示し、格子点に配置されるNM54の位置情報は、当該格子点の座標と対応してノードアドレス(xD、yD)で示されるものとする。また、図12の例では、左上隅に位置するNM54が原点のノードアドレス(0、0)を有し、各NM54を横方向(X方向)および縦方向(Y方向)に移動することで、ノードアドレスが整数値で増減する。
各NM54は、それぞれ、2つ以上のインタフェース55を備える。各NM54は、隣接するNM54と、インタフェース55を介して接続される。各NM54は、2以上の異なる方向に隣接するNM54と接続される。例えば、図12において左上隅のノードアドレス(0、0)で示されるNM54は、X方向に隣接するノードアドレス(1、0)で表されるNM54と、X方向とは異なる方向であるY方向に隣接するノードアドレス(0、1)で表されるNM54と、それぞれ接続される。また、図12においてノードアドレス(51)で表されるNM54は、互いに異なる4の方向に隣接する、ノードアドレス(1、0)、(0、1)、(2、1)および(52)でそれぞれ示される4つのNM54に接続される。
図1では、各NM54が矩形格子の格子点に配置されるように示したが、各NM54の配置の様態は、この例に限定されない。すなわち、格子の形状は、格子点に配置される各NM54が2以上の異なる方向に隣接するNM54と接続されればよく、例えば三角形、六角形などでもよい。また、図1では各NM54が2次元状に配置されているが、各NM54を3次元的に配置しても構わない。3次元的にNM54を配置した場合は、(x、y、z)の3つの値で各NM54を指定することができる。また、NM54が2次元的に配置される場合には、対辺に位置するNM54同士を接続することによって、NM54をトーラス状に接続するようにしてもよい。
また、各NM54は、NC(ノードコントローラ)を有している。NCはCU51または他のNM54からインタフェース15を介してパケットを受信したり、CU51または他のNM54にインタフェース部52を介してパケットを送信したりする。また、NCは、受信したパケットの宛先が自NM14である場合には、そのパケット(そのパケットに記録されるコマンド)に応じた処理を実行する。例えば、コマンドがアクセスコマンド(リードコマンドまたはライトコマンド)である場合には、NCは第1の所定のメモリに対するアクセスを実行する。NCは、受信したパケットの宛先が自NM54では無い場合には、そのパケットを自NM54に接続されている他のNM54に転送する。
CU51は、外部に接続するコネクタを備え、外部からの要求に応じて記憶部60にデータを入出力することができる。具体的には、CU51は、図示していない記憶領域と演算装置とを備え、演算装置は、記憶領域をワークエリアとして使用しながらサーバアプリケーションプログラムを実行することができる。CU51は、サーバアプリケーションによる制御の下で、外部からの要求を処理する。CU51は、外部からの要求の処理の過程において、記憶部60に対するアクセスを実行する。CU51は、記憶部60にアクセスする際には、NM54が転送したり実行したりすることが可能なパケットを生成し、生成したパケットを、自CU51に接続されているNM54に送信する。
図12の例では、記憶装置50は、4つのCU51を備えている。4つのCU51は、夫々異なるNM54に接続される。ここでは、4つのCU51は、ノード(0、0)、ノード(1、0)、ノード(2、0)、およびノード(3、0)に一対一に接続されている。なお、CU51の数は任意に構成することが可能である。また、CU51は、記憶部10を構成する任意のNM54に接続されることが可能である。また、1つのCU51が複数のNM54に接続されてもよいし、1つのNM54が複数のCU51に接続されてもよい。また、記憶部10を構成する複数のNM54のうちの任意のNM54にCU51が接続されてもよい。
また、CU51は、キャッシュ51Aを含む。キャッシュ51は、CU51が各種処理を実行する場合に、データを一時的に保存する。
バッファ56は、CU51がNM54に対してデータを保存する場合に、データを一時的に保存する。また、バッファ56に保存したデータは、CU51により所定のタイミングで所定のNM54に保存される。
次に、図12に示すように構成される記憶装置50と第1の実施形態で説明した記憶装置10(参照:図1)との対応関係について説明する。
全体コントローラ100は、複数のCU51(図12では4つのCU51)と対応している。キャッシュ110は、キャッシュ51Aと対応している。退避用バッファ120は、バッファ56と対応している。記憶デバイス131〜136は、6つのNM54と対応している。デバイスコントローラ20は、NM54内のNCと対応している。
したがって、記憶装置10が実行する処理は、記憶装置50によっても実行することが可能になっている。
その他、上記実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態および変形例は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、書き換え、変更を行うことができる。これら実施形態や変形は、発明の範囲は要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…情報処理システム,10,20,50,60…記憶装置、30…ホスト、51…CU(コネクションユニット)、51A…キャッシュ、54…NM(ノードモジュール)、56…バッファ、100,200…全体コントローラ(第1制御部)、101,201,202…アドレス表、110,210…キャッシュ、120,220,221…退避用バッファ、131〜136,231〜238…記憶デバイス、131A〜136A,231A〜238A…デバイスコントローラ(第2制御部),131B〜136B,231B〜238B…NANDフラッシュメモリ(不揮発性メモリ)、131C〜136C,231C〜238c…ブロック数管理部(管理部)、131D〜136D,231D〜238D…第1閾値記憶部、211…第2閾値記憶部、310…アプリケーション部、320…性能監視部(監視部)、400…サーバ装置

Claims (9)

  1. 不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスを備える記憶装置であって、
    前記複数の記憶デバイスを制御するコントローラを具備し、
    前記コントローラは、
    前記記憶装置の書き込み性能が低下したことをホストが検出した場合に前記ホストから通知される前記書き込み性能の低下を示す通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値よりも高い第1の記憶デバイスに対してガベージコレクションの実行を指示し、
    前記第1の記憶デバイスがガベージコレクションを実行している間、前記第1の記憶デバイスに対する書き込みデータを退避バッファに書き込み、
    前記第1の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第1の記憶デバイスに書き込む、記憶装置。
  2. 前記コントローラは、
    前記退避バッファに書き込まれた前記書き込みデータの論理ブロックアドレスをアドレス表に記録し、
    前記ホストからのデータの読み取り指示を受信した場合、読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在するか否かを判定し、
    前記読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在する場合、前記読み取り対象のデータを前記退避バッファから読み出す請求項1記載の記憶装置。
  3. 前記退避バッファは不揮発性メモリである請求項1記載の記憶装置。
  4. 前記複数の記憶デバイスはRAIDを構成する請求項1記載の記憶装置。
  5. 前記複数の記憶デバイスはJBODを構成する請求項1記載の記憶装置。
  6. 不揮発性メモリと前記不揮発性メモリを制御する制御部とを各々が含む複数の記憶デバイスと、前記複数の記憶デバイスを制御するコントローラとを具備する記憶装置と、
    前記記憶装置に対してデータの読み書きを行い、前記記憶装置の書き込み性能の低下を検出した場合に前記書き込み性能が低下したことを通知するホストとを具備し、
    前記コントローラは、
    前記通知に応じて、前記複数の記憶デバイスからガベージコレクションが必要なブロック数の割合を取得して前記割合が閾値よりも高い第1の記憶デバイスに対してガベージコレクションの実行を指示し、
    前記第1の記憶デバイスがガベージコレクションを実行している間、前記第1の記憶デバイスに対する書き込みデータを退避バッファに書き込み、
    前記第1の記憶デバイスのガベージコレクションが完了した後、前記退避バッファに書き込まれた前記書き込みデータを前記第1の記憶デバイスに書き込む、情報処理システム。
  7. 前記ホストは、前記記憶装置に対する書き込みテストを実行することによって前記記憶装置の書き込み性能の低下を検出する請求項6記載の情報処理システム。
  8. 前記コントローラは、
    前記退避バッファに書き込まれた前記書き込みデータの論理ブロックアドレスをアドレス表に記録し、
    前記ホストからのデータの読み取り指示を受信した場合、読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在するか否かを判定し、
    前記読み取り対象のデータの論理ブロックアドレスが前記アドレス表に存在する場合、前記読み取り対象のデータを前記退避バッファから読み出す請求項6記載の情報処理システム。
  9. 前記退避バッファは不揮発性メモリである請求項6記載の情報処理システム。
JP2015028631A 2015-02-17 2015-02-17 記憶装置及び記憶装置を含む情報処理システム Active JP6320318B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015028631A JP6320318B2 (ja) 2015-02-17 2015-02-17 記憶装置及び記憶装置を含む情報処理システム
US14/836,873 US20160239412A1 (en) 2015-02-17 2015-08-26 Storage apparatus and information processing system including storage apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015028631A JP6320318B2 (ja) 2015-02-17 2015-02-17 記憶装置及び記憶装置を含む情報処理システム

Publications (2)

Publication Number Publication Date
JP2016151868A JP2016151868A (ja) 2016-08-22
JP6320318B2 true JP6320318B2 (ja) 2018-05-09

Family

ID=56621231

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015028631A Active JP6320318B2 (ja) 2015-02-17 2015-02-17 記憶装置及び記憶装置を含む情報処理システム

Country Status (2)

Country Link
US (1) US20160239412A1 (ja)
JP (1) JP6320318B2 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9804787B2 (en) * 2015-11-03 2017-10-31 Samsung Electronics Co., Ltd. Mitigating GC effect in a raid configuration
US10216536B2 (en) * 2016-03-11 2019-02-26 Vmware, Inc. Swap file defragmentation in a hypervisor
JP6855704B2 (ja) * 2016-08-22 2021-04-07 富士通株式会社 ストレージシステム、ストレージ制御装置及びデータ格納方法
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
WO2019062231A1 (zh) * 2017-09-27 2019-04-04 北京忆恒创源科技有限公司 垃圾回收方法及其存储设备
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US11099937B2 (en) 2018-01-11 2021-08-24 Robin Systems, Inc. Implementing clone snapshots in a distributed storage system
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11748203B2 (en) 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US10976938B2 (en) 2018-07-30 2021-04-13 Robin Systems, Inc. Block map cache
US10908848B2 (en) * 2018-10-22 2021-02-02 Robin Systems, Inc. Automated management of bundled applications
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11580016B2 (en) * 2019-08-30 2023-02-14 Micron Technology, Inc. Adjustable garbage collection suspension interval
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
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
US11108638B1 (en) * 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
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
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008019218A2 (en) * 2006-08-04 2008-02-14 Sandisk Corporation Phased garbage collection
US7444463B2 (en) * 2006-09-29 2008-10-28 Sandisk Corporation System for phased garbage collection with state indicators
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
JP2010287049A (ja) * 2009-06-11 2010-12-24 Toshiba Corp メモリシステムおよびメモリシステムの管理方法
JP2011154547A (ja) * 2010-01-27 2011-08-11 Toshiba Corp メモリ管理装置及びメモリ管理方法
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
US9176864B2 (en) * 2011-05-17 2015-11-03 SanDisk Technologies, Inc. Non-volatile memory and method having block management with hot/cold data sorting
JP2013137665A (ja) * 2011-12-28 2013-07-11 Toshiba Corp 半導体記憶装置、半導体記憶装置の制御方法、およびメモリコントローラ
US8554963B1 (en) * 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9158674B2 (en) * 2012-12-07 2015-10-13 Sandisk Technologies Inc. Storage device with health status check feature
KR102053865B1 (ko) * 2013-03-15 2019-12-09 삼성전자주식회사 호스트-주도 가비지 컬렉션 방법과 상기 방법을 수행할 수 있는 시스템
US10073626B2 (en) * 2013-03-15 2018-09-11 Virident Systems, Llc Managing the write performance of an asymmetric memory system
JP6007329B2 (ja) * 2013-07-17 2016-10-12 株式会社日立製作所 ストレージコントローラ、ストレージ装置、ストレージシステム

Also Published As

Publication number Publication date
JP2016151868A (ja) 2016-08-22
US20160239412A1 (en) 2016-08-18

Similar Documents

Publication Publication Date Title
JP6320318B2 (ja) 記憶装置及び記憶装置を含む情報処理システム
US10459808B2 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US9996435B2 (en) Reliability scheme using hybrid SSD/HDD replication with log structured management
US10241877B2 (en) Data storage system employing a hot spare to proactively store array data in absence of a failure or pre-failure event
JP6007329B2 (ja) ストレージコントローラ、ストレージ装置、ストレージシステム
JP4331220B2 (ja) 未使用物理領域自律管理機能を持つストレージ装置
US10649667B2 (en) Mitigating GC effect in a RAID configuration
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
JP2018181374A (ja) 不揮発性メモリの制御方法
WO2015145532A1 (ja) ストレージシステム及びデータ処理方法
WO2016194095A1 (ja) 情報処理システム、ストレージ装置及び記憶デバイス
US20160342476A1 (en) Solid state drive operations
US9251059B2 (en) Storage system employing MRAM and redundant array of solid state disk
CN114127677B (zh) 用于写高速缓存架构中的数据放置的方法和系统
WO2016181528A1 (ja) ストレージ装置
JP2016162397A (ja) ストレージ制御装置、制御システム及び制御プログラム
JP2014059850A (ja) ストレージ装置、内部処理制御方法および内部処理制御プログラム
WO2014100996A1 (zh) 磁盘阵列刷盘方法及磁盘阵列刷盘装置
JP6139711B2 (ja) 情報処理装置
US20200387307A1 (en) Namespace auto-routing data storage system
JP6232936B2 (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
US9720608B2 (en) Storage system
JP2021529406A (ja) システムコントローラおよびシステムガベージコレクション方法
WO2015087651A1 (ja) メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
JP5820078B2 (ja) 記憶装置システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170224

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180403

R150 Certificate of patent or registration of utility model

Ref document number: 6320318

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150