云服务器存储扩容详解
2020-01-20阅读 6640
环境说明
Linux操作系统:CentOS Linux release 7.6.1810 (Core)
平台环境:腾讯云CVM,CBS
本教程相关视频教程:腾讯云大学-云服务器存储扩容
1. 存储扩容概述
随着业务的发展,业务数据不停的增长,原有的磁盘空间可能会出现磁盘空间不够用的情况,因此,需要对磁盘空间进行扩容,以满足业务数据增长的需求,以下图为例,假如起初购买了100G磁盘空间,随着数据的不停增长,原有100G空间不够用了,将空间扩容至200G,CBS是腾讯云提供用于云服务器的持久性数据块级存储服务,云盘具有弹性,按需扩容特性,云盘可以任意的按需扩容。
存储扩容概述
不过云盘扩容时不是所有的场景下都可以任意扩容,云盘扩容具有两个限制:
- 系统盘不支持扩容,理论上系统盘也能够支持扩容,系统盘存放操作系统数据,扩容可能会造成系统启动异常
- 本地盘不支持扩容,本地盘使用宿主机的本地盘,本地盘弹性扩容能力没有云盘灵活,无法支持弹性按需扩容
要深入掌握云盘的扩容,需要掌握云盘的使用方式,在Linux下通常有如下三种使用方式:
- 裸设备创建文件系统,不需要创建任何分区,直接在裸盘上创建文件系统
- 磁盘上创建MBR格式的分区,适用于小于2T的多个磁盘分区的场景
- 磁盘上创建GPT格式的分区,适用于大于2T的多个磁盘分区的场景
2. Linux云服务器存储扩容
2.1. 裸设备磁盘使用
Linux系统中可以直接在裸设备磁盘上创建文件系统,即磁盘不需要创建任何磁盘分区,直接在磁盘上创文件文件系统并挂载使用,其具有如下特点:
- 磁盘不需要多个分区
- 适用于大于2T磁盘
- 简单易使用
- 后期支持在线扩容
裸设备文件创建文件系统
上图所示是在Linux系统中直接在裸设备创建文件系统的操作步骤,先在控制台购买好云盘并将其挂载到CVM中,然后登陆到Linux系统中对磁盘格式化文件系统并挂载使用,控制台购买和挂载请自行操作,如下演示在Linux系统中裸设备文件系统的使用步骤:
1、 登陆操作系统,通过fdisk -l获取磁盘的名称,系统有两块磁盘vda和vdb,/dev/vdb是我们操作的磁盘
[root@VM_0_89_centos ~]# fdisk -l Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors #vda为系统盘 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: 0x0009ac89 Device Boot Start End Blocks Id System /dev/vda1 * 2048 104857566 52427759+ 83 Linux Disk /dev/vdb: 107.4 GB, 107374182400 bytes, 209715200 sectors #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、直接在磁盘上创建文件系统(注:并未在磁盘上创建任何分区),根据需要格式化为ext4或xfs格式
[root@VM_0_89_centos ~]# mkfs.ext4 /dev/vdb #创建文件ext4文件系统 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 6553600 inodes, 26214400 blocks 1310720 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=2174746624 800 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 备注:如果要创建为xfs则使用mkfs.xfs /dev/vdb
3、创建好文件系统后即可挂载到系统中使用,使用方式有两种:临时mount和编写fstab实现持久性挂载,线上环境推荐使用编写fstab的方式,避免机器下次重启后磁盘信息未加载,挂载名称推荐使用UUID
blkid获取磁盘UUID信息 [root@VM_0_89_centos ~]# blkid /dev/vdb /dev/vdb: UUID="7fb2c90a-fcd1-472c-b07c-8a20e2e9a436" TYPE="ext4" 编写/etc/fstab,其内容如下 UUID="7fb2c90a-fcd1-472c-b07c-8a20e2e9a436" /data ext4 defaults 0 0
4、挂载点目录/data需要提前创建好,然后执行mount -a进行加载,mount -a是系统启动时之行的指令,如果fstab编写有误要及时修复,避免影响下次开机启动
执行挂载操作 [root@VM_0_89_centos ~]# mount -a 检查挂载情况 [root@VM_0_89_centos ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 485M 0 485M 0% /dev tmpfs 496M 24K 496M 1% /dev/shm tmpfs 496M 444K 496M 1% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda1 50G 1.8G 46G 4% / tmpfs 100M 0 100M 0% /run/user/0 /dev/vdb 99G 61M 94G 1% /data #vdb磁盘已顺利挂载到系统中,大小为100G
至此,基于Linux系统上使用裸盘构建文件系统并使用操作演示完毕,通过操作可知,裸盘上创建文件系统方式不需要对磁盘进行分区,操作便捷容易,且方便扩容,下章节中演示基于裸设备文件文件系统存储空间扩容。
2.2 裸设备磁盘扩容
裸设备扩容
上述步骤是裸设备磁盘的扩容方式,扩容过程中存在数据损坏的风险,为了避免扩容过程中误操作,强烈建议扩容前对磁盘做快照,避免数据损坏时可以做恢复,谨记!做完快照后在控制台完成磁盘的扩容,扩容完毕后需要在操作系统中识别到扩容的空间,以磁盘扩容至200G为例,演示在Linux中裸设备扩容的操作过程:
1、 确认磁盘的使用方式,通过fdisk -l查看磁盘并未创建有任何磁盘分区
[root@VM_0_89_centos ~]# fdisk -l /dev/vdb Disk /dev/vdb: 214.7 GB, 214748364800 bytes, 419430400 sectors #磁盘空间已扩容至200G Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes #当前磁盘上未创建任何分区 #使用blkid查看vdb磁盘文件系统的情况,可得知,当前/dev/vdb未创建磁盘分区,切构建了ext4文件系统 [root@VM_0_89_centos ~]# blkid /dev/sr0: UUID="2020-01-13-22-30-05-00" LABEL="config-2" TYPE="iso9660" /dev/vda1: UUID="4b499d76-769a-40a0-93dc-4a31a59add28" TYPE="ext4" /dev/vdb: UUID="7fb2c90a-fcd1-472c-b07c-8a20e2e9a436" TYPE="ext4" #直接在裸盘上创建ext4文件系统
2、确认为云盘的扩容方式为裸盘后,根据文件系统的类型,在文件系统层面扩容以识别到云盘的扩容空间
[root@VM_0_89_centos ~]# resize2fs /dev/vdb resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/vdb is mounted on /data; on-line resizing required old_desc_blocks = 13, new_desc_blocks = 25 The filesystem on /dev/vdb is now 52428800 blocks long. #提示已经扩容至52428800个block 备注:如果是xfs,则使用xfs_growfs /dev/vdb扩容
3、校验磁盘空间扩容情况,使用df -H校验,vdb磁盘已在文件系统扩容至200G
[root@VM_0_89_centos ~]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 485M 0 485M 0% /dev tmpfs 496M 24K 496M 1% /dev/shm tmpfs 496M 444K 496M 1% /run tmpfs 496M 0 496M 0% /sys/fs/cgroup /dev/vda1 50G 1.8G 46G 4% / tmpfs 100M 0 100M 0% /run/user/0 /dev/vdb 197G 60M 188G 1% /data #已扩容至200G
通过上述的操作演示可知,裸盘上并未创建任何磁盘分区,因此扩容过程相当便捷,直接在文件系统上扩容即可,使用简单,这也是云上推荐使用方式。