文章目錄
- 一、KVM安裝
- 二、使用KVM創建虛擬機
- (一)使用virt-manager創建虛擬機
- (二)使用圖形化界面創建虛擬機
- (三)virt-install 創建虛擬機
- (四)基于Kickstart安裝方式
- (五)基于PXE安裝
- 三、KVM虛擬機的幾種連接方式
一、KVM安裝
在win10作業系統上使用 VMware WorkStation 創建Linux虛擬機,并在此虛擬機中安裝 KVM,然后使用KVM創建虛擬機
環境準備
- win10 的 CPU 必須支持虛擬化技術,并在 BIOS設定為啟動
Virtualization Technology Enabled
-
VMware WorkStation 中創建Linux虛擬機
2U2G、SCSI 20G、NAT,鏡像檔案:CentOS-7-x86_64-Minimal-1908.iso
-
安裝完成后,修改虛擬化引擎的配置,即開啟宿主機CPU虛擬化

4. 啟動虛擬機,檢查CPU特性,即驗證CPU是否支持虛擬化
[root@kvm ~]# grep vmx /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc 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 ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc 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 ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities
[root@kvm ~]# lscpu | grep VT-x
Virtualization: VT-x
# vmx 是intel CPU,svm 是AMD CPU
[root@kvm ~]# egrep 'vmx|svm' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc 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 ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc 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 ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec arat spec_ctrl intel_stibp flush_l1d arch_capabilities
以上幾種均可,只要執行完后有輸出,則說明虛擬化開啟成功
- 查看是否加載KVM模塊
[root@kvm ~]# lsmod | grep kvm
kvm_intel 183621 0
kvm 586948 1 kvm_intel
irqbypass 13503 1 kvm
表明已經加載,如果沒有加載則執行以下命令加載KVM
[root@kvm ~]# modprobe kvm
- 安裝KVM相關軟體包
[root@kvm ~]# yum install qemu-kvm qemu-img virt-manager virt-viewer libvirt libvirt-python libvirt-client virt-install -y
# qemu-kvm: KVM模塊,軟體純模擬全虛擬化軟體
# qemu-img:管理虛擬機的虛擬磁盤
# libvirt: 虛擬機管理模塊
# virt-manager: 圖形界面管理虛擬機
# virt-install: 虛擬機命令列安裝工具
# virt-viewer: 用于顯示虛擬機的圖形控制臺的最小工具
[root@kvm ~]# systemctl start libvirtd
二、使用KVM創建虛擬機
(一)使用virt-manager創建虛擬機
virt-manager主要功能:
- 定義和創建虛擬機
- 硬體管理
- 性能監視
- 虛擬機的保存和恢復、暫停和繼續、關閉和啟動
- 控制臺
- 在線和離線遷移
啟動方法:
- GNOME 桌面環境下,Applications選單 → System Tools → Virtual Machine Manager
- 在SSH會話中輸入 virt-manager

【示例】 使用virt-manager創建虛擬機并使用vnc進行連接
創建存放鏡像的檔案夾
[root@kvm ~]# mkdir /home/iso
上傳鏡像檔案
[root@kvm iso]# ls
CentOS-7-x86_64-Minimal-1708.iso
開啟X11轉發功能
# 在windows主機安裝并啟動 X server (比如:xmanager 或者 Xming),這里使用的是 Xmanager
# 需要在虛擬機中開啟X11轉發功能,然后重啟虛擬機
[root@kvm ~]# vi /etc/ssh/sshd_config
X11Forwarding yes
[root@kvm ~]# reboot
運行 virt-manager
[root@kvm iso]# virt-manager
彈出如下GUI視窗

創建虛擬機

或者:

進入創建虛擬機向導界面
#選擇安裝方法





記憶體、CPU分配

磁盤分配

這里磁盤分配的大小是受宿主機磁盤大小的限制
為虛擬機命名并開始安裝

此時,便開始安裝
如果在安裝前有其它的調整設定,需要勾選上圖的 Customize configuration brfore install

此時不會直接進入安裝界面,而是進入配置調整界面

