美文网首页
KVM虚拟化

KVM虚拟化

作者: 早_wsm | 来源:发表于2019-06-23 13:11 被阅读0次

    kvm实验

    环境准备,我这里使用虚拟机进行模拟,先设定好虚拟化


    image.png

    进入系统查看是否支持虚拟化

    [root@kvm ~]# lsmod |grep kvm
    kvm_intel             174841  0 
    kvm                   578518  1 kvm_intel
    irqbypass              13503  1 kvm
    

    KVM:Kernel-based Virtual Machine

    安装需要的软件和下载镜像:

    yum install libvirt virt-install qemu-kvm -y 
    

    libvirt 作用:虚拟机的管理软件
    virt virt-install virt-clone 作用:虚拟机的安装工具和克隆工具
    qemu-kvm qemu-img (qcow2,raw)作用:管理虚拟机的虚拟磁盘

    自行下载一个centos7的镜像,我本地有镜像所以不需要下载

    [root@kvm opt]# ll
    total 171008
    -rw-r--r-- 1 root root 175112192 Nov 25  2018 CentOS-7-x86_64-DVD-1804.iso
    

    因为我的实验机是最小化安装的,要想实现图形化界面需要安装桌面,如果不想安装桌面可以下载vnc到windows桌面上待会备用

    先启动一个虚拟机

    [root@kvm opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    [root@kvm opt]# ps -ef |grep 5900
    root       5151   1940  0 20:46 pts/0    00:00:00 grep --color=auto 5900
    
    

    命令详解:
    --virt-type kvm 虚拟化的类型(qemu)
    --os-type=linux 系统类型
    --os-variant rhel7 系统版本
    --name centos7 虚拟机的名字
    --memory 1024 虚拟机的内存
    --vcpus 1 虚拟cpu的核数
    --disk /opt/centos2.raw,format=raw,size=10
    --cdrom /opt/CentOS-7-x86_64-DVD-1804.iso
    --network network=default 使用默认NAT的网络
    --graphics vnc,listen=0.0.0.0 图形界面用vnc输出
    --noautoconsole

    这样可以直接连接vnc


    image.png

    kvm虚拟机的virsh日常管理和配置命令

    列表list(--all)
    开机start
    关机shutdown
    拔电源关机destroy
    重命名domrename (低版本不支持)
    挂起suspend
    恢复resume
    查询vnc端口号vncdisplay
    导出配置dumpxml 例子:virsh dumpxml centos7 >centos7-off.xml
    删除undefine 推荐:先destroy,在undefine
    导入配置define
    修改配置edit(自带语法检查)

    低版本修改虚拟机名字操作流程

    先停掉虚拟机 virsh shutdwon centos7
    备份配置文件 virsh dumpxml centos7 >web01.xml
    删除虚拟机 virsh undefine centos7
    修改配置文件 vim web01.xml <name>web01</name>,删掉uuid
    导入虚拟机 virsh define web01.xml

    虚拟机优化

    当虚拟机挂起或者恢复后时间后出现不一致,所以需要做好时间同步
    创建虚拟机系统时取消swap节省内存

    虚拟机开机自启

    开机启动autostart,前提:systemctl enable libvirtd;
    取消开机启动autostart --disable
    查看哪些虚拟机设置了开机自启:
    当设置了开启自启后在/etc/libvirt/qemu/autostart/下会存在一个软连接

    [root@kvm opt]# ll /etc/libvirt/qemu/autostart/
    total 0
    lrwxrwxrwx 1 root root 29 Apr  3 22:28 centos7.xml -> /etc/libvirt/qemu/centos7.xml
    

    qemu下命令

    查看虚拟磁盘信息
    qemu-img info test.qcow2
    创建一块qcow2格式的虚拟硬盘:
    qemu-img create -f qcow2 test.qcow2 2G
    调整磁盘磁盘容量
    qemu-img resize test.qcow2 +20G

    把raw格式转换为qcow2格式

    raw: 裸格式,占用空间比较大,不支持快照功能,性能较好,不方便传输 总50G 占用2G
    qcow2:cow (copy on write)占用空间小,支持快照,性能比raw差一点,方便传输 总50G 占用2G

    • 1.先关闭要修改的虚拟机web01
    virsh destroy web01
    
    • 2.查看虚拟机运行状态
    virsh list --all
    
    • 3.确定关闭后执行转换命令
    qemu-img convert -f raw -O qcow2 /data/web01.raw /data/web01.qcow2
     >格式示例qemu-img convert [-f fmt]   [-O output_fmt]    filename     output_filename
    
    • 4.修改web01配置文件
    virsh edit web01
    
    [root@oldboy data]# virsh dumpxml web01|grep 'qcow2'
          <driver name='qemu' type='qcow2'/>
          <source file='/data/web01.qcow2'/>
    
    • 5.重新启动web01,看是否可正常启动
    virsh start web01 
    

    快照

    raw不支持做快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中

    • 创建快照virsh snapshot-create-as centos7 --name install_ok

    --name 指定快照名字

    • 查看快照virsh snapshot-list centos7

    • 还原快照virsh snapshot-revert centos7 --snapshotname 1516574134

    • 删除快照virsh snapshot-delete centos7 --snapshotname 1516636570

    虚拟机克隆

    kvm虚拟机:磁盘文件 + 配置文件

    • 完整克隆
      克隆命令:virt-clone --auto-clone -o web01 -n web02(完整克隆)

    参数解释:
    -o 指定要克隆的机器
    -n 被克隆的机器

    • kvm链接克隆
      a.基于源磁盘文件,创建链接磁盘文件
      qemu-img create -f qcow2 -b web02.qcow2 web03.qcow2
      b:生成虚拟机的配置文件
      virsh dumpxml web02 >web03.xml
      virsh define web03.xml
      virsh start web03
      c:导入虚拟机并进行启动测试
      virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
      全自动链接克隆方法:强哥博客

    kvm虚拟机网络

    默认的虚拟机网络是NAT模式,网段192.168.122.0/24,但是只能被内网访问,要想被外网也访问到,要使用桥接模式

    • 默认NAT模式
      virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /opt/web04.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    • 桥接模式
      virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 1024 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

    kvm虚拟机实现桥接模式

    1:创建桥接网卡
    virsh iface-bridge eth0 br0
    在使用此命令后会生成新的网卡信息,原eth0网卡信息也同时变更

    取消桥接网卡
    virsh iface-unbridge br0
    2:测试虚拟机网络
    创建一台使用桥接模式的虚拟机进行测试是否可以正常连接外网

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name test --memory 1024 --vcpus 1 --disk /data/test.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    

    修改已创建的虚拟机的网络模式,需要修改配置文件内的网络类型记名称

    virsh edit centos7
    
        <interface type='bridge'>
          <mac address='52:54:00:55:aa:fa'/>
          <source bridge='br0'/>
    

    在宿主机上,重启虚拟机生效

    热添加技术

    kvm虚拟机在线热添加硬盘
    先创建一块准备添加的硬盘
    qemu-img create -f qcow2 add01.qcow2 5G
    临时生效
    virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver=qcow2

    永久生效
    virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --subdriver qcow2 --config

    作业3:扩容kvm虚拟机的根分区

    kvm虚拟机在线热添加网卡
    kvm虚拟机在线热添加内存
    kvm虚拟机在线热添加cpu

    虚拟机磁盘扩容:
    在kvm虚拟机,卸载
    virsh detach-disk centos7 vdb
    qemu-img resize /data/centos7-add01.qcow2 +5G
    virsh attach-disk centos7 /data/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2

    在虚拟机中:xfs_growfs /dev/vdb

    根分区扩容:
    1)在宿主机上关闭虚拟机并调整虚拟机磁盘大小
    qemu-img resize oldboy.qcow2 +10G

    2)虚拟机中fdisk重新分区
    fdisk /dev/vda

    3)重启之后,执行xfs_growfs /dev/vda1,
    如果虚拟机磁盘文件系统是ext4:resize2fs /dev/vda1

    kvm虚拟机在线热添加网卡

    virsh attach-interface web04 --type bridge --source br0 --model virtio
    detach-interface web04 --type bridge --mac 52:54:00:35:d3:71

    kvm虚拟机在线热添加内存

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

    临时热添加内存
    setmem web04 1024M --live
    永久增大内存
    setmem web04 1024M --config

    kvm虚拟机在线热添加cpu

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    热添加cpu核数
    setvcpus web04 4 --live
    永久添加cpu核数
    setvcpus web04 4 --config

    11:virt-manager和kvm虚拟机热迁移(共享的网络文件系统)

    冷迁移kvm虚拟机:配置文件,磁盘文件
    热迁移kvm虚拟机:配置文件,nfs共享

    1):
    yum groupinstall "GNOME Desktop" -y
    yum install openssh-askpass -y

    yum install tigervnc-server -y

    vncpasswd
    vncserver :1
    vncserver -kill :1

    2):kvm虚拟机热迁移
    1:两边的环境(桥接网卡)
    2:实现共享存储(nfs)
    3:虚拟机桥接网络
    4:在线热迁移

    相关文章

      网友评论

          本文标题:KVM虚拟化

          本文链接:https://www.haomeiwen.com/subject/unpiqctx.html