본 장은 전문 난이도입니다. 애플리케이션의 read/write 패턴을 다듬는 것(이 트랙의 다른 챕터)과 별개로, 스토리지 스택 자체를 바꾸는 결정이 있습니다. 예를 들어 특수 목적 파일시스템, 커널 모듈, 벤더 NVMe 드라이버·펌웨어 튜닝, 커스텀 blk 계층 등이 여기에 해당합니다.
무엇이 달라지는가
스택 하단을 건드리면 지연 분포·처리량·장애 모드가 함께 바뀝니다. 유저 공간 최적화와 달리 커널 업그레이드·하드웨어 교체·클라우드 하이퍼바이저와 강하게 결합됩니다.
이득이 나올 수 있는 경우
- 극단적 IOPS/latency 목표: 표준 스택이 큐 깊이·스케줄러 정책에서 한계를 보일 때.
- 전용 하드웨어: 스토리지 컨트롤러·NIC와 공동 튜닝이 필요할 때.
- 데이터 레이아웃 특수성: append-only, 대형 순차 스캔 등 워크로드 특화가 명확할 때.
리스크(짧게 나열)
- 업그레이드: 커널 마이너 업에서 모듈 ABI가 깨질 수 있습니다.
- 디버깅: 크래시가 서드파티 모듈로 귀결되면 지원이 느립니다.
- 보안 표면: 커널 코드는 권한이 큽니다(Tr.11).
- 관측: 기본 메트릭만으로는 큐 적체 원인이 안 보일 수 있습니다.
flowchart LR
subgraph app ["앱"]
A["I-O 패턴"]
end
subgraph stack ["스택"]
B["파일시스템"]
C["블록 계층"]
D["드라이버·디바이스"]
end
app --> stack
검증 프레임
- 합성 워크로드: fio 등으로 대표 패턴을 고정합니다.
- 프로덕션 추적: 실제 파일 크기·랜덤/순차 비율을 반영합니다.
- 장애 주입: 디스크 지연 증가·패킷 드롭과 결합 시나리오를 봅니다.
- 롤밹: 모듈 언로드·드라이버 다운그레이드·이미지 버전 고정(pinning).
컨테이너·클라우드 주의
컨테이너는 호스트 커널을 공유합니다. 게스트에서만 모듈을 바꿀 수 없는 경우가 많고, 매니지드 서비스에서는 금지입니다. “로컬 랩에서 됐다”가 프로덕션 계약과 다를 수 있습니다.
Tr.06·Tr.11와의 연결
- Tr.06:
io_uring, cgroup I/O 제한, 커널 파라미터가 같은 그림에 있습니다. - Tr.11: 변경 승인·감사·보안 리뷰가 필요합니다.
마무리
스토리지 스택 커스터마이징은 성능 엔지니어링이자 운영 계약 변경입니다. 숫자는 Tr.01에서, 책임은 Tr.11에서 닫는다는 전제를 두고 접근하십시오.
부록: 질문 15
- 앱 레벨 튜닝 여지는 아직 있는가?
- 목표는 IOPS인가 p99 지연인가?
- 데이터 지속성 요구는?
- 펌웨어 버전은 고정되는가?
- 커널 LTS인가 트래킹인가?
- 모듈은 서명되는가?
- 크래시 덤프 절차는?
- on-call이 스택을 구분해 진단할 수 있는가?
- 클라우드 SLA와 충돌하는가?
- 스냅샷·백업은?
- 마이그레이션 중 성능은?
- 멀티 테넌트 noisy neighbor는?
- 암호화 계층은 어디에 있는가?
- 규제 데이터 상주는?
- 롤밹에 걸리는 시간은?
부록: 용어
- blk layer: 블록 계층(개념)
- queue depth: 장치 큐 깊이
- fsync 경로: 지속성 보장 호출 경로
![Featured image of post [IO 09] 스토리지 스택 커스터마이징 (전문)](/post/io-optimization/storage-stack-customization-kernel-fs-drivers-expert/wordcloud_hu_d3354b140cb91920.webp)
![[IO 09] POSIX AIO vs io_uring](/post/io-optimization/posix-aio-vs-io-uring-performance-comparison/wordcloud_hu_774f265069068efb.webp)
![[IO 09] Database I/O 패턴](/post/io-optimization/database-io-wal-fsync-journaling-strategy/wordcloud_hu_aa8d2bffd178ad33.webp)
![[IO 09] File Locking 성능](/post/io-optimization/file-locking-performance-impact-alternatives/wordcloud_hu_c14524bfbb36804d.webp)
![[IO 09] 스토리지 스택 커스터마이징 (전문)](/post/io-optimization/storage-stack-customization-kernel-fs-drivers-expert/wordcloud_hu_df935ff9be3d21aa.webp)
![[IO 09] 로깅 성능 전략](/post/io-optimization/logging-performance-strategy-async-logger/wordcloud_hu_48b53881d03ecd7e.webp)
![[Design 11] 규제·보안 제약 하 성능 (전문)](/post/design-decisions/regulated-secure-performance-tradeoffs-expert/wordcloud_hu_8a46007c073098f1.webp)
![[OS 06] eBPF·커널 경계와 성능·안전 (전문)](/post/os-optimization/ebpf-xdp-kernel-boundary-performance-safety-expert/wordcloud_hu_a0cc0788a35a029c.webp)
![[Regression 12] 분산·클러스터 성능 회귀 (전문)](/post/regression-prevention/distributed-cluster-performance-regression-expert/wordcloud_hu_dd8808e2900850fc.webp)
![[Rust] Comprehensive Rust 무료 강의 정리 및 코스 구조](/post/2022-12-30-comprehensive-rust/wordcloud_hu_d1420ff38434cdb6.webp)
![[Hardware] LattePanda Alpha에 Ubuntu 16.04 LTS 설치 가이드](/post/2018-12-06-install-ubuntu-16.04-on-lattepanda/wordcloud_hu_fc536f8de2cbd4bf.webp)