13.2.3.8. SCSI 장치를 사용하는 vHBA 기반 스토리지 풀
참고
가상 머신 관리자를 사용하여 SCSI 장치를 사용하여 vHBA 기반 스토리지 풀을 생성할 수 없습니다.
권장 사항
NPIV(N_Port ID Virtualization)는 단일 물리 파이버 채널 버스 어댑터(HBA)를 공유할 수 있는 소프트웨어 기술입니다. 이를 통해 여러 게스트가 여러 물리적 호스트의 동일한 스토리지를 볼 수 있으므로 스토리지에 대한 마이그레이션 경로가 쉬워집니다. 따라서 올바른 스토리지 경로가 지정된 경우 스토리지를 생성하거나 복사하기 위해 마이그레이션이 필요하지 않습니다.
가상화에서 가상 호스트 버스 어댑터 또는 vHBA 는 가상 시스템의 논리 단위 번호(LUN)를 제어합니다. 호스트에서 여러 KVM 게스트 간에 하나의 파이버 채널 장치 경로를 공유하려면 각 가상 머신에 대해 vHBA를 생성해야 합니다. 여러 KVM 게스트에서 단일 vHBA를 사용해서는 안 됩니다.
NPIV의 각 vHBA는 부모 HBA와 WWNN (WWNN) 및 WWNN(WWNN) 및 WWPN(W Wide Port Name)에 의해 식별됩니다. 스토리지 경로는 WWNN 및 WWPN 값에 따라 결정됩니다. 상위 HBA는
scsi_host#
또는 WWNN/WWPN 쌍으로 정의할 수 있습니다.
참고
상위 HBA가
scsi_host#
으로 정의되고 하드웨어가 호스트 시스템에 추가되면 scsi_host#
할당이 변경될 수 있습니다. 따라서 WWNN/WWPN 쌍을 사용하여 상위 HBA를 정의하는 것이 좋습니다.
vHBA 구성을 유지하므로 vHBA를 기반으로 libvirt 스토리지 풀을 정의하는 것이 좋습니다.
libvirt 스토리지 풀을 사용하면 다음과 같은 두 가지 주요 이점이 있습니다.
- libvirt 코드는 virsh 명령 출력을 사용하여 LUN의 경로를 쉽게 찾을 수 있습니다.
- 가상 머신 마이그레이션은 대상 머신에서 동일한 vHBA 이름으로 스토리지 풀을 정의하고 시작해야 합니다. 이렇게 하려면 가상 머신의 XML 구성에 vHBA LUN, libvirt 스토리지 풀 및 볼륨 이름을 지정해야 합니다. 예를 들어 13.2.3.8절. “SCSI 장치를 사용하는 vHBA 기반 스토리지 풀” 을 참조하십시오.
참고
vHBA를 만들기 전에 호스트 LUN에서 SAN(Storage array) 측 zoning을 구성하여 게스트 간에 격리를 제공하고 데이터 손상 가능성을 방지하는 것이 좋습니다.
영구 vHBA 구성을 만들려면 먼저 아래 형식을 사용하여 libvirt
'scsi'
스토리지 풀 XML 파일을 만듭니다. 동일한 물리적 HBA에서 스토리지 풀을 사용하는 단일 vHBA를 생성할 때는 시스템의 /dev/disk/by-{path|id|uuid}
위치 중 하나와 같은 <path>
값에 안정적인 위치를 사용하는 것이 좋습니다.
동일한 물리 HBA에서 스토리지 풀을 사용하는 여러 vHBA를 생성하는 경우
<path>
필드의 값은 /dev/
여야 합니다. 그렇지 않으면 스토리지 풀 볼륨은 vHBA 중 하나에만 표시되고 호스트의 장치는 NPIV 구성을 사용하여 여러 게스트에 노출할 수 없습니다.
사전 요구 사항
SCSI 장치로 vHBA 기반 스토리지 풀을 생성하기 전에 vHBA를 생성합니다.
절차 13.10. vHBA 생성
호스트 시스템에서 HBA 검색
호스트 시스템에서 HBA를 찾으려면 virsh nodedev-list --cap vports 명령을 사용합니다.다음 예제에서는 vHBA를 지원하는 두 개의 HBA가 있는 호스트를 보여줍니다.# virsh nodedev-list --cap vports scsi_host3 scsi_host4
HBA의 세부 정보 확인
virsh nodedev-dumpxml HBA_device 명령을 사용하여 HBA의 세부 정보를 확인합니다.# virsh nodedev-dumpxml scsi_host3
명령의 출력에는 vHBA를 생성하는 데 사용되는<name>
,<wwnn>
및<wwpn>
필드가 나열됩니다.<max_vports>
에는 지원되는 최대 vHBA 수가 표시됩니다. 예를 들면 다음과 같습니다.<device> <name>scsi_host3</name> <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3</path> <parent>pci_0000_10_00_0</parent> <capability type='scsi_host'> <host>3</host> <unique_id>0</unique_id> <capability type='fc_host'> <wwnn>20000000c9848140</wwnn> <wwpn>10000000c9848140</wwpn> <fabric_wwn>2002000573de9a81</fabric_wwn> </capability> <capability type='vport_ops'> <max_vports>127</max_vports> <vports>0</vports> </capability> </capability> </device>
이 예에서<max_vports>
값은 HBA 구성에서 사용할 수 있는 총 127개의 가상 포트가 있음을 보여줍니다.<vports>
값은 현재 사용 중인 가상 포트 수를 표시합니다. 이 값은 vHBA를 생성한 후 업데이트됩니다.vHBA 호스트 장치 만들기
vHBA 호스트에 대해 다음 중 하나와 유사한 XML 파일을 만듭니다. 이 예에서 파일 이름은 vhba_host3.xml 입니다.이 예에서는scsi_host3
을 사용하여 상위 vHBA를 설명합니다.# cat vhba_host3.xml <device> <parent>scsi_host3</parent> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
이 예에서는 WWNN/WWPN 쌍을 사용하여 상위 vHBA를 설명합니다.# cat vhba_host3.xml <device> <name>vhba</name> <parent wwnn='20000000c9848140' wwpn='10000000c9848140'/> <capability type='scsi_host'> <capability type='fc_host'> </capability> </capability> </device>
참고WWNN 및 WWPN 값은 절차 13.10. “vHBA 생성” 에 표시된 HBA 세부 정보에 있는 값과 일치해야 합니다.<parent>
필드는 이 vHBA 장치와 연결할 HBA 장치를 지정합니다.<device>
태그의 세부 정보는 다음 단계에서 호스트에 대한 새 vHBA 장치를 만드는 데 사용됩니다.nodedev
XML 형식에 대한 자세한 내용은 libvirt 업스트림 페이지를 참조하십시오.vHBA 호스트 장치에서 새 vHBA 생성
vhba_host3 을 기반으로 vHBA를 생성하려면 virsh nodedev-create 명령을 사용합니다.# virsh nodedev-create vhba_host3.xml Node device scsi_host5 created from vhba_host3.xml
vHBA 확인
virsh nodedev-dumpxml 명령을 사용하여 새 vHBA의 세부 정보(scsi_host5
)를 확인합니다.# virsh nodedev-dumpxml scsi_host5 <device> <name>scsi_host5</name> <path>/sys/devices/pci0000:00/0000:00:04.0/0000:10:00.0/host3/vport-3:0-0/host5</path> <parent>scsi_host3</parent> <capability type='scsi_host'> <host>5</host> <unique_id>2</unique_id> <capability type='fc_host'> <wwnn>5001a4a93526d0a1</wwnn> <wwpn>5001a4ace3ee047d</wwpn> <fabric_wwn>2002000573de9a81</fabric_wwn> </capability> </capability> </device>
vHBA를 확인한 후 스토리지 풀을 정의 하여 스토리지 풀을 계속 생성합니다.
매개 변수
다음 표에서는 vHBA 기반 스토리지 풀을 생성하기 위한 XML 파일, virsh pool-define-as 명령 및 Virtual Machine Manager 애플리케이션에 필요한 매개 변수 목록을 제공합니다.
설명 | XML | pool-define-as |
---|---|---|
스토리지 풀의 유형입니다. | <pool type='scsi'> | scsi |
스토리지 풀의 이름 | <name>name</name> | --adapter-name name |
vHBA의 식별자입니다. 상위 속성은 선택 사항입니다. |
<source> |
[--adapter-parent parent] |
대상을 지정하는 경로입니다. 이는 스토리지 풀에 사용되는 경로입니다. |
<target> | target path_to_pool |
중요
<path>
필드가 /dev/
이면 libvirt 는 볼륨 장치 경로에 고유한 짧은 장치 경로를 생성합니다. 예: /dev/sdc
. 그렇지 않으면 물리적 호스트 경로가 사용됩니다. 예: /dev/disk/by-path/pci-0000:10:00.0-fc-0x500x5006016044602198-lun-0
. 고유한 짧은 장치 경로를 사용하면 여러 스토리지 풀에서 동일한 볼륨을 여러 게스트에 나열할 수 있습니다. 여러 게스트에서 물리적 호스트 경로를 사용하는 경우 중복 장치 유형 경고가 발생할 수 있습니다.
참고
<adapter>
필드에서 parent
속성을 사용하여 다양한 경로에 따라 NPIV LUN을 사용할 수 있는 물리적 HBA 부모를 식별할 수 있습니다. 이 필드 scsi_hostN
는 vports
및 max_vports
속성과 결합하여 상위 ID를 완료합니다. parent
, parent_wwnn
, parent_wwpn
또는 parent_fabric_wwn
속성은 호스트가 동일한 HBA를 재부팅한 후 다양한 보장을 제공합니다.
parent
을 지정하지 않으면 libvirt 에서 NPIV를 지원하는 첫 번째scsi_hostN
어댑터를 사용합니다.parent
만 지정하면 구성에 추가 SCSI 호스트 어댑터가 추가되는 경우 문제가 발생할 수 있습니다.parent_wwnn
또는parent_wwpn
을 지정하면 호스트가 동일한 HBA를 재부팅한 후 사용됩니다.parent_fabric_wwn
을 사용하는 경우, 호스트가scsi_hostN
사용된 와 관계없이 동일한 패브릭의 HBA를 재부팅한 후 선택합니다.
virsh 를 사용하여 스토리지 풀을 생성하는 경우 스토리지 풀이 생성되었는지 계속 확인합니다.
예
다음은 vHBA 기반 스토리지 풀의 XML 파일의 예입니다. 첫 번째 예는 HBA의 유일한 스토리지 풀인 스토리지 풀의 예입니다. 두 번째 예는 단일 vHBA를 사용하고
상위
속성을 사용하여 SCSI 호스트 장치를 식별하는 여러 스토리지 풀 중 하나인 스토리지 풀에 대한 예입니다.
<pool type='scsi'> <name>vhbapool_host3</name> <source> <adapter type='fc_host' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
<pool type='scsi'> <name>vhbapool_host3</name> <source> <adapter type='fc_host' parent='scsi_host3' wwnn='5001a4a93526d0a1' wwpn='5001a4ace3ee047d'/> </source> <target> <path>/dev/disk/by-path</path> </target> </pool>
다음은 vHBA 기반 스토리지 풀을 생성하는 명령의 예입니다.
# virsh pool-define-as vhbapool_host3 scsi --adapter-parent scsi_host3 --adapter-wwnn 5001a4a93526d0a1 --adapter-wwpn 5001a4ace3ee047d --target /dev/disk/by-path
Pool vhbapool_host3 defined
참고
virsh 명령은
parent_wwnn
, parent_wwpn
또는 parent_fabric_wwn
속성을 정의하는 방법을 제공하지 않습니다.
vHBA LUN을 사용하도록 가상 머신 구성
vHBA에 대한 스토리지 풀을 생성한 후 vHBA LUN을 가상 머신 구성에 추가해야 합니다.
- 가상 머신의 XML에 있는 가상 머신에 디스크 볼륨을 생성합니다.
<source>
매개변수에storage pool
및storage volume
을 지정합니다.
다음은 예를 보여줍니다.
<disk type='volume' device='disk'> <driver name='qemu' type='raw'/> <source pool='vhbapool_host3' volume='unit:0:4:0'/> <target dev='hda' bus='ide'/> </disk>
lun
대신 disk
장치를 지정하려면 다음 예제를 참조하십시오.
<disk type='volume' device='lun' sgio='unfiltered'> <driver name='qemu' type='raw'/> <source pool='vhbapool_host3' volume='unit:0:4:0' mode='host'/> <target dev='sda' bus='scsi'/> <shareable /> </disk>
게스트에 SCSI LUN 기반 스토리지를 추가하는 XML 구성 예제는 13.3.6.3절. “게스트에 SCSI LUN 기반 스토리지 추가” 을 참조하십시오.
하드웨어 오류가 발생할 경우 LUN을 성공적으로 다시 연결하도록 하려면
fast_io_fail_tmo
및 dev_loss_tmo
옵션을 편집하는 것이 좋습니다. 자세한 내용은 하드웨어 오류 발생 후 노출된 LUN에 대한 연결을 참조하십시오.