KVM简介/部署

本文介绍了KVM虚拟化平台的产品简介、环境搭建、网络设置、使用virt-manager管理虚拟机、基本功能管理、磁盘文件管理和克隆/快照功能。详细讲解了如何在Linux服务器上部署KVM,包括NAT和桥接网络配置,以及如何转换和管理KVM磁盘文件格式。

KVM简介/部署

  • 作者:程高翔 邮箱 : 1805361954@qq.com
  • 本文仅为参考,如有任何意见请邮箱告知
  • 本人现在赋闲在家

一.产品简介

  • 公司部分linux服务器利用率不高,为了充分利用这些linux服务器,可以部署kvm虚拟化平台,在物理机上运行多个业务系统(虚拟机),例如,在运行nginx的服务器上部署kvm,然后在虚拟机上运行tomcat,mysql等业务

  • KVM是Kernel Virtual
    Machine的简写,目前linux发行版自带的软件,在64位系统平台运行kvm,同时需要硬件(CPU)支持VT技术,KVM的前身是QWMU,2008年被RedHat收购并获得一项hypervisor的技术,不过RedHat的KVM被认为成为未来的linuhypervisor的主流,准确的来说kvm仅仅是linux内核的一个模块,管理和创建完整的kvm虚拟机需要更多的辅助工具

  • kvm从2.6.20版本后直接整合到linux内核,它依托cpu虚拟化指令集(如lnter-VT
    AMD-V)实现高性能的虚拟化支持,由于linux内核高度整合,因此在性能,安全性,兼容性,稳定性上有很好的实现.在KVM的环境中运行的每个虚拟化操作系统表现为单个系统进程并于linux安全模块(selinux)有很好的整合,可以灵活的实现资源的管理及分配

kvm虚拟化平台硬性条件
1.真机linux必须是64位操作系统,RHEL5.4及以上的系统平台
2.CPU支持VT技术(BIOS中开启)

    **注意:vmware虚拟机中linux开机前需要勾选lnter VT-x/EPT 或者 AMD/RVI(v)**

二.环境搭建

环境:
    主机名  IP地址           内存       CPU
    kvm     192.168.1.22    8G         4核16线程

1.创建虚拟机kvm,内存推荐至少4G,硬盘至少20G

2.查看CPU时候支持虚拟化技术(只要可以筛选出关键之即可)
  inter CPU :  grep vmx /proc/cpuinfo
  AMD CPU   :  grep svm /proc/cpuinfo

3.关闭防火墙
    iptables -F
    systemctl stop firewalld
    setenforce 0

4.安装KVM
    方式一
        在安装系统时选择桌面与虚拟化选项
    方式二
        在已有的系统上安装kvm软件
        在centos7的系统光盘镜像中,已经提供了安装KVM所需的软件,通过部署基于光盘镜像的本地YUM源可节省安装时间.
        
        需要安装的软件
            "GNOME Desktop"   #GNOME桌面环境
             qemu-kvm         #KVM模块
             qemu-kvm-tools   #kvm调试工具,可不安装
             qemu-img         #qemu组件,创建磁盘,启动虚拟机
             bridge-utils     #网络支持工具
             libvirt          #虚拟机管理服务
             virt-manager     #图形界面管理虚拟机

        yum -y groupinstall "GNOME Desktop"
        yum -y install qemu-kvm qemu-kvm-tools qemu-img bridge-utils libvirt virt-manager

5.检测kvm是否安装成功/开启
    root@kvm~$>lsmod | grep kvm     //筛选是否有KVM模块启动
    kvm_intel             183621  0
    kvm                   586948  1 kvm_intel
    irqbypass              13503  1 kvm
    [root@kvm ~] modprobe kvm       //启动kvm模块
    然后继续检查kvm模块是否加载,没有的话检查是否安装完全

