Skip to content

Design a full feature CSI driver for shared SAN in Kubernetes

A complex research of the new storage subsystem in the Linux kernel and QEMU Storage Daemon and developing the design for an innovative CSI driver for shared LUNs in Kubernetes.

Objective:

This research aimed to develop an innovative design for a Container Storage Interface (CSI) driver suitable for shared LUNs in Kubernetes, focusing on efficient snapshot creation and support for ReadWriteMany mode for live migration of virtual machines in KubeVirt.

Researched:

  • Linux Kernel Subsystems: The study delved into advanced Linux kernel storage technologies, including ublk (Userspace Block Device Driver), VDPA (Virtual Data Path Acceleration), and vDUSE (Virtual Device User Space).
  • QEMU Storage Daemon: Investigated the specialized daemon responsible for data storage, along with its API.
  • Fencing Methods: Explored various techniques for handling faulty nodes.
  • Performance Analysis: Assessed the performance of different snapshot technologies, such as LVM, LVM Thin, QCOW2, and various device export technologies, including ublk, nbd, vhost, and vdpa.

Outcomes:

  • Design Documentation: Produced a comprehensive design of all components for the Kubernetes CSI driver, complete with detailed documentation that outlines the interaction of all components. This encompassed the design of the driver’s components in Kubernetes, their low-level API interactions, and a high-level user interface for configuring the storage subsystem.
  • Community Engagement: The findings were presented to and discussed with the wider community, as well as with the core developers of QEMU.

Additional links: