From d3b52c8283eb4c85018a5055a0dbe628b5bd2d29 Mon Sep 17 00:00:00 2001 From: Sachin Pandit Date: Tue, 7 Apr 2015 11:39:29 +0530 Subject: admin/doc : Object count for quota Change-Id: I271cca911f6dd1f481634063919a587843d93e50 BUG: 1190108 Signed-off-by: Sachin Pandit Reviewed-on: http://review.gluster.org/10171 Reviewed-by: Vijaikumar Mallikarjuna Tested-by: Gluster Build System Reviewed-by: Kaleb KEITHLEY --- doc/features/quota-scalability.md | 52 -------------------------------- doc/features/quota/quota-object-count.md | 47 +++++++++++++++++++++++++++++ doc/features/quota/quota-scalability.md | 52 ++++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 52 deletions(-) delete mode 100644 doc/features/quota-scalability.md create mode 100644 doc/features/quota/quota-object-count.md create mode 100644 doc/features/quota/quota-scalability.md diff --git a/doc/features/quota-scalability.md b/doc/features/quota-scalability.md deleted file mode 100644 index e47c898dd2a..00000000000 --- a/doc/features/quota-scalability.md +++ /dev/null @@ -1,52 +0,0 @@ -Issues with older implemetation: ------------------------------------ -* >#### Enforcement of quota was done on client side. This had following two issues : - > >* All clients are not trusted and hence enforcement is not secure. - > >* Quota enforcer caches directory size for a certain time out period to reduce network calls to fetch size. On time out, this cache is validated by querying server. With more clients, the traffic caused due to this -validation increases. - -* >#### Relying on lookup calls on a file/directory (inode) to update its contribution [time consuming] - -* >####Hardlimits were stored in a comma separated list. - > >* Hence, changing hard limit of one directory is not an independent operation and would invalidate hard limits of other directories. We need to parse the string once for each of these directories just to identify whether its hard limit is changed. This limits the number of hard limits we can configure. - -* >####Cli used to fetch the list of directories on which quota-limit is set, from glusterd. - > >* With more number of limits, the network overhead incurred to fetch this list limits the scalability of number of directories on which we can set quota. - -* >#### Problem with NFS mount - > >* Quota, for its enforcement and accounting requires all the ancestors of a file/directory till root. However, with NFS relying heavily on nameless lookups (through which there is no guarantee that ancestry can be -accessed) this ancestry is not always present. Hence accounting and enforcement was not correct. - - -New Design Implementation: --------------------------------- - -* Quota enforcement is moved to server side. This addresses issues that arose because of client side enforcement. - -* Two levels of quota limits, soft and hard quota is introduced. - This will result in a message being logged on reaching soft quota and writes will fail with EDQUOT after hard limit is reached. - -Work Flow ------------------ - -* Accounting - # This is done using the marker translator loaded on each brick of the volume. Accounting happens in the background. Ie, it doesn't happen in-flight with the file operation. The file operations latency is not -directly affected by the time taken to perform accounting. This update is sent recursively upwards up to the root of the volume. - -* Enforcement - # The enforcer updates its 'view' (cached) of directory's disk usage on the incidence of a file operation after the expiry of hard/soft timeout, depending on the current usage. Enforcer uses quotad to get the -aggregated disk usage of a directory from the accounting information present on each brick (viz, provided by marker). - -* Aggregator (quotad) - # Quotad is a daemon that serves volume-wide disk usage of a directory, on which quota is configured. It is present on all nodes in the cluster (trusted storage pool) as bricks don't have a global view of cluster. -Quotad queries the disk usage information from all the bricks in that volume and aggregates. It manages all the volumes on which quota is enabled. - - -Benefit to GlusterFS ---------------------------------- - -* Support upto 65536 quota configurations per volume. -* More quotas can be configured in a single volume thereby leading to support GlusterFS for use cases like home directory. - -###For more information on quota usability refer the following link : -> https://access.redhat.com/site/documentation/en-US/Red_Hat_Storage/2.1/html-single/Administration_Guide/index.html#chap-User_Guide-Dir_Quota-Enable diff --git a/doc/features/quota/quota-object-count.md b/doc/features/quota/quota-object-count.md new file mode 100644 index 00000000000..063aa7c5d61 --- /dev/null +++ b/doc/features/quota/quota-object-count.md @@ -0,0 +1,47 @@ +Previous mechanism: +==================== + +The only way we could have retrieved the number of files/objects in a directory or volume was to do a crawl of the entire directory/volume. That was expensive and was not scalable. + +New Design Implementation: +========================== +The proposed mechanism will provide an easier alternative to determine the count of files/objects in a directory or volume. + +The new mechanism will store count of objects/files as part of an extended attribute of a directory. Each directory extended attribute value will indicate the number of files/objects present in a tree with the directory being considered as the root of the tree. + +Inode quota management +====================== + +**setting limits** + +Syntax: +*gluster volume quota limit-objects * + +Details: + is a hard-limit for number of objects limitation for path . If hard-limit is exceeded, creation of file or directory is no longer permitted. + +**list-objects** + +Syntax: +*gluster volume quota list-objects \[path\] ...* + +Details: +If path is not specified, then all the directories which has object limit set on it will be displayed. If we provide path then only that particular path is displayed along with the details associated with that. + +Sample output: + + Path Hard-limit Soft-limit Files Dirs Available Soft-limit exceeded? Hard-limit exceeded? + --------------------------------------------------------------------------------------------------------------------------------------------- + /dir 10 80% 0 1 9 No No + +**Deleting limits** + +Syntax: +*gluster volume quota remove-objects * + +Details: +This will remove the object limit set on the specified path. + +Note: There is a known issue associated with remove-objects. When both usage limit and object limit is set on a path, then removal of any limit will lead to removal of other limit as well. This is tracked in the bug #1202244 + + diff --git a/doc/features/quota/quota-scalability.md b/doc/features/quota/quota-scalability.md new file mode 100644 index 00000000000..e47c898dd2a --- /dev/null +++ b/doc/features/quota/quota-scalability.md @@ -0,0 +1,52 @@ +Issues with older implemetation: +----------------------------------- +* >#### Enforcement of quota was done on client side. This had following two issues : + > >* All clients are not trusted and hence enforcement is not secure. + > >* Quota enforcer caches directory size for a certain time out period to reduce network calls to fetch size. On time out, this cache is validated by querying server. With more clients, the traffic caused due to this +validation increases. + +* >#### Relying on lookup calls on a file/directory (inode) to update its contribution [time consuming] + +* >####Hardlimits were stored in a comma separated list. + > >* Hence, changing hard limit of one directory is not an independent operation and would invalidate hard limits of other directories. We need to parse the string once for each of these directories just to identify whether its hard limit is changed. This limits the number of hard limits we can configure. + +* >####Cli used to fetch the list of directories on which quota-limit is set, from glusterd. + > >* With more number of limits, the network overhead incurred to fetch this list limits the scalability of number of directories on which we can set quota. + +* >#### Problem with NFS mount + > >* Quota, for its enforcement and accounting requires all the ancestors of a file/directory till root. However, with NFS relying heavily on nameless lookups (through which there is no guarantee that ancestry can be +accessed) this ancestry is not always present. Hence accounting and enforcement was not correct. + + +New Design Implementation: +-------------------------------- + +* Quota enforcement is moved to server side. This addresses issues that arose because of client side enforcement. + +* Two levels of quota limits, soft and hard quota is introduced. + This will result in a message being logged on reaching soft quota and writes will fail with EDQUOT after hard limit is reached. + +Work Flow +----------------- + +* Accounting + # This is done using the marker translator loaded on each brick of the volume. Accounting happens in the background. Ie, it doesn't happen in-flight with the file operation. The file operations latency is not +directly affected by the time taken to perform accounting. This update is sent recursively upwards up to the root of the volume. + +* Enforcement + # The enforcer updates its 'view' (cached) of directory's disk usage on the incidence of a file operation after the expiry of hard/soft timeout, depending on the current usage. Enforcer uses quotad to get the +aggregated disk usage of a directory from the accounting information present on each brick (viz, provided by marker). + +* Aggregator (quotad) + # Quotad is a daemon that serves volume-wide disk usage of a directory, on which quota is configured. It is present on all nodes in the cluster (trusted storage pool) as bricks don't have a global view of cluster. +Quotad queries the disk usage information from all the bricks in that volume and aggregates. It manages all the volumes on which quota is enabled. + + +Benefit to GlusterFS +--------------------------------- + +* Support upto 65536 quota configurations per volume. +* More quotas can be configured in a single volume thereby leading to support GlusterFS for use cases like home directory. + +###For more information on quota usability refer the following link : +> https://access.redhat.com/site/documentation/en-US/Red_Hat_Storage/2.1/html-single/Administration_Guide/index.html#chap-User_Guide-Dir_Quota-Enable -- cgit