zoukankan      html  css  js  c++  java
  • KVM初始篇

    KVM简介:

        KVM(Kernel-Based Virtual Machines)是一个基于Linux内核的虚拟化技术, 可以直接将Linux内核转换为Hypervisor(系统管理程序)从而使得Linux内核能够直接管理虚拟机, 直接调用Linux内核中的内存管理、进程管理子系统来管理虚拟机

    二 安装KVM

    提前准备下载:https://www.tightvnc.com/download/2.8.11/tightvnc-2.8.11-gpl-setup-64bit.msi

    2.1.1 检查系统是否支持虚拟化(可在bios开启)

    [root@centos7 ~]# cat /proc/cpuinfo | grep -E '(vmx|svm)'
    flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat
    flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid mpx rdseed adx smap clflushopt xsaveopt xsavec arat

    2.1.2 安装所需插件

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

    2.1.3 启动libvirtd

    [root@centos7 ~]# systemctl start libvirtd
    [root@centos7 ~]# systemctl status libvirtd
    ● libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
       Active: active (running) since 四 2018-09-06 11:01:34 CST; 3h 38min ago

    2.1.4创建raw格式磁盘,(提前上传iso文件到服务器自定目录即可)

    [root@centos7 opt]# qemu-img create -f raw /kvmimg/CentOS-7-x86_64.raw 10G
    Formatting '/kvmimg/CentOS-7-x86_64.raw', fmt=raw size=10737418240 
    [root@centos7 opt]# ls -l /kvmimg/CentOS-7-x86_64.raw 
    -rw-r--r-- 1 root root 10737418240 9月   6 12:16 /kvmimg/CentOS-7-x86_64.raw

    2.1.4 创建一个虚拟机 类型:kvm 名称:CentOS-7-86_64 指定cpu:2  内存:1024 指定安装盘路径 指定磁盘文件 指定网络:default 启用vmc监听本机0.0.0.0 不要自动尝试连接到客户端控制台

    [root@centos7 opt]# virt-install --virt-type kvm --name CentOS-7-86_64 --ram 1024 --vcpus 2 --cdrom=/opt/CentOS-7-x86_64-DVD-1708.iso --disk path=/kvmimg/CentOS-7-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole

    开始安装......
    域安装仍在进行。您可以重新连接
    到控制台以便完成安装进程。

    2.1.5 使用vnc客户端安装系统

     按照步骤安装就好,最后重启

    客户端查看

    [root@centos7 ~]# virsh list --all
     Id    名称                         状态
    ----------------------------------------------------
     -     CentOS-7-1-86_64               关闭
    
    [root@centos7 ~]# virsh start CentOS-7-1-86_64
    域 CentOS-7-1-86_64 已开始
    
    [root@centos7 ~]# virsh list 
     Id    名称                         状态
    ----------------------------------------------------
     2     CentOS-7-1-86_64               running

    KVM管理篇

    KVm管理基于libvirtd软件实现
    #列出虚拟机
    [root@centos7 ~]# virsh list --all
    #启动虚拟机
    [root@centos7 ~]# virsh start Centos7
    #停止虚拟机(可能需要安装 acpi 服务)
    [root@centos7 ~]# virsh shutdown Centos7
    #备份虚拟机(如果磁盘删除了就不能恢复了)
    [root@centos7 ~]# virsh dumpxml Centos7 > /centos7-back.xml
    #删除虚拟机(需要在删除磁盘文件)
    [root@centos7 ~]# virsh undefine Centos7
    #删除恢复虚拟机要提前dumoxml备份
    [root@centos7 ~]# virsh define /centos7-back.xml
    #暂停挂起
    [root@centos7 ~]# virsh suspend Centos7
    #恢复
    [root@centos7 ~]# virsh resume Centos7
    #修改配置文件
    [root@centos7 ~]# virsh edit Centos7
     

    创建一个桥接网卡

    [root@centos7 ~]# rpm -q bridge-utils
    bridge-utils-1.5-9.el7.x86_64
    #创建一个br0桥接网卡
    [root@centos7 ~]# brctl addbr br0
    [root@centos7 ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.000000000000    no        
    virbr0        8000.52540088b297    yes        virbr0-nic
                                vnet0
    #br0网卡绑定在本地网卡上(此操作ssh会断链,如果用ssh连接可以写成脚本执行)
    [root@centos7 ~]# brctl addif br0 ens33
    [root@centos7 ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.000c29e23300    no        ens33
    virbr0        8000.52540088b297    yes        virbr0-nic
                                vnet0
    [root@centos7 ~]# ip addr del eth0 192.168.10.252/24
    Error: any valid prefix is expected rather than "eth0".
    [root@centos7 ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.000c29e23300    no        ens33
    virbr0        8000.52540088b297    yes        virbr0-nic
                                vnet0
    #删除ens33网卡地址
    [root@centos7 ~]# ip addr del dev ens33 192.168.10.252/24
    #配置br0网络信息,并启动
    [root@centos7 ~]# ifconfig br0 192.168.10.252/24 up
    [root@centos7 ~]# route add default gw 192.168.10.1

    修改KVm虚拟机为桥接网卡

    #自动生成的xml文件,虚拟机相关配置
    /etc/libvirt/qemu/CentOS-7-1-86_64.xml
    #修改配置
    [root@centos7 ~]# virsh edit CentOS-7-1-86_64
    <interface type='network'>
    修改为:<interface type='bridge'>
    <source network='default'/>
    修改为:<source bridge='br0'/>
    #启动虚拟机
    [root@centos7 ~]# virsh list --all
     Id    名称                         状态
    ----------------------------------------------------
     -     CentOS-7-1-86_64               关闭
    
    [root@centos7 ~]# virsh start CentOS-7-1-86_64 
    域 CentOS-7-1-86_64 已开始

     #设置CPU动态扩容

    [root@centos7 ~]# virsh edit CentOS-7-1-86_64
      <vcpu placement='static'>1</vcpu>
    #修改为动态扩容,当前一个cpu最大四个cpu
      <vcpu placement='auto' current="1">4</vcpu>
    [root@centos7 ~]# virsh setvcpus CentOS-7-1-86_64 3 --live
    [root@centos7 ~]# virsh dominfo CentOS-7-1-86_64
    Id:             4
    名称:       CentOS-7-1-86_64
    UUID:           d9f7da32-6b1a-4f1d-b5f1-a5cf1f148f79
    OS 类型:    hvm
    状态:       running
    CPU:          3
    CPU 时间:   37.5s
    最大内存: 1048576 KiB
    使用的内存: 1048576 KiB
    持久:       是
    自动启动: 禁用
    管理的保存: 否
    安全性模式: none
    安全性 DOI: 0
    
    #cpu删除
    [root@centos7 ~]# virsh setvcpus --config CentOS-7-1-86_64 
    1
    
    [root@centos7 ~]# virsh destroy CentOS-7-1-86_64
    域 CentOS-7-1-86_64 被删除
    
    [root@centos7 ~]# virsh start CentOS-7-1-86_64
    域 CentOS-7-1-86_64 已开始
    
    [root@centos7 ~]# virsh dominfo CentOS-7-1-86_64
    Id:             7
    名称:       CentOS-7-1-86_64
    UUID:           d9f7da32-6b1a-4f1d-b5f1-a5cf1f148f79
    OS 类型:    hvm
    状态:       running
    CPU:          1
    CPU 时间:   4.3s
    最大内存: 1048576 KiB
    使用的内存: 1048576 KiB
    持久:       是
    自动启动: 禁用
    管理的保存: 否
    安全性模式: none
    安全性 DOI: 0

    #设置内存扩容

    [root@centos7 ~]# virsh edit CentOS-7-1-86_64
      <memory unit='KiB'>1048576</memory>
    修改为:
      <memory unit='KiB'>4048576</memory>
    #当前内存

      <currentMemory unit='KiB'>1048576</currentMemory>

    
    [root@centos7 ~]# virsh shutdown CentOS-7-1-86_64
    域 CentOS-7-1-86_64 被关闭
    [root@centos7 ~]# virsh start CentOS-7-1-86_64
    域 CentOS-7-1-86_64 已开始
    [root@centos7 ~]# virsh dominfo CentOS-7-1-86_64
    Id:             10
    名称:       CentOS-7-1-86_64
    UUID:           d9f7da32-6b1a-4f1d-b5f1-a5cf1f148f79
    OS 类型:    hvm
    状态:       running
    CPU:          1
    CPU 时间:   42.2s
    最大内存: 4048576 KiB
    使用的内存: 4048576 KiB
    持久:       是
    自动启动: 禁用
    管理的保存: 否
    安全性模式: none
    安全性 DOI: 0
    [root@centos7 ~]# virsh qemu-monitor-command CentOS-7-1-86_64 --hmp --cmd info balloon
    [root@centos7 ~]# virsh qemu-monitor-command CentOS-7-1-86_64 --hmp --cmd balloon 512

     #kvm磁盘

    IMB文章地址:https://www.ibm.com/developerworks/cn/linux/1409_qiaoly_qemuimgages/

    qcow2 镜像格式是 QEMU 模拟器支持的一种磁盘镜像。它也是可以用一个文件的形式来表示一块固定大小的块设备磁盘。与普通的 raw 格式的镜像相比,有以下特性:

    1. 更小的空间占用,即使文件系统不支持空洞(holes);
    2. 支持写时拷贝(COW, copy-on-write),镜像文件只反映底层磁盘的变化;
    3. 支持快照(snapshot),镜像文件能够包含多个快照的历史;
    4. 可选择基于 zlib 的压缩方式
    5. 可以选择 AES 加密
    #创建一个qcow2磁盘镜像
    [root@centos7 kvmimg]# qemu-img create -f qcow2 test1.qcow2 10G
    Formatting 'test1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off
    #raw转换为qcow2磁盘镜像
    #转换前磁盘信息
    [root@centos7 kvmimg]# ls -lh Centos-7.1.raw 
    -rw-r--r-- 1 qemu qemu 10G 9月  10 13:08 Centos-7.1.raw
    [root@centos7 kvmimg]# qemu-img info Centos-7.1.raw 
    image: Centos-7.1.raw
    file format: raw
    virtual size: 10G (10737418240 bytes)
    disk size: 1.4G
    #进行转换
    [root@centos7 kvmimg]# qemu-img convert -f raw -O qcow2 Centos-7.1.raw test.qcow2
    #转换后
    [root@centos7 kvmimg]# ls -lh test.qcow2 
    -rw-r--r-- 1 root root 1.5G 9月  10 13:14 test.qcow2
    [root@centos7 kvmimg]# qemu-img info test.qcow2 
    image: test.qcow2
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 3.0G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false

    #创建快照qcow2

    [root@centos7 kvmimg]# virsh list --all
     Id    名称                         状态
    ----------------------------------------------------
     12    CentOS-7-1-86_64               running
     -     Centos7                        关闭
    [root@centos7 kvmimg]# virsh snapshot-create-as --domain Centos7 --name Centos7-1
    #查看快照
    virsh snapshot-list –domain Centos7
    快照回滚:virsh snapshot-revert --domain Centos7 --snapshotname Centos7-1
    快照删除:virsh snapshot-delete --domain Centos7 --snapshotname Centos7-1
  • 相关阅读:
    RabbitMQ安装
    基于Linux的校园网破解思路和方法
    网络-0001-常见传输介质
    友情链接
    linux简史
    计算机的发展简史
    ArrayList&LinkedList&Vector区别
    Adobe Flash Player PPAPI 32.0.0.330
    ntoskrnl.exe导致蓝屏解决方法
    Git常用命令
  • 原文地址:https://www.cnblogs.com/yanshicheng/p/9598437.html
Copyright © 2011-2022 走看看