侧边栏壁纸
博主头像
菜鸟驿站 博主等级

梦想还是要有的,万一实现了呢

  • 累计撰写 9 篇文章
  • 累计创建 3 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

PVE 虚拟机磁盘扩容指南

管理员
2026-01-07 / 0 评论 / 0 点赞 / 4 阅读 / 0 字

这是一个非常经典的问题。

从你提供的 lsblk 输出可以看出:

  1. 你的物理磁盘 sda 已经识别到了 500G

  2. 你的根分区 sda1 只有 199G

  3. 关键问题:在 sda1 后面,紧跟着一个扩展分区 sda2 和一个 Swap(交换)分区 sda5

这就好比你想要扩建你的主卧(sda1),但是主卧隔壁紧挨着储藏室(Swap),而空地(扩容出来的300G)在储藏室的另一边。你必须先把储藏室拆了,才能把主卧扩建过去。

为了扩容 sda1,我们需要先删除阻挡在中间的 Swap 分区,扩容根分区,最后(可选)用“Swap 文件”的方式把交换空间补回来(这种方式更灵活,以后扩容不再受阻)。

以下是详细的操作步骤(请依次执行):

这是一个非常经典的问题。

从你提供的 lsblk 输出可以看出:

  1. 你的物理磁盘 sda 已经识别到了 500G

  2. 你的根分区 sda1 只有 199G

  3. 关键问题:在 sda1 后面,紧跟着一个扩展分区 sda2 和一个 Swap(交换)分区 sda5

这就好比你想要扩建你的主卧(sda1),但是主卧隔壁紧挨着储藏室(Swap),而空地(扩容出来的300G)在储藏室的另一边。你必须先把储藏室拆了,才能把主卧扩建过去。

为了扩容 sda1,我们需要先删除阻挡在中间的 Swap 分区,扩容根分区,最后(可选)用“Swap 文件”的方式把交换空间补回来(这种方式更灵活,以后扩容不再受阻)。

以下是详细的操作步骤(请依次执行):

⚠️ 风险提示

操作涉及分区表修改,强烈建议在操作前对虚拟机进行快照(Snapshot)或备份数据,以防误操作导致数据丢失。


第一步:关闭 Swap 并修改 fstab

我们需要卸载 Swap 才能删除它。

  1. 关闭 Swap

    Bash

    swapoff -a
    
  2. 修改 /etc/fstab 防止重启挂载: 使用编辑器打开文件:

    Bash

    nano /etc/fstab
    

    找到包含 swap 的那一行(通常包含 UUID=... swap sw ...),在行首加上 # 号把它注释掉。 Ctrl+O 保存,Enter 确认,Ctrl+X 退出。


第二步:删除阻挡的分区 (sda2, sda5)

我们需要把 sda1 后面的路清空。

  1. 进入 fdisk 交互模式

    Bash

    fdisk /dev/sda
    
  2. 删除分区(不用担心,删除 Swap 不会丢文件数据):

    • 输入 p 查看分区表,确认 sda5sda2 的编号。

    • 输入 d,然后选择分区号 5(删除 sda5)。

    • 输入 d,然后选择分区号 2(删除 sda2)。

    • 再次输入 p,现在你应该只剩下一个 sda1 了。

第三步:扩容根分区 (sda1)

继续在 fdisk 交互界面中操作:

  1. 删除 sda1 记录(**注意:这不会删除数据!**只要起始扇区不变,数据就在):

    • 输入 d,自动选择 1(或者手动选1)。

    • 此时所有分区都删除了,不要慌,只要不输入 w 保存,一切都可以撤销。

  2. 重建 sda1

    • 输入 n(新建分区)。

    • 输入 p(主分区)。

    • 输入 1(分区号)。

    • First sector (起始扇区)直接按回车!(非常重要,必须使用默认值,即原来的起始位置)。

    • Last sector (结束扇区)直接按回车!(默认会使用所有剩余空间,即500G)。

    • 如果提示检测到 ext4 签名,询问是否移除签名 (Do you want to remove the signature?),一定要选 No (N)!!! 选 Yes 会丢失数据。

  3. 保存更改

    • 输入 w

    • 系统可能会提示 Device or resource busy,这很正常,因为根目录正在使用。

  4. 通知内核更新分区表: 执行以下命令:

    Bash

    partprobe
    

    如果这步报错,建议重启一次机器 (reboot),重启后继续下一步。


第四步:刷新文件系统

现在分区变大了,但文件系统还不知道。

执行扩容命令:

Bash

resize2fs /dev/sda1

此时,执行 df -h 应该能看到根目录 / 已经接近 500G 了。


第五步:重建 Swap (使用 Swap 文件)

因为 Swap 分区被我们删了,为了系统稳定,建议创建一个 Swap 文件代替分区(这样以后再扩容磁盘就不会被挡住了)。

  1. 创建一个 2G 的 Swap 文件(大小随你定):

    Bash

    dd if=/dev/zero of=/swapfile bs=1M count=2048
    
  2. 设置权限

    Bash

    chmod 600 /swapfile
    
  3. 格式化为 Swap

    Bash

    mkswap /swapfile
    
  4. 启用 Swap

    Bash

    swapon /swapfile
    
  5. 重新配置 /etc/fstab: 再次编辑 nano /etc/fstab,在文件末尾添加一行:

    Plaintext

    /swapfile none swap sw 0 0
    

    (记得把之前注释掉的旧 swap 分区那行彻底删掉)


验证

执行 lsblk,你应该看到 sda1 占据了绝大部分空间,且 Swap 正常工作(通过 free -h 查看)。

启动慢卡顿解决办法如下:


结论: 系统之所以卡顿报错,是因为配置文件里记录了一个“旧的 Swap 分区 UUID (33ec...)”,每次开机它都试图去寻找这个分区来恢复休眠数据,但你的硬盘上实际上根本没有这个分区。

请按以下步骤彻底清除这个错误的配置,启动就会变快了:

第一步:清除 Resume 配置 (最关键)

这个文件告诉内核从哪里“苏醒”。因为它指向了不存在的 UUID,所以卡住了。

  1. 清空该文件内容(直接执行下面这行命令):

    Bash

    echo "" > /etc/initramfs-tools/conf.d/resume
    

    (这一步会把错误的 UUID 抹掉)

第二步:检查 fstab (防止挂载报错)

虽然 blkid 没看到 swap,但 fstab 可能会尝试挂载它。

  1. 打开文件

    Bash

    nano /etc/fstab
    
  2. 寻找并注释: 找一行包含 swap 或者包含报错 UUID 33ecb7f7... 的内容。 如果有,在这一行的最前面加一个 # 号把它注释掉。 (如果文件里只有 /dev/sda1 这一行,那就不用动,直接退出)

  3. 保存退出:按 Ctrl+O 回车保存,按 Ctrl+X 退出。

第三步:更新引导 (必须执行)

修改完配置后,必须重新生成引导文件,否则下次重启还是会读旧配置。

Bash

update-initramfs -u

(这一步可能需要几秒钟)

第四步:重启验证

Bash

reboot

重启后,那个 Timed out waiting for device 的错误应该就会消失,系统会迅速进入登录界面。

0

评论区