06月24, 2020

CentOS7使用KVM安装虚拟机

CentOS7使用KVM

说明:

KVM 全称是基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux的一个内核模块,该内核模块使得 Linux变成了一个Hypervisor:它由 Quramnet开发,该公司于 2008年被 Red Hat 收购

  • KVM的整体结构,从GUI到Linux内核,包括以下五个组件:

    1. virt-manager:一个用来管理VM的GUI/CUI用户接口;它使用libvirt api 调用VM的各种功能。

    2. libvirt:一个工具及接口,作为较通用的服务器虚拟化软件,它支持Xen,VMware ESXi/GSX,当然,还有QEMU/KVM。

    3. QEMU:一个和KVM内核模块交互的模拟器,处理多种客户机系统请求如I/O;一个QEMU进程对应一个客户机系统。

    4. KVM内核模块:从狭义上来说,KVM是一个Linux内核模块,处理客户机系统的VM Exits和执行VM Entry指令。

    5. Linux内核:既然QEMU作为一个普通的用户进程运行,相应客户机系统的调度就由Linux内核自己来处理。所有的组件都是开放源码软件(OSS)。

安装

安装环境检测

  • 查cpu是否支持VT
    > egrep '(vmx|svm)' --color=always /proc/cpuinfo
  • 检查内核模块是否加载
    > lsmod | grep kvm
  • 查看Selinux状态
    > sestatus
  • 关闭selinux
    vi /etc/sysconfig/selinux
    SELINUX=disabled 
    reboot

安装KVM相关工具:

> yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python virt-manager libvirt-client virt-install virt-viewer -y

启动livirtd

> systemctl start libvirtd
> systemctl enable libvirtd

宿主机桥接网卡配置

注意:eth0网卡是代称,我实际弄机器时是enp1s0

  • 创建
    > brctl  addbr  br0    #创建网桥
    > brctl  addif  br0 eth0  #把br0和eth0网卡绑定
    > brctl  stp   br0 on    #有关stp协议的
  • 配置

在/etc/sysconfig/network-scripts/创建 ifcfg-br0,内容如下:

DEVICE="br0"
TYPE="Bridge"
BOOTPROTO="static"
PROXY_METHOD="none"
BROWSER_ONLY="no"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="Bridege br0"
UUID="96f8014b-759e-404b-bbb1-499539df1418"
ONBOOT="yes"
IPADDR="192.168.1.200"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1="192.168.1.1"
DNS2="114.114.114.114"
DNS3="8.8.8.8"
IPV6_PRIVACY="no"

修改ifcfg-eth0文件

BOOTRPOTO=none

ifcfg-eth0追加

BRIDGE=br0
  • 重启网络
    > service network restart

创建磁盘空间:

> qemu-img create /srv/data/vm/vfs/vm201.raw 40G

创建虚拟机

  • vnc图像界面 ```bash

    sudo virt-install --connect qemu:///system \

  • n vm201 \ // 虚拟机名称

  • r 4096 \ // 内存大小

  • -vcpus=4 \ // cpu个数

  • -disk path=/srv/data/vm/vfs/vm201.raw \ // 磁盘路径

  • c /srv/data/vm/CentOS-7-x86_64-Minimal-2003.iso \ // 镜像路径

  • -network bridge=br0 \ // 使用桥接网卡

  • -graphics vnc,listen=0.0.0.0 \ // 使用VNC连接

  • -os-type=linux \

  • -noautoconsole \

  • -accelerate \

  • -autostart

    </code></pre></li>
    <li><p>命令行 (未验证)
    ```bash</p>
    <blockquote>
    <p>sudo virt-install --connect qemu:///system  \ </p>
    </blockquote>
    </li>
    <li><p>n vm201 -r 4096 --vcpus=4 \</p>
    </li>
    <li><p>-disk path=/srv/data/vm/vfs/vm201.raw \</p>
    </li>
    <li><p>c /srv/data/vm/CentOS-7-x86_64-Minimal-2003.iso \</p>
    </li>
    <li><p>-network bridge=br0 \</p>
    </li>
    <li><p>-nographics \</p>
    </li>
    <li><p>x console=ttyS0</p>
    <pre><code>
    

复制虚拟机

> virt-clone --connect=qemu:///system -o vm201 -n vm202 -f /srv/data/vm/vfs/vm202.raw

基本命令

查看所有虚拟机列表级状态:
> virsh list --all
查看运行虚拟机列表:
> virsh list
启动虚拟机系统:
> virsh start C1
关闭虚拟机系统:
> virsh shutdown C1
重启虚拟机:
> virsh reboot C1
强行关闭某虚拟机:
> virsh destroy C1
标记虚拟机为自动开始:
> virsh autostart C1
关闭虚拟机为自动开始:
> virsh autostart --disable C1
连接终端虚拟机:
> virsh console C1
挂起虚拟机:
> virsh suspend  C1
恢复虚拟机:
> virsh resume C1
编辑虚拟机配置文件:
> virsh edit c1
导出(备份)虚拟机XML配置文件:
> virsh dumpxml c1 > /root/c1_dump_xml 
使用virsh define 命令将重新定义新的虚拟机
> virsh define vm94.xml         

1:关闭该虚拟机:
> virsh shutdown c1
2:如果虚拟机关闭失败,可以强制关机:
> virsh destroy c1
3:Undefine 虚拟机配置:
> virsh undefine c1
4:删除虚拟机磁盘文件:
> rm -rf /vdir/c1.raw
5:查看虚拟机信息:
> virsh dominfo centos7

场景

重命名虚拟机

  1. 终端命令行下查看虚拟机

    > virsh list

    Id Name State

    4 vmserver004 running 5 vmserver003 running 6 vmserver005 running

  2. 关闭虚拟机(也可以直接在Webvirtmgr平台界面里关闭)

    > virsh shutdown vmserver003
  3. 导出xml文件

    > cd /etc/libvirt/qemu
    > ls
    networks vmserver003.xml vmserver004.xml vmserver005.xml
    > virsh dumpxml vmserver003 > test-kevin.xml
    > ls
    networks test-kevin.xml vmserver004.xml vmserver005.xml
  4. 编辑里面的vmserver003全部替换成test-kevin

    > sed -i 's/vmserver003/test-kevin/g' test-kevin.xml
  5. 重定义

    > virsh undefine vmserver003
    > virsh define test-kevin.xml

若有修改img也将文件重命名下如:

> vim test-kevin.xml #将里面使用的img镜像文件名也可以重命名(文件里有镜像文件路径)
  1. 启动虚拟机

    > virsh start test-kevin
  2. 重命名后查看(到webvirtmgr平台界面里查看,vmserver003虚拟机名称也已经修改过来了)

    > virsh list
    Id Name State

4 vmserver004 running 5 test-kevin running 6 vmserver005 running


###  连接虚拟机

virsh console vm201 ```

本文链接:http://www.reesun.xyz/post/CentOS7-KVM.html

-- EOF --

Comments