When external storage is connected to the rocks nodes (compute nodes) then there is are chances that those block devices can get destroyed during the kickstart process when the nodes gets re-imaged over the network automatically. In order to make sure that the SAN connected volumes are not destroyed I use a method by which I make sure that the driver module for the SAN device is not loaded thus it would not scan the additional block devices.
This could be easily achieved by passing the option nostorage to the kernel during boot process which will ignore all the storage drivers. Then we can manually specify the drivers that we would like to load. The string that works for my hardware is
"nostorage driverload=sd_mod:mptbase:mptscsih:mptsas:aacraid:mptscsih:libata"
For rocks I place the above modification on to the file “/tftpboot/pxelinux/pxelinux.cfg/default”. All that is required is to append the above string to the kernel line. My /tftpboot/pxelinux/pxelinux.cfg/default file looks like:
# cat default
default ks
prompt 0
label ks
kernel vmlinuz append ks initrd=initrd.img ramdisk_size=150000 lang= \
devfs=nomount pxe kssendmac selinux=0
After the change the file would look something like
# cat default
default ks
prompt 0
label ks
kernel vmlinuz append ks initrd=initrd.img ramdisk_size=150000 \
lang= devfs=nomount pxe kssendmac selinux=0 nostorage \
driverload=sd_mod:mptbase:mptscsih:mptsas:aacraid:mptscsih:libata
The net effect is that i have singled out the qlogic qla2400 and qla2xxx drivers from loading as the HBA’s that my compute nodes are from qlogic.
I would love to hear feedbacks if this trick did not work for you. Or even better if there is another cleaner way of achieving the same goal using some other trick.