zoukankan      html  css  js  c++  java
  • KVM虚拟化的安装

    kvm介绍

    一、KVM的历史

    Kvm在2007年2月正式合并Linux2.6.20核心中,成为内核源代码的一部分。2008年9月4日,RedHat公司收购了Qumranet,开始在RHEL中用kvm取代Xen,第一包kvm的版本的是RHEL5.4。从RHEL6开始,kvm成为默认的虚拟化引擎。Kvm必须在具备IntelT或AMD-V功能的X86平台上运行。它也被移植到S/390、PowerPC与IA-64平台上。在Linux内核3.9版中,加入了对ARM架构的支持。

    二、KVM的架构

     KVM的架构非常简单,它其实就是一个内核的模块,用户空间通过QEMU模拟硬件提供给虚拟机使用,一台虚拟机就是一个普通的Linux进程,通过对这个进程管理,就可以完成对虚拟机的管理。

    三、QEMU与KVM

    QEMU是一个开源项目,实际上是一台硬件模拟器,可以在其它平台上运行Linux程序,可以存储及还原虚拟机运行状态,还可以虚拟多种设备,包括网卡、多CPU、IDE设备、软驱、显卡、声卡、多种并口设备、多种串口设备、多种USB设备、PC喇叭、PS/2键盘鼠标(默认)和USB键盘鼠标、蓝牙设备。

    QEMU的优点是因为纯软件模拟,所以可以在支持的平台模拟支持的设备。它的缺点也是因为纯软件模拟,所以非常慢。

    KVM是一个内核模块,没有用户空间和管理工具,KVM的虚拟机可以借助QEMU的管理工具来管理。QEMU也可以借助KVM来加速,提升虚拟机的性能。

    四、Libvirt与KVM

    Libvirt的设计目标是通过相同的方式管理不同的虚拟化引擎,比如KVM、Xen、HyperV、VMware ESX等。但是目前实际上多数场景使用Libvirt的是KVM,而Xen、HyperV、VMware ESX都有各自的管理工具。

    Libvirt可以实现对虚拟机的管理,比如虚拟机的创建、启动、关闭、暂停、恢复、迁移、销毁,以及虚拟机网卡、硬盘、CPU、内存等多种设备的热添加。

    配置安装

    一、 操作系统最小化安装并关闭SELinux、Network Manager和防火墙,并配置主机名、IP地址、DNS解析

    [root@kvm-server ~]# uname -a
    Linux kvm-server 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
    [root@kvm-server ~]# cat /etc/redhat-release 
    CentOS Linux release 7.2.1511 (Core) 
    [root@kvm-server ~]# sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config 
    [root@kvm-server ~]# setenforce 0
    [root@kvm-server ~]# systemctl stop NetworkManager
    [root@kvm-server ~]# systemctl disable NetworkManager
    [root@kvm
    -server ~]# systemctl stop firewalld
    [root@kvm-server ~]# systemctl disable firewalld

    二、安装阿里源EPEL源

    [root@kvm-server ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

    三、安装常用命令

    [root@kvm-server ~]# yum install net-tools vim lrzsz tree screen lsof tcpdump nc mtr nmap openssl-devel ntpdate sysstat -y

    四、查看CPU虚拟化是否打开(能过滤到内容表示开启)

    [root@kvm-server ~]# egrep '(vmx|svm)' /proc/cpuinfo

    五、安装KVM软件包

    [root@kvm-server ~]# yum install qemu-kvm libvirt virt-install -y

    六、启动libvirtd服务

    [root@kvm-server ~]# systemctl start libvirtd
    [root@kvm-server ~]# systemctl enable libvirtd

    七、检查是否安装成功、KVM模块是否载入成功、KVM是否安装成功

    [root@kvm-server ~]# rpm -qa | egrep 'qemu-img|libvirt-[1-9]|virt-install'
    libvirt-3.9.0-14.el7_5.8.x86_64
    qemu-img-1.5.3-156.el7_5.5.x86_64
    virt-install-1.4.3-3.el7.noarch
    [root@kvm-server ~]#  lsmod |grep kvm
    kvm_intel             162153  0 
    kvm                   525259  1 kvm_intel
    [root@kvm-server ~]# virsh -c qemu:///system list
     Id    Name                           State
    ----------------------------------------------------

    八、启动libvirtd后会自动创建一个桥接网卡virbr0

    [root@kvm-server ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    virbr0        8000.5254008deb7b    yes        virbr0-nic
    [root@kvm-server ~]# ifconfig virbr0
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:8d:eb:7b  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    九、手动配置桥接网络

    [root@kvm-server ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0  #修改ifcfg-eth0配置文件
    DEVICE=eth0
    TYPE=Ethernet
    ONBOOT=yes
    BRIDGE=br0
    [root@kvm-server ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0   #修改ifcfg-br0配置文件
    TYPE="Bridge"
    BOOTPROTO="static"
    DEVICE="br0"
    ONBOOT="yes"
    IPADDR=192.168.12.11
    NETMASK=255.255.255.0
    GATEWAY=192.168.12.2
    [root@kvm-server ~]# systemctl restart network                      #重启网络服务
    [root@kvm-server ~]# ifconfig                                       #查看IP是否在br0之上
    br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.12.11  netmask 255.255.255.0  broadcast 192.168.12.255
            inet6 fe80::20c:29ff:fe47:9adf  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:47:9a:df  txqueuelen 0  (Ethernet)
            RX packets 164  bytes 14690 (14.3 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 135  bytes 16092 (15.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            ether 00:0c:29:47:9a:df  txqueuelen 1000  (Ethernet)
            RX packets 99108  bytes 141414905 (134.8 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 39704  bytes 3796748 (3.6 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 0  (Local Loopback)
            RX packets 133  bytes 7864 (7.6 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 133  bytes 7864 (7.6 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
            ether 52:54:00:8d:eb:7b  txqueuelen 0  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    [root@kvm-server ~]# route -n                                        #查看路由表
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.12.2    0.0.0.0         UG    0      0        0 br0
    169.254.0.0     0.0.0.0         255.255.0.0     U     1005   0        0 br0
    192.168.12.0    0.0.0.0         255.255.255.0   U     0      0        0 br0
    192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
    [root@kvm-server ~]# brctl show                                      #查看br0桥接网络
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.000c29479adf    no        eth0
    virbr0        8000.5254008deb7b    yes        virbr0-nic

    十、安装virt-manager图形化管理工具

    [root@kvm-server ~]# yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts -y      #安装图形化界面
    [root@kvm-server ~]# yum install virt-manager tigervnc tigervnc-server libguestfs-tools -y      #安装virt-manager图形化管理工具、vnc连接工具、磁盘管理工具
    [root@kvm-server ~]# vncserver 
    
    You will require a password to access your desktops.
    
    Password:                                                                                       #设置连接VNC的密码
    Verify:
    Would you like to enter a view-only password (y/n)? y
    Password:
    Verify:
    xauth:  file /root/.Xauthority does not exist
    xauth: (stdin):1:  bad display name "kvm-server:1" in "add" command
    
    New 'kvm-server:1 (root)' desktop is kvm-server:1
    
    Creating default startup script /root/.vnc/xstartup
    Creating default config /root/.vnc/config
    Starting applications specified in /root/.vnc/xstartup
    Log file is /root/.vnc/kvm-server:1.log

      [root@kvm-server ~]# netstat -lntp | grep vnc                                                   #5901为VNC服务所监听端口
      tcp 0 0 0.0.0.0:5901 0.0.0.0:* LISTEN 2216/Xvnc
      tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN 2216/Xvnc
      tcp6 0 0 :::5901 :::* LISTEN 2216/Xvnc
      tcp6 0 0 :::6001 :::* LISTEN 2216/Xvnc

    十一、VNC客户端连接

    十二、创建第一台虚拟机

    [root@kvm-server ~]# qemu-img create -f raw /opt/CentOS-7.2-x86_64.raw 40G
    Formatting '/opt/CentOS-7.2-x86_64.raw', fmt=raw size=42949672960 
    [root@kvm-server ~]# virt-install --name CentOS-7.2-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.2-x86_64-DVD-1511.iso --disk path=/opt/CentOS-7.2-x86_64.raw --network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    [root@kvm-server ~]# netstat -lntp | grep qemu-kvm
    tcp        0      0 0.0.0.0:5900            0.0.0.0:*               LISTEN      3232/qemu-kvm  

     端口默认是从5900开始的,60s以内进行连接。

    十三、虚拟机的管理可以使用virt-manager,直接在vnc界面运行virt-manager命令即可。

     总结

    此方法适用于KVM服务器和虚拟机同在一个网段的环境下。

  • 相关阅读:
    jQuery live事件说明及移除live事件方法
    Jquery的html方法里包含特殊字符的处理
    mysql创建定时任务
    MySQL内置函数获取几天前的日期
    实战mysql分区
    TCP的TIME_WAIT状态
    openssl生成SSL证书的流程
    mysql备份的三种方式详解
    mysql创建唯一索引
    MYSQL双机热备份的配置实施(问题总结)
  • 原文地址:https://www.cnblogs.com/cyleon/p/9809663.html
Copyright © 2011-2022 走看看