Cloud/Naver Cloud

[Ncloud] Linux NFS 서버 구축하여 다른 Linux 서버에 마운트하기

__Evening 2024. 4. 19. 14:14
반응형

안녕하세요.

 

이번 시간에는 Ncloud에서 Linux NFS 서버를 구축해서 다른 Linux 서버에 마운트 하는 실습을 진행하겠습니다.

실습에 앞서 두 대의 서로 다른 Linux 시스템이 있어야 하고 네트워크 통신이 되어야 합니다.

0. 실습 배경

Ncloud에서 NAS 상품군은 1개의 볼륨에 최대 10TB까지 설정이 가능합니다. 이 얘기는 10TB를 넘기면 추가적으로 볼륨을 생성한 후 다른 경로로 마운트해야 하는 경우가 생기는데 이 경우 NAS 서버를 만들어서 디스크 확장을 통해 1개의 경로에 대용량의 저장 공간을 확보할 수 있습니다.

 

요즘은 기업 규모에서 10TB는 작은 용량이기 때문에 Ncloud에서는 NAS 서버를 만들어서 사용하실 수도 있습니다. 

 

(1) Windows 공유 폴더를 Linux에 마운트

https://eveningdev.tistory.com/212

 

[Ncloud] Samba를 이용한 Windows 공유 폴더 Linux에 마운트하기

안녕하세요 이번 시간에는 Ncloud에서 Samba를 이용한 Windows 공유 폴더를 Linux에 마운트하는 실습을 진행하겠습니다. 0. 실습 배경 Ncloud에서 NAS 상품군은 1개의 볼륨에 최대 10TB까지 설정이 가능합니

eveningdev.tistory.com

Windows 공유 폴더를 Linux에 마운트 하는 실습은 위 게시글에서 확인할 수 있습니다.

 

(2) Linux 공유 폴더를 Windows에 마운트

https://eveningdev.tistory.com/213

 

[Ncloud] Samba를 이용한 Linux 공유 폴더 Windows 서버에 마운트하기

안녕하세요 이번 시간에는 Samba를 이용한 Linux 공유 폴더 Windows 서버에 마운트 하는 실습을 진행하겠습니다. 0. 실습 배경 Ncloud에서 NAS 상품군은 1개의 볼륨에 최대 10TB까지 설정이 가능합니다. 이

eveningdev.tistory.com

Linux 공유 폴더를 Windows에 마운트 하는 실습은 위 게시글에서 확인할 수 있습니다.

 

(3) Windows 공유 폴더를 Windows에 연결하기

https://eveningdev.tistory.com/215

 

[Ncloud] Windows 공유 폴더를 다른 Windows 서버에서 접속하기

안녕하세요 이번 시간에는 Ncloud에서 Windows 공유 폴더를 다른 Windows 서버에서 접속하는 실습을 진행하겠습니다. 실습에 앞서 두 대의 서로 다른 Windows 시스템이 있어야 하고 네트워크 통신이 되

eveningdev.tistory.com

Windows 공유 폴더를 Windows에 연결하는 실습은 위 게시글에서 확인할 수 있습니다.

 

1. NFS(Network File System)란?

NFS는 Network File System의 약자로, 컴퓨터 네트워크에서 파일 및 디렉터리를 공유하기 위한 프로토콜과 시스템입니다. 이는 다양한 운영 체제 간에 파일을 공유하고 액세스 하는 데 사용됩니다. 파일 및 디렉터리를 원격 위치에서 마치 로컬 파일 시스템처럼 읽고 쓸 수 있습니다. 

이를 통해 여러 사용자가 파일을 공유하고, 여러 시스템에서 동일한 파일을 사용할 수 있습니다. 이는 특히 큰 규모의 네트워크 환경에서 파일 공유 및 리소스 공유를 간단하게 만들어 줍니다.

Samba / CIFS Linux - Windows
CIFS  Windows - Windows
NFS  Linux - Linux

 

2. NFS Server 설정하기

(1) nfs-kernal-server 패키지 설치하기

apt update
apt install nfs-kernal-server

 

nfs-kernel-server는 Linux 시스템에서 NFS 서버 역할을 수행하는 패키지입니다. 이 패키지는 커널 수준에서 NFS 서비스를 제공하며, 클라이언트로부터의 요청을 처리하여 파일 및 디렉터리를 공유합니다.

 

(2) 공유 폴더 생성 후 소유권 지정하기

mkdir <공유 폴더 이름>
chown -R <사용자>:<사용자> <공유 폴더 이름>

