Proxmox دنیایی است که هرچه بیشتر در آن پیش بروید، شگفتیهای بیشتری پیش رویتان میگذارد؛ با مجازیسازی و کانتینرها میتوان کارهای فراوانی انجام داد. یکی از کاربردهای نامتعارف Proxmox، تبدیل یک رایانهٔ گیمینگ به سرور است؛ کاری که بهلطف گذردهی GPU شدنی شده و همیشه برایم جذاب بوده است.
با یک سامانهٔ AM4 نسبتاً توانمند، بازی در ماشین مجازی را آزمودم و نتیجه بسیار بهتر از چیزی بود که انتظار داشتم. البته همانطور که احتمالاً خیلی زود متوجه میشوید، راهاندازی آن چندان بیدردسر نبود؛ مشکلی که بخش عمدهاش به ترکیب خاص سختافزار من بازمیگشت.
استفاده از رایانهٔ گیمینگ بهعنوان سرور Proxmox
نخست باید نورپردازی RGB را خاموش کرد

شاید این کممصرفترین پیکربندی ممکن نباشد، اما تبدیل رایانهٔ گیمینگم به سرور Proxmox هم سرگرمکننده بوده و هم، بهجرئت میتوانم بگویم، سودمند. سامانهٔ مورد بحث بر پایهٔ پلتفرم AM4 و پردازندهٔ Ryzen 5600G ساخته شده و 32GB حافظهٔ RAM و کارت گرافیک RX ۹۰۷۰ مدل غیر XT دارد.
این دستگاه از هر نظر یک رایانهٔ رومیزی معمولی است و حتی نورپردازی پرزرقوبرق RGB هم دارد؛ چیزی که از آن بیزارم. بااینحال، تبدیل این رایانه به دستگاهی مبتنی بر Proxmox فرایندی نسبتاً پیچیده و پردردسر بود.
کار را با نوشتن تصویر Proxmox روی یک فلش Ventoy آغاز کردم و برای نصب آن یک SSD ساتای 120GB در نظر گرفتم. خود Proxmox فضای بسیار کمی میگیرد و ترجیح میدادم دو شکاف M.۲ مادربرد را برای نصب بازیها و ماشینهای مجازی نگه دارم.
در BIOS، جز فعالکردن گزینههای مجازیسازی مانند SVM و IOMMU، تنظیم چندانی لازم نبود. برای کاهش بیشتر مصرف برق نیز میتوان بخشهای مربوط به کاهش ولتاژ CPU را دستکاری کرد.
قصد داشتم از RX ۹۰۷۰ برای مجازیسازی استفاده کنم و این یعنی Proxmox به یک GPU دوم نیاز داشت تا میزبان گرافیکی خود را روی آن نگه دارد. با توجه به مادربرد mATX و کیس دستگاه، نصب یک GPU دیگر ممکن نبود.
بنابراین Ryzen 5600G را بدون تغییر نگه داشتم و از گرافیک یکپارچهٔ آن برای میزبان Proxmox بهره گرفتم. قرار بود RX ۹۰۷۰ هنگام نیاز از سرور «قرض گرفته» و به ماشین مجازی واگذار شود تا بازیها با شتابدهی GPU اجرا شوند.
در این روش، RX ۹۰۷۰ برای گذردهی GPU بهطور کامل از اختیار سرور Proxmox خارج میشود. اگر بخواهید GPU خود را به چند vGPU کوچکتر تقسیم کنید، به یکی از خانوادههای بسیار مشخص GPU نیاز خواهید داشت.
پس از استقرار همهچیز، Proxmox بهدرستی راهاندازی شد و بیهیچ دردسری کار کرد؛ البته بهجز یک مشکل عجیب. RX ۹۰۷۰ در آغاز بدون اشکال به ماشین مجازی واگذار میشد، اما بلافاصله ارتباطش را با گذرگاه از دست میداد. در نتیجه، کارت در وضعیتی برزخگونه «قفل» و عملاً بلااستفاده میشد و تنها راه چاره، بازنشانی اجباری برق بود.
RX ۹۰۷۰ برای کارکرد درست به اسکریپت هوک نیاز دارد
پس از راهاندازی، دیگر مشکلی در کار نیست

