SG_REASSIGN(8) SG3_UTILS SG_REASSIGN(8)

sg_reassign - ارسال دستور REASSIGN BLOCKS در اسکازی (SCSI)

sg_reassign [--address=A,A...] [--dummy] [--eight=0|1] [--grown] [--help] [--hex] [--longlist=0|1] [--primary] [--verbose] [--version] DEVICE

یک دستور SCSI از نوع REASSIGN BLOCKS را به DEVICE ارسال می‌کند. به عنوان روشی جایگزین، این ابزار می‌تواند تعداد عناصر موجود در یک فهرست عیوب «افزوده» (grown) یا «اولیه» (primary) را با استفاده از دستور SCSI READ DEFECT DATA (10) پیدا کند. این دستورات SCSI در استاندارد SBC-2 برای دستگاه‌های دسترسی مستقیم (مانند یک دیسک) تعریف شده‌اند. دستور بازتخصیص بلوک‌ها برای تغییر مکان فیزیکی یک بلوک منطقی که معیوب بودن آن مشخص یا مشکوک است به ناحیه دیگری از رسانه ذخیره‌سازی طراحی شده است. دیسک‌ها معمولاً با بلوک‌هایی که برای چنین شرایطی ذخیره نگه داشته شده‌اند فرمت‌بندی می‌شوند.

اگر هیچ‌یک از گزینه‌های --grown یا --primary ارائه نشوند، باید یک یا چند نشانی داده شود. اگر نشانی (یا تمامی نشانی‌ها) در ۴ بایت جا شوند و گزینه '--eight=1' داده نشده باشد، بلوک پارامتر ارسالی به DEVICE از نشانی‌های بلوک منطقی ۴ بایتی تشکیل می‌شود. اگر هر یک از نشانی‌ها برای نمایش به بیش از ۴ بایت نیاز داشته باشند (یعنی 2**32 <=) یا گزینه '--eight=1' داده شده باشد، بلوک پارامتر ارسالی به DEVICE از نشانی‌های بلوک منطقی ۸ بایتی تشکیل خواهد شد.

آرگومان‌های گزینه‌های طولانی برای گزینه‌های کوتاه نیز اجباری هستند. گزینه‌ها بر اساس حروف الفبای نام گزینه طولانی مرتب شده‌اند.

که در آن A,A... رشته‌ای از اعداد جداشده با کاما است. هر عدد دهدهی تفسیر می‌شود مگر اینکه پیشوند '0x' یا '0X' داشته باشد (یا دارای پسوند 'h' یا 'H' باشد). اگر چندین نشانی بلوک منطقی داده شود، باید با کاما یا یک فاصله (منفرد) از هم جدا شوند. رشته‌ای که شامل هرگونه جداکننده فاصله باشد باید درون علامت نقل‌قول قرار گیرد. حداقل یک نشانی باید داده شود.
خواندن یک یا چند نشانی بلوک منطقی از ورودی استاندارد (stdin). این نشانی‌ها می‌توانند با کاما، فاصله، تب یا خط جدید (newline) از هم جدا شوند. اگر خطی شامل "#" باشد، کاراکترهای باقیمانده در آن خط نادیده گرفته می‌شوند. در غیر این صورت، هر دنباله غیرجداکننده از کاراکترها باید به یک عدد دهدهی تبدیل شود، مگر اینکه پیشوند '0x' یا '0X' داشته باشد (یا پسوند 'h' داشته باشد). حداقل یک نشانی باید داده شود. طول خطوط نباید بیشتر از ۱۰۲۳ بایت باشد.
آماده‌سازی برای اجرای دستور SCSI REASSIGN BLOCKS بدون اجرای واقعی آن. از آنجا که دستور REASSIGN BLOCKS اساساً غیرقابل‌بازگشت است، کاربران محتاط ممکن است بخواهند قبل از بازتخصیص بلوک‌های معیوب روی یک دیسک، نحوه فراخوانی این ابزار را بررسی کنند. این گزینه همراه با '-vv' برای کسانی که مایل به مشاهده بلوک پارامتر همراه دستور هستند مفید است.
وقتی مقدار ۱ باشد، پرچم 'LONGLBA' را در دستور تنظیم می‌کند که نشان می‌دهد نشانی‌های موجود در بلوک پارامتر مرتبط، کمیت‌های ۸ بایتی هستند. هنگامی که مقدار ۰ باشد، پرچم 'LONGLBA' را در دستور پاک می‌کند که نشان می‌دهد نشانی‌ها کمیت‌های ۴ بایتی هستند. اگر این گزینه داده نشود، کمیت‌های ۴ بایتی فرض می‌شوند مگر اینکه یکی از نشانی‌ها بیش از حد بزرگ باشد.
استفاده از دستور SCSI READ DEFECT DATA (10) برای تعیین تعداد عناصر موجود در «فهرست عیوب افزوده» (grown defect list). با ارائه این گزینه، هیچ بازتخصیصی برای بلوک‌ها انجام نمی‌شود (یعنی این ابزار به صورت غیرفعال عمل می‌کند). هنگامی که این گزینه داده شود، گزینه --address= مجاز نیست. بحث زیر را درباره رابطه بین بلوک‌های بازتخصیص‌یافته و فهرست عیوب افزوده ببینید. از این فهرست گاهی با عنوان GLIST یاد می‌شود.
نمایش پیام راهنمای نحوه استفاده و سپس خروج.
چاپ پاسخ در قالب هگزادسیمال (برای -g، --grown، -p یا --primary).
فیلد هم‌نام در cdb دستور REASSIGN BLOCKS را روی مقدار داده‌شده تنظیم می‌کند. فقط ۱۰۰۰ نشانی مجاز است، بنابراین نیازی به مشخص کردن مقدار ۱ وجود ندارد. نسخه فهرست کوتاه، طول بلوک پارامتر را به 2 ** 16 بایت (یعنی حدود ۱۶۰۰۰ نشانی ۴ بایتی یا ۸۰۰۰ نشانی ۸ بایتی) محدود می‌کند. این گزینه صرفاً برای کامل بودن اضافه شده است.
استفاده از دستور SCSI READ DEFECT DATA (10) برای تعیین تعداد عناصر موجود در «فهرست عیوب اولیه» (primary defect list) که در طول فرآیند ساخت کارخانه ایجاد شده است. با ارائه این گزینه هیچ بازتخصیصی برای بلوک‌ها انجام نمی‌شود (یعنی ابزار غیرفعال است). هنگامی که این گزینه ارائه شود، استفاده از گزینه --address= مجاز نیست. از این فهرست گاهی با عنوان PLIST یاد می‌شود.
افزایش سطح پرگویی (یعنی خروجی اشکال‌زدایی).
چاپ رشته نگارش برنامه و سپس خروج.

