Ubuntu 16.04 /home 目录迁移到独立分区的方法
1 简介
Ubuntu分区方案一般有下面三种:
- /boot 200M、/ 30G、/home 剩余全部空间、swap 8G
- / 剩余全部空间、swap 8G
- / 30G、/home 剩余全部空间、swap 8G
第一种分区方案是为了将/boot独立出来,防止操作系统无法启动,这样分的好处博主没体会到,好像/boot没什么用,而且把磁盘搞得支离破碎的,所以博主一般不用这种分法。
第二种分区方案是懒人方案,或者说新手方案,简单粗暴,对于装系统像家常便饭一样的博主来说,这样分区最快啦,毕竟在实体机上操作分区需要小心翼翼,耗费心力啊。
第三种方案的好处是/home分区被独立出来了,这样以后重装系统的时候就可以保留/home分区里的用户数据了,就像重装windows只需要格式化C盘一样,重装Linux只需要格式化 / 分区即可。
第三种分区方案是博主推荐的方案,因为重装Linux系统可以保留用户数据
如果已经按照第二种方案,只分了一个 / 分区怎么办呢?
方法是将/home迁移到独立的分区中,下面我们就来将/home独立出来。
2 环境
磁盘操作是危险操作,如果你还不熟练的话,请在虚拟机中操作,这里推荐vmware虚拟机。博主的环境如下:
- win7
- vmware 12
- Ubuntu 16.04 iso镜像
3 安装Ubuntu虚拟机
到Ubuntu官网下载Ubuntu 16.04的镜像,下载地址:
然后百度下载vmware,下载地址如下:
**也很容易,百度一下vmware***就可以了。这里博主就带过了,接下来要创建Ubuntu虚拟机,也很简单,一直点下一步就可以了,只说两点。
要vmware开机加载镜像文件,则可以右键虚拟机,然后点击设置,选择CD/DVD选项,选择使用ISO镜像文件,并且勾选启动时连接的框,然后重启虚拟机就可以了,不需要U盘,如下图所示:
分区的时候按照第2种方案分区,即 swap 8G,/ 剩余空间。但是要注意保留一部分空闲分区,便于我们创建新的分区,博主的分区如下图所示:
如果你全部分完了也没关系,在vmware中增加虚拟机的磁盘空间即可。如下图所示:
4 准备新的ext4分区
/home要挂载到独立的分区中,所以首先我们得有一个新的ext4分区。要得到一个新的分区有两种方法:
- 压缩现有分区,创建新分区,推荐Gparted工具
- 从空闲分区创建新的分区
这里我们用安装的时候预留的空闲分区来创建新分区。首先用下面的命令来看看挂载的情况:
df -h
- 1
- 1
可以看到只有一个分区/dev/sda1被挂载在了/目录上面,其余的挂载点挂载的都是内存上,swap是没有挂载点的。如下图所示:
接着再来看看分区的情况:
sudo fdisk -l
- 1
- 1
可以看到只有两个分区,sda1和sda5,sda2是扩展分区,扩展分区必须再划分成逻辑分区才能使用,逻辑分区的区号从5开始,因此只有2个分区,而sda5分区是swap,如下图所示:
接下来我们用Gparted来分区。Gparted是Linux下的无损分区工具,图形操作界面非常简单,如果是实体机,需要将Gparted用软碟通刻录到U盘,然后从U盘启动,如果是虚拟机,则直接启动时候加载Gparted镜像就可以了。Gparted下载地址:
右键虚拟机,点击设置,CD/DVD选项选择Gparted镜像,然后启动虚拟机,就可以进入Gparted界面了。如果不能启动到Gparted,则需要调整一下vmware虚拟机的启动顺序。先关闭虚拟机,然后选择启动到固件,如下图所示:
这时候就进入了bios设置,切换到boot选项卡,然后按 +/- 号键来调整启动顺序,把CD-ROM调整到Hard Disk前面,调整完毕后按F10键保存退出,如下图所示:
一路按回车键,就进入了Gparted的界面,如图所示,右边灰色的就是空闲分区:
对灰色区域点右键,新建分区就可以了,拖动进度条,然后点击add,然后在点击Apply,建好之后的分区如下图所示:
好了,到这里就准备好了新的分区,下面我们来独立/home目录。
5 /home目录独立
首先执行下面的命令,查询刚刚创建的/dev/sda3分区的uuid:
sudo blkid
- 1
- 1
打开/etc/fstab:
sudo gedit /etc/fstab
- 1
- 1
添加下面一行:
UUID=782e0333-6722-4506-bf73-4353fc3ccfc6 /media/home ext4 nodev,nosuid 0 2
- 1
- 1
这里的UUID替换为我们刚创建的分区/dev/sda3的uuid
注意,和其他行的格式要一致,第一个空是空格,后面的空都是Tab键
接着创建目录:
sudo mkdir /media/home
- 1
- 1
将/dev/sda3挂载到/media/home:
sudo mount -a
- 1
- 1
复制/home到/media/home:
sudo rsync -aXS /home/. /media/home/.
- 1
- 1
这个过程需要一点时间,等待命令完成。接着执行下面的命令:
cd /
sudo mv /home /home_backup
sudo mkdir /home
- 1
- 2
- 3
- 1
- 2
- 3
这个时候创建了一个新的/home目录,接着再打开/etc/fstab:
sudo nano /etc/fstab
- 1
- 1
将/dev/sda3分区挂载点由/media/home改为/home,也就是将下面这行:
UUID=782e0333-6722-4506-bf73-4353fc3ccfc6 /media/home ext4 nodev,nosuid 0 2
- 1
- 1
改为:
UUID=782e0333-6722-4506-bf73-4353fc3ccfc6 /home ext4 nodev,nosuid 0 2
- 1
- 1
修改完后用 ctrl + o 来保存,ctrl + x 退出。然后执行下面的命令重写挂载:
sudo mount -a
- 1
- 1
最后删除/home_backup:
sudo rm -rf /home_backup
- 1
- 1
现在我们再来看看分区的挂载情况:
df -h
- 1
- 1
对比前面的图片,就可以发现/home已经挂载到/dev/sda3上去了。
好了,到这里我们就把/home成功的独立出来了。
6 重装Ubuntu
我们要把/home独立出来,就是为了以后重装系统时保留用户数据,下面来操作。
设置虚拟机开机加载Ubuntu的系统镜像,然后设置从CD启动,具体步骤参照上面加载Gparted镜像的步骤,这样就进入了装系统的步骤,选择自定义选项,如下图:
可以看到之前已经分好的sda1,sda3,sda5三个分区,如图所示:
点击sda1分区选择ext4,不要改变分区大小,挂载点选择 /,如图所示:
点击sda3分区,选择ext4,不要改变分区大小,挂载点选择 /home,如图所示:
sda5是swap分区,不用管它,接着在/dev/sda1后面的是否格式化选框中勾选,但不要勾选/dev/sda3分区,否则/home分区会被格式化,那么用户数据就丢失了。如下图所示:
好了,接着就开始重装系统了,经过博主亲测,这样重装系统不会丢掉/home下面的数据,即使装了Ubuntu 16.04后重装Ubuntu 14.04也不会丢掉数据。
再也不用每次重装Linux都把所有数据都干掉了。
7 总结
博主是参考下面这篇文章来实践的,当然是英文的啦:
/home分区独立,经过博主亲手实践,写博客记录下来。转载请注明来自”梧桐那时雨”的博客。
如果你在实践中遇到什么问题,欢迎给我留言。