云计算&虚拟化-kvm案例(数据找回)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:

1.虚拟化介绍

2.kvm基本使用

3.kvm进阶使用

4.kvm技术原理 (本小节属于)

5.vmware介绍&使用

6.小结

在讲绑核之前,我们先来做一个小实验。

准备一个死循环脚本

bash 复制代码
#!/bin/bash
# 定义要占用的CPU核心数
CORES=4
# 创建死循环函数
function cpu_eater() {
    while true; do
        :  # 冒号表示空命令,相当于什么也不做
    done
}
# 启动多个死循环进程
for ((i=0; i<CORES; i++)); do
    cpu_eater &
done
# 等待所有后台任务完成
wait

观察脚本cpu占用情况

观察整个cpu的情况

我们从上面的图可以看到,这个shell进程使用了4个cpu的全部资源,从下面的图中可以看到,它实际使用的cpu编号是0,2,10,15。我们在讲Linux进阶命令-top有提到过这个sy的占用率应该很低才对,目前占用已经达到20%以上,前面的us部分才是进程真正干活的使用的cpu,也就是显示是100%,实际只有不到80%的cpu在干活。

再准备另外一个脚本

bash 复制代码
#!/bin/bash
# 定义要占用的CPU核心数
CORES=(0 1 2 3)
# 创建死循环函数
cpu_eater() {
    while true; do
        :  # 冒号表示空命令,相当于什么也不做
    done
}
# 导出函数,使其在子进程中可见
export -f cpu_eater
# 启动多个死循环进程并绑定到特定的CPU核心
for i in "${CORES[@]}"; do
    taskset -c $i bash -c "cpu_eater" &
done
# 等待所有后台任务完成
wait

脚本的内容同样都是while死循环,但是它这里的cpu资源全部给了us也就是程序在使用,性能会比前面一个高20%。

绑定物理核心

ini 复制代码
# 未绑定核心的配置
<vcpu placement='auto'>4</vcpu>
# 使用了静态分配,但是未指定具体的cpu
<vcpu placement='static'>4</vcpu>

#以上两种实际上并没有本质的区别。

这个时候,如果没有争抢的情况下,这个虚拟机还是可以用满4个cpu,但是偶尔还是会有切换。

perl 复制代码
#通过这命令可以看到cpu使用绑定情况是hui变化的
virsh vcpuinfo xxx |grep -i "VCPU:           " -A 1 |grep -v VC |grep -v "\-\-"

如果要完全没有争抢,可以按照下面这两种方式进行绑定。这里的vcpu是指出虚拟机里面的cpu和物理cpu的绑定。

ini 复制代码
 #绑定核心的配置
  <vcpu placement='static' cpuset='0,1,2,3'>4</vcpu>
 #另外一种更细节的绑定关系 
  <vcpu placement='static'>4</vcpu>
  <cputune>
    <vcpupin vcpu='0' cpuset='0'/>
    <vcpupin vcpu='1' cpuset='1'/>
    <vcpupin vcpu='2' cpuset='2'/>
    <vcpupin vcpu='3' cpuset='3'/>
  </cputune>

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。

相关推荐
全栈工程师修炼指南6 小时前
Nginx | stream content 阶段:UDP 协议四层反向代理浅析与实践
运维·网络·网络协议·nginx·udp
Lsir10110_6 小时前
【Linux】进程信号(上半)
linux·运维·服务器
开开心心就好7 小时前
发票合并打印工具,多页布局设置实时预览
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
火车叼位7 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
予枫的编程笔记7 小时前
【Linux进阶篇】从基础到实战:grep高亮、sed流编辑、awk分析,全场景覆盖
linux·sed·grep·awk·shell编程·文本处理三剑客·管道命令
Sheep Shaun7 小时前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
Tfly__7 小时前
在PX4 gazebo仿真中加入Mid360(最新)
linux·人工智能·自动驾驶·ros·无人机·px4·mid360
陈桴浮海8 小时前
【Linux&Ansible】学习笔记合集二
linux·学习·ansible
迎仔8 小时前
06-存储设备运维进阶:算力中心的存储管家
运维
生活很暖很治愈8 小时前
Linux——环境变量PATH
linux·ubuntu