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

运维小路

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

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

相关推荐
BUG 劝退师5 小时前
进程间通讯(IPC)
运维·服务器·网络
冷冷清清中的风风火火5 小时前
linux 里的创建了一个tomcat用户 怎么禁止该用户使用crontab 功能
linux·tomcat·firefox
桥边驿语人7 小时前
使用Docker Desktop进行本地打包和推送
运维·docker·容器·本地打包
头发尚存的猿小二8 小时前
Linux--文件系统
linux·运维·服务器
易保山8 小时前
MIT6.S081 - Lab7 Multithreading(进程调度)
linux·操作系统·c
杨凯凡9 小时前
Linux入门指南:从零开始探索开源世界
linux
是程序喵呀9 小时前
软考《信息系统运行管理员》- 7.1 物联网运维
运维·物联网·软考
卑微的小鬼9 小时前
fabric test-network启动
运维·fabric
孤枫219 小时前
aws平台练习
云计算·aws
sondx9 小时前
mac安装浏览器闪退处理
运维·docker·容器