IP Library Granted Patent US 12,197,751
Granted Patent B2
US 12,197,751 · App. 17/859,378 · Granted Jan 14, 2025

Fault tolerant storage in a distributed storage system

Inventors: Can Chen (Chengdu, CN); Ming Chen (Chengdu, CN); Chunyi Tan (Chengdu, CN)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
G06F3/0629G06F3/0604G06F3/0608G06F3/0689
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,197,751
App. No.
17/859,378
Granted
Jan 14, 2025
Kind
B2
Abstract

A data storage method includes that a first device generates N check units for M data units, where M and N are both positive integers, and M+N=K. The first device stores the K units in K hard disk modules in the storage system, where the K units include the M data units and the N check units. Each of the K hard disk modules stores one of the K units. Each hard disk module includes an interface module and a hard disk, and the interface module communicates with the hard disk.

Claims (38)

1. A method, comprising:

generating, by a client device, N check units for M data units, wherein M and N are both positive integers, and wherein M+N=K;

sending, by the client device and to a plurality of storage nodes in a storage system, K units for storage in K storage drives in the storage system, wherein the K units comprise the M data units and the N check units, wherein K is greater than a quantity of the plurality of storage nodes, wherein each of the K storage drives is configured to store one of the K units, wherein at least two storage drives in the K storage drives are a part of a same primary node of the plurality of storage nodes, wherein each of the at least two storage drives comprises an interface communicatively coupled to the primary node of the plurality of storage nodes and a secondary node of the plurality of storage nodes, wherein the primary node of the plurality of storage nodes and the secondary node of the plurality of storage nodes are in primary-secondary relationship, and wherein each of the at least two storage drives are configured to receive two of the K units from the primary node of the plurality of storage nodes through the interface with the primary node of the plurality of storage nodes;

reading, by the client device and through the primary node of the plurality of storage nodes, the two of the K units from the at least two storage drives when the primary node is not faulty; and

reading, by the client device and through the secondary node of the plurality of storage nodes, the two of the K units from the at least two storage drives when the primary node is faulty.

2. The method of claim 1 , further comprising connecting with the K storage drives via a communication interface, wherein the communication interface is a host bus adapter (HBA), a redundant array of independent disks (RAID), an expander card, or a network interface card (NIC).

3. The method of claim 1 , wherein the plurality of storage nodes comprises a storage array controller.

4. The method of claim 1 , wherein the plurality of storage nodes comprises a storage server.

5. The method of claim 1 , wherein reading, by the client device and through the primary node of the plurality of storage nodes, the two of the K units from the at least two storage drives comprises reading, using a first identifier of the primary node and second identifiers of the at least two storage drives, the two of the K units from the at least two storage drives, and wherein reading, by the client device and through the secondary node of the plurality of storage nodes, the two of the K units from the at least two storage drives comprises reading, using a third identifier of the secondary node and the second identifiers of the at least two storage drives, the two of the K units from the at least two storage drives.

6. The method of claim 5 , wherein the first identifier of the primary node and the third identifier of the secondary node comprise an Internet Protocol (IP) address or a media access control (MAC) address, and wherein the second identifiers of the at least two storage drives comprise a number of a hard disk module, a fourth identifier of an interface module, or an address of the interface module.

7. An apparatus, comprising:

a communication interface; and

one or more processors coupled to the communication interface and configured to:

generate N check units for M data units, wherein M and N are positive integers, and wherein M+N=K;

send, to a plurality of storage nodes in a storage system, K units for storage in K storage drives in the storage system, wherein the K units comprise the M data units and the N check units, wherein K is greater than a quantity of the plurality of storage nodes, wherein each of the K storage drives is configured to store one of the K units, wherein at least two storage drives in the K storage drives are a part of a same primary node of the plurality of storage nodes, wherein each of the at least two storage drives comprises an interface communicatively coupled to the primary node of the plurality of storage nodes and a secondary node of the plurality of storage nodes, wherein the primary node of the plurality of storage nodes and the secondary node of the plurality of storage nodes are in primary-secondary relationship, and wherein the at least two storage drives are configured to receive two of the K units from the primary node of the plurality of storage nodes through the interface with the primary node of the plurality of storage nodes;

read, through the primary node of the plurality of storage nodes, the two of the K units from the at least two storage drives when the primary node is not faulty; and

read, through the secondary node of the plurality of storage nodes, the two of the K units from the at least two storage drives when the primary node is faulty.

8. The apparatus of claim 7 , wherein the apparatus is a client of the storage system, and wherein the communication interface is configured to send the K units to the primary node of the plurality of storage nodes.

9. The apparatus of claim 7 , wherein the one or more processors are further configured to connect with the K storage drives via the communication interface, and wherein the communication interface is a host bus adapter (HBA), a redundant array of independent disks (RAID), an expander card, or a network interface card (NIC).

10. The apparatus of claim 7 , wherein the plurality of storage nodes comprises storage array controllers.

11. The apparatus of claim 7 , wherein the plurality of storage nodes comprises storage servers.

12. The apparatus of claim 7 , wherein the one or more processors are further configured to:

read, through the primary node of the plurality of storage nodes, the two of the K units from the at least two storage drives by reading, using a first identifier of the primary node and second identifiers of the at least two storage drives, the two of the K units from the at least two storage drives; and

read, through the secondary node of the plurality of storage nodes, the two of the K units from the at least two storage drives by reading, using a third identifier of the secondary node and the second identifiers of the at least two storage drives, the two of the K units from the at least two storage drives.

