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