การตั้งค่า SR-IOV สำหรับ NIC และการกำหนดค่า PCI/GPU Passthrough บน Proxmox VE

Published on April 29, 2025
การตั้งค่า SR-IOV สำหรับ NIC และการกำหนดค่า PCI/GPU Passthrough บน Proxmox VE

ในระบบ Virtualization สมัยใหม่ การเพิ่มประสิทธิภาพการเชื่อมต่อเครือข่ายและการเข้าถึงฮาร์ดแวร์โดยตรงเป็นสิ่งสำคัญ โดยเฉพาะในงานที่ต้องการ Bandwidth สูง หรือ Latency ต่ำ เช่น ระบบฐานข้อมูลขนาดใหญ่, AI/ML หรือ Virtual Desktop Infrastructure (VDI) หนึ่งในเทคโนโลยีที่ช่วยได้คือ SR-IOV (Single Root I/O Virtualization) ซึ่งทำให้สามารถแบ่ง Physical NIC ออกเป็นหลาย Virtual Function (VF) เพื่อมอบให้กับ VM ได้โดยตรง ลดภาระการทำงานของ Hypervisor ลงอย่างมาก

ในขณะเดียวกันเทคนิค PCI Passthrough ก็เป็นอีกทางเลือกที่ให้ VM เข้าถึงอุปกรณ์ PCIe เช่น GPU หรือ NIC ได้โดยตรงผ่าน VFIO (Virtual Function I/O) ซึ่งมีประโยชน์อย่างยิ่งในการเพิ่มประสิทธิภาพสำหรับงานเฉพาะทาง

บทความนี้จะอธิบายวิธีการตั้งค่า SR-IOV สำหรับ NIC รวมถึง PCI/GPU Passthrough บน Proxmox VE  ซึ่งเป็นเวอร์ชันล่าสุด ณ ปัจจุบัน โดยจะครอบคลุมตั้งแต่การตั้งค่า Kernel Module, การปรับแต่ง BIOS, การกำหนด IOMMU, ไปจนถึงการเพิ่ม Virtual Function ให้กับ VM อย่างถูกต้อง

ตัวอย่างการทำ GPU Passthrough บน Proxmox VE

1. เช็ก BIOS และเปิดการตั้งค่าที่จำเป็น
– เข้า BIOS ของเครื่องเซิร์ฟเวอร์

เปิดใช้งาน

  • VT-d (สำหรับ Intel) หรือ AMD-Vi (สำหรับ AMD)
  • SR-IOV

หมายเหตุ ซึ่งท่าน จะต้องเปิดใช้งาน Intel Virtualization / Intel VT-d และ SR-IOV ใน NIC ผ่าน BIOS ก่อน

SR-IOV

เปิดใช้งาน SR-IOV

 

2. การเตรียม ISO ที่สามารถบูต Proxmox VE เพื่อติดตั้งให้เรียบร้อย  พร้อมเข้าสู่ระบบ

 

SR-IOV

 

หน้าแดชแบอด Proxmox VE

 

3. การตรวจสอบการสนับสนุน IOMMU

สามารถตรวจยืนยันว่า IOMMU เปิดใช้งานอยู่หรือไม่โดยใช้ Shell ของ Proxmox ด้วยคำสั่งต่อไปนี้:

# dmesg | grep -e DMAR -e IOMMU

 

SR-IOV

 

# dmesg | grep 'remapping'

 

SR-IOV

 

*** หาก IOMMU ไม่แสดงเป็นเปิดใช้งาน ให้ไปทำการเปิดใช้งาน SR-IOV ที่  BIOS  ให้เรียบร้อย 

 

4. การกำหนดค่า Proxmox

เมื่อติดตั้ง Proxmox แล้ว ให้ล็อกอินเข้าสู่ระบบ และเพิ่มพารามิเตอร์การบูตเคอร์เนล  “intel_iommu=on” และ “iommu=pt” ใน /etc/default/grub:

 # vi /etc/default/grub

ทำการเพิ่มพารามิเตอร์ บรรทัดนี้

 GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

 

SR-IOV
** อย่าลืม save

