Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

13.2.3.5. iSCSI 기반 스토리지 풀

권장 사항
iSCSI(Internet Small Computer System Interface)는 스토리지 장치 공유를 위한 네트워크 프로토콜입니다. iSCSI는 IP 계층을 통해 SCSI 명령을 사용하여 이니시에이터(스토리지 클라이언트)를 대상(스토리지 서버)에 연결합니다.
iSCSI 기반 장치를 사용하여 게스트 가상 시스템을 저장하면 iSCSI를 블록 스토리지 장치로 사용하는 등 보다 유연한 스토리지 옵션을 사용할 수 있습니다. iSCSI 장치는 Linux-IO(Linux-IO) 대상을 사용합니다. 이는 Linux의 멀티프로토콜 SCSI 대상입니다. iSCSI 외에도 LIO는 FCoE(Fibre Channel over Ethernet)를 지원합니다.
사전 요구 사항
iSCSI 기반 스토리지 풀을 생성하기 전에 iSCSI 대상을 만들어야 합니다. iSCSI 대상은 소프트웨어 지원 iSCSI 대상을 생성하기 위한 명령 집합을 제공하는 RuntimeClass 패키지로 생성됩니다.

절차 13.5. iSCSI 대상 생성

  1. RuntimeClass 패키지 설치

    # yum install targetcli
  2. rootfs 명령 세트를 시작합니다.

    # targetcli
  3. 스토리지 오브젝트 생성

    스토리지 풀을 사용하여 스토리지 오브젝트 3개를 생성합니다.
    1. 블록 스토리지 오브젝트 생성
      1. /backstores/block 디렉터리로 이동합니다.
      2. create 명령을 실행합니다.
        # create [block-name][filepath]
        예를 들면 다음과 같습니다.
        # create block1 dev=/dev/sdb1
    2. fileio 오브젝트 생성
      1. /fileio 디렉토리로 이동합니다.
      2. create 명령을 실행합니다.
        # create [fileio-name][image-name] [image-size]
        예를 들면 다음과 같습니다.
        # create fileio1 /foo.img 50M
    3. ramdisk 오브젝트 생성
      1. /ramdisk 디렉터리로 이동합니다.
      2. create 명령을 실행합니다.
        # create [ramdisk-name] [ramdisk-size]
        예를 들면 다음과 같습니다.
        # create ramdisk1 1M
    4. 이 단계에서 생성된 디스크의 이름을 기록해 둡니다. 나중에 사용하게 될 것입니다.
  4. iSCSI 대상 만들기

    1. /iscsi 디렉터리로 이동합니다.
    2. 다음 두 가지 방법 중 하나로 대상을 생성합니다.
      • 매개 변수 없이 create 명령을 실행합니다.
        iSCSI 정규화된 이름 (IQN)이 자동으로 생성됩니다.
      • IQN과 서버를 지정하는 create 명령을 실행합니다. 예를 들면 다음과 같습니다.
        # create iqn.2010-05.com.example.server1:iscsirhel7guest
  5. 포털 IP 주소 정의

    iSCSI를 통해 블록 스토리지를 내보내려면 포털, LUN, 액세스 제어 목록 ACL을 먼저 구성해야 합니다.
    포털에는 대상이 모니터링하는 IP 주소 및 TCP와 연결할 이니시에이터가 포함됩니다. iSCSI는 포트 3260을 사용합니다. 이 포트는 기본적으로 구성됩니다.
    포트 3260에 연결하려면 다음을 수행합니다.
    1. /tpg 디렉토리로 이동합니다.
    2. 다음을 실행합니다.
      # portals/ create
      이 명령을 수행하면 포트 3260에서 사용 가능한 모든 IP 주소를 수신 대기합니다.
      포트 3260을 수신할 단일 IP 주소만 사용하려면 명령 끝에 IP 주소를 추가합니다. 예를 들면 다음과 같습니다.
      # portals/ create 143.22.16.33
  6. LUN을 구성하고 스토리지 오브젝트를 패브릭에 할당

    이 단계에서는 스토리지 오브젝트를 생성할 때 생성된 스토리지 오브젝트 를 사용합니다.
    1. 포털 IP 주소 정의 에서 생성된 TPG의 luns 디렉토리로 이동합니다. 예를 들면 다음과 같습니다.
      # iscsi>iqn.iqn.2010-05.com.example.server1:iscsirhel7guest
    2. 램디스크에 첫 번째 LUN을 할당합니다. 예를 들면 다음과 같습니다.
      # create /backstores/ramdisk/ramdisk1
    3. 두 번째 LUN을 블록 디스크에 할당합니다. 예를 들면 다음과 같습니다.
      # create /backstores/block/block1
    4. fileio 디스크에 세 번째 LUN을 할당합니다. 예를 들면 다음과 같습니다.
      # create /backstores/fileio/fileio1
    5. 결과 LUN을 나열합니다.
      /iscsi/iqn.20...csirhel7guest ls
      
      o- tgp1 ............................................................[enabled, auth]
        o- acls...................................................................[0 ACL]
        o- luns..................................................................[3 LUNs]
        | o- lun0......................................................[ramdisk/ramdisk1]
        | o- lun1...............................................[block/block1 (dev/vdb1)]
        | o- lun2................................................[fileio/file1 (foo.img)]
        o- portals.............................................................[1 Portal]
          o- IP-ADDRESS:3260.........................................................[OK]
      
  7. 각 이니시에이터에 대한 ACL 생성

    이니시에이터가 연결할 때 인증을 활성화합니다. 지정된 LUN을 사용하여 지정된 인티터를 지정할 수도 있습니다. 대상 및 이니시에이터에는 고유한 이름이 있습니다. iSCSI 이니시에이터는 IQN을 사용합니다.
    1. 이니시에이터 이름을 사용하여 iSCSI 이니시에이터의 IQN을 찾습니다. 예를 들면 다음과 같습니다.
      # cat /etc/iscsi/initiator2.iscsi
      InitiatorName=create iqn.2010-05.com.example.server1:iscsirhel7guest
      이 IQN은 ACL을 생성하는 데 사용됩니다.
    2. acls 디렉터리로 이동합니다.
    3. 다음 중 하나를 수행하여 ACL을 생성합니다.
      • 매개 변수 없이 create 명령을 실행하여 모든 LUN 및 이니시에이터에 대해 ACLS를 생성합니다.
        # create
      • 특정 LUN 및 이니시에이터에 대한 ACL을 생성하고, iSCSI intiator의 IQN을 지정하는 create 명령을 실행합니다. 예를 들면 다음과 같습니다.
        # create iqn.2010-05.com.example.server1:888
      • 모든 이니시에이터에 단일 사용자 ID와 암호를 사용하도록 커널 대상을 구성합니다.
        # set auth userid=user_ID
        # set auth password=password
        # set attribute authentication=1
        # set attribute generate_node_acls=1
    이 절차를 완료한 후 스토리지 풀을 보호하십시오.
  8. 설정을 저장합니다.

    이전 부팅 설정을 덮어 쓰기하여 구성을 영구적으로 설정합니다.
    # saveconfig
  9. 서비스 활성화

    다음 부팅 시 저장된 설정을 적용하려면 서비스를 활성화합니다.
    # systemctl enable target.service
