1.  PCI passthrough를 위한 사전 작업

BIOS에서 VT-d 활성화

Kernel에서 VT-d 활성화

kernel명령어에 'intel_iommu=on'을 추가후 grub에 업데이트(CentOS 7.0 기준)

grub 설정파일인 /etc/sysconfig/grub 의 GRUB_CMDLINE_LINUX 항목에  'intel_iommu=on' 및 grub에 업데이트 후 재부팅

[root@localhost ~]# vi /etc/sysconfig/grub

 

 

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us rhgb quiet intel_iommu=on"
GRUB_DISABLE_RECOVERY="true"

 

 

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-229.7.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-229.7.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-8efed03c3e3f4652b2ca66735627f062
Found initrd image: /boot/initramfs-0-rescue-8efed03c3e3f4652b2ca66735627f062.img
done

[root@localhost ~]# reboot

 

2. 가상머신에 장착할 디바이스의 pci 슬롯 확인

[root@localhost ~]#

[root@localhost ~]# lspci | grep -i ql

04:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)

04:00.1 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)

[root@localhost ~]#


3. 확인 한 PCI 슬롯 번호로 nodedev로 host에 등록된 PCI장비의 이름을 확인후 이 이름을 바탕으로 device 정보 확인

(이때 bus, slot, function 번호 확인 => virsh로 가상머신에 device 장착시 필요)

[root@localhost ~]# virsh nodedev-list | grep 04_00_

pci_0000_04_00_0

pci_0000_04_00_1

[root@localhost ~]# virsh nodedev-dumpxml pci_0000_04_00_0
<device>
  <name>pci_0000_04_00_0</name>
  <path>/sys/devices/pci0000:00/0000:00:03.0/0000:04:00.0</path>

  <parent>pci_0000_00_03_0</parent>

:

    <bus>4</bus>
    <slot>0</slot>
    <function>0</function>

    <product id='0x2532'>ISP2532-based 8Gb Fibre Channel to PCI Express HBA</product>

:

  </capability>
</device>


[root@localhost ~]# virsh nodedev-dumpxml pci_0000_04_00_1
<device>
  <name>pci_0000_04_00_1</name>

:

    <domain>0</domain>
    <bus>4</bus>
    <slot>0</slot>
    <function>1</function>

:

    </pci-express>

  </capability>
</device>

[root@localhost ~]#

 

4. 확인한 노드 이름으로 host에서 device 탈착

(Host에 부착되어 있는 nodedev는 가상머신에 장착이 불가능하여 탈착필요)

  # virsh nodedev-detach <DeviceName>

[root@localhost ~]# virsh nodedev-detach pci_0000_04_00_0
Device pci_0000_04_00_0 detached

 

[root@localhost ~]# virsh nodedev-detach pci_0000_04_00_1
Device pci_0000_04_00_1 detached


5. 가상머신에 PCI 장비 장착

(virt-manager 또는 virsh를 이용하는 2가지 방법이 있음)

  가. virt-manager를 이용한 방법

  [Menu] - [View] - [Details] - [Add Hardware]에서 해당 디바이스를 선택후 Finish

 

 

 

  나. virsh을 이용 해당 vm의 XML 파일 직접 수정

  # virsh edit <VM Name> 

[root@localhost ~]# virsh edit win2k12r2-3

:

:

    <hostdev mode='subsystem' type='pci' managed='yes'>

      <source>
        <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
      </source>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <source>
        <address domain='0x0000' bus='0x04' slot='0x00' function='0x1'/>
      </source>
    </hostdev>

 

6. 가상머신에 장착 확인

 

 

 

 

'virtualization' 카테고리의 다른 글

esxi 6 드라이버 업그레이드  (0) 2016.11.30
spice 설정 자료  (0) 2016.02.01
KVM nested virualization  (0) 2016.01.11
kvm 설치 centos  (0) 2015.04.03
CentOS 6, KVM에 guest OS bridge 네트워크 설정법  (0) 2015.04.03

+ Recent posts