XFS_SCRUB(8) دستورات مدیریت سیستم XFS_SCRUB(8)

xfs_scrub - پایش و بررسی سلامت فرادادههای آنلاین سیستم پرونده XFS

xfs_scrub [ -abCeMmnpTvx ] mount-point
xfs_scrub -V

دستور xfs_scrub فرادادههای یک فایلسیستم XFS متصلشده را به صورت آنلاین و برخط اسکن و خطایابی میکند.

هشدار! این برنامه آزمایشی (EXPERIMENTAL) است، به این معنی که رفتار و رابط کاربری آن ممکن است در هر زمان تغییر کند!

دستور xfs_scrub از هسته درخواست می‌کند تا تمام اشیاء فراداده را در سیستم پرونده پایش و بررسی (scrub) کند. رکوردهای فراداده برای مقادیر مشخصاً نامعتبر پویش شده و سپس با سایر فراداده‌ها تطبیق داده می‌شوند. هدف، ایجاد اطمینان معقول از سازگاری کل سیستم پرونده از طریق بررسی سازگاری تک‌تک رکوردهای فراداده در برابر سایر فراداده‌های موجود در سیستم پرونده است. اگر ساختارهای داده‌ای افزونه (redundant) دست‌نخورده‌ای وجود داشته باشند، فراداده‌های آسیب‌دیده را می‌توان بر اساس آن‌ها بازسازی کرد.

خرابی‌های سیستم پرونده و فرصت‌های بهینه‌سازی در جریان خطای استاندارد (stderr) ثبت خواهند شد. فعال کردن حالت پرگو (verbose) مقدار اطلاعات وضعیت ارسال‌شده به خروجی را افزایش می‌دهد.

اگر پایش هسته گزارش دهد که فراداده‌ها نیاز به تعمیر یا بهینه‌سازی دارند و کاربر گزینه -n را در خط فرمان تعیین نکرده باشد، این برنامه از هسته می‌خواهد که تعمیرات را انجام داده و بهینه‌سازی‌ها را اعمال کند. برای فهرستی از بهینه‌سازی‌ها و تعمیرات شناخته‌شده برای این برنامه، بخش‌های بهینه‌سازی‌ها و تعمیرات را ببینید. ممکن است هسته از تعمیر یا بهینه‌سازی سیستم پرونده پشتیبانی نکند. در این صورت، سیستم پرونده باید غیرمتصل (unmount) شده و دستور xfs_repair(8) برای رفع مشکلات روی آن اجرا شود.

اگر تعداد خطاهای یافت‌شده در سیستم پرونده بیش از این مقدار باشد، عملیات متوقف می‌شود.
اجرا در حالت پس‌زمینه. اگر این گزینه یک‌بار مشخص شود، در هر لحظه تنها یک ریسه پایش (scrubbing thread) اجرا می‌شود. اگر بیش از یک‌بار مشخص شود، یک تأخیر مصنوعی ۱۰۰ میکروثانیه‌ای به هر فراخوانی پایش اضافه می‌شود تا بار پردازنده حتی بیشتر کاهش یابد.
این گزینه باعث می‌شود که xfs_scrub اطلاعات پیشرفت را در توصیف‌گر فایل مشخص‌شده بنویسد تا پیشرفت بررسی سیستم پرونده قابل نظارت باشد. اگر توصیف‌گر فایل یک tty باشد، یک نوار پیشرفت رندر می‌شود. در غیر این صورت، یک خروجی عددی ساده سازگار با فرمت fsck -C تولید می‌شود.
مشخص می‌کند در صورت شناسایی خطاها چه اتفاقی بیفتد. اگر shutdown تعیین شود، در صورت یافتن خطا سیستم پرونده از دسترس خارج (offline) خواهد شد. اگر continue تعیین شود، در صورت بروز خطا هیچ اقدامی صورت نمی‌گیرد؛ این رفتار پیش‌فرض است.
دستور TRIM را روی فضای خالی اجرا نکن.
این مسیر را برای ارسال فراخوانی‌های سیستمی پایش به هسته باز کن. پارامتر مکانی mount-point برای نمایش پیام‌های اطلاعاتی و ثبت گزارش استفاده خواهد شد. این پارامتر برای فعال‌سازی ایزوله‌سازی فرآیند (sandboxing) در حالت سرویس وجود دارد.
به‌جای ‎/etc/mtab‎ این فایل را برای سیستم‌های پرونده متصل‌شده جستجو کن.
فقط فراداده‌های سیستم پرونده را بررسی کن. هیچ چیزی را تعمیر یا بهینه‌سازی نکن.

-o subopt[=value] تصمیمات برنامه در مورد سیستم پرونده را لغو کن و مقدار دلخواه تنظیم نما.

گزینه‌هایفرعی(suboptions) پشتیبانی‌شده عبارتند از:
حالت عملیاتی را از مقدار ویژگی سیستم پرونده autofsck تعیین کن. برای جزئیات بیشتر به بخش ویژگی‌های سیستم پرونده مراجعه کنید.
برای محدود کردن مقدار زمان صرف‌شده برای فعالیت‌های fstrim در طول فاز ۸، این برنامه تلاش می‌کند تا تعادلی میان زمان اجرای تخمینی و کامل بودن عملیات trim برقرار کند. به طور خلاصه، برنامه از درخواست‌های کوچک trim اجتناب می‌کند تا در زمان صرفه‌جویی شود.

در طول فاز ۷، یک هیستوگرام در مقیاس لگاریتمی از قطعات فضای آزاد (free space extents) ساخته می‌شود. در ابتدای فاز ۸، یک تابع توزیع تجمعی (CDF) به ترتیب نزولی طول قطعه از دسته‌های هیستوگرام محاسبه می‌شود. نقطه‌ای متناظر با درصد هدف fstrim از CDF انتخاب شده و به یک دسته هیستوگرام نگاشت می‌شود. قطعات فضای آزاد که حداقل به اندازه اندازه آن دسته باشند، trim می‌شوند. قطعات کوچک‌تر نادیده گرفته می‌شوند.

به‌طور پیش‌فرض، آستانه درصدی ۹۹٪ است.

پیام‌های اطلاعاتی را به عنوان هشدار تلقی کن. این کار باعث کد خروجی غیرصفر و سطح بالاتری از گزارش‌گیری می‌شود.
فقط فراداده‌های سیستم پرونده را بهینه‌سازی کن. اگر تعمیری لازم است، آن را گزارش کرده و خارج شو.
اطلاعات زمان‌بندی و مصرف حافظه را برای هر فاز چاپ کن.
حالت پرگو (verbose) را فعال کن که به‌طور دوره‌ای وضعیت را چاپ می‌کند.
شماره نسخه را چاپ کرده و خارج شو.
تمام قطعات داده‌های فایل‌ها را برای یافتن خطاهای دیسک بخوان. دستور xfs_scrub فراخوانی‌های خواندن O_DIRECT را مستقیماً به دستگاه بلوکی ارسال می‌کند. اگر دستگاه بلوکی یک دیسک SCSI باشد، در عوض دستورات READ VERIFY را مستقیماً به دیسک ارسال می‌کند. در صورت یافتن خطاهای رسانه، گزارش خطا شامل آفست دیسک به بایت خواهد بود. اگر خطاهای رسانه بر فایلی تأثیر بگذارد، گزارش همچنین شامل شماره inode و آفست فایل به بایت خواهد بود. این اقدامات تأیید می‌کنند که تمام بلوک‌های داده‌های فایل از رسانه ذخیره‌سازی قابل خواندن هستند.

بهینه‌سازی‌های پشتیبانی‌شده توسط این برنامه شامل موارد زیر است، اما به آن‌ها محدود نمی‌شود:

•
دستور به فضای ذخیره‌سازی زیرین برای نادیده گرفتن قطعات استفاده‌نشده از طریق ioctl مربوط به TRIM.
•
به‌روزرسانی ابربلوک‌های ثانویه (secondary superblocks) جهت مطابقت با ابربلوک اصلی.
•
غیرفعال کردن بررسی‌های نوشتن بلوک اشتراکی برای فایل‌هایی که دیگر بلوک مشترکی ندارند.

تعمیرات با فراخوانی مستقیم در هسته انجام می‌شوند. این موضوع دامنه فعالیت‌های تعمیری را به بازسازی ساختارهای داده اولیه از ساختارهای ثانویه، یا ساختارهای ثانویه از ساختارهای اولیه محدود می‌کند. وجود ساختارهای داده ثانویه ممکن است به قابلیت‌هایی نیاز داشته باشد که تنها از طریق mkfs.xfs(8) فعال می‌شوند. اگر خطاها قابل تعمیر نباشند، سیستم پرونده باید غیرمتصل شده و xfs_repair(8) اجرا شود. تعمیرات پشتیبانی‌شده توسط هسته شامل موارد زیر است، اما به آن‌ها محدود نمی‌شود:

•
بازسازی داده‌های تخصیص قطعات (extent allocation data).
•
بازسازی اطلاعات فضای آزاد.
•
بازسازی نمایه‌های inode.
•
رفع خرابی‌های جزئی رکوردهای inode.
•
محاسبه مجدد اطلاعات شمارش ارجاعات (reference count).
•
بازسازی داده‌های نگاشت معکوس (reverse mapping) از داده‌های تخصیص قطعه اصلی.
•
زمان‌بندی بررسی سهمیه (quotacheck) برای اتصال بعدی.

اگر فراداده‌های خراب با موفقیت تعمیر شوند، این برنامه به‌جای گزارش خرابی، موفقیت‌آمیز بودن تعمیر را ثبت می‌کند.

مدیران سیستم می‌توانند اولویت‌های خود را برای پایش یک سیستم پرونده خاص با تنظیم ویژگی autofsck از طریق دستور xfs_property(8) روی سیستم پرونده مشخص کنند. این تنظیمات در صورتی که گزینه -o autofsck تعیین شده باشد، رعایت خواهند شد.

مقادیر شناخته‌شده برای ویژگی autofsck عبارتند از:

سیستم پرونده را اصلاً اسکن نکن.
خرابی‌ها و فرصت‌های بهینه‌سازی را بررسی و گزارش کن، اما چیزی را تغییر نده.
سیستم پرونده را اسکن کن و در صورت امکان بهینه‌سازی را انجام بده. خرابی‌ها را گزارش کن، اما آن‌ها را تعمیر نکن.
سیستم پرونده را اسکن کن، خرابی‌ها را برطرف کن و در صورت امکان بهینه‌سازی‌ها را اعمال نما.

اگر ویژگی تنظیم نشده باشد، مقدار پیش‌فرض check است در صورتی که درخت‌های نگاشت معکوس یا اشاره‌گرهای والد در سیستم پرونده فعال باشند، وگرنه مقدار پیش‌فرض none خواهد بود.

کد خروجی بازگردانده‌شده توسط xfs_scrub مجموع شرایط زیر است:
0 - بدون خطا
1 - خطاهای اصلاح‌نشده سیستم پرونده باقی مانده است
2 - بهینه‌سازی‌های سیستم پرونده امکان‌پذیر است
4 - خطای عملیاتی
8 - خطای نحوی یا خطای استفاده

دستور xfs_scrub یک ابزار نابالغ و در حال توسعه است! این برنامه را اجرا نکنید مگر اینکه از داده‌های خود نسخه پشتیبان داشته باشید! این برنامه از پایش درون‌هسته‌ای برای تأیید یک ساختار داده معین در حین نگه‌داشتن قفل‌ها بهره می‌برد و می‌تواند سیستم پرونده را برای مدت طولانی مشغول نگه دارد. هسته باید به اندازه کافی جدید باشد تا از ioctl با نام SCRUB_METADATA پشتیبانی کند.

اگر خطاهایی یافت شوند و قابل تعمیر نباشند، سیستم پرونده باید غیرمتصل شده و تعمیر گردد.

xfs_repair(8).

مه ۲۰۲۵ xfsprogs