반응형
2. 서버를 열어보자
하드웨어 장비를 소개하고 그 내부에서 데이터가 어떻게 흐르는지 확인한다.
2.1 물리 서버
2.1.1 서버 외관과 설치 장소
아키텍처 전체를 구상할 때는 서버라는 단위로 생각한다.
서버는 랙(rack) 이라는 것에 장착된다. 랙에는 서버 외에도 HDD가 가득 장착돼 있는 저장소나 인터넷 및 LAN을 연결하기 위한 스위치 등도 탑재돼 있다.
서버 설치시에 중요한 정보는 서버크기(U), 소비전력(A), 중량(Kg)이다.
컴포넌트들은 버스(bus)로 연결된다.
컴포넌트를 연결하는 선을 버스(bus)라고 한다. CPU와 메모리는 물리적으로 직접 연결되어 있다. CPU를 중심으로 생각하면 HDD나 네트워크 인터페이스는 메모리에 비해 멀리 있다.
서버 내에는 이외에도 다수의 컴포넌트가 존재하지만 CPU, 메모리, HDD, 네트워크 인터페이서, 버스를 중심으로 설명한다. 서버와 PC는 물리적으로는 기본 구성이 같다. 전원이 이중화돼 있어서 장애에 강하거나 대용량 CPU나 메모리가 탑재돼 있는 정도가 PC와 다른 점이다. 따라서 각 하드웨어 제조사가 경쟁하는 것은 CPU나 메모리등의 컴포넌트 자체를 개선하거나 컴포넌트 배치나 버스 구성, 하드웨어를 가동시키기 위한 펌웨어를 개선해서 성능을 차별화하는 것이다.
2.2 CPU
Central Processing Unit. 서버 중심에 위치해서 연산 처리를 한다.
표면에는 대량의 전기신호를 처리하기 때문에 발열이 심하다. 이 부분에는 보통 냉각기가 설치된다.
뒷면에는 실제로는 시스템 포트에 장착돼 있어서 보이지 않는다. 주변을 감싸고 있는 대량의 핀이 버스에 연결돼 있어서 메모리나 디스크와 데이터를 교환한다.
CPU는 명령을 받아서 연산을 실행하고 결과를 반환한다. 명령과 데이터는 기억 장치나 입출력 장치를 통해 전달된다. 연산은 1초에 10억회 이상 실행할 수 있다. 현재는 이 CPU를 코어라고 하며, 하나의 CPU에 여러개의 코어가 존재하는 멀티 코어화가 진행되고 있다. 코어는 각자가 독립된 처리를 할 수 있다.
명령이나 데이터는 기억 장치에 있고 명령은 운영체제(OS)라는 소프트웨어가 내린다. OS상에서 동작하는 웹서버나 데이터베이스의 실체인 프로세스와 사용자가 키보드, 마우스 등을 통한 입력으로 OS에 명령을 내린다. CPU가 자발적으로 처리하는 것은 아니다.
키보드나 마우스가 하는 처리를 인터럽트(interrupt)처리 라고 한다.
2.3 메모리
기억영역을 뜻한다. CPU 옆에 위치하며, CPU에 전달하는 내용이나 데이터를 저장하거나 처리 결과를 받는다. 메모리에 저장되는 정보는 영구성이 없다. 서버를 재시작하면 없어지는 정보이다. 이런 결점에도 메모리를 사용하는 이유는 메모리 액세스가 매우 빠르게 이루어지기 때문이다. 그리고 데이터 저장시에 물리적인 모터 등을 구동하는 것이 아니라 전기적인 처리만으로도 데이터를 저장하기 때문이다.
CPU 자체도 메모리를 가지고 있다. 이것은 레지스터나 1차(L1)/2차(L2) 캐시라고 불리며, CPU 내부에 존재한다. 메모리보다 더 빠르긴 하지만, 용량이 메모리에 비해 매우 작다.
캐시를 여러 단으로 배치해서 대기 시간을 줄인다.
빈번하게 사용하는 데이터, 명령 순서대로 CPU에 가까운 쪽에 캐시된다.
L1캐시 - 초고속 캐시. 각 코어 전용
L2캐시 - 고속 캐시. 각 코어 전용
L3캐시 - 준고속 캐시. CPU 전체가 공유
메모리 영역이 여러개 존재하는 이유는 메모리를 이용하려면 메모리 컨트롤러를 경유해서 일단 CPU 밖으로 나가야 한다. 고속 CPU에서는 이러 처리 지연조차 허락하지 않는다. 처리 지연을 줄이기 위해서 가장 자주 사용하는 명령/데이터를 코어 가까운 곳에 배치하는 것이다.
영역이 여러 단계로 나누어져 있는 이유는 액세스 속도 때문이다. 일반적으로 캐시 메모리가 커질수록 액세스 속도가 느려진다. 하지만 가능한 CPU 가까운 곳에 많은 캐시를 두고 싶은 것도 사실이다. 이 때문에 캐시를 여러 단계로 배치해서 초고속으로 액세스 하고 싶은 데이터는 L1캐시에, 고속으로 액세스하고 싶은 데이터는 L2 캐시에 두는 형태로 만든 것이다.
또한, 메모리에는 미리 데이터를 CPU에 전달해서 처리 지연을 줄이는 '메모리 인터리빙'이라는 기능이 있다.
채널은 메모리와 CPU 간 데이터 경로를 말한다. 최대 세개의 채널을 사용해서 데이터1을 요구하면 데이터 2와 3도 함께 보내 버린다. 이것은 대부분의 데이터가 연속해서 액세스 된다는 규칙을 기반으로 만들어진 것이다. 먼저 읽어서 처리 지연을 줄여 주는 것이다.
이 기능을 활용하기 위해서는 모든 채널의 동일 뱅크에 메모리를 배치해야 한다. 채널 영역도 많이 사용할 수 있다. 다른 제조사의 CPU나 메모리도 원칙은 같기 때문에 사양을 확인하면 좋다.
이와 같이 메모리는 다단계 구조를 가지고 각각의 액세스 속도에 맞게 사용되기 때문에 CPU의 데이터 처리 속도를 줄일 수 있다.
2.4 I/O 장치
2.4.1 하드 디스크 드라이브(HDD)
HDD는 기록영역이다. 서버에서는 메모리에 비해 CPU에서 떨어진 곳에 HDD가 배치된다. 주로 장기 저장 목적의 데이터 저장 장소로 사용한다. 메모리도 디스크도 기억 영역이지만 액세스 속도가 다르며, 전기가 흐르는지 여부에 따라 데이터가 손실되거나 손실되지 않거나 하는 점이 다른다. 메모리는 전기가 흐르지 않으면 데이터가 사라지며, 디스크는 전기가 없어도 데이터가 사라지지 않는다.
HDD내부에는 자기 원반이 여러 개 들어 있으며, 이것이 고속으로 회전해서 읽기/쓰기 처리를 한다. CD나 DVD와 같은 구조이다. 이 회전 구조 때문에 속도가 물리 법칙에 좌우되며, 메모리처럼 순식간에 액세스할 수 없다. 일반적으로 수 밀리초에서 수십 밀리초 정도의 시간이 걸린다.
PC라면 탑재할 수 있는 HDD수는 한대나 두 대 정도이지만, 서버에는 더 많은 HDD를 장착할 수 있다.
아직 이런 HDD가 많은 시스템에서 이용되고 있지만, 최근에는 기술이 발달해서 SSD(Solid State Disk, 반도체 디스크)라는, 물리적인 회전 요소를 사용하지 않는 디스크가 사용되고 있다. SSD는 메모리와 같이 반도체로 만들어졌지만, 전기가 없어도 데이터가 사라지지 않는다. SSD의 등장으로 인해 메모리와 기억 장치 간 속도차이가 거의 없어지고 있다. 몇 년 후에는 자기 디스크(HDD)가 없어질 수도 있다.
또한 HDD가 많이 탑재돼 있는 하드웨어를 스토리지 라고 한다. 저장소의 I/O의 서브 시스템이라고도 불리는 장치로서, 내부에는 CPU와 캐시가 존재하고 수많은 HDD외에도 여러 기능을 탑재하고 있다.
서버와 I/O시에는 HDD가 직접 데이터 교환을 하는 것이 아니라 캐시를 통해서 한다. CPU 캐시 이용 방법과 동일하다. 메모리처럼 고속으로 I/O가 가능한 하드웨어이다.
대형 저장소와 연결할 때는 일반적으로 파이버 채널 이라는 케이블을 사용해서 SAN이라는 네트워크를 경유한다. SAN에 접속하기 위한 파일 채널 인터페이스를 FC포트라고 한다. 보통은 서버 시스템 포트에 FC포트가 없기 때문에 PCI 슬롯에 HBA라는 카드를 삽입한다. 읽기 캐시의 경우는 캐시 상에 데이터 복사본만 있으면 되지만, 쓰기 시에는 캐시에만 데이터를 기록하고 완료했다고 간주하는 경우 데이터를 잃을 가능성이 있음을 의미한다. 장점은 캐시에 저장해서 쓰기 처리가 종료되기 때문에 고속 I/O를 실현할 수 있다는 점이다. 이런 쓰기 I/O를 라이트백이라고 한다. 대부분의 저장소 제품에서는 이 캐시를 별도의 캐시와 미러링해서 안정성을 높이고 있다.
또한, 다른 하나의 I/O는 캐시와 HDD에 모두 액세스 하는 I/O다. 읽기 시에 캐시에 데이터가 없으면 읽기 처리를 위해 액세스 한다. 쓰기 시에는 캐시와 디스크를 모두 읽어서 라이트 백과 비교하고, 더 확실한 쪽에 쓰기 처리를 위해 액세스 한다. 이경우 쓰기 캐시의 장점은 없다. 이런 쓰기 I/O를 라이트 스루 라고 한다. 기본적으로는 캐시의 장점을 살리기 위해 라이트백으로 설정한다.
2.4.2. 네트워크 인터페이스
서버와 외부 장비를 연결하기 위한 것으로 외부 접속용 인터페이스다.
서버 외부 장비로는 네트워크에 연결된 다른 서버나 저장소 장치가 있다. HDD와 네트워크 인터페이스는 I/O핸들러라는 컨트롤러에 연결돼 있다. CPU 관점에서는 HDD도 네트워크도 외부 I/O라는 의미에서는 동일하다.
2.4.3 I/O 제어
I/O 제어는 I/O 핸들러(IOH) 또는 I/O 컨트롤러(ICH)라는 제어장치를 통해 한다. IOH는 CPU와 가까운 곳에 있어서 노스 브릿지라고 하며 ICH를 사우스 브릿지라고 한다. IOH는 이전에는 메모리 I/O제어가 중 역할이었지만, CPU에 그 역할이 옮겨가고 지금은 다른 고속 처리가 필요한 I/O를 제어하고 있다. 또한, CPU 간 데이터 전송 제어도 한다. 현재 CPU와 IOH간에는 퀵 패스 인터커넥트라는 고속 버스로 연결 돼 있다.
ICH는 속도가 느려도 괜찮은 DVD나 USB 등의 I/O 제어를 담당하며, IOH 간 데이터 전송제어도 한다.
이와 같이 CPU 외에도 다양한 컨트롤러나 칩이 있다는 것을 알았을 것이다. 다른 컨트롤러가 존재하는 이유는 CPU가 해야 할 연산에 더 집중하기 위한 것이라 할 수 있다. 또한, I/O 시에 관련 처리를 가능한 I/O와 가까운 곳(즉, CPU에서 멀리 있는 곳)에서 처리하는 것이 더 효율적이다. 즉, CPU와 칩셋의 관계는 역할 분담을 위한 것이다.
HDD의 I/O와 DVD의 I/O경로가 물리적으로 다르다는 것을 알 수 있다.
조립 PC 추천
CPU를 정한다. - 일단 가격고려. 다른 부품이 정해진 후에 다시 검토해야 할수도 있다.
사용하고 싶은 CPU를 지원하는 마더보드를 알아본다.
마더보드가 들어가는 PC케이스를 정한다. (이때 팬이나 전원장치도 정한다.)
마더보드를 지원하는 메모리를 정한다.
기타 주변 장치를 정한다. (그래픽 카드나 RAID 포트 등)
모니터를 정한다.
가게로 GO!
2.5 버스
버스(bus)는 서버 내부에 있는 컴포넌트들을 서로 연결시키는 회선을 가리킨다. 버스에서 중요한 것은 어느 정도의 데이터 전송능력을 갖고 있는가, 즉, 대역이 어느 정도인가 이다.
2.5.1 대역
대역이란 무엇일까? 원래는 주파수 대역을 가리키지만, IT 인프라에서는 의미가 조금 다른다. 대역은 데이터 전송 능력을 의미한다. 대역은 '한번에 데이터를 보낼 수 있는 데이터의 폭(전송폭)', '1초에 전송할 수 있는 횟수(전송횟수)' 로 결정된다.
전송횟수는 '1초/1처리당 소요시간(응답시간)' 으로 표현할 수 있다. 또한, 대역은 스루풋(처리량)이라고도 부른다.
대역은 전송폭 X 전송 횟수
예를 들어, x8, x16 같은 숫자는 몇 회선인지를 의미한다. 즉, x8은 8회선, x16은 16 회선의 전송폭을 가지고 있음을 의미한다.
2.5.2. 버스 대역
CPU에 가까운 쪽이 버스 대역이 크다.
버스 흐름에서 중요한 것은 CPU와 장치 사이에 병목 현상이 없어야 한다는 것이다. 병목 현상은 데이터 전송이 어떤 이유로 막혀 있는 상태를 의미한다. 시스템 설계시에 특히 놓치기 쉬운 것이 외부 장치 연결 시의 버스 대역에 관한 것이다.
2.6 정리
HDD 데이터가 CPU에 이르기까지 많은 과정을 거쳐야 된다. HDD 데이터는 다양한 전송 버스를 지나서 몇 번이고 캐시된 후에 CPU에 이른다. 또한, CPU에 가까울수록 고속이고 멀수록 대용량인 것을 알 수 있다.
하드웨어는 시스템의 가장 기반이 되는 부분이다. 애플리케이션, OS는 이 하드웨어를 움직이기 위한 프로그램 집합이라 할 수 있다. 프로그램이 동작하면 하드웨어가 어떤 식으로 동작하는지 이해한 후 이것을 바탕으로 새로운 구조나 시스템을 만드는 것이 진정한 IT 엔지니어라고 생각한다.
반응형
'# 01 > 네트워크' 카테고리의 다른 글
그림으로 공부하는 IT 인프라구조-6 (0) | 2019.02.05 |
---|---|
그림으로 공부하는 IT 인프라구조-5 (0) | 2019.02.05 |
그림으로 공부하는 IT 인프라구조-4 (0) | 2019.02.05 |
그림으로 공부하는 IT 인프라구조-3 (0) | 2019.02.05 |
그림으로 공부하는 IT 인프라구조-1 (0) | 2019.02.05 |