热门标签 | 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,然后你就可以继续无穷无尽的派生之旅了!

 


推荐阅读
  • 本文是网络安全自学系列的一部分,旨在分享网络安全工具的使用技巧和实际操作案例。继之前讨论了XSS跨站脚本攻击的各个方面后,本文将重点介绍Powershell的基础知识及其在网络安全领域的应用。 ... [详细]
  • 本文探讨了如何在JavaScript中调用PHP函数及实现两者之间的有效交互,包括通过AJAX请求、动态生成JavaScript代码等方法。 ... [详细]
  • 本文介绍了如何使用Python在字符串列表的每个K个字符之后插入指定的值,提供了两种不同的实现方法。 ... [详细]
  • 本文介绍了一种解决方案,当笔记本电脑不具备作为无线接入点的能力时,如何通过开启Android手机的便携WLAN热点功能,使笔记本能够连接到手机并共享其网络资源,从而实现上网。文中详细描述了在Linux系统下配置的具体步骤。 ... [详细]
  • 本文介绍了EasyTrac 0.1.0.11b1版本的发布,这是一个简化Trac部署过程的工具,特别适合于希望快速搭建项目管理和问题跟踪系统的用户。 ... [详细]
  • Linux 文件系统结构详解
    本文详细介绍了Linux操作系统的文件系统结构,包括其独特的树状目录体系、根目录的作用、目录与磁盘分区的关系等,并对各主要目录的功能进行了深入解析。 ... [详细]
  • 本文详细介绍了在Oracle Data Guard中配置Standby Redo Log的方法,包括其重要性和具体的配置步骤。通过本文的学习,您将能够掌握如何有效地设置Standby Redo Log以提高数据保护和系统可用性。 ... [详细]
  • 本文详细记录了《PHP与MySQL Web开发》第一章的学习心得,特别关注了PHP的基本构成元素、标记风格、编程注意事项及表单处理技巧等内容。 ... [详细]
  • 本文详细介绍了如何对路由器进行重置及基本设置,包括恢复出厂设置、登录路由器管理界面、设置上网方式以及配置无线网络。 ... [详细]
  • 应用程序配置详解
    本文介绍了配置文件的关键特性及其在不同场景下的应用,重点探讨了Machine.Config和Web.Config两种主要配置文件的用途和配置方法。文章还详细解释了如何利用XML格式的配置文件来调整应用程序的行为,包括自定义配置、错误处理、身份验证和授权设置。 ... [详细]
  • 致信息安全爱好者的成长指南
    本文旨在为信息安全爱好者提供一份详尽的成长指南,涵盖从学习心态调整到具体技能提升的各个方面。 ... [详细]
  • 解决getallheaders函数导致的500错误及8种服务器性能优化策略
    本文探讨了解决getallheaders函数引起的服务器500错误的方法,并介绍八种有效的服务器性能优化技术,包括内存数据库的应用、Spark RDD的使用、缓存策略的实施、SSD的引入、数据库优化、IO模型的选择、多核处理策略以及分布式部署方案。 ... [详细]
  • 一人有限公司的风险与应对策略
    创业者在选择公司形式时,往往对一人有限公司存在误解。虽然表面上看似简单易操作,但实际上,这种公司形式隐藏着较大的法律风险,尤其是在股东责任方面。本文将深入探讨为何应谨慎考虑注册一人有限公司,并提供相应的风险管理建议。 ... [详细]
  • Web安全入门:MySQL基础操作与SQL注入防范
    本文详细介绍了MySQL数据库的基础操作命令,包括数据库和表的基本管理,以及数据的增删查改等常用操作。同时,针对Web安全领域常见的SQL注入问题,提供了初步的理解和防范措施。 ... [详细]
  • 本文针对公司项目中普遍存在的IE浏览器兼容性问题,特别是IE9及以下版本,提出了具体的解决方案,确保用户在这些旧版浏览器中也能顺利实现图片上传预览功能。 ... [详细]
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社区 版权所有