zoukankan      html  css  js  c++  java
  • 虚拟化KVM之安装(二)

    安装KVM虚拟化

    1、系统基础环境:

    [root@linux-node1 ~]# ip addr | grep inet | awk '{ print $2; }' | sed 's//.*$//'|sed -n "3p"
    10.10.10.188
    [root@linux-node1 ~]# uname -r
    3.10.0-693.el7.x86_64
    [root@linux-node1 ~]# cat /etc/redhat-release 
    CentOS Linux release 7.4.1708 (Core) 
    [root@linux-node1 ~]# tail -2 /etc/hosts
    10.10.10.188 linux-node1.example.com
    
    
    #Firewalld and selinux
    systemctl stop firewalld
    systemctl disable firewalld
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0
    
    
    #Date 
    yum -y install ntp
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    echo "#time sync by zsq at $(date +%F)" >> /var/spool/cron/root
    echo "*/10 * * * * /usr/sbin/ntpdate time.nist.gov &>/dev/null" >>/var/spool/cron/root
    
    #hostname
    sed -i 's/localhost.localdomain/linux-node1.example.com/' /etc/hostname
    hostnamectl set-hostname  linux-node1.example.com

    KVM需要硬件支持, 所以需要开启虚拟化支持

    1.硬件设备直接在BIOS设置开启CPU虚拟化
    2.个人电脑同样进入BIOS开启虚拟化支持
    3.VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技术

    命令检查是否启用虚拟化、没有任何提示则表示没有启用

     egrep '(vmx|svm)' /proc/cpuinfo

    2、安装KVM虚拟化工具

    yum install qemu-kvm qemu-kvm-tools 
    libvirt virt-manager virt-install  
    openssh-askpass –y

    //KVM是linux内核的一个模块,模块不需要安装只需要加载,通过用户态程序来管理即可
    [root@linux-node1 ~]# lsmod|grep kvm
    kvm_intel 170086 0 
    kvm 566340 1 kvm_intel

    qeum 虚拟化软件,可以虚拟不同的CPU,以及模拟网卡、声卡、PCI设备等

    libvirt 用于管理KVM的工具

    virt-install 命令行安装虚拟机工具

    virt-manager 图形化管理虚拟机工具

    openssh-askpass 远程连接KVM主机

    3、启动libvirt管理KVM工具

    [root@linux-node1 ~]# systemctl enable libvirtd
    [root@linux-node1 ~]# systemctl start libvirtd
     #注意: 启动后会新增一块virbr0网络、ifconfig查看

    4、KVM会给虚拟机分配NAT模式网络,但是在生产情况,强烈推荐使用网桥模式

    配置KVM虚拟机使用的桥接网络, 添加br0网卡
    [root@linux-node1 ~]# brctl addbr br0
    
    
    将eth0加入网桥,使用桥接模式,给br设置ip,添加路由网关,关闭防火墙
    brctl addif br0 eth0 && 
    ip addr del dev eth0 10.10.10.188/24 && 
    ifconfig br0 10.10.10.188/24 up && 
    route add default gw 10.10.10.254
    
    [root@linux-node1 ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.000c292ce007      no             eth0
    virbr0        8000.525400192ae5    yes        virbr0-nic

    创建KVM虚拟机

    1.在创建虚拟机之前, 我们需要添加一块磁盘来存放我们的虚拟机, VM->关机->设置->添加磁盘

    直接使用整块磁盘
    [root@linux-node1 ~]# mkdir -p /data
    [root@linux-node1 ~]# mkfs.xfs /dev/sdb
    meta-data=/dev/sdb               isize=512    agcount=4, agsize=655360 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2621440, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    [root@linux-node1 ~]# mount /dev/sdb /data
    #强烈建议加入开机自启动

     2.使用virsh-install创建命令模式创建虚拟机

    [root@linux-node1 data]# pwd
    /data
    [root@linux-node1 data]# ls
    CentOS-7-x86_64-DVD-1708.iso
    
    挂载系统光盘, 建立ISO镜像文件
    [root@linux-node1 ~]# dd if=/dev/cdrom of=/data/CentOS-7-x86_64-DVD-1708.iso 
    
    创建虚拟机磁盘
    [root@linux-node1 ~]#  qemu-img create -f qcow2 /data/centos-7-x86_64 10G #-f指定磁盘格式、磁盘名称加.qcow2查看的时候会更方便
    
    创建虚拟机实例
    virt-install --name CentOS-7-x64-node1 
    --virt-type kvm 
    --ram 1024 
    --cdrom=/data/CentOS-7-x86_64-DVD-1708.iso 
    --disk path=/data/centos-7-x86_64 
    --network bridge=br0 
    --graphics vnc,listen=0.0.0.0 
    --noautoconsole
    
    //参数概述
    --virt-type:指定虚拟机类型(kvm、qemu、xen)
    --name:指定虚拟机名称
    --raw:指定虚拟机使用内存大小
    --cpu:指定cpu的核数(默认为1)
    --cdrom:指定虚拟机安装的ISO镜像
    --disk:指定虚拟机数据存储磁盘qcow2
    --network:指定虚拟机网络类型, 默认nat,常用bridge
    --graphics:指定虚拟机可连接方式, 比如VNC
    --noautoconsole:不连接虚拟机图形界面控制台

     3.使用vnc客户端连接KVM虚拟机,进行操作系统安装、默认是5900

    4.安装CentOS7在启动前修改内核让网卡为eth0

    按tab键、在后面增加net.ifnames=0 biosdevname 然后空格回车、剩下就是跟安装操作系统步骤一样

    5.安装系统步骤忽略, 但一定要记得配置好对应的地址

     安装完成后、需修改网卡ONBOOT=yes、默认是没有启动的

    [root@linux-node1 data]# virsh list --all  #--all是查看所有
     Id    Name                           State
    ----------------------------------------------------
     -     CentOS-7-x64-node1             shut off
    
    [root@linux-node1 data]# virsh start CentOS-7-x64-node1 #启动节点
    Domain CentOS-7-x64-node1 started

    刚才创建的虚拟机在我们linux系统宿主机上体现的是一个进程、它是通过/usr/libexec/qemu-kvm -name启动起来的

    如果我们kill这个进程、虚拟机就会停止

     virsh命令是装libvirt的时候装上的、libvirt开源的管理虚拟机的工具

    停止libvirtd不影响虚拟机的运行、但是不能通过virsh去管理

    [root@linux-node1 ~]# systemctl stop libvirtd
    [root@linux-node1 ~]# virsh list --all
    error: failed to connect to the hypervisor
    error: Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory

    管理KVM虚拟机

    生成kvm虚拟机:virt-install 
    查看在运行的虚拟机:virsh list 
    查看所有虚拟机:virsh list –all 
    查看kvm虚拟机配置文件:virsh dumpxml name 
    启动kvm虚拟机:virsh start name 
    正常关机:virsh shutdown name 
    非正常关机(相当于物理机直接拔掉电源):virsh destroy name 
    删除:virsh undefine name(彻底删除,找不回来了,如果想找回来,需要备份/etc/libvirt/qemu的xml文件) 
    根据配置文件定义虚拟机:virsh define file-name.xml 
    挂起,终止:virsh suspend name 
    恢复挂起状态:virsh resumed name
    虚拟机随着系统启动:virsh autostart Name
    关闭虚拟机随系统启动:virsh autostart —disable Name
    编辑KVM虚拟机的xml配置文件:virsh edit name

    KVM虚拟机扩容

    1.1编辑kvm的xml文件,更改虚拟机CPU配置

    • 配置虚拟机的cpu,两种方式(启动的时候指定核数,更改xml)
    • 第一种方法:为了实现cpu的热添加,就需要更改cpu的最大值,当然热添加的个数不能超过最大值
    [root@linux-node1 qemu]# virsh edit CentOS-7-x64-node1
    <vcpu placement='auto' current="1">4</vcpu> #当前为1,自动扩容,最大为4
    • 重启虚拟机
    [root@linux-node1 qemu]# virsh shutdown CentOS-7-x64-node1
    Domain CentOS-7-x64-node1 is being shutdown
    
    正常关闭后再启动
    [root@linux-node1 qemu]# virsh start CentOS-7-x64-node1
    Domain CentOS-7-x64-node1 started
    • 登录虚拟机上,查看cpu信息,确认cpu的个数,下面开始进行cpu热添加 

    • cpu的热添加(cpu只支持热添加,不支持热减少)
    [root@linux-node1 qemu]# virsh setvcpus CentOS-7-x64-node1 2 --live
    • 再到虚拟机中查看cpu信息 

    • kvm版本较高,并不需要echo “1”到/sys/devices/system/cpu/cpu1/online 进行激活,自动可以激活。
    [root@linux-node1 qemu]#  cat /sys/devices/system/cpu/cpu1/online 
    1
    •  第二种方法:安装的时候指定 
    virt-install –vcpus 5 –vcpus 5,maxcpus=10,cpuset=1-4,6,8 –vcpus sockets=2,cores=4,thread=2

    1.2编辑kvm的xml文件,更改虚拟机内存配置

    内存也支持热添加、但前提是你的宿主机和虚拟机是同一个操作系统版本

    内存的设置拥有一个“气球(balloon)机制”,可以增大减少,但是也要设置一个最大值,默认并没有设置最大值,也可以在安装时候指定

    [root@linux-node1 qemu]# virsh edit CentOS-7-x64-node1

       <memory unit='KiB'>2048576</memory> #最大内存为2G
       <currentMemory unit='KiB'>1048576</currentMemory> #当前内存为1G

    编辑完配置文件需要重新启动生效

    查看当前虚拟机内存大小

    [root@linux-node1 qemu]# virsh qemu-monitor-command CentOS-7-x64-node1 --hmp --cmd info balloon
    balloon: actual=1024
    [root@linux-node1 qemu]#  virsh qemu-monitor-command CentOS-7-x64-node1 --hmp --cmd balloon 512 #把内存限制为512
    
    
    [root@linux-node1 qemu]# virsh qemu-monitor-command CentOS-7-x64-node1 --hmp --cmd info balloon  #再次查看
    balloon: actual=512
    [root@linux-node1 qemu]#  virsh qemu-monitor-command CentOS-7-x64-node1 --hmp --cmd balloon 1224 #增加内存为1224
    
    
    [root@linux-node1 qemu]# virsh qemu-monitor-command CentOS-7-x64-node1 --hmp --cmd info balloon #再次查看
    balloon: actual=1224 

     1.3磁盘扩容

    KVM虚拟机中有两种磁盘格式:

    raw格式: 直接占用物理磁盘, 写入快, 性能优, 但占用空间
    Qcow2格式: 使用多少占多少磁盘, 支持压缩、快照、镜像
    注意:raw不支持快照, Qcow2支持快照, 但两者文件类型是可以相互间转换

    无论磁盘是raw qcow2格式, 扩展思路如下

    • 新添加一块磁盘加入至需要扩容的虚拟主机
    • 使用lvm逻辑卷管理方式进行扩展

    1.查看当前KVM虚拟机所使用的虚拟磁盘

    [root@linux-node1 data]# virsh domblklist CentOS-7-x64-node1
    Target     Source
    ------------------------------------------------
    vda        /data/centos-7-x86_64  
    hda        -

    2.创建一块qcow2虚拟磁盘

    [root@linux-node1 ~]# qemu-img create -f qcow2 /data/centos-7-x86_64-disk2.qcow2 10G

    3.在线添加虚拟磁盘

    [root@linux-node1 ~]# virsh attach-disk CentOS-7-x64-node1 /data/centos-7-x86_64-disk2.qcow2 vdb --cache=none --subdriver=qcow2
    Disk attached successfully
    [root@linux-node1 ~]# virsh domblklist CentOS-7-x64-node1 #查看新增磁盘状态
    
    Target Source
    ------------------------------------------------
    vda /data/centos-7-x86_64
    vdb /data/centos-7-x86_64-disk2.qcow2
    hda -
    • 第二种扩容方式
    [root@linux-node1 ~]# virsh edit CentOS-7-x64-node1
    <disk type='file' device='disk'>     
      <driver name='qemu' type='qcow2' cache='none'/>      
      <source file='/data/centos-7-x86_64-disk2.qcow2'/>      
      <target dev='vdb' bus='virtio'/>      
     </disk>

     4.通过vnc连接KVM虚拟机进行磁盘扩容

    • 查看当前磁盘大小
    [root@localhost ~]# df -h 
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root  8.0G  896M  7.2G  11% /  
    devtmpfs                 886M     0  886M   0% /dev
    tmpfs                    897M     0  897M   0% /dev/shm
    tmpfs                    897M  8.5M  888M   1% /run
    tmpfs                    897M     0  897M   0% /sys/fs/cgroup
    /dev/vda1               1014M  143M  872M  15% /boot
    tmpfs                     82M     0   82M   0% /run/user/0
    • 扩容步骤如下
    [root@localhost ~]# pvcreate /dev/vdb
    [root@localhost ~]# vgextend centos /dev/vdb 
    [root@localhost ~]# lvextend -l +100%FREE /dev/centos/root 
    [root@localhost ~]# xfs_growfs /dev/centos/root
    • 再次查看
    [root@localhost ~]# df -h  #centos-root多了10G
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root   18G  897M   18G   5% /
    devtmpfs                 886M     0  886M   0% /dev
    tmpfs                    897M     0  897M   0% /dev/shm
    tmpfs                    897M  8.5M  888M   1% /run
    tmpfs                    897M     0  897M   0% /sys/fs/cgroup
    /dev/vda1               1014M  143M  872M  15% /boot
    tmpfs                     82M     0   82M   0% /run/user/0

    KVM虚拟机快照

    1.查看磁盘格式、如果是raw格式需要转换成qcow2

    [root@linux-node1 ~]# qemu-img info /data/centos-7-x86_64
    image: /data/centos-7-x86_64
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 1.2G
    cluster_size: 65536
    Format specific information:
        compat: 1.1
        lazy refcounts: false

    2.对虚拟机当前进行快照拍摄

    [root@linux-node1 ~]# virsh snapshot-create CentOS-7-x64-node1
    Domain snapshot 1531036016 created

    3.查看虚拟机快照

    [root@linux-node1 ~]# virsh snapshot-list CentOS-7-x64-node1
     Name                 Creation Time             State
    ------------------------------------------------------------
     1531036016           2018-07-08 15:46:56 +0800 running
    #检查当前虚拟机最新快照版本
    [root@linux-node1 ~]# virsh snapshot-current CentOS-7-x64-node1|less
    #快照xml文件存放路径
    [root@linux-node1 ~]# ls /var/lib/libvirt/qemu/snapshot/CentOS-7-x64-node1
    1531036016.xml

    4.恢复快照

    [root@linux-node1 ~]# virsh snapshot-revert CentOS-7-x64-node1 1531036016
     #确认恢复版本正确
    [root@linux-node1 ~]# virsh snapshot-current CentOS-7-x64-node1|grep "1531036016"
      <name>1531036016</name>
      <creationTime>1531036016</creationTime>

    5.删除快照

    [root@linux-node1 ~]# qemu-img info /data/centos-7-x86_64  #查看
    image: /data/centos-7-x86_64
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 1.6G
    cluster_size: 65536
    Snapshot list:
    ID        TAG                 VM SIZE                DATE       VM CLOCK
    1         1531036016             382M 2018-07-08 15:46:57   05:12:14.974
    Format specific information:
        compat: 1.1
        lazy refcounts: false
    [root@linux-node1 ~]#  virsh snapshot-delete CentOS-7-x64-node1 1531036016 #删除最近的版本
    Domain snapshot 1531036016 deleted
  • 相关阅读:
    python_变量前加*或者**
    python 获取上级(上上级目录..)
    pip install git+
    《手把手教你》系列技巧篇(十八)-java+ selenium自动化测试-元素定位大法之By css中卷(详细教程)
    《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)
    《手把手教你》系列技巧篇(十六)-java+ selenium自动化测试-元素定位大法之By xpath下卷(详细教程)
    《手把手教你》系列技巧篇(十五)-java+ selenium自动化测试-元素定位大法之By xpath中卷(详细教程)
    《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
    《手把手教你》系列技巧篇(十三)-java+ selenium自动化测试-元素定位大法之By partial link text(详细教程)
    《手把手教你》系列技巧篇(十二)-java+ selenium自动化测试-元素定位大法之By link text(详细教程)
  • 原文地址:https://www.cnblogs.com/w787815/p/9277105.html
Copyright © 2011-2022 走看看