热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

使用qemu-img创建虚拟机和快照

一台虚拟机的核心就是一个磁盘镜像,这个镜像可以理解成虚拟机的磁盘,里面有虚拟机的操作系统和驱动等重要文件。本文主要介绍创建虚拟机的一般过程。要在一台host上跑起一个虚拟机一般需要两个步骤:第一步:创建虚拟机镜像qemu-imgcreate-fraw/imag

一台虚拟机的核心就是一个磁盘镜像,这个镜像可以理解成虚拟机的磁盘,里面有虚拟机的操作系统和驱动等重要文件。本文主要介绍创建虚拟机的一般过程。

要在一台host上跑起一个虚拟机一般需要两个步骤:

第一步:创建虚拟机镜像

qemu-img create -f raw /images/vm1.raw 8G

qmeu-img创建的镜像是一个稀疏文件,也就是说刚创建出来的文件并没有8G,它会随着数据的增多慢慢增加,直到8G

第二步:启动虚拟机

运行结果: 因为镜像里面没有任何内容,所以提示找不到可引导设备。

 使用qemu-img创建虚拟机(创建虚拟机+快照) <wbr>【转载】

 

使用qemu-img管理镜像

上节介绍了使用qemu-img创建镜像,这一节将会介绍qemu-img在镜像管理上的强大功能。

qemu-img有很多命令,包括下面常用的,当然qemu-img -h你懂得。

info

查看镜像的信息

create

创建镜像

check

检查镜像

convert

转化镜像的格式,(raw,qcow ……)

snapshot

管理镜像的快照

rebase

在已有的镜像的基础上创建新的镜像

resize

增加或减小镜像大小

创建镜像

举例:

qemu-img create -f raw -o size=4G /images/vm2.raw

crazy@crazy:~/images$ ll

total 0-rw-r--r-- 1 crazy crazy 4.0G  6月 29 14:11 vm2.raw

crazy@crazy:~/images$ ll -s

total 00 -rw-r--r-- 1 crazy crazy 4.0G  6月 29 14:11 vm2.raw

crazy@crazy:~/images$ qemu-img info vm2.raw

image: vm2.raw

file format: raw

virtual size: 4.0G (4294967296 bytes)

disk size: 0

虽然ls中看到文件的大小是4G,但是实际上磁盘大小是0。这就是稀疏文件

转化

将一个镜像文件转化为另外一种格式,qemu-img支持的格式可以看qemu-img -h最后一行。

Supported formats: vvfat vpc vmdk vdi sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd dmg tftp ftps ftp https http cow cloop bochs blkverify blkdebug

转化命令:

qemu-img convert -c -f fmt -O out_fmt -o options fname out_fname

-c:采用压缩,只有qcow和qcow2才支持

-f:源镜像的格式,它会自动检测,所以省略之

-O 目标镜像的格式

-o 其他选先

fname:源文件

out_fname:转化后的文件

看例子:

crazy@crazy:~/images$ qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2

|->本文来自CrazyFeng.com,转载时请保留本信息!~

crazy@crazy:~/images$ ll -s

total 136K

   0 -rw-r--r-- 1 crazy crazy 5.0G  6月 29 13:55 vm1.raw

136K -rw-r--r-- 1 crazy crazy 193K  6月 29 14:22 vm2.qcow2

   0 -rw-r--r-- 1 crazy crazy 4.0G  6月 29 14:11 vm2.raw

crazy@crazy:~/images$ qemu-img info vm2.qcow2

image: vm2.qcow2

file format: qcow2

virtual size: 4.0G (4294967296 bytes)

disk size: 136K

cluster_size: 65536

如果想看要转化的格式支持的-o选项有哪些,可以在命令末尾加上 -o ?

crazy@crazy:~/images$ qemu-img convert -c -O qcow2 vm2.raw vm2.qcow2 -o ?

Supported options:

size             Virtual disk size

backing_file     File name of a base image

backing_fmt      Image format of the base image

encryption       Encrypt the image

cluster_size     qcow2 cluster size

preallocation    Preallocation mode (allowed values: off, metadata)

注意:只有raw格式的镜像才可以改变大小

crazy@crazy:~/images$ qemu-img resize vm2.raw +2GB

crazy@crazy:~/images$ ll -s

total 136K

   0 -rw-r--r-- 1 crazy crazy 5.0G  6月 29 13:55 vm1.raw

136K -rw-r--r-- 1 crazy crazy 193K  6月 29 14:22 vm2.qcow2

   0 -rw-r--r-- 1 crazy crazy 6.0G  6月 29 14:28 vm2.raw

crazy@crazy:~/images$ qemu-img info vm2.raw

image: vm2.raw

file format: raw

virtual size: 6.0G (6442450944 bytes)

disk size: 0

查看快照

qemu-img snapshot -l /images/vm2.qcow2

注意:只有qcow2才支持快照

打快照

qemu-img snapshot -c booting vm2.qcow2

举例:

crazy@crazy:~/images$ qemu-img snapshot -c booting vm2.qcow2

crazy@crazy:~/images$ qemu-img snapshot -l vm2.qcow2

Snapshot list:

ID        TAG                 VM SIZE                DATE       VM CLOCK

        booting                   0 2012-06-29 14:35:04   00:00:00.000

从快照恢复:

qemu-img snapshot -a 1 /images/vm2.qcow2

然后从kvm启动这个虚拟机,会发现虚拟机又在打快照时的状态了

删除快照:

qemu-img snapshot -d 2 /images/vm2.qcow

使用派生镜像(qcow2)

当创建的虚拟机越来越多,并且你发现好多虚拟机都是同一个操作系统,它们的区别就是安装的软件不大一样,那么你肯定会希望把他们公共的部分提取出来,只保存那些与公共部分不同的东西,这样镜像大小下去了,空间变多了,管理也方便了。派生镜像就是用来干这事的!

首先看一个原始镜像

crazy@crazy:~/images$ qemu-img info vm3_base.raw

image: vm3_base.raw

file format: raw

virtual size: 2.0G (2147483648 bytes)

disk size: 2.0G

现在我们新建一个镜像,但是派生自它

crazy@crazy:~/images$ qemu-img create -f qcow2 vm3_5.qcow2 -o backing_file=vm3_base.raw 5G

Formatting 'vm3_5.qcow2', fmt=qcow2 size=5368709120 backing_file='vm3_base.raw' encryption=off cluster_size=65536

crazy@crazy:~/images$ ll-rw-r--r-- 1 crazy crazy 193K  6月 29 15:00 vm3_5.qcow2

-rw-r--r-- 1 crazy crazy 2.0G  6月 29 14:51 vm3_base.raw

crazy@crazy:~/images$ qemu-img info vm3_5.qcow2

image: vm3_5.qcow2

file format: qcow2

virtual size: 5.0G (5368709120 bytes)

disk size: 136K

cluster_size: 65536

backing file: vm3_base.raw (actual path: vm3_base.raw)

^_^,这个镜像才136K,够省了吧。DRY永远的真理啊!

现在我们在vm3_5.qcow2上打了很多安全补丁,然后发现我又想在vm3_5.qcow2上派生新的虚拟机,o(∩∩)o...哈哈,这下怎么办呢?

crazy@crazy:~/images$ qemu-img convert -O raw vm3_5.qcow2 vm3_base2.raw

crazy@crazy:~/images$ qemu-img info vm3_base2.raw

image: vm3_base2.raw

file format: raw

virtual size: 5.0G (5368709120 bytes)

disk size: 592M

这个转化将会将vm3_5和base合并,生成新的vm3_base2.raw,然后你就可以继续无穷无尽的派生之旅了!

 


推荐阅读
  • 本文总结了汇编语言中第五至第八章的关键知识点,涵盖间接寻址、指令格式、安全编程空间、逻辑运算指令及数据重复定义等内容。通过详细解析这些内容,帮助读者更好地理解和应用汇编语言的高级特性。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细介绍了 BERT 模型中 Transformer 的 Attention 机制,包括其原理、实现代码以及在自然语言处理中的应用。通过结合多个权威资源,帮助读者全面理解这一关键技术。 ... [详细]
  • QUIC协议:快速UDP互联网连接
    QUIC(Quick UDP Internet Connections)是谷歌开发的一种旨在提高网络性能和安全性的传输层协议。它基于UDP,并结合了TLS级别的安全性,提供了更高效、更可靠的互联网通信方式。 ... [详细]
  • 本文介绍如何使用 Python 将一个字符串按照指定的行和元素分隔符进行两次拆分,最终将字符串转换为矩阵形式。通过两种不同的方法实现这一功能:一种是使用循环与 split() 方法,另一种是利用列表推导式。 ... [详细]
  • 本文基于对相关论文和开源代码的研究,详细介绍了LOAM(激光雷达里程计与建图)的工作原理,并对其关键技术进行了分析。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 当iOS设备越狱后,某些插件可能会导致系统崩溃(白苹果)。此时,可以通过进入安全模式来排查并删除有问题的插件。本文将详细介绍如何通过特定按键组合进入不加载MobileSubstrate的安全模式,并提供相关背景知识。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 新冠肺炎疫情期间,各大银行积极利用手机银行平台,满足客户在金融与生活多方面的需求。线上服务不仅激活了防疫相关的民生场景,还推动了银行通过互联网思维进行获客、引流与经营。本文探讨了银行在找房、买菜、打卡、教育等领域的创新举措。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文探讨了如何在发布 XenApp 应用时,通过命令行参数实现启动时的参数传递。特别介绍了静态和动态参数传递的方法,并详细解释了 ICA 文件中两种参数传递方式的区别及安全检查机制。 ... [详细]
author-avatar
frank52_445
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有