You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Please use 👍 to indicate interest in this enhancement.
Describe the enhancement
For some upgrades, having 50% free space in a switch’s /bootflash is not sufficient to complete the upgrade.
Specifically, when an upgrade crosses the ACI 6.0(2) 32-bit/64-bit boundary, some switches reboot twice:
The first reboot upgrades the switch to the 32-bit target version.
The second reboot upgrades the switch to the corresponding 64-bit version.
To complete both upgrades, the switch may need approximately 7 GB of free /bootflash space before the first upgrade begins. This is about 58% of the 12 GB /bootflash capacity used by ACI switches as of ACI 6.2(2).
Current behavior
The Switch Node /bootflash usage rule always uses 50% as its threshold.
Suggested behavior
The Switch Node /bootflash usage rule should dynamically calculate the required free space based on the applicable upgrade scenario.
Scenario 1: Crossing the ACI 6.0(2) 32-bit/64-bit boundary
Use the following calculation when:
The upgrade crosses the ACI 6.0(2) 32-bit/64-bit boundary.
The 32-bit target image is larger than the current image.
In Scenario 1, the second reboot uses the 32-bit target image as its base instead of the original image. Therefore, the size difference between the 32-bit target image and the current image must be included when calculating the free space required before the first reboot.
Each image size is doubled because the image must be extracted.
How to reproduce
A typical case occurs when an ACI switch has an NX-OS image stored in /bootflash.
An internal cleanup process normally deletes unnecessary files to keep /bootflash usage below 50%. However, NX-OS images—and certain other files, such as the image for the current ACI version—are excluded from cleanup because users may have placed an NX-OS image on the switch in preparation for converting it from an ACI switch to an NX-OS switch.
To reproduce the issue:
Copy an NX-OS image to the ACI switch’s /bootflash.
Ensure that /bootflash usage is just below 50%.
Upgrade the ACI switch across the 32-bit/64-bit boundary—for example, from 5.3(2f) to 6.1(6f).
Note
When the current ACI version has the fix from CSCwt53667, the NX-OS image in /bootflash is deleted upon an upgrade (See issue #375). However, it typically affects the upgrade when you cross the 32-bit/64-bit boundary where the source version is older than 6.0(2) without the fix from CSCwt53667. Also, the issue could technically happen without an NX-OS image when another file excluded from cleanup is present especially when the size of the new switch image is getting bigger.
Detailed reproduction example
Step 1: Check /bootflash before the upgrade
f2-leaf1# ls -l /bootflash/
total 5729316
-rw-rw-rw- 1 root root 441789 Aug 17 23:53 CpuUsage.Log
-rw-rw-rw- 1 root admin 2090298245 Aug 17 18:07 aci-n9000-dk9.15.3.2f.bin
-rw-r--r-- 1 root root 1800344453 Aug 17 18:23 auto-s
-rwxrwxrwx 1 root root 268 Apr 15 13:06 clean-config-log
-rw-rw-rw- 1 root root 2 Aug 17 22:28 diag_bootup
drwx------ 2 root root 49152 Aug 17 18:12 lost+found
drwxr-xr-x 4 root root 4096 Aug 19 2025 lxc
-rw-r--r-- 1 root root 18634672 Aug 18 12:00 mem_log.txt
-rw-r--r-- 1 root root 135501 Aug 18 12:00 mts_buffer_log.log
-rwx------ 1 admin admin 1956867584 Aug 18 12:03 nxos.9.3.8.bin
f2-leaf1#
f2-leaf1#
f2-leaf1# df -h /bootflash/
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 12G 5.5G 5.6G 50% /bootflash
f2-leaf1#
f2-leaf1# moquery -d sys/eqptcapacity/fspartition-bootflash
# eqptcapacity.FSPartition
name : bootflash
avail : 5775032
childAction :
dn : sys/eqptcapacity/fspartition-bootflash
memAlert : normal
modTs : never
monPolDn : uni/fabric/monfab-default
path : /bootflash
rn : fspartition-bootflash
status :
used : 5760072
The exact utilization is below the current 50% threshold:
used / (used + avail) = 0.4993515446414701
= 49.994%
Step 2: Pre-download the 32-bit target image
f2-leaf1# ls -l /bootflash/
total 8352908
-rw-rw-rw- 1 root root 441789 Aug 17 23:53 CpuUsage.Log
-rw-rw-rw- 1 root admin 2090298245 Aug 17 18:07 aci-n9000-dk9.15.3.2f.bin
-rw-rw-rw- 1 root root 2685181327 Aug 18 13:02 aci-n9000-dk9.16.1.6f.bin
-rw-r--r-- 1 root root 1800344453 Aug 17 18:23 auto-s
-rwxrwxrwx 1 root root 268 Apr 15 13:06 clean-config-log
-rw-rw-rw- 1 root root 2 Aug 17 22:28 diag_bootup
-rw-r--r-- 1 root root 56 Aug 18 13:05 disk_log.txt
-rw-rw-rw- 1 root root 7 Aug 18 13:02 imgDnldStatus
drwx------ 2 root root 49152 Aug 17 18:12 lost+found
drwxr-xr-x 4 root root 4096 Aug 19 2025 lxc
-rw-r--r-- 1 root root 20000654 Aug 18 13:00 mem_log.txt
-rw-r--r-- 1 root root 137217 Aug 18 13:00 mts_buffer_log.log
-rwx------ 1 admin admin 1956867584 Aug 18 12:03 nxos.9.3.8.bin
f2-leaf1#
f2-leaf1# df -h /bootflash/
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 12G 8.0G 3.1G 73% /bootflash
f2-leaf1#
Step 3: Trigger the upgrade and extract the 32-bit image
f2-leaf1# ls -l /bootflash/
total 10852332
-rw-rw-rw- 1 root root 1149537 Aug 18 13:20 CpuUsage.Log
-rw-rw-rw- 1 root admin 2090298245 Aug 17 18:07 aci-n9000-dk9.15.3.2f.bin
-rw-rw-rw- 1 root root 2685181327 Aug 18 13:02 aci-n9000-dk9.16.1.6f.bin
-rw-rw-rw- 1 root root 2330228111 Aug 18 13:15 aci-n9000-dk9.16.1.6f.bin-isan
-rw-r--r-- 1 root root 1800344453 Aug 17 18:23 auto-s
-rwxrwxrwx 1 root root 268 Apr 15 13:06 clean-config-log
-rw-rw-rw- 1 root root 2 Aug 17 22:28 diag_bootup
-rw-r--r-- 1 root root 56 Aug 18 13:20 disk_log.txt
-rwxr-xr-x 1 root root 228007805 Aug 11 20:20 fpga_install.bin
-rw-rw-rw- 1 root root 7 Aug 18 13:02 imgDnldStatus
drwx------ 2 root root 49152 Aug 18 13:15 lost+found
drwxr-xr-x 4 root root 4096 Aug 19 2025 lxc
-rw-r--r-- 1 root root 20457447 Aug 18 13:20 mem_log.txt
-rw-r--r-- 1 root root 138026 Aug 18 13:20 mts_buffer_log.log
-rwx------ 1 admin admin 1956867584 Aug 18 12:03 nxos.9.3.8.bin
f2-leaf1#
f2-leaf1# df -h /bootflash/
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 12G 11G 637M 95% /bootflash
Step 4: After the first reboot, the 64-bit image is downloaded automatically
f2-leaf1# ls -l /bootflash
total 9571684
-rw-rw-rw- 1 root root 1734084 Aug 18 20:33 CpuUsage.Log
-rw-rw-rw- 1 root admin 2825636804 Aug 18 20:50 aci-n9000-dk9.16.1.6f-cs_64.bin
-rw-rw-rw- 1 root root 2685181327 Aug 18 20:02 aci-n9000-dk9.16.1.6f.bin
-rw-r--r-- 1 root root 2330228111 Aug 18 20:26 auto-s
-rwxrwxrwx 1 root root 268 Apr 15 20:06 clean-config-log
-rw-rw-rw- 1 root root 2 Aug 18 20:33 diag_bootup
-rw-r--r-- 1 root root 56 Aug 18 21:20 disk_log.txt
drwx------ 2 root root 49152 Aug 18 20:15 lost+found
drwxr-xr-x 4 root root 4096 Aug 20 2025 lxc
-rw-r--r-- 1 root root 1503735 Aug 18 21:20 mem_log.txt
-rw-r--r-- 1 root root 139914 Aug 18 21:20 mts_buffer_log.log
-rwx------ 1 admin admin 1956867584 Aug 18 19:03 nxos.9.3.8.bin
-rw-r--r-- 1 root admin 156 Aug 18 20:51 upgTimeline.txt
f2-leaf1#
f2-leaf1# ls -hl /bootflash | grep bin
-rw-rw-rw- 1 root admin 2.7G Aug 18 20:50 aci-n9000-dk9.16.1.6f-cs_64.bin
-rw-rw-rw- 1 root root 2.6G Aug 18 20:02 aci-n9000-dk9.16.1.6f.bin
-rwx------ 1 admin admin 1.9G Aug 18 19:03 nxos.9.3.8.bin
f2-leaf1#
f2-leaf1# df -h /bootflash
Filesystem Size Used Avail Use% Mounted on
/dev/sda4 12G 9.2G 1.9G 84% /bootflash
f2-leaf1#
f2-leaf1# moquery -c pconsBootStrapTracking | grep debug
debugMessage : Auto Upgrade in progress
Step 5: Extraction of the 64-bit image fails
f2-leaf1# tail -n 20 /mnt/pss/installer_frontend.log | grep installer_download_image
<Tue Aug 18 20:46:16 2026> installer_download_image: url=http://10.21.0.1:7777/fwrepo/aci-n9000-dk9.16.1.6f-cs_64.bin mmode=0 ks=aci-n9000-dk9.16.1.6f-cs_64.bin, sys=aci-n9000-dk9.16.1.6f-cs_64.bin-isan
<Tue Aug 18 20:46:16 2026> installer_download_image: Image available. Skipping download
<Tue Aug 18 20:46:16 2026> installer_download_image: Not enough space in /bootflash to extract isan image.
Although the initial /bootflash utilization passed the current rule at 49.994%, the switch did not have enough space to extract the 64-bit image and complete the second stage of the upgrade.
Describe the enhancement
For some upgrades, having 50% free space in a switch’s
/bootflashis not sufficient to complete the upgrade.Specifically, when an upgrade crosses the ACI 6.0(2) 32-bit/64-bit boundary, some switches reboot twice:
To complete both upgrades, the switch may need approximately 7 GB of free
/bootflashspace before the first upgrade begins. This is about 58% of the 12 GB/bootflashcapacity used by ACI switches as of ACI 6.2(2).Current behavior
The Switch Node
/bootflashusage rule always uses 50% as its threshold.Suggested behavior
The Switch Node
/bootflashusage rule should dynamically calculate the required free space based on the applicable upgrade scenario.Scenario 1: Crossing the ACI 6.0(2) 32-bit/64-bit boundary
Use the following calculation when:
Scenario 2: All other upgrades
Note
How to reproduce
A typical case occurs when an ACI switch has an NX-OS image stored in
/bootflash.An internal cleanup process normally deletes unnecessary files to keep
/bootflashusage below 50%. However, NX-OS images—and certain other files, such as the image for the current ACI version—are excluded from cleanup because users may have placed an NX-OS image on the switch in preparation for converting it from an ACI switch to an NX-OS switch.To reproduce the issue:
/bootflash./bootflashusage is just below 50%.Note
When the current ACI version has the fix from CSCwt53667, the NX-OS image in
/bootflashis deleted upon an upgrade (See issue #375). However, it typically affects the upgrade when you cross the 32-bit/64-bit boundary where the source version is older than 6.0(2) without the fix from CSCwt53667. Also, the issue could technically happen without an NX-OS image when another file excluded from cleanup is present especially when the size of the new switch image is getting bigger.Detailed reproduction example
Step 1: Check
/bootflashbefore the upgradeThe exact utilization is below the current 50% threshold:
Step 2: Pre-download the 32-bit target image
Step 3: Trigger the upgrade and extract the 32-bit image
Step 4: After the first reboot, the 64-bit image is downloaded automatically
Step 5: Extraction of the 64-bit image fails
Although the initial
/bootflashutilization passed the current rule at 49.994%, the switch did not have enough space to extract the 64-bit image and complete the second stage of the upgrade.