一文搞定KVM安装部署
前言※
为何虚拟化部署需要安装KVM模块,KVM模块起什么作用?
KVM,Kernel Virtual Machine内核虚拟机,基于Linux内核,KVM虚拟化主要是半虚拟化架构类型的一款虚拟化软件,主要是辅助完成虚拟化功能,负责CPU和内存虚拟化,在Linux2.6.20之后集成,属于硬件辅助虚拟化的一种。
部署虚拟化环境,通过虚拟化的方式,使处理器可运行多个操作系统。KVM能在不改变Linux或Windows镜像的情况下同时运行多个虚拟机,并为每一个虚拟机配置个性化硬件环境。以下Linux命令以CentOS为例讲下如何部署KVM。
验证系统要求※
确保硬件满足KVM虚拟化的要求,包括CPU虚拟化扩展(例如Intel VT或AMD-V)以及足够的内存和存储。
(1)检查主机是否开启虚拟化:
egrep -o '(vmx|svm)' /proc/cpuinfo
# 输出的内容,若已开启虚拟化则输出vmx;若未开启,则输出为空
>> vmx
语法:egrep 查找字符串规则 文件或目录
简介:用于在文件内查找指定的字符串
- (vmx|svm):vmx表示虚拟化技术Inter-VT,svm表示AMD的虚拟技术AMD-V
- cpuinfo文件:主要记录cpu相关的配置信息
- -o:只输出符合匹配的字符串
若是没有开启CPU虚拟化,则开启CPU虚拟化
知识扩展:什么是开启Inter VT-x或AMD-V/RVI,为何虚拟化部署需要它
Inter VT是Intel公司的虚拟化技术,可以让一个CPU工作起来像多个CPU并行运行,则可以在一个单机上实现多个操作系统运行的目的。
AMD-V是AMD公司的一个嵌入CPU中运行支持多个操作系统并运行的硬件水平的虚拟化技术
(1)未安装镜像,则安装镜像时,修改处理器,开启Inter VT-x或AMD-V/RVI:
(2)已安装镜像,则需在Linux开机过程中进入BIOS,在CPU配置项Configuration中开启(Enable)Inter Virtual Technology,F10保存并退出,重启系统查看
KVM安装※
在大多数Linux发行版上,您可以使用软件包管理器(例如apt-get、yum、dnf)安装KVM及其相关软件包,这里我们使用yum安装KVM。
安装※
通过yum的方式同时下载多个软件,也可以单独使用yum install一个个下载。
yum -y install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install virt-clone virt-v2v virt-manager virt-viewer
参数:
y:安装过程中提示时,默认“yes”
kvm部署需要一同下载的软件:
qemu-kvm:即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化,才能真正实现服务器虚拟化。
libvirt:KVM管理工具,主要是收集虚拟机的监控数据,如cpu,内存等信息,为不同的虚拟机监视器提供了统一的接口。
libvirt-python:可通过python方式调用libvirt API来获取虚拟机的监控数据
libguestfs-tools:虚拟机镜像管理工具,用来访问和修改虚拟机磁盘镜像
virt-install:命令行工具,为KVM创建虚拟机并完成GuestOS安装,使用virsh命令
**virt-clone:**用于克隆KVM虚拟机
**virt-manager:**使用图形界面管理KVM虚拟环境的主要工具
virt-viewer:用于显示虚拟机的图形控制台
bridge-utils:配置网桥
以上的软件关系,简单的而已理解为:
qemu+kvm具备了可以虚拟化
检查KVM是否安装成功
lsmod | grep kvm
如果没有出现kvm和kvm-intel信息,可以手动加载kvm内核模块
modprobe kvm
modprobe kvm-intel
说明※
centos7和cento8一般会默认安装kvm和libvirt,自动启动了libvirtd守护进程,进程启动时,会在宿主机上创建了一个default的虚拟网络,设置了网桥virbr0(虚拟交换机)和网卡virbr0-nic,还会通过配置IP转发、iptables的NAT表。
由于linux网桥会将其上第一个接口设备的MAC地址当作它的MAC地址,所以virbr0(虚拟交换机)和网卡virbr0-nic的mac地址是一样的。
[zhaolu@centos7-01 ~]$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:4f:21:90 brd ff:ff:ff:ff:ff:ff
inet 192.168.63.133/24 brd 192.168.63.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe4f:2190/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:14:d3:4c brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:14:d3:4c brd ff:ff:ff:ff:ff:ff
[zhaolu@centos7-01 ~]$ systemctl status libvirtd
● libvirtd.service - Virtualization daemon
Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
Active: active (running) since 一 2024-05-06 21:51:35 CST; 33min ago
Docs: man:libvirtd(8)
https://libvirt.org
Main PID: 1518 (libvirtd)
Tasks: 19 (limit: 32768)
CGroup: /system.slice/libvirtd.service
├─1333 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
├─1335 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/libexec/libvirt_leaseshelper
└─1518 /usr/sbin/libvirtd
[zhaolu@centos7-01 ~]$
配置KVM※
需要通过设置虚拟网络、存储和其他资源来配置KVM。
网卡配置,也就是添加1个桥接网卡,主要是为了后续创建的虚拟机可以使用配置的网卡实现网络通信。
网卡配置文件路径:/etc/sysconfig/network-scripts/
# 进入网卡配置文件夹下
cd /etc/sysconfig/network-scripts/
# 复制ens33网卡配置文件,重命名为br0
cp ifcfg-ens33 ifcfg-br0
# 进入br0网卡配置文件中
vim ifcfg-br0
ifcfg-br0文件打开如下图所示:
修改br0网卡文件信息
# 修改以下信息
# Type类型修改为"Bridge"
TYPE=Bridge
# 修改名称,设备名为br0
NAME="br0"
DEVICE="br0"
# UUID字段前添加#注释
#UUID="xxxxxx"
# 添加以下信息
# ip地址:物理机的IP地址
IPADDR="192.168.xx.xx"
# 子网掩码参数:物理机的子网掩码
PREFIX="24"
# 网关:物理机的网关地址
GATEWAY="192.168.xx.xx"
# DNS地址
DNS1="8.8.8.8"
修改后的信息如下:
重启网络:
systemctl restart network
查看是否存在br0网卡:
# ifconfig方式查看或者brctl show方式查看
ifconfig
# 查看网卡信息
brctl show
启动虚拟化※
启动libvirt
systemctl enable libvirtd
systemctl start libvirtd
启动后查看是否启动成功
systemctl status libvirtd
创建虚拟机※
创建虚拟机
通过使用KVM工具virt-manager创建虚拟机,指定每台机器所需的资源(例如RAM、磁盘空间、CPU)。
打开virt-manager图形界面
virt-manager
创建虚拟机
点击本地浏览,这里iso镜像文件记得选择我们前面创建的/mnt/iso文件夹下的镜像,也请将镜像文件放置mnt/iso文件夹下方便选取
为每个虚拟机安装操作系统,就像为物理计算机安装操作系统一样。
接下来就是镜像的安装过程,也就是操作系统centos的安装过程,就不赘述。
检查虚拟机是否创建成功
通过查看虚拟机列表或直接通过virt-manager界面查看虚拟机,使用KVM管理工具监视和管理这些虚拟机,包括启动、停止和在物理主机之间移动它们。
# 查看虚拟机列表
virsh list
转自:https://zhuanlan.zhihu.com/p/616845079
发布于 2023-03-25 00:54・IP 属地广东