JP6007332B2 - ストレージシステム及びデータライト方法 - Google Patents
ストレージシステム及びデータライト方法 Download PDFInfo
- Publication number
- JP6007332B2 JP6007332B2 JP2015529282A JP2015529282A JP6007332B2 JP 6007332 B2 JP6007332 B2 JP 6007332B2 JP 2015529282 A JP2015529282 A JP 2015529282A JP 2015529282 A JP2015529282 A JP 2015529282A JP 6007332 B2 JP6007332 B2 JP 6007332B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- compression
- storage
- write
- controller
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1014—Compression, i.e. RAID systems with parity using compression techniques
-
- 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/72—Details relating to flash memory management
- G06F2212/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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/7207—Details relating to flash memory management management of metadata or control 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/72—Details relating to flash memory management
- G06F2212/7208—Multiple device management, e.g. distributing data over multiple flash devices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ストレージシステム内の記憶デバイスにおけるデータの圧縮の技術に関する。
ストレージシステムに格納されるデータ(例えば、コンテンツデータ)量は増大の一途をたどっている。ストレージシステムに格納可能なデータ量を増やすために多数の記憶デバイスを搭載すると、ストレージシステムのコストが増大するため、ユーザにとって好ましくない。そこで、データを圧縮して格納することにより、格納可能なデータ量を実質的に増大させる技術がある。
近年、フラッシュメモリを記憶媒体として用いた記憶デバイス(例えば、SSD(Solid State Drive))が、ストレージシステムに利用されている。SSDは、HDD(Hard Disk Drive)と比較して高速な入出力が可能である。しかし、SSDは、HDDと比較してビットコストが高価であるため、データを圧縮して格納することにより、ビットコストを低下させる技術が望まれている。データの圧縮は、ストレージシステムのコントローラや記憶デバイスによって行われる。ストレージシステムのコントローラは、データの入出力処理やコピー処理など、システム全体を制御しているため、ストレージシステムのコントローラに圧縮処理を実行させるとシステム全体の性能低下の要因となる。そこで、記憶デバイスがデータ圧縮を実行する技術がある(特許文献1)。
しかし、圧縮してもほとんどデータサイズの変化しない(圧縮効果の小さい)データが存在する。特許文献1に記載の圧縮機能を有するSSDは、受信したデータを一旦すべて圧縮し、データの圧縮効果が小さい場合、圧縮していない状態のデータを格納する。SSD単体では、データを実際に圧縮して圧縮後のデータサイズを確認してからでないと圧縮効果があったか否かを判断することができないからである。圧縮効果の小さいデータを圧縮する処理は、無駄なオーバーヘッドであり、性能低下の原因となる。
そこで、本発明の目的は、ストレージシステムにおいて、ストレージシステムのコントローラと記憶デバイスが連携することにより、圧縮処理によって発生し得るストレージシステムの性能低下を低減することにある。
本発明の一実施例に係るストレージシステムは、記憶媒体とその記憶媒体にライトするデータの圧縮機能を有する媒体コントローラとをそれぞれが有する複数の記憶デバイスを備える。ストレージシステムは、ホスト計算機から第1のデータの第1のライト要求を受信し、複数の記憶デバイスのうち、第1のライト要求に従うライト先の記憶デバイスに、第1のデータに基づく第2のデータのライトコマンドであって第2のデータの圧縮要否を示す圧縮要否情報を含んだ第1のライトコマンドを送信するストレージコントローラを備える。ライト先の記憶デバイスの媒体コントローラは、ストレージコントローラから第1のライトコマンドを受信し、第1のライトコマンドに含まれる圧縮要否情報が圧縮不要を示している場合、第2のデータを圧縮せずに記憶媒体に格納する。
本発明によれば、ビットコストを低下させるための圧縮処理により発生し得るストレージの性能低下を低減させることができる。
以下、ストレージコントローラ20からFMPK(Flash Memory Package)30に対して、FMPK30における圧縮要否を伝えられるようにライトコマンドを拡張したストレージシステムの実施例について、図面を参照しながら説明する。圧縮効果の大小は、データパターンに依存する。例えば、暗号化されたデータはデータパターンがランダムになるため、圧縮効果は小さい場合が多い。通常、ストレージコントローラは暗号化の情報を保持しているが、記憶デバイスはこのような情報を持たない。このため、ストレージコントローラが保持している情報に基づいて、記憶デバイスに圧縮要否を通知することで、不要な圧縮処理のオーバーヘッドを削減することができる。
図1は、ストレージシステム10のハードウェア構成例を示すブロック図である。
ホスト計算機11と、ストレージシステム10とは、通信ネットワーク13を通じて双方向にデータを送受信できる。通信ネットワーク13は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、SAN(Storage Area Network)、またはこれらの組み合わせで構成されてよい。
ホスト計算機11と、ストレージシステム10とは、通信ネットワーク13を通じて双方向にデータを送受信できる。通信ネットワーク13は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、SAN(Storage Area Network)、またはこれらの組み合わせで構成されてよい。
管理装置12と、ストレージシステム10とは、所定の通信線14を通じて双方向にデータを送受信できる。通信線14に代えて、通信ネットワーク13又は別の通信ネットワークが採用されてよい。管理装置12と、ストレージコントローラ20の備えるNIC(Network Interface Card)とが通信線14によって接続されてもよい。
ホスト計算機11は、計算機であり、ストレージシステム10にライト要求及びリード要求を送信することができる。ストレージコントローラ20は、そのライト要求又はリード要求を受信し、受信したライト要求又はリード要求に従い、データをライト又はリードすることができる。
管理装置12は、計算機であり、ストレージシステム10を管理する。管理装置12は、例えば、キーボード及びマウス等の入力I/F(Interface)と、ディスプレイ及びスピーカ等の出力I/Fと、を備える。管理者は、例えば、管理装置12を通じて、ストレージシステム10にRAID(Redundant Arrays of Inexpensive Disks)グループ29を構成したり、RAIDレベルを設定したりすることができる。ストレージシステム10は、管理装置12から設定されたRAIDレベルに従いデータを記憶するRAIDグループ29を構成する。
ストレージシステム10は、複数の記憶デバイス(FMPK30及びHDD50等)と、それら複数の記憶デバイスに接続されたストレージコントローラ20とを有する。
ストレージコントローラ20は、ストレージシステム10の動作を制御する。ストレージコントローラ20は、例えば、I/Oポート22と、メモリ23と、NIC26と、ドライブポート24と、それらに接続されたCPU(Central Processing Unit)21とを有する。これらの要素21〜24、26は、双方向にデータ送受信可能な内部バス25で接続されている。
I/Oポート22は、ストレージコントローラ20を通信ネットワーク13に接続するためのI/Fである。ストレージコントローラ20は、I/Oポート22を通じて、ホスト計算機11とデータを送受信する。ストレージコントローラ20は、複数のI/Oポート22を有してもよい。
ドライブポート24は、ストレージコントローラ20に、FMPK30及びHDD50等の記憶デバイスを接続するためのI/Fである。ドライブポート24は、例えば、SAS(Serial Attached SCSI)、SATA(SerialATA)及び/又はSCSI(Small Computer System Interface)に準拠したI/Fである。ストレージコントローラ20は、複数のドライブポート24を備えてもよい。ドライブポート24には、複数のFMPK30及び複数のHDD50が接続されてもよい。
CPU21は、ストレージコントローラ20を制御する。CPU21は、メモリ23から読み出したコンピュータプログラム(以下「プログラム」という)を実行し、ストレージコントローラ20の有する様々な機能を実現する。CPU21は、所定の処理に特化した演算回路を備えてもよい。
メモリ23は、プログラム及びデータ等を記憶する。メモリ23は、DRAM(Dynamic Random Access Memory)等の揮発性メモリであってもよいし、フラッシュメモリ等の不揮発性メモリであってもよい。
本明細書等においてストレージコントローラ20を主体として説明する処理は、このCPU21が各要素22〜26と連携して実行する処理であってよい。
記憶デバイスは、不揮発性の記憶媒体を有する。不揮発性の記憶媒体は、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリ(PRAM(相変化メモリ)、ReRAM(抵抗変化メモリ)、MRAM(磁気抵抗メモリ)など)である。
FMPK30の記憶媒体は、複数のFM(Flash Memory)チップから構成される。HDD50の記憶媒体は、磁気ディスクである。FMPK30及びHDD50は、ストレージコントローラ20に接続されている。
RAIDグループ29は、複数の記憶デバイスから構成される。RAIDグループ29を基に複数(又は1つ)の論理ボリューム140が作成される。RAIDグループ29を基に作成された論理ボリューム140は、ホスト計算機11に提供されてもよいし、ホスト計算機11に提供されずプール100(図2参照)の一要素とされてもよい。プール100を構成する論理ボリューム140は、複数の記憶領域(以下、便宜上「チャンク」という)に分割されている。仮想ボリューム160(図2参照)にプール100からチャンクが割り当てられる。論理ボリューム140と仮想ボリューム160との関係については後述する。
ストレージコントローラ20は、論理ボリューム140及び仮想ボリューム160のうちの少なくとも一方をホスト計算機11に提供する。本明細書等では、論理ボリューム140及び仮想ボリューム160を区別せずにボリュームということがある。ホスト計算機11は、ストレージコントローラ20から提供されたボリュームを指定したリード要求及びライト要求を送信することができる。ライト要求は、ライト先情報を含み、リード要求は、リード元情報を含む。ライト先情報は、ライト先のボリュームのID(例えば、LUN(Logical Unit Number))と、ライト先の領域のアドレス(例えばLBA(Logical Block Address))とを含む。リード元情報は、リード元のボリュームのIDと、リード元の領域のアドレスとを含む。
記憶デバイスは、内部に圧縮機能を有してもよい。本実施例では、記憶デバイスであるFMPKは、圧縮機能を有する。圧縮機能を有する記憶デバイスは、その圧縮機能によってデータを圧縮し、その圧縮したデータ(圧縮データ)を内部の記憶媒体に格納する。また、圧縮機能を有する記憶デバイスは、その圧縮機能によって圧縮データを伸長し、その伸長されたデータをその記憶デバイス外に送信する。また、圧縮機能を有する記憶デバイスは、データを圧縮して格納するか若しくは圧縮しないで格納するか、または、圧縮データを伸長して送信するか若しくは伸長しないで送信するかを制御する。
図2は、仮想ボリューム160と論理ボリューム140との関係性を説明するための模式図である。
ストレージコントローラ20は、図1に示すように、RAIDグループ29内に1又は2以上の論理ボリューム140を作成できる。
ストレージコントローラ20は、図1に示すように、RAIDグループ29内に1又は2以上の論理ボリューム140を作成できる。
ストレージコントローラ20は、論理ボリューム140を複数のチャンク(記憶領域)に分割して管理する。ストレージコントローラ20は、複数の論理ボリューム140の各々が有する複数のチャンクを、まとめて1つのプール100として管理する。つまり、プール100は、複数のチャンクを有している。
また、ストレージコントローラ20は、シンプロビジョニングに従う仮想ボリューム160を作成することができる。ストレージコントローラ20は、仮想ボリューム160を作成する段階で、その仮想ボリューム160の容量及び論理アドレス空間(LBA)を設定する。しかし、ストレージコントローラ20は、この段階では、プール100から仮想ボリューム160にチャンクを割り当てない。
ストレージコントローラ20は、ホスト計算機11から仮想ボリューム160を指定したライト要求を受信した場合に、プール100から使用可能なチャンクを選択し、そのライト要求の指定するLBAに対応する領域に、その選択したチャンクを割り当てる。そして、ストレージコントローラ20は、その割り当てたチャンクに、ライト要求に付随するデータ(ライトデータ)をライトする。ライト要求の指定するLBAに既にチャンクが割り当てられている場合、ストレージコントローラ20は、新たにチャンクを割り当てる必要はない。
仮想ボリューム160を用いることで、ストレージシステム10の有する記憶領域を効率的に利用することができる。
ストレージコントローラ20は、複数の記憶デバイスのうち、ライト先の記憶デバイスにライトコマンドを送信し、リード元の記憶デバイスにリードコマンドを送信する。ライトコマンドは、ライト先のアドレス(例えばLBA)を含み、リードコマンドは、リード元のアドレス(例えばLBA)を含む。ライト先の記憶デバイスは、ライト要求に従うライト先の領域(例えばチャンク)の基になっている記憶デバイスである。リード元の記憶デバイスは、リード要求に従うリード元の領域(例えばチャンク)の基になっている記憶デバイスである。
本実施例では、ホスト計算機11に提供されるボリュームは仮想ボリューム160であり、論理ボリューム140は、プール100の一要素であるとする。
ストレージコントローラ20は、複数の記憶デバイスのうち、ライト先の記憶デバイスにライトコマンドを送信し、リード元の記憶デバイスにリードコマンドを送信する。ライトコマンドは、ライト先のアドレス(例えばLBA)を含み、リードコマンドは、リード元のアドレス(例えばLBA)を含む。ライト先の記憶デバイスは、ライト要求に従うライト先の領域(例えばチャンク)の基になっている記憶デバイスである。リード元の記憶デバイスは、リード要求に従うリード元の領域(例えばチャンク)の基になっている記憶デバイスである。
本実施例では、ホスト計算機11に提供されるボリュームは仮想ボリューム160であり、論理ボリューム140は、プール100の一要素であるとする。
図3は、FMPK30のハードウェア構成例を示すブロック図である。
FMPK30は、フラッシュメモリと、フラッシュメモリに接続されたFMPKコントローラ31とを有する。フラッシュメモリは、複数のFMチップ39で構成されている。FMPKコントローラ31は、メモリ34と、圧縮伸張回路36と、上位I/F33と、FM I/F35と、それらに接続されたCPU32とを有する。これらの要素32〜36は、双方向にデータ送受信可能な内部バス37で接続されている。
FMPK30は、フラッシュメモリと、フラッシュメモリに接続されたFMPKコントローラ31とを有する。フラッシュメモリは、複数のFMチップ39で構成されている。FMPKコントローラ31は、メモリ34と、圧縮伸張回路36と、上位I/F33と、FM I/F35と、それらに接続されたCPU32とを有する。これらの要素32〜36は、双方向にデータ送受信可能な内部バス37で接続されている。
CPU32は、FMPK30の動作を制御する。CPU32は、メモリ34から読み出したプログラムを実行し、FMPK30の有する様々な機能を実現する。CPU32は、所定の処理に特化した演算回路を備えてもよい。
メモリ34は、プログラム及びデータ等を記憶する。メモリ34は、例えば、DRAM等の揮発性半導体メモリであってもよいし、フラッシュメモリ等の不揮発性メモリであってもよい。
圧縮伸張回路36は、データの圧縮処理及び伸張処理を行うための演算回路である。CPU32は、ストレージコントローラ20から受信したライトデータをこの圧縮伸張回路36を用いて圧縮してから、FMチップ39にライトする。または、CPU32は、FMチップ39からリードした圧縮データをこの圧縮伸張回路36を用いて伸張してから、ストレージコントローラ20に送信する。
上位I/F33は、FMPK30をストレージコントローラ20に接続するためのI/Fである。CPU32は、この上位I/F33を通じて、ストレージコントローラ20からライトコマンド及びライトデータ等を受信する。CPU32は、この上位I/F33を通じて、ストレージコントローラ20に完了応答等を送信する。
FM I/F35は、FMチップ39を接続するためのI/Fである。FM I/F35には、複数のFMチップが接続される。CPU32は、このFM I/F35を通じて、FMチップ39にデータをライトしたり、FMチップ39に格納されているデータをリードしたりする。FMチップ39は、例えばNAND型のFMチップであり、複数の物理ブロックを有する。各物理ブロックは、複数の物理ページで構成されている。データのリード及びライトは、ページ単位で行われ、データの消去は、ブロック単位で行われる。データが記憶されている物理ページにデータを新たにライトすることはできず、新たなデータは空きの物理ページに書き込まれる。
以上のように、これらの要素32〜37をまとめてFMPKコントローラ31という。本明細書等においてFMPKコントローラ31を主体として説明する処理は、このCPU32が各要素33〜37と連携して実行する処理であってもよい。
図4は、FMPK30に圧縮データが格納されている状態の一例を示す模式図である。
FMPKコントローラ31は、FMチップ39の物理的な記憶領域に基づいて構成される物理アドレス空間410と、ストレージコントローラ20に提供する論理アドレス空間420とを有し、物理アドレス空間410と論理アドレス空間420との対応関係を管理する。
FMPKコントローラ31は、FMチップ39の物理的な記憶領域に基づいて構成される物理アドレス空間410と、ストレージコントローラ20に提供する論理アドレス空間420とを有し、物理アドレス空間410と論理アドレス空間420との対応関係を管理する。
FMPKコントローラ31は、論理アドレス空間410を所定単位の論理ページ412に分割して管理する。物理アドレス空間420は、フラッシュメモリの複数の物理ページ422で構成されている。FMPKコントローラ31は、論理ページ412と物理ページ422との対応関係を管理する。1つの物理ページ422に格納されるデータ(ページ単位のデータ)は、1又は2以上のCW(Code Word)421の集合である。CWは、例えば、データとECC(Error Check and Correct)のセットである。FMPKコントローラ31は、フラッシュメモリの特性上、前述したように、物理ページ422の単位でデータをリード及びライトする。
FMPKコントローラ31は、例えば、次のようにデータを圧縮してライトする。
(1)FMPKコントローラ31は、論理ページ412#1のLBAを指定したライトコマンドに付随するライトデータを圧縮することにより圧縮データ405#Aを生成する。同様に、FMPKコントローラ31は、論理ページ412#2のLBAを指定したライトコマンドに付随するライトデータを圧縮することにより圧縮データ405#Bを生成し、論理ページ412#3のLBAを指定したライトコマンドに付随するライトデータを圧縮することにより圧縮データ405#Cを生成する。圧縮データ405のサイズがCW421のサイズ以下の場合、その圧縮データ405は1つのCW421を使用する。圧縮データ405のサイズがCW421のサイズよりも大きい場合、その圧縮データ405が格納可能な数のCW421を使用する。つまり、1つの圧縮データ405のサイズは、CW421の数で表現することができる。
(1)FMPKコントローラ31は、論理ページ412#1のLBAを指定したライトコマンドに付随するライトデータを圧縮することにより圧縮データ405#Aを生成する。同様に、FMPKコントローラ31は、論理ページ412#2のLBAを指定したライトコマンドに付随するライトデータを圧縮することにより圧縮データ405#Bを生成し、論理ページ412#3のLBAを指定したライトコマンドに付随するライトデータを圧縮することにより圧縮データ405#Cを生成する。圧縮データ405のサイズがCW421のサイズ以下の場合、その圧縮データ405は1つのCW421を使用する。圧縮データ405のサイズがCW421のサイズよりも大きい場合、その圧縮データ405が格納可能な数のCW421を使用する。つまり、1つの圧縮データ405のサイズは、CW421の数で表現することができる。
(2)FMPKコントローラ31は、CW421の単位の圧縮データ405を、物理ページ422の単位となるように結合又は分割する。例えば、図4の場合、圧縮データ405#A、#B、#CはそれぞれCW421の1つ分なので、FMPKコントローラ31は、圧縮データ405#A、#B、#Cを結合して1つのデータ406として物理ページ422#1にライトする。フラッシュメモリの特性上、物理ページの単位でライトする必要があるためである。例えば、FMPKコントローラ31は、圧縮データ405がCW421の4つ分である場合は、圧縮データ405をCW421の3つ分と1つ分に分割して、それぞれを物理ページ422にライトする。
図5は、ストレージコントローラ20の有する機能の一例を示すブロック図である。
ストレージコントローラ20は、例えば、仮想ボリューム作成部201と、コマンド処理部202と、仮想−論理LBAマッピングテーブル210と、ボリューム管理テーブル220と、プール管理テーブル230と、論理−仮想LBAマッピングテーブル240とを有する。仮想ボリューム作成部201及びコマンド処理部202は、例えば、CPU21がプログラムを実行することにより実現される機能である。
ストレージコントローラ20は、例えば、仮想ボリューム作成部201と、コマンド処理部202と、仮想−論理LBAマッピングテーブル210と、ボリューム管理テーブル220と、プール管理テーブル230と、論理−仮想LBAマッピングテーブル240とを有する。仮想ボリューム作成部201及びコマンド処理部202は、例えば、CPU21がプログラムを実行することにより実現される機能である。
仮想ボリューム作成部201は、管理装置12(管理者)からの指示に基づいて、仮想ボリューム160を作成する。例えば、仮想ボリューム作成部201は、管理装置12から指示されたボリューム容量、ボリューム属性、及び使用するプール番号等に基づいて、仮想ボリューム160を生成する。管理装置12は、ボリューム属性として、暗号化属性または圧縮属性を設定することができる。ストレージコントローラ20(コマンド処理部202)は、暗号化属性が設定された仮想ボリューム160がライト先の場合、ライト対象のデータを暗号化してライト先の仮想ボリューム160(割り当てられたチャンク)に格納する。また、ストレージコントローラ20(コマンド処理部202)は、圧縮属性が設定された仮想ボリューム160がライト先の場合、ライト対象のデータを圧縮してライト先の仮想ボリューム160に格納する。
コマンド処理部202は、ホスト計算機11からのライト要求に基づいて、データのライト処理を実行する。つまり、コマンド処理部202は、ライト要求に基づくライトコマンドを生成し、その生成したライトコマンドを、ライト先の記憶デバイスに送信する。
コマンド処理部202は、ライト先の記憶デバイスが圧縮機能を有している記憶デバイスの場合、ライト先の記憶デバイスに送信するライトコマンドに、圧縮が必要か否かを表す圧縮要否情報を含めることができる。本実施例では、圧縮機能を有する記憶デバイスは、FMPK30であり、圧縮要否情報の一例が圧縮要否フラグである。すなわち、コマンド処理部202は、FMPK30における圧縮要否を示す圧縮要否フラグ(圧縮オプション)を含むライトコマンドを生成しそのFMPK30に送信する。コマンド処理部202は、ライト要求の指定する仮想ボリューム160のボリューム属性に基づいて、圧縮要否フラグ(圧縮オプション)の要否を設定してもよい。コマンド処理部202は、ライト要求の指定する仮想ボリューム160のボリューム属性が暗号化属性である場合、圧縮要否フラグ(圧縮オプション)を「不要」に設定してもよい。
図6は、仮想−論理LBAマッピングテーブル210の構成例を示す。
仮想−論理LBAマッピングテーブル210は、仮想ボリューム160毎に生成され、その仮想ボリューム160に係るLBAが、どの論理ボリューム140のどのLBAに対応付けられているかを管理する。
仮想−論理LBAマッピングテーブル210は、仮想ボリューム160毎に生成され、その仮想ボリューム160に係るLBAが、どの論理ボリューム140のどのLBAに対応付けられているかを管理する。
仮想−論理LBAマッピングテーブル210は、複数のエントリ211a、211b等を有し、各エントリはデータフィールドとして、仮想ボリュームのLBAを示す仮想ボリュームLBA212と、論理ボリュームのIDを示す論理ボリュームID213と、論理ボリュームのLBAを示す論理ボリュームLBA214とを有する。
例えば、図6のエントリ211bは、仮想ボリュームLBA「0x00002000」が、論理ボリュームID「#0001」の論理ボリュームLBA「0x10001000」にマッピングされていることを示す。また、エントリ211aは、仮想ボリュームLBA「0x00001000」が、何れの論理ボリューム140にもマッピングされていない(NULL)ことを示す。
図7は、ボリューム管理テーブル220の構成例を示す。
ストレージコントローラ20は、自己の管理下のボリューム(仮想ボリューム160及び論理ボリューム140)をこのボリューム管理テーブル220で管理する。
ストレージコントローラ20は、自己の管理下のボリューム(仮想ボリューム160及び論理ボリューム140)をこのボリューム管理テーブル220で管理する。
ボリューム管理テーブル220は、複数のエントリ221等を有し、各エントリは、データフィールドとして、ボリュームID222と、ボリューム種別223と、ボリューム容量224と、プール番号225と、ボリューム属性226とを有する。
ボリュームID222には、ストレージコントローラ20において、論理ボリューム140及び仮想ボリューム160を含めたボリュームを一意に識別し得るIDが格納される。
ボリューム種別223には、ボリュームID222に対応するボリュームが、論理ボリューム140であるか、それとも仮想ボリューム160であるかを識別し得る情報が格納される。
ボリューム容量224には、ボリュームID222に対応するボリュームの容量が格納される。
プール番号225には、ボリュームID222に対応する仮想ボリューム160を構成するプール100の場号が格納される。つまり、その仮想ボリューム160には、プール番号の示すプール100の有するチャンクが割り当てられる。
ボリューム属性226には、ボリュームID222に対応するボリュームの属性が格納される。例えば、暗号化属性が設定されているボリュームの場合、このボリューム属性226には「暗号化」が格納される。例えば、圧縮属性が設定されているボリュームの場合、このボリューム属性226には「圧縮」が格納される。このボリューム属性226は、例えば、ホスト計算機11から設定される。
例えば、図7のエントリ221の示すボリュームID「10」に対応するボリュームは、ボリューム容量が「1.5TB」の「仮想ボリューム」であり、プール番号「10」のプール100に含まれるチャンクが割り当てられ、データを「暗号化」して格納することを示す。
図8は、プール管理テーブル230の構成例を示す。
プール管理テーブル230は、プール100毎に生成され、自己のプール100が何れの論理ボリューム140によって構成されているか、及びその論理ボリューム140に対応付けられている論理−仮想LBAマッピングテーブル240は何れであるかを管理する。
プール管理テーブル230は、プール100毎に生成され、自己のプール100が何れの論理ボリューム140によって構成されているか、及びその論理ボリューム140に対応付けられている論理−仮想LBAマッピングテーブル240は何れであるかを管理する。
プール管理テーブル230は、複数のエントリ231等を有し、各エントリは、データフィールドとして、論理ボリュームのIDを示す論理ボリュームID232と、論理−仮想LBAマッピングテーブル240の参照先(ポインタ)とを有する。
例えば、図8に示すプール管理テーブル230は、自己のプール100が、論理ボリュームIDが「#0001」、「#FFBA」及び「#0020」の論理ボリュームで構成されていることを示す。また、エントリ231は、論理ボリュームID「#0001」に対応する論理ボリュームの論理−仮想LBAマッピングテーブル240の参照先(ポインタ)が「0xAB8FFF00」であることを示す。
図9は、論理−仮想LBAマッピングテーブル240の構成例を示す。
論理−仮想LBAマッピングテーブル240は、論理ボリューム140毎に生成され、その論理ボリューム140に係るLBAが、どの仮想ボリューム160のどのLBAにマッピングされているかを管理する。
論理−仮想LBAマッピングテーブル240は、論理ボリューム140毎に生成され、その論理ボリューム140に係るLBAが、どの仮想ボリューム160のどのLBAにマッピングされているかを管理する。
論理−仮想LBAマッピングテーブル240は、複数のエントリ240a、240b等を有し、各エントリはデータフィールドとして、論理ボリュームLBA242と、仮想ボリュームID243と、仮想ボリュームLBA244とを有する。
例えば、図9のエントリ241bは、論理ボリュームLBA「0x01003000」が、仮想ボリュームID「#8001」の仮想ボリュームLBA「0x00101000」にマッピングされていることを示す。また、エントリ241aは、論理ボリュームLBA「0x01001000」が、何れの仮想ボリューム160のLBAにもマッピングされていない(NULL)ことを示す。
図10は、ライトコマンド1000のフォーマットの構成例を示す。
ストレージコントローラ20は、FMPK30毎にライトコマンド1000を生成し、その生成したライトコマンド1000を対応するFMPK30に送信する。
ストレージコントローラ20は、FMPK30毎にライトコマンド1000を生成し、その生成したライトコマンド1000を対応するFMPK30に送信する。
ライトコマンド1000は、データフィールドとして、コマンドコード1001と、先頭LBA1002と、データサイズ1003と、圧縮オプション1004と、その他の情報1005とを有する。
コマンドコード1001には、このコマンドが「ライトコマンド」であることを示すコードが格納される。コマンドコード1001は、圧縮オプション付きのライトコマンドと、圧縮オプションのない通常のライトコマンドとで異なっていてもよい。
先頭LBA1002には、このコマンドの送信先であるFMPK30の論理アドレス空間410における、データのライトの開始位置を示すLBAが格納される。
データサイズ1003には、このライトコマンド1000によってライトするデータのサイズが格納される。
圧縮オプション1004には、このライトコマンドによってライトするデータの圧縮要否を示すフラグである圧縮要否フラグが格納される。圧縮要否は、ストレージコントローラ20で判定される。ストレージコントローラ20は、ライトコマンド1000の送信先のFMPK30において、このデータを圧縮してライトする必要があると判定した場合、この圧縮要否フラグに「必要」を格納する。ストレージコントローラ20は、ライトコマンド1000の送信先のFMPK30において、このデータを圧縮してライトする必要はないと判定した場合、この圧縮要否フラグに「不要」を格納する。
図11は、ストレージコントローラ20における仮想ボリューム作成部201の処理例を示すフローチャートである。
仮想ボリューム作成部201は、管理装置12から仮想ボリューム作成要求を受信すると(S101)、以降の処理を実行する。
仮想ボリューム作成部201は、ボリューム管理テーブル220に、仮想ボリューム作成要求の指示する仮想ボリュームに係るエントリを新規作成し、その作成したエントリのボリューム種別223に「仮想ボリューム」を格納する(S102)。
仮想ボリューム作成部201は、その作成したエントリのボリューム容量224及びプール番号225に、仮想ボリューム作成要求の指示する設定値を格納する(S103)。
仮想ボリューム作成部201は、ボリューム容量224に対応する仮想−論理LBAマッピングテーブル210を作成する(S104)。
仮想ボリューム作成部201は、仮想ボリューム作成要求からボリューム属性226に「暗号化」が指定されているか否かを判定する(S105)。
「暗号化」が指定されていない場合(S105:NO)、仮想ボリューム作成部201は、管理装置12に完了応答を送信し(S107)、当該処理を終了する(終了)。
「暗号化」が指定されている場合(S105:YES)、仮想ボリューム作成部201は、その作成したエントリのボリューム属性226に「暗号化」を設定する(S106)。そして、ストレージコントローラ20は、管理装置12に完了応答を送信し(S107)、当該処理を終了する(終了)。
以上の処理により、ストレージコントローラ20は、仮想ボリューム作成要求に基づく仮想ボリューム160を作成することができる。
図12は、ストレージコントローラ20におけるコマンド処理部202の処理例を示すフローチャートである。
コマンド処理部202は、ホスト計算機11からライト要求を受信すると、そのライト要求に付随するライトデータをメモリ23(キャッシュ領域)に格納する(S201)。
コマンド処理部202は、ライト要求によって指定された仮想ボリューム160におけるライト先の領域(仮想ボリュームLBA)(以下「ライト対象領域」という)に、チャンク(論理ボリュームLBA)が割り当て済みであるか否かを判定する(S202)。
ライト対象領域にチャンクが割り当て済みである場合(S202:YES)、コマンド処理部202は、ステップS204に進む。
ライト対象領域にチャンクが割り当て済みでない場合(S202:NO)、コマンド処理部202は、仮想ボリューム160に対応付けられたプール100から未使用のチャンクを取得し、そのチャンクをライト対象領域に割り当てる(S203)。そして、コマンド処理部202は、ステップS204に進む。
コマンド処理部202は、ライト対象領域に割り当てられたチャンクが圧縮機能を有する論理ボリューム140に属しているか否かを判定する(S204)。
そのチャンクが圧縮機能を有さない論理ボリューム140に属している場合(S204:NO)、コマンド処理部202は、圧縮要否フラグに「不要」をセットにしたライトコマンド1000を生成し(S211)、ステップS220に進む。
そのチャンクが圧縮機能を有する論理ボリューム140に属している場合(S204:YES)、コマンド処理部202は、ボリューム管理テーブル220を参照し、そのライト対象領域を含む仮想ボリューム160のボリューム属性226に「暗号化」が設定されているか否かを判定する(S205)。
そのボリューム属性226に「暗号化」が設定されていない場合(S205:NO)、コマンド処理部202は、圧縮要否フラグを「不要」にセットしたライトコマンド1000を生成し(S206)、ステップS220に進む。暗号化されていないライトデータは、圧縮によってデータサイズが小さくなり得る(暗号化されているデータと比べて圧縮効果が大きい)からである。
そのボリューム属性226に「暗号化」が設定されている場合(S205:YES)、コマンド処理部202は、ライトデータを暗号化する(S210)。そして、コマンド処理部202は、圧縮要否フラグに「不要」をセットしたライトコマンド1000を生成し(S211)、ステップS220に進む。暗号化されたライトデータは、圧縮してもデータサイズがほとんど小さくならない(圧縮効果が小さい)からである。
ステップS220において、コマンド処理部202は、ステップS206又はステップS211で生成したライトコマンド1000を、ライト対象のFMPK30に送信する(S220)。そして、コマンド処理部202は、ホスト計算機11に完了応答を送信し(S221)、当該処理を終了する(終了)。なお、完了応答は、S220の後に代えて、S201とS202の間、すなわち、ライト要求に付随するライトデータがメモリ23(キャッシュ領域)に格納されたときに行われてもよい。
以上のように、ストレージコントローラ20は、ボリューム管理テーブル220のボリューム属性226に基づいてライトデータの圧縮要否を判定し、その判定結果をFMPK30に伝えることができる。これによりFMPK30は、ライトデータを圧縮すべきか否かを知ることができる。よって、FMPK30における無駄な圧縮処理を低減することができる。これにより、FMPK30の負荷が低減され、FMPK30からストレージコントローラ20への応答性能が向上する。FMPK30のビットコストを低減する圧縮機能を有しながらも、ストレージシステムとしての性能低下を抑制することができる。
図13は、FMPKコントローラ31の有する機能の一例を示すブロック図である。
FMPKコントローラ31は、管理下のFMチップ39に対するデータのリード及びライトを制御する。
FMPKコントローラ31は、管理下のFMチップ39に対するデータのリード及びライトを制御する。
圧縮機能を有するFMPKコントローラ31は、データを圧縮してFMチップ39にライトすることにより、物理的な記憶容量(例えば1TB)よりも大きな論理的な記憶容量(例えば8TB)を、ストレージコントローラ20に提供することができる。
FMPKコントローラ31は、例えば、設定パラメータとして、同期圧縮モードと非同期圧縮モードとを有する。
同期圧縮モードが設定されている場合、FMPKコントローラ31は、ライト対象のデータを受信したらそのデータを圧縮してFMチップ39にライトする。
非同期圧縮モードが設定されている場合、FMPKコントローラ31は、受信したデータを一時的に非圧縮のまま(つまり圧縮しないで)FMチップ39にライトし、所定のタイミングでその非圧縮のデータをFMチップ39からリードし圧縮して同一又は別のFMチップ39にライトする。所定のタイミングとは、例えば、FMチップ39内のデータの移動のためにデータのリードを必要とする内部処理のタイミング、具体的には、例えば、データのリクラメーション時などである。
ここで、フラッシュメモリはその特性上、複数の物理ページから構成されるブロック単位でデータを消去する必要があるので、或るブロック内のデータを消去する前にそのブロック内で必要なデータ(有効データ)を他のブロックにコピーする必要がある。このような処理をリクラメーション処理という。また、フラッシュメモリはその特性上、セル内部の浮遊ゲートに蓄えた電子が漏れるため、データを高信頼に保持可能な時間は有限であり、それ故、FMチップにデータをライト後、一定時間以内に一旦リードし、生じている障害ビットを訂正した後、他のブロックに書き直す処理を行うことが望ましい。このような処理をリフレッシュ処理という。また、ブロックにおけるデータの消去回数(ライト回数)に限界が存在するため、各ブロックの消去回数を平準化して、フラッシュメモリ全体を長寿命化させることが望ましい。そこで、リクラメーション処理やリフレッシュ処理のような、データ移動を伴う内部処理(ストレージコントローラ20のような上位デバイスからI/Oコマンドを受けたタイミングとは非同期に行われる処理)において、FMPKコントローラ31は、これらの問題を解決するために、データの移動先のブロックを、そのブロックの消去回数を基に決定し、それにより、ブロックの消去回数の平準化を図ってよい。これは、ウェアレベリングの一環であってよい。このように、FMPK内部で発生するリクラメーション時などにあわせて圧縮処理を実行することで、圧縮処理のためだけのオーバーヘッドを削減することができる。
実施例1は、非同期圧縮モードの設定されたFMPK30を想定して説明する。しかし、同期圧縮モードの設定されたFMPK30であったとしても、この実施例1に示す内容は実施可能である。
FMPKコントローラ31は、例えば、コマンド処理部301と、圧縮処理部302と、論理−物理ページマッピングテーブル310と、物理−論理ページマッピングテーブル330とを有する。コマンド処理部301及び圧縮処理部302は、プログラムがCPU32に実行されることにより発揮される機能であってもよい。
コマンド処理部301は、ストレージコントローラ20のような上位デバイスからのコマンド(例えばリードコマンド及びライトコマンド)を処理する。例えば、コマンド処理部301は、ライトコマンドに含まれる圧縮要否フラグ(圧縮オプション)に基づいて、データを圧縮せずにFMチップ39にライトするか、データを圧縮してFMチップ39にライトするかを判定する。コマンド処理部301は、圧縮要否フラグが「必要」であった場合、圧縮処理部302にそのデータを圧縮させ、その圧縮データをFMチップ39にライトする。コマンド処理部301は、圧縮要否フラグが「不要」であった場合、そのままの非圧縮データをFMチップ39にライトする。
圧縮処理部302は、圧縮伸張回路36を用いてデータを圧縮し、圧縮データを生成する。
図14は、論理−物理ページマッピングテーブル310の構成例を示す。
論理−物理ページマッピングテーブル310は、FMPK30内に1つ生成され、そのFMPK30の論理アドレス空間410を構成する各論理ページ412が、物理アドレス空間420のどの物理ページ422に対応付けられているかを管理する(図4参照)。
論理−物理ページマッピングテーブル310は、FMPK30内に1つ生成され、そのFMPK30の論理アドレス空間410を構成する各論理ページ412が、物理アドレス空間420のどの物理ページ422に対応付けられているかを管理する(図4参照)。
論理−物理ページマッピングテーブル310は、複数のエントリ311a、311b等を有し、各エントリはデータフィールドとして、論理ページ番号312と、物理ページ番号313と、圧縮属性314と、開始アドレス315とを有する。
論理ページ番号312には、FMPK30内で論理ページ412を一意に識別可能な番号が格納される。
物理ページ番号313には、FMPK30内で物理ページ422を一意に識別可能な番号が格納される。論理ページ412に割り当てられていない物理ページ422の物理ページ番号313には「未割当」が格納される。
圧縮属性314には、物理ページ番号313の示す物理ページ422に格納されているデータが圧縮データであるか否かを示す情報が格納される。例えば、圧縮データの格納されている物理ページ422に対応する圧縮属性314には「圧縮」が格納され、非圧縮データの格納されている物理ページ422の圧縮属性314には「非圧縮」が格納される。
開始アドレス315には、物理ページ番号313の示す物理ページ422に圧縮データが格納されている場合において、物理ページ422におけるその圧縮データの開始位置(アドレス)が格納される。
例えば、図14のエントリ311aは、論理ページ番号「1」の論理ページ412は、物理ページ番号「500」の物理ページ422に対応付けられており、この物理ページ422には「圧縮データ」が記憶されており、この圧縮データの物理ページ422内における開始アドレスは「0」であることを示す。
また、エントリ311bは、論理ページ番号「1000」の論理ページ412は、物理ページ番号「500」の物理ページ422に対応付けられており、この物理ページ422には「圧縮データ」が記憶されており、この圧縮データの物理ページ422内における開始アドレスは「4096」であることを示す。このように、論理ページ412では別々に管理されている圧縮データが、実体としては同じ物理ページ422に格納されていることがある。
図15は、物理−論理ページマッピングテーブル330の構成例を示す。
物理−論理ページマッピングテーブル330は、FMPK30内に1つ生成され、そのFMPK30の物理アドレス空間420を構成する各物理ページ422が、論理アドレス空間410のどの論理ページ412に対応付けされているかを管理する。つまり、物理−論理ページマッピングテーブル330は、上記の論理−物理ページマッピングテーブル310の逆引き用のテーブルともいえる。
物理−論理ページマッピングテーブル330は、FMPK30内に1つ生成され、そのFMPK30の物理アドレス空間420を構成する各物理ページ422が、論理アドレス空間410のどの論理ページ412に対応付けされているかを管理する。つまり、物理−論理ページマッピングテーブル330は、上記の論理−物理ページマッピングテーブル310の逆引き用のテーブルともいえる。
物理−論理ページマッピングテーブル330は、複数のエントリ331a、331b等を有し、各エントリはデータフィールドとして、物理ページ番号332と、論理ページ番号333と、圧縮状態334とを有する。物理ページ番号332及び論理ページ番号333は、上記で説明したとおりである。
圧縮状態334には、物理ページ番号332の示す物理ページ422に格納されているデータは圧縮が不要であるか否かを示す情報が格納される。また、圧縮状態334には、圧縮が必要なデータについて、その物理ページ422に格納されているデータは既に圧縮済みであるか、それとも今後圧縮される予定であるかを示す情報が格納される。例えば、物理ページ422に圧縮が必要かつ圧縮済みのデータ(以下「圧縮済みデータ」という)が格納されている場合、この圧縮状態334には「済み」が格納される。物理ページ422に圧縮が必要且つ未圧縮のデータ(以下「圧縮予定データ」という)が格納されている場合、この圧縮状態334には「予定」が格納される。物理ページ422に圧縮が不要なデータが格納されている場合、この圧縮属性334には「不要」が格納される。このように圧縮属性が「不要」であることを管理することで、FMPKコントローラは非同期処理の際にもそのデータに対する圧縮が不要であると判断できる。つまり、圧縮属性が「不要」であれば、FMPKコントローラは、そのデータを圧縮されていない状態(伸長された状態)に維持する。
例えば、図15のエントリ331aは、物理ページ番号「300」の物理ページ422が、論理ページ番号「100」の論理ページ412に対応付けられており、この物理ページ422には「圧縮予定データ」が格納されていることを示す。
また、エントリ331bは、物理ページ番号「500」の物理ページ422が、論理ページ番号「1」と「1000」の2つの論理ページ412に対応付けられており、この物理ページ422には「圧縮済みデータ」が格納されていることを示す。
図16は、FMPKコントローラ31におけるコマンド処理部301の処理例を示すフローチャートである。
コマンド処理部301は、ストレージコントローラ20からライトコマンド1000を受信すると、ライトデータをいったんメモリ34にライトし、以下の処理をする(S301)。
コマンド処理部301は、ライトコマンド1000で指定されたライトデータのデータサイズ1003の分の未割当の物理ページ422を確保する(S302)。また、コマンド処理部301は、物理−論理ページマッピングテーブル330に、その確保した物理ページ422に対応するエントリを構築する。
コマンド処理部301は、ライトコマンド1000の示す先頭LBA1002に対応する論理ページ番号を算出し、その確保した物理ページ422の物理ページ番号とその算出した論理ページ番号とを対応関係を、物理−論理ページマッピングテーブル330に登録する。また、コマンド処理部301は、その物理ページ番号と論理ページ番号との対応関係を、論理−物理ページマッピングテーブル310にも登録する(S303)。
コマンド処理部301は、その確保した物理ページ422にデータをライトする(S304)。
コマンド処理部301は、ライトコマンド1000の圧縮オプション1004に係る圧縮要否フラグが「必要」であるか否かを判定する(S305)。
この圧縮要否フラグが「不要」である場合(S305:不要)、コマンド処理部301は、物理−論理ページマッピングテーブル330において、データをライトした物理ページ422に対応する圧縮状態334に「不要」を格納し(S307)、当該処理を終了する(終了)。
この圧縮要否フラグが「必要」である場合(S305:必要)、コマンド処理部301は、物理−論理ページマッピングテーブル330において、データをライトした物理ページ422に対応する圧縮状態334に「予定」を格納し(S306)、当該処理を終了する(終了)。
以上の処理により、FMPKコントローラ31は、ライトコマンド1000の圧縮要否フラグに基づいて、ライトデータを圧縮すべきか否かを判断することができる。
図17は、FMPKコントローラ31において非同期圧縮モードでデータを圧縮してライトする処理例を示すフローチャートである。
FMPKコントローラ31は、物理−論理ページマッピングテーブル330に、圧縮状態334が「予定」のエントリが存在するか否かを判定する(S401)。
圧縮状態334が「予定」のエントリが存在しない場合(S401:NO)、FMPKコントローラ31は、当該処理を終了する(終了)。
圧縮状態334が「予定」のエントリが存在する場合(S401:YES)、FMPKコントローラ31は、圧縮状態334が「予定」のエントリの内、当該処理において未選択のエントリを1つ選択する(S402)。
FMPKコントローラ31は、選択したエントリの物理ページ422からデータをリードし、圧縮データを生成する(S403)。
FMPKコントローラ31は、「(メモリに格納されている圧縮データの合計サイズ)+(S403で生成した圧縮データのサイズ)>(物理ページサイズ)」であるか否かを判定する(S404)。
ステップS404の条件式が満たされない場合(S404:NO)、FMPKコントローラ31は、ステップS408に進む。
ステップS404の条件式が満たされる場合(S404:YES)、FMPKコントローラ31は、未使用の物理ページ422を確保する(S405)。
そして、FMPKコントローラ31は、メモリ34に格納されている圧縮データを結合して確保した物理ページ422にライトし、その物理ページ422に対応する圧縮状態334を「予定」から「済み」に変更する(S406)。
FMPKコントローラ31は、そのライトした圧縮データをメモリ34から消去し、論理−物理ページマッピングテーブル310及び物理−論理ページマッピングテーブル330において、その圧縮データを格納していた物理ページ422に係るエントリを「未割当」に変更し(S407)、ステップS408に進む。
FMPKコントローラ31は、ステップS403で生成した圧縮データをメモリ34に格納し(S408)、ステップS401に戻る。
以上の処理により、1つの圧縮データのサイズが物理ページ422のサイズに満たない場合であっても、複数の圧縮データを結合して物理ページ422に格納することができる。よって、FMチップ39から構成される物理的な記憶容量を効率的に使用することができる。
実施例1によれば、FMPK30における圧縮効果の小さいデータの圧縮処理を低減することができる。これにより、FMPK30における無駄なオーバーヘッド発生を低減させることができるので、ストレージシステム10全体の性能を向上させることができる。
FMPK30内において物理ページ422のページサイズよりも小さいサイズのデータを圧縮してFMチップ39に格納したとしても、FMPK30の全体の消費量の削減にはつながらない。上述のとおり、フラッシュメモリはその特性上、物理ページ422の単位で、データをリード及びライトする必要があるためである。例えば、8KBのデータを1KBに圧縮しても、そのデータを格納するためには1ページ分の物理ページ422が消費されてしまう。したがって、FMPK30において、同期圧縮モードの場合にページサイズよりも小さいサイズのデータを圧縮することは無駄な処理となる。
そこで、本実施例では、ライト先のFMPK30の論理アドレスが連続しない複数のデータをFMPK30に送信するにあたり、ストレージコントローラ20は、ある程度のデータをまとめて一括でFMPK30に送信する。そして、FMPKコントローラ31は、その一括で送信されたデータをまとめて圧縮データを生成し、その圧縮データを物理ページ422にライトする。以下、詳細を説明する。なお、以下の説明では、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図18は、実施例2におけるストレージシステム10の処理概要を示す模式図である。
図18において、ストレージコントローラ20は、ホスト計算機11から受信した複数のライト要求にそれぞれ付随した複数のライトデータD1、D2、D3をメモリ23の所定のキャッシュ領域に格納する。ライトデータD1、D2、D3の各々について、ホスト計算機11からのライト要求で指定された格納先LBAは連続していない(つまり、ライトデータD1、D2、D3は、シーケンスライトデータではなくランダムライトデータである)。また、ライトデータD1,D2、D3は、FMPK30に未だライトされていないデータである。このように、ホスト計算機11から受信して、キャッシュ領域に格納されたまま、未だFMPK30のような記憶デバイスにライトされていないデータを「ダーティデータ」という。これに対して、FMPK30のような記憶デバイスにライトされたデータを「クリーンデータ」という。
図18において、ストレージコントローラ20は、ホスト計算機11から受信した複数のライト要求にそれぞれ付随した複数のライトデータD1、D2、D3をメモリ23の所定のキャッシュ領域に格納する。ライトデータD1、D2、D3の各々について、ホスト計算機11からのライト要求で指定された格納先LBAは連続していない(つまり、ライトデータD1、D2、D3は、シーケンスライトデータではなくランダムライトデータである)。また、ライトデータD1,D2、D3は、FMPK30に未だライトされていないデータである。このように、ホスト計算機11から受信して、キャッシュ領域に格納されたまま、未だFMPK30のような記憶デバイスにライトされていないデータを「ダーティデータ」という。これに対して、FMPK30のような記憶デバイスにライトされたデータを「クリーンデータ」という。
ここで、一例として、図18に示すダーティデータD1、D2、D3の各々のデータサイズは、FMPK30におけるページサイズよりも小さいものとする。したがって、ダーティデータD1、D2、D3を個別にFMPK30に送信すると、FMPK30ではそれぞれが個別に圧縮されて物理ページ422にライトされてしまう。これは、ストレージコントローラ20とFMPK30との間のデータ伝送帯域の消費量が多くなってしまう上、FMPKコントローラ31内で無駄な圧縮処理が発生してしまう。なお、D1、D2、D3の各々のデータサイズがページサイズより大きくても、ストレージコントローラが一括で転送することで、圧縮処理の回数を削減することができ、圧縮後のデータを格納する物理ページの数を抑制することもできる。
また、実施例1に示したようにFMPK30を非同期圧縮モードで動作させ、いったん圧縮予定のデータを非圧縮でFMチップ39に格納しておき、所定のタイミングで複数の圧縮予定のデータをまとめて圧縮し、FMチップ39に再度ライトするという方法もある。しかし、この方法は、FMチップ39へのライト回数が増加してしまうので、上述のとおりFMチップ39の寿命を縮めることになる。
そこで、本実施例におけるストレージコントローラ20は、以下の図19に示すような、複数のライトデータを一括でFMPK30に送信する一括送信用ライトコマンド1100を生成する。
図19は、一括送信用ライトコマンド1100のフォーマットの構成例を示す。
ストレージコントローラ20は、FMPK30毎に一括送信用ライトコマンド1100を生成し、その生成した一括送信用ライトコマンド1100を対応するFMPK30に送信する。
ストレージコントローラ20は、FMPK30毎に一括送信用ライトコマンド1100を生成し、その生成した一括送信用ライトコマンド1100を対応するFMPK30に送信する。
一括送信用ライトコマンド1100は、データフィールドとして、コマンドコード1101を有し、それに続き、一括で送信する複数のライトデータの各々について、先頭LBA1102と、データサイズ1103と、圧縮オプション1104と、を有する。つまり、ストレージコントローラ20は、一括送信用ライトコマンド1100を用いて、同じFMPK30にライトするデータをまとめることができる。
コマンドコード1101には、このコマンドが「ライトコマンド」であることを示すコードが格納される。コマンドコード1101には、「一括送信用ライトコマンド」であることを示すコードが格納されるとしてもよい。つまり、コマンドコードには、通常のライトコマンド及び圧縮オプションを有するライトコマンドとは区別し得るコードが格納されるとしてもよい。先頭LBA1102と、データサイズ1103と、圧縮オプション1104とは、図10で説明したとおりであるので、説明を省略する。
一括送信用ライトコマンド1100は、ライトデータ毎に圧縮オプション1104を備えており、ライトデータ毎に圧縮要否フラグを設定できる。なぜなら、一括送信用ライトコマンド1100は1つのFMPK30に送信されるが、そのFMPK30が、例えば、暗号化属性を有する論理ボリューム140と暗号化属性を有さない論理ボリューム104とを構成している場合がある。この場合、ストレージコントローラ20は、暗号化属性を有する論理ボリューム140にライトされるデータに対応する圧縮要否フラグを「不要」に設定し、暗号化属性を有さない論理ボリューム140にライトされるデータに対応する圧縮要否フラグを「必要」に設定した一括送信用ライトコマンド1100を生成することができる。
一括送信用ライトコマンド1100は、ライトデータ毎に圧縮オプション1104を備えるのではなく、1つの圧縮オプションを備えるとしてもよい。この場合、例えば、FMPK30は、圧縮要否フラグが「必要」に設定されている場合に、全てのライトデータを圧縮し、圧縮要否フラグが「不要」に設定されている場合に、全てのライトデータを圧縮しない。
ストレージコントローラ20は、FMPK30の論理ボリューム140毎にダーティデータをまとめて一括送信用ライトコマンド1100を生成するとしてもよい。この場合、一括送信用ライトコマンド1100は、ライトデータ毎に圧縮オプションを備えるとしてもよいし、または、1つの圧縮オプションを備えるとしてもよい。
ストレージコントローラ20は、FMPK30に対して、圧縮が必要なダーティデータと、圧縮が不要なダーティデータとをそれぞれまとめた一括送信用ライトデータ1100を生成するとしてもよい。この場合、一括送信用ライトコマンド1100は、1つの圧縮オプションを備えるとしてもよい。
ストレージコントローラ20は、一括送信用ライトデータ1100によってまとめて送信可能なダーティデータの数の上限値を設けてもよい。
図20は、ストレージコントローラ20において一括送信用ライトコマンド1100を生成する処理の一例を示すフローチャートである。
ストレージコントローラ20は、一定の周期でこの処理を実行するとしてもよい。または、ストレージコントローラ20は、キャッシュ領域に格納されているダーティデータの合計サイズが所定以上となった場合に、この処理を実行するとしてもよい。例えば、ストレージコントローラ20は、キャッシュ領域に格納されているダーティデータの合計サイズが物理ページ422のサイズ以上となった場合に、この処理を実行する。または、ストレージコントローラ20は、ホスト計算機11から新たに受信したライトデータを、キャッシュ領域の容量不足によってそのキャッシュ領域にライトできなかった場合、この処理を実行するとしてもよい。以下、フローチャートを説明する。
ストレージコントローラ20は、所定のキャッシュ管理情報を参照し、キャッシュ領域に格納されているダーティデータを特定する(S501)。
ストレージコントローラ20は、その特定したダーティデータのライト先に割り当てられるチャンクのアドレス(論理ボリューム140におけるチャンクのアドレス)を基に、そのダーティデータの送信先となるFMPK30を特定する(S502)。
ストレージコントローラ20は、ダーティデータの送信先となるFMPK30毎に、一括送信用ライトコマンド1100を生成する(S503)。ストレージコントローラ20は、同じFMPK30に2つ以上のダーティデータを送信する場合、図19に示す一括送信用ライトコマンド1100を生成し、同じFMPK30に1つのダーティデータを送信する場合、図10に示すライトコマンド1000を生成するとしてもよい。
ストレージコントローラ20は、その生成した一括送信用ライトコマンド1100を、各FMPK30に送信する(S504)。
ストレージコントローラ20は、一部のFMPK30から完了応答を一定時間経っても受信しない場合又は失敗応答を受信した場合(S505:NO)、失敗したFMPK30を特定し、その失敗したFMPK30に対して再度ステップS503からの処理を実行する(S506)。
ストレージコントローラ20は、全てのFMPK30から完了応答を受信した場合(S505:YES)、当該処理を終了する(終了)。
以上の処理により、ストレージコントローラ20は、一括送信用ライトコマンド1100を生成し、その生成した一括送信用ライトコマンド1100を各FMPK30に送信することができる。
図21は、FMPKコントローラ31において一括送信用ライトデータ1100を受信した場合の処理例を示すフローチャートである。
FMPKコントローラ31は、ストレージコントローラ20から一括送信用ライトコマンド1100を受信すると、その一括送信用ライトコマンド1100に対応する複数のライトデータをいったんメモリ34に格納する(S601)。
FMPKコントローラ31は、一括送信用ライトコマンド1100において、圧縮要否フラグ「必要」に対応するライトデータと、圧縮要否フラグ「不要」に対応するライトデータとを分離し、各々のライトデータに対して以下の処理を実行する(S602)。
<圧縮要否フラグ「必要」に対応するライトデータの処理>
FMPKコントローラ31は、圧縮要否フラグが「必要」に対応するライトデータを一括で圧縮し、圧縮データを生成する(S603)。
FMPKコントローラ31は、圧縮要否フラグが「必要」に対応するライトデータを一括で圧縮し、圧縮データを生成する(S603)。
FMPKコントローラ31は、圧縮データのサイズ分の未割当の物理ページ422を確保する(S604)。この処理は、例えば、図16のステップS302と同様の処理である。
FMPKコントローラ31は、論理ページ412とその確保した物理ページ422との対応関係を、論理−物理ページマッピングテーブル310及び物理−論理ページマッピングテーブル330に反映する(S605)。この処理は、例えば、図16のステップS303と同様の処理である。
FMPKコントローラ31は、その確保した物理ページ422に圧縮データをライトする(S606)。この処理は、例えば、図16のステップS304と同様の処理である。
FMPKコントローラ31は、物理−論理ページマッピングテーブル330において、そのライト先の物理ページ422に対応するエントリの圧縮状態334に「済み」を格納し(S607)、当該処理を終了する(終了)。ここで、FMPKコントローラ31が、図16のステップS306の場合とは異なり圧縮状態334に「済み」を格納するのは、「同期圧縮モード」が設定されているからである。
<圧縮要否フラグが「不要」に対応するライトデータの処理>
FMPKコントローラ31は、ライトデータのサイズ分の未割当の物理ページ422を確保する(S611)。この処理は、例えば、図16のステップS302と同様の処理である。
FMPKコントローラ31は、ライトデータのサイズ分の未割当の物理ページ422を確保する(S611)。この処理は、例えば、図16のステップS302と同様の処理である。
FMPKコントローラ31は、論理ページ412とその確保した物理ページ422との対応関係を、論理−物理ページマッピングテーブル310及び物理−論理ページマッピングテーブル330に反映する(S612)。この処理は、例えば、図16のステップS303と同様の処理である。
FMPKコントローラ31は、その確保した物理ページ422にライトデータをライトする(S613)。この処理は、例えば、図16のステップS304と同様の処理である。
FMPKコントローラ31は、物理−論理ページマッピングテーブル330において、そのライトした物理ページ422に対応するエントリの圧縮状態334に「不要」を格納し(S614)、当該処理を終了する(終了)。この処理は、例えば、図16のステップS306と同様の処理である。
実施例2によれば、ストレージコントローラ20は、複数のダーティデータを、一回の一括送信用ライトコマンド1100で(又は少ない回数で)、FMPK30に送信することができる。これにより、複数のダーティデータを個別のライトコマンド1000で送信する場合と比べて、ストレージコントローラ20とFMPK30との間のデータ伝送帯域の消費量を抑制することができる。
また、FMPKコントローラ31は、複数のライトデータを一括で圧縮することができる。これにより、ダーティデータを個別に圧縮する場合と比べて、FMPKコントローラ31の処理負荷を軽減することができる。これらの効果は、ダーティデータのサイズが小さい場合(例えばページサイズよりも小さい場合)に、より高い効果を得ることができる。
圧縮機能を有するFMPK30は、複数のFMチップ39から構成される物理的な記憶領域(例えば1TB)よりも大きな論理的な記憶領域(例えば8TB)を、ストレージコントローラ20に提供することができる。
非同期圧縮モードの設定されているFMPKコントローラ31は、サイズの大きなデータのライトコマンド1000を受信すると、いったん、そのライトデータを圧縮せずに非圧縮で物理的な記憶領域にライトする。しかし、FMPKコントローラ31は、物理的な記憶領域にそのライトデータよりも大きな空き領域が存在しない場合、そのデータをライトすることができない。これに対して、同期圧縮モードの設定されているFMPKコントローラ31は、受信したライトデータを順次圧縮して物理的な記憶領域にライトするので、必ずしもそのライトデータよりも大きな空き容量が物理的な記憶領域に存在しなくてもよい。
そこで、本実施例では、FMPKコントローラ31に対して同期圧縮モード及び非同期圧縮モードの切り替えを指示できる「圧縮モード切替コマンド」を新たに導入する。そして、ストレージコントローラ20は、サイズの大きなデータのライトコマンド1000をFMPK30に送信する前に、FMPK30に同期圧縮モードへの切り替えを指示する圧縮モード切替コマンドを送信する。その後、ストレージコントローラ20は、ライトコマンド1000をFMPK30に送信する。FMPKコントローラ31は、圧縮モード切替コマンドを受信した場合、そこで指定された圧縮モードに従って、その後に受信したデータを圧縮して格納する。
または、上述のライトコマンド1000の圧縮オプション1004に、同期圧縮モード又は非同期圧縮モードの設定フラグを追加する。例えば、圧縮オプション1004には、上述の圧縮要否フラグと組み合わせて、「不要」、「非同期圧縮必要」、及び「同期圧縮必要」の何れかをセットできるとしてもよい。例えば、ストレージコントローラ20は、データのサイズが閾値よりも大きい場合、ライトコマンド1000の圧縮オプション1004に「同期圧縮必要」をセットしてFMPK30に送信する。FMPKコントローラ31は、圧縮オプション1004に「同期圧縮必要」が設定されている場合、同期圧縮モードでライトデータを圧縮してライトする。
サイズの大きなライトデータを一度に格納する場合とは、例えば、コレクションコピー、フォーマット及びボリュームのイニシャルコピー等が実行される場合である。コレクションコピーとは、RAID機能によるデータ復旧に係る処理であり、例えば、RAIDを構成する1つのドライブが故障したときに、スペアの記憶デバイス等にデータを回復させる処理である。フォーマットとは、ボリュームを初期化する処理であり、例えばボリューム全体にゼロデータを書き込む。ボリュームのイニシャルコピーとは、或るボリューム内の全てのデータを別のボリュームにコピーする処理である。
コレクションコピーは、FMPK30の単位で実行される。ストレージコントローラ20は、コレクションコピーを実行する場合、処理対象のFMPK30に所定のコマンドを送信する。
ボリュームのイニシャルコピーは、ボリュームの単位で実行される。ストレージコントローラ20は、ボリュームのイニシャルコピーを実行する場合、ボリュームを構成する複数のFMPK30を特定し、それら特定した複数のFMPK30の各々に所定のコマンドを送信する。
図22は、圧縮モード切替コマンドを導入した場合のストレージコントローラ20における処理の一例を示すフローチャートである。
ストレージコントローラ20は、ライトデータのサイズが閾値以上であるか否かを判定する(S1001)。この閾値は、所定値であってもよいし、または、ライト対象のFMPK30の空き容量に基づいて決定される値(例えば、空き容量の90%の値)であってもよい。
「ライトデータのサイズ<閾値」である場合(S1001:NO)、ストレージコントローラ20は、ライト対象のFMPK30にライトコマンド1000を送信し(S1006)、処理を終了する(終了)。
「ライトデータのサイズ≧閾値」である場合(S1001:YES)、ストレージコントローラ20は、ライト対象のFMPK30が非同期圧縮モードであるか否かを判定する(S1002)。ここで、ストレージコントローラ20は、各FMPK30の圧縮モードを所定のテーブルで管理する構成をとってもよいし、または、毎回FMPK30に圧縮モードを問い合わせる構成をとってもよい。
ライト対象のFMPK30が非同期圧縮モードであった場合(S1002:非同期)、ストレージコントローラ20は、ライト対象のFMPK30に、同期圧縮モードへの変更を指示する「圧縮モード切替コマンド」を送信し(S1003)、ステップS1004に進む。
ライト対象のFMPK30が同期圧縮モードであった場合(S1002:同期)、ストレージコントローラ20は、そのままステップS1004に進む。つまり、ステップS1004の段階でライト対象のFMPK30は、同期圧縮モードとなっている。
ストレージコントローラ20は、ライト対象のFMPK30に、圧縮要否フラグに「必要」を設定したライトコマンドを送信する(S1004)。このライトコマンドを受信したFMPK30は、同期圧縮モードでデータを圧縮してFMチップ39にライトする。
その後(例えば、FMPK30から完了応答を受信した後)、ストレージコントローラ20は、ライト対象のFMPK30に、非同期圧縮モードへの変更を指示する「圧縮モード切替コマンド」を送信し(S1005)、当該処理を終了する(終了)。
ストレージコントローラ20は、コレクションコピー、フォーマット、又はボリュームのイニシャルコピー等が要求されたことを契機として、ステップS1002以降の処理を実行するとしてもよい。
FMPK30は、圧縮モード切替コマンドで「同期圧縮モード」が指示された場合には、その後に受信したライトコマンドが圧縮要否フラグ「不要」または圧縮オプションを含まない場合であってもライトデータを圧縮してライトするとしてもよい。
図23は、圧縮オプション1004に圧縮モードのフラグを追加した場合のストレージコントローラ20における処理の一例を示すフローチャートである。
ストレージコントローラ20は、ライトデータのサイズが閾値以上であるか否かを判定する(S1101)。これは、図22のステップS1001と同様の処理である。
「ライトデータのサイズ<閾値」である場合(S1101:NO)、ストレージコントローラ20は、ステップS1104の処理に進む。
「ライトデータのサイズ≧閾値」である場合(S1101:YES)、ストレージコントローラ20は、ライト対象のFMPK30が非同期圧縮モードであるか否かを判定する(S1102)。ここで、ライト対象のFMPK30が非同期圧縮モードにしか対応していない場合、ストレージコントローラ20は、このステップS1102を省略し、ステップS1103に進んでもよい。
ライト対象のFMPK30が非同期圧縮モードであった場合(S1102:非同期)、ストレージコントローラ20は、圧縮オプション1004に「同期圧縮必要」をセットしたライトコマンド1000を生成してライト対象のFMPK30に送信し(S1003)、当該処理を終了する(終了)。このライトコマンド1000を受信したFMPK30は、同期圧縮モードでデータをライトする。このとき、FMPK30は、このライトコマンドに対応するデータのみ同期圧縮モードでライトするとしてもよい。
ライト対象のFMPK30が同期圧縮モードであった場合(S1102:同期)、又はステップS1102において「ライトデータのサイズ<閾値」であった場合(S1101:NO)、ストレージコントローラ20は、「非同期圧縮必要」をセットしたライトコマンドを生成してライト対象のFMPK30に送信し(S1104)、当該処理を終了する(終了)。
実施例3に係る構成は、実施例2に示した一括送信用ライトコマンド1100にも適用可能である。
実施例3によれば、ストレージコントローラ20は、FMPK30にライトするデータのサイズに応じて、そのFMPK30の同期圧縮モードと非同期圧縮モードとを切り替えることができる。つまり、FMPK30の空き容量が少ない場合であっても、サイズの大きなデータをそのFMPK30に格納することができる。
上述した実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
10…ストレージシステム 11…ホスト計算機 12…管理装置 20…ストレージコントローラ 30…FMPK(Flash Memory Package)
Claims (10)
- 記憶媒体とその記憶媒体に格納するデータを圧縮する媒体コントローラとをそれぞれが有する複数の記憶デバイスと、
ホスト計算機から第1のデータを伴う第1のライト要求を受信し、前記複数の記憶デバイスのうち、前記第1のライト要求に従うライト先の記憶デバイスに、前記第1のデータに基づく第2のデータを伴うライトコマンドであって前記第2のデータの圧縮要否を示す圧縮要否情報を含んだ第1のライトコマンドを送信するストレージコントローラと
を備え、
前記ライト先の記憶デバイスの媒体コントローラは、前記ストレージコントローラから前記第1のライトコマンドを受信し、前記第1のライトコマンドに含まれる圧縮要否情報が圧縮不要を示している場合、前記第2のデータを圧縮せずに前記記憶媒体に格納し、
前記複数の記憶デバイスの各々は、
前記ストレージコントローラから受信したライトコマンド内の圧縮要否情報が圧縮要を示していればそのライトコマンドに付随するデータを圧縮して前記記憶媒体にライトする同期圧縮モードと、そのライトコマンド内の圧縮要否情報が圧縮要を示していてもそのライトコマンドに付随するデータを圧縮せずに前記記憶媒体にライトし、後にそのデータを前記記憶媒体からリードし圧縮して前記記憶媒体にライトする非同期圧縮モードと、を有しており、
前記ストレージコントローラは、
前記ライト先の記憶デバイスに対して、前記第2のデータを前記同期圧縮モード又は前記非同期圧縮モードの何れで圧縮すべきかを指示する
ストレージシステム。 - 前記複数の記憶デバイスの各々における媒体コントローラは、前記ストレージコントローラからのライトコマンドを受けること無しに前記記憶媒体の或る領域に保持されているデータを前記記憶媒体の別の領域に移動する内部移動処理を行うようになっており、前記記憶媒体に格納されているデータのうち、非同期圧縮モードに対応したデータを移動対象のデータとし、
前記内部移動処理において、非同期圧縮モードに対応したデータの移動は、前記記憶媒体からリードされ圧縮されて前記記憶媒体にライトされることである
請求項1に記載のストレージシステム。 - 前記第1のライトコマンドには、前記同期圧縮モード又は前記非同期圧縮モードの何れで圧縮すべきかを示す圧縮モード情報が含まれており、
前記ライト先の記憶デバイスは、
前記第1のライトコマンドに含まれている前記圧縮モード情報が示す圧縮モードに従い、前記第2のデータを圧縮する
請求項1に記載のストレージシステム。 - 前記ストレージコントローラは、
前記第2のデータのサイズが閾値以上である場合、前記圧縮モード情報を、前記同期圧縮モードを示す情報とする
請求項3に記載のストレージシステム。 - 記憶媒体とその記憶媒体に格納するデータを圧縮する媒体コントローラとをそれぞれが有する複数の記憶デバイスと、
ホスト計算機に対して論理ボリュームを提供し、前記ホスト計算機から第1のデータと前記論理ボリュームにおける前記第1のデータのライト先の領域のアドレスとを伴う第1のライト要求を受信し、前記複数の記憶デバイスのうち、前記第1のライト要求に従う前記ライト先の領域又は前記ライト先の領域に割り当てられた領域の基になっているライト先の記憶デバイスに、前記第1のデータに基づく第2のデータを伴うライトコマンドであって前記第2のデータの圧縮要否を示す圧縮要否情報を含んだ第1のライトコマンドを送信するストレージコントローラと
を備え、
前記ストレージコントローラは、前記ホスト計算機から設定された前記論理ボリュームの属性に基づいて圧縮要否を判定し、前記論理ボリュームの属性に暗号化又は圧縮化が設定されている場合、圧縮不要を示す圧縮要否情報を前記第1のライトコマンドに含め、
前記ライト先の記憶デバイスの媒体コントローラは、前記ストレージコントローラから前記第1のライトコマンドを受信し、前記第1のライトコマンドに含まれる圧縮要否情報が圧縮不要を示している場合、前記第2のデータを圧縮せずに前記記憶媒体に格納する
ストレージシステム。 - 前記第1のライトコマンドは、前記第2のデータを含む複数のデータのライトを指示するライトコマンドであって、前記複数のデータの各々について圧縮要否情報を含む
請求項5に記載のストレージシステム。 - 前記ライト先の記憶デバイスは、
前記第1のライトコマンドに含まれる複数の圧縮要否情報の何れかが圧縮必要を示す場合、前記第1のライトコマンドに付随する複数のデータのうち圧縮必要である1又は2以上のデータをまとめて圧縮して前記記憶媒体にライトする
請求項6に記載のストレージシステム。 - 前記記憶媒体が、フラッシュメモリである
請求項5乃至7の何れか1項に記載のストレージシステム。 - 記憶媒体とその記憶媒体に格納するデータを圧縮する媒体コントローラとをそれぞれが有する複数の記憶デバイスと、ストレージコントローラとを備えるストレージシステムにおけるデータライト方法であって、
ストレージコントローラが、ホスト計算機から第1のデータを伴う第1のライト要求を受信し、前記複数の記憶デバイスのうち、前記第1のライト要求に従うライト先の記憶デバイスに、前記第1のデータに基づく第2のデータを伴うライトコマンドであって前記第2のデータの圧縮要否を示す圧縮要否情報を含んだ第1のライトコマンドを送信し、
前記ライト先の記憶デバイスの媒体コントローラが、前記ストレージコントローラから前記第1のライトコマンドを受信し、前記第1のライトコマンドに含まれる圧縮要否情報が圧縮不要を示している場合、前記第2のデータを圧縮せずに前記記憶媒体に格納し、
前記複数の記憶デバイスの各々は、
前記ストレージコントローラから受信したライトコマンド内の圧縮要否情報が圧縮要を示していればそのライトコマンドに付随するデータを圧縮して前記記憶媒体にライトする同期圧縮モードと、そのライトコマンド内の圧縮要否情報が圧縮要を示していてもそのライトコマンドに付随するデータを圧縮せずに前記記憶媒体にライトし、後にそのデータを前記記憶媒体からリードし圧縮して前記記憶媒体にライトする非同期圧縮モードと、を有しており、
前記ストレージコントローラは、
前記ライト先の記憶デバイスに対して、前記第2のデータを前記同期圧縮モード又は前記非同期圧縮モードの何れで圧縮すべきかを指示する
データライト方法。 - 記憶媒体とその記憶媒体に格納するデータを圧縮する媒体コントローラとをそれぞれが有する複数の記憶デバイスと、ストレージコントローラとを備えるストレージシステムにおけるデータライト方法であって、
ストレージコントローラが、ホスト計算機に対して論理ボリュームを提供し、前記ホスト計算機から第1のデータと前記論理ボリュームにおける前記第1のデータのライト先の領域のアドレスとを伴う第1のライト要求を受信し、前記複数の記憶デバイスのうち、前記第1のライト要求に従う前記ライト先の領域又は前記ライト先の領域に割り当てられた領域の基になっているライト先の記憶デバイスに、前記第1のデータに基づく第2のデータを伴うライトコマンドであって前記第2のデータの圧縮要否を示す圧縮要否情報を含んだ第1のライトコマンドを送信し、
前記ストレージコントローラは、前記ホスト計算機から設定された前記論理ボリュームの属性に基づいて圧縮要否を判定し、前記論理ボリュームの属性に暗号化又は圧縮化が設定されている場合、圧縮不要を示す圧縮要否情報を前記第1のライトコマンドに含め、
前記ライト先の記憶デバイスの媒体コントローラは、前記ストレージコントローラから前記第1のライトコマンドを受信し、前記第1のライトコマンドに含まれる圧縮要否情報が圧縮不要を示している場合、前記第2のデータを圧縮せずに前記記憶媒体に格納する
データライト方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/070821 WO2015015611A1 (ja) | 2013-07-31 | 2013-07-31 | ストレージシステム及びデータライト方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6007332B2 true JP6007332B2 (ja) | 2016-10-12 |
JPWO2015015611A1 JPWO2015015611A1 (ja) | 2017-03-02 |
Family
ID=52431183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015529282A Expired - Fee Related JP6007332B2 (ja) | 2013-07-31 | 2013-07-31 | ストレージシステム及びデータライト方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10146435B2 (ja) |
JP (1) | JP6007332B2 (ja) |
WO (1) | WO2015015611A1 (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102114388B1 (ko) | 2013-10-18 | 2020-06-05 | 삼성전자주식회사 | 전자 장치의 메모리 압축 방법 및 장치 |
US9720821B2 (en) * | 2014-09-17 | 2017-08-01 | Storart Technology Co. Ltd. | Adaptive compression data storing method for non-volatile memories and system using the same |
US9933838B2 (en) * | 2014-09-24 | 2018-04-03 | Seagate Technology Llc | Power management in a storage compute device |
US9354812B1 (en) * | 2015-02-12 | 2016-05-31 | Qualcomm Incorporated | Dynamic memory utilization in a system on a chip |
JP6460940B2 (ja) * | 2015-08-06 | 2019-01-30 | 東芝メモリ株式会社 | 記憶装置およびデータ退避方法 |
US9898223B2 (en) * | 2016-03-28 | 2018-02-20 | International Business Machines Corporation | Small storage volume management |
CA3028821C (en) | 2016-06-24 | 2023-01-24 | Huawei Technologies Co., Ltd. | Data processing method, storage apparatus, solid state disk, and storage system |
JP6553566B2 (ja) * | 2016-09-23 | 2019-07-31 | 東芝メモリ株式会社 | メモリシステムおよび制御方法 |
KR20190073824A (ko) * | 2017-12-19 | 2019-06-27 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN110413212B (zh) * | 2018-04-28 | 2023-09-19 | 伊姆西Ip控股有限责任公司 | 识别待写入数据中的可简化内容的方法、设备和计算机程序产品 |
US11314555B2 (en) * | 2019-08-26 | 2022-04-26 | International Business Machines Corporation | Synchronous re-execution of a data transformation operation to obtain further details regarding an exception |
KR20220032826A (ko) * | 2020-09-08 | 2022-03-15 | 에스케이하이닉스 주식회사 | 메모리 시스템 내 맵 정보를 제어 및 저장하는 장치 및 방법 |
US11853568B2 (en) * | 2020-10-21 | 2023-12-26 | EMC IP Holding Company LLC | Front-end offload of storage system hash and compression processing |
CN114691020A (zh) * | 2020-12-30 | 2022-07-01 | 上海曼卜信息科技有限公司 | 基于zns标准提供数据压缩存储设备及其方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080263244A1 (en) * | 2007-04-17 | 2008-10-23 | Makio Mizuno | Compression control device and method |
WO2012124100A1 (ja) * | 2011-03-17 | 2012-09-20 | 富士通株式会社 | 情報処理装置、ストレージシステムおよび書き込み制御方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8533550B2 (en) | 2010-06-29 | 2013-09-10 | Intel Corporation | Method and system to improve the performance and/or reliability of a solid-state drive |
-
2013
- 2013-07-31 US US14/766,847 patent/US10146435B2/en active Active
- 2013-07-31 JP JP2015529282A patent/JP6007332B2/ja not_active Expired - Fee Related
- 2013-07-31 WO PCT/JP2013/070821 patent/WO2015015611A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080263244A1 (en) * | 2007-04-17 | 2008-10-23 | Makio Mizuno | Compression control device and method |
JP2008269050A (ja) * | 2007-04-17 | 2008-11-06 | Hitachi Ltd | 圧縮制御装置及び方法 |
WO2012124100A1 (ja) * | 2011-03-17 | 2012-09-20 | 富士通株式会社 | 情報処理装置、ストレージシステムおよび書き込み制御方法 |
Also Published As
Publication number | Publication date |
---|---|
US10146435B2 (en) | 2018-12-04 |
WO2015015611A1 (ja) | 2015-02-05 |
US20160011786A1 (en) | 2016-01-14 |
JPWO2015015611A1 (ja) | 2017-03-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6007332B2 (ja) | ストレージシステム及びデータライト方法 | |
JP5937697B2 (ja) | ストレージシステム | |
JP6073471B2 (ja) | ストレージ装置 | |
JP5722500B2 (ja) | リモートコピーシステム、及びリモートコピー制御方法 | |
KR101086857B1 (ko) | 데이터 머지를 수행하는 반도체 스토리지 시스템의 제어 방법 | |
KR101478168B1 (ko) | 스토리지 시스템 및 스토리지 시스템의 쓰기 데이터 처리 방법 | |
TWI635392B (zh) | Information processing device, storage device and information processing system | |
JP6062060B2 (ja) | ストレージ装置、ストレージシステム、及びストレージ装置制御方法 | |
US20130114339A1 (en) | Storage apparatus and data control method | |
EP2631916A1 (en) | Data deletion method and device | |
JP2010152516A (ja) | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 | |
WO2014155525A1 (ja) | ストレージシステム及び制御方法 | |
WO2016056104A1 (ja) | ストレージ装置、及び、記憶制御方法 | |
TWI790628B (zh) | 記憶體系統及控制方法 | |
KR101369408B1 (ko) | 스토리지 시스템 및 이의 데이터 전송 방법 | |
US11210214B2 (en) | Storage system and compression method of storing compressed data from storage controller physical address space to logical and physical address space of nonvolatile memory | |
WO2016194979A1 (ja) | ストレージシステム、ストレージ制御装置、ストレージ制御方法及びプログラム | |
JP6817340B2 (ja) | 計算機 | |
US20110264848A1 (en) | Data recording device | |
JP5910596B2 (ja) | ストレージ管理システム、ストレージ管理方法、プログラム、および、情報処理システム | |
JP6163588B2 (ja) | ストレージシステム | |
KR20210142863A (ko) | 데이터 처리 시스템의 동작 효율성을 높이기 위한 장치 및 방법 | |
KR20110096829A (ko) | 반도체 메모리장치 및 그 제어방법 | |
JP6276208B2 (ja) | メモリシステム及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160727 |
|
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: 20160823 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160912 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6007332 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |