13.2.3.5. iSCSI 기반 스토리지 풀
권장 사항
사전 요구 사항
절차 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
선택적 절차
절차 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 보안 사용
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
매개 변수
설명 | 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 |
예
<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>
# 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
그림 13.8. 새 iSCSI 기반 스토리지 풀 예 추가