LXD چیست و نحوه ذخیره سازی آن به چه صورت است؟
LXD یک گزینه منبع باز مناسب برای کنترل و مدیریت ماشینهای مجازی و کانتینرهای سیستم است. این سیستم، گسترده و ایمن بوده و بدون هزینههای اضافی ارائه میشود. با استفاده از LXD، قادر خواهید بود به راحتی بارهای کاری خود را مدیریت کرده و از طریق یک رابط کاربری وب کاربرپسند، آنها را بر اساس نیازهای خود پیکربندی کنید.
در دنیای فناوری اطلاعات، مفهوم مجازیسازی به عنوان یک پیشرفت اساسی شناخته میشود که به سیستمهای کامپیوتری ابعاد جدیدی اضافه میکند. یکی از ابزارهای مهم در این زمینه، LXD است. این فناوری قدرتمند امکان ایجاد و مدیریت محیطهای مجازی را با تمرکز بر روی استخرهای ذخیرهسازی فراهم میکند. پیش تر به مفاهیم اساسی ذخیره سازی و استوریج پرداختهایم. در این مقاله، به بررسی عمیقتر LXD و روشهای ذخیرهسازی دادهها در آن خواهیم پرداخت در نتیجه میتوانید اطلاعات جامع و کاربردی را در اختیار داشته باشید.
فهرست مطالب
- چرا LXD؟
- ویژگی های مهم LXD
- دیگر ویژگی ها و امکانات LXD
- حجم های ذخیره سازی
- انواع محتوا
- باکتهای ذخیره سازی
چرا LXD؟
هر نوع حجم کاری را میتوان اجرا کرد
LXD یک پلتفرم مجازیسازی منبع باز است که هم ماشینهای مجازی بر پایه KVM و هم کانتینرهای سیستم بر پایه LXC را که میتوانند یک سیستم عامل لینوکس کامل را اجرا کنند، ساپورت میکند. این تکنولوژی دارای ویژگیهای مدیریت داخلی متعددی است که شامل مواردی از قبیل مهاجرت لایو، اسنپشات، محدودیتهای منابع، پروژهها و نمایهها میباشد و با گزینههای مختلف ذخیرهسازی و شبکه تعامل دارد.
تجربه ای شبیه تکنولوژی ابری
LXD مبتنی بر ایمیج است و از ایمیجها برای تعداد زیادی از توزیع های لینوکس و همچنین ماشینهای مجازی ویندوز پشتیبانی میکند. این دستگاه دارای فروشگاههای ایمیج داخلی است که به شما این امکان را میدهد که کانتینر یا ماشین مجازی خود را در عرض چند ثانیه عوض کنید. ادغامهای موجود با ابزارهای مختلف، به شما این امکان را میدهد که زیرساخت خود را به روش ابری مدیریت کنید. وقتی LXD با فضای ذخیرهسازی و شبکهای تعریفشده توسط نرمافزار ترکیب میشود، به یک نرم افزار ابری سبک به نام MicroCloud تبدیل میشود.
ایمن و مقیاس پذیر
LXD به طور پیشفرض اجرای کانتینرهای امن را فراهم میکند و از سیستم میزبان در برابر حملات محتمل محافظت میکند. برای ماشینهای مجازی، LXD از سختافزار مجازی مدرن به نام VirtIO به طور انحصاری استفاده میکند. این فناوری از UEFI SecureBoot و پشتیبانی از vTPM نیز بهره میبرد. همچنین، محدودیتهای منابع از طریق cgroups و ulimits و کنترل دقیق دسترسی نیز پشتیبانی میشود. قابلیت مقیاسپذیری LXD بسیار زیاد است، از اجرای کانتینرها روی لپتاپ گرفته تا هزاران instance در دیتا سنتر را شامل میشود.
ویژگی های مهم LXD
- انعطافپذیری در محدودیتهای منابع مانند CPU، حافظه، I/O شبکه و فضای دیسک، همچنین برخی منابع کرنل
- قابلیت پیشرفته اسنپشات با ویژگیهایی مانند زمانبندی و انقضای خودکار
- پروژههایی برای تقسیمبندی سرور LXD برای امنیت
- استفاده از سختافزارهای مختلف از جمله GPU، USB، NIC و دیسکها
- پشتیبانی از مهاجرت لایو و اسنپشات
- استفاده از پشتیبانی شبکه پیشرفته از جمله OVN، SR-IOV و شتاب سختافزاری
- امکان خوشهبندی با توانایی بالا هنگام ترکیب با CEPH و OVN برای ذخیرهسازی و تقویت شبکه
- انتشار LTS هر دو سال یک بار و پشتیبانی برای پنج سال
- امکان پشتیبانی تجاری از طریق برخی توزیع های لینوکس
دیگر ویژگی ها و امکانات LXD
استخرهای ذخیره سازی
LXD اطلاعات خود را در استخرهای ذخیرهسازی ذخیره میکند که به حجمهای ذخیرهسازی با محتواهای مختلف مانند ایمیجها یا instance ها تقسیم میشوند. میتوانید یک استخر ذخیرهسازی را به عنوان یک دیسک برای ذخیره دادهها در نظر بگیرید که حجمهای ذخیرهسازی بر روی پارتیشنهای مختلف این دیسک برای اهداف خاص استفاده میشوند.
در مرحله اولیه، LXD از شما میخواهد که اولین استخر ذخیرهسازی را ایجاد کنید. در صورت نیاز، میتوانید بعداً استخرهای ذخیرهسازی اضافی را ایجاد کنید. هر استخر ذخیرهسازی از یک درایور ذخیرهسازی استفاده میکند و درایورهای زیر پشتیبانی میشوند:
- Directory
- Btrfs
- LVM
- ZFS
- Ceph RBD
- CephFS
محل ذخیره داده ها
محل ذخیره دادههای LXD و نحوه پیکربندی و انتخاب درایور ذخیرهسازی متناسب است. با توجه به درایور ذخیرهسازی مورد استفاده، LXD میتواند سیستم فایل را با میزبان به اشتراک بگذارد یا دادهها را جداگانه نگه دارد.
محل ذخیره داده ها | دایرکتوری | BTRFS | LVM | ZFS | CEPH RBD | CEPHFS |
اشتراک گذاری با هاست | ✔ | ✔ | ✖ | ✔ | ✖ | ✖ |
دیسک/پارتیشن اختصاصی | ✖ | ✔ | ✔ | ✔ | ✖ | ✖ |
Loop disk | ✖ | ✔ | ✔ | ✔ | ✖ | ✖ |
ذخیره سازی از راه دور | ✖ | ✖ | ✖ | ✖ | ✔ | ✔ |
اشتراک گذاری با هاست
اشتراکگذاری سیستمفایل با هاست به طور عمومی به عنوان کارآمدترین روش برای اجرای LXD شناخته میشود. در اکثر موارد، مدیریت این روش نیز به سادگی انجام میشود. این گزینه برای درایور dir، درایور btrfs (در صورتی که هاست از Btrfs استفاده میکند و LXD به یک ساب ولوم اختصاصی ارجاع داده میشود) و درایور zfs (در صورتی که هاست از ZFS استفاده میکند و LXD به یک مجموعه داده اختصاصی در zpool خود ارجاع میدهد) پشتیبانی میشود.
دیسک یا پارتیشن اختصاصی
استفاده از LXD به این معناست که یک پارتیشن خالی بر روی دیسک اصلی یا یک دیسک اختصاصی کامل را به طور کامل مستقل از هاست نگه داشته میشود. این روش برای درایورهای btrfs، lvm و zfs قابلیت پشتیبانی را دارد.
Loop disk
LXD قادر است یک فایل حلقه را در درایو اصلی شما ایجاد کرده و از آن به عنوان درایور ذخیرهسازی استفاده کند. این روش از نظر عملکردی شبیه به استفاده از دیسک یا پارتیشن است، با این تفاوت که از یک فایل بزرگ در درایو اصلی استفاده میکند. این بدان معناست که هر عملیات نوشتن باید از طریق درایور ذخیرهسازی و سیستم فایل در درایو اصلی انجام شود که ممکن است منجر به کاهش عملکرد شود.
اگر از snap استفاده میکنید، فایلهای حلقه در مسیرهای /var/snap/lxd/common/lxd/disks/ یا /var/lib/lxd/disks/ ذخیره میشوند. فایلهای حلقه به طور عمومی اندازهای کوچک ندارند. آنها تا زمانی که توسط پیکربندی تعیین شدهاست، بزرگ میشوند و حذف ایمیجها یا instance ها تاثیری در کوچک شدن آنها ندارد. اما شما میتوانید اندازه آن ها را افزایش دهید.
ذخیره سازی از راه دور
درایورهای ceph و cephfs دادهها را در یک خوشه ذخیرهسازی کاملاً مستقل به نام Ceph ذخیره میکنند که باید به صورت جداگانه پیکربندی شود.
استخر (pool) ذخیره سازی پیش فرض
در LXD، مفهوم یک استخر ذخیرهسازی پیشفرض وجود ندارد. هنگامی که یک حجم ذخیرهسازی ایجاد میکنید، شما باید استخر ذخیرهسازی مورد استفاده را مشخص کنید. زمانی که LXD به صورت خودکار یک حجم ذخیرهسازی را در زمان ایجاد ایمیج یا instance ایجاد میکند، از استخر ذخیرهسازی مشخص شده برای آنها استفاده میکند. این تنظیمات را میتوان به یکی از روشهای زیر تنظیم کرد:
- مستقیماً روی یک اینتنس:
lxc launch <image> <instance_name> --storage <storage_pool>
- از طریق یک نمایه:
lxc profile device add <profile_name> root disk path=/ pool=<storage_pool>
- از طریق نمایه پیش فرض
در یک نمایه، استخر ذخیره سازی مورد استفاده توسط استخر برای دستگاه دیسک root تعریف می شود:
root:
type: disk
path: /
pool: default
در نمایه پیشفرض، این Pool روی استخر ذخیرهسازیای تنظیم میشود که در حین مقداردهی اولیه ایجاد شده است.
حجم های ذخیره سازی
هنگام ساختن یک instance یا نمونه، LXD به طور خودکار حجمهای ذخیرهسازی مورد نیاز برای آن را ایجاد میکند و امکان ایجاد حجمهای ذخیرهسازی اضافی نیز وجود دارد.
انواع حجم ذخیره سازی
حجمهای ذخیره سازی میتوانند از انواع زیر باشد:
کانتینر/ماشین مجازی
هنگام راهاندازی یک instance یا نمونه، LXD به طور خودکار یکی از این حجمهای ذخیرهسازی را ایجاد میکند که به عنوان دیسک root برای instance استفاده میشود. این حجم ذخیرهسازی در استخر ذخیرهسازی ایجاد میشود که در instance مورد استفاده هنگام راهاندازی آن مشخص شده است. هنگام حذف instance، این حجم نیز از بین میرود.
ایمیج
هنگام باز کردن یک فایل ایمیج توسط LXD برای ایجاد یک یا چند instance، به طور خودکار یکی از این حجمهای ذخیرهسازی ایجاد میشود. پس از ایجاد instance، امکان حذف آن وجود دارد. در صورتی که به صورت دستی حذف نشود، ده روز پس از آخرین استفاده از آن برای راهاندازی یک instance، به طور خودکار حذف میشود. حجم ذخیرهسازی ایمیج در همان استخر ذخیرهسازی حجم ذخیرهسازی instance ایجاد میشود و این امر فقط برای استخرهای ذخیرهسازیای است که از درایور ذخیرهسازی و از ذخیرهسازی بهینه ایمیج پشتیبانی میکنند.
سفارشی
میتوانید برای نگهداری دادههایی که میخواهید جدا از instance های خود ذخیره کنید، یک یا چند حجم ذخیرهسازی سفارشی اضافه کنید. این حجمهای ذخیرهسازی سفارشی را میتوانید بین instance ها به اشتراک بگذارید و تا زمانی که آنها را حذف نکنید، حفظ میشوند. همچنین میتوانید از این حجمهای ذخیرهسازی سفارشی برای نگهداری نسخههای پشتیبان یا ایمیجهای خود استفاده کنید. هنگام ایجاد یک حجم سفارشی، باید استخر ذخیرهسازی مورد استفاده را مشخص کنید.
انواع محتوا
هر حجم ذخیره سازی از یکی از انواع محتوای زیر استفاده میکند:
فایل سیستم
این نوع محتوا برای کانتینرها و ایمیج کانتینر استفاده میشود و به صورت پیشفرض برای حجمهای ذخیرهسازی سفارشی استفاده میشود. حجمهای ذخیرهسازی سفارشی این نوع محتوا را میتوان بهصورت همزمان به کانتینرها و ماشینهای مجازی متصل کرد و امکان به اشتراک گذاری آنها بین instance ها نیز وجود دارد.
بلوک
این نوع محتوا برای ماشینهای مجازی و ایمیج ماشین مجازی استفاده میشود. با استفاده از پرچم –type=block، میتوانید یک حجم ذخیرهسازی سفارشی از نوع بلوک ایجاد کنید. حجمهای ذخیرهسازی سفارشی بلوک را فقط میتوان به ماشینهای مجازی متصل کرد و از اشتراک گذاری آنها بین instance ها باید خودداری شود، زیرا دسترسی همزمان ممکن است منجر به از بین رفتن دادهها شود.
ISO
این نوع محتوا برای حجمهای ISO سفارشی استفاده میشود. برای ایجاد یک حجم ذخیرهسازی سفارشی از نوع iso، کافی است یک فایل ISO را با استفاده از ایمپورت حجم ذخیرهسازی LXC وارد کنید. حجمهای ذخیرهسازی سفارشی از نوع محتوای iso را میتوان به ماشینهای مجازی متصل کرد و این امکان وجود دارد که آنها را به صورت همزمان به چندین ماشین متصل کنید، زیرا همیشه فقط خواندنی هستند.
باکتهای ذخیره سازی
باکتها یا سطلهای ذخیرهسازی امکان ذخیرهسازی اشیا از طریق پروتکل S3 را فراهم میکنند. این اشیا را میتوان به روشی مشابه حجمهای ذخیرهسازی سفارشی استفاده کرد، با این تفاوت که سطلهای ذخیرهسازی به یک instance متصل نمیشوند. به جای اینکه به instance متصل شوند، برنامهها میتوانند مستقیماً از طریق URL به یک سطل ذخیرهسازی دسترسی پیدا کنند. هر سطل ذخیرهسازی دارای یک یا چند کلید دسترسی است که برنامهها برای دسترسی به آن باید از آنها استفاده کنند.
سطلهای ذخیرهسازی را میتوانید در محل ذخیرهسازی لوکال (با استفاده از استخرهای dir، btrfs، lvm یا zfs) یا در ذخیرهسازی از راه دور (با استفاده از استخرهای cephobject) قرار دهید. برای فعالسازی سطلهای ذخیرهسازی برای درایورهای استخر ذخیرهسازی محلی و اجازه دادن به برنامهها برای دسترسی به این سطلها از طریق پروتکل S3، باید تنظیمات سرور core.storage_buckets_address را پیکربندی کنید.
نتیجه گیری
در نتیجه، میتوان گفت که LXD یک پلتفرم مجازیسازی قدرتمند است که توانایی اجرای ماشینهای مجازی و کانتینرها را در یک محیط باز و امن فراهم میکند. رویکردهای مدیریت داخلی آن از جمله مهاجرت لایو، اسنپشات و محدودیتهای منابع، امکانات مهمی برای مدیریت سیستمهای مجازی ارائه میدهد. اما بخش مهمی از موفقیت استفاده موثر از LXD، درک صحیح از روشهای ذخیرهسازی آن است. بهترین استفاده از این تکنولوژی نیازمند شناخت دقیق از نحوه ذخیرهسازی دادهها و پیکربندیهای مربوطه میباشد تا از امنیت، کارایی و بهرهوری مطلوب برخوردار شود.