پیکربندی passstrugh nvidia gpu در proxmox [Homelab]
![پیکربندی passstrugh nvidia gpu در proxmox [Homelab] پیکربندی passstrugh nvidia gpu در proxmox [Homelab]](https://i0.wp.com/media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz3g92zqnubrzss46593r.png?w=780&resize=780,470&ssl=1)
امروزه ، موضوعاتی مانند آموزش 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 اضافه کنید.
به عنوان دستگاه خام ، کارت گرافیک خود را انتخاب کنید. سپس این گزینه ها را علامت گذاری کنید:
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 در دستگاه مجازی علاقه دارید ، در مسیر خود باشید.