一、安装KVM
检查服务器是否支持虚拟化(vmx为interl平台、svm是AMD平台):
grep -E -o 'vmx|svm' /proc/cpuinfo
安装KVM所需软件包:
yum groupinstall kvm
或者:
yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst bridge-utils
检查是否安装成功:
lsmod |grep kvm
二、Centos安装vncserver
VNC管理KVM示意图:
配置软件仓库:
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/repo.repo <<END
[baseos]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
[appstream]
name=appstream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
END
安装图形界面:
yum -y group install "Server With GUI"
也可以安装桌面环境:
yum groupinstall Desktop -y
更新系统:
rm -rf /etc/yum.repos.d/*
cat > /etc/yum.repos.d/repo.repo <<END
[baseos]
name=baseos
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/BaseOS/x86_64/os/
gpgcheck=0
[appstream]
name=appstream
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/8/AppStream/x86_64/os/
gpgcheck=0
END
yum -y update
重启系统:
reboot
安装 tigervnc-server和字体编译器(防止远程出现乱码):
yum -y install tigervnc-server fontforge
设置yyds用户的vnc密码,yyds用户:
vncpasswd
有时不配服务器起不来,重新加载服务唤醒配置文件:
vncserver
设置systemd文件:
vim /etc/systemd/system/vncserver@.service
[Unit]
Description=Remote Desktop VNC Service
After=syslog.target network.target
[Service]
Type=forking
WorkingDirectory=/home/yyds
User=yyds
Group=yyds
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver -autokill %i
ExecStop=/usr/bin/vncserver -kill %i
[Install]
WantedBy=multi-user.target
启动服务:
systemctl daemon-reload
systemctl enable vncserver@:20.service --now
关闭Selinu、防火墙放行:
firewall-cmd --add-port=5920/tcp
firewall-cmd --add-port=5920/tcp --per
更改默认登陆用户和远程分辨率:
vi /etc/sysconfig/vncservers
VNCSERVERS="1:root"
VNCSERVERARGS[2]="-geometry 1024X768 -nolisten tcp -localhost"
三、Ubuntu安装vncserver
更新软件仓库缓存:
apt update -y
安装轻量级图形界面:
apt -y install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
安装 tigervnc-server:
apt -y install tigervnc-standalone-server tigervnc-common
配置vnc使用xfce图形:
想要图形连接,需要配置xfce,想让哪个用户使用vnc,就在哪个用户的家目录下创建配置文件。
vim ~yyds/.vnc/xstartup
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
chmod +x ~yyds/.vnc/xstartup
测试vnc服务:
#yyds用户做如下操作
vncpasswd
vncserver :30 -localhost no
#kill掉vnc进程
vncserver -kill :30
:30就是设置5930作为vnc服务的端口,vnc是明文传输,为了安全考虑只会监听本地的localhost,所以设置-localhost no监听所有端口,可以让其他IP进行访问。
VNC访问ubuntu虚拟机:
显示的图形界面是xfce轻量级图形界面,不是ubuntu本身的图形界面。
要显示ubuntu原来的图形,安装 GNOME 图形界面。
如果要重启ubuntu,需要自己设置systemd文件,让5930端口自启动:
vim /etc/systemd/system/vncserver@.service
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=yyds
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -alwaysshared -fg -localhost no
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
启动服务:
systemctl daemon-reload
systemctl enable vncserver@30.service --now
四、配置桥口
主要用于KVM虚拟机中安装虚拟机,可以和真是机互通并可出外网。
创建桥口br0:
cp /etc/sysconfig/network-script/ifcfg-eth0 /etc/sysconfig/network-script/ifcfg-br0
vi /etc/sysconfig/network-script/ifcfg-br0
DEVICE="br0"
BOOTPROTO="static"
#HWADDR="………………" #前面加井号注释掉MAC地址,因为是eth0上拷贝的
ONBOOT="yes"
TYPE="Bridge"
IPADDR=X.X.X.X
NETMASK=X.X.X.X
GATEWAY=X.X.X.X
vi /etc/sysconfig/network-script/ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="static"
HWADDR="………………" #默认
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=X.X.X.X
NETMASK=X.X.X.X
GATEWAY=X.X.X.X
BRIDGE="br0"
vi /etc/sysconfig/network-script/ifcfg-eth1
DEVICE="eth1
BOOTPROTO="static"
HWADDR="………………" #默认
ONBOOT="yes"
TYPE="Ethernet"
IPADDR=X.X.X.X
NETMASK=X.X.X.X
BRIDGE="br0"
创建脚本将下面的命令添加进去:
vi bradd.sh
#!/bin/bash
brctl addbr br0 #添加网桥br0
brctl addif br0 eth0 #添加eth0 到br0中
brctl addif br0 eth1 #添加eth1 到br0中
service network restart
service libvirtd restart
chmod 755 addbr.sh #给bradd.sh赋予执行权限
nohup ./addbr.sh & #在后台执行脚本中的指令
最后关闭NetworkManager,完成后再addbr.sh。
所属目录下找到nohup.out 这里面记录了操作日志,可帮助判断哪步执行失败。
五、配置远程连接
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254009a0ee3 yes virbr0-nic
[root@localhost ~]# ifconfig virbr0
virbr0: flags=4163 mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:9a:0e:e3 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
把虚拟网卡添加到虚拟网桥中:
[root@localhost ~]# yum -y install bridge-utils
[root@localhost ~]# brctl addbr br0
[root@localhost ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
virbr0 8000.5254009a0ee3 yes virbr0-nic
[root@localhost ~]# brctl addif br0 ens33
执行此步后,会导致xshell与宿主机断开连接,以下操作在宿主机完成。
在虚拟机上删除ens33上面的IP地址,将br0上面添加上固定IP地址:
[root@localhost ~]# ip addr del dev ens33 10.0.0.41/24
[root@localhost ~]# ifconfig br0 10.0.0.41/24 up
[root@localhost ~]# route add default gw 10.0.0.254
[root@localhost ~]# route -n
连接xshell查看是否生效:
此时宿主机的IP:10.0.0.41已经绑定到br0网卡;但是服务器重启后就不能生效了。
通过配置文件配置桥接设备永久生效,为kvm宿主机创建虚拟网卡,并将物理网卡作为桥设备。
[root@localhost ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
配置DNS:
[root@localhost ~]# vi /etc/resolv.conf
[root@localhost ~]# nameserver 223.5.5.5
[root@localhost ~]# ifup eth0
一般生产环境不能安装图形界面,远程访问没有安装GUI的Linux虚拟机上的图形服务,需要使用Xming配置图形转发,在windows的GUI上显示没有安装GUI的Linux图形界面,需要以下操作:
- 在windows安装xming或Xmanager;
- 连接linux配置DISPLAY环境变量;
- 调用图形;
如果一个系统安装了图形界面X Server和firefox浏览器,那么进到这个系统的控制台或者远程桌面,就可以在命令行上输入firefox命令调出firefox的图形。
DISPLAY指定windows地址,后面0:0是Xming设置的number。
xming把no GUI的Linux Firefox浏览器显示出来了。
因为我的主机是服务器,没有图形化界面,想要用virt-manager图形化安装虚拟机,还需要安装x-window。
[root@localhost ~]# grep X11Forwarding /etc/ssh/sshd_config --colour
X11Forwarding yes
[root@localhost ~]# yum install -y xorg-x11-font-utils.x86_64 xorg-x11-server-utils.x86_64 xorg-x11-utils.x86_64 xorg-x11-xauth.x86_64 xorg-x11-xinit.x86_64 xorg-x11-drv-ati-firmware
[root@localhost ~]# yum install virt-manager libvirt libvirt-Python python-virtinst libvirt-client virt-viewer qemu-kvm mesa-libglapi -y
[root@localhost ~]# yum install libXdmcp libXmu libxkbfile xkeyboard-config xorg-x11-xauth xorg-x11-xkb-utils -y
[root@localhost ~]# systemctl restart libvirtd.service
[root@localhost ~]# systemctl enable libvirtd.service
安装好Xming后,打开xshell,在连接属性的tunneing中,勾选Forwarding X11 connection to 选项,可以正常打开virt-manager的图形界面。
启动virt-manager:
断开xshell会话,重新连接,输入命令:virt-maager,就可以自动弹出kvm管理软件。
[root@localhost ~]# virt-manager
出现乱码,安装以下包:
[root@localhost ~]# yum -y install dejavn-sans-mono-fonts
如果ping不通外网,启动一下网卡,看看行不行,记得看一下你网卡的配置文件是否正确(桥接模式是否正确)。