Data Engineering/s3 minio

📘 [MinIO & Cilium 기반 오브젝트 스토리지 연동 시리즈 #10] MinIO PVC 성능 측정 실습 (fio, ioping, dd)

ygtoken 2025. 3. 26. 18:16
728x90

목표: MinIO가 사용하는 Persistent Volume의 성능을 측정하기 위해
fio, ioping, dd 같은 도구를 활용하여 I/O 성능을 수치화하고 분석하는 방법을 실습합니다.


🔎 이번 글에서 수행할 작업 요약

  1. 테스트용 파드를 생성하고 PVC를 연결
  2. fio, ioping, dd 도구 설치 및 실행
  3. 읽기/쓰기 IOPS 및 처리 속도 측정
  4. 측정값을 기반으로 성능 병목 판단

🧱 1단계: 테스트용 PVC와 파드 구성

이 단계의 목적: MinIO에서 사용하는 PVC와 동일한 스토리지 클래스를 기준으로
별도의 테스트 파드를 생성하여 성능 측정 환경을 준비합니다.

# pvc-test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: pvc-test-pod                          # 🔹 성능 측정을 위한 파드 이름
  namespace: minio                            # 🔹 MinIO와 동일한 네임스페이스
spec:
  containers:
  - name: tester
    image: ubuntu:20.04                        # 🔹 측정 도구를 설치할 수 있는 기본 이미지
    command: ["sleep", "infinity"]             # 🔹 대기 상태로 유지
    volumeMounts:
    - name: test-vol
      mountPath: /mnt/test-vol                 # ✅ 성능 측정을 수행할 대상 디렉토리
  volumes:
  - name: test-vol
    persistentVolumeClaim:
      claimName: minio                        # 🔹 기존 MinIO와 동일한 PVC를 참조
# 파드 생성
kubectl apply -f pvc-test-pod.yaml

🛠️ 2단계: 도구 설치 및 성능 측정

이 단계의 목적: fio, ioping, dd 도구를 설치한 후
각 도구의 특성과 활용 목적에 맞게 PVC 성능을 측정합니다.

# 파드 내부 진입
kubectl exec -it pvc-test-pod -n minio -- bash
# 도구 설치
apt update
apt install -y fio ioping coreutils

✅ 1) fio 측정

# 랜덤 읽기 성능 측정
fio --name=readtest --filename=/mnt/test-vol/testfile \
  --size=500M --bs=4k --rw=randread --ioengine=libaio --iodepth=16 --runtime=30 --numjobs=1 --group_reporting
# --rw=randread : 랜덤 읽기
# --bs=4k       : 블록 크기 4KB
# --iodepth=16  : I/O 큐 길이 16

✅ 2) ioping 측정

# 10초 동안 평균 응답 시간 측정
ioping -c 10 /mnt/test-vol

✅ 3) dd 측정

# 연속 쓰기 속도 측정 (write throughput)
dd if=/dev/zero of=/mnt/test-vol/testfile bs=1M count=500 conv=fdatasync

📊 각 도구는 성능 측정 항목이 다르므로 함께 사용하여 종합 판단 필요


🔍 3단계: 결과 해석 및 성능 판단 기준

도구 측정 항목 기준
fio IOPS, Bandwidth IOPS ≥ 1000, BW ≥ 100MB/s
ioping 평균 지연 시간 1~5ms 이하 권장
dd 순차 쓰기 속도 100MB/s 이상 권장
  • 만약 IOPS가 낮고 지연 시간이 높다면:
    • PVC 스토리지 유형 확인 (hostPath, local-path, NFS 등)
    • 백그라운드 I/O 과부하 여부 확인
    • 스토리지 클래스 QoS 설정 점검 필요

📎 요약 및 핵심 정리

  • fio, ioping, dd는 Kubernetes 환경에서도 PVC 성능을 빠르게 측정하는 데 유용한 도구임
  • 각 도구의 특징을 살려서 IOPS, 지연 시간, 쓰기 처리량 등을 다각도로 측정 가능함
  • 측정된 결과를 기준으로 성능 병목 여부를 판단하고, 향후 스토리지 성능 개선의 기준으로 활용 가능함
  • MinIO와 같은 고속 I/O 요구 서비스의 성능 확보를 위해 필수적인 과정임

 

728x90