三.设置kvm网络

  • 宿主服务器安装完成kvm,首先要设定网络,在libvirt中运行KVM网络有两种方法,NAT和Bridge,默认是NAT

  • 1.用户模式: 即为NAT方式,这种方式是默认网络,数据包由NAT方式通过主机接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络.

  • 2.桥接模式: 这种模式允许虚拟机像一台独立的主机一样拥有网络,外部机器可以直接访问到虚拟机内部,但需要网卡支持,并编辑网卡参数文件以支持桥接.

    桥接设置

     cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-dr0
     
     vim /etc/sysconfig/network-scripts/ifcfg-dr0   
         TYPE="Ethernet"         ---------------->      TYPE="Bridge"
         PROXY_METHOD="none"
         BROWSER_ONLY="no"
         BOOTPROTO="none"
         DEFROUTE="yes"
         IPV4_FAILURE_FATAL="no"
         IPV6INIT="yes"
         IPV6_AUTOCONF="yes"
         IPV6_DEFROUTE="yes"
         IPV6_FAILURE_FATAL="no"
         IPV6_ADDR_GEN_MODE="stable-privacy"
         UUID="6815c9d7-c0b2-491b-8177-ef3fafbab6d2"    //删除uuid
         NAME="ens32"          ------------------->     NAME="dr0"
         DEVICE="ens32"        ------------------->     DEVICE='dr0'
         ONBOOT="yes"
         IPADDR=192.168.1.22
         NETMASK=255.255.255.0
         GATEWAY=192.168.1.2
         DNS1=114.114.114.114
         DNS2=8.8.8.8
     
     echo "BRIDGE=dr0" >> /etc/sysconfig/network-scripts/ifcfg-ens32
     
     systemctl restart network
    
     ifconfig
         dr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                 inet 192.168.1.22  netmask 255.255.255.0  broadcast 192.168.1.255
                 inet6 fe80::64b7:29ff:feaf:3287  prefixlen 64  scopeid 0x20<link>
                 ether 00:0c:29:87:1a:7a  txqueuelen 1000  (Ethernet)
                 RX packets 36  bytes 3823 (3.7 KiB)
                 RX errors 0  dropped 0  overruns 0  frame 0
                 TX packets 55  bytes 8198 (8.0 KiB)
                 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
          ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
                 ether 00:0c:29:87:1a:7a  txqueuelen 1000  (Ethernet)
                 RX packets 22058  bytes 28474268 (27.1 MiB)
                 RX errors 0  dropped 0  overruns 0  frame 0
                 TX packets 9139  bytes 774586 (756.4 KiB)
                 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

四.KVM管理工具virt-manager

  • virt-manager是基于libvirt的图形化虚拟机管理软件,不同版本的virt-manager的界面和操作方法可能不同,是使用kvm虚拟机最简单的方法
    1.加载virt-manager
    virt-manager

    2.创建存储池并创建存储卷
    双击QEMU/KVM–>存储–>新建存储池–>名称"ISO"(文件类型dir)–>目标路径/virtual/ISO–>完成
    双击QEMU/KVM–>存储–>新建存储池–>名称"KVM"(文件类型dir)–>目标路径/virtual/KVM–>完成

    3.创建虚拟机
    (1)上传镜像到ISO目录下
    (2)文件–>新建虚拟机–>本地安装介质(ISO映像或者光驱)(L)–>使用ISO映像(浏览–>选择ISO下的镜像)–>内存cpu按情况分配–>选择或
    创建自定义存储(管理–>KVM–>创建卷需求创建)–>在安装前自定义配置–>选择网络(桥接)–完成
    (3)引导选项(主机引导时启动虚拟机)–>IDS CFROM1 -->连接–>浏览–>选择ISO中的镜像–>开始安装
    (4)按自定义安装

五.KVM基本功能管理

1.查看命令帮助
    root@ms2~$>virsh -h

2.查看kvm的配置文件存放目录(centos7.0.xml是虚拟系统实例的配置文件)
    root@ms2~$>ls /etc/libvirt/qemu
    centos7.0.xml  networks

