Infra

서버를 열어 보자

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 능력 고려해야 함

    Leave a Reply