OS 기술/Linux

NFS 서버,클라이언트 설정 파일/폴더 공유 만들기

DongT 2023. 11. 10. 16:33
728x90
반응형

 

서버끼리 파일 공유를 하는 여러가지 방법중에 NFS공유를 만들어서 서로 같은 데이터를 바라보는 방법이 있다.

마치 윈도우에서 공유폴더를 만드는것과 같다.

윈도우 폴더 공유 설정

 


 

[테스트 환경 구성]

A서버(Server)에서 B서버(Client)로 NFS를 이용한 공유 구성 테스트 

 

1) 서로 통신이 가능한 네트워크환경에 서버 2대 설치

 - NFS Server 

  OS: CentOS7.6

  IP: XXX.XXX.101.133

 - NFS Client 

  OS: Ubuntu22.04

  IP: XXX.XXX.101.131

 

2) Server, Client 모두 nfs 관련 패키지가 설치되어있는지 확인

# CentOS 명령어
rpm -qa | grep nfs-utils

# Ubuntu 명령어
sudo dpkg -l | grep nfs-common

 

3) 설치가 필요하다면 yum 또는 apt로 설치 가능여부 확인하고 설치

- 설치가능여부 확인

# CentOS 명령어
yum search nfs-utils

# Ubuntu 명령어
sudo apt search nfs-common

CentOS yum search로 확인
Ubuntu apt search로 확인

 

- nfs 패키지 설치

# CentOS 명령어
yum install nfs-utils

# Ubuntu 명령어
sudo apt install nfs-common

 

 

 


[NFS 서버 환경 구성]

 

1) NFS Server쪽에서 공유해줄 파일시스템/디렉토리 준비

아무 디렉토리나 만들어서 사용해도 되지만, 이번 테스트에서는 별도 디스크를 이용함

## 사용한 명령어 간략히 ##
# 디스크 파티션 구성
fdisk /dev/sdb
# pv생성
pvcreate /dev/sdb
# vg생성
vgcreate NFS_VG /dev/sdb
# lv생성
lvcreate -l 100%FREE -n NFS_LV NFS_VG
# xfs포맷
mkfs.xfs -f /dev/NFS_VG/NFS_LV
# 디렉토리생성
mkdir /NFSshare
# 마운트
mount -t nfs /dev/NFS_VG/NFS_LV /NFSshare

NFS공유용 파일시스템, 디렉토리 준비

 

자세한 구성 방법은 아래 링크 참조

 - 디스크 추가하여 LVM 생성 및 확장 (https://dong-it-engineer.tistory.com/15)

 

 

 

2) NFS서비스가 켜져있는지 확인

systemtl status nfs
(또는 service nfs status)

NFS서비스 상태확인

 

 

3) 공유디렉토리 설정파일  적용

서버에서 어느 클라이언트로 공유를 할지 설정

(옵션은 보통 사용하는걸로 지정함)

vi /etc/exports
/NFSshare      [ClientIP](rw,sync,no_root_squash,no_all_squash)

NFS서버에서 exports 설정

 

 

 

 

4) NFS 공유 설정 배포

# /etc/exports 파일 내용 전체 배포
exportfs -a
# NFS 배포상태 확인
exportfs -v

exportfs 명령어 사용

 

만약 NFS서비스가 비활성 또는 비정상 상태이면 아래와 같은 오류메시지가 나온다.

"exportfs: Function not implemented"

물론 NFS서비스만 정상으로 활성시키면 해결된다.

 

 

exportfs 관련 명령어는 아래 URL 참조

exportfs 이용한 리눅스 폴더 공유 (https://dong-it-engineer.tistory.com/21)

 

 

 

 


[NFS 클라이언트 환경 구성]

 

1) NFS Client쪽에서 Server쪽으로 포트통신 되는지 확인

nc -zv [NFSserverIP] 111
nc -zv [NFSserverIP] 2049

ncat 명령어를 이용한 포트통신 확인

기타 rpc 통신도 확인해야하지만 보안상 문제가 되지 않으면 크게 상관없다.

 

2) 마운트 설정 및 마운트

/etc/fstab 파일 편집 (옵션은 보통 사용하는걸로 지정함)

vi /etc/fstab
[NFSserverIP]:/NFSshare    /NFSvol             nfs    nolock,hard,rw,noac,rsize=32768,wsize=32768,suid,proto=tcp,vers=3,timeo=14,intr      0 0 

 

NFS접근을 위한 fstab 설정

 

NFS 마운트 완료

mount /NFSvol
df -h /NFSvol

 

NFS 마운트

 

 

 


[덤] sync 옵션에 따른 속도 차이 (sync, async)

vi /etc/exports
/NFSshare      [ClientIP](rw,sync또는async,no_root_squash,no_all_squash)

sync 옵션: 서버와 클라이언트간 파일 접근시 동기 확인
async 옵션: 서버와 클라이언트간 파일 접근시 동기 확인 없음

 

클라이언트에서 공유디렉토리에 접근하는 속도를 측정해봄

dd if=/dev/zero of=dummy count=10240 bs=10k

async옵션이 sync 옵션보다 약 2배이상 빠른걸로 확인됬다.

데이터의 정합성보다 속도가 더 중요시 될 때는 async 옵션을 사용하는 것도 고려해볼만한것 같다.

sync 옵션일 때
async 옵션일 때

728x90