JP2013045379A - ストレージ制御方法、情報処理装置およびプログラム - Google Patents
ストレージ制御方法、情報処理装置およびプログラム Download PDFInfo
- Publication number
- JP2013045379A JP2013045379A JP2011184309A JP2011184309A JP2013045379A JP 2013045379 A JP2013045379 A JP 2013045379A JP 2011184309 A JP2011184309 A JP 2011184309A JP 2011184309 A JP2011184309 A JP 2011184309A JP 2013045379 A JP2013045379 A JP 2013045379A
- Authority
- JP
- Japan
- Prior art keywords
- key
- node
- data
- unit
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- 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/0608—Saving storage space on storage systems
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1012—Load balancing
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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】複数のノードへのデータの配置を柔軟化することができる。
【解決手段】制御部1bは、第1のキーと第1のデータとを取得したとき、第1のノード2に第1のキーと対応付けて第2のキーを示す第2のデータが格納され、第2のノード2aに第2のキーと対応付けて第1のデータが格納されるよう制御する。また、制御部1bは、第1のキーを指定したアクセス要求を取得したとき、第1のキーと対応付けて格納されているデータが第2のデータであることを検出し、第2のデータが示す第2のキーに基づいて、第2のノード2aに格納された第1のデータにアクセスする。
【選択図】図1
【解決手段】制御部1bは、第1のキーと第1のデータとを取得したとき、第1のノード2に第1のキーと対応付けて第2のキーを示す第2のデータが格納され、第2のノード2aに第2のキーと対応付けて第1のデータが格納されるよう制御する。また、制御部1bは、第1のキーを指定したアクセス要求を取得したとき、第1のキーと対応付けて格納されているデータが第2のデータであることを検出し、第2のデータが示す第2のキーに基づいて、第2のノード2aに格納された第1のデータにアクセスする。
【選択図】図1
Description
本発明はストレージ制御方法、情報処理装置およびプログラムに関する。
現在、分散ストレージシステムが利用されている。分散ストレージシステムは、ネットワークで接続された複数のストレージノードを備える。複数のストレージノードにデータを分散配置することで、データアクセスの高速化を図れる。分散ストレージシステムには、KVS(Key - Value Store)と呼ばれる手法を用いたものがある。KVSでは、データ(value)にキー(key)を付与し、キーとデータのペアを何れかのストレージノードに保存する。保存したデータにアクセスする際は、キーを指定する。キーに応じて異なるストレージノードにデータを格納することで、データを分散配置する。
なお、データの格納、取出しには他の方法も利用されている。例えば、データの探索に適した構造にB木がある。B木では、ノードは、子ノードにポイントするポインタを保持する。ノードがサブトリーに包含されるサブノードへのポインタを保持するようにした提案もある。また、例えば、メモリ上の領域に値を格納しておき、当該領域を示すポインタを所定の関数に与えて、当該領域から値を取出すこともできる。
キーに基づいてアクセス先のストレージノードが判定される分散ストレージシステムでは、キーとストレージノードとの対応関係を設定した後、ストレージノード間でデータ量や受付アクセス数に偏りが生じることがある。しかし、設定した対応関係に従ってデータの配置先ノードを選択している限り、偏りを解消することは困難となる。
一側面では、本発明は、データの配置を柔軟化することができるストレージ制御方法、情報処理装置およびプログラムを提供することを目的とする。
一実施態様では、キーと対応付けてデータを格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムが実行するストレージ制御方法が提供される。このストレージ制御方法では、第1のキーと第1のデータとを取得したとき、第1のキーに応じた第1のノードに第1のキーと対応付けて第2のキーを示す第2のデータを格納し、第2のノードに第2のキーと対応付けて第1のデータを格納する。第1のキーを指定したアクセス要求を取得したとき、第1のノードに第1のキーと対応付けて格納されているデータが第2のデータであることを検出し、第2のデータが示す第2のキーに基づいて、第2のノードに格納された第1のデータにアクセスする。
また、一実施態様では、キーと対応付けてデータを格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムに用いられる情報処理装置が提供される。この情報処理装置は、記憶部と制御部とを有する。記憶部は、キーとノードとの対応関係を示す情報であって、少なくとも第1のキーに第1のノードが対応し第2のキーに第2のノードが対応することを示す情報を記憶する。制御部は、第1のキーと第1のデータとを取得したとき、第1のノードに第1のキーと対応付けて第2のキーを示す第2のデータが格納され、第2のノードに第2のキーと対応付けて第1のデータが格納されるよう制御する。また、制御部は、第1のキーを指定したアクセス要求を取得したとき、第1のキーと対応付けて格納されているデータが第2のデータであることを検出し、第2のデータが示す第2のキーに基づいて、第2のノードに格納された第1のデータにアクセスする。
また、一実施態様では、コンピュータに実行させるプログラムであって、キーと対応付けてデータを格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムの制御に用いるプログラムが提供される。
一実施態様によれば、複数のノードへのデータの配置を柔軟化することができる。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、キー(key)と対応付けてデータ(value)を格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムである。この情報処理システムは、情報処理装置1、第1のノード2および第2のノード2aを含む。ノードとは、内蔵または外付けの記憶装置を備え、当該記憶装置にデータを保持できる情報処理装置である。情報処理装置1、第1のノード2および第2のノード2aは、ネットワークで接続されている。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、キー(key)と対応付けてデータ(value)を格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムである。この情報処理システムは、情報処理装置1、第1のノード2および第2のノード2aを含む。ノードとは、内蔵または外付けの記憶装置を備え、当該記憶装置にデータを保持できる情報処理装置である。情報処理装置1、第1のノード2および第2のノード2aは、ネットワークで接続されている。
情報処理装置1は、CPU(Central Processing Unit)などのプロセッサとRAM(Random Access Memory)などのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。情報処理装置1は、記憶部1a、および制御部1bを有する。
記憶部1aは、キーとノードとの対応関係を示す情報を記憶する。この情報には、第1のキー(key1)に第1のノード2が対応し第2のキー(key2)に第2のノード2aが対応することを示す情報が含まれる。記憶部1aは、RAMやHDD(Hard Disk Drive)によって実装されてもよい。
制御部1bは、第1のキー(key1)と第1のデータ(value1)とを取得する。すると、制御部1bは、第1のキー(key1)と対応付けて第2のキー(key2)を示す第2のデータ(value2)が第1のノード2に格納され、第2のキー(key2)と対応付けて第1のデータ(value1)が第2のノード2aに格納されるよう制御する。なお、第2のデータ(value2)は、第2のキー(key2)自体でもよいし、第2のキー(key2)自体でなくてもよい。例えば、第2のデータ(value2)は、第2のキー(key2)中の所定のプレフィックスを省略したデータでもよい。
また、制御部1bは、第1のキー(key1)を指定したアクセス要求を取得する。すると、制御部1bは、第1のキー(key1)と対応付けて格納されているデータが第2のデータ(value2)であることを検出する。そして、制御部1bは、第2のデータ(value2)が示す第2のキー(key2)に基づいて、第2のノード2aに格納された第1のデータ(value1)にアクセスする。
例えば、制御部1bは、次のような方法により第2のデータを検出することが考えられる。第1の方法は、制御部1bが、第2のデータを格納するとき、第2のデータであることを示す所定の制御情報(例えば、フラグ)も、第1のキーに対応付けて第1のノード2に設定しておく方法である。この場合、第1のキーに対応する当該制御情報に基づいて、第1のキーに対応するデータが第2のデータであることを検出できる。第2の方法は、第2のデータを検出するための所定のルール(所定の文字列を含むなど)を予め定義しておく方法である。この場合、第1のキーに対応するデータが当該ルールに合致するか否かにより、第2のデータを検出できる。
情報処理装置1によれば、制御部1bにより、第1のキーと第1のデータとが取得されたとき、第1のノード2に第1のキーと対応付けて第2のキーを示す第2のデータが格納され、第2のノード2aに第2のキーと対応付けて第1のデータが格納されるよう制御される。また、制御部1bにより、第1のキーを指定したアクセス要求が取得されたとき、第1のキーと対応付けて格納されているデータが第2のデータであることが検出され、第2のデータが示す第2のキーに基づいて、第2のノードに格納された第1のデータにアクセスされる。
これにより、複数のノードへのデータの配置を柔軟化することができる。具体的には、キーに基づいて配置先が決定されるKVSにおいて、第1のキーによりデータの配置先が決定されても、当該データの代わりに第2のキーを当該配置先に配置することで、データの実体を別の装置に配置できる。例えば、第1のキーにより決定された配置先の空き容量が少ないときに、データの実体を他のノードに配置すれば、データ量の偏りを分散できる。第2のキーは、単にデータへのリンクを示す情報であるため、データの実体よりもデータサイズが小さい可能性が高いためである。また、例えば、第1のキーにより決定された配置先の負荷が大きい時に、データの実体を他のノードに配置すれば、負荷を分散することもできる。
なお、制御部1bの機能は、第1のノード2および第2のノード2aが備えてもよい。その場合、例えば、第1のノード2が、自身への第1のデータ(value1)の書込み時に、(key,value)のペア(key1,value2)を自身に格納する。そして、第1のノード2が、(key,value)のペア(key2,value1)を第2のノード2aに格納させる。更に、第1のキー(key1)を指定したアクセス時には、第1のノード2が、第1のキー(key1)に対し、第2のデータ(value2)を検出する。すると、第1のノード2が、第2のデータ(value2)で示される第2のキー(key2)を指定して、第2のノード2aに格納された第1のデータ(value1)にアクセスする。このようにしても、同様にデータの配置を柔軟化できる。
[第2の実施の形態]
図2は、第2の実施の形態の分散ストレージシステムを示す図である。第2の実施の形態の分散ストレージシステムは、KVSの手法によりデータを複数のストレージノードに分散配置する。第2の実施の形態の分散ストレージシステムは、ストレージノード100,100a,100b、ディスク装置200,200a,200bおよびクライアント300,300aを含む。
図2は、第2の実施の形態の分散ストレージシステムを示す図である。第2の実施の形態の分散ストレージシステムは、KVSの手法によりデータを複数のストレージノードに分散配置する。第2の実施の形態の分散ストレージシステムは、ストレージノード100,100a,100b、ディスク装置200,200a,200bおよびクライアント300,300aを含む。
ネットワーク10には、ストレージノード100,100a,100bおよびクライアント300が接続されている。ネットワーク10はLAN(Local Area Network)でもよい。ネットワーク10はインターネットなどの広域ネットワークでもよい。
ストレージノード100には、ディスク装置200が接続されている。ストレージノード100aには、ディスク装置200aが接続されている。ストレージノード100bには、ディスク装置200bが接続されている。ストレージノード100,100a,100bとディスク装置200,200a,200bとの間のインタフェースには、例えばSCSI(Small Computer System Interface)やファイバチャネル(Fibre Channel)などを用いてもよい。ストレージノード100,100a,100bは、それぞれディスク装置200,200a,200bに対するデータの書込み(Write)、データの読出し(Read)およびデータの削除(Delete)などを実行するサーバコンピュータである。
ディスク装置200,200a,200bは、データを記憶する記憶装置である。ディスク装置200,200a,200bは、HDDやSSD(Solid State Drive)などの記憶デバイスを備える。ディスク装置200,200a,200bは、ストレージノード100,100a,100bに内蔵されてもよい。
クライアント300,300aは、分散ストレージシステムに格納されたデータにアクセスするクライアントコンピュータである。例えば、クライアント300,300aは、ユーザが操作する端末装置である。クライアント300,300aは、ストレージノード100,100a,100bに対し、データのアクセス要求を行う。アクセス要求には、データの書込み要求(Write要求)、データの読出し要求(Read要求)およびデータの削除要求(Delete要求)が含まれる。
ここで、ディスク装置200,200a,200bは、キー(key)とデータ(value)のペア(key,value)を記憶する。ストレージノード100,100a,100bは、キーを指定したデータのWrite要求があると、当該キーに対応するデータを書込む。ストレージノード100,100a,100bは、キーを指定したデータのRead要求があると、当該キーに対応するデータを読み出す。ストレージノード100,100a,100bは、キーを指定したデータのDelete要求があると、当該キーに対応するデータをキーとともに削除する。
ストレージノード100,100a,100bは、何れのストレージノードがデータを保持するかを、キーから算出されるハッシュ値に基づいて判断する。キーに対するハッシュ値は、例えば、MD5(Message Digest algorithm 5)を用いて算出できる。SHA(Secure Hash Algorithm)など他のハッシュ関数を用いてもよい。このように、キーに対するハッシュ値に基づいて担当のストレージノード(以下、担当ノードということがある)を判定する方法は、コンシステントハッシング(Consistent Hashing)と呼ばれることがある。
図3は、第2の実施の形態のストレージノードのハードウェア例を示す図である。ストレージノード100は、CPU101、RAM102、HDD103、ディスクI/F(InterFace)部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および通信部108を有する。各ユニットがストレージノード100のバスに接続されている。ストレージノード100a,100bおよびクライアント300,300aもストレージノード100と同様のハードウェアを用いて実装できる。
CPU101は、ストレージノード100の情報処理を制御するプロセッサである。CPU101は、HDD103に記憶されているプログラムやデータの少なくとも一部を読出し、RAM102に展開してプログラムを実行する。なお、ストレージノード100は、複数のプロセッサを設けて、プログラムを分散して実行してもよい。
RAM102は、CPU101が実行するプログラムや処理に用いるデータを一時的に記憶する揮発性メモリである。なお、ストレージノード100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えていてもよい。
HDD103は、OS(Operating System)プログラムやアプリケーションプログラムなどのプログラムおよびデータを記憶する不揮発性の記憶装置である。HDD103は、CPU101の命令に従って、内蔵の磁気ディスクに対してデータの読み書きを行う。なお、ストレージノード100は、HDD以外の種類の不揮発性の記憶装置(例えば、SSDなど)を備えてもよく、複数の記憶装置を備えていてもよい。
ディスクI/F部104は、ディスク装置200と接続するためのインタフェースである。ディスクI/F部104は、例えば、SCSIやファイバチャネルなどのインタフェースである。
画像信号処理部105は、CPU101の命令に従って、ストレージノード100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイを用いることができる。
入力信号処理部106は、ストレージノード100に接続された入力デバイス12から入力信号を取得し、CPU101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、記録媒体13に記録されたプログラムやデータを読み取る駆動装置である。記録媒体13として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)を使用できる。ディスクドライブ107は、例えば、CPU101の命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信部108は、ネットワーク10を介してストレージノード100,100a,100bおよびクライアント300,300aと通信を行う通信インタフェースである。通信部108は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
図4は、第2の実施の形態のソフトウェア例を示すブロック図である。図4に示すユニットの一部または全部は、ストレージノード100,100a,100bおよびクライアント300,300aが実行するプログラムのモジュールであってもよい。図4に示すユニットの一部または全部は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの電子回路であってもよい。ストレージノード100a,100bもストレージノード100と同様のユニットを用いて実装できる。クライアント300aもクライアント300と同様のユニットを用いて実装できる。
ストレージノード100は、記憶部110、ネットワークI/O(Input / Output)部120、ディスクI/O部130、アクセス受付部140、ノード決定部150および他ノードアクセス部160を有する。
記憶部110は、担当管理テーブルおよびポインタ管理テーブルを記憶する。担当管理テーブルは、ハッシュ値に対する担当ノードを管理するための情報である。ポインタ管理テーブルは、ポインタキー(pointer key)と、当該ポインタキーと対応付けたデータを投入したストレージノード(以下、投入先ノードということがある)を管理するための情報である。ポインタキーは、投入先ノードへのリンクを定義するための情報である。
ネットワークI/O部120は、クライアント300,300aからアクセス要求を受信し、アクセス受付部140に出力する。ネットワークI/O部120は、他ノードアクセス部160から取得したストレージノード100a,100bへのアクセス要求をストレージノード100a,100bへ送信する。他ノードアクセス部160は、ストレージノード100a,100bから受信したデータを他ノードアクセス部160に出力する。ネットワークI/O部120は、アクセス受付部140および他ノードアクセス部160から取得したデータをクライアント300,300aに送信する。
ディスクI/O部130は、ノード決定部150から取得したキーおよびデータのペアをディスク装置200に書込む。ディスクI/O部130は、ノード決定部150から指定されたキーに応じたデータをディスク装置200から読出し、ノード決定部150に出力する。
アクセス受付部140は、ネットワークI/O部120から取得したアクセス要求をノード決定部150に出力する。アクセス受付部140は、ノード決定部150から取得したデータを、ネットワークI/O部120を介して、アクセス要求元のクライアント300,300aへ応答する。
ノード決定部150は、記憶部110に記憶された担当管理テーブルに基づいて、アクセス先の担当ノードを判断する。ノード決定部150は、自ノード(ストレージノード100)が担当ノードであれば、キーに対するデータアクセス(書込み、読出し、削除など)をディスクI/O部130に指示する。ノード決定部150は、ディスクI/O部130によるアクセス結果(書込み完了や読出しデータなど)をアクセス受付部140に出力する。ノード決定部150は、他ノード(ストレージノード100a,100b)が担当ノードであれば、他ノードへのアクセス要求を行うよう他ノードアクセス部160に指示する。
ここで、ノード決定部150は、Write要求に対する担当ノードが自ノードの場合、自ノードの利用状況に応じて、データの実体を格納する投入先ノードを決定する。ノード決定部150は、自ノード以外を投入先ノードとして決定した場合、当該投入先ノードへリンクするためのポインタキーを生成し、ディスク装置200にはキーと対応付けたポインタキーを格納する。そして、ノード決定部150は、ポインタキーと対応付けたデータの実体を記憶するよう、投入先ノードに依頼する。自ノードが投入先ノードであれば、指定されたキーに対応付けたデータをディスク装置200に格納する。
また、ノード決定部150は、Read要求に対する担当ノードが自ノードで、読み出されたデータがポインタキーである場合、記憶部110に記憶されたポインタ管理テーブルに基づいて、投入先ノードを判断する。ノード決定部150は、他ノードアクセス部160により、ポインタキーに対するデータを投入先ノードから取得させ、要求元のクライアント300,300aに応答させる。読出したデータがポインタキーでなければ、当該データを要求元のクライアント300,300aに応答する。
更に、ノード決定部150は、Delete要求に対する担当ノードが自ノードで、指定されたキーに対するデータがポインタキーである場合、記憶部110に記憶されたポインタ管理テーブルに基づいて、投入先ノードを判断する。ノード決定部150は、他ノードアクセス部160により、ポインタキーに対するデータを投入先ノードに削除させる。読出したデータがポインタキーでなければ、指定されたキーに対応付けたデータをディスク装置200から削除する。
他ノードアクセス部160は、ノード決定部150の指示により、他ノードへのアクセス要求を生成し、ネットワークI/O部120を介して、他ノードへ送信する。また、他ノードアクセス部160は、ネットワークI/O部120を介して、他ノードから受信したデータを、アクセス要求元のクライアント300,300aへ応答する。
クライアント300は、記憶部310、ネットワークI/O部320およびアクセス部330を有する。
記憶部310は、クライアント300が扱うデータを記憶する。
記憶部310は、クライアント300が扱うデータを記憶する。
ネットワークI/O部320は、アクセス部330から取得したアクセス要求をストレージノード100,100a,100bの何れか(例えば、ストレージノード100)に送信する。ネットワークI/O部320は、当該アクセス要求に対するストレージノード100,100a,100bからの応答を受信し、アクセス部330に出力する。
アクセス部330は、所定のアプリケーションによるデータアクセスに応じて、アクセス要求を生成し、ネットワークI/O部320に出力する。アクセス要求には、上述したようにWrite要求、Read要求およびDelete要求が含まれる。アクセス部330は、各アクセス要求にアクセス対象のデータに対するキー(key)を含める。キーは、例えば、アプリケーションにより指定される。アクセス部330にデータアクセスを行わせるアプリケーションは、図4では図示を省略している。当該アプリケーションは、クライアント300上で、例えばクライアント300が実行するプログラムにより実装されるものでもよいし、他の情報処理装置上に実装されるものでもよい。
なお、第2の実施の形態のストレージノード100は、第1の実施の形態の情報処理装置1の一例である。ノード決定部150および他ノードアクセス部160は、制御部1bの一例である。
図5は、第2の実施の形態のハッシュ値の担当範囲の割当例を示す図である。第2の実施の形態の分散ストレージシステムでは、利用可能なハッシュ値の全範囲は“0〜99”である。ただし、“99”の次の値は“0”である。当該全範囲を3つに分割した範囲それぞれがストレージノード100,100a,100bに割り当てられている。ここで、ラベル“A”は、ストレージノード100の識別情報である。ラベル“B”は、ストレージノード100aの識別情報である。ラベル“C”は、ストレージノード100bの識別情報である。各ラベルの位置は、各担当範囲の開始位置である。
図5では、各ラベル位置に対応する値を含むハッシュ値範囲R1,R2,R3が示されている。ハッシュ値範囲R1は“10〜39”であり、ストレージノード100の担当範囲である。ハッシュ値範囲R2は“40〜89”であり、ストレージノード100aの担当範囲である。ハッシュ値範囲R3は“90〜99”、“0〜9”であり、ストレージノード100bの担当範囲である。ハッシュ値範囲R3は、“99”および“0”を跨いだ領域である。
第2の実施の形態の分散ストレージシステムでは、担当範囲の一端の値を、ストレージノード100,100a,100bに対して指定することで、ストレージノード100,100a,100bの担当範囲を割り当てる。例えば、担当範囲の両端の値のうち小さい方(開始位置)を指定する場合、ストレージノード100にハッシュ値“10”を、ストレージノード100aにハッシュ値“40”を指定する。これにより、ストレージノード100の担当範囲が“10〜39”となる。ハッシュ値範囲R3のように、当該範囲が“0”を跨ぐ場合には、例外として、両端の値のうち大きい方が開始位置となる。この場合、例えば、ハッシュ値“90”を指定することで、“0”を跨いだ範囲を指定できる。
なお、担当範囲の両端の値のうち大きい方(終了位置)を指定して、担当範囲を割り当ててもよい。例えば、ストレージノード100にハッシュ値“39”を、ストレージノード100aにハッシュ値“89”を、ストレージノード100bにハッシュ値“9”を指定する。すると、図5で示したハッシュ値範囲R1,R2,R3と同等の担当範囲を、ストレージノード100,100a,100bに割り当てることができる。この場合も、“0”を跨ぐ範囲については、例外として、両端の値のうち小さい方が終了位置となる。よって、両端の値のうち小さい方を指定することで、“0”を跨いだ範囲を指定できる。
以下の説明では、ストレージノード100,100a,100bに、担当範囲の開始位置を指定することで、当該担当範囲を割り当てるものとする。
図6は、第2の実施の形態の担当管理テーブルの例を示す図である。担当管理テーブル111は、記憶部110に格納される。担当管理テーブル111には、nodeおよび開始位置の項目が設けられている。
図6は、第2の実施の形態の担当管理テーブルの例を示す図である。担当管理テーブル111は、記憶部110に格納される。担当管理テーブル111には、nodeおよび開始位置の項目が設けられている。
nodeの項目には、ストレージノードのラベルが登録される。開始位置の項目には、担当範囲の開始位置に対応する値が登録される。担当管理テーブル111は、図5の担当割当を定義したものである。
図7は、第2の実施の形態のポインタ管理テーブルの例を示す図である。ポインタ管理テーブル112は、記憶部110に格納される。ポインタ管理テーブル112には、pinter keyおよびnodeの項目が設けられている。
pointer keyの項目には、ポインタキーが登録される。nodeの項目には、ストレージノードのラベルが登録される。例えば、pinter keyが“pointer01”でnodeが“B”であれば、当該“pointer01”はストレージノード100bへのリンクである。
図8は、第2の実施の形態のデータストアの第1の例を示す図である。データストア210は、ディスク装置200に格納される。データストア210では、データ(value)が、キー(key)に対応付けて格納される。更に、データ(value)がポインタキーであるか否かを示すフラグ(flag)が、キー(key)に対応付けて格納される。フラグが“true”であれば、データはポインタキーである。フラグが“false”であれば、データはポインタキーでない。
例えば、キー“key01”ではフラグが“true”である。よって、キー“key01”に対するデータ“pointer01”はポインタキーである。また、例えば、キー“key02”ではフラグが“false”である。よって、キー“key02”に対するデータ“value02”はポインタキーではない。ノード決定部150は、データの書込みを行う際に、キーに対するフラグの設定も行う。
図9は、第2の実施の形態のデータストアの第2の例を示す図である。データストア210aは、ディスク装置200aに格納される。データストア210aのデータ構造は、データストア210と同一である。例えば、データストア210aでは、キー“pointer01”ではフラグが“false”である。よって、キー“pointer01”に対するデータ“value01”はポインタキーではない。
図10は、第2の実施の形態のWrite処理を示すフローチャートである。以下、図10に示す処理をフローチャートに沿って説明する。
(ステップS11)ネットワークI/O部120は、クライアント300からWrite要求を受信する。ネットワークI/O部120は、アクセス受付部140を介して、当該Write要求をノード決定部150に出力する。例えば、Write要求には、キー“key01”およびデータ“value01”が含まれる。
(ステップS11)ネットワークI/O部120は、クライアント300からWrite要求を受信する。ネットワークI/O部120は、アクセス受付部140を介して、当該Write要求をノード決定部150に出力する。例えば、Write要求には、キー“key01”およびデータ“value01”が含まれる。
(ステップS12)ノード決定部150は、Write要求に含まれるキーに基づいてハッシュ値を計算する。
(ステップS13)ノード決定部150は、記憶部110に記憶された担当管理テーブル111に基づいて、算出したハッシュ値の担当ノードが自ノードであるか否かを判定する。担当が自ノードでない場合、処理をステップS14に進める。担当が自ノードである場合、処理をステップS15に進める。
(ステップS13)ノード決定部150は、記憶部110に記憶された担当管理テーブル111に基づいて、算出したハッシュ値の担当ノードが自ノードであるか否かを判定する。担当が自ノードでない場合、処理をステップS14に進める。担当が自ノードである場合、処理をステップS15に進める。
(ステップS14)ノード決定部150は、ネットワークI/O部120を介して、担当ノードにWrite要求を転送する。当該Write要求を受信した担当ノードは、自身に接続されたディスク装置にデータを書込み、クライアント300に結果を応答する。そして、処理を終了する。
(ステップS15)ノード決定部150は、データの実体を投入する投入先ノードを決定するか否かを判定する。決定する場合、処理をステップS16に進める。決定しない場合、処理をステップS18に進める。ノード決定部150は、投入先ノードを決定するか否かを、例えば、次の(1)(2)の何れか、または、両方の基準により判断できる。(1)ディスク装置200の空き容量が所定値よりも小さい。(2)投入するデータのサイズが閾値よりも大きい。両方の基準を用いる場合、例えば、両方の条件が満たされたときに投入先ノードを決定する、あるいは、何れか一方の条件が満たされたときに投入先ノードを決定する、などと判断することが考えられる。なお、他の基準を用いてもよい。
(ステップS16)ノード決定部150は、投入先ノードを決定する。手順の詳細は後述する。
(ステップS17)ノード決定部150は、決定した投入先ノードが自ノードであるか否かを判定する。投入先が自ノードである場合、処理をステップS18に進める。投入先が自ノードではない場合、処理をステップS19に進める。
(ステップS17)ノード決定部150は、決定した投入先ノードが自ノードであるか否かを判定する。投入先が自ノードである場合、処理をステップS18に進める。投入先が自ノードではない場合、処理をステップS19に進める。
(ステップS18)ノード決定部150は、ディスク装置200へのデータ(value)の書込みをディスクI/O部130に指示する。同時に、データに対応するキー(key)およびフラグ(flag)の書込みを指示する。キー(key)は、Write要求で指定されたキーである。フラグ(flag)は、“false”である。ディスクI/O部130は、(key,value,flag)の組をディスク装置200に書込み、結果をノード決定部150に応答する。すると、ノード決定部150は、ネットワークI/O部120を介して、クライアント300に書込み結果を応答する。この場合、例えば、データストア210に、(“key01”,“value01”,“false”)の組が書込まれる。そして、処理を終了する。
(ステップS19)ノード決定部150は、ポインタキー(pointer key)を求める。手順の詳細は後述する。例えば、ポインタキー“pointer01”が求められる。
(ステップS20)ノード決定部150は、ポインタキーとWrite対象のデータ(value)とのペアの書込みを投入先ノードに依頼するように、他ノードアクセス部160に指示する。他ノードアクセス部160は、ネットワークI/O部120を介して、投入先ノードに当該依頼を送信する。投入先ノードは、指定された(key,value,flag)の組を自身に接続されたディスク装置に格納する。ここで、flagの値は“false”である。例えば、投入先ノードがストレージノード100aである場合、データストア210aに、(“pointer01”,“value01”,“false”)の組が書込まれる。他ノードアクセス部160は、投入先ノードから書込み結果の応答を受信する。ノード決定部150は、書込み依頼したポインタキーと投入先ノードのラベルとを対応付けて、記憶部110に記憶されたポインタ管理テーブル112に記録する。
(ステップS21)ノード決定部150は、ディスク装置200へのポインタキーの書込みをディスクI/O部130に指示する。キー(key)は、Write要求で指定されたキーである。データ(value)は、ステップS19で決定したポインタキーである。フラグ(flag)は、“true”である。ディスクI/O部130は、(key,pointer key,flag)の組をディスク装置200に書込み、結果をノード決定部150に応答する。この場合、例えば、データストア210に、(“key01”、“pointer01”,“true”)の組が書込まれる。ノード決定部150は、ネットワークI/O部120を介して、クライアント300に書込み結果を応答する。
このように、ストレージノード100は、データの実体を他のノードに配置できる。その場合、ストレージノード100には、データの実体の代わりに、他のノードへのリンクを示すポインタキーをディスク装置200に格納する。そして、他のノードには、当該ポインタキーと対応付けたデータの実体を格納させる。データのアップデートの際は、ポインタキーによるリンクを辿ってデータの実体を更新する。
なお、ステップS15では、データの投入先ノードを再決定するか否かの基準(1)(2)を例示したが、他の基準により判断してもよい。例えば、自ノードの負荷を示す指標(例えば、CPU利用率やアクセス数など)が所定期間、連続して所定値よりも大きい場合に、投入先ノードを決定するようにしてもよい。
次に、ステップS16の手順を説明する。
図11は、第2の実施の形態の投入先ノード決定処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
図11は、第2の実施の形態の投入先ノード決定処理を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
(ステップS31)ノード決定部150は、ストレージノード100,100a,100bそれぞれに接続されたディスク装置200,200a,200bの使用状況を取得する。使用状況には、各ノードに接続されたディスク装置の使用済容量と空き容量とが含まれる。例えば、ノード決定部150は、ストレージノード100,100a,100bから定期的に使用状況を取得して記憶部110に格納しておくことで、記憶部110から当該使用状況を取得できる。また、例えば、ノード決定部150は、当該ステップS31において、ストレージノード100,100a,100bから現在の使用状況を取得してもよい。
(ステップS32)ノード決定部150は、空き容量が所定値以上で使用済容量が最小のノードを、投入先ノードとして選択する。
このように、ストレージノード100は、ストレージノード100,100a,100bのうちから容量に余裕のあるノードを投入先ノードとする。ただし、他の基準により投入先ノードを決定してもよい。当該基準は、運用方針に応じて選択できる。例えば以下の(A)(B)の各目的に応じて、(A1)〜(A3)、(B1)〜(B3)の何れか、または、複数の基準により投入先ノードを選択することが考えられる。
このように、ストレージノード100は、ストレージノード100,100a,100bのうちから容量に余裕のあるノードを投入先ノードとする。ただし、他の基準により投入先ノードを決定してもよい。当該基準は、運用方針に応じて選択できる。例えば以下の(A)(B)の各目的に応じて、(A1)〜(A3)、(B1)〜(B3)の何れか、または、複数の基準により投入先ノードを選択することが考えられる。
(A)ディスク装置200,200a,200bのデータ量を分散したい場合
(A1)空き容量が一定以上あり、使用済容量が最小のノードを選択する。
(A2)空き容量が最大のノードを選択する。
(A1)空き容量が一定以上あり、使用済容量が最小のノードを選択する。
(A2)空き容量が最大のノードを選択する。
(A3)ディスク装置の全容量に対する使用割合が最小のノードを選択する。
(B)負荷を分散したい場合
(B1)ディスク装置のbusy率が最小のノードを選択する。
(B)負荷を分散したい場合
(B1)ディスク装置のbusy率が最小のノードを選択する。
(B2)I/O数が最小のノードを選択する。
(B3)ネットワーク使用率が最小のノードを選択する。
何れの選択方法を採用するかは、例えば、分散ストレージシステムの管理者によって各ストレージノードに予め設定される。
(B3)ネットワーク使用率が最小のノードを選択する。
何れの選択方法を採用するかは、例えば、分散ストレージシステムの管理者によって各ストレージノードに予め設定される。
複数の基準を用いる場合には、複数の基準が選択される。例えば、(A1)と(A2)を組み合わせる場合、(A1)の「使用済容量が最小」という条件に幅をもたせて複数のノードを選択可能とする(例えば、使用済容量が小さいノードを3つ選択するなど)。そして、選択した複数のノードの中から(A2)の「空き容量が最大」のノードを選択することが考えられる。
また、例えば、(A3)と(B1)を組み合わせる場合、(A3)の「ディスク装置の使用割合が最小」という条件に幅をもたせて複数のノードを選択可能とする(例えば、使用割合が小さいノードを5つ選択するなど)。そして、選択した複数のノードの中から(B1)の「busy率最小」のノードを選択することが考えられる。
ノード決定部150は、各基準に応じた判断が行えるように、ストレージノード100,100a,100bから、基準に応じた情報(ディスク装置の空き容量やbusy率など)を含む使用状況を取得する。
次に、図10のステップS19の手順を説明する。
図12は、第2の実施の形態のポインタキー決定処理を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
図12は、第2の実施の形態のポインタキー決定処理を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
(ステップS41)ノード決定部150は、乱数を発生させる。ノード決定部150は、所定の疑似乱数生成アルゴリズムにより、乱数を生成できる。ここで発生させた乱数は、ポインタキー候補である。
(ステップS42)ノード決定部150は、投入先ノードで既にポインタキー候補がポインタキーとして使用済であるか否かを判定する。使用済の場合、処理をステップS41に進める。未使用の場合、処理をステップS43に進める。例えば、ノード決定部150は、ポインタキー候補と同一のポインタキーと対応付けたデータを、データストアに格納済であるかを投入先ノードに問い合わせることで、当該判定を行える。格納済であれば、当該ポインタキー候補は使用済である。未格納であれば、当該ポインタキー候補は未使用である。
(ステップS43)ノード決定部150は、ステップS41で生成した乱数をポインタキーに決定する。
このようにして、ストレージノード100は、1つの投入先ノードに対して重複しないようにポインタキーを決定する。
このようにして、ストレージノード100は、1つの投入先ノードに対して重複しないようにポインタキーを決定する。
ここで、ポインタキーとして、通常のキーから算出されるハッシュ値と衝突しないものを選ぶことが望ましい。例えば、当該ハッシュ値の数値列とは異なる桁数で乱数を発生させてポインタキーを決定することが好ましい。
図13は、第2の実施の形態のRead処理を示すフローチャートである。以下、図13に示す処理をステップ番号に沿って説明する。
(ステップS51)ネットワークI/O部120は、クライアント300からRead要求を受信する。ネットワークI/O部120は、アクセス受付部140を介して、当該Read要求をノード決定部150に出力する。例えば、Read要求には、キー“key01”が含まれる。
(ステップS51)ネットワークI/O部120は、クライアント300からRead要求を受信する。ネットワークI/O部120は、アクセス受付部140を介して、当該Read要求をノード決定部150に出力する。例えば、Read要求には、キー“key01”が含まれる。
(ステップS52)ノード決定部150は、Read要求に含まれるキーに基づいてハッシュ値を計算する。
(ステップS53)ノード決定部150は、記憶部110に記憶された担当管理テーブル111に基づいて、算出したハッシュ値の担当ノードが自ノードであるか否かを判定する。担当が自ノードでない場合、処理をステップS54に進める。担当が自ノードである場合、処理をステップS55に進める。
(ステップS53)ノード決定部150は、記憶部110に記憶された担当管理テーブル111に基づいて、算出したハッシュ値の担当ノードが自ノードであるか否かを判定する。担当が自ノードでない場合、処理をステップS54に進める。担当が自ノードである場合、処理をステップS55に進める。
(ステップS54)ノード決定部150は、ネットワークI/O部120を介して、担当ノードにRead要求を転送する。当該Read要求を受信した担当ノードは、自身に接続されたディスク装置からデータを読出し、クライアント300に読出したデータを応答する。そして、処理を終了する。
(ステップS55)ノード決定部150は、Read要求に含まれるキー(key)に対応するデータ(value)をディスク装置200のデータストア210から取得する。例えば、キー“key01”に対してデータ“pointer01”を取得する。
(ステップS56)ノード決定部150は、データ(value)がポインタキーであるか否かを判定する。データがポインタキーでない場合、処理をステップS57に進める。データがポインタキーである場合、処理をステップS58に進める。データがポインタキーであるか否かは、キー(key)に対応するフラグ(flag)に基づいて判定できる。フラグが“true”であれば、ポインタキーである。フラグが“false”であれば、ポインタキーでない。
(ステップS57)ノード決定部150は、ステップS55で取得したデータをクライアント300に応答する。そして、処理を終了する。
(ステップS58)ノード決定部150は、記憶部110に記憶されたポインタ管理テーブル112を参照し、ステップS55でデータ(value)として取得したポインタキーに基づいて、投入先ノードを特定する。例えば、ポインタキー“pointer01”であれば、投入先ノードはストレージノード100a(ラベル“B”)である。
(ステップS58)ノード決定部150は、記憶部110に記憶されたポインタ管理テーブル112を参照し、ステップS55でデータ(value)として取得したポインタキーに基づいて、投入先ノードを特定する。例えば、ポインタキー“pointer01”であれば、投入先ノードはストレージノード100a(ラベル“B”)である。
(ステップS59)ノード決定部150は、ポインタキーをキーとして指定して、投入先ノードからデータ(value)を取得するよう他ノードアクセス部160に依頼する。他ノードアクセス部160は、当該依頼に応じたRead要求を生成し、ネットワークI/O部120を介して投入先ノードに送信し、投入先ノードからポインタキーと対応付けられたデータを取得する。例えば、他ノードアクセス部160は、ポインタキー“pointer01”に対してデータ“value01”をストレージノード100aから取得する。
(ステップS60)他ノードアクセス部160は、ネットワークI/O部120を介して、投入先ノードから取得したデータをクライアント300に応答する。
このように、ストレージノード100は、Read要求に含まれるキーに対し、データストア210からポインタキーを取得した場合、ポインタキーに基づいて投入先ノードを特定する。そして、当該ポインタキーに対応付けたデータを投入先ノードから取得し、クライアント300に応答する。
このように、ストレージノード100は、Read要求に含まれるキーに対し、データストア210からポインタキーを取得した場合、ポインタキーに基づいて投入先ノードを特定する。そして、当該ポインタキーに対応付けたデータを投入先ノードから取得し、クライアント300に応答する。
図14は、第2の実施の形態のDelete処理を示すフローチャートである。以下、図14に示す処理をステップ番号に沿って説明する。
(ステップS61)ネットワークI/O部120は、クライアント300からDelete要求を受信する。ネットワークI/O部120は、アクセス受付部140を介して、当該Delete要求をノード決定部150に出力する。例えば、Delete要求には、キー“key01”が含まれる。
(ステップS61)ネットワークI/O部120は、クライアント300からDelete要求を受信する。ネットワークI/O部120は、アクセス受付部140を介して、当該Delete要求をノード決定部150に出力する。例えば、Delete要求には、キー“key01”が含まれる。
(ステップS62)ノード決定部150は、Delete要求に含まれるキーに基づいてハッシュ値を算出する。
(ステップS63)ノード決定部150は、記憶部110に記憶された担当管理テーブル111に基づいて、算出したハッシュ値の担当ノードが自ノードであるか否かを判定する。担当が自ノードでない場合、処理をステップS64に進める。担当が自ノードである場合、処理をステップS65に進める。
(ステップS63)ノード決定部150は、記憶部110に記憶された担当管理テーブル111に基づいて、算出したハッシュ値の担当ノードが自ノードであるか否かを判定する。担当が自ノードでない場合、処理をステップS64に進める。担当が自ノードである場合、処理をステップS65に進める。
(ステップS64)ノード決定部150は、ネットワークI/O部120を介して、担当ノードにDelete要求を転送する。当該Delete要求を受信した担当ノードは、自身に接続されたディスク装置からキーとデータとのペアを削除し、削除結果をクライアント300に応答する。そして、処理を終了する。
(ステップS65)ノード決定部150は、Delete要求に含まれるキー(key)に対応するデータ(value)をディスク装置200のデータストア210から取得する。例えば、キー“key01”に対してデータ“pointer01”を取得する。
(ステップS66)ノード決定部150は、データ(value)がポインタキーであるか否かを判定する。データがポインタキーでない場合、処理をステップS67に進める。データがポインタキーである場合、処理をステップS68に進める。データがポインタキーであるか否かは、図13のステップS56と同様にして判断できる。
(ステップS67)ノード決定部150は、ステップS65で取得したデータの削除を、ディスクI/O部130に指示する。ディスクI/O部130は、データストア210から、当該(key,value,flag)の組を削除する。ノード決定部150は、ディスクI/O部130による削除結果をクライアント300に応答する。そして、処理を終了する。
(ステップS68)ノード決定部150は、記憶部110に記憶されたポインタ管理テーブル112を参照し、ステップS65でデータ(value)として取得したポインタキーに基づいて、投入先ノードを特定する。例えば、ポインタキー“pointer01”であれば、投入先ノードはストレージノード100a(ラベル“B”)である。
(ステップS69)ノード決定部150は、ポインタキーをキーとして指定して、投入先ノードにデータ(value)の削除要求をするように他ノードアクセス部160に依頼する。他ノードアクセス部160は、当該依頼に応じたDelete要求を生成し、ネットワークI/O部120を介して投入先ノードに送信して、投入先ノードにポインタキーと対応付けられたデータを削除させる。例えば、他ノードアクセス部160は、キー“pointer01”を指定したDelete要求をストレージノード100aに送信する。すると、ストレージノード100aのデータストア210aから(key,value,flag)の組(“pointer01”,“value01”,“false”)が削除される。他ノードアクセス部160は、投入先ノードから削除結果を受信する。
(ステップS70)ノード決定部150は、ステップS65で取得したポインタキーのレコードをポインタ管理テーブル112から削除する。ノード決定部150は、当該ポインタキーの削除を、ディスクI/O部130に指示する。ディスクI/O部130は、データストア210から、当該(key,value,flag)の組を削除する。例えば、データストア210から(“key01”,“pointer01”,“true”)の組が削除される。
このようにして、ストレージノード100は、Delete要求に含まれるキーに対し、データストア210からポインタキーを取得した場合、ポインタキーに基づいて投入先ノードを特定する。そして、当該ポインタキーに対応付けたデータを投入先ノードに削除させ、ストレージノード100自身が保持するポインタキーも削除する。
以上のように第2の実施の形態のストレージノード100,100a,100bは、キーから算出されるハッシュ値により担当ノードが決定される場合でも、データの代わりに、キーと対応付けたポインタキーを担当ノードに格納する。そして、ポインタキーと対応付けたデータの実体を他のノードに配置する。これにより、データ配置の制限を緩和できる。
例えば、ポインタキーは単にリンクを示す情報であるため、データの実体よりもデータサイズが小さい可能性が高い。このため、担当ノードの空き容量が少ないときにデータの実体を他のノードに配置すれば、データ量の偏りを分散できる。また、例えば、担当ノードの負荷が大きい時に、データの実体を他のノードに配置すれば、負荷を分散することもできる。
更に、データの実体を投入する他のノード(投入先ノード)の選択方法として、運用に応じた基準を選択できる。例えば、データ量を分散したい場合や、負荷を分散したい場合など、目的ごとに種々の基準が考えられる。これにより、ストレージノード100,100a,100bにおけるデータ量の分散や負荷の分散を一層容易に行える。
なお、データ(value)の設定内容がポインタキーであるかを判断する方法としてフラグを用いたが別の方法を用いてもよい。例えば、ポインタキーが予め所定の文字列を含むことを定義しておけば、当該文字列を含むか否かに応じて、データ(value)がポインタキーであるか否かを判断できる。
[第3の実施の形態]
以下、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
以下、第3の実施の形態を説明する。前述の第2の実施の形態との相違点を主に説明し、同様の事項は説明を省略する。
第2の実施の形態では、担当ノードや投入先ノードの判断をストレージノード100,100a,100bが実行するものとした。一方、クライアント300,300aが当該判断を行ってもよい。そこで、第3の実施の形態では、クライアント300,300aが当該判断を行う場合を例示する。
ここで、第3の実施の形態の分散ストレージシステムの構成は、図2で説明した第2の実施の形態の分散ストレージシステムの構成と同様である。また、第3の実施の形態のストレージノードおよびクライアントのハードウェア例は、図3で説明した第2の実施の形態のストレージノード100のハードウェア例と同様である。第3の実施の形態では、特に断らない限り、第2の実施の形態で用いた符号・名称と同一の符号・名称により、同一の構成を指し示すものとする。ただし、第3の実施の形態では、各装置のソフトウェア例が第2の実施の形態とは異なる。
図15は、第3の実施の形態のソフトウェア例を示すブロック図である。図15に示すユニットの一部または全部は、ストレージノード100,100a,100bおよびクライアント300,300aが実行するプログラムのモジュールであってもよい。図15に示すユニットの一部または全部は、FPGAやASICなどの電子回路であってもよい。ストレージノード100a,100bもストレージノード100と同様のユニットを用いて実装できる。クライアント300aもクライアント300と同様のユニットを用いて実装できる。
ストレージノード100は、記憶部110a、ネットワークI/O部120a、ディスクI/O部130aおよびアクセス受付部140aを有する。
記憶部110aは、担当管理テーブル111を記憶する。
記憶部110aは、担当管理テーブル111を記憶する。
ネットワークI/O部120aは、クライアント300,300aから受信したデータをアクセス受付部140aに出力する。ネットワークI/O部120aは、アクセス受付部140aから取得したデータをクライアント300,300aに送信する。クライアント300,300aとの通信を中継する。
ディスクI/O部130aは、アクセス受付部140aから取得したデータをディスク装置200へ書込む。ディスクI/O部130aは、アクセス受付部140aからの指示に応じて、ディスク装置200からデータを読出し、アクセス受付部140aに出力する。
アクセス受付部140aは、クライアント300,300aによるデータアクセスを受け付け、アクセス内容に応じて、ディスク装置200に対するデータの書込み、読出し、削除などを実行する。また、アクセス受付部140aは、クライアント300,300aからの担当ノードの問い合わせに応じて、記憶部110aに記憶された担当管理テーブル111を参照し、担当ノードを応答する。
クライアント300は、記憶部310a、ネットワークI/O部320aおよびアクセス部330aを有する。
記憶部310aは、ポインタ管理テーブルを記憶する。ポインタ管理テーブルの例は、図7で説明した第2の実施の形態のポインタ管理テーブル112と同様である。
記憶部310aは、ポインタ管理テーブルを記憶する。ポインタ管理テーブルの例は、図7で説明した第2の実施の形態のポインタ管理テーブル112と同様である。
ネットワークI/O部320aは、アクセス部330aから取得したアクセス要求をストレージノード100,100a,100bの何れか(例えば、ストレージノード100)に送信する。ネットワークI/O部320aは、当該アクセス要求に対するストレージノード100,100a,100bからの応答を受信し、アクセス部330aに出力する。
アクセス部330aは、所定のアプリケーションによるデータアクセスに応じて、アクセス要求を生成し、ネットワークI/O部320aに出力する。当該アクセス要求には、Write要求、Read要求およびDelete要求が含まれる。アクセス部330aは、各アクセス要求にアクセス対象のデータに対するキー(key)を含める。キーは、例えば、アプリケーションにより指定される。アクセス部330aにデータアクセスを行わせるアプリケーションは、図15では図示を省略している。当該アプリケーションは、クライアント300上で、例えばクライアント300が実行するプログラムにより実装されるものでもよいし、他の情報処理装置上に実装されるものでもよい。
ここで、アクセス部330aは、ストレージノード100,100a,100bの何れかに担当ノードを問い合わせて、キーから算出されるハッシュ値を担当する担当ノードを判断できる。アクセス部330aは、データのWrite時には、担当ノードの利用状況に応じて、データの実体を格納する投入先ノードを決定する。アクセス部330aは、担当ノード以外のノードを投入先ノードとして決定した場合、当該投入先ノードへリンクするためのポインタキーを生成し、担当ノードには、キーと対応付けたポインタキーを格納する。そして、アクセス部330aは、ポインタキーと対応付けたデータの実体を投入先ノードに格納する。担当ノードを投入先ノードとする場合は、当該担当ノードに指定されたキーと対応付けたデータを格納する。
また、アクセス部330aは、データのRead時には、指定されたキーに対して担当ノードから読出したデータがポインタキーである場合、記憶部310aに記憶されたポインタ管理テーブルに基づいて、投入先ノードを判断する。アクセス部330aは、ポインタキーに対するデータを投入先ノードから取得して、要求元のアプリケーションに出力する。担当ノードから読出したデータがポインタキーである場合、要求元のアプリケーションに当該データを出力する。
更に、アクセス部330aは、データのDelete時には、指定されたキーに対して担当ノードに格納されたデータがポインタキーである場合、記憶部310aに記憶されたポインタ管理テーブルに基づいて、投入先ノードを判断する。アクセス部330aは、ポインタキーに対するデータを投入先ノードに削除させる。指定されたキーに対して担当ノードに格納されたデータがポインタキーでない場合、担当ノードに当該データを削除させる。
なお、第3の実施の形態のクライアント300は、第1の実施の形態の情報処理装置1の一例である。アクセス部330aは、制御部1bの一例である。
図16は、第3の実施の形態のWrite処理を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
図16は、第3の実施の形態のWrite処理を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
(ステップS71)アクセス部330aは、所定のアプリケーションによるデータのWrite依頼を受け付ける。Write依頼には、キーとデータとが含まれる。例えば、Write依頼には、キー“key01”およびデータ“value01”が含まれる。
(ステップS72)アクセス部330aは、Write依頼に含まれるキーに基づいてハッシュ値を計算する。アクセス部330aは、当該ハッシュ値を担当する担当ノードをストレージノード100に問い合わせる。
(ステップS73)アクセス部330aは、データの実体を投入する投入先ノードを決定するか否かを判定する。決定する場合、処理をステップS74に進める。決定しない場合、処理をステップS76に進める。アクセス部330aは、投入先ノードを決定するか否かを、例えば、次の(1)(2)の何れかの基準により判断できる。(1)ディスク装置200の空き容量が所定値よりも小さい。(2)投入するデータのサイズが閾値よりも大きい。ただし、他の基準を用いてもよい。このような基準を判断するために、アクセス部330aは、例えば定期的にストレージノード100,100a,100bから利用状況(空き容量など)を取得しておく。あるいは、ステップS73を実行する際に、担当ノードから利用状況を取得してもよい。
(ステップS74)アクセス部330aは、所定の基準に基づいて、投入先ノードを決定する。その手順は、図11で説明した第2の実施の形態の投入先ノード決定処理の手順と同様である。ただし、ノード決定部150が実行する処理をアクセス部330aが実行する。
(ステップS75)アクセス部330aは、ステップS72で取得した担当ノードと、ステップS74で決定した投入先ノードとが同一であるか否かを判定する。同一である場合、処理をステップS76に進める。同一でない場合、処理をステップS77に進める。
(ステップS76)アクセス部330aは、指定されたキーと対応付けたデータの書込みを要求するWrite要求を生成して、担当ノードに送信する。担当ノードは、Write要求に応じて、自身に接続されたディスク装置に(key,value,flag)の組を書込む。キー(key)は、アプリケーションにより指定されたキーである。フラグ(flag)は“false”である。例えば、担当ノードがストレージノード100であれば、データストア210に(“key01”,“value01”,“false”)が書込まれる。アクセス部330aは、担当ノードから書込み完了の応答を受け付けると、依頼元のアプリケーションに対して書込み完了を通知する。そして、処理を終了する。
(ステップS77)アクセス部330aは、ポインタキー(pointer key)を求める。その手順は、図12で説明した第2の実施の形態のポインタキー決定処理の手順と同様である。ただし、ノード決定部150が実行する処理をアクセス部330aが実行する。例えば、ポインタキー“pointer01”が求められる。
(ステップS78)アクセス部330aは、ポインタキーとWrite対象のデータ(value)とのペアの書込みを投入先ノードに格納させる。例えば、キー(key)としてポインタキーを指定してデータ(value)の書込みを要求するWrite要求を生成して、投入先ノードに送信する。投入先ノードは、指定された(key,value,flag)の組を自身に接続されたディスク装置に格納する。ここで、フラグ(flag)は、“false”である。例えば、投入先ノードがストレージノード100aである場合、データストア210aに、(“pointer01”,“value01”,“false”)の組が書込まれる。アクセス部330aは、投入先ノードから書込み結果の応答を受信する。アクセス部330aは、書込み依頼したポインタキーと投入先ノードのラベルとを対応付けて、記憶部310aに記憶されたポインタ管理テーブルに記録する。
(ステップS79)アクセス部330aは、キーとポインタキーとのペアの書込みを担当ノードに依頼する。例えば、キー(key)として、アプリケーションから指定されたキーを指定し、データ(value)としてポインタキーを指定してWrite要求を生成して、担当ノードに送信する。担当ノードは、指定された(key,value,flag)の組を自身に接続されたディスク装置に格納する。ここで、フラグ(flag)は、“true”である。例えば、担当ノードがストレージノード100である場合、データストア210に、(“key01”,“pointer01”、“value01”)の組が書込まれる。アクセス部330aは、担当ノードから書込み結果の応答を受信する。すると、アクセス部330aは、依頼元のアプリケーションに書込み完了を通知する。
このように、クライアント300は、データの実体を担当ノード以外の投入先ノードに配置できる。その場合、クライアント300は、データの実体の代わりに、他のノードへのリンクを示すポインタキーを担当ノードに格納させる。そして、投入先ノードには、当該ポインタキーと対応付けたデータの実体を格納させる。
なお、ステップS73では、データの投入先ノードを再決定するか否かの基準(1)(2)を例示したが、他の基準により判断してもよい。例えば、担当ノードの負荷を示す指標(例えば、CPU利用率やアクセス数など)が所定期間、連続して所定値よりも大きい場合に、投入先ノードを決定するようにしてもよい。
図17は、第3の実施の形態のRead処理を示すフローチャートである。以下、図17に示す処理をステップ番号に沿って説明する。
(ステップS81)アクセス部330aは、所定のアプリケーションによるデータのRead依頼を受け付ける。Read依頼には、キーが含まれる。例えば、Read依頼には、キー“key01”が含まれる。
(ステップS81)アクセス部330aは、所定のアプリケーションによるデータのRead依頼を受け付ける。Read依頼には、キーが含まれる。例えば、Read依頼には、キー“key01”が含まれる。
(ステップS82)アクセス部330aは、Read依頼に含まれるキーに基づいてハッシュ値を計算する。アクセス部330aは、当該ハッシュ値を担当する担当ノードをストレージノード100に問い合わせる。
(ステップS83)アクセス部330aは、Read依頼に含まれるキー(key)に対するデータ(value)およびフラグ(flag)を担当ノードから取得する。例えば、担当ノードがストレージノード100である場合に、キー“key01”に対するデータ“pointer01”およびフラグ“true”を取得する。
(ステップS84)アクセス部330aは、データ(value)がポインタキーであるか否かを判定する。データがポインタキーでない場合、処理をステップS85に進める。データがポインタキーである場合、処理をステップS86に進める。データがポインタキーであるか否かは、ステップS83で取得したフラグ(flag)に基づいて判定できる。フラグが“true”であれば、ポインタキーである。フラグが“false”であれば、ポインタキーでない。例えば、ステップS83で取得したフラグは“true”なので、データ“pointer01”はポインタキーである。
(ステップS85)アクセス部330aは、ステップS83で取得したデータを依頼元のアプリケーションに応答する。そして、処理を終了する。
(ステップS86)アクセス部330aは、記憶部310aに記憶されたポインタ管理テーブルを参照し、ステップS83でデータ(value)として取得したポインタキーに基づいて、投入先ノードを特定する。例えば、ポインタキー“pointer01”に対する投入先ノードとして、ストレージノード100a(ラベル“B”)を特定する。
(ステップS86)アクセス部330aは、記憶部310aに記憶されたポインタ管理テーブルを参照し、ステップS83でデータ(value)として取得したポインタキーに基づいて、投入先ノードを特定する。例えば、ポインタキー“pointer01”に対する投入先ノードとして、ストレージノード100a(ラベル“B”)を特定する。
(ステップS87)アクセス部330aは、ポインタキーをキーとして指定して、投入先ノードからデータ(value)を取得する。例えば、投入先ノードがストレージノード100aである場合に、キー”pointer01”に対するデータ“value01”を取得する。
(ステップS88)アクセス部330aは、投入先ノードから取得したデータを依頼元のアプリケーションに応答する。
このように、クライアント300は、Read依頼に含まれるキーに対し、担当ノードからポインタキーを取得した場合、ポインタキーに基づいて投入先ノードを特定する。そして、当該ポインタキーに対応付けたデータを投入先ノードから取得し、依頼元のアプリケーションに応答する。
このように、クライアント300は、Read依頼に含まれるキーに対し、担当ノードからポインタキーを取得した場合、ポインタキーに基づいて投入先ノードを特定する。そして、当該ポインタキーに対応付けたデータを投入先ノードから取得し、依頼元のアプリケーションに応答する。
図18は、第3の実施の形態のDelete処理を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
(ステップS91)アクセス部330aは、所定のアプリケーションによるデータのDelete依頼を受け付ける。Delete依頼には、キーが含まれる。例えば、Delete依頼には、キー“key01”が含まれる。
(ステップS91)アクセス部330aは、所定のアプリケーションによるデータのDelete依頼を受け付ける。Delete依頼には、キーが含まれる。例えば、Delete依頼には、キー“key01”が含まれる。
(ステップS92)アクセス部330aは、Delete依頼に含まれるキーに基づいてハッシュ値を計算する。アクセス部330aは、当該ハッシュ値を担当する担当ノードをストレージノード100に問い合わせる。
(ステップS93)アクセス部330aは、Delete依頼に含まれるキー(key)に対するデータ(value)およびフラグ(flag)を担当ノードから取得する。例えば、担当ノードがストレージノード100である場合に、キー“key01”に対するデータ“pointer01”およびフラグ“true”を取得する。
(ステップS94)アクセス部330aは、データ(value)がポインタキーであるか否かを判定する。データがポインタキーでない場合、処理をステップS95に進める。データがポインタキーである場合、処理をステップS96に進める。データがポインタキーであるか否かは、ステップS93で取得したフラグ(flag)に基づいて判定できる。フラグが“true”であれば、ポインタキーである。フラグが“false”であれば、ポインタキーでない。例えば、ステップS93で取得したフラグは“true”なので、データ“pointer01”はポインタキーである。
(ステップS95)アクセス部330aは、指定されたキーと対応付けたデータの削除を要求するDelete要求を生成して、担当ノードに送信する。担当ノードは、Delete要求に応じて、自身に接続されたディスク装置から(key,value,flag)の組を削除する。キー(key)は、アプリケーションにより指定されたキーである。アクセス部330aは、担当ノードから削除完了の応答を受け付けると、依頼元のアプリケーションに対して削除完了を通知する。そして、処理を終了する。
(ステップS96)アクセス部330aは、記憶部310aに記憶されたポインタ管理テーブルを参照し、ステップS93でデータ(value)として取得したポインタキーに基づいて、投入先ノードを特定する。例えば、ポインタキー“pointer01”に対する投入先ノードとして、ストレージノード100a(ラベル“B”)を特定する。
(ステップS97)アクセス部330aは、ポインタキーに対応付けたデータの削除を投入先ノードに依頼する。例えば、キー(key)としてポインタキーを指定して、データ(value)の削除を依頼するDelete要求を生成して、投入先ノードに送信する。投入先ノードは、指定された(key,value,flag)の組を自身に接続されたディスク装置から削除する。例えば、投入先ノードがストレージノード100aである場合、データストア210aから(“pointer01”,“value01”,“false”)の組が削除される。アクセス部330aは、投入先ノードから削除結果の応答を受信する。
(ステップS98)アクセス部330aは、ステップS93で取得したポインタキーのレコードを記憶部310aに記憶されたポインタ管理テーブル112から削除する。アクセス部330aは、ポインタキーの削除を担当ノードに依頼する。例えば、アプリケーションから指定されたキーを指定して、データ(value)として格納されたポインタキーの削除を依頼するDelete要求を生成して、担当ノードに送信する。担当ノードは、指定された(key,value,flag)の組を自身に接続されたディスク装置から削除する。例えば、担当ノードがストレージノード100である場合、データストア210から(“key01”,“pointer01”,“true”)の組が削除される。アクセス部330aは、担当ノードから削除完了の応答を受け付けると、依頼元のアプリケーションに対して削除完了を通知する。
以上のように第3の実施の形態のクライアント300,300aは、キーから算出されるハッシュ値により担当ノードが決定される場合でも、データの代わりに、キーと対応付けたポインタキーを担当ノードに格納する。そして、ポインタキーと対応付けたデータの実体を他のノードに配置する。これにより、データ配置の制限を緩和できる。
例えば、ポインタキーは単にリンクを示す情報であるため、データの実体よりもデータサイズが小さい可能性が高い。このため、担当ノードの空き容量が少ないときにデータの実体を他のノードに配置すれば、データ量の偏りを分散できる。また、例えば、担当ノードの負荷が大きい時に、データの実体を他のノードに配置すれば、負荷を分散することもできる。
更に、データの実体を投入する他のノード(投入先ノード)の選択方法として、運用に応じた基準を選択できる。例えば、第2の実施の形態で説明したように、データ量を分散したい場合や、負荷を分散したい場合など、目的ごとに種々の基準が考えられる。これにより、ストレージノード100,100a,100bにおけるデータ量の分散や負荷の分散を一層容易に行える。
なお、データ(value)の設定内容がポインタキーであるかを判断する方法としてフラグを用いたが別の方法を用いてもよい。例えば、ポインタキーが予め所定の文字列を含むことを定義しておけば、当該文字列を含むか否かに応じて、データ(value)がポインタキーであるか否かを判断できる。
更に、第2,第3の実施の形態では、1つのストレージノードにデータを格納する例を示したが、複数のストレージノードに同一のデータを格納する場合にも同じ方法を利用できる。
1 情報処理装置
1a 記憶部
1b 制御部
2 第1のノード
2a 第2のノード
1a 記憶部
1b 制御部
2 第1のノード
2a 第2のノード
Claims (7)
- キーと対応付けてデータを格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムが実行するストレージ制御方法であって、
第1のキーと第1のデータとを取得したとき、前記第1のキーに応じた第1のノードに前記第1のキーと対応付けて第2のキーを示す第2のデータを格納し、第2のノードに前記第2のキーと対応付けて前記第1のデータを格納し、
前記第1のキーを指定したアクセス要求を取得したとき、前記第1のノードに前記第1のキーと対応付けて格納されているデータが前記第2のデータであることを検出し、前記第2のデータが示す前記第2のキーに基づいて、前記第2のノードに格納された前記第1のデータにアクセスする、
ストレージ制御方法。 - 前記第1のキーと前記第1のデータとを取得したとき、前記第1のノードのデータ格納状況およびアクセス処理状況の少なくとも一方に基づいて、前記第1のデータを前記第1のノードに代えて前記第2のノードに格納することを決定する、請求項1記載のストレージ制御方法。
- 前記第1のキーと前記第1のデータとを取得したとき、前記複数のノードのデータ格納状況およびアクセス処理状況の少なくとも一方に基づいて、前記複数のノードの中から前記第2のノードを選択する、請求項1または2記載のストレージ制御方法。
- 前記第1のデータを前記第2のノードに格納することは、前記第1のノードによって行われるか、または、前記第1のデータの格納を要求するクライアント装置によって行われる、請求項1乃至3の何れか一項に記載のストレージ制御方法。
- 前記第1のキーと対応付けられたデータが前記第2のデータであることの検出および前記第2のノードへのアクセスは、前記第1のノードによって行われるか、または、前記アクセス要求を送信するクライアント装置によって行われる、請求項1乃至4の何れか一項に記載のストレージ制御方法。
- キーと対応付けてデータを格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムに用いられる情報処理装置であって、
キーとノードとの対応関係を示す情報であって、少なくとも第1のキーに第1のノードが対応し第2のキーに第2のノードが対応することを示す情報を記憶する記憶部と、
前記第1のキーと第1のデータとを取得したとき、前記第1のノードに前記第1のキーと対応付けて前記第2のキーを示す第2のデータが格納され、前記第2のノードに前記第2のキーと対応付けて前記第1のデータが格納されるよう制御し、また、前記第1のキーを指定したアクセス要求を取得したとき、前記第1のキーと対応付けて格納されているデータが前記第2のデータであることを検出し、前記第2のデータが示す前記第2のキーに基づいて、前記第2のノードに格納された前記第1のデータにアクセスする制御部と、
を有する情報処理装置。 - キーと対応付けてデータを格納する複数のノードを有しておりキーに応じてアクセス先のノードが判定されるシステムの制御に用いるプログラムであって、コンピュータに、
第1のキーと第1のデータとを取得したとき、前記第1のキーに応じた第1のノードに前記第1のキーと対応付けて第2のキーを示す第2のデータが格納され、第2のノードに前記第2のキーと対応付けて前記第1のデータが格納されるよう制御し、
前記第1のキーを指定したアクセス要求を取得したとき、前記第1のキーと対応付けて格納されているデータが前記第2のデータであることを検出し、前記第2のデータが示す前記第2のキーに基づいて、前記第2のノードに格納された前記第1のデータにアクセスする、
処理を実行させるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011184309A JP2013045379A (ja) | 2011-08-26 | 2011-08-26 | ストレージ制御方法、情報処理装置およびプログラム |
US13/584,449 US20130055371A1 (en) | 2011-08-26 | 2012-08-13 | Storage control method and information processing apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011184309A JP2013045379A (ja) | 2011-08-26 | 2011-08-26 | ストレージ制御方法、情報処理装置およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2013045379A true JP2013045379A (ja) | 2013-03-04 |
Family
ID=47745679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011184309A Withdrawn JP2013045379A (ja) | 2011-08-26 | 2011-08-26 | ストレージ制御方法、情報処理装置およびプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130055371A1 (ja) |
JP (1) | JP2013045379A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014203362A (ja) * | 2013-04-08 | 2014-10-27 | 富士通株式会社 | ストレージ装置及びストレージ制御方法 |
JP2016189058A (ja) * | 2015-03-30 | 2016-11-04 | 日本電気株式会社 | 情報処理装置、情報処理システム、情報処理方法、及び、プログラム |
US10379770B2 (en) | 2017-03-27 | 2019-08-13 | Nec Corporation | Storage system and communicating method |
US10708355B2 (en) | 2013-05-20 | 2020-07-07 | Nec Corporation | Storage node, storage node administration device, storage node logical capacity setting method, program, recording medium, and distributed data storage system |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015139043A1 (en) * | 2014-03-14 | 2015-09-17 | Kadenze, Inc. | Multimedia educational content delivery with identity authentication and related compensation model |
US10095850B2 (en) | 2014-05-19 | 2018-10-09 | Kadenze, Inc. | User identity authentication techniques for on-line content or access |
US9483205B2 (en) | 2014-07-02 | 2016-11-01 | Hedvig, Inc. | Writing to a storage platform including a plurality of storage clusters |
US9864530B2 (en) | 2014-07-02 | 2018-01-09 | Hedvig, Inc. | Method for writing data to virtual disk using a controller virtual machine and different storage and communication protocols on a single storage platform |
US10067722B2 (en) | 2014-07-02 | 2018-09-04 | Hedvig, Inc | Storage system for provisioning and storing data to a virtual disk |
WO2016004120A2 (en) * | 2014-07-02 | 2016-01-07 | Hedvig, Inc. | Storage system with virtual disks |
US9411534B2 (en) | 2014-07-02 | 2016-08-09 | Hedvig, Inc. | Time stamp generation for virtual disks |
US9798489B2 (en) | 2014-07-02 | 2017-10-24 | Hedvig, Inc. | Cloning a virtual disk in a storage platform |
US9558085B2 (en) | 2014-07-02 | 2017-01-31 | Hedvig, Inc. | Creating and reverting to a snapshot of a virtual disk |
US9424151B2 (en) | 2014-07-02 | 2016-08-23 | Hedvig, Inc. | Disk failure recovery for virtual disk with policies |
US9875063B2 (en) | 2014-07-02 | 2018-01-23 | Hedvig, Inc. | Method for writing data to a virtual disk using a controller virtual machine and different storage and communication protocols |
WO2016041998A1 (en) * | 2014-09-15 | 2016-03-24 | Foundation For Research And Technology - Hellas (Forth) | Tiered heterogeneous fast layer shared storage substrate apparatuses, methods, and systems |
US10248174B2 (en) | 2016-05-24 | 2019-04-02 | Hedvig, Inc. | Persistent reservations for virtual disk using multiple targets |
FR3103664B1 (fr) * | 2019-11-27 | 2023-04-07 | Amadeus Sas | Système de stockage distribué pour stocker des données contextuelles |
KR20210087628A (ko) | 2020-01-03 | 2021-07-13 | 삼성전자주식회사 | 네트워크 기반 스토리지 장치의 구동 방법 및 이를 이용한 스토리지 시스템의 구동 방법 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2400699B (en) * | 2003-04-17 | 2006-07-05 | Hewlett Packard Development Co | Security data provision method and apparatus and data recovery method and system |
US20100162004A1 (en) * | 2008-12-23 | 2010-06-24 | David Dodgson | Storage of cryptographically-split data blocks at geographically-separated locations |
JP2009032038A (ja) * | 2007-07-27 | 2009-02-12 | Hitachi Ltd | リムーバブルな暗号化/復号化モジュールが接続されるストレージシステム |
JP4990089B2 (ja) * | 2007-10-12 | 2012-08-01 | 株式会社日立製作所 | 格納データ暗号化機能内蔵ストレージ装置の暗号鍵をバックアップ及びリストアする計算機システム |
JP5319238B2 (ja) * | 2008-10-29 | 2013-10-16 | 真二 栗本 | 情報処理システム、情報処理装置、情報処理方法、および情報処理プログラム |
US8165305B2 (en) * | 2008-12-08 | 2012-04-24 | Harrison Corporation | Enhanced relational database security through encryption of table indices |
US8762343B2 (en) * | 2009-12-29 | 2014-06-24 | Cleversafe, Inc. | Dispersed storage of software |
CA2807972A1 (en) * | 2010-08-11 | 2012-02-16 | Security First Corp. | Systems and methods for secure multi-tenant data storage |
-
2011
- 2011-08-26 JP JP2011184309A patent/JP2013045379A/ja not_active Withdrawn
-
2012
- 2012-08-13 US US13/584,449 patent/US20130055371A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014203362A (ja) * | 2013-04-08 | 2014-10-27 | 富士通株式会社 | ストレージ装置及びストレージ制御方法 |
US10708355B2 (en) | 2013-05-20 | 2020-07-07 | Nec Corporation | Storage node, storage node administration device, storage node logical capacity setting method, program, recording medium, and distributed data storage system |
JP2016189058A (ja) * | 2015-03-30 | 2016-11-04 | 日本電気株式会社 | 情報処理装置、情報処理システム、情報処理方法、及び、プログラム |
US10379770B2 (en) | 2017-03-27 | 2019-08-13 | Nec Corporation | Storage system and communicating method |
Also Published As
Publication number | Publication date |
---|---|
US20130055371A1 (en) | 2013-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2013045379A (ja) | ストレージ制御方法、情報処理装置およびプログラム | |
US9424204B2 (en) | Caching method for distributed storage system, a lock server node, and a lock client node | |
JP4838878B2 (ja) | データ管理プログラム、データ管理装置、およびデータ管理方法 | |
US9229646B2 (en) | Methods and apparatus for increasing data storage capacity | |
JP4733461B2 (ja) | 計算機システム、管理計算機及び論理記憶領域の管理方法 | |
US7966470B2 (en) | Apparatus and method for managing logical volume in distributed storage systems | |
JP5320557B2 (ja) | ストレージシステム | |
CN105027069A (zh) | 卷区域的重复数据删除 | |
JP2006031668A (ja) | データ価値に基づく階層型ストレージ管理の為の方法と装置 | |
JP2013045378A (ja) | ストレージ制御方法、情報処理装置およびプログラム | |
JP2013222373A (ja) | ストレージシステム、キャッシュ制御プログラムおよびキャッシュ制御方法 | |
WO2012131753A1 (en) | Storage system and performance management method of storage system | |
JP5765441B2 (ja) | 情報処理装置、データ管理方法およびプログラム | |
JP2009064159A (ja) | 計算機システム、管理計算機及びデータ管理方法 | |
CN107924334B (zh) | 弹性命名分布式循环缓冲区的重新平衡和弹性存储方案 | |
JP2021157259A (ja) | オブジェクト最適配置装置及び方法 | |
CN113853778A (zh) | 一种文件系统的克隆方法及装置 | |
US11429311B1 (en) | Method and system for managing requests in a distributed system | |
JP5633646B2 (ja) | 情報処理装置、データ管理方法およびデータ管理プログラム | |
JP2006277563A (ja) | ファイルを指定日時のバージョンに復帰させるためのバックアップ・システム、バックアップ方法および該方法をコンピュータに実行させるためのプログラム | |
US20220237176A1 (en) | Method and system for managing changes of records on hosts | |
US11132401B1 (en) | Distributed hash table based logging service | |
US8977814B1 (en) | Information lifecycle management for binding content | |
US9298390B2 (en) | Systems and methods for copying data maintained in a dynamic storage volume and verifying the copied data | |
WO2014010016A1 (ja) | プログラム、データ管理方法、および情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20141104 |