libblockdev is a C library supporting GObject introspection for manipulation
of block devices. It has a plugin-based architecture where each technology (like
LVM, Btrfs, MD RAID, Swap,...) is implemented in a separate plugin, possibly
with multiple implementations (e.g. using LVM CLI or the new LVM DBus
API). Every plugin is also usable as a standalone shared library.

Supported technolgies

  • partitions
    • MBR, GPT, partition manipulation on partitionable devices
  • filesystems
    • ext4, xfs, vfat
  • LVM
    • "plain LVM", LVM Thin Provisioning, LVM Cache
    • btrfs as both filesystem and multi-device volume, subvolumes, snapshots
  • SWAP
    • swap partitions/LVs, swap files
    • all RAID levels supported by the MD RAID
    • only LUKS encrypted devices
    • just very basic functionality
  • LOOP
    • basic operations with loop devices
    • basic operations with raw device mapper and DM RAID sets
  • s390
    • DASD, zFCP
  • KBD
    • bcache, zram

Storage configuration in Cockpit uses libblockdev via storaged