qemu-img create 创建镜像
qemu-img create 生成指定格式与容量的磁盘镜像文件,是手工建虚机与准备数据盘的第一步。容量参数只是给 guest 看到的虚拟大小,文件本身在 qcow2 下按需增长。生成后镜像里还没有分区表与文件系统,guest 内仍要完成分区与格式化,把 create 当成「做好了盘」是最常见的误解。
基本信息
| 基础用法 | qemu-img create -f qcow2 disk.qcow2 40G |
|---|---|
| 预分配 | -o preallocation=metadata 预分配元数据,falloc 快速分配数据区 |
| 簇大小 | -o cluster_size=64k 适配顺序写场景,小簇适合随机小 IO |
| raw 格式 | qemu-img create -f raw disk.img 40G,默认稀疏占用 |
| 校验 | qemu-img info 查看格式、虚拟容量与实际占用 |
典型使用场景
- 手工建虚机前准备系统盘镜像文件
- 新增数据盘:在宿主上先生成镜像再挂给虚机
- 模板制作:批量生成同规格的空盘作为交付起点
- 性能调优:对比不同预分配与簇大小设置下的表现
- 实验室环境:快速准备多个空盘验证存储与挂载配置
创建带预分配的 qcow2
创建带预分配的 qcow2
qemu-img create -f qcow2 -o preallocation=metadata disk.qcow2 40G
# metadata 预分配元数据,改善首次写入时的碎片与延迟
qemu-img create -f qcow2 -o cluster_size=64k,preallocation=falloc disk2.qcow2 40G
qemu-img info disk.qcow2 # 核对虚拟容量与实际占用
# 生成后仍需在 guest 内分区并 mkfs,镜像本身是空白的选项取舍
| 选项 | 作用 | 取舍 |
|---|---|---|
| preallocation=metadata | 预分配元数据 | 首次写更快,占用略增 |
| preallocation=falloc | 快速分配实际空间 | 创建即占满容量,避免运行时膨胀 |
| cluster_size=64k | 调整簇大小 | 顺序写更优,随机小 IO 需评估 |
| raw 格式 | 无元数据开销 | 不支持快照,容量需一次预留 |
qcow2 文件的实际占用随写入增长,监控存储容量时要看虚拟容量与增长趋势,不能只看当前文件大小。
使用 falloc 预分配会立即占满对应容量:存储空间评估不足时,创建动作本身就能把数据存储撑爆。
建盘之后立刻把路径、容量与用途记录下来:宿主上堆积多块没有命名的空镜像时,清理阶段很难判断哪块还在使用、哪块可以删除。
生成镜像只是准备了一块空盘,实际可用容量还取决于 guest 内文件系统的选择与挂载方式,建盘容量与业务可用容量并不总是同一个数。