NAS와 리눅스 서버 간에 공유 디스크를 구성할 때는, NFS와 SMB 중 어떤 걸 쓸지 결정하는 게 중요합니다.
✅ NFS vs SMB: 핵심 차이점
항목NFSSMB
개발사/기반 | UNIX/Linux 기반 | Windows 기반 |
성능 | 더 빠름 (리눅스에서) | 상대적으로 느림 |
호환성 | 리눅스에 최적화 | 윈도우에 최적화 |
접근 방식 | UID/GID 기반 접근 | 사용자 인증 기반 |
파일 권한 유지 | O (리눅스 퍼미션 그대로) | 제한적 (매핑 필요) |
속도 (일반 파일 공유) | 빠름 | 느릴 수 있음 |
복잡도 | 단순 (서버와 클라이언트 설정만) | 조금 복잡 (권한 매핑 등) |
🔧 NFS의 주요 장점
1️⃣ 리눅스 환경에 최적화
- Ubuntu, Debian, CentOS 등 리눅스 기반 시스템은 NFS를 기본 지원
- 파일 권한, 소유권 유지가 SMB보다 훨씬 잘 됨
2️⃣ 속도와 효율성
- 불필요한 인증/암호화 절차 없이 빠르게 파일 전송
- 특히 내부망에서의 파일 공유에 매우 효율적
- TCP 대신 UDP 사용도 가능 (저지연)
3️⃣ 자동 마운트 / 영구 연결 쉬움
- /etc/fstab 설정으로 부팅 시 자동 마운트 간편
- autofs로도 유연하게 관리 가능
4️⃣ 도커 컨테이너 공유 볼륨으로 이상적
- Docker나 Kubernetes 환경에서 컨테이너 간 공유 스토리지로 자주 사용
- 파일 퍼미션이나 UID 충돌이 적음
🚫 SMB가 불리한 이유 (Linux 기준)
- 파일 소유권 문제
리눅스에서 SMB는 UID/GID를 매핑해야 하므로 복잡하고 문제 생기기 쉬움 - 퍼포먼스 손해
암호화, 인증 과정이 항상 들어가므로 내부망 성능이 떨어짐 - 권한 매핑 문제
Docker 컨테이너에서 SMB 공유를 쓸 경우, 권한 충돌이 자주 발생
🔧 결론: 서버 ↔ NAS 연결엔 NFS가 정석
- Ubuntu 서버에서 NAS(QNAP 등) 스토리지를 연결할 때는 무조건 NFS 우선
- 단, 윈도우 PC에서 파일 공유용이라면 SMB도 함께 사용 가능
필요하시면 QNAP에서 NFS 설정 + Ubuntu에서 마운트 설정까지 단계별로 도와드릴게요. 바로 진행할까요?
4o
You said:
네. 큐넵 nfs 버전 설정부터
ChatGPT said:
좋습니다. 그럼 QNAP NAS에서 NFS 설정부터 차근차근 시작하겠습니다.
✅ 1단계: QNAP에서 NFS 설정
🔧 NFS 서비스 활성화
- QNAP 관리자 페이지 접속
→ http://<QNAP-IP>:8080
예: http://192.168.0.100:8080 - [제어판] → [네트워크 및 파일 서비스] → [Win/Mac/NFS]
- [NFS 서비스] 탭 클릭
- ✅ "NFS 서비스 사용" 체크박스 활성화
→ 적용
✅ 2단계: 공유 폴더에 NFS 권한 설정
- [제어판] → [공유 폴더]
- 원하는 공유 폴더(예: docker-shared) 선택 → [편집]
- 상단 탭에서 [권한] → [NFS 권한] 선택
- [생성] 또는 [편집] 클릭 → 아래 설정 적용
🧩 NFS 권한 설정 예시
항목값
호스트/IP 주소 | 192.168.0.0/24 (또는 Ubuntu VM의 IP) |
접근 권한 | 읽기/쓰기 |
권한 제한 | 루트 사용자에 대한 액세스 허용 체크 |
비동기화 모드 허용 | ✅ 체크 (속도 향상) |
사용자 매핑 | 루트 → admin 또는 그대로 사용 |
→ 설정 후 저장 & 적용
✅ 3단계: QNAP NFS 버전 확인/강제
QNAP은 기본적으로 NFS v3를 사용하지만, 일부 버전에서는 v4도 지원합니다.
강제로 v4만 사용하려면:
- SSH로 QNAP 접속 필요 (admin 계정 사용)
- /etc/nfs.conf 또는 관련 설정을 수동으로 수정해야 함 (일반 사용자에겐 권장 안 됨)
💡 일반적으로는 v3로 충분하며, Ubuntu에서 마운트 시 vers=3 또는 vers=4를 명시하여 선택 가능합니다.
✅ 4단계: Ubuntu에서 NFS 마운트 준비
1️⃣ NFS 클라이언트 패키지 설치
bash
CopyEdit
sudo apt update sudo apt install nfs-common -y
✅ 5단계: NFS 폴더 수동 마운트 (테스트용)
예시 환경:
- QNAP IP: 192.168.0.100
- 공유 폴더 이름: docker-shared
- 마운트 위치: /mnt/qnap
1️⃣ 마운트 디렉터리 생성
bash
CopyEdit
sudo mkdir -p /mnt/qnap
2️⃣ 수동 마운트 명령어 (v3 또는 v4 중 선택)
NFS v3:
bash
CopyEdit
sudo mount -t nfs -o vers=3 192.168.0.100:/docker-shared /mnt/qnap
NFS v4:
bash
CopyEdit
sudo mount -t nfs -o vers=4 192.168.0.100:/docker-shared /mnt/qnap
3️⃣ 마운트 확인
bash
CopyEdit
df -h
또는
bash
CopyEdit
mount | grep qnap
✅ 6단계: 부팅 시 자동 마운트 설정 (/etc/fstab)
bash
CopyEdit
sudo nano /etc/fstab
맨 아래에 아래 한 줄 추가:
ruby
CopyEdit
192.168.0.100:/docker-shared /mnt/qnap nfs defaults,_netdev,vers=3 0 0
_netdev 옵션은 네트워크가 활성화된 후 마운트하도록 보장합니다.
저장: Ctrl + O, 종료: Ctrl + X
테스트 마운트:
bash
CopyEdit
sudo mount -a
✅ 권한 문제 발생 시?
NFS는 리눅스의 UID/GID를 기반으로 권한을 처리합니다.
파일 소유자/그룹이 일치하지 않으면 권한 오류가 날 수 있습니다.
해결 팁:
- QNAP에서 "루트 사용자 액세스 허용"을 켜는 것 중요
- 또는 Ubuntu에서 컨테이너 UID를 QNAP의 UID와 맞추는 방식도 있음
✅ 마무리
이제 NFS로 QNAP 공유 폴더를 마운트한 상태입니다.
도커에서 /mnt/qnap을 볼륨으로 사용하거나, 웹서버 루트로 지정하면 됩니다.
댓글