PPT:《qcow2镜像检测及修复》Copyright (c) 2016-2023 YOUPLUSAuthor: YOUPLUSqcow2-dump is a useful tool for checking and repairing damaged qcow2 image, it has some improvements compare with qemu-img check command (qcow2 -dump has all functions which qemu-img check command has).图片基础:qcow2镜像格式及分配模式图片qcow2-dump -h/--help
今天使用 Fedora 33 来进行创建虚拟机镜像,通过KVM 运行时。不能在控制台中,通过密码登录; 解决方法: 使用 libvirt工具,重新修改镜像密码即可;并重启虚拟机。 参考链接: Changing the password on the RHEL 7 kvm qcow2 download (links updated 3/15/2016)
kvm环境部署请参考这里 手动制作OpenStack镜像 创建虚拟机 首先创建一个qcow2格式镜像文件,用于虚拟机的根磁盘,大小10G就够了。 #cd /data/kvm/ #qemu-img create -f qcow2 centos.qcow2 10G # create disk image #ll -rw-r--r-- 1 root root Centos7.9-1 --ram 4096 --vcpus 4 --network network=default --disk path=/data/kvm/centos.qcow2,format=qcow2 ,只有689M 打包镜像 qemu-img convert -c -O qcow2 Centos7.9-1-mini.qcow2 Centos7.9-2022.04.13.qcow2 #ll -trh image-create --name "test-Centos7.9-2022.04.13" --file /root/Centos7.9-2022.04.13.qcow2 --disk-format qcow2
虚拟化环境中克隆虚拟机操作说明 3、KVM虚拟机Bridge和NAT网络连接模式介绍 4、CentOS7环境下使用Cockpit创建KVM虚拟机 下面介绍CentOS7 KVM环境下制作CentOS7 qcow2 格式镜像 如果是CentOS7 KVM环境是VMware虚拟机,需要CPU开启虚拟化 1、配置yum镜像源 wget -O /etc/yum.repos.d/CentOS-Base.repo http /data目录 5、先创建qcow2镜像文件 qemu-img create -f qcow2 /data/CentOS7_YF.qcow2 100G 6、创建KVM虚拟机 virt-install rhel7 --arch=x86_64 --network network=default,model=virtio --disk path=/data/CentOS7_YF.qcow2,format=qcow2 镜像正常可用,那么qcow2镜像就制作完成了
虚拟化环境中克隆虚拟机操作说明 3、KVM虚拟机Bridge和NAT网络连接模式介绍 4、CentOS7环境下使用Cockpit创建KVM虚拟机 下面介绍CentOS7 KVM环境下制作CentOS7 qcow2 格式镜像 如果是CentOS7 KVM环境是VMware虚拟机,需要CPU开启虚拟化 ? 4、上传原版CentOS ISO镜像到/data目录 ? 5、先创建qcow2镜像文件 qemu-img create -f qcow2 /data/CentOS7_YF.qcow2 100G ? --vcpus=4 \ --import \ --disk path=/data/CentOS7_YF_allinone.qcow2,format=qcow2 \ --network network vnc连接登录后,qcow2镜像正常可用,那么qcow2镜像就制作完成了
KVM虚拟机发生故障,无法正常启动,但是里面存在重要数据,这时如何进行恢复 问题:如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据 下面以Fedora32 Cockpit方式安装的虚拟机为演示环境 ,介绍如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据 1)Fedora32默认安装了cockpit yum安装cockpit-machines yum install cockpit-machines.noarch 3)上传自动化安装CentOS7的系统镜像用于测试 ? 4)创建虚拟机 ? ? ? ? ? 5)在/data分区下写入数据,用于测试 ? 6)模拟系统无法启动的故障 ? 7)关闭虚拟机 ? 接下来进入正题 如何恢复故障KVM虚拟机qcow2磁盘镜像文件LVM分区中的数据 方法一、使用qemu-nbd工具挂载KVM虚拟机的磁盘镜像文件 1. 2、将qcow2镜像映射为网络块设备(nbd) qemu-nbd -c /dev/nbd0 /var/lib/libvirt/images/YF_OS.qcow2 ll /dev/nbd0* ?
之前安装好KVM虚拟机,并做了备份镜像文件,由于当时部署ODOO系统,规划的磁盘空间为100GB,今天由于需要部署ORACLE11g作为数据库服务器,明显磁盘空间不足,于是复制上次镜像的副本,然后在100GB 要扩展的虚拟机镜像文件:Centos7U-ORAC.qcow2。 现磁盘空间:100GB。 增加磁盘空间:500GB。 一、查看镜像文件信息并扩展 关闭要扩容的虚拟机,在KVM母机上查看磁盘信息,进行磁盘扩展。
qcow2,raw 磁盘格式介绍 raw: 裸磁盘格式(默认的虚拟磁盘格式) raw格式是原始镜像,直接将数据写入磁盘,没有额外的元数据或压缩,由于没有复杂的元数据处理,raw 格式通常比较快,适用于一些对性能要求较高的场景 qcow2(QEMU copy-on-write) qcow2是目前比较主流的一种虚拟化镜像格式,目前qcow2的性能上接近raw裸格式的性能,与普通的 raw 格式的镜像相比,它还有以下特性: 更小的空间占用 ,即使文件系统不支持空洞(holes);qcow2 格式的镜像比 Raw 格式文件更小,只有在虚拟机实际占用了磁盘空间时,其文件才会增长,能方便的减少迁移花费的流量,更适用于云计算系统。 镜像转化为raw镜像文件 qemu-img convert -f qcow2 -O raw /data/openeuler.qcow2 /data/openeuler.raw raw镜像转化为qcw2镜像文件 -F qcow2 -b /data/centos.qcow2 /data/centos7-linkclone03.qcow2 8,磁盘完整性检查 对镜像执行一致性检查,只支持 qcow2、 qed
:指定后端镜像文件 backing_fmt:设置后端镜像的镜像格式 cluster_size:设置镜像中的簇大小,取值在512到2M之间,默认值为64K preallocation:设置镜像文件空间的预分配模式 镜像转化为raw镜像文件 qemu-img convert -f qcow2 -O raw uos20-1060e_new.qcow2 uos20-1060e_new.raw raw镜像转化为qcw2镜像文件 -F qcow2 -b uos20-1060e_new.qcow2 uos20-1060e_linkclone03.qcow2 - `-f qcow2` 指定新创建的磁盘镜像格式为qcow2 - ` -F qcow2` 指定输入文件镜像格式qcow2 - `-b uos20-1060e_new.qcow2` 指定基础镜像文件,即新创建的镜像将基于此镜像文件 - `uos20-1060e_linkclone03 .qcow2` 新创建的镜像文件的名称 磁盘完整性检查 对镜像执行一致性检查,只支持 qcow2、 qed 、 vdi 格式。
随后,我们会使用该命令的更多参数,目前我们需要创建一个qcow2格式4GB大小的镜像文件test.img,,命令如下: qemu-img create -f qcow2 test.img 4GB 或 qemu-img 其中,qcow2是QEMU 0.8.3版本引入的镜像文件格式,也是目前使用最广泛的格式。 如果使用qcow2、qcow、cow等作为输出文件格式来转换raw格式的镜像文件(非稀疏文件格式),镜像转换还可以起到将镜像文件转化为更小的镜像,因为它可以将空的扇区删除使之在生成的输出文件中并不存在。 我们之前创建了一个qcow2格式大小4G名为test.img的镜像文件,现在,我们想对这个镜像文件做扩容,所以需要先转换为raw格式文件。 缩小镜像的大小之前,需要在客户机中保证里面的文件系统有空余空间,否则会数据丢失,另外,qcow2格式文件不支持缩小镜像的操作。
磁盘快照根据存储方式的不同,又分为内部快照和外部快照:内部快照只支持qcow2格式的虚拟机镜像,把快照及后续变动都保存在原来的qcow2文件内;外部快照在创建时,快照被保存在单独一个文件中,创建快照时间点之后的数据被记录到一个新的 qcow2文件中,原镜像文件成为新的qcow2文件的backing file(只读),在创建多个快照后,这些文件将形成一个链——backing chain。 外部快照同时支持raw和qcow2格式的虚拟机镜像。 下文将分别具体介绍不同类型的KVM虚拟机快照。 例如,回滚到snapshot2,就要把虚拟机的镜像改为snapshot1;回滚到snapshot1,则要把虚拟机的镜像改为base。 top(从backing file向下游镜像合并,称为“pull”)。
命令用法解析 qemu-img 是 QEMU 的一个工具,用于创建、转换和修改虚拟机的磁盘镜像。它支持多种格式,如 qcow2、raw、vdi、vmdk 等。 •创建 qcow2 格式的磁盘镜像:qemu-img create -f qcow2 ubuntu.qcow2 20G 此命令创建了一个名为 ubuntu.qcow2,大小为 20GB 的 qcow2 qcow2 格式支持快照和其他高级功能。 •创建 raw 格式的磁盘镜像:qemu-img create -f raw ubuntu.raw 20G 2. •将 raw 转换为 qcow2:qemu-img convert -f raw -O qcow2 ubuntu.raw ubuntu.qcow2 其中 -f 指定输入文件格式,而 -O 指定输出文件格式 快照管理 对于支持快照的磁盘格式(如 qcow2),可以使用 snapshot 子命令来管理快照。
后备镜像可以是raw和qcow2格式,差量镜像只能是qcow2格式。 3. 使用差量方式的好处: 1) 快速生成虚拟机镜像,通过一条命令,瞬间生成虚拟机镜像。 qemu-img create -f qcow2 /datapool/w2k3-test-04 -b /data/win2003ent32chs 测试的时候,编写了一个脚本,不停的产生差量镜像,启动虚拟机 将差量镜像转化成普通镜像, 使用qemu-img convert 转换差量w2k3-test-01为普通镜像w2k3-test-01-10,格式为qcow2 qemu-img convert -f qcow2 : qcow2 virtual size: 8.0G (8589934592 bytes) disk size: 122M cluster_size: 65536 backing file: /data /win2003ent32chs qemu-img info w2k3-test-01-10 p_w_picpath: w2k3-test-01-10 file format: qcow2 virtual
qemu-img镜像格式转换工具支持vhd、vmdk、qcow2、raw、vhdx、qcow、vdi或qed社区格式的镜像的相互转换。 vzdump-qemu-125-2022_08_16-13_40_42.qcow2 image: vzdump-qemu-125-2022_08_16-13_40_42.qcow2 file format: qcow2 # 转换 vmdk 格式为 qcow2 格式 $ qemu-img convert -p -f vmdk -O qcow2 centos6.9.vmdk centos6.9.qcow2 # 转换 vma (raw) 为 qcow2 $ qemu-img convert -p -f raw -O qcow2 vzdump-qemu-125-2022_08_16-13_40_42.vma vzdump-qemu -f 源镜像格式。 -O 目标镜像格式 + 源镜像文件名称 + 目标文件名称。 转换完成后,目标文件会出现在源镜像文件所在的目录下。
(配置好变量路径方便,手动进入路径也可) 准备好一个 x86 的镜像或者 img 的镜像,格式可以为 qcow2 QEMU 支持多种磁盘映像格式,包括 raw、qcow2、qed、vdi、vhd file format: 磁盘镜像文件的格式,例如 qcow2、raw 等。 virtual size: 磁盘镜像的虚拟大小,即分配给虚拟机的最大空间。 disk size: 磁盘镜像当前实际占用的空间。 cluster_size: 对于 qcow2 格式,这是集群的大小。 注意事项 快照功能依赖于磁盘镜像格式,只有支持快照的格式(如 qcow2)才能使用快照功能。 快照会占用额外的存储空间,因为它们实际上是存储在磁盘镜像文件中的增量数据。 VMware虚拟机_e01镜像文件转虚拟机文件-CSDN博客 【qemu虚拟化】将vmdk文件转换为img镜像教程_vmdk转img-CSDN博客 参考 Windwos上通过qemu直接开启img、qcow2
/bin/bash # shell 自动创建 qcow2 虚拟机,注意虚拟机镜像制作的时候需要自动获取ip # virt-install --osinfo list | grep win | awk -F"," '{print $1}' # 查看ubuntu镜像系统支持的版本 eiscRunDir=/datadisk/vm/eiscAUTO debianSourceQcow 案例 debian12系统镜像,cpu为1线程,2.5G内存: 1 1 2.5 " systemMessage(){ cputype=$(grep "model name ,当前选择镜像序号: ${buff[0]}" ; exit ;; esac # case 每一句命令分割 如果是换行,必须在上一行加分号 ; } createImage( :$SystemIDName $qcow2 正在继续创建中..."
Nov 2 09:58 centos195.img 2.基于基础镜像创建2个快照 # 用于创建第一个虚拟机 qemu-img create -f qcow2 -F qcow2 -b centos195 img -f qcow2: 指定新创建的快照文件 centos195_sp1.img 的格式为 qcow2。 -F qcow2: 指定基础镜像文件 centos195.img 的格式为 qcow2。 -b centos195.img: 指定基础镜像文件的路径。 然后就是确保你磁盘是通过原始镜像文件+快照共同挂载即可。 镜像分层 其实这个快速创建虚拟机原理上是一样的,只是一个目标是虚拟机,一个目标是镜像,而如果镜像要变成虚拟机还会再附加一层快照。
file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 2.4G cluster_size: 65536 Format qemu-img convert -c -O qcow2 flexbng-normal.qcow2 flexbng-base.qcow2 qemu-img info flexbng-base.qcow2 image: flexbng-base.qcow2 file format: qcow2 virtual size: 40G (42949672960 bytes) disk size: 1.1G 创建增量镜像flexbng-delta.qcow2 qemu-img create -f qcow2 -b flexbng-base.qcow2 flexbng-delta.qcow2 qemu-img info flexbng-delta.qcow2 image: flexbng-delta.qcow2 file format: qcow2 virtual size: 40G (42949672960
磁盘镜像文件格式 raw 原始格式,性能最好 qcow cow写时拷贝,性能远不如raw,很快夭折,出现了qcow2 qocw2 性能上还是不如raw,但是raw不支持快照,qcow2支持快照 qed 现在默认安装好用的是raw格式,所有做快照的都需要转换为qcow2格式 什么是写时拷贝 raw立即分配空间,无论实际使用到多少空间,而qcow2只是承诺分配空间,只有在实际使用到空间时才会分配 概述 通过一个基础镜像,在基础镜像中把所需要的环境都搭建好,然后基于该镜像建立起一个个增量镜像,每个镜像对应一个虚拟机,虚拟机对镜像的所有改变都记录在增量镜像中,基础镜像始终保持不变。 创建增量镜像文件 qemu-img create -b xxx.img -f qcow2 xxx1.img qemu-img info xxx1.img 3. .img #列出虚拟机的快照 virsh snapshot-list vm1 九、磁盘格式转换 #把raw转换为qcow2 qemu-img convert -O qcow2 xxx.raw xxx.qcow2
需要文件系统用的支持才能使用sparse file cow : copy-on-write格式,昙花一现 qcow : QEMU早期的copy-on-write格式 qcow2 按需分配磁盘空间 listen=0.0.0.0 \ --os-type=linux \ --os-variant=Centos7.0 后备差异虚拟硬盘 在实际生产环境中可以将一个backing_file基础镜像作为父镜像 ,然后让多个虚拟机使用同一个父镜像,这样只需要为虚拟机提供一个基础镜像即可 对于父镜像来说,可以是raw或者是qcow2文件格式,但是使用父镜像的虚拟机来说必须使用qcow2 准备模板 qemu-img create -f qcow2 \ > -o backing_file=vm1-disk1.qcow2 \ //磁盘镜像为安装过操作系统的镜像 > oa-disk.qcow2 //关联基础磁盘跟父磁盘镜像 test00.qcow2 2g 第三种方式: virsh vol-create-as vm test00.qocw2 2g --format qcow2 创建xml文件** ?