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地址
--====网络知识了解===