KVM搭建部署实验【保姆级教程】

本文提供了一步一步的指南来搭建KVM虚拟机环境,包括前期的CentOS镜像和相关软件准备,VMware的安装,宿主机的配置,通过Xshell连接,KVM的环境检查、安装与配置,以及使用virt-install创建虚拟机的过程。同时强调了磁盘容量、内存和网络设置的重要性,并给出了错误避免建议。
摘要由CSDN通过智能技术生成

目录

前言

一、前期准备

二、搭建过程

1.安装VMware

2.搭建宿主机

1.推荐安装即可

2.安装客户机操作系统

3.命名虚拟机并添加位置

4.指定磁盘容量

5.自定义硬件

6.网络模式

7.配置展示

8 .宿主机系统安装

3.借助第三方软件(Xshell)连接宿主机

1.查看IP

2.Xshell连接宿主机

 3.修改网卡配置文件

4.KVM部署实验

1.检查环境

2.安装部署KVM

 3.关闭firewalld与selinux防火墙

 4.启动KVM,加载KVM模块,开启libvirtd进程

5.创建KVM虚拟机

6.创建存放目录,上传镜像

7.创建kvm所用的存储

8. 安装并使用virt-install工具创建KVM虚拟机

9.查看KVM虚拟机状态,进行系统安装

5.VNC连接kvm虚拟机

1.打开VNC,左上角New connection

 2.安装界面

3.安装好后重启

 4.查看IP,网络是否ping通

 至此,KVM搭建全部部署完成!



前言

  • KVM全称是“基于内核的虚拟机(Kernel-based Virual Machoine)”
  • 它是Linux的一个内核模块,该内核模块使得Linux变成了一个Hypervisor(虚拟机监视程序)
  • 即:虚拟机里建虚拟机,俗称“俄罗斯套娃”

一、前期准备

SoftLink
CentOS-7-x86_64-Minimal-       1810.iso链接:https://pan.baidu.com/s/1fl0ZfPNFLGVealEpHALx2g?pwd=5210 
提取码:5210
VNC链接:https://pan.baidu.com/s/1ufhicPb4CGyefBShKZMg3g?pwd=5210 
提取码:5210
Xshell  (personal)链接:https://pan.baidu.com/s/1fQ_aNYO1DLwYoghuhEGQRQ?pwd=5210 
提取码:5210
Xftp  (personal)链接:https://pan.baidu.com/s/14I_wxkJv-_L-iswLaAYWlA?pwd=5210 
提取码:5210
VMware 15.5链接:https://pan.baidu.com/s/1DEwf4DN7JdE2Stj8OrWQiw?pwd=5210 
提取码:5210

二、搭建过程

1.安装VMware


此处,漏,大漏特漏!!!

2.搭建宿主机


1.推荐安装即可

2.安装客户机操作系统

​​

3.命名虚拟机并添加位置

4.指定磁盘容量

 

  •  此处是经典的错误,标准的零分!!
  • 最大磁盘大小应在30G以上。
  • 因为KVM虚拟化,是要在宿主机里面再建一个虚拟机,到时候要分配一部分磁盘给虚拟机来运行,如果宿主机预留的磁盘存储太小,后期会导致宿主机里的虚拟机内存不足而报错,所以前期搭建要注意细节,后期就很顺了,什么?有多顺?简直顺的一塌糊涂!!!

5.自定义硬件

  •  此处注意的是,内存(最少2G)和处理器数量以及内核(大于2核)可以相对的设高一些。
  • 一定要勾选 硬件辅助虚拟化!!!!

6.网络模式

  •  此处以NAT模式为例(桥接类似)。

7.配置展示

 

8 .宿主机系统安装

  •  安装位置默认即可
  • KDUMP不用管
  • 网络和主机名点开,    打开以太网连接
  • SECURITY POLICY 不用管

  • 创建用户和管理员
  • 等待装完配置文件重启即可! 

3.借助第三方软件(Xshell)连接宿主机


