JP2013532862A - ストレージシステム及びその制御情報の管理方法 - Google Patents

ストレージシステム及びその制御情報の管理方法 Download PDF

Info

Publication number
JP2013532862A
JP2013532862A JP2013520290A JP2013520290A JP2013532862A JP 2013532862 A JP2013532862 A JP 2013532862A JP 2013520290 A JP2013520290 A JP 2013520290A JP 2013520290 A JP2013520290 A JP 2013520290A JP 2013532862 A JP2013532862 A JP 2013532862A
Authority
JP
Japan
Prior art keywords
control information
partition
user data
data
cache
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013520290A
Other languages
English (en)
Other versions
JP5593577B2 (ja
Inventor
亮彦 荒木
裕介 野中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2013532862A publication Critical patent/JP2013532862A/ja
Application granted granted Critical
Publication of JP5593577B2 publication Critical patent/JP5593577B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/26Using a specific storage system architecture
    • G06F2212/261Storage comprising a plurality of storage devices
    • G06F2212/262Storage comprising a plurality of storage devices configured as RAID
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/46Caching storage objects of specific type in disk cache
    • G06F2212/466Metadata, control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本発明の一実施形態は、ストレージシステムのキャッシュメモリを複数のパーティションに分割し、1つ以上のパーティションの情報は、制御情報を含みユーザデータと異なるデータで構成されている。ストレージシステムは、制御情報を格納したLUとキャッシュパーティションとの間において、動的にデータの入れ替えを行う。これにより、キャッシュメモリ容量の上限があるストレージシステムにおいて、制御情報へのアクセス性能を維持しつつ多くの制御情報を使用することができる。
【選択図】 図2

Description

本発明は、ストレージシステム及びその制御情報の管理方法に関し、特に、ストレージシステムにおける制御情報のキャッシュメモリを使用した管理に関する。
ストレージシステムには、スナップショットのように利便性を高めるいくつかの機能が搭載されている。スナップショット機能を実現するためには、差分情報や世代管理情報などの制御情報が必要である。近年、スナップショットの取得可能世代数の増加、適用可能容量の増加、差分の取得サイズの縮小など、機能強化が求められている。これら機能強化のためには、大量の制御情報が必要となる。
一方で、制御情報に十分なアクセス性能が求められる場合がある。例えば、スナップショット機能における差分データのように、制御情報へのアクセスがユーザからのI/O(Input/Output)要求に連動するものである場合、その制御情報のアクセス性能が低いと、ユーザのI/O要求を実用的な時間内に処理できなくなってしまう。
このため高速アクセスが必要な制御情報は、キャッシュメモリやローカルメモリなど高速なメモリに格納されることがある。しかし、ストレージシステムに搭載可能なメモリ容量は上限があるので、メモリに格納可能な制御情報量には制限がある。これにより、スナップショットの世代数や適用可能容量、差分データの取得サイズなど機能スペックは制限されてしまう。
特開2004−30090号公報
このメモリ容量の制限を解決する1つの方法は、制御情報の階層記憶管理である。この階層記憶管理は、メモリに収まらない制御情報をHDD(Hard Disk Drive)などの不揮発性記憶デバイスに格納し、メモリとHDDとの間で制御情報を置換する。これにより、メモリ容量が制限されている中で、大量の制御情報の保持と制御情報へ高速アクセスの両立を図ることができる。制御情報への高いアクセス性能を実現するためには、制御情報の階層記憶管理は、メモリ内に格納する制御情報量を適切に管理することが必要である。
ここで、特許文献1は、キャッシュメモリを複数のパーティションに分割し、パーティション毎に指定されたデータタイプのデータを保持することで、特定のデータタイプのみが高いキャッシュヒット率を有することを避ける技術を開示している。しかし、特許文献1が示しているデータタイプはユーザデータの使用形態やアクセス性能であり、ユーザデータであるか制御情報であるか、といったデータの種別を意味していない。
このため、特許文献1に示す技術では、ユーザデータと制御情報が同一のパーティションに配置されてしまう。このため、例えば、ストレージシステムが大量のスナップショットを作成すると、パーティション中の制御情報が増大し、ユーザデータがパーティションから掃きだされる。これにより、ユーザデータのキャッシュヒット率が大きく下がり、性能が劣化してしまう恐れがある。
逆に、シーケンシャルアクセスなどでパーティションがユーザデータで満たされてしまうと、制御情報アクセス時にHDDへのI/Oが発生し、スナップショット取得時の性能が劣化してしまう恐れがある。
従って、本発明の1つの目的は、ストレージシステムにおいて、制御情報のアクセス性能を極力維持しつつ、大量の制御情報を利用可能とすることである。
本発明の一態様のストレージシステムは、不揮発性記憶領域と、キャッシュ領域と、コントローラとを備える。前記キャッシュ領域は、格納するデータが前記不揮発性記憶領域に格納される制御情報を含みユーザデータと異なるデータからなる制御情報キャッシュパーティションと、格納するデータが前記不揮発性記憶領域に格納されるユーザデータを含むユーザデータキャッシュパーティションとを備える。前記コントローラは、前記不揮発性記憶領域と前記制御情報キャッシュパーティションとの間において、データを所定のアルゴリズムに従って置換する。
本発明の一態様によれば、制御情報のアクセス性能を維持しつつ、多くの制御情報をストレージシステムが利用可能となる。
第1の実施形態におけるストレージステムの構成例を示す図である。 第1の実施形態におけるキャッシュ管理の概要を示す図である。 第1の実施形態における制御情報の一例を示す図である。 第1の実施形態におけるアドレス空間の概念を示す図である。 第1の実施形態におけるストレージ管理情報テーブルの一例を示す図である。 第1の実施形態におけるパーティション割り当て管理テーブルの一例を示す図である。 第1の実施形態におけるLU管理テーブルの一例を示す図である。 第1の実施形態における先頭ポインタ管理テーブルの一例を示す図である。 第1の実施形態におけるパーティション割り当て表示画面の一例を示す図である。 第1の実施形態におけるパーティションにLUを割り当てる処理の一例を示すフローチャートである。 第1の実施形態におけるパーティションを新規に作成する処理の一例を示すフローチャートである。 第1の実施形態におけるパーティションの容量を変更する処理の一例を示すフローチャートである。 第1の実施形態において、ユーザデータに保証コードを付与する概念を示す図である。 第1の実施形態における保証コード生成の概要を示す図である。 第2の実施形態におけるストレージシステムの構成例を示す図である。 第2の実施形態におけるキャッシュ管理の概要を示す図である。 第2の実施形態におけるストレージ管理情報テーブルの一例を示す図である。 第2の実施形態におけるLU管理テーブルの一例を示す図である。 第2の実施形態におけるチャンク管理テーブルの一例を示す図である。 第2の実施形態におけるチャンクを制御情報格納用に割り当てる処理の一例を示すフローチャートである。 第3の実施形態におけるストレージシステムの構成例を示す図である。 第3の実施形態におけるLU管理テーブルの一例を示す図である。 第3の実施形態における制御情報を格納先の選択処理の一例を示すフローチャートである。 第3の実施形態における制御情報のデステージング処理のフローチャートである。 第4の実施形態におけるキャッシュ管理の概要を示す図である。 第4の実施形態における先頭ポインタ管理テーブルの一例を示す図である。 第4の実施形態におけるデステージング処理のフローチャートである。
以下において、本発明の実施の形態を説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略及び簡略化がなされている。又、各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略されている。
<第1の実施形態>
以下、第1の実施形態について図1乃至図14を用いて説明する。図1は、本実施形態におけるストレージシステムの一例を示すブロック図である。ストレージシステム100は、ストレージシステム100を制御するコントローラ101、ホストコンピュータ10とデータの送受信を行うホストインタフェースポート102を備える。
ストレージシステム100は、さらに、プロセッサ103、キャッシュメモリ104、メインメモリ105、ストレージシステム100を管理する管理コンピュータ11とストレージシステム100を接続する管理ポート106を備える。キャッシュメモリ104は、物理的にはメインメモリ105と同一のメモリでもよい。各構成要素の数は2以上でもよい。
ストレージシステム100は、さらに、ユーザデータを格納するユーザデータ格納LU(Logical Unit)301及び制御情報を格納する制御情報格納LU302を備える。制御情報は、ストレージシステム100の動作制御に使用される情報であって、コマンド及びコマンド以外の制御データ(例えばスナップショット機能の差分データ)を含む。なお、本明細書において、データはユーザデータ及び制御情報を含む。
典型的には、図1に示すように、ストレージシステム100は、複数のユーザデータ格納LU301及び制御情報格納LU302を備える。ストレージシステム100は内部ネットワーク107を備え、各構成要素は、内部ネットワーク107により相互に接続している。なお、以下においては、説明の便宜上、1つのユーザデータ格納LU301及び1つの制御情報格納LU302を備えるストレージシステム100について説明する。
メインメモリ105は制御プログラム108及び後述するストレージ管理情報テーブル110を格納している。制御プログラム108は、例えば、ホストコンピュータ10が発行するI/O(Input/Output)要求コマンドを解釈し、データの読み書きなどストレージシステム100の内部処理を制御するソフトウェアである。制御プログラム108は、ストレージシステム100の利便性を高めるための機能、例えば、スナップショットやDynamic Provisioning、を備える。
LUは、ストレージシステム100において入出力アクセスの単位となる、論理的な記憶領域の単位であり、不揮発性記憶領域である。ホストコンピュータ10は、自身に割り当てられたLUを、1つの記憶デバイス(ボリューム)と認識する。LUは、典型的には、RAID(Redundant Array of Independent Disks)によって与えられる記憶領域である。ボリュームは、複数のLUの記憶領域で構成されていてもよい。
RAIDは、典型的には、HDD(Hard Disk Drive)又はSSD(Solid State Drive)で構成されるが、これらと異なる複数の不揮発性データ記憶デバイスにより構成されていてもよい。LUは、このように冗長性を有するシステムの記憶領域であることが好ましいが、本実施形態においてはこの限りではなく、データや制御情報を格納する記憶領域であればよい。
図2は、第1の実施形態のキャッシュ管理の概要を示すブロック図である。キャッシュメモリ104はキャッシュ機能を有するメモリ領域であり、物理的な1又は複数のメモリデバイスが、そのメモリ領域を与えることができる。典型的には、キャッシュメモリ104は揮発性半導体記憶領域であるが、本実施形態は、キャッシュメモリ104のため、どのようなメモリデバイスを使用してもよい。
図2に示すように、本実施形態のキャッシュメモリ104は、複数のパーティションを備えている。複数のパーティションは、少なくとも、1つのユーザデータキャッシュパーティション210及び1つの制御情報キャッシュパーティション220を含む。キャッシュメモリ104は、複数のユーザデータキャッシュパーティション及び複数の制御情報キャッシュパーティションを含んでいてもよい。本明細書において、キャッシュメモリにおいて論理的又は物理的に画定した領域をキャッシュパーティションと呼ぶ。ユーザデータを格納するキャッシュパーティションをユーザデータキャッシュパーティションと呼び、制御情報を格納するキャッシュパーティションを制御情報キャッシュパーティションと呼ぶ。
ユーザデータキャッシュパーティション210は、ユーザデータのキャッシュを行うメモリ領域であり、制御プログラム108との間でユーザデータの受け渡しを行う。ユーザデータは、ストレージシステム100とホストコンピュータ10との間で送受信されるデータである。
例えば、ホストコンピュータ10が発行するI/O要求コマンドを受領した制御プログラム108は、ユーザデータ格納LU301からユーザデータキャッシュパーティション210に、特定のユーザデータをステージングする。ステージングは、LUのデータをキャッシュメモリ104に書き込む処理である。
制御プログラム108の参照要求に従って、コントローラ101は、ユーザデータ格納LU301からユーザデータキャッシュパーティション210にユーザデータをステージングする。制御プログラム108はユーザデータキャッシュパーティション210上のユーザデータを参照する。
また制御プログラム108はユーザデータキャッシュパーティション210上のユーザデータを更新する。更新されたユーザデータは、更新と同期又は非同期に、ユーザデータ格納LU301に反映される(デステージング)。デステージングは、更新されたキャッシュメモリ104上のデータをLUに書き込むことで、LUとキャッシュメモリ104のデータを一致させる。
パーティション上のユーザデータは、所定のアルゴリズムに従ってキューにより管理される。典型的なアルゴリズムは、LRU(Least Recently Used)やFIFO(First In FirstOUT)である。1つのユーザデータキャッシュパーティション210に1つ又は複数のLUを対応付けることができる。ユーザデータキャッシュパーティション210は、ユーザデータのみを格納してもよいし、ユーザデータに加え制御情報を格納してもよい。
制御情報キャッシュパーティション220は、制御情報を含みユーザデータとは異なるデータを格納する。制御情報キャッシュパーティション220の格納データが、制御情報を含みユーザデータとは異なるデータからなることで、より多くの制御情報をキャッシュすることができる。以下に説明する好ましい構成において、制御情報キャッシュパーティション220の格納データは制御情報からなる。制御情報キャッシュパーティション220は、制御情報のデータキャッシュを行うメモリ領域であり、制御プログラム108との間で制御情報の受け渡しを行う。制御情報は制御情報格納LU302に格納され、制御プログラム108の指示に従って制御情報キャッシュパーティション220に制御情報格納LU302から格納される(ステージング)。
制御プログラム108は、制御情報キャッシュパーティション220に格納されている制御情報を参照し、それを更新する。更新された制御情報は、更新と同期に又は非同期に、制御情報格納LU302にデステージされる。制御情報キャッシュパーティション220上の制御情報もまた、所定のアルゴリズムに従ってキューにより管理される。このアルゴリズムは、ユーザデータキャッシュパーティションと同一でもよく異なっていてもよい。この際ユーザデータキャッシュパーティション210とは別のキューであることが望ましい。
制御情報キャッシュパーティション220は、1つ又は複数の制御情報格納LU302に対応付けられ、それが格納するデータは、制御情報(データ)で構成されている。このように、ユーザデータを格納することなく、制御情報のみを格納するパーティションにより、キャッシュメモリ104上で、ストレージシステム100の制御に適切な量の制御情報(を格納する領域)を常に確保することができる。
本実施形態は、好ましい構成として、キャッシュメモリ104上に制御情報が常駐する、制御情報常駐パーティション230を有する。制御情報常駐パーティション230は、性能要件が厳しいなど、制御プログラム108が制御情報格納LU302から読み出すことが好ましくない制御情報を常駐するパーティションである。
制御プログラム108は、制御情報常駐パーティション230を参照する。制御プログラム108は、制御情報常駐パーティション230のデータの更新及びデステージングを行ってもよいが、そのデータをLUの他のデータ(他のアドレスのデータ)と置換することはない。制御情報常駐パーティション230により、特定の制御情報を、他の制御情報に影響されることなく常にキャッシュ上に維持することができる。
図2は、1つのユーザデータキャッシュパーティション210と2つの制御情報キャッシュパーティション(その内の1つは制御情報常駐パーティション230)を例示しているが、制御プログラム108は、複数のユーザデータキャッシュパーティション210、複数の制御情報常駐パーティション230及び複数の制御情報キャッシュパーティション220を、キャッシュメモリ104において定義してもよい。
図3は、ストレージシステム100におけるスナップショット機能の制御情報の一例を示すブロック図である。スナップショット機能は、あるLUのある時点でのイメージを作成する機能である。具体的には、LUの更新が発生する度に、更新部分の位置情報(アドレス)と更新前のデータを逐次記録することで、LUの更新履歴を管理する。これにより、コントロールプログラム108は、LUを以前の任意の状態に復元することが可能となる。
このようなスナップショット機能を実現するためには、スナップショットの制御情報が必要である。図3は、その制御情報の一例であるスナップショット管理テーブル50を示している。スナップショット管理テーブル50は、スナップショットLU管理テーブル51、スナップショット世代管理テーブル52、差分ビットマップ管理テーブル53を含むテーブルである。
図3は、それぞれの1つのスナップショット世代管理テーブル52及び差分ビットマップ管理テーブル53を示すが、スナップショット管理テーブル50は、全てのスナップショットLU番号に対応するスナップショット世代管理テーブル52を備え、又、全てのスナップショット世代管理テーブル52の全ての世代番号に対応する差分ビットマップ管理テーブル53を備える。
スナップショットLU管理テーブル51は、スナップショットLU番号54とポインタ55のカラムを含む。スナップショットLU番号54のフィールドは、スナップショットを取得しているLUを識別する番号を格納する。このフィールドの値は、LUを識別することができればどのような値でもよい。ポインタ55のフィールドは、スナップショット世代管理テーブル52を指すポインタを格納する。
スナップショット世代管理テーブル52は、世代番号56及びポインタ60のカラムを含む。世代番号56のフィールドは、該当LUのスナップショット取得世代を示す値を格納する。スナップショットを取得する毎に、世代番号56(及びポインタ60)のフィールドに新たな値が追加される。世代番号56は、世代を識別するどのような識別子でもよい。スナップショット世代管理テーブル52のポインタ60のフィールドの値(ポインタ)は、差分ビットマップ管理テーブル53を指す。
差分ビットマップ管理テーブル53は、ページ番号57、差分ビットマップ58、差分格納先アドレス59のカラムを備える。ページは、スナップショット機能によって取得する更新の容量単位のことであり、1ページは、典型的には、数キロバイトから数メガバイト程度である。ページ番号57のフィールドは、該当LUの世代番号56におけるページを識別するための番号を格納し、番号以外の識別子を格納してもよい。
差分ビットマップ58のフィールドは、該当ページが更新されているか否かを識別するビットを格納する。例えば、更新されているページの差分ビットマップ58のフィールドは「1」を格納し、更新されていないページのフィールドは「0」を格納する。差分格納先アドレス59のフィールドは、該当ページの差分、つまりLUのスナップショット取得前の内容が格納されている領域を指すアドレスを格納する。
制御プログラム108は、スナップショット管理テーブル50において、LUを更新する度に差分ビットマップ管理テーブル53を更新し、新たなスナップショットを取得する度にスナップショット世代管理テーブル52を更新する。
このように、制御情報は、テーブル毎に参照や更新される頻度や契機が異なる。このため、例えば差分ビットマップ管理テーブル53の制御情報は、制御情報常駐パーティション230に常駐し、制御情報キャッシュパーティション220は、スナップショット世代管理テーブル52及びスナップショットLU管理テーブル51の制御情報を格納する、というようにパーティションを使い分けてもよい。
このほか、図示しないが、制御プログラム108は、制御情報の種類によってパーティションを使い分けてもよい。例えば、LUのRAID構成を管理する制御情報がそのLUのみに格納されていると、LU障害時にRAID構成を復旧できない恐れがある。制御プログラム108は、RAID構成の復旧を行えるように、この制御情報を制御情報常駐パーティション230に格納する。
図4は、本発明における階層管理のアドレス空間の概念の一例を示すブロック図である。本実施形態は、制御プログラム108に広大な仮想アドレス空間30を予め用意する。制御プログラム108は、仮想アドレス空間30を自由に利用してよい。例えば、仮想アドレス空間30の一部分を、スナップショット機能の制御情報用に割り当ててもよい。
本明細書において、制御情報が割り当たっているアドレスを割り当て済みアドレスと呼び、制御情報が割り当てられていないアドレスを未割り当てアドレスと呼ぶ。又、制御情報格納LU302において割り当て済みアドレスと対応付いている領域を、割り当て済み領域と呼ぶ。仮想アドレス空間30は、その一部又は全部が制御情報格納LU302の記憶領域に対応する。
仮想アドレス空間30の連続する部分が、制御情報格納LU302上では不連続なセクションからなる記憶領域(不連続領域)に対応していてもよい。例えば割り当て済みアドレスA31は、制御情報格納LU302上の連続する割り当て済み領域34に対応するが、割り当て済みアドレスB32は、制御情報格納LU302上では不連続な割り当て済み領域34に対応している。
また割り当て済み領域34の一部分又は全部分は、制御情報キャッシュパーティション220上の記憶領域に格納されている(ステージング済み)。割り当て済み領域34のうちステージング(LUからのコピー)が終了している領域のことを、ステージング済み領域と呼ぶ。ステージング済み領域35は、キャッシュパーティション220上に格納されているが、キャッシュパーティション220上の連続領域に格納されていてもよいし、不連続領域に格納されていてもよい。
本例において、全ての制御情報は制御情報格納LU302の記憶領域に格納されている。制御プログラム108の指示に従って、コントローラ101は、その一部を制御情報キャッシュパーティション220にコピーする(ステージング)。制御プログラム108は、制御情報格納LUの全ての制御情報を制御情報キャッシュパーティション220に格納してもよい。
制御プログラム108は制御情報キャッシュパーティション220に格納されている制御情報を参照したり更新したりする。制御プログラム108は、制御情報キャッシュパーティション220に割り当てる記憶領域を動的に決定してもよいし、仮想アドレス空間30の全部が制御情報格納LU302に対応していてもよい。制御プログラム108は、仮想アドレス空間30が対応する制御情報格納LU302内の制御情報を制御情報キャッシュパーティション220にステージングする。
図5は、ストレージ管理情報テーブル110の構成の一例を示すブロック図である。ストレージ管理情報テーブル110は、パーティション割当管理テーブル120、LU管理テーブル130、先頭ポインタ管理テーブル140を含む。各テーブルの詳細を、以下に図6〜図8を参照して説明する。なお、本実施形態において、メインメモリ105に格納される情報はデータ構造に依存せず、どのようなデータ構造で表現されていてもよい。例えば、ストレージ管理情報テーブル110は、上記3つのテーブルとは異なる数及び構造のテーブルを有していてもよい。
図6は、パーティション割当管理テーブル120の一例を示すブロック図である。パーティション割当管理テーブル120は、パーティション番号121、セグメントサイズ122、容量123、割り当て済みLU番号124、常駐フラグ125、制御情報割り当てフラグ126のカラムを含む。
パーティション番号カラム121は、キャッシュメモリ104を複数のパーティションに分けた各々のパーティションを一意に識別するための番号を格納する。通常は連番でよく、各パーティションを識別するためのどのような値を格納してもよい。セグメントサイズカラム122は、各パーティションの管理サイズを示す値を格納する。異なるパーティションが同じ値を有してもよいし、異なる値を有していてもよい。
キャッシュメモリを利用するデータのサイズや用途に応じて適切なセグメントサイズを設けることで、ストレージシステム100の性能向上を図ることができる。例えば、データベース用途では、数KB程度の比較的小さいサイズのデータのI/Oが生じるため、セグメントサイズを数KB程度に設定することで多数のI/Oをキャッシュ可能となる。
一方、ストリーミング用途など大きいサイズのデータのI/Oが生じる場合は、セグメントサイズを256KBなど大きく設定することで、大きいサイズのデータを分割することなくキャッシュ可能となる。このように適切なセグメントサイズを設けることで、ストレージシステム100の性能向上が期待できる。
容量カラム123は、各パーティションのキャッシュ可能な容量を示す値を格納する。割当済みLU番号カラム124は、パーティションに割り当てているLUを一意に識別する番号を格納し、LUを一意に識別できるどのような値を格納してもよい。本実施形態において、1つのパーティションに複数のLUを割り当ててもよい。又、図示しないが、1つのLUのデータを複数のキャッシュパーティションに格納してもよい。
常駐フラグ125のフィールドは、該当キャッシュパーティション上に特定のLUが常駐しているか否かを示すフラグである。常駐フラグ125のフィールドは、例えば、該当パーティションにLUが常駐していれば「1」を格納し、常駐していなければ「0」を格納する。LUが割り当てられていないパーティションの常駐フラグフィールドは、例えば、「−」を示す値を格納して、データを格納するパーティションと区別される。
図6は、例えば、パーティション番号121が2であるパーティションに、LU番号21のLUのデータが常駐していることを示している。特定のLUのデータをキャッシュメモリ上に常駐させると、常駐させたLUに格納されている制御情報やユーザデータは必ずキャッシュヒットするため、I/O性能が向上する。本実施形態においては、1つのパーティションに複数のLUがキャッシュメモリへ常駐可能である。なお、キャッシュパーティションは、割り当てられているLUの一部のデータのみを格納してもよい。
制御情報割り当てフラグ126のフィールドは、該当パーティションに制御情報格納LU302が割り当てられているか否かを示すフラグを格納する。制御情報割り当てフラグ126のフィールドは、例えば、制御情報格納LU302が割り当てられていれば「1」を格納し、ユーザデータ格納LU301が当てられていれば「0」を格納する。
何も割り当てられていないパーティションのフィールドは、例えば、「−」を示す値を格納して、LUが割り当てられている他のパーティションと区別する。制御情報割り当てフラグ126は、パーティションが制御情報キャッシュパーティション220又は制御情報常駐パーティション230であるか否かを判断するためのフラグである。制御プログラム108は、パーティション間で異なる処理を行う場合に、このフラグを参照する。
例えば、好ましい構成において、制御プログラム108は、ユーザデータキャッシュパーティション210と制御情報キャッシュパーティション220とで、独立にパーティションの管理方法を決定する。具体的には、制御プログラム108は、キューの管理アルゴリズム(例えば、LRUやFIFO)を、2つのパーティション210、220の間で独立に決定する。
制御プログラム108は、ユーザデータへのアクセス状況により、パーティションのキャッシュ管理方法を変化させることが好ましい。例えば、制御プログラム108は、アクセス状況に応じてLRUのパラメータを調整する。これにより、アクセス状況が変化しても、ユーザデータキャッシュパーティション210の高いキャッシュヒット率を維持することができる。
一方、ユーザデータと制御情報とでは、そのアクセスの特性が異なり、制御情報のアクセス状況は、ユーザデータのように変化しない。従って、これらのパーティションの管理方法を独立に決定することで、それぞれに適切な管理方法を適用でき、共に高いキャッシュヒット率を得ることができる。
また、制御プログラム108は、停電などによる電源遮断時には、キャッシュメモリ104上のデータを不揮発性記憶領域に退避する。この退避処理において、制御プログラム108は、制御情報キャッシュパーティション220をユーザデータキャッシュパーティション210よりも優先する。制御情報をユーザデータよりも先に退避させることで、重要な制御情報をより確実に保護することができる。制御プログラム108は、制御情報常駐パーティション230に最も高い優先度を与えることが好ましい。データの退避先は、例えば、システム100内の規定の不揮発性記憶領域又は対応するLUである。
図7は、LU管理テーブル130の一例を示すブロック図である。LU管理テーブル130は、ストレージシステム100内のLUを管理するテーブルであり、LU番号131、容量132、割り当てパーティション番号133、格納データ種別134のカラムを含む。
LU番号カラム131は、LUを識別する番号を格納し、LUを識別するどのような値を格納してもよい。容量カラム132は、各々のLUの総容量を示す値を格納している。割り当てパーティション番号カラム133は、各々のLUに割り当てているキャッシュパーティションの番号を示す値を格納し、それら値はパーティション割当管理テーブル120のパーティション番号カラム121の値に対応する。
格納データ種別カラム134は、各々のLUに格納されているデータの種別を表す値を格納しており、各フィールドは、該当LUがユーザデータを格納していれば「ユーザデータ」を示す値を格納し、制御情報を格納していれば「制御情報」を示す値を格納する。これらの値は、例えば、「0」、「1」でよい。
図8は、先頭ポインタ管理テーブル140の一例を示すブロック図である。先頭ポインタ管理テーブル140は、複数のポインタリスト141を持ち、それぞれがキャッシュメモリ104上に作成された各パーティションに対応している。ポインタリスト141は、対応するパーティションのパーティション番号121、フリーキュー先頭ポインタ143、クリーンキュー先頭ポインタ144、ダーティキュー先頭ポインタ145の値を格納している。
第1の実施形態では、キャッシュパーティションの記憶領域は複数のセグメントで構成されており、制御プログラム108は、キャッシュパーティションをセグメント単位で管理し、異なる状態のセグメントを異なるキューで管理している。セグメントの状態は、例えばセグメントに何も格納されていなければ「フリー」、セグメントにデータが格納されており、そのデータと同じものがLUに格納されていれば「クリーン」、LUに同じものが格納されていなければ「ダーティ」である。
LUからデータが格納されたばかりのセグメントは「クリーン」であり、データが更新されれば「ダーティ」へ遷移する。「ダーティ」なセグメントは、LUへのデステージングにより、「クリーン」又は「フリー」へと遷移する。
制御プログラム108(コントローラ101)は、各キューをLRU(Least Reacently Used)やFIFOなどのアルゴリズムで管理する。制御プログラム108は、ポインタリスト141の各キューの先頭ポインタを参照することで、キューへアクセスする。制御プログラム108は、このように各キューを管理することで、キャッシュパーティションと不揮発性記憶領域との間において動的にデータを置換する。
図8のようにパーティション毎に独立したキューで管理することで、パーティションは相互に性能における影響を与えることがなくなる。なお本実施形態のポインタリスト141は3種類のキューを持つが、本発明においてはキューの種類はこの限りではない。
制御プログラム108は、フリーセグメントに、不揮発性記憶領域からの新たなデータを格納する(コピーする)。制御プログラム108は、クリーンセグメント及びダーティセグメントを参照し、その格納データを更新するが、新たなデータ(不揮発性記憶領域における別のアドレスのデータ)を格納(ステージング)しない。
一例において、制御プログラム108は、フリーセグメントの数が規定数(0を含む)以下となると、クリーンキューを更新して、クリーンセグメントの一部又は全部をフリーセグメントに変える。例えば、現在のフリーセグメント数と規定数との差分の数のクリーンセグメントを、フリーセグメントに再設定する。現在のクリーンセグメント数が差分数に達していない場合、全てのクリーンセグメントをフリーにする。フリーにするクリーンセグメントの選択方法は、クリーンキューのアルゴリズムに従う。
制御プログラム108は、例えば、ダーディセグメントが規定数以上となった場合又はクリーンセグメントが規定数以下となると、ダーティセグメントのデステージングを行う。制御プログラム108は、ダーティセグメントをクリーンセグメントに再設定する。制御プログラム108は、デステージングを他の契機で実行してもよい。又、ダーティセグメントをフリーセグメントに再設定してもよい。
制御プログラム108は、このように、キャッシュパーティション内でデータを格納しているセグメントをフリーセグメントに設定し、新たな不揮発性記憶領域のデータをフリーセグメントにコピーすることで、キャッシュ領域と不揮発性記憶領域との間でデータを動的に置換する。制御プログラム108は、他の方法によりデータを置換してもよい。
例えば、制御プログラム108は、クリーンセグメント及びダーティセグメントにLUからの新たなデータ(別のアドレスのデータ)をコピー(ステージング)してもよい。ダーディセグメントに新たなデータを格納する場合、デステージングを先に行う。若しくは、制御プログラム108は、全てのセグメントを同一のキューにより管理し、規定のアルゴリズムに従って、LUのデータをコピーするセグメントを決定してもよい。
図9は、パーティション割当管理画面170を示すブロック図である。パーティション割当管理画面170は、ストレージシステム100を管理するための管理コンピュータ11の表示装置が表示する。ストレージ管理者は、本画面を見ながら、管理コンピュータ11の入力装置(例えば、キーボード及びマウス)を使用して、パーティションとLUの間の割当を操作する。又、管理者は、管理コンピュータ11の入出力装置を通じて新しいパーティションの作成も可能である。
本例において、パーティション割当管理画面170は、パーティション割当状況表示テーブル171、CM残容量表示部174、新規パーティション作成ボタン175を含む。パーティション割当状況表示テーブル171は、パーティション番号121、割当済みLU番号124、容量123のカラムを有し、この情報は、図6のパーティション割当管理テーブル120から抽出したそのテーブル120の一部の情報である。
ストレージ管理者は、パーティション割当状況表示テーブル171を見ることで、パーティションへの割当状況を確認することができる。CM残容量表示部174は、キャッシュメモリ104の総容量からパーティションに割り当てた総容量を引いた数値(未定義領域の総容量値)を示し、新たにパーティションを作成する際に割り当て可能なキャッシュメモリ104の容量を示す。新規パーティション作成ボタン175は、新たにパーティションを作成し、パーティションにLUを割り当てる処理に移るためのボタンである。
図10は、パーティションにLUを新たに割り当てる処理のフローチャートである。本フローチャート及び以降のフローチャートは、ストレージ管理者や制御プログラム108の指示に従ってコントローラ101内のプロセッサ103(制御プログラム108)が処理を行うものとして記述するが、本発明においてはこの限りではない。なお本フローチャートは、新規パーティション作成ボタン175が押された契機で開始してよいし、ストレージ管理者が別のインタフェースを用いて本処理を開始してもよい。
まずプロセッサ103は、パーティションを新たに作成する必要があるかどうか判定する(ステップ1001)。本実施形態はパーティションをLUに割り当てるため、未割当であるパーティションが存在していなければ、パーティションの割当が不可能である。あるいは、未割当であるパーティションが存在していても、その容量が不足している場合は、新規にパーティションを作成する。
ステップ1001は、パーティション割当管理画面170を通じてストレージ管理者に問い合わせてもよい。ステップ1001の判定結果がYESである場合、プロセッサ103はパーティション作成工程(ステップ1002)に進む。ステップ1002は、図11を参照して後述する。
ステップ1001の判定結果がNOである場合、又はステップ1002の処理終了後、プロセッサ103は割り当てるパーティションを選択する(ステップ1003)。プロセッサ103は、ストレージ管理者に割り当てるパーティションの番号を指定させてもよいし、プロセッサ103が自動的にパーティションを選択してもよい。次にプロセッサ103は、割り当てるパーティションのセグメントサイズを指定する(ステップ1004)。
ステップ1004は、パーティション割当管理画面170を通じてストレージ管理者に問い合わせてもよいし、プロセッサ103が自動的に指定してもよい。最後にプロセッサ103は、本処理による更新を基にストレージ管理情報テーブル110を更新し(ステップ1005)、この処理を終了する。
図11は、制御プログラム108に従うプロセッサ103がパーティションを新規に作成する処理のフローチャートであり、図10のステップ1002の詳細である。まずプロセッサ103は、新たに作成するパーティションの番号を指定する(ステップ1101)。このとき指定する番号は、既に割り振られている番号以外とする。次にプロセッサ103は、管理コンピュータ11に指定された作成するパーティションの容量を特定する(ステップ1102)。
次にプロセッサ103は、ステップ1102にて指定された容量が、CM残容量表示部174が表示している容量以下であるかどうかを判定する(ステップ1103)。ステップ1103の判定結果がNOであれば、プロセッサ103は管理コンピュータ11に対してエラーメッセージを送信してCM残容量表示部174が示す値以下の容量を指定するよう促し(ステップ1104)、ステップ1102へ戻る。管理コンピュータ11は、その表示装置により、上記エラーメッセージを表示する。
ステップ1103の判定結果がYESであれば、プロセッサ103はステップ1101、ステップ1102で指定された番号と容量のパーティションを新たに作成する(ステップ1105)。最後にプロセッサ103は、本処理による更新を基にストレージ管理情報テーブル110を更新し(ステップ1106)、この処理を終了する。
図12は、キャッシュパーティションの容量を変更する処理のフローチャートである。キャッシュパーティションの容量を拡大すると、キャッシュメモリパーティション上に存在するユーザデータ又は制御情報量が増えるため、HDDなど不揮発記憶媒体へのアクセス率が減少し、I/O性能の向上が期待できる。
プロセッサ103は、制御プログラム108に従って、あるいはストレージ管理者からの要求に応じて、キャッシュパーティションの容量を変更する。まずプロセッサ103は、管理コンピュータ11から、容量を変更するパーティションの指定番号を取得する(ステップ1201)。次にプロセッサ103は、管理コンピュータ11からの指示を参照して、パーティションの容量を拡大するか判定する(ステップ1202)。拡大する場合(ステップ1202の判定結果がYES)は、プロセッサ103は、指定されている拡大後のパーティション容量を特定する(ステップ1203)。
次にプロセッサ103は、ステップ1203にて特定した拡大後のパーティション容量から増加容量(指定増加容量)を決定し、それがCM残容量表示部174の示す値以下であるか判定する(ステップ1204)。ステップ1204の判定結果がNOの場合、プロセッサ103は管理コンピュータ11にCM残容量以下の容量を指定するように促すエラーメッセージを送信して(ステップ1205)、ステップ1203へ戻る。管理コンピュータ11は、受信したエラーメッセージを表示装置の画面に表示する。
ステップ1204の判定結果がYESの場合、プロセッサ103は、パーティション容量を指定された数値に変更する(ステップ1206)。容量増加の場合、プロセッサ103は、指定されたパーティションに未定義領域から指定された容量を追加する。パーティション割当管理テーブル120の容量123及びCM残容量表示部174の値を更新し(ステップ1207)、処理を終了する。
ステップ1202の判定結果がNOの場合(容量の縮小の場合)、プロセッサ103は管理コンピュータ11から指示された縮小後の容量を特定し、それから縮小容量(指定縮小容量)を決定する(ステップ1208)。プロセッサ103は、ステップ1206へと進み、容量縮小の場合、指定されたパーティションから指定された容量を未定義領域に追加する。
好ましい構成において、コントローラ101(プロセッサ103又は他の回路)は、パーティション毎の性能を監視し、システム全体の性能が最適化されるようにパーティションの最適容量を計算し、ストレージ管理者に対して推奨してもよい。パーティションの性能を表す好ましい数値は、キャッシュヒット率である。プロセッサ103は、算出された最適容量を管理コンピュータ11に送信し、管理コンピュータ11は、その値を表示装置において表示する。
例えば、プロセッサ103は、各パーティションのキャッシュヒット率と、各パーティションに対して設定された値とを比較する。プロセッサ103は、キャッシュヒット率が設定値に達していないパーティションの最適容量を現在の値よりも大きい値に設定する。プロセッサ103は、キャッシュヒット率が設定値よりも大きくその差分が規定値以上のパーティションの最適容量を、現在値よりも小さい値に設定してもよい。
パーティションの設定値は、パーティションの種類毎又はパーティション毎に異なっていてもよい。制御情報常駐パーティション230の制御情報は高速なアクセスが要求されるため、その容量は縮小しないことが好ましい。管理コンピュータ11は、コントローラ101からパーティションのキャッシュヒット率を受信し、それらを表示装置において表示してもよい。ストレージ管理者は、その数値から、容量変更すべきパーティションを選択することができる。
指定パーティションの指定増加容量がCM残容量表示部174の値未満である場合、プロセッサ103は、(管理コンピュータ11からの指示により)他のパーティションの容量を小さくすることで、増加容量を補ってもよい。プロセッサ103は、図12に示すフローチャートに従って特定のパーティションの容量を小さくする処理を行った後、同様のフローチャートに従って、目的のパーティションの容量を増加する。
管理コンピュータ11からコントローラ101への容量変更の要求は、管理コンピュータ11上で動作するプログラムが行ってもよい。制御プログラム108は、管理コンピュータ11からの要求というイベントとは異なるイベントに応じて容量変更をしてもよい。例えば、上述のように、特定のキャッシュパーティションのキャッシュヒット率が設定値未満となるイベントに応じて、制御プログラム108は、自動的にパーティション容量を変更してもよい。制御プログラム108は、上記新規キャッシュパーティション作成(図11を参照)においても、既存パーティションの容量を変化させることができる。
次に、本実施形態における先読み処理を説明する。ストレージシステム100の制御プログラム108は、ホストコンピュータ10が発行した参照(読み出し)要求が、ユーザデータ格納LU301の連続するアドレス上のデータを対象としていた場合に、次のアドレスのデータを予めステージングしておく、いわゆる先読み処理を実施することがある。先読み処理によって、特にシーケンシャルアクセス性能の向上が期待できる。
本実施形態において、制御情報の先読み処理は、有効な性能向上手段である。制御プログラム108は、ストレージシステム110の処理(例えばスナップショットを使用した復旧処理)において制御情報格納LU302から必要な制御情報を読み出し、制御情報キャッシュパーティション220に格納する(ステージング)。それに付随して、その後の工程で必要と予測される制御情報を、予め制御情報格納LU302から読み出し、制御情報キャッシュパーティション220に格納する(ステージング)。
例えば、図3のスナップショット管理テーブル50を使用して、LUを以前の状態にリストアする場合、ストレージシステム100は、特定の世代番号56が示す世代の差分ビットマップ管理テーブル53を連続的に参照し、差分ビットマップ58が「1」であるページを以前のデータに復旧する。
制御プログラム108は、管理コンピュータ11からリストアの指示を受けると、この処理に必要な(と予測される)制御情報を予め制御情報キャッシュパーティション220に格納しておく。また、制御プログラム108は制御情報のアクセスパターンを予見又は学習し、必要と予測される制御情報を予め制御情報キャッシュパーティション220に格納しておいてもよい。
他の例において、定期的にバックアップを取得するプログラムが動作していれば、制御プログラム108は、バックアップ時刻の前に、バックアップ用の制御情報を予め制御情報格納LU302からパーティション220に格納(ステージング)しておいてよい。
制御プログラム108は、このような制御情報の先読みと、パーティション容量の変更を組み合わせて実行してもよい。例えば、制御プログラム108は、バックアップ時刻が近付いてきたらパーティション容量を拡大し、より多くのバックアップ用制御情報をステージングしておいてよい。繰り返しになるが、これら制御情報の先読みやパーティション容量の変更は、ストレージ管理者が指定してもよいし、制御プログラム108が自動的に決定してもよい。もしくは、制御プログラム108は、ストレージ管理者に対して推奨するメッセージを、管理コンピュータ11に出力してもよい。
次に本実施形態における、制御情報への保証コードの付与について説明する。まず、保証コードが付与される仕組みについて、図13を用いて簡単に説明する。図13は、第1の実施形態においてユーザデータに保証コードが付与される様子を示すブロック図である。第1の実施形態のようなストレージシステム100では、ホストコンピュータ10から送信されたユーザデータ190は、キャッシュメモリ104に一旦格納された後、ユーザデータ格納LU301に格納される。
このとき、コントローラ101は、ユーザデータ190がキャッシュメモリ104に一旦格納された時点で、ユーザデータ190に保証コード191を付与する。保証コード191は、ユーザデータ190の真正性を保証するためのコードであり、LRC(Longitudinal Redundancy Check)コードなどのビット演算による方式などが用いられる。典型的には、コントローラ101の回路が保証コード191を生成するが、制御プログラム108に従ってプロセッサ103がそれを生成してもよい。
コントローラ101は、ユーザデータ190が読み出される際に保証コード191を参照することで、データが破壊されていないか確認することができる。データの破壊は、LU(不揮発記憶領域)にデータを書き込む際に、制御プログラム108のバグや、ハードウェア部品の故障などによって引き起こされることがある。このように、ストレージシステム100は、ユーザデータに保証コードを付与し、それをチェックすることで、ホストコンピュータ10と送受信するユーザデータの真正性を確保し、装置としての信頼性を高めている。
好ましい構成において、コントローラ101は、制御情報をLUに格納するため、制御情報に保証コード191を付与する。ただし、制御情報とユーザデータ190とは、更新の容量単位が異なる。一般的に、制御プログラム108は、512バイト程度の単位でユーザデータ190を参照及び更新する。
この場合、コントローラ101は、ユーザデータの512バイトの全ビットをXOR演算することによって4バイトや8バイト程度のLRCコードを生成し、ユーザデータに付与した後に、ユーザデータ格納LU301に格納する。つまり、512バイトのユーザデータに4バイトや8バイト程度の保証コードが付与され、516バイトや520バイトのデータ長でLU301に格納される。
このため、キャッシュメモリやHDDの最小のアクセス単位は、516バイトや520バイトである。一方、制御プログラム108は、一度の処理で、数ビット程度の制御情報の参照又は更新しかしない場合がある。わずか数ビットの更新の度に512バイトの制御情報の全ビットを演算することは無駄な処理が多く、ストレージシステム100の性能低下を招いてしまう。
そこで、制御情報のように数ビット程度の更新時にLRCコードを効率よく生成する方法を、図14に示す。本方法は、LRCによる保証コードの生成を効率よく実施する。まず、更新される前の制御情報(更新前制御情報193)と、更新された後の制御情報(更新後制御情報194)を比較し、更新されたビット列を含むブロックを抽出する。
本方法は、さらに、抽出した更新前のブロックと更新後のブロックとの間の差分を示す変更ブロック、そして更新前制御情報193に付随している保証コード(更新前保証コード195)を用いて、更新後の保証コード(更新後保証コード196)を生成する。保証コード生成回路197は、入力された、更新前制御情報193の選択されたブロック、更新後制御情報194の選択されたブロック及び更新前の保証コード195から、更新後保証コード196を生成する。
以上の方法により、数ビットから数バイト程度の更新においても、保証コードを低負荷で生成することが可能となる。なお保証コード生成回路197は、コントローラ101内のハードウェア部品であってもよいし、制御プログラム108の機能の一部であってもよい。
以上述べたように、第1の実施形態は、ストレージシステム100のキャッシュメモリ104を複数のパーティションに分割し、1つ以上のパーティションに制御情報(を格納するLUの領域)を割り当てる。ストレージシステム100は、そのキャッシュパーティションと制御情報を格納したLUとの間で動的にデータの入れ替えを行うことで、大容量の制御情報を利用可能とし、かつ、ユーザデータの操作に影響されること無く安定した性能を維持することができる。
<第2の実施形態>
以下において、第2の実施形態について図15乃至図20を用いて説明する。本実施形態においては、主に、第1の実施形態との差異を説明する。図15は、ストレージシステムの一例を示すブロック図である。第1の実施形態とは、ユーザデータ格納LU301と制御情報格納LU302がプールボリューム303と通常LU304となっている点が異なる。
プールボリューム303は、Dynamic Provisioningと呼ばれる機能によって実現される仮想的な記憶領域であり、複数の不揮発性実領域(実的なLU)を、仮想的に単一の記憶領域とみなしたものである。コントローラ101は、1つのプールボリューム303を複数の仮想的なLU(ホストに対する仮想ボリューム)と関連付けることができ、仮想的なLUの記憶領域は、動的にプールボリューム303から割り当てられる。
本明細書において、プールボリューム303から割り当てられる記憶領域の単位を、チャンクと呼ぶ。好ましくは、複数のチャックは、1つのパリティ列(パリティの作成単位)において混在しない。つまり、1つのパリティ列は1つのチャンクに格納される。
第1の実施形態は、ユーザデータをユーザデータ格納LU301に書き込み、制御情報を制御情報格納LU302に書き込む。これに対して、第2の実施形態は、ユーザデータと制御情報を共に、プールボリューム303に書き込む。このように、第2の実施形態は、チャンク単位の記憶領域をユーザデータ又は制御情報の格納に用いる。これにより、第1の実施形態のように予め決まった容量のLUを用意しておく必要がないため、制御情報の格納に用いる領域の容量を削減することが可能となり、ストレージシステム100の容量効率の向上が期待できる。
なお、第2の実施形態において、プールボリューム303以外に通常LU304を同時に用いてもよい。また第2の実施形態において、通常LU304も制御情報を格納してもよい。この点は第1の実施形態で説明しており、重複する部分の説明を省略する。
図16は、第2の実施形態のキャッシュ管理の概要を示すブロック図である。図16は、第2の実施形態におけるユーザデータと制御情報の格納の概念を示している。キャッシュメモリ104上に複数のキャッシュパーティションが存在し、制御プログラム108がユーザデータと制御情報をそれぞれパーティションに割り当て、それらを参照及び更新する点は、第1の実施形態と同様である。第2の実施形態では、ユーザデータと制御情報が、それぞれチャンク305に格納される点が第1の実施形態と異なる。
制御情報を格納するチャンク305は、ユーザデータを格納するチャンクと同一のプールボリューム303から割り当ててよいが、管理の容易性から、ユーザデータと制御情報は別々のチャンク305に格納することが望ましい。
図17は、第2の実施形態におけるストレージ管理情報テーブル110の構成例を示している。第1の実施形態のストレージ管理情報テーブル110とは、チャンク管理テーブル150が追加されている点と、LU管理テーブル180が第1実施形態のLU管理テーブル130と異なる構成を有する点が異なる。
図18は、第2の実施形態におけるLU管理テーブル180の構成例を示している。第1の実施形態のLU管理テーブル130とは、割当プール番号/チャンク番号181のカラムが追加されている点が異なる。第2の実施形態において、仮想的なLUはプールボリューム303のチャンク305を記憶領域として動的に利用する。
制御プログラム108は、複数のプールボリューム303からチャンク305を仮想的なLUに割り当ててもよい。そこで、制御プログラム108は、割当プール番号/チャンク番号181によって、仮想的なLUを構成するプールボリューム303とチャンク305を管理する。仮想的なLUにチャンク305を追加する場合は、制御プログラム108は、新たな割当プール番号/チャンク番号181を追加する。
第2の実施形態においては、ストレージシステム100は、仮想的なLUだけでなく通常LU304も備えていてもよい。通常LU304を利用する場合、割当プール番号/チャンク番号181のフィールドは、例えば「−」を示す値を格納し、仮想LUと区別される。
好ましい構成において、制御情報キャッシュパーティション220が格納する制御情報は、プールボリューム303において複数のRAIDグループに分散して格納される。RAIDグループは、RAIDを構成する複数のデータ記憶デバイスからなるグループである。1つのチャンク305が1つのRAIDグループ内記憶領域により構成されている場合、複数のチャンク305が、制御情報キャッシュパーティション220に関連付けられ、本パーティション220に格納されうる制御情報を、格納する。
このように、複数のRAIDグループが、制御情報キャッシュパーティション220に関連付けられた制御情報を格納することで、パーティション220内に格納されていない制御情報へのアクセスが1つのRAIDグループに集中することを避けることができ、制御情報へのアクセス遅延を低減することができる。
第2の実施形態では制御情報をプールボリューム303のチャンク305に格納しているが、プールボリューム303を実現するDynamic Provisioning機能の制御情報をチャンク305に格納してしまうと、Dynamic Provisioning機能が必要としている制御情報を格納しているチャンク305の場所が不明となる恐れがある。これを防ぐため、Dynamic Provisioning機能の制御情報は通常LU304に格納する、又は特定のチャンクのみに格納するようにしてもよい。
図19は、第2の実施形態におけるチャンク管理テーブル150の構成例を示すブロック図である。チャンク管理テーブル150は、チャンク305の割当状況を管理するテーブルである。チャンク管理テーブル150は、プールボリューム番号/チャンク番号181、割当パーティション番号133、割当済みLU番号124、空き容量151、格納データ種別134のカラムを含む。
プールボリューム番号/チャンク番号181のフィールドは、チャンク305を一意に認識するための情報を格納する。その値は、プールボリューム303の番号とチャンク305の番号の組み合わせでよい。割当パーティション番号133のフィールドは、該当チャンク305が割り当てられているキャッシュパーティション番号を格納する。
チャンク305にユーザデータも制御情報も割り当てられていない場合は、そのチャンク305は、パーティションにも割り当てられないため、割当パーティション番号133のフィールドは、例えば、「−」を示す値を格納する。割当LU済み番号124のフィールドは、該当チャンク305が割り当てられている仮想的なLUの番号を示す値を格納する。LUに割り当てられていないチャンク305のフィールドは、例えば、「−」を示す値を格納する。
空き容量151のフィールドは、該当チャンク305の残り利用可能容量を示す値を格納する。格納データ種別134のフィールドは、該当チャンク305に格納されているデータの種類を示す情報を格納する。例えば、ユーザデータが格納されていれば「ユーザデータ」を示す値を格納し、制御情報が格納されていれば「制御情報」を示す値を格納する。
図20は、チャンク305を制御情報格納に割り当てる処理のフローチャートを示す。プロセッサ103は、制御プログラム108に従ってこの処理を行う。プロセッサ103は、まず、制御情報を格納するために新たにチャンク305を割り当てる必要があるか否か判定する(ステップ1301)。判定は、例えば、格納する制御情報の容量と、制御情報の格納に既に割り当てられているチャンク305の空き容量151を比較し、空き容量151が格納する制御情報の容量未満の場合、新たなチャンクを割り当てることを決定する。
ステップ1301の判定がYESの場合、プロセッサ103は割り当てるチャンクを選択する(ステップ1302)。このとき割り当てるチャンク305は、チャンク管理テーブル150を参照して未割当であるチャンク305を選択してもよいし、ストレージ管理者に選択させてもよい。
次にプロセッサ103は、ステップ1302にて選択したチャンク305に制御情報を格納し(ステップ1303)、さらに、ストレージ管理情報テーブル110を更新し(ステップ1304)、この処理を終了する。ステップ1301での判定結果がNOの場合、プロセッサ103は、新たなチャンク305を割り当てることなく、割当済みのチャンク305に制御情報を格納し(ステップ1305)、ステップ1304に移る。
<第3の実施形態>
以下、第3の実施形態について図21乃至図24を参照して説明する。本実施形態においては、第1の実施形態及び第2の実施形態との差異を主に説明する。図21は、ストレージシステムの一例を示すブロック図である。本実施形態のストレージシステムは、HDDやSSDなど複数種類のデータ記憶デバイスによるプールボリューム306、307及び通常LU308、309を備えている点において、第1及び第2の実施形態と異なる。
ストレージシステム100は、HDDやSSDなど複数種類の不揮発記憶デバイスを備え、デバイスの特性に応じて格納するユーザデータの種別を分ける。高いアクセス性能が要求されるユーザデータをアクセス速度が速い(アクセス性能が高い)SSDに格納することで、ストレージシステム100のアクセス性能が向上する。又、参照頻度の低いユーザデータを、アクセス性能が劣るがビット単価の低いHDDに格納することで、ストレージシステム100の装置コストを低減することができる。
以下においては、HDDとSSDの2種類のデータ記憶デバイスを備えるストレージシステム100を説明するが、アクセス性能が異なるデータ記憶デバイスの種類は、これらに限定されない。
図21において、プールボリューム(SSD)306は、SSDで構成されたプールボリューム303である。プールボリューム(HDD)307は、HDDで構成されたプールボリューム303である。同様に通常LU(SSD)308は、SSDで構成された通常LU304である。通常LU(HDD)308は、HDDで構成された通常LU304である。
図22は、第3の実施形態におけるLU管理テーブル160の一例を示すブロック図である。第3の実施形態におけるLU管理テーブル160において、第2の実施形態におけるLU管理テーブル130に、メディア種別161及び対応ユーザデータLU番号162のカラムが追加されている。
メディア種別161のフィールドは、該当LUが、SSDの記憶領域で構成されていれば「SSD」を示す値を格納し、HDDの記憶領域で構成されていれば「HDD」を示す値を格納する。該当LUに対してプールボリューム(SSD)306の領域が割り当てられている場合、そのフィールドは、「SSD」を示す値を格納する。該当LUに対してプールボリューム(HDD)307の領域が割り当てられていれば、「HDD」を示す値を格納する。
対応ユーザデータLU番号162のフィールドは、該当LUに制御情報が格納されている場合に、その制御情報がどのLUのユーザデータに関する制御情報であるかを示している。例えばLU番号0のLUにおけるユーザデータの制御情報がLU番号10のLUに格納されていれば、LU番号10のレコードにおける対応ユーザデータLU番号162のフィールドは、「0」を格納する。対応ユーザデータLU番号162のフィールドは、複数のLU番号を示す値を格納してもよい。
第3の実施形態のように、複数種類の不揮発記憶デバイスを利用するストレージシステム100は、制御情報を格納する不揮発性記憶デバイスを使い分ける必要がある。例えば、高いアクセス性能が要求されるユーザデータを高速なSSDが格納しているが、そのユーザデータのアクセスに必要とされる制御情報を低速なHDDが格納していると、制御情報のアクセス時にHDDへのアクセスが発生し、SSDに格納したユーザデータへのアクセス性能が、低速なHDD並みに減少する恐れがある。
これを防ぐためには、ユーザデータに関連付けられている制御情報を、少なくともそのユーザデータが格納されているデータ記憶デバイスと同等以上のアクセス性能を備えるデータ記憶デバイスに格納するよう考慮する必要がある。このとき、ストレージ管理者が制御情報を格納するデータ記憶デバイスを選択してもよいし、コントローラ101が自動的に制御情報の格納先を選択してもよい。
以下において、コントローラ101が自動的に制御情報の格納先を選択する処理のフローチャートを図23に示す。図23は第3の実施形態における、制御情報の格納先の選択処理の一例を示すフローチャートである。プロセッサ103は、制御プログラム108に従ってこの処理を行う。
まず、プロセッサ103は、不揮発記憶領域に格納する制御情報を選択する(ステップ1401)。次にプロセッサ103は、ステップ1401で選択した制御情報が関連するユーザデータが、SSDに格納されているか否か判定する(ステップ1402)。その判定において、プロセッサ103は、LU管理テーブル160におけるユーザデータ対応LU番号162を参照したのち、メディア種別161を参照する。
ステップ1402での判定結果がYESの場合、プロセッサ103は制御情報の格納場所にSSDの記憶領域で構成されたLU又はSSDの記憶領域で構成されたプールボリュームのチャンクを選択する(ステップ1403)。ステップ1402での判定結果がNOの場合、プロセッサ103は制御情報の格納場所にHDDの記憶領域で構成されたLU、又はHDDの記憶領域で構成されたプールボリュームのチャンクを選択する(ステップ1404)。最後にプロセッサ103は、ストレージ管理情報テーブル110を更新し(ステップ1405)、本処理を終了する。
なお、本処理の開始タイミングは、前述した同期デステージング、又は非同期デステージングの開始時でよい。ユーザデータの格納場所は、ユーザ、管理者又はコントローラ101によって変更される場合があるため、ユーザデータの格納場所の変更を契機として、制御プログラム108は本処理を開始してもよい。制御プログラム108は、定期的に、パーティション上のユーザデータと制御情報の格納場所を確認し、それぞれの格納場所が異なっている場合に自動的に本処理を開始してもよい。
好ましい構成において、制御プログラム108は、制御情報が関連するユーザデータの格納先デバイス種別に基づき、予め設定されている優先度に従って所定の制御情報を優先的に置換対象データとする。例えば、高性能なSSDに格納されているユーザデータに関連する制御情報と、低性能なHDDに格納されているユーザデータに関連する制御情報では、前者よりも後者を優先的に置換対象データとする。制御プログラム108は、データを置換対象データとすると、そのデータを消去してもよく、もしくは、キューのエントリを変更して(例えばクリーンセグメントをフリーセグメントにして)、データの状態を変えてもよい。
高性能なSSDに格納されているユーザデータに関する制御情報をなるべくキャッシュメモリに残すことで、SSDに格納されているユーザデータへのアクセス性能が、制御情報のアクセスによって低下しないようにすることができる。
図24は、第3の実施形態において、SSDに格納されているユーザデータに関する制御情報を優先的にキャッシュメモリ104に残す置換処理のフローチャートである。プロセッサ103は、制御プログラム108に従って、この処理を行う。以下においては、1つのパーティションにおいて、SSDに格納されているユーザデータに関する制御情報とHDDに格納されている制御情報のそれぞれに、ダーティキューを備える構成例を説明する。まず、プロセッサ103は、全てのダーティキューに存在するエントリ数をカウントし、デステージング開始閾値と比較する(ステップ1501)。デステージング開始閾値は、デステージングを開始する判断基準の閾値であり、パーティション上のダーティ状態なデータ又はダーティ状態な制御情報の総数である。
一般的なストレージシステムでは、ダーティ状態なユーザデータや制御情報は、不揮発記憶媒体に未反映であるため、キャッシュメモリ104への電源が遮断されると、データロストとなってしまう。そこで、ある程度ダーティなユーザデータや制御情報がキャッシュメモリ104上に溜まったら、プロセッサ103は、積極的に不揮発記憶媒体に反映させる、いわゆるデステージングを開始する。
ステップ1501での判定結果がNOであれば、プロセッサ103は処理を終了する。ステップ1501での判定結果がYESの場合、プロセッサ103は、HDDに格納されているユーザデータに関する制御情報がダーティキューに存在するか否か判定する(ステップ1502)。ステップ1502での判定結果がNOの場合、後述するステップ1505へと移る。ステップ1502での判定結果がYESの場合、プロセッサ103はHDDに格納されているユーザデータに関するダーティ状態な制御情報を不揮発性記憶領域に反映する(デステージング)(ステップ1503)。
次に、プロセッサ103は、再度、ダーティキューに存在するエントリ数をカウントし、デステージング開始閾値と比較する(ステップ1504)。ステップ1504での判定結果がNOの場合、プロセッサ103はストレージ管理情報テーブル110を更新し(ステップ1507)、処理を終了する。ステップ1504での判定結果がYESの場合、プロセッサ103は、SSDに格納されているユーザデータに関する制御情報がダーティキューに存在するか判定する(ステップ1505)。
ステップ1505での判定結果がNOの場合、プロセッサ103は、ステップ1507へと移る。ステップ1505での判定結果がYESの場合、プロセッサ103はSSDに格納されているユーザデータに関するダーティ状態な制御情報を不揮発性記憶領域に反映する(デステージング)。最後にプロセッサ103は、ステップ1507へと移り、本処理を終了する。本処理の開始タイミングは、同期デステージング又は非同期デステージング開始時としてよい。
図8を参照して説明したように、制御プログラム108は、フリーセグメントに新たなデータを不揮発性記憶領域から書き込む(ステージング)。さらに、制御プログラム108は、フリーセグメントが規定数に達していない場合、クリーンセグメントをフリーにする。上記の処理は、HDDに格納されているユーザデータに関する制御情報のデジステージングを、SSDに格納されているユーザデータに関する制御情報よりも優先的に行う。
これにより、SSDに格納されているユーザデータに関する制御情報を優先的にダーティに維持し、キャッシュメモリ104内に優先的に残すことができる。上記処理は、ダーディセグメントのデステージングを優先度に従って行うが、制御プログラム108は、フリーセグメントに再設定するクリーンセグメントの選択を、優先度に従って行ってもよい。例えば、HDDに格納されているユーザデータに関する制御情報のセグメントを、SSDに格納されているユーザデータに関する制御情報のセグメントよりも優先して、フリーセグメントに変化させる。
第3の実施形態ではストレージシステム100に搭載されたメディアの種類としてSSDとHDDの2種類を挙げたが、より多くの種類のデータ記憶デバイスが搭載されていてもよい。例えば、SSDを、更にSLC(Single Level Cell)やMLC(Multiple Level Cell)などフラッシュメモリの種類に分けてもよい。
また、HDDを更にSASやSATAなどのインタフェースの種別で分けてもよいし、テープデバイスなどがあってもよい。より多くの種類のメディアを搭載する場合であっても、ユーザデータや制御情報を格納するメディア種別を、コントローラ101やプロセッサ103が自動的に判断してよい。
<第4の実施形態>
図25は、第4の実施形態におけるキャッシュ管理の概要を示す図である。第1、第2、第3の実施形態とは、キャッシュメモリ104の同一パーティション内にユーザデータと制御情報が混在している点が異なる。本実施形態は、キャッシュパーティションを有するキャッシュメモリ104にも適用することができる。例えば、ユーザデータキャッシュパーティション210が、ユーザデータに加え制御情報を格納する構成において、そのユーザデータキャッシュパーティション210に対して本実施形態を適用できる。
以下においては、キャッシュメモリ104が制御情報用のパーティション220、230を備えてないストレージシステム100の例を説明する。図25に示すように、キャッシュメモリ104は、ユーザデータと制御情報を同一の領域内に格納する。
本実施形態のコントローラ101は、ユーザデータと制御情報のそれぞれにLRU管理するキューを備え、それらキューに異なる優先度を設定して、LRU管理する。なお、ストレージシステム100は、LRUと異なるアルゴリズムを使用してもよいことは、上記他の実施形態と同様である。
図26は、第4の実施形態における先頭ポインタ管理テーブル140の一例のブロック図を示す。図26に示す先頭ポインタ管理テーブル140は、第1、第2、第3の実施形態の先頭ポインタ管理テーブル140の構成に加え、制御情報フラグ146のカラムを有している。
制御情報フラグ146は、ポインタリスト141が管理対象としているキューが、ユーザデータであるか制御情報であるかを示すためのフラグである。例えば、制御情報フラグが「1」であるポインタリスト141は、制御情報をLRU管理しているキューである。一方、制御情報フラグが「0」であるポインタリスト141は、ユーザデータをLRU管理しているキューである。
このようにキューの管理対象が制御情報であるかユーザデータであるかを分け、同期デステージ又は非同期デステージの実行時に、ユーザデータをLRU管理しているキューからデステージを開始することで、制御情報を優先的にキャッシュメモリ104上に残すことが可能となる。
ストレージシステムがアクセスするデータ単位について言及すれば、前述の通り、制御情報はユーザデータに比べて格段にアクセスデータ単位が小さい。つまり、アクセス1回に必要なキャッシュメモリ容量は、ユーザデータよりも制御情報は少ない。このため、キャッシュメモリを多く消費するユーザデータを優先的に置換対象データとすることで、より多くの制御情報をキャッシュメモリ上に残すことが可能となる。以上により、制御情報のキャッシュヒット率が向上し、制御情報へのアクセス性能を維持可能となる。
図27は、第4の実施形態において、ユーザデータよりも制御情報を優先的にキャッシュメモリ104に残す処理のフローチャートである。プロセッサ103は、制御プログラム108に従ってこの処理を行う。まずプロセッサ103は、全てのダーティキューに存在するエントリ数をカウントし、デステージング開始閾値と比較する(ステップ1601)。
ステップ1601での判定結果がNOであれば、プロセッサ103は処理を終了する。ステップ1601での判定結果がYESの場合、プロセッサ103は、制御情報フラグが「0」であるポインタリスト141、つまりユーザデータを管理するポインタリスト141のダーティキューにエントリが存在するか判定する(ステップ1602)。
ステップ1602での判定結果がNOの場合、プロセッサ103は、後述するステップ1605へと移る。ステップ1602での判定結果がYESの場合、プロセッサ103は、ユーザデータを管理するダーティキューのエントリ、つまりダーティなユーザデータのデステージングを行う(ステップ1603)。
次に、プロセッサ103は、再度、ダーティキューに存在するエントリ数をカウントし、デステージング開始閾値と比較する(ステップ1604)。ステップ1604での判定結果がNOの場合、プロセッサ103はストレージ管理情報テーブル110を更新し(ステップ1607)、本処理を終了する。ステップ1604での判定結果がYESの場合、プロセッサ103は、制御情報フラグが「1」であるポインタリスト141、つまり制御情報を管理するポインタリスト141のダーティキューにエントリが存在するか判定する(ステップ1605)。
ステップ1605での判定結果がNOの場合、プロセッサ103は、ステップ1607へと移る。ステップ1605での判定結果がYESの場合、プロセッサ103は制御情報を管理するダーティキューのエントリ、つまりダーティな制御情報をデステージする(ステップ1606)。最後に、プロセッサ103は、ステップ1607へと移り本処理を終了する。
以上のように、本処理は、ユーザデータのデステージングを制御情報のデステージングよりも優先する。これにより、ユーザデータのセグメントは、制御情報のセグメントよりも優先してクリーン状態に変化する。図24を参照して説明したように、これにより制御情報をユーザデータに優先してキャッシュメモリ104内に留めることができる。
上記処理は、ダーティセグメントのデステージングを優先度に従って行うが、制御プログラム108は、フリーセグメントに再設定するクリーンセグメントの選択を、優先度に従って行ってもよい。制御プログラム108は、ユーザデータのクリーンセグメントを、制御情報のクリーンセグメントよりも優先してフリーセグメントに再設定する。
なお上記処理において、予めユーザデータのキューの大きさと制御情報のキューの大きさが定義されていてもよい。また、制御プログラム108は、キューの大きさを動的に変化させることで、ホストからのアクセスパターンに応じてストレージシステム100の性能を高めることも可能である。例えば、制御プログラム108は、スナップショットを大量に作成するために、一時的に制御情報のキューを大きくしてもよいし、第1の実施形態で述べた先読み処理と同期してキューの大きさを変化させてもよい。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。例えば、本発明のストレージシステムは、各実施形態における一部の構成要素のみを備えていてもよく、上記の異なる実施形態の構成要素を備えることもできる。
プログラムはプロセッサによって実行されることで、定められた処理をメモリ及びポートを用いながら行う。上記実施形態において制御プログラム108を主語とする説明は、プロセッサ103を主語とした説明でもよい。また、プログラムが実行する処理は、そのプログラムが動作するコントローラ101が行う処理であり、又、ストレージシステム100が行う処理である。
制御プログラム108の少なくとも一部は、コントローラ101における専用ハードウェアによって実現されてもよい。プログラムは、プログラム配布サーバや、計算機読み取り可能な非一時的記憶媒体によって装置にインストールすることができ、各装置の不揮発性記憶領域に格納することができる。
説明の明確化のため、上記実施形態は1台の装置からなるストレージシステム100及び1台のホストコンピュータ10を有するが、本発明は複数のストレージサブシステム及び複数のホストコンピュータを有するシステムに適用することができる。
上記実施形態は、1つのプロセッサ103を備えるコントローラ101を例示するが、コントローラは、複数のプロセッサを備えることができ、上記プロセッサ103の処理をこれら複数のプロセッサが処理してもよい。上記実施形態は、1台の管理コンピュータ11を例示するが、本発明のシステムは、複数の管理コンピュータを備えることができる。そのうちの1つは、表示用コンピュータであってもよく、複数のコンピュータが管理コンピュータ11と同等の処理を行ってもよい。上記異なる実施形態において説明された構成要素を、一つのストレージシステムに実装することができる。上記各実施形態において説明されたストレージシステムにおいて、その構成要素の一部を省略してもよい。
10:ホストコンピュータ
11:管理コンピュータ
100:ストレージシステム
101:コントローラ
102:ホストインタフェースポート
103:プロセッサ
104:キャッシュメモリ
105:メインメモリ
106:管理ポート
107:内部ネットワーク
210:ユーザデータキャッシュパーティション
220:制御情報キャッシュパーティション
230:制御情報常駐パーティション
301:ユーザデータ格納LU
302:制御情報格納LU
303:プールボリューム
304:通常LU
305:チャンク
306:プールボリューム(SSD)
307:プールボリューム(HDD)
308:通常LU(SSD)
309:通常LU(HDD)

Claims (15)

  1. 不揮発性記憶領域と
    格納するデータが、前記不揮発性記憶領域に格納される制御情報を含みユーザデータと異なるデータからなる制御情報キャッシュパーティションと、格納するデータが、前記不揮発性記憶領域に格納されるユーザデータを含むユーザデータキャッシュパーティションとを備える、キャッシュ領域と、
    前記不揮発性記憶領域と前記制御情報キャッシュパーティションとの間において、データを所定のアルゴリズムに従って置換する、コントローラと、
    を備えるストレージシステム。
  2. 前記キャッシュ領域は、前記不揮発性記憶領域に格納される制御情報の一部が常駐するパーティションをさらに含む、
    請求項1に記載のストレージシステム。
  3. 前記不揮発性記憶領域は、仮想ボリュームに動的に割り当てられる複数の記憶領域を含むプールボリュームを備え、
    前記制御情報キャッシュパーティションに格納される制御情報は、前記プールボリュームにおける複数のRAIDグループに分散して格納される、
    請求項2に記載のストレージシステム。
  4. 前記不揮発性記憶領域は、アクセス性能が異なる複数種類の記憶デバイスの記憶領域により構成されており、
    前記不揮発性記憶領域におけるユーザデータに関する制御情報は、そのユーザデータが格納されている記憶デバイス以上のアクセス性能を備える記憶デバイスに格納される、
    請求項3に記載のストレージシステム。
  5. 前記コントローラは、制御情報が関連するユーザデータの格納先記憶デバイスの種類及びデバイス種類に対する規定の優先度に従って、前記制御情報キャッシュパーティションにおいて置換対象とするデータを決定する、
    請求項4に記載のストレージシステム。
  6. 前記コントローラは、前記制御情報キャッシュパーティションのデータ置換方法を、前記ユーザデータキャッシュパーティションとは独立して決定する、
    請求項5に記載のストレージシステム。
  7. 前記コントローラは、電源遮断に対応して、前記制御情報キャッシュパーティションに格納されているデータを、前記ユーザデータキャッシュパーティションに格納されているデータよりも先に退避させる、
    請求項6に記載のストレージシステム。
  8. 前記コントローラは、所定のイベントに応じて前記制御情報キャッシュパーティションの容量を変更する、
    請求項7に記載のストレージシステム。
  9. 前記コントローラは、現在処理に必要な制御情報の前記不揮発関記憶領域から前記制御情報キャッシュパーティションへの読み出しに付随して、今後必要と予測される制御情報を前記不揮発性記憶領域から前記制御情報キャッシュパーティションへ読み出す、
    請求項8に記載のストレージシステム。
  10. 前記コントローラは、
    更新前制御情報と更新後制御情報とを比較し、更新されたビット列を含むブロックを選択し、
    前記選択したブロック及び前記更新前制御情報に付随している保証コードを用いて、前記更新後制御情報の保証コードを生成する、
    請求項9に記載のストレージシステム。
  11. 前記ユーザデータキャッシュパーティションは、前記不揮発性記憶領域に格納される制御情報の一部を格納し、
    前記コントローラは、前記ユーザデータキャッシュパーティションにおけるユーザデータのキューと制御情報のキューとを備えて、前記ユーザデータのキューと前記制御情報のキューとに異なる優先度を与えて、前記制御情報を前記ユーザデータよりも優先して前記ユーザデータキャッシュパーティションに残す、
    請求項10に記載のストレージシステム。
  12. 不揮発性記憶領域とキャッシュ領域とを備えるストレージシステムにおける、制御情報の管理方法であって、
    前記キャッシュ領域のユーザデータキャッシュパーティションに、前記不揮発性記憶領域に格納されるユーザデータを含むデータを格納し、
    前記キャッシュ領域の制御情報キャッシュパーティションに、前記不揮発性記憶領域に格納される制御情報を含みユーザデータと異なるデータを格納し、
    前記制御情報キャッシュパーティションと前記不揮発性記憶領域との間においてデータを動的に置換する、方法。
  13. 前記キャッシュ領域は、前記不揮発性記憶領域に格納される制御情報の一部が常駐するパーティションをさらに含む、
    請求項12に記載の方法。
  14. 前記不揮発性記憶領域は、ホストに対して仮想ボリュームを提供するために複数の論理ユニットで構成されたプールボリュームを備え、
    前記制御情報キャッシュパーティションに格納されるデータは、前記プールボリュームにおける複数のRAIDグループに分散して格納される、
    請求項13に記載の方法。
  15. 前記不揮発性記憶領域は、アクセス性能が異なる複数種類の記憶デバイスの記憶領域により構成されており、
    前記不揮発性記憶領域におけるユーザデータに関する制御情報は、そのユーザデータが格納されている記憶デバイス以上のアクセス性能を備える記憶デバイスに格納される、
    請求項14に記載の方法。
JP2013520290A 2010-12-27 2010-12-27 ストレージシステム及びその制御情報の管理方法 Expired - Fee Related JP5593577B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/007539 WO2012090239A1 (en) 2010-12-27 2010-12-27 Storage system and management method of control information therein

Publications (2)

Publication Number Publication Date
JP2013532862A true JP2013532862A (ja) 2013-08-19
JP5593577B2 JP5593577B2 (ja) 2014-09-24

Family

ID=46318454

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013520290A Expired - Fee Related JP5593577B2 (ja) 2010-12-27 2010-12-27 ストレージシステム及びその制御情報の管理方法

Country Status (3)

Country Link
US (3) US8539150B2 (ja)
JP (1) JP5593577B2 (ja)
WO (1) WO2012090239A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016529629A (ja) * 2013-08-29 2016-09-23 オラクル・インターナショナル・コーポレイション 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8639968B2 (en) * 2011-01-17 2014-01-28 Hewlett-Packard Development Company, L. P. Computing system reliability
EP2538334B1 (en) * 2011-06-21 2019-08-21 Lantiq Beteiligungs-GmbH & Co.KG Cache streaming system
US9372827B2 (en) * 2011-09-30 2016-06-21 Commvault Systems, Inc. Migration of an existing computing system to new hardware
US9201804B1 (en) 2012-02-06 2015-12-01 Google Inc. Dynamically adapting the configuration of a multi-queue cache based on access patterns
US9274971B2 (en) * 2012-11-27 2016-03-01 International Business Machines Corporation Low latency data exchange
US9158669B2 (en) * 2012-12-17 2015-10-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Presenting enclosure cache as local cache in an enclosure attached server
US10013166B2 (en) 2012-12-20 2018-07-03 Amazon Technologies, Inc. Virtual tape library system
US20140189203A1 (en) * 2012-12-28 2014-07-03 Hitachi, Ltd. Storage apparatus and storage control method
GB2511325A (en) * 2013-02-28 2014-09-03 Ibm Cache allocation in a computerized system
JP6273678B2 (ja) * 2013-03-01 2018-02-07 日本電気株式会社 ストレージ装置
JP6155769B2 (ja) * 2013-03-29 2017-07-05 富士通株式会社 ストレージ制御装置、制御プログラム及び制御方法
US9483213B1 (en) 2013-04-29 2016-11-01 Amazon Technologies, Inc. Virtual media changers
US10268592B2 (en) * 2014-01-31 2019-04-23 Avago Technologies International Sales Pte. Limited System, method and computer-readable medium for dynamically mapping a non-volatile memory store
US9996573B1 (en) * 2014-03-21 2018-06-12 Amazon Technologies, Inc. Distributed system capacity dial-up
US9552259B1 (en) * 2014-05-30 2017-01-24 EMC IP Holding Company LLC Dynamic provisioning of snapshots
US9575664B2 (en) * 2015-04-08 2017-02-21 Prophetstor Data Services, Inc. Workload-aware I/O scheduler in software-defined hybrid storage system
US10572175B2 (en) * 2015-06-05 2020-02-25 Hitachi, Ltd. Method and apparatus of shared storage between multiple cloud environments
US10198461B2 (en) * 2016-05-06 2019-02-05 Masergy Communications, Inc. Data storage system
US11100014B2 (en) * 2016-09-09 2021-08-24 Arm Limited Providing data in a shared memory
KR20180030319A (ko) * 2016-09-13 2018-03-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
WO2018057039A1 (en) * 2016-09-26 2018-03-29 Hewlett-Packard Development Company, L. Update memory management information to boot an electronic device from a reduced power mode
US10372622B2 (en) 2017-01-27 2019-08-06 International Business Machines Corporation Software controlled cache line replacement within a data property dependent cache segment of a cache using a cache segmentation enablement bit and cache segment selection bits
US11029862B2 (en) * 2017-04-25 2021-06-08 Netapp, Inc. Systems and methods for reducing write tax, memory usage, and trapped capacity in metadata storage
WO2019022631A1 (en) * 2017-07-27 2019-01-31 EMC IP Holding Company LLC STORING DATA IN DIFFERENTLY SIZED WAFERS WITHIN DIFFERENT STORAGE LEVELS
CN111124251B (zh) 2018-10-30 2023-08-29 伊姆西Ip控股有限责任公司 用于i/o控制的方法、装置以及计算机可读介质
CN109766462B (zh) * 2018-12-27 2020-12-15 山东信通电子股份有限公司 输电线路监控系统中的图像文件读取方法、装置及系统
CN111611178B (zh) 2019-02-26 2023-05-26 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610931B (zh) 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610930B (zh) 2019-02-26 2023-05-02 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
CN111610929B (zh) * 2019-02-26 2023-04-14 慧荣科技股份有限公司 数据储存装置以及非挥发式存储器控制方法
US11163698B2 (en) 2019-05-12 2021-11-02 International Business Machines Corporation Cache hit ratios for selected volumes using synchronous I/O
US11151035B2 (en) 2019-05-12 2021-10-19 International Business Machines Corporation Cache hit ratios for selected volumes within a storage system
US11237730B2 (en) 2019-05-12 2022-02-01 International Business Machines Corporation Favored cache status for selected volumes within a storage system
US11176052B2 (en) 2019-05-12 2021-11-16 International Business Machines Corporation Variable cache status for selected volumes within a storage system
US11169919B2 (en) 2019-05-12 2021-11-09 International Business Machines Corporation Cache preference for selected volumes within a storage system
US11314445B2 (en) 2019-11-19 2022-04-26 Western Digital Technologies, Inc. Pattern tracking for efficiently predicting control pages
US11755476B2 (en) 2020-04-13 2023-09-12 SK Hynix Inc. Memory controller, storage device including the memory controller, and method of operating the memory controller and the storage device
KR102495910B1 (ko) 2020-04-13 2023-02-06 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
KR102435253B1 (ko) 2020-06-30 2022-08-24 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
KR102406449B1 (ko) 2020-06-25 2022-06-08 에스케이하이닉스 주식회사 스토리지 장치 및 그 동작 방법
US11520701B2 (en) * 2021-04-02 2022-12-06 Tenstorrent Inc. Data structure optimized dedicated memory caches
US11971815B2 (en) * 2021-08-31 2024-04-30 Micron Technology, Inc. Write budget control of time-shift buffer for streaming devices

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0574046A (ja) * 1991-06-20 1993-03-26 Tokico Ltd 磁気デイスク装置
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JPH11212733A (ja) * 1998-01-26 1999-08-06 Hitachi Ltd 外部記憶システム
JPH11327802A (ja) * 1998-05-18 1999-11-30 Hitachi Ltd ディスクシステム
JP2001154894A (ja) * 1999-11-26 2001-06-08 Toshiba Corp 階層記憶装置及び階層記憶装置の制御方法
JP2003330797A (ja) * 2002-05-16 2003-11-21 Sony Corp 記憶装置、記録及び/又は再生装置、情報記憶システム、記憶方法、プログラム、記録媒体
JP2004030090A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd キャッシュメモリ管理方法
JP2005044147A (ja) * 2003-07-22 2005-02-17 Ntt Data Corp ディスクアレイ装置、ディスクアレイシステム、パリティデータ分散方法及びコンピュータプログラム
JP2005149436A (ja) * 2003-11-20 2005-06-09 Hitachi Ltd ストレージ装置、ストレージ装置における制御方法、ジョブスケジューリング処理方法及び障害処理方法並びにそれらのプログラム
JP2007293564A (ja) * 2006-04-25 2007-11-08 Renesas Technology Corp メモリデバイスおよび情報記憶システム
JP2008090657A (ja) * 2006-10-03 2008-04-17 Hitachi Ltd ストレージシステム及び制御方法
JP2008181416A (ja) * 2007-01-25 2008-08-07 Hitachi Ltd 記憶システム及びデータ管理方法
JP2010039574A (ja) * 2008-07-31 2010-02-18 Fujitsu Ltd ストレージシステム
WO2010106574A1 (ja) * 2009-03-18 2010-09-23 株式会社日立製作所 記憶制御装置及び仮想ボリュームの制御方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7395402B2 (en) * 2004-04-15 2008-07-01 Broadcom Corporation Method and system of data storage capacity allocation and management using one or more data storage drives
US7404036B2 (en) * 2005-11-23 2008-07-22 International Business Machines Corporation Rebalancing of striped disk data
US8495032B2 (en) * 2008-10-01 2013-07-23 International Business Machines Corporation Policy based sharing of redundant data across storage pools in a deduplicating system
US8447947B2 (en) * 2010-02-17 2013-05-21 Hitachi, Ltd. Method and interface for allocating storage capacities to plural pools
EP2603847B1 (en) 2010-08-11 2018-06-27 Hitachi, Ltd. Storage apparatus and control method thereof

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0574046A (ja) * 1991-06-20 1993-03-26 Tokico Ltd 磁気デイスク装置
JPH06348595A (ja) * 1993-06-07 1994-12-22 Hitachi Ltd キャッシュ装置
JPH11212733A (ja) * 1998-01-26 1999-08-06 Hitachi Ltd 外部記憶システム
JPH11327802A (ja) * 1998-05-18 1999-11-30 Hitachi Ltd ディスクシステム
JP2001154894A (ja) * 1999-11-26 2001-06-08 Toshiba Corp 階層記憶装置及び階層記憶装置の制御方法
JP2003330797A (ja) * 2002-05-16 2003-11-21 Sony Corp 記憶装置、記録及び/又は再生装置、情報記憶システム、記憶方法、プログラム、記録媒体
JP2004030090A (ja) * 2002-06-25 2004-01-29 Hitachi Ltd キャッシュメモリ管理方法
JP2005044147A (ja) * 2003-07-22 2005-02-17 Ntt Data Corp ディスクアレイ装置、ディスクアレイシステム、パリティデータ分散方法及びコンピュータプログラム
JP2005149436A (ja) * 2003-11-20 2005-06-09 Hitachi Ltd ストレージ装置、ストレージ装置における制御方法、ジョブスケジューリング処理方法及び障害処理方法並びにそれらのプログラム
JP2007293564A (ja) * 2006-04-25 2007-11-08 Renesas Technology Corp メモリデバイスおよび情報記憶システム
JP2008090657A (ja) * 2006-10-03 2008-04-17 Hitachi Ltd ストレージシステム及び制御方法
JP2008181416A (ja) * 2007-01-25 2008-08-07 Hitachi Ltd 記憶システム及びデータ管理方法
JP2010039574A (ja) * 2008-07-31 2010-02-18 Fujitsu Ltd ストレージシステム
WO2010106574A1 (ja) * 2009-03-18 2010-09-23 株式会社日立製作所 記憶制御装置及び仮想ボリュームの制御方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016529629A (ja) * 2013-08-29 2016-09-23 オラクル・インターナショナル・コーポレイション 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法

Also Published As

Publication number Publication date
US9081690B2 (en) 2015-07-14
US8880798B2 (en) 2014-11-04
JP5593577B2 (ja) 2014-09-24
US20150026395A1 (en) 2015-01-22
US20120166723A1 (en) 2012-06-28
US20130346689A1 (en) 2013-12-26
US8539150B2 (en) 2013-09-17
WO2012090239A1 (en) 2012-07-05

Similar Documents

Publication Publication Date Title
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
US11487619B2 (en) Distributed storage system
JP5707540B1 (ja) 階層化ストレージシステム、ストレージコントローラ、及び階層間のデータ移動を代替する方法
US7975115B2 (en) Method and apparatus for separating snapshot preserved and write data
US20140189203A1 (en) Storage apparatus and storage control method
US20150154216A1 (en) System and methods for prioritizing data in a cache
KR20150105323A (ko) 데이터 스토리지 방법 및 시스템
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
CN108604165B (zh) 存储装置
US20140115258A1 (en) System and method for managing a deduplication table
WO2015015550A1 (ja) 計算機システム及び制御方法
JP2013222457A (ja) データ位置の管理方法および装置
JP2016503927A (ja) ストレージシステム及びキャッシュコントロール方法
US20140195722A1 (en) Storage system which realizes asynchronous remote copy using cache memory composed of flash memory, and control method thereof
WO2016056104A1 (ja) ストレージ装置、及び、記憶制御方法
US20190095132A1 (en) Computer system having data amount reduction function and storage control method
US9262088B2 (en) Use of flash cache to improve tiered migration performance
JP6817340B2 (ja) 計算機
JP7554031B2 (ja) ストレージシステムおよびストレージ制御方法
JP5638022B2 (ja) ディスクアレイ装置
JP6273678B2 (ja) ストレージ装置
WO2018051446A1 (ja) オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140122

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140718

R150 Certificate of patent or registration of utility model

Ref document number: 5593577

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees