#!/bin/bash
# set -x
list=(
$1
)
if [ $2 -eq 2 ]
then
vm_neicun=8
elif [ $2 -eq 4 ]
then
vm_neicun=16
elif [ $2 -eq 8 ]
then
vm_neicun=32
elif [ $2 -eq 16 ]
then
vm_neicun=64
elif [ $2 -eq 32 ]
then
vm_neicun=128
elif [ $2 -eq 48 ]
then
vm_neicun=192
elif [ $2 -eq 64 ]
then
vm_neicun=256
elif [ $2 -eq 96 ]
then
vm_neicun=384
elif [ $2 -eq 192 ]
then
vm_neicun=512
fi
vm_cpu=$2
# echo 'vm_cpu:==' $vm_cpu 'vm_neicun:==' $vm_neicun
node_list=('node0' 'node1')
for i in ${list[@]}
do
a=$(sshpass -p 'root@123' ssh -o StrictHostKeyChecking=no root@$i "virsh list --all | awk '/i-/{print \$2}'")
if [ -z ${a:0:1} ]
then
date_time=`date +%Y-%m-%d-%H:%M:%S`
keyong_cpu=$(sshpass -p 'root@123' ssh -o StrictHostKeyChecking=no root@$i "sshpass -p '2ytE!r00tme' ssh -o StrictHostKeyChecking=no -p 2222 localhost lscpu|grep -v NUMA |grep -w 'CPU(s):'| awk '{print \$2}'")
neicun=$(sshpass -p 'root@123' ssh -o StrictHostKeyChecking=no root@$i "cat /mnt/sys/kernel/debug/dmem/free_dpages")
# echo $neicun#换算之前的内存
keyong_neicun=`expr $neicun \* 2 \* 64 / 63 / 1024`
# echo "可用内存 $keyong_neicun"
# echo $keyong_cpu $keyong_neicun
keyong_cpu=`expr $hostcpu - $cpus`
echo 'success'
echo 'success'
else
for node in ${node_list[@]}
do
date_time=`date +%Y-%m-%d-%H:%M:%S`
neicun=$(sshpass -p 'root@123' ssh -o StrictHostKeyChecking=no root@$i "cat /mnt/sys/kernel/debug/dmem/$node/free_dpages")
# echo $neicun换算之前的内存
keyong_neicun=`expr $neicun \* 2 \* 64 / 63 / 1024`
# echo "可用内存 $keyong_neicun"
hostcpu=$(sshpass -p 'root@123' ssh -o StrictHostKeyChecking=no root@$i "sshpass -p '2ytE!r00tme' ssh -o StrictHostKeyChecking=no -p 2222 localhost lscpu|grep -v NUMA |grep -w 'CPU(s):'| awk '{print \$2}'")
# echo $hostcpu
cpus=0
for p in $a
do
c=$(sshpass -p 'root@123' ssh root@$i "virsh dominfo $p |grep 'CPU(s)'|awk '{print \$2}'")
# echo $c
cpus=`expr $cpus + $c`
done
# echo $cpus
# echo "soc $i 剩余可用cpu数量为`expr $hostcpu - $cpus`"
keyong_cpu=`expr $hostcpu - $cpus`
if [ $keyong_cpu -ge $vm_cpu ] && [ $keyong_neicun -ge $vm_neicun ]
then
echo 'success'
break
else
echo 'err'
fi
done
fi
done
虚机迁移测试之前,检测目标soc 资源是否 充足 shell 脚本
最新推荐文章于 2024-10-18 13:51:57 发布
该bash脚本用于检查远程Linux主机上的虚拟机列表,并根据传入参数分配CPU和内存。它通过SSH连接到主机,使用virsh命令获取虚拟机信息,lscpu获取CPU数量,以及计算可用内存。脚本会检查是否有足够的资源来创建指定配置的新虚拟机。
摘要由CSDN通过智能技术生成