NFS (Network File System)
클라이언트에서 서버의 파일 시스템을 마운트하여 데이터를 공유할 수 있는 방식을 말하며,
유닉스 계열 서버-클라이언트 사이에 많이 사용되는 방식입니다.
※ 앞서 보았던 samba는 windows와 linux 사이의 파일 공유에 촛점을 맞춘 방식이라 본다면,
nfs는 linux to linux 방식이라고 이해하면 쉬울것 같습니다.
#######################################################
[NFS 서버 설정]
#######################################################
■ nfs 패키지 설치
아래 apt-get 명령으로 nfs 관련 패키지를 설치해 줍니다.
$ sudo apt-get install nfs-common nfs-kernel-server rpcbind
패키지 목록을 읽는 중입니다... 완료 의존성 트리를 만드는 중입니다 상태 정보를 읽는 중입니다... 완료 다음 패키지를 더 설치할 것입니다: libgssglue1 libnfsidmap2 libtirpc1 제안하는 패키지: open-iscsi watchdog 다음 새 패키지를 설치할 것입니다: libgssglue1 libnfsidmap2 libtirpc1 nfs-common nfs-kernel-server rpcbind 0개 업그레이드, 6개 새로 설치, 0개 제거 및 303개 업그레이드 안 함. 427 k바이트 아카이브를 받아야 합니다. 이 작업 후 1,902 k바이트의 디스크 공간을 더 사용하게 됩니다. 계속 하시겠습니까? [Y/n] y -- 이하 생략 -- |
■ 공유 디렉터리 생성
공유할 디렉터리를 적절한 위치에 생성하고, 접근 권한을 설정합니다.
(공유 디렉터리 명칭과 퍼미션 권한은 관리자가 알맞게 지정)
$ sudo mkdir /var/nfs_server
$ sudo chmod 777 nfs_server
■ NFS 설정
nfs 서버의 설정파일은 /etc/exports 입니다.
해당 파일을 열어 아래와 같은 형식으로 작성해 줍니다.
(해당 문서를 열어보면 주석으로 샘플 문구가 기록되어 있으므로 이를 참조하여 적절히 추가)
@ 문법 : <NFS 디렉터리> <클라이언트 IP>(옵션1,옵션2,...)
$ sudo vi /etc/exports
/var/nfs_server 192.168.0.10(rw,no_root_squash,sync,no_subtree_check)
# NFS 디렉터리 : (앞서 생성한) 서버의 공유 디렉터리 지정 # 클라이언트 IP : 접근을 허용하고자 하는 클라이언트의 IP 주소를 입력 # ro / rw : 공유 디렉터리 읽기/쓰기 권한 지정 → 읽기 전용(read only), 읽고 쓰기(read write) # no_root_squash : 서버와 클라이언트의 root에 동일한 권한을 부여 # no_all_squash : 서버와 클라이언트의 동일한 UID를 가진 사용자는 동일한 권한을 부여 # sync / async : 서버와 클라이언트 간의 sync 여부 → 맞춤(sync), 안맞춤(async) # subtree_check : 하위 트리 검사 기능. 일반적으로 비활성 (no_subtree_check) |
■ NFS 서비스 구동
아래 2가지 데몬 서비스를 구동합니다.
$ sudo service nfs-kernel-server restart
* Stopping NFS kernel daemon [ OK ] * Unexporting directories for NFS kernel daemon... [ OK ] * Not starting NFS kernel daemon: no exports. * Exporting directories for NFS kernel daemon... [ OK ] * Starting NFS kernel daemon [ OK ] |
$ sudo service rpcbind restart
rpcbind stop/waiting rpcbind start/running, process 4879 |
# -t 옵션 : 마운트 type을 지정하는 것으로 nfs를 인자 값으로 넣습니다. # 서버 IP 및 경로 : nfs로 연결할 서버의 IP와 공유 디렉터리 경로를 지정합니다. # 마운트 포인트 : 마운트로 연결할 클라이언트의 디렉터리 경로를 지정합니다. |
Filesystem Size Used Avail Use% Mounted on /dev/sda1 9.3G 6.6G 2.3G 75% / -- 중간 생략 -- 192.168.0.1:/var/nfs_server 392G 189G 183G 51% /var/nfs_client |
② nfs 언마운트
192.168.0.1:/var/nfs_server /var/nfs_client nfs default 0 0 |
[요약] NFS 서버 구축
① 서버
+ 설치 : $ sudo apt-get install nfs-common nfs-kernel-server rpcbind
+ 설정 : $ sudo vi /etc/exports
/var/nfs_server 192.168.0.1(rw,no_root_squash,sync,no_subtree_check)
+ 구동 : $ sudo service nfs-kernel-server restart
$ sudo service rpcbind restart
② 클라이언트
+ 설치 : $ sudo apt-get install nfs-common
+ 연결 : $ sudo mount -t nfs 192.168.0.1:/var/nfs_server /var/nfs_client
--------------------------------------------------------------
# 개인 서버 구축 가이드 - 전체 목록
[개인 서버 구축 가이드] ① SSH 서버 (openssh-server)
[개인 서버 구축 가이드] ② FTP 서버 (vsftpd)
[개인 서버 구축 가이드] ③ 파일 공유 서버 (samba-초급)
[개인 서버 구축 가이드] ④ 파일 공유 서버 (samba-중급)
[개인 서버 구축 가이드] ⑤ 파일 공유 서버 (samba-고급)
[개인 서버 구축 가이드] ⑥ 파일 공유 서버 (nfs)
[개인 서버 구축 가이드] ⑦ 파일 공유 서버 (autofs)
[개인 서버 구축 가이드] ⑧ DB 서버 (mariadb)
--------------------------------------------------------------
감사합니다. ^^