IP Library Granted Patent US 10,095,729
Granted Patent B2
US 10,095,729 · App. 15/474,047 · Granted Oct 9, 2018

Managing storage quotas in a shared storage system

Inventors: Philip Taron (Seattle, WA); Patrick Jakubowski (Seattle, WA); Remi Bernotavicius (Seattle, WA)
Assignee: Qumulo, Inc.
G06F17/30371G06F17/30091G06F17/30138G06F17/30165
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 10,095,729
App. No.
15/474,047
Granted
Oct 9, 2018
Kind
B2
Abstract

A facility for managing filesystem object storage quotas (i.e., size limits) in a storage environment is disclosed. The facility enables users to establish, modify, and remove quotas on directories and files within a filesystem. Each quota acts as a soft limit on the size of the associated filesystem object, including any child objects of the filesystem object. The facility improves the speed at which the system can test for and identify violations of quotas established for individual filesystem objects by using aggregation and reconciliation techniques rather than constantly traversing a filesystem in its entirety to test for violations of quotas.

Claims (63)

1. A method for managing a file system in a shared storage system over a network, wherein instructions stored in a memory are executed by one or more processors to perform actions, comprising:

instantiating a file system epoch counter associated with a plurality of file system objects; and

instantiating a file system facility to perform actions, comprising:

employing one or more of a plurality of storage devices of the shared storage system to provide access to the plurality of file system objects that are associated with one or more directories or files in the file system; and

in response to receiving a request to modify a first file system object, performing actions, including:

determining when one or more file system objects are current with a quota by employing the system epoch counter to compare a current epoch value to an epoch value previously associated with the first file system object, wherein the comparison reduces latency and computational resources that are employed to determine when one or more file system objects are current with the quota; and identifying, without having to traverse the entire file system, one or more file system objects that are non-current with the quota;

when the comparison is equal, allowing an increase or a decrease in a size of the first file system object;

when the comparison is unequal and one of the first file system object or one or more parent objects of the first file system object are enforcing the quota, disallowing the modification to the size of the first file object; and

when the comparison is unequal and the one of the first file system object or the one or more parent objects of the first file system object are unenforcing the quota, allowing the modification in the size of the first file object.

2. The method of claim 1 , wherein in response to receiving the request to modify the first file system object, performing further actions, including:

when the comparison is unequal and one of the first file system object or one or more parent objects of the first file system object are enforcing an overage quota, disallowing the increase in the size of the first file object; and

when the comparison is unequal and the of the first file system object or the one or more parent objects of the first file system object are enforcing an underage quota, disallowing the decrease in the size of the first file object.

3. The method of claim 1 , further comprising:

in response to receiving a quota value that is associated with the first file system object, performing actions, including:

storing the quota value and an association of a current system epoch value with the first file system object; and

determining whether the size of the file system object is greater than the quota value.

4. The method of claim 1 , further comprising:

in response to determining that the size of the first file system object relative to the quota exceeds a predetermined percentage value, notifying a user associated with the filesystem object.

5. The method of claim 1 , further comprising storing the quota in a data structure that includes a quota value, an enforcing bit, and an epoch value associated with the first file system object.

6. The method of claim 1 , further comprising determining the size of the first file system object based on an aggregate value from an inode of the first file system object.

7. A computer readable non-transitory storage media that stores instructions for managing a file system in a shared storage system over a network, wherein execution of the instructions by one or more processors performs actions, comprising:

instantiating a file system epoch counter associated with a plurality of file system objects; and

instantiating a file system facility to perform actions, comprising:

employing one or more of a plurality of storage devices of the shared storage system to provide access to the plurality of file system objects that are associated with one or more directories or files in the file system; and

in response to receiving a request to modify a first file system object, performing actions, including:

determining when one or more file system objects are current with a quota by employing the system epoch counter to compare a current epoch value to an epoch value previously associated with the first file system object, wherein the comparison reduces latency and computational resources that are employed to determine when one or more file system objects are current with the quota; and identifying, without having to traverse the entire file system, one or more file system objects that are non-current with the quota;

when the comparison is equal, allowing an increase or a decrease in a size of the first file system object;

when the comparison is unequal and one of the first file system object or one or more parent objects of the first file system object are enforcing the quota, disallowing the modification to the size of the first file object; and

