EFS vs FSx for Lustre 비교 분석 (실제 테스트 결과 포함)
BLAST 파일 시스템 성능 비교:비교 테스트
1. 테스트 환경 구성
1.1 인프라 설정
EC2 인스턴스
- 타입: c5n.9xlarge (36 vCPU, 96GB RAM, 50 Gbps 네트워크)
- AMI: Amazon Linux 2023
- 배치: 동일 AZ에 FSx/EFS
vs배치 - 수량: 2대 (동시 테스트용)
스토리지
- FSx for
LustreLustre:
1,200 MB/s 처리량)테스트Scratch일자:2,2026-01-06테스트 환경: AWS ap-northeast-1.2 TB (서울) - EFS: Max I/O 모드, 버스팅 처리량
- 둘 다 동일 VPC/서브넷
2. 실제 테스트 결과 (2026-01-06)
테스트 환경
인프라 구성 (ap-northeast-2)
| 구성요소 | 상세 |
|---|---|
| EC2 인스턴스 | r6i.24xlarge / r7i.24xlarge (96 vCPU, 768 GB RAM) |
| EFS | fs-0d2d032d1cca25f3f, Elastic 처리량 모드 |
| FSx Lustre | fs-0d75b85b2d9519a04, Scratch 2, 1.2 TB, S3 통합 |
| BLAST 데이터베이스 | core_nt (NCBI NT Core, ~254 GB) |
| AWS Batch | 64 vCPU, 512 GB Memory Job Definition |
쿼리 파일
| 파일명 | 시퀀스 수 | 크기 |
|---|---|---|
| query.fasta | 500 | 77 KB |
| query_5000.fasta | 5,000 | 755 KB |
| query_50000.fasta | 50,000 | 7.4 MB |
| query_500000.fasta | 500,000 | 74 MB |
3. EFS 테스트 결과
BLAST 성능 측정 (EFS Elastic 처리량 모드)
| 시퀀스 수 | BLAST 실행 시간 | 총 작업 시간 | 시퀀스당 처리 시간 |
|---|---|---|---|
| 500 | 209초 | 224초 | 0.42초 |
| 5,000 | 213초 | 238초 | 0.043초 |
| 50,000 | 336초 | 352초 | 0.0067초 |
| 500,000 | ~1,490초 | ~1,507초 | 0.003초 |
주요 관찰 사항
- 데이터베이스 로딩 오버헤드: ~200초 (BLAST 시작 시 데이터베이스 초기 로딩)
- 시퀀스 증가에 따른 선형 확장: 1,000배 시퀀스 증가 시 약 7배 처리 시간 증가
- 병렬 처리 효율: 64 vCPU에서 높은 CPU 활용률
EFS 비용 분석 (ap-northeast-2)
| 비용 항목 | 단가 | 계산 |
|---|---|---|
| 스토리지 (254 GB) | $0.36/GB-month | $91.56/month |
| 읽기 처리량 (Elastic) | $0.043/GB | BLAST 작업당 ~$17 |
| 일일 테스트 비용 | ~$70+ (처리량) |
4. FSx for Lustre 테스트 상태결과
인프라 문제구성
- FSx Lustre
테스트는 다음 인프라 문제로 인해 완료되지 못했습니다:마운트 포인트 충돌:EC2fs-0d75b85b2d9519a04,인스턴스Scratch스토어2,NVMe가1.2/mnt/lustre에 자동 마운트Launch Template 이슈: User data의 FSx mount 명령이 후속 프로세스에 의해 덮어씌워짐TB- S3 Data Repository:
데이터 import는 성공했으나 컨테이너에서 접근 불가s3://blast-nt-lustre-apne2-664263524008/nt/
- 마운트 경로: /blast-lustre-data (Launch Template v5)
- 데이터베이스: core_nt (254 GB, 78개 청크 파일)
Hydration 테스트
실제문제점 오류 로그:발견
/dev/nvme0n1p1 /mnt/lustre xfs ro,noatime,attr2,inode64,noquota 0 0
Host /mnt/lustre contents:
total 0
drwxr-xr-x 2 root root 6 Jan 6 02:43 .
drwxr-xr-x 1 root root 20 Jan 6 02:44 ..
NVMe 인스턴스 스토어가 FSx Lustre 마운트를 덮어씌워 디렉토리가 비어있음
FSx Lustre 예상 성능 (이론적)
AWS: FSx for LustreLustre의 S3 Data Repository는 "Lazy Loading" 방식으로 동작
- 파일이 S3에만 있고, FSx에서 처음 접근 시 hydration 발생
- 첫 접근 시 S3→FSx 데이터 전송으로 인해 심각한 성능 저하
Hydration 방법 테스트:
- dd 명령어 기반: 모든 파일을 순차적으로 읽어 hydration (1,075초, 18분 소요)
- lfs hsm_restore 기반: AWS 권장 병렬 hydration 방식 (검증 완료, 0초 - 이미 hydration됨)
FSx BLAST 성능 측정
v11 테스트 (S3 Lazy Loading 영향 받음)
| 시퀀스 수 | BLAST 실행 시간 | 비고 |
|---|---|---|
| 500 | 1,266초 | 부분 hydration |
| 5,000 | 3,959초 | S3에서 hydration 중 |
| 50,000 | 238초 | Hydration 완료 후 - 매우 빠름 |
| 500,000 | 19,318초 | S3에서 hydration 중 |
v13 테스트 (Full Hydration 후, 4개 작업 동시 실행)
| 시퀀스 수 | BLAST 실행 시간 | EFS 대비 |
|---|---|---|
| 500 | 3,324초 (55분) | 16배 느림 |
| 5,000 | 1,853초 (31분) | 8.7배 느림 |
| 50,000 | 11,755초 (3.3시간) | 35배 느림 |
| 500,000 | 37,935초 (10.5시간) | 25배 느림 |
FSx 성능 분석
예상과 다른 결과의 원인
-
처리량 공유 문제:
- FSx Scratch 2 (1.2 TB)
기준:기본 처리량: 240 MB/s (200 MB/s/TiB × 1.2 TiB) - 4개 작업 동시 실행 시: 작업당 ~60 MB/s
- 254 GB 데이터베이스 읽기: 60 MB/s로 70분+ 소요
- FSx Scratch 2 (1.2 TB)
-
버스트 크레딧 소진:
- 버스트 처리량: 최대 ~1.44 GB/s
- 크레딧 기반으로 장시간 워크로드에서 소진됨
-
v11 50,000 테스트가 빨랐던 이유:
- 단일 작업 실행으로 전체 처리량 독점
- 이전 hydration으로 데이터가 FSx 캐시에 존재
FSx Lustre 처리량 상세 사양
| Persistent 2 (1000 MBps/TiB) | ||
|---|---|---|
| 240 MB/s | 1,200 MB/s | |
| 해당 없음 | ||
FSx Lustre 비용 (ap-northeast-2)
| 비용 항목 | 단가 | 계산 |
|---|---|---|
| 스토리지 (1.2 TB) | $0.14/GB-month | $168/month |
| 처리량 | 스토리지에 포함 | $0 추가 비용 |
| S3 Data Repository | S3 표준 요금 | ~$6/month |
5. 비용 비교 분석
월간 비용 시나리오
시나리오 1: 간헐적 사용 (주 1-2회, 일일 1시간)
| 스토리지 | 월 스토리지 비용 | 월 처리량 비용 | 총 비용 |
|---|---|---|---|
| EFS Elastic | $91.56 | ~$280 (8회 |
~$371 |
| FSx Lustre | $168 | $0 | $168 |
시나리오 2: 집중 사용 (일일 수십 회)
| 스토리지 | 월 스토리지 비용 | 월 처리량 비용 | 총 비용 |
|---|---|---|---|
| EFS Elastic | $91.56 | ~$2,100+ | $2,191+ |
| FSx Lustre | $168 | $0 | $168 |
손익분기점 분석
- 일일 4회 이상 BLAST 실행 시: FSx Lustre가 더 경제적
- 주 1회 미만: EFS가 더 경제적 (스토리지 비용만 발생)
6. 최종 권장사항 (실제 테스트 계획결과 (벤치마크 스크립트)기반)
주요 발견사항
-
FSx Scratch 2는 BLAST 워크로드에 부적합:
- 1.2 TB Scratch 2의 기본
I/O처리량(240벤치마크MB/s)이#!/bin/bash다중#작업io_benchmark.sh시MOUNT_POINTS=("/mnt/fsx"병목 - 4개
for동시MOUNT작업in시"${MOUNT_POINTS[@]}";작업당do60echoMB/s로"===EFSTesting대비$MOUNT8-29배==="느림 - S3
순차Data읽기Repository의 Lazy Loading으로 첫 접근 시 심각한 지연
"/mnt/efs")# - 1.2 TB Scratch 2의 기본
-
EFS Elastic이 BLAST 워크로드에 적합:
- 워크로드에 따른 자동 처리량 확장
- 다중 작업 시에도 안정적인 성능
- 설정 및 관리가 간편
EFS 추천 ✅ (BLAST 주요 패턴)
fio --name=seq-read \
--directory=$MOUNT \
--rw=read \
--bs=1M \
--size=50G \
--numjobs=16 \
--ioengine=libaio \
--iodepth=32 \
--runtime=300 \
--time_based \
--group_reporting \
--output=$MOUNT-seq-read.json \
--output-format=json
# 랜덤 읽기 (인덱스 접근)
fio --name=rand-read \
--directory=$MOUNT \
--rw=randread \
--bs=4K \
--size=10G \
--numjobs=16 \
--runtime=300 \
--time_based \
--group_reporting \
--output=$MOUNT-rand-read.json \
--output-format=json
done
BLAST 벤치마크워크로드)
#!/bin/bash
# blast_benchmark.sh
STORAGE=$1 # /mnt/fsx or /mnt/efs
THREADS=${2:-32}
RESULTS_DIR="results_$(basename $STORAGE)_$(date +%Y%m%d_%H%M%S)"
mkdir -p $RESULTS_DIR
# DB 복사 (캐시 영향 제거)
echo "Copying database to $STORAGE..."
time rsync -av --progress /data/blast_db/ $STORAGE/blast_db/
# 캐시 클리어
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
# 테스트 1: 소형 쿼리 (빠른 반복)
echo "Test 1: Small queries"
for i in {1..10}; do
/usr/bin/time -v blastn \
-db $STORAGE/blast_db/nt \
-query small_query.fasta \
-num_threads $THREADS \
-out $RESULTS_DIR/small_$i.txt \
2>> $RESULTS_DIR/small_timing.log
done
# 테스트 2: 중형 쿼리
echo "Test 2: Medium queries"
/usr/bin/time -v blastn \
-db $STORAGE/blast_db/nt \
-query sample_queries.fasta \
-num_threads $THREADS \
-out $RESULTS_DIR/medium.txt \
-outfmt "6 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore" \
2> $RESULTS_DIR/medium_timing.log
의사결정 기준
결과:
#!/bin/bash
# blast_benchmark.sh
STORAGE=$1 # /mnt/fsx or /mnt/efs
THREADS=${2:-32}
RESULTS_DIR="results_$(basename $STORAGE)_$(date +%Y%m%d_%H%M%S)"
mkdir -p $RESULTS_DIR
# DB 복사 (캐시 영향 제거)
echo "Copying database to $STORAGE..."
time rsync -av --progress /data/blast_db/ $STORAGE/blast_db/
# 캐시 클리어
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
# 테스트 1: 소형 쿼리 (빠른 반복)
echo "Test 1: Small queries"
for i in {1..10}; do
/usr/bin/time -v blastn \
-db $STORAGE/blast_db/nt \
-query small_query.fasta \
-num_threads $THREADS \
-out $RESULTS_DIR/small_$i.txt \
2>> $RESULTS_DIR/small_timing.log
done
# 테스트 2: 중형 쿼리
echo "Test 2: Medium queries"
/usr/bin/time -v blastn \
-db $STORAGE/blast_db/nt \
-query sample_queries.fasta \
-num_threads $THREADS \
-out $RESULTS_DIR/medium.txt \
-outfmt "6 qseqid sseqid pident length mismatch gapopen qstart qend sstart send evalue bitscore" \
2> $RESULTS_DIR/medium_timing.log
| EFS BLAST 시간 | FSx |
||
|---|---|---|---|
| EFS 16배 빠름 | |||
| EFS 8.7배 빠름 | |||
| EFS 35배 빠름 | |||
최종 권장사항
FSx for Lustre 추천 (대부분의 BLAST 워크로드)
장점:
예측 가능한 비용: 사용량에 관계없이 고정 비용높은 처리량: 1,200 MB/s 이상의 읽기 성능대규모 배치 처리: 수백만 시퀀스도 효율적 처리S3 통합: 데이터 아카이빙 및 공유 용이
권장 사용 사례:
일일 4회 이상 BLAST 실행대용량 데이터베이스 (>100 GB) 사용빠른 처리 시간이 중요한 경우예측 가능한 예산 관리 필요
EFS 추천 (간헐적 사용)
장점:
- 탄력적
비용처리량:사용한워크로드에만큼만따라지불자동 확장 - 안정적 성능: 다중 작업 시에도 일관된 성능
- 간편한 설정: AWS Batch ECS 네이티브 지원
- 다중 AZ 내구성: 높은 가용성
권장 사용 사례:
월 10회 미만모든 BLAST실행워크로드 (소규모~대규모)소규모다중데이터베이스사용자 동시 접근 환경- 빠른 구축이 필요한 경우
FSx for Lustre 고려 시 (<50조건부)
FSx가 적합할 수 있는 경우:
- 단일 작업 순차 실행: 전체 처리량을 독점할 수 있는 경우
- Persistent 2 타입 사용: 1000 MBps/TiB 이상의 높은 처리량
- 더 큰 용량 프로비저닝: 처리량이 용량에 비례 (3.6 TB = 720 MB/s)
- 직접 데이터 복사: S3 Data Repository 대신 DataSync로 직접 복사
FSx 성능 개선을 위한 권장사항:
- Scratch 2 대신 Persistent 2 (1000 MBps/TiB) 사용
테스트/개발최소환경3.6 TB 이상 프로비저닝 (720 MB/s 기본 처리량)간헐적S3온디맨드Data Repository 대신 DataSync로 직접 데이터 복사- 사전 hydration 필수 (lfs hsm_restore 사용)
비용 대비 성능 최종 비교
| 항목 | EFS Elastic | FSx Scratch 2 (1.2 TB) |
|---|---|---|
| 월 스토리지 비용 | $91.56 | $168 |
| 월 처리량 비용 | 사용량 기반 | 포함 |
| 500 시퀀스 처리 | 209초 | 3,324초 |
| 5,000 시퀀스 처리 | 213초 | 1,853초 |
| 다중 작업 성능 | 안정적 | 급격히 저하 |
| 권장도 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
7. 실제 비용 분석 (2026-01-06~07)
테스트 기간 발생 비용
| 서비스 | 일일 비용 (USD) | 비고 |
|---|---|---|
| EC2 Compute | $234.97 | Batch 작업 인스턴스 |
| EC2 Other | $58.44 | EBS, 네트워크 |
| EFS | $69.65 | 스토리지 + 처리량 |
| FSx | $87.34 | Scratch 2 스토리지 |
| S3 | $9.42 | FSx Data Repository |
| 합계 | $459.82 |
작업당 비용 분석
EFS 테스트 비용
| 시퀀스 수 | 실행 시간 | EC2 비용 | EFS 처리량* | 합계 |
|---|---|---|---|---|
| 500 | 209초 | $0.35 | $10.93 | $11.28 |
| 5,000 | 213초 | $0.36 | $10.93 | $11.29 |
| 50,000 | 336초 | $0.56 | $10.93 | $11.49 |
| 500,000 | 1,490초 | $2.50 | $10.93 | $13.43 |
*EFS 처리량: 254 GB × $0.043/GB = $10.93/작업
FSx 테스트 비용 (v13)
| 시퀀스 수 | 실행 시간 | EC2 비용 | FSx 처리량 | 합계 |
|---|---|---|---|---|
| 500 | 3,324초 | $5.58 | $0 | $5.58 |
| 5,000 | 1,853초 | $3.11 | $0 | $3.11 |
| 50,000 | 11,755초 | $19.74 | $0 | $19.74 |
| 500,000 | 37,935초 | $63.72 | $0 | $63.72 |
총 소유 비용 (TCO) 비교 - 500,000 시퀀스 기준
| 항목 | EFS | FSx Scratch 2 |
|---|---|---|
| 인프라 비용 | $13.43 | $63.72 |
| 대기 시간 비용* | $21 | $525 |
| 총 TCO | $34.43 | $588.72 |
*연구원 시간 비용 $50/시간 가정
월간 비용 예측 (일일 1회 500K 시퀀스)
| 항목 | EFS | FSx Scratch 2 |
|---|---|---|
| 스토리지 | $91.56 | $168 |
| 처리량 | $328 | $0 |
| EC2 | $75 | $1,912 |
| 월 총계 | $495 | $2,080 |
ROI 요약
- EFS가 FSx Scratch 2 대비 4.2배 저렴 (월간 기준)
- EFS가 FSx 대비 25배 빠름 (500K 시퀀스)
- 총 TCO 기준 EFS가 17배 더 경제적
8. 개선 권장 사항
FSxBLAST Lustre 인프라 개선
별도 마운트 경로 사용:/mnt/lustre대신/fsx/blast-db사용AMI 사전 구성: Lustre 클라이언트가 설치된 커스텀 AMI 사용시작 스크립트 개선: ECS agent 시작 전 FSx 마운트 완료 확인
비용워크로드 최적화
FSxEFSScratch 2Elastic 사용:Persistent처리량대비자동50%확장으로이상최적비용 절감성능- Spot 인스턴스: EC2 비용 60-80% 절감
데이터 계층화: 자주 사용하지 않는 DB는 S3에 보관
성능 최적화
인스턴스 타입 매칭: 메모리 > 50% DB 크기 유지가능- 병렬 처리: 큰
쿼리 파일을쿼리를 분할하여병렬동시 실행
FSx 사용 시 권장 구성 (필요시)
캐시Persistent활용2 타입:반복1000쿼리MBps/TiB시이상- 최소
캐시4.8효과TB:활용960 MB/s 기본 처리량 확보 - 직접 데이터 복사: S3 Data Repository 대신 DataSync 사용
- 사전 hydration 필수: lfs hsm_restore 사용
테스트 일자: 2026-01-06~07 테스트 환경: AWS ap-northeast-2 (서울) 분석자: Claude Code