RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'nfs'에 해당되는 글 1

출처 : 대전국제IT교육센터 정성재 강사

 

1. NFS(Network File System)이란?
(1) 개요: NFS는 Sun Microsystems사에서 개발된 것으로 TCP/IP네트워크 상에서 다른 컴퓨터의 파일
          시스템을 마운트하고 공유하여 상대방의 파일 시스템 일부를 마치 자기 자신의 디렉토리인
          것처럼 사용할 수 있게 해준다. NFS가 사용되는 주된 이유는 고용량의 하드디스크를 탑재
          하고 있는 몇 대의 워크스테이션이 네트워크의 다른 컴퓨터들에게 파일 시스템서비스를
          해줌으로써 모든 컴퓨터들이 필요 이상의 자원을 가질 필요도 없고 소프트웨어를 여기저기
          깔아둘 필요도 없어지게 된다. NFS는 사용이 편리한 대신에 보안에 상당히 미약하기 때문
          에 주의해서 사용해야 한다.
(2) NFS서버의 설정
   1) 설명: NFS서버는 언제든지 클라이언트가 마운트할 수 있도록 준비되어 있어야 하며 NFS는 rpc.
          mountd와 rpc.nfsd 두 데몬을 가지고 있다. 참고로 /etc/rc.d/init.d/nfs 스트립트를 실행
          하면 이 두 데몬을 실행시킨다.
   2) 관련데몬: NFS를 사용하기 위해서는 다음과 같은 데몬을 실행시켜야 한다.
     ㄱ. netfs: 삼바, NFS, NCP등을 마운트하거나 언마운트해주는 데몬으로 NFS 서버데몬을 띄우기
               전에 미리 실행시켜야 한다.
     ㄴ. nfs: NFS서비스를 해주는 데몬이다. 참고로 이 데몬을 실행시키려면 먼저 /etc/exports
             파일을 설정해야 한다.
     ㄷ. portmap: RPC(Remote Procedure Call)연결에 관여하는 데몬으로 NFS, NIS을 사용할 때 필
                 요함으로 실행시켜야 한다.
     ㄹ. nfslock: 파일잠금을 제공하는데 이것은 동시에 여러 사람들이 동일한 파일을 수정하는
                 것을 막는다.
    (참고) 데몬의 확인
          [root@www init.d]# rpcinfo -p
             program vers proto   port
              100000    2   tcp    111  portmapper
              100000    2   udp    111  portmapper
              100024    1   udp  32768  status
              100024    1   tcp  32768  status
              100011    1   udp   1022  rquotad
              100011    2   udp   1022  rquotad
              100005    1   udp  32771  mountd
              100005    1   tcp  32769  mountd
              100005    2   udp  32771  mountd
              100005    2   tcp  32769  mountd
              100005    3   udp  32771  mountd
              100005    3   tcp  32769  mountd
              100003    2   udp   2049  nfs
              100003    3   udp   2049  nfs
              100021    1   udp  32772  nlockmgr
              100021    3   udp  32772  nlockmgr
              100021    4   udp  32772  nlockmgr
            => (설명)
              rpc.mountd: 외부의 요청에 반응하는 NFS 마운트 프로토콜이다. 클라이언트들이 서버
                         를 이용할 수 있도록 디렉토리를 공유해주는 역할을 한다. NFS는 접속해제
                         방식으로 웹서버처럼 접속요청이 있을 때만 연결이 이루어진다.
              rpc.nfsd: 서버측에서 rpc.mountd에 의해 마운트되면 클라이언트는 rpc.nfsd로 서버에
                       요구를 보내게 된다. 이 요구를 처리하는 주 데몬이다.
              rpc.lockd: 파일잠금을 제공하는데 이것은 동시에 여러 사람들이 동일한 파일을 수정
                        하는 것을 막는다.
              rpc.statd: rpc.lockd와 함께 작동하면 NFS서버가 비정상적으로 종료되었거나 리부팅
                        했을 경우 복구하는 역할을 한다.
              rpc.rquotad: 원격 쿼터 서버로서 NFS서버의 파일 시스템을 마운트한 로컬 유저의 쿼
                          터에 넘겨준다.
          [root@www /]# ps ax
            => rpc.mountd와 nfsd 데몬이 실행중인지 확인하면 된다.
   2) 관련파일: /etc/exports
     ㄱ. 개요: 파일에 마운트를 허가할 디렉토리와 마운트를 허가할 호스트 목록을 설정한다.
     ㄴ. /etc/exports에서 사용가능한 옵션들
        root_squash: 클라이언트에서 루트를 서버상에 nobody사용자로 매핑한다.
        no_root_squash: 서버와 클라이언트 모두 같은 루트(root)를 사용한다. 즉 클라이언트에서의
                       root의 요청을 서버의 root로 매핑한다.
        ro: 파일 시스템을 읽기 전용(read only)로 마운트한다.
        rw: 파일 시스템을 읽고 쓸수 있도록 마운트한다.(read write)
        insecure: 인증되지 않은 접근도 가능하도록 한다.'
        link_relative: 심볼릭 링크를 상대 심볼릭 링크로 바꿀 때 사용한다.
        noaccess: 지정된 디렉토리에는 접근을 금지한다. 특정시스템에 대한 공유 디렉토리 일부를
                 접근 못하게 할 경우에 사용한다.
        (참고) 가장 많이 나오는 옵션으로 root_squash와 no_root_squash가 있는데 squash라는 뜻이
              '짓누르다', '억압하다'라는 뜻이 있다. 따라서 root_squash라는 것은 root를 짓누르
              다. 즉 root사용자를 무시한다는 뜻이고 no_root_squash는 그 반대의 뜻이다.
     ㄷ. /etc/exports파일의 예
        /home/ftp/pub *.sample.com(ro)
        / master(rw) trusty(rw,no_root_squash)
        /projects proj*.local.domain(rw)
        /data 192.168.0.0/255.255.255.0(ro)
        /work 192.168.0.2(rw)
        /pub *(ro, insecure, root_squash)
        /pub/private *.social.com(noaccess)
         => (설명)
           1. /home/ftp/pub디렉토리를 sample.com도메인을 사용하는 모든 사용자가 읽는 것을 허용
             한다.
           2. /디렉토리를 master, trusty호스트가 읽기/쓰기를 허용한다.
           3. 도메인이름이 local.domain이고 호스트이름이 proj로 시작하는 호스트에 대해서 /pro
             jects라는 디렉토리로 읽기/쓰기를 허용한다.
           4. 네트워크주소가 192.168.0 대역에 속한 모든 호스트에 대해서 data디렉토리를 읽기만
             허용한다.
           5. /work 디렉토리를 192.168.0.2 호스트만 read and write권한으로 설정한다.
           6. /pub디렉토리에 읽기전용으로 마운트할 수 있고, 인증없이 마운트가 가능하며 마운트하
             는 모든 컴퓨터의 루트를 서버에서 nobody로 접근할 수 있게한다.
           7. /pub/private디렉토리는 social.com에 해당하는 시스템은 접근할 수 없다.
   3) NFS 서버설정예
     ㄱ. /etc/exports에 설정한다.
       예) /data 192.168.3.220/255.255.255.0(rw)
     ㄴ. 데몬을 띄운다. (netfs, portmap, nfs)
       예) /etc/rc.d/init.d/nfs start
     ㄷ. 해당디렉토리의 퍼미션을 푼다.
       예) chmod 777 /data
(3) NFS 클라이언트에서 사용하기
   1) 설명: 클라이언트에서는 mount명령을 이용하여 NFS서버의 파일시스템을 이용할 수 있다.
   2) 마운트형식
     ㄱ. 명령행에서 마운트하기
        mount -t nfs NFS-서버:Exported디렉토리 마운트포인트
     ㄴ. /etc/fstab에 정의하여 부팅시마다 사용하기
        NFS-서버:/디렉토리   마운트포인트   nfs   options 0 0
   3) 사용예
     ㄱ. mount -t nfs nfs.linux.co.kr:/usr/local /usr/local
        => nfs.linux.co.kr의 /usr/local디렉토리를 자신의 /usr/local디렉토리에 nfs파일시스템
          타입으로 마운트한다.
     ㄴ. mount -t nfs 203.247.xxx.100:/data /pds
        => 203.247.xxx.100의 /data라는 디렉토리를 현재 시스템의 /pds라는 디렉토리로 마운트한
          다.
     ㄷ. /etc/fstab을 이용한 nfs마운트 설정예
        nfs.linux.co.kr:/usr/local   /usr/local   nfs   timeo=15,intr   0 0
         => nfs.linux.co.kr의 /usr/local디렉토리를 자신의 /usr/local디렉토리에 nfs파일시스템
           으로 마운트한다. 타임아웃시간을 1.5초로 하고, 파일시스템을 인터럽트할 수 있는 옵션
           을 설정하였다.
       (참고) /etc/fstab에 사용되는 NFS마운트관련옵션
             timeo=n : RPC 타임아웃이 발생되고 나서 첫번째 재전송 요구를 보낼때 사용되는 시간
                      기본값은 7(1/10초)
             intr : 주 타임아웃이 발생되었을 때 신호를 보내 NFS호출을 인터럽트한다.
             rsize=n : NFS서버로부터 읽어들이는 바이트 수 지정. 기본값은 1024바이트
             wsize=n : NFS서버에 쓰기할 때 사용하는 바이트 수지정. 기본값은 1024바이트
             retrans=n : 주타임아웃을 발생시키는 부타임아웃을 재전송 회수 기본값은 3번의 타임
                        아웃
             port=n : NFS서버와 연결할 수 있는 포트번호 지정
             fg : 첫번째 NFS마운트 시도에서 타임아웃이 발생되면 즉시 중단함. 기본값
             hard : 주타임아웃이 발생되면 server not responding을 출력하고 무한정 재시도
             soft : 주타임아웃이 발생되면 프로그램에게 I/O 에러 보고
   4) 참고: NFS를 사용가능한 지 클라이언트 점검
    ㄱ. 설명: 클라이언트에서 NFS를 사용하기 위해서는 파일시스템에서 nfs를 지원하는지 점검해야
             한다.
    ㄴ. 확인하기
       [root@www root]# cat /proc/filesystems
       nodev   rootfs
       nodev   bdev
       nodev   proc
       nodev   sockfs
       nodev   tmpfs
       nodev   shm
       nodev   pipefs
               ext2
       nodev   ramfs
               iso9660
       nodev   devpts
               ext3
       nodev   usbdevfs
       nodev   usbfs
       nodev   autofs
       nodev   binfmt_misc
       nodev   nfs             // 이 부분이 있어야 한다.
        => /proc/filesystems는 현재 시스템에서 지원하는 파일시스템 목록을 담고 있는 파일이다.
    ㄷ. 나타나지 않는 경우
       modprobe nfs
        => nfs를 모듈로 올린다.
    ㄹ. 모듈로 올릴 때 에러가 발생하는 경우
       커널에서 nfs모듈이 설정되지 않은 경우이다. '/usr/src/리눅스버전'디렉토리로 이동한 뒤에
      make menuconfig를 실행하여 File sysmtem => Network Filesystem => NFS Client 관련항목을
      선택하고 재컴파일한다.
