IP Library Granted Patent US 12,566,573
Granted Patent B2
US 12,566,573 · App. 16/901,049 · Granted Mar 3, 2026

Flash registry with write leveling

Inventors: Maor Ben Dayan (Tel Aviv, IL); Omri Palmon (Tel Aviv, IL); Liran Zvibel (Tel Aviv, IL); Kanael Arditti (Tel Aviv, IL)
Assignee: Weka.IO
G06F3/0659G06F3/0604G06F3/0616G06F3/0643G06F3/0644G06F3/0664G06F3/067G06F3/0679G06F11/1435
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,566,573
App. No.
16/901,049
Granted
Mar 3, 2026
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 is operably coupled to 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 computing device is operable to maintain a two-level registry that records changes in the memory. When data is read from memory, recent changes to the data may be applied according to one or more corresponding registry blocks. Thus, the two-level registry enables the plurality of computing devices to postpone and/or consolidate writes to memory (e.g., non-volatile flash drives).

Claims (88)

1 . A method for controlling memory access, comprising:

distributing data into memory of a distributed file server concurrently via a plurality of computing devices, wherein each computing device of the plurality of computing devices is operable to read from and write to a designated portion of the memory independently of what other computing devices of the plurality of computing devices are doing;

accessing a two-level registry, wherein the accessing is performed concurrently via two or more of the plurality of computing devices;

recording changes being made to the memory in a first level of the registry;

using the two-level registry to make changes to data read from the memory,

wherein:

the recording is performed via a computing device of a plurality of computing devices,

the changes being made to the memory comprise changes in actual data values that have yet to be committed to the memory,

the actual data values are values of the distributed data other than the metadata, and

the two-level registry comprises a location of each of the changes being made to the memory;

if the number of changes exceeds the capacity of the first level of the registry, pushing the changes to a second level of the registry; and

if the number of changes pushed to the second level exceeds the capacity of the second level of the registry, updating the memory according to the changes recorded in the first level of the registry and the second level of the registry.

2 . The method of claim 1 , wherein the plurality of computing devices comprises a plurality of virtual file system (VFS) nodes.

3 . The method of claim 1 , wherein the two-level registry is protected by distributed erasure coding.

4 . The method of claim 1 , wherein the memory is non-volatile flash memory.

5 . The method of claim 1 , wherein the two-level registry is protected by verifying one or more backpointers, wherein a backpointer comprises a block ID of an object pointing to a registry block.

6 . The method of claim 1 , wherein the method comprises branching according to a table of pointers stored in a registry block.

7 . A method for controlling memory access, comprising:

distributing data into memory of a distributed file server concurrently via a plurality of computing devices, wherein each computing device of the plurality of computing devices is operable to read from and write to a designated portion of the memory independently of what other computing devices of the plurality of computing devices are doing;

accessing a two-level registry, wherein the accessing is performed concurrently via two or more of the plurality of computing devices;

recording changes being made to the memory in a first level of the registry, wherein:

the recording is performed via a computing device of a plurality of computing devices,

the changes being made to the memory comprise changes in actual data values that have yet to be committed to the memory,

the actual data values are values of the distributed data other than the metadata,

the two-level registry comprises a location of each of the changes being made to the memory, and

a backpointer comprises a block ID of an object pointing to a registry block;

if the number of changes exceeds the capacity of the first level of the registry, pushing the changes to a second level of the registry; and

if the number of changes pushed to the second level exceeds the capacity of the second level of the registry, updating the memory according to the changes recorded in the first level of the registry and the second level of the registry wherein the two-level registry is protected by verifying one or more backpointers.

8 . The method of claim 7 , wherein the plurality of computing devices comprises a plurality of virtual file system (VFS) nodes.

9 . The method of claim 7 , wherein the two-level registry is protected by distributed erasure coding.

10 . The method of claim 7 , wherein the memory is non-volatile flash memory.

11 . The method of claim 7 , wherein the method comprises branching according to a table of pointers stored in a registry block.

12 . A system for controlling memory access, comprising:

memory of a distributed file server; and

a plurality of computing devices operable concurrently to distribute data into the memory of the distributed file server, wherein:

each computing device of the plurality of computing devices is operable to read from and write to a designated portion of the memory independently of what other computing devices of the plurality of computing devices are doing,

a two-level registry is accessible concurrently by any computing device of the plurality of computing devices,

the two-level registry is configured to shadow changes to the memory in a first level of the registry,

the changes to the memory comprise changes in actual data values that have yet to be committed to the memory,

the actual data values are values of the distributed data other than the metadata,

the two-level registry comprises a location of each of the changes being made to the memory,

the two-level registry is configured to push the changes to a second level of the registry if the number of changes exceeds the capacity of the first level of the registry,

the two-level registry is configured to update the memory according to the changes recorded in the first level of the registry and the second level of the registry, if the number of changes pushed to the second level of the registry exceeds the capacity of the second level of the registry,

the plurality of computing devices comprises a plurality of virtual file system (VFS) nodes, and

the two-level registry is located in a bucket of metadata that is maintained on a VFS backend in a VFS node of the plurality of VFS nodes.

13 . The system of claim 12 , wherein the bucket metadata is one of a plurality of buckets on the VFS backend.

14 . The system of claim 13 , wherein each bucket of the plurality of buckets manages its own registry.

15 . The system of claim 13 , wherein the VFS backend is operable to make changes to data read from the memory according to the changes recorded in the two-level registry.

16 . The system of claim 12 , wherein the two-level registry is protected by distributed erasure coding.

17 . The system of claim 12 , wherein the memory is non-volatile flash memory.

