Linux // NFS
NFS ( Network File System )
- RPC를 이용하여 리모트 호스트 사용자가 원격지 컴퓨터에 있는 파일을 마치 로컬 파일에 access 하듯이 사용 할 수 있도록 하는 클라이언트 / 서버형 파일 시스템 공유 프로토콜
- 네트워크 파일 시스템의 일종이며 유닉스 환경에서 네트워크를
통해 파일과 응용 프로그램을 호스트간 공유하게 해주는 서비스
- 대형 서비스 환경 구축 시 공유 파일 서버를 사용하여 데이터의 일관성을 유지 하는 경우
가 많은데 이때 주로 사용되어지는 기술.
RPC ( Remote Procedure Call )
- 원격 프로시저 절차 호출 네트웍 상의 다른 컴퓨터에 위치하고 있는 프로그램에 서비스를 요청하는데 사용되는 프로토콜
NFS서버 설정에 사용되는 파일
/etc/export
NFS 서버 설정 파일이며, NFS 서버에서 파일 공유를 위해 사용되는 모든 파일과 디렉토리를 정의하기 위해 사용
/etc/fstab
NFS 서버에서 설정한 공유 디렉토리를 NFS 클라이언트에서 사용하기 위해 사용되는 파일이며, 설정 후 부팅하면 자동으로 클라이언트 시스템에 마운트 됨
/etc/sysconfig/nfs
NFS 서버에서 제공하는 NFS 서비스를 위해 사용되는 모든 포트에 대한 정보를 설정하는 파일
1. NFS패키지 설치 및 파일 설정
1) yum install nfs-utils // NFS 패키지 설치
2) rpm -qa |grep nfs // 설치가 되었는지 확인
3) mkdir /NFS_A // NFS서버에서 공유를 허용 할 디렉토리 생성
4) chmod -R 777 /NFS_A // 클라이언트가 이 디렉토리에 접속하여 파일을 읽기 및 쓰기 권한을 사용할 수 있도록 777로 설정
5) vim /etc/exports // NFS 설정파일을 열어 공유 디렉토리 및 옵션 설정
/NFS_A : 클라이언트에게 공유를 허용 할 디렉토리명
100.100.100.0/24 : 공유된 디렉토리에 접속 가능한 클라이언트 ip 범위 ( 도메인도 설정 가능 )
NFS 옵션
ro
서버의 공유 디렉토리를 읽기 전용(read only) 모드로 마운트
rw
서버의 공유 디렉토리를 읽기 쓰기 가능(read Write)모드로 마운트
sync
마운트 디렉토리에 쓰기와 같은 연산이 발생할 경우, 공유 디렉토리와 마운트 디렉토리를 즉시 동기화
즉, 공유 디렉토리와 마운트 디렉토리의 내용을 동기화하여 NFS사용도중 서버가 다운되거나 재부팅 현상에 의한 데이터의 불일치성을 최소화
만약, 즉시 동기화를 수행 하지 않고자 할 경우 async 옵션을 사용
no_subtree_check
공유 디렉토리는 서브디렉토리를 가질 수 있음
클라이언트가 특정 파일을 요청하면 서버는 subtree checking이라는 루틴을 실행해 서브디렉토리까지 탐색하여 클라이언트가 요청한 파일의 위치를 확인
이 옵션을 사용하면 서브디렉토리를 조사하는 루틴을 실행하지 않음 만약, 서브 디렉토리까지 검색하고자 할 경우 subtree_check 옵션을 사용
no_root_squash
사용자가 클라이언트 시스템의 root계정으로 접근했을 경우, 서버에서도 root 권한을 가지게 함
만약, 서버에서 nobody 권한으로 지정하고자 할 경우 root_squash 옵션을 지정
wdelay
디스크 쓰기속도를 지연시켜 데이터가 디스크에 저장되는 회수를 줄여 성능향상 목적으로 사용. 모든 요청에 지연을 발생시켜 오히려성능이 떨어질 수도 있음
no_wdelay
NFS에서 사용하는 데이터의 크기가 작거나 자주사용한다면 가능한 빨리 디스크에 기록하도록 하는 옵션
6) exportfs -r // /etc/exports 파일을 리플래쉬
2. NFS 서버 시작
1) service rpcbind start // 동적으로 서비스와 포트를 연결할 때 사용하는 RPC 서비스를 관리하기 위한 rpcbind 서비스와 nfs-server 서비스를 활성화
service nfs start
client-linux 설정
1) yum -y install nfs-utils // NFS 패키지 설치
2) service nfs start // nfsd와 rpcbind 서비스를 실행
service rpcbind start
3) mkdir /mnt/client_share // NFS 서버에서 제공하고 있는 공유 디렉토리를 클라이언트에서 마운트하기 위해 한 개의 디렉토리를 생성
4) showmoune -e 100.100.100.110 // NFS 서버가 어떤 공유 디렉토리를 제공하고 있는지 알기 위한 명령어
5) mount -t nfs 100.100.100.110:/NFS_A /mnt/client_share // 공유 디렉터리를 내가 지정한 디렉터리에 마운트 !
6) mount 명령어를 사용하여 마운트가 되었는지 확인
7) mkdir /mnt/client_share/test // test라는 디렉토리를 만들어 만들어지고 Server-A에서도 공유가 잘 되었는지 확인