Ubuntu下调整cloud-init镜像磁盘大小
1. 问题背景
使用cloud-init创建的Ubuntu镜像默认磁盘空间较小(如10GB),当需要更大存储空间时,需手动扩展磁盘分区。
2. 准备工作
2.1 检查当前磁盘布局
lsblk
fdisk -l
2.2 确认文件系统类型
df -Th
3. 调整磁盘大小步骤
3.1 使用云平台控制台扩展磁盘
- 在AWS/Azure/GCP等平台将磁盘扩容至所需大小
 - 重启实例使新容量生效
 
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. 最佳实践
- 备份数据:操作前创建快照
 - 测试环境:先在非生产环境验证
 - 监控空间:设置磁盘空间告警
 - 文档记录:记录扩容操作步骤