news 2026/10/27 6:19:23

Ubuntu磁盘分区扩容实战:虚拟机与物理机全指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu磁盘分区扩容实战:虚拟机与物理机全指南

1. Ubuntu磁盘分区扩容实战指南

刚装完Ubuntu时分配的50GB磁盘空间,用了不到半年就被开发环境和项目文件塞得满满当当。上周编译Android源码时直接报"No space left on device",这才意识到必须对磁盘分区动手了。作为经历过多次扩容的老司机,我整理出这份涵盖物理机、虚拟机、双系统等场景的完整扩容方案。

磁盘扩容本质上包含三个关键操作:调整底层存储容量、扩展分区边界、同步文件系统。不同环境(如VMware虚拟机、物理硬盘、LVM逻辑卷)的操作差异主要体现在第一步,后两步则遵循相同的Linux底层逻辑。以下是各场景通用操作框架:

  1. 存储层扩容:虚拟机扩展虚拟磁盘/物理机添加新硬盘
  2. 分区调整:使用fdisk/gparted修改分区表
  3. 文件系统扩展:resize2fs/xfs_growfs等工具同步空间

重要提示:操作前务必备份重要数据!误操作可能导致分区表损坏。建议在LiveCD环境下操作,避免对已挂载的文件系统进行修改。

2. 虚拟机磁盘扩容全流程

2.1 VMware虚拟机扩容步骤

以VMware Workstation中的Ubuntu 22.04为例,首先关闭虚拟机,在VM设置中直接调整虚拟磁盘大小:

# 查看当前磁盘布局(示例输出) $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 50G 0 disk ├─sda1 8:1 0 512M 0 part /boot/efi ├─sda2 8:2 0 1G 0 part /boot └─sda3 8:3 0 48.5G 0 part /

在VMware界面将磁盘从50GB调整为80GB后,启动Ubuntu执行:

# 识别新增空间 $ echo 1 > /sys/class/scsi_disk/0\:0\:0\:0/device/rescan $ lsblk # 确认sda总容量变为80G

2.2 分区调整实战

使用gdisk工具调整分区(推荐GPT分区表):

$ sudo gdisk /dev/sda Command: p # 打印当前分区表 Command: d # 删除需要扩展的分区(如sda3) Command: n # 新建分区 Partition number: 3 # 保持编号一致 First sector: 按原值输入 # 保持起始扇区不变 Last sector: 最大可用值 # 自动扩展到剩余空间 Command: w # 写入更改

关键技巧:如果提示分区正在使用,需要先卸载(umount)或使用LiveCD启动。对于根分区,可以尝试mount -o remount,rw /临时重新挂载。

2.3 文件系统扩展

对于ext4文件系统:

$ sudo resize2fs /dev/sda3 resize2fs 1.46.5 (30-Dec-2021) Filesystem at /dev/sda3 is mounted on /; on-line resizing required old_desc_blocks = 4, new_desc_blocks = 5 The filesystem on /dev/sda3 is now 20971520 (4k) blocks long.

验证结果:

$ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 79G 45G 31G 60% /

3. 物理服务器LVM扩容方案

3.1 添加新物理磁盘

假设新增一块2TB的NVMe SSD(/dev/nvme0n1):

$ sudo fdisk /dev/nvme0n1 # 创建Linux LVM分区(类型8e) $ sudo pvcreate /dev/nvme0n1p1 $ sudo vgextend ubuntu-vg /dev/nvme0n1p1

3.2 扩展逻辑卷

查看当前VG空间:

$ sudo vgdisplay --- Volume group --- VG Name ubuntu-vg System ID Format lvm2 VG Size <100.00 GiB Free PE / Size ​0 / 0

扩展根逻辑卷:

$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/root $ sudo resize2fs /dev/ubuntu-vg/root

3.3 在线扩容技巧

对于生产环境,推荐使用xfs文件系统支持实时扩容:

$ sudo lvextend -r -L +500G /dev/ubuntu-vg/data # -r参数自动resize文件系统

4. 双系统共享分区调整

4.1 Windows+Ubuntu分区方案

常见问题:Windows占用了全部空间导致Ubuntu无法扩容。解决方案:

  1. 在Windows磁盘管理压缩NTFS分区
  2. 使用Ubuntu LiveCD启动
  3. 删除swap分区(如果有)腾出连续空间
  4. 移动Ubuntu分区至新空间起始位置
$ sudo gparted # 图形化操作更安全

4.2 分区移动风险控制

移动分区是高风险操作,必须注意:

  • 确保UPS供电稳定
  • 提前备份分区表:sudo sfdisk -d /dev/sda > sda.bak
  • 使用-i参数显示进度:sudo dd if=/dev/sda2 of=/dev/sda3 bs=1M status=progress

5. 典型问题排查手册

5.1 扩容后系统无法启动

症状:GRUB rescue提示"unknown filesystem"

修复步骤:

  1. LiveCD启动挂载原系统
  2. 检查/etc/fstab UUID是否匹配:
    $ blkid /dev/sda3 $ cat /mnt/etc/fstab
  3. 重新安装GRUB:
    $ sudo mount /dev/sda3 /mnt $ sudo mount --bind /dev /mnt/dev $ sudo chroot /mnt # grub-install /dev/sda # update-grub

5.2 空间未正确释放

当使用LVM精简配置(thin provisioning)时,可能需要手动回收空间:

$ sudo lvmconfig --type current $ sudo lvchange --discards passdown ubuntu-vg/root $ sudo fstrim -v /

6. 高级技巧与自动化方案

6.1 脚本化扩容

对于需要频繁操作的开发环境,可使用自动化脚本:

#!/bin/bash # auto_expand.sh DISK=$(lsblk -o NAME,MOUNTPOINT | awk '$2=="/"{print $1}' | sed 's/[0-9]*$//') PART="/dev/$(lsblk -o NAME,MOUNTPOINT | awk '$2=="/"{print $1}')" growpart /dev/$DISK ${PART##*[a-z]} resize2fs $PART

6.2 云环境特殊处理

AWS/Aliyun等云平台需要先扩展EBS/云盘,再通知内核:

# AWS示例 $ sudo growpart /dev/xvda 1 $ sudo xfs_growfs / # 针对xfs文件系统

6.3 监控预警设置

配置prometheus警报规则,当空间使用率>80%时触发扩容:

# alert.rules groups: - name: disk_alerts rules: - alert: DiskSpaceLow expr: (1 - (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"})) * 100 > 80 for: 30m labels: severity: warning annotations: summary: "Low disk space on {{ $labels.instance }}"

实际操作中我发现,对于数据库服务器,建议保留至少20%的剩余空间避免性能下降。曾经有个PostgreSQL实例在空间使用达95%时,查询性能下降了近10倍。定期使用ncdu分析大文件分布是个好习惯:

$ sudo apt install ncdu $ ncdu / # 交互式分析磁盘使用情况

最后提醒:扩容只是临时解决方案,合理的存储规划才是根本。建议为不同用途建立独立分区(如/home、/var、/opt),并采用LVM架构方便后续调整。对于开发环境,可以考虑将Docker存储目录(/var/lib/docker)挂载到独立磁盘,避免容器日志爆满影响系统运行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/27 6:18:46

AI容器化与自动化编排:60秒部署个人AI助手的技术解析

1. 项目背景&#xff1a;天价域名背后的AI野心去年某个加密货币富豪斥资5亿收购"AI.com"域名的新闻&#xff0c;在科技圈引发了地震级讨论。这个价格直接刷新了全球域名交易记录&#xff0c;甚至超过了大多数科技公司的天使轮融资额。但更值得玩味的是&#xff0c;这…

作者头像 李华
网站建设 2026/10/27 6:18:27

seatunnle systemd服务化部署与自动健康巡检实战

1. 项目概述&#xff1a;从“手动敲命令”到“自动跑任务”的真实跨越“如何进行seatunnle的脚本定期调度呢&#xff1f;”——这句话背后&#xff0c;藏着一批实际在用、天天被运维琐事拖住手脚的开发者和系统管理员的真实困境。我接触过不少某高校实验室的自动化数据采集项目…

作者头像 李华
网站建设 2026/10/27 6:18:12

MySQL8增量备份实战:Xtrabackup8核心技术与优化

1. Xtrabackup8与MySQL8增量备份的核心价值在MySQL数据库运维领域&#xff0c;数据备份是保障业务连续性的最后防线。传统逻辑备份工具如mysqldump在面对TB级数据库时&#xff0c;恢复时间可能长达数小时甚至数天。而Percona XtraBackup作为业界公认的物理备份工具&#xff0c;…

作者头像 李华
网站建设 2026/10/27 6:18:11

OpenMontage 是什么?技术定义与常见混淆解析

我无法根据当前输入生成符合要求的博文。原因如下&#xff1a;项目标题为"OpenMontage"&#xff0c;但项目正文、关键词、摘要描述全部为空&#xff1b;所谓“相关热搜词”和“最新网络热词”仅重复了标题本身&#xff08;OpenMontage&#xff09;&#xff0c;未提供…

作者头像 李华
网站建设 2026/10/27 6:18:11

CTFWeb入门:信息泄露漏洞与.bak文件实战

1. CTFWeb入门&#xff1a;信息泄露漏洞实战解析在网络安全竞赛和实际渗透测试中&#xff0c;信息泄露漏洞往往是最容易被忽视却极具杀伤力的突破口。作为CTFWeb方向的入门级漏洞类型&#xff0c;备份文件泄露&#xff08;.bak泄露&#xff09;在历年赛事中出现频率高达37%&…

作者头像 李华
网站建设 2026/10/27 6:17:10

PyTorch高维张量乘法与conv2d/conv3d维度语义解析

拿到一个(N, C, H, W)的张量&#xff0c;想跟另一个张量乘一下&#xff0c;结果报了个维度不匹配&#xff1b;换成conv2d又提示 expected 4-dimensional input&#xff0c;可你手里明明是五维的视频数据。这类报错我在带新人的时候见过太多次&#xff0c;问题往往不在 API 记不…

作者头像 李华