Linux Storage - mpp.conf
Linux Storage Solution · Config document · referenced from RDAC multipath driver basics
S2ToS3Key value is a placeholder of the right shape, not the key of the real system. Everything else is the file as it was found after the driver was installed; nothing in it was changed by hand.The configuration file of the IBM/LSI RDAC (MPP) multipath driver on mppsrv01. As I understand it the driver reads it when its modules load, so a change here needs a new initrd (mppUpdate, which the package readme asks for after any change to the file) and a reboot; a few of its variables can also be changed at run time with mppUtil -o. My notes keep the file as the installation left it and point to man RDAC for the description of each directive; that man page is not in the notes.
| Item | Value |
|---|---|
| File | /etc/mpp.conf |
| Host | mppsrv01, Red Hat Enterprise Linux AS 4, kernel 2.6.9-89.0.9.ELsmp |
| Owner and mode | not recorded in the notes |
| Read by | the driver modules at load time, through the MPP initrd, as I understand it; the notes do not say |
| Activated with | mppUpdate (rebuilds the initrd), then a reboot |
| Changed at run time with | mppUtil -o <Variable>=<value> for the six variables mppUtil -o lists |
| Driver version | RDAC 09.03.0B05.0331, built from rdac-LINUX-09.03.0B05.0331-source.tar.gz |
The file
virtualDiskProductId=VirtualDisk DebugLevel=0x0 NotReadyWaitTime=270 BusyWaitTime=270 QuiescenceWaitTime=270 InquiryWaitTime=60 MaxLunsPerArray=256 MaxPathsPerController=4 ScanInterval=60 InquiryInterval=1 MaxArrayModules=30 ErrorLevel=3 SelectionTimeoutRetryCount=0 UaRetryCount=10 RetryCount=10 SynchTimeout=170 FailOverQuiescenceTime=20 FailoverTimeout=120 FailBackToCurrentAllowed=1 ControllerIoWaitTime=300 ArrayIoWaitTime=600 DisableLUNRebalance=0 SelectiveTransferMaxTransferAttempts=5 SelectiveTransferMinIOWaitTime=3 IdlePathCheckingInterval=60 RecheckFailedPathWaitTime=30 FailedPathCheckingInterval=60 ArrayFailoverWaitTime=300 PrintSenseBuffer=0 ClassicModeFailover=0 AVTModeFailover=0 LunFailoverDelay=3 LoadBalancePolicy=1 ImmediateVirtLunCreate=0 BusResetTimeout=150 AllowHBAsgDevs=0 S2ToS3Key=0123456789abcdef
The notes do not describe the directives one by one; they say "see man RDAC". What I can say about the file comes from the other outputs in the notes, and the rest is my reading of the names.
| Directive | What the notes show about it |
|---|---|
virtualDiskProductId=VirtualDisk | the product string the virtual HBA gives its disks; the virtual host appears as host2 in mppBusRescan output |
MaxLunsPerArray=256 | matches the maxLun256 cell in the .wwn files under /var/mpp |
MaxPathsPerController=4 | matches the four path columns per controller (CAP 0–CAP 3, CBP 0–CBP 3) in the .wwn files; this host used two of the four |
MaxArrayModules=30 | the limit on arrays ("array modules" in the driver's words); this host saw one or two |
ErrorLevel=3 | shown by mppUtil -o as current and default 0x3, range 0x0–0x5; the notes set it to 0x2 as an example |
DebugLevel=0x0 | shown by mppUtil -o; mppUtil -d 0x80200008 turns synchronous I/O debug messages on, mppUtil -d 0x0 off |
LoadBalancePolicy=1 | shown by mppUtil -o as 0x1, range 0x0–0x2; mppUtil -g 0 reports it as LBPolicy: LeastQueueDepth |
DisableLUNRebalance=0 | shown by mppUtil -o, range 0x0–0x4 |
ClassicModeFailover=0, AVTModeFailover=0 | the failover mode switches; mppUtil -g 0 reports FailoverMethod: C and AVTEnabled: Y, which the notes do not comment on |
BusResetTimeout=150 | shown by mppUtil -o as current 0x96 (150) with default 0x0 and maximum 0x12c (300); the only variable whose current value differs from its default |
S2ToS3Key=… | a key value; the notes do not say what it is for, and the value here is a placeholder |
The wait, retry and interval directives (NotReadyWaitTime down to ArrayFailoverWaitTime) are, as I read their names, the timings of the failover state machine in seconds; the notes say nothing about them and none of them was changed. The variables mppUtil -o can change at run time are the six that command lists (DebugLevel, ErrorLevel, DisableLUNRebalance, LoadBalancePolicy, ClassicModeFailover, BusResetTimeout); as I understand it, the others take effect only through a new initrd and a reboot. The command examples are a Config document of their own: mppUtil commands.
Checked against NetApp SANtricity 12.10 and multipath-tools 0.15.1
| As built | Today |
|---|---|
/etc/mpp.conf of RDAC 09.03.0B05.0331, read through the MPP initrd | The driver is gone. NetApp, who took over the Engenio arrays from LSI in 2011, discontinued RDAC with SANtricity OS 11.25; the last builds were 09.03.0B05.0439 for Red Hat Enterprise Linux 4 and 09.03.0C05.0642 for Red Hat Enterprise Linux 5 and 6, and no package exists for Red Hat Enterprise Linux 7 or SLES 12 |
a change needs mppUpdate and a reboot | The package readme of the same build says so in as many words: changes to /etc/mpp.conf or /var/mpp/devicemapping need mppUpdate "to re-build RAMdisk image" |
failover and load-balancing policy set here (LoadBalancePolicy, FailoverTimeout, …) | Done by DM-Multipath with the kernel handler scsi_dh_rdac and the built-in hardware table of multipath-tools: for vendor IBM, product ^1818 (the DS5000 family) group_by_prio, prio rdac, path_checker rdac, features "2 pg_init_retries 50", failback immediate, no_path_retry 30. NetApp's current Linux guide says to leave /etc/multipath.conf blank and use the defaults |
AVTModeFailover=0, host type LNXCL on the array | The host type for Linux is now "Linux DM-MP (Kernel 3.10 or later)"; in 2015 the old Linux host type with AVT on was renamed LNXAVT and a new Linux type with AVT off took its place |
None of the directives above has a counterpart to copy: the whole layer this file configured was replaced by DM-Multipath, and the array side is a different product line today.