Professional Documents
Culture Documents
To ensure the best performance with the Pure Storage FlashArray's, 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
For versions below RHEL 6, you can add the following command(s) into rc.local
Note that 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.
Create a new file in the following location (for each respective OS). The Linux OS will use the udev rules to set the
elevators after each reboot.
RHEL:
/etc/udev/rules.d/99-pure-storage.rules
/lib/udev/rules.d/99-pure-storage.rules
Step 2: Add the Following Entries to the Rules File (Version Dependent)
The following entries automatically sets 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:
Warning!
It is expected behavior that you only see the settings take effect for the sd* devices. The dm-* devices will
not reflect the change directly but will inherit it from the sd* devices that make up it's path.
OR
2. Check the "max_sectors_kb" on your Linux host ( regardless of the kernel version or Linux distribution). Customer
will need to know which device.
$ cat /sys/block/sda/queue/max_sectors_kb
512
If the value is ≤ 4096, then no action is necessary. However, if this value is > 4096, we recommend that you change
the max to 4096.
Reboot Persistent
We recommend that you add the value to your UDEV rules file (99-pure-storage.rules) created above. This will ensure
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)
Warning!
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:
The following are recommended entries to existing multipath.conf files (/etc/multipath.conf) for Linux OSes. Add the
following to existing section for controlling Pure devices.
RHEL 7.3+:
No customer action is necessary for these values in Red Hat Enterprise Linux 7.3+.
More information:
• https://bugzilla.redhat.com/show_bug.cgi?id=1300415
• https://access.redhat.com/solutions/2772111
devices {
device {
vendor "PURE"
path_selector "queue-length 0"
path_grouping_policy multibus
path_checker tur
fast_io_fail_tmo 10
dev_loss_tmo 60
no_path_retry 0
}
}
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
}
}
devices {
device {
vendor "PURE"
path_selector "round-robin 0"
path_grouping_policy multibus
rr_min_io 1
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 on 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