Support bonded networking (Done)

I tried to set up bonded networking. There were several issues I ran into.

  1. NetworkManager conflicts with Rockstor and they both try to use different interface names and overwrite each others setting. I just uninstalled NetworkManager with yum.
  2. Bonded networking adds a file /sys/class/net/bonding_masters which Rockstor tries to enumurate as a network interface and errors out. In system/osi.py network_devices I changed
        devices = os.listdir(’/sys/class/net’)
    to
        ifpath = ‘/sys/class/net’
        devices = [name for name in os.listdir(ifpath) if os.path.isdir(os.path.join(ifpath, name))]
    so it only enumerates directories.
  3. If viewing the interface properties in Rockstor, even if no changes are made and cancel is clicked, Rockstor rewrites the ifcfg file and clobbers the bonding settings
It would be great if Rockstor could fully support bonded networking for either failover or aggregation, but at minimum it should play nicely with a manual setup.

I’d like to add support for bonded networking and thanks for this discussion!

I’ve never used bonded networking myself and would like understand it better. Is there a link to a how-to you recommend?

I totally agree that at the very least, Rockstor must play nice with manual setup. I’ll fix this very soon.

Here’s the main issue I just filed to support network bonding: https://github.com/rockstor/rockstor-core/issues/560

Thank you so much for your contributions!  Your domain expertise is really useful as we go about development. Btw, if it interests you, feel free to hack and submit pull requests.

Bonded networking basically uses several physical interfaces to create one logical link with higher throughput and/or failover capabilities. You create a new logical interface (say bond0) and then assign the physical interfaces to it as slaves.

See https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/s2-networkscripts-interfaces-chan.html
https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Specific_Kernel_Module_Capabilities.html#sec-Using_Channel_Bonding

Can we please get the following change implemented:

as currently I need to make the change on every update otherwise the rockstor service will not start.

Good to hear from you after a long gap @sprint.

I hope nic bonding feature gets added soon, but for now I have made the network device gathering more robust. Thanks for describing the behavior perfectly. Here’s the commit that should get merged into 3.8-5 after more testing, but feel free to test it out and let me know if you have any questions.

+1 for bonding, planning to use this when finally migrating to rockstor

Thanks, I haven’t had time to test it yet, but I’ll let you know when I do.

Actually, these days I’m not really using any features of Rockstor, since the pool/share setup has not needed any changes, and I have custom shell scripts doing snapshots and backups from before Rockstor had those features stablised. And I am mounting the pool with fstab to work around a problem with tracker search, which means it all works even with the Rockstor service disabled.

I am interested, but not yet using, some Rock-Ons, and I hope to eventually migrate my custom snapshots/backups to the native Rockstor way but at the moment that isn’t feasible.

Just a quick and a rather belated update: Thanks to @suman bonded / teaming network setup from within Rockstor’s Web-UI after install has now been in place since version 3.8-13, this in turn caused a regression in the dashboard network widget that itself has in turn been fixed by @Flyer just recently in the testing channel updates so if all is well we should have both functioning as expected in the next stable channel updates release.

1 Like