IP Library Granted Patent US 12,353,362
Granted Patent B2
US 12,353,362 · App. 18/413,183 · Granted Jul 8, 2025

Synchronization of metadata in a distributed storage system

Inventors: Avinash Lakshman (Fremont, CA); Lasaro Camargos (Uberlandia, BR); Deepak Jain (Santa Clara, CA)
Assignee: Commvault Systems, Inc.
G06F16/178G06F11/1464G06F16/137G06F16/24573G06F16/2471G06F16/182G06F16/275
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,353,362
App. No.
18/413,183
Granted
Jul 8, 2025
Kind
B2
Abstract

A client machine writes to and reads from a virtual disk on a remote storage platform. Metadata is generated and stored in replicas on different metadata nodes of the storage platform. A modified log-structured merge tree is used to store and compact string-sorted tables of metadata. During file storage and compaction, a consistent file identification scheme is used across all metadata nodes. A fingerprint file is calculated for each SST (metadata) file on disk that includes hash values corresponding to regions of the SST file. To synchronize, the fingerprint files of two SST files are compared, and if any hash values are missing from a fingerprint file, then the key-value-timestamp triples corresponding to these missing hash values are sent to the SST file that is missing them. The SST file is compacted with the missing triples to create a new version of the SST file. The synchronization is bi-directional.

Claims (46)

1. A system comprising: a plurality of computer nodes, wherein each computer node in the plurality of computer nodes comprises at least one hardware processor and one or more data storage drives, and wherein one computer node among the plurality of computer nodes is configured to:

retrieve a plurality of first hash values from a computer node among the plurality of computer nodes,

wherein each first hash value corresponds to a first region of first metadata that is stored at a first computer node among the plurality of computer nodes,

wherein the first metadata includes a first plurality of key-value-timestamp triples each of which relates to corresponding data that was stored at a computer node among the plurality of computer nodes, and

wherein each first region of the first metadata comprises at least part of a key-value-timestamp triple among the first plurality of key-value-timestamp triples;

wherein second metadata, which is identified in the system as a replica of the first metadata, includes a second plurality of key-value-timestamp triples;

retrieve a plurality of second hash values from a computer node among the plurality of computer nodes,

wherein each second hash value corresponds to a second region of the second metadata, and

wherein each second region of the second metadata comprises at least part of a key-value-timestamp triple among a second plurality of key-value-timestamp triples in the second metadata;

determine that the plurality of second hash values lacks a first hash value that is present in the plurality of first hash values, wherein the first metadata comprises a key-value-timestamp triple that corresponds to the first hash value; and

cause the second metadata to be updated with the key-value-timestamp triple that corresponds to the first hash value that is lacking from the plurality of second hash values.

2. The system of claim 1 , wherein the one computer node among the plurality of computer nodes is further configured to:

determine that the plurality of first hash values lacks a second hash value that is present in the plurality of second hash values, wherein the second metadata comprises a key-value-timestamp triple that corresponds to the second hash value lacking from the plurality of first hash values; and

cause the first metadata to be updated with the key-value-timestamp triple that corresponds to the second hash value lacking from the plurality of first hash values.

3. The system of claim 2 , wherein the one computer node among the plurality of computer nodes is further configured to: determine whether all second hash values in the plurality of second hash values are present among the plurality of first hash values.

4. The system of claim 1 , wherein the first hash value lacking from the plurality of second hash values corresponds to at least one missing region of the second metadata.

5. The system of claim 1 , wherein the second metadata is stored at a second computer node among the plurality of computer nodes, wherein the second computer node is configured to compact the updated second metadata resulting in a new version of the second metadata.

6. The system of claim 1 , wherein the first metadata and the second metadata are located on different computer nodes among the plurality of computer nodes, and wherein the first metadata and the second metadata have a same identifier that indicates that the second metadata is a replica of the first metadata.

7. The system of claim 1 , wherein the one computer node among the plurality of computer nodes is the first computer node.

8. The system of claim 1 , wherein the plurality of first hash values and plurality of second hash values are retrieved from a same computer node among the plurality of computer nodes.

9. The system of claim 1 , wherein each first hash value is part of a start-length-hash value triple that uniquely corresponds to a first region of the first metadata as stored on a data storage drive at the first computer node.

10. The system of claim 1 , wherein the first metadata is organized as a string-sorted-table (SST) comprising the first plurality of key-value-timestamp triples sorted by key; and wherein the second metadata is organized as a string-sorted-table (SST) comprising the second plurality of key-value-timestamp triples sorted by key.

11. A computer-implemented method comprising:

by one computer node among a plurality of computer nodes in a distributed data storage system, wherein each computer node in the plurality of computer nodes comprises at least one hardware processor and one or more data storage drives:

retrieving a plurality of first hash values from a computer node among the plurality of computer nodes,

wherein each first hash value corresponds to a first region of first metadata that is stored at a first computer node among the plurality of computer nodes,

wherein the first metadata includes a first plurality of key-value-timestamp triples each of which relates to corresponding data that was stored at a computer node among the plurality of computer nodes, and

wherein each first region of the first metadata comprises at least part of a key-value-timestamp triple among the first plurality of key-value-timestamp triples;

wherein second metadata, which is identified in the distributed data storage system as a replica of the first metadata, includes a second plurality of key-value-timestamp triples;

retrieving a plurality of second hash values from a computer node among the plurality of computer nodes,

wherein each second hash value corresponds to a second region of the second metadata, and

wherein each second region of the second metadata comprises at least part of a key-value-timestamp triple among a second plurality of key-value-timestamp triples in the second metadata;

determining that the plurality of second hash values lacks a first hash value that is present in the plurality of first hash values, wherein the first metadata comprises a key-value-timestamp triple that corresponds to the first hash value; and

causing the second metadata to be updated with the key-value-timestamp triple that corresponds to the first hash value that is lacking from the plurality of second hash values.

12. The computer-implemented method of claim 11 , further comprising:

determining that the plurality of first hash values lacks a second hash value that is present in the plurality of second hash values, wherein the second metadata comprises a key-value-timestamp triple that corresponds to the second hash value lacking from the plurality of first hash values; and

causing the first metadata to be updated with the key-value-timestamp triple that corresponds to the second hash value lacking from the plurality of first hash values.

13. The computer-implemented method of claim 12 , further comprising:

determining whether all second hash values in the plurality of second hash values are present among the plurality of first hash values.

14. The computer-implemented method of claim 11 , wherein the first hash value lacking from the plurality of second hash values corresponds to at least one missing region of the second metadata.

15. The computer-implemented method of claim 11 , wherein the second metadata is stored at a second computer node among the plurality of computer nodes, wherein the second computer node is configured to compact the updated second metadata resulting in a new version of the second metadata.

16. The computer-implemented method of claim 11 , wherein the first metadata and the second metadata are located on different computer nodes among the plurality of computer nodes, and wherein the first metadata and the second metadata have a same identifier that indicates that the second metadata is a replica of the first metadata.

17. The computer-implemented method of claim 11 , wherein the one computer node among the plurality of computer nodes is the first computer node.

18. The computer-implemented method of claim 11 , wherein the plurality of first hash values and plurality of second hash values are retrieved from a same computer node among the plurality of computer nodes.

19. The computer-implemented method of claim 11 , wherein each first hash value is part of a start-length-hash value triple that uniquely corresponds to a first region of the first metadata as stored on a data storage drive at the first computer node.

20. The computer-implemented method of claim 11 , wherein the first metadata is organized as a string-sorted-table (SST) comprising the first plurality of key-value-timestamp triples sorted by key; and wherein the second metadata is organized as a string-sorted-table (SST) comprising the second plurality of key-value-timestamp triples sorted by key.

