infra/nas-storage: 2026-04-14 정확성 보정
- hp2 NAS 연결 상태 갱신 (미연결 → 192.168.205.134로 정상 참여) - nfs-provisioner nodeAffinity 실제값 반영 (제약 없음) - iSCSI ScsiTarget on-demand 동작 설명 추가 - 2026-04-14 iSCSI smoke test 결과 기록 - eth2 USB NIC watchdog 섹션 신설 (LPM exit latency 이슈 대응)
This commit is contained in:
@@ -1,24 +1,32 @@
|
||||
---
|
||||
title: NAS StorageClass (NFS + iSCSI)
|
||||
updated: 2026-04-10
|
||||
updated: 2026-04-14 문서 정확성 보정 (hp2 연결 상태, nodeAffinity, iSCSI on-demand 동작)
|
||||
tags: [infra, k3s, storage, nfs, iscsi, synology]
|
||||
---
|
||||
|
||||
## 개요
|
||||
|
||||
Synology NAS를 K3s NFS StorageClass로 사용. Longhorn(블록)과 병행하여 파일 저장소, 웹소스 등 대용량/RWX 워크로드에 사용.
|
||||
Synology NAS(DS916+)를 K3s NFS/iSCSI StorageClass로 사용. Longhorn(로컬 블록)과 병행하여 파일 저장소, 웹소스 등 대용량/RWX 워크로드에 사용.
|
||||
|
||||
## NAS 정보
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| 장비 | Synology NAS |
|
||||
| IP (kr1/kr2) | 192.168.205.100 |
|
||||
| IP (hp2) | 192.168.9.100 (현재 미연결, 해결 예정) |
|
||||
| 모델 | Synology DS916+ (Braswell, x86_64, Linux 3.10.108) |
|
||||
| bond0 (eth0+eth1, 1G×2) | **192.168.9.100** — 관리/SMB/DSM 웹 |
|
||||
| eth2 (USB 2.5G, RTL8157, r8152) | **192.168.205.100** — NFS/iSCSI 데이터 플레인, MTU 9000 |
|
||||
| 디스크 | 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 노드는 모두 192.168.205.0/24 서브넷에 참여하고 있음 (2026-04-14 검증):
|
||||
|
||||
| 노드 | 출구 NIC | src IP |
|
||||
|------|---------|--------|
|
||||
| incus-kr1 | enp7s0 (PCIe 2.5G) | 192.168.205.214 |
|
||||
| incus-kr2 | enx803f5dd34c9f (USB 2.5G) | 192.168.205.135 |
|
||||
| incus-hp2 | ens2 | 192.168.205.134 |
|
||||
|
||||
## K3s 설정
|
||||
|
||||
| 항목 | 값 |
|
||||
@@ -29,7 +37,7 @@ Synology NAS를 K3s NFS StorageClass로 사용. Longhorn(블록)과 병행하여
|
||||
| NFS 경로 | `/volume1/k3s-nfs` |
|
||||
| 마운트 옵션 | `soft,timeo=50,retrans=3` |
|
||||
| archiveOnDelete | true (PVC 삭제 시 데이터 archived- 접두사로 보존) |
|
||||
| nodeAffinity | incus-kr1, incus-kr2만 (hp2 NAS 연결 해결 전까지) |
|
||||
| nodeAffinity | **없음 (제약 없이 배포)** — 2026-04-14 기준 Deployment에 nodeSelector/affinity 미설정. 3 노드(kr1/kr2/hp2) 전부 192.168.205.0/24 도달 가능해 스케줄 자유 |
|
||||
|
||||
### Helm 설치 명령
|
||||
|
||||
@@ -122,6 +130,34 @@ helm install synology-iscsi democratic-csi/democratic-csi \
|
||||
-f /tmp/democratic-csi-values.yaml
|
||||
```
|
||||
|
||||
### ScsiTarget 서비스의 on-demand 동작 (중요)
|
||||
|
||||
DSM의 `ScsiTarget` 패키지는 LIO(kernel configfs) 기반이며, **Target이 0개이면 3260 포트를 LISTEN하지 않는다.** 이건 고장이 아니라 LIO의 정상 동작.
|
||||
|
||||
- PVC 없는 상태 → `netstat -lnt | grep 3260` 비어있음
|
||||
- PVC 생성 → democratic-csi가 Synology API로 Target+LUN 자동 생성 → configfs에 Target 등록 → 3260 자동 LISTEN
|
||||
- PVC 삭제 → Target/LUN 자동 제거 → Target 0개 되면 3260 닫힘
|
||||
|
||||
따라서 "3260 포트가 안 열려있다"만으로 장애 판단 금지. **Target 존재 여부 먼저 확인:**
|
||||
|
||||
```bash
|
||||
# NAS에서
|
||||
find /sys/kernel/config/target/iscsi -maxdepth 2 -type d
|
||||
sudo synopkg status ScsiTarget # "running"이어야 함
|
||||
```
|
||||
|
||||
### 2026-04-14 smoke test 결과
|
||||
|
||||
| 단계 | 결과 |
|
||||
|------|------|
|
||||
| PVC 생성 (1Gi, synology-iscsi) → Bound | 30초 |
|
||||
| Target + LUN 자동 생성 | OK (democratic-csi → Synology HTTPS API) |
|
||||
| 3260 LISTEN | OK (Target 등록과 동시에) |
|
||||
| discovery (kr1/kr2/hp2 전부) | OK (양 포털 192.168.205.100 + 192.168.9.100) |
|
||||
| PVC 삭제 → PV Released → DeleteVolume → PV gone | OK |
|
||||
|
||||
2026-04-14 이전 며칠간 ScsiTarget이 stop 상태로 방치되어 있었음. 원인 미확인(`/var/log/synopkg.log` 로그 기준 3/24 부팅 이후 stop 기록 없지만 실제 상태는 stop). 수동 `sudo synopkg start ScsiTarget`로 복구. 실제 소비자 PVC는 계속 0건이라 서비스 영향 없었음.
|
||||
|
||||
### 전체 StorageClass 요약
|
||||
|
||||
| StorageClass | 방식 | 용도 | HA |
|
||||
@@ -139,7 +175,35 @@ helm install synology-iscsi democratic-csi/democratic-csi \
|
||||
|------|-----------|-----|----------|
|
||||
| kr1 | enp7s0 (PCIe 2.5GbE) | 9000 | `/etc/systemd/network/20-enp7s0.network` |
|
||||
| kr2 | enx803f5dd34c9f (USB 2.5GbE) | 9000 | `/etc/systemd/network/30-usb-2g5.network` |
|
||||
| NAS | eth2 (2.5GbE) | 9000 | Synology DSM 네트워크 설정 |
|
||||
| hp2 | ens2 | — | (2026-04-14 시점 192.168.205.0/24 참여 확인, MTU 설정 재검증 필요) |
|
||||
| NAS | eth2 (USB 2.5GbE) | 9000 | Synology DSM 네트워크 설정 |
|
||||
|
||||
## NAS eth2 USB NIC watchdog (2026-04-14)
|
||||
|
||||
NAS의 eth2(USB 2.5G, RTL8157)가 USB 3.0 LPM exit latency 미보고 이슈로 간헐적 disconnect 발생 (21일 uptime 기준 2회). 드라이버는 자동 reconnect하지만 인터페이스가 DOWN 상태로 남아 네트워크 서비스 중단.
|
||||
|
||||
근본 원인: DSM 3.10.108 커널의 xHCI 호스트 컨트롤러가 LPM `U1/U2 exit latency` descriptor를 OS에 노출하지 않음 → 링크 절전 복귀 타이밍 불일치 → `-71 EPROTO` → USB disconnect. DS916+ 하드웨어/커널 조합의 근본적 한계로 드라이버 업데이트·커널 교체로 해결 불가.
|
||||
|
||||
### 대응: cron watchdog
|
||||
|
||||
| 항목 | 값 |
|
||||
|------|-----|
|
||||
| 스크립트 | `/usr/local/bin/eth2-watchdog.sh` (root:755) |
|
||||
| 주기 | 1분 (root cron, `/etc/crontab`) |
|
||||
| 로그 | `/var/log/eth2-watchdog.log` |
|
||||
| 영속성 | `/dev/md0` ext4 root, 재부팅 유지 (DSM 메이저 업그레이드 시 재확인 필요) |
|
||||
|
||||
동작:
|
||||
1. `/sys/class/net/eth2/operstate` 확인
|
||||
2. `up`이 아니면 `ip link set eth2 up` (IP는 DSM ifcfg-eth2가 자동 할당)
|
||||
3. UP 후 IP 없으면 `ip addr add 192.168.205.100/24 dev eth2`
|
||||
4. MTU ≠ 9000 이면 보정
|
||||
|
||||
### 검증 기록
|
||||
|
||||
- 2026-04-14 강제 down 테스트: 1분 내 watchdog 실행 → `ip link up` → DSM ifcfg 자동 IP 할당 → 정상 복귀 (MTU 9000 유지)
|
||||
- Outline 상세 기록: `2026-04-14 / NAS eth2 watchdog 구축 / kappa` (id `93baf66b-f003-47a9-9d14-7a66e3dbfde0`)
|
||||
- RCA 문서: `2026-04-14 / NAS eth2 USB NIC 링크 드롭 원인 조사 / kappa` (id `db923170-8c16-459d-82ce-46fdc1f0f0d0`)
|
||||
|
||||
### kr2 USB NIC 드라이버 (r8152 DKMS)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user