加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 系统 > 正文

程序猿的知识社区

发布时间:2023-10-26 12:37:14 所属栏目:系统 来源:网络
导读: 什么是KVM
KVM是英文Kernel-based Virtual Machine的简称,是基于硬件辅助的开源虚拟化解决方法,其优点如下:
KVM架构
基本上又两大方便组成云系统架构KVM,KVM模块以及QENMU-KVM
模块:k

什么是KVM

KVM是英文Kernel-based Virtual Machine的简称,是基于硬件辅助的开源虚拟化解决方法,其优点如下:

KVM架构

基本上又两大方便组成云系统架构KVM,KVM模块以及QENMU-KVM

模块:kvm.ko,kvm_intel.ko, kvm_amd.ko

qemu-kvm:通过修改qemu代码而得出的专门为管理和创建虚拟机的工具

/dev/kvm:linux系统下kvm提供驱动接口

kvm架构_云桌面系统架构示意图_云系统架构KVM

硬件支持

我这里用的是虚拟机,为了使cpu支持虚拟化勾选了"虚拟化Intel VT-x/EPT或AMD-V/RVI(V)"

生产环境中我们使用的是真实物理服务器,一般是默认开启的,如果没有开启,则需要在BIOS中开启

kvm架构_云系统架构KVM_云桌面系统架构示意图

系统环境

CentOS 7.2.1511

生产环境当中,一般配置虚拟机和宿主机的网络为桥接模式

我宿主机的物理网卡名称为eno33554984(VMnet1),可以看到我们上面还有一个NAT,那是我们专门用来上网的,真实服务器一张网卡就够了

我们需要创建一个共享的桥接网络设备

# vim /etc/sysconfig/network-scripts/ifcfg-eno33554984
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=eno33554984
DEVICE=eno33554984
ONBOOT=yes
BRIDGE=br0
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.88.1
PREFIX=24
GATEWAY=192.168.88.254
DNS1=114.114.114.114

云桌面系统架构示意图_kvm架构_云系统架构KVM

SSH连接192.168.88.1进入系统

检查cpu是否支持虚拟机化,Intel支持的会带有vmx标志,AMD支持会带有svm标志

# grep -E '(vmx|svm)' /proc/cpuinfo

云系统架构KVM_云桌面系统架构示意图_kvm架构

安装组件

# yum install -y qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install

云桌面系统架构示意图_云系统架构KVM_kvm架构

创建一个10G的硬盘(给虚拟机用)

准备一个系统镜像

创建虚拟机

# mkdir /data/images
# virt-install \         #命令(详细用法  virt-install --help)
--name CentOS7.1_88.100 \           #虚拟机名字
--ram 1024 \ 				   #分配内存大小
--cdrom=/data/CentOS-7-x86_64-Minimal-1511.iso \     #安装镜像
--disk path=/data/images/CentOS7.1_88.100.img,size=8 \     #8G的存储文件,虚拟机的硬盘
--network bridge=br0 \                                     #桥接到br0
--graphics vnc,listen=0.0.0.0 --noautoconsole     #开启vnc

云系统架构KVM_云桌面系统架构示意图_kvm架构

查看正在运行的虚拟机

kvm架构_云桌面系统架构示意图_云系统架构KVM

我们可以发现开启了一个5900端口,我们可以使用VNC来连接这个端口,远程连接到虚拟机

云系统架构KVM_云桌面系统架构示意图_kvm架构

云系统架构KVM_云桌面系统架构示意图_kvm架构

我们可以看到已经进入到安装界面

按正常步骤安装,虚拟机只要分一个分区就可以了(阿里云也没有分交换分区,哈哈)

安装完成后重启

云桌面系统架构示意图_云系统架构KVM_kvm架构

然而虚拟机并没有重启,只是关闭了

我们回到宿主机使用virsh list并没有看到在运行的虚拟机

云系统架构KVM_kvm架构_云桌面系统架构示意图

这里我们可以使用virsh --list all查看所有的虚拟机,可以发现,它处于一个关闭状态

云桌面系统架构示意图_云系统架构KVM_kvm架构

开启虚拟机

# virsh start CentOS7.1_88.100                    
# virsh shutdown CentOS7.1_88.100     这是关闭的命令

这样我们使用VNC就可以连接上去了,查看虚拟机网络

云桌面系统架构示意图_云系统架构KVM_kvm架构

