JP2017151609A - ストレージ、ストレージシステム - Google Patents
ストレージ、ストレージシステム Download PDFInfo
- Publication number
- JP2017151609A JP2017151609A JP2016031993A JP2016031993A JP2017151609A JP 2017151609 A JP2017151609 A JP 2017151609A JP 2016031993 A JP2016031993 A JP 2016031993A JP 2016031993 A JP2016031993 A JP 2016031993A JP 2017151609 A JP2017151609 A JP 2017151609A
- Authority
- JP
- Japan
- Prior art keywords
- value
- read
- key
- storage
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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
-
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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/0866—Addressing 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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/0866—Addressing 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/0871—Allocation or management of cache space
-
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】リードキャッシュ処理を効率化できるストレージ、ストレージシステムを提供する。【解決手段】実施形態によれば、ストレージ1Aは、記憶媒体10と、前記記憶媒体を制御するコントローラ130と、コントローラにより前記記憶媒体からリードされたバリューを記憶する第1メモリ90と、前記キーを構成する構成情報であって前記バリューを構成する単位の数を示す第1情報71とを具備する。コントローラは、前記バリューを前記記憶媒体からリードする際に、前記第1情報が示す前記バリューを構成する単位の数と、リードした前記バリューを構成する単位の数とが一致するか否かを判定する第1判定を実行し、前記第1判定の判定条件を満たす場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させる。【選択図】図1
Description
本実施形態は、概して、ストレージ、ストレージシステムに関する。
近年、キーと当該キーに対応づけられたバリューとを記憶媒体に記憶したストレージや当該ストレージを備えるストレージシステムが知られている。
本実施形態は、リードキャッシュ処理を効率化できるストレージ、ストレージシステムを提供することを目的とする。
実施形態によれば、ストレージは、記憶媒体と、前記記憶媒体にキーに対応するバリューをライトし、前記記憶媒体にライトしたキーに対応するバリューをリードするように制御するコントローラと、前記コントローラにより前記記憶媒体からリードされたバリューを記憶する第1メモリと、前記キーを構成する構成情報であって、前記バリューを構成する単位の数を示す第1情報と、を具備し、前記コントローラは、前記バリューを前記記憶媒体からリードする際に、前記第1情報が示す前記バリューを構成する単位の数と、リードした前記バリューを構成する単位の数とが一致するか否かを判定する第1判定を実行し、前記第1判定の判定条件を満たす場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させ、前記第1判定の判定条件を満たさない場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させず、リード要求に係るバリューをリードするまで前記第1判定を繰り返す。
以下、図面を参照して、発明の実施形態について説明する。この説明においては、全図にわたり共通の部分には共通の参照符号を付す。
(第1実施形態)
[1.構成]
1−1.ストレージシステム
図1を用い、第1実施形態に係るストレージシステム1Aについて説明する。ストレージシステム1Aは、記憶媒体である磁気ディスク10を備え、IP(Internet Protocol)等のネットワーク301を介して外部のストレージアクセスクライアント(以下、「クライアント」)300が、API(Application Programming Interface)230を用いてアクセス可能であるように構成される。ここで、APIとは、あるプロセッサ(ここでは、CPU210)のプログラムの機能等を、外部(ここでは、クライアント300)のプログラムから呼び出して利用するための手順やデータ形式などを定めたインタフェースをいう。例えば、クライアント300は、API230を用いて、定められた所定の手順(例えば、CPU210の汎用的なリード機能を呼び出すためのコマンドを指定すること)に従って、ストレージシステム1Aにリード要求を行うことができる。リード要求を受信したストレージシステム1Aは、クライアント300からのリード要求に従い、リードデータを返信する。このように、クライアント300は、共通して利用する汎用的な機能を、API230に定められた所定の手順に従ってCPU210から呼び出し、当該機能を利用することができる。従って、クライアント300は、当該汎用的な機能を利用するための複雑なプログラム等をいちから作成することが不要となり、リード要求等の汎用的な機能を利用するための簡単な命令をクライアント300が知っていれば、ストレージシステム1Aにアクセスすることができる。
(第1実施形態)
[1.構成]
1−1.ストレージシステム
図1を用い、第1実施形態に係るストレージシステム1Aについて説明する。ストレージシステム1Aは、記憶媒体である磁気ディスク10を備え、IP(Internet Protocol)等のネットワーク301を介して外部のストレージアクセスクライアント(以下、「クライアント」)300が、API(Application Programming Interface)230を用いてアクセス可能であるように構成される。ここで、APIとは、あるプロセッサ(ここでは、CPU210)のプログラムの機能等を、外部(ここでは、クライアント300)のプログラムから呼び出して利用するための手順やデータ形式などを定めたインタフェースをいう。例えば、クライアント300は、API230を用いて、定められた所定の手順(例えば、CPU210の汎用的なリード機能を呼び出すためのコマンドを指定すること)に従って、ストレージシステム1Aにリード要求を行うことができる。リード要求を受信したストレージシステム1Aは、クライアント300からのリード要求に従い、リードデータを返信する。このように、クライアント300は、共通して利用する汎用的な機能を、API230に定められた所定の手順に従ってCPU210から呼び出し、当該機能を利用することができる。従って、クライアント300は、当該汎用的な機能を利用するための複雑なプログラム等をいちから作成することが不要となり、リード要求等の汎用的な機能を利用するための簡単な命令をクライアント300が知っていれば、ストレージシステム1Aにアクセスすることができる。
また、ストレージシステム1Aは、磁気ディスク10にキーKと当該キーKに対応づけられたバリューVとを記憶する。
図2に示すように、バリューVは、クライアント300からライト要求またはリード要求等される情報である。一例として、バリューVは、クライアント300から送信された動画データ、画像データ、およびテキストデータ等のユーザデータである。
図2に示すように、キーKは、バリューV以外の情報であって、キーKと対応するバリューVに関連して意味付けられた情報である。一例として、キーKは、ID情報、構成ブロック数、組織名、ファイル名、ファイル形式等を含む。ID情報は、対応づけられたバリューVを識別する固有の識別情報である。構成ブロック数は、バリューVを構成するブロックの数を示す情報である。組織名は、例えば、HDD1等である。ファイル名は、例えば、File_A等である。ID情報は、例えば、2150333等である。構成ブロック数は、例えば、1等である。ファイル形式は、例えば、テキストファイル形式、画像ファイル形式、動画ファイル形式、および音声ファイル形式等である。なお、キーKを構成する情報(構成情報)は、上記のものに限定されない。上記構成情報の詳細については、図4を用いて後述する。
上記説明したようなストレージシステム(KV型ストレージシステム)1Aでは、任意のサイズの識別情報であるキーKと、当該キーKに対応づけられた任意のサイズのバリューVとが、ストレージ100に記憶される。上記構成によれば、クライアント300がキーKを指定すると、キーKに対応づけられたバリューVを、PUT(ライト)、GET(リード)、およびDELETE(イレーズ)することが可能となる。これらの詳細については、後述する。
図1に戻り、ストレージシステム1Aは、外部のクライアント300からの要求を受け付けるホスト200と、ホスト200により管理される複数のストレージ100とを備える。
ホスト200は、ストレージシステム1Aとクライアント300とを含む全体から見れば、クライアント300と複数のストレージ100とが互いにアクセスを行うための仲立ちを行うブリッジ部である。ホスト200は、例えば、サーバ、パーソナルコンピュータ、またはインターフェースデバイス等である。ここで、ホスト200とは、クライアント300とストレージ100とが互いにアクセスを行うための制御を行うものをいう。第1実施形態において、ホスト200は、複数のストレージ100を集中的に制御し、クライアント300からの要求に応答する。ホスト200に備えられるアプリケーション等は、上記API230を介して各ストレージ100にアクセスすることができる。
ホスト200は、ストレージシステム1Aとクライアント300とを含む全体から見れば、クライアント300と複数のストレージ100とが互いにアクセスを行うための仲立ちを行うブリッジ部である。ホスト200は、例えば、サーバ、パーソナルコンピュータ、またはインターフェースデバイス等である。ここで、ホスト200とは、クライアント300とストレージ100とが互いにアクセスを行うための制御を行うものをいう。第1実施形態において、ホスト200は、複数のストレージ100を集中的に制御し、クライアント300からの要求に応答する。ホスト200に備えられるアプリケーション等は、上記API230を介して各ストレージ100にアクセスすることができる。
ホスト200は、クライアント300からの要求に応じてリードコマンド等の所定のコマンドを発行してストレージI/Fを介して各ストレージ100を制御し、ストレージシステム1Aの全体の動作(例えば、リード、ライト等)を制御するCPU(Central Processing Unit)210を備える。CUP210は、KV管理部220と、API230と、KV管理テーブル240とを備える。
KV管理部220は、クライアント300からの命令を処理する。具体的には、KV管理部220は、クライアント300から受信した一対のキーおよびバリュー(K,V)に基づき、SSD1にキーKを記憶させ、バリューVの位置を示すLBA(Logical Block Address)を指定してHDD1またはHDD2にバリューVおよびキーKを記憶させる。そのため、KV管理部220は、キーKと当該キーに対応するバリューVとホスト200が指定したLBAとの対応関係を示すKV管理テーブル240を、必要に応じて参照する。
KV管理テーブル240は、各ストレージ100にライトしたクライアント300から送信された全てのキーKとバリューV、およびホスト200が指定したLBAとの対応関係を記憶する。また、KV管理テーブル240の内容は、例えばライトによって新たなLBAにおけるディスク10に新たなキーKおよびバリューVが記憶された場合等の必要に応じて更新される。
第1実施形態では、ストレージ100として、記憶媒体である磁気ディスク(以下、「ディスク」と称する)10を備えるHDD1を一例に挙げて説明する。
第1実施形態では、ストレージ100として、記憶媒体である磁気ディスク(以下、「ディスク」と称する)10を備えるHDD1を一例に挙げて説明する。
HDD1は、後述するヘッドディスクアセンブリ(head-disk assembly:HDA)と、ドライバIC20と、ヘッドアンプ集積回路(以下、「ヘッドアンプIC」)30と、揮発性メモリ70と、不揮発性メモリ80と、バッファメモリ(キャッシュメモリ)90と、1チップの集積回路からなるシステムコントローラ130とを備える。HDD1は、ホスト200と、デバイスI/FであるSATA I/FやSAS I/F等を介して接続される。HDD1は、ホスト200から転送されたライトデータVをディスク10にライトし、ディスク10からリードしたリードデータVをホスト200に転送する。
HDAは、ディスク10と、スピンドルモータ(SPM)12と、ヘッド15を搭載するアーム13と、ボイスコイルモータ(VCM)14とを有する。ディスク10は、スピンドルモータ12により回転する。アーム13およびVCM14は、アクチュエータを構成する。アクチュエータは、VCM14の駆動により、アーム13に搭載されるヘッド15をディスク10上の所定の位置まで移動させる。ディスク10およびヘッド15は、2つ以上であってもよい。
ヘッド15は、先端部に設けられたライトヘッド15Wおよびリードヘッド15Rを備える。ライトヘッド15Wは、ディスク10の表面に対して垂直方向の磁界を発生させ、ディスク10の表面のトラックにライトデータをライトする。リードヘッド15Rは、ディスク10のトラックに記録されたデータをリードする。
ドライバIC20は、システムコントローラ130(詳細には、後述するMPU60)の制御に従い、SPM12およびVCM14の駆動を制御する。
ヘッドアンプIC30は、リードアンプおよびライトドライバを有する。リードアンプは、リードヘッド15Rにより読み出されたリード信号を増幅して、リード/ライト(R/W)チャネル40に伝送する。ライトドライバは、R/Wチャネル40から出力されるライトデータに応じたライト電流をライトヘッド15Wに伝送する。
ヘッドアンプIC30は、リードアンプおよびライトドライバを有する。リードアンプは、リードヘッド15Rにより読み出されたリード信号を増幅して、リード/ライト(R/W)チャネル40に伝送する。ライトドライバは、R/Wチャネル40から出力されるライトデータに応じたライト電流をライトヘッド15Wに伝送する。
揮発性メモリ70は、電力供給が断たれると保存しているデータが失われる半導体メモリである。揮発性メモリ70は、ストレージシステム1Aの各部での処理や演算の際に必要なデータ等を格納する。例えば、揮発性メモリ70は、後述するリードキャッシュ処理の際に、各キーKを構成する構成情報(構成パラメータ)を管理するキー管理情報71を展開する。揮発性メモリ70は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)等である。
不揮発性メモリ80は、電力供給が断たれても保存しているデータを保持する半導体メモリである。不揮発性メモリ80は、例えば、フラッシュROM(Flash Read Only Memory : FROM)等である。
バッファメモリ90は、ディスク10とホスト200との間で送受信されるリードデータV等を一時的に保持する半導体メモリである。なお、バッファメモリ90は、揮発性メモリ70と一体に配置されていてもよい。バッファメモリ90は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM、FeRAM(Ferroelectric Random Access memory)、およびMRAM(Magnetoresistive Random Access Memory)等である。
バッファメモリ90は、ディスク10とホスト200との間で送受信されるリードデータV等を一時的に保持する半導体メモリである。なお、バッファメモリ90は、揮発性メモリ70と一体に配置されていてもよい。バッファメモリ90は、例えば、DRAM(Dynamic Random Access Memory)、SRAM(Static Random Access Memory)、SDRAM、FeRAM(Ferroelectric Random Access memory)、およびMRAM(Magnetoresistive Random Access Memory)等である。
システムコントローラ(メモリコントローラ)130は、例えば、複数の素子が単一チップに集積されたSystem-on-a-Chip(SoC)と称される大規模集積回路(LSI)を用いて実現される。システムコントローラ130は、リード/ライト(R/W)チャネル40と、ハードディスクコントローラ(HDC)50と、マイクロプロセッサ(MPU)60とを含む。
R/Wチャネル40は、リードデータおよびライトデータの信号処理を実行する。R/Wチャネル40は、リードデータの信号品質を測定する回路、又は機能を有する。
HDC50は、MPU60からの指示に応じて、ホスト200とR/Wチャネル40との間のデータ転送を制御する。HDC50は、CPU55と、テーブルT1とを備える。
HDC50は、MPU60からの指示に応じて、ホスト200とR/Wチャネル40との間のデータ転送を制御する。HDC50は、CPU55と、テーブルT1とを備える。
CPU55は、HDC50の全体(ここでの「全体」とは、ホスト200を除き、HDC50が制御するストレージ(HDD1)100の全体をいう。)の動作を制御する。テーブルT1は、キーVとバリューVとLBAとの対応関係を示す管理テーブル(変換テーブル)である。テーブルT1の詳細については、後述する。
MPU60は、HDD1の各部を制御し、全体の動作を制御するメインコントローラである。MPU60は、例えば、ドライバIC20を介してVCM14を制御し、ヘッド15の位置決めを行うサーボ制御を実行する。
MPU60は、HDD1の各部を制御し、全体の動作を制御するメインコントローラである。MPU60は、例えば、ドライバIC20を介してVCM14を制御し、ヘッド15の位置決めを行うサーボ制御を実行する。
なお、HDD2の構成は、HDD1と同様である。また、ホスト200やHDD1の構成は、上述したものに限られない。例えば、KV管理テーブル240やテーブルT1のように、テーブル形式に限定されず、所定の関数や数式、および所定のマッピング形式等であってもよい。これらが配置される場所も限定されない。
また、SSD1は、記憶媒体であるNAND型フラッシュメモリ等のフラッシュメモリを備える。フラッシュメモリは、ワード線とビット線との交差位置に複数のメモリセルが配置されたメモリセルアレイを備える。各メモリセルは、制御ゲートと浮遊ゲートを備える。ワード線に接続される制御ゲートの電圧制御に従い、浮遊ゲートに注入される電子の有無が制御されることで、データが不揮発に記憶される。SSD1のその他の構成の詳細な説明については、省略する。
1−2.テーブルT1
図3は、図1のテーブルT1を示す図である。図3に示すように、テーブルT1は、ストレージ100のディスク10にライトされたバリューVと、当該バリューVに対応するキーKと、ホストから指定されたLBA(バリューVを構成する単位(ブロック/セクタ)の位置情報)と、の対応関係を示す管理テーブルである。
図3は、図1のテーブルT1を示す図である。図3に示すように、テーブルT1は、ストレージ100のディスク10にライトされたバリューVと、当該バリューVに対応するキーKと、ホストから指定されたLBA(バリューVを構成する単位(ブロック/セクタ)の位置情報)と、の対応関係を示す管理テーブルである。
テーブルT1には、例えば、キーK1とバリューV1とLBA1とが互いに関連付けられた対応関係にあることが示される。以下同様に、キーK2とバリューV2とLBA2とが対応関係にある。キーK3とバリューV3とLBA3とが対応関係にある。キーKnとバリューVnとLBAn〜LBAn+2とが対応関係にある。キーKxとバリューVxとLBAn−3〜LBAn−1とが対応関係にある。キーKyとバリューVyとLBAn+3とが対応関係にある。キーKzとバリューVzとLBAn+4〜LBAn+7とが対応関係にある。
このように、ストレージシステム1Aでは、キーKに対応づけられた任意のサイズのバリューVがディスク10に記憶される。そのため、1つのバリューVに対応づけられたLBAは、任意であり、必ずしも1つではない。例えば、1つのバリューVnに対して、3つのLBAn〜LBAn+2(3ブロック)が対応づけられる。また、1つのバリューVyに対して、1つのLBAn+3(1ブロック)が対応づけられる。
また、図2で説明したように、各キーKは、当該キーKに対応づけられるバリューVを識別するID情報だけでなく、対応づけられたバリューVに関連して意味づけられた日付等その他の構成情報を含む。
1−3.キー管理情報
図4は、図1のキー管理情報71を示す図である。ここでは、キーKyのキー管理情報71を一例として示している。キーKyは、例えば、以下の構成情報(構成データ、構成パラメータ)を含む。ここで、図4に示す「構成情報」とは、当該キーKyを構成する情報であって、上述したように当該キーKyに対応づけられたバリューVyに関連して意味づけられた情報である。
1−3.キー管理情報
図4は、図1のキー管理情報71を示す図である。ここでは、キーKyのキー管理情報71を一例として示している。キーKyは、例えば、以下の構成情報(構成データ、構成パラメータ)を含む。ここで、図4に示す「構成情報」とは、当該キーKyを構成する情報であって、上述したように当該キーKyに対応づけられたバリューVyに関連して意味づけられた情報である。
図4に示すように、key y(ID情報)は、その値が例えば“2150333”であって、対応づけられたバリューVyを特定するための固有の情報である。num y(第1情報)は、その値が例えば“1”であって、バリューVyの構成ブロックの数を示す。具体的には、num yは、ホスト200から転送されたライトデータを構成する単位の数(ブロック数/セクタ数)を示す情報である。換言すれば、num yは、キーKyに対応づけられたバリューVyのサイズに対応する。Storage y(組織名)は、その値が例えば“hdd1”であり、バリューVyが格納されるストレージ(ここでは、HDD1)を示す。file y(ファイル名)は、その値が例えば“File_A”であり、バリューVyが格納されるファイル名を示す。data y(日付)は、その値が例えば“1127”であり、バリューVyが作成された11月27日を示す。
なお、図4に示した構成情報は、あくまで例示であり、これらに限定されない。例えば、構成情報は、例えば、バリューVのサイズ、タイトル、および注釈等のその他のバリューVの属性データを含んでもよい。
[2.動作]
2−1.リード(リードキャッシュ)処理
図5乃至図7を用い、ストレージシステム1Aのリード(リードキャッシュ)処理について説明する。なお、第1実施形態では、ホスト200が、クライアント300からリードデータであるバリューVn(LBAで示すLBAn〜LBAn+2(構成ブロックの数:3))のリード要求を受けた場合を一例に挙げる。そのため、まず、リード要求に係るリード処理について説明する。
[2.動作]
2−1.リード(リードキャッシュ)処理
図5乃至図7を用い、ストレージシステム1Aのリード(リードキャッシュ)処理について説明する。なお、第1実施形態では、ホスト200が、クライアント300からリードデータであるバリューVn(LBAで示すLBAn〜LBAn+2(構成ブロックの数:3))のリード要求を受けた場合を一例に挙げる。そのため、まず、リード要求に係るリード処理について説明する。
[リード処理]
図5のステップS11において、ホスト200は、API230を介してクライアント300からキーKnが指定されたリード要求を受信する。リード要求を受けたホスト200のKV管理部220は、KV管理テーブル240を参照し、KV管理テーブルに示されるキーKnとバリューVnとの対応関係に基づいて、バリューVnに対応するキーKnが記憶されるストレージ100を検索する。検索の結果、KV管理部220は、キーKnが記憶されるストレージがHDD1であると判定すると、KV管理テーブル240を参照し、KV管理テーブルに示されるキーKnとLBAn〜LBAn+2との対応関係に基づいて、LBAn〜LBAn+2を指定してリードデータであるバリューVnを指定する。
図5のステップS11において、ホスト200は、API230を介してクライアント300からキーKnが指定されたリード要求を受信する。リード要求を受けたホスト200のKV管理部220は、KV管理テーブル240を参照し、KV管理テーブルに示されるキーKnとバリューVnとの対応関係に基づいて、バリューVnに対応するキーKnが記憶されるストレージ100を検索する。検索の結果、KV管理部220は、キーKnが記憶されるストレージがHDD1であると判定すると、KV管理テーブル240を参照し、KV管理テーブルに示されるキーKnとLBAn〜LBAn+2との対応関係に基づいて、LBAn〜LBAn+2を指定してリードデータであるバリューVnを指定する。
なお、上記キーKnを検索する際、KV管理部220は、ストレージであるSSD1から検索してもよい。この詳細については、後述する。
ステップS12において、バリューVnを指定されたデバイス100のCPU55は、リードヘッド15Rのディスク10の位置を、現在のトラックからリードデータであるバリューVnが記憶される目標のトラックに移動させる(シーク)。具体的には、CPU55は、図3に示したように、バリューVnと当該バリューVnに対応するLBAn〜LBAn+2との対応関係が示されたテーブルT1を参照し、参照した対応関係(Vn,LBAn〜LBAn+2)に基づいて、リードヘッド15Rの位置を目標トラックに移動させる。
ステップS12において、バリューVnを指定されたデバイス100のCPU55は、リードヘッド15Rのディスク10の位置を、現在のトラックからリードデータであるバリューVnが記憶される目標のトラックに移動させる(シーク)。具体的には、CPU55は、図3に示したように、バリューVnと当該バリューVnに対応するLBAn〜LBAn+2との対応関係が示されたテーブルT1を参照し、参照した対応関係(Vn,LBAn〜LBAn+2)に基づいて、リードヘッド15Rの位置を目標トラックに移動させる。
ステップS13において、上記シーク完了後、HDD1は、ディスク10の目標トラックから、リードデータであるバリューVnをリードする。例えば、図6に示すように、HDD1のMPU60は、ディスク10の目標トラック19から、テーブルT1から参照したLBAn〜LBAn+2のバリューVnを、リードヘッド15Rによりリードする。より具体的には、図中の矢印で示すディスク10の回転に伴い、バリューVn(LBAn〜LBAn+2)が、リードヘッド15Rの位置までくると、リードヘッド15RによりバリューVnをリードする。リードされたバリューVnは、バッファメモリ90に記憶される。
図5に戻り、ステップS14において、HDD1は、リードしたバリューVnを、ホスト200に転送し、リード要求に応答する。具体的には、HDD1のCPU55は、バッファメモリ90からバリューVnをホスト200に転送する。
図7に示すように、リード処理の結果、バッファメモリ90のメモリ空間には、リードデータであるバリューVnが記憶される。図7に示すように、バッファメモリ90の全メモリ領域からリードデータであるバリューVnを除いた領域は、残余領域RAとなる。
図7に示すように、リード処理の結果、バッファメモリ90のメモリ空間には、リードデータであるバリューVnが記憶される。図7に示すように、バッファメモリ90の全メモリ領域からリードデータであるバリューVnを除いた領域は、残余領域RAとなる。
[リードキャッシュ処理]
続いて、リードキャッシュ処理について説明する。リードキャッシュ処理は、リード要求があったデータ(ここでは、バリューVn)に引き続く領域やその近傍の領域等に対しては、リード要求がされる傾向が高いことを利用するものである。例えば、ある領域(ここでは、LBAn〜LBAn+2)へのリード要求がされた後、これに引き続く先の領域(ここでは、LBAn+3)に記憶されるデータをリードし、あらかじめバッファメモリ90に記憶させておく。このようにリードキャッシュ処理をしておくことで、次にあらかじめバッファメモリ90に記憶させておいたデータに対してリード要求がされた場合、ディスク10からリードすることなく、バッファメモリ90から直接的に当該リード要求に係るデータを転送することができる。この結果、ストレージシステム1Aのリードアクセスを高速化することができる。
続いて、リードキャッシュ処理について説明する。リードキャッシュ処理は、リード要求があったデータ(ここでは、バリューVn)に引き続く領域やその近傍の領域等に対しては、リード要求がされる傾向が高いことを利用するものである。例えば、ある領域(ここでは、LBAn〜LBAn+2)へのリード要求がされた後、これに引き続く先の領域(ここでは、LBAn+3)に記憶されるデータをリードし、あらかじめバッファメモリ90に記憶させておく。このようにリードキャッシュ処理をしておくことで、次にあらかじめバッファメモリ90に記憶させておいたデータに対してリード要求がされた場合、ディスク10からリードすることなく、バッファメモリ90から直接的に当該リード要求に係るデータを転送することができる。この結果、ストレージシステム1Aのリードアクセスを高速化することができる。
ステップS15において、HDD1は、バッファメモリ90にリードキャッシュ処理を行うための領域があるか否かを判定する。この際、例えば、HDD1のCPU55は、リードデータが記憶されていること等により、バッファメモリ90の残余領域RAの容量が所定の閾値Cth未満である場合(S15でNo)、リードキャッシュ処理を終了させる。ここで、所定の閾値Cthとは、バッファメモリ90のメモリ領域における、バッファメモリ90を使用するための空き領域(残余領域)が占める割合をいう。例えば、図8に示す場合、閾値Cthは、バッファメモリ90のメモリ領域(リードデータVnとキャッシュデータVyとが格納される領域、および残余領域RA)における、残余領域RAが占める割合である。この場合、閾値Cthは、例えば、1割から2割程度である。
ステップS16において、HDD1は、ステップS15の条件を満たす場合(S15でYes)、ディスク10の目標トラック19から、同様に、バリューをリードすることを継続する。
ステップS17において、HDD1は、リードするバリューVのキーKを参照し、参照したキーKに示されるバリューVの全てが、バッファメモリ90に含まれるか否かを判定する。換言すれば、この際、HDD1は、キーKを参照することで、中途半端なデータや使用されないデータ等を判定する。
ステップS17において、HDD1は、リードするバリューVのキーKを参照し、参照したキーKに示されるバリューVの全てが、バッファメモリ90に含まれるか否かを判定する。換言すれば、この際、HDD1は、キーKを参照することで、中途半端なデータや使用されないデータ等を判定する。
具体的には、HDD1のCPU55は、揮発性メモリ70に展開されたキー管理情報71(図4)を参照し、キーKを構成する各構成データのうちのバリューVの構成ブロックの数を示す情報(第1情報)num に基づき、バリューVの全てが、バッファメモリ90に含まれるか否かを判定する。ステップS17の条件を満たさない場合(S17でNo)、HDD1は、ステップS17の処理を繰り返す。
この際、例えば、図6に示す位置(LBAn−3の途中)からリードキャッシュ処理が開始される場合、CPU55は、キー管理情報71を参照し、キーKxを構成するバリューVxの構成ブロックの数を示す情報(第1情報)num xの値である“3”に基づき、バリューVx(LBAn−3〜LBAn−1)の全てが、バッファメモリ90に含まれない、と判定する。これは、情報num xが示す構成ブロックの数が3ブロックである一方、リードしたバリューVxを構成するブロックの数が2ブロック(LBAn−2およびLBAn−1)であり、参照した数とリードした数とが一致しない。従って、CPU55が、バリューVxを構成する全てのデータをリードできないと判定する。
さらに、図6に示すリードヘッド15Rが位置LBAn+3に来た場合、CPU55は、図4に示したキー管理情報71を参照し、キーKyを構成するバリューVvの構成ブロックの数を示す情報(第1情報)num yの値である“1”に基づき、バリューVy(LBAn+3)の全てが、バッファメモリ90に含まれる(キャッシュとして利用可能)、と判定する。これは、構成ブロックの数を示す情報num yが1ブロックであり、リードしたバリューVyを構成するブロックも1ブロックである。そのため、情報num yが示す構成ブロックの数“1”と、リードしたバリューVyを構成するブロックの数“1”とが一致する。従って、CPU55は、リードしたバリューVyについて、全てのデータをリードでき、バッファメモリ90に記憶させることができると判定する。
なお、図8に示すように、ここでは、これ以上のデータをバッファメモリ90に記憶させると、キャッシュデータVyおよびリードデータVnが記憶されていることにより、バッファメモリ90の残余領域RAの容量が所定の閾値Cth未満となるとする。
そのため、図6に示すリードヘッド15Rが位置LBAn+4に来た場合、CPU55は、キー管理情報71を参照し、キーKzを構成するバリューVzの構成ブロックの数に関連付けられた情報(第1情報)num zの値である“4”に基づき、バリューVz(LBAn+3〜LBAn+7)の全てが、バッファメモリ90に含まれない(キャッシュとして利用不可能)、と判定する。
そのため、図6に示すリードヘッド15Rが位置LBAn+4に来た場合、CPU55は、キー管理情報71を参照し、キーKzを構成するバリューVzの構成ブロックの数に関連付けられた情報(第1情報)num zの値である“4”に基づき、バリューVz(LBAn+3〜LBAn+7)の全てが、バッファメモリ90に含まれない(キャッシュとして利用不可能)、と判定する。
ステップS18において、ステップS17の条件を満たす場合(S17でYes)、当該バリューVを、バッファメモリ90に記憶させ、キャッシュリード処理を終了する。その結果、例えば、図8に示すように、ステップS17の条件を満たしたバリューVy(LBAn+3)を、キャッシュデータとしてバッファメモリ90に記憶させることができる。
なお、その他のストレージ100であるHDD2等のリードおよびリードキャッシュ処理ついても、上記HDD1と実質的に同様である。そのため、その詳細な説明を省略する。
[3.作用効果]
以上説明したように、第1実施形態に係るストレージシステム1Aの構成および動作によれば、少なくとも下記(1)および(2)の効果が得られる。
[3.作用効果]
以上説明したように、第1実施形態に係るストレージシステム1Aの構成および動作によれば、少なくとも下記(1)および(2)の効果が得られる。
(1)リードキャッシュ処理を効率化できる。
リード処理(図5のS11〜S14)の後、HDD1のCPU55は、キャッシュリードするバリューVのキーKを参照し、参照したキーKに示されるバリューVの全てが、バッファメモリ90に含まれるか否かを判定する(図5のS17)。換言すれば、HDD1は、キーKの構成データを参照することで、リードしたバリューが、当該バリューを構成する全てのデータを備えていない中途半端なデータや使用されないデータ等か否かを判定する。より具体的には、CPU55は、揮発性メモリ70に展開されたキー管理情報71(図4)を参照し、キーKを構成する各構成データのうちのバリューVの構成ブロックの数を示す情報(第1情報)と、リードしたバリューを構成するブロックの数とが一致するか否かを判定する。
リード処理(図5のS11〜S14)の後、HDD1のCPU55は、キャッシュリードするバリューVのキーKを参照し、参照したキーKに示されるバリューVの全てが、バッファメモリ90に含まれるか否かを判定する(図5のS17)。換言すれば、HDD1は、キーKの構成データを参照することで、リードしたバリューが、当該バリューを構成する全てのデータを備えていない中途半端なデータや使用されないデータ等か否かを判定する。より具体的には、CPU55は、揮発性メモリ70に展開されたキー管理情報71(図4)を参照し、キーKを構成する各構成データのうちのバリューVの構成ブロックの数を示す情報(第1情報)と、リードしたバリューを構成するブロックの数とが一致するか否かを判定する。
ステップS17の判定条件を満たす場合(S17でYes)、当該バリューVを、バッファメモリ90に記憶させる。その結果、例えば、図8に示したように、ステップS17の条件を満たしたバリューVy(LBAn+3)を、キャッシュデータとしてバッファメモリ90に記憶させることができる。
そのため、中途半端なデータ(ここでのバリューVx等)や使用されないデータ等のキャッシュデータとしての取得を防止できる。従って、当該中途半端なデータや不必要なデータの断片等の無駄なデータに対して、バッファメモリ90のキャッシュ領域を用意する必要がない。具体的には、図3に示したように、バリューVxは、3つのLBA(LBAn−3〜LBA−1)の3つのデータで構成される。そのため、バリューVxのうち、1つのデータや2つのデータしかリードされない場合、当該データは、バリューVxを構成する全てのデータを備えていない中途半端なデータであって、バッファメモリ90に記憶させる必要のない無駄なデータである。このように、第1実施形態によれば、上記無駄なデータをバッファメモリ90に記憶させる必要がなく、例えば、限られたバッファメモリ90のキャッシュ容量内でヒット率の向上等が期待でき、リードキャッシュ処理を効率化できる。
図9に示す比較例は、第1実施形態と比較して、セクタ/ブロック単位のコマンド管理である。そのため、キャッシュとしてリードされたデータが、その後に使用されるかどうかの判定が非常に困難である。例えば、図9に示すように、LBAn−3〜LBAn−1にある中途半端なデータや、LBAn+4〜LBAn+7にあるバッファメモリの閾値を超えるような使用されないデータに対しても、バッファメモリの記憶領域を用意する必要がある。このように、比較例に係るリードキャッシュ処理の場合、図9に示すリードヘッドのリード範囲CRcが、第1実施形態のリード範囲CR1よりも大きくなり(CRc>CR1)、バッファメモリのキャッシュ領域の無駄な範囲が大きくなることは明らかである。
(2)バッファメモリ90のキャッシュ容量を削減でき、バッファメモリ90の専有面積を削減可能である。
上述の通り、第1実施形態に係るストレージシステム1Aによれば、無駄なく有効なバリュー(データ)Vのみ、バッファメモリ90に記憶させることができる。そのため、バッファメモリ90のキャッシュ容量を削減でき、バッファメモリ90の専有面積を削減可能である点でも有利である。
上述の通り、第1実施形態に係るストレージシステム1Aによれば、無駄なく有効なバリュー(データ)Vのみ、バッファメモリ90に記憶させることができる。そのため、バッファメモリ90のキャッシュ容量を削減でき、バッファメモリ90の専有面積を削減可能である点でも有利である。
(変形例1)
変形例1に係るストレージシステム1Aの動作について説明する。この説明において、ストレージシステム1Aの構成については、第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[動作]
リード(リードキャッシュ)処理
図10乃至図13を用い、ストレージシステム1Aのリード(リードキャッシュ)処理について説明する。変形例1は、シーク完了後のリードヘッド15Rの位置が、リードデータであるバリューVn位置より前にある場合の一例について説明する。この場合では、バリューVnより前のバリューのリードキャッシュを行うことが可能となる。
変形例1に係るストレージシステム1Aの動作について説明する。この説明において、ストレージシステム1Aの構成については、第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[動作]
リード(リードキャッシュ)処理
図10乃至図13を用い、ストレージシステム1Aのリード(リードキャッシュ)処理について説明する。変形例1は、シーク完了後のリードヘッド15Rの位置が、リードデータであるバリューVn位置より前にある場合の一例について説明する。この場合では、バリューVnより前のバリューのリードキャッシュを行うことが可能となる。
図10に示すように、変形例1に係るストレージシステム1Aのリードおよびリードキャッシュ処理は、リードキャッシュ処理1(ステップS27およびS28)を更に行う点で、第1実施形態と相違する。
まず、ステップS13において、上記シーク完了後、HDD1は、ディスク10の目標トラック19から、バリューVをリードする。変形例1の場合、図11に示すように、シーク完了後のリードヘッド15Rの位置が、リードデータであるバリューVn位置より前にある。そのため、HDD1のMPU60は、テーブルT1を参照し、ディスク10の目標トラック19から、LBAn−3〜LBAn−1のバリューVxを、リードヘッド15Rによりリードする。
まず、ステップS13において、上記シーク完了後、HDD1は、ディスク10の目標トラック19から、バリューVをリードする。変形例1の場合、図11に示すように、シーク完了後のリードヘッド15Rの位置が、リードデータであるバリューVn位置より前にある。そのため、HDD1のMPU60は、テーブルT1を参照し、ディスク10の目標トラック19から、LBAn−3〜LBAn−1のバリューVxを、リードヘッド15Rによりリードする。
ステップS27において、HDD1は、リードするバリューVのキーKを参照し、参照したキーKに示されるバリューVの全てが、バッファメモリ90に含まれるか否かを判定する。具体的には、HDD1のCPU55は、揮発性メモリ70に展開されたキー管理情報71(図4)を参照し、キーKxを構成する構成データのうちのバリューVxの構成ブロックの数を示す情報(第1情報)num に基づき、バリューVxの全てが、バッファメモリ90に含まれるか否かを判定する。ステップS27の条件を満たさない場合(S27でNo)、HDD1は、リード要求に係るバリューVをリードするまで、ステップS27の処理を繰り返す。
この際、変形例1のように、図11に示す位置(LBAn−4の途中であってLBAn−3の前)からリードキャッシュ処理1が開始される場合、CPU55は、キー管理情報71を参照し、キーKxを構成するバリューVxの構成ブロックの数を示す情報(第1情報)num xの値である“3”に基づき、バリューVx(LBAn−3〜LBAn−1)の全てが、バッファメモリ90に含まれる、と判定する。これは、情報num xが示す構成ブロックの数“3”とホスト200から指定されリードしたブロックの数“3”とが一致(3ブロック)する。そのため、CPU55は、バリューVxを構成する全てのデータをリードできると判定できる。
ステップS28において、ステップS27の条件を満たす場合(S27でYes)、当該バリューVを、バッファメモリ90に記憶させる。その結果、例えば、図12に示すように、ステップS27の条件を満たしたバリューVx(LBAn−3〜LBAn−1)を、キャッシュデータとしてバッファメモリ90に記憶させることができる。
その後、ストレージシステム1Aは、上記第1実施形態と同様のリード処理およびリードキャッシュ処理2(ステップS15乃至S18)を行う。その結果、変形例1では、図13に示すように、リードデータであるバリューVn(LBAn〜LBAn+2)の前後に位置するキャッシュデータVx(LBAn−3〜LBAn−1)およびキャッシュデータVy(LBAn+3)を、バッファメモリ90に記憶させることができる。
[作用効果]
以上説明したように、変形例1に係るストレージシステム1Aの構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。変形例1に係るストレージシステム1Aは、図10に示したリードキャッシュ処理1(ステップS27およびS28)を更に実行する。
以上説明したように、変形例1に係るストレージシステム1Aの構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。変形例1に係るストレージシステム1Aは、図10に示したリードキャッシュ処理1(ステップS27およびS28)を更に実行する。
そのため、図13に示したように、リードデータであるバリューVn(LBAn〜LBAn+2)の前後に位置するキャッシュデータVx(LBAn−3〜LBAn−1)およびキャッシュデータVy(LBAn+3)を、バッファメモリ90に記憶させることができる。このように、リードデータであるバリューVnの前後に位置するバリューVxおよびVyをキャッシュデータとしてバッファメモリ90に記憶させることで、ヒット率の向上が更に期待できる点で有利である。
(第2実施形態)
第2実施形態に係るストレージシステム1Bについて説明する。この説明において、上記第1実施形態と重複する部分の詳細な説明を省略する。
[構成]
ストレージシステム
図14に示すように、第2実施形態に係るストレージシステム1Bは、ホスト(ブリッジ部)200を備えておらず、ストレージ100のCPU55がKV管理部220,API230,およびKV管理テーブル240を備えている点で、第1実施形態と相違する。
第2実施形態に係るストレージシステム1Bについて説明する。この説明において、上記第1実施形態と重複する部分の詳細な説明を省略する。
[構成]
ストレージシステム
図14に示すように、第2実施形態に係るストレージシステム1Bは、ホスト(ブリッジ部)200を備えておらず、ストレージ100のCPU55がKV管理部220,API230,およびKV管理テーブル240を備えている点で、第1実施形態と相違する。
その他の構成については、第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[動作]
リード(リードキャッシュ)処理
第2実施形態に係るストレージシステム1Bのリードおよびリードキャッシュ処理は、ホスト200が行う処理(例えば、図5のS11等)をストレージ100が行う点で、第1実施形態と相違する。
[動作]
リード(リードキャッシュ)処理
第2実施形態に係るストレージシステム1Bのリードおよびリードキャッシュ処理は、ホスト200が行う処理(例えば、図5のS11等)をストレージ100が行う点で、第1実施形態と相違する。
その他の動作については、第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[作用効果]
以上説明したように、第2実施形態に係るストレージシステム1Bの構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。さらに、第2実施形態に係るストレージシステム1Bは、ホスト(ブリッジ部)200を備えておらず、ストレージ100のCPU55がKV管理部220,API230,およびKV管理テーブル240を備える。
[作用効果]
以上説明したように、第2実施形態に係るストレージシステム1Bの構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。さらに、第2実施形態に係るストレージシステム1Bは、ホスト(ブリッジ部)200を備えておらず、ストレージ100のCPU55がKV管理部220,API230,およびKV管理テーブル240を備える。
そのため、ストレージシステム1Bの各ストレージ100は、直接ネットワーク301に接続することができる。従って、ストレージシステム1Bの各ストレージ100は、オブジェクトストレージシステム1Bの各ノードとしての機能を有し、通信の一部を直接クライアント300と行うことができる。このように、必要に応じて、ストレージシステム1Bを適用することが可能である。
(第3実施形態)
第3実施形態に係るストレージシステム1について説明する。この説明において、上記第1,第2実施形態と重複する部分の詳細な説明を省略する。ここでは、KV型ストレージシステム1の構成、PUT(ライト)動作、およびGET(リード)動作の概略について説明する。
第3実施形態に係るストレージシステム1について説明する。この説明において、上記第1,第2実施形態と重複する部分の詳細な説明を省略する。ここでは、KV型ストレージシステム1の構成、PUT(ライト)動作、およびGET(リード)動作の概略について説明する。
[構成]
ストレージシステム
図15に示すように、ストレージシステム1は、IP等のネットワーク301を用い、外部のクライアント300からAPIを利用してアクセス可能であるように構成される。ストレージシステム1は、データVと、このデータVを識別するための識別子Kとを含むデータ群(オブジェクト)の単位でクライアント300から転送されるデータを管理する。このようなKV型ストレージシステムでは、任意のサイズの識別子キーKと、当該キーKに関連付けられた任意のサイズのデータVとが、ストレージ100に記憶される。上記構成によれば、クライアント300がキーKを指定すると、キーKに関連付けられたバリューVを、PUT(ライト)、GET(リード)、およびDELETE(イレーズ)することが可能となる。
ストレージシステム
図15に示すように、ストレージシステム1は、IP等のネットワーク301を用い、外部のクライアント300からAPIを利用してアクセス可能であるように構成される。ストレージシステム1は、データVと、このデータVを識別するための識別子Kとを含むデータ群(オブジェクト)の単位でクライアント300から転送されるデータを管理する。このようなKV型ストレージシステムでは、任意のサイズの識別子キーKと、当該キーKに関連付けられた任意のサイズのデータVとが、ストレージ100に記憶される。上記構成によれば、クライアント300がキーKを指定すると、キーKに関連付けられたバリューVを、PUT(ライト)、GET(リード)、およびDELETE(イレーズ)することが可能となる。
ストレージシステム1は、さらに複数のストレージ100(SSD1,SSD2,,,HDD1,HDD2,HDD3,,,)を備え、KV管理部220によりこれらを管理する。
SSDのリード速度VSSDは、HDDのリード速度VHDDよりも速い(VSSD >VHDD)。一方、SSDのデータ容量CSSDは、HDDのデータ容量CHDDよりも小さい(CSSD < CHDD)。後述するように、ストレージシステム1は、ストレージの特性に基づく上記関係を利用して、動作を行う。
SSDのリード速度VSSDは、HDDのリード速度VHDDよりも速い(VSSD >VHDD)。一方、SSDのデータ容量CSSDは、HDDのデータ容量CHDDよりも小さい(CSSD < CHDD)。後述するように、ストレージシステム1は、ストレージの特性に基づく上記関係を利用して、動作を行う。
なお、ストレージシステム1の構成は、図16に示したものに限られない。例えば、ストレージシステム1は、キーKに対応するデータVを記憶しているストレージ100がいずれであるかというキー構成を管理する管理部等を更に備えてもよい。
[動作]
PUT(ライト)処理
図16に示すように、PUT(ライト)処理を行う場合、クライアント300は、ホスト200に、キーKとバリューVとがペアとなったPUT要求であるPUT(K,V)を送信する。
[動作]
PUT(ライト)処理
図16に示すように、PUT(ライト)処理を行う場合、クライアント300は、ホスト200に、キーKとバリューVとがペアとなったPUT要求であるPUT(K,V)を送信する。
続いて、ホスト200のKV管理部220は、受信したPUT(K,V)に基づき、SSD1およびSSD2にキーKをライトし、HDD1およびHDD2にキーKおよびバリューVのセット(K,V)をライトする。このようにして、同一のキーKが記憶されたSSD1,SSD2、および同一のセット(K,V)が記憶されたHDD1,HDD2は、所定のRAID(Redundant Array of Independent [Inexpensive] Disks)グループを形成してもよい。
続いて、KV管理部220は、キーKおよびセット(K,V)とこれを記憶したストレージ(SSD1,SSD2,HDD1,HDD2)100との対応関係を、KV管理テーブル240に記憶する。
続いて、KV管理部220は、PUT処理が完了した旨を、クライアント300に応答してもよい。
続いて、KV管理部220は、PUT処理が完了した旨を、クライアント300に応答してもよい。
上記処理により、ストレージ装置100に、PUT要求に係るセット(K,V)が記憶される。
GET(リード)処理
図17に示すように、GET(リード)処理を行う場合、クライアント300は、GET要求として所望のバリューVに対応するキーK(GET(K))をストレージシステム1に送信する。
GET(リード)処理
図17に示すように、GET(リード)処理を行う場合、クライアント300は、GET要求として所望のバリューVに対応するキーK(GET(K))をストレージシステム1に送信する。
キーKを受信したKV管理部220は、キーKと当該キーKがライトされたSSDとの関係が示されるKV管理テーブル240を参照し、例えばSSD1に記憶されたキーKを検索してキーKを得て、キーK構造である例えばエントリ構造体等を得る。
続いて、KV管理部220は、エントリ構造体が示すHDD1のポインタが示す位置に記憶されているバリューVを、ストレージ100であるHDD1からリードする。
続いて、KV管理部220は、エントリ構造体が示すHDD1のポインタが示す位置に記憶されているバリューVを、ストレージ100であるHDD1からリードする。
続いて、KV管理部220は、リードしたバリューVをクライアント300送信し、クライアント300に応答する。
なお、KV管理部220がSSD1およびSSD2に記憶されているキーを検索してもヒットしなかった場合、KV管理部220は、クライアント300に対して、エラー応答またはペアとなるバリューVがなかった旨を応答してもよい。
なお、KV管理部220がSSD1およびSSD2に記憶されているキーを検索してもヒットしなかった場合、KV管理部220は、クライアント300に対して、エラー応答またはペアとなるバリューVがなかった旨を応答してもよい。
[作用効果]
以上説明したように、第3実施形態に係るストレージシステム1の構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。
さらに、上述したように第3実施形態に係るストレージシステム1は、可変長のキーKを指定して可変長のバリューVのライトおよびリードを行うことができる。そのため、非構造化データを処理でき、ソフトウェア構成を簡略化することができる。
以上説明したように、第3実施形態に係るストレージシステム1の構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。
さらに、上述したように第3実施形態に係るストレージシステム1は、可変長のキーKを指定して可変長のバリューVのライトおよびリードを行うことができる。そのため、非構造化データを処理でき、ソフトウェア構成を簡略化することができる。
ホスト(ブリッジ部)200のKV管理部220が、一括してストレージ100を管理する。そのため、大規模ストレージを構成しても、ストレージ100を管理するための管理サーバの数を削減または管理サーバの数を不要とすることができる。そのため、ストレージシステム1は、低TCO(Total Cost of Ownership)化および高性能化に有利である。
ストレージシステム1は、応答速度や容量が異なるSSDやHDD等の複数の種類のストレージを一括して制御する。そのため、処理目的に合わせたストレージの選択が不要となる。
さらに、ストレージシステム1は、SSDのリード速度VSSDとHDDのリード速度VHDDとの関係(VSSD >VHDD)、およびSSDのデータ容量CSSDとHDDの容量CHDDとの関係(CSSD < CHDD)を利用することで、PUT処理およびGET処理を効率化できる。例えば、PUT処理において、KV管理部220は、サイズの大きいバリューVをHDD1,HHD2にライトすることで、PUT要求を満たすことができる。例えば、GET処理において、KV管理部220は、リード速度の速いSSD1,SSD2からキーKを検索することで、クライアント300の所定の応答速度内にGET要求を満たすことができる。
さらに、ストレージシステム1は、SSDのリード速度VSSDとHDDのリード速度VHDDとの関係(VSSD >VHDD)、およびSSDのデータ容量CSSDとHDDの容量CHDDとの関係(CSSD < CHDD)を利用することで、PUT処理およびGET処理を効率化できる。例えば、PUT処理において、KV管理部220は、サイズの大きいバリューVをHDD1,HHD2にライトすることで、PUT要求を満たすことができる。例えば、GET処理において、KV管理部220は、リード速度の速いSSD1,SSD2からキーKを検索することで、クライアント300の所定の応答速度内にGET要求を満たすことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
300…ストレージアクセスクライアント、301…ネットワーク、200…ホスト(ブリッジ部)、210…CPU、220…KV管理部、230…API、240…KV管理テーブル、130…システムコントローラ、100…ストレージ、90…バッファメモリ、80…不揮発性メモリ、70…揮発性メモリ、60…MPU、55…CPU、T1…テーブル、50…HDC、40…R/Wチャネル、30…ヘッドアンプIC、20…ドライバIC、15…ヘッド、14…VCM、13…アーム、12…SPM、10…磁気ディスク、1,1A,1B…ストレージシステム。
Claims (10)
- キーと前記キーに対応づけられたバリューとを記憶する記憶媒体と、
外部から指定されるキーに対応づけられたバリューを前記記憶媒体からリードするコントローラと、
前記コントローラにより前記記憶媒体からリードされるバリューを記憶する第1メモリと、
前記キーを構成する構成情報であって、前記バリューを構成する単位の数を示す第1情報と、を具備し、
前記コントローラは、外部から指定されたキーに対応するバリューを前記記憶媒体からリードする際に、前記第1情報を参照し、前記第1情報が示す前記バリューを構成する単位の数と、リードした前記バリューを構成する単位の数とが一致するか否かを判定する第1判定を実行し、
前記第1判定の判定条件を満たす場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させ、
前記第1判定の判定条件を満たさない場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させず、前記外部から指定されたキーに対応するバリューをリードするまで前記第1判定を繰り返す
ストレージ。 - 前記記憶媒体にライトされたキーと、前記キーに対応づけられたバリューと、外部から指定された前記バリューを構成する単位の前記記憶媒体における位置情報との対応関係を示す管理テーブルを更に具備する
請求項1に記載のストレージ。 - 前記キーを構成する構成情報は、前記キー対応づけられた前記バリューを特定するID情報、前記バリューが格納されるストレージ、前記バリューが格納されるファイル名、前記バリューがライトされた日付、前記バリューのサイズ、前記バリューのタイトル、および前記バリューの注釈の少なくとも1つを含む
請求項1または2に記載のストレージ。 - 前記コントローラは、前記バリューを前記記憶媒体からリードする際に、前記外部からキーを指定され、
前記管理テーブルを参照し、前記記憶媒体における位置情報に基づいて、前記指定されたキーに対応するバリューを前記記憶媒体からリードデータとしてリードし、
リードした前記バリューを前記第1メモリに記憶させ、前記第1メモリから前記バリューを外部に送信し、前記外部からのリード要求に応答する
請求項2に記載のストレージ。 - 前記コントローラは、前記バリューを前記記憶媒体からリードする際に、前記第1情報を参照し、前記第1情報が示す前記バリューを構成する単位の数と、リードした前記バリューを構成する単位の数とが一致するか否かを判定する第2判定を更に実行し、
前記第2判定の判定条件を満たす場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させ、
前記第2判定の判定条件を満たさない場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させず、前記第1メモリの残存容量が所定の閾値未満となるまで前記第2判定を繰り返す
請求項4に記載のストレージ。 - キーおよび前記キーに対応づけられたバリューを記憶する記憶媒体を備えるストレージと、
前記記憶媒体からリードされるバリューを記憶する第1メモリと、
前記キーを構成する構成情報であって、前記バリューを構成する単位の数を示す第1情報と、
前記ストレージを管理するホストと、を具備し、
前記ストレージは、前記ホストから指定されたキーに対応するバリューを前記記憶媒体からリードする際に、前記第1情報を参照し、前記第1情報が示す前記バリューを構成する単位の数と、リードした前記バリューを構成する単位の数とが一致するか否かを判定する第1判定を実行し、
前記第1判定の判定条件を満たす場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させ、
前記第1判定の判定条件を満たさない場合、リードした前記バリューをキャッシュデータとして前記第1メモリに記憶させず、前記ホストから指定されたキーに対応するバリューがリードされるまで前記第1判定を繰り返す
ストレージシステム。 - 前記ストレージは、前記記憶媒体である磁気ディスクを有するハードディスクドライブと、前記記憶媒体であるフラッシュメモリを有するソリッドステートドライブと、を備える
請求項6に記載のストレージシステム。 - 前記ホストは、外部からのライト要求に基づき、前記ソリッドステートドライブに前記外部から受信したキーをライトし、前記ハードディスクドライブに前記外部から受信した前記キーおよび前記キーに対応づけられたバリューをライトする
請求項7に記載のストレージシステム。 - 前記ホストは、前記外部からリードデータであるバリューに対応するキーを受信し、
前記ソリッドステートドライブに記憶された前記キーを検索して前記キーを取得し、
前記取得したキーに対応し、前記ハードディスクドライブに記憶されるバリューをリードし、
前記リードしたバリューを前記外部に送信し、リード要求に応答する
請求項7または8に記載のストレージシステム。 - 前記ストレージは、前記記憶媒体である磁気ディスクをそれぞれ有する複数のハードディスクドライブと、前記記憶媒体であるフラッシュメモリをそれぞれ有する複数のソリッドステートドライブと、を更に備え、
前記ホストは、前記外部からのライト要求に基づき、前記複数のソリッドステートドライブに前記外部から受信したキーをライトし、前記複数のハードディスクドライブに前記外部から受信した前記キーおよび前記キーに対応づけられたバリューをライトし、RAIDグループを形成する
請求項7乃至9のいずれかに記載のストレージシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016031993A JP2017151609A (ja) | 2016-02-23 | 2016-02-23 | ストレージ、ストレージシステム |
US15/233,900 US20170242792A1 (en) | 2016-02-23 | 2016-08-10 | Storage device that carries out a read cache operation |
CN201610693550.5A CN107102956A (zh) | 2016-02-23 | 2016-08-19 | 存储装置及存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016031993A JP2017151609A (ja) | 2016-02-23 | 2016-02-23 | ストレージ、ストレージシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017151609A true JP2017151609A (ja) | 2017-08-31 |
Family
ID=59629447
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016031993A Pending JP2017151609A (ja) | 2016-02-23 | 2016-02-23 | ストレージ、ストレージシステム |
Country Status (3)
Country | Link |
---|---|
US (1) | US20170242792A1 (ja) |
JP (1) | JP2017151609A (ja) |
CN (1) | CN107102956A (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10795821B2 (en) * | 2018-12-04 | 2020-10-06 | Vmware, Inc. | Memory efficient key-value store |
US11093143B2 (en) * | 2019-07-12 | 2021-08-17 | Samsung Electronics Co., Ltd. | Methods and systems for managing key-value solid state drives (KV SSDS) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1290027C (zh) * | 2001-08-27 | 2006-12-13 | 皇家飞利浦电子股份有限公司 | 高速缓存方法 |
US7386686B2 (en) * | 2003-03-28 | 2008-06-10 | Intel Corporation | Inlining with stack trace cache-based dynamic profiling |
US8725951B2 (en) * | 2010-04-12 | 2014-05-13 | Sandisk Enterprise Ip Llc | Efficient flash memory-based object store |
US9612955B2 (en) * | 2013-01-09 | 2017-04-04 | Wisconsin Alumni Research Foundation | High-performance indexing for data-intensive systems |
-
2016
- 2016-02-23 JP JP2016031993A patent/JP2017151609A/ja active Pending
- 2016-08-10 US US15/233,900 patent/US20170242792A1/en not_active Abandoned
- 2016-08-19 CN CN201610693550.5A patent/CN107102956A/zh not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20170242792A1 (en) | 2017-08-24 |
CN107102956A (zh) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9280472B1 (en) | Caching data in a high performance zone of a data storage system | |
US10176212B1 (en) | Top level tier management | |
US8756382B1 (en) | Method for file based shingled data storage utilizing multiple media types | |
US8291185B2 (en) | Data storing location managing method and data storage system | |
US20100293337A1 (en) | Systems and methods of tiered caching | |
US9923562B1 (en) | Data storage device state detection on power loss | |
US20190243679A1 (en) | Information processing device system capable of preventing loss of user data | |
US9703699B2 (en) | Hybrid-HDD policy for what host-R/W data goes into NAND | |
US9804786B2 (en) | Sector translation layer for hard disk drives | |
US20120246388A1 (en) | Memory system, nonvolatile storage device, control method, and medium | |
US10152236B2 (en) | Hybrid data storage device with partitioned local memory | |
JP2014160450A (ja) | データストレージデバイスおよび書き込み方法 | |
WO2017148242A1 (zh) | 一种访问叠瓦式磁记录smr硬盘的方法及服务器 | |
US20130036256A1 (en) | Method and apparatus of sanitizing storage device | |
JP2015082240A (ja) | ストレージ装置、キャッシュコントローラ、及び不揮発性記憶媒体にデータを書き込む方法 | |
US20140258591A1 (en) | Data storage and retrieval in a hybrid drive | |
JP2015135603A (ja) | ストレージ装置及びデータを書き込む記憶領域を選択する方法 | |
CN104133640B (zh) | 从休眠快速恢复 | |
US11275684B1 (en) | Media read cache | |
JP2017151609A (ja) | ストレージ、ストレージシステム | |
US10459658B2 (en) | Hybrid data storage device with embedded command queuing | |
US9588898B1 (en) | Fullness control for media-based cache operating in a steady state | |
JP2012521032A (ja) | Ssdコントローラおよびssdコントローラの動作方法 | |
US20110264848A1 (en) | Data recording device | |
JP5594647B2 (ja) | ストレージ装置及びその制御方法 |