Home / Reference / ONTAP upgrade runbook

ONTAP upgrade runbook

Upgrading ONTAP is a rolling operation: the cluster upgrades one node at a time while each node's HA partner serves its data. If your HA pairs are healthy, storage clients keep working through the whole event. This runbook walks the full cycle — pre-checks, image staging, validation, the update itself, post-checks, and the rollback path — with the commands you actually type. It targets ONTAP 9.x (the cluster image command family).

Rolling ONTAP upgrade steps

Phase 0 — Plan the upgrade

system configuration backup create -node node1 -backup-name pre-upgrade-9.15.1

# confirm the backup exists
system configuration backup show -backup-name pre-upgrade-9.15.1

Phase 1 — Pre-flight checks

Run these on the cluster before staging anything. Fix anything red — ONTAP's own validation will refuse to start (or worse, an upgrade during a degraded state turns a rolling upgrade into an outage).

# Cluster is whole and quorate: every node listed, nothing 'false' for quorum/eligibility
cluster show

# Exact current version on every node
version -v

# HA pairs fully healthy — 'Partial' takeover state blocks a clean upgrade
storage failover show
storage failover show-takeover -fields node,is-takeover-possible,reason

# No failed disks or reconstructing aggregates (wait for reconstruction to finish)
storage disk show -state failed
storage aggregate show -state degraded

# No active health alerts
system health alert show

# Hardware sanity per node (this is the classic full sweep)
system node run -node node1 sysconfig -a

# Enough free space on the root aggregate for the image (~2–4 GB per node)
df -h

# Time is sane and synced — NTP drift breaks certificate validation and logs
cluster time-service ntp server show

Also worth checking before you commit: network interface show -role data (all LIFs up and on their home ports — a LIF that fails failover will take its SVM's clients down during a node reboot), snapmirror show (note relationships that are mid-transfer; they'll resume, but schedule heavy transfers away from the window), and system node run -node * uptime (you want nodes that have been stable, not one that's been crash-looping).

Phase 2 — Stage & validate the image

The cluster image family manages upgrade packages cluster-wide. You download the package once, validate it, and ONTAP stages it on the nodes when the update starts.

# Copy the package into the cluster from an HTTP/FTP server or a local path
cluster image get -package http://192.0.2.10/ontap/9.15.1_image.tgz

# See what's staged and on which nodes
cluster image show -fields node,package,version,state,is-current

# Validate BEFORE updating — this checks prerequisites and reports issues
cluster image validate -node node1 -package 9.15.1_image.tgz

Phase 3 — Rolling update

With everything green, start the update. The canonical one-node-at-a-time form:

# Update a single node first as a canary, then the rest
cluster image update -node node1 -package 9.15.1_image.tgz

# Monitor progress — watch the phase column
cluster image upgrade-progress

# Once node1 is green, roll the remaining nodes
cluster image update -nodes node2,node3,node4 -package 9.15.1_image.tgz

What actually happens per node (you'll see these phases in cluster image upgrade-progress):

  1. Prerequisites / validation — ONTAP re-checks the node before committing.
  2. Automatic takeover — the node being upgraded triggers HA takeover; its partner takes over its storage and LIFs. Data keeps flowing on the partner. (This is why HA health was a Phase 1 gate.)
  3. Image install + reboot — the node writes the new image and reboots. It boots into a paused state, rejoins the cluster, and waits.
  4. Giveback — the node gives its aggregates and LIFs back from the partner and resumes serving.
  5. Next node — ONTAP repeats the cycle. Each node's cycle is typically 20–40 minutes for the reboot portion alone; budget 1–2 hours for a 2-node cluster, more for larger ones.

Tips for the window:

Phase 4 — Post-upgrade verification

# Every node on the new release, no stragglers
cluster image show -fields node,version,is-current
version -v

# Cluster whole, HA healthy again
cluster show
storage failover show

# All LIFs back on home ports, data LIFs up
network interface show -role data
network interface show -fields home-node,current-node,home-port,current-port,is-home

# No new alerts, no degraded aggregates, no failed disks
system health alert show
storage aggregate show -state degraded
storage disk show -state failed

# SP/BMC firmware landed with the update
system service-processor image show

# Services actually answer: spot-check NFS/CIFS/S3 from a client
vserver services nfs show
vserver cifs show
vserver object-store-server show

Then the human checks: mount an NFS export and read/write, open a file share, run an S3 list-objects, confirm SnapMirror transfers are completing (snapmirror show -fields state,last-transfer-end-time), and look at a fresh statistics show sample to confirm traffic looks normal. Only after that, delete the staged-but-unused old package if you want the space back — but keep it until the new version has run for at least a few days.

Phase 5 — Rollback & emergency options

There are two different "rollback" situations, and they need different commands:

During the update (automatic): if a node can't boot the new image, ONTAP automatically reverts it to the previous image within the revert window and reboots it — you mostly need to not interfere, just watch cluster image upgrade-progress and open a case if the node stays down.

Deliberate downgrade (after the fact): you treat the previous version as a new target — stage it, validate, update. The previous image is usually still staged on the nodes from before the upgrade:

# Confirm the old image is still staged
cluster image show -fields node,package,version,state

# If not, re-download it, then validate and update as usual
cluster image get -package http://192.0.2.10/ontap/9.14.1_image.tgz
cluster image validate -node node1 -package 9.14.1_image.tgz
cluster image update -nodes node1,node2 -package 9.14.1_image.tgz
cluster image upgrade-progress

Gotchas that bite

Verify before you run This runbook is original community guidance for ONTAP 9.x. Command names and flows follow the ONTAP 9 cluster image upgrade documentation; always confirm against your exact release's Upgrade Guide and man pages, and run Upgrade Advisor before planning your window.