Friday, March 7, 2008

Switch from LSI Logic to BusLogic driver

At the place where I work, we run several SUSE Linux Enterprise Server (SLES) 9.3 VMs on VMWare ESX 3.0.2 servers. When running the LSI Logic driver that ships with SLES 9.3, if there is an interrupt to the disk the disks on the VM can go read-only. This interrupt can be due to SAN fail-over, high I/O, or other issues. This bug has been fixed and doesn't exist in SLES 10.1 or later.
Because of this, we have had the need to switch these from using the LSI Logic driver to use the BusLogic driver. The problem is that the original initial ram disk (initrd) is built with the LSI Logic driver and must be changed. I decided to document the steps required to do this. If you don't take these steps, the server will encounter a kernel panic on reboot after changing the VM to use the BusLogic HBA.

1) Update /etc/sysconfig/kernel with the BusLogic driver. Change the line that reads:

INITRD_MODULES="mptspi reiserfs dm_mod"

to read:

INITRD_MODULES="BusLogic reiserfs dm_mod"

2) Make a backup copy of the initrd file that is currently in use.

cp initrd-2.6.5.77-default initrd-2.6.5.77-default.preBusLogic

3) Rebuild the initial ram disk file to incorporate the changes made to /etc/sysconfig/kernel by running mkinitrd as root.

mkinitrd

Note: You can pass additional options to the mkinitrd command to use a specific kernel. By default it will build an initrd for all the kernel versions in /boot. This is sufficient for the servers in my environment.

4) Update the virtual machine to use the BusLogic HBA

Use the VirtualCenter Client
- Shutdown the VM
- Right click on the VM and select Edit Settings
- Select SCSI Controller 0 and click the Change Type button
- Select the BusLogic radio button and click OK
- Click OK to exit the Virtual Machine Properties
- Power on the VM
- Answer the "change the adapter type for scsi0:0 disk" by selecting the Yes radio button and clicking OK

2 comments:

[n0$pam]kutti [at] gmx [dot] net said...

Thad,
Nice Howto. For SLES users quite useful. Do you have a similar tutorial for SuSE 7.3 Users? I have to add the BusLogic module to my system, and I can't remember how to do so. My yast has no option to add hardware like scsi-controllers. Adding hardware "by hand" is years ago... :( only remembering mk_initrd and somthing like "alias BusLogic" in /etc/modules.conf....

Anonymous said...

Thanks,
works for SLES8 2.4.21-278-default too

INITRD_MODULES="cdrom scsi_mod ide-cd BusLogic reiserfs"