| XFS(5) | فایلهای پیکربندی | XFS(5) |
نام (NAME)
xfs - ساختار و طرحبندی سیستم پرونده XFS
توضیحات (DESCRIPTION)
این صفحه ساختار و چیدمان دادهها، گروههای تخصیص (Allocation Groups) و ویژگیهای فایلسیستم XFS را شرح میدهد. یک سیستم پرونده XFS میتواند روی یک پارتیشن دیسک معمولی یا روی یک حجم منطقی (Logical Volume) قرار گیرد. یک سیستم پرونده XFS دارای حداکثر سه بخش است: یک بخش داده (Data section)، یک بخش گزارش وقایع (Log section)، و یک بخش بلادرنگ (Realtime section). با استفاده از گزینههای پیشفرض mkfs.xfs(8)، بخش بلادرنگ وجود ندارد و ناحیه گزارش وقایع (لاگ) در داخل بخش داده گنجانده شده است. بخش گزارش وقایع میتواند از بخش داده جدا باشد یا درون آن قرار گیرد. بخشهای سیستم پرونده به تعداد مشخصی بلوک تقسیم میشوند که اندازه آنها هنگام اجرای mkfs.xfs(8) با گزینه -b مشخص میشود.
بخش داده شامل تمام متادادههای سیستم پرونده (آینودها، دایرکتوریها، بلوکهای غیرمستقیم) و همچنین دادههای فایل کاربر برای فایلهای معمولی (غیر بلادرنگ) است، و در صورتی که گزارش وقایع داخلی باشد، شامل ناحیه لاگ نیز میشود. بخش داده به تعدادی گروه تخصیص (Allocation Groups) تقسیم میشود. تعداد و اندازه گروههای تخصیص توسط mkfs.xfs(8) بهگونهای انتخاب میشوند که معمولاً تعداد کمی از گروههای با اندازه برابر وجود داشته باشد. تعداد گروههای تخصیص، میزان همزمانی (Parallelism) موجود در تخصیص فایل و بلوک را کنترل میکند. در صورتی که حافظه کافی و فعالیت تخصیص زیادی وجود داشته باشد، این تعداد باید نسبت به مقدار پیشفرض افزایش یابد. تعداد گروههای تخصیص نباید خیلی زیاد تنظیم شود، زیرا میتواند باعث مصرف حجم زیادی از زمان CPU توسط سیستم پرونده شود، بهویژه زمانی که سیستم پرونده تقریباً پر است. هنگامی که xfs_growfs(8) اجرا میشود، گروههای تخصیص بیشتری (با اندازه اولیه) اضافه میشوند.
بخش گزارش وقایع (یا ناحیه لاگ، در صورتی که درون بخش داده باشد) برای ذخیره تغییرات متاداده سیستم پرونده در زمان کارکرد سیستم تا پیش از اعمال آن تغییرات بر روی بخش داده استفاده میشود. این بخش در طول عملکرد عادی بهصورت متوالی نوشته میشود و فقط هنگام سوار کردن (Mount) خوانده میشود. هنگام سوار کردن سیستم پرونده پس از یک خرابی (Crash)، گزارش وقایع برای تکمیل عملیاتی که در زمان خرابی در حال انجام بودهاند، خوانده میشود.
بخش بلادرنگ برای ذخیره دادههای فایلهای بلادرنگ (Realtime) استفاده میشود. این فایلها پس از ایجاد فایل و قبل از نوشته شدن هرگونه دادهای در آنها، بیت ویژگی خاصی را از طریق xfsctl(3) تنظیم کردهاند. بخش بلادرنگ به تعدادی اکستنت (Extent) با اندازه ثابت (مشخصشده در زمان اجرای mkfs.xfs(8)) تقسیم میشود. هر فایل در بخش بلادرنگ دارای اندازه اکستنتی است که مضربی از اندازه اکستنت بخش بلادرنگ میباشد.
هر گروه تخصیص شامل چندین ساختار داده است. سکتور اول شامل ابربلاک (Superblock) است. برای گروههای تخصیص بعد از اولین گروه، ابربلاک صرفاً یک نسخه پشتیبان است و پس از اجرای mkfs.xfs(8) بهروزرسانی نمیشود. سه سکتور بعدی حاوی اطلاعات مربوط به تخصیص بلوک و آینود در گروه تخصیص هستند. همچنین در هر گروه تخصیص، ساختارهای دادهای برای مکانیابی بلوکها و آینودهای آزاد وجود دارد؛ این موارد از طریق ساختارهای سرآیند (Header) مکانیابی میشوند.
هر سیستم پرونده XFS با یک شناسه یکتای جهانی (UUID) برچسبگذاری میشود. این UUID در سرآیند هر گروه تخصیص ذخیره میشود و برای کمک به تمایز یک سیستم پرونده XFS از دیگری استفاده میشود، بنابراین باید از بهکارگیری dd(1) یا سایر برنامههای کپی بلوکبهبلوک برای کپی کردن سیستمهای پرونده XFS خودداری کنید. اگر دو سیستم پرونده XFS در یک ماشین دارای UUID یکسان باشند، xfsdump(8) ممکن است هنگام انجام پشتیبانگیریهای افزایشی و ادامهدار دچار سردرگمی شود. استفاده از xfsdump(8) و xfsrestore(8) برای تهیه کپی از سیستمهای پرونده XFS توصیه میشود.
عملیات (OPERATIONS)
برخی از قابلیتهای ویژه سیستم پرونده XFS از طریق رابطهای xfsctl(3) و دستگیره (به open_by_handle(3) مراجعه کنید) برای برنامهها قابل دسترسی است.
گزینههای سوار کردن (MOUNT OPTIONS)
گزینههای زیر ویژه XFS هستند و میتوان هنگام سوار کردن (Mount) یک سیستم پرونده XFS از آنها استفاده کرد. گزینههای عمومی دیگر نیز ممکن است استفاده شوند؛ برای جزئیات بیشتر به صفحه راهنمای mount(8) مراجعه کنید.
- allocsize=size
- اندازه
پیشتخصیص
پایان فایل
در
ورودی/خروجی
بافرشده را
هنگام
نوشتن
تخصیص با
تأخیر
تنظیم
میکند.
مقادیر
معتبر برای
این گزینه
از اندازه
صفحه
(معمولاً 4KiB)
تا 1GiB با
توانهایی
از ۲ است.
رفتار پیشفرض، اندازه پیشتخصیص پویای انتهای فایل است که از مجموعهای از روشهای اکتشافی برای بهینهسازی اندازه پیشتخصیص بر اساس الگوهای تخصیص فعلی در فایل و الگوهای دسترسی به فایل استفاده میکند. مشخص کردن یک مقدار ثابت allocsize رفتار پویا را غیرفعال میکند.
- attr2|noattr2
- نکته: این
گزینهها
از نسخه
هسته v5.10
منسوخ
شدهاند
(Deprecated)؛ گزینه noattr2
زودتر از
سپتامبر
۲۰۲۵ حذف
نخواهد شد و
گزینه attr2
پیشفرض
تغییرناپذیر
خواهد بود.
این گزینهها یک بهبود «فرصتطلبانه» را در نحوه ذخیرهسازی ویژگیهای گسترشیافته درونخطی روی دیسک فعال/غیرفعال میکنند. هنگامی که این قالب جدید برای اولین بار هنگام انتخاب attr2 استفاده میشود (چه هنگام تنظیم یا حذف ویژگیهای گسترشیافته)، فیلد بیت ویژگی ابربلاک روی دیسک بهروزرسانی میشود تا نشاندهنده استفاده از این قالب باشد.
رفتار پیشفرض توسط بیت ویژگی روی دیسک تعیین میشود که نشان میدهد رفتار attr2 فعال است. اگر هر یک از گزینههای سوار کردن تنظیم شود، آن به پیشفرض جدید مورد استفاده سیستم پرونده تبدیل میشود.
سیستمهای پرونده با CRC فعال همیشه از قالب attr2 استفاده میکنند و در صورت تنظیم گزینه noattr2، آن را رد خواهند کرد.
- dax=value
- رفتار
دسترسی
مستقیم CPU به
حافظه (DAX) را
برای سیستم
پرونده
فعلی تنظیم
میکند. این
گزینه
مقادیر زیر
را
میپذیرد:
"dax=inode" دسترسی DAX تنها روی فایلهای معمولی دارای پرچم FS_XFLAG_DAX فعال خواهد بود.
"dax=never" دسترسی DAX برای هیچ فایلی فعال نخواهد شد و FS_XFLAG_DAX نادیده گرفته میشود.
"dax=always" دسترسی DAX برای همه فایلهای معمولی بدون توجه به وضعیت FS_XFLAG_DAX فعال خواهد بود.
اگر هنگام سوار کردن یک سیستم پرونده روی دستگاه دارای قابلیت DAX هیچ گزینهای استفاده نشود، مقدار dax=inode بهطور پیشفرض استفاده خواهد شد.
برای جزئیات مربوط به رفتار DAX در هسته، لطفاً به مستندات هسته در filesystems/dax.txt مراجعه کنید.
- discard|nodiscard
- ارسال
دستورات به
دستگاه
بلوکی برای
آزادسازی
فضای
رهاشده
توسط سیستم
پرونده را
فعال/غیرفعال
میکند. این
ویژگی برای
دستگاههای
SSD، فضاهای
کمینهتخصیصیافته
(Thinly provisioned LUNs) و
ایمیجهای
ماشین
مجازی مفید
است، اما
ممکن است بر
کارایی
تأثیر منفی
بگذارد.
نکته: در حال حاضر توصیه میشود بهجای گزینه discard هنگام سوار کردن، از برنامه fstrim برای آزادسازی بلوکهای بلااستفاده استفاده کنید، زیرا افت کارایی ناشی از این گزینه بسیار شدید است. به همین دلیل، nodiscard پیشفرض است.
- grpid|bsdgroups|nogrpid|sysvgroups
- این گزینهها شناسه گروهی (GID) که یک فایل تازه ایجادشده دریافت میکند را تعریف میکنند. هنگامی که grpid تنظیم شده باشد، شناسه گروه دایرکتوری والد را که در آن ایجاد شده میگیرد؛ در غیر این صورت، fsgid فرایند فعلی را میگیرد، مگر اینکه دایرکتوری بیت setgid داشته باشد، که در این صورت GID دایرکتوری والد را گرفته و اگر خودش نیز دایرکتوری باشد بیت setgid را دریافت میکند.
- filestreams
- بخش تخصیص داده را وادار میکند که در کل سیستم پرونده بهجای فقط دایرکتوریهای پیکربندیشده، از حالت تخصیص جریانی (Filestreams) استفاده کند.
- ikeep|noikeep
- نکته: این
گزینهها
از نسخه
هسته v5.10
منسوخ
شدهاند؛
گزینه noikeep
زودتر از
سپتامبر
۲۰۲۵ حذف
نخواهد شد و
گزینه ikeep
پیشفرض
تغییرناپذیر
خواهد بود.
هنگامی که ikeep مشخص شود، XFS خوشههای آینود خالی را حذف نمیکند و آنها را روی دیسک نگه میدارد. هنگامی که noikeep مشخص شود، خوشههای آینود خالی به استخر فضای آزاد بازگردانده میشوند. noikeep پیشفرض است.
- inode32|inode64
- هنگامی که inode32
مشخص شود،
نشان
میدهد که XFS
ایجاد
آینود را
به
مکانهایی
محدود
میکند که
منجر به
تولید
شمارههای
آینود با
بیش از ۳۲
بیت
معنادار
نشود.
هنگامی که inode64 مشخص شود، نشان میدهد که XFS مجاز است در هر مکانی از سیستم پرونده آینود ایجاد کند، از جمله مکانهایی که منجر به پر شدن بیش از ۳۲ بیت معنادار میشوند.
گزینه inode32 برای سازگاری با سیستمها و برنامههای قدیمیتر ارائه شده است، زیرا شمارههای آینود ۶۴ بیتی ممکن است برای برنامههایی که نمیتوانند شمارههای آینود بزرگ را مدیریت کنند مشکل ایجاد کند. اگر برنامههایی در حال استفاده هستند که شمارههای آینود بزرگتر از ۳۲ بیت را پردازش نمیکنند، باید گزینه inode32 مشخص شود.
برای هسته نسخه v3.7 و بالاتر، inode64 پیشفرض است.
- largeio|nolargeio
- اگر "nolargeio"
مشخص شود،
مقدار
ورودی/خروجی
بهینه
گزارششده
در st_blksize توسط stat(2)
تا حد امکان
کوچک خواهد
بود تا به
برنامههای
کاربر
امکان دهد
از
ورودی/خروجی
ناکارآمد
خواندن/اصلاح/نوشتن
خودداری
کنند. این
مقدار
معمولاً
اندازه
صفحه حافظه
دستگاه
است، زیرا
این همان
دانهبندی
کَش صفحه (Page cache)
است.
اگر "largeio" مشخص شود، سیستم پروندهای که با "swidth" مشخص ایجاد شده است مقدار swidth (به بایت) را در st_blksize برمیگرداند. اگر سیستم پرونده swidth مشخصی نداشته باشد اما "allocsize" داشته باشد، مقدار allocsize (به بایت) برگردانده میشود. در غیر این صورت رفتار مانند این است که "nolargeio" مشخص شده باشد. nolargeio پیشفرض است.
- logbufs=value
- تعداد
بافرهای
گزارش
وقایع (لاگ)
در حافظه را
تنظیم
میکند.
مقادیر
معتبر شامل
۲ تا ۸
هستند.
مقدار پیشفرض ۸ بافر است.
اگر هزینه حافظه ۸ بافر لاگ در سیستمهای کوچک خیلی زیاد باشد، میتوان آن را با پذیرش مقداری کاهش کارایی در بارهای کاری سنگین از نظر متاداده کاهش داد. گزینه logbsize در زیر، اندازه هر بافر را کنترل میکند و بنابراین به این مورد نیز مربوط میشود.
- logbsize=value
- اندازه هر
بافر لاگ
درون حافظه
را تنظیم
میکند.
اندازه
میتواند
به بایت یا
به
کیبیبایت
(KiB) با پسوند
"k" مشخص شود.
مقادیر
معتبر برای
لاگهای
نسخه ۱ و ۲
عبارتند از
16384 (value=16k) و 32768 (value=32k).
اندازههای
معتبر برای
لاگهای
نسخه ۲
همچنین
شامل 65536 (value=64k)، 131072
(value=128k) و 262144 (value=256k)
هستند.
مقدار logbsize
باید مضرب
صحیحی از
واحد
نواربندی
لاگ (Log stripe unit)
پیکربندیشده
در زمان mkfs
باشد.
مقدار پیشفرض برای لاگهای نسخه ۱ برابر ۳۲۷۶۸ است، در حالی که مقدار پیشفرض برای لاگهای نسخه ۲ برابر max(32768, log_sunit) میباشد.
- logdev=device و rtdev=device
- از یک دستگاه لاگ خارجی (ژورنال متاداده) و/یا یک دستگاه بلادرنگ استفاده میکند. یک سیستم پرونده XFS حداکثر سه بخش دارد: بخش داده، بخش لاگ و بخش بلادرنگ. بخش بلادرنگ اختیاری است و بخش لاگ میتواند جدا از بخش داده یا درون آن باشد.
- noalign
- تخصیصهای داده در مرزهای واحد نواربندی (Stripe unit) تراز نمیشوند. این فقط برای سیستمهای پروندهای که با پارامترهای تراز غیرصفر داده (sunit, swidth) توسط mkfs ایجاد شدهاند مربوط است.
- norecovery
- سیستم پرونده بدون اجرای بازیابی لاگ سوار میشود. اگر سیستم پرونده بهصورت تمیز پیادهسازی (Unmount) نشده باشد، هنگام سوار شدن در حالت "norecovery" احتمالاً ناسازگار خواهد بود. به همین دلیل برخی فایلها یا دایرکتوریها ممکن است در دسترس نباشند. سیستمهای پروندهای که با "norecovery" سوار میشوند باید فقطخواندنی سوار شوند وگرنه عملیات سوار کردن با شکست مواجه میشود.
- nouuid
- بررسی سیستمهای پرونده سوارشده دوگانه با استفاده از UUID سیستم پرونده را انجام ندهید. این گزینه برای سوار کردن حجمهای اسنپشات LVM مفید است و اغلب در ترکیب با "norecovery" برای سوار کردن اسنپشاتهای فقطخواندنی استفاده میشود.
- noquota
- محاسبه و اعمال تمامی سهمیهبندیها (Quota) را درون سیستم پرونده بهاجبار غیرفعال میکند.
- uquota/usrquota/quota/uqnoenforce/qnoenforce
- محاسبه سهمیهبندی دیسک کاربر فعال شده و محدودیتها (بهطور اختیاری) اعمال میشوند. برای جزئیات بیشتر به xfs_quota(8) مراجعه کنید.
- gquota/grpquota/gqnoenforce
- محاسبه سهمیهبندی دیسک گروه فعال شده و محدودیتها (بهطور اختیاری) اعمال میشوند. برای جزئیات بیشتر به xfs_quota(8) مراجعه کنید.
- pquota/prjquota/pqnoenforce
- محاسبه سهمیهبندی دیسک پروژه فعال شده و محدودیتها (بهطور اختیاری) اعمال میشوند. برای جزئیات بیشتر به xfs_quota(8) مراجعه کنید.
- sunit=value و swidth=value
- برای مشخص
کردن واحد
نواربندی (Stripe
unit) و عرض
نواربندی (Stripe
width) برای یک
دستگاه RAID یا
یک حجم
نواری
استفاده
میشود.
مقدار "value"
باید بر حسب
واحدهای
بلوک ۵۱۲
بایتی مشخص
شود. این
گزینهها
فقط برای
سیستمهای
پروندهای
که با
پارامترهای
تراز داده
غیرصفر
ایجاد
شدهاند
مرتبط
هستند.
پارامترهای sunit و swidth مشخصشده باید با ویژگیهای تراز سیستم پرونده موجود سازگار باشند. بهطور کلی، این بدان معناست که تنها تغییرات معتبر در sunit افزایش آن با مضربی از توان ۲ است. مقادیر معتبر swidth هر مضرب صحیحی از مقدار معتبر sunit است.
معمولاً تنها زمانی این گزینهها لازم هستند که هندسه دستگاه RAID زیربنایی اصلاح شده باشد، مانند افزودن یک دیسک جدید به RAID5 LUN و بازشکلدهی (Reshaping) آن.
- swalloc
- هنگامی که انتهای فعلی فایل در حال گسترش است و اندازه فایل بزرگتر از اندازه عرض نواربندی است، تخصیصهای داده به سمت مرزهای عرض نواربندی گرد میشوند.
- wsync
- هنگامی که مشخص شود، تمام عملیات فضای نام سیستم پرونده بهصورت همگام (Synchronous) اجرا میشوند. این اطمینان میدهد که پس از اتمام عملیات فضای نام (مانند create، unlink و غیره)، تغییرات فضای نام روی ذخیرهساز پایدار قرار گرفتهاند. این در پیکربندیهای با دسترسی بالا (HA) مفید است که بازیابی پس از شکست نباید منجر به مشاهده فضای نام ناسازگار توسط کلاینتها در طول یا بعد از خرابی شود.
گزینههای حذفشده سوار کردن (REMOVED MOUNT OPTIONS)
گزینههای سوار کردن زیر از هسته لینوکس حذف شدهاند و در صورت استفاده، منجر به شکست در سوار کردن میشوند. گزینههای سوار کردن قبل از حذف، برای مدت زمان قابل توجهی منسوخ (Deprecated) اعلام میشوند.
| نام | حذفشده در نسخه |
| ---- | ------- |
| delaylog/nodelaylog | v4.0 |
| ihashsize | v4.0 |
| irixsgid | v4.0 |
| osyncisdsync/osyncisosync | v4.0 |
| barrier/nobarrier | v4.19 |
ویژگیهای فایل (FILE ATTRIBUTES)
سیستم پرونده XFS از تنظیم ویژگیهای فایل زیر در سیستمهای لینوکس با استفاده از ابزار chattr(1) پشتیبانی میکند:
a - فقط الحاق (Append only)
A - بدون بهروزرسانی زمان دسترسی (No atime updates)
d - بدون دامپ (No dump)
i - تغییرناپذیر (Immutable)
S - بهروزرسانیهای همگام (Synchronous updates)
برای مشاهده توضیحات این پرچمهای ویژگی، لطفاً به صفحه راهنمای chattr(1) مراجعه کنید.
همچنین ببینید (SEE ALSO)
chattr(1), xfsctl(3), mount(8), mkfs.xfs(8), xfs_info(8), xfs_admin(8), xfsdump(8), xfsrestore(8).
| مه ۲۰۲۵ | xfsprogs |