JP2017167740A - ストレージ、ストレージシステム - Google Patents
ストレージ、ストレージシステム Download PDFInfo
- Publication number
- JP2017167740A JP2017167740A JP2016051307A JP2016051307A JP2017167740A JP 2017167740 A JP2017167740 A JP 2017167740A JP 2016051307 A JP2016051307 A JP 2016051307A JP 2016051307 A JP2016051307 A JP 2016051307A JP 2017167740 A JP2017167740 A JP 2017167740A
- Authority
- JP
- Japan
- Prior art keywords
- write
- extended
- command
- storage
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
【課題】ライト効率を向上できるストレージ、ストレージシステムを提供する。
【解決手段】実施形態によれば、ストレージ1Aは、外部から指定されるキーとキーに対応づけられたバリューとを記憶する記憶媒体10と、記憶媒体にキーとライトデータであるバリューとをライトするコントローラ130と、を具備する。コントローラ130は、ライトコマンドを受信するコマンド受信部51と、第1パラメータP1を含む第1拡張ライトコマンドW1を受信する第1拡張コマンド受信部111とを備え、第1パラメータP1は、ライトコマンドに基づくライトデータへの第1アクセス単位よりも第1拡張ライトコマンドに基づく第1ライトデータへの第2アクセス単位の方が大きく、前記第2アクセス単位が複数の前記第1アクセス単位により構成される1単位であることを示す。
【選択図】図1
【解決手段】実施形態によれば、ストレージ1Aは、外部から指定されるキーとキーに対応づけられたバリューとを記憶する記憶媒体10と、記憶媒体にキーとライトデータであるバリューとをライトするコントローラ130と、を具備する。コントローラ130は、ライトコマンドを受信するコマンド受信部51と、第1パラメータP1を含む第1拡張ライトコマンドW1を受信する第1拡張コマンド受信部111とを備え、第1パラメータP1は、ライトコマンドに基づくライトデータへの第1アクセス単位よりも第1拡張ライトコマンドに基づく第1ライトデータへの第2アクセス単位の方が大きく、前記第2アクセス単位が複数の前記第1アクセス単位により構成される1単位であることを示す。
【選択図】図1
Description
本実施形態は、概して、ストレージ、ストレージシステムに関する。
近年、キーと当該キーに対応づけられたバリューとを記憶媒体に記憶したストレージおよび当該ストレージを備えるストレージシステムが知られている。
ライト効率を向上できるストレージ、ストレージシステムを提供する。
本実施形態によれば、ストレージは、外部から指定されるキーと前記キーに対応づけられたバリューとを記憶する記憶媒体と、前記記憶媒体に、前記キーとライトデータである前記バリューとをライトするコントローラと、を具備し、前記コントローラは、ライトコマンドを受信するコマンド受信部と、第1パラメータを含む第1拡張ライトコマンドを受信する第1拡張コマンド受信部とを備え、前記第1パラメータは、前記ライトコマンドに基づくライトデータへの第1アクセス単位よりも前記第1拡張ライトコマンドに基づく第1ライトデータへの第2アクセス単位の方が大きく、前記第2アクセス単位が複数の前記第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に示すように、バリューVは、クライアント300からライト要求またはリード要求される情報である。一例として、バリューVは、クライアント300から送信された動画データ、画像データ、およびテキストデータ等のユーザデータである。
図2に示すように、キーKは、バリューV以外の情報であって、キーKと対応するバリューVに関連して意味付けられた情報である。一例として、キーKは、ID情報、構成ブロック数、組織名、ファイル名、ファイル形式等を含む。ID情報は、対応づけられたバリューVを識別する固有の識別情報であって、例えば2150333等である。構成ブロック数は、バリューVを構成するブロックの数を示す情報である。組織名は、例えば、HDD1等である。ファイル名は、例えば、File_A等である。なお、これらのキーKを構成する情報(構成情報)は、上記のものに限定されない。例えば、キーKを構成する構成情報は、バリューVのサイズ、タイトル、および注釈等のその他のバリューVの属性データを含んでもよい。
上記説明したようなストレージシステム(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は、ストレージI/Fを介して各ストレージ100を制御し、ストレージシステム1Aの全体の動作(例えば、リード、ライト等)を制御するCPU(Central Processing Unit)210を備える。CUP210は、ライトコマンド、リードコマンド等の所定のコマンドを生成するコマンド生成部201と、KV管理部220と、API230とを備える。
コマンド生成部201は、拡張ライトコマンド(第1拡張ライトコマンド)W1を生成(発行)する第1拡張ライトコマンド生成部(第1発行部)211を備える。拡張ライトコマンドW1は、ストレージI/Fにより定義されるライトコマンドが拡張されたコマンドであって、少なくとも第1パラメータ(情報、指示)P1を含む。拡張ライトコマンドW1の詳細については、後述する。
KV管理部220は、クライアント300からの指令を処理する。具体的には、KV管理部220は、クライアント300から受信した一対のキーおよびバリュー(K,V)に基づき、SSD1にキーKを記憶させ、HDD1またはHDD2にバリューVおよび当該バリューVの位置を示すLBA(Logical Block Address)を記憶させる。そのため、KV管理部220は、キーKとLBAとの対応関係を示す所定のテーブル等を用いてもよい。
第1実施形態では、ストレージ100として、記憶媒体である磁気ディスク(以下、「ディスク」)10を備えるHDD1を一例に挙げて説明する。
HDD1は、後述するヘッドディスクアセンブリ(head-disk assembly:HDA)と、ドライバIC20と、ヘッドアンプ集積回路(以下、「ヘッドアンプIC」)30と、揮発性メモリ70と、不揮発性メモリ80と、バッファメモリ(キャッシュメモリ)90と、1チップの集積回路からなるシステムコントローラ130とを備える。HDD1は、ホスト200と、デバイスI/FであるSATA I/Fを介して接続される。HDD1は、ホスト200から転送されたライトデータをディスク10にライトし、ディスク10からリードしたデータをホスト200に転送する。
HDD1は、後述するヘッドディスクアセンブリ(head-disk assembly:HDA)と、ドライバIC20と、ヘッドアンプ集積回路(以下、「ヘッドアンプIC」)30と、揮発性メモリ70と、不揮発性メモリ80と、バッファメモリ(キャッシュメモリ)90と、1チップの集積回路からなるシステムコントローラ130とを備える。HDD1は、ホスト200と、デバイスI/FであるSATA I/Fを介して接続される。HDD1は、ホスト200から転送されたライトデータをディスク10にライトし、ディスク10からリードしたデータをホスト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は、例えば、SDRAM(Synchronous Dynamic Random Access Memory)である。
不揮発性メモリ80は、電力供給が断たれても保存しているデータを保持する半導体メモリである。不揮発性メモリ80は、例えば、フラッシュROM(Flash Read Only Memory : FROM)である。
バッファメモリ90は、ディスク10とホスト200との間で送受信されるデータ等を一時的に保持する半導体メモリである。なお、バッファメモリ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との間で送受信されるデータ等を一時的に保持する半導体メモリである。なお、バッファメモリ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は、拡張ライトコマンド認識部(拡張コマンド受信部)111を有するコマンド認識部(コマンド受信部)51を備える。コマンド認識部51は、ライトコマンドおよびリードコマンド等の拡張されていないコマンドを認識(受信)する。拡張ライトコマンド認識部111は、拡張ライトコマンドW1を認識(受信)する。認識(受信)結果に基づき、MPU60は、後述するようにライトデータをディスク10にライトする。
HDC50は、MPU60からの指示に応じて、ホスト200とR/Wチャネル40との間のデータ転送を制御する。HDC50は、拡張ライトコマンド認識部(拡張コマンド受信部)111を有するコマンド認識部(コマンド受信部)51を備える。コマンド認識部51は、ライトコマンドおよびリードコマンド等の拡張されていないコマンドを認識(受信)する。拡張ライトコマンド認識部111は、拡張ライトコマンドW1を認識(受信)する。認識(受信)結果に基づき、MPU60は、後述するようにライトデータをディスク10にライトする。
MPU60は、HDD1の各部を制御し、全体(ここでの「全体」とは、ホスト200を除き、MPU60が制御するストレージ(HDD1)100の全体をいう。)の動作を制御するメインコントローラである。MPU60は、例えば、ドライバIC20を介してVCM14を制御し、ヘッド15の位置決めを行うサーボ制御を実行する。
なお、HDD2の構成は、HDD1と同様である。また、ホスト200やHDD1の構成は、上述したものに限られない。例えば、KV管理テーブル240やテーブルT1のように、テーブル形式に限定されず、所定の関数や数式、および所定のマッピング形式等であってもよい。これらが配置される場所も限定されない。
また、SSD1は、記憶媒体としてNAND型フラッシュメモリやNOR型フラッシュメモリ等のフラッシュメモリを備える。フラッシュメモリは、ワード線とビット線との交際位置に複数のメモリセルが配置されたメモリセルアレイを備える。各メモリセルは、制御ゲートと浮遊ゲートを備える。各メモリセルは、ワード線に接続される制御ゲートの電圧制御に従い、浮遊ゲートに電子が注入されることで、データを不揮発に記憶する。その他の構成の詳細な説明については、省略する。
1−2.拡張ライトコマンドW1
図3は、拡張ライトコマンドW1を示す図である。ここでは、拡張ライトコマンドW1は、SATA I/Fのライトコマンドの拡張例として示す。具体的には、拡張ライトコマンドW1は、SATA I/Fのコマンド発行に使用するRHD(Register Host to Device)のFIS(Frame Instruction Structure)として示される。拡張ライトコマンドW1は、現在使用されていない未使用領域(Dword4, Bit7:0)に、第1パラメータP1が追加される。
図3は、拡張ライトコマンドW1を示す図である。ここでは、拡張ライトコマンドW1は、SATA I/Fのライトコマンドの拡張例として示す。具体的には、拡張ライトコマンドW1は、SATA I/Fのコマンド発行に使用するRHD(Register Host to Device)のFIS(Frame Instruction Structure)として示される。拡張ライトコマンドW1は、現在使用されていない未使用領域(Dword4, Bit7:0)に、第1パラメータP1が追加される。
図3では、SATA(SerialATA)で定義されているRegister Host to Device FISの構成と、この構成に添った形での拡張ライトコマンドW1の実装方法とが示されている。各フィールドのうち、(Dword4, bit31:0)として定義されているAuxiliary(31:0)フィールドは、この例では未使用領域である。
ここで、拡張ライトコマンドW1は、未使用領域であるAuxiliary(Dword4, Bit7:0)に埋め込まれた第1乃至第3パラメータP1からP3を有し、少なくとも第1パラメータP1は、有効な(または認識される)状態(ビット“1”状態)で埋め込まれる。
図4に示すように、未使用領域であるAuxiliary(Dword4, Bit7:0)に埋め込まれた各パラメータのビット状態は、次の通りである。
Auxiliary(Dword4, Bit7)に埋め込まれる第2パラメータP2は、ビット“0”である。Auxiliary(Dword4, Bit6)に埋め込まれる第1パラメータP1は、ビット“1”である。Auxiliary(Dword4, Bit5:0)に埋め込まれる第3パラメータP1は、ビット“000000”である。そのため、拡張ライトコマンドW1の各パラメータの説明は、図5に示す通りである。
Auxiliary(Dword4, Bit7)に埋め込まれる第2パラメータP2は、ビット“0”である。Auxiliary(Dword4, Bit6)に埋め込まれる第1パラメータP1は、ビット“1”である。Auxiliary(Dword4, Bit5:0)に埋め込まれる第3パラメータP1は、ビット“000000”である。そのため、拡張ライトコマンドW1の各パラメータの説明は、図5に示す通りである。
図5に示すように、第1パラメータP1は、ビット“1”である。そのため、この拡張ライトコマンドW1でライトするライトデータWD1は、1単位を形成し、必ず転送されるブロックの先頭から最後まで連続してアクセスされる。換言すれば、第1パラメータP1は、コマンド認識部51で認識されるライトコマンドに基づくライトデータへの第1アクセス単位(セクタ単位/ブロック単位)よりも拡張ライトコマンドW1によるライトデータWD1への第2アクセス単位(後述するUWD1等)の方が大きく、第2アクセス単位が複数の第1アクセス単位により構成された1つのアクセス単位であることを示す。そのため、形成した1単位である第2アクセス単位の途中からアクセス(リード/ライト)されることはない。
第2パラメータP2は、ビット“0”である。そのため、本実施形態では、第2パラメータP2は、未使用である(有効ではない)。換言すれば、この拡張ライトコマンドW1の後に続くライトデータはないことを示す。
第3パラメータP3は、ビット“000000”である。そのため、本実施形態では、第3パラメータP3は、未使用である(有効ではない)。換言すれば、この拡張ライトコマンドW1のTAG番号(NCQ(Native Command Queuing)の場合)は示されないことを示す。第2,第3パラメータP2,P3の詳細については、第2実施形態で詳細に説明する。
第3パラメータP3は、ビット“000000”である。そのため、本実施形態では、第3パラメータP3は、未使用である(有効ではない)。換言すれば、この拡張ライトコマンドW1のTAG番号(NCQ(Native Command Queuing)の場合)は示されないことを示す。第2,第3パラメータP2,P3の詳細については、第2実施形態で詳細に説明する。
なお、ここでは、ホスト200が、第1パラメータP1を用いて「この拡張ライトコマンドW1でライトするライトデータWD1は、1単位を形成し、必ず転送されるブロックの先頭から最後まで連続してアクセスされる」ことを、ストレージ100に通知する場合を一例に挙げて説明する。しかし、当該内容を通知する方法や手段は、第1実施形態で示したもの限定されるものではなく、他の方法や手段でもよい。例えば、新たな機能として定義し、既存コマンド(ライトコマンド等)とは別のコマンドコードを割り当て、ストレージ100に通知してもよい。
また、ストレージ100のストレージI/Fは、SATA I/Fに限定されない。例えば、SAS I/Fについても同様の情報を追加して、イニシエータ(ホスト)からターゲット(ストレージ)に対して「必ず先頭から連続したデータとしてアクセスされる」等を通知する手段を設けることも可能である。この際、当該指示内容を既存のコマンドの未使用領域や予約領域に追加してもよいし、新たなコマンド定義してもよい。SAS I/FのコマンドはCDB(command descriptor block)の形式で規定され、CDBのバイト数はある程度増やすことが可能である。そのため、SATA I/Fに比べ、SAS I/Fの方が、追加方法および追加手段の点で柔軟に対応可能である。
[2.動作]
2−1.ライト(予約通知)処理
図6および図7を用い、ストレージシステム1Aのライト(予約通知)処理について説明する。ここでは、ホスト200が、クライアント300から1単位のデータであるバリューV1(ライトデータWD1(転送ブロック数:1〜n))のライト要求を受けた場合を一例に挙げる。
2−1.ライト(予約通知)処理
図6および図7を用い、ストレージシステム1Aのライト(予約通知)処理について説明する。ここでは、ホスト200が、クライアント300から1単位のデータであるバリューV1(ライトデータWD1(転送ブロック数:1〜n))のライト要求を受けた場合を一例に挙げる。
図6のステップS11において、ホスト200の拡張ライトコマンドW1生成部211は、第1パラメータP1が埋め込まれた拡張ライトコマンドW1を生成(発行)し、生成した拡張ライトコマンドW1をストレージ100であるHDD1に通知する。上記の通り、第1パラメータP1は、「拡張ライトコマンドW1でライトするライトデータWD1は、1単位を形成し、転送ブロックの先頭から最後まで連続してアクセスされること」を示すパラメータである。例えば、図7の時刻t1において、ホストが送信するRegHDの内容(転送ブロック数n等)に、第1パラメータP1を追加して送信する。
ステップS12において、ストレージ100の拡張ライトコマンドW1認識部111は、通知された拡張ライトコマンドW1の記述内容を認識する。
ステップS13において、ホスト200のKV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1を、ストレージ100に送信する。例えば、図7の時刻t2において、KV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1(転送ブロック数:1〜n)を、HDD1に送信する。
ステップS13において、ホスト200のKV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1を、ストレージ100に送信する。例えば、図7の時刻t2において、KV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1(転送ブロック数:1〜n)を、HDD1に送信する。
ステップS14において、ストレージ100のMPU60は、認識した第1パラメータP1に基づき、ライトデータWD1の先頭ブロック1から最終ブロックnまでを連続した1単位として、ディスク10にライトする。例えば、図7の時刻t3からt4において、HDD1のMPU60は、第1パラメータP1に基づき、ライトデータWD1を、先頭ブロック1から最終ブロックnまで連続した1単位UWD1として、ディスク10にライトする。この際、MPU60は、HDD1において都合のよい書き方でライトデータWD1をディスク10にライトする。そのため、ホストインターフェースのセクタ/ブロックの区切りを無視することができる。具体的には、MPU60は、ライトデータWD1の先頭ブロック1から最終ブロックnまでを、サーボ領域SVを除いて、3つの小単位UWD1a〜UWD1cから構成される連続した1単位UWD1として、ディスク10にライトすることができる。
このように、第1実施形態に係る拡張プロトコルの使用の可否については、IDENTIFY DEVICEコマンドによって「事前通知が可能な拡張ライトコマンドW1に対応している」という内容を(IDENTIFY DEVICEコマンドで交換する情報の一つとして)提示する。ホスト200およびデバイス100の双方が対応している場合に、追加情報(第1乃至第3パラメータP1〜P3)を取り扱う。
なお、その他のストレージ100であるHDD2やSSD1等のライト処理ついても、上記HDD1と実質的に同様である。そのため、その詳細な説明を省略する。
[3.作用効果]
以上説明したように、第1実施形態に係るストレージシステム1Aの構成および動作によれば、少なくとも下記(1)および(2)の効果が得られる。
[3.作用効果]
以上説明したように、第1実施形態に係るストレージシステム1Aの構成および動作によれば、少なくとも下記(1)および(2)の効果が得られる。
(1)余剰領域が不要になることで実質的なライト容量を増大でき、ライト効率を向上できる。
拡張ライトコマンドW1生成部211は、少なくとも第1パラメータP1が埋め込まれた拡張ライトコマンドW1を生成し、生成した拡張ライトコマンドW1をストレージ100であるHDD1に通知する(図6のS11、図7の時刻t1)。拡張ライトコマンドW1認識部111は、通知された拡張ライトコマンドW1の記述内容を認識する(図6のS12)。
拡張ライトコマンドW1生成部211は、少なくとも第1パラメータP1が埋め込まれた拡張ライトコマンドW1を生成し、生成した拡張ライトコマンドW1をストレージ100であるHDD1に通知する(図6のS11、図7の時刻t1)。拡張ライトコマンドW1認識部111は、通知された拡張ライトコマンドW1の記述内容を認識する(図6のS12)。
KV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1を、ストレージ100に送信する(図6のS13、図7の時刻t2)。MPU60は、認識した第1パラメータP1に基づき、ライトデータWD1の先頭ブロック1から最終ブロックnまでを連続した1単位として、ディスク10にライトする(図6のS14、図7の時刻t3〜t4)。
そのため、MPU60は、ライトデータWD1の先頭ブロック1から最終ブロックnまでを、サーボ領域SVを除いて、3つの小単位UWD1a〜UWD1cから構成される連続した1単位UWD1として、ディスク10にライトすることができる。
図8を用いて、上記についてより具体的に説明する。
図8を用いて、上記についてより具体的に説明する。
図8(b)に示すように、SATA I/FやSAS I/Fや等の「ブロックアクセス型インターフェース規格」では、データのアクセスサイズを示す単位としてセクタやブロックが用いられる。例えば、SATA I/Fにおけるブロックサイズは、4KBである。そのため、ストレージ100は、セクタ/ブロックを1単位として、任意のセクタ/ブロックに対してアクセス(ライト/リード)を行う必要がある。
一方、図8(a)に示すように、ライトしたいデータを扱うホスト200のアプリケーションは、上記で記述したセクタ/ブロックのサイズよりも大きなサイズのデータ(バリュー)V1を、データの1単位として、かつデータV1について必ず先頭HADDから最後FADDまで連続してアクセスを行うことが明らかである、という場合がある。
そこで、図8(c)に示すように、このような場合、ストレージ100のディスク10に、セクタ/ブロックのサイズよりも大きなサイズを記録単位とすること(Long sector)ができれば、ディスク10上の無駄な余剰領域RAをなくし、データをライトできる。
しかしながら、図8(d1)に示す比較例の場合、既存インターフェース規格の「任意のセクタ/ブロックに対してリードアクセスおよびライトアクセスを行う必要がある」という制限がある。この制限のため、セクタ/ブロックよりも大きなサイズを1単位としたライトが行えない状況がある。具体的には、比較例の場合、4KB単位でのリード/ライトに対応するため、プリアンブル等のための斜線で示す余剰領域RAが4KBごとに必要となる。そのため、ディスク10に64KBより多くの記録領域が必要となる。さらに、新たなインターフェース規格において、上記状況を考慮した規格は存在するが、まだ一般に普及している状況ではない。
図8(d2)に示す第1実施形態の場合、上記状況に鑑み、セクタ/ブロックのサイズより大きなサイズであるライトデータWD1をライトすることが可能であり、かつライト効率を向上することができる。例えば、第1実施形態の場合、上記4KBごとの余剰領域が不要となる。そのため、ディスク10に必要なサイズを実質的に64KB程度とでき、ホストアプリケーションが必要なデータV1のサイズと同程度とすることができる。比較例と比べ、第1実施形態は、斜線で示す記憶領域10Aを削減することができる。換言すると、第1実施形態は、上記4KBごとの余剰領域が不要となるため、ディスク10の実質的な記憶容量を増大することができる。
このように、第1実施形態によれば、“連続した1単位のデータV1について、その途中の一部分へのアクセスが行われる事は無い”という事が前提として保証される。そのため、各ストレージ100の記憶媒体(ディスク10やフラッシュメモリ)ごとに異なる効率的なライトサイズ/ライト方法を選択し、データをライトできる。
(2)ライト速度およびリード速度を向上でき、応答速度を向上できる。
上述の通り、第1実施形態に係るストレージシステム1Aは、上記4KBごとの余剰領域が不要となるため、ライト速度を向上できる。さらに、データWD1をリードする際にも、ホスト200は、データWD1を1単位(1UWD1)として、リードすることができる。そのため、リード速度をも向上することができる。
上述の通り、第1実施形態に係るストレージシステム1Aは、上記4KBごとの余剰領域が不要となるため、ライト速度を向上できる。さらに、データWD1をリードする際にも、ホスト200は、データWD1を1単位(1UWD1)として、リードすることができる。そのため、リード速度をも向上することができる。
このように、第1実施形態に係るストレージシステム1Aは、システム全体の応答速度の向上やデータ転送速度を高速化できる。そのため、第1実施形態によれば、ストレージ100の記録再生速度を向上できる点でも有利である。
(第2実施形態)
第2実施形態に係るストレージシステム1Bについて説明する。この説明において、上記第1実施形態と重複する部分の詳細な説明を省略する。
(第2実施形態)
第2実施形態に係るストレージシステム1Bについて説明する。この説明において、上記第1実施形態と重複する部分の詳細な説明を省略する。
[構成]
ストレージシステム
図9に示すように、第2実施形態に係るストレージシステム1Bは、ホスト200のコマンド生成部201が拡張ライトコマンドW2生成部212を更に備え、ストレージ100のコマンド認識部51が拡張ライトコマンドW2認識部112を更に備える点で、第1実施形態と相違する。
ストレージシステム
図9に示すように、第2実施形態に係るストレージシステム1Bは、ホスト200のコマンド生成部201が拡張ライトコマンドW2生成部212を更に備え、ストレージ100のコマンド認識部51が拡張ライトコマンドW2認識部112を更に備える点で、第1実施形態と相違する。
拡張ライトコマンドW2生成部(第2発行部)212は、第1乃至第3パラメータP1〜P3が埋め込まれた拡張ライトコマンド(第2拡張ライトコマンド)WD2を生成(発行)し、生成した拡張ライトコマンドW2をストレージ100であるHDD1に通知する。
拡張ライトコマンドW2認識部112は、拡張ライトコマンドW2を認識する。認識結果に基づき、MPU60は、後述するようにライトデータをディスク10にライトする。
拡張ライトコマンドW2
図10は、拡張ライトコマンドW2を示す図である。ここでは、拡張ライトコマンドW2は、SATA I/Fでのコマンドの拡張例として示す。拡張ライトコマンドW2は、現在使用されていない未使用領域(Dword4, Bit7:0)に、第1乃至第3パラメータP1〜P3が追加される。未使用領域であるAuxiliary(Dword4, Bit7:0)に埋め込まれた第1乃至第3パラメータP1〜P3は、有効な(認識される)状態で埋め込まれる。
拡張ライトコマンドW2
図10は、拡張ライトコマンドW2を示す図である。ここでは、拡張ライトコマンドW2は、SATA I/Fでのコマンドの拡張例として示す。拡張ライトコマンドW2は、現在使用されていない未使用領域(Dword4, Bit7:0)に、第1乃至第3パラメータP1〜P3が追加される。未使用領域であるAuxiliary(Dword4, Bit7:0)に埋め込まれた第1乃至第3パラメータP1〜P3は、有効な(認識される)状態で埋め込まれる。
図11に示すように、未使用領域であるAuxiliary(Dword4, Bit7:0)に埋め込まれた各パラメータの状態は、次の通りである。
Auxiliary(Dword4, Bit7)に埋め込まれる第2パラメータP2は、ビット“1”である。Auxiliary(Dword4, Bit6)に埋め込まれる第1パラメータP1は、ビット“1”である。Auxiliary(Dword4, Bit5:0)に埋め込まれる第3パラメータP1は、ビット“011010”である。そのため、拡張ライトコマンドW2の各パラメータの説明は、図12に示す通りである。
Auxiliary(Dword4, Bit7)に埋め込まれる第2パラメータP2は、ビット“1”である。Auxiliary(Dword4, Bit6)に埋め込まれる第1パラメータP1は、ビット“1”である。Auxiliary(Dword4, Bit5:0)に埋め込まれる第3パラメータP1は、ビット“011010”である。そのため、拡張ライトコマンドW2の各パラメータの説明は、図12に示す通りである。
図12に示すように、第1パラメータP1は、ビット“1”である。そのため、この拡張ライトコマンドW2でライトするライトデータWD2は、1単位を形成し、必ず転送されるブロックの先頭から最後まで連続してアクセスされる。換言すれば、第1パラメータP1は、拡張ライトコマンドW2によりライトされたライトデータWD2は、形成した1単位の途中からアクセス(リード/ライト)されることはないことを示す。
第2パラメータP2は、ビット“1”である。そのため、第2パラメータP2は、この拡張ライトコマンドW2の後に続いて通知される拡張ライトコマンドW1のライトデータWD1についても、ライトデータWD2と連続してアクセスされることを示す。
第3パラメータP3は、ビット“011010”である。そのため、第3パラメータP3は、この拡張ライトコマンドW2の後に続いて通知される拡張ライトコマンドW1のTAG番号(NCQコマンドの場合)を示す。なお、第3パラメータP3は、アクセスした情報を特定するための情報であるTAG番号に限られない。第3パラメータは、後続する拡張ライトコマンドを識別するID情報やその他の認識情報等であればよい。
第3パラメータP3は、ビット“011010”である。そのため、第3パラメータP3は、この拡張ライトコマンドW2の後に続いて通知される拡張ライトコマンドW1のTAG番号(NCQコマンドの場合)を示す。なお、第3パラメータP3は、アクセスした情報を特定するための情報であるTAG番号に限られない。第3パラメータは、後続する拡張ライトコマンドを識別するID情報やその他の認識情報等であればよい。
その他の構成については、第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[動作]
ライト(予約通知)処理
図13および図14を用い、ストレージシステム1Bのライト(予約通知)処理について説明する。ここでは、ホスト200が、クライアント300から1単位のデータであるバリューV2(ライトデータWD2およびWD1(転送ブロック数:1〜mおよび1〜n))のライト要求を受けた場合を一例に挙げる。
[動作]
ライト(予約通知)処理
図13および図14を用い、ストレージシステム1Bのライト(予約通知)処理について説明する。ここでは、ホスト200が、クライアント300から1単位のデータであるバリューV2(ライトデータWD2およびWD1(転送ブロック数:1〜mおよび1〜n))のライト要求を受けた場合を一例に挙げる。
図13のステップS21において、ホスト200の拡張ライトコマンドW2生成部212は、第1乃至第3パラメータP1〜P3が埋め込まれた拡張ライトコマンドW2を生成し、生成した拡張ライトコマンドW2をストレージ100であるHDD1に通知する。第1乃至第3パラメータP1〜P3の機能は、上記の通りである。例えば、図14の時刻t1において、ホストが送信するRegHDの内容(転送ブロック数n等)に、第1乃至第3パラメータP1〜P3を追加して送信する。
ステップS22において、ストレージ100の拡張ライトコマンドW2認識部112は、通知された拡張ライトコマンドW2の記述内容を認識する。
ステップS23において、ホスト200のKV管理部220は、拡張ライトコマンドW2に基づくライトデータWD2を、ストレージ100に送信する。例えば、図14の時刻t2において、KV管理部220は、拡張ライトコマンドW2に基づくライトデータWD2(転送ブロック数:1〜m)を、HDD1に送信する。
ステップS23において、ホスト200のKV管理部220は、拡張ライトコマンドW2に基づくライトデータWD2を、ストレージ100に送信する。例えば、図14の時刻t2において、KV管理部220は、拡張ライトコマンドW2に基づくライトデータWD2(転送ブロック数:1〜m)を、HDD1に送信する。
ステップS24において、ストレージ100のMPU60は、認識した第1パラメータP1に基づき、ライトデータWD2の先頭ブロック1から最終ブロックmまでを連続した1単位として、ディスク10にライトする。例えば、図14の時刻t3からt4において、HDD1のMPU60は、第1パラメータP1に基づき、ライトデータWD2を、先頭ブロック1から連続した1単位として、ディスク10にライトする。この際、MPU60は、HDD1において都合のよい書き方でライトデータWD2をディスク10にライトする。そのため、ホストインターフェースのセクタ/ブロックの区切りを無視することができる。具体的には、MPU60は、ライトデータWD2の先頭ブロック1から途中ブロックkまでを、サーボ領域SVを除いて、2つの小単位UWD2a〜UWD2bで構成される連続した1単位として、ディスク10にライトすることができる。
ステップS25において、ストレージ100のMPU60は、ディスク10の記憶状態に基づき、ライトデータWD2の最後部分(ブロックk+1〜m)とライトデータWD1の先頭部分(ブロック1〜2)とをディスク10に連続してライトできるか否かを判定する。換言すれば、MPU60は、ライトデータWD2の最後部分(ブロックk+1〜m)が、ディスク10の記憶領域でのセクタ/ブロックの区切りのよい位置であるか否かを判定する。ステップS25の条件を満たす場合(セクタ/ブロックの区切りのよい位置であった場合)、処理はステップS27に続く。
ステップS25の条件を満たさない場合(セクタ/ブロックの区切りのよい位置でなかった場合)、ステップS26において、HDC50は、ライトデータWD2の最後部分(ブロックk+1〜m)を一時記憶領域であるバッファメモリ90等に一時的に記憶させる。これは、続いて通知される拡張ライトコマンドW1の準備のためである。例えば、図14の時刻t5において、HDC50は、ライトデータWD2の最後部分(ブロックk+1〜m)を一時記憶領域に記憶させ、記憶したライトデータWD2の最後部分(ブロックk+1〜m)のライトを一時保留とする。
ステップS27において、拡張ライトコマンドW1生成部211は、第1パラメータP1が埋め込まれた拡張ライトコマンドW1を生成し、生成した拡張ライトコマンドW1をHDD1に通知する。例えば、図14の時刻t6において、ホストが送信するRegHDの内容(転送ブロック数n等)に、第1パラメータP1を追加して送信する。
ステップS28において、拡張ライトコマンドW1認識部111は、通知された拡張ライトコマンドW1の記述内容を認識する。
ステップS29において、ホスト200のKV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1を、ストレージ100に送信する。例えば、図14の時刻t7において、KV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1(転送ブロック数:1〜n)を、HDD1に送信する。
ステップS29において、ホスト200のKV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1を、ストレージ100に送信する。例えば、図14の時刻t7において、KV管理部220は、拡張ライトコマンドW1に基づくライトデータWD1(転送ブロック数:1〜n)を、HDD1に送信する。
ステップS30において、ストレージ100のMPU60は、送信されたライトデータが、(一時記憶領域に記憶した)ライトデータWD2の最後部分(ブロックk+1〜m)に連続するライトデータWD1であるか否かを判定する。具体的には、MPU60は、第3パラメータに基づくTAG番号と、通知された拡張ライトコマンドWD1のそれとが一致するか否かを判定する。ステップS30の条件を満たさない場合(S30でNo)、処理はステップS29に戻る。
ステップS30の条件を満たす場合(S30でYes)、ステップS31において、MPU60は、認識した第1,第2パラメータP1,P2に基づき、ライトデータWD2の最後部分(ブロックk+1〜m)と、ライトデータWD1の先頭ブロック1から最終ブロックnまでを連続させてディスク10にライトする。その結果、ライトデータWD2およびWD1(転送ブロック数:1〜mおよび1〜n)が連続した1単位としてディスク10にライトされる。例えば、図14の時刻t8からt9において、MPU60は、第1,第2パラメータP1,P2に基づき、ライトデータWD2の最後部分(ブロックk+1〜m)と、ライトデータWD1の先頭ブロック1から最終ブロックnまでを連続させてディスク10にライトする。この際、MPU60は、HDD1において都合のよい書き方でライトデータWD1,WD2をディスク10にライトする。その結果、MPU60は、ライトデータWD2,WD1のブロック1〜m,1〜nを、サーボ領域SVを除いて、5つの小単位UWD2a〜UWD2b,UWD1a〜UWD1cから構成される連続した1単位UWD21として、ディスク10にライトすることができる。
その他の動作については、第1実施形態と実質的に同様であるため、その詳細な説明を省略する。
[作用効果]
以上説明したように、第2実施形態に係るストレージシステム1Bの構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。さらに、第2実施形態に係るストレージシステム1Bによれば、下記(3)の効果が得られる。
[作用効果]
以上説明したように、第2実施形態に係るストレージシステム1Bの構成および動作によれば、少なくとも上記(1)および(2)の効果が得られる。さらに、第2実施形態に係るストレージシステム1Bによれば、下記(3)の効果が得られる。
(3)ストレージシステム1Bまたはアプリケーション(ソフトウェア)を含めたオペレーティングシステムからの視点での無駄な動作を削減でき、利便性を向上できる。
第2実施形態に係るストレージシステム1Bは、拡張ライトコマンドW2生成部212と、拡張ライトコマンドW2認識部112とを更に備える。
第2実施形態に係るストレージシステム1Bは、拡張ライトコマンドW2生成部212と、拡張ライトコマンドW2認識部112とを更に備える。
そのため、拡張ライトコマンドW2生成部212は、第1乃至第3パラメータP1〜P3が埋め込まれた拡張ライトコマンドW2を生成し、生成した拡張ライトコマンドW2をストレージ100であるHDD1に通知する(図13のS21、図14の時刻t1)。拡張ライトコマンドW2認識部112は、通知された拡張ライトコマンドW2の記述内容を認識する(図13のS22)。同様に、拡張ライトコマンドW1認識部111は、通知された拡張ライトコマンドW1の記述内容を認識し(図13のS28)、ライトデータWD2,WD1の先頭ブロック1から最終ブロックnまでを連続させてディスク10にライトする。その結果、ライトデータWD2およびWD1(転送ブロック数:1〜mおよび1〜n)が連続した1単位UWD21としてディスク10にライトされる(図14の時刻t8〜t9)。そのため、無駄な動作を削減でき、利便性を向上できる。
図15を用いて、上記についてより具体的に説明する。
図15(a)に示すように、ライトしたいデータを扱うホスト200のアプリケーションは、第1実施形態で説明したサイズよりも大きなサイズのデータ(バリュー)V2をデータの1単位として扱い、かつこのサイズのデータV2について必ず先頭HADDから最後FADDまで連続してアクセスを行いたい場合がある。例えば、日本のBSデジタル放送等の場合、データV2は、64KBよりもサイズが大きく、最大で1.5MB程度(1GOPのサイズ)となる。
図15(a)に示すように、ライトしたいデータを扱うホスト200のアプリケーションは、第1実施形態で説明したサイズよりも大きなサイズのデータ(バリュー)V2をデータの1単位として扱い、かつこのサイズのデータV2について必ず先頭HADDから最後FADDまで連続してアクセスを行いたい場合がある。例えば、日本のBSデジタル放送等の場合、データV2は、64KBよりもサイズが大きく、最大で1.5MB程度(1GOPのサイズ)となる。
しかしながら、図15(d1)に示す比較例の場合、同様に、既存インターフェース規格の制限があるため、大きなサイズを1単位としたデータ記録が行えない。比較例の場合、4KB単位でのリード/ライトに対応するため、斜線で示すプリアンブル等のための余剰領域RAが4KBごとに必要となる。
図15(d2)に示す第2実施形態の場合、連続した1単位UWD21として、ライトデータWD2およびWD1をライトすることが可能である。そのため、ホストアプリケーションが必要なデータV2のサイズを連続してディスク10にライトできる。比較例と比べ、第2実施形態は、斜線で示す記憶領域10Bを削減することができる(10B>10A)。
(第3実施形態)
第3実施形態に係るストレージシステム1について説明する。この説明において、上記第1,第2実施形態と重複する部分の詳細な説明を省略する。ここでは、ストレージシステム1の構成およびPUT(ライト)動作の概略について説明する。
第3実施形態に係るストレージシステム1について説明する。この説明において、上記第1,第2実施形態と重複する部分の詳細な説明を省略する。ここでは、ストレージシステム1の構成およびPUT(ライト)動作の概略について説明する。
[構成]
ストレージシステム
図16に示すように、ストレージシステム1は、IP等のネットワーク301を用い、外部のクライアント300からAPI230を介してアクセス可能であるように構成される。ストレージシステム1は、データVと、このデータVを識別するための識別情報であるキーKとをストレージ100に記憶する。このようなKV型ストレージシステム1では、任意のサイズの識別情報であるキーKと、当該キーKに対応づけられた任意のサイズのバリューVとが、ストレージ100に記憶される。上記構成によれば、クライアント300がキーKを指定すると、キーKに対応づけられたバリューVを、PUT(ライト)、GET(リード)、およびDELETE(イレーズ)することが可能となる。
ストレージシステム
図16に示すように、ストレージシステム1は、IP等のネットワーク301を用い、外部のクライアント300からAPI230を介してアクセス可能であるように構成される。ストレージシステム1は、データVと、このデータVを識別するための識別情報であるキーKとをストレージ100に記憶する。このようなKV型ストレージシステム1では、任意のサイズの識別情報であるキー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(ライト)処理
図17に示すように、PUT(ライト)処理を行う場合、クライアント300は、ホスト200に、キーKとバリューVとがペアとなったPUT要求であるPUT(K,V)を送信する。
[動作]
PUT(ライト)処理
図17に示すように、PUT(ライト)処理を行う場合、クライアント300は、ホスト200に、キーKとバリューVとがペアとなったPUT要求であるPUT(K,V)を送信する。
続いて、ホスト200のKV管理部220は、受信したPUT(K,V)に基づき、SSD1およびSSD2にキーKをライトし、HDD1およびHDD2にバリューVをライトする。このようにして、同一のキーKが記憶されたSSD1,SSD2、および同一のバリューVが記憶されたHDD1,HDD2は、所定のRAIDグループを形成してもよい。
続いて、KV管理部220は、キーKおよびバリューVとこれを記憶したストレージ(SSD1,SSD2,HDD1,HDD2)100との対応関係を記憶する。
続いて、KV管理部220は、PUT処理が完了した旨を、クライアント300に応答してもよい。
続いて、KV管理部220は、PUT処理が完了した旨を、クライアント300に応答してもよい。
上記処理により、ストレージ装置100に、PUT要求に係るペア(K,V)が記憶される。
GET(リード)処理
GET(リード)処理を行う場合、クライアント300は、GET要求として所望のバリューVに対応するキーKをストレージシステム1に送信する。キーKを受信したKV管理部220は、当該キーKに基づき、SSD1,SSD2に記憶されたキーKを検索し、キーK構造である例えばエントリ構造体等を得る。
GET(リード)処理
GET(リード)処理を行う場合、クライアント300は、GET要求として所望のバリューVに対応するキーKをストレージシステム1に送信する。キーKを受信したKV管理部220は、当該キーKに基づき、SSD1,SSD2に記憶されたキーKを検索し、キーK構造である例えばエントリ構造体等を得る。
続いて、KV管理部220は、エントリ構造体が示すHDD1,HDD2のポインタが示す位置に記憶されているバリューVを、ストレージ100であるHDD1,HDD2からリードする。
続いて、KV管理部220は、リードしたキーKとペアとなるバリューVをクライアント300送信し、クライアント300に応答する。なお、KV管理部220がSSD1,SSD2に記憶されているキーを検索してもヒットしなかった場合、KV管理部220は、クライアント300に対して、エラー応答またはペアとなるバリューVがなかった旨を応答してもよい。
続いて、KV管理部220は、リードしたキーKとペアとなるバリューVをクライアント300送信し、クライアント300に応答する。なお、KV管理部220がSSD1,SSD2に記憶されているキーを検索してもヒットしなかった場合、KV管理部220は、クライアント300に対して、エラー応答またはペアとなるバリューVがなかった旨を応答してもよい。
[作用効果]
以上説明したように、第3実施形態に係るストレージシステム1の構成および動作によれば、少なくとも上記(1)乃至(3)の効果が得られる。
さらに、上述したように第3実施形態に係るストレージシステム1は、SATA I/F等の既存のインターフェースを用いながらも、可変長のキーKを指定して可変長のバリューVのライトおよびリードを行うことができる。そのため、非構造化データを処理でき、ソフトウェア構成を簡略化することができる。
以上説明したように、第3実施形態に係るストレージシステム1の構成および動作によれば、少なくとも上記(1)乃至(3)の効果が得られる。
さらに、上述したように第3実施形態に係るストレージシステム1は、SATA I/F等の既存のインターフェースを用いながらも、可変長のキーKを指定して可変長のバリューVのライトおよびリードを行うことができる。そのため、非構造化データを処理でき、ソフトウェア構成を簡略化することができる。
ホスト(ブリッジ部)200のKV管理部220が、一括してストレージ100を管理する。そのため、大規模ストレージを構成しても、ストレージ100を管理するための管理サーバの数を削減または管理サーバの数を不要とすることができる。そのため、ストレージシステム1は、低TCO(Total Cost of Ownership)化および高性能化に有利である。
ストレージシステム1は、応答速度やデータ容量が異なるSSDやHDD等の複数の種類のストレージを一括して制御する。そのため、処理目的に合わせたストレージの選択が不要となる。
さらに、ストレージシステム1は、SSDのリード速度と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のリード速度と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)乃至(3)の効果に示したように、セクタ/ブロックの管理サイズにかかわらず、バリューV1,V2を1単位としてライトおよびリードできる。そのため、上記(1)乃至(3)の効果とKV型ストレージシステムとの相乗効果が期待される。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
300…ストレージアクセスクライアント、301…ネットワーク、200…ホスト(ブリッジ部)、201…コマンド生成部、210…CPU、211…第1拡張ライトコマンド生成部(第1発行部)、220…KV管理部、230…API、130…システムコントローラ、100…ストレージ、90…バッファメモリ、80…不揮発性メモリ、70…揮発性メモリ、60…MPU、50…HDC、51…コマンド認識部、40…R/Wチャネル、30…ヘッドアンプIC、20…ドライバIC、15…ヘッド、14…VCM、13…アーム、12…SPM、10…磁気ディスク、1,1A,1B…ストレージシステム。
Claims (9)
- 外部から指定されるキーと前記キーに対応づけられたバリューとを記憶する記憶媒体と、
前記記憶媒体に、前記キーとライトデータである前記バリューとをライトするコントローラと、を具備し、
前記コントローラは、ライトコマンドを受信するコマンド受信部と、
第1パラメータを含む第1拡張ライトコマンドを受信する第1拡張コマンド受信部とを備え、
前記第1パラメータは、前記ライトコマンドに基づくライトデータへの第1アクセス単位よりも前記第1拡張ライトコマンドに基づく第1ライトデータへの第2アクセス単位の方が大きく、前記第2アクセス単位が複数の前記第1アクセス単位により構成された1単位であることを示し、
前記コントローラは、前記第1拡張コマンド受信部で前記外部から送信された前記第1拡張ライトコマンドを受信すると、前記第1パラメータに基づき前記第1ライトデータを1単位として前記記憶媒体にライトする
ストレージ。 - 前記コントローラは、前記第1パラメータと第2および第3パラメータとを含む第2拡張ライトコマンドを受信する第2拡張コマンド受信部を更に備え、
前記第2パラメータは、前記第2拡張ライトコマンドの後に通知される前記第1拡張ライトコマンドに基づく第1ライトデータが、前記第2拡張ライトコマンドに基づく第2ライトデータと連続してアクセスされることを示し、
前記第3パラメータは、前記第2ライトデータと連続する前記第1ライトデータを他のデータと識別するための固有の識別情報である
請求項1に記載のストレージ。 - データを一時的に記憶するメモリを更に具備し、
前記コントローラは、前記第2ライトデータの一部を前記メモリに一時的に記憶させることで、ライトを一時的に停止する
請求項2に記載のストレージ。 - 前記コントローラは、前記第3パラメータに基づき、送信されたライトデータが前記第1拡張ライトコマンドに基づく前記第1ライトデータであるか否かを判定する
請求項2乃至3に記載のストレージ。 - 前記コントローラは、送信されたライトデータが前記第1拡張ライトコマンドに基づく前記第1ライトデータであると判定する場合、前記第1および第2ライトデータを1単位として前記記憶媒体にライトする
請求項4に記載のストレージ。 - キーと前記キーに対応づけられたバリューとを記憶する記憶媒体を備えるストレージと、
前記記憶媒体に前記キーとライトデータである前記バリューとをライトするように前記ストレージを管理するホストと、を具備し、
前記ストレージは、ライトコマンドを受信するコマンド受信部と、第1パラメータを含む第1拡張ライトコマンドを受信する第1拡張コマンド受信部とを備え、
前記ホストは、前記ライトコマンドを生成するコマンド生成部と、前記第1パラメータを含む前記第1拡張ライトコマンドを生成する第1拡張コマンド生成部とを備え、
前記第1パラメータは、前記ライトコマンドに基づくライトデータへの第1アクセス単位よりも前記第1拡張ライトコマンドに基づく第1ライトデータへの第2アクセス単位の方が大きく、前記第2アクセス単位が複数の前記第1アクセス単位で構成される1単位であることを示し、
前記ホストは、前記第1拡張コマンド生成部で生成した前記第1拡張コマンドを、前記ストレージに送信し、
前記ストレージは、前記第1拡張コマンド受信部で前記ホストから送信された前記第1拡張ライトコマンドを受信すると、前記第1パラメータに基づき前記第1ライトデータを1単位として前記記憶媒体にライトする
ストレージシステム。 - 前記ストレージは、前記記憶媒体である磁気ディスクを有するハードディスクドライブと、前記記憶媒体であるフラッシュメモリを有するソリッドステートドライブと、を備える
請求項6に記載のストレージシステム。 - 前記ホストは、外部からのライト要求に基づき、前記ソリッドステートドライブに前記外部から受信したキーをライトし、前記ハードディスクドライブに前記外部から受信した前記キーおよび前記キーに対応づけられたバリューをライトする
請求項7に記載のストレージシステム。 - 前記ストレージは、前記記憶媒体である磁気ディスクをそれぞれ有する複数のハードディスクドライブと、前記記憶媒体であるフラッシュメモリをそれぞれ有する複数のソリッドステートドライブと、を更に備え、
前記ホストは、前記外部からのライト要求に基づき、前記複数のソリッドステートドライブに前記外部から受信したキーをライトし、前記複数のハードディスクドライブに前記外部から受信した前記キーおよび前記キーに対応づけられたバリューをライトし、RAIDグループを形成する
請求項7または8に記載のストレージシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016051307A JP2017167740A (ja) | 2016-03-15 | 2016-03-15 | ストレージ、ストレージシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016051307A JP2017167740A (ja) | 2016-03-15 | 2016-03-15 | ストレージ、ストレージシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017167740A true JP2017167740A (ja) | 2017-09-21 |
Family
ID=59913767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016051307A Pending JP2017167740A (ja) | 2016-03-15 | 2016-03-15 | ストレージ、ストレージシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017167740A (ja) |
-
2016
- 2016-03-15 JP JP2016051307A patent/JP2017167740A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100675010B1 (ko) | 하이브리드 하드디스크 드라이브의 캐시 제어 방법, 이에적합한 기록 매체 그리고 이에 적합한 장치 | |
US9921774B2 (en) | Data storage management in a memory device | |
US9703699B2 (en) | Hybrid-HDD policy for what host-R/W data goes into NAND | |
JP4283288B2 (ja) | ディスク・ドライブにおけるosd決定論的オブジェクト・フラグメンテーション最適化の方法および装置 | |
US7853761B2 (en) | Classifying write commands into groups based on cumulated flush time | |
JP5891027B2 (ja) | 記憶装置をサニタイズする方法及び装置 | |
US9804786B2 (en) | Sector translation layer for hard disk drives | |
KR20210096133A (ko) | 구역화된 네임스페이스들에서의 기록 커맨드들의 유지 | |
US10802739B1 (en) | Data storage device configuration for accessing data in physical realms | |
US20100079904A1 (en) | Storage control method, storage control unit and storage apparatus | |
WO2017148242A1 (zh) | 一种访问叠瓦式磁记录smr硬盘的方法及服务器 | |
US10152236B2 (en) | Hybrid data storage device with partitioned local memory | |
JP2012517645A (ja) | 半導体ディスクシステムのバッファキャッシュプログラミング方法およびバッファキャッシュプログラミング装置 | |
KR20100030992A (ko) | 특정 조건을 갖는 파일을 신속하게 판독할 수 있는 하이브리드 하드디스크 드라이브, 이에 적합한 제어 방법 및 이에 적합한 기록 매체 | |
US7913029B2 (en) | Information recording apparatus and control method thereof | |
CN107515827A (zh) | Pcie ssd自定义日志的存储方法、装置及ssd | |
US9875030B2 (en) | Media write operation | |
US20150113208A1 (en) | Storage apparatus, cache controller, and method for writing data to nonvolatile storage medium | |
KR101515621B1 (ko) | 반도체 디스크 장치 및 그것의 랜덤 데이터 처리 방법 | |
JP2014170523A (ja) | データ記憶装置における読み出し期間中にデータをフェッチするためのシステムおよび方法 | |
KR20070060301A (ko) | 불휘발성 메모리를 쓰기 캐시로 구비한 하드 디스크드라이버 | |
US9588898B1 (en) | Fullness control for media-based cache operating in a steady state | |
US20110022774A1 (en) | Cache memory control method, and information storage device comprising cache memory | |
JP2012521032A (ja) | Ssdコントローラおよびssdコントローラの動作方法 | |
US10459658B2 (en) | Hybrid data storage device with embedded command queuing |