跳到主要内容

Ubuntu下调整cloud-init镜像磁盘大小

1. 问题背景

使用cloud-init创建的Ubuntu镜像默认磁盘空间较小(如10GB),当需要更大存储空间时,需手动扩展磁盘分区。

2. 准备工作

2.1 检查当前磁盘布局

lsblk
fdisk -l

2.2 确认文件系统类型

df -Th

3. 调整磁盘大小步骤

3.1 使用云平台控制台扩展磁盘

  1. 在AWS/Azure/GCP等平台将磁盘扩容至所需大小
  2. 重启实例使新容量生效

3.2 扩展分区表

growpart /dev/vda 1

3.3 扩展文件系统

对于ext4文件系统:

resize2fs /dev/vda1

对于xfs文件系统:

xfs_growfs /

4. 验证扩容结果

df -h
lsblk

5. 自动化方案

5.1 创建cloud-init配置

#cloud-config
resize_rootfs: true
growpart:
mode: auto
devices: ['/']

5.2 使用Ansible Playbook

- hosts: all
tasks:
- name: Install cloud-utils
apt:
name: cloud-utils
state: present

- name: Grow root partition
command: growpart /dev/vda 1

- name: Resize filesystem
command: resize2fs /dev/vda1

6. 常见问题解决

6.1 设备忙错误

umount /dev/vda1
e2fsck -f /dev/vda1
resize2fs /dev/vda1
mount /dev/vda1

6.2 分区表损坏

fdisk /dev/vda
# 删除并重建分区(注意不格式化)

7. 最佳实践

  1. 备份数据:操作前创建快照
  2. 测试环境:先在非生产环境验证
  3. 监控空间:设置磁盘空间告警
  4. 文档记录:记录扩容操作步骤