The storage team are on my case about our Linux boxes using both the primary and the partner path to send data to the Netapp filters. Our Solaris boxes don't do that but I can't see a way to get multipath on the Linux boxes to behave the same way.
Unfortunately, some of our boxes are older RHEL 4.9 with multipath 4.5 on them, so they're not running the latest and greatest.
I've tried several configurations and still see activity on both the primary and partner paths.
Can anyone offer some insight into how to configure multipath for data down primary path and secondary is for failover only.
Yes, you can configure multipath to send IO through primary paths by setting the following parameter in /etc/multipath.conf file's device specific section:
In this case, the grouping will happen based on the priority of the paths and when there's atleast one active path in the primary paths group, IO will go through the primary group. There are other useful parameters which need to be set for better performance and to work with NetApp controllers. For a complete sample multipath.conf file for RHEL4.9, please refer to the "DM-Multipath configuration" section of the "Linux Host Utilities 5.3 Installation and Setup Guide" available on NOW.
I already have group_by_prio. I'm using ontap as the method to determine priority and I can see it returning different values (4 for the primary and 1 for the partner path if I recall), but we're still seeing data down both. We actually have two primary and two secondary paths.
Ok, could you paste the output of "multipath -ll" and full multipath.conf (with all comments removed, if any) so that we can verify the settings? Also, when IO is happening to /dev/mapper/mpath1, capture the output of "iostat 2 /dev/sda /dev/sdb /dev/sdc /dev/sdd". IO should only be happening through /dev/sda and /dev/sdd in this case. IO on other paths should be close to 0.
Not sure how close to 0 it should be, but its not 0. The storage guys only gave me 10MB before to play with (when I asked for 5GB) they gave me 4 so I have been able to do some sustained writes and this is what it threw up eventually.
lease let me know if there's anything else I can provide.
Okay, uniform was the right setting. But you will certainly see some negligible IO (close to 0, but not 0) on the secondary paths since multipath will be sending some IO (path checkers) to check the health of the paths periodically. If you are seeing heavy IO on secondary paths, controllers will warn you with something like "FCP partner paths misconfigured". If you are seeing very minimal IO as compared to the other two paths, you should be fine. To continously pump IO on mpath1, use a dd command in an infinite loop - "for ((;1;)) do dd if=/dev/mapper/mpath1 of=/dev/null; done" and then check if the IO is negligible on sdc and sdb.