Using an EMC CX3-10 Storage with CentOS5

I have had the mixed pleasure of setting up an EMC CX3-10 Storage (fibrechannel and iSCSI) on a couple of CentOS5 machines, lately, and I’m going to share here the tweaks I had to make to the provided software.

I hope this will come handy to someone else on the planet.

Before you proceed, the standard disclaimer: If you break your costly servers and storage appliances using these instructions, you can keep the pieces. This is simply my experience, use at your own risk, and don’t come crying if you mess up :)

The Drivers

CentOS5 recognized the HBA cards right away, so no sweat here.

Hey, it’s RedHat Enterprise 5, after all, under the hood. The EMC CX3-10 Storage comes with a couple of packages (namely NaviSphere and PowerPath) that install drivers and stuff so that the system can see the disks correctly.

And here comes the quirky part: the software has to ensure that it’s been installed on a supported platform, and while RHEL5 is officially supported, CentOS5 is not: the software refuses to start, and if started manually it spews a phrase like “Ensure to install this software on a RedHat Enterprise machine”, or something.

Now, we all know CentOS is binary compatible with RHEL… what’s missing?

I’ll tell you what: the software is performing some tests that are a wee bit too clever… to work around them, perform these steps:

  • First things first, edit the file /etc/redhat-release and put in the single line Red Hat Enterprise Linux Server release 5 (Tikanga) so that the system is now identifying itself as a RHEL machine. But it’s not enough for PowerPath;
  • Edit the file /etc/opt/emcpower/EMCpower.LINUX-5.0.1/enable, and substitute the lines that say rhel_version=`rpm -qf /etc/issue | \ sed 's/redhat-release-\([0-9]\)Server.*/\1/'` with these: rhel_version=`rpm -qf /etc/issue | \ sed 's/centos-release-\([0-9]\).*/\1/'` This way the script will be able to find the ‘5’ version number in the name of the package it is seeking (which is centos-release, instead of redhat-release).

The init scripts

The provided init scripts are a bit amateurish, to say the least, but proprietary software vendors are not really known for their ability to comply to the LSB specifications… even when they want them as mandatory.

So, edit the file /ect/init.d/PowerPath and add the line # chkconfig: 345 20 40 just above the one that starts with # description:. Then, use the command chkconfig --add PowerPath to make that service manageable from the standard LSB tools.

Just to be sure, also use

chkconfig PowerPath reset
chkconfig PowerPath on
chkconfig --list | grep PowerPath

and check that the service is configured as on.

Other than that, follow the normal instructions, and make sure that the naviagent service starts before the PowerPath service, which it should if you are using my numbers: naviagent already has LSB start and stop priorities, and they by default 25 and 35.