Joo's
반응형

1️⃣ Pod YAML 예제

cephFS, NFS를 둘 다 마운트하는 pod 만들기

apiVersion: v1
kind: Pod
metadata:
  name: storage-benchmark
  namespace: default
spec:
  restartPolicy: Never
  containers:
    - name: fio
      image: ubuntu:24.04
      command: ["sleep", "3600"]
      volumeMounts:
        # CephFS 마운트
        - name: cephfs-volume
          mountPath: /mnt/cephfs_test
        # NFS 마운트
        - name: nfs-volume
          mountPath: /mnt/nfs_test
  volumes:
    # CephFS PVC
    - name: cephfs-volume
      persistentVolumeClaim:
        claimName: test-pvc   # 기존에 생성된 CephFS PVC(kubectl get pvc)
    # NFS 서버
    - name: nfs-volume
      nfs:
        server: 10.178.0.4      # haproxy VM IP
        path: /srv/nfs_share

2️⃣ 실행 방법

kubectl apply -f fio-test-pod.yaml

# pod 접속
kubectl exec -it storage-benchmark -- bash

# pod에 fio 설치
apt update
apt install -y fio

3️⃣ 테스트 예제 (fio)

tekton을 이용한 빌드 속도 비교용

컨테이너 빌드 I/O 특징:

  • 작은 파일 다수 읽기/쓰기 → Docker/Tekton 캐시 레이어 처리
  • 중간 크기 파일 순차 쓰기 → 이미지 레이어 생성
  • 동시 다중 작업 → 여러 build 단계 병렬 처리

1️⃣ 작은 파일 랜덤 읽기/쓰기 (캐시 레이어 I/O)

 

  • bs=8k → Docker/Tekton 캐시 단위 파일과 유사
  • numjobs=8 → 다중 빌드 단계 동시 처리 모사
  • iodepth=16 → 병렬 I/O 큐 깊이

 

# CephFS
fio --name=tekton_randrw_cephfs \
    --filename=/mnt/cephfs_test/tekton_testfile_cephfs \
    --size=1G \
    --rw=randrw \
    --bs=8k \
    --direct=1 \
    --numjobs=8 \
    --iodepth=16 \
    --runtime=180 \
    --group_reporting

# NFS
fio --name=tekton_randrw_nfs \
    --filename=/mnt/nfs_test/tekton_testfile_nfs \
    --size=1G \
    --rw=randrw \
    --bs=8k \
    --direct=1 \
    --numjobs=8 \
    --iodepth=16 \
    --runtime=180 \
    --group_reporting

2️⃣ 중간/큰 파일 순차 쓰기 (이미지 레이어 생성)

 

  • bs=512k → 이미지 레이어 평균 블록 크기와 비슷
  • numjobs=2 → 한두 레이어 동시 빌드
# CephFS
fio --name=tekton_seqwrite_cephfs \
    --filename=/mnt/cephfs_test/tekton_layer_cephfs \
    --size=2G \
    --rw=write \
    --bs=512k \
    --direct=1 \
    --numjobs=2 \
    --iodepth=4 \
    --runtime=180 \
    --group_reporting

# NFS
fio --name=tekton_seqwrite_nfs \
    --filename=/mnt/nfs_test/tekton_layer_nfs \
    --size=2G \
    --rw=write \
    --bs=512k \
    --direct=1 \
    --numjobs=2 \
    --iodepth=4 \
    --runtime=180 \
    --group_reporting

 

3️⃣ 테스트 해석

  • IOPS → 작은 파일 읽기/쓰기 성능 (캐시 레이어)
  • Bandwidth(MB/s) → 레이어 쓰기 성능
  • Latency → 각 I/O 작업 지연, Tekton 빌드 지연에 영향
# 테스트 후 파일 삭제
rm /mnt/cephfs_test/tekton_*
rm /mnt/nfs_test/tekton_*

항목 CephFS NFS 차이/해석( 1️⃣ 작은 파일 랜덤 읽기/쓰기 (캐시 레이어 I/O))

READ BW 2.35 MiB/s 16.1 MiB/s NFS가 약 7배 빠름
WRITE BW 2.36 MiB/s 16.0 MiB/s NFS가 약 6.8배 빠름
READ IOPS 293 2,056 NFS가 약 7배 많음
WRITE IOPS 295 2,053 NFS가 약 7배 많음
READ latency 1.17 ms 0.395 ms NFS 지연 낮음
WRITE latency 25.9 ms 3.49 ms NFS 지연 훨씬 낮음
CPU 사용률 낮음 낮음 둘 다 I/O가 병목, CPU 영향 적음
반응형
profile

Joo's

@JooJY

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!