In my previous post about Installing CentOS on the Open Compute Windmill servers, all of the testing was done and completed without using the OCP Knox Unit. Once connected, it routinely caused drive mapping issues. For instance, /dev/sda would become /dev/sdb, /dev/sdo or /dev/sdp at reboot. Causing the server to hang at boot since it could not find the appropriate filesystem.
The problem being, that the megaraid_sas driver was being loaded prior to the libsas driver, causing the Knox Unit drives to come online prior to the internal drives. Unfortunately, it was not consistent enough to just use /dev/sdb, /dev/sdo or /dev/sdp as the boot drive, since it would rotate depending on what server I was connected to.
After a plethora of testing, the working solution I was able to come up with is:
1. Blacklist megaraid_sas in the PXE menu as a kernel parameter using: rdblacklist megaraid_sas
2. Blacklist megaraid_sas in the kickstart file as a kernel parameter using: rdblacklist megaraid_sas
3. Blacklist megaraid_sas in /etc/modprobe.d/blacklist.conf with blacklist megaraid_sas
4. Load megaraid_sas in /etc/rc.modules with modprobe megaraid_sas
My updated kickstart:
#fix centos bug
sed -i "s/\(.*\)\(speed\)/#\1\2/g" /boot/grub/grub.conf
#blacklist module from loading
echo "blacklist megaraid_sas" >> /etc/modprobe.d/blacklist.conf
#load module after all other modules
echo "modprobe megaraid_sas" >> /etc/rc.modules
chmod +x /etc/rc.modules