CloudLinux 8에 iSCSI 볼륨 마운트하기

중복 고성능 스토리지 액세스를 위해 다중 경로 I/O를 사용하여 CloudLinux 8에 Block Storage for Classic 볼륨을 마운트하는 방법을 알아보세요.

튜토리얼에 따라 CloudLinux 8 운영 체제를 사용하는 서버에 IBM Cloud® Block Storage for Classic 볼륨을 마운트합니다. 여기서는 사용자 호스트의 한 네트워크 인터페이스에서 스토리지 어레이의 두 대상 IP 주소로의 두 연결을 작성합니다.

다른 리눅스 유닉스( Linux® ) 운영 체제를 사용 중인 경우, 해당 배포판의 설명서를 참조하고 멀티패스(multipath)가 경로 우선순위를 위해 비대칭 논리 장치 액세스(ALUA)를 지원하는지 확인하십시오.

시작하기 전에

여러 호스트가 협력하여 관리하지 않고 동일한 Block Storage for Classic 볼륨을 마운트하는 경우 데이터가 손상될 위험이 있습니다. 여러 호스트가 동시에 볼륨을 변경하는 경우 볼륨 손상이 발생할 수 있습니다. 데이터 손실을 방지하려면 Microsoft 클러스터 공유 볼륨( CSV ), Red Hat 글로벌 파일 시스템( GFS2 ), VMware® VMFS 등과 같은 클러스터 인식 공유 디스크 파일 시스템이 필요합니다. 자세한 내용은 운영 체제 설명서를 참조하십시오.

방화벽을 우회하는 VLAN을 통해 스토리지 트래픽을 실행하는 것이 가장 좋습니다. 소프트웨어 방화벽을 통해 스토리지 트래픽을 실행하면 대기 시간이 늘어나서 결국 스토리지 성능이 저하됩니다. 스토리지 트래픽을 고유 VLAN 인터페이스로 라우팅하는 데 대한 자세한 정보는 FAQ를 참조하십시오.

시작하기 전에, Block Storage for Classic 볼륨에 액세스할 호스트가 인증되었는지 확인하십시오. 자세한 내용은 다음을 참조하세요. 콘솔에서 호스트 승인 CLI에서 호스트 승인 Terraform을 사용하여 호스트 승인.

iSCSI 및 다중 경로 유틸리티를 설치하십시오.

시스템이 최신 상태인지 확인하고, ‘ iscsi-initiator-utils ’ 및 ‘ device-mapper-multipath ’ 패키지가 포함되어 있는지 확인하십시오.

  1. 다음 명령을 사용하여 패키지를 설치하십시오.

    dnf install iscsi-initiator-utils device-mapper-multipath
    
  2. 서비스를 시작하십시오.

    chkconfig multipathd on
    
    chkconfig iscsid on
    

다중 경로 설정

mpathconf 유틸리티를 사용하여 DM Multipath를 설정하면, /etc/multipath.conf 멀티패스 구성 파일이 생성됩니다.

  • /etc/multipath.conf 파일이 존재하면, mpathconf 유틸리티로 이 파일을 편집할 수 있습니다.
  • /etc/multipath.conf 파일이 없는 경우 mpathconf 유틸리티에서 처음부터 /etc/multipath.conf 파일을 작성합니다.
  1. mpathconf 명령을 --enable 옵션과 함께 입력하십시오.

    # mpathconf --enable --user_friendly_names n
    
  2. /etc/multipath.conf 파일을 다음과 같은 최소 구성으로 편집하십시오.

    defaults {
    user_friendly_names no
    max_fds max
    flush_on_last_del yes
    queue_without_daemon no
    dev_loss_tmo infinity
    fast_io_fail_tmo 5
    }
    # All data in the following section must be specific to your system.
    blacklist {
    wwid "SAdaptec*"
    devnode "^hd[a-z]"
    devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
    devnode "^cciss.*"
    }
    devices {
    device {
    vendor "NETAPP"
    product "LUN"
    path_grouping_policy group_by_prio
    features "2 pg_init_retries 50"
    no_path_retry queue
    prio "alua"
    path_checker tur
    failback immediate
    path_selector "round-robin 0"
    hardware_handler "1 alua"
    rr_weight uniform
    rr_min_io 128
    }
    

구성 파일의 초기 기본값 섹션은 멀티패스 장치의 이름이 /dev/mapper/mpath n 형식이 되도록 시스템을 구성합니다. 여기서 mpath n 는 해당 장치의 WWID(World Wide Identifier)입니다.

  1. 구성 파일을 저장하고 필요한 경우 편집기를 종료하십시오.

  2. 다음 명령을 실행하십시오.

    # systemctl start multipathd.service
    

    멀티패스 데몬을 시작한 후 멀티패스 구성 파일을 수정해야 하는 경우, 변경 사항을 적용하려면 systemctl reload multipathd.service 명령을 실행해야 합니다.

/etc/iscsi/initiatorname.iscsi 파일 업데이트

IBM Cloud® 콘솔에서 확인한 IQN을 사용하여 /etc/iscsi/initiatorname.iscsi 파일을 업데이트하십시오. 값은 소문자로 입력하십시오.

InitiatorName=<value-from-the-Portal>

인증 정보 구성

IBM Cloud® 콘솔에서 제공된 사용자 이름과 비밀번호를 사용하여 /etc/iscsi/iscsid.conf 에서 다음 설정을 수정하십시오. CHAP(챌린지-핸드셰이크 인증 프로토콜) 이름에는 대문자를 사용합니다.

node.session.auth.authmethod = CHAP
node.session.auth.username = <Username-value-from-Portal>
node.session.auth.password = <Password-value-from-Portal>
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = <Username-value-from-Portal>
discovery.sendtargets.auth.password = <Password-value-from-Portal>

다른 CHAP 설정은 주석 처리된 상태로 두십시오. IBM Cloud® 저장소는 단방향 인증만 사용합니다. 상호 CHAP를 사용하지 마십시오.

스토리지 디바이스 검색 및 로그인

iscsiadm 유틸리티는 iSCSI( iSCSI ) 대상의 검색 및 로그인을 지원하고, open-iscsi 데이터베이스에 대한 액세스 및 관리를 돕는 명령줄 도구입니다. 이 단계에서는 IBM Cloud® 콘솔에서 확보한 대상 IP 주소를 사용하여 디바이스를 검색하십시오.

  1. iSCSI 어레이에 대해 검색을 실행하십시오.

    Block Storage for Classic SendTargets 메서드를 사용하는 동적 대상 검색이 필요합니다. 정적 노드 구성을 사용하지 마십시오. 확장성이 떨어질 뿐만 아니라 스토리지 설정(예: 호스트의 LUN 접근 권한 부여 또는 취소)이 변경될 경우 연결 문제가 발생할 수 있습니다. 동적 검색을 사용하면 호스트가 대상 포털의 변경 사항을 자동으로 감지할 수 있습니다.

    iscsiadm -m discovery -t sendtargets -p <ip-value-from-IBM-Cloud-console>
    

    IP 정보 및 액세스 세부사항이 표시되면 검색에 성공한 것입니다.

  2. iSCSI 어레이에 로그인하십시오.

    iscsiadm -m node --login
    

구성 확인

  1. iSCSI 세션이 설정되었는지 유효성 검증하십시오.

    iscsiadm -m session -o show
    
  2. 다중 경로가 있는지 유효성 검증하십시오.

    multipath -l
    

    이 명령은 경로를 보고합니다. 올바르게 구성되어 있다면, 각 볼륨에는 하나의 그룹이 있으며, 이 그룹의 경로 수는 ‘ iSCSI ’ 세션 수와 동일합니다. 단일 경로로 볼륨을 연결할 수는 있지만, 서비스 중단을 방지하기 위해서는 두 경로 모두에서 연결이 설정되어야 합니다.

    MPIO가 올바르게 구성되지 않은 경우 네트워크 가동 중단이 발생하거나 IBM Cloud® 팀이 유지보수를 수행할 때 스토리지 디바이스의 연결이 끊기고 오프라인으로 표시될 수 있습니다. MPIO는 이러한 이벤트 발생 시 추가적인 연결성을 제공하며, 활성 읽기/쓰기 작업이 진행 중인 볼륨과의 세션을 유지합니다.

  3. 연결된 디바이스의 파티션 테이블을 나열하십시오.

    fdisk -l | grep /dev/mapper
    

    기본적으로 스토리지 디바이스는 /dev/mapper/<wwid>에 첨부됩니다. WWID는 볼륨이 존재하는 동안 지속됩니다. 이 명령은 다음 예와 비슷한 내용을 보고합니다.

    Disk /dev/mapper/3600a0980383030523424457a4a695266: 73.0 GB, 73023881216 bytes
    

    이 예시에서 " 3600a0980383030523424457a4a695266 "라는 문자열이 WWID입니다. 애플리케이션은 WWID를 사용해야 합니다. 또한 multipath.conf 에서 "user_friendly_names" 또는 "alias" 키워드를 사용하여 더 읽기 쉬운 이름을 지정할 수도 있습니다.

    이제 볼륨이 마운트되어 호스트에서 액세스 가능합니다. 그런 다음 파일 시스템을 작성할 수 있습니다.

파일 시스템 작성(선택사항)

다음 단계에 따라 새로 마운트된 볼륨에서 파일 시스템을 작성하십시오. 파일 시스템은 볼륨을 사용하는 대부분의 애플리케이션에서 필요합니다. 2TB 미만인 드라이브의 경우 fdisk를 사용하고 2TB보다 큰 디스크의 경우 parted를 사용하십시오.

fdisk로 파일 시스템 작성

  1. 디스크 이름을 가져오십시오.

    fdisk -l | grep /dev/mapper
    

    리턴되는 디스크 이름은 /dev/mapper/XXX와 비슷하게 표시됩니다.

  2. 디스크에서 파티션을 작성하십시오.

    fdisk /dev/mapper/XXX
    

    XXX는 1단계에서 리턴된 디스크 이름을 나타냅니다.

    fdisk 명령어 표에 나열된 명령 코드를 보려면 아래로 더 스크롤해 주세요.

  3. 새 파티션에서 파일 시스템을 작성하십시오.

    fdisk –l /dev/mapper/XXX
    
    • 새 파티션은 XXXp1 와 마찬가지로 디스크와 함께 나열되며, 그 뒤에 크기, 유형(83), 그리고 Linux® 이 표시됩니다.
    • 파티션 이름은 다음 단계에서 필요하기 때문에 기록해 두십시오. XXXp1이 파티션 이름입니다.
    • 파일 시스템을 작성하십시오.
    mkfs.ext3 /dev/mapper/XXXp1
    
  4. 파일 시스템에 대한 마운트 지점을 작성하고 이를 마운트하십시오.

    • 파티션 이름 PerfDisk 또는 파일 시스템을 마운트하려는 위치를 작성하십시오.
    mkdir /PerfDisk
    
    • 파티션 이름을 사용하여 스토리지를 마운트하십시오.
    mount /dev/mapper/XXXp1 /PerfDisk
    
    • 새 파일 시스템이 나열되는지 확인하십시오.
    df -h
    
  5. 새 파일 시스템을 시스템의 /etc/fstab 파일에 추가하여 부팅 시에 자동 마운팅이 사용되도록 설정하십시오.

    • 다음 행을 /etc/fstab의 끝에 추가하십시오(3단계의 파티션 이름 사용).
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

parted로 파일 시스템 작성

많은 Linux® 배포판에는 parted 이 기본으로 설치되어 있습니다. 하지만 필요한 경우 다음 명령어를 실행하여 설치할 수 있습니다.

# dnf install parted

parted를 사용하여 파일 시스템을 작성하려면 다음 단계를 수행하십시오.

  1. parted 대화형 셸을 시작합니다.

    parted
    
  2. 디스크에서 파티션을 작성하십시오.

    • 달리 지정하지 않는 한, parted 는 기본 드라이브를 사용합니다. 대부분의 경우 기본 드라이브는 /dev/sda 입니다. select 명령을 사용하여 파티션하려는 디스크로 전환하십시오. XXX는 새 디바이스 이름으로 대체하십시오.

      select /dev/mapper/XXX
      
    • print 를 실행하여 현재 올바른 디스크에 있는지 확인하십시오.

      print
      
    • 파티션 테이블을 만듭니다.

      mklabel gpt
      
    • Parted는 기본 및 논리 디스크 파티션 작성에 사용할 수 있으며 수행 단계는 동일합니다. 파티션을 작성하기 위해 parted에서는 mkpart를 사용합니다. 작성하려는 파티션 유형에 따라 primary 또는 logical과 같은 기타 매개변수를 제공할 수도 있습니다. 나열된 단위는 기본적으로 메가바이트(MB) 단위입니다. 10GB 파티션을 작성하려면 1에서 시작하여 10000에서 끝납니다. 원하면 unit TB를 입력하여 크기 단위를 TB로 변경할 수도 있습니다.

      mkpart
      
    • partedquit를 종료하십시오.

      quit
      
  3. 새 파티션에서 파일 시스템을 작성하십시오.

    mkfs.ext3 /dev/mapper/XXXp1
    

    이 명령을 실행할 때는 올바른 디스크와 파티션을 선택하는 것이 중요합니다. 파티션 표를 인쇄하여 결과를 확인하십시오. 파일 시스템 열에서 ‘ ext3 ’을 확인할 수 있습니다.

  4. 파일 시스템에 대한 마운트 지점을 작성하고 이를 마운트하십시오.

    • 파티션 이름 PerfDisk 또는 파일 시스템을 마운트하려는 위치를 작성하십시오.
    mkdir /PerfDisk
    
    • 파티션 이름을 사용하여 스토리지를 마운트하십시오.
    mount /dev/mapper/XXXp1 /PerfDisk
    
    • 새 파일 시스템이 나열되는지 확인하십시오.
    df -h
    
  5. 자동 마운트 om 부트를 사용하려면 새 파일 시스템을 시스템의 /etc/fstab 파일에 추가하십시오.

    • 다음 행을 /etc/fstab의 끝에 추가하십시오(3단계의 파티션 이름 사용).
    /dev/mapper/XXXp1    /PerfDisk    ext3    defaults,_netdev    0    1
    

마운트된 볼륨의 콘텐츠에 대한 사용자 권한 관리

시스템 관리자는 마운트된 볼륨의 데이터에 대한 액세스를 관리할 수 있습니다. 파일 시스템이 준비되면, chownchmod 명령을 사용하여 개별 사용자 및 그룹에 읽기, 쓰기, 실행 권한을 할당함으로써 접근 제어를 구체화할 수 있습니다. 자세한 내용은 CloudLinux 의 제품 설명서를 참조하십시오.

Block Storage for Classic 볼륨 마운트 해제

볼륨이 더 이상 필요하지 않으면 삭제하기 전에 마운트 해제하십시오.

  1. 파일 시스템을 마운트 해제하십시오.
    umount /dev/mapper/XXXp1 /PerfDisk
    
  2. 해당되는 대상 포털에 기타 볼륨이 없으면 대상에서 로그아웃할 수 있습니다.
    iscsiadm -m node -t <TARGET NAME> -p <PORTAL IP:PORT> --logout
    
  3. 해당되는 대상 포털에 기타 볼륨이 없으면 추가 로그인 시도의 방지를 위해 대상 포털 레코드를 삭제하십시오.
    iscsiadm -m node -o delete -t <TARGET IQN> -p <PORTAL IP:PORT>