(4) 관련명령어
   1) exportfs
     ㄱ. 설명: NFS에서 익스포트된 리스트를 보여준다.
     ㄴ. 사용법
        exportfs [option]
     ㄷ. 옵션
        -v : 익스포트된 리스트를 자세히 보여준다.
        -r : 익스포트된 내역을 다시 읽어들인다.
     ㄹ. 사용예
        a. [root@www /]# exportfs
           /data           192.168.0.3/255.255.255.0
        b. [root@www /]# exportfs -v
           /data           192.168.0.3/255.255.255.0(rw,async,wdelay,root_squash)
        c. [root@www /]# exportfs -ar
             => 현재 설정된 내역이나 변경된 내역을 다시 읽어들인다.
   2) showmount
     ㄱ. 설명: NFS서버의 마운트된 정보를 보여준다.
     ㄴ. 사용법
        showmount [option]
     ㄷ. option
        -a : host:dir 형태로 출력한다.
        -e : 익스포트리스트를 보여준다.
     ㄹ. 사용예
        a. [root@www /]# showmount
           Hosts on www:
           192.168.0,3
        b. [root@www /]# showmount -a
           All mount points on www:
           192.168.0.3:/data
        c. [root@www /]# showmount -e
           Export list for www:
           /data 192.168.0.3/255.255.255.0

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)