К сожалению, Nate, мы не можем иметь дело непосредственно с PHBs. Ваш первый оборонительный рубеж здесь является фактическими метриками, как в, сделайте сравнения между передачей SMB и NFS, например.
После того как у Вас есть фактические числа или статистика для резервного копирования аргументов, Вы не должны будете иметь дело с человеком так же. Статистические данные говорят, "вот то, где проблема и здесь является доказательством". Это - Ваш аргумент.
Я нашел Libvirt-wakeonlan, которая, кажется, делает это. Я понятия не имею, насколько он зрелый и насколько хорошо работает. Подход кажется правильным. https://github.com/simoncadman/libvirt-wakeonlan
Wake-On-LAN - это Wake-On-LAN, независимо от того, используете ли вы виртуальную или физическую машину. Если ваше программное обеспечение виртуализации поддерживает это, просто используйте инструмент WoL против MAC-адреса.
вы можете использовать мой скрипт, который по существу делает то же самое, что и libvirt-wakeonlan, я сделал его, потому что не смог заставить работать libvirt-wakeonlan... это всего лишь простой скрипт, который вы можете поместить в сценарий запуска и запустить его при загрузке.
Он прослушивает порт 9 udp (порт 7 также иногда используется, но гуакамоле -удаленный vnc/rdp, который я использую -отправляет на порт 9 )и проверяет MAC-адрес, когда видит волшебный пакет. Если в virsh есть виртуальная машина с этим MAC-адресом, она разбудит машину.
https://gitlab.com/-/snippets/2183494
#!/bin/bash
nc -dknl -p 9 -u | # listen to udp port 9 for packets, check if it is a magic packet
stdbuf -o0 xxd -c 6 -p |
stdbuf -o0 uniq |
stdbuf -o0 grep -v 'ffffffffffff' |
while read ; do
mac="${REPLY:0:2}:${REPLY:2:2}:${REPLY:4:2}:${REPLY:6:2}:${REPLY:8:2}:${REPLY:10:2}"
# parse mac found in magic packet
for i in $(virsh list --all --name); do # loop through libvirt machines
vmmac=$(virsh dumpxml $i | grep "mac address" | awk -F\' '{ print $2}') # get each machines MAC
if [ $vmmac = $mac ]; then # compare MACs, if match do;
echo $mac;
echo $i;
virsh start $i
virsh resume $i
fi
done
done