根據需求進行相應的調整,比如磁盤,記憶體,網路設定等,
這里對 Display Spice 配置項進行說明:

Display Spice 配置中主要有兩個配置項:Spice server 和 VNC server
Spice 和 VNC是一個多通道的遠程桌面協議,提供與虛擬桌面設備的遠程互動實作,主要應用在桌面虛擬化,支持影像,2D傳輸,720P視頻播放,主要目標是為qemu虛擬機提供高質量的遠程桌面訪問,它致力于克服傳統虛擬桌面的一些弊端,并且強呼叫戶體驗
如果設定了此選項,同時需要在宿主機上安裝相應應用或程式,方可使用其中的某種方式訪問創建好的虛擬機(客戶機),對于安裝前未配置此項,安裝后也可在客戶機虛擬機的xml組態檔中進行配置,
這里,選擇使用VNC的方式:


進入安裝界面

在生產環境中多使用 kickstart 回答檔案進行定制化快速批量安裝
在以上界面按下Tab鍵,輸入以下內容:
ks=URI (生產環境中一般為web服務器中kickstart資源檔案地址)
根據引導,進行語言選擇、磁區等相關設定后,進行安裝
說明:一般來說虛擬(云)主機都沒有swap磁區,swap磁區是基于硬碟的,而虛擬(云)主機的硬碟都是虛擬出來的,性能較物理硬碟差(讀寫速度差),所以此時使用虛擬硬碟做交換磁區來虛擬記憶體,反而會適得其反,所以一般不會為KVM虛擬機劃分swap磁區,

安裝完后進行重啟,便可以正常登陸

配置網卡
這里是使用dhcp自動生成的ip

可以看到安裝好的kvm客戶機虛擬機可以與宿主虛擬機和外網互通
此時再看宿主機的網卡資訊
[root@kvm ~]# 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 state UP group default qlen 1000
link/ether 00:0c:29:be:42:4d brd ff:ff:ff:ff:ff:ff
inet 192.168.1.22/24 brd 192.168.1.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:febe:424d/64 scope link
valid_lft forever preferred_lft forever
3: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 52:54:00:c5:79:09 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:c5:79:09 brd ff:ff:ff:ff:ff:ff
12: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN group default qlen 1000
link/ether fe:54:00:12:90:4f brd ff:ff:ff:ff:ff:ff
inet6 fe80::fc54:ff:fe12:904f/64 scope link
valid_lft forever preferred_lft forever
可以看到此時宿主機除了自己使用的ens33網卡,又多了一個virbr0網卡
這是因為我們在宿主虛擬機上創建客戶虛擬機的時候選擇為NAT網路,那么便會自動生成一個virbr0這樣的橋接設備

該網卡資訊對應的檔案為:
# 是在宿主虛擬機上
[root@kvm ~]# cat /etc/libvirt/qemu/networks/default.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
virsh net-edit default
or other application using the libvirt API.
-->
<network>
<name>default</name>
<uuid>c80f5bf6-317f-4c28-9f10-266d944b75ef</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:c5:79:09'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
[root@kvm ~]# virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------------
default active yes yes
virbr0 是一種虛擬網路介面,這是由于安裝和啟用了 libvirt 服務后生成的,libvirt 在服務器(host,也稱宿主機)上生成一個 virtual network switch (virbr0),host 上所有的虛擬機(guests,也稱客戶機)通過這個 virbr0 連起來,默認情況下 virbr0 使用的是 NAT 模式(采用 IP Masquerade),所以這種情況下 guest(客戶機) 通過 host (宿主機)才能訪問外部,
在宿主機上安裝VNC服務
[root@kvm ~]# yum -y install tigervnc-server tigervnc
啟動 vnc 服務
[root@kvm ~]# vncpasswd
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
A view-only password is not used
[root@kvm ~]# vncserver
New 'kvm:4 (root)' desktop is kvm:4
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/kvm:4.log
修改客戶虛擬機組態檔
[root@kvm ~]# vim /etc/libvirt/qemu/Centos7_1.xml
<graphics type='vnc' port='5910' autoport='no' listen='0.0.0.0'>
<listen type='address' address=0.0.0.0 />
</graphics>
重啟libvirt服務及客戶機虛擬機
[root@kvm ~]# virsh shutdown Centos7_1
[root@kvm ~]# systemctl restart libvirtd
[root@kvm ~]# virsh start Centos7_1
[root@kvm ~]# ss -aulntp | grep 5910
tcp LISTEN 0 1 *:5910 *:* users:(("qemu-kvm",pid=86642,fd=23))
在windos上安裝VNC Viewer 程式
連接配置

