- 스토리지 운영은 단순히 데이터를 저장하는 것을 넘어
성능, 가용성, 확장성, 운영 복잡도, 비용을 종합적으로 고려해야 하는 영역이다.
- 단순한 Block vs File 구분을 넘어서 구현 방식 차이까지 고려해야 한다.
1. 스토리지 구현 방식별 구조 이해
- Block Storage
- Block Storage + FileSystem (로컬 디스크)
- Block Storage + FileSystem + NFS (직접 구축 NAS)
- Managed File Storage (클라우드 파일 스토리지)
이 세 가지는 같은 “스토리지”로 보이지만 운영 관점에서는 완전히 다른 시스템이다.
1.1 Block Storage
파일시스템 미사용으로 인해 데이터 구조, 정합성, 복구를 애플리케이션에서 직접 처리 필요
[Block Storage]
↓
[ Application / DB ]
- 파일시스템 없이 직접 블록 디바이스 사용
- 일부 DB나 특수 애플리케이션에서 사용
- OS가 아닌 애플리케이션이 데이터 구조 관리
- 최고 성능을 갖지만 운영 난이도 매우 높음
1.2 Block Storage + FileSystem
[Block Storage]
↓
[FileSystem (ext4/xfs)]
↓
[단일 서버]
- 로컬 디스크처럼 사용
- OS가 파일시스템 직접 관리
- 단일 시스템 전제
1.3 Block Storage + FileSystem + NFS
[Block Storage]
↓
[FileSystem]
↓
[NFS Server]
↓
[여러 클라이언트]
- 공유 스토리지를 직접 구성한 형태
- NFS 서버가 핵심 역할 수행
1.4 Managed File Storage
[Managed File Storage]
↓
(NFS / SMB)
↓
[여러 클라이언트]
- 클라우드가 NAS를 서비스로 제공
- 내부는 분산 파일시스템
1.5 요약
| 구분 | 관리 대상 | 운영 난이도 | 이유 |
|---|
| Block | 애플리케이션 | 높음 | 파일시스템이 없기 때문에 데이터 구조, 정합성, 복구 로직을 애플리케이션에서 직접 구현해야 함 |
| Block + FS | FS + OS | 중간 | 파일시스템 생성, 확장, 장애 시 fsck 및 복구 작업 필요 |
| Block + FS + NFS | FS + NFS + HA + 네트워크 | 매우 높음 | NFS 서버 구축, HA 구성, 네트워크 설정, 파일시스템 관리까지 모두 직접 수행해야 함 |
| File Storage | 거의 없음 | 낮음 | 대부분 관리 기능이 서비스에 포함되어 있어 운영 부담 최소 |
2. 운영 관점에서의 주요 고려사항
2.1 성능
| 구분 | I/O 경로 | 주요 병목 지점 | 지연(Latency) 특성 | 처리 특성 | 적합한 워크로드 |
|---|
| Block | App → Block Device | 없음 (직접 I/O) | 가장 낮음 (OS 오버헤드 없음) | 애플리케이션이 직접 I/O 제어 | 초고성능 DB, 특수 시스템 |
| Block + FS | App → FS → Block | OS / 파일시스템 | 낮음 (FS 오버헤드 존재) | 일반적인 디스크 I/O | DB, VM, 대부분 서비스 |
| Block + FS + NFS | App → NFS → FS → Block | NFS 서버 (CPU/네트워크) | 높음 (네트워크 + NFS 처리) | 서버 중심 처리 구조 | 공유 스토리지, 일반 파일 |
| File Storage | App → NFS/SMB → 분산 FS | 내부 네트워크 / 메타데이터 처리 | 중간 (분산 처리 구조) | 확장 가능한 처리 구조 | 대규모 공유, 콘텐츠 |
2.2 가용성 (HA)
| 구분 | HA 구성 | 고려사항 |
|---|
| Block | 애플리케이션 레벨 | 애플리케이션 자체적으로 replication 또는 clustering 구성 필요 |
| Block + FS | VM 레벨 | 디스크 장애 대응은 가능하지만 서비스 단위 HA는 별도 구성 필요 |
| Block + FS + NFS | 직접 구성 | Active-Standby, VIP, failover 등 별도 HA 아키텍처 설계 필요 |
| File Storage | 기본 제공 | 서비스에서 자동 failover 및 복제 처리 |
2.3 확장성
| 구분 | 확장 단위 | 확장 방식 | 중단 영향 | 확장 시 고려사항 | 구조적 한계 |
|---|
| Block | 디스크 | 수동 (디스크 추가) | 애플리케이션 영향 가능 | 애플리케이션이 직접 데이터 분산/재배치 필요 | 단일 디스크 구조 |
| Block + FS | 디스크 + 파일시스템 | 수동 (Volume + FS 확장) | 일부 작업 중 중단 가능 | 파일시스템 확장 (resize), 파티션 관리 필요 | 단일 노드 구조 |
| Block + FS + NFS | 디스크 + NFS 서버 | 수동 (스토리지 + 서버 모두 확장) | 서비스 영향 가능 | 서버 스펙 증가, HA 재구성 필요 | NFS 서버 중심 구조 |
| File Storage | 서비스 단위 | 자동 (Scale-out) | 없음 | 별도 작업 없음 (서비스 처리) | 서비스 정책에 의존 |
2.4 운영 복잡도
| 구분 | 관리 레이어 | 주요 운영 작업 | 장애 시 대응 범위 | 운영 부담의 원인 |
|---|
| Block | 애플리케이션 | 데이터 구조 관리, I/O 제어, 정합성 유지 | 애플리케이션 전체 | 파일시스템이 없어 모든 데이터 관리 책임이 애플리케이션에 있음 |
| Block + FS | OS + 파일시스템 | FS 생성/마운트, 확장, fsck, 권한 관리 | 서버 단위 | 파일시스템 관리 및 장애 시 복구 작업 필요 |
| Block + FS + NFS | FS + NFS + 네트워크 + HA | NFS 서버 구축, export 설정, 네트워크 구성, HA 설계 및 운영 | 전체 서비스 | 여러 레이어(스토리지 + 서버 + 네트워크)를 동시에 관리해야 함 |
| File Storage | 서비스 | 마운트 및 사용, 권한 설정 | 서비스 단위 | 대부분 기능이 서비스에 포함되어 있어 운영 작업 최소 |
2.5 장애 대응
| 구분 | 복구 방식 | 고려사항 |
|---|
| Block | App 레벨 | DR 구성을 직접 구현해야함 (데이터 손상 시 애플리케이션 로직으로 복구 필요) |
| Block + FS | Snapshot | 파일시스템 손상 시 fsck 및 복구 작업 필요 |
| Block + FS + NFS | 서버 + 스토리지 | NFS 서버 장애 시 서비스 전체 중단, 복구 절차 복잡하며 SPOF가 존재하는 구조 |
| File Storage | 자동 복구 | 사용자 개입 최소 |
2.6 비용
| 구분 | 비용 특징 | 구체적인 이유 |
|---|
| Block | 효율적 | 인프라 단순하지만 운영 인력 비용 증가 |
| Block + FS | 표준적 | 일반적인 구성, 운영 비용 균형 |
| Block + FS + NFS | 비효율 가능 | 서버, 스토리지, HA 구성으로 인프라 + 운영 비용 증가 |
| File Storage | 비용 높음 | 인프라 비용은 높지만 운영 비용 절감 |