선택적 절차
iSCSI 기반 스토리지 풀을 생성하기 전에 iSCSI 타겟으로 수행할 수 있는 몇 가지 선택적 프로시저가 있습니다.

절차 13.6. RAID 배열의 논리 볼륨 구성

  1. RAID5 어레이 생성

    RAID5 어레이 생성에 대한 자세한 내용은 Red Hat Enterprise Linux 7 스토리지 관리 가이드 를 참조하십시오.
  2. RAID5 배열에 LVM 논리 볼륨 생성

    RAID5 배열에 LVM 논리 볼륨 생성에 대한 자세한 내용은 Red Hat Enterprise Linux 7 Logical Volume Manager 관리 가이드 를 참조하십시오.

절차 13.7. 검색 기능 테스트

  • 새 iSCSI 장치를 검색할 수 있는지 확인합니다.

    # iscsiadm --mode discovery --type sendtargets --portal server1.example.com
    143.22.16.33:3260,1 iqn.2010-05.com.example.server1:iscsirhel7guest

절차 13.8. 장치 연결 테스트

  1. 새 iSCSI 장치 연결

    새 장치(Waitn.2010-05.com.example.server1:iscsirhel7guest)를 연결하여 장치를 연결할 수 있는지 확인합니다.
    # iscsiadm -d2 -m node --login
    scsiadm: Max file limits 1024 1024
    
    Logging in to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260]
    Login to [iface: default, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260] successful.
    
  2. 장치 분리

    # iscsiadm -d2 -m node --logout
    scsiadm: Max file limits 1024 1024
    
    Logging out of session [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260
    Logout of [sid: 2, target: iqn.2010-05.com.example.server1:iscsirhel7guest, portal: 143.22.16.33,3260] successful.

절차 13.9. iSCSI 스토리지 풀에 libvirt 보안 사용

참고
이 절차는 iSCSI 대상을 생성할user_ID암호를 정의한 경우 필요합니다.
iSCSI 스토리지 풀을 보호하도록 virsh 를 사용하여 사용자 이름 및 암호 매개 변수를 구성할 수 있습니다. 이 설정은 풀을 정의하기 전이나 후에 구성할 수 있지만 인증 설정을 적용하려면 풀을 시작해야 합니다.
  1. libvirt 보안 파일 만들기

    challenge-handshake 인증 프로토콜(CHAP) 사용자 이름을 사용하여 libvirt 시크릿 파일을 만듭니다. 예를 들면 다음과 같습니다.
    <secret ephemeral='no' private='yes'>
        <description>Passphrase for the iSCSI example.com server</description>
        <usage type='iscsi'>
            <target>iscsirhel7secret</target>
        </usage>
    </secret>
  2. 보안 정의

    # virsh secret-define secret.xml
  3. UUID 확인

    # virsh secret-list
    UUID                                  Usage
    --------------------------------------------------------------------------------
    2d7891af-20be-4e5e-af83-190e8a922360  iscsi iscsirhel7secret
  4. UID에 시크릿 할당

    다음 명령을 사용하여 이전 단계의 출력에서 UUID에 시크릿을 할당합니다. 이렇게 하면 CHAP 사용자 이름과 암호가 libvirt 제어된 시크릿 목록에 있습니다.
    # MYSECRET=`printf %s "password123" | base64`
    # virsh secret-set-value 2d7891af-20be-4e5e-af83-190e8a922360 $MYSECRET
  5. 스토리지 풀에 인증 항목 추가

    virsh edit 를 사용하여 스토리지 풀의 XML 파일에서 <source> 항목을 수정하고, 인증 유형,사용자 이름 및 시크릿 사용량 을 지정하여 <auth> 요소를 추가합니다.
    예를 들면 다음과 같습니다.
    <pool type='iscsi'>
      <name>iscsirhel7pool</name>
        <source>
           <host name='192.168.122.1'/>
           <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/>
           <auth type='chap' username='redhat'>
              <secret usage='iscsirhel7secret'/>
           </auth>
        </source>
      <target>
        <path>/dev/disk/by-path</path>
      </target>
    </pool>
    참고
    <auth> 하위 요소는 게스트 XML의 <pool><disk> 요소 내의 다른 위치에 있습니다. <pool> 의 경우 인증은 일부 풀 소스(iSCSI 및 RBD)의 속성이므로 풀 소스를 찾을 위치를 설명하므로 <source> 요소 내에 <auth> 가 지정됩니다. 도메인의 하위 요소인 <disk> 의 경우 iSCSI 또는 RBD 디스크에 대한 인증은 디스크의 속성입니다.
    또한 디스크의 <auth> 하위 요소는 스토리지 풀과 다릅니다.
    <auth username='redhat'>
      <secret type='iscsi' usage='iscsirhel7secret'/>
    </auth>
  6. 변경 사항 활성화

    이러한 변경 사항을 활성화하려면 스토리지 풀을 시작해야 합니다.
    • 스토리지 풀이 아직 시작되지 않은 경우 virsh로 스토리지 풀 생성 단계를 수행하여 스토리지 풀을 정의하고 시작합니다.
    • 풀이 이미 시작된 경우 다음 명령을 입력하여 스토리지 풀을 중지하고 다시 시작합니다.
      # virsh pool-destroy iscsirhel7pool
      # virsh pool-start iscsirhel7pool
매개 변수
다음 표에서는 iSCSI 기반 스토리지 풀을 생성하기 위한 XML 파일, virsh pool-define-as 명령 및 Virtual Machine Manager 애플리케이션에 필요한 매개 변수 목록을 제공합니다.

표 13.5. iSCSI 기반 스토리지 풀 매개변수

설명XMLpool-define-as가상 머신 관리자
스토리지 풀의 유형입니다. <pool type='iscsi'> [type] iscsi iSCSI: iSCSI 대상
스토리지 풀의 이름 <name>name</name> [name] 이름 이름
호스트의 이름입니다.

<source>
  <host name='hostname' />

source-host hostname 호스트 이름
iSCSI IQN.

  device path="iSCSI_IQN" />
</source>

source-dev iSCSI_IQN 소스 IQN
대상을 지정하는 경로입니다. 이는 스토리지 풀에 사용되는 경로입니다.

<target>
  <path>/dev/disk/by-path</path>
</target>

target path_to_pool 대상 경로
(선택 사항) iSCSI 이니시에이터의 IQN입니다. ACL이 특정 이니시에이터로 LUN을 제한하는 경우에만 필요합니다.

<initiator>
  <iqn name='initiator0' />
</initiator>

아래 노트를 참조하십시오. 이니시에이터 IQN
참고
iSCSI 이니시에이터의 IQN은 virsh find-storage-pool-sources-as iscsi 명령을 사용하여 확인할 수 있습니다.
virsh 를 사용하여 스토리지 풀을 생성하는 경우 스토리지 풀이 생성되었는지 계속 확인합니다.
다음은 iSCSI 기반 스토리지 풀의 XML 파일의 예입니다.
<pool type='iscsi'>
  <name>iSCSI_pool</name>
  <source>
    <host name='server1.example.com'/>
    <device path='iqn.2010-05.com.example.server1:iscsirhel7guest'/>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>

다음은 iSCSI 기반 스토리지 풀을 생성하는 명령의 예입니다.
# virsh pool-define-as --name iSCSI_pool --type iscsi --source-host server1.example.com --source-dev iqn.2010-05.com.example.server1:iscsirhel7guest --target /dev/disk/by-path
Pool iSCSI_pool defined
다음 이미지는 가상 머신 XML 구성 가상 머신 관리자Virtual Machine Manager Add a New Storage Pool 대화 상자의 예를 보여줍니다.

그림 13.8. 새 iSCSI 기반 스토리지 풀 예 추가

새 iSCSI 기반 스토리지 풀 예 추가