Linux에 NFS 설치하기

2 minute read

NFS란?

NFS는 Network File System을 줄인말인데 네트워크를 통해 서버와 클라이언트 사이에서 파일을 공유하는 방법이다.

서버쪽 설정

1. nfs 설치하기

rpm -qa nfs-utils

위에 명령어를 실행해서 nfs-utils가 설치되어있는 지 확인.

만약 아무것도 설치되어 있지 않다면 아래 명령어로 nfs-utils를 설치하면 된다.

yum install nfs-utils

2. nfs 실행하기

설치가 완료된 후에는 nfs 서비스를 등록하고 실행할 수 있도록 아래 명령어를 실행하면 된다.

systemctl enable nfs-server

systemctl start nfs-server

3. 공유할 폴더를 만들고 권한 설정

공유할 폴더를 자유롭게 만들자.
예시를 위해 공유할 폴더를 “share”로 만들었다.

mkdir /share

주는 권한에 따라서 달라지겠지만 클라이언트에서 파일을 자유롭게 수정하기 위해서 777 등의 권한을 주자.

chmod(change mode)는 파일의 읽기, 쓰기, 실행 등의 권한을 변경
chown(change owner)는 파일의 소유 권한 계정을 변경

즉 “chmod 777 파일이름”을 주면 된다.

이제 이 폴더에 권한을 설정해주자.

/etc/exports에 권한을 설정해주면 된다.

vi /etc/exports
// vi 에디터로 /etc/exports 파일을 열어서 아래 내용 입력

/share 111.111.111.1(rw,sync,all_squash)
/share 111.111.111.2(rw,sync,all_squash)

111.111.111.1 ip를 가진 클라이언트와 111.111.111.2를 가진 클라이언트에 /share 폴더를 rw,sync,all_squash 권한으로 공유한다는 의미이다.

ip에 *를 사용해서 와일드카드 형태로 사용할 수도 있다. 가령 111.111.111.* 은 111.111.111.0 ~ 111.111.111.255 까지를 다 포함한다.

옵션으로 줄 수 있는 것들을 알아보자.

  1. ro: 읽기전용
  2. rw: 읽기 쓰기 가능
  3. root_squash : 클라이언트의 root를 무시, 서버의 nobody 권한으로 설정
  4. no_root_squash : 클라이언트의 root를 서버의 root 권한으로 설정
  5. sync : 데이터 변경을 동기식으로 처리한다. 즉 서버와 클라이언트가 파일에 대해서 싱크를 맞추고, 데이터가 안전하게 쓰인 것을 확인한 후에 응답을 보냄
  6. async : 데이터 변경을 비동기식으로 처리한다. 서버는 클라이언트에 데이터가 쓰인 것을 확인하지 않고 응답을 보내서 데이터 손상이 발생할 수 있지만 성능 향상을 기대할 수 있다.
  7. all_squash : 모든 유저를 anonymouse user로 간주한다.

4. 방화벽을 끄고, 파일 작성해보고 마운트 및 공유가 잘되는 지 확인

service firewalld stop

클라이언트와 잘 작동이 되는 지 확인할 때 까지 서버의 방화벽을 끄자.

showmount -e
// 공유 폴더, 클라이언트ip들이 나옴
exportfs -v
// 공유 폴더, 클라이언트ip, 권한까지 나옴

해당 명령어를 쳐서 입력한 정보들이 잘 나오는 지 확인해보자.

share 폴더에 텍스트 파일등을 간단히 작성해보고 서버의 작업을 끝내자.

클라이언트쪽 설정

1. nfs 설치하기

rpm -qa nfs-utils

위에 명령어를 실행해서 nfs-utils가 설치되어있는 지 확인.

만약 아무것도 설치되어 있지 않다면 아래 명령어로 nfs-utils를 설치하면 된다.

yum install nfs-utils

2. nfs 실행하기

설치가 완료된 후에는 nfs 서비스를 등록하고 실행할 수 있도록 아래 명령어를 실행하면 된다.

systemctl enable nfs-server

systemctl start nfs-server

서버에 어떻게 마운트 되어있나 확인하고 폴더 만들고 마운트 시키기

showmount -e 서버의 ip주소

해당 명령어로 어떻게 마운트 되어 있는 지 확인하고, 연결할 디렉토리를 만들자.

mkdir /share

// 서버처럼 777의 권한을 주자

해당 폴더를 마운트 시키면 된다.

mount -t nfs 서버ip:/share /share

share는 폴더이름이다. 폴더 이름을 다르게 만들었다면 다른 값을 넣어줘야 한다.

서버 설정할 때 적어놓았던 텍스트 파일이 있는 지 확인하자. 또 클라이언트 쪽에서도 텍스트 파일을 만들어서 서버쪽에도 공유가 되는 지 확인해보자.

재부팅 시에도 파일이 마운트되도록 설정하기

fstab에는 시스템에서 사용할 파일 시스템의 정보가 등록되어 있어서 여기서 기록해두면 재부팅시에도 자동으로 마운팅이 된다.

vi /etc/fstab
// 위의 명령어로 fstab 파일을 열어서 수정

serverip:/share       /share/        nfs    defaults        0 0
// 위의 형태를 수정해서 아래에 붙여주면 된다.

다시 서버의 방화벽 올리기

위에 까지 다 성공했으면 서버의 방화벽을 다시 올려주면 된다.

service firewalld start

Leave a comment