주요 개념
File Storage는 네트워크를 통해 여러 서버가 같은 파일 시스템에 접근할 수 있도록 제공되는 스토리지 서비스입니다. 이 문서에서는 File Storage를 사용할 때 알아야 할 주요 개념, 상태, 성능 특성, 운영 권장사항, IAM 역할을 설명합니다.
파일 시스템
File Storage의 파일 시스템은 파일과 디렉터리를 계층 구조로 관리하는 기본 리소스입니다. 사용자는 파일 단위로 데이터를 읽고, 쓰고, 삭제할 수 있으며 NFS 또는 SMB와 같은 표준 프로토콜을 사용해 네트워크에서 접근할 수 있습니다.
파일 시스템 유형
File Storage는 사용 목적에 따라 다음 두 가지 유형을 제공합니다.
| 파일 시스템 유형 | 설명 |
|---|---|
| Infinite 파일 시스템 | 확장형 파일 시스템입니다. - SMB, NFS 파일 서비스 제공 - 하나의 파일 시스템에서 여러 공유 볼륨 제공 - 스토리지 크기 제한 없이 사용 가능 |
| Basic 파일 시스템 | 범용 NFS 파일 시스템입니다. - NFS 프로토콜 지원 - 최소 1 TiB부터 최대 16 TiB까지 0.5 TiB 단위로 생성 가능 |
파일 시스템 상태
파일 시스템은 생성 시 Creating 상태로 시작되며, 지정한 네트워크 환경에 구성됩니다. 구성이 완료되면 Active 상태로 전환되고, 이때 클라이언트에서 마운트하여 사용할 수 있습니다.
Deleting 상태는 파일 시스템 삭제가 진행 중인 상태입니다. 리소스 반납이 완료되면 목록에서 제거되고 더 이상 요금이 부과되지 않습니다.
- Infinite 파일 시스템
- Basic 파일 시스템
| 상태 | 설명 |
|---|---|
Creating | 파일 시스템을 생성하는 중 |
Active | 파일 시스템이 정상적으로 실행 중이며 사용 가능 |
Updating | 파일 시스템 설정 작업을 수행하는 중 |
Deleting | 파일 시스템을 삭제하는 중 |
Error | 파일 시스템에 오류가 발생한 상태 |
| 상태 | 설명 |
|---|---|
Creating | 파일 시스템에 사용할 리소스를 할당하고 설정한 볼륨 크기로 구성하는 중 |
Active | 파일 시스템이 정상적으로 실행 중이며 사용 가능 |
Restoring | 파일 시스템이 복원 작업을 수행하는 중 |
Setting-up | 파일 시스템이 복원 후 재시작 작업을 수행하는 중 |
Backing-up | 파일 시스템이 백업 작업을 수행하는 중 |
Updating | 파일 시스템 설정 변경, 이미지 변경 또는 마이그레이션을 수행하는 중 |
Deleting | 파일 시스템을 완전히 종료하고 반납하는 중 |
Error | 파일 시스템에 오류가 발생한 상태 |
파일 시스템 성능
File Storage는 여러 서버가 동시에 파일에 접근하여 데이터를 공유하는 환경에 최적화되어 있습니다. 네트워크 기반 스토리지 특성상 실제 성능은 클라이언트 사양과 네트워크 설정에 크게 영향을 받습니다.
파일 스토리지 성능 측정 및 이해
클라우드 파일 스토리지는 여러 클라이언트가 자원을 공유하는 구조이므로, 클라이언트와 파일 스토리지 간 성능 특성을 함께 고려해야 합니다. 다음 예시는 표준 입출력 테스트 도구인 fio를 사용해 측정한 클라이언트와 파일 서버 간 성능 결과입니다.
- Infinite 파일 시스템 (NFS)
- Infinite 파일 시스템 (SMB)
다음 결과는 실제 사용자 체감 성능에 가까운 구간을 측정한 값이며, VM 사양과 네트워크 설정의 영향을 크게 받습니다.
주요 변수
- VM 네트워크 대역폭
- NFS 마운트 옵션 (nconnect)
- 동시 처리 작업 수
Client Reference
| 항목 | 사양 |
|---|---|
| VM Flavor | 8 vCPU / 16 GB RAM |
| Network | 10 Gbps |
| OS | Linux |
| Protocol | NFS v4.1 |
| Mount Option | nconnect=1 / 4 / 16 |
| Write Mode | Async |
성능 측정 방식
fio를 사용해 랜덤 읽기와 랜덤 쓰기 성능을 측정했습니다.
fio --filename=/mnt/nfs/iops-bench.dat
--rw=randread
--bs=4k
--size=10G
--numjobs=8
--direct=1
--ioengine=libaio
--iodepth=64
--group_reporting=1
--norandommap=1
--randrepeat=1
--time_based=1
--ramp_time=20
--runtime=300
fio --filename=/mnt/nfs/iops-bench.dat
--rw=randwrite
--bs=4k
--size=10G
--numjobs=8
--direct=1
--ioengine=libaio
--iodepth=64
--group_reporting=1
--norandommap=1
--randrepeat=1
--time_based=1
--ramp_time=20
--runtime=300
성능 결과
| 테스트 항목 | nconnect | 입출력 패턴 | 초당 입출력 횟수 (IOPS) | |
|---|---|---|---|---|
| 랜덤 읽기 (Random Read) | nconnect = 1 | 100% Read | 4KB | up to 30,000 |
| 랜덤 읽기 (Random Read) | nconnect = 4 | 100% Read | 4KB | up to 57,000 |
| 랜덤 읽기 (Random Read) | nconnect = 16 | 100% Read | 4KB | up to 66,000 |
| 랜덤 쓰기 (Random Write) | nconnect = 1 | 100% Write | 4KB | up to 28,000 |
| 랜덤 쓰기 (Random Write) | nconnect = 4 | 100% Write | 4KB | up to 42,000 |
| 랜덤 쓰기 (Random Write) | nconnect = 16 | 100% Write | 4KB | up to 47,000 |
nconnect 값을 증가시키면 병렬 연결 수가 늘어나면서 IOPS가 향상됩니다.
Windows 환경에서 SMB 프로토콜을 사용한 성능 측정 결과입니다.
성능 측정 방식
fio를 사용하여 랜덤 읽기/쓰기 성능을 측정했습니다.
fio --filename=fio_test
--rw=randread
--bs=4k
--size=10G
--numjobs=8
--direct=1
--ioengine=windowsaio
--iodepth=64
--group_reporting=1
--norandommap=1
--randrepeat=1
--time_based=1
--ramp_time=20
--runtime=300
fio --filename=fio_test
--rw=randwrite
--bs=4k
--size=10G
--numjobs=8
--direct=1
--ioengine=windowsaio
--iodepth=64
--group_reporting=1
--norandommap=1
--randrepeat=1
--time_based=1
--ramp_time=20
--runtime=300
성능 결과
| 테스트 항목 | 입출력 패턴 | 초당 입출력 횟수 (IOPS) | |
|---|---|---|---|
| 랜덤 읽기 (Random Read) | 100% Read | 4KB | up to 23,000 |
| 랜덤 쓰기 (Random Write) | 100% Write | 4KB | up to 20,000 |
SMB 환경에서는 NFS 대비 상대적으로 낮은 IOPS를 보일 수 있으며, 클라이언트 환경에 따라 성능 차이가 발생할 수 있습니다.
파일 시스템 운영 권장사항
File Storage를 안정적으로 운영하고 성능 저하를 줄이려면 다음 권장사항을 참고하세요.
대용량 파일 저장
단일 파일 크기에는 제한이 없지만, 운영 효율성과 안정성을 고려해야 합니다. 수 TB 이상의 단일 파일은 전송 재시도 비용이 크고, 장애 발생 시 복구 시간이 길어질 수 있습니다. 따라서 대용량 데이터는 여러 파일로 분할하여 저장하는 방식을 권장합니다.
메타데이터 부하 유발 작업 제한
짧은 시간 안에 대량의 파일을 생성하거나 삭제하면 시스템 부하가 증가할 수 있습니다. 특히 최상위 디렉터리에서 chmod -R, chown -R, ls -R과 같은 재귀 명령어를 실행하면 전체 성능에 영향을 줄 수 있으므로 주의해야 합니다.
링크 파일 사용
파일 참조에는 심볼릭 링크(Symbolic Link) 사용을 권장합니다. 하드 링크(Hard Link)는 내부 Lock 경합을 유발하여 전반적인 응답 성능을 저하시킬 수 있습니다.
디렉터리 내 파일 개수 관리
하나의 디렉터리에 과도한 수의 파일을 저장하면 내부 분산 처리로 인해 성능 저하가 발생할 수 있습니다. 파일 수가 지속적으로 증가하는 경우, 날짜(YYYY/MM/DD) 또는 카테고리 기준으로 디렉터리를 분리해 관리하는 것이 좋습니다.
- 권장: 디렉터리당 파일 수 50,000개 미만
- 주의: 500,000개 이상일 경우 파일 생성 오류 발생 가능
동시 접근 파일 및 워크로드 제한
File Storage는 메타데이터를 메모리에 캐싱하여 성능을 최적화합니다. 캐시 범위를 초과하는 요청이 지속되면 전체 성능이 저하될 수 있으며, 다른 사용자의 접근에도 영향을 줄 수 있습니다. 워크로드는 권장 범위 안에서 운영하세요.
- 권장: 전체 관리 파일 수 100만 개 미만
- 클라이언트 기준: 마운트 포인트당 동시 오픈 파일 수 50만 개 이하
IAM 기반 역할 관리
File Storage는 IAM 역할 기반 액세스 제어(RBAC)를 따릅니다. IAM 역할에 따라 파일 시스템과 백업의 조회, 생성, 수정, 삭제 권한이 부여됩니다. 사용자 역할 관리 방법은 사용자 IAM 역할 관리를 참고하세요.
- Infinite 파일 시스템 역할 관리
- Basic 파일 시스템 역할 관리
| 권한 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더 (Reader) | File Storage 매니저 (Manager) | File Storage 뷰어 (Viewer) |
|---|---|---|---|---|---|
| 파일 시스템 조회 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 파일 시스템 생성, 편집, 삭제 | ✓ | ✓ | ✓ |
| 권한 | 프로젝트 관리자(Admin) | 프로젝트 멤버(Member) | 프로젝트 리더 (Reader) | File Storage 매니저 (Manager) | File Storage 뷰어 (Viewer) |
|---|---|---|---|---|---|
| 파일 시스템 조회 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 파일 시스템 생성, 편집, 삭제 | ✓ | ✓ | ✓ | ||
| 백업 조회 | ✓ | ✓ | ✓ | ✓ | ✓ |
| 백업 생성, 편집, 삭제 | ✓ | ✓ | ✓ | ||
| 백업 복원 | ✓ | ✓ | ✓ |