KVM主机安装
# KVM软件安装
# 环境准备
安装一台带有界面的centos 7 虚拟机在软件界面选择安装gnome 或者安装后在安装gnome桌面,确保可以上网。
如果没有安装界面可以通过以下步骤安装图形化界面
开始安装图形界面,先安装X Window System
yum groupinstall "X Window System"
安装gnome
yum groupinstall -y "GNOME"
然后输入进入图形界面指令
init 5
或
startx
2
3
至此,Centos7命令和图形界面安装及下载完成。
# 常用命令
关闭虚拟机
# virsh shutdown <虚拟机名称>
# KVM安装
1. 关闭防火墙和selinux
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
#永久生效,但是必须要重启系统。
2
3
4
5
2. 查看CPU是否支持VT技术
egrep -c '(vmx|svm)' /proc/cpuinfo
如果输出的数字大于 0,则表示CPU 支持虚拟化。
2
3
或
cat /proc/cpuinfo | grep -E 'vmx|svm'
包含vmx或svm 则支持虚拟化
2
3
如果是物理机,需要在bios中开启Inter VT-x或AMD-V/RVI。如果是使用vmware workstation等虚拟化软件,需要打开虚拟机的嵌套虚拟化:
3. 安装kvm软件包
Centos7:
sudo yum install -y qemu-kvm libvirt libvirt-client virt-install bridge-utils libguestfs-tools virt-manager virt-viewer
说明:
- qemu-kvm:即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化。
- libvirt:KVM管理工具,为不同的虚拟机监视器提供了统一的接口
- libvirt-client:包含了一组用于与 libvirt 库交互的命令行工具
- virt-install:用于guestos安装,包括virsh,virt-clone等工具
- bridge-utils:配置网桥
- libguestfs-tools:虚拟机镜像管理工具,包括virt-cat、virt-edit、virt-ls、virt-rescue
- virt-manager:图形界面管理KVM虚拟化
- virt-viewer:用于虚拟机控制台
- libvirt-python:libvirt库的Python 绑定,在Python中使用 libvirt 的功能,包括对虚拟机、存储池、网络等资源的管理,以及对虚拟化宿主机的监控和控制
4. 启用和启动 libvirtd 服务
sudo systemctl enable libvirtd
sudo systemctl start libvirtd
sudo systemctl status libvirtd
2
3
4
5、查看KVM模块加载
# 检查kvm内核模块
$ lsmod | grep kvm
kvm_intel 188740 0
kvm 637515 1 kvm_intel
irqbypass 13503 1 kvm
2
3
4
5
6. 添加用户到 libvirt 组
切换成root用户然后执行下面命令,把root用户添加到libvirt组
$ sudo -s
$ sudo usermod -aG libvirt $(whoami)
$ sudo usermod -aG kvm $USER
$ id
uid=1000(test) gid=1000(test) groups=1000(test),10(wheel),36(kvm),992(libvirt)
2
3
4
5
7. 创建网桥(br0)暂不配置
如果你打算从本机(Centos7.9)之外访问 KVM 虚拟机,你必须将虚拟机宿主机的网卡映射至网桥。virbr0 网桥是 KVM 安装完成后自动创建的。
$ brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400ff2f20 yes virbr0-nic
# 关闭系统防火墙
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalld
# 桥接设备关联宿主机网卡
$ sudo virsh iface-bridge ens33 br0
Created bridge br0 with attached device ens33
Bridge interface br0 started
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000c2937ae01 yes ens33
virbr0 8000.525400ff2f20 yes virbr0-nic
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 清理环境:卸载KVM
[root@qfedu.com \~]# yum remove `rpm -qa | egrep 'qemu|virt|KVM'` -y
[root@qfedu.com \~]# rm -rf /var/lib/libvirt /etc/libvirt/
2
3
# 网桥
桥接工作在 OSI 网络参考模型的第二层数据链路层,是一种以 MAC 地址来作为判断依据来将网络划分成两个不同物理段的技术,其被广泛应用于早期的计算机网络当中。以太网是一种共享网络传输介质的技术,在这种技术下,如果一台计算机发送数据的时候,在同一物理网络介质上的计算机都需要接收,在接收后分析目的 MAC 地址,如果是属于目的 MAC 地址和自己的 MAC 地址相同便进行封装提供给网络层,如果目的 MAC 地址不是自己的 MAC 地址,那么就丢弃数据包。
现有一台能上网的物理服务器,服务器只有 1 张网卡能上外网,服务中虚拟化出很多太kvm 虚拟机,现在需要配置 kvm 能够访问外网。在服务器 linux 系统中添加 brctl 网桥 br0,将服务器网卡 2、所有 kvm 网卡全部添加到br0 网桥中,实现共享网络。原来服务器网卡的 ip 地址,配置到 br0 网桥上面,实现远程管理。