NFS가 SMB보다 Linux 환경에서 메리트가 있는 것으로는 알려져 있다.

그러나 동시에 SMB보다 NFS가 설정이 복잡하다는 언급은 자주 나온다.

만약 기본적인 NFS 마운트 방법만 확인하고 앞으로 벌어질 일에 대해 간과한다면 기대 이상의 큰 낭패를 보게 될 것이다.

따라서 도전적인 과제를 선호하지 않으면 그냥 속편하게 SMB를 사용하는게 좋다.

 

우선 NFS로 마운트 하기 위한 전제조건들을 먼저 정리해본다.

 

과제1. WSL이 설치된 컴퓨터의 윈도우 방화벽 설정에서 NFS가 사용하는 포트를 개방해 주어야 한다.

과제2. AUTH_SYS 인증방식을 사용할 경우 클라이언트 측의 사용자이름, UID, GID을 서버측과 일치시켜야 한다.

과제3. 과제2 해결을 위해 새로운 사용자를 추가할 수밖에 없다면, 새로운 사용자의 환경설정을 다시 해야 한다는 부담이 생긴다.(종전에 이미 복잡한 사용환경을 구축해 두었다면, 그 복잡함만큼 문제가 커진다.)

 

일단 과제는 위 3가지이다.

3가지 문제를 해결하는 과정이 NFS를 마운트하는 과정이라 보면 되겠다.

역시 가장 큰 문제는 3번인데, 이미 개발환경이 복잡하게 구축되어 있는 상황이라면 그냥 SMB를 이용하는 것을 권하고 싶다.(포기가 편하다.)

물론 Kerberos와 SPKM3라는 별도의 인증 방식을 사용하면 되겠지만, 점점 구축 난이도와 관리포인트는 늘어나게 된다.

만약 이제 막 WSL에 우분투를 설치했다면, 계정을 새로 생성해서 NFS로 마운트하는 것을 도전해볼만 하다.

그럼에도 불구하고 과정이 복잡하기 때문에 세팅이 완료되었을 때 의외의 쾌감이 있다.(?)

 

윈도우 방화벽 설정

NFSv4 이상의 경우 인바운드 2049 포트만 개방하면 된다.(단, TCP/UDP 모두)

 

만약 NFSv3 이하라면 다음 포트를 모두 사용한다.

  • TCP 및 UDP 111 (Portmapper 또는 RPCbind)
  • TCP 및 UDP 2049 (NFS)
  • TCP 및 UDP 32767 (lockd, NLM: Network Lock Manager)
  • TCP 및 UDP 892 (mountd, Mount Daemon)

윈도우+R키를 눌러 실행창에 다음과 같이 wf.msc를 입력하면 Window Defender 방화벽 도구를 실행할 수 있다.

인바운드 규칙에 개방할 포트 번호와 프로토콜을 설정한다.

아직 갈길이 멀기 때문에 기초 중의 기초라고 할 수 있는 방화벽 설정 방법은 생략한다.

 

 

Synolog NAS에서 NFS 설정하기

우선 Synology에서 NFS 서비스 활성화 후 마운트까지의 방법을 따라간다.

로컬 네트워크 (NFS) 내에서 Synology NAS 의 파일에 액세스하는 방법 - Synology 지식 센터

문제는 일반적인 설명에 불과하기 때문에 앞에 언급한 과제2의 문제는 해결되지 않는다.

 

 

사용자이름, UID, GID 확인 및 변경(※사용자 추가 없이 변경하는 것은 권장하지 않는다)

DSM 7.2 이상의 경우 Synology에서 UID와 GID를 직접 확인하는 방법이 없다.

SSH를 활성화하고 접속 후 확인하는 수밖에 없다.

 

Synology DSM에서 제어판>터미널 및 SNMP>터미널로 들어가 SSH 서비스를 활성화한다.

 

윈도우 10 이상에서는 OpenSSH 기능을 다음과 같이 설치할 수 있다.

 

윈도우 키를 눌러 나오는 검색창에 '선택적 기능'을 치면 시스템 설정의 '선택적 기능'을 찾을 수 있다.

해당 기능을 클릭한 파란색 '기능 보기' 버튼을 누르면 추가로 설치할 수 있는 기능을 검색할 수 있다.

'OpenSSH 클라이언트'를 찾아 설치해주면 윈도우 터미널에서 SSH를 사용할 수 있다.

 

PowerShell을 열어 다음과 같이 입력하면 Synology NAS에 SSH로 접속할 수 있다.

ssh [username]@[address]

 

이 때 [address]는 NAS의 IP 주소를 입력하면 된다.

다시 비밀번호를 물어보면 비밀번호를 입력하고 Enter를 해준다.

 

명령프롬프트가 나타나면 다음과 같이 입력하여 해당 계정의 UID, GID, 소속 그룹 등을 확인할 수 있다.

id [username]

 

NAS 측 사용자 정보 - 예시에서는 UID가 1026, GID는 100임을 확인할 수 있다.

 

이제 우분투의 터미널에 로그인하여 동일하게 id [사용자이름] 명령을 수행하여 UID, GID를 확인해본다.

우분투 측 사용자 정보 - 사용자이름이 동일하지만 UID, GID는 다르다.

사실 상식적으로 당연한 일이긴 하지만, Synology NAS 측과 우분트 측에 사용자 이름을 동일하게 생성해 주었다 하더라도 UID, GID가 같을 수가 없다.

일단 Synology NAS도 우분투 기본 상태도 users 그룹의 GID는 100이므로 GID 문제는 우분투 계정을 users 그룹에 추가해주면 해결이 된다.

 

sudo usermod -g users [username]

문제는 UID인데, 만약 사용중인 계정이 root 계정이라면 UID를 바꾸기 위해 모든 서비스를 중지시킬 방법이 원천적으로 없다.

UID 변경을 위해 최소한 셸(예를 들면 bash 혹은 ssh)은 이용해야 하는데, 셸을 끊고 UID를 바꾼다는 모순을 해결할 방법이 없다.

일단 root 계정이 아니라면 다음과 같이 UID를 변경할 수 있다.

 

sudo usermod -u [UID] [username]

 

 

NAS 측 사용자와 UID, GID 일치하는 사용자 추가하기

sudo useradd -m -s /bin/bash -u [UID] -g 100 [username]

[UID]는 앞어 NAS에 SSH로 접속하여 확인한 UID, [username]는 역시 NAS에서 사용중인 사용자이름이 되겠다.

예시는 사용자이름 test, UID 1033, GID 100으로 만들어 보았다

 

만약 새로 생성한 사용자를 관리자 그룹에 추가하고자 한다면 다음과 같이 입력하면 된다.

sudo usermod -aG sudo [username]

참고로 [username] 사용자를 sudo 그룹에 추가하는 명령이기 때문에 sudo 대신 다른 그룹명을 넣으면 이어서 다른 그룹에도 가입시킬 수 있다.

 

 

NFS 패키지 설치 및 마운트하기

드디어 마지막 단계에 이르렀다.

사실상 앞서 살펴본 Synolog NAS에서 NFS 설정하기 단계에서 링크한 Synology의 가이드를 따랐다면 이미 마운트된 NAS를 정상적으로 사용할 수 있게 된 것이다.

패키지를 설치하고 마운트하는 방법만 다시 요약하보면 다음과 같다.

 

sudo apt update
sudo apt install nfs-common

 

패키지 설치가 끝나면 아래 형식으로 마운트시키면 된다.

sudo mount -t nfs [Synology_NAS_IP주소]:[공유폴더의_마운트경로] /[NFS클라이언트의_마운트지점]

 

[공유폴더의_마운트경로]는 Synology DSM의 제어판>공유폴더에서

본인이 마운트하려는 공유폴더를 선택한 후 '편집'을 눌러 나타난 '공유 폴더 편집' 다이얼로그창에서 'NFS 권한' 탭으로 가면 좌측 하단에서 확인할 수 있다.

DevNAS는 필자가 사용중인 공유폴더이다

 

이 때 주의할 점은 [NFS클라이언트의_마운트지점]은 아래 예시처럼 임의의 디렉토리로 설정할 수 있는데,

mount 전에 해당 디렉토리는 mkdir로 만들어 두어야 한다.

df -h는 현재 마운트된 파일시스템 목록을 표시해준다

물론 부팅 시 마운트되도록 설정할 수 있다.

다음과 같이 터미널에서 /etc/fstab 파일을 열어 수정해주면 된다.

 

sudo nano /etc/fstab

/etc/fstab가 열렸으면 앞서 성공한 마운트 정보를 아래와 같은 형식으로 추가해준다.

 

[Synology_NAS_IP주소]:[공유폴더의_마운트경로] /[NFS클라이언트의_마운트지점] nfs defaults 0 0

입력이 끝났으면, Ctrl+O를 눌러 저장하고(재차 확인 문구가 나오면 다시 Enter), 저장이 완료되면 Ctrl+X로 종료하면 된다.

 

재부팅하면 자동으로 마운트된 것을 확인할 수 있다.

 

대부분 네트워크 드라이브, 혹은 NAS를 부팅 시 자동 마운트시키는 방법으로 /etc/fstab를 수정하는 것을 권한다.

그러나 개인 사용자는 사실상 AUTH_SYS 인증방식을 사용할 수밖에 없는데, /etc/fstab 파일은 모든 사용자에게 일괄 적용된다.

NFS를 AUTH_SYS 인증으로 사용할 경우, 사용자명, UID, GID가 일치하지 않는 사용자는 어차피 마운트된 디렉토리에 대한 권한이 없다!!!

따라서 인증이 가능한 특정 사용자가 로그인할 때에만 마운트되도록 하는 것이 합리적이다.

 

특정 사용자의 홈디렉토리에서 .profile 파일에 다음 커맨드를 추가해주면, 해당 사용자 로그인 시에만 마운트되도록 할 수 있다.

sudo mount -t nfs [Synology_NAS_IP주소]:[공유폴더의_마운트경로] /[NFS클라이언트의_마운트지점]

앞서 살펴본 바와 같이 사전에 해당 마운트 지점은 mkdir로 생성해 두어야 한다.

 

 

기존 사용자 홈디렉토리 복제(고민해볼 문제)

기존 사용자의 홈디렉토리를 복제하면, 프로파일도 그대로 적용되므로 다음 명령을 수행하면 환경설정이 수월하다.

물론 신규 사용자의 환경설정을 기존 사용자와 달리 처음부터 직접 하고자 한다면 굳이 해당 작업은 하지 않아도 된다.

당장 급한 문제를 처리하기 위해서는 사용할만 하지만, 깔끔한 설정을 원한다면 그다지 권장하지 않는 방법이다.

sudo rsync -av --progress /home/[기존사용자]/ /home/[신규사용자] --exclude [제외할디렉토리]

--exclude 옵션은 홈디렉토리에서 가져오지 않아도 될 디렉토리를 지정할 수 있는 옵션이다.

모든 홈디렉토리 내용을 가져오고자 한다면 --exclude 옵션은 사용하지 않아도 된다.

 

새로 복제해온 디렉토리의 소유권이 문제가 되지 않도록 다음과 같이 소유권 변경을 수행하는 것이 좋다.

sudo chown -R [신규사용자]:[신규사용자그룹] /home/[신규사용자]

 

+ Recent posts