版 1
ftpd固定粗体
To see the contents of the filemy_next_bestselling_novelin your current working directory, enter thecat my_next_bestselling_novelcommand at the shell prompt and press Enter to execute the command.
Press Enter to execute the command.Press Ctrl+Alt+F1 to switch to the first virtual terminal. Press Ctrl+Alt+F7 to return to your X-Windows session.
Mono-spaced Bold. For example:
File-related classes includefilesystemfor file systems,filefor files, anddirfor directories. Each class has its own associated set of permissions.
Choose from the main menu bar to launch Mouse Preferences. In the Buttons tab, click the Left-handed mouse check box and click to switch the primary mouse button from the left to the right (making the mouse suitable for use in the left hand).To insert a special character into a gedit file, choose from the main menu bar. Next, choose from the Character Map menu bar, type the name of the character in the Search field and click . The character you sought will be highlighted in the Character Table. Double-click this highlighted character to place it in the Text to copy field and then click the button. Now switch back to your document and choose from the gedit menu bar.
Mono-spaced Bold Italic or Proportional Bold Italic
To connect to a remote machine using ssh, typesshat a shell prompt. If the remote machine isusername@domain.nameexample.comand your username on that machine is john, typessh john@example.com.Themount -o remountcommand remounts the named file system. For example, to remount thefile-system/homefile system, the command ismount -o remount /home.To see the version of a currently installed package, use therpm -qcommand. It will return a result as follows:package.package-version-release
When the Apache HTTP Server accepts requests, it dispatches child processes or threads to handle them. This group of child processes or threads is known as a server-pool. Under Apache HTTP Server 2.0, the responsibility for creating and maintaining these server-pools has been abstracted to a group of modules called Multi-Processing Modules (MPMs). Unlike other modules, only one module from the MPM group can be loaded by the Apache HTTP Server.
Mono-spaced Roman 并显示为:
books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs
Mono-spaced Roman,但以下面的形式出现和突出:
package org.jboss.book.jca.ex1;
import javax.naming.InitialContext;
public class ExClient
{
public static void main(String args[])
throws Exception
{
InitialContext iniCtx = new InitialContext();
Object ref = iniCtx.lookup("EchoBean");
EchoHome home = (EchoHome) ref;
Echo echo = home.create();
System.out.println("Created Echo");
System.out.println("Echo.echo('Hello') = " + echo.echo("Hello"));
}
}

virt-manager、libvirt 和 virt-viewer 进行安装。

定制软件包(如果需要)

%packages 部分附加以下软件包组:
%packages @kvm
yum 安装 KVM 管理程序kvm 软件包。kvm 软件包中含有 KVM 内核模块,它可在默认 Linux 内核中提供 KVM 管理程序。
kvm 软件包,请运行:
# yum install kvm
python-virtinstvirt-install 命令。
libvirtlibvirt 是一个可与管理程序互动的 API 程序库。libvirt 使用 xm 虚拟化构架以及 virsh 命令行工具管理和控制虚拟机。
libvirt-pythonlibvirt API 提供的界面。
virt-managervirt-manager,也称 Virtual Machine Manager,它可为管理虚拟机提供图形工具。它使用 libvirt 程序库作为管理 API。
# yum install virt-manager libvirt libvirt-python python-virtinst
virt-install 进行此操作。本章论述了这两种方法。
virt-install 命令从命令行创建虚拟客户端。virt-install 可以交互方式使用,也可以使用脚本从而自动生成虚拟机。将 Kickstart 文件与 virt-install 共同使用即可进行虚拟机的自动安装。
virt-install 工具提供很多选项,它们可提供该命令行。要查看选项完整列表请运行:
$ virt-install --help
virt-install man page 还记录了每个命令选项和重要变量。
qemu-img 是一个关联命令,可在 virt-install 前用来配置存储选项。
--vnc 是一个重要选项,它可为客户端安装打开图形窗口。
rhel3support 的红帽企业版 Linux 3 客户端。这个示例使用的是 KVM 管理程序。
# virt-install --accelerate --hvm --connect qemu:///system \
--network network:default \
--name rhel3support --ram=756\
--file=/var/lib/libvirt/images/rhel3support.img \
--file-size=6 --vnc --cdrom=/dev/sr0
# virt-install --name Fedora11 --ram 512 --file=/var/lib/libvirt/images/Fedora11.img \
--file-size=3 --vnc --cdrom=/var/lib/libvirt/images/Fedora11.iso
virt-manager 即虚拟机管理器,是创建和管理虚拟客户端的图形工具。
# virt-manager &
virt-manager 会打开图形用户界面窗口。没有根特权或者没有配置 sudo 的用户无法使用某些功能,其中包括 按钮,就是说您无法创建新的虚拟客户端。



kernel-xen 内核,则「半虚拟」选项就会是灰色的。

HTTP、FTP 或者 NFS。安装介质 URL 必须含有 Fedora 安装树。这个安装树是使用 NFS、FTP 或者 HTTP 托管。可使用主机中的网络服务或者另一个镜像托管网络服务和文件。
.iso 文件),挂载 CD-ROM 映像并使用以上协议之一托管挂载的文件。


/var/lib/xen/images/ 目录中。SELinux 禁止在其它任何位置保存基于文件的映像。如果您以 enforcing 模式运行 SELinux,则请在 第 7.1 节 “SELinux 和虚拟化” 参考安装客户端的详情。

/var/lib/xen/images/。如果您要使用不同的位置(比如在本示例中使用 /xen/images/),请确定将其添加到 SELinux 策略中并在您继续安装前对其进行重新标记(后面会介绍如何修改 SELinux 策略)。


virt-manager 创建客户端的一般过程。第 3 章 客户端操作系统安装过程 中有安装各种通用操作系统的分解说明。
创建新桥接
/etc/sysconfig/network-scripts 目录中创建新网络脚本。这个示例创建了名为 ifcfg-installation 的文件,它生成名为 installation 的桥接。
# cd /etc/sysconfig/network-scripts/ # vim ifcfg-installation DEVICE=installation TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes
TYPE=Bridge, is case-sensitive. It must have uppercase 'B' and lower case 'ridge'.
Start the new bridge. # ifup installation
brctl show 命令查看系统中网络桥接的详情。
# brctl show bridge name bridge id STP enabled interfaces installation 8000.000000000000 no virbr0 8000.000000000000 yes
virbr0 是 libvirt 在默认以太网设备中用于网络地址转换(NAT)的默认桥接。
在新桥接中添加接口
BRIDGE 参数,使用在前一步中创建的桥接名称。
# Intel Corporation Gigabit Network Connection DEVICE=eth1 BRIDGE=installation BOOTPROTO=dhcp HWADDR=00:13:20:F7:6E:8E ONBOOT=yes
# service network restart
brctl show 命令验证添加的接口:
# brctl show bridge name bridge id STP enabled interfaces installation 8000.001320f76e8e no eth1 virbr0 8000.000000000000 yes
安全性配置
iptables to allow all traffic to be forwarded across the bridge.
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT # service iptables save # service iptables restart
iptables rules. In /etc/sysctl.conf append the following lines:
net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
sysctl
# sysctl -p /etc/sysctl.conf
安装前重新启动 libvirt
libvirt daemon.
# service libvirtd reload
virt-install 安装,请附加 --network=bridge:installation 安装参数,其中 installation 是您桥接的名称。对于 PXE 安装请使用 --pxe 参数。
# virt-install --accelerate --hvm --connect qemu:///system \
--network=bridge:installation --pxe\
--name EL10 --ram=756 \
--vcpus=4
--os-type=linux --os-variant=rhel5
--file=/var/lib/libvirt/images/EL10.img \
选择 PXE

选择桥接

开始安装

kernel-xen 内核。
virt-manager 的步骤请参考 第 2.2 节 “使用 virt-manager 创建客户端”。
virt-install 工具的命令行创建半虚拟客户端。--vnc 选项显示图形安装。这个示例中的客户端名称为 rhel5PV,磁盘映像文件为 rhel5PV.dsk,红帽企业版 Linux 5 安装树的本地镜像为 ftp://10.1.1.1/trees/RHEL5-B2-Server-i386/。使用您系统和网络的准确值替换这些值。
# virt-install -nrhel5PV-r 500 \ -f /var/lib/libvirt/images/rhel5PV.dsk-s 3 --vnc -p \ -lftp://10.1.1.1/trees/CentOS5-B2-Server-i386/



