JP4734432B2 - データ記憶システム - Google Patents

データ記憶システム Download PDF

Info

Publication number
JP4734432B2
JP4734432B2 JP2009035266A JP2009035266A JP4734432B2 JP 4734432 B2 JP4734432 B2 JP 4734432B2 JP 2009035266 A JP2009035266 A JP 2009035266A JP 2009035266 A JP2009035266 A JP 2009035266A JP 4734432 B2 JP4734432 B2 JP 4734432B2
Authority
JP
Japan
Prior art keywords
data
storage device
read
write
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009035266A
Other languages
English (en)
Other versions
JP2010191672A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009035266A priority Critical patent/JP4734432B2/ja
Publication of JP2010191672A publication Critical patent/JP2010191672A/ja
Application granted granted Critical
Publication of JP4734432B2 publication Critical patent/JP4734432B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

この発明は、例えば1台以上のHDD(Hard Disk Drive)を備えてなるディスクシステム等に適用して好適なレスポンス性能の向上化技術に関する。
近年、ノートブックタイプやデスクトップタイプ等、様々な種類のパーソナルコンピュータが広く利用されている。この種のパーソナルコンピュータの多くは、外部記憶装置としてHDDを利用する。
また、最近では、HDDのレスポンス性能を向上させるために、HDDに不揮発性メモリを内蔵させ、不揮発性半導体メモリをキャッシュとして利用するといった、いわゆるハイブリッドHDDに関する提案も種々なされている(例えば特許文献1等参照)。
特開2003−167781号公報
ところで、多数の社員がパーソナルコンピュータを各々使用して作業を進めるオフィス等においては、これらのパーソナルコンピュータを相互に接続するためのLAN(Local Area Network)を敷設することが一般的となっており、また、データの共有化やデータの一元管理化を目的として、大容量のディスクシステムを当該LAN経由でアクセス可能に設置すること等も行われている。
ディスクシステムは、例えば複数台のHDDを備えることによって、低コストで大容量化を実現している。もし、そのレスポンス性能を向上させるために、(各々がキャッシュとして不揮発性半導体メモリを内蔵する)ハイブリッドHDDを通常のHDDに代えて適用したならば、大幅なコストアップを招いてしまう。
この発明はこのような事情を考慮してなされたものであり、例えば1台以上のHDDを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることを実現したデータ記憶システムを提供することを目的とする。
実施形態によれば、データ記憶システムは、1台以上の第1の記憶装置と、第2の記憶装置と、前記第1の記憶装置のキャッシュとして前記第2の記憶装置を用いるべく前記第1の記憶装置および前記第2の記憶装置を制御し、前記第2の記憶装置上に存在するデータが前記第1の記憶装置上のデータ全体であるか否かを示す第1のフラグ情報を管理する制御装置と、を具備し、前記制御装置は、前記第1の記憶装置に格納されたデータの読み出しを要求された際、前記第1のフラグ情報より、前記読み出し対象のデータ全体が前記第2の記憶装置に存在する場合、前記第2の記憶装置に格納されているデータを読み出して要求元に転送し、前記第1のフラグ情報より、前記読み出し対象のデータの一部が前記第2の記憶装置に存在する場合、前記第2の記憶装置から読み出したデータの一部と前記第1の記憶装置から読み出したデータのその他の部分とをマージして要求元に転送すると共に、前記マージ後のデータを前記第2の記憶装置に格納して前記第1のフラグ情報をデータ全体が存在する旨を示すように更新し、読み出し対象のデータが前記第2の記憶装置に格納されていない場合、当該読み出し対象のデータを前記第1の記憶装置から読み出して要求元に転送すると共に、当該読み出したデータを前記第2の記憶装置に格納して前記第1のフラグ情報をデータ全体が存在する旨を示すように更新するリード制御手段を有する。
この発明によれば、例えば1台以上のHDDを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることを実現できる。
本発明の第1実施形態に係るデータ記憶システム(ディスクサブシステム)の構成を示す図。 同第1実施形態のディスクサブシステムにおけるSSDの記憶領域の論理的なアロケーション例を示す図。 同第1実施形態のディスクサブシステムにおいてSSD上に確保するキャッシュ領域の一例を示す図。 同第1実施形態のディスクサブシステムにおいてSSD上に確保する管理データ領域の一例を示す図。 同第1実施形態のディスクサブシステムにおいてSSD上に確保する管理データ領域内のビットマップの一例を示す図。 同第1実施形態のディスクサブシステムにおいてSSD上に確保する管理データ領域内のデータキャッシュディレクトリの一例を示す図。 同第1実施形態ののディスクサブシステムにおいてSSD上に確保する管理データ領域内のデータキャッシュディレクトリのEntireビットおよびDirtyビットの各組み合わせの意味を説明するための図。 同第1実施形態ののディスクサブシステムがホストシステムからリードコマンドを受け取った場合の動作手順を説明するための図。 同第1実施形態のディスクサブシステムがホストシステムからライトコマンドを受け取った場合の動作手順を説明するための図。 同第1実施形態のディスクサブシステムにおいてSSD上に確保する管理データ領域内のビットマップキャッシュディレクトリの一例を示す図。
以下、図面を参照して、この発明の実施形態を説明する。
(第1実施形態)
図1は、本発明の第1実施形態に係るデータ記憶システムの構成を示す図である。本データ記憶システムは、ホストシステム1が利用するデータを大量に記憶するためのディスクサブシステム2として実現されている。ホストシステム1とディスクサブシステム2との接続形態は任意であり、例えばLAN(Local Area Network)を介して接続される環境下においては、複数のホストシステム1が存在しても良い。また、ホストシステム1とディスクサブシステム2とが同一のコンピュータ上に存在して、データバスを介して接続される形態も当然に考えられ得る。
図1に示すように、ディスクサブシステム2は、制御部21、メモリ21A、複数の論理HDD(hard Disk Drive)22およびSSD(Solid State Drive)23から構成されている。
制御部21は、本ディスクサブシステム2の動作を制御する中枢部であり、ホストシステム1が発行する論理HDD22へのデータの書き込み要求(ライトコマンド)または論理HDD22からのデータの読み出し要求(リードコマンド)を受け付け、この要求された論理HDD22に対するデータアクセスを効率的に処理すべく、メモリ21A、論理HDD22およびSSD23を駆動制御する。制御部21は、ディスクサブシステム2がホストシステム1と外部接続される場合、例えばマイクロコントローラおよび制御プログラム等から構成され、ディスクサブシステム2がホストシステム1と同一のコンピュータ上に存在する場合には、例えばBIOS(Basic Input/Output System)やデバイスドライバ等から構成される。
そして、本ディスクサブシステム2は、安価・低速な論理HDD22で大容量の記憶領域を構成しつつ、高速なSSD23を、これら論理HDD22の共用キャッシュとして設置し、かつ、このSSD23を共用キャッシュとして効率的に使用するための仕組みを当該制御部21が備えることにより、大幅なコストアップを招くことなく、レスポンス性能を向上させることを実現したものであり、以下、この点について詳述する。
なお、メモリ21Aは、制御部21が作業領域として使用する、各種データを一時的に格納するための例えばDRAM等である。また、論理HDD22は、単体のHDDや、複数のHDDを並列接続して耐障害性を高めたRAID(Redundant Array of Inexpensive Disks)等である。ディスクサブシステム2内の論理HDD22として、単体のHDDとRAIDとが混在していても構わない。ホストシステム1は、各論理HDD22を個別に認識して、それぞれに対するデータアクセス要求を本ディスクサブシステム2の制御部21に対して発行する。そして、SSD23は、記憶部として不揮発性半導体メモリであるフラッシュメモリを搭載した記憶デバイスである。前述のように、本ディスクサブシステムは、このSSD23を、論理HDD22の共用キャッシュとして使用すべく搭載するが、共用キャッシュとして割り当てる領域以外の余剰領域については、論理HDD22と同様に、1つの論理ドライブとして、ホストシステム1からのアクセス要求を受け付け可能としても良い。
図2は、本ディスクサブシステム2におけるSSD23の記憶領域の論理的なアロケーション例を示す図である。
ここでは、SSD23が32Gバイトの記憶容量を有するものと想定する。一方、論理HDD22の数は最大16台とし、各々の容量は最大2Tバイトとする。また、制御部21は、論理HDD22へのデータの書き込みおよび論理HDD22からのデータの読み出しを128Kバイト単位で実行する。以下、これをブロックサイズと称する。論理HDD22の使用単位であるセクタは512バイトであり、よって、1ブロックは256セクタとなる。この32Gバイトの大きさを持つSSD23の記憶領域を、制御部21は、図2に示すように、キャッシュ領域a1、管理データ領域a2、余剰領域a3の3通りに使い分ける。
キャッシュ領域a1は、論理HDD22のデータの一部を保持する領域、つまり前述の共用キャッシュとして使用する領域である。ここでは、SSD23の全記憶容量中の半分である16Gバイトを当該キャッシュ領域a1として割り当てるものとする。論理HDD22のデータは、ブロックサイズ単位で当該キャッシュ領域a1に保持される。換言すると、当該キャッシュ領域a1は、ブロックサイズごとの領域に分けられる。
また、管理データ領域a2は、キャッシュ領域a1上に存在する論理HDD22のデータの一部を管理するための各種管理データを保持する領域である。
そして、余剰領域a3は、SSD23上にキャッシュ領域a1,管理データ領域a2を確保し終えた後の残存領域であり、制御部21は、この余剰領域a3を1つの論理ドライブとして、論理HDD22と同様に、当該論理ドライブに対するホストシステム1からのアクセス要求を受け付ける。
図3は、SSD23上に確保したキャッシュ領域a1の一例を示す図である。
前述したように、キャッシュ領域a1は、ブロックサイズ、つまり128Kバイトごとの領域に分けられている。そして、制御部21は、論理HDD22のデータの一部を、このキャッシュ領域a1内に4wayセットアソシアティブ方式で格納する。より具体的に説明すると、本ディスクサブシステム2においては、論理HDD22の最大数は16台であるので、論理HDD22の識別子は4ビットで表現できる。また、各論理HDD22の最大容量は2Tバイトであるので、各論理HDD22内のセクタ位置を示すLBA(Logical Block Address)は32ビットで表現できる。よって、本ディスクサブシステム2全体内でのセクタ位置(セクタアドレス)は、上位4ビット+下位32ビットの36ビットで表現できる。制御部21は、この36ビットのセクタアドレス中の22−8桁の値が一致するアドレスを1グループとして、各グループ毎に4つずつ格納する。
そこで、制御部21は、図3に示すように、キャッシュ領域a1上に、先頭から(EA:前述の36ビットのセクタアドレス中の22−8桁の値,way:0〜3)の並びで、(0000,0),(0000,1),…(7FFF,3)の各キャッシュ領域を割り当てる。そして、制御部21は、最近に読み出されたデータほど再び読み出される確率が高いことを前提として、各グループごとに、論理HDD22から読み出されたデータが最近に読み出された順に4つずつ当該キャッシュ領域a1上に格納されるように、当該キャッシュ領域a1内におけるデータの入れ替えを実行する。
なお、制御部21は、ホストシステム1から論理HDD22への書き込みが要求されたデータについては、キャッシュ領域a1に空きがあれば(同一グループの他のデータのキャッシュ領域a1への格納数が4に達していなければ)、空きwayを使ったキャッシュ領域a1への格納を実行する。また、空きがなければ、同一グループ内で最も過去に読み出された(最も格納優先度の低い)データが論理HDD22に未反映の書き込みデータを含まない場合に、このデータと入れ替えて、当該書き込み対象データをキャッシュ領域a1へ格納する。即ち、アクセス時間はライトデータの方が近くても、再アクセスの可能性の高いリードデータの方が優先的にキャッシュ領域a1上に存在することになる。
SSD23は、論理HDD22よりも高速であるので、レスポンス性能を向上させることができる。また、SSD23は、不揮発性の記憶デバイスであるので、例えば定期点検後などにディスクサブシステム2を起動した際、前回のディスクサブシステム2の停止時直前に読み出されていたデータが格納された状態にあるので、起動直後からレスポンス性能を向上させる作用が現れる。そして、1台を複数の論理HDD22の共用キャッシュとして適用するので、大幅なコストアップを招くことがない。
また、図4は、SSD23上に確保した管理データ領域a2の一例を示す図である。
ビットマップa21(以下、BMと記することがある)は、キャッシュ領域a1に格納された論理HDD22のデータについて、ブロックごとに、ホストシステム1からの書き込み要求を要因として格納されたデータのセクタ位置を記憶しておくためのデータ群である。図5に、このビットマップa1の一例を示す。
前述したように、本実施形態では、1ブロックは256セクタであるので、各ブロック内の書き込みセクタ位置を記憶するためには、256ビット、つまり、32バイトの情報が必要となる。1セクタは512バイトであるので、1セクタに16ブロック分のビットマップを保存できる。そこで、制御部21は、キャッシュ領域a1に割り当てたブロックサイズの各キャッシュ領域と同じ並びで当該ビットマップを保存する。
制御部21は、論理HDD22へのデータの書き込みおよび論理HDD22からのデータの読み出しをブロックサイズで実行する。よって、制御部21は、ホストシステム1が発行した書き込み要求(ライトコマンド)をブロック単位に分割して、分割後のブロックごとに論理HDD22へのデータ書き込みを実行する。いま、ホストシステム1から書き込みを要求されたデータのサイズがブロックサイズの整数倍でない場合を考えると、最後はブロックサイズに満たないデータの書き込みを行う必要が生じる(書き込みを要求されたデータのサイズがブロックサイズに満たない場合も同様)。このような場合に備え、ビットマップを管理しておくことで、その後のキャッシュであるSSD23から論理HDD22への反映時等に必要となるデータマージを実行することが可能となる。例えばホストシステム1がセクタ単位でのデータ書き込みを要求してきた場合、制御部21は、この書き込みを、当該セクタを含むブロック単位の書き込みに変換し、内部的にはブロック単位での書き込みを実行するが、この場合も、SSD23にキャッシュされたブロックデータ内の当該セクタと論理HDD23に格納されたその他のセクタとのデータマージの際に当該ビットマップが利用される。
また、データキャッシュディレクトリa22(以下、DCDと記することがある)は、論理HDD22のデータの一部をSSD23にキャッシュするために本ディスクサブシステム2が採用する4wayセットアソシアティブ方式のディレクトリである。図6は、このデータキャッシュディレクトリの一例を示す。
図6中、LDは、論理HDD22の識別子である。本ディスクサブシステム2では、前述の通り4バイトあり、また、LBAは32ビットである。そして、前述の通り、この上位4ビット+下位32ビットの36ビットで本ディスクサブシステム2のセクタアドレスは構成される。このセクタアドレスの35−23桁をFA(Frame Address)部、22−8桁をEA(Entry Address)部と定義する。
データキャッシュディレクトリa22は、EA分(行)×way分(列)のテーブルである。各wayフィールドは、FA、LRU(Least Resently used)カウンタ、Entireビット、Dirtyビットから構成される。
FAには、セクタアドレスのFA部が格納される。よって、例えば読み出し対象データについて、セクタアドレスのEA部を検索キーとしてディレクトリを参照し、同一ライン内のいずれかのwayのFAがセクタアドレスのFA部と一致しているときにヒット(SSD23上に存在する)、いずれにも一致しないときにミスヒット(SSD23上に存在しない)と判断することができる。
LRUカウンタは、初期値の0からway数の値を取るカウンタ領域である。大きい値ほど最近に読み出しが行われたことを表す。
Entireビットは、ブロック全体がSSD23に記録されているか否かを示す表すフラグ領域である。”1”が全体が存在、”0”が一部が存在、を示す。
Dirtyビットは、当該ブロック内に書き込みデータが存在するか否かを示すフラグ領域である。”1”が書き込みデータが存在、”0”が書き込みデータが不在、を示す。
このEntireビットとDirtyビットとによって、データキャッシュディレクトリa22にヒットしている時のブロックデータの所在は図7に示す通りであることが判明する。より具体的に説明すると、Entireビットが”0”で、Dirtyビットが”1”の場合、SSD23のデータの一部が最新で、この最新データの位置はビットマップに記録されている。Entireビットが”1”で、Dirtyビットが”0”の場合は、SSD23と論理HDD22とに同じデータが存在している。そして、EntireビットとDirtyビットの両方が”1”の場合は、SSD23のデータが最新で、論理HDD22のデータは古い。なお、Entireビットが”0”の場合、ブロック内の少なくとも一部に書き込みデータを含むので、Dirtyビットは必然的に”1”となるので、理論上、EntireビットとDirtyビットとの両方が”0”の組み合わせは存在しない。
以上の管理データ領域a2のビットマップa21およびデータキャッシュディレクトリa22は、本ディスクサブシステム2の起動時に制御部21が管理するメモリ21Aに展開され、本ディスクサブシステム2のシャットダウン時等の所定のタイミングで書き戻される。
次に、本ディスクサブシステム2の制御部21が実行する、SSD23を共用キャッシュとして用いた論理HDD22からのデータ読み出し時/論理HDD22へのデータ書き込み時の動作原理を説明する。
まず、図6および図8を参照しながら、ホストシステム1からリードコマンドを受け取った場合の動作手順を説明する。
ホストシステム1からデータのリードコマンドを受け取ると、制御部21は、このリードコマンドをブロック単位に分割し、分割後のブロックごとにデータの読み出し処理を実行する。
この分割後のブロックごとのデータの読み出し処理において、制御部21は、まず、セクタアドレスのEA部とFA部とを使って、データキャッシュディレクトリa22上でのヒット有無、つまり、読み出し対象ブロックがSSD23のキャッシュ領域a1に存在するか否かを調べる。
ヒットしていたら、制御部21は、今度は、読み出し対象ブロックを保持するwayのEntireビットが”1”か否かを調べる。もし、Entireビットが”1”であれば(ケースR1)は、制御部21は、SSD23のキャッシュ領域a1に存在するブロックデータを読み出して、読み出し対象データを取得する。この時、制御部21は、後処理として、当該wayのLRUカウンタを最大値にし、更新前の値よりも大きい値を持つ他のwayのLRUカウンタの値を1ずつデクリメントする。この操作により、LRUカウンタは、時間的に近い順に4→3→2→1の値または初期値の0が保持されることになる。
Entireビットが”0”であった場合、制御部21は、続いて、当該ブロックデータに対応するビットマップa21を参照し、すべてが書き込みセクタで占められているか、つまり、全データがSSD23のキャッシュ領域a1に存在するかを調べる。もし、全データがSSD23のキャッシュ領域a1に存在すれば(ケースR2)、制御部21は、SSD23のキャッシュ領域a1に存在するブロックデータを読み出して、読み出し対象データを取得する。この時も、制御部21は、前述の後処理としてのLRUカウンタの更新を実行する。
一方、Entireビットが”0”であって、全データがSSD23のキャッシュ領域a1に存在しない場合(ケースR3)、制御部21は、SSD23のキャッシュ領域a1および論理HDD22の双方から読み出し対象ブロックのデータを読み出し、ビットマップa21に基づき、データマージを行って最新の状態のブロックデータを形成して、読み出し対象データを取得する。そして、制御部21は、SSD23のキャッシュ領域a1に格納されていたブロックデータを、当該形成した最新の状態のブロックデータに更新すべく当該SSD23のキャッシュ領域a1への書き込みを実行する。この時、制御部21は、前述のLRUカウンタの更新に加えて、当該wayのEntireビットを”1”にする処理を後処理として実行する。
また、読み出し対象ブロックがSSD23のキャッシュ領域a1に存在しない場合、つまり、データキャッシュディレクトリa22上でヒットしなかった場合(ケースR4)、制御部21は、論理HDD22からの読み出しを行うことにより、読み出し対象データを取得する。制御部21は、この読み出したブロックデータのSSD23のキャッシュ領域a1への書き込みを併せて実行する。
この書き込みは、同一グループ内に空きwayが存在すれば、当該wayに対して実行する。また、空きwayが存在しなければ、LRUカウンタの値が最も小さいwayのデータと入れ替えるべく実行する。入れ替え対象のwayのDirtyビットが”1”であったならば、このデータの論理HDD22への反映を行った後に実行する。この際、Entireビットが”0”であったならば、ビットマップa21を参照しながらデータマージを実行する。論理HDD22への反映を終了させた時、制御部21は、Entireビット、Dirtyビット、ビットマップa21の該当箇所の初期化をそれぞれ実行する。
そして、(ケースR4の場合の)後処理として、制御部21は、当該wayのLRUカウンタの値を最大値にし、その他のwayのLRUカウンタの値を1ずつデクリメントする処理と共に、Entireビットを”1”に設定する処理を実行する。
続いて、図6および図9を参照しながら、ホストシステム1からライトコマンドを受け取った場合の動作手順を説明する。
ホストシステム1からデータのリードコマンドを受け取ると、制御部21は、このリードコマンドをブロック単位に分割し、分割後のブロックごとにデータの書き込み処理を実行する。
この分割後のブロックごとのデータの書き込み処理において、制御部21は、まず、セクタアドレスのEA部とFA部とを使って、データキャッシュディレクトリa22上でのヒット有無、つまり、書き込み対象ブロックがSSD23のキャッシュ領域a1に存在するか否かを調べる。
ヒットしていたら、制御部21は、今度は、この書き込みがブロックサイズ、つまり256セクタ分のものか否かを調べる。もし、ブロック単位の書き込みであれば(ケースW1)、制御部21は、SSD23のキャッシュ領域a1に存在するブロックデータ上に当該書き込み対象データを上書きすべくSSD23に対する書き込みを実行する。この時、制御部21は、後処理として、Entireビット、Dirtyビットを”1”にし、必要であればビットマップa21の該当箇所の初期化を実行する。書き込みが256セクタ未満のものであった場合には(ケースW2)、後処理として、さらに書き込みセクタの位置を記憶しておくためのビットマップの更新を実行する。
一方、書き込み対象ブロックがSSD23のキャッシュ領域a1に存在しない場合、つまり、データキャッシュディレクトリa22上でヒットしなかった場合、制御部21は、同一グループ内に空きwayが存在するか否か、および、空きwayが存在しない場合にはLRUカウンタの値が最も小さいwayのDirtyビットが”0”か否かを調べる。
同一グループ内に空きwayが存在した場合、または、LRUカウンタの値が最も小さいwayのDirtyビットが”0”だった場合、制御部21は、その書き込みがブロック単位のものであれば(ケースW3)、当該書き込み対象データを空きwayまたはLRUカウンタの値が最も小さいwayに格納し、後処理として、当該wayのEntireビット、Dirtyビットを”1”にする。また、書き込みが256セクタ未満のものであった場合には(ケースW4)、後処理として、さらに書き込みセクタの位置を記憶しておくためのビットマップの更新を実行する。
同一グループ内に空きwayが存在せず、かつ、LRUカウンタの値が最も小さいwayのDirtyビットが”1”だった場合には(ケースW5)、制御部21は、当該書き込み対象データのSSD23によるキャッシングは行わず、論理HDD23への書き込みを実行する。
また、制御部21は、ホストシステム1からリードコマンドを受け取った場合、およびライトコマンドを受け取った場合のほか、ホストシステム1が一定時間以上コマンドを発生させなかった場合に、データキャッシュディレクトリa22内のDirtyビットが”1”のブロックデータを論理HDD22に反映させ、SSD23のキャッシュ領域a1と論理HDD22とを同じ状態とするライトバック処理をデータキャッシュディレクトリa22のライン単位に実行する。このライトバック処理は、Spread First方式で実行する。即ち、データキャッシュディレクトリa22内の各ライン間で、Dirtyビットが”1”の数が均等になるような順番で進めていく。1ライン分のライトバック処理中、ホストシステム1からコマンドが送られて来なかった場合に、制御部21は、引き続き、このライトバック処理を継続する。
以上のように、本ディスクサブシステム1においては、制御部21が、データキャッシュディレクトリa22、ビットマップa21を使って、SSD23のキャッシュ領域a1を管理することによって、複数台の低速な論理HDD22からのデータの読み出しを、高い確率で、1台の高速のSSD23からの読み出しで代替することを可能とし、レスポンス性能を大幅なコストアップを招くことなく向上させることを実現する。
(第2実施形態)
次に、本発明の第2実施形態について説明する。
前述した第1実施形態では、制御部21が、本ディスクサブシステム2の起動時に、SSD23の管理データ領域a2に保持されるビットマップa21を、自身が管理するメモリ21Aに展開することを前提とした。
ビットマップa21は、SSD23上に確保するキャッシュ領域a1が16Gバイトの場合、4Mバイトという膨大なテーブルとなる。よって、大容量のメモリ21Aを搭載しなければならなくなる。そこで、本第2実施形態では、このビットマップa21のすべてをメモリ21Aに展開するのではなく、さらに当該ビットマップa21についても、4wayセットアソシアティブ方式で、その一部をメモリ21Aにキャッシュすることによって、メモリ21Aの必要容量を低減し、さらなるコストダウンを実現する。
図10は、ビットマップa21の一部をメモリ21Aにキャッシュするためのビットマップキャッシュディレクトリの一例を示す図である。このビットマップキャッシュディレクトリは、図4に示した管理データ領域a2のその他の管理データとしてSSD23に格納され、第1実施形態におけるビットマップa21に代えて、データキャッシュディレクトリa22と共に、本ディスクサブシステム2の起動時にメモリ21Aに展開され、本ディスクサブシステム2のシャットダウン時等の所定のタイミングで書き戻される。
本実施形態のディスクサブシステム2においては、LD4ビットとLBA32ビットとを繋ぎ合わせた36ビットのセクタアドレスの22−19桁をBMFA(Bit Map Frame Address)部、18−13桁をBMEA(Bit Map Entry Address)部と定義する。ビットマップキャッシュディレクトリは、BMEA分(行)×way分(列)のテーブルである。各wayフィールドは、BMFA、LRUカウンタ、Dirtyビットから構成される。
BMFAには、セクタアドレスのBMFA部が格納される。よって、例えば読み出し対象データに関するビットマップついて、セクタアドレスのBMEA部を検索キーとしてディレクトリを参照し、同一ライン内のいずれかのwayのBMFAがセクタアドレスのBMFA部と一致しているときにヒット(メモリ21A上に存在する)、いずれにも一致しないときにミスヒット(メモリ21A上に存在しない)と判断することができる。
LRUカウンタは、初期値の0からway数の値を取るカウンタ領域である。大きい値ほど最近にキャッシュされたことを表す。
Dirtyビットは、当該ビットマップが書き込みデータの位置情報を有するか否かを示すフラグ領域である。”1”が書き込みデータの位置情報が存在、”0”が書き込みデータの位置情報が不在、を示す。
次に、本第2実施形態の制御部21が実行する、ビットマップa21のキャッシュ処理について説明する。
制御部21は、セクタアドレスのBMEA部とBMFA部とを使って、ビットマップキャッシュディレクトリ上でのヒット有無、つまりアクセス対象のビットマップ部分がメモリ21A上に存在するか否かを調べる。
ヒットしていたら、制御部21は、メモリ21A上に存在するビットマップ部分を使用する。もし、このビットマップ部分について更新を行った場合、制御部21は、Dirtyビットを”1”にする。また、この時、制御部21は、データキャッシュディレクトリa22の場合と同様、後処理として、当該wayのLRUカウンタを最大値にし、更新前の値よりも大きい値を持つ他のwayのLRUカウンタの値を1ずつデクリメントする。この操作により、LRUカウンタは、時間的に近い順に4→3→2→1の値または初期値の0が保持されることになる。
一方、ヒットしていなかった場合、制御部21は、同一グループ内に空きwayが存在すれば、アクセス対象のビットマップ部分をSSD23から読み出して、当該空きwayに格納する。また、空きwayが存在しなければ、LRUカウンタの値が最も小さいwayのビットマップ部分との入れ替えを実行する。この時、入れ替え対象のwayのDirtyビットが”1”であったならば、入れ替え前のビットマップ部分のSSD23への書き戻しを実行し、そのDirtyビットを初期化する。Dirtyビットが”1”でなければ、この書き戻しを行う必要はない。そして、制御部21は、後処理として、前述のLRUカウンタの更新を実行する。
このような手順で、ビットマップa21の一部をメモリ21A上にキャッシュする本第2実施形態のディスクサブシステムにおいては、4Mバイトのビットマップa21を約1Mバイトの作業領域で利用可能となるので、メモリ21Aの必要容量を低減でき、さらなるコストダウンを実現することができる。
以上のように、本ディスクサブシステム2によれば、例えば1台以上のHDDを備えてなるディスクシステム等のレスポンス性能を大幅なコストアップを招くことなく向上させることが実現される。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に構成要素を適宜組み合わせてもよい。
1…ホストシステム、2…ディスクサブシステム、21…制御部、21A…メモリ、22…論理HDD、23…SSD。

Claims (11)

  1. 1台以上の第1の記憶装置と、
    第2の記憶装置と、
    前記第1の記憶装置のキャッシュとして前記第2の記憶装置を用いるべく前記第1の記憶装置および前記第2の記憶装置を制御し、前記第2の記憶装置上に存在するデータが前記第1の記憶装置上のデータ全体であるか否かを示す第1のフラグ情報を管理する制御装置と、
    を具備し、
    前記制御装置は、
    前記第1の記憶装置に格納されたデータの読み出しを要求された際、
    前記第1のフラグ情報より、前記読み出し対象のデータ全体が前記第2の記憶装置に存在する場合、前記第2の記憶装置に格納されているデータを読み出して要求元に転送し、
    前記第1のフラグ情報より、前記読み出し対象のデータの一部が前記第2の記憶装置に存在する場合、前記第2の記憶装置から読み出したデータの一部と前記第1の記憶装置から読み出したデータのその他の部分とをマージして要求元に転送すると共に、前記マージ後のデータを前記第2の記憶装置に格納して前記第1のフラグ情報をデータ全体が存在する旨を示すように更新し、
    読み出し対象のデータが前記第2の記憶装置に格納されていない場合、当該読み出し対象のデータを前記第1の記憶装置から読み出して要求元に転送すると共に、当該読み出したデータを前記第2の記憶装置に格納して前記第1のフラグ情報をデータ全体が存在する旨を示すように更新する
    リード制御手段を有する、
    ことを特徴とするデータ記憶システム。
  2. 前記制御装置の前記リード制御手段は、前記第1の記憶装置に格納されたデータが、そのアドレスを示すビット列中の所定のビット列の値が同一のデータ毎に、読み出しを要求された時が時間的に近い順に所定数ずつ前記第2の記憶装置に格納されるように、前記第2の記憶装置内におけるデータの入れ替えを実行することを特徴とする請求項1記載のデータ記憶システム。
  3. 前記制御装置は、前記第1の記憶装置へのデータの書き込みを要求された際、書き込み先のアドレスに対応するデータが前記第2の記憶装置に格納されていた場合、当該データの書き込みを前記第2の記憶装置に対して実行するライト制御手段をさらに有することを特徴とする請求項2記載のデータ記憶システム。
  4. 前記制御装置の前記ライト制御手段は、前記書き込み先のアドレスに対応するデータが前記第2の記憶装置に格納されていない場合、当該書き込み先のアドレスを示すビット列中の前記所定のビット列の値が同一のデータの前記第2の記憶装置への格納数が所定数に達していなければ、当該書き込み対象データの書き込みを前記第2の記憶装置に対して実行することを特徴とする請求項3記載のデータ記憶システム。
  5. 前記制御手段は、前記第2の記憶装置上に存在するデータが書き込みデータを含んでいるか否かを示す第2のフラグ情報をさらに管理し、
    前記制御装置の前記ライト制御手段は、前記書き込み先のアドレスに対応するデータが前記第2の記憶装置に格納されておらず、かつ、当該書き込み先のアドレスを示すビット列中の前記所定のビット列の値が同一のデータの前記第2の記憶装置への格納数が所定数に達していた場合、当該格納されている所定数のデータ内で読み出しを要求された時が時間的に最も遠いデータについて、前記第2のフラグ情報を参照して、書き込みデータを含んでいるか否かを判定し、前記書き込みデータを含んでいない場合、このデータと入れ替えるべく、当該書き込み対象データの書き込みを前記第2の記憶装置に対して実行することを特徴とする請求項3記載のデータ記憶システム。
  6. 前記制御手段は、
    前記第1の記憶装置内における記憶領域の使用単位である第1の単位を複数個まとめた第2の単位で前記第1の記憶装置へのデータの書き込みおよび前記第1の記憶装置からのデータの読み出しを実行し、
    前記第2の記憶装置上に存在する前記第1の記憶装置上のデータについて、前記第2の単位ごとに、前記ライト制御手段によるデータの書き込み有無を前記第1の単位で示すビットマップ情報を管理するビットマップ管理手段をさらに有することを特徴とする請求項3記載のデータ記憶システム。
  7. 前記制御手段の前記リード制御手段は、前記第2の記憶装置から読み出したデータの一部と前記第1の記憶装置から読み出したデータのその他の部分とのマージを、前記ビットマップ管理手段が管理するビットマップ情報に基づいて実行することを特徴とする請求項6記載のデータ記憶システム。
  8. 前記制御装置は、前記第1の記憶装置からのデータの読み出しおよび前記第1の記憶装置へのデータの書き込みのいずれもが一定時間以上要求されなかった時、前記第2のフラグ情報が書き込みデータを含んでいる旨を示す前記第2の記憶装置上のデータを前記第1の記憶装置に格納するライトバック手段をさらに有することを特徴とする請求項記載のデータ記憶システム。
  9. 前記制御装置の前記ライトバック手段は、各々のアドレスを示すビット列中の前記所定のビット列の値が同一のデータ群のうち、前記ライト制御手段による書き込み部分を含むデータの数が多いデータ群を優先して前記第1の記憶装置への格納を行っていくことを特徴とする請求項記載のデータ記憶システム。
  10. 前記制御装置は、前記第2の記憶装置が備える記憶領域中の第1の領域を、前記第1の記憶装置からの読み出し対象データの格納領域として用い、前記第2の記憶装置が備える記憶領域中の第2の領域を、当該第2の記憶装置への書き込み対象データの格納領域として用いることを特徴とする請求項1記載のデータ記憶システム。
  11. 前記第1の記憶装置は、1以上の磁気ディスク装置によって構成され、
    前記第2の記憶装置は、不揮発性半導体メモリ装置によって構成される、
    ことを特徴とする請求項1記載のデータ記憶システム。
JP2009035266A 2009-02-18 2009-02-18 データ記憶システム Expired - Fee Related JP4734432B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009035266A JP4734432B2 (ja) 2009-02-18 2009-02-18 データ記憶システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009035266A JP4734432B2 (ja) 2009-02-18 2009-02-18 データ記憶システム

Publications (2)

Publication Number Publication Date
JP2010191672A JP2010191672A (ja) 2010-09-02
JP4734432B2 true JP4734432B2 (ja) 2011-07-27

Family

ID=42817655

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009035266A Expired - Fee Related JP4734432B2 (ja) 2009-02-18 2009-02-18 データ記憶システム

Country Status (1)

Country Link
JP (1) JP4734432B2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5692590B2 (ja) * 2011-04-20 2015-04-01 日本電気株式会社 リブート、ブート、シャットダウン高速化装置並びにリブート、ブート、シャットダウン高速化方法
JP6011153B2 (ja) 2012-08-22 2016-10-19 富士通株式会社 ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
JP2021092877A (ja) * 2019-12-09 2021-06-17 Necプラットフォームズ株式会社 サーバシステム、検出方法及びプログラム
CN116880776B (zh) * 2023-09-06 2023-11-17 上海凯翔信息科技有限公司 一种存储数据的数据处理***

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129470A (ja) * 1993-11-09 1995-05-19 Hitachi Ltd ディスク制御方法
JP2006012006A (ja) * 2004-06-29 2006-01-12 Tokugen Ou キャッシュ装置及び方法
JP2008276646A (ja) * 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07129470A (ja) * 1993-11-09 1995-05-19 Hitachi Ltd ディスク制御方法
JP2006012006A (ja) * 2004-06-29 2006-01-12 Tokugen Ou キャッシュ装置及び方法
JP2008276646A (ja) * 2007-05-02 2008-11-13 Hitachi Ltd ストレージ装置及びストレージ装置におけるデータの管理方法

