将Linux系统的home、var目录迁移到新分区
最开始安装Ubuntu 16.04系统时考虑欠周,给该系统分配的磁盘空间过少,运行了几次Docker以后,很快就提示磁盘空间已满。最简单的方法当然是分配一个更大的磁盘分区,然后在该分区上重装系统。但我在原系统中装了不少软件,不想重装系统,因此只能另辟蹊径。
按快捷键“Ctrl + Alt + T”键打开命令行终端,输入如下命令(题外话,可以使用cat /proc/partitions
命令查看现有各分区的总尺寸):
df -ah
查看磁盘空间使用情况,发现/home
、/var
目录占用空间较多,于是决定将/home
、/var
目录重新挂载到新的分区。网上有很多介绍这方面的文章,但都不太靠谱,一不小心,就会让系统重启进不了图形化界面。下面将我机器上的实际操作过程记录下来,以利于后续查询。
一、增加新分区
增加新分区的最简单的方式当然是加一块新硬盘,我比较穷,没钱买新硬盘,只能在挖掘潜能方面做文章。考虑到我的机器上还安装了Windows 10系统,但平时基本不用,于是就打上它的主意了。进入Windows 10系统,按如下步骤增加新分区:
1.1 打开控制面板
如下图所示,点击工具栏中的小圆圈,在搜索框中输入:“控制面板”,点击上方出现的“控制面板”程序。
1.2 打开管理工具
如下图所示,在控制面板界面中,点击“管理工具”程序。
1.3 打开计算机管理
如下图所示,在管理工具界面中,点击“计算机管理”程序。
1.4 打开磁盘管理
如下图所示,在计算机管理界面中,点击左侧的“磁盘管理”选项。
1.5 压缩卷
如下图所示,在磁盘管理界面中,选中Windows分区,点击鼠标右键,在弹出的菜单中选择“压缩卷”。
1.6 设置新分区大小
如下图所示,在压缩卷界面中,根据需要设置新分区的尺寸,点击“压缩”按钮。注意:对于压缩卷后产生的新分区,不要在Windows系统中进行任何格式化操作。
二、将/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”(小写)创建新分区,后面直接敲回车键,按默认值设置分区序号、分区起始扇区、分区结束扇区(注意:一定要记住这个分区号,在我机器上分配了两个新分区:sda4
和sda8
,其中sda4
用来挂载/home
目录,sda8
用来挂载/var
目录);再按“w”(小写)将修改情况写入磁盘;最后按“q”(小写)退出fdisk分区管理界面。注意,在fdisk分区管理界面中,可以随时按“m”(小写)查看帮助。
2.3 使用mkfs格式化新分区
使用如下命令格式化新分区,我这里使用ext4格式(我机器上增加的分区是sda4
和sda8
,在你机器上肯定要根据步骤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
目录,以便重启电脑能挂载新分区sda4
和sda8
(请看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
更多推荐
所有评论(0)