DHCP(如下所示),也可以使用静态地址:







Installation Number 字段输入:

rhn_register 命令确认您的 fedora 网络帐户详情。rhn_register 命令需要根访问。
# rhn_register












virt-install 时会选择客户端名称。如果您使用默认示例,则该名称为 rhel5PV。
virsh reboot rhel5PV
virt-manager,选择您客户端的名称,点击 ,然后点击 。








kdump。











Open virt-manager
virt-manager. Launch the application from the menu and submenu. Alternatively, run the virt-manager command as root.
Select the hypervisor
qemu.
Start the new virtual machine wizard

Name the virtual machine

Choose a virtualization method

Select the installation method

Locate installation media

/var/lib/libvirt/images/ 目录。其它位置可能需要额外配置 SELinux,详情请参考 第 7.1 节 “SELinux 和虚拟化”。
Storage setup
/var/lib/libvirt/images/ 目录中。请为您的虚拟客户端分配足够的存储。为您的虚拟客户端及其所需应用程序分配足够的空间。

Network setup

Memory and CPU allocation

Verify and start guest installation

安装 Linux
Starting virt-manager
为您的虚拟系统命名

选择虚拟化方法

选择安装方法

/var/lib/libvirt/images/ 目录。其它任何位置可能需要对 SELinux 的额外配置,详情请参考 第 7.1 节 “SELinux 和虚拟化”。
/var/lib/xen/images/ 目录中。SELinux 禁止在其它任何位置保存基于文件的映像。如果您以 enforcing 模式运行 SELinux,则请在 第 7.1 节 “SELinux 和虚拟化” 参考安装客户端的详情。

/var/lib/libvirt/images/。如果您要使用不同的位置(比如在本示例中使用 /images/),请确定将其添加到 SELinux 策略中并在您继续安装前对其进行重新标记(后面会介绍如何修改 SELinux 策略)。
Network setup



HAL,当您在 Windows 安装中看到对话框时,请选择 '普通 i486 平台' 标签(您可以使用 Up 和 Down 箭头键在选项中进行滚动选择)。








# virsh start WindowsGuest
WindowsGuest 是您的虚拟机名称。

virsh reboot WindowsGuestName 重启该客户端。这样通常可使得安装继续进行。您重启虚拟机后会看到如下信息:Setup is being restarted。




virt-install 命令安装全虚拟 Windows 服务器 2003 客户端。可使用 virt-install 替换 virt-manager。这个过程与 第 3.3 节 “将 Windows XP 作为全虚拟客户端安装” 中所述 Windows XP 安装类似。
virt-install 安装 Windows 服务器 2003,将其作为 Windows 客户端控制台迅速打开 virt-viewer 窗口。使用 virt-install 安装 Windows 服务器 2003 客户端示例如下:
virt-install 命令启动安装。
# virt-install -hvm -s 5 -f /var/lib/libvirt/images/windows2003spi1.dsk \ -n windows2003sp1 -cdrom=/ISOs/WIN/en_windows_server_2003_sp1.iso \ -vnc -r 1024
Standard PC 作为 「计算机类型」。在 Windows 服务器 2003 虚拟客户端中需要更改 「计算机类型」。




Open virt-manager
virt-manager. Launch the application from the menu and submenu. Alternatively, run the virt-manager command as root.
Select the hypervisor
qemu.
Start the new virtual machine wizard

Name the virtual machine

Choose a virtualization method

Select the installation method

Locate installation media


/var/lib/libvirt/images/ 目录中。其它位置可能需要对 SELinux 进行额外配置,详情请参考 第 7.1 节 “SELinux 和虚拟化”。
Storage setup
/var/lib/libvirt/images/ 目录中。请为您的虚拟客户端及其所需程序分配足够空间。

Network setup

Memory and CPU allocation

Verify and start guest installation

安装 Windows