18 . The system of claim 12 , wherein the two-level registry is protected according to a verification of one or more backpointers, wherein a backpointer comprises a block ID of an object pointing to a registry block.

19 . The system of claim 12 , wherein the computing device is operable to locate a block of memory according to a table of pointers stored in a registry block.

20 . A method for controlling memory access, comprising:

distributing data into memory of a distributed file server concurrently via a plurality of computing devices, wherein each computing device of the plurality of computing devices is operable to read from and write to a designated portion of the memory independently of what other computing devices of the plurality of computing devices are doing;

accessing a two-level registry, wherein the accessing is performed concurrently via two or more of the plurality of computing devices;

recording changes being made to the memory in a first level of the registry, wherein:

the recording is performed via a computing device of a plurality of computing devices,

the changes being made to the memory comprise changes in actual data values that have yet to be committed to the memory,

the actual data values are values of the distributed data other than the metadata,

the two-level registry comprises a location of each of the changes being made to the memory,

the plurality of computing devices comprises a plurality of virtual file system (VFS) nodes, and

the two-level registry is located in a bucket of metadata that is maintained on a VFS backend in a VFS node of the plurality of VFS nodes; and

if the number of changes exceeds the capacity of the first level of the registry, pushing the changes to a second level of the registry; and

if the number of changes pushed to the second level exceeds the capacity of the second level of the registry, updating the memory according to the changes recorded in the first level of the registry and the second level of the registry.

21 . The method of claim 20 , wherein the bucket metadata is one of a plurality of buckets on the VFS backend.

22 . The method of claim 21 , wherein each bucket of the plurality of buckets manages its own registry.

23 . The method of claim 20 , wherein the two-level registry is protected by distributed erasure coding.

24 . The method of claim 20 , wherein the method comprises using the two-level registry to make changes to data read from the memory.

25 . The method of claim 20 , wherein the memory is non-volatile flash memory.

26 . The method of claim 20 , wherein the two-level registry is protected by verifying one or more backpointers, wherein a backpointer comprises a block ID of an object pointing to a registry block.

27 . The method of claim 20 , wherein the method comprises branching according to a table of pointers stored in a registry block.

28 . A system for controlling memory access, comprising:

memory of a distributed file server; and

a plurality of computing devices operable concurrently to distribute data into the memory of the distributed file server, wherein:

each computing device of the plurality of computing devices is operable to read from and write to a designated portion of the memory independently of what other computing devices of the plurality of computing devices are doing,

a two-level registry is accessible concurrently by any computing device of the plurality of computing devices,

the two-level registry is configured to shadow changes to the memory in a first level of the registry,

the changes to the memory comprise changes in actual data values that have yet to be committed to the memory,

the actual data values are values of the distributed data other than the metadata,

the two-level registry comprises a location of each of the changes being made to the memory,

the two-level registry is configured to push the changes to a second level of the registry if the number of changes exceeds the capacity of the first level of the registry,

the two-level registry is configured to update the memory according to the changes recorded in the first level of the registry and the second level of the registry, if the number of changes pushed to the second level of the registry exceeds the capacity of the second level of the registry,

the two-level registry is protected according to a verification of one or more backpointers, and

a backpointer comprises a block ID of an object pointing to a registry block.

29 . The system of claim 28 , wherein the plurality of computing devices comprises a plurality of virtual file system (VFS) nodes.

30 . The system of claim 28 , wherein the two-level registry is protected by distributed erasure coding.

31 . The system of claim 28 , wherein the memory is non-volatile flash memory.

32 . The system of claim 28 , wherein the computing device is operable to locate a block of memory according to a table of pointers stored in a registry block.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 24, 2022
From: BEN DAYAN, MAOR; PALMON, OMRI; ZVIBEL, LIRAN; ARDITTI, KANAEL
To: WEKA.IO LTD.
Reel/Frame 059387/0699 →
Continuity (3)
Continuation 16390202 · Apr 22, 2019
Continuation 15791188 · Oct 23, 2017
Related Publication 20200379686A1 · Dec 3, 2020
References Cited (17)
US 9448887B1 · Ben Dayan · 2016 [cited by examiner]
US 10394490B2 · Ben Dayan et al. · 2019 [cited by applicant]
US 10684799B2 · Ben Dayan et al. · 2020 [cited by applicant]
US 11023318B1 · Volkov · 2021 [cited by examiner]
US 20040133606A1 · Miloushev et al. · 2004 [cited by applicant]
US 20050044080A1 · Fridella et al. · 2005 [cited by applicant]
US 20060248088A1 · Kazar et al. · 2006 [cited by applicant]
US 20100017444A1 · Chatterjee et al. · 2010 [cited by applicant]
US 20130145085A1 · Yu et al. · 2013 [cited by applicant]
US 20160350326A1 · Simonetti · 2016 [cited by applicant]
US 20170097771A1 · Krishnamachari · 2017 [cited by applicant]
CN 106471461A · 2017 [cited by applicant]
Volkov et al. U.S. Appl. No. 62/524,001. Jun. 2017. [cited by examiner]
European Office Communication with extended Search Report AppIn No. 18871443.0 dated Jul. 6, 2021. [cited by applicant]
Int'l Search Report and Written Opinion AppIn No. PCT/IB2018/001227 mailed Mar. 22, 2019 (14 pgs.). [cited by applicant]
Xu et al. “NOVA: A Log-structured File System for Hybrid Volatile/Non-volatile Main Memories.” Feb. 2016. USEN IX. FAST '16. pp. 323-338. [cited by applicant]
Chinese Office Action with search report Appln No. 2018800582070 dated Feb. 13, 2023. [cited by applicant]