เช็ค cpu

 # dmesg | grep cpu

SR-IOV

 # dmesg | grep intel

SR-IOV

 # more /proc/cpuinfo

SR-IOV

รันคำสั่ง “update-grub” หลังจากทำการเปลี่ยนแปลงที่จำเป็นเพื่อใช้การเปลี่ยนแปลง

 # update-grub

SR-IOV

 

เข้าเพิ่ม Kernel Modules สามารถทำได้โดยเพิ่มโมดูลเหล่านี้ลงใน ‘ /etc/modules ‘ **ทำหน้าที่เป็นตัวกลางส่งผ่าน

 # vi /etc/modules

จากนั้นเพิ่มพารามิเตอร์

vfio 
vfio_iommu_type1 
vfio_pci
vfio_virqfd 

SR-IOV
** อย่าลืม save

 

หลังจากเปลี่ยนแปลงโมดูลใดๆ ที่เกี่ยวข้องแล้ว คุณต้องรีเฟรช initramfs ของคุณ ใน Proxmox VE สามารถทำได้โดยดำเนินการดังนี้:

# update-initramfs -u -k all

SR-IOV

จากนั้นทำการ reboot เครื่อง Server Proxmox VE

ทำการเช็ค device name ของ NIC ในรูปเราจะได้ค่าเป็นดังนี้

SR-IOV

 

ทำการตรวจสอบอุปกรณ์ NIC

 # Ispci

SR-IOV
เมื่อใช้คำสั่ง Ispci ท่านจะเห็น Virtual NIC จำนวนทั้งหมดขึ้นมา

SR-IOV

 

เท่านั้นก็เสร็จเรียบร้อย

 

5. การกำหนดค่าไคลเอนต์

เมื่อถึงจุดนี้ ให้สร้าง VM ใหม่ใน Proxmox สำหรับบทช่วยสอนนี้ เราได้ติดตั้ง CentOS-7-x86_64-DVD-1810

  • การสร้าง VM คุณสามารถสร้าง VM ใหม่ผ่านอินเทอร์เฟซเว็บของ Proxmox เมื่อเข้าสู่ระบบแล้ว คุณสามารถเลือกปุ่ม “Create VM” ที่มุมขวาบนของอินเทอร์เฟซได้

SR-IOV

ตั้งชื่อ VM คลิก Next

SR-IOV

เลือก ISO Image คลิก Next

SR-IOV

กำหนดค่าระบบแล้ว คลิก Next

SR-IOV

กำหนดค่า Disk แล้ว คลิก Next

SR-IOV

กำหนดค่า CPU แล้ว คลิก Next

SR-IOV

กำหนดค่า Memory แล้ว คลิก Next

SR-IOV

กำหนดค่า Network แล้ว คลิก Next

SR-IOV

ตรวจสอบรายละเอียด  จากนั้นคลิก Next

6. การเพิ่ม GPU 

เมื่อสร้าง VM แล้ว คุณสามารถเพิ่ม GPU ได้ผ่านแท็บฮาร์ดแวร์ภายใต้คอนโซล VM ใน Proxmox

 

SR-IOV

เลือก VM  —> Hardware

SR-IOV

เลือกปุ่ม Add  ->  PCI Device

SR-IOV

เลือก Raw Device และค้นหา GPU ของคุณ

SR-IOV

คลิก Add

SR-IOV

 

จากนั้นคุณทำการติดตั้งและเข้าสู่ระบบระบบปฏิบัติการแล้ว ให้ตรวจสอบว่า GPU แสดงขึ้นมาโดยเรียกใช้สั่ง   lspci

 # lspci

 

SR-IOV

รูปภาพแสดงว่า GPU ว่านำไปใช้งานจริง **ติดตั้งไดรเวอร์ GPU

ดังนั้น SR-IOV (Single Root I/O Virtualization) เป็นเทคนิคที่ช่วยให้ Network Interface Card (NIC) สามารถสร้าง Virtual Functions (VF) หลายตัวจาก Physical Function (PF) ตัวเดียว เพื่อแบ่งทรัพยากรส่งตรงให้ VM ใช้งานได้โดยไม่ผ่าน hypervisor มากเกินไป (ใกล้เคียงกับ PCI Passthrough) ซึ่งจะได้ประสิทธิภาพสูงสุดและ latency ต่ำที่สุด หากคุณทำตามขั้นตอนทั้งหมดอย่างเคร่งครัด เครื่องเสมือน (VM) ของคุณก็ไม่น่าจะมีปัญหาในการตรวจจับอุปกรณ์ PCIe ทั่วไป  ทั้งนี้สามารถทำตามคู่มือแบบวีดีโอได้ที่ Youtube 

AVESTA  ให้บริการทั้งงานขายระบบ System , Networks  ติดตั้ง อัพเกรด Configure และอื่น ๆ หากท่านมีคำถามสามารถติดต่อเพื่อขอข้อมูลเกี่ยวกับการบริการของเราได้ตลอดเวลา ด้วยประสบการณ์ยาวนานนับสิบปี

การตั้งค่า SR-IOV สำหรับ NIC และการกำหนดค่า PCI/GPU Passthrough บน Proxmox VE

ในระบบ Virtualization สมัยใหม่ การเพิ่มประสิทธิภาพการเชื่อมต่อเครือข่ายและการเข้าถึงฮาร์ดแวร์โดยตรงเป็นสิ่งสำคัญ โดยเฉพาะในงานที่ต้องการ Bandwidth สูง หรือ Latency ต่ำ...

Read more »

Installing PostgreSQL 17 on Ubuntu 24.04

PostgreSQL คือระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพนซอร์ส (Open-source Relational Database Management System – RDBMS) ที่ทรงพลังและมีความสามารถสูง...

Read more »

วิธีการติดตั้ง DatApp-NBP Data Backup System

ในยุคดิจิทัลที่ข้อมูลเป็นทรัพยากรสำคัญขององค์กร การปกป้องและสำรองข้อมูลจึงเป็นสิ่งจำเป็น DatApp-NBP เป็นระบบสำรองข้อมูลที่ออกแบบมาเพื่อช่วยให้ธุรกิจสามารถป้องกันการสูญหายของข้อมูลและกู้คืนข้อมูลได้อย่างมีประสิทธิภาพ ด้วยคุณสมบัติที่ทันสมัย DatApp-NBP รองรับการสำรองข้อมูลทั้งบนเซิร์ฟเวอร์ ฐานข้อมูล และระบบคลาวด์ ช่วยให้ผู้ใช้งานสามารถกำหนดค่าการสำรองข้อมูลอัตโนมัติได้ตามความต้องการ...

Read more »

วิธีการใช้งาน ซอฟต์แวร์เดสก์ท็อประยะไกล AnyViewer

AnyViewer เป็นซอฟต์แวร์เดสก์ท็อประยะไกลที่ช่วยให้คุณสามารถเข้าถึงและควบคุมคอมพิวเตอร์จากที่ใดก็ได้ผ่านอินเทอร์เน็ต ไม่ว่าคุณจะต้องการให้การสนับสนุนทางเทคนิค การถ่ายโอนไฟล์ หรือทำงานจากระยะไกล AnyViewer ช่วยให้คุณทำสิ่งเหล่านี้ได้อย่างง่ายดายและปลอดภัย ซอฟต์แวร์นี้ออกแบบมาให้ใช้งานง่าย รองรับ Windows,...

Read more »

Earthquake Risks and Their Impact on Computer Systems

ความเสี่ยงเรื่องการเกิดแผ่นดินไหวและผลกระทบต่อระบบคอมพิวเตอร์ การเกิดแผ่นดินไหวขนาด 7.7 แมกนิจูด ในระดับความลึก 10 กม. จากผิวดิน ที่เมืองมัณฑะเลย์ของประเทศพม่าเมื่อวันที่ 28...

Read more »

Longhorn Block Storage System

ทำความรู้จักกับ Longhorn Storage System Longhorn เป็นระบบจัดการ Block Storage แบบกระจายศูนย์ (Distributed...

Read more »