Skip to content

Storage Architecture & Pools Guide

PiVirt provides a unified, pluggable storage subsystem supporting high-performance local image directories, thin-provisioned LVM volumes, remote iSCSI SANs, and shared OCFS2 cluster filesystems.

storage:
pools:
- name: "default"
type: "dir"
path: "/var/lib/pivirtd/images"
storage:
pools:
- name: "lvm-pool"
type: "lvm"
volume_group: "pivirtd-vg"
thin_pool: "pivirtd-thin"
storage:
pools:
- name: "iscsi-pool"
type: "iscsi"
target_iqn: "iqn.2024-01.hu.pilab:storage"
portal: "10.0.1.10:3260"
storage:
pools:
- name: "nfs-pool"
type: "nfs"
server: "nas.pilab.hu"
export: "/exports/pivirtd"
Terminal window
pvcli storage volume create \
--pool default \
--name data-01 \
--size 100Gi \
--format qcow2
Terminal window
pvcli storage volume clone \
--source data-01 \
--name data-01-clone
Terminal window
pvcli storage volume resize \
--name data-01 \
--size 200Gi
Terminal window
pvcli storage volume delete data-01
Terminal window
pvcli storage snapshot create \
--volume data-01 \
--name backup-01
Terminal window
pvcli storage snapshot restore \
--volume data-01 \
--name backup-01
Terminal window
# Create target
pvcli storage target create \
--iqn iqn.2024-01.hu.pilab:vm-storage \
--alias "VM Storage Pool"
# Add LUN
pvcli storage target lun add \
--target iqn.2024-01.hu.pilab:vm-storage \
--lun 1 \
--device /dev/pivirtd-vg/vm-01-disk
Terminal window
# Discover targets
pvcli storage initiator discover --portal 10.0.1.10:3260
# Login
pvcli storage initiator login \
--target iqn.2024-01.hu.pilab:vm-storage \
--portal 10.0.1.10:3260
Terminal window
pvcli storage ocfs2 create \
--name vm-shared \
--device /dev/disk/by-id/scsi-360050764008181c60000000000000001 \
--cluster pivirt-cluster
Terminal window
pvcli storage ocfs2 mount \
--name vm-shared \
--mount-point /var/lib/pivirtd/shared
Backend Use Case Performance
Local dir Development ★★☆☆☆
LVM Production ★★★★☆
iSCSI Clustered ★★★★★
NFS Shared ★★★☆☆
storage:
pools:
- name: "lvm-pool"
type: "lvm"
volume_group: "pivirtd-vg"
thin_pool: "pivirtd-thin"
thin_provisioning: true
spec:
disks:
- name: root
discard: true # Enable TRIM
Terminal window
# Check pool usage
pvcli storage pool list
# Check volume usage
pvcli storage volume list
Terminal window
# Check pool status
pvcli storage pool get default -o yaml
# Check underlying storage
df -h /var/lib/pivirtd
Terminal window
# Check iscsid
systemctl status open-iscsi
# Check sessions
iscsiadm -m session -P3
Terminal window
# Check cluster status
o2cb cluster-status
# Check DLM
dlm_tool ls