3.查看虚拟机状态
    root@ms2~$>virsh list --all
    Id    名称                         状态
    ----------------------------------------------------
    4     centos7.0                      running

4.虚拟机的关机与开机,首先确保acpid服务安装并运行,在虚拟机中;
    在实例中安装acpid,镜像中有的
    root@实例~$>yum -y install /mnt/Packages/acpid-2.0.19-9.el7.x86_64.rpm

    1.关机: root@ms2~$>virsh shutdown centos7.0
            域 centos7.0 被关闭
    
    2.强制关机:root@ms2~$>virsh destroy centos7.0
            域 centos7.0 被删除
    
    3.开启: root@ms2~$>virsh start centos7.0
            域 centos7.0 已开始
    
    4.查看实例状态:
        root@ms2~$>virsh list --all
        Id    名称                         状态
        ----------------------------------------------------
        -     centos7.0                      关闭
    
    5.通过配置文件启动虚拟机系统
        root@ms2~$>virsh create /etc/libvirt/qemu/centos7.0.xml
        域 centos7.0 被创建(从 /etc/libvirt/qemu/centos7.0.xml)

    6.挂起虚拟机
        root@ms2~$>virsh suspend  centos7.0
            域 centos7.0 被挂起
    
    7.恢复虚拟机
        root@ms2~$>virsh resume centos7.0
            域 centos7.0 被重新恢复

    8.配置虚拟机实例伴随宿主自动启动
        root@ms2~$>virsh autostart centos7.0
            域 centos7.0标记为自动开始
    
        上述命令将创建/etc/libvirt/qemu/autostart目录,目录内容位开机自动启动系统

    9.导出(备份虚拟机配置文件.xml)
        root@ms2~$>virsh dumpxml centos7.0 > /etc/libvirt/qemu/centos7.0-1.xml
        root@ms2~$>ls /etc/libvirt/qemu
        autostart  centos7.0-1.xml  centos7.0.xml  networks

    10.虚拟机删除与添加
        root@ms2~$>virsh destroy centos7.0
            域 centos7.0 被删除

        root@ms2~$>virsh undefine centos7.0
            域 centos7.0 已经被取消定义
    
    11.修改虚拟机配置信息(用来修改系统内存大小,磁盘文件等信息)
            root@ms2~$>virsh edit centos7.0
              <memory unit='KiB'>6666304</memory>
                <currentMemory unit='KiB'>6666304</currentMemory>
        
        root@ms2~$>ls /etc/libvirt/qemu
            autostart  centos7.0-1.xml  networks
        
        root@ms2~$>ls /virtual/KVM/         
            centos7.0  
        查看centos7.0的配置文件被删除,但是磁盘文件不会被删除
        通过virsh list -all 查看不到centos7.0信息,说明此虚拟机被删除

    11.通过备份配置文件重新定义虚拟机
        root@ms2~$>mv /etc/libvirt/qemu/centos7.0-1.xml /etc/libvirt/qemu/centos7.0.xml
        root@ms2~$>virsh define /etc/libvirt/qemu/centos7.0.xml
            定义域 centos7.0(从 /etc/libvirt/qemu/centos7.0.xml)
            root@ms2~$>virsh list --all
            Id    名称                         状态
            ----------------------------------------------------
            -     centos7.0                      关闭

六.KVM磁盘文件管理

  • 通过文件管理系统可以直接查看,修改,复制虚拟机的内部文件.例如,当系统因为配置问题无法启动时,可以直接修改虚拟机文件.虚拟机文件有raw与qcow2,qed格式,kvm虚拟机默认使用qcow2格式,raw格式性能最好,速度最快,缺点是不支持一些新的功能,如镜像,zlib硬盘压缩,AES加密等(qcow2格式的磁盘存储空间更小,支持AES加密,zlib磁盘压缩),针对两种格式的文件有不同的工具可以选择,这里介绍本地,yum肮脏libguestfs-tools产生命令工具(可以直接读取qcow2格式的磁盘文件),因此需要将raw格式的磁盘文件转换成qxow2格式

    root@ms2~$>yum -y install libguestfs-tools

    1.转换raw格式qcow2格式

     (1)查看磁盘格式
         
         root@ms2/virtual/KVM$>qemu-img info /virtual/KVM/centos7.0
         image: /virtual/kvm/centos7.0
         file format: raw
         virtual size: 10G (10737418240 bytes)
         disk size: 10G
         cluster_size: 65536
         Format specific information:
             compat: 1.1
             lazy refcounts: true
     
     (2)关闭虚拟机
         root@ms2~$>virsh shutdown centos7.0
     
     (3)转换磁盘格式
         root@ms2~$>qemu-img convert -f raw -O qcow2 /virtual/KVM/centos7.0
     
     (4)修改centos7.0配置文件
         root@ms2~$>virsh edit centos7.0
         43       <driver name='qemu' type='qcow2'/>
         44       <source file='/virtual/ISO/centos7.0'/>
    

    2.直接查看磁盘中文件

     root@ms2~$>virt-cat -a /virtual/KVM/centos7.0 /etc/passwd
    

    3.直接修改磁盘中文件

     root@ms2~$>virt-edit -a /virtual/KVM/centos7.0 /etc/passw
    

    4.直接产看虚拟机磁盘信息

     root@ms2~$>virt-df -h /virtual/KVM/centos7.0
    

七.克隆/快照

1.克隆
    克隆是把虚拟机整个再复制出一份,通过克隆可以快速创建一个同样的虚拟机,提高使用效率
  命令格式(没有命令直接yun安装)
    virt-clone -o 源虚拟机 -n 克隆的虚拟机 -f 克隆的虚拟机磁盘镜像路径
        root@ms2~$>virt-clone -o centos7.0 -n centos7.0-2 --file /virtual/KVM/centos7.0-2.qcow2
        正在分配 'centos7.0-2.qcow2'                           |  10 GB  00:00:13

        成功克隆 'centos7.0-2'。
        root@ms2~$>ls /virtual/KVM/
        centos7.0-2.qcow2
    root@ms2~$>virsh start centos7.0-2
    root@ms2~$>virsh list --all
        Id    名称                         状态
        ----------------------------------------------------
        11    centos7.0-2                    running
        -     centos7.0                      关闭

2.快照
    虚拟机要使用镜像功能,磁盘格式必须是qcow2
    快照是将虚拟机系统的某个状态保存起来,通告快照可快速恢复到虚拟机的系统到某个时刻的状态
    (1)创建快照
        root@ms2~$>virsh snapshot-create centos7.0
        已生成域快照 1571986397
    (2)查看快照版本信息
        root@ms2~$>virsh snapshot-current centos7.0
        <domainsnapshot>
        <name>1571986397</name>
    (3).查看快照信息
        root@ms2~$>virsh snapshot-list centos7.0
            名称               生成时间              状态
            ------------------------------------------------------------
            1571986397           2019-10-25 06:53:17 +0000 running
    (4).恢复快照
        root@ms2~$>virsh snapshot-revert centos7.0 1571986397
    (5).删除快照
        root@ms2~$>virsh snapshot-delete centos7.0 1571986397
        已删除域快照 1571986397
    (6).修改快照名称
        root@ms2~$>virsh snapshot-edit centos7.0 --snapshotname 1571986713
            <domainsnapshot>
            <name>1571986713</name>
            <state>running</state>
            <creationTime>1571986713</creationTime>
            <memory snapshot='internal'/>
        把里面的数字编号改成统一的名称

搭建KVM+NFS实现虚拟机动态移动的请下载文档查看
链接:https://pan.baidu.com/s/1OHD-uPhofOOzjZ1L87knQg
提取码:xrek
复制这段内容后打开百度网盘手机App,操作更方便哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值