Pure Storage Linux Recommended Settings
Pure Storage Linux Recommended Settings
To ensure the best performance with the Pure Storage FlashArrays, please use this guide for configuration and
implementation of Linux hosts in your environment. These recommendations apply to the versions of Linux that we
have certified as per our Compatibility Matrix.
An example file that may be missing that could result in failure to boot:
...(kernel build)/kernel/drivers/md/dm-round-robin.ko
You can check current timeout settings using the following command as root:
The default timeout for normal file system commands is 60 seconds when udev is being used. If udev is not
in use, the default timeout is 30 seconds. If you are running RHEL 6+, and want to ensure the rules persist,
then use the udev method documented below.
Queue Settings
We recommend two changes to the queue settings. The first selects the 'noop' I/O scheduler, which has been shown to
get better performance with lower CPU overhead than the default schedulers (usually 'deadline' or 'cfq'). The second
change eliminates the collection of entropy for the kernel random number generator, which has high cpu overhead when
enabled for devices supporting high IOPS.
These settings can be safely changed on a running system, by locating the Pure LUNs:
An example for loop is shown here to quickly set all Pure luns to the desired 'noop' elevator:
All changes in this section take effect immediately, without rebooting for RHEL5 and 6. RHEL 4 releases will require a
reboot.
/etc/udev/rules.d/99-pure-storage.rules
Ubuntu:
/lib/udev/rules.d/99-pure-storage.rules
Step 2: Add the Following Entries to the Rules File (Version Dependent)
The following entries automatically set the elevator to 'noop' each time the system is rebooted. Create a file that has the
following entries, ensuring each entry exists on one line with no carriage returns:
Please note that 6 spaces are needed after "FlashArray" under "Set the HBA timeout to 60 seconds" above
for the rule to take effect.
In some cases, the Maximum IO Size Settings is not honored, and the host generates writes over the 4 MB
max. If you see the following errors, the IO size might be the problem:
Reboot Persistent
We recommend that you add the value to your UDEV rules file (99-pure-storage.rules) created above. This ensures that
the setting persists through a reboot. To change that value please do the following:
1. Changing the "max_sectors_kb" value by adding it to the UDEV rules (Reboot Persistent): adding it to the UDEV
rules)
NOTE: The location of your rules file may be different depending on your OS version, so please double
check the command before running it.
This command should only be run if you are sure there are no running services depending on that volume,
otherwise you can risk an application crash.
If you need to make the change immediately, but cannot wait for a maintenance window to reboot, you can also change
the setting with the following command:
ActiveCluster: Additional multipath settings are required for ActiveCluster. Please see ActiveCluster
Requirements and Best Practices.
The Multipath Policy defines how the host distributes IOs across the available paths to the storage.
The Round Robin (RR) policy distributes IOs evenly across all Active/Optimized paths. A newer
MPIO policy, queue-length, is similar to round-robin in that IOs are distributed across all available
Active/Optimized paths, however, it provides some additional benefits. The queue-length path
selector bias IOs towards paths that are servicing IO quicker (paths with shorter queues). In the
event that one path becomes intermittently disruptive or is experiencing higher latency, queue-
length will prevent the utilization of that path reducing the effect of the problem path.
The following are recommended entries to existing multipath.conf files (/etc/multipath.conf) for Linux OSes. Add the
following to the existing section for controlling Pure devices.
No manual changes required. The RHEL OS should configure this file automatically provided that the dm-multipath
version is device-mapper-multipath-0.4.9-99.el7.x86_64. See the RHEL KB: https://access.redhat.com/
solutions/2772111. The dm-multipath config shown below for PURE is default with the device-mapper version
included in RHEL / Oracle Linux 7.3+
device {
vendor "PURE"
product "FlashArray"
path_grouping_policy "multibus"
path_selector "queue-length 0"
path_checker "tur"
features "0"
hardware_handler "0"
prio "const"
failback immediate
fast_io_fail_tmo 10
dev_loss_tmo 60
user_friendly_names no
}
}
Supporting Info:
• RHEL KB - Standard dm-multipath configuration added for Pure Storage
• Bug 1300415 - Add PURE to multipath-tools on RHEL
• RHEL 7.3 Release Notes - Support added for PURE FlashArray
defaults {
polling_interval 10
find_multipaths yes
}
devices {
device {
vendor "PURE"
path_selector "queue-length 0"
path_grouping_policy group_by_prio
path_checker tur
fast_io_fail_tmo 10
dev_loss_tmo 60
no_path_retry 0
defaults {
polling_interval 10
}
devices {
device {
vendor "PURE"
path_selector "round-robin 0"
path_grouping_policy multibus
rr_min_io 1
path_checker tur
fast_io_fail_tmo 10
dev_loss_tmo 60
no_path_retry 0
}
}
defaults {
polling_interval 10
}
devices {
device {
vendor "PURE"
path_selector "round-robin 0"
path_grouping_policy multibus
rr_min_io 1
path_checker tur
no_path_retry 0
}
}
Oracle VM Server
device {
vendor "PURE"
product "FlashArray"
path_selector "queue-length 0"
path_grouping_policy group_by_prio
6.2+ (queue-length)
# multipath -ll
Correct Configuration:
mpathe (3624a93709d5c252c73214d5c00011014) dm-2 PURE,FlashArray
size=100G features='0' hwhandler='0' wp=rw
`-+- policy='queue-length 0' prio=1 status=active
|- 1:0:0:4 sdd 8:48 active ready running
|- 1:0:1:4 sdp 8:240 active ready running
|- 1:0:2:4 sdab 65:176 active ready running
|- 1:0:3:4 sdan 66:112 active ready running
|- 2:0:0:4 sdaz 67:48 active ready running
|- 2:0:1:4 sdbl 67:240 active ready running
|- 2:0:2:4 sdbx 68:176 active ready running
`- 2:0:3:4 sdcj 69:112 active ready running
...
...
Incorrect Configuration (check for unecessary spaces in multipath.conf):
The following is an example of using DM-Multipathd to blacklist LUNs from a third party vendor. The syntax blocks DM-
Multipathd from controlling those luns that are "blacklisted".
The following can be added to the 'blacklist' section of the multipath.conf file.
blacklist {
device {
vendor "XYZ.*"
product ".*"
}
device {
vendor "ABC.*"
product ".*"
}
}
Space Reclamation
You will want to make sure that space reclamation is configured on your Linux Host so that you do not run out of space.
For more information please see this KB: Reclaiming Space on Linux
ActiveCluster
Additional multipath settings are required for ActiveCluster. Please see ActiveCluster Requirements and Best Practices.
With these SCSI Unit Attentions, it is possible to have the Linux initiator auto-rescan on these storage configuration
changes. The requirement for auto-rescan support in RHEL/Centos is the libstoragemgmt-udev package. On installing
this package a udev rule is installed, 90-scsi-ua.rules. Uncomment the supported Unit Attentions and reload the udev
service to pick up the new rules: