788 字
4 分钟
PVE 的 local 和 local-lvm
2025-08-23
2025-09-07

前言#

对于刚接触 PVE 的来说,会对这两个存储点产生相当大的疑问。


PVE 的主分区结构#

首先我们看下 PVE 的默认安装磁盘,是一个基于 LVM 的结构。

Terminal window
root@pve:~# fdisk -l
Disk /dev/sda: 80 GiB, 85899345920 bytes, 167772160 sectors
。。。
Device Start End Sectors Size Type
/dev/sda1 34 2047 2014 1007K BIOS boot
/dev/sda2 2048 1050623 1048576 512M EFI System
/dev/sda3 1050624 167772126 166721503 79.5G Linux LVM

其中

  • pve-root 作为根目录
  • pve-swap 作为虚拟内存
  • pve-data 作为磁盘镜像存储
Terminal window
root@pve:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 1007K 0 part
├─sda2 8:2 0 512M 0 part
└─sda3 8:3 0 79.5G 0 part
├─pve-swap 253:0 0 4G 0 lvm [SWAP]
├─pve-root 253:1 0 19.8G 0 lvm /
├─pve-data_tmeta 253:2 0 1G 0 lvm
└─pve-data 253:4 0 43.9G 0 lvm
└─pve-data_tdata 253:3 0 43.9G 0 lvm
└─pve-data 253:4 0 43.9G 0 lvm

lvm-data#

而 LVM 之中,还建了一个 thinpool,名为 data。
什么叫 lvm-thin 可以参考 LVM存储虚拟化_Thin-provisioned.pdf
使用 lvm-thin 可以实现类似于 vSphere 的精简置备,还可以进行快照,很方便调整空间。

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

但是 lvm-thin 有一个不友好的地方。虚拟机储存到 lvm-thin,是作为块设备。所以不能直接拷贝文件到其他地方去做备份或者迁移。


local#

通过查看存储配置文件,观察到 local 是做为一个 dir 类型的目录,用来存放 iso,备份文件;local-lvm 是 lvmthin,用来存储虚拟机磁盘。

Terminal window
root@pve:~# cat /etc/pve/storage.cfg
dir: local
path /var/lib/vz
content iso,vztmpl,backup
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images

因为是 lvm,那么其实可以动态调整磁盘空间,例如根目录小了,可以缩小 lvm-thin 的空间,然后扩大到根目录。


删除 lvm-thin#

由于 qcow2 的优秀,且属于文件类型,所以并不建议使用 lvm-thin 作为其存储底层。
这里给一教程,删除 local-lvm,并且将所有空间给到 pve-root。

警告

请先确保自己的虚拟机没有位于 lvm-thin 上,若有,请先移动到 local。

编辑 local,勾选所有内容,并确定,然后就可以在虚拟机配置栏,选择磁盘,点击移动磁盘到其他磁盘上就行。

使用命令 lvremove /dev/pve/data 删除 lvm-thin

Terminal window
root@pve:~# lvremove /dev/pve/data
Do you really want to remove active logical volume pve/data? [y/n]: y
Logical volume "data" successfully removed

使用命令 lvextend -rl +100%FREE /dev/pve/root,将 lvm-thin 的空间转移到 pve-root

Terminal window
root@pve:~# lvextend -rl +100%FREE /dev/pve/root
Rounding size to boundary between physical extents: 43.87 GiB.
Size of logical volume pve/root changed from 19.75 GiB (5056 extents) to 63.62 GiB (16287 extents).
Logical volume pve/root successfully resized.

然后再使用df -h查看,根目录已经扩大了。

Terminal window
root@pve:~# df -h
Filesystem Size Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 393M 892K 392M 1% /run
/dev/mapper/pve-root 63G 2.4G 58G 5% /
tmpfs 2.0G 43M 1.9G 3% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/fuse 128M 16K 128M 1% /etc/pve
tmpfs 393M 0 393M 0% /run/user/0

当然删除了 lvm-thin 之后,还要修改一下储存配置。
在 WebUI 上,删除 lvm-thin

这样做了,我们就可以进入目录 /var/lib/vz 查看所有的内容了。

Terminal window
root@pve:~# tree /var/lib/vz/
/var/lib/vz/
├── dump --备份文件
├── images --虚拟机磁盘
├── private
├── snippets --片段
└── template
├── cache --容器模板
├── iso --iso
└── qemu

PVE 的 local 和 local-lvm
https://blog.devnak.win/posts/local_and_local-lvm_on_pve/
作者
Beyonme Devnak
发布于
2025-08-23
许可协议
CC BY-NC-SA 4.0