好记性不如烂笔头之Oracle 手动扩展卷volume

好记性不如烂笔头之Oracle 手动扩展卷volume

背景与核心痛点:随着在甲骨文云(OCI)上部署的容器、数据库与业务系统日渐增多,初始分配的引导卷容量(如 47GB)往往迅速告急。其实在 OCI 平台中,调整引导卷或附加块存储完全支持在线无损热扩容,无需关机或重启实例。只需在控制台调整目标卷大小,配合 Linux 内核设备重新扫描、growpart 分区拉伸与 resize2fs 文件系统重塑即可在 1 分钟内完成全盘扩容。

目录

扩容核心原理与操作流程

OCI 引导卷扩容属于标准的三层结构延伸:

  1. 云平台存储层:控制台修改卷大小并提交,底层虚拟磁盘空间扩充。
  2. 操作系统磁盘分区层:通过内核设备重新扫描(rescan),利用 growpart 自动扩充根分区扇区。
  3. 文件系统空间层:使用 resize2fs(针对 ext4)或 xfs_growfs(针对 XFS)无损扩展可用文件系统空间。

第一步:OCI 控制台在线调大卷容量

  1. 登录甲骨文云控制台,进入 计算 -> 实例 -> 点击目标实例。
  2. 在左侧资源菜单中点击 引导卷 (Boot Volume)。
  3. 点击引导卷右侧操作按钮 -> 选择 编辑 (Edit)。
  4. 在弹出窗口中,将卷大小修改为目标容量(例如由 47GB 增加至 100GB,注意免费总额度为 200GB)。
  5. 点击 保存更改,稍等片刻状态更新为绿色可用。

第二步:操作系统内核重新扫描块设备

通过 SSH 连接到实例终端,执行以下内核重新扫描命令以使操作系统感知到底层磁盘容量变更:

sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1
echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan

此时执行 lsblk 命令,可以看到物理块设备(如 /dev/sda)的总大小已经成功更新为扩容后的容量。

第三步:使用 growpart 扩展根分区

  1. 首先执行 df -h 查看当前挂载点信息,确认挂载在根目录 / 的分区名称(通常为 /dev/sda1 或 /dev/sda3)。
  2. 安装分区扩展工具(通常 Ubuntu 已内置):
    apt install cloud-guest-utils -y
    
  3. 执行分区扩容(注意设备名与分区编号之间有空格):
    # 若根目录对应 /dev/sda 的第 1 分区
    growpart /dev/sda 1
    
    若输出 CHANGED: partition=1 即代表分区表边界已成功扩至磁盘末尾。

第四步:刷新文件系统并验证生效

根据文件系统类型执行空间重塑:

针对 ext4 文件系统(默认)

resize2fs /dev/sda1

针对 xfs 文件系统

xfs_growfs /

执行完毕后再次运行 df -h 检查:

df -h

此时根分区可用空间已完全同步至 100GB,且所有正在运行的业务进程与服务无任何中断。

高频避坑与多分区注意要点

  • 无需关机:该流程全线支持热扩容,切勿重启或终止实例。
  • 只支持单向调大:OCI 块存储目前仅支持由小调大,不支持从大容量缩减,请按需适度扩充。
  • 分区序号确认:若磁盘存在 EFI、swap 或恢复分区,务必根据 lsblk 输出精准锁定根分区编号。