zhangjianchao

一,KVM概述

1.1 虚拟化概述

在计算机技术中,虚拟化意味着创建设备或资源的虚拟版本,如服务器,存储设备,网络或者操作系统等等

  • [x] 虚拟化技术分类:
    • 系统虚拟化(我们主要讨论的反向)
    • 存储虚拟化(raid,lvm)
    • 网络虚拟化(sdn)
    • GPU虚拟化(比特币)
    • 软件虚拟化
    • 硬件支持虚拟化

1.1.1 系统虚拟化

  • 这种虚拟化通常表现为在单一系统上运行多个操作系统
  • 这些虚拟操作系统同时运行,每个操作系统又是相互独立

QQ截图20180329205226.png-74.4kB

1.1.2 虚拟化的三种实现方式

(1)纯软件仿真

  • 通过模拟完整的硬件环境来虚拟化用户平台
  • 模拟X86,ARM,PowerPC等多种CPU
  • 效率比较低
  • QEMU,Bochs,PearPC

(2)虚拟化层翻译

  • 多数的虚拟化而采用虚拟机管理程序Hypervisor
  • Hypervisor是一个软件层或子系统
    • 也称为VMM(Virtual Machine Monitor,虚拟机监控器)
  • 允许多种操作系统在相同的物理系统中运行
  • 控制硬件并向用户操作系统提供访问底层硬件的途径
  • 向来宾操作系统提供虚拟化的硬件

QQ截图20180329222240.png-56.1kB

QQ截图20180329224952.png-323kB

无硬件辅助的全虚拟化

  • 基于二进制翻译的全虚拟化
  • Hypervisor运行在Ring 0
  • Guest OS运行在Ring 1
  • 机制:异常,捕获,翻译
  • 示例:
    • VMware Workstation
    • QWMU
    • Virtual PC

QQ截图20180329225949.png-90.3kB

硬件辅助的全虚拟化

  • Intel VT 和 AMD-V创建一个新的Ring -1 单独给Hypervisor使用
  • Guest OS可以直接使用Ring 0 而无须修改
  • 示例:
    • VMware ESXi
    • Microsoft Hyper-V
    • Xen3.0
    • KVM

QQ截图20180329225949.png-105.5kB

QQ截图20180330084828.png-169.7kB

(3)容器技术

1.2 KVM概述与相关参考资料

二,KVM安装

2.1 实现环境准备

CentOS7.3DVD镜像下载地址:http://man.linuxde.net/download/CentOS_7_3

2.1.1 生产环境硬件配置

  • CPU必须支持虚拟化技术,在BIOS设置为启动
  • 目前,多数服务器基础桌面计算机均处理启动状态

QQ截图20180330091735.png-236.3kB

2.1.2 实验准备

我们需要先用虚拟机,然后在虚拟机里再用虚拟化,也就是嵌套虚拟化

  • VMware 嵌套虚拟化
    • 产品:Workstation,Player,ESXi
    • 支持:ESXi,Hyper-V,KVM,Xen

QQ截图20180330091735.png-204.6kB

QQ截图20180330092445.png-23.6kB

2.2 KVM安装

装机时虚拟机需要安装如下软件

QQ截图20180330094613.png-168.2kB

进入后,ifconfig我们发现

QQ截图20180330094613.png-16.7kB

网卡并没有IP地址,我们可以通过如下操作,打开网卡配置文件的ONBOOT

