سیسکو یک سیستم فایل جدید به نام PuzzleFS را پیشنهاد کرده است که به عنوان یک ماژول برای هسته لینوکس پیاده سازی شده و به زبان Rust نوشته شده است. سیستم فایل برای استفاده برای میزبانی کانتینرهای ایزوله طراحی شده است و به توسعه ایده های پیشنهادی در سیستم فایل Atomfs ادامه می دهد. پیاده سازی هنوز در مرحله نمونه اولیه است، از ساخت با شاخه هسته لینوکس rust-next پشتیبانی می کند و تحت مجوزهای Apache 2.0 و MIT باز است.
هدف این پروژه دور زدن محدودیتهایی است که هنگام استفاده از تصاویر ظرف در قالب OCI (Open Container Initiative) ایجاد میشود. PuzzleFS مشکلاتی مانند ذخیره سازی کارآمد داده های تکراری، قابلیت نصب مستقیم، ساخت تصویر قابل تکرار و امنیت حافظه را حل می کند.
برای کپی کردن دادههایی که در کانتینرهای مختلف تکرار میشوند، از الگوریتم FastCDC (تکهکردن سریع محتوای تعریفشده) استفاده میشود که با تقسیم دادهها به قطعات با اندازه دلخواه و حفظ یک فهرست با درهمسازی قطعات پردازششده کار میکند. قطعات تکرار شونده یک بار ذخیره می شوند و به طور مشترک برای همه لایه های سیستم فایل، یعنی. deduplication می تواند نقاط مختلف Mount را پوشش دهد (یک لایه FS جدید را می توان بر اساس یک موجود راه اندازی کرد و از قطعات داده موجود در آن در حین حذف دوبله استفاده کرد).
مونتاژ تکراری تصاویر ظرف از طریق تعریف یک نمایش متعارف از قالب تصویر ظرف به دست می آید. نصب مستقیم به شما امکان میدهد یک تصویر ظرف OCI را از یک فضای ذخیرهسازی مشترک جهانی بدون باز کردن بستهبندی اولیه آن، با استفاده از هش محتویات مانیفست کانتینر به عنوان یک شناسه، سوار کنید. برای تأیید صحت داده ها هنگام استفاده از ذخیره سازی مشترک، می توان از مکانیسم fs-verity استفاده کرد که هنگام دسترسی به فایل ها، مطابقت هش های مشخص شده در فهرست باینری را با محتوای واقعی بررسی می کند.
زبان Rust به این دلیل انتخاب شد که عملکرد بالای کد حاصل را با قابلیتهایی برای کار ایمن با حافظه ترکیب میکند، که خطر آسیبپذیریهای ناشی از مشکلاتی مانند دسترسی به یک ناحیه حافظه پس از آزاد شدن و سرریز شدن مرزهای بافر را کاهش میدهد. استفاده از Rust برای ماژول هسته همچنین امکان به اشتراک گذاری کد بین هسته و اجزای فضای کاربر را برای ایجاد یک پیاده سازی واحد و ایمن فراهم کرد.
از دیگر اهداف پروژه می توان به موارد زیر اشاره کرد: ساخت و نصب بسیار سریع تصاویر، امکان استفاده از مرحله میانی اختیاری برای متعارف سازی تصاویر، اختیاری بودن پاس های درختی کامل به سبک mtree هنگام استفاده از ساختار چند لایه، تحمیل به سبک casync. تغییرات، و معماری آسان برای پیاده سازی.
منبع: opennet.ru