fuse-overlayfs(1) General Commands Manual fuse-overlayfs(1)

fuse-overlayfs - ترکیب درخت‌های دایرکتوری در فضای کاربری

سوار کردن (mounting)
fuse-overlayfs [-f] [-d] [-o OPTION[,OPTION2, ...]] mountpoint
پیاده کردن (unmounting)
fusermount -u mountpoint

دستور fuse-overlayfs دو یا چند درخت دایرکتوری را با یکدیگر ترکیب (هم‌پوشانی یا overlay) می‌کند. این ابزار می‌تواند توسط کاربران فاقد امتیاز در یک فضای نام کاربری (user namespace) استفاده شود. این برنامه با FUSE ساخته شده است و با لینوکس 4.18 یا جدیدتر کار می‌کند.

اجرا در پیش‌زمینه.
فعال‌سازی حالت اشکال‌زدایی؛ خروجی این حالت می‌تواند بسیار پرحجم و شلوغ باشد.
فهرستی از دایرکتوری‌ها که با : از یکدیگر جدا شده‌اند. محتوای آن‌ها ادغام می‌شود.
دایرکتوری‌ای که روی تمام دایرکتوری‌های پایینی (lowerdirs) ادغام می‌شود و تمام تغییرات اعمال‌شده بر روی سیستم فایل در آن نوشته خواهد شد.
دایرکتوری‌ای که به صورت داخلی توسط fuse-overlayfs استفاده می‌شود؛ این پوشه باید روی همان سیستم فایلِ upperdir قرار داشته باشد.

-o uidmapping=UID:MAPPED-UID:LEN[,UID2:MAPPED-UID2:LEN2]

مشخص کردن نگاشت پویای UID/GID مورد استفاده توسط fuse-overlayfs هنگام خواندن/نوشتن فایل‌ها در سیستم.
مالکیت تمام فایل‌ها و دایرکتوری‌ها را به کاربر ریشه (0:0) اختصاص می‌دهد.

-o squash_to_uid=uid

مالکیت تمام فایل‌ها و دایرکتوری‌ها را به uid یا gid مشخص‌شده اختصاص می‌دهد. این گزینه نسبت به squash_to_root اولویت بالاتری دارد.
مقدار st_nlink را برای تمام دایرکتوری‌ها روی مقدار ثابت 1 تنظیم می‌کند. این گزینه می‌تواند برای سیستم‌های فایل با تأخیر بالاتر مانند NFS مفید باشد، جایی که شمارش تعداد پیوندهای سخت برای یک دایرکتوری با فایل‌های بسیار، ممکن است عملیاتی کند باشد. با فعال بودن این گزینه، تعداد پیوندهای سخت گزارش‌شده هنگام اجرای stat برای هر دایرکتوری برابر با 1 خواهد بود.
غیرفعال کردن پشتیبانی از ACL در سیستم فایل FUSE.
چگونگی تولید مقادیر st_ino را برای فایل‌های بازگردانده شده توسط fuse-overlayfs کنترل می‌کند. هنگامی که تمام لایه‌های پایینی و بالایی روی یک دستگاهِ زیرین یکسان قرار دارند، fuse-overlayfs شماره inode واقعی را از سیستم فایل زیرین ارائه می‌دهد. هنگامی که لایه‌ها روی چندین دستگاه پخش شده‌اند، یک شماره inode مبهم تولید می‌شود؛ به صورت پیش‌فرض این مقدار در طول سوار کردن‌های مختلف پایدار نیست.

گزینهٔ xino این رفتار را تغییر می‌دهد:

