title, updated, tags
| title |
updated |
tags |
| NFS StorageClass (NAS) |
2026-04-05 |
| infra |
| k3s |
| storage |
| nfs |
| synology |
|
개요
Synology NAS를 K3s NFS StorageClass로 사용. Longhorn(블록)과 병행하여 파일 저장소, 웹소스 등 대용량/RWX 워크로드에 사용.
NAS 정보
| 항목 |
값 |
| 장비 |
Synology NAS |
| IP (kr1/kr2) |
192.168.205.100 |
| IP (hp2) |
192.168.9.100 (현재 미연결, 해결 예정) |
| 디스크 |
11TB (사용 2%) |
| NFS export |
/volume1/k3s-nfs |
| NFS 옵션 |
rw,async,no_wdelay,crossmnt,no_root_squash,insecure_locks,sec=sys,anonuid=1025,anongid=100 |
K3s 설정
| 항목 |
값 |
| StorageClass |
nfs (default 아님, 명시 지정 필요) |
| Provisioner |
nfs-subdir-external-provisioner (Helm) |
| Namespace |
nfs-provisioner |
| NFS 경로 |
/volume1/k3s-nfs |
| 마운트 옵션 |
soft,timeo=50,retrans=3 |
| archiveOnDelete |
true (PVC 삭제 시 데이터 archived- 접두사로 보존) |
| nodeAffinity |
incus-kr1, incus-kr2만 (hp2 NAS 연결 해결 전까지) |
Helm 설치 명령
PVC 사용 예시
성능 (fio 벤치마크, 2026-04-05)
| 테스트 |
IOPS |
대역폭 |
레이턴시 |
| Random Read 4K |
20.6K |
84 MB/s |
1.5 ms |
| Random Write 4K |
18.1K |
74 MB/s |
1.8 ms |
| Seq Read 1M |
263 |
276 MB/s |
30 ms |
| Seq Write 1M |
275 |
288 MB/s |
29 ms |
용도별 StorageClass 선택
| 용도 |
StorageClass |
이유 |
| DB (PostgreSQL, etcd, Redis) |
longhorn |
저레이턴시 블록 필요 |
| 파일 업로드, 사용자 데이터 |
nfs |
대용량, RWX 지원 |
| 웹소스, 정적 파일 |
nfs |
대용량, 여러 Pod 공유 |
| 로그, 임시 데이터 |
longhorn/local-path |
빠른 쓰기 |
파일 소유권
no_root_squash 설정으로 root 컨테이너는 소유권 문제 없음
- 비-root 컨테이너는 Pod
securityContext.fsGroup으로 제어
NFS hard vs soft 교훈 (2026-04-04)
kr2에서 NAS NFS가 hard 마운트 + NAS 연결 끊김으로 load 1959까지 폭주한 사건 발생. D-state 프로세스(mountpoint, NFS manager)가 커널 전체를 잠식.
- hard: NAS 끊기면 무한 대기 → 서버 먹통
- soft: 타임아웃 후 에러 반환 → 서버 생존
모든 NFS 마운트는 soft,timeo=50,retrans=3 필수.
관련 문서