Linux操作系统中,/home目录下为各个普通用户的家目录,主要用于存放用户的配置信息及相关文件。若安装操作系统时,采用了home目录与根目录处在同一分区的分区策略,那么随着用户数据较多,很有可能将分区空间耗尽,导致系统崩溃。所以最好是将用户数据所在目录放在一个独立的分区上,但由于/home目录下已有一些用户数据,要想将home目录建立在一个独立的分区上,需要先迁移原有用户数据。 在迁移数据前,应提前通知用户系统维护期间禁止登陆,否则可能导致数据丢失。
1 划分分区
使用fdisk命令划分新的分区,fdisk的子命令p可以列出当前分区的状况,如上图,当前已有sda1、sda2、sda3、sda4、sda5五个分区;子命令n用来划分分区,可以指定初始扇区和终止扇区的位置(本例中初始扇区采用默认值,终止扇区在初始扇区的基础上增加10G),如图划分了一个10G大小的分区;子命令w将修改写入磁盘并退出。
划分分区后极有可能出现磁盘分区表与内存中缓存的分区表不同步的情况,如上图所示,WARNING提示分区表不同步,需手动同步分区表。在CentOS7中使用partprobe 命令同步分区表。
同步后使用lsblk命令可以看到新分的sda6分区。
2 创建文件系统
接下来需要为sda6创建文件系统,使用mkfs.ext4命令可以为分区创建ext4格式的文件系统。
创建完文件系统后可用blkid命令查看,如下图,sda6的文件系统已成功创建为ext4。
3 迁移数据
接下来便可以将/home下原有数据迁移至新分区上了,但由于/dev/sda6是磁盘设备,无法直接被用户使用。若要访问,需先将/dev/sda6挂载到某个目录上。 使用mkdir命令创建一个目录当做挂载点,然后使用mount命令将/dev/sda挂载到该目录下,挂载完后使用df命令可查看挂载是否成功,如下图。这样,访问/mnt/home目录就相当于访问/dev/sda6。
将当前家目录下的数据拷贝至/dev/sda6。
4 删除原数据
使用init 1 切换至单用户模式,以切断网络,防止系统维护期间用户访问数据丢失。此时远程控制软件(SecureCRT、Xshell等)已无法使用,需要在机器前操作。
如下图,已切换至单用户模式,输入root用户的口令即可。
在该模式下,删除原来的家目录rm -rf /home/*(事先最好做一份家目录的备份)。
5 将独立分区挂载至home目录
接下来只需要将/dev/sda6挂载到/home目录下,以后在/home目录下修改数据就是在独立分区/dev/sda6上修改数据。为达到开机自动挂载的效果,需将挂载信息写入配置文件/etc/fstab,如上图最后一行所示: UUID=8d59a22c-b571-4644-9876-dffde4a9b62c唯一标识了/dev/sda6分区;/home是挂载点;ext4是/dev/sda6的文件系统类型;defaults指明了挂载选项;第一个0处表示备份频率,0表示不备份;第二个0处表示是否进行文件系统的检查,0表示不检查。
保存退出后还未生效,需使用mount -a命令使配置生效,将/dev/sda6挂载到/home目录。 使用init 6 重启,重启后若可以正常访问/home目录,则数据迁移成功。
原创文章,作者:以梦为马,如若转载,请注明出处:http://www.178linux.com/84686