본문 바로가기

CS ﹒ Algorithm/Network Infra

네트워크 인프라 (2) 서버의 물리적 구성

 

 

1. 물리 서버의 외관

 

서버 랙
랙 마운트 서버

 

랙 마운트 서버는 기본적으로 Rack Mount Rail이 탑재되어 슬라이드 형태로 랙에 장착한다.

랙에 장착되는 서버 장비의 크기는 규격이 정해져있으며 U(Rack Unit)으로 표기하는데, 유닛 당 높이는 1.75인치(약 4.5cm)이며 폭은 19인치(약 50cm)이다.

서버 장비의 크기에 높이에 따라 1U, 2U, 3U, 4U, 8U등으로 다양하게 분류되며, 랙 자체의 크기는 42U가 보편적이다.

또한, 서버 뿐 아니라 랙 자체에도 Data Storage와 Network Switch 등이 탑재되어 있다.

 

 

 

2. 물리 서버의 내부

* cpu와 메모리 구조에 관한 글은 이전 컴퓨터 구조 관련 포스팅에서 자세하게 다뤘으므로 간략하게 설명한다.

(https://7357.tistory.com/217?category=1077221)

(https://7357.tistory.com/214?category=1077221)

 

서버 내부의 구조는 일반적인 컴퓨터와 크게 다르지 않으며, 일반적인 컴퓨터와 마찬가지로 각 컴포넌트는 Bus로 연결되어 있다.

PCie는 PCI Express의 약자로써 외부 장치(주로 저장 장치)와 연결하는 버스다.

일반 PC와 다른 점은 전원이 이중화되어 전원 유지가 안정적이고, CPU의 처리 용량이 높다.

 

 

 

또한 내부에 BMC라는 장비를 찾아볼 수 있는데, 서버의 하드웨어 상태를 감시하며 별도로 동작하고 하드웨어에 장애가 발생할 시 콘솔을 통해 서버의 상태를 모니터링하고 원격 재실행시킬 수 있다.

 

 

 

 

2-1. CPU (Central Processing Unit)

 

외부에 노출되는 표면은 대량의 전기 신호를 처리하여 발열이 심해 냉각기가 필요하며, 뒷면은 핀을 장착하여 버스에 연결한다.

일반 CPU와 마찬가지로 명령을 받아 연산을 실행하고 연산 결과를 기억장치/입출력 장치를 통해 반환한다.

 

 

 

2-2. 메모리

 

외부적으로 장착되는 메모리와 CPU 내부의 Cache 메모리가 존재한다.

메모리는 모두 휘발성 정보를 저장하는 공간으로 전기적인 처리만으로 데이터가 저장되며 HDD와 달리 Random Access가 가능하여 속도가 굉장히 빠르기 때문에 사용된다.

 

CPU 내부에는 L1/ L2/ L3캐시가 존재하는데 메모리 컨트롤러(MMU)를 경유하게 되면 지연 시간이 생겨 병목 현상이 일어나기 때문에 이를 단축하기 위함이다.

또한, 물리적 거리가 데이터 전송 속도에 영향을 주기 때문에 외장 메모리도 CPU와 최대한 가까운 곳에 배치한다.

 

* L1/ L2/ L3캐시 ( 숫자가 작을 수록 더 빠르며, 보통 마지막 캐시는 공용 캐시로 사용된다 => 즉, L2캐시까지만 있을 경우 L2캐시는 모든 코어의 공용 캐시, L1 캐시는 각 코어의 단독 캐시로 사용된다.)

 

CPU의 성능이 고도로 발달함에 따라 주기억장치(메모리)의 속도가 그것을 따라가지 못하기 때문에 Memory Interleabing 을 활용하여 이를 완화한다.

만약 사용자가 데이터 1을 요구하면 같은 열의 데이터는 보통 함께 사용된다는 원리로 2번, 3번, 4번 데이터도 각 채널의 메모리가 함께 보낸다. 따라서 처리 지연 시간이 감소한다.

단, 이 기능을 활용하려면 모든 채널의 동일 뱅크에 메모리를 배치해야 한다.

* 이는 장점만 있는 기능은 아니지만, 이 글에서는 다루지 않는다.

 

 

 

 

3. I/O (입출력 장치)

 

3-1. HDD (Hard Disk Drive)

 

 

장기 저장 목적으로 데이터를 저장하는 장소다.

메모리와 달리 전기가 공급되지 않아도 데이터가 손실되지 않으며, 자기 원반이 고속 회전하며 R/W하는 구조이기 때문에 속도가 물리 법칙에 좌우되고, 임의 접근(Random Access)가 불가능하여 메모리에 비해 굉장히 느리다.

 

서버에 장착 가능한 HDD 개수는 일반 PC와는 비교할 수 없을 정도로 많으며, 이제는 SSD로 대체되고 있는 추세이나 가격적인 문제로 여전히 HDD 또한 많이 사용되고 있다.

 

 

storage

 

HDD가 여러개 탑재되어있는 하드웨어를 HDD Storage라고 부르며, I/O의 서브 시스템이라고도 불리는 장치로 내부에 별도의 cpu와 캐시가 존재하고 있다.

 

스토리지에서 데이터를 읽을 때는 캐시에 값이 있다면 캐시에서 바로 데이터를 읽을 수 있으며, 없으면 기억 장치에 직접 액세스해야 한다.

반대로 데이터를 작성할 때는 캐시 상에만 기록하고 추후 장치에 기록하는 방식(Write Back), 기억장치에 직접 Access해서 기록하는 (Write Through) 방식이 있다.

 

 

속도를 위해 일반적으로 Write Back 방식을 사용하나 캐시와 메모리 값이 서로 달라지는 경우가 있어 데이터 로스가 발생하면 안되는 상황에서는 종종 Write Through를 사용하는 경우도 있다.

 

 

 

3-2. Network Interface

 

LAN, SAN (Storeage Area Networking) 등 다양한 종류의 외부 네트워크와 연결할 수 있는 어댑터로 구성되어 있다.

 

 

 

3-3. I/O Controller

 

 

각 서버 장치의 스펙마다 구성은 천차만별이다.

칩셋마다 확장 가능한 회선이 정해져 있으며, 내부적으로도 회선이 사용되기 때문에 실제로 사용자가 외부적으로 사용가능한 회선 수는 cpu 스펙에 표기된 처리 가능 총량보다 적다.

당연한 말이지만, cpu가 추가로 탑재된다면 회선 용량도 증가한다.

 

CPU에서 직접 IO를 컨트롤하는 부분과 외부 칩셋(저속)을 사용하는 부분으로 나눠지며, 일반적으로 CPU에는 기억장치 같은 속도가 중요한 컴포넌트가 연결되며 이외에는 모두 보조 칩셋으로 해결한다.

 

 

 

 

 

4. bus

: 컴퓨터 내부 부품, 혹은 컴퓨터간 데이터와 정보를 전송하는 통로를 의미하며, 관련된 모든 하드웨어 및 프로토콜을 포함한다.

 

 

 

 

대역은 데이터의 전송 능력을 표기하는 방법으로 전송폭 X 초당 전송수를 뜻한다.

전송 횟수는 1초 / 1처리당 소요 시간으로 환산 가능하며, 대역은 Throughtput이라고도 부른다.

 

PCI Express 3.0은 1회선당 2Gb/s 전송 가능하며, x16은 16회선 x8은 8회선을 연결할 수 있다.

* 2Gb/s가 전송 횟수, x16 혹은 x8은 전송폭을 의미한다.

 

위의 I/O Controller 이미지를 보면 CPU에서 가까울 수록 버스 대역이 큰 것을 확인할 수 있다.

버스 흐름에서 중요한 것은 CPU와 병목 현상(BottleNeck)이 없어야 한다는 것이다.