다음과 같이 공유 폴더를 생성한 후 폴더 소유권을 해당하는 사용자에게 부여합니다.

 

(3) 공유 폴더에 대한 권한 설정하기

vi /etc/exports

//전체 허용
/root/nfs_dir *(rw,sync,no_root_squash,no_subtree_check)

//특정 IP 대역 허용
/root/nfs_dir 192.168.100.0/24(rw,sync,no_root_squash,no_subtree_check)

//특정 IP 허용
/root/nfs_dir 192.168.100.x/32(rw,sync,no_root_squash,no_subtree_check)
옵션 설명
rw 공유 폴더에 읽기/쓰기 권한 
ro 공유 폴더에 읽기 권한
sync 데이터 변경 사항에 동기 처리
async 데이터 변경 사항에 비동기 처리
root_squash  클라이언트 서버의 root 사용자를 일반 권한으로 부여
all_squash 모든 클라이언트 서버의 사용자를 일반 권한으로 부여
no_root_squash  클라이언트 서버의 root 사용자에 관리자 권한 부여
no_subtree_check  클라이언트 서버의 사용자가 작업한 내용에 대해
무결성 검사를 하는 하위 트리 검사를 하지 않음
noaccess 디렉토리에 접근하지 못하게 제한하는 옵션
특정 하위 디렉토리에 대한 접근을 제한할 때 사용

다음과 같이 공유 폴더에 대해 여러 가지 옵션을 줄 수 있고 특정 IP, 특정 IP 대역, 전체 허용 등 공유 폴더에 대한 접근을 제한할 수 있습니다.

 

(4) 설정 파일을 적용하기

exportfs -a
systemctl restart nfs-kernal-server.service
systemctl status nfs-kernal-server.service

exportfs 명령어로 설정 파일을 적용하고 nfs-kernal-server를 재시작합니다.

 

3. NFS Client 설정하기

(1) nfs 패키지 설치하기

// ubuntu
apt update
apt install nfs-common

// centos
yum update
yum install nfs-utils

ubuntu에서는 nfs-common, centos에서는 nfs-utils를 설치해 주시면 됩니다.

 

(2) 공유 폴더 마운트하기

mount 192.168.100.9:/root/nfs_dir /root/nfs_dir
// mount <NFS Server IP>:/<shared directory> <mount point>

마운트 명령어를 통해 NFS 서버의 공유 폴더를 클라이언트 서버에 마운트 시켜줍니다.

 

(3) fstab 설정하기

vi /etc/fstab
192.168.100.9:/root/nfs_dir /root/nfs_dir nfs defaults 0 0

서버 재기동 후에도 공유 폴더가 정상적으로 마운트 되게 하기 위해 다음과 같이 fstab 설정을 해줍니다.

 

(4) 서버 재기동 후 마운트 확인하기

reboot
df -h

서버 재기동 후 df -h 명령어를 통해 공유 폴더가 정상적으로 마운트 되었는지 확인합니다.

 

(5) 파일 생성해 보기

cd nfs_dir
touch test1 test2

클라이언트 서버에서 공유 폴더로 이동해서 테스트 파일을 작성합니다.

 

NFS 서버에서 공유 폴더에 들어가 파일이 생겼는지 확인합니다.

 

4. NFS 마운트 해제하기

umount /root/nfs_dir
// umount <mount point>
df -h

다음과 같이 마운트 되었던 공유 폴더를 해제해 줄 수 있습니다.

 

5. NFS 설정 시 문제가 발생한 경우

(1) NFS 마운트 시 Access Denied ~ Error가 발생 시

NFS 마운트 시 해당 에러가 발생하는 것은 exports 파일을 설정할 때 클라이언트 서버의 유저가 해당 공유 폴더에 대해 접근 권한이 없을 때 발생합니다. 따라서 exports 파일에서 설정할 때 권한이 있는지, 쓰기 권한은 있는지 확인해 보시면 됩니다.

 

(2) 방화벽 문제 (Port: 2049)

기본적으로 NFS는 포트를 2049 포트를 사용하고 있습니다. 2049 포트가 방화벽에 막혀 있어서 NFS 통신이 되지 않는 경우가 있습니다. 다음과 같이 ACG에서 Inbound/Outbound에서 2049 포트를 허용해 주면 됩니다.

 

이번 시간에는 Ncloud에서 Linux NFS 서버를 구축해서 다른 Linux 서버에 마운트 하는 실습을 진행해 봤습니다.

 

감사합니다.

 

반응형