VMware下的Centos7实践Kvm虚拟化(通俗易懂)
虽然网上已经有很多关于kvm安装的教程了,但我还是看得头晕,有的教程里安装的包很多,有的很少,也没说明那些安装包的作用是干嘛的,用的命令也不一样,也没解释命令的意思是什么。
我重新写一个教程,尽量通俗易懂点,也是给增强我的记忆。
这里提示下,Hyper-v就是一个大坑!本来我是用Hyper-v来学习这个Kvm虚拟化的,我创建的宿主虚拟机可以连外网,宿主机里创建的kvm虚拟机是用桥接网络,但无论怎样设置都连接不了外网,kvm的虚拟机可以ping得通宿主机,宿主机也能ping得通kvm的虚拟机,宿主机可以ping得通外网,但就是kvm的虚拟机ping不通外网,但害我查了一整天,后面无奈用回VMware后,网络全都正常。
而且用Hyper-v,明显我的电脑内存占好多,每次启动,还要等半天的什么合并检查点,还不能连接U盘。
准备工作:一台能上网的Centos7虚拟机,VncViewer(这是在window运行的,到时可以连接虚拟机),XShell(远程ssh工具),XFtp(上传安装包)
VncViewer下载地址:https://www.realvnc.com/en/connect/download/viewer/
XShell、XFtp下载地址:https://www.netsarang.com/zh/free-for-home-school/
主要步骤:
- 开启嵌套虚拟功能(如果你不是用虚拟机的话,这步就不用)
- 安装kvm工具包
- 设置桥接网卡(如果是用Nat的,这步不用)
- 创建第一个kvm虚拟机(安装方式分控制台安装及远程图形化安装)
1、开启嵌套虚拟功能
一开始我是在hyper-v的虚拟机上安装的,hyper-v比vmware麻烦点,得用以下命令操作
#以下命令不区分大小写
Get-VM #获取全部虚拟机
Get-VMProcessor -VMName xxx | fl #查看虚拟机属性,ExposeVirtualizationExtensions属性代表是否开启嵌套虚拟化
Set-VMProcessor -ExposeVirtualizationExtensions $true -VMName xxx #开启嵌套虚拟化,得先把虚拟机关机,不然会出错

后面改用VMware就简单多了,如下图,把红圈里两个复选框勾上就行了,虚拟机得先关机才能修改

打开虚拟机,输入以下命令,查看是否支持虚拟化,如果没上面的操作是肯定没有的
cat /proc/cpuinfo | egrep "vmx|svm"

2、安装kvm工具包
我看网上好多教程安装的包很多,但又没说明各个包是干什么的,原谅我有点强迫症,我必须得了解每个包作用到底是干什么的
但经我测试后,最终发现只需安装三个包,分别是libvirt、qemu-kvm、virt-install(网上写的一些其它的包,如libvirt-python、libvirt-client、qemu-img,其实在安装这3个包时也会顺带安装了)。
我的理解:kvm只是linux一个功能,但linux没有提供任何方便我们去使用它的命令,所以需要安装一些工具,而libvirt、qemu-kvm、virt-install都是工具包,qemu-kvm提供一些qemu开头的命令(这个不安装会提供错误主机不支持任意虚拟化选项),libvirt提供一个服务(libvirtd)和其它virsh管理命令,virt-install提供安装管理虚拟机的命令
yum -y install qemu-kvm libvirt virt-install
因为我的是命令行管理,不在虚拟机上用图形化管理,所以只需这三个包,因为要在虚拟机上图形管理,还得安装个XWindows,我觉得生产环境应该也没人去装个图形管理。
还有一个包bridge-utils,这是用来管理桥接网卡的,这个我装libvirt包时也顺带装了,如果你的没包装,就安装一下
yum -y install bridge-untils
3、设置桥接网卡
经常玩虚拟机的都知道有两种试,一种是Nat,一种是桥接,
Nat就好比宿主机(就是安装kvm虚拟化的主机)是台路由器,虚拟机是连接路由器下面的电脑,跟宿主机同个网段的电脑是访问不了虚拟机的,要访问的话,就得在宿主机上设置端口映射。
而桥接就是把宿主机的物理网卡当做一个交换机,虚拟机直接连接交换机,那就跟宿主机是同一个网段的了,可以被其它电脑访问到,一般做服务虚拟化都是用桥接模式。
先切换到网卡目录,然后把原来的网卡文件复制一份,名称为ifcfg-br0,命令如下
cd /etc/sysconfig/network-scripts
cp ifcfg-ens33 ifcfg-br0 #你的不一定是ifcfg-ens33,我开始用hyper-v时,接口是叫eth0
然后修改ifcfg-br0的配置,如下

修改ifcfg-ens33,主要是新增加一行,如下所示,如果你的本来是静态IP的话,就把静态IP的配置注释掉,只保留在br0就行了

然后重启下网络服务
systemctl restart NetworkManager
systemctl restart network
然后查看下网桥接口
brctl show
这个图是我在后面补的,红圈的是在启动虚拟机后才有的,你如果按博客顺序的话,现在应该是看不到这个红圈的vnet0的,等你把虚拟机启动后,再查看就看到这个vnet0,这表示vnet0也挢接在br0下面

