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等(方便以后复制虚拟机)

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

原文地址:https://www.cnblogs.com/fanggege/p/10396703.html