云计算国产化之路 vnc登录 文件系统直通(virtio-9p) 扩展qemu接口 gpg WARNING 珍藏博客 虚拟内存情况dommemstat分析 免密码自动登录脚本 Linux网桥 测试网段IP占用情况 Linux 进程状态 systemc强制依赖 调试openstack ut uefi p2v 重做ubuntu内核 virsh创建虚拟机简介 virtio IO路径 虚拟化层升级后磁盘无法卸载卷 vmtouch使用 Taint flags 主机和虚拟机文件共享处理的几种方法 kvm分析工具 kvm中对磁盘的io cache 虚拟化不同导致的guestos中软件安装差异(未解决) 设备直通(PCI Assignment)到底是咋整的 virtio到底是咋整的 内核启动参数 虚拟化实时性提升(零)之配置步骤 中断虚拟化(pic)到底是咋整的 中断虚拟化(apic)到底是咋整的 Raid卡配置丢失导致服务器无法启动 tainted kernels cpu stuck for 23s问题分析 虚拟化实时性提升(一)之hostOS切换为强实时系统 内存虚拟化到底是咋整的 qemu-kvm中vcpu虚拟化到底是咋整的 风河虚拟化技术点分析 使用qga的好处 qemu迁移代码分析 虚拟机串口配置及其导出到主机pts和console.log System-based I/O vs. Raw I/O 虚拟机使用Hugepage(大页) 硬件辅助分页(hardware assisted paging) 修改centos7默认启动项目 virtio的工作流程——kernel中virtio-pci初始化(2) virtio的工作流程——qemu中virtio-backend初始化(1) qmp ceilometer取不到memory.usage指标 Virtio-Balloon超详细分析 slabtop输出 虚拟机磁盘cache导致的host os kernel崩溃 虚拟机cpu和memory性能优化测评 PCI配置空间(PCI Configuration Space) centos下网卡设备直通(VT-dpci passthrough)遇到的问题及其解决思路 libguestfs详解 yum卸载软件包及其依赖 通过原始Centos ISO来定制自己的ISO centos下网卡设备直通(VT-d,pci passthrough) (占位符)window虚拟机中拔盘如何通知到libvirt和qemu后端的 cirrus漏洞分析CVE-2017-2615 XSA-208 qcow2随笔 控制寄存器概览 ceilometer对接postgresql 解压initrd和vmlinuz qemu guest agent验证 QEMU升级指南(待续) ubuntu中kdump的配置 qemu(2.3)接口梳理 热迁移导致的FC存储场景下的multipath卷残留问题分析 virsh命令(4)secret,snapshot,pool,volume部分 virsh命令(3)之interface,filter,network virsh命令(2)monitor,host,nodedev部分 virsh命令(1)之domain部分 QEMU内存管理之FlatView模型(QEMU2.0.0) ovirt基于sanock的高可用(主机粒度HA) Sanlock防脑裂场景功能测试用例 gnocchi配置及与ceilometer对接指南 make patch for libvirt in centos centos使用sanlock指导 高可用nfs资料 ubuntu14中使用sanlock指导 LVM操作指南 sanlock相关功能验证流程汇总 make patch for libvirt in ubuntu libvirt.so.0-version `LIBVIRT_PRIVATE_1.2.7' not found gdb debug libvirt 基于ubuntu社区源码包编译libvirt compile libvirt(centos) No PCI buses available nfs lead to Linux halt nfs install and config anti-virus for cloud platform nova fetch image from glance(something about _base) token auth process ovs入门指南 virt software anti-virus something about ceilometer disk sample context interview questions openstack vm injection openstack Restful and RPC murano 概览 创建虚拟机流程(compute节点)之网络创建 创建虚拟机流程之compute_api之虚拟机实例填充之配额检测 创建虚拟机流程之compute_api之基本参数生成 创建虚拟机流程之compute_api 创建虚拟机流程(主) 创建虚拟机之image 创建虚拟机流程之准备网桥 创建虚拟机流程之virt 创建虚拟机流程之compute节点 CI/CD研发流程之工程创建 CI/CD研发流程之代码合入 CI/CD研发流程之UT(单元测试) 向openstack社区合入代码记 openstack/ceilometer/gnocchi杂谈 影子页表原理 mem_add(exec.c) qemu编译安装调试 openstack/ceilometer/gnocchi之Grafana简介 openstack wiki etcd openstack计量ceilometer openstack计费cloudKitty enventlet backdoor USB 安装VMWARE ESX pycharm设置指南 无法执行modprobe -a kvm-intel解决办法 QEMU配置项 网络不通小记 libvirt之XML(虚拟机定义文件) openstack-horizon 证书认证 ceilometer与ceph对接 openstack定时任务剖析(TODO) 服务器重启后mongodb进程无法启动 ubuntu14下新增openstack服务到service的导引 ERROR 1045(28000)-数据库连不上 Python两个内置函数—locals和globals unknown exit, hardware reason 31

libvirt之XML(虚拟机定义文件)

2015年01月03日

libvirt通过XML格式管理虚拟机实例的,具体说是通过XML详细描述了虚拟机的各项配置。 先点击这里 感受下大体上的配置都有那些。 详细配置见官网

路径

在nova.conf中instances_path项目定义了你虚拟机在计算节点上储存的位置,这里我配置为/opt/nova/instances

基本信息

libvirt中虚拟机称之为domain(另外需要注意的是,xen中domain是宿主机计算节点)

通用

<uuid>8cc9bcbe-8179-4195-88ae-839257fc539f</uuid>  --计算节点上唯一标识
<name>instance-00000111</name>--虚拟机名字,与openstack创建指定不同,自动生成
<memory>2097152</memory>--内存大小(2048M)
<vcpu>2</vcpu>--核数

metadata

<metadata>
   <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0">
      <nova:package version="2015.1.1"/>
      <nova:name>ETCD</nova:name> --这个是我在opesnstack创建的用户名
      <nova:creationTime>2015-10-31 01:40:52</nova:creationTime>
      <nova:flavor name="etc_flavor">   --这个是创建时候指定的flavor模板
          <nova:memory>2048</nova:memory>
          <nova:disk>40</nova:disk>
          <nova:swap>1024</nova:swap>
          <nova:ephemeral>0</nova:ephemeral>
          <nova:vcpus>2</nova:vcpus>
      </nova:flavor>
   <nova:owner>--创建者信息
      <nova:user uuid="48d8cd602577412c978f0184544e9e1c">admin</nova:user>
      <nova:project uuid="d04021d5a4144b4c9f579fdc1d1c2a9a">admin</nova:project>
   </nova:owner>
   </nova:instance>
</metadata>

BIOS

<sysinfo type="smbios">   ---System Management BIOS 主板信息
   <system>
      <entry name="manufacturer">OpenStack Foundation</entry>
      <entry name="product">OpenStack Nova</entry>
      <entry name="version">2015.1.1</entry>
      <entry name="serial">00000000-0000-0000-0000-0cc47a159c98</entry>
      <entry name="uuid">8cc9bcbe-8179-4195-88ae-839257fc539f</entry> --复用上面虚拟机ID
   </system>
</sysinfo>

操作系统

<os>
   <type>hvm</type>   --hardware virtual machine 基于硬件的虚拟化
   <boot dev="hd"/>   --首先选择硬盘(hard disk)作为启动介质
   <smbios mode="sysinfo"/> --使用上面的sysinfo定义的内容
</os>

[todo]这里的boot和openstack中nova boot的下面参数是否有关联,需要确认

高级配置

<features>
   <acpi/>  --Advanced Configuration and Power Management Interface
   <apic/>
</features>

CPU糖(cpu tune)

<cputune>
   <shares>2048</shares>
</cputune>

主要可以设置一些cpu相关的参数做到调配,可以通过这里设置做到虚拟机CPU qos(见本人另外一篇博文)

时钟

<clock offset="utc">
   <timer name="pit" tickpolicy="delay"/>
   <timer name="rtc" tickpolicy="catchup"/>
   <timer name="hpet" present="no"/>
</clock>

the guest clock is typically initialized from the host clock. Most operating systems expect the hardware clock to be kept in UTC, and this is the default. Windows, however, expects it to be in so called ‘localtime’.timer

CPU

<cpu mode="host-model" match="exact">
   <topology sockets="2" cores="1" threads="1"/>
</cpu>

模式(mode)

  • host-model(默认选项)按照虚拟机的cpu标签指定的给整,不许瞎整。保证了虚拟机在哪起cpu属性都一样。

  • custom按照宿主机的cpu样子整。虚拟机启动的的时候直接抄袭宿主机的cpu信息。 这种情况下match标签就瞎白活了,不起作用。 迁移的时候会保持原来的样子,重启时候会按照新宿主机来。 注意:由于libvirt获取宿主机cpu mode的方式和创建虚拟机的cpu mode时候不与kvm交互,导致虚拟机整出来的情况比较混乱。尽量避免使用这种模式。

  • host-passthrough 穿透模式,虚拟机直接看得到硬件,和硬件强相关。 PCI设备的穿透可以参考本人另外博文

匹配(match)

虚拟机对所声明的cpu需求的苛求程度。

  • minimum
    The specified CPU model and features describes the minimum requested CPU.
  • exact(Since 0.8.5 版本默认)
    The virtual CPU provided to the guest will exactly match the specification
  • strict
    The guest will not be created unless the host CPU does exactly match the specification.

topology

具体例子,某个服务器是:2路4核超线程(一般默认为2个线程),那么,通过cat /proc/cpuinfo看到的是242=16个processor,很多人也习惯成为16核了

  • sockets:socket就是主板上插cpu的槽的数目,也即管理员说的”路“
  • cores:core就是我们平时说的”核“,即双核,4核等
  • threads:thread就是每个core的硬件线程数,即超线程

外设

磁盘

type

指明当前资源的类型

  • “file”
  • “block”
  • “dir” (since 0.7.5)
  • “network” (since 0.8.7)
  • “volume” (since 1.0.5)

device

指明当前资源是虚拟机的什么设备,默认是”disk”

  • “floppy”
  • “disk”
  • “cdrom”
  • “lun”

source

  • type=file –文件全路径
  • type=block –当前磁盘在主机上的设备全路径
  • type=dir –目录的全路径
  • type=network –protocol表明访问镜像的方式 “nbd”, “iscsi”, “rbd”, “sheepdog” or “gluster”

target

挂载成虚拟机的哪个盘

  • bus 访问磁盘设备方式 有ide”, “scsi”, “virtio”, “xen”, “usb”, “sata”, or “sd”等方式。

driver

可选参数,用来进一步指定磁盘的类型等。

  • authtype 有如下几种类型”raw”, “bochs”, “qcow2”, and “qed”

网卡

多种方式,这里只分析bridge模式。 多个宿主机的物理网卡之间虚拟出一条 桥接器 ovs

串口

输入设备

mouse’, ‘tablet’ or (since 1.2.2) ‘keyboard

显示

启一个vnc server

视频

“vga”, “cirrus”, “vmvga”, “xen”, “vbox”, or “qxl”

内存气球

通常来说,要改变客户机占用的宿主机内存,是要先关闭客户机,修改启动时的内存配置,然后重启客户机才能实现。而内存的ballooning(气球)技术可以在客户机运行时动态地调整它所占用的宿主机内存资源,而不需要关闭客户机。