KB0029.将Proxmox VE的Local-LVM修改成目录存储

Local-LVM 和 目录存储的比较

Proxmox VE 使用默认配置安装,会在硬盘上安装LVM,如果硬盘硬盘超过200G,大约会划分100G用于 root,剩余部分用于 data。 如果空间不足200GB,会按照比例,减少 root 和 data 的空间。 其中data 以lvm-thin 方式管理数据,在 Proxmox VE的数据中心中登记为 local-lvm 存储。

root@pve:~# lvs
  LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  data pve twi-a-tz--  45.24g             0.00   1.59                            
  root pve -wi-ao---- <35.88g                                                    
  swap pve -wi-ao----   4.00g                                                    

LVM-thin与LVM相比,支持精简配置,链接克隆。 由于LVM-thin是通过逻辑卷管理虚拟机的磁盘,缺少文件系统这一层,实际的IO效率比采用 qcow2 + 文件系统方式,性能要低一些。

在云教室场景下,如果采用LVM-thin的存储方式,系统的整体性能会比采用文件系统(qcow2+文件系统)低很多。因此建议将LVM-thin改成目录存储的方式。提高系统的整体IO性能。

典型的50用户云教室配置下(采用960G 企业级 SATA SSD),如果使用LVM-thin模式,桌面的创建速度、还原速度,会明显比采用目录方式慢。 PVE采用目录方式的桌面创建速度,与采用Hyper-V虚拟化时接近。

因此,建议Proxmox VE安装后,将LVM-thin改造成目录存储方式。 目录的文件系统可以选 xfs 或者 ext4 。 xfs 的设计适用于大文件,高IO的应用场景,更适合于虚拟机存储。

情况1:将Local-LVM改造成基于XFS的目录存储

如果主机只有一个SSD,并且这个硬盘用于虚拟机的存储,我们可以把 Local-LVM 改造成基于 XFS 的目录存储。

pvesh delete /storage/local-lvm

umount /dev/pve/data

lvremove /dev/pve/data -y

vgdisplay pve | grep Free | awk '{print "lvcreate -l " $5 " -n data pve -y"}' |bash

mkfs.xfs /dev/pve/data
mkdir /mnt/data
mount /dev/pve/data /mnt/data

echo "/dev/pve/data /mnt/data xfs defaults 0 0" >> /etc/fstab

pvesm add dir data --path=/mnt/data

情况2:删除 local-lvm,空间增加到 local

如果主机还有其他磁盘用于存放虚拟机,我们可以把启动盘上 local-lvm 存储删除,将空间全部分配给 local。 可以使用如下脚本:

pvesh delete /storage/local-lvm

umount /dev/pve/data

lvremove /dev/pve/data -y

lvextend -l +100%FREE -f /dev/pve/root

resize2fs /dev/mapper/pve-root