[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# cat ifcfg-ens32 
TYPE=Ethernet
BOOTPROTO=dhcp
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=ens32
UUID=17fb5987-5317-4bca-8514-9e1b73933184
DEVICE=ens32
#NBOOT=yes          #打开这个

然后重启网络服务

QQ截图20180330094613.png-18.2kB

2.2.1 解决CentOS7.3的Xshell连接很慢的问题

#将ssh配置文件修改成如下所示
[root@localhost ~]# sed -n \'93p;129p\' /etc/ssh/sshd_config
GSSAPIAuthentication no
UseDNS no

#重启动服务
[root@localhost ~]# systemctl restart sshd

2.2.2 解决Centos7.3重启卡在license information

如果出现license information(license not accepted),即说明需要同意许可信息,输入1-回车-2-回车-c-回车-c-回车。即可解决

2.2.3 搭建本地yum仓库光盘源,安装软件包

#搭建本地光盘源yum仓库
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo
CentOS-CR.repo         CentOS-Media.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo
[root@localhost yum.repos.d]# mkdir bak
[root@localhost yum.repos.d]# mv C* bak/
[root@localhost yum.repos.d]# vim local.repo
[root@localhost yum.repos.d]# cat local.repo 
[local]
name=local
baseurl=file:///media/cdrom/
gpgcheck=0
enabled=1
[root@localhost yum.repos.d]# mount /dev/sr0 /media/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost yum.repos.d]# yum -y clean all
已加载插件:fastestmirror, langpacks
正在清理软件源: local
Cleaning up everything
Cleaning up list of fastest mirrors
[root@localhost yum.repos.d]# yum makecache
已加载插件:fastestmirror, langpacks
local                                                | 3.6 kB     00:00     
(1/4): local/filelists_db                              | 3.0 MB   00:00     
(2/4): local/group_gz                                  | 155 kB   00:00     
(3/4): local/other_db                                  | 1.3 MB   00:00     
(4/4): local/primary_db                                | 3.0 MB   00:00     
Determining fastest mirrors
元数据缓存已建立

我们的装机方式已经安装了如下软件组

@base
@core
@virtualization-hypervisor              #虚拟化主机选项
@virtualization-platform                #虚拟化平台选项
@virtualization-tools                   #虚拟化主机选项

我们还需要增加如下软件包

@virtualization-client
@gnome-desktop
#yum安装包组
[root@localhost ~]# yum -y group install virtualization-client
[root@localhost ~]# yum -y group install gnome-desktop

2.2.3 修改虚拟化引擎配置并检查CPU特性

QQ截图20180330094613.png-18.7kB

#检查CPU特性
[root@localhost ~]# grep vmx /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt

[root@localhost ~]# egrep \'^flags.*(vmx|svm)\' /proc/cpuinfo 
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 invpcid rtm rdseed adx smap xsaveopt

2.3 KVM远程管理

[root@localhost ~]# which virsh #查看虚拟机管理命令
/usr/bin/virsh
[root@localhost ~]# virsh list --all    #查看所有虚拟机
 Id    名称                         状态
----------------------------------------------------

[root@localhost ~]# startx    切换到图形界面模式

在图形界面下选择左上角Application

QQ截图20180330094613.png-122.4kB

QQ截图20180330094613.png-138.4kB

但是,我们在工作中通常需要远程来管理KVM的环境。而SSH方式是看不到桌面模式的。

2.3.1 KVM的两种远程管理方式

(1)SSH图形化显示

windows安装软件x-manager。然后xshell软件开启X11转发

QQ截图20180410193227.png-22.9kB

然后我们连接上虚拟机以后,输入virt-manager出现下图

QQ截图20180410193416.png-43kB

(2)VNC图形化显示

VNC是一个优秀的远程管理软件,它有两部分组成VNCServer,VNCViewer。

#看一下系统里是否有必须的包
[root@localhost ~]# rpm -qa | grep vnc
tigervnc-license-1.3.1-9.el7.noarch     #必须的
gtk-vnc2-0.5.2-7.el7.x86_64
gvnc-0.5.2-7.el7.x86_64
tigervnc-server-minimal-1.3.1-9.el7.x86_64  #必须的

#安装vnc-server
[root@localhost ~]# yum -y install tigervnc-server  #安装服务端软件包
[root@localhost ~]# cat /etc/sysconfig/vncservers   #查看vnc配置文件
# THIS FILE HAS BEEN REPLACED BY /lib/systemd/system/vncserver@.service
[root@localhost ~]# ll /lib/systemd/system/vncserver@.service   #原来这才是配置文件
-rw-r--r--. 1 root root 1880 1116 2016 /lib/systemd/system/vncserver@.service

#然后我们需要创建vnc密码
[root@localhost ~]# vncpasswd
Password:
Verify:

#启动vnc-server
[root@localhost ~]# vncserver

New \'localhost.localdomain:1 (root)\' desktop is localhost.localdomain:1

Creating default startup script /root/.vnc/xstartup
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/localhost.localdomain:1.log

[root@localhost ~]# ps aux | grep vnc
root       6241  0.9  1.6 250192 31032 pts/0    Sl   10:07   0:00 /usr/bin/vnc :1 -desktop localhost.localdomain:1 (root) -auth /root/.Xauthority -geometry 1024x768 -rfbwait 30000 -rfbauth /root/.vnc/passwd -rfbport 5901 -fp catalogue:/etc/X11/fontpath.d -pn
root       6250  0.0  0.2  96716  4068 pts/0    S    10:07   0:00 /usr/bin/vncconfig -iconic
root       6991  0.0  0.0 112668   972 pts/0    S+   10:07   0:00 grep --color=auto vnc

然后我们需要关闭Centos7.3的防火墙

[root@localhost ~]# service firewalld stop  #不然vnc客户端连接不上
Redirecting to /bin/systemctl stop  firewalld.service
[root@localhost ~]# systemctl disable firewalld.service #永久关闭防火墙

接下来我们在windows主机上安装vnc客户端

https://www.realvnc.com/en/connect/download/viewer/ 可以下载vnc viewer

QQ截图20180402103131.png-1.8kB

QQ截图20180402103827.png-25.1kB

QQ截图20180402104005.png-15.9kB

QQ截图20180402104026.png-9.6kB

QQ截图20180402104113.png-537.3kB

三,创建虚拟机

3.1 使用virt-manager创建虚拟机

  • [x] virt-manager 基本使用
  • [x] 实验
    • 环境准备
    • 创建Windows虚拟机
    • 创建Linux虚拟机

QQ截图20180402111815.png-42.8kB

(1)我们需要添加一块80G的硬盘来存储操作系统的安装介质,ISO文件

QQ截图20180403220908.png-28.3kB

(2)利用fdisk分出一块40G的分区

[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 Apr  4 08:48 /dev/sdb
brw-rw----. 1 root disk 8, 17 Apr  4 08:48 /dev/sdb1    #40G

(3)创建LVM逻辑卷

[root@localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 Apr  4 08:48 /dev/sdb
brw-rw----. 1 root disk 8, 17 Apr  4 08:48 /dev/sdb1
[root@localhost ~]# pvcreate /dev/sdb1
  Physical volume "/dev/sdb1" successfully created.
[root@localhost ~]# vgcreate vmvg /dev/sdb1
  Volume group "vmvg" successfully created
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree 
  cl     1   2   0 wz--n- 19.00g     0 
  vmvg   1   0   0 wz--n- 40.00g 40.00g
[root@localhost ~]# vgdisplay       #查看vg详细
  --- Volume group ---
  VG Name               cl
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.00 GiB
  PE Size               4.00 MiB
  Total PE              4863
  Alloc PE / Size       4863 / 19.00 GiB
  Free  PE / Size       0 / 0   
  VG UUID               6ROh78-78oc-QfPu-1YnI-pW76-TiFa-4kWjSQ
   
  --- Volume group ---
  VG Name               vmvg
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               40.00 GiB
  PE Size               4.00 MiB
  Total PE              10239
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10239 / 40.00 GiB       #vmvg可用的PE一共10239
  VG UUID               Hxeycr-8UEv-qiF2-JTZi-txEl-E5G7-Iho3x5
   
[root@localhost ~]# lvcreate -n lvvm1 -l 10239 vmvg     #将vmvg可以用PE全部分配给lvvm1
  Logical volume "lvvm1" created.
[root@localhost ~]# lvs
  LV    VG   Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root  cl   -wi-ao---- 17.00g                                                    
  swap  cl   -wi-ao----  2.00g                                                    
  lvvm1 vmvg -wi-a----- 40.

分类:

技术点:

相关文章: