一,KVM概述
1.1 虛擬化概述
在計算機技術中,虛擬化意味着創建設備或資源的虛擬版本,如服務器,存儲設備,網絡或者操作系統等等
- [x] 虛擬化技術分類:
- 系統虛擬化(我們主要討論的反向)
- 存儲虛擬化(raid,lvm)
- 網絡虛擬化(sdn)
- GPU虛擬化(比特幣)
- 軟件虛擬化
- 硬件支持虛擬化
1.1.1 系統虛擬化
- 這種虛擬化通常表現為在單一系統上運行多個操作系統
- 這些虛擬操作系統同時運行,每個操作系統又是相互獨立
1.1.2 虛擬化的三種實現方式
(1)純軟件仿真
- 通過模擬完整的硬件環境來虛擬化用戶平台
- 模擬X86,ARM,PowerPC等多種CPU
- 效率比較低
- QEMU,Bochs,PearPC
(2)虛擬化層翻譯
- 多數的虛擬化而采用虛擬機管理程序Hypervisor
- Hypervisor是一個軟件層或子系統
- 也稱為VMM(Virtual Machine Monitor,虛擬機監控器)
- 允許多種操作系統在相同的物理系統中運行
- 控制硬件並向用戶操作系統提供訪問底層硬件的途徑
- 向來賓操作系統提供虛擬化的硬件
無硬件輔助的全虛擬化
- 基於二進制翻譯的全虛擬化
- Hypervisor運行在Ring 0
- Guest OS運行在Ring 1
- 機制:異常,捕獲,翻譯
- 示例:
- VMware Workstation
- QWMU
- Virtual PC
硬件輔助的全虛擬化
- Intel VT 和 AMD-V創建一個新的Ring -1 單獨給Hypervisor使用
- Guest OS可以直接使用Ring 0 而無須修改
- 示例:
- VMware ESXi
- Microsoft Hyper-V
- Xen3.0
- KVM
(3)容器技術
1.2 KVM概述與相關參考資料
二,KVM安裝
2.1 實現環境准備
CentOS7.3DVD鏡像下載地址:http://man.linuxde.net/download/CentOS_7_3
2.1.1 生產環境硬件配置
- CPU必須支持虛擬化技術,在BIOS設置為啟動
- 目前,多數服務器基礎桌面計算機均處理啟動狀態
2.1.2 實驗准備
我們需要先用虛擬機,然后在虛擬機里再用虛擬化,也就是嵌套虛擬化
- VMware 嵌套虛擬化
- 產品:Workstation,Player,ESXi
- 支持:ESXi,Hyper-V,KVM,Xen
2.2 KVM安裝
裝機時虛擬機需要安裝如下軟件
進入后,ifconfig我們發現
網卡並沒有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 #打開這個
然后重啟網絡服務
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特性
#檢查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
但是,我們在工作中通常需要遠程來管理KVM的環境。而SSH方式是看不到桌面模式的。
2.3.1 KVM的兩種遠程管理方式
(1)SSH圖形化顯示
windows安裝軟件x-manager。然后xshell軟件開啟X11轉發
然后我們連接上虛擬機以后,輸入virt-manager出現下圖
(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 11月 16 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
三,創建虛擬機
3.1 使用virt-manager創建虛擬機
- [x] virt-manager 基本使用
- [x] 實驗
- 環境准備
- 創建Windows虛擬機
- 創建Linux虛擬機
(1)我們需要添加一塊80G的硬盤來存儲操作系統的安裝介質,ISO文件
(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.