Also Published As

Publication number Publication date
JP2010191672A (ja) 2010-09-02

Similar Documents

Publication Publication Date Title
JP6832187B2 (ja) データストレージサブシステムにおけるキャッシングのための方法およびシステム
US9378131B2 (en) Non-volatile storage addressing using multiple tables
US9323659B2 (en) Cache management including solid state device virtualization
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
JP5593577B2 (ja) ストレージシステム及びその制御情報の管理方法
US8321639B2 (en) Command tracking for direct access block storage devices
US9128847B2 (en) Cache control apparatus and cache control method
EP2685384B1 (en) Elastic cache of redundant cache data
US20150378884A1 (en) Storage system controlling addressing of solid storage disks (ssd)
US9792073B2 (en) Method of LUN management in a solid state disk array
US20100115175A9 (en) Method of managing a large array of non-volatile memories
US9047200B2 (en) Dynamic redundancy mapping of cache data in flash-based caching systems
US20120059978A1 (en) Storage array controller for flash-based storage devices
US20160253123A1 (en) NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System
JP2000099282A (ja) ファイル管理システム
US8954658B1 (en) Method of LUN management in a solid state disk array
EP3629142B1 (en) Method of operating storage device, storage device performing the same and storage system including the same
JP4734432B2 (ja) データ記憶システム
JPH11288387A (ja) ディスクキャッシュ装置
US20180307427A1 (en) Storage control apparatus and storage control method
JP4724253B2 (ja) データ記憶システムおよびキャッシュデータの一貫性保証方法
JP2010170268A (ja) ストレージシステムの制御方法、ストレージ制御装置及びプログラム
JP6273678B2 (ja) ストレージ装置
JP2020115275A (ja) 情報処理装置およびプログラム
JP2009080549A (ja) ディスクアレイ制御装置およびデータ配置方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100921

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101126

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101206

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110425

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140428

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees