Red Hat Virtualization 4.0 SR-IOV 를구현하기위한하드웨어고려사항 Red Hat Virtualization 에서 SR-IOV 를구현하기위한하드웨어고려사항 Red Hat Virtualization 문서화팀 Red Hat
Red Hat Virtualization 4.0 SR-IOV 를구현하기위한하드웨어고려사항 Red Hat Virtualization 에서 SR-IOV 를구현하기위한하드웨어고려사항 Red Hat Virtualization 문서화팀 Red Hat Customer Content Services rhev-docs@redhat.com
법적공지 Copyright 2016 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux is the registered trademark of Linus Torvalds in the United States and other countries. Java is a registered trademark of Oracle and/or its affiliates. XFS is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project. The OpenStack Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community. All other trademarks are the property of their respective owners. 초록 Red Hat Enterprise Linux 에서 SR-IOV 를구현하고 Red Hat Virtualization 에서장치를할당하는데필요한하드웨어고려사항가이드입니다.
차례 차례. 1. 소개........................................................................................... 2. 1.1. SR-IOV 를구현하기위한하드웨어고려사항요약. 2. 장치..... 할당.... 시.. 필요한...... 추가적인........ 하드웨어....... 고려.... 사항....................................................... 2. 2.1. 장치할당시하드웨어고려사항요약 2 3 1
Red Hat Virtualization 4.0 SR-IOV를구현하기위한하드웨어고려사항 1. 소개 SR-IOV(Single Root I/O Virtualization) 는단일 PCI Express (PCIe) 끝점이여러개별장치로사용될수있게해주는하드웨어레퍼런스입니다. 이를위해두개의 PCIe 기능인물리적기능 (PF) 과가상기능 (VF) 을도입합니다. PF 는일반적인 PCIe 기능이며여기에는 SR-IOV 기능, 데이터이동과같은 PCIe 장치의완전한설정및제어등의기능이포함됩니다. 각 PCIe 장치는 PF 를한개에서여덟개까지사용할수있습니다. VF 는경량 PCIe 기능이며데이터이동에필요한리소스와최소한의설정리소스세트를포함합니다. 각 PF 에여러개의 VF 를생성할수있으며각 PF 는다른수의 VF 를지원할수있습니다. PCIe 장치공급업체에따라허용되는총 VF 개수가다르며장치마다다릅니다. PCIe 사양으로더많은수의 VF 를지원하려면 Alternative Routing ID Interpretation (ARI) 을구현하여 PCIe 헤더에있는장치번호필드를다시환산해서 8 개가넘는 VF 를사용할수있게해줍니다. 이러한환산은 PCIe 장치와이장치의바로위 (upstream) 에있는상위포트 (ARI 를지원하는 root 포트또는스위치 ) 모두에의존합니다. 시스템펌웨어 (BIOS or UEFI) 는 PCIe 토폴로지를위해메모리, I/O 포트애퍼처 (aperture), PCIe 버스번호범위등과같은리소스를할당합니다. 펌웨어가 SR-IOV 를지원및활성화해야리소스를충분히할당할수있습니다. 1.1. SR-IOV 를구현하기위한하드웨어고려사항요약 펌웨어 (BIOS or UEFI) 가 SR-IOV 를지원해야합니다. 기본적으로확장기능이활성화되어있는지확인합니다. 활성화되어있지않은경우수동으로활성화합니다. 이는가상화확장기능 (VT-d or AMD-Vi) 을활성화하는방법과비슷합니다. 보다자세한내용은공급업체사용설명서를참조하십시오. Root 포트또는 PCIe 장치의바로업스트림에있는상위포트 ( 예 : PCIe 스위치 ) 가 ARI 를지원해야합니다. PCIe 장치가 SR-IOV 를지원해야합니다. 하드웨어가이러한요구사항을충족하는지확인하기위해공급업체사양및데이터시트를참조하시기바랍니다. lspci -v 명령을사용하여시스템에이미설치되어있는 PCI 장치에대한정보를표시합니다. 2. 장치할당시필요한추가적인하드웨어고려사항 장치할당을통해가상게스트를 PCIe 장치에직접할당할수있으며, 그결과해당게스트에게완전한액세스를주고네이티브에가까운 (near-native) 성능을제공합니다. 가상게스트를 SR-IOV 와함께구현하면 VF 에직접연결됩니다. 이를통해다수의가상게스트를단일 PCIe 장치에있는 VF 에직접할당할수있습니다. 가상머신을 PCIe 장치에직접할당하기위해 SR-IOV 가활성화되어있지않아도되며장치할당이 VF 를생성하는유일한애플리케이션도아니지만, 이두가지기능은상호보완관계에있으며이를함께사용하려면추가적인하드웨어고려사항이있습니다. CPU 및펌웨어가 I/O Memory Management Unit(IOMMU) 을지원해야장치를할당할수있습니다. IOMMU 는 I/O Virtual Addresses(IOVA) 와물리적인메모리주소사이에서변환을합니다. 이를통해가상게스트가물리적주소로장치를프로그래밍하면 IOMMU 가이주소를호스트의물리적인주소로변환합니다. 2
1. 소개 IOMMU 그룹이란시스템내의다른모든장치에서분리할수있는장치의모음입니다. IOMMU 그룹은시스템내의다른모든 IOMMU 그룹으로부터분리되며 IOMMU 세분성도있는가장작은장치의모음을말합니다. 이를통해 IOMMU 는 IOMMU 그룹외에있으며 IOMMU 의제어를벗어난장치간의직접메모리액세스 (DMA) 를제한하면서 IOMMU 그룹과주고받는통신을구별할수있습니다. 장치할당을하려면반드시가상게스트와 PCIe 장치의 VF 사이의통신을분리해야합니다. PCIe 및서버사양에정의되어있는액세스제어서비스 (ACS) 기능은 IOMMU 그룹내에서분리를유지하기위한하드웨어표준입니다. 네이티브 ACS 가없는경우, 또는이기능이탑재되어있지않다는것을하드웨어공급업체가명시하지않은경우, IOMMU 그룹내의다기능 (multifunction) 장치중하나로인해 IOMMU 의보호를벗어난상태로발생하는기능간의 peer-to-peer DMA 가공개되어서그결과 IOMMU 그룹이확장되어제대로분리되지않은기능이이그룹에포함되게되는리스크가발생합니다. 서버의 root 포트에설치된장치가그룹화되지않도록하려면이 root 포트에도네이티브 ACS 지원이되는것이좋습니다. root 포트에는프로세서기반 (northbridge) root 포트와컨트롤러허브기반 (southbridge) root 포트의두종류가있습니다. 앞서말한것과같이장치할당기능을 SR-IOV 와함께구현하며가상게스트가 VF 에연결되는경우해당포트는 ACS 및 ARI 를모두지원해야합니다. Intel 의 Xeon 프로세서 E5 제품군, Xeon 프로세서 E7 제품군, 그리고고급형데스크탑프로세서에는프로세스기반 root 포트에네이티브 ACS 지원이포함되어있습니다. Intel 장치에는일반적으로컨트롤러허브기반 root 포트에네이티브 ACS 지원이포함되어있지않지만 Red Hat Enterprise Linux 7.2 커널에는어느정도유연성이있어서 X99, X79, 그리고 5 시리즈부터 9 시리즈까지의칩셋 (chipset) root 포트에서 ACS 와동급의분리를활성화할수있습니다. PCIe 장치설치시공급업체사양을참조하여 root 포트가 ACS 를지원하는지확인한후에프로세서기반및컨트롤러허브기반 root 포트를결정하십시오. 또한 I/O 토폴로지내의모든 PCIe 스위치및브리지도 ACS 를지원해야합니다. 그렇지않은경우 IOMMU 그룹이확장될수있습니다. 2.1. 장치할당시하드웨어고려사항요약 CPU 가 IOMMU( 예 : VT-d 또는 AMD-Vi) 를지원해야합니다. 기본적으로 IBM POWER8 은 IOMMU 를지원합니다. 펌웨어가 IOMMU 를지원해야합니다. CPU root 포트가 ACS 또는 ACS 와동급의기능을지원해야합니다. PCIe 장치가 ACS 또는 ACS 와동급의기능을지원해야합니다. 모든 PCIe 스위치, 그리고 PCIe 장치와 root 포트간의모든브리지가 ACS 를지원하는것이권장됩니다. 예를들어, 어떤스위치가 ACS 를지원하지않는경우해당스위치의모든장치는같은 IOMMU 그룹을공유하기때문에동일한가상머신에만할당될수있습니다. 하드웨어가이러한요구사항을충족하는지확인하기위해공급업체사양및데이터시트를참조하시기바랍니다. lspci -v 명령을사용하여시스템에이미설치되어있는 PCI 장치에대한정보를표시합니다. 3