본문 바로가기
카테고리 없음

[Linux] NFS 서버 개념 & 구축(설치)

by 떵해이 2020. 12. 27.
300x250

디스크 용량이 지금 현대시대에는 부족한 현상이 거의 없습니다.

옛날에는 서버하나만 구축해도 많은 공간을 차지하여 클라이언트들은 여유 공간이 없었습니다.

그래서 개발한 것이 클라이언트가 서버의 공간을 자신의 자원처럼 사용이 가능하게 만들었습니다.

쉽게 말해 저장 공간을 공유할 수 있도록 해주는 서비스가 NFS 입니다.

 

리눅스 - 윈도우 파일 서버 구축 : Samba

리눅스 - 리눅스 파일 서버 구축 : NFS

윈도우 - 윈도우 파일 서버 구축 : CIFS

 

○ NFS 서버란 ?

    ▷ Network File System 약자

    ▷ 네트워크 상에 연결된 다른 컴퓨터의 하드 디스크를 내 컴퓨터의 하드처럼 사용하는 것

    ▷ 네트워크에 연결된 리눅스끼리 NFS를 통해 파일을 공유 가능

    ▷ 공통으로 사용되는 파일이 있으면 각 컴퓨터에 파일을 저장하지 않고 서버 1개에 저장하여

        효율적으로 사용 (공간을 줄 일 수 있음)

 

    ▷ 다른 서버에 있는 디렉토리를 나의 것처럼 사용하는 것이기 때문에 보안에 취약

        (회사에서는 잘 사용하지 않는 것으로 알고있습니다.)

    ▷ 네트워크를 이용하여 내장 하드보다 속도가 느림

    ▷ NFS를 사용하려면 서버나 클라이언트 모두 커널에서 NFS를 지원할 수 있어야 제대로 사용 가능

    ▷ 저장 공간을 공유할 수 있는 서비스

 

 

요약 정리 : 사용자 컴퓨터(클라이언트)가 원격지 컴퓨터(서버)에 있는 파일을 자기 것처럼 마음대로

               검색, 수정, 저장할 수 있도록 해주는 클라/서버 응용 프로그램

               클라이언트에 NFS 클라이언트 설치해야하고, 서버에 NFS서버가 설치해야 합니다.

 

 

가상 머신을 2개 실행시킬 예정입니다.

(서버 : 10.10.10.136(흰색), 클라이언트 : 10.10.10.6(푸른색) 으로 실험해보도록 하겠습니다.)

서버쪽에서 NFS를 설치 후 nfsdir 디렉토리를 만들어서 공유해보도록 해보겠습니다.

○ NFS 설치 & 파일 공유 (서버)

서버는 흰색 IP 10.10.10.136

 

# rpm -qa | grep nfs

# rpm -qa | grep rpcbind

패키지 설치 확인

 

 

① 파일 설치

# yum -y install nfs-utils

NFS 패키지 설치

 

(rpcbind 패키지가 자동으로 설치되지만 혹시 안된 경우는 따로 설치해주시면 됩니다.)

# yum -y install rpcbind 패키지 설치로 확인 후 설치 안된 경우만 설치 해주시면 됩니다.

 

 

② 공유할 디렉토리 생성 & 권한

# mkdir /nfsdir nfsdir 공유 디렉토리를 생성

# echo success nfs > /nfsdir/nfstest 'success nfs'문구를 nfstest파일 생성 및 내용 입력

# cat /nfsdir/nfstest 안에 내용 확인

 

 

파일 권한을 주도록 합니다.

모든 사람들이 읽고 쓰고 수정할 수 있게 하려면 안에 파일도 권한을 줘야하기 때문에 -R옵션 사용

# chmod -R 777 /nfsdir

 

 

③ 공유 디렉토리 설정 (/etc/exports)

# vi /etc/exports 설정 파일을 수정을 해보도록 하겠습니다.

 

 

# /nfsdir 10.10.10.6(rw,sync) 입력후 # :wq 로 저장 후 나옵니다.

공유할 디렉토리 경로 작성

 

설정 시작하기 맨 위에 클라이언트 IP와 서버IP를 모두 알고 시작했습니다.

허용하고 싶은 클라이언트IP를 작성해주시면 됩니다.

