Skip to main content

스토리지 전략 및 성능 최적화

스토리지 전략 및 성능 최적화

3.1 HealthOmics 스토리지 아키텍처

공유 파일시스템 특성:

HealthOmics 런타임 환경:
- EFS (Elastic File System): 기본 공유 스토리지
- FSx for Lustre: 고성능 워크로드 옵션
- Run별 공유: 동일 Run 내 모든 Task가 파일시스템 공유
- 네트워크 레이턴시: 1-5ms (EFS), <1ms (FSx Lustre)

DYNAMIC vs STATIC 스토리지 전략:

DYNAMIC 스토리지 (권장 시작점):

  • 장점: 사용량 기반 과금, 자동 확장, 관리 오버헤드 없음
  • 성능: 최대 7,000 IOPS, 1GB/s 처리량
  • 비용: $0.30/GB/월 (사용량 기반)
  • 적용 시나리오: 대부분의 워크로드, 예측 불가능한 데이터 크기

STATIC 스토리지 (최적화 후 전환):

  • 장점: 예측 가능한 비용, 높은 IOPS (최대 20,000)
  • 성능: 프로비저닝된 처리량, 일관된 레이턴시
  • 비용: $0.20/GB/월 (프로비저닝 기반)
  • 적용 시나리오: 대용량 반복 워크로드, 성능 최적화 필요

3.2 워크플로우 수정 요구사항

공유 스토리지로 인한 WDL 수정 사항:

문제 상황 - 심볼릭 링크 오류:

# 기존 코드 (문제 발생)
elif [[ "$SUFFIX" == "gz" ]] ; then
    ln -s ~{readFile} output/${PREFIX}.gz  # 작업 디렉토리 외부 참조
fi

# 수정된 코드 (권장)
elif [[ "$SUFFIX" == "gz" ]] ; then
    cp ~{readFile} output/${PREFIX}.gz     # 파일 복사로 변경
fi

근본 원인:

  • HealthOmics 보안 정책: 작업 디렉토리 외부 경로 참조 금지
  • 심볼릭 링크가 /mnt/inputs/ (외부) → output/ (내부) 참조 시도
  • OutputError 발생: "path outside working directory"

해결 전략:

  1. 파일 복사 방식: 안전하지만 스토리지 사용량 2배
  2. 하드 링크 방식: 동일 파일시스템 내에서 효율적
  3. 조건부 처리: 파일 형식에 따른 선택적 처리

3.3 성능 최적화 가이드라인

I/O 최적화:

파일 액세스 패턴 최적화:
- 순차 읽기: EFS 최적화 (prefetch 활용)
- 랜덤 액세스: FSx Lustre 권장
- 대용량 파일: 멀티스레드 I/O 활용
- 임시 파일: 로컬 SSD 활용 (/tmp)

네트워크 최적화:

  • EFS 마운트 옵션: nfsvers=4.1,rsize=1048576,wsize=1048576
  • FSx Lustre: 병렬 파일시스템, 높은 처리량
  • 데이터 지역성: 동일 AZ 내 리소스 배치