实操记录一下阿里云数据盘的扩容记录

作者

有台阿里云的服务器,数据盘利用率到了90%,需要立马扩容。之前没有操作过,担心把数据搞丢了。就在阿里云上按量购买了一台服务器测试下,这里记录一下。

首先购买的服务器的系统用centos 7.8和线上的一样。(阿里云的磁盘扩容文档,分为linux和windows两类),所有的linux系统应该都一样。
阿里云
这里需要一个额外的数据盘20G。最终扩容的结果是要把这个20G硬盘,扩容至30G。

用的一些linux命令的简介

  1. lsblk -- 列出块设备,还可以查看到具体的分区情况
  2. fdiks -- 创建和维护磁盘分区的程序
  3. growpart -- 调整分区的一个命令,磁盘中未使用的空间,调整到指定的分区中
  4. blkid -- 查看分区的类型/属性
  5. resize2fs -- 扩容文件系统的大小
  6. df -- 查看linux服务器的文件系统的磁盘空间占用情况

如果遇到 growpart 命令不存在

yum install cloud-utils-growpart
#yum install xfsprogs

阿里云磁盘扩容的操作步骤

  1. 登陆阿里云控制台对需要操作的磁盘,进行快照。!!数据安全第一位
  2. 阿里云控制台扩充磁盘的大小,并重启。
  3. 扩容分区,扩容文件系统。

准备工作(正常扩容不用这个步骤,这里是准备一个需要扩容的磁盘)

因为是新使用的一块磁盘,没有格式化和建立文件系统,所以首先进行格式化和建立文件系统的操作。

fdisk -l

Disk /dev/vda: 21.5 GB, 21474836480 bytes, 41943040 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: 0x000c07c3

   Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048    41943039    20970496   83  Linux

Disk /dev/vdb: 21.5 GB, 21474836480 bytes, 41943040 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

可以看到第二块硬盘 /dev/vdb还没有使用, 使用lsblk也可以。

 lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  20G  0 disk
└─vda1 253:1    0  20G  0 part /
vdb    253:16   0  20G  0 disk

创建分区

fdisk /dev/vdb
# 输入 n 新建一个分区,这里测试,一路回车 最后 输入 w

最后看到 The partition table has been altered! 表示操作成功。

操作结果是在 /dev/vdb 创建一个分区,这个分区占用的整块的磁盘空间。

使用 mkfs.ext4 /dev/vdb1 创建文件系统

mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
...
Writing superblocks and filesystem accounting information: done

进行挂载操作

mkdir /data
mount /dev/vdb1 /data
echo "/dev/vdb1 /data ext4 defaults 0 0" >> /etc/fstab

这样扩容的准备工作就做好了,

lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  20G  0 disk
└─vda1 253:1    0  20G  0 part /
vdb    253:16   0  20G  0 disk
└─vdb1 253:17   0  20G  0 part /data

这里可以看到一个可以正常使用的磁盘 /dev/vdb ,分区已经做好,文件夹系统也正常。

具体的操作的步骤

扩容前查看一下文件系统的信息

 df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        461M     0  461M   0% /dev
tmpfs           471M     0  471M   0% /dev/shm
tmpfs           471M  464K  471M   1% /run
tmpfs           471M     0  471M   0% /sys/fs/cgroup
/dev/vda1        20G  1.9G   17G  11% /
tmpfs            95M     0   95M   0% /run/user/0
/dev/vdb1        20G   45M   19G   1% /data

这里最终操作的结果是文件系统 /dev/vdb1 的大小是 30G
扩容到30G
1) -- 阿里云控制台调整磁盘大小,并重启。(操作前记得快照,防止误操作导致数据丢失)
2) -- 连接服务器 查看下磁盘的信息

 lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  20G  0 disk
└─vda1 253:1    0  20G  0 part /
vdb    253:16   0  30G  0 disk
└─vdb1 253:17   0  20G  0 part /data

可以看到磁盘 vdb 磁盘已经到30G, 分区 vdb1 占用的是20G (通过df可以看到文件系统也是20g)。

扩充分区

# @第一个参数是 磁盘
# @第二个参数是 那个分区
growpart /dev/vdb 1
CHANGED: partition=1 start=2048 old: size=41940992 end=41943040 new: size=62912479 end=62914527

# 再次查看磁盘信息,可以看到 vdb1 分区已经完整的占用30G (df 中文件系统还是20G)
lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  20G  0 disk
└─vda1 253:1    0  20G  0 part /
vdb    253:16   0  30G  0 disk
└─vdb1 253:17   0  30G  0 part /data

扩容文件系统

resize2fs /dev/vdb1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vdb1 is mounted on /data; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vdb1 is now 7864059 blocks long.

查看结果

df -h | grep "vdb1"
/dev/vdb1        30G   44M   28G   1% /data

可以看到文件系统已经调整到了 30G

总结

阿里云磁盘扩容话比较简单的, 其实操作是调整了三个大小。
1. 磁盘大小 -- 通过阿里云控制台调整(调整后重启)
2. 分区大小 -- 通过 growpart /dev/vdb 1
3. 文件系统大小 -- 通过 resize2fs /dev/vdb1