라즈베리파이 5로 웹 서버를 구성할 때 필요한 부품의 선정 기준, 조립 순서, 부팅 구조를 정리하였다. 예제는 genealogypost.com 을 운영하는 서버의 실제 구성이다. 수치는 모두 이 서버에서 2026-10-03 에 명령어로 확인한 값이며, 확인에 쓴 명령어를 그림과 표에 함께 적었다.
1.1 구성품 선정
그림 1은 genealogypost.com 서버의 하드웨어 구성을 나타낸다. 보드에 전원 어댑터와 냉각기를 연결하고, 운영체제는 microSD 카드에 설치하였다. 자료 보관용 NVMe SSD 는 M.2 HAT 를 거쳐 PCIe 커넥터에 연결하였다.
표 1은 그림 1의 부품을 확인한 방법과 그 결과를 나타낸다.
| 구분 | 부품 | 확인 명령 | 확인 값 |
|---|---|---|---|
| 보드 | Raspberry Pi 5 Model B 8 GB | cat /proc/cpuinfo |
Revision d04170, Rev 1.0 |
| 전원 | USB-C PD 어댑터 | /proc/device-tree/chosen/power/max_current |
5000 mA 로 협상 |
| 냉각 | Active Cooler | fan1_input |
3391 rpm |
| 부팅 저장장치 | Samsung microSD 512 GB | /sys/block/mmcblk0/device |
제조 2024-04, 인식 용량 477.5 GiB |
| 자료 저장장치 | SK hynix Gold P31 1 TB | lspci |
SHGP31-1000GM |
| M.2 HAT | 2구 M.2 HAT | lspci |
ASMedia ASM1182e PCIe 스위치 |
1.1.1 메모리 용량
라즈베리파이 5는 메모리 용량만 다른 모델로 나뉘어 판매되며, 모델별 출시 가격은 표 5에 적었다. 메모리는 보드에 납땜되어 있어 구입 후에는 늘릴 수 없다. 따라서 용량은 서버에서 실행할 프로그램의 사용량을 기준으로 정한다.
genealogypost.com 서버에서는 Apache, MariaDB, PHP 로 WordPress 를 운영한다. free -m 으로 확인한 사용량은 전체 8062 MiB 가운데 1649 MiB 였고, 새 프로그램에 내줄 수 있는 양(available)은 6413 MiB 였다. 사용량이 4 GB 의 절반에 미치지 않으므로 같은 구성이면 4 GB 모델로도 운영할 수 있는 것으로 판단된다.
1.1.2 전원 어댑터
라즈베리파이 5의 공식 전원 어댑터는 USB-C PD 방식으로 5 V 5 A(27 W)를 공급한다. 보드는 부팅할 때 어댑터와 공급 전류를 협상한다. 5 A 를 확인하지 못하면 USB 포트 4개에 공급하는 전류를 합계 600 mA 로 제한하고 화면에 경고를 띄운다. 이 경우 USB 로 연결한 SSD 나 하드디스크가 전류 부족으로 인식되지 않을 수 있다.
그림 2는 genealogypost.com 서버에서 전원 상태를 확인한 결과이다. 협상한 전류는 5000 mA 이며, get_throttled 값 0x0 은 부팅 후 저전압과 클럭 제한이 한 번도 일어나지 않았음을 의미한다.
$ od -An -tu4 --endian=big /proc/device-tree/chosen/power/max_current
5000
$ vcgencmd get_config usb_max_current_enable
usb_max_current_enable=1
$ vcgencmd get_throttled
throttled=0x01.1.3 냉각 방식
라즈베리파이 5의 SoC(BCM2712)는 부하가 걸리면 온도가 빠르게 오른다. 펌웨어는 SoC 온도가 85 °C 에 이르면 클럭을 낮추어 발열을 줄인다. 서버처럼 쉬지 않고 동작하는 용도에서는 클럭이 낮아지지 않도록 팬이 달린 냉각기를 쓴다.
공식 Active Cooler 는 보드의 4핀 FAN 커넥터에 연결하며, 펌웨어가 SoC 온도에 따라 회전수를 단계별로 바꾼다. 표 2는 genealogypost.com 서버의 커널이 팬 단계를 바꾸는 온도를 나타낸다. 값은 /sys/class/thermal/thermal_zone0/trip_point_*_temp 에서 읽었다.
| 트립 포인트 | 온도 | 동작 |
|---|---|---|
| trip_point_1 | 50 °C | 팬 1단 |
| trip_point_2 | 60 °C | 팬 2단 |
| trip_point_3 | 67.5 °C | 팬 3단 |
| trip_point_4 | 75 °C | 팬 최대 |
| trip_point_0 | 110 °C | 강제 종료 |
측정 시점의 SoC 온도는 55.1 °C 로 팬 1단 구간이었으며, 회전수는 3391 rpm 이었다. 5주 넘게 연속 운영한 상태에서도 클럭 제한 온도(85 °C)보다 약 30 °C 낮은 온도를 유지하였다.
1.1.4 저장장치
라즈베리파이 5에 운영체제를 설치할 수 있는 저장장치는 microSD 카드, NVMe SSD, USB 저장장치이다. 표 3은 세 장치의 연결 방식과 genealogypost.com 서버에서 측정한 순차 읽기 속도를 나타낸다. 속도는 dd if=/dev/장치 of=/dev/null bs=4M count=128 iflag=direct 로 512 MiB 를 읽어 측정하였다.
| 장치 | 연결 방식 | 순차 읽기 | 비고 |
|---|---|---|---|
| microSD (Samsung 512 GB) | UHS-I SDR104, 버스 클럭 200 MHz | 92.9 MB/s | 보드 아래면 슬롯 |
| NVMe SSD (SK hynix P31 1 TB) | PCIe Gen2 x1 (5 GT/s) | 440 MB/s | M.2 HAT 필요 |
| USB 저장장치 | USB 3.0 (5 Gbps) | 측정하지 않음 | 보드의 파란색 USB 포트 2개 |
NVMe SSD 의 순차 읽기 속도는 microSD 의 약 4.7배였다. 다만 이 SSD 는 Gen3 x4(8 GT/s, 4레인)를 지원하는 제품인데, 그림 3과 같이 실제 연결은 Gen2 x1 로 이루어졌다. 따라서 이 구성에서 읽기 속도의 상한은 보드의 PCIe 커넥터(1레인)와 HAT 의 스위치(ASM1182e, Gen2)의 연결 속도로 정해지는 것으로 판단된다.
$ lspci -vv -s 0001:03:00.0 | grep -E "LnkCap|LnkSta"
LnkCap: Port #0, Speed 8GT/s, Width x4
LnkSta: Speed 5GT/s (downgraded), Width x1 (downgraded)genealogypost.com 서버는 운영체제를 microSD 에 두고 NVMe SSD 는 백업과 자료 보관에 쓴다. NVMe 로 부팅하는 구성은 Ⅱ-5 저장장치와 파일시스템에서 다룬다.
1.1.5 부가 부품
표 4는 기본 구성 외에 용도에 따라 추가하는 부품과 그 부품을 연결하는 보드의 커넥터를 나타낸다.
| 부품 | 보드의 커넥터 | 필요한 경우 |
|---|---|---|
| M.2 HAT | PCIe FFC 커넥터 | NVMe SSD 를 연결할 때 |
| 케이스 | 고정 구멍 4개 | 보드를 먼지와 충격에서 보호할 때 |
| RTC 배터리 | BAT 커넥터(J5) | 전원이 끊긴 동안에도 시계를 유지할 때 |
| micro HDMI 케이블 | micro HDMI 포트 2개 | 모니터를 연결해 설치할 때 |
1.2 구입처 및 비용
라즈베리파이 제품은 제조사 웹사이트(raspberrypi.com)의 Approved Reseller 목록에 있는 판매처에서 구입한다. 목록에서 국가를 고르면 그 나라의 공인 판매처가 표시된다. 목록에 없는 판매처의 제품은 병행수입품일 수 있으며, 이 경우 판매처를 통한 교환과 수리를 받지 못할 수 있다.
표 5는 제조사가 출시할 때 발표한 가격이다. 국내 판매가는 환율과 판매처에 따라 다르므로 구입 전에 판매처에서 확인한다.
| 제품 | 출시 가격 |
|---|---|
| Raspberry Pi 5 2 GB | 50 |
| Raspberry Pi 5 4 GB | 60 |
| Raspberry Pi 5 8 GB | 80 |
| Raspberry Pi 5 16 GB | 120 |
| 27 W USB-C 전원 어댑터 | 12 |
| Active Cooler | 5 |
| M.2 HAT+ (1구, 공식) | 12 |
| 공식 케이스 | 10 |
8 GB 보드, 전원 어댑터, Active Cooler, 공식 M.2 HAT+, 공식 케이스를 합한 출시 가격은 119 USD 이다. microSD 카드와 NVMe SSD 는 이 금액에 포함되지 않는다. genealogypost.com 서버는 SSD 2개를 연결할 수 있는 제3사 2구 HAT 를 사용하였다.
1.3 하드웨어 조립
그림 4는 조립 순서를 나타낸다. 아래층 부품부터 위층 부품의 순서로 쌓는다. 냉각기를 HAT 보다 먼저 다는 까닭은 HAT 를 올린 뒤에는 냉각기의 고정 핀에 손이 닿지 않기 때문이다.
- 보드를 정전기가 없는 평평한 곳에 놓는다. 손은 먼저 접지된 금속에 대어 몸의 정전기를 방전한다.
- Active Cooler 의 열전도 패드 보호 필름을 떼고, 고정 핀 2개를 보드의 구멍에 눌러 끼운다. 팬 케이블은 보드의 FAN 커넥터에 연결한다.
- PCIe FFC 커넥터의 잠금 막대를 들어 올리고 케이블을 끝까지 넣은 뒤 막대를 내린다. 케이블의 방향은 HAT 설명서의 그림을 따른다.
- 보드의 고정 구멍 4개에 지지대(스탠드오프)를 나사로 조이고, 그 위에 M.2 HAT 를 올려 나사로 고정한다. 케이블의 다른 쪽 끝은 HAT 의 커넥터에 같은 방법으로 연결한다.
- NVMe SSD 를 HAT 의 M.2 슬롯에 비스듬히 넣고 눌러 나사로 고정한다.
- 조립한 보드를 케이스에 넣는다.
FFC 케이블은 접어서 꺾이면 내부 도선이 끊어진다. 잠금 막대를 올리지 않고 케이블을 밀어 넣으면 커넥터가 파손된다.
1.4 부팅 구조
1.4.1 부팅 장치 탐색 순서
라즈베리파이 5는 보드의 EEPROM 에 저장된 부트로더가 운영체제를 찾아 실행한다. 부트로더는 설정값 BOOT_ORDER 에 적힌 순서대로 장치를 확인한다. 그림 5는 genealogypost.com 서버의 부트로더 설정이다.
$ rpi-eeprom-config
[all]
BOOT_UART=1
POWER_OFF_ON_HALT=0
BOOT_ORDER=0xf461
NET_INSTALL_AT_POWER_ON=1BOOT_ORDER 값은 16진수 한 자리가 장치 하나를 뜻하며, 오른쪽 자리부터 차례로 읽는다. 그림 6과 같이 0xf461 은 microSD(1), NVMe(6), USB 저장장치(4)의 순서로 부팅 파일을 찾고, 셋 모두에 없으면 처음부터 다시 찾는다(f). genealogypost.com 서버는 첫째 순서인 microSD 에 운영체제가 있으므로 microSD 로 부팅한다.
1.4.2 상태 LED
보드 가장자리의 상태 LED 는 전원과 부팅 상태를 빛깔과 깜빡임으로 표시한다. 표 6은 그 의미를 나타낸다. 오류 코드의 깜빡임 횟수별 의미는 제조사 문서(raspberrypi.com/documentation)의 LED warning flash codes 표에 정리되어 있다.
| 표시 | 의미 |
|---|---|
| 녹색 불규칙 깜빡임 | 운영체제가 동작 중이며 저장장치를 읽거나 쓰고 있음 |
| 빨간색 켜짐 | 전원은 연결되어 있으나 보드가 꺼진 대기 상태 |
| 녹색 긴 깜빡임과 짧은 깜빡임의 반복 | 부트로더 오류 코드. 긴 깜빡임 횟수와 짧은 깜빡임 횟수의 조합으로 원인을 구분 |
1.4.3 모니터 연결 방식과 원격 접속 방식
설치와 관리는 모니터를 연결하는 방식과 같은 네트워크의 PC 에서 SSH 로 접속하는 방식(headless) 가운데 하나로 한다. 표 7은 두 방식을 비교한 것이다.
| 항목 | 모니터 연결 | headless (SSH) |
|---|---|---|
| 필요한 장비 | 모니터, micro HDMI 케이블, 키보드, 마우스 | 같은 네트워크의 PC |
| 초기 설정 시점 | 첫 부팅 후 설정 마법사 | microSD 카드를 만들 때 Imager 의 사용자 지정 |
| 설치할 OS | Desktop 판 | Desktop 판 또는 Lite 판 |
genealogypost.com 서버에는 Desktop 판(Raspberry Pi reference 2024-11-19)을 설치하였다. 이는 /etc/rpi-issue 와 기본 부팅 대상 graphical.target 으로 확인하였다. 운영 중에는 모니터 없이 SSH 로 관리한다.
microSD 카드를 고르고 운영체제를 기록하는 과정은 Ⅰ-2 Raspberry Pi OS 설치에서 다룬다.
연재 전체 목차와 다음 글의 차례는 Ⅰ-3 라즈베리파이 5 서버 연재 계획 및 교재 목차 분석에 정리하였다.