Network Device Memory
스위치와 라우터 같은 네트워크 장비는 동작에 필요한 정보를 휘발성(현재 동작 정보)과 비휘발성 메모리(부팅 설정, OS 이미지)에 나누어 저장하며, Cisco IOS는 비휘발성 영역을 NVRAM과 Flash로 나누어 관리한다. 이 글에서는 가장 널리 알려진 Cisco IOS의 RAM/NVRAM/Flash 모델을 먼저 자세히 살펴본 뒤, 다른 벤더의 접근 방식과 비교한다. 어떤 설정이 어떤 메모리에 저장되는지를 알아야 백업, 초기화, VLAN 관리 같은 작업에서 의도하지 않은 결과를 피할 수 있다.
세 가지 메모리 영역
| 메모리 | 휘발성 | 저장되는 내용 |
|---|---|---|
| RAM | 휘발성 | 현재 동작 중인 설정과 라우팅 테이블, ARP 테이블 등 런타임 데이터 |
| NVRAM | 비휘발성 | 부팅 시 로드되는 설정 |
| Flash | 비휘발성 | 운영체제 이미지, VLAN 데이터베이스 등 부피가 큰 비휘발 데이터 |
아래에서는 대표적인 네트워크 운영체제별로 이 세 메모리를 어떻게 다루는지 살펴본다.
Cisco IOS
Cisco IOS는 RAM/NVRAM/Flash 모델을 가장 명시적으로 구분해 보여주는 OS이다. 설정 파일은 메모리 위치에 따라 세 종류로 나뉜다.
running-config (RAM)
running-config는 장비가 현재 동작하는 데 사용하고 있는 설정으로, RAM에 올라와 있다. CLI로 명령어를 입력하면 즉시 running-config에 반영되어 실시간으로 동작에 영향을 준다.
다만 RAM은 휘발성 메모리이기 때문에 장비가 재부팅되거나 전원이 내려가면 사라진다. 따라서 변경한 설정을 영구적으로 유지하려면 startup-config로 복사해야 한다.
Switch# show running-config
startup-config (NVRAM)
startup-config는 장비가 부팅될 때 불러오는 설정 파일로, NVRAM에 저장된다. NVRAM은 비휘발성이므로 전원이 꺼져도 내용이 유지된다.
부팅 시 IOS는 NVRAM의 startup-config를 읽어 RAM의 running-config로 복사한 뒤 그 내용에 따라 장비를 동작시킨다.
Switch# show startup-config
Switch# copy running-config startup-config # 또는 write memory
vlan.dat (Flash)
vlan.dat는 VLAN 데이터베이스 정보를 담은 파일로, NVRAM이 아닌 Flash 메모리에 저장된다. VTP(VLAN Trunking Protocol) 기반의 동기화 메커니즘 때문에 일반 설정과 분리되어 관리된다.
Switch# show flash:
Switch# dir flash:
설정 흐름
세 저장소 사이의 일반적인 흐름은 다음과 같다.
설정 입력
│
▼
running-config (RAM)
│ copy running-config startup-config
▼
startup-config (NVRAM)
│ 재부팅 시 로드
▼
running-config (RAM)
즉 running-config는 "지금 메모리에서 돌고 있는 설정"이고, startup-config는 "다음 부팅 때 불러올 저장본"이다. 두 개를 일치시키려면 copy running-config startup-config(또는 write memory)를 실행해야 한다.
NVRAM 초기화와 VLAN 보존
운영자가 흔히 마주치는 함정 중 하나는 다음과 같다.
스위치 설정을 완전히 초기화하려고
write erase후reload했는데, VLAN 정보가 그대로 살아있다.
이건 버그가 아니라 의도된 동작이다. VLAN 데이터베이스는 NVRAM이 아니라 Flash 메모리의 vlan.dat에 저장되기 때문에 NVRAM 초기화 명령으로는 지워지지 않는다.
| 명령 | 영향받는 영역 | vlan.dat 보존 여부 |
|---|---|---|
write erase / erase startup-config | NVRAM의 startup-config만 삭제 | 보존됨 |
reload (재부팅) | RAM의 running-config 초기화 | 보존됨 |
delete flash:vlan.dat | Flash의 vlan.dat 삭제 | 삭제됨 |
따라서 VLAN 정보까지 포함해 장비를 0부터 다시 구성하고 싶다면 write erase에 더해 delete flash:vlan.dat까지 실행해야 한다.
Juniper Junos
Juniper Junos는 Cisco와 다른 접근 방식을 취한다. 메모리 영역을 직접 노출하기보다 설정의 상태(state) 로 추상화해 관리한다.
| 상태 | 설명 | Cisco 대응 |
|---|---|---|
| Candidate | CLI로 편집 중인 설정. 아직 장비에 적용되지 않은 임시 사본 | (해당 없음 — IOS는 즉시 반영) |
| Active | 장비가 실제로 동작에 사용하고 있는 설정 | running-config |
| Committed | 디스크(/config/juniper.conf.gz)에 저장된 가장 최근 커밋 | startup-config |
작업 흐름은 다음과 같다.
configure명령으로 candidate에 진입하여 설정을 수정한다.commit을 실행하면 candidate의 내용이 active와 committed 양쪽에 동시에 반영된다.- 문제가 발생하면
rollback으로 이전 커밋으로 되돌릴 수 있다. 기본적으로 최근 50개 커밋이 디스크에 보관된다. commit confirmed를 사용하면 일정 시간 안에 재확인하지 않으면 자동으로 롤백되는 안전장치도 제공한다.
RAM/NVRAM/Flash로 명시적으로 구분하지 않더라도 결과적으로 휘발성·비휘발성 영역을 모두 활용하는 구조이며, Cisco의 "수정 즉시 반영" 모델보다 실수에 강한 트랜잭션 모델이라고 볼 수 있다.
Arista EOS
Arista EOS는 Linux 커널 위에 EOS 데몬이 동작하는 형태이다. CLI 사용감은 Cisco IOS와 거의 호환되어 running-config, startup-config 개념을 그대로 쓴다.
switch# show running-config
switch# copy running-config startup-config # 또는 write memory
차이점은 내부 구현이다. EOS는 SysDB라는 중앙 상태 데이터베이스에 설정을 포함한 모든 상태 정보를 저장하고, 각 기능 데몬은 SysDB를 구독해 변경에 반응한다. 외부 명령어는 IOS와 같지만 내부적으로는 단일 데이터베이스 모델이라는 점에서 Junos와 닮은 면도 있다.
Huawei VRP / HP Comware
Huawei VRP와 HP Comware(과거 H3C)는 명령어 표현이 다를 뿐 메모리 모델은 Cisco IOS와 거의 동일하다.
| Cisco IOS | Huawei VRP / HP Comware |
|---|---|
running-config | current-configuration |
startup-config | saved-configuration |
copy running-config startup-config | save |
show running-config | display current-configuration |
show startup-config | display saved-configuration |
정리
- 네트워크 장비는 RAM(휘발성, 현재 동작 설정·런타임 데이터), NVRAM(비휘발성, 부팅 설정), Flash(비휘발성, OS 이미지·VLAN 데이터베이스 등)의 세 메모리 영역에 정보를 분산 저장한다.
- 운영체제에 따라 이를 노출하는 방식이 다르다. Cisco IOS는 메모리 위치를 그대로 드러내고, Junos는 active/committed/candidate 상태 모델로 감싸며, Arista EOS는 IOS 호환 CLI 뒤에 SysDB라는 단일 데이터베이스 구조를 둔다.
- 명령어와 파일명이 달라도 결국 모든 OS는 "휘발성 영역에서 동작하고 비휘발성 영역에 영구 보존한다"는 동작 흐름은 동일하다.