How vitalif/vitastor works
Vitastor is distributed block, file, and object storage. Users provision and administer pools, images, and disks through the CLI, while clients and protocol adapters expose stored data to workloads; OSDs replicate data and persist it on disk. The monitor distributes cluster and placement state, with etcd as the state store. The README documents QEMU, UBLK, NBD, NFS, OpenStack, OpenNebula, Proxmox, and Kubernetes integrations. Sampled source confirms core client, etcd-state, CSI, and NFS-KV behavior; some documented integration wiring is represented only at the subsystem level.
Main entry points: cluster_client.cpp Cluster client · cli.cpp Vitastor CLI · nfs_proxy.cpp NFS service · mon.js Monitor
Components 23
Administration
- Vitastor CLI
src/cmd/cli.cpp - Disk management
src/disk_tool/disk_tool.cpp
Cluster control
- Monitor
mon/mon.js - Monitor HTTP
mon/http_server.js - State client
src/client/etcd_state_client.cpp - PG placement
mon/pg_gen.js
Storage data plane
- Cluster client
src/client/cluster_client.cpp - OSD messaging
src/client/messenger.cpp - OSD
src/osd/osd.cpp - Blockstore
src/blockstore/blockstore.cpp - OSD disk
src/blockstore/blockstore_disk.cpp
Workload interfaces
- QEMU interface
src/client/qemu_driver.c - UBLK interface
src/client/ublk_server.cpp - NBD interface
src/client/nbd_proxy.cpp - NFS service
src/nfs/nfs_proxy.cpp - Vitastor KV
src/kv/kv_db.cpp
Platform integrations
- Kubernetes CSI
csi/src/controllerserver.go - Node binding
node-binding/client.cc - OpenStack driver
patches/cinder-vitastor.py - OpenNebula driver
opennebula/remotes/datastore/vitastor/patch-oned-conf.py
Other components
- Operator
- Workload
- etcd state
Connections 24
- Operator → Vitastor CLI: administers
- Operator → Disk management: prepares disks
- Vitastor CLI → Monitor HTTP: requests cluster operations
- Monitor → etcd state: stores cluster state
- State client → etcd state: reads cluster state
- Monitor → PG placement: generates placement
- Cluster client → State client: loads state
- Cluster client → OSD messaging: dispatches I/O
- OSD messaging → OSD: sends OSD requests
- OSD → Blockstore: executes storage operations
- Blockstore → OSD disk: reads and writes
- Workload → QEMU interface: uses
- Workload → UBLK interface: uses
- Workload → NBD interface: uses
- Workload → NFS service: mounts
- QEMU interface → Cluster client: submits I/O
- UBLK interface → Cluster client: submits I/O
- NBD interface → Cluster client: submits I/O
- NFS service → Vitastor KV: serves KV filesystem
- NFS service → Cluster client: accesses shared data
- Kubernetes CSI → Vitastor CLI: invokes volume operations
- Node binding → Cluster client: uses client API
- OpenStack driver → Vitastor CLI: integrates provisioning
- OpenNebula driver → Vitastor CLI: integrates provisioning