JP2019079113A - ストレージ装置、データ管理方法、及びデータ管理プログラム - Google Patents
ストレージ装置、データ管理方法、及びデータ管理プログラム Download PDFInfo
- Publication number
- JP2019079113A JP2019079113A JP2017203499A JP2017203499A JP2019079113A JP 2019079113 A JP2019079113 A JP 2019079113A JP 2017203499 A JP2017203499 A JP 2017203499A JP 2017203499 A JP2017203499 A JP 2017203499A JP 2019079113 A JP2019079113 A JP 2019079113A
- Authority
- JP
- Japan
- Prior art keywords
- data
- algorithm
- compression
- storage
- compression unit
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only 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/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
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)
- Memory System (AREA)
Abstract
【課題】データを圧縮して適切に管理できるようにする。【解決手段】データを格納可能なFMチップを備える1以上のFMPK113と、FMPK113に対する所定のライト要求のライトデータの格納を制御するストレージコントローラ109とを備えるストレージ装置104において、FMPK113は、第1圧縮アルゴリズムと異なる第2圧縮アルゴリズムによりデータを圧縮させる圧縮伸長回路を備え、ストレージコントローラ109は、第1圧縮アルゴリズムによりデータを圧縮させ、所定の条件に基づいて、ライトデータを、ストレージコントローラ109と、圧縮伸長回路とのいずれにより圧縮させるかを決定し、決定したストレージコントローラ109又は圧縮伸長回路によりライトデータを圧縮させてFMPK113に格納させるように構成する。【選択図】図2
Description
本発明は、データを圧縮させて管理するストレージ装置等に関する。
オールフラッシュアレイ(AFA:All Flash Array)などのフラッシュストレージ装置の価格はフラッシュメモリの媒体コストによって決まるが、フラッシュメモリのビットコストは依然として高価である。オールフラッシュアレイでは、圧縮をはじめとする種々の技術によってフラッシュメモリの物理容量を削減することでビットコストの低減を図っている。
ストレージ装置に採用されている圧縮アルゴリズムは数種類あり、各圧縮アルゴリズムは、圧縮伸長速度、圧縮率、圧縮伸長処理に必要なメモリ量などの特徴が異なる。
従来、ストレージ装置の圧縮機能としては、いずれか1つの圧縮アルゴリズムが選択されて採用されている。
ストレージ装置における圧縮データを格納する技術としては、例えば、特許文献1に記載の技術が知られている。
また、圧縮機能を実装しているフラッシュストレージ装置が知られているが、フラッシュストレージ装置では、追記型のログストラクチャード方式によるデータ格納方法が採用されている。このログストラクチャード方式によるデータ格納方法によると、フラッシュストレージ装置での上書きライト処理は、旧データ(更新前のデータ)が書き込まれた記憶領域(ストレージ装置のストレージコントローラが管理している記憶領域)ではなく、上書きライトデータ用にストレージコントローラにより新たに確保された記憶領域に上書きライトデータを書き込む(追記)する。旧データが格納された記憶領域は、データが新たに書き込めない無効領域、即ちガベージとなる。フラッシュストレージ装置においては、ガベージが一定量たまった時、ストレージコントローラによりガベージコレクション(GC)処理が実行されて、ガベージが新たにデータを書き込むことのできる空き領域とされる。
ストレージ装置において或る圧縮アルリズムが採用されている場合には、この採用した圧縮アルゴリズムの特性によって、実現できる圧縮率や、圧縮処理や伸長処理における負荷等が決まってしまう。ストレージ装置に格納するデータの性質(例えば、高アクセス頻度、低アクセス頻度等)によっては、ストレージ装置における容量効率を向上したい場合や、圧縮処理や伸長処理における負荷を軽減したいということが考えられるが、採用している圧縮アルゴリズムによって制限されてしまう虞がある。
本発明は、上記事情に鑑みなされたものであり、その目的は、ストレージ装置において、データを圧縮して適切に管理することのできる技術を提供することにある。
上記目的を達成するため、一観点に係るストレージ装置は、データを格納可能な不揮発記録媒体を備える1以上の不揮発メモリパッケージと、不揮発メモリパッケージに対する所定のライト要求のライトデータの格納を制御するストレージコントローラとを備えるストレージ装置であって、第1圧縮アルゴリズムによりデータを圧縮させる第1データ圧縮部と、第1圧縮アルゴリズムと異なる第2圧縮アルゴリズムによりデータを圧縮させる第2データ圧縮部と、を備え、ストレージコントローラは、所定の条件に基づいて、ライトデータを、第1データ圧縮部又は第2データ圧縮部のいずれにより圧縮させるかを決定し、決定した第1データ圧縮部又は第2データ圧縮部によりライトデータを圧縮させて不揮発メモリパッケージに格納させる。
本発明によれば、データを圧縮して適切に管理することができる。
実施形態について、図面を参照して説明する。なお、以下に説明する実施形態は特許請求の範囲に係る発明を限定するものではなく、また実施形態の中で説明されている諸要素及びその組み合わせの全てが発明の解決手段に必須であるとは限らない。
以下の説明では、実施形態に係る情報を、例えば、テーブルよるデータ構造で表現して説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくてもよく、「リスト」、「DB(データベース)」、「キュー」等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「DB」、「キュー」等については、単に「情報」と呼ぶこともできる。また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ID」「番号」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
また、以下の説明では「プログラム」を動作の主体として説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行うため、プロセッサを主体とした説明としてもよく、コントローラを主体とした説明としてもよい。
また、プログラムを主語として開示された処理は、ストレージ装置等の計算機(コンピュータ、情報処理装置)が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディア(例えば、不揮発性記録メディア)によって各計算機にインストールされてもよい。
また、リード/ライト処理を読み出し/書き込み処理または更新処理と記載することがある。これらの処理をまとめてアクセス要求アクセス処理と記載することもある。
また、「圧縮」とは、例えばLZWアルゴリズム等の可逆圧縮アルゴリズムを用いて、データの意味を保ったままデータサイズを縮小することを意味する。実施形態に係る計算機システムでは、ストレージ装置内において、ホストから書き込まれるデータの圧縮を行うことがある。ストレージ装置で圧縮処理が行われたことによりサイズが縮小されたデータのことを、「圧縮データ」と呼び、ストレージ装置で圧縮処理が施されていないデータの事を「非圧縮データ」と呼ぶ。また可逆圧縮アルゴリズムを用いて、圧縮データを元のデータサイズに戻すことを、「伸長」と呼ぶ。
また、以下の説明では、データ圧縮によるデータサイズの縮小効率の指標として、「圧縮率」を用いる。本明細書における圧縮率は、以下の計算式により定義されるものである。
圧縮率=圧縮データのサイズ÷非圧縮データのサイズ
圧縮率=圧縮データのサイズ÷非圧縮データのサイズ
また、「更新」とは、記憶領域に格納されているデータの内容を新しい内容に書き換える(上書きする)ことを意味する。或る記憶領域が更新される前に、その記憶領域に格納されていたデータは、「更新前データ」と呼ばれる。一方その記憶領域に新たに書き込まれるデータのことは、「更新データ」または「更新後データ」と呼ばれる。
また、以下の説明では、「RAID」は、Redundant Array of Independent (or Inexpensive) Disksの略である。RAID Group(RAIDグループ)は、複数の物理デバイス(典型的には同種の物理デバイス)で構成され、そのRAID Groupに関連付けられたRAIDレベルに従いデータを記憶する。RAID Groupは、パリティグループと呼ばれてもよい。パリティグループは、例えば、パリティを格納するRAID Groupのことでよい。
まず、第1実施形態に係るデータ管理方法の概要を説明する。
図1は、第1実施形態に係るデータ管理方法の概要を示すフローチャートである。
ストレージ装置104(図2参照)は、上位計算機(例えば、ホスト計算機101)から、ストレージ装置104で記憶しているボリュームに対するユーザからの上書きライト要求を受信する。ストレージ装置104は、上書きライト要求を受信すると、上書きライト要求の対象のデータ(ライトデータ)のライト先となるページ(ライト対象ページ)についてのI/O要求の頻度であるアクセス頻度情報を参照する(S10)。ここで、上書きライト要求とは、ライトデータが既に格納されているボリュームの箇所に対してライトデータをライトさせるライト要求のことである。
次いで、ストレージ装置104は、ライト対象ページのアクセス頻度が、予め設定されている閾値より高いか否かを判定する(S20)。
この結果、アクセス頻度が閾値よりも高い場合(S20:YES)には、ストレージ装置104は、ライト対象ページをアクセス頻度が高いページと判断し、フラッシュメモリパッケージ(FMPK)113(図2参照)側に、ライトデータの圧縮処理をオフロードする(S30)一方、ライト対象ページのアクセス頻度が低い場合(S20:NO)には、ストレージ装置104は、ストレージコントローラ109側(ストレージコントローラ109又はストレージコントローラ109とバスを介して接続された回路等)でライトデータの圧縮処理を行う(S40)。本実施形態においては、FMPK113で実行される圧縮処理と、ストレージコントローラ109側で実行される圧縮処理とは、異なる圧縮アルゴリズムであり、ライト対象ページのアクセス頻度に基づいて、いずれの圧縮アルゴリズムによる圧縮処理を実行するかを選択し、その圧縮アルゴリズムによりライトデータを圧縮した後、FMPK113のFMチップ280(図3参照)に格納する。
次に、第1実施形態に係る計算機システムについて詳細に説明する。
図2は、第1実施形態に係る計算機システムの全体構成図である。
計算機システム100は、1以上のホスト計算機(ホストという)101と、1以上の管理装置102と、ストレージ装置104とを備える。ホスト101と、管理装置102と、ストレージ装置104とは、ネットワーク103を介して接続されている。ネットワーク103は、例えば、LAN(Local Area Network)や、WAN(Wide Area Network)であってもよい。また、ホスト101とストレージ装置104とを接続するネットワークと、管理装置102とストレージ装置104とを接続するネットワークとを別のネットワークとしてもよい。また、計算機システム100に管理装置102を備えないようにしてもよい。
ホスト101は、例えば、汎用大型コンピュータやサーバや汎用のハードウェアコンポーネントから構成される装置や汎用サーバなどで構成してもよく、アプリケーションプログラムを実行する計算機である。ホスト101は、ストレージ装置104が提供する論理的な記憶領域(仮想ボリューム)にネットワーク103経由でアクセスする。ホスト101は、ストレージ装置104に対して、アクセスコマンドであるリードコマンド(リード要求)やライトコマンド(ライト要求)を発行することで、ストレージ装置104の仮想ボリュームに格納されたデータにアクセスする。
管理装置102は、例えば、管理計算機やサーバや汎用のハードウェアコンポーネントから構成される装置や汎用サーバなどで構成してもよく、ストレージ装置104の記憶領域の構成を管理する。
ストレージ装置104は、FMPK113の記憶領域にデータを格納する。ストレージ装置104は、ホスト101に対して1以上のボリューム(仮想ボリューム又は論理ボリューム)を提供する。
ストレージ装置104は、ホストインターフェイス(I/F)106、保守I/F107、ストレージコントローラ109、キャッシュメモリ110、共有メモリ111、ドライブインターフェイス(I/F)108、不揮発メモリパッケージの一例としてのFMPK113(113A〜113D)を含む。これらのハードウェアの構成要素は、冗長化されていてもよい。これら構成要素は、バス112によって相互接続されている。なお、ストレージ装置104からFMPK113を除いた構成とし、この構成のストレージ装置104と、FMPK113とを図示しない外部ネットワークを介して接続するようにしてもよい。
ホストI/F106は、ストレージ装置104がホスト101等のイニシエータと通信するために用いられるインターフェイスデバイスである。ホストI/F106は、ネットワーク103を介してホスト101との間でデータを送受信する。ホスト101がボリュームにアクセスするために発行するコマンドは、ホストI/F106に到来する。また、ストレージ装置104は、ホスト101にホストI/F106から情報(応答)を返す。
保守I/F107は、ストレージ装置104が管理装置102と通信するためのインターフェイスデバイスである。保守I/F107は、ネットワーク103を介してホスト101、又は、管理装置102との間でシステム管理上必要なデータ(管理情報)を送受信する。管理装置102からのコマンドは保守I/F107に到来する。また、ストレージ装置104は、管理装置102に保守I/F107から情報(応答)を返す。
ストレージコントローラ109は、プロセッサ105と、プロセッサ105と接続されたローカルメモリ114とを備える。ローカルメモリ114は、例えばRAM等で構成され、プロセッサ105に使用されるプログラムやデータ等を格納する。プロセッサ105は、共有メモリ111に格納されているプログラムをローカルメモリ114に読み込んで、そのプログラムに記述されている処理を実行する。プロセッサ105が実行するプログラムとしては、例えば、所定の圧縮アルゴリズムに従うデータの圧縮処理及び伸長処理(圧縮伸長処理)を実行する圧縮伸長プログラムがある。本実施形態では、プロセッサ105が圧縮伸長プログラムを実行することにより、データの圧縮伸長処理を実行するようにしているが、本発明はこれに限られず、例えば、圧縮伸長処理を実行するハードウェア回路をストレージコントローラ109内や、バス112に接続するようにし、この回路により圧縮伸長処理を実行するようにしてもよい、
共有メモリ111は、例えば、ハードディスクやフラッシュメモリ等の不揮発性メモリで構成され、プロセッサ105に実行されるプログラムや構成情報等を格納する。なお、共有メモリ111を、DRAM、SRAM等の揮発性メモリ又は不揮発性メモリで構成してもよい。
キャッシュメモリ110は、例えば、DRAM、SRAM等の揮発性メモリ又は不揮発性メモリで構成され、仮想ボリューム(FMPK113)に対するライトデータ、又は仮想ボリューム(FMPK113)から読み出されたデータ(リードデータ)を一時的に記憶する。
キャッシュメモリ110と共有メモリ111は、コントローラ109内のローカルメモリ114と異なり、任意のコントローラ109のプロセッサ105からアクセス可能である。
ドライブI/F108は、FMPK113との間でデータを送受信する。なお、ストレージ装置104に、保守I/F107と異なるネットワークI/Fを設け、このネットワークI/F及びネットワークを介して外部のストレージ装置を接続するようにしてもよい。この場合には、外部のストレージ装置から提供される記憶領域を、ストレージ装置104で管理する、後述するプールの少なくとも一部の記憶領域としてもよい。
FMPK113は、ホスト101からのライトデータを最終的に格納するための不揮発性記憶媒体を含む記憶デバイスである。ストレージコントローラ109は、一台のFMPK113が故障しても、そのFMPK113のデータを復元できるRAID機能をもっていてもよい。この場合には、複数のFMPK113が、1つのRAIDグループ(パリティグループ)308を構成する。
FMPK113は、不揮発記録媒体として、例えば、1以上のフラッシュメモリチップ280(図3参照)を有する。FMPK113の一例としては、例えば、SSD(Solid State Drive)がある。
FMPK113は、ライトデータを圧縮して自身の記憶媒体に格納する機能(圧縮機能)を有してもよい。複数のFMPK113は、RAIDグループに基づいて1つ以上の論理記憶領域(論理ボリューム)を提供する。論理ボリュームは、RAIDグループのFMPK113が有する物理的な記憶領域と関連付けられる。
次に、FMPK113について詳細に説明する。
図3は、第1実施形態に係るフラッシュメモリパッケージの構成図である。
FMPK113は、フラッシュメモリ(FM)コントローラ210と、データを記憶するための不揮発記憶媒体である複数のフラッシュメモリ(FM)チップ280とを備える。
FMコントローラ210は、ドライブインターフェイス(I/F)211、プロセッサ213、メモリ214、フラッシュインターフェイス(I/F)215、圧縮伸長回路216を含む。これら構成要素は、内部ネットワーク212を介して相互接続されている。なお、圧縮伸長回路216を備えていなくてもよい。
ドライブI/F211は、ストレージ装置104のストレージコントローラ109と通信するためのインターフェイスデバイスである。フラッシュI/F215は、FMコントローラ210がFMチップ280と通信するためのインターフェイスデバイスである。
メモリ214は、プロセッサ213が実行するプログラムや、プロセッサ213が使用する制御情報等を格納する。
プロセッサ213は、FMPK113のメモリ214に格納されたプログラムを実行することにより、各種処理(例えば、後述する記憶領域の管理、ストレージコントローラ109からのアクセス要求に対応する処理等)を実行する。例えば、プロセッサ213は、ストレージコントローラ109からリード要求又はライト要求を受け付け、受けた要求に従う処理を実行する。プロセッサ213は、ストレージコントローラ109からライト要求を受け、そのライト要求に従うデータをFMチップ280に書き込んだ段階で、そのライト要求を完了し、ライト要求の完了をストレージコントローラ109に報告するようにしてもよい。また、プロセッサ213は、ストレージコントローラ109とFMチップ280との間でリード又はライトされるデータをバッファ(図示せず)に一時的に格納してもよい。また、プロセッサ213は、ストレージコントローラ109からのライト要求に従うデータを、バッファに書き込んだ段階で、そのライト要求の完了報告をストレージコントローラ109に送信してもよい。
圧縮伸長回路216は、データの圧縮処理及び伸長処理を行うデバイスである。圧縮伸長回路216は、例えば、ASIC(Application Specific Integrated Circuit)等のハードウェアで実装される。なお、圧縮伸長回路216を、CPUとメモリとで構成してもよい。この場合、CPUがデータ圧縮及び/又は伸長処理を行うためのプログラムを実行することにより、データの圧縮または伸長処理を行うようにすればよい。また、プロセッサ213がデータ圧縮及び/又は伸長処理を行うためのプログラムを実行することにより、データの圧縮処理及び/又は伸長処理を行うようにしてもよい。このようにした場合には、FMコントローラ210内に圧縮伸長回路216を備えなくてもよい。
上記した計算機システム100において、複数の圧縮アルゴリズムによる圧縮伸長処理を実行可能にする場合、圧縮伸長処理を実行する構成としては、以下の3つの組合せが考えられる。
1.ストレージコントローラ109側(ストレージコントローラ109内又は、ストレージコントローラ109とバス112を介して接続された範囲)と、FMPK113内とのそれぞれの圧縮伸長処理を実行する機能を利用する構成。
2.ストレージコントローラ109側の複数の圧縮伸長処理を実行する機能を利用する構成。
3.FMPK113内の複数の圧縮伸長処理を実行する機能を利用する構成。
2.ストレージコントローラ109側の複数の圧縮伸長処理を実行する機能を利用する構成。
3.FMPK113内の複数の圧縮伸長処理を実行する機能を利用する構成。
第1実施形態の以下の説明においては、1.ストレージコントローラ109側と、FMPK113内とのそれぞれの圧縮伸長処理を実行する機能を利用する構成を例に説明するが、他の構成としてもよい。
ストレージ装置104は、一般にシンプロビジョニングといわれる容量仮想化機能をもつている。容量仮想化における記憶領域の制御単位はページである。本実施形態では、ページのサイズは、FMチップ280における消去単位よりも大きい。ページのサイズは、例えば、42MBである。ストレージコントローラ109によるFMPK113との間でのI/Oの単位であるブロックのサイズは、例えば、8KBである。
図4は、第1実施形態に係るストレージ装置における仮想ボリューム、プール、フラッシュ側プール、及びフラッシュメモリパッケージを用いたデータの格納状況を説明する図である。
ストレージ装置104は、ホスト101からのアクセスを許す記憶領域である1以上のターゲットデバイス310を備える。ターゲットデバイス310は、容量仮想化されたボリューム(仮想ボリューム)311や、論理ボリュームが関連付けられる。また、ターゲットデバイス310には、ホストI/F106の通信ポート314が関連付けられる。
仮想ボリューム311は、プール303を用いて定義された、シンプロビジョニング又は/及びティアリングを適用した仮想記憶領域である。仮想ボリューム311は、1以上のページ321によって構成されている。仮想ボリューム311はオンラインボリュームである。
プール303は、シンプロビジョニングやティアリングに用いるプールボリューム305の集合である。プール303のページ323は、プールボリューム305から切り出された記憶領域である。プールボリューム305は、オフラインボリュームである。このため、ホスト101から指定されるターゲットデバイス310には関連付けられていない。
プールボリューム305は、1以上のページ324により構成されている。なお、図4において、プール303のページ323と、プールボリューム305のページ324とは、概念の説明上別々に図示してあるが、同じものである。
仮想ボリューム311のページ321に対しては、プール303のページ323が割り当てられる。
プール303に対しては、仮想ボリューム311の記憶領域に対応するアドレスと、実記憶領域のアドレスとをマッピングするためのプール303上のアドレス空間であるプールアドレス空間が定義されている。
ページ323は、フラッシュ側プール304を介して、パリティグループ(RAIDグループ)308の実記憶領域が割り当てられる。パリティグループ308は、複数のFMPK(記憶デバイス)113を用いて定義される。これにより、RAIDによる高信頼化、高速化、大容量化が達成される。
FMPK113の記憶領域は、ブロックを単位として管理されている。ストレージコントローラ109は、ブロック単位で、FMPK113にアクセスする。フラッシュ側プール304のブロック325は、ストレージコントローラ109から見た仮想ブロックである。パリティグループ308のブロック326は、ストレージコントローラ109にとっては、実際にデータを格納すると把握されているブロックである。
フラッシュ側プール304は、1以上のブロック325から構成される。プール303のページ323は、複数のブロック325に対応付けられる。ブロック325に格納されるデータは、FMPK113内のブロック326に格納される。
FMPK113においては、複数のFMチップ280の記憶領域に対して、フラッシュメモリアドレス空間が定義されている。
また、FMPK113においては、フラッシュメモリアドレス空間と、フラッシュ側プール304のアドレス空間とのマッピングのためのFMPKアドレス空間が定義されている。すなわち、フラッシュ側プール304のブロック325は、FMPKアドレス空間のブロックを介して、ブロック326にマッピングされる。FMPKアドレス空間は、ストレージコントローラ109から見えるFMPK113のアドレス空間である。各FMPK113に対して、フラッシュメモリアドレス空間とFMPKアドレス空間が定義されている。
1つのFMPK113において、FMPKアドレス空間のブロックにより構成される容量は、ブロック326により構成される容量よりも大きい場合があり得る。ブロック326は、フラッシュメモリアドレス空間のブロックである。FMPK113は、実ブロック数より多くの仮想ブロックをもっているように、ストレージコントローラ109に見せることができる。このため、仮想ブロックにより構成される容量のほうが、実ブロックにより構成される容量より大きい。
FMPK113は、ブロック326を割り当てていないブロック325に属するアドレスを指定したライト要求をストレージコントローラ109から受け付けた場合、そのブロック325にブロック326を割り当てる。ブロック325へ上書きライトする場合、FMPK113は、FMPK113内でブロック326に対してFMチップ280のブロックを新規に確保して割り当て、新規に割り当てたブロックにライトデータを格納し、FMPKアドレス空間とフラッシュメモリアドレス空間とのマッピングをし直す。
パリティグループ308は、複数の同種、同一通信インターフェイスのFMPK113によって構成されており、それら複数のFMPK113に跨るストライプライン(記憶領域)307が定義される。ストライプライン307は、消失データを回復可能な冗長構成を有する、ホストデータとパリティデータ(冗長データ)とを格納する。
プール303のページ323には、仮想ボリューム311のページ321に含まれない冗長データが格納されることがある。
フラッシュ側プール304は、パリティグループ308に基づく仮想的な記憶資源である。フラッシュ側プール304に対して、コントローラ109側の記憶容量を管理するアドレス空間と、FMPK113内の記憶容量を管理するアドレス空間とをマッピングするためのフラッシュ側プールアドレス空間が定義されている。
FMPKアドレス空間とフラッシュ側プールアドレス空間との間のマッピングは、一度決定されると維持される、すなわち、静的である。また、フラッシュ側プールアドレス空間とプールアドレス空間との間のマッピングも静的である。
一方、プールアドレス空間は、仮想ボリューム311にアドレス領域を動的に割り当てプール303のアドレス空間である。ページ323(324)を構成するブロックは、フラッシュ側プール304のブロック325と、1対1でマッピングされている。ブロック325は、ストライプライン307の記憶領域と関連付けられている。ページ324のブロックに格納されるデータは、そのブロックに関連付けられているストライプライン307に格納される。1つのページ324に複数のストライプライン307が関連付けられていてもよい。
上記した構成におけるリード、ライトの処理について説明する。
ホスト101が、ターゲットデバイス310を指定したI/Oコマンド(ライトコマンド又はリードコマンド)をストレージ装置104に送信した場合を例に説明する。ここで、ターゲットデバイス310には、上述した通り、仮想ボリューム311が関連付けられている。
ストレージ装置104は、仮想ボリューム311に関連付けられているターゲットデバイス310を指定したライトコマンドを受信した場合、プール303から空いているページ323を選択し、仮想ボリューム311のライト先のページ321に割り当てる。
ストレージ装置104は、選択したページ323にライトデータを書き込む。ページ323にデータを書き込むことは、このページ323にマッピングされたフラッシュ側プールアドレス空間のブロック325に関連づけられているストライプライン307に書き込むこととなり、更には、ストライプライン307に関連付けられたFMチップ280にデータを書き込むこととなる。具体的には、ストレージコントローラ109は、ライト先のページ323に対応するフラッシュ側プールアドレス空間のブロック325が、マッピングされているFMPKアドレス空間のブロックを検索して、検索したブロックに対するリード/ライト要求をFMPK113に出す。
なお、仮想ボリューム311とFMPK113との間で管理するデータの単位をそろえることで、プール303とフラッシュ側プール304とを1つのプールとして管理することもできる。
ここで、圧縮機能がストレージコントローラ側に設けてあり、ログストラクチャード方式によりFMPKにデータを格納する場合についての処理について説明する。このログストラクチャード方式によりデータを格納する場合には、仮想ボリュームの或るページ321に対する上書きライト要求があると、ストレージコントローラは、上書きライト要求の対象のライトデータを圧縮処理し、仮想ボリュームのページ321に割り当てられているプール303のページ323とは異なる新規なページ323に圧縮したデータを格納する。新規ページ323は、仮想ボリューム311のどのページにも割り当てられていない空きページである。次いで、ストレージコントローラは、仮想ボリュームのページ321に対して、データを格納した新規なページ323を割り当てる。
このような上書きライト処理により、旧データが格納されたページ323は、無効領域、すなわちガベージとなる。このため、ストレージコントローラは、ガベージの総量が一定量溜まった時、ガベージを空き領域にするためのガベージコレクション処理を実行する必要がある。したがって、カベージコレクション処理を実行するための負荷がストレージコントローラに掛かることとなる。
これに対して、図4に示す構成において、上書きライト要求があった場合の処理について説明する。
ホスト101から仮想ボリューム311の或るページ321に対する上書きライト要求があると、ストレージコントローラ109は、上書きライト要求の対象のライトデータをストレージコントローラ109側で圧縮処理し、仮想ボリューム311のページ321に割り当てられているプール303のページ323に対して静的にマッピングされたフラッシュ側プール304のブロック325へライトする。すなわち、ストレージコントローラ109は、フラッシュ側プール304のブロック325へのライト要求をFMPK113に送信する。この結果、FMPK113では、ライト要求に従ったライト処理を実施する。FMPK113では、物理的なFMチップ280にデータを格納する際に、新しい領域へデータを格納し、この新しい領域をFMPKアドレス空間のブロックへマッピングしなおす。
このような処理により、上記したログストラクチャード方式によりFMPKにデータを格納する場合と異なり、プール303内にガベージが溜まることが無い。このため、ストレージコントローラ109によるガベージコレクション処理を実行する必要がなく、ガベージコレクション処理によるオーバヘッドを低減でき、オーバヘッドを低減した分だけのストレージコントローラ109の資源をI/O処理に振り分けることができるため、I/O処理性能を向上することができる。
以上の構成をとることで、ガベージコレクション処理のオーバヘッドをFMPK113側にオフロードできる。
図5は、第1実施形態に係る共有メモリの構成図である。
ストレージ装置104の共有メモリ111は、I/O処理プログラム3100、プール管理プログラム3200、圧縮アルゴリズム選択プログラム3300、及び圧縮補正処理プログラム3400といったプログラムモジュールを格納する。また、共有メモリ111は、プログラムによって参照等される仮想ボリューム情報2100、プール情報2200、フラッシュ側プール情報2300、及び圧縮アルゴリズム管理情報2400を格納する。
I/O処理プログラム3100は、実ページに圧縮後のデータを格納するなどのI/Oに関する処理を行うためのプログラムである。プール管理プログラム3200は、実ページの選択などプール管理に関する処理を行うためのプログラムである。圧縮アルゴリズム選択プログラム3300及び圧縮補正処理プログラム3400による処理内容については後述する。
共有メモリ111に格納されたプログラムや情報は、例えば、必要に応じてストレージコントローラ109のローカルメモリ114にロードされた後、プロセッサ105により実行されたり、処理に利用されたりする。
図6は、第1実施形態に係るFMPKのメモリの構成図である。
FMPK113のメモリ214は、圧縮補正処理プログラム3700と、FMPK情報2700とを格納する。圧縮補正処理プログラム3700による処理内容については後述する
次に、ストレージ装置104の共有メモリ111と、FMPK113のメモリ214に格納されている情報について説明する。
図7は、第1実施形態に係る仮想ボリューム情報の構成図である。
仮想ボリューム情報2100は、仮想ボリューム311を管理するための情報である。
共有メモリ111には、ストレージ装置104の1つの仮想ボリューム311に対して、1つの仮想ボリューム情報2100が格納されている。
共有メモリ111には、ストレージ装置104の1つの仮想ボリューム311に対して、1つの仮想ボリューム情報2100が格納されている。
仮想ボリューム情報2100は、仮想ボリュームID2110と、仮想ページ番号2120と、プール内のページ番号2130と、アクセス頻度2140と、選択アルゴリズム2150と、変更選択アルゴリズム2160とのフィールドを含む。仮想ページ番号2120、プール内のページ番号2130、アクセス頻度2140、選択アルゴリズム2150、及び変更選択アルゴリズム2160のフィールドの組は、各仮想ページに対応して設けられている。
仮想ボリュームID2110には、仮想ボリュームを識別する番号が格納される。仮想ページ番号2120には、仮想ボリュームを構成するページ(仮想ページ)の番号が格納される。なお、仮想ボリュームには、仮想ボリュームの容量/1ページサイズに相当する個数(割り切れない場合は切り上げた個数)の仮想ページが登録されている。
プール内のページ番号2130には、仮想ページに割り当てられたプール303のページの番号が格納される。プール内のページ番号2130には、仮想ページに実ページが割り当てられていない場合には、対応する実ページがないことを示す情報(例えば「N/A」)が格納される。
アクセス頻度2140には、仮想ページに対する単位時間当たりのアクセス数が多いか否かを判定するために使う情報が格納される。アクセス頻度2140には、例えば、予め決めた時間範囲における仮想ページへのリードライト要求数が取得されて登録されてもよく、または、リード要求数とライト要求数とが登録されてもよく、全体のリードライト要求数に対する仮想ページへのリードライト要求数の割合が登録されてもよい。
選択アルゴリズム2150には、仮想ページのデータに対して圧縮機能を適用する場合における使用している圧縮アルゴリズム情報が格納される。圧縮アルゴリズム情報は、圧縮アルゴリズム情報テーブル2400に格納されている圧縮アルゴリズム番号であってもよい。変更選択アルゴリズム2160には、対象となるページにデータに対する圧縮アルゴリズムを変更する場合における変更後の圧縮アルゴリズム(適切アルゴリズム)の情報が格納される。
図8は、第1実施形態に係るプール情報の構成図である。
プール情報2200は、プール303を管理するための情報である。共有メモリ111には、ストレージ装置104の1つのプール303に対して、1つのプール情報2200が格納されている。
プール情報2200は、プールID2210と、フラッシュ側プールID2220と、プールページ番号2230と、プールページのブロック番号2240と、フラッシュ側プールアドレス空間のブロック番号2250と、使用状態2260とのフィールドを有する。プールページ番号2230、プールページのブロック番号2240、フラッシュ側プールアドレス空間のブロック番号2250、及び使用状態2260のフィールドの組は、プール303の各ページに対応して設けられている。
プールID2210には、プールを識別する番号の情報(プールID)が格納される。フラッシュ側プールID2220には、プールに対応するフラッシュ側のプール空間を示す識別番号が格納される。プールページ番号2230には、プールを構成するページの番号(プールページ番号)が格納される。プールページのブロック番号2240には、プールページ番号に対応するページに含まれるブロック番号が格納される。フラッシュ側プールアドレス空間のブロック番号2250には、プールのページに含まれるブロックに対応するフラッシュ側プール304のブロックの番号が格納される。使用状態2260には、プールページ番号2230のプールページ番号に対応するページを仮想ページに割り当てた状態(使用中)であるか、未割当の状態(未使用)であるかを示す情報が格納される。なお、従来においては、使用状態2260には、プールページ番号2230のプールページ番号に対応するページが無効領域となっているか否かの情報が格納されていた。使用状態2260に、使用中を格納させる場合には、プールページをどの仮想ボリュームの仮想ページに割り当てたかの情報をさらに格納させるようにしてもよい。
図9は、第1実施形態に係るフラッシュ側プール情報の構成図である。
フラッシュ側プール情報2300は、フラッシュ側プール304を管理するための情報である。フラッシュ側プール情報2300は、フラッシュ側プールアドレス空間とフラッシュパッケージアドレス空間との間のマッピングを管理する。共有メモリ111には、ストレージ装置104の1つのフラッシュ側プール304に対して、1つのフラッシュ側プール情報2300が格納されている。
フラッシュ側プール情報2300は、フラッシュ側プールID2310と、フラッシュ側プールブロック番号2320と、FMPK ID2330と、FMPKアドレス空間のブロック番号2340とのフィールドを有する。フラッシュ側プールブロック番号2320、FMPK ID2330、及びFMPKアドレス空間のブロック番号2340のフィールドの組は、フラッシュ側プールの各ブロックに対応して設けられている。
フラッシュ側プールID2310には、フラッシュ側プール304の識別子(フラッシュ側プールID)が格納される。フラッシュ側プールブロック番号2320には、フラッシュ側プールアドレス空間の管理単位であるブロック(フラッシュ側プールブロック)の番号が格納される。このブロックの番号は、パリティグループ308のストライプラインに対応するフラッシュ側プールブロックの番号である。FMPK ID2330には、フラッシュ側プールブロックが格納されるFMPKの識別子(FMPK ID)が格納される。FMPKアドレス空間のブロック番号2340には、フラッシュ側プールブロック番号2320のブロック番号のブロックに対してマッピングされた、FMPKアドレス空間のブロックの番号が格納される。
図10は、第1実施形態に係る圧縮アルゴリズム情報の構成図である。
圧縮アルゴリズム情報2400は、ストレージ装置104内で適用できるデータの圧縮アルゴリズムに関する情報である。圧縮アルゴリズム情報2400は、圧縮アルゴリズムごとにアルゴリズム番号2410と、アルゴリズム名2420と、適用条件2430とのフィールドを含む。
アルゴリズム番号2410には、圧縮アルゴリズムに対応する番号が格納される。アルゴリズム名2420には、圧縮アルゴリズムの名前(アルゴリズム名)が格納される。適用条件2430には、圧縮アルゴリズムが適用される条件(適用条件)が格納される。適用条件としては、例えば、データを格納する記憶領域に対するアクセス頻度に関する条件であってもよい。
図10に示す圧縮アルゴリズム2400は、ストレージ装置104内には、アルゴリズム1とアルゴリズム2の2つの圧縮機能が設けられており、アルゴリズム1(第1圧縮アルゴリズムの一例)は、Zstd(Zstandard)というアルゴリズムであり、このアルゴリズムは、アクセス頻度が低いデータについて適用され、アルゴリズム2(第2圧縮アルゴリズムの一例)は、LZ4というアルゴリズムであり、アクセス頻度が高いデータについて適用される。アクセス頻度が低いとは、例えば、対象となる記憶領域への単位時間当たりのI/O数が、予め決めた閾値より低い場合としてもよい。ここで、Zstdは、LZ4よりも圧縮率が高いが、圧縮伸長処理におけるオーバヘッドが大きいというアルゴリズムである。
図11は、第1実施形態に係るFMPK情報の構成図である。
FMPK情報2700は、各FMPK113のメモリ214に格納される情報であって、FMPKアドレス空間とフラッシュメモリのアドレス空間とのマッピングを管理する。FMPK情報2700は、ストレージコントローラ109からはアクセスされない。
FMPK情報2700は、FMPK ID2710と、FMPKグループID2720と、FMPKアドレス空間のブロック番号2730と、フラッシュメモリアドレス空間のブロック番号2740と、圧縮後サイズ2750とのフィールドを含む。FMPKアドレス空間のブロック番号2730、フラッシュメモリアドレス空間のブロック番号2740、及び圧縮後サイズ2750とのフィールドの組は、FMPKアドレス空間の各ブロックに対応して設けられている。
FMPK ID2710には、FMPK113の識別子(FMPK ID)が格納される。FMPKグループID2720には、FMPK113が属するパリティグループ308と対応しているフラッシュ側プール304のフラッシュ側プールIDが格納される。FMPKアドレス空間のブロック番号2730には、FMPKの容量をブロック単位で管理するためのアドレス空間(FMPKアドレス空間)におけるブロックの番号が格納される。
フラッシュメモリアドレス空間のブロック番号2740には、FMPK113のFMチップ280の容量をブロック単位で管理するためのアドレス空間(フラッシュメモリアドレス空間)におけるブロックの番号が格納される。具体的には、フラッシュメモリアドレス空間のブロック番号2740には、FMPKアドレス空間のブロック番号2730のブロック番号のブロックに関連付けられた物理的なFMチップ280の格納位置を示す情報が格納される。FMPKアドレス空間の空きブロックに最初にデータが格納されるときには、このブロックの番号に対して、データを実際に格納するフラッシュメモリアドレス空間のブロック番号が割り当てられる。
圧縮サイズ2750には、FMPKアドレス空間のブロックに格納された圧縮データについてのサイズが格納される。例えば、ストレージコントローラ109で圧縮処理が行われたデータについてのサイズは、ストレージコントローラ109から受け取って圧縮サイズ2750に格納される。
本実施形態に係るストレージ装置104におけるデータの圧縮伸長機能の一例について説明する。
本実施形態では、ストレージコントローラ109と、FMPK113とのそれぞれに異なる圧縮アルゴリズムによる圧縮伸長機能を備えている。ストレージコントローラ109に備える圧縮伸長機能の圧縮アルゴリズム(第1圧縮アルゴリズム)は、FMPK113に備える圧縮伸長機能よりも圧縮処理時間はかかるが圧縮率が高いことを特徴としたものであり、アクセス頻度が低いデータに対して有効なアルゴリズムである。一方、FMPK113に備える圧縮伸長機能の圧縮アルゴリズム(第2圧縮アルゴリズム)は、圧縮率は低いが、圧縮処理時間が短いことを特徴としたものであり、アクセス頻度が高いデータに対して有効なアルゴリズムである。例えば、アルゴリズム1は、圧縮率が高いことを要求するもの、例えばデータベースなどに適用するようにしてもよい。ここで、この例においては、ストレージコントローラ109のプロセッサ105が第1データ圧縮部に相当し、FMPK113の圧縮伸長回路216が第2データ圧縮部に相当する。
この構成によると、一部のデータについての圧縮処理をFMPK113へオフロードすることにより、ストレージコントローラ109のプロセッサ105の圧縮処理に係る負荷を抑制することができ、ストレージ装置103の全体としてのI/O処理の性能を向上することができる。
次に、ストレージ装置104の処理動作について説明する。
図12は、第1実施形態に係るライト処理のフローチャートである。
ストレージ装置104は、ホスト101からライト要求を受け付けたか否かを判定し(S110)、ライト要求を受け付けていない場合(S110:NO)には、S110を繰り返し実行する一方、ライト要求を受け付けた場合(S110:YES)には、プール管理プログラム3200は、ライト要求で指定された、LU(Logical Unit:仮想ボリュームIDに相当)とライト範囲(例えばLBA(Logical Block Address)など)に相当する仮想ページを特定する。
次いで、プール管理プログラム3200は、指定されたLUに対応する仮想ボリューム情報2100を特定し、この仮想ボリューム情報2100を用いて、LBAにより、仮想ボリュームの中のライト処理の対象となる仮想ページ(以下、この処理の説明において対象仮想ページという)の番号を検索して特定する。次いで、プール管理プログラム3200は、特定した仮想ページ番号が格納された仮想ページ番号2120に対応するプール内のページ番号2130に、プール内ページ番号が格納されているか否かを判定することにより、対象仮想ページ(対象領域)に対する1回目(初めて)のライト処理であるか否かを判定する(S115)。例えば、仮想ページ番号2120に対応するプール内のページ番号2130に、プール内ページ番号が格納されていない場合には、この対象仮想ページに対する1回目のライト処理となる。
この結果、1回目のライト処理である場合(S115:YES)には、プール管理プログラム3200は、プール情報2200内の使用状態2260が空き状態であるページに対応するプール303内のページ番号を、対象仮想ページに対応するプール内のページ番号2130に登録し、デフォルトで設定された圧縮アルゴリズム(例えば、アクセス頻度が高い場合の圧縮アルゴリズム)を対象仮想ページに対応する選択アルゴリズム2150へ登録し(S125)、処理をS130へ進める。
一方、1回目のライト処理でない場合(S115:NO)には、プール管理プログラム3200は、対象仮想ページに対応するアクセス頻度2140の値に基づいて、アクセス頻度が高いか否かを判定し(S120)、アクセス頻度が高いと判定した場合(S120:YES)には、FMPK113側でライト要求に対応するデータ(ライトデータ)の圧縮処理を行わせるために、処理をS130へ進める一方、アクセス頻度が低いと判定された場合(S120:NO)には、処理をS140へ進める。なお、仮想ページに対するアクセス頻度の判定は、監視している期間が短いと正しく判定できないため、監視している期間が短い場合においては、アクセス頻度が高いと判定された場合と同様の処理を進めるようにしてもよい。
S130では、I/O処理プログラム3100は、仮想ページに割り当てられたプールのページ内のブロック(対象ブロック)へのライト要求を、FMPK113側での圧縮処理を行わせる指示(又は圧縮処理を行わせる指示に対応する情報であって、FMPK113で圧縮処理を行うことが判断できる情報)と、ライトデータとともに、FMPK113へ転送する(S130)。このようにライト要求を転送する際には、I/O処理プログラム3100は、対象ブロックを以下のように算出する。すなわち、I/O処理プログラム3100は、仮想ページに割り当てられたプール内のページ番号(仮想ページに対応するプール内のページ番号2130のページ番号)を特定し、このページ番号に対応するブロック番号(ページ番号が格納されたプールページ番号2230に対応するプールページのブロック番号2240のブロック番号)を算出する。なお、プールページのブロック番号2240のブロック番号に対応するフラッシュ側プールアドレス空間のブロック番号2250のブロック番号に対応するフラッシュメモリアドレスが、ライトデータを格納する実領域となる。
S130で転送されたライト要求及び圧縮指示をFMPK113が受け取ると、FMPK113は、自身がライトデータの圧縮処理をすることを認識し、ライトデータに対して所定の圧縮アルゴリズムによる圧縮処理を実施する(S180)。圧縮処理を実施することにより、ライトデータのサイズは、送信時のブロックサイズより小さいサイズとなる。FMPK113のプロセッサ213は、圧縮されたデータを、ライト要求に対応するFMチップ280の対象の記憶領域に書き込み(S190)、ストレージコントローラ109へライト処理の完了を報告する。ライト処理の完了報告のタイミングは、S130で送信されたストレージコントローラ109からのライトデータを受け取って、図示しないバッファに一時格納完了したタイミングとしてもよい。
S140では、プール管理プログラム3200がライトデータに対して、所定の圧縮アルゴリズムによる圧縮処理を実施する。
ここで、FMPK113へのライト処理は、仮想ページに割り当てられたプールのページ内のブロック単位である。そこで、圧縮補正処理プログラム3400は、FMPK113へライトデータを転送する前の事前処理を行う(S150)。この事前処理においては、圧縮処理後のライトデータ(圧縮データ)のデータサイズが転送単位であるブロックサイズより小さくなった場合に、圧縮データを、ブロックサイズのデータとなるように補正する。ここで、この事前処理を行わないと、ブロックにおける圧縮データが格納されていない空き領域に格納されている情報がFMPK113に格納されてしまい、このブロックに格納されたデータをリードした場合、このブロックの一部分が正しくないデータとなってしまうためである。そこで、圧縮補正処理プログラム3400は、圧縮データのデータサイズがブロックのサイズより小さい場合は、圧縮データが格納されない部分に所定のデータ(例えば、すべてゼロ(‘0’)のデータ:調整データ)を埋め込み、ブロックサイズのデータに形成する。
その後、I/O処理プログラム3100は、ライト要求とともに、形成した圧縮データを含むブロックのデータと、圧縮データのサイズ(ライトデータの圧縮後のサイズ)の情報(圧縮サイズ情報)を、フラッシュパッケージ113へ転送する(S160)。
S160で転送されたライト要求等をFMPK113が受け取ると、FMPK13は、ライト要求の対象となるFMPKアドレス空間のブロック番号に対応する圧縮後サイズ2750に受け取った圧縮後サイズを登録し、圧縮補正処理プログラム3700は、ライトデータを実領域であるFMチップ280に格納するための事前処理を行う(S170)。具体的には、FMPK113は、ストレージ装置104により圧縮されて補正されたデータが転送されたことを、例えば、圧縮後サイズ情報が転送されたことにより認識する。圧縮補正処理プログラム3700は、圧縮後サイズ情報を参照し、転送されたブロック単位のデータのうち、先頭からどこまでがライトデータの圧縮データに対応する有効データであり、それ以降が埋めこまれた調整データであるかを判別する。圧縮補正処理プログラム3700は、受け取ったブロック単位のデータのうち、調整データを回収し(削除し)、有効データ(圧縮データ)を取り出す。
次いで、FMPK113のプロセッサ224は、S170で取り出した圧縮データをFMチップ280の対象の記憶領域に書き込み(S190)、ストレージコントローラ109へライト処理の完了を報告する。ライト処理の完了報告のタイミングは、S160で送信されたストレージコントローラ109からのライトデータを受け取って、図示しないバッファに一時格納完了したタイミングとしてもよい。
なお、S190にて、FMチップ280にデータを書き込む際は、FMPK113のプロセッサ224は、FMチップ280の新しい領域を確保してデータを格納する処理を行う。これは、従来のFMチップ280における書き込み処理と同様な処理である。この後、FMPK113は、ライト要求に対応したFMPKアドレスに対して、確保した新しい領域のアドレスをマッピングし直す。FMPK113は、旧ライトデータが格納されたFMチップ280の記憶領域をガベージ(無効領域)として管理する。なお、FMPK113のプロセッサ224の稼働率が低い時などにバックグラウンド処理としてガベージコレクション処理を実行することにより、ガベージから空き領域を生成してFMチップ280のアクセス可能な記憶領域の容量を増やすようにしてもよい。上記処理においては、FMチップ280の実領域には、圧縮データのみが格納されることとなるので、FMチップ280における容量効率を上げることができる。
図13は、第1実施形態に係るリード処理のフローチャートである。
ストレージ装置104は、ホスト101からリード要求を受け付けたか否かを判定し(S210)、リード要求を受け付けていない場合(S210:NO)には、S210を繰り返し実行する一方、リード要求を受け付けた場合(S210:YES)には、プール管理プログラム3200は、リード要求で指定された、LU(仮想ボリュームIDに相当)とリード範囲(例えばLBAなど)に相当する仮想ページを特定する。
次いで、プール管理プログラム3200は、指定されたLUに対応する仮想ボリューム情報2100を特定し、この仮想ボリューム情報2100を用いて、LBAにより、仮想ボリュームの中のリード処理の対象となる仮想ページ(以下、この処理の説明において対象仮想ページという)の番号を検索して特定する。
次いで、プール管理プログラム3200は、特定した仮想ページ番号が格納された仮想ページ番号2120に対応する選択アルゴリズム2150に登録された情報を参照し、対象仮想ページに適用されている圧縮アルゴリズムが、アクセス頻度が高いデータ用のアルゴリズム(本例では、アルゴリズム2)であるか否かを判定する(S220)。
この結果、対象仮想ページに適用されている圧縮アルゴリズムが、アクセス頻度が高いデータ用であると判定された場合(S220:YES)、すなわち、圧縮アルゴリズムがアルゴリズム2であると判定された場合は、プール管理プログラム3200は、処理をS230へ進める一方、対象仮想ページに適用されている圧縮アルゴリズムが、アクセス頻度が高いデータ用でないと判定された場合(S220:NO)、すなわち、圧縮アルゴリズムがアルゴリズム1であると判定された場合には、プール管理プログラム3200は、処理をS250へ進める。
S230では、リード対象のデータ(リード対象データ)は、FMPK113で圧縮処理が実施されているため、I/O処理プログラム3100は、FMPK113で伸長処理を実施させる指示とともに、対象仮想ページに割り当てられたプールのページ内のブロックに対するリード要求を、FMPK113へ転送する(S230)。
FMPK113はS230で転送されたリード要求を受け取ると、伸長処理を伴うリード処理であることを認識し、リード対象データの格納位置を検索し、FMチップ280からリード対象データを読み出し、読み出したリード対象データをFMPK113の図示しないキャッシュメモリにステージングする(S320)。次いで、圧縮伸長回路216は、キャッシュメモリにステージングされたリード対象データに対して伸長処理を実施する(S330)。次いで、FMPK113は、伸長処理されたリード対象データをストレージコントローラ109へ転送する(S340)。ストレージコントローラ109に転送されたリード対象データは、ホスト101へ転送され(S240)、リード処理が終了する。
S250(S220の判定で、適用されている圧縮アルゴリズムが、アクセス頻度が低いデータ用のアルゴリズム1であると判定された場合)では、I/O処理プログラム3100は、リード要求をFMPK113に転送する。この際、リード対象データについての圧縮処理をストレージコントローラ109で行っているため、I/O処理プログラム3100は、FMPK113に、ストレージコントローラ109側でリード対象データの圧縮処理を行っていることを伝達する。
FMPK113は、S250で転送されたリード要求を受け取ると、リード対象データの格納位置を検索し、FMチップ280からFMPK113のキャッシュメモリにリード要求データをステージングする(S290)。ここで、キャッシュメモリにステージングされたリード対象データは、ストレージコントローラ109で圧縮されているため、スストレージコントローラ109とのデータ転送で用いるブロックのブロックサイズより、データサイズが通常は小さくなっている。キャッシュメモリにステージングしたデータのデータサイズを圧縮データサイズと呼ぶ。
圧縮補正処理プログラム3700は、リード対象データをストレージコントローラ109とのデータ転送で用いるブロックサイズに合わせるために、ブロックサイズに満たない領域に調整データ(例えば、0(ゼロ)データ)を埋めて補正する(S300)。
次いで、FMPK113は、補正したリード対象データと、圧縮データサイズ(すなわち、調整データで調整していない部分のサイズ)をストレージコントローラ109へ転送する(S310)。
ストレージコントローラ109がS310で転送されたリード対象データを受け取ると、圧縮補正処理プログラム3400は、FMPK113側で補正された調整データを回収(削除)する伸長事前処理を実施し(S260)、プール処理プログラム3200が調整データを取り除いたリード対象データに対して伸長処理(アルゴリズム1に対応する伸長処理)を実施し(S270)、伸長処理を実施したリード対象データをホスト101へ転送し(S280)、リード処理を終了する。
次に、FMPK113に既に格納されているデータの圧縮アルゴリズムの変更判定を行う圧縮アルゴリズム変更判定処理について説明する。
図14は、第1実施形態に係る圧縮アルゴリズム変更判定処理のフローチャートである。
例えば、ストレージ装置104の自動階層制御機能では、データのチャンク毎のアクセス頻度を監視している。例えば、ストレージ装置104は、容量仮想化機能で扱う単位であるページ単位に、対象となるページへの予め決めた期間(例えば1日単位)でのI/O数をカウントし、ページ毎のアクセス頻度を、「I/O数÷期間=アクセス頻度」により算出する。次いで、ストレージ装置104は、算出結果に基づいて、アクセス頻度の高いページから、高性能で応答時間が短い記憶媒体へページのデータを格納する。
ここで、ストレージ装置104は、仮想ボリュームの各ページ(各仮想ページ)を処理対象として、圧縮アルゴリズム変更判定処理を実行する。まず、ストレージ装置104は、自動階層制御機能を応用し、1日単位でのページのアクセス頻度を算出する(S410)。
次いで、圧縮アルゴリズム選択プログラム3300は、処理対象のページ(対象ページ)に対して算出されたアクセス頻度が予め設定している閾値(閾値1)以上であるか否かを判定する(S420)。
この結果、アクセス頻度が閾値1以上である場合(S420:YES)には、圧縮アルゴリズム選択プログラム3300は、圧縮アルゴリズム情報2400のアルゴリズム番号2410に格納されているアルゴリズム番号のうち、アクセス頻度の高い時に適用するアルゴリズムに対応するアルゴリズム番号(図10の例では、アルゴリズム2:適切アルゴリズム)を選択する。次いで、圧縮アルゴリズム選択プログラム3300は、対象ページに対応する選択アルゴリズム2150の選択アルゴリズムを参照し、選択アルゴリズムがアクセス頻度の低い時に適用するアルゴリズム(アルゴリズム1)であるか否かを判定する(S430)。
この結果、選択アルゴリズムがアクセス頻度の低い時に適用するアルゴリズム(アルゴリズム1)である場合(S430:YES)には、対象ページの前回のアクセス頻度は閾値1より低く、今回のアクセス頻度が閾値1以上となったことを示しており、圧縮アルゴリズムをアクセス頻度の高い時に適用するアルゴリズム(アルゴリズム2)に変更する必要があるために、圧縮アルゴリズム選択プログラム3300は、対象ページ対応する変更選択アルゴリズム2160にアクセス頻度の高い時に適用するアルゴリズムの番号を登録し(S440)、処理を終了する。
一方、選択アルゴリズムがアクセス頻度の低い時に適用するアルゴリズム(アルゴリズム1)でない場合(S430:NO)には、対象ページに適用したアルゴリズムがアクセス頻度の低い時に適用するアルゴリズム(アルゴリズム2)であることを意味しているので、圧縮アルゴリズムを変更する必要がないので、処理を終了する。
一方、アクセス頻度が閾値1よりも小さい場合(S420:NO)には、圧縮アルゴリズム選択プログラム3300は、圧縮アルゴリズム情報2400のアルゴリズム番号2410に格納されているアルゴリズム番号のうち、アクセス頻度の低い時に適用するアルゴリズムに対応するアルゴリズム番号(図10の例では、アルゴリズム1:適切アルゴリズム)を選択する。次いで、圧縮アルゴリズム選択プログラム3300は、対象ページに対応する選択アルゴリズム2150の選択アルゴリズムを参照し、選択アルゴリズムがアクセス頻度の高い時に適用するアルゴリズム(アルゴリズム2)であるか否かを判定する(S450)。
この結果、選択アルゴリズムがアクセス頻度の高い時に適用するアルゴリズム(アルゴリズム2)である場合(S450:YES)には、対象ページの前回のアクセス頻度は閾値1以上であり、今回のアクセス頻度が閾値1より小さくなったことを示しており、圧縮アルゴリズムをアクセス頻度の低い時に適用するアルゴリズム(アルゴリズム1)に変更する必要があるために、圧縮アルゴリズム選択プログラム3300は、対象ページ対応する変更選択アルゴリズム2160にアクセス頻度の低い時に適用するアルゴリズムの番号を登録し(S440)、処理を終了する。
一方、選択アルゴリズムがアクセス頻度の高い時に適用するアルゴリズム(アルゴリズム2)でない場合(S450:NO)には、対象ページに適用したアルゴリズムがアクセス頻度の低い時に適用するアルゴリズム(アルゴリズム1)であることを意味しているので、圧縮アルゴリズムを変更する必要がないので、処理を終了する。
上記処理によると、各ページに対して次回から使用する適切な圧縮アルゴリズムを、ページに対するアクセス頻度に基づいて適切に決定することができる。なお、この処理の終了時点においては、FMPK113に格納されているデータは、前回選択された圧縮アルゴリズム(選択アルゴリズム2150の圧縮アルゴリズム)により圧縮されたデータのままである。以降に、FMPK113に格納されているデータを、適切な圧縮アルゴリズムで圧縮した状態とする圧縮アルゴリズム変更メイン処理を説明する。
図15は、第1実施形態に係る圧縮アルゴリズム変更メイン処理のフローチャートである。
圧縮アルゴリズム変更メイン処理は、仮想ページに適用する圧縮アルゴリズムを、図14に示す圧縮アルゴリズム変更判定処理において登録された変更選択アルゴリズムに変更する処理である。ここで、圧縮アルゴリズムを変更するとは、具体的には、仮想ページに割り付けられた実ページに対応するFMチップ280に書き込まれたデータを一旦読み出して、新しい圧縮アルゴリズムを適用して圧縮した後にFMチップ280に再度書き込むことをいう。
圧縮アルゴリズム変更処理は、バックグラウンドで処理される。
まず、プール管理プログラム3200は、所定時間ごとに通常業務のI/O数が少ないか否かを判定する(S510)。具体的には、プール管理プログラム3200は、プロセッサ105の稼動率が予め設定された設定値より低いか否かを判定する。
この結果、プロセッサ105の稼動率が設定値よりも低くない場合(S510:NO)には、通常業務のI/O数が多いことを表しているので、プール管理プログラム3200は、通常業務に影響を与えないように処理を実行せず、処理をS510に進める。
一方、プロセッサ105の稼動率が設定値よりも低い場合(S510:YES)には、通常業務のI/O数が少ないことを表しているので、プール管理プログラム3200は、仮想ボリューム情報2100の変更選択アルゴリズム2160に圧縮アルゴリズムが登録されている仮想ページを処理対象として抽出する(S520)。仮想ページの抽出の仕方は、例えば、仮想ボリューム単位に先頭の仮想ページから順次、変更選択アルゴリズム2160に圧縮アルゴリズム名が登録されている仮想ページを抽出してもよく、または、変更選択アルゴリズム2160に圧縮アルゴリズム名が登録されている仮想ページを別のテーブルを設けて管理し、このテーブルを参照して、仮想ページを抽出するようにしてもよい。なお、仮想ページの抽出の仕方はこれに限らない。
次いで、プール管理プログラム3200は、S520で抽出した仮想ページに対応する現在の圧縮アルゴリズム(仮想ページに対応する選択アルゴリズム2150に格納されているアルゴリズム)がアルゴリズム1であり、かつ、変更後の圧縮アルゴリズム(仮想ページに対応する変更選択アルゴリズム2160に格納されているアルゴリズム)がアルゴリズム2であるか否かを判定する(S530)。この結果、仮想ページに対応する現在の圧縮アルゴリズムがアルゴリズム1であり、かつ、変更後の圧縮アルゴリズムがアルゴリズム2である場合(S530:YES)には、アクセス頻度が低いデータ用のアルゴリズムからアクセス頻度が高いデータ用のアルゴリズムへ変更する変更処理(圧縮時間重視への圧縮アルゴリズム変更処理:図16参照)を行う(S540)。
一方、S520で抽出した仮想ページに対応する現在の圧縮アルゴリズムがアルゴリズム1であり、かつ、変更後の圧縮アルゴリズムがアルゴリズム2でない場合(S530:NO)には、プール管理プログラム3200は、仮想ページに対応する現在の圧縮アルゴリズムがアルゴリズム2であり、かつ、変更後の圧縮アルゴリズムがアルゴリズム1であるか否かを判定する(S560)。
この結果、仮想ページに対応する現在の圧縮アルゴリズムがアルゴリズム2であり、かつ、変更後の圧縮アルゴリズムがアルゴリズム1である場合(S560:YES)には、プール管理プログラム3200は、アクセス頻度が高いデータ用のアルゴリズムからアクセス頻度が低いデータ用のアルゴリズムへ変更する変更処理(圧縮率重視への圧縮アルゴリズム変更処理:図17参照)を行う(S570)。なお、仮想ページに対応する現在の圧縮アルゴリズムがアルゴリズム2であり、かつ、変更後の圧縮アルゴリズムがアルゴリズム1でない場合(S560:NO)は、本来であれば、発生しないはずであるが、発生した場合には、アルゴリズムの変更がないため、プール管理プログラム3200は、変更選択アルゴリズム2160を初期化して処理を終了する。
S540およびS570で、仮想ページに対応する圧縮アルゴリズムを変更した後には、プール管理プログラム3200は、この仮想ページに対応する変更選択アルゴリズム2160に登録されているアルゴリズムを選択アルゴリズム2150へ格納し、変更選択アルゴリズム2160を初期化し(S550)、処理を終了する。
上記した圧縮アルゴリズム変更メイン処理によると、I/O処理と非同期に実施し、通常業務のI/O処理が少ない場合に、仮想ページに対応する圧縮アルゴリズムを変更するようにしているので、この処理によるオーバヘッドによって通常業務におけるI/O性能が低下することを抑制することができる。
なお、圧縮アルゴリズム変更メイン処理のS570の処理については、プロセッサ105の稼動率が低い時(所定の閾値以下の時)に実行するようにし、S540の処理については、すぐに実行するようにしてもよい。これは、アクセス頻度が低いものからアクセス頻度が高くなった場合、圧縮伸長処理時間が短い方が良いためである。
例えば、S540の処理をデータのリード要求処理又はライト要求処理の延長で実施してもよい。S540の処理をデータの上書き要求処理の延長で実施する場合は、図12のライト処理をそのまま適用すればよい。また、S540の処理をリード要求処理の延長で実施する場合は、図13のリード処理後に、図12のライト処理を実施するようにすればよい。
また、圧縮アルゴリズム変更処理のS540、又はS570の処理は、データを移行する処理に伴って実施するようにしてもよい。ストレージ装置104に自動階層制御機能を備えている場合には、自動階層制御機能は、アクセス頻度が低かったデータのアクセス頻度が高くなった場合、このデータをアクセス頻度が高いデータ用の階層の記憶領域へ移行するデータ移行処理が行われることとなる。このデータ移行処理では、移行する対象のデータをリードし、その後新たな記憶領域へライトする。このデータ移行処理において、S540の処理を実施するようにすればよい。同様に、アクセス頻度が高かったデータのアクセス頻度が低くなった場合には、このデータをアクセス頻度が低いデータ用の階層の記憶領域へ移行するデータ移行処理において、S570の処理を実施するようにすればよい。
図16は、第1実施形態に係る圧縮時間重視への圧縮アルゴリズム変更処理のフローチャートである。
圧縮時間重視への圧縮アルゴリズム変更処理は、図15のステップS540の処理に対応する。
仮想ページ単位に適用する圧縮アルゴリズムを設定しているため、圧縮時間重視への圧縮アルゴリズム変更処理は、仮想ページに割り付けられた実ページを構成するブロック全てについて下記の処理を行う。
ストレージ装置104のI/O処理プログラム3100は、FMPK113へ処理対象の仮想ページのブロックに対するリード要求を送信する。このブロックのデータについては、圧縮処理をストレージコントローラ109で行っているため、I/O処理プログラム3100は、FMPK113にストレージコントローラ109で圧縮を行っていることも伝達する(S610)。
FMPK113は、S610で送信されたリード要求を受け取ると、リード対象データの格納位置を検索し、FMチップ280からFMPK113のキャッシュメモリにリード要求データをステージングする(S620)。
圧縮補正処理プログラム3700は、リード対象データをストレージコントローラ109とのデータ転送で用いるブロックサイズに合わせるために、ブロックサイズに満たない領域に調整データ(例えば、0(ゼロ)データ)を埋めて補正する(S630)。
次いで、FMPK113は、補正したリード対象データと、圧縮データサイズ(すなわち、調整データで調整していないサイズ)をストレージコントローラ109へ送信する(S640)。
ストレージコントローラ109がS640で送信されたリード対象データを受け取ると、圧縮補正処理プログラム3400は、FMPK113側で補完された調整データを回収(削除)する伸長事前処理を実施し(S650)、プール処理プログラム3200が調整データを取り除いたリード対象データに対して伸長処理(アルゴリズム1に対応する伸長処理)を実施し(S660)、伸長処理を実施したリード対象データをFMPK113へ送信する(S670)。この際、I/O処理プログラム3100は、FMPK113側へ圧縮指示も出す。
S670で送信されたライト要求及び圧縮指示を、FMPK113が受け取ると、FMPK13は、自身がライトデータの圧縮処理をすることを認識し、ライトデータに対して所定の圧縮アルゴリズムによる圧縮処理を実施する(S680)。次いで、FMPK113のプロセッサ213は、圧縮されたデータを、ライト要求に対応するFMチップ280の対象の記憶領域に書き込み(S690)、ストレージコントローラ109へライト処理の完了を報告する。ライト処理の完了報告のタイミングは、S670で送信されたストレージコントローラ109からのライトデータを受け取って、図示しないバッファに一時格納完了したタイミングとしてもよい。なお、ライト処理の完了報告を受け取ったストレージコントローラ109は、圧縮時間重視への圧縮アルゴリズム変更処理を終了する。
上記した圧縮時間重視への圧縮アルゴリズム変更処理によると、FMチップ280に格納されているデータを、圧縮時間が短い(基本的には、伸長時間が短いに対応)圧縮アルゴリズムによる圧縮データに変更してFMチップ280に格納させることができる。これにより、ストレージ装置104における圧縮処理(及び伸長処理)の負荷を軽減することができる。
図17は、第1実施形態に係る圧縮率重視への圧縮アルゴリズム変更処理のフローチャートである。
圧縮率重視への圧縮アルゴリズム変更処理は、図15のステップS570の処理に対応する。
仮想ページ単位に適用する圧縮アルゴリズムを設定しているため、圧縮時間重視への圧縮アルゴリズム変更処理は、仮想ページに割り付けられた実ページを構成するブロック全てについて下記の処理を行う。
ストレージ装置104のI/O処理プログラム3100は、FMPK113へ処理対象の仮想ページのブロックに対するリード要求を送信する。このブロックのデータについては、圧縮処理をFMPK113で行っているため、I/O処理プログラム3100は、FMPK113にFMPK113で圧縮を行っていることも伝達する(S710)。
FMPK113はS230で転送されたリード要求を受け取ると、伸長処理を伴うリード処理であることを認識し、リード対象データの格納位置を検索し、FMチップ280からリード対象データを読み出し、読み出したリード対象データをFMPK113の図示しないキャッシュメモリにステージングする(S720)。次いで、圧縮伸長回路216は、キャッシュメモリにステージングされたリード対象データに対して伸長処理を実施する(S730)。次いで、FMPK113は、伸長処理されたリード対象データをストレージコントローラ109へ送信する(S740)。
リード対象データを受信したストレージコントローラ109では、プール管理プログラム3200がリード対象データに対して、所定の圧縮アルゴリズムによる圧縮処理を実施する(S750)。
次いで、圧縮補正処理プログラム3400は、FMPK113へリード対象データをライトデータとして転送する前の事前処理を行う(S760)。圧縮補正処理プログラム3400は、圧縮データ(圧縮されたリード対象データ)のデータサイズがブロックのサイズより小さい場合は、圧縮データが格納されない部分に所定のデータ(例えば、すべてゼロ(‘0’)のデータ:調整データ)を埋め込み、ブロックサイズのデータに形成する。
その後、I/O処理プログラム3100は、ライト要求とともに、形成した圧縮データを含むブロックのデータと、圧縮データのサイズ(ライトデータの圧縮後のサイズ)の情報(圧縮サイズ情報)を、FMPK113へ送信する(S770)。
S770で送信されたライト要求等をFMPK113が受け取ると、FMPK113は、ライト要求の対象となるFMPKアドレス空間のブロック番号に対応する圧縮後サイズ2750に受け取った圧縮後サイズを登録し、圧縮補正処理プログラム3700は、ライトデータを実領域であるFMチップ280に格納するための事前処理を行う(S780)。具体的には、FMPK113は、ストレージ装置104により圧縮されて補正されたデータが転送されたことを、例えば、圧縮後サイズ情報が転送されたことにより認識する。圧縮補正処理プログラム3700は、圧縮後サイズ情報を参照し、転送されたブロック単位のデータのうち、先頭からどこまでがライトデータの圧縮データに対応する有効データであり、それ以降が埋めこまれた調整データであるかを判別する。圧縮補正処理プログラム3700は、受け取ったブロック単位のデータのうち、調整データを回収し(削除し)、有効データ(圧縮データ)を取り出す。
次いで、FMPK113のプロセッサ224は、S780で取り出した圧縮データをFMチップ280の対象の記憶領域に書き込み(S790)、ストレージコントローラ109へライト処理の完了を報告する。ライト処理の完了報告のタイミングは、S770で送信されたストレージコントローラ109からのライトデータを受け取って、図示しないバッファに一時格納完了したタイミングとしてもよい。なお、ライト処理の完了報告を受け取ったストレージコントローラ109は、圧縮率重視への圧縮アルゴリズム変更処理を終了する。
上記した圧縮率重視への圧縮アルゴリズム変更処理によると、FMチップ280に格納されているデータを、圧縮率が高い圧縮アルゴリズムによる圧縮データに変更してFMチップ280に格納させることができる。これにより、ストレージ装置104における容量効率を向上することができる。
次に、第2実施形態に係るストレージ装置について説明する。なお、第2実施形態に係るストレージ装置の説明においては、便宜的に第1実施形態に係るストレージ装置と対応する構成部分については、同様な符号を付して説明する。
第2実施形態に係るストレージ装置104においては、FMPK113は、圧縮アルゴリズムが異なる複数の圧縮機能を有しており、データの圧縮においては、FMPK113の複数の圧縮機能を使用するようにしている。
本実施形態では、ストレージコントローラ109がリードライト処理の対象となるブロックを含むページについてのアクセス頻度を判定し、アクセス頻度に応じた圧縮アルゴリズムを示す情報をFMAPK113に指示する。そして、FMPK113は、ストレージコントローラ109からの指示に基づいて、格納するデータの圧縮アルゴリズムを選択して、選択した圧縮アルゴリズムを使用してデータを圧縮する圧縮処理を行って、圧縮されたデータをFMチップ280に格納する。
図18は、第2実施形態に係るストレージ装置における圧縮アルゴリズム変更処理のフローチャートである。
この圧縮アルゴリズム変更処理は、FMPK113内で、データに対する圧縮アルゴリズムを切り替える処理を示している。
ストレージコントローラ109は、ページ毎のアクセス頻度を監視し、ページ毎に適用する圧縮アルゴリズムを決定し、ページに適用する圧縮アルゴリズムを変更することを決定すると、FMPK113に圧縮アルゴリズム変更指示を出す(S810)。圧縮アルゴリズム変更指示には、例えば、変更後のアルゴリズムを示す情報が含まれている。
FMPK113は、圧縮アルゴリズム変更指示を受け取ると、処理対象のページのデータ(対象データ)の格納位置を検索し、FMチップ280から対象データを読み出し、対象データをFMPK113内のキャッシュメモリにステージングする(S820)。
FMPK113は、キャッシュメモリにステージングされた対象データを、変更前の圧縮アルゴリズムに対応する伸長処理により伸長する(S830)。なお、伸長処理を実行する機能部としては、FMPK113のプロセッサ213であってもよいし、圧縮伸長回路116であってもよい。
次いで、FMPK113は、伸長されたデータを変更後の圧縮アルゴリズムに対応する圧縮処理により圧縮する(S840)。なお、圧縮処理を実行する機能部としては、FMPK113のプロセッサ213であってもよいし、圧縮伸長回路116であってもよい。
次いで、FMPK113のプロセッサ213は、圧縮されたデータを、FMチップ280に書き込み(S850)、ストレージコントローラ109へ処理の完了を報告する。なお、処理の完了の報告を受けたストレージコントローラ109は、圧縮アルゴリズム変更処理を終了する。
上記した第2実施形態に係るストレージ装置104によると、圧縮伸長処理による負荷が、ストレージコントローラ109に掛からないので、ストレージコントローラ109の性能を別の処理に振り分けることができる。
なお、本実施形態では、ストレージコントローラ109がアクセス頻度に基づいて圧縮アルゴリズムの変更を決定して、FMPK113に通知するようにしていたが、本発明はこれに限られず、例えば、ストレージコントとローラ109がアクセス頻度の情報をFMPK113に通知するようにし、FMPK113側で、圧縮アルゴリズムの変更を決定するようにしてもよい。
また、ストレージコントローラ109がI/Oごとや、格納する領域ごとに、データの圧縮アルゴリズムを指示するようにしてもよい。
なお、本発明は、上述の実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で、適宜変形して実施することが可能である。
例えば、上記実施形態において、ストレージコントローラ109側に、複数の圧縮アルゴリズムによる圧縮機能を備えるようにして、ストレージコントローラ109側で、複数の圧縮アルゴリズムの圧縮機能を使い分けるようにしてもよい。
また、ストレージコントローラ109側に複数の圧縮アルゴリズムによる圧縮機能を備えると共に、FMPK113に複数の圧縮アルゴリズムによる圧縮機能を備えるようにし、それら複数の圧縮機能を使い分けるようにしてもよい。
なお、上記第1実施形態では、ストレージコントローラ109にアクセス頻度が低いデータ用の圧縮アルゴリズムによる圧縮機能を実行させ、FMPK113にアクセス頻度が高いデータ用の圧縮アルゴリズムによる圧縮機能を実行させることにより、主に、ストレージコントローラ109側の負荷を軽減するようにしていたが、本発明はこれに限られず、例えば、ストレージ装置104におけるストレージコントローラ109の性能や、FMPK113の性能や、ストレージ装置104が取り扱うデータの種類等に応じて、ボトルネックとなる部分を解消するように、複数の圧縮アルゴリズムの使い分けや、圧縮アルゴリズムを実行する実行部位を決定すればよい。
100…計算機システム、101…ホスト、102…管理装置、104…ストレージ装置、105…プロセッサ、109…ストレージコントローラ、113…FMPK、210…FMコントローラ、213…プロセッサ、280…FMチップ
Claims (14)
- データを格納可能な不揮発記録媒体を備える1以上の不揮発メモリパッケージと、前記不揮発メモリパッケージに対する所定のライト要求のライトデータの格納を制御するストレージコントローラとを備えるストレージ装置であって、
第1圧縮アルゴリズムによりデータを圧縮させる第1データ圧縮部と、
第1圧縮アルゴリズムと異なる第2圧縮アルゴリズムによりデータを圧縮させる第2データ圧縮部と、を備え、
前記ストレージコントローラは、
所定の条件に基づいて、前記ライトデータを、前記第1データ圧縮部又は前記第2データ圧縮部のいずれにより圧縮させるかを決定し、決定した前記第1データ圧縮部又は前記第2データ圧縮部により前記ライトデータを圧縮させて前記不揮発メモリパッケージに格納させるストレージ装置。 - 前記ストレージ装置においては、
前記不揮発メモリパッケージの前記不揮発記録媒体の記憶領域により構成される容量プールの記憶領域が割り当てられる仮想ボリュームが構成されており、
前記ストレージコントローラは、
ホスト装置から前記仮想ボリュームの所定のページを上書きするライト要求である上書き要求があった場合に、前記仮想ボリュームの前記所定のページに割り当てられている前記容量プールの領域に対して、前記上書き要求のライトデータを格納させるように前記不揮発メモリパッケージにライト要求を出力し、
前記不揮発メモリパッケージのコントローラは、前記ライト要求を受け取った場合に、前記容量プールの領域に対して割り当てられている記憶領域を別の記憶領域に変更し、前記別の記憶領域に前記ライトデータを格納させる
請求項1に記載のストレージ装置。 - 前記ストレージコントローラは、
前記ホスト装置との間では、前記仮想ボリュームのページを単位としたデータの送受信を行い、前記不揮発メモリパッケージとの間では、前記ページよりも小さいサイズのブロックを単位としたデータの送受信を行い、
前記ストレージコントローラは、前記ストレージコントローラに含まれている前記第1データ圧縮部又は前記第2データ圧縮部の少なくとも一方により、前記ライト要求対象のデータを圧縮して得られた圧縮データのサイズが、前記ブロックのサイズよりも小さい場合に、前記圧縮データを、所定の調整データを付加して前記ブロックのサイズに調整した後に、前記不揮発メモリパッケージに送信する
請求項2に記載のストレージ装置。 - 前記不揮発メモリパッケージは、
前記ストレージコントローラから受信した前記ブロックの中に前記調整データが含まれている場合には、前記ブロックから前記調整データを取り除いた前記圧縮データを取出し、前記圧縮データを格納する
請求項3に記載のストレージ装置。 - 前記ストレージコントローラは、
前記ホスト装置から前記仮想ボリュームに対するリード要求を受け取った場合であって、前記リード要求対象のデータが、前記ブロックのサイズよりも小さい前記圧縮データである場合に、前記圧縮データを含むブロックデータを前記不揮発メモリパッケージから取得し、前記ブロックから前記調整データを取り除いた圧縮データを取出し、前記圧縮データを伸長して、前記ホスト装置に送信する
請求項4に記載のストレージ装置。 - 前記ストレージコントローラは、
前記ライト要求のライト先となる前記仮想ボリュームのページのアクセス頻度に基づいて、前記第1データ圧縮部又は前記第2データ圧縮部のいずれにより圧縮させるかを決定する
請求項2乃至請求項5のいずれか一項に記載のストレージ装置。 - 前記第1圧縮アルゴリズムは、前記第2圧縮アルゴリズムよりも圧縮処理に係る時間が長いが圧縮率が高いアルゴリズムであり、
前記ストレージコントローラは、
前記アクセス頻度が所定の閾値よりも大きい場合には、前記第2データ圧縮部により前記ライトデータを圧縮させ、前記アクセス頻度が所定の閾値よりも大きくない場合には、前記ライトデータを前記第1データ圧縮部により圧縮させる
請求項6に記載のストレージ装置。 - 前記ストレージコントローラは、
前記仮想ボリュームのページに格納されているデータについて、前記アクセス頻度に基づいて、前記データを圧縮するために適切なアルゴリズムである適切アルゴリズムを決定し、前記データを圧縮するために使用したアルゴリズムが適切アルゴリズムであるか否かを判定し、前記データを圧縮するために使用したアルゴリズムが適切アルゴリズムでない場合に、前記データを伸長させた後、前記適切アルゴリズムで圧縮させて、前記不揮発メモリパッケージに格納させる
請求項6又は請求項7に記載のストレージ装置。 - 前記ストレージコントローラは、
前記ストレージ装置における業務負荷が所定値以下である場合であって、前記データを圧縮するために使用したアルゴリズムが適切アルゴリズムでない場合に、前記データを伸長させた後、前記適切アルゴリズムで圧縮させて、前記不揮発メモリパッケージに格納させる
請求項8に記載のストレージ装置。 - 前記第1データ圧縮部は、ストレージコントローラ側に備えられ、
前記第2データ圧縮部は、前記不揮発メモリパッケージに含まれている
請求項1乃至請求項9のいずれか一項に記載のストレージ装置。 - 前記第1データ圧縮部及び前記第2データ圧縮部は、ストレージコントローラ側に備えられている
請求項1乃至請求項9のいずれか一項に記載のストレージ装置。 - 前記第1データ圧縮部及び前記第2データ圧縮部は、前記不揮発メモリパッケージに含まれている
請求項1乃至請求項9のいずれか一項に記載のストレージ装置。 - データを格納可能な不揮発記録媒体を備える1以上の不揮発メモリパッケージと、前記不揮発メモリパッケージに対するデータの格納を制御するストレージコントローラとを備えるストレージ装置によるデータ管理方法であって、
前記ストレージ装置は、
第1圧縮アルゴリズムによりデータを圧縮させる第1データ圧縮部と、
第1圧縮アルゴリズムと異なる第2圧縮アルゴリズムによりデータを圧縮させる第2データ圧縮部と、を備えており、
所定の条件に基づいて、前記第1データ圧縮部又は前記第2データ圧縮部のいずれによりデータを圧縮させるかを決定し、
決定した前記第1データ圧縮部又は前記第2データ圧縮部により前記データを圧縮させて前不揮発メモリパッケージに格納させる
データ管理方法。 - データを格納可能な不揮発記録媒体を備える1以上の不揮発メモリパッケージに対するデータの格納を制御するストレージコントローラを構成するコンピュータに実行させるためのデータ管理プログラムであって、
前記コンピュータを、
所定の条件に基づいて、第1圧縮アルゴリズムによりデータを圧縮させる第1データ圧縮部、又は前記第1圧縮アルゴリズムと異なる第2圧縮アルゴリズムによりデータを圧縮させる第2データ圧縮部のいずれによりデータを圧縮させるかを決定する手段と、
決定した前記第1データ圧縮部又は前記第2データ圧縮部により前記データを圧縮させて前記不揮発メモリパッケージに格納させる手段と、
して機能させるためのデータ管理プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017203499A JP2019079113A (ja) | 2017-10-20 | 2017-10-20 | ストレージ装置、データ管理方法、及びデータ管理プログラム |
CN201810890953.8A CN109697025B (zh) | 2017-10-20 | 2018-08-07 | 存储装置、数据管理方法和存储介质 |
US16/103,577 US11112971B2 (en) | 2017-10-20 | 2018-08-14 | Storage device, data management method, and data management program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017203499A JP2019079113A (ja) | 2017-10-20 | 2017-10-20 | ストレージ装置、データ管理方法、及びデータ管理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019079113A true JP2019079113A (ja) | 2019-05-23 |
Family
ID=66169301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017203499A Pending JP2019079113A (ja) | 2017-10-20 | 2017-10-20 | ストレージ装置、データ管理方法、及びデータ管理プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11112971B2 (ja) |
JP (1) | JP2019079113A (ja) |
CN (1) | CN109697025B (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7411127B2 (ja) | 2020-09-17 | 2024-01-10 | 株式会社日立製作所 | ストレージ装置及びデータ処理方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11204716B2 (en) * | 2019-01-31 | 2021-12-21 | EMC IP Holding Company LLC | Compression offloading to RAID array storage enclosure |
US11055188B2 (en) | 2019-04-12 | 2021-07-06 | EMC IP Holding Company LLC | Offloading error processing to raid array storage enclosure |
US11061612B2 (en) * | 2019-05-20 | 2021-07-13 | Micron Technology, Inc. | Internal communication interface management |
CN112306974A (zh) * | 2019-07-30 | 2021-02-02 | 深信服科技股份有限公司 | 一种数据处理方法、装置、设备及存储介质 |
JP7467064B2 (ja) * | 2019-10-17 | 2024-04-15 | キオクシア株式会社 | メモリシステムおよびガベッジコレクション制御方法 |
CN111061428B (zh) * | 2019-10-31 | 2021-05-18 | 华为技术有限公司 | 一种数据压缩的方法及装置 |
CN113094292B (zh) * | 2020-01-09 | 2022-12-02 | 上海宝存信息科技有限公司 | 数据存储装置以及非挥发式存储器控制方法 |
US20210271393A1 (en) * | 2020-03-02 | 2021-09-02 | Silicon Motion, Inc. | Method and apparatus for performing data access management of all flash array server |
JP7390251B2 (ja) * | 2020-04-30 | 2023-12-01 | 株式会社日立製作所 | ストレージシステム |
US20220066928A1 (en) * | 2020-09-02 | 2022-03-03 | Microsoft Technology Licensing, Llc | Pooled memory controller for thin-provisioning disaggregated memory |
JP2022075261A (ja) * | 2020-11-06 | 2022-05-18 | キヤノン株式会社 | 情報処理装置、情報処理方法およびプログラム |
CN112486854B (zh) * | 2020-12-28 | 2022-08-23 | 潍柴动力股份有限公司 | 与非型闪存Nand Flash存储管理方法及装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5112003B2 (ja) | 2007-10-19 | 2013-01-09 | 株式会社日立製作所 | ストレージ装置及びこれを用いたデータ格納方法 |
US8341501B2 (en) * | 2009-04-30 | 2012-12-25 | International Business Machines Corporation | Adaptive endurance coding of non-volatile memories |
TWI459197B (zh) * | 2011-04-21 | 2014-11-01 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與記憶體儲存裝置 |
WO2015087424A1 (ja) * | 2013-12-12 | 2015-06-18 | 株式会社日立製作所 | ストレージ装置及びストレージ装置の制御方法 |
WO2015181902A1 (ja) * | 2014-05-28 | 2015-12-03 | 株式会社日立製作所 | 計算機システムおよび計算機システム制御方法 |
CN105630687B (zh) * | 2014-10-27 | 2019-01-08 | 群联电子股份有限公司 | 数据写入方法、存储器控制电路单元与存储器存储装置 |
WO2016105241A1 (en) * | 2014-12-23 | 2016-06-30 | Emc Corporation | Selective compression in data storage systems |
CN105094709A (zh) * | 2015-08-27 | 2015-11-25 | 浪潮电子信息产业股份有限公司 | 一种固态盘存储系统的动态数据压缩方法 |
US10390114B2 (en) * | 2016-07-22 | 2019-08-20 | Intel Corporation | Memory sharing for physical accelerator resources in a data center |
-
2017
- 2017-10-20 JP JP2017203499A patent/JP2019079113A/ja active Pending
-
2018
- 2018-08-07 CN CN201810890953.8A patent/CN109697025B/zh active Active
- 2018-08-14 US US16/103,577 patent/US11112971B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7411127B2 (ja) | 2020-09-17 | 2024-01-10 | 株式会社日立製作所 | ストレージ装置及びデータ処理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190121549A1 (en) | 2019-04-25 |
CN109697025A (zh) | 2019-04-30 |
CN109697025B (zh) | 2022-04-29 |
US11112971B2 (en) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019079113A (ja) | ストレージ装置、データ管理方法、及びデータ管理プログラム | |
US11886294B2 (en) | Distributed storage system | |
US20230409473A1 (en) | Namespace change propagation in non-volatile memory devices | |
US9081690B2 (en) | Storage system and management method of control information therein | |
US9250808B2 (en) | Data storage and moving of relatively infrequently accessed data among storage of different types | |
US9323655B1 (en) | Location of data among storage tiers | |
US10671309B1 (en) | Predicting usage for automated storage tiering | |
US9965381B1 (en) | Indentifying data for placement in a storage system | |
KR20150105323A (ko) | 데이터 스토리지 방법 및 시스템 | |
US20220035788A1 (en) | Deferred reclamation of invalidated entries that are associated with a transaction log in a log-structured array | |
US10503424B2 (en) | Storage system | |
US10592150B2 (en) | Storage apparatus | |
US20180307426A1 (en) | Storage apparatus and storage control method | |
US11675789B2 (en) | Tracking utilization of data blocks in a storage system | |
US20220164146A1 (en) | Storage system and control method for storage system | |
US10853257B1 (en) | Zero detection within sub-track compression domains | |
JP2020046752A (ja) | 記憶装置及び情報処理システム | |
WO2018142622A1 (ja) | 計算機 | |
US11144445B1 (en) | Use of compression domains that are more granular than storage allocation units | |
US11853582B2 (en) | Storage system | |
US11782842B1 (en) | Techniques for reclaiming dirty cache pages | |
US20240134712A1 (en) | Techniques for efficient flushing and providing optimal resource utilization | |
US20240126687A1 (en) | Garbage collection processing in storage systems | |
US20230409223A1 (en) | Compression ratio-aware data deduplication | |
WO2018051446A1 (ja) | オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 |