서버를 열어 보자
2.1 물리 서버
2.1.1 서버 외관과 설치 장소
목표 : 물리서버 내부 구조 파악하기
서버실
- 서버가 대량으로 설치 되어 있음
- 서버에서 나오는 열기로 인해 실내 온도 낮게 설정
- 빛도 들어오지 않음
랙
- 서버가 장착됨
- 서버 외에도 HDD가 장착됨
- LAN을 연결하기 위한 스위치 등도 함께 탑재
- 규격이 정해져 있음 (대부분 폭이 19인치, 높이 9cm*40여개 눈금)
- 전원 및 케이블 선은 모두 뒤로 연결
-
- 서버 설치 시 중요한 점
-
- 서버크기 (U)
- 소비 전력 (A)
- 중량 (Kg)
2.1.2 서버 내부 구성
- 버스(Bus) : 컴포넌트를 연결하는 선
- CPU와 메모리는 물리적으로 직접 연결
- PCI Express 슬롯 : 외부 장치를 연결하는 곳
- Xeon 확장 프로세서 아키텍처 : CPU가 PCI를 직접 제어
- BMC(Baseboard Management Controller)
- 서버의 HW 상태를 감시
- 독립적으로 움직임
- 서버의 H/W에서 장애가 발생한 경우
- BMC 콘솔을 통해 서버 상태를 확인
- 네트워크로 접속해서 서버를 원격으로 재시작 가능
- 서버와 PC는 물리적으로 기본 구성이 같음
- 서버는 전원이 이중화되어 있어 장애에 강함
- 대용량 CPU나 메모리가 탑재되어 있는 정도가 PC와 다름
2.2 CPU
CPU(Central Processing Unit) : 서버 중심에 위치해서 연산 처리를 실시
- 명령을 받아서 연산을 실행 → 결과를 반환
- 명령과 데이터는 기억 장치나 입출력 장치를 통해 전달
- 코어(core)
- 하나의 CPU에 여러 개의 코어가 존재하는 멀티 코어화 진행 중
- 코어는 각자가 독립된 처리 가능
- 명령을 내리는 주체 : 운영체제(OS)
- OS 에 명령을 내리는 주체 : 프로세스와 사용자의 입력
- 끼어들기(Interrupt) 처리
2.3 메모리
메모리(기억 영역) : CPU 옆에 위치
- CPU에 전달하는 내용이나 데이터를 저장
- 처리 결과를 받음
- 서버를 재시작하면 데이터가 날아감
- 메모리에 저장되는 정보는 영구성이 없음
- 엑세스를 빠르게 할 수 있어 사용
- CPU 자체에도 메모리 존재
- 레지스터, 1차(L1)/2차(L2) 캐시
- 일반 메모리보다 더 빠르지만 용량이 작음
- 메모리 영역이 여러개 존재하는 이유
- 캐시를 여러 단으로 배치해서 대기시간을 줄임
- 처리 지연을 줄이는 것이 목적
- 자주 사용하는 명령/데이터를 코어 가까운곳에 배치
- 캐시를 여러 단계로 배치해서 자주 사용할 수록 가까운 곳에 배치
- 메모리 인터리빙(Memory Interleaving)
- 대부분의 데이터가 연속해서 엑세스가 된다는 규칙을 기반
- 최대 세 개의 채널을 사용해서 데이터 1을 요구하면 데이터 2와 3을 함께 보냄.
- 먼저 읽음으로써 처리 지연 줄여줌
- 모든 채널의 동일 뱅크에 메모리를 배치
- 채널 영역을 많이 사용할 수 있음
- 메모리는 다단계 구조를 가지고 각각의 액세스 속도에 맞게 사용됨
- CPU의 데이터 처리 속도를 줄일 수 있음
2.4 I/O 장치
2.4.1 하드 디스크 드라이브(HDD)
- 메모리에 비해 CPU에서 떨어진 곳에 HDD가 배치됨
- 장기 저장 목적의 데이터 저장 장소로 사용됨
- 메모리는 전기가 흐르지 않으면 데이터가 사라짐
- 반면, 디스크는 전기가 없어도 데이터가 사라지지 않음
- HDD 내부에서 고속으로 회전해서 읽기/쓰기 처리
- 순식간에 액세스할 수 없음
- 최근에는SSD(Solid State Disk, 반도체 디스크) 사용
- 물리적인 회전 요소를 사용하지 않음
- 메모리와 같이 반도체로 만들어졌으나 전기가 없어도 데이터가 사라지지 않음
- 메모리와 기억 장치 간 속도 차이가 거의 없음
- ‘스토리지(Storage, 저장소)’ : HDD가 많이 탑재된 하드웨어
- CPU와 캐시가 존재하고 수많은 HDD 외에도 여러 기능 탑재
- 서버와 I/O 시에는 HDD 가 캐시를 통해서 데이터 교환 진행
- 직접 데이터 교환을 하는 것이 아님
- 대형 저장소와 연결할 때는 파이버 채널(Fiber Channel, FC)사용
- 케이블
- SAN(Storage Area Network)이라는 네트워크 경유
- SAN에 접속하기 위해 PCI 슬롯에 HBA라는 카드 삽입
- 보통의 서버 시스템 포트에 존재하지 않음
- 캐시라는 메모리 영역에 액세스함으로써 I/O 진행
- 읽기 캐시의 경우 캐시상의 데이터 복사본만 있으면 가능
- 하지만 쓰기 시에는 캐시에만 데이터를 기록한 후 완료했다고 간주하는 경우 데이터를 잃을 가능성이 있음
- 캐시에 저장해서 쓰기 처리가 종료되기 때문에 고속 I/O를 실현할 수 있다는 것이 장점.
- (Write Back)
- 대부분의 저장소 제품에서는 이 캐시를 별도의 캐시와 미러링해서 안정성 높임
- 캐시와 HDD에 모두 액세스함으로써 I/O 진행
- 읽기 시에 캐시에 데이터가 없으면 읽기 처리를 위해 액세스, 쓰기 시에는 캐시와 디스크를 모두 읽어서 라이트 백과 비교
- 더 확실한 쪽에 쓰기 처리를 실시하기 위해 액세스
- 쓰기 캐시의 장점은 없음 (Write Through)
- 기본적으로는 캐시의 장점을 살리기 위해 Write Back으로 설정
2.4.2 네트워크 인터페이스
네트워크 인터페이스는 서버와 외부 장비를 연결하기 위한 것
- 외부 접속용 인터페이스
- 서버 외부 장비로는 LAN(Local Area Network)이나 SAN 어댑터
- 네트워크에 연결된 다른 서버나 저장소 장치 있음
2.4.3 I/O 제어
Xeon 확장형 프로세서에는 PCH(Platform Controller Hub)라는 칩셋이 탑재되어 있어 CPU가 제어하는 메모리나 PCIE(PCI Express) 외의 처리 속도가 비교적 늦어도 용서되는 I/O 제어 담당
- Xeon 확장형 프로세서의 일반적인 버스 연결
- PCI의 x8, x16는 PCI의 I/O 회선이 몇 개 연결되는지를 의미.
- x8이면 8선…
- 각 CPU/칩셋 구조마다 PCI를 연결할 수 있는 회선이 정해져 있음
- Xeon 확장형 프로세서는 각 CPU가 48개의 PCI 회선 존재.
- 하지만 각 서버에는 내부적인 사용 용도도 있음
- 외부 연결을 위해 사용할 수 있는 PCI 회선 수는 CPU가 처리할 수 있는 총량보다 적음
- 최근에는 대량의 I/O 및 통신 처리를 서버에서 감당하고 있어 PCI 컨트롤러가 병목 지점이 되지 않도록 CPU가 직접 제어
- CPU 외에도 다양한 컨트롤러가 존재함으로써 CPU가 해야 할 연산에 더 집중할 수 있게 됨
- I/O 시에 관련 처리를 가능한 I/O와 가까운 곳에서 처리하는 것이 더 효율적임
- CPU에서 멀리 있는 곳
- CPU와 칩셋의 관계는 역할 분담을 위한 것
2.5 버스
버스(Bus) : 서버 내부에 있는 컴포넌트들을 서로 연결시키는 회선.
2.5.1 대역 (Throughput)
- 버스가 어느 정도의 데이터 전송 능력을 가지고 있는가, 즉 대역이 어느 정도인가가 중요
- 대역은 데이터 전송 능력을 의미.
- 한 번에 보낼 수 있는 데이터의 폭(전송폭) X 1초에 전송할 수 있는 횟수(전송 횟수)
- 전송 횟수는 1초 / 1 처리당 소요 시간(응답 시간)
2.5.2 버스 대역
- CPU에 가까운 쪽이 1초당 전송량이 크다는 것 확인 가능
- CPU와 메모리는 데이터를 대량으로 교환하기 때문에 매우 빠른 전송 능력이 요구.
- 메모리는 CPU 바로 앞에 위치
- USB 3.0 포트는 약 500MB/s 전송 능력을 가진 규격으로 저속이기 때문에 PCH 앞에 배치해도 문제 없음
- 버스 흐름에서 중요한 것은 CPU와 장치 사이에 병목 현상이 없어야 한다는 것
- 데이터 전송이 어떤 이유로 막혀 있는 상태, Bottleneck
- 외부 장치와 연결을 검토할 때는 버스나 I/O 능력 고려해야 함