You need to enable JavaScript to run this app.
导航

静态扩容云盘数据卷

最近更新时间2023.10.09 15:37:47

首次发布时间2023.10.09 15:37:47

随着业务发展和应用数据增长,当云盘使用空间不足时,您可以通过云盘扩容来解决磁盘容量不足的问题。本文针对云盘静态存储卷场景,为您介绍扩容云盘的详细操作。

前提条件

  • 已经将 csi-ebs 组件升级为最新版本。
  • 已经使用云盘静态存储卷,详细介绍参见:使用云盘静态存储卷
  • 已经通过 Pod 对应 PV Yaml 文件中volumeHandle的值,获取目标扩容云盘 ID。例如:volumeHandle: vol-k10sii****
  • 为了避免扩容失败导致数据丢失,建议在扩容前备份数据,详细介绍参见:使用云盘快照

操作步骤

本文提供不暂停应用实现在线扩容、暂停应用实现手动扩容两种方式,请根据实际业务场景按需选择。详细介绍和操作步骤如下:

方式一:不暂停应用实现在线扩容

此方式在扩容过程中不重启应用,可以保证业务的连续性,但若文件系统在线扩容的 IO 流量比较高,文件系统可能存在 IO 报错的风险。

步骤一:云盘数据卷扩容

  1. 登录 云服务器控制台,在左侧导航栏选择 存储 > 云盘,并在顶部菜单栏选择目标云盘所属地域。
  2. 在云盘管理页面,单击目标云盘右侧操作列中的 扩容,跳转到扩容云盘页面,按照引导依次配置。
  3. 在调整容量步骤,配置 新容量,完成后单击 提交订单

说明

配置的新容量不允许小于当前容量。

本场景将数据云盘vol-k10sii****从 100 GiB 扩容到 120 GiB,如下图所示:

alt

  1. 在挂载到实例步骤,将云盘挂载到实例,完成后单击 下一步
  2. 跳过扩展分区和文件系统步骤,直接单击 返回云盘列表,可在目标云盘概览页查看扩容后的云盘容量。

步骤二:文件系统扩容

  1. 登录目标云盘所在云服务器,详细介绍参见:登录 Linux 实例

  2. (可选)以 root 用户权限执行lsblk -f命令,查看目标扩容云盘是否已经创建文件系统并挂载文件夹。如下图所示,vdb已经获取文件系统和和挂载目录等信息;vdc信息为空,表示还没有文件系统。

alt

若目标扩容云盘已经拥有文件系统,可跳过此步骤;若目标扩容云盘并未创建创建文件系统,可依次执行以下命令,为云盘创建文件系统并挂载到文件夹。

mkfs.ext4  /dev/vdc         # 为云盘创建创建 ext4 类型的文件系统,/dev/vdc 表示云盘设备符。
mkdir /mnt/vdc              # 创建挂载点。
mount /dev/vdc /mnt/vdc/    # 将云盘 /dev/vdc 挂载到文件夹 /mnt/vdc/。
  1. 以 root 用户权限执行以下命令,查看云盘设备符情况。
fdisk -l                 # /dev/vda 表示系统盘,/dev/vdb 或 /dev/vdc 等表示数据盘,本场景的扩容目标是数据盘。

如下图所示,步骤一中扩容到 120 GiB 的云盘设备符为/dev/vdb。此时,可执行df -Th命令查看文件系统依然是 100 GiB。

alt

  1. 以 ext4 文件系统的vdb为例,执行以下命令,扩容文件系统。
resize2fs /dev/vdb       # /dev/vdb 表示上步骤中获取到的目标数据盘设备符。

如下图所示,回显符合预期并未报错,表示文件系统扩容成功。

alt

  1. 执行以下命令,查看文件系统扩容结果。
df -Th 

如下图所示,/dev/vdb文件系统已经扩容到 120 GiB。至此,云盘和文件系统扩容完成,可以正常使用。

alt

方式二:暂停应用实现手动扩容

此方式将暂停磁盘 IO,文件系统扩容数据更安全,但随着应用的停止,业务也会暂停一段时间。因此,请确保不会影响正常运作的前提下使用此方式进行云盘扩容。

步骤一:删除应用 Pod

  1. 通过删除 StatefulSet 或者将 Replica 配置为 0 的方式暂停应用。本场景以 mysql 应用为例,可执行以下命令,将 Pod 缩容为 0 个副本。
kubectl scale sts mysql --replicas=0

预期输出:

statefulset.apps/mysql scaled
  1. 执行以下命令,查看 Pod 是否删除。无任何输出表示已删除 MySQL 应用。
kubectl get pod | grep mysql

步骤二:云盘数据卷扩容

  1. 登录 云服务器控制台,在左侧导航栏选择 存储 > 云盘,并在顶部菜单栏选择目标云盘所属地域。
  2. 在云盘管理页面,单击目标云盘右侧操作列中的 扩容,跳转到扩容云盘页面,按照引导依次配置。
  3. 在调整容量步骤,配置 新容量,完成后单击 提交订单

说明

配置的新容量不允许小于当前容量。

本场景将数据云盘vol-k10sii****从 100 GiB 扩容到 120 GiB,如下图所示:

alt

  1. 在挂载到实例步骤,将云盘挂载到实例,完成后单击 下一步
  2. 跳过扩展分区和文件系统步骤,直接单击 返回云盘列表,可在目标云盘概览页查看扩容后的云盘容量。

步骤三:文件系统扩容

  1. 登录目标云盘所在云服务器,详细介绍参见:登录 Linux 实例

  2. (可选)以 root 用户权限执行lsblk -f命令,查看目标扩容云盘是否已经创建文件系统并挂载文件夹。如下图所示,vdb已经获取文件系统和和挂载目录等信息;vdc信息为空,表示还没有文件系统。

alt

若目标扩容云盘已经拥有文件系统,可跳过此步骤;若目标扩容云盘并未创建创建文件系统,可依次执行以下命令,为云盘创建文件系统并挂载到文件夹。

mkfs.ext4  /dev/vdc         # 为云盘创建创建 ext4 类型的文件系统,/dev/vdc 表示云盘设备符。
mkdir /mnt/vdc              # 创建挂载点。
mount /dev/vdc /mnt/vdc/    # 将云盘 /dev/vdc 挂载到文件夹 /mnt/vdc/。
  1. 以 root 用户权限执行以下命令,查看云盘设备符情况。
fdisk -l                 # /dev/vda 表示系统盘,/dev/vdb 或 /dev/vdc 等表示数据盘,本场景的扩容目标是数据盘。

如下图所示,步骤一中扩容到 120 GiB 的云盘设备符为/dev/vdb。此时,可执行df -Th命令查看文件系统依然是 100 GiB。

alt

  1. 以 ext4 文件系统的vdb为例,执行以下命令,扩容文件系统。
resize2fs /dev/vdb       # /dev/vdb 表示上步骤中获取到的目标数据盘设备符。

如下图所示,回显符合预期并未报错,表示文件系统扩容成功。

alt

  1. 执行以下命令,查看文件系统扩容结果。
df -Th 

如下图所示,/dev/vdb文件系统已经扩容到 120 GiB。至此,云盘和文件系统扩容完成,可以正常使用。

alt

步骤四:重启应用

  1. 执行以下命令,将 Pod 扩容为 2 个副本。
kubectl scale sts mysql --replicas=2

预期输出:

statefulset.apps/mysql scaled
  1. 执行以下命令,查看 Pod 是否恢复。从以下预期输出可知,mysql 应用已经恢复。
kubectl get pod | grep mysql

预期输出:

NAME           READY   STATUS    RESTARTS   AGE
mysql-0        1/1     Running   0          74s
mysql-1        1/1     Running   0          42s
  1. 执行以下命令,查看文件系统大小。从以下预期输出可知,/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

相关文档

更多云盘扩容相关详细介绍,可参见:扩容云盘