NAS + 미니PC VLAN/NFS 설정

NAS + 미니PC VLAN/NFS 설정

VLAN + NFS로 “Plex·Docker 전용 전용선” 깔아야 할 때입니다

기가비트 인터넷에 시놀로지 NAS까지 갖췄는데, 막상 Plex나 Docker 컨테이너에서 NAS 볼륨을 물리면 이런 일이 자주 벌어집니다.

  • 4K 영상이 중간중간 버퍼링된다
  • 컨테이너가 NAS 공유 폴더를 읽을 때마다 딜레이가 생긴다
  • 대용량 파일 복사만 시작하면 집 전체 네트워크가 버벅인다

이 문제의 핵심은 단순합니다.

“모든 트래픽이 한 길로 몰리기 때문”입니다.
(LAN·WAN·NAS I/O가 전부 한 대역에서 뒤엉킴)

이 글에서는 시놀로지 NAS + 미니PC(Ubuntu Server 24.x) 환경에서

  • NAS와 미니PC 사이에 VLAN 전용선을 만들고,
  • 그 위에 NFS v4.1 + fstab 자동 마운트를 얹어서,
  • Plex / Docker / 미디어 서버가 NAS를 로컬 SSD처럼 쓰게 만드는 방법을 단계별로 정리합니다.

타깃 독자:
“Plex 4K만 틀면 버퍼링 걸리는 게 너무 싫다”는 홈서버 운영자


1. 왜 기가비트인데도 버퍼링이 걸릴까? (트래픽 혼잡 구조)

일반적인 홈 네트워크 구조를 생각해 보겠습니다.

  • PC, NAS, TV, 스마트폰, 태블릿… 전부 같은 LAN 대역(예: 192.168.x.x)
  • 인터넷 트래픽, NAS I/O, IPTV, 스트리밍 트래픽이 전부 같은 스위치/공유기를 타고 다님

이 상태에서:

  • Plex 서버(미니PC)가
  • NAS 공유 폴더에서 4K 파일을 읽으면서
  • 동시에 집에서 넷플릭스, 유튜브, 게임까지 돌아가면

모든 트래픽이 같은 길 위에서 서로 비집고 지나가야 합니다. 그 결과:

  • NAS ↔ 미니PC 사이의 순수 I/O 속도가 떨어지고
  • 완충(buffer)이 부족한 4K 영상부터 먼저 버퍼링이 발생합니다.

결론:
NAS–미니PC 사이에는 “전용 대역”을 뽑아줘야 합니다.
그게 바로 VLAN + NFS 조합입니다.


2. VLAN이란? – “NAS 전용 고속도로”를 하나 더 까는 것

VLAN을 어렵게 생각할 필요는 없습니다.

  • 같은 물리 스위치/케이블을 쓰지만,
  • 논리적으로는 “서로 다른 네트워크”로 나누는 기술입니다.

비유하자면:

기존 LAN = 일반 도로
VLAN 11 = “NAS 전용 화물 전용차선”

이렇게 설계하면 장점이 분명해집니다.

  • 트래픽 분리
    • 홈 네트워크(예: 10.x.x.x)와 NAS 데이터망(예: 11.x.x.x)을 분리
  • 지연 최소화
    • NAS 데이터는 공유기를 왔다 갔다 하지 않고,
      스위치 내부에서만 빠르게 교환
  • 보안성
    • NAS를 VLAN 전용망으로 묶으면,
      일반 클라이언트에서 NAS 접근을 쉽게 제한할 수 있음

목표 한 줄 정리:
“NAS ↔ 미니PC 구간을 전용선처럼 만든다.”


3. 환경 요약

항목내용
미니PCGMKtec M6 (Ubuntu Server 24.x)
NASSynology DS923+
VLAN ID11
연결 방식NFS v4.1 + /etc/fstab 자동 마운트
NIC 구성eno1(메인망), enp3s0(VLAN 전용망)

4. 네트워크 구성도

  • 메인 LAN (예: 10.10.252.0/25) : 일반 PC·스마트 기기용
  • VLAN 11 (11.11.11.0/25) : 미니PC ↔ NAS 전용 데이터망

5. STEP 1 – Ubuntu 미니PC VLAN 설정 (Netplan)

먼저 미니PC의 VLAN 인터페이스를 만들겠습니다.
예시는 /etc/netplan/50-cloud-init.yaml입니다.

network:
  version: 2
  renderer: networkd

  ethernets:
    eno1:
      dhcp4: no
      addresses:
        - 10.10.252.251/25
      routes:
        - to: default
          via: 10.10.252.254
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

    enp3s0:
      dhcp4: no

  vlans:
    enp3s0.11:
      id: 11
      link: enp3s0
      addresses:
        - 11.11.11.2/25

포인트 정리

  • enp3s0 : NAS와 연결된 물리 NIC
  • enp3s0.11 : VLAN ID 11이 태깅된 가상 NIC
  • NAS VLAN 인터페이스의 IP (11.11.11.1/25)와 같은 대역이여야 합니다.

적용 명령어:

sudo netplan apply
ip addr show enp3s0.11

6. STEP 2 – 시놀로지 NAS VLAN 인터페이스 생성

DSM 경로

제어판 → 네트워크 → 네트워크 인터페이스 → “생성” → “VLAN”

예시 설정값:

  • VLAN ID : 11
  • IP 주소 : 11.11.11.1/25
  • 게이트웨이 : (비워둠)
  • 연결 포트 : LAN2 (미니PC와 연결된 포트)

여기서 중요한 부분이 두 가지입니다.

  1. 게이트웨이를 비워두는 이유
    • 이 VLAN 인터페이스는 인터넷을 나가기 위한 용도가 아닙니다.
    • 오직 “미니PC와의 내부 통신 전용”이기 때문에
      게이트웨이를 비워야 NAS가 이 인터페이스로 외부를 찾으러 가지 않습니다.
  2. 물리 연결
    • NAS의 VLAN 인터페이스가 붙어 있는 포트(LAN2)와
      미니PC의 VLAN용 NIC(enp3s0)는
      • 같은 스위치의 VLAN 11 포트이거나
      • 직접 케이블로 이어져 있어야 합니다.

7. STEP 3 – 시놀로지 NFS 설정 & 권한

이제 NAS에서 NFS를 열어 줍니다.

7-1. NFS 서비스 활성화

제어판 → 파일 서비스 → NFS 탭

  • NFS 서비스 활성화 체크
  • NFS 버전 4.1 선택

7-2. 공유 폴더별 NFS 권한 설정

예시 공유 폴더:

  • /volume1/docker
  • /volume1/music
  • /volume1/photo
  • /volume1/nextcloud

각 공유 폴더에서:

공유 폴더 선택 → “편집” → NFS 권한

설정 예시:

  • 허용 호스트 : 11.11.11.0/25
  • 권한 : 읽기/쓰기
  • Squash 옵션 : “admin에 모든사용자 매핑” (Map all users to admin)
  • Secure 옵션 : 필요시 해제 (포트 제한이 목적이므로 환경에 맞게)

여기서 가장 중요한 포인트가 바로 Squash 설정입니다.

  • 예전 초안처럼 no mapping을 사용하면,
    • 미니PC의 UID/GID(보통 1000)와
      시놀로지 내부의 UID/GID가 정확히 일치해야 합니다.
    • 그렇지 않으면 NFS 마운트는 되는데 쓰기 작업마다 “Permission denied” 지옥이 시작됩니다.
  • 홈서버 환경에서 권한으로 스트레스 받지 않으려면,
    • “모든 사용자를 admin으로 매핑”으로 두고,
    • 대신 VLAN+방화벽 레벨에서 접근을 제한하는 쪽이 훨씬 현실적입니다.

요약:
초보자/개인 홈서버라면
보안보다 일단 “잘 돌아가는 것”이 우선입니다.
→ NFS Squash는 “모든 사용자를 admin으로 매핑”을 강력 추천합니다.


8. STEP 4 – Ubuntu /etc/fstab 자동 마운트 + 성능 옵션

이제 미니PC에서 NFS를 자동 마운트하도록 설정하겠습니다.

/etc/fstab 예시:

11.11.11.1:/volume1/docker     /mnt/docker     nfs  vers=4.1,rw,noatime,_netdev,x-systemd.automount,timeo=600,retrans=2  0 0
11.11.11.1:/volume1/music      /mnt/music      nfs  vers=4.1,rw,noatime,_netdev,x-systemd.automount,timeo=600,retrans=2  0 0
11.11.11.1:/volume1/photo      /mnt/photo      nfs  vers=4.1,rw,noatime,_netdev,x-systemd.automount,timeo=600,retrans=2  0 0
11.11.11.1:/volume1/nextcloud  /mnt/nextcloud  nfs  vers=4.1,rw,noatime,_netdev,x-systemd.automount,timeo=600,retrans=2,hard  0 0

