]> git.proxmox.com Git - pve-docs.git/blame - pvesm.adoc
sdn: unify installing sdn and ifupdown2 in one command
[pve-docs.git] / pvesm.adoc
CommitLineData
80c0adcb 1[[chapter_storage]]
aa039b0f 2ifdef::manvolnum[]
b2f242ab
DM
3pvesm(1)
4========
5f09af76
DM
5:pve-toplevel:
6
aa039b0f
DM
7NAME
8----
9
10pvesm - Proxmox VE Storage Manager
11
12
49a5e11c 13SYNOPSIS
aa039b0f
DM
14--------
15
16include::pvesm.1-synopsis.adoc[]
17
18DESCRIPTION
19-----------
20endif::manvolnum[]
aa039b0f
DM
21ifndef::manvolnum[]
22{pve} Storage
23=============
194d2f29 24:pve-toplevel:
aa039b0f 25endif::manvolnum[]
5f09af76 26ifdef::wiki[]
cb84ed18 27:title: Storage
5f09af76
DM
28endif::wiki[]
29
aa039b0f
DM
30The {pve} storage model is very flexible. Virtual machine images
31can either be stored on one or several local storages, or on shared
32storage like NFS or iSCSI (NAS, SAN). There are no limits, and you may
33configure as many storage pools as you like. You can use all
34storage technologies available for Debian Linux.
35
36One major benefit of storing VMs on shared storage is the ability to
37live-migrate running machines without any downtime, as all nodes in
38the cluster have direct access to VM disk images. There is no need to
39copy VM image data, so live migration is very fast in that case.
40
8c1189b6 41The storage library (package `libpve-storage-perl`) uses a flexible
aa039b0f 42plugin system to provide a common interface to all storage types. This
cc15d2c5 43can be easily adopted to include further storage types in the future.
aa039b0f
DM
44
45
46Storage Types
47-------------
48
49There are basically two different classes of storage types:
50
e21e6f8a
TL
51File level storage::
52
cc15d2c5 53File level based storage technologies allow access to a fully featured (POSIX)
e21e6f8a
TL
54file system. They are in general more flexible than any Block level storage
55(see below), and allow you to store content of any type. ZFS is probably the
56most advanced system, and it has full support for snapshots and clones.
57
aa039b0f
DM
58Block level storage::
59
60Allows to store large 'raw' images. It is usually not possible to store
61other files (ISO, backups, ..) on such storage types. Most modern
62block level storage implementations support snapshots and clones.
e4fefc2c 63RADOS and GlusterFS are distributed systems, replicating storage
aa039b0f
DM
64data to different nodes.
65
aa039b0f
DM
66
67.Available storage types
b84c51fa 68[width="100%",cols="<2d,1*m,4*d",options="header"]
aa039b0f
DM
69|===========================================================
70|Description |PVE type |Level |Shared|Snapshots|Stable
71|ZFS (local) |zfspool |file |no |yes |yes
db7f8770
DC
72|Directory |dir |file |no |no^1^ |yes
73|NFS |nfs |file |yes |no^1^ |yes
de14ebff 74|CIFS |cifs |file |yes |no^1^ |yes
67558489 75|Proxmox Backup |pbs |both |yes |n/a |yes
db7f8770 76|GlusterFS |glusterfs |file |yes |no^1^ |yes
71996a81 77|CephFS |cephfs |file |yes |yes |yes
db7f8770 78|LVM |lvm |block |no^2^ |no |yes
9801e1c3 79|LVM-thin |lvmthin |block |no |yes |yes
aa039b0f
DM
80|iSCSI/kernel |iscsi |block |yes |no |yes
81|iSCSI/libiscsi |iscsidirect |block |yes |no |yes
82|Ceph/RBD |rbd |block |yes |yes |yes
aa039b0f 83|ZFS over iSCSI |zfs |block |yes |yes |yes
93e1d33e 84|===========================================================
aa039b0f 85
db7f8770
DC
86^1^: On file based storages, snapshots are possible with the 'qcow2' format.
87
c1bcd141
AS
88^2^: It is possible to use LVM on top of an iSCSI or FC-based storage.
89That way you get a `shared` LVM storage.
aa039b0f 90
5eba0743
FG
91
92Thin Provisioning
2afe468c 93~~~~~~~~~~~~~~~~~
ebc15cbc 94
8c1189b6
FG
95A number of storages, and the Qemu image format `qcow2`, support 'thin
96provisioning'. With thin provisioning activated, only the blocks that
2afe468c 97the guest system actually use will be written to the storage.
ebc15cbc 98
2afe468c 99Say for instance you create a VM with a 32GB hard disk, and after
5eba0743 100installing the guest system OS, the root file system of the VM contains
2afe468c
DM
1013 GB of data. In that case only 3GB are written to the storage, even
102if the guest VM sees a 32GB hard drive. In this way thin provisioning
103allows you to create disk images which are larger than the currently
104available storage blocks. You can create large disk images for your
105VMs, and when the need arises, add more disks to your storage without
5eba0743 106resizing the VMs' file systems.
2afe468c 107
8c1189b6 108All storage types which have the ``Snapshots'' feature also support thin
2afe468c 109provisioning.
ebc15cbc 110
ba1d96fd 111CAUTION: If a storage runs full, all guests using volumes on that
38d1cf56 112storage receive IO errors. This can cause file system inconsistencies
ba1d96fd
DM
113and may corrupt your data. So it is advisable to avoid
114over-provisioning of your storage resources, or carefully observe
115free space to avoid such conditions.
ebc15cbc 116
5eba0743 117
aa039b0f
DM
118Storage Configuration
119---------------------
120
121All {pve} related storage configuration is stored within a single text
8c1189b6 122file at `/etc/pve/storage.cfg`. As this file is within `/etc/pve/`, it
aa039b0f
DM
123gets automatically distributed to all cluster nodes. So all nodes
124share the same storage configuration.
125
cc15d2c5
FE
126Sharing storage configuration makes perfect sense for shared storage,
127because the same ``shared'' storage is accessible from all nodes. But it is
aa039b0f
DM
128also useful for local storage types. In this case such local storage
129is available on all nodes, but it is physically different and can have
130totally different content.
131
5eba0743 132
aa039b0f
DM
133Storage Pools
134~~~~~~~~~~~~~
135
5eba0743
FG
136Each storage pool has a `<type>`, and is uniquely identified by its
137`<STORAGE_ID>`. A pool configuration looks like this:
aa039b0f
DM
138
139----
140<type>: <STORAGE_ID>
141 <property> <value>
142 <property> <value>
a550860d 143 <property>
aa039b0f
DM
144 ...
145----
146
aa039b0f 147The `<type>: <STORAGE_ID>` line starts the pool definition, which is then
a550860d
TL
148followed by a list of properties. Most properties require a value. Some have
149reasonable defaults, in which case you can omit the value.
aa039b0f 150
9c41b54d
DM
151To be more specific, take a look at the default storage configuration
152after installation. It contains one special local storage pool named
8c1189b6 153`local`, which refers to the directory `/var/lib/vz` and is always
9c41b54d
DM
154available. The {pve} installer creates additional storage entries
155depending on the storage type chosen at installation time.
156
8c1189b6 157.Default storage configuration (`/etc/pve/storage.cfg`)
9801e1c3
DM
158----
159dir: local
aa039b0f 160 path /var/lib/vz
9801e1c3
DM
161 content iso,vztmpl,backup
162
9c41b54d 163# default image store on LVM based installation
9801e1c3
DM
164lvmthin: local-lvm
165 thinpool data
166 vgname pve
167 content rootdir,images
9c41b54d
DM
168
169# default image store on ZFS based installation
170zfspool: local-zfs
171 pool rpool/data
172 sparse
173 content images,rootdir
9801e1c3 174----
aa039b0f 175
5eba0743 176
aa039b0f
DM
177Common Storage Properties
178~~~~~~~~~~~~~~~~~~~~~~~~~
179
871e1fd6 180A few storage properties are common among different storage types.
aa039b0f
DM
181
182nodes::
183
184List of cluster node names where this storage is
185usable/accessible. One can use this property to restrict storage
186access to a limited set of nodes.
187
188content::
189
190A storage can support several content types, for example virtual disk
191images, cdrom iso images, container templates or container root
871e1fd6 192directories. Not all storage types support all content types. One can set
cc15d2c5 193this property to select what this storage is used for.
aa039b0f
DM
194
195images:::
196
197KVM-Qemu VM images.
198
199rootdir:::
200
871e1fd6 201Allow to store container data.
aa039b0f
DM
202
203vztmpl:::
204
205Container templates.
206
207backup:::
208
8c1189b6 209Backup files (`vzdump`).
aa039b0f
DM
210
211iso:::
212
213ISO images
214
c2c8eb89
DC
215snippets:::
216
217Snippet files, for example guest hook scripts
218
aa039b0f
DM
219shared::
220
221Mark storage as shared.
222
223disable::
224
225You can use this flag to disable the storage completely.
226
227maxfiles::
228
3a976366
FE
229Deprecated, please use `prune-backups` instead. Maximum number of backup files
230per VM. Use `0` for unlimited.
231
232prune-backups::
233
234Retention options for backups. For details, see
235xref:vzdump_retention[Backup Retention].
aa039b0f
DM
236
237format::
238
239Default image format (`raw|qcow2|vmdk`)
240
241
242WARNING: It is not advisable to use the same storage pool on different
871e1fd6 243{pve} clusters. Some storage operation need exclusive access to the
aa039b0f 244storage, so proper locking is required. While this is implemented
871e1fd6 245within a cluster, it does not work between different clusters.
aa039b0f
DM
246
247
248Volumes
249-------
250
251We use a special notation to address storage data. When you allocate
871e1fd6 252data from a storage pool, it returns such a volume identifier. A volume
aa039b0f
DM
253is identified by the `<STORAGE_ID>`, followed by a storage type
254dependent volume name, separated by colon. A valid `<VOLUME_ID>` looks
255like:
256
257 local:230/example-image.raw
258
259 local:iso/debian-501-amd64-netinst.iso
260
261 local:vztmpl/debian-5.0-joomla_1.5.9-1_i386.tar.gz
262
263 iscsi-storage:0.0.2.scsi-14f504e46494c4500494b5042546d2d646744372d31616d61
264
5eba0743 265To get the file system path for a `<VOLUME_ID>` use:
aa039b0f
DM
266
267 pvesm path <VOLUME_ID>
268
5eba0743 269
aa039b0f
DM
270Volume Ownership
271~~~~~~~~~~~~~~~~
272
8c1189b6 273There exists an ownership relation for `image` type volumes. Each such
aa039b0f
DM
274volume is owned by a VM or Container. For example volume
275`local:230/example-image.raw` is owned by VM 230. Most storage
276backends encodes this ownership information into the volume name.
277
871e1fd6 278When you remove a VM or Container, the system also removes all
aa039b0f
DM
279associated volumes which are owned by that VM or Container.
280
281
282Using the Command Line Interface
283--------------------------------
284
871e1fd6
FG
285It is recommended to familiarize yourself with the concept behind storage
286pools and volume identifiers, but in real life, you are not forced to do any
aa039b0f
DM
287of those low level operations on the command line. Normally,
288allocation and removal of volumes is done by the VM and Container
289management tools.
290
8c1189b6
FG
291Nevertheless, there is a command line tool called `pvesm` (``{pve}
292Storage Manager''), which is able to perform common storage management
aa039b0f
DM
293tasks.
294
295
296Examples
297~~~~~~~~
298
299Add storage pools
300
301 pvesm add <TYPE> <STORAGE_ID> <OPTIONS>
302 pvesm add dir <STORAGE_ID> --path <PATH>
303 pvesm add nfs <STORAGE_ID> --path <PATH> --server <SERVER> --export <EXPORT>
304 pvesm add lvm <STORAGE_ID> --vgname <VGNAME>
305 pvesm add iscsi <STORAGE_ID> --portal <HOST[:PORT]> --target <TARGET>
306
307Disable storage pools
308
309 pvesm set <STORAGE_ID> --disable 1
310
311Enable storage pools
312
313 pvesm set <STORAGE_ID> --disable 0
314
315Change/set storage options
316
317 pvesm set <STORAGE_ID> <OPTIONS>
318 pvesm set <STORAGE_ID> --shared 1
319 pvesm set local --format qcow2
320 pvesm set <STORAGE_ID> --content iso
321
322Remove storage pools. This does not delete any data, and does not
323disconnect or unmount anything. It just removes the storage
324configuration.
325
326 pvesm remove <STORAGE_ID>
327
328Allocate volumes
329
330 pvesm alloc <STORAGE_ID> <VMID> <name> <size> [--format <raw|qcow2>]
331
332Allocate a 4G volume in local storage. The name is auto-generated if
333you pass an empty string as `<name>`
334
335 pvesm alloc local <VMID> '' 4G
336
5eba0743 337Free volumes
aa039b0f
DM
338
339 pvesm free <VOLUME_ID>
340
341WARNING: This really destroys all volume data.
342
343List storage status
344
345 pvesm status
346
347List storage contents
348
349 pvesm list <STORAGE_ID> [--vmid <VMID>]
350
351List volumes allocated by VMID
352
353 pvesm list <STORAGE_ID> --vmid <VMID>
354
355List iso images
356
357 pvesm list <STORAGE_ID> --iso
358
359List container templates
360
361 pvesm list <STORAGE_ID> --vztmpl
362
5eba0743 363Show file system path for a volume
aa039b0f
DM
364
365 pvesm path <VOLUME_ID>
366
13962741
DJ
367Exporting the volume `local:103/vm-103-disk-0.qcow2` to the file `target`.
368This is mostly used internally with `pvesm import`.
369The stream format qcow2+size is different to the qcow2 format.
370Consequently, the exported file cannot simply be attached to a VM.
371This also holds for the other formats.
372
373 pvesm export local:103/vm-103-disk-0.qcow2 qcow2+size target --with-snapshots 1
374
deb4673f
DM
375ifdef::wiki[]
376
377See Also
378--------
379
f532afb7 380* link:/wiki/Storage:_Directory[Storage: Directory]
deb4673f 381
f532afb7 382* link:/wiki/Storage:_GlusterFS[Storage: GlusterFS]
deb4673f 383
f532afb7 384* link:/wiki/Storage:_User_Mode_iSCSI[Storage: User Mode iSCSI]
deb4673f 385
f532afb7 386* link:/wiki/Storage:_iSCSI[Storage: iSCSI]
deb4673f 387
f532afb7 388* link:/wiki/Storage:_LVM[Storage: LVM]
deb4673f 389
f532afb7 390* link:/wiki/Storage:_LVM_Thin[Storage: LVM Thin]
deb4673f 391
f532afb7 392* link:/wiki/Storage:_NFS[Storage: NFS]
deb4673f 393
de14ebff
WL
394* link:/wiki/Storage:_CIFS[Storage: CIFS]
395
7b43e874 396* link:/wiki/Storage:_Proxmox_Backup_Server[Storage: Proxmox Backup Server]
93e1d33e 397
f532afb7 398* link:/wiki/Storage:_RBD[Storage: RBD]
deb4673f 399
ef488ba5 400* link:/wiki/Storage:_CephFS[Storage: CephFS]
a82d3cc3 401
f532afb7 402* link:/wiki/Storage:_ZFS[Storage: ZFS]
deb4673f 403
032e755c 404* link:/wiki/Storage:_ZFS_over_iSCSI[Storage: ZFS over iSCSI]
deb4673f
DM
405
406endif::wiki[]
407
251666be
DM
408ifndef::wiki[]
409
aa039b0f
DM
410// backend documentation
411
412include::pve-storage-dir.adoc[]
413
414include::pve-storage-nfs.adoc[]
415
de14ebff
WL
416include::pve-storage-cifs.adoc[]
417
93e1d33e
TL
418include::pve-storage-pbs.adoc[]
419
aa039b0f
DM
420include::pve-storage-glusterfs.adoc[]
421
422include::pve-storage-zfspool.adoc[]
423
424include::pve-storage-lvm.adoc[]
425
9801e1c3
DM
426include::pve-storage-lvmthin.adoc[]
427
aa039b0f
DM
428include::pve-storage-iscsi.adoc[]
429
430include::pve-storage-iscsidirect.adoc[]
431
432include::pve-storage-rbd.adoc[]
433
669bce8b
AA
434include::pve-storage-cephfs.adoc[]
435
aa039b0f 436
251666be 437
aa039b0f
DM
438ifdef::manvolnum[]
439include::pve-copyright.adoc[]
440endif::manvolnum[]
441
251666be
DM
442endif::wiki[]
443