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
,sheepdog
或 gluster
。
如果 protocol 属性是
rbd
、heepdog
或 gluster
,则需要一个额外的属性名称来指定将使用哪个卷和镜像。
当磁盘类型是 网络
时,源
可能具有零个或多个 主机
子元素,用于指定要连接的主机物理机器,包括 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 中的设备名称。可选总线属性指定要模拟的磁盘设备类型;可能的值是特定驱动程序的驱动值,其中典型的值是 ide
、scsi
、virtio
、xen
、usb
或 sata
。如果省略,总线类型从设备名称的样式推断出来。例如,名为 "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
属性控制虚拟机监控程序在磁盘读取或写入错误上的行为方式,可能的值将停止
、report
、ignore
和enospace
。error_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
属性控制设备事件处理的一些方面,并可以设置为on
或off
- 如果它存在,它将减少中断数量并为客户机虚拟机退出。默认设置由管理程序确定,默认设置则位于上
。在这种情况下,这个行为微不足道,此属性提供了一种强制关闭功能的方法。
除非是需要操作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 属性的有效值为tcp
、rdma
或unix
。如果未指定任何内容,则假设tcp
。如果传输为unix
,则socket
属性指定到 unix 套接字的路径。
<address>
- 指向控制器给定插槽的磁盘。实际的<控制器>
设备通常被 推断,但也可以明确指定它。type
属性是强制的,通常为pci
或驱动器
。对于pci
控制器,必须存在总线
、插槽和
功能的其他属性,以及可选的域和
多功能功能
。multifun ction
默认为off
。对于驱动器
控制器,还有额外的属性控制器
、总线
、目标
和单元
,各自具有默认设置 0。geometry
- 提供覆盖 geometry 设置的能力。这在 S390 DASD-disks 或旧的 DOS-disks 中非常有用。cyls
- 指定柱面的数量。heads
- 指定头数。secs
- 指定每个跟踪的扇区数。trans
- 指定 BIOS-Translation-Modus,并具有以下值:none
、lba
或auto
blockio
- 允许使用以下列出的任意块设备属性覆盖块设备:blockio 选项
logical_block_size
- 向客户机虚拟机虚拟机操作系统报告,并描述磁盘 I/O 的最小单元。physical_block_size
- 向客户机虚拟机虚拟机操作系统报告,并描述磁盘的硬件扇区大小,它们可以与磁盘数据协调相关。