Tips:因为博客园网页布局的原因,部分图片显示不清晰,可以放大网页查看清晰图片。

如果系统使用物理机,需要在BIOS里面开启Intel VT-x(或AMD-V),如果是VMware workstation,还须将处理器的虚拟化引擎中的三项开启。

本机主要硬件配置(使用VMware workstation模拟)

CPU:i5-6200U(4核)

内存:4G

硬盘:SATA 100Gx2

网卡:Intel(R) 82574Lx2

安装Linux

在部署KVM的时候,Linux我选择的是CentOS。这是因为KVM是Redhat的开源项目,而CentOS和Redhat关系密切,这样一来就比较容易找到帮助文档。Xen也支持多种Linux发行版的,官方文档建议选择一种比较熟悉的Linux发行版即可。不过我在使用CentOS部署Xen的时候遇到一些问题,如果按照Xen文档Linux使用Debian应该比较容易成功。

Xen官方部署文档:https://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide#What_is_this_Xen_Project_software_all_about.3F

本文使用的是CentOS 7.4,基础环境选择GNOME Desktop,附加环境选择Compatibility Libraries、Development tools。

Tips:固件建议使用BIOS,我使用CentOS 7.4+UEFI,安装后无法启动Xen。

CentOS 7.4 安装Xen

这里贴出我安装的操作步骤,具体的操作意义见下文“安装Xen遇到的问题”。

[root@localhost ~]# yum -y install centos-release-xen-48.x86_64
[root@localhost ~]# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen-48.repo
[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y update kernel
[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y install xen
[root@localhost ~]# yum -y install gnutls-utils vte3 dbus-libs python-ipaddr
[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install virt-manager
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-Xen-48.repo
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

安装Xen遇到的问题

百度上有很多关于CentOS 7 部署Xen的文章,多数和云栖社区这篇差不多https://yq.aliyun.com/articles/72452?spm=a2c4e.11155472.0.0.3bd421f04Qra8F,不过我在CentOS 7.4 实践后发现略微有点问题,整理如下:

1.下载安装xen源

[root@localhost ~]# yum -y install centos-release-xen

2.添加xen的源

[root@localhost ~]# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen.repo

Tips:repo配置enabled=0是禁用该源,enabled=1是启用该源,sed的用法参考https://www.cnblogs.com/starof/p/4181985.html

3.更新centos内核、安装Xen

[root@localhost ~]# yum --enablerepo=centos-virt-xen -y update kernel
[root@localhost ~]# yum --enablerepo=centos-virt-xen -y install xen

第1步下载安装xen源很好理解;

第2步用enabled=0替换enabled=1,实际是将Xen源关闭了,推测这样做是为了避免以后yum误使用该Xen源。不过这并不太重要,这是因为第3步yum --enablerepo=centos-virt-xen会指定使用该源,如果该源已禁用(enabled=0),该参数也可以让yum暂时使用该源。但是我在CentOS 7.4上执行,报错Error getting repository data for centos-virt-xen, repository not found,我打开/etc/yum.repos.d/CentOS-Xen.repo。

[centos-virt-xen-46]
name=CentOS-$releasever - xen
baseurl=http://mirror.centos.org/centos/$releasever/virt/$basearch/xen-46
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization [centos-virt-xen-46-testing]
name=CentOS-$releasever - xen - testing
baseurl=http://buildlogs.centos.org/centos/$releasever/virt/$basearch/xen-46
gpgcheck=0
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Virtualization

发现安装的Xen源里具体只有[centos-virt-xen-46]和[centos-virt-xen-46-testing]两个源,所以稍微修改第3步的命令:

[root@localhost ~]# yum --enablerepo=centos-virt-xen-46 -y update kernel
[root@localhost ~]# yum --enablerepo=centos-virt-xen-46 -y install xen

Tips:[centos-virt-xen-46-testing]里面的软件处于测试中,所以这里不使用。

发现还是无法更新内核,安装xen,关键提示信息如下:

failure: repodata/repomd.xml from centos-virt-xen-46: [Errno 256] No more mirrors to try.
http://mirror.centos.org/centos/7/virt/x86_64/xen-46/repodata/repomd.xml: [Errno 14] HTTP Error 404 - Not Found

我访问:http://mirror.centos.org/centos/7/virt/x86_64/发现下级目录并没有xen-46,所以自然会404,这级目录下面只有xen-48和xen-410,所以我认为正确的步骤应该如下:

[root@localhost ~]# yum -y install centos-release-xen-48.x86_64
[root@localhost ~]# sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen-48.repo
[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y update kernel
[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y install xen

Tips:CentOS默认源(Base)中只有centos-release-xen、centos-release-xen-48.x86_64 这两个xen源,是没有centos-release-xen-410.x86_64 的。

4.设置Domain0

[root@localhost ~]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_CMDLINE_XEN_DEFAULT="dom0_mem=1024M,max:1024M cpuinfo com1=115200,8n1 console=com1,tty loglvl=all guest_loglvl=all"
GRUB_CMDLINE_LINUX_XEN_REPLACE_DEFAULT="console=hvc0 earlyprintk=xen nomodeset"

dom0_mem=1024M,max:1024M是设置Domain0的内存和最大可用内存,一定不能超过服务器的实际内存,否则进入不了Domain 0;Xen-48默认值是1G,我的服务器内存是4G,所以无需修改。

5.安装管理工具

[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install virt-manager

当有多个源的时候 yum --enablerepo=centos-virt-xen-48只是优先使用centos-virt-xen-48,而从centos-virt-xen-48安装这些工具因为缺少相关依赖包,将无法安装。该命令会从其他可用源(Base)中安装这些工具,但是CentOS 7.4 Base中的libvirt不可用,详细可以参考:https://www.cnblogs.com/yogurtwu/p/9988974.html相关部分。即使能够成功安装并运行,也不能确定Base源的工具版本是否支持xen-48,。因此这里我先从Base中安装这些工具需要的依赖包,再安装centos-virt-xen-48里的这些管理工具。

[root@localhost ~]# yum -y install gnutls-utils vte3 dbus-libs python-ipaddr

稳妥起见,禁用Base源,再安装这些工具

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-fasttrack.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-Xen-48.repo
[root@localhost yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

再安装管理工具

[root@localhost ~]# yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install virt-manager

Tips:确定centos-virt-xen-48缺少依赖包的方法,先禁用Base,然后指定从centos-virt-xen-48安装这些管理工具,yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install virt-manager,关键报错信息如下:

Error: Package: libvirt-client-4.1.0-2.xen48.el7.x86_64 (centos-virt-xen-48)
Requires: gnutls-utils
Error: Package: virt-manager-1.2.1-108.xen48.el7.noarch (centos-virt-xen-48)
Requires: vte3
Error: Package: libvirt-daemon-driver-network-4.1.0-2.xen48.el7.x86_64 (centos-virt-xen-48)
Requires: libdbus-1.so.3(LIBDBUS_1_3)(64bit)
Error: Package: virt-manager-common-1.2.1-108.xen48.el7.noarch (centos-virt-xen-48)
Requires: python-ipaddr
Error: Package: libvirt-daemon-4.1.0-2.xen48.el7.x86_64 (centos-virt-xen-48)
Requires: libdbus-1.so.3(LIBDBUS_1_3)(64bit)
Error: Package: libvirt-daemon-driver-nwfilter-4.1.0-2.xen48.el7.x86_64 (centos-virt-xen-48)
Requires: libdbus-1.so.3(LIBDBUS_1_3)(64bit)
Error: Package: libvirt-libs-4.1.0-2.xen48.el7.x86_64 (centos-virt-xen-48)
Requires: libdbus-1.so.3(LIBDBUS_1_3)(64bit)
You could try using --skip-broken to work around th

有个小插曲,libdbus-1.so.3我不知道是个什么包,而且在Base中找不到,我百度libdbus-1.so.3发现它和dbus-lib偶尔会同时出现,从Base中安装这些管理工具的时候,也有dbus-lib,测试安装dbus-lib后也未提示Requires: libdbus-1.so.3(LIBDBUS_1_3)(64bit)。

6.添加xen启动项

[root@localhost ~]# /bin/grub-bootxen.sh

就是运行一个脚本,CentOS官网描述这将生成/boot/grub2/grub.cfg;https://wiki.centos.org/zh/HowTos/Xen/Xen4QuickStart

7.重启服务器

重启服务器后,有5个启动项;第一项是启动CentOS(更新后的内核4.9.127)和xen,也就是domain 0和hypervisor;第二项是CentOS和Xen的高级启动项,第三项是以新的内核4.9.127启动CentOS,最后两项是旧内核(3.10.0)和救援启动项;使用xen启动第一项。

8.验证Xen是否成功运行。

xl info输出类似信息就代表Xen成功运行。

使用Xen

Xen也可以使用virt-install,以及专属的xe、xl等命令行工具,简单使用还是推荐GUI工具virt-manager

Tips:这里可以看到Xen特有Domain-0

Tips:virt-manager管理Xen和KVM的一点区别在于,Xen虚拟化类型可以选择全虚拟化或者半虚拟化,全虚拟化使用方法和KVM相同,半虚拟化我暂未尝试。

主流服务器虚拟化技术简单使用——Xen(一)的更多相关文章

  1. 主流服务器虚拟化技术简单使用——Xen(二)

    管理多台Xen主机可以使用GUI工具virt-manager和xm.xl等命令行工具. Tips:hypervisor一定要选到Xen web管理工具 Xen也有一个简易web管理工具叫xenwebm ...

  2. 主流服务器虚拟化技术简单使用——KVM(二)

    通过Linux工具管理KVM 主流服务器虚拟化技术简单使用——KVM(一)部署了一台KVM主机,提到KVM可以通过命令行工具(virt-install.virsh)和GUI工具(virt-manage ...

  3. 主流服务器虚拟化技术简单使用——Hyper-V(二)

    当在多台Windows Server上部署了hyper-v的时候,需要采用合适的方法管理这些hyper-v节点. 远程桌面 最简单的方法就是逐台远程桌面登陆Windows Server,再使用每台本地 ...

  4. 主流服务器虚拟化技术简单使用——Hyper-V(一)

    Tips:因为博客园排版的原因,图片显示不清晰,可以放大网页查看清晰图片. 如果系统使用物理机,需要在BIOS里面开启Intel VT-x(或AMD-V),如果是VMware workstation, ...

  5. 主流服务器虚拟化技术简单使用——KVM(一)

    Tips:因为博客园排版的原因,图片显示不清晰,可以放大网页查看清晰图片. 如果系统使用物理机,需要在BIOS里面开启Intel VT-x(或AMD-V),如果是VMware workstation, ...

  6. 虚拟化技术对比:Xen vs KVM

    恒天云:http://www.hengtianyun.com/download-show-id-68.html 一.说明 本文主要从功能方面和性能方面对Xen和KVM对比分析,分析出其优缺点指导我们恒 ...

  7. 虚拟化技术对照:Xen vs KVM

    恒天云:http://www.hengtianyun.com/download-show-id-68.html 一.说明 本文主要从功能方面和性能方面对Xen和KVM对照分析,分析出其优缺点指导我们恒 ...

  8. 泛虚拟化技术(以Xen为例)

    一.概述    最主要的特点是:修改Guest OS的内核代码.通过修改内核,使Guest OS明白自己是运行在R-1,不要直接去运行特权指令,如果要运行就去Hypercall(主动VMM陷入).   ...

  9. [51CTO]服务器虚拟化开源技术主流架构之争

    服务器虚拟化开源技术主流架构之争 http://virtual.51cto.com/art/201812/589084.htm 大部分客户已经是KVM+OpenStack的架构了 我所见到的 工商云 ...

随机推荐

  1. 每天一个Qt类之QWidget

    每天一个Qt类之QWidget QWidget类是所有用户界面对象的基类 继承QObject和QPaintDevice 被QButton.QFrame.QDialog.QComboBox.QDataB ...

  2. Go 网络编程笔记

    前言: 本文是学习<<go语言程序设计>> -- 清华大学出版社(王鹏 编著) 的2014年1月第一版 做的一些笔记 , 如有侵权, 请告知笔者, 将在24小时内删除, 转载请 ...

  3. python 中面向对象编程简单总结3--定制类

    声明:资源来自慕课网python学习课程,以下只是个人学习总结,仅供参考 1.Python类的特殊方法 特征:以  __ 开头并结尾的方法,比如用于print的__str__() , __getatt ...

  4. Android 修改 TextView 的全局默认颜色。

    如果你的应用中大多数TextView的颜色是红色, 或者其他颜色, 你是为每一个TextView都设置一次颜色, 还是有其他更好的办法, 这里教你怎么修改TextView的默认颜色. 当然我们Text ...

  5. app里面嵌套的H5页面上电话号码怎么才能点击拨号?

    代码: <p>联系我们:<a href="tel://66666666666">66666666666</a> </p>

  6. ubuntu 12.04安装vmtools 问题解决

      vmware安装ubuntu12.04版本的vm tools时 遇到:   Searching for a valid kernel header path... The path "& ...

  7. Halcon标定与自标定

    Halcon标定:https://blog.csdn.net/niyintang/article/details/78752585 Halcon自标定:https://www.cnblogs.com/ ...

  8. MongoDB默认配置

    mongodb使用了yaml格式定义的配置文件(http://www.yaml.org/) 默认为: # mongod.conf #where to log logpath=/var/log/mong ...

  9. Linq集合操作之Intersect,Except,Union源码分析

    Linq集合操作之Intersect,Except,Union源码分析 linq的集合运算 常见的集合运算有哪些? 这三个扩展方法在我们实际使用中用的还是非常多的,而且这里还涉及到了“复杂度” 无算法 ...

  10. ArrayList用法详解与源码分析

    说明 此文章分两部分,1.ArrayList用法.2.源码分析.先用法后分析是为了以后忘了查阅起来方便-- ArrayList 基本用法 1.创建ArrayList对象 //创建默认容量的数组列表(默 ...