阿里云ECS磁盘在线扩容
记录阿里云 ECS 磁盘在线扩容过程。
# 为什么需要磁盘扩容?
我们刚购买服务器的时候,可能没办法很准确地预估将来服务器上边需要储存多少东西,就没有太关注磁盘容量,也许就没有修改默认值(40G)。
当服务器运行一段时间,不断产生数据,有一天就会发现磁盘快占满了,那么服务器上运行的一些服务比如 Jenkins、ELK 等等,可能都会报错,无法正常运行。
这个时候就需要进行扩容了。
# 磁盘扩容
登录阿里云控制台,选择服务器实例,再选择本实例云盘,可以看到当前服务器的云盘信息,在最右边点击更多,选择磁盘扩容。
在跳转出来的确认订单页面中,勾选上在线扩容选项,然后输入自己想要的扩容后的容量,然后点击确认扩容,进行支付。
这一步很简单,但这只是扩容数据盘,只是这样操作的话,扩容还没有生效,需要再做后续的操作。
# 扩展分区和文件系统
我的服务器是 Linux 系统,CentOS 7.2,这里记录对应的操作方法。
# 安装扩容格式化工具 growpart
$ sudo yum install -y cloud-utils-growpart
# 查看现有云盘大小
运行 fdisk -l
命令查看现有云盘大小。
[deploy@macrowolf ~]$ sudo fdisk -l
磁盘 /dev/vda:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000d2717
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 83884031 41940992 83 Linux
2
3
4
5
6
7
8
9
10
11
返回云盘(/dev/vda)容量是50GiB。
# 查看云盘分区大小
运行 df -h
命令查看云盘分区大小。
[deploy@macrowolf ~]$ sudo df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/vda1 40G 36G 2.0G 95% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 2.1M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
overlay 40G 36G 2.0G 95% /var/lib/docker/overlay2/b658787d26f70caa38ba98f9ea6672fb54c5dc8977db417920efa64dd31bcdee/merged
//...
tmpfs 783M 0 783M 0% /run/user/1000
2
3
4
5
6
7
8
9
10
返回分区(/dev/vda1)容量是40GiB。
# 分区扩容
运行 growpart <DeviceName> <PartionNumber>
命令,调用 growpart
为需要扩容的云盘和对应的第几个分区扩容。
growpart /dev/vda 1
,表示为系统盘的第一个分区(/dev/vda1)扩容。
[deploy@macrowolf ~]$ sudo growpart /dev/vda 1
unexpected output in sfdisk --version [sfdisk,来自 util-linux 2.23.2]
2
返回了这个报错,可以运行 LANG=en_US.UTF-8
切换ECS实例的字符编码类型,然后再进行尝试。
[deploy@macrowolf ~]$ LANG=en_US.UTF-8
[deploy@macrowolf ~]$ sudo growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=83881984 end=83884032 new: size=104855519 end=104857567
2
3
# 扩容文件系统
运行 resize2fs <PartitionName>
命令调用 resize2fs
扩容文件系统。
[deploy@macrowolf ~]$ sudo resize2fs /dev/vda1
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/vda1 is now 13106939 blocks long.
2
3
4
5
# 再次查看云盘分区大小
[deploy@macrowolf ~]$ sudo df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 36G 12G 76% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 2.1M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
overlay 50G 36G 12G 76% /var/lib/docker/overlay2/b658787d26f70caa38ba98f9ea6672fb54c5dc8977db417920efa64dd31bcdee/merged
//...
tmpfs 783M 0 783M 0% /run/user/1000
2
3
4
5
6
7
8
9
10
可以看到分区(/dev/vda1)容量已经是50GiB,表示已经成功扩容。
在整个过程中,无需重启服务器,所以不会影响到服务器上正在运行的服务。