KVM的虚拟化需要硬件支持(如​​Intel VT​​​技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的​​进程调度​​​器,​​存储管理​​​模块等,所以代码较为庞大。广为流传的​​商业系统​​虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。


安装kvm需要宿主机:

xen或者是机架服务器

本测试环境为dell机架服务器

一、检测环境是否支持kvm

KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持。

基于 Intel 处理器的系统,运行grep vmx /proc/cpuinfo查找 CPU flags 是否包括 vmx 关键词

基于 AMD 处理器的系统,运行grep svm /proc/cpuinfo查找 CPU flags 是否包括 svm 关键词

检查BIOS,确保BIOS里开启VT选项


二、配置网卡(本实验使用桥接-如果是远程的机器,慎操作,可能会导致网卡中断。)

配置如下:

桥接网卡br0

DEVICE=br0

TYPE=Bridge

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=none

IPADDR=192.198.62.18

NETMASK=255.255.255.0

GATEWAY=192.168.62.254

IPV6INIT=no

USERCTL=no

DELAY=0


本地网卡em1

em1 为戴尔服务器网卡标示

建网桥前服务器有网络设备 eth0 eth1 (dell服务器为em1 em2)  lo  virbr0 建网桥后服务器上多了br0 (同时修改br0和eth0的配置文件,eth0上不需要IP了,设给br0。

DEVICE=em1

HWADDR=14:18:77:4c:8e:b9  #网卡 mac地址

TYPE=Ethernet

UUID=038490b7-b894-4f4f-9a38-432c7df6be2c #网卡的uuid

ONBOOT=yes #自启动

NM_CONTROLLED=yes

BOOTPROTO=dhcp

DNS2=210.22.70.3 #dns

DNS1=202.96.209.5 #dns

IPV6INIT=no

USERCTL=no

BRIDGE=br0 #桥接网卡

PEERDNS=yes


三、安装软件

yum -y install kvm libvirt python-virtinst qemu-kvm virt-viewer bridge-utils


启动服务

/etc/init.d/libvirtd start

注:

Libvirt是管理虚拟机和其他虚拟化功能,比如存储管理,网络管理的软件集合。它包括一个API库,一个守护程序(libvirtd)和一个命令行工 具(virsh);libvirt本身构建于一种抽象的概念之上。它为受支持的虚拟机监控程序实现的常用功能提供通用的API。


四、安装图形化管理工具

yum -y install virt-manager



五、安装虚拟机

①virt-install --name vm_cent_test1  --ram 4096 --vcpus=4 --disk path=/opt/vmware/vm_cent_test1,size=124 --network bridge=br0 --os-variant=rhel6 --location=ftp://10.188.66.5/pub/repodata/centos6.6_x86_64 --autostart --vnclisten=0.0.0.0  --vncport=6901 --vnc --extra-args "ks=​​ftp://10.188.66.5/pub/repodata/ks/ks_vm.cfg"​

note(需要在其他服务器上配置kickstart,实现自动安装)

②#!/bin/bash

virt-install --virt-type=kvm \

--name centos-stream-9.0 \

--memory 8192 \

--vcpus 8 \

--os-type=linux \

--os-variant=centos8 \

--cdrom=/home/isos/CentOS-Stream-9-20220107.0-aarch64-dvd1.iso \

--network=bridge=br0,model=virtio \

--graphics vnc,listen=0.0.0.0 \

--disk path=/var/lib/libvirt/images/centos-stream-9-0.qcow2,size=100,format=qcow2

virt-install安装​虚拟机​​,qcow2文件和ISO文件不要放到/home目录中


六、通过vnc登录宿主机端口访问新建虚拟机

如:192.198.62.18:6901

ps:(此环境需要关闭iptables selinux,安装好的vm需要手动virsh start启动)



其他:

virsh命令行管理工具
Libvirt有两种控制方式,命令行和图形界面
图形界面:
通过执行名virt-manager,启动libvirt的图形界面,在图形界面下可以一步一步的创建虚拟机,管理虚拟机,还可以直接控制虚拟机的桌面。
关闭及删除虚拟机

virsh start vm_cent_test1 #启动虚拟机

virsh shutdown vm_cent_test1 #关闭虚拟机

virsh destroy vm_cent_test1 #删除

virsh undefine vm_cent_test1 #不定义这个命名

virsh list #虚拟机列表



About virt-manager’s supporting tools

virt-install 命令行工具,用于部署虚拟机。

virt-viewer 轻量的UI接口,VNC和SPICE协议都支持,使用libvirt来查看图形链接信息。

virt-clone命令行工具,用于克隆已经存在的(关机状态)的主机。拷贝当前磁盘镜像,定义配置文件、名字、UUID、MAC地址到新磁盘镜像。

virt-xml命令行工具,用于编辑domain XML。(libvirt使用XML文件定义虚拟机domain)

virt-convert命令行工具,用户转换OVF和VMX 虚拟机配置以支持使用libvirt运行。

virt-bootstrap 命令行工具,用于为基于libvirt的container设置root file system


配置文件:

/etc/libvirt/qemu



--====网络知识了解===

Linux 多网卡绑定

  网卡绑定mode共有七种(0~6) bond0、bond1、bond2、bond3、bond4、bond5、bond6

常用的有三种

  mode=0:平衡负载模式,有自动备援,但需要”Switch”支援及设定。

  mode=1:自动备援模式,其中一条线若断线,其他线路将会自动备援。

  mode=6:平衡负载模式,有自动备援,不必”Switch”支援及设定。

  需要说明的是如果想做成mode 0的负载均衡,仅仅设置这里options bond0 miimon=100 mode=0是不够的,与网卡相连的交换机必须做特殊配置(这两个端口应该采取聚合方式),因为做bonding的这两块网卡是使用同一个MAC地址.从原理分析一下(bond运行在mode 0下):

mode 0下bond所绑定的网卡的IP都被修改成相同的mac地址,如果这些网卡都被接在同一个交换机,那么交换机的arp表里这个mac地址对应的端口就有多 个,那么交换机接受到发往这个mac地址的包应该往哪个端口转发呢?正常情况下mac地址是全球唯一的,一个mac地址对应多个端口肯定使交换机迷惑了。所以 mode0下的bond如果连接到交换机,交换机这几个端口应该采取聚合方式(cisco称为 ethernetchannel,foundry称为portgroup),因为交换机做了聚合后,聚合下的几个端口也被捆绑成一个mac地址.我们的解决办法是,两个网卡接入不同的交换机即可。

mode6模式下无需配置交换机,因为做bonding的这两块网卡是使用不同的MAC地址

--====网络知识了解===