29일차

장민우·2024년 5월 8일

NFS 스토리지


NFS(Network File System)

  • Unix/Linux 시스템 간 파일 및 디렉터리를 공유하기 위한 프로토콜/파일시스템

NFS 서비스 구축


[NFS Server] (1번 가상머신에서 진행함.)

  1. NFS 서비스 설치
    $ yum install nfs-utils
  2. NFS 서비스 시작
    $ systemctl start nfs-server.service
  3. NFS 서비스 부팅시 자동 시작(영구 설정)
    $ systemctl enable nfs-server.service
  4. 방화벽에서 NFS 서비스 허용
    $ firewall-cmd --add-service=nfs
    $ firewall-cmd --add-service=nfs --permanent

NFS로 디렉터리 내보내기 구성(공유)
1. NFS로 내보내기 할 디렉터리 생성
$ mkdir DIRECTORY
1-2. 권한부여
$ chmod 777 DIRECTORY
2. 디렉터리 내보내기 구성파일(/etc/exports) 작성
$ vim /etc/exports
3. NFS로 내보내기 구성 파일 변경사항 반영
$ exportfs -r

etc/exports 구성파일 작성 방법

DIRECTORYACESS_HOST(EXPORT_OPTION)

DIRECTORY : 내보내기할 디렉터리 경로
ACCESS_HOST : 해당 디렉터리에 접근 가능한 대상 호스트 지정.
* - 모든 Host
192.168.10.0/24 - 192.168.10.0/24 네트워크의 Host
*.example.com - example.com 도메인의 Host
EXPORT_OPTION : 내보내기 할 옵션 지정
ro - Read Only
rw - Read Write
sync - 동기식 쓰기
sec - 보안 인증 방식 정의
root_squash - 원격 Host의 root 사용자의 권한 제한.
no_root_squash - 원격 Host의 root 사용자의 권한 제한하지 않음.

보안 인증방식

none - 인증없음
sys - Unix/Linux Local 사용자 인증
krb5 - Kerberos를 통한 인증. Keytab 파일 사용
krb5i - kerberos를 통한 인증. Keytab 파일 사용 + 무결성
krb5p - Kerberos를 통한 인증. Keytab 파일 사용 + 무결성 검증 + 암호화


[NFS Client](2번 가상머신에서 진행함.)

  1. NFS Client 패키지 설치

클라이언트에서 마운트하려고 하니까 에러가 난다. 서버와 마찬가지로 nfs-utils를 설치해준다.

$ yum install nfs-utils

  1. Mount Point 준비
    $mkdir MOUNT_POINT

  2. 마운트 명령어로 마운트(일회성 마운트)
    $ mount -t nfs -o rw NFS_SERVER:/NFS/DIR MOUNT-POINT

  • 설치 후 정상 마운트가 되는 것을 확인.

서버 (가상머신1)

클라이언트 (가상머신2)

  1. 영구 마운트 설정
    $ vim /etc/fstab
NFS_SERVER:/NFS/DIRMOUNT_POINTnfsrw00


root_squash가 설정되어있으면 클라이언트 root사용자가 파일을 만들면 server에서 소유자와 소유그룹이 nobody로 나옴.
no_root_squahs면 클라이언트 root사용자가 파일을만들면 똑같이 root로 나옴.


autofs(automounter)

마운트 연결이 필요한 경우 마운트 연결을 해주고 사용하지 않을 때 마운트 연결을 해제하는 서비스.

autofs는 클라이언트에서 작동하는 서비스로 autofs를 위한 서버의 추가적인 설정은 필요 없음.

autofs로 마운트 관리하는 대상에 따라 세부적인 구성방법에 차이가 있을 수 있음.

autofs 구성 파일

  • 마스터 맵 파일(Master Map File) : autofs를 통해 관리할 마운트 대상에 대한 마운트 방식, 매핑 파일 경로 등에 대해 선언하는 구성 파일.
  • 매핑 파일(Mapping File) : 마운트에 대한 세부 사항을 정의하는 마운트 구성 파일.

