JP2020135134A - ストレージシステム及び圧縮方法 - Google Patents
ストレージシステム及び圧縮方法 Download PDFInfo
- Publication number
- JP2020135134A JP2020135134A JP2019024753A JP2019024753A JP2020135134A JP 2020135134 A JP2020135134 A JP 2020135134A JP 2019024753 A JP2019024753 A JP 2019024753A JP 2019024753 A JP2019024753 A JP 2019024753A JP 2020135134 A JP2020135134 A JP 2020135134A
- Authority
- JP
- Japan
- Prior art keywords
- data
- address space
- logical address
- physical
- physical address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation 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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Detection And Correction Of Errors (AREA)
- Memory System (AREA)
Abstract
【課題】ストレージコントローラとSSDコントローラの双方で必要なアドレス変換処理の管理リソースの消費を抑える。【解決手段】ホストからのデータを圧縮するストレージコントローラは、ホストに対し、論理的な記憶領域として第1の論理アドレス空間を提供し、第1の論理アドレス空間と対応し、複数の不揮発ドライブの記憶領域をそれぞれ管理する複数の第1の物理アドレス空間を有する。複数の不揮発メモリドライブのそれぞれは、不揮発メモリの物理記憶領域を管理する第2の物理アドレス空間と、第2の物理アドレス空間に対応し、複数の第1の物理アドレス空間にそれぞれ対応する、第2の論理アドレス空間を有する。そして、複数の不揮発メモリの全ての第2の論理アドレス空間は、第1の論理アドレス空間と、共通のサイズと管理サイズで管理され、管理サイズで先頭アドレスが揃えられている。【選択図】図5
Description
本発明は、ストレージシステムのデータ圧縮技術に関する。
ストレージコントローラは、上位装置から受領したデータを、RAID(Redundant Arrays of Inexpensive Disks)技術を用いて、ドライブ上に配置する。この際、ストレージシステムの構成情報に基づいて単純な計算で算出可能な位置にデータを格納している。
一方、ストレージコントローラで圧縮、重複排除を実現する場合、実際の容量よりも多くのデータを格納するため、圧縮後のデータを詰めて配置する必要がある。また、データによりその圧縮率が異なることから圧縮後のデータの長さが異なり、上記のような単純な計算ではなく、複雑なアドレス管理を行うためのアドレス変換論理が必要となる。
さらに、格納先のドライブがNAND Flashを使用した不揮発メモリドライブであるSSDの場合は、NANDの性質(上書き不可、消去単位>ライト単位(消去単位がライト単位より大きい))から、NAND Flashを搭載するSSD(Solid State Drive)のSSDコントローラでも位置の変換(論理-物理アドレス変換:アドレス変換論理)が必要となる。
これらストレージコントローラによるアドレス変換論理やSSDコントローラのアドレス変換論理は、ストレージコントローラやSSDコントローラのプロセッサやメモリリソースを消費する。特に、データを圧縮する場合、その容量管理単位を小さくするほど容量効率が向上するが、逆に管理リソースは増大するため、管理リソースの大きさには注意が必要となる。
アドレス変換論理に関して、特許文献1がある。この特許文献1は、データ長が可変する圧縮後のデータを管理するメモリシステムが開示されている。
特許文献1のメモリシステムは、ホストが、書き込みデータのデータ長と圧縮データのデータ長との差分に基づいて、アドレス変換テーブルを、書き込みデータが書き込まれるべき第1論理アドレス範囲の先頭論理アドレスから始まり圧縮データのデータ長に対応する第1範囲内の論理アドレスそれぞれに物理アドレスをマッピングし、前記差分に対応する第2範囲内の論理アドレスの各々を物理アドレスがマッピングされていない状態に設定する。
しかしながら、特許文献1のメモリシステムは、上位装置であるホストに接続される単独のSSDを対象としており、単独のSSDの物理アドレスをホスト上のアドレス変換テーブルで管理し、ホストからのライトデータを、ストレージコントローラのデータ冗長化技術、例えばRAID技術等、により複数のSSDに書き込む際のストレージコントローラ側のアドレス変換論理については記載されていない。
その結果、ストレージコントローラ側のアドレス変換論理とSSDコントローラ側のアドレス変換論理の双方による管理リソースの浪費という課題についても言及されていない。
そこで、本発明の目的は、ストレージコントローラとSSDコントローラの双方で、アドレス変換処理が必要となり、管理リソースを多く消費するという課題を解決するストレージシステム及び圧縮方法を提供することにある。
上記目的を達成するため、本発明のストレージシステム一態様は、ホストに接続されるストレージコントローラと、ストレージコントローラに接続される複数の不揮発メモリドライブを有するストレージシステムにおいて、ストレージコントローラは、ホストからのデータを圧縮し、ホストに対し、論理的な記憶領域として第1の論理アドレス空間を提供し、第1の論理アドレス空間に圧縮前データを格納するよう管理し、第1の論理アドレス空間と対応し、複数の不揮発ドライブの記憶領域をそれぞれ管理する複数の第1の物理アドレス空間に対し、圧縮後のデータを書き込むように管理する。そして、複数の不揮発メモリドライブのそれぞれは、不揮発メモリを有し、不揮発メモリの物理記憶領域を管理する第2の物理アドレス空間と、第2の物理アドレス空間に対応し、複数の第1の物理アドレスにそれぞれ対応する、第2の論理アドレス空間を有し、第2の論理アドレス空間に圧縮後のデータを格納するように管理し、第2の物理アドレス空間に圧縮データを書き込み、第2の論理アドレス空間は、複数の第1の物理アドレス空間の一つと、共通のサイズと管理サイズで管理され、第1の論理アドレス空間は、複数の第1の物理空間と、共通のサイズと管理サイズで管理され、第1の論理アドレス空間、複数の第1の物理アドレス空間、複数の第2の論理アドレス空間は、管理サイズで先頭アドレスが揃えられている。
本発明によれば、ストレージシステムのストレージコントローラの論物アドレス変換と、SSDのコントローラの論物アドレス変換とを2重に行うことによる管理リソースの浪費を解消することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、[AAAテーブル]の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、[AAAテーブル]を[AAA情報]とすることができる。
また、以下の説明では、プロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、[プログラム]を動作の主体として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)等を用いながら行うため、実際の処理の主体はプロセッサである。従って、プログラムを動作の主体として説明された処理は、プロセッサを含む装置が行う処理としてもよい。また、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。
コンピュータプログラムは、プログラムソースから装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ、又は、計算機が読み取り可能な記憶メディアであってもよい。
<1.システム構成>
図1は、本実施例による情報処理システム構成図である。
図1は、本実施例による情報処理システム構成図である。
この情報処理システム100は、1又は複数のホストコンピュータ101と、ストレージコントローラ102と複数の不揮発メモリドライブであるSolid State Drive(SSD)を備える。ストレージコントローラ102と複数のSSDで、ストレージシステムを構成する。ホスト101とストレージコントローラ102は、Local Area Network(LAN)又はインターネット等からなるネットワークを介して相互に接続されて構成されている。
ホスト101は、Central Processing Unit(CPU)及びメモリ等の情報資源を備えたコンピュータ装置であり、例えば、オープン系のサーバや、クラウドサーバ等から構成される。ホスト101は、ユーザ操作や、実装されたプログラムからの要求に応じてネットワークを介してストレージコントローラ102にライトコマンドやリードコマンドを送信する。
ストレージコントローラ102は、ストレージとしての機能をホスト101に提供するための必要なソフトウエアが実装された装置である。通常、ストレージコントローラ102は、冗長化された複数のストレージコントローラから構成される。
ストレージコントローラ102は、CPU(プロセッサ)103、メモリ105、フロントエンドインタフェース(ネットワークI/F)104及び記憶装置106と、これらを接続するバス107を備える。
プロセッサ103は、ストレージコントローラ102全体の動作制御を司るハードウェアである。プロセッサ103は、ホスト101から与えられたリードコマンドやライトコマンドに応じて、対応するSSD120にデータを読み書きする。
またメモリ105は、例えば、Synchronous Dynamic Random Access Memory(SDRAM)等の半導体メモリから構成され、必要なプログラム(Operating System(OS)を含む)やデータを記憶保持するために利用される。メモリ105は、プロセッサ103の主記憶であり、プロセッサ103が実行するプログラム(ストレージ制御プログラム等)や、プロセッサ103が参照する管理テーブル等が格納される。
図1では、管理テーブル110、113が記憶装置106に格納され、メモリ105に読み出される形態を示しているが、記憶装置106から読み出す形態ではなく、予めメモリ105が格納しても良い。また、メモリ105は、ストレージコントローラ102のディスクキャッシュ(キャッシュメモリ)としても使用される。
プロセッサ103が、記憶装置106に格納されたプログラムをメモリ105に読み出し、実行することにより、ストレージ機能をホスト101等に提供する。そのため、実際の処理主体はプロセッサ103であっても、各プログラムの処理を分かりやすく説明するため、プログラムを主語にして説明する場合がある。
ネットワークI/F104は、ホスト101に対するインタフェースであり、ネットワークを介したホスト101との通信時におけるプロトコル制御を行う。
記憶装置106には、OSやストレージ制御プログラム、管理テーブルのバックアップ等が格納される。本実施例では、ストレージ制御プログラムとして、圧縮プログラム108、容量管理プログラム109、ドライブIOプログラム111、RAID制御プログラム112を用いて説明する。これ以外にも、スナップショットや重複排除が含まれるが、本実施例の動作の説明に用いないため説明を割愛する。RAID制御プログラム112としては、データ保護機能であるRAID機能の他、ボリュームや各ボリュームを構成するSSD等のRAIDを構成するための構成情報を含んでいる。尚、記憶装置106は、例えばHDDやSolid State Drive (SSD)から構成される。
ストレージコントローラ102にバックエンドIF(図示せず)を介して、複数のSSD120が接続される。
圧縮プログラム108は、ホストから受信したデータを圧縮する機能を実現する。容量管理プログラム109は、SSD120の全容量、データを格納することによって使用された使用容量、データが格納されていない空き容量を管理する。また、ドライブIOプログラム111は、SSDドライブ120に対し、IO処理を実行する。RAID制御プログラム112は、RAID機能を実現し、ホストからのデータをRAID構成に応じてストライピングし、ストライピングされたデータを格納するため各SSDドライブ120の所定のアドレスを算出する。構成情報113は、ホスト101に提供する記憶領域であるボリュームとボリュームを構成するSSDの関係等、RAID制御プログラム112が参照するテーブルが格納されている。構成情報113は、ストレージコントローラ102に接続される全SSDドライブ120のアドレスを管理し、容量管理プログラム109によって、使用済み物理容量や空き物理容量が管理される。
<2.ドライブ筐体の構成>
図2は、SSDの構成図である。SSD120は、ドライブの制御と、外部から記憶装置であるドライブに読み書きする機能を提供するための必要なソフトウエアが実装された装置である。
図2は、SSDの構成図である。SSD120は、ドライブの制御と、外部から記憶装置であるドライブに読み書きする機能を提供するための必要なソフトウエアが実装された装置である。
また、SSD120は、プロセッサ(CPU)201、メモリ202、I/F205及びバス204、記憶装置であるNAND フラッシュメモリ203(以下、NANDと呼ぶ)とを備える。ストレージシステムの記憶領域を構成し、ホストからのデータを格納する記憶装置である。NAND203は、限定されないが、複数のNANDフラッシュメモリチップを含んでいてもよい。NAND203は、メモリセルアレイを含む。このメモリセルアレイは、多数のNANDブロック(ブロック)Bm−1を含む。ブロックB0〜Bm−1は、消去単位として機能する。ブロックは「物理ブロック」または「消去ブロック」と称されることもある。
ブロックは多数のページ(物理ページ)を含む。つまり、ブロックの各々は、ページP0〜Pn−1を含む。NAND203においては、データのリードおよびデータのライトはページ単位で実行される。データの消去はブロック単位で実行される。
プロセッサ201は、SSD120全体の動作制御を司るハードウェアである。プロセッサ201、ストレージコントローラ102から与えられたリードコマンドやライトコマンドに応じて、対応するNAND203にデータを読み書きするとともに、ストレージコントローラ102から与えられたデータ転送コマンドに応じて、ホスト101との間のデータ転送を行う。
またメモリ202は、例えば、Synchronous Dynamic Random Access Memory(SDRAM)等の半導体メモリから構成され、必要なプログラム(Operating System(OS)を含む)やデータを記憶保持するために利用され、キャッシュメモリとして機能する。
メモリ202は、プロセッサ201の主記憶であり、プロセッサ201が実行するプログラム(SSDドライブ制御プログラム等)や、プロセッサ201が参照する管理テーブル等が格納される。本実施例では、プログラムとして、NAND制御210、容量拡張211、論物変換212を含み、管理テーブルとして、論物変換情報213を一例として示している。
NAND制御プログラム210は、NAND Flash Memoryのデータのリード、ライト操作を制御する。容量拡張プログラム211は、NANDの実際の容量よりも大きな容量をストレージコントローラ102に提供する機能を実現する。SSD120自身は、圧縮機能を備えていないが、実際の物理容量より大きな論理アドレス空間をストレージコントローラ102に提供する。これにより、ストレージコントローラ102がホスト101に提供する論理アドレス空間に揃えることができる。つまり、ストレージコントローラ102の物理アドレス空間に、SSDの論理アドレス空間を対応させ、それぞれの先頭アドレスを対応付けることで、アドレスの管理体系を共通化し、ストレージコントローラ102の複雑な論物アドレス変換を簡単なものとしている。
論物変換プログラム212は、SSDドライブ120がストレージコントローラ102に提供する論理アドレス空間と、実際にデータの書き込みが行われるNAND203の物理アドレス空間の対応を算出する。論物変換情報213は、所謂マッピング情報であり、SSDドライブ120がストレージコントローラ102に提供する論理アドレス空間と、データの書き込みが行われるNAND203の物理アドレス空間の対応を管理する。本実施例は、SSD120の物理容量を容量拡張プログラム211により拡張し、SSD120がストレージコントローラ102に提供する論理アドレス空間を作成し、この拡張された論理アドレス空間をストレージコントローラ102が管理する物理アドレス空間に揃えることで、アドレスの管理体系を共通化し、ストレージコントローラ102の論物アドレス変換を単純な計算で求めることができるようにしている。
メモリ202に格納されたプログラムをプロセッサ201が実行することにより、各種処理が実行される。そのため、実際の処理主体はプロセッサ201であっても、各プログラムの処理を分かりやすく説明するため、プログラムを主語にして説明する場合がある。
ネットワークI/F205は、SCSI、Serial Attached SCSI(SAS)、ATA、Serial ATA(SATA)、PCI Express(PCIe)、Ethernet(登録商標)、Fibre channel、NVM Express(NVMe)(登録商標)等を使用して接続されている。
<3.各種管理情報>
図3は、ストレージコントローラで管理される圧縮後データサイズ情報を示した図である。圧縮後データサイズ情報110は、ストレージコントローラ102の記憶装置106に格納される。
図3は、ストレージコントローラで管理される圧縮後データサイズ情報を示した図である。圧縮後データサイズ情報110は、ストレージコントローラ102の記憶装置106に格納される。
圧縮後データサイズ情報110は、先頭アドレス301、圧縮後のデータサイズ302を先頭アドレス301に対応して管理する。先頭アドレス301は、「0x0000」「0x0020」と圧縮管理サイズ間隔で管理される。本実施例では、圧縮管理サイズを16kBで説明するが、これに限るものではない。先頭アドレスとは、ストレージコントローラ102が認識する物理アドレス空間であって、SSDドライブ120が提供する論理アドレス空間に対応するアドレスである。
尚、圧縮後データサイズ情報は、容量管理プログラム109によって参照され、SSDドライブ120の空き容量が把握される。SSD120の容量拡張プログラム211によって実際のNANDの物理容量より大きな容量が論理アドレス空間として、SSD120からストレージコントローラ102に提供されるため、システム稼働中にストレージコントローラ102でNANDの物理容量が枯渇しないように管理するためである。
ストレージコントローラ102がリード処理の際に、圧縮前サイズでリードし、有効データ(ゼロデータが続く範囲を除く)を判断し、圧縮後のデータサイズを求める構成とすれば、圧縮後データサイズ情報110を不要とすることができる。
図4Aは、SSDで管理される論物変換テーブルの一例を示した図である。
論物変換情報213は、SSD120がストレージコントローラ102に提供する論理アドレス401、論理アドレス401に対応するNAND Flash Memory203の物理アドレス402を管理する。例えば、論理アドレス「0x0000」に対して、物理アドレス「NAND#10-Block#20-Page#30-Offset#0」が対応していることを示している。尚、論理アドレス「0x0030」に対しては、物理アドレスが割当たっていない状態、即ち、論理アドレス「0x0030」はデータが格納されていない状態であることを示している。この論理アドレス401は、容量拡張プログラム211によって、実際のNANDの物理容量より大きな空間を表す情報となっている。
論物変換情報213は、SSD120がストレージコントローラ102に提供する論理アドレス401、論理アドレス401に対応するNAND Flash Memory203の物理アドレス402を管理する。例えば、論理アドレス「0x0000」に対して、物理アドレス「NAND#10-Block#20-Page#30-Offset#0」が対応していることを示している。尚、論理アドレス「0x0030」に対しては、物理アドレスが割当たっていない状態、即ち、論理アドレス「0x0030」はデータが格納されていない状態であることを示している。この論理アドレス401は、容量拡張プログラム211によって、実際のNANDの物理容量より大きな空間を表す情報となっている。
図4Aの例では、論理アドレス401はSSD120内のアドレス管理単位である8KBの場合を示している。論理アドレスをSSD120のアドレス管理単位と異なるように実施する場合、SSD内のアドレス管理単位を中間アドレスとして、例えば中間アドレスの整数倍の論理アドレスとすることもできる。
また、ライト先の物理アドレス402はNANDや格納数によって異なる。ここでは例として、NANDが16個程度、16kBのページに対してライトしていき、ページの途中から始まるデータの位置はオフセットで管理する例を示している。例えば、物理アドレス「NAND#10-Block#20-Page#30-Offset#0」は、NANDの識別子が「10」、ブロック番号が「20」、パージ番号が「30」で、オフセットが「0」で、複数NANDの内の物理アドレスを特定している。
図4Bは、SSDで管理される論物変換テーブルの一例を示した図である。図4Bは、図4Aの状態から、論理アドレス「0x0040」に上書き処理が行われた場合の物理アドレスの変化を示している。論理アドレス「0x0040」に対応する物理アドレス「NAND#4-Block#40-Page#40-Offset#7」に対するデータの上書き命令があった場合、論理アドレス「0x0040」は変更されることないが、NANDの特性である上書き不可のため、物理アドレス「NAND#4-Block#40-Page#40-Offset#7」は論理アドレス「0x0040」との対応が解消(アンマップ)され、別の物理アドレス「NAND#10-Block#14-Page#21-Offset#4」が論理アドレス「0x0040」に割り当てられる。
<4.ライト動作>
図5は、ライト時の動作概念図であり、圧縮ライト処理を説明する。ストレージコントローラ102は、ホスト101に論理的な記憶領域として提供する論理アドレス空間501と、SSDドライブ120の記憶領域を管理するアドレス空間である物理アドレス空間502との対応を管理する。論理アドレス空間501と、物理アドレス空間502は共通のサイズ、共通の管理単位とする。例えば、共通の管理単位は、同じサイズ、同じ管理単位であるが、同じサイズ、同じ管理単位は、実質的同一のものと簡単に置換できるものも含まれる。
図5は、ライト時の動作概念図であり、圧縮ライト処理を説明する。ストレージコントローラ102は、ホスト101に論理的な記憶領域として提供する論理アドレス空間501と、SSDドライブ120の記憶領域を管理するアドレス空間である物理アドレス空間502との対応を管理する。論理アドレス空間501と、物理アドレス空間502は共通のサイズ、共通の管理単位とする。例えば、共通の管理単位は、同じサイズ、同じ管理単位であるが、同じサイズ、同じ管理単位は、実質的同一のものと簡単に置換できるものも含まれる。
SSD120は、ストレージコントローラ102に提供する論理アドレス空間503とNANDのアドレス空間である物理アドレス空間504の対応を管理する。SSD120の物理記憶領域を管理する物理アドレス空間504は、NAND203の物理ページ(16kB)506に対応する。SSDドライブ120側の論理アドレス空間503は、容量拡張プログラム211によって、実際のNANDの物理容量(物理アドレス空間504)より大きな空間となり、ストレージコントローラ102の物理アドレス空間502と共通のサイズ、管理単位で対応する。つまり、アドレス管理の共通化を図る。共通のサイズ、管理単位は、例えば、同じサイズ、同じ管理単位であるが、同じサイズ、同じ管理単位は、実質的同一のものと簡単に置換できるものも含まれる。
図5では、ライトデータ(1)511a、ライトデータ(2)512a、ライトデータ(3)513a、ライトデータ(4)514aの順でライト処理が行われる例を説明する。
ライトデータ(1)511aは、ストレージコントローラ102で圧縮され、圧縮データ(1)511bが生成される。論理アドレス空間501には、ライトデータ(1)511aが書き込まれ、物理アドレス空間502には、圧縮データ(1)511bが書き込まれる。論理アドレス空間501や物理アドレス空間502はアドレスを管理するための情報であるため、これら空間に実際のデータの書き込むことはなく、書き込んだように管理される。
ここで、ストレージコントローラ102の論理アドレス空間501と物理アドレス空間502は共通のサイズ、管理単位で対応し、それぞれの管理単位の先頭アドレスは揃えられている。例えば、共通のサイズ、共通の管理単位は、同じサイズ、同じ管理単位であるが、同じサイズ、同じ管理単位は、実質的同一のものと簡単に置換できるものも含まれる。
SSD120は、ストレージコントローラ102から圧縮データ511bを受け取ると、ライトデータ(1)511cとして、論理アドレス空間503に書き込む。論理アドレス空間503に書き込まれたライトデータは論物変換情報213を参照し、NAND物理ページ506aにライトデータ(1)511dとして書き込まれる。論理アドレス空間503はアドレスを管理するための情報であるため、これら空間に実際のデータの書き込むことはなく、書き込んだように管理される。
同様に、ライトデータ(2)512aも圧縮されて物理アドレス空間502に圧縮データ(2)512bとして書き込まれ、SSD120に送られる。SSD120では、ライトデータ512cとして論理アドレス空間503に書き込まれ、二つの物理ページ506a、506bにライトデータ(2)’512d、ライトデータ(2)”512dとして書き込まれる。尚、ライトデータ(2)’512dはライトデータ(1)511dの後続するアドレスに書き込まれる。
同様にライトデータ(3)513aも圧縮され、ストレージコントローラ102の物理アドレス空間、SSD120の論理アドレス空間503、SSD120の物理アドレス空間504にそれぞれ書き込まれ、物理ページ506bにライトデータ(3)513dとして格納される。尚、ライトデータ(3)513dは、ライトデータ(2)”512dの後続する物理アドレスに書き込まれる。
ライトデータ(4)は、ライトデータ(2)の一部を上書きするデータである。ライトデータ(4)514aは、論理アドレス空間501に書き込まれ、圧縮データが物理アドレス空間502に書き込まれる。SSD120側でも論理アドレス空間503に書き込まれる。その際、論理アドレス空間503では、旧データであるライトデータ(2)512Cの一部が新データであるライトデータ(4)514Cによって上書きされる。物理アドレス空間504では、新データであるライトデータ(4)は、ライトデータ(2)’(2)”とは異なる物理アドレスにライトデータ(4)514dとして書き込まれる。
図5に示したように、ストレージコントローラ102の論理アドレス空間501と物理アドレス空間502は、共通のサイズ、管理単位で対応し、それぞれの管理単位の先頭アドレスは揃えられ、ストレージコントローラ102の物理アドレス空間502に対応するSSDの論理アドレス空間503の共通のサイズ、管理単位で対応し、それぞれの管理単位の先頭アドレスも同様に揃えられている。つまり、アドレスの管理体系を共通化している。例えば、共通のサイズ、共通の管理単位は、同じサイズ、同じ管理単位であるが、同じサイズ、同じ管理単位は、実質的同一のものと簡単に置換できるものも含まれる。
従って、ストレージコントローラ102は、圧縮前データの先頭アドレスをそのまま使用して、データをライトする。SSD120は論理アドレス空間503として、所有する物理アドレス空間504よりも大きな空間(圧縮分)を提供する。
ストレージコントローラ102は、圧縮前データの先頭アドレスをそのまま使用するために、圧縮単位によるパディングを実施する。詳細は、図11A、図12を用いて説明する。また、圧縮前データの先頭アドレスは、圧縮前管理サイズで分割後のそれぞれの先頭アドレスを用いる場合もある。このときの詳細は図9、図10を用いて説明する。
図6Aは、上書き動作を示す動作概念図である。
(1)初回ライト
まず、初回ライトの動作を説明する。ストレージコントローラ102は圧縮管理単位(圧縮前データサイズ)である16kBの「Data-A」を論理アドレス空間501のアドレス「0x20」に書き込む。ストレージコントローラ102は、「Data-A」を圧縮し、「圧縮後Data-A」を生成する。「圧縮後Data-A」のサイズは、12kBである。圧縮管理単位(圧縮前データサイズ)である16kBは一例であって、32kB、64kB他のサイズであっても構わない。
まず、初回ライトの動作を説明する。ストレージコントローラ102は圧縮管理単位(圧縮前データサイズ)である16kBの「Data-A」を論理アドレス空間501のアドレス「0x20」に書き込む。ストレージコントローラ102は、「Data-A」を圧縮し、「圧縮後Data-A」を生成する。「圧縮後Data-A」のサイズは、12kBである。圧縮管理単位(圧縮前データサイズ)である16kBは一例であって、32kB、64kB他のサイズであっても構わない。
12kBの圧縮後Data-Aは物理アドレス空間502に書き込まれて、SSD120に送られる。圧縮後Data-Aは、SSD120の論理アドレス空間503の論理アドレス「0x20」に書き込まれる。圧縮後Data-Aは、物理アドレス空間504の物理アドレス「0x140」に書き込まれる。
(2)内部処理
次に、論理アドレス空間501のアドレス「0x20」に16kBの「Data-B」のライトを受領する。ストレージコントローラ102はData-Bを圧縮し、9kBの「圧縮後Data-B」を生成し、物理アドレス空間502に書き込む。
次に、論理アドレス空間501のアドレス「0x20」に16kBの「Data-B」のライトを受領する。ストレージコントローラ102はData-Bを圧縮し、9kBの「圧縮後Data-B」を生成し、物理アドレス空間502に書き込む。
図6Bは、上書き動作を示す動作概念図であり、図6Aの続きである。
(3)アンマップ
次に、データ更新時は、圧縮前データサイズ(通常圧縮管理単位×N)にアンマップを発行し、旧データを無効化したのち、新データを同一アドレスにライトする。SSDの機能により、論物変換を行い、適切な物理アドレスへデータを格納する。図6Bでは、論理アドレス空間501のアドレス「0x20」の圧縮前データサイズ(16kB)に対して、解放指示(アンマップ)を指示する。すると、SSD120は、論理アドレス「0x20」に対する物理アドレス「0x140」の割当を解消する。
次に、データ更新時は、圧縮前データサイズ(通常圧縮管理単位×N)にアンマップを発行し、旧データを無効化したのち、新データを同一アドレスにライトする。SSDの機能により、論物変換を行い、適切な物理アドレスへデータを格納する。図6Bでは、論理アドレス空間501のアドレス「0x20」の圧縮前データサイズ(16kB)に対して、解放指示(アンマップ)を指示する。すると、SSD120は、論理アドレス「0x20」に対する物理アドレス「0x140」の割当を解消する。
(4)ライト(上書き)
ストレージコントローラ102は圧縮管理単位である16kBの「Data-B」を論理アドレス空間501のアドレス「0x20」に書き込む。ストレージコントローラ102は、「Data-B」を圧縮し、「圧縮後Data-B」を生成する。「圧縮後Data-B」のサイズは、9kBである。9kBの圧縮後Data-Bは物理アドレス空間502に書き込み、SSD120に送る。圧縮後Data-Bは、SSD120の論理アドレス空間503の論理アドレス「0x20」に書き込まれる。圧縮後Data-Bは、物理アドレス空間504の物理アドレス「0x260」に書き込まれる。
ストレージコントローラ102は圧縮管理単位である16kBの「Data-B」を論理アドレス空間501のアドレス「0x20」に書き込む。ストレージコントローラ102は、「Data-B」を圧縮し、「圧縮後Data-B」を生成する。「圧縮後Data-B」のサイズは、9kBである。9kBの圧縮後Data-Bは物理アドレス空間502に書き込み、SSD120に送る。圧縮後Data-Bは、SSD120の論理アドレス空間503の論理アドレス「0x20」に書き込まれる。圧縮後Data-Bは、物理アドレス空間504の物理アドレス「0x260」に書き込まれる。
以上のように、ストレージコントローラ102の論理アドレス空間501、物理アドレス空間502、SSD120の論理アドレス空間503の共通のサイズ、管理単位で対応し、それぞれの管理単位の先頭アドレスは、圧縮管理サイズで揃えられているため、その間のアドレス変換は必要なく、SSD120の論理アドレスと物理アドレスの変換を行えば良いことになり、ストレージシステムのストレージコントローラの論物アドレス変換と、SSDのコントローラの論物アドレス変換とを2重に行うことによる管理リソースの浪費を解消することができる。例えば、共通のサイズ、共通の管理単位は、同じサイズ、同じ管理単位であるが、同じサイズ、同じ管理単位は、実質的同一のものと簡単に置換できるものも含まれる。
図7Aは、ライト時のRAID制御動作を示す概念図である。ストレージコントローラ102はデータ保護のため、ホスト101からのライトデータを、RAID構成情報に従って各ドライブに書き込むため分割(ストライピング)する。
図7Bは、ストライピングの動作概念を示している。ホスト101からのデータ「0,1,2,3・・」は、RAID制御プログラム112の管理情報として格納されている構成情報に従って、分割されて各ドライブに書き込まれる(ストライピング)。各ドライブに書き込まれるデータ「0」「1」等のサイズは64kBである。このサイズは、単なる例示であって、他のサイズであっても構わない。
図7Aに戻り、RAID制御の説明を行う。
ストレージコントローラ102の論理アドレス空間501はホスト101に提供され、ホスト101からライトデータ711a、712aを受領する。ライトデータ(1)は、RAID制御プログラム112により分割(最大64kB)されて、ドライブ120a、120bに書き込むデータとなる。分割されたデータは、圧縮管理単位毎(16kB)に圧縮されて、圧縮後データ711bとなる。図7Aでは、ライトデータ(1)711aが二つのストライプデータに分割されている例を示している。ストライプデータを圧縮管理単位に分割し、圧縮管理単位毎に分割されたライトデータを圧縮する。ストレージコントローラ102の物理アドレス空間502、SSD120の論理アドレス空間503、物理アドレス空間504、NANDの各ページ506の圧縮データの書き込み動作(圧縮ライト処理)は、図5で説明した動作と通りであるため、説明を割愛する。
ストレージコントローラ102の論理アドレス空間501はホスト101に提供され、ホスト101からライトデータ711a、712aを受領する。ライトデータ(1)は、RAID制御プログラム112により分割(最大64kB)されて、ドライブ120a、120bに書き込むデータとなる。分割されたデータは、圧縮管理単位毎(16kB)に圧縮されて、圧縮後データ711bとなる。図7Aでは、ライトデータ(1)711aが二つのストライプデータに分割されている例を示している。ストライプデータを圧縮管理単位に分割し、圧縮管理単位毎に分割されたライトデータを圧縮する。ストレージコントローラ102の物理アドレス空間502、SSD120の論理アドレス空間503、物理アドレス空間504、NANDの各ページ506の圧縮データの書き込み動作(圧縮ライト処理)は、図5で説明した動作と通りであるため、説明を割愛する。
ストレージコントローラ102によって制御されるRAID機能であるRAID制御プログラム112は、ライトデータをストライピングする。ストレージコントローラ102は、ストライピングしたデータを圧縮管理単位毎に圧縮して圧縮後データを生成する。ストレージコントローラの論理アドレス空間、複数のSSDの論理アドレスに対応するストレージコントローラの物理アドレス空間、複数のSSDの論理アドレス空間が、共通のサイズ、共通の管理単位で対応し、それぞれの管理単位の先頭アドレスも揃えられているため、各SSDは、ストレージコントローラ102が生成した圧縮後データを格納するため、自身の物理リソースを管理する物理アドレス空間504と、物理アドレス空間に対応する論理アドレス空間503との対応関係を示す論物変換情報213(論物変換テーブル)を管理するだけで、RAID機能に対応することができる。
図8は、ストライピング実行時のライト動作を示す概念図である。図8は図5と多くの点で共通であるが、図5が説明を簡単にするため、一つのSSDの例を示したのに対し、図8は複数のSSD120a、120bを示し、ストライピング実行時のライト動作を示したものである。
ストレージコントローラ102の論理アドレス501を構成するための物理アドレス502は、SSD120aの論理アドレス空間及びSSD120bの論理アドレス空間にそれぞれ対応する、物理アドレス空間502a、物理アドレス空間502bから構成されている。ストレージコントローラ102の物理アドレス空間502aは、SSD120aの論理アドレス空間503aに対応している。つまり、SSD120a、120bの論理アドレスに、ストレージコントローラの複数の物理アドレス空間502a、502bを対応させ、一つの論理アドレス501に統合している。
ストレージコントローラ102は、各SSDから提供される複数の論理アドレス空間503を複数の物理アドレス空間502のそれぞれに対応させ、複数の物理アドレス空間502で一つの論理アドレス空間501を構成している。従って、ストレージコントローラ102は、物理アドレス空間502を用いて、RAIDの構成情報を管理でき、各SSDドライブにデータのストライピングを行うことができる。尚、各SSD120からストレージコントローラ102に提供される論理アドレス空間503は、物理アドレス空間504を容量拡張プログラム211により拡張された実際の物理容量より大きな空間である。
容量拡張プログラム211による拡張率は、任意に定めることができる。基本的に各SSDで同じ値が基本であるが、SSD毎に異なる拡張率を適応することもできる。例えば、NAND203の書き込み回数に応じて、減少させても良い。つまり、書き込み回数が一定以上となると書き込み動作を抑止するため、論理アドレス空間を小さくするようにする。何れにしても、ストレージコントローラ102は、物理容量の使用状況を管理する必要があるため、拡張率は、ストレージコントローラ102から各SSD120に設定するか、各SSD120から拡張率に関する情報をストレージコントローラ102が受け取ることができるように構成されている。
図9は、ストレージコントローラのライト動作を示すフローチャートである。
ホスト101からライトデータを受領することでライト処理を開始する(S900)。ストレージコントローラ102は、RAIDの構成情報113を参照して、RAID制御プログラム112がライトデータを、例えば64kB単位に、ストライピングする(S901)。ストライピングされたライトデータを、圧縮プログラム108が圧縮前管理サイズに分割する(S902)。圧縮前管理サイズは、例えば、16kBである。
次に、圧縮プログラム108は、圧縮前管理サイズに分割されたデータが圧縮可能であるかを判定し(S903)、圧縮可能であれば、ステップS905に進み、そうでなければステップS904に進む。ステップS904では、分割された前後のデータを取得し、圧縮できるデータとする(S904)。ステップS905において、圧縮プログラム108は圧縮前管理サイズに分割されたデータを圧縮し(S905)、全ての圧縮前管理サイズに分割されたデータが圧縮されたか否かを判定する(S906)。圧縮されていないデータがある場合には、ステップS902に戻り同様の処理を行う。
圧縮前管理サイズに分割されたデータの全ての圧縮が終了すると、圧縮前管理サイズの余った場所(圧縮により小さくなったデータにより、空きとなったアドレス空間)に、「0」を書き込むパディングを行う(S907)。ライトデータが同じ論理アドレスに対する書き込みであった場合、旧データの領域を解放するため、ストレージコントローラ102の論理アドレス空間の圧縮前管理サイズの解放指示を行う(S908)。その後、圧縮後のデータをSSD120が物理アドレス空間に書き込み(S909)。全データが終了するまで、ステップS907からステップ910の処理を繰り返す。
その後、容量管理プログラム109が圧縮後データサイズ情報を更新し、物理容量の管理を行い(S911)、ライト処理を終了する(S912)。
尚、ステップS908の解放指示は、ステップS909の圧縮後サイズのデータのSSD120への書き込みの後、或いは、ステップ911の圧縮後データサイズ情報を更新の後に行われても良い。
<5.リード動作>
図10は、ストレージコントローラのリード動作を示すフローチャートである。
ストレージコントローラ102がホスト101からリードコマンドを受領することで、リード処理が開始される(S1001)。リードコマンドに含まれるリードデータ長を圧縮前管理サイズに分割する(S1002)。その後、RAIDプログラム112は、圧縮後データサイズ情報110を参照し、圧縮後のデータサイズを取得する(S1003)。
図10は、ストレージコントローラのリード動作を示すフローチャートである。
ストレージコントローラ102がホスト101からリードコマンドを受領することで、リード処理が開始される(S1001)。リードコマンドに含まれるリードデータ長を圧縮前管理サイズに分割する(S1002)。その後、RAIDプログラム112は、圧縮後データサイズ情報110を参照し、圧縮後のデータサイズを取得する(S1003)。
ドライブIOプログラム111は、圧縮後のデータをSSD120から読み出す(S1004)。読み出した圧縮データを圧縮プログラム108が伸長する(S1005)。
圧縮前管理サイズに分割された全データについて処理が完了したか判定し(S1006)、処理が完了していない場合、ステップS1003に戻り処理を繰り返す。処理が完了していたら、ストレージコントローラ102はホスト101にリードデータを転送し(S1007)、リード処理を終了する。
<6.ライト動作(RAID制御)>
図11Aは、圧縮後のデータを使用したRAID処理の一例を示すフローチャートである。 ストレージコントローラ102は、ホスト101からライトコマンドを受領すると、ライト処理を開始する(S1101)。ストレージコントローラ102は、RAIDプログラム112により、SSD120に格納された圧縮済み旧データ、旧パリティをリードする(S1102)。
図11Aは、圧縮後のデータを使用したRAID処理の一例を示すフローチャートである。 ストレージコントローラ102は、ホスト101からライトコマンドを受領すると、ライト処理を開始する(S1101)。ストレージコントローラ102は、RAIDプログラム112により、SSD120に格納された圧縮済み旧データ、旧パリティをリードする(S1102)。
次に、RAIDプログラム112は、圧縮後新データと、圧縮後旧データ、圧縮後旧パリティにそれぞれゼロデータを付与して圧縮前データサイズに拡張する(S1103)。RAID制御プログラム112は、拡張したデータを使用して、仮の新パリティを生成する(S1104)。仮の新パリティのゼロデータ部を除去して、格納用新パリティを生成し(S1105)、新データ、格納用新パリティを圧縮ライト処理に従って、書き込む(S1106)。
図11Aに示したライト動作は、圧縮データを伸長することなしに、パリティ計算を行うため、伸長処理を不要にすることでき、処理の高速化を図ることができる。
図11Bは、図11Aと異なる圧縮前のデータを使用したRAID処理の一例を示すフローチャートである。
ストレージコントローラ102は、ホスト101からライトコマンドを受領すると、ライト処理を開始する(S1111)。ストレージコントローラ102は、SSDに格納された圧縮済み旧データ、旧パリティをリードする(S1112)。次に、圧縮プログラム108により旧データ、旧パリティを伸長する(S1113)。RAIDプログラム112は、圧縮前新データと、伸長済み旧データ、旧パリティから、新パリティを生成する(S1114)。新データ、新パリティを圧縮ライト処理に従って、書き込む(S1115)。
ストレージコントローラ102は、ホスト101からライトコマンドを受領すると、ライト処理を開始する(S1111)。ストレージコントローラ102は、SSDに格納された圧縮済み旧データ、旧パリティをリードする(S1112)。次に、圧縮プログラム108により旧データ、旧パリティを伸長する(S1113)。RAIDプログラム112は、圧縮前新データと、伸長済み旧データ、旧パリティから、新パリティを生成する(S1114)。新データ、新パリティを圧縮ライト処理に従って、書き込む(S1115)。
図11Bで示した処理は、図11Aの処理と比較し、圧縮データを一旦伸長しなければならないが、圧縮データにゼロデータをパディングする処理や、仮の新パリティからゼロデータを除去する必要がない。本実施例のストレージコントローラ102の論理アドレス空間501、物理アドレス空間502、SSD120の論理アドレス空間503の同じサイズ、同じ管理単位で対応し、それぞれの管理単位の先頭アドレスは、圧縮管理サイズで揃える圧縮ライト処理では、図11Aの方がデータの管理が容易である。
図12は、データ圧縮後のRAID処理の動作を説明する図である。
(1)ストレージコントローラ102がホスト101からライトデータ(新データ)1201を受領する。
(1)ストレージコントローラ102がホスト101からライトデータ(新データ)1201を受領する。
新データに対応する旧データ(ストライプデータ)をSSD120a、SSD120bから読み出す。
新データを圧縮し、圧縮前データサイズとなるようゼロデータ1211bを付与する。同様にSSD120a、SSD120bから読み出された旧データ1212a、1213a(ストライプデータ)に圧縮前データサイズとなるようゼロデータ1212b、1213bを付与し、ゼロデータが付与された新データと旧データからパリティ1220aを生成する。
圧縮後の新データはSSD120a’に書き込まれると共に、ゼロデータを除去された新パリティ1220aもSSD120bに書き込まれる。
ここでは、例えば、圧縮前データの管理単位を16kB、圧縮後を0.5kBとした場合、ライトデータは16kBごとに分割され、その先頭アドレスから0.5kB単位の長さのデータが生成される。また、上書き時には16kB単位のデータの解放(WriteSameコマンドなどによるSSD側論物テーブルの解放)を行うことで、圧縮後データ長の変化に対応した上書きを行う。
以上本実施例は、SSD側で容量拡張機能をサポートし、ストレージコントローラ側で圧縮後に通常のアドレス割り当てを行う(ログ形式ではなく上書き形式)ことによって、複雑なテーブルが必要となる論物変換をSSD側で実施する。
ストレージコントローラ102は、各SSDから提供される複数の論理アドレス空間503を複数の物理アドレス空間502と対応させ、複数の物理アドレス空間502で一つの論理アドレス空間501を構成している。従って、ストレージコントローラ102は、物理アドレス空間502を用いて、RAIDの構成情報を管理でき、各SSDドライブにデータのストライピングを行うことができる。
また、ストレージコントローラの論理アドレス空間、複数のSSDの論理アドレスに対応するストレージコントローラの物理アドレス空間、複数のSSDの論理アドレス空間が、共通のサイズ、共通の管理単位で対応し、それぞれの管理単位の先頭アドレスも揃えられているため、各SSDは、ストレージコントローラ102が生成した圧縮後データを格納するため、自身の物理リソースを管理する物理アドレス空間504と、物理アドレス空間に対応する論理アドレス空間503との対応関係を示す論物変換情報213(論物変換テーブル)を管理するだけで、RAID機能に対応することができる。
101:ホスト、102:ストレージコントローラ、103:CPU、104:インタフェース、105:メモリ、106:記憶装置、120:SSD、201:CPU、202:メモリ、203:NAND、501:ストレージコントローラの論理アドレス空間、502:ストレージコントローラの物理アドレス空間、503:SSDの論理アドレス空間、504:SSDの物理アドレス空間、506:NANDの物理ページ。
Claims (11)
- ホストに接続されるストレージコントローラと、ストレージコントローラに接続される複数の不揮発メモリドライブを有するストレージシステムにおいて、
前記ストレージコントローラは、
ホストからのデータを圧縮し、
ホストに対し、論理的な記憶領域として第1の論理アドレス空間を提供し、前記第1の論理アドレス空間に圧縮前データを格納するよう管理し、前記第1の論理アドレス空間と対応し、前記複数の不揮発ドライブの記憶領域をそれぞれ管理する複数の第1の物理アドレス空間に対し、圧縮後のデータを書き込むように管理し、
前記複数の不揮発メモリドライブのそれぞれは、
不揮発メモリを有し、
前記不揮発メモリの物理記憶領域を管理する第2の物理アドレス空間と、前記第2の物理アドレス空間に対応し、前記複数の第1の物理アドレスにそれぞれ対応する、第2の論理アドレス空間を有し、前記第2の論理アドレス空間に圧縮後のデータを格納するように管理し、前記第2の物理アドレス空間に圧縮データを書き込み、
前記第2の論理アドレス空間は、前記複数の第1の物理アドレス空間の一つと、共通のサイズと管理サイズで管理され、前記第1の論理アドレス空間は、前記複数の第1の物理空間と、共通のサイズと管理サイズで管理され、
前記第1の論理アドレス空間、前記複数の第1の物理アドレス空間、複数の前記第2の論理アドレス空間は、前記管理サイズで先頭アドレスが揃えられていることを特徴とするストレージシステム。 - 請求項1に記載のストレージシステムにおいて、
前記複数の不揮発メモリドライブのそれぞれは、
前記複数の第1の物理アドレス空間の一つと共通のサイズで対応するように、前記第2の物理アドレス空間を拡張する拡張機能を有することを特徴とするストレージシステム。 - 請求項2記載のストレージシステムにおいて、
前記ストレージコントローラは、管理サイズ毎に、データの圧縮後のサイズを管理する圧縮後データサイズ情報を有することを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記複数の不揮発メモリドライブのそれぞれは、自身が前記ストレージコントローラに提供する前記第2の論理アドレス空間の論理アドレスと、前記不揮発メモリの物理アドレスとの対応関係を管理する論物変換テーブルを有することを特徴とするストレージシステム。 - 請求項2に記載のストレージシステムにおいて、
前記ストレージコントローラは、
ホストからライトデータを受領すると、構成情報に従って、ライトデータを分割し、
前記分割されたライトデータを圧縮前管理サイズで分割し、
圧縮前管理サイズで分割されたライトデータを圧縮して圧縮後データを生成し、
前記圧縮後データと圧縮前管理サイズの差分にゼロデータを付与し、
前記圧縮後データを前記第2の論理アドレス空間に格納するよう管理し、
前記第2の論理アドレス空間に対応する前記第2の物理アドレス空間に前記圧縮データを書き込むことを特徴とするストレージシステム。 - 請求項5に記載のストレージシステムにおいて、
前記ストレージコントローラは、
圧縮後のデータにゼロデータを付与した第1のデータと、
前記ライトデータが書き込まれる前記第1の論理アドレス空間のアドレスに格納されている旧データを読み出し、読み出された旧データにゼロデータを付与した第2のデータと、
前記旧データのパリティデータを旧パリティデータとして読み出し、前記旧パリティデータにゼロデータを付与した第3のデータと、
前記第1のデータ、前記第2のデータ及び前記第3のデータからパリティを生成し、前記生成したパリティからゼロデータを除去した新パリティを前記第2の物理アドレス空間に書き込むことを特徴とするストレージシステム。 - ホストに接続されるストレージコントローラと、ストレージコントローラに接続される複数の不揮発メモリドライブを有するストレージシステムのデータ圧縮方法において、
前記ストレージコントローラは、
ホストからのデータを圧縮し、
ホストに対し、論理的な記憶領域として第1の論理アドレス空間を提供し、前記第1の論理アドレス空間に圧縮前データを格納するよう管理し、前記第1の論理アドレス空間と対応し、前記複数の不揮発ドライブの記憶領域をそれぞれ管理する複数の第1の物理アドレス空間に対し、圧縮後のデータを書き込むように管理し、
前記複数の不揮発メモリドライブのそれぞれは、
不揮発メモリを有し、
前記不揮発メモリの物理記憶領域を管理する第2の物理アドレス空間と、前記第2の物理アドレス空間に対応し、前記複数の第1の物理アドレスにそれぞれ対応する、第2の論理アドレス空間を有し、前記第2の論理アドレス空間に圧縮後のデータを格納するように管理し、前記第2の物理アドレス空間に圧縮データを書き込み、
前記第2の論理アドレス空間は、前記複数の第1の物理アドレス空間の一つと、共通のサイズと管理サイズで管理され、前記第1の論理アドレス空間は、前記複数の第1の物理空間と、共通のサイズと管理サイズで管理され、
前記第1の論理アドレス空間、前記複数の第1の物理アドレス空間、複数の前記第2の論理アドレス空間は、前記管理サイズで先頭アドレスが揃えられていることを特徴とするストレージシステムのデータ圧縮方法。 - 請求項7に記載のストレージシステムのデータ圧縮方法において、
前記複数の不揮発メモリドライブのそれぞれは、
前記複数の第1の物理アドレス空間の一つと共通のサイズで対応するように、前記第2の物理アドレス空間を拡張することを特徴とするストレージシステムのデータ圧縮方法。 - 請求項8に記載のストレージシステムのデータ圧縮方法において、
前記ストレージコントローラは、
ホストからライトデータを受領すると、構成情報に従って、ライトデータを分割し、
前記分割されたライトデータを圧縮前管理サイズで分割し、
圧縮前管理サイズで分割されたライトデータを圧縮して圧縮後データを生成し、
前記圧縮後データと圧縮前管理サイズの差分にゼロデータを付与し、
前記圧縮後データを前記第2の論理アドレス空間に格納するよう管理し、
前記第2の論理アドレス空間に対応する前記第2の物理アドレス空間に前記圧縮データを書き込むことを特徴とするストレージシステムのデータ圧縮方法。 - 請求項9に記載のストレージシステムのデータ圧縮方法において、
前記ストレージコントローラは、
圧縮後のデータにゼロデータを付与した第1のデータと、
前記ライトデータが書き込まれる前記第1の論理アドレス空間のアドレスに格納されている旧データを読み出し、読み出された旧データにゼロデータを付与した第2のデータと、
前記旧データのパリティデータを旧パリティデータとして読み出し、前記旧パリティデータにゼロデータを付与した第3のデータと、
前記第1のデータ、前記第2のデータ及び前記第3のデータからパリティを生成し、前記生成したパリティからゼロデータを除去した新パリティを前記第2の物理アドレス空間に書き込むことを特徴とするストレージシステムのデータ圧縮方法。 - ホストに接続され、該ホストからのデータを圧縮するストレージコントローラと、ストレージコントローラに接続され、前記ストレージコントローラで圧縮された圧縮データを不揮発メモリに書き込む複数の不揮発メモリドライブを有するストレージシステムにおいて、
前記ストレージコントローラは、
ホストに対し、論理的な記憶領域として第1の論理アドレス空間を提供し、前記第1の論理アドレス空間と対応し、前記複数の不揮発ドライブの記憶領域をそれぞれ管理する複数の第1の物理アドレス空間を有し、
前記複数の不揮発メモリドライブのそれぞれは、
前記不揮発メモリの物理記憶領域を管理する第2の物理アドレス空間と、前記第2の物理アドレス空間に対応し、前記複数の第1の物理アドレス空間にそれぞれ対応する、第2の論理アドレス空間を有し、
前記複数の不揮発メモリの全ての前記第2の論理アドレス空間は、前記第1の論理アドレス空間と、共通のサイズと管理サイズで管理され、前記管理サイズで先頭アドレスが揃えられていることを特徴とするストレージシステム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019024753A JP2020135134A (ja) | 2019-02-14 | 2019-02-14 | ストレージシステム及び圧縮方法 |
US16/570,143 US11210214B2 (en) | 2019-02-14 | 2019-09-13 | Storage system and compression method of storing compressed data from storage controller physical address space to logical and physical address space of nonvolatile memory |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019024753A JP2020135134A (ja) | 2019-02-14 | 2019-02-14 | ストレージシステム及び圧縮方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020135134A true JP2020135134A (ja) | 2020-08-31 |
Family
ID=72042072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019024753A Pending JP2020135134A (ja) | 2019-02-14 | 2019-02-14 | ストレージシステム及び圧縮方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11210214B2 (ja) |
JP (1) | JP2020135134A (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2020154603A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステム |
US11221778B1 (en) * | 2019-04-02 | 2022-01-11 | Pure Storage, Inc. | Preparing data for deduplication |
US20240126479A1 (en) * | 2022-10-12 | 2024-04-18 | Kioxia Corporation | Controller and control method |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085296A (en) * | 1997-11-12 | 2000-07-04 | Digital Equipment Corporation | Sharing memory pages and page tables among computer processes |
US8949513B2 (en) * | 2011-05-10 | 2015-02-03 | Marvell World Trade Ltd. | Data compression and compacting for memory devices |
JP6553566B2 (ja) | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
US10936199B2 (en) * | 2018-07-17 | 2021-03-02 | Silicon Motion, Inc. | Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table |
-
2019
- 2019-02-14 JP JP2019024753A patent/JP2020135134A/ja active Pending
- 2019-09-13 US US16/570,143 patent/US11210214B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US20200264971A1 (en) | 2020-08-20 |
US11210214B2 (en) | 2021-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9442844B2 (en) | Apparatus, system, and method for a storage layer | |
WO2015162681A1 (ja) | ストレージシステムおよび記憶デバイスの制御方法 | |
US10133663B2 (en) | Systems and methods for persistent address space management | |
US8539150B2 (en) | Storage system and management method of control information using a cache memory with multiple cache partitions | |
US10884630B2 (en) | Storage system | |
US10061710B2 (en) | Storage device | |
JP6007332B2 (ja) | ストレージシステム及びデータライト方法 | |
US7584229B2 (en) | Method and system for priority-based allocation in a storage pool | |
JP6677740B2 (ja) | ストレージシステム | |
WO2011031903A2 (en) | Apparatus, system, and method for allocating storage | |
WO2016056104A1 (ja) | ストレージ装置、及び、記憶制御方法 | |
US20190243758A1 (en) | Storage control device and storage control method | |
US20170277631A1 (en) | Storage device, semiconductor memory device, and method for controlling same | |
JP2020135134A (ja) | ストレージシステム及び圧縮方法 | |
WO2015068233A1 (ja) | ストレージシステム | |
WO2015162755A1 (ja) | データを圧縮して格納するストレージ装置 | |
US20150019807A1 (en) | Linearized dynamic storage pool | |
US20240283463A1 (en) | Data compression method and apparatus | |
JP6817340B2 (ja) | 計算機 | |
JP5923913B2 (ja) | ストレージ装置、ストレージ装置の制御方法及びストレージシステム | |
US10713163B2 (en) | Set aware system data and mapping tables | |
JP6636159B2 (ja) | ストレージ装置 | |
JP6254986B2 (ja) | 情報処理装置、アクセスコントローラ、および情報処理方法 | |
JP6895551B2 (ja) | 情報処理システム | |
JP2024043063A (ja) | メモリシステムおよび制御方法 |