一、安裝KVM
查看系統版本
cat /etc/redhat-release
關閉防火牆及selinux
systemctl disable firewalld.service
查看防火牆狀態
systemctl status firewalld
查看開機是否啟動防火牆服務
systemctl is-enabled firewalld
1. 驗證CPU是否支持KVM
如果結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU支持的。
egrep '(vmx|svm)' /proc/cpuinfo
2,關閉SELinux
將 /etc/selinux/config 中的 SELinux=enforcing 修改為 SELinux=disabled
sed -i 's/SELinux=enforcing/SELinux=disabled/' /etc/selinux/config
3. 最小安裝的CentOS安裝一些最基本的包
(可選項,因為我是剛安裝好的CentOS,所以為了下面方便點,先把一些必要的工具安裝下)
yum install epel-release net-tools vim unzip zip wget ftp -y
4. 安裝KVM及其依賴項
yum install qemu-kvm libvirt virt-install bridge-utils -y
5. 驗證安裝結果,下圖說明已經成功安裝了
lsmod | grep kvm
6. 開啟kvm服務,並且設置其開機自動啟動
systemctl start libvirtd
systemctl enable libvirtd
7. 查看狀態操作結果
systemctl status libvirtd
8. 配置kvm 網絡
簡單介紹下kvm的網絡模式分為4種
本文檔采用的是橋接模式,下期會說下NAT模式
1. 隔離模式:虛擬機之間組建網絡,該模式無法與宿主機通信,無法與其他網絡通信,相當於虛擬機只是連接到一台交換機上。
- 路由模式:相當於虛擬機連接到一台路由器上,由路由器(物理網卡),統一轉發,但是不會改變源地址。
- NAT模式:在路由模式中,會出現虛擬機可以訪問其他主機,但是其他主機的報文無法到達虛擬機,而NAT模式則將源地址轉換為路由器(物理網卡)地址,這樣其他主機也知道報文來自那個主機,在docker環境中經常被使用。
- 橋接模式:在宿主機中創建一張虛擬網卡作為宿主機的網卡,而物理網卡則作為交換機。
1. 隔離模式:
2. 路由及NAT模式:
- 橋接模式:
接下來操作網卡橋接
先將 /etc/sysconfig/network-scripts/ 目錄下的網卡配置文件備份一份
cp -r /etc/sysconfig/network-scripts/ /data/networkbak/
a. 創建 netifcfg-br0 文件
(創建的br0文件的IP地址要和物理網卡的IP地址一致,命令 ipconfig查看物理網卡將不會顯示IP)
內容如下:
[root@bogon ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.1.130
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=192.168.1.254
DNS2=114.114.114.114
b. 修改物理網卡eno1
vi /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="YES"
NAME="eno1"
UUID="bb40d726-8d67-4187-90c3-eb61e1b42d61"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.1.130"
NETAMSK=255.255.255.0
GATEWAY="192.168.1.1"
DNS1="221.6.4.66"
IPV6_PRIVACY="no"
BRIDGE=br0
c. 重啟網絡服務
systemctl restart networ
驗證操作結果
若是橋接成功即可看到多了一塊網卡br0
[root@kvm network-scripts]# systemctl restart network
[root@kvm network-scripts]# ip a
1: lo: <loopback,up,lower_up> mtu 65536 qdisc noqueue state UNKNOWN
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
2: eno1: <broadcast,multicast,up,lower_up> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
link/ether 00:0c:29:7b:9f:8c brd ff:ff:ff:ff:ff:ff
5: br0: <broadcast,multicast,up,lower_up> mtu 1500 qdisc noqueue state UP
link/ether 00:0c:29:7b:9f:8c brd ff:ff:ff:ff:ff:ff
inet 192.168.1.130/24 brd 192.168.1.255 scope global br0
valid_lft forever preferred_lft forever
二、安裝linux虛擬機
1.安裝linux虛擬機的准備工作
linux 鏡像(文檔中選的鏡像是centos 7.2)
kvm 已經搭建完成並啟動
vnc 客戶端 (獲取方法會寫在文章末尾處)
創建鏡像存放目錄
mkdir /home/iso
創建vm文件存放路徑
mkdir /data/kvm
2. 准備操作系統安裝鏡像文件
在本文中將使用和宿主環境一樣的CentOS7.2,把該文件放到 /home/iso 目錄下
方法很多種,這里不詳細說明
3.使用 virt-install 創建linux虛擬機
[root@bogon data]# virt-install --name njvm01 --boot network,cdrom,menu=on --ram 6411 --vcpus=1 --os-variant=rhel6 --accelerate --cdrom=/mnt/udisk/CentOS-7-x86_64-DVD-1708.iso --disk path=/data/kvm-bak/vm01.img,size=200,bus=virtio --bridge=br0,model=virtio --autostart --vnc --vncport=5910 --vnclisten=0.0.0.0
WARNING 無法連接到圖形控制台:沒有安裝 virt-viewer。請安裝 'virt-viewer' 軟件包。WARNING 沒有控制台用於啟動客戶機,默認為 --wait -1
開始安裝......
正在分配 'vm01.img' | 200 GB 00:00:00
ERROR internal error: process exited while connecting to monitor: 2018-01-31T06:20:00.727909Z qemu-kvm: -drive file=/mnt/udisk/CentOS-7-x86_64-DVD-1708.iso,format=raw,if=none,id=drive-ide0-0-0,readonly=on: could not open disk image /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso: Could not open '/mnt/udisk/CentOS-7-x86_64-DVD-1708.iso': Permission denied
正在刪除磁盤 'vm01.img' | 0 B 00:00:00
域安裝失敗,您可以運行下列命令重啟您的域:'virsh start virsh --connect qemu:///system start njvm05'
否則請重新開始安裝。
不要理會里面提示的錯誤,接着往下走
4. 打開防火牆上的5910端口
防火牆若關閉請忽略
firewall-cmd --add-port=5910/tcp --permanent
firewall-cmd --reload
5. 查看虛擬機狀態
Virsh list --all
virsh start njvm01
6.開啟虛擬機 然后打開VNC
使用VNC輸入宿主機IP地址 加上端口號 輸入虛擬機名字 打開
然后就可以開始安裝 這里不詳細介紹
三、安裝windows虛擬機
在kvm中,安裝windows需要使用virtio驅動,這個驅動是安裝windows中必須要的,否則就會找不到硬盤,我們先下載驅動。
1.宿主機安裝所需驅動
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
yum install -y virtion-win
2.使用 virt-install 創建linux虛擬機
virt-install --name=win2k12 --ram=8192 --vcpus=2 --os-type=windows --os-variant=win2k12 --disk path=/home/kvm/data/win2k12.img,size=200 --accelerate --cdrom /home/kvm/iso/cn_windows_server_2012_r2_x64_dvd_2707961.iso --vnc --vncport=5911 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole
3.開啟虛擬機vnc 鏈接
安裝過程不細說 說下容易出錯的地方
若在安裝的時提示找不到硬盤
解決方法,掛載win鏡像
virsh change-media win2k12vm01 hdb /usr/share/virtio-win/virtio-win.iso
***重點***
掛載軟驅 (硬盤驅動 網卡驅動等)
注釋:網卡驅動要在系統中裝好之后掛載 不然裝系統的時候會提示找不到光盤鏡像
在宿主機中執行命令
virsh change-media win2k12 hdb /usr/share/virtio-win/virtio-win.iso
VMTools工具安裝完成后,使用如下命令卸載掉掛載的VMTools工具:
a.如果是Linux虛擬機,執行如下命令卸載VMTools工具:
virsh change-media 【虛擬機ID】 --eject 【vmtools-linux.iso文件全路徑】
b.如果是Windows虛擬機,執行如下命令卸載VMTools工具:
virsh change-media 【虛擬機ID】 --eject 【vmtools-windows.iso文件全路徑】
用掛載的方式只是自己摸索出來的,或者有更好的方法可以留言交流