kvm虚拟化的概念及常见用法

1、详解虚拟化,KVM

虚拟化:

在计算机技术中,虚拟化(Virtualization)是⼀种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、⽹络适配器等),予以抽象、转换后呈现出来并可供分割、组合为⼀个或多个计算机配置环境,并重新分割、重新组合,以达到最⼤化合理利⽤物理资源的⽬的。
虚拟化可以提⾼ IT 敏捷性、灵活性和可扩展性,同时⼤幅节约成本,实现更⾼的⼯作负载移动性、更⾼的性能和资源可⽤性、⾃动化运维 - 这些都是虚拟化的优势,虚拟化技术可以使 IT 部⻔更轻松地进⾏管理以及降低拥有成本和运维成本。其他优势包括:

虚拟化技术分类:

模拟器:

在一个host之上通过虚拟化模拟器软件,模拟出一个硬件或者多个硬件环境,每个环境都是一个独立的虚拟机,CPU、IO、内存等都是模拟出来的,可以在宿主机模拟出不同于当前物理机CPU指令集的虚拟机,比如可以在Windows 模拟出mac OS、unix系统,比较出名的模拟器有:pearpc、QEMU、Bochs。

全虚拟机化 full virtualization / 准虚拟化 native virtualization:
全虚拟化/准虚拟化不做CPU和内存模拟,只对CPU和内存做相应的分配等操作,全虚拟化需要物理硬件的支持,比如需要CPU必须支持并且打开虚拟化功能,例如Intel 的 Intel VT-X/EPT,AMD的AMD-V/RVI,以在CPU 层面支持虚拟化功能和内存虚拟化技术,因此完全虚拟化也是基于硬件辅助的虚拟化技术。

全虚拟化软件(硬件辅助全虚拟化):
vmware workstation
#https://www.vmware.com/cn/products/workstation-pro.html
vmware esxi
paralles desktop
KVM
Microsoft Hyper-V
VirtualBox

KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 Qemu 则负责 I/O 虚拟化,两者合作各自发挥自身的优势

半虚拟化 para virtualization:

半虚拟化要求guest OS 的内核是知道自己运行在虚拟化环境当中的,因此guest OS的系统架构必须和宿主机的系统架构相同,并且要求对guest OS的内核做相应的修改,因此半虚拟化只支持开源内核的系统,不支持闭源的系统,比较常⻅的半虚拟化就是早期版本的XEN,但是Xen 从其3.0 版本开始,可以支持利用硬件虚拟化技术的支持(http://wwwarchive.xenproject.org/files/xen_3.0_datasheet.pdf),实现了完全虚拟化,可以在其平台上不加修改的直接运行如Linux/Windows 等系列的操作系统,使得系统具备了更好的兼容性。

半虚拟化软件:
Xen
Domain 0:
Domain 0 是一个修改过的 Linux kernel,是唯一运行在 Xen Hypervisor 之上的虚拟机,它拥有访问物理 I/O 资源的权限,同时和系统上运行的其他虚拟机进行交互。Domain 0 需要在其它 Domain 启动之前启动。

Domain U:
运行在 Xen Hypervisor 上的所有半虚拟化(paravirtualized)虚拟机被称为"Domain U PV Guests",其上运行着被修改过内核的操作系统,如Linux、Solaris、FreeBSD 等其它 UNIX 操作系统。所有的全虚拟化虚拟机被称为“Domain U HVM Guests”,其上运行着不用修改内核的操作系统,如 Windows 等。

Hypervisor类型:

Hypervisor是一种运行在基础物理服务器和操作系统之间的中间软件层,其可以允许多个操作系统和应用共享底层的内存、CPU、磁盘等物理硬件,也可叫做VMM( virtual machine monitor ),即虚拟机监视器。

Hypervisor是所有虚拟化技术的核心,非中断地支持多工作负载迁移的能力是Hypervisor的基本功能,当服务器启动并执行Hypervisor时,它会给每一台虚拟机分配适量的内存、CPU、网络和磁盘,并加载所有虚拟机的客户操作系统。

直接运行到物理机:

vmware esxi
rhev hypervisor

需要运行到操作系统:

KVM,XEN
vmware workstation
paralles desktop
Microsoft Hyper-V
VirtualBox

常见的hypervisor类型:

类型I-裸机型:直接运行在硬件设备上的,这种架构搭建的虚拟化环境称为裸机虚拟化环境(Bare-Metal Hardware Virtualization),比如:VMware ESXI、KVM
类型II-主机托管型,运行在具有虚拟化功能的操作系统上的,构建的是主机虚拟化环境(Hosted Virtualization),比如:VMware Workstation、VirtualBox

#Redhat将KVM划分到类型I即裸机型:
https://www.redhat.com/zh/topics/virtualization/what-is-KVM

2、使用KVM创建nat和bridge网络虚拟机

nat网络虚拟机

上传镜像并安装Centos 7.X虚拟机:

[root@localhost ~]# ll /data/ISOs/CentOS-7.iso 
-rw-r--r-- 1 qemu qemu 4649385984 Dec 15 10:53 /data/ISOs/CentOS-7.iso

#创建qcow2格式磁盘
[root@localhost ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/centos.qcow2 10G  

# 创建默认网络虚拟机
virt-install --virt-type kvm --name centos7 \
--ram 1024 \
--vcpus 2 \
--cdrom=/data/ISOs/CentOS-7.iso \
--disk path=/var/lib/libvirt/images/centos.qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

# --ram 等同于 --memory

# 打开manager安装
[root@localhost ~]# virt-manager

请添加图片描述

双击刚创建的虚拟机,开始安装。

bridge网络虚拟机

创建br0桥接网卡:

[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts

[root@localhost network-scripts]# cat ifcfg-br0 
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.206.201
NETMASK=255.255.255.0
GATEWAY=192.168.206.2
DNS1=114.114.114.114
DNS2=223.5.5.5

[root@localhost network-scripts]# cat ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0

systemctl restart network

上传镜像并安装虚拟机:

[root@localhost ~]# ll /data/ISOs/CentOS-7.iso 
-rw-r--r-- 1 qemu qemu 4649385984 Dec 15 10:53 /data/ISOs/CentOS-7.iso

#创建系统磁盘:
# qemu-img create -f qcow2 /var/lib/libvirt/images/centos7-bridge.qcow2 10G
Formatting '/var/lib/libvirt/images/centos7-bridge.qcow2',fmt=qcow2 size=10737418240 cluster_size=65536 lazy_refcounts=off refcount_bi ts=16

#创建基于桥接网络的虚拟机
# virt-install \
--virt-type kvm \
--name centos7-bridge \
--ram 1024 \
--vcpus 2 \
--cdrom=/data/ISOs/CentOS-7.iso \
--disk path=/var/lib/libvirt/images/centos7-bridge.qcow2 \
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

# 注意: bridge和nat的区别是--network 参数

# 打开manager安装
[root@localhost ~]# virt-manager

3、使用KVM创建windows10虚拟机

创建镜像

cd /var/lib/libvirt/images/
qemu-img create -f qcow2 win10.qcow2 60G

下载virtio驱动

https://fedorapeople.org/groups/virt/virtio-win/

创建基于桥接网络的win10

virt-install \
--virt-type kvm \
--name Win10 \
--memory 2048 \
--vcpus=2 \
--os-type=windows \
--cdrom=/data/ISOs/win10.iso \
--disk path=/var/lib/libvirt/images/win10.qcow2,format=qcow2,bus=virtio \
--disk path=/data/ISOs/virtio-win-0.1.190.iso,device=cdrom \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole
# --disk path=/data/ISOs/virtio-win-0.1.190.iso,device=cdrom  这个指向virtio的驱动,如果是软驱device=floppy.

打开virt-manager继续以下的操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以后的操作跟在真机操作没有区别了

4、如何快速创建虚拟机

快速创建虚拟机有两种方式

第一:复制已经按照完成的虚拟机image文件,创建新虚拟机时,指定成刚才复制的。

cd /var/lib/libvirt/images
cp centos7-bridge.qcow2 centos72-bridge.qcow2


virt-install \
--virt-type kvm \
--name centos72-bridge \   # 名字不能重复,这里需要改
--ram 1024 \
--vcpus 2 \
--cdrom=/data/ISOs/CentOS-7.iso \
--disk path=/var/lib/libvirt/images/centos72-bridge.qcow2 \  # 这里指定复制后的文件名
--network bridge=br0 \
--graphics vnc,listen=0.0.0.0 \
--noautoconsole

virt-manager

在这里插入图片描述

看到此界面,直接重启就好

第二种方法:把已经按照好的虚拟机当模版,用virt-manager克隆
在这里插入图片描述
在这里插入图片描述
稍等片刻,虚拟机克隆完成
在这里插入图片描述

5、将vmvare虚拟机迁移到KVM环境。

找到vmware的磁盘文件
在这里插入图片描述
上传此文件到kvm服务器/var/lib/libvirt/images/

执行格式转换

qemu-img convert -f vmdk  -O qcow2 /root/centos.vmdk  centos7.qcow2
qemu-img convert   -O qcow2 /root/centos.vmdk  centos7.qcow2
# -f 源文件格式
# -O 输出文件格式
# /root/centos.vmdk   源文件路径加名字,只写名字会在当前目录查找
# centos7.qcow2	  输出文件路径加名字,只有名字会在当前目录生成
# 经过测试 -f 参数可省略

kvm导入虚拟机

打开vitr-manager
在这里插入图片描述
选择刚才转换过的磁盘文件
在这里插入图片描述

正常启动即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值