1.查看IP

  •  看到没,ens33下有IP,记住它,这是NAT模式下,虚拟网卡给宿主机动态分配的IP,我们一会还要对其进行修改。

2.Xshell连接宿主机

 3.修改网卡配置文件

[root@localhost demo]#vi /etc/sysconfig/network-scripts/ifcfg-ens33

[root@localhost demo]#systemctl restart network                 //重启网卡服务
[root@localhost demo]#ping baidu.com      //能ping通,就证明nat静态网络设置好了

4.KVM部署实验


1.检查环境

  • 确认本地设备支持虚拟化检查CPU信息 (是否支持Intel VT或AMD SVM)
[root@localhost ~]#cat /proc/cpuinfo | grep vmx

  •  确认可用内存
[root@localhost ~]#free -h

  • 确认磁盘空间 

[root@localhost ~]#df -h

2.安装部署KVM

[root@localhost ~]#cd /etc/yum.repos.d            //到指定目录

[root@localhost yum.repos.d]#yum install libvirt libvirt-python qemu-kvm qemu-kvm-tools qemu-img -y
属性作用
gemu-kvmkvm核心套件
libvirtd提供虚拟机与宿主相互通信的机制
libvirt-python允许使用 libvirt API
qemu-imgVMs 磁盘管理
qemu-kvm-toolskvm虚拟机与宿主机的增强组件

 3.关闭firewalld与selinux防火墙

  •  selinux防火墙
[root@localhost ~]#vi /etc/selinux/config    //修改防火墙状态

[root@localhost ~]#setenforce 0   //临时关闭防火墙
  • Firewalld防火墙
[root@localhost ~]# systemctl disable firewalld   //永久关闭

[root@localhost ~]# systemctl stop firewalld      //关闭防火墙 重启后打开

[root@localhost ~]# systemctl status firewalld   //查看防火墙状态

[root@localhost ~]# reboot

 4.启动KVM,加载KVM模块,开启libvirtd进程

[root@localhost yum.repos.d]# modprobe kvm

[root@localhost yum.repos.d]# lsmod | grep kvm

[root@localhost yum.repos.d]# systemctl enable libvirtd     //开机自启

[root@localhost yum.repos.d]# systemctl start libvirtd

[root@localhost yum.repos.d]# systemctl status libvirtd

[root@localhost ~]# virsh list     //验证kvm是否安装成功

5.创建KVM虚拟机

        1.创建桥接网卡br0,用来和宿主机进行通讯


