]> git.proxmox.com Git - pve-docs.git/blame - pvesm.adoc
storage: make description column wider
[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
93e1d33e 75|Proxmox Backup |pbs |both |yes |n/a |beta
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
5eba0743 229Maximum number of backup files per VM. Use `0` for unlimited.
aa039b0f
DM
230
231format::
232
233Default image format (`raw|qcow2|vmdk`)
234
235
236WARNING: It is not advisable to use the same storage pool on different
871e1fd6 237{pve} clusters. Some storage operation need exclusive access to the
aa039b0f 238storage, so proper locking is required. While this is implemented
871e1fd6 239within a cluster, it does not work between different clusters.
aa039b0f
DM
240
241
242Volumes
243-------
244
245We use a special notation to address storage data. When you allocate
871e1fd6 246data from a storage pool, it returns such a volume identifier. A volume
aa039b0f
DM
247is identified by the `<STORAGE_ID>`, followed by a storage type
248dependent volume name, separated by colon. A valid `<VOLUME_ID>` looks
249like:
250
251 local:230/example-image.raw
252
253 local:iso/debian-501-amd64-netinst.iso
254
255 local:vztmpl/debian-5.0-joomla_1.5.9-1_i386.tar.gz
256
257 iscsi-storage:0.0.2.scsi-14f504e46494c4500494b5042546d2d646744372d31616d61
258
5eba0743 259To get the file system path for a `<VOLUME_ID>` use:
aa039b0f
DM
260
261 pvesm path <VOLUME_ID>
262
5eba0743 263
aa039b0f
DM
264Volume Ownership
265~~~~~~~~~~~~~~~~
266
8c1189b6 267There exists an ownership relation for `image` type volumes. Each such
aa039b0f
DM
268volume is owned by a VM or Container. For example volume
269`local:230/example-image.raw` is owned by VM 230. Most storage
270backends encodes this ownership information into the volume name.
271
871e1fd6 272When you remove a VM or Container, the system also removes all
aa039b0f
DM
273associated volumes which are owned by that VM or Container.
274
275
276Using the Command Line Interface
277--------------------------------
278
871e1fd6
FG
279It is recommended to familiarize yourself with the concept behind storage
280pools and volume identifiers, but in real life, you are not forced to do any
aa039b0f
DM
281of those low level operations on the command line. Normally,
282allocation and removal of volumes is done by the VM and Container
283management tools.
284
8c1189b6
FG
285Nevertheless, there is a command line tool called `pvesm` (``{pve}
286Storage Manager''), which is able to perform common storage management
aa039b0f
DM
287tasks.
288
289
290Examples
291~~~~~~~~
292
293Add storage pools
294
295 pvesm add <TYPE> <STORAGE_ID> <OPTIONS>
296 pvesm add dir <STORAGE_ID> --path <PATH>
297 pvesm add nfs <STORAGE_ID> --path <PATH> --server <SERVER> --export <EXPORT>
298 pvesm add lvm <STORAGE_ID> --vgname <VGNAME>
299 pvesm add iscsi <STORAGE_ID> --portal <HOST[:PORT]> --target <TARGET>
300
301Disable storage pools
302
303 pvesm set <STORAGE_ID> --disable 1
304
305Enable storage pools
306
307 pvesm set <STORAGE_ID> --disable 0
308
309Change/set storage options
310
311 pvesm set <STORAGE_ID> <OPTIONS>
312 pvesm set <STORAGE_ID> --shared 1
313 pvesm set local --format qcow2
314 pvesm set <STORAGE_ID> --content iso
315
316Remove storage pools. This does not delete any data, and does not
317disconnect or unmount anything. It just removes the storage
318configuration.
319
320 pvesm remove <STORAGE_ID>
321
322Allocate volumes
323
324 pvesm alloc <STORAGE_ID> <VMID> <name> <size> [--format <raw|qcow2>]
325
326Allocate a 4G volume in local storage. The name is auto-generated if
327you pass an empty string as `<name>`
328
329 pvesm alloc local <VMID> '' 4G
330
5eba0743 331Free volumes
aa039b0f
DM
332
333 pvesm free <VOLUME_ID>
334
335WARNING: This really destroys all volume data.
336
337List storage status
338
339 pvesm status
340
341List storage contents
342
343 pvesm list <STORAGE_ID> [--vmid <VMID>]
344
345List volumes allocated by VMID
346
347 pvesm list <STORAGE_ID> --vmid <VMID>
348
349List iso images
350
351 pvesm list <STORAGE_ID> --iso
352
353List container templates
354
355 pvesm list <STORAGE_ID> --vztmpl
356
5eba0743 357Show file system path for a volume
aa039b0f
DM
358
359 pvesm path <VOLUME_ID>
360
13962741
DJ
361Exporting the volume `local:103/vm-103-disk-0.qcow2` to the file `target`.
362This is mostly used internally with `pvesm import`.
363The stream format qcow2+size is different to the qcow2 format.
364Consequently, the exported file cannot simply be attached to a VM.
365This also holds for the other formats.
366
367 pvesm export local:103/vm-103-disk-0.qcow2 qcow2+size target --with-snapshots 1
368
deb4673f
DM
369ifdef::wiki[]
370
371See Also
372--------
373
f532afb7 374* link:/wiki/Storage:_Directory[Storage: Directory]
deb4673f 375
f532afb7 376* link:/wiki/Storage:_GlusterFS[Storage: GlusterFS]
deb4673f 377
f532afb7 378* link:/wiki/Storage:_User_Mode_iSCSI[Storage: User Mode iSCSI]
deb4673f 379
f532afb7 380* link:/wiki/Storage:_iSCSI[Storage: iSCSI]
deb4673f 381
f532afb7 382* link:/wiki/Storage:_LVM[Storage: LVM]
deb4673f 383
f532afb7 384* link:/wiki/Storage:_LVM_Thin[Storage: LVM Thin]
deb4673f 385
f532afb7 386* link:/wiki/Storage:_NFS[Storage: NFS]
deb4673f 387
de14ebff
WL
388* link:/wiki/Storage:_CIFS[Storage: CIFS]
389
93e1d33e
TL
390* link:/wiki/Storage:_CIFS[Storage: Proxmox Backup Server]
391
f532afb7 392* link:/wiki/Storage:_RBD[Storage: RBD]
deb4673f 393
ef488ba5 394* link:/wiki/Storage:_CephFS[Storage: CephFS]
a82d3cc3 395
f532afb7 396* link:/wiki/Storage:_ZFS[Storage: ZFS]
deb4673f 397
032e755c 398* link:/wiki/Storage:_ZFS_over_iSCSI[Storage: ZFS over iSCSI]
deb4673f
DM
399
400endif::wiki[]
401
251666be
DM
402ifndef::wiki[]
403
aa039b0f
DM
404// backend documentation
405
406include::pve-storage-dir.adoc[]
407
408include::pve-storage-nfs.adoc[]
409
de14ebff
WL
410include::pve-storage-cifs.adoc[]
411
93e1d33e
TL
412include::pve-storage-pbs.adoc[]
413
aa039b0f
DM
414include::pve-storage-glusterfs.adoc[]
415
416include::pve-storage-zfspool.adoc[]
417
418include::pve-storage-lvm.adoc[]
419
9801e1c3
DM
420include::pve-storage-lvmthin.adoc[]
421
aa039b0f
DM
422include::pve-storage-iscsi.adoc[]
423
424include::pve-storage-iscsidirect.adoc[]
425
426include::pve-storage-rbd.adoc[]
427
669bce8b
AA
428include::pve-storage-cephfs.adoc[]
429
aa039b0f 430
251666be 431
aa039b0f
DM
432ifdef::manvolnum[]
433include::pve-copyright.adoc[]
434endif::manvolnum[]
435
251666be
DM
436endif::wiki[]
437