当前位置: 首页 > news >正文

扩展云镜像磁盘空间案例:AlmaLinux 9 云镜像扩展

🎯 案例目标

将原始的 2GB AlmaLinux 9 云镜像扩展为 30GB,并进行必要的系统配置。


📋 详细步骤

步骤1:环境准备和文件检查

# 1.1 检查原始镜像信息
qemu-img info AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2# 输出示例:
# image: AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2
# file format: qcow2
# virtual size: 2 GiB (2147483648 bytes)
# disk size: 576 MiB

步骤2:分析原始镜像分区结构

# 2.1 查看镜像中的文件系统和分区信息
virt-filesystems --long -h --all -a AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2# 预期输出类似:
# Name        Type       Size  Parent
# /dev/sda1   partition  1G    /dev/sda
# /dev/sda2   partition  1G    /dev/sda
# /dev/sda3   partition  512M  /dev/sda
# /dev/sda4   partition  -     /dev/sda  (这是我们要扩展的分区)

步骤3:创建目标磁盘镜像

# 3.1 创建 30GB 的新 qcow2 镜像
qemu-img create -f qcow2 alma94-expanded.qcow2 30G# 3.2 验证新镜像创建成功
qemu-img info alma94-expanded.qcow2

步骤4:扩展分区到新镜像

# 4.1 执行分区扩展
virt-resize --expand /dev/sda4 AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2 alma94-expanded.qcow2# 输出示例:
# [   0.0] Examining AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2
# [   5.2] Estimating required space for the expanded partition
# [   5.2] Copying /dev/sda1
# [   5.3] Copying /dev/sda2
# [   5.4] Copying /dev/sda3
# [   5.5] Expanding /dev/sda4 using the remaining space
# [   5.6] Setting up logical volume manager
# [   6.1] Expanding /dev/almalinux/root within the partition

步骤5:验证扩展结果

# 5.1 检查新镜像的分区结构
virt-filesystems --long -h --all -a alma94-expanded.qcow2# 5.2 检查文件系统是否正常扩展
guestfish --ro -i -a alma94-expanded.qcow2 <<EOF
df
vfs-type /
quit
EOF

步骤6:系统配置和自定义

# 6.1 设置root密码和基本配置
virt-customize -a alma94-expanded.qcow2 \--root-password password:cisco123 \--run-command 'df -h' \--selinux-relabel# 6.2 可选:安装额外软件包
virt-customize -a alma94-expanded.qcow2 \--install cloud-init,qemu-guest-agent,tree,vim \--update

步骤7:最终验证

# 7.1 启动测试虚拟机验证扩展结果
virt-install \--name test-expanded-vm \--memory 1024 \--vcpus 1 \--disk path=alma94-expanded.qcow2 \--import \--noautoconsole# 7.2 检查磁盘使用情况
virsh console test-expanded-vm
# 登录后执行:df -h 和 lsblk

🔧 完整脚本示例

#!/bin/bash
# expand_cloud_image.shORIGINAL_IMAGE="AlmaLinux-9-GenericCloud-9.4-20240805.x86_64.qcow2"
EXPANDED_IMAGE="alma94-expanded.qcow2"
NEW_SIZE="30G"echo "=== 开始扩展云镜像 ==="# 1. 检查原始文件
if [ ! -f "$ORIGINAL_IMAGE" ]; thenecho "错误: 原始镜像文件 $ORIGINAL_IMAGE 不存在"exit 1
fiecho "原始镜像信息:"
qemu-img info "$ORIGINAL_IMAGE"# 2. 分析分区结构
echo -e "\n=== 分析分区结构 ==="
virt-filesystems --long -h --all -a "$ORIGINAL_IMAGE"# 3. 创建新镜像
echo -e "\n=== 创建 $NEW_SIZE 目标镜像 ==="
qemu-img create -f qcow2 "$EXPANDED_IMAGE" "$NEW_SIZE"# 4. 扩展分区
echo -e "\n=== 执行分区扩展 ==="
virt-resize --expand /dev/sda4 "$ORIGINAL_IMAGE" "$EXPANDED_IMAGE"# 5. 系统配置
echo -e "\n=== 系统配置 ==="
virt-customize -a "$EXPANDED_IMAGE" \--root-password password:cisco123 \--run-command 'echo "磁盘扩展完成,当前磁盘空间:" && df -h' \--selinux-relabel# 6. 验证结果
echo -e "\n=== 验证扩展结果 ==="
echo "新镜像信息:"
qemu-img info "$EXPANDED_IMAGE"echo -e "\n分区结构:"
virt-filesystems --long -h --all -a "$EXPANDED_IMAGE"echo -e "\n=== 扩展完成 ==="
echo "新镜像: $EXPANDED_IMAGE"
echo "原始大小: $(qemu-img info "$ORIGINAL_IMAGE" | grep 'virtual size')"
echo "现在大小: $(qemu-img info "$EXPANDED_IMAGE" | grep 'virtual size')"

