Inhaltsverzeichnis
MTU size abhängig von der Hostanbindung setzen
VM-Client (dynamisch)
/usr/lib/cgi-bin/netspeed.cgi
#!/bin/sh
# https://10.10.2.222/cgi-bin/vmhost.cgi?[resource_id]
# https://10.10.2.222/cgi-bin/vmhost.cgi?5
. /usr/share/openqrm/etc/openqrm-server.conf
echo 'Content-type: text/html
<pre>
'
DATEN="$(echo "SELECT ip4,mac,netif,rem_cons_ip,timestamp,resource_id,resource_ip,hostname
FROM hardware
WHERE resource_id=(SELECT resource_id
FROM resource_info
WHERE resource_id=(SELECT resource_vhostid
FROM resource_info
WHERE resource_id='${QUERY_STRING}'))
;" \
| mysql -t -h ${OPENQRM_DATABASE_SERVER} -u${OPENQRM_DATABASE_USER} -p${OPENQRM_DATABASE_PASSWORD} ${OPENQRM_DATABASE_NAME} 2>&1)"
#echo "${DATEN}" | sed -e 's/^[ ]*|[ ]*//' | fgrep -v '+---' | awk -F'|' '{ print NF }' | head -n1 | awk '{for(i=1;i<$1;i++){print i}}'
VARIABELEN="$(echo "${DATEN}" | sed -e 's/^[ ]*|[ ]*//' | fgrep -v '+---' | awk -F'|' '{ print NF }' | head -n1 | awk '{for(i=1;i<$1;i++){print i}}' | while read SPALTENNUMMER
do
echo "${DATEN}" | sed -e 's/^[ ]*|[ ]*//' | fgrep -v '+---' | awk -F'|' -v spalte="${SPALTENNUMMER}" '{ print $spalte }' | tr -s '\n' '=' | sed -e 's/^=[ ]*//' -e 's/=$/\n/g' | while read SPALTENNAME GLEICH DATEN
do
echo "${SPALTENNAME} ${GLEICH} ${DATEN}"
done
done)"
#echo "${VARIABELEN}"
NETIF="$(echo "${VARIABELEN}" | egrep '^ip4' | awk -F'=' '{print $2}' | tr -s ';' '\n' | fgrep '10.10.5.' | awk '{print $1}')"
MACAD="$(echo "${VARIABELEN}" | egrep '^mac' | sed 's/;/\n/g' | fgrep "${NETIF}" | awk '{print $NF}')"
ETH00="$(echo "${VARIABELEN}" | egrep '^mac' | sed 's/;/\n/g' | fgrep "00:1b:21:5f:b8:cc" | fgrep eth | awk '{print $1}' | head -n1)"
SPEED="$(echo "${VARIABELEN}" | egrep '^netif' | sed 's/;/\n/g' | fgrep "${ETH00}" | awk '{print $NF}')"
if [ "${SPEED}" = "10000Mb/s" ] ; then
echo "MTU=4132"
else
echo "MTU=1500"
fi
echo "
</pre>
<BR>
<BR>"
echo '
</body>
</html>
'
/usr/share/openqrm/web/boot-service/netspeed.sh
#!/bin/bash
#------------------------------------------------------------------------------#
if [ -r /usr/share/openqrm/etc/openqrm-server.conf ] ; then
. /opt/etc/hardwareinfos.cfg
elif [ -r /var/openqrm/openqrm-resource.conf ] ; then
. /var/openqrm/openqrm-resource.conf
else
exit 1
fi
#------------------------------------------------------------------------------#
MTU="$(links -dump https://${resource_openqrmserver}/cgi-bin/netspeed.cgi?${resource_id}|fgrep -F'=' '{print $2}')
ip link set dev eth0 mtu ${MTU}
Der Start dieses Scripts wird hier initiiert: script_in_die_rclocal_eintragen
Script in die rc.local eintragen
Diese Startmethode wird bei Ubuntu sehr stiefmütterlich behandelt, deshalb sollte man sich vielleicht überlegen ob man mit der Zeit mitgehen möchte und diese Aktion nicht vielleicht im Upstart-Script zu verankert.
Unser Script bauen wir lieber am Ende in die /etc/rc.local ein. Das ist am sichersten, muss aber leider in jedem vorhandenem Image einmal gemacht werden. Sowie im "Golden", dann braucht es in keinem neuen Image mehr nachgezogen werden.
Die Befehlszeilen mit einem Kommentar schreiben wir in dieser Form rein:
# vi /etc/rc.local
### MTU für 10000MB/s
. /var/openqrm/openqrm-resource.conf
wget -q -O /root/netspeed.sh "$openqrm_web_protocol://${resource_openqrmserver}/openqrm/boot-service/netspeed.sh"
/bin/sh /root/netspeed.sh
exit 0
WICHTIG: Es muss vor dem "exit 0" stehen! Oder man entfernt das "exit 0" einfach.
Jetzt muss der rc.local-Dienst nur noch in die Liste der zu startenden Dienste eingetragen werden:
# update-rc.d rc.local defaults
KVM-Host (statische)
/usr/share/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifup
#!/bin/sh # # This file is part of openQRM. # # openQRM is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 # as published by the Free Software Foundation. # # openQRM is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with openQRM. If not, see <http://www.gnu.org/licenses/>. # # Copyright 2009, Matthias Rechenburg <matt@openqrm.com> # /sbin/ifconfig $1 0.0.0.0 promisc up /sbin/ip link set $1 mtu 4132 /usr/sbin/brctl addif @@OPENQRM_PLUGIN_KVM_BRIDGE@@ $1 sleep 2
/usr/share/openqrm/plugins/kvm/etc/init.d/kvm
alt
In der Funktion "kvm_start()" diese Position suchen:
if ! which kvm 1>/dev/null; then
if ! which qemu-kvm 1>/dev/null; then
kvm_log kvm_start "ERROR: kvm is not installed! Please install kvm."
exit 1
fi
fi
# make sure the kvm modules are loaded
modprobe kvm
if grep flags.*vmx /proc/cpuinfo 1>/dev/null; then modprobe kvm-intel; fi
if grep flags.*svm /proc/cpuinfo 1>/dev/null; then modprobe kvm-amd; fi
neu
Da zwischen kommen unsere Einträge:
if ! which kvm 1>/dev/null; then
if ! which qemu-kvm 1>/dev/null; then
kvm_log kvm_start "ERROR: kvm is not installed! Please install kvm."
exit 1
fi
fi
# setting the kvm-ifup +kvm-ifdown script to the internal and external bridge
# internal
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifup | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET1/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifup-net1
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifdown | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET1/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifdown-net1
# external
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifup | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET2/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifup-net2
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifdown | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET2/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifdown-net2
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifup | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET3/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifup-net3
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifdown | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET3/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifdown-net3
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifup | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET4/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifup-net4
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifdown | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET4/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifdown-net4
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifup | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET5/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifup-net5
cat $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/etc/templates/openqrm-kvm-ifdown | sed -e "s/@@OPENQRM_PLUGIN_KVM_BRIDGE@@/$OPENQRM_PLUGIN_KVM_BRIDGE_NET5/g" > $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/openqrm-kvm-ifdown-net5
chmod +x $OPENQRM_SERVER_BASE_DIR/openqrm/plugins/kvm/bin/*
# make sure the kvm modules are loaded
modprobe kvm
if grep flags.*vmx /proc/cpuinfo 1>/dev/null; then modprobe kvm-intel; fi
if grep flags.*svm /proc/cpuinfo 1>/dev/null; then modprobe kvm-amd; fi
Why MTU 576 ?
Per RFC 791 Section 3.2: Every internet destination must be able to receive a datagram of 576 octets either in one piece or in fragments to be reassembled.
