CentOS 7.5 安裝KVM虛擬機(Windows)

1、KVM環境搭建
1.檢測系統是否支持
cat /proc/cpuinfo | egrep 'vmx|svm'
KVM是基於x86虛擬化擴展(Intel VT 或者 AMD-V)技術的虛擬機軟件,因此查看 CPU 是否支持 VT 技術,就能夠判斷是否支持KVM。
有返回結果,若是結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU的支持的。python


2.關閉SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/configlinux


3.安裝KVM環境
安裝kvm基礎包
yum -y install kvmvim

安裝kvm核心包--虛擬操做系統模擬器加速模塊
yum -y install qemu-kvm qemu-kvm-toolswindows

安裝kvm管理工具
yum -y install libvirt python-virtinst libvirt-python virt-manager libguestfs-tools bridge-utils virt-install
libvirt:必需要裝的核心工具
virt-manager:虛擬機圖形管理工具(宿主機有桌面環境時能夠考慮安裝,命令操做或者遠程控制則不須要)
bridge-utils:虛擬機與外界通訊的命令管理工具
virt-install:虛擬機安裝工具
pyhon-virtinst: 包含python模塊和工具(virt-install,virt-clone和virt-image) centos

重啓宿主機,加載kvm相關模塊
shutdown -r now服務器

查看kvm模塊是否被正確加載
lsmod | grep kvm
出現如下信息則表示正確加載
kvm_intel         162153       0
kvm                  525259      1     kvm_intel
irqbypass        13503         1     kvm 網絡

開啓kvm服務,並設置開機啓動
systemctl start libvirtd.service
systemctl enable libvirtd.servicesession

查看操做結果,出現Active:active(running)字樣則說明運行狀況良好
systemctl status libvirtd
systemctl is-enabled libvirtdapp

 

2、網橋搭建
若是是在局域網內安裝kvm虛擬機,爲了方便鏈接和維護管理,kvm虛擬機的網絡模式咱們建議使用Bridge模式(另外還有NAT模式),這樣kvm虛擬機和宿主機就處在同一個網段,局域網內其它主機就直接鏈接tcp

1.查看宿主機網卡信息
ip a 或者 ifconfig a
通常物理網卡名稱爲eth0、eth1或ens開頭的等等,我本機上的就是ens33
複製ens33網卡配置文件到br0文件
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-br0

2.宿主機物理網卡配置
vim ifcfg-ens33

TYPE=Ethernet      #TYPE必須爲Ethernet PROXY_METHOD=none BROWSER_ONLY=no #BOOTPROTO=dhcp #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=ens33 UUID=5169b9de-3b6a-425e-8f92-3c74e1e8d97d DEVICE=ens33 ONBOOT=yes BRIDGE=br0       #在原來的ifcfg-ens33配置文件中必須添加的(這塊網卡橋接到br0設備上) NM_CONTROLLED=no   #是否由NetworkManger服務控制該網絡接口,修改後當即生效,無需重啓,通常設置成no # 由於要設置橋接,這幾項IP地址等原來的配置信息必須關閉,在br0配置文件中再設置 #IPADDR=192.168.0.9 #NETMASK=255.255.255.0 #GATEWAY=192.168.0.1 #DNS1=114.114.114.114 #DNS2=8.8.8.8 #PREFIX=24

3.橋接網卡配置

vim ifcfg-br0

TYPE=Bridge      #TYPE必須爲Bridge DEVICE=br0 NAME=br0 BOOTPROTO=static DEFROUTE=yes     #是否使用默認路由 PEERDNS=no      #是否指定DNS,若是使用DHCP協議,默認爲yes PEERROUTES=no     #是否指定路由 ONBOOT=yes DELAY=0 NM_CONTROLLED=no #一樣設置爲no,不讓NetworkManager服務管理br0網卡 IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_DEFROUTE=yes IPV6_AUTOCONF=yes IPV6_FAILURE_FATAL=no IPADDR=192.168.0.9 NETMASK=255.255.255.0 GATEWAY=192.168.0.1 DNS1=114.114.114.114 DNS2=8.8.8.8 PREFIX=24

4.查看設置結果

關閉NetworkManager服務,也能夠用service stop NetworkManager,systemctl是如今linux發行版通用的服務管理工具,CentOS中使用service命令會自動調用systemctl工具
systemctl stop NetworkManager.service

重啓網絡服務,若是重啓不成功,通常是ens33和br0配置文件中配置項衝突形成的
systemctl restart network.service

查看網絡配置是否正確,能夠ip a查看是否ens33和br0信息,推薦使用brctl show命令,若是提示沒有brctl命令,yum -y install bridge-utils安裝 

brctl show

若是結果中出現相似下面的信息,則代表橋接初步設置成功,主要是第一項,第二項,第四項,常見的狀況是第四項爲空,緣由是物理網卡配置文件中Bridge=br0這一項缺乏

 

