'\" t .\" Title: vfs_fileid .\" Author: [see the "AUTHOR" section] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 08/16/2026 .\" Manual: System Administration tools .\" Source: Samba 4.24.6 .\" Language: Persian .\" .TH "VFS_FILEID" "8" "08/16/2026" "Samba 4\&.24\&.6" "ابزارهای مدیریت سیستم" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" vfs_fileid \- ایجاد ساختارهای file_id با مقادیر یکتای شناسه دستگاه برای پیکربندی‌های کلاستر؛ همچنین افزودن راه‌هایی برای شکستن تعمدی یکپارچگی قفل برای inodeهای خاص .SH "خلاصه دستور (SYNOPSIS)" .HP \w'\ 'u vfs objects = fileid .SH "توضیحات (DESCRIPTION)" .PP این ماژول VFS بخشی از مجموعه \fBsamba\fR(7) است\&. .PP سامبا از ساختارهای file_id برای شناسایی یکتای فایل‌ها به منظور قفل‌گذاری استفاده می‌کند\&. به‌طور پیش‌فرض، file_id شامل شماره دستگاه و شماره inode بازگردانده شده توسط فراخوان سیستمی stat() است\&. از آنجا که file_id یک شناسه یکتا برای فایل است، باید در تمام گره‌ها در یک پیکربندی کلاستر یکسان باشد\&. این ماژول عملیات SMB_VFS_FILE_ID_CREATE() را بازتعریف (overload) می‌کند و شماره دستگاه را بر اساس الگوریتم پیکربندی‌شده تولید می‌نماید (گزینه «fileid:algorithm» را ببینید)\&. .PP هنگام استفاده از الگوریتم fsname یا fsid، فراخوانی stat() و statfs() برای تمامی سیستم‌فایل‌های سوارشده جهت تولید file_id مورد نیاز است\&. اگر برای مثال یک سیستم‌فایل NFS پاسخگو نباشد، ممکن است چنین فراخوانی مسدود (block) شود و در نتیجه فرآیند smbd نیز غیرپاسخگو گردد\&. از گزینه‌های «fileid:fstype deny»، «fileid:fstype allow»، «fileid:mntdir deny» یا «fileid:mntdir allow» برای نادیده گرفتن سیستم‌فایل‌های بالقوه غیرپاسخگو استفاده کنید\&. .SH "گزینه‌ها (OPTIONS)" .PP fileid:algorithm = ALGORITHM .RS 4 الگوریتم‌های موجود عبارتند از fsname، fsid، next_module\&. مقدار پیش‌فرض fsname است\&. همچنین الگوریتم‌های قدیمی (legacy) زیر نیز موجودند: fsname_nodirs، fsname_norootdir، fsname_norootdir_ext و hostname\&. .sp الگوریتم fsname شناسه دستگاه را از طریق هش کردن نام دستگاه کرنل تولید می‌کند\&. .sp الگوریتم fsid شناسه دستگاه را از f_fsid بازگردانده‌شده از فراخوان سیستمی statfs() تولید می‌کند\&. .sp الگوریتم next_module اجازه می‌دهد ماژول vfs بعدی در زنجیره ماژول‌ها این شناسه را تولید کند\&. این مورد عمدتاً در ترکیب با ویژگی‌های مختلف «nolock» که ماژول fileid ارائه می‌دهد استفاده می‌شود\&. .sp الگوریتم قدیمی hostname یک devid یکتا را از طریق هش کردن hostname و شناسه دستگاه سطح پایین تولید می‌کند\&. این گزینه همچنین مستلزم fileid:nolock_all_inodes=yes است\&. از این مورد می‌توان برای شکستن تعمدی یکپارچگی قفل در یک کلاستر استفاده کرد و همراه با fileid:nolock_max_slots حتی بین فرآیندهای محلی درون یک گره نیز قابل استفاده است\&. نکته: بدون آگاهی دقیق از کاری که انجام می‌دهید از این گزینه استفاده نکنید! این کار قواعد معنایی SMB را نقض کرده و می‌تواند منجر به خرابی داده‌ها شود! این امر مستلزم fileid:nolock_all_inodes=yes است\&. .sp الگوریتم قدیمی fsname_nodirs نام مستعاری برای استفاده از الگوریتم fsname به همراه fileid:nolock_all_dirs=yes است\&. نکته: بدون آگاهی از کاری که انجام می‌دهید از این گزینه استفاده نکنید! این کار قواعد معنایی SMB را نقض می‌کند! برای رویکردی دقیق‌تر گزینه fileid:nolock_paths را ببینید\&. .sp الگوریتم قدیمی fsname_norootdir نام مستعاری برای استفاده از الگوریتم fsname به همراه fileid:nolock_paths= \(lq\&.\(rq است\&. این بدان معناست که می‌توان از آن برای شکستن تعمدی یکپارچگی قفل در یک کلاستر برای پوشه ریشه یک اشتراک استفاده کرد\&. .sp الگوریتم قدیمی fsname_norootdir_ext نام مستعاری برای استفاده از الگوریتم fsname به همراه fileid:nolock_paths= \(lq\&.\(rq و fileid:nolock_max_slots = 18446744073709551615 است\&. این بدان معناست که می‌توان از آن برای شکستن کامل و تعمدی یکپارچگی قفل برای پوشه ریشه یک اشتراک استفاده کرد؛ به طوری که حتی فرآیندهای محلی نیز دیگر دارای یکپارچگی قفل نخواهند بود\&. .RE .PP fileid:mapping = ALGORITHM .RS 4 این گزینه نسخه قدیمی گزینه fileid:algorithm است که در نسخه‌های اولیه ویژگی نگاشت fileid در نسخه‌های سفارشی سامبا 3\&.0 استفاده می‌شد\&. .RE .PP fileid:fstype deny = LIST .RS 4 فهرستی از انواع سیستم‌فایل که برای تولید file_id باید نادیده گرفته شوند\&. .RE .PP fileid:fstype allow = LIST .RS 4 فهرستی از انواع سیستم‌فایل که برای تولید file_id مجاز هستند\&. در صورت تنظیم این گزینه، انواع سیستم‌فایلی که در اینجا ذکر نشده‌اند نادیده گرفته می‌شوند\&. .RE .PP fileid:mntdir deny = LIST .RS 4 فهرستی از نقاط اتصال سیستم‌فایل که برای تولید file_id باید نادیده گرفته شوند\&. .RE .PP fileid:mntdir allow = LIST .RS 4 فهرستی از نقاط اتصال سیستم‌فایل که برای تولید file_id مجاز هستند\&. در صورت تنظیم این گزینه، نقاط اتصالی که در اینجا ذکر نشده‌اند نادیده گرفته می‌شوند\&. .RE .PP fileid:nolock_max_slots = NUMBER(1\-18446744073709551615) .RS 4 این گزینه رفتار الگوریتم nolock را به گونه‌ای تغییر می‌دهد که یکپارچگی قفل بین فرآیندهای مجزا روی یک میزبان را نیز می‌شکند\&. حالت پیش‌فرض داشتن تنها ۱ اسلات همزمان به ازای هر میزبان است\&. با افزایش تعداد اسلات‌ها می‌توانید مشخص کنید چه تعداد فرآیند همزمان می‌توانند بدون رقابت روی یک inode خاص کار کنند؛ این عدد معمولاً باید بزرگ‌تر از تعداد پردازنده‌های منطقی باشد، مثلاً ۲ برابر num_cpus\&. .RE .PP fileid:nolock_all_dirs = BOOL .RS 4 این گزینه استفاده از رفتار nolock ماژول fileid را برای تمامی inodeهای دایرکتوری فعال می‌کند، که می‌تواند برای شکستن تعمدی یکپارچگی قفل برای همه دایرکتوری‌ها به کار رود\&. نکته: بدون آگاهی از کاری که انجام می‌دهید از این گزینه استفاده نکنید! این کار قواعد معنایی SMB را نقض می‌کند! برای رویکردی دقیق‌تر گزینه fileid:nolock_paths را ببینید\&. .RE .PP fileid:nolock_all_inodes = BOOL .RS 4 این گزینه استفاده از الگوریتم nolock ماژول fileid را برای تمامی inodeهای فایل و دایرکتوری فعال می‌کند، که می‌تواند برای شکستن تعمدی یکپارچگی قفل برای همه موارد به کار رود\&. نکته: بدون آگاهی از کاری که انجام می‌دهید از این گزینه استفاده نکنید! این کار قواعد معنایی SMB را نقض کرده و می‌تواند منجر به خرابی داده‌ها شود! برای رویکردی دقیق‌تر گزینه fileid:nolock_paths را ببینید\&. .RE .PP fileid:nolock_paths = LIST .RS 4 این گزینه فهرستی از مسیرها مربوط به فایل‌ها و/یا دایرکتوری‌ها را مشخص می‌کند که باید از الگوریتم nolock ماژول fileid به منظور شکستن تعمدی یکپارچگی قفل برای آن‌ها استفاده کنند\&. مسیرهای مشخص‌شده می‌توانند نسبی به پوشه ریشه اشتراک یا مطلق باشند\&. نام‌ها مسیرهای حساس به حروف بزرگ و کوچک یونیکس هستند! توجه داشته باشید که تمام مسیرها فقط در زمان tree connect (هنگام اتصال به اشتراک) ارزیابی می‌شوند و از آن به بعد تنها شماره‌های دستگاه و inode مربوطه از فراخوان سیستمی stat() با هم مقایسه می‌شوند\&. مسیرهای ناموجود پیامی در سطح گزارش‌گیری 0 (log level 0) ایجاد خواهند کرد\&. نکته: این گزینه باید با احتیاط استفاده شود زیرا قواعد معنایی SMB را نقض می‌کند! اما ممکن است در شرایطی که یک inode خاص (معمولاً فقط‌خواندنی) به شدت مورد رقابت قرار دارد مفید باشد\&. .RE .PP fileid:nolockinode = NUMBER .RS 4 این گزینه قدیمی، استفاده از رفتار nolock ماژول fileid را برای inode پیکربندی‌شده فعال می‌کند، در حالی که شناسه دستگاه را نادیده می‌گیرد\&. از این گزینه می‌توان برای شکستن تعمدی یکپارچگی قفل برای فایل یا دایرکتوری متناظر در یک کلاستر استفاده کرد\&. استفاده از گزینه fileid:nolock_paths بسیار انعطاف‌پذیرتر و ساده‌تر است\&. .RE .SH "مثال‌ها (EXAMPLES)" .PP نحوه استفاده از ماژول fileid با الگوریتم fsid: .sp .if n \{\ .RS 4 .\} .nf \fI[global]\fR \m[blue]\fBvfs objects = fileid\fR\m[] \m[blue]\fBfileid:algorithm = fsid\fR\m[] .fi .if n \{\ .RE .\} .PP نحوه استفاده از ماژول fileid به منظور جلوگیری از بار اضافی روی inodeهای به شدت مورد رقابت (که به احتمال زیاد فقط‌خواندنی هستند): .sp .if n \{\ .RS 4 .\} .nf \fI[global]\fR \m[blue]\fBvfs objects = fileid\fR\m[] \m[blue]\fBfileid:algorithm = next_module\fR\m[] \m[blue]\fBfileid:nolock_paths = \&. ContendedFolder1 /path/to/contended\&.exe\fR\m[] \m[blue]\fBfileid:nolock_max_slots = 256\fR\m[] .fi .if n \{\ .RE .\} .SH "نسخه (VERSION)" .PP این صفحه راهنما بخشی از نسخه 4\&.24\&.6 مجموعه سامبا است\&. .SH "نویسنده (AUTHOR)" .PP نرم‌افزار اصلی سامبا و ابزارهای مرتبط با آن توسط Andrew Tridgell ساخته شده‌اند\&. سامبا اکنون توسط تیم سامبا به عنوان یک پروژه منبع‌باز، مشابه روش توسعه هسته لینوکس، توسعه می‌یابد\&.