From 797cfafdd7d540474e6c0801b4620ce2ff64b92f Mon Sep 17 00:00:00 2001 From: Bala Harish <161304963+balaharish7@users.noreply.github.com> Date: Thu, 9 Jan 2025 15:53:58 +0530 Subject: [PATCH] docs: xfs quota documentation (#503) * docs: created 4 new docs for xfs quota Signed-off-by: Bala Harish <161304963+balaharish7@users.noreply.github.com> * docs: created 4 new docs for xfs quota Signed-off-by: Bala Harish <161304963+balaharish7@users.noreply.github.com> * docs: created 4 new docs for xfs quota Signed-off-by: Bala Harish <161304963+balaharish7@users.noreply.github.com> --------- Signed-off-by: Bala Harish <161304963+balaharish7@users.noreply.github.com> --- .../version-4.1.x.json | 4 + .../xfs-quota/enable-xfs-quota.md | 166 +++++++++++++++ .../xfs-quota/loop-device-xfs-quota.md | 76 +++++++ .../xfs-quota/modify-xfs-quota.md | 187 ++++++++++++++++ .../xfs-quota/xfs-quota-pre.md | 200 ++++++++++++++++++ docs/sidebars.js | 40 ++++ 6 files changed, 673 insertions(+) create mode 100644 docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/enable-xfs-quota.md create mode 100644 docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/loop-device-xfs-quota.md create mode 100644 docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/modify-xfs-quota.md create mode 100644 docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/xfs-quota-pre.md diff --git a/docs/i18n/en/docusaurus-plugin-content-docs/version-4.1.x.json b/docs/i18n/en/docusaurus-plugin-content-docs/version-4.1.x.json index 329ec0df..ddb5ffad 100644 --- a/docs/i18n/en/docusaurus-plugin-content-docs/version-4.1.x.json +++ b/docs/i18n/en/docusaurus-plugin-content-docs/version-4.1.x.json @@ -90,5 +90,9 @@ "sidebar.docs.category.Support": { "message": "Support", "description": "The label for category Support in sidebar docs" + }, + "sidebar.docs.category.Backup and Restore": { + "message": "Backup and Restore", + "description": "The label for category Backup and Restore in sidebar docs" } } \ No newline at end of file diff --git a/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/enable-xfs-quota.md b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/enable-xfs-quota.md new file mode 100644 index 00000000..9ee0d434 --- /dev/null +++ b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/enable-xfs-quota.md @@ -0,0 +1,166 @@ +--- +id: enable-xfs-quota +title: Enable XFS Quota on LocalPV Hostpath +keywords: + - OpenEBS LocalPV Hostpath Enable XFS Quota + - XFS Quota + - Enable XFS Quota + - Advanced Operations +description: This section describes about enabling XFS quotas for OpenEBS LocalPV Hostpath. +--- + +# Enable XFS Quota on LocalPV Hostpath + +This document provides the necessary steps to enable and configure XFS Quota on OpenEBS LocalPV HostPath. By following these instructions, you will install the OpenEBS LocalPV provisioner, create a StorageClass with XFS Quota support, and set up a PersistentVolumeClaim (PVC) to apply project quotas on the local volumes. It also includes the process for mounting the volume to an application pod and verifying that the quota is successfully applied. + +## Install the OpenEBS Dynamic LocalPV Provisioner + +Refer to the [OpenEBS Installation documentation](../../../../../quickstart-guide/installation.md) to install the OpenEBS LocalPV Hostpath Provisioner. + +## Create StorageClass + +1. To create a hostpath StorageClass with the XFSQuota configuration option, use the following YAML definition. This configuration will enable the XFSQuota for the specified path and storage type. + +``` +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: openebs-hostpath-xfs + annotations: + openebs.io/cas-type: local + cas.openebs.io/config: | + - name: StorageType + value: "hostpath" + - name: BasePath + value: "/var/openebs/local/" + - name: XFSQuota + enabled: "true" +provisioner: openebs.io/local +volumeBindingMode: WaitForFirstConsumer +reclaimPolicy: Delete +``` + +2. For advanced configuration of XFSQuota, you may also set the `softLimitGrace` and `hardLimitGrace` parameters, which define the storage capacity limits beyond the Persistent Volume (PV) storage request. The updated YAML definition is as follows: + +``` +apiVersion: storage.k8s.io/v1 +kind: StorageClass +metadata: + name: openebs-hostpath-xfs + annotations: + openebs.io/cas-type: local + cas.openebs.io/config: | + - name: StorageType + value: "hostpath" + - name: BasePath + value: "/var/openebs/local/" + - name: XFSQuota + enabled: "true" + data: + softLimitGrace: "0%" + hardLimitGrace: "0%" +provisioner: openebs.io/local +volumeBindingMode: WaitForFirstConsumer +reclaimPolicy: Delete +``` + +:::note +- `softLimitGrace` and `hardLimitGrace` are used in conjunction with the PV storage request to determine the soft and hard limits of the quota. + +- The size of these limits is calculated as **"Size of PV storage request * (1 + LimitGrace%)"** + +- If no values are specified, the default is **softLimitGrace: "0%" / hardLimitGrace: "0%"**, meaning the storage capacity is limited to the PV storage request value. + + For example, with a PV of 100Gi capacity and values **softLimitGrace: "90%" / hardLimitGrace: "100%"**, the soft limit will be set to 190Gi, and the hard limit will be set to 200Gi. + You can select to use either `softLimitGrace` or `hardLimitGrace` independently based on your requirements. + + Refer to the relevant [xfs_quota documentation](https://man7.org/linux/man-pages/man8/xfs_quota.8.html#QUOTA_OVERVIEW) for more detailed instructions regarding the configuration of soft and hard limits. +::: + +## Create a PVC + +1. To create a PVC using the StorageClass's name, use the following definition: + +``` +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: local-hostpath-xfs +spec: + storageClassName: openebs-hostpath-xfs + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi +``` + +At this stage, the PVC will remain in the 'Pending' state until the volume is successfully mounted. + +2. Verify the PVC status. + +``` +$ kubectl get pvc +``` + +**Example Output** + +``` +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +local-hostpath-xfs Pending openebs-hostpath-xfs 21s +``` + +## Mount the Volume + +1. Mount the volume to the application pod container. A sample BusyBox Pod template is as follows: + +``` +apiVersion: v1 +kind: Pod +metadata: + name: busybox +spec: + volumes: + - name: local-storage + persistentVolumeClaim: + claimName: local-hostpath-xfs + containers: + - name: busybox + image: busybox + command: + - sh + - -c + - 'while true; do echo "`date` [`hostname`] Hello from OpenEBS Local PV." >> /mnt/store/greet.txt; sleep $(($RANDOM % 5 + 300)); done' + volumeMounts: + - mountPath: /mnt/store + name: local-storage +``` + +The PVC status will change to 'Bound' once the volume is successfully mounted and the quota will be applied. + +2. Verify that the XFS project quota is applied. + +``` +$ sudo xfs_quota -x -c 'report -h' /var/openebs/local/ +``` + +**Example Output** + +``` +Project quota on /var/openebs/local (/dev/loop16) + Blocks +Project ID Used Soft Hard Warn/Grace +---------- --------------------------------- +#0 0 0 0 00 [------] +#1 0 5.7G 6.7G 00 [------] +``` + +## Limitation + +Resizing of quota is not supported. + +## See Also + +- [XFS Quota Prerequisites](xfs-quota-pre.md) +- [Modify XFS Quota on LocalPV Hostpath](modify-xfs-quota.md) +- [XFS Quota with Loop Device](xfs-quota-pre.md) \ No newline at end of file diff --git a/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/loop-device-xfs-quota.md b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/loop-device-xfs-quota.md new file mode 100644 index 00000000..a18bea87 --- /dev/null +++ b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/loop-device-xfs-quota.md @@ -0,0 +1,76 @@ +--- +id: loop-device-xfs-quota +title: XFS Quota with Loop Device +keywords: + - OpenEBS LocalPV Hostpath Modify XFS Quota + - XFS Quota + - XFS Quota with Loop Device + - Advanced Operations +description: This section talks about creating XFS filesystem at the basepath as loop device. +--- + +# XFS Quota with Loop Device + +In scenarios where you do not have an existing device formatted with the XFS filesystem, you can create an XFS filesystem on a loop device. This process is particularly useful when the root filesystem is not XFS and it allows you to simulate an XFS-based storage environment. + +This document outlines the steps to create a sparse file, format it with the XFS filesystem, and mount it as a loop device at the specified directory, `/var/openebs/local`, with project quota enabled. + +## Create XFS filesystem at the Basepath as Loop Device (If filesystem is not XFS) + +If your environment does not have a XFS filesystem, you can use a loop device to create an XFS filesystem. The following steps will guide you through the process of creating a 32MiB sparse file, formatting it with XFS, and mounting it with project quota enabled. + +1. **Ensure XFS Utilities Are Installed** + +Before proceeding, ensure that the library for managing xfs-fs is installed on your system. + +**For Ubuntu/Debian-based Systems** + +``` +sudo apt update +sudo apt-get install -y xfsprogs +``` + +**For RHEL/CentOS-based Systems** + +``` +sudo yum install -y xfsprogs +``` + +2. **Create the Mount Directory** + +Create the directory where the filesystem will be mounted. + +``` +sudo mkdir -p /var/openebs/local +cd /var/openebs +``` + +3. **Create a 32MiB Sparse File** + +Create a sparse file of maximum size 32MiB. + +``` +sudo dd if=/dev/zero of=xfs.32M bs=1 count=0 seek=32M +``` + +4. **Format the Sparse File with XFS** + +Format the newly created sparse file with the XFS filesystem. + +``` +sudo mkfs -t xfs -q xfs.32M +``` + +5. **Mount the Sparse File** + +Finally, mount the sparse file as a loop device with project quota enabled. This will make the file accessible as a directory, `/var/openebs/local`. + +``` +sudo mount -o loop,rw xfs.32M -o pquota /var/openebs/local +``` + +## See Also + +- [XFS Quota Prerequisites](xfs-quota-pre.md) +- [Enable XFS Quota on LocalPV Hostpath](enable-xfs-quota.md) +- [Modify XFS Quota on LocalPV Hostpath](modify-xfs-quota.md) \ No newline at end of file diff --git a/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/modify-xfs-quota.md b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/modify-xfs-quota.md new file mode 100644 index 00000000..d3e348f3 --- /dev/null +++ b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/modify-xfs-quota.md @@ -0,0 +1,187 @@ +--- +id: modify-xfs-quota +title: Modify XFS Quota on LocalPV Hostpath +keywords: + - OpenEBS LocalPV Hostpath Modify XFS Quota + - XFS Quota + - Modify XFS Quota + - Advanced Operations +description: This section talks about modifying XFS quotas for OpenEBS LocalPV Hostpath. +--- + +# Modify XFS Quota on LocalPV Hostpath + +This document provides the necessary steps to modify or remove the XFS project quota enforcement for existing OpenEBS LocalPV Hostpath volumes. XFS quotas help in managing storage utilization by enforcing soft and hard limits for allocated volumes. + +## Identify the BasePath Directory + +Make a note of the BasePath directory used for the hostpath volume. The default BasePath is `/var/openebs/local`. You can retrieve the BasePath from the StorageClass by executing the following command: + +``` +$ kubectl describe sc +``` + +## Locate the Node + +1. Log in to the node where the volume exists. You can determine the node by describing the Persistent Volume (PV) resource. To retrieve information about the PV, use the following command: + +``` +$ kubectl get pvc --namespace demo +``` + +**Example Output** + +``` +NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE +demo-vol-demo-0 Bound pvc-0365904e-0add-45ec-9b4e-f4080929d6cd 2Gi RWO openebs-hostpath 21s +``` + +2. Describe the PV. + +``` +$ kubectl describe pv pvc-0365904e-0add-45ec-9b4e-f4080929d6cd +``` + +**Example Output** + +``` +Name: pvc-0365904e-0add-45ec-9b4e-f4080929d6cd +Labels: openebs.io/cas-type=local-hostpath +Annotations: pv.kubernetes.io/provisioned-by: openebs.io/local +Finalizers: [kubernetes.io/pv-protection] +StorageClass: openebs-hostpath +Status: Bound +Claim: demo/demo-vol-demo-0 +Reclaim Policy: Delete +Access Modes: RWO +VolumeMode: Filesystem +Capacity: 2Gi +Node Affinity: + Required Terms: + Term 0: kubernetes.io/hostname in [storage-node-2] +Message: +Source: + Type: LocalVolume (a persistent volume backed by local storage on a node) + Path: /var/openebs/local/pvc-0365904e-0add-45ec-9b4e-f4080929d6cd +Events: +``` + +3. Identify the node name. + +``` +$ kubectl get node -l 'kubernetes.io/hostname in (storage-node-2)' +``` + +**Example Output** + +``` +NAME STATUS ROLES AGE VERSION +storage-node-2 Ready worker 10m v1.22.1 +``` + +## Modify the XFS Quota Limits + +You can change the soft and/or hard limit of an existing hostpath volume with XFS project quota enabled by following the steps below. If you wish to remove the XFS project quota entirely, refer to the [Remove Project](#remove-project) section. + +### Change Quota Limits + +Execute the following commands on the node where the hostpath volume exists: + +- Make a note of the Project ID. + +``` +$ sudo xfs_quota -x -c 'report -h' /var/openebs/local +``` + +**Example Output** + +``` +Project quota on /var/openebs/local (/dev/nvme1n1) + Blocks +Project ID Used Soft Hard Warn/Grace +---------- --------------------------------- +#0 0 0 0 00 [------] +#1 1G 2.0G 2.0G 00 [------] +``` + +- Modify the quota limits using the following command. The values for `bsoft` (soft limit) and `bhard` (hard limit) must be in B/KB/MB/GB (not KiB/MiB/GiB). + +``` +$ sudo xfs_quota -x -c 'limit -p bsoft=3G bhard=5G 1' /var/openebs/local +``` + +- Verify the updated limits. + +``` +$ sudo xfs_quota -x -c 'report -h' /var/openebs/local +``` + +**Example Output** + +``` +Project quota on /var/openebs/local (/dev/nvme1n1) + Blocks +Project ID Used Soft Hard Warn/Grace +---------- --------------------------------- +#0 0 0 0 00 [------] +#1 1G 3G 5G 00 [------] +``` + +## Remove Project + +To completely remove the XFS project quota from a volume, follow these steps: + +1. Make a note of the Project ID. + +``` +$ sudo xfs_quota -x -c 'report -h' /var/openebs/local +``` + +**Example Output** + +``` +Project quota on /var/openebs/local (/dev/nvme1n1) + Blocks +Project ID Used Soft Hard Warn/Grace +---------- --------------------------------- +#0 0 0 0 00 [------] +#1 1G 2.0G 2.0G 00 [------] +``` + +2. Set the project limits to 0, effectively removing the quota limits. + +``` +$ sudo xfs_quota -x -c 'limit -p bsoft=0 bhard=0 1' /var/openebs/local +``` + +:::note +The command is for a project ID=1 at directory path `/var/openebs/local`. +::: + +3. Clear the directory tree from the XFS project quota. + +``` +$ sudo xfs_quota 'project -C -p /var/openebs/local 1' /var/openebs/local +``` + +4. Verify the changes. + +``` +$ sudo xfs_quota -x -c 'report -h' /var/openebs/local +``` + +**Example Output** + +``` +Project quota on /var/openebs/local (/dev/nvme1n1) + Blocks +Project ID Used Soft Hard Warn/Grace +---------- --------------------------------- +#0 1G 0 0 00 [------] +``` + +## See Also + +- [XFS Quota Prerequisites](xfs-quota-pre.md) +- [Enable XFS Quota on LocalPV Hostpath](enable-xfs-quota.md) +- [XFS Quota with Loop Device](xfs-quota-pre.md) \ No newline at end of file diff --git a/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/xfs-quota-pre.md b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/xfs-quota-pre.md new file mode 100644 index 00000000..3c543d5b --- /dev/null +++ b/docs/main/user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/xfs-quota-pre.md @@ -0,0 +1,200 @@ +--- +id: xfs-quota-pre +title: XFS Quota Prerequisites +keywords: + - OpenEBS LocalPV Hostpath Enable XFS Quota + - XFS Quota + - XFS Quota Prerequisites + - Advanced Operations +description: This section talks about the prerequisites of XFS quotas for OpenEBS LocalPV Hostpath. +--- + +# XFS Quota Prerequisites + +To enable XFS Quota on LocalPV Hostpath, certain prerequisites must be met to ensure proper configuration and functionality. This involves installing the necessary `xfsprogs` package, verifying the filesystem type, and configuring the appropriate mount options, such as `pquota`. + +The following steps outline the installation and configuration procedures for both root and data disk filesystems on Ubuntu, Debian, RHEL, and CentOS systems. By completing these steps, you will be ready to enable and manage XFS Quotas on your OpenEBS LocalPV Hostpath setup. + +## Install the `xfsprogs` Package + +**For Ubuntu/Debian Systems** + +To install the `xfsprogs` package on Ubuntu and Debian systems, execute the following command: + +``` +$ sudo apt-get update +$ sudo apt-get install -y xfsprogs +``` + +**For RHEL/CentOS Systems** + +To install the xfsprogs package on RHEL/CentOS systems, execute the following command: + +``` +$ sudo yum install -y xfsprogs +``` + +**For Fedora** + +To install the xfsprogs package on Fedora, execute the following command: + +``` +$ sudo dnf install -y xfsprogs +``` + +## Mount Filesystem using the `pquota` Mount Option + +1. **Check the Filesystem Type** + +Verify whether the filesystem of the hostPath directory is XFS. The default hostPath directory is `/var/openebs/local`. Execute the following command to check if the filesystem is XFS and to identify the device where the filesystem is stored: + +``` +$ df -Th /var/openebs/local +``` + +**Example Output** + +``` +Filesystem Type Size Used Avail Use% Mounted on +/dev/nvme0n1p1 xfs 8.0G 959M 7.1G 12% / +``` + +If the above command fails due to the path not yet existing, execute the following script to check the filesystem type and host device name of the directory: + +``` +BASEPATH="/var/openebs/local" + +until OUTPUT=$(df -Th $BASEPATH 2> /dev/null) +do +BASEPATH=$(echo "$BASEPATH" | sed 's|\(.*\)/.*|\1|') +done + +echo "PATH=${BASEPATH}" +#Final output +echo "$OUTPUT" +``` + +2. **Check Existing Mount Options** + +Ensure that the mount options for the device found in Step 1 include `pquota` or `prjquota`. Execute the following command to verify the mount options for the device (Example: `/dev/nvme0n1p1`). + +``` +$ sudo mount | grep "^/dev/nvme0n1p1" +``` + +**Example Output** + +``` +/dev/nvme0n1p1 on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota) +``` + +If the mount options already include `pquota` or `prjquota`, you can proceed to the next section to [Enable XFS Quota](enable-xfs-quota.md). If not, continue with Step 3. + +3. **Mount the Device with `pquota` Option** + +In this step, we will mount the device using the `pquota` mount option. If the filesystem is the root filesystem (/), follow the instructions below. If the filesystem is located on a data disk, you can proceed to the [Filesystem on Data Disk](#filesystem-on-data-disk) section. + +**Root Filesystem:** + +To enable `pquota` for the root filesystem, modify the `GRUB_CMDLINE_LINUX` option in the `/etc/default/grub` file. + +- Edit the file `/etc/default/grub`. + +``` +$ sudo vi /etc/default/grub +``` + +- Locate the line containing the variable `GRUB_CMDLINE_LINUX`. + +``` +GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto net.ifnames=0 console=ttyS0" +``` + +- Add `rootflags=pquota` at the end of the string. If `rootflags` option is already present, append `pquota` to the list of options. + +``` +GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto net.ifnames=0 console=ttyS0 rootflags=pquota" +``` + +- Locate the `grub.cfg` file. The file path may vary based on your OS. + + - /boot/grub2/grub.cfg + - /boot/efi/EFI/ubuntu/grub.cfg + - /boot/efi/EFI/debian/grub.cfg + - /boot/efi/EFI/redhat/grub.cfg + - /boot/efi/EFI/centos/grub.cfg + - /boot/efi/EFI/fedora/grub.cfg + +- Create a backup copy of the existing `grub.cfg`. The sample commands below use the path `/boot/grub2/grub.cfg`. Replace the paths with your `grub.cfg` path. + +``` +$ sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup +``` + +- Generate a new `grub.cfg` that includes the changes. + +``` +$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg +``` + +- Reboot the system. + +``` +$ sudo reboot +``` + +- After rebooting, check the mount options again to confirm the changes. + +``` +$ sudo mount | grep "^/dev/nvme0n1p1" +``` + +**Expected Output** + +``` +/dev/nvme0n1p1 on / type xfs (rw,relatime,seclabel,attr2,inode64,prjquota) +``` + +### Filesystem on Data Disk + +If the filesystem is located on a data disk, follow these steps: + +1. Unmount the filesystem on the data disk (Replace `/dev/nvme1n1` and `/mnt/data` with your device and mount path). + +``` +$ sudo umount /dev/nvme1n1 +``` + +2. Mount the disk using the `pquota` mount option. + +``` +$ sudo mount -o rw,pquota /dev/nvme1n1 /mnt/data +``` + +:::caution +`pquota` is not usable with `remount` mount option. +::: + +3. Verify the mount options. + +``` +$ sudo mount | grep "^/dev/nvme1n1" +``` + +**Expected Output** + +``` +/dev/nvme1n1 on /mnt/data type xfs (rw,relatime,seclabel,attr2,inode64,prjquota) +``` + +4. Add the `pquota` option to the `/etc/fstab` file for the data disk to make the changes persistent across reboots. + +``` +UUID=9cff3d69-3769-4ad9-8460-9c54050583f9 /mnt/data xfs defaults,pquota 0 0 +``` + +## See Also + +- [Enable XFS Quota on LocalPV Hostpath](enable-xfs-quota.md) +- [Modify XFS Quota on LocalPV Hostpath](modify-xfs-quota.md) +- [XFS Quota with Loop Device](xfs-quota-pre.md) \ No newline at end of file diff --git a/docs/sidebars.js b/docs/sidebars.js index c96860e2..2de2312a 100644 --- a/docs/sidebars.js +++ b/docs/sidebars.js @@ -139,6 +139,46 @@ module.exports = { type: "doc", id: "user-guides/local-storage-user-guide/local-pv-hostpath/hostpath-deployment", label: "Deploy an Application" + }, + { + collapsed: true, + type: "category", + label: "Advanced Operations", + customProps: { + icon: "Layers" + }, + items: [ + { + collapsed: true, + type: "category", + label: "XFS Quota", + customProps: { + icon: "Book" + }, + items: [ + { + type: "doc", + id: "user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/xfs-quota-pre", + label: "Prerequisites" + }, + { + type: "doc", + id: "user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/enable-xfs-quota", + label: "Enable XFS Quota" + }, + { + type: "doc", + id: "user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/modify-xfs-quota", + label: "Modify XFS Quota" + }, + { + type: "doc", + id: "user-guides/local-storage-user-guide/local-pv-hostpath/advanced-operations/xfs-quota/loop-device-xfs-quota", + label: "XFS Quota with Loop Device" + } + ] + } + ] } ] },