zoukankan      html  css  js  c++  java
  • KVM

    一、KVM简介

    1、概念

    KVM,基于内核的虚拟机(英语:Kernel-based Virtual Machine,缩写为 KVM),是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。

    KVM在2007年2月被导入Linux 2.6.20核心中,以可加载核心模块的方式被移植到FreeBSD及illumos上。

    KVM在具备Intel VT或AMD-V功能的x86平台上运行。它也被移植到S/390,PowerPC与IA-64平台上。在Linux内核3.9版中,加入ARM架构的支持。

    KVM目前由Red Hat等厂商开发,对CentOS/Fedora/RHEL等Red Hat系发行版支持极佳。

    2、关于KVM

    KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。

    是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。

    它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

    KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。

    KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)同时KVM还能够使用ksm技术帮助宿主服务器节约内存。

    在主流的Linux内核,如2.6.20以上的内核均已包含了KVM核心。

    二、设置本地虚拟机环境

    1、设置大一些的内存

    2、修改处理器配置,添加虚拟化引擎(必须要设置)

    三、安装KVM所需依赖

    1、查看是否存在vmx,存在才能安装kvm虚拟机:grep -E "(vmx|svm)" /proc/cpuinfo

    2、查看kvm相关工具包:yum list | grep kvm

    3、安装kvm工具包:yum install -y qemu-kvm qumu-kvm-tools libvirt virt-install bridge-utils

    4、安装工具包完成之后:设置开机自启动

    systemctl start libvirtd

    systemctl enable libvirtd

    5、执行ifconfig命令:会发现kvm帮你自动创建了一个virbr0的桥接网卡,其中,192.168.122.1地址是不变的

    四、创建kvm虚拟机

    1、首先下载Centos7镜像,方便后面安装镜像使用

    wget -c https://mirrors.aliyun.com/centos-vault/7.1.1503/isos/x86_64/CentOS-7-x86_64-DVD-1503-01.iso

    2、使用tigthVNC工具连接,需要下载此工具:

    下载地址:https://www.tightvnc.com/download.php

    选择:Installer for Windows (64-bit

    安装:

    3、创建虚机镜像:qemu-img create -f raw /opt/CentOS-7-x86_64.raw 10G

     

    4、安装虚虚机(注意磁盘和镜像的路径):virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 2048 --cdrom=/opt/CentOS-7-x86_64-DVD-1503-01.iso --disk path=/opt/CentOS-7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

    6、安装操作系统:

    用TightVNC工具连接:

    跳出界面:移动方向键上下键选择第一个,然后按Tab键,下方出现一行内容,空一格在后面输入 net.ifnames=0 biosdevname=0

    (注意:如果连接失败,需要关闭防火墙再次进行连接:systemctl stop firewalld)

    以下步骤参照此文档进行安装:https://www.cnblogs.com/zhangguosheng1121/p/13521108.html

    以上kvm虚拟机就安装成功。

    安装成功之后,此时虚拟机是关闭的状态,不能通过TightVNC连接访问,需要开启虚机,然后再次进行TightVNC连接

    五、虚机联网

    1、查看所有虚拟机:virsh list --all

    2、开启虚拟机:virsh start 虚拟机名称

    3、TightVNC连接虚拟机,查看ip

    4、设置DNS,联网

    修改配置文件:vi /etc/sysconfig/network-scripts/ifcfg-eth0

    重启网络:systemctl restart network

    查看系统分配的ip:

    修改DNS:vi /etc/resolv.conf

    查看是否可以上网:ping baidu.com

    安装工具:yum install net-tools

    六、kvm虚拟机console登录

    1、在虚机内操作:用tightVNC连接进入虚拟机

    [root@kvm ~]# grubby --update-kernel=ALL --args="console=ttyS0,115200n8" 
    [root@kvm ~]# reboot     # 重启

    2、在宿主机内操作

    [root@admin ~]# virsh console CentOS-7-x86_64
    Connected to domain CentOS-7-x86_64
    Escape character is ^]
    
    CentOS Linux 7 (Core)
    Kernel 3.10.0-229.el7.x86_64 on an x86_64
    
    zgskvm login: root
    Password: 
    Last failed login: Fri Jul 24 08:34:51 CST 2020 on ttyS0
    There was 1 failed login attempt since the last successful login.
    Last login: Thu Jul 23 17:55:36 on ttyS0

    报错解决:

    退出虚拟机:快捷键: ctrl+]

    七、virsh基本命令

    虚拟机管理常用命令

    1、备份虚机:virsh dumpxml 虚机名称 > 备份文件名字

    2、关闭虚机:virsh shutdown 虚机名称

    大前提:使用shutdown关闭虚拟机时,kvm虚拟机需要安装acpid服务,注意是在虚拟机里面安装,不是在宿主机上。

    yum install -y acpid
    service acpid start

    强制关机虚拟机:virsh destroy 虚拟机名称

    3、删除虚机:virsh undefine 虚机名称

    4、恢复虚机:virsh define 备份文件

     5、暂停虚机与恢复暂停的虚机:

    6、设置虚拟机自启动:virsh autostart 虚拟机名称

    7、关闭虚拟机自启动:virsh auotstart --disable 虚拟机名称

    8、获取当前路径:virsh pwd

     9、查看kvm虚拟机vnc端口号:virsh vncdisplay CentOS-7-x86_64

     10、虚拟机xml配置文件路径:/etc/libvirt/qemu

     11、虚拟机默认磁盘路径:/var/lib/libvirt/images,当然可以自己定义磁盘存放路径

    八、KVM存储池和存储卷管理

    默认储存池路径:/var/lib/libvirt/images

     创建基于文件夹的储存池(目录)

    定义储存池与其目录:virsh pool-define-as vmdisk --type dir --target /data/vmfs

    创建已定义的储存池:virsh pool-build vmdisk

    查看已定义的储存池(储存池没有激活无法使用):virsh pool-list --all

    激活并自动启动已经定义的储存池:

    激活: virsh pool-start vmdisk

    自启动: virsh pool-autostart vmdisk

    在储存池中创建储存卷: virsh vol-create-as vmdisk 01_CCJ.qcow2 2G --format qcow2

     

    删除储存池中创建的储存卷: virsh vol-delete --pool vmdisk 01_CCJ.qcow2

    关闭储存池:virsh pool-destroy vmdisk

     

    获取储存池:virsh pool-list --all

    获取储存池信息:virsh pool-info opt

    删除储存池:virsh pool-delete vmdisk

    取消定义的储存池:virsh pool-undefine vmdisk

    获取储存池uuid:virsh pool-uuid vmdisk

    编辑储存池配置:virsh pool-edit vmdisk

    九、KVM虚拟机磁盘、快照与克隆

    1、磁盘镜像文件格式

    raw:原始格斯,性能最好,但是不支持快照,创建时会立刻分配空间,不管有没有用到这么多的空间

    qcow2:性能上不如raw,但是可以支持快照。创建时只是承诺给你分配空间,只有当你需要空间的时候,才会给你空间,最多只会给你承诺空间的大小,这样可以避免空间浪费

    cow(copy on write-写时拷贝)

    2、磁盘管理

    查看已经创建磁盘信息:qemu-img info CentOS-7-x86_64.raw

    检查磁盘有没有问题:qemu-img check CentOS-7-x86_64.qcow2

    创建一块qcow2格式的虚拟硬盘:qemu-img create -f qcow2 /opt/CentOS-7-x86_64.qcow2 10G

    raw转qcow2格式:(需要注意磁盘镜像文件的路径,转换之前需要创建一块qcow2格式的磁盘,如上)

    qemu-img convert -f raw -O qcow2 CentOS-7-x86_64.raw CentOS-7-x86_64.qcow2

    转换完成之后,需要更改此虚拟机的配置文件,编辑:virsh edit CentOS-7-x86_64,如下:

     

    注意:修改之后需要重新启动kvm虚拟机

    这样就完成了格式的转换,方便进行快照等一系列操作。

    3、快照管理(raw格式无法创建快照,安装时是raw格式,需要转换成qcow2格式,参照上述方法转换格式)

    查看快照命令:virsh --help | grep snap

    创建快照:virsh snapshot-create CentOS-7-x86_64

    查看主机快照列表:virsh snapshot-list  CentOS-7-x86_64

    查看快照信息: virsh snapshot-info CentOS-7-x86_64 --snapshotname  1595568232

    还原快照: virsh snapshot-revert CentOS-7-x86_64 --snapshotname 1595568708

    删除快照:virsh snapshot-delete CentOS-7-x86_64 --snapshotname  1595568232

    查看快照配置文件位置:cd /var/lib/libvirt/qemu/snapshot

    4、kvm虚拟机克隆

    复制一个虚拟机,需修改如 MAC 地址,名称等所有主机端唯一的配置。虚拟机的内容并没有改变:virt-clone 不修改任何客户机系统内部的配置,它只复制磁盘和主机端的修改。

    virt-clone -o CentOS-7-x86_64 -n CentOS-7 -f /var/lib/libvirt/images/CentOS-7.qcow2

    注:-o:original 后面跟要克隆的虚拟机名字

      -n:name 克隆后虚拟机的名字

      -f:file 指定镜像存放的路径

    查看原虚拟机与克隆之后的虚拟机xml文件的不同:

     

    十、kvm虚拟机网络管理:设置桥接

    1、设置桥接网络

    [root@kvm-test ~]# systemctl stop NetworkManager     # 停止此服务
    [root@kvm-test ~]# virsh iface-bridge ens33 br0      # 执行此命令时,若提示以下信息,不用在意,因为其已经存在了
    使用附加设备 br0 生成桥接 ens33 失败
    已启动桥接接口 br0
    Created bridge br0 with attached device ens33 Bridge interface br0 started

    2、查看宿主机网桥:eth0绑定到br0上

    3、查看配置文件

    cat /etc/sysconfig/network-scripts/ifcfg-eth0

    DEVICE=eth0
    ONBOOT=yes
    BRIDGE="br0"
    NM_CONTROLLED=no
    TYPE=Ethernet

    cat /etc/sysconfig/network-scripts/ifcfg-br0

    DEVICE="br0"
    ONBOOT="yes"
    TYPE="Bridge"
    BOOTPROTO="none"
    IPADDR="10.0.0.200"
    NETMASK="255.255.255.0"
    GATEWAY="10.0.0.2"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    DHCPV6C="no"
    STP="on"
    DELAY="0"
    BOOTPROTO=static
    NM_CONTROLLED=no

    4、修改kvm虚拟机网络配置:改成桥接模式

    virsh edit CentOS-7-x86_64

    5、修改kvm虚拟机网卡配置文件:vnc登录进去

    vi /etc/sysconfig/network-scripts/ifcfg-eth0

    TYPE=Ethernet
    BOOTPROTO=static
    DEFROUTE=yes
    PEERDNS=no
    PEERROUTES=yes
    IPV4_FAILURE_FATAL=no
    #IPV6INIT=yes
    #IPV6_AUTOCONF=yes
    #IPV6_DEFROUTE=yes
    #IPV6_PEERDNS=yes
    #IPV6_PEERROUTES=yes
    #IPV6_FAILURE_FATAL=no
    NAME=eth0
    #UUID=4a1784c8-64bd-43c4-bc17-fe080d6d788c
    DEVICE=eth0
    ONBOOT=yes
    IPADDR=10.0.0.60
    NETMASK=255.255.255.0
    GATEWAY=10.0.0.2
    DNS1=8.8.8.8
    DNS2=114.114.114.114

    重启网络:systemctl restart network

    测试:可以ping通网关,可以访问百度,可以使用secureCRT进行连接,则虚拟网桥搭建成功。

     十一、安装virt-manager

    https://www.cnblogs.com/zhangguosheng1121/p/13521108.html

    十二、执行python脚本

    #bin/bash
    import libvirt
    conn = libvirt.open("qemu:///system")     
    
    for id in conn.listDomainsID():
            dom = conn.lookupByID(id)
            infos = dom.info()
            print ''
            print 'ID = %d'%id
            print 'Name = %s'%dom.name()
            print 'Statu = %d' %infos[0]
            print ''

  • 相关阅读:
    bottle support gb2312
    solr 1.4.0 multi core deploy
    view file encoding on ubuntu
    bottle support gb2312
    multicore solr deploy process(not complete)
    SOLR Performance Benchmarks – Single vs. Multicore Index Shards
    ubuntu查看进程占用端口命令
    seo
    ubuntu不能更新包
    bdb虽好,不要忘了monetDB哦
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/13355625.html
Copyright © 2011-2022 走看看