HBA/RAID controller
Jump to navigation
Jump to search
HBA/RAID Controller
Overview
HBA(Host Bus Adapter)와 RAID Controller는 서버의 저장 장치를 연결하고 관리하는 확장 카드입니다. HBA는 OS에 디스크를 직접 노출하고, RAID Controller는 온보드 RAID 기능을 제공하여 여러 디스크를 단일 가상 드라이브로 통합합니다.
Summary
- 무엇인가? — 서버 저장 장치 연결 및 관리용 확장 카드
- 왜 필요한가? — 다수 디스크 연결, RAID 구성, 성능 최적화
- 언제 사용하는가? — 데이터센터, 스토리지 서버, HPC 클러스터
Purpose
이 문서가 존재하는 이유
- Goal: HBA/RAID Controller 기본 개념, 인터페이스, RAID 레벨, 성능, 캐시 보호 기능 제공
- Scope: HBA vs RAID vs SAS Expander, 인터페이스 대역폭, RAID 레벨별 성능, BBU/CacheVault/CacheCade
- Non-goals: RAID 컨트롤러 펌웨어 업그레이드, 특정 제조사(LSI/Broadcom/Adaptec) 상세 설정은 별도 문서
Key Concepts
| Concept | Description | Related |
|---|---|---|
| HBA | Host Bus Adapter — OS에 디스크 직접 노출 | HBA/RAID controller |
| RAID Controller | 온보드 RAID 기능 제공 | HBA/RAID controller |
| SAS Expander | SAS 포트 확장 장치 | HBA/RAID controller |
| RAID 0 | 스트라이핑 — 성능 최적화 | HBA/RAID controller |
| RAID 1 | 미러링 — 내구성 최적화 | HBA/RAID controller |
| RAID 5 | 단일 패리티 — 균형 | HBA/RAID controller |
| RAID 6 | 이중 패리티 — 높은 내구성 | HBA/RAID controller |
| BBU | Battery Backup Unit — 캐시 보호 | HBA/RAID controller |
Architecture
RAID 컨트롤러는 CPU 인터페이스와 저장 장치 인터페이스로 구성됩니다:
graph TD
A[RAID Controller] --> B[CPU Side - PCIe/DMI]
A --> C[Drive Side - SAS/SATA/NVMe]
B --> D[PCIe Gen3 x8/x16]
B --> E[PCIe Gen4 x8/x16]
C --> F[SATA 6G]
C --> G[SAS 12G]
C --> H[NVMe Gen3/Gen4]
A --> I[Cache - BBU/CacheVault]
A --> J[RAID Virtual Drive]
J --> K[OS]
Workflow
| Stage | Input | Output |
|---|---|---|
| Selection | Workload requirements | HBA/RAID controller model |
| Configuration | RAID level + Drives | Virtual Drive |
| Monitoring | lspci / /proc/scsi/scsi | Controller status |
| Cache Protection | BBU/CacheVault/CacheCade | Write cache safety |
Detailed Explanation
HBA vs RAID Controller vs SAS Expander
| 장치 | 설명 | 관리 주체 |
|---|---|---|
| HBA | SAS/SATA 포트 확장 카드. 디스크 관리는 OS 담당. | OS (예: Linux mdadm, ZFS) |
| RAID Controller | HBA + 온보드 RAID 기능. 가상 드라이브를 OS에 제공. | RAID 카드 펌웨어 |
| SAS Expander | HBA/RAID 컨트롤러의 포트 수를 확장하는 장치. | — |
Native 및 Maximum 지원 디스크 수
- **Native Supported Disks** — 브레이크아웃 케이블로 RAID 컨트롤러에 직접 연결 가능한 디스크 수
- **Maximum Supported Disks** — 포트 익스팬더(예: Intel RES2SV240) 사용 시 최대 지원 디스크 수
Controller Interface
저장 장치 측 인터페이스
| Storage Drive Side Interface | Communication Band | Theoretical Throughput | Effective Throughput (90%) |
|---|---|---|---|
| SATA 6G | 6 Gbps | 572 MiB/s | 515 MiB/s |
| SAS 12G | 12 Gbps | 1,144 MiB/s | 1,030 MiB/s |
| NVMe Gen3 | 8 Gbps x4 | 3,756 MiB/s | 3,380 MiB/s |
| NVMe Gen4 | 16 Gbps x4 | 7,512 MiB/s | 6,760 MiB/s |
CPU 측 인터페이스
| CPU Side Interface | Lanes | Communication Band | Theoretical Throughput | Effective Throughput (90%) |
|---|---|---|---|---|
| DMI Gen3 | x4 | 8 Gbps x4 | 3,756 MiB/s | 3,380 MiB/s |
| PCIe Gen3 | x8 | 8 Gbps x8 | 7,512 MiB/s | 6,760 MiB/s |
| PCIe Gen3 | x16 | 8 Gbps x16 | 15,024 MiB/s | 13,520 MiB/s |
| PCIe Gen4 | x8 | 16 Gbps x8 | 15,024 MiB/s | 13,520 MiB/s |
| PCIe Gen4 | x16 | 16 Gbps x16 | 30,048 MiB/s | 27,040 MiB/s |
※ 이론적 대역폭 = 128b/130b 인코딩 오버헤드(1.54%) 차감 ※ 실제 대역폭 = 이론적 × 0.90
RAID 레벨별 예상 성능
| RAID Level | Type | Random Read | Random Write | Seq Read | Seq Write | Features |
|---|---|---|---|---|---|---|
| RAID 0 | Stripe | 1 | 1 | N × SR | N × SW | 높은 대역폭, 내구성 없음 |
| RAID 1 | Mirror | 1 | 2 | N × SR | N × SW / 2 | 내구성 우수, 최소 용량 |
| RAID 10 | Mirror + Stripe | 1 | 2 | N × SR | N × SW / 2 | 내구성 + 성능 균형 |
| RAID 5 | Single Parity | 1 | 4 | N × SR | (N-1) × SW | 내구성 + 낮은 오버헤드 |
| RAID 50 | RAID 5 + Stripe | — | — | — | — | RAID 5 그룹당 1드라이브 실패 허용 |
| RAID 6 | Double Parity | 1 | 6 | N × SR | (N-2) × SW | 높은 내구성, 쓰기 많음에 부적합 |
| RAID 60 | RAID 6 + Stripe | — | — | — | — | RAID 6 그룹당 2드라이브 실패 허용 |
※ N: 드라이브 수, SR: 단일 읽기 성능, SW: 단일 쓰기 성능
RAID 구성 전략
| 목적 | 전략 | Hot Spare |
|---|---|---|
| 가용성 (내구성) | RAID 1 (미러링) — 우수한 내구성, 중복 드라이브 필요 | Hot Spare가 자동으로 교체 및 재빌드. RAID 1/5/6/10/50/60 지원. |
| 성능 | RAID 0 (스트라이핑) — 우수한 성능 RAID 00 (스팬드 스트라이핑) — 우수한 성능 RAID 5 — 대용량 파일 높은 처리량 RAID 6 — 높은 신뢰성, 높은 요청률, 높은 전송 | |
| 용량 | RAID 0 — 주어진 드라이브 세트 최대 용량 |
성능 지표
| 지표 | 단위 | 설명 |
|---|---|---|
| Throughput | MiB/s | 초당 데이터 전송량 (메가바이트) |
| Transaction | IO/s | 초당 IO 처리량 |
| Latency | ms | 평균 응답 시간 (밀리초) |
- 계산 공식:**
- Data throughput [KiB/s] = Transaction rate [IO/s] × Block size [KiB]
- Transaction rate [IO/s] = Data throughput [KiB/s] / Block size [KiB]
※ 시퀀셜 액세스 패턴 → Throughput, 랜덤 액세스 패턴 → Transaction Rate
Linux에서 컨트롤러 정보 확인
# 컨트롤러 정보 찾기
$ sudo lspci -vv | grep -i raid
# RAID 구성 확인
$ cat /proc/scsi/scsi
BBU vs CacheVault vs CacheCade
| 기능 | 설명 | 데이터 유지 기간 |
|---|---|---|
| BBU (Battery Backup Unit) | 전원 중단 시 캐시 데이터 보존. 전원 복구 시 디스크에 기록. | 최대 72시간 |
| CacheVault | DRAM → NAND 플래시 이동. BBU 차세대 기술. | 최대 3년 |
| CacheCade | SSD 기반 읽기/쓰기 캐시. HDD 어레이 성능 최적화. | 재부팅 시 유지 |
- BBU 중요성:**
- Write Cache가 "Write Through" 또는 "Off"이면 BBU 불필요
- Write Cache가 "On"일 때만 BBU 필요 (성능 최적화)
- BBU 미설치 시 Write Cache가 자동으로 Off될 수 있음
- 데이터 무결성이 중요한 경우 BBU 필수
Configuration
# 컨트롤러 정보 확인
$ sudo lspci -vv | grep -i raid
# RAID 구성 확인
$ cat /proc/scsi/scsi
# SAS 디바이스 확인
$ sudo lspci -vv | grep -i sas
# NVMe 디바이스 확인
$ nvme list
Examples
Example 1: RAID 컨트롤러 정보 확인
# RAID 컨트롤러 정보
$ sudo lspci -vv | grep -i raid
# SAS 컨트롤러 정보
$ sudo lspci -vv | grep -i sas
# 전체 PCI 디바이스 목록
$ lspci
Example 2: RAID 구성 확인
# SCSI 디바이스 목록
$ cat /proc/scsi/scsi
# NVMe 디바이스 목록
$ nvme list
# NVMe 스마트 로그
$ nvme smart-log /dev/nvme0
Best Practices
- 워크로드에 맞는 RAID 레벨 선택 (읽기 중심 → RAID 0/5, 쓰기 중심 → RAID 10)
- BBU 또는 CacheVault 설치 — Write Cache 활성화 시 필수
- Hot Spare 구성 — 장애 시 자동 복구
- SAS Expander 활용 — 디스크 수 확장
- PCIe Gen4 x16 사용 — 최대 대역폭 확보
- 정기적인 RAID 상태 모니터링
- NVMe SSD 사용 — 높은 IOPS 및 낮은 지연 시간
Limitations
- RAID 레벨 간 트레이오프 존재 (내구성 vs 성능 vs 용량)
- RAID 6는 쓰기 작업에 부적합 (이중 패리티 오버헤드)
- BBU는 수명 제한 있음 (배터리 교체 필요)
- CacheCade는 SSD 용량 제한 있음
- RAID 재구성은 데이터 손실 위험 있음
References
- https://sp.ts.fujitsu.com/dmsp/Publications/public/wp-raid-controller-performance-2021-ww-en.pdf
- https://www.cisco.com/c/dam/en/us/td/docs/unified_computing/ucs/3rd-party/lsi/mrsas/userguide/LSI_MR_SAS_SW_UG.pdf
- https://www.hostdime.com/blog/bbu-vs-cachevault-vs-cachecade/
Related Pages
Knowledge Graph
Related
→ Storcli → SSD → Hardware RAID information on Linux → MegaCLI