Red Hat Training

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

23.17. devices

이 XML 요소 세트는 모두 게스트 가상 머신 도메인에 제공된 장치를 설명하는 데 사용됩니다. 아래 모든 장치는 주요 <장치> 요소의 자식으로 표시됩니다.
다음과 같은 가상 장치가 지원됩니다.
  • virtio-scsi-pci - PCI 버스 스토리지 장치
  • virtio-blk-pci - PCI 버스 스토리지 장치
  • virtio-net-pci - virtio-net이라고도 하는 PCI 버스 네트워크 장치
  • virtio-serial-pci - PCI 버스 입력 장치
  • virtio-balloon-pci - PCI 버스 메모리 balloon 장치
  • virtio-rng-pci - PCI 버스 가상 난수 생성기 장치
중요
벡터 수가 32보다 높은 값으로 설정된 virtio 장치가 생성되는 경우 장치는 Red Hat Enterprise Linux 6에서 0 값으로 설정된 것처럼 작동하지만 Enterprise Linux 7에서는 작동하지 않습니다. 결과 벡터 설정 불일치로 인해 두 플랫폼의 virtio 장치의 벡터 수가 33 이상으로 설정된 경우 마이그레이션 오류가 발생합니다. 따라서 벡터 값을 32보다 크게 설정하지 않는 것이 좋습니다. virtio-balloon-pcivirtio-rng-pci 를 제외한 모든 virtio 장치는 벡터 인수를 허용합니다.

그림 23.26. 장치 - 하위 요소


  ...
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
  </devices>
  ...

<에뮬레이터 요소의 내용은 장치 모델 에뮬레이터> 바이너리에 대한 정규화된 경로를 지정합니다. 기능 XML은 각 특정 도메인 유형 또는 아키텍처 조합에 사용할 권장 기본 에뮬레이터를 지정합니다.

23.17.1. 하드 드라이브, Floppy 디스크 및 CD-ROM

도메인 XML의 이 섹션에서는 디스크 요소에 지정된 하드 디스크, 하드 디스크, CD-ROM 또는 반가상화 드라이버를 포함하여 <디스크> 처럼 보이는 모든 장치를 지정합니다.

그림 23.27. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예


    <disk type='network'>
      <driver name="qemu" type="raw" io="threads" ioeventfd="on" event_idx="off"/>
      <source protocol="sheepdog" name="image_name">
        <host name="hostname" port="7000"/>
      </source>
      <target dev="hdb" bus="ide"/>
      <boot order='1'/>
      <transient/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>

그림 23.28. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 2


    <disk type='network'>
      <driver name="qemu" type="raw"/>
      <source protocol="rbd" name="image_name2">
        <host name="hostname" port="7000"/>
      </source>
      <target dev="hdd" bus="ide"/>
      <auth username='myuser'>
        <secret type='ceph' usage='mypassid'/>
      </auth>
    </disk>

그림 23.29. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 3


    <disk type='block' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>
    <disk type='network' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source protocol="http" name="url_path">
        <host name="hostname" port="80"/>
      </source>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>

그림 23.30. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 4


    <disk type='network' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source protocol="https" name="url_path">
        <host name="hostname" port="443"/>
      </source>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>
    <disk type='network' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source protocol="ftp" name="url_path">
        <host name="hostname" port="21"/>
      </source>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>

그림 23.31. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 5


    <disk type='network' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source protocol="ftps" name="url_path">
        <host name="hostname" port="990"/>
      </source>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>
    <disk type='network' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source protocol="tftp" name="url_path">
        <host name="hostname" port="69"/>
      </source>
      <target dev='hdc' bus='ide' tray='open'/>
      <readonly/>
    </disk>
    <disk type='block' device='lun'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sda'/>
      <target dev='sda' bus='scsi'/>
      <address type='drive' controller='0' bus='0' target='3' unit='0'/>
    </disk>

그림 23.32. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 6


    <disk type='block' device='disk'>
      <driver name='qemu' type='raw'/>
      <source dev='/dev/sda'/>
      <geometry cyls='16383' heads='16' secs='63' trans='lba'/>
      <blockio logical_block_size='512' physical_block_size='4096'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='volume' device='disk'>
      <driver name='qemu' type='raw'/>
      <source pool='blk-pool0' volume='blk-pool0-vol0'/>
      <target dev='hda' bus='ide'/>
    </disk>
    <disk type='network' device='disk'>
      <driver name='qemu' type='raw'/>
      <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/2'>
        <host name='example.com' port='3260'/>
      </source>
      <auth username='myuser'>
        <secret type='chap' usage='libvirtiscsi'/>
      </auth>
      <target dev='vda' bus='virtio'/>
    </disk>

