Skip to main content

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:

    테스트Scratch 일자:2, 2026-01-06 테스트 환경: AWS ap-northeast-1.2 TB (서울)

    1,200 MB/s 처리량)
  • 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초

주요 관찰 사항

  1. 데이터베이스 로딩 오버헤드: ~200초 (BLAST 시작 시 데이터베이스 초기 로딩)
  2. 시퀀스 증가에 따른 선형 확장: 1,000배 시퀀스 증가 시 약 7배 처리 시간 증가
  3. 병렬 처리 효율: 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 테스트는 다음 인프라 문제로 인해 완료되지 못했습니다:

    1. 마운트 포인트 충돌: EC2fs-0d75b85b2d9519a04, 인스턴스Scratch 스토어2, NVMe가1.2 /mnt/lustre에 자동 마운트
    2. Launch Template 이슈: User data의 FSx mount 명령이 후속 프로세스에 의해 덮어씌워짐TB
    3. 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 방법 테스트:

  1. dd 명령어 기반: 모든 파일을 순차적으로 읽어 hydration (1,075초, 18분 소요)
  2. lfs hsm_restore 기반: AWS 권장 병렬 hydration 방식 (검증 완료, 0초 - 이미 hydration됨)

FSx BLAST 성능 측정

v11 테스트 (S3 Lazy Loading 영향 받음)

시퀀스 수BLAST 실행 시간비고
5001,266초부분 hydration
5,0003,959초S3에서 hydration 중
50,000238초Hydration 완료 후 - 매우 빠름
500,00019,318초S3에서 hydration 중

v13 테스트 (Full Hydration 후, 4개 작업 동시 실행)

시퀀스 수BLAST 실행 시간EFS 대비
5003,324초 (55분)16배 느림
5,0001,853초 (31분)8.7배 느림
50,00011,755초 (3.3시간)35배 느림
500,00037,935초 (10.5시간)25배 느림

FSx 성능 분석

예상과 다른 결과의 원인

  1. 처리량 공유 문제:

    • 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분+ 소요
  2. 버스트 크레딧 소진:

    • 버스트 처리량: 최대 ~1.44 GB/s
    • 크레딧 기반으로 장시간 워크로드에서 소진됨
  3. v11 50,000 테스트가 빨랐던 이유:

    • 단일 작업 실행으로 전체 처리량 독점
    • 이전 hydration으로 데이터가 FSx 캐시에 존재

FSx Lustre 처리량 상세 사양

메트릭항목 예상값Scratch 2 (1.2 TB)Persistent 2 (1000 MBps/TiB)
순차 읽기기본 처리량240 MB/s 1,200 MB/s
읽기버스트 IOPS처리량 수만~1,440 IOPSMB/s (크레딧)해당 없음
지연4개 시간동시 작업 시 <60 1ms
예상 BLAST 시간 (500K seqs)MB/s/작업 ~500-700초300 (EFS 대비 2-3배 빠름)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회 x× $35) ~$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. 최종 권장사항 (실제 테스트 계획결과 (벤치마크 스크립트)기반)

주요 발견사항

  1. FSx Scratch 2는 BLAST 워크로드에 부적합:

    • 1.2 TB Scratch 2의 기본 I/O처리량(240 벤치마크MB/s)이
      #!/bin/bash다중 #작업 io_benchmark.sh MOUNT_POINTS=("/mnt/fsx"병목
    • "/mnt/efs")
    • 4개 for동시 MOUNT작업 in "${MOUNT_POINTS[@]}";작업당 do60 echoMB/s로 "===EFS Testing대비 $MOUNT8-29배 ==="느림
    • #
    • S3 순차Data 읽기Repository의 Lazy Loading으로 첫 접근 시 심각한 지연
  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


의사결정 기준

결과:

MB/s EFS 25배
기준시퀀스 수EFS BLAST 시간 FSx forv13 LustreBLAST 선택시간 EFS성능 선택비교
처리량 요구사항500 > 500 MB/s209초 <3,324초 200(55분) EFS 16배 빠름
지연 시간 민감도5,000 높음213초 낮음1,853초 (31분)EFS 8.7배 빠름
워크로드 빈도50,000 집중적/배치336초 간헐적11,755초 (3.3시간)EFS 35배 빠름
데이터 크기500,000 > 50 GB~1,490초 <37,935초 10 GB
관리 복잡도 허용(10.5시간) 높음낮음
예산성능 우선비용 우선빠름

최종 권장사항

FSx for Lustre 추천 (대부분의 BLAST 워크로드)

장점:

  1. 예측 가능한 비용: 사용량에 관계없이 고정 비용
  2. 높은 처리량: 1,200 MB/s 이상의 읽기 성능
  3. 대규모 배치 처리: 수백만 시퀀스도 효율적 처리
  4. S3 통합: 데이터 아카이빙 및 공유 용이

권장 사용 사례:

  • 일일 4회 이상 BLAST 실행
  • 대용량 데이터베이스 (>100 GB) 사용
  • 빠른 처리 시간이 중요한 경우
  • 예측 가능한 예산 관리 필요

EFS 추천 (간헐적 사용)

장점:

  1. 탄력적 비용처리량: 사용한워크로드에 만큼만따라 지불자동 확장
  2. 안정적 성능: 다중 작업 시에도 일관된 성능
  3. 간편한 설정: AWS Batch ECS 네이티브 지원
  4. 다중 AZ 내구성: 높은 가용성

권장 사용 사례:

  • 월 10회 미만모든 BLAST 실행워크로드 (소규모~대규모)
  • 소규모다중 데이터베이스사용자 동시 접근 환경
  • 빠른 구축이 필요한 경우

FSx for Lustre 고려 시 (<50조건부)

GB)

FSx가 적합할 수 있는 경우:

  1. 단일 작업 순차 실행: 전체 처리량을 독점할 수 있는 경우
  2. Persistent 2 타입 사용: 1000 MBps/TiB 이상의 높은 처리량
  3. 더 큰 용량 프로비저닝: 처리량이 용량에 비례 (3.6 TB = 720 MB/s)
  4. 직접 데이터 복사: 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 ElasticFSx 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.97Batch 작업 인스턴스
EC2 Other$58.44EBS, 네트워크
EFS$69.65스토리지 + 처리량
FSx$87.34Scratch 2 스토리지
S3$9.42FSx Data Repository
합계$459.82

작업당 비용 분석

EFS 테스트 비용

시퀀스 수실행 시간EC2 비용EFS 처리량*합계
500209초$0.35$10.93$11.28
5,000213초$0.36$10.93$11.29
50,000336초$0.56$10.93$11.49
500,0001,490초$2.50$10.93$13.43

*EFS 처리량: 254 GB × $0.043/GB = $10.93/작업

FSx 테스트 비용 (v13)

시퀀스 수실행 시간EC2 비용FSx 처리량합계
5003,324초$5.58$0$5.58
5,0001,853초$3.11$0$3.11
50,00011,755초$19.74$0$19.74
500,00037,935초$63.72$0$63.72

총 소유 비용 (TCO) 비교 - 500,000 시퀀스 기준

항목EFSFSx Scratch 2
인프라 비용$13.43$63.72
대기 시간 비용*$21$525
총 TCO$34.43$588.72

*연구원 시간 비용 $50/시간 가정

월간 비용 예측 (일일 1회 500K 시퀀스)

항목EFSFSx 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 인프라 개선

  1. 별도 마운트 경로 사용: /mnt/lustre 대신 /fsx/blast-db 사용
  2. AMI 사전 구성: Lustre 클라이언트가 설치된 커스텀 AMI 사용
  3. 시작 스크립트 개선: ECS agent 시작 전 FSx 마운트 완료 확인

비용워크로드 최적화

  1. FSxEFS Scratch 2Elastic 사용: Persistent처리량 대비자동 50%확장으로 이상최적 비용 절감성능
  2. Spot 인스턴스: EC2 비용 60-80% 절감
  3. 데이터 계층화: 자주 사용하지 않는 DB는 S3에 보관

성능 최적화

  1. 인스턴스 타입 매칭: 메모리 > 50% DB 크기 유지가능
  2. 병렬 처리: 큰 쿼리 파일을쿼리를 분할하여 병렬동시 실행

FSx 사용 시 권장 구성 (필요시)

  1. 캐시Persistent 활용2 타입: 반복1000 쿼리MBps/TiB 이상
  2. EFS/FSx의
  3. 최소 캐시4.8 효과TB: 활용960 MB/s 기본 처리량 확보
  4. 직접 데이터 복사: S3 Data Repository 대신 DataSync 사용
  5. 사전 hydration 필수: lfs hsm_restore 사용

테스트 일자: 2026-01-06~07 테스트 환경: AWS ap-northeast-2 (서울) 분석자: Claude Code