본문 바로가기
  • 반가워요 : )
전기기사/리눅스

20. 리눅스 NFS(Network File System),AutoFS 서버

by 교육의 기울기 2019. 1. 3.
반응형

●NFS(Network File System):
: NFS 서버에서 공유한 자원들을 클라이언트에서 마운트하여 사용하는 시스템을 의미.




· NFS서비스에서 이용되는 데몬

· mountd : 클라이언트가 마운트를 요청하면 서버에서 클라이언트를 대신하여 수행해준다
· nfsd   : mountd 데몬에 의해 마운트가 완료가 되면 공유디렉토리에 읽기 쓰기 작업을 대신해준다.
· lockd  : 파일 잠금을 통해 여러 사용자가 동시에 한 파일을 수정하는 것을 막아준다.
· statd  : nfs서버가 비정상적으로 종료되었거나 재부팅 했을 경우 복구하는 역할을 한다.
· idmapd : 서로 어떤 작업들을 하는지 알 수 있게 한다.
· portmapper : 동적포트 할당


· 동작원리

1.client 가 portmapper에게 nfs포트 번호 질의 ( 유동포트 사용하기때문 )
2.server 의 portmapper가 nfs의 포트 번호를 알려준다.
3.client 가 nfs서비스로 접근한다. (이 때 mountd가 마운트를 수행한다.)
4.idmapd 가 포트를 통해 서로의 pid를 전달해 준다.


· nfs구축순서


1.패키지 확인 : rpm -qa


2.패키지 설치 : rpm -ivh nfs*

nfs-utils-1.2.3-70.el6.x86_64.rpm
nfs-utils-lib-1.1.5-11.el6.x86_64.rpm   ( 서로 의존성오류 뜨기 때문 )



3.설정파일수정 : /etc/exports 설정파일 수정


vi /etc/exports
그리고 위그림과 같이 작성

※옵션

· ro : 읽기전용(기본값)
· root_squash : 관리자 권한 막기 (기본값) -> 익명계정으로 전환
· no_all_squash : client 측에서 일반사용자가 접속시 서버측 동일한 이름의 사용자로 접속 시켜준다.(기본값)
· sync : 서버와 클라이언트 간의 동기화 (기본값)
· rw : 읽기쓰기 가능
· no_root_squash : 관리자 권한 접속가능
· anonuid=[UID] : 익명으로 접근 시 해당 계정으로 연결해준다.
· anongid=[GID] : 익명으로 접근 시 해당 그룹으로 연결해준다.

· * : 모든대역


4.설정파일 검사


exportfs -ra

별 이상 없을시 아무것도 뜨지않음.



5.방화벽 설정.
 
A. vi /etc/sysconfig/selinux
  

     SELINUX=enforced    →disabled




B. system-config-firewall

    nfs4 체크 
    →  ( 2049(nfs포트번호) , 111번 포트(portmapper의 포트번호,tcp udp  둘다 적용가능) )

6. 데몬실행

/etc/rc.d/init/nfs restart

7. 클라이언트쪽에서 마운트

    먼저  서버쪽의 폴더에 대응할

     /client1 /client2 /client3 /client5
   를  만들어주자

   각 클라이언트 쪽에서 마운트할 마운트포인트 생성해야 한다.
    mount -t nfs [서버ip]:/sourcedir /destinationdir
                                        
 [서버]     [클라이언트]         

    mount -t nfs 192.168.109.132:/nfs1 /client1
    mount -t nfs 192.168.109.132:/nfs2 /client2
    mount -t nfs 192.168.109.132:/nfs3 /client3
    mount -t nfs 192.168.109.132:/nfs5 /client5


 마운트가 완료 되었다.



==============================================================================


<<<<문제>>>> ★★★★★★문제 풀어보기★★★★★★



<서버쪽>

Client1  192.168.1.0 대역 (읽기 쓰기, root 접속가능, 동기화)
Client2  모든 대역 (읽기전용, 동기화)
Client3  192.168.1.10 (동기화)     -> 자기아이피


<클라이언트쪽>

Client1 -> C1 에 마운트
Client2 -> C2 에 마운트
Client3 -> C3 에 마운트

C1에 123 라고 작성된 A 파일 생성
C2에 456 라고 작성된 B 파일 생성
C3에 789 라고 작성된 C 파일 생성


================================================================





·AutoFS : 자동으로 마운트를 수행 (사용자가 필요할 시)
일정시간동안 사용하지 않으면 언마운트 해준다.


1. 패키지 설치
  
    rpm -ivh autofs

2. autofs 활성화

   vi /etc/autofs.conf

     36 # browse_mode - maps are browsable by default.
     37 #
     38 browse_mode = no  →
yes 로 바꾸기.

3. autofs 디렉토리 지정
  
