How to identify the storage space left in a persistent volume claim?
Master System Design with Codemia
Enhance your system design skills with over 120 practice problems, detailed solutions, and hands-on exercises.
Understanding Persistent Volume Claims (PVCs) in Kubernetes
A Persistent Volume Claim (PVC) is a request for storage within a Kubernetes cluster. It abstracts the details of the underlying storage, providing a consistent way to manage storage across different environments. In Kubernetes, storage is provisioned to pods through PVCs, which are linked to Persistent Volumes (PVs). The challenge often faced by developers and sysadmins is determining how much storage remains on a PVC.
Identifying Storage Space Left in a PVC
Since a PVC does not expose storage utilization metrics directly, identifying the available space involves exploring several strategies and tools. Below are detailed steps and methods to achieve this:
1. Using kubectl and df on Pods
One of the simplest ways to determine the storage available in a PVC is by checking the file system usage within the pod using common Linux utilities. Here’s how you can do it:
- Access the Pod: First, get a list of your pods to determine which one is using the PVC and then access it:
- Check Disk Usage: Once inside the pod’s shell, use
dfto see the disk usage. Given that Kubernetes typically mounts PVCs at/mntor similar:
This command outputs the storage utilization, including total size, used space, available space, and percentage used.
2. Monitoring with Prometheus and Grafana
To monitor the storage utilization over time and potentially set up alerts, consider using Prometheus and Grafana:
- Prometheus: Set up node-exporter on each node to collect disk usage metrics. The PVC metrics can be scraped from
/metricsendpoint ofkubelet. - Grafana Dashboards: Create visual dashboards based on the metrics collected by Prometheus to visualize storage usage.
3. Using Metrics Server and Custom Metrics
While the default Kubernetes metrics server doesn’t expose PVC usage, integrating a custom metrics server or tools like KubeStateMetrics can provide insights.
4. Implementing StorageClass Monitoring
For dynamically provisioned volumes, storage classes can provide additional level information. Check provisioner-specific monitoring capabilities:
- Cloud Providers: Such as AWS or GCP often provide out-of-the-box monitoring and usage dashboards.
- On-premise: Solutions like Ceph or GlusterFS offer management utilities to monitor volume usage.
Summary Table
Here’s a concise summary of methods to identify storage usage in a PVC:
| Method | Description | Level |
kubectl and df | Directly access the pod and check file system usage. | Pod-Level |
| Prometheus and Grafana | Set up monitoring dashboards with time-series data. | Cluster-Level |
| Custom Metrics (e.g., KubeStateMetrics) | Use extended metrics for PVC usage monitoring. | Cluster-Level |
| StorageClass-Specific Monitoring | Utilize cloud or on-premise storage class utilities. | Storage Provider |
Additional Tips
- Automate Access: Create a script that automates accessing pods and running
dfon mounted PVC directories, triggered by a CI/CD pipeline schedule. - Alerting Mechanisms: Utilize Prometheus Alertmanager for alerting on thresholds of storage utilization.
- Review Resource Quotas: Ensure that your Kubernetes resource quotas reflect PVC usage, avoiding over-provisioning.
The effective management of PVC storage can significantly streamline operations and prevent unexpected downtimes. By combining manual checks with sophisticated monitoring tools, you can have a comprehensive understanding of your storage utilization.

