在虚拟化环境中,Ubuntu作为最常用的Linux发行版之一,经常被部署在VMware虚拟机上用于开发测试和生产环境。随着应用数据的增长,初始分配的磁盘空间往往会出现不足的情况。上周我就遇到了一个典型案例:某Python数据分析项目的日志文件在三个月内暴涨到47GB,导致原本50GB的系统盘只剩下不到500MB空间,严重影响了Spark任务的执行效率。
虚拟机磁盘空间不足的典型症状包括:
不同于物理服务器直接添加硬盘的方式,VMware虚拟机的磁盘扩容需要特别注意虚拟磁盘类型的选择和分区调整的顺序。下面我将详细介绍在VMware Workstation Pro 17和ESXi 6.7环境下,为Ubuntu 22.04 LTS虚拟机安全扩容的全过程。
首先需要确认虚拟机的磁盘类型:
bash复制# 在VMware控制台查看虚拟机设置
磁盘类型显示为:
- SCSI/SATA(推荐)
- IDE(旧式,需特别注意)
# 通过fdisk检查当前分区
sudo fdisk -l
典型输出示例:
code复制Disk /dev/sda: 50 GiB, 53687091200 bytes
/dev/sda1 * 2048 104857599 104855552 50G 83 Linux
重要提示:如果使用快照功能,必须确保所有快照已合并。可通过"虚拟机→快照→快照管理器"查看,存在快照时扩容操作会导致数据损坏。
扩容后需特别注意:
启动Ubuntu后,首先验证系统是否识别到新空间:
bash复制sudo fdisk -l /dev/sda
此时应显示磁盘总容量已增大,但分区表仍保持原样:
code复制Disk /dev/sda: 100 GiB, 107374182400 bytes
/dev/sda1 * 2048 104857599 104855552 50G 83 Linux
安装图形化分区工具:
bash复制sudo apt update && sudo apt install -y gparted
操作流程:
sudo gparted关键细节:对于LVM分区的情况,需要先扩展物理卷(pvresize),再扩展逻辑卷(lvextend),最后调整文件系统(resize2fs)
对于服务器版或SSH连接的情况,可使用以下流程:
bash复制# 安装必要工具
sudo apt update && sudo apt install -y cloud-guest-utils
# 检查分区编号
lsblk
# 扩展分区(假设为/dev/sda3)
sudo growpart /dev/sda 3
# 扩展文件系统
sudo resize2fs /dev/sda3
如果系统使用LVM(逻辑卷管理),操作流程更为复杂:
bash复制# 查看物理卷状态
sudo pvdisplay
# 扩展物理卷
sudo pvresize /dev/sda3
# 查看卷组空间
sudo vgdisplay
# 扩展逻辑卷(假设为/root)
sudo lvextend -l +100%FREE /dev/ubuntu-vg/root
# 调整文件系统
sudo resize2fs /dev/ubuntu-vg/root
问题1:fdisk显示扩容后空间但df没有变化
原因:分区表未更新
解决:
bash复制sudo partprobe /dev/sda
sudo resize2fs /dev/sda1
问题2:扩展按钮灰色不可用
可能原因:
问题3:扩容后系统无法启动
应急处理:
bash复制sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo chroot /mnt
bash复制grub-install /dev/sda
update-grub
扩容完成后建议进行以下优化:
文件系统检查:
bash复制sudo fsck -f /dev/sda1
启用TRIM支持(对SSD尤其重要):
bash复制sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer
监控磁盘使用率:
bash复制# 安装监控工具
sudo apt install -y smartmontools
# 查看SMART状态
sudo smartctl -a /dev/sda
长期维护建议:
我在管理多个数据分析虚拟机时发现,设置80%容量预警机制非常必要。可以通过以下脚本实现自动报警:
bash复制#!/bin/bash
THRESHOLD=80
CURRENT=$(df / --output=pcent | tail -1 | tr -d '% ')
[ $CURRENT -gt $THRESHOLD ] && \
mail -s "磁盘空间警报" admin@example.com <<< "根分区使用率已达${CURRENT}%"
最后提醒,虽然VMware支持在线扩容,但生产环境强烈建议在业务低峰期操作,并确保有完整的备份方案。我曾遇到过一个案例,某金融系统在高峰时段扩容导致文件系统损坏,最终不得不从备份恢复,造成了4小时的服务中断。