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에 업데이트 후 재부팅
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 |