fli*_*fly 9 server virtualization hotplug cpu ram
我在虚拟机中运行 Ubuntu,我想在不重新启动设备的情况下添加 CPU 和 RAM。如何热插拔这个新的虚拟硬件?
fli*_*fly 20
这些可以通过/sys使用 root 凭据使用文件系统来启用。
对于CPU,你改变了0一个1在该模式的相应的文件:/sys/devices/system/cpu/cpu*/online。
对于 RAM,您可以在文件中找到状态/sys/devices/system/memory/memory*/state并将内容从脱机更改为联机。
下面的脚本将为您打开所有 CPU 和 RAM。
#!/bin/bash
# Based on script by William Lam - http://engineering.ucsb.edu/~duonglt/vmware/
# Bring CPUs online
for CPU_DIR in /sys/devices/system/cpu/cpu[0-9]*
do
CPU=${CPU_DIR##*/}
echo "Found cpu: '${CPU_DIR}' ..."
CPU_STATE_FILE="${CPU_DIR}/online"
if [ -f "${CPU_STATE_FILE}" ]; then
if grep -qx 1 "${CPU_STATE_FILE}"; then
echo -e "\t${CPU} already online"
else
echo -e "\t${CPU} is new cpu, onlining cpu ..."
echo 1 > "${CPU_STATE_FILE}"
fi
else
echo -e "\t${CPU} already configured prior to hot-add"
fi
done
# Bring all new Memory online
for RAM in $(grep line /sys/devices/system/memory/*/state)
do
echo "Found ram: ${RAM} ..."
if [[ "${RAM}" == *":offline" ]]; then
echo "Bringing online"
echo $RAM | sed "s/:offline$//"|sed "s/^/echo online > /"|source /dev/stdin
else
echo "Already online"
fi
done
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用 udev 规则自动启用热插拔 CPU 或内存,而不是操作内核参数:
/etc/udev/rules.d/94-hotplug-cpu-mem.rules:
ACTION=="add", SUBSYSTEM=="cpu", ATTR{online}=="0", ATTR{online}="1"
ACTION=="add", SUBSYSTEM=="memory", ATTR{state}=="offline", ATTR{state}="online"
Run Code Online (Sandbox Code Playgroud)
在 CentOS 6/7、Ubuntu 14 上测试。
Debian 7 因不明原因崩溃。需要进一步测试。