6. Virtualization
This section contains information about updates made to Red Hat Enterprise Linux suite of Virtualization tools.
6.1. Feature Updates
- 已更新 blktap(blocktap)用户空间工具套件,提供监控 blktap 备份的虚拟客户端的传输统计功能。
- 添加了对 Intel 扩展页面表(EPT)性能的支持,改进了在支持 EPT 的硬件中全虚拟客户端的性能。
- 已在这个更新中添加了用户客户端的
e1000
网络设备模拟,只支持 ia64 构架中的 Windows 2003 客户端。要使用 e1000 模拟,则必须使用 xm 命令。 - 已将
virtio
的驱动程序、KVM 中的 I/O 虚拟化平台从内核 2.6.27 回迁到红帽企业版 Linux 5.3。这些驱动程序将使 KVM 客户端达到更高水平的 I/O 性能。各种用户空间组件,比如:anaconda
、kudzu
、lvm
、selinux
和mkinitrd
已被更新至可支持 virtio 设备。 - 本地 Linux 内核自动支持
vmcoreinfo
,但要在 dom0 中设置 dkump,则需要kernel-xen-debuginfo
软件包。在这个发行本中,已修改了内核和监控程序,且现在支持 vmcoreinfo 本地读取和写入 kdump。需要使用 kdump 进行 debug 或者其它在 dom0 域中进行调查的用户现在可以不安装debuginfo
或者debuginfo-common
软件包。 - 全虚拟红帽企业版 Linux 5 客户端在使用模拟磁盘和网络设备时会有亚优化性能。在这个更新中,已包含了 kmod-xenpv 软件包以简化在全虚拟客户端中半虚拟磁盘和网络的使用。在全虚拟客户端中使用这些驱动程序会显著提高全虚拟客户端性能和功能。对 Netfront 和 blockfront 驱动程序的 bug 修复可立刻被内核软件包识别并同步了。
- 客户端现在可以使用 2MB 返回页面内存表,它可提高系统性能。
6.2. Resolved Issues
6.2.1. All Architectures
- 关闭一个半虚拟客户端可能导致 dom0 在一段时间内停止响应。对有大内存(比如 12GB 以上)的客户端可能会感到延迟了几秒。在这个更新中,虚拟内核允许使用 pre-emptible 关闭大的半虚拟客户端,这样就解决了这个问题。
crash
was unable to read the relocation address of the hypervisor from a vmcore file. Consequently, opening a Virtualized kernel vmcore file with crash would fail, resulting in the error:crash: cannot resolve "idle_pg_table_4"
In this update, the hypervisor now saves the address correctly, which resolves this issue.- 之前,半虚拟客户端最多只能有 16 个磁盘设备。在这个更新中,已将这个限制提高到 256 个磁盘设备。
- 为 kdump 内核保留的内存不正确,导致崩溃转储不可用。在这个更新中,内存保留是正确,这样就可生成正确的崩溃转储。
- 在半虚拟客户端中附加一个有特定名称的磁盘(例如
/dev/xvdaa
、/dev/xvdab
、/dev/xvdbc
等等)会导致在该客户端中出现一个崩溃的/dev
设备。这个更新解决了这个问题,以便在向半虚拟客户端中添加有这些名称的磁盘时可在该客户端中生成一个正确的/dev
设备。 - 之前回路设备的数目是限制在 4。而这限制了在有超过 4 个网络接口的系统中创建桥接的能力。在这个更新中,
netloop
驱动程序现在可根据需要创建额外的回路设备。 - 当创建并销毁虚拟网络设备时会出现竞态环境。在有些情况下,特别是处于高负载状态时,这会导致虚拟设备不响应。在这个更新中会检查虚拟设备状态以防止出现竞态环境。
- 如果让应用程序一直运行则可能会遇到
virt-manager
中的内存泄露。因此,应用程序将不断消耗更多资源,这可能会导致内存不足。在这个更新中修复了泄露问题,也就解决了这个问题。 - the
crash
utility could not analyzex86_64
vmcores from systems runningkernel-xen
because the Red Hat Enterprise Linux hypervisor was relocatable and the relocated physical base address is not passed in the vmcore file's ELF header. The new--xen_phys_start
command line option for the crash utility allows the user to pass crash the relocated base physical address. Paravirtual Frame Buffer (PVFB)
不能捕获并处理所有鼠标设备。因此当与有Virtual Machine Console
的半虚拟客户端互动时滚轮不会工作。在这个更新中,现在可正确处理滚轮鼠标事件,这样就解决了这个问题。- 在含有大量 CPU 的机器中使用虚拟化可能会导致监控程序在安装客户端时崩溃。在这个更新中解决了这个问题。
- 在返回 CPUID 产品线数值 6 的 Intel 处理器中,在
kernel-xen
中只启用了一个性能计数器注册。因此,只有计数器 0 提供示例。在这个更新中解决了这个问题。
6.2.2. x86 Architectures
- On systems with newer CPU's, the CPU APIC ID differs from the CPU ID. Consequently, the virtualized kernel was unable to initialize CPU frequency scaling. In this update, the virtualized kernel now retrieves CPU APIC ID from the hypervisor, allowing CPU frequency scaling to be initialized properly.
- 当运行 x86 半虚拟客户端时,如果某个进程访问无效内存,它就会在一个回路中运行而不是获得 SEGV 信号。这是由于监控程序中采用的 execshield 检查方法中的一个漏洞所致。在这个更新中解决了这个问题。
6.2.3. ia64 Architecture
- A
xend
bug that previously caused guest installation failures is now fixed. evtchn
事件频道设备缺少锁定和内存屏障。这导致 xenstore 无法响应。在这个更新中解决了这个问题。- 非统一内存访问(NUMA)信息不是由
xm info
命令显示。因此,会返回每个节点的不正确node_to_cpu
值no cpus
。在这个更新中解决了这个问题。 - 之前,在使用 VT-i2 技术的处理器的硬件虚拟机(HVM)中创建客户端将失败。在这个更新中解决了这个问题。
6.2.4. x86_64 Architectures
- On systems with newer CPU's, the CPU APIC ID differs from the CPU ID. Consequently, the virtualized kernel was unable to initialize CPU frequency scaling. In this update, the virtualized kernel now retrieves CPU APIC ID from the hypervisor, allowing CPU frequency scaling to be initialized properly.
6.3. Known Issues
6.3.1. All Architectures
- 使用虚拟内核时将无法访问 Diskette 驱动器介质。要解决这个问题,请使用附带 USB 的 diskette 驱动器。请注意:diskette 驱动器介质在其它非虚拟内核中工作良好。
- In live migrations of paravirtualized guests, time-dependent guest processes may function improperly if the corresponding hosts' (dom0) times are not synchronized. Use NTP to synchronize system times for all corresponding hosts before migration.
- 重复地在两台主机间迁移一个客户端可能会导致其中一个主机 panic。如果某个主机在将某个客户机迁移出系统后至将其迁移回该系统前重启,就不会出现 panic 的情况。
- 在使用多虚拟 CPU 引导客户端时,运行 Windows 2008 或者 Windows Vista 作为客户端时格式化磁盘可导致崩溃。要解决这个问题,请在格式化时使用单一虚拟 CPU 引导客户端。
- 通过
virt-manager
创建的全虚拟客户端有时可能会使鼠标无法在整个屏幕中移动。要解决这个问题,请使用virt-manager
为该客户端配置一个 USB 平板设备。 - 在有 128 或者更多 CPU 的系统中,必须将最大 CPU 数目限制在 128 以下。请使用
maxcpus=126
监控程序参数将监控程序限制为 126。 - 全虚拟客户端修正由于暂停域和取消暂停域所造成的时间损失。在暂停和取消暂停事件间可正确跟踪时间是半虚拟内核的优势之一。这个问题已在上游进行了讨论,提议更换计时器,一百年全虚拟客户端有半虚拟的计时器。目前,这个编码还在上游开发中,并将会在红帽企业版 Linux 的稍后的版本中可用。
- 重复迁移半虚拟客户端可能会导致在
dom0
控制台中出现bad mpa
信息。在这种情况下,监控程序可能也会 panic。要防止监控程序内核 panic,请在出现 bad mpa 信息时重启迁移的客户端。 - 当设置绑定到
dom0
的接口时,默认network-bridge
基本可能导致绑定的网络接口在unavailable
和available
之间切换。即我们通常所说的 flapping。要防止这种情况发生,请在/etc/xen/xend-config.sxp
中使用以下行替换标准network-script
行:(network-script network-bridge-bonding netdev=bond0)
这样做将禁用 netloop 设备,这样做可防止在地址转换过程中地址解析协议(ARP)监控失败。 - When running multiple guest domains, guest networking may temporarily stop working, resulting in the following error being reported in the dom0 logs:
Memory squeeze in netback driver
To work around this, raise the amount of memory available to the dom0 with thedom0_mem
hypervisor command line option.
6.3.2. x86 Architectures
- Migrating paravirtualized guests through
xm migrate [domain] [dom0 IP address]
does not work. - When installing Red Hat Enterprise Linux 5 on a fully virtualized SMP guest, the installation may freeze. This can occur when the host (
dom0
) is running Red Hat Enterprise Linux 5.2.要防止此现象的发生,请将客户机设为在安装时使用单一处理器。您可以使用virt-install
的--vcpus=1
选项达到此目的。安装完成后,您可以通过在 virt-manager 中修改分配的vcpus
来将客户机设定为 SMP。
6.3.3. x86_64 Architectures
- Migrating paravirtualized guests through
xm migrate [domain] [dom0 IP address]
does not work. - Installing the Virtualization feature may cause a
time went backwards
warning on HP systems with model numbers xw9300 and xw9400.对于 xw9400 机器,如果要解决这个问题,可以在 BIOS 里启用 HPET 计时器。注意,这个选项对于 xw9300 机器是不可用的。 - Installing Red Hat Enterprise Linux 3.9 on a fully virtualized guest may be extremely slow. In addition, booting up the guest after installation may result in
hda: lost interrupt
errors.要避免此启动错误,请将客户机配置为使用 SMP 内核。 - Upgrading a host (
dom0
) system to Red Hat Enterprise Linux 5.2 may render existing Red Hat Enterprise Linux 4.5 SMP paravirtualized guests unbootable. This is more likely to occur when the host system has more than 4GB of RAM.要解决这个问题,请在单一 CPU 模式下引导每个红帽企业版 Linux 4.5 客户端,并将其内核升级到最新的版本(为红帽企业版 Linux 4.5.z)。
6.3.4. ia64 Architecture
- Migrating paravirtualized guests through
xm migrate [domain] [dom0 IP address]
does not work. - On some Itanium systems configured for console output to VGA, the
dom0
virtualized kernel may fail to boot. This is because the virtualized kernel failed to properly detect the default console device from the Extensible Firmware Interface (EFI) settings.出现这个问题时,在/boot/efi/elilo.conf
文件的内核引导选项中添加console=tty
引导参数即可解决。 - On some Itanium systems (such as the Hitachi Cold Fusion 3e), the serial port cannot be detected in
dom0
when VGA is enabled by the EFI Maintenance Manager. As such, you need to supply the following serial port information to thedom0
kernel:- 速度(以字节/秒为单位)
- 数据位数
- 奇偶性
io_base
地址
这些情况必须在/boot/efi/elilo.conf
内核的append=
行中指定。例如:append="com1=19200,8n1,0x3f8 -- quiet rhgb console=tty0 console=ttyS0,19200n8"
在这个示例中,com1
为串行端口,19200
为速度(字节/秒),8n1
指定数据位数的奇偶性设置,0x3f8
是io_base
的地址。 - Virtualization does not work on some architectures that use Non-Uniform Memory Access (NUMA). As such, installing the virtualized kernel on systems that use NUMA will result in a boot failure.有些安装号可默认安装虚拟的内核。如果您有这样一个安装号,且您的系统使用 NUMA,并不与 knernel-xen 合作,请在安装过程中不要选择虚拟化选项。
- Currently, live migration of fully virtualized guests is not supported on this architecture. In addition,
kexec
andkdump
are also not supported for virtualization on this architecture.