This is a pratical procedure for DDN SFA12K storage system, here is the steps I used for its 2.3.0.1 firmware upgrade, also tused it for 2.3.1.5, still useful. Post it for sharing, could be a good reference for someone.

Note: to be safe, please always confirm with your Vendor support if it's ok for your product.

In the procedure below:

C0/CTRL0 stands for Controller 0
C1/CTRL0 stands for Controller 1
VM stands for the VM servers running in the SFA12K.

Prep Work

Login to each VM

NOTE: You should be able to connect to the VMs using the following.

  # ssh -p 5555 <C0_IP> (C0-VM-0)
  # ssh -p 5556 <C0_IP> (C0-VM-1) 
...

Or, direct connect to VM depends on your VM/network configuration

#ssh <VM>

1. Gracefully bring down applications/the filesystem managed by the stacks (VMs)

umount <fs mount mount>

2. Gracefully shutdown all the VMs/OSes.

    - ssh to each of the VMs and run "shutdown -h now"

3. Shut down the stacks from the controller (to be sure they are really shutdown):

   - Log in to ONE controller in the couplet as 'user' (password user) to start CLUI
   - View existing stacks "app show stack"
   - Shut down the stack with "app shutdown stack X" where X is a stack number.
Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771
   - For each stack shutdown verify it is down "app show stack X all" where X is a stack number. Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771

4. Disable auto start for the VMs (application stacks)

   - Log in to ONE controller in the couplet as 'user' (password user) to start CLUI
   - View existing stacks "app show stack"
   - Disable auto start  with "app set stack X auto_start false" where X is a stack number.
Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771
   - For each stack changed verify it is set to NOT auto start "app show stack X all" where X is a stack number. Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771

5. Disable verifies from CLUI

$set subsystem verify_policy false

6. Disable caching CLUI

 $set pool * write_back_caching false

7. Pause any remaining jobs

    $ show job (view existing jobs)
    $ pause job X (where X is the job id)

 

Upgrade SFAOS controller firmware

1. SCP the firmware file to each controller

    # "scp ddn-flash-ALTAV-2.3.0.1_22555-opt.ddn.tgz firmware@<ctrl-0_IP>:" 
    # "scp ddn-flash-ALTAV-2.3.0.1_22555-opt.ddn.tgz firmware@<ctrl-1_IP>:"

Note: (password: Firmware; and you need the ":" at the end)

2. Verify SFA is healthy for upgrade from one controller/CLUI

    $ "show controller" (verify dual controller & determine which controller is primary)
    $ "show pool" (verify pools are healthy)
    $ "show vd" (verify virtual disks are healthy and that current ownership matches preferred ownership)
$ "show pd" (verify there are no partial ready drives)

3. Log into the secondary controller and upgrade it

    $ "update controller local file=ddn-flash-ALTAV-2.3.0.1_22555-opt.ddn.tgz"
    *** Wait for controller to reboot + a few minutes ***

4. From the non-upgraded controller verify the SFA is healthy for upgrading the second controller

    $ "show controller" (Verify other controller is in MIR FIRMWARE MISMATCH STATE)
    $ "show pool" (verify pools are healthy, FAULT status is expected for it's in single controller mode)
    $ "show vd" (verify virtual disks are healthy and that this controller owns all of the pools/VDs)
$ "show pd" (verify there are no partial ready drives)

5. Update the second (primary) controller's firmware

    $ "update controller local file=ddn-flash-ALTAV-2.3.0.1_22555-opt.ddn.tgz"
    *** Wait for controller to reboot + a few minutes ***                

6. Verify SFA is healthy post upgrade

    $ "show controller" (verify dual controller & determine which controller is primary)
    $ "show pool" (verify pools are healthy,FAULT status is expected for it's in single controller mode)
    $ "show vd" (verify virtual disks are healthy and that current ownership matches preferred ownership - this make take a few minutes)
$ "show pd" (verify there are no partial ready drives)

Post Work

1. Enable caching CLUI

$set pool * write_back_caching true

2. Start the stacks from the controller:

   - Log in to ONE controller in the couplet as 'user' (password user) to start CLUI
   - View existing stacks "app show stack"
   - Shut down the stack with "app start stack X" where X is a stack number. Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771
- For each stack shutdown verify it is running "app show stack X all" where X is a stack number. Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771

3. Resume any remaining jobs

    $ show job (view existing jobs)
    $ resume job X (where X is the job id)

4. Enable verifies from CLUI

$set subsystem verify_policy true

5. Enable auto start for the VMs (application stacks)

   - Log in to ONE controller in the couplet as 'user' (password user) to start CLUI
   - View existing stacks "app show stack"
   - Enable auto start  with "app set stack X auto_start true" where X is a stack number. Most likely 0, 1, 2, 3, 32768, 32769, 32770, 3277
   - For each stack changed verify it is set to auto start "app show stack X all" where X is a stack number. Most likely 0, 1, 2, 3, 32768, 32769, 32770, 32771                                                                                                                                     

6. Verify VMs are functioning

7. Check if the block driver needs to be upgraded

This is for VMs

For more detail, please see DDN user guide