Nachdem ich für einen MAXit Kunden am vergangenen Wochenende kurz damit gekämpft hatte einen Stack nach dem Update wieder zu einem solchen zu machen, dachte ich, die Beschreibung wie man die Firmware (das IOS) auf allen Mitgliedern eines Cisco FlexStack richtig updated, wenn man weder Web Interface noch das notwendige Archiv File zur Hand hat, wäre ein Posting auf dem MAXblog wert.

In meinem Fall war es ein FlexStack der aus drei WS-C2960X-48FPS-L besteht, die Beschreibung sollte aber für alle Cisco FlexStacks passen.

Erster Schritt: Raufladen des IOS Image auf den Stack Master

Einfach wie gewohnt das .bin File per TFTP oder FTP auf den Switch laden. Ich habe TFTP verwendet. Das Ziel ist flash:/, was den Flash Speicher des Stack Masters darstellt.

hostname#copy tftp://w.x.y.z/c2960x-universalk9-mz.150-2.EX5.bin flash:/
Destination filename

[c2960x-universalk9-mz.150-2.EX5.bin]?
Accessing tftp://w.x.y.z/c2960x-universalk9-mz.150-2.EX5.bin…
Loading c2960x-universalk9-mz.150-2.EX5.bin from w.x.y.z (via Vlan<ID>): !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!![OK – 18229248 bytes]

18229248 bytes copied in 382.300 secs (47683 bytes/sec)
hostname#

Zweiter Schritt: Das IOS Image auf den Flash Speicher aller anderen FlexStack Member kopieren

Wenn ein FlexStack Member bootet kennt er den Stack noch nicht, und kann daher nicht auf einen Master verweisen; er selbst ist in diesem Moment sein eigener Master. Erst nach dem Election Prozess, der nach dem Booten erfolgt, steht der Master fest. Daher muss jeder Stack Member eine Kopie des IOS Image auf seinem lokalen Flash Speicher halten.

So wird das Image vom Flash des Master Switches auf die übrigen Switches kopiert:

hostname#copy flash:/c2960x-universalk9-mz.150-2.EX5.bin flash2:/c2960x-universalk9-mz.150-2.EX5.bin
Destination filename [c2960x-universalk9-mz.150-2.EX5.bin]?
Copy in progress…CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
18229248 bytes copied in 290.700 secs (62708 bytes/sec)
hostname#

Durch obenstehendes Kommando wird das Image vom Flash Speicher des Master Switches auf jenen des zweiten Member Switches kopiert. Diesen Vorgang dann für den eventuellen dritten und weitere Member wiederholen (natürlich die Zahl nach dem Wort “flash” tauschen).

Dritter Schritt: Das Boot Statement auf jedem Member Switch ändern

In meinem Beispiel, mit einem Cisco FlexStack bestehend aus 3 Membern, habe ich dazu folgende Kommandos abgesetzt:

hostname#boot system switch 1 flash:/c2960x-universalk9-mz.150-2.EX5.bin
hostname#boot system switch 2 flash:/c2960x-universalk9-mz.150-2.EX5.bin
hostname#boot system switch 3 flash:/c2960x-universalk9-mz.150-2.EX5.bin

Vierter Schritt: Das Boot Statement (show boot) überprüfen

Wie unten ersichtlich ist, zeigen alle Stack Member auf das selbe IOS Image (bzw. ihre jeweilige lokale Kopie).

hostname#sh boot
BOOT path-list : flash:/c2960x-universalk9-mz.150-2.EX5/c2960x-universalk9-mz.150-2.EX5.bin
Config file : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break : yes
Manual Boot : no
HELPER path-list :
Auto upgrade : yes
Auto upgrade path :
NVRAM/Config file
buffer size: 524288
Timeout for Config
Download: 0 seconds
Config Download
via DHCP: disabled (next boot: disabled)
——————-
Switch 2
——————-
BOOT path-list : flash:/c2960x-universalk9-mz.150-2.EX5/c2960x-universalk9-mz.150-2.EX5.bin
Config file : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break : yes
Manual Boot : no
HELPER path-list :
Auto upgrade : no
Auto upgrade path :
——————-
Switch 3
——————-
BOOT path-list : flash:/c2960x-universalk9-mz.150-2.EX5/c2960x-universalk9-mz.150-2.EX5.bin
Config file : flash:/config.text
Private Config file : flash:/private-config.text
Enable Break : yes
Manual Boot : no
HELPER path-list :
Auto upgrade : no
Auto upgrade path :
hostname#

Alles was jetzt noch zu tun bleibt, ist ein Reboot aller Stack Member und ein “sh ver” zur abschließenden Kontrolle.

Viel Erfolg!