Scale-Up X200 - Add HBA Card and JBOD

Due to supply chain constraints, some X200 4U90 Twin Servers were shipped without HBA cards installed. In addition, with the release of ActiveScale 7.0 software, new X200 systems may be shipped and initially installed without the HBA card. The HBA card willbe installed when a capacity scale out occurs post-installation.

Important Information - X200 HBA Cards

WARNING: You must check that the customer’s storage policy allows 2 nodes in the same site to be down at the same time. If not, the procedure should be done on X200 Twin member at a time (first top and then bottom node, or vice versa). If the customer storage policy allows 2 nodes to be down at the site at the same time, you should execute this procedure for each of the X200 Twin Server nodes (top node and bottom node) at the same time. Doing this procedure for nodes at the same time will allow you to simultaneously rack and connect the JBOD and 4U90 Twin Server.

Step 1 - Migrate Hardware Type

Important Information

If you are adding the HBA card to a system that is running ActiveScale 7.0 software and above, you do not need to do this step. Go to Step 2 - Add HBA Card below.

  1. Stop the mona service on both members of the twin server. On both nodes, execute the following:

     

    Copy
    sudo service mona stop

     

  2. Make sure systemscan is no longer running on both nodes of the twin server. Run following on both nodes:

     

    Copy
    sudo ps faux | grep systemscan

     

    Example of systemscan still running:

    marvin 15506 0.0 0.0 14224 988 pts/0 S+ 11:34 0:00 _ grep --color=auto system

    mona 13836 0.0 0.0 4504 772 ? Ss 11:28 0:00 /bin/sh -c sudo -s -- <<"EC_EOF" /opt/ampli/apps/marvinbase/tools/systemscan.py --update-existing --prerequisites EC_EOF

    root 13855 10.0 0.0 431396 59160 ? Rl 11:28 0:32 \_ /opt/ampli/apps/marvinbase/venv/bin/python /opt/ampli/apps/marvinbase/tools/systemscan.py --update-existing --prerequisites

    Example of systemscan no longer running:

    marvin 20291 0.0 0.0 14224 964 pts/0 S+ 11:35 0:00

  3. Start sherpa on both nodes and update the node hardwaretype to X200 with SAS HBA (SMC_4U90_DE1CR90). Run following code on each node:

     

    Copy
    %cpaste
    from marvin_lib.machine import get_machine_hwtype, set_machine_hwtype, get_machine_guid
    from marvin_lib.system.utils import get_fru
    hwtype = 'SMC_4U90_DE1CR90'
    old_hwtype = get_machine_hwtype()
    m_guid = get_machine_guid()
    m = cli.marvin.machine.get(m_guid)
    if old_hwtype != hwtype or m['hardwaretype'] != hwtype:
        set_machine_hwtype(hwtype)
        m = cli.marvin.machine.update(m_guid, hardwaretype=hwtype)
        print "Machine %s (%s) hardwaretype was updated from %s to %s" % (m['name'], m['guid'], old_hwtype, m['hardwaretype'])
    else:
        print "Machine %s (%s) hardwaretype was already the correct type: %s" % (m['name'], m['guid'], old_hwtype)
    diskgroup_update = []
    diskgroup_status_reset = []
    machine_serial = get_fru(read_type='machine-serial', hwtype=hwtype)
    for diskgroup in m['diskgroup']:
      new_diskgroup_serial = machine_serial + '_' + diskgroup['group_id']
      if diskgroup['serial'] != new_diskgroup_serial:
        print "Change machine %s (%s) diskgroup serial %s (%s) to %s" % (m['name'], m['guid'], diskgroup['serial'], diskgroup['guid'], new_diskgroup_serial)
        diskgroup_update.append({"guid": diskgroup['guid'], "status": "ONLINE", "serial": new_diskgroup_serial})
        diskgroup_status_reset.append({"guid": diskgroup['guid'], "status": diskgroup['status']})
      else:
        print "Machine %s (%s) diskgroup %s (%s) is as expected" % (m['name'], m['guid'], diskgroup['serial'], diskgroup['guid'])
    if diskgroup_update:
        print "Updating Machine %s (%s) diskgroups" % (m['name'], m['guid'])
        m = cli.marvin.machine.update(m_guid, diskgroup=diskgroup_update)
        m = cli.marvin.machine.update(m_guid, diskgroup=diskgroup_status_reset)
        print "Update successful"
    else:
        print "No update needed for machine %s (%s) diskgroups" % (m['name'], m['guid'])
    --

 

Step 2 - Add HBA Card

  1. Shut down the system to continue with the FRU SAS HBA card installment:

    WARNING: Before shutting down the system, confirm the customer's storage policy! If there is already a node down and the customer does not support a 2-node down configuration, do not proceed with this procedure!

     

    Copy
    %cpaste
    from marvin_lib.machine import get_machine_guid
    m_guid = get_machine_guid()
    cli.marvin.machine.shutdown(m_guid)
    --

     

  2. Install the 9405 HBA card AOC-SAS3-9405W-16E) or 9500 HBA card (AOC-SAS3-9500-8E) into the 4U90 Twin Server. The 9500 HBA card is only supported in ActiveScale OS version 6.3 and higher!

    Tools Required: Phillips Screwdriver

  3. If you need to add additional drive sets to the system, refer to Scale Up X200 - Add Drives.

    Note: Adding drives requires ActiveScale OS 6.3 and above to be installed on the system.

  4. Follow the X200 Rack Installation documentation below to rack and connect a JBOD.

    JBOD Chasis Installation and User Manual.pdf

    Note: JBOD Cabling instructions are available in the Hardware Installation instructions.

  5. Power on the node. Wait for the node to completely boot up and allow up to 15 minutes for the inventoryscan to complete.

  6. Check if the SAS HBA is recognised on the system:

    sudo lspci | grep -i "Serial Attached SCSI controller" | wc -l

    If the command returns 2, the SAS HBA is not recognised. Contact Quantum support to assist with troubleshooting.

    If the command returns 3, the SAS card is recognised and the scale out is complete.

  7. Assert that the JBOD is visible in the model and that it has the expected number of disks. Open sherpa on the twin member and run following snippet. Before proceeding make sure that it says JBOD FOUND and that the number of disks is as expected:

     

    Copy
    %cpaste
    from marvin_lib.machine import get_machine_guid
    m_guid = get_machine_guid()
    m = cli.marvin.machine.get(m_guid)
    if not len(m['enclosure']) == 1:
      print "NO JBOD FOUND!"
    else:
      print "JBOD FOUND!"
      enclosure = m['enclosure'][0]
      total_disks = sum([len(dg['disk']) for dg in enclosure['diskgroup']] or [0])
      print "Number of disks in JBOD: %s" % str(total_disks)
    --

     

If JBODs with disks where attached as part of this procedure, you still have to run the actual scale up API. Make sure that all nodes have a new JBOD and that step 10 above outputs the expected state for each node. Once that’s done, apply Provision the Newly Added Disks in Scale Up X200 - Add Drives.