Ubuntu OS에 iSCSI 볼륨 마운트

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

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

Ubuntu 운영 체제에서 iSCSI 서비스가 어떻게 작동하는지에 대한 자세한 내용은 iSCSI Initiator(또는 Client) 설명서를 참조하십시오. 다른 리눅스 유비닛( Linux® ) 운영 체제를 사용 중인 경우, 해당 배포판의 설명서를 참조하고 멀티패스(multipath)가 경로 우선순위를 위해 비대칭 논리 장치 액세스(ALUA)를 지원하는지 확인하십시오.

시작하기 전에

  1. API나 Terraform을 사용하여 콘솔, CLI에서 Classic용 가상 서버를 만듭니다.

  2. 동일한 데이터 센터에서 블록 스토리지 볼륨을 주문하세요.

  3. 호스트가 Block Storage for Classic 볼륨에 액세스할 수 있는 권한이 있는지 확인합니다. 자세한 내용은 다음을 참조하세요. 콘솔에서 호스트 승인 CLI에서 호스트 승인 Terraform을 사용하여 호스트 승인. 인증이 완료되면 사용자 이름, 비밀번호, 호스트 IQN 정보를 기록해 두세요.

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

iSCSI, 구성을 시작하기 전에 네트워크 인터페이스가 올바르게 설정되어 있고 특히 시작 시간 동안 open-iscsi 패키지가 올바르게 작동하도록 구성되었는지 확인하세요. Ubuntu 의 최신 버전에서는 네트워크 주소 정보를 설정하는 기본 도구가 Netplan입니다. YAML 구성 파일을 사용하여 네트워크 설정을 정의하므로 /etc/network/interfaces 과 같은 이전 방법을 대체합니다. Netplan은 명령줄 또는 데스크톱 환경의 NetworkManager 을 통해 구성할 수 있습니다.

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

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

시스템이 최신 상태인지 확인하고, ‘ open-iscsi ’ 및 ‘ multipath-tools ’ 패키지가 포함되어 있는지 확인하십시오. 다음 명령을 사용하여 패키지를 설치하십시오.

  • 운영 체제 업데이트:

    apt-get update
    
  • open-iscsi 설치를 수행하십시오.

    sudo apt install open-iscsi
    

    패키지가 설치되면 다음 두 개의 파일이 작성됩니다.

    • /etc/iscsi/iscsid.conf
    • /etc/iscsi/initiatorname.iscsi
  • 서비스를 시작합니다:

    systemctl enable open-iscsi
    
    systemctl enable iscsid
    
  • multipath-tools 설치를 수행하십시오.

    sudo apt install multipath-tools
    

ISCSI 구성

개시자 이름 업데이트

  1. /etc/iscsi/initiatorname.iscsi 파일이 존재하는지 확인하고 내용을 검토합니다.

    cat /etc/iscsi/initiatorname.iscsi
    
    root@vsi4classicubuntu:~# cat /etc/iscsi/initiatorname.iscsi
    GenerateName=yes
    
  2. 텍스트 편집기를 사용하여 IBM Cloud® 콘솔에서 /etc/iscsi/initiatorname.iscsi 파일을 IQN으로 업데이트합니다. 다음 형식으로 값을 입력하십시오.

    InitiatorName=<IQN-value-from-the-portal>
    

인증 정보 구성

  1. 파일의 내용을 확인하여 파일이 iscsid.conf 존재하는지 확인하십시오.

    cat /etc/iscsi/iscsid.conf
    
  2. 텍스트 편집기를 사용하여 다음 항목의 주석을 해제하고 편집합니다. IBM Cloud® 콘솔에서 사용자 아이디와 비밀번호를 찾을 수 있습니다.

    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를 사용하지 마십시오.

  3. 변경사항을 적용하려면 iscsi 서비스를 다시 시작하십시오.

    systemctl restart iscsid.service
    

더 자세한 정보는 Ubuntu 매뉴얼 - iscsidUbuntu 매뉴얼 - systemctl 를 참조하세요.

다중 경로 설정

  1. 다중 경로 유틸리티를 설치한 후 multipath.conf 파일의 기본 콘텐츠를 확인할 수 있습니다.

    cat /etc/multipath.conf
    
  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 "3 queue_if_no_path pg_init_retries 50"
    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/mpathn 형식이 되도록 시스템을 구성합니다. 여기서 mpathn 는 해당 장치의 WWID(World Wide Identifier) 번호입니다. 더 자세한 정보를 원하시면, Ubuntu 매뉴얼 - multipath.conf 참고하세요.

  3. 설정 파일을 저장하고 편집기를 종료합니다.

  4. 다중 경로 서비스를 시작하십시오.

    service multipath-tools start
    
    1. 필요한 서비스를 사용으로 설정하십시오.

    멀티패스 데몬을 시작한 후 멀티패스 구성 파일을 수정해야 하는 경우, 변경 사항을 적용하려면 multipathd 서비스를 다시 시작해야 합니다.

    Ubuntu 20에서 디바이스 매퍼 멀티패스(Device Mapper Multipath) 기능 사용에 대한 자세한 내용은 ‘디바이스 매퍼 멀티패싱 개요’를 참조하십시오.

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

