Ubuntu20.04部署KVM
文章目录
- 一. 环境准备
- 关闭防火墙(UFW)
- 禁用 SELinux
- 更换镜像源
- 检查 CPU 虚拟化支持
- 二. 安装KVM
- 安装 KVM 及相关组件
- 启动 libvirtd 服务
- 验证安装
- 创建虚拟机
一. 环境准备
4C8G,50G硬盘——VMware Workstation需要给虚拟机开启虚拟化引擎
root@kvm:~# hostnamectlStatic hostname: luzzIcon name: computer-vmChassis: vmMachine ID: 8d6bb13c168e4df5aa13a070821f70b6Boot ID: 4a74a26980ed4619bc81d8d6fc407e43Virtualization: vmwareOperating System: Ubuntu 20.04.6 LTSKernel: Linux 5.4.0-144-genericArchitecture: x86-64
root@kvm:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:7c:a4:3d brd ff:ff:ff:ff:ff:ffinet 192.168.226.155/24 brd 192.168.226.255 scope global dynamic ens33valid_lft 1303sec preferred_lft 1303secinet6 fe80::20c:29ff:fe7c:a43d/64 scope link valid_lft forever preferred_lft forever
关闭防火墙(UFW)
Ubuntu 默认使用 UFW 作为防火墙前端,执行以下命令关闭:
sudo ufw disable
sudo systemctl stop ufw
sudo systemctl disable ufw
禁用 SELinux
Ubuntu 默认不安装 SELinux。
更换镜像源
# 备份原有 sources.list
cp /etc/apt/sources.list /etc/apt/sources.list.bak# 使用阿里云镜像源(Ubuntu 20.04)
sudo sed -i 's|http://.*archive.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list
sed -i 's|http://.*security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list# 更新软件包列表
apt-get update
检查 CPU 虚拟化支持
root@kvm:~# egrep -c '(vmx|svm)' /proc/cpuinfo
2
# 输出大于 0 表示支持
二. 安装KVM
安装 KVM 及相关组件
apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
启动 libvirtd 服务
systemctl start libvirtd
systemctl enable libvirtd
验证安装
root@kvm:~/apt# virsh list --allId Name State
--------------------root@kvm:~/apt# kvm-ok # 应显示 "KVM acceleration can be used"
INFO: /dev/kvm exists
KVM acceleration can be usedroot@kvm:~/apt# ip a # 查看会多个虚拟网桥
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:7c:a4:3d brd ff:ff:ff:ff:ff:ffinet 192.168.226.155/24 metric 100 brd 192.168.226.255 scope global dynamic ens33valid_lft 1695sec preferred_lft 1695secinet6 fe80::20c:29ff:fe7c:a43d/64 scope link valid_lft forever preferred_lft forever
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000link/ether 52:54:00:bd:2a:3c brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:bd:2a:3c brd ff:ff:ff:ff:ff:ff
创建虚拟机
先上传一个镜像
root@kvm:~# ll | grep CentOS
-rw-r--r-- 1 root root 1020264448 May 21 11:32 CentOS-7-x86_64-Minimal-2009.iso
# 移动镜像位置
root@kvm:~# chmod +777 ./CentOS-7-x86_64-Minimal-2009.iso && mv /root/CentOS-7-x86_64-Minimal-2009.iso /var/lib/libvirt/images/
安装虚拟机
sudo virt-install \--name centos7-minimal \--ram 2048 \--vcpus 1 \--disk path=/var/lib/libvirt/images/centos7-minimal.qcow2,size=10,format=qcow2,bus=virtio \--os-type linux \--os-variant centos7.0 \--network bridge=virbr0,model=virtio \--graphics none \--console pty,target_type=serial \--location /var/lib/libvirt/images/CentOS-7-x86_64-Minimal-2009.iso \--extra-args="console=ttyS0,115200n8 serial text"
通过命令行自行选择数字进行安装步骤即可。
如下即正确安装后效果:
Starting Wait for Plymouth Boot Screen to Quit...
[ OK ] Started NTP client/server.
[ 8.862116] ip6_tables: (C) 2000-2006 Netfilter Core Team
[ 8.908114] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 8.949342] Ebtables v2.0 registered
[ 8.973992] Netfilter messages via NETLINK v0.30.
[ 8.984914] ip_set: protocol 7
[ 9.085756] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[ 9.176516] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.CentOS Linux 7 (Core)
Kernel 3.10.0-1160.el7.x86_64 on an x86_64localhost login:
CentOS Linux 7 (Core)
Kernel 3.10.0-1160.el7.x86_64 on an x86_64localhost login: root
Password:
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:84:39:1c brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ifup eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/1)
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 52:54:00:84:39:1c brd ff:ff:ff:ff:ff:ffinet 192.168.122.220/24 brd 192.168.122.255 scope global noprefixroute dynamic eth0valid_lft 3599sec preferred_lft 3599secinet6 fe80::4fb5:55e4:f761:10d1/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (39.156.70.46) 56(84) bytes of data.
64 bytes from 39.156.70.46 (39.156.70.46): icmp_seq=1 ttl=127 time=15.9 ms
64 bytes from 39.156.70.46 (39.156.70.46): icmp_seq=2 ttl=127 time=15.5 ms
64 bytes from 39.156.70.46 (39.156.70.46): icmp_seq=3 ttl=127 time=15.6 ms--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2007ms
rtt min/avg/max/mdev = 15.515/15.689/15.948/0.235 ms
[root@localhost ~]#
相关文章:

Ubuntu20.04部署KVM
文章目录 一. 环境准备关闭防火墙(UFW)禁用 SELinux更换镜像源检查 CPU 虚拟化支持 二. 安装KVM安装 KVM 及相关组件启动 libvirtd 服务验证安装创建虚拟机 一. 环境准备 4C8G,50G硬盘——VMware Workstation需要给虚拟机开启虚拟化引擎 roo…...

OpenCV CUDA 模块图像过滤------创建一个高斯滤波器函数createGaussianFilter()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::createGaussianFilter 是 OpenCV CUDA 模块中的一个工厂函数,用于创建一个高斯滤波器。这个滤波器可以用来平滑图像&#…...
计算机视觉与深度学习 | matlab实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据)
以下是一个基于MATLAB的ARIMA-WOA-CNN-LSTM时间序列预测框架。由于完整代码较长,此处提供核心模块和实现思路,完整源码和数据可通过文末方式获取。 1. 数据准备(示例数据) 使用MATLAB内置的航空乘客数据集: % 加载数据 data = readtable(airline-passengers.csv); data …...

可视化图解算法43:数组中的逆序对
1. 题目 牛客网 面试笔试TOP101 描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 数据范围&…...

【Python】使用Python实现调用API获取图片存储到本地
使用Python实现调用API获取图片存储到本地 目录 使用Python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现5、结果查看 1、项目概述 开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始…...

腾讯2025年校招笔试真题手撕(一)
一、题目 有n 把钥匙,m 个锁,每把锁只能由一把特定的钥匙打开,其他钥匙都无法打开。一把钥匙可能可以打开多把锁,钥匙也可以重复使用。 对于任意一把锁来说,打开它的钥匙是哪一把是等概率的。但你无法事先知道是哪一把…...

Vue3 与 Vue2 区别
一、Vue3 与 Vue2 区别 对于生命周期来说,整体上变化不大,只是大部分生命周期钩子名称上 “on”,功能上是类似的。不过有一点需要注意,组合式API的Vue3 中使用生命周期钩子时需要先引入,而 Vue2 在选项API中可以直接…...
java集合详细讲解
Java 8 集合框架详解 Java集合框架是Java中最重要、最常用的API之一,Java 8对其进行了多项增强。下面我将全面讲解Java 8中的集合框架。 一、集合框架概述 Java集合框架主要分为两大类: Collection - 单列集合 List:有序可重复Set…...

嵌入式学习笔记 - STM32 U(S)ART 模块HAL 库函数总结
一 串口发送方式: ①轮训方式发送,也就是主动发送,这个容易理解,使用如下函数: HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout); ②中断方式发送ÿ…...

【VLNs篇】04:SayNav-为新环境中的动态规划到导航进行大型语言模型的基础构建
栏目内容论文标题SayNav: 为新环境中的动态规划到导航进行大型语言模型的基础构建 (SayNav: Grounding Large Language Models for Dynamic Planning to Navigation in New Environments)研究问题自主代理在未知环境中执行复杂导航任务(如MultiON)时&…...
MySQL中添加一个具有创建数据库权限的用户
要在MySQL中添加一个具有创建数据库权限的用户,可按以下步骤操作: 1. 登录MySQL 使用拥有足够权限(一般是root用户 )的账号登录到MySQL数据库。在命令行输入: mysql -u root -p然后输入对应的密码,即可进…...

oracle使用SPM控制执行计划
一 SPM介绍 Oracle在11G中推出了SPM(SQL Plan management),SPM是一种主动的稳定执行计划的手段,能够保证只有被验证过的执行计划才会被启用,当由于种种原因(比如统计信息的变更)而导致目标SQL产生了新的执…...
[Java实战]Spring Boot整合Seata:分布式事务一致性解决方案(三十一)
[Java实战]Spring Boot整合Seata:分布式事务一致性解决方案(三十一) 引言 在微服务架构中,业务逻辑被拆分为多个独立的服务,每个服务可能拥有独立的数据库。当需要跨服务操作多个数据库时,如何保证数据的…...

