文章目录
一、KVM简介
- 广义的KVM实际上包含两个部分,一部分是基于Linux内核支持的KVM内核模块,另一部分是经过简化和修改的Qemu
- KVM内核模块模拟处理器和内存以支持虚拟机的运行,Qemu主要处理I/O以及为用户提供一个用户空间来进行虚拟机的管理。两者相互结合,相辅相成,构成了一个完整的虚拟化平台
二、虚拟化类型
- 全虚拟化:将物理硬件资源全部通过软件方式抽象化,最后进行调用,使用hypervisor(VMM)软件,其原理是在底层硬件和服务器之间建立一个抽象层。
- 半虚拟化:物理机上首先安装常规的操作系统,比如 Redhat、Ubuntu 和 Windows。Hypervisor作为OS上的一个程序模块运行,并对虚拟机进行管理。KVM、VirtualBox 和 VMWare Workstation都属于这个类型
- 直通:直接使用物理硬件资源(需要支持,还不完善)
三、虚拟化技术的优劣
1、优点:
- 集中化管理(远程管理、维护)
- 提高硬件利用率 (物理资源利用率低:例如峰值,虚拟化解决了“空闲”容量)
- 动态调整机器/资源配置(虚拟化把系统的应用程序和服务硬件分离、提高了灵活性)
- 高可靠(可部署额外的功能和方案,可提高透明负载均衡、迁移、恢复复制等应用环境)
2、劣势:
- 前期高额费用(初期的硬件支持),才能保证后期的可扩展应用
- 降低硬件利用率(特定场景:例如极度吃资源的应用不一定适合虚拟化)
- 更大的错误影响面(本地物理机down机会导致虚拟机均不可用,同时可能虚拟机中文件全部损坏)
- 实施配置复杂、管理复杂(管理人员。排障困难)
- 一定的限制性
- 安全性(虚拟化技术自身的安全隐患)
四、KVM 运行时的三种模式
- 客户模式:可以简单理解成客户机在操作系统运行中的模式,客户模式又分为内核模式和用户模式
- 用户模式:为用户提供虚拟机管理的用户空间以及代表用户执行I/O,Qemu运行在这个模式之下
- 内核模式:模拟CPU以及内存,实现客户模式的切换,处理从客户模式的退出。
五、实验
1、实验环境
查看cpu是否支持虚拟化
2、创建本地yum源信息
[root@localhost ~]# vim /etc/fstab /进入配置,添加永久挂载
/dev/cdrom /mnt iso9660 defaults 0 0
[root@localhost ~]# mount -a /使配置文件生效
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ~]# vim /etc/ssh/sshd_config /修改配置文件,关掉DNS解析
115 UseDNS NO /取消DNS注释,并改为NO
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv CentOS-* bak
[root@localhost yum.repos.d]# ls
bak
[root@localhost yum.repos.d]# vim epel.repo /创建本地yum源
[loacl]
name=kvm
baseurl=file:///mnt
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# ls
bak epel.repo
[root@localhost yum.repos.d]# mv epel.repo local.repo
[root@localhost yum.repos.d]# yum clean all && yum repolist /清楚缓存并加载新的yum源
已加载插件:fastestmirror, langpacks
正在清理软件源: loacl
Cleaning up list of fastest mirrors
Other repos take up 985 M of disk space (use --verbose for details)
已加载插件:fastestmirror, langpacks
Determining fastest mirrors
loacl | 3.6 kB 00:00:00
(1/2): loacl/group_gz | 166 kB 00:00:00
(2/2): loacl/primary_db | 3.1 MB 00:00:00
源标识 源名称 状态
loacl kvm 4,021
repolist: 4,021
[root@localhost yum.repos.d]#
3、下载kvm所需组件
[root@localhost yum.repos.d]# yum -y install qemu-kvm-tools.x86_64 qemu-kvm virt-install qemu-img bridge-utils libvirt virt-manager
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 10:qemu-kvm-tools-1.5.3-160.el7.x86_64 已安装并且是最新版本 /安装kvm调试工具,可不安装
软件包 10:qemu-kvm-1.5.3-160.el7.x86_64 已安装并且是最新版本 /安装kvm模块
软件包 virt-install-1.5.0-1.el7.noarch 已安装并且是最新版本 /构建虚拟机的命令行工具
软件包 10:qemu-img-1.5.3-160.el7.x86_64 已安装并且是最新版本 /qemu组件,创建磁盘、启动虚拟机
软件包 bridge-utils-1.5-9.el7.x86_64 已安装并且是最新版本 /网络支持工具
软件包 libvirt-4.5.0-10.el7.x86_64 已安装并且是最新版本 /虚拟机管理工具
软件包 virt-manager-1.5.0-1.el7.noarch 已安装并且是最新版本 /图形界面管理虚拟机
无须任何处理
[root@localhost yum.repos.d]# lsmod | grep kvm /查看kvm模块是否安装
kvm_intel 183621 0
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
[root@localhost yum.repos.d]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target /设置开启启动界面的显示画面
4、设置KVM网络
- KVM 网络的两张方式:
①NAT :默认设置,数据包由NAT方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络
②网桥:这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持
4.1 使用bridge网桥模式部署
[root@localhost network-scripts]# cat ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=0de0f6a2-9f0e-4770-bdaf-62ee8ddb261a
DEVICE=ens33
ONBOOT=yes
CONNECTION_METERED=yes
#IPADDR=192.168.159.180
#NETMASK=255.255.255.0
#GATEWAY=192.168.159.2
BRIDGE=br0
[root@localhost network-scripts]# cat ifcfg-br0
TYPE=Bridge
OTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.159.180
NETMASK=255.255.255.0
GATEWAY=192.168.159.2
4.2 重启网卡,查看
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
link/ether 00:0c:29:2d:17:fd brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:28:22:17 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
link/ether 52:54:00:28:22:17 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:2d:17:fd brd ff:ff:ff:ff:ff:ff
inet 192.168.159.180/24 brd 192.168.159.255 scope global noprefixroute br0
valid_lft forever preferred_lft forever
inet6 fe80::5b8a:812:2aa5:3275/64 scope link noprefixroute
valid_lft forever preferred_lft forever
5、KVM的部署与管理
5.1 创建kvm管理目录
[root@localhost ~]# mkdir -p /data_kvm/iso /创建kvm存储镜像的目录
[root@localhost ~]# mkdir -p /data_kvm/store /创建存储池的目录
[root@localhost ~]# cp CentOS-7-x86_64-DVD-1810-7.6.iso /data_kvm/iso/
[root@localhost ~]# cd /data_kvm/iso
[root@localhost iso]# ls
CentOS-7-x86_64-DVD-1810-7.6.iso
[root@localhost iso]# ll
总用量 4481024
-rw-r--r--. 1 root root 4588568576 8月 20 21:59 CentOS-7-x86_64-DVD-1810-7.6.iso
5.2 创建存储池
5.3 创建存储卷
5.4 创建镜像池
5.5 创建虚拟机
选择最小化安装