4、创建第一个kvm虚拟机
这个就需要用到之前安装的包virt-install了,我先把命令主要参数列出来
#virt-install参数
--name=xxx #虚拟机唯一名称
--memory=1024[,maxmemory=2048] #虚拟机内存,单位为mb --memory=1024,maxmemory=2048
--vcpus=1[,maxvcpus=4] #虚拟机CPU数量
--cdrom=/xxx/xxx #指定安装源文件
--location=/xxx/xxx #指定安装源文件,跟--cdrom二选一,如果要用控制台安装得用这个,配合--extra-args参数
--disk path=/xx/xxx[,size=10,format=raw] #存储文件及格式
--graphics vnc,port=xxx,listen=xxx #图形化参数,不用图形化用--graphics none --extra-args="console=ttyS0"
--network bridge=br0 #网络连接方式
--os-variant=xxx #对应的系统值,可以osinfo-query os这个查对应值
--virt-type=kvm #虚拟机类型
--noautoconsole #不自动连接,默认是安装时用virt-viewer或者virsh console去连接虚拟机
把管理虚拟机的命令也写一下
virsh list --all #查看所有虚拟机,加all列出关机状态的
virsh console xxx #以控件台连接到指定虚拟机
virsh start xxx #启动虚拟机
virsh shutdown xxx #关闭虚拟机,一般关不了
virsh destroy xxx #强制关闭虚拟机
virsh autostart xxx #设置虚拟机随机启动
virsh undefine xxx #删除虚拟机,只会删除对应的xml,硬盘文件不会删除
virsh autostart xxx #设置虚拟机自动启动
4.1、利用VncViewer远程图形化安装的方式
virt-install主要参数--graphics vnc,port=5901,listen=xxx
原理就是用virt-install命令安装时,在宿主机上开启一个vnc端口5901,然后用VncViewer程序连接宿主机的5901端口,跟平时图形化安装一样了。
推荐用Xshell连接,因为可以方便地复制命令,再装个XFtp上传iso文件到/data/iso目录里
创建所需目录
mkdir -p /data/iso /data/vm
把安装文件上传到/data/iso后,用Xshell连接后,复制以下命令,回车(以下命令的斜杠,只是为了好看分行,不是必要的)
virt-install --name=c7 \
--memory= --vcpus= \
--cdrom=/data/iso/CentOS--x86_64-Minimal-.iso \
--disk path=/data/vm/c7.qcow2,size=,format=qcow2 \
--network bridge=br0 --virt-type=kvm --os-variant=centos7. \
--graphics vnc,listen=0.0.0.0,port= \
--noautoconsole

看到以上提示,就可以用VncViewer来连接了,对了,得先把防火墙服务给关了
systemctl stop firewalld #关闭防火墙服务
systemctl --zone=public --add-ports=/tcp --permanent #或者用这个开放5900端口
在vncViewer上输入ip跟端口号

然后就可以图形化安装了,非常方便。

4.2、用控制台安装的方式
virt-install主要参数--location跟--extra-args配合,不用--cdrom参数,复制以下命令,回车
virt-install \
--name=c7- \
--memory= \
--vcpus= \
--location=/data/iso/CentOS--x86_64-Minimal-.iso \
--disk path=/data/vm/c7-.qcow2,size=,format=qcow2 \
--network bridge=br0 \
--virt-type=kvm \
--os-variant=centos7. \
--graphics none \
--extra-args 'console=ttyS0'

接着就会进入控制台安装界面,如下图所示

可能还有些人没在控制台安装过centos7,那我简单说下

观察这个,这些可以对应我上面的那个图形化安装的图,注意红圈,打X的就是已经设置好了,!的代表还没设置,需要进行配置,输入q退出安装,输入b开始安装,输入r刷新
- 语言设置
- 时区设置
- 安装源
- 软件选择
- 安装位置
- Kdump
- 网络配置
- Root密码
- 用户设置
那我们需要对那些!的配置项进行设置,或者修改原来设置,先修改第1项,语言设置,输入1回车,会显示下图,找到我们的中文,输入68,回车

然后输入1,简体中文,回车

会回到主界面,你会看到第1项已经变了,变成简体中文了

再配置时区,输入2,回车,然后输入1(Set timezone),然后输入2(Asia亚洲),然后输入64(Shanhai上海)

回到主界面,发现第2项已改变了

接着再设置安装位置,输入5,回车,如下图,看到硬盘前面已经是X,说明已经选择了,直接输入c继续就好了

这里不太懂,我默认,输入c继续

还是保持默认LVM,输入c继续

会回到主界面,发现安装位置也改变了,那最后来设置下Root密码,输入8,回车

重复输入两次root密码

回到主界面,发现没有!号了,那输入b就可以进行安装了,你会发现其实控制台安装跟图形化安装也是差不多的。