[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# ls

        2.网卡复制并修改br0

[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0    

[root@localhost network-scripts]# vi ifcfg-br0

         3.修改ens33网卡配置信息

[root@localhost network-scripts]# vi ifcfg-ens33

[root@localhost network-scripts]# systemctl restart network

[root@localhost network-scripts]# ip a
  • 此时会多出来之前一块br0的网卡,并且原先ens33网卡上的IP地址,会出现在br0上

6.创建存放目录,上传镜像

[root@localhost network-scripts]# mkdir  iso

[root@localhost network-scripts]#chmod 777 iso    //提权,因为是etc下的目录

[root@localhost network-scripts]#cd iso   //进入iso文件夹后,使用xftp传输文件

 

[root@localhost iso]# ls   //查看上传完毕的镜像

7.创建kvm所用的存储

[root@localhost iso]# qemu-img create -f qcow2 KVM.qcow2 20G
​
[root@localhost  iso]# qemu-img info KVM.qcow2    //查看虚拟盘信息

8. 安装并使用virt-install工具创建KVM虚拟机

[root@localhost iso]# yum install virt-install -y

安装过程此处省

[root@localhost  iso]# vi kvm.sh
virt-install --name kvm \
--ram=1024 --arch=x86_64 --vcpus=1 \
--check-cpu --os-type=linux \
--os-variant='rhel7' -c /etc/sysconfig/network-scripts/iso/CentOS-7-x86_64-Minimal-1810.iso \
--disk path=/etc/sysconfig/network-scripts/iso/KVM.qcow2,device=disk,bus=virtio,size=20,format=qcow2 \
--bridge=br0 --noautoconsole --vnc --vncport=5901 --vnclisten=0.0.0.0

[root@localhost iso]# bash kvm.sh 运行脚本
​
  • 此处要注意的是,--ram=1024代表一个G 的运行内存
  • 因为我前面宿主机存储内存给了20个G的存储内存,如果此处=2048,脚本会报错,所以大家一定要注意!!
  • 还有一个点就是,需要路径的地方,一定要填写绝对路径,相对路径会报错“找不到对应的文件或者目录”
  • 脚本文件一定不能出大错,不然,就,,,,就不顺了。qwq
脚本配置信息
属性作用
--name虚拟机名字
--ram分配内存大小MB
--archxx架构
--vcpu分配虚拟机vcpu颗数
--os-variant操作系统版本
-c挂载镜像的位置

--disk path 

 (device,bus,size,format)

虚拟机所用磁盘或镜像文件

(驱动类型,总线类型,大小G,磁盘格式)

--birdge指定网路,采用网桥
-- noautoconsole不自动启动控制台
--vnc使用vnc远程桌面协议
--vncport指定vnc协议端口
--vnclisten监听的地址(0.0.0.0  任意地址)


9.查看KVM虚拟机状态,进行系统安装

[root@localhost iso]# virsh list --all    //查看所有的kvm虚拟机列表

  • running代表正在运行中
  • virsh list  只能看到运行中的虚拟机

5.VNC连接kvm虚拟机

1.打开VNC,左上角New connection

 2.安装界面

3.安装好后重启

 4.查看IP,网络是否ping通

 至此,KVM搭建全部部署完成!

  • 9
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
第十一章 指针 11.1 理解指针 在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元。为了正确访问内存单元,必须为每个内存单元编号,根据一个内存的编号即可准确找到该内存单元,内存单元的编号也叫地址,通常把这个地址称为指针(pointer)。一个指针变量的值就是某个内存单元的地址(或称某个内存单元的指针)。 在一个指针变量中存放一个数组的首地址,因为数组是连续存放的,通过访问指针变量取得数组的首地址,也就找到了该数组。在C语言中,一种数据类型或数据结构往往占有一组连续的内存单元,用指针描述一个数据结构的首地址,该指针指向这个数据结构。 11.2 指向变量的指针 #include int main() { int i=1,*pi=&i; printf("%d",sizeof(pi)); return 0; } 变量i的三个属性: (1)值:为1,通过变量名访问,如i+5。 (2)地址:占用内存空间的位置,通过&i访问。 (3)类型:为int,决定该变量能参加的运算,决定了其占用空间的大小(从起始地址开始占用的连续字节数),占用空间的大小用sizeof运算符计算,sizeof(i)或sizeof(int)。 变量的指针就是变量的地址,存放变量地址的变量是指针变量。C语言中允许用一个变量存放指针,称为指针变量。 11.2.1 指针变量定义 指针变量定义的一般形式: 类型说明符 *变量名; 如: int *pi; 对指针变量的定义包括3个内容: (1)指针类型说明:*表示这是一个指针变量。 (2)指针变量名:pi为指针变量名。 (3)指针指向的变量的数据类型int指针变量所指向的变量的数据类型,说明pi只能存储整型变量的地址。 如: float *pf; /*pf为指向浮点变量的指针变量*/ char *pc; /*pc为指向字符变量的指针变量*/ 11.2.2 指针变量引用 未经赋值的指针变量不能使用,否则将造成系统紊乱,甚至死机。指针变量只能赋予地址。C语言中,变量的地址是由编译系统分配的。 与指针相关的两个运算符: (1)&:取地址运算符 一般形式: &变量名 表示取一个内存变量的地址。 (2)*:指针运算符(或称“间接访问”运算符) 一般形式: *指针变量名 通过指针变间接访问指针变量所指向变量的数据。 #include int main() { int i=1,*pi=&i; printf("%d",sizeof(pi)); return 0; } 对指针变量的应用的说明: a.对*要区别类型说明符与间接访问符。 b.不能用一个数给指针变量赋值,但是指针可用0赋值,代表空指针,即不指向任何数据。 c.给指针变量赋值时,指针变量前不能加*。 如:int i; int *pi; *pi=&i; /*写法错误,应该为pi=&i*/ pi赋值&i后可用*pi间接访问i d.指针变量为指向具体有效地址时,直接访问会有危险。 如: int *pi; /*指针变量pi为赋值,不知道指向哪里*/ *pi=200; /*向pi所指向的地址空间赋值200*/ C语言对未赋值的指针变量的值是不确定的。上面语句中使pi所指向的空间赋值200,这时,当pi指向有用数据空间时,该数据将被200覆盖,导致数据破坏;当指针pi指向系统空间时,系统遭到破坏,严重时将导致系统瘫痪。 指针变量定义时,编译系统就会给定一个值,如何判定一个指针变量是否指向有用数据空间,建议定义指针时初始化为0,间接访问前让它指向有效空间,这样间接访问时可以判断指针是否指向有效地址。如: int *pi=0; · · · if(pi!=0) *pi=200; 省略号部分,若未使pi指向有效空间,对*pi的赋值不会进行。 e.指针变量的值可以改变,像普通变量一样被重新赋值,就是说可以改变指针变量的指向。 f.指针变量只能用同类型的地址赋值。 g.同类型指针变量间可以相互赋值。 例:交换指针变量的值。 #include int main() { int i1=3,i2=4; int *pi1=&i1;,*pi2=&i2;,*pi3=0; printf("*pi1=%d\t*pi2=%d\n",*pi1,*pi2); pi3=pi1; pi1=pi2; pi2=pi3; printf("*pi1=%d\t*pi2=%d\n",*pi1,*pi2); return 0; } 运行结果: *pi1=3 *pi2=4 *pi1=4 *pi2=3 交换了指针变量的值,导致指针变量交换了指向。 例:交换指针变量所指向的数据的值。 #include int main() { int i1=3,i2=4,temp=0,*pi1=&i1;,*pi2=&i2; printf("i1=%d\ti2=%d\n",i1,i2); temp=*pi1; *pi1=*pi2; *pi2=temp; printf("i1=%d\ti2=%d\n",i1,i2); } 运行结果: i1=3 i2=4 i1=4 i2=3 11.3 数组与指针 一个数组包含若干元素,每个数组元素都在内存中占用内存单元。数组的指针是指数组的起始地址,数组元素的指针是指数组元素的地址。 11.3.1 一维数组与指针 一个数组是由连续的一块内存单元组成的,数组名就是这块连续内存单元的首地址(常量)。一个数组元素的首地址也是指它所占有的内存单元的首地址。 #include int main() { int arr[5]; printf("%d",arr==&arr;[0]); return 0; } 运行结果: 1 arr与&arr;[0]指向同一内存单元,都是数组的首地址,也是0号元素的首地址。arr是常量地址,&arr;[0]是整型变量arr[0]的地址。 1.指针相关的运算符 (1)取地址运算符& (2)间接访问运算符* (3)赋值运算符=,给指针变量赋值。 (4)算术运算符+、-、++、-- p1+i:结果为p1地址值位置跳过(i*p1所指类型字节数)个字节后的地址。 p1-i:结果为p1地址值位置跳回(i*p1所指类型字节数)个字节后的地址。 p2-p1:结果为相差字节数÷指针变量所指类型字节数。 p2++:结果为p1地址值位置跳过p1所指类型字节数后的地址。 (5)关系运算,支持六种关系运算符,用来比较地址的大小。 例: int arr[5]; int *p1,*p2; p1=&arr;[0]; p2=&arr;[4]; ①*p1++:*和++同优先级,结合方向从右到左,所以*p1++等价*(p1++),先执行*p1,然后p1加1。表达式的值为arr[0],p1的值为&arr;[1]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无人知我春风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值