如何无损扩展 Debian 硬盘分区

在搭建本地镜像源的过程中发现分配给虚拟机的磁盘太小了,无法下载所有的 deb 包,于是给 Debian 扩充了磁盘容量,但是需要手动扩展硬盘分区

这里的“无损”,一是指无损扩充容量,二是指扩容后与原来的使用感觉相同,不会出现开机变慢等情况,不增加其他问题 —— 其实也影响了系统休眠功能,但我的服务器暂时不需要休眠

环境

  • Debian 10 buster

参考

步骤

分区扩容

有一根目录分区大小为 32G 的机器,之后加了 100G,现要扩充 32G 到 132G

有两种方法

方法一:growpart 工具

此方法不需要重新安装 grub

  1. 安装 growpart
    • growpart 指令包含在 cloud-utils 包内
      apt install cloud-utils
  2. 调整分区表
    • 查看现有分区
      fdisk -l

      如何无损扩展 Debian 硬盘分区

      可以看到当前磁盘内有三个分区 sda1、sda2 和 sda5 (交换分区)

    • 删除主分区外的所有分区,执行
      fdisk -u /dev/sda

      依次输入

      d
      2

      删掉 sda2 后,交换分区也会消失,磁盘内只有 sda1 分区如何无损扩展 Debian 硬盘分区

    • 输入 w 保存分区表,退出 fdisk
  3. 扩展 sda1
    • 扩容sda1,执行
      growpart /dev/sda 1
    • 加载文件系统并检查 4K 对齐
      resize2fs /dev/sda1
  4. 重启

方法二:fdisk 一把梭

此方法需要重新安装 grub

  1. 修改分区表
    • 执行
      fdisk /dev/sda

      sda 为待修改分区所在的磁盘

    • 依次输入以下指令
      o # 创建 dos
      n # 新建分区
      # 之后全程回车
      w # 保存分区表信息

      如何无损扩展 Debian 硬盘分区

  2. 重新安装 grub
    grub-install /dev/sda1
    update-grub
  3. 重启后扩充容量
    • 执行
      resize2fs /dev/sda1

扩容后的启动问题

经过上述步骤,分区已经成功扩容,但是在之后的启动过程中会出现以下提示性文字如何无损扩展 Debian 硬盘分区如何无损扩展 Debian 硬盘分区

系统一直在等待挂载交换分区,导致启动过程变慢

上述步骤中主分区覆盖了整个磁盘,交换分区消失了,而启动过程中还要先挂载交换分区,所以导致了系统等待交换分区的问题

解决方法也很简单:新建交换分区、修改相关的配置文件

新建交换分区

这一步将解决启动后等待交换分区 1 分 30 秒的问题(上图图二)

  1. 新建交换分区(文件),详见 Increase Ubuntu Swap partition
    • 为方便阅读,复读一遍指令
      fallocate -l 4096M /swap
      chmod 600 /swap
      mkswap /swap
      swapon /swap
  2. 编辑 /etc/fstab,将原本使用 UUID 的交换分区替换为 /swap如何无损扩展 Debian 硬盘分区

修改 grub 启动选项

这一步将解决第一步等待 resume 交换分区的问题(上图图一),同时会影响系统的休眠唤醒

  1. 编辑 /etc/default/grub
    • 在 GRUB_CMDLINE_LINUX 一行添加 “noresume” 选项,关闭启动前的交换分区恢复功能如何无损扩展 Debian 硬盘分区
    • 如果交换分区还存在,可以通过修改 /etc/initramfs-tools/conf.d/resume 文件内的 UUID 值来解决这个问题,但是由于之前步骤将交换分区全部抹除,没有交换分区的 UUID,因此直接设置 grub 跳过 resume 步骤
  2. 更新 grub
    update-grub

效果

如何无损扩展 Debian 硬盘分区

如何无损扩展 Debian 硬盘分区

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据