GPUهای AMD در Linux از باگی ناخوشایند هنگام بازنشانی رنج میبرند. خلاصه اینکه اگر اتصال یک GPU ساخت AMD را در Linux از درایور vfio-pci جدا کنید، کارت سرگردان میشود و دیگر به هیچ درایوری متصل نیست. این «وضعیت برزخی» تا زمان بازنشانی کامل ادامه مییابد.
این مشکل گذردهی GPU را کمی دردسرساز میکند، هرچند چند راهحل برای آن ارائه شده است. متأسفانه این راهحلها پراکندهاند و گونههای متفاوتی دارند. رایجترین راهکار، بازنشانی سازنده است؛ اما این روش بیشتر برای GPUهای RDNA ۲ طراحی شده و RX ۹۰۷۰ مبتنی بر RDNA ۴ من نمیتوانست از این وصله بهره ببرد.
از نظر فنی، RX ۹۰۷۰ من به بازنشانی سازنده نیازی ندارد، چون اساساً از آن پشتیبانی نمیشود؛ بااینحال، هر کاری کردم GPU نتوانست بهشکلی پاک و درست مقداردهی اولیه شود.
وقتی دیگر راهی به ذهنم نمیرسید، برای راهنمایی به Claude روی آوردم و همزمان نگاهی هم به انجمنهای Proxmox انداختم. سرانجام مشخص شد که باید یک اسکریپت هوک بسازم تا برای ماشین مجازی مجهز به گذردهی GPU، اتصال GPU به درایورهای amdgpu و vfio را بهصورت پویا برقرار و قطع کند.
این اسکریپت هر بار که ماشین مجازی را بهدرستی خاموش میکنید اجرا میشود و نمیگذارد RX ۹۰۷۰ گیر کند. چنین اسکریپتی عملاً برای همهٔ ماشینهای مجازی دارای گذردهی GPU ضروری است و نمیتوان از آن چشم پوشید.
آزمایش چند ماشین مجازی در Proxmox
برای شروع، Windows و Bazzite





حالا نوبت آن بود که ماشینهای مجازی را واقعاً راه بیندازم. تصمیم گرفتم دو ماشین بسازم: یکی برای Windows ۱۱ LTSC و دیگری برای Bazzite تا تجربهای شبیهتر به SteamOS داشته باشم. ساخت ماشینهای مجازی از راه رابط گرافیکی بسیار ساده بود، هرچند ناچار شدم RX ۹۰۷۰ را بهصورت دستی در اختیار ماشین مجازی بگذارم و از افزودن اسکریپت هوک نیز مطمئن شوم.
برای منابع مجازی، به هر ماشین مجازی ۸ پردازندهٔ مجازی از مجموع ۱۲ پردازندهٔ منطقی و 16GB رم اختصاص دادم. فضای ذخیرهسازی سیستمعامل را در کمترین حد نگه داشتم؛ 50GB به Bazzite و 120GB به Windows دادم. همچنین یکی از درایوهای NVMe متصل به هوملب را مستقیماً در اختیار ماشینها گذاشتم تا نقش درایو مشترک بازیها را داشته باشد.
پس از یکبار نصب و چند بهروزرسانی، همهچیز آمادهٔ استفاده بود. راستش را بخواهید، از نظر کارایی هیچ تفاوتی میان اجرای بومی بازیها و اجرای آنها در ماشین مجازی احساس نکردم.
با توجه به اینکه 5600G از PCIe ۳.۰ استفاده میکند، درحالیکه RX ۹۰۷۰ کارتی مبتنی بر PCIe ۵.۰ است، قاعدتاً باید افت کارایی محسوسی وجود داشته باشد. بااینحال، با درنظرگرفتن پردازندهٔ ضعیفتر این سامانه، عملکرد آن کاملاً رضایتبخش است و میتوانم با این مصالحه کنار بیایم.
ارتقاهای بیشتر و چند مصالحه
بدیهی است که قرار نیست هر دو ماشین مجازی را همزمان به کار بگیرم. این GPU را نمیتوان به چند vGPU تقسیم کرد و رم کافی برای چنین کاری هم ندارم. بااینهمه، اجرای یک سرور Proxmox بدون نمایشگر و مناسب بازی، درحالیکه کانتینرهای دیگر در پسزمینه فعال بودند، بهشکلی غافلگیرکننده خوب از آب درآمد و مشتاقم همچنان از این چیدمان استفاده کنم.
برای ارتقاها و بهینهسازیهای آینده، شاید وقت آن باشد که سراغ 5950X بروم؛ حتی اگر تنها دلیلش پردازندهٔ پرتوان ۱۶ هستهای و ۳۲ رشتهای آن باشد. شاید کوچ به مادربردی در اندازهٔ ATX هم لازم شود؛ درحالحاضر X570 بهترین گزینه بهنظر میرسد، زیرا فضای نصب GPU دوم را فراهم میکند. البته شاید این پروژه بماند برای روزی دیگر.
منبع: این مطلب ترجمه و بومیسازی مقالهای از MakeUseOf به قلم Dipan Saha است. مشاهده مقاله اصلی