📊 执行结果验证

扩展完成后,可以通过以下命令验证:

# 检查磁盘空间
guestfish --ro -i -a alma94-expanded.qcow2 <<EOF
df
blkid
quit
EOF# 或者启动临时虚拟机验证
virt-install \--name verify-disk \--memory 512 \--disk alma94-expanded.qcow2 \--import \--noautoconsole \--wait 0

💡 总结说明

🎯 技术要点总结

  1. 工具链协同工作

    • qemu-img:创建和管理磁盘镜像
    • virt-filesystems:分析分区结构
    • virt-resize:安全扩展分区
    • virt-customize:离线系统配置
  2. 关键步骤

    • 预先分析:必须了解原始镜像的分区布局
    • 安全扩展virt-resize 自动处理分区表和文件系统
    • 配置更新:修改密码、重标 SELinux 确保系统可用性
  3. 风险控制

    • 原始镜像保持只读,所有修改在新镜像进行
    • 扩展前备份重要数据
    • 验证步骤确保扩展成功

🚀 应用价值

  1. 云环境部署:为 OpenStack、KVM 等准备大容量基础镜像
  2. 开发测试:快速创建满足特定磁盘需求的测试环境
  3. 批量运维:标准化镜像制备流程,提高部署效率
  4. 资源优化:按需调整磁盘空间,避免资源浪费

⚠️ 注意事项

  1. 分区选择:确保扩展的是正确的根分区
  2. 文件系统:某些文件系统可能需要额外步骤才能在线扩展
  3. 备份策略:生产环境务必先备份原始镜像
  4. 性能考虑:qcow2 格式的预分配策略影响性能

这个案例展示了完整的云镜像磁盘扩展流程,适用于各种 Linux 发行版的云镜像定制需求。

http://www.dtcms.com/a/453313.html

相关文章:

  • 招聘网站上找在家做seo最好的工具
  • 常用的网站建设技术软件开发工程师招聘简章pdf
  • ppt免费网站专门查企业信息的网站
  • 临时造参数查全量数据
  • 国产能谱仪设计与验证核心经验教训简化表
  • 0.6 卷积神经网络
  • 架设网站flash不显示深圳网站自然优化
  • C++ ros2 debug
  • 深入解析:Object.prototype.toString.call() 的工作原理与实战应用
  • 浙江建设网站公司广告点击一次多少钱
  • 图表全能王 (ChartStudio) 新增多种图表支持,助力数据可视化
  • 网页制作免费网站网页制作工作总结
  • java快速复习
  • Day 24 - 文件、目录与路径 - Python学习笔记
  • 第9讲:函数递归——用“套娃”思维解决复杂问题
  • 东莞网站竞价推广运营百度云虚拟主机如何建设网站
  • 权限管理混乱微服务安全架构:OAuth2.0+JWT无感刷新方案非法请求拦截率
  • 北京理工大学网站开发与应用彩票网站开发彩票网站搭建
  • 网站建设公司重庆装修设计公司公司价格表
  • 厦门市建设局查询保障摇号网站首页系统开发板价格
  • 金溪网站建设制作电商系统开发公司
  • 直方图 vs 箱线图:两种看数据分布的思路差异
  • 构建AI智能体:五十六、从链到图:LangGraph解析--构建智能AI工作流的艺术工具
  • 【Spring】AOP的核心原理配方
  • 惠州建站平台建筑人才网招聘信息
  • 《Cargo 参考手册》第一章:清单
  • MVCC 多版本并发控制
  • 【AI智能体】Coze 打造AI数字人视频生成智能体实战详解:多模态情感计算与云边协同架构
  • 重庆网站建设培训机构学费重庆市官方网站
  • 关系建设的网站上海网站seo招聘