CentOS 7.5 安装KVM虚拟机(Windows)

一、KVM环境搭建
1.检测系统是否支持
cat /proc/cpuinfo | egrep ‘vmx|svm’
KVM是基于x86虚拟化扩展(Intel VT 或者 AMD-V)技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。
有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。

2.关闭SELinux
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

3.安装KVM环境
安装kvm基础包
yum -y install kvm

安装kvm核心包–虚拟操作系统模拟器加速模块
yum -y install qemu-kvm qemu-kvm-tools

安装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)

重启宿主机,加载kvm相关模块
shutdown -r now

查看kvm模块是否被正确加载
lsmod | grep kvm
出现以下信息则表示正确加载
kvm_intel 162153 0
kvm 525259 1 kvm_intel
irqbypass 13503 1 kvm

查看操作结果,出现Active:active(running)字样则说明运行情况良好
systemctl status libvirtd
systemctl is-enabled libvirtd

二、网桥搭建
如果是在局域网内安装kvm虚拟机,为了方便连接和维护管理,kvm虚拟机的网络模式我们建议使用Bridge模式(另外还有NAT模式),这样kvm虚拟机和宿主机就处在同一个网段,局域网内其它主机就直接连接

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

3.桥接网卡配置

vim ifcfg-br0

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这一项缺少

三、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
编辑刚刚复制得到的文件,将文件中的
vim /etc/systemd/system/vncserver@:1.service
修改以后的文件部分内容(只修改文件下半部分)

设置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的方式安装比较好,服务器安装桌面环境多少有点累赘。

四、虚拟机安装
这一步操作需要注意的几个点:
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系统安装

执行上述命令后,虚拟机安装并未结束,接下来用上面配置的VNC连接主机进行后续操作

此时如果virt-install命令参数没有问题,会有提示信息:
开始安装……

域安装仍在进行,您可以重新连接
到控制台(virsh console)以便完成安装进程

执行以后只看到提示连接成功,其他没有变化,所以不用执行这个命令,暂时没发现有什么用处
局域网内的任意一台同网段的电脑通过vnc client或者vnc viewer连接虚拟机

CentOS系统安装

使用–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 根据不同的安装方式设置不同的额外选项

五、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 800×600 -nohttpd”
VNCSERVERARGS的详细参数有:
-geometry 桌面分辨率,默认1024×768;
-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 80×24+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 &”。

Original: https://www.cnblogs.com/fjping0606/p/9922916.html
Author: 陌上归人的博客
Title: CentOS 7.5 安装KVM虚拟机(Windows)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/543131/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Spring-Boot新项目启动总是提示:Process-finished-with-exit-code-0

    可能原因 1.端口冲突检查端口号 2.缺少 web 启动依赖 org.springframework.boot spring-boot-starter-web 我的是第 2 个原因…

    Java 2023年6月5日
    091
  • bsd socket 网络通讯必备工具类

    传输数据的时候都要带上包头,包头有简单的又复杂的,简单的只要能指明数据的长度就够了。 这里我写了一个工具类,可以方便地将整型的数据长度转换为长度为 4 的字节数组。 另一方面,可以…

    Java 2023年5月29日
    082
  • spring boot 集成minIo

    minio的安装与配置 1、什么是 MinIO? MinIO 是一款高性能、分布式的对象存储系统。 对象存储服务OSS(Object Storage Service)是一种海量、安…

    Java 2023年6月5日
    0102
  • 【转】消息中间件MQ的学习境界和路线

    原文:https://www.cnblogs.com/xiexj/p/16095395.html Original: https://www.cnblogs.com/tc310/p…

    Java 2023年5月29日
    094
  • 7、System类

    exit 退出当前程序 System.out.println("ok1"); //1. exit(0) 表示程序退出 //2. 0 表示一个状态,正常的状态 S…

    Java 2023年6月7日
    079
  • Nginx 源码分析– 内存池(pool)的分析 一

    Nginx内存池(pool)的管理的实现主要写在ngx_palloc.c这个文件中,为了明晰的看该文件中的函数之间的关系,我们描绘出以下一张简单的示意图: 图1 Nginx内存池(…

    Java 2023年6月15日
    091
  • 8-Java集合

    一、数组与集合 1.集合与数组存储数据概述 集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.tx…

    Java 2023年6月7日
    052
  • Mybatis延迟加载

    resultMap中的association和collection标签具有延迟加载的功能。 延迟加载的意思是说,在关联查询时,利用延迟加载,先加载主信息。使用关联信息时再去加载关联…

    Java 2023年6月13日
    070
  • 修改Ehcache缓存中取到的值,缓存中的值也被修改了

    修改Ehcache缓存中取到的值,缓存中的值也被修改了 问题现象 我们从Ehcache中取出缓存的对象,之后将对象中的属性进行了修改使用。等再次从缓存中拿到对象后,发现对象的值变成…

    Java 2023年6月7日
    075
  • 11、查看线程状态

    11、线程状态 package com.testthread1; public class TestThread { public static void main(String[…

    Java 2023年6月8日
    084
  • 异步线程里的日志不好追踪?小支一招,轻松搞定!

    众所周知,通过唯一的链路id来追踪一次请求的所有日志,对于排查生产问题来说,会是非常给力的。这个比较容易实现。我之前的博客也有多次提及 ▄︻┻┳═一 https://www.cnb…

    Java 2023年6月15日
    072
  • ELK安装过程中一些注意的地方

    安装流程比较简单,只需要下载安装包,解压安装包,修改配置文件,然后启动组件即可,但还是遇到一些小问题,这里做一下记录。 各个组件版本号需要保持一样,例如都使用 7.1.1版本 es…

    Java 2023年6月5日
    047
  • ThreadLocal 线程变量副本

    强引用:常常 new 出来的对象就是强引用类型,只要强引用存在,垃圾回收器将永远不会回收被引用的对象,哪怕内存不足的时候 软引用:使用 SoftReference 修饰的对象被称为…

    Java 2023年6月5日
    085
  • 2021 CCPC女生赛

    newbie,A了五题铜牌收工比赛时和队友悠哉游哉做题,想着干饭,最后幸好没滚出铜尾。贴一下比赛过的代码 队友A的,判断正反方向序列是否符合要求 /*** * @Author: _…

    Java 2023年6月5日
    087
  • 教你win7系统手动导入注册表获取管理员权限

    想必大家都遇到过win7系统手动导入注册表获取管理员权限的问题吧,大多数朋友还不知道怎么处理固然处理起来也不难,然而还是有一些小伙伴不明白win7系统手动导入注册表获取管理员权限应…

    Java 2023年5月30日
    091
  • Java中的屠龙之术(二):如何方便快捷地生成.class文件

    ​ 在之前的”Java中的屠龙之术:如何修改语法树”中,我们详细介绍了如何使用Javac源码提供的工具类来修改语法树。 而在此基础上,有一款开源工具java…

    Java 2023年5月29日
    098
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球