vi /etc/auto.master

      6 #
      7 /misc   /etc/auto.misc
      8
/auto   /etc/auto.auto    -> autofs 디렉토리    , 해당디렉토리의 설정파일
      9 #

autofs 디렉토리와  해당디렉토리의 설정 파일은 임의로 이름을 정한다.

4.autofs 디렉토리 설정파일


#[마운트포인트]         [옵션]          [마운트할대상]
C1              -fstype=
nfs,rw,soft       192.168.1.20:/client1
C2              -fstype=
nfs,rw,hard     192.168.1.20:/client2
C3              -fstype=
nfs,rw              192.168.1.20:/client3

soft -> 서버 응답이 없을 시 에러를 발생하고 마운트 프로세스 를 종료하게끔 만들어준다.
hard -> 서버 응답이 없을 시 타임 아웃까지 재시도.


5. 데몬 실행

   /etc/rc.d/init.d/autofs restart


========================================================================================================================================================================


- 확인 문제-




1.하드디스크 10G 5G 3G (SCSI) 세개를 생성후 
   10G 5G 로 LVM 을 이용하여 두개를 만들기.

2.master라는 계정을 서버에 만들고 홈 디렉토리를 /export/sdb/home/master가 되게 하라
   그리고 계정생성시 홈디렉토리안에 항상 notice라는 디렉토리가 생성되도록 만들어라.



3. nfs서버를 구축하여  /export/sdb/home/master/notice 가 클라이언트에서 마운트할수있게 만들어라.

     조건 : 192.168.1.0 C Class 대역만 허용한다.
               관리자권한x , 모든사용자 o  , 읽기 전용
                autofs 데몬을 이용하여 마운트 할수있도록 한다. 
                 →autofs 전용디렉토리 명 : /sevasnfs    설정파일 : /etc/auto.sevas
                                      공유폴더 명 : nfs_share  (읽기쓰기가능) 


   서버에 nfs 데몬 설치

vi /etc/exports
에서 위와 같이 작성
그후 exportfs -ra 로 이상이 있는지 확인

→ 그 후 vi /etc/sysconfig/selinux 에서 
     SELINUX=disabled로  변경해준다
      그리고 system-config-firewall  에서 NFS4 를 체크 해주고 나온다.
      ※ disabled는 재부팅해줘야 적용된다.

      그리고 재부팅해준다

그 후 클라이언트 측

-autofs 설치

-vi /etc/autofs.conf  에서  no를 yes로 바꾼다.

-vi /etc/auto.master 에서 /misk ~~   밑에  전용 디렉토리 , 설정파일 추가

※ 주의
    
서버쪽의  /export/sdb/home/master   의   폴더가  현재 권한이 700 상태기 때문에 권한을 바꾸어 주어야 한다.
     chmod 755 master



4. 클라이언트에서 계정추가시 /sevasnfs/nfs_share 폴더를 링크한 폴더를 항상 홈디렉토리안에 자동생성되게 만든다.
     공유폴더명은 link_share 로 한다.       ln -s /sevasnfs/nfs_share link_share

스켈 폴더안에 링크파일을 만들어 홈디렉토리안에 항상 링크파일이 생성될 수 있게 한다.


5.ftp 서버를 구축한다.  다만 디렉토리제한을 걸어놓는다.

설치후  

vi /etc/vsftpd/vsftpd.conf
에 들어가서  :96 줄에서 위와 같은 그림 같이 주석을 다 해제해준다.
그 후 vi /etc/vsftpd/chroot_list  를 만들어 준다.
firewall 에서 FTP 체크해주고 selinux  disabled 를 확인한다.
그 후 데몬 재실행 /etc/rc.d/init.d/vsftpd restart

클라이언트 쪽에서  ftp 설치 한다. 

ftp [서버IP]     pwd 를 해보니  최상위가 뜨는게  디렉토리 제한이 걸린상태라는걸 알수있다.





6.클라이언트에서   abc 라는 내용을 가진 test라는 파일을 생성 후   ftp 서버로 master 계정으로 접속뒤에 
 현재 마운트되어있는 /export/sdb/home/master/notice 에  업로드를 시켜본다.
 그 후에 계정을 만들어 계정의 홈디렉토리 내에 있는 link_share 폴더안에 test 파일이 존재하는지 확인한다.

      
클라이언트의  아무 위치에서나   생성 후  그상태로

접속하여서  master의  홈디렉토리 내에 있는  notice로 이동하여 준다.
그후  put test   명령어를 입력하여 업로드 시키고  나가준다.

클라이언트에서 아무 계정이나 만들어 홈디렉토리를 만들고 그후 안에 있는 링크 파일에 들어가보면
test파일이 잘 있는걸 알수 있다.



반응형

댓글