Ubuntu 24.04 LTS ARM64服务器:利用cloud-init自动化LVM分区扩容实战

发布时间:2026/6/27 18:32:23

Ubuntu 24.04 LTS ARM64服务器:利用cloud-init自动化LVM分区扩容实战 1. 为什么需要自动化LVM分区扩容刚接触Ubuntu服务器的新手可能会疑惑为什么非得折腾LVM分区扩容直接分配一个大容量分区不就行了吗这个问题我十年前也想过直到有次线上服务突然宕机——当时我们的日志分区用的是传统分区方案磁盘爆满后服务直接崩溃。后来切换到LVM方案配合cloud-init自动化扩容再也没遇到过类似问题。LVMLogical Volume Manager就像给硬盘装了个智能管家。它把物理存储设备抽象成可灵活调整的逻辑卷最实用的三大特性是在线扩容不用卸载文件系统就能扩展容量存储池化多个物理磁盘可以合并成一个逻辑卷组快照功能瞬间冻结文件系统状态做备份在云环境中磁盘扩容是家常便饭。想象这个场景你在OpenStack上部署的Ubuntu服务器突然需要处理翻倍的业务数据传统方案得手动挂载新磁盘、迁移数据至少停机半小时。而用LVMcloud-init的方案只需要在控制台调整磁盘大小重启时就会自动完成扩容全程无需人工干预。2. 环境准备与系统安装2.1 镜像选择与启动我最近在树莓派5集群上实测Ubuntu 24.04 LTS ARM64的表现这个版本对ARM架构的优化相当到位。推荐从官网下载ubuntu-24.04.2-live-server-arm64.iso镜像注意要选live-server版本而不是desktop版后者默认不带cloud-init组件。安装时有个坑要注意很多教程建议用中文环境但实际使用中发现英文环境更稳定。特别是处理LVM分区时中文字符可能导致设备名识别异常。建议安装时语言选择English键盘布局选US分区方式选Use LVM with the new Ubuntu installation2.2 网络与软件源配置云环境中最头疼的就是网络配置。建议先配静态IP完成初始化最后再改回DHCP。这是我的标准配置模板# /etc/netplan/01-netcfg.yaml network: version: 2 renderer: networkd ethernets: enp1s0: dhcp4: no addresses: [172.19.0.200/24] routes: - to: default via: 172.19.0.254 nameservers: addresses: [223.5.5.5]国内用户一定要换源清华源的ARM镜像同步很及时# /etc/apt/sources.list.d/ubuntu.sources Types: deb deb-src URIs: http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ Suites: noble noble-updates noble-security Components: main restricted universe multiverse3. cloud-init深度配置3.1 核心组件安装很多人以为装完cloud-init就万事大吉其实还需要关键补丁包sudo apt update sudo apt install cloud-init cloud-guest-utils lvm2 xfsprogscloud-guest-utils包含growpart等磁盘扩容工具lvm2LVM管理工具集xfsprogs如果你用XFS文件系统就需要这个3.2 自动扩容魔法配置这才是最核心的部分新建/etc/cloud/cloud.cfg.d/06_growpart.cfg注意这个配置是分阶段执行的#cloud-config growpart: mode: auto devices: [/dev/vda3] ignore_growroot_disabled: false runcmd: - [pvresize, /dev/vda3] - [lvextend, -l, 100%FREE, /dev/mapper/ubuntu--vg-ubuntu--lv] - [resize2fs, /dev/mapper/ubuntu--vg-ubuntu--lv]解释下这个配置的工作流程growpart阶段云平台扩容虚拟磁盘后调整分区表使/dev/vda3占据所有可用空间runcmd阶段pvresize扩展物理卷容量lvextend将逻辑卷扩展到物理卷的所有空闲空间resize2fs调整文件系统大小3.3 镜像清理与上传制作完镜像一定要执行这两步sudo cloud-init clean --machine-id sudo shutdown now上传到OpenStack时特别注意磁盘总线类型要匹配glance image-create --name ubuntu-24.04-arm64-lvm \ --disk-format qcow2 \ --property hw_disk_busvirtio \ --file ./custom-image.qcow24. 实战排坑指南4.1 常见错误排查遇到过最诡异的问题是扩容后文件系统没变化后来发现是执行顺序问题。正确的检查步骤应该是# 查看物理卷是否扩容成功 sudo pvdisplay # 检查卷组空闲空间 sudo vgdisplay # 确认逻辑卷是否扩展 sudo lvdisplay # 最后检查文件系统 df -h4.2 性能调优建议在ARM服务器上我推荐这些优化参数# /etc/lvm/lvm.conf allocation { maximise_clients 1 cache_mode 2 } devices { preferred_names [^/dev/vd, ^/dev/xvd] scan_lvs 1 }对于数据库等IO敏感型应用可以在创建逻辑卷时指定条带化sudo lvcreate -L 50G -i 4 -I 64 -n>runcmd: - [pvcreate, /dev/vdb] - [vgextend, ubuntu-vg, /dev/vdb] - [lvextend, -l, 100%FREE, /dev/mapper/ubuntu--vg-ubuntu--lv] - [resize2fs, /dev/mapper/ubuntu--vg-ubuntu--lv]5.2 XFS文件系统支持如果你用的是XFS比如数据库场景需要修改resize命令runcmd: - [xfs_growfs, /dev/mapper/ubuntu--vg-ubuntu--lv]6. 监控与告警配置自动化扩容虽好但不能放任不管。推荐配置Prometheus监控# /etc/cloud/cloud.cfg.d/10_monitoring.cfg runcmd: - apt-get install -y prometheus-node-exporter - systemctl enable prometheus-node-exporter然后配置Grafana看板监控这些关键指标LVM卷组剩余空间物理卷健康状态文件系统使用率增长趋势我在生产环境设置当剩余空间低于20%时自动触发告警这样有充足时间规划扩容。

相关新闻