libvirt یک API مدیریتی برای backendهایی مثل QEMU و Xen است. امشب connection درست و مدل daemon نصب واقعی را مشخص می‌کنیم تا VM در جای دیگری «گم» نشود.

این جلسه بخشی از دورهٔ لینوکس ۳۰۵ در ۶۰ شب است.

جایگاه در دوره: هدف‌های 351.4 آزمون 305-300.

محیط: hv-a و hv-b با Ubuntu 24.04، hostهای هم‌نسخه؛ حساب مدیریت آزمایشگاه جدا از student داخل guest است.

sudo apt install libvirt-daemon-system libvirt-clients virtinst libguestfs-tools
sudo usermod -aG libvirt,kvm "$USER"
systemctl list-unit-files 'libvirtd*' 'virtqemud*' 'virtnetworkd*' 'virtstoraged*'

عضویت libvirt قدرت ادارهٔ guest و resourceهای host می‌دهد؛ آن را مانند دسترسی مدیریتی محافظت کن. نشست تازه بگیر. یکی از مدل‌های موجود را فعال کن: libvirtd.socket برای monolithic یا socketهای modular مطابق package نصب‌شده. هم‌زمان هر دو معماری را برای رفع خطا فعال نکن.

virsh -c qemu:///system uri
virsh -c qemu:///system version
virsh -c qemu:///system nodeinfo
virsh -c qemu:///system list --all
virsh -c qemu:///session list --all

system daemon سراسری و session محیط کاربر است؛ inventory، شبکه و permission یکسان ندارند. در این دوره libvirt همیشه system است و direct QEMU را خودبه‌خود به inventory اضافه نمی‌کند.

سرویس‌های کمکی#

virtlogd log فرایند guest و virtlockd قفل resource را اداره می‌کنند؛ modular daemonهایی مانند virtqemud، virtnetworkd و virtstoraged وظیفهٔ جدا دارند. فایل‌های /etc/libvirt policy host و XML domain/network/pool objectها را توصیف می‌کنند.

آزمون: URI را در evidence هر عملیات ثبت کن. خطای authentication را با chmod socket یا افزودن همه به group حل نکن؛ permission، polkit و activation را بررسی کن.

بازگشت: هنوز domain تازه‌ای نداریم؛ service model و گروه قبلی را ثبت کن. تغییر daemon یا package روی host دارای VM به پنجرهٔ نگه‌داری نیاز دارد.

منبع: daemonهای libvirt ، URIها ، virsh .