逻辑卷管理器(LVM)

大多数人会将 {pve} 直接安装在本地磁盘上。{pve} 安装光盘提供了几种本地磁盘管理选项,当前默认设置使用 LVM。安装程序允许你选择单个磁盘进行此类设置,并将该磁盘用作卷组(VG)`pve`的物理卷。以下输出来自使用小型8GB硬盘的测试安装:

# 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

安装程序在此卷组(VG)内分配了三个逻辑卷(LV):

# 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

格式化为`ext4`,并包含操作系统。

交换

交换分区

数据

这个卷使用了LVM-thin,用于存储虚拟机映像。LVM-thin更适合这项任务,因为它为快照和克隆提供了高效的支持。

对于4.1及以前版本的{pve},安装程序会创建一个名为``data''的标准逻辑卷,它被挂载在`/var/lib/vz`路径下。

从版本4.2开始,逻辑卷``data''是一个LVM-thin池,用于存储基于块的客户镜像,而`/var/lib/vz`仅仅是根文件系统上的一个目录。

硬件

我们强烈建议在此类设置中使用具有电池备份单元(BBU)的硬件RAID控制器。这样可以提高性能,提供冗余,并且使硬盘更换更容易(支持热插拔)。

LVM本身不需要任何特殊硬件,且内存需求非常低。

引导加载程序

我们默认安装了两个引导加载程序。第一个分区包含标准的GRUB引导加载程序。第二个分区是一个EFI系统分区(ESP),这使得在EFI系统上启动成为可能,并且可以从用户空间应用持久的固件更新。

创建卷组

假设我们有一个空的硬盘`/dev/sdb`,我们想在其上创建一个名为``vmdata''的卷组。

Caution
请注意,以下命令将会销毁 /dev/sdb 上的所有现有数据。

首先创建一个分区。

sgdisk -N 1 /dev/sdb

创建一个物理卷(PV),不需要确认并且设置250K的元数据大小。

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

在`/dev/sdb1`上创建一个名为``vmdata''的卷组。

# vgcreate vmdata /dev/sdb1

/var/lib/vz 创建一个额外的逻辑卷

这可以通过创建一个新的薄卷(LV)来轻松完成。

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

一个真实世界的例子:

lvcreate -n vz -V 10G pve/data

现在必须在逻辑卷上创建一个文件系统。

mkfs.ext4 /dev/pve/vz

最后这必须被安装。

Warning
请确保`/var/lib/vz`是空的。在默认安装中它不是空的。

要使它始终可访问,请将以下行添加到`/etc/fstab`中。

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

调整细分池的大小

使用以下命令调整LV和元数据池的大小:

lvresize --size +<size[\M,G,T]> --poolmetadatasize +<size[\M,G]> <VG>/<LVThin_pool>

Note
当扩展数据池时,元数据池也必须被扩展。

创建一个LVM-thin池

必须在卷组上创建一个薄池。如何创建卷组,请参见LVM部分。

lvcreate -L 80G -T -n vmstore vmdata