欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

将Linux系统的home、var目录迁移到新分区

程序员文章站 2022-06-13 21:20:23
...

最开始安装Ubuntu 16.04系统时考虑欠周,给该系统分配的磁盘空间过少,运行了几次Docker以后,很快就提示磁盘空间已满。最简单的方法当然是分配一个更大的磁盘分区,然后在该分区上重装系统。但我在原系统中装了不少软件,不想重装系统,因此只能另辟蹊径。
按快捷键“Ctrl + Alt + T”键打开命令行终端,输入如下命令(题外话,可以使用cat /proc/partitions命令查看现有各分区的总尺寸):

df -ah

查看磁盘空间使用情况,发现/home/var目录占用空间较多,于是决定将/home/var目录重新挂载到新的分区。网上有很多介绍这方面的文章,但都不太靠谱,一不小心,就会让系统重启进不了图形化界面。下面将我机器上的实际操作过程记录下来,以利于后续查询。

一、增加新分区

增加新分区的最简单的方式当然是加一块新硬盘,我比较穷,没钱买新硬盘,只能在挖掘潜能方面做文章。考虑到我的机器上还安装了Windows 10系统,但平时基本不用,于是就打上它的主意了。进入Windows 10系统,按如下步骤增加新分区:

1.1 打开控制面板

如下图所示,点击工具栏中的小圆圈,在搜索框中输入:“控制面板”,点击上方出现的“控制面板”程序。
将Linux系统的home、var目录迁移到新分区

1.2 打开管理工具

如下图所示,在控制面板界面中,点击“管理工具”程序。
将Linux系统的home、var目录迁移到新分区

1.3 打开计算机管理

如下图所示,在管理工具界面中,点击“计算机管理”程序。
将Linux系统的home、var目录迁移到新分区

1.4 打开磁盘管理

如下图所示,在计算机管理界面中,点击左侧的“磁盘管理”选项。
将Linux系统的home、var目录迁移到新分区

1.5 压缩卷

如下图所示,在磁盘管理界面中,选中Windows分区,点击鼠标右键,在弹出的菜单中选择“压缩卷”。
将Linux系统的home、var目录迁移到新分区

1.6 设置新分区大小

如下图所示,在压缩卷界面中,根据需要设置新分区的尺寸,点击“压缩”按钮。注意:对于压缩卷后产生的新分区,不要在Windows系统中进行任何格式化操作。
将Linux系统的home、var目录迁移到新分区

二、将/home/var目录迁移到新分区

因为在Ubuntu 16.04图形化界面中迁移/home/var目录可能会影响到显卡驱动的正常运行,稍有不慎就会导致系统无法正常进入图形化界面,因此后续操作全部在文本界面中完成。你可以将本文内容用相机拍下来,然后通过查看手机照片的方式完成后续操作。

2.1 以“root”用户身份进入Ubuntu 16.04系统单用户文本界面

进入Ubuntu 16.04系统登录界面,不要登录,直接按下快捷键“Ctrl + Alt + F1”进入文本登录界面,以“root”用户身份进入(Ubuntu 16.04系统默认未启用“root”用户,可以在命令行中输入sudo passwd root加以启用),执行如下命令进入单用户文本界面模式:

init 1

2.2 使用fdisk创建新分区

首先使用如下命令查看新分区位于哪个设备中。假如只有一块硬盘,自然就在/dev/sda中,假如有多块硬盘,那有可能在/dev/sda/dev/sdb/dev/sdc甚至/dev/sdd中(第一块硬盘为/dev/sda,第二块硬盘为/dev/sdb,依此类推)。我只有一块硬盘,肯定就在/dev/sda中。

fdisk -l

确定了新分区所处设备后,输入如下命令,进入fdisk分区管理界面:

fdisk /dev/sda

进入fdisk界面后,如下图所示,按“F”(大写)查看新分区情况;再按“n”(小写)创建新分区,后面直接敲回车键,按默认值设置分区序号、分区起始扇区、分区结束扇区(注意:一定要记住这个分区号,在我机器上分配了两个新分区:sda4sda8,其中sda4用来挂载/home目录,sda8用来挂载/var目录);再按“w”(小写)将修改情况写入磁盘;最后按“q”(小写)退出fdisk分区管理界面。注意,在fdisk分区管理界面中,可以随时按“m”(小写)查看帮助
将Linux系统的home、var目录迁移到新分区

2.3 使用mkfs格式化新分区

使用如下命令格式化新分区,我这里使用ext4格式(我机器上增加的分区是sda4sda8,在你机器上肯定要根据步骤2.2中新分配的分区序号而定):

mkfs.ext4   /dev/sda4
mkfs.ext4   /dev/sda8

2.4 修改分区加载配置文件/etc/fstab

首先,使用如下命令查看新分区的UUID号:

# 查看sda4的UUID
sudo blkid | grep sda4
# 查看sda8的UUID
sudo blkid | grep sda8

请记住上述UUID号。
使用如下命令编辑分区加载配置文件:/etc/fstab

vi /etc/fstab

在文件尾部加入如下内容(注意:UUID=60d33ae6-dcc9-461a-a68c-35138c00264f对应的是我机器上的sda4分区,UUID=7dd563e8-856b-42d8-aa6f-53fc5e1913f7对应的是我机器上的sda8分区):

# /home is on /dev/sda4
UUID=60d33ae6-dcc9-461a-a68c-35138c00264f   /home    ext4          defaults       0       2 
# /var is on /dev/sda8
UUID=7dd563e8-856b-42d8-aa6f-53fc5e1913f7   /var     ext4          defaults       0       2

2.5 挂载新分区

/media目录中新建如下两个文件夹:

cd /media
mkdir home
mkdir var

使用mount命令将新分区挂载到上述目录:

mount /dev/sda4 /media/home
mount /dev/sda8 /media/var

2.6 将/home/var目录内容复制到挂载分区

使用如下命令(我已测试可用),将/home/var目录中的所有内容复制到挂载分区

rsync -aqxP /home/* /media/home
rsync -aqxP /var/* /media/var

网上还有另一种方法(我没有测试过,如感兴趣可以尝试一下,建议使用上面的方法):

cp -apx  /home/* /media/home
cp -apx  /var/* /media/var

2.7 将原有/home/var目录改名,并创建新的/home/var目录

使用如下命令,将原有/home/var目录改名:

mv /home /home.old
mv /var /var.old

使用如下命令,创建新的/home/var目录,以便重启电脑能挂载新分区sda4sda8(请看2.3步修改配置文件/etc/fstab来理解这么做的原因):

mkdir /home
mkdir /var

2.8 重启电脑

使用如下命令,重启电脑:

shutdown -r now

2.9 删除/home.old/var.old/media/home/media/var目录

重启电脑登录进入Ubuntu 16.04系统图形化界面后,按快捷键“Ctrl + Alt + T”键打开命令行终端,输入如下命令,删除/home.old/var.old/media/home/media/var目录,给/目录腾出空间:

sudo rm -rf /home.old
sudo rm -rf /var.old
sudo rm -rf /media/home
sudo rm -rf /media/var