libvirt项目中Xen虚拟化的libxl驱动详解

libvirt项目中Xen虚拟化的libxl驱动详解

libvirt Read-only mirror. Please submit merge requests / issues to https://gitlab.com/libvirt/libvirt libvirt 项目地址: https://gitcode.com/gh_mirrors/li/libvirt

概述

libvirt项目的libxl驱动为Xen虚拟化平台提供了全面的管理能力,支持从Xen 4.6.0版本开始的所有发行版。作为连接libvirt API与Xen hypervisor的桥梁,libxl驱动通过Xen的libxl API(也称为libxenlight)实现虚拟化管理功能。

技术背景

在早期Xen版本中,应用程序需要与多个组件(如xend、xenstored等)交互才能完成虚拟化管理任务。而现代Xen版本通过libxl API提供了统一的接口,大大简化了管理流程。libxl驱动正是基于这一现代化接口构建的。

部署前提条件

要使用libvirt的libxl驱动,需要满足以下条件:

  1. 已正确安装Xen主机环境
  2. 运行libxl工具栈的服务域(通常是Domain-0)
  3. 不需要额外的组件如xend等

连接方式

libxl驱动是单实例特权驱动,驱动名称为"xen"。支持多种连接方式:

  • 本地直接访问:xen:///system
  • 通过守护进程本地访问:xen+unix:///system
  • 远程TLS/x509加密访问:xen://example.com/system
  • 远程SASL/Kerberos认证访问:xen+tcp://example.com/system
  • SSH隧道远程访问:xen+ssh://root@example.com/system

配置文件

libxl驱动提供了合理的默认配置,系统管理员可以通过修改/etc/libvirt/libxl.conf文件来覆盖默认设置。

配置格式转换

libxl驱动支持三种原生配置格式:

  1. xen-xm:传统Xen虚拟机配置格式
  2. xen-sxpr:xend遗留HTTP RPC服务使用的格式(5.6.0版本后已移除)
  3. xen-xl:现代Xen支持的虚拟机配置格式(详见xl.cfg(5)手册页)

从原生格式转换为libvirt XML

使用virsh domxml-from-native命令可将现有配置文件转换为libvirt域XML:

virsh -c xen:///system domxml-from-native xen-xm rhel5.cfg

从libvirt XML转换为原生格式

使用virsh domxml-to-native命令可将libvirt域XML转换为原生配置格式:

virsh -c xen:///system domxml-to-native xen-xm rhel5pv.xml

QEMU设备模型参数传递

从6.7.0版本开始,Xen驱动支持通过<xen:commandline>元素向Xen使用的QEMU设备模型传递任意命令行参数。使用时需要声明XML命名空间http://libvirt.org/schemas/domain/xen/1.0

示例:传递参数定义Xen公共API不支持的软盘驱动器

<domain type="xen" xmlns:xen="http://libvirt.org/schemas/domain/xen/1.0">
  ...
  <xen:commandline>
    <xen:arg value='-drive'/>
    <xen:arg value='file=/path/to/image,format=raw,if=none,id=drive-fdc0-0-0'/>
    <xen:arg value='-global'/>
    <xen:arg value='isa-fdc.driveA=drive-fdc0-0-0'/>
  </xen:commandline>
</domain>

域XML配置示例

半虚拟化客户机使用引导加载程序

通过存储在虚拟磁盘镜像内的内核启动客户机:

<domain type='xen'>
  <name>fc8</name>
  <bootloader>/usr/bin/pygrub</bootloader>
  <os>
    <type>linux</type>
  </os>
  <memory>131072</memory>
  <vcpu>1</vcpu>
  <devices>
    <disk type='file'>
      <source file='/var/lib/xen/images/fc4.img'/>
      <target dev='sda1'/>
    </disk>
    <interface type='bridge'>
      <source bridge='xenbr0'/>
      <mac address='aa:00:00:00:00:11'/>
      <script path='/etc/xen/scripts/vif-bridge'/>
    </interface>
    <console tty='/dev/pts/5'/>
  </devices>
</domain>

半虚拟化客户机直接内核启动

使用存储在主机操作系统中的内核和initrd启动客户机:

