SG_READCAP(8) SG3_UTILS SG_READCAP(8)

sg_readcap - ارسال دستور SCSI READ CAPACITY

sg_readcap [--10] [--16] [--brief] [--help] [--hex] [--inhex=FN] [--json[=JO]] [--js-file=JFN] [--lba=LBA] [--long] [--pmi] [--raw] [--readonly] [--verbose] [--version] [--zbc] DEVICE

sg_readcap [-16] [-b] [-h] [-H] [-lba=LBA] [-pmi] [-r] [-R] [-v] [-V] [-z] DEVICE

عملکرد معمول دستور SCSI READ CAPACITY دریافت تعداد بلوک‌ها (و اندازه بلوک) از DEVICE است.

دستور SCSI READ CAPACITY (هر دو نسخه ۱۰ و ۱۶ بایتی cdb) در واقع آدرس بلوک آخرین بلوک و اندازه بلوک را بازمی‌گرداند. بنابراین تعداد بلوک‌ها برابر با یک به علاوه آدرس آخرین بلوک است (زیرا شمارش بلوک‌ها از مبنای صفر شروع می‌شود؛ یعنی از بلوک صفر). این موضوع منشأ بسیاری از خطاهای «یکی کمتر یا بیشتر» (off by one) است.

پاسخ READ CAPACITY(16) اطلاعات بیشتری ارائه می‌دهد که در پاسخ READ CAPACITY(10) یافت نمی‌شود. این اطلاعات شامل اطلاعات حفاظت و تخصیص بلوک منطقی (logical block provisioning)، به‌علاوه تعداد بلوک‌های منطقی در هر بلوک فیزیکی است. بنابراین حتی اگر اندازه رسانه از آنچه READ CAPACITY(10) می‌تواند نمایش دهد بیشتر نباشد، باز هم بررسی پاسخ READ CAPACITY(16) مفید است. متأسفانه پیاده‌سازی‌های بسیار نامناسبی از مجموعه دستورات SCSI وجود دارند که در صورت ارسال دستور READ CAPACITY(16) به آن‌ها دچار فروپاشی (crash) می‌شوند.

ظرفیت دستگاه حاصل‌ضرب تعداد بلوک‌ها در اندازه بلوک است. این ابزار این مقدار را به بایت، مبی‌بایت (MiB، هر MiB برابر با ۱۰۴۸۵۷۶ بایت)، گیگابایت (GB، هر GB برابر با ۱۰۰۰۰۰۰۰۰۰ بایت) و در صورت بزرگ بودن به ترابایت (TB، هر ۱۰۰۰ گیگابایت) در خروجی نمایش می‌دهد.

اگر sg_readcap بدون گزینه --long فراخوانی شود، نسخه ۱۰ بایتی cdb (یعنی READ CAPACITY (10)) به DEVICE ارسال می‌شود. اگر تعداد بلوک‌ها در پاسخ برابر با 0xffffffff (یعنی (2**32 - 1)) گزارش شود و گزینه --hex داده نشده باشد، در این صورت READ CAPACITY (16) فراخوانی شده و پاسخ آن چاپ می‌شود.

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

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

--10
استفاده از گونه ۱۰ بایتی cdb برای دستور READ CAPACITY. این حالت در حال حاضر رفتار پیش‌فرض این ابزار است. این پیش‌فرض ممکن است به گونه ۱۶ بایتی تغییر یابد، به‌ویژه اگر T10 استفاده از گونه ۱۰ بایتی را منسوخ اعلام کند.
--16
استفاده از گونه ۱۶ بایتی cdb برای دستور READ CAPACITY. گزینه --long را ببینید.
دو عدد هگزادسیمال (با پیشوند '0x' و جدا شده با فاصله) در خروجی استاندارد چاپ می‌کند. عدد اول حداکثر تعداد بلوک‌های روی دستگاه است (که برابر است با یک به‌علاوه lba آخرین بلوک قابل دسترس). عدد دوم اندازه هر بلوک به بایت است. اگر عملیات شکست بخورد، مقدار "0x0 0x0" در خروجی استاندارد نوشته می‌شود.
پیام راهنمای نحوه استفاده را چاپ کرده و خارج می‌شود.
پاسخ دستور READ CAPACITY (هر یک از گونه‌های ۱۰ یا ۱۶ بایتی cdb) را به صورت هگزادسیمال اسکی در خروجی استاندارد نمایش می‌دهد. هر خط با یک آدرس یا شاخص هگزادسیمال شروع می‌شود که از ۰ آغاز می‌گردد. اگر این گزینه دو بار داده شود، نمایش اسکی ۱۶ بایتِ هر خط به انتهای سمت راست خط اضافه می‌شود.
اگر این گزینه سه بار داده شود، ۱۶ بایت هگزادسیمال اسکی در هر خط بدون آدرس ابتدایی و بدون نمایش اسکی در سمت راست چاپ می‌شود. این خروجی برای وارد کردن در فراخوانی‌های بعدی این ابزار از طریق فایلی که به گزینه --inhex=FN داده می‌شود مناسب است. در صورت مشخص شدن چهار بار (یا بیشتر)، این گزینه یک خط توضیح (شروع شده با '#') حاوی دستوری که باعث ایجاد خروجی شده است اضافه می‌کند.
که در آن FN نام فایلی است که فرض می‌شود محتویات آن هگزادسیمال اسکی است. اگر DEVICE نیز مشخص شده باشد، DEVICE نادیده گرفته می‌شود، یک هشدار صادر شده و ابزار به کار خود ادامه می‌دهد و فایل مشخص‌شده با FN را رمزگشایی می‌کند. برای اطلاعات بیشتر بخش "HEX, BINARY AND JSON FORMATS" در صفحه راهنمای sg3_utils را ببینید. اگر گزینه --raw نیز داده شده باشد، محتویات FN به عنوان باینری در نظر گرفته می‌شود.
خروجی به جای فرمت متنی ساده در قالب JSON ارائه می‌شود. توجه داشته باشید که آرگومان‌های شکل کوتاه و بلند خود اختیاری هستند و در صورت وجود با "=" شروع می‌شوند و هیچ فاصله‌ای در اطراف آن "=" مجاز نیست.
صفحه راهنمای sg3_utils_json را ببینید یا برای دریافت خلاصه از '?' به عنوان JO استفاده کنید.
خروجی در قالب JSON تولید شده و به فایلی با نام JFN ارسال می‌شود. اگر آن فایل وجود داشته باشد، محتوای آن کوتاه (truncate) می‌شود. به صورت پیش‌فرض، خروجی JSON به خروجی استاندارد فرستاده می‌شود.
هنگامی که این گزینه داده شود، گزینه --json[=JO] به طور ضمنی فعال است و نیازی به ذکر آن نیست. ممکن است هنوز برای تنظیم پارامتر JO به مقادیر غیرپیش‌فرض، به گزینه --json[=JO] نیاز باشد.
همراه با گزینه --pmi استفاده می‌شود. این گونه از READ CAPACITY آدرس آخرین بلوک پس از LBA را پیش از یک تأخیر بازمی‌گرداند. برای یک دیسک، با دریافت یک LBA بالاترین شماره بلوک روی همان سیلندر (یعنی قبل از نیاز به جابجایی هدها) را بازمی‌گرداند. فرض می‌شود LBA ده‌دهی است مگر اینکه پیشوند "0x" داشته باشد یا به "h" ختم شود. مقدار پیش‌فرض ۰ است. این گزینه در نگارش ۲۶ از SBC-3 منسوخ اعلام شد.
استفاده از گونه ۱۶ بایتی cdb برای دستور READ CAPACITY. رفتار پیش‌فرض استفاده از گونه ۱۰ بایتی cdb است که حداکثر آدرس بلوک را به (2**32 - 2) محدود می‌کند. هنگامی که یک دستور READ CAPACITY با cdb ده بایتی روی دستگاهی با اندازه بسیار بزرگ استفاده شود، مقدار 0xffffffff به عنوان آدرس آخرین بلوک بازگردانده می‌شود (در صورتی که دستگاه با SBC-2 یا بالاتر سازگار باشد).
تغییر به گزینه‌های سبک قدیمی‌تر. لطفاً به عنوان اولین گزینه استفاده کنید.
نشانگر جزئی رسانه (partial medium indicator): برای یافتن آدرس بلوک بعدی پیش از ایجاد تأخیر (مانند حرکت هد). در غیاب این گزینه، تعداد کل بلوک‌ها و اندازه بلوک دستگاه در خروجی چاپ می‌شود. همراه با گزینه --lba=LBA استفاده می‌شود. این گزینه در نگارش ۲۶ از SBC-3 منسوخ شد.
ارسال پاسخ به صورت باینری در خروجی استاندارد.
باز کردن DEVICE به صورت فقط‌خواندنی (به عنوان مثال در یونیکس با فلگ O_RDONLY). پیش‌فرض برای READ CAPACITY(16) باز کردن به صورت خواندن-نوشتن است. پیش‌فرض برای READ CAPACITY(10) باز کردن به صورت فقط‌خواندنی است، بنابراین این گزینه در این حالت تغییری ایجاد نمی‌کند.
افزایش سطح جزئیات گزارش‌ها. می‌تواند چند بار استفاده شود.
رشته نسخه را چاپ کرده و خارج می‌شود.
فیلد اضافی ZBC (یعنی RC_BASIS) را نیز در پاسخ READ CAPACITY چاپ می‌کند. استفاده از این گزینه به صورت ضمنی گزینه --16 را فعال می‌کند.

پاسخ به READ CAPACITY(16) حاوی یک بیت LBPRZ در استاندارد SBC-3 (ANSI INCITS 514-2014) است. همچنین یک بیت LBPRZ با همان معنی در صفحه VPD تخصیص بلوک منطقی (0xb2) وجود داشت. سپس به شکلی تا حدی گیج‌کننده، T10 بیت LBPRZ را در پیش‌نویس نگارش ۷ از SBC-4 به یک فیلد ۳ بیتی گسترش داد، اما فقط در صفحه VPD تخصیص LB. دلیل این گسترش گزارش وضعیت جدید "الگوی مقداردهی اولیه تخصیص" (provisioning initialization pattern) بود (زمانی که یک بلوک منطقی نقشه‌برداری‌نشده خوانده می‌شود). وضعیت جدید در صفحه VPD به LBPRZ=2 اختصاص یافته و مجدداً از LBPRZ=0 در پاسخ READ CAPACITY(16) استفاده می‌کند. مقدار LBPRZ=1 معنای یکسانی برای هر دو گونه حفظ می‌کند، به این معنی که هنگام خواندن یک بلوک منطقی نقشه‌برداری‌نشده، یک بلوک از صفرها بازگردانده خواهد شد.

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

گزینه‌های این بخش تنها گزینه‌های موجود قبل از نسخه ۱.۲۳ از sg3_utils بودند. از آن زمان به بعد این ابزار به طور پیش‌فرض از گزینه‌های جدیدتر خط فرمان استفاده می‌کند که می‌توان با استفاده از --old (یا -O) به عنوان اولین گزینه، آن‌ها را لغو کرد. برای روشی دیگر جهت اجبار به استفاده از این گزینه‌های قدیمی‌تر خط فرمان، بخش متغیرهای محیطی را ببینید.

-16
استفاده از گونه ۱۶ بایتی cdb برای دستور READ CAPACITY. معادل با --long در توضیحات اصلی.
ابزار دو عدد هگزادسیمال (با پیشوند '0x' و جدا شده با فاصله) را در خروجی استاندارد می‌نویسد. عدد اول حداکثر تعداد بلوک‌های روی دستگاه است (که برابر است با یک به‌علاوه lba آخرین بلوک قابل دسترس). عدد دوم اندازه هر بلوک است. اگر عملیات با شکست مواجه شود "0x0 0x0" در خروجی استاندارد نوشته می‌شود. معادل با --brief در توضیحات اصلی.
پیام راهنمای استفاده را نمایش داده و خارج می‌شود. مشخص کردن گزینه -? نیز پیام راهنما را نمایش داده و خارج می‌شود.
پاسخ دستور READ CAPACITY (هر یک از گونه‌های ۱۰ یا ۱۶ بایتی cdb) را به صورت هگزادسیمال اسکی در خروجی استاندارد می‌نویسد.
همراه با گزینه -pmi استفاده می‌شود. این گونه از READ CAPACITY آدرس آخرین بلوک پس از LBA را پیش از یک تأخیر بازمی‌گرداند. معادل با --lba=LBA در توضیحات اصلی.
تغییر به گزینه‌های سبک جدیدتر.
نشانگر جزئی رسانه (partial medium indicator): برای یافتن آدرس بلوک بعدی پیش از ایجاد تأخیر (مانند حرکت هد). در غیاب این سوییچ، تعداد کل بلوک‌ها و اندازه بلوک دستگاه در خروجی نمایش داده می‌شود. معادل با --pmi در توضیحات اصلی.
نمایش پاسخ به صورت باینری (در خروجی استاندارد).
معادل با --readonly در توضیحات اصلی.
گزارش با جزئیات: نمایش cdb دستورات صادر شده پیش از اجرا. '-vv' و '-vvv' نیز برای افزایش سطح جزئیات پذیرفته می‌شوند.
رشته نسخه را در خروجی چاپ کرده و خارج می‌شود.
معادل با --zbc در توضیحات اصلی.

از نسخه ۱.۲۳ ابزار sg3_utils متغیر محیطی SG3_UTILS_OLD_OPTS می‌تواند مشخص شود. هنگامی که این متغیر وجود داشته باشد، این ابزار انتظار گزینه‌های سبک قدیمی خط فرمان را خواهد داشت. بنابراین وجود این متغیر محیطی معادل استفاده از --old (یا -O) به عنوان اولین گزینه خط فرمان است.

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

Copyright © 1999-2023 Douglas Gilbert
این نرم‌افزار تحت مجوز GPL نسخه ۲ توزیع شده است. هیچ تضمینی وجود ندارد؛ حتی برای قابلیت فروش یا تناسب با یک هدف خاص.

sg_inq(sg3_utils)

June 2023 sg3_utils-1.48