secondid 2019-12-16
什么是KVM虚拟化?
KVM,内核级虚拟化技术 Kernel-based Virtual Machine 。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。虚拟化就是通过模拟计算机硬件(cpu,内存,硬盘,网卡)来实现在一台物理服务器上运行同时多个不同的操作系统,使每个操作系统之间都是互相隔离的,并且应用程序都可以在相互独立的空间内运行而互不影响,可以实现资源的动态分配、灵活调度、跨域共享,提高资源利用率,服务于各行各业中灵活多变的应用需求。从而显著提高服务?的工作效率。
KVM架构
KVM 基本上有两个组件构成:
* kvm 驱动 现在已经是Linux内核的一个模块了,它的作用主要是负责虚拟机的创建,虚拟内存的分配 虚拟CPU寄存器的读写和虚拟cpu的运行 * 另一个组件是 Qemu QEMU是一个通用的开源机器模拟器和虚拟器,其主要的功能是用于模拟虚拟机的用户空间组件,提供io 设备模型,访问外设的途径
Qemu 是什么?
Qemu 是纯软件设计的虚拟化模拟器,几乎可以模拟任何硬件设备,我们最熟悉的就是能够模拟一台能够独立运行操作系统的虚拟机,虚拟机认为自己和虚拟机打交道,但其实是和Qemu模拟出来的硬件打交道,Qemu 将这些真正的指令转译给真正的硬件
* 虚拟化的技术优点
(1)降低运营成本 (2)提高应用兼容性 (3)加速应用部署 (4)提高服务可用性 (5)提升资源利用率 (6)动态调度资源 (7)降低能源消耗
KVM应用场景
* 场景1:只有一台服务器,但是要运行多个版本的软件,不同版本之间还相互冲突 * 场景2:机房的迁移,物理机在运输过程中容易损坏,导致数据丢失 * 场景3:openstack部署太难!步骤太繁琐,如何体验最新版的openstack * 场景4:开发环境和测试环境经常损坏,运维重复装系统 * 场景5:业务的扩张,需要快速部署10个一模一样的集群
* 服务器规划
操作系统 | 主机名 | IP地址 | 内存大小 | 硬盘大小 |
---|---|---|---|---|
CentOS7.4 | kvm01 | 10.0.0.11/24 | 4G | 100G |
// 查看当前系统版本 [ ~]# hostnamectl Static hostname: kvm01 Icon name: computer-vm Chassis: vm Machine ID: 6878674c84644fd381a5e3a82d80cf18 Boot ID: fd8e37aca7e4421fa5674fc0fff147e9 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-693.el7.x86_64 Architecture: x86-64 // 设定主机名 [ ~]# hostnamectl set-hostname kvm01 // 关闭防火墙 [ ~]# systemctl stop firewalld [ ~]# systemctl disable firewalld // 关闭Selinux [ ~]# sed -i ‘/SELINUX=/cSELINUX=disabled‘ /etc/selinux/config [ ~]# setenforce 0 // 配置hosts解析 [ ~]# echo "10.0.0.11 kvm01" >> /etc/hosts
* 确认开启虚拟化
KVM需要硬件支持, 所以需要开启虚拟化支持
1.硬件设备直接在BIOS设置开启CPU虚拟化
2.个人电脑同样进入BIOS开启虚拟化支持
3.VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技术
# 没有任何内容则表示服务?没有启用虚拟化 [ ~]# egrep ‘(vmx|svm)‘ /proc/cpuinfo
* 安装KVM
#安装kvm依赖 yum install qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install openssh-askpass –y #启动libvirtd服务 systemctl start libvirtd.service systemctl enable libvirtd.service systemctl status libvirtd.service #注意: 启动后会新增一块virbr0网络 创建桥接网络 virsh iface-bridge eth0 br0
* windows系统上安装 tightvnc 软件
`http://www.tightvnc.com``
* KVM安装CentOS 7 系统
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name centos7 --memory 1024 --vcpus 1 --disk /opt/centos2.raw,format=raw,size=10 --cdrom /opt/CentOS-7-x86_64-DVD-1708.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole //参数概述 --virt-type:指定虚拟机类型(kvm、qemu、xen) --name:指定虚拟机名称 --raw:指定虚拟机使?用内存大小 --cpu:指定cpu的核数(默认为1) --cdrom:指定虚拟机安装的ISO镜像 --disk:指定虚拟机数据存储磁盘qcow2 --network:指定虚拟机网络类型, 默认nat,常用bridge --graphics:指定虚拟机可连接?方式, 比如VNC --noautoconsole:不连接虚拟机图形界面控制台
* 显示下图则表示成功
* 使用VNC软件进行连接
* 常规安装CentOS 7(安装系统时先把网卡名称改为eth0,在配置网络时可以只是开启自启动,不配置IP地址。磁盘分区选择标准分区)
* 结果显示:
同样是上传windows的镜像到/opt目录下
# 创建qcow2格式的虚拟磁盘 [ opt]# qemu-img create -f qcow2 windows7.qcow2 +50G [ opt]# ls -l total 18684784 -rw-r--r-- 1 qemu qemu 197120 Dec 5 21:28 centos7.qcow2 -rw-r--r-- 1 qemu qemu 1844969472 Dec 5 21:58 Centos7u5.qcow2 -rw-r--r-- 1 qemu qemu 4470079488 Dec 4 23:00 CentOS-7-x86_64-DVD-1804.iso -rw-r--r-- 1 qemu qemu 3420557312 Dec 15 21:08 Windows7.iso -rw-r--r-- 1 root root 9397534720 Dec 16 02:04 windows7.qcow2 # virt-install命令创建windows虚拟机 [ opt]# virt-install --name Windows7 --virt-type kvm --ram 2048 --cdrom=/opt/Windows7.iso --disk path=/opt/windows7.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole # 注意: Win7 安装过程, 内存与磁盘不够会导致系统安装慢或失败
使用VNC软件进行连接并安装Windows
# 查看所有的KVM虚拟机 [ opt]# virsh list --all Id Name State ---------------------------------------------------- - Windows7 running - centos7 shut off