IP Library Granted Patent US 11,269,727
Granted Patent B2
US 11,269,727 · App. 16/546,684 · Granted Mar 8, 2022

Distributed erasure coded virtual file system

Inventors: Maor Ben Dayan (Tel Aviv, IL); Omri Palmon (Tel Aviv, IL); Liran Zvibel (Tel Aviv, IL)
G06F11/1088G06F3/064G06F3/067G06F3/0619G06F3/0664G06F11/1076G06F11/1415G06F16/182G06F16/188G06F2201/80
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 11,269,727
App. No.
16/546,684
Granted
Mar 8, 2022
Kind
B2
Abstract

A plurality of computing devices are communicatively coupled to each other via a network, and each of the plurality of computing devices comprises one or more of a plurality of storage devices. A plurality of failure resilient address spaces are distributed across the plurality of storage devices such that each of the plurality of failure resilient address spaces spans a plurality of the storage devices. Each one of the plurality of failure resilient address spaces is organized into a plurality of stripes. Each one or more stripes of the plurality of stripes is part of a respective one of a plurality of forward error correction (FEC) protection domains. Each of the plurality of stripes may comprise a plurality of storage blocks. Each block of a particular one of the plurality of stripes may reside on a different one of the plurality of storage devices.

Claims (41)

1. A system comprising:

a computing device of a plurality of computing devices, wherein:

each of the plurality of computing devices is associated with one or more of a plurality of storage devices;

each stripe of a plurality of stripes spans a unique group of two or more storage devices of the plurality of storage devices;

the computing device is operable to:

select a stripe of the plurality of stripes;

write data to a first portion of the selected stripe; and

write error protection information to a second portion of the selected stripe.

2. The system of claim 1 , wherein the stripe selection is based on how many storage blocks are currently in each of the plurality of stripes.

3. The system of claim 1 , wherein the stripe selection is based on a bitmap stored on the plurality of storage devices.

4. The system of claim 1 , wherein the stripe selection is based on how many storage blocks are currently storing data in each of the plurality of stripes.

5. The system of claim 1 , wherein the stripe selection is based on read and write overhead for each of the plurality of stripes.

6. The system of claim 1 , wherein each of the plurality of stripes spans a plurality of failure domains.

7. The system of claim 1 , wherein the computing device is operable to reconstruct a particular stripe upon the failure of one or more storage devices of the unique group of two or more storage devices spanned by the particular stripe.

8. The system of claim 1 , wherein the computing device is operable to prioritize a reconstruction of multiple stripes.

9. The system of claim 1 , wherein the computing device is operable to prioritize a reconstruction of multiple stripes according to a number of failed storage devices in each of the multiple stripes.

10. The system of claim 1 , wherein the computing device is operable to reconstruct a stripe with more failed storage devices faster than a stripe with fewer failed storage devices.

11. The system of claim 1 , wherein the computing device is operable to write data to the selected stripe until a criterion is met.

12. The system of claim 11 , wherein the criterion is based on how many blocks are available for new data to be written to.

13. The system of claim 1 , wherein each stripe comprises one or more storage blocks on each of the two or more spanned storage devices.

14. A system comprising a non-transitory computer readable medium storing a sequence of instructions, wherein:

the sequence of instructions, when executed by a computing device, are operable to cause the computing device to:

select a stripe of a plurality of stripes;

write data to a first portion of the selected stripe; and

write error protection information to a second portion of the selected stripe, wherein:

the computing device is one of a plurality of computing devices;

the plurality of computing devices are operably coupled together via a communication network;

each of the plurality of computing devices is associated with one or more of a plurality of storage devices; and

each stripe of the plurality of stripes spans a unique group of two or more storage devices of the plurality of storage devices.

15. The system of claim 14 , wherein the stripe selection is based on how many storage blocks are currently in each of the plurality of stripes.

16. The system of claim 14 , wherein the stripe selection is based on a bitmap stored on the plurality of storage devices.

17. The system of claim 14 , wherein the stripe selection is based on how many storage blocks are currently storing data in each of the plurality of stripes.

18. The system of claim 14 , wherein the stripe selection is based on read and write overhead for each of the plurality of stripes.

19. The system of claim 14 , wherein each of the plurality of stripes spans a plurality of failure domains.

20. The system of claim 14 , wherein the computing device is operable to reconstruct a particular stripe upon the failure of one or more storage devices of the unique group of two or more storage devices spanned by the particular stripe.

21. The system of claim 14 , wherein the computing device is operable to prioritize a reconstruction of multiple stripes.

22. The system of claim 14 , wherein the computing device is operable to prioritize a reconstruction of multiple stripes according to a number of failed storage devices in each of the multiple stripes.

23. The system of claim 14 , wherein the computing device is operable to reconstruct a stripe with more failed storage devices faster than a stripe with fewer failed storage devices.

24. The system of claim 14 , wherein the computing device is operable to write data to the selected stripe until a criterion is met.

25. The system of claim 24 , wherein the criterion is based on how many blocks are available for new data to be written to.

26. The system of claim 14 , wherein each stripe comprises one or more storage blocks on each of the two or more spanned storage devices.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Jun 20, 2024
From: BANK LEUMI LE-ISRAEL B.M.
To: WEKAIO LTD.
Reel/Frame 067783/0962 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 051875 FRAME: 0773. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Oct 12, 2020
From: BEN DAYAN, MAOR; PALMON, OMRI; ZVIBEL, LIRAN
To: WEKA.IO LTD.
Reel/Frame 054049/0574 →
SECURITY INTEREST Recorded Mar 29, 2020
From: WEKAIO LTD.
To: BANK LEUMI LE-ISRAEL B.M.
Reel/Frame 052253/0860 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: BEN DAYAN, MAOR; PALMON, OMRI; ZVIBEL, LIRAN
To: ILLINOIS TOOL WORKS INC.
Reel/Frame 051875/0773 →
Continuity (4)
Continuation 15667097 · Aug 2, 2017
Continuation 15243519 · Aug 22, 2016
Continuation 14833053 · Aug 22, 2015
Related Publication 20190384672A1 · Dec 19, 2019
Cited By (3)
US 12,248,596 US 12,292,797 US 12,470,567