| EXPORTFS(8) | دستورات مدیریت سیستم | EXPORTFS(8) |
نام (NAME)
exportfs - مدیریت جدول سیستمهای پرونده اشتراکی NFS
خلاصه دستور (SYNOPSIS)
/usr/sbin/exportfs [-avi] [-o options,..]
[client:/path ..]
/usr/sbin/exportfs -r [-v]
/usr/sbin/exportfs [-av] -u [client:/path ..]
/usr/sbin/exportfs [-v]
/usr/sbin/exportfs -f
/usr/sbin/exportfs -s
توضیحات (DESCRIPTION)
دستور exportfs جدول فایلسیستمهای اشتراکگذاشتهشده توسط سرور NFS را بهروزرسانی یا دستکاری میکند. یک سرور NFS جدولی از سیستمپروندههای فیزیکی محلی نگهداری میکند که برای کلاینتهای NFS قابل دسترسی هستند. به هر سیستمپرونده در این جدول سیستمپرونده به اشتراک گذاشتهشده (exported file system) یا به اختصار export گفته میشود.
دستور exportfs جدول جاری موارد اشتراکی سرور NFS را مدیریت میکند. جدول اصلی اشتراکها در فایلی به نام /var/lib/nfs/etab نگهداری میشود. این فایل زمانی که یک کلاینت درخواست MOUNT پروتکل NFS ارسال میکند، توسط rpc.mountd خوانده میشود.
بهطور معمول، جدول اصلی اشتراکها با محتویات فایل /etc/exports و فایلهای موجود در دایرکتوری /etc/exports.d از طریق اجرای دستور exportfs -a مقداردهی اولیه میشود. با این حال، مدیر سیستم میتواند با استفاده از دستور exportfs اقدام به افزودن یا حذف موارد اشتراکی بدون دستکاری فایل /etc/exports یا فایلهای زیر /etc/exports.d نماید.
دستور exportfs و برنامه همراه آن rpc.mountd در یکی از دو حالت کار میکنند: حالت سنتی (legacy) که برای نسخه ۲.۴ و نسخههای قدیمیتر هسته لینوکس اعمال میشود، و حالت جدید که برای نسخههای ۲.۶ و بالاتر کاربرد دارد؛ به شرط آنکه سیستمپرونده مجازی nfsd در مسیر /proc/fs/nfsd یا /proc/fs/nfs مونت شده باشد. در هستههای ۲.۶، اگر این سیستمپرونده مونت نشده باشد، حالت سنتی مورد استفاده قرار میگیرد.
در حالت جدید، exportfs هیچ اطلاعاتی به هسته ارسال نمیکند، بلکه این اطلاعات را تنها از طریق فایل /var/lib/nfs/etab در اختیار rpc.mountd قرار میدهد. سپس rpc.mountd در صورت نیاز درخواستهای هسته برای دریافت اطلاعات اشتراکها را مدیریت میکند.
در حالت سنتی، مواردی که یک میزبان خاص را مشخص میکنند (بهجای زیرشبکه یا netgroup)، مستقیماً به جدول اشتراکهای هسته وارد شده و همچنین در فایل /var/lib/nfs/etab نوشته میشوند. علاوه بر این، موارد فهرستشده در /var/lib/nfs/rmtab که با یک درخواست اشتراک غیروابسته به میزبان خاص مطابقت داشته باشند، باعث میشوند یک ورودی مناسب برای میزبان ارائهشده در rmtab به جدول اشتراکهای هسته اضافه شود.
گزینهها (OPTIONS)
- -d kind یا --debug kind
- فعالسازی اشکالزدایی. مقادیر معتبر عبارتند از: all، auth، call، general و parse. اشکالزدایی را میتوان با تنظیم مقدار debug= در بخش [exportfs] از فایل /etc/nfs.conf نیز فعال کرد.
- -a
- اشتراکگذاری یا لغو اشتراک تمامی دایرکتوریها.
- -o options,...
- مشخص کردن فهرستی از گزینههای اشتراکگذاری، دقیقاً همانند شیوه بهکار رفته در exports(5).
- -i
- نادیده گرفتن فایل /etc/exports و فایلهای زیر دایرکتوری /etc/exports.d. تنها گزینههای پیشفرض و گزینههای دادهشده در خط فرمان استفاده خواهند شد.
- -r
- اشتراکگذاری مجدد تمام دایرکتوریها، همگامسازی فایل /var/lib/nfs/etab با /etc/exports و فایلهای زیر /etc/exports.d. این گزینه ورودیهایی از /var/lib/nfs/etab را که از /etc/exports یا فایلهای زیر /etc/exports.d حذف شدهاند پاک کرده و تمام ورودیهایی را که دیگر معتبر نیستند از جدول اشتراک هسته حذف میکند.
- -u
- لغو اشتراک یک یا چند دایرکتوری.
- -f
- چنانچه /proc/fs/nfsd یا /proc/fs/nfs مونت شده باشد، تمام ورودیها از جدول اشتراکهای هسته تخلیه (flush) میشوند. ورودیهای تازه برای کلاینتهای فعال هنگام ارسال درخواست مونت بعدی توسط rpc.mountd به جدول هسته اضافه خواهد شد.
- -v
- حالت پرگو (verbose). هنگام اشتراکگذاری یا لغو آن، گزارش عملیات را نمایش میدهد. هنگام نمایش فهرست جاری موارد اشتراکی، فهرست گزینههای اشتراک را نیز نمایش میدهد.
- -s
- نمایش فهرست جاری موارد اشتراکگذاریشده در قالبی مناسب برای درج در /etc/exports.
فایل پیکربندی (CONFIGURATION FILE)
بخش [exportfs] در فایل پیکربندی /etc/nfs.conf میتواند شامل یک مقدار debug باشد که میتواند یک یا چند مورد از فهرست general، call، auth، parse، all باشد. در صورت ارائه یک فهرست، موارد باید با کاما از هم جدا شوند.
همچنین دستور exportfs مقدار state-directory-path را از هر دو بخش [mountd] و [exportd] تشخیص میدهد.
بحث و بررسی (DISCUSSION)
اشتراکگذاری دایرکتوریها (Exporting Directories)
اولین قالب دستور در خلاصه، نحوه اجرای exportfs هنگام افزودن ورودیهای جدید به جدول اشتراک را نشان میدهد. هنگام استفاده از exportfs -a، تمام موارد اشتراکی فهرستشده در /etc/exports و فایلهای زیر /etc/exports.d به /var/lib/nfs/etab اضافه میشوند. همچنین جدول اشتراکهای هسته در صورت نیاز بهروزرسانی میشود.
آرگومان host:/path یک دایرکتوری محلی را برای اشتراک همراه با کلاینت یا کلاینتهایی که مجاز به دسترسی به آن هستند مشخص میکند. برای مشاهده توضیحات مربوط به گزینههای پشتیبانیشده و قالبهای فهرست دسترسی به exports(5) مراجعه کنید.
نشانیهای IPv6 دارای دو نقطه (:) هستند که در خط فرمان برای جداسازی آرگومانهای "host" و "path" به کار میروند. هنگام مشخص کردن یک کلاینت با استفاده از آدرس خام IPv6، نشانی را درون کروشه قرار دهید. برای آدرسهای شبکه IPv6، پیشوند را دقیقاً پس از کروشه پایانی قرار دهید.
برای به اشتراک گذاشتن یک دایرکتوری با همه (عمومی)، کافی است :/path را مشخص کنید.
گزینههای اشتراک برای یک جفت مشخص از میزبان/دایرکتوری از چندین منبع مشتق میشوند. گزینههای پیشفرض اشتراک عبارتند از: sync,ro,root_squash,wdelay. این موارد را میتوان با ورودیهای موجود در /etc/exports یا فایلهای زیر /etc/exports.d بازنویسی کرد.
یک مدیر سیستم میتواند این گزینهها را با استفاده از گزینه خط فرمان -o در دستور exportfs بازنویسی کند. این گزینه فهرستی از گزینهها را دریافت میکند که با کاما از هم جدا شدهاند، مشابه شیوهای که در /etc/exports تعیین میشوند. به این ترتیب، exportfs میتواند برای تغییر گزینههای یک دایرکتوری از پیش به اشتراک گذاشتهشده استفاده شود.
لغو اشتراک دایرکتوریها (Unexporting Directories)
سومین قالب دستور در خلاصه، نحوه لغو اشتراک یک دایرکتوری مشترک فعلی را نشان میدهد. هنگام استفاده از exportfs -ua، تمام ورودیهای فهرستشده در /var/lib/nfs/etab از جدولهای اشتراک هسته حذف شده و محتوای فایل پاک میشود. این کار در عمل تمامی فعالیتهای NFS را متوقف میسازد.
برای حذف یک اشتراک، یک جفت host:/path را مشخص کنید. این کار ورودی مشخصشده را از /var/lib/nfs/etab پاک کرده و ورودی متناظر در هسته را (در صورت وجود) حذف میکند.
تخلیه و نمایش جدول اشتراکها (Dumping the Export Table)
اجرای exportfs بدون هیچ گزینهای، فهرست جاری سیستمپروندههای به اشتراک گذاشتهشده را نمایش میدهد. افزودن گزینه -v باعث میشود exportfs گزینههای اشتراک مربوط به هر سیستمپرونده را نیز نمایش دهد.
مثالها (EXAMPLES)
دستور زیر تمام دایرکتوریهای فهرستشده در /etc/exports و فایلهای زیر /etc/exports.d را به /var/lib/nfs/etab اضافه کرده و ورودیهای حاصل را به هسته ارسال میکند:
# exportfs -a
برای به اشتراک گذاشتن دایرکتوری /usr/tmp با میزبان django، بهگونهای که درخواستهای قفلگذاری پرونده ناامن از سوی کلاینتها مجاز باشد:
# exportfs -o insecure_locks django:/usr/tmp
برای لغو اشتراک دایرکتوری /usr/tmp:
# exportfs -u django:/usr/tmp
برای لغو تمامی اشتراکهای فهرستشده در /etc/exports و فایلهای زیر /etc/exports.d:
# exportfs -au
برای به اشتراک گذاشتن دایرکتوری /usr/tmp با کلاینتهای link-local در IPv6:
# exportfs [fe80::]/64:/usr/tmp
نکات استفاده (USAGE NOTES)
اشتراکگذاری برای شبکههای IP یا دامنههای DNS و NIS فوراً به کلاینتهای عضو آن گروهها دسترسی NFS نمیدهد. بلکه این نوع اشتراکها راهنمایی برای rpc.mountd(8) هستند تا با درخواستهای مونت از سوی این کلاینتها موافقت کند. معمولاً این امر مشکلی ایجاد نمیکند، زیرا هرگونه مونت موجود در فایل rmtab پس از راهاندازی مجدد سیستم حفظ میشود.
هنگام لغو اشتراک یک ورودی شبکه یا دامنه، هرگونه اشتراک جاری به اعضای این گروه با اشتراکهای معتبر باقیمانده مقایسه شده و چنانچه خود آنها دیگر معتبر نباشند حذف خواهند شد.
فایلها (FILES)
- /etc/exports
- فایل ورودی حاوی فهرست موارد اشتراکی، گزینههای اشتراک و فهرستهای کنترل دسترسی.
- /etc/exports.d
- دایرکتوری ذخیره فایلهای ورودی اضافی. توجه: تنها فایلهایی که پسوند .exports دارند خوانده میشوند.
- /var/lib/nfs/etab
- جدول اصلی اشتراکها.
- /var/lib/nfs/rmtab
- جدول کلاینتهایی که به موارد اشتراکی سرور دسترسی دارند.
همچنین ببینید (SEE ALSO)
exports(5), nfs.conf(5), rpc.mountd(8), exportd(8), netgroup(5)
نویسندگان (AUTHORS)
Olaf Kirch <okir@monad.swb.de>
Neil Brown <neilb@cse.unsw.edu.au>
| مه ۲۰۲۵ | nfs-utils |