본문 바로가기
IT/Linux

파일 기반 공유 스토리지

by 혁클 2021. 4. 14.

스토리지 유형별 분류

  1. 블록 기반 스토리지
  • 시스템에서 스토리지를 블록 장치로 취급
  • DAS : Direct Attached Storage - 직접 연결된 장치
  • SAN : Storage Area Network - FC(FibreChannel) - iSCSI2. 파일 기반 스토리지
  • 파일 시스템이 이미 구성된 스토리지를 공유
  • NAS : Network Attached Storage - NFS/CIFS
    • NFS: Network File System, 리눅스/유닉스 기본 파일 공유
    • CIFS : Common Internet File System = SMB
    • SMB : Server Message Block. Microsoft에서 개발한 파일 공유 관련 기능

 

NFS(Network File System)

  • 유닉스/리눅스 계열 시스템의 기본 파일 공유 형태
  • Sun Microsystems(Solaris Unix, Java)
  • 파일 기반의 공유 스토리지 : 공유 서버에서 설정한 공유 디렉터리를 다른 시스템이 연결하여 사용
  • 현재 사용중인 NFS 버전 : NFSv4
  • 관련 프로세스
    • rpc.mountd : NFS 마운트 요청을 처리, 내부 RPC처리(Remote Procedure Call)
    • nfs-server : NFS 공유설정에 따른 공유를 실행
    • rpc.idmapd : NFSv4에서 ID와 이름 연결, UID와 GID 이름 전환

 

NFS 실습

  1. NFS 서버 관련 기능 설치

# yum search nfs-utils

# yum -y install nfs-utils

2. NFS 공유 설정

/etc/exports 파일을 사용하여 공유 설정 추가

공유 디렉터리                 공유대상[(옵션)]

1. 공유할 디렉터리 생성

# mkdir /share

# chmod 777 /share
2. 공유
설정 예시

# vi /etc/exports

/share          192.168.100.200

/share          192.168.100.0/24

/share          www.example.local

/share          *. example.local

/share          192.168.100.0/24 192.168.101.0/24

/share          server [1-5]. example.local

3. 방화벽 설정 변경

# firewall-cmd --add-service=nfs --permanent

# firewall-cmd --add-service=rpc-bind --permanent

# firewall-cmd --add-service=mountd --permanent

# firewall-cmd --reload

4. 공유

# systemctl start nfs-server

# systemctl enable nfs-server

3) NFS 연결 (클라이언트에서 실행)

  • NFS 서버의 공유 정보 확인
    • showmount

# showmount -e <NFS서버 주소>

  • mount <저장소 장치> <마운트 포인트>
  • mount -t nfs <원격 nfs 디렉터리 정보> <마운트 포인트>
  1. 마운트 포인트 생성

# mkdir /mount/nfs
 2. 마운트마운트

# mount -t nfs 192.168.100.100:/share /mount/nfs

4) NFS 공유 설정 변경

  • 기존 공유설정 (/etc/exports) 파일의 공유 설정을 읽기/쓰기 가능으로 변경

/share          192.168.100.0/24(rw)

  • 공유설정 변경 후 설정 적용

# exportfs -r // 변경 설정 적용

# exportfs -v // 설정 상태 확인



NFS 공유 시 권한 관련 옵션

  1. sec : 공유되는 파일의 권한 규칙
  • sys : 기본값. 각 시스템의 사용자의 UID/GID를 기준으로 적용됨
  • none : 모든 사용자의 권한을 nfsnobody로 처리

ex) /etc/exports 파일의 설정 수정

/share          192.168.100.0/24(rw, sec=none)

  • krb5… : 통합 사용자 인증 설정(IPA) - Directory Service(LDAP…)
    2.
    root_squash : sec=sys 설정이 되어 있더라도, root 계정에 대해서는 nfsnobody  권한을 사용하도록 설정

ex) /etc/exports 파일 설정 수정

/share          192.168.100.0/24(rw, sec=sys, no_root_squash)
3.
ro, rw : 읽기 전용 or 읽기/쓰기

  • 공유 시, 마운트 시 각각 ro, rw 설정 가능
  • 한쪽이라도 ro로 설정되어 있을 경우, 결과적으로 읽기만 가능

 

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

 

자동 마운트 설정(Automount)

  • NFS 마운트 시 mount 명령어로 연결할 경우는 지속적으로 마운트가 유지
  • 자동마운트 설정 시, 설정이 적용될 때 즉시 마운트가 실행되지 않음
  • 자동 마운트를 통해 연결될 위치에 접근 시, 마운트가 수행됨
  • 장시간 사용하지 않을 경우, 스스로 연결을 해제함
  • 자동마운트 기능을 담당하는 서비스/패키지 : autofs
  • NFS 서버의 디렉터리 내 하위 디렉토리 등을 한 설정으로 마운트 되도록 할 수 있음

ex) NFS 자동 마운트를 통한 사용자 홈 디렉토리 공유

  • 자동마운트 설정 시 : 마스터 맵 - 직접/간접 맵
  • 마스터 맵 : 마운트 포인트, 맵 파일을 명시
    • <마운트 포인트><맵 파일 경로>
    • /etc/auto.master.d/<파일명>. autofs 형태로 생성된 파일만 적용
  • 직접 맵 : 마운트 포인트에 지정된 경로를 자동 마운트 설정. 마운트 포인트가 절대 경로
    • <마운트 포인트(절대 경로)> <마운트옵션> <NFS공유위치>
  • 간접 맵 : 마운트 포인트에 대한 정보를 상대 경로로 지정. 마스터 맵에 설정된 마운트 포인트에, 간접 맵 설정에 지정된 마운트 포인트를 결합하여 마운트 위치 지정
    • <마운트 포인트(상대 경로)> <마운트옵션> <NFS공유위치>
    • 실제 마운트 되는 위치 : 마스터 맵의 마운트 포인트 + 간접맵 마운트포인트

 

자동 마운트 실습

  1. NFS 서버는 공유가 걸려있는 상태 (이전 실습 상태 그대로 유지)
  2. NFS 클라이언트에서 autofs 패키지를 설치

# yum search autofs

# yum install autofs

3. 직접
마운트 설정

/etc/auto.master.d/test.autofs 파일 생성

/-      /etc/test.direct

4. 직접 마운트 설정이 들어있는 직접 맵 파일 생성


/etc/test.direct

/mount/nfs      -rw, sync        192.168.100.100:/share

5.autofs 서비스 시작/활성화


# systemctl start autofs.service

# systemctl enable autofs.service


6.
NFS 서버에서 공유 추가 설정

server# mkdir /shares

server# mkdir /shares/{alpha, bravo, charlie}

server# chmod -R 777 /shares

server# vi /etc/exports

/share          192.168.100.0/24(rw, sec=sys, no_root_squash)

/shares/alpha   192.168.100.0/24(rw)

/shares/bravo   192.168.100.0/24(rw)

/shares/charlie 192.168.100.0/24(rw)

server# exportfs -r

server# exportfs -v

7. 기존
직접 마운트 정보 삭제

  • /etc/auto.master.d/test.autofs 파일 내용 삭제
  • mount 정보 확인 후 마운트 된 경로 해제
  • autofs 서비스 재시작

    8. 간접
    마운트 설정

/etc/auto.master.d/test.autofs 파일 설정

/mount          /etc/test.indirect

9. 간접 맵 파일 생성

indirect        -rw, sync        192.168.100.100:/share

10. 간접 마운트로 생성된 경로 접근 후 확인


# cd /mount

# ls

# cd /mount/indirect

11. 간접
맵에서 와일드카드 사용

와일드카드 : *,?

  • 간접 마운트 설정 시 특정 경로 및 그 하위 디렉터리 포함
  • 기존 간접 마운트 맵 파일 사용
  • 마운트 포인트 경로는 마스터 맵을 사용

indirect        -rw, sync        192.168.100.100:/share

*               -rw,sync        192.168.100.100:/shares/&

12. 설정을 적용하기 위해 서비스 재시작


# systemctl restart autofs



*이 포스팅은 엔코아 플레이 데이터 수업 내용을 참고로 합니다.

'IT > Linux' 카테고리의 다른 글

쉘 프로그래밍 시 사용되는 쉘 기능  (0) 2021.04.16
쉘 프로그래밍의 이해  (0) 2021.04.15
SSH  (0) 2021.04.13
소프트웨어 패키지 관리(rpm,yum)  (0) 2021.04.10
네트워크 관리(기초,NetworkManger,호스트이름)  (0) 2021.04.08

댓글