forked from evolix/ansible-roles
kvm-host: migrate-vm: set migration speed even on bridges
This commit is contained in:
parent
31456aa126
commit
d6a777be72
|
@ -29,7 +29,7 @@ The **patch** part changes is incremented if multiple releases happen the same m
|
||||||
* evolinux: install HPE Agentless Management Service (amsd)
|
* evolinux: install HPE Agentless Management Service (amsd)
|
||||||
* fail2ban: add default variable fail2ban_dbpurgeage_default
|
* fail2ban: add default variable fail2ban_dbpurgeage_default
|
||||||
* fail2ban: add `fail2ban_sshd_port` variable to configure sshd port
|
* fail2ban: add `fail2ban_sshd_port` variable to configure sshd port
|
||||||
* kvm-host: release 23.09.1 for migrate-vm.sh
|
* kvm-host: release 23.10 for migrate-vm.sh
|
||||||
* metricbeat/logstash: fix Ansible syntax
|
* metricbeat/logstash: fix Ansible syntax
|
||||||
* mysql: new munin graph to follow binlog_days over time
|
* mysql: new munin graph to follow binlog_days over time
|
||||||
* nagios-nrpe: add a NRPE check-local command with completion.
|
* nagios-nrpe: add a NRPE check-local command with completion.
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
# * migrate "from"
|
# * migrate "from"
|
||||||
# * switch to Bash to use local and readonly variables
|
# * switch to Bash to use local and readonly variables
|
||||||
|
|
||||||
VERSION="23.09.1"
|
VERSION="23.10"
|
||||||
|
|
||||||
show_version() {
|
show_version() {
|
||||||
cat <<END
|
cat <<END
|
||||||
|
@ -91,12 +91,49 @@ drbd_interface() {
|
||||||
|
|
||||||
interface_speed() {
|
interface_speed() {
|
||||||
interface=${1:-}
|
interface=${1:-}
|
||||||
file="/sys/class/net/${interface}/speed"
|
fallback_speed="1000"
|
||||||
if [ -e "${file}" ]; then
|
speed_path="/sys/class/net/${interface}/speed"
|
||||||
head -n 1 "${file}"
|
bridge_path="/sys/class/net/${interface}/brif"
|
||||||
|
|
||||||
|
if [ -e "${bridge_path}" ]; then
|
||||||
|
# echo "${interface} is a bridge" >&2
|
||||||
|
case "$(ls "${bridge_path}" | wc -l)" in
|
||||||
|
0)
|
||||||
|
# echo "${interface} bridge is empty, fallback to ${fallback_speed}" >&2
|
||||||
|
echo "${fallback_speed}"
|
||||||
|
;;
|
||||||
|
1)
|
||||||
|
bridge_iface="$(ls "${bridge_path}" | head -n 1)"
|
||||||
|
# echo "${interface} bridge has 1 interface: ${bridge_iface}" >&2
|
||||||
|
interface_speed "${bridge_iface}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# echo "${interface} bridge has many interfaces" >&2
|
||||||
|
min_speed=""
|
||||||
|
for bridge_iface in $(ls "${bridge_path}"); do
|
||||||
|
if realpath "/sys/class/net/${bridge_iface}" | grep --quiet --invert-match virtual; then
|
||||||
|
speed=$(head -n 1 "/sys/class/net/${bridge_iface}/speed")
|
||||||
|
# echo "${bridge_iface} is a physical interface, keep" >&2
|
||||||
|
if [ -z "${min_speed}" ] || [ "${min_speed}" -gt "${speed}" ]; then
|
||||||
|
# echo "new min speed with ${bridge_iface}: ${speed}" >&2
|
||||||
|
min_speed="${speed}"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
# fallback on 1Gb/s if unknown
|
# echo "${bridge_iface} is a virtual interface, skip" >&2
|
||||||
echo "1000"
|
: # noop
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [ -n "${min_speed}" ] && [ "${min_speed}" -gt "0" ]; then
|
||||||
|
echo "${min_speed}"
|
||||||
|
else
|
||||||
|
echo "${fallback_speed}"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
elif [ -e "${speed_path}" ]; then
|
||||||
|
head -n 1 "${speed_path}"
|
||||||
|
else
|
||||||
|
echo "${fallback_speed}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -230,7 +267,7 @@ migrate_vm_to() {
|
||||||
interface_speed=$(interface_speed "${drbd_interface}")
|
interface_speed=$(interface_speed "${drbd_interface}")
|
||||||
migrate_speed=$(echo "${interface_speed}*0.8/8" | bc)
|
migrate_speed=$(echo "${interface_speed}*0.8/8" | bc)
|
||||||
|
|
||||||
# echo "Migration speed set to ${migrate_speed}MiB/s"
|
echo "Migration speed set to ${migrate_speed}MiB/s"
|
||||||
virsh --quiet migrate-setspeed "${vm}" "${migrate_speed}"
|
virsh --quiet migrate-setspeed "${vm}" "${migrate_speed}"
|
||||||
|
|
||||||
export VIRSH_DEFAULT_CONNECT_URI="qemu:///system"
|
export VIRSH_DEFAULT_CONNECT_URI="qemu:///system"
|
||||||
|
|
Loading…
Reference in a new issue