Computer >> Hướng Dẫn Máy Tính >  >> Hệ Thống >> Máy Chủ Windows

Cấu hình SR-IOV cho máy ảo Hyper-V trên Windows Server

SR-IOV (Single Root Input/Output Virtualization) là công nghệ ảo hóa thiết bị phần cứng host cho phép máy ảo truy cập trực tiếp thiết bị host. Nó có thể ảo hóa nhiều loại thiết bị, nhưng thường dùng nhất để ảo hóa card mạng. Trong bài này, chúng ta chỉ cách bật và cấu hình SR-IOV cho network adapter máy ảo trên server Hyper-V Windows.

SRV-IOV được hỗ trợ trong Hyper-V 2012+, kể cả free Windows Hyper-V Server. Chúng ta không đi sâu vào nguyên lý SR-IOV chi tiết, vì bạn có thể tìm hướng dẫn đầy đủ trên Web. Để hiểu thực tế, chỉ cần biết SR-IOV cho phép cung cấp truy cập trực tiếp card mạng vật lý của host cho VM và bỏ qua xử lý traffic bởi Hyper-V virtual switch. Một card mạng vật lý ở chế độ SR-IOV có thể phục vụ nhiều máy ảo.

Nhờ dùng SR-IOV cho máy ảo Hyper-V, bạn có thể tăng throughput đáng kể, giảm độ trễ mạng và tải CPU do xử lý traffic mạng bởi phần mềm Hyper-V.

SR-IOV không tương thích với NIC teaming.

Để bật SRV-IOV trên host Hyper-V, một số yêu cầu phải đáp ứng.

Trước hết, bật hỗ trợ SRV-IOV và ảo hóa trong BIOS server. Tùy vendor, cài đặt có thể khác.

  • Hỗ trợ ảo hóa: Intel (Virtualization Technology, Intel VT, VT-d, Vanderpool), AMD (SVM, AMD-V)
  • IOMMU
  • SR-IOV
  • ASPM
Cấu hình SR-IOV cho máy ảo Hyper-V trên Windows Server

Bạn có thể không có mọi mục, thậm chí không có SR-IOV. Nhưng không có nghĩa SR-IOV không được hỗ trợ bởi server. Ví dụ, mainboard Supermicro có thể không có SR-IOV trong BIOS, nhưng có ASPM tắt mặc định. Nếu bật ASPM và hỗ trợ ảo hóa, SR-IOV sẽ tự động bật.

Lưu ý nếu host Windows OS đã cài với SR-IOV tắt trong BIOS, thì sau khi bật nó, hệ thống coi như bạn thay card mạng (địa chỉ IP tĩnh hiện tại bị reset).

Bạn có thể kiểm tra SR-IOV có được hỗ trợ bởi server Hyper-V ở cấp phần cứng dùng PowerShell:

(get-vmhost).IovSupport
(get-vmhost).IovSupportReasons
Cấu hình SR-IOV cho máy ảo Hyper-V trên Windows Server

Nếu server hỗ trợ tính năng, IovSupport chứa True. Nếu không, là False. Trong trường hợp này, mục IovSupportReasons cho thấy lý do SR-IOV không được hỗ trợ. Thường lý do được mô tả chi tiết. Đây là lý do điển hình:

  • Chipset trên hệ thống không làm remap ngắt, không có đó SR-IOV không được hỗ trợ.
  • SR-IOV không dùng được trên máy tính này vì processor không hỗ trợ dịch địa chỉ cấp hai (SLAT). Với Intel, tính năng này gọi Extended Page Tables (EPT). Với AMD, gọi Rapid Virtualization Indexing (RVI) hoặc Nested Page Tables (NPT).
  • SR-IOV không dùng được trên hệ thống này vì phần cứng PCI Express không hỗ trợ Access Control Services (ACS) ở bất kỳ root port nào. Liên hệ vendor hệ thống.
  • Để dùng SR-IOV trên máy tính này, BIOS phải cập nhật vì chứa thông tin sai mô tả khả năng phần cứng. Liên hệ nhà sản xuất để cập nhật.
  • Chipset trên hệ thống không làm remap DMA, không có đó SR-IOV không được hỗ trợ.
  • SR-IOV không dùng được trên hệ thống này vì nó được cấu hình tắt dùng phần cứng remapping I/O.
  • Để dùng SR-IOV trên hệ thống này, BIOS hệ thống phải cập nhật để cho phép Windows kiểm soát PCI Express. Liên hệ nhà sản xuất.
  • Đảm bảo hệ thống có hỗ trợ chipset cho SR-IOV và ảo hóa I/O được bật trong BIOS.
  • SR-IOV không dùng được trên hệ thống này vì báo cáo không có PCI Express Bus. Liên hệ nhà sản xuất.

Đầu ra đầy đủ lệnh get-vmswitch | fl *iov* chứa thông tin hữu ích. Ví dụ:

IovVirtualFunctionCount : 6
IovVirtualFunctionsInUse : 3

Số cho thấy bao nhiêu thiết bị ảo IOV khả dụng và bao nhiêu được dùng bởi máy ảo.

Khi tạo Hyper-V virtual switch, tích chọn hỗ trợ SR-IOV — Enable single-root I/O virtualization (SR-IOV).

Cấu hình SR-IOV cho máy ảo Hyper-V trên Windows Server

Hoặc bật tùy chọn EnableIOV khi tạo virtual switch bằng PowerShell:

New-VMSwitch -Name "VMNetExt" -NetAdapterName "Ethernet 2" -EnableIov 1

Quan trọng: Bạn không thể bật SR-IOV sau khi tạo virtual switch. Nếu không làm ngay, bạn phải xóa vswitch và tạo lại.

Nếu SR-IOV được hỗ trợ bởi host hypervisor, không có nghĩa nó sẽ hoạt động trên virtual switch cụ thể. Switch phải gắn với network adapter hỗ trợ SR-IOV.

Có điều quan trọng khác. Mainboard có thể có nhiều network adapter, nhưng SR-IOV chỉ được hỗ trợ bởi một số. Hơn nữa, nếu SR-IOV được hỗ trợ bởi adapter theo datasheet, không có nghĩa nó hoạt động trên mainboard của bạn.

Vì vậy, sau khi cấu hình switch, kiểm tra bằng lệnh:

get-vmswitch | select IovSupport, IovSupportReasons, IovEnabled

Tùy chọn IovEnabled cho thấy SR-IOV có bật không.

Bạn có thể hiển thị danh sách network adapter hỗ trợ SR-IOV bằng PowerShell:

Get-NetAdapterSriov | sort name | ft Name, InterfaceDescription, SriovSupport

Sau khi bật SR-IOV trên hypervisor và cấp virtual switch, bạn có thể bật nó trên máy ảo (mặc định tắt). Bạn tìm tùy chọn Enable SR-IOV trong mục Hardware Acceleration của network adapter máy ảo.

Cấu hình SR-IOV cho máy ảo Hyper-V trên Windows Server

Hoặc bật SR-IOV cho network adapter máy ảo qua PowerShell:

Set-VMNetworkAdapter -VMName mytestvm -VMNetworkAdapterName “Network Adapter” -IovWeight 100

Để tắt SR-IOV, đổi giá trị IovWeight thành 0.

Bạn có thể tìm tất cả lỗi và sự kiện SR-IOV trong Hyper-V với log Event Viewer riêng:

Application and Services Logs → Microsoft → Windows → Hyper-V-SynthNic → Admin.

Nếu SR-IOV hoạt động đúng, bạn sẽ thấy các entry sau trong Event Viewer khi khởi động máy ảo:

12597 Network adapter (%NIC_ID%) Connected to virtual network.
12582 Network adapter (%NIC_ID%) started successfully.
12584 Network adapter (%NIC_ID%) allocated a virtual function.
12588 Network adapter (%NIC_ID%) assigned a virtual function.

SR-IOV tăng hiệu suất mạng máy ảo và hypervisor. Bạn có thể thấy kết quả cao nhất dùng SR-IOV trên host Hyper-V với traffic VM cao gây tải nặng CPU host.