一、什么是KVM
红帽官方介绍的真的简单全面,请点击上方链接查看
二、安装KVM
# 第一步、换源 参考清华源官网
https://mirrors.tuna.tsinghua.edu.cn/help/debian/
# 第二步、检查虚拟化开启
LC_ALL=C lscpu | grep Virtualization
# 检查输出结果,例如:
Virtualization: VT-x
Virtualization: AMD-Vapt update
# 第三步、安装KVM相关组件
apt update
apt install qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon -y
# 第四步、验证 KVM 安装
# 安装完成后,可通过以下命令查看 KVM 模块是否已加载:
lsmod | grep -i kvm
# 检查输出结果,例如:
kvm_intel 380928 0
kvm 1146880 1 kvm_intel
irqbypass 16384 1 kvm
# 启动并启用 libvirtd 服务
systemctl enable libvirtd --now
# 查看状态
systemctl status libvirtd
# 第五步、安装 Cockpit 可以把Cockpit的组件全装上,组件功能在web页面里显示
# 注意 Cockpit 是web管理组件。 我这里因为是服务器没有桌面所以没安装virt-manager
# 如果你需要用virt-manager 安装即可
apt install cockpit cockpit-machines cockpit-podman
systemctl enable cockpit.socket --now
systemctl status cockpit.socket
# 为特定用户设置权限,可以先创建用户和组。例如,创建一个名为 cockpituser 的用户,并将其加入到 sudo 组
sudo adduser cockpituser
sudo usermod -aG sudo cockpituser
或者
/usr/sbin/usermod -a -G sudo cockpituser
# 添加
sudo vim /etc/sudoers
root ALL=(ALL:ALL) ALL
cockpituser ALL=(All:AAL) ALL
# 访问网页
ip:9090
# 桥接网络快速(不一定生效,详细的见下边的)
vim /etc/network/interfaces
注释 iface ens333 inet dhcp
# 网页添加网桥 重启服务,不行重启机器
直接看文档就好
三、如何使用 KVM 管理虚拟机
3.1、libvirt 和 virsh
libvirt 项目提供了用于管理虚拟化平台的 API。libvirt 中的 virsh 是一种命令行实用程序,用于创建、启动、列出和停止虚拟机,以及进入虚拟化 shell。
3.2、虚拟机管理器
虚拟机管理器(称为 VMM 或 virt-manager)为虚拟机提供了一个桌面界面,适用于主流的 Linux 发行版。
3.3、Web 控制台
虚拟机管理员可以选择使用基于 Web 的界面来管理虚拟机。例如,借助 Cockpit 提供的解决方案,用户可以从 Web 界面管理虚拟机。红帽企业 Linux 提供了一个针对虚拟化的 Web 控制台插件。
3.4、KubeVirt
KubeVirt 是用于管理 Kubernetes 环境中大量虚拟机的一种解决方案,可将虚拟机与容器化应用一同管理。Kubevirt 为红帽 OpenShift® 虚拟化奠定了基础。
四、安装管理虚拟机GuestOS
4.1、安装虚拟机
4.1.1、图形界面安装
4.1.2、文本方式安装
# 例子1
virt-install --connect qemu:///system -n vm6 -r 512 --disk
path=/virhost/vmware/vm6.img,size=7 --os-type=linux --os-variant=rhel6 --
vcpus=1 --network bridge=br0 --location=http://127.0.0.1/rhel6u4 -x
console=ttyS0 --nographics
# 例子2
virt-install --connect qemu:///system -n vm9 -r 2048 --disk
path=/var/lib/libvirt/images/vm9.img,size=7 --os-type=linux --osvariant=centos7.0 --vcpus=1 --location=ftp://192.168.100.230/centos7u3 -x
console=ttyS0 --nographics
4.1.3、命令行模式安装
ls /etc/libvirt/qemu
ls /var/lib/libvirt/images/
# 1.需要有磁盘镜像⽂件:
cp vm1.img vm2.img
# 2.需要有配置⽂件
cp vm1.xml vm2.xml
# 3.配置⽂件需要修改必要的内容
# 4.创建虚拟机:
virsh define /etc/libvirt/qemu/vm2.xml
# 例子 配置⽂件需要修改必要的内容
vim /etc/libvirt/qemu/vm3.xml
<domain type='KVM'>
<name>vm3</name>
<uuid>a2f62549-c6b7-4b8f-a8e2-c14edda35a78</uuid>
<memory unit='KiB'>2099200</memory>
<currentMemory unit='KiB'>2099200</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
</features>
<cpu mode='custom' match='exact' check='partial'>
<model fallback='allow'>Haswell-noTSX</model>
</cpu>
<clock offset='utc'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/libexec/qemu-KVM</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm3.im'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x06'
function='0x0'/>
</disk>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm3-1.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x16'
function='0x0'/>
</disk>
<controller type='usb' index='0' model='ich9-ehci1'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x7'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci1'>
<master startport='0'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x0' multifunction='on'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci2'>
<master startport='2'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x1'/>
</controller>
<controller type='usb' index='0' model='ich9-uhci3'>
<master startport='4'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04'
function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:f2:28:6f'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='unix'>
<target type='virtio' name='org.qemu.guest_agent.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x07'
function='0x0'/>
</memballoon>
</devices>
</domain>
4.1.4、Web方式安装
4.2、管理虚拟机
# 开启nat网络
virsh net-start default
# 开机自启
virsh net-autostart default
virsh net-list --all
# 开启桥接网络
# 1、系统创建桥街网卡即可, 2、网页里增加网桥网络
vim /etc/network/interfaces.d/br0
auto br0
iface br0 inet static
address 192.168.2.172
broadcast 192.168.2.255
netmask 255.255.255.0
gateway 192.168.2.1
bridge_ports enp5s0
bridge_stp off
bridge_waitport 0
bridge_fd 0
dns-nameserver 223.5.5.5 223.6.6.6
查看虚拟机:
[root@qfedu.com ~]# virsh list
Id Name State
----------------------------------------------------
2 vm1 running
[root@qfedu.com ~]# virsh list --all
Id Name State
----------------------------------------------------
2 vm1 running
查看KVM虚拟机配置⽂件(X):
[root@qfedu.com ~]# virsh dumpxml name
将node4虚拟机的配置⽂件保存⾄node6.xml(X):
[root@qfedu.com ~]# virsh dumpxml node4 > /etc/libvirt/qemu/node6.xml
修改node6的配置⽂件(X):
[root@qfedu.com ~]# virsh edit node6
如果直接⽤vim编辑器修改配置⽂件的话,需要重启libvirtd服务
启动:
[root@qfedu.com ~]# virsh start vm1
Domain vm1 started
暂停虚拟机:
#virsh suspend vm_name
恢复虚拟机:
#virsh resume vm_name
关闭:
⽅法1:
[root@qfedu.com ~]# virsh shutdown vm1
Domain vm1 is being shutdown
⽅法2(X):
[root@qfedu.com ~]# virsh destroy vm1
Domain vm1 destroyed
重启:
[root@qfedu.com ~]# virsh reboot vm1
Domain vm1 is being reboote
重置:
[root@qfedu.com ~]# virsh reset vm1
Domain vm1 was reset
删除虚拟机:
2、虚拟机克隆
1.图形界⾯
Applications (左上⻆)-----> System Tools ------>Virtual Machine Manager
关闭要克隆的虚拟机,右键点击虚拟机选择Clone
2.字符终端,命令克隆
[root@qfedu.com ~]# virsh undefine vm2
Domain vm2 has been undefined
注意:虚拟机在开启的情况下undefine是⽆法删除的,但是如果再destroy会直接被删除掉
虚拟机开机⾃动启动:
[root@qfedu.com ~]# virsh autostart vm1
域 vm1标记为⾃动开始
[root@qfedu.com ~]# ls /etc/libvirt/qemu/autostart/ //此⽬录默认不存在,在
有开机启动的虚拟机时⾃动创建
vm1.xml
[root@qfedu.com ~]# virsh autostart --disable vm1
域 vm1取消标记为⾃动开始
查看所有开机⾃启的guest os:
[root@qfedu.com ~]# ls /etc/libvirt/qemu/autostart/
[root@qfedu.com ~]# virsh list --all --autostart