별의 공부 블로그 🧑🏻‍💻
728x90
728x170

NFS(Network File System)

NFS(Network File System)의 개요

  • NFS(Network File System)
    • 1984년 Sun Microsystems 사에서 개발한 프로토콜
    • TCP/IP 네트워크 상에서 다른 컴퓨터의 파일 시스템을 마운트하고 공유한다.
      • 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉터리인 것처럼 사용 할 수 있게 해준다.
    • NIS 와 더불어 RPC(Remote Procedure Call) 기반으로 작동한다.
      • 해당 서비스를 해주는 rpcbind(구 portmap) 데몬을 먼저 실행시켜야 한다.
    • 사용이 편리한 대신, 보안에 상당히 미약하기 때문에 주의해서 사용해야 한다.

 

NFS 관련 주요 RPM 패키지

  • NFS 서버를 구축하려면 다음과 같이 2개의 패키지를 설치해야 한다.
    • rpcbind
      • RPC 기반 연결을 위해 필요한 패키지
      • rpcbind, rpcinfo 등 포함
    • nfs-utils
      • NFS 서버 관련 패키지
      • 관련 데몬명령어 포함
  • 만약 설치가 안되어 있으면, 다음의 명령을 실행하여 설치를 진행한다.
    • # yum install rpcbind
    • # yum install nfs-utils

 

NFS 서버의 설정의 개요

  • NFS 서버의 접근 제어
    • /etc/exports 파일에서 설정
      • 특정 디렉터리 rw 옵션을 지정하는 경우, 리눅스의 디렉터리 퍼미션에도 rw 권한이 있는지 반드시 확인해야 한다.
  • 데몬 스크립트인 rpcbind, nfs-server를 실행하면 사용이 가능하다.

 

NFS 서버 설정 순서

① 접근 관련 설정
# vi /etc/exports

 

② 관련 데몬 실행 
  • 기본적으로 관련 데몬 스크립트 nfs-server.service 이지만, nfs-server 라는 스크립트도 제공한다.
  • 변동 사항이 있는 경우
    • systemctl start nfs-server 스크립트 전에 systemctl daemon-reload 명령의 실행을 요구하기도 한다.
      • 관련 메시지가 발생하면 먼저 실행하도록 한다.
# systemctl start rpcbind
# systemctl start nfs-server

 

③ 서버 동작과 관련 메시지 확인
  • NFS 서버 동작 오류 시에 매우 유용함.
  • 성공적으로 시작했을 경우에도 관련 정보를 자세하게 확인할 수 있음.
# systemctl -l status nfs-server

 

④ 관련 서버 동작의 확인
  • ps 명령으로 관련 데몬이 정상적으로 동작하는지 확인함.
# ps aux | egrep 'rpcinfo | nfs-server'

 

⑤ NFS 서버의 재시작
  • NFS 서버 관련 설정을 변경했을 경우에는 관련 데몬을 재시작해야 함.
# systemctl restart nfs-server

 

⑥ 부팅 시 NFS 관련 서버 활성화
# systemctl enable rpcinfo nfs-server

 

환경 설정 파일 : /etc/exports

  • /etc/exports 파일 설정
    • 줄 단위로 외부에 공유할 디렉터리를 입력
    • 공백([TAB])으로 구분하여 허가 할 호스트 지정 및 옵션 기입
      • 허가 할 호스트
        • IP 주소
        • 도메인
        • /etc/hosts 에 설정한 호스트명
        • NIS 에서 설정한 그룹명
    • 와일드 카드 ‘모두’ 라는 의미의 * 사용 가능

 

설정법

공유_할_디렉터리    허가할_호스트(옵션)   [허가할_호스트(옵션) ...]

 

주요 옵션

옵션 설명
ro 읽기 전용으로 지정하는 옵션 (기본값)
rw 읽기 및 쓰기가 가능하도록 지정하는 옵션
root_squash - NFS 클라이언트에서 접근하는 root 사용자를 무시하고, 서버상의 nobody(또는 nfsnobody) 사용자로 매핑시키는 옵션 (기본값)
- 일반 사용자의 권한은 그대로 인정됨.
no_root_squash NFS 클라이언트에서 접근하는 root 사용자를 무시하지 않고, root으로 인정함.
no_subtree_check 하위 디렉터리를 검사하지 못하도록 할 때 설정
all_squash root를 포함하여 모든 사용자의 권한을 nobody(또는 nfsnobody) 사용자로 매핑시킴.
secure - 포트 번호가 1024 이하인 요청만 허가할 때 사용함.
- 기본값을 설정됨.
- 반대 설정 : insecure
sync - 변경 사항이 안정적으로 저장된 경우에만 관련 요청에 응답하도록 함.
- 기본값으로 설정되어 있음.
async - 쓰기가 설정된 디스크 스토리지에 사용하면 유용한 옵션
- 데이터 변경(Data Corruption)에 대비해 비동기적 처리를 할 때 사용
anonuid 접근하는 사용자 권한을 지정하는 uid로 매핑시킬 때 사용
anongid 접근하는 그룹 권한을 지정하는 gid로 매핑시킬 때 사용

 

설정 예

/nfsdata            192.168.5.13
/nfdsdata1          192.168.5.0/255.255.255.0(rw, root_squash)
/nfdsdata2          192.168.12.0/24(rw, no_root_squash)
/nfdsdata1          *.hankuk.ac.kr(rw, all_squash)
/                   master(rw) trusty(rw, no_root_squash)
/home/starrykss     linux120(rw, all_squash, anonuid=500, anongid=500)

 

NFS 클라이언트에서 사용법

  • NFS 클라이언트에서는 mount 명령을 이용하여 NFS 서버파일 시스템을 이용할 수 있다.
  • 부팅할 때 마운트하여 사용하려면 /etc/fstab 파일에 등록하면 된다.

 

(1) mount  mount.nfs 명령 이용하기

사용 예
# mount -t nfs 192.168.5.13:/nfsdata /mnt
  • 192.168.5.13의 /nfsdata/mnt 디렉터리로 마운트

 

# mount.nfs 192.168.5.13:/nfsdata /mnt
  • 192.168.5.13의 /nfsdata를 /mnt 디렉터리로 마운트

 

(2) /etc/fstab 등록하기

설정 예
# vi /etc/fstab
192.168.5.13:/nfsdata           /mnt        nfs       timeo=15,soft,retrans=3     0  0

 

주요 옵션

옵션 설명
timeo - RPC 타임아웃이 발생된 후에 첫 번째 재전송 요구를 보낼 때의 시간
- 단위 : 1/10초
retrans  타임아웃이 발생된 후에 재전송 요구의 회수를 지정함.
soft NFS 서버 요청에 실패하면 retrans에 설정한 횟수만큼 재요청을 시도함.
hard - NFS 서버 요청에 실패하면 무한정 재시도 함.
- 특별히 옵션을 명기하지 않으면 기본적으로 적용됨.
rsize  NFS 서버로부터 읽어 들이는 바이트 값 지정
wsize NFS 서버에 쓸 때 적용되는 바이트 값 지정
fg  포어그라운드 형태로 마운트를 시도하고, 실패하면 마운트를 중단함.
bg  첫 번째 마운트에 실패하면 백그라운드 형태로 다시 시도함.

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️


📖 Contents 📖