Logical Volume Manager (LVM): Difference between revisions

From Proxmox VE
Jump to navigation Jump to search
No edit summary
No edit summary
 
(6 intermediate revisions by 2 users not shown)
Line 6: Line 6:
Most people install Proxmox VE directly on a local disk. The Proxmox VE
Most people install Proxmox VE directly on a local disk. The Proxmox VE
installation CD offers several options for local disk management, and
installation CD offers several options for local disk management, and
the current default setup uses LVM. The installer let you select a
the current default setup uses LVM. The installer lets you select a
single disk for such setup, and uses that disk as physical volume for
single disk for such setup, and uses that disk as physical volume for
the Volume Group (VG) pve. The following output is from a
the Volume Group (VG) pve. The following output is from a
Line 24: Line 24:
   swap pve  -wi-ao---- 896.00m
   swap pve  -wi-ao---- 896.00m
root
root
Formatted as ext4, and contains the operation system.
Formatted as ext4, and contains the operating system.
swap
swap
Swap partition
Swap partition
Line 31: Line 31:
images. LVM-thin is preferable for this task, because it offers
images. LVM-thin is preferable for this task, because it offers
efficient support for snapshots and clones.
efficient support for snapshots and clones.
For Proxmox VE versions up to 4.1, the installer creates a standard logical
volume called “data”, which is mounted at /var/lib/vz.
Starting from version 4.2, the logical volume “data” is a LVM-thin pool,
used to store block based guest images, and /var/lib/vz is simply a
directory on the root file system.
Hardware
Hardware
We highly recommend to use a hardware RAID controller (with BBU) for
We highly recommend to use a hardware RAID controller (with BBU) for
Line 40: Line 45:
We install two boot loaders by default. The first partition contains
We install two boot loaders by default. The first partition contains
the standard GRUB boot loader. The second partition is an EFI System
the standard GRUB boot loader. The second partition is an EFI System
Partition (ESP), which makes it possible to boot on EFI systems.
Partition (ESP), which makes it possible to boot on EFI systems and to
apply persistent firmware updates from the
user space.
Creating a Volume Group
Let’s assume we have an empty disk /dev/sdb, onto which we want to
create a volume group named “vmdata”.
Please note that the following commands will destroy all
existing data on /dev/sdb.
First create a partition.
# sgdisk -N 1 /dev/sdb
Create a Physical Volume (PV) without confirmation and 250K
metadatasize.
# pvcreate --metadatasize 250k -y -ff /dev/sdb1
Create a volume group named “vmdata” on /dev/sdb1
# vgcreate vmdata /dev/sdb1
Creating an extra LV for /var/lib/vz
This can be easily done by creating a new thin LV.
# lvcreate -n <Name> -V <Size[M,G,T]> <VG>/<LVThin_pool>
A real world example:
# lvcreate -n vz -V 10G pve/data
Now a filesystem must be created on the LV.
# mkfs.ext4 /dev/pve/vz
At last this has to be mounted.
be sure that /var/lib/vz is empty. On a default
installation it’s not.
To make it always accessible add the following line in /etc/fstab.
# echo '/dev/pve/vz /var/lib/vz ext4 defaults 0 2' >> /etc/fstab
Resizing the thin pool
Resize the LV and the metadata pool with the following command:
# lvresize --size +<size[\M,G,T]> --poolmetadatasize +<size[\M,G]> <VG>/<LVThin_pool>
When extending the data pool, the metadata pool must also be
extended.
Create a LVM-thin pool
A thin pool has to be created on top of a volume group.
How to create a volume group see Section LVM.
# lvcreate -L 80G -T -n vmstore vmdata
</pvehide>
</pvehide>
<!--PVE_IMPORT_END_MARKER-->
<!--PVE_IMPORT_END_MARKER-->
{{#pvedocs:local-lvm-plain.html}}
[[Category:Reference Documentation]]

Latest revision as of 14:11, 23 November 2023

Most people install Proxmox VE directly on a local disk. The Proxmox VE installation CD offers several options for local disk management, and the current default setup uses LVM. The installer lets you select a single disk for such setup, and uses that disk as physical volume for the Volume Group (VG) pve. The following output is from a test installation using a small 8GB disk:

# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sda3  pve  lvm2 a--  7.87g 876.00m

# vgs
  VG   #PV #LV #SN Attr   VSize VFree
  pve    1   3   0 wz--n- 7.87g 876.00m

The installer allocates three Logical Volumes (LV) inside this VG:

# lvs
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%
  data pve  twi-a-tz--   4.38g             0.00   0.63
  root pve  -wi-ao----   1.75g
  swap pve  -wi-ao---- 896.00m
root

Formatted as ext4, and contains the operating system.

swap

Swap partition

data

This volume uses LVM-thin, and is used to store VM images. LVM-thin is preferable for this task, because it offers efficient support for snapshots and clones.

For Proxmox VE versions up to 4.1, the installer creates a standard logical volume called “data”, which is mounted at /var/lib/vz.

Starting from version 4.2, the logical volume “data” is a LVM-thin pool, used to store block based guest images, and /var/lib/vz is simply a directory on the root file system.

Hardware

We highly recommend to use a hardware RAID controller (with BBU) for such setups. This increases performance, provides redundancy, and make disk replacements easier (hot-pluggable).

LVM itself does not need any special hardware, and memory requirements are very low.

Bootloader

We install two boot loaders by default. The first partition contains the standard GRUB boot loader. The second partition is an EFI System Partition (ESP), which makes it possible to boot on EFI systems and to apply persistent firmware updates from the user space.

Creating a Volume Group

Let’s assume we have an empty disk /dev/sdb, onto which we want to create a volume group named “vmdata”.

Caution Please note that the following commands will destroy all existing data on /dev/sdb.

First create a partition.

# sgdisk -N 1 /dev/sdb

Create a Physical Volume (PV) without confirmation and 250K metadatasize.

# pvcreate --metadatasize 250k -y -ff /dev/sdb1

Create a volume group named “vmdata” on /dev/sdb1

# vgcreate vmdata /dev/sdb1

Creating an extra LV for /var/lib/vz

This can be easily done by creating a new thin LV.

# lvcreate -n <Name> -V <Size[M,G,T]> <VG>/<LVThin_pool>

A real world example:

# lvcreate -n vz -V 10G pve/data

Now a filesystem must be created on the LV.

# mkfs.ext4 /dev/pve/vz

At last this has to be mounted.

Warning be sure that /var/lib/vz is empty. On a default installation it’s not.

To make it always accessible add the following line in /etc/fstab.

# echo '/dev/pve/vz /var/lib/vz ext4 defaults 0 2' >> /etc/fstab

Resizing the thin pool

Resize the LV and the metadata pool with the following command:

# lvresize --size +<size[\M,G,T]> --poolmetadatasize +<size[\M,G]> <VG>/<LVThin_pool>
Note When extending the data pool, the metadata pool must also be extended.

Create a LVM-thin pool

A thin pool has to be created on top of a volume group. How to create a volume group see Section LVM.

# lvcreate -L 80G -T -n vmstore vmdata