Canonical انتشار کانتینر منیجر LXD 5.0 و سیستم فایل مجازی LXCFS 5.0 را منتشر کرده است. کد LXD در Go نوشته شده و تحت مجوز Apache 2.0 توزیع شده است. شعبه 5.0 به عنوان نسخه پشتیبانی طولانی مدت طبقه بندی می شود - به روز رسانی ها تا ژوئن 2027 تولید می شود.
به عنوان زمان اجرا برای راه اندازی کانتینرها، از جعبه ابزار LXC استفاده می شود که شامل کتابخانه liblxc، مجموعه ای از ابزارها (lxc-create، lxc-start، lxc-stop، lxc-ls، و غیره)، قالب هایی برای ساخت کانتینرها و یک مجموعه ای از اتصالات برای زبان های برنامه نویسی مختلف. جداسازی با استفاده از مکانیزم های استاندارد هسته لینوکس انجام می شود. برای جداسازی فرآیندها، پشته شبکه ipc، uts، شناسه های کاربر و نقاط نصب، از مکانیسم فضاهای نام استفاده می شود. cgroup ها برای محدود کردن منابع استفاده می شوند. برای کاهش امتیازات و محدود کردن دسترسی، از ویژگیهای هسته مانند پروفایلهای Apparmor و SELinux، سیاستهای Seccomp، Chroots (pivot_root) و قابلیتها استفاده میشود.
علاوه بر LXC، LXD از اجزای پروژه های CRIU و QEMU نیز استفاده می کند. اگر LXC یک جعبه ابزار سطح پایین برای دستکاری در سطح کانتینرهای منفرد است، LXD ابزارهایی را برای مدیریت متمرکز کانتینرها ارائه می دهد که در خوشه ای از چندین سرور مستقر شده اند. LXD به عنوان یک فرآیند پسزمینه پیادهسازی میشود که درخواستها را از طریق شبکه از طریق REST API میپذیرد و از پشتیبانهای ذخیرهسازی مختلف (درخت فهرست، ZFS، Btrfs، LVM)، عکسهای فوری با یک برش حالت، مهاجرت زنده کانتینرهای در حال اجرا از یک ماشین به ماشین دیگر، پشتیبانی میکند. و ابزارهایی برای ذخیره ظروف تصاویر. LXCFS برای شبیه سازی شبه FS /proc و /sys در کانتینرها و نمایش مجازی cgroupfs استفاده می شود تا ظاهر یک سیستم مستقل منظم را به کانتینرها بدهد.
پیشرفت های کلیدی:
- امکان اتصال و جدا کردن درایوها و دستگاه های USB به صورت داغ. در یک ماشین مجازی، یک دیسک جدید با ظاهر شدن یک دستگاه جدید در گذرگاه SCSI شناسایی میشود و یک دستگاه USB با تولید یک رویداد USB hotplug شناسایی میشود.
- راه اندازی LXD حتی در مواقعی که برقراری ارتباط شبکه غیرممکن باشد، مثلاً به دلیل عدم وجود دستگاه شبکه لازم، امکان پذیر است. LXD به جای نمایش خطا در هنگام راه اندازی، اکنون حداکثر تعداد محیط های ممکن را در شرایط فعلی راه اندازی می کند و محیط های باقی مانده پس از برقراری اتصال شبکه راه اندازی می شوند.
- یک نقش عضو کلاستر جدید اضافه شده است - ovn-chassis، در نظر گرفته شده برای خوشه هایی که از OVN (شبکه مجازی باز) برای ارتباطات شبکه استفاده می کنند (با اختصاص دادن نقش ovn-chassis، می توانید سرورهایی را برای انجام عملکرد روترهای OVN انتخاب کنید).
- یک حالت بهینه برای به روز رسانی محتویات پارتیشن های ذخیره سازی پیشنهاد شده است. در نسخههای قبلی، بهروزرسانی ابتدا شامل کپی کردن یک نمونه یا پارتیشن کانتینر بود، به عنوان مثال، با استفاده از قابلیت ارسال/دریافت در zfs یا btrfs، پس از آن کپی ایجاد شده با اجرای برنامه rsync همگامسازی شد. برای بهبود کارایی بهروزرسانی ماشینهای مجازی، نسخه جدید از منطق مهاجرت پیشرفته استفاده میکند که در آن، اگر سرورهای مبدا و مقصد از یک مخزن ذخیرهسازی استفاده کنند، بهجای rsync، از عکسهای فوری و عملیات ارسال/دریافت بهطور خودکار استفاده میشود.
- منطق شناسایی محیطها در Cloud-init مجدداً کار شده است: به جای نام محیطها، UUID اکنون به عنوان instance-id استفاده میشود.
- پشتیبانی اضافه شده برای اتصال به تماس سیستمی sched_setscheduler، که به کانتینرهای غیرمجاز اجازه می دهد اولویت های فرآیند را تغییر دهند.
- گزینه lvm.thinpool_metadata_size برای کنترل اندازه ابرداده در thinpool پیاده سازی شده است.
- قالب فایل با اطلاعات شبکه برای lxc دوباره طراحی شده است. پشتیبانی از داده ها در اتصال رابط، پل های شبکه، شبکه VLAN و OVN اضافه شده است.
- الزامات حداقل نسخه های مؤلفه افزایش یافته است: هسته لینوکس 5.4، Go 1.18، LXC 4.0.x و QEMU 6.0.
- LXCFS 5 پشتیبانی از سلسله مراتب cgroup یکپارچه (cgroup2) را اضافه کرد، /proc/slabinfo و /sys/devices/system/cpu را پیاده سازی کرد و از جعبه ابزار meson برای مونتاژ استفاده کرد.
منبع: opennet.ru