For RHEL and SLES, HP supplies a utility for configuring and setting up the msa1500/msa1000, delivered as an RPM. While it may be possible to convert this RPM using alien and run it (it seemed to run, I didn't risk trying to use it) the software installs a big managability daemon/stack that isn't really necessary for just setting things up. They also provide Debian packages, but upon examination they are just alien'd rpms with some by hand breakage. Fortunately there is a serial command-line interface that can be used from any OS. I read the "msa1500/msa1000 Command Line Interface User Guide" and figured out how to do the stuff I needed, maybe this will be of some use to others. Here is what I did:
Once you are connected there are a few useful command you can use to gather info
help - get the list of command verbs and nouns and specific info about commands
show version - show firmware info. Here are my instructions for how to update the msa1000/1500 firmware using the serial console, so you can do it on OSes they don't provide tools for (like Debian, the BSDs, etc).
show this_controller and show other_controller - show info about the controllers including firmware versions and wwpn's
show disks - show mechs including the the box/bus thery are on, size, speed, and what LUNs they are assigned to
show units - show LUNs and all their config info
show connections - show all the other hosts that the msa can see, and their names if you've assigned them
OK you have a bunch of disks, probably across multiple SCSI busses, and multiple fiber channel connections. You have to figure out:
BUS
1 2 3 4
1: 6, 0, 0, 0
L 2: 0, 6, 0, 0
U 3: 0, 0, 6, 0
N 4: 0, 0, 0, 6
5: 1, 1, 1, 1
In the serial console I ran:
add unit 1 data="DISK101-DISK106" raid_level=1 add unit 2 data="DISK108-DISK113" raid_level=1 add unit 3 data="DISK201-DISK206" raid_level=1 add unit 4 data="DISK208-DISK213" raid_level=1 add unit 5 data="DISK107 DISK114 DISK207 DISK214" raid_level=1For RAID0+1 you just specify "raid_level=1" and if the array has the right number of disks it does the right thing. In cases where you want to control how the redundancy and striping are done across the disk I don't know if the specified order is the way to do that or if it always does the same thing. (if anyone tests this and determines the result, let me know)
You need to add a connection for each host. On my system this looked like:
add connection sneezy wwpn=500110a0-001a13c0 profile=Linux add connection grumpy wwpn=500110a0-0019ef78 profile=Linux add connection happy wwpn=500110a0-001a0a24 profile=Linux add connection dopey wwpn=50060b00-006a7e38 profile=Linux add connection sleepy wwpn=50060b00-006a8e50 profile=Linux add connection doc wwpn=10000000-c95686fa profile=Linux
You can use Access Control Lists to limit what hosts can access which LUNs. Even if you don't think you need this for security reasons, it's a good idea for safety reasons so you don't accidentially use the wrong disk and overwrite data. On my setup it looked like this:
add acl connection=sneezy unit=1 add acl connection=grumpy unit=2 add acl connection=happy unit=3 add acl connection=dopey unit=4 add acl connection=sleepy unit=5
My msa1000 has two controllers and I am running the active/active firmware. I decided to make different LUNs prefer different controllers, I did:
set preferred_path this_controller 1 2 3 set preferred_path other_controller 4 5
On my setup I have a SAN switch in the blade chassis I am using that is an HP rebranded Brocade switch. I setup "zones" to connect each host to the msa. Here's a short list of what I did: