KVM(Kernel-based Virtual Machine)是一种基于内核的虚拟化技术,其核心思想是将宿主机的硬件资源抽象为虚拟机,使多个虚拟机可以同时运行在一个物理服务器上。每个虚拟机都拥有独立的操作系统、应用程序和用户空间,彼此之间相互隔离,确保了系统的稳定性和安全性。
KVM虚拟化技术具有高性能、低成本、灵活性和兼容性等特点。它直接利用宿主机的硬件资源,无需额外的模拟和解释,性能可以达到宿主机的90%以上。此外,由于KVM是开源的,用户可以免费使用,并且支持多种虚拟化场景,如单机部署、分布式部署、私有云和公有云等。
KVM虚拟化技术在云计算、Web托管等领域具有广泛的应用,可以帮助企业实现资源共享、高可用性和快速部署的目标,同时提高数据安全性和隔离性。未来,KVM虚拟化技术将继续与容器化技术结合,提供更灵活的应用部署模式,并进一步提高自动化程度和安全隔离性。
虚拟机常⽤的管理⼯具
libvirt:是调⽤KVM创建虚拟机的⼯具,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化⽅案。
virsh: 是⼀个常⽤的管理KVM虚拟化的命令⾏⼯具
virt-manager: virt-manager是⼀个虚拟化管理图形软件,包括虚拟机的创建、删除、启动、停⽌以及⼀些简单的监控功能等。
openstack: openstack是⼀个开源的虚拟化编排⼯具,常⽤于构建⼤规模的虚拟化环境,⽤于管理成千上万虚拟机的创建、启 动、删除等整个⽣命周期。
环境
主机名称 | IP地址 | 系统 | 硬件环境 |
---|---|---|---|
kvm01 | 192.168.200.133 | Redhat 9.2 | 1u 4核,10G内存,100G硬盘 |
步骤
开机检查CPU是否支持虚拟化功能
vmx
是 Intel CPU 的虚拟化技术(VT-x)的标识符,而 svm
是 AMD CPU 的 Secure Virtual Machine(SVM)的标识符
[root@KVM01 ~]# egrep -o 'vmx|svm' /proc/cpuinfo
svm
svm
svm
svm
svm
svm
svm
svm
[root@KVM01 ~]#
安装软件包
[root@KVM01 ~]# yum -y install libvirt virt-install qemu-kvm
正在更新 Subscription Management 软件仓库。
无法读取客户身份
本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。
AppStream 3.1 MB/s | 3.2 kB 00:00
BaseOS 2.7 MB/s | 2.7 kB 00:00
依赖关系解决。
===========================================================================================
软件包 架构 版本 仓库 大小
===========================================================================================
安装:
省略 。 。。 。 。
启动服务
[root@KVM01 ~]# systemctl restart libvirtd
[root@KVM01 ~]# systemctl enable libvirtd
Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.
[root@KVM01 ~]#
使用centos7镜像创建一个虚拟机
//此处镜像上传到虚拟机
[root@KVM01 ~]# cd /opt/
[root@KVM01 opt]# ls
AppStream CentOS-7-x86_64-DVD-2009.iso
[root@KVM01 opt]#
上传后通过如下命令创建KVM虚拟机
[root@KVM01 ~]# virt-install --name centos7 --memory 2048 --vcpus 2 --cdrom /opt/CentOS-7-x86_64-DVD-2009.iso --network network=default --disk /opt/centos7.image,format=raw,size=40 --os-variant=centos7 --graphics vnc,listen=0.0.0.0,port=5900 --noautoconsole
开始安装......
正在分配 'centos7.image' | 40 GB 00:00:00
创建域...... | 00:00:00
域仍在运行。安装可能正在进行中。
可以重新连接到控制台以完成安装过程。
[root@KVM01 ~]#
参数解释
-
--name 指定创建虚拟机的名字
-
--memory 2048 指定创建虚拟机的内存大小。这里是2048MB,即2GB。你可以根据需要调整这个值。
-
--vcpus 2 虚拟cpu的核数
-
--cdrom /opt/CentOS-7-x86_64-DVD-2009.iso 指定虚拟机安装时使用的ISO镜像文件的路径
-
--network network=default 指定虚拟机使用的网络配置。
default
通常是一个预定义的网络,但你也可以根据需要指定其他网络配置。 -
--disk /opt/centos7.image,format=raw,size=40 指定虚拟机使用的磁盘映像文件的路径、格式、和存储大小
-
--os-variant=centos7 这个参数指定了虚拟机操作系统的类型和版本
-
--graphics vnc,listen=0.0.0.0 配置虚拟机的图形界面。这里使用VNC协议来提供图形界面,并监听所有可用的网络接口(
0.0.0.0
)。你可以使用VNC客户端连接到这个地址和指定的端口(默认为5900)来查看和控制虚拟机的图形界面。 -
--noautoconsole 指定不自动显示虚拟机的控制台输出。当你使用图形界面(如VNC)来查看和控制虚拟机时
基本命令
[root@KVM01 ~]# virsh list --all //查看所有的虚拟机状态
[root@kvm01 ~]# virsh destroy 虚拟机名 //关闭电源
[root@kvm01 ~]# virsh undefine 虚拟机名 //删除虚拟机 (删除完也需要删除磁盘文件,如刚刚创建的/opt下的centos.image文件,将其删除)
查看状态以及端口
[root@KVM01 ~]# virsh list --all
Id 名称 状态
----------------------
2 centos7 运行
[root@KVM01 ~]# netstat -ntlp | grep 5900
tcp 0 0 0.0.0.0:5900 0.0.0.0:* LISTEN 36560/qemu-kvm
打开VNC软件(软件百度查找)
继续进行安装即可
配置完成等待安装完成