728x90
✅ 목표: MinIO가 사용하는 Persistent Volume의 성능을 측정하기 위해
fio, ioping, dd 같은 도구를 활용하여 I/O 성능을 수치화하고 분석하는 방법을 실습합니다.
🔎 이번 글에서 수행할 작업 요약
- 테스트용 파드를 생성하고 PVC를 연결
- fio, ioping, dd 도구 설치 및 실행
- 읽기/쓰기 IOPS 및 처리 속도 측정
- 측정값을 기반으로 성능 병목 판단
🧱 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