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 대상 생성
RuntimeClass 패키지 설치
# yum install targetcli
rootfs 명령 세트를 시작합니다.
# targetcli
스토리지 오브젝트 생성
스토리지 풀을 사용하여 스토리지 오브젝트 3개를 생성합니다.- 블록 스토리지 오브젝트 생성
/backstores/block
디렉터리로 이동합니다.- create 명령을 실행합니다.
# create [block-name][filepath]
예를 들면 다음과 같습니다.# create block1 dev=/dev/sdb1
- fileio 오브젝트 생성
/fileio
디렉토리로 이동합니다.- create 명령을 실행합니다.
# create [fileio-name][image-name] [image-size]
예를 들면 다음과 같습니다.# create fileio1 /foo.img 50M
- ramdisk 오브젝트 생성
/ramdisk
디렉터리로 이동합니다.- create 명령을 실행합니다.
# create [ramdisk-name] [ramdisk-size]
예를 들면 다음과 같습니다.# create ramdisk1 1M
- 이 단계에서 생성된 디스크의 이름을 기록해 둡니다. 나중에 사용하게 될 것입니다.
iSCSI 대상 만들기
/iscsi
디렉터리로 이동합니다.- 다음 두 가지 방법 중 하나로 대상을 생성합니다.
- 매개 변수 없이 create 명령을 실행합니다.iSCSI 정규화된 이름 (IQN)이 자동으로 생성됩니다.
- IQN과 서버를 지정하는 create 명령을 실행합니다. 예를 들면 다음과 같습니다.
# create iqn.2010-05.com.example.server1:iscsirhel7guest
포털 IP 주소 정의
iSCSI를 통해 블록 스토리지를 내보내려면 포털, LUN, 액세스 제어 목록 ACL을 먼저 구성해야 합니다.포털에는 대상이 모니터링하는 IP 주소 및 TCP와 연결할 이니시에이터가 포함됩니다. iSCSI는 포트 3260을 사용합니다. 이 포트는 기본적으로 구성됩니다.포트 3260에 연결하려면 다음을 수행합니다./tpg
디렉토리로 이동합니다.- 다음을 실행합니다.
# portals/ create
이 명령을 수행하면 포트 3260에서 사용 가능한 모든 IP 주소를 수신 대기합니다.포트 3260을 수신할 단일 IP 주소만 사용하려면 명령 끝에 IP 주소를 추가합니다. 예를 들면 다음과 같습니다.# portals/ create 143.22.16.33
LUN을 구성하고 스토리지 오브젝트를 패브릭에 할당
이 단계에서는 스토리지 오브젝트를 생성할 때 생성된 스토리지 오브젝트 를 사용합니다.- 포털 IP 주소 정의 에서 생성된 TPG의
luns
디렉토리로 이동합니다. 예를 들면 다음과 같습니다.# iscsi>iqn.iqn.2010-05.com.example.server1:iscsirhel7guest
- 램디스크에 첫 번째 LUN을 할당합니다. 예를 들면 다음과 같습니다.
# create /backstores/ramdisk/ramdisk1
- 두 번째 LUN을 블록 디스크에 할당합니다. 예를 들면 다음과 같습니다.
# create /backstores/block/block1
- fileio 디스크에 세 번째 LUN을 할당합니다. 예를 들면 다음과 같습니다.
# create /backstores/fileio/fileio1
- 결과 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]
각 이니시에이터에 대한 ACL 생성
이니시에이터가 연결할 때 인증을 활성화합니다. 지정된 LUN을 사용하여 지정된 인티터를 지정할 수도 있습니다. 대상 및 이니시에이터에는 고유한 이름이 있습니다. iSCSI 이니시에이터는 IQN을 사용합니다.- 이니시에이터 이름을 사용하여 iSCSI 이니시에이터의 IQN을 찾습니다. 예를 들면 다음과 같습니다.
# cat /etc/iscsi/initiator2.iscsi InitiatorName=create iqn.2010-05.com.example.server1:iscsirhel7guest
이 IQN은 ACL을 생성하는 데 사용됩니다. acls
디렉터리로 이동합니다.- 다음 중 하나를 수행하여 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
이 절차를 완료한 후 스토리지 풀을 보호하십시오.설정을 저장합니다.
이전 부팅 설정을 덮어 쓰기하여 구성을 영구적으로 설정합니다.# saveconfig
서비스 활성화
다음 부팅 시 저장된 설정을 적용하려면 서비스를 활성화합니다.# systemctl enable target.service
선택적 절차
iSCSI 기반 스토리지 풀을 생성하기 전에 iSCSI 타겟으로 수행할 수 있는 몇 가지 선택적 프로시저가 있습니다.
절차 13.6. RAID 배열의 논리 볼륨 구성
RAID5 어레이 생성
RAID5 어레이 생성에 대한 자세한 내용은 Red Hat Enterprise Linux 7 스토리지 관리 가이드 를 참조하십시오.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. 장치 연결 테스트
새 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.
장치 분리
# 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 를 사용하여 사용자 이름 및 암호 매개 변수를 구성할 수 있습니다. 이 설정은 풀을 정의하기 전이나 후에 구성할 수 있지만 인증 설정을 적용하려면 풀을 시작해야 합니다.
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>
보안 정의
# virsh secret-define secret.xml
UUID 확인
# virsh secret-list UUID Usage -------------------------------------------------------------------------------- 2d7891af-20be-4e5e-af83-190e8a922360 iscsi iscsirhel7secret
UID에 시크릿 할당
다음 명령을 사용하여 이전 단계의 출력에서 UUID에 시크릿을 할당합니다. 이렇게 하면 CHAP 사용자 이름과 암호가 libvirt 제어된 시크릿 목록에 있습니다.# MYSECRET=`printf %s "password123" | base64` # virsh secret-set-value 2d7891af-20be-4e5e-af83-190e8a922360 $MYSECRET
스토리지 풀에 인증 항목 추가
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>
변경 사항 활성화
이러한 변경 사항을 활성화하려면 스토리지 풀을 시작해야 합니다.- 스토리지 풀이 아직 시작되지 않은 경우 virsh로 스토리지 풀 생성 단계를 수행하여 스토리지 풀을 정의하고 시작합니다.
- 풀이 이미 시작된 경우 다음 명령을 입력하여 스토리지 풀을 중지하고 다시 시작합니다.
# virsh pool-destroy iscsirhel7pool # virsh pool-start iscsirhel7pool
매개 변수
다음 표에서는 iSCSI 기반 스토리지 풀을 생성하기 위한 XML 파일, virsh pool-define-as 명령 및 Virtual Machine Manager 애플리케이션에 필요한 매개 변수 목록을 제공합니다.
표 13.5. iSCSI 기반 스토리지 풀 매개변수
설명 | XML | pool-define-as | 가상 머신 관리자 |
---|---|---|---|
스토리지 풀의 유형입니다. | <pool type='iscsi'> | [type] iscsi | iSCSI: iSCSI 대상 |
스토리지 풀의 이름 | <name>name</name> | [name] 이름 | 이름 |
호스트의 이름입니다. |
<source> | source-host hostname | 호스트 이름 |
iSCSI IQN. |
device path="iSCSI_IQN" /> | source-dev iSCSI_IQN | 소스 IQN |
대상을 지정하는 경로입니다. 이는 스토리지 풀에 사용되는 경로입니다. |
<target> | target path_to_pool | 대상 경로 |
(선택 사항) iSCSI 이니시에이터의 IQN입니다. ACL이 특정 이니시에이터로 LUN을 제한하는 경우에만 필요합니다. |
<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 기반 스토리지 풀 예 추가