NFS(network file system )
nfs 는 호스트 간의 파일 공유를 가능하게 하는데 윈도우도
윈도우간 netbeui 프로토콜을 이용해 하드 공유를 설정해
다른 사람의 하드를 네트워크드라이브로 설정을 해 자신의
하드처럼 사용 할 수 있다.
nfs 도 공유 자제의 개념은 비숫 하지만 유닉스 호스트들은
파일의 펴미션과 소유권이 있어 윈도우와는 다른 점이 있으면
좀더 다양한 응용 할 수 있는 내용을 가지고 있다.
== nfs 는 유닉스간의 파일 공유를 목적으로 한다.
== 선마이크로 시스템에서 개발
== UDP 프로토콜을 사용하며 LAN 환경에 사용됨
(UDP 프로토콜을 사용하기 때문에 wan 환경에서는
데이타 손실이 있는 문제점이 발생한 가능성이 있다.)
NFS 서버 프로그램 설치
- nfs-utils
- portmap (포트맵 도 설치가 되어 있어야 한다.)
설치 여부 검사
[root@aaaaa byun]# rpm -qa |grep nfs
nfs-utils-0.1.9.1-7
[root@aaaaa byun]# rpm -qa |grep portmap
portmap-4.0-29
[root@aaaaa byun]#
만약 설치가 안되 있다면
rpm -Uvh nfs-utils
rpm -Uvh protmap
NFS 서버 설정 하기
nfs 서버 설정은 /etc/exports 파일에서 설정을 한다.
다양한 옵션이 있지만 우선 기본 적은 형태로 사용을
해보다.
pico /etc/exports
/tmp 192.168.0 (rw)
# 공유할 디렉토리 접속할수 있는 클라이언트 옵션
# 위의 설정은 /tmp 디렉토리를 192.168.0 으로 시작되는 클라이언트
# 에서 r 읽기모드와 w 쓰기 모드로 접근을 할 수 있다.
설정이 되었으면 NFS 데몬을 실행을 해보.
/etc/rc.d/init.d/portmap start
# 보통 실행이 되어 있기 때문에 안해도 된다.
/etc/rc.d/init.d/portmap start
# 부팅시 NFS 데몬이 실행을 하기 위해서는
# chkconfig --list 35 nfs on
[root@aaaaa init.d]# /etc/rc.d/init.d/nfs start
Starting NFS services: [ OK ]
Starting NFS quotas: [ OK ]
Starting NFS mountd: [ OK ]
Starting NFS daemon: [ OK ]
[root@aaaaa init.d]#
잘 되었는지 확인을 해보 자
rpcinfo -p
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100021 1 udp 1024 nlockmgr
100021 3 udp 1024 nlockmgr
100024 1 udp 1025 status
100024 1 tcp 1024 status
100011 1 udp 918 rquotad
100011 2 udp 918 rquotad
100005 1 udp 1026 mountd
100005 1 tcp 1026 mountd
100005 2 udp 1026 mountd
100005 2 tcp 1026 mountd
100003 2 udp 2049 nfs
고유 설정을 확인해 보자
showmount -e localhost
[root@aaaaa init.d]# showmount -e localhost
Export list for localhost:
/maildata (everyone)
/var/spool/mail (everyone)
[root@aaaaa init.d]#
nfs 관련 데몬
portmapper와 rpcbind는 동일한 것으로 rpc 연결을 제어한다.
rpc.statusd
TCP, UDP Traffic을 모니터링한다.
rpc.rquotad
NFS 마운트에 대한 사용자의 quota를 체크한다.
rpc.mountd
클라이언트의 파일시스템 마운트 요청을 처리한다.
rpc.nfsd
NFS Kernel Module(nfsd.o)을 조절한다.
nlockmgr
여러사용자가 파일에 쓰려는 요구를 Lock Management를 통하여 처리한다.
amd
NFS 파일시스템의 자동 마운트를 처리한다.
NFS 클라이언트에서 접속하기
nfs 클라이언트에서 monut 명령어로 접속을 한다.
mount -t nfs 192.168.0.5:/tmp /home3
#192.168.0.5호스트의 tmp 디렉토리를 클라이언크 home3
# 디렉토리로 마운트
# 이제부터 home3 디렉토리는 192.168.0.5 의 호스트의 tmp
# 디렉토리 이다.
# 파일 복사를 해보자 cp /bin/ls /home3
# 아마 복사가 잘 될 것이다.
# NFS 호스트 설정에 W 모드가 설정이 되어 있고
# tmp 디렉토리는 펴미션이 777 이기 때문에
# 복사가 잘되 것이다.
#여기서 주의 할점은 W 모드가 들어 갔다고 해서 꼭 복사가 되는 것은
# 아니다
# 유닉스 계열은 소유권이 있기 때문에 W 모두가 들어 갔다고 해도
# 마운트 되는 디렉토리의 소유권이 다른 사람이기 때문에 마운트 된다 해서
# 펴미션이 777 이 아니면 복사가 되지 않을 것이다.
# 그래서 실제적으로 NFS 호스트에서 exports 설정에 다른 옵션이 들어 간다.
rw : 읽기 쓰기
ro : 읽기 전용 모드
rx : 일기 실행
root_squash : NFS 호스트의 root 와 클라이언트의 root (nobody 로 인식)를 서도 다른 아이디
로 인식을 한다
즉 클라이언트에서 root 로 마운트를 해서 NFS 호스트의 root 파일을 사용 할 수
없다.(기본적으로 이 옵션을 주지 않아도 이런 상태이다.)
no_root_squash : NFS 호스트의 root 와 클라이언트의 root 를 같은 아이디로
인식을 한다.
all_squash : NFS 호스트와 클라이언트의 유저를 다른 사람으로 인식을 한다.
no_all_squash : NFS 호스트와 클라이온트의 유저로를 같은 유저로 인식을 한다.
link_relative : 마운트 되었을 시 마운트 디렉토리에 심볼릭 링크가 있다며
클라이언트에서는 링크값이 절대 값 이기 때문에 문제가 발생할 수
있는데 이것을 상대적인 링크값으로 설정을 해 준다.
map_nis : NIS 서버를 이용해 uid,gid 에 대한 맵을 사용하도록 설정
noaccess : 마운트된 디렉토리중 특정디렉토리를 NFS 허용하지 않을 때
pico /etc/exports
/maildata 192.168.0 (rw,no_root_squash,no_all_squash)
/home2 192.168.0 (rw,no_root_squash,no_all_squash)
# 이 마운트는 클라이언트에서 유저들의 홈디렉토리도 만들고
# 클라이언트의 root 도 NFS 호스트와 같은 아이디임
/var/spool/mail 192.168.0 (rw)
NFS 클라이언트
mount -t nfs 192.168.0.5:/home2 /home
클라이언트 마운트에도 새로운 옵션이 추가 된다.
mount -t -o rsize=1024, wsize=1024 192.168.0.5:/home2 /home
wsize, rszie 는 버퍼 관련 옵션이다.
즉 네트워크 속도가 하드드라이브 속도가 다르기 때문에
두 개의 속도 보상을 위해 버퍼 크기를 지정을 하는 것이 좋다.
부팅시 자동으로 nfs 마운트하기
vi /etc/fstab
192.168.0.5:/tmp /home2 nfs rw 0 0
유저 유저를 만들어 보자
useradd aaaa
passwd aaaa
지금 생성 된 유저는 NFS 호스트에 계정이 이 생성된 것이다.
클라이언트 에 있는 aaaa 유저의 있는 파일의 모든 내용은
NFS 호스트에 있다.
nfs 와 nis 을 동시에 이용하면 NFS 클라이언트에서 유저을 만들지
않아도 NFS 호스트에 있는 유저 아이디로 NFS 클라이언트에
접속이 되면 파일도 사용이 가능하다.