随着网站文件总量不断增加,服务器容量越来越少,使用 对象存储OSS 将文件分离存储是一个方案,但如果体量比较小,对存储的需求还不是特别高,扩容硬盘也值得考虑。
除了增加容量之外,扩容硬盘还可以增加 IOPS,提升服务器性能。本文以扩容 ECS 系统盘为例,演示在线扩容。操作环境:
- 系统:CentOS 7
- 内核版本:3.10.0
如果是其他系统可以参考阿里云官方手册:《扩容概述》
购买硬盘容量
登录阿里云控制台【云盘】页面,可以看到当前正在使用的云盘列表。勾选需要扩容的云盘,点击“磁盘扩容”:
输入目标容量,勾选“在线扩容”,支付订单。
在线扩容意味着不用关闭服务器,扩容后立即生效,避免影响业务运行。在线扩容的条件可参考:《在线扩容云盘》
调整分区大小
支付成功后回到云盘控制台,可以看到硬盘容量已经提升。为避免错误操作导致数据丢失,建议先创建一个快照(操作方法),方便快速恢复。
通过 SSH 登录服务器,安装扩容格式化工具 growpart 或者 xfsprogs:
yum install cloud-utils-growpart
yum install xfsprogs
这两个工具通常情况下已经内置,终端会提示已安装。
使用 uname -a
查看内核版本,如果大于 3.6.0,可以根据本文的方法继续操作;如果小于 3.6.0,可以参考:《扩容分区》低内核版本部分。
使用 fdisk -l
命令查看磁盘信息,总的容量是 42.9 GB:
Disk /dev/vda: 42.9 GB, 42949672960 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: 0x000b1b45
Device Boot Start End Blocks Id System
/dev/vda1 * 2048 52420094 26209023+ 83 Linux
使用 df -h
命令查看分区大小,可以看到实际挂载的容量只有 25 GB:
Filesystem Size Used Avail Use% Mounted on
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 480K 496M 1% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 25G 15G 8.4G 65% /
tmpfs 100M 0 100M 0% /run/user/1000
/dev/vda1 是根目录,我们要把新增的容量添加到这里,该如何操作呢?
运行 growpart /dev/vda 1
命令,系统返回
CHANGED: partition=1 start=2048 old: size=52418047 end=52420095 new: size=83883999 end=83886047
接着再运行 resize2fs /dev/vda1
命令,系统返回
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vda1 is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/vda1 is now 10485499 blocks long.
此时再运行 df -h
查看分区情况,就会发现已经扩容成功了:
Filesystem Size Used Avail Use% Mounted on
devtmpfs 486M 0 486M 0% /dev
tmpfs 496M 0 496M 0% /dev/shm
tmpfs 496M 480K 496M 1% /run
tmpfs 496M 0 496M 0% /sys/fs/cgroup
/dev/vda1 40G 15G 23G 40% /
tmpfs 100M 0 100M 0% /run/user/1000
以上就是 ECS Linux 系统盘在线扩容的演示,如果你的服务器运行其他 Linux 发行版,或者内核版本低于 3.6.0,建议阅读阿里云官方文档获取帮助:《扩容分区_Linux 系统》;如果是 Windows 系统,可以参考:《扩容分区_Windows 系统》 。