libblockdev

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

cockpit-storage.png

Storage configuration in Cockpit uses libblockdev via udisks