如何无损扩展 Debian 硬盘分区
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.
在搭建本地镜像源的过程中发现分配给虚拟机的磁盘太小了,无法下载所有的 deb 包,于是给 Debian 扩充了磁盘容量,但是需要手动扩展硬盘分区
这里的“无损”,一是指无损扩充容量,二是指扩容后与原来的使用感觉相同,不会出现开机变慢等情况,不增加其他问题 —— 其实也影响了系统休眠功能,但我的服务器暂时不需要休眠
- Debian 10 buster
有一根目录分区大小为 32G 的机器,之后加了 100G,现要扩充 32G 到 132G
有两种方法
方法一:growpart 工具
此方法不需要重新安装 grub
- 安装 growpart
- growpart 指令包含在 cloud-utils 包内
apt install cloud-utils
apt install cloud-utils
- growpart 指令包含在 cloud-utils 包内
- 调整分区表
- 查看现有分区
fdisk -l
fdisk -l
可以看到当前磁盘内有三个分区 sda1、sda2 和 sda5 (交换分区)
- 删除主分区外的所有分区,执行
fdisk -u /dev/sda
fdisk -u /dev/sda
d 2
删掉 sda2 后,交换分区也会消失,磁盘内只有 sda1 分区
- 输入 w 保存分区表,退出 fdisk
- 查看现有分区
- 扩展 sda1
- 扩容sda1,执行
growpart /dev/sda 1
growpart /dev/sda 1
- 加载文件系统并检查 4K 对齐
resize2fs /dev/sda1
resize2fs /dev/sda1
- 扩容sda1,执行
方法二:fdisk 一把梭
此方法需要重新安装 grub
- 修改分区表
- 执行
fdisk /dev/sda
fdisk /dev/sda
sda 为待修改分区所在的磁盘
- 依次输入以下指令
o # 创建 dosn # 新建分区# 之后全程回车w # 保存分区表信息
o # 创建 dos n # 新建分区 # 之后全程回车 w # 保存分区表信息
- 执行
- 重新安装 grub
grub-install /dev/sda1update-grub
grub-install /dev/sda1 update-grub
- 重启后扩充容量
- 执行
resize2fs /dev/sda1
resize2fs /dev/sda1
- 执行
扩容后的启动问题
经过上述步骤,分区已经成功扩容,但是在之后的启动过程中会出现以下提示性文字
系统一直在等待挂载交换分区,导致启动过程变慢
上述步骤中主分区覆盖了整个磁盘,交换分区消失了,而启动过程中还要先挂载交换分区,所以导致了系统等待交换分区的问题
解决方法也很简单:新建交换分区、修改相关的配置文件
新建交换分区
这一步将解决启动后等待交换分区 1 分 30 秒的问题(上图图二)
- 新建交换分区(文件),详见 Increase Ubuntu Swap partition
- 为方便阅读,复读一遍指令
fallocate -l 4096M /swapchmod 600 /swapmkswap /swapswapon /swap
fallocate -l 4096M /swap chmod 600 /swap mkswap /swap swapon /swap
- 为方便阅读,复读一遍指令
- 编辑 /etc/fstab,将原本使用 UUID 的交换分区替换为 /swap
修改 grub 启动选项
这一步将解决第一步等待 resume 交换分区的问题(上图图一),同时会影响系统的休眠唤醒
- 编辑 /etc/default/grub
- 在 GRUB_CMDLINE_LINUX 一行添加 “noresume” 选项,关闭启动前的交换分区恢复功能
- 如果交换分区还存在,可以通过修改 /etc/initramfs-tools/conf.d/resume 文件内的 UUID 值来解决这个问题,但是由于之前步骤将交换分区全部抹除,没有交换分区的 UUID,因此直接设置 grub 跳过 resume 步骤
- 更新 grub
update-grub
update-grub
相关
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK