Post
调整虚拟机磁盘分区及Swap分区步骤
VMware下扩展Ubuntu虚拟机根目录分区指南
概述
本文针对虚拟机磁盘空间不足场景,详细记录了通过调整分区表和交换分区来扩展Ubuntu虚拟机根目录的完整操作流程。核心目标是通过重新划分磁盘空间,实现根文件系统的扩容,同时确保交换分区的正常挂载。操作涉及分区表修改、UUID重用等高风险操作,务必提前备份整个虚拟机。
核心操作流程
一、前期准备
-
确认磁盘信息
df -h # 查看当前文件系统使用情况 fdisk -l /dev/sda # 查看当前分区表结构记录交换分区(/dev/sda5)的Blocks数值(如1046528),若根分区与交换分区位于不同磁盘则无需此步骤。
-
虚拟机磁盘扩容
- 在VMware虚拟机设置中,通过"硬盘"->“实用工具"扩展磁盘至目标大小(如15G)
- 重要:此操作需在虚拟机关机状态下完成
二、分区表调整
-
系统关机
shutdown -h now # 确保虚拟机完全关机 -
删除原有分区
fdisk /dev/sda # 操作步骤: p # 查看当前分区表 d # 删除分区(依次删除sda1和sda2) w # 保存分区表变更 -
创建新分区
fdisk /dev/sda # 操作步骤: n # 新建主分区(sda1)起始扇区使用默认值2048 n # 新建主分区(sda2)作为交换分区 t # 修改sda2分区类型为82(Linux swap) w # 保存分区表
三、交换分区处理
-
获取原始UUID
awk '/swap/ { print $1 }' /etc/fstab # 提取原有swap分区UUID -
清空新分区数据
dd if=/dev/zero of=/dev/sda2 # 确保新分区无残留数据 -
重新创建swap分区
mkswap -U <UUID> /dev/sda2 # 使用原始UUID创建新swap分区 swapon -a # 激活swap分区
四、文件系统扩展
-
在线扩容文件系统
resize2fs /dev/sda1 # 自动扩展文件系统至新分区大小 -
验证扩容结果
df -h # 确认根分区容量已更新
关键注意事项
-
风险控制
- 分区表修改前必须备份整个虚拟机
- 操作过程中若出现"Device or resource busy"警告,需等待系统重启后生效
-
UUID处理方案
- 本文采用UUID重用方案(覆盖新分区)
- 替代方案:在
/etc/fstab中直接写入新UUID(需先通过blkid获取)
-
适用边界说明
- 本方案适用于单磁盘场景,若交换分区与根分区位于不同磁盘,可跳过UUID处理步骤
- resize2fs命令要求文件系统处于挂载状态(本文使用在线扩容)
-
版本兼容性
- 确保使用的
fdisk版本支持GPT分区表(若使用MBR需注意分区数量限制) resize2fs工具版本需与文件系统类型匹配(ext2/ext3/ext4)
- 确保使用的
操作验证
完成所有步骤后,应通过以下命令验证:
free -m # 确认swap分区已激活
df -h # 根分区显示新容量
lsblk /dev/sda # 验证分区表结构
blkid # 检查UUID是否匹配fstab配置
总结
本操作通过系统关机、分区表重写、UUID继承等步骤,实现了虚拟机根目录的扩容。整个过程涉及高风险磁盘操作,必须严格遵循"备份-验证-执行"的三步原则。对于生产环境虚拟机,建议在测试环境中先行验证操作流程。