I'm a student that will be taking my CCNA exam in early June and I'm doing a lot of practical revision, I tend to get sidetracked by little things such as this question I'm about to post. It's regarding flash and nvram. The terms are sometimes used interchangeably even though they are two different things. For instance, from this Cisco link: http://www.cisco.com/en/US/products/hw/switches/ps5213/products_tech_note09186a0080a49dbf.shtml

VTP client and server systems require VTP updates from other VTP servers to be immediately saved in NVRAM without user intervention. The VTP update requirements are met by the default CatOS operation, but the Cisco IOS software update model requires an alternative update operation. For this, a VLAN database was introduced to Cisco IOS software for Catalyst switches as a method to immediately save VTP updates for VTP clients and servers. This VLAN database is in the form of a separate file in NVRAM called the vlan.dat file.

And then later in the same article, it adds some context to which systems use different terminology:

*The vlan.dat stored in NVRAM alone can be accessed by the switch. The vlan.dat file can be copied from its location for backup purposes. The memory location name where the vlan.dat file is stored varies from device to device. Refer to the respective product documentation before you issue the copy command.

In Cisco Catalyst 6500/6000 series switches, it is const_nvram:. Similarly for Catalyst 4500/4000 switches, it is cat4000_flash:. In Cisco Catalyst 29xx series and Cisco Catalyst 35xx, 3750 series, it is referred to as flash:.*

So what the documentation here tells me that:

6500/6000 series switches: NVRAM = const_nvram:

4500/4000 series switches: NVRAM = cat4000_flash:

29xx, 35xx, 3750 series : NVRAM = flash:

And, by Ciscos definition if NVRAM = flash, on a 2960 switch, then yes, the vlan.dat is stored in the NVRAM and what the documentation says is correct. But what about the other NVRAM? the one where the startup-config is stored, that's a different NVRAM entirely! What is going on here?

My problem is, a lot of the time if I'm reading something for the first time, I can never be sure if they are referring to the real NVRAM where the startup-config is stored, or the Flash memory where the IOS is stored (and vlan.dat). It seems to me that they are moving to migrate both flash and nvram? (nvram and const_nvram in the latest series?) I mean, functionally wise, nvram and flash are the same. Writable memory that doesn't wipe after a reload.

But yes, my question. Is there any general guidelines or rules that I should use for interpreting whether or not to read 'flash:' when they actually say nvram?


To get a better picture of what happens, you can do a show file systems | i flash|nvram, dir nvram:, and dir flash: on some of the devices in question. The short answer: NVRAM is a kind of flash memory, and it is never removable. The location of vlan.dat varies by switching platform... the IOS configfiles are always in nvram unless the device is forced to manually store them elsewhere.

Catalyst 6500

Router#show file systems | i nvram|flash
    65536000    32514632     flash     rw   sup-bootflash:
      129004      127128     nvram     rw   const_nvram:
     1964024     1960900     nvram     rw   nvram:
    65536000    32514632     flash     rw   bootflash:
    15990784    15990784     flash     rw   dfc#3-bootflash:
Router#dir const_nvram:
Directory of const_nvram:/

    1  -rw-        1876                    <no date>  vlan.dat

129004 bytes total (127128 bytes free)
Router#dir nvram:
Directory of nvram:/

 1918  -rw-           0                    <no date>  startup-config
 1919  ----           0                    <no date>  private-config
 1920  -rw-           0                    <no date>  underlying-config
    1  ----           4                    <no date>  rf_cold_starts
    2  ----          47                    <no date>  persistent-data
    3  -rw-           0                    <no date>  ifIndex-table

1964024 bytes total (1960900 bytes free)
Router#show ver | i IOS
IOS (tm) s72033_rp Software (s72033_rp-IPSERVICES_WAN-M), Version 12.2(18)SXF16, RELEASE SOFTWARE (fc2)

Catalyst 3560

DAL-EDG-SW01#sh ver | i IOS
Cisco IOS Software, C3560 Software (C3560-IPSERVICESK9-M), Version 12.2(55)SE, RELEASE SOFTWARE (fc2)
DAL-EDG-SW01#show file systems | i nvram|flash
File Systems:

     Size(b)     Free(b)      Type  Flags  Prefixes
*   32514048     8593920     flash     rw   flash:
      524288      488396     nvram     rw   nvram:

DAL-EDG-SW01#dir nvram:
Directory of nvram:/

  479  -rw-       29740                    <no date>  startup-config
  480  ----        3028                    <no date>  private-config
    1  ----          35                    <no date>  persistent-data
    2  -rw-           0                    <no date>  ifIndex-table
    3  -rw-         598                    <no date>  IOS-Self-Sig#3434.cer

524288 bytes total (488396 bytes free)
DAL-EDG-SW01#dir flash:
Directory of flash:/

    2  -rwx    11190304   Mar 1 1993 12:44:55 -05:00  c3560-ipbasek9-mz.122-53.SE1.bin
    3  -rwx    12677496   Oct 6 2010 20:11:22 -04:00  c3560-ipservicesk9-mz.122-55.SE.bin
    4  -rwx       13336  Feb 28 1993 19:01:18 -05:00  vlan.dat
    6  -rwx        3096  Apr 29 2011 15:21:40 -04:00  multiple-fs
    7  -rwx        3028  Apr 29 2011 15:21:40 -04:00  private-config.text
    8  -rwx       29740  Apr 29 2011 15:21:40 -04:00  config.text

32514048 bytes total (8593920 bytes free)

Catalyst 3550

TQ-DC5-CORE1#sh file systems | i nvram|flash
*   15998976     7844352     flash     rw   flash:
    15998976     7844352   unknown     rw   zflash:
      393216      377552     nvram     rw   nvram:
TQ-DC5-CORE1#dir flash:
Directory of flash:/

    2  -rwx           5  Mar 13 2011 08:13:56 -04:00  private-config.text
    3  -rwx     8127303  Feb 28 1993 19:18:13 -05:00  c3550-ipservices-mz.122-44.SE6.bin
    4  -rwx         320  Feb 28 1993 19:19:52 -05:00  system_env_vars
    5  -rwx         255  Feb 28 1993 19:34:51 -05:00  info
    6  -rwx         255  Feb 28 1993 19:37:38 -05:00  info.ver
    7  -rwx           0  Feb 28 1993 19:19:52 -05:00  env_vars
   10  -rwx        6736  Oct 29 2010 16:24:23 -04:00  vlan.dat
    9  -rwx        1048  Mar 13 2011 08:13:56 -04:00  multiple-fs
   11  -rwx       14583  Mar 13 2011 08:13:56 -04:00  config.text

15998976 bytes total (7844352 bytes free)
TQ-DC5-CORE1#dir nvram:
Directory of nvram:/

  378  -rw-       14583                    <no date>  startup-config
  379  ----           5                    <no date>  private-config
    1  -rw-           0                    <no date>  ifIndex-table

393216 bytes total (377552 bytes free)
TQ-DC5-CORE1#sh ver | i IOS
Cisco IOS Software, C3550 Software (C3550-IPSERVICES-M), Version 12.2(44)SE6, RELEASE SOFTWARE (fc1)

When you're dealing with Cisco devices, inconsistency is the only consistency you'll see. Refer to this snippet:

The memory location name where the vlan.dat file is stored varies from device to device. Refer to the respective product documentation before you issue the copy command.

So, the only 'guideline' will be exactly what the snippet said: Read The Fine Manual (RTFM).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.