옵션 해설

  • vers=4.1 : NFS v4.1 사용 (락·성능 측면에서 유리)
  • rw : 읽기/쓰기
  • noatime : 파일 접근 시간 업데이트를 끄고 디스크 I/O 감소
  • _netdev :
    • “이 파일 시스템은 네트워크가 올라온 뒤에 마운트하라”는 의미
    • 부팅 시 네트워크가 준비되기 전에 마운트 시도하는 걸 막아줌
  • x-systemd.automount :
    • 매우 중요한 옵션입니다.
    • 부팅 시 바로 마운트하지 않고,
      해당 경로에 처음 접근할 때 자동으로 마운트를 시도합니다.
    • 덕분에 NAS가 꺼져 있거나 재부팅 중이어도
      미니PC 부팅이 멈추지 않고 정상 완료됩니다.
  • timeo=600 : 타임아웃 60초 (단위: deci-second)
  • retrans=2 : 실패 시 재시도 횟수
  • hard : (권장) 연결이 끊기면 재시도하며 버티는 방식
    • 데이터 일관성을 중시할 때 사용

적용:

sudo mount -a
df -hT | grep nfs

9. 성능 튜닝 – MTU 9000은 “지원되는 환경에서만”

많은 분들이 Jumbo Frame(MTU 9000)을 성능 튜닝의 필수 요소처럼 이야기하지만,
여기에는 치명적인 함정이 하나 있습니다.

⚠️ 경고 – MTU 9000은 “전 구간이 다 9000일 때만” 의미가 있습니다.

즉:

  • 미니PC NIC
  • 미니PC ↔ 스위치 구간
  • 스위치 포트 (VLAN 11)
  • 스위치 ↔ NAS 구간
  • NAS NIC

모든 구간이 MTU 9000을 지원하고 설정되어 있어야 합니다.

중간에 하나라도:

  • MTU 1500으로 고정되어 있거나
  • 점보 프레임을 지원하지 않는 스위치/장비가 끼어 있으면

→ 패킷 단편화 / 재전송이 반복되면서
실제 체감 속도가 1/10로 떨어지는 최악의 상황이 나올 수 있습니다.

따라서:

  • MTU를 9000으로 올릴 계획이라면,
    • 관리 스위치 설정, NIC 드라이버, NAS 네트워크 고급 설정까지
      전부 확인 후 일괄 적용하세요.
  • 애매하다면 기본값(1500) 그대로 두고 VLAN+NFS만으로도 충분한 효과를 볼 수 있습니다.

10. 마무리 – 이제 Plex 4K도 “로컬 SSD”처럼 재생됩니다

여기까지 구성을 마치면, 구조는 이렇게 바뀝니다.

  • 기존
    • 홈 LAN 하나에 모든 장비가 얹힘
    • NAS–미니PC 트래픽이 일반 인터넷·스트리밍과 섞여 병목 발생
  • 구성 후
    • VLAN 11 = NAS–미니PC 전용 데이터망
    • NFS v4.1 + 최적화된 fstab 옵션으로 마운트
    • Plex / Docker는 /mnt/... 경로를 로컬 디스크처럼 사용

결과적으로:

  • Plex·Emby·Jellyfin의 라이브러리 스캔 속도가 눈에 띄게 빨라지고,
  • 트랜스코딩 중 버퍼링이 크게 줄어들며,
  • Docker 컨테이너에서 NAS 볼륨을 마운트했을 때도
    로컬 SSD에 가까운 체감 속도를 기대할 수 있습니다.

✅ 핵심 포인트 한 번 더 요약

  • VLAN으로 NAS–미니PC 전용 전용선을 만든다.
  • 시놀로지 NFS 권한에서 “모든 사용자를 admin으로 매핑”으로 권한 지옥을 미리 차단한다.
  • /etc/fstab에는 반드시 _netdev + x-systemd.automount를 사용해서
    NAS가 꺼져 있어도 미니PC 부팅이 멈추지 않도록 설정한다.
  • MTU 9000은 “전 구간이 Jumbo Frame 구성일 때만” 적용한다.
    혼합 환경이라면 차라리 1500이 더 안전하다.

이 구성만 제대로 잡아두면,
이후 Nextcloud, Immich, Docker 스택, Plex, Jellyfin 등을 얹어도
“NAS 때문에 느려진다”는 말은 거의 안 나오게 됩니다.

이제 남은 건,
각 서비스에 어떤 스택을 얹을지, 그리고 그걸 어떻게 자동화할지 고민하는 일뿐입니다.


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다