切换home目录

介绍

帮b’5Y+2’同学,解决一个磁盘挂载的问题,故记录一下,方便学习

目的

事情是这样的,原本这台Linux上的/home目录不够用了,所以决定更换/home目录,也就是把其他盘挂载在/home上。但得做好数据迁移的工作。

流程

  1. 首先,使用sudo fdisk -l查看主机上有哪些硬盘,我们这里主要会涉及到两个,我们要做的就是把3.7T的sdb1挂载到/home上即可。

    1
    2
    3
    Device     Start        End    Sectors  Size Type
    /dev/sda7 416980992 3750748159 3333767168 1.6T 83 Linux
    /dev/sdb1 34 7814035215 7814035182 3.7T Linux filesystem
  2. 使用df -h查看 磁盘信息,可以看到,sdb1已经被挂载到/data目录上了,我们使用sudo umount /data把磁盘卸载掉

    1
    /dev/sdb1       3.6T  1.3G  3.4T   1% /data
  3. 接着在创建一个目录/tmp/home,使用sudo mount /dev/sdb1 /tmp/home,这时候df -h查看可以看到/dev/sdb1 已经被挂载到/tmp/home目录了

    1
    /dev/sdb1       3.6T  1.3G  3.4T   1% /tmp/home
  4. 现在将原本/home的数据同步到/tmp/home,使用sudo rsync -aXS /home/. /tmp/home/.

  5. 最后理论上应该要修改原本/home目录名字,然后挂载sdb1到/home即可。但是突然发现原本的/home已经是一个磁盘挂载了,是/dev/sda7的挂载,所以无法改名。尝试卸载/dev/sda7,无法卸载,因为有很多占用。所以这里决定大胆一点,直接修改系统的fstab,也就是管理系统启动时自动挂载磁盘的,再次开机就会自动把sdb1挂载到/home目录,sda7就先不管了。

  6. 查看fstab,可以看到原本的sdb1挂载在/data目录,sda7挂载在home目录

    1
    2
    3
    4
    # /data was on /dev/sdb1 during installation
    /dev/sdb1 /data ext4 defaults 0 2
    # /home was on /dev/sda7 during installation
    UUID=ef7e9942-c6d3-467c-af71-2c2cec7cd752 /home ext4 defaults 0 2
  7. 使用blkid查看磁盘uuid

    1
    /dev/sdb1: UUID="7dc28a60-ec60-4d65-b2b8-e40c9414e1c3"
  8. 修改fstab,讲原本/data的挂载注释掉,将原本/home目录挂载的uuid修改为sdb1的uuid

    1
    2
    3
    4
    # /data was on /dev/sdb1 during installation
    # /dev/sdb1 /data ext4 defaults 0 2
    # /home was on /dev/sda7 during installation
    UUID=7dc28a60-ec60-4d65-b2b8-e40c9414e1c3 /home ext4 defaults 0 2
  9. 此时重启系统,理论上就会把我们已经同步好数据的sdb1挂载到/home目录上了,和原本没有任何区别。重启机器,成功!