How Linux Manages Persistent Volumes with Rook

This article provides a technical overview of how the Linux operating system handles persistent volumes when orchestrated by Rook within a Kubernetes cluster. It explains the mechanics between the Linux kernel, the Container Storage Interface (CSI), and the Rook Ceph storage backend, illustrating how raw network storage is translated into mounted, production-grade Linux filesystems for containerized workloads.

The Role of Rook and Ceph in the Linux Environment

Rook is an open-source, cloud-native storage orchestrator designed for Kubernetes. Rather than functioning as a storage provider itself, Rook automates the deployment, configuration, and management of Ceph—a battle-tested, distributed storage system.

When deployed on a Linux-based Kubernetes cluster, Rook runs as an operator. It configures Ceph daemons (Monitors, Managers, and OSDs) directly on Linux nodes. These daemons leverage underlying Linux storage resources, such as raw partitions, raw NVMe/SATA drives, or logical volumes managed by Linux LVM (Logical Volume Manager), using the BlueStore engine for low-overhead write paths.

CSI Drivers: The Bridge Between Kubernetes and the Kernel

When a user requests a PersistentVolumeClaim (PVC), Rook and Ceph utilize specialized Container Storage Interface (CSI) drivers—primarily ceph.csi.ceph.com for block devices (RBD) and shared filesystems (CephFS). The Linux operating system interfaces with these persistent volumes through the following step-by-step workflow:

  1. Volume Provisioning: The Rook operator provisions the underlying storage asset within the Ceph cluster according to the defined StorageClass parameters.
  2. Node Attachment: The CSI node driver on the target Linux host maps the remote Ceph storage resource to the host.
  3. Format and Mount: The host Linux kernel exposes the storage as a device, formats it with a standard filesystem if required, and mounts it into the container's mount namespace.

Handling Block Storage with RADOS Block Device (RBD)

For standard ReadWriteOnce persistent volumes, Rook relies on Ceph RBD. The Linux OS handles this integration primarily through the native Linux kernel RBD module (rbd.ko):

Handling Shared Storage with CephFS

For multi-node access (ReadWriteMany workloads), Rook orchestrates CephFS. Linux handles CephFS persistent volumes using one of two methods:

I/O Execution and Teardown

Once mounted, all container I/O operations travel through the standard Linux I/O stack: