IP Library › Granted Patent US 12,189,972
Granted Patent B2
US 12,189,972 · App. 18/309,162 · Granted Jan 7, 2025

Facilitating multiple device consumption of shared namespaces of ephmermal storage devices by a consumer of a virtual storage device

Inventors: Joseph Brown, Jr. (Raleigh, NC); Javier Tsuyoshi Takimoto (Missouri City, TX); Sangramsinh Pandurang Pawar (Bedford, MA); Michael Scott Ryan (Wake Forest, NC)
Assignee: NetApp, Inc.
G06F3/0644G06F3/061G06F3/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,189,972
App. No.
18/309,162
Granted
Jan 7, 2025
Kind
B2
Abstract

Systems and methods for multiple device consumption of shared namespaces of ephemeral storage devices by a consumer of a virtual storage system are provided. In an example, multiple namespaces of respective ephemeral storage devices are shared among multiple of consumers of a virtual storage system by creating multiple partitions within each of the namespaces for use by respective consumers of the multiple consumers. Corresponding partitions of respective shared namespace may then be treated as a stripe set to facilitate multiple device consumption for a subsystem (e.g., operation log journaling) of the virtual storage system by striping data associated with input/output (I/O) requests of a consumer (e.g., a journaling driver) across one or more stripe units of one or more stripes within the stripe set.

Claims (30)

1. A method comprising:

sharing a first namespace of a first ephemeral storage device and a second namespace of a second ephemeral storage device by a first consumer and a second consumer of a virtual storage system by creating a first partition within the first namespace and a second partition within the second namespace for use by the first consumer and creating a third partition within the first namespace and a fourth partition within the second namespace for use by the second consumer, wherein the first partition and the second partition are part of a first stripe set; and

striping data associated with a write request by the first consumer across one or more stripe units of one or more stripes within the first partition and the second partition.

2. The method of claim 1 , wherein the first consumer comprises a journaling driver and wherein the first partition and the second partition are used as a backing store for an operation log journal.

3. The method of claim 2 , wherein the first partition and the second partition are created via an application programming interface (API) exposed by a non-volatile memory express (NVMe) driver of the virtual storage system.

4. The method of claim 2 , wherein the third partition and the fourth partition are part of a second stripe set and wherein the method further comprises striping data associated with a write request by the second consumer across one or more stripe units of one or more stripes within the third partition and the fourth partition.

5. The method of claim 4 , wherein the second consumer comprises a victim cache driver and wherein the third partition and the fourth partition are used as a backing store for a victim cache.

6. The method of claim 1 , further comprising managing the first stripe set via an operating system (OS) provided stripe mechanism.

7. The method of claim 6 , further comprising bypassing the OS provided stripe mechanism during performance of input/output (I/O) operations on the first stripe set.

8. A storage system comprising:

one or more processing resources; and

instructions that when executed by the one or more processing resources cause the storage system to:

share a plurality of namespaces of respective ephemeral storage devices among a plurality of consumers of a storage system by creating a plurality of partitions within each of the plurality of namespaces for use by respective consumers of the plurality of consumers, wherein a first partition of the plurality of partitions within a first namespace of the plurality of namespaces and a second partition of the plurality of partitions within a second namespace of the plurality of namespaces are part of a first stripe set; and

stripe data associated with an input/output (I/O) request by a first consumer of the plurality of consumers across one or more stripe units of one or more stripes within the first stripe set.

9. The storage system of claim 8 , wherein the first consumer comprises a journaling driver and wherein the first partition and the second partition are used as a backing store for an operation log journal.

10. The storage system of claim 9 , wherein the first partition and the second partition are created via an application programming interface (API) exposed by a non-volatile memory express (NVMe) driver of the storage system.

11. The storage system of claim 9 , wherein a third partition of the plurality of partitions within a first namespace of the plurality of namespaces and a fourth partition of the plurality of partitions within a second namespace of the plurality of namespaces are part of a second stripe set and wherein the instructions further cause the storage system to stripe data associated with an I/O request by a second consumer of the plurality of consumers across one or more stripe units of one or more stripes within the second stripe set.

12. The storage system of claim 11 , wherein the second consumer comprises a victim cache driver and wherein the third partition and the fourth partition are used as a backing store for a victim cache.

13. The storage system of claim 8 , wherein the instructions further cause the storage system to manage the first stripe set via an operating system (OS) provided stripe mechanism.

14. The storage system of claim 13 , wherein the instructions further cause the storage system to bypass the OS provided stripe mechanism during performance of I/O operations on the first stripe set.

15. A non-transitory machine readable medium storing instructions, which when executed by one or more processing resources of a virtual storage system deployed within a compute instance of a cloud environment, cause the virtual storage system to:

share a plurality of namespaces of respective ephemeral storage devices among a plurality of consumers of the virtual storage system by creating a plurality of partitions within each of the plurality of namespaces for use by respective consumers of the plurality of consumers, wherein a first partition of the plurality of partitions within a first namespace of the plurality of namespaces and a second partition of the plurality of partitions within a second namespace of the plurality of namespaces are part of a first stripe set; and

stripe data associated with an input/output (I/O) request by a first consumer of the plurality of consumers across one or more stripe units of one or more stripes within the first stripe set.

16. The non-transitory machine readable medium of claim 15 , wherein the first consumer comprises a journaling driver and wherein the first partition and the second partition are used as a backing store for an operation log journal.

17. The non-transitory machine readable medium of claim 16 , wherein the first partition and the second partition are created via an application programming interface (API) exposed by a non-volatile memory express (NVMe) driver of the virtual storage system.

18. The non-transitory machine readable medium of claim 16 , wherein a third partition of the plurality of partitions within a first namespace of the plurality of namespaces and a fourth partition of the plurality of partitions within a second namespace of the plurality of namespaces are part of a second stripe set and wherein the instructions further cause the storage system to stripe data associated with an I/O request by a second consumer of the plurality of consumers across one or more stripe units of one or more stripes within the second stripe set.

19. The non-transitory machine readable medium of claim 18 , wherein the second consumer comprises a victim cache driver and wherein the third partition and the fourth partition are used as a backing store for a victim cache.

20. The non-transitory machine readable medium of claim 15 , wherein the instructions further cause the virtual storage system to:

manage the first stripe set via an operating system (OS) provided stripe mechanism; and

bypass the OS provided stripe mechanism during performance of I/O operations on the first stripe set.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2023
From: BROWN, JOSEPH, JR.; TAKIMOTO, JAVIER TSUYOSHI; PAWAR, SANGRAMSINH PANDURANG; RYAN, MICHAEL SCOTT
To: NETAPP, INC.
Reel/Frame 063681/0953 →
Continuity (1)
Related Publication 20240361939A1 · Oct 31, 2024
References Cited (10)
US 20160055018A1 · Usgaonkar et al. · 2016 [cited by applicant]
US 20160210199A1 · Christensen et al. · 2016 [cited by applicant]
US 20190042144A1 · Peterson · 2019 [cited by examiner]
US 20190050289A1 · Kachare · 2019 [cited by examiner]
US 20220350489A1 · Kanno · 2022 [cited by examiner]
EP 3608770A1 · 2020 [cited by examiner]
Co-pending U.S. Appl. No. 17/703,307, inventors Pawar; Sangramsinh Pandurang et al., filed Mar. 24, 2022. [cited by applicant]
Co-pending U.S. Appl. No. 18/168,844, inventors Sangramsinh; Pandurang Pawar et al., filed Feb. 14, 2023. [cited by applicant]
Co-pending U.S. Appl. No. 18/309,148, inventor Brown Jr.; Joseph , filed Apr. 28, 2023. [cited by applicant]
Notice of Allowance mailed on Apr. 28, 2023 for U.S. Appl. No. 17/703,307, filed Mar. 24, 2022, 9 pages. [cited by applicant]
Cited By (4)
US 12,346,213 US 12,367,105 US 12,511,149 US 12,730,577