[dm-devel] multipath failover & rhcs
John Ruemker
jruemker at redhat.com
Mon Apr 25 17:29:21 UTC 2011
On 04/25/2011 01:01 PM, Dave Sullivan wrote:
> Hi Guys,
>
> It seems recently that we have just run into this problem where we
> don't fully understand the timeouts that drive multipath fail-over.
>
> We did thorough testing of pulling fibre/failing hbas manualling and
> multipath handled things perfectly.
>
> Recently we enountered SCSI Block errors, where the multipath
> fail-over did not occur before the qdisk timeout.
>
> This was attributed to the scsi block errors and the scsi lun timeout
> of 60 seconds which is set by default.
>
> I added a comment to the first link below that discusses a situation
> that would cause this to occur. We think that this was due to a
> defective HBA under high I/O load.
>
> Once we get the HBA in question we will run some tests to validate
> that modifying the scsi block timeouts in fact allows multipath to
> fail-over in time to beat the qdisk timeout.
>
> I'm getting ready to to take a look at the code to see if I can
> validate these theories. The area that is still somewhat gray is the
> true definition for multipath timings for failover.
>
> I don't think there is a true definition of a multipath timeout, per
> see. I see it as the following:
>
> multipath check = every 20 seconds for no failed paths
> multipath check (if failed paths) = every 5 seconds on failed paths only
>
> multipath failover occurs = driver timeout attribute met ( Emulex
> lpfc_devloss_tmo value)
> --capture pulling fibre
> --capture disabling hba
>
> or (for other types of failures)
>
> multipath failover occurs =scsi block timeout + driver timeout (not
> sure if the driver timeout attribute is a added)
>
> https://access.redhat.com/kb/docs/DOC-2881
> https://docspace.corp.redhat.com/docs/DOC-32822
>
> Hmm, just found out that there was new fix in rhel5u5 for this it
> looks like from this case in salesforce 00085953.
>
> -Dave
>
Hi Dave,
These are issues we have recently been working to resolve with this and
other qdisk articles. The problem is as you described it: we don't have
an accurate definition of how long it will take multipath to fail a path
in all scenarios. The formula used in the article is basically wrong,
and we're working to fix it, but coming up with a formula for a path
timeout has been difficult. This calculation should not be based on
no_path_retry at all, as we are really only concerned in the amount of
time it takes for the scsi layer to return an error, allowing qdisk's
I/O operation to be sent down an alternate path.
Regarding the formula you posted:
>> multipath check = every 20 seconds for no failed paths
>> multipath check (if failed paths) = every 5 seconds on failed paths
only
Just to clarify, the polling interval doubles after each successful path
check, up to 4 times the original. So you're correct, that for a
healthy path you should see it checking every 20s after the first few
checks. Likewise, your second statement is also accurate in that after
a failed check, it drops back to the configured polling interval until
the path returns to active status.
Regarding case 00085953, I was actually the owner of that one. There
was a change that went into 5.5 which lowered the default
tur/readsector0 SCSI I/O timeout down from 300 to the checker_timeout
value (which defaults to the timeout value in
/sys/block/sdX/device/timeout).
I am very interested in any information you come up with on the
calculation of how long a path failure will take. We will integrate
that into this article if you can come up with anything.
Let me know if you have any questions.
--
John Ruemker, RHCA
Technical Account Manager
Global Support Services
Red Hat, Inc.
Office: 919-754-4941
Cell: 919-793-8549
More information about the dm-devel
mailing list