13. The apparatus of claim 12 , wherein the first identifier of the primary node and the third identifier of the secondary node comprise an Internet Protocol (IP) address or a media access control (MAC) address, and wherein the second identifiers of the at least two storage drives comprise a number of a hard disk module, a fourth identifier of an interface module, or an address of the interface module.

14. A computer program product comprising instructions stored on a non-transitory computer-readable medium that, when executed by one or more processors, cause an apparatus to:

generate N check units for M data units, wherein M and N are positive integers, and wherein M+N=K;

send, to a plurality of storage nodes in a storage system, K units for storage in K storage drives in the storage system, wherein the K units comprise the M data units and the N check units, wherein K is greater than a quantity of the plurality of storage nodes, wherein each of the K storage drives is configured to store one of the K units, wherein at least two storage drives in the K storage drives are a part of a same primary node of the plurality of storage nodes, wherein each of the at least two storage drives comprise an interface communicatively coupled to the primary node of the plurality of storage nodes and a secondary node of the plurality of storage nodes, wherein the primary node of the plurality of storage nodes and the secondary node of the plurality of storage nodes are in primary-secondary relationship, and wherein the at least two storage drives are configured to receive two of the K units from the primary node of the plurality of storage nodes through the interface with the primary node of the plurality of storage nodes;

read, through the primary node of the plurality of storage nodes, the two of the K units from the at least two storage drives when the primary node is not faulty; and

read, through the secondary node of the plurality of storage nodes, the two of the K units from the at least two storage drives when the primary node is faulty.

15. The computer program product of claim 14 , wherein the apparatus is a client of the storage system, and wherein the one or more processors are further configured to execute the instructions to send the K units to the primary node in the plurality of storage nodes.

16. The computer program product of claim 14 , wherein the one or more processors are further configured to connect with the K storage drives via a communication interface of the apparatus, and wherein the communication interface is a host bus adapter (HBA), a redundant array of independent disks (RAID), an expander card, or a network interface card (NIC).

17. The computer program product of claim 14 , wherein the plurality of storage nodes comprises storage array controllers.

18. The computer program product of claim 14 , wherein the plurality of storage nodes comprises storage servers.

19. The computer program product of claim 14 , wherein the one or more processors are further configured to execute the instructions to cause the apparatus to:

read, through the primary node of the plurality of storage nodes, the two of the K units from the at least two storage drives by reading, using a first identifier of the primary node and second identifiers of the at least two storage drives, the two of the K units from the at least two storage drives; and

read, through the secondary node of the plurality of storage nodes, the two of the K units from the at least two storage drives by reading, using a third identifier of the secondary node and the second identifiers of the at least two storage drives, the two of the K units from the at least two storage drives.

20. The computer program product of claim 19 , wherein the first identifier of the primary node and the third identifier of the secondary node comprise an Internet Protocol (IP) address or a media access control (MAC) address, and wherein the second identifiers of the at least two storage drives comprise a number of a hard disk module, a fourth identifier of an interface module, or an address of the interface module.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 8, 2022
From: CHEN, CAN; CHEN, MING; TAN, CHUNYI
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 062027/0380 →
Priority Claims (2)
CN 202010018706.6 · Jan 8, 2020 · national
CN 202010096222.3 · Feb 17, 2020 · national
Continuity (2)
Continuation PCTCN2020141063 · Dec 29, 2020
Related Publication 20220342567A1 · Oct 27, 2022
References Cited (35)
US 7594134B1 · Coatney · 2009 [cited by examiner]
US 9195392B2 · Feng · 2015 [cited by examiner]
US 20070214314A1 · Reuter · 2007 [cited by applicant]
US 20130290399A1 · Gordon · 2013 [cited by applicant]
US 20140064048A1 · Cohen · 2014 [cited by examiner]
US 20140229696A1 · Feng · 2014 [cited by examiner]
US 20150317099A1 · Resch et al. · 2015 [cited by applicant]
US 20170160967A1 · Cohen et al. · 2017 [cited by applicant]
US 20170206135A1 · Zeng · 2017 [cited by applicant]
US 20170288702A1 · Reinart · 2017 [cited by examiner]
US 20180287912A1 · Zabarsky et al. · 2018 [cited by applicant]
US 20180343019A1 · Xiang · 2018 [cited by examiner]
US 20190057003A1 · Ogawa · 2019 [cited by applicant]
US 20190114076A1 · Wei et al. · 2019 [cited by applicant]
US 20190129649A1 · Zhong · 2019 [cited by examiner]
US 20190235956A1 · Liu et al. · 2019 [cited by applicant]
US 20200356282A1 · Wu et al. · 2020 [cited by applicant]
US 20220342567A1 · Chen et al. · 2022 [cited by applicant]
CN 103699494A · 2014 [cited by applicant]
CN 105573680 · 2016 [cited by examiner]
CN 106201338A · 2016 [cited by applicant]
CN 106662983A · 2017 [cited by applicant]
CN 107273048A · 2017 [cited by applicant]
CN 107943421A · 2018 [cited by applicant]
CN 108780386A · 2018 [cited by applicant]
CN 109213420A · 2019 [cited by applicant]
CN 109271360A · 2019 [cited by applicant]
CN 109726036A · 2019 [cited by applicant]
CN 109783002A · 2019 [cited by applicant]
CN 109783280A · 2019 [cited by applicant]
CN 110096220A · 2019 [cited by applicant]
CN 111399766A · 2020 [cited by applicant]
JP 2017228078A · 2017 [cited by applicant]
JP 2018181325A · 2018 [cited by applicant]
JP 2019036136A · 2019 [cited by applicant]