The {pve} storage model is very flexible. Virtual machine images can either be stored on one or several local storages, or on shared storage like NFS or iSCSI (NAS, SAN). There are no limits, and you may configure as many storage pools as you like. You can use all storage technologies available for Debian Linux.
One major benefit of storing VMs on shared storage is the ability to live-migrate running machines without any downtime, as all nodes in the cluster have direct access to VM disk images. There is no need to copy VM image data, so live migration is very fast in that case.
The storage library (package libpve-storage-perl) uses a flexible plugin system to provide a common interface to all storage types. This can be easily adopted to include further storage types in future.
There are basically two different classes of storage types:
- Block level storage
-
Allows to store large raw images. It is usually not possible to store other files (ISO, backups, ..) on such storage types. Most modern block level storage implementations support snapshots and clones. RADOS, Sheepdog and DRBD are distributed systems, replicating storage data to different nodes.
- File level storage
-
They allow access to a full featured (POSIX) file system. They are more flexible, and allows you to store any content type. ZFS is probably the most advanced system, and it has full support for snapshots and clones.
Description | PVE type | Level | Shared | Snapshots | Stable |
---|---|---|---|---|---|
ZFS (local) |
|
file |
no |
yes |
yes |
Directory |
|
file |
no |
no |
yes |
NFS |
|
file |
yes |
no |
yes |
GlusterFS |
|
file |
yes |
no |
yes |
LVM |
|
block |
no |
no |
yes |
LVM-thin |
|
block |
no |
yes |
beta |
iSCSI/kernel |
|
block |
yes |
no |
yes |
iSCSI/libiscsi |
|
block |
yes |
no |
yes |
Ceph/RBD |
|
block |
yes |
yes |
yes |
Sheepdog |
|
block |
yes |
yes |
beta |
DRBD9 |
|
block |
yes |
yes |
beta |
ZFS over iSCSI |
|
block |
yes |
yes |
yes |