From 43127a51319c2003081df42335b10bf24992d1de Mon Sep 17 00:00:00 2001 From: Sarah Gibson Date: Tue, 28 Jan 2025 10:07:18 +0000 Subject: [PATCH 1/3] Add a blog post to announce the per-user storage quota feature --- .../blog/2025/per-user-storage-quota/index.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 content/blog/2025/per-user-storage-quota/index.md diff --git a/content/blog/2025/per-user-storage-quota/index.md b/content/blog/2025/per-user-storage-quota/index.md new file mode 100644 index 000000000..7976ef405 --- /dev/null +++ b/content/blog/2025/per-user-storage-quota/index.md @@ -0,0 +1,46 @@ +--- +title: "Enforcing per-user storage quotas with `jupyterhub-home-nfs`" +subtitle: "" +summary: "" +authors: ["Sarah Gibson"] +tags: [] +categories: [] +date: 2025-01-28T09:57:28+00:00 +lastmod: 2025-01-07T15:18:37-08:00 +featured: false +draft: false + +# Featured image +# To use, add an image named `featured.jpg/png` to your page's folder. +# Focal points: Smart, Center, TopLeft, Top, TopRight, Left, Right, BottomLeft, Bottom, BottomRight. +image: + caption: "" + focal_point: "" + preview_only: false + +# Projects (optional). +# Associate this post with one or more of your projects. +# Simply enter your project's folder or file name without extension. +# E.g. `projects = ["internal-project"]` references `content/project/deep-learning/index.md`. +# Otherwise, set `projects = []`. +projects: ["nasa-veda"] +--- + +When sharing a storage disk between users, as is usually the case in a JupyterHub deployment, it is important to put in guardrails so that one user cannot eat up the whole storage capacity from the rest of the users. +To this end, 2i2c in close collaboration with [Development Seed](https://developmentseed.org) have developed the [`jupyterhub-home-nfs` project](https://github.com/2i2c-org/jupyterhub-home-nfs) which is a Helm chart that permits enforcing per-user quotas on the storage space. + +{{% callout note %}} +Note that this feature is currently available to AWS hosted hubs only and will be rolled out to other cloud providers in the future. +{{% /callout %}} + +Under the hood, the Helm chart runs [NFS Ganesha](https://github.com/nfs-ganesha/nfs-ganesha) as an in-cluster NFS server, backed by XFS as the underlying filesystem. Storage quota is enforced through XFS's native quota management utility `xfs_quota`. + +Since this feature moves our infrastructure away from managed filesystems (such as AWS's Elastic File System), we have also developed monitoring and alerting mechanisms that will let us know when the disks are getting full, and automated back-ups for disaster recovery. + +If you would like to try this on your 2i2c-managed hub, [please get in touch](https://docs.2i2c.org/support/). + +This project can also be used with _any_ Kubernetes-based JupyterHub, as per our [Right to Replicate policy](https://2i2c.org/right-to-replicate/), so please try it out on your own deployment and let us know what you think! + +## Credit + +This project was developed and deployed in collaboration with [Tarashish Mishra](https://developmentseed.org/team/tarashish-mishra/) from [Development Seed](https://developmentseed.org) From a9e87e73b2f18d98cc9fa4015ea8258ecb5c830c Mon Sep 17 00:00:00 2001 From: Sarah Gibson Date: Tue, 28 Jan 2025 10:11:45 +0000 Subject: [PATCH 2/3] Update last modified date --- content/blog/2025/per-user-storage-quota/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/blog/2025/per-user-storage-quota/index.md b/content/blog/2025/per-user-storage-quota/index.md index 7976ef405..a6701aed3 100644 --- a/content/blog/2025/per-user-storage-quota/index.md +++ b/content/blog/2025/per-user-storage-quota/index.md @@ -6,7 +6,7 @@ authors: ["Sarah Gibson"] tags: [] categories: [] date: 2025-01-28T09:57:28+00:00 -lastmod: 2025-01-07T15:18:37-08:00 +lastmod: 2025-01-28T10:10:14+00:00 featured: false draft: false From d804399804aa12fb6d045cb99f40efaf23f9beea Mon Sep 17 00:00:00 2001 From: Jenny Wong Date: Tue, 28 Jan 2025 12:03:33 +0000 Subject: [PATCH 3/3] Apply suggestions from code review --- content/blog/2025/per-user-storage-quota/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/blog/2025/per-user-storage-quota/index.md b/content/blog/2025/per-user-storage-quota/index.md index a6701aed3..e9b5f0b10 100644 --- a/content/blog/2025/per-user-storage-quota/index.md +++ b/content/blog/2025/per-user-storage-quota/index.md @@ -3,8 +3,8 @@ title: "Enforcing per-user storage quotas with `jupyterhub-home-nfs`" subtitle: "" summary: "" authors: ["Sarah Gibson"] -tags: [] -categories: [] +tags: [open-source] +categories: [impact] date: 2025-01-28T09:57:28+00:00 lastmod: 2025-01-28T10:10:14+00:00 featured: false @@ -33,9 +33,9 @@ To this end, 2i2c in close collaboration with [Development Seed](https://develop Note that this feature is currently available to AWS hosted hubs only and will be rolled out to other cloud providers in the future. {{% /callout %}} -Under the hood, the Helm chart runs [NFS Ganesha](https://github.com/nfs-ganesha/nfs-ganesha) as an in-cluster NFS server, backed by XFS as the underlying filesystem. Storage quota is enforced through XFS's native quota management utility `xfs_quota`. +Under the hood, the Helm chart runs [NFS Ganesha](https://github.com/nfs-ganesha/nfs-ganesha) as an in-cluster NFS server, backed by [XFS](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-xfs) as the underlying filesystem. Storage quota is enforced through XFS's native quota management utility `xfs_quota`. -Since this feature moves our infrastructure away from managed filesystems (such as AWS's Elastic File System), we have also developed monitoring and alerting mechanisms that will let us know when the disks are getting full, and automated back-ups for disaster recovery. +Since this feature moves our infrastructure away from managed filesystems (such as AWS's Elastic File System) that cannot support per-user storage quotas, we have also developed monitoring and alerting mechanisms that will let us know when the disks are getting full, and automated back-ups for disaster recovery. If you would like to try this on your 2i2c-managed hub, [please get in touch](https://docs.2i2c.org/support/).