Linux:KVM虚拟化
本章操作基于centos7系统
简介
KVM是Kernel Virtual Machine的简写,目前Redhat只支持在64位的Rhel5.4以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,在2008年被redhat公司收购并获得了一项hypervisor技术,不过redhat的KVM被认为将成为未来linux hypervisor的主流,准确的来说KVM不仅仅是linux内核的一个模块。管理和创建完成的KVM虚拟机,需要更多的辅助工具。接下来部署KVM虚拟化环境。
公司部分的linux服务器利用率不是很高,为了充分利用这些linux服务器,可以部署KVM ,在物理机上运行多个业务系统,比如在运行Nginx服务器上部署KVM,然后在虚拟机上运行Tomcat
需要环境&配置
1) 需要图形化桌面环境
2)内存:2048M或以上
3)处理器:核心数 2或以上
4)如果是虚拟机需要开启虚拟化引擎:首选模式:intel VT-x 或 AMD-V
5)硬盘:100G以上
基础环境准备
打开虚拟机的虚拟化

勾选上虚拟化lnetl tv-x……即可
如果你没有桌面环境可以使用两个命令,如果有,跳过下面两条命令即可
yum -y groupinstall gnome-desktop
ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target
安装KVM
yum -y install qemu-kvm.x86_64 qemu-kvm-tools.x86_64 qemu-img.x86_64 python-virtinst.noarch bridge-utils.x86_64 libvirt virt-manager
qemu-kvm.x86_64 //kvm模块
qemu-kvm-tools.x86_64 //kvm调试工具,可不安装
python-virtinst.noarch //python组件,记录创建vm时的xml文件
qemu-img.x86_64 //qemu组件,创建磁盘,启动虚拟机等
bridge-utils.x86_64 //网络支持工具
libvirt //虚拟机管理工具
virt-manager //图形界面管理虚拟机
安装完以后 reboot 重启服务器
重启以后查看是否开启了虚拟化
如果你是intel的cpu就使用
cat /proc/cpuinfo | grep vmx

开启成功
如果你是AMD的cpu那么就用
cat /proc/cpuinfo | grep smv
检查KVM模块是否安装
lsmod | grep kvm

KVM网络配置
宿主服务器安装了KVM,首先要设定网络,在libvirt中运行KVM网络有两种方法NAT和Bridge,默认是NAT。
nat地址转换就是虚拟机用物理机的网卡上网
桥接就是把虚拟机和真机放到一个局域网
下面我这里是桥接模式的配置
我这里的主机网卡名为ens33
vim /etc/sysconfig/network-scripts/ifcfg-ens33写入DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
BRIDGE="br0"
桥接到br0
vim /etc/sysconfig/network-scripts/ifcfg-br0写入DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.254.111
NETMASK=255.255.255.0
systemctl restart network

现在就可以了
KVM图形化创建虚拟机
先去/下创建两个文件一个用于放iso镜像,一个用于放虚拟机
mkdir -p /kvm/iso /kvm/xuniji
iso用于放镜像,xuniji用于放虚拟机文件
让后我们把要创建虚拟机的镜像放如/kvm/iso中,我这里还用centos镜像演示

iso镜像放进去以后去开启软件

图形化找到kvm软件
或者在命令行中使用命令行打开
virt-manager
现在我们要在软件里把刚刚创建好的文件选择上

双击打开

点击储存,再点左下角➕
名字随便写,我这个先加虚拟机存放目录,所以我这个名字就叫虚拟机了,让后前进

点击浏览,让后找到/kvm/xuniji
点击打开

现在虚拟机存放目录就好了,再去添加iso文件,和这个一样



这样两个文件就添加好了,现在,放虚拟机,选择镜像就去这两个文件夹就行了,如果你的服务器硬件资源足够大的化,可以创建大量的虚拟机
现在就可以去创建虚拟机了



这里选择你要的虚拟机配置,配置完了再前进

先去配置虚拟机硬盘大小,让后点管理

调整配置


在结束前可以再去配置一下硬件啥的,如果没有要配置的了,那么直接就开始安装,就直接进入系统安装了
安装centos等系统我这里就不演式了,因为今天主要讲的是kvm
到这里我们的虚拟机就可以正常安装上了,除了Linux,Windows,类unix等等基本都是这样安装,也很向Windows上的VMware等软件
克隆,快照等操作
当我们需要进行克隆时需要让虚拟机为关闭的状态
或者
这样就克隆好了
点击快照
创建快照
恢复快照
网络接口配置
命令行操作kvm
virsh -h
查看帮助
virsh list --all
查看当前虚拟机状态的列表

