IP Library Granted Patent US 12,632,413
Granted Patent B2
US 12,632,413 · App. 18/469,653 · Granted May 19, 2026

Directory structure for a distributed storage system

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 Ltd.
G06F16/13G06F3/0604G06F3/061G06F3/0643G06F3/0667G06F3/067G06F3/0679
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,632,413
App. No.
18/469,653
Granted
May 19, 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 flash storage devices. Each computing device is operable to access one or more memory blocks within the flash storage devices and maintain a directory structure for managing access to the memory. The directory structure may be adaptively resized according to the addition or removal of one or more associated files stored in memory.

Claims (40)

1 . A system comprising:

a non-transitory, computer-readable, recording medium storing instructions executable by a computing device to:

communicate with a storage network comprising a plurality of memory blocks,

maintain a directory structure, comprising a hash set, for managing access to one or more memory blocks of the plurality of memory blocks, wherein:

managing access comprises managing existing files, balancing load and/or redistributing memory blocks according to read/write operations,

the hash set comprises on-disk hashing (ODH) comprising a plurality of buckets and registry blocks,

each registry block stores metadata comprising an outer split level, an outer split index, an inner split level and an inner split index, and

an anti-hash-collision (AHC) key is stored for each entry of the hash set,

shard a particular frontend according to an ID of a particular file, of the existing files, to ensure that the particular file is always accessed via the particular frontend,

redistribute one or more memory blocks according to read/write operations, without creating a new file, wherein the redistribution comprises moving complete registry blocks to a new bucket when increasing an outer split level and decreasing an inner split level such that blocks that have an inner split index that ends with “1” are moved and blocks that have an inner split index that ends with “0” remain,

adaptively resize the directory structure according to the access of the one or more memory blocks, and

redistribute a portion of the directory structure to another computing device to enlarge the hash set and to split or merge buckets according to directory load.

2 . The system of claim 1 , wherein the plurality of memory blocks comprises non-volatile memory.

3 . The system of claim 1 , wherein the plurality of memory blocks comprises flash memory.

4 . The system of claim 1 , wherein the access comprises deleting files associated with the directory structure.

5 . The system of claim 1 , wherein the directory structure comprises one or more registry blocks, and wherein each registry block comprises one or more key-value entries, and wherein each key-value entries correspond to one or more files.

6 . The system of claim 5 , wherein key-value entries are added to a registry block of the one or more registry blocks until the number of key-value entries exceeds a predetermined capacity, at which time the registry block is split and a new registry block is added to the one or more registry blocks.

7 . The system of claim 6 , wherein the new registry block is relocated to another computing device.

8 . The system of claim 5 , wherein key-value entries are removed from a registry block of the one or more registry blocks until the number of key-value entries is at or below a predetermined level, at which time the registry block is merged with another registry block of the one or more registry blocks.

9 . The system of claim 1 , wherein the storage network comprises a failure resilient address space distributed across a plurality of storage devices.

10 . The system of claim 8 , wherein each registry block is identified by one or more adaptive indices.

11 . A method comprising:

communicatively coupling a computing device to a storage network comprising a plurality of memory blocks;

maintaining a directory structure for managing access to one or more memory blocks of the plurality of memory blocks, wherein the directory structure comprises a hash set for managing access to one or more memory blocks of the plurality of memory blocks, by managing existing files, balancing load and/or redistributing memory blocks according to read/write operations, wherein the directory structure is implemented as on-disk hashing (ODH) comprising a plurality of buckets and registry blocks, each registry block storing an outer split level, an outer split index, an inner split level, an inner split index, and per-entry anti-hash-collision (AHC) keys;

sharding a particular frontend according to an ID of a particular file, of the existing files, to ensure that the particular file is always accessed via the particular frontend,

adaptively resizing the directory structure according to the access of the one or more memory blocks of the plurality of memory blocks; and

redistributing a portion of the directory structure to another computing device to enlarge the hash set, wherein redistributing comprises moving complete registry blocks between buckets responsive to a bucket split in which the outer split level is increased and the inner split level is decreased such that blocks with inner split index ending in “1” are moved.

12 . The method of claim 11 , wherein the storage network comprises non-volatile memory.

13 . The method of claim 11 , wherein the storage network comprises flash memory.

14 . The method of claim 11 , wherein accessing one or more memory blocks comprises deleting files associated with the directory structure.

15 . The method of claim 11 , wherein the directory structure comprises one or more registry blocks, and wherein each registry block comprises one or more key value entries, and wherein each key-value entries correspond to one or more files.

16 . The method of claim 15 , wherein the method comprises:

adding key-value entries to a registry block of the one or more registry blocks; and

if the number of key-value entries exceeds a predetermined capacity, splitting the registry block and adding a new registry block to the one or more registry blocks.

17 . The method of claim 16 , wherein the method comprises relocating the new registry block to another computing device.

18 . The method of claim 16 , wherein the method comprises:

removing key-value entries from a registry block of the one or more registry blocks; and

if the number of key-value entries is at or below a predetermined level, merging the registry block with another registry block of the one or more registry blocks.