그림 23.33. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 7


    <disk type='network' device='lun'>
      <driver name='qemu' type='raw'/>
      <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool/1'>
       iqn.2013-07.com.example:iscsi-pool
        <host name='example.com' port='3260'/>
      </source>
      <auth username='myuser'>
        <secret type='chap' usage='libvirtiscsi'/>
      </auth>
      <target dev='sda' bus='scsi'/>
    </disk>
    <disk type='volume' device='disk'>
      <driver name='qemu' type='raw'/>
      <source pool='iscsi-pool' volume='unit:0:0:1' mode='host'/>
      <auth username='myuser'>
        <secret type='chap' usage='libvirtiscsi'/>
      </auth>
      <target dev='vda' bus='virtio'/>
    </disk>

그림 23.34. 장치 - 하드 드라이브, 플로피 디스크, CD-ROM 예 8


    <disk type='volume' device='disk'>
      <driver name='qemu' type='raw'/>
      <source pool='iscsi-pool' volume='unit:0:0:2' mode='direct'/>
      <auth username='myuser'>
        <secret type='chap' usage='libvirtiscsi'/>
      </auth>
      <target dev='vda' bus='virtio'/>
    </disk>
     <disk type='file' device='disk'>
      <driver name='qemu' type='raw' cache='none'/>
      <source file='/tmp/test.img' startupPolicy='optional'/>
      <target dev='sdb' bus='scsi'/>
      <readonly/>
    </disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw' discard='unmap'/>
      <source file='/var/lib/libvirt/images/discard1.img'/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
    </disk>
  </devices>
  ...

23.17.1.1. 디스크 요소

<disk> 요소는 디스크를 설명하는 기본 컨테이너입니다. 특성 유형은 <disk> 요소와 함께 사용할 수 있습니다. 다음과 같은 유형이 허용됩니다.
  • file
  • 블록
  • dir
  • network
자세한 내용은 libvirt 업스트림 페이지를 참조하십시오.

23.17.1.2. 소스 요소

디스크 소스를 나타냅니다. 디스크 소스는 다음과 같이 디스크 유형 특성에 따라 다릅니다.
  • <file> 속성은 디스크가 있는 파일의 정규화된 경로를 지정합니다.
  • <block> - dev 속성은 디스크로 사용되는 호스트 장치에 대한 정규화된 경로를 지정합니다.
  • <dir> - dir 특성은 디스크로 사용되는 디렉터리의 정규화된 경로를 지정합니다.
  • <Network> - protocol 속성은 요청된 이미지에 액세스하는 데 사용되는 프로토콜을 지정합니다. 가능한 값은 nbd,isci,rbd,heepdoggluster 입니다.
    • protocol 속성이 rbd, Hepdog, 또는 gluster 인 경우 추가 속성이 필수입니다. 이 속성은 사용할 볼륨과 이미지를 지정합니다.
    • protocol 속성이 nbd 인 경우 name 속성은 선택 사항입니다.
    • protocol 속성이 ci인 경우 name 속성에는 대상의 이름에서 슬래시로 구분된 논리 단위 번호가 포함될 수 있습니다. 예:Consumern.2013-07.com.example:iscsi-pool/1. 지정하지 않으면 기본 LUN이 0입니다.
  • <볼륨> - 기본 디스크 소스는 볼륨 특성으로 표시됩니다.
    • <pool> - 디스크 소스가 상주하는 스토리지 풀의 이름( libvirt)입니다.
    • <volume> - 디스크 소스로 사용되는 스토리지 볼륨( libvirt)의 이름입니다.
      volume 속성의 값은 virsh vol-list [pool-name]의 Name 열에서 출력입니다.
