Main Menu

Search

Showing posts with label bonding. Show all posts
Showing posts with label bonding. Show all posts

LINUX: "modprobe" Command Line Options and Usage (Cheat Sheet)

modprobe uses the dependency lists and hardware maps generated by depmod to intelligently load or unload modules into the kernel. It performs the actual insertion and removal using the lower-level programs insmod an rmmod respectively.
Syntax

modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [modulename] 
         [module parameters...]

modprobe [-r] [-v] [-n] [-i] [modulename...]

modprobe [-c]

modprobe [--dump-modversions] [filename]

Options

-a, --all Insert all module names on the command line.
-b, --use-blacklist This option causes modprobe to apply the blacklist commands in the configuration files (if any) to module names as well. (Any module which has been blacklisted will not be automatically loaded.)
-C, --config This option overrides the default configuration directory (/etc/modprobe.d).
This option is passed through install or remove commands to other modprobe commands in the MODPROBE_OPTIONS environment variables
-c, --showconfig Dump out the effective configuration from the config directory and exit.
--dump-modversions Print out a list of module versioning information required by a module. This option is commonly used by distributions to package up a Linux kernel module using module versioning deps.
-d, --dirname Directory where modules can be found (/lib/modules/`uname -r` by default).
--first-time Normally, modprobe will succeed (and do nothing) if told to insert a module that is already present or to remove a module which isn't present. This is ideal for simple scripts; however, more complicated scripts often want to know whether modprobe really did something: this option makes modprobe fail in the case that it actually didn't do anything.
--force-vermagic Every module contains a small string containing important information, such as the kernel and compiler versions. If a module fails to load and the kernel complains that the "version magic" doesn't match, you can use this option to remove it. This applies to any modules inserted: both the module (or alias) on the command line and any modules on which it depends.
This check is there for your protection, so this using option is dangerous unless you know what you're doing.

--force-modversion When modules are compiled with CONFIG_MODVERSIONS set, a section detailing the versions of every interfaced used by (or supplied by) the module is created. If a module fails to load and the kernel complains that the module disagrees about a version of some interface, you can use --force-modversion to remove the version information altogether. This applies any modules inserted: both the module (or alias) on the command line and any modules on which it depends.
This check is there for your protection, so using this option is dangerous unless you know what you're doing.
-f, --force Try to strip any versioning information from the module which might otherwise stop it from loading: this is the same as using both --force-vermagic and --force-modversion. This applies to any modules inserted: both the module (or alias) on the command line and any modules it on which it depends.
These checks are there for your protection, so using this option is dangerous unless you know what you are doing.
-i, --ignore-install, --ignore-remove This option causes modprobe to ignore install and remove commands in the configuration file (if any) for the module specified on the command line (any dependent modules are still subject to commands set for them in the configuration file). Both install and remove commands will currently be ignored when this option is used regardless of whether the request was more specifically made with only one or other (and not both) of --ignore-install or --ignore-remove.
-n, --dry-run, --show This option does everything but actually insert or delete the modules (or run the install or remove commands). Combined with -v, it is useful for debugging. For historical reasons both --dry-run and --show actually mean the same thing and are interchangeable.
-q, --quiet With this flag, modprobe won't print an error message if you try to remove or insert a module it can't find (and isn't an alias or install/remove command). However, it will still return with a non-zero exit status. The kernel uses this to opportunistically probe for modules which might exist using request_module.
-R, --resolve-alias Print all module names matching an alias. This can be useful for debugging module alias problems.
-r --remove This option causes modprobe to remove rather than insert a module. If the modules it depends on are also unused, modprobe will try to remove them too. Unlike insertion, more than one module can be specified on the command line (it does not make sense to specify module parameters when removing modules).
There is usually no reason to remove modules, but some buggy modules require it. Your distribution kernel may not have been built to support removal of modules at all.
-S, --set-version Set the kernel version, rather than using uname to decide on the kernel version (which dictates where to find the modules).
--show-depends List the dependencies of a module (or alias), including the module itself. This produces a (possibly empty) set of module filenames, one per line, each starting with "insmod" and is typically used by distributions to determine which modules to include when generating initrd/initramfs images. Install commands which apply are shown prefixed by "install". It does not run any of the install commands. Note that modinfo can be used to extract dependencies of a module from the module itself, but knows nothing of aliases or install commands.
-s, --syslog This option causes any error messages to go through the syslog mechanism (as LOG_DAEMON with level LOG_NOTICE) rather than to standard error. This is also automatically enabled when stderr is unavailable.
This option is passed through install or remove commands to other modprobe commands in the MODPROBE_OPTIONS environment variable.
-V, --version Show modprobe's version information and exit.
-v, --verbose
 


Products to which Article Applies
All Linux Operating Systems using modprobe.

LINUX: How To Check Speed, Auto Negotiation & Link Detection Settings Of Network Bond / Interface In Linux? ("ethtool" command)

Following ethtool command can be used for check speed, Auto negotiation and Link Detection settings for Network bond / interface in Linux
ethtool <bond / interface>

Below is example snippet of above command.

# ethtool bond0
Settings for bond0:
Supported ports: [ ]
Supported link modes:   Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Advertised link modes:  Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Speed: 10000Mb/s
Duplex: Full
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Link detected: yes


Products to which Article Applies

All Linux Operating Systems

Additional References

http://landoflinux.com/linux_ethtool_command.html
https://www.thegeekstuff.com/2010/10/ethtool-command



Linux: How To Do Network Bond Interfaces Failover Testing?

Procedure provides detailed steps for testing the Linux bond failover for Linux environments where there are multiple slaves set for each network bond for high availability.

For e.g. if you have network bond bond0 which has bonding configuration file /etc/sysconfig/network-scrips/ifcfg-bond0 file with below entries.

DEVICE=bond0
ONBOOT=yes
MASTER=yes
IPADDR=10.10.10.20
NETMASK=255.255.255.0
GATEWAY=10.10.240.240
BONDING_OPTS="mode=1 miimon=100"
TYPE=Ethernet

And lets assume you have two slaves eth0 and eth1 for bond0 with below entries inside ifcfg-eth0 and ifcfg-eth1.

ifcfg-eth0

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes 


ifcfg-eth1

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
MASTER=bond0
SLAVE=yes 

So you want to do network bond failover testing for bond0 by shutting down on slave (eth0 or eth1) at a time, below are the steps to follow.


1. Open a command window on local windows machine and do continuous pings to Linux Host using below command to the bond0 IP address, In this case IP will be 10.10.10.20

ping -t <IP>

2. Now list the slaves for network bond interface using below command. In this example bondX will be bond0.

cat /proc/net/bonding/bondX

You will see that both the slaves will be up, they can in active-active or active-backup mode based on the bonding options.


3. Bring down one the slaves slave as follows. It can be either eth0 or eth1

ip link set dev <slave> down

Wait for about 15 seconds. Check the slaves of bond using below command

cat /proc/net/bonding/bondX

You will see one of the slaves as down which you brought down.Check if there are any issues with the ping tests from windows command prompt from step (1)


4. Bring up the slave you brought down in above step (3) using below command

ip link set dev <slave> up

Wait for 15 seconds and then run below command, replace bondX as needed with bond/interface name.

cat /proc/net/bonding/bondX

You will see both the slaves up now.


5. Now bring down the other slave now by running below command

ip link set dev <slave> down

Wait for about 15 seconds and then run below command.

cat /proc/net/bonding/bondX

You will see one of the slaves as down which you brought down in step (5). Check if there are any issues with the ping tests in above step (1).


6. Now bring back slave you stopped in above step (5) again by running below command.

ip link set dev <slave> up

Wait for about 15 seconds and then run below command.

cat /proc/net/bonding/bondX

You will see both the slaves up.



Products to which Article Applies


For this tutorial, the steps were tested on Oracle Linux. But the steps are applicable also to CentOS and Red Hat OS.

Additional Reference

https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/
https://www.howtoforge.com/tutorial/how-to-configure-high-availability-and-network-bonding-on-linux/