linux virt-manager vncserver 安裝
本地Xming要先啟動
出處:https://www.linuxidc.com/Linux/2017-05/143324.htm
之前介紹了使用WebVirtMgr或Openstack來部署及管理kvm虛擬機器,下面簡單介紹centos7.4下使用virt-manager部署及管理kvm虛擬機器的做法:
建立系統盤卷命令:
qemu-img create -f qcow2 "centos.disk" 20G
0)KVM是什麼
KVM(Kernel-based Virtual Machine, 即核心級虛擬機器) 是一個開源的系統虛擬化模組。它使用Linux自身的排程器進行管理,所以相對於Xen,其核心
原始碼很少。目前KVM已成為學術界的主流VMM之一,它包含一個為處理器提供底層虛擬化 可載入的核心模組kvm.ko(kvm-intel.ko 或 kvm-amd.ko)。kvm
還需要一個經過修改的QEMU 軟體(qemu-kvm),作為虛擬機器上層控制和介面。KVM的虛擬化需要硬體支援(如 Intel VT技術或者AMD V技術)。是基於硬體的
完全虛擬化。 KVM可以執行多個其本身執行未改動的映象的虛擬機器,例如
器等。
KVM和QEMU的關係
QEMU是個獨立的虛擬化解決方案,從這個角度它並不依賴KVM。而KVM是另一套虛擬化解決方案,不過因為這個方案實際上只實現了核心中對處理器(Intel VT)
, AMD SVM)虛擬化特性的支援,換言之,它缺乏裝置虛擬化以及相應的使用者空間管理虛擬機器的工具,所以它借用了QEMU的程式碼並加以精簡,連同KVM一起構成了
另一個獨立的虛擬化解決方案:KVM+QEMU。
1)kvm相關安裝包及其作用
qemu-kvm 主要的KVM程式包
python -virtinst 建立虛擬機器所需要的命令列工具和程式庫
virt-manager GUI虛擬機器管理工具
virt-top 虛擬機器統計命令
virt-viewer GUI連線程式,連線到已配置好的虛擬機器
libvirt C語言工具包,提供libvirt服務
libvirt-client 虛擬客戶機提供的C語言工具包
virt-install 基於libvirt服務的虛擬機器建立命令
bridge-utils 建立和管理橋接裝置的工具
2)centos7安裝VNC環境
請參考:http://www.cnblogs.com/kevingrace/p/5821450.html
3)安裝kvm
1)檢查cpu是否支援虛擬化
[[email protected] ~]# grep vmx /proc/cpuinfo
如果有vmx資訊輸出,就說明支援VT;如果沒有任何的輸出,說明你的cpu不支援,將無法使用KVM虛擬機器。
2)確保BIOS裡開啟虛擬化功能,即檢視是否載入KVM模組
[[email protected] ~]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
=========================================================
如果沒有載入,執行以下命令:
[[email protected] ~]# modprobe kvm
[[email protected] ~]# modprobe kvm-intel
[[email protected] ~]# lsmod | grep kvm
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
=========================================================
核心模組匯出了一個名為/dev/kvm的裝置,這個裝置將虛擬機器的的地址空間獨立於核心或者任何應用程式的地址空間。
[[email protected] ~]# ll /dev/kvm
crw-rw-rw-. 1 root kvm 10, 232 1月 29 11:56 /dev/kvm
3)橋接網路
如果沒有brctl命令(用來管理網橋的工具),則需要安裝bridge-utils ,
[[email protected] ~]# yum -y install bridge-utils
[[email protected] ~]# systemctl restart network
配置KVM的網橋模式
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# cp ifcfg-eno1 ifcfg-br0
[[email protected] network-scripts]# cat ifcfg-br0
TYPE="Bridge" //這一行修改為Bridge
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="br0" //修改裝置名稱為br0
#UUID="fdbad04f-dae3-440e-8a8b-01d6a7bc9fe0" //這一行註釋
DEVICE="br0" //修改裝置為br0
ONBOOT="yes"
IPADDR="192.168.10.210"
PREFIX="24"
GATEWAY="192.168.10.1"
DNS1="8.8.8.8"
[[email protected] network-scripts]# cat ifcfg-eno1
TYPE="Ethernet"
BRIDGE=br0 //新增這一行
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="no"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eno1"
UUID="fdbad04f-dae3-440e-8a8b-01d6a7bc9fe0"
DEVICE="eno1"
ONBOOT="yes"
#IPADDR="192.168.10.210" //註釋掉這幾行
#PREFIX="24"
#GATEWAY="192.168.10.1"
#DNS1="8.8.8.8"
重啟網絡卡服務
[[email protected] network-scripts]# systemctl restart network
檢視網絡卡
[[email protected] network-scripts]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.0894ef518b22 no eno1
virbr0 8000.52540095d7c2 yes virbr0-nic
檢視ip資訊
[[email protected] network-scripts]# ifconfig |head -20
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.210 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::a94:efff:fe51:8b22 prefixlen 64 scopeid 0x20<link>
ether 08:94:ef:51:8b:22 txqueuelen 1000 (Ethernet)
RX packets 856 bytes 52981 (51.7 KiB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 120 bytes 23450 (22.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 08:94:ef:51:8b:22 txqueuelen 1000 (Ethernet)
RX packets 10077 bytes 793083 (774.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1184 bytes 228415 (223.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16
eno2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 08:94:ef:51:8b:23 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
[[email protected] network-scripts]# ping www.baidu.com
PING www.a.shifen.com (61.135.169.121) 56(84) bytes of data.
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=1 ttl=55 time=2.08 ms
64 bytes from 61.135.169.121 (61.135.169.121): icmp_seq=2 ttl=55 time=1.80 ms
........
4)安裝libvirt及kvm
libvirt是管理虛擬機器的API庫,不僅支援KVM虛擬機器,也可以管理Xen等方案下的虛擬機器。
[[email protected] ~]# yum -y install libcanberra-gtk2 qemu-kvm.x86_64 qemu-kvm-tools.x86_64 libvirt.x86_64 libvirt-cim.x86_64 libvirt-client.x86_64
libvirt-java.noarch libvirt-python.x86_64 libiscsi-1.7.0-5.el6.x86_64 dbus-devel virt-clone tunctl virt-manager libvirt libvirt-python python-virtinst
由於要用virt-manager圖形化安裝虛擬機器,所以還需要安裝X-window(這個在前面部署VNC環境裡就已經安裝了)
[[email protected] ~]# yum groupinstall "X Window System"
安裝中文字元,解決介面亂碼問題
[[email protected] ~]# yum install -y dejavu-lgc-sans-fonts
[[email protected] ~]# yum groupinstall -y "Fonts"
啟用libvirt
[[email protected] ~]# systemctl enable libvirtd
[[email protected] ~]# systemctl start libvirtd
4)使用virt-manager管理kvm(通過VNC連線伺服器)
提前將ISO系統映象存放到伺服器的一個目錄裡,比如/data/iso
[[email protected] ~]# mkdir /data/iso
[[email protected] ios]# ll
總用量 3356384
-rw-r--r--. 1 qemu qemu 3436937216 1月 29 11:41 win-server2008_R2.iso
5)解決KVM虛擬機器在使用vnc連線時滑鼠不同步的問題
在VNC介面中感覺virt-manager管理的虛擬機器介面總是滑鼠跟不上,指到哪兒也看不出來,介面上一直顯示press control_l+a/t_l來移動滑鼠!十分鬱悶!
想要修改滑鼠和宿主機介面同步方法如下:
[[email protected] ~]# cd /etc/libvirt/qemu
[[email protected] qemu]# ls
networks test-win2008.xml
[[email protected] qemu]# cp test-win2008.xml /opt/
[[email protected] qemu]# vim test-win2008.xml //在<devices>標籤中新增下面這段配置
<devices>
......
<input type='tablet' bus='usb'/> //即新增這句話即可!
......
</devices>
[[email protected] qemu]# virsh define /etc/libvirt/qemu/test-win2008.xml
定義域 test-win2008(從 /etc/libvirt/qemu/test-win2008.xml)
然後重啟虛擬機器後,發現虛擬機器中的滑鼠就會好事了,開啟VNC檢視虛擬機器介面後預設情況下虛擬機器中的滑鼠指標和實體機的滑鼠指標就是重合的,且兩者運動速度也是同步的,
這下就徹底解決了滑鼠指標漂移/不同步的情況了!
6)重定向USB裝置
(即將宿主機上的USB裝置指定到目標虛擬機器上)。適合掛載銀行前置機裝置!
先將USB裝置插到宿主機上,接著在virt-manager介面裡開啟虛擬機器,然後虛擬機器介面上欄裡開啟”虛擬機器”->”重定向USB裝置(R)”。(特別注意:如下選擇將usb裝置掛載到虛擬機器上後,不要關閉這個掛載介面,否則usb掛載動作就會結束!)
檢視虛擬機器,發現指定的USB裝置已經掛載到該虛擬機器上了!
如果要解除安裝該虛擬機器上掛載的這個USB裝置,即在”重定向裝置usb(R)”裡將這個USB裝置去掉,然後”確定”即可!
注意:vnc連線地址 [email protected]:1.service為:192.168.212.31:1
出處:https://www.linuxidc.com/Linux/2017-05/143324.htm
VNC是什麼( Virtual Network Computing)VNC允許Linux系統可以類似實現像Windows中的遠端桌面訪問那樣訪問Linux桌面。本文配置是在CentOS 7 HP伺服器環境下執行。
首先試試伺服器裝了VNC沒
[[email protected] ~]# rpm -q tigervnc tigervnc-server
沒安裝的話會直接出現
package tigervnc is not installed
package tigervnc-server is not installed
如果沒有安裝X-Windows 桌面的話要先安裝Xwindows
[[email protected] ~]# yum check-update
[[email protected] ~]# yum groupinstall "X Window System"
[[email protected] ~]# yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts
[[email protected] ~]# unlink /etc/systemd/system/default.target
[[email protected] ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
[[email protected] ~]# reboot
第一步,安裝VNC packages:
[[email protected] ~]# yum install tigervnc-server -y
第二步,修改配置資訊,在/etc/systemd/system/下建立資料夾[email protected]:1.service 把example config 檔案從/lib/systemd/system/[email protected]複製到裡面
[[email protected] ~]# cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]:1.service
然後開啟這個配置檔案/etc/systemd/system/[email protected]:1.service替換掉預設使用者名稱
找到這一行
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
這裡我直接用root 使用者登入,所以我替換成
ExecStart=/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
如果是其他使用者的話比如john替換如下
ExecStart=/sbin/runuser -l <USER> -c "/usr/bin/vncserver %i"
PIDFile=/home/<USER>/.vnc/%H%i.pid
第三步,重載入 systemd
[[email protected] ~]# systemctl daemon-reload
第四步,為VNC設密碼
[[email protected] ~]# vncpasswd
第五步,由於我這邊的Centos 7 是用iptable防火牆的所以
vim /etc/sysconfig/iptables
在合適位置加上
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5903 -j ACCEPT
重啟iptable
service iptables restart
如果是用Centos 7 預設防火牆的可能需要
[[email protected] ~]# firewall-cmd --permanent --add-service vnc-server
[[email protected] ~]# systemctl restart firewalld.service
第六步,設預設啟動並開啟VNC
[[email protected] ~]# systemctl enable [email protected]:1.service
[[email protected] ~]# systemctl start [email protected]:1.service
這樣基本上Centos 端就設好了,Windows 端要去下一個VNC Viewer 的軟體。連線一下試試看著有點簡陋但是上去了的