برنامه نویسی

پیکربندی passstrugh nvidia gpu در proxmox [Homelab]

امروزه ، موضوعاتی مانند آموزش AI محلی و استفاده در سیستم های HomeLab اهمیت می یابد. در این راهنما ، نحوه انتقال کارت گرافیک NVIDIA را به سرور خود در سرور خود در سیستم های HomeLab (سرور خانگی) خود مشاهده خواهید کرد.

الزامات:

در طول این راهنما ، فرض می کنم که شما یک نصب استاندارد ProxMox را انجام داده اید ، که بر عملیات اصلی مدیریت ProxMox حاکم شده اید ، و مراحل پس از نصب مانند میکروکد خود را به اتمام رسانده اید.

اطمینان حاصل کنید که ویژگی های زیر در میزبان وجود دارد که در آن یک proxmox استاندارد را تنظیم کرده اید ، مشخص است:

  • VT-D ،
  • نقشه برداری را قطع کنید ،
  • BIOS UEFI.

سیستمی که در طول راهنما استفاده خواهم کرد

Anakart: MSI H110M PRO-D
پردازنده: Intel Core i3 7100
کارت صفحه: NVIDIA GTX 1050 TI
RAM: 8GB DDR4 2133MHz
نسخه proxmox: محیط مجازی PVE 8.3.0
سیستم عامل مهمان: Fedora 41 Server Edition

شروع

مرحله 1: پیکربندی کتاب گروهی

SSH را روی سرور ProxMox خود قرار دهید یا ترمینال Shell را در زیر زبانه Node در رابط وب باز کنید.

شما باید با یک عضو گروه root یا sudoers معاملات را با یک مقام “سودو” انجام دهید.

vi /etc/default/grub
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با این خط تماس بگیرید:

GRUB_CMDLINE_LINUX_DEFAULT=
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس CPU را مطابق با نام تجاری خود تنظیم کنید:

این کشور

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

amd

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در صورت عدم موفقیت ، ممکن است لازم باشد دستورات اضافی را در این خط وارد کنید.

این پارامترهای اضافی اطمینان حاصل می کنند که ProxMox از GPU در سیستم برای اهداف خود استفاده نمی کند و به هر دستگاه PCI در یک گروه IOMMU جداگانه کمک می کند. این مهم است زیرا اگر گروه IOMMU 1 حاوی CPU با GPU شما باشد ، انتقال GPU از بین می رود.

من از این پیکربندی استفاده می کنم:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream,multifunction nofb nomodeset video=vesafb:off,efifb:off"

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پس از ویرایش و ذخیره پرونده/etc/پیش فرض/گروه ، دستور زیر را اجرا کنید:

update-grub
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 2: ماژول های VFIO

در سیستم proxmox ما ، برخی از ماژول های VFIO مورد نیاز است.

ماژول های VFIO (عملکرد مجازی I/O) اجزای هسته ای لینوکس هستند که به دستگاه های سخت افزاری فیزیکی اجازه می دهند توسط ماشینهای مجازی به طور مستقیم و ایمن استفاده شوند.

پرونده/etc/ماژول ها را باز کنید:

vi /etc/modules 
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ورودی های زیر را در پرونده بنویسید:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

می توانید ذخیره و خروج کنید.

مرحله 3: iommu قطع مجدد

Iommu قطع مجدد یک مکانیسم ایمنی و عایق است که امکان پردازش برش سیگنال های ارسال شده توسط دستگاه های فیزیکی را با خیال راحت و صحیح در محیط های مجازی به پردازنده می دهد.

دستور زیر را اجرا کنید:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Allow_Unsafe_interrupts = 1 پارامتر ماژول vfio_iommu_type1 اجازه می دهد تا وقفه های غیر امنیتی در سیستم هایی که با مسیریابی قطع پشتیبانی نمی شوند ، عبور کنند.

دستور زیر را اجرا کنید:

echo "options kvm ignore_msrs=1" > /etc/modprobe.d/kvm.conf
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پارامتر IGNORE_MSRSRS = 1 ماژول KVM با نادیده گرفتن خطاهای MSR (ثبت نام خاص) در دستگاه مجازی ، سازگاری و ثبات را افزایش می دهد.

مرحله 4: برای لیست رانندگان سیاه

برای موفقیت در معامله PCI Passthrough ، این کارت ها نباید توسط ProxMox وارد شوند.

دستورات زیر را اجرا کنید و درایورهای کارت گرافیک را در لیست سیاه قرار دهید:

echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مرحله 5: اضافه کردن کارت گرافیک به VFIO

دستور زیر را اجرا کنید:

lspci -v
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خطوطی را که به کارت گرافیک خود در خروجی دستور اشاره دارد ، پیدا کنید. باید اینگونه باشد:

01:00.0 VGA compatible controller: NVIDIA Corporation GP107 [GeForce GTX 1050 Ti] (rev a1) (prog-if 00 [VGA controller])

01:00.1 Audio device: NVIDIA Corporation GP107GL High Definition Audio Controller (rev a1)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دستور زیر را اجرا کنید ! اعداد موجود در دستور را با شماره های موجود در خروجی خود جایگزین کنید! :

lspci -n -s 01:00
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این دستور باید اطلاعات فروشنده کارت گرافیک شما را حذف کند:

01:00.0 0300: 10de:1c82 (rev a1)
01:00.1 0403: 10de:0fb9 (rev a1)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

