虚拟机创建LVM的核心答案是:先在虚拟机管理平台添加空虚拟磁盘,再进入系统依次完成分区、PV创建、VG聚合、LV划分和文件系统挂载,重点在于磁盘类型选择与引导配置,否则重启后可能直接进不来系统。
虚拟机创建lvm的完整操作流程
在虚拟机里做LVM,本质上和物理机一样,只是多了一层虚拟硬件,我们以最常见的VMware和KVM环境为例,流程分三步走。
第一步:给虚拟机添加虚拟磁盘
进入虚拟机管理平台,找到你要操作的虚拟机,编辑硬件设置,添加一块新的磁盘,这个环节有三个细节决定你后面会不会白忙活。
- 磁盘总线类型:建议选择SCSI或SATA,而不是默认的IDE,IDE盘在Linux下设备名是
/dev/sda,但很多虚拟化平台不支持IDE热插拔,后续扩容时你会很难受。 - 磁盘模式:如果只是普通数据盘,选择“独立持久”模式,如果虚拟机后续要做快照,则不要选“独立”,否则快照无法包含这块盘。
- 磁盘大小:不要只给10GB,LVM的价值就在于弹性,建议按未来两年数据量估算,一次性把虚拟磁盘容量给足,比如100GB,虚拟磁盘是稀疏文件,占用宿主机空间不大。
添加完成后,在虚拟机系统里确认磁盘是否识别,Linux下执行lsblk,你会看到一块类似/dev/sdb的全新设备,如果没看到,大概率是总线类型不匹配或热插拔未生效,重启虚拟机即可。
第二步:在系统内完成LVM底层配置
拿到裸盘后,我们需要把它变成LVM能用的结构,这里我直接给可复制的命令序列。
创建物理卷(PV)
pvcreate /dev/sdb
如果磁盘之前有分区表,会提示报错,先用dd if=/dev/zero of=/dev/sdb bs=1M count=10清掉头部信息,再执行。
创建卷组(VG)
vgcreate vg_data /dev/sdb
vg_data是我们给卷组起的名字,如果你有多个盘,可以一次性全加进来:vgcreate vg_data /dev/sdb /dev/sdc。
划分逻辑卷(LV)
lvcreate -L 80G -n lv_home vg_data
这条命令从vg_data卷组里划出80GB空间,逻辑卷名叫lv_home,剩余空间先留着,后面扩容用。
格式化文件系统
mkfs.xfs /dev/vg_data/lv_home
如果你用ext4,就执行mkfs.ext4,XFS是多数Linux发行版默认文件系统,支持在线扩容,推荐使用。
第三步:挂载并写入开机配置
创建好文件系统后,先手动挂载测试:
mkdir -p /data mount /dev/vg_data/lv_home /data
这里有个虚拟机上非常容易踩的坑:忘记写/etc/fstab,重启后逻辑卷还在,但目录是空的,写入挂载配置时,不要用设备路径/dev/vg_data/lv_home,因为LVM设备名可能会变,建议用UUID或LVM的绝对路径。
blkid /dev/vg_data/lv_home
拿到UUID后,在/etc/fstab里加上一行类似:
UUID=xxxxxxx /data xfs defaults 0 0
写完后执行mount -a验证,再用reboot重启测试一次,这一步通过,你的LVM才算真正落地。
虚拟机里做lvm的注意事项
物理机上LVM的坑,虚拟机上一样不少,但虚拟机还有自己特有的麻烦,下面这几个问题是我在实际运维中经常遇到的。
磁盘总线类型不一致导致PV失效
虚拟机做热迁移或克隆时,磁盘控制器可能从virtio变成scsi,设备名从/dev/vdb变成/dev/sdb,LVM其实不依赖设备名,它通过UUID识别PV,所以一般没问题,但如果你用/etc/fstab里的设备名挂载,那就等着系统起不来。
解决办法是:挂载一律用UUID,并且在做LVM之前,记录下PV的UUID,用pvs命令查看。
快照和克隆操作会打断LVM元数据
虚拟机平台自带快照功能,但如果你在快照之后对LVM做了变更,比如扩容或新建LV,再回滚快照,LVM元数据和实际数据对不上,会直接报错,行业共识是:做重大LVM操作前,先关闭VM快照,或者提前备份元数据。
备份LVM元数据的命令是:
vgcfgbackup vg_data
生成的备份文件在/etc/lvm/backup/下,回滚时用vgcfgrestore恢复。
虚拟磁盘类型选错导致性能异常
多数虚拟化平台提供“厚置备”和“瘦置备”两种磁盘,如果你在瘦置备磁盘上创建LVM,后续删数据,文件系统释放了空间,但虚拟磁盘文件本身不会缩小,很多虚拟机越用越大,就是这个问题,对于LVM这种随时可能扩容的场景,建议用厚置备延迟清零或直接厚置备,换来的是性能稳定和空间可预测。
时钟漂移会影响LVM时间戳
虚拟机长时间不关机,CPU时间可能漂移,LVM内部记录时间戳,偶尔会出现“卷组元数据不一致”的提示,遇到这种情况,先同步系统时间:
timedatectl set-ntp true
再执行vgscan重新扫描,基本能自愈。
容易忽视的引导分区问题
如果LVM是放在系统盘上,比如你要用LVM装根分区,那在虚拟机安装系统时就要指定好引导加载器,多数发行版默认会在/boot分区写入GRUB,这个分区不要放进LVM,而是做成独立分区,否则升级内核时,GRUB可能找不到内核文件。
虚拟机lvm扩容和缩容怎么操作
LVM最大的优势就是不用停机就能调整分区大小,但虚拟机环境下,扩容前还要先扩展虚拟磁盘本身。
在线扩容逻辑卷的完整步骤
在虚拟化管理平台扩展磁盘大小
编辑虚拟机设置,把磁盘容量从100GB改成150GB,这一步在虚拟机开机状态下也能做,但SCSI设备通常需要重启才能识别新容量,virtio设备则直接在线识别。
识别新容量并扩展PV
进入系统后执行lsblk,如果看到/dev/sdb还是100GB,说明平台热插拔机制没生效,此时用命令重新扫描SCSI总线:
echo 1 > /sys/block/sdb/device/rescan
或者直接重启,识别到新容量后,扩展PV:
pvresize /dev/sdb
执行pvs确认PV大小已经变成150GB。
扩展LV和文件系统
lvextend -L +50G /dev/vg_data/lv_home
然后扩展文件系统,XFS用xfs_growfs /data,ext4用resize2fs /dev/vg_data/lv_home。
整个过程中,虚拟机不需要停机,业务无感知,这就是LVM在虚拟化场景下最香的地方。
缩容逻辑卷的风险控制
缩容比扩容麻烦得多,尤其是XFS文件系统,官方不支持在线缩容,你需要先卸载挂载点,然后缩文件系统,再缩LV。
umount /data xfs_repair -n /dev/vg_data/lv_home # 先检查 xfs_admin -O /dev/vg_data/lv_home # 某些版本才支持缩xfs
多数生产环境遇到空间不够,直接缩容不如新加一块盘做迁移,如果你真的要在虚拟机上缩容LVM,建议:
- 先做完整备份,虚拟机的快照或文件系统级别的快照
- 缩容动作在维护窗口进行,不要在线做
- 缩容结果立刻用
fsck校验文件系统
虚拟机和物理机lvm有什么区别
很多人在学习LVM时问过我,能不能直接用虚拟机练手,我的回答是当然可以,但有些差异你得提前知道,这里用表格给你说明。
| 对比项 | 物理机LVM | 虚拟机LVM |
|---|---|---|
|
底层设备 | SATA/SAS/NVMe物理盘 | 虚拟磁盘文件(VMDK/QCOW2) |
| 扩容前置条件 | 无需额外操作,直接加盘或换盘 | 要先在VM平台扩展虚拟磁盘,系统才能识别 |
| 热插拔支持 | 多数服务器控制器支持 | 取决于虚拟化平台和总线类型(virtio支持较好) |
| 性能一致性 | 平均,无额外开销 | 瘦置备磁盘可能出现性能抖动 |
| 快照回滚 | 需要手动处理LVM快照 | 虚拟化快照和LVM快照可能冲突 |
| 迁移难度 | 更换服务器需重新识别硬件 | 迁移时设备名可能变化,挂载方式要谨慎 |
可以看出,虚拟机里的LVM多了一个“虚拟磁盘层”,所有操作都要先过这一层,理解这一点,你就知道为什么扩容前要先扩展虚拟磁盘。
虚拟机lvm常见问题集锦
虚拟机创建lvm时找不到新硬盘怎么办
排除顺序:先检查虚拟机管理平台是否确认添加磁盘成功,再看系统里总线类型是否被识别,Linux下执行lsscsi看是否存在/dev/sdb,如果存在但fdisk -l看不到,可能是磁盘没有重新分区,执行partprobe刷新分区表,如果完全没有设备,检查虚拟机是否启用了“热添加”功能,没有就重启虚拟机,多数情况下,重启能解决识别问题。
LVM逻辑卷能否跨多个虚拟磁盘
可以,在创建卷组时把多个PV加进同一个VG:
vgcreate vg_data /dev/sdb /dev/sdc
这样LV可以跨磁盘分配空间,但要注意性能,如果两块虚拟磁盘在宿主机上属于不同的存储池,性能差异会直接反映到读写层,生产环境建议用相同类型、相同大小的虚拟盘创建VG,避免局部性能瓶颈。
虚拟机删除后LVM数据怎么恢复
虚拟机删除通常意味着虚拟磁盘文件被删除,LVM数据很难恢复,如果宿主机上磁盘文件被删且未覆盖,可用文件恢复工具尝试找回,但概率不高,更稳妥的做法是:把LVM逻辑卷挂载在另一台虚拟机上,而不是直接做宿主文件恢复,具体操作是将原虚拟磁盘文件作为磁盘附加到新虚拟机,启动后执行vgscan自动识别卷组,然后vgchange -ay激活卷组,挂载逻辑卷即可,前提是磁盘文件还在,且新虚拟机的内核版本不低于原虚拟机。
虚拟机环境下的LVM,核心是处理好虚拟硬件层和LVM元数据的配合,记住这个结论:先管好虚拟磁盘,再管好LVM,只要遵循这一原则,扩容、迁移、备份都会变得轻松可控。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/725032.html





