一、背景
有时候申请到的云端的机器初始容量较小,后期随着开发的深入,容量逐渐不够用,此时需要申请新的更大的云端硬盘,挂在到我们的工作目录。
二、步骤
1、查看磁盘信息
sudo fdisk -l
# 输出如下:
Disk /dev/vda: 142.9 GB, 142949672960 bytes, 83886080 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bc38e
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 83886046 41941999+ 83 Linux
Disk /dev/vdb: 314.7 GB, 314748364800 bytes, 419430400 sectors。 # /dev/vdb就是云盘,每个机器名称不一定一样,从大小进行区别
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
2、第一次挂在云盘时,需要格式化,如果云盘已经有内容了, 请勿随意格式化,需要root权限
sudo mkfs.ext4 /dev/vdb # 指定需要格式化的云盘,执行需要一点时间
# 输出如下:
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
13107200 inodes, 52428800 blocks
2621440 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2199912448
1600 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
3、因为之前工作目录在/home下,里面已经有很多内容了,并切也不能够随意将其重命名(会提示busy),为了保证新挂载的云盘能够保留之前的所有数据,我使用如下方法
创建一个新的挂载点,例如 /home1
sudo mkdir /home1
挂载新磁盘(先挂载到/home1上):
sudo mount /dev/sdb /home1
使用 rsync
来复制数据,以确保文件的权限和属性不变:
sudo rsync -av /home/ /home1/ # 注意,/不能少
这里我没有删除原始数据,再直接挂载到/home目录上
sudo mount -t ext4 /dev/vdb /home/
这种挂载方式是单次有效,下次重启机器时,挂载又会失效,需要修改配置文件
编辑配置文件使云盘开机自动挂载
sudo vim /etc/fstab
# 原/etc/fstab文件中有如下说明:
# When mounting the data disk, you need to add the nofail parameter
# Example
# /dev/vdb1 /mount_point ext4 defaults,nofail 0 0
# 添加下面一行内容:
UUID=0fc93335-1b90-4e3b-a13b-eb7765106f1d /home ext4 defaults,nofail 0 0
UUID通过如下方法查看:
sudo blkid # 这里要加sudo,不加sudo,可能返回到结果不是最新的,有可能只能看到/dev/vda1
/dev/vda1: UUID="a57c9f40-34fe-4763-909e-342bf8cc553f" TYPE="ext4"
/dev/vdb: UUID="0fc93335-1b90-4e3b-a13b-eb7765106f1d" TYPE="ext4"
# 保存,查看挂载详情
df -Th
如果挂载时,没有删除原来/home/work/目录下的文件,在/dev/vdb挂载到/home之后,之前的内容将不可访问,但是内容还依旧存在之前的磁盘上。将来如果想删除掉之前/home/work目录下的内容或者重新访问之前的内容,则需要将/etc/fstab配置文件中的UUID=0fc93335-1b90-4e3b-a13b-eb7765106f1d /home ext4 defaults,nofail 0 0这一行注释掉。然后重启开发机,此时/dev/vdb磁盘将不会挂载到/home目录,现在开发机上的/home目录就是之前的目录了,现在可以将之前的内容删除掉,再将刚刚注释掉内容解除注释之后,重启开发机即可,此时开机就会自动将云盘挂载到/home目录下了,并切里面的数据也能和之前/home目录下的数据一致。