
نویسندهای در XDA Developers تجربه خود از استفاده از Proxmox را شرح داده و گفته است که پس از مدتی کار با ماشینهای مجازی (Virtual Machine)، پروژههای سنگین خود را به کانتینرهای لینوکسی (Linux Container - LXC) منتقل کرده است. به گفته او، عملکرد بهتر تنها مزیت این مهاجرت نبوده و مصرف بهینهتر منابع، اجرا روی سختافزار ضعیف و پاستروی سادهتر پردازنده گرافیکی (GPU) نیز از دلایل اصلی این تغییر بودهاند.
از ماشین مجازی تا LXC؛ مسیری که با آزمایش آغاز شد
او در ابتدا بیشتر از ماشینهای مجازی در Proxmox استفاده میکرد، چون پیشتر با VirtualBox و Hyper-V کار کرده بود. با این حال، مدتی از LXCها فاصله گرفت، زیرا آنها را شبیه کانتینرهای Docker نمیدید. پس از آشنایی با قابلیتهای Proxmox، با استفاده از قالبهای (Template) داخلی و اسکریپتهای انجمن PVE Community Scripts آزمایشهایی انجام داد و چند پروژه را از ماشین مجازی به LXC منتقل کرد.
عملکرد ضعیف ماشینهای مجازی روی سختافزار قدیمی
به نوشته این کاربر، ماشینهای مجازی باید همهچیز را از سیستمعامل زیرین تا سرویسهای سختافزاری و هسته (Kernel) شبیهسازی کنند و همین موضوع وقتی چند نمونه مجازیشده از یک توزیع لینوکس اجرا شود، منابع را به شدت درگیر میکند. در مقابل، کانتینرهای لینوکسی هسته را مستقیماً از ماشین میزبان (Host) قرض میگیرند و بسیار سبکتر از ماشینهای مجازی هستند. حتی تصاویر سیستمعامل در قالبهای کانتینری اغلب فقط چند صد مگابایت هستند و میتوان سرویسهای پیچیده را روی یک LXC با ۱۰ تا ۱۵ گیگابایت فضا اجرا کرد، در حالی که یک ماشین مجازی معمولی برای پارتیشن بوت (Boot Partition) فضای بیشتری مصرف میکند.
او یک مینیپیسی ارزان با پردازنده N100 و ۸ گیگابایت رم را مثال میزند که با تخصیص دقیق منابع میتواند ۳ تا ۴ توزیع سبک لینوکس را در قالب ماشین مجازی اجرا کند. اما بیشتر از آن یا باعث کندی ماشینهای مجازی میشود یا ممکن است میزبان را از کار بیندازد. اگر تعداد ماشینهای مجازی فعال به ۲ عدد کاهش یابد، میتوان حداقل دهها LXC دیگر برای کارهای خودمیزبانی (Self-Hosting) راهاندازی کرد و باز هم منابعی باقی میماند.
این آزمایش روی لپتاپهای قدیمی پیش از سال ۲۰۱۵ نیز تکرار شده است. به گفته او، چنین سیستمهایی اغلب در اجرای دو ماشین مجازی خط فرمان (CLI) ناتواناند، اما یک لپتاپ Lenovo G510 همچنان بیش از ۱۰ کانتینر را به عنوان گره Proxmox اجرا میکند، در حالی که زیر بار یک ماشین مجازی واحد ممکن است از پا دربیاید.
پاستروی GPU در LXCها کارآمدتر است
نویسنده میگوید دلیل اصلی استفاده گسترده او از LXCها برای ابزارهای مبتنی بر هوش مصنوعی، کارایی بالاتر آنها در پاستروی پردازنده گرافیکی (GPU Passthrough) است. اجرای یک برنامه هوش مصنوعی مبتنی بر ماشین مجازی در Proxmox با پاستروی GPU ممکن است با کمی تلاش امکانپذیر باشد، اما پاستروی همزمان یک کارت گرافیک به چند ماشین مجازی تقریباً با سختافزار فعلی او غیرممکن است. این کار به قابلیت SR-IOV روی کارت گرافیک نیاز دارد که کارتهای مصرفی انویدیا (Nvidia) او از آن بیبهرهاند.
در مقابل، LXCها نهتنها فرایند سادهای برای پاستروی GPU دارند، بلکه چند کانتینر میتوانند بدون نیاز به سختافزار سطح سازمانی، یک کارت گرافیک را به اشتراک بگذارند. در این حالت، درایورها و زمانبند (Scheduler) درخواستهای همزمان را مدیریت میکنند و اولویت هر یک را تعیین میکنند.
او نمونههایی از این استفاده را برمیشمارد: سرور llama.cpp در قالب پایه Debian که با کارت GTX 1080 قدیمیاش برای مدلهای بزرگ MoE کار میکند؛ برنامه Immich که برای برخی قابلیتهای هوش مصنوعی از GPU بهره میبرد و به صورت LXC مستقر شده است؛ و همچنین Frigate، Jellyfin، TensorFlow و دیگر ابزارهای کانتینری. به گفته او، حتی میتوان ابزارهای بازی از راه دور بدون نمایشگر (Headless Remote Gaming) را در یک LXC راهاندازی کرد تا از کارت گرافیک استفاده کنند، در حالی که به سایر کانتینرها نیز متصل است.
ماشینهای مجازی هنوز جایگاه خود را دارند
با وجود مهاجرت بسیاری از پروژهها به LXC، نویسنده هنوز از چند ماشین مجازی روی میزبانهای Proxmox خود استفاده میکند؛ البته روی رایانههایی که توان اجرای ماشین مجازی بدون توقف را دارند. به گفته او، LXCها نمیتوانند همان سطح جداسازی (Isolation) ماشینهای مجازی سنتی را ارائه دهند، بنابراین ترجیح میدهد سرویسهای ناامن را داخل کانتینر اجرا نکند. همچنین بسیاری از سیستمعاملهایی که برای بهرهوری روزمره استفاده میکند، از جمله Windows 11 و Qubes OS، قالب LXC ندارند و تنها راه اجرای آنها روی گرههای Proxmox، ماشین مجازی است.