谨以此文记录自用linux系统/home目录扩容过程(当时没有截图保存,因此下文部分图是事后的示意图,不过影响不大)。

系统安装时只挂载了/目录在一个分区下,后续想把/home目录单独挂载到容量更大的分区,可行。

工具

使用图形分区工具:GParted,类似windows下的diskgenius,功能强大,感谢开源世界!

iso刻录工具:balenaEtcher,将iso文件刻录到u盘制作启动盘;

多合一启动盘工具:Ventoy,Ventoy解决了装一个系统就要刻录一次的痛点,使用balenaEtcherVentoy镜像刻录到u盘后,只需要将要启动的镜像文件复制到u盘Ventoy/文件夹下,启动时选择,可以同时复制多个文件,u盘启动时使用方向键进行选择启动即可。

GParted使用原则是不能操作当前系统使用的分区(如想在当前系统下压缩部分磁盘空间出来,是操作不了的),如果要操作当前系统的分区:

  • 需要以启动盘形式(GParted启动盘)启动后操作;
  • 或者启动带有GParted软件包的linux安装镜像(如manjaro xfce镜像自带Gparted),在试用模式下操作。

步骤

假定已经装好新硬盘(未分区)或通过Gparted分出空闲磁盘空间,直接在当前系统下操作就好;如果计算机上的硬盘都没有空闲磁盘空间的情况下,需要先通过u盘启动盘启动带有Gparted的系统,进入试用模式(不要安装!)调整出可用的空闲磁盘空间后方可进入系统操作。

总体操作大致分为以下几步

image-20211116180939668

1. 分区

  1. 在系统中打开Gparted,加锁的分区都是当前系统使用的分区(不能操作);

image-20211116162927893

  1. 默认灰色区域为空闲空间,选中目标区域后鼠标右键选择“新建”分区,根据实际需求填入给/home分配的磁盘空间,单位为MB,分区名称根据其他分区进行命名,这里是nvme盘,因此分区都是/devnvme0n1p开头,我的分区之前分到/devnvme0n1p5,所以填/devnvme0n1p6(图片仅为示意图),文件系统保持默认ext4就好,最后点击“添加”;

image-20211116164925016

  1. 此时还没有开始真正的分区,要点击工具栏上的✅按钮才开始执行分区操作(数据无价,需要确认无误后操作);

image-20211116170047281

2. 挂载新分区到/mnt/home

  1. 分区新建完成后打开终端,在/mnt目录下新建/home目录;
sudo mkdir /mnt/home
  1. 把新分区挂载到/mnt/home目录,分区名/dev/nvme0n1p6根据实际情况调整;
sudo mount /dev/nvme0n1p6 /mnt/home

3. 将/home目录的文件同步到/mnt/home

使用rsync命令进行同步,等待命令行返回。

sudo rsync -aXS /home/ /mnt/home

说明:

-a --archive :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"
–xattrs, -X :保留扩展属性
–relative, -R:使用相对路径名

4. 挂载/mnt/home到/home

  1. 重命名原来的/home,做完这一步,有些依赖于/home目录的软件将异常,不要慌,因为/home目录系统找不到了;
sudo mv /home /home_old
  1. 新建/home目录;
sudo mkdir /home
  1. 卸载/dev/nvme0n1p6分区设备(根据实际情况卸载);
sudo umount /dev/nvme0n1p6
  1. 挂载/dev/nvme0n1p6到/home,此时异常的软件应该恢复正常了。
sudo mount /dev/nvme0n1p6 /home

5. 修改/etc/fstab文件,实现开机自动挂载

  1. 查看blkid,根据自己的实际分区输入;
blkid | grep /dev/nvme0n1p6
  1. 复制上一步输出中的UUID值(""中的字符串)备用;
  2. 修改/etc/fstab文件;
sudo vim /etc/fstab

在打开的文件末尾添加一行,参照下图填入,本人直接用了原来/分区的部分参数

image-20211116174425351

说明:

noatime - 不更新文件系统上 inode 访问记录,可以提升性能(参见 atime 参数)
defaults - 使用文件系统的默认挂载参数,例如 ext4 的默认参数为:rw, suid, dev, exec, auto, nouser, async.
dump 工具通过它决定何时作备份. dump 会检查其内容,并用数字来决定是否对这个文件系统进行备份。 允许的数字是 0 和 1 。0 表示忽略, 1 则进行备份。大部分的用户是没有安装 dump 的 ,对他们而言 应设为 0。
fsck 读取 的数值来决定需要检查的文件系统的检查顺序。允许的数字是0, 1, 和2。 根目录应当获得最高的优先权 1, 其它所有需要被检查的设备设置为 2. 0 表示设备不会被 fsck 所检查。

编辑完成后保存。

  1. 重启系统后无异常,删除/home_old(慎重操作)。
sudo rm -rf /home_old

注:本文记录的是将/home挂载到新分区,个人认为挂载到新硬盘也是类似的操作。

参考

[1] Linux系统下重新挂载/home到其他硬盘或分区

[2] 第2章 rsync(一):基本命令和用法

[3] linux之fstab文件详解

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