KVM虛拟機:
1.KVM是Kernel-based Virtual Machine的簡稱,是一個開源的系統虛拟化子產品,自Linux 2.6.20之後內建在Linux的各個主要發行版本中。它使用Linux自身的排程器進行管理,是以相對于Xen,其核心源碼很少。KVM已成為學術界的主流VMM之一 2.KVM的虛拟化需要硬體支援(如Intel VT技術或者AMD V技術)。是基于硬體的完全虛拟化。而Xen早期則是基于軟體模拟的Para-Virtualization,新版本則是基于硬體支援的完全虛拟化。但Xen本身有自己的程序排程器,存儲管理子產品等,是以代碼較為龐大。廣為流傳的商業系統虛拟化軟體VMware ESX系列是基于軟體模拟的Full-Virtualization
虛拟化發展過程:
IDC資料中心裝置租用 → 提出虛拟化方案,出現OpenVZ → 共享優化出現Xen,提出半虛架構,但是操作複雜 → 進入全虛KVM,不需要和核心接觸,隻需要安裝管理工具
案例概述
1.公司部分Linux伺服器使用率不高,為充分利用這些Linux伺服器,可以部署KVM,在實體機上運作多個業務系統 2.例如在運作Nginx的伺服器.上部署KVM,然後在虛拟機上運作Tomcat
案例前置知識點
KVM虛拟化架構
KVM子產品直接整合在Linux核心中
KVM Driver:
1.虛拟機建立 2.虛拟機記憶體配置設定 3.虛拟CPU寄存器讀寫 4.虛拟CPU運作
QEMU (經過簡化與修改):
1.模拟PC硬體的使用者控件元件 2.提供I/O裝置模型及通路外設的途徑
KVM虛拟化三種模式:
1.客戶模式(虛拟機) 2.使用者模式(工具) 3.核心模式
Demo:
環境準備:

[root@client dev]# fdisk /dev/sdb 歡迎使用 fdisk (util-linux 2.23.2)。 更改将停留在記憶體中,直到您決定将更改寫入磁盤。 使用寫入指令前請三思。 Device does not contain a recognized partition table 使用磁盤辨別符 0xba1e8e30 建立新的 DOS 磁盤标簽。 指令(輸入 m 擷取幫助):n #輸入n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p #輸入p 分區号 (1-4,預設 1): 起始 扇區 (2048-41943039,預設為 2048): 将使用預設值 2048 Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,預設為 41943039): 将使用預設值 41943039 分區 1 已設定為 Linux 類型,大小設為 20 GiB 指令(輸入 m 擷取幫助):w #輸入w儲存退出 The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盤。 [root@client dev]# mkfs /dev/sdb1 #格式化 mke2fs 1.42.9 (28-Dec-2013) 檔案系統标簽= OS type: Linux 塊大小=4096 (log=2) 分塊大小=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 1310720 inodes, 5242624 blocks 262131 blocks (5.00%) reserved for the super user 第一個資料塊=0 Maximum filesystem blocks=4294967296 160 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000 Allocating group tables: 完成 正在寫入inode表: 完成 Writing superblocks and filesystem accounting information: 完成 [root@client dev]# mkdir /data #建立挂載 [root@client dev]# mount /dev/sdb1 /data/ [root@client data]# df -hT 檔案系統 類型 容量 已用 可用 已用% 挂載點 /dev/sdb1 ext2 20G 44M 19G 1% /data #此時顯示已經挂載 #電腦中有CentOS 7鏡像檔案的檔案夾需要進行共享,設定賬戶Everyone可以進行讀取,然後使用smbclient -L檢視挂載 [root@client data]# smbclient -L //192.168.10.190/ Enter SAMBA\root's password: OS=[Windows 10 Home China 18363] Server=[Windows 10 Home China 6.3]
Sharename Type Comment
[root@client data]# mount.cifs //192.168.10.190/ISO /mnt
Password for root@//192.168.10.190/ISO:
[root@client data]# df -
檔案系統 容量 已用 可用 已用% 挂載點
/dev/sdb1 20G 44M 19G 1% /data
//192.168.10.190/ISO 226G 173G 54G 77% /mnt
#此時顯示檔案成功挂載在mnt目錄下
[root@client data]# cd /mnt/
[root@client mnt]# ls
CentOS-7-x86_64-DVD-1708.iso
配置橋接執行個體:
[root@client mnt]# cd /data/ [root@client data]# mkdir vdisk viso [root@client data]# ls lost+found vdisk viso [root@client data]# cp -r /mnt/CentOS-7-x86_64-DVD-1708.iso /data/viso/ [root@client data]# ls viso/ [root@client data]# cd /etc/sysconfig/network-scripts/ [root@client network-scripts]# cp -p ifcfg-ens33 ifcfg-br0 [root@client network-scripts]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.18.145 netmask 255.255.255.0 broadcast 192.168.18.255 inet6 fe80::6a0c:e6a0:7978:3543 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:a4:cb:c7 txqueuelen 1000 (Ethernet) RX packets 6559352 bytes 9624037086 (8.9 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 364406 bytes 30690747 (29.2 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ......此處省略多行 [root@client network-scripts]# vim ifcfg-ens33 #在末行按o轉下行插入 BRIDGE=br0 #插入完成後按Esc退出插入模式,輸入:wq儲存退出 [root@client network-scripts]# vim ifcfg-br0 TYPE="bridge" #Ethernet改為bridge PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" #dhcp改為static 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="br0" #ens33改為br0 DEVICE="br0" #ens33改為br0 ONBOOT="yes" IPADDR=192.168.18.145 #輸入ens33的IP位址 NETMASK=255.255.255.0 #輸入子網路遮罩 GATEWAY=192.168.18.1 #輸入網關 #修改退出插入模式,輸入:wq儲存退出 [root@client network-scripts]# service network restart #重新開機網絡服務 Restarting network (via systemctl): [ 确定 ] br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::e169:c641:eeea:50f7 prefixlen 64 scopeid 0x20<link> RX packets 20 bytes 1298 (1.2 KiB) TX packets 35 bytes 4588 (4.4 KiB) RX packets 6559967 bytes 9624087097 (8.9 GiB) TX packets 364793 bytes 30733147 (29.3 MiB) ......以下省略多行 #橋接之後原來ens33的網卡IP到br0上了
回到圖形化界面輸入:
[root@client ~]# virt-manager
此時會跳出虛拟系統管理器界面,我們需要添加存儲池
自定義池名稱後點選浏覽目錄,選擇目錄為/data/vdisk,查找到我們挂載CentOS7的檔案夾目錄,點選完成
然後點選添加新卷
添加鏡像存儲池:iso,點選前進,選擇路徑為/data/viso
建立完畢後可以點選左上角的檔案 → 關閉
在虛拟系統管理器左上角檔案選擇建立虛拟機
安裝作業系統為本地安裝,點選前進
使用ISO鏡像:點選浏覽,選擇iso存儲池,找到鏡像,點選選擇卷
再點選前進,記憶體輸入2048,再點選前進
選擇或建立自定義存儲,點選管理,選擇disk存儲池,點選之前的卷,點選選擇卷
再點選前進,再點選完成,此時會進入Centos7的安裝界面: