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

运维小路

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

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

相关推荐
温柔如酒11 分钟前
【linux调试】使用 sysrq 快照内核状态堆栈
linux·运维·服务器
板鸭〈小号〉14 分钟前
简单的http服务器实现C++
运维·服务器
std8602123 分钟前
Linux 6.18发布:年度最后版本或成新长期支持版本
linux·运维·服务器
HalvmånEver23 分钟前
Linux:进程替换(进程控制四)
linux·运维·服务器·学习·进程
一叶之秋141224 分钟前
从零开始学Linux进程控制:fork、wait、exec 详解
linux·运维·服务器
thinkMoreAndDoMore42 分钟前
linux系统服务管理框架
linux·运维·服务器
waves浪游1 小时前
进程控制(中)
linux·运维·服务器·开发语言·c++
满天星83035771 小时前
【Linux】信号(上)
linux·运维·服务器·开发语言·c++
科普瑞传感仪器1 小时前
航空航天领域青睐:复杂曲面机器人抛光为何必须采用六维力控?
运维·人工智能·机器人·自动化·无人机
博语小屋1 小时前
生产者消费者模型
linux·分布式·缓存