# Xen DomU 配置与使用 在 [Xen 安装与配置](Xen_安装与配置.md) 完成了 Xen 虚拟机的安装,以及 Dom0 的配置。接下来我们对 DomU 进行配置。Xen DomU 可工作在 PV(paravirtualized) 和 HVM(hardware virtualized) 两种模式下。HVM 需要硬件虚拟化支持,PV 不需要硬件虚拟化支持,但是需要修改 Guest 系统。 在 Linux 系统中可通过: ```bash grep -E "(vmx|svm)" --color=always /proc/cpuinfo ``` 命令检查系统是否支持 HVM 模式。 ## 配置网络 本步骤不是必须的。但要进行虚拟机间网络通讯的话,就要对网络进行基本配置: ```bash brctl addbr xenbr0 brctl addif xenbr0 eth0 ``` 注意要将 eth0 替换成实际的网卡名。 ## 开启 Xen 服务 必须在 Dom0 中开启以下服务才能启动 DomU: ```bash systemctl start xenstored systemctl enable xenstored systemctl start xenconsoled systemctl enable xenconsoled systemctl start xendomains systemctl enable xendomains systemctl start xen-init-dom0 systemctl enable xen-init-dom0 ``` ## 管理 DomU Xen 通过以下命令对 DomU 进行管理 ```bash # 创建 domU xl create # 查看各虚拟机使用的资源情况 xl top # 查看虚拟机列表 xl list # 切换到 domU 的命令行 xl console # 关闭 domU xl shutdown # 销毁 domU 的虚拟机 xl destroy ``` Xen 通过 xl create 命令创建虚拟机。该命令需要输入一个 domU 配置文件,下文用于介绍如何创建 domU 配置文件。 ## 基本的 domU 配置文件 Xen 支持将磁盘文件、物理磁盘和物理分区、ISO镜像文件等挂载为磁盘设备。通过以下命令可以创建一个 10G 的磁盘文件 ```bash truncate -s 10G domU.img ``` 以下是一个使用不同类别磁盘创建虚拟机的基本配置参考: ```ini name = "domU" vcpus = 2 memory = 512 disk = [ "file:/path/to/domU.img,xvda,w", file:/path/to/ISO,sdc,r", "phy:/path/to/partition,sdb1,w" ] vif = [ 'mac=00:16:3e:XX:XX:XX,bridge=xenbr0' ] ``` vcpus 用于指定虚拟 cpu 数量;name 用于指定 domU 名称;vif 用于指定网络界面,如果前面没有配置网络,就不要配置 vif。 ## HVM domU 配置文件 HVM 模式通过 builder = 'hvm' 参数进行指定。通过 VNC 连接虚拟机的显示器。 ```ini name = 'HVM_domU' builder = 'hvm' memory = 512 vcpus = 2 disk = [ 'phy:/dev/vg0/hvm_arch,xvda,w', 'file:/path/to/ISO,hdc:cdrom,r' ] vif = [ 'mac=00:16:3e:00:00:00,bridge=xenbr0' ] vnc = 1 vnclisten = '0.0.0.0' vncdisplay = 1 ``` 以上配置,使用 vncviewer 连接到 Dom0:1(默认是 5901 端口),可获得 DomU 的显示。 ## PV domU 配置文件 PV 模式必须指定 kernel,参考配置如下: ```ini name = "PV_domU" kernel = "/mnt/arch/boot/x86_64/vmlinuz" ramdisk = "/mnt/arch/boot/x86_64/archiso.img" extra = "archisobasedir=arch archisolabel=ARCH_201301" memory = 512 disk = [ "phy:/path/to/partition,sda1,w", "file:/path/to/ISO,sdb,r" ] vif = [ 'mac=00:16:3e:XX:XX:XX,bridge=xenbr0' ] ``` extra 用于指定 kernel 参数。