BADBLOCKS(8) دستورهای مدیریتی و نگهداری BADBLOCKS(8)

badblocks - جستجو برای بلاکهای خراب در یک دستگاه دیسک

badblocks [ -svwnfBX ] [ -b اندازه_بلاک ] [ -c تعداد_بلاک ] [ -e حداکثر_بلاک_خراب ] [ -d ضریب_تاخیر_خواندن ] [ -i فایل_ورودی ] [ -o فایل_خروجی ] [ -p تعداد_پاس ] [ -t الگوی_تست ] دستگاه [ آخرین_بلاک ] [ اولین_بلاک ]

دستور badblocks برای جستجوی بخشها یا بلاکهای خراب حافظه در یک دستگاه دیسک یا پارتیشن استفاده میشود. پارامتر دستگاه فایل ویژه‌ای است که متناظر با دستگاه مورد نظر است (برای نمونه /dev/hdc1). پارامتر آخرین_بلاک آخرین بلاکی است که باید بررسی شود؛ اگر این مقدار مشخص نشود، آخرین بلاک دستگاه به عنوان پیش‌فرض در نظر گرفته می‌شود. پارامتر اولین_بلاک یک پارامتر اختیاری برای تعیین شماره بلاک آغازین بررسی است که امکان شروع آزمایش از میانه دیسک را فراهم می‌سازد. اگر مشخص نشود، نخستین بلاک روی دیسک به عنوان پیش‌فرض استفاده خواهد شد.

نکته مهم: اگر قرار است خروجی دستور badblocks به برنامه‌های e2fsck یا mke2fs تحویل داده شود، بسیار بااهمیت است که اندازه بلاک به درستی مشخص گردد؛ زیرا شماره بلاک‌های تولیدشده وابستگی کاملی به اندازه بلاکِ در حال استفاده توسط سیستم‌فایل دارند. به همین دلیل، اکیداً توصیه می‌شود کاربران دستور badblocks را به صورت مستقیم اجرا نکنند ، بلکه از گزینه -c برنامه‌های e2fsck و mke2fs استفاده کنند.