فروشنده من اطلاعات خود را یادداشت می کنم: 10DE: 1C82 و 10DE: 0FB9.

حال بیایید اطلاعات فروشنده خود را به VFIO اضافه کنیم: ! اعداد موجود در دستور را با شماره های موجود در خروجی خود جایگزین کنید! :

echo "options vfio-pci ids=10de:1c82,10de:0fb9 disable_vga=1"> /etc/modprobe.d/vfio.conf
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس دستور زیر را اجرا کنید:

update-initramfs -u
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

و راه اندازی مجدد:

reboot now
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ProxMox اکنون برای GPU Passtyrough آماده است.

انتقال کارت گرافیک به یک ماشین مجازی

یک ماشین مجازی ایجاد کنید. من از الگوی فدورا سرور 41 کلون کردم.
بلافاصله پس از ایجاد دستگاه مجازی خود بوت نشوید.

پس از ایجاد دستگاه مجازی ما ، از طریق پوسته ProxMox به پرونده پیکربندی دستگاه مجازی ما دسترسی پیدا کنید:

nano /etc/pve/qemu-server/.conf
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سه خط اضافه کنید (در صورت وجود موارد قدیمی را حذف کنید):

machine: q35
cpu: host,hidden=1,flags=+pcid
args: -cpu 'host,+kvm_pv_unhalt,+kvm_pv_eoi,hv_vendor_id=NV43FIX,kvm=off'
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

ذخیره و خروج.

سپس از طریق رابط وب ProxMox به برگه سخت افزار دستگاه مجازی خود بیایید و با گزینه “افزودن” کارت PCI اضافه کنید.

به عنوان دستگاه خام ، کارت گرافیک خود را انتخاب کنید. سپس این گزینه ها را علامت گذاری کنید:

PROXMOX PCI-E

All Functions: YES
Rom-Bar: YES
Primary GPU: NO
PCI-Express: YES 
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس دستگاه را شروع کنید.

نصب کارت گرافیک در دستگاه مجازی

به روزرسانی های کلی دستگاه مجازی خود را انجام دهید:

dnf update
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس دوباره راه اندازی کنید:

reboot now
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون انتظار داریم که درایور منبع باز Nvidia Nouveau نصب شود. -آیا وضعیتی نیست که بخواهیم.

دستور زیر را اجرا کنید تا بررسی کنید:

lsmod | grep -E 'nvidia|nouveau'
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اگر یک خروجی به شرح زیر باشد ، درایور Nouveau نصب شده است:

nouveau              3874816  0
drm_ttm_helper         16384  1 nouveau
ttm                   122880  2 drm_ttm_helper,nouveau
video                  81920  1 nouveau
gpu_sched              65536  1 nouveau
i2c_algo_bit           20480  1 nouveau
drm_gpuvm              45056  1 nouveau
drm_exec               12288  2 drm_gpuvm,nouveau
mxm_wmi                12288  1 nouveau
wmi                    32768  3 video,mxm_wmi,nouveau
drm_display_helper    311296  1 nouveau
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون باید درایوهای ثبت شده NVIDIA را نصب کنید.

ابتدا مجدداً RPMFusion ثبت شده را نصب کنید.

sudo dnf install https://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-41.noarch.rpm
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس درایور ثبت شده NVIDIA را با اجرای دستور زیر نصب کنید:

sudo dnf install akmod-nvidia
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پس از اتمام مراحل ، اقدامات ما را با دستور توپ دنبال کنید:

بالا

حتی اگر دستور به پایان برسد ، AKMOD به کامپایل ادامه می دهد:

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  35278 akmods    20   0  167292 140140  15692 R  25.8   3.5   0:00.78 cc1
  35284 akmods    20   0   84260  55884  14296 R   7.6   1.4   0:00.23 cc1
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

صبر کنید تا فرآیندهای کاربر AKMODS به پایان برسد. آنها پس از اتمام ناپدید می شوند.

بیایید دوباره دوباره راه اندازی کنیم.

reboot now
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Fedora Server 41 پس از بازسازی مجدد ، دستور زیر را اجرا کنید تا تأیید کنید که درایورهای ثبت شده نصب شده اند:

lsmod | grep -E 'nvidia|nouveau'
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

باید به شرح زیر باشد:

nvidia_drm            151552  0
nvidia_modeset       1830912  1 nvidia_drm
nvidia_uvm           3997696  0
nvidia              97165312  2 nvidia_uvm,nvidia_modeset
drm_ttm_helper         16384  1 nvidia_drm
video                  81920  1 nvidia_modeset
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس بسته های لازم را برای استفاده از ابزار NVIDIA-SMI نصب کنید:

sudo dnf install xorg-x11-drv-nvidia-cuda
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

و اجرا:

nvidia-smi
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

باید به شرح زیر باشد:

+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.144                Driver Version: 570.144        CUDA Version: 12.8     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce GTX 1050 Ti     Off |   00000000:01:00.0 Off |                  N/A |
|  0%   48C    P8            N/A  /   72W |       3MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

روند ما به پایان رسیده است.

پایان

در طول راهنما ، ما در مورد نصب های درایور لازم در دستگاه مجازی بحث کرده ایم تا زیرساخت های GPU را در ProxMox قرار دهیم ، GPU فیزیکی را به دستگاه مجازی اختصاص دهیم و در دستگاه مجازی نصب کنیم.

اگر به مقالات بعدی من مانند GPU و AI در دستگاه مجازی علاقه دارید ، در مسیر خود باشید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا