Ubuntu 挂载新硬盘并把home目录迁移到新硬盘

运维小白,在云服务器上部署了 Bitcoin Core daemon (bitcoind), 使用了主机的自带的 20G 存储。bitcoind 开始同步数据之后,第二天查看主机发现磁盘被用满了。
进入主机之后,敲命令时连自动补全都失效了:

cannot create temp file for here-document: No space left on device

悲催,之前一直以为某云服务商只要把硬盘加载到主机之后就会自动挂载。哎,智商捉急,然后开始了运维从入门到小白之路。

找到磁盘信息

sudo lshw -C disk


*-disk:0
     description: SCSI Disk
     physical id: 0.0.0
     bus info: scsi@2:0.0.0
     logical name: /dev/sda
     size: 20GiB (21GB)
     capabilities: partitioned partitioned:dos
     configuration: logicalsectorsize=512 sectorsize=512 signature=d6ee97c2
*-disk:1
     description: SCSI Disk
     physical id: 0.0.2
     bus info: scsi@2:0.0.2
     logical name: /dev/sdb
     size: 100GiB (107GB)
     capabilities: partitioned partitioned:dos
     configuration: logicalsectorsize=512 sectorsize=512 signature=5b9f9d07

可以看到有两块硬盘。

sudo fdisk -l | grep sd

Disk /dev/sdb: 100 GiB, 107374182400 bytes, 209715200 sectors
/dev/sdb1        2048 209715199 209713152  100G 83 Linux
Disk /dev/sdc: 2 GiB, 2147483648 bytes, 4194304 sectors
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
/dev/sda1  *     2048 41940991 41938944  20G 83 Linux

可以看到所有的存储设备,其中 sdb 就是我们即将要挂载到主机系统的硬盘。

挂载前设置硬盘

sudo fdisk /dev/sdb


Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help):

接着就是一些列命令行交互输入,输入 m 可看到所有的可用输入。大概知道了怎么操作之后,跟着下文的提示操作即可。

  1. 输入 p 查看 /dev/sdb 分区的状态
  2. 输入 n 创建 sdb 这块硬盘的分区
    1. p primary => 输入 p
    2. Partition number => 全部存储分一个区,所以输入 1
    3. 接下来选项默认即可
  3. 最后一步输入 w 保存并退出 Command 状态

分区成功之后,接着就是格式化硬盘。

sudo mkfs.ext3 /dev/sdb1

迁移旧的 home 目录文件到新硬盘

首先,你得挂载已经分区好的硬盘,然后把 home 目录下的全部文件拷贝到硬盘挂载的目录下。然后删除 home 目录,最后把第一步挂载好的新硬盘重新挂载在 home 目录下。下文是详细步骤。
这部分的内容得使用 root 用户登录主机,因为涉及到把 home 目录删除,所有的非 root 用户都会失效。

  1. 挂载设置好的硬盘
    sudo mkdir /mnt/tmp
    sudo mount /dev/sdb1 /mnt/tmp
    
  2. 同步 home 目录所有文件,删除之前的 home 目录下的所有文件
    sudo rsync -avx /home/ /mnt/tmp
    
    确定同步成功之后,删除旧 home 目录
    rm -rf /home/*  #deletes the old home
    //卸载 /home
    umount -l /home
    
  3. 重新挂载新硬盘并设置启动挂载
    sudo mount /dev/sdb1 /home
    
    设置系统启动挂载需要得到硬盘的信息
    sudo blkid
    /dev/sdb1: UUID="175ab25f-5190-4df7-8795-8a00a0f78fd6" TYPE="ext3" PARTUUID="5b9f9d07-01"
    /dev/sdc: LABEL="YUNIFYSWAP" UUID="f490fae5-73c7-47a0-88df-084f3ed627e0" TYPE="swap"
    /dev/sda1: UUID="5c51f0c7-6ad1-41e5-8026-a75466a07617" TYPE="ext4" PARTUUID="d6ee97c2-01"
    
    获取到的 UUIDTYPE 在下文会用到。
    接着编辑 /etc/fstab 文件,把以下代码添加到最后
    UUID=175ab25f-5190-4df7-8795-8a00a0f78fd6 /home           ext4    defaults      0       2
    

结束

运行 df -h 即可看到我们新挂载在 home 目录的硬盘设备

Filesystem      Size  Used Avail Use% Mounted on
udev            982M     0  982M   0% /dev
tmpfs           201M   12M  190M   6% /run
/dev/sda1        20G  2.8G   16G  16% /
tmpfs          1001M     0 1001M   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs          1001M     0 1001M   0% /sys/fs/cgroup
tmpfs           100K     0  100K   0% /run/lxcfs/controllers
tmpfs           201M     0  201M   0% /run/user/0
/dev/sdb1        99G   20G   75G  21% /home
tmpfs           201M     0  201M   0% /run/user/1001

/dev/sdb1 99G 20G 75G 21% /home 就是我们最终添加的,此刻可以退出 root 用户并用之前 home 目录下的用户登录主机了。

0 条评论
您想说点什么吗?