KVM是指基于Linux内核的虚拟机(Kernel-base Virtual Machine)
kvm负责cpu虚拟化+内存虚拟化
qemu模拟IO设备(网卡,磁盘)
libvirt调用kvm虚拟化技术接口(API)用于管理
Centos7.6安装KVM准备工作
1.在vmware上开启虚拟化
2.查看CPU是否支持VT
grep -E ‘vmx|svm’ /proc/cpuinfo
3.安装kvm内核及相关软件包
yum -y install centos-release-qemu-ev.noarch #安装QEMU的yum源
yum -y install qemu-kvm.x86_64 qemu-kvm-tools.x86_64 #安装qemu-kvm
yum -y install libvirt.x86_54 libvirt-cim.x86_64 libvirt-client.x86_64 libvirt-java.noarch libvirt-python.x86_64 virt-* #安装virt管理工具
4.检查或者手动加载kvm内核
lsmod | grep kvm
modprobe kvm
modprobe kvm-intel
5.设置libvirt
systemctl start libvirtd
systemctl enable libvirtd
6.配置网桥
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
vim /etc/sysconfig/network-scritps/ifcfg-br0
systemctl stop NetworkManager && systemctl disable NetworkManager
systemctl restart network
#删除默认NAT网络方式
virsh net-destroy default
virsh net-undefine default
systemctl enable --now libvirtd
brctl show
Rocky9.4安装kvm
1. 确认CPU虚拟化是否开启
cat /proc/cpuinfo | egrep --color "vmx|svm"
2. 配置yum源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://dl.rockylinux.org/$contentdir|baseurl=https://mirrors.aliyun.com/rockylinux|g' \
-i.bak \
/etc/yum.repos.d/rocky*.repo
dnf makecache
3. 安装kvm管理工具和依赖
dnf install libvirt virt-install qemu-kvm virt-manager -y
dnf install epel-release -y
dnf -y install bridge-utils virt-top libguestfs-tools virt-viewer
lsmod | grep kvm #验证kvm模块加载成功
4. 启动libvirtd服务
systemctl enable --now libvirtd
systemctl status libvirtd
5.创建网桥
echo "allow all" >> /etc/qemu-kvm/bridge.conf
nmcli c show #查看网络
nmcli device status #查看网卡
nmcli connection add type bridge autoconnect yes con-name br0 ifname br0 #添加新网桥
nmcli c modify enp66s0 master br0 #物理网卡管理网桥
nmcli connection modify br0 ipv4.addresses '192.168.122.225/24' ipv4.gateway '192.168.122.254' ipv4.dns '114.114.114.110' ipv4.method manual connection.autoconnect-slaves yes
nmcli connection up br0
nmcli c down br0 && nmcli c up br0
ip addr show br0
brctl show
virsh iface-list
6. 创建虚拟机
--virt-type kvm #使用的管理程序名称为kvm
--os-type linux #设置系统类型为linux
--memory 2048 #设置当前虚机2G内存
--vcpus 2 #设置当前虚机2核
--vcpus 2,maxvcpus=8 #设置当前虚机2核,可动态设置到最大8核
--memory 2048,maxmemory=4096 #设置当前虚机2G内存,可动态设置到最大4G内存
--disk /data/linux_name.raw,format=raw,size=10 #磁盘文件类型为raw,最大容量10G
--cdrom /images/CentOS-7-x86_64-DVD-1810.iso #镜像源文件
--network bridge=br0 model=virtio #使用桥接模式
--graphics vnc,listen=0.0.0.0 --noautoconsole #开启vnc功能
--osinfo detect=on,require=off #尝试自动检测操作系统信息,但如果检测失败,它不会阻止虚拟机的创建过程,而是继续使用默认设置或其他已经提供的参数
virt-install --virt-type kvm --name rocky9.4_test \
--memory 4096,maxmemory=16384 --vcpus 4,maxvcpus=8 \
--disk /kvm_os/rocky9.4_test.qcow2,format=raw,size=50 \
--cdrom /images/Rocky-9.4-x86_64-dvd.iso \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole --osinfo detect=on,require=off
7.通过vnc进去配置rocky的静态ip
vi /etc/NetworkManager/system-connections/enp1s0.nmconnection
[ipv4]
method=manual
address1=192.168.174.212/24,192.168.122.254
dns=114.114.114.110;114.114.114.119
常用的kvm管理命令
0.查看物理节点信息
virsh nodeinfo
virsh sysinfo
virsh version
1.查看正在运行的虚拟机以及其相关信息
virsh list
virsh list --all
virsh dominfo [virt name]
2.管理虚拟机
virsh console [virt name] #在宿主机连接虚机控制台
ctrl + ] 退出
grubby --update-kernel=ALL --args="console=ttyS0,115200n8" #在虚机vnc运行输出重定向
reboot
virsh start [virt name] #启动虚拟机
virsh autostart [virt name] #设置自启动虚拟机
virsh autostart --disable [virt name] #设置禁止自启动虚拟机
virsh shutdown [virt name] #关闭虚拟机
virsh reboot [virt name] #重启虚拟机
virsh suspend [virt name] #挂起虚拟机
virsh resume [virt name] #恢复虚拟机
virsh destroy [virt name] #强制关闭虚拟机
virsh undefine [virt name] #删除虚拟机(还需要到源目录删除系统文件)
virsh domiflist [virt name] #显示网卡接口
virsh domifaddr [virt name] #显示虚机ip
virsh vncdisplay [virt name] #查看vnc端口
virsh domrename [virt name] [new name] #重命名虚机(关机后)
virsh define [virt name] #激活配置文件
virsh dumpxml [virt name] #查看虚拟机详细信息
virsh edit [virt name] #编辑配置文件
3.硬盘管理
-O #指定输出格式 -f #指定源格式
qemu-img info /kvm_os/rocky_20240719.raw #查看磁盘
qemu-img create -f raw /kvm_os/disk/add_disk.img 20G #添加一块磁盘
virsh attach-disk [virt name] /kvm_os/disk/add_disk.img vdb --cache none #添加磁盘到虚机
virsh detach-disk [virt name] vdb #从虚机上剔除磁盘
qemu-img convert -f raw -O qcow2 /kvm_os/centos_20240719.raw /kvm_os/centos_test.qcow2 #转换磁盘格式(关机后)
virsh edit [virt name] #修改raw为qcow2格式
virsh dumpxml [virt name] > /opt/kvm/rocky.xml #先挂载硬盘然后输出虚机配置文件保存
virsh define /opt/kvm/rocky.xml #重新定义配置文件实现持久化硬盘挂载
virsh domblklist [virt name] #查看虚机挂载的硬盘
4.快照管理
#系统格式为qcow2支持快照,raw格式不支持
virsh snapshot-create-as [virt name] [snapshot name] #快照创建
virsh snaptshot-list [virt name] #查看快照列表
virsh snapshot-revert [virt name] [snapshot name] #快照恢复
virsh snapshot-info [virt name] [snapshot name] #快照详情
virsh snapshot-delete [virt name] [snapshot name] #快照删除
5.克隆拷贝
-o #旧虚机名称
-n #新虚机名称
-f #新虚机路径
virt-clone -o centos_01 -n centos_01_clone -f /virt/CentOS7_clone.img #关机后进行克隆
6.管理虚机网络
virsh net-list --all #查看虚机网络
virsh net-dhcp-leases default #查看所有虚机ip
virsh net-edit default #编辑网络参数
virsh net-destroy default #关闭虚机网络
virsh net-start default #启动虚机网络
virsh iface-bridge eth0 br0 #创建网桥
virsh attach-interface [virt name] --type bridge --model virtio --source br1 #添加网卡
7.热添加cpu和内存资源
#需要在安装虚拟机时设置好动态分配
virsh setvcpus [virt name] --count=8 #设置成8核
virsh setmem [virt name] --size=8388608 #设置成8G内存
#永久生效命令
virsh dumpxml [virt name] > [virt name].xml
virsh define [virt name].xml