(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-02
(45)【発行日】2024-08-13
(54)【発明の名称】ストレージシステムにおけるデータ記憶方法、データ読み出し方法、データ記憶装置、データ読み出し装置、ストレージデバイス、およびシステム
(51)【国際特許分類】
G06F 3/06 20060101AFI20240805BHJP
G06F 16/182 20190101ALI20240805BHJP
【FI】
G06F3/06 540
G06F16/182
(21)【出願番号】P 2022536646
(86)(22)【出願日】2020-12-29
(86)【国際出願番号】 CN2020141063
(87)【国際公開番号】W WO2021139571
(87)【国際公開日】2021-07-15
【審査請求日】2022-07-20
(31)【優先権主張番号】202010018706.6
(32)【優先日】2020-01-08
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202010096222.3
(32)【優先日】2020-02-17
(33)【優先権主張国・地域又は機関】CN
【前置審査】
(73)【特許権者】
【識別番号】504161984
【氏名又は名称】ホアウェイ・テクノロジーズ・カンパニー・リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】チェン、キャン
(72)【発明者】
【氏名】チェン、ミン
(72)【発明者】
【氏名】タン、チュンイ
【審査官】田中 啓介
(56)【参考文献】
【文献】米国特許出願公開第2019/0129649(US,A1)
【文献】特開2019-036136(JP,A)
【文献】特開2017-228078(JP,A)
【文献】特開2018-181325(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/06-3/08
G06F11/08-11/10
G06F11/16-11/20
G06F13/10-13/14
G06F16/00-16/958
H04L51/00-51/58
H04L67/00-67/75
(57)【特許請求の範囲】
【請求項1】
ストレージシステムにおけるデータ記憶方法であって、
第1デバイスがM個のデータユニット用にN個のチェックユニットを生成する段階であって、MおよびNが両方とも正の整数であり、M+N=Kである、生成する段階と、
前記第1デバイスが前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納する段階であって、前記K個のユニットが前記M個のデータユニットおよび前記N個のチェックユニットを有し、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、格納する段階と
を備え、
前記K個のハードディスクモジュールが複数のストレージノードとやり取りし、前記K個のハードディスクモジュールのうちの少なくとも2つが、前記複数のストレージノードのうちの同じ1つのストレージノードとやり取りし、前記ハードディスクモジュールの量が前記ストレージノードの量より多
く、
前記複数のストレージノードは、第1ストレージノードと第2ストレージノードとを含み、前記K個のハードディスクモジュールは、前記第1ストレージノードに対応するK1個の第1ハードディスクモジュールと、前記第2ストレージノードに対応するK2個の第2ハードディスクモジュールとを含み、K1およびK2は正の整数であり、
(i)前記第1デバイスが前記第1ストレージノードであり、前記第1デバイスがM個のデータユニット用にN個のチェックユニットを生成する前記段階は、前記第1ストレージノードが、前記ストレージシステムのクライアントから受信した格納対象データを前記M個のデータユニットに分割する段階と、前記M個のデータユニットに対して前記N個のチェックユニットを生成する段階とを含む、または、(ii)前記第1デバイスが前記ストレージシステムのクライアントであり、前記第1デバイスが前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納する前記段階は、前記クライアントが、前記第1ストレージノードに前記K個のユニットを送信する段階を含み、
前記第1デバイスが前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納する前記段階は、
前記第1ストレージノードが、前記K個のユニットのうちのK1個のユニットを前記K1個の第1ハードディスクモジュールに格納する段階と、
前記第1ストレージノードが、前記K個のユニットのうちのK2個のユニットを含む第1ストレージコマンドを、前記第2ストレージノードに送信する段階と、
前記第2ストレージノードが、前記第1ストレージコマンドを受信する段階と、
前記第2ストレージノードが、前記K2個のユニットを前記K2個の第2のハードディスクモジュールに格納する段階と
を備える、方法。
【請求項2】
前記ストレージシステムが前記複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、請求項1に記載の方法。
【請求項3】
前記ストレージシステムが第2デバイスを備えており、前記第2デバイスと前記第1デバイスとの間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある、請求項1
または2に記載の方法。
【請求項4】
K1は2に等しいまたは2より大きく、K2は1に等しいまたは1より大きく、
前記第1ストレージノードは、第1バスを通じて、前記
K1個の第1ハードディスクモジュールおよび前記
K2個の第2ハードディスクモジュールに接続され、
前記第2ストレージノードは、前記第1バスとは異なる第2バスを通じて、前記
K1個の第1ハードディスクモジュールおよび前記
K2個の第2ハードディスクモジュールに接続される、請求項1から
3のいずれか一項に記載の方法。
【請求項5】
ストレージシステムにおけるデータ記憶装置であって、
M個のデータユニット用にN個のチェックユニットを生成するように構成された生成ユニットであって、MおよびNが両方とも正の整数であり、M+N=Kである、生成ユニットと、
前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納するように構成されたストレージユニットであって、前記K個のユニットがM個のデータユニットおよびN個のチェックユニットを含み、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、ストレージユニットと
を備え、
前記K個のハードディスクモジュールが複数のストレージノードとやり取りし、前記K個のハードディスクモジュールのうちの少なくとも2つが、前記複数のストレージノードのうちの同じ1つのストレージノードとやり取りし、前記ハードディスクモジュールの量が前記ストレージノードの量より多
く、
前記複数のストレージノードは、第1ストレージノードと第2ストレージノードとを含み、前記K個のハードディスクモジュールは、前記第1ストレージノードに対応するK1個の第1ハードディスクモジュールと、前記第2ストレージノードに対応するK2個の第2ハードディスクモジュールとを含み、K1およびK2は正の整数であり、
前記データ記憶装置が前記第1ストレージノードであり、前記生成ユニットは、前記ストレージシステムのクライアントから受信した格納対象データを前記M個のデータユニットに分割し、前記M個のデータユニットに対して前記N個のチェックユニットを生成するように構成され、
前記ストレージユニットは、前記K個のユニットのうちのK1個のユニットを前記K1個の第1ハードディスクモジュールに格納し、前記第2ストレージノードが前記K2個のユニットを前記K2個の第2のハードディスクモジュールに格納するよう前記K個のユニットのうちのK2個のユニットを含む第1ストレージコマンドを前記第2ストレージノードに送信する、
データ記憶装置。
【請求項6】
前記ストレージシステムが前記複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのうちの少なくとも1つのインタフェースモジュールとやり取りする、請求項
5に記載の
データ記憶装置。
【請求項7】
前記インタフェースモジュールが、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである、請求項
5または6に記載の
データ記憶装置。
【請求項8】
前記ストレージシステムが第2デバイスを備えており、前記第2デバイスと前記
データ記憶装置との間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある、請求項
5から
7のいずれか一項に記載の
データ記憶装置。
【請求項9】
K1は2に等しいまたは2より大きく、K2は1に等しいまたは1より大きく、
前記第1ストレージノードは、第1バスを通じて、前記
K1個の第1ハードディスクモジュールおよび前記
K2個の第2ハードディスクモジュールに接続され、
前記第2ストレージノードは、前記第1バスとは異なる第2バスを通じて、前記
K1個の第1ハードディスクモジュールおよび前記
K2個の第2ハードディスクモジュールに接続される、請求項
5、
6、及び
8のいずれか一項に記載の
データ記憶装置。
【請求項10】
ストレージシステムであって、前記ストレージシステムがストレージデバイスとK個のハードディスクモジュールとを備えており、
前記ストレージデバイスが、
M個のデータユニット用にN個のチェックユニットを生成することであって、MおよびNが両方とも正の整数であり、M+N=Kである、生成することと、
前記K個のユニットをK個のハードディスクモジュールに格納することであって、前記K個のユニットがM個のデータユニットおよびN個のチェックユニットを含み、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、格納することと
を行うように構成されており、
前記K個のハードディスクモジュールが複数のストレージノードとやり取りし、前記K個のハードディスクモジュールのうちの少なくとも2つが、前記複数のストレージノードのうちの同じ1つのストレージノードとやり取りし、前記ハードディスクモジュールの量が前記ストレージノードの量より多
く、
前記複数のストレージノードは、第1ストレージノードと第2ストレージノードとを含み、前記K個のハードディスクモジュールは、前記第1ストレージノードに対応するK1個の第1ハードディスクモジュールと、前記第2ストレージノードに対応するK2個の第2ハードディスクモジュールとを含み、K1およびK2は正の整数であり、
(i)前記ストレージデバイスが前記第1ストレージノードであり、前記ストレージデバイスは、前記ストレージシステムのクライアントから受信した格納対象データを前記M個のデータユニットに分割し、前記M個のデータユニットに対して前記N個のチェックユニットを生成するように構成されている、または、(ii)前記ストレージデバイスが前記ストレージシステムのクライアントであり、前記K個のユニットをK個のハードディスクモジュールに前記格納することは、前記クライアントが、前記第1ストレージノードに前記K個のユニットを送信することを含み、
前記K個のユニットをK個のハードディスクモジュールに前記格納することは、
前記第1ストレージノードが、前記K個のユニットのうちのK1個のユニットを前記K1個の第1ハードディスクモジュールに格納することと、
前記第1ストレージノードが、前記K個のユニットのうちのK2個のユニットを含む第1ストレージコマンドを、前記第2ストレージノードに送信することと、
前記第2ストレージノードが、前記第1ストレージコマンドを受信することと、
前記第2ストレージノードが、前記K2個のユニットを前記K2個の第2のハードディスクモジュールに格納することと
を含む、ストレージシステム。
【請求項11】
前記ストレージシステムがさらに前記複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、請求項
10に記載のストレージシステム。
【請求項12】
K1は2または2より大きく、K2は1または1より大きく、
前記第1ストレージノードは、第1バスを通じて、前記
K1個の第1ハードディスクモジュールおよび前記
K2個の第2ハードディスクモジュールに接続され、
前記第2ストレージノードは、前記第1バスとは異なる第2バスを通じて、前記
K1個の第1ハードディスクモジュールおよび前記
K2個の第2ハードディスクモジュールに接続される、請求項
10または
11に記載のストレージシステム。
【請求項13】
コンピュータに、請求項1から
4のいずれか一項に記載の方法を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、2020年1月8日に出願した「ストレージシステムにおけるデータ記憶方法およびストレージシステム(DATA STORAGE METHOD IN STORAGE SYSTEM AND STORAGE SYSTEM)」と題する中国特許出願第202010018706.6号に基づく優先権を主張し、また2020年2月17日に出願した「ストレージシステムにおけるデータ記憶方法、データ読み出し方法、および装置、ならびにシステム(DATA STORAGE METHOD, DATA READING METHOD, AND APPARATUS IN STORAGE SYSTEM, AND SYSTEM)」と題する中国特許出願第202010096222.3号に基づく優先権を主張する。これら両方の中国特許出願はその全体が参照により明細書に組み込まれる。
【0002】
本願は情報技術の分野に関し、具体的には、ストレージシステムにおけるデータ記憶方法、データ読み出し方法、および装置、ならびにシステムに関する。
【背景技術】
【0003】
分散型ストレージシステムには、複数のストレージノードが含まれ得る。これらのストレージノードはストレージサーバであり、各ストレージサーバにはストレージリソース、例えば、複数のハードディスクが含まれている。分散型ストレージシステムは、ストレージノード上のストレージリソースを編成して、ストレージサービスを提供する。
【0004】
分散型ストレージシステムにデータを格納する場合、通常、クライアントがデータをM個のデータユニットに分割し、イレージャーコーディング(EC)アルゴリズムに従って、これらのデータユニットのN個のチェックユニットを取得する。クライアントは、M個のデータユニットおよびN個のチェックユニットを[M+N]個のストレージノードに格納する、すなわち、[M+N]個のストレージノードのうちの1つが、1つの対応するユニット(データユニットまたはチェックユニット)を格納する。
【0005】
ハードディスクの容量が増加し、ストレージノードにはより多くのハードディスクを搭載することができるが、それでもクライアントは、データを格納するときに、ECアルゴリズムベースのストレージ粒度としてストレージノードを用いる。その結果、ハードディスクのストレージリソースを十分に利用することができない。
【発明の概要】
【0006】
本願は、ストレージシステムにおけるデータ記憶方法、データ読み出し方法、および装置、ならびに本システムを提供して、ストレージシステム内にあるストレージリソースを十分に利用する。その技術的解決手段は、以下の通りである。
【0007】
第1態様によれば、本願の一実施形態がストレージシステムにおけるデータ記憶方法を提供する。本方法は、第1デバイスがM個のデータユニット用にN個のチェックユニットを生成する段階を含み、MおよびNは両方とも正の整数であり、M+N=Kである。第1デバイスは、ストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを格納し、K個のユニットはM個のデータユニットおよびN個のチェックユニットを含む。K個のハードディスクモジュールのそれぞれは、K個のユニットのうちの1つを格納する。それぞれのハードディスクモジュールはインタフェースモジュールおよびハードディスクを含み、インタフェースモジュールはハードディスクとやり取りする。
【0008】
このように、ストレージシステム内にあるハードディスクモジュールの粒度で記憶が行われる。すなわち、K個のハードディスクモジュールを用いて、K個の対応するユニットを格納する。これにより、ストレージノードの粒度で記憶が行われる従来の技術と比較すると、ハードディスクモジュールの量がストレージノードの量より多いため、ストレージシステム内にあるストレージリソースを十分に利用することができる。
【0009】
実現可能な一実装例では、ストレージシステムは複数のストレージノードを含み、それぞれのストレージノードはK個のハードディスクモジュールのインタフェースモジュールとやり取りする。それぞれのストレージノードが複数のハードディスクモジュールのインタフェースモジュールとやり取りするので、ストレージノードのコンピューティングリソースを十分に利用することができ、またストレージノードのCPUの計算能力が十分に利用される。これにより、コンピューティングリソースの無駄が削減される。
【0010】
別の実現可能な実装例では、第1デバイスはストレージシステムのクライアントである。クライアントは、複数のストレージノードのうちの対象ストレージノードにK個のユニットを送信し、対象ストレージノードはストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを格納する。このように、ストレージシステム内にあるハードディスクモジュールの粒度で記憶が行われることにより、ストレージシステム内にあるストレージリソースを十分に利用することができるようになる。
【0011】
別の実現可能な実装例では、第1デバイスは複数のストレージノードのうちの1つである。
【0012】
別の実現可能な実装例では、インタフェースモジュールは、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである。
【0013】
別の実現可能な実装例では、ストレージシステムは第2デバイスを含み、第2デバイスと第1デバイスとの間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある。このようにして、第1デバイスが故障している場合には、第2デバイスが、第1デバイスに対応するハードディスクモジュールに取って代わることができる。このように、第1デバイスに対応するハードディスクモジュールに格納されたデータを復元する必要はないので、ストレージシステムの信頼性が向上する。
【0014】
第2態様によれば、本願の一実施形態がストレージシステムにおけるデータ読み出し方法を提供する。本方法では、第1デバイスが読み出し要求を受信し、読み出し要求は読み出し対象データのデータ識別子を含む。第1デバイスは、ストレージシステム内にあるK個のハードディスクモジュールからデータ識別子に基づいて、読み出し対象データを格納するハードディスクモジュールを決定する。第1デバイスは、読み出し対象データを格納するハードディスクモジュールから読み出し対象データを読み出し、読み出し対象データは、M個のデータユニット内にあるデータに属する。ストレージシステムはさらに、M個のデータユニットのN個のチェックユニットを含む。MおよびNは両方とも正の整数であり、M+N=Kである。K個のハードディスクモジュールのそれぞれは、K個のユニットのうちの1つを格納する。K個のユニットは、M個のデータユニットおよびN個のチェックユニットを含む。それぞれのハードディスクモジュールは、インタフェースモジュールとハードディスクとを含み、インタフェースモジュールはハードディスクとやり取りする。K個のハードディスクモジュールのそれぞれがK個のユニットのうちの1つを格納するので、ストレージシステム内にあるハードディスクモジュールの粒度で記憶が行われる。これにより、ストレージノードの粒度で記憶が行われる従来の技術と比較すると、ハードディスクモジュールの量がストレージノードの量より多いため、ストレージシステム内にあるストレージリソースを十分に利用することができる。
【0015】
実現可能な一実装例では、ストレージシステムは複数のストレージノードを含み、それぞれのストレージノードはK個のハードディスクモジュールのインタフェースモジュールとやり取りする。それぞれのストレージノードが複数のハードディスクモジュールとやり取りするので、ストレージノードのコンピューティングリソースを十分に利用することができ、またストレージノードのCPUの計算能力が十分に利用される。これにより、コンピューティングリソースの無駄が削減される。
【0016】
別の実現可能な実装例では、第1デバイスはストレージシステムのクライアントである。クライアントは、複数のストレージノードのうちの対象ストレージノードにデータ読み出し要求を送信し、データ読み出し要求はデータ識別子を搬送する。対象ストレージノードは、データ識別子に基づいて、読み出し対象データを格納するハードディスクモジュールから読み出し対象データを読み出す。対象ストレージノードは、データ識別子に基づいて、読み出し対象データを格納するハードディスクモジュールから読み出し対象データを読み出すことができるため、データは、ストレージシステム内にあるハードディスクモジュールの粒度で格納されてよい。
【0017】
別の実現可能な実装例では、第1デバイスは複数のストレージノードのうちの1つである。
【0018】
別の実現可能な実装例では、インタフェースモジュールは、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである。
【0019】
別の実現可能な実装例では、ストレージシステムは第2デバイスを含み、第2デバイスと第1デバイスとの間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある。このようにして、第1デバイスが故障している場合には、第2デバイスが、第1デバイスに対応するハードディスクモジュールに取って代わることができる。このように、第1デバイスに対応するハードディスクモジュールに格納されたデータを復元する必要はないので、ストレージシステムの信頼性が向上する。
【0020】
第3態様によれば、本願は、第1態様または第1態様の実現可能な実装例のうちのいずれか1つにおける方法を行うように構成された、ストレージシステムにおけるデータ記憶装置を提供する。具体的には、本装置は、第1態様または第1態様の実現可能な実装例のうちのいずれか1つにおける方法を行うように構成された複数のユニットを含む。
【0021】
第4態様によれば、本願は、第2態様または第2態様の実現可能な実装例のうちのいずれか1つにおける方法を行うように構成された、ストレージシステムにおけるデータ読み出し装置を提供する。具体的には、本装置は、第2態様または第2態様の実現可能な実装例のうちのいずれか1つにおける方法を行うように構成された複数のユニットを含む。
【0022】
第5態様によれば、本願は、ストレージシステムにおけるデータ記憶装置を提供する。本装置は、プロセッサと、通信インタフェースとを含む。プロセッサは、通信インタフェースとやり取りする。プロセッサおよび通信インタフェースは、第1態様または第1態様の実現可能な実装例のうちのいずれか1つにおける方法において、対応する段階を行うように構成されている。
【0023】
第6態様によれば、本願は、ストレージシステムにおけるデータ読み出し装置を提供する。本装置は、プロセッサと、通信インタフェースとを含む。プロセッサは、通信インタフェースとやり取りする。プロセッサおよび通信インタフェースは、第2態様または第2態様の実現可能な実装例のうちのいずれか1つにおける方法において、対応する段階を行うように構成されている。
【0024】
第7態様によれば、本願はコンピュータ可読記憶媒体を提供する。コンピュータ可読記憶媒体は、プログラムコードを格納する。プログラムコードがコンピュータで実行されると、コンピュータは、第1態様、第2態様、第1態様の実現可能な実装例、または第2態様の実現可能な実装例のうちのいずれか1つにおける方法を行うことができる。
【0025】
第8態様によれば、本願は、プログラムコードを含むコンピュータプログラム製品を提供する。コンピュータプログラム製品がコンピュータで作動すると、コンピュータは、第1態様、第2態様、第1態様の実現可能な実装例、または第2態様の実現可能な実装例のうちのいずれか1つにおける方法を行うことができる。
【0026】
第9態様によれば、本願はストレージシステムを提供する。ストレージシステムは、ストレージデバイスと、K個のハードディスクモジュールとを含む。本ストレージデバイスは、第1態様、第1態様の実現可能な実装例、第2態様、または第2態様の実現可能な実装例のうちのいずれか1つにおける方法を行うように構成されている。
【図面の簡単な説明】
【0027】
【
図1】本願の一実施形態によるストレージシステムの概略構造図である。
【0028】
【
図2】本願の一実施形態による別のストレージシステムの概略構造図である。
【0029】
【
図3】本願の一実施形態による別のストレージシステムの概略構造図である。
【0030】
【
図4】本願の一実施形態による別のストレージシステムの概略構造図である。
【0031】
【
図5】本願の一実施形態による別のストレージシステムの概略構造図である。
【0032】
【
図6】本願の一実施形態によるストレージシステムにおけるデータ記憶方法のフローチャートである。
【0033】
【
図7】本願の一実施形態によるストレージシステムにおける別のデータ記憶方法のフローチャートである。
【0034】
【
図8】本願の一実施形態によるストレージシステムにおけるデータ記憶装置の概略構造図である。
【0035】
【
図9】本願の一実施形態によるストレージシステムにおけるデータ読み出し装置の概略構造図である。
【0036】
【
図10】本願の一実施形態によるストレージシステムにおける別のデータ記憶装置の概略構造図である。
【0037】
【
図11】本願の一実施形態によるストレージシステムにおける別のデータ読み出し装置の概略構造図である。
【発明を実施するための形態】
【0038】
以下ではさらに、添付図面を参照して本願の実施形態を詳細に説明する。
【0039】
図1を参照されたい。本願の一実施形態がストレージシステムを提供する。ストレージシステムは複数のストレージノードを含み、それぞれのストレージノードは複数のハードディスクモジュールに対応しており、ストレージノードは複数のハードディスクモジュール内のハードディスクにアクセスする。ハードディスクモジュールは、インタフェースモジュールと、複数のハードディスクとを含む。ハードディスクは、機械的ディスク、ソリッドステートドライブ(Solid State Drive:SSD)などであってよい。インタフェースモジュールは、ホストバスアダプタ(Host Bus Adapter:HBA)、冗長独立ディスクアレイ(Redundant Array of Independent Disks:RAID)、エクスパンダ(Expander)カード、ネットワークインタフェースコントローラ(Network Interface Controller:NIC)などであってよい。これについては、本発明の本実施形態において限定しない。ハードディスクモジュール内にあるインタフェースモジュールは、ハードディスクとやり取りする。ストレージノードは、ハードディスクモジュールのインタフェースモジュールとやり取りして、ハードディスクモジュール内にあるハードディスクにアクセスする。
【0040】
インタフェースモジュールはカードとして実装されてよい、すなわち、インタフェースモジュールはインタフェースカードであってよい。
【0041】
ハードディスクのインタフェースが、シリアル接続スモールコンピュータシステムインタフェース(Serial Attached Small Computer System Interface:SAS)、シリアルアドバンスドテクノロジアタッチメント(Serial Advanced Technology Attachment:SATA)、高速シリアルコンピュータ拡張バス規格(Peripheral Component Interconnect express:PCIe)などであってよい。
【0042】
ストレージノードは、バス、例えばPCIeバスを通じてハードディスクモジュールとやり取りしてよい。ストレージノードは代替的に、ネットワーク、例えばイーサネット(登録商標)を通じてハードディスクモジュールとやり取りしてよい。これについては、本発明の本実施形態において限定しない。
【0043】
本発明の本実施形態では、ストレージノードは互いにやり取りする。ストレージシステムでは、1つのストレージノードと1つまたは複数の他のストレージノードとの間に相互バックアップ関係がある。相互バックアップ関係とは、1つのストレージノードが別のストレージノードに対応する複数のハードディスクモジュールにアクセスできることを意味する。言い換えれば、1つのストレージノードが、当該1つのストレージノードと相互バックアップ関係を有する別のストレージノードのハードディスクモジュールとやり取りする、すなわち、1つのストレージノードは、当該1つのストレージノードと相互バックアップ関係を有する別のストレージノードのハードディスクモジュールのインタフェースモジュールとやり取りする。
【0044】
相互バックアップ関係にある全てのストレージノードが正常状態にある場合、それぞれのストレージノードは、それぞれのストレージノードに対応する複数のハードディスクモジュールに対してのみ、通信接続を確立することに留意されたい。すなわち、それぞれのストレージノードは、当該ストレージノードに対応する複数のハードディスクモジュールに対してのみ、読み出しアクセスおよび書き込みアクセスを直接的に行う。相互バックアップ関係にあるストレージノードのうちの1つが故障している場合には、そのストレージノードの別のストレージノードが、故障したストレージノードに取って代わり、故障したストレージノードの複数のハードディスクモジュールにアクセスする。
【0045】
任意選択で、ストレージシステムには代替的に、1つのストレージノードと1つまたは複数の他のストレージノードとの間にプライマリ/セカンダリ関係がある。言い換えれば、1つのストレージノードがプライマリストレージノードであり、その他の1つまたは複数のストレージノードが1つまたは複数のセカンダリストレージノードであり、セカンダリストレージノードはプライマリストレージノードのバックアップを行う。このようにして、プライマリストレージノードが故障している場合には、セカンダリストレージノードはプライマリストレージノードに取って代わることができる。
【0046】
例えば、
図2を参照されたい。第1ストレージノードおよび第2ストレージノードが、ストレージシステムにおいて、相互バックアップ関係またはプライマリ/セカンダリ関係を有する任意の2つのストレージノードであると仮定する。ストレージノードがバスを通じてハードディスクモジュールとやり取りする一例が、説明のために用いられている。第1ストレージノードは、複数の第1ハードディスクモジュールに対応する。第2ストレージノードは、複数の第2ハードディスクモジュールに対応する。第1ストレージノードは、第1バスを通じて、複数の第1ハードディスクモジュールおよび複数の第2ハードディスクモジュールに接続されている。第2ストレージノードは、第2バスを通じて、複数の第1ハードディスクモジュールおよび複数の第2ハードディスクモジュールに接続されている。
【0047】
一実装例では、第1ストレージノードおよび第2ストレージノードは相互バックアップ関係にある。第1ストレージノードおよび第2ストレージノードが両方とも正常状態にある場合、第1ストレージノードは、第1バスを通じて、複数の第1ハードディスクモジュールへの通信接続を確立し、第1ストレージノードは、複数の第1ハードディスクモジュールに対してのみ読み出しアクセスおよび書き込みアクセスを直接的に行い、第2ストレージノードは、第2バスを通じて、複数の第2ハードディスクモジュールへの通信接続を確立し、第2ストレージノードは、複数の第2ハードディスクモジュールに対してのみ読み出しアクセスおよび書き込みアクセスを直接的に行う。第2ストレージノードが故障していると仮定すると、第1ストレージノードは第2ストレージノードに取って代わり、第2ストレージノードの複数の第2ハードディスクモジュールにアクセスする。この場合、第1ストレージノードは、第1ストレージノードに対応する複数の第1ハードディスクモジュールと、第2ストレージノードに対応する複数の第2ハードディスクモジュールとへの読み出しアクセスおよび書き込みアクセスを直接的に行うことができる。
【0048】
図3を参照されたい。第1ストレージノードが、第1通信インタフェースと、処理ユニットと、第2通信インタフェースとを含む。処理ユニットは、第1通信インタフェースおよび第2通信インタフェースに接続されている。第1ストレージノードは、第1通信インタフェースを通じて、ストレージシステム内にある別のストレージノードへの通信接続を確立する。第1ストレージノードの第2通信インタフェースは、第1ストレージノードに対応する複数の第1ハードディスクモジュールと、第2ストレージノードに対応する複数の第2ハードディスクモジュールとに、第1バスを通じて接続されている。
【0049】
第1ストレージノードが正常状態にある場合、第1ストレージノードの第2通信インタフェースは、第1バスを通じて、複数の第1ハードディスクモジュールへの通信接続を確立する。この場合、第1ストレージノードの処理ユニットは、第1ストレージノードの第1通信インタフェースを通じて、ストレージシステム内にある別のストレージノードにデータを送信しても、別のストレージノードにより送信されたデータまたはアクセス要求を受信してもよい。あるいは、第1ストレージノードの処理ユニットは、第1ストレージノードの第1通信インタフェースを通じて、クライアントにデータを送信しても、クライアントにより送信されたアクセス要求を受信してもよい。第1ストレージノードの処理ユニットは、第1ストレージノードの第2通信インタフェースを通じて、複数の第1ハードディスクモジュールへの読み出しアクセスおよび書き込みアクセスを行う。言い換えれば、第1ストレージノードのユニットが、第2通信インタフェースを通じて、複数の第1ハードディスクモジュールのインタフェースモジュールとやり取りする。第2ストレージノードが故障している場合、第1ストレージノードの第2通信インタフェースは、第1バスを通じて、複数の第2ハードディスクモジュールへの通信接続を確立する。この場合、第1ストレージノードの処理ノードはさらに、第2通信インタフェースを通じて、複数の第2ハードディスクモジュールへの読み出しアクセスおよび書き込みアクセスを行うことができる。
【0050】
任意選択で、第1ストレージノード内にある第1通信インタフェースおよび処理ユニットは、2つの別個のモジュールである。第1通信インタフェースおよび処理ユニットは、高速バスを通じて接続されてよい。高速バスは、PCIe、インテルQuickPathインターコネクト(QPI)などであってよい。あるいは、第1ストレージノード内にある第1通信インタフェースおよび処理ユニットは一緒に統合されてもよい。
【0051】
任意選択で、第1ストレージノード内にある第2通信インタフェースおよび処理ユニットは、2つの別個のモジュールである。あるいは、第2通信インタフェースおよび処理ユニットは、高速バスを通じて接続されてよい。あるいは、第1ストレージノード内にある第2通信インタフェースおよび処理ユニットは一緒に統合されてもよい。
【0052】
任意選択で、第1ストレージノード内にある第1通信インタフェースは、ネットワークインタフェースカードなどであってよい。例えば、
図4を参照されたい。第1通信インタフェースが、10Gネットワークインタフェースカードであってよい。第1ストレージノード内にある処理ユニットが、中央演算処理装置(central processing unit:CPU)であっても、1つまたは複数のチップを含む処理ユニットであってもよい。例えば、処理ユニットは、データ圧縮カード、人工知能(Artificial Intelligence:AI)推論カード、画像処理カード、ビデオキャプチャカードなどであってもよい。第1ストレージノード内にある第2通信インタフェースが、PCIeスイッチチップ、SASスイッチチップなどであってもよい。
【0053】
任意選択で、ストレージノードおよびハードディスクモジュールは共有リンクボードを通じて互いに接続されてよく、共有リンクボードは1つまたは複数の物理回線により構成されたバスを含む。
【0054】
任意選択で、
図3を参照されたい。第1ストレージノードの第2通信インタフェースは、第1バスを通じて、複数の第1ハードディスクモジュールおよび複数の第2ハードディスクモジュールに接続されている。第2ストレージノードの第2通信インタフェースは、第2バスを通じて、複数の第1ハードディスクモジュールおよび複数の第2ハードディスクモジュールに接続されている。
【0055】
任意選択で、
図5を参照されたい。1つの第1ハードディスクモジュールが、1つの第2ハードディスクモジュールに通信可能に接続されている。例えば、第1ハードディスクモジュールおよび第2ハードディスクモジュールは、バスを通じて互いに接続されている。特定の通信接続方式が、本発明の本実施形態において限定されることはない。このように、1つの第1ハードディスクモジュールおよび1つの第2ハードディスクモジュールが、カスケード関係を形成する。このように、第1ストレージノードの第2通信インタフェースをそれぞれの第2ハードディスクモジュールに接続する必要はなくてよく、第2ストレージノードの第2通信インタフェースをそれぞれの第1ハードディスクモジュールに接続する必要もなくてよい。したがって、ストレージノードの第2通信インタフェースへの接続量を削減することができる。第1ハードディスクモジュールにカスケード接続された第2ハードディスクモジュールでは、第2ストレージノードが故障している場合、第1ストレージノードは、第1ストレージノードの第2通信インタフェース、第1ハードディスクモジュール、および第1ハードディスクモジュールのカスケード関係に基づいて、第2ハードディスクモジュールにアクセスすることができる、すなわち、第1ストレージノードは第2ハードディスクモジュールのインタフェースモジュールとやり取りする。例えば、第1ストレージノードおよび第2ストレージノードは、相互バックアップ関係にあるストレージノードである。第1ストレージノードおよび第2ストレージノードは、互いに故障が発生しているかどうかを相互に判定することができる。例えば、第1ストレージノードおよび第2ストレージノードは、ハートビートに基づいて、故障が発生しているかどうかを判定する。
【0056】
任意選択で、ストレージノードは、別のストレージノードに対応する複数のハードディスクモジュールをスキャンして、別のストレージノードに対応する、正常状態にあるハードディスクモジュールを取得し、正常状態にあるハードディスクモジュールへの通信接続を確立してよい。
【0057】
任意選択で、ストレージシステム内にあるストレージノードが、ストレージノードのノード識別子とハードディスクモジュールのモジュール識別子との対応関係を格納してよい。
【0058】
任意選択で、ストレージノードのノード識別子は、ストレージノードのアドレスであってよい。例えば、ストレージノードのノード識別子は、インターネットプロトコル(Internet Protocol:IP)アドレスであっても、媒体アクセス制御(Media Access Control:MAC)アドレスであってもよい。ハードディスクモジュールのモジュール識別子は、ストレージシステム内にあるハードディスクモジュールの数、インタフェースモジュールの識別子、インタフェースモジュールのアドレスなどであってもよい。これについては、本発明の本実施形態において限定しない。
【0059】
ストレージノードが別のストレージノードに対応する複数のハードディスクモジュールに取って代わる場合、ストレージノードは、ノード識別子とモジュール識別子との対応関係において複数のハードディスクモジュールのそれぞれのモジュール識別子に対応するノード識別子を、ストレージノードのノード識別子に更新し、ストレージシステムの他のストレージノードに更新要求を送信する。更新要求は、ストレージノードのノード識別子と複数のハードディスクモジュールのモジュール識別子とを含む。
【0060】
ストレージシステム内にあるその他のストレージノードのうちのいずれか1つが、更新要求を受信し、ノード識別子とモジュール識別子との対応関係において複数のハードディスクモジュールのそれぞれのモジュール識別子に対応するノード識別子を、その他のストレージノードのうちのいずれか1つのノード識別子に更新する。
【0061】
例えば、相互バックアップ関係にある第1ストレージノードおよび第2ストレージノードでは、第1ストレージノードは第2ストレージノードが故障しているかどうかを判定することができ、また第2ストレージノードも、第1ストレージノードが故障しているかどうかを判定することができる。第1ストレージノードおよび第2ストレージノードは、次に挙げる2つの方式で、互いに故障が発生しているかどうかを判定することができる。この2つの方式とは、以下の通りである。
【0062】
第1の方式では、第1ストレージノードは第2ストレージノードにハートビート情報を定期的に送信し、第2ストレージノードも、第1ストレージノードにハートビート情報を定期的に送信する。第2ストレージノードにより送信されたハートビート情報を受信した後に、第1ストレージノードが第2ストレージノードにより送信されるハートビート情報を第1の時間長の間に再度受信しない場合、第1ストレージノードは、第2ストレージノードが故障していると判定する。同様に、第1ストレージノードにより送信されたハートビート情報を受信した後に、第2ストレージノードが第1ストレージノードにより送信されるハートビート情報を第1の時間長の間に再度受信しない場合、第2ストレージノードは、第1ストレージノードが故障していると判定する。
【0063】
第2の方式では、第1ストレージノードが故障していることを検出した場合、第1ストレージノードは第2ストレージノードに割り込み情報を送信してよく、第2ストレージノードは、割り込み情報を受信して、第1ストレージノードが故障していると判定する。同様に、第2ストレージノードが故障していることを検出した場合、第2ストレージノードは第1ストレージノードに割り込み情報を送信してよく、第1ストレージノードは、割り込み情報を受信して、第2ストレージノードが故障していると判定する。
【0064】
任意選択で、ストレージシステムはさらにクライアントを含んでよく、クライアントはストレージシステム内にあるストレージノードとやり取りしてよい。クライアントは、格納対象データをストレージシステムに格納しても、ストレージシステムから読み出し対象データを読み出してもよい。格納対象データをストレージシステムに格納する詳細な実装プロセスについては、
図6または
図7に示す実施形態を参照されたい。ストレージシステムから読み出し対象データを読み出す詳細な実装プロセスについては、
図9に示す実施形態を参照されたい。詳細については、ここで説明しない。
【0065】
図6を参照されたい。本願の一実施形態が、ストレージシステムにおけるデータ記憶方法を提供する。ストレージシステムは、
図1~
図5に示すストレージシステムであってよい。本方法では、ストレージシステム内にあるストレージノードが、クライアントにより送信された格納対象データを受信し、この格納対象データをM個のデータユニットに分割し、M個のデータユニット用にN個のチェックユニットを生成し、K個のユニットをK個のハードディスクモジュールに格納する。K個のユニットは、M個のデータユニットとN個のチェックユニットとを含み、MおよびNは両方とも正の整数である。本方法は、以下に挙げる段階を含む。
【0066】
段階101:クライアントは第1ストレージノードにストレージ要求を送信し、ストレージ要求は格納対象データを含む。
【0067】
本発明の本実施形態では、第1ストレージノードは、K個のユニットが属するパーティションとハードディスクモジュールとの対応関係に基づいて、K個のユニットを格納するK個のハードディスクモジュールを決定してよい。さらに、あるパーティションに記録されたハードディスクモジュールがさらに、このハードディスクモジュールが属するストレージノードを含む。このパーティションには、1つのストレージノードがプライマリストレージノードとして用いられることが記録されている。本発明の本実施形態では、第1ストレージノードがプライマリストレージノードである一例が用いられている。クライアントは、格納対象データのデータ識別子に基づいて、対応するパーティションを決定し、パーティション内にあるプライマリストレージノードに関する情報に基づいて、第1ストレージノードにストレージ要求を送信すると決定する。
【0068】
任意選択で、本発明の本実施形態におけるストレージシステムは、複数のパーティション(Partition)を含み、それぞれのハードディスクモジュールは1つまたは複数のパーティションに属する。パーティションにおけるストライプ(Stripe)の長さがECアルゴリズムに従って決定され、ストライプの長さは、M個のデータユニットおよびN個のチェックユニットの長さの合計、すなわち、[M+N]である。ECアルゴリズムによれば、一般に、ストライプ内にある1つのユニットが1つのハードディスクモジュールに格納されており、[M+N]個のユニットには[M+N]個のハードディスクモジュールが必要となる。したがって、1つのパーティションが[M+N]個のハードディスクモジュールを含む。ストレージノードは、パーティションとハードディスクモジュールとの対応関係を格納する。具体的には、パーティションとハードディスクモジュールとの対応関係は、パーティション識別子と、ストレージノードのハードディスクモジュールのモジュール識別子とを含んでよく、ストレージノードのハードディスクモジュールのモジュール識別子は、モジュール識別子と、ハードディスクモジュールが属するストレージノードの識別子とを含む。これについては、本発明の本実施形態において限定しない。ストレージノードは、格納対象データを複数のデータユニットに分割し、データユニットのチェックユニットを計算し、データユニットが属するパーティションに基づいて、データユニットおよびチェックユニットを格納するハードディスクモジュールを決定する。一般に、ストレージシステムは、ハッシュ(Hash)リング方式でパーティション分割を行う。本発明では、具体的な実装例を限定しない。
【0069】
段階102:第1ストレージノードは、格納対象データをM個のデータユニットに分割し、M個のデータユニット用にN個のチェックユニットを生成する。MおよびNは両方とも正の整数である。
【0070】
第1ストレージノードは、M個のデータユニットに基づいてN個のチェックユニットを生成し、N個のチェックユニットはM個のデータユニットのうちの少なくとも1つを復元するのに用いられてよい。
【0071】
段階103:第1ストレージノードはK個のユニットをK個のハードディスクモジュールに格納する。K個のユニットはM個のデータユニットおよびN個のチェックユニットを含み、K個のハードディスクモジュールのそれぞれはK個のユニットのうちの1つを格納する。
【0072】
それぞれのハードディスクモジュールは、インタフェースモジュールとハードディスクとを含み、インタフェースモジュールはハードディスクとやり取りする。
【0073】
本発明の本実施形態では、第1ストレージノードは、K個のユニットが属するパーティションとハードディスクモジュールとの対応関係に基づいて、K個のユニットを格納するK個のハードディスクモジュールを決定してよい。さらに、それぞれのストレージノードは、ハードディスクモジュールとハードディスクモジュールが属するストレージノードとの関係を格納する。したがって、第1ストレージノードは、K個のユニットを格納するK個のハードディスクモジュールを決定した後に、対応するストレージ要求を、K個のハードディスクモジュール内にあるローカルハードディスクモジュール以外のハードディスクモジュールが属するストレージノードに送信する。具体的には、第1ストレージノードは第1ストレージコマンドを第2ストレージノードに送信し、第1ストレージコマンドはK2個のユニットを含む。第3ストレージノードが、K3個の第3ハードディスクモジュールに対応する。第1ストレージノードは、第3ストレージノードに第2ストレージコマンドを送信する。
【0074】
一実装例では、K個のハードディスクモジュールは、第1ストレージノードに対応するK1個の第1ハードディスクモジュールと、第2ストレージノードに対応するK2個の第2ハードディスクモジュールと、第3ストレージノードに対応するK3個の第3ハードディスクモジュールとを含む。K1、K2、およびK3は全て正の整数であり、K1+K2+K3=Kである。
【0075】
この段階では、第1ストレージノードは、K1個のユニットをK1個の第1ハードディスクモジュールに格納し、第2ストレージノードに第1ストレージコマンドを送信する。第1ストレージコマンドはK2個のユニットを含む。第1ストレージノードは第3ストレージノードに第2ストレージコマンドを送信する。第2ストレージコマンドはK3個のユニットを含む。
【0076】
第2ストレージノードは第1ストレージコマンドを受信し、第1ストレージコマンドに含まれるK2個のユニットをK2個の第2ハードディスクモジュール内にあるハードディスクに格納する。第3ストレージノードは第2ストレージコマンドを受信し、第2ストレージコマンドに含まれるK3個のユニットをK3個のハードディスクモジュール内にあるハードディスクに格納する。
【0077】
任意選択で、第1ストレージコマンドは格納対象データのデータ識別子を含み、第2ストレージコマンドは格納対象データのデータ識別子を含む。
【0078】
任意選択で、第1ストレージノードは、K1個のユニットを格納して第1ストレージコマンドおよび第2ストレージコマンドを送信した後に、クライアントにストレージ応答を送信する。
【0079】
任意選択で、第2ストレージノードが故障している場合、第1ストレージノードは、K1個のユニットをK1個の第1ハードディスクモジュールに格納し、K2個のユニットをK2個の第2ハードディスクモジュールに格納する。
【0080】
任意選択で、ストレージノードがユニットをハードディスクモジュールに格納する場合、ストレージノードはユニットをハードディスクモジュールに含まれるインタフェースモジュールに送信し、インタフェースモジュールは、ユニットを受信して、ユニットをハードディスクモジュールに含まれるハードディスクに格納する。
【0081】
任意選択で、ストレージノードは、ユニットをハードディスクモジュールに格納する前に、さらに、ユニットを圧縮し、圧縮したユニットをハードディスクモジュールに格納してよい。
【0082】
任意選択で、第1ストレージノードは、K1個のユニットをK1個の第1ハードディスクモジュールのハードディスクに格納した後に、さらに、K1個のユニットの位置情報を取得する。K1個のユニットのうちのいずれか1つでは、ユニットの位置情報が、ユニットのデータ型と、ユニットを格納するハードディスクモジュールのモジュール識別子と、ハードディスクモジュールにおけるユニットのアドレス情報とを含む。アドレス情報は、ハードディスク識別子、開始ストレージアドレス、データ長などを含んでよい。ユニットがデータユニットである場合、このユニットのデータ型はデータユニットである。ユニットがチェックユニットである場合、このユニットのデータ型はチェックユニットである。ユニットがデータユニットである場合、このユニットの位置情報はさらに、データユニットに対応するチェックユニットのユニット識別子を含んでよく、且つ/またはユニットがチェックユニットである場合、このユニットの位置情報はさらに、チェックユニットに対応する少なくとも1つのデータユニットのユニット識別子を含む。第1ストレージノードは、それに応じて、格納対象データのデータ識別子およびK1個のユニットの位置情報をデータ識別子と位置情報との対応関係に格納する。
【0083】
同様に、第2ストレージノードは、K2個のユニットをK2個の第2ハードディスクモジュールに格納した後に、さらに、K2個のユニットの位置情報を取得し、格納対象データのデータ識別子およびK2個のユニットの位置情報をデータ識別子と位置情報との対応関係に格納する。第3ストレージノードは、K3個のユニットをK3個の第3ハードディスクモジュールに格納した後に、さらに、K3個のユニットの位置情報を取得し、格納対象データのデータ識別子およびK3個のユニットの位置情報をデータ識別子と位置情報との対応関係に格納する。
【0084】
データ識別子と位置情報との対応関係はさらに、ストレージシステム内にあるストレージノード間で同期され、これにより、これらのストレージノードはデータ識別子と位置情報との同じ対応関係を格納する。
【0085】
本発明の本実施形態では、同じパーティションに属するK個のハードディスクモジュールが属するストレージノードが、相互バックアップ関係またはプライマリ/セカンダリ関係にあるストレージノードである。
【0086】
任意選択で、第1ストレージノードは、段階102を行う前に、ストレージ要求を受信し、第1の量を取得し、第1の量に基づいてMおよびNを取得する。第1の量は、ストレージシステムに含まれる、正常状態にあるハードディスクモジュールの量である。
【0087】
第1ストレージノードが第1の量を取得するオペレーションは以下の通りであってよい。第1ストレージノードは、第1ストレージノードに対応する、正常状態にあるハードディスクモジュールの量を取得し、ストレージシステム内の正常状態にある他のストレージノードにクエリコマンドを送信する。ストレージシステム内にある任意の他のストレージノードでは、任意の他のストレージノードが、クエリコマンドを受信し、任意の他のストレージノードに対応する、正常状態にあるハードディスクモジュールの量を取得し、正常状態にあるハードディスクモジュールの量を第1ストレージノードに送信する。第1ストレージノードは、他のストレージノードにより送信されたハードディスクモジュール量を受信し、取得したハードディスクモジュール量と受信したハードディスクモジュール量とを累積して、第1の量を取得する。
【0088】
第1ストレージノードと少なくとも1つのハードディスクモジュールとの間に、通信接続が確立される。少なくとも1つのハードディスクモジュールのうちのいずれか1つが故障している場合、第1ストレージノードと少なくとも1つのハードディスクモジュールのうちのいずれか1つとの間の通信接続が切断される。したがって、第1ストレージノードが、第1ストレージノードに対応する正常状態にあるハードディスクモジュールの量を取得することは、以下の通りであってよい。第1ストレージノードは、第1ストレージノードへの通信接続を有するハードディスクモジュールを判定し、判定したハードディスクモジュールの量を計算して、第1ストレージノードに対応する正常状態にあるハードディスクモジュールの量を取得する。
【0089】
同様に、任意の他のストレージノードが任意の他のストレージノードに対応する正常状態にあるハードディスクモジュールの量を取得する方式は、第1ストレージノードが、第1ストレージノードに対応する正常状態にあるハードディスクモジュールの量を取得する方式と同じである。
【0090】
任意選択で、第1ストレージノードがMおよびNを取得するオペレーションが以下の通りであってよい。第1ストレージノードは格納されたMおよびNを取得し、[M+N]が第1の量より少ない場合には第1の量に基づいてNを取得し、第1の量からNを差し引いてMを取得し、[M+N]が第1の量より多いまたはこれと等しい場合には格納されたMおよびNに基づいて段階102を行う。あるいは、第1ストレージノードは第1の量と第2の量とを比較する。第2の量は、最後に取得した、ストレージシステムに含まれる正常状態にあるハードディスクモジュールの量である。第1の量が第2の量と異なる場合、第1ストレージノードは第1の量に基づいてNを取得し、第1の量からNを差し引いてMを取得する。第1の量が第2の量と同じである場合、第1ストレージノードは、格納されている最後に取得したMおよびNを取得する。
【0091】
任意選択で、第1の量が第2の量と異なる場合、第1ストレージノードは、格納された第2の量を第1の量に更新し、格納されたMおよびNの値をこの段階で取得されたMおよびNの値にそれぞれ更新してよい。
【0092】
任意選択で、第1ストレージノードが第1の量に基づいてNを取得することは、以下の通りであってよい。
【0093】
第1の量が限界量より少なく且つNがXより大きい場合、第1ストレージノードはN=N-Xと設定する。Xは0より大きい整数である。第1の量が限界量より多いまたはこれと等しく且つNが初期値より小さい場合、第1ストレージノードは、Nを初期値と等しくなるように設定する。第1の量が限界量より多いまたはこれと等しく且つNが初期値と等しい場合、第1ストレージノードは格納されたNを取得する。
【0094】
初期値は、予め設定された値であってよい。例えば、初期値は、2、3、4、または5などの値であってもよい。
【0095】
本願の本実施形態では、ストレージシステム内にあるハードディスクモジュールの粒度で記憶が行われる。具体的には、データがM個のデータユニットに分割され、これらのデータユニットを計算して、対応するN個のチェックユニットを取得し、[M+N]個のハードディスクモジュールを選択して、対応するデータユニットおよび対応するチェックユニットを格納する。これにより、ストレージノードの粒度で記憶が行われる従来の技術と比較すると、ハードディスクモジュールの量がストレージノードの量より多いため、ストレージシステム内にあるストレージリソースを十分に利用することができる。さらに、それぞれのストレージノードが複数のハードディスクモジュールに対応するため、ストレージノードのコンピューティングリソースを十分に利用することができ、またストレージノードのCPUの計算能力が十分に利用される。これにより、コンピューティングリソースの無駄が削減される。
【0096】
本発明の本実施形態では、ストレージノードの粒度の代わりに、ハードディスクモジュールの粒度でストレージリソースが管理される。一実装例では、ハードディスクモジュールのインタフェースモジュールがストレージリソースプロセスを作成し、ストレージノードは、ストレージリソースプロセスに基づいて、用いられ得るストレージリソース粒度を識別する。ストレージリソースプロセスは、ハードディスクモジュールのモジュール識別子を含む。
【0097】
図7を参照されたい。本願の一実施形態が、ストレージシステムにおけるデータ記憶方法を提供する。ストレージシステムは、
図1~
図5に示すストレージシステムであってよい。本方法では、クライアントが、格納対象データをM個のデータユニットに分割し、M個のデータユニット用にN個のチェックユニットを生成し、ストレージシステム内にあるK個のハードディスクモジュールにK個のユニット(K個のユニットはM個のデータユニットおよびN個のチェックユニットを含む)を送信し、K個のユニットをK個のハードディスクモジュールに格納する、すなわち、K個のハードディスクモジュールのそれぞれは、K個のユニットのうちの1つを格納する。ここで、MおよびNは両方とも正の整数である。本方法は、以下に挙げる段階を含む。
【0098】
段階201:クライアントは、格納対象データをM個のデータユニットに分割し、M個のデータユニット用にN個のチェックユニットを生成する。
【0099】
段階202:クライアントは、ストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを送信し、K個のユニットはM個のデータユニットおよびN個のチェックユニットを含む。
【0100】
本発明の本実施形態では、クライアントは、K個のユニットが属するパーティションとハードディスクモジュールとの対応関係に基づいて、K個のユニットを格納するK個のハードディスクモジュールを決定してよい。一実装例では、パーティションとハードディスクモジュールとの対応関係は、プライマリストレージノードに関する情報を含む。第1ストレージノードがここでも一例として用いられる。パーティションとハードディスクモジュールとの対応関係については、前述の説明を参照されたい。詳細については、再度ここで説明しない。クライアントがストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを送信することは具体的には、クライアントが第1ストレージノードにK個のユニットを送信することを含む。第1ストレージノードは、K個のユニットを格納するK個のハードディスクモジュールを決定した後に、対応するストレージ要求を、K個のハードディスクモジュール内にあるローカルハードディスクモジュール以外のハードディスクモジュールが属するストレージノードに送信する。具体的には、第1ストレージノードは第1ストレージコマンドを第2ストレージノードに送信し、第1ストレージコマンドはK2個のユニットを含む。第3ストレージノードが、K3個の第3ハードディスクモジュールに対応する。第1ストレージノードは、第3ストレージノードに第2ストレージコマンドを送信する。K1、K2、およびK3は全て正の整数であり、K1+K2+K3=Kである。
【0101】
本発明の本実施形態では、クライアントは、K個のユニットが属するパーティションとハードディスクモジュールとの対応関係に基づいて、K個のユニットを格納するK個のハードディスクモジュールを決定してよい。一実装例では、K個のユニットが属するパーティションとハードディスクモジュールとの対応関係はさらに、ハードディスクモジュールが属するストレージノードに関する情報を含む。例えば、K個のハードディスクモジュールは、第1ストレージノードのK1個のハードディスクモジュールと、第2ストレージノードのK2個のハードディスクモジュールと、第3ストレージノードのK3個のハードディスクモジュールとを含む。クライアントは、K1個のハードディスクモジュールに格納されたK1個のユニットを第1ストレージノードに送信し、K2個のハードディスクモジュールに格納されたK2個のユニットを第2ストレージノードに送信し、K3個のハードディスクモジュールに格納されたK3個のユニットを第3ストレージノードに送信する。
【0102】
本発明の本実施形態では、同じパーティションに属するK個のハードディスクモジュールが属するストレージノードが、相互バックアップ関係またはプライマリ/セカンダリ関係にあるストレージノードである。
【0103】
本発明の本実施形態では、ストレージノードの粒度の代わりに、ハードディスクモジュールの粒度でストレージリソースが管理される。一実装例では、ハードディスクモジュールのインタフェースモジュールがストレージリソースプロセスを作成し、クライアントは、ストレージリソースプロセスに基づいて、用いられ得るストレージリソース粒度を識別する。ストレージリソースプロセスは、ハードディスクモジュールのモジュール識別子を含む。その上、ストレージリソースプロセスはさらに、ハードディスクモジュールが属するストレージノードの識別子を含む。
【0104】
本願の一実施形態が、ストレージシステムにおけるデータ読み出し方法を提供する。ストレージシステムは、
図1~
図5に示すストレージシステムであってよい。本方法では、ストレージシステム内にあるストレージノードが、クライアントにより送信された読み出し要求を受信し、読み出し要求は読み出し対象データのデータ識別子を含む。ストレージノードは、データ識別子に基づいて読み出し対象データを取得し、この読み出し対象データをクライアントに送信する。
【0105】
一実装例では、第1ストレージノードが、K個のユニットが属するパーティションとハードディスクモジュールとの対応関係に基づいて、K個のユニットを格納するK個のハードディスクモジュールを決定してよい。さらに、あるパーティションに記録されたハードディスクモジュールがさらに、このハードディスクモジュールが属するストレージノードを含む。このパーティションには、1つのストレージノードがプライマリストレージノードとして用いられることが記録されている。本発明の本実施形態では、第1ストレージノードがプライマリストレージノードである一例が用いられている。クライアントは、読み出し対象データのデータ識別子に基づいて、対応するパーティションを決定し、パーティション内にあるプライマリストレージノードに関する情報に基づいて、第1ストレージノードに読み出し要求を送信すると決定する。読み出し要求は、読み出し対象データのデータ識別子を含む。第1ストレージノードは、K個のユニットが属するパーティションと、ハードディスクモジュールと、読み出し対象データのデータ識別子との対応関係に基づいて、読み出し対象データが位置するハードディスクモジュールを判定し、判定したハードディスクモジュールから読み出し対象データを読み出す。
図6に示す実施形態を参照すると、第1ストレージノードが故障している場合、第2ストレージノードおよび第3ストレージノードが第1ストレージノードと相互バックアップ関係またはプライマリ/セカンダリ関係を有するため、第2ストレージノードまたは第3ストレージノードは、第1ストレージノードに取って代わり、前述の読み出し要求を実行するように構成されている。さらに、第1ストレージノードに取って代わるストレージノードは、K1個のハードディスクモジュールに直接的にアクセスすることができる。さらに、読み出し対象データを格納するハードディスクモジュールが故障している場合、または読み出し対象データが位置するハードディスクモジュール内にあるハードディスクが故障している場合、または、ハードディスクモジュールに格納された読み出し対象データにエラーが発生したために読み出し対象データが失われ、読み出し対象データをハードディスクモジュールにおいてローカルに復元できない場合、本発明の本実施形態では、読み出し対象データが位置するデータユニットを、K個のハードディスクモジュールのうちの別のハードディスクモジュールに格納されたユニットを用いて復元することができる。すなわち、M個のデータユニットとN個のチェックユニットとの間に形成されたチェック保護関係を用いて、M個のデータユニットのうちのN個のデータユニットを復元できる機能が用いられる。
【0106】
別の実装例では、クライアントは、読み出し対象データのデータ識別子に基づいて、対応するパーティションを決定し、このパーティションに基づいて、パーティション内にある、データ識別子に対応するハードディスクモジュールを決定する。クライアントは、パーティション内にあるハードディスクモジュールとストレージノードとの対応関係に基づいて、すなわち、ハードディスクモジュールが属するストレージノードに基づいて、読み出し対象データが位置するハードディスクモジュールが属するストレージノードを判定し、このストレージノードに読み出し要求を送信する。ストレージノードは、読み出し要求を受信した後に、読み出し要求で搬送される読み出し対象データのデータ識別子に基づいて、ハードディスクモジュールから読み出し対象データを読み出す。すなわち、ストレージノードは、ハードディスクモジュールのインタフェースモジュールとやり取りする。M個のデータユニットおよびN個のチェックユニットに基づいて行われるデータ復元については、前述の実施形態における説明を参照されたい。詳細については、再度ここで説明しない。
【0107】
本発明の別のストレージアーキテクチャでは、クライアントはハードディスクモジュールのインタフェースモジュールとやり取りしてよい、すなわち、クライアントはストレージノードを介さずにハードディスクモジュールに直接的にアクセスすることができる。具体的には、クライアントは、パーティションとハードディスクモジュールとの対応関係に基づいて、対応するK個のハードディスクモジュールにK個のユニットを直接的に送信する、または対応するハードディスクモジュールからデータを読み出す。
【0108】
図8を参照されたい。本願の一実施形態が、ストレージシステムにおけるデータ記憶装置300を提供する。装置300は、前述の実施形態のうちのいずれか1つにおけるストレージノードまたはクライアントで利用されてよく、本装置は、M個のデータユニット用にN個のチェックユニットを生成するように構成された生成ユニット301であって、MおよびNは両方とも正の整数であり、M+N=Kである、生成ユニット301と、ストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを格納するように構成されたストレージユニット302であって、K個のユニットはM個のデータユニットおよびN個のチェックユニットを含み、K個のハードディスクモジュールのそれぞれはK個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールはインタフェースモジュールおよびハードディスクを含み、インタフェースモジュールはハードディスクとやり取りする、ストレージユニット302とを含む。
【0109】
任意選択で、ストレージユニット302がK個のハードディスクモジュールにK個のユニットを格納する詳細なオペレーションについては、
図6に示す実施形態における段階103、または
図7に示す実施形態における段階202の関連内容を参照されたい。
【0110】
任意選択で、ストレージシステムは複数のストレージノードを含み、それぞれのストレージノードはK個のハードディスクモジュールのインタフェースモジュールとやり取りする。
【0111】
任意選択で、装置300はストレージシステムのクライアントである。装置300は、送信ユニット303を含む。
【0112】
送信ユニット303は、複数のストレージノードのうちの対象ストレージノードにK個のユニットを送信するように構成されており、これにより、対象ストレージノードはストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを格納する。
【0113】
任意選択で、対象ストレージノードがストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを格納する詳細なオペレーションについては、
図7に示す実施形態における段階202の関連内容を参照されたい。
【0114】
任意選択で、装置300は、複数のストレージノードのうちの1つである。
【0115】
任意選択で、インタフェースモジュールは、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである。
【0116】
任意選択で、ストレージシステムは第2デバイスを含み、第2デバイスと本装置との間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある。
【0117】
本願の本実施形態では、生成ユニットは、M個のデータユニット用にN個のチェックユニットを生成する。ストレージユニットは、ストレージシステム内にあるK個のハードディスクモジュールにK個のユニットを格納する。このように、ストレージユニットは、ストレージシステム内にあるハードディスクモジュールの粒度で記憶を実施する、すなわち、K個のハードディスクモジュールを用いて、対応するK個のユニットを格納する。これにより、ストレージノードの粒度で記憶が行われる従来の技術と比較すると、ハードディスクモジュールの量がストレージノードの量より多いため、ストレージシステム内にあるストレージリソースを十分に利用することができる。
【0118】
図9を参照されたい。本願の一実施形態が、ストレージシステムにおけるデータ読み出し装置400を提供する。装置400は、前述の実施形態のうちのいずれか1つにおけるストレージノードまたはクライアントで利用されてよく、本装置は、読み出し要求を受信するように構成された受信ユニット401であって、読み出し要求は読み出し対象データのデータ識別子を含む、受信ユニット401と、ストレージシステム内にあるK個のハードディスクモジュールからデータ識別子に基づいて、読み出し対象データを格納するハードディスクモジュールを決定するように構成された処理ユニット402とを含む。
【0119】
処理ユニット402はさらに、読み出し対象データを格納するハードディスクモジュールから読み出し対象データを読み出すように構成されており、読み出し対象データはM個のデータユニット内にあるデータに属する。ストレージシステムはさらに、M個のデータユニットのN個のチェックユニットを含む。MおよびNは両方とも正の整数であり、M+N=Kである。K個のハードディスクモジュールのそれぞれは、K個のユニットのうちの1つを格納する。K個のユニットは、M個のデータユニットおよびN個のチェックユニットを含む。それぞれのハードディスクモジュールは、インタフェースモジュールとハードディスクとを含み、インタフェースモジュールはハードディスクとやり取りする。
【0120】
任意選択で、ストレージシステムは複数のストレージノードを含み、それぞれのストレージノードはK個のハードディスクモジュールのインタフェースモジュールとやり取りする。
【0121】
任意選択で、装置400はストレージシステムのクライアントである。装置400はさらに、送信ユニット403を含む。
【0122】
送信ユニット403は、複数のストレージノードのうちの対象ストレージノードにデータ読み出し要求を送信するように構成されており、データ読み出し要求はデータ識別子を搬送する。
【0123】
処理ユニット402は、データ識別子に基づいて、読み出し対象データを格納するハードディスクモジュールから読み出し対象データを読み出すように構成されている。
【0124】
任意選択で、装置400は、複数のストレージノードのうちの1つである。
【0125】
任意選択で、インタフェースモジュールは、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである。
【0126】
任意選択で、ストレージシステムは第2デバイスを含み、第2デバイスと装置400との間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある。
【0127】
本願の本実施形態では、受信ユニットは読み出し要求を受信し、読み出し要求は読み出し対象データのデータ識別子を含む。処理ユニットは、読み出し対象データを格納するハードディスクモジュールから読み出し対象データを読み出し、読み出し対象データはM個のデータユニット内にあるデータに属する。ストレージシステムはさらに、M個のデータユニットのN個のチェックユニットを含み、M+N=Kである。ストレージシステム内にあるK個のハードディスクモジュールのそれぞれは、K個のユニットのうちの1つを格納する。K個のハードディスクモジュールのそれぞれがK個のユニットのうちの1つを格納するので、ストレージシステム内にあるハードディスクモジュールの粒度で記憶が行われる。これにより、ストレージノードの粒度で記憶が行われる従来の技術と比較すると、ハードディスクモジュールの量がストレージノードの量より多いため、ストレージシステム内にあるストレージリソースを十分に利用することができる。
【0128】
図10を参照されたい。本願の一実施形態が、ストレージシステムにおけるデータ記憶装置500を提供する。装置500は、前述の実施形態のうちのいずれか1つにおけるクライアントであっても、ストレージノードであってもよい。装置500は、少なくとも1つのプロセッサ501と、バスシステム502と、少なくとも1つの通信インタフェース503とを含む。
【0129】
任意選択で、ストレージシステムは複数のハードディスクモジュールを含み、少なくとも1つのプロセッサ501はさらに、少なくとも1つの通信インタフェース503を通じて、ストレージシステム内にある複数のハードディスクモジュールとやり取りする。
【0130】
具体的な実装例では、プロセッサ501は、中央演算処理装置(central processing unit:CPU)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)、特定用途向け集積回路(Application-specific integrated circuit:ASIC)、または別のハードウェアであってもよい。あるいは、FPGAまたは他のハードウェアとCPUとは、一緒になってプロセッサ501としての機能を果たす。
【0131】
装置500は、ハードウェア構造体の装置であり、
図8に示す装置300における機能モジュールを実装するように構成されてよい。
【0132】
任意選択で、プロセッサ501が1つまたは複数のCPUで実装されている場合、
図8に示す装置300における生成ユニット301およびストレージユニット302は、1つまたは複数のCPUによってメモリ内のコードを呼び出すことで実現されてよい。
図8に示す装置300における送信ユニット303は、通信インタフェース503によって実現されてよい。
【0133】
通信インタフェース503は、別のデバイスまたは通信ネットワークとやり取りするように構成されている。
【0134】
メモリは、読み出し専用メモリ(read-only memory:ROM)または静的情報および命令を格納できる別のタイプの静的ストレージデバイス、ランダムアクセスメモリ(random access memory:RAM)または情報および命令を格納できる別のタイプの動的ストレージデバイスであってもよく、電気的消去可能プログラム可能型読み出し専用メモリ(electrically erasable programmable read-only memory:EEPROM)、コンパクトディスク読み出し専用メモリ(compact disc read-only memory:CD-ROM)もしくは別のコンパクトディスク記憶装置、光ディスク記憶装置(コンパクトディスク、レーザディスク、光ディスク、デジタル多用途ディスク、ブルーレイディスクなどを含む)、ディスク記憶媒体もしくは別のディスクストレージデバイス、または期待されるプログラムコードを命令もしくはデータ構造体の形態で搬送もしくは格納するのに用いられ得る且つコンピュータがアクセスできる任意の他の媒体であってもよい。しかしながら、メモリはこれに限定されない。メモリは、独立して存在してよく、またバスを通じてプロセッサに接続されている。あるいは、メモリはプロセッサと一体化されてもよい。
【0135】
メモリは、本願の解決手段を実行するためのアプリケーションプログラムコードを格納するように構成されており、プロセッサ501は実行を制御する。プロセッサ501は、メモリに格納されたアプリケーションプログラムコードを実行して、本特許における方法の各機能を実現するように構成されている。
【0136】
図11を参照されたい。本願の一実施形態が、ストレージシステムにおけるデータ読み出し装置600を提供する。装置600は、前述の実施形態のうちのいずれか1つにおけるストレージノードであっても、クライアントであってもよい。装置600は、少なくとも1つのプロセッサ601と、バスシステム602と、少なくとも1つの通信インタフェース603とを含む。
【0137】
具体的な実装例では、プロセッサ601は、中央演算処理装置(central processing unit:CPU)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array:FPGA)、特定用途向け集積回路(Application-specific integrated circuit:ASIC)、または別のハードウェアであってもよい。あるいは、FPGAまたは他のハードウェアとCPUとは、一緒になってプロセッサ601としての機能を果たす。
【0138】
装置600は、ハードウェア構造体の装置であり、
図9に示す装置400における機能モジュールを実装するように構成されてよい。任意選択で、プロセッサ601が1つまたは複数のCPUで実装されている場合、
図9に示す装置400における処理ユニット402は、1つまたは複数のCPUによってメモリ内のコードを呼び出すことで実現されてよい。
図9に示す装置400における受信ユニット401および送信ユニット403は、通信インタフェース603によって実現されてよい。
【0139】
バスシステム602は、前述の構成要素間で情報を伝送するための経路を含んでよい。
【0140】
通信インタフェース603は、別のデバイスまたは通信ネットワークとやり取りするように構成されている。
【0141】
メモリは、読み出し専用メモリ(read-only memory:ROM)または静的情報および命令を格納できる別のタイプの静的ストレージデバイス、ランダムアクセスメモリ(random access memory:RAM)または情報および命令を格納できる別のタイプの動的ストレージデバイスであってもよく、電気的消去可能プログラム可能型読み出し専用メモリ(electrically erasable programmable read-only memory:EEPROM)、コンパクトディスク読み出し専用メモリ(compact disc read-only memory:CD-ROM)もしくは別のコンパクトディスク記憶装置、光ディスク記憶装置(コンパクトディスク、レーザディスク、光ディスク、デジタル多用途ディスク、ブルーレイディスクなどを含む)、ディスク記憶媒体もしくは別のディスクストレージデバイス、または期待されるプログラムコードを命令もしくはデータ構造体の形態で搬送もしくは格納するのに用いられ得る且つコンピュータがアクセスできる任意の他の媒体であってもよい。しかしながら、メモリはこれに限定されない。メモリは、独立して存在してよく、またバスを通じてプロセッサに接続されている。あるいは、メモリはプロセッサと一体化されてもよい。
【0142】
メモリは、本願の解決手段を実行するためのアプリケーションプログラムコードを格納するように構成されており、プロセッサ601は実行を制御する。プロセッサ601は、メモリに格納されたアプリケーションプログラムコードを実行して、本特許における方法の各機能を実現するように構成されている。
【0143】
本発明の本実施形態では、M個のデータユニットにおけるMは1であり、N個のチェックユニットはデータユニットのコピーである。言い換えれば、データユニットは複数のコピーに基づいて保護されており、データユニットは複数のコピーに基づいて復元される。具体的な実装例については、前述の実施形態における説明を参照されたい。詳細については、再度ここで説明しない。
【0144】
本発明の別の実施形態では、ストレージシステムがストレージアレイであり、ストレージノードがストレージアレイのアレイコントローラである。
【0145】
当業者であれば、実施形態の段階の全部または一部が、ハードウェアによって、または関連ハードウェアに指示するプログラムによって、実現されてよいことを理解するであろう。プログラムは、コンピュータ可読記憶媒体に格納されてよい。この記憶媒体は、読み出し専用メモリ、磁気ディスク、または光ディスクを含んでよい。
[他の考えられる項目]
(項目1)
ストレージシステムにおけるデータ記憶方法であって、前記方法が、
第1デバイスがM個のデータユニット用にN個のチェックユニットを生成する段階であって、MおよびNが両方とも正の整数であり、M+N=Kである、生成する段階と、
前記第1デバイスが前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納する段階であって、前記K個のユニットが前記M個のデータユニットおよび前記N個のチェックユニットを有し、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、格納する段階と
を備える方法。
(項目2)
前記ストレージシステムが複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目1に記載の方法。
(項目3)
前記第1デバイスが前記ストレージシステムのクライアントであり、前記第1デバイスが前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納する前記段階が具体的には、
前記クライアントが前記複数のストレージノードのうちの対象ストレージノードに前記K個のユニットを送信する段階と、
前記対象ストレージノードが前記ストレージシステム内にある前記K個のハードディスクモジュールに前記K個のユニットを格納する段階と
を有する、項目2に記載の方法。
(項目4)
前記第1デバイスが前記複数のストレージノードのうちの1つである、項目2に記載の方法。
(項目5)
前記インタフェースモジュールが、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである、項目1から4のいずれか一項に記載の方法。
(項目6)
前記ストレージシステムが第2デバイスを備えており、前記第2デバイスと前記第1デバイスとの間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある、項目1に記載の方法。
(項目7)
ストレージシステムにおけるデータ読み出し方法であって、前記方法が、
第1デバイスが読み出し要求を受信する段階であって、前記読み出し要求が読み出し対象データのデータ識別子を含む、受信する段階と、
前記第1デバイスが、前記ストレージシステム内にあるK個のハードディスクモジュールから前記データ識別子に基づいて、前記読み出し対象データを格納するハードディスクモジュールを決定する段階と、
前記第1デバイスが、前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出す段階であって、前記読み出し対象データが、M個のデータユニット内にあるデータに属しており、前記ストレージシステムがさらに前記M個のデータユニットのN個のチェックユニットを含み、MおよびNが両方とも正の整数であり、M+N=Kであり、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、前記K個のユニットが前記M個のデータユニットおよび前記N個のチェックユニットを含み、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、読み出す段階と
を備える方法。
(項目8)
前記ストレージシステムが複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目7に記載の方法。
(項目9)
前記第1デバイスが前記ストレージシステムのクライアントであり、前記第1デバイスが前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出す前記段階が具体的には、
前記クライアントが前記データ読み出し要求を前記複数のストレージノード内にある対象ストレージノードに送信する段階であって、前記データ読み出し要求が前記データ識別子を搬送する、送信する段階と、
前記対象ストレージノードが前記データ識別子に基づいて、前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出す段階と
を有する、項目7に記載の方法。
(項目10)
前記第1デバイスが前記複数のストレージノードのうちの1つである、項目8に記載の方法。
(項目11)
前記インタフェースモジュールが、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである、項目7から10のいずれか一項に記載の方法。
(項目12)
前記ストレージシステムが第2デバイスを備えており、前記第2デバイスと前記第1デバイスとの間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある、項目7に記載の方法。
(項目13)
ストレージシステムにおけるデータ記憶装置であって、前記装置が、
M個のデータユニット用にN個のチェックユニットを生成するように構成された生成ユニットであって、MおよびNが両方とも正の整数であり、M+N=Kである、生成ユニットと、
前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納するように構成されたストレージユニットであって、前記K個のユニットがM個のデータユニットおよびN個のチェックユニットを含み、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、ストレージユニットと
を備える装置。
(項目14)
前記ストレージシステムが複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目13に記載の装置。
(項目15)
前記装置が前記ストレージシステムのクライアントであり、前記装置が送信ユニットを備えており、
前記送信ユニットが、前記複数のストレージノード内にある対象ストレージノードに前記K個のユニットを送信するように構成されていることにより、前記対象ストレージノードが、前記ストレージシステム内にある前記K個のハードディスクモジュールに前記K個のユニットを格納する、項目14に記載の装置。
(項目16)
前記装置が前記複数のストレージノードのうちの1つである、項目14に記載の装置。
(項目17)
前記インタフェースモジュールが、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである、項目13から16のいずれか一項に記載の装置。
(項目18)
前記ストレージシステムが第2デバイスを備えており、前記第2デバイスと前記装置との間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある、項目13に記載の装置。
(項目19)
ストレージシステムにおけるデータ読み出し装置であって、前記装置が、
読み出し要求を受信するように構成された受信ユニットであって、前記読み出し要求が読み出し対象データのデータ識別子を含む、受信ユニットと、
前記ストレージシステム内にあるK個のハードディスクモジュールから前記データ識別子に基づいて、前記読み出し対象データを格納するハードディスクモジュールを決定するように構成された処理ユニットと
を備えており、
前記処理ユニットがさらに、前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出すように構成されており、前記読み出し対象データが、M個のデータユニット内にあるデータに属しており、前記ストレージシステムがさらに、前記M個のデータユニットのN個のチェックユニットを含み、MおよびNが両方とも正の整数であり、M+N=Kであり、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、前記K個のユニットが前記M個のデータユニットおよび前記N個のチェックユニットを含み、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、装置。
(項目20)
前記ストレージシステムが複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目19に記載の装置。
(項目21)
前記装置が前記ストレージシステムのクライアントであり、前記装置がさらに送信ユニットを備えており、
前記送信ユニットが、前記複数のストレージノード内にある対象ストレージノードに前記データ読み出し要求を送信するように構成されており、前記データ読み出し要求が前記データ識別子を搬送し、
前記処理ユニットが、前記データ識別子に基づいて、前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出すように構成されている、項目19に記載の装置。
(項目22)
前記装置が前記複数のストレージノードのうちの1つである、項目20に記載の装置。
(項目23)
前記インタフェースモジュールが、ホストバスアダプタ、冗長独立ディスクアレイ、エクスパンダカード、またはネットワークインタフェースカードである、項目19から22のいずれか一項に記載の装置。
(項目24)
前記ストレージシステムが第2デバイスを備えており、前記第2デバイスと前記装置との間には、相互バックアップ関係またはプライマリ/セカンダリ関係がある、項目19に記載の装置。
(項目25)
ストレージシステムにおけるストレージデバイスであって、前記ストレージデバイスがプロセッサと通信インタフェースとを備えており、前記プロセッサが前記通信インタフェースとやり取りし、前記プロセッサが、
M個のデータユニット用にN個のチェックユニットを生成することであって、MおよびNが両方とも正の整数であり、M+N=Kである、生成することと、
前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納することであって、前記K個のユニットがM個のデータユニットおよびN個のチェックユニットを含み、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、格納することと
を行うように構成されている、ストレージデバイス。
(項目26)
前記ストレージシステムが複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目25に記載のストレージデバイス。
(項目27)
前記ストレージデバイスが前記ストレージシステムのクライアントであり、前記通信インタフェースが、前記複数のストレージノード内にある対象ストレージノードに前記K個のユニットを送信するように構成されていることにより、前記対象ストレージノードが、前記ストレージシステム内にある前記K個のハードディスクモジュールに前記K個のユニットを格納する、項目26に記載のストレージデバイス。
(項目28)
ストレージシステムにおけるストレージデバイスであって、前記ストレージデバイスがプロセッサと通信インタフェースとを備えており、前記プロセッサが前記通信インタフェースとやり取りし、
前記通信インタフェースが読み出し要求を受信するように構成されており、前記読み出し要求が読み出し対象データのデータ識別子を含み、
前記プロセッサが、
前記ストレージシステム内にあるK個のハードディスクモジュールから前記データ識別子に基づいて、前記読み出し対象データを格納するハードディスクモジュールを決定することと、
前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出すことであって、前記読み出し対象データが、M個のデータユニット内にあるデータに属しており、前記ストレージシステムがさらに前記M個のデータユニットのN個のチェックユニットを含み、MおよびNが両方とも正の整数であり、M+N=Kであり、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、前記K個のユニットが前記M個のデータユニットおよび前記N個のチェックユニットを含み、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、読み出すことと
を行うように構成されている、ストレージデバイス。
(項目29)
前記ストレージシステムが複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目28に記載のストレージデバイス。
(項目30)
前記ストレージデバイスが前記ストレージシステムのクライアントであり、前記通信インタフェースがさらに、前記複数のストレージノード内にある対象ストレージノードに前記データ読み出し要求を送信するように構成されており、前記データ読み出し要求が前記データ識別子を搬送し、
前記プロセッサがさらに、前記データ識別子に基づいて、前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出すように構成されている、項目29に記載のストレージデバイス。
(項目31)
ストレージシステムであって、前記ストレージシステムがストレージデバイスとK個のハードディスクモジュールとを備えており、
前記ストレージデバイスが、
M個のデータユニット用にN個のチェックユニットを生成することであって、MおよびNが両方とも正の整数であり、M+N=Kである、生成することと、
前記K個のユニットをK個のハードディスクモジュールに格納することであって、前記K個のユニットがM個のデータユニットおよびN個のチェックユニットを含み、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、格納することと
を行うように構成されている、ストレージシステム。
(項目32)
前記ストレージシステムがさらに複数のストレージノードを備えており、それぞれのストレージノードが前記K個のハードディスクモジュールのインタフェースモジュールとやり取りする、項目31に記載のストレージシステム。
(項目33)
前記第1デバイスが前記ストレージシステムのクライアントであり、前記ストレージデバイスが、前記ストレージシステム内にあるK個のハードディスクモジュールに前記K個のユニットを格納するように構成されていることが具体的には、
前記クライアントが、前記複数のストレージノード内にある対象ストレージノードに前記K個のユニットを送信するように構成されていることと、
前記対象ストレージノードが、前記ストレージシステム内にある前記K個のハードディスクモジュールに前記K個のユニットを格納するように構成されていることと
を含む、項目32に記載のストレージシステム。
(項目34)
ストレージシステムであって、前記ストレージシステムがストレージデバイスとK個のハードディスクモジュールとを備えており、
前記ストレージデバイスが、
読み出し要求を受信することであって、前記読み出し要求が読み出し対象データのデータ識別子を含む、受信することと、
前記K個のハードディスクモジュールから前記データ識別子に基づいて、前記読み出し対象データを格納するハードディスクモジュールを決定することと、
前記読み出し対象データを格納する前記ハードディスクモジュールから前記読み出し対象データを読み出すことであって、前記読み出し対象データが、M個のデータユニット内にあるデータに属しており、前記ストレージシステムがさらに、前記M個のデータユニットのN個のチェックユニットを含み、MおよびNが両方とも正の整数であり、M+N=Kであり、前記K個のハードディスクモジュールのそれぞれが前記K個のユニットのうちの1つを格納し、前記K個のユニットが前記M個のデータユニットおよび前記N個のチェックユニットを含み、それぞれのハードディスクモジュールがインタフェースモジュールおよびハードディスクを有し、前記インタフェースモジュールが前記ハードディスクとやり取りする、読み出すことと
を行うように構成されている、ストレージシステム。
(項目35)
コンピュータプログラム製品であって、前記コンピュータプログラム製品はプログラムコードを備えており、コンピュータが前記プログラムコードを実行すると、前記コンピュータが項目1から6のいずれか一項に記載の方法を実行することができる、コンピュータプログラム製品。
(項目36)
コンピュータプログラム製品であって、前記コンピュータプログラム製品がプログラムコードを備えており、コンピュータが前記プログラムコードを実行すると、前記コンピュータが項目7から12のいずれか一項に記載の方法を実行することができる、コンピュータプログラム製品。