تعیین اندازه هر بلاک بر حسب بایت. مقدار پیش‌فرض ۱۰۲۴ است.
تعداد بلاک‌هایی که در هر نوبت بررسی و آزمایش می‌شوند. مقدار پیش‌فرض ۶۴ است.
اگر این پارامتر مقداردهی شده و عددی غیرصفر باشد، در صورت بروز نیافتن خطا در عملیات خواندن، سبب وقفه (Sleep) میان خواندن‌ها می‌شود؛ این تاخیر به صورت درصدی از زمان صرف‌شده برای انجام عملیات خواندن محاسبه می‌گردد. به عبارت دیگر، مقدار ۱۰۰ باعث می‌شود هر خواندن به اندازه مدت زمان خواندن قبلی به تاخیر بیفتد و مقدار ۲۰۰ این تاخیر را دو برابر می‌کند.
تعیین حداکثر تعداد بلاک‌های خراب پیش از متوقف کردن آزمایش. مقدار پیش‌فرض ۰ است، به این معنی که بررسی تا پایان محدوده مشخص‌شده ادامه می‌یابد.
به‌طور معمول، دستور badblocks از انجام آزمایش خواندن/نوشتن یا آزمایش غیرمخرب روی دستگاهی که متصل (Mount) است خودداری می‌کند؛ زیرا هر دوی آن‌ها حتی در صورتی که دستگاه به صورت فقط‌خواندنی متصل باشد، می‌توانند باعث کرش احتمالی سیستم یا آسیب به سیستم‌فایل شوند. این محدودیت را می‌توان با پرچم -f نادیده گرفت، اما تقریباً هرگز نباید استفاده شود --- اگر فکر می‌کنید باهوش‌تر از برنامه badblocks هستید، تقریباً به طور قطع این‌طور نیست! تنها زمانی که استفاده از این گزینه ممکن است بی‌خطر باشد، وقتی است که فایل /etc/mtab نادرست بوده و دستگاه در واقع متصل نباشد.
خواندن فهرستی از بلاک‌های خراب شناخته‌شده پیشین. برنامه badblocks از آزمایش این بلاک‌ها صرف‌نظر خواهد کرد زیرا از خراب بودن آن‌ها مطلع است. اگر فایل_ورودی به‌صورت "-" مشخص شود، این فهرست از ورودی استاندارد خوانده می‌شود. بلاک‌های موجود در این فهرست، از لیست بلاک‌های خراب جدید تولیدشده در خروجی استاندارد یا فایل خروجی حذف خواهند شد. گزینه -b در dumpe2fs(8) می‌تواند برای بازیابی فهرست بلاک‌هایی که در حال حاضر روی یک سیستم‌فایل موجود به عنوان خراب علامت خورده‌اند، در قالبی مناسب برای استفاده با این گزینه به کار رود.
استفاده از حالت خواندن-نوشتن غیرمخرب (Non-destructive). به‌طور پیش‌فرض تنها یک آزمایش فقط‌خواندنی غیرمخرب انجام می‌شود. این گزینه نباید با گزینه -w ترکیب شود، زیرا مانعةالجمع (متضاد یکدیگر) هستند.
نوشتن فهرست بلاک‌های خراب در فایل مشخص‌شده. در صورت عدم استفاده از این گزینه، badblocks فهرست را در خروجی استاندارد خود چاپ می‌کند. ساختار این فایل مناسب استفاده توسط گزینه -l در e2fsck(8) یا mke2fs(8) است.
تکرار پویش دیسک تا زمانی که هیچ بلاک خرابی در تعداد_پاس دور (Pass) متوالی دیسک کشف نشود. مقدار پیش‌فرض ۰ است، به این معنی که badblocks پس از اتمام دور نخست خارج خواهد شد.
نمایش پیشرفت پویش با نمایش درصد تقریبی پیشرفت دور فعلی badblocks روی دیسک. توجه داشته باشید که badblocks ممکن است چندین دور پویش روی دیسک اجرا کند، به ویژه اگر گزینه‌های -p یا -w مشخص شده باشند.
تعیین الگوی آزمایشی برای خواندن (و نوشتن) روی بلاک‌های دیسک. مقدار الگوی_تست می‌تواند یک مقدار عددی بین ۰ تا ULONG_MAX-1 (شامل هر دو) یا عبارت "random" باشد که مشخص می‌کند بلاک باید با یک الگوی بیتی تصادفی پر شود. برای حالت‌های خواندن/نوشتن (-w) و غیرمخرب (-n)، می‌توان با تعیین چندباره گزینه -t چندین الگوی آزمایشی مشخص کرد. برای حالت فقط‌خواندنی تنها یک الگو مجاز است و نمی‌تواند "random" باشد. آزمایش فقط‌خواندنی با الگو فرض می‌کند که الگوی مورد نظر قبلاً روی دیسک نوشته شده است؛ در غیر این صورت، تعداد زیادی از بلاک‌ها در بررسی رد می‌شوند. اگر چند الگو مشخص شود، تمام بلاک‌ها با یک الگو بررسی می‌شوند و سپس نوبت به الگوی بعدی می‌رسد.
حالت پرحرف (Verbose). تعداد خطاهای خواندن، خطاهای نوشتن و خرابی‌های داده را در خروجی خطای استاندارد (stderr) گزارش می‌کند.
استفاده از آزمایش در حالت نوشتن. با این گزینه، badblocks با نوشتن چند الگو (0xaa، 0x55، 0xff، 0x00) روی تک‌تک بلاک‌های دستگاه، خواندن مجدد هر بلاک و مقایسه محتویات، به دنبال بلاک‌های خراب می‌گردد. این گزینه نباید با گزینه -n ترکیب شود، زیرا مانعةالجمع هستند.
استفاده از بافر ورودی/خروجی (Buffered I/O) و عدم استفاده از Direct I/O، حتی اگر در دسترس باشد.
فلگ داخلی که فقط باید توسط e2fsck(8) و mke2fs(8) استفاده شود. این گزینه بررسی ایمنی انحصاری بودن دستگاه در حال استفاده را دور می‌زند.

هرگز از گزینه -w روی دستگاهی که حاوی یک سیستم‌فایل موجود است استفاده نکنید. این گزینه داده‌ها را به کلی پاک می‌کند! اگر می‌خواهید آزمایش حالت نوشتن را روی یک سیستم‌فایل موجود انجام دهید، به جای آن از گزینه -n استفاده نمایید. این گزینه کندتر است، ولی اطلاعات شما را حفظ می‌کند.

گزینه -e موجب می‌شود badblocks خروجی احتمالاً ناقصی از بلاک‌های خراب ارائه دهد. بنابراین توصیه می‌شود تنها زمانی از آن استفاده کنید که بخواهید بدانید آیا اصلاً بلاک خرابی روی دستگاه وجود دارد یا خیر، نه زمانی که فهرست کامل بلاک‌های خراب مورد نیاز است.

برنامه badblocks توسط Remy Card <Remy.Card@linux.org> نوشته شده است. نگهدارنده فعلی Theodore Ts'o <tytso@alum.mit.edu> است. آزمایش خواندن/نوشتن غیرمخرب توسط David Beattie <dbeattie@softhome.net> پیاده‌سازی شده است.

دستور badblocks بخشی از بسته e2fsprogs است و از نشانی http://e2fsprogs.sourceforge.net در دسترس می‌باشد.

e2fsck(8), mke2fs(8)

مه ۲۰۲۵ e2fsprogs