NetApp
ONTAP Aggregate Destroy and Recreate Runbook
Destructive Change Warning
Deleting an aggregate is destructive. NetApp documents that storage aggregate delete deletes a storage aggregate and fails if volumes are present. It also notes that if an object store is attached, aggregate deletion deletes objects in the object store: storage aggregate delete.
Use this runbook only after all data has been migrated, protected, or explicitly approved for deletion.
Prechecks
system health status show
storage aggregate show -aggregate aggr_old01
volume show -aggregate aggr_old01
storage aggregate object-store show -aggregate aggr_old01
storage disk show -aggregate aggr_old01
snapmirror show
Stop if any user, root, DP, clone, or system volume still depends on the aggregate.
CLI Destroy Process
Confirm no volumes remain:
volume show -aggregate aggr_old01
Offline the aggregate if required by your procedure:
storage aggregate offline -aggregate aggr_old01
Delete:
storage aggregate delete -aggregate aggr_old01
Verify:
storage aggregate show
storage disk show -container-type spare
CLI Recreate Process
Create the replacement aggregate according to platform standards. In a lab simulator, this might be a small RAID-DP aggregate. In production, follow platform, disk class, RAID size, encryption, and ADP standards.
storage aggregate create \
-aggregate aggr_new01 \
-node node01 \
-diskcount 10 \
-raidtype raid_dp
Validate:
storage aggregate show -aggregate aggr_new01
storage aggregate show-status -aggregate aggr_new01
REST API Process
Collect aggregate evidence before destruction:
curl -k -u admin:'<password>' \
"https://cluster.example.com/api/storage/aggregates?name=aggr_old01&fields=uuid,name,node,space,state,cloud_storage"
curl -k -u admin:'<password>' \
"https://cluster.example.com/api/storage/volumes?aggregates.name=aggr_old01&fields=name,svm.name,type,state"
Delete only after the volume query returns no dependent volumes and the change is approved:
curl -k -u admin:'<password>' \
-X DELETE \
"https://cluster.example.com/api/storage/aggregates/<aggregate_uuid>"
Create replacement aggregate where supported by your ONTAP release:
curl -k -u admin:'<password>' \
-X POST \
"https://cluster.example.com/api/storage/aggregates" \
-H "Content-Type: application/json" \
-d '{
"name": "aggr_new01",
"node": { "name": "node01" },
"block_storage": { "primary": { "disk_count": 10, "raid_type": "raid_dp" } }
}'
Best Practices
- Require a second-person review for aggregate deletion.
- Save
volume show -aggregate <name>output before deletion. - Check FabricPool/object-store attachment explicitly.
- Do not reuse names in the same change if it makes audit evidence ambiguous.
- Validate spare disk availability and ownership before recreate.
Backout
After an aggregate is deleted, backout is restore or recreate, not undo. The real rollback is the migration, backup, or replication copy you validated before deletion.