There are basically two different classes of storage types:
Table 7.1. Available storage types
Description | PVE type | Level | Shared | Snapshots | Stable |
---|---|---|---|---|---|
ZFS (local) |
| file | no | yes | yes |
Directory |
| file | no | no1 | yes |
BTRFS |
| file | no | yes | technology preview |
NFS |
| file | yes | no1 | yes |
CIFS |
| file | yes | no1 | yes |
Proxmox Backup |
| both | yes | n/a | yes |
GlusterFS |
| file | yes | no1 | yes |
CephFS |
| file | yes | yes | yes |
LVM |
| block | no2 | no | yes |
LVM-thin |
| block | no | yes | yes |
iSCSI/kernel |
| block | yes | no | yes |
iSCSI/libiscsi |
| block | yes | no | yes |
Ceph/RBD |
| block | yes | yes | yes |
ZFS over iSCSI |
| block | yes | yes | yes |
1: On file based storages, snapshots are possible with the qcow2 format.
2: It is possible to use LVM on top of an iSCSI or FC-based storage.
That way you get a shared
LVM storage.
A number of storages, and the Qemu image format qcow2
, support thin
provisioning. With thin provisioning activated, only the blocks that
the guest system actually use will be written to the storage.
Say for instance you create a VM with a 32GB hard disk, and after installing the guest system OS, the root file system of the VM contains 3 GB of data. In that case only 3GB are written to the storage, even if the guest VM sees a 32GB hard drive. In this way thin provisioning allows you to create disk images which are larger than the currently available storage blocks. You can create large disk images for your VMs, and when the need arises, add more disks to your storage without resizing the VMs' file systems.
All storage types which have the “Snapshots” feature also support thin provisioning.
If a storage runs full, all guests using volumes on that storage receive IO errors. This can cause file system inconsistencies and may corrupt your data. So it is advisable to avoid over-provisioning of your storage resources, or carefully observe free space to avoid such conditions.