Re: MegaCLI port is ports-only -- how would you deploy it?

From: Doug Ambrisko <ambrisko_at_ambrisko.com>
Date: Mon, 08 Aug 2022 20:45:38 UTC
On Mon, Aug 08, 2022 at 04:10:10PM -0400, Dan Mahoney wrote:
| 
| 
| > On Aug 8, 2022, at 15:57, Doug Ambrisko <ambrisko@ambrisko.com> wrote:
| > 
| > On Thu, Aug 04, 2022 at 05:22:29PM +0300, Ruslan Makhmatkhanov wrote:
| > |    03.08.2022, 02:07, "Dan Mahoney" <freebsd@gushi.org>:
| > |      Hey there all,
| > |      At the dayjob we have a fleet of Dell Poweredge servers that can use
| > |      either mptsas or mrsas -- if you use mptsas, you use mptutil (in
| > |      base) to check the state of the card.
| > |      If you use mrsas, you need megacli, which is only in ports, and the
| > |      port hasn't translated to pkg probably because of license
| > |      restrictions. ( _LICENSE_RESTRICTED = delete-package
| > |      delete-distfiles), but the license listed is just "megacli".
| > |      * We want to deploy a cron job to periodically check the raid status
| > |      (we're writing a wrapper, also having it check mfiutil, zpool, etc).
| > |      * We do not want to install and manage a whole ports tree on every
| > |      machine in our fleet, just to install a raid utlity.
| > |      Option A:
| > |      Make a local package somehow.
| > |      The port just downloads a static binary, there's nothing to build
| > |      here, but we want to do this the "right" way. Is there some way to
| > |      have pkg deploy a single local package for this that will, for
| > |      example, report the right package ownership, without moving every
| > |      other package to our poudriere install (we're just using base
| > |      packages, we keep poudriere around for testing in case we need to
| > |      hot-patch something).
| > |      For what it's worth, we use puppet for config management, so pushing
| > |      out the static binary is not the worst answer, but it also feels
| > |      "dirty".
| > |      Option B:
| > |      Figure out how to fix the license. I have no idea what this would
| > |      involve.
| > |      Option C:
| > |      Also, apparently MegaCLI is no longer maintained (replaced by
| > |      StorCLI), but there's no port for StorCLI, and...there are multiple
| > |      raid-card specific versions? Jeez.
| > |      Feels even more dirty.
| > |      [1]https://support.siliconmechanics.com/portal/en/kb/articles/storcl
| > |      i-for-freebsd-and-other-operating-systems
| > |      Ideas welcome?
| > |      -Dan Mahoney
| > 
| > Although the path to get to StorCli goes through various cards the
| > latest greatest seem to work on all earlier cards.  It works on
| > HBAs and not just RAID cards.  At work I did a Linux/FreeBSD
| > POC for FW management and found the FreeBSD version could flash the HBA
| > and drive FW.  I've moved to StorCli from MegaCli.  I would suggest
| > we drop the MegaCli port and move to StorCli.
| > 
| > I have code to make mfiutil into mrsasutil and added the MFI ioctl
| > handler to mrsas.  I'm not sure how much value that has.  I don't
| > deal with supporting FreeBSD and RAID much anymore.  If interested
| > I could send patches.
| 
| This feels like it should be in base, regardless.  Just *something* to 
| query the raid status and health, even if it doesn't ring all the bells 
| of StorCLI.
| 
| Right now, you can do this with the older mfi, but not the newer mrsas, 
| which performs better in some cases, which leaves an admin with a 
| dilemma: better reliability, or better manageability.
| 
| I also feel like this could be added to a minor release (i.e. a 
| 12.3 --> 12.4 or a 13.0 --> 13.1), but obviously that decision is above me.

This is based of -current.  I haven't tested it recently:
	https://people.freebsd.org/~ambrisko/git.mrsas_support_in_mfiutil.patch

Please give it a try.  You will need a new kernel built and booted to
provide the needed ioctl support.  It should be close to committable.

Thanks,

Doug A.