zoukankan      html  css  js  c++  java
  • 安装使用xen虚拟化工具

    换了一家新公司,需要拿出一套虚拟化方案,就把业界的主流虚拟化技术划拉了一遍,给领导交了一份报告,具体的技术部分已经在之前的随笔里了,本篇文章主要介绍的是xen虚拟化工具的安装,下方是xen的官方安装文档链接,有兴趣的可以去看看:

    https://wiki.xenproject.org/wiki/Xen_Project_Beginners_Guide#What_is_this_Xen_Project_software_all_about.3F

    宿主机信息:centos7.4-1708版本的虚拟机,安装与配置如下图,值得一提的是,因为本次测试使用的是全虚拟化,所以需要cpu的支持:

    如果是安装了linux系统的服务器,则可以输入:egrep '(vmx|svm)' /proc/cpuinfo

    如果出现下图中的内容,则说明改cpu是支持虚拟化的,反之,则说明不支持:

    1.没什么好说的,关闭防火墙和selinux,做一下基础配置:

    systemct disable firewald

    sed -i 7s/enforcing/disabled/g /etc/selinux/config

    reboot(因为我比较懒)

    2.安装xen的yum源

    yum -y install centos-release-xen-48.x86_64 

    网上有比较多的xen安装教程,做的时候也踩了不少坑,对于这些问题,接下来会一一列举

    3.修改xen源为不启用

    sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-Xen-48.repo

    PS:repo配置enabled=0是禁用该源,enabled=1是启用该源,yum --enablerepo=centos-virt-xen会指定使用该源,如果该源已禁用(enabled=0),该参数也可以让yum暂时使用该源

    4.使用centos的xen源来更新内核

    yum --enablerepo=centos-virt-xen-48 -y update kernel

    这一步需要是需要注意的,网上给出的很多教程也是到这一步出问题,错误的消息是:

    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

    其根本原因在于xen源中的名称

    [centos-virt-xen-48]是该源的真正名称,名称错了,当然是404错误,[centos-virt-xen-48-testing]中的内容是正在测试的软件,可以无视。

     PS:因为centos的源是在国外,所以更新的很慢,我下载了大概一个多小时,才更新完了内核。

    5.安装xen程序:yum --enablerepo=centos-virt-xen-48 -y install xen

    这一步没什么说的,如果上一步更新成功了xen内核,那这一步就不会出问题,还是有点慢,下载了大概半个小时。

    6.设置Domain0

    这两个的意思我在网上找了点资料,但都是术语,用通俗的话来讲呢:

    dom0_mem=3072M的意思是xen内核最多调用的内存,即xen内核从你的linux内核上所能调用的内存大小,max:3072M,的意思是建立在xen内核上的虚拟机从xen内核中所能调用的内存大小,裸机系统内核内存->xen内核内存->建立在xen内核上的系统内存,这样的话,才不会报错,默认的值都是1024,因为我要用来做测试,所以我把它改成了3G=3072M

    7.安装管理工具,有人看到这要问了,xen不是虚拟化了吗,是xen是实现了资源的虚拟化,但是xen本身只提供虚拟化,所以呢,虚拟机的创建,管理等等都是需要第三方管理工具来做。

    因为虚拟化与传统技术相比的特殊性,所以呢,先从base源中更新通用的依赖与部分工具软件,然后使用xen源来安装管理工具。

    yum -y install gnutls-utils vte3 dbus-libs python-ipaddr

    yum --enablerepo=centos-virt-xen-48 -y install libvirt libvirt-daemon-xen virt-install virt-manager libvirt-devel virt-viewer

    这一步我遇到了点问题,安装管理工具的时候,报了个错,说是因为这个包下载速度太慢,所以取消了下载,国外的网速还是伤不起啊,没关系,反正包的名称都知道了,复制了这个包的名称到百度里去下载,然后使用rpm -ivh来安装,

    8.添加xen开机启动项,就是运行一个脚本,CentOS官网描述这将生成/boot/grub2/grub.cfg;https://wiki.centos.org/zh/HowTos/Xen/Xen4QuickStart

    安装好了之前的包之后,这个脚本就会出现在这个目录:/bin/grub-bootxen.sh,直接执行就行了。

    9.重启服务器,如果都做的没有问题,那么开机选择内核的时候,应该出现下面的画面:

    直接回车启动就行了

    10.检测安装是否成功:

    输入图上所示的命令之后,如果出现了类似的信息,那就是安装好了,然后就看你选择哪种管理工具了。

    11.删除安装时的NAT网卡,建立桥接网卡:

    删除:

    brctl show
    virsh net-list
    virsh net-destroy default
    virsh net-undefine default
    service libvirtd restart

    新建xenbr0:

    [root@localhost ~]# ip add    #查看网卡的名称,我的网卡名称是ens33
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 
     [root@localhost ~]# nmcli con add type bridge con-name xenbr0 ifname xenbr0 autoconnect yes ip4 192.168.249.149/24 gw4 192.168.249.2    #创建xenbr0网卡
    [root@localhost ~]# nmcli con mod xenbr0 ipv4.dns 192.168.249.2    #配置DNS
    [root@localhost ~]# nmcli con modify xenbr0 bridge.stp no    #配置适当的默认值
    [root@localhost ~]# nmcli con modify xenbr0 bridge.hello-time 0
    [root@localhost ~]# nmcli con modify "ens33" connection.master xenbr0 connection.slave-type bridge    #将ens33网卡桥接到xenbr0这块虚拟网卡上
    [root@localhost ~]#systemctl restart network    #重启网络来验证

     ok,使用桥接,来使虚拟机能够获得和物理机相同的网络

    12.使用qemu-img来创建虚拟磁盘文件:qemu-img create -f raw /opt/kvm.raw 10G   raw是老牌的虚拟磁盘格式

    最后:虽然搭建起了xen,但是xend服务不知道为什么找不到,再三检查了软件包的安装也没有解决,使用其建立虚拟机一直失败,找不到原因,我猜测是架构升级,xend的功能被别的进程取代了,在网上找了很长时间后,果然验证了我猜测,在一篇技术文章中找到了:以前旧版本的 xend 已经被 xencommons 替代了,这句话,但xencommons服务和xend一样,在系统中找不到该服务,我猜测xencommons服务又被别的服务取代了,Xen 从 4.1 版本开始引入了新版工具集 xl/libxl,并在后续的版本中逐步替代旧的 xm/xend,在 4.5 版本中已经完全删除了 xm/xend.可惜的是,我在网上找的的资料基本都是七八年前的,自从redhat不再嵌入xen作为自己的默认虚拟化模块后,对xen做研究和支持的资料可用度一落千丈,各位如果找到了原因,欢迎私信我,一起交流进步。

    安装xen后的系统关于xen的服务:

    [root@localhost ftp]# systemctl list-unit-files | grep xen
    proc-xen.mount                                static  
    var-lib-xenstored.mount                       static  
    xen-init-dom0.service                         enabled 
    xen-qemu-dom0-disk-backend.service            enabled 
    xen-watchdog.service                          disabled
    xenconsoled.service                           enabled 
    xendomains.service                            disabled
    xendriverdomain.service                       disabled
    xenstored.service                             disable

    PS:在网上找了virsh的命令行管理,有需要就拿走吧:

    virsh的基本用法如下
    virsh [COMMAND] [ARGS...] 
    另外需要注意的是,virsh提供两种执行模式: "直接模式(Direct Mode)"与"互动模式(Interactive Mode)"。在直接模式里,你必须在Shell中以参数、自变量的方式来执行virsh,如果在互动模式中,则virsh会提供一个提示字符串,你可以在该提示字符串后,输入要执行的命令。如果执行virsh没有指定任何参数或自变量则默认就是进入互动模式。
    与xm一样,COMMAND也是 virsh提供的命令,常用的命令如下:

    virsh常用命令如下:

    命令 说明
    help      显示该命令的说明
    quit      结束 virsh,回到 Shell
    connect  连接到指定的虚拟机服务器
    create    启动一个新的虚拟机
    destroy  删除一个虚拟机
    start    开启(已定义的)非启动的虚拟机
    define    从 XML 定义一个虚拟机
    undefine  取消定义的虚拟机
    dumpxml  转储虚拟机的设置值
    list      列出虚拟机
    reboot    重新启动虚拟机
    save      存储虚拟机的状态
    restore  回复虚拟机的状态
    suspend  暂停虚拟机的执行
    resume    继续执行该虚拟机
    dump      将虚拟机的内核转储到指定的文件,以便进行分析与排错
    shutdown  关闭虚拟机
    setmem    修改内存的大小
    setmaxmem 设置内存的最大值
    setvcpus  修改虚拟处理器的数量

  • 相关阅读:
    appium在Mac上环境搭建
    判断元素的16中方法expected_conditions
    python3条件表达式和字符串
    webdriver的API
    什么是web接口
    python2函数
    python1变量,表达式和语句
    XPath学习
    接口相关概念
    解决jdk1.7,1.8共存问题小思
  • 原文地址:https://www.cnblogs.com/xiaoyuxixi/p/11282433.html
Copyright © 2011-2022 走看看