IP Library › Granted Patent US 12,223,193
Granted Patent B2
US 12,223,193 · App. 18/497,925 · Granted Feb 11, 2025

Co-located journaling and data storage for write requests

Inventors: Kevin Daniel Varghese (San Jose, CA); Ananthan Subramanian (San Ramon, CA); Parag Sarfare (San Jose, CA); Sandeep Yadav (Santa Clara, CA); Suhas Urkude (San Ramon, CA); Rajesh Khandelwal (San Jose, CA)
Assignee: NetApp, Inc.
G06F3/0644G06F3/0613G06F3/0623G06F3/064G06F3/0659G06F3/067
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,223,193
App. No.
18/497,925
Granted
Feb 11, 2025
Kind
B2
Abstract

Methods and systems for co-locating journaling and data storage are provided. Separate journal and volume partitions may be maintained within each logical storage unit (e.g., Logical Unit Number (LUN)) of a distributed storage system. Journaling of metadata associated with write requests received from one or more clients may be distributed by identifying a destination logical storage unit to which data associated with a given write request is to be stored and causing the data and metadata to be persisted to disk by journaling the metadata and the data to respective portions of an active log within the journal partition of the destination logical storage unit. By using the same logical storage unit for both journaling of write requests and writing the data associated with such write requests, the bottleneck due to there being only a single device or storage unit handling all metadata for all write requests can be avoided.

Claims (99)

1. A method comprising:

for each logical storage unit of a plurality of logical storage units of a distributed storage system, co-locating journaling and data storage by maintaining, within the logical storage unit, a journal partition and a volume partition, wherein the volume partition represents a volume contained within the logical storage unit or to which the logical storage unit corresponds; and

distributing journaling of metadata associated with a plurality of incoming write requests received from one or more clients of the distributed storage system among the plurality of logical storage units by, for each write request of the plurality of incoming write requests:

identifying a destination logical storage unit to which data associated with the write request is to be stored; and

causing the data and metadata associated with the write request to be persisted to disk by journaling the metadata and the data to respective portions of an active log within the journal partition of the destination logical storage unit.

2. The method of claim 1 , further comprising confirming handling of a given write request of the plurality of incoming write requests after the metadata and the data have been journaled to the journal partition of the destination logical storage unit but prior to persisting the data to the volume partition of the destination logical storage unit.

3. The method of claim 1 , wherein said journaling the metadata and the data to respective portions of an active log is performed atomically during a single input/output (I/O) operation.

4. The method of claim 1 , wherein the destination logical storage unit comprises a logical unit number (LUN).

5. The method of claim 1 , wherein the journal partition of the destination logical storage unit includes a plurality of logs in which one of the plurality of logs represents the active log at a given time and another of the plurality of logs represents an inactive log.

6. The method of claim 5 , further comprising after a trigger event:

switching which of the plurality of logs represents the active log and the inactive log; and

flushing the data and the metadata previously journaled to the inactive log to the volume partition of the destination logical storage unit.

7. The method of claim 6 , further comprising:

updating a super block in the volume partition of the destination logical storage unit corresponding to a first location within the inactive log of the journal partition of the destination logical storage unit based on metadata stored within the first location; and

copying data from a second location within the journal partition of the destination logical storage unit to a new location in the volume partition of the destination logical storage unit.

8. The method of claim 6 , wherein the trigger event comprises lapse of a timer, a trigger for a consistency point, or a threshold number of records having been journaled to the active log.

9. The method of claim 5 , wherein the destination logical storage unit comprises a primary logical storage unit associated with a primary node of a high-availability (HA) pair of nodes that together represent the distributed storage system.

10. The method of claim 9 , further comprising after a trigger event:

switching, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log;

copying, by the primary node, data from a second location within the inactive log in the journal partition of the destination logical storage unit to a new location in the volume partition of the destination logical storage unit; and

mirroring, by a secondary node of the HA pair of nodes, the copying performed by the primary node.

11. The method of claim 9 , further comprising after a trigger event:

switching, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log; and

updating a super block in the volume partition of the destination logical storage unit corresponding to a first location within the inactive log of the journal partition of the destination logical storage unit based on metadata stored within the first location.

12. The method of claim 9 , further comprising after a trigger event:

switching, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log;

updating, by the primary node, a new location in the volume partition of the destination logical storage unit with a cryptographic hash value associated with data stored within a second location of the inactive log of the journal partition of the destination logical storage unit; and

mirroring, by a secondary node of the HA pair of nodes, the updating performed by the primary node.

13. The method of claim 9 , further comprising after a trigger event:

switching, by the primary node, which of the two logs of the journal partition of identified logical storage unit represents the active log and the inactive log; and

flushing the inactive log of the journal partition of the destination logical storage unit to the volume partition of the destination logical storage unit, including associating a hash value of data within a second location of the active log of the journal partition of the destination logical storage unit with a new location in the volume partition of the destination logical storage unit.

14. The method of claim 1 , wherein each node of a plurality of nodes of a cluster representing the distributed storage system comprises a virtual machine within a cloud computing environment.

15. A distributed storage system comprising:

physical storage, including a plurality of physical storage devices provided by a cloud computing environment, wherein the plurality of physical storage devices are associated with respective logical storage units of a plurality of logical storage units;

one or more processors; and

a non-transitory computer-readable storage medium embodying instructions, which when executed by the one or more processors, cause the distributed storage system to:

for each logical storage unit of the plurality of logical storage units, co-locate journaling and data storage by maintaining, within the logical storage unit, a journal partition and a volume partition, wherein the volume partition represents a volume contained within the logical storage unit or to which the logical storage unit corresponds; and

distribute journaling of metadata associated with a plurality of incoming write requests received from one or more clients of the distributed storage system among the plurality of logical storage units by, for each write request of the plurality of incoming write requests:

identifying a destination logical storage unit to which data associated with the write request is to be stored; and

causing the data and metadata associated with the write request to be persisted to the physical storage by journaling the metadata and the data to respective portions of an active log within the journal partition of the destination logical storage unit.

16. The distributed storage system of claim 15 , wherein the instructions further cause the distributed storage system to confirm handling of a given write request of the plurality of incoming write requests after the metadata and the data have been journaled to the journal partition of the destination logical storage unit but prior to persisting the data to the volume partition of the destination logical storage unit.

17. The distributed storage system of claim 15 , wherein said journaling the metadata and the data to respective portions of an active log is performed atomically during a single input/output (I/O) operation.

18. The distributed storage system of claim 15 , wherein the destination logical storage unit comprises a logical unit number (LUN).

19. The distributed storage system of claim 15 , wherein the journal partition of the destination logical storage unit includes a plurality of logs in which one of the plurality of logs represents the active log at a given time and another of the plurality of logs represents an inactive log.

20. The distributed storage system of claim 19 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch which of the plurality of logs represents the active log and the inactive log; and

flush the data and the metadata previously journaled to the inactive log to the volume partition of the destination logical storage unit.

21. The distributed storage system of claim 20 , wherein the instructions further cause the distributed storage system to:

update a super block in the volume partition of the destination logical storage unit corresponding to a first location within the inactive log of the journal partition of the destination logical storage unit based on metadata stored within the first location; and

copy data from a second location within the journal partition of the destination logical storage unit to a new location in the volume partition of the destination logical storage unit.

22. The distributed storage system of claim 20 , wherein the trigger event comprises lapse of a timer, a trigger for a consistency point, or a threshold number of records having been journaled to the active log.

23. The distributed storage system of claim 19 , wherein the destination logical storage unit comprises a primary logical storage unit associated with a primary node of a high-availability (HA) pair of nodes that together represent the distributed storage system.

24. The distributed storage system of claim 23 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log;

copy, by the primary node, data from a second location within the inactive log in the journal partition of the destination logical storage unit to a new location in the volume partition of the destination logical storage unit; and

mirror, by a secondary node of the HA pair of nodes, the copying performed by the primary node.

25. The distributed storage system of claim 23 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log; and

update a super block in the volume partition of the destination logical storage unit corresponding to a first location within the inactive log of the journal partition of the destination logical storage unit based on metadata stored within the first location.

26. The distributed storage system of claim 23 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log;

update, by the primary node, a new location in the volume partition of the destination logical storage unit with a cryptographic hash value associated with data stored within a second location of the inactive log of the journal partition of the destination logical storage unit; and

mirror, by a secondary node of the HA pair of nodes, the updating performed by the primary node.

27. The distributed storage system of claim 23 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of identified logical storage unit represents the active log and the inactive log; and

flush the inactive log of the journal partition of the destination logical storage unit to the volume partition of the destination logical storage unit, including associating a hash value of data within a second location of the active log of the journal partition of the destination logical storage unit with a new location in the volume partition of the destination logical storage unit.

28. The distributed storage system of claim 15 , wherein each node of a plurality of nodes of a cluster representing the distributed storage system comprises a virtual machine within a cloud computing environment.

29. A non-transitory computer-readable storage medium embodying instructions, which when executed by one or more processors of a cluster of virtual platforms collectively representing a distributed storage system, cause the distributed storage system to:

for each logical storage unit of a plurality of logical storage units of the distributed storage system, co-locate journaling and data storage by maintaining, within the logical storage unit, a journal partition and a volume partition, wherein the volume partition represents a volume contained within the logical storage unit or to which the logical storage unit corresponds; and

distribute journaling of metadata associated with a plurality of incoming write requests received from one or more clients of the distributed storage system among the plurality of logical storage units by, for each write request of the plurality of incoming write requests:

identifying a destination logical storage unit to which data associated with the write request is to be stored; and

causing the data and metadata associated with the write request to be persisted to physical storage by journaling the metadata and the data to respective portions of an active log within the journal partition of the destination logical storage unit.

30. The non-transitory computer-readable storage medium of claim 29 , wherein the instructions further cause the distributed storage system to confirm handling of a given write request of the plurality of incoming write requests after the metadata and the data have been journaled to the journal partition of the destination logical storage unit but prior to persisting the data to the volume partition of the destination logical storage unit.

31. The non-transitory computer-readable storage medium of claim 29 , wherein said journaling the metadata and the data to respective portions of an active log is performed atomically during a single input/output (I/O) operation.

32. The non-transitory computer-readable storage medium of claim 29 , wherein the destination logical storage unit comprises a logical unit number (LUN).

33. The non-transitory computer-readable storage medium of claim 29 , wherein the journal partition of the destination logical storage unit includes a plurality of logs in which one of the plurality of logs represents the active log at a given time and another of the plurality of logs represents an inactive log.

34. The non-transitory computer-readable storage medium of claim 33 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch which of the plurality of logs represents the active log and the inactive log; and

flush the data and the metadata previously journaled to the inactive log to the volume partition of the destination logical storage unit.

35. The non-transitory computer-readable storage medium of claim 34 , wherein the instructions further cause the distributed storage system to:

update a super block in the volume partition of the destination logical storage unit corresponding to a first location within the inactive log of the journal partition of the destination logical storage unit based on metadata stored within the first location; and

copy data from a second location within the journal partition of the destination logical storage unit to a new location in the volume partition of the destination logical storage unit.

36. The non-transitory computer-readable storage medium of claim 34 , wherein the trigger event comprises lapse of a timer, a trigger for a consistency point, or a threshold number of records having been journaled to the active log.

37. The non-transitory computer-readable storage medium of claim 33 , wherein the destination logical storage unit comprises a primary logical storage unit associated with a primary node of a high-availability (HA) pair of nodes that together represent the distributed storage system.

38. The non-transitory computer-readable storage medium of claim 37 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log;

copy, by the primary node, data from a second location within the inactive log in the journal partition of the destination logical storage unit to a new location in the volume partition of the destination logical storage unit; and

mirror, by a secondary node of the HA pair of nodes, the copying performed by the primary node.

39. The non-transitory computer-readable storage medium of claim 37 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log; and

update a super block in the volume partition of the destination logical storage unit corresponding to a first location within the inactive log of the journal partition of the destination logical storage unit based on metadata stored within the first location.

40. The non-transitory computer-readable storage medium of claim 37 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of destination logical storage unit represents the active log and the inactive log;

update, by the primary node, a new location in the volume partition of the destination logical storage unit with a cryptographic hash value associated with data stored within a second location of the inactive log of the journal partition of the destination logical storage unit; and

mirror, by a secondary node of the HA pair of nodes, the updating performed by the primary node.

41. The non-transitory computer-readable storage medium of claim 37 , wherein, after a trigger event, the instructions further cause the distributed storage system to:

switch, by the primary node, which of the two logs of the journal partition of identified logical storage unit represents the active log and the inactive log; and

flush the inactive log of the journal partition of the destination logical storage unit to the volume partition of the destination logical storage unit, including associating a hash value of data within a second location of the active log of the journal partition of the destination logical storage unit with a new location in the volume partition of the destination logical storage unit.

42. The non-transitory computer-readable storage medium of claim 29 , wherein each node of a plurality of nodes of a cluster representing the distributed storage system comprises a virtual machine within a cloud computing environment.

Continuity (3)
Continuation 17868260 · Jul 19, 2022
Continuation 17239189 · Apr 23, 2021
Related Publication 20240061603A1 · Feb 22, 2024
References Cited (44)
US 8554734B1 · Chatterjee et al. · 2013 [cited by applicant]
US 8805886B1 · Kiselev et al. · 2014 [cited by applicant]
US 9552242B1 · Leshinsky et al. · 2017 [cited by applicant]
US 10169169B1 · Shaikh et al. · 2019 [cited by applicant]
US 10289321B1 · Baryudin et al. · 2019 [cited by applicant]
US 10303663B1 · Kinney, Jr. et al. · 2019 [cited by applicant]
US 11340812B2 · Pattabiraman et al. · 2022 [cited by applicant]
US 11409457B1 · Varghese et al. · 2022 [cited by applicant]
US 11803315B2 · Varghese et al. · 2023 [cited by applicant]
US 11803316B2 · Varghese et al. · 2023 [cited by applicant]
US 20070180000A1 · Mine et al. · 2007 [cited by applicant]
US 20080201391A1 · Arakawa et al. · 2008 [cited by applicant]
US 20120198123A1 · Post · 2012 [cited by applicant]
US 20120324163A1 · Sato et al. · 2012 [cited by applicant]
US 20140173186A1 · Randall et al. · 2014 [cited by applicant]
US 20140344507A1 · Piggin et al. · 2014 [cited by applicant]
US 20150317226A1 · Sarfare et al. · 2015 [cited by applicant]
US 20160110120A1 · Pattabiraman et al. · 2016 [cited by applicant]
US 20160217174A1 · Takahashi et al. · 2016 [cited by applicant]
US 20170123685A1 · Zuo et al. · 2017 [cited by applicant]
US 20200133519A1 · Peterson et al. · 2020 [cited by applicant]
Containers as a Service. Bring Data Rich Enterprise Applications to your Kubernetes Platform [online]. Portworx, Inc. 2021,8 pages [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://portworx.com/container… [cited by applicant]
Containers vs. Microservices: What's The Difference? [online]. BMC, 2021, 19 pages [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://www.bmc.com/blogs/containers-vs-microservices/. [cited by applicant]
Docker vs Virtual Machines (VMs): A Practical Guide to Docker Containers and VMs [online]. Jan. 16, 2020. Weaveworks, 2021, 8 pages, [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://www.weave.works/blog… [cited by applicant]
Extended European Search Report for Application No. 22169485.4 dated Oct. 31, 2022, 8 pages. [cited by applicant]
Joshi A., “From there to here, from here to there, Containers are Everywhere!,” Dec. 16, 2020 [online], Nutanix. Dev, 2021, 14 pages. [Retrieved on Nov. 9, 2021], Retrieved from the Internet: URL: https://www.nutanix.de… [cited by applicant]
Karbon Kubernetes Orchestration. Management Made Simple, [online]. Nutanix, 2021, 12 pages [Retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://www.nutanix.com/products/karbon. [cited by applicant]
Kralj M., “How to Orchestrate the Modern Cloud with Kubernetes,” Jul. 2020, Software Engineering Blog, Retrieved from the Internet at: https://www.accenture.com/US-en/blogs/software-engineering-blog/kralj-orchestrate-mo… [cited by applicant]
Non-Final Office Action mailed on Mar. 15, 2023 for U.S. Appl. No. 17/849,290, filed Jun. 24, 2022, 6 pages. [cited by applicant]
Notice of Allowance mailed on Jun. 28, 2023 for U.S. Appl. No. 17/849,290, filed Jun. 24, 2022, 6 pages. [cited by applicant]
Notice of Allowance mailed on Jun. 28, 2023 for U.S. Appl. No. 17/868,260, filed Jul. 19, 2022, 8 pages. [cited by applicant]
Notice of Allowance mailed on May 24, 2023 for U.S. Appl. No. 17/868,260, filed Jul. 19, 2022, 8 pages. [cited by applicant]
Pods [online]. Kubernetes, 2021, 6 pages [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://kubernetes.io/docs/concepts/workloads/pods/. [cited by applicant]
Portworx Data Services, the Complete Solution for Deploying Production-Grade Data Services on Kubernetes. [online]. Portworx, Inc. 2021,5 pages. [Retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://portworx… [cited by applicant]
Portworx Enterprise is the Complete Kubernetes Storage Platform Trusted in Production by the Global 2000 [online]. Portworx, Inc. 2021, 10 pages [Retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://portworx… [cited by applicant]
Production-Grade Container Orchestration [online]. Kubernetes, 2021,6 pages [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://kubernetes.io/. [cited by applicant]
Sanglaji M., et al., “Nutanix Karbon: Enterprise-grade Kubernetes Solution,” Nov. 28, 2018, 5 pages [online], [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://www.nutanix.com/blog/nutanix-karbon-enterpr… [cited by applicant]
Screen Captures from YouTube Video Clip Entitled “Pure Storage Portworx Deep Dive,” 5 pages, Uploaded on Nov. 6, 2020 by User “Tech Field Day”. Retrieved from the Internet: https://www.youtube.com/watch?V=WTCI98RAbZg. [cited by applicant]
Software Defined Storage (SDS) Solutions, [online]. Trustradius, 2021, 14 pages [Retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://www.trustradius.com/software-defined-storage-sds. [cited by applicant]
Software-defined Storage, [online] IBM, 2021, 12 pages [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://www.IBM.com/it-infrastructure. [cited by applicant]
Solution Brief. Easily Operate a Database-as-a-Service Platform, [online], Portworx, Inc. 2021, 2 pages [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://portworx.com/wp-content/uploads/2021/09/pds-solut… [cited by applicant]
U.S. Notice of Allowance dated Jun. 16, 2022 in U.S. Appl. No. 17/239,189. [cited by applicant]
What Is Container Orchestration, Exactly? Everything to Know [online], LaunchDarkly, Apr. 28, 2021, 8 pages. [retrieved on Nov. 9, 2021]. Retrieved from the Internet: https://launchdarkly.com/blog/what-is-container-orch… [cited by applicant]
What is Container Orchestration? [online], CapitalOne, 2021, 8 pages [retrieved on Nov. 9, 2021], Retrieved from the Internet: https://www.capitalone.com/tech/cloud/what-is-container-orchestration/. [cited by applicant]