IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 華為技術有限公司の特許一覧

特許7105870データアクセス方法、装置およびシステム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-07-14
(45)【発行日】2022-07-25
(54)【発明の名称】データアクセス方法、装置およびシステム
(51)【国際特許分類】
   G06F 3/06 20060101AFI20220715BHJP
   G06F 11/14 20060101ALI20220715BHJP
   G06F 13/10 20060101ALI20220715BHJP
   G06F 13/14 20060101ALI20220715BHJP
   G06F 16/185 20190101ALI20220715BHJP
【FI】
G06F3/06 302B
G06F3/06 301X
G06F11/14 671
G06F13/10 340A
G06F13/14 320H
G06F16/185
【請求項の数】 29
(21)【出願番号】P 2020507656
(86)(22)【出願日】2017-08-10
(65)【公表番号】
(43)【公表日】2020-10-15
(86)【国際出願番号】 CN2017096958
(87)【国際公開番号】W WO2019028799
(87)【国際公開日】2019-02-14
【審査請求日】2020-03-19
(73)【特許権者】
【識別番号】503433420
【氏名又は名称】華為技術有限公司
【氏名又は名称原語表記】HUAWEI TECHNOLOGIES CO.,LTD.
【住所又は居所原語表記】Huawei Administration Building, Bantian, Longgang District, Shenzhen, Guangdong 518129, P.R. China
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100140534
【氏名又は名称】木内 敬二
(72)【発明者】
【氏名】▲劉▼ ▲華▼▲偉▼
(72)【発明者】
【氏名】胡 ▲ユ▼
(72)【発明者】
【氏名】▲陳▼ ▲燦▼
(72)【発明者】
【氏名】▲劉▼ 金水
(72)【発明者】
【氏名】李 ▲暁▼初
(72)【発明者】
【氏名】▲譚▼ 春毅
【審査官】打出 義尚
(56)【参考文献】
【文献】米国特許出願公開第2015/0324123(US,A1)
【文献】特開2008-123198(JP,A)
【文献】米国特許出願公開第2015/0012607(US,A1)
【文献】米国特許第07389393(US,B1)
【文献】米国特許出願公開第2015/0248366(US,A1)
【文献】米国特許出願公開第2016/0127492(US,A1)
【文献】米国特許出願公開第2014/0195634(US,A1)
【文献】米国特許出願公開第2015/0095554(US,A1)
【文献】特表2016-539399(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 11/14
G06F 13/10
G06F 13/14
G06F 16/185
(57)【特許請求の範囲】
【請求項1】
ストレージシステム中の第1のストレージノードに適用されるデータアクセス方法であって、前記第1のストレージノードはスイッチを用いてホスト、および前記ストレージシステム中の少なくとも1つの第2のストレージノードと通信し、前記少なくとも1つの第2のストレージノードに含まれる物理ディスクが前記第1のストレージノードの仮想ディスクとしてマッピングされ、且つ前記第1のストレージノードのローカルディスクとして使用され、前記方法は、
第1の書き込み要求を受信するステップであって、前記第1の書き込み要求は第1の書き込み対象のデータを搬送する、ステップと、
前記第1の書き込み対象のデータをストライピングしてストライピングされたデータを取得し、前記第1のストレージノードの前記仮想ディスクに前記ストライピングされたデータを書き込むか、または前記第1のストレージノードの物理ディスクおよび前記仮想ディスクに前記ストライピングされたデータを書き込むステップと、
前記ストライピングされたデータの書き込みロケーションを記録するステップと
を有する、方法。
【請求項2】
前記ストライピングされたデータが前記仮想ディスクに書き込まれるとき、前記ストライピングされたデータは、前記第2のストレージノード中にある、前記仮想ディスクにマッピングされている前記物理ディスクに書き込まれる、請求項1に記載の方法。
【請求項3】
前記ストライピングされたデータの前記書き込みロケーションが記録されるとき、前記第1の書き込み対象のデータのフィンガープリントがさらに記録される、請求項1または2に記載の方法。
【請求項4】
前記方法は、
第1の読み出し要求によって要求される第1の読み出し対象のデータのフィンガープリントを受信するステップと、
前記第1の読み出し対象のデータの前記フィンガープリントに基づいて前記第1の読み出し対象のデータの書き込みロケーションを取得し、前記第1の読み出し対象のデータの前記書き込みロケーションから前記第1の読み出し対象のデータのストライピングされたデータを読み出すステップと
をさらに有する、請求項3に記載の方法。
【請求項5】
前記ストライピングされたデータの前記書き込みロケーションが記録されるとき、前記第1の書き込み対象のデータの論理ブロックアドレス(LBA)がさらに記録される、請求項1または2に記載の方法。
【請求項6】
前記方法は、
第1の読み出し要求を受信するステップであって、前記第1の読み出し要求は第1のLBAを搬送する、ステップと、
前記第1のLBAに基づいて、前記第1の読み出し要求によって要求される第1の読み出し対象のデータの書き込みロケーションを取得し、前記第1の読み出し対象のデータの前記書き込みロケーションから前記第1の読み出し対象のデータのストライピングされたデータを読み出すステップと
さらに有する、請求項4に記載の方法。
【請求項7】
前記方法は、
前記ホストによって送信された第2の書き込み要求を受信するステップであって、前記第2の書き込み要求は第2の書き込み対象のデータを搬送する、ステップと、
前記第2の書き込み要求に基づいて前記第2の書き込み要求のホームノードを決定し、前記第2の書き込み要求の前記ホームノードが前記第1のストレージノードである場合、前記第1のストレージノードにより、前記第2の書き込み要求に応答して書き込み動作を実行し、または、前記第2の書き込み要求の前記ホームノードが前記第2のストレージノードである場合、前記第2のストレージノードが前記第2の書き込み要求に応答して書き込み動作を実行するように、前記第1のストレージノードにより、前記第2のストレージノードに前記第2の書き込み要求を転送するステップと
をさらに有する、請求項1または2に記載の方法。
【請求項8】
前記第2の書き込み要求に基づいて前記第2の書き込み要求のホームノードを決定する前記ステップは、
前記第2の書き込み対象のデータのフィンガープリントを計算するステップと、
前記第2の書き込み対象のデータの前記フィンガープリントに基づいて前記第2の書き込み要求の前記ホームノードを決定するステップと
を含む、請求項7に記載の方法。
【請求項9】
前記方法は、
前記第2の書き込み要求で搬送されたLBAのホームノードを決定するステップであって、前記LBAの前記ホームノードは、前記LBAと前記第2の書き込み対象のデータの前記フィンガープリントとのマッピング関係を管理するように構成される、ステップ
をさらに有する、請求項8に記載の方法。
【請求項10】
前記第2の書き込み要求に基づいて前記第2の書き込み要求のホームノードを決定する前記ステップは、
前記第2の書き込み要求で搬送されたLBAに基づいて前記第2の書き込み要求の前記ホームノードを決定するステップ
を含む、請求項7に記載の方法。
【請求項11】
前記方法は、
前記ホストによって送信された第2の読み出し要求を受信するステップと、
前記第2の読み出し要求に基づいて前記第2の読み出し要求のホームノードを決定し、前記第2の読み出し要求の前記ホームノードが前記第1のストレージノードである場合、前記第1のストレージノードにより、前記第2の読み出し要求に応答して読み出し動作を実行し、または、前記第2の読み出し要求の前記ホームノードが前記第2のストレージノードである場合、前記第2のストレージノードが前記第2の読み出し要求に応答して読み出し動作を実行するように、前記第1のストレージノードにより、前記第2のストレージノードに前記第2の読み出し要求を転送するステップと
をさらに有する、請求項1または2に記載の方法。
【請求項12】
前記第2の読み出し要求に基づいて前記第2の読み出し要求のホームノードを決定する前記ステップは、
前記第2の読み出し要求で搬送されたLBAのホームノードを決定するステップであって、前記LBAの前記ホームノードは、前記LBAと前記第2の読み出し要求によって要求されている第2の読み出し対象のデータのフィンガープリントとのマッピング関係を管理するように構成される、ステップと、
記LBAの前記ホームノードから前記第2の読み出し対象のデータの前記フィンガープリントを取得するステップと、
前記第2の読み出し対象のデータの前記フィンガープリントに基づいて前記第2の読み出し要求の前記ホームノードを決定するステップと
を含む、請求項11に記載の方法。
【請求項13】
前記第2の読み出し要求に基づいて前記第2の読み出し要求のホームノードを決定する前記ステップは、
前記第2の読み出し要求で搬送されたLBAに基づいて前記第2の読み出し要求の前記ホームノードを決定するステップ
を含む、請求項11に記載の方法。
【請求項14】
ストレージノードであって、前記ストレージノードはスイッチを用いてホスト、およびストレージシステム中の少なくとも1つの第2のストレージノードと通信し、前記少なくとも1つの第2のストレージノードに含まれる物理ディスクが前記ストレージノードの仮想ディスクとしてマッピングされ、且つ前記ストレージノードのローカルディスクとして使用され、前記ストレージノードは、
第1の書き込み要求を受信し、前記第1の書き込み要求が第1の書き込み対象のデータを搬送する、ように構成されたトランシーバユニットと、
前記第1の書き込み対象のデータをストライピングしてストライピングされたデータを取得し、前記ストレージノードの前記仮想ディスクに前記ストライピングされたデータを書き込むか、または前記ストレージノードの物理ディスクおよび前記仮想ディスクに前記ストライピングされたデータを書き込むように構成された処理ユニットと、
前記ストライピングされたデータの書き込みロケーションを記録するように構成されたストレージユニットと
を備える、ストレージノード。
【請求項15】
前記処理ユニットは、前記ストライピングされたデータが前記仮想ディスクに書き込まれるとき、前記ストライピングされたデータを、前記第2のストレージノード中にある、前記仮想ディスクにマッピングされている前記物理ディスクに書き込むように特に構成される、請求項14に記載のストレージノード。
【請求項16】
前記ストレージユニットは、前記ストライピングされたデータの前記書き込みロケーションを記録するとき、前記第1の書き込み対象のデータのフィンガープリントをさらに記録するようにさらに構成される、請求項14または15に記載のストレージノード。
【請求項17】
前記トランシーバユニットは、第1の読み出し要求によって要求される第1の読み出し対象のデータのフィンガープリントを受信するようにさらに構成され、
前記処理ユニットは、前記第1の読み出し対象のデータの前記フィンガープリントに基づいて前記第1の読み出し対象のデータの書き込みロケーションを取得し、前記第1の読み出し対象のデータの前記書き込みロケーションから前記第1の読み出し対象のデータのストライピングされたデータを読み出すようにさらに構成される、請求項16に記載のストレージノード。
【請求項18】
前記ストレージユニットは、前記ストライピングされたデータの前記書き込みロケーションを記録するとき、前記第1の書き込み対象のデータの論理ブロックアドレス(LBA)をさらに記録するようにさらに構成される、請求項14または15に記載のストレージノード。
【請求項19】
前記トランシーバユニットは、第1の読み出し要求を受信し、前記第1の読み出し要求が第1のLBAを搬送する、ようにさらに構成され、
前記処理ユニットは、前記第1のLBAに基づいて、前記第1の読み出し要求によって要求される第1の読み出し対象のデータの書き込みロケーションを取得し、前記第1の読み出し対象のデータの前記書き込みロケーションから前記第1の読み出し対象のデータのストライピングされたデータを読み出すようにさらに構成される、請求項17に記載のストレージノード。
【請求項20】
前記トランシーバユニットは、前記ホストによって送信された第2の書き込み要求を受信し、前記第2の書き込み要求が第2の書き込み対象のデータを搬送する、ようにさらに構成され、
前記処理ユニットは、前記第2の書き込み要求に基づいて前記第2の書き込み要求のホームノードを決定し、前記第2の書き込み要求の前記ホームノードが前記ストレージノードである場合、前記処理ユニットは、前記第2の書き込み要求に応答して書き込み動作を実行し、または、前記第2の書き込み要求の前記ホームノードが前記第2のストレージノードである場合、前記処理ユニットは、前記第2のストレージノードが前記第2の書き込み要求に応答して書き込み動作を実行するように、前記第2のストレージノードに前記第2の書き込み要求を転送する、ようにさらに構成される、請求項14または15に記載のストレージノード。
【請求項21】
前記処理ユニットは、
前記第2の書き込み対象のデータのフィンガープリントを計算し、
前記第2の書き込み対象のデータの前記フィンガープリントに基づいて前記第2の書き込み要求の前記ホームノードを決定する
ように特に構成される、請求項20に記載のストレージノード。
【請求項22】
前記処理ユニットは、前記第2の書き込み要求で搬送されたLBAのホームノードを決定し、前記LBAの前記ホームノードが前記LBAと前記第2の書き込み対象のデータの前記フィンガープリントとのマッピング関係を管理するように構成される、ようにさらに構成される、請求項21に記載のストレージノード。
【請求項23】
前記処理ユニットは、前記第2の書き込み要求で搬送されたLBAに基づいて前記第2の書き込み要求の前記ホームノードを決定するように特に構成される、請求項20に記載のストレージノード。
【請求項24】
前記トランシーバユニットは、前記ホストによって送信された第2の読み出し要求を受信するようにさらに構成され、
前記処理ユニットは、前記第2の読み出し要求に基づいて前記第2の読み出し要求のホームノードを決定し、前記第2の読み出し要求の前記ホームノードが前記ストレージノードである場合、前記ストレージノードは、前記第2の読み出し要求に応答して読み出し動作を実行し、または、前記第2の読み出し要求の前記ホームノードが前記第2のストレージノードである場合、前記ストレージノードは、前記第2のストレージノードが前記第2の読み出し要求に応答して読み出し動作を実行するように、前記第2のストレージノードに前記第2の読み出し要求を転送する、ようにさらに構成される、請求項14または15に記載のストレージノード。
【請求項25】
前記処理ユニットは、
前記第2の読み出し要求で搬送されたLBAのホームノードを決定することであって、前記LBAの前記ホームノードが、前記LBAと前記第2の読み出し要求によって要求される第2の読み出し対象のデータのフィンガープリントとのマッピング関係を管理するように構成される、ことと、
記LBAの前記ホームノードから前記第2の読み出し対象のデータの前記フィンガープリントを取得することと、
前記第2の読み出し対象のデータの前記フィンガープリントに基づいて前記第2の読み出し要求の前記ホームノードを決定することと
を行うように特に構成される、請求項24に記載のストレージノード。
【請求項26】
前記処理ユニットは、前記第2の読み出し要求で搬送されたLBAに基づいて前記第2の読み出し要求の前記ホームノードを決定するように特に構成される、請求項24に記載のストレージノード。
【請求項27】
ストレージノードであって、ストレージおよびプロセッサを備え、前記ストレージはコンピュータプログラムを記憶するように構成され、前記コンピュータプログラムが前記プロセッサによって実行されるとき、請求項1から13のいずれか一項に記載の方法が実行される、ストレージノード。
【請求項28】
データアクセスシステムであって、請求項14から27のいずれか一項に記載のストレージノードを備え、前記ストレージノードはスイッチを用いてホスト、および前記ストレージシステム中の少なくとも1つの第2のストレージノードと通信し、前記少なくとも1つの第2のストレージノードに含まれる物理ディスクが前記ストレージノードの仮想ディスクにマッピングされる、データアクセスシステム。
【請求項29】
コンピュータプログラムを記憶するコンピュータ可読記憶媒体であって、前記プログラムがコンピュータ上で動作するとき、請求項1から13のいずれか一項に記載の方法が実行される、コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、ストレージ技術の分野に関し、特に、データアクセス方法、装置およびシステムに関する。
【背景技術】
【0002】
図1を参照すると、図1は先行技術に係るストレージシステムのアーキテクチャの概略図である。ストレージシステムは2つのスイッチを用いてホストに接続されている。ストレージシステムは、各スイッチに接続されている複数のデュアルコントローラアレイをさらに含む。各デュアルコントローラアレイは、2つのストレージコントローラと、各ストレージコントローラに接続されている複数の機械式ハードディスク(hard disk drive,HDD)とを含む。2つのストレージコントローラは冗長性ミラーチャンネルを用いて接続され、データ書き込みプロシージャでミラー動作を実施する。このシステムでは、各デュアルコントローラアレイはデュアルコントローラアレイユニットとして用いられ、各デュアルコントローラアレイユニットはホストのいくつかの論理ブロックアドレス(logical block address,LBA)に対応する。ホストによって送信された読み出し/書き込み要求は、スイッチによって、読み出し/書き込み要求で搬送されるLBAに対応するデュアルコントローラアレイユニットに転送される。その後、デュアルコントローラアレイユニットはそのデュアルコントローラアレイユニットで読み出し/書き込み動作をローカルで実施する。
【0003】
図1に示されているシステムアーキテクチャはHDDをベースにして設けられている。不揮発性メモリエクスプレス(non volatile memory Express,NVMe)ソリッドステートドライブ(solid state drive,SSD)が徐々に受け入れられる中で、NVMe SSDはデュアルコントローラアレイに一般的に適用されている。一方で、HDDと比較して、NVMe SSDのパフォーマンスは数百倍、さらには数千倍も高められてきた。たとえば、IntelのP3600 NVMe SSDのread-only IOPSは45万に達し、write-only IOPSも7万に達する。IOPSは、1秒あたりの入力/出力動作(input/output operations per second)の英語の頭字語である。図1に示されているシステムアーキテクチャでは、すべての処理動作が2つのストレージコントローラによって実行されるが、ストレージコントローラの処理能力は限られている。したがって、図1に示されているデュアルコントローラアレイストレージアーキテクチャは記憶媒体としてNVMe SSDを用いるストレージシステムには、もはや適用可能ではなく、新しいタイプのシステムアーキテクチャが早急に必要である。
【発明の概要】
【課題を解決するための手段】
【0004】
本出願の実施形態は、記憶媒体としてNVMe SSDを用いるストレージシステムに適用可能であるデータアクセス方法、装置およびシステムを提供する。
【0005】
上記の目的を達成するために、以下の技術的解決手段が本出願の実施形態で用いられている。
【0006】
第1の態様に係れば、ストレージシステム中の第1のストレージノードに適用されるデータアクセス方法であって、第1のストレージノードはスイッチおよびホストを用いてストレージシステム中の少なくとも1つの第2のストレージノードと通信し、少なくとも1つの第2のストレージノードに含まれる物理ディスクが第1のストレージノードの仮想ディスクにマッピングされる、データアクセス方法が提供される。方法は、第1の書き込み要求を受信するステップであって、第1の書き込み要求は第1の書き込み対象のデータを搬送する、ステップと、次いで、第1の書き込み対象のデータをストライピングしてストライピングされたデータを取得し、第1のストレージノードの物理ディスクおよび/または仮想ディスクにストライピングされたデータを書き込むステップと、ストライピングされたデータの書き込みロケーションを記録するステップとを含む。第1のストレージノードはストレージシステム中のいずれのストレージノードであってもよい。第1のストレージノードによって受信される第1の書き込み要求は、ホストによって送信された第1の書き込み要求であってもよいし、いずれかの第2のストレージノードによって転送される、ホストからの第1の書き込み要求であってもよい。この技術的解決手段では、各ストレージノードに含まれる物理ディスク(たとえばメモリチップ)の一部または全部が別のストレージノードにマッピングされて、別のストレージノードの仮想ディスクとして用いられてもよい。たとえば、物理ディスクの一部または全部がNOFプロトコル(ただし、これに限定されない)を用いてマッピングされてもよい。したがって、先行技術と比較して、この技術的解決手段はデュアルコントローラアレイのCPUやストレージコントローラの処理能力によって制限されず、このため、ストレージシステムの処理能力を大幅に改善することができる。
【0007】
可能な一設計では、ストライピングされたデータが仮想ディスクに書き込まれるとき、ストライピングされたデータは、第2のストレージノード中にある、仮想ディスクにマッピングされている物理ディスクに書き込まれる。たとえば、第1のストレージノードは、対応するストライピングされたデータを、対応する第2のストレージノードに送信し、次いで、第2のストレージノードは、受信したデータをローカルディスク(すなわち、仮想ディスクにマッピングされている物理ディスク)に記憶する。
【0008】
可能な一設計では、ストライピングされたデータの書き込みロケーションが記録されるとき、第1の書き込み対象のデータのフィンガープリントがさらに記録される。たとえば、ストライピングされたデータの書き込みロケーションと第1の書き込み対象のデータのフィンガープリントとが第1の書き込み対象のデータの分散情報(ただし、これに限定されない)に記録される。特定の実現例については、以下の特定の実現例を参照する。
【0009】
可能な一設計では、ストライピングされたデータの書き込みロケーションが記録されるとき、第1の書き込み対象のデータのLBAがさらに記録され、このLBAは書き込み要求で搬送されるLBAである。たとえば、ストライピングされたデータの書き込みロケーションと第1の書き込み対象のデータのLBAとが第1の書き込み対象のデータの分散情報(ただし、これに限定されない)に記録される。
【0010】
上記の技術的解決手段は、第1のストレージノードを、書き込み動作を実行するストレージノードとして用いることにより提供される。いくつかの他の実施形態では、第1のストレージノードは以下の他のステップをさらに実行してもよい。
【0011】
可能な一設計では、第1のストレージノードは、ホストによって送信された第2の書き込み要求を受信してもよく、この第2の書き込み要求は第2の書き込み対象のデータを搬送し、次いで、第1のストレージノードは、第2の書き込み要求に基づいて第2の書き込み要求のホームノードを決定してもよく、第2の書き込み要求のホームノードが第1のストレージノードである場合、第1のストレージノードは、第2の書き込み要求に応答して書き込み動作を実行し、または、第2の書き込み要求のホームノードが第2のストレージノードである場合、第1のストレージノードは、第2のストレージノードが第2の書き込み要求に応答して書き込み動作を実行するように、第2のストレージノードに第2の書き込み要求を転送してもよい。書き込み動作を実行する実現例については、上記で提供されている技術的解決手段や以下で提供されている特定の実現例を参照し、ここでは詳細を重ねて説明しない。
【0012】
可能な一設計では、第2の書き込み要求に基づいて第2の書き込み要求のホームノードを決定するステップは、第2の書き込み対象のデータのフィンガープリントを計算するステップと、次いで、第2の書き込み対象のデータのフィンガープリントに基づいて第2の書き込み要求のホームノードを決定するステップとを含んでもよい。この可能な設計では、特に、第2の書き込み要求のホームノードは第2の書き込み対象のデータのホームノードである。これに基づいて、適宜、方法は、第2の書き込み要求で搬送されたLBAのホームノードを決定するステップであって、LBAのホームノードは、LBAと第2の書き込み対象のデータのフィンガープリントとのマッピング関係を管理するように構成される、ステップをさらに含んでもよい。
【0013】
可能な一設計では、第2の書き込み要求に基づいて第2の書き込み要求のホームノードを決定するステップは、第2の書き込み要求で搬送されたLBAに基づいて第2の書き込み要求のホームノードを決定するステップを含んでもよい。この可能な設計では、特に、第2の書き込み要求のホームノードは、第2の書き込み要求で搬送されるLBAのホームノードである。
【0014】
上記では、データ書き込みプロシージャで第1のストレージノードによって実行されるステップが説明のために例として用いられており、以下、データ読み出しプロシージャで第1のストレージノードによって実行されるステップを説明する。
【0015】
可能な一設計では、第1のストレージノードは、第1の読み出し要求によって要求されている第1の読み出し対象のデータのフィンガープリントを受信し、次いで、第1の読み出し対象のデータのフィンガープリントに基づいて第1の読み出し対象のデータの書き込みロケーションを取得し、第1の読み出し対象のデータの書き込みロケーションから第1の読み出し対象のデータのストライピングされたデータを読み出す。第1のストレージノードは第1の読み出し対象のデータの書き込みロケーションと第1の読み出し対象のデータのフィンガープリントとのマッピング関係を記憶している。
【0016】
可能な一設計では、第1のストレージノードは、第1の読み出し要求を受信し、第1の読み出し要求は第1のLBAを搬送し、次いで、第1のストレージノードは、第1のLBAに基づいて、第1の読み出し要求によって要求されている第1の読み出し対象のデータの書き込みロケーションを取得し、第1の読み出し対象のデータの書き込みロケーションから第1の読み出し対象のデータのストライピングされたデータを読み出す。第1のストレージノードは第1の書き込み対象のデータの書き込みロケーションと第1のLBAとのマッピング関係を記憶している。
【0017】
データ読み出しプロシージャにおいて上記で提供されている技術的解決手段は、第1のストレージノードが、読み出し動作を実行するストレージノードとして用いられている例を用いて説明されている。いくつかの他の実施形態では、第1のストレージノードは以下の他のステップをさらに実行してもよい。
【0018】
可能な一設計では、第1のストレージノードは、ホストによって送信された第2の読み出し要求を受信し、次いで、第2の読み出し要求に基づいて第2の読み出し要求のホームノードを決定し、第2の読み出し要求のホームノードが第1のストレージノードである場合、第1のストレージノードは、第2の読み出し要求に応答して読み出し動作を実行し、または、第2の読み出し要求のホームノードが第2のストレージノードである場合、第1のストレージノードは、第2のストレージノードが第2の読み出し要求に応答して読み出し動作を実行するように、第2のストレージノードに第2の読み出し要求を転送する。読み出し動作を実行する実現例については、上記で提供されている技術的解決手段や以下で提供されている特定の実現例を参照し、ここでは詳細を重ねて説明しない。
【0019】
可能な一設計では、第2の読み出し要求に基づいて第2の読み出し要求のホームノードを決定するステップは、第2の読み出し要求で搬送されたLBAのホームノードを決定するステップであって、LBAのホームノードは、LBAと第2の読み出し要求によって要求されている第2の読み出し対象のデータのフィンガープリントとのマッピング関係を管理するように構成される、ステップと、次いで、第2のLBAのホームノードから第2の読み出し対象のデータのフィンガープリントを取得するステップと、第2の読み出し対象のデータのフィンガープリントに基づいて第2の読み出し要求のホームノードを決定するステップとを含んでもよい。これの代わりに、第2の読み出し要求で搬送されたLBAのホームノードが決定され、次いで、第2の読み出し対象のデータのフィンガープリントと第2の読み出し要求のホームノードとが第2のLBAのホームノードから取得される。この可能な設計では、特に、第2の読み出し要求のホームノードは第2の読み出し対象のデータのホームノードである。
【0020】
可能な一設計では、第2の読み出し要求に基づいて第2の読み出し要求のホームノードを決定するステップは、第2の読み出し要求で搬送されたLBAに基づいて第2の読み出し要求のホームノードを決定するステップを含んでもよい。この可能な設計では、特に、第2の読み出し要求のホームノードは、第2の読み出し要求で搬送されるLBAのホームノードである。
【0021】
第2の態様に係れば、ストレージノードが上記の方法例にしたがってストレージノードに対して機能モジュールの分割を実行することができる、ストレージノードが提供され、たとえば、機能に対応して機能モジュールを分割してもよいし、2つ以上の機能を1つの処理モジュールに一体化してもよい。
【0022】
第3の態様に係れば、ストレージおよびプロセッサを含むストレージノードであって、ストレージはコンピュータプログラムを記憶するように構成され、コンピュータプログラムがプロセッサによって実行されるとき、第1の態様または第1の態様の、いずれかの可能な設計に係る方法が実行される、ストレージノードが提供される。ストレージはメモリおよび/またはメモリチップおよび/またはそれに類するものであってもよい。プロセッサはCPUおよび/または制御ストレージおよび/またはそれに類するものであってもよい。
【0023】
第4の態様に係れば、第2の態様または第3の態様に係るストレージノードを含むデータアクセスシステムであって、ストレージノードはスイッチおよびホストを用いてストレージシステム中の少なくとも1つの第2のストレージノードと通信し、少なくとも1つの第2のストレージノードに含まれる物理ディスクがストレージノードの仮想ディスクにマッピングされる、データアクセスシステムが提供される。
【0024】
本出願は、コンピュータプログラムを記憶するコンピュータ可読記憶媒体であって、プログラムがコンピュータ上で動作するとき、コンピュータは第1の態様または第1の態様の、いずれかの可能な設計に係る方法を実行する、コンピュータ可読記憶媒体をさらに提供する。
【0025】
本出願は、コンピュータプログラムプロダクトであって、コンピュータプログラムプロダクトがコンピュータ上で動作するとき、コンピュータは上記の態様のいずれか1つに係る方法を実行する、コンピュータプログラムプロダクトをさらに提供する。
【0026】
本出願は、指示を記憶する通信チップであって、通信チップがストレージノード上で動作するとき、ストレージノードは第1の態様または第1の態様の、いずれかの可能な設計に係る方法を実行する、通信チップをさらに提供する。
【0027】
上記で提供されているいずれの装置またはコンピュータ記憶媒体またはコンピュータプログラムプロダクトも、上記で提供されている対応する方法を実行するのに用いられると理解してもよい。したがって、装置またはコンピュータ記憶媒体またはコンピュータプログラムプロダクトによって奏されることが可能である有利な効果については、対応する方法の有利な効果を参照し、ここでは詳細を重ねて説明しない。
【図面の簡単な説明】
【0028】
図1】先行技術に係るストレージシステムのアーキテクチャの概略図である。
図2】本出願の実施形態で提供される技術的解決手段が適用可能であるシステムアーキテクチャの概略図である。
図3】本出願の実施形態に係る物理ディスクと仮想ディスクとの間のマッピングの概略図である。
図4a図2に示されているシステムアーキテクチャのハードウェア形態の正面図である。
図4b図2に示されているシステムアーキテクチャのハードウェア形態の背面図である。
図4c図2に示されているシステムアーキテクチャのハードウェア形態の上面図である。
図5図2に示されているシステムアーキテクチャの拡張システムアーキテクチャの概略図である。
図6A】本出願の実施形態に係るデータ書き込み方法のフローチャート1である。
図6B】本出願の実施形態に係るデータ書き込み方法のフローチャート1である。
図7】本出願の実施形態に係る図6Aおよび図6Bにおけるデータ読み出し方法のフローチャートである。
図8A】本出願の実施形態に係るデータ書き込み方法のフローチャート2である。
図8B】本出願の実施形態に係るデータ書き込み方法のフローチャート2である。
図9】本出願の実施形態に係る図8Aおよび図8Bにおけるデータ読み出し方法のフローチャートである。
図10A】本出願の実施形態に係るデータ書き込み方法のフローチャート3である。
図10B】本出願の実施形態に係るデータ書き込み方法のフローチャート3である。
図11】本出願の実施形態に係る図10Aおよび図10Bにおけるデータ読み出し方法のフローチャートである。
図12】本出願の実施形態に係るデータ書き込み方法のフローチャート4である。
図13】本出願の実施形態に係る図12におけるデータ読み出し方法のフローチャートである。
図14】本出願の実施形態に係るストレージノードの概略構成図である。
【発明を実施するための形態】
【0029】
本明細書中の用語「複数の」は、2または2を超えることを意味する。本明細書中の用語「第1」、「第2」などは異なる対象の識別のみに用いられ、その順序を限定しない。たとえば、第1のストレージノードと第2のストレージノードとは、異なる対象の識別に用いられ、その順序を限定しない。本明細書中の用語「および/または」は関連する対象を説明する関連関係のみを説明し、3つの関係が存在する場合があることを表わす。たとえば、Aおよび/またはBは、Aのみが存在する、AとBとの両方が存在する、Bのみが存在する、の3つの場合を表わす場合がある。さらに、本明細書中の記号「/」は関連する対象の「または」関係を概して示す。
【0030】
図2は、本出願で提供される技術的解決手段が適用可能であるシステムアーキテクチャの概略図である。図2に示されているシステムアーキテクチャはホスト1とストレージシステム2とを含んでもよい。ストレージシステム2は、スイッチ21と、スイッチ21に個別に接続される複数のストレージノード22とを含んでもよい。信頼性を改善するために、ストレージシステム2には通常、少なくとも2つのスイッチ21が設けられてもよいと理解してもよい。この場合、各ストレージノード22はスイッチ21のすべてに接続される。ストレージシステム2が2つのスイッチ21を含むものが、説明のために図2の一例として用いられている。
【0031】
スイッチ21は、ストレージノード22と通信し、かつストレージノード22とホスト1とを接続するように構成されている。たとえば、スイッチ21は、Ethernet(登録商標)スイッチ(ethernet switch)、IBスイッチ(infiniband switch)、PCIeスイッチ(PCIe switch)などであってもよいが、これらに限定されない。
【0032】
たとえば、機能に応じて分割される場合、スイッチ21は内部交換ポート211とストレージサービスポート212とを含んでもよい。適宜、スイッチ21は拡張ポート213をさらに含んでもよい。内部交換ポート211はストレージノード22に接続されるポートである。各スイッチ21には1つ以上の内部交換ポート211が設けられてもよく、各内部交換ポート211は1つのストレージノード22の1つの内部ポート220に接続されてもよい。ストレージサービスポート212はホスト1に接続されるポートであり、ストレージサービスを外部デバイスに提供するように構成されている。各スイッチ21には1つ以上のストレージサービスポート212が設けられてもよい。複数のストレージシステム2のスケールアウトを実施するために、別のスイッチ21に接続されるように拡張ポート213が構成されている。上記のポートが使用に応じて分割される点に留意するべきである。これらのポートは物理的に同じであってもよい。たとえば、場合によっては、拡張ポート213がストレージサービスポート212として用いられてもよく、他の例をいちいち挙げない。理論的には、内部交換ポート211はストレージサービスポート212または拡張ポート213として用いられてもよく、実際には、内部交換ポート211はストレージシステムのハードウェア形態に応じて設定されてもよい。たとえば、図4a図4cに示されているハードウェア形態では、内部交換ポート211はシャーシ内に位置し、ストレージサービスポート212と拡張ポート213とはシャーシの表面に位置するので、内部交換ポート211は、通常、ストレージサービスポート212として用いられたり拡張ポート213として用いられたりしない。
【0033】
ストレージノード22は、入力/出力処理(input/output,I/O)能力と記憶空間とを提供し、ストレージシステム内にあるコア構成要素である。たとえば、各ストレージノード22には1つ以上の内部ポート220が設けられてもよく、この場合、内部ポート220はスイッチ21の内部交換ポート211に接続されるポートであり、各内部ポート220は1つのスイッチ21に接続されてもよい。たとえば、内部ポート220は、リモート・ダイレクト・メモリ・アクセス(remote direct memory access,RDMA)ネットワークインタフェイスカードなどによって設けられてもよい。スイッチ21がEthernetスイッチである場合、冗長性Ethernetネットワーク(ストレージシステム2の内部Ethernetとも称する)が形成される。これにより、いずれかのポートや接続部やスイッチが故障する場合でも利用可能な接続部が存在する実現例が容易になる。
【0034】
一実現例では、図2に示されているストレージノードは、I/O処理モジュール221と、I/O処理モジュール221に接続されている1つ以上のストレージモジュール222とを含む。
【0035】
I/O処理モジュール221は、I/O要求(読み出し/書き込み要求を含む)の入力/出力と、関連する処理プロシージャの実行とを担う。特定の実施の際、I/O処理モジュール221は、I/Oバスを用いて少なくとも1つのRDMAネットワークインタフェイスカードに接続される少なくとも1つの中央処理装置(central processing unit,CPU)であってもよい。さらに、CPUは特定の数量のメモリにさらに接続されてもよい。スイッチ21に接続するために、RDMAネットワークインタフェイスカードは内部ポート220を提供する。たとえば、I/Oバスは、ペリフェラル・コンポネント・インタコネクト・エクスプレス(peripheral component interconnect express,PCIe)バスであってもよいが、これに限定されない。物理的な実施の際、ここでのCPU、I/OバスおよびRDMAネットワークインタフェイスカードはともに部分的に一体化されたり全体的に一体化されたりしてもよく、たとえば、システムオンチップ(system on chip,Soc)やフィールド・プログラマブル・ゲート・アレイ(field-programmable gate array,FPGA)を形成してもよいし、汎用CPU(たとえば、Xeon CPU)や汎用RDMAネットワークインタフェイスカードなどの汎用構成要素を形成してもよい点に留意するべきである。I/O処理モジュール221は内部I/Oバスを用いてストレージモジュール222に接続されている。
【0036】
ストレージモジュール222は、少なくとも1つのストレージコントローラと、各ストレージコントローラに接続される複数のメモリチップとを含んでもよい。メモリチップは、NandFlashチップであってもよいし、相変化メモリ(phase change memory,PCM)、磁気ランダムアクセスメモリ(magnetic random access memory,MRAM)や抵抗変化型メモリ(resistive random access memory,RRAM(登録商標))などの別の不揮発性メモリチップであってもよい。ストレージコントローラは、特定用途向け集積回路(application specific integrated circuit,ASIC)チップであってもよいし、FPGAであってもよい。同様に、ここでのストレージモジュールの物理的形態は、汎用ソリッドステートドライブ(solid state drives,SSD)であってもよいし、I/Oバスを用いてストレージコントローラ、メモリチップおよびI/O処理モジュール221を接続するソリッドステートドライブであってもよい。
【0037】
一実現例では、I/O処理モジュール221とストレージモジュール222との両方が汎用構成要素を含む場合、たとえば、汎用CPU(たとえばX86 Xeon)、汎用RDMAネットワークインタフェイスカードおよび汎用SSDなどの構成要素を含む場合、ストレージノード22は汎用サーバである。
【0038】
本出願で示されている技術的解決手段では、ホストとストレージシステムとがNVMeオーバーファブリック(NVMe over Fabric,NOF)プロトコルを用いて互いにアクセスしてもよい。各ストレージノードに含まれる物理ディスク(たとえばメモリチップ)の全部または一部が別のストレージノードにマッピングされて、別のストレージノードの仮想ディスクとして用いられてもよい。たとえば、物理ディスクはNOFプロトコルに基づいてマッピングされる。このようにして、読み出し/書き込み動作が実行されるとき、ストレージノード中のソフトウェアシステム(すなわち、CPUやメモリコントローラによって実行される指示)が当該仮想ディスクをローカル物理ディスクとして用いてもよい。すなわち、本出願は分散ストレージシステムを提供する。このストレージシステムでは、異なるストレージノードがスイッチを用いて互いと通信し、NOFプロトコルで提供されるRDMA方式でRDMAネットワークインタフェイスカードを用いて互いにアクセスする。したがって、図1に示されているシステムアーキテクチャと比較して、このストレージシステムはデュアルコントローラアレイのCPUやストレージコントローラの処理能力によって制限されず、したがって、ストレージシステムの処理能力を大幅に改善することができる。
【0039】
図3は、物理ディスクと仮想ディスクとの間のマッピングの概略図である。図3は、ストレージシステムが、1から16まで番号がそれぞれ付された16個のストレージノードを含み、ストレージノード2~15の各々の物理ディスクがストレージノード1にマッピングされてストレージノード1の仮想ディスクとして用いられる例を用いて説明されている。さらに、メモリチップがNVMe SSDであるものが、説明のために一例として用いられている。たとえば、ストレージノード2~15の各々の物理ディスクをストレージノード1にマッピングすることを実施することは、ストレージシステムが初期化されるとき、ストレージノード1にマッピングされることが可能にされた物理ディスクに関する情報が、ストレージノード2~15の各々で設定され、ストレージノード2~15の各々とストレージノード1との間で接続が確立されることである。接続が確立された後、ストレージノード1が、ストレージノード1にマッピングされることが可能にされ、ストレージノード2~15の各々によって決定された物理ディスクに関する情報を取得し、ストレージノード1にマッピングされる物理ディスクにドライブレターを割り付けてこの物理ディスクをストレージノード1の仮想ディスクとして用い、仮想ディスクとリモート物理ディスクとのマッピング関係を記録してもよい。このようにして、16個のNVMe SSDが存在するが、実際にはストレージノード1には1つしかNVMe SSDがなく、その他の15個のNVMe SSDがNOFプロトコルに基づいて他のストレージノードのNVMe SSDを仮想化することによって取得されることをストレージノード1のソフトウェアシステムが感知してもよい。NOFプロトコルの低遅延特性のため、ローカルディスク(すなわち物理ディスク)がアクセスされるときのパフォーマンスと、仮想ディスクがアクセスされるときのパフォーマンスとの差は無視してもよい。
【0040】
以下、NOFプロトコルを簡潔に説明する。NOFプロトコルの目的は、NVMe SSDがローカルコンピュータシステムから分離され得ることであり、すなわち、リモートNVMe SSDがRDMAネットワークインタフェイスカードを用いてローカルコンピュータシステムに接続され得て、仮想NVMe SSDがローカルコンピュータシステムで「見られる」ことである。RDMA技術が用いられるので、リモートNVMe SSD(すなわち仮想NVMe SSD)とローカルNVMe SSD(すなわち、物理NVMe SSD)とのパフォーマンス差は基本的にない。NOFはNVMeのすべてのコマンドを有しており、また、いくつかの管理コマンド、たとえば、Authentication Send、Authentication Receive、Connect、Property GetおよびProperty Setが追加されている。RDMAネットワークに適合させるために、元のNVMeプロトコルと比較してNOFプロトコルのデータ伝送方式およびプロシージャのいくつかの変更があり、当該変更は、コマンド(たとえば、読み出し/書き込み要求)/データを、NVMeによって用いられるPCIeメモリ空間マッピング方式で伝送する代わりに、RDMA方式で伝送することを特に含んでもよい。これは、NOFシステムでは、イニシエータ(initiator)とターゲット(target)とが相手側のメモリ空間を「見る」ことができないからである。
【0041】
本出願の実現例では、イニシエータはホストであってもよく、ターゲットはストレージノードであってもよい。別の実現例では、イニシエータはストレージノードであってもよく、ターゲットは別のストレージノードであってもよい。
【0042】
NOFプロトコルでは、データ読み出しプロシージャは、読み出し要求(すなわちREADコマンド)を受信した後、イニシエータのバッファに書き込まれる対象であるアドレス情報を読み出し要求に基づいてターゲットによって取得することを含んでもよい。その後、ターゲットがイニシエータに対してRDMA_WRITE動作を開始して、ホストのバッファに読み出されるデータを書き込む。次に、ターゲットがイニシエータに対してRDMA_SEND動作を開始して、伝送が完了したことをイニシエータに通知する。
【0043】
NOFプロトコルでは、データ書き込みプロシージャは、書き込み要求(すなわちWriteコマンド)をイニシエータによってセットアップし、書き込み要求をRDMA_SEND動作を用いてターゲットに送信することを含んでもよい。書き込み要求を受信した後、ターゲットがRDMA_READ動作を開始し、書き込み要求に応答して書き込まれる対象であるデータをイニシエータから取得する。イニシエータが応答して出したデータを受信した後、ターゲットがイニシエータにRDMA_SEND動作を開始して、伝送が完了したことをイニシエータに通知する。
【0044】
以下、ストレージシステム2のハードウェア形態を説明する。スイッチ21のハードウェア形態もストレージノード22のハードウェア形態も本出願では限定されない。ストレージノード22とスイッチ21とが1つのシャーシ内に存在してもよい。ストレージノード22が汎用サーバとして実施される場合、ストレージノード22とスイッチ21とが1つのシャーシ内に存在してもよい。ストレージノード22とスイッチ21とが1つのシャーシ内に存在する場合、シャーシは、1つ以上のスイッチ、1つ以上の電源、複数のストレージノード、ストレージノード22とスイッチ21とを接続するバックプレーンなどを含んでもよい。
【0045】
図4a図4cは、図2に示されているシステムアーキテクチャのハードウェア形態を示す。図4aはラックシャーシの正面図であり、図4bはラックシャーシの背面図であり、図4cはラックシャーシの上面図である。図4a~図4cから、ラックシャーシが、2つのEthernetスイッチと、4つの冗長性電源と、16個のストレージノードと、ストレージノードとEthernetスイッチとを接続するバックプレーンとを含むことが分かる。
【0046】
図4aに示されている正面図と図4cに示されている上面図とから、ラックシャーシに16個の空きスロットが設けられ、各空きスロットに1つのストレージノードが挿入されてもよいことが分かる。実際の実施の際、挿入ストレージノードがすべての空きスロットに挿入されることがなくてもよく、冗長性要求を満たすために、少なくとも2つのストレージノードが挿入されてもよい。各ストレージノードには、ストレージノードを空きスロットに挿入するように構成されている1つ以上のキャリアが設けられている。
【0047】
図4bに示されている背面図から、Ethernetスイッチによってストレージサービスポートおよび拡張ポートが設けられていることが分かる。ここでのサービスポートは様々なEthernet速度(たとえば10G/40G/25G/50G/100G)をサポートするポートであってもよく、拡張ポートは高速度(たとえば、40G/50G/100G)をサポートするポートであってもよい。
【0048】
図4cに示されている上面図から、Ethernetスイッチの内部ポートがバックプレーンを用いてストレージノードの内部ポートに接続され得ることが分かる。
【0049】
図4a図4cに示されているラックシャーシが図2に示されているシステムアーキテクチャのハードウェア形態の一例にすぎず、図2に示されているシステムアーキテクチャのハードウェア形態に対する限定を構成しない点に留意するべきである。
【0050】
図5は拡張システムアーキテクチャを示す。このシステムアーキテクチャでは、ストレージシステムがストレージサービスポートを用いて外部ストレージにサービスを提供し、ネットワークを用いてM個のホストに接続され、ここで、Mは1以上の整数である。ここでのネットワークはダイレクトネットワークや、スイッチを含むネットワークであってもよい。ネットワークがEthernetネットワークである場合、ストレージシステムによって提供される外部サービスは、iSCSI、NOF、iSER、NFS、Sambaなどのうちのいずれか1つを含む(ただし、これらに限定されない)Ethernetベースのストレージプロトコルを用いて提供されてもよい。さらに、ストレージシステムでは拡張ポートを用いてスケールアウトを実行してもよい。図5に示されているように、このシステムアーキテクチャはN個のストレージシステムを含み、ここで、Nは2以上の整数である。同様に、ダイレクトネットワークを用いたりスイッチを用いたりしてスケールアウトが実行されてもよい。
【0051】
以下、添付の図面を参照して、本出願にしたがって提供されるシステムアーキテクチャにおけるデータ読み出し/書き込みプロシージャを説明する。その前に、ストレージシステムが16個のストレージノードを含む例を用いて以下に示されている実施形態のすべてが説明されており、ストレージノードに1から16まで番号が付されている点に留意するべきである。当然、特定の実施の際、本出願はこれに限定されない。さらに、各ストレージノードによって実行されるステップがストレージノードのCPUおよび/またはストレージコントローラによって実行されてもよい点に留意するべきである。
【0052】
実施形態1
図6Aおよび図6Bを参照して、図6Aおよび図6Bは、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ書き込み方法のフローチャートである。詳細は以下の通りである。
【0053】
S101:ホストが書き込み要求をストレージシステムに送信し、この書き込み要求はLBA 1と書き込み対象のデータとを含む。ストレージシステム中のストレージノード1が書き込み要求を受信する。特に、ホストはスイッチを用いて書き込み要求をストレージノード1に転送する。
【0054】
ストレージノード1はストレージシステムのいずれのストレージノードであってもよい。
【0055】
通常、書き込みプロシージャで利用可能なストレージノードなどに起因する書き込み対象のデータのロスを避けるために、ホストから書き込み要求を受信した後、ストレージシステムが書き込み要求をバックアップする。詳細については、S102およびS103を参照する。S102およびS103が適宜追加可能なステップであると理解してもよい。
【0056】
S102:ストレージノード1が書き込み要求をストレージノード2などのストレージノード1のミラーノードに送信する。特に、ストレージノード1がスイッチを用いて書き込み要求をストレージノード2に送信する。ストレージノード2が書き込み要求を受信する。
【0057】
ストレージシステム中のいずれか2つのストレージノードが互いのミラーノードであってもよい。通常、互いのミラーノードである2つのストレージノードが特定のルールにしたがって予め設定されてもよい。たとえば、ロードバランシングを実施するために、このルールは特定のルールにしたがって(ただし、これに限定されない)設定されてもよい。ここでのロードバランシングは、ミラー動作を実行するステップが可能な限りストレージノードによって均等に実行されることを意味する。たとえば、連続する番号が付された2つのストレージノードが互いにミラーノードとして用いられる。たとえば、ストレージノード1とストレージノード2とが互いにミラーノードであり、ストレージノード3とストレージノード4とが互いにミラーノードである、などである。
【0058】
S103:ストレージノード2が書き込み要求をバッファリングして、ストレージノード1にミラー完了指標を返し、ストレージノード1がミラー完了指標を受信する。
【0059】
S104:ミラー完了指標を受信した後、ストレージノード1が書き込み動作完了指標をホストに送信する。
【0060】
通常、ストレージシステムがより迅速にホストの書き込み要求に応答するようにするために、ミラー完了後、ストレージシステムは直ちに書き込み動作完了指標をホストに送信する。ストレージシステムは以下のステップS105~S118の一部または全部の実行を継続して、書き込み要求中の書き込み対象のデータを書き込む。
【0061】
S105:ストレージノード1が書き込み対象のデータのフィンガープリントを生成し、フィンガープリントに基づいて書き込み対象のデータのホームノード、たとえばストレージノード3を決定する。
【0062】
データの特徴を一義的に識別するのにデータのフィンガープリントが用いられる。言い換えれば、データのフィンガープリントをデータのアイデンティティ(identity,ID)として理解してもよい。2つのデータが同じフィンガープリントを有する場合、当該2つのデータは同じであるとみなされる。2つのデータのフィンガープリントが異なる場合、当該2つのデータは異なるとみなされる。本出願では、計算からデータのフィンガープリントをどのように取得するのかは限定されない。たとえば、データにハッシュ(hash)演算を実行することによってフィンガープリントが取得されてもよい。たとえば、ハッシュ演算は、セキュアハッシュアルゴリズム1(secure hash algorithm 1,SHA-1)、巡回冗長検査(cyclic redundancy check,CRC)32などであってもよいが、これらに限定されない。CRC32はCRCの特定の実現例であり、32ビット検査値を生成することができる。一例としてSHA-1を用いれば、ハッシュ演算がデータに実行された後、160ビットのダイジェストが取得され、ダイジェストはデータのフィンガープリントである。
【0063】
データのホームノードが、データに書き込み動作を実行するストレージノードである。本出願では、データのホームノードをどのように決定するのかは限定されない。特に、たとえば、ロードバランシングを実施するために、特定のアルゴリズム(ただし、これに限定されない)に基づいてデータのホームノードが特別に決定されてもよい。ここでのロードバランシングは、書き込み動作を実行するステップが可能な限りストレージノードによって均等に実行されることを意味する。たとえば、アルゴリズムは剰余演算であってもよい。特に、剰余演算はフィンガープリントに実行され、そうして、取得された値がaである場合、データのホームノードはストレージノードa+1であり、ここで、a≧0であり、aは整数であり、ストレージシステム中のストレージノードには1から番号が付される。たとえば、ストレージシステムに全16個のストレージノードが存在し、データのフィンガープリントが65537である場合、65537の16による剰余演算が実行されてもよく、そうして1が取得され、すなわち、データのホームノードはストレージノード2である。
【0064】
書き込み対象のデータのホームノードがデータのフィンガープリントに基づいて決定され、ストレージノード1のミラーノードがストレージノード1に基づいて決定されるので、書き込み対象のデータのホームノードとストレージノード1のミラーノードとの間に関連関係はない点に留意するべきである。書き込み対象のデータのホームノードとストレージノード1のミラーノードとが同じストレージノードであってもよいし、異なるストレージノードであってもよい。本実施形態では、書き込み対象のデータのホームノードとストレージノード1のミラーノードとが異なるストレージノードであるものが説明のために一例として用いられている。
【0065】
ホストによって送信された書き込み要求を受信するストレージノード(本実施形態では、ストレージノード1が一例として用いられている)も書き込み要求で搬送される書き込み対象のデータのホームノードとして用いられてもよいと理解してもよい。たとえば、上記の例に基づけば、書き込み対象のデータのフィンガープリントが65536である場合、65536の16による剰余演算が実行されてもよく、そうして0が取得され、すなわち、書き込み対象のデータのホームノードはストレージノード1である。
【0066】
S106:ストレージノード1が書き込み要求を書き込み対象のデータのホームノード(たとえばストレージノード3)に転送し、ストレージノード3が書き込み要求を受信する。
【0067】
S107:ストレージノード3がデータ分散情報セットについて問い合わせて、セットが書き込み対象のデータのフィンガープリントを含むか否かを判断する。
【0068】
セットが書き込み対象のデータのフィンガープリントを含んでいない場合、そのことは、ストレージシステムが書き込み対象のデータを記憶していなかったことを示し、S108が実行される。セットが書き込み対象のデータのフィンガープリントを含む場合、そのことは、ストレージシステムが書き込み対象のデータを記憶していたことを示し、S111が実行されて、繰り返し記憶されることが避けられ、記憶空間が省かれる。
【0069】
データのホームノードがデータ分散情報セットを管理してもよい。データのホームノードによって管理されるデータ分散情報セットに含まれるデータ分散情報の量は、ストレージノードによって実行されるIO動作の量に応じて増やされる。最初の時点(すなわち、ストレージノードが書き込み動作を実行しないとき)では、ストレージノードによって管理されるデータ分散情報セットが空であるとみなされてもよいし、ストレージノードによって管理されるデータ分散情報セットがストレージシステムで確立されていなかったとみなされてもよい。別の時点では、各データ分散情報セットは少なくとも1つのデータ分散情報を含んでもよい。データ分散情報はメタデータテーブルM1を用いて表わされてもよく、M1の関連説明は以下の通りである。
【0070】
S108:ストレージノード3が書き込み対象のデータをストライピングしてストライピングされたデータを取得し、ストライピングされたデータをストレージノード3の物理ディスクおよび/または仮想ディスクに書き込む。
【0071】
このステップを、データに冗長処理を実行するものとして理解してもよく、このステップの基本原理は、完全なデータ(特に、書き込み要求で搬送されるデータである)を分割して複数のデータブロックを取得するというものであり、適宜、1つ以上のパリティブロックが生成されてもよい。その後、これらのデータブロックおよびパリティブロックは異なるディスク(すなわち磁気ディスク)に記憶される。S108のストライピングされたデータは、データブロックを含んでもよく、パリティブロックをさらに含んでもよい。本出願では、冗長処理方式は限定されない。たとえば、冗長処理の方式は、複数独立ディスク冗長性アレイ(redundant array of independent disks,RAID、略してディスクアレイ)やイレイジャコーディング(erasure coding,EC)であってもよいが、これらに限定されない。
【0072】
本出願では、1つ以上のストレージノードの物理ディスクが同じストレージノードの仮想ディスクにマッピングされてもよいので、データがストレージノード3に書き込まれるときに仮想ディスクがローカルディスクとして用いられてもよい。このようにして、ストライピングされたデータが書き込まれるディスクとして仮想ディスクをストレージノード3が選択してもよい。データが仮想ディスクに書き込まれるとき、別のストレージノードの物理ディスクであって、仮想ディスクにマッピングされている物理ディスクをストレージノード3が最初に決定し、その後、RDMA方式で、NOFプロトコルに基づいて、仮想ディスクに書き込まれるデータブロックを、別のストレージノードの決定された物理ディスクに書き込んでもよい。
【0073】
たとえば、ストレージシステムが16個のストレージノードを含み、冗長処理方式がECである。1つの可能な実現例は、ストレージノード3がECアルゴリズムに基づいて書き込み対象のデータをストライピングして14個のデータブロックと2つのパリティブロックとを取得するものである。その後、16個のブロックの各々がストレージシステムの1つのストレージノードに書き込まれる。
【0074】
S109:ストレージノード3がストライピングされたデータの書き込みロケーションを記録する。特に、ストレージノード3は書き込み対象のデータの分散情報を記録することによって、ストライピングされたデータの書き込みロケーションを記録してもよい。
【0075】
データ分散情報はメタデータテーブルM1を用いて表わされてもよく、メタデータテーブルM1に含まれる要素は表1に示されているものであってもよい。
【0076】
【表1】
【0077】
1つのデータのストライピングされたデータの書き込みロケーションを表わすのにFingerPrint、Seg.diskID、Seg.startLBAおよびSeg.lengthが用いられてもよい。
【0078】
hostLBAが、ホストとストレージシステムとの間での情報交換中に用いられるLBAを表わす点に留意するべきである。Seg.startLBAは、ストレージモジュールでの書き込み対象のデータの開始LBAアドレスを表わす。本出願では表1の要素の記録方式を限定しない。たとえば、ストライピングされたデータのすべてのブロックが同じ長さのブロックである場合、長さが1つだけ記録される。他の例をいちいち挙げない。
【0079】
たとえば、S108の例に基づけば、ステップS109が実行された後、書き込み対象のデータの分散情報であって、ストレージノード3によって記録される分散情報は、書き込み対象のデータのフィンガープリント、LBA 1、書き込み対象のデータの全長、書き込み対象のデータの14個のデータブロックおよび2つの冗長性ブロックの各々のタイプならびにデータが書き込まれるディスクのIDおよび長さなどの情報を含んでもよい。
【0080】
データのホームノードが書き込み要求/書き込み対象のデータに応じて書き込み動作を実行するものとしてS108およびS109を適用してもよい。信頼性を改善するために、データのホームノードがメタデータテーブルM1に冗長処理を実行してもよい。詳細については、S110を参照する。S110が適宜追加可能なステップであると理解してもよい。
【0081】
S110:ストレージノード3がストライピングされたデータの書き込みロケーションをストレージノード3の物理ディスクおよび/または仮想ディスクに書き込む。特に、ストレージノード3は、書き込み対象のデータの分散情報をストレージノード3の物理ディスクおよび/または仮想ディスクに書き込むことによって、ストライピングされたデータの書き込みロケーションをストレージノード3の物理ディスクおよび/または仮想ディスクに書き込んでもよい。
【0082】
このステップを、データ分散情報に冗長処理を実行するものとして理解することができる。このステップは適宜追加可能なステップであると理解してもよい。冗長処理方式は本出願では限定されない。たとえば、この方式は、マルチコピー、ECやRAIDなどの方式であるが、これらに限定されない。一例として3つのコピーを用いれば、ストレージノード3がローカルで書き込み対象のデータの分散情報のコピーを1つセーブし、その後、ストレージシステムから2つのストレージノードを選択し、続いて、書き込み対象のデータの分散情報のコピーを2つ作成して、2つのストレージノードの1つずつに1つのコピーを書き込んでもよい。2つのストレージノードをどのように選択するのかは本出願では限定されない。たとえば、この選択が剰余演算(ただし、これに限定されない)を用いて実行される。
【0083】
S111:ストレージノード3が書き込み動作完了指標をストレージノード1にフィードバックし、ストレージノード1が書き込み動作完了指標を受信する。
【0084】
S105において、書き込み対象のデータのホームノードであって、ストレージノード1によって決定されたホームノードがストレージノード1である場合、S106およびS111が実行されなくてもよく、S107~S111がストレージノード1で実行されると理解してもよい。
【0085】
S112:ストレージノード1は、書き込み要求で搬送されたLBA 1のホームノード、たとえばストレージノード4を取得する。
【0086】
LBAのホームノードは、LBAとフィンガープリントとのマッピング関係を管理するように構成されている。本出願では、LBAのホームノードをどのように決定するのかは限定されない。たとえば、ロードバランシングを実施するために、特定のアルゴリズム(ただし、これに限定されない)に基づいてLBAのホームノードが特別に決定されてもよい。ここでのロードバランシングは、LBAとフィンガープリントとのマッピング関係を管理するステップが可能な限りストレージノードによって均等に実行されることを意味する。たとえば、アルゴリズムは剰余演算であってもよい。
【0087】
データのホームノードがデータのフィンガープリントに基づいて決定され、LBAのホームノードがLBAに基づいて決定される点に留意するべきである。したがって、データのホームノードとLBAのホームノードとの間には関連関係はなく、データのホームノードとLBAのホームノードとは同じストレージノードであっても異なるストレージノードであってもよい。LBAのホームノードとストレージノード1のミラーノードとの間の関連関係はない。本実施形態では、LBA 1のホームノードと書き込み対象のデータのホームノードとの両方がストレージノード1のミラーノードとは異なるものが説明のために一例として用いられている。
【0088】
S113:ストレージノード1が書き込み要求で搬送された書き込み対象のデータのフィンガープリントとLBA 1とをストレージノード4に送信する。
【0089】
S114:ストレージノード4が書き込み要求で搬送された書き込み対象のデータのフィンガープリントとLBA 1とのマッピング関係を記録する。
【0090】
マッピング関係はメタデータテーブルM2を用いて表わされてもよい。メタデータテーブルM2に含まれる要素は表2に示されているものであってもよい。
【0091】
【表2】
【0092】
一実現例では、メタデータテーブルM2は上記のFingerPrintおよびLBA listのみを含むことができる。
【0093】
1つのLBAリストが1つ以上のLBAを含んでもよい。LBAリストは、単一のつなげられたリストとして表わされてもよい。同じフィンガープリントと複数のLBAとの間にマッピング関係が存在してもよい。たとえば、ホストが4つの書き込み要求をストレージシステムに送信すると想定して、4つの書き込み要求の関連情報が表3に示されている。
【0094】
【表3】
【0095】
表3に基づけば、ストレージシステムが4つの書き込み要求を実行した後、ストレージノードAによって記録されるメタデータテーブルM2は表4に示される。
【0096】
【表4】
【0097】
表3に基づけば、ストレージシステムが4つの書き込み要求を実行した後、ストレージノードBによって記録されるメタデータテーブルM2は表5に示される。
【0098】
【表5】
【0099】
S115:ストレージノード4が書き込み要求で搬送された書き込み対象のデータのフィンガープリントとLBA 1とのマッピング関係をストレージノード4の物理ディスクおよび/または仮想ディスクに書き込む。
【0100】
このステップは、書き込み要求で搬送された書き込み対象のデータのフィンガープリントとLBA 1とのマッピング関係に冗長処理を実行するものとして理解されてもよい。このステップは適宜追加可能であると理解してもよい。冗長処理方式は本出願では限定されない。これらの例については上記の説明を参照してもよい。
【0101】
S116:ストレージノード4がマッピング関係完了指標をストレージノード1にフィードバックし、ストレージノード1がマッピング関係完了指標を受信する。
【0102】
このようにして、書き込み対象のデータがその後に読み出されるとき、同じフィンガープリントを有する複数のデータが同じノードで読み出されることが防止され、これにより、輻輳が防止される。LBAが異なるノードに分散させられる場合であって、その後に読み出し動作がデータに実行されるとき、書き込み対象のデータがLBAのホームノードから読み出されてもよい。詳細については、図7で説明されているデータ読み出しプロシージャを参照する。
【0103】
S117:ストレージノード1がストレージノード1の、ミラーノード(たとえばストレージノード2)に対するミラーデータを削除する指示を送信し、ストレージノード2が指示を受信する。
【0104】
S118:指示を受信した後、ストレージノード2が書き込み要求中のミラーデータを削除する。
【0105】
以上で、書き込みプロシージャは終了する。
【0106】
図7を参照して、図7は、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ読み出し方法のフローチャートである。詳細は以下の通りである。
【0107】
S201:ホストが読み出し要求をストレージシステムに送信し、この読み出し要求はLBA 1を搬送する。ストレージシステム中のストレージノード1が読み出し要求を受信する。特に、読み出し要求をホストがスイッチに送信し、読み出し要求を受信した後、スイッチが読み出し要求をストレージノード1に転送する。
【0108】
実施形態1では、図6Aおよび図6Bに示されているデータ書き込みプロシージャと、図7に示されているデータ読み出しプロシージャとの両方は、ホストからストレージノード1が要求(書き込み要求および読み出し要求を含む)を受信する例を用いて説明されている点に留意するべきである。実際の実施の際、書き込み要求/読み出し要求をスイッチが任意のストレージノードに転送するという思想に基づいて、実施形態1で示されているデータ書き込みプロシージャとデータ読み出しプロシージャとの両方が設計されているので、データ書き込みプロシージャおよびデータ読み出しプロシージャでは、書き込み要求を受信するストレージノードが、ホストによって送信された読み出し要求を受信するストレージノードとは異なってもよい。
【0109】
S202:ストレージノード1がLBA 1のホームノードを取得する。LBA 1のホームノードの取得の特定の実現例については、上記の説明を参照し、ここでは詳細を重ねて説明しない。上記の説明に基づけば、LBA 1の決定されたホームノードはストレージノード4であることが分かる。
【0110】
S203:ストレージノード1が読み出し要求をストレージノード4に送信し、ストレージノード4が読み出し要求を受信する。
【0111】
S204:ストレージノード4がLBAとデータのフィンガープリントとのマッピング関係に基づいて読み出し対象のデータのフィンガープリントを取得する。マッピング関係は表2に示されているメタデータテーブルM2などのテーブルに示されている。読み出し対象のデータのフィンガープリントは上記の説明の書き込み対象のデータのフィンガープリントである。適宜、ストレージノード4は読み出し対象のデータのホームノードをさらに取得してもよい。上記の説明に基づけば、読み出し対象のデータの決定されたホームノードがストレージノード3であることが分かる。
【0112】
S205:ストレージノード4が読み出し対象のデータのフィンガープリントをストレージノード1にフィードバックし、ストレージノード1が読み出し対象のデータのフィンガープリントを受信して、読み出し対象のデータのフィンガープリントに基づいて読み出し対象のデータのホームノード、すなわちストレージノード3を決定する。適宜、ストレージノード4は読み出し対象のデータのホームノードのID、すなわち、ストレージノード3のIDをストレージノード1にさらにフィードバックしてもよい。このように、ストレージノード1はフィンガープリントに基づいて読み出し対象のデータのホームノードを取得する必要がなく、したがって、ストレージノード1の計算複雑度が下げられることが可能である。
【0113】
S206:ストレージノード1が読み出し対象のデータのフィンガープリントをストレージノード3に送信し、ストレージノード3が読み出し対象のデータのフィンガープリントを受信する。
【0114】
S207:ストレージノード3が読み出し対象のデータのフィンガープリントに基づいて、読み出し対象のデータのストライピングされたデータの書き込みロケーションを決定し、表1に示されているメタデータテーブルM1などのテーブルに基づいてストライピングされたデータの書き込みロケーションを取得する。その後、ストライピングされたデータの一部または全部が書き込みロケーションから取得される。
【0115】
通常のデータ読み出しプロセスでは、読み出し対象のデータのデータブロックのみが読み出される必要があり、パリティブロックが読み出される必要はないと理解してもよい。これとは別に、データがリカバリされる必要があるシナリオでは、読み出し対象のデータのパリティブロックが読み出されてもよく、その際、たとえば、データはRAIDやECアルゴリズムなどに基づいてリカバリされてもよい。
【0116】
S208:ストレージノード3が、読み出されたデータブロックに基づいて、完全なデータ、すなわち、ストライピングが実行される前のデータを構成する。以上で、ストレージノード3が読み出し対象のデータを取得すると考えられる。ストレージノード3が読み出し対象のデータをストレージノード1にフィードバックし、ストレージノード1が読み出し対象のデータを受信する。
【0117】
S209:読み出し対象のデータを受信した後、ストレージノード1が読み出し対象のデータをホストにフィードバックする。
【0118】
図7に示されているデータ読み出しプロシージャは、図6Aおよび図6Bに示されているデータ書き込みプロシージャに基づいて説明されている。LBA 1のホームノードがストレージノード1と同じであるシナリオ、および/または読み出し対象のデータのホームノードがストレージノード1と同じであるシナリオ、および/またはLBA 1のホームノードが読み出し対象のデータのホームノードと同じであるシナリオの実施形態を、図7に示されているデータ読み出しプロシージャに基づいて決定することが当業者は当然できる。これらのシナリオについてはここでは重ねていちいち説明しない。
【0119】
本実施形態に係るデータ読み出し/書き込みプロシージャでは、読み出し/書き込み動作を実行するステップがデータのフィンガープリントに基づいてストレージシステム中のストレージノードに割り付けられ、フィンガープリントとホストのLBAとを管理するステップがLBAに基づいてストレージシステム中のストレージノードに割り付けられる。このようにして、本実施形態はロードバランシングを実施するのに有用であり、したがって、システムパフォーマンスが改善される。
【0120】
実施形態2
図8Aおよび図8Bを参照して、図8Aおよび図8Bは、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ書き込み方法のフローチャートである。詳細は以下の通りである。
【0121】
S301~S304については、S101~S104を参照する。当然、本出願はこれに限定されない。
【0122】
S305については、S112を参照する。当然、本出願はこれに限定されない。
【0123】
S306:ストレージノード1が書き込み要求をストレージノード4に送信し、ストレージノード4が書き込み要求を受信する。
【0124】
S307:ストレージノード4は書き込み対象のデータをストライピングしてストライピングされたデータを取得し、ストライピングされたデータをストレージノード4の物理ディスクおよび/または仮想ディスクに書き込む。
【0125】
S308:ストレージノード4がストライピングされたデータの書き込みロケーションを記録する。特に、ストレージノード4は書き込み対象のデータの分散情報を記録することによって、ストライピングされたデータの書き込みロケーションを記録してもよい。
【0126】
データ分散情報はメタデータテーブルM3を用いて表わされてもよく、メタデータテーブルM3に含まれる要素は表1からFingerPrintを取り除くことによって取得されるテーブルの要素であってもよい。
【0127】
S309:ストレージノード4がストライピングされたデータの書き込みロケーションをストレージノード4の物理ディスクおよび/または仮想ディスクに書き込む。
【0128】
ステップS307~S309の関連説明については、S108~S110を参照し、ここでは詳細を重ねて説明しない。
【0129】
S310:ストレージノード4がストライピングされたデータの書き込みロケーションとLBA 1とのマッピング関係を記録する。
【0130】
S311:ストレージノード4がストライピングされたデータの書き込みロケーションとLBA 1とのマッピング関係をストレージノード4の物理ディスクおよび/または仮想ディスクに書き込む。
【0131】
S312~S314については、S116~S118を参照する。当然、本出願はこれに限定されない。
【0132】
図9を参照して、図9は、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ読み出し方法のフローチャートである。詳細は以下の通りである。
【0133】
401~S403については、S201~S203を参照する。当然、本出願はこれに限定されない。
【0134】
S404:ストレージノード4がLBA 1に基づいて、読み出し対象のデータのストライピングされたデータの書き込みロケーションを決定し、表1からデータのフィンガープリントを削除することによって取得されるメタデータテーブルなどのテーブルに基づいて、読み出し対象のデータのストライピングされたデータの書き込みロケーションを取得する。その後、ストライピングされたデータの一部または全部が書き込みロケーションから取得される。
【0135】
S405:ストレージノード4が、読み出されたデータブロックに基づいて、完全なデータ、すなわち、ストライピングが実行される前のデータを構成する。以上で、ストレージノード4が読み出し対象のデータを取得すると考えられる。ストレージノード4は、読み出し対象のデータをストレージノード1にフィードバックする。
【0136】
S406については、S209を参照する。当然、本出願はこれに限定されない。
【0137】
図9に示されているデータ読み出しプロシージャは、図8Aおよび図8Bに示されているデータ書き込みプロシージャに基づいて説明されている。LBA 1のホームノードがストレージノード1と同じであるシナリオの実施形態を、図9に示されているデータ読み出しプロシージャに基づいて決定することが当業者は当然できる。ここでは詳細を重ねて説明しない。
【0138】
本実施形態では、データの書き込みロケーションとホストのLBAとを管理するステップがLBAに基づいてストレージシステム中のストレージノードに割り付けられる。このようにして、本実施形態はロードバランシングを実施するのに有用であり、したがって、システムパフォーマンスが改善される。
【0139】
実施形態3
図10Aおよび図10Bを参照して、図10Aおよび図10Bは、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ書き込み方法のフローチャートである。詳細は以下の通りである。
【0140】
S501:ホストが書き込み要求をストレージシステムに送信し、この書き込み要求はLBA 1と書き込み対象のデータとを含む。ストレージシステム中のストレージノード1が書き込み要求を受信する。特に、書き込み要求をホストがスイッチに送信し、書き込み要求を受信した後、スイッチが書き込み要求を、書き込み要求で搬送される情報に基づいてストレージノード1に転送する。
【0141】
実施形態1および実施形態2とは異なり、本実施形態では、最初に、特定のLBAを搬送する書き込み要求をホストが特定のストレージノードに送信してもよく、このため、ストレージシステムの計算複雑度が下げられることが可能である。
【0142】
一例では、ホストがLBA範囲とストレージノードとの対応を予め記憶してもよく(たとえば、LBA 1~100がストレージノード1に対応する、LBA 101~200がストレージノード2に対応する、…)、この場合、LBAに対応するストレージノードに関する情報が書き込み要求で搬送される。たとえば、ストレージノードに関する情報はストレージノードのネットワークアドレスを含んでもよい(ただし、これに限定されない)。これとは別に、ストレージノードに関する情報はストレージノードのIDをさらに含んでもよい。このようにして、書き込み要求を受信するとき、ストレージノードに関し、かつ書き込み要求で搬送される情報に基づいて、書き込み要求が転送されるストレージノードをスイッチが決定してもよい。
【0143】
S502~S511については、S102~S111を参照する。当然、本出願はこれに限定されない。
【0144】
S512:ストレージノード1が書き込み要求で搬送された書き込み対象のデータのフィンガープリントとLBA 1とのマッピング関係を記録する。
【0145】
S513:ストレージノード1が書き込み要求で搬送された書き込み対象のデータのフィンガープリントとLBA 1とのマッピング関係をストレージノード1の物理ディスクおよび/または仮想ディスクに書き込む。
【0146】
S512およびS513の関連内容の説明については、S114およびS115を参照し、ここでは詳細を重ねて説明しない。
【0147】
S514およびS515については、S117およびS118を参照する。当然、本出願はこれに限定されない。
【0148】
図11を参照して、図11は、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ読み出し方法のフローチャートである。詳細は以下の通りである。
【0149】
S601:ホストが読み出し要求をストレージシステムに送信し、この読み出し要求はLBA 1を搬送する。ストレージシステム中のストレージノード1が書き込み要求を受信する。特に、読み出し要求をホストがスイッチに送信し、読み出し要求を受信した後、スイッチが読み出し要求に基づいて読み出し要求をストレージノード1に転送する。
【0150】
図11に示されているデータ読み出しプロシージャは、図10Aおよび図10Bに示されているデータ書き込みプロシージャに基づいて説明されている。どのようにスイッチが読み出し要求をストレージノード1に転送するのかに関する特定の実施プロセスについては、図10Aおよび図10Bに示されているデータ書き込みプロシージャでどのようにスイッチが書き込み要求をストレージノード1に転送するのかに関する特定の実施プロセスを参照し、ここでは詳細を重ねて説明しない。
【0151】
S602:ストレージノード1がLBAとデータのフィンガープリントとのマッピング関係に基づいて読み出し対象のデータのフィンガープリントを取得する。マッピング関係は表2に示されているメタデータテーブルM2などのテーブルに示されている。読み出し対象のデータのフィンガープリントは上記の説明の書き込み対象のデータのフィンガープリントである。その後、ストレージノード1は読み出し対象のデータのホームノードを、メタデータテーブルM2に記録された情報に基づいたり、計算を通じたりしてさらに取得してもよい。上記の説明に基づけば、読み出し対象のデータの決定されたホームノードがストレージノード3であることが分かる。
【0152】
S603:ストレージノード1が読み出し対象のデータのホームノード、たとえばストレージノード3を取得する。
【0153】
S604~S607については、S206~S209を参照する。当然、本出願はこれに限定されない。
【0154】
本実施形態では、LBAとストレージノードとの対応に基づいて、ストレージシステム中にあり、読み出し/書き込み要求の送信先であるストレージノードをホストが決定する、すなわち、ストレージノードがLBAのホームノードを決定する必要がない。このようにして、ストレージノード間のシグナリング受け渡しが低減されてもよく、これにより、読み出し/書き込み速度が改善される。さらに、実施形態1の有利な効果に基づけば、本実施形態はロードバランシングを実施するのに有用であり、したがって、システムパフォーマンスが改善されることが分かる。
【0155】
実施形態4
図12を参照して、図12は、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ書き込み方法のフローチャートである。詳細は以下の通りである。
【0156】
S701~S704については、S501~S504を参照する。当然、本出願はこれに限定されない。
【0157】
S705:ストレージノード1が書き込み対象のデータをストライピングしてストライピングされたデータを取得し、ストライピングされたデータをストレージノード1の物理ディスクおよび/または仮想ディスクに書き込む。
【0158】
S706:ストレージノード1がストライピングされたデータの書き込みロケーションを記録する。特に、ストレージノード1は書き込み対象のデータの分散情報を記録することによって、ストライピングされたデータの書き込みロケーションを記録してもよい。
【0159】
S707:ストレージノード1がストライピングされたデータの書き込みロケーションをストレージノード1の物理ディスクおよび/または仮想ディスクに書き込む。
【0160】
S705~S707の関連説明については、S307~S309を参照し、ここでは詳細を重ねて説明しない。
【0161】
S708:ストレージノード1がストライピングされたデータの書き込みロケーションとLBA 1とのマッピング関係を記録する。
【0162】
S709:ストレージノード1がストライピングされたデータの書き込みロケーションとLBA 1とのマッピング関係をストレージノード1の物理ディスクおよび/または仮想ディスクに書き込む。
【0163】
S710およびS711については、S117およびS118を参照する。当然、本出願はこれに限定されない。
【0164】
図13を参照して、図13は、本出願の実施形態に係る図2に示されているストレージシステムに適用されるデータ読み出し方法のフローチャートである。詳細は以下の通りである。
【0165】
S801については、S601を参照する。当然、本出願はこれに限定されない。
【0166】
S802:ストレージノード1がLBAに基づいて、読み出し対象のデータのストライピングされたデータの書き込みロケーションを決定し、表1からデータのフィンガープリントを削除することによって取得されるメタデータテーブルなどのテーブルに基づいて、読み出し対象のデータのストライピングされたデータの書き込みロケーションを取得する。その後、ストライピングされたデータの一部または全部が書き込みロケーションから取得される。
【0167】
S803:ストレージノード1が、読み出されたデータブロックに基づいて、完全なデータ、すなわち、ストライピングが実行される前のデータを構成する。
【0168】
S802およびS803の関連説明については、S404およびS405を参照し、ここでは詳細を重ねて説明しない。
【0169】
S804:ストレージノード1が読み出し対象のデータをホストにフィードバックする。
【0170】
本実施形態では、LBAとストレージノードとの対応に基づいて、ストレージシステム中にあり、読み出し/書き込み要求の送信先であるストレージノードをホストが決定する。すなわち、ストレージノードがLBAのホームノードを決定する必要がない。このようにして、ストレージノード間のシグナリング受け渡しが低減されてもよく、これにより、読み出し/書き込み速度が改善される。さらに、実施形態2の有利な効果に基づけば、本実施形態はロードバランシングを実施するのに有用であり、したがって、システムパフォーマンスが改善されることが分かる。
【0171】
上記では、ノード間の受け渡しの観点から本出願の実施形態の解決手段を主に説明している。上記の機能を実施するために、ホストやストレージノードなどの各ノードが各機能を実行する対応ハードウェア構成および/またはソフトウェアモジュールを含むと理解してもよい。本明細書で開示されている実施形態で説明されている例の部位およびアルゴリズムステップと組み合わせて、本出願がハードウェアまたはハードウェアとコンピュータソフトウェアとの組み合わせによって実施されることが可能であることを当然当業者は容易に認識する。機能がハードウェアまたはハードウェアを駆動するコンピュータソフトウェアの態様で実行されるか否かは技術的解決手段の特定の応用および設計制約条件に依存する。特定の応用毎に説明されている機能を実施するのに異なる方法を当業者は用いることができるが、実施が本出願の範囲を越えるとは当然みなさない。
【0172】
本出願の実施形態では、機能モジュールの分割が上記の方法例に基づいてストレージノードに実行されてもよく、たとえば、各機能モジュールが各機能に対応して分割されてもよいし、2つ以上の機能が1つの処理モジュールに一体化されてもよい。一体化されるモジュールはハードウェアの形態で実施されてもよいし、ソフトウェア機能モジュールの形態で実施されてもよい。本出願の実施形態でのモジュールの分割は一例であって、論理的機能の分割にすぎず、実際の実施の際には他の分割であってもよい点に留意するべきである。以下の説明は、機能モジュールが機能に対応して分割される例を用いてなされている。
【0173】
図14はストレージノード140の概略構成図である。ストレージノード140は上記で用いられているいずれのストレージノードであってもよい。ストレージノード140はスイッチおよびホストを用いてストレージシステム中の少なくとも1つの第2のストレージノードと通信し、少なくとも1つの第2のストレージノードに含まれる物理ディスクがストレージノード140の仮想ディスクにマッピングされる。ストレージノード140は、トランシーバユニット1401、処理ユニット1402およびストレージユニット1403を含む。トランシーバユニット1401は、第1の書き込み要求を受信するように構成されており、この第1の書き込み要求は第1の書き込み対象のデータを搬送する。処理ユニット1402は、第1の書き込み対象のデータをストライピングしてストライピングされたデータを取得し、ストライピングされたデータをストレージノード140の物理ディスクおよび/または仮想ディスクに書き込むように構成されている。ストレージユニット1403は、ストライピングされたデータの書き込みロケーションを記録するように構成されている。たとえば、図6Aおよび図6Bまたは図10Aおよび図10Bを参照して、ストレージノード140はストレージノード3であってもよく、トランシーバユニット1401はS106/S506を実行するように構成されてもよく、処理ユニット1402はS108/S508を実行するように構成されてもよく、ストレージユニット1403はS109/S509を実行するように構成されてもよい。たとえば、図8Aおよび図8Bを参照して、ストレージノード140はストレージノード4であってもよく、トランシーバユニット1401はS306を実行するように構成されてもよく、処理ユニット1402はS307を実行するように構成されてもよく、ストレージユニット1403はS308を実行するように構成されてもよい。たとえば、図12を参照して、ストレージノード140はストレージノード1であってもよく、トランシーバユニット1401はS701を実行するように構成されてもよく、処理ユニット1402はS705を実行するように構成されてもよく、ストレージユニット1403はS706を実行するように構成されてもよい。
【0174】
可能な一設計では、処理ユニット1402は、ストライピングされたデータが仮想ディスクに書き込まれるとき、第2のストレージノード中にある、仮想ディスクにマッピングされている物理ディスクに、ストライピングされたデータを書き込むように特に構成されてもよい。
【0175】
可能な一設計では、ストレージユニット1403は、ストライピングされたデータの書き込みロケーションを記録するとき、第1の書き込み対象のデータのフィンガープリントをさらに記録するようにさらに構成されてもよい。たとえば、実施形態1の表1を参照する。
【0176】
可能な一設計では、ストレージユニット1403は、ストライピングされたデータの書き込みロケーションを記録するとき、第1の書き込み対象のデータのLBAをさらに記録するようにさらに構成されてもよい。たとえば、図8Aおよび図8Bまたは図12を参照して、ストレージユニット1403はS310/S708を実行するように構成されてもよい。
【0177】
可能な一設計では、トランシーバユニット1401は、ホストによって送信された第2の書き込み要求を受信するようにさらに構成されてもよく、この第2の書き込み要求は第2の書き込み対象のデータを搬送する。処理ユニット1402は、第2の書き込み要求に基づいて第2の書き込み要求のホームノードを決定するようにさらに構成されており、第2の書き込み要求のホームノードがストレージノード140である場合、ストレージノード140は第2の書き込み要求に応答して書き込み動作を実行し、または、第2の書き込み要求のホームノードが第2のストレージノードである場合、ストレージノード140は、第2のストレージノードが第2の書き込み要求に応答して書き込み動作を実行するように、第2のストレージノードに第2の書き込み要求を転送する。たとえば、図6Aおよび図6B図8Aおよび図8B、または図10Aおよび図10Bを参照して、ストレージノード140はストレージノード1であってもよい。トランシーバユニット1401はS101/S301/S501を実行するように構成されてもよい。処理ユニット1402はS105/S305/S505を実行するように構成されてもよい。
【0178】
可能な一設計では、処理ユニット1402は、第2の書き込み対象のデータのフィンガープリントを計算し、その後、第2の書き込み対象のデータのフィンガープリントに基づいて第2の書き込み要求のホームノードを決定するように特に構成されてもよい。たとえば、図6Aおよび図6Bまたは図10Aおよび図10Bを参照して、処理ユニット1402はS105/S505を実行するように構成されてもよい。可能な一設計では、処理ユニット1402は、第2の書き込み要求で搬送されたLBAのホームノードを決定するようにさらに構成されてもよく、LBAのこのホームノードは、LBAと第2の書き込み対象のデータのフィンガープリントとのマッピング関係を管理するように構成されている。たとえば、図6Aおよび図6Bを参照して、処理ユニット1402はS112を実行するように構成されてもよい。
【0179】
可能な一設計では、処理ユニット1402は、第2の書き込み要求で搬送されたLBAに基づいて第2の書き込み要求のホームノードを決定するように特に構成されてもよい。たとえば、図8Aおよび図8Bを参照して、処理ユニット1402はS305を実行するように構成されてもよい。
【0180】
可能な一設計では、トランシーバユニット1401は、第1の読み出し要求によって要求されている第1の読み出し対象のデータのフィンガープリントを受信するようにさらに構成されてもよい。処理ユニット1402は、第1の読み出し対象のデータのフィンガープリントに基づいて第1の読み出し対象のデータの書き込みロケーションを取得し、第1の読み出し対象のデータの書き込みロケーションから第1の読み出し対象のデータのストライピングされたデータを読み出すようにさらに構成されてもよい。たとえば、図7または図11を参照して、ストレージノード140はストレージノード3であってもよい。トランシーバユニット1401はS206/S604を実行するように構成されてもよく、処理ユニット1402はS207/S605を実行するように構成されてもよい。
【0181】
可能な一設計では、トランシーバユニット1401は第1の読み出し要求を受信するようにさらに構成されてもよく、この第1の読み出し要求は第1のLBAを搬送する。処理ユニット1402は、第1のLBAに基づいて、第1の読み出し要求によって要求されている第1の読み出し対象のデータの書き込みロケーションを取得し、第1の読み出し対象のデータの書き込みロケーションから第1の読み出し対象のデータのストライピングされたデータを読み出すようにさらに構成されてもよい。たとえば、図9を参照して、ストレージノード140はストレージノード4であってもよく、トランシーバユニット1401はS403を実行するように構成されてもよく、処理ユニット1402はS404を実行するように構成されてもよい。たとえば、図13を参照して、ストレージノード140はストレージノード1であってもよく、トランシーバユニット1401はS801を実行するように構成されてもよく、処理ユニット1402はS803を実行するように構成されてもよい。
【0182】
可能な一設計では、トランシーバユニット1401は、ホストによって送信された第2の読み出し要求を受信するようにさらに構成されてもよい。処理ユニット1402は、第2の読み出し要求に基づいて第2の読み出し要求のホームノードを決定するようにさらに構成されてもよく、第2の読み出し要求のホームノードがストレージノード140である場合、ストレージノード140は第2の読み出し要求に応答して読み出し動作を実行し、または、第2の読み出し要求のホームノードが第2のストレージノードである場合、ストレージノード140は、第2のストレージノードが第2の読み出し要求に応答して読み出し動作を実行するように、第2のストレージノードに第2の読み出し要求を転送する。たとえば、図7図9または図11を参照して、ストレージノード140はストレージノード1であってもよい。トランシーバユニット1401はS201/S401/S601を実行するように構成されてもよく、処理ユニット1402はS205/S402/S603を実行するように構成されてもよい。
【0183】
可能な一設計では、処理ユニット1402は、第2の読み出し要求で搬送されたLBAのホームノードを決定し、LBAのホームノードが、LBAと、第2の読み出し要求によって要求されている第2の読み出し対象のデータのフィンガープリントとのマッピング関係を管理するように構成される、ように特に構成され、第2のLBAのホームノードから第2の読み出し対象のデータのフィンガープリントを取得するように特に構成され、第2の読み出し対象のデータのフィンガープリントに基づいて第2の読み出し要求のホームノードを決定するように特に構成されてもよい。たとえば、図7または図11を参照して、トランシーバユニット1401はS201/S601を実行するように構成されてもよく、処理ユニット1402はS205/S603を実行するように構成されてもよい。
【0184】
可能な一設計では、処理ユニット1402は、第2の読み出し要求で搬送されたLBAに基づいて第2の読み出し要求のホームノードを決定するように特に構成されてもよい。たとえば、図9を参照して、トランシーバユニット1401はS401を実行するように構成されてもよく、処理ユニット1402はS402を実行するように構成されてもよい。
【0185】
上記の実現例のいくつかでは、特に、ストレージノード140が同じ添付の図面中の異なるストレージノードであってもよい点に留意するべきである。たとえば、図6Aおよび図6Bを参照して、ストレージシステムが第1の書き込み要求を受信するシナリオでは、特に、ストレージノード140はストレージノード3であってもよく、ストレージシステムが第1の読み出し要求を受信するシナリオでは、特に、ストレージノード140はストレージノード1であってもよい。しかし、ストレージシステム中の各ストレージノードには任意性があるので、特定の実施の際、異なるデータが複数回読み出される/書き込まれるシナリオでは、同じストレージノード140が上記の技術的解決手段のいずれかで提供される機能を持ってもよい。
【0186】
さらに、ストレージノード140のユニットと上記の方法実施形態のいくつかのステップとの関係が例として上記で説明されている点に留意するべきである。実際には、ストレージノード140のユニットは上記の方法実施形態の他の関連ステップをさらに実行してもよく、ここでは詳細をいちいち挙げない。
【0187】
ストレージノード140のハードウェア実現例については、図2に示されているストレージノードを参照する。図2を参照して、トランシーバユニット1401は図2の内部ポート220に対応してもよい。処理ユニット1402は図2のCPUおよび/またはストレージコントローラに対応してもよい。ストレージユニット1403は図2のメモリに対応してもよい。これとは別に、ストレージユニット1403は図2のメモリチップに対応してもよい。
【0188】
本出願の本実施形態で提供されているストレージノードが、上記で提供されている読み出し/書き込みプロシージャを実行するように構成され得るので、ストレージノードによって奏されることが可能である技術的効果については、上記の方法実施形態を参照し、本出願の本実施形態では詳細を重ねて説明しない。
【0189】
上記の実施形態では、本出願は、ソフトウェア、ハードウェア、ファームウェアまたはこれらの任意の組み合わせを用いて全体的に実施されたり部分的に実施されたりしてもよい。本出願がソフトウェアプログラムを用いて実施される場合、本出願はコンピュータプログラムプロダクトの形態で全体的に実施されたり部分的に実施されたりしてもよい。コンピュータプログラムプロダクトは1つ以上のコンピュータ指示を含む。コンピュータ指示がコンピュータにロードされて実行される場合、本出願の実施形態に係るプロシージャや機能が全部発生したり部分的に発生したりする。コンピュータは、汎用コンピュータ、専用コンピュータ、コンピュータネットワークまたは別のプログラム可能な装置であってもよい。コンピュータ指示はコンピュータ可読記憶媒体に記憶されてもよいし、あるいは、あるコンピュータ可読記憶媒体から別のコンピュータ可読記憶媒体に伝送される。たとえば、コンピュータ指示は、あるウェブサイト、コンピュータ、サーバやデータセンタから別のウェブサイト、コンピュータ、サーバやデータセンタに有線方式(たとえば、同軸ケーブル、光ファイバやデジタル加入者回線(digital subscriber line,DSL))や無線方式(たとえば、赤外線、ラジオ波やマイクロ波)で伝送されてもよい。コンピュータ可読記憶媒体は、コンピュータがアクセスすることができる任意の入手可能な媒体であってもよいし、一体化された入手可能な1つ以上の媒体を含むサーバやデータセンタなどのデータストレージデバイスであってもよい。入手可能な媒体は、磁気媒体(たとえば、フロッピー(登録商標)ディスク、ハードディスクや磁気テープ)、光学媒体(たとえばDVD)、半導体媒体(たとえばSSD)などであってもよい。
【0190】
本出願は実施形態に関して説明されているが、保護を請求する本出願を実施するプロセスでは、開示されている実施形態の別の例を添付の図面、開示されている内容および添付の請求項を見ることによって当業者は理解し実行することができる。請求項では、「備える」(comprising)は別の構成要素や別のステップを除外せず、「a」または「one」は複数の場合を除外しない。請求項で列挙されているいくつかの機能を単一のプロセッサまたは別の部位が実施してもよい。特定の複数の手段が互いに異なる従属請求項に記載されていることは、これらの手段の組み合わせがより優れた効果をもたらすことができないことを示すものではない。
【0191】
本出願は本出願の特定の特徴および実施形態に関して説明されているが、本出願の精神および範囲を逸脱しない限りにおいて様々な修正および組み合わせが本出願になされることが可能であることは明らかである。これに対応して、本明細書および添付の図面は添付の請求項によって定められる本出願の説明の例にすぎず、本出願の範囲内のあらゆる一切の修正、変更、組み合わせまたは均等物がすでにカバーされるとみなされる。本出願の精神および範囲から逸脱しない限りにおいて本出願に様々な修正および変形を当業者が行なうことができることは明らかである。本出願は、本出願のこれらの修正および変形が以下の請求項とその均等技術とによって定められる保護の範囲内に含まれる限りにおいてこれらの修正および変形をカバーすることを意図している。
【符号の説明】
【0192】
21 スイッチ
22 ストレージノード
140 ストレージノード
211 内部交換ポート
212 ストレージサービスポート
213 拡張ポート
220 内部ポート
221 I/O処理モジュール
222 ストレージモジュール
1401 トランシーバユニット
1402 処理ユニット
1403 ストレージユニット
図1
図2
図3
図4a
図4b
図4c
図5
図6A
図6B
図7
図8A
図8B
図9
図10A
図10B
図11
図12
図13
図14