JPWO2015141219A1 - ストレージシステム、制御装置、データアクセス方法およびプログラム - Google Patents
ストレージシステム、制御装置、データアクセス方法およびプログラム Download PDFInfo
- Publication number
- JPWO2015141219A1 JPWO2015141219A1 JP2016508537A JP2016508537A JPWO2015141219A1 JP WO2015141219 A1 JPWO2015141219 A1 JP WO2015141219A1 JP 2016508537 A JP2016508537 A JP 2016508537A JP 2016508537 A JP2016508537 A JP 2016508537A JP WO2015141219 A1 JPWO2015141219 A1 JP WO2015141219A1
- Authority
- JP
- Japan
- Prior art keywords
- data
- storage
- comparison
- control device
- command
- 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
- 238000000034 method Methods 0.000 title claims abstract description 104
- 230000008569 process Effects 0.000 claims abstract description 72
- 238000013500 data storage Methods 0.000 claims abstract description 32
- 238000012545 processing Methods 0.000 claims description 70
- 238000007726 management method Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 abstract description 25
- 238000004891 communication Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 25
- 239000012634 fragment Substances 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 239000000835 fiber Substances 0.000 description 5
- 230000010354 integration Effects 0.000 description 5
- 230000000052 comparative effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000010367 cloning Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 238000012958 reprocessing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
応答性能の向上に貢献すること。そのために、ストレージシステムは、制御装置と、制御装置とインターコネクトネットワークを介して接続する、記憶装置と、を含み、記憶装置は、データを格納するデータ記憶部と、制御装置から指定された第1のデータと、データ記憶部が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域でデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み部と、を備え、制御装置は、記憶装置に読み込み命令を発行する読み込み命令発行部と、読み込み命令に基づいて読み込まれたデータを保持する書き込みバッファ記憶部と、書き込みバッファ記憶部に書かれたデータを、第1のデータとして指定し、比較書き込み処理の実行を比較書き込み命令として記憶装置に指示する、比較書き込み命令部と、を備える。
Description
本発明は、ストレージシステム、制御装置、記憶装置、データアクセス方法及びプログラム記録媒体に関する。
記憶装置及び記憶システムに対するデータアクセスの制御に関するさまざまな技術が知られている。
例えば、単一あるいは複数の計算機によって構成されるデータストアシステム(例えば、データベースシステムやファイルシステム、キャッシュシステム)がある。近年では、分散ストレージシステムが、そのようなシステムに、しばしば適用されている。その分散ストレージシステムは、ネットワークを介して接続された複数の汎用的な計算機を含む。
そして、その分散ストレージシステムは、それらの計算機に搭載された記憶装置を用いて、データの格納及びデータの提供を行う。その記憶装置は、例えばHDD(Hard Disk Drive)、主記憶(例えば、DRAM(Dynamic Random Access Memory))などである。
上述のような分散ストレージシステムでは、いずれの計算機にデータを配置し、いずれの計算機によってデータを処理するのかを、ソフトウェアまたは特別なハードウェアが決定する。このようなアーキテクチャは、Shared nothing Architectureと呼ばれる。
SAN(Storage Area Network)は、例えば複数のサーバ間でFC(Fibre Channel)などのネットワークを介して、記憶装置を共有する。例えば、データストアシステムは、SANにより共有される記憶装置を用いて実現される。
SANにおいて、複数の計算機間でデータを共有してシステムを実現するには、Shared Everythingアーキテクチャに基づくソフトウェアを用いる必要がある。例えば、ファイルシステムの場合、そのソフトウェアは、SANファイルシステムなどである。また、データベースシステムの場合、そのソフトウェアは、Oracle(登録商標) RAC(Real Application Clusters)(登録商標)などがある。
Shared Everythingアーキテクチャは、通常、FCやiSCSI(Internet Small Computer System Interface)を用いて実現される。FCやiSCSIは、通信遅延が大きい。そのため、記憶装置としても応答性能に優れた記憶装置が使われるケースは少なく、HDDなどの応答性能に劣る記憶装置が主に使われる。
一方、HDDは、シーケンシャルなアクセス性能に優れる。そのため、データベースなどのソフトウェアは、例えば、Write Ahead Logなどの方法を用いて更新情報だけをシーケンシャルに書き出すことによって、その共有される記憶装置の低い性能をカバーする。
近年では、高速かつ汎用的なPCI−e(Peripheral Component Interconnect-Express)インターフェースで、計算機にSSD(Solid State Drive)などの高速な記憶装置を接続する構成が、用いられる。このような構成は、高速な記憶装置に低遅延でアクセスすることを可能にする。従って、このような構成は、SAN上のストレージに対するキャッシュなどの用途に用いられる。
Shared Everythingアーキテクチャは、このような構成のPCI−eデバイスをExpEther(登録商標)などにより複数ホスト間で共有する技術を用いることにより、実現できる。Shared Everythingアーキテクチャは、このような構成を取ることにより、上述のSAN上のストレージと比較して、低遅延でのストレージ共有を可能にする。
ここまで述べたように、クラスタベースの分散ストレージや分散データベース技術は、関連技術のサーバを前提とするアーキテクチャであるShared NothingあるいはShared Storageアーキテクチャを前提に発展してきている。関連技術のサーバアーキテクチャは、自身以外のサーバのリソースにアクセスするには、該当するサーバ経由でアクセスしなければならなかった。しかし、リソース分離型アーキテクチャでは、各リソース(メモリ、ストレージなど)はインターコネクトネットワークを経由して接続されているため、各CPU(Central Processing Unit)から各リソースを物理的に共有することが可能であり、サーバを経由してアクセスする必要が必ずしも無い。以上のように、サーバアーキテクチャの変化は分散ストレージや分散データベースの技術に変革を与える。
例えば、データの排他制御を行うにあたり、関連技術の分散システムの排他制御は2相コミットや3相コミット、Paxosアルゴリズムなどの方法で、サーバ間で通信をやりとりすることにより実現されている。他に、前述したOracle RACではCache Fusionと呼ばれる機能によって排他制御を実現している。分散キー・バリュー・ストアではHash関数で責任ノードを分散決定し、そのノードが排他単位となるデータ(例えばレコード単位)を管理する。例えば、レコード間にまたがるトランザクションなどではノード間で前述の2相コミットなどを用いて実現する必要がある。
これらは、サーバ間の通信がサーバ内部のリソースへの通信時間より長いことを前提に設計されている。リソース分離型アーキテクチャにおいては、サーバとリソース間の通信時間とサーバ間(CPU間)の通信時間の関係は、必ずしもサーバ間(CPU間)通信が優位とは限らず、同等(あるいはそれ以下)であることが考えられる。従って、リソース分離型アーキテクチャ上で動作する分散ストレージ・データベースシステムなどでは、排他制御においてサーバ間の通信を削減することが求められ、リソース側の(限られたHWによる)機能を活用することも可能である。
ここで、特許文献1において、テーブル又はインデックス等、データベースオブジェクトをフラグメントに分割し、分割したフラグメントを複製(クローン化)し、クローン化したフラグメントを用いて、データの更新の有無を管理する技術が開示されている。
また、特許文献2において、CAS(Compare and Swap)命令を処理する機能を備えたKVS(キー・バリュー・ストア、Key Value Store)システムを共有する構成において、CAS命令をもちいて複数計算機からの更新処理を排他的に行う技術が開示されている。
なお、上記先行技術文献の開示を、本書に引用をもって繰り込むものとする。以下の分析は、本発明の観点からなされたものである。
第1の問題点は、サーバ間で複数の通信を必要とする排他制御方法は、サーバ間の通信やサーバの計算リソースなどを利用するために、通信遅延の影響で性能が低下してしまう点である。
その理由は、リソース分離型アーキテクチャにおいては、各CPUがインターコネクトネットワークを介して記憶装置(ストレージ)や、メモリにアクセスするため、物理的な記憶装置のアクセス時間に加え、排他制御のためのサーバ間の通信ごとに遅延が必要になるためである。
第2の問題点は、サーバ間で通信を必要とする方式は、CPUリソースを過剰に利用し、性能が低下してしまう点である。
その理由は、サーバ上で通信処理用のプロセスやスレッドを動作させる必要があるため、コンテキストスイッチコストが必要になったり、通信処理にもCPUリソースを必要とするためである。サーバのCPU能力が潤沢でない場合はその影響は大きい。
第3の問題点は、共有された記憶装置は、他のCPUによって書き換えられる可能性があるために、書き込み可能であるCPUを制限する必要がある点である。
その理由は、データベースなどの分散ストレージシステムでは、記憶領域の有効活用や負荷分散などの理由で、記憶装置のデータ構造が変更される可能性があるためである。これを起こさないためには、完全に領域ごとに担当計算機を変更したり、書き込みのたびに共有記憶装置上の領域上で排他情報をチェックするような機構が必要になり、応答遅延で性能が悪化するためである。
例えば、特許文献1に開示された技術においては、データベースをフラグメントに分割し、各フラグメントに対応する、クローン化したフラグメントを保持する必要がある。従って、特許文献1に開示された技術では、データベースの負荷が増大する恐れがある。そして、その結果、特許文献1に開示された技術では、応答遅延で性能が悪化する恐れがある。
また、特許文献2に開示された技術においては、記憶装置自体は共有されておらず、記憶装置はKVSを動作させるサーバのみからアクセスされ、書き込み可能なCPUを制限している。従ってKVSを動作させるサーバのCPUリソースを必要とし、またサーバ間通信を必要とするために、第2の問題点と同様の問題も現れる。
そこで、本発明は、応答性能の向上に貢献するストレージシステム、制御装置、記憶装置、データアクセス方法、記憶装置の制御方法、及びプログラム記録媒体を提供することを目的とする。
本発明の第1の視点によれば、1又は2以上の制御装置と、前記制御装置とインターコネクトネットワークを介して接続する、1又は2以上の記憶装置と、を含むストレージシステムであって、
前記記憶装置は、データを格納するデータ記憶部と、前記制御装置から指定された第1のデータと、前記データ記憶部が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域でのデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み部と、を備え、
前記制御装置は、前記記憶装置に読み込み命令を発行する読み込み命令発行部と、前記読み込み命令に基づいて読み込まれたデータを保持する書き込みバッファ記憶部と、前記書き込みバッファ記憶部に書かれたデータを、前記第1のデータとして指定し、前記比較書き込み処理の実行を比較書き込み命令として前記記憶装置に指示する、比較書き込み命令部と、を備えるストレージシステムが提供される。
前記記憶装置は、データを格納するデータ記憶部と、前記制御装置から指定された第1のデータと、前記データ記憶部が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域でのデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み部と、を備え、
前記制御装置は、前記記憶装置に読み込み命令を発行する読み込み命令発行部と、前記読み込み命令に基づいて読み込まれたデータを保持する書き込みバッファ記憶部と、前記書き込みバッファ記憶部に書かれたデータを、前記第1のデータとして指定し、前記比較書き込み処理の実行を比較書き込み命令として前記記憶装置に指示する、比較書き込み命令部と、を備えるストレージシステムが提供される。
本発明の第2の視点によれば、前記記憶装置に読み込み命令を発行する読み込み命令発行部と、前記読み込み命令に基づいて読み込まれたデータを保持する書き込みバッファ記憶部と、前記書き込みバッファ記憶部に書かれたデータを、前記第1のデータとして指定し、前記第1のデータと、記憶装置が所定の領域に格納する第2のデータとの比較結果に応じて、当該所定の領域でデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み命令部と、を備える制御装置が提供される。
本発明の第3の視点によれば、データを格納するデータ記憶部と、前記制御装置から指定された第1のデータと、前記データ記憶部が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域でデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み部と、を備える記憶装置が提供される。
本発明の第4の視点によれば、読み込み命令を発行する工程と、読み込まれたデータを、第1のデータとして第1の領域に保持する工程と、前記第1のデータと、前記第1の領域と異なる第2の領域に格納された第2のデータとの比較結果に応じて、前記第2の領域に格納されるデータを更新するか否かを決定する、比較書き込み処理の実行を指示する工程と、を含むデータアクセス方法が提供される。
なお、本方法は、データのアクセスを制御する制御装置という、特定の機械に結び付けられている。
なお、本方法は、データのアクセスを制御する制御装置という、特定の機械に結び付けられている。
本発明の第5の視点によれば、制御装置を制御するコンピュータに実行させるプログラムを記録するプログラム記録媒体であって、前記記憶装置に読み込み命令を発行する処理と、読み込まれたデータを、第1のデータとして第1の領域に保持する処理と、前記第1のデータと、前記第1の領域と異なる第2の領域に格納された第2のデータとの比較結果に応じて、前記第2の領域に格納されるデータを更新するか否かを決定する、比較書き込み処理の実行を指示する処理と、を実行するプログラムを記録するプログラム記録媒体が提供される。
なお、本プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
なお、本プログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。記憶媒体は、半導体メモリ、ハードディスク、磁気記録媒体、光記録媒体等の非トランジェント(non-transient)なものとすることができる。本発明は、コンピュータプログラム製品として具現することも可能である。
応答性能の向上に貢献するストレージシステム、制御装置、記憶装置、データアクセス方法、記憶装置の制御方法、及びプログラム記録媒体が提供される。
初めに、図1を用いて本発明の一実施形態の概要について説明する。なお、この概要に付記した図面参照符号は、理解を助けるための一例として各要素に便宜上付記したものであり、この概要の記載はなんらの限定を意図するものではない。
上述の通り、応答性能の向上に貢献するストレージシステムが望まれる。
そこで、一例として図1に示すストレージシステム1000を提供する。ストレージシステム1000は、1又は2以上の制御装置1010と、1又は2以上の記憶装置1020と、を含んで構成される。なお、図1は、簡単のため、1つの制御装置1010、及び1つの記憶装置1020を記載する。制御装置1010と、記憶装置1020と、はインターコネクトネットワーク1030を介して接続する。
記憶装置1020は、データ記憶部1021と、比較書き込み部1022と、を備える。また、記憶装置1020は、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。
データ記憶部1021は、データを格納する。比較書き込み部1022は、比較書き込み処理を実行する。比較書き込み処理とは、制御装置1010から指定された第1のデータと、データ記憶部1020が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域のデータの更新の有無を決定する処理である。
制御装置1010は、読み込み命令発行部1011と、書き込みバッファ記憶部1012と、比較書き込み命令部1013と、を備える。また、制御装置1010の各部は、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。
読み込み命令発行部1011は、記憶装置1020に読み込み命令を発行する。書き込みバッファ記憶部1012は、読み込み命令に基づいて読み込まれたデータを保持する。つまり、制御装置1010は、読み込み命令を発行した場合、記憶装置1020からデータを読み込み、読み込まれたデータを書き込みバッファ記憶部1012に格納する。
比較書き込み命令部1013は、書き込みバッファ記憶部1012に書かれたデータを、第1のデータとして指定し、比較書き込み処理の実行を比較書き込み命令として記憶装置1020に指示する。
ここで、ストレージシステム1000においては、記憶装置1020にアクセスする制御装置1010を限定するために、制御装置1010間での排他制御が必要ではない。
また、ストレージシステム1000においては、記憶装置1020は、比較書き込み処理を実行する。そのため、記憶装置1020が、領域ごとに書き込みを許可する制御装置1010を変更したり、書き込みのたびに記憶装置上の領域上で、制御装置1010を識別する情報をチェックする必要がない。つまり、ストレージシステム1000においては、比較書き込み処理により、書き込み処理における、記憶装置1020の処理負荷が低減する。従って、ストレージシステム1000は、応答性能の向上に貢献する。
[第1の実施形態]
第1の実施形態について、図面を用いてより詳細に説明する。
第1の実施形態について、図面を用いてより詳細に説明する。
図2は、本実施形態に係るストレージシステム500の全体構成の一例を示すブロック図である。ストレージシステム500は、制御装置(Central Processing Unit)100〜10Xと、記憶装置200〜20Xと、インターコネクトネットワーク300を含んで構成される。制御装置100〜10Xと、記憶装置200〜20Xとは、インターコネクトネットワーク300を介して接続する。以下、説明のため、制御装置100〜10Xを、制御装置10Xと記す。また、記憶装置200〜20Xを、記憶装置20Xと記す。
ストレージシステム500は、リソース分離型アーキテクチャである。図2に示すように、ストレージシステム500は、制御装置10Xと、記憶装置20Xと、をインターコネクトネットワーク300を介して接続し、計算機サーバとして機能する。
制御装置10Xは、演算処理手段(例えば、CPU)と、インターコネクトネットワーク300に接続するためのインターフェースと、記憶回路(レジスタ)と、CPUキャッシュと、を含んで構成される。さらに、制御装置10Xは、メモリ等の記憶装置を含んでも良いことは勿論である。
記憶装置20Xは、インターコネクトに接続するためのインターフェースと、記憶装置と、記憶装置へのアクセス処理を行う手段と、電源供給処理を行う手段と、を含んで構成される。記憶装置は、例えば、フラッシュメモリ、DRAM、MRAM(Magnetoresistive Random Access Memory)、HDD等であっても良い。また、記憶装置は、例えば、NVM(Non-Volatile Memory) Expressに準拠したPCI−eフラッシュカードであってもよい。
インターコネクトネットワーク300は、制御装置10Xと、記憶装置20Xと、を接続する。そして、制御装置10X、及び記憶装置20Xは、インターコネクトネットワーク300を介して、データ、及び制御メッセージ等を送受信する。例えば、インターコネクトネットワーク300は、光ケーブル、及びスイッチ等を用いて実現しても良い。また、インターコネクトネットワーク300は、PCI−eを用いて実現しても良い。
制御装置10Xは、公知のアーキテクチャで構成される計算機であっても良い。その場合、インターコネクトネットワーク300は、Ethernet(登録商標)、PCI−eネットワークを用いて実現しても良い。また、ExpEther(登録商標)を用いて、計算機のインターコネクトネットワークである、PCI−expressを拡張しても良い。そして、制御装置10XにExpEther機能を備えたインターフェースを保持させることで、リソース「分離型アーキテクチャに類似したアーキテクチャ」を実現できる。なお、その場合、記憶装置20Xは、ExpEther機能を備える装置、PCI−e機能を備える装置を備えることが好ましい。PCI―e機能を備える装置は、PCI−e Flash、RAID(Redundant Arrays Independent Disk)カードであっても良い。または、PCI―e機能を備える装置は、GPGPU(General-Purpose computing on Graphics Processing Unit)機能を備えるカード、MIC(Many Integrated Core)アーキテクチャに基づく演算ボード等であっても良い。
また、インターコネクトネットワーク300は、Fibre Cannel、FCoE(Fibre Channel over Ethernet)を用いて実現しても良い。その場合、制御装置10Xは、公知のアーキテクチャで構成される計算機にホストバスアダプタを備える装置であっても良い。また、記憶装置20Xは、Fibre Channel、FcoEに対するインターフェースを備えることが好ましい。なお、2以上の各制御装置10Xを接続するネットワークは、インターコネクトネットワーク300とは異なるネットワークであっても良い。例えば、各制御装置10XをEthernet(TCP(Transmission Control Protocol)/IP(Internet Protocol))を用いて接続しても良い。そして、制御装置10Xと、記憶装置20Xと、をFibre Channelを用いて接続しても良い。
図3は、制御装置10X、及び記憶装置20Xの内部構成の一例を示す図である。なお、図3は、簡単のため、本実施形態に係る制御装置10X、及び記憶装置20Xに関係するモジュールを主に記載する。
ストレージクライアント部4は、分散ストレージシステムに対するアクセス機能を提供する。ストレージクライアント部4は、ソフトウェアであっても良い。ストレージクライアント部4は、制御装置10Xの内部で動作するソフトウェアであっても良い。また、ストレージクライアント部4は、制御装置10Xとは異なる計算機で動作するソフトウェアであっても良い。さらに、ストレージクライアント部4は、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。
次に、制御装置10Xの内部構成について詳細に説明する。
制御装置10Xは、ストレージ処理部1と、インターコネクトネットワーク通信実現部3と、を含んで構成される。また、制御装置10Xは、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。ストレージ処理部1は、アクセス応答部11と、読み込み命令発行部12と、書き込みバッファ記憶部13と、比較書き込み命令部14と、書き込み結果受信部15と、判定再送部16と、を含んで構成される。
ストレージ処理部1は、データベース、KVS、ファイルシステムを実現するソフトウェアである。
インターコネクトネットワーク通信実現部3は、インターコネクトネットワーク300を介して、所定の通信プロトコルに従って、通信処理を行う。インターコネクトネットワーク300は、当該処理を実行できれば、ハードウェアであっても、ソフトウェアであっても良い。
アクセス応答部11は、ストレージクライアント部4からのストレージアクセス要求(即ち、処理命令)を受け付ける。また、アクセス応答部11は、当該処理命令の結果をストレージクライアント部4に返信する。
例えば、ストレージ処理部1がデータベースである場合、アクセス応答部11は、SQL(Structured Query Language)等で指定されるデータ操作命令を受け付けても良い。また、ストレージ処理部1がKVSである場合、アクセス応答部11は、keyに対応するvalueを取得命令、登録命令、及び更新命令を受け付けても良い。
読み込み命令発行部12は、アクセス応答部11が受け取った処理命令に応じて、記憶装置20Xにおけるデータの配置場所(即ち、データのアドレス)を算出する。そして、読み込み命令発行部12は、算出した配置場所からデータを読み出す。そして、読み込み命令発行部12は、読み込んだデータを書き込みバッファ記憶部13に格納する。
書き込みバッファ記憶部13は、データを記憶できれば良く、その詳細は問わない。例えば、書き込みバッファ記憶部13は、CPUの一次キャッシュ、又は二次キャッシュであっても良い。また、制御装置10Xが主記憶装置を備える場合、書き込みバッファ記憶部13は、当該主記憶装置に配置されても良い。
比較書き込み命令部14は、記憶装置20Xに対して比較書き込み命令を発行する。
具体的には、比較書き込み命令部14は、第1のデータ(以下、読み込み済みのデータと呼ぶ)と、書き込み対象である所定の領域と、書き込み対象の第3のデータ(更新データと呼ぶ)と、を前記記憶装置に通知する。ここで、書き込み対象である所定の領域とは、記憶装置20Xにおける、データの読み込み元の配置場所に相当する。
具体的には、比較書き込み命令部14は、第1のデータ(以下、読み込み済みのデータと呼ぶ)と、書き込み対象である所定の領域と、書き込み対象の第3のデータ(更新データと呼ぶ)と、を前記記憶装置に通知する。ここで、書き込み対象である所定の領域とは、記憶装置20Xにおける、データの読み込み元の配置場所に相当する。
より具体的には、比較書き込み命令部14は、読み込み済みのデータと、更新データと、を用いて、インターコネクトネットワーク通信実現部3を介して、比較書き込み命令を発行する。ここで、読み込み済みのデータとは、書き込みバッファ記憶部13に格納された、読み込み済みのデータを意味する。また、更新データとは、ストレージクライアント部4のアクセス要求に含まれるデータを意味する。
比較書き込み処理命令とは、記憶装置20X上で動作する、比較書き込み処理の要求命令である。例えば、比較書き込み処理命令は、NVM ExpressのRev1、1標準仕様に含まれるFusedOperation機能を用いて実現することができる。この場合、記憶装置20XはNVMExpressに準拠したデバイスである。
ここで、本実施形態に係るストレージシステム500における比較書き込み処理について説明する。
まず、比較書き込み処理命令が発行された場合、記憶装置20Xは、書き込み対象の領域に対するデータと、指定されたデータとが同一である場合、当該書き込み対象の領域に対してデータを書き込む(Writeを行う)。
一方、書き込み対象の領域に対するデータと、指定されたデータとが同一ではない場合、記憶装置20Xは、書き込み処理をキャンセルする(Writeをキャンセルする)。
つまり、第1のデータと、書き込み対象の領域に対するデータとが同一ではない場合、記憶装置20Xは、書き込み対象の領域のデータを維持する。
つまり、第1のデータと、書き込み対象の領域に対するデータとが同一ではない場合、記憶装置20Xは、書き込み対象の領域のデータを維持する。
上記の通り、データの比較処理と、Write処理とを行うことを保証する処理を、本書では、比較書き込み処理と呼ぶ。本実施形態に係るストレージシステム500においては、記憶装置20Xの比較書き込み部23が、比較書き込み処理を実行する。
書き込み結果受信部15は、比較書き込み命令の結果を受信する。ここで、比較書き込み命令とは、比較書き込み命令部14が要求し、記憶装置20Xで処理された比較書き込み処理の命令である。
書き込み結果受信部15は、受信した結果を、判定再送部16に転送する。ここで、判定再送部16は、比較書き込み処理を失敗したとの結果を受信した場合、読み込み命令発行部12に、読み込み処理の再処理命令を発行する。
または、判定再送部16は、比較書き込み処理を失敗したとの結果を受信した場合、比較書き込み処理を失敗したことを、アクセス応答部11に通知する。そして、アクセス応答部11は、比較書き込み処理を失敗したことを、ストレージクライアント部4に通知する。そして、ストレージクライアント部4を利用するアプリケーションが、比較書き込み処理の失敗に対する処理を実行しても良い。
例えば、アプリケーションが、所定の整数のレコードの値をインクリメントする処理(レコードに+1する処理)の実行を試みるとする。そして、書き込み結果受信部15が、当該処理を失敗したとの結果を受信したとする。その場合、ストレージ処理部1は、当該処理の命令を再送しても良い。
また、例えば、制御装置10Xの一つが、記憶領域の再構成を行ったとする。その場合、比較書き込み命令を発行する制御装置10Xが、書き込み対象のアドレスに格納されたデータ構成を把握できない場合がある。その場合、読み込み命令発行部12は、書き込み対象のアドレスの再読み込み命令を発行し、書き込み対象のアドレスに格納されたデータを読み込む。そして、読み込み命令発行部12は、再読み込み処理により取得されたデータと、書き込み対象のデータとを用いて、比較書き込み処理を行うように、比較書き込み命令を発行しても良い。
次に、記憶装置20Xの内部構成について詳細に説明する。
記憶装置20Xは、インターコネクトネットワーク通信実現部3と、命令処理部21と、読み込み処理部22と、比較書き込み部23と、データ記憶部24と、を含んで構成される。また、記憶装置20Xは、LSI(Large Scale Integration)等のハードウェア部品である回路部品を実装することにより、その動作をハードウェア的に実現することができる。あるいは、その機能を提供するプログラムを、図示しないソフトウェア記憶媒体に格納し、そのプログラムを主記憶部にロードしてCPUにおいて実行することにより、ソフトウェア的に実現することも可能である。ストレージ処理部1は、アクセス応答部11と、読み込み命令発行部12と、書き込みバッファ記憶部13と、比較書き込み命令部14と、書き込み結果受信部15と、判定再送部16と、を含んで構成される。
命令処理部21は、制御装置10Xから命令を受信し、命令に応じた処理の結果を制御装置10Xに返信する。
具体的には、命令処理部21は、インターコネクトネットワーク300を介して、制御装置10Xから発行される命令を受信する。具体的には、命令処理部21は、読み込み命令発行部12、及び比較書き込み命令部14が発行する命令を受信する。命令処理部21は、読み込み処理部22、及び比較書き込み部23等に、受信した命令を送信する。
また、命令処理部21は、比較書き込み部23が、所定の領域のデータを更新データに更新した場合、比較書き込み処理を成功したと制御装置10Xに返信する。一方、命令処理部21は、比較書き込み部23が、所定の領域のデータを維持した場合、比較書き込み処理を失敗したと制御装置10Xに返信する。
読み込み処理部22は、データ記憶部24に格納されているデータを読み込む処理を行う。
比較書き込み部23は、データ記憶部24に格納されているデータに対して、比較書き込み処理を実行する。具体的には、比較書き込み部23は、制御装置から指定された第1のデータ(上記の読み込み済みのデータ)と、データ記憶部24が所定の領域に格納する第2のデータ(上記の書き込み対象の領域に対するデータ)と、を比較する。そして、比較書き込み部23は、当該比較結果に応じて、当該所定の領域のデータの更新の有無を決定する比較書き込み処理を実行する。
データ記憶部24は、データの保持、及び格納を行う。また、データ記憶部24は、記憶媒体特性に基づいた制御等を行う機能を備える。例えば、記憶媒体特性に基づいた制御等を行う機能は、集積回路、FPGA(Field Programmable Gate Array)上のロジックを用いて実現しても良い。具体的には、記憶媒体特性に基づいた制御等を行う機能は、フラッシュメモリのコントローラ、DRAMコントローラを用いて実現しても良い。また、記憶媒体は、フラッシュメモリ、DRAM、HDD等であっても良く、その詳細は問わない。
次に、本実施形態に係るストレージシステム500の動作について説明する。
図4は、本実施形態に係るストレージシステム500の動作の一例を示す図である。具体的には、図4は、制御装置100、及び制御装置101からのデータの更新処理が競合する場合を示す。簡略化のため、図4において、データストアソフトウェアは、KVSであるとする。そして、図4は、1つのKeyに対するUpdate命令を処理する一例を示す。なお、リレーショナルデータベースに対するSQL処理においても、本質的には同様である。また、説明の簡略化のため、図4においては、エラー処理等への対応は記述していない。本来は、1つのKeyに対するUpdate命令を処理する場合、物理的、論理的障害、ユーザアプリケーションの利用ミスに対する例外的な処理を行うことが好ましい。
まず、図4に示すタイミングt1において、制御装置100は、Updateアクセス命令を、ストレージクライアント部4から受信する。そして、制御装置100は、記憶装置20Xからデータを読み込む。タイミングt1において、記憶装置20Xは、data0を格納しているとする。
また、タイミングt1より後のタイミングt2において、制御装置101は、Updateアクセス命令を、ストレージクライアント部4から受信する。具体的には、制御装置101は、タイミングt2における読み込み命令に基づいて、data0を取得する。そして、制御装置101は、書き込みバッファ記憶部13にdata0を格納する。
そして、タイミングt2の後、タイミングt3において、制御装置100は、比較書き込み命令として、格納されているデータがdata0と等しい場合、格納するデータをdata1に書き換える命令を発行する。
ここで、記憶装置20Xに格納されているデータはdata0であるため、データ書き換えの命令を受信した記憶装置20Xは、data1を書き込む。ここで、制御装置100は、制御装置101より先に、比較書き込み命令を発行している。そのため、制御装置100から発行された比較書き込み命令は成功する。
一方、タイミングt3の後、タイミングt4において、制御装置101は、格納されているデータがdata0と等しい場合、格納するデータをdata1’に書き換える命令を発行する。
ここで、制御装置101が比較書き込み命令を発行するタイミングt4は、制御装置101が比較書き込み命令を発行するタイミングt3の後である。そして、タイミングt4において、記憶装置20Xに格納されているデータは、data1である。そのため、制御装置101から発行される、比較書き込み命令は失敗する。そこで、制御装置101は、ストレージクライアント部4に、データの書き換えを失敗したことを通知する。その結果、ストレージシステム500を利用するアプリケーションは、データの書き換えを失敗したことを認識し、データの書き換えの失敗に応じた処理を行う。
次に、タイミングt4の後、タイミングt5において、制御装置100は、再度、記憶装置20Xから、データの読み込みを行っても良い。その場合、制御装置100は、data1を読み込む。
そして、タイミングt5の後、タイミングt6において、制御装置100は、data1と比較したうえで、更新処理を行っても良い。具体的には、タイミングt6において、制御装置100は、比較書き込み命令として、格納されているデータがdata0と等しい場合、格納するデータをdata1に書き換える命令を発行しても良い。
ストレージシステム500を利用するアプリケーションが、当該更新処理を許可しても良い。または、ストレージシステム500を利用するアプリケーションが、1レコードに対するトランザクションを実行するとする。例えば、1レコードに対するトランザクションの実行とは、読み込んだ値に、所定の規定値を加算する処理の実行等を含む。その場合、制御装置100は、上記のタイミングt5、t6の処理の通り、データの再読み込み、及び更新処理を実行しても良い。
また、例えば、制御装置101が、アプリケーションからのデータの書き換え要求ではなく、記憶装置20X内のデフラグ処理、記憶装置20X間のマイグレーション処理等を実行する場合を考える。その場合、制御装置10Xがデータの読み込み処理(Read処理)を実行後に、データが書き換わる可能性がある。そのため、制御装置10Xがデータを読み込み後に、比較書き込み命令に基づいて、書き込み処理(Write処理)を行うことは有益である。
なお、読み込み、書き込み、比較確認のデータであるdata0、data1は、レコードに対する任意の識別子、及びバージョン番号等のデータを含んでいても良い。
また、data0、data1は、実データを含まなくても良い。例えば、data0、data1を格納する記憶装置20Xとは異なる記憶装置が、実データを格納していても良い。その場合、data0、data1は、実データの管理情報を含んでいても良い。そして、ストレージシステム500は、当該管理情報を制御しても良い。
次に、物理アドレスの算出処理について、詳細に説明する。具体的には、アクセス応答部11が、アクセス識別子に基づいて、記憶装置200の物理アドレスを算出する処理について、説明する。
記憶媒体は、論理アドレス、又は物理アドレスを指定し、アクセス先を指定する場合が多い。例えば、記憶媒体は、データ記憶部24の全体、又は一部の領域を、データストアソフトウェアの格納先として利用しても良い。データ記憶部24の全体を使用できない理由は、1又は2以上のサービスがデータ記憶部24を分割して使用する場合があるからである。または、データ記憶部24の全体を使用できない理由は、システム実現のための管理情報を格納する領域用に、データ記憶部24の一部が確保される場合があるからである。
本実施形態に係る記憶装置20Xは、データ記憶部24のデータ格納先のアドレス空間を、任意のサイズでページブロックに分割し、ページブロックのID(Identification)を用いて、対応するページブロックにアクセスする。以下、ページブロックのIDをページブロックIDと呼ぶ。
例えば、格納先の最初の物理アドレスから5番目のページを、ページブロックID=4でアクセスするとする。その場合、制御装置10Xは、データ格納先のアドレス空間の最初のアドレスと、ページブロックIDと、ページブロックとに基づいて、当該ページブロックIDの物理アドレスを一意に算出可能である。データ空間は、アドレス空間として連続した領域を確保できることが好ましい。アドレス空間として、分割した領域を確保する場合、制御装置10Xは、計算ブロックIDと、開始アドレスとを保持することが好ましい。
また、Keyからアクセス先のページ(ページブロックID)を特定することが必要である。本実施形態に係るストレージシステム500においては、記憶装置200は、アクセス識別子(例えば、Key値)を数値に変換する。アクセス識別子を数値に変換する方法は、例えば、ハッシュ関数(例えば、md5等)を用いても良い。その場合、制御装置10Xは、算出したハッシュ値を、データ記憶部24が提供する総ページ数で除算する。
ここで、制御装置10Xは、データ記憶部24のデータストアソフトウェアの格納先として提供される容量をページサイズで除算することで、データ記憶部24が提供する総ページ数を算出できる。そして、制御装置10Xは、算出した剰余を、ページブロックIDとして決定する。そして、制御装置10Xは、ページブロックIDを算出できれば、ページブロックIDと、ページサイズと、開始アドレスとに基づいて、ページを示すアドレスを算出できる。
ここで、制御装置10Xは、データ記憶部24のデータストアソフトウェアの格納先として提供される容量をページサイズで除算することで、データ記憶部24が提供する総ページ数を算出できる。そして、制御装置10Xは、算出した剰余を、ページブロックIDとして決定する。そして、制御装置10Xは、ページブロックIDを算出できれば、ページブロックIDと、ページサイズと、開始アドレスとに基づいて、ページを示すアドレスを算出できる。
上記のページを示すアドレスの算出方法を用いることで、制御装置10Xは、記憶装置20Xの総ページ数(又は、総容量)と、ページサイズと、開始アドレスと、ハッシュ関数と、を保持すれば、Keyを含むページにアクセスできる。
なお、2以上の制御装置10Xが、所定の記憶装置20Xを共有しても良い。その場合、2以上の制御装置10Xは、総ページ数(又は、総容量)と、ページサイズと、開始アドレスと、ハッシュ関数と、を共有しても良い。その結果、2以上の制御装置10Xは、アクセス識別子が格納されたページ領域にアクセスできる。また、障害が発生した時、記憶装置20Xが追加、又は削除された時を除いて、総ページ数(又は、総容量)、ページサイズ、開始アドレス、ハッシュ関数は、システム開始時から不変である。そのため。制御装置10X間で、総ページ数等のデータを送受信する必要がない。そのため、上記のページを示すアドレスの算出方法は、データストアソフトウェアの高速化に貢献する。
ページ内のデータ構造について、記憶装置20Xは、レコード、及び管理情報等を、1度の比較書き込み命令で実行可能なサイズの連続領域に格納することが好ましい。なぜなら、記憶装置20Xが、レコード単位の比較書き込み命令を行う場合、比較書き込み命令において、記憶装置20Xは、2以上のアドレスと、データとの組み合わせをアトミックにチェックしないからである。
また、ページ内のデフラグを行った後であっても、新しいWrite命令に対応する、管理情報のバイナリ文字列と、デフラグ後のレコードのバイナリ文字列と、が一致してしまう場合がある。そこで、管理情報のバイナリ文字列と、デフラグ後のレコードのバイナリ文字列と、が一致することを防止するために、記憶装置20Xは、所定のサイズ毎に一意となる情報を記憶しても良い。例えば、記憶装置20Xは、所定のサイズ毎に、Key値と、ブロック番号とを組み合わせた情報を記憶しても良い。
なお、本実施形態に係るストレージシステム500においては、制御装置10Xは、当該制御装置10Xに含まれる記憶媒体(図示せず)を用いて、データの読み込み、及び書き込み処理を行う。具体的には、制御装置10Xにおいては、ストレージ処理部1は、記憶装置20Xから、ページ単位でデータを読み込み(Read処理)、ページから必要とする値を取り出す。つまり、制御装置10Xは、当該制御装置10Xに含まれる記憶媒体に読み込んだデータをコピーする。そして、制御装置10Xは、データをコピーした記憶領域の管理情報を参照し、当該管理情報に基づいて、必要な値の情報にアクセスする。
次に、2以上の記憶装置20Xに、データを複製する処理について説明する。
ストレージシステム500が、2以上の記憶装置20Xを含む場合、記憶装置20Xへのアクセスを分割することが必要となる場合がある。その場合、例えば、制御装置10Xは、コンシステント・ハッシング等の方法を用いて、どの記憶装置20Xを使用するかを決定しても良い。
ここで、記憶装置20Xへのアクセスを分割する場合、制御装置10Xは、データを複製し、信頼性を確保することが好ましい。なぜなら、制御装置10Xが、格納先として2以上の記憶装置20Xを選択した場合、各記憶装置20Xのバージョンが異なる場合がある。その場合、各記憶装置20Xにおいて、データの不整合が生じる恐れがあるからである。例えば、制御装置10Xが、コンシステント・ハッシングを用いて、データの格納先とする記憶装置20Xを決定するとする。その場合、制御装置10Xは、コンシステント・ハッシングのハッシュリングの隣のノードを、必要数選択することで、2以上の記憶装置20Xを選択できる。
また、例えば、制御装置10Xが、3つの記憶装置20Xに、データの複製を書きこむ場合を考える。そして、制御装置100と、制御装置101とが、夫々、上記の3つの記憶装置20Xに、並列で、それぞれの記憶装置20Xに読み込み命令を発行したあとに、書き込み命令を発行するとする。その結果、制御装置100がデータを書き込む記憶装置20Xと、制御装置101がデータを書き込む記憶装置20Xとで、夫々、書き込みが成功してしまう恐れがある。
従って、これを防ぐには、書き込み処理完了後、後に制御装置10Xが読み込みを行った際に多数決方式などで複製間の整合性を担保する必要がある。この場合、後に読み込みリクエストが発生するまでは整合性が保たれていないため、冗長性が下がりシステムの信頼性が低下してしまうことがある。これを防ぐには、書き込み完了後、アプリケーションに応答を返す前に読み込み処理を行って整合性の確認を行う必要がある。これはレスポンス性能の低下を招く。
複数の記憶装置20Xに対して書き込み処理が完了した時点で、少なくとも1度は書き込み処理が成功したことを保証するには、3つの記憶装置20Xへの書き込みを並行に行うのではなく、1つのプライマリ記憶装置(主たる記憶装置とも呼ぶ)20X(任意の方法でキーごとに決めることができる)に成功したあとに、制御装置10Xは、残りの2つの記憶装置20Xへ書き込み命令を発行する必要がある。プライマリ記憶装置20Xを決める方法としては、コンシステント・ハッシングの一つめに見つかったノードにする、ということが方法として採用可能である。
このように行うことで、1つ目のプライマリ記憶装置20Xで排他制御を行い、バージョン情報(あるいは時刻情報など)を管理情報に含めることで、2つ目以降の記憶装置20Xへの書き込みが、先行する書き込みリクエストを追い越すことを防ぐことが出来る。なお、後続のリクエスト処理中に1つ以上の記憶媒体に対して書き込みが成功した後に、後続のリクエストを発行した制御装置10Xが障害を起こした場合には不整合が起こりえる。このときには、読み込み時に多数決方式や、プライマリ優先などといった方法で、整合性の担保を行う必要がある。
以上のように、本実施形態に係るストレージシステム500においては、制御装置10X(CPU等)と、記憶装置と、がインターコネクトネットワークを介して接続する。そして、本実施形態に係るストレージシステム500においては、制御装置10Xが、読み込みを行ったデータを書き込みバッファ記憶部13に保持する。そして、制御装置10Xは、書き込みバッファに保持されるデータと、記憶装置20Xが保持するデータと、の比較書き込み命令を発行する。そして、制御装置10Xは、比較書き込み命令の成否に応じて、読み込み命令を繰り返す。そのため、本実施形態に係るストレージシステム500は、ネットワーク通信の回数を削減することに貢献し、分散ストレージデータベースシステムの応答性能の向上に貢献する。
また、本実施形態に係るストレージシステム500においては、インターコネクトネットワークを用い、サーバ装置(上記、制御装置10X相当)間での通信を行う必要がない。インターコネクトネットワークは、サーバ装置間のネットワークに対して、安価で、低遅延なネットワークを実現することが容易である。そのため、本実施形態に係るストレージシステム500は、コスト削減、及び応答性能の向上に貢献する。
上述の実施形態の一部又は全部は、以下の付記のようにも記載され得るが、以下には限られない。
(付記1)上記第1の視点に係るストレージシステムの通りである。
(付記2)前記比較書き込み命令部は、前記第1のデータと、書き込み対象である前記所定の領域と、書き込み対象の第3のデータと、を前記記憶装置に通知し、前記比較書き込み部は、前記第1のデータと、前記第2のデータとが同一である場合、前記所定の領域のデータを前記第3のデータに更新し、前記第1のデータと、前記第2のデータとが同一ではない場合、前記所定の領域のデータを前記第2のデータに維持する、付記1に記載のストレージシステム。
(付記3)前記記憶装置は、前記制御装置から命令を受信し、命令に応じた処理の結果を前記制御装置に返信する命令処理部をさらに備え、前記制御装置は、前記比較書き込み命令の結果を受信する書き込み結果受信部をさらに備え、前記命令処理部は、前記比較書き込み命令部が、前記所定の領域のデータを前記第3のデータに更新した場合、前記比較書き込み処理を成功したと前記制御装置に返信し、前記比較書き込み命令部が、前記所定の領域のデータを前記第2のデータに維持した場合、前記比較書き込み処理を失敗したと前記制御装置に返信し、前記読み込み命令発行部は、前記比較書き込み処理を失敗したとの結果を受信した場合、前記読み込み命令を再発行する、付記1又は2に記載のストレージシステム。
(付記4)前記ストレージシステムは、前記制御装置にアクセスするストレージクライアント部をさらに含み、前記ストレージクライアント部は、前記記憶装置に対し、レコードおよび管理情報を、1回の比較書き込み命令で実行可能な連続記憶領域に保持する、付記1乃至3のいずれか一に記載のストレージシステム。
(付記5)前記ストレージクライアント部は、前記記憶装置の記憶領域に対し、当該記憶領域の所定のサイズごとに、所定の情報を埋め込んで管理する、付記4に記載のストレージシステム。
(付記6)前記ストレージ装置は、2以上の前記記憶装置に対し、データの複製を保持し、前記ストレージクライアント部は、各前記記憶装置に対する前記比較書き込み処理の比較情報を、対象の記憶媒体から読み込み、前記ストレージクライアント部が、前記制御装置間で共通の方法を用いて、主たる前記記憶装置を1つ選び、当該主たる記憶装置に対して、前記比較書き込み命令が成功したあとに、他の複製の書き込み先となる前記記憶装置への前記読み込み命令、及び前記比較書き込み命令を発行する、付記4又は5に記載のストレージシステム。
(付記7)前記制御装置は、前記ストレージクライアント部からの処理命令を受け付け、当該処理命令の結果を前記ストレージクライアント部に返信するアクセス応答部をさらに備え、前記アクセス応答部は、前記比較書き込み処理の成否を、前記ストレージクライアント部に通知する付記4乃至6のいずれか一に記載のストレージシステム。
(付記8)上記第2の視点に係る制御装置の通りである。
(付記9)上記第3の視点に係る記憶装置の通りである。
(付記10)上記第4の視点に係るデータアクセス方法の通りである。
(付記11)記憶装置を制御する方法であって、データを格納する工程と、前記制御装置から指定された第1のデータと、前記データ記憶部が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域のデータを更新の有無を決定する比較書き込み処理を実行する工程と、を含む記憶装置の制御方法。
(付記12)上記第5の視点に係るプログラム記録媒体の通りである。
(付記13)記憶装置を制御するコンピュータに実行させるプログラムを記録するプログラム記録媒体であって、データを格納する処理と、所定の第1のデータと、所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域のデータの更新の有無を決定する処理と、を実行するプログラムを記録するプログラム記録媒体。
なお、上記の特許文献の開示を、本書に引用をもって繰り込むものとする。本発明の全開示(請求の範囲を含む)の枠内において、さらにその基本的技術思想に基づいて、実施形態の変更・調整が可能である。また、本発明の全開示の枠内において種々の開示要素(各請求項の各要素、各実施形態の各要素、各図面の各要素等を含む)の多様な組み合わせ、ないし、選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。特に、本書に記載した数値範囲については、当該範囲内に含まれる任意の数値ないし小範囲が、別段の記載のない場合でも具体的に記載されているものと解釈されるべきである。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2014年3月20日に出願された日本出願特願2014−058229を基礎とする優先権を主張し、その開示の全てをここに取り込む。
以上、上述した実施形態を模範的な例として本発明を説明した。しかしながら、本発明は、上述した実施形態には限定されない。即ち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
この出願は、2014年3月20日に出願された日本出願特願2014−058229を基礎とする優先権を主張し、その開示の全てをここに取り込む。
1 ストレージ処理部
3 インターコネクトネットワーク通信実現部
4 ストレージクライアント部
11 アクセス応答部
12、1011 読み込み命令発行部
13、1012 書き込みバッファ記憶部
14、1013 比較書き込み命令部
15 書き込み結果受信部
16 判定再送部
21 命令処理部
22 読み込み処理部
23、1022 比較書き込み部
24、1021 データ記憶部
100〜10X、1010 制御装置
200〜20X、1020 記憶装置
300、1030 インターコネクトネットワーク
500、1000 ストレージシステム
3 インターコネクトネットワーク通信実現部
4 ストレージクライアント部
11 アクセス応答部
12、1011 読み込み命令発行部
13、1012 書き込みバッファ記憶部
14、1013 比較書き込み命令部
15 書き込み結果受信部
16 判定再送部
21 命令処理部
22 読み込み処理部
23、1022 比較書き込み部
24、1021 データ記憶部
100〜10X、1010 制御装置
200〜20X、1020 記憶装置
300、1030 インターコネクトネットワーク
500、1000 ストレージシステム
Claims (10)
- 1又は2以上の制御装置と、
前記制御装置とインターコネクトネットワークを介して接続する、1又は2以上の記憶装置と、を含むストレージシステムであって、
前記記憶装置は、
データを格納するデータ記憶手段と、
前記制御装置から指定された第1のデータと、前記データ記憶手段が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域でデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み手段と、
を備え、
前記制御装置は、
前記記憶装置に読み込み命令を発行する読み込み命令発行手段と、
前記読み込み命令に基づいて読み込まれたデータを保持する書き込みバッファ記憶手段と、
前記書き込みバッファ記憶手段に書かれたデータを、前記第1のデータとして指定し、前記比較書き込み処理の実行を比較書き込み命令として前記記憶装置に指示する、比較書き込み命令手段と、
を備えるストレージシステム。 - 前記比較書き込み命令手段は、前記第1のデータと、書き込み対象である前記所定の領域と、書き込み対象の第3のデータと、を前記記憶装置に通知し、
前記比較書き込み手段は、前記第1のデータと、前記第2のデータとが同一である場合、前記所定の領域のデータを前記第3のデータに更新し、前記第1のデータと、前記第2のデータとが同一ではない場合、前記所定の領域のデータを前記第2のデータに維持する、請求項1に記載のストレージシステム。 - 前記記憶装置は、前記制御装置から命令を受信し、命令に応じた処理の結果を前記制御装置に返信する命令処理手段をさらに備え、
前記制御装置は、前記比較書き込み命令の結果を受信する書き込み結果受信手段をさらに備え、
前記命令処理手段は、前記比較書き込み命令手段が、前記所定の領域のデータを前記第3のデータに更新した場合、前記比較書き込み処理を成功したと前記制御装置に返信し、前記比較書き込み命令手段が、前記所定の領域のデータを前記第2のデータに維持した場合、前記比較書き込み処理を失敗したと前記制御装置に返信し、
前記読み込み命令発行手段は、前記比較書き込み処理を失敗したとの結果を受信した場合、前記読み込み命令を再発行する、請求項1又は2に記載のストレージシステム。 - 前記ストレージシステムは、前記制御装置にアクセスするストレージクライアント手段をさらに含み、
前記ストレージクライアント手段は、前記記憶装置に対し、レコードおよび管理情報を、1回の比較書き込み命令で実行可能な連続記憶領域に保持する、請求項1乃至3のいずれか一に記載のストレージシステム。 - 前記ストレージクライアント手段は、前記記憶装置の記憶領域に対し、当該記憶領域の所定のサイズごとに、所定の情報を埋め込んで管理する、請求項4に記載のストレージシステム。
- 前記ストレージ装置は、2以上の前記記憶装置に対し、データの複製を保持し、
前記ストレージクライアント手段は、各前記記憶装置に対する前記比較書き込み処理の比較情報を、対象の記憶媒体から読み込み、
前記ストレージクライアント手段が、前記制御装置間で共通の方法を用いて、主たる前記記憶装置を1つ選び、当該主たる記憶装置に対して、前記比較書き込み命令が成功したあとに、他の複製の書き込み先となる前記記憶装置への前記読み込み命令、及び前記比較書き込み命令を発行する、請求項4又は5に記載のストレージシステム。 - 前記記憶装置に読み込み命令を発行する読み込み命令発行手段と、
前記読み込み命令に基づいて読み込まれたデータを保持する書き込みバッファ記憶手段と、
前記書き込みバッファ記憶手段に書かれたデータを、前記第1のデータとして指定し、前記第1のデータと、記憶装置が所定の領域に格納する第2のデータとの比較結果に応じて、当該所定の領域のデータを更新の有無を決定する比較書き込み処理を実行する、比較書き込み命令手段と、
を備える制御装置。 - データを格納するデータ記憶手段と、
前記制御装置から指定された第1のデータと、前記データ記憶手段が所定の領域に格納する第2のデータと、を比較し、当該比較結果に応じて、当該所定の領域でデータの更新の有無を決定する比較書き込み処理を実行する、比較書き込み手段と、
を備える記憶装置。 - 読み込み命令を発行する工程と、
読み込まれたデータを、第1のデータとして第1の領域に保持する工程と、
前記第1のデータと、前記第1の領域と異なる第2の領域に格納された第2のデータとの比較結果に応じて、前記第2の領域に格納されるデータを更新するか否かを決定する、比較書き込み処理の実行を指示する工程と、
を含むデータアクセス方法。 - 制御装置を制御するコンピュータに実行させるプログラムを記録するプログラム記録媒体であって、
前記記憶装置に読み込み命令を発行する処理と、
読み込まれたデータを、第1のデータとして第1の領域に保持する処理と、
前記第1のデータと、前記第1の領域と異なる第2の領域に格納された第2のデータとの比較結果に応じて、前記第2の領域に格納されるデータを更新するか否かを決定する、比較書き込み処理の実行を指示する処理と、
を実行するプログラムを記録するプログラム記録媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2014058229 | 2014-03-20 | ||
JP2014058229 | 2014-03-20 | ||
PCT/JP2015/001498 WO2015141219A1 (ja) | 2014-03-20 | 2015-03-18 | ストレージシステム、制御装置、記憶装置、データアクセス方法及びプログラム記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPWO2015141219A1 true JPWO2015141219A1 (ja) | 2017-04-06 |
Family
ID=54144202
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016508537A Pending JPWO2015141219A1 (ja) | 2014-03-20 | 2015-03-18 | ストレージシステム、制御装置、データアクセス方法およびプログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10191690B2 (ja) |
JP (1) | JPWO2015141219A1 (ja) |
WO (1) | WO2015141219A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6707936B2 (ja) * | 2016-03-24 | 2020-06-10 | 日本電気株式会社 | ブリッジ接続装置、通信制御システム、方法及びプログラム |
WO2017188036A1 (ja) * | 2016-04-27 | 2017-11-02 | 日本電気株式会社 | アクセス制御装置、アクセス制御システム、アクセス制御方法、及び、アクセス制御プログラムが格納された記録媒体 |
CN115576505B (zh) * | 2022-12-13 | 2023-03-03 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、设备及可读存储介质 |
CN116431062A (zh) * | 2023-03-02 | 2023-07-14 | 阿里巴巴(中国)有限公司 | 数据存储方法、设备、存储介质和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04273318A (ja) | 1991-02-28 | 1992-09-29 | Nec Corp | 磁気ディスク制御装置のデータ更新方式 |
JPH1145509A (ja) | 1997-07-28 | 1999-02-16 | Victor Co Of Japan Ltd | ディスク,その識別方法・装置,その再生装置 |
US7890508B2 (en) | 2005-08-19 | 2011-02-15 | Microsoft Corporation | Database fragment cloning and management |
JP5170169B2 (ja) | 2010-06-18 | 2013-03-27 | Necシステムテクノロジー株式会社 | ディスクアレイ装置間のリモートコピー処理システム、処理方法、及び処理用プログラム |
JP2012185687A (ja) * | 2011-03-07 | 2012-09-27 | Fujitsu Ltd | 制御装置、制御方法およびストレージ装置 |
JP5721056B2 (ja) | 2011-05-10 | 2015-05-20 | 日本電気株式会社 | トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム |
-
2015
- 2015-03-18 US US15/126,856 patent/US10191690B2/en active Active
- 2015-03-18 WO PCT/JP2015/001498 patent/WO2015141219A1/ja active Application Filing
- 2015-03-18 JP JP2016508537A patent/JPWO2015141219A1/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2015141219A1 (ja) | 2015-09-24 |
US10191690B2 (en) | 2019-01-29 |
US20170090823A1 (en) | 2017-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9996421B2 (en) | Data storage method, data storage apparatus, and storage device | |
WO2017216887A1 (ja) | 情報処理システム | |
US20170052723A1 (en) | Replicating data using remote direct memory access (rdma) | |
US10191685B2 (en) | Storage system, storage device, and data transfer method | |
TWI782487B (zh) | 利用索引物件來進行簡易儲存服務無縫遷移的方法、主裝置以及儲存伺服器 | |
KR20190027312A (ko) | 페이지 비트맵을 포함하는 효율적인 트랜잭션 테이블 | |
WO2015118865A1 (ja) | 情報処理装置、情報処理システム及びデータアクセス方法 | |
WO2015141219A1 (ja) | ストレージシステム、制御装置、記憶装置、データアクセス方法及びプログラム記録媒体 | |
US9891992B2 (en) | Information processing apparatus, information processing method, storage system and non-transitory computer readable storage media | |
US11481132B2 (en) | Removing stale hints from a deduplication data store of a storage system | |
WO2016127807A1 (zh) | 多副本写入存储设备的方法及存储设备 | |
US9003129B1 (en) | Techniques for inter-storage-processor cache communication using tokens | |
TW202424721A (zh) | 用於卸載主機任務的非揮發性儲存裝置 | |
US10503409B2 (en) | Low-latency lightweight distributed storage system | |
US10235053B1 (en) | Method and system for using host driver for flexible allocation fast-sideways data movements | |
JP4936088B2 (ja) | ディスクアレイ装置、ディスクアレイシステム、及びキャッシュ制御方法 | |
US10789168B2 (en) | Maintaining multiple cache areas | |
JPWO2014112062A1 (ja) | ストレージ装置及びデータ移行方法 | |
WO2016088372A1 (ja) | アクセス装置、マイグレーション装置、分散ストレージシステム、アクセス方法及びコンピュータ読み取り可能記録媒体 | |
US11016896B2 (en) | Reducing overhead of managing cache areas | |
US20230110067A1 (en) | Systems, methods, and devices for near storage elasticity | |
US10795814B2 (en) | Placement of local cache areas | |
US20230376238A1 (en) | Computing system for managing distributed storage devices, and method of operating the same | |
US20180052749A1 (en) | Information processing system and information processing method | |
JP2005301560A (ja) | クラスタファイルサーバ |