KVM 是Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的 各个主要发行版本中,KVM目前已成为学术界的主流 VMM (virtual machine monitor,虚拟机监视器,也称为 hypervisor)之一。
#kvm定义
KVM是什么?一文带你快速了解 Linux KVM 虚拟化
#红帽基于KVM对虚拟机的最大资源支持及限制
Virtualization limits for Red Hat Enterprise Linux with KVM - Red Hat Customer Portal
#红帽虚拟化入门指南
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/virtualization_getting_started_guide/index
#KVM 官网
https://www.linux-kvm.org/page/Virtio #libvirt https://libvirt.org/
#libvirt
https://libvirt.org/
RedHat创建虚拟机数量限制:
KVM结构图:
目前在各大公有云厂商新购买的虚拟机基本运行在KVM环境下,就连早期一直使用Xen的AWS也在2017年开始逐渐 转换到KVM环境,以下是AWS基于KVM技术提供的最新示例部分性能。
KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术),是基于硬件的完全虚拟化,而Xen早期则是基于软 件模拟的半虚拟化,新版本则是支持基于硬件支持的完全虚拟化,但Xen本身有自己的进程调度器,存储管理模块 等,所以代码较为庞大,广为流传的商业系统虚拟化软件VMware ESXI系列是Full-Virtualization,IBM文档:htt p://www.ibm.com/developerworks/cn/linux/l-using-kvm/
宿主机环境准备:
KVM需要宿主机CPU必须支持虚拟化功能,因此如果是在vmware workstation上使用虚拟机做宿主机,那么必须 要在虚拟机配置界面的处理器选项中开启虚拟机化功能。
VMware开启kvm
CPU指令集:
X86/x86_64 架构
主导桌面与服务器芯片市场
1968年Intel成立,x86架构就是Intel研发的,并且在后来授权给AMD使用。 2003年AMD推出64位处理器,并授权给Intel使用。所以我们平日里见到的inter,cpu架构是x86,x86_64位是amd
ARM 架构
手机:华为 小米 三星 苹果
pad:华为 小米 三星 苹果
机顶盒:各电视机顶盒
华为泰山服务器-鲲鹏系列CPU
POWER 架构
由IBM设计,POWER系列微处理器在不少IBM服务器、超级计算机、小型计算机及工作站中,广泛使用。
RISC-V 架构
RISC-V International
当前CPU的两大架构是CISC(复杂指令集)和RISC(精简指令集),x86是CISC的代表架构,占领了95%以上的桌 面计算机和服务器市场。Arm作为RISC的一种,在智能手机、可穿戴设备等移动处理器市场占领主要地位,针对物 联网、5G、AI新兴领域的应用,RISC-V和MIPS两大精简指令集架构再次登上历史舞台。
RISC-V 架构参与企业
阿里巴巴集团、华米科技等
阿里云玄铁RISC-V
平头哥 - 以芯力量拥抱数智未来
查看是否开启kvm模块:lsmod |grep kvm
验证开启虚拟化,查看cpu核数
[root@centos7 ~]#grep -E "vmx|svm" /proc/cpuinfo | wc -l
1
Ubuntu 18.04:
Virtualization - libvirt | Ubuntu
centos安装kvm步骤如下:
yum install qemu-kvm qemu-kvm-tools libvirt libvirt-client virt-manager virt-install
设置为开机自启并启动服务
systemctl start libvirtd
systemctl enable libvirtd
配置文件/etc/libvirt/qemu/networks/default.xml
图形化工具:virt-manager
grep "192.168.122.1" /etc/libvirt/ -R
#创建一个格式为raw大小为10G的裸磁盘
qemu-img create -f raw /var/lib/libvirt/images/CentOS-7-x86_64.raw 1G
在磁盘扇区里做了标记,并没有实际写数据
[root@centos7 ~]#ll -h /var/lib/libvirt/images/CentOS-7-x86_64.raw
-rw-r--r-- 1 root root 1.0G 4月 25 20:36 /var/lib/libvirt/images/CentOS-7-x86_64.raw
#创建一个格式为qcow2大小为10G的稀疏格式磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 1G
[root@centos7 ~]#ll -h /var/lib/libvirt/images/centos.qcow2
-rw-r--r-- 1 root root 193K 4月 25 20:39 /var/lib/libvirt/images/centos.qcow2
创建NAT网络虚拟机:
KVM管理工具
libvirt:使用最多的KVM虚拟化管理工具和应用程序接口,即通过libvirt调用KVM创建虚拟机,libvirt是KVM通用的访问 API,其不但能管理KVM,还能管理VMware、Xen、Hyper-V、virtualBox等虚拟化方案。
virsh:是一个常用的管理KVM虚拟化的命令行工具,常用语管理运行在单个宿主机上的虚拟机,virsh是一个使用C语言编写调 用libvirt API的虚拟化管理命令行工具。
virt-manager: virt-manager是一个虚拟化管理图形软件,其底层也是调用libvirt API来完成对虚拟机的操作,包括虚拟机的 创建、删除、启动、停止以及一些简单的监控功能等
openstack:openstack是一个开源的虚拟化编排工具,常用于构建大规模的虚拟化环境,用语管理成千上万虚拟机的创建、启 动、删除等整个生命周期。
libvirt结构图:
virsh-install命令使用帮助:
virt-install -–help
创建磁盘:
创建一台虚拟机,并使用默认的NAT网络,可以使虚拟机连接外网。
上传镜像并安装Centos 7.X虚拟机:
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7.qcow2 10G
virt-install --virt-type kvm --name centos7.20 --ram 1024 --vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Everything-1511.iso --disk path=/var/lib/libvirt/images/centos7.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --check path_in_use=off
打开图形化工具,virt-manager
此时需要立马在屏幕上输入,enter,键入t.ifnames=0 biosdevname=0
关闭网卡设备的内核参数
此时出来和我们正常在虚拟机里面装系统一样的界面
查看正在启动的kvm服务
virsh list
查看所有kvm服务(无论是否开关机)
virsh list –all
通过virt-manager管理虚拟机:
验证IP地址:
安装net-tools命令,并查看本机的当前IP地址是多少,目前自动获取到的IP地址是NAT分配的192.168.122.x地址 段,此ip地址可以从出外网访问但是无法从外网主从访问到此虚拟机上的相关服务。
在宿主机验证虚拟机进程:
acpid
yum install acpid
创建桥接网络虚拟机:
桥接网络可以让运行在宿主机上的虚拟机使用和宿主机同网段IP,并且可以从外部直接访问到虚拟机,目前企业中 大部分场景都使用桥接网络。
创建桥接网卡,以centos7为例;
vim /etc/sysconfig/network-scripts/ ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=172.18.200.101
NETMASK=255.255.0.0
GATEWAY=172.18.0.1
DNS1=172.18.0.1
cp ifcfg-eth0 ifcfg-eth0_bak
vim ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
重启网卡服务
systemctl restart network
上传镜像并安装虚拟机
创建系统磁盘
qemu-img create -f qcow2 /var/lib/libvirt/images/centos7-bridge.qcow2 10G
创建基于桥接网络的虚拟机
virt-install --virt-type kvm --name centos7.20 --ram 1024 --vcpus 2 --cdrom=/usr/local/src/CentOS-7-x86_64-Everything-1511.iso --disk path=/var/lib/libvirt/images/centos7-bridge.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --check path_in_use=off
使用图形化管理工具,virt-manager,管理虚拟机