如何从卷组中恢复丢失的逻辑卷(Ubuntu 16.04 LVM2环境)
解决VMWare环境下Ubuntu 16.04 LVM2 root分区升级空间不足问题
我太懂这种焦虑了——本来只是台跑边角服务的家用虚拟机,结果慢慢变成了全家离不开的核心节点,DNS服务更是刚需,升级时突然弹出root空间不足,关键还没做备份?别慌,咱们先搞定眼前的问题,再把欠了好久的备份安排上。
一、临时缓解:先腾出空间完成当前升级
如果现在升级进程卡着了,先清理一些临时文件和无用包救急:
- 清理冗余依赖包:
sudo apt autoremove --purge,这个会删掉系统不再需要的旧依赖和内核包,能腾出不少空间 - 清除下载的安装包缓存:
sudo apt clean,把/var/cache/apt/archives里的.deb包全清掉 - 清理旧系统日志:
sudo journalctl --vacuum-time=3d,只保留最近3天的日志(嫌少可以改成7d,根据需求调整) - 排查大文件:用
sudo du -sh /var/*快速定位/var下的大目录,比如/var/log里的超大日志文件,或者/var/lib/docker的镜像(如果装了Docker的话),针对性删除或转移
二、永久解决:扩容LVM root分区
因为是VMWare+LVM2的组合,扩容步骤很清晰,但操作前一定要给虚拟机打个VMWare快照! 这是你当前唯一的“临时备份”,千万别跳过这步。
步骤1:扩展VMWare虚拟磁盘(VMDK)
- 最好先关闭虚拟机(在线扩容也支持,但离线更稳妥)
- 打开VMWare虚拟机设置,找到对应的硬盘设备,点击「扩展」,输入你想要的新磁盘容量,确认后启动虚拟机
步骤2:识别并整合新增空间到LVM
- 查看磁盘分区情况:
sudo fdisk -l,找到你的系统磁盘(比如/dev/sda),确认末尾有未分配的空间 - 如果原有的LVM物理卷(比如/dev/sda3)本身就是整个磁盘的最后一个分区,直接扩容物理卷:
sudo pvresize /dev/sda3 - 如果需要新建一个LVM分区来承载新增空间:
- 运行
sudo fdisk /dev/sda,按n新建分区,选择分区类型(主分区或逻辑分区),按t修改分区类型为8e(LVM专属类型),最后按w保存分区表 - 创建新的物理卷:
sudo pvcreate /dev/sda4(这里的sda4是你刚新建的分区,根据实际情况调整) - 把新物理卷加入现有卷组:先通过
sudo vgdisplay找到卷组名(默认是ubuntu-vg),然后运行:sudo vgextend ubuntu-vg /dev/sda4
- 运行
步骤3:扩容root逻辑卷和文件系统
- 查看root逻辑卷路径:
sudo lvdisplay,找到对应的逻辑卷(比如/dev/ubuntu-vg/root) - 把卷组里所有剩余空间分配给root逻辑卷:
sudo lvextend -l +100%FREE /dev/ubuntu-vg/root - 同步文件系统到扩容后的逻辑卷:
- 如果是ext4文件系统(Ubuntu 16.04默认):
sudo resize2fs /dev/ubuntu-vg/root - 如果是xfs文件系统:
sudo xfs_growfs /dev/ubuntu-vg/root
- 如果是ext4文件系统(Ubuntu 16.04默认):
三、补上最关键的备份环节(别再拖了!)
既然这台机器承载着全家的核心服务,备份绝对不能再搁置:
- VMWare自动快照:在虚拟机设置里开启每周自动快照,保留最近3个快照,万一出问题能快速回滚
- 系统级备份:定期用tar打包整个系统,存到外接硬盘或NAS:
sudo tar -czf /mnt/nas/ubuntu-backup-$(date +%Y%m%d).tar.gz --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/mnt --exclude=/tmp / - DNS服务单独备份:如果用的是Bind,定期同步
/etc/bind目录到NAS;如果是其他DNS服务,找到对应的配置目录做定时同步,确保DNS配置不会丢失
内容的提问来源于stack exchange,提问作者ndemarco
相关产品推荐
相关产品推荐

