SYSTEMD-MACHINED.SERVICE(8) systemd-machined.service SYSTEMD-MACHINED.SERVICE(8)

systemd-machined.service, systemd-machined - مدیر ثبت ماشین‌های مجازی و کانتینرها

systemd-machined.service

/usr/lib/systemd/systemd-machined

systemd-machined یک سرویس سیستمی است که ماشین‌های مجازی و کانتینرهای در حال اجرای محلی را ردیابی می‌کند.

systemd-machined برای ثبت و ردیابی هم کانتینرهای سیستم‌عامل (کانتینرهایی که از هسته میزبان به‌صورت اشتراکی استفاده می‌کنند اما سیستم init کامل خودشان را اجرا می‌نمایند و از بیشتر جهات شبیه به یک سیستم‌عامل مجازی کامل رفتار می‌کنند تا صرفاً یک برنامه مجازی‌سازی‌شده) و هم ماشین‌های مجازی کامل (سخت‌افزار مجازی‌سازی‌شده که سیستم‌عامل‌های عادی و احتمالاً هسته‌های متفاوتی را اجرا می‌کند) سودمند است.

systemd-machined نباید برای ثبت/ردیابی کانتینرهای ایزوله‌سازی برنامه (sandbox) به کار رود. یک ماشین در چارچوب systemd-machined اصطلاحی انتزاعی در نظر گرفته می‌شود که هم کانتینرهای سیستم‌عامل و هم ماشین‌های مجازی کامل را در بر می‌گیرد، اما شامل کانتینرهای sandbox برنامه‌ها نمی‌شود.

ماشین‌های ثبت‌شده در machined به روش‌های گوناگونی در سیستم ارائه می‌شوند. برای نمونه:

•ابزارهایی مانند ps(1) در ستونی جداگانه نشان خواهند داد که یک فرایند مشخص به کدام ماشین تعلق دارد، و همچنین gnome-system-monitor[1] یا systemd-cgls(1).
•ابزارهای گوناگون systemd (مانند systemctl(1)، journalctl(1)، loginctl(1)، hostnamectl(1)، timedatectl(1)، localectl(1)، machinectl(1)، ...) از سوئیچ -M برای کار با کانتینرهای محلی به‌جای سیستم میزبان پشتیبانی می‌کنند.
•دستور systemctl list-machines وضعیت سیستمی همه کانتینرهای محلی را نشان می‌دهد و بدین منظور به سیستم init کانتینر متصل می‌شود.
•سوئیچ --recursive در systemctl این اثر را دارد که نه‌تنها سرویس‌های محلی در حال اجرا، بلکه به‌صورت بازگشتی سرویس‌های تمامی کانتینرهای ثبت‌شده را نیز نمایش می‌دهد.
•دستور machinectl امکان دسترسی به چندین عملیات کاربردی روی کانتینرهای ثبت‌شده را فراهم می‌آورد، نظیر بررسی وضعیت آن‌ها، راه‌اندازی مجدد، خاموش کردن و دریافت اعلان ورود به سیستم (login prompt) در آن‌ها.
•کتابخانه sd-bus(3) فراخوانی sd_bus_open_system_machine(3) را برای اتصال به گذرگاه سیستم (system bus) هر کانتینر ثبت‌شده ارائه می‌دهد.
•ماژول nss-mymachines(8) اطمینان حاصل می‌کند که همه کانتینرهای ثبت‌شده از طریق فراخوانی‌های عادی glibc مانند gethostbyname(3) یا getaddrinfo(3) قابل تحلیل و شناسایی (resolve) باشند.

برای دیدن نمونه‌هایی از نحوه اجرای کانتینرها با ابزارهای سیستم‌عامل، به systemd-nspawn(1) مراجعه کنید.

اگر علاقه‌مند به نوشتن یک مدیر ماشین مجازی یا کانتینر هستید که از machined استفاده کند، لطفاً به Writing Virtual Machine or Container Managers[2] نگاهی بیندازید. همچنین به New Control Group Interfaces[3] مراجعه کنید.

این دیمن هم یک رابط کتابخانه C (که با systemd-logind.service(8) مشترک است) و هم یک رابط D-Bus و یک رابط Varlink ارائه می‌دهد. رابط کتابخانه را می‌توان برای بررسی و پایش وضعیت ماشین‌های مجازی/کانتینرها به کار برد. رابط گذرگاه همین قابلیت‌ها را فراهم می‌کند، اما علاوه بر آن می‌تواند برای ثبت یا خاتمه دادن به ماشین‌ها نیز استفاده شود. رابط Varlink می‌تواند برای ثبت ماشین‌ها با افزونه‌های اختیاری، مانند کلید / آدرس SSH به کار رود؛ می‌توان با varlinkctl introspect /run/systemd/machine/io.systemd.Machine io.systemd.Machine از آن پرس‌وجو کرد. برای اطلاعات بیشتر لطفاً به sd-login(3)، org.freedesktop.machine1(5) و org.freedesktop.LogControl1(5) مراجعه نمایید.

یک دیمن کوچک همراه به نام systemd-importd.service(8) نیز در دسترس است که درون‌ریزی، برون‌ریزی و بارگیری تصاویر کانتینر و ماشین مجازی را پیاده‌سازی می‌کند.

برای هر کانتینر ثبت‌شده در systemd-machined.service که از فضای نام کاربری (user namespacing) استفاده می‌کند، کاربران/گروه‌ها برای UIDها/GIDهای به‌کاررفته سنتز می‌شوند. این موارد با استفاده از User/Group Record Lookup API via Varlink[4] در دسترس سیستم قرار می‌گیرند و بنابراین می‌توان آن‌ها را با userdbctl(1) یا فراخوانی‌های معمول NSS در glibc شناسایی کرد.

systemd(1), machinectl(1), systemd-nspawn(1), nss-mymachines(8), systemd.special(7), org.freedesktop.machine1(5), ssh(1)

1.
gnome-system-monitor
2.
Writing Virtual Machine or Container Managers
3.
New Control Group Interfaces
4.
User/Group Record Lookup API via Varlink
systemd 261.2