X-Git-Url: https://git.proxmox.com/?p=pve-docs.git;a=blobdiff_plain;f=local-lvm.adoc;h=8ebc123516e7a3c1f318fadeb360d65a851bfa23;hp=5d0ba7b63f175b2ad2f1c54f2cec39f0ae90e6d1;hb=9661bfe35889265aa9610267017331f4341ac56c;hpb=08152ae6f2472703f77953a6e12a6d8d361db1a7 diff --git a/local-lvm.adoc b/local-lvm.adoc index 5d0ba7b..8ebc123 100644 --- a/local-lvm.adoc +++ b/local-lvm.adoc @@ -1,10 +1,137 @@ Logical Volume Manager (LVM) ---------------------------- +ifdef::wiki[] +:pve-toplevel: +endif::wiki[] Most people install {pve} directly on a local disk. The {pve} -installation CD offers several options for local disk management. The -current default setup uses LVM and 'ext4' for the root -partition. LVM-thin is used for VM images, because this has efficient -support for snapshots and clones. +installation CD offers several options for local disk management, and +the current default setup uses LVM. The installer let you select a +single disk for such setup, and uses that disk as physical volume for +the **V**olume **G**roup (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 **L**ogical **V**olumes (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 operation 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 {pve} 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 **E**FI **S**ystem +**P**artition (ESP), which makes it possible to boot on EFI systems. + + +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 **P**hysical **V**olume (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 -V / + +A real world example: + + # lvcreate -n vz -V 10G pve/data + +Now a filesystem must be created on the LV. + + # mkfs.ext4 /dev/data/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 can be achieved with the following +command. + + # lvresize --size + --poolmetadatasize + / + +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