两个虚拟机都为运行状态
virsh shutdown 虚拟机名称
关闭指定的虚拟机
virsh shutdown centos7

virsh start 虚拟机名称
开启虚拟机
virsh start centos7

virsh destroy 虚拟机名称
关闭虚拟机(和shutdown 一个效果)
virsh create /etc/libvirt/qemu/虚拟机配置文件.xml
通过配置文件开启虚拟机
virsh create /etc/libvirt/qemu/centos7.xml

virsh suspend 虚拟机名称
挂起虚拟机
virsh resume 虚拟机名称
恢复挂起虚拟机
virsh autostart 虚拟机名称
和宿主机一起开启,也就是当真机开机的时候虚拟机也会一起打开
备份虚拟机文件
virsh dumpxml 虚拟机名称 > /etc/libvirt/qemu/虚拟机名称.xml
导出虚拟机配置
virsh shutdown 虚拟机名称
关闭虚拟机
virsh undefine 虚拟机名称
删除虚拟机
cd /etc/libvirt/qemu
前往虚拟机主配置文件
mv 刚刚备份的虚拟机文件.xml 一开始的虚拟机文件名.xml
恢复备份文件
virsh define 虚拟机文件名.xml
通过备份的配置文件重新定义虚拟机
virsh list --all
虚拟机快照
kvm虚拟机使用镜像功能,磁盘格式必须为qcow2.
【创建快照】
virsh snapshot-create 虚拟机名
【查看快照版本信息】
virsh snapshot-current 虚拟机名
【查看快照信息】
virsh snapshot-list 虚拟机名
【恢复快照到指定】
virsh snapshot-revert 虚拟机名 快照编号
如
virsh snapshot-revert test01 1282572463
virsh snapshot-current 虚拟机名
【删除快照】
virsh snapshot-delete 虚拟机名 快照编号
相关文章:
Linux:KVM虚拟化
本章操作基于centos7系统 简介 KVM是Kernel Virtual Machine的简写,目前Redhat只支持在64位的Rhel5.4以上的系统运行KVM,同时硬件需要支持VT技术。KVM的前身是QEMU,在2008年被redhat公司收购并获得了一项hypervisor技术,不过redh…...
HTML标签,列表,表格相关
HTML标签的分类 HTML标签可以分为以下几类: 标题标签:用于定义网页的标题,分为h1、h2、h3、h4、h5和h6。 段落标签:用于定义文本的段落,常用的有p标签。 链接标签:用于定义链接,常用的有a标签…...
【音视频】Linux | FFmpeg源码搭建
Linux | FFmpeg源码搭建 时间:2023-06-21 文章目录 `Linux` | `FFmpeg`源码搭建@[toc]1.参考2.获取源码2-1.建立工作目录2-2.获取`AAC`2-3.获取`X264`2-4.获取`X265`2-5.获取`FFmpeg`3.编译/安装3-1.编译`AAC`3-1-1.解压源码3-1-2.编译3-1-3.安装3-2.编译`X264`3-2-1.解压源码…...
Ansible中常用模块
1.ansible实现管理的方式 Ad-Hoc //利用ansible命令直接完成管理,主要用于临时命令使用场景 playbook //ansible脚本,主要用于大型项目场景,需要前期的规划 2.Ad-Hoc执行方式中如何获得帮助 ansible-doc …...
2000-2021年上市公司产融结合度量数据
2000-2021年上市公司产融结合度量数据 1、时间:2000-2021年 2、指标:股票代码、年份、是否持有银行股份、持有银行股份比例、是否持有其他金融机构股份、产融结合 3、来源:上市公司年报 4、范围:上市公司 5、样本量ÿ…...
2023最新最全Web自动化测试面试题
1、Selenium 中 hidden 或者是 display none 的元素是否可以定位到? 不可以。可以写 JavaScript 将标签中的 hidden 先改为 0,再进行定位元素。 2、Selenium 中如何保证操作元素的成功率?也就是说如何保证我点击的元素一 定是可以点击的&am…...
List的add(int index,E element)陷阱,不得不防
项目场景: 项目中有两个List列表,一个是List1用来存储一个标识,后续会根据这个标识去重。 一个List2是用来返回对象的,其中对象里也有一个属性List3。现需要将重复的标识数据追加到List3 我想到的两个方案: 尽量不动…...
如何使用drawio画流程图以及导入导出
画一个基本的流程图 你可以在线使用drawio, 或者drawon创建很多不同类型的图表。 如何使用编辑器,让我们以一个最基本的流程图开始。 流程图,就是让你可视化的描述一个过程或者系统。 图形和很少部分的文字表达就可以让读者很快的理解他们需要什么。 创…...
腾讯云轻量服务器“镜像类型”以及“镜像”选择方法
腾讯云轻量应用服务器镜像类型分为应用镜像、系统镜像、Docker基础镜像、自定义镜像和共享镜像,腾讯云百科txybk.com来详细说下不同镜像类型说明和详细介绍: 轻量应用服务器镜像类型说明 腾讯云轻量应用服务器 应用镜像:独有的应用镜像除了包…...
docker-compose 简单部署Flask + Redis + Nginx环境搭建网站
主博客目录:《从零开始学习搭建量化平台笔记》 主项目计划需要搭建一个 Flask Redis Nginx环境 来制作一个可视化的网站,为了避免搭完就忘,因此就有了这个博客。 任务:搭建一个内网通信且只有由Nginx代理发放的网页端显示环境。…...
debian和ubuntu
Debian和Ubuntu是两种流行的Linux发行版,它们之间有密切的关系,但也存在一些重要的区别。 关系: Ubuntu是基于Debian创建的。这意味着Ubuntu使用与Debian相同的APT包管理系统,并共享来自Debian库中的大量包和库。 区别…...
恒驰服务 | 华为云数据使能专家服务offering之数仓建设
恒驰大数据服务主要针对客户在进行智能数据迁移的过程中,存在业务停机、数据丢失、迁移周期紧张、运维成本高等问题,通过为客户提供迁移调研、方案设计、迁移实施、迁移验收等服务内容,支撑客户实现快速稳定上云,有效降低时间成本…...
AI与Prompt:解锁软件开发团队的魔法咒语,在复杂任务上生成正确率更高的代码
AI与Prompt:解锁软件开发团队的魔法咒语 写在最前面论文:基于ChatGPT的自协作代码生成将团队协作理论应用于代码生成的研究自协作框架原理1、DOL任务分配2、共享黑板协作3、Instance实例化 案例说明简单任务:基本操作,生成的结果1…...
深度学习02-数据集格式转换
背景: 通常搜集完数据图片后,我们会用labelimg进行图片标注,比较高版本的labelimg支持的标注格式有三种,PascalVOC、YOLO、CreateML,标注的时候可以根据自己的算法模型数据集需求选择相应的格式,当然&…...
【c++|opencv】一、基础操作---1.图像读取
every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 有关c操作opencv记录 1. 正文 1.1 图像读取、显示、保存 // 读取、显示、保存图像#include <opencv2/opencv.hpp> #include <iostream>us…...
【2023.10.30练习】C语言-循环右移字符
计算机能力挑战初赛2020.19题 题目描述: 现要对一个由字符a-z和A-Z组成的字符串进行解密,已知加密规则是: 字符串中所有字符分别在大写或小写的字母表中被循环左移5位(fGh-->aBc), 输入:一个加密过的字符串&#…...
C++ 自引用指针this(整理)
使用例子: #include <iostream> #include <Windows.h> using namespace std; class A { public:A(int x1){x x1;}void disp(){cout<<"this"<<this<<" when x"<<this->x<<endl;} private:int x;…...
pyzed.sl 突然 ImportError: DLL load failed while importing sl: 找不到指定的程序。 的解决
问题描述 >>> import pyzed.sl Traceback (most recent call last):File "<stdin>", line 1, in <module> ImportError: DLL load failed while importing sl: 找不到指定的程序。解决 1 按网上说的,将bin文件夹下所有dll复制到py…...
STM32 Cube配置RS485 Modbus
STM32CUBUMX配置RS485 modbus STM32(从机)亲测可用 STM32开发(六)STM32F103 通信 —— RS485 Modbus通信编程详解...
global,nonlocal
1.global 在局部,引入全局变量,使得局部变量可以修改全局变量 a 10 # a为全局变量def func():global a #把外面的全局变量引入到局部a 20 #创建局部变量,修改全局变量func() print(a) #20 2.nonlocal 在局部,引入外层的…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...