配置eth0的ip为192.168.88.100

kvm架构_云系统架构KVM_云桌面系统架构示意图

重启虚拟机的网络服务

然后我们就可以使用ssh远程192.168.88.100了

当我创建第二台虚拟机,它的VNC连接端口是5901

kvm架构_云桌面系统架构示意图_云系统架构KVM

虚拟主机管理

virsh undefine [主机名字]

我们创建虚拟机的时候可以配置好cpu、 内存、硬盘的配置(安装前规划是最好的)

然后,当我们创建好,配置已经无法满足需求了,我们可以编辑xml修改

virsh edit [主机名字], 修改完配置需要重启虚拟机才能生效

---修改cpu---
需求:最大支持4个cpu,当前为1个
1
改为
4
重启动虚拟主机
virsh shutdown [ 主机名字]
virsh start [主机名字]
这样我们就可以支持cpu的热添加(centos7才支持),不支持热减少
当前我们的cpu只有1个,现在我们改为2个
virsh setvcpus [主机名字] 2 --live
然后我们可以在虚拟机中查看cpu有没有多出1 个,如果没有,我们需要把它激活生效
# cat /sys/devices/system/cpu/cpu0/online   #1表示死激活状态
1
# cat /sys/devices/system/cpu/cpu0/online
1
---修改内存--
需求:最大支持3G内存,当前为1G内存
1048576
1048576
改为
3048576
1048576
重启虚拟机
内存支持热添加和减少
查看当前内存
virsh qemu-monitor-command [主机名字] --hmp --cmd info balloon
balloon: actual=1024
改为800M
virsh qemu-monitor-command [主机名字] --hmp --cmd balloon 800
改大为2G
virsh qemu-monitor-command [主机名字] --hmp --cmd balloon 2048

使用存储池

存储池是一个本地目录、本地存储设备、网络文件系统或块级联网存储,可以使用libvirt管理它们,并且可在其中创建和存储一个或多个虚拟机镜像。本地存储很简单,但可能不灵活且不支持企业虚拟化的最关键需求:实时迁移

默认情况下,基于libvirt的命令使用虚拟化主机上的目录/va/lib/libvirt/images作为初始文件系统目录存储池

使用virsh pool-create-as命令轻松创建一个新的存储池(我预先在88.2配置了nfs服务)

kvm架构_云系统架构KVM_云桌面系统架构示意图

第一个参数 (NFS-POOL) 指定新存储池的名称
第二个参数指定所创建的存储池类型
--source-host 选项的参数指定了通过 NFS 导出存储池目录的主机
--source-path 选项的参数指定该主机上导出的目录的名称
--target 选项的参数指定了访问存储池时所使用的本地挂载点

创建新存储池后,它将virsh pool-list命令的输出中列出

云桌面系统架构示意图_kvm架构_云系统架构KVM

输出中,注意新存储池标记不会自动启动,表明系统重新启动后它不会自动启动,而且它没有持久化,表明在系统重新启动后绝对不会定义它。存储池仅在它们受其XML描述支持时才能持久化,该XML描述位于目录/etc/libvirt/storage中。XML存储池描述文件名与它们相关联的存储池名称相同,但是扩展名是.xml.

要为手动定义的存储池创建xml描述文件,可以使用virsh pool-dumpxml命令指定一个池名称,将其XML描述转储为一个最终参数。此命令写入到标准输出,所以需要将它的输出重定向到合适的文件中。例如,以下命令将之前创建的NFS-POOL存储池创建正确的XML描述文件

即使将存储池持久化后,该池也不会标记为在重新启动虚拟化主机时自动启动。可使用virsh pool-autostart命令后跟一个存储池名称来将存储池设置为自动启动

云系统架构KVM_云桌面系统架构示意图_kvm架构

kvm架构_云系统架构KVM_云桌面系统架构示意图

将存储池标记为自动启动,意味着存储池将在虚拟化主机重新启动时可用。在技术上,它意味着/etc/libvirt/storage/autostart目录包含该存储池xml描述的一个符号链接

创建存储池后,可在该池内创建一个或多个虚拟机

kvm架构_云系统架构KVM_云桌面系统架构示意图

每次都报这种错误

云桌面系统架构示意图_云系统架构KVM_kvm架构

后来改了下nfs的配置

然后成功创建了虚拟机

云系统架构KVM_kvm架构_云桌面系统架构示意图

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章