autofs 마운트 구성 방식

  • 직접 매핑 -> 마운트 대상을 직접 방식(1:1)
  • 간접 매핑 -> 마운트 대상을 간접적으로 지정하는 방식
    • 1:1 간접 매핑 : 마운트 대상을 1:1로 지정하는 간접 매핑을 설정하는 방식.
    • 와일드카드 간접 매핑 : 다수의 대상을 한번에 간접 매핑을 설정하는 방식.

autofs 구성(NFS)


  1. 소프트웨어 패키지 설치
    $yum install autofs
    $yum install nfs-utils

  2. 마스터 맵 파일 작성
    $vim /etc/auto.master.d/MASTER_MAP_FILE.autofs

MP             MAP_FILE_PATH
/-               /etc/auto.direct       <- 1:1 직접 매핑

/mnt2       /etc/auto.indirect     <- 1:1 간접 매핑

/mnt3      /etc/auto.indirect_wildcard   <- 와일드카드 간접 매핑





3. 매핑 작성
$vim /etc/auto.MAP_FILE

MP                       MOUNT_OPTION   SOURCE_LOCATION
/mnt/test-direct    -rw                      192.168.56.101:/test <- 1:1 직접매핑
indirect               -rw,sync              192.168.56.101:/test2 <- 1:1 간접매핑
*                        -rw,sync    192.168.56.101:/share-dir/& <- 와일드카드 간접매핑





3-1. (직접 매핑의 경우에만)마운트 포인트 생성
$ mkdir MOUNT_POINT


4. autofs 서비스 시작
$ systemctl start autofs.service


5. autoofs 서비스 부팅시 자동으로 시작 설정(영구 설정)
$ systemctl enable autofs.service


iSCSI 블록 스토리지


iSCSI(Internet Small Computer System Interface)

  • IP 기반으로 네트워크에 Block Storage를 제공하는 네트워크 프로토콜

Storage

  • 데이터의 저장 공간을 제공할 수 있는 장비
  • Storage 분류
    • DAS(Direct Attached Storage)
      스토리지 장비와 시스템이 케이블을 통해 직접 연결 되는 스토리지 장비.

    • NAS(Network Attached Storage)
      네트워크를 통해 시스템과 스토리지 장비를 연결하여 파일시스템 수준에서 저장공간을 제공하는 스토리지 장비

    • SAN(Storage Area Network)
      스토리지를 위한 별도의 네트워크를 구성하며 해당 네트워크를 통해 스토리지 장비와 시스템이 연결되는 스토리지 장비로 네트워크를 통해 Block Storage를 제공하는 스토리지 장비
      스토리지를 위한 고속의 네트워크를 구성하기 위해 일반적으로 FC Switch를 통해 연결됨.

iSCSI 관련 용어 정리

타겟(Target) : 스토리지 장비를 제공하는 시스템으로 서버 역할을 수행하는 시스템.

초기자(Initiator) : 스토리지 장비를 제공받는 시스템으로 클라이언트 역할을 수행하는 시스템.

IQN(iSCSI Qualified Name) : iSCSI Target, Initiator에서 사용하는 이름 ex)iqn.YYYY-mm.com.example:NAME

TPG(Target Portal Group) : 대상 포털 그룹으로 ACL, LUN, Portal을 묶은 Target의설정 단위

ACL(Access Control List) : 접근 제어 목록으로 iSCSI Target에 접근할 수 있는 시스템을 지정.

Portal : Initiator가 Target에 접속하기 위한 IP 주소, Port 등을 설정.

LUN(Logical Unit Number) : Initiator에게 제공할 스토리지 장치에 부여되는 장치 번호

backstores - iSCSI Target 시스템에서 저장공간을 제공하는 방식 정의

-block : 블록장치(Block Device)
-fileio : 현재 시스템에서 사용되는 파일시스템의 일부를 제공하는 방식으로 사이즈 지정시 별도의 파일이 생성되며 해당 파일 안에 데이터가 저장됨.
-pscsi : SCSI 장치를 직접 공유
-ramdisk : 시스템의 메모리에 램디스크(RAM Disk)를 생성해서 저장하는 방식으로 빠른 성능을 제공하나 대상(Target) 시스템 재부팅시 데이터가 손실 됨.

[iSCSI Target System]

iSCSI 서비스

  1. iSCSI 서비스 패키지 설치
    $ yum install targetcli

  2. iSCSI 서비스 시작
    $ systemctl start target.service

  3. iSCSI 서비스 부팅시 자동 시작 (영구 설정)
    $ systemctl enable target.service

  4. 방화벽에서 iSCSI 서비스 포트 허용
    $ firewall-cmd --add-port=3260/tcp
    $ firewall-cmd --add-port=3260/tcp --permanent

iSCSI 타겟 구성
$targetcli
1. 타겟에 제공할 스토리지
\> /backstores/block create name=STORAGE_NAME dev=DEVICE_FILE
ex)
\> /backstores/block create name=disk1 dev=/dev/sdb
2. 타겟의 IQN 정의 및 TPG 생성
\> /iscsi create wwn=IQN_NAME
ex)
\> /iscsi create wwn=iqn.2024-05.com.example:servera


3. TPG의 ACL 설정
/> /iscsi/iqn.2024-05.com.example:servera/tpg1/acls create wwn=INITIATOR_IQN
ex)
/> /iscsi/iqn.2024-05.com.example:servera/tpg1/acls create wwn=iqn.2024-05.com.example:host2
4. TPG의 LUN 설정
/> /iscsi/iqn.2024-05.com.example:servera/tpg1/luns create storage_object=BACKSTORE
ex)
/> /iscsi/iqn.2024-05.com.example:servera/tpg1/luns create storage_object=/backstores/block/disk1

5. TPG의 Portal 설정
/> /iscsi/iqn.2024-05.com.example:servera/tpg1/portals delete 0.0.0.0 3260

/> /iscsi/iqn.2024-05.com.example:servera/tpg1/portals create TARGET_IP PORT
ex)
/> /iscsi/iqn.2024-05.com.example:servera/tpg1/portals create 192.168.56.101 3260

6. 설정 후 저장.


[iSCSI Initiator System]


iSCSI Initiator 구성
1. iSCSI Initiator 패키지 설치
$ yum install iscsi-initiator-utils
2. iSCSI Initiator IQN 설정
$ vim/etc/iscsi/initiatorname.iscsi

  1. iSCSI Initiator 서비스 시작
    $ systemctl start iscsi.service
  2. iSCSI Initiator 서비스 부팅시 자동 시작(영구 설정)
    $ systemctl enable iscsi.service

iSCSI 타겟 연결
1. iSCSI 타겟 검색(Discovery)
$ iscsiadm -m discovery -t sendtargets -p TARGET_IP[:PORT]

2. iSCSI 타겟 로그인
$ iscsiadm -m node -T TARGET_IQN -p TARGET_IP[:PORT] -l

2-1. 로그인 상세 정보
$iscsiadm -m session -P 3

  1. iSCSI 타겟 연결 해제(Logout)
    $ iscsiadm -m node -T TARGET_IQN -p TARGET_IP[:PORT] -u

    3-2. iSCSI 타겟 연결 정보 삭제
    $ iscsiadm -m node -T TARGET_IQN -o delete
    ex)
    $ iscsiadm -m node -T iqn.2024-05.com.example:servera -o delete

iSCSI로 제공된 디스크 사용


  • iSCSI 초기자에서 iSCSI 타겟에 연결한 후 기존의 새로운 디스크 추가 과정과 동일하게 진행하면 됨.
  • 다만 마운트 시 마운트 옵션을 별도로 지정해야 함.

[root@host2 ~]# fdisk /dev/sdg ^C
[root@host2 ~]# mkfs -t ext4 /dev/sdg1

[root@host2 ~]# mkdir /mnt/iscsi-disk1
[root@host2 ~]# mount -t ext4 /dev/sdg1 /mnt/iscsi-disk

Mount 명령어를 사용한 마운트(1회성 마운트)
# mount -t FSTYPE DEVICE MOUNT_POINT

/etc/fstab 파일을 사용한 영구 마운트 설정
# vim /etc/fstab

  • 연결 해제
    마운트해제 -> iSCI 타겟 연결 해제 -> iSCSI 타겟 연결 정보 삭제-> 서버에서 $ systemctl stop target.service

0개의 댓글