วิธีการตั้งค่า SR-IOV สำหรับ NIC บน Proxmox VE

Published on April 29, 2025
วิธีการตั้งค่า SR-IOV สำหรับ NIC บน 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  บน 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

 

ดังนั้น 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 และอื่น ๆ หากท่านมีคำถามสามารถติดต่อเพื่อขอข้อมูลเกี่ยวกับการบริการของเราได้ตลอดเวลา ด้วยประสบการณ์ยาวนานนับสิบปี

Affordable Cloud Storage Storj

Storj เป็นบริการเก็บข้อมูลแบบกระจายศูนย์ (Decentralized Cloud Storage) สามารถนำมาใช้งานได้หลากหลาย และ สามารถเข้าถึงง่าย ด้วยเทคนิค การเข้ารหัสและกระจายข้อมูล...

Read more »

การตั้งค่า WireGuard Road Warrior VPN Client-to-Site บน OPNSense

WireGuard คือโปรโตคอล VPN แบบใหม่ที่ถูกออกแบบมาให้ เรียบง่าย รวดเร็ว ปลอดภัย และใช้งานง่าย โดยถูกพัฒนาขึ้นโดย Jason...

Read more »

Fortigate OPNSense Site-2-Site VPN

สำหรับ Fortigate นั้น แน่นอนว่าเป็นที่รู้จักกับดีอยู่แล้ว เพราะเป็น UTM หรือ Firewall อรรถประโยชน์ แบบ...

Read more »

การติดตั้ง CouchDB 3.5 บน Ubuntu 24.04 Noble Numbat

Apache CouchDB คือระบบฐานข้อมูลแบบ NoSQL ประเภท document-oriented database ที่ออกแบบมาเพื่อจัดเก็บข้อมูลในรูปแบบ JSON document...

Read more »

ใครๆ ก็มี Object Storage S3 ใช้งายภายในองค์กรได้แล้ว

Object Storage คืออะไร? Object Storage คือระบบจัดเก็บข้อมูลที่เก็บไฟล์ในรูปแบบ "อ็อบเจ็กต์" แทนที่จะเป็นไฟล์ในโฟลเดอร์แบบเดิม โดยแต่ละอ็อบเจ็กต์จะมี: -ข้อมูล...

Read more »

ข้อเสียของการใช้งาน SMB/CIFS ใน Backup Repository

ก่อนอื่นต้องบอกว่า คำถามดังกล่าวนั้น เราได้รับจากลูกค้า อยู่เนืองๆ ก็เลยเป็นที่มาของการเขียนบทความในวันนี้ เพราะหลายๆ คนยังติดกับการใช้งาน SMB/CIFS โดยเฉพาะผู้ที่ใช้งานอยู่ในระบบ Windows...

Read more »