KVM虚拟化之安装KVM虚拟机(一)

KVM虚拟化

1、KVM虚拟化介绍与应用场景

什么是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个一模一样的集群

2、安装KVM虚拟化

* 服务器规划

操作系统 主机 IP地址 内存大小 硬盘大小
CentOS7.4 kvm01 10.0.0.11/24 4G 100G
  • 基础环境配置
// 查看当前系统版本
[root@kvm01 ~]# 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
// 设定主机名
[root@kvm01 ~]# hostnamectl set-hostname kvm01
// 关闭防火墙
[root@kvm01 ~]# systemctl stop firewalld
[root@kvm01 ~]# systemctl disable firewalld
// 关闭Selinux
[root@kvm01 ~]# sed -i '/SELINUX=/cSELINUX=disabled'  /etc/selinux/config
[root@kvm01 ~]# setenforce 0
// 配置hosts解析
[root@kvm01 ~]# echo "10.0.0.11 kvm01" >> /etc/hosts

* 确认开启虚拟化

KVM需要硬件支持, 所以需要开启虚拟化支持

1.硬件设备直接在BIOS设置开启CPU虚拟化
2.个人电脑同样进入BIOS开启虚拟化支持
3.VM需要找到对应虚拟机开启对应的VT-EPT虚拟化技术

# 没有任何内容则表示服务器没有启用虚拟化
[root@kvm01 ~]# egrep '(vmx|svm)' /proc/cpuinfo

KVM虚拟化之安装KVM虚拟机(一)

* 安装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

KVM虚拟机安装CentOS7系统

* windows系统上安装 tightvnc 软件
`http://www.tightvnc.com``

  • 通过xftp上传iso镜像到/opt目录下

KVM虚拟化之安装KVM虚拟机(一)

* 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:不连接虚拟机图形界面控制台

* 显示下图则表示成功

KVM虚拟化之安装KVM虚拟机(一)

* 使用VNC软件进行连接
KVM虚拟化之安装KVM虚拟机(一)

* 常规安装CentOS 7(安装系统时先把网卡名称改为eth0,在配置网络时可以只是开启自启动,不配置IP地址。磁盘分区选择标准分区)
KVM虚拟化之安装KVM虚拟机(一)

* 结果显示:

KVM虚拟化之安装KVM虚拟机(一)

KVM虚拟机安装Windows系统

同样是上传windows的镜像到/opt目录下

# 创建qcow2格式的虚拟磁盘
[root@kvm01 opt]# qemu-img create -f qcow2 windows7.qcow2 +50G
[root@kvm01 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虚拟机
[root@kvm01 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虚拟化之安装KVM虚拟机(一)

  • 结果图:(安装过程比较慢)
    KVM虚拟化之安装KVM虚拟机(一)
# 查看所有的KVM虚拟机
[root@kvm01 opt]# virsh list --all
Id    Name                           State
----------------------------------------------------
-     Windows7                       running
-     centos7                          shut off