云计算&虚拟化-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>

运维小路

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

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

相关推荐
2401_840192275 分钟前
k8s的crd、operator、cr分别是什么?
运维·分布式·kubernetes·prometheus
草木深雨纷纷6 分钟前
mt管理器手机版下载2026最新版更新下载分享
linux·运维·网络·智能手机
扛枪的书生9 分钟前
ELK 学习总结
linux
OYangxf21 分钟前
对TinyRedis中主从复制的理解
运维·服务器
Irene199124 分钟前
大数据开发面试常问的 Linux 命令 总结
大数据·linux
銳昊城25 分钟前
项目六: 配置与管理DNS服务器(2) C2
运维·服务器
辰尘_星启30 分钟前
【Linux】Python Socket编程指南
linux·python·socket·系统·通信
搞科研的小刘选手1 小时前
【天津市电源学会主办】第七届能源电力与自动化工程国际学术会议(ICEPAE 2026)
运维·自动化·能源·电力·电气·控制工程·节能
恋奴娇1 小时前
ubuntu 25 突破pipewire 不能以root帐号运行 系统没有声音输入输出设备
linux·运维·ubuntu
MuYan~1 小时前
开发环境内网MySQL连接操作文档
运维·服务器