安装好后启用下网卡,就可以正常连接外网的,我一开始是用Hyper-v,导致虚拟机一直连不了外网,以为哪里配置不对,用回VMware后就一切正常。
VMware下的Centos7实践Kvm虚拟化(通俗易懂)的更多相关文章
- centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课
centos vmware centos6.6 64位 kvm虚拟化安装配置 第四十二节课 上半节课 下半节课 f
- vmware下为CentOS7设置静态IP
vmware下为CentOS7设置静态IP可以分为三个主要步骤: 1. 在windows中设置VMWare创建的虚拟网络 2. 设置VMWare为静态IP 3. 设置CentOS7的网络为静态IP 首 ...
- CentOS7.1 KVM虚拟化之经常使用管理虚拟机命令(3)
一.查看虚拟机列表及状态 [root@kvm01 ~]# virsh list --all Id Name State ---------------------------------------- ...
- 错误处理:vmware下克隆centos7配置静态ip地址网卡问题
vmware下克隆centos7,在配置静态ip地址,重启网卡存在问题,还是mac地址问题 ip addr show 查看下mac地址,配置文件修改下,重启网卡正常了
- centos7.2 kvm虚拟化管理平台WebVirtMgr部署
在服务器上部署kvm虚拟化,虚出多台VM出来,以应对新的测试需求.当KVM宿主机越来越多,需要对宿主机的状态进行调控,决定采用WebVirtMgr作为kvm虚拟化的web管理工具,图形化的WEB,让人 ...
- CentOS7.1 KVM虚拟化之环境准备
备注:实验没有问题,只是暂时还不知道弄这个用来干嘛,不过先留着以后查看吧 一.基础平台 1.一台装有VMware的Windows系统 (可联网) 2.CentOS7.1 64bit 镜像 二.最小化安 ...
- VMware下设置Centos7联网与固定IP连接Xshell
爱折腾的小伙伴应该经常会用Vmware安装一些虚拟机用于学习,但是比如装了Linux,经常操作的时候非常切换窗口的时候非常麻烦,所以很多人都会选择用Xshell来连接本地的Linux虚拟机,但是用Xs ...
- VMware下安装centos7及网络配置
之前遇到过用虚拟机安装上centos7上不了网,昨天解决了,但是手抽删错了,把centos7误删了,今天就一起安装下. 首先打开VMware,我这里用的版本是VMware12,然后我们新建虚拟机 下一 ...
- VMware下的Centos7联网并设置固定IP
安装CentOS7之后总得联网呀,而且不能一直连服务器,我们需要一个其他工具连它,所以一个固定IP也很重要了. 工具/原料 CentOS7 VMware 方法/步骤 首先设置vmware能 ...
随机推荐
- linuxC动态内存泄漏追踪方法
C里面没有垃圾回收机制,有时候你申请了动态内存却忘记释放,这就尴尬了(你的程序扮演了强盗角色,有借有还才是好孩子).当你想找出内存泄露的地方时,有的投入海量的代码中,头痛不已.还好GNU C库提供了些 ...
- jquery获取选中的值和设置单选扭选中
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- vs2017 js cordova + dotnet core 开发app
原文:vs2017 js cordova + dotnet core 开发app 1.记得在index.html加入 <meta http-equiv="Content-Securit ...
- UWP开发-在UWP中使用sqlite
原文:UWP开发-在UWP中使用sqlite sqlite是一种轻量级的数据库,对于一些资源紧张又需要数据库的开发非常好用. SQLite 是一个开源的无服务器嵌入式数据库. 这些年来,它已作为面向存 ...
- Android零基础入门第81节:Activity数据传递
在Android开发中,经常要在Activity之间传递数据.前面也学习了Activity和Intent相关基础,接下来一起来学习Activity的数据传递. 一.简介 通过前面的学习知道,Inten ...
- QT 那些事
一直做的是windows开发,有2个小项目想做到手机.看来看去,选择了QT.本文介绍自己的学习的一些心得,希望对你有帮助.1.选择QT2.安卓的一些事3.QML调用C++4.资源集成(比较有用,网上资 ...
- PC-lint 简明教程(C/C++静态代码检查工具)
前言 PC-lint是一款小而强大的C/C++静态代码检查工具,它可以检查未初始化变量,数组越界,空指针等编译器很难发现的潜在错误.在很多专业的软件公司如Microsoft,PC-Lint检查无错误无 ...
- CMake编译Widget UI Qt程序
自从CMake被引入到KDE项目的编译系统中后,CMake的使用者日益增多,Qt也不例外,除了使用QMAKE编译Qt程序外,也可以使用CMake来编译Qt程序,并且CMake在使用上更灵活,特别是大型 ...
- Windows下搭建go语言开发环境 以及 开发IDE (附下载链接)
1.下载 并且 安装 Go安装包 =========================================================== 在CSDN上传了我的版本,供大家下载: = ...
- 剖析Unreal Engine超真实人类的渲染技术Part 1 - 概述和皮肤渲染
一.概述 1.1 数字人类的概要 数字人类(Digital Human)是利用计算机模拟真实人类的一种综合性的渲染技术.也被称为虚拟人类.超真实人类.照片级人类. 它是一种技术和艺术相结合的综合性模拟 ...