LINUX(Server)

NFS

천천히, 한 걸음씩 2024. 4. 27. 08:29

NFS

* NFS ( Network File System )
- 네트워크를 통해 공유된 원격지 호스트에 자원( 파일 시스템 )을
  로컬 호스트에 마운트하여 파일을 공유하는데 사용되는 프로그램


! nfs 서버 구축

#setenforce 0
#service iptables stop

#mkdir /var/server_share // 서버에서 공유할 
디렉터리 생성
#chmod 777 /var/server_share  // 모든권한을 추가하여
접근이 가능하도록 설정

#touch /var/server_share/file{1..10} // 테스트용 파일 생성

#yum install -y nfs-utils // nfs 패키지 설치


#vi /etc/exports

- nfs 설정 파일이며 , nfs 서버에서 공유하는 
  디렉터리 정보와 옵션을 정의하기 위해 사용된다.


[공유디렉터리 경로] [접근을 허용할 IP/Network주소(옵션1,옵션2,옵션n...)]
-----------------------------------------
/var/server_share 100.100.100.0/24(rw,sync,no_root_squash)

:wq!
-----------------------------------------

rw : 읽기 , 쓰기를 허용
ro : 읽기 전용

sync  : 변경이 있을 때, 변경사항을 즉시 동기화
async : 변경이 있을 때, 후에 동기화 진행

root_squash : 클라이언트에서 root계정으로 접근할 때
  서버는 해당 root계정을 nfsnobody계정으로 인식  
no_root_squash : 클라이언트에서 root계정으로 접근할 때
  서버 root계정과 동일하게 인식


#vi /etc/sysconfig/nfs

- nfs 서버에서 사용하는 프로그램들의 포트 정보가
  저장되어 있는 파일

---------------------------
~제일하단에 아래 내용을 추가~

MOUNTD_PORT=4000 // 마운트 포트
LOCKD_TCPPORT=4001 // 동시 트랜잭션 발생시
   다른 클라이언트를 잠금
LOCKD_UDPPORT=4001 // 동시 트랜잭션 발생시
   다른 클라이언트를 잠금

:wq
----------------------------

#service rpcbind start // 네트워크로 연결되어있는 
다른 컴퓨터의 프로그램에
  서비스를 요청
#service nfs start // 데몬의 동작 순서가 중요
  NFS서비스는 RPC기반으로 동작하기 때문에, 
  RPC데몬이 먼저 동작하고 있어야
  NFS서비스를 정상적으로 실행할 수 있다.


#chkconfig rpcbind on
#chkconfig nfs on


! 서비스 이용

@Client_Linux


#yum install -y nfs-utils //showmount명령어를
  사용할 목적으로 설치
  
#showmount -e 100.100.100.100 //100.100.100.100 IP에서
 공유하고 있는 디렉터리 정보를 확인

Export list for 100.100.100.100:
/var/server_share 100.100.100.0/24

#mkdir /mnt/client_share
#mount -t nfs 100.100.100.100:/var/server_share /mnt/client_share

//Server-A(100.100.100.100)이 제공한 /var/server_share 디렉터리를
  현재 클라이언트의 /mnt/client_share디렉터리에 연결시킨다.


Server-A Client_Linux
/var/server_share /mnt/client_share


A파일 <-- 동기화 -->   A파일
B디렉터리  B디렉터리


#df -h // 마운트 확인

#cd /mnt/client_share
#ll // 공유파일 확인

#touch Client_file{1..10} // Server-A에서 확인
#ll // 소유권, 그룹 root


! 옵션 변경

@Server-A
#vi /etc/exports
---------------------------------------------
/var/server_share 100.100.100.0/24(ro,sync,root_squash)

:wq!
----------------------------------------------

#exportfs -vr // nfs서버 데몬을 다시 시작하지 않고
   공유 목록(/etc/exports)의 변경사항을
   적용시킬 수 있는 명령어
   
   -r :  /etc/exports파일 적용
   -v : 현재 공유하고 있는 디렉터리 정보 출력

@Client_Linux
#cd /mnt/client_share
#touch Client_file{11..20} // 쓰기 x


@Server-A

#vi /etc/exports
---------------------------------------------
/var/server_share 100.100.100.0/24(rw,sync,root_squash)

:wq!
----------------------------------------------

#exportfs -vr


@Client_Linux
#cd /mnt/client_share
#touch Client_file{11..20}
#ll // 소유권, 그룹 nfsnobody


! 확인 사항

@Client_Linux

#reboot

#df -h // 마운트 해제

#vi /etc/fstab
----------------------------------
~~ 제일 하단에 추가 ~~

100.100.100.100:/var/server_share /mnt/client_share nfs defaults 0 0

:wq!
-----------------------------------

#reboot

#df -h // 재부팅 후에도 마운트 적용


@Server-A
#service nfs stop // Server-A의 서비스에
#service rpcbind stop    문제가 발생했다는 "가정"


@Client_Linux
#reboot

//NFS서버가 동작하지 않을 때 Client가 부팅시에 
  NFS연결을 요청하면 장시간동안 부팅이 되지 않는 문제가 있다.
  
( 장시간 기다린 후에 로그인 )  
#df -h // 마운트 x


#vi /etc/fstab
----------------------------------
~~ 제일 하단에 추가 ~~

100.100.100.100:/var/server_share /mnt/client_share nfs defaults,bg 0 0
// 옵션에 bg 추가
:wq!

-----------------------------------

#reboot // 정상적으로 로그인

#df -h // 마운트 x
#ps -ef | grep mount // 프로세스 동작중

@Server-A ( 서버에 문제가 해결되었다고 가정 )
#service rpcbind start
#service nfs start

@Client_Linux
#df -h // 마운트 o
#ps -ef | grep mount // 프로세스는 성공적 종료

'LINUX(Server)' 카테고리의 다른 글

PXE , Kick start  (0) 2024.04.29
DNS  (0) 2024.04.28
FTP  (2) 2024.04.26
DHCP  (0) 2024.04.25
Samba  (0) 2024.04.24