.TH SG_LUNS "8" "June 2023" "sg3_utils\-1.48" SG3_UTILS .SH "نام (NAME)" sg_luns \- ارسال دستور SCSI REPORT LUNS یا رمزگشایی LUN داده‌شده .SH "خلاصه دستور (SYNOPSIS)" .B sg_luns [\fI\-\-decode\fR] [\fI\-\-help\fR] [\fI\-\-hex\fR] [\fI\-\-inhex=FN\fR] [\fI\-\-inner\-hex\fR] [\fI\-\-json[=JO]\fR] [\fI\-\-js\-file=JFN\fR] [\fI\-\-linux\fR] [\fI\-\-lu_cong\fR] [\fI\-\-maxlen=LEN\fR] [\fI\-\-quiet\fR] [\fI\-\-raw\fR] [\fI\-\-readonly\fR] [\fI\-\-select=SR\fR] [\fI\-\-sinq_inraw=RFN\fR] [\fI\-\-verbose\fR] [\fI\-\-version\fR] \fIDEVICE\fR .PP .B sg_luns \fI\-\-test=ALUN\fR [\fI\-\-decode\fR] [\fI\-\-hex\fR] [\fI\-\-inner\-hex\fR] [\fI\-\-lu_cong\fR] [\fI\-\-verbose\fR] .SH "توضیحات (DESCRIPTION)" .\" Add any additional description here در حالت اول نشان داده‌شده در بخش «خلاصه دستور»، این ابزار دستور SCSI REPORT LUNS را به .I DEVICE ارسال کرده و پاسخ را نمایش می‌دهد. پاسخ باید فهرستی از LUNها («سیاهه یا موجودی LUN») برای پیوند I_T مرتبط با .I DEVICE باشد. به طور کلی این شامل تمامی LUNهایی است که در دستگاه هدفِ دریافت‌کننده دستور REPORT LUNS مشترک هستند. این دستور در استانداردهای SCSI مربوط به SPC\-3 و SPC\-4 تعریف شده و پشتیبانی از آن اجباری است. جدیدترین پیش‌نویس آن SPC\-6 ویرایش ۱ است. .PP هنگامی که گزینه .I \-\-test=ALUN مشخص شود (حالت دوم در بخش «خلاصه دستور»)، مقدار .I ALUN همان‌طور که در استانداردهای گوناگون مدل معماری SCSI (یا SAM) و پیش‌نویس‌های اخیر (مانند SAM\-6 ویرایش ۲، بخش ۴.۷) شرح داده شده، رمزگشایی می‌شود. .PP در ادامه هر جا لازم باشد، حالت اول نشان داده‌شده در «خلاصه دستور» تحت عنوان «حالت دستگاه» (device mode) و حالت دوم «حالت آزمایشی» (test mode) نامیده می‌شود. .SH "گزینه‌ها (OPTIONS)" آرگومان‌های گزینه‌های بلند برای گزینه‌های کوتاه نیز اجباری هستند. .TP \fB\-d\fR, \fB\-\-decode\fR رمزگشایی LUNها به اجزای تشکیل‌دهنده آن‌ها، همان‌گونه که در بخش LUN در استانداردهای SAM\-3، SAM\-4 و SAM\-5 شرح داده شده است. .br [حالت آزمایشی] مقدار .I ALUN صرف‌نظر از اینکه این گزینه مشخص شود یا خیر، رمزگشایی می‌شود. اگر این گزینه یک بار مشخص شود، مقدار .I ALUN در قالب ترجیحی T10 (که شامل ۸ جفت رقم هگزادسیمال با فاصله میان هر جفت است) چاپ می‌شود. اگر دو بار مشخص شود، مقدار .I ALUN در قالب جایگزین T10 متشکل از چهار بخش چهارتایی از ارقام هگزادسیمال چاپ می‌شود که هر بخش با یک .B "\-" جدا شده است (مانند C101\-0000\-0000\-0000). .TP \fB\-h\fR, \fB\-\-help\fR نمایش پیام راهنمای استفاده و سپس خروج. .TP \fB\-H\fR, \fB\-\-hex\fR [حالت دستگاه] اگر یک بار مشخص شود، این ابزار پاسخ SCSI (یعنی بافر data\-out) به دستور REPORT LUNS را در قالب هگزادسیمال ASCII نمایش داده و خارج می‌شود. اگر دو بار مشخص شود، باعث می‌شود گزینه .I \-\-decode فیلدهای سازنده را به جای ده‌دهی در قالب هگزادسیمال چاپ کند. توجه داشته باشید که این رفتار (نحوه پردازش .BR '\-HH' ) با توضیحات موجود در .BR sg3_utils (8) متفاوت است. گزینه .I \-\-inner\-hex عملکردی مشابه .B '\-HH' دارد. اگر این گزینه سه بار (یا بیشتر) مشخص شود، خروجی هگزادسیمال برای ذخیره در فایل و استفاده بعدی در اجرای sg_luns به همراه گزینه .I \-\-inhex=FN مناسب خواهد بود. .br [حالت آزمایشی] اگر این گزینه مشخص شود، فیلدهای سازنده رمزگشایی‌شده از .I ALUN در قالب هگزادسیمال چاپ می‌شوند. .br اگر این گزینه سه بار یا بیشتر داده شود، بایت‌های هگزادسیمال ASCII (حداکثر ۱۶ بایت در هر خط) بدون آدرس یا نمایه آغازین در خروجی چاپ می‌شوند. این خروجی برای ذخیره در یک فایل و اجرای بعدی این ابزار جهت رمزگشایی با گزینه .I \-\-inhex=FN مناسب است. اگر این گزینه چهار بار استفاده شود، یک خط توضیح (که با «#» آغاز می‌شود) پیش از مقادیر هگزادسیمال اضافه می‌گردد که مشخص می‌کند خروجی توسط چه ابزاری تولید شده است. فایلی که شامل چنین خطوط توضیحی باشد همچنان توسط گزینه .I \-\-inhex=FN قابل پردازش و خواندن خواهد بود. .TP \fB\-i\fR, \fB\-\-inhex\fR=\fIFN\fR مقدار .I FN باید نام یک فایل (یا «\-» برای ورودی استاندارد stdin) باشد که حاوی داده‌های هگزادسیمال ASCII یا باینری نشان‌دهنده پاسخ REPORT LUNS است. این ابزار سپس آن پاسخ را رمزگشایی می‌کند. برای اطلاعات بیشتر به بخش «HEX, BINARY AND JSON FORMATS» در صفحه راهنمای .B sg3_utils مراجعه کنید. اگر گزینه .I \-\-raw نیز مشخص شده باشد، با .I FN به عنوان یک فایل باینری رفتار می‌شود. .TP \fB\-I\fR, \fB\-\-inner\-hex\fR همراه با گزینه .I \-\-decode استفاده می‌شود تا مقادیر رمزگشایی‌شده در قالب هگزادسیمال نمایش داده شوند. رفتار پیش‌فرض نمایش مقادیر رمزگشایی‌شده در قالب ده‌دهی است. این گزینه عملکردی مشابه .B '\-HH' دارد، اما هدف استفاده از آن با این گزینه واضح‌تر است. .TP \fB\-j\fR[=\fIJO\fR], \fB\-\-json\fR[=\fIJO\fR] خروجی به جای متن ساده در قالب JSON ارائه می‌شود. توجه داشته باشید که آرگومان‌های فرم کوتاه و بلند خود اختیاری هستند و در صورت وجود با «=» آغاز می‌شوند و هیچ فاصله خالی در اطراف آن «=» مجاز نیست. .br برای کسب اطلاعات بیشتر صفحه راهنمای sg3_utils_json را ببینید یا از «?» برای .I JO استفاده کنید تا خلاصه آن را دریافت نمایید. .TP \fB\-J\fR, \fB\-\-js\-file\fR=\fIJFN\fR خروجی در قالب JSON تولید شده و به فایلی به نام .I JFN ارسال می‌شود. اگر آن فایل وجود داشته باشد، محتوای پیشین آن بازنویسی می‌شود. به طور پیش‌فرض، خروجی JSON به خروجی استاندارد (stdout) ارسال می‌شود. .br هنگامی که این گزینه مشخص شود، گزینه .I \-\-json[=JO] به طور ضمنی فعال شده و نیازی به ذکر آن نیست. با این حال ممکن است همچنان برای تنظیم پارامتر .I JO روی مقادیر غیر پیش‌فرض، به گزینه .I \-\-json[=JO] نیاز باشد. .TP \fB\-l\fR, \fB\-\-linux\fR این گزینه فقط در لینوکس موجود است. پس از نمایش T10 هر LUN شصت و چهار بیتی (در قالب ۱۶ رقم هگزادسیمال)، در صورت تعیین این گزینه، در سمت راست درون براکت مقدار عدد صحیح LUN لینوکس در قالب ده‌دهی چاپ می‌شود. اگر گزینه .I \-\-hex نیز دو بار داده شود (مانند .BR \-HH )، عدد صحیح LUN لینوکس در قالب هگزادسیمال نمایش داده می‌شود. .TP \fB\-L\fR, \fB\-\-lu_cong\fR این گزینه فقط همراه با .I \-\-decode در نظر گرفته می‌شود. اگر یک بار مشخص شود، فهرست LUNها به گونه‌ای رمزگشایی می‌شود که گویی بیت LU_CONG در پاسخ INQUIRY متناظر با هر LU فعال (set) بوده است. اگر دو بار مشخص شود، فهرست LUNها به گونه‌ای رمزگشایی می‌شود که گویی بیت LU_CONG در پاسخ INQUIRY متناظر با هر LU پاک (clear) بوده است. هنگامی که این گزینه داده نشود و .I \-\-decode داده شده باشد، یک دستور INQUIRY به .I DEVICE ارسال شده و مقدار بیت LU_CONG آن برای رمزگشایی فهرست LUNها به کار گرفته می‌شود. .br [حالت آزمایشی] رمزگشایی .I ALUN به گونه‌ای که گویی بیت LU_CONG در پاسخ استاندارد INQUIRY متناظر با آن فعال است؛ به بیان دیگر با .I ALUN مانند یک LUN مجتمع (conglomerate LUN) رفتار می‌کند. اگر داده نشود (یا دو بار داده شود)، .I ALUN به گونه‌ای رمزگشایی می‌شود که گویی بیت LU_CONG پاک است. .TP \fB\-m\fR, \fB\-\-maxlen\fR=\fILEN\fR که در آن .I LEN طول (حداکثر) پاسخ بر حسب بایت است و در فیلد «allocation length» مربوط به cdb قرار می‌گیرد. اگر داده نشود (یا مقدار .I LEN صفر باشد)، از مقدار ۸۱۹۲ استفاده می‌شود. حداکثر مقدار مجاز برای .I LEN برابر با ۱۰۴۸۵۷۶ است. .TP \fB\-q\fR, \fB\-\-quiet\fR تنها نمایش هگزادسیمال ASCII مربوط به هر LUN گزارش‌شده، یک مورد در هر خط چاپ می‌شود. بدون گزینه .IR \-\-quiet ، اطلاعات هدر قبل از فهرست LUNها چاپ می‌شود. .TP \fB\-r\fR, \fB\-\-raw\fR چاپ پاسخ SCSI (یعنی بافر data\-out) به صورت باینری (در خروجی استاندارد stdout). .TP \fB\-R\fR, \fB\-\-readonly\fR باز کردن .I DEVICE به صورت فقط‌خواندنی (مانند فلگ O_RDONLY در یونیکس). حالت پیش‌فرض باز کردن آن به صورت خواندنی\-نوشتنی است. .TP \fB\-s\fR, \fB\-\-select\fR=\fISR\fR مقدار .I SR در فیلد SELECT REPORT دستور SCSI REPORT LUNS قرار می‌گیرد. مقدار پیش‌فرض 0 است. مقادیر هگزادسیمال می‌توانند با پیشوند «0x» یا پسوند «h» مشخص شوند. برای اطلاعات دقیق به دستور REPORT LUNS در SPC مراجعه کنید (جدیدترین مورد SPC\-4 ویرایش ۳۷ در بخش ۶.۳۳ است). به بیان ساده، برای پیوند I_T مرتبط با .IR DEVICE ، معانی مقادیر .I SR که تا به امروز برای SPC\-4 تعریف شده‌اند عبارتند از: .nf \fB0\fR : اکثر LUNها به استثنای شماره‌های واحد منطقی شناخته‌شده (well known) \fB1\fR : شماره‌های واحد منطقی شناخته‌شده \fB2\fR : تمامی LUNهای قابل دسترسی برای این پیوند I_T \fB0x10\fR : تنها LUNهای مدیریتی در دسترس \fB0x11\fR : LUNهای مدیریتی به علاوه LUNهای غیرمجتمع (به SPC\-4 مراجعه کنید) \fB0x12\fR : اگر \fIDEVICE\fR یک LU مدیریتی باشد، LUN آن را به همراه LUNهای تابع آن گزارش می‌کند .fi .br برای مقادیر .I SR برابر با 0x10 و 0x11، دستگاه .I DEVICE باید یا LUN 0 باشد یا واحد منطقی شناخته‌شده REPORT LUNS. مقادیر میان 0xf8 و 0xff (شامل هر دو) وابسته به سازنده (vendor specific) هستند و سایر مقادیر رزرو شده‌اند. این ابزار هر مقداری بین 0 تا 255 (0xff) را برای .I SR می‌پذیرد. .TP \fB\-Q\fR, \fB\-\-sinq_inraw\fR=\fIRFN\fR که در آن .I RFN نام فایلی حاوی داده‌های پاسخ باینری استاندارد INQUIRY است که با .I DEVICE یا .I FN مطابقت دارد. لینوکس این پاسخ استاندارد INQUIRY را در شبه‌سیستم‌فایل sysfs خود قرار می‌دهد. یک مسیر معمول در /sys/class/scsi_device//device/inquiry است که در آن یک چندتایی عددی چهاربخشی است که با دونقطه از هم جدا شده‌اند. این چندتایی دستگاه را از هر دستگاه دیگر در سیستم متمایز می‌کند. .br در حال حاضر با تعیین این گزینه، فیلد LU_CONG از پاسخ استاندارد INQUIRY خوانده می‌شود. گزینه .I \-\-raw هیچ تأثیری بر این گزینه ندارد. آرگومان .I DEVICE می‌تواند همراه با این گزینه ارائه شود. .TP \fB\-t\fR, \fB\-\-test\fR=\fIALUN\fR فرض می‌شود که .I ALUN یک عدد هگزادسیمال در قالب ASCII hex یا حرف 'L' به همراه یک عدد ده‌دهی است (به توضیحات زیر مراجعه کنید). عدد هگزادسیمال می‌تواند تا ۶۴ بیت باشد (یعنی ۱۶ رقم هگزادسیمال) و اگر کمتر از ۱۶ رقم هگزادسیمال داده شود، از سمت راست با صفر پر (pad) می‌شود (برای مثال .I \-\-test=0122003a نشان‌دهنده T10 LUN به صورت: 01 22 00 3a 00 00 00 00 است). .I ALUN می‌تواند دارای پیشوند '0x' یا '0X' باشد (برای مثال در مورد قبل می‌توانست به صورت .I \-\-test=0x0122003a نوشته شود). .I ALUN همچنین می‌تواند با فاصله، تب یا یک کاراکتر .B '\-' بین هر بایت (یا سایر گروه‌بندی‌ها مانند c101\-0000\-0000\-0000) مشخص شود. با این حال در صورت استفاده از فاصله یا تب به عنوان جداکننده، .I ALUN باید درون علامت‌های نقل‌قول تکی یا دوتایی قرار گیرد. .br در حالتی که 'L' در ابتدا بیاید، عدد ده‌دهی پس از آن (یا هگزادسیمال اگر با '0x' شروع شود) به عنوان LUN با «کلمات معکوس‌شده» (word flipped) در لینوکس در نظر گرفته می‌شود که به نمایش LUN در استاندارد T10 تبدیل و چاپ می‌شود. در هر دو حالت، عدد به عنوان یک LUN تفسیر شده و به گونه‌ای رمزگشایی می‌شود که گویی گزینه .I \-\-decode داده شده است. همچنین هنگامی که .I ALUN یک عدد هگزادسیمال باشد می‌تواند دارای پسوند 'L' باشد که در این صورت مقدار معادل LUN لینوکسی «word flipped» در خروجی چاپ می‌شود. LUN در تمام موارد رمزگشایی می‌گردد. .br عملکرد هنگام استفاده به همراه .I \-\-decode در ذیل همان گزینه توضیح داده شده است. .TP \fB\-v\fR, \fB\-\-verbose\fR افزایش سطح پرگویی (یعنی خروجی اشکال‌زدایی). .TP \fB\-V\fR, \fB\-\-version\fR چاپ رشته نسخه و سپس خروج. .SH "نکات (NOTES)" دستور SCSI REPORT LUNS برای شناسایی واحد منطقی (LU) اهمیت دارد. پس از کشف دستگاه هدف (معمولاً از طریق یک سازوکار ویژه پروتکل انتقال) و پس از ارسال دستور INQUIRY (جهت تعیین تنظیمات LU_CONG)، یک دستور REPORT LUNS باید یا به LUN 0 (که روش آدرس‌دهی دستگاه جانبی با bus_id=0 و target/lun=0 است) ارسال شود یا به LUN شناخته‌شده REPORT LUNS (یعنی 0xc101000000000000). استاندارد SAM\-5 الزامی کرده است که یکی از این دو با سیاهه LUNهای موجود در این دستگاه هدف پاسخ دهد. .PP در حالت آزمایشی، اگر گزینه .I \-\-hex یک بار داده شود، در خروجی رمزگشایی‌شده برخی از فیلدهای سازنده با صفر در ابتدا (leading zeros) در قالب هگزادسیمال چاپ می‌شوند. صفرهای ابتدایی برای نشان دادن اندازه فیلد سازنده هستند. به عنوان مثال: در روش آدرس‌دهی دستگاه جانبی (مجموعاً ۱۶ بیت)، شناسه گذرگاه (bus ID) دارای عرض ۶ بیت و فیلد target/LUN دارای عرض ۸ بیت است؛ بنابراین هر دو با دو رقم هگزادسیمال نمایش داده می‌شوند (مانند bus_id=0x02, target=0x3a). .SH "مثال‌ها (EXAMPLES)" معمولاً تا زمانی که برنامه‌های فضای کاربری اجرا شوند، LUهای SCSI شناسایی شده‌اند. در لینوکس، ابزار lsscsi واحدهای منطقی را که در حال حاضر موجود هستند فهرست می‌کند. شناسه LUN یک دستگاه (LU) چهارمین عنصر در چندتایی ابتدای هر خط است. در زیر می‌بینیم که یک هدف (یا «پیوند I_T»: "6:0:0") دارای دو LUN است: 1 و 49409. اگر 49409 به قالب T10 LUN تبدیل شود، برابر با 0xc101000000000000 خواهد بود که همان LUN شناخته‌شده REPORT LUNS است. .PP .EX # lsscsi \-g [6:0:0:1] disk Linux scsi_debug 0004 /dev/sdb /dev/sg1 [6:0:0:2] disk Linux scsi_debug 0004 /dev/sdc /dev/sg2 [6:0:0:49409]wlun Linux scsi_debug 0004 \- /dev/sg3 .EE .PP می‌توانیم یک دستور REPORT LUNS (با مقدار \fISR\fR برابر 0x0، 0x1 یا 0x2) به هر یک از این گره‌های دستگاه فایلی ارسال کرده و نتیجه یکسانی بگیریم. در زیر از /dev/sg1 استفاده می‌کنیم: .PP .EX # sg_luns /dev/sg1 Lun list length = 16 which implies 2 lun entries Report luns [select_report=0x0]: 0001000000000000 0002000000000000 .EE .PP این خروجی کمی شلوغ است، بنابراین با استفاده از \fI\-\-quiet\fR موارد اضافی را حذف می‌کنیم: .PP .EX # sg_luns \-q /dev/sg1 0001000000000000 0002000000000000 .EE .PP اکنون آن LUN را به اجزای سازنده آن رمزگشایی می‌کنیم: .PP .EX # sg_luns \-d \-q /dev/sg1 0001000000000000 Peripheral device addressing: lun=1 0002000000000000 Peripheral device addressing: lun=2 .EE .PP اکنون از \fI\-\-select=1\fR استفاده می‌کنیم تا ببینیم آیا LUN شناخته‌شده‌ای وجود دارد یا خیر: .PP .EX # sg_luns \-q \-s 1 /dev/sg1 c101000000000000 .EE .PP بنابراین در مجموع چند LUN داریم (مرتبط با پیوند I_T فعلی): .PP .EX # sg_luns \-q \-s 2 /dev/sg1 0001000000000000 0002000000000000 c101000000000000 .EE .PP .EX # sg_luns \-q \-s 2 \-d /dev/sg1 0001000000000000 Peripheral device addressing: lun=1 0002000000000000 Peripheral device addressing: lun=1 c101000000000000 REPORT LUNS well known logical unit .EE .PP مثال زیر از گزینه \fI\-\-linux\fR استفاده می‌کند و در سایر سیستم‌های عامل در دسترس نیست. عدد اضافه درون براکت، نسخه لینوکسی T10 LUN است که در ابتدای خط نشان داده شده است. .PP .EX # sg_luns \-q \-s 2 \-l /dev/sg1 0001000000000000 [1] 0002000000000000 [2] c101000000000000 [49409] .EE .PP اکنون از گزینه \fI\-\-test=\fR برای رمزگشایی LUNهای واردشده در خط فرمان استفاده می‌کنیم (به جای ارسال دستور REPORT LUNS و پردازش پاسخ): .PP .EX # sg_luns \-\-test=0002000000000000 Decoded LUN: Peripheral device addressing: lun=2 .EE .PP .EX # sg_luns \-\-test="c1 01" Decoded LUN: REPORT LUNS well known logical unit .EE .PP .EX # sg_luns \-t 0x023a004b \-H Decoded LUN: Peripheral device addressing: bus_id=0x02, target=0x3a >>Second level addressing: Peripheral device addressing: lun=0x4b .EE .PP مثال بعدی مختص لینوکس است که در آن بررسی می‌کنیم LUN لینوکسی 49409 در دنیای T10 به چه مقداری تبدیل می‌شود: .PP .EX # sg_luns \-\-test=L49409 64 bit LUN in T10 preferred (hex) format: c1 01 00 00 00 00 00 00 Decoded LUN: REPORT LUNS well known logical unit .EE .PP و نگاشت بین نمایش‌های T10 و LUN لینوکس می‌تواند به روش معکوس نیز انجام شود: .PP .EX # sg_luns \-t c101L Linux 'word flipped' integer LUN representation: 49409 Decoded LUN: REPORT LUNS well known logical unit .EE .SH "وضعیت خروج (EXIT STATUS)" وضعیت خروج sg_luns در صورت اجرای موفق 0 است. در غیر این صورت به صفحه راهنمای .BR sg3_utils (8) مراجعه کنید. .SH "نویسندگان (AUTHORS)" نوشته‌شده توسط Douglas Gilbert. .SH "گزارش باگ‌ها (REPORTING BUGS)" گزارش باگ‌ها به . .SH "حق نشر (COPYRIGHT)" کپی‌رایت \(co 2004\-2023 Douglas Gilbert .br این نرم‌افزار تحت مجوز BSD\-2\-Clause توزیع می‌شود. هیچ ضمانتی وجود ندارد؛ حتی برای قابلیت تجاری یا تناسب با یک هدف خاص. .SH "همچنین ببینید (SEE ALSO)" .B sg_inq(8),sg3_utils(8)