الکساندر لارسون، خالق Flatpak که در Red Hat کار میکند، نسخه اولیه وصلههای پیادهسازی سیستم فایل Composefs را برای هسته لینوکس ارائه کرد. فایل سیستم پیشنهادی شبیه Squashfs است و همچنین برای نصب تصاویر در حالت فقط خواندنی مناسب است. تفاوت ها به توانایی Composefs در به اشتراک گذاری موثر محتویات تصاویر دیسک نصب شده متعدد و پشتیبانی از احراز هویت داده های قابل خواندن برمی گردد. برخی از زمینههای کاربردی که Composefs ممکن است مفید باشد شامل نصب تصاویر ظرف و استفاده از یک مخزن OSTree مانند Git است.
Composefs از یک مدل ذخیره سازی مبتنی بر محتوا استفاده می کند. شناسه اصلی نام فایل نیست، بلکه هش محتویات فایل است. این مدل قابلیت حذف مجدد را فراهم می کند و به شما امکان می دهد در واقع فقط یک کپی از فایل های یکسان موجود در پارتیشن های نصب شده مختلف را ذخیره کنید. به عنوان مثال، تصاویر کانتینر حاوی بسیاری از فایلهای رایج سیستمی هستند و در صورت استفاده از Composefs، بدون استفاده از ترفندهایی مانند ارسال با استفاده از لینکهای سخت، هر یک از این فایلها توسط تمامی تصاویر نصب شده به اشتراک گذاشته میشوند. در این حالت، فایل های به اشتراک گذاشته شده نه تنها به صورت یک کپی روی دیسک ذخیره می شوند، بلکه هزینه یک ورودی در حافظه پنهان صفحه نیز دارند که امکان ذخیره دیسک و رم را فراهم می کند.
برای صرفه جویی در فضای دیسک، داده ها و ابرداده ها در تصاویر نصب شده از هم جدا می شوند. هنگام نصب، نشان دهید:
- یک نمایه باینری که شامل تمام فراداده های سیستم فایل، نام فایل ها، مجوزها و سایر اطلاعات است، به استثنای محتوای واقعی فایل.
- دایرکتوری پایه که محتویات فایل های تمام تصاویر نصب شده در آن ذخیره می شود. فایل ها در رابطه با هش از محتویاتشان ذخیره می شوند.
یک فهرست باینری برای هر تصویر سیستم فایل ایجاد می شود و دایرکتوری پایه برای همه تصاویر یکسان است. برای تأیید محتویات فایل های جداگانه و کل تصویر در شرایط ذخیره سازی مشترک، می توان از مکانیزم fs-verity استفاده کرد که هنگام دسترسی به فایل ها، مطابقت هش های مشخص شده در فهرست باینری را با محتوای واقعی بررسی می کند (به عنوان مثال، اگر مهاجم تغییری در فایلی در دایرکتوری پایه ایجاد میکند یا دادههایی را که در نتیجه خرابی آسیب دیدهاند، ایجاد میکند، چنین تطبیقی یک مغایرت را نشان میدهد).
منبع: opennet.ru