Previously I wrote an article on How to install and run Openfiler on a USB key. I thought that everything was working fine but eventually found that NFS and CIFS performance was too slow. Upon reading a few forums and stumbling across this thread in particular, the reason was down to Openfiler requiring an update.
I have since tried to update the installation by running conary updateall at the CLI. Unfortunately, this installs an updated kernel (2.6.29.6-0.24.smp.gcc3.4.x86_64 (SMP)) and also a new ramdisk which makes all the hard work from the previous post defunct. This article shows you how to perform the update and then make a new initrd-usb-update.img to work with the new kernel.
So assuming you’ve made a successful USB key using the previous article, continue with the following to update your Openfiler installation and also make the updated Openfiler installation USB key bootable.
Let’s first update Openfiler.
conary updateall
This part is more or less very much similar to the steps in the previous post, there are some minor additions that we need to make, but for completeness I’ve included all the steps here.
linux rescue
mkdir /mnt/sysimage
mount /dev/sda2 /mnt/sysimage
Note: your / partition may be /dev/sda3 instead, depending on how you setup your partitioning during the installation of Openfiler.
mount /dev/sda1 /mnt/sysimage
Note: your / partition may be /dev/sda1 instead, depending on how you setup your partitioning during the installation of Openfiler.
chroot /mnt/sysimage
cp /boot/initrd-1 /tmp/initrd.gz
Note1: now’s a good time to press TAB, there will now be two kernels, use 2.6.29.6-0.24.smp.gcc3.4.x86_64 as this is the updated kernel that was installed during the update.
gunzip /tmp/initrd.gz
mkdir /tmp/b
We are using /tmp/b because /tmp/a already exists as the temporary working directory from the previous article.
cd /tmp/b
cpio –i < /tmp/initrd
nano init
echo “Starting Openfiler on USB”
echo “Loading scsi_mod.ko module”
insmod /lib/scsi_mod.ko
echo “Starting crc-t10dif.ko module”
insmod /lib/crc-t10dif.ko
echo “Loading sd_mod.ko module”
insmod /lib/sd_mod.ko
echo “Loading sr_mod.ko module”
insmod /lib/sr_mod.ko
echo “Loading ehci-hcd.ko module”
insmod /lib/ehci-hcd.ko
echo “Loading uhci-hcd.ko module”
insmod /lib/uhci-hcd.ko
echo “Loading ohci-hcd.ko module”
insmod /lib/ohci-hcd.ko
sleep 5
echo “Loading usb-storage.ko module”
insmod /lib/usb-storage.ko
sleep 5
cd /lib/modules/2/kernel/drivers
Note2: just press tab to fill in this bit, there will now be two kernels, use 2.6.29.6-0.24.smp.gcc3.4.x86_64 as this is the updated kernel that was installed during the update.
cp scsi/scsi_mod.ko /tmp/b/lib
cp scsi/sr_mod.ko /tmp/b/lib
cp scsi/sd_mod.ko /tmp/b/lib
cp usb/host/ehci-hcd.ko /tmp/b/lib
cp usb/host/uhci-hcd.ko /tmp/b/lib
cp usb/host/ohci-hcd.ko /tmp/b/lib
cp usb/storage/usb-storage.ko /tmp/b/lib
cp /lib/modules/2.6.29.6-0.24.smp.gcc3.4.x86_64/kernel/lib/crc-t10dif.ko /tmp/b/lib
cd /tmp/b
find . | cpio –c –o | gzip -9 > /boot/initrd-usb-update.img
nano /boot/grub/menu.1st
initrd /initrd-usb-update.img
For better CIFS performance turn off your network adapter flow control. I can achieve a sustained 60 mb/s transfer between my Macbook and Openfiler once flow control is turned off. I was only achieving around 30 mb/s previously.
First understand what flow control is before performing the follow actions, the following articles provide good cases for either enabling or disabling flow control and auto-negotiation for flow control.
http://www.telecom.otago.ac.nz/tele301/student_html/ethernet-autonegotiation-flow-control.html – not to be confused with auto-negotiation of flow control.
http://virtualthreads.blogspot.com/2006/02/beware-ethernet-flow-control.html
Since this is my lab I’m going to disable flow control completely.
To do this on ESXi hosts follow these instructions or use VMware KB 1013413.
esxcfg-nics –l
ethtool –show-pause vmnic0
ethtool –pause tx off rx off
ethtool –pause autoneg off

/sbin/auto-backup.sh
The commands added to the /etc/rc.local file will be executed at startup, persisting the configuration changes across reboots. As they are executed in Step 6, no reboot is required for them to take effect.