This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
opennebula_sr-iov_vmm_driver [2013/05/15 14:33] dmacleod [Files] |
opennebula_sr-iov_vmm_driver [2021/12/09 16:42] (current) |
||
|---|---|---|---|
| Line 13: | Line 13: | ||
| - A virtual bridge is required. The VM will attach interfaces to this bridge but the OS will not use them. They are only required to pass IP address information into the VM. The bridge does not require any external connectivity, | - A virtual bridge is required. The VM will attach interfaces to this bridge but the OS will not use them. They are only required to pass IP address information into the VM. The bridge does not require any external connectivity, | ||
| - VF usage tracking is implemented in the ///tmp// file system. During a fatal host error the VF usage tracking might become out of sync with actual VF usage. You will have to manually recover. ([[opennebula_sr-iov_vmm_driver# | - VF usage tracking is implemented in the ///tmp// file system. During a fatal host error the VF usage tracking might become out of sync with actual VF usage. You will have to manually recover. ([[opennebula_sr-iov_vmm_driver# | ||
| - | - A modified context script is required to decode the SR-IOV interface information inside the VM. Examples are given for Infiniband | + | - A modified context script is required to decode the SR-IOV interface information inside the VM. Examples are given for Infiniband. |
| - IPv6 has not been tested. | - IPv6 has not been tested. | ||
| ===== Testing Environment ===== | ===== Testing Environment ===== | ||
| Line 26: | Line 26: | ||
| - | 1. Extract kvm-srivo.tar.gz to /// | + | 1. Extract |
| 2. Edit /// | 2. Edit /// | ||
| Line 40: | Line 40: | ||
| https:// | https:// | ||
| - | 4. In the /// | + | 4. In the /// |
| Example, four virtual functions: | Example, four virtual functions: | ||
| Line 79: | Line 79: | ||
| - | Libvirt does provide a built-in method for tracking VF usage but it does not support the Mellanox OFED 2 drivers. As a result I had to create my own usage tracking mechanism. If you are using this driver with an SR-IOV card witch support | + | Libvirt does provide a built-in method for tracking VF usage but it does not support the Mellanox OFED 2 drivers. As a result I had to create my own usage tracking mechanism. If you are using this driver with an SR-IOV card which supports |
| http:// | http:// | ||
| - | In the hosts ///tmp// directory | + | In the host' |
| /// | /// | ||
| Line 89: | Line 89: | ||
| 3 | 3 | ||
| - | ==== Files ==== | + | ===== Driver ===== |
| - | * SR-IOV KVM Driver | + | * {{: |
| - | * Infiniband Context Script | + | |
| - | * Ethernet Context Script | + | |
| + | ==== Context Script Modification ==== | ||
| + | |||
| + | |||
| + | Edit the // | ||
| + | |||
| + | gen_iface_conf() { | ||
| + | cat <<EOT | ||
| + | DEVICE=$DEV | ||
| + | BOOTPROTO=none | ||
| + | ONBOOT=yes | ||
| + | #################### | ||
| + | # Update this # | ||
| + | #################### | ||
| + | TYPE=$TYPE | ||
| + | # | ||
| + | NETMASK=$MASK | ||
| + | IPADDR=$IP | ||
| + | EOT | ||
| + | if [ -n " | ||
| + | echo " | ||
| + | fi | ||
| + | echo "" | ||
| + | } | ||
| + | |||
| + | gen_network_configuration() | ||
| + | { | ||
| + | IFACES=`get_interfaces` | ||
| + | for i in $IFACES; do | ||
| + | MAC=`get_mac $i` | ||
| + | ################################### | ||
| + | # Update this # | ||
| + | ################################### | ||
| + | ib_vf=$(echo " | ||
| + | ib_pos=$(echo " | ||
| + | if [ " | ||
| + | DEV=" | ||
| + | UPCASE_DEV=`upcase $DEV` | ||
| + | TYPE=" | ||
| + | else | ||
| + | DEV=`get_dev $i` | ||
| + | UPCASE_DEV=`upcase $DEV` | ||
| + | TYPE=" | ||
| + | fi | ||
| + | # | ||
| + | IP=$(get_ip) | ||
| + | NETWORK=$(get_network) | ||
| + | MASK=$(get_mask) | ||
| + | GATEWAY=$(get_gateway) | ||
| + | #################################### | ||
| + | # Update this # | ||
| + | #################################### | ||
| + | if [ " | ||
| + | gen_iface_conf > / | ||
| + | else | ||
| + | gen_iface_conf > / | ||
| + | fi | ||
| + | # | ||
| + | done | ||
| + | } | ||
| + | | ||
| + | Take note of: | ||
| + | - " | ||
| + | - gen_iface_conf > / | ||