19 . The method of claim 11 , wherein the storage network comprises a failure resilient address space distributed across a plurality of storage devices.

20 . The method of claim 18 , wherein each registry block is identified by one or more adaptive indices.

Continuity (3)
Continuation 16121938 · Sep 5, 2018
Provisional Application 62585062 · Nov 13, 2017
Related Publication 20240004834A1 · Jan 4, 2024
References Cited (53)
US 5956745A · Bradford et al. · 1999 [cited by applicant]
US 6487636B1 · Dolphin et al. · 2002 [cited by applicant]
US 7447839B2 · Uppala · 2008 [cited by applicant]
US 7681072B1 · Gibson et al. · 2010 [cited by applicant]
US 7793146B1 · Gibson et al. · 2010 [cited by applicant]
US 7877511B1 · Berger et al. · 2011 [cited by applicant]
US 8347010B1 · Radovanovic · 2013 [cited by applicant]
US 8645749B2 · Reche · 2014 [cited by applicant]
US 8918478B2 · Ozzie et al. · 2014 [cited by applicant]
US 9087012B1 · Hayes et al. · 2015 [cited by applicant]
US 9448887B1 · Ben Dayan · 2016 [cited by examiner]
US 9747162B2 · Ben Dayan et al. · 2017 [cited by applicant]
US 10592153B1 · Subramaniam · 2020 [cited by examiner]
US 11030169B1 · Wu · 2021 [cited by examiner]
US 20030115218A1 · Bobbitt et al. · 2003 [cited by applicant]
US 20030159015A1 · Tamatsu · 2003 [cited by applicant]
US 20030163630A1 · Aasheim et al. · 2003 [cited by applicant]
US 20030196047A1 · Kessler et al. · 2003 [cited by applicant]
US 20040098415A1 · Bone et al. · 2004 [cited by applicant]
US 20050289152A1 · Earl et al. · 2005 [cited by applicant]
US 20060143350A1 · Miloushev · 2006 [cited by examiner]
US 20070061542A1 · Uppala · 2007 [cited by applicant]
US 20070143261A1 · Uppala · 2007 [cited by applicant]
US 20070143311A1 · Uppala · 2007 [cited by applicant]
US 20090119541A1 · Inoue et al. · 2009 [cited by applicant]
US 20100174690A1 · Marcotte · 2010 [cited by examiner]
US 20100199125A1 · Reche · 2010 [cited by applicant]
US 20110213994A1 · Thereska et al. · 2011 [cited by applicant]
US 20120124282A1 · Frank et al. · 2012 [cited by applicant]
US 20120210095A1 · Nellans et al. · 2012 [cited by applicant]
US 20130218934A1 · Lin · 2013 [cited by examiner]
US 20130290948A1 · Gokhale et al. · 2013 [cited by applicant]
US 20140244897A1 · Goss et al. · 2014 [cited by applicant]
US 20140281280A1 · Goss et al. · 2014 [cited by applicant]
US 20150248366A1 · Bergsten et al. · 2015 [cited by applicant]
US 20150254088A1 · Chou et al. · 2015 [cited by applicant]
US 20150355971A1 · Becker-Szendy et al. · 2015 [cited by applicant]
US 20160246677A1 · Sangamkar et al. · 2016 [cited by applicant]
US 20170052847A1 · Ben Dayan et al. · 2017 [cited by applicant]
US 20170139596A1 · Hack et al. · 2017 [cited by applicant]
US 20170374150A1 · Romem · 2017 [cited by examiner]
US 20180260120A1 · Ozguner · 2018 [cited by examiner]
US 20210303633A1 · Irazabal · 2021 [cited by examiner]
Chinese Office Action AppIn No. 2018800863799 Sep. 27, 2023. [cited by applicant]
Int'l Search Report and Written Opinion Appln No. PCT/IB2016/001177 dated Dec. 2, 2016. [cited by applicant]
Int'l Preliminary Report on Patentability Appln No. PCT/IB2016/001177 dated Mar. 8, 2018. [cited by applicant]
Int'l Search Report and Written Opinion Appln No. PCT/IB2016/000996 dated Oct. 20, 2016. [cited by applicant]
Int'l Preliminary Report on Patentability Appln No. PCT/IB2016/000996 dated Jan. 2, 2018. [cited by applicant]
Extended European Search Report AppIn No. 16817312.8-1217 dated Oct. 25, 2018. [cited by applicant]
Int'l Search Report and Written Opinion Appln No. PCT/IB2018/001229 dated Mar. 5, 2019. [cited by applicant]
Chaiken et al. “LimitLESS directories: A scalable cache coherence scheme.” Jun. 1991 (Jun. 1991) Retrieved on Feb. 18, 2019 (Feb. 18, 2019) from <https:llapps.dtic.mil/dtic/tr/fulltexUu2/a237629.pdf> entire document (24… [cited by applicant]
Int'l Preliminary Report on Patentability Appln No. PCT/IB2018/001229 dated May 28, 2020. [cited by applicant]
European Office Communication with extended search report Appin No. 18877259.4 dated Jul. 22, 2021. [cited by applicant]