1. 安装VNC

关闭防火墙及selinux,修改selinux config文件:
[root@localhost ~]# vim /etc/selinux/config
查看selinux状态
[root@localhost ~]# getenforce
临时关闭selinux服务
[root@localhost ~]# setenforce 0

KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第1张图片
[root@localhost ~]# systemctl stop firewalld 关闭防火墙
[root@localhost ~]# systemctl disable firewalld 禁止防火墙开机启动
不想关闭防火墙可添加VNC服务到防火墙
[root@localhost ~]# firewall-cmd --permanent --add-service vnc-server
(注:VNC需要开通5901端口,这里只是测试,出于安全考虑在生产环境建议手动添加端口,不建议关闭防火墙。)
安装主程序:
[root@localhost ~]# yum install -y vnc-*

[root@localhost ~]# cp /lib/systemd/system/[email protected] /etc/systemd/system/vncserver@:1.service

修改vncserver@:1.service文件
[root@localhost ~]# vim /etc/systemd/system/vncserver@:1.service

ExecStart=/usr/sbin/runuser -l -c "/usr/bin/vncserver %i"
PIDFile=/home//.vnc/%H%i.pid
修改为
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/home/root/.vnc/%H%i.pid
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第2张图片
(注:根据自己定义的用户进行修改,将修改为自定义登录用户名)
设置VNC登录密码
[root@localhost ~]# vncpasswd
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
(注:使用VNC客户端远程登录时需要使用)
修改qemu.conf配置文件
[root@localhost ~]# vim /etc/libvirt/qemu.conf
修改以下内容:将以下选项的“#”去除
vnc_password = "123456" 是在设置vncpassword时使用的密码
vnc_listen = "0.0.0.0"
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
[root@localhost ~]# systemctl daemon-reload 重新加载

启动vncserver@:1.service
[root@localhost ~]# systemctl start vncserver@:1.service

将vncserver@:1.service设置为开机启动
[root@localhost ~]# systemctl enable vncserver@:1.service

连接测试:
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第3张图片
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第4张图片
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第5张图片

VNC安装测试完成接下来我们创建KVM虚拟机。

2. 虚拟机创建

创建系统镜像存放目录,使用工具将ISO系统安装包上传到/kvm/iso目录下,
[root@localhost /]# mkdir -p /kvm/iso
[root@localhost /]# ls /kvm/iso/
CentOS-7.2-x86_64-DVD-1511.iso
创建一个20G的虚拟磁盘,/var/lib/libvirt/images/为虚拟磁盘默认存放路径
[root@localhost /]# qemu-img create -f qcow2 /var/lib/libvirt/images/kvmtest.qcow2 20G
提示:
在使用虚拟机安装测试KVM时,需要打开CPU虚拟化功能
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第6张图片
如果时物理设备安装KVM,需要在BIOS里面打开CPU虚拟化功能,否则创建虚拟机时无法创建。
相关报错信息:
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
创建虚拟机:
[root@localhost ~]# virt-install --virt-type kvm --name kvmtest --ram 1024 --vcpus 2 --cdrom=/kvm/iso/CentOS-7.2-x86_64-DVD-1511.iso --disk path=/var/lib/libvirt/images/kvmtest.qcow2 --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
命令解析:
--virt-type kvm #指定虚拟机类型“kvm、qemu、xen”(默认是KVM)
--name kvmtest #指定虚拟机名称
--ram 1024 #指定内存大小
--vcpus 2 # 指定虚拟机CPU多少核
--cdrom=/kvm/iso/CentOS-7.2-x86_64-DVD-1511.iso #指定ISO镜像存放位置
--disk path=/var/lib/libvirt/images/kvmtest.qcow2 #指定磁盘文件存放位置
--network bridge=br0 #指定虚拟机网络:"--network"(企业中“桥接网络”用的最多,“NAT网络是默认网络,用‘default’表示”看情况使用;使用哪种网络需要知道它们的名称)
--graphics vnc,listen=0.0.0.0 #指定vnc,vnc监听0.0.0.0地址:"--graphics"(通常使用“VNC”,缺点:虚拟机不能复制;桌面虚拟化使用“spice”,对配置要求很高,尤其显卡;两种方式的端口都可以自己指定)
--noautoconsole #不自动连接控制台
--autostart #指定“宿主机重启后”,虚拟机是否自动开机(可选项,一般设置为自动开机)

更多命令解析可以使用virt-install -h进行查看。

VNC连接测试:
连接虚拟机的端口时5900,默认是-1端口,可以通过virsh edit kvmtest命令查看端口,
[root@localhost ~]# virsh edit kvmtest
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第7张图片

如果需要重新自定义vnc连接端口,可以通过virsh edit kvmtest进行修改,修改port以及autoport内容例如:



修改为


VNC连接测试:
在vnc地址栏中输入宿主主机IP:5900回车,显示以下界面
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第8张图片
点击"Continue"继续的意思
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第9张图片
虚拟机正常连接,系统安装就不做多介绍了。到此KVM虚拟机使用VNC连接设置以完全设置完成。

  1. 拓展
    多个虚拟机需要使用VNC连接如何设置呢!!
    上面我们已经说过了,只需要修改新建项目系统的虚拟机配置文件重新命名vnc端口号就可以了,在指定端口号时最好使用5900以后的端口(个人习惯)具体操作如下:
    [root@localhost ~]# virsh edit <虚拟机名称>
    修改以下内容:



    修改为



    KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)_第10张图片
    温馨提示:自定义端口后,若防火墙在运行状态情况下,记得开放端口!!!^_^
    多虚拟机使用VNC连接设置到此完全结束!!
    下一篇我们继续介绍文本模式安装虚拟机(console连接虚拟机)!!