[RPi] RAID 볼륨 구성
Rapbian OS를 설치하고, 놀리는 USB 포트를 활용하자
라즈베리파이를 보면 쓸데없이(?) 포트가 네 개나 있다. 여기에 USB 메모리들을 꽂아 RAID 구성을 할 수 있을 듯 하고, 그러면 성능이 얼마나 나올지도 궁금여, 본 글을 남기게 되었다.
- Raspberry Pi 3b + Raspbian lite (Debian buster) OS
- 64GB SD Card (Sandisk micro SDXC CLASS10 UHS-I U3) for Boot
- USB 2.0 Flash Drive (32G) *3ea for RAID Volume
결론적으로, Raspberry PI 3 스펙 상 성능 (USB 2.0 수준 I/O)으로는, Stripe/Parity RAID 구성을 통한 극적인 속도 개선 효과는 기대하기 어렵다. Raspberry PI 4에서 USB3.0 지원이 시작되었는데, 해당 기기부터 성능향상을 기대해볼 수 있을 듯 하다.
Raspbian OS는 최초 원격 SSH 접근이 막혀있다. SSH 접속을 위해, SD 카드에 OS 이미지를 복사한 후, ‘ssh’ 이름으로 파일 하나 만들어준다.
부팅, 랜선 연결 및 인터넷 공유까지 끝났으면, 이제 SSH로 접근할 차례다. IP는 호스트명으로 대충 찾을 수 있다.
- Windows/Linux: $ ping raspberrypi
- Mac: $ ping raspberrypi.local
라즈베리파이가 잘 켜지고, 메모리도 잘 있다면, 이제 소프트웨어 RAID 구성을 할 차례다. 32G USB 메모리 3개를 RAID 5(Parity) 로 구성하면 64G 볼륨으로 구성되고, 2배 속도를 내며, 메모리 하나가 죽어도 괜찮다. 이를 위해 mdadm 을 설치한다. ($ sudo apt-get install mdadm)
mdadm이 설치되는 동안 fdisk로 USB 메모리 파티션을 설정하자. 위에서 확인했던 디스크 경로로 fdisk를 각각 수행한다.
- $ fdisk /dev/sda
- $ fdisk /dev/sdb
- $ fdisk /dev/sdc
여기 까지 진행했으면, RAID 볼륨은 구성 되었다. 라즈베리파이 환경에서는 작업 완료까지 대충 70분 정도가 소요되는 듯 하다. 구성한 볼륨의 상태를 확인하면 ‘clean, degraded, recovering’ 으로 보이는데, 대충 속도는 떨어지지만 사용은 가능하다는 뜻이다. 볼륨이 사용가능하다면, 이제 파일시스템 설정을 진행한다.
이제 성능이 궁금해진다.
- 쓰기: $ dd if=/dev/zero of=tempfile bs=1M count=128;
- 읽기: $ dd if=tempfile of=/dev/null bs=1M count=128;
Read 속도 밴치마크를 위해 hdparm 을 쓸 수 있다.
확인한 특이사항으로, RAID5 볼륨은 SD 카드보다는 성능 좋았으나, 단일 USB 보다는 성능이 약간 떨어지는 것으로 확인하였다. 전자는 Raspbian OS 기본 설정 상 SD 속도를 제한하고 있다. 이건 오버클럭으로 해결 된다. 후자는 USB2.0 표준 속도에 기인하는 것으로 추정한다. USB2.0가 낼 수 있는 실질적 속도는 280mbps (약 35MB/S) 수준이며, 여기서 S/W RAID 구성이 병목으로 작용하여, 오히려 약간의 성능 하락이 발생하는 듯 하다.
(+) 예약 주문한 라즈베리파이4 8G 모델이 도착하였다. 본 물건 정격 전력이 15W (5V/3A)라서, 노트북에 연결해서는 경우에 따라 사용이 제한될 수 있어 보인다.
RPi 4부터 전원으로 USB-C 포트를 사용하는데, 요게 OTG 가 가능하다고 한다. 노트북이랑 usb 선 하나로 쉘 접근이 가능하다.지금까지는 라즈베리파이 제로 모델에서만 해당 방법이 통했다.
아무튼 이를 위해, SD 카드에 OS 이미지 설치 직후, config.txt 에 아래 내용 추가한다.
dtoverlay=dwc2
cmdline.txt 내용 중 rootwait 바로 뒤에 아래 내용을 추가한다. (띄어쓰기 구분 주의)
.... rootwait modules-load=dwc2,g_ether ...
ssh 빈 파일 생성까지 마치고, 노트북에서 전원을 연결하면 RNDIS를 통한 인터넷 공유가 가능하다.
이후, 위의 테스트를 반복했으며 usb flash 4개를 RAID5 로 묶고 진행했다. 확실히 쓰기 속도가 개선되었다.