14.8. IBM Z의 가상 머신에 DASD 장치 연결
vfio-ccw
기능을 사용하면 IBM Z 호스트의 VM(가상 머신)에 중재된 장치로 직접 액세스 스토리지 장치(DASD)를 할당할 수 있습니다. 예를 들어 VM이 z/OS 데이터 집합에 액세스하거나 할당된 DASD를 z/OS 시스템에 제공할 수 있습니다.
사전 요구 사항
- FICON 프로토콜에서 지원되는 IBM Z 하드웨어 아키텍처가 있는 시스템이 있습니다.
- Linux 운영 체제의 대상 VM이 있습니다.
driverctl 패키지가 설치되어 있습니다.
# dnf install driverctl
필요한
vfio
커널 모듈이 호스트에 로드되었습니다.# lsmod | grep vfio
이 명령의 출력에는 다음 모듈이 포함되어야 합니다.
-
vfio_ccw
-
vfio_mdev
-
vfio_iommu_type1
-
VM에서 독점적으로 사용할 수 있는 예비 DASD 장치가 있으며 장치의 식별자를 알고 있습니다.
다음 절차에서는 예제로
0.0.002c
를 사용합니다. 명령을 수행할 때0.0.002c
를 DASD 장치의 식별자로 바꿉니다.
프로세스
DASD 장치의 하위 채널 식별자를 가져옵니다.
# lscss -d 0.0.002c Device Subchan. DevType CU Type Use PIM PAM POM CHPIDs ---------------------------------------------------------------------- 0.0.002c 0.0.29a8 3390/0c 3990/e9 yes f0 f0 ff 02111221 00000000
이 예에서 서브채널 식별자는
0.0.29a8
로 감지됩니다. 이 절차의 다음 명령에서0.0.29a8
을 장치의 감지된 하위 채널 식별자로 바꿉니다.이전 단계의
lscss
명령에서 헤더 출력과 장치 정보만 표시하는 경우 다음 단계를 수행합니다.cio_ignore
목록에서 장치를 제거합니다.# cio_ignore -r 0.0.002c
게스트 OS에서 VM 의 커널 명령줄을 편집하고, 아직 없는 경우
cio_ignore=
로 시작하는 줄에!
라는 장치 식별자를 추가합니다.cio_ignore=all,!condev,!0.0.002c
- 호스트에서 1단계를 반복하여 하위 채널 식별자를 가져옵니다.
하위 채널을
vfio_ccw
패스스루 드라이버에 바인딩합니다.# driverctl -b css set-override 0.0.29a8 vfio_ccw
참고이렇게 하면 0.0.29a8 하위 채널을
vfio_ccw
에 영구적으로 바인딩하므로 호스트에서 DASD를 사용할 수 없습니다. 호스트에서 장치를 사용해야 하는 경우 먼저 'vfio_ccw'에 자동 바인딩을 제거하고 하위 채널을 기본 드라이버에 다시 바인딩해야 합니다.# driverctl -bss unset-override 0.0.29a8
DASD 중재 장치를 정의하고 시작합니다.
# cat nodedev.xml <device> <parent>css_0_0_29a8</parent> <capability type="mdev"> <type id="vfio_ccw-io"/> </capability> </device> # virsh nodedev-define nodedev.xml Node device 'mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8' defined from 'nodedev.xml' # virsh nodedev-start mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 Device mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 started
- VM이 실행 중인 경우 종료합니다.
이전에 정의한 장치의 UUID를 표시하고 다음 단계를 위해 저장합니다.
# virsh nodedev-dumpxml mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 <device> <name>mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8</name> <parent>css_0_0_29a8</parent> <capability type='mdev'> <type id='vfio_ccw-io'/> <uuid>30820a6f-b1a5-4503-91ca-0c10ba12345a</uuid> <iommuGroup number='0'/> <attr name='assign_adapter' value='0x02'/> <attr name='assign_domain' value='0x002b'/> </capability> </device>
중앙 집중식 장치를 VM에 연결합니다. 이렇게 하려면
virsh edit
유틸리티를 사용하여 VM의 XML 구성을 편집하고 다음 섹션을 XML에 추가하고uuid
값을 이전 단계에서 가져온 UUID로 바꿉니다.<hostdev mode='subsystem' type='mdev' model='vfio-ccw'> <source> <address uuid="30820a6f-b1a5-4503-91ca-0c10ba12345a"/> </source> </hostdev>
선택 사항: 중앙 집중식 장치가 호스트 부팅 시 자동으로 시작되도록 구성합니다.
# virsh nodedev-autostart mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8
검증
미디어 장치가 올바르게 구성되었는지 확인합니다.
# virsh nodedev-info mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 Name: mdev_30820a6f_b1a5_4503_91ca_0c10ba12345a_0_0_29a8 Parent: css_0_0_0121 Active: yes Persistent: yes Autostart: yes
libvirt
가 중재된 DASD 장치에 할당한 식별자를 가져옵니다. 이렇게 하려면 VM의 XML 구성을 표시하고vfio-ccw
장치를 찾습니다.# virsh dumpxml vm-name <domain> [...] <hostdev mode='subsystem' type='mdev' managed='no' model='vfio-ccw'> <source> <address uuid='10620d2f-ed4d-437b-8aff-beda461541f9'/> </source> <alias name='hostdev0'/> <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0009'/> </hostdev> [...] </domain>
이 예에서 장치의 할당된 식별자는
0.0.0009
입니다.- VM을 시작하고 게스트 OS에 로그인합니다.
게스트 OS에서 DASD 장치가 나열되는지 확인합니다. 예를 들면 다음과 같습니다.
# lscss | grep 0.0.0009 0.0.0009 0.0.0007 3390/0c 3990/e9 f0 f0 ff 12212231 00000000
게스트 OS에서 장치를 온라인에 설정합니다. 예를 들면 다음과 같습니다.
# chccwdev -e 0.0009 Setting device 0.0.0009 online Done