Research/Raspberry Pi

라즈베리 파이5 레시피 #2 : PCIe & SSD 초고속 튜닝

Ctrl_engineer 2025. 3. 21. 20:35

안녕하세요! 라즈베리 파이5 레시피 시리즈 두 번째 이야기를 시작합니다. 지난 포스팅에서 SSH와 기본 보안 설정을 완료했다면, 이제 진짜 꿀잼이 시작됩니다. 오늘은 라즈베리 파이5의 가장 혁신적인 기능인 PCIe 인터페이스를 활성화하고 NVMe SSD를 연결해서 우리의 작은 서버를 초고속으로 업그레이드해볼 거예요! 🚀

🔥 오늘의 목표: SD카드보다 최대 10배 빠른 저장 장치로 라즈베리 파이 성능 폭증시키기!

⚡ PCIe가 뭐길래 이렇게 난리인가요?

출처: (왼) 실제사진 (오) Tom's Hardware

PCIe(PCI Express)는 컴퓨터 내부 확장 장치를 연결하는 초고속 인터페이스입니다. 라즈베리 파이 이전 세대에서는 꿈도 못 꿨던 기능인데, 파이5에서 드디어 실현되었어요! 이 인터페이스가 있으면 NVMe SSD, Wi-Fi 6E 카드, 캡처 카드 등 다양한 확장 장치를 연결할 수 있습니다.

특히 NVMe SSD를 연결하면 기존 SD카드의 병목 현상을 완전히 날려버릴 수 있어요. SD카드가 초당 수십 MB 정도의 속도라면, NVMe는 초당 수 GB의 속도를 낼 수 있으니까요! 🤯

자, 이제 본격적으로 PCIe를 활성화해볼까요?

🔧 1. PCIe 인터페이스 활성화하기

라즈베리 파이5에서는 PCIe가 기본적으로 비활성화되어 있어요. 설정 파일을 수정해서 켜줘야 합니다.

config.txt 설정하기

sudo nano /boot/firmware/config.txt

파일이 열리면 맨 아래에 다음 줄을 추가해주세요:

dtparam=pciex1_gen=3

첫 번째 줄은 PCIe x1 인터페이스를 활성화하는 설정이고, 두 번째 줄은 PCIe 3.0 세대를 사용하도록 설정하는 것입니다.

PCIe 3.0은 최대 985MB/s의 전송 속도를 지원해요. (이론상으로는 그렇고, 실제로는 조금 낮을 수 있어요)

Ctrl+O, Enter, Ctrl+X를 눌러 저장하고 나온 다음,

 

재부팅합시다.

sudo reboot

🔍 2. NVMe SSD 인식 확인하기

재부팅 후 SSH로 다시 접속해서 NVMe SSD가 제대로 인식되는지 확인해볼까요?

PCIe 장치 확인

lspci

출력 결과에서 "Non-Volatile memory controller"나 여러분이 연결한 SSD 모델명이 보인다면 성공입니다! 대략 이런 내용이 보일 거예요:

01:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller (rev 03)

블록 장치 확인

lsblk

출력 결과에 nvme0n1 같은 장치가 보인다면 NVMe SSD가 정상적으로 인식된 겁니다!

PCIe 속도 확인

얼마나 빠른 속도로 연결되었는지 확인해볼까요?

sudo cat /sys/class/pci_bus/0000\\:01/device/0000\\:01\\:00.0/current_link_speed

8 GT/s라고 나오면 PCIe 3.0으로 제대로 연결된 거예요! (GT/s는 Gigatransfers per second의 약자)

💾 3. SSD 마운트하기

이제 인식된 SSD를 실제로 사용할 수 있게 설정해봅시다! 마운트 과정은 크게 네 단계로 이루어져요:

  1. 파티션 생성
  2. 포맷
  3. 마운트 포인트 생성
  4. 자동 마운트 설정

먼저 디스크 확인

lsblk

여기서 nvme0n1이 보이면 다음 단계로 진행하세요.

파티션 생성하기

요즘은 MBR보다 GPT 파티션 테이블이 더 안정적이니, parted를 사용할게요:

sudo parted /dev/nvme0n1

parted 프롬프트에서 다음 명령어들을 순서대로 입력하세요:

mklabel gpt
unit GB
mkpart primary ext4 0% 100%
print
quit

이 과정이 끝나면 디스크에 GPT 파티션 테이블이 생성되고, 전체 디스크를 사용하는 하나의 파티션(nvme0n1p1)이 만들어졌어요!

파티션 포맷하기

이제 파티션을 Linux에서 가장 많이 사용하는 ext4 파일 시스템으로 포맷해볼게요:

sudo mkfs.ext4 /dev/nvme0n1p1

몇 초 정도 기다리면 포맷이 완료됩니다. 이제 실제로 파일을 저장할 준비가 되었어요!

마운트 포인트 생성하기

리눅스에서는 물리적 저장장치를 폴더에 연결(마운트)하는 방식으로 사용해요. 마운트할 폴더를 하나 만들어 볼까요?

sudo mkdir /mnt/nvme

/mnt 디렉토리는 일반적으로 영구적인 저장장치를 마운트하는 위치로 사용됩니다.

UUID 확인하기

안정적인 마운트를 위해 파티션의 UUID를 확인하고 복사해두세요:

sudo blkid | grep /dev/nvme

출력된 결과에서 UUID="여기에 긴 문자열" 부분을 찾아 그 문자열을 복사해두세요.

자동 마운트 설정하기

시스템이 재부팅될 때마다 자동으로 SSD를 마운트하려면 /etc/fstab 파일을 수정해야 합니다:

sudo nano /etc/fstab

파일 맨 아래에 다음 줄을 추가하세요 (UUID는 앞서 복사한 값으로 바꿔주세요):

UUID=f5b15bbb-fa0d-4cd4-bc90-3d9b29cd947c /mnt/nvme ext4 defaults 0 0

💡 주의: 여기서 UUID는 예시입니다! 여러분의 실제 UUID로 바꿔주세요.

Ctrl+O, Enter, Ctrl+X로 저장하고 나갑니다.

설정 적용하기

이제 새 마운트 설정을 적용해볼까요?

sudo systemctl daemon-reload
sudo mount -a

에러 메시지가 없으면 성공이에요! 제대로 마운트되었는지 확인해볼까요?

lsblk

이제 nvme0n1p1이 /mnt/nvme에 마운트된 것을 확인할 수 있을 거예요.

💨 4. SSD 성능 최적화: TRIM 활성화

SSD를 오래, 빠르게 사용하려면 TRIM이라는 기능을 활성화해야 해요. TRIM은 SSD가 더 이상 사용하지 않는 데이터 블록을 효율적으로 관리할 수 있게 도와주는 명령어입니다.

TRIM 상태 확인

다행히 최신 우분투에서는 TRIM이 자동으로 설정되어 있을 가능성이 높아요. 확인해볼까요?

sudo systemctl status fstrim.timer

출력 결과에 다음과 같이 나타나면 TRIM이 정상적으로 설정된 거예요:

Active: active (waiting) since Sun 2025-03-06 12:34:56 UTC; 3h ago

만약 활성화되어 있지 않다면 다음 명령어로 활성화할 수 있어요:

sudo systemctl enable fstrim.timer
sudo systemctl start fstrim.timer

🚀 5. (선택사항) 부트 시퀀스 변경하기

기본적으로 라즈베리 파이는 SD 카드에서 부팅하도록 설정되어 있어요. 하지만 NVMe SSD에서 직접 부팅하고 싶다면 EEPROM 설정을 수정해야 합니다.

sudo rpi-eeprom-config --edit

BOOT_ORDER 설정을 찾아 0xf41을 0xf416으로 변경하세요. 이 설정은 SSD를 SD 카드보다 먼저 찾도록 변경하는 것입니다.

⚠️ 주의: 이 설정은 복잡하고 위험할 수 있어요. SD 카드에서 부팅해도 충분히 빠르니 굳이 변경하지 않아도 됩니다!

🧪 5. SSD 성능 테스트하기

자, 이제 우리의 NVMe SSD가 얼마나 빠른지 테스트해볼까요? hdparm 도구를 설치하고 읽기 속도를 측정해봅시다:

sudo apt install -y hdparm
sudo hdparm -t /dev/nvme0n1

출력 결과를 확인해보세요! SD 카드가 보통 20-40MB/s 정도의 속도를 보여준다면, NVMe SSD는 수백 MB/s의 속도를 보여줄 거예요! 🤯

또 다른 방법으로는 파일을 직접 복사해서 체감 속도를 확인해볼 수도 있어요:

# 1GB 더미 파일 생성
dd if=/dev/zero of=/mnt/nvme/test_file bs=1M count=1000

# 파일 삭제
rm /mnt/nvme/test_file

🎮 실제 활용 방법

이제 고속 저장장치가 준비되었으니 어떻게 활용할 수 있을까요?

  1. 데이터베이스 서버: MongoDB, MySQL, PostgreSQL 등의 데이터베이스를 NVMe SSD에 설치하면 놀라운 성능을 경험할 수 있어요!
  2. 도커 컨테이너 저장소: 도커 이미지와 컨테이너를 SSD에 저장하면 빌드와 실행 속도가 크게 향상됩니다.
  3. 대용량 파일 처리: 대용량 로그 파일이나 연구 데이터를 처리할 때 SSD의 빠른 읽기/쓰기 속도가 큰 도움이 됩니다.
  4. 웹 서버 캐시: Nginx나 Apache의 캐시 디렉토리를 SSD에 두면 웹 서버 응답 속도가 빨라집니다.

💡 오늘의 꿀팁

  1. NVMe SSD 선택 팁: 라즈베리 파이5는 PCIe 3.0 x1을 지원하므로, 최신 PCIe 4.0 SSD를 구입해도 PCIe 3.0 속도로만 동작해요. 가성비를 생각한다면 PCIe 3.0 SSD를 고르세요!
  2. 발열 관리: NVMe SSD는 고속으로 동작할 때 열이 많이 발생할 수 있어요. 방열판이 장착된 모델을 선택하거나, 별도의 방열판을 추가하는 것이 좋습니다.
  3. 백업 중요!: SSD는 빠르지만 SD 카드보다 비싸고, 모든 저장장치는 언젠가 고장날 수 있어요. 중요한 데이터는 반드시 정기적으로 백업하세요!

🏁 다음 레시피 예고

다음 편에서는 네트워크 설정을 최적화하고, SSH 키 인증 설정, ProxyJump 설정, 클러스터 네트워크 구성 등을 다뤄볼 예정이에요! 외부에서도 안전하게 라즈베리 파이에 접속하는 방법을 알아보죠.

질문이나 문제가 있으시면 댓글로 남겨주세요. 함께 해결해봅시다! 😉


이 글이 도움이 되셨다면 공유 부탁드려요! 다음 편도 놓치지 마세요!