zoukankan      html  css  js  c++  java
  • kvm libvirt 虚拟机的管理

    libvirt 介绍

    用途    libvirt 是虚拟机管理工具不仅限于管理kvm 包括xen、vmware

    安装      yum -y install libvirt

    服务启动    systemctl  libvirtd   start


    libvirt 架构分为三部分:
    1、libvird 服务
    2、virsh 等命令
    3、libvirt API    可以通过此接口进行二次开发

    libvirt 进程作用
    1、进程停止后,虚拟机还能正常运行
    2、virsh list --all 等管理虚拟机的命令不能使用了,也是说此服务管理虚拟机的。
      也就是说openstack挂了但是虚拟机不一定有问题,当openstack 不能管理虚拟机时,可以通过virsh 等命令进行开机等命令管理虚拟机

    虚拟机管理

    virsh  list  --all               查看所有创建的虚拟机

    virsh  start   centos-7.0_x86_64     虚拟机启动(启动后会在后台启动一个以qemu 用户身份启动的一个进程,通过ps   aux | grep kvm 查看,实际此进程就是启动的虚拟机)

    虚拟机配置文件

    libvirt 通过xml 文件管理虚拟机,每一个虚拟机的配置都会记录在一个xml 文件中,在创建虚拟机的时候自动生成。
    /etc/libvirt/qemu/XXX.xml
    此文件只能通过virsh edit 命令编辑,不可以vi 更改
    注:openstack 管理虚拟机也是通过xml 文件,但是xml 不能手动更改,只能通过python 代码管理

    CPU/内存热添加

    当宿主机与虚拟机都是centos-7 时,虚拟机的cpu与内存支持热添加也就是不用重启服务器即可生效。 (注:当前只限于在kvm虚拟机,openstack N版本中不能实现,另外生产环境中谨慎操作)
    无论时cpu 还是 内存虚拟机的配置不能大于宿主机的配置,先更改xml 的允许最大值,再命令配置当前值,xml 更改后必须重启虚拟机才生效。

    CPU热添加
    virsh edit centos-7.xml

    原配置: <vcpu placement='static'>1</vcpu>
    改成: <vcpu placement='auto' current="1">4</vcpu> 1:当前 4:最大
    重启虚拟机

    命令更改cpu数量:virsh setvcpus CentOS-7-x86_64 2 --live

    内存热添加

    virsh edit centos-7.xml
    必要请况下,更改内存允许最大配置: <memory unit='KiB'>1048576</memory>
    重启虚拟机

    查看当前内存: virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd info balloon

    设置内存大小: virsh qemu-monitor-command CentOS-7-x86_64 --hmp --cmd balloon 512

    创建桥接网卡

    原网络架构
    启动libvirt 服务后会生成一个网卡 virbr0,创建虚拟机并启动后会生成网卡vnet0,虚拟机默认通过vnet0 连接virbr0,
    通过nat 方式上网,所以无法直接通过xshell 等工具直接连接虚拟机,只能通过vnc 通过宿主机ip 连接虚拟机。


    解决:宿主机上创建一个虚拟网卡br0,br0桥接在eth0上,占用其ip ,然后虚拟机通过vnet0桥接在br0 上

    拓展:openstack 也是在宿主机上自动创建一个类似br0 的虚拟网卡占用eth0 ip,所有的虚拟机桥接在br0上与外界连接。

    操作步骤

    1.建立虚拟网卡,并桥接在eth0上,且占用其ip(以脚本的形式执行,否则会断开与宿主机的连接,生产环境切勿命令操作)
    #!/bin/bash
    brctl addbr br0
    brctl addif br0 eth0
    ip addr del dev eth0 192.168.56.11/24
    ifconfig br0 192.168.56.11 up
    route add default gw 192.168.56.2

    2.更改虚拟机的网卡配置,使其桥接在br0
    virsh edit CentOS-7-x86_64
    配置由
    <interface type='network'>
    <source network='default'/>
    更改为
    <interface type='bridge'>
    <source bridge='br0'/>

    3. 重启虚拟机让配置生效
    virsh shutdown CentOS-7-x86_64
    virsh start CentOS-7-x86_64

    4. 修改虚拟机网卡配置
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    BOOTPROTO=static
    IPADDR=
    NETMASK=
    GATEWAY=

    5.查看

    [root@localhost ~]# brctl show
    bridge name   bridge id          STP enabled   interfaces
    br0        8000.000c295f951e     no        eth0
                                   vnet0

    virbr0         8000.000000000000      yes

    br0 相当于一个交换机,eth0与vnet0 相当于两个接口,br0 通过桥接eth0 访问宿主机的网络,虚拟机通过vnet0 连接br0。

    拓展:

    openstack 也是在宿主机上自动创建一个类似br0 的虚拟网卡占用eth0 ip,所有的虚拟机桥接在br0上与外界连接。

     

    虚拟机的创建

    1.下载一个ISO系统镜像


    2.创建虚拟机磁盘

    qemu-img create -f raw      /tmp/test.raw       10G      #raw 格式磁盘创建大小即实际存储大小
    qemu-img create -f qcow2 /tmp/test.qcow2   10G      #创建完成后磁盘实际很小,根据实际存储数据大小显示实际大小

    3.virt-install 安装虚拟机
      不使用swap分区
      只分一个/
      不使用LVM等。
    安装命令
      virt-install --virt-type kvm --name CentOS-7-x86_64 --ram 1024
      --cdrom=/tmp/CentOS-7.2-x86_64-DVD-1511.iso --disk /tmp/CentOS-7-x86_64.qcow2,foramt=qcow2
      --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole

      注意:创建的磁盘格式为raw 时,不需要format=qcow2 参数。

    4.安装完毕后,初始化:

      1.关闭SELinux。iptables。
      2.修改网卡配置,去掉UUID MAC等(方便以后复制虚拟机)

    注:可以通过复制虚拟机的方式,指定一个已经存在的虚拟机镜像来创建虚拟机。

  • 相关阅读:
    在Pycharm中使用GitHub
    Ubuntu20.04开启root账户的方法步骤
    使用git push文件到gitee
    Dell主机安装win10+Ubuntu20.04双系统
    Golang select 基础语法与用法
    Golang websocket 实现消息推送
    Golang + gRPC 实践
    Golang实现RPC
    unigui+fastReport实现web打印方案(43)
    [控件] 加强版 TOneSelection (改良自 Berlin 10.1 TSelection)
  • 原文地址:https://www.cnblogs.com/fanggege/p/10396703.html
Copyright © 2011-2022 走看看