لینوکس ۳۰۵؛ شب ۳۶: نصب LXD و تفاوت آن با ابزارهای LXC
فهرست نوشته
LXD مدیریت image، شبکه و storage را روی امکانات Linux containers میگذارد. امشب یک سرور محلی با شبکهٔ مشخص میسازیم و تفاوت client به نام lxc را با ابزارهای سنتی LXC روشن میکنیم.
این جلسه بخشی از دورهٔ لینوکس ۳۰۵ در ۶۰ شب است.
جایگاه در دوره: هدفهای 352.2 آزمون 305-300.
محیط: VM تازهٔ lxd-a با Ubuntu 24.04، کنسول و دسترسی sudo؛ subnet زیر آزاد است. preseed را روی نصب دارای داده اجرا نکن، زیرا تعریف objectهای موجود را جایگزین میکند.
sudo snap install lxd --channel=5.21/stable
sudo lxd --version
sudo lxc version
اگر snap از قبل نصب است، ابتدا channel و نسخه را با snap list/info بررسی کن؛ دستور نصب، برنامهٔ مهاجرت از package قدیمی نیست. گروه lxd اختیار مدیریت میزبان میدهد؛ مثالها با sudo اجرا میشوند و API شبکه باز نمیشود.
فایل lxd-init.yaml:
config: {}
networks:
- name: lxdbr305
type: bridge
config:
ipv4.address: 10.5.30.1/24
ipv4.nat: "true"
ipv6.address: none
storage_pools:
- name: lpic305-dir
driver: dir
config: {}
profiles:
- name: default
config: {}
devices:
root:
type: disk
path: /
pool: lpic305-dir
eth0:
type: nic
network: lxdbr305
name: eth0
sudo lxd init --preseed < lxd-init.yaml
sudo lxc network show lxdbr305
sudo lxc storage show lpic305-dir
sudo lxc profile show default
driver به نام dir ساده است؛ قابلیت quota و snapshot سریع ZFS/Btrfs را فرض نکن. برای backend دیگر، Clone مستقلی با دیسک آزمایشی بساز.
کدام lxc؟#
client به نام lxc با daemon/API LXD صحبت میکند. ابزارهای سنتی LXC مانند lxc-create، lxc-start، lxc-stop، lxc-attach و lxc-info قرارداد دیگری دارند. در VM جدا میتوان بستهٔ lxc و صفحهٔ man آنها را بررسی کرد؛ config سنتی شامل lxc.rootfs.path، lxc.net.* و نگاشت UID/GID است. این فایل را مستقیم به LXD نده.
Incus پروژهٔ جداست؛ برای تطبیق با هدف آزمون، تمرین اصلی این بخش LXD میماند.
بررسی و بازگشت: bridge، pool و دستگاههای profile باید با YAML برابر باشند؛ شنوندهٔ عمومی API ایجاد نشده باشد. برای شروع دوباره به snapshot VM تازه برگرد، نه حذف pool دارای داده.
منبع: نصب LXD ، initialize و preseed ، LXC .