当前位置: 首页 > 工具软件 > Libvirt > 使用案例 >

libvirt virt-manager

赫连正初
2023-12-01

CentOS 6 的 Xen4 Libvirt

And then virt-manager window will show up on your graphical desktop.

If this is the first time you have brought up virt-manager, you need to connect to your Xen instance :

  • click on "File"
  • click on "Add Connection"
  • select "Xen" as the Hypervisor
  • if the virt-manager is not running on the same machine as xen : check "Connect to remote host" and fill in the connection information.
  • check Autoconnect
  • click on "Connect" button

Now you should see "xen" tree with installed domains.

Libvirt 及 Xen 的基础

Xen 的主机操作系统称为 Dom0。通过 Xen 来执行的虚拟操作系统(VM)称为 DomU。

在缺省情况下,libvirt 会在缺省网络卡(一般是 eth0)背后创建一个 192.168.122.0/24 的 NAT 网络。

在这个 NAT 网络上运行的 DomU VM 可以互相连接及通过 Dom0 的网络向外连接,但你只能在 Dom0 上通过 libvirt(或 xen)连接到它们。你可以把缺省的 NAT 网络改为一个桥接式网络,这样你便能连接到 DomU VM,仿如它们与 Dom0 在同一个实体网络上。有关桥接的讨论收录在下文(第 7 部份)。

先决条件

此页假设你已经遵照Xen4QuickStart 指引把 Xen 内核安装在你的 Dom0 机器上,并启用了 xend 后台服务,而 xm info 这个指令作出类似的汇报:

[root@xentest1 ~]# xm info
host                   : xentest1.centos.org
release                : 3.4.46-8.el6.centos.alt.x86_64
version                : #1 SMP Wed May 22 01:29:08 UTC 2013
machine                : x86_64
nr_cpus                : 1
nr_nodes               : 1
cores_per_socket       : 1
threads_per_core       : 1
cpu_mhz                : 2800
hw_caps                : 078bf3ff:efd3fbff:00000000:00001310:00802001:00000000:000837fd:00000000
virt_caps              : hvm
total_memory           : 8109
free_memory            : 6992
free_cpus              : 0
xen_major              : 4
xen_minor              : 2
xen_extra              : .2-22.el6
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32 hvm-3.0-x86_32p hvm-3.0-x86_64 
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : unavailable
xen_commandline        : dom0_mem=1024M,max:1024M loglvl=all guest_loglvl=all
cc_compiler            : gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-3)
cc_compile_by          : mockbuild
cc_compile_domain      : centos.org
cc_compile_date        : Fri Jun 14 23:47:38 UTC 2013
xend_config_format     : 4

除非特别指定,所有指令均须由 root 用户在 Dom0 机器上执行。

我习惯在最少安装上加入数个组件,因为它们稍后也许会有用。请以此指令安装它们:

yum install rsync wget vim-enhanced openssh-clients

安装 libvirt(在 Dom0 机器上)

首先我们要安装 libvirt 所需的基本组件:

yum install libvirt python-virtinst libvirt-daemon-xen

安装后,请重新引导你的 Dom0 机器。

远程访问 LibVirt

在多数情况,下我们不推荐在 Dom0 服务器上安装整套图像化系统,因此多数人会从远程访问/控制 Dom0 libvirt。

你有 2 个可取的途径 …… 其一是通过一台图像化机器(例如一台 CentOS-6 工作站),其二是通过 ssh 应用 virsh 命令行程序。

通过 PolicyKit 控制 libvirt 的访问权

如果你想将一台 CentOS-6 工作站连接到 Dom0 上的 virt-manager 并控制该台计算机上的 DomU 虚拟机器,你便需要利用 PolicyKit。当你利用某台机器上的 virsh 终端機直接连接到 Dom0 及控制它的 DomU 虚拟机器时,PolicyKit 也会被应用。

PolicyKit 让你设计有灵活性、精细的访问权,功能远超㙎本样例所介绍以 unix 群组授权访问 libvirt 的做法。

如要设计复杂的访问权,请参阅 polkit 的文档

设置 libvirt 供群组访问

若要把访问权授予某个 unix 群组的成员,我们只须创建一个 PolicyKit 本地权限档。

这是一个纯文本档,一般被放置于这个目录中:

/etc/polkit-1/localauthority/50-local.d/

你可随意为这个文件命名,但它必须以两个数目字起首及以 .pkla 结尾。例如:

/etc/polkit-1/localauthority/50-local.d/50-libvirt-remote-access.pkla

它的内容应包含:

[Remote libvirt SSH access]
Identity=unix-group:group_name
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes

你应该以合适的群组名称取替 group_name

举个例说:你拥有一位名为 johnny 的 unix 用户,而你希望创建一个名为 remote-libvirt 的群组来远程访问 libvirt,并把 johnny 加进该群组内。

首先我们要通过 ssh 登录 Dom0 机器并取得 root 的身份。接着我们便执行以下指令来创建新的群组:

groupadd remote-libvirt 

然后我们可以用这个指令把用户加进 remote-libvirt 这个群组内:

usermod -G remote-libvirt johnny

现在 johnny 这个 unix 用户可以远程控制 libvirt。

连接到远程的 Dom0

从远程机器通过 virt-manager 连接到 Dom0 机器

请登录你的图像化桌面(它可以是台 CentOS-6 工作台或是一台用来管理数台非图像化 Dom0 机器的图像化服务器),然后通过打开一个终端機窗口及以 root 身份执行以下指令,确保 virt-manager 已被安装:

yum install virt-manager

以普通用户的身份打开 virt-manager。你可利用 Applications => System Tools => Virtual Machine Manager 这条捷径,或从终端機窗口输入 virt-manager

在 virt-manager 应用程序内,打开 File => Add Connection 选单项目,接着选择 Xen 作为监督器,选用 connect to a remote host,选择 SSH 作为方法,输入你加进 remote-libvirt 群组内的用户(在这个样例中是 johnny)作为用户名称,最后输入 DomU 的主机名称或 IP 地址(这我的样例中,我们会采用 192.168.0.5)…… 然后点击 connect。

它会问 johnny 在 DomU 上的 ssh 用户名称 …… 输入后,你便会看见它连接到主机及在 virt-manager 内看见一个 Domain-0 的图示。

这个例子中的 URI 是:

xen+ssh://johnny@192.168.0.5

从远程机器通过 virsh 连接到 Dom0 机器

你在 Dom0 上利用 virsh 控制 DomU 虚拟机器的做法有两种。

第一种是纯粹 ssh 到 Dom0 机器,然后成为 root 用户及从命令行执行 virhs

第二种是采用上述例子的群组然后执行以下指令:

virsh -c xen+ssh://johnny@192.168.0.5

这种做法的好处就是我们无须把 Dom0 的 root 访问权发放给 johnny 用户,他只须正常帐户。他同样能应用 virsh 的一切功能。

有关 virsh 的详情,请参阅这份指南

创建 DomU 虚拟机器

利用 virt-manager 来安装 DomU

现在你可以在 virt-manager 内选择新的主机名称/IP 地址,然后按鼠标右键并选择 New 或点击 Create a new Virtual Machine 的图示,接着按照提示来创建新的机器。

这个过程在远程及本地连接下都相同 …… 唯一差别就是 Step 1 of 5 提示页上的 Connection 对话框。

安装新机器的过程与此指南很相似,唯独在 Step 1 of 5 提示页上的连接将会显示你的远程主机名称(在我们的样例中是 192.168.0.5),而在 Step 5 of 5 提示页的高级选项的 Virt Type 内,你会看见xen(paravirt) 或 xen(fullvirt) 而不是 KVM。

通过 SSH 利用 virt-install 来安装 DomU

另一个进行远程安装的方法就是利用 ssh 连接到 Dom0 机器及成为 root 用户,然后利用 virt-install 及终端機来人进行安装。以下指令(以 root 身份在命令行执行)可以从远程进行文字模式的安装:

virt-install -d -n TestVM1 -r 2048 --vcpus=1 --disk /var/lib/libvirt/images/TestVM1.img,size=8 --nographics -p -l "http://192.168.0.10/centos/6.4/os/x86_64" --extra-args="text console=com1 utf8 console=hvc0"

在上述例子中,指令的含意包括:

-d — 侦错模式,打印大量文字及完整的设置样作侦错之用

-n TestVM1 — 虚拟机器的名称

-r 2048 — 内存大少(2048 MB,即 2 GB)

--vcpus=1 — 虚拟 CPU 的数量

--disk=/var/lib/libvirt/images/TestVM1.img,size=8 — 碟盘映像的位置及以 GB 计算的大少 …… 它可指向 LVM、等

--nographics — 由于我们的 Dom0 没有安装图像界面,因此不要采用 VNC、等

-p — 采用半虚拟化

-l "http://192.168.0.10/centos/6.4/os/x86_64" — centos 目录树的位置,也可采用 http://mirror.centos.org/centos/6/os/x86_64/ 或其它镜像。

--extra-args="text console=com1 utf8 console=hvc0" — 告诉 linux 利用 com1 和 xen 利用 hvc0,好让你能通过终端機进行文字模式安装

注:这类安装采用终端機,因此局限于文字模式的安装。上述(前一段)的 virt-manager 却能同时支持图像化安装。

有关利用 virt-install 进行安装的详情请参阅此指南

控制 DomU 虚拟机器

通过 libvirt,你可利用图像化应用程序(virt-manager)或文字应用程序(virsh)来控制 DomU 虚拟机器。

这些应用程序可以位于 DomU 虚拟机器所身处的 Dom0 上(本地控制),它们也可以位于不同的机器上并连接到 DomU(远程控制)。

不论是通过远程或本地连接,两种工具的实际操作都是相同。

有关远程 virt-manager 或远程 virsh 的连接,请参阅这些指引。你必须设置 libvirt 才能用这两个工具来进行远程访问。

有关采用 virsh 这参阅此指南;有关采用 virt-manager 这参阅此指南

桥接样例设置

以下是另一个桥接样例设置:

你必须安装 bridge-utils 才可设置桥接。你可以在 CentOS 下以这个指令进行安装:

yum install bridge-utils

以下文件位于 /etc/sysconfig/network-scripts/,它们必须被修改。

定义 br1 的最简单样例

ifcfg-eth0

DEVICE=eth0
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Ethernet
BRIDGE="br1"
USERCTL=no

ifcfg-br1

DEVICE=br1
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
TYPE=Bridge
IPADDR=192.168.0.5
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
USERCTL=no
 类似资料: