0%

Linux无损调整分区大小

场景

500G 硬盘

100MB `boot`分区 |8G `swap`分区 |450G `/`分区

我需要将/home分区单独提取一个分区出来,即变成

100MB `boot`分区 |8G `swap`分区 |100G `/`分区 |350G `/home`分区

步骤

  1. sudo e2fsck -fy /dev/sda3 // f 是表示检查,y表示一直确认,直到修复完
  2. sudo resize2fs /dev/sda3 100G //将文件系统调整到50G(不太明白文件系统大小和分区大小的关系)
  3. sudo fdisk /dev/sda // 使用fdisk进行分区
  4. 首先输入p,查看要调整分区(sda3)的start序号(重要)
  5. 输入 d 删除要sda3,选择3
  6. 输入 n 添加一个主分区,分区号选择3
  7. 选择start地址,就是刚才查看的地址(一般不用修改,默认就是刚才的值)
  8. 选择分区容量,输入+100G
  9. 然后再新建一个分区,输入n,选择p(主分区),选择默认起点,再选择默认终点
  10. 按w保存分区表
    1. 这里有可能会报错,什么device被占用之类的错误
    2. 使用 partprobe /dev/sda命令重载/dev/sda 重载分区表,(命令成功界面没有显示)
  11. sudo e2fsck -fy /dev/sda3 修复sda3分区
  12. sudo resize2fs /dev/sda3 检查一下有没有问题
  13. sda3分区已经没有问题了,数据全部都保留着。
  14. 格式化sda4 sudo mkfs.ext4 /dev/sda4
  15. 然后就是迁移所有/home数据到sda4
  16. 在fstab中添加一行 UUID=xxxxxxxxxxxxxxx /home ext4 defaults 0 0
  17. 开机后使用sudo chown -R username:username /home/fan,否则由于权限问题导致无法登录

大功告成!