본문 바로가기
Linux

NFS

by Nirah 2022. 11. 17.

 

NFS (Network File System)

 

 

NFS

 

TCP/IP를 기반으로 다른 컴퓨터의 파일 시스템을 mount한 후

상대방의 파일 시스템의 일부를 자신의 디렉터리처럼 사용하는 기능

NSF Server가 네트워크를 기반으로 Client에게 자신의 여유분의 디스크 용량을 제공해주는 기능

NFS는 TCP 2049번을 사용한다.

 

 


RPC


 .한쪽의 통신장비에서 서비스를 요청하고 해당 서비스에 대한 처리 결과를 전달하는 Protocol
 .네트워크 기반의 분산처리 시스템을 구성시 사용한다. (NFS)
 .RPC는 가변 Port를 사용하여 여러가지 Program들이 사용될수 있기때문에 Portmap 프로그램을 같이 사용한다.
 .Linux에서는 RPC를 사용하기위해서 'rpc-bind'라고하는 데몬을 설치 및 동작시켜야한다.
 .TCP 111번 , UDP 111번을 사용한다.


 

 

Server가 NFS를 설정한 후 Client가 지정된 Patition 또는 디렉터리에 mount하여 사용
NFS Server의 환경 및 설정 파일은 '/etc/exports'에서 설정한다.

 

 

<< NFS Server 구성 >>

 

nfs를 설치한다.

# yum install -y nfs-utils

 

Client에게 마운트 해 줄 디렉토리를 생성한다.

#  mkdir /NFS-server

 

NFS Server의 환경 및 설정 파일은 '/etc/exports'에서 설정한다.

# vi /etc/exports

 

접근 대상 및 옵션을 설정해준다.

 /NFS-server  10.0.0.0/24(rw,sync,no_root_squash,anonuid=0,anongid=0)

옵션

  • ro  = NFS를 읽기전용으로 적용
  • rw = NFS를 읽기 , 쓰기가 가능하도록 적용
  • root_squash = NFS Server 접속시 root 사용자를 무시하고 nfsnobaby 적용 (익명사용자)
  • no_root_squash = NFS Server 접속시 root 사용자를 root 권한으로 인정
  • all_squash  = root를 포함한 모든 사용자를 nfsnobaby 적용 (익명사용자)
  • no_subtree_chech  = 하위디렉터리를 검색하지 못함
  • sync = 파일시스템 변경시 동기화

 

'/etc/exports'의 설정을 적용

# exportfs  -a

 

 

'/etc/exports'의 설정을 확인 

# exportfs  -v

 

 

만약 마운트할 디렉토리 명을 잘목 적용 했거나, 바꾸고 싶다면, 디렉토리명만 바꿔선 적용이 안된다.

이럴땐 # exportfs  -ra 라고 치면 설정을 다시 읽어들여 적용해준다 (갱신)

 

 

nfs Deamon을 실행시키고 재부팅 후에도 동작하도록 설정한다. 

 

# systemctl  start  nfs

# systemctl  enable  nfs

# systemctl  status  nfs

아래와 같이 정상 작동 중이다.

 

 

관련 Service 및 Port 를 확인해 보고 열어줄 서비스를 고른다.

# rpcinfo -p

 

# firewall-cmd --permanent --add-service=nfs

# firewall-cmd  --permanent  --add-service=mountd

# firewall-cmd  --permanent  --add-service=rpc-bind

# firewall-cmd  --reload

세 개의 서비스를 열어준다.

(저런 유동적인 포트를 쓰는 서비스의 방화벽을 열어줄 때는,

반드시 포트 번호를 고정해서 열기 위해 서비스명으로 열어야 한다.)

 

 

NFS Server IP와 공유한 디렉토리에 마운트한 Client의 주소 확인

# showmount  -e  10.0.0.1

 

 

 

 

<< NFS Client 구성 >>

 

이제 nfs-server의 디렉토리에 마운트해서 사용할 client를 구성해 보자.

 

# yum install -y nfs-utils

# mkdir  /nfs-c

# mount  -t  nfs  10.0.0.1:/NFS-server  /nfs-c (10.0.0.1은 서버 주소)

 

아래와 같이 17G를  할당 받은 것을 볼 수 있다.

 

 

 

※ 추가 주의 사항

 

  1. 현재 NFS Server의 모든 용량(17G)을 할당했기때문에 문제가 될수있다.
    원래는 NFS 구성시 Patition을 별도로 구성한 후 Patition으로 분할한 용량만 할당해야한다.

  2. NFS Client가 재부팅시 mount가 해제되므로 autofs를 설정해야한다. # vi /etc/fstab

 

예시

[root@client-l ~]# vi /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Mar  2 01:39:51 2021
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root  / xfs      defaults        0 0
UUID=ceb8793a-b54a-4947-b9c8-33ca1bc6cbd5 /boot xfs      defaults        0 0
/dev/mapper/centos-home  /home xfs      defaults        0 0
/dev/mapper/centos-swap  wap swap defaults        0 0
192.168.1.251:/NFSS       /NFS nfs      defaults        0 0   <--- autofs

 

 

 

 

<< Windows NFS Client 구성>>

 

 

 

NFS 기능 설치

 

cmd

mount -o anon \\10.0.0.1\NFS-server z:

 

아래와 같이 Linux Server의 NFS-server 디렉토리에 마운트한 Z: 드라이브가 생성이 되었다!

 

하지만 z: 디스크를 들어가서 파일을 열거나 조작하려고 하면 권한이 필요하다는 엑세스 거부 창이 뜬다.

분명 NFS exportfs 설정시 'rw' 허가권을 설정했는데도 안되는 것이다.

이렇게 윈도우와 리눅스가 인증 체계가 뭔가 안맞는 부분이 있어서 권한문제가 생긴다.

other에 rw 권한을 주던가 윈도우 쪽 레지스트리값을 수정해서 UID 와 GID 값을 일치 시키던지 해야한다.

 

 # chmod o+w /NFS-server 

 

 

# regedit 수정 작업 하는 법 (위와 아래 둘중 하나 하자)
         regedit -> HKEY_Local -> software -> microsoft -> clientforNFS -> curretnversion -> default
  DWORD 32 -> AnonymousGID 0, AnonymousUID 0 추가 후 재부팅

 

 

 

 

이제 양쪽 방향에서 파일을 업로드 삭제 해보면서 테스트 해보자.

 

 

 

'Linux' 카테고리의 다른 글

SSL (FTP)  (0) 2022.12.05
yum 중간에 트렌젝션 문제 생긴것 해결  (0) 2022.11.17
Mail Server 만들기  (0) 2022.11.16
history에 시간정보 표시하는 명령어  (0) 2022.11.16
Proxy server 만들기  (0) 2022.11.15