Server IP : 127.0.0.2 / Your IP : 3.21.126.184 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /lib/modules/4.4.0-1085-aws/build/tools/hv/ |
Upload File : |
#!/bin/bash # This example script creates bonding network devices based on synthetic NIC # (the virtual network adapter usually provided by Hyper-V) and the matching # VF NIC (SRIOV virtual function). So the synthetic NIC and VF NIC can # function as one network device, and fail over to the synthetic NIC if VF is # down. # # Usage: # - After configured vSwitch and vNIC with SRIOV, start Linux virtual # machine (VM) # - Run this scripts on the VM. It will create configuration files in # distro specific directory. # - Reboot the VM, so that the bonding config are enabled. # # The config files are DHCP by default. You may edit them if you need to change # to Static IP or change other settings. # sysdir=/sys/class/net netvsc_cls={f8615163-df3e-46c5-913f-f2d2f965ed0e} bondcnt=0 # Detect Distro if [ -f /etc/redhat-release ]; then cfgdir=/etc/sysconfig/network-scripts distro=redhat elif grep -q 'Ubuntu' /etc/issue then cfgdir=/etc/network distro=ubuntu elif grep -q 'SUSE' /etc/issue then cfgdir=/etc/sysconfig/network distro=suse else echo "Unsupported Distro" exit 1 fi echo Detected Distro: $distro, or compatible # Get a list of ethernet names list_eth=(`cd $sysdir && ls -d */ | cut -d/ -f1 | grep -v bond`) eth_cnt=${#list_eth[@]} echo List of net devices: # Get the MAC addresses for (( i=0; i < $eth_cnt; i++ )) do list_mac[$i]=`cat $sysdir/${list_eth[$i]}/address` echo ${list_eth[$i]}, ${list_mac[$i]} done # Find NIC with matching MAC for (( i=0; i < $eth_cnt-1; i++ )) do for (( j=i+1; j < $eth_cnt; j++ )) do if [ "${list_mac[$i]}" = "${list_mac[$j]}" ] then list_match[$i]=${list_eth[$j]} break fi done done function create_eth_cfg_redhat { local fn=$cfgdir/ifcfg-$1 rm -f $fn echo DEVICE=$1 >>$fn echo TYPE=Ethernet >>$fn echo BOOTPROTO=none >>$fn echo ONBOOT=yes >>$fn echo NM_CONTROLLED=no >>$fn echo PEERDNS=yes >>$fn echo IPV6INIT=yes >>$fn echo MASTER=$2 >>$fn echo SLAVE=yes >>$fn } function create_eth_cfg_pri_redhat { create_eth_cfg_redhat $1 $2 } function create_bond_cfg_redhat { local fn=$cfgdir/ifcfg-$1 rm -f $fn echo DEVICE=$1 >>$fn echo TYPE=Bond >>$fn echo BOOTPROTO=dhcp >>$fn echo ONBOOT=yes >>$fn echo NM_CONTROLLED=no >>$fn echo PEERDNS=yes >>$fn echo IPV6INIT=yes >>$fn echo BONDING_MASTER=yes >>$fn echo BONDING_OPTS=\"mode=active-backup miimon=100 primary=$2\" >>$fn } function create_eth_cfg_ubuntu { local fn=$cfgdir/interfaces echo $'\n'auto $1 >>$fn echo iface $1 inet manual >>$fn echo bond-master $2 >>$fn } function create_eth_cfg_pri_ubuntu { local fn=$cfgdir/interfaces create_eth_cfg_ubuntu $1 $2 echo bond-primary $1 >>$fn } function create_bond_cfg_ubuntu { local fn=$cfgdir/interfaces echo $'\n'auto $1 >>$fn echo iface $1 inet dhcp >>$fn echo bond-mode active-backup >>$fn echo bond-miimon 100 >>$fn echo bond-slaves none >>$fn } function create_eth_cfg_suse { local fn=$cfgdir/ifcfg-$1 rm -f $fn echo BOOTPROTO=none >>$fn echo STARTMODE=auto >>$fn } function create_eth_cfg_pri_suse { create_eth_cfg_suse $1 } function create_bond_cfg_suse { local fn=$cfgdir/ifcfg-$1 rm -f $fn echo BOOTPROTO=dhcp >>$fn echo STARTMODE=auto >>$fn echo BONDING_MASTER=yes >>$fn echo BONDING_SLAVE_0=$2 >>$fn echo BONDING_SLAVE_1=$3 >>$fn echo BONDING_MODULE_OPTS=\'mode=active-backup miimon=100 primary=$2\' >>$fn } function create_bond { local bondname=bond$bondcnt local primary local secondary local class_id1=`cat $sysdir/$1/device/class_id 2>/dev/null` local class_id2=`cat $sysdir/$2/device/class_id 2>/dev/null` if [ "$class_id1" = "$netvsc_cls" ] then primary=$2 secondary=$1 elif [ "$class_id2" = "$netvsc_cls" ] then primary=$1 secondary=$2 else return 0 fi echo $'\nBond name:' $bondname echo configuring $primary create_eth_cfg_pri_$distro $primary $bondname echo configuring $secondary create_eth_cfg_$distro $secondary $bondname echo creating: $bondname with primary slave: $primary create_bond_cfg_$distro $bondname $primary $secondary let bondcnt=bondcnt+1 } for (( i=0; i < $eth_cnt-1; i++ )) do if [ -n "${list_match[$i]}" ] then create_bond ${list_eth[$i]} ${list_match[$i]} fi done