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. 最佳实践
- 备份数据:操作前创建快照
- 测试环境:先在非生产环境验证
- 监控空间:设置磁盘空间告警
- 文档记录:记录扩容操作步骤