<domain type='xen'>
  <name>fc8</name>
  <os>
    <type>linux</type>
    <kernel>/var/lib/xen/install/vmlinuz-fedora8-x86_64</kernel>
    <initrd>/var/lib/xen/install/initrd-vmlinuz-fedora8-x86_64</initrd>
    <cmdline> kickstart=http://example.com/myguest.ks </cmdline>
  </os>
  <memory>131072</memory>
  <vcpu>1</vcpu>
  <devices>
    <disk type='file'>
      <source file='/var/lib/xen/images/fc4.img'/>
      <target dev='sda1'/>
    </disk>
    <interface type='bridge'>
      <source bridge='xenbr0'/>
      <mac address='aa:00:00:00:00:11'/>
      <script path='/etc/xen/scripts/vif-bridge'/>
    </interface>
    <graphics type='vnc' port='-1'/>
    <console tty='/dev/pts/5'/>
  </devices>
</domain>

全虚拟化客户机BIOS启动

使用模拟BIOS从主硬盘、CDROM或网络PXE ROM启动:

<domain type='xen' id='3'>
  <name>fv0</name>
  <uuid>4dea22b31d52d8f32516782e98ab3fa0</uuid>
  <os>
    <type>hvm</type>
    <loader>/usr/lib/xen/boot/hvmloader</loader>
    <boot dev='hd'/>
  </os>
  <memory>524288</memory>
  <vcpu>1</vcpu>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <features>
    <pae/>
    <acpi/>
    <apic/>
  </features>
  <clock sync="localtime"/>
  <devices>
    <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
    <interface type='bridge'>
      <source bridge='xenbr0'/>
      <mac address='00:16:3e:5d:c7:9e'/>
      <script path='vif-bridge'/>
    </interface>
    <disk type='file'>
      <source file='/var/lib/xen/images/fv0'/>
      <target dev='hda'/>
    </disk>
    <disk type='file' device='cdrom'>
      <source file='/var/lib/xen/images/fc5-x86_64-boot.iso'/>
      <target dev='hdc'/>
      <readonly/>
    </disk>
    <disk type='file' device='floppy'>
      <source file='/root/fd.img'/>
      <target dev='fda'/>
    </disk>
    <graphics type='vnc' port='5904'/>
  </devices>
</domain>

全虚拟化客户机直接内核启动

Xen 3.2.0及以上版本支持绕过BIOS直接启动Linux内核和initrd:

<domain type='xen' id='3'>
  <name>fv0</name>
  <uuid>4dea22b31d52d8f32516782e98ab3fa0</uuid>
  <os>
    <type>hvm</type>
    <loader>/usr/lib/xen/boot/hvmloader</loader>
    <kernel>/var/lib/xen/install/vmlinuz-fedora8-x86_64</kernel>
    <initrd>/var/lib/xen/install/initrd-vmlinuz-fedora8-x86_64</initrd>
    <cmdline> kickstart=http://example.com/myguest.ks </cmdline>
  </os>
  <memory>524288</memory>
  <vcpu>1</vcpu>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <features>
    <pae/>
    <acpi/>
    <apic/>
  </features>
  <clock sync="localtime"/>
  <devices>
    <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
    <interface type='bridge'>
      <source bridge='xenbr0'/>
      <mac address='00:16:3e:5d:c7:9e'/>
      <script path='vif-bridge'/>
    </interface>
    <disk type='file'>
      <source file='/var/lib/xen/images/fv0'/>
      <target dev='hda'/>
    </disk>
    <disk type='file' device='cdrom'>
      <source file='/var/lib/xen/images/fc5-x86_64-boot.iso'/>
      <target dev='hdc'/>
      <readonly/>
    </disk>
    <disk type='file' device='floppy'>
      <source file='/root/fd.img'/>
      <target dev='fda'/>
    </disk>
    <graphics type='vnc' port='5904'/>
  </devices>
</domain>

通过以上配置示例和技术说明,用户可以全面了解如何使用libvirt的libxl驱动来管理Xen虚拟化环境。

libvirt Read-only mirror. Please submit merge requests / issues to https://gitlab.com/libvirt/libvirt libvirt 项目地址: https://gitcode.com/gh_mirrors/li/libvirt

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卫伊祺Ralph

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值