Assignments (2)
SUPPLEMENTAL CONFIRMATORY GRANT OF SECURITY INTEREST IN UNITED STATES PATENTS Recorded Apr 16, 2025
From: COMMVAULT SYSTEMS, INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 070864/0344 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2024
From: LAKSHMAN, AVINASH; CAMARGOS, LASARO; JAIN, DEEPAK
To: COMMVAULT SYSTEMS, INC.
Reel/Frame 066318/0982 →
Continuity (4)
Continuation 17708312 · Mar 30, 2022
Continuation 16919721 · Jul 2, 2020
Continuation 15834921 · Dec 7, 2017
Related Publication 20240152489A1 · May 9, 2024
References Cited (153)
US 4084231A · Capozzi et al. · 1978 [cited by applicant]
US 4267568A · Dechant et al. · 1981 [cited by applicant]
US 4283787A · Chambers · 1981 [cited by applicant]
US 4417321A · Chang et al. · 1983 [cited by applicant]
US 4641274A · Swank · 1987 [cited by applicant]
US 4654819A · Stiffler et al. · 1987 [cited by applicant]
US 4686620A · Ng · 1987 [cited by applicant]
US 4912637A · Sheedy et al. · 1990 [cited by applicant]
US 4995035A · Cole et al. · 1991 [cited by applicant]
US 5005122A · Griffin et al. · 1991 [cited by applicant]
US 5093912A · Dong et al. · 1992 [cited by applicant]
US 5133065A · Cheffetz et al. · 1992 [cited by applicant]
US 5193154A · Kitajima et al. · 1993 [cited by applicant]
US 5212772A · Masters · 1993 [cited by applicant]
US 5226157A · Nakano et al. · 1993 [cited by applicant]
US 5239647A · Anglin et al. · 1993 [cited by applicant]
US 5241668A · Eastridge et al. · 1993 [cited by applicant]
US 5241670A · Eastridge et al. · 1993 [cited by applicant]
US 5276860A · Fortier et al. · 1994 [cited by applicant]
US 5276867A · Kenley et al. · 1994 [cited by applicant]
US 5287500A · Stoppani, Jr. · 1994 [cited by applicant]
US 5301286A · Rajani · 1994 [cited by applicant]
US 5321816A · Rogan et al. · 1994 [cited by applicant]
US 5347653A · Flynn et al. · 1994 [cited by applicant]
US 5410700A · Fecteau et al. · 1995 [cited by applicant]
US 5420996A · Aoyagi · 1995 [cited by applicant]
US 5454099A · Myers et al. · 1995 [cited by applicant]
US 5559991A · Kanfi · 1996 [cited by applicant]
US 5642496A · Kanfi · 1997 [cited by applicant]
US 6418478B1 · Ignatius et al. · 2002 [cited by applicant]
US 6542972B2 · Ignatius et al. · 2003 [cited by applicant]
US 6658436B2 · Oshinsky et al. · 2003 [cited by applicant]
US 6721767B2 · DeMeno et al. · 2004 [cited by applicant]
US 6760723B2 · Oshinsky et al. · 2004 [cited by applicant]
US 7003641B2 · Prahlad · 2006 [cited by applicant]
US 7035880B1 · Crescenti · 2006 [cited by applicant]
US 7107298B2 · Prahlad · 2006 [cited by applicant]
US 7162496B2 · Amarendran et al. · 2007 [cited by applicant]
US 7174433B2 · Kottomtharayil et al. · 2007 [cited by applicant]
US 7246207B2 · Kottomtharayil · 2007 [cited by applicant]
US 7315923B2 · Retnamma · 2008 [cited by applicant]
US 7343453B2 · Prahlad · 2008 [cited by applicant]
US 7389311B1 · Crescenti et al. · 2008 [cited by applicant]
US 7395282B1 · Crescenti · 2008 [cited by applicant]
US 7440982B2 · Lu · 2008 [cited by applicant]
US 7454569B2 · Kavuri · 2008 [cited by applicant]
US 7490207B2 · Amarendran et al. · 2009 [cited by applicant]
US 7500053B1 · Kavuri · 2009 [cited by applicant]
US 7529782B2 · Prahlad · 2009 [cited by applicant]
US 7536291B1 · Vijayan Retnamma et al. · 2009 [cited by applicant]
US 7543125B2 · Gokhale · 2009 [cited by applicant]
US 7546324B2 · Prahlad et al. · 2009 [cited by applicant]
US 7603386B2 · Amarendran et al. · 2009 [cited by applicant]
US 7606844B2 · Kottomtharavil · 2009 [cited by applicant]
US 7613752B2 · Prahlad · 2009 [cited by applicant]
US 7617253B2 · Prahlad et al. · 2009 [cited by applicant]
US 7617262B2 · Prahlad · 2009 [cited by applicant]
US 7620710B2 · Kottomtharayil · 2009 [cited by applicant]
US 7636743B2 · Erofeev · 2009 [cited by applicant]
US 7651593B2 · Prahlad · 2010 [cited by applicant]
US 7657550B2 · Prahlad · 2010 [cited by applicant]
US 7660807B2 · Prahlad · 2010 [cited by applicant]
US 7661028B2 · Erofeev · 2010 [cited by applicant]
US 7734669B2 · Kottomtharayil · 2010 [cited by applicant]
US 7747579B2 · Prahlad · 2010 [cited by applicant]
US 7801864B2 · Prahlad · 2010 [cited by applicant]
US 7809914B2 · Kottomtharayil · 2010 [cited by applicant]
US 8156086B2 · Lu · 2012 [cited by applicant]
US 8170995B2 · Prahlad · 2012 [cited by applicant]
US 8229954B2 · Kottomtharayil · 2012 [cited by applicant]
US 8230195B2 · Amarendran · 2012 [cited by applicant]
US 8285681B2 · Prahlad · 2012 [cited by applicant]
US 8307177B2 · Prahlad · 2012 [cited by applicant]
US 8364652B2 · Vijayan · 2013 [cited by applicant]
US 8370542B2 · Lu et al. · 2013 [cited by applicant]
US 8578120B2 · Attarde · 2013 [cited by applicant]
US 8649276B2 · O'Shea · 2014 [cited by applicant]
US 8954446B2 · Retnamma · 2015 [cited by applicant]
US 9020900B2 · Retnamma · 2015 [cited by applicant]
US 9098495B2 · Goklhale · 2015 [cited by applicant]
US 9239687B2 · Vijayan · 2016 [cited by applicant]
US 9242151B2 · Murphy · 2016 [cited by applicant]
US 9411534B2 · Lakshman · 2016 [cited by applicant]
US 9483205B2 · Lakshman · 2016 [cited by applicant]
US 9558085B2 · Lakshman · 2017 [cited by applicant]
US 9633033B2 · Vijayan · 2017 [cited by applicant]
US 9639274B2 · Maranna · 2017 [cited by applicant]
US 9798489B2 · Lakshman · 2017 [cited by applicant]
US 9864530B2 · Lakshman · 2018 [cited by applicant]
US 9875063B2 · Lakshman · 2018 [cited by applicant]
US 10067722B2 · Lakshman · 2018 [cited by applicant]
US 10248174B2 · Lakshman et al. · 2019 [cited by applicant]
US 10740300B1 · Lakshman et al. · 2020 [cited by applicant]
US 11455280B2 · Lakshman et al. · 2022 [cited by applicant]
US 11468015B2 · Lakshman et al. · 2022 [cited by applicant]
US 11500821B2 · Lakshman et al. · 2022 [cited by applicant]
US 20050044356A1 · Srivastava et al. · 2005 [cited by applicant]
US 20060224846A1 · Amarendran · 2006 [cited by applicant]
US 20090319534A1 · Gokhale · 2009 [cited by applicant]
US 20100318759A1 · Hamilton et al. · 2010 [cited by applicant]
US 20110153569A1 · Fachan et al. · 2011 [cited by applicant]
US 20110238625A1 · Hamaguchi et al. · 2011 [cited by applicant]
US 20120150818A1 · Retnamma et al. · 2012 [cited by applicant]
US 20120150826A1 · Retnamma et al. · 2012 [cited by applicant]
US 20140201137A1 · Vibhor et al. · 2014 [cited by applicant]
US 20140201140A1 · Vibhor · 2014 [cited by applicant]
US 20140201141A1 · Vibhor et al. · 2014 [cited by applicant]
US 20140201144A1 · Vibhor et al. · 2014 [cited by applicant]
US 20140201170A1 · Vijayan et al. · 2014 [cited by applicant]
US 20140337285A1 · Gokhale et al. · 2014 [cited by applicant]
US 20150154220A1 · Ngo et al. · 2015 [cited by applicant]
US 20150301901A1 · Rath et al. · 2015 [cited by applicant]
US 20160142249A1 · Wu · 2016 [cited by examiner]
US 20160162370A1 · Mehta et al. · 2016 [cited by applicant]
US 20160210195A1 · Sinha · 2016 [cited by applicant]
US 20160350302A1 · Lakshman · 2016 [cited by applicant]
US 20160350391A1 · Vijayan et al. · 2016 [cited by applicant]
US 20170032012A1 · Zhang · 2017 [cited by examiner]
US 20170168903A1 · Dornemann et al. · 2017 [cited by applicant]
US 20170185488A1 · Kumarasamy et al. · 2017 [cited by applicant]
US 20170192866A1 · Vijayan et al. · 2017 [cited by applicant]
US 20170193003A1 · Vijayan et al. · 2017 [cited by applicant]
US 20170235647A1 · Kilaru et al. · 2017 [cited by applicant]
US 20170235756A1 · Mehta et al. · 2017 [cited by applicant]
US 20170242871A1 · Kilaru et al. · 2017 [cited by applicant]
US 20170329527A1 · Lakshman et al. · 2017 [cited by applicant]
US 20170329530A1 · Lakshman et al. · 2017 [cited by applicant]
US 20180284986A1 · Bhagi et al. · 2018 [cited by applicant]
US 20180285201A1 · Bangalore et al. · 2018 [cited by applicant]
US 20180285382A1 · Mehta et al. · 2018 [cited by applicant]
US 20180314726A1 · Bath et al. · 2018 [cited by applicant]
US 20190171264A1 · Lakshman et al. · 2019 [cited by applicant]
US 20190266054A1 · Kumarasamy et al. · 2019 [cited by applicant]
US 20220222214A1 · Lakshman et al. · 2022 [cited by applicant]
EP 0259912 · 1988 [cited by applicant]
EP 0405926 · 1991 [cited by applicant]
EP 0467546 · 1992 [cited by applicant]
EP 0541281 · 1993 [cited by applicant]
EP 0774715 · 1997 [cited by applicant]
EP 0809184 · 1997 [cited by applicant]
EP 0899662 · 1999 [cited by applicant]
EP 0981090 · 2000 [cited by applicant]
WO 9513580 · 1995 [cited by applicant]
WO 9912098 · 1999 [cited by applicant]
WO 2006052872 · 2005 [cited by applicant]
Arneson, “Mass Storage Archiving in Network Environments,” Digest of Papers, Ninth IEEE Symposium on Mass Storage Systems, Oct. 31, 1988Nov. 3, 1988, pp. 45-50, Monterey, CA. [cited by applicant]
Arneson, David A., “Development of Omniserver,” Control Data Corporation, Tenth IEEE Symposium on Mass Storage Systems, May 1990, ‘Crisis in Mass Storage’ Digest of Papers, pp. 88-93, Monterey, CA. [cited by applicant]
Cabrera et al., “ADSM: A Multi-Platform, Scalable, Backup and Archive Mass Storage System,” Digest of Papers, Compcon '95, Proceedings of the 40th IEEE Computer Society International Conference, Mar. 5-Mar. 9, 1995, pp.… [cited by applicant]
Eitel, “Backup and Storage Management in Distributed Heterogeneous Environments,” IEEE, Jun. 12-16, 1994, pp. 124-126. [cited by applicant]
Huff, KL, “Data Set Usage Sequence Number,” IBM Technical Disclosure Bulletin, vol. 24, No. 5, Oct. 1981 New York, US, pp. 2404-2406. [cited by applicant]
Lakshman et al., “Cassandra—A Decentralized Structured Storage System”, https://doi.org/10.1145/1773912.1773922, ACM SIGOPS Operating Systems Review, vol. 44, Issue 2, Apr. 2010, pp. 35-40. [cited by applicant]
Rosenblum et al., “The Design and Implementation of a Log-Structure File System,” Operating Systems Review SIGOPS, vol. 25, No. 5, May 1991, New York, US, pp. 1-15. [cited by applicant]
Swiftstack, Inc., The OpenStack Object Storage System, Feb. 2012, pp. 1-29. [cited by applicant]