모든 IP를 접근하게 해주고 싶으면 # /nfsdir *(rw,sync)로 입력하시면 됩니다.

IP 대역을 접근하게 해주고 싶으면 # /nfsdir 10.10.10.*(rw,sync)로 입력하시면 됩니다.

 

옵션은 더 많이 있습니다.

rw는 권한에 있는 것과 같이 r(read)읽기, w(write)쓰기를 할 수 있는 옵션

sync옵션은 default(기본)으로, NFS가 쓰기 작업 완료하면 디스크를 동기화하는 옵션

 

 

간단한 옵션들

ro read only (읽기 전용)
rw read write (읽기 쓰기)
sync write(쓰기) 발생 시 디스크 동기화
nosync 일정 간격으로 동기화
no_root_squash root 권한으로 공유 디렉토리 접근 가능하게 설정

 

 

④ 방화벽 설정

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

# firewall-cmd --permanent --add-port=111/tcp

# firewall-cmd --permanent --add-port=111/udp

# firewall-cmd --reload

 

 

⑤ NFS 서비스 시작

# systemctl start nfs 명령으로 nfs서비스 시작

# systemctl enable nfs-server.service 명령으로 부팅 시 자동으로 nfs 서비스 시작

# systemctl enable nfs.service 명령을 사용해도 상관없음

 

# systemctl status nfs 명령으로 서비스가 제대로 작동 중인지 확인할 수 있습니다.

 

 

⑥ 위에서 /etc/exports 에 설정을 하였었습니다.

# exportfs -ra 명령으로 export에 설정한 내용을 적용

 

 

# showmount -e

# exportfs

이 두가지 명령으로 공유 관련 설정을 확인할 수 있습니다.

# exportfs -v 명령으로 좀 더 자세한 설정을 확인 할 수 있습니다.

 

 

확인이 끝났고 status에 상태도 active상태라면 이제 클라이언트쪽 작업을 해보도록 하겠습니다.

 

○ NFS 설치 & 파일 공유 (클라이언트)

클라이언트는 푸른색 IP 10.10.10.6

 

① 설치 확인 & 설치

# rpm -qa | grep nfs

 

 

# yum -y install nfs-utils

 

 

② NFS 공유 디렉토리 마운트 할 디렉토리 생성

# mkdir /nfsclient

 

 

③ 공유 디렉토리를 클라이언트에서 생성한 개인 디렉토리와 마운트

리눅스(유닉스)에서는 윈도우와 다르게 파일 시스템을 사용하기 위해 마운트를 해야합니다.

(마운트가 궁금하신 분들은 참조하시면 됩니다.)

 

# mount -t nfs [서버IP]:/서버 공유 디렉토리 /클라이언트 마운트 포인트

# mount -t nfs 10.10.10.136:/nfsdir /nfsclient

 

 

마운트를 등록한 것이 일시적으로 한 것입니다. 부팅 시에 다 날아갑니다.

그래서 fstab에 자동 등록을 해주어야 합니다.

# vi /etc/fstab

 

 

아래의 내용처럼 입력하시면 자동으로 부팅 시에도 마운트 되도록 등록합니다.

# :wq 저장하고 나옵니다.

 

 

# df 명령으로 마운트 된 것을 확인

 

 

④ 클라이언트에서 연결되었는지 확인해보도록 하겠습니다.

# cd /nfsclient

# ls

서버에서 만든 nfstest가 있는 것을 확인 할 수 있습니다.

 

 

※ 클라이언트에서 미리 NFS 연결을 확인할 수 있습니다.

서버에서 이미 클라이언트 IP를 허용해주었기 때문에 같은 네트워크라면 확인할 수 있습니다.

 

확인하는 명령어

# showmount -e [서버IP] 명령을 입력하면 NFS공유된 디렉토리 확인

 

 

이렇게 명령을 확인하기 위해서는 서버(흰색 10.10.10.136)에서 방화벽을 해제 해야합니다.

# systemctl stop firewalld

# systemctl restart nfs

방화벽을 해제하지 않으면 클라이언트에서 showmount -e 명령으로 확인은 불가

 

 

방화벽을 해제하지 않으면 클라이언트에서 나타나는 문구

 

반응형

댓글