توجه داشته باشید که اگر فیلد ARRE (برای خواندن) و/یا فیلد AWRE (برای نوشتن) در برگه حالت «بازیابی خطای خواندن/نوشتن» (Read Write Error Recovery) تنظیم شده باشند، خطاهای قابل‌بازیابی خواندن و/یا نوشتن باعث بازتخصیص خودکار بلوک معیوب می‌شوند. بیت PER در همان برگه حالت کنترل می‌کند که آیا کلید حس RECOVERED ERROR گزارش شود یا خیر (PER=1 به معنای گزارش دادن است). صرف‌نظر از تنظیمات فیلدهای ARRE، AWRE یا PER، برگه‌های لاگ شمارنده خطا هرگونه خطایی (بازیابی‌شده یا غیر آن) را منعکس می‌کنند. هر زمان که بلوکی بازتخصیص داده شود، ورودی جدیدی در فهرست عیوب «افزوده» (grown) اضافه می‌شود. جدای از انجام منظم خودآزمایی‌ها (ابزارهای sg_senddiag یا smartmontools را ببینید)، پایش فهرست عیوب افزوده یک دیسک معیار مناسبی برای سنجش سلامت آن است. اگر فهرست عیوب افزوده به‌سرعت رشد کند، نشانه‌ای نگران‌کننده است. بهترین فهرست‌های عیوب افزوده، فهرست‌های خالی هستند. تعداد عناصر موجود در فهرست عیوب افزوده را می‌توان با گزینه --grown مشاهده کرد. محتوای این فهرست را می‌توان با ابزار 'sginfo -G' مشاهده نمود.

اگر یک خطای غیرقابل‌بازیابی در یک نشانی بلوک منطقی تشخیص داده شود، برای بازتخصیص آن بلوک به REASSIGN BLOCKS نیاز است. همچنین اگر فیلدهای ARRE و/یا AWRE غیرفعال باشند و یک خطای قابل‌بازیابی شناسایی شود، بلوک منطقی مورد نظر را می‌توان با این ابزار بازتخصیص داد (در غیر این صورت، برگه‌های لاگ شمارنده خطا برای هر بار دسترسی بازیابی‌شده به‌طور مداوم افزایش می‌یابند).

تعداد بلوک‌های ذخیره‌شده به منظور REASSIGN BLOCKS وابسته به سازنده دیسک است و ممکن است به همان ناحیه‌ای از رسانه که بلوک معیوب اصلی در آن قرار داشته محدود باشد. هنگامی که این تعداد تمام شود، فراخوانی‌های بعدی این ابزار ممکن است منجر به کلید حس خطای سخت‌افزاری و کد حس اضافی 'No defect spare location available' شود. گام بعدی در این شرایط، فرمت‌بندی مجدد دیسک (یا تهیه دیسک جایگزین) خواهد بود.

پیش‌نویس استاندارد SBC-2 (بازنگری ۱۶) اشاره می‌کند که وقتی چندین نشانی به دستور SCSI REASSIGN BLOCKS داده می‌شود و در یکی از نشانی‌های بعدی نقصی رخ دهد، تمامی نشانی‌های قبل از آن از قبل بازتخصیص داده شده‌اند. در چنین حالتی باید دقت ویژه‌ای به خرج داد. اجرای مجدد دستور با همان نشانی‌ها باعث می‌شود نشانی‌های اولیه مجدداً بازتخصیص یابند. در نقطه‌ای از این روند، دیسک با کمبود مکان‌های ذخیره مواجه خواهد شد؛ بنابراین مگر در مواردی که تعداد زیادی نشانی در میان باشد، ایمن‌تر است که آن‌ها را به‌صورت یک نشانی در هر نوبت بازتخصیص دهید.

وضعیت خروج sg_reassign در صورت موفقیت ۰ است. در غیر این صورت به صفحه راهنمای sg3_utils(8) مراجعه کنید.

نوشته‌شده توسط Douglas Gilbert.

گزارش باگ‌ها به <dgilbert at interlog dot com>.

حق نشر © 2005-2019 متعلق به Douglas Gilbert است.
این نرم‌افزار تحت مجوز BSD-2-Clause توزیع می‌شود. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص.

sg_format,sginfo,sg_senddiag(all in sg3_utils), sdparm(sdparm), smartmontools(internet, sourceforge)

October 2019 sg3_utils-1.45