• (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)


    在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机
    前提:服务器端安装桌面版的centos系统
    CentOS Linux release 7.5.1804 (Core)
     

     
    (1)
    检测是否支持KVM
    KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
    cat /proc/cpuinfo | egrep 'vmx|svm
     

     
    (2)关闭SELinux,将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
    [root@healthserver ~]# nano /etc/sysconfig/selinux

     
    (3)最小安装的CentOS安装一些最基本的包(可选项,因为我是刚安装好的CentOS,所以为了下面方便点,先把一些必要的工具安装下)
    yum install epel-release net-tools vim unzip zip wget ftp -y
    # 安装 kvm 基础包# ------------------------
    yum -y install kvm
    # 安装 kvm 管理工具# ------------------------
    yum -y install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
    # qemu-kvm: KVM模块
    # pyhon-virtinst: 包含python模块和工具(virt-install,virt-clone和virt-image),
    # 用于安装和克隆虚拟机使用libvirt。 它完全支持paravirtulized客人和客人虚拟客人。
    # 支持的虚拟机管理程序是Xen,qemu(QEMU)和kvm# libvirt: 虚拟管理模块# virt-manager: 图形界面管理虚拟机
    # libguestfs* : virt-cat等命令的支持软件包
    # 重启宿主机,以便加载 kvm 模块# ------------------------
    reboot(也可不重启)
    # 查看KVM模块是否被正确加载
    [root@healthserver ~]# lsmod | grep kvm
    kvm_intel 174841 0
    kvm 578518 1 kvm_intel
    irqbypass 13503 1 kvm
     
    =========================================================
    如果没有加载,运行以下命令:
    [root@kevin ~]# modprobe kvm
    [root@kevin ~]# modprobe kvm-intel
    [root@kevin ~]# lsmod | grep kvm
    kvm_intel 170086 0
    kvm 566340 1 kvm_intel
    irqbypass 13503 1 kvm
    =========================================================
    内核模块导出了一个名为/dev/kvm的设备,这个设备将虚拟机的的地址空间独立于内核或者任何应用程序的地址空间。
    [root@kevin ~]# ll /dev/kvm
    crw-rw-rw-. 1 root kvm 10, 232 1月 29 11:56 /dev/kvm
     

     
    (4)开启kvm服务,并且设置其开机自动启动
     
    systemctl start libvirtd.service
    systemctl enable libvirtd.service
     
    查看状态操作结果,如下图所示,说明运行情况良好
    systemctl status libvirtd
    查看状态操作结果,如Active: active (running),说明运行情况良好
    systemctl is-enabled libvirtd
     

    (5)
    安装虚拟机
    安装前要设置环境语言为英文LANG="en_US.UTF-8",如果是中文的话某些版本可能会报错。CentOS 7 在这里修改 /etc/locale.conf。这一步可不做,如果有影响在做。
     
    如果没有brctl命令(用来管理网桥的工具),则需要安装bridge-utils ,
    [root@healthserver ~]# yum -y install bridge-utils
     
    然后为centos7配置网卡,由于我们安装的是centos桌面版系统,因此这一步可在服务器端图形界面进行设置,命令行也可以进行设置,此处我们不谈。
     
    安装 epel 源
    [root@healthserver ~]# yum install epel-release
     
    libvirt是管理虚拟机的API库,不仅支持KVM虚拟机,也可以管理Xen等方案下的虚拟机。
     
    [root@healthserver ~]# yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer qemu-kvm
     
    因为我的主机是服务器,没有图形化界面,想要用virt-manager图形化安装虚拟机,还需要安装X-window。
     
    [root@healthserver ~]# yum install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils
     
    开启libvirt服务
    [root@healthserver ~]# cd /etc/yum.repos.d/
    [root@healthserver yum.repos.d]# service libvirtd start
     
    至此,前期准备已经完成,下面开始安装虚拟机
     
     
     
    检查模块是否有加载
    [root@healthserver ~]# virsh -c qemu:///system
    安装桥接管理的工具
    yum install bridge-utils
    安装 GUI 的管理软件
    yum install virt-manager
     
     
     
    [root@healthserver ~]# /usr/libexec/qemu-kvm -version
    QEMU emulator version 1.5.3 (qemu-kvm-1.5.3-156.el7_5.5), Copyright (c) 2003-2008 Fabrice Bellard
     
     
    系统配置虚拟机管理工具VNC
     
    使用virt-manager gui工具vncserver(服务器端)+vncviewerwindows客户端)管理KVM
     
     
    服务器端linux安装vncserver;
    [root@healthserver ~]# yum install tigervnc-server -y
     
    安装完毕后输入“vncserver”启动VNC。
    [root@healthserver tmp]# vncserver
    xauth: (stdin):1: bad display name "healthserver:1" in "add" command
    New 'healthserver:1 (root)' desktop is healthserver:1
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/healthserver:1.log
    注意:启动后将自动在root/.vnc目录下创建xstartup文件。
    输入“vncpasswd”并按回车键确定,开始输入VNC访问密码并按回车键确定。
    密码为Elecspn
    输入“netstat -tlup | grep vnc”查看VNC使用端口。
    注意:VNC访问默认监听如下3个TCP端口:
    RFB(Remote FrameBuffer)协议 默认端口 : 5900+显示器号
    HTTP协议默认端口 : 5800+显示器号
    X协议 默认端口 : 6000+显示器号
    [root@healthserver tmp]# netstat -tlup | grep vnc
    tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 41343/Xvnc
    tcp 0 0 0.0.0.0:cpdlc 0.0.0.0:* LISTEN 39708/Xvnc
    tcp 0 0 0.0.0.0:fis 0.0.0.0:* LISTEN 40578/Xvnc
    tcp6 0 0 [::]:5901 [::]:* LISTEN 41343/Xvnc
    tcp6 0 0 [::]:cpdlc [::]:* LISTEN 39708/Xvnc
    tcp6 0 0 [::]:fis [::]:* LISTEN 40578/Xvnc
    输入“iptables -I INPUT -p tcp --dport 5901 -j ACCEPT”添加5901端口到iptables,同理可添加5908 5909等端口(如果有)。
     
    输入“systemctl restart iptables.service”重启iptables服务(不建议停止)。
    确认iptables重启无误后输入“service iptables save”保存。
     
    客户端windows安装vncviewer;
    安装省略
     
    在执行:
    [root@healthserver ~]# virt-manager
     
    自动跳出vnc viewer操作界面,
    Windows里面的VNC Viewer软件
    “VNC Server”框里面输入服务器地址+端口:192.168.1.213:5901
    “name”填写centos登录用户名root
    注意:数字由第五步server.ytyzx.org:1确定,本例中为1。 1对应5901端口,以此类推9对应5909端口,如超过100则需使用完整端口号。
     
    接续输入密码就可完成远程登录。
     
     
    当我们推出vnc并重新登录时,执行步骤:
     
     
    [root@healthserver ~]# vncserver
     
    New 'healthserver:4 (root)' desktop is healthserver:4
     
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/healthserver:4.log
     
    表明此时端口号变为5904 ,不是之前的5901
    则VNC Server的地址变为:192.168.1.213:5904 密码Elecspn
     

     
    (6)在远程桌面中使用KVM创建虚拟机
     
    启动服务
    service libvirtd start
    输入命令brctl show 显示一下信息表示OK
     
    [root@healthserver ~]# brctl show
    bridge name bridge id STP enabled interfaces
    virbr0 8000.525400dd3c25 yes virbr0-nic
     
    输入命令,启动kvm图形化管理界面,进行虚拟机的创建。
    [root@healthserver ~]# virt-manager
     
    在centos服务器端,则可进入kvm图形化管理界面。
     
     
     
    选择好Ubuntu16.04桌面版的iso镜像文件(自己放进去),
     
    设置虚拟机属性:
     
     
     
    已有的存储卷容量不满足我们的存储要求,则新建存储池,如下:
     
    [root@healthserver mapper]# virsh -c qemu:///system
    欢迎使用 virsh,虚拟化的交互式终端。
     
    输入:'help' 来获得命令的帮助信息
    'quit' 退出
     
    virsh # pool-list
    名称 状态 自动开始
    -------------------------------------------
    default 活动 是
    xlp 活动 是
     
     
    查看某一存储池的具体信息(以XML形式存在)
     
    virsh # pool-dumpxml xlp <pool type='dir'>
    <name>xlp</name>
    <uuid>ed5c8657-35ba-479d-80a3-27c03b7ec445</uuid>
    <capacity unit='bytes'>53660876800</capacity>
    <allocation unit='bytes'>16004517888</allocation>
    <available unit='bytes'>37656358912</available>
    <source> </source>
    <target>
    <path>/run/media/root/26f7078f-03f7-4e54-9142-66dc4e38a137/opt/xlp</path> <permissions>
    <mode>0755</mode>
    <owner>0</owner>
    <group>0</group>
    <label>unconfined_u:object_r:usr_t:s0</label>
    </permissions>
    </target>
    </pool>
     
     
    查看具体信息,结果类似于解析上面的XML:
     
    virsh # pool-info xlp
    名称: xlp
    UUID: ed5c8657-35ba-479d-80a3-27c03b7ec445
    状态: running
    持久: 是
    自动启动: 是
    容量: 49.98 GiB
    分配: 14.91 GiB
    可用: 35.07 GiB
     
    上述存储池大小不够!
    创建一个新的存储池
    这里仿照上面的XML文件,编写一个命为kvmstorage的XML文档,内容如下[位于/home/poolB]
    此处省略,换用kvm图形化界面进行创建。步骤如下:
    因为自带的存储池容量不足,所以选择“选择或创建自定义存储”选项。
     
     
    名字取为“kvmstorage”。类型如下图所示。
     
    目标路径选择硬盘中容量较大的,
     
    在该硬盘目录下创建文件夹“kvmstorage”,以后数据都存储在该文件夹下。
     
     
     
     
    此时就创建成功,查看:
    [root@healthserver mapper]# virsh -c qemu:///system
    欢迎使用 virsh,虚拟化的交互式终端。
     
    输入:'help' 来获得命令的帮助信息
    'quit' 退出
     
    virsh # pool-info kvmstorage
    名称: kvmstorage
    UUID: ee843e5f-cf47-4502-a3f1-55c6d11548d9
    状态: running
    持久: 是
    自动启动: 是
    容量: 14.49 TiB
    分配: 3.62 GiB
    可用: 14.48 TiB
     
    virsh #
     
     
    现在在kvmstorage存储池下创建分存储卷,点击“+”,创建存储卷kvm1,设置如下
     
     
     
     
     
     
    现在正式进入Ubuntu16.04桌面版的安装过程。
    按照步骤进行安装即可。
    注:如果安装时你选的镜像文件时Ubuntu16.04 的server版本的话,安装时几乎每一步都直接默认即可,安装语言默认英文,不要选中文,否则安装不成功!)
     
     
     

     
    (7)重新打开KVM并创建虚拟机
     
    在vnc远程界面的命令行中输入:
     
    [root@healthserver ~]# virt-manager
    弹出kvm界面。
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    .NET简谈插件系统开发模式
    .NET实现之(自动更新)
    .NET简谈互操作(二:先睹为快)
    .NET实现之(WebBrowser数据采集—基础篇)
    .NET简谈设计模式之(观察者模式)
    .NET简谈平台大局观
    .NET实现之(简易ORM)
    .NET简谈面向接口编程
    .NET简谈事件与委托
    .NET实现之(WebBrowser数据采集—终结篇)
  • 原文地址:https://www.cnblogs.com/dengyungao/p/9572347.html
Copyright © 2020-2023  润新知