when the comparison is unequal and the one of the first file system object or the one or more parent objects of the first file system object are unenforcing the quota, allowing the modification in the size of the first file object.

8. The media of claim 7 , wherein in response to receiving the request to modify the first file system object, performing further actions, including:

when the comparison is unequal and one of the first file system object or one or more parent objects of the first file system object are enforcing an overage quota, disallowing the increase in the size of the first file object; and

when the comparison is unequal and the of the first file system object or the one or more parent objects of the first file system object are enforcing an underage quota, disallowing the decrease in the size of the first file object.

9. The media of claim 7 , further comprising:

in response to receiving a quota value that is associated with the first file system object, performing actions, including:

storing the quota value and an association of a current system epoch value with the first file system object; and

determining whether the size of the file system object is greater than the quota value.

10. The media of claim 7 , further comprising:

in response to determining that the size of the first file system object relative to the quota exceeds a predetermined percentage value, notifying a user associated with the filesystem object.

11. The media of claim 7 , further comprising storing the quota in a data structure that includes a quota value, an enforcing bit, and an epoch value associated with the first file system object.

12. The media of claim 7 , further comprising determining the size of the first file system object based on an aggregate value from an inode of the first file system object.

13. A system for managing a fife system in a shared storage system over a network, comprising:

a transceiver for communicating over the network;

a memory for storing instructions; and

one or more processors that execute the instructions to perform actions, comprising:

instantiating a file system epoch counter associated with a plurality of file system objects; and

instantiating a file system facility to perform actions, comprising:

employing one or more of a plurality of storage devices of the shared storage system to provide access to the plurality of file system objects that are associated with one or more directories or files in the file system; and

in response to receiving a request to modify a first file system object, performing actions, including:

determining when one or more file system objects are current with a quota by employing the system epoch counter to compare a current epoch value to an epoch value previously associated with the first file system object, wherein the comparison reduces latency and computational resources that are employed to determine when one or more file system objects are current with the quota; and identifying, without having to traverse the entire file system, one or more file system objects that are non-current with the quota;

when the comparison is equal, allowing an increase or a decrease in a size of the first file system object;

when the comparison is unequal and one of the first file system object or one or more parent objects of the first file system object are enforcing the quota, disallowing the modification to the size of the first file object; and

when the comparison is unequal and the one of the first file system object or the one or more parent objects of the first file system object are unenforcing the quota, allowing the modification in the size of the first file object.

14. The system of claim 13 , wherein in response to receiving the request to modify the first file system object, performing further actions, including:

when the comparison is unequal and one of the first file system object or one or more parent objects of the first file system object are enforcing an overage quota, disallowing the increase in the size of the first file object; and

when the comparison is unequal and the of the first file system object or the one or more parent objects of the first file system object are enforcing an underage quota, disallowing the decrease in the size of the first file object.

15. The system of claim 13 , further comprising:

in response to receiving a quota value that is associated with the first file system object, performing actions, including:

storing the quota value and an association of a current system epoch value with the first file system object; and

determining whether the size of the file system object is greater than the quota value.

16. The system of claim 13 , further comprising:

in response to determining that the size of the first file system object relative to the quota exceeds a predetermined percentage value, notifying a user associated with the filesystem object.

17. The system of claim 13 , further comprising storing the quota in a data structure that includes a quota value, an enforcing bit, and an epoch value associated with the first file system object.

18. The system of claim 13 , further comprising determining the size of the first file system object based on an aggregate value from an inode of the first file system object.

Assignments (2)
SECURITY INTEREST Recorded Jun 24, 2022
From: QUMULO, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 060439/0967 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2017
From: TARON, PHILIP; JAKUBOWSKI, PATRICK; BERNOTAVICIUS, REMI
To: QUMULO, INC.
Reel/Frame 041797/0833 →
Continuity (3)
Provisional Application 62446261 · Jan 13, 2017
Provisional Application 62432554 · Dec 9, 2016
Related Publication 20180165321A1 · Jun 14, 2018
Cited By (9)
US 12,222,903 US 12,292,853 US 12,346,290 US 12,443,559 US 12,443,568 US 12,481,625 US 12,585,563 US 12,619,582 US 12,670,081