dd 命令创建软盘映像文件。使用正确的软盘设备名称及磁盘名称替换 /dev/fd0。
# dd if=/dev/fd0 of=~/legacydrivers.img
virt-manager 创建的客户端,该客户端使用位于 /var/lib/libvirt/images/rhel5FV.img 的映像运行全虚拟红帽企业版 Linux 安装。在这个示例中使用 Xen 管理程序。
virsh 命令为您的客户端映像生成 XML 配置文件。
# virsh dumpxml rhel5FV > rhel5FV.xml
# dd if=/dev/zero of=/var/lib/libvirt/images/rhel5FV-floppy.img bs=512 count=2880
<disk type='file' device='floppy'>
<source file='/var/lib/libvirt/images/rhel5FV-floppy.img'/>
<target dev='fda'/>
</disk>
# virsh stop rhel5FV
# virsh create rhel5FV.xml
dd 命令创建稀疏文件。因为有数据完整性和性能问题,所以不建议使用稀疏文件。创建稀疏文件的速度较快,并可用来进行测试,但不应在产品环境中使用。
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M seek=4096 count=0
# dd if=/dev/zero of=/var/lib/libvirt/images/FileName.img bs=1M count=4096
Guest1,该文件保存在用户主目录中。
# virsh dumpxmlGuest1> ~/Guest1.xml
Guest1.xml)。找到以 "disk=" 开始的条目。这个条目类似如下:
>disk type='file' device='disk'<
>driver name='tap' type='aio'/<
>source file='/var/lib/libvirt/images/Guest1.img'/<
>target dev='xvda'/<
>/disk<
disk= 最后的条目来添加附加存储。确定为虚拟块设备指定了设备名称,且该名称还未在配置文件中使用。以下是添加名为 FileName.img 的文件作为基于文件的存储容器的条目示例:
>disk type='file' device='disk'<
>driver name='tap' type='aio'/<
>source file='/var/lib/libvirt/images/Guest1.img'/<
>target dev='xvda'/<
>/disk<
>disk type='file' device='disk'<
>driver name='tap' type='aio'/<
>source file='/var/lib/libvirt/images/FileName.img'/<
>target dev='hda'/<
>/disk<
# virsh create Guest1.xml
FileName.img 作为设备 /dev/hdb。这个设备需要在该客户端中进行格式化。在该客户端中,将整个设备分为一个主分区,然后格式化该设备。
n 添加新分区。
# fdisk /dev/hdb Command (m for help):
p 添加主分区。
Command action e extended p primary partition (1-4)
1 选择第一个分区。
分区号(1-4):1
Enter 输入默认首柱面。
首柱面(1-400,默认为 1):
Enter 则分配整个磁盘。
尾柱面或者 +size、+sizeM、+sizeK(2-400,默认为 400):
t 选择分区类型。
命令(m 为帮助):t
1。
分区号(1-4):1
83 选择 Linux 分区。
Hex 代码(输入 L 列出代码):83
命令(m 为帮助):w命令(m 为帮助):q
ext3 文件系统格式化新分区。
# mke2fs -j /dev/hdb
# mount /dev/hdb1 /myfiles
multipath 配置该设备,如果需要则在该主机中永久保留。
virsh attach 命令。使用您的客户端名称替换 myguest,使用要添加的设备替换 /dev/hdb1,使用客户端中该设备的位置替换 hdc。hdc 必须是一个未使用的设备名称。在 Windows 客户端中也使用 hd* 标记,客户端可正确识别该设备。
--type hdd 参数。
--type floppy 参数。
# virsh attach-diskmyguest/dev/hdb1hdc--driver tap --mode readonly
/dev/hdb,在 Windows 中名为 D: drive。这个设备可能需要格式化。
/etc/scsi_id.config 文件。
options=-b 行。
# options=-b
options=-g
udev 配置为假设所有附加的 SCSI 都会返回 UUID。
scsi_id -g -s /block/sd*。例如:
# scsi_id -g -s /block/sd* 3600a0b800013275100000015427b625e
/dev/sdc 的 UUID。
scsi_id -g -s /block/sd* 命令输出的 UUID 与访问该设备的计算机中的一致。
/etc/udev/rules.d 目录中创建名为 20-names.rules 的文件。添加到同一文件中的所有规则都使用相同的格式。规则格式如下:
KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT=UUID, NAME=devicename
UUID 和 devicename。这是如上示例中的一个规则:
KERNEL="sd*", BUS="scsi", PROGRAM="/sbin/scsi_id -g -s", RESULT="3600a0b800013275100000015427b625e", NAME="rack4row16"
udev 守护进程现在为该规则中的 UUID 搜索所有名为 /dev/sd* 的设备。当将匹配的设备连接到系统后,会根据该规则为这个设备分配一个名称。UUID 为 3600a0b800013275100000015427b625e 的设备会以 /dev/rack4row16 的形式出现。
/etc/rc.local 中附加这一行:
/sbin/start_udev
/etc/scsi_id.config、/etc/udev/rules.d/20-names.rules 和 /etc/rc.local 文件中的更改复制到所有相关主机中。
/sbin/start_udev
multipath 软件包用于在计算机和存储设备间有超过一个物理路径的系统。multipath 为附加到 Linux 系统的网络存储设备提供容错、故障切换以及改进的性能。
multipath 环境中部署 LUN 持久性,需要为您的多路径设备定义别名。每个存储设备都有一个 UUID,它是作为别名的密钥使用。请使用 scsi_id 命令识别设备的 UUID。
# scsi_id -g -s /block/sdc
/dev/mpath 目录中生成。在下面的示例中 /etc/multipath.conf 文件定义了 4 个设备:
multipaths {
multipath {
wwid 3600805f30015987000000000768a0019
alias oramp1
}
multipath {
wwid 3600805f30015987000000000d643001a
alias oramp2
}
mulitpath {
wwid 3600805f3001598700000000086fc001b
alias oramp3
}
mulitpath {
wwid 3600805f300159870000000000984001c
alias oramp4
}
}
/dev/mpath/oramp1、/dev/mpath/oramp2、/dev/mpath/oramp3 和 /dev/mpath/oramp4。输入后,设备的 WWID 将与其新名称匹配,并在重启后保留。
attach-disk 参数的 virsh 命令。
# virsh attach-disk [domain-id] [source] [target] --driver file --type cdrom --mode readonly
source 和 target 参数分别是主机和客户端中文件和设备的路径。source 参数可以是到 ISO 文件的路径或者到 /dev 目录中设备的路径。
# setenforce 1
AutoFS、NFS、FTP、HTTP、NIS、telnetd、sendmail 等等。
/var/lib/libvirt/images/ 目录中。如果您要为您的虚拟机使用不同的目录,请确定将该目录添加到您的 SELinux 策略中并在开始安装前对其进行重新标记。
vsftpd 服务器。
/var/lib/libvirt/images 目录中。
NewVolumeName,位置在名为 volumegroup 的卷组中。
# lvcreate -nNewVolumeName-L5Gvolumegroup
NewVolumeName 逻辑卷,比如 ext3。
# mke2fs -j /dev/volumegroup/NewVolumeName
/etc、/var、/sys)或者主目录中(/home 或者 /root)。这个示例使用名为 /virtstorage 的目录。
# mkdir /virtstorage
# mount/dev/volumegroup/NewVolumeName/virtstorage
semanage fcontext -a -t xen_image_t "/virtualization(/.*)?"
semanage fcontext -a -t virt_image_t "/virtualization(/.*)?"
/etc/selinux/targeted/contexts/files/file_contexts.local 文件中添加一行,以便使更改持久。添加的行可能类似如下:
/virtstorage(/.*)? system_u:object_r:xen_image_t:s0
/virtstorage)以及其中的所有文件改为 xen_image_t(restorecon 和 setfiles 读取 /etc/selinux/targeted/contexts/files/ 中的文件)。
# restorecon -R -v /virtualization
# semanage fcontext -a -t xen_image _t -f -b /dev/sda2 # restorecon /dev/sda2
xend_disable_t 在未修改的模式中设置 xend。最好是为单一守护进程而不是整个系统禁用此保护。建议您不要将广泛使用的目录重新标记为 xen_image_t。
libvirt 安装都提供即时到虚拟机的基于 NAT 的连接性,这也被称为“默认虚拟网络”。使用 virsh net-list --all 命令验证其可用性。
# virsh net-list --all Name State Autostart ----------------------------------------- default active yes
# virsh net-define /usr/share/libvirt/networks/default.xml
/usr/share/libvirt/networks/default.xml 中定义的
# virsh net-autostart default Network default marked as autostarted
# virsh net-start default Network default started
libvirt 默认网络运行后,您将会看到独立的桥接设备。这个设备没有添加任何物理接口,因为它使用 NAT 和 IP 转发与外界连接,因此不要添加新接口。
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes
libvirt 可添加 iptables 规则,该规则允许所有进入和来自附加到 virbr0 设备的客户端流量,该设备可处于 INPUT、FORWARD、OUTPUT 和 POSTROUTING 链中。libvirt 随后试图启用 ip_forward 参数。其它一些程序可能会禁用 ip_forward,因此最佳选择是在 /etc/sysctl.conf 中添加以下内容。
net.ipv4.ip_forward = 1
<interface type='network'> <source network='default'/> </interface>
<interface type='network'> <source network='default'/> <mac address='00:16:3e:1a:b3:4a'/> </interface>
/etc/xen/xend-config.sxp 文件并更改以下行禁用默认 Xen 网络桥接:
(network-script network-bridge)
(network-script /bin/true)
# chkconfig NetworkManager off # chkconfig network on # service NetworkManager stop # service network start
ifcfg-* 脚本中添加 "NM_CONTROLLED=no"。
/etc/sysconfig/network-scripts 目录:
# cd /etc/sysconfig/network-scripts
ifcfg-eth0 定义已被设定为桥接一部分的物理网络接口:
DEVICE=eth0 # change the hardware address to match the hardware address your NIC uses HWADDR=00:16:76:D6:C9:45 ONBOOT=yes BRIDGE=br0
MTU 变量配置设备的最大传输单位(MTU)。
MTU=9000
/etc/sysconfig/network-scripts 目录中创建名为 ifcfg-br0 和类似的新网络脚本。br0 是桥接名称,它可以是任何名称,只要该文件名称与 DEVICE 参数一致即可。
DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0
TYPE=Bridge, is case-sensitive. It must have uppercase 'B' and lower case 'ridge'.
# service network restart
iptables to allow all traffic to be forwarded across the bridge.
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT # service iptables save # service iptables restart
iptables rules. In /etc/sysctl.conf append the following lines:
net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
sysctl
# sysctl -p /etc/sysctl.conf
libvirt daemon.
# service libvirtd reload
# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes br0 8000.000e0cb30550 no eth0
virbr0 桥接。不要试图将物理设备附加到 virbr0。virbr0 桥接只用于网络地址转换(NAT)连接性。
下载驱动程序
/usr/share/virtio-win/ 目录中安装安装光驱映像 virtio-win.iso。
安装半虚拟驱动程序
virt-manager 添加光驱映像请参考 过程 9.1, “使用 virt-manager 在 Windows 客户端中挂载光驱映像”。
virt-manager 在 Windows 客户端中挂载光驱映像
yum 安装半虚拟驱动程序软件包,那么这个 .iso 文件的位置就是 /usr/share/xenpv-win。


viostor.vfd 附加为一个软盘
Windows Server 2003
Windows Server 2008
virtio 驱动程序而不是虚拟 IDE 驱动程序。这个示例编辑了 libvirt 配置文件。另外使用 virt-manager 、virsh attach-disk 或者 virsh attach-interface 可添加使用半虚拟驱动程序的新设备 在新设备中使用 KVM 半虚拟驱动程序。
<disk type='file' device='disk'> <source file='/var/lib/libvirt/images/disk1.img'/> <target dev='hda' bus='ide'/> </disk>
virtio 可让该条目使用半虚拟设备。
<disk type='file' device='disk'>
<source file='/var/lib/libvirt/images/disk1.img'/>
<target dev='hda' bus='virtio'/>
</disk>
virt-manager 创建使用 KVM 半虚拟驱动程序的新设备。
virsh attach-disk 或者 virsh attach-interface 命令可附加使用半虚拟驱动程序的设备。
virt-manager 中双击客户端名称打开虚拟客户端。



xend 管理客户端xend-config.sxp 来指定操作参数。下面是您可以在 xend-config.sxp 配置文件里启用或禁用的参数:
| 项目 | Description |
|---|---|
|
(console-limit)
|
决定控制台服务器的内存缓冲限制 xend_unix_server,并根据域分配数值。
|
|
(min-mem)
|
决定为 domain0 保留的最小内存数量(以 MB 为单位),如果为 0,则值不变化。
|
|
(dom0-cpus)
|
决定 domain0 使用的 CPU 数量(默认情况下至少分配一个 CPU)。
|
|
(enable-dump)
|
决定当发生崩溃时启用转储(默认为 0)。
|
|
(external-migration-tool)
|
决定用来处理外部设备迁移的脚本或应用程序。脚本必须位于
etc/xen/scripts/external-device-migrate。
|
|
(logfile)
|
决定日志文件的位置(默认为
/var/log/xend.log)。
|
|
(loglevel)
|
过滤日志模式值:DEBUG、INFO、WARNING、ERROR 或 CRITICAL(默认为 DEBUG)。
|
|
(network-script)
|
决定启用联网环境的脚本(脚本必须位于
etc/xen/scripts 目录)。
|
|
(xend-http-server)
|
启用 http stream 数据包管理服务器(默认为 no)。
|
|
(xend-unix-server)
|
启用 unix 域套接字服务器(套接字服务器是一个通信终点,它处理底层的网络连接以及接受或拒绝转入的连接)。默认值为 yes。
|
|
(xend-relocation-server)
|
启用用于跨机器迁移的重定向服务器(默认为 no)。
|
|
(xend-unix-path)
|
指定
xend-unix-server 命令输出数据的位置(缺省是 var/lib/xend/xend-socket)
|
|
(xend-port)
|
决定 http 管理服务器使用的端口(默认为 8000)。
|
|
(xend-relocation-port)
|
决定重定向服务器所使用的端口(默认为 8002)。
|
|
(xend-relocation-address)
|
决定允许迁移的主机地址。默认值为
xend-address。
|
|
(xend-address)
|
决定域套接字服务器绑定的地址。默认为允许所有连接。
|
service xend start
service xend stop
service xend restart
service xend status
xendchkconfig 命令在 initscript 中添加 xend。
chkconfig --level 345 xend
xend 。
ntpd 服务:
# service ntpd start
# chkconfig ntpd on
ntpd 服务应该可以在各种情况下最小化时钟偏移造成的影响。
constant_tsc 标签,那么您的 CPU 就有恒定时间戳计数器。要确定您的 CPU 是否有 constant_tsc 标签,请运行以下命令:
$ cat /proc/cpuinfo | grep constant_tsc
constant_tsc 字节。如果没有输出结果,请按以下步骤执行。
constant_tsc 字节,则请禁用所有电源管理特性(BZ#513138)。每个系统都有多个用来计时的计时器。TSC 在主机中不稳定,有时是由于更改 cpufreq、deep C state 或者迁移到拥有更迅速 TSC 的主机所致。要停止 deep C state,即停止 TSC,请在主机 grub 的内核引导选项中添加 "processor.max_cstate=1":
term Fedora (vmlinuz-2.6.29.6-217.2.3.fc11)
root (hd0,0)
kernel /vmlinuz-vmlinuz-2.6.29.6-217.2.3.fc11 ro root=/dev/VolGroup00/LogVol00 rhgb quiet processor.max_cstate=1
cpufreq(只在没有 cpufreq 的主机中需要),请编辑 /etc/sysconfig/cpuspeed 配置文件并将 MIN_SPEED 和 MAX_SPEED 变量改为可用的最高频率。有效上限请查看 /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies 文件。
| 红帽企业版 Linux | 附加客户端内核参数 |
|---|---|
| 使用半虚拟时钟的 5.4 AMD64/Intel 64 | 不需要附加参数 |
| 没有半虚拟时钟的 5.4 AMD64/Intel 64 | divider=10 notsc lpj=n |
| 使用半虚拟时钟的 5.4 x86 | 不需要附加参数 |
| 没有半虚拟时钟的 5.4 x86 | divider=10 clocksource=acpi_pm lpj=n |
| 5.3 AMD64/Intel 64 | divider=10 notsc |
| 5.3 x86 | divider=10 clocksource=acpi_pm |
| 4.8 AMD64/Intel 64 | notsc divider=10 |
| 4.8 x86 | clock=pmtmr divider=10 |
| 3.9 AMD64/Intel 64 | 不需要附加参数 |
| 3.9 x86 | 不需要附加参数 |
/use pmtimer
virsh 命令可将客户端迁移到另一台主机中。migrate 命令接受以下格式的参数:
# virsh migrate --live GuestName DestinationURL
GuestName parameter represents the name of the guest which you want to migrate.
DestinationURL parameter is the URL or hostname of the destination system. The destination system must run the same version of Fedora, be using the same hypervisor and have libvirt running.
test1.bne.redhat.com 迁移至 test2.bne.redhat.com。请为您的环境更改主机名。这个示例迁移了名为 CentOS4test 的虚拟机。
确定客户端正在运行
test1.bne.redhat.com 中确定 CentOS4test 正在运行:
[root@test1 ~]# virsh list Id Name State ---------------------------------- 10 CentOS4 running
迁移客户端
test2.bne.redhat.com。在目的地 URL 结尾添加 /system 告知 libvirt 您需要完全访问权限。
# virsh migrate --live CentOS4test qemu+ssh://test2.bne.redhat.com/system
等待
virsh 只报告出错信息。客户端仍将在源主机中继续运行直至全部迁移完成。
确定客户端已到达目的主机
test2.bne.redhat.com 中确认 CentOS4test 正在运行:
[root@test2 ~]# virsh list Id Name State ---------------------------------- 10 CentOS4 running
virt-manager 迁移使用 KVM 的客户端。













ssh、TLS 和 SSL 远程管理您的虚拟化客户端。
ssh 软件包提供加密网络协议,可向远程虚拟化服务器安全发送管理功能。本方法使用 libvirt 通过 SSH 连接安全管理远程机器。所有验证都通过 SSH 公钥加密法和密码或者由您的本地 SSH 代理获得的密码短语进行。另外,每个客户端虚拟机的 VNC 控制台都将通过 SSH 连接。
virt-manager 配置 SSH 访问。virt-manager 的机器中有一个公钥对。如果您已经配置了 ssh,请跳过这个命令。
$ ssh-keygen -t rsa
virt-manager 需要在每个运行 libvirt 的远程机器中有一个公钥副本。请使用 scp 命令从您要用来进行远程管理的机器中复制文件 $HOME/.ssh/id_rsa.pub:
$ scp $HOME/.ssh/id_rsa.pub root@somehost:/root/key-dan.pub
ssh 命令连接到远程机器并将您复制的文件添加到认证的密钥列表中。如果远程主机中的根用户还没有认证的密钥列表,请确定正确设定了该文件的权限。
$ ssh root@somehost
# mkdir /root/.ssh
# chmod go-rwx /root/.ssh
# cat /root/key-dan.pub >> /root/.ssh/authorized_keys
# chmod go-rw /root/.ssh/authorized_keys
libvirt 守护进程(libvirtd)libvirt 守护进程提供管理虚拟机的界面。您应该使用安装的 libvirtd 守护进程并在每个需要您管理的远程主机中运行该进程。使用 Fedora kernel-xen 软件包需要 speci TODO。
$ ssh root@somehost
# chkconfig libvirtd on
# service libvirtd start
libvirt 和 SSH 后,您应该可以远程访问并管理您的虚拟机。此时您还应该可以使用 VNC 访问您的客户端。
libvirt 管理连接将为进入的连接打开一个 TCP 端口,这些连接是安全加密的,且根据 x509 证书进行验证。除 VNC 控制台外,还会将每个客户端虚拟机设定为使用带 x509 证书验证的 TLS。
libvirt 服务器设定/etc/xen/xend-config.sxp 启用 TLS。删除配置文件 (vnc-tls 1) 配置参数前的注释标记。
/etc/xen/vnc 目录需要以下三个文件:
ca-cert.pem - CA 证书
server-cert.pem - CA 签注的服务器证书
server-key.pem - 服务器私钥
(vnc-x509-verify 1) 参数的注释符号。
virt-manager 和 virsh 客户端设定libvirt 管理 API,就必须将 CA 以及客户端证书放在 /etc/pki。有关详情请参考 http://libvirt.org/remote.html。
virt-manager 用户界面,连接到主机时请使用 '' 传送机制。
virsh 中 URL 有以下格式:
qemu://hostname.guestname/system。
xen://hostname.guestname/。
$HOME/.pki 中,即以下三个文件:
ca-cert.pem - CA 证书。
libvirt-vnc 或者 clientcert.pem - CA 签注的客户端证书。
libvirt-vnc 或者 clientkey.pem - 客户端私钥。
libvirt 支持以下传输模式:
/var/run/libvirt/libvirt-sock 和 /var/run/libvirt/libvirt-sock-ro(用于只读连接)。
libvirtd)。必须为 SSH 访问打开端口 22。您应该使用某些 ssh 密钥管理(例如:ssh-agent 程序)或者提示您输入密码。
统一资源标识符(URI)是 virsh 和 libvirt 用来连接到远程主机的工具。URI 还可与带 --connect 参数的 virsh 命令一同使用执行单一命令或者在远程主机中迁移。
driver[+transport]://[username@][hostname][:port]/[path][?extraparameters]
towada 的主机中使用 SSH 传输和 SSH 用户名 ccurran 连接到远程 Xen 管理程序。
xen+ssh://ccurran@towada/
towada 的主机中连接到远程 Xen 监控程序。
xen://towada/
towada 的主机中连接到远程 Xen 监控程序。no_verify=1 告诉 libvirt 不要验证服务器证书。
xen://towada/?no_verify=1
towada 中连接到远程 KVM 管理程序。
qemu+ssh://towada/system
qemu+unix:///system?socket=/opt/libvirt/run/libvirt/libvirt-sock
test+tcp://10.1.1.10:5000/default
| 名称 | 传输模式 | Description | 示例用法 |
|---|---|---|---|
| name | 所有模式 | 为 virConnectOpen 功能提供的名称。该名称通常由删除的传输、主机名、端口号、用户名以及远程 URI 中的附加参数组成,但在这个非常复杂的例子中,最好提供单独的名称。 | name=qemu:///system |
| 命令 | ssh 和 ext | 外部命令。ext 传输需要外部命令。ssh 默认为 ssh。PATH 是为该命令进行搜索。 | command=/opt/openssh/bin/ssh |
| 插槽 | unix 和 ssh | 到 UNIX 域套接字的路径将覆盖默认路径。在 ssh 传输中会将其传递给远程 netcat 命令(参见 netcat)。 | socket=/opt/libvirt/run/libvirt/libvirt-sock |
| netcat | ssh | 远程机器中 netcat 命令的名称。默认为 nc。在 ssh 传输中,libvirt 组成的 ssh 命令类似:command -p port [-l username] hostname netcat -U socket,其中 port、username、hostname 可作为远程 URI 的一部分指定,command、netcat 和 socket 来自外部参数(或者合理的默认设置)。 | netcat=/opt/netcat/bin/nc |
| no_verify | tls | 如果设定一个非零值,则会禁止客户端坚持服务器证书。注意:要禁用服务器检查客户端证书或者 IP 地址,您必须更改 libvirtd 配置。 | no_verify=1 |
| no_tty | ssh | 如果设定一个非零值,则会在无法自动登录到远程机器时禁止 ssh 询问密码(在使用 ssh-agent 或者类似程序的情况下)。在您无法访问终端时使用这个值 -- 例如在使用 libvirt 的图形程序中。 | no_tty=1 |
目录
vmstat
iostat
lsof
# lsof -i :5900 xen-vncfb 10635 root 5u IPv4 218738 TCP grumble.boston.redhat.com:5900 (LISTEN)
qemu-img
systemTap
crash
xen-gdbserver
sysrq
sysrq t
sysrq w
sysrq c
brtcl
# brctl show
bridge name bridge id STP enabled interfaces
xenbr0 8000.feffffffffff no vif13.0
pdummy0
vif0.0
# brctl showmacs xenbr0 port no mac addr is local? aging timer 1 fe:ff:ff:ff:ff:ff yes 0.00
# brctl showstp xenbr0 xenbr0 bridge id 8000.feffffffffff designated root 8000.feffffffffff root port 0 path cost 0 max age 20.00 bridge max age 20.00 hello time 2.00 bridge hello time 2.00 forward delay 0.00 bridge forward delay 0.00 aging time 300.01 hello timer 1.43 tcn timer 0.00 topology change timer 0.00 gc timer 0.02 flags vif13.0 (3) port id 8003 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8003 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags pdummy0 (2) port id 8002 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8002 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags vif0.0 (1) port id 8001 state forwarding designated root 8000.feffffffffff path cost 100 designated bridge 8000.feffffffffff message age timer 0.00 designated port 8001 forward delay timer 0.00 designated cost 0 hold timer 0.43 flags
ifconfig
tcpdump
ps
pstree
top
kvmtrace
kvm_stat
xentop
xm dmesg
xm log
virsh 是用来管理客户端及其管理程序的命令行界面工具。
virsh 工具是构建在 libvirt 管理 API 上,可作为 xm 命令和图形客户端管理程序(virt-manager)的替代工具使用。非特权用户只能以只读模式使用 virsh。您可使用 virsh 为客户端机器执行脚本。
| 命令 | Description |
|---|---|
help
| 打印基本帮助信息。 |
list
| 列出所有客户端。 |
dumpxml
| 输出客户端 XML 配置文件。 |
create
| 从 XML 配置文件生成客户端并启动新客户端。 |
start
| 启动未激活的客户端。 |
destroy
| 强制客户端停止。 |
define
| 为客户端输出 XML 配置文件。 |
domid
| 显示客户端 ID。 |
domuuid
| 显示客户端 UUID。 |
dominfo
| 显示客户端信息。 |
domname
| 显示客户端名称。 |
domstate
| 显示客户端状态。 |
quit
| 退出这个互动终端。 |
reboot
| 重新启动客户端。 |
restore
| 恢复以前保存在文件中的客户端。 |
resume
| 恢复暂停的客户端。 |
save
| 将客户端当前状态保存到某个文件中。 |
shutdown
| 关闭某个域。 |
suspend
| 暂停客户端。 |
undefine
| 删除与客户端关联的所有文件。 |
migrate
| 将客户端迁移到另一台主机中。 |
virsh 命令管理客户端及管理程序资源:
| 命令 | Description |
|---|---|
setmem
| 为客户端设定分配的内存。 |
setmaxmem
| 为管理程序设定内存上限。 |
setvcpus
| 修改为客户端分配的虚拟 CPU 数目。 |
vcpuinfo
| 显示客户端的虚拟 CPU 信息。 |
vcpupin
| 控制客户端的虚拟 CPU 亲和性。 |
domblkstat
| 显示正在运行的客户端的块设备统计。 |
domifstat
| 显示正在运行的客户端的网络接口统计。 |
attach-device
| 使用 XML 文件中的设备定义在客户端中添加设备。 |
attach-disk
| 在客户端中附加新磁盘设备。 |
attach-interface
| 在客户端中附加新网络接口。 |
detach-device
|
从客户端中分离设备,使用同样的 XML 描述作为命令 attach-device。
|
detach-disk
| 从客户端中分离磁盘设备。 |
detach-interface
| 从客户端中分离网络接口。 |
virsh 选项:
| 命令 | Description |
|---|---|
version
|
显示 virsh 版本
|
nodeinfo
| 有关管理程序的输出信息 |
virsh 连接到管理程序会话:
# virsh connect {hostname OR URL}
<name> 是管理程序所在的机器名。要初始化只读连接,请在上面的命令中附加 readonly。
virsh 输出客户端 XML 配置文件:
# virsh dumpxml {domain-id, domain-name or domain-uuid}
stdout)。您可通过将输出导入文件来保存数据。以下为将输出导入名为 guest.xml 的文件示例:
# virsh dumpxml这个文件GuestID>guest.xml
guest.xml 可重新生成客户端(请参考 编辑客户端配置文件)。您可以编辑这个 XML 配置文件来配置额外的设备或者部署额外的客户端。有关修改 virsh dumpxml 所生成文件的详情请参考 第 18.1 节 “使用带 virsh 的 XML 配置文件”。
virsh dumpxml 输出示例:
# virsh dumpxml r5b2-mySQL01
<domain type='xen' id='13'>
<name>r5b2-mySQL01</name>
<uuid>4a4c59a7ee3fc78196e4288f2862f011</uuid>
<bootloader>/usr/bin/pygrub</bootloader>
<os>
<type>linux</type>
<kernel>/var/lib/libvirt/vmlinuz.2dgnU_</kernel>
<initrd>/var/lib/libvirt/initrd.UQafMw</initrd>
<cmdline>ro root=/dev/VolGroup00/LogVol00 rhgb quiet</cmdline>
</os>
<memory>512000</memory>
<vcpu>1</vcpu>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<interface type='bridge'>
<source bridge='xenbr0'/>
<mac address='00:16:3e:49:1d:11'/>
<script path='vif-bridge'/>
</interface>
<graphics type='vnc' port='5900'/>
<console tty='/dev/pts/4'/>
</devices>
</domain>
dumpxml 选项(请参考 创建虚拟机 XML 转储(配置文件))。使用 virsh 创建客户端:
# virsh create configuration_file.xml
dumpxml 选项(请参考 创建虚拟机 XML 转储(配置文件)),还可在其运行时或者离线时编辑客户端。virsh edit 命令有这个功能。例如:编辑名为 softwaretesting 的客户端:
# virsh edit softwaretesting
$EDITOR shell 参数(默认将其设定为 vi)。
virsh 挂起客户端:
# virsh suspend {domain-id, domain-name or domain-uuid}
resume 选项(恢复客户端)才能重新启动客户端。
virsh 的 resume 选项恢复客户端:
# virsh resume {domain-id, domain-name or domain-uuid}
suspend 和 resume 的循环中。
virsh 命令将客户端的当前状态保存到文件中:
# virsh save {domain-name, domain-id or domain-uuid} filename
restore 选项(恢复客户端)来恢复客户端状态。保存与暂停类似,它除了暂停客户端外还保存了客户端的当前状态。
# virsh restore filename
virsh 命令关闭客户端:
# virsh shutdown {domain-id, domain-name or domain-uuid}
on_shutdown 参数可控制重启客户端的行为。
virsh 重启客户端:
#virsh reboot {domain-id, domain-name or domain-uuid}
on_reboot 参数控制重启客户端的行为。
virsh 强制客户端停止:
# virsh destroy {domain-id, domain-name or domain-uuid}
virsh destroy 命令可破坏客户端文件系统。客户端无法响应时请只使用 destroy 选项。对于半虚拟客户端,请使用 shutdown 选项(关闭客户端)。
# virsh domid {domain-name or domain-uuid}
# virsh domname {domain-id or domain-uuid}
# virsh domuuid {domain-id or domain-name}
virsh domuuid 命令输出示例:
# virsh domuuid r5b2-mySQL01 4a4c59a7-ee3f-c781-96e4-288f2862f011
virsh 命令可显示指定客户端的信息:
# virsh dominfo {domain-id, domain-name or domain-uuid}
virsh dominfo 命令的输出示例:
# virsh dominfo r5b2-mySQL01 id: 13 name: r5b2-mysql01 uuid: 4a4c59a7-ee3f-c781-96e4-288f2862f011 os type: linux state: blocked cpu(s): 1 cpu time: 11.0s max memory: 512000 kb used memory: 512000 kb
# virsh nodeinfo
virsh nodeinfo 命令输出示例:
# virsh nodeinfo CPU model x86_64 CPU (s) 8 CPU frequency 2895 Mhz CPU socket(s) 2 Core(s) per socket 2 Threads per core: 2 Numa cell(s) 1 Memory size: 1046528 kb
virsh 显示客户端列表以及当前状态:
# virsh list
--inactive 选项列出不活动的域(已经被定义但目前不活动的域),以及
--all 选项列出所有客户端。例如:
# virsh list --all Id Name State ---------------------------------- 0 Domain-0 running 1 Domain202 paused 2 Domain010 inactive 3 Domain9600 crashed
virsh list 输出结果分类成以下 6 个状态之一(如下)。
running 状态是指目前在 CPU 中活跃的客户端。
blocked 的客户端是被阻断的,且目前没有运行或者无法运行。这是由于客户端正在等待 I/O(传统的等待状态)或者客户端处于睡眠模式。
paused 状态列出暂停的域。如果管理员在 virt-manager、xm pause 或者 virsh suspend 中使用 pause 标记就会出现这种状态。当客户端处于暂停状态时,它仍会消耗内存和其它资源,但无法从管理程序中调度 CPU 资源。
shutdown 状态是用于处于关闭过程中的客户端。向该客户端发送关闭信号并使其温和地停止操作。这可能不适用于所有客户端操作系统,有些操作系统对这些信号没有响应。
dying 状态的域是处于濒死状态,即该域还没有完全关闭或者崩溃。
crashed 状态的客户端是在运行时失败且无法再运行。这个状态只在将客户端配置为崩溃时不重启时出现。
virsh 显示客户端中虚拟 CPU 的信息:
# virsh vcpuinfo {domain-id, domain-name or domain-uuid}
virsh vcpuinfo 命令输出示例:
# virsh vcpuinfo r5b2-mySQL01 VCPU: 0 CPU: 0 State: blocked CPU time: 0.0s CPU Affinity: yy
# virsh vcpupin {domain-id, domain-name or domain-uuid} vcpu, cpulist
vcpu 是虚拟 VCPU 号而 cpulist 列出了 CPU 的物理序号。
virsh 修改分配给客户端的 CPU 数:
# virsh setvcpus {domain-name, domain-id or domain-uuid} count
count 值不能超过创建客户端时指定的数目。
virsh 修改客户端内存分配:
# virsh setmem {domain-id or domain-name} count
virsh domblkstat 显示运行的客户端的块设备统计。
# virsh domblkstat GuestName block-device
virsh domifstat 为运行的客户端显示网络接口统计。
# virsh domifstat GuestName interface-device
virsh 将某个客户端迁移到另一台主机中。将域迁移到另一台主机中。添加 --live 进行实时迁移。migrate 命令接受以下格式的参数:
# virsh migrate --live GuestName DestinationURL
--live 参数是可选的。实时迁移需要添加 --live 参数。
GuestName parameter represents the name of the guest which you want to migrate.
DestinationURL parameter is the URL or hostname of the destination system. The destination system must run the same version of Fedora, be using the same hypervisor and have libvirt running.
virsh 管理虚拟网络。要列出虚拟网络:
# virsh net-list
# virsh net-list Name State Autostart ----------------------------------------- default active yes vnet1 active yes vnet2 active yes
# virsh net-dumpxml NetworkName
# virsh net-dumpxml vnet1
<network>
<name>vnet1</name>
<uuid>98361b46-1581-acb7-1643-85a412626e70</uuid>
<forward dev='eth0'/>
<bridge name='vnet0' stp='on' forwardDelay='0' />
<ip address='192.168.100.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.100.128' end='192.168.100.254' />
</dhcp>
</ip>
</network>
virsh 命令:
virsh net-autostart network-name — 自动启动指定为 network-name 的网络。
virsh net-create XMLfile — 使用现有 XML 文件创建并启动新网络。
virsh net-define XMLfile — 使用现有 XML 文件创建新网络设备但不启动。
virsh net-destroy network-name — 销毁指定为 network-name 的网络。
virsh net-name networkUUID — 将指定的 networkUUID 转换为网络名称。
virsh net-uuid network-name — 将指定的 network-name 转换为网络 UUID。
virsh net-start nameOfInactiveNetwork — 启动不活跃的网络。
virsh net-undefine nameOfInactiveNetwork — 删除不活跃网络的定义。
virt-manager)窗口、对话框及各种的 GUI 控制。
virt-manager 提供管理程序以及您系统和远程机器中客户端的图形视图。您可使用 virt-manager 定义半虚拟和全虚拟客户端。virt-manager 可执行虚拟化管理任务,其中包括:


virt-manager 提供的客户端实时资源使用的图形和统计数据。UUID 字段显示了虚拟机的全局唯一标识符。

virt-manager 详情窗口
dom0)的回送地址(127.0.0.1)。这样就保证了只有主机中那些有 shell 特权的程序可以通过 VNC 访问 virt-manager 和虚拟机。
virt-manager 的 '粘滞键' 功能来发送这些键序列。您必须按任何修改键(如 Ctrl 或 Alt)三次,这个键才会被激活,直到按了下一个非修饰符键。您可以通过顺序按下 'Ctrl Ctrl Ctrl Alt+F11' 将 Ctrl-Alt-F11 发送给客户端。
virt-manager 会话,请打开菜单,然后点击,并选择(virt-manager)。
virt-manager 主窗口。

virt-managervirt-manager:
ssh -X host's address[remotehost]# virt-manager
使用 ssh 管理虚拟机和主机在 第 13.1 节 “使用 SSL 进行远程管理” 中有进一步的论述。




























DHCP 范围


目录
ftpdftpdvirsh 设置客户端,使用 TestServer 在主机引导时自动启动。
# virsh autostart TestServer
Domain TestServer marked as autostarted
--disable 停止客户端自动引导
# virsh autostart --disable TestServer
Domain TestServer unmarked as autostarted
安装 KVM 软件包
# yum install kvm
确定所用内核
uname 命令确定正在运行的内核:
$ uname -r 2.6.23.14-107.fc8xen
2.6.23.14-107.fc8xen" 内核。如果运行的是默认 "2.6.23.14-107.fc8xen",请跳过该分步。
将 Xen 内核改为默认内核
grub.conf 文件确定引导的是哪个内核。要更改默认内核请编辑如下所示的 /boot/grub/grub.conf 文件。
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.14-107.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.14-107.fc8 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.23.14-107.fc8.img
title Fedora (2.6.23.14-107.fc8xen)
root (hd0,0)
kernel /xen.gz-2.6.23.14-107.fc8
module /vmlinuz-2.6.23.14-107.fc8xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.23.14-107.fc8xen.img
0(或者代表默认内核的数字):
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.14-107.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.14-107.fc8 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.23.14-107.fc8.img
title Fedora (2.6.23.14-107.fc8xen)
root (hd0,0)
kernel /xen.gz-2.6.23.14-107.fc8
module /vmlinuz-2.6.23.14-107.fc8xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.23.14-107.fc8xen.img
重启载入新内核
$ lsmod | grep kvm kvm_intel 85992 1 kvm 222368 2 ksm,kvm_intel
kvm 模块和 kvm_intel 模块或者 kvm_amd 模块之一。
安装 Xen 软件包
# yum install kernel-xen xen
确定所用内核
uname 命令确定正在运行的内核。
$ uname -r 2.6.23.14-107.fc8
2.6.23.14-107.fc8xen" 就是正在系统中运行的内核。这是默认内核。如果内核在结尾处有 xen(例如 2.6.23.14-107.fc8xen),那么是 Xen 内核正在运行,这样您就可以跳过下面的子步骤。
将默认内核改为 Xen 内核
grub.conf 文件确定引导的是哪个内核。要更改默认内核请编辑如下所示的 /boot/grub/grub.conf 文件。
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.14-107.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.14-107.fc8 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.23.14-107.fc8.img
title Fedora (2.6.23.14-107.fc8xen)
root (hd0,0)
kernel /xen.gz-2.6.23.14-107.fc8
module /vmlinuz-2.6.23.14-107.fc8xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.23.14-107.fc8xen.img
1(或者其它代表 Xen 内核的数字):
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.23.14-107.fc8)
root (hd0,0)
kernel /vmlinuz-2.6.23.14-107.fc8 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.23.14-107.fc82.6.23.14-107.fc8.img
title Fedora (2.6.23.14-107.fc8xen)
root (hd0,0)
kernel /xen.gz-2.6.23.14-107.fc8
module /vmlinuz-2.6.23.14-107.fc8xen ro root=/dev/VolGroup00/LogVol00 rhgb quiet
module /initrd-2.6.23.14-107.fc8xen.img
重启载入新内核
uname 命令验证:
$ uname -r 2.6.23.14-107.fc8xen
xen,那么运行的就是 Xen 内核。
qemu-img 命令行工具是 Xen 和 KVM 用来格式化各种文件系统的。可使用 qemu-img 格式化虚拟客户端映像、附加存储设备以及网络存储。qemu-img 选项及用法如下。
# qemu-img create [-6] [-e] [-b base_image] [-f format] filename [size]
# qemu-img convert [-c] [-e] [-f format] filename [-O output_format] output_filename
qcow 或 cow 时,映像转换可帮助您获得较小的映像。在目的映像中可检测并压缩空白字段。
info 参数显示磁盘映像信息。info 选项的格式如下:
# qemu-img info [-f format] filename
rawqemu-img info 了解 Unix/Linux 中映像或者 ls -ls 使用的实际大小。
qcow2qcowcowcow 格式的目的只是为了与前面的版本兼容。它无法在 Windows 中使用。
vmdkclooppdflush 进程,即清除进程。pdflush 会杀死进程来释放内存以便系统不至于崩溃。pdflush 可能会销毁导致文件系统出错虚拟客户端或者其他系统进程,并导致虚拟客户端无法引导。
(0.5 * RAM) + (过量使用比例 * RAM) = 推荐 swap 大小
/etc/grub.conf 文件使其使用虚拟化内核。您必须使用 xen 内核应用 Xen 监控程序。复制您现有的 xen 内核条目,确定您复制了所有重要的行,否则您的系统将在引导时 panic(initrd 的长度将为 '0')。如果您需要 xen 监控程序特定值,您必须将其附加到您 grub 条目的 xen 行中。
grub.conf 条目示例。在您的系统中的 grub.conf 文件可能会有所不同。示例中重要的是从 title 行到下一个新行之间的部分。
#boot=/dev/sda
default=0
timeout=15
#splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title Fedora (2.6.23.14-107.fc8xen)
root (hd0,0)
kernel /xen.gz-2.6.23.14-107.fc8 com1=115200,8n1
module /vmlinuz-2.6.23.14-107.fc8xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.23.14-107.fc8xen.img
grub.conf 中重要的一点......grub.conf 在从示例中复制前已经进行过手动编辑,那么它看起来可能完全不同。
grub.conf 文件的 xen 行中附加 dom0_mem=256M。前面示例的 grub 配置文件的修订版本如下:
#boot=/dev/sda
default=0
timeout=15
#splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console
title Fedora (2.6.23.14-107.fc8xen)
root (hd0,0)
kernel /xen.gz-2.6.23.14-107.fc8 com1=115200,8n1 dom0_mem=256MB
module /vmlinuz-2.6.23.14-107.fc8xen ro
root=/dev/VolGroup00/LogVol00
module /initrd-2.6.23.14-107.fc8xen.img
$ grep -E 'svm|vmx' /proc/cpuinfo
vmx 条目,表明是带 Intel VT 扩展的 Intel 处理器:
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht tm syscall lm constant_tsc pni monitor ds_cpl
vmx est tm2 cx16 xtpr lahf_lm
svm 条目,表明是带 AMD-V 扩展的 AMD 处理器:
flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush
mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni cx16
lahf_lm cmp_legacy svm cr8legacy ts fid vid ttp tm stc
flags:" 内容。
#!/bin/bash
declare -i IS_HVM=0
declare -i IS_PARA=0
check_hvm()
{
IS_X86HVM="$(strings /proc/acpi/dsdt | grep int-xen)"
if [ x"${IS_X86HVM}" != x ]; then
echo "Guest type is full-virt x86hvm"
IS_HVM=1
fi
}
check_para()
{
if $(grep -q control_d /proc/xen/capabilities); then
echo "Host is dom0"
IS_PARA=1
else
echo "Guest is para-virt domU"
IS_PARA=1
fi
}
if [ -f /proc/acpi/dsdt ]; then
check_hvm
fi
if [ ${IS_HVM} -eq 0 ]; then
if [ -f /proc/xen/capabilities ] ; then
check_para
fi
fi
if [ ${IS_HVM} -eq 0 -a ${IS_PARA} -eq 0 ]; then
echo "Baremetal platform"
fi
virsh capabilites 命令。
macgen.py。现在您可以在该目录中使用 ./macgen.py 运行该脚本生成新的 MAC 地址。输出应类似如下:
$ ./macgen.py
00:16:3e:20:b0:11
#!/usr/bin/python
# macgen.py script to generate a MAC address for virtualized guests on Xen
#
import random
#
def randomMAC():
mac = [ 0x00, 0x16, 0x3e,
random.randint(0x00, 0x7f),
random.randint(0x00, 0xff),
random.randint(0x00, 0xff) ]
return ':'.join(map(lambda x: "%02x" % x, mac))
#
print randomMAC()
python-virtinst 的内嵌模块生成用于客户端配置文件的新 MAC 地址以及 UUID:
# echo 'import virtinst.util ; print\ virtinst.util.uuidToString(virtinst.util.randomUUID())' | python # echo 'import virtinst.util ; print virtinst.util.randomMAC()' | python
#!/usr/bin/env python # -*- mode: python; -*- print "" print "New UUID:" import virtinst.util ; print virtinst.util.uuidToString(virtinst.util.randomUUID()) print "New MAC:" import virtinst.util ; print virtinst.util.randomMAC() print ""
ftpdvsftpd 为半虚拟客户端或者其它数据库提供对安装树的访问。如果您在安装服务器的过程中还没有安装 vsftpd,您可以从您安装介质的 Server 目录中获得 RPM 软件包,并使用 rpm -ivh vsftpd*.rpm 安装(请注意:RPM 软件包必须位于您的当前目录中)。
vsftpd,请使用 vipw 编辑 /etc/passwd,并将 ftp 用户主目录改为您要为您的半虚拟客户端保存安装树的目录。FTP 用户条目示例如下:
ftp:x:14:50:FTP User:/xen/pub:/sbin/nologin
vsftpd 在系统引导时自动启动,请使用 chkconfig 程序启用 vsftpd 的自动启动。
chkconfig --list vsftpd 确定没有启用 vsftpd:
$ chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
chkconfig --levels 345 vsftpd on 为运行级别 3、4 和 5 自动启用 vsftpd。
chkconfig --list vsftpd 命令确定在系统引导时会自动启用 vsftdp:
$ chkconfig --list vsftpd vsftpd 0:off 1:off 2:off 3:on 4:on 5:on 6:off
service vsftpd start vsftpd 启动 vsftpd 服务:
$service vsftpd start vsftpd Starting vsftpd for vsftpd: [ OK ]
udev 部署 LUN 持久性。在您的系统中部署 LUN 持久性前,请确定您有正确的 UUID。您得到它们后,即可编辑位于 /etc 目录的 scsi_id 文件来配置 LUN 持久性。当您在文本编辑器中打开此文件时,您必须注释出这一行:
# options=-b
# options=-g
scsi_id 命令:
# scsi_id -g -s /block/sdc *3600a0b80001327510000015427b625e*
/etc/udev/rules.d 目录的 20-names.rules 文件。该设备命名规则的格式如下:
# KERNEL="sd*", BUS="scsi", PROGRAM="sbin/scsi_id", RESULT="UUID", NAME="devicename"
UUID 和 devicename。该规则应类似如下:
KERNEL="sd*", BUS="scsi", PROGRAM="sbin/scsi_id", RESULT="3600a0b80001327510000015427b625e", NAME="mydevicename"
/dev/sd* 匹配的设备来检查给定的 UUID。当找到第一个匹配的设备时,它会生成一个设备节点,名为 /dev/devicename。在这个示例中,该设备节点为 /dev/mydevice 。最后,请在 /etc/rc.local 文件中添加这一行:
/sbin/start_udev
/etc/ 目录中的 multipath.conf 文件来定义四个设备别名:
multipath {
wwid 3600a0b80001327510000015427b625e
alias oramp1
}
multipath {
wwid 3600a0b80001327510000015427b6
alias oramp2
}
multipath {
wwid 3600a0b80001327510000015427b625e
alias oramp3
}
multipath {
wwid 3600a0b80001327510000015427b625e
alias oramp4
}
/dev/mpath/oramp1、/dev/mpath/oramp2、/dev/mpath/oramp3 和 dev/mpath/oramp4。这些设备将位于 /dev/mpath 目录。这些 LUN 名称会在重启后保留,因为在 LUN的 wwid 中创建了别名。
/sbin/service smartd stop /sbin/chkconfig --del smartd
uuidgen 命令。然后在 vif 条目中您必须为每个客户端定义一个唯一的 MAC 地址(如果您是从现有客户端中复制客户端配置,您可以生成一个脚本来进行处理)。有关 xen 桥接信息,如果您将一个现有客户端配置文件移动到一个新的主机中,您必须更新 xenbr 条目来与您的本地联网配置匹配。对于设备条目,您必须修改 'disk=' 部分中的条目使其指向正确的客户端映像。
/etc/sysconfig/network 文件中的 HOSTNAME 条目使其与新客户端的主机名匹配。
/etc/sysconfig/network-scripts/ifcfg-eth0 文件中的 HWADDR 地址使其与 ifconfig eth0 文件的输出匹配,同时如果您要使用静态 IP 地址,您还必须修改 IPADDR 条目。
nameuuiduuidgen 命令可重新生成一个新的 UUID。UUID 输出示例:
$ uuidgen a984a14f-4191-4d14-868e-329906b211e5
vifxenbr 条目以符合您的本地联网配置(您可以使用 brctl show 命令获得桥接信息)。
disk= 部分的条目使其指向正确的客户端映像。
/etc/sysconfig/networkHOSTNAME 条目改为客户端的新 hostname。
/etc/sysconfig/network-scripts/ifcfg-eth0ifconfig eth0 输出中的硬件地址替换 HWADDR 地址。
IPADDR 条目。
libvirt 编写自定义脚本的程序员和系统管理员提供一些有用信息。
libvirt 编写新应用程序的程序员阅读。
virsh 可以处理 XML 配置文件。您可在使用特殊选项编写大量部署脚本时利用这个优点。您可以添加在 XML 文件中定义的设备来运行半虚拟客户端。例如,要添加一个 ISO 文件作为 hdc 运行客户端,会生成 XML 文件:
# cat satelliteiso.xml
<disk type="file" device="disk">
<driver name="file"/>
<source file="/var/lib/libvirt/images/rhn-satellite-5.0.1-11-redhat-linux-as-i386-4-embedded-oracle.iso"/>
<target dev="hdc"/>
<readonly/>
</disk>
运行 virsh attach-device 命令将 ISO 文件作为 hdc 添加到名为 "satellite" 的客户端中:
# virsh attach-device satellite satelliteiso.xml
/etc/modprobe.conf 中调整回送设备数目。请编辑 /etc/modprobe.conf 文件并在其中添加以下行:
options loop max_loop=64
phy: block device 命令或者 tap:aio 命令。要使用回送设备为全虚拟系统备份客户端,请使用 phy: device 或者 file: file 命令。
cat /proc/cpuinfo | grep vmx svm。如果命令有输出结果,则启用了虚拟化扩展。如果没有结果,那么您的系统可能没有虚拟化扩展或者没有启用正确的 BIOS 设置。
libvirt 虚拟化 API 的官方网站。
/usr/share/doc/xen-<version-number>/ 是包含有关 Xen 半虚拟化管理程序以及相关管理工具信息的目录,其中包括各种示例配置、硬件特别信息以及当前 Xen 上级用户文档。
man virsh 和 /usr/share/doc/libvirt-<version-number> — 包含了 virsh 虚拟机管理工具的子命令和选项,还包括有关 libvirt 虚拟化库 API 的综合信息。
/usr/share/doc/gnome-applet-vm-<version-number> — 监控和管理本地运行的虚拟机的 GNOME 图形化面板 applet 的文档。
/usr/share/doc/libvirt-python-<version-number> — 提供 libvirt 库的 Python 绑定的细节。libvirt-python 软件包允许 python 开发者用 libvirt 虚拟化管理库编写程序。
/usr/share/doc/python-virtinst-<version-number> — 提供在虚拟机中帮助开始安装 Fedora 以及 Linux 相关发行本的 virt-install 命令的文档。
/usr/share/doc/virt-manager-<version-number> — 提供虚拟机管理者(管理虚拟机的图形化工具)的文档。
| 修订历史 | |||
|---|---|---|---|
| 修订 12.1.3 | Mon Oct 12 2009 | ||
| |||
dom0 指的是运行 管理程序 的红帽企业版 Linux 主机事件,它可帮助客户端操作系统的虚拟化。Dom0 在物理硬盘中运行并管理为其自身和客户端操作系统分配物理硬件和资源。
domU 是指在主机系统中运行的客户端操作系统(Domain)。
ext2 和 ext3 文件系统识别符、RAID 设备识别符、iSCSI 和 LUN 设备识别符、MAC 地址以及虚拟机识别符。

