Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

20.16. Devices

这一组 XML 元素都用于描述为虚拟客户机域提供的设备。以下所有设备都显示为主设备元素的子项。
支持以下虚拟设备:
  • virtio-scsi-pci - PCI 总线存储设备
  • virtio-9p-pci - PCI 总线存储设备
  • virtio-blk-pci - PCI 总线存储设备
  • virtio-net-pci - PCI 总线网络设备也称为 virtio-net
  • virtio-serial-pci - PCI 总线输入设备
  • virtio-balloon-pci - PCI 总线内存 balloon 设备
  • virtio-rng-pci - PCI 总线虚拟随机数字生成器设备
重要
如果创建了 virtio 设备,其中向量数量被设置为大于 32 的值,则设备的行为就像在 Red Hat Enterprise Linux 6 中被设置为零个值,但没有在 Enterprise Linux 7 中。如果平台上的任何 virtio 设备中向量数量设置为 33 或更高,则生成的向量设置不匹配会导致迁移错误。因此,不会试图将 向量 值设置为大于 32。除 virtio-balloon-pci 和 virtio-rng-pci 外,所有 virtio 设备都接受 向量 参数。

图 20.22. devices - 子元素


  ...
  <devices>
    <emulator>/usr/lib/xen/bin/qemu-dm</emulator>
  </devices>
  ...
<模拟器> 元素的内容指定到设备模型模拟器二进制文件的完全限定路径。capabilities XML 指定为每个特定域类型或架构组合使用的建议默认模拟器。

20.16.1. 硬盘驱动器, Floppy Disks, CDROMs

域 XML 的这一部分指定了类似于磁盘的任何设备,它是软盘、硬盘、cdrom 或半虚拟化驱动程序通过 disk 元素指定。

图 20.23. devices - 硬盘、软盘、CDROM


 ...
  <devices>
    <disk type='file' snapshot='external'>
      <driver name="tap" type="aio" cache="default"/>
      <source file='/var/lib/xen/images/fv0' startupPolicy='optional'>
        <seclabel relabel='no'/>
      </source>
      <target dev='hda' bus='ide'/>
      <iotune>
        <total_bytes_sec>10000000</total_bytes_sec>
        <read_iops_sec>400000</read_iops_sec>
        <write_iops_sec>100000</write_iops_sec>
      </iotune>
      <boot order='2'/>
      <encryption type='...'>
        ...
      </encryption>
      <shareable/>
      <serial>
        ...
      </serial>
    </disk>
      ...
    <disk type='network'>
      <driver name="qemu" type="raw" io="threads" ioeventfd="on" event_idx="off"/>
      <source protocol="sheepdog" name="image_name">
        <host name="hostname" port="7000"/>
      </source>
      <target dev="hdb" bus="ide"/>
      <boot order='1'/>
      <transient/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
    <disk type='network'>
      <driver name="qemu" type="raw"/>
      <source protocol="rbd" name="image_name2">
        <host name="hostname" port="7000"/>
      </source>
      <target dev="hdd" bus="ide"/>
      <auth username='myuser'>
        <secret type='ceph' usage='mypassid'/>
      </auth>
    </disk>
    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>
    <disk type='block' device='lun'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sda'/>
      <target dev='sda' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='3' unit='0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sda'/>
      <geometry cyls='16383' heads='16' secs='63' trans='lba'/>
      <blockio logical_block_size='512' physical_block_size='4096'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='volume' device='disk'>
      <driver name='qemu' type='raw'/>
      <source pool='blk-pool0' volume='blk-pool0-vol0'/>
      <target dev='hda' bus='ide'/>
    </disk>
  </devices>
  ...

20.16.1.1. 磁盘元素

<disk> 元素是用于描述磁盘的主要容器。属性 类型 可以与 <disk> 元素一起使用。允许以下类型:
  • file
  • block
  • dir
  • network
如需更多信息,请参阅 磁盘元素

20.16.1.2. Source 元素

如果磁盘 <type='file' 的>,则 file 属性指定保存磁盘的文件的完全限定域名。如果 <disk type='block'>,则 dev 属性指定要用作磁盘的主机物理设备的路径。使用 文件和 (一个或多个可选子元素 seclabel )可用于只为源文件覆盖域安全标签策略。如果磁盘类型是 dir,则 dir 属性指定要用作磁盘的目录的完全限定路径。如果磁盘类型是 网络,则 protocol 属性指定要访问所请求镜像的协议;可能的值是 nbd, rbd ,rbd,sheepdoggluster
如果 protocol 属性是 rbdheepdoggluster,则需要一个额外的属性名称来指定将使用哪个卷和镜像。当磁盘类型是 网络 时, 可能具有零个或多个 主机 子元素,用于指定要连接的主机物理机器,包括 type='dir'type='network'。对于代表 cdrom 或 floppy(设备属性)的文件内容类型,可以在无法访问源文件时定义对磁盘执行的操作。这可以通过操作 startupPolicy 属性和以下值实现:
  • 如果由于任何原因丢失,则 强制 会导致失败。这是默认设置。
  • 如果引导时缺少,则会导致失败,如果缺少 migration/restore/revert
  • 可选,如果任何开始尝试都缺少,则会丢弃

20.16.1.3. mirror 元素

如果虚拟机监控程序已启动了 BlockCopy 操作,则该文件中的镜像位置最终会与源的内容相同,且文件格式的格式为属性(源的格式可能会不同)。<>如果存在属性 ready,则已知磁盘已准备好 pivot;否则,磁盘可能仍进行复制。现在,此元素仅在输出中有效,它会被忽略。

20.16.1.4. 目标元素

<target> 元素控制磁盘公开给客户端虚拟机 OS 的总线 / 设备。dev 属性表示逻辑设备名称。指定的实际设备名称不能映射到客户端虚拟机 OS 中的设备名称。可选总线属性指定要模拟的磁盘设备类型;可能的值是特定驱动程序的驱动值,其中典型的值是 idescsivirtioxenusbsata。如果省略,总线类型从设备名称的样式推断出来。例如,名为 "sda" 的设备通常使用 SCSI 总线导出。可选属性 托盘 表示可移动磁盘的遍历状态(如 CD-ROM 或 Floppy 磁盘),可以 打开或关闭 该值。默认设置为 关闭。如需更多信息,请参阅 目标元素

20.16.1.5. iotune

可选的 <iotune> 元素提供额外的每个设备 I/O 调整功能,每个设备的值可能会有所不同(与 blkiotune 元素相对应的 blkiotune 元素进行全局应用到域)。此元素具有下列可选子元素:请注意,任何未指定的子元素或指定了值为 0 的子元素表示没有限制。
  • <total_bytes_sec> - 总吞吐量限值(以字节/秒为单位)。此元素不能与 <read_bytes_sec><write_bytes_sec> 一起使用。
  • <read_bytes_sec> - 每秒的读取吞吐量限制。
  • <write_bytes_sec> - 每秒写入吞吐量限制(以字节为单位)。
  • <total_iops_sec> - 每秒总 I/O 操作数。此元素不能与 <read_iops_sec><write_iops_sec> 一起使用。
  • <read_iops_sec> - 每秒读取 I/O 操作。
  • <write_iops_sec> - 每秒写入 I/O 操作。

20.16.1.6. driver

可选 <驱动程序> 元素允许指定与用来提供磁盘的虚拟机监控程序驱动程序相关的更多详情。可使用以下选项:
  • 如果虚拟机监控程序支持多个后端驱动程序,则 name 属性选择主要后端驱动程序名称,而可选 type 属性则提供子类型。如需可能类型的列表,请参阅 驱动程序元素
  • 可选 的缓存 属性控制缓存机制,可能的值有: 默认写回直接同步 (类似于 writethrough ,但会绕过主机物理机器页面缓存)和 不安全 (主机物理计算机可能会缓存所有磁盘 io,以及来自 guest 虚拟机虚拟机的同步请求)。
  • 可选的 error_policy 属性控制虚拟机监控程序在磁盘读取或写入错误上的行为方式,可能的值 将停止reportignoreenospaceerror_policy 的默认设置为 报告。还有一个可选的 rerror_policy,它只控制读取错误的行为。如果没有给出 rerror_policy,则 error_policy 会同时用于读写错误。如果给出了 rerror_policy,它将覆盖 error_policy 读取错误。另请注意,enospace 不是读取错误的有效策略,因此,如果 error_policy 被设置为 enospace 且未提供 rerror_policy,则会使用默认设置的读取错误,报告 会被使用。
  • 可选的 io 属性控制 I/O 上的特定策略; qemu guest 虚拟机支持 线程原生。可选的 ioeventfd 属性允许用户为磁盘设备设置域 I/O 异步处理。默认设置可以自由裁量使用虚拟机监控程序。接受的值为 on关闭。启用此功能可让在单独的线程处理 I/O 时执行 guest 虚拟机。通常,在 I/O 期间具有高系统 CPU 利用率的客户机虚拟机将从此中受益。另一方面,过载主机物理机器可提高客户机虚拟机 I/O 延迟。除非您绝对认证了需要操作 io,否则强烈建议您不要更改默认设置并允许管理程序指定设置。
  • 可选的 event_idx 属性控制设备事件处理的一些方面,并可以设置为 onoff - 如果它存在,它将减少中断数量并为客户机虚拟机退出。默认设置由管理程序确定,默认设置则位于 。在这种情况下,这个行为微不足道,此属性提供了一种强制关闭功能的方法 除非是需要操作 event_idx 的绝对证书,否则强烈建议您不要更改默认设置并允许管理程序指定设置。
  • 可选的 copy_on_read 属性控制是否将读取后备文件复制到镜像文件中。接受的值可以是 on<off>copy-on-read 可避免重复访问同一后备文件扇区,当后备文件超过较慢的网络时很有用。默认 copy-on-read

20.16.1.7. 其他设备元素

以下属性可在 设备 元素中使用:
  • <boot> - 指定磁盘可引导。

    其他引导值

    • <order> - 确定启动序列过程中将尝试的设备的顺序。
    • 在 BIOS 引导装载程序部分中无法与常规引导元素一起使用 <每个设备> 引导元素
  • <加密> - 指定卷加密方式。如需更多信息,请参阅存储加密页面。
  • <ReadOnly> - 表示客户机虚拟机无法修改该设备。此设置是具有 属性 device='cdrom' 的磁盘的默认设置。
  • 可共享 设备预期在域间共享(只要虚拟机监控程序和操作系统支持)。如果使用 shareable,则 cache='no' 应该为该设备使用。
  • <瞬态>- 当客户机虚拟机退出时,应自动恢复对设备内容的更改。对于某些虚拟机监控程序,标记磁盘 临时 会阻止域参与迁移或快照。
  • <serial>- 指定客户机虚拟机的序列号。例如: <serial>WD-WMAP9A966149</serial>
  • WWN - 指定虚拟硬盘或 CD-ROM 驱动器的 WWN(World Wide Name)。<>它必须由 16 位十六进制数字组成。
  • <vendor> - 指定虚拟硬盘或 CD-ROM 设备的厂商。它不能超过 8 个可打印字符。
  • <product> - 指定虚拟硬盘或 CD-ROM 设备的产品。它不能超过 16 个可打印字符
  • <主机> - 支持 4 属性: viz名称端口、传输和 套接字,分别指定主机名、端口号、传输类型和路径。此元素的含义和元素的数量取决于 协议 属性,如下所示:

    其他主机属性

    • nbd - 指定运行 nbd-server 的服务器,且只能用于一台主机物理机器
    • RBD - 监控 RBD 类型的服务器,并可用于一个或多个主机物理机器
    • sheepdog - 指定其中一个 sheepdog 服务器(默认为 localhost:700),且可以使用一台或任何主机物理计算机
    • Gluster - 指定运行 glusterd 守护进程的服务器,只能用于一台主机物理机器。transport 属性的有效值为 tcprdmaunix。如果未指定任何内容,则假设 tcp。如果传输为 unix,则 socket 属性指定到 unix 套接字的路径。
  • <address> - 指向控制器给定插槽的磁盘。实际的 <控制器> 设备通常被 推断,但也可以明确指定它。type 属性是强制的,通常为 pci驱动器。对于 pci 控制器,必须存在 总线插槽和 功能的其他属性,以及可选的 域和 多功能功能multifun ction 默认为 off。对于 驱动器 控制器,还有额外的属性 控制器总线目标单元,各自具有默认设置 0。
  • auth - 提供访问源所需的身份验证凭证。它包括一个强制属性 username,用于标识身份验证期间要使用的用户名,以及带有强制属性 类型 的子元素 secret。此处可参见 设备元素的更多信息
  • geometry - 提供覆盖 geometry 设置的能力。这在 S390 DASD-disks 或旧的 DOS-disks 中非常有用。
  • cyls - 指定柱面的数量。
  • heads - 指定头数。
  • secs - 指定每个跟踪的扇区数。
  • trans - 指定 BIOS-Translation-Modus,并具有以下值:nonelbaauto
  • blockio - 允许使用以下列出的任意块设备属性覆盖块设备:

    blockio 选项

    • logical_block_size- 向客户机虚拟机虚拟机操作系统报告,并描述磁盘 I/O 的最小单元。
    • physical_block_size - 向客户机虚拟机虚拟机操作系统报告,并描述磁盘的硬件扇区大小,它们可以与磁盘数据协调相关。