Partitioning Flash

Partitioning Flash

Problem

You want to change how your router's flash memory is partitioned.

Solution

The partition command allows you to create a partition in the router's flash memory:

Router1#configure terminal 
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#partition slot1: 2 8 8
Router1(config)#end
Router1#

Discussion

As we discussed in Recipe 1.11, the erase command deletes the entire contents of a flash device. On routers that don't support the delete and squeeze commands, there is no way to delete an individual file from flash without erasing all of the files in the flash device. Fortunately, you can use the partition command on flash devices to shelter some files from the effects of the erase command.

After you have partitioned a flash device, the erase command only affects one partition at a time. This command doesn't affect any of the other partitions on the same flash device. You can use it to allow you to delete individual files without having to wipe out the entire flash device.

In the next example, we partitioned a flash device into two equal parts. We then stored an IOS image on each of the partitions. You can see the partitions and their contents with the following command:

Router1#show slot1:

PCMCIA Slot1 flash directory, partition 1:
File Length Name/status
1 7723664 c3620-ajs56i-mz.120-25.bin
[7723728 bytes used, 664880 available, 8388608 total]
8192K bytes of processor board PCMCIA Slot1 flash (Read/Write)


PCMCIA Slot1 flash directory, partition 2:
File Length Name/status
1 7723664 c3620-ajs56i-mz.120-25.bin
[7723728 bytes used, 402736 available, 8126464 total]
8192K bytes of processor board PCMCIA Slot1 flash (Read/Write)

Router1#

Notice that the router treats the two partitions as if they were separate flash devices. You can erase the contents a particular partition by specifying the flash device name, followed by the partition number and a colon as follows:

Router1#erase slot1:2:
Erasing the slot1:2 filesystem will remove all files! Continue? [confirm]
Erasing device... eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ...erased
Erase of slot1:2: complete
Router1#

Then, if you view the entire flash device again, you can see that the file in partition 2 has been erased, while the contents of partition 1 remain untouched:

Router1#show slot1:

PCMCIA Slot1 flash directory, partition 1:
File Length Name/status
1 7723664 c3620-ajs56i-mz.120-25.bin
[7723728 bytes used, 664880 available, 8388608 total]
8192K bytes of processor board PCMCIA Slot1 flash (Read/Write)

PCMCIA Slot1 flash directory, partition 2:
No files in PCMCIA Slot1 flash
[0 bytes used, 8126464 available, 8126464 total]
8192K bytes of processor board PCMCIA Slot1 flash (Read/Write)

Router1#

As we mentioned in Recipe 1.11, if you attempt to erase one file from this flash device without partitioning it first, the router will erase both IOS images.

You can remove an existing set of partitions with the no partition command:

Router1#configure terminal 
Enter configuration commands, one per line. End with CNTL/Z.
Router1(config)#no partition slot1: 2 8 8
ee
Router1(config)#end
Router1#

Finally, you can safely partition a flash device that already contains files, as long as you don't attempt to create a partition partway through an existing file. If you do attempt create a partition that partitions an existing file, then the router will identify it as a problem.

See Also