iscsiadm 유틸리티는 iSCSI( iSCSI ) 대상의 검색 및 로그인, 그리고 open-iscsi 데이터베이스의 액세스 및 관리를 위해 사용되는 명령줄 도구입니다. 더 자세한 정보는 Ubuntu 매뉴얼(iscsiadm)을 참고하세요. 이 단계에서는 IBM Cloud® 콘솔에서 얻은 대상 IP 주소를 사용하여 장치를 검색합니다.

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

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

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

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

    root@vsi4classicubuntu:~# iscsiadm -m discovery -t sendtargets -p 161.26.114.197
    161.26.114.197:3260,1052 iqn.1992-08.com.netapp:stfdal1304
    161.26.114.196:3260,1049 iqn.1992-08.com.netapp:stfdal1304
    
  2. 자동 로그인을 구성하십시오.

    sudo iscsiadm -m node --op=update -n node.conn[0].startup -v automatic
    sudo iscsiadm -m node --op=update -n node.startup -v automatic
    
  3. iSCSI 어레이에 로그인하십시오.

    sudo iscsiadm -m node --login
    

구성 확인

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

    iscsiadm -m session -o show
    
    root@vsi4classicubuntu:~# iscsiadm -m session -o show
    tcp: [3] 161.26.114.197:3260,1052 iqn.1992-08.com.netapp:stfdal1304 (non-flash)
    tcp: [4] 161.26.114.196:3260,1049 iqn.1992-08.com.netapp:stfdal1304 (non-flash)
    
  2. 다중 경로가 있는지 유효성 검증하십시오.

    multipath -ll
    

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

    root@vsi4classicubuntu:~# multipath -ll
     3600a0980383056666424506a33426478 dm-0 NETAPP,LUN C-Mode
     size=500G features='3 queue_if_no_path pg_init_retries 50' hwhandler='1 alua'
     wp=rw
     |-+- policy='service-time 0' prio=50 status=active
     | `- 3:0:0:0 sdb 8:16 active ready running
     `-+- policy='service-time 0' prio=10 status=enabled
       `- 2:0:0:0 sda 8:0    active ready running
    

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

    이 예시에서 3600a0980383056666424506a33426478 는 볼륨이 존재하는 동안 유지되는 WWID입니다. 애플리케이션에서 WWID를 사용하는 것이 좋습니다. 또한 multipath.conf 에서 "user_friendly_names" 또는 "alias" 키워드를 사용하여 더 읽기 쉬운 이름을 지정할 수도 있습니다.

  3. dmesg을(를) 확인하여 새 디스크가 발견되었는지 확인하십시오.

    dmesg
    

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

볼륨이 마운트되고 호스트에서 액세스 가능하면 파일 시스템을 작성할 수 있습니다. 다음 단계에 따라 새로 마운트된 볼륨에서 파일 시스템을 작성하십시오.

  1. 파티션을 작성하십시오.

    $ sudo fdisk /dev/mapper/mpatha
    
    Welcome to fdisk (util-linux 2.34).
    Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.
    
    Device does not contain a recognized partition table.
    Created a new DOS disklabel with disk identifier 0x92c0322a.
    
    Command (m for help): p
    Disk /dev/mapper/mpatha: 1 GiB, 1073741824 bytes, 2097152 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 65536 bytes
    Disklabel type: dos
    Disk identifier: 0x92c0322a
    
    Command (m for help): n
    Partition type
       p   primary (0 primary, 0 extended, 4 free)
       e   extended (container for logical partitions)
    Select (default p): p
    Partition number (1-4, default 1):
    First sector (2048-2097151, default 2048):
    Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2097151, default 2097151):
    
    Created a new partition 1 of type 'Linux' and of size 1023 MiB.
    
    Command (m for help): w
    The partition table has been altered.
    
  2. 파일 시스템을 작성하십시오.

    $ sudo mkfs.ext4 /dev/mapper/mpatha-part1
    mke2fs 1.45.5 (07-Jan-2020)
    Creating filesystem with 261888 4k blocks and 65536 inodes
    Filesystem UUID: cdb70b1e-c47c-47fd-9c4a-03db6f038988
    Superblock backups stored on blocks:
            32768, 98304, 163840, 229376
    
    Allocating group tables: done
    Writing inode tables: done
    Creating journal (4096 blocks): done
    Writing superblocks and filesystem accounting information: done
    
  3. 블록 디바이스를 마운트하십시오.

    sudo mount /dev/mapper/mpatha-part1 /mnt
    
  4. 데이터에 액세스하여 새 파티션 및 파일 시스템이 사용할 준비가 되었는지 확인하십시오.

    ls /mnt
    

Block Storage for Classic 볼륨 마운트 해제

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

  1. 파일 시스템을 마운트 해제하십시오.

    umount /dev/mapper/XXXp1 /PerfDisk
    

    더 자세한 정보는 Ubuntu 매뉴얼 - umount 을 참고하세요.

  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>
    

    더 자세한 정보는 Ubuntu 매뉴얼 - iscsiadm 을 참고하세요.