NDCTL-CLEAR-ERRORS(1) ndctl Manual NDCTL-CLEAR-ERRORS(1)

ndctl-clear-errors - پاک‌سازی تمام خطاها (badblocks) در namespace داده‌شده

ndctl clear-errors <namespace> [<options>]

یک namespace ممکن است یک یا چند خطای رسانه (media errors) داشته باشد، خواه برای هسته شناخته‌شده باشند یا در وضعیتی نهفته (latent) قرار داشته باشند. این مکان‌های خطا یا badblocks در صورتی که به شیوه‌ای ناامن خوانده شوند، می‌توانند باعث ایجاد رویدادهای مصرف دادهٔ آلوده (poison consumption) شوند.

علاوه بر این، این badblockها نشان‌دهنده آن هستند که به دلیل خرابی رسانه، هر داده‌ای که ممکن بوده در این مکان‌ها ذخیره شده باشد، به‌طور غیرقابل‌بازگشتی از بین رفته است.

به‌طور معمول، هنگام مواجهه با چنین خطاهایی، از مدیر سیستم انتظار می‌رود داده‌ها را از راه‌های برون‌باند (مانند نسخه‌های پشتیبان) بازیابی کرده، namespace را حذف و دوباره ایجاد کند و سپس داده‌ها را بازگردانی نماید. هنگام نوشتن مجدد داده‌ها، عملیات نوشتن امکان می‌دهد که خطاها به محض برخورد پاک‌سازی شوند. در چنین روال کاری، فرد هرگز نباید نیازی به استفاده از دستور clear-errors پیدا کند.

با این حال، ممکن است کاربردهای خاصی وجود داشته باشد که در آن‌ها داده‌های فعلی روی namespace اهمیتی نداشته باشند - برای نمونه، هنگامی که یک namespace در حالت devdax برای استفاده به‌عنوان system-ram آماده‌سازی می‌شود. در چنین مواردی، ممکن است پاک‌سازی هرگونه خطا روی namespace پیش از تغییر حالت آن مطلوب باشد تا از بروز خطاهای مختل‌کنندهٔ کنترل ماشین (machine checks) ناشی از مصرف داده‌های آلوده جلوگیری شود.


نکته

تنها زمانی از این دستور استفاده کنید که داده‌های موجود روی namespace بی‌اهمیت باشند.
برای هر بلاکی که توسط این دستور پاک‌سازی می‌شود، تمام داده‌های موجود روی بلاک‌های مذکور از بین خواهند رفت و با محتوایی جایگزین می‌شوند که توسط پیاده‌سازی (سکو) تعیین شده و غیرقابل‌پیش‌بینی است.


هشدار

این یک دستور خطرناک است و تنها پس از درک کامل عواقب و پیامدهای آن باید مورد استفاده قرار گیرد. این دستور حتماً داده‌های شما را پاک خواهد کرد.

برای فضاهای نام در یکی از حالت‌های fsdax یا devdax، این دستور تنها ناحیهٔ داده (data) را برای پاک‌سازی خطا در نظر می‌گیرد. به متاداده‌های namespace، نظیر info-blockها، دست زده نخواهد شد. برای فضاهای نام در حالت raw، کل گنجایش موجود namespace برای پاک‌سازی خطا در نظر گرفته می‌شود. فضاهای نامی که در حالت sector هستند پشتیبانی نمی‌شوند و نادیده گرفته خواهند شد.


نکته

انتظار می‌رود این دستور در حالی اجرا شود که namespace در وضعیت enabled (فعال) باشد. یک namespace در وضعیت disabled (غیرفعال) به‌شکل یک namespace از نوع raw نمایان شده و با آن همانند چنین فضایی رفتار خواهد شد، و پاک‌سازی خطا برای کل گنجایش موجود namespace، شامل هرگونه نواحی احتمالی متاداده انجام خواهد شد. اگر احیاناً در ناحیهٔ متاداده خطاهایی وجود داشته باشد، پاک‌سازی آن‌ها ممکن است پیامدهای غیرقابل‌پیش‌بینی به دنبال داشته باشد. به شما هشدار داده شد!

خطاهای شناخته‌شده مواردی هستند که هسته قبلاً با آن‌ها مواجه شده است، چه از طریق یک پایش (scrub) قبلی یا از طریق تلاش برای خواندن از آن مکان‌ها. این خطاها را می‌توان با اجرای ndctl list --media-errors برای یک namespace مشخص فهرست کرد. خطاهای نهفته (latent)، همان‌گونه که از نامشان پیداست، برای هسته ناشناخته هستند. این خطاها را می‌توان با اجرای عملیات scrub بر روی NVDIMMهای مربوطه پیدا کرد. به‌طور پیش‌فرض، دستور ndctl-clear-errors تنها خطاهای شناخته‌شده را پاک‌سازی می‌کند. با استفاده از گزینهٔ --scrub می‌توان این رفتار را بازنویسی کرد تا تمام خطاها پاک شوند.


نکته

اگر هنگام فراخوانی دستور یک عملیات scrub در حال انجام باشد، بدون قید و شرط منتظر تکمیل آن خواهد ماند.

پاک‌سازی خطاها روی namespace 0.0

ndctl clear-errors namespace0.0

پاک‌سازی خطاها روی تمام فضاهای نام متعلق به region1، شامل پایش (scrub) برای خطاهای نهفته

ndctl clear-errors --scrub --region=region1 all

-s, --scrub

پیش از پاک‌سازی خطاها، یک scrub (پایش) روی گذرگاه انجام می‌دهد. این گزینه امکان پاک‌سازی هرگونه خطای نهفتهٔ رسانه را علاوه بر خطاهایی که هسته از پیش می‌شناسد، فراهم می‌کند.

نکته

این گزینه باعث می‌شود دستور یک scrub کامل را آغاز کرده و منتظر اتمام آن بماند، و این عملیات بالقوه می‌تواند بسیار طولانی باشد.

-v, --verbose

نمایش پیام‌های اشکال‌زدایی (debug).

-r, --region=

یک نام دستگاه regionX یا یک شماره شناسهٔ region. عملیات را به ناحیه(های) مشخص‌شده محدود می‌کند. کلیدواژهٔ all را می‌توان برای نشان دادن نبود هرگونه محدودیت مشخص کرد، هرچند این کار معادل با عدم ارائهٔ گزینهٔ --region است.

-b, --bus=

یک شماره شناسهٔ گذرگاه یا یک رشتهٔ ارائه‌دهنده (مانند "ACPI.NFIT"). عملیات را به گذرگاه(های) مشخص‌شده محدود می‌کند. کلیدواژهٔ all را می‌توان برای نشان دادن نبود هرگونه محدودیت مشخص کرد، هرچند این کار معادل با عدم ارائهٔ گزینهٔ --bus است.

کپی‌رایت © 2016 - 2022, Intel Corporation. مجوز GPLv2: گنو GPL نسخه ۲ http://gnu.org/licenses/gpl.html. این یک نرم‌افزار آزاد است: شما مجاز به تغییر و توزیع مجدد آن هستید. هیچ‌گونه ضمانتی وجود ندارد، در حدودی که قانون اجازه می‌دهد.

ndctl-start-scrub(1), ndctl-list(1)

2026-06-30 ndctl