3、VNC環境搭建
1.安裝vnc服務
yum -y install tigervnc tigervnc-server

2.vnc服務配置——宿主機遠程控制
配置vnc
將/lib/systemd/system/vncserver@.service文件複製一份到/etc/systemd/system/目錄
cp /lib/systemd/system/vncserver@.service  /etc/systemd/system/vncserver@:1.service
編輯剛剛複製獲得的文件,將文件中的<USER>修改成VNC Client(或者VNC Viewer)鏈接的帳號,我只設置一個用戶root,多用戶再增長對應的vncserver@:2.service文件便可
vim /etc/systemd/system/vncserver@:1.service
修改之後的文件部份內容(只修改文件下半部分)

[Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking User=root # Clean any existing files in /tmp/.X11-unix environment ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i" #ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver :1 -geometry 1280*720 -depth 24" PIDFile=/root/.vnc/%H%i.pid ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target

設置vnc鏈接密碼,輸入命令vncpasswd之後連續輸入兩次密碼,而後直接連續回車
vncpasswd

啓動vncserver@:1.service並設置開機啓動
systemctl start vncserver@:1.service
systemctl enable vncserver@:1.service

設置防火牆(VNC默認是被防火牆阻止的)
firewall-cmd --permanent --add-service="vnc-server" --zone="public"
firewall-cmd --reload

啓動VNC服務
vncserver
會出現如下信息:其中說明VNC客戶端鏈接帳號爲root,端口號爲5901
New 'dev:1 (root)' desktop is dev:1
Starting applications specified in /root/.vnc/xstartup
Log file is /root/.vnc/dev:1.log

測試

3.vnc服務配置——虛擬機遠程控制
上面是VNC鏈接主機的VNC服務時設置的狀況,若是是要遠程鏈接主機安裝虛擬機,能夠不進行上面的設置,安裝虛擬機的時候用主機ip,端口號5900(默認,能夠進行設置,後面會說到),有權限的帳號密碼均可以鏈接。

這裏也有一個坑:5900是VNC裏面遠程鏈接虛擬機用的端口(安裝和安裝好之後都用這個端口),能遠程操做安裝過程;5901,5902等端口是VNC中設置的遠程鏈接主機的端口號,這裏要作好區分。

還有一種用virt-manager虛擬機圖形管理的方式安裝虛擬機,這裏有個前提,主機必須安裝好GNOME等桌面環境,CentOS中安裝有點複雜,很難安裝成功(踩過的第一個坑),我的以爲仍是用VNC的方式安裝比較好,服務器安裝桌面環境多少有點累贅。

 

4、虛擬機安裝
這一步操做須要注意的幾個點:
a、局域網內與主機傳輸文件用scp或ftp命令,要保證ISO鏡像文件在主機上有操做權限的目錄下,好比 /home等;
b、無論安裝什麼系統的虛擬機,建立的磁盤類型,分配的虛擬內存等參數可能有所不一樣,但有幾個參數必需要正確對應,不然安裝不成功。須要注意的幾個參數:

--disk
--cdrom或者--location
--cpu ( 這個必須和主機的cpu型號一直 )
--network ( 首先要肯定須要安裝虛擬機網絡的類型,是Bridge模式仍是NAT模式 )
--graphics
--os-type

1.建立磁盤(kvm虛擬機的磁盤總大小)
建立類型爲raw的磁盤,還有另外兩種格式img和qcow2
qemu-img create -f raw /data/vms/win2008.raw 20G

檢查磁盤是否建立成功
qemu-img info /data/vms/win2008.raw

看到相似如下信息代表磁盤建立成功

2.使用virt-install命令以及VNC遠程控制安裝虛擬機

Windows系統安裝

virt-install \ --virt-type kvm \ --name win2008 \ --ram 2048 \ --cdrom=/home/Windows_Server_2008_R2_with_SP1_x64_DVD_Chinese-Simplified.iso \ --boot cdrom \ --vcpu 1 \ --network bridge=br0,model='e1000' \ --graphics vnc,listen=0.0.0.0,port=5900 \ --disk path=/data/vms/win2008.raw,bus='ide' \ --noautoconsole \ --os-type=windows

執行上述命令後,虛擬機安裝並未結束,接下來用上面配置的VNC鏈接主機進行後續操做

此時若是virt-install命令參數沒有問題,會有提示信息:
開始安裝......
域安裝仍在進行,您能夠從新鏈接
到控制檯(virsh console)以便完成安裝進程

執行之後只看到提示鏈接成功,其餘沒有變化,因此不用執行這個命令,暫時沒發現有什麼用處
局域網內的任意一臺同網段的電腦經過vnc client或者vnc viewer鏈接虛擬機


CentOS系統安裝

virt-install \ --virt-type=kvm \ --name=centos7 \ --vcpus=2 \ --memory=2048 \ --location=/home/CentOS-7-x86_64-Minimal-1804.iso \ --disk path=/data/vms/centos7.qcow2,size=20,format=qcow2 \ --network bridge=br0 \ --graphics none \ --extra-args='console=ttyS0' \ --force

使用--graphics none說明安裝過程不使用圖形化的交互方式,直接在命令行終端操做安裝便可
在命令行終端安裝完畢後會提示回車繼續,回車後虛擬機就會啓動並進入到登錄界面


3.virt-install經常使用參數說明
# 舊版本的寫法

–name 指定虛擬機名稱
–memory 分配內存大小。
–vcpus 分配CPU核心數,最大與實體機CPU核心數相同
–disk 指定虛擬機鏡像,size指定分配大小單位爲G。
–network 網絡類型,此處用的是默認,通常用的應該是bridge橋接。
–accelerate 加速
–cdrom 指定安裝鏡像iso
–vnc 啓用VNC遠程管理,通常安裝系統都要啓用。
–vncport 指定VNC監控端口,默認端口爲5900,端口不能重複。
–vnclisten 指定VNC綁定IP,默認綁定127.0.0.1,這裏改成0.0.0.0。
–os-type=linux,windows
–os-variant=rhel6

# 新版本的寫法

--name 指定虛擬機名稱
--ram 虛擬機內存大小,以 MB 爲單位
--vcpus 分配CPU核心數,最大與實體機CPU核心數相同
--vnc 啓用VNC遠程管理,通常安裝系統都要啓用。
--vncport 指定VNC監控端口,默認端口爲5900,端口不能重複。
--vnclisten 指定VNC綁定IP,默認綁定127.0.0.1,這裏改成0.0.0.0。
--network 虛擬機網絡配置
# 其中子選項,bridge=br0 指定橋接網卡的名稱。

--os-type=linux,windows
--os-variant=rhel7.2

--disk 指定虛擬機的磁盤存儲位置
# size,初始磁盤大小,以 GB 爲單位。

--location 指定安裝介質路徑,如光盤鏡像的文件路徑。
--graphics 圖形化顯示配置
# 全新安裝虛擬機過程當中可能會有不少交互操做,好比設置語言,初始化 root 密碼等等。
# graphics 選項的做用就是配置圖形化的交互方式,可使用 vnc(一種遠程桌面軟件)進行連接。
# 咱們這列使用命令行的方式安裝,因此這裏要設置爲 none,但要經過 --extra-args 選項指定終端信息,
# 這樣才能將安裝過程當中的交互信息輸出到當前控制檯。
--extra-args 根據不一樣的安裝方式設置不一樣的額外選項

 

5、VNC端口說明
Linux下的VNC能夠同時啓動多個vncserver,各個vncserver之間用顯示編號(display number)來區分,每一個vncserver服務監聽3個端口,它們分別是:

5800+顯示編號: VNC的httpd監聽端口,若是VNC客戶端爲IE,Firefox等非vncviewer時必須開放。
5900+顯示編號: VNC服務端與客戶端通訊的真正端口,必須無條件開放。
6000+顯示編號: X監聽端口,可選。
顯示編號、開放的端口分別由/etc/sysconfig/vncservers文件中的VNCSERVERS和VNCSERVERARGS控制。
VNCSERVERS="顯示編號1:用戶名1 …"
如:
VNCSERVERS="1:root 2:aiezu"
VNCSERVERARGS的設置方式爲:
VNCSERVERARGS[顯示編號1]="參數一 參數值一 參數二 參數值二 ……"
如:
VNCSERVERARGS[2]="-geometry 800x600 -nohttpd"
VNCSERVERARGS的詳細參數有:
-geometry 桌面分辨率,默認1024x768;
-nohttpd 不監聽HTTP端口(58xx端口);
-nolisten tcp 不監聽X端口(60xx端口);
-localhost 只容許從本機訪問;
-AlwaysShared 默認只同時容許一個vncviewer鏈接,此參數容許同時連多個vncviewer;
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
#twm &
startkde &
# gnome-session &
配置完各個用戶根目錄下的".vnc/xstartup"後,執行service vncserver restart 從新啓動vncserver使配置生效。

VNCSERVERS的設置方式爲:
-SecurityTypes None 登陸不須要密碼認證VncAuth默認值,要密碼認證。
VNC Server的默認設置下,客戶端鏈接時啓動的是xterm,若是想看到桌面,必須將用戶根目錄下的".vnc/xstartup"文件中的最後兩行註釋掉,而後根據你安裝的桌面壞境,添加一行"startkde &"或者"gnome-session &"。

相關文章
相關標籤/搜索