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
- btrfs as both filesystem and multi-device volume, subvolumes, snapshots
- SWAP
- swap partitions/LVs, swap files
- MDRAID
- all RAID levels supported by the MD RAID
- CRYPTO/LUKS
- only LUKS encrypted devices
- MULTIPATH
- just very basic functionality
- LOOP
- basic operations with loop devices
- DEVICE MAPPER
- basic operations with raw device mapper and DM RAID sets
- s390
- DASD, zFCP
- KBD
- bcache, zram

Storage configuration in Cockpit uses libblockdev via udisks


