]> git.proxmox.com Git - pve-docs.git/blame - pvesm.adoc
scan-adoc-refs: improve title parser, store doctype
[pve-docs.git] / pvesm.adoc
CommitLineData
aa039b0f
DM
1[[chapter-storage]]
2ifdef::manvolnum[]
3PVE({manvolnum})
4================
38fd0958 5include::attributes.txt[]
aa039b0f 6
5f09af76
DM
7:pve-toplevel:
8
aa039b0f
DM
9NAME
10----
11
12pvesm - Proxmox VE Storage Manager
13
14
49a5e11c 15SYNOPSIS
aa039b0f
DM
16--------
17
18include::pvesm.1-synopsis.adoc[]
19
20DESCRIPTION
21-----------
22endif::manvolnum[]
23
24ifndef::manvolnum[]
25{pve} Storage
26=============
38fd0958 27include::attributes.txt[]
aa039b0f
DM
28endif::manvolnum[]
29
5f09af76
DM
30ifdef::wiki[]
31:pve-toplevel:
32endif::wiki[]
33
aa039b0f
DM
34The {pve} storage model is very flexible. Virtual machine images
35can either be stored on one or several local storages, or on shared
36storage like NFS or iSCSI (NAS, SAN). There are no limits, and you may
37configure as many storage pools as you like. You can use all
38storage technologies available for Debian Linux.
39
40One major benefit of storing VMs on shared storage is the ability to
41live-migrate running machines without any downtime, as all nodes in
42the cluster have direct access to VM disk images. There is no need to
43copy VM image data, so live migration is very fast in that case.
44
8c1189b6 45The storage library (package `libpve-storage-perl`) uses a flexible
aa039b0f
DM
46plugin system to provide a common interface to all storage types. This
47can be easily adopted to include further storage types in future.
48
49
50Storage Types
51-------------
52
53There are basically two different classes of storage types:
54
55Block level storage::
56
57Allows to store large 'raw' images. It is usually not possible to store
58other files (ISO, backups, ..) on such storage types. Most modern
59block level storage implementations support snapshots and clones.
60RADOS, Sheepdog and DRBD are distributed systems, replicating storage
61data to different nodes.
62
63File level storage::
64
65They allow access to a full featured (POSIX) file system. They are
66more flexible, and allows you to store any content type. ZFS is
67probably the most advanced system, and it has full support for
68snapshots and clones.
69
70
71.Available storage types
72[width="100%",cols="<d,1*m,4*d",options="header"]
73|===========================================================
74|Description |PVE type |Level |Shared|Snapshots|Stable
75|ZFS (local) |zfspool |file |no |yes |yes
76|Directory |dir |file |no |no |yes
77|NFS |nfs |file |yes |no |yes
78|GlusterFS |glusterfs |file |yes |no |yes
79|LVM |lvm |block |no |no |yes
9801e1c3 80|LVM-thin |lvmthin |block |no |yes |yes
aa039b0f
DM
81|iSCSI/kernel |iscsi |block |yes |no |yes
82|iSCSI/libiscsi |iscsidirect |block |yes |no |yes
83|Ceph/RBD |rbd |block |yes |yes |yes
84|Sheepdog |sheepdog |block |yes |yes |beta
85|DRBD9 |drbd |block |yes |yes |beta
86|ZFS over iSCSI |zfs |block |yes |yes |yes
87|=========================================================
88
89TIP: It is possible to use LVM on top of an iSCSI storage. That way
8c1189b6 90you get a `shared` LVM storage.
aa039b0f 91
5eba0743
FG
92
93Thin Provisioning
2afe468c 94~~~~~~~~~~~~~~~~~
ebc15cbc 95
8c1189b6
FG
96A number of storages, and the Qemu image format `qcow2`, support 'thin
97provisioning'. With thin provisioning activated, only the blocks that
2afe468c 98the guest system actually use will be written to the storage.
ebc15cbc 99
2afe468c 100Say for instance you create a VM with a 32GB hard disk, and after
5eba0743 101installing the guest system OS, the root file system of the VM contains
2afe468c
DM
1023 GB of data. In that case only 3GB are written to the storage, even
103if the guest VM sees a 32GB hard drive. In this way thin provisioning
104allows you to create disk images which are larger than the currently
105available storage blocks. You can create large disk images for your
106VMs, and when the need arises, add more disks to your storage without
5eba0743 107resizing the VMs' file systems.
2afe468c 108
8c1189b6 109All storage types which have the ``Snapshots'' feature also support thin
2afe468c 110provisioning.
ebc15cbc 111
ba1d96fd
DM
112CAUTION: If a storage runs full, all guests using volumes on that
113storage receives IO error. This can cause file system inconsistencies
114and may corrupt your data. So it is advisable to avoid
115over-provisioning of your storage resources, or carefully observe
116free space to avoid such conditions.
ebc15cbc 117
5eba0743 118
aa039b0f
DM
119Storage Configuration
120---------------------
121
122All {pve} related storage configuration is stored within a single text
8c1189b6 123file at `/etc/pve/storage.cfg`. As this file is within `/etc/pve/`, it
aa039b0f
DM
124gets automatically distributed to all cluster nodes. So all nodes
125share the same storage configuration.
126
127Sharing storage configuration make perfect sense for shared storage,
8c1189b6 128because the same ``shared'' storage is accessible from all nodes. But is
aa039b0f
DM
129also useful for local storage types. In this case such local storage
130is available on all nodes, but it is physically different and can have
131totally different content.
132
5eba0743 133
aa039b0f
DM
134Storage Pools
135~~~~~~~~~~~~~
136
5eba0743
FG
137Each storage pool has a `<type>`, and is uniquely identified by its
138`<STORAGE_ID>`. A pool configuration looks like this:
aa039b0f
DM
139
140----
141<type>: <STORAGE_ID>
142 <property> <value>
143 <property> <value>
144 ...
145----
146
aa039b0f 147The `<type>: <STORAGE_ID>` line starts the pool definition, which is then
871e1fd6
FG
148followed by a list of properties. Most properties have values, but some of
149them come with reasonable default. In that 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
aa039b0f
DM
193this property to select for what this storage is used for.
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
215shared::
216
217Mark storage as shared.
218
219disable::
220
221You can use this flag to disable the storage completely.
222
223maxfiles::
224
5eba0743 225Maximum number of backup files per VM. Use `0` for unlimited.
aa039b0f
DM
226
227format::
228
229Default image format (`raw|qcow2|vmdk`)
230
231
232WARNING: It is not advisable to use the same storage pool on different
871e1fd6 233{pve} clusters. Some storage operation need exclusive access to the
aa039b0f 234storage, so proper locking is required. While this is implemented
871e1fd6 235within a cluster, it does not work between different clusters.
aa039b0f
DM
236
237
238Volumes
239-------
240
241We use a special notation to address storage data. When you allocate
871e1fd6 242data from a storage pool, it returns such a volume identifier. A volume
aa039b0f
DM
243is identified by the `<STORAGE_ID>`, followed by a storage type
244dependent volume name, separated by colon. A valid `<VOLUME_ID>` looks
245like:
246
247 local:230/example-image.raw
248
249 local:iso/debian-501-amd64-netinst.iso
250
251 local:vztmpl/debian-5.0-joomla_1.5.9-1_i386.tar.gz
252
253 iscsi-storage:0.0.2.scsi-14f504e46494c4500494b5042546d2d646744372d31616d61
254
5eba0743 255To get the file system path for a `<VOLUME_ID>` use:
aa039b0f
DM
256
257 pvesm path <VOLUME_ID>
258
5eba0743 259
aa039b0f
DM
260Volume Ownership
261~~~~~~~~~~~~~~~~
262
8c1189b6 263There exists an ownership relation for `image` type volumes. Each such
aa039b0f
DM
264volume is owned by a VM or Container. For example volume
265`local:230/example-image.raw` is owned by VM 230. Most storage
266backends encodes this ownership information into the volume name.
267
871e1fd6 268When you remove a VM or Container, the system also removes all
aa039b0f
DM
269associated volumes which are owned by that VM or Container.
270
271
272Using the Command Line Interface
273--------------------------------
274
871e1fd6
FG
275It is recommended to familiarize yourself with the concept behind storage
276pools and volume identifiers, but in real life, you are not forced to do any
aa039b0f
DM
277of those low level operations on the command line. Normally,
278allocation and removal of volumes is done by the VM and Container
279management tools.
280
8c1189b6
FG
281Nevertheless, there is a command line tool called `pvesm` (``{pve}
282Storage Manager''), which is able to perform common storage management
aa039b0f
DM
283tasks.
284
285
286Examples
287~~~~~~~~
288
289Add storage pools
290
291 pvesm add <TYPE> <STORAGE_ID> <OPTIONS>
292 pvesm add dir <STORAGE_ID> --path <PATH>
293 pvesm add nfs <STORAGE_ID> --path <PATH> --server <SERVER> --export <EXPORT>
294 pvesm add lvm <STORAGE_ID> --vgname <VGNAME>
295 pvesm add iscsi <STORAGE_ID> --portal <HOST[:PORT]> --target <TARGET>
296
297Disable storage pools
298
299 pvesm set <STORAGE_ID> --disable 1
300
301Enable storage pools
302
303 pvesm set <STORAGE_ID> --disable 0
304
305Change/set storage options
306
307 pvesm set <STORAGE_ID> <OPTIONS>
308 pvesm set <STORAGE_ID> --shared 1
309 pvesm set local --format qcow2
310 pvesm set <STORAGE_ID> --content iso
311
312Remove storage pools. This does not delete any data, and does not
313disconnect or unmount anything. It just removes the storage
314configuration.
315
316 pvesm remove <STORAGE_ID>
317
318Allocate volumes
319
320 pvesm alloc <STORAGE_ID> <VMID> <name> <size> [--format <raw|qcow2>]
321
322Allocate a 4G volume in local storage. The name is auto-generated if
323you pass an empty string as `<name>`
324
325 pvesm alloc local <VMID> '' 4G
326
5eba0743 327Free volumes
aa039b0f
DM
328
329 pvesm free <VOLUME_ID>
330
331WARNING: This really destroys all volume data.
332
333List storage status
334
335 pvesm status
336
337List storage contents
338
339 pvesm list <STORAGE_ID> [--vmid <VMID>]
340
341List volumes allocated by VMID
342
343 pvesm list <STORAGE_ID> --vmid <VMID>
344
345List iso images
346
347 pvesm list <STORAGE_ID> --iso
348
349List container templates
350
351 pvesm list <STORAGE_ID> --vztmpl
352
5eba0743 353Show file system path for a volume
aa039b0f
DM
354
355 pvesm path <VOLUME_ID>
356
deb4673f
DM
357ifdef::wiki[]
358
359See Also
360--------
361
f532afb7 362* link:/wiki/Storage:_Directory[Storage: Directory]
deb4673f 363
f532afb7 364* link:/wiki/Storage:_GlusterFS[Storage: GlusterFS]
deb4673f 365
f532afb7 366* link:/wiki/Storage:_User_Mode_iSCSI[Storage: User Mode iSCSI]
deb4673f 367
f532afb7 368* link:/wiki/Storage:_iSCSI[Storage: iSCSI]
deb4673f 369
f532afb7 370* link:/wiki/Storage:_LVM[Storage: LVM]
deb4673f 371
f532afb7 372* link:/wiki/Storage:_LVM_Thin[Storage: LVM Thin]
deb4673f 373
f532afb7 374* link:/wiki/Storage:_NFS[Storage: NFS]
deb4673f 375
f532afb7 376* link:/wiki/Storage:_RBD[Storage: RBD]
deb4673f 377
f532afb7 378* link:/wiki/Storage:_ZFS[Storage: ZFS]
deb4673f 379
032e755c 380* link:/wiki/Storage:_ZFS_over_iSCSI[Storage: ZFS over iSCSI]
deb4673f
DM
381
382endif::wiki[]
383
251666be
DM
384ifndef::wiki[]
385
aa039b0f
DM
386// backend documentation
387
388include::pve-storage-dir.adoc[]
389
390include::pve-storage-nfs.adoc[]
391
392include::pve-storage-glusterfs.adoc[]
393
394include::pve-storage-zfspool.adoc[]
395
396include::pve-storage-lvm.adoc[]
397
9801e1c3
DM
398include::pve-storage-lvmthin.adoc[]
399
aa039b0f
DM
400include::pve-storage-iscsi.adoc[]
401
402include::pve-storage-iscsidirect.adoc[]
403
404include::pve-storage-rbd.adoc[]
405
406
251666be 407
aa039b0f
DM
408ifdef::manvolnum[]
409include::pve-copyright.adoc[]
410endif::manvolnum[]
411
251666be
DM
412endif::wiki[]
413