2. 環境准備
2.1 硬件環境
2.2 軟件環境
2.2.1 YUM安裝軟件包
2.2.2 環境檢查
2.2.3 啟動libvirtd服務
2.3 網絡環境
2.3.1 復制網卡配置文件
2.3.2 修改網卡配置文件
2.3.4 重啟網絡服務
2.3.5 查看驗證
1. 概述
本系列博客是想在VMware workstation創建的虛擬機console中,開啟KVM虛擬化,使用kvm虛擬機快速部署測試環境。
注:有關虛擬化的理論部分,參照博客《》,有關KVM的理論部分,參照博客《》
2. 環境准備
2.1 硬件環境
VMware workstation提供了虛擬機的創建平台。同時也提供了為這些虛擬機的CPU和IO管理虛擬化的功能。
如下圖,就為虛擬機console的CPU,配置了虛擬化引擎的功能:

虛擬化InterVT-x和AMD-V是兩大處理器廠商提供的硬件虛擬化技術
虛擬化IOMMU,相當於在BIOS中實現的IO接口虛擬化技術,提供給KVM的SRV,以后的博客中探討
如果console勾選了上述【虛擬化引擎】三個選項,那么可以進入到系統內部,查看cpu信息,確認是否啟動了該功能。
console中,執行命令:egrep "vmx|svm" /proc/cpuinfo,有字段輸出,證明當前系統的處理器已經支持虛擬化了。
2.2 軟件環境
2.1內容中,kvm宿主OS(操作系統)的處理器能夠支持虛擬化,但是OS中需要kvm虛擬化的軟件環境,方可進行虛擬機的部署
本博客中,由於最小化安裝,定制軟件包時,並沒有定制虛擬化的部分,因此需要采用YUM進行KVM環境部署。
首先查看系統中,有沒有安裝kvm軟件包,執行rpm -qa | grep kvm,無輸出表示未安裝。
2.2.1 YUM安裝軟件包
1. 安裝內核支持:yum -y install qemu-kvm qemu-kvm-tools qemu-img gpxe-roms-qemu qemu-guest-agent
2. 安裝用戶層圖形界面工具:yum -y install virt-manager virt-viewer virt-top virt-what
3. 安裝用戶層命令行工具:yum -y install python-virtinst
4. 安裝API管理工具:yum -y install libvirt libvirt-client libvirt-python libvirt-snmp
建議首次安裝時,采用:yum -y install xxx && echo OK >>/var/log/yum.log的方式,觀察各個軟件包的依賴環境
安裝qemu-kvm時,同時安裝了gpxe-roms-qemu,qemu-img和其他依賴軟件包
安裝libvirt時,安裝的依賴軟件包比較多,包含了libvirt-client;安裝libvirt-snmp時,包含了net-snmp-libs依賴包
安裝virt-manager時,安裝的依賴包也很多,主要是圖像庫
安裝virt-viewer時,安裝了openssh-clients庫
總結:
yum -y install qemu-kvm qemu-kvm-tools qemu-guest-agent virt-manager virt-viewer virt-top virt-what python-virtinst libvirt libvirt-python libvirt-snmp
上述軟件包是在最小化OS下安裝,因此在非最小化的OS下安裝,可能不需要這么多。將其做出腳本存放在/usr/local/globle/scripts/kvm/install下
具體腳本內容參見包括《虛擬機console全局腳本.md》
涉及到的依賴環境類別主要包括:python,gtk,snmp,ssh,qemu,kvm等
2.2.2 環境檢查
此時通過rpm來檢查kvm環境,rpm -qa | egrep "kvm|qemu"
執行命令:ls -lrt /dev/kvm 查看到內核接口設備
執行命令:service libvirtd status,看到libvirtd服務是未運行的
2.2.3 啟動libvirtd服務
執行命令:service libvirtd start,會存在報錯
warning : virGetHostname:2294 : getaddrinfo failed for 'console': 未知的名稱或服務
這是因為libvirtd不能在/etc/hosts中找到和console對應的地址。
執行命令:echo "127.0.0.0 console" >> /etc/hosts,然后service libvirtd restart,發現提示已經沒有了
上述過程已經說明,kvm宿主機console已經具備了初步的部署kvm虛擬機的環境。
2.3 網絡環境
kvm虛擬機當然是可以像VMware workstation一樣使用的,作為一款應用級別的軟件,來創建多種虛擬化的操作系統。但是KVM更多地是應用在一種生產環境中,作為擁有足夠計算資源的物理機的替代,實現安全隔離或者更加快捷的管理。因此這樣的應用場景,就需要KVM虛擬機能夠橋接在物理網絡中,和物理機處於同一個網絡級別,來屏蔽網絡差異性。所以,需要在宿主機配置橋接網絡。console的橋接網絡配置過程,可參考如下。
2.3.1 復制網卡配置文件
console在配置時,分配了兩塊NIC,一塊是配置了MAC地址00:00:00:80:00:08接入NAT網絡的NIC,一塊是配置了MAC為00:00:00:10:00:08接入僅主機模式網絡的NIC。
在console的OS中,接入NAT網絡的網卡eth0的配置名稱為:/etc/sysconfig/network-scripts/ifcfg-eth0,另外一塊則為/etc/sysconfig/network-scripts/ifcfg-eth1。
很顯然,要對這兩塊網卡操作。
進入目錄,cd /etc/sysconfig/network-scripts/
復制配置文件:cp ifcfg-eth0 ifcfg-br0 && cp ifcfg-eth1 ifcfg-br1
橋接網卡的配置很簡單,只需要保持ethx的物理信息,保持brx的網絡信息即可
所謂的物理信息,即UUID,HWADDR這些;而網絡信息,即IPADDR,PREFIX,NEWMASK,GATEWAY,DNS這些
2.3.2 修改網卡配置文件
【ifcfg-eth0】內容如下:
DEVICE=eth0
TYPE=Ethernet
UUID=20fa03bd-212f-4554-bf24-0ae23c1f8661
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=00:00:00:80:00:08
NAME=eth0
BRIDGE=br0
上述內容中,刪掉的內容
IPADDR=192.168.80.8
PREFIX=24
GATEWAY=192.168.80.2
DNS1=192.168.80.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
修改的內容為:BOOTPROTO=none。實際上這個參數可以不用修改,保持為none。
【ifcfg-br0】配置內容如下:
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.80.8
PREFIX=24
GATEWAY=192.168.80.2
DNS1=192.168.80.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=br0
上述內容中,刪掉的內容:
UUID=20fa03bd-212f-4554-bf24-0ae23c1f8661
HWADDR=00:00:00:80:00:08
修改的內容為:BOOTPROTO=static,TYPE=Bridge,NAME=br0
依照上述操作,對第二塊網卡,做同樣的操作。
【ifcfg-eth1】配置內容如下:
DEVICE=eth1
TYPE=Ethernet
UUID=ae99988a-c675-4ca5-93e5-2080b72c64be
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
HWADDR=00:00:00:10:00:08
BRIDGE=br1
NAME=eth1
【ifcfg-br1]配置內容如下:
DEVICE=br1
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.10.8
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME=br1
配置文件對比圖:




2.3.4 重啟網絡服務
注意:一定要確認系統已經安裝橋接網絡環境,執行命令rpm -qa | grep bridge-utils檢查。
如果沒有安裝,執行命令yum -y install bridge-utils && echo "yum bridge-utils OK >> /var/log/yum.log"
上述過程配置完成之后,執行命令service network restart重啟網絡配置
注:本博客在執行上述命令之后,網絡斷開連接。原因是最小化安裝的OS里,沒有安裝網絡橋接的環境,YUM安裝bridge-utils即可。具體修復見博客《Error【0003】:配置橋接網絡報錯.md》
2.3.5 查看驗證
通過上述的部署之后,可以執行命令:brctl show ,查看當前環境中橋接網絡。
bridge name bridge id STP enabled interfaces
br0 8000.000000800008 no eth0
br1 8000.000000100008 no eth1
virbr0 8000.525400df5102 yes virbr0-nic
virbr0,為libvirtd提供的NAT網絡,這個在實際的生產環境中不使用,可以刪除。具體刪除方式參見博客《》
