随着业务发展和应用数据增长,当云盘使用空间不足时,您可以通过云盘扩容来解决磁盘容量不足的问题。本文针对云盘静态存储卷场景,为您介绍扩容云盘的详细操作。
volumeHandle
的值,获取目标扩容云盘 ID。例如:volumeHandle: vol-k10sii****
。本文提供不暂停应用实现在线扩容、暂停应用实现手动扩容两种方式,请根据实际业务场景按需选择。详细介绍和操作步骤如下:
此方式在扩容过程中不重启应用,可以保证业务的连续性,但若文件系统在线扩容的 IO 流量比较高,文件系统可能存在 IO 报错的风险。
说明
配置的新容量不允许小于当前容量。
本场景将数据云盘vol-k10sii****
从 100 GiB 扩容到 120 GiB,如下图所示:
登录目标云盘所在云服务器,详细介绍参见:登录 Linux 实例。
(可选)以 root 用户权限执行lsblk -f
命令,查看目标扩容云盘是否已经创建文件系统并挂载文件夹。如下图所示,vdb
已经获取文件系统和和挂载目录等信息;vdc
信息为空,表示还没有文件系统。
若目标扩容云盘已经拥有文件系统,可跳过此步骤;若目标扩容云盘并未创建创建文件系统,可依次执行以下命令,为云盘创建文件系统并挂载到文件夹。
mkfs.ext4 /dev/vdc # 为云盘创建创建 ext4 类型的文件系统,/dev/vdc 表示云盘设备符。 mkdir /mnt/vdc # 创建挂载点。 mount /dev/vdc /mnt/vdc/ # 将云盘 /dev/vdc 挂载到文件夹 /mnt/vdc/。
fdisk -l # /dev/vda 表示系统盘,/dev/vdb 或 /dev/vdc 等表示数据盘,本场景的扩容目标是数据盘。
如下图所示,步骤一中扩容到 120 GiB 的云盘设备符为/dev/vdb
。此时,可执行df -Th
命令查看文件系统依然是 100 GiB。
vdb
为例,执行以下命令,扩容文件系统。resize2fs /dev/vdb # /dev/vdb 表示上步骤中获取到的目标数据盘设备符。
如下图所示,回显符合预期并未报错,表示文件系统扩容成功。
df -Th
如下图所示,/dev/vdb
文件系统已经扩容到 120 GiB。至此,云盘和文件系统扩容完成,可以正常使用。
此方式将暂停磁盘 IO,文件系统扩容数据更安全,但随着应用的停止,业务也会暂停一段时间。因此,请确保不会影响正常运作的前提下使用此方式进行云盘扩容。
kubectl scale sts mysql --replicas=0
预期输出:
statefulset.apps/mysql scaled
kubectl get pod | grep mysql
说明
配置的新容量不允许小于当前容量。
本场景将数据云盘vol-k10sii****
从 100 GiB 扩容到 120 GiB,如下图所示:
登录目标云盘所在云服务器,详细介绍参见:登录 Linux 实例。
(可选)以 root 用户权限执行lsblk -f
命令,查看目标扩容云盘是否已经创建文件系统并挂载文件夹。如下图所示,vdb
已经获取文件系统和和挂载目录等信息;vdc
信息为空,表示还没有文件系统。
若目标扩容云盘已经拥有文件系统,可跳过此步骤;若目标扩容云盘并未创建创建文件系统,可依次执行以下命令,为云盘创建文件系统并挂载到文件夹。
mkfs.ext4 /dev/vdc # 为云盘创建创建 ext4 类型的文件系统,/dev/vdc 表示云盘设备符。 mkdir /mnt/vdc # 创建挂载点。 mount /dev/vdc /mnt/vdc/ # 将云盘 /dev/vdc 挂载到文件夹 /mnt/vdc/。
fdisk -l # /dev/vda 表示系统盘,/dev/vdb 或 /dev/vdc 等表示数据盘,本场景的扩容目标是数据盘。
如下图所示,步骤一中扩容到 120 GiB 的云盘设备符为/dev/vdb
。此时,可执行df -Th
命令查看文件系统依然是 100 GiB。
vdb
为例,执行以下命令,扩容文件系统。resize2fs /dev/vdb # /dev/vdb 表示上步骤中获取到的目标数据盘设备符。
如下图所示,回显符合预期并未报错,表示文件系统扩容成功。
df -Th
如下图所示,/dev/vdb
文件系统已经扩容到 120 GiB。至此,云盘和文件系统扩容完成,可以正常使用。
kubectl scale sts mysql --replicas=2
预期输出:
statefulset.apps/mysql scaled
kubectl get pod | grep mysql
预期输出:
NAME READY STATUS RESTARTS AGE mysql-0 1/1 Running 0 74s mysql-1 1/1 Running 0 42s
/dev/vdb
文件系统存储空间为 120 GiB。kubectl exec mysql-0 -- df /data
预期输出:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/vdb 12330192 180114 123084512 1% /data
更多云盘扩容相关详细介绍,可参见:扩容云盘。