KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)

zlsh00 2020-04-22

1. 安装VNC

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

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

[ ~]# cp /lib/systemd/system/ /etc/systemd/system/:1.service

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

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

启动:1.service
[ ~]# systemctl start :1.service

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

连接测试:
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)

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

2. 虚拟机创建

创建系统镜像存放目录,使用工具将ISO系统安装包上传到/kvm/iso目录下,
[ /]# mkdir -p /kvm/iso
[ /]# ls /kvm/iso/
CentOS-7.2-x86_64-DVD-1511.iso
创建一个20G的虚拟磁盘,/var/lib/libvirt/images/为虚拟磁盘默认存放路径
[ /]# qemu-img create -f qcow2 /var/lib/libvirt/images/kvmtest.qcow2 20G
提示:
在使用虚拟机安装测试KVM时,需要打开CPU虚拟化功能
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
如果时物理设备安装KVM,需要在BIOS里面打开CPU虚拟化功能,否则创建虚拟机时无法创建。
创建虚拟机:
[ ~]# 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 --autostart
命令解析:
--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命令查看端口,
[ ~]# virsh edit kvmtest
KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)

如果需要重新自定义vnc连接端口,可以通过virsh edit kvmtest进行修改,修改port以及autoport内容例如:
<graphics type=‘vnc‘ port=‘-1‘ autoport=‘yes‘ listen=‘0.0.0.0‘>
<listen type=‘address‘ address=‘0.0.0.0‘/>
</graphics>
修改为
<graphics type=‘vnc‘ port=‘<自定义端口>‘ autoport=‘no‘ listen=‘0.0.0.0‘>
<listen type=‘address‘ address=‘0.0.0.0‘/>
</graphics>

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

  1. 拓展
    多个虚拟机需要使用VNC连接如何设置呢!!
    上面我们已经说过了,只需要修改新建项目系统的虚拟机配置文件重新命名vnc端口号就可以了,在指定端口号时最好使用5900以后的端口(个人习惯)具体操作如下:
    [ ~]# virsh edit <虚拟机名称>
    修改以下内容:
    <graphics type=‘vnc‘ port=‘-1‘ autoport=‘yes‘ listen=‘0.0.0.0‘>
    <listen type=‘address‘ address=‘0.0.0.0‘/>
    </graphics>
    修改为
    <graphics type=‘vnc‘ port=‘<自定义端口>‘ autoport=‘no‘ listen=‘0.0.0.0‘>
    <listen type=‘address‘ address=‘0.0.0.0‘/>
    </graphics>
    KVM之文本模式创建虚拟机及使用VNC连接控制虚拟机(非console)
    温馨提示:自定义端口后,若防火墙在运行状态情况下,记得开放端口!!!^_^
    多虚拟机使用VNC连接设置到此完全结束!!
    下一篇我们继续介绍使用console来连接虚拟机!!

相关推荐