تولید inode گسترش‌یافته را غیرفعال می‌کند. این مطابق با رفتار پیش‌فرض است: وقتی تمام لایه‌ها روی یک دستگاه قرار دارند، از شماره inode زیرین استفاده می‌شود؛ در غیر این صورت یک شماره inode مبهم و ناپایدار بازگردانده می‌شود.
تلاش می‌کند تا با هش کردن هندل فایل بازگردانده شده توسط name_to_handle_at(2)، شماره‌های inode پایداری را در طول سوار کردن‌های مختلف ایجاد کند. این حالت تنها در صورتی استفاده می‌شود که تمام لایه‌ها از name_to_handle_at(2) پشتیبانی کنند؛ اگر هر یک از لایه‌ها پشتیبانی نکند، رفتار به xino=off بازمی‌گردد. اگر تمام لایه‌ها روی یک دستگاه باشند، صرف‌نظر از این تنظیم، همچنان از شماره inode زیرین استفاده می‌شود.
نیازمند این است که تمام لایه‌ها از name_to_handle_at(2) پشتیبانی کنند. اگر پشتیبانی کنند، شماره‌های inode از یک هشِ هندل فایل به دست می‌آیند و در طول سوار کردن‌های مختلف پایدار می‌مانند. اگر هر یک از لایه‌ها از name_to_handle_at(2) پشتیبانی نکند، عملیات سوار کردن با شکست مواجه می‌شود. همانند سایر حالت‌ها، هنگامی که تمام لایه‌ها روی یک دستگاه قرار دارند، شماره inode زیرین همواره اولویت دارد.
اجبار می‌کند که تمام مقادیر st_ino بازگردانده شده به ۳۲ بیت کوتاه شوند. این گزینه صرفاً برای سازگاری با فضاهای کاربری ۳۲ بیتی قدیمی‌تری وجود دارد که نمی‌توانند شماره‌های inode شصت و چهار بیتی را به درستی پردازش کنند. این گزینه هیچ مزیت کاربردی در سیستم‌های امروزی ندارد و نباید از آن استفاده شود مگر اینکه برای سازگاری با سیستم‌های قدیمی‌تر ضروری باشد.
نمایش گزینه‌های اضافی ارائه شده توسط FUSE.
نمایش نسخهٔ fuse-overlayfs و FUSE.

نگاشت پویای fuse-overlayfs روشی جایگزین و کم‌هزینه‌تر نسبت به chown کردن فایل‌ها روی میزبان برای انطباق با تنظیمات فضای نام کاربری است.

این قابلیت برای به اشتراک‌گذاری یک فضای ذخیره‌سازی یکسان بین فضاهای نام کاربری مختلف و خنثی کردن اثر نگاشت انجام‌شده توسط خود فضای نام کاربری، بدون نیاز به chown کردن فایل‌ها، بسیار مفید است.

به عنوان مثال، دو فایل با شناسه‌های کاربر و گروه زیر را در نظر بگیرید:

$ stat -c %u:%g lower/a lower/b
0:0
1:1

همچنین به پیکربندی فضای نام کاربری زیر توجه کنید:

$ cat /proc/self/uid_map
         0       1000          1
         1     110000      65536

پس از سوار کردن با fuse-overlayfs، مالکیت به شکل زیر تغییر خواهد کرد:

$ stat -c %u:%g merged/a merged/b
65534:65534
65534:65534

مقدار 65534 همان شناسهٔ سرریز (overflow ID) است که هنگام ناشناخته بودن UID/GID در داخل فضای نام کاربری استفاده می‌شود. این اتفاق به این دلیل رخ می‌دهد که هیچ‌کدام از شناسه‌های کاربری 0 یا 1 نگاشت نشده‌اند.

برای نگاشت آن‌ها، سیستم فایل fuse-overlayfs را با استفاده از پیکربندی فضای نام زیر سوار می‌کنیم:

-o uidmapping=0:1000:1:1:110000:65536,gidmapping=0:1000:1:1:110000:65536

نتیجه به صورت زیر خواهد بود:

$ stat -c %u:%g merged/a merged/b
0:0
1:1

این شناسه‌ها همان‌هایی هستند که از بیرونِ فضای نام کاربری نیز قابل مشاهده‌اند.

fuse(8), mount(8), user_namespaces(7)

دستور fuse-overlayfs از طریق https://github.com/containers/fuse-overlayfs تحت مجوز عمومی گنو (GNU GENERAL PUBLIC LICENSE) نسخهٔ ۳ یا بالاتر در دسترس است.

User Commands