HP Smart Array RAID management on ESXi 5 – hpacucli

I’ve got a nice ESXi 5 whitebox with a HP P400 RAID controller wich I would like to configure and monitor. But, HP won’t let you install there software if the Hardware Vendor ID is not from HP. You’ll get errors like this when try to install:

/tmp # esxcli software vib install -f -v /tmp/hpacucli-9.10-22.0.vib
[NoMatchError]
BIOS vendor HP is required but host BIOS vendor is To Be Filled By O.E.M.
BIOS vendor Hewlett-Packard Company is required but host BIOS vendor is To Be Filled By O.E.M.
BIOS vendor Hewlett-Packard is required but host BIOS vendor is To Be Filled By O.E.M.
BIOS vendor hp is required but host BIOS vendor is To Be Filled By O.E.M.
id = (Updated) ESXi-5.0.0-20120302001-standard
Please refer to the log file for more details.

There are tips on the internet where you can download the software, un-7Zip the .vib, modify the descriptor.xml by removing any hardware reference to HP, recreate the .deb package, move it to the ESXi server, renaming it to .vib and voilà, a lot of work later you installed the tool.

Or just get my pre-modified package and install 🙂

Download, scp to your server, ssh into your server and run:

esxcli software vib install -f -v /tmp/hpacucli-9.10-22.0-esxi_mod.vib

Mac OSX 10.7 on ESXi and ‘root device uuid is xxx.xxx’ error

I moved my (fully working) OSX 10.7.4 installation from my old ESXi 5 white-box (with an Intel i5 720) to a new one (with an Intel i7 3770). And guess what: OSX didn’t boot.

Just some lines and this last output:

Root device UUID is xxxx.xxx.xx.xxxx

Crap. Google just came back with two (2 !) search results, neither of them giving me a solution. But wait, I’ve found it anyway:

– edit the VM settings with the VM powered off
– click on the Options tab
– click on the CPUID Mask menu item
– click Advanced
– scroll to the bottom of the window on the Virtual Machine Default tab
– under “Level 1” set “eax” to 0000:0000:0000:0001:0000:0110:1010:0101.

After clicking OK and OK, boot up the VM and voilà, your OSX installation is running again!

Yahoo!

VMware ESXi 5 and LSI1068E controller crap

Had lots of problems using my IBM BR10i and Dell SAS 5I/r controllers; performance under ESXi 5 was terrible.
Just 3.5 MB/s on write. Under Linux, write performance was around 110-120 MB/s. So WTF ?

I thought that all this was needed (disable Interrupt Routing):

# esxcli system settings kernel list -o iovDisableIR
# esxcfg-advcfg -k TRUE iovDisableIR (just the above command wasn't enough)
# auto-backup.sh
# auto-backup.sh (yes, twice!)
# reboot

Check:

# esxcfg-advcfg -j iovDisableIR
# esxcli system settings kernel list -o iovDisableIR


But in the end, this wasn’t it. Seems that LSI1068E based controllers disable all disk caching built into the drives by default.

If the server has battery backup you can enable basic drive caching on the Logical Volumes without risk (or, without a battery, WITH risk).

Goto www.LSI.com (The controller is made by LSI) and download and install MegaRAID Storage Manager. In short, install the VIB on your ESXi machine, the Manager on a Windows or Linux machine, sync their host names and enable all ports on the ESXi firewall for incoming TCP traffic.

Highlight the Virtual Raid Volume, right click, properties. Enable Cache and save. You have to do this on every logical raid volume.

Your performance difference is incredible.

And I just lost a day of looking for the solution. Crap.

Publish the Daily Garfield on Facebook shell script

For years now, I’m posting the daily Garfield and Dilbert comic on my Facebook page.

This is the (clumsy) script that does that:

#!/bin/sh
URLBASE="http://comics.kamens.brookline.ma.us/cgi-bin/comics?which=specified&Garfield=include&specified=Garfield&numdays=1&width=&height=&noheaders=on&reload=reload"
wget -O page.html -erobots=off ${URLBASE}/
IMGURL=`grep "assets.amuniversal.com" page.html | awk -F'"' '{print $8}' | head -1`
wget -O garfield.gif ${IMGURL}
./mail.pl garfield.gif your-mobile-FB-emailaddress "Daily Garfield"
rm -rf page.html && rm -rf garfield.gif

Since I don’t want to use Mutt or sendmail, I’m using perl and Mail::Sender:

Mail.pl:

#!/usr/bin/perl -w
# Usage: ./mail.pl attachment to-address subject
my $file = $ARGV[0];
my $tolist = $ARGV[1];
my $subject = $ARGV[2];
my $datum= `date "+%d-%m-%Y"`; # optional
use Mail::Sender;
$sender = new Mail::Sender;if ($sender->MailFile({ 
smtp => 'localhost', 
from => 'fromuser@domain.com', 
to => "$tolist", 
subject => "$subject - $datum", 
msg => " ", 
file => "$file", 
}) < 0) { 
die "$Mail::Sender::Error\n"; 
} 
print "Mail sent OK.\n";

As always, YMMV.