Openwrt下使用ffmpeg配合自建RTSP服务器实现推流
目前在Openwrt下时mjpg_streamer实现UVC摄像头转网络摄像头的方案很多,这种方案视频服在路由模组中,在局域网中使用很方便。但是对于需要远程监控管理的情况,mjpg_streamer不适应,因为不在局域网中的播放器无法访问到路由模组中的…...
MySQL 索引的增删改查
MySQL 索引的增删改查 1 建表时创建索引 [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY [别名] (字段名 [(长度)] [ASC|DESC] )主键直接写: PRIMARY KEY (Id)例如: CREATE TABLE people (id int NOT NULL PRIMARY KEY AUTO_INCREMENT,last_name varchar(10)…...
MySQL Host 被封锁解决方案(全版本适用 + Java 后端优化)
引言 MySQL 中 “Host is blocked because of many connection errors” 是生产环境常见问题,若处理不当会导致服务中断。本文结合 MySQL 官方文档(5.5/8.0)、Java 后端最佳实践及企业级经验,提供从 “快速解封” 到 “根源优化”…...

wifi 如果检查失败,UI 就会出现延迟或缺失打勾的现象。
问题:connectedSsid 的初始化依赖 onCreate 中的状态检查,如果检查失败,UI 就会出现延迟或缺失打勾的现象。 WIFI界面上上的一个标识代表成功连接。重启后出现偶尔不打勾的情况。 原始代码: // if (connectedSsid !…...

点云(point cloud):自动驾驶的“三维扫描图“
点云(Point Cloud):就是用很多“点”来表示一个物体或场景的三维形状和结构。(用点描绘的3D画,好比素描,但不是用线条勾勒,而是“点点点点”拼出物体形状) 观察这幅图像,…...
Redis 中如何保证缓存与数据库的数据一致性?
在 Redis 中保证缓存与数据库的数据一致性是一个关键问题,尤其是在高并发环境下。由于缓存和数据库是两个独立的数据存储系统,它们之间的数据同步存在延迟和不确定性,因此需要采取一系列策略来保证数据的一致性。以下是几种常用的方法和策略&…...

Oracle RAC节点时间差异同步测试
前言: Oracle Real Application Clusters (RAC) 集群依赖于各节点间的心跳检测与缓存融合等机制,这些机制对节点间的时钟同步性有极高的要求。如果集群内不同节点之间存在显著的时间偏差,可能会导致整个集群运行异常。在较早版本的RAC中&…...
python 打卡DAY27
##注入所需库 import pandas as pd import seaborn as sns import matplotlib.pyplot as plt import random import numpy as np import time import shap # from sklearn.svm import SVC #支持向量机分类器 # # from sklearn.neighbors import KNeighborsClassifier …...
位运算及其算法
计算机中的所有数在内存中都是以二进制形式进行存储的 ,位运算就是直接对整数二进制位进行操作,有些时候在程序中使用位运算进行操作,会得到极高的便利性。 有符号整数与无符号整数 我们以int整型为例,每个int占4个字节32个bit位…...
flutter getx路由管理、状态管理、路由守卫中间件、永久储存get_storage
一个简单的路由跳转、状态管理 目录 lib/ ├── main.dart ├── routes/index.dart // 路由表 ├── middlewares/auth_middleware.dart // 登录守卫 ├── pages/ │ ├── home_page.dart │ ├── login_page.dart │ └── profile_page.dart └─…...

贪心算法之跳跃游戏问题
问题背景 本文背景是leetcode的一道经典题目:跳跃游戏,描述如下: 给定一个非负整数数组 nums,初始位于数组的第一个位置(下标0)。数组中的每个元素表示在该位置可以跳跃的最大长度。判断是否能够到达最后…...
Dockers Compose常用指令介绍
Dockers Compose常用指令 1、常用指令介绍 1.1、version 指令 顶级一级指令,指定 compose 指定文件格式版本 version: "3.8" services: 不同版本支持的功能不同。常用版本有 ‘2’, ‘3’, ‘3.8’ 等。 1.2、services 指令 顶级一级指令࿰…...
YOLOv11 性能评估与横向对比
在第二章中,我们深入剖析了 YOLOv11 的核心技术,从骨干网络、颈部网络到头部,再到损失函数、数据增强和训练策略的创新,揭示了其高性能背后的奥秘。然而,理论的强大最终需要通过严谨的实验数据来验证。本章将详细阐述 …...
kafka在线增加分区副本数
1、问题来源 线上有一个物联网项目依赖kafka集群中指定主题消费,前些天kafka集群中的某一台机器出现了故障,导致kafka这个主题的数据一直无法消费,经查发现为了保证消息的顺序性此主题仅设置了一个分区,但是副本也仅有一个&#…...

Unity 如何使用Timeline预览、播放特效
在使用unity制作和拟合动画时,我们常用到Timeline,前后拖动滑轨,预览动画正放倒放非常方便。如果我们想对特效也进行这个操作,可以使用下文的步骤。 至此,恭喜你又解锁了一个新的技巧。如果我的分享对你有帮助…...
GIM发布新版本了 (附rust CLI制作brew bottle流程)
GIM 发布新版本了!现在1.3.0版本可用了 可以通过brew upgrade git-intelligence-message升级。 初次安装需要先执行 brew tap davelet/gim GIM 是一个根据git仓库内文件变更自动生成git提交消息的命令行工具,参考前文《GIM: 根据代码变更自动生成git提交…...
GitHub 趋势日报 (2025年05月21日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1microsoft/WSLLinux的Windows子系统⭐ 1731⭐ 25184C2virattt/ai-hedge-fundA…...