13

如何无损扩展 Debian 硬盘分区

 2 years ago
source link: https://azhuge233.com/%e5%a6%82%e4%bd%95%e6%97%a0%e6%8d%9f%e6%89%a9%e5%b1%95-debian-%e7%a1%ac%e7%9b%98%e5%88%86%e5%8c%ba/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
如何无损扩展 Debian 硬盘分区

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

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

  • Debian 10 buster

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

有两种方法

方法一:growpart 工具

此方法不需要重新安装 grub

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

      Snipaste_2020-11-12_20-06-29-768x482.png

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

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

      删掉 sda2 后,交换分区也会消失,磁盘内只有 sda1 分区Snipaste_2020-11-12_20-20-50-768x482.png

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

方法二:fdisk 一把梭

此方法需要重新安装 grub

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

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

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

      Snipaste_2020-11-12_21-01-15-768x482.png

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

扩容后的启动问题

经过上述步骤,分区已经成功扩容,但是在之后的启动过程中会出现以下提示性文字Snipaste_2020-11-12_21-09-41-768x157.pngSnipaste_2020-11-12_21-06-30.png

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

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

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

新建交换分区

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

  1. 新建交换分区(文件),详见 Increase Ubuntu Swap partition
    • 为方便阅读,复读一遍指令
      fallocate -l 4096M /swap
      chmod 600 /swap
      mkswap /swap
      swapon /swap
      fallocate -l 4096M /swap
      chmod 600 /swap
      mkswap /swap
      swapon /swap
  2. 编辑 /etc/fstab,将原本使用 UUID 的交换分区替换为 /swapSnipaste_2020-11-12_21-26-29-768x482.png

修改 grub 启动选项

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

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

Snipaste_2020-11-12_20-26-17-768x482.png

Snipaste_2020-11-12_21-10-41.png

相关


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK