Computer(IT)/Linux

NFS란?

약탄치킨 2009. 1. 15. 11:01
반응형

1) NFS의 필요성

NFS를 이용하여 여분의 하드를 공략하자! NFS는 Network File System의 약자로,
Sun Microsystem사가 내놓은 새로운 파일 시스템이다. NFS의 강점은 local머신이
아닌 다른 머신의 하드를 자신의 머신에 있는것처럼 네트워크를 이용하여 만드는 가상
 파일시스템이다. NFS는 NIS와 함께 나왔으며, NIS를 사용할때 NFS는 그 빛을 발한다.
 만약 사용하기에는 시스템이 딸리고 하드를 버리기에는 아까운 경우, NFS를 이용하여
 하드용량을 늘여보자.
2장에서 NIS 서버구성에 대해서 다루었다. 하지만 사용자를 공유 했지만 정작 중요한
사용자 계정을 공유 할 수 없었기 때문에 개인 작업은 전혀 할 수가 없는 상태이다.
여기서 nfs를 이용하게 되면 사용자는 어느 시스템에 접속하든지 관계없이 자신의 홈
계정을 사용하게 되며, 또한 메일도 어느 시스템에서 확인을 할 수가 있다. 또는
공동으로 작업을 하는 프로젝트가 있다면, 이 디스크를 다른 시스템에서 공유해서
어느 시스템에서도 작업이 가능할 것이다. 간단하게 정리하면 서버 시스템에 장착되어
있는 하드 디스크를 다른 시스템에서 공유할수 있게 해주는 시스템이다.

2) NFS 시스템의 구성

NFS 시스템도 NIS와 마찬가지로 네트웍 상태가 안정적인 것이 제일 중요한 관건이다.
작업도중에 nfs 끊기다면 사용자들이 작업하는데 상당히 불안해 할 것이다.
※ NFS서버와 클라이언트의 공통으로 해주어야 할 일
/etc/hosts파일에 각각의 서버 클라이언트의 호스트들을 등록을 해두는 것이 사용이
원할하다.
--------------------------------/etc/hosts----------------------------------------
127.0.0.1 localhost localhost.localdomain
211.219.31.204 nfs.hansungbok.com nfs
211.219.31.37 nfs_client1.hansungbok.com nfs_client1
211.219.31.38 nfs_client2.hansungbok.com nfs_client2

3)필요한 패키지 : knfsd-1.2.2-5.i386.rpm

nfs 서버로 사용하기 위해서는 커널에서 nfs 서버 지원이 들어가 있어야 한다. 커널 소스
설치하고 커널 컴파일 시에 다음의 옵션을 켜주어야 nfs 서버의 기능을 사용할수 있다.
$ rpm -Uvh knfsd-1.2.2-5.i386.rpm
$ rpm -Uvh kernel-headers-2.2.5-16.i386.rpm kernel-source-2.2.5-16.i386.rpm
$ cd /usr/src/linux
$ make mrproper
$make menuconfig
Code maturity level options =>
[*] Prompt for development and/or incomplete code/drivers
Filesystems --->
Network File Systems --->
<*> NFS filesystem support
<*> NFS server support
[*] Emulate SUN NFS server
나머지는 자신의 시스템의 설정에 맞게 설정을 한다.
$ make dep clean bzImage install modules modules_install
이 과정이 지나면 /boot 디렉에 새로운 커널 이미지가 생성이 되며 모듈도 새로이
생성이 된다.
그 후에 /etc/lilo.conf를 열어서 새로운 커널로 편집을 해준다. 저장한 후에 /sbin/lilo를
실행 해주는 것을 잊지 말자.
$/sbin/lilo
그런 다음에 ntsysv로 초기 부팅시에 nfs관련 데몬을 시작하게 설정한후 재부팅 하자.
부팅시에 nfsd가 로딩되는 것이 보이는가? 제대로 로딩이 되었다면 이제 알맞은 설정을 해주어야 할 단계이다. 먼저 nis를 연결한 시스템을 위해서 /home과 /var/spool/mail을 공유해서 사용자 계정과 메일을
공유할수 있게끔 해보자.
root@nis_server:>vim /etc/exports
/home client1.hansungbok.com (rw)
/var/spool/mail client1.hansungbok.com (rw)
exports는 간단하게 설명한다면 디렉터리를 다른 시스템에 허용해주는 것을 설정해
주는것이다. 이름이 중복되는 곳은 *를 사용하여 나타낼 수 있다. 예를들어,
client1.hansungbok.com
client2.hansungbok.com
client3.hansungbok.com
client4.hansungbok.com
이렇게 clug.net가 중복되면, 다음과 같이 설정을 한다.
/home *.hansungbok.com (rw)
위의 설정을 넣은 뒤, nfs데몬을 다시 시작하자.
root@nis_server:>/etc/rc.d/init.d/portmap stop
root@nis_server:>/etc/rc.d/init.d/nfs stop
root@nis_server:>/etc/rc.d/init.d/portmap start
root@nis_server:>/etc/rc.d/init.d/nfs start
그럼 이제부터 클라이언트는 /home과 /var/spool/mail 부분을 공유할 수 있다.
/home은 사용자 계정을 일관되게 사용하게 함이고 /var/spool/mail을 어느 시스템에
로긴하든지 같은 메일 박스를 처리하기 위함이다. 다음으로 해줄 일은 nfs 클라이언트에서 /home과 /var/spool/mail을 공유하는 것이다.
root@nis_client1:>vim /etc/fstab

/dev/hda1 / ext2 defaults 1 1
/dev/hda2 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,ro 0 0
nis:/home /home nfs rw,bg,soft,rsize=4096,wsize=1024,timeo=14 1 1
nis:/var/spool/mail /var/spool/mail nfs rw,bg,soft,rsize=4096,wsize=1024,timeo=14 1 1
none /proc proc defaults 0 0
none /dev/pts devpts mode=0622 0 0

위 설정에서 nis_server쪽을 보면 대충 짐작할 수 있을 것이다. 파일시스템은 nfs로 하며
읽고 쓸수 있고, 읽는 버퍼는 1메가이고 쓰기 버퍼는 4메가, 연결 접속이 끊어졌을 때
호출시간이 14초라는 것을 말이다. 자세한 설명은 뒤에 다시 다루기로 하겠다.
root@nis_client1:> mount -a
위의 명령을 내린 뒤 df명령을 내려서 mount를 확인한다. 만약 잘 안되었다면 서버쪽의
exports부분과 클라이언트에서 설정한 부분이 맞는지 대조하기 바란다

[출처] NFS란? |작성자 mymessage


반응형