디스크 유형이 네트워크인 경우 소스에 는 연결할 호스트 물리적 시스템을 지정하는 데 사용되는 호스트 하위 요소(예: type='dir'type='network' )가 하나 이상 있을 수 있습니다. CD-ROM 또는 플로피(장치 속성)를 나타내는 파일 디스크 유형의 경우 소스 파일에 액세스할 수 없는 경우 디스크로 수행할 작업을 정의할 수 있습니다. 이 작업은 startupPolicy 특성을 다음 값 중 하나로 설정하여 수행됩니다.
  • 어떠한 이유로든 누락된 경우 필수 로 인해 오류가 발생합니다. 이 설정은 기본 설정입니다.
  • 필수 조건은 부팅 시 누락된 경우 실패하거나 마이그레이션, 복원 또는 복원이 누락된 경우 삭제됩니다.
  • 모든 시작 시도에서 누락된 경우 선택 사항이 감소합니다.

23.17.1.3. mirror 요소

하이퍼바이저가 BlockCopy 작업을 시작한 경우, 여기서 특성 파일의 <미러> 위치는 결국 소스와 동일한 내용을 가지며, 파일 형식(소스의 형식과 다를 수 있음)이 있습니다. ready 속성이 있는 경우 디스크가 피벗할 준비가 된 것으로 알려져 있습니다. 그러지 않으면 디스크가 계속 복사될 수 있습니다. 현재 이 요소는 출력에서만 유효하며 입력 시 무시됩니다.

23.17.1.4. 대상 요소

<target> 요소는 게스트 가상 머신 운영 체제에 디스크가 노출되는 버스 또는 장치를 제어합니다. dev 속성은 논리 장치 이름을 나타냅니다. 지정된 실제 장치 이름은 게스트 가상 머신 운영 체제의 장치 이름에 매핑되지 않습니다. 선택 사항인 bus 속성은 에뮬레이션할 디스크 장치의 유형을 지정합니다. 가능한 값은 드라이버별로이며 일반적인 값은 ide,scsi,virtio,kvm,usb 또는 sata 입니다. 생략하면 장치 이름 스타일에서 버스 유형을 유추합니다. 예를 들어 'sda' 라는 장치는 일반적으로 SCSI 버스를 사용하여 내보냅니다. 선택적 특성 트레이 는 이동식 디스크(예: CD-ROM 또는 Floppy 디스크)의 트레이스 상태를 나타내며 이 값은 열리 거나 닫을 수 있습니다. 기본 설정은 닫힙니다.

23.17.1.5. iotune 요소

선택적 <iotune> 요소는 추가 장치별 I/O 튜닝을 제공할 수 있으며, 각 장치에 대해 다를 수 있는 값을 제공합니다(이 값은 도메인에 전역적으로 적용되는 blkiotune 요소에 따라 다릅니다). 이 요소에는 다음과 같은 선택적 하위 요소(값이 0 으로 지정되거나 지정되지 않은 모든 하위 요소)가 제한이 없습니다.
  • <total_bytes_sec> - 초당 총 처리량 제한(바이트 단위)입니다. 이 요소는 <read_bytes_sec> 또는 <write_bytes_sec> 에는 사용할 수 없습니다.
  • <read_bytes_sec> - 초당 읽기 처리량 제한(바이트)입니다.
  • <write_bytes_sec> - 초당 쓰기 처리량 제한(바이트)입니다.
  • <total_iops_sec> - 초당 총 I/O 작업 수입니다. 이 요소는 <read_iops_sec> 또는 <write_iops_sec> 에는 사용할 수 없습니다.
  • <read_iops_sec> - 초당 읽기 I/O 작업.
  • <write_iops_sec> - 초당 쓰기 I/O 작업.

23.17.1.6. 드라이버 요소

선택적 <드라이버> 요소를 사용하면 디스크를 제공하는 데 사용되는 하이퍼바이저 드라이버와 관련된 추가 세부 정보를 지정할 수 있습니다. 다음 옵션을 사용할 수 있습니다.
  • 하이퍼바이저가 여러 백엔드 드라이버를 지원하는 경우 name 속성은 기본 백엔드 드라이버 이름을 선택하는 반면, 선택 사항인 type 속성은 하위 유형을 제공합니다.
  • 선택적 cache 속성은 캐시 메커니즘을 제어합니다. 가능한 값은 기본값,none,writethrough,writeback,directsync ( writethrough 와 유사함)이며 안전하지 않은 호스트 물리적 머신 페이지 캐시를 바이패스합니다 (호스트 물리적 머신은 모든 디스크 I/O를 캐시하고 게스트 가상 머신의 동기화 요청은 무시)
  • 선택적 error_policy 속성은 하이퍼바이저가 디스크 읽기 또는 쓰기 오류에서 작동하는 방식을 제어합니다. 가능한 값은 stop,report,ignore, enospace 입니다. error_policy 의 기본 설정은 report 입니다. 읽기 오류에 대한 동작만 제어하는 선택적 rerror_policy 도 있습니다. rerror_policy 가 제공되지 않으면 error_policy 가 읽기 및 쓰기 오류에 모두 사용됩니다. rerror_policy 가 지정된 경우 error_policy 에서 읽기 오류가 발생합니다. 또한 enospace 는 읽기 오류에 대한 올바른 정책이 아니므로 error_policyenospace 로 설정되어 있고 rerror_policy 가 지정되지 않은 경우 읽기 오류 기본 설정인 보고서가 사용됩니다.
  • 선택적 io 속성은 I/O의 특정 정책을 제어합니다. kvm 게스트 가상 머신은 스레드네이티브 를 지원합니다. 선택적 ioeventfd 속성을 사용하면 virtio 디스크 장치에 대한 도메인 I/O 비동기 처리를 설정할 수 있습니다. 기본값은 하이퍼바이저에 따라 결정됩니다. 허용되는 값은 설정 및 해제 입니다. 이를 활성화하면 별도의 스레드가 I/O를 처리하는 동안 게스트 가상 머신을 실행할 수 있습니다. 일반적으로 I/O 중 높은 시스템 CPU 사용률이 발생하는 게스트 가상 시스템은 이러한 이점을 활용할 수 있습니다. 반면 과부하된 호스트 물리적 머신은 게스트 가상 머신 I/O 대기 시간을 늘릴 수 있습니다. 그러나 기본 설정은 변경하지 않고 하이퍼바이저에서 설정을 결정하는 것이 좋습니다.
    참고
    ioeventfd 속성은 디스크 XML 섹션의 <드라이버> 요소와 장치 XML 섹션의 <드라이버> 요소에 포함되어 있습니다. 이전 경우 virtIO 디스크 및 후자의 경우 SCSI 디스크에 영향을 미칩니다.
  • 선택적 event_idx 속성은 장치 이벤트 처리의 일부 측면을 제어하며 거나 도록 설정할 수 있습니다. on 으로 설정하면 인터럽트 수를 줄이고 게스트 가상 머신에 대해 종료됩니다. 기본값은 하이퍼바이저에 따라 결정되며 기본 설정은 입니다. 이 동작이 필요하지 않은 경우 기능을 강제로 설정합니다. 그러나 기본 설정을 변경하지 않고 하이퍼바이저에서 설정을 지정하는 것이 좋습니다.
  • 선택 사항인 copy_on_read 속성은 읽기 백업 파일을 이미지 파일에 복사할지 여부를 제어합니다. 허용되는 값은 on 또는 <off> 일 수 있습니다.copy-on-read 는 동일한 백업 파일 섹터에 반복적으로 액세스하지 않으며 백업 파일이 느린 네트워크를 통해 있을 때 유용합니다. 기본적으로 copy-on-readoff 입니다.
  • discard='unmap' 을 설정하여 삭제 지원을 활성화할 수 있습니다. 동일한 행을 disable='ignore'로 교체하여 비활성화할 수 있습니다. discard='ignore' 는 기본 설정입니다.

23.17.1.7. 추가 장치 요소

다음 속성은 장치 요소 내에서 사용할 수 있습니다.
  • <boot> - 디스크를 부팅할 수 있도록 지정합니다.

    추가 부팅 값

    • <order> - 부팅 시퀀스 중에 장치를 시도할 순서를 결정합니다.
    • <장치별> 부팅 요소는 BIOS 부트 로더 섹션의 일반 부팅 요소와 함께 사용할 수 없습니다.
  • <Encryption> - 볼륨의 암호화 방법을 지정합니다.
  • <ReadOnly> - 게스트 가상 머신에서 장치를 수정할 수 없음을 나타냅니다. 이 설정은 <device='cdrom'> 을 가진 디스크의 기본값입니다.
  • <공유할 수 있는> 경우 장치를 도메인 간에 공유할 것으로 예상됩니다(하이퍼 바이저와 운영 체제가 지원하는 경우). shareable 을 사용하는 경우 해당 장치에 cache='no' 를 사용해야 합니다.
  • <transient> - 게스트 가상 머신이 종료될 때 장치 콘텐츠에 대한 변경 사항을 자동으로 되돌려야 함을 나타냅니다. 일부 하이퍼바이저에서 디스크를 일시적으로 표시하면 도메인이 마이그레이션 또는 스냅샷에 참여하지 않습니다.
  • <serial> - 게스트 가상 머신의 하드 드라이브의 일련 번호를 지정합니다. 예를 들어 <직렬>WD-WMAP9A966149</직렬>.
  • <WW> N - 가상 하드 디스크 또는 CD-ROM 드라이브의 WWN( World Wide Name)을 지정합니다. 16진수 16진수로 구성되어야 합니다.
  • <vendor> - 가상 하드 디스크 또는 CD-ROM 장치의 벤더를 지정합니다. 인쇄 가능한 문자가 8자 이상이어야 합니다.
  • <product> - 가상 하드 디스크 또는 CD-ROM 장치의 제품을 지정합니다. 16 인쇄 가능 문자를 초과해서는 안 됩니다.
  • <host> - 다음 특성을 지원합니다.
    • name - 호스트 이름을 지정합니다.
    • port - 포트 번호를 지정합니다.
    • transport - 전송 유형을 지정합니다.
    • socket - 소켓의 경로를 지정합니다.
    이 요소의 의미는 다음과 같이 프로토콜 특성에 따라 달라집니다. 프로토콜을 기반으로 하는 추가 호스트 속성

    프로토콜을 기반으로 하는 추가 호스트 속성

    • NBD - nbd -server 를 실행하는 서버를 지정하고 하나의 호스트 물리적 시스템에 대해서만 사용할 수 있습니다. 이 protcol의 기본 포트는 64 439 입니다.
    • RBD - RBD 유형의 서버를 모니터링하며 하나 이상의 호스트 물리적 시스템에 사용할 수 있습니다.
    • halfepdog - 서버 중 하나를 지정합니다 (기본값은 localhost:7000)와 함께 사용할 수 있는 호스트 물리적 시스템 중 하나 이상에서 사용할 수 있습니다.
    • Gluster - pxe 데몬을 실행하는 서버를 지정하고 하나의 호스트 물리적 시스템에만 사용할 수 있습니다. 전송 특성에 유효한 값은 tcp, rdma또는 unix 입니다. 지정하지 않으면 tcp 로 가정합니다. 전송이 unix 인 경우 socket 속성은 unix 소켓의 경로를 지정합니다.
  • <address> - 지정된 컨트롤러 슬롯에 디스크를 연결합니다. 실제 <컨트롤러> 장치는 을 추측할 수 있지만 명시적으로 지정할 수도 있습니다. type 속성은 필수이며 일반적으로 pci 또는 drive 입니다. pci 컨트롤러의 경우 버스,슬롯함수에 대한 추가 속성이 있어야 하며 선택적 domain 및 multifunction . multifunction 기본값이 있어야 합니다. 드라이브 컨트롤러의 경우 추가 특성 컨트롤러,버스,대상장치를 사용할 수 있으며 각각 기본 설정 0.
  • auth - 소스에 액세스하는 데 필요한 인증 자격 증명을 제공합니다. 여기에는 인증 중에 사용할 사용자 이름을 식별하는 필수 속성 사용자 이름 및 필수 특성 유형이 있는 하위 요소 시크릿 이 포함되어 있습니다.
  • geometry - geometry 설정을 재정의하는 기능을 제공합니다. 이는 주로 S390 DASD-디스크 또는 이전 MacOS-disks에 유용합니다. 다음과 같은 매개 변수를 사용할 수 있습니다.
    • Cyls - 실린더 수를 지정합니다.
    • heads - 헤드 수를 지정합니다.
    • Subjects - 트랙당 섹터 수를 지정합니다.
    • trans - BIOS-Translation-Modes를 지정하고 다음 값을 가질 수 있습니다. none,lba 또는 auto.
  • blockio - 아래 나열된 블록 장치 속성을 사용하여 블록 장치를 재정의할 수 있습니다.

    Blockio 옵션

    • logical_block_size - 게스트 가상 머신 운영 체제에 보고하고 디스크 I/O의 최소 단위를 설명합니다.
    • physical_block_size - 게스트 가상 머신 운영 체제에 보고하고 디스크 데이터 정렬과 관련이 있을 수 있는 디스크의 하드웨어 섹터 크기를 설명합니다.