JP2018101334A - メモリシステムおよび制御方法 - Google Patents

メモリシステムおよび制御方法 Download PDF

Info

Publication number
JP2018101334A
JP2018101334A JP2016247808A JP2016247808A JP2018101334A JP 2018101334 A JP2018101334 A JP 2018101334A JP 2016247808 A JP2016247808 A JP 2016247808A JP 2016247808 A JP2016247808 A JP 2016247808A JP 2018101334 A JP2018101334 A JP 2018101334A
Authority
JP
Japan
Prior art keywords
storage area
vssd
data
total amount
host
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016247808A
Other languages
English (en)
Other versions
JP6783645B2 (ja
Inventor
菅野 伸一
Shinichi Sugano
伸一 菅野
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 JP2016247808A priority Critical patent/JP6783645B2/ja
Priority to CN201710397578.9A priority patent/CN108228092B/zh
Priority to US15/690,188 priority patent/US10983701B2/en
Publication of JP2018101334A publication Critical patent/JP2018101334A/ja
Application granted granted Critical
Publication of JP6783645B2 publication Critical patent/JP6783645B2/ja
Priority to US17/203,027 priority patent/US11747984B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0638Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • 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/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • 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/0662Virtualisation aspects
    • G06F3/0665Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/205Hybrid memory, e.g. using both volatile and non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

【課題】ホストによるストレージ管理を支援することができるメモリシステムを実現する。
【解決手段】メモリシステムは、不揮発性メモリを第1記憶領域と第2記憶領域とを含む複数の記憶領域に論理的に分割する。メモリシステムは、書き込み可能なデータの総量を記憶領域毎に指定する前記ホストからの要求に基づいて、前記第1記憶領域に書き込み可能なデータの総量の上限を示す第1上限値と、前記第2記憶領域に書き込み可能なデータの総量の上限を示す第2上限値とを管理し、前記第1記憶領域に書き込まれたデータの総量、および前記第2記憶領域に書き込まれたデータの総量を測定する。メモリシステムは、前記第1記憶領域に書き込まれたデータの前記測定された総量が前記第1上限値に達した場合、前記ホストからの前記第1記憶領域へのデータの書き込みを制限する。
【選択図】図1

Description

本発明の実施形態は、不揮発性メモリを制御する技術に関する。
近年、不揮発性メモリを備えるメモリシステムが広く普及している。
このようなメモリシステムの一つとして、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)が知られている。SSDは、その低電力消費、高性能という特徴により、様々なコンピュータのストレージとして使用されている。
最近では、データセンターのサーバにおいても、大容量データを格納するためのストレージとしてSSDが使用されている。SSDによって提供される高速アクセス性能は、サーバ(ホスト)のI/O性能を向上させることができる。
特開2016−091050号公報
データセンターにおいては、個々のユーザのストレージ要件に適した柔軟なストレージサービスを提供することが必要とされる。このため、ストレージの運用および管理のためにサーバ側で実行することが必要とされる処理量は、増加する傾向にある。
したがって、データセンター向けSSDのようなメモリシステムにおいては、サーバ(ホスト)によるストレージ管理を支援するための新たな機能の実現が求められる。
本発明が解決しようとする課題は、ホストによるストレージ管理を支援することができるメモリシステムおよび制御方法を提供することである。
実施形態によれば、ホストに接続可能なメモリシステムは、不揮発性メモリと、前記不揮発性メモリに電気的に接続されたコントローラとを具備する。前記コントローラは、前記不揮発性メモリを第1記憶領域と第2記憶領域とを含む複数の記憶領域に論理的に分割する。前記コントローラは、書き込み可能なデータの総量を記憶領域毎に指定する前記ホストからの要求に基づいて、前記第1記憶領域に書き込み可能なデータの総量の上限を示す第1上限値と、前記第2記憶領域に書き込み可能なデータの総量の上限を示す第2上限値とを管理する。前記コントローラは、前記ホストからの前記第1記憶領域向けのデータを前記第1記憶領域に書き込み、前記ホストからの前記第2記憶領域向けのデータを前記第2記憶領域に書き込む。前記コントローラは、前記第1記憶領域に書き込まれたデータの総量、および前記第2記憶領域に書き込まれたデータの総量を測定する。前記コントローラは、前記第1記憶領域に書き込まれたデータの前記測定された総量が前記第1上限値に達した場合、前記ホストからの前記第1記憶領域へのデータの書き込みを制限し、前記第2記憶領域に書き込まれたデータの前記測定された総量が前記第2上限値に達した場合、前記ホストからの前記第2記憶領域へのデータの書き込みを制限する。
実施形態のメモリシステムの構成例を示すブロック図。 同実施形態のメモリシステム内のNANDインタフェースと複数のNAND型フラッシュメモリチップとの関係を示すブロック図。 従来型SSDを使用した仮想化環境と、同実施形態に係るメモリシステム(仮想化支援機構を含むSSD)を使用した仮想化環境とを説明するためのブロック図。 同実施形態に係るメモリシステム内の記憶領域(仮想SSD(VSSD))の数とホスト(サーバ)側の仮想マシンの数との関係の例を示す図。 同実施形態に係るメモリシステム内の各記憶領域(VSSD)を説明するためのブロック図。 同実施形態のメモリシステムの記憶領域(VSSD)管理を説明するための図。 同実施形態のメモリシステムに適用される記憶領域(VSSD)管理コマンドを説明するための図。 同実施形態のメモリシステムによって管理される記憶領域(VSSD)管理テーブルを示す図。 ユーザ容量とオーバープロビジョニング容量との組を記憶領域(VSSD)毎に指定するホストからの要求に基づいて、個々の記憶領域(VSSD)にユーザ容量およびオーバープロビジョニング容量を割り当てる動作を説明するための図。 同実施形態のメモリシステムによって実行されるNAND処理実行時間制御処理を説明するための図。 同実施形態のメモリシステムによって実行される記憶領域(VSSD)作成処理のシーケンスを示す図。 同実施形態のメモリシステムによって実行されるライトデータ量カウント処理を説明するための図。 同実施形態のメモリシステムによって実行されるライトデータ量カウント処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行される、個々の記憶領域(VSSD)に書き込まれるデータの総量を制限する処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるNAND処理実行時間制御処理の手順を示すフローチャート。 同実施形態のメモリシステムによって実行されるトークン配布/回収処理の例を説明するための図。 同実施形態のメモリシステムによって実行されるトークン配布/回収処理の別の例を説明するための図。 ホストの構成例を示すブロック図。 同実施形態のメモリシステムとホストとを含むコンピュータの構成例を示す図。
以下、図面を参照して、実施形態を説明する。
まず、図1を参照して、一実施形態に係るメモリシステムを含む情報処理システム1の構成を説明する。
このメモリシステムは、不揮発性メモリにデータを書き込み、不揮発性メモリからデータを読み出すように構成された半導体ストレージデバイスである。このメモリシステムは、例えば、NANDフラッシュ技術ベースのソリッドステートドライブ(SSD)3として実現されている。
情報処理システム1は、ホスト(ホストデバイス)2と、SSD3とを含む。ホスト2は、サーバ、パーソナルコンピュータのような情報処理装置である。ホスト2として機能するサーバの典型例としては、データセンター内のサーバが挙げられる。
ホスト2がデータセンター内のサーバによって実現されるケースにおいては、このホスト(サーバ)2は、ネットワーク50を介して複数のエンドユーザ端末90に接続されてもよい。ホスト2は、これらエンドユーザ端末90に対して様々なサービスを提供することができる。
ホスト(サーバ)2によって提供可能なサービスの例には、(1)システム開発プラットフォームを各クライアント(エンドユーザ端末90)に提供するプラットホーム・アズ・ア・サービス、(2)仮想サーバのようなインフラストラクチャをクライアント(エンドユーザ端末90)に提供するインフラストラクチャ・アズ・ア・サービス、等がある。
複数の仮想マシン41、42、43、…47が、このホスト(サーバ)2として機能する物理サーバ上で実行されてもよい。これら仮想マシン41、42、43、…47は、対応するクライアント(エンドユーザ端末90)に各種サービスを提供するように構成された仮想サーバとして機能することができる。
なお、コンテナ型仮想化環境がホスト(サーバ)2に適用されてもよい。この場合には、ホスト(サーバ)2のオペレーティングシステム上に複数のコンテナ(複数のユーザ空間)それぞれが配置される。これらコンテナの各々はアプリケーションを実行するための独立したリソースを含み、仮想マシン(仮想サーバ)と同等の機能を実行することができる。
SSD3は、ホスト2として機能する情報処理装置のメインストレージとして使用され得る。SSD3は、情報処理装置に内蔵されてもよいし、情報処理装置にケーブルまたはネットワークを介して接続されてもよい。
ホスト2とSSD3とを相互接続するためのインタフェースとしては、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標),Fibre channel、NVM Express(NVMe)(登録商標)等を使用し得る。
SSD3は、コントローラ4および不揮発性メモリ(NAND型フラッシュメモリ)5を備える。SSD3は、ランダムアクセスメモリ、例えば、DRAM6も備えていてもよい。
NAND型フラッシュメモリ5は、マトリクス状に配置された複数のメモリセルを含むメモリセルアレイを含む。NAND型フラッシュメモリ5は、2次元構造のNAND型フラッシュメモリであってもよいし、3次元構造のNAND型フラッシュメモリであってもよい。
NAND型フラッシュメモリ5のメモリセルアレイは、複数の物理ブロックB0〜Bm−1を含む。物理ブロックB0〜Bm−1の各々は多数のページ(ここではページP0〜Pn−1)によって編成される。物理ブロックB0〜Bm−1は、アドレス指定可能な最小の消去単位として機能する。物理ブロックは、「消去ブロック」、「物理消去ブロック」、または単に「ブロック」と称されることもある。ページP0〜Pn−1の各々は、同一ワード線に接続された複数のメモリセルを含む。ページP0〜Pn−1は、データ書き込み動作およびデータ読み込み動作の単位である。
コントローラ4は、Toggle、ONFIのようなNANDインタフェース13を介して、不揮発性メモリであるNAND型フラッシュメモリ5に電気的に接続されている。NANDインタフェース13は、NAND型フラッシュメモリ5を制御するように構成されたNAND制御回路として機能する。
NAND型フラッシュメモリ5は、図2に示すように、複数のNAND型フラッシュメモリチップを含んでいてもよい。個々のNAND型フラッシュメモリチップは独立して動作可能である。このため、NAND型フラッシュメモリチップは、並列動作可能な最小単位として機能する。図2においては、NANDインタフェース13に8個のチャンネルCh.1〜Ch.8が接続されており、8個のチャンネルCh.1〜Ch.8の各々に4つのNAND型フラッシュメモリチップが接続されている場合が例示されている。この場合、最大32個のNAND型フラッシュメモリチップを並列動作させることができる。
本実施形態では、SSD3内のコントローラ4は、ホスト2によるストレージ管理を支援するために仮想化支援機構を有している。この仮想化支援機構は、ホスト2によるストレージ仮想化を支援するための機構である。この仮想化支援機構は、仮想マシン41、42、43、…47のような複数の仮想サーバがSSD3の物理リソースを共有することを可能にし、さらにまた仮想マシン41、42、43、…47のような複数の仮想サーバが直接的にSSD3の物理リソースをアクセスすることを可能にする。
この仮想化支援機構は、容量/性能/可用性/個数を自由に設定できる複数の記憶領域をSSD3内に配置し、これら記憶領域をホスト(サーバ)2上の仮想マシンそれぞれに提供する。これら記憶領域は、NAND型フラッシュメモリ5を論理的に分割することによって得られる。仮想マシンとSSD3内記憶領域との間のマッピングは1:1であってよいし、1:n(nは2以上)であってもよい。つまり、一つの仮想マシンに対してSSD3内の1つの以上の記憶領域が、この仮想マシンに専用のストレージリソース(仮想ディスク)として割り当てられてもよい。
ここで、仮想ディスクとは、仮想マシン上で実行されるゲストオペレーティングシステムが物理ディスクとして認識する一種のファイルを意味する。各仮想マシンは、この仮想マシンに割り当てられた仮想ディスクを物理ディスクとして扱うことができる。
仮想化支援機構を有するSSD3は、容量/性能/可用性等に関する特徴が互いに異なる様々な記憶領域(以下、仮想SSD(VSSD)とも称する)を作成および管理することができる。また、仮想化支援機構を有するSSD3は、ホスト2によって削除(リムーブ)が要求された仮想SSD(VSSD)を削除することもできる。仮想SSD(VSSD)の削除によって増加されるNAND型フラッシュメモリ5内のフリーエリアは、新たな仮想SSD(VSSD)の作成に利用され得る。
仮想SSD(VSSD)は、仮想ディスクと同等の機能を有する。したがって、仮想化支援機構を有するSSD3は、仮想ディスクを作成および管理するためのエミュレーション機能をホスト2からSSD3にオフロードすることを可能にする。これによって、ホスト2がストレージ管理のために実行することが必要な処理量を低減でき、この結果、ホスト2のI/O性能の向上を図ることができる。
また、コントローラ4は、NAND型フラッシュメモリ5のデータ管理とNAND型フラッシュメモリ5のブロック管理とを実行するように構成されたフラッシュトランスレーション層(FTL)としても機能することができる。
このFTLによって実行されるデータ管理には、(1)論理アドレスそれぞれとNAND型フラッシュメモリ5の物理アドレスそれぞれとの間の対応関係を示すマッピング情報の管理、(2)ページ単位のリード/ライトと物理ブロック単位の消去動作とを隠蔽するための処理、等が含まれる。論理アドレスは、SSD3をアドレス指定するためにホスト2によって使用されるアドレスである。この論理アドレスとしては、通常、論理ブロックアドレス(LBA)が使用される。
論理ブロックアドレス(LBA)それぞれと物理アドレスそれぞれとの間のマッピングの管理は、アドレス変換テーブル(論理物理アドレス変換テーブル)として機能するルックアップテーブル(LUT)を用いて実行される。
本実施形態では、コントローラ4は、複数の仮想SSD(VSSD#1、VSSD#2、…VSSD#n)にそれぞれ対応する複数のルックアップテーブル(LUT)31C、32C、…37Cを使用して、仮想SSD(VSSD)毎に、LBAそれぞれと物理アドレスそれぞれとの間のマッピングを管理する。
あるLBAに対応する物理アドレスは、このLBAのデータがライトされたNAND型フラッシュメモリ5内の物理記憶位置を示す。ルックアップテーブル(LUT)31C、32C、…37Cは、SSD3の電源オン時にNAND型フラッシュメモリ5からDRAM6にロードされてもよい。一般に、各ルックアップテーブル(アドレス変換テーブル)のサイズは、比較的大きい。したがって、各ルックアップテーブルの少なくとも一部がDRAM6にアドレス変換テーブルキャッシュとして格納されてもよい。
ホスト2からのリードコマンドによって指定される論理アドレスに対応する目的の物理アドレスを含むキャッシュラインがアドレス変換テーブルキャッシュに存在するならば(キャッシュヒット)、この目的の物理アドレスによって指定されるNAND型フラッシュメモリ5内の物理記憶位置からデータが即座にリードされる。
一方、目的の物理アドレスを含むキャッシュラインがアドレス変換テーブルキャッシュに存在しないならば(キャッシュミス)、目的の物理アドレスを含むルックアップテーブル内の一部分(アドレス変換テーブル部)がNAND型フラッシュメモリ5から読み出される。そしてアドレス変換テーブルキャッシュ内の置換対象キャッシュラインの内容がアドレス変換テーブルキャッシュから追い出され、代わりに、NAND型フラッシュメモリ5から読み出されたアドレス変換テーブル部がこのキャッシュラインに格納される。そして、この目的の物理アドレスによって指定されるNAND型フラッシュメモリ5内の物理記憶位置からデータがリードされる。
各仮想SSD(VSSD)において、ページへのデータ書き込みは、1消去サイクル当たり1回のみ可能である。このため、コントローラ4は、あるLBAに対応する更新データを、このLBAに対応する以前のデータが格納されている物理記憶位置ではなく、別の物理記憶位置に書き込む。そして、コントローラ4は、このVSSDに対応するルックアップテーブル(LUT)を更新してこのLBAをこの別の物理記憶位置に関連付け、そして以前のデータを無効化する。
ブロック管理には、バッドブロックの管理と、ウェアレベリングと、ガベージコレクション等が含まれる。
ウェアレベリングは、物理ブロックそれぞれの消耗を均一化するための動作である。
ガベージコレクションは、データを書き込むことが可能なフリーブロックの個数を増やすため、有効データと無効データとが混在する幾つかの対象ブロック(対象物理ブロック)内の有効データを別の物理ブロック(例えばフリーブロック)にコピーする。ここで、有効データとは、後に参照される可能性があるデータを意味する。無効データとは、もはや参照されることが無いデータを意味する。例えば、あるLBAに関連付けられているデータは有効データであり、どのLBAにも関連付けられていないデータは無効データである。そして、ガベージコレクションは、コピーされた有効データのLBAそれぞれを正しい物理アドレスにマッピングする。有効データが別の物理ブロックにコピーされることによって無効データのみになった物理ブロックは、フリーブロックとして解放される。これによって、この物理ブロックはその消去動作が実行された後に再利用することが可能となる。
本実施形態では、ガベージコレクションは、仮想SSD(VSSD)毎に独立して実行され得る。これにより、たとえある仮想SSD(VSSD)のガベージコレクションが実行中であっても、このガベージコレクションが、他の仮想SSD(VSSD)に対する通常のアクセスに悪影響を及ぼす可能性を大幅に低減することができる。この結果、いわゆるノイジーネイバー問題を解決することができる。
次に、コントローラ4の構成について説明する。
コントローラ4は、ホストインタフェース11、CPU12、NANDインタフェース13、およびDRAMインタフェース14等を含む。これらCPU12、NANDインタフェース13、DRAMインタフェース14は、バス10を介して相互接続される。
このホストインタフェース11は、ホスト2との通信を実行するように構成されたホストインタフェース回路である。このホストインタフェース11は、例えば、PCIeコントローラ(NVMeコントローラ)であってよい。ホストインタフェース11は、ホスト2から様々なコマンド(ライトコマンド、リードコマンド、VSSD管理コマンド、アンマップ(UNMAP)コマンド、等)を受信する。
ライトコマンドは、SSD3に対し、このライトコマンドによって指定されたデータをライトするように要求する。ライトコマンドは、開始LBA、転送長、およびVSSDIDを含んでいてもよい。ライトコマンド内のVSSDIDは、データが書き込まれるべきVSSDを一意に識別するための識別子である。リードコマンドは、SSD3に対し、このリードコマンドによって指定されたデータをリードするように要求する。リードコマンドは、開始LBA、転送長、およびVSSDIDを含んでいてもよい。リードコマンド内のVSSDIDは、データが読み出されるべきVSSDを一意に識別するための識別子である。
なお、複数のVSSDそれぞれがホスト2上の仮想マシンそれぞれと予め関連付けられているケースにおいては、ライトコマンド/リードコマンドは、VSSDのIDの代わりに、仮想マシンIDを含んでいてもよい。仮想マシンIDは、ライト要求(ライトコマンド)/リード要求(リードコマンド)を発行した仮想マシンの識別子である。コントローラ4が、ある仮想マシンIDを含むライトコマンドを受信した時、コントローラ4は、この仮想マシンIDに関連づけられたVSSDにデータを書き込む。
VSSD管理コマンドは、SSD3に対し、VSSDの作成または削除を要求するコマンドである。VSSD管理コマンドは、個々のユーザ(エンドユーザ)のストレージ要件に適合したVSSDを仮想マシンに提供するための様々なパラメータを含む。これらパラメータは、VSSDそれぞれのQoS制御のための機能をホスト2に提供することを可能にする。より詳しくは、これらパラメータは、VSSDの容量/性能/可用性等を自由に設定するために使用される。ホスト2は、このVSSD管理コマンドを使用することによって、作成すべきVSSDの容量/性能/可用性に関する要件を指定することができる。SSD3は、ホスト2によって指定された容量/性能/可用性に関する要件を満たすVSSDを作成することができる。よって、データセンター事業者は、個々のエンドユーザのニーズに応じて、これらエンドユーザに提供するストレージ(VSSD)の性能等を自由に設定することができる。
CPU12は、ホストインタフェース11、NANDインタフェース13、DRAMインタフェース14を制御するように構成されたプロセッサである。CPU12は、上述のFTLの処理に加え、ホスト2からの様々なコマンドを処理するためのコマンド処理等を実行する。
これらFTL処理およびコマンド処理は、CPU12によって実行されるファームウェアによって制御されてもよい。このファームウェアは、CPU12を、VSSD作成部21、書き込みデータ総量測定部22、書き込み制限部23、NAND処理実行時間制御部24、ホスト側アクセスバンド幅制御部25、およびメモリ資源量割り当て部26として機能させる。
VSSD作成部21は、複数のVSSDを管理するためのマルチVSSD管理機能を有する。各VSSDは、不揮発性メモリであるNAND型フラッシュメモリ5内の一種の記憶領域に相当する。各VSSDは、このVSSD用に割り当てられた幾つかの物理ブロックから構成される。あるVSSD用に割り当てられた物理ブロックの各々には、このVSSDに関連付けられたデータ(このVSSDに関連付けられた仮想マシンからのデータ)のみが格納され、他のVSSDに関連付けられたデータ(他の仮想マシンからのデータ)は格納されない。換言すれば、NAND型フラッシュメモリ5内の個々の物理ブロックは、単一のVSSDに対応するデータのみを格納する。
VSSD作成部21は、ホスト2からのVSSDそれぞれの作成要求に基づいて、複数のVSSD、つまり複数の記憶領域を作成する。換言すれば、VSSD作成部21は、ホスト2からのVSSDそれぞれの作成要求に基づいて、NAND型フラッシュメモリ5を複数の記憶領域(VSSD)に論理的に分割する。
ホスト2は、上述のVSSD管理コマンドを使用してVSSDそれぞれの作成をSSD3に要求することができる。VSSD作成部21は、ホスト2によって指定された容量/性能/可用性等に関する要件を満たすVSSDそれぞれを作成することができる。
ホスト2は、幾つかのVSSD管理コマンドをSSD3に発行することにより、容量/性能/可用性等に関するパラメータをVSSD毎に指定することができる。
VSSDの可用性等に関するパラメータの例には、VSSDに書き込み可能なデータの総量が含まれていてもよい。VSSDに書き込み可能なデータの総量は、VSSDに書き込み可能なデータの総量の上限値を示す。
通常、あるVSSDに書き込まれるデータの総量の増加は、このVSSD内の物理ブロックそれぞれの書き換え回数(プログラム/イレーズサイクルの数)の増加を引き起こす。つまり、VSSDに書き込まれるデータの総量が大きい程、このVSSDの消耗度を増加させる。なぜなら、VSSDに書き込まれるデータの総量が大きい程、このVSSD内の各物理ブロックのプログラム/イレーズサイクルの数が増加しやすくなり、これによってこのVSSDの消耗度が増加するからである。
したがって、もし書き込まれるデータの総量を全く制限しなかったならば、特定のVSSDの消耗度の過度な増加によって、利用できない物理ブロック(「バッドブロック」と称される)が増え、これによってSSD3の寿命の劣化が引き起こされる場合がある。
また、もし書き込まれるデータの総量を全く制限しなかったならば、SSD3とホスト2との間の通信のためのバンド幅が、特定の仮想マシンから特定のVSSDに向けた大量のI/Oによって専有されてしまい、これによって他の仮想マシンそれぞれのI/O性能が低下される場合もある、
ホスト2は、書き込み可能なデータの総量をVSSDそれぞれに配分することにより、個々のVSSDのQoS制御を行うことができる。
例えば、ホスト2は、頻繁に更新されるタイプのデータ(ホットデータ)を扱う仮想マシン用のVSSDの作成を要求する場合、大きな書き込み可能データ総量を指定してもよい。高い更新頻度を有するデータが書き込まれるVSSDに関しては、このVSSDに書き込まれるデータの総量が増える可能性が高いからである。一方、ホスト2は、例えば、更新の頻度が低いタイプのデータ(コールドデータ)を扱う仮想マシン用のVSSDの作成を要求する場合、小さい書き込み可能データ総量を指定してもよい。なお、データセンター事業者は、書き込み可能なデータの総量が大きいVSSD、つまり大きな書き込み総量が許容されるVSSDを要求するエンドユーザには高いVSSD利用料(レンタル料)を課し、書き込み可能なデータの総量が少ないVSSD、つまり少ない書き込み総量しか許容されないVSSDを要求するエンドユーザには安いVSSD利用料(レンタル料)を課してもよい。各エンドユーザは、自身のワークロードに適した書き込み総量を有するVSSDを利用することができる。
VSSD作成部21は、書き込み可能なデータの総量(書き込み総量)をVSSD毎に指定するホスト2からの要求に基づいて、個々のVSSD毎に、書き込み可能なデータの総量の上限(書き込み総量の上限)を示す上限値を管理する。
書き込みデータ総量測定部22は、各VSSDに書き込まれたデータの総量を測定する。VSSD#1、VSSD#2、…VSSD#nがSSD3内に作成されている場合においては、書き込みデータ総量測定部22は、VSSD#1に書き込まれたデータの総量、VSSD#2に書き込まれたデータの総量、そして、VSSD#nに書き込まれたデータの総量をそれぞれ別個に測定する。
例えば、書き込みデータ総量測定部22は、ホスト2からVSSD#1に書き込まれたデータの総量とVSSD#1のガベージコレクションによってVSSD#1に書き込まれたデータの総量との合計量を、VSSD#1に書き込まれたデータの総量として測定してもよい。同様に、書き込みデータ総量測定部22は、ホスト2からVSSD#2に書き込まれたデータの総量とVSSD#2のガベージコレクションによってVSSD#2に書き込まれたデータの総量との合計量を、VSSD#2に書き込まれたデータの総量として測定してもよい。これにより、各VSSDのガベージコレクションをも考慮して、各VSSDに書き込み可能なデータの総量の上限を制限することができる。
なお、書き込みデータ総量測定部22は、ホスト2からVSSD#1に書き込まれたデータの総量を、VSSD#1に書き込まれたデータの総量として測定し、ホスト2からVSSD#2に書き込まれたデータの総量を、VSSD#2に書き込まれたデータの総量として測定してもよい。
また、VSSD管理コマンドは、VSSDに書き込み可能なデータの総量の上限値を指定可能な以下の2つのパラメータを選択的に使用してもよい。
(1)SSD内総書き込み量を指定するパラメータ
(2)書き込み要求総量を指定するパラメータ
SSD内総書き込み量を指定するパラメータは、ホスト2からこのVSSDに書き込み可能なデータの総量とこのVSSDのガベージコレクションによってこのVSSDに書き込み可能なデータの総量との合計の上限値を指定する。このパラメータは、各VSSDのガベージコレクションをも考慮して、各VSSDに書き込み可能なデータの総量の上限を制限するために使用される。あるVSSDに対するSSD内総書き込み量が指定された場合にのみ、書き込みデータ総量測定部22は、ホスト2からこのVSSDに書き込まれたデータの総量とこのVSSDのガベージコレクションによってこのVSSDに書き込まれたデータの総量との合計量を、このVSSDに書き込まれたデータの総量として測定してもよい。
書き込み要求総量を指定するパラメータは、ホスト2からこのVSSDに書き込み可能なデータの総量の上限値を指定する。このパラメータは、ホスト2から各VSSDに書き込み可能なデータの総量の上限を制限するために使用される。あるVSSDに対する書き込み要求総量が指定された場合にのみ、書き込みデータ総量測定部22は、ホスト2からこのVSSDに書き込まれたデータの総量を、このVSSDに書き込まれたデータの総量として測定してもよい。
VSSD#1に書き込まれたデータの測定された総量が、VSSD#1の書き込み可能データの総量の上限値に達した場合、書き込み制限部23は、ホスト2からVSSD#1へのデータの書き込み(さらなる書き込み)を制限する。これにより、ホスト2によって指定されたVSSD#1用の書き込み総量を超える量のデータが、このVSSD#1に書き込まれることを防止することができる。VSSD#1を使用している仮想マシンに対応するエンドユーザは、データセンター事業者に対して、書き込み可能データの総量の増加を要求してもよい。データセンター事業者は、追加の使用料をこのエンドユーザに課し、そして、VSSD#1に書き込むことが可能データの総量が増えるようにVSSD#1を再設定するためのVSSD管理コマンドをSSD3に送信してもよい。
VSSD#2に書き込まれたデータの測定された総量が、VSSD#2の書き込み可能データの総量の上限値に達した場合、書き込み制限部23は、ホスト2からVSSD#2へのデータの書き込みを制限する。これにより、ホスト2によって指定されたVSSD#2の書き込み総量を超える量のデータがVSSD#2に書き込まれることを防止することができる。
同様に、VSSD#nに書き込まれたデータの測定された総量が、VSSD#nの書き込み可能なデータの総量の上限値に達した場合、書き込み制限部23は、ホスト2からVSSD#nへのデータの書き込みを制限する。これにより、ホスト2によって指定されたVSSD#nの書き込み総量を超える量のデータがVSSD#nに書き込まれることを防止することができる。
なお、SSD3のコントローラ4は、VSSD毎に測定された書き込み総量(SSD内総書き込み量および/または書き込み要求総量)をホスト2に報告することもできる。例えば、ホスト2からあるVSSDの書き込み総量(SSD内総書き込み量および/または書き込み要求総量)の取得が要求された場合、コントローラ4は、書き込み総量(SSD内総書き込み量および/または書き込み要求総量)をホスト2に報告する。
VSSDの容量に関するパラメータの例には、ユーザ容量およびオーバープロビジョニング容量が含まれる。ユーザ容量は、ユーザアクセス可能LBAスペースに相当する。オーバープロビジョニングは、ホスト2には利用可能なユーザスペース(ユーザアクセス可能LBAスペース)として見えないSSD3内のストレージ容量を割り当てることを意味する。オーバープロビジョニング容量は、ホスト2には利用可能なユーザスペースとして見えないSSD3内のストレージ容量である。エンドユーザがアクセス可能なユーザスペースは、ユーザ容量が増加するほど大きくなる。また、VSSDの性能および耐久性は、ユーザ容量に対するオーバープロビジョニング容量の割合が高くなるほど向上する。
ホスト2は、高い耐久性を必要とするVSSDの作成を要求する場合、ユーザ容量に対して例えば50〜100パーセントの容量を有するオーバープロビジョニング容量を指定してもよい。一方、ホスト2は、高い耐久性を必要としないVSSDの作成を要求する場合、ユーザ容量に対して例えばゼロ〜数パーセントの容量を有するオーバープロビジョニング容量を指定してもよい。
ホスト2は、VSSDのユーザ容量とこのVSSDのオーバープロビジョニング容量との組を指定するために、VSSDのユーザ容量と、このユーザ容量に対するオーバープロビジョニング容量の割合を示すパーセンテージとを指定してもよい。あるいは、ホスト2は、VSSDのユーザ容量とVSSDのオーバープロビジョニング容量との組を指定するために、VSSDのユーザ容量と、このVSSDに割り当てるべき物理ブロックの個数とを指定してもよい。後者の場合においては、VSSDに割り当てられた物理ブロックの個数に相当する容量からユーザ容量を引くことによって得られる残り容量が実際のオーバープロビジョニング容量となる。
データセンター事業者は、高い耐久性を有するVSSDを要求するエンドユーザには高いVSSDレンタル料を課し、高い耐久性を必要としないVSSDを要求するエンドユーザには安いVSSDレンタル料を課してもよい。
VSSD作成部21は、ユーザ容量とオーバープロビジョニング容量との組をVSSD毎に指定するホスト2からの要求に基づいて、個々のVSSDに、ユーザ容量とオーバープロビジョニング容量との合計の容量を割り当てる。ホスト2がVSSDに割り当てるべき物理ブロックの個数を指定した場合には、VSSD作成部21は、指定された個数の物理ブロックをこのVSSD用に確保(予約)すればよい。確保(予約)された物理ブロックの個数に対応する総容量が、このVSSDに割り当てられる、ユーザ容量とオーバープロビジョニング容量との合計の容量となる。
VSSDの性能に関するパラメータの例には、NAND処理実行時間(NANDバンド幅)が含まれる。NAND処理実行時間とは、単位時間当たりのNAND型フラッシュメモリ5の消去、書き込みまたは読み出し動作の実行時間の上限値である。ホスト2は、高速アクセス性能が必要とされるVSSDの作成を要求する場合、長い上限値(長いNAND処理実行時間)を指定し、高速アクセス性能が必要とされないVSSDの作成を要求する場合、短い上限値(短いNAND処理実行時間)を指定してもよい。
データセンター事業者は、高速アクセス性能を有するVSSDを要求するエンドユーザには高いVSSDレンタル料を課し、高速アクセス性能を必要としないVSSDを要求するエンドユーザには安いVSSDレンタル料を課してもよい。
VSSD作成部21は、NAND処理実行時間の上限値をVSSD毎に指定するホスト2からの要求に基づいて、個々のVSSD毎に、NAND処理実行時間の上限値、つまり、単位時間あたりのNAND型フラッシュメモリ5の消去、書き込みまたは読み出し動作の時間の上限値、を管理する。
NAND処理実行時間制御部24は、単位時間当たりの各VSSDの消去、書き込みまたは読み出し動作の実行時間が、指定された各VSSDのNAND処理実行時間の上限値に収まるように各VSSDに向けたコマンドそれぞれを実行する
VSSDの性能に関するパラメータの例には、ホスト2と各VSSDとの間のバンド幅(ホスト側アクセスバンド幅)も含まれる。
ホスト2は、ホスト2との通信のためのバンド幅をVSSD毎に指定することができる。例えば、ホスト2とSSD3とを接続するインタフェースがPCIeである場合、ホスト2とSSD3との間の最大バンド幅は、3.2Gbpsである。いま、3つのVSSD#1、#2、#3をSSD3内に作成する場合を想定する。例えば、ホスト2は、2Gbpsのバンド幅をVSSD#1とホスト2(VSSD#1に関連付けられた仮想マシン#1)との間のバンド幅として指定し、1.2Gbpsのバンド幅をVSSD#2とホスト2(VSSD#2に関連付けられた仮想マシン#2)との間のバンド幅として指定し、1Gbpsのバンド幅をVSSD#3とホスト2(VSSD#3に関連付けられた仮想マシン#3)との間のバンド幅として指定してもよい。
ホスト側アクセスバンド幅制御部25は、ホスト2との通信のためのバンド幅をVSSD毎に指定するホスト2からの要求に基づいて、VSSD毎に、ホスト2と通信のためのバンド幅を設定する。この場合、ホスト側アクセスバンド幅制御部25は、各VSSDとホスト2との間の実際のアクセスバンド幅が、指定された各VSSDのホスト側アクセスバンド幅に収まるように各VSSDに向けたコマンドそれぞれを実行する。
例えば、ホストインタフェース11(例えばPCIeコントローラ)は、ホスト2と連携することによって、一つのVSSDと一つの仮想マシンとの間のパスを介した伝送レートを制御してもよい。あるいは、コントローラ4は、ホスト2のメモリ上に置かれた複数のVSSDに対応する複数のコマンド発行キューからのコマンドを取得するレートを、個々のVSSD毎に制御してもよい。あるいは、コントローラ4は、ホスト2から受信されるコマンドが格納されるコマンドキュー内のコマンドを実行するレートを、個々のVSSD毎に制御してもよい。
VSSDの性能に関するパラメータの例には、個々のVSSDの管理データの格納のために使用可能なDRAM6のメモリ資源量も含まれる。例えば、複数のVSSD(VSSD#1、VSSD#2、…VSSD#n)が作成された場合には、DRAM6においては、これら複数のVSSDに対応する複数のメモリ領域31、32、…37が確保される。
メモリ領域31には、VSSD#1用の管理データの少なくとも一部が格納される。VSSD#1用の管理データには、VSSD#1用のルックアップテーブル(論理物理アドレス変換テーブル)31Cが含まれる。メモリ領域31は、NAND型フラッシュメモリ5内のルックアップテーブル31Cの少なくとも一部を格納するキャッシュ領域として機能する。したがって、メモリ領域31のサイズが大きいほど、キャッシュヒット率が向上し、VSSD#1に対するアクセス速度が速くなる。また、メモリ領域31は、ホスト2からのVSSD#1に向けたライトデータを一時的に格納するためのライトバッファ31A、およびVSSD#1からリードされたデータを一時的に格納するためのリードバッファ31Bを含んでもよい。
メモリ領域32には、VSSD#2用の管理データの少なくとも一部が格納される。VSSD#2用の管理データには、VSSD#2用のルックアップテーブル(論理物理アドレス変換テーブル)32Cが含まれる。メモリ領域32は、NAND型フラッシュメモリ5内のルックアップテーブル32Cの少なくとも一部を格納するキャッシュ領域として機能する。したがって、メモリ領域32のサイズが大きいほど、キャッシュヒット率が向上し、VSSD#2に対するアクセス速度が速くなる。また、メモリ領域32は、ホスト2からのVSSD#2に向けたライトデータを一時的に格納するためのライトバッファ32A、およびVSSD#2からリードされたデータを一時的に格納するためのリードバッファ32Bを含んでもよい。
メモリ領域37には、VSSD#n用の管理データの少なくとも一部が格納される。VSSD#n用の管理データには、VSSD#n用のルックアップテーブル(論理物理アドレス変換テーブル)37Cが含まれる。メモリ領域37は、NAND型フラッシュメモリ5内のルックアップテーブル37Cの少なくとも一部を格納するキャッシュ領域として機能する。したがって、メモリ領域37のサイズが大きいほど、キャッシュヒット率が向上し、VSSD#nに対するアクセス速度が速くなる。また、メモリ領域37は、ホスト2からのVSSD#nに向けたライトデータを一時的に格納するためのライトバッファ37A、およびVSSD#nからリードされたデータを一時的に格納するためのリードバッファ37Bを含んでもよい。
メモリ資源量割り当て部26は、DRAM6のメモリ資源の量をVSSD毎に指定するホスト2からの要求に基づいて、DRAM6内の第1サイズのメモリ領域31をVSSD#1の管理データの少なくとも一部を格納するメモリ領域として確保し、DRAM6内の第2サイズのメモリ領域32をVSSD#2の管理データの少なくとも一部を格納するメモリ領域として確保する。
NANDインタフェース13は、CPU12の制御の下、NAND型フラッシュメモリ5を制御する。DRAMインタフェース14は、CPU12の制御の下、DRAM6を制御するように構成されたDRAMコントローラである。DRAM6の記憶領域の一部は、複数のVSSDそれぞれを管理するためのVSSD管理テーブル30の格納のために使用される。
図3は、従来型SSDを使用した仮想化環境と、仮想化支援機構3Aを含むSSD3を使用した仮想化環境とを示す。
図3の左部は従来型SSDを使用した仮想化環境を示す。従来型SSDを使用した仮想化環境においては、ホスト(サーバ)側CPU上で動作するソフトウェアには仮想ディスクサービスソフトウェアが含まれており、この仮想ディスクサービスソフトウェアが、エミュレーションによって物理ストレージ(ここではSSD)から仮想ディスク#1、#2、#3を生成する。つまり、仮想ディスクサービスソフトウェアは、物理ストレージ(ここではSSD)の資源を論理的なストレージプールとして管理し、このストレージプールを使用して仮想ディスク#1、#2、#3を生成し、これら仮想ディスク#1、#2、#3を仮想マシン#1、#2、#3にそれぞれに提供する。
図3の右部は仮想化支援機構3Aを含むSSD3を使用した仮想化環境を示す。
仮想化支援機構3Aを含むSSD3を使用した仮想化環境においては、SSD3内の仮想化支援機構3AによってVSSD51、VSSD52、VSSD53がSSD3内に作成される。
これらVSSD51、VSSD52、VSSD53は、仮想ディスク#1、#2、#3と同等の機能を有している。したがって、仮想ディスク#1、#2、#3を作成するエミュレーション機能をホスト(サーバ)側CPU上で動作するソフトウェアから取り除くことが可能となる。この結果、ホスト(サーバ)側CPU上で動作するソフトウェアの構成を簡単化することができるので、ソフトウェア内の処理の遅延を短くでき、これによってホスト(サーバ)のI/O性能の向上を図ることができる。SSD3の物理リソースは、仮想マシン41、42、43によって共有される。仮想マシン41、42、43は、デバイスドライバ40を介してSSD3内のVSSD51、VSSD52、VSSD53を直接的にアクセスすることができる。
図4は、SSD3内のVSSDの数とホスト(サーバ)側の仮想マシンの数との関係を示す。
図4では、ホスト(サーバ)側では6つの仮想マシン41〜46が実行され、SSD3においては仮想マシン41〜46に対応する6つのVSSD51〜56が作成されている場合が想定されている。仮想化支援機構3Aを含むSSD3を使用した仮想化環境においては、ホスト(サーバ)側CPU上で動作するソフトウェアの構成を簡単化することができるので、ホスト(サーバ)側の仮想マシンの数を容易に増やすことができる。これにより、一つのホスト(サーバ)当たりのユーザの数を容易に増やすことが可能となる。
次に、図5を参照して、SSD3内に作成されるVSSDについて説明する。
SSD3の仮想化支援機構3Aは、仮想マシン41、42、…47にそれぞれ対応する複数のVSSD51、52、…57を作成する。この場合、仮想化支援機構3Aは、複数のVSSD51、52、…57それぞれに対応する複数の論理アドレス空間(LBA空間)を管理することができる。
各VSSDは、ネームスペースによって実現されてもよい。この場合、NAND型フラッシュメモリ5の記憶領域を論理的に複数の領域に分割するために、複数のネームスペースが利用される。各ネームスペースは、NAND型フラッシュメモリ5内の記憶領域であり、論理アドレス範囲(LBA範囲)が割り当てられる。個々のネームスペースは、これらネームスペースの識別子によって識別される。各VSSDがネームスペースによって実現された場合、各VSSDには、LBA範囲(LBA0〜LBAn−1)が割り当てられる。LBA範囲のサイズ(つまりLBAの数)は、VSSD(ネームスペース)毎に可変である。各LBA範囲は、LBA0から始まる。
図6は、SSD3によって実行されるVSSD管理を示す。
ここでは、複数のVSSDが複数のネームスペースによって実現されている場合を想定する。VSSD51には、0〜n−1の論理アドレス空間(LBA空間)A1が割り当てられている。VSSD52には、0〜n−1の論理アドレス空間(LBA空間)A2が割り当てられている。同様に、VSSD57には、0〜n−1の論理アドレス空間(LBA空間)Anが割り当てられている。
本実施形態では、ルックアップテーブルLUTは、VSSD毎に分割されている。つまり、VSSD51〜57に対応するルックアップテーブルLUT31C〜37CがSSD3のコントローラ4によって管理される。
ルックアップテーブルLUT31Cは、VSSD51のLBA空間A1とNAND型フラッシュメモリ5の物理アドレスとの間のマッピングを管理する。ルックアップテーブルLUT32は、VSSD52のLBA空間A2とNAND型フラッシュメモリ5の物理アドレスとの間のマッピングを管理する。ルックアップテーブルLUT37Cは、VSSD57のLBA空間AnとNAND型フラッシュメモリ5の物理アドレスとの間のマッピングを管理する。
コントローラ4は、ルックアップテーブルLUT31C〜37Cを使用することによって、VSSD(記憶領域)毎に独立してガベージコレクションを行うことができる。あるVSSDのガベージコレクションにおいては、このVSSDに割り当てられている物理ブロックそれぞれからガベージコレクション対象の1以上の物理ブロックが選択され、この選択された各物理ブロック内の有効データが、このVSSDに割り当てられた物理ブロック(フリーブロック)にコピーされる。そして、VSSDに対応するルックアップテーブルLUTが更新されて、コピーされたデータに対応するLBAそれぞれに正しい物理アドレスが関連付けられる。このVSSD(記憶領域)毎に独立したガベージコレクションにより、異なるVSSDに関連付けられたデータがガベージコレクションによって同じ物理ブロックに格納されてしまうことを防止することができる。
管理データ100は、VSSD51〜57とこれらVSSD51〜57に割り当てられた物理ブロックの個数との間の関係を示す情報を保持してもよい。
本実施形態においては、ガベージコレクションによって生成されたフリーブロックは、VSSD51〜57間で共有されるフリーブロックプールに入れられる。これにより、フリーブロックそれぞれはVSSD51〜57間で共有することができる。
図7は、VSSD管理コマンドを示す。
VSSD管理コマンドは、VSSDの作成および削除を含むVSSD管理のために使用されるコマンドである。VSSD管理コマンドは、以下のパラメータを含んでもよい。
(1)作成(クリエイト)/削除(リムーブ)
(2)capacity
(3)over−provisioning
(4)NAND処理実行時間
(5)メモリ資源量
(6)SSD内書き込み総量
(7)書き込み要求総量
(8)ホスト側アクセスバンド幅
作成/削除のパラメータの値0hは、VSSDの作成をSSD3に要求する。作成/削除のパラメータの値1hは、VSSDの削除をSSD3に要求する。VSSDの削除を要求する場合には、削除対象のVSSDの識別子(VSSDID)を指定するパラメータがVSSD管理コマンドに設定されてもよい。
capacity、over−provisioning、NAND処理実行時間、メモリ資源量、SSD内書き込み総量、書き込み要求総量、ホスト側アクセスバンド幅は、VSSDの容量/性能/可用性を自由に設定するためのパラメータである。VSSD管理コマンドは、これらパラメータの全てを指定することもできるし、これらパラメータの少なくとも一つを指定することもできる。
capacityのパラメータは、作成対象のVSSDに割り当てるべき容量(ユーザ容量)を指定する。ユーザ容量は、上述したように、ユーザアクセス可能LBAスペースに相当する。このユーザ容量は、このVSSDに割り当てるべきLBAの数に相当する。このユーザ容量はバイトによって指定されてもよいし、このVSSDに割り当てるべきLBAの数によって指定されてもよい。
over−provisioningのパラメータは、作成対象のVSSDに割り当てるべきオーバープロビジョニング容量を指定する。
NAND処理実行時間のパラメータは、NAND型フラッシュメモリ5内の処理の実行時間の上限値、つまり単位時間当たりの作成対象VSSDの消去、書き込みまたは読み出し動作の実行時間の上限値を指定する。
メモリ資源量のパラメータは、作成対象のVSSDに割り当てるべきメモリ資源(DRAM6)の量を指定する。
SSD内書き込み総量のパラメータおよび書き込み要求総量のパラメータは、作成対象のVSSDに書き込み可能なデータの総量の上限値を指定するためのパラメータである。書き込み可能なデータの総量は、例えば、設定された期間(例えば、一日、一ヶ月、等)当たりに書き込み可能なデータの総量であってもよい。
ホスト2は、作成対象のVSSDに書き込み可能なデータの総量の上限値を指定するために、SSD内書き込み総量のパラメータおよび書き込み要求総量のパラメータの双方を指定してもよいし、SSD内書き込み総量のパラメータおよび書き込み要求総量のパラメータの一方のみを指定してもよい。
SSD内書き込み総量のパラメータは、ホスト2から作成対象VSSDに書き込み可能なデータの総量と、このVSSDのガベージコレクションによって当該VSSDに書き込み可能なデータの総量との合計の上限値を指定する。
書き込み要求総量のパラメータは、ホスト2から作成対象のVSSDに書き込み可能なデータの総量の上限値を指定する。
ホスト側アクセスバンド幅のパラメータは、ホスト2との通信のために使用されるホスト2と作成対象VSSDとの間のバンド幅を指定する。
図8は、記憶領域(VSSD)管理テーブル30を示す。
VSSD管理テーブル30は、VSSD作成部21によって作成されたVSSD51〜57に対応する複数のエントリを含む。各エントリは、「VSSDID」フィールド、「capacity」フィールド、「over−provisioning」フィールド、「NAND処理実行時間」フィールド、「メモリ資源量」フィールド、「SSD内書き込み総量」フィールド、「書き込み要求総量」フィールド、「ホスト側アクセスバンド幅」フィールドを含む。
「VSSDID」フィールドには、対応するVSSDの識別子(VSSDID)が格納される。
「capacity」フィールドには、対応するVSSDのcapacity(ユーザ容量)が格納される。
「over−provisioning」フィールドには、対応するVSSDのオーバープロビジョニング容量が格納される。
「NAND処理実行時間」フィールドには、対応するVSSDの処理実行時間の上限値が格納される。
「メモリ資源量」フィールドには、対応するVSSDに割り当てるべきDRAM6のメモリ資源の量が格納される。
「SSD内書き込み総量」フィールドには、対応するVSSDに書き込み可能なデータの総量の上限値が格納される。
「書き込み要求総量」フィールドには、ホスト2によって対応するVSSDに書き込み可能なデータの総量の上限値が格納される。
「ホスト側アクセスバンド幅」フィールドには、対応するVSSDとホスト2との間のバンド幅が格納される。
次に、図9を参照して、ユーザ容量とオーバープロビジョニング容量との組をVSSD毎に指定するホスト2からの要求に基づいて、個々のVSSDにユーザ容量およびオーバープロビジョニング容量を割り当てる動作を説明する。
コントローラ4のVSSD作成部21は、ユーザ容量とオーバープロビジョニング容量との組をVSSD毎に指定するホスト2からの要求に基づいて、指定されたユーザ容量と指定されたオーバープロビジョニング容量との合計の容量を個々のVSSDに割り当てる。
ホスト2が、あるVSSD(ここではVSSD#n)の作成をSSD3に要求する場合、ホスト2は、このVSSD#n用に割り当てるべきユーザ容量とこのVSSD#n用に割り当てるべきオーバープロビジョニング容量とを指定する。コントローラ4のVSSD作成部21は、指定されたユーザ容量と指定されたオーバープロビジョニング容量との合計の容量をこのVSSD#n用に割り当てる。図9に示すように、割り当てられたユーザ容量とオーバープロビジョニング容量との合計がこのVSSD#nの総容量となる。常時したように、ユーザ容量に対するオーバープロビジョニング容量の割合が大きいほど、このVSSD#nの性能および耐久性が向上する。ホスト2は、capacityのパラメータおよびover−provisioningのパラメータを使用することによって、ユーザの要件に合った性能および耐久性を有するVSSDの作成をSSD3に要求することができる。SSD3は、capacityのパラメータによって指定されるユーザ容量とover−provisioningのパラメータによって指定されるオーバープロビジョニング容量との合計の容量をVSSDに割り当てることによって、ユーザの要件に合った性能および耐久性を有するVSSDを作成する。
なお、ホスト2は、VSSD#nに割り当てるべき物理ブロックの個数を、VSSD#nのオーバープロビジョニング容量として指定してもよい。この場合においては、VSSD作成部21は、指定された物理ブロックの個数をVSSD#n用に確保(予約)し、これら物理ブロックの個数に対応する容量をVSSD#nにその総容量として割り当ててもよい。総容量からユーザ容量を引くことによって得られる残り容量が、オーバープロビジョニング容量となる。
図10は、コントローラ4によって実行される、NAND処理実行時間制御処理を示す。
NAND型フラッシュメモリ5においては、ブロック単位の消去動作、ページ単位の書き込み動作、およびページ単位の読み出し動作が実行される。SSD3のコントローラ4は、ホスト2から受信されるリード要求(リードコマンド)/ライト要求(ライトコマンド)に従ってNAND型フラッシュメモリ5の読み出し動作および書き込み動作を制御する。また、コントローラ4は、NAND型フラッシュメモリ5のガベージコレクション(GC)を実行するために、NAND型フラッシュメモリ5の消去動作、書き込み動作、読み出し動作を制御する。
本実施形態では、ホスト2からのデータを書き込み先ブロックに書き込む書き込み動作(ホスト書き込み動作)とガベージコレクションためのデータコピー動作は同期して進行される。例えば、ある設定された量のデータコピーが完了すると、ある設定された量のホスト書き込み動作が許可される。また、ホスト2からのデータが書き込まれる書き込み先ブロックがデータで満たされると、SSD3内では、あるフリーブロックの消去動作が実行され、このフリーブロックが新たな書き込み先ブロックとして割り当てられる。したがって、ホスト2からのコマンドそれぞれの実行の進行に応じて、必要なNAND型フラッシュメモリ5の消去動作、書き込み動作、読み出し動作がそれぞれ実行される。
NAND型フラッシュメモリ5の消去動作に要される消去時間は、例えば2msである。NAND型フラッシュメモリ5の読み出し動作に要されるリード時間は、例えば100μsである。NAND型フラッシュメモリ5の書き込み動作に要されるプログラム時間は、例えば1msである。
コントローラ4は、ホスト2からVSSD毎に指定されたNAND処理実行時間に基づいて、単位時間当たりのNAND型フラッシュメモリ5の消去、書き込みまたは読み出し動作の実行時間の上限値をVSSD毎に管理する。
単位時間当たりのNAND型フラッシュメモリ5の消去、書き込みまたは読み出し動作の実行時間の上限値とは、単位時間(例えば1秒)当たりに、ある一つのNAND型フラッシュメモリチップを占有することが許可される時間(NAND処理実行時間)を意味する。
図10では、ホスト2によって指定されたVSSD#1用のNAND処理実行時間が100msであり、ホスト2によって指定されたVSSD#2用のNAND処理実行時間が200msであり、ホスト2によって指定されたVSSD#n用のNAND処理実行時間が150mである場合が想定されている。
VSSD#1に関しては、1サイクル(例えば1秒)当たりの消去、書き込みまたは読み出し動作の総実行時間の上限は最大100msまでに制限される。この場合、VSSD#1に関しては、例えば、1回の消去動作と98回の書き込み動作を1サイクル(1秒)当たりに実行することができる。あるいは、例えば、1回の消去動作と980回のリード動作とを1サイクル(1秒)当たりに実行することもできる。
コントローラ4のNAND処理実行時間制御部24は、1サイクル(例えば1秒)当たりのVSSD#1の消去、書き込みまたは読み出し動作の実行時間が100msの範囲内に収まるように、ホスト2からのVSSD#1に向けたコマンドそれぞれの実行を制御する。換言すれば、NAND処理実行時間制御部24は、1サイクル(例えば1秒)当たりのVSSD#1の消去、書き込みまたは読み出し動作の実行時間が100msの範囲内に収まるように、キューイングされているVSSD#1向けのコマンド群内の所定数のコマンドそれぞれを1サイクル当たりに実行する。
例えば、NAND処理実行時間制御部24は、100msの実行時間に対応する100個のトークンをVSSD#1にサイクル毎に配布してもよい。VSSD#1の1回の消去動作が実行される度に、消去時間に対応する数のトークン(例えば20個のトークン)がVSSD#1から回収される。また、VSSD#1の1回の読み出し動作が実行される度に、読み出し時間に対応する数のトークン(例えば1個のトークン)がVSSD#1から回収される。また、VSSD#1の1回の書き込み動作が実行される度に、プログラム時間に対応する数のトークン(例えば10個のトークン)がVSSD#1から回収される。VSSD#1用の残りトークンが無くなると、VSSD#1向けのコマンドの実行は停止される。そして、次のサイクルの開始時に、NAND処理実行時間制御部24は、100msの実行時間に対応する100個のトークンをVSSD#1に再び配布する。これにより、1サイクル(例えば1秒)当たりのVSSD#1の消去、書き込みまたは読み出し動作の実行時間を100msの範囲内に収まるように、キューイングされているVSSD#1向けのコマンド群の実行タイミングをスケジューリングすることができる。
VSSD#2に関しては、1サイクル(例えば1秒)当たりの消去、書き込みまたは読み出し動作の総実行時間の上限は最大200msまでに制限される。コントローラ4のNAND処理実行時間制御部24は、1サイクル(例えば1秒)当たりのVSSD#2の消去、書き込みまたは読み出し動作の実行時間が200msの範囲内に収まるように、ホスト2からのVSSD#2に向けたコマンドそれぞれの実行を制御する。換言すれば、NAND処理実行時間制御部24は、1サイクル(例えば1秒)当たりのVSSD#2の消去、書き込みまたは読み出し動作の実行時間が200msの範囲内に収まるように、キューイングされているVSSD#2向けのコマンド群内の所定数のコマンドそれぞれを1サイクル当たりに実行する。
例えば、NAND処理実行時間制御部24は、200msの実行時間に対応する200個のトークンをVSSD#2にサイクル毎に配布してもよい。VSSD#2の1回の消去動作が実行される度に、消去時間に対応する数のトークン(例えば20個のトークン)がVSSD#2から回収される。また、VSSD#2の1回の読み出し動作が実行される度に、読み出し時間に対応する数のトークン(例えば1個のトークン)がVSSD#2から回収される。また、VSSD#2の1回の書き込み動作が実行される度に、プログラム時間に対応する数のトークン(例えば10個のトークン)がVSSD#2から回収される。VSSD#2用の残りトークンが無くなると、VSSD#2向けのコマンドの実行は停止される。そして、次のサイクルの開始時に、NAND処理実行時間制御部24は、200msの実行時間に対応する200個のトークンをVSSD#2に再び配布する。これにより、1サイクル(例えば1秒)当たりのVSSD#2の消去、書き込みまたは読み出し動作の実行時間が200msの範囲内に収まるように、キューイングされているVSSD#2向けのコマンド群を実行することができる。
VSSD#nに関しては、1サイクル(例えば1秒)当たりの消去、書き込みまたは読み出し動作の総実行時間の上限は最大150msまでに制限される。コントローラ4のNAND処理実行時間制御部24は、1サイクル(例えば1秒)当たりのVSSD#nの消去、書き込みまたは読み出し動作の実行時間が150msの範囲内に収まるように、ホスト2からのVSSD#nに向けたコマンドそれぞれの実行を制御する。換言すれば、NAND処理実行時間制御部24は、1サイクル(例えば1秒)当たりのVSSD#nの消去、書き込みまたは読み出し動作の実行時間が150msの範囲内に収まるように、キューイングされているVSSD#n向けのコマンド群内の所定数のコマンドそれぞれを1サイクル当たりに実行する。
例えば、NAND処理実行時間制御部24は、150msの実行時間に対応する150個のトークンをVSSD#nにサイクル毎に配布してもよい。VSSD#nの1回の消去動作が実行される度に、消去時間に対応する数のトークン(例えば20個のトークン)がVSSD#nから回収される。また、VSSD#2の1回の読み出し動作が実行される度に、読み出し時間に対応する数のトークン(例えば1個のトークン)がVSSD#nから回収される。また、VSSD#nの1回の書き込み動作が実行される度に、プログラム時間に対応する数のトークン(例えば10個のトークン)がVSSD#nから回収される。VSSD#n用の残りトークンが無くなると、VSSD#n向けのコマンドの実行は停止される。そして、次のサイクルの開始時に、NAND処理実行時間制御部24は、150msの実行時間に対応する150個のトークンをVSSD#nに再び配布する。これにより、1サイクル(例えば1秒)当たりのVSSD#nの消去、書き込みまたは読み出し動作の実行時間が150msの範囲内に収まるように、キューイングされているVSSD#n向けのコマンド群を実行することができる。
上述のトークン配布および回収処理は、ホスト2のメモリ上の複数のコマンドキュー(コマンド発行キュー)からのコマンドを取得するレートを個々のVSSD毎に制御するために使用されてもよい。この場合、ホスト2のメモリ上には、複数のVSSDに対応する複数のコマンドキュー(コマンド発行キュー)が配置される。仮想マシン#1からのコマンドはVSSD#1に対応するコマンドキューに置かれ、仮想マシン#2からのコマンドはVSSD#2に対応するコマンドキューに置かれ、仮想マシン#nからのコマンドはVSSD#nに対応するコマンドキューに置かれる。トークン配布および回収処理では、VSSDそれぞれに対応する処理実行時間の上限値に対応する個数のトークンがこれらVSSDに分配される。個々のVSSDにおいては、このVSSD向けのコマンドがホスト2のメモリ上のコマンドキューから取得されて実行される。このコマンドの実行に伴って実行することが必要となるNAND動作(書き込み動作、読み出し動作、または消去動作)の実行時間の長さに応じた数のトークンが、このVSSDから回収される。残りトークンが無くなると、ホスト2のメモリ上のコマンドキューからのこのVSSD向けのコマンドの取得及び実行は停止される。そして、次のサイクルの開始時に、VSSDそれぞれに対応する処理実行時間の上限値に対応する個数のトークンがこれらVSSDに再び分配される。
ホスト側アクセスバンド幅制御部25も、上述のトークン配布および回収処理と同様の仕組みを使用することによって、各VSSDに対するバンド幅が指定されたホスト側アクセスバンド幅に収まれように各VSSD向けのコマンドそれぞれを実行してもよい。
図11は、VSSD作成処理のシーケンスを示す。
VSSD作成部21は、ホスト2から受信した最初のVSSD管理コマンドに基づいてVSSD51(VSSD#1)を作成し、このVSSD管理コマンドによって指定されたVSSD51(VSSD#1)用の設定パラメータをVSSD管理テーブル30に格納する(ステップS101)。
次に、VSSD作成部21は、VSSD管理テーブル30を参照し、NAND型フラッシュメモリ5の全容量の中から、capacityのパラメータによって指定されるユーザ容量とover−provisioningのパラメータによって指定されるオーバープロビジョニング容量との合計の容量を確保し、その確保された容量をVSSD51(VSSD#1)に割り当てる(ステップS102)。ステップS102では、VSSD作成部21は、over−provisioningのパラメータによって指定された個数の物理ブロックを確保(予約)し、この確保(予約)された数の物理ブロックをVSSD51(VSSD#1)に割り当ててもよい。
続いて、コントローラ4のメモリ資源量割り当て部26は、VSSD管理テーブル30を参照し、VSSD51(VSSD#1)のための管理データの格納のためのメモリ領域(VSSD#1用メモリ領域31)をDRAM6上に確保し、その確保したメモリ領域(VSSD#1用メモリ領域31)をVSSD51(VSSD#1)に割り当てる(ステップS103)。
ステップS101〜ステップS103の処理が完了した後、コントローラ4は、ホスト2にコマンド完了のレスポンスを返す。コマンド完了のレスポンスには、VSSD#1のIDが含まれている。ホスト2においては、仮想マシン41は、このVSSD#1のIDを含むコマンドをSSD3に送信する。VSSD#1のIDを含むコマンドの受信に応答して、コントローラ4は、VSSD#1に対するアクセスを実行する。
VSSD作成部21は、2番目にホスト2から受信したVSSD管理コマンドに基づいてVSSD52(VSSD#2)を作成し、VSSD52(VSSD#2)用の設定パラメータをVSSD管理テーブル30に格納する(ステップS104)。
次に、VSSD作成部21は、VSSD管理テーブル30を参照し、NAND型フラッシュメモリ5の全容量の中から、capacityのパラメータによって指定されるユーザ容量とover−provisioningのパラメータによって指定されるオーバープロビジョニング容量との合計の容量を確保し、その確保された容量をVSSD52(VSSD#2)に割り当てる(ステップS105)。ステップS105では、VSSD作成部21は、over−provisioningのパラメータによって指定された個数の物理ブロックを確保(予約)し、この確保(予約)された数の物理ブロックをVSSD52(VSSD#2)に割り当ててもよい。
続いて、メモリ資源量割り当て部26は、VSSD管理テーブル30を参照し、VSSD52(VSSD#2)のための管理データの格納のためのメモリ領域(VSSD#2用メモリ領域32)をDRAM6上に確保し、その確保したメモリ領域(VSSD#2用メモリ領域32)をVSSD52(VSSD#2)に割り当てる(ステップS106)。
ステップS104〜ステップS106の処理が完了した後、コントローラ4は、ホスト2にコマンド完了のレスポンスを返す。コマンド完了のレスポンスには、VSSD#2のIDが含まれている。ホスト2においては、仮想マシン42は、このVSSD#2のIDを含むコマンドをSSD3に送信する。VSSD#2のIDを含むコマンドの受信に応答して、コントローラ4は、VSSD#2に対するアクセスを実行する。
同様に、VSSD作成部21は、n番目にホスト2から受信したVSSD管理コマンドに基づいてVSSD57(VSSD#n)を作成し、VSSD57(VSSD#n)用の設定パラメータをVSSD管理テーブル30に格納する(ステップS107)。
次に、VSSD作成部21は、VSSD管理テーブル30を参照し、NAND型フラッシュメモリ5の全容量の中から、capacityのパラメータによって指定されるユーザ容量とover−provisioningのパラメータによって指定されるオーバープロビジョニング容量との合計の容量を確保し、その確保された容量をVSSD57(VSSD#n)に割り当てる(ステップS108)。ステップS108では、VSSD作成部21は、over−provisioningのパラメータによって指定された個数の物理ブロックを確保(予約)し、この確保(予約)された数の物理ブロックをVSSD57(VSSD#n)に割り当ててもよい。
続いて、メモリ資源量割り当て部26は、VSSD管理テーブル30を参照し、VSSD57(VSSD#n)のための管理データの格納のためのメモリ領域(VSSD#n用メモリ領域37)をDRAM6上に確保し、その確保したメモリ領域(VSSD#n用メモリ領域37)をVSSD57(VSSD#n)に割り当てる(ステップS109)。
ステップS107〜ステップS109の処理が完了した後、コントローラ4は、ホスト2にコマンド完了のレスポンスを返す。コマンド完了のレスポンスには、VSSD#nのIDが含まれている。ホスト2においては、仮想マシン47は、このVSSD#nのIDを含むコマンドをSSD3に送信する。VSSD#nのIDを含むコマンドの受信に応答して、コントローラ4は、VSSD#nに対するアクセスを実行する。
次に、図12を参照して、コントローラ4によって実行されるライトデータ量カウント処理を説明する。
コントローラ4は、ホスト2によって書き込まれたデータの量をカウントするためのカウンタとガベージコレクション動作によって書き込まれたデータの量をカウントするためのカウンタとの2種類のカウンタを、VSSD毎に備える。
ホスト2からのVSSD51(VSSD#1)向けのライトデータはライトバッファ31Aに書き込まれる。カウンタ61は、ライトバッファ31AからVSSD51(VSSD#1)に書き込まれるデータの量をカウントする。カウンタ62は、VSSD51(VSSD#1)のガベージコレクションによってVSSD51(VSSD#1)に書き込まれるデータの総量をカウントする。VSSD51(VSSD#1)のガベージコレクションによって生成されるフリーブロックは、VSSD間で共有されるフリーブロックプール60に置かれてもよい。
ホスト2からのVSSD52(VSSD#2)向けのライトデータはライトバッファ32Aに書き込まれる。カウンタ63は、ライトバッファ32AからVSSD52(VSSD#2)に書き込まれるデータの量をカウントする。カウンタ64は、VSSD52(VSSD#2)のガベージコレクションによってVSSD52(VSSD#2)に書き込まれるデータの総量をカウントする。VSSD52(VSSD#2)のガベージコレクションによって生成されるフリーブロックは、VSSD間で共有されるフリーブロックプール60に置かれてもよい。
ホスト2からのVSSD57(VSSD#n)向けのライトデータはライトバッファ37Aに書き込まれる。カウンタ65は、ライトバッファ37AからVSSD57(VSSD#n)に書き込まれるデータの量をカウントする。カウンタ66は、VSSD57(VSSD#n)のガベージコレクションによってVSSD57(VSSD#n)に書き込まれるデータの総量をカウントする。VSSD57(VSSD#n)のガベージコレクションによって生成されるフリーブロックは、VSSD間で共有されるフリーブロックプール60に置かれてもよい。
図13のフローチャートは、コントローラ4によって実行されるライトデータ量カウント処理の手順を示す。
SSD3のコントローラ4がホスト2からライトコマンドを受信した時、コントローラ4は、ライトコマンド内に含まれるVSSDIDに基づいて、ライトデータが書き込まれるべき対象VSSDを決定する。そして、コントローラ4は、ライトデータを対象VSSDに書き込むと共に(ステップS201、ステップS203、ステップS205)、書き込まれるデータの量をカウントする(ステップS202、ステップS204、ステップS206)。
VSSD51(VSSD#1)へのデータの書き込みが行われる場合(ステップS201のYES)、コントローラ4は、VSSD51(VSSD#1)へデータを書き込むと共に、カウンタ61を使用して、VSSD51(VSSD#1)に書き込まれたデータの量をカウントする(ステップS202)。
VSSD52(VSSD#2)へのデータの書き込みが行われる場合(ステップS203のYES)、コントローラ4は、VSSD52(VSSD#2)へデータを書き込むと共に、カウンタ63を使用して、VSSD52(VSSD#2)に書き込まれたデータの量をカウントする(ステップS204)。
VSSD57(VSSD#n)へのデータの書き込みが行われる場合(ステップS205のYES)、コントローラ4は、VSSD57(VSSD#n)へデータを書き込むと共に、カウンタ65を使用して、VSSD57(VSSD#n)に書き込まれたデータの量をカウントする(ステップS206)。
また、ガベージコレクションが実行されると、コントローラ4は、ガベージコレクションによって書き込まれるデータの量をVSSD毎にカウントする。
VSSD51(VSSD#1)のガベージコレクションが実行される場合(ステップS207のYES)、コントローラ4は、カウンタ62を使用して、このガベージコレクションによってVSSD51(VSSD#1)に書き込まれるデータの量をカウントする(ステップS210)。
VSSD52(VSSD#2)のガベージコレクションが実行される場合(ステップS208のYES)、コントローラ4は、カウンタ64を使用して、このガベージコレクションによってVSSD52(VSSD#2)に書き込まれるデータの量をカウントする(ステップS211)。
VSSD57(VSSD#n)のガベージコレクション動作が実行される場合(ステップS209のYES)、コントローラ4は、カウンタ66を使用して、このガベージコレクションによってVSSD57(VSSD#n)に書き込まれるデータの量をカウントする(ステップS212)。
図14のフローチャートは、コントローラ4によって実行される、個々のVSSDに書き込まれるデータの総量(書き込み総量)を制限する処理の手順を示す。
コントローラ4の書き込み制限部23は、VSSD51(VSSD#1)の書き込み総量の測定値が、VSSD51(VSSD#1)用の書き込み総量の上限値に達したか否かを判定する(ステップS301)。VSSD51(VSSD#1)の書き込み総量の測定値が、VSSD51(VSSD#1)用の書き込み総量の上限値に達した場合(ステップS301のYES)、書き込み制限部23は、ホスト2からVSSD51へのデータの書き込みを制限する(ステップS302)。ステップS302では、書き込み制限部23は、ホスト2からVSSD51(VSSD#1)へのデータの書き込みを禁止してもよいし、あるいは、ホスト2からVSSD51(VSSD#1)へのデータの書き込み性能を低下させてもよい。
書き込み制限部23は、VSSD52(VSSD#2)の書き込み総量の測定値が、VSSD52(VSSD#2)用の書き込み総量の上限値に達したか否かを判定する(ステップS303)。VSSD52(VSSD#2)の書き込み総量の測定値が、VSSD52(VSSD#2)用の書き込み総量の上限値に達した場合(ステップS303のYES)、書き込み制限部23は、ホスト2からVSSD52(VSSD#2)へのデータの書き込みを制限する(ステップS304)。ステップS304では、書き込み制限部23は、ホスト2からVSSD52(VSSD#2)へのデータの書き込みを禁止してもよいし、あるいは、ホスト2からVSSD52(VSSD#2)へのデータの書き込み性能を低下させてもよい。
書き込み制限部23は、VSSD57(VSSD#n)の書き込み総量の測定値が、VSSD57(VSSD#n)用の書き込み総量の上限値に達したか否かを判定する(ステップS305)。VSSD57(VSSD#n)の書き込み総量の測定値が、VSSD57(VSSD#n)用の書き込み総量の上限値に達した場合(ステップS305のYES)、書き込み制限部23は、ホスト2からVSSD57(VSSD#n)へのデータの書き込みを制限する(ステップS306)。ステップS306では、書き込み制限部23は、ホスト2からVSSD57(VSSD#n)へのデータの書き込みを禁止してもよいし、あるいは、ホスト2からVSSD57(VSSD#n)へのデータの書き込み性能を低下させてもよい。
図15のフローチャートは、コントローラ4によって実行されるNAND処理実行時間制御処理の手順を示す。
コントローラ4がホスト2からコマンドを受信した場合(ステップS401のYES)、コントローラ4は、このコマンド内に含まれるVSSDIDに基づいて、このコマンドが実行されるべき対象のVSSDを決定する(ステップS402、ステップS406、ステップS410)。
対象のVSSDがVSSD51(VSSD#1)であった場合、つまり、受信されたコマンドがVSSD51(VSSD#1)向けのコマンドであった場合(ステップS402のYES)、コントローラ4は、現在のサイクルにおけるVSSD51(VSSD#1)の処理実行時間の累計がVSSD51(VSSD#1)用の処理実行時間の上限値に達しているか否かを判定する(ステップS403)。現在のサイクルにおけるVSSD51(VSSD#1)の処理実行時間の累計は、現在のサイクルにおいてVSSD#1の消去、書き込みまたは読み出し動作に使用された総時間を示す。また、VSSD51(VSSD#1)用の処理実行時間の上限値は、VSSD管理コマンドによって指定されるVSSD#1用の「NAND処理実行時間」を示す。
現在のサイクルにおけるVSSD51(VSSD#1)の処理実行時間の累計がVSSD51(VSSD#1)用の処理実行時間の上限値に達していない場合(ステップS403のNO)、コントローラ4は、受信されたVSSD51(VSSD#1)向けのコマンドを実行する(ステップS404)。一方、現在のサイクルにおけるVSSD51(VSSD#1)の処理実行時間の累計がVSSD51(VSSD#1)用の処理実行時間の上限値に達している場合(ステップS404のYES)、コントローラ4は、受信されたVSSD51(VSSD#1)向けのコマンドを実行せず(ステップS405)、次のサイクルまで待機してから当該コマンドを実行する。
ステップS403〜S405の処理は、例えば、上述のトークン配布および回収によって実現してもよい。この場合、コントローラ4は、VSSD#1用の処理実行時間の上限値に対応する数のトークンをVSSD#1用に割り当てる。そして、ホスト2(仮想マシン#1)からのVSSD#1向けのコマンドを実行する度に、このコマンドの種類に対応する数のトークンをVSSD#1から回収する。VSSD#1用の残りトークンが無くなった時にあるいはある数以下にまで減少した時に、コントローラ4は、現在のサイクルにおけるVSSD#1の処理実行時間の累計がVSSD#1用の処理実行時間の上限値に達したと判定する。
対象のVSSDがVSSD52(VSSD#2)であった場合、つまり、受信されたコマンドがVSSD52(VSSD#2)向けのコマンドであった場合(ステップS406のYES)、コントローラ4は、現在のサイクルにおけるVSSD52(VSSD#2)の処理実行時間の累計がVSSD52(VSSD#2)用の処理実行時間の上限値に達しているか否かを判定する(ステップS407)。現在のサイクルにおけるVSSD52(VSSD#2)の処理実行時間の累計は、現在のサイクルにおいてVSSD#2の消去、書き込みまたは読み出し動作に使用された総時間を示す。また、VSSD52(VSSD#2)用の処理実行時間の上限値は、VSSD管理コマンドによって指定されるVSSD#2用の「NAND処理実行時間」を示す。
現在のサイクルにおけるVSSD52(VSSD#2)の処理実行時間の累計がVSSD52(VSSD#2)用の処理実行時間の上限値に達していない場合(ステップS407のNO)、コントローラ4は、受信されたVSSD52(VSSD#2)向けのコマンドを実行する(ステップS408)。一方、現在のサイクルにおけるVSSD52(VSSD#2)の処理実行時間の累計がVSSD52(VSSD#2)用の処理実行時間の上限値に達している場合(ステップS407のYES)、コントローラ4は、受信されたVSSD52(VSSD#2)向けのコマンドを実行せず(ステップS409)、次のサイクルまで待機してから当該コマンドを実行する。
ステップS407〜S409の処理は、例えば、上述のトークン配布および回収によって実現してもよい。この場合、コントローラ4は、VSSD#2用の処理実行時間の上限値に対応する数のトークンをVSSD#2用に割り当てる。そして、ホスト2(仮想マシン#2)からのVSSD#2向けのコマンドを実行する度に、このコマンドの種類に対応する数のトークンをVSSD#2から回収する。VSSD#2用の残りトークンが無くなった時にあるいはある数以下にまで減少した時に、コントローラ4は、現在のサイクルにおけるVSSD#2の処理実行時間の累計がVSSD#2用の処理実行時間の上限値に達したと判定する。
対象のVSSDがVSSD57(VSSD#n)であった場合、つまり、受信されたコマンドがVSSD57(VSSD#n)向けのコマンドであった場合(ステップS410のYES)、コントローラ4は、現在のサイクルにおけるVSSD57(VSSD#n)の処理実行時間の累計がVSSD57(VSSD#n)用の処理実行時間の上限値に達しているか否かを判定する(ステップS411)。現在のサイクルにおけるVSSD57(VSSD#n)の処理実行時間の累計は、現在のサイクルにおいてVSSD#nの消去、書き込みまたは読み出し動作に使用された総時間を示す。また、VSSD57(VSSD#n)用の処理実行時間の上限値は、VSSD管理コマンドによって指定されるVSSD#n用の「NAND処理実行時間」を示す。
現在のサイクルにおけるVSSD57(VSSD#n)の処理実行時間の累計がVSSD57(VSSD#n)用の処理実行時間の上限値に達していない場合(ステップS411のNO)、コントローラ4は、受信されたVSSD57(VSSD#n)向けのコマンドを実行する(ステップS412)。一方、現在のサイクルにおけるVSSD57(VSSD#n)の処理実行時間の累計がVSSD57(VSSD#n)用の処理実行時間の上限値に達している場合(ステップS411のYES)、コントローラ4は、受信されたVSSD57(VSSD#n)向けのコマンドを実行せず(ステップS413)、次のサイクルまで待機してから当該コマンドを実行する。
ステップS411〜S413の処理は、例えば、上述のトークン配布および回収によって実現してもよい。この場合、コントローラ4は、VSSD#n用の処理実行時間の上限値に対応する数のトークンをVSSD#n用に割り当てる。そして、ホスト2(仮想マシン#n)からのVSSD#n向けのコマンドを実行する度に、このコマンドの種類に対応する数のトークンをVSSD#nから回収する。VSSD#n用の残りトークンが無くなった時にあるいはある数以下にまで減少した時に、コントローラ4は、現在のサイクルにおけるVSSD#nの処理実行時間の累計がVSSD#n用の処理実行時間の上限値に達したと判定する。
次に、図16、図17を参照して、上述のトークン配布および回収処理の例を説明する。
トークン配布および回収処理では、VSSDそれぞれに対応する処理実行時間の上限値に対応する個数のトークンがこれらVSSDに分配される。個々のVSSDにおいては、このVSSD向けのコマンドが実行される度に、このコマンドの実行に伴って実行することが必要となるNAND動作(書き込み動作、読み出し動作、または消去動作)の実行時間の長さに応じた数のトークンが、このVSSDから回収される。残りトークンが無くなると、このVSSD向けのコマンドの実行は停止される。そして、次のサイクルの開始時に、VSSDそれぞれに対応する処理実行時間の上限値に対応する個数のトークンがこれらVSSDに再び分配される。
図16、図17の処理例では、ライトコマンド用のトークンとリードコマンド用のトークンがそれぞれ独立している場合が想定されている。ライトコマンド用のトークンはGC用のトークンと共用されてもよい。
図16は、ライトコマンド(ホスト書き込み動作)またはGCコマンド(データコピーのための書き込み動作、または消去動作)を実行するためのトークン配布および回収処理の例を示している。
ホスト2からのVSSD51(VSSD#1)向けのコマンドそれぞれは、VSSD#1用のコマンドキュー71Aに格納されてもよい。ホスト2からのVSSD52(VSSD#2)向けのコマンドそれぞれは、VSSD#2用のコマンドキュー72Aに格納されてもよい。ホスト2からのVSSD53(VSSD#3)向けのコマンドそれぞれは、VSSD#3用のコマンドキュー73Aに格納される。同様に、ホスト2からのVSSD57(VSSD#n)向けのコマンドそれぞれは、VSSD#n用のコマンドキュー77Aに格納されてもよい。
上述したように、各VSSDには、そのVSSDの処理実行時間に対応する個数のトークンが配布される。コントローラ4のトークン分配部79は、VSSD#1用のトークン管理部71Cに、VSSD#1の処理実行時間の上限値に対応する個数のトークンを配布する。同様に、トークン分配部79は、VSSD#2用のトークン管理部72Cに、VSSD#2の処理実行時間の上限値に対応する個数のトークンを配布し、VSSD#3用のトークン管理部73Cに、VSSD#3の処理実行時間の上限値に対応する個数のトークンを配布し、VSSD#n用のトークン管理部77Cに、VSSD#nの処理実行時間の上限値に対応する個数のトークンを配布する。
VSSD#1用のトークン管理部71Cがライト(またはGC)の実行に必要な個数のトークンを有している場合、トークン管理部71Cは、VSSD#1用のコマンド発行部71BがライトコマンドまたはGCコマンドを発行することを許可してもよい。ライトコマンドまたはGCコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、ライト(またはGC)の実行に必要な個数のトークンをトークン管理部71Cから回収してもよい。トークン管理部71Cにトークンが無くなると、VSSD#1用のコマンドの発行は禁止される。
VSSD#1用のライトコマンドまたはGCコマンドの発行が許可された場合、VSSD#1用のコマンド発行部71Dは、フリー管理部71Eによって管理されるVSSD#1用の現在のフリーブロックの個数等に基づいて、ライトコマンドまたはGCコマンドのいずれを発行するかを決定してもよく、そして、ライトコマンドまたはGCコマンドのいずれかを発行してもよい。これにより、VSSD#1に対する書き込み動作、消去動作等が実行される。発行されたコマンドは発行済みキュー78に入れられてもよい。
VSSD#2用のトークン管理部72Cがライト(またはGC)の実行に必要な個数のトークンを有している場合、トークン管理部72Cは、VSSD#2用のコマンド発行部72BがライトコマンドまたはGCコマンドを発行することを許可してもよい。ライトコマンドまたはGCコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、ライト(またはGC)の実行に必要な個数のトークンをトークン管理部72Cから回収してもよい。トークン管理部72Cにトークンが無くなると、VSSD#2用のコマンドの発行は禁止される。
VSSD#2用のライトコマンドまたはGCコマンドの発行が許可された場合、VSSD#2用のコマンド発行部72Dは、フリー管理部72Eによって管理されるVSSD#2用の現在のフリーブロックの個数等に基づいて、ライトコマンドまたはGCコマンドのいずれを発行するかを決定してもよく、そして、ライトコマンドまたはGCコマンドのいずれかを発行してもよい。これにより、VSSD#2に対する書き込み動作、消去動作等が実行される。発行されたコマンドは発行済みキュー78に入れられてもよい。
VSSD#3用のトークン管理部73Cがライト(またはGC)の実行に必要な個数のトークンを有している場合、トークン管理部73Cは、VSSD#3用のコマンド発行部73BがライトコマンドまたはGCコマンドを発行することを許可してもよい。ライトコマンドまたはGCコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、ライト(またはGC)の実行に必要な個数のトークンをトークン管理部73Cから回収してもよい。トークン管理部73Cにトークンが無くなると、VSSD#3用のコマンドの発行は禁止される。
VSSD#3用のライトコマンドまたはGCコマンドの発行が許可された場合、VSSD#3用のコマンド発行部73Dは、フリー管理部73Eによって管理されるVSSD#3用の現在のフリーブロックの個数等に基づいて、ライトコマンドまたはGCコマンドのいずれを発行するかを決定してもよく、そして、ライトコマンドまたはGCコマンドのいずれかを発行してもよい。これにより、VSSD#3に対する書き込み動作、消去動作等が実行される。発行されたコマンドは発行済みキュー78に入れられてもよい。
VSSD#n用のトークン管理部77Cがライト(またはGC)の実行に必要な個数のトークンを有している場合、トークン管理部77Cは、VSSD#n用のコマンド発行部77BがライトコマンドまたはGCコマンドを発行することを許可してもよい。ライトコマンドまたはGCコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、ライト(またはGC)の実行に必要な個数のトークンをトークン管理部77Cから回収してもよい。トークン管理部77Cにトークンが無くなると、VSSD#n用のコマンドの発行は禁止される。
VSSD#n用のライトコマンドまたはGCコマンドの発行が許可された場合、VSSD#n用のコマンド発行部77Dは、フリー管理部77Eによって管理されるVSSD#n用の現在のフリーブロックの個数等に基づいて、ライトコマンドまたはGCコマンドのいずれを発行するかを決定してもよく、そして、ライトコマンドまたはGCコマンドのいずれかを発行してもよい。これにより、VSSD#nに対する書き込み動作、消去動作等が実行される。発行されたコマンドは発行済みキュー78に入れられてもよい。
図17は、リードコマンドを実行するためのトークン配布および回収処理の例を示している。
VSSD#1用のトークン管理部71Cがリードの実行に必要な個数のトークンを有している場合、トークン管理部71Cは、VSSD#1用のコマンド発行部71Bがリードコマンドを発行することを許可してもよい。リードコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、リードの実行に必要な個数のトークンをトークン管理部71Cから回収してもよい。トークン管理部71Cにトークンが無くなると、VSSD#1用のコマンドの発行は禁止される。
VSSD#2用のトークン管理部72Cがリードの実行に必要な個数のトークンを有している場合、トークン管理部72Cは、VSSD#2用のコマンド発行部72Bがリードコマンドを発行することを許可してもよい。リードコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、リードの実行に必要な個数のトークンをトークン管理部72Cから回収してもよい。トークン管理部72Cにトークンが無くなると、VSSD#2用のコマンドの発行は禁止される。
VSSD#3用のトークン管理部73Cがリードの実行に必要な個数のトークンを有している場合、トークン管理部73Cは、VSSD#3用のコマンド発行部73Bがリードコマンドを発行することを許可してもよい。リードコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、リードの実行に必要な個数のトークンをトークン管理部73Cから回収してもよい。トークン管理部73Cにトークンが無くなると、VSSD#3用のコマンドの発行は禁止される。
VSSD#n用のトークン管理部77Cがリードの実行に必要な個数のトークンを有している場合、トークン管理部77Cは、VSSD#n用のコマンド発行部77Bがリードコマンドを発行することを許可してもよい。リードコマンドの発行が許可される度に、コントローラ4のトークン回収部80は、リードの実行に必要な個数のトークンをトークン管理部77Cから回収してもよい。トークン管理部77Cにトークンが無くなると、VSSD#n用のコマンドの発行は禁止される。
図18は、ホスト2として機能する情報処理装置(コンピューティングデバイス)のハードウェア構成例を示す。
この情報処理装置は、サーバのようなコンピューティングデバイスとして実現される。この情報処理装置は、プロセッサ(CPU)101、メインメモリ102、BIOS−ROM103、ネットワークコントローラ105、周辺インタフェースコントローラ106、コントローラ107、およびエンベデッドコントローラ(EC)108等を含む。
プロセッサ101は、この情報処理装置の各コンポーネントの動作を制御するように構成されたCPUである。このプロセッサ101は、複数のSSD3のいずれか1つからメインメモリ102にロードされる様々なプログラムを実行する。メインメモリ102は、DRAMのようなランダムアクセスメモリから構成される。プロセッサ101によって実行されるプログラムは、上述の仮想マシン、デバイスドライバ等を含む。また、このプログラムには、上述のVSSD管理コマンドを発行することによって個々のVSSDの容量/性能/可用性を設定するための設定プログラムが含まれていてもよい。この設定プログラムは、個々のユーザ(エンドユーザ)のストレージ要件にマッチするVSSDの作成をSSD3に要求する。
また、プロセッサ101は、不揮発性メモリであるBIOS−ROM103に格納された基本入出力システム(BIOS)も実行する。BIOSはハードウェア制御のためのシステムプログラムである。
ネットワークコントローラ105は、有線LANコントローラ、無線LANコントローラのような通信デバイスである。周辺インタフェースコントローラ106は、USBデバイスのような周辺デバイスとの通信を実行するように構成されている。
コントローラ107は、複数のコネクタ107Aにそれぞれ接続されるデバイスとの通信を実行するように構成されている。複数のSSD3が複数のコネクタ107Aにそれぞれ接続されてもよい。コントローラ107は、SAS expander、PCIe Switch、PCIe expander、フラッシュアレイコントローラ、またはRAIDコントローラ等である。
EC108は、情報処理装置の電力管理を実行するように構成されたシステムコントローラとして機能する。
図19は、複数のSSD3とホスト2とを含む情報処理装置(サーバ)の構成例を示す。
この情報処理装置(サーバ)は、ラックに収容可能な薄い箱形の筐体201を備える。多数のSSD3は筐体201内に配置されてもよい。この場合、各SSD3は筐体201の前面201Aに設けられたスロットに取り外し可能に挿入されてもよい。
システムボード(マザーボード)202は筐体201内に配置される。システムボード(マザーボード)202上においては、CPU101、メモリ102、ネットワークコントローラ105、コントローラ107を含む様々な電子部品が実装されている。これら電子部品がホスト2として機能する。
以上説明したように、本実施形態によれば、SSD3内のNAND型フラッシュメモリ5が複数の記憶領域(VSSD#1、VSSD#2、…)に論理的に分割され、さらに、書き込み可能なデータの総量(書き込み総量)をVSSD毎に指定するホスト2からの要求に基づいて、指定された書き込み総量の上限値がVSSD毎に管理される。さらに、VSSD#1に書き込まれたデータの総量、およびVSSD#2に書き込まれたデータの総量がSSD3内のコントローラ4によって測定される。そして、VSSD#1に書き込まれたデータの総量の測定値が、VSSD#1用の書き込み総量の上限値に達した場合、ホスト2からのVSSD#1へのデータの書き込みがコントローラ4によって制限される。また、VSSD#2に書き込まれたデータの総量の測定値が、VSSD#2用の書き込み総量の上限値に達した場合、ホスト2からのVSSD#2へのデータの書き込みがコントローラ4によって制限される。
よって、ホスト2が個々のVSSDへの書き込み総量を全く制御すること無く、個々のエンドユーザのニーズに応じて、大きな書き込み総量が許容されるVSSD、少ない書き込み総量のみが許容されるVSSDといった様々な記憶領域(様々なVSSD)を1台のSSD3内に実現することができる。よって、個々のユーザのストレージ要件に適した柔軟なストレージサービスを1台のSSD3によって実現することができる。
データセンター事業者は、データ書き込みが制限されたVSSDを使用しているエンドユーザに対して追加の利用料を課金することを条件に、このVSSDの書き込み総量の上限値が高くなるようにこのVSSDの書き込み総量の上限値を再設定してもよい。
あるいは、データセンター事業者は、データの書き込みが制限されたVSSDを使用しているユーザに対して追加の利用料を課金することを条件に、このVSSDのオーバープロビジョニング容量を増加してもよい。
また、本実施形態では、ユーザ容量とオーバープロビジョニング容量との組、NAND処理実行時間、またはホスト側アクセスバンド幅についても、個々のVSSD毎に設定することができる。したがって、個々のユーザのストレージ要件に適した柔軟なストレージサービスを容易に提供することがとできる。
なお、本実施形態では、不揮発性メモリとしてNAND型フラッシュメモリを例示した。しかし、本実施形態の機能は、例えば、MRAM(Magnetoresistive Random Access Memory)、PRAM(Phase change Random Access Memory)、ReRAM(Resistive Random Access Memory)、又は、FeRAM(Ferroelectric Random Access Memory)のような他の様々な不揮発性メモリにも適用できる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
2…ホスト、3…SSD、4…コントローラ、5…NAND型フラッシュメモリ、51、52、53、54、55、56、57…記憶領域(仮想SSD)、21…VSSD作成部、22…書き込みデータ総量測定部、23…書き込み制限部、24…NAND処理実行時間制御部、25…ホスト側アクセスバンド幅制御部、26…メモリ資源量割り当て部。

Claims (14)

  1. ホストに接続可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されたコントローラであって、
    前記不揮発性メモリを第1記憶領域と第2記憶領域とを含む複数の記憶領域に論理的に分割し、
    書き込み可能なデータの総量を記憶領域毎に指定する前記ホストからの要求に基づいて、前記第1記憶領域に書き込み可能なデータの総量の上限を示す第1上限値と、前記第2記憶領域に書き込み可能なデータの総量の上限を示す第2上限値とを管理し、
    前記ホストからの前記第1記憶領域向けのデータを前記第1記憶領域に書き込み、前記ホストからの前記第2記憶領域向けのデータを前記第2記憶領域に書き込み、
    前記第1記憶領域に書き込まれたデータの総量、および前記第2記憶領域に書き込まれたデータの総量を測定し、
    前記第1記憶領域に書き込まれたデータの前記測定された総量が前記第1上限値に達した場合、前記ホストからの前記第1記憶領域へのデータの書き込みを制限し、前記第2記憶領域に書き込まれたデータの前記測定された総量が前記第2上限値に達した場合、前記ホストからの前記第2記憶領域へのデータの書き込みを制限するように構成されたコントローラとを具備するメモリシステム。
  2. 前記コントローラは、前記ホストから前記第1記憶領域に書き込まれたデータの総量と前記第1記憶領域のガベージコレクションによって前記第1記憶領域に書き込まれたデータの総量との合計量を、前記第1記憶領域に書き込まれたデータの総量として測定し、前記ホストから前記第2記憶領域に書き込まれたデータの総量と前記第2記憶領域のガベージコレクションによって前記第2記憶領域に書き込まれたデータの総量との合計量を、前記第2記憶領域に書き込まれたデータの総量として測定するように構成されている請求項1記載のメモリシステム。
  3. 前記コントローラは、前記ホストから前記第1記憶領域に書き込まれたデータの総量を、前記第1記憶領域に書き込まれたデータの総量として測定し、前記ホストから前記第2記憶領域に書き込まれたデータの総量を、前記第2記憶領域に書き込まれたデータの総量として測定するように構成されている請求項1記載のメモリシステム。
  4. 前記メモリシステムは、
    前記第1記憶領域に書き込まれたデータの前記測定された総量が前記第1上限値に達した場合、前記ホストからの前記第1記憶領域へのデータの書き込みを禁止するかまたは前記ホストからの前記第1記憶領域へのデータの書き込み性能を低下させることによって、前記ホストからの前記第1記憶領域へのデータの書き込みを制限し、
    前記第2記憶領域に書き込まれたデータの前記測定された総量が前記第2上限値に達した場合、前記ホストからの前記第2記憶領域へのデータの書き込みを禁止するかまたは前記ホストからの前記第2記憶領域へのデータの書き込みの性能を低下させることによって、前記ホストからの前記第2記憶領域へのデータの書き込みを制限するように構成されている請求項1記載のメモリシステム。
  5. 前記コントローラは、ユーザ容量とオーバープロビジョニング容量との組を記憶領域毎に指定する前記ホストからの要求に基づいて、前記第1記憶領域に第1ユーザ容量と第1オーバープロビジョニング容量との合計の容量を割り当て、前記第2記憶領域に第2ユーザ容量と第2オーバープロビジョニング容量との合計の容量を割り当てるように構成されている請求項1記載のメモリシステム。
  6. 前記コントローラは、
    単位時間当たりの前記不揮発性メモリの消去、書き込みまたは読み出し動作の実行時間を記憶領域毎に指定する前記ホストからの要求に基づいて、単位時間当たりの前記第1記憶領域の消去、書き込みまたは読み出し動作の実行時間の上限を示す第3上限値と、単位時間当たりの前記第2記憶領域の消去、書き込みまたは読み出し動作の実行時間の上限を示す第4上限値とを管理し、
    単位時間当たりの前記第1記憶領域の消去、書き込みまたは読み出し動作の実行時間が前記第3上限値に収まるように前記ホストからの前記第1記憶領域に向けたコマンドそれぞれを実行し、単位時間当たりの前記第2記憶領域の消去、書き込みまたは読み出し動作の実行時間が前記第4上限値に収まるように前記ホストからの前記第2記憶領域に向けたコマンドそれぞれを実行するように構成されている請求項1記載のメモリシステム。
  7. 前記コントローラは、
    前記ホストとの通信のためのバンド幅を記憶領域毎に指定する前記ホストからの要求に基づいて、前記ホストと前記第1記憶領域との間のバンド幅を第1のバンド幅に設定し、前記ホストと前記第2記憶領域との間のバンド幅を第2のバンド幅に設定するように構成されている請求項1記載のメモリシステム。
  8. ランダムアクセスメモリをさらに具備し、
    前記コントローラは、
    前記ランダムアクセスメモリのメモリ資源の量を記憶領域毎に指定する前記ホストからの要求に基づいて、前記ランダムアクセスメモリ内の第1サイズの第1メモリ領域を前記第1記憶領域の管理データの少なくとも一部を格納するメモリ領域として確保し、前記ランダムアクセスメモリ内の第2サイズの第2メモリ領域を前記第2記憶領域のための管理データの少なくとも一部を格納するメモリ領域として確保するように構成されている請求項1記載のメモリシステム。
  9. 第1仮想マシンおよび第2仮想マシンを含む複数の仮想マシンが実行される仮想化環境を含むサーバに接続可能なメモリシステムであって、
    不揮発性メモリと、
    前記不揮発性メモリに電気的に接続されたコントローラであって、
    前記不揮発性メモリを前記第1仮想マシンからアクセスされる第1記憶領域と前記第2仮想マシンからアクセスされる第2記憶領域とを含む複数の記憶領域に論理的に分割し、
    書き込み可能なデータの総量を記憶領域毎に指定する前記サーバからの要求に基づいて、前記第1記憶領域に書き込み可能なデータの総量の上限を示す第1上限値と、前記第2記憶領域に書き込み可能なデータの総量の上限を示す第2上限値とを管理し、
    前記第1仮想マシンからのデータを前記第1記憶領域に書き込み、前記第2仮想マシンからのデータを前記第2記憶領域に書き込み、
    前記第1記憶領域に書き込まれたデータの総量、および前記第2記憶領域に書き込まれたデータの総量を測定し、
    前記第1記憶領域に書き込まれたデータの前記測定された総量が前記第1上限値に達した場合、前記第1仮想マシンからの前記第1記憶領域へのデータの書き込みを制限し、前記第2記憶領域に書き込まれたデータの前記測定された総量が前記第2上限値に達した場合、前記第2仮想マシンからの前記第2記憶領域へのデータの書き込みを制限するように構成されているコントローラとを具備するメモリシステム。
  10. 前記コントローラは、前記第1仮想マシンから前記第1記憶領域に書き込まれたデータの総量と前記第1記憶領域のガベージコレクションによって前記第1記憶領域に書き込まれたデータの総量との合計量を、前記第1記憶領域に書き込まれたデータの総量として測定し、前記第2仮想マシンから前記第2記憶領域に書き込まれたデータの総量と前記第2記憶領域のガベージコレクションによって前記第2記憶領域に書き込まれたデータの総量との合計量を、前記第2記憶領域に書き込まれたデータの総量として測定するように構成されている請求項9記載のメモリシステム。
  11. 前記コントローラは、前記第1仮想マシンから前記第1記憶領域に書き込まれたデータの総量を、前記第1記憶領域に書き込まれたデータの総量として測定し、前記第2仮想マシンから前記第2記憶領域に書き込まれたデータの総量を、前記第2記憶領域に書き込まれたデータの総量として測定するように構成されている請求項9記載のメモリシステム。
  12. 不揮発性メモリを制御する制御方法であって、
    前記不揮発性メモリを第1記憶領域と第2記憶領域とを含む複数の記憶領域に分割することと、
    書き込み可能なデータの総量を記憶領域毎に指定するホストからの要求に基づいて、前記第1記憶領域に書き込み可能なデータの総量の上限を示す第1上限値と、前記第2記憶領域に書き込み可能なデータの総量の上限を示す第2上限値とを管理することと、
    前記ホストからの前記第1記憶領域向けのデータを前記第1記憶領域に書き込み、前記ホストからの前記第2記憶領域向けのデータを前記第2記憶領域に書き込むことと、
    前記第1記憶領域に書き込まれたデータの総量、および前記第2記憶領域に書き込まれたデータの総量を測定することと、
    前記第1記憶領域に書き込まれたデータの前記測定された総量が前記第1上限値に達した場合、前記ホストからの前記第1記憶領域へのデータの書き込みを制限することと、
    前記第2記憶領域に書き込まれたデータの前記測定された総量が前記第2上限値に達した場合、前記ホストからの前記第2記憶領域へのデータの書き込みを制限することとを具備する制御方法。
  13. 前記測定することは、
    前記ホストから前記第1記憶領域に書き込まれたデータの総量と前記第1記憶領域のガベージコレクションによって前記第1記憶領域に書き込まれたデータの総量との合計量を、前記第1記憶領域に書き込まれたデータの総量として測定することと、
    前記ホストから前記第2記憶領域に書き込まれたデータの総量と前記第2記憶領域のガベージコレクションによって前記第2記憶領域に書き込まれたデータの総量との合計量を、前記第2記憶領域に書き込まれたデータの総量として測定することとを含む請求項12記載の制御方法。
  14. 前記測定することは、
    前記ホストから前記第1記憶領域に書き込まれたデータの総量を、前記第1記憶領域に書き込まれたデータの総量として測定することと、
    前記ホストから前記第2記憶領域に書き込まれたデータの総量を、前記第2記憶領域に書き込まれたデータの総量として測定することとを含む請求項12記載の制御方法。
JP2016247808A 2016-12-21 2016-12-21 メモリシステムおよび制御方法 Active JP6783645B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2016247808A JP6783645B2 (ja) 2016-12-21 2016-12-21 メモリシステムおよび制御方法
CN201710397578.9A CN108228092B (zh) 2016-12-21 2017-05-31 存储系统和非易失性存储器的控制方法
US15/690,188 US10983701B2 (en) 2016-12-21 2017-08-29 Memory system that constructs virtual storage regions for virtual machines
US17/203,027 US11747984B2 (en) 2016-12-21 2021-03-16 Memory system that constructs virtual storage regions for virtual machines

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016247808A JP6783645B2 (ja) 2016-12-21 2016-12-21 メモリシステムおよび制御方法

Publications (2)

Publication Number Publication Date
JP2018101334A true JP2018101334A (ja) 2018-06-28
JP6783645B2 JP6783645B2 (ja) 2020-11-11

Family

ID=62562449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016247808A Active JP6783645B2 (ja) 2016-12-21 2016-12-21 メモリシステムおよび制御方法

Country Status (3)

Country Link
US (2) US10983701B2 (ja)
JP (1) JP6783645B2 (ja)
CN (1) CN108228092B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019146528A1 (ja) 2018-01-23 2019-08-01 株式会社エンプラス エミッタおよび点滴灌漑用チューブ

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6677627B2 (ja) * 2016-12-20 2020-04-08 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置およびメモリアクセス方法
CN111324303B (zh) * 2020-01-21 2023-07-04 深圳忆联信息系统有限公司 Ssd垃圾回收方法、装置、计算机设备及存储介质
CN112333283B (zh) * 2020-11-20 2022-12-13 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 自主高端存储阵列系统架构
EP4180936A1 (en) * 2021-11-10 2023-05-17 Samsung Electronics Co., Ltd. Virtualized system and method of controlling access to nonvolatile memory device in virtualization environment

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457910B2 (en) * 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
JP2011070346A (ja) * 2009-09-25 2011-04-07 Toshiba Corp メモリシステム
EP2521038A4 (en) * 2010-04-30 2014-01-22 Hitachi Ltd COMPUTER SYSTEM AND MEMORY CONTROL METHOD THEREFOR
JP4865075B1 (ja) 2010-09-30 2012-02-01 株式会社東芝 計算機および計算機システム
US9021200B1 (en) * 2011-06-21 2015-04-28 Decho Corporation Data storage system with predictive management of physical storage use by virtual disks
US9594770B1 (en) * 2011-06-28 2017-03-14 EMC IP Holding Company LLC Score-based selection of storage device for virtual disk with specification of quality of service
US8793463B2 (en) * 2011-09-12 2014-07-29 Microsoft Corporation Allocation strategies for storage device sets
US9251086B2 (en) * 2012-01-24 2016-02-02 SanDisk Technologies, Inc. Apparatus, system, and method for managing a cache
WO2013165386A1 (en) * 2012-05-01 2013-11-07 Hewlett-Packard Development Company, L.P. Prearranging data to commit to non-volatile memory
US8930668B2 (en) * 2012-11-15 2015-01-06 Bank Of America Corporation Storage black box
US9804960B2 (en) * 2013-03-14 2017-10-31 Western Digital Technologies, Inc. Overprovision capacity in a data storage device
US9208072B2 (en) * 2013-06-25 2015-12-08 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Firmware storage and maintenance
WO2015194033A1 (ja) 2014-06-20 2015-12-23 株式会社日立製作所 計算機システム
JP2016024678A (ja) * 2014-07-22 2016-02-08 株式会社東芝 メモリシステム
JP6193834B2 (ja) 2014-10-29 2017-09-06 ファナック株式会社 データ保存システム
JP6142860B2 (ja) * 2014-11-05 2017-06-07 日本電気株式会社 ディスクアレイ装置、ディスク制御装置、ソリッドステートドライブ、ディスク制御方法、及びそのためのプログラム
US9824007B2 (en) * 2014-11-21 2017-11-21 Sandisk Technologies Llc Data integrity enhancement to protect against returning old versions of data
JP6476959B2 (ja) * 2015-02-13 2019-03-06 富士通株式会社 ストレージ制御装置、ストレージシステム、および制御プログラム
US9880755B2 (en) 2015-02-25 2018-01-30 Western Digital Technologies, Inc. System and method for copy on write on an SSD
US9983807B1 (en) * 2015-03-30 2018-05-29 EMC IP Holding Company LLC Static service levels and application specific usage tags for storage policy based management of storage resources
US9696935B2 (en) 2015-04-24 2017-07-04 Kabushiki Kaisha Toshiba Storage device that secures a block for a stream or namespace and system having the storage device
KR102371916B1 (ko) * 2015-07-22 2022-03-07 삼성전자주식회사 가상 머신을 지원하는 스토리지 장치, 그것을 포함하는 스토리지 시스템 및 그것의 동작 방법
JP6565560B2 (ja) * 2015-10-01 2019-08-28 富士通株式会社 ストレージ制御装置、及び制御プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019146528A1 (ja) 2018-01-23 2019-08-01 株式会社エンプラス エミッタおよび点滴灌漑用チューブ

Also Published As

Publication number Publication date
US20210200442A1 (en) 2021-07-01
CN108228092B (zh) 2021-07-23
US20180173430A1 (en) 2018-06-21
JP6783645B2 (ja) 2020-11-11
US11747984B2 (en) 2023-09-05
US10983701B2 (en) 2021-04-20
CN108228092A (zh) 2018-06-29

Similar Documents

Publication Publication Date Title
US20220083278A1 (en) Storage system, information processing system and method for controlling nonvolatile memory
US20230004289A1 (en) Storage device that writes data from a host during garbage collection
JP6779838B2 (ja) メモリシステムおよび制御方法
JP6414853B2 (ja) メモリシステムおよび制御方法
JP6414852B2 (ja) メモリシステムおよび制御方法
JP6783645B2 (ja) メモリシステムおよび制御方法
JP6765321B2 (ja) メモリシステムおよび制御方法
JP6709180B2 (ja) メモリシステムおよび制御方法
JP6765322B2 (ja) メモリシステムおよび制御方法
US20170262365A1 (en) Storage system and information processing system for controlling nonvolatile memory
JP6785204B2 (ja) メモリシステムおよび制御方法
JP2015517697A (ja) 二次記憶装置に基づく記憶領域をキャッシュ領域として用いるストレージシステム及び記憶制御方法
US10628311B2 (en) Reducing defragmentation in a multi-grained writeback cache
US9104317B2 (en) Computer system and method of controlling I/O with respect to storage apparatus
JP6203592B2 (ja) 計算機システム、キャッシュ管理方法及び計算機
US11768628B2 (en) Information processing apparatus
JP7102482B2 (ja) メモリシステムおよび制御方法
US11928360B2 (en) Command slot management for memory devices
KR20240006432A (ko) 스토리지 장치 내의 데이터 배치를 위한 시스템, 방법 및 장치
JP2022019787A (ja) メモリシステムおよび制御方法
JP2019160347A (ja) メモリシステムおよび制御方法
JP2019016386A (ja) メモリシステムおよび制御方法
JP2019016383A (ja) メモリシステムおよび制御方法

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20170531

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20180830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190312

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201022

R150 Certificate of patent or registration of utility model

Ref document number: 6783645

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150