連接
宿主虛擬機的防火墻要放通

連接成功
(二)使用圖形化界面創建虛擬機
# 如果在安裝系統的時候安裝的是最小化沒有圖形化界面,可以使用如下方式安裝圖形化界面,當然也可以在安裝作業系統時直接安裝好圖形化
[root@kvm ~]# yum groupinstall "X Window System" -y
[root@kvm ~]# yum groupinstall "GNOME Desktop" "Graphical Administration Tools" -y
# 啟動:
[root@kvm ~]# starx


其余步驟同 virt-manager 安裝步驟
(三)virt-install 創建虛擬機
基于光碟的安裝
[root@kvm ~]# virt-install \
> --name template \ # 虛擬機名
> --ram=512 \ # 虛擬機記憶體大小,單位M
> --vcpus=1 \ # 虛擬機CPU核心數
> --cdrom=/home/iso/CentOS-7-x86_64-Minimal-1708.iso \ # 鏡像檔案位置
> --disk path=/var/lib/libvirt/images/template.qcow2,format=qcow2,size=5 \ # 磁盤位置,格式,大小, format指定磁盤鏡像格式,有qcow2(支持快照) 和 raw格式(不支持快照,性能好),size 指定大小,單位為G,指定磁盤檔案位置,無則創建,有則使用,有的話就無需指定 size 引數(但檔案及格式必須正確,如果是安裝過作業系統的完整磁盤,則無需指定 --cdrom= 鏡像檔案引數 )
> --network network=default \ # 網路模式 default 為默認選項,即NAT模式
> --graphics vnc,listen=0.0.0.0 \ # 顯示型別,監聽范圍
> --os-type=linux \ # 非必選項,系統型別
> --os-variant=rhel7 # 非必選項,系統版本
> --virt-type kvm # 非必選項,虛擬化的型別
--------------------------------------------------------------------------------------------------
# 如果是使用創建好的指定磁盤:
# 創建磁盤鏡像
[root@kvm ~]# cd /var/lib/libvirt/images/
[root@kvm images]# qemu-img create -f qcow2 template_disk1.qcow2 2G
Formatting 'template_disk1.qcow2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off
# 占用實際大小 192K
[root@kvm images]# ll -h template_disk1.qcow2
-rw-r--r--. 1 root root 193K May 6 17:53 template_disk1.qcow2
# 模擬磁盤大小是2G
[root@kvm images]# qemu-img info template_disk1.qcow2
image: template_disk1.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
如果是使用該磁盤鏡像作為磁盤,那么上面的引數項為:
--disk path=/var/lib/libvirt/images/template_disk1.qcow2
--------------------------------------------------------------------------------------------------
因為配置了VNC,如果在宿主機上已經安裝并啟動了 vncserver 服務,并且在windows 上安裝了vnc客戶端軟體,那么就可以使用windows上的vnc客戶端軟體使用 宿主機IP:5900 進行桌面連接(默認為5900埠),進行KVM虛擬機的后續作業系統的安裝
執行后過一會會自動彈出 virt-viewer(如果未安裝virt-viewer,則不會自動彈出,那么就需要使用安裝的virt-manager或者配置好的 VNC 進入安裝界面進行安裝)安裝作業系統界面,這時需要手工進行安裝

如果希望安裝作業系統這一步也不需要人工干預安裝,則可以使用下面這種方式(基于Kickstart回答檔案的安裝方式)
(四)基于Kickstart安裝方式
Kickstart是一種無人值守的安裝方式,它的作業原理是在安裝程序中記錄典型的需要人工干預填寫的各種引數,并生成一個名為ks.cfg的檔案,如果在安裝程序中(不只局限于生成Kickstart安裝檔案的機器)出現要填寫引數的情況,安裝程式首先會去查找Kickstart生成的檔案,如果找到合適的引數,就采用所找到的引數;如果沒有找到合適的引數,便需要安裝者手工干預了,所以,如果Kickstart檔案涵蓋了安裝程序中可能出現的所有需要填寫的引數,那么安裝者完全可以只告訴安裝程式從何處取ks.cfg檔案,然后就去忙自己的事情,等安裝完畢,安裝程式會根據ks.cfg中的設定重啟系統,并結束安裝,
如果在安裝程序中出現要填寫引數的情況,安裝程式首先會去查找Kickstart生成的檔案,如果找到合適的引數,就采用所找到的引數,如果沒有找到合適的引數,便需要安裝者手工干預
[root@kvm ~]# virt-install \
> --name template \
> --ram=512 \
> --vcpus=1 \
> --disk path=/var/lib/libvirt/images/template.qcow2,size=5 \
> --network network=default \
> --graphics vnc,listen=0.0.0.0 \
> --os-type=linux \ # 非必選項
> --os-variant=rhel7 # 非必選項
> --location /iso/CentOS-7-x86_64-Minimal-1708.iso \ # 此處不再是--cdrom 的配置項(該路徑是宿主機上的安裝介質檔案位置),切記(也可以使用--location=uri 來指定位于網路位置上的安裝介質檔案,即可以是Web服務器或NFS服務器上的安裝介質檔案)
> --extra-args="ks=http://Web Server IP/xxx" # kickstart 檔案位置(一般在Web服務器或NFS服務器上)
(五)基于PXE安裝
實作原理:將手動安裝的所有的詳細步驟記錄到一個檔案中,然后有一種軟體通過讀取這個檔案就可以實作自動化安裝系統,
這個工具叫做Kickstart,kickstart是RedHat公司開源的工具,所以對Centos兼容性最好,注意Kickstart是一個專案的名稱,沒有這個軟體,
cobbler是對kickstart的所有組件的封裝,本質上就是網頁版的Kickstart
PXE原理
PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,作業于Client/Server的網路模式,支持作業站(主機)通過網路從遠端服務器下載映像,并由此支持通過網路啟動作業系統,在啟動程序中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端基本軟體設定,從而引導預先安裝在服務器中的終端作業系統,
PXE的作業程序:
PXE Client 從自己的PXE網卡啟動,向本網路中的DHCP服務器索取IP;
DHCP 服務器回傳分配給客戶機的IP 以及PXE檔案的放置位置(該檔案一般是放在一臺TFTP服務器上) ;
PXE Client 向本網路中的TFTP服務器索取pxelinux.0 檔案;
PXE Client 取得pxelinux.0 檔案后之執行該檔案;
根據pxelinux.0 的執行結果,通過TFTP服務器加載內核和檔案系統 ;
進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝;
用法:
[root@kvm ~]# virt-install --hvm --connect qemu:///system \
> --network=birdge:br0 --pxe --graphics spice \
> --name template1 --ram=512 --vcpus=1 \
> --os-type=linux --os-variant=rhel7 \
> --disk path=/var/lib/libvirt/images/template.qcow2,size=5
但是還是需要進行后續的手動安裝作業系統
所以更好的方式是將 Kickstart 和 PXE 方式結合使用
PXE+Kickstart 無人值守安裝作業系統完整程序如下:

PXE-Kickstart批量安裝系統部署搭建
三、KVM虛擬機的幾種連接方式
圖形界面:
- GNOME
- vnc
- virt-manager
- virt-viewer
命令列界面:
-
ssh
-
命令列版控制臺:virsh console domain
需要修改KVM虛擬機的內核引數:
(1)在KVM虛擬機上執行命令grubby --update-kernel=ALL --args="console=ttyS0,115200n8"(2)重啟 kvm 虛擬機reboot(3)此時便可以在宿主機上使用virsh console domain命令列方式連接KVM虛擬機 (使用【ctrl】+ ] 組合鍵退出console界面)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290202.html
標籤:其他
