本文目录导读:

在Shell脚本中调整虚拟机资源配置,通常是通过修改虚拟机管理工具(如KVM/libvirt、VirtualBox、VMware等)的配置文件或使用命令行工具实现。
以下是几种主流虚拟化环境下的Shell脚本调整方法:
针对 KVM/QEMU + libvirt(最常用)
使用 virsh 命令行工具。
调整CPU核心数和内存
#!/bin/bash VM_NAME="your-vm-name" # 关闭虚拟机(必须) virsh shutdown $VM_NAME # 等待虚拟机完全关闭 sleep 5 # 设置CPU核心数为4 virsh setvcpus $VM_NAME 4 --maximum 4 --config virsh setvcpus $VM_NAME 4 --config # 设置内存为4096MB (4GB) virsh setmem $VM_NAME 4096MB --config virsh setmaxmem $VM_NAME 4096MB --config # 启动虚拟机 virsh start $VM_NAME
调整磁盘大小
#!/bin/bash VM_NAME="your-vm-name" DISK_PATH="/var/lib/libvirt/images/your-vm.qcow2" # 关闭虚拟机 virsh shutdown $VM_NAME sleep 5 # 扩展磁盘空间(增加20GB) qemu-img resize $DISK_PATH +20G # 启动虚拟机 virsh start $VM_NAME # 注意:操作系统内部还需要用 fdisk/resize2fs 扩展分区
针对虚拟机中运行的Docker容器
如果是在虚拟机内部调整Docker容器的资源限制:
#!/bin/bash CONTAINER_NAME="my-container" # 更新运行中容器的CPU限制(1.5个CPU) docker update --cpus 1.5 $CONTAINER_NAME # 更新内存限制(512MB) docker update --memory 512m $CONTAINER_NAME # 更新内存+swap限制(1GB) docker update --memory 512m --memory-swap 1g $CONTAINER_NAME
针对 VirtualBox
使用 VBoxManage 命令行工具:
#!/bin/bash VM_NAME="YourVMName" # 关闭虚拟机 VBoxManage controlvm "$VM_NAME" poweroff # 调整内存为4096MB VBoxManage modifyvm "$VM_NAME" --memory 4096 # 调整CPU核心数为4 VBoxManage modifyvm "$VM_NAME" --cpus 4 # 调整显存为64MB VBoxManage modifyvm "$VM_NAME" --vram 64 # 启动虚拟机 VBoxManage startvm "$VM_NAME" --type headless
针对 VMware (ESXi/vCenter)
使用 vim-cmd 或 vmware-vim-cmd:
#!/bin/bash
VM_NAME="YourVM"
# 获取虚拟机ID
VM_ID=$(vim-cmd vmsvc/getallvms | grep "$VM_NAME" | awk '{print $1}')
# 调整CPU和内存(内存单位:MB)
vim-cmd vmsvc/setconfig $VM_ID vCpu.numCpus=4
vim-cmd vmsvc/setconfig $VM_ID memory.size=8192
# 热添加(如果支持,无需重启)
vMotion或DRS场景下可热调整资源
通用自动化脚本模板
一个更完整的脚本示例,支持选择资源类型和指定值:
#!/bin/bash
adjust_vm_resources() {
local vm_name=$1
local cpu_cores=${2:-2}
local memory_mb=${3:-2048}
echo "正在调整虚拟机 '$vm_name' 的资源..."
echo "CPU: $cpu_cores 核心"
echo "内存: ${memory_mb}MB"
# 检查虚拟机状态
state=$(virsh domstate "$vm_name" 2>/dev/null)
if [ $? -ne 0 ]; then
echo "错误: 虚拟机 '$vm_name' 不存在"
exit 1
fi
if [ "$state" = "running" ]; then
echo "正在关闭虚拟机..."
virsh shutdown "$vm_name"
sleep 10
# 强制关闭如果没停止
virsh destroy "$vm_name" 2>/dev/null
fi
# 设置资源
virsh setmaxmem "$vm_name" ${memory_mb}MB --config
virsh setmem "$vm_name" ${memory_mb}MB --config
virsh setvcpus "$vm_name" "$cpu_cores" --config
echo "资源调整完成,正在启动虚拟机..."
virsh start "$vm_name"
echo "虚拟机 '$vm_name' 已成功调整配置并启动"
}
# 使用示例
adjust_vm_resources "my-test-vm" 4 8192
重要注意事项
- 需要root权限:大多数调整需要sudo或root执行
- 动态调整限制:某些资源(如内存)需要虚拟机支持热插拔
- 操作系统内部调整:磁盘扩容后,需在虚拟机内执行:
# Linux guest sudo fdisk -l /dev/sda sudo resize2fs /dev/sdaX
- 配置文件直接修改:KVM配置文件位置
/etc/libvirt/qemu/{vm-name}.xml - 批量调整:可以使用循环批量调整多个虚拟机
选择哪种方法取决于你的虚拟化平台(KVM、VirtualBox、VMware等)以及是否需要保持虚拟机在线,对于生产环境,建议先测试脚本功能。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播