Mercury gets a HBA upgradeDale Ghent | August 3, 2008
mercury.elemental.org is the server which hosts my $HOME and this website. It’s my Solaris 10 play-box, and I guess you can say that maintaining it is something of a hobby.
Its hardware is a quad core Xeon-equipped Dell PowerEdge 860, a small 1u server. Its pair of internal drives are Seagate SATA2, and were connected to the on-board Intel ICH7-based SATA controller. But there was something fishy about this in that the Solaris ahci SATA driver never attached to it and instead the drives ran in IDE mode. Despite my best efforts, I couldn’t change this. I eventually found out the reason – Dell crippled the SATA controller in the system BIOS to allow only IDE mode!
So this server was sold with “SATA drives”, which would imply a fully functioning SATA controller to drive them… but not quite. IDE mode means there were no benefits of SATA NCA and other niceties.
To fix this, I got a LSI SAS3041E-R controller – a 4x PCIe card that uses the LSISAS1064E chipset and offers 4 SATA ports. In Solaris land, this card would be driven by the mpt driver, a proven driver as the LSI SAS 1064 and 1068 chipsets are used to drive the on-board hard drives in pretty much every current Sun x86 and Niagara-based SPARC systems.
I installed this card in the single 8x PCIe slot in the PE860, and ran a 24″ SATA cable from it to HDD1, and used the existing Dell cable that connected the on-board controller to HDD1 to connect HDD0 to the card. After some fiddling in /boot/solaris/bootenv.rc to tell the kernel the new device path to its boot drive, the mpt driver attached and I was good to go.
I kicked off a SVM mirror resync as a basic test of sequential IO, and I hit 75MB/s reading from one drive and writing to the other. Not bad. A zpool scrub of my mirrored ZFS pool of 66.5GB of data (pool is 444GB in size) took just over an hour.
So if you’re thinking about a 4 or 8 port SAS/SATA card, consider the LSI SAS3041 or SAS3080/3081 cards, respectively. Both come in PCI-X and PCIe flavors and are supported by Solaris (and OpenSolaris) just fine.
pci bus 0x0001 cardnum 0x00 function 0x00: vendor 0x1000 device 0x0056
LSI Logic / Symbios Logic SAS1064ET PCI-Express Fusion-MPT SAS
Kernel boot messages:
scsi: /pci@0,0/pci8086,2779@1/pci1000,3090@0 (mpt0): Rev. 8 LSI, Inc. 1064E found.
scsi: /pci@0,0/pci8086,2779@1/pci1000,3090@0 (mpt0): mpt0 supports power management.
pcplusmp: pciex1000,56 (mpt) instance 0 vector 0x38 ioapic 0xff intin 0xff is bound to cpu2
scsi: /pci@0,0/pci8086,2779@1/pci1000,3090@0 (mpt0): mpt0 Firmware version v18.104.22.168 (IR)
scsi: /pci@0,0/pci8086,2779@1/pci1000,3090@0 (mpt0): mpt0: IOC Operational.
scsi: /pci@0,0/pci8086,2779@1/pci1000,3090@0 (mpt0): mpt0: Initiator WWNs: 0x500605b0000fa840-0x500605b0000fa843
pcie_pci: PCIE-device: pci1000,3090@0, mpt0
genunix: mpt0 is /pci@0,0/pci8086,2779@1/pci1000,3090@0
scsi: sd4 at mpt0: target 4 lun 0
genunix: sd4 is /pci@0,0/pci8086,2779@1/pci1000,3090@0/sd@4,0
genunix: /pci@0,0/pci8086,2779@1/pci1000,3090@0/sd@4,0 (sd4) online
scsi: sd3 at mpt0: target 5 lun 0
genunix: sd3 is /pci@0,0/pci8086,2779@1/pci1000,3090@0/sd@5,0
genunix: /pci@0,0/pci8086,2779@1/pci1000,3090@0/sd@5,0 (sd3) online