文档章节

kvm guest xml 文件详解

Q
 QEfarmer
发布于 2015/03/02 13:03
字数 1872
阅读 2684
收藏 2

完整的xml文件

<domain type='kvm'>

  <name>centoskvm3</name>

  <uuid>bdbb89fb-57d1-4d01-b3b7-ff33a9346ae6</uuid>

  <memory>2048000</memory>

  <currentMemory>1024000</currentMemory>

  <vcpu>2</vcpu>

  <os>

    <type arch='x86_64' machine='pc'>hvm</type>

    <boot dev='hd'/>

  </os>

  <features>

    <acpi/>

    <apic/>

    <pae/>

  </features>

  <clock offset='localtime'/>

  <on_poweroff>destroy</on_poweroff>

  <on_reboot>restart</on_reboot>

  <on_crash>destroy</on_crash>

  <devices>

    <emulator>/usr/libexec/qemu-kvm</emulator>

    <disk type='file' device='disk' cache='none'>

      <source file='/usr/local/kvm/centvm3.img'/>

      <target dev='vda' bus='virtio'/>

    </disk>

    <interface type='bridge'>

      <mac address='3b:6e:01:69:3a:11'/>

      <source bridge='br0'/>

      <model type='virtio'/>

    </interface>

    <input type='mouse' bus='ps2'/>

    <graphics type='vnc' port='-1' autoport='yes' listen='221.196.131.121' keymap='en-us' passwd='123456'/>

  </devices>

</domain>

1、kvm guest 定义开始

<domain type='kvm'>

2、guest的short name。由字母和数字组成,不能包含空格

<name>centosvm1</name>

3、uuid,由命令行工具 uuidgen生成。

<uuid>bdbb89fb-57d1-4d01-b3b7-ff33a9346ae6</uuid>

4、在不reboot guest的情况下,guset可以使用的最大内存,以KB为单位

<memory>2048000</memory>

5、guest启动时内存,可以通过virsh setmem来调整内存,但不能大于最大可使用内存。

<currentMemory>1024000</currentMemory>

6、分配的虚拟cpu

<vcpu>2</vcpu>

7、有关OS

x86架构:i686  

hvm:全虚拟化

kernel:指定guest使用的内核,如果使用ISO(安装时)或guset系统中(系统已经安装完成)的内核,不需要指定该项

initrd:指定guest使用的ram disk,如果使用ISO(安装时)或guest系统中(系统已经安装完成)的ram disk,不需要指定该项

注:kernel 和initrd文件位于RHEL系统光盘的images/pxeboot目录,拷贝这两个文件到本地磁盘,并指定路径。

注:这两个元素,如果是为了安装guset而指定,在安装完成以后即可以删除。

如 果host开启了SELINUX,you also need to change the type of security context for the files to virt_image_t to allow libvirtd to access them for booting: 

# chcon -t virt_image_t /tmp/vmlinuz-rhel54

# chcon -t virt_image_t /tmp/initrd-rhel54.img

After you change the security context, verify that the correct security context is assigned to them as shown in the following example: 

# ls -Z /tmp|grep virt

-r--r--r--  root root root:object_r:virt_image_t         initrd-rhel54.img

-r--r--r--  root root root:object_r:virt_image_t         vmlinuz -rhel54

boot:指定启动设备,可以重复多行,指定不同的值,作为一个启动设备列表。

可以在cmdline元素中添加启动参数,例如,使用kickstart文件:

<cmdline>method=http://10.1.1.212/install/rhel5.4/x86_64 

ks=http://10.1.1.212/install/autoinst/c20m2n05v3</cmdline>

<os>

      <type arch='x86_64' machine='pc'>hvm</type>

      <kernel>/tmp/vmlinuz-rhel54</kernel>

      <initrd>/tmp/initrd-rhel54.img</initrd>

      <boot dev='hd'/>

    </os>

8、处理器特性

<features>

      <acpi/>

      <apic/>

      <pae/>

    </features>

关于处理器特性,查看:

http://blog.chinaunix.net/space.php?uid=1838361&do=blog&id=1753201


9、时钟。使用本地时间:localtime

    <clock offset='utc'/>


仍然需要再计划任务中添加时间同步:

*/15 * * * * (/usr/sbin/ntpdate 210.72.145.44 > /dev/null 2>&1;/sbin/hwclock -w)

10、定义了在kvm环境中power off,reboot,或crash时的默认的动作为destroy。其他允许的动作包括:restart,preserve,rename-restart.

在 这个例子中,destory之所以也用在了on_reboot元素中,是因为一旦安装完成,期望的guest动作是stop,以便从the installed guest operating system而不是从the installation kernel or ISO编辑guest的定义。

destroy:停止该虚拟机。相当于关闭电源

    <on_poweroff>destroy</on_poweroff>

    <on_reboot>destroy</on_reboot>

    <on_crash>destroy</on_crash>

11、设备定义开始

<devices>

12、模拟元素,此处写法用于kvm的guest(xen怎么写?)

<emulator>/usr/libexec/qemu-kvm</emulator>  

13、用于kvm存储的文件。在这个例子中,在guest中显示为IDE设备。

使用qemu-img命令创建该文件,kvm image的默认目录为:/var/lib/libvirt/images/

<disk type='file' device='disk'>

<driver name='qemu' type='raw' cache='none'/>

        <source file='/var/lib/libvirt/images/kvm3.img'/>

        <target dev='hda' bus='ide'/>

      </disk>

这里需要注意:使用libvirt 0.6.3写的xml,没有<driver name='qemu' type='qcow2'/>参数,当将该xml放到libvirt 0.8版本时,该参数会默认为raw,所以会造成在0.6中可以启动的guest无法启动,更改参数即可

使用virtio:

采用普通的驱动,即硬盘和网卡都采用默认配置情况下,硬盘是 ide 模式,而网卡工作在 模拟的rtl 8139 网卡下,速度为100M 全双工。采用 virtio 驱动后,网卡工作在 1000M 的模式下,硬盘工作是SCSI模式下。

<disk type='file' device='disk'>

   <driver name='qemu' type='raw' cache='none'/>

   <source file='/usr/local/kvm/vmsample/disk.os'/>

   <target dev='vda' bus='virtio'/>

</disk>

硬盘采用 virtio 后,安装windows 系统,将不能正常的识别硬盘,解决的方法是:

从kvm 的官网下载virtio的驱动iso。

1. 先采用ide模式安装系统。

2. 安装完成后,添加一个virtio模式的硬盘。
3. 启动vm后,系统会自动搜索 SCSI的驱动,找到下载的virtio 驱动后,安装即可。
4. 修改vm 配置文件,删除掉添加的 vitro 硬盘后,修改ide硬盘为 virtio模式即可。


A Note About Virtio Drivers

Virtio is paravirtualized drivers for kvm/Linux. With this you can can run multiple virtual machines running unmodified Linux or Windows VMs. Each virtual machine has private virtualized hardware a network card, disk, graphics adapter, etc. According to Redhat:

Para-virtualized drivers enhance the performance of fully virtualized guests. With the para-virtualized drivers guest I/O latency decreases and throughput increases to near bare-metal levels. It is recommended to use the para-virtualized drivers for fully virtualized guests running I/O heavy tasks and applications. 


关于cache=none

如果不加该参数,默认cache policy为write through。

kvm官方及IBM都推荐使用raw,设置cache为none,以关闭kvm磁盘的cache策略,让数据可以直接落在实体硬盘上(实体机上其实也有磁盘cache的,并不需要kvm为cache操心)

For the best storage performance on guest operating systems that use raw disk volumes or partitions,completely avoid the page cache on the host.

下面的帖子中有一段关于cache的内容:

http://www.linuxeden.com/forum/viewthread.php?tid=205581&extra=&page=3


  

补充:可以定义多个磁盘,其他可行的磁盘定义:

Logical volume device:

<disk type='block' device='disk'>

            <source 'dev=/dev/mapper/VolGroup01-LVM1'/>

            <target dev='hdb'/>

        </disk>

Disk partition:

<disk type='block' device='disk'>

            <source dev='/dev/sda4'/>

            <target dev='hdb' bus='ide'/>

        </disk>

CD-ROM device:

<disk type='block' device='cdrom'>

            <source 'dev=/dev/sde'>

            <target dev='hdb'/>

            <readonly/>

        </disk>

 

 14、使用网桥类型。确保每个kvm guest的mac地址唯一。将创建tun设备,名称为vnetx(x为0,1,2...)

<interface type='bridge'>

        <source bridge='br0'/>

        <mac address="3B:6E:01:69:3A:11"/>

</interface>

 补充:使用默认的虚拟网络代替网桥,即guest为NAT模式。也可以省略mac地址元素,这样将自动生成mac地址。

<interface type='network'>

            <source network='default'/>

            <mac address="3B:6E:01:69:3A:11"/>

        </interface>

 默认分配192.168.122.x/24的地址,也可以手动指定。网关为192.168.122.1


使用virtio:

采用普通的驱动,即硬盘和网卡都采用默认配置情况下,硬盘是 ide 模式,而网卡工作在 模拟的rtl 8139 网卡下,速度为100M 全双工。采用 virtio 驱动后,网卡工作在 1000M 的模式下,硬盘工作是SCSI模式下。

rhel5.6 guest with virtio interface can not boot successfully if the system installation would use the ide interface

https://bugzilla.redhat.com/show_bug.cgi?id=647387


<interface type='bridge'>

   <source bridge='br1'/>

   <model type='virtio' />

</interface>

性能:通过物理机上拷贝

普通驱动:26.1M

virtio驱动:44.7M  

因为交换机为100M,无法测试从其他物理机上拷贝。


 15、输入设备

<input type='mouse' bus='ps2'/>

 

 16、定义与guset交互的图形设备。在这个例子中,使用vnc协议。listen的地址为host的地址。prot为-1,表示自动分配端口号,通过以下的命令查找端口号:

virsh vncdisplay <KVM Guest Name>    

注意:是passwd 而不是password 

VNC is configured to listen on 127.0.0.1 by default. To make it listen on all public interfaces, edit /etc/libvirt/qemu.conf file.

<graphics type='vnc' listen='221.191.134.123' passwd='123456' port='-1' autoport='yes' keymap='en-us'/>  

 17、设备定义结束

</devices>

18、KVM定义结束

</domain>


© 著作权归作者所有

共有 人打赏支持
Q
粉丝 3
博文 17
码字总数 6420
作品 0
海淀
私信 提问
Centos6.5装KVM虚拟机

一、检查环境 1、系统要求: 处理器需求:需要一台可以运行最新linux内核的Intel处理器(含VT虚拟化技术)或AMD处理器(含SVM安全虚拟机技术的AMD处理器,也叫AMD-V)。 [root@laks ~]# cat...

moyier123
2015/12/18
510
0
在KVM中管理CPU和内存资源

改变CPU和内存的配置可以通过编辑VM定义的XML文件或者使用libvrit工具。 (1)获取运行实例的内存信息 (2)更新虚拟机的有效内存至2GB (3)停止运行的实例 (4)设置可以使用的最大内存为2...

studpid_boy666
06/04
0
0
使用命令接口对KVM虚拟机进行简单的管理

一 KVM对用户提供的命令主要在/usr/bin/目录下 [root@centoskvm ~]# ls /usr/bin/vir* /usr/bin/virsh /usr/bin/virt-manager /usr/bin/virt-clone /usr/bin/virt-pki-validate /usr/bin/vi......

a120518129
2017/07/04
0
0
KVM虚拟机的xml配置文件

在RHEL6中,用于从磁盘启动的XML文件 这里以dcs01.xml为例: dcs01 e5fff551-bbe1-e748-c8e4-8ecb3bffb902 1048576 1048576 1...

日久不生情
2017/11/22
0
0
KVM虚拟机安装管理——qemu-kvm方式

KVM (kernel-based virtual machine,内核虚拟机),是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。它使用Linux自身的调度器进行管理,虚拟化效率高、管理...

wuwei5460
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EOS官方钱包keosd

EOS官方钱包的名称是keosd,它负责管理你的私钥,并且帮你进行交易的签名。 不过不幸的是,keosd钱包对普通用户并不友好,它是一个命令行程序,目前还没有像以太坊的mist那样的图形化界面,而...

汇智网教程
今天
32
0
ArrayList的实现原理以及实现线程安全

一、ArrayList概述 ArrayList是基于数组实现的,是一个动态的数字,可以自动扩容。 ArrayList不是线程安全的,效率比较高,只能用于单线程的环境中,在多线程环境中可以使用Collections.syn...

一看就喷亏的小猿
今天
38
0
Netty 备录 (一)

入职新公司不久,修修补补1个月的bug,来了点实战性的技术---基于netty即时通信 还好之前对socket有所使用及了解,入手netty应该不是很难吧,好吧,的确有点难,刚看这玩意的时候,可能都不知道哪里...

_大侠__
昨天
43
0
Django简单介绍和用户访问流程

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。 Django是一个开放源代码的Web应用框架,由Python写成。 Django遵守BSD版权,初...

枫叶云
昨天
56
0
Spring Cloud Stream消费失败后的处理策略(四):重新入队(RabbitMQ)

应用场景 之前我们已经通过《Spring Cloud Stream消费失败后的处理策略(一):自动重试》一文介绍了Spring Cloud Stream默认的消息重试功能。本文将介绍RabbitMQ的binder提供的另外一种重试...

程序猿DD
昨天
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部