| lsscsi(8) | LSSCSI | lsscsi(8) |
نام (NAME)
lsscsi - فهرست کردن دستگاهها (یا میزبانهای) SCSI، فهرست کردن دستگاههای NVMe
خلاصه دستور (SYNOPSIS)
lsscsi [--brief] [--classic] [--controllers] [--device] [--generic] [--help] [--hosts] [--kname] [--list] [--long] [--long-unit] [--lunhex] [--no-nvme] [--pdt] [--protection] [--protmode] [--scsi_id] [--size] [--sysfsroot=PATH] [--sz-lbs] [--transport] [--unit] [--verbose] [--version] [--wwn] [H:C:T:L]
توضیحات (DESCRIPTION)
از اطلاعات موجود در sysfs (سری ۲.۶ هسته لینوکس و بالاتر) برای فهرست کردن دستگاهها (یا میزبانهای) SCSI متصل به سیستم در حال حاضر استفاده میکند. بسیاری از دستگاههای ذخیرهسازی غیر SCSI (اما نه همه آنها) در لینوکس از زیرسیستم SCSI استفاده میکنند. در نسخه 0.30 برنامه lsscsi، پشتیبانی از فهرست کردن دستگاههای NVMe نیز افزوده شد.
در حالت پیشفرض (تکخطی به ازای هر دستگاه، LU یا فضای نام NVMe)، هر خط با یک چندتایی ۴ عنصری درون قلابها آغاز میشود. برای دستگاههای SCSI، عنصر نخست 'H' شماره میزبان (host)، عنصر دوم 'C' شماره کنترلکننده (controller)، عنصر سوم 'T' شماره مقصد (target) و عنصر نهایی شماره واحد منطقی (LUN) است. هر چهار مورد عدد صحیح هستند. برای فضاهای نام NVMe به دو بند پایینتر مراجعه کنید. هنگامی که گزینه --hosts برای دستگاههای SCSI داده شود، این چندتایی به یک عنصر کاهش مییابد: شماره میزبان.
اگر چندتایی H:C:T:L به عنوان آرگومان در خط فرمان داده شود، به عنوان یک پالایه عمل کرده و تنها دستگاههای منطبق با آن فهرست میشوند. نیازی به درج دونقطهها نیست و کاراکترهای '-'، '*'، '?' یا مؤلفههای جاافتاده در انتها به عنوان نویسههای عام (wildcard) تفسیر میشوند. مقدار پیشفرض '*:*:*:*' است که به معنای تطبیق همه دستگاهها (یعنی واحدهای منطقی) است. هر رشته پالایهای که از '*' یا '?' استفاده میکند باید درون علامتهای نقلقول تکی یا دوتایی قرار گیرد تا از بسط پوسته جلوگیری شود. اگر از '-' به عنوان نویسه عام استفاده شود، باید کل چندتایی پالایه با پیشوند '-- ' همراه شود تا به این ابزار اعلام شود هیچ گزینه دیگری در خط فرمان برای تفسیر وجود ندارد. قلاب ابتدایی '[' و انتهایی ']' مجاز هستند (برای نمونه '[1:0:0]' با تمام LUNهای موجود روی 1:0:0 تطبیق مییابد). همچنین میتوان از آن برای پالایش --hosts استفاده کرد که در این حالت فقط H فعال بوده و میتواند یک عدد یا به صورت "host<n>" باشد که در آن <n> شماره میزبان است.
برای دستگاهها و کنترلکنندههای NVMe تقریباً تمام بند پیشین صدق میکند. تفاوت اصلی این است که "N" در موقعیت 'H' (نخست) ظاهر میشود. موقعیت 'C' برای NVMe شماره جزئی (minor) دستگاه نویسهای (char) تولیدشده توسط لینوکس برای کنترلکننده است که اولین شماره ظاهرشده در یک نام معمول کنترلکننده NVMe است؛ برای نمونه: "/dev/nvme2". موقعیت 'T' برای NVMe مقدار "CNTLID" است. موقعیت نهایی 'L' شناسه فضای نام NVMe است که معمولاً یک مقدار ترتیبی است که از ۱ آغاز میشود. پیشوند صریح "N" در ابتدا برای دستگاههای NVMe در داخل برنامه به یک مقدار بزرگ (۳۲,۷۶۷) تبدیل میشود تا با هیچ شماره میزبان SCSI تولیدشده توسط لینوکس تداخل نداشته باشد؛ این همچنین بدین معناست که مرتبسازی عددی مورد استفاده برای نمایش میزبانها (کنترلکنندهها) و دستگاهها (LUها یا واحدهای منطقی) همواره دستگاهها و کنترلکنندههای NVMe را پس از مواردی که از زیرسیستم SCSI استفاده میکنند قرار میدهد. برای پالایش با استفاده از آرگومان H:C:T:L برای کنترلکنندههای NVMe، میتوان از "hostN"، "hostN:<num>"، "N" یا "N:<num>" استفاده کرد؛ هنگامی که هیچ "<num>"ی مشخص نشود، تنها کنترلکنندههای NVMe فهرست خواهند شد (یعنی هیچ میزبان SCSI (کارتهای HBA) را فهرست نمیکند).
بهطور پیشفرض در این ابزار، نام گرههای دستگاه (مانند "/dev/sda" یا "/dev/root_disk") با یادداشت شمارههای اصلی و فرعی (major و minor) دستگاه فهرستشده از sysfs (مانند محتوای "/sys/block/sda/dev") و سپس جستجو برای تطابق در دایرکتوری "/dev" به دست میآید. این «تطابق بر اساس شمارههای اصلی و فرعی» به دستگاههایی که (برای نمونه) توسط udev نام متفاوتی به آنها اختصاص یافته اجازه میدهد تا به درستی توسط این ابزار گزارش شوند.
در برخی شرایط ممکن است دیدن نام گره دستگاه که لینوکس به طور پیشفرض تولید میکند مفید باشد، بنابراین گزینه --kname ارائه شده است. یک نمونه از کاربردهای آن، لاگهای خطای هسته است که پیامهای خطای دیسک را معمولاً با استفاده از نام پیشفرض هسته برای دیسک گزارش میدهند.
گزینهها (OPTIONS)
آرگومانهای گزینههای بلند برای گزینههای کوتاه نیز الزامی هستند. گزینهها بر اساس حروف الفبای نام گزینه بلند مرتب شدهاند. گزینههای بلند خطتیرهدار میتوانند از زیرخط نیز استفاده کنند و برعکس (برای نمونه، --scsi_id یا --scsi-id هر دو پذیرفته هستند).
- -b, --brief
- خروجی
تکخطی به
ازای هر
دستگاه را
به چندتایی
و نام اصلی
دستگاه
کاهش
میدهد. این
امر ممکن
است پردازش
خروجی این
ابزار را در
اسکریپتها
سادهتر
کند. همراه
با گزینه
--generic، در هر
خط چندتایی
(که میتوان
نام دستگاه
گذر مستقیم
bsg را از آن
استنتاج
کرد)، نام
اصلی
دستگاه (که
زیرسیستم
بلوکی
استفاده
میکند) و
نام دستگاه
sg (که آن هم یک
گذر مستقیم
است) را
نمایش
میدهد.
هنگامی که گزینه --pdt همراه با این گزینه استفاده شود، نوع دستگاه جانبی SCSI (یا PDT) به صورت هگزادسیمال (با پیشوند "0x") میان چندتایی و نام اصلی دستگاه نمایش داده میشود. برای فضاهای نام NVMe مقدار "0x0" نمایش مییابد (برای دیسک یا دستگاه دسترسی مستقیم). - -c, --classic
- خروجی مشابه خروجی بهدستآمده از 'cat /proc/scsi/scsi' خواهد بود.
- -C, --controllers
- کنترلکنندههای NVMe و میزبانهای SCSI را فهرست میکند. این گزینه مترادفی برای گزینه --hosts است.
- -d, --device
- پس از نمایش نام (احتمالی) دستگاه SCSI، شمارههای اصلی و فرعی گره دستگاه درون قلاب نمایش داده میشوند (مانند "/dev/sda[8:0]").
- -g, --generic
- نام فایل
دستگاه
عمومی SCSI را
در خروجی
نمایش
میدهد.
توجه داشته
باشید که
اگر
گرداننده sg
یک ماژول
باشد، ممکن
است نیاز به
بارگذاری
آن باشد، در
غیر این
صورت ممکن
است '-' ظاهر
شود.
دستگاههای NVMe برخلاف SCSI، دارای دستگاههای عمومی (نویسهای) به آن معنا نیستند. در عوض، دستورات مدیریتی NVMe (مانند Admin)، دستورات NVM (دستورات نوع بلوکی مانند Read و Write) و دستورات MI (رابط مدیریت، مثلاً برای ارتباط با محفظه) همگی به کنترلکننده دربرگیرنده ارسال میشوند که نام دستگاه آن هنگام استفاده از گزینه --hosts نمایش داده میشود.
برای خلوتتر کردن خروجی در حالت تکخطی به ازای هر دستگاه، ترکیب گزینه --brief با این گزینه میتواند مفید باشد. - -h, --help
- نمایش پیام راهنمای نحوه استفاده و خروج.
- -H, --hosts
- فهرست کردن میزبانهای SCSI و کنترلکنندههای NVMe متصل به سیستم در حال حاضر. اگر این گزینه داده نشود (و گزینه --controllers نیز داده نشود)، آنگاه دستگاههای SCSI (واحدهای منطقی یا LUها) و به دنبال آنها دستگاههای NVMe (فضاهای نام) فهرست میشوند.
- -k, --kname
- استفاده از الگوریتم پیشفرض لینوکس برای نامگذاری دستگاهها (برای نمونه، شماره اصلی بلوکی ۸ و شماره فرعی ۰ به صورت "/dev/sda") به جای «تطابق بر اساس شمارههای اصلی و فرعی» در دایرکتوری "/dev" طبق آنچه در بالا شرح داده شد.
- -L, --list
- نمایش اطلاعات اضافی در قالب جفتهای <نام_صفت>=<مقدار>، یک جفت در هر خط که پیش از آن دو فاصله قرار دارد. این گزینه همان اثر '-lll' را دارد.
- -l, --long
- نمایش اطلاعات اضافی برای هر دستگاه (میزبان) SCSI. برای نمایش خروجی بیشتر میتوان آن را چندین بار استفاده کرد که در این صورت شکل کوتاه گزینه مناسبتر است (مانند '-lll'). هنگامی که سه بار استفاده شود (یعنی '-lll')، صفتهای دستگاه (میزبان) SCSI را خطبهخط، با پیشوند دو فاصله و در قالب "<attribute_name>=<value>" نمایش میدهد.
- -U, --long-unit
- نمایش نام
کامل واحد
منطقی، در
صورت وجود.
این مقدار
جایگزین
رشتههای
معمول
سازنده،
محصول و
بازبینی
میشود که
در حالت تک
واحد منطقی
در هر خط
ارائه
میشوند.
اگر نام
واحد منطقی
یافت نشود،
"none" چاپ
میشود. اگر
نام واحد
منطقی
طولانی
باشد (مانند
یک UUID)،
فیلدهای
بعدی در
صورت نیاز
به سمت راست
رانده
میشوند.
این گزینه
از نظر
عملکردی
معادل
گزینه '-uuu' است.
اگر این گزینه دو بار استفاده شود (مانند '-UU')، قالبهای شناسههای EUI، NAA، UUID و شناسه سازنده T10 به ترتیب دارای پیشوندهای "eui."، "naa."، "uuid." و "t10." خواهند بود. توجه داشته باشید که قالب نام SCSI مورد استفاده در iSCSI باید از قبل پیشوند 'iqn.' داشته باشد. استفاده از گزینه '--unit' به میزان ۴ بار یا بیشتر (مانند '-uuuu') همانند '-UU' عمل خواهد کرد.
شکل --long_unit نیز برای فراخوانی این گزینه قابل قبول است. - -x, --lunhex
- هنگامی که
این گزینه
یکبار
استفاده
شود، LUN در
چندتایی (در
ابتدای هر
خط دستگاه)
در قالب "T10"
نمایش داده
میشود که
حداکثر ۱۶
رقم
هگزادسیمال
است. برای
تمایز LUN از
مقدار
دهدهی که در
غیاب این
گزینه
نمایش
مییابد،
پیشوند "0x"
به آن
افزوده
میشود.
همچنین
LUNهای
سلسلهمراتبی
با کاراکتر
"_" برای
جداسازی
سطوح نمایش
داده
میشوند.
برای
نمونه، LUN دو
سطحی 0x0355006600000000 به
صورت 0x0355_0066
ظاهر خواهد
شد. اگر این
گزینه دو
بار داده
شود (برای
نمونه با
شکل کوتاه:
'-xx')، تمام ۱۶
رقم
هگزادسیمال
برای هر LUN
همراه با
پیشوند "0x"
نمایش داده
میشود.
برای NVMe، شناسه فضای نام (nsid) در موقعیت "L" نشان داده میشود. مقدار nsid یک کمیت ۳۲ بیتی بدون علامت است که مقادیر 0x0 و 0xffffffff برای آن رزرو شدهاند. بدون این گزینه، nsid در مبنای دهدهی نمایش مییابد. هنگامی که این گزینه یکبار استفاده شود، nsid در مبنای هگزادسیمال با پیشوند 0x و حداکثر ۳ صفر ابتدایی نمایش داده میشود. هنگامی که این گزینه دو بار استفاده شود، nsid در مبنای هگزادسیمال با حداکثر ۷ صفر ابتدایی نمایش داده میشود. - -N, --no-nvme
- این گزینه
دستگاهها
و
کنترلکنندههای
NVMe را از
خروجی حذف
میکند.
ممکن است
این گزینه
برای
جلوگیری از
تداخل
خروجی
دستگاههای
NVMe با
خروجیهای
دارای
قالببندی
خاص مانند
آنچه با
گزینه --classic
تولید
میشود،
مورد نیاز
باشد.
برای نمایش صرف دستگاههای NVMe، از 'lsscsi N' و برای نمایش صرف کنترلکنندههای NVMe، از 'lsscsi -H N' استفاده کنید. - -D, --pdt
- این گزینه نوع دستگاه جانبی SCSI (یا PDT) را به صورت هگزادسیمال با پیشوند "0x" نمایش میدهد. برای فضاهای نام NVMe مقدار "0x0" نمایش داده میشود که متناظر با یک دیسک («دستگاه دسترسی مستقیم» یا SSD) است. در خروجی تکخطی، این PDT هگزادسیمال جایگزین اختصار نوع دستگاه میشود (برای نمونه "0x0 " جایگزین "disk " میشود) و پس از چندتایی ظاهر میگردد.
- -p, --protection
- نمایش انواع حفاظت مقصد (DIF) و آغازگر (DIX).
- -P, --protmode
- نمایش حالت اطلاعات حفاظت مؤثر برای هر دستگاه دیسک.
- -i, --scsi_id
- شناسه
منطبق
مشتقشده
از udev موجود
در /dev/disk/by-id/scsi* را
خروجی
میدهد. این
گزینه تنها
برای
دستگاههای
دیسک (و
شبیه دیسک)
است. اگر
تطابقی
یافت نشود،
الگوهای
"dm-uuid-mpath*" و "usb*" در
همان
دایرکتوری
جستجو
میشوند.
اگر همچنان
تطابقی
پیدا نشود،
دایرکتوری
/sys/class/block/<disk>/holders
جستجو
میشود.
شناسه
منطبق پس از
نام دستگاه
(برای نمونه
/dev/sdc) چاپ
میشود و
اگر تطابقی
پیدا نشود،
"-" نمایش
مییابد.
توجه داشته
باشید که
تنها
دستگاههای
دیسک (و
شبهدیسک)
با این
گزینه
تطبیق داده
میشوند؛
بنابراین،
به عنوان
نمونه، یک
محفظه SCSI
شناسهای
برابر با '-'
خواهد داشت.
پیش از بازنگری ۱۶۴، نخستین تطابق در /dev/disk/by-id/scsi* چاپ میشد. در آن زمان تغییری ایجاد شد تا شناسهها به ترتیبی مشخص بررسی شوند، زیرا برخی از آنها نسبت به بقیه «قویتر» در نظر گرفته میشوند. بخش «ترتیب شناسههای SCSI (ORDER OF SCSI IDENTIFIERS)» در زیر را ببینید. - -s, --size
- چاپ ظرفیت
دیسک در
قالبی
خوانا برای
انسان. اگر
یکبار
مشخص شود،
واحدهای
استاندارد
SI در مبنای
۱۰ به عنوان
پیشوند
برای 'B' که
بایت (یا
اوکتت) است
استفاده
میشوند.
برای نمونه
MB، GB و TB به
ترتیب
نمایانگر
۱۰ به توان
۶، ۱۰ به
توان ۹ و ۱۰
به توان ۱۲
بایت هستند.
اگر دو بار
داده شود،
پیشوندهای
استاندارد
IEC 80000-3 برای 'B' به
کار
میروند؛
برای نمونه
MiB، GiB و TiB به
ترتیب
نشاندهنده
۲ به توان
۲۰، ۲ به
توان ۳۰ و ۲
به توان ۴۰
بایت هستند.
خروجی برای
جا شدن در
یک خط به ۳
رقم
بااهمیت یا
کمتر گرد
میشود.
همچنین
اندازه
دستگاههای
RBC،
رسانههای
CD/DVD و
دیسکهای ZBC
مدیریتشده
توسط
میزبان (host managed)
را خروجی
میدهد. در
دیسکهای ZBC
آگاه از
میزبان (host aware)
مقدار «نوع
دستگاه
جانبی» روی
۰ تنظیم شده
است (همانند
دیسکهای
معمولی)،
بنابراین
اندازه
آنها نیز
چاپ میشود.
اگر سه بار داده شود (شکل کوتاه آن راحتتر است: '-sss')، ظرفیت دیسک به صورت تعداد بلوکهای منطقی نمایش داده میشود. این یک رقم دقیق دهدهی است که توسط دستگاه ذخیرهسازی در هنگام شناسایی (discovery) گزارش شده است. زمان شناسایی معمولاً بلافاصله پس از راهاندازی سیستم، یا در صورت جداشدنی بودن دستگاه در زمان آخرین اتصال آن است.
برای خلوتتر کردن خروجی در حالت تکخطی به ازای هر دستگاه، ترکیب گزینه --brief با این گزینه میتواند مفید باشد. - -y, --sysfsroot=PATH
- فرض میکند که sysfs به جای مسیر پیشفرض '/sys' در PATH سوار شده است. اگر این گزینه داده شود، PATH باید یک مسیر مطلق باشد (یعنی با '/' شروع شود).
- -S, --sz-lbs
- چاپ ظرفیت
دیسک به
صورت تعداد
بلوکهای
منطقی (که
مشابه '-sss' است).
هنگامی که
دو بار
استفاده
شود، یک
ویرگول به
همراه
اندازه
بلوک منطقی
به بایت
افزوده
میشود که
عددی مانند
۵۱۲ یا ۴۰۹۶
خواهد بود.
اگر اندازه بلوک منطقی یافت نشود (برای نمونه به این دلیل که نسخه لینوکس قدیمیتر از دایرکتوری /sys/block/<dev_name>/queue است)، بدون در نظر گرفتن اندازه واقعی بلوک منطقی دستگاه، تعداد بلوکهای ۵۱۲ بایتی به همراه یک ویرگول و سپس '512' خروجی داده میشود. این رفتار ویژه صرفنظر از اینکه این گزینه یک یا چند بار داده شده باشد، رخ میدهد.
برای خلوتتر کردن خروجی در حالت تکخطی به ازای هر دستگاه، ترکیب گزینه --brief با این گزینه میتواند کمککننده باشد. - -t, --transport
- نمایش اطلاعات لایه انتقال (transport). این اطلاعات مربوط به مقصد (target) یا در صورت داده شدن --hosts مربوط به آغازگر (initiator) خواهد بود. هنگامی که بدون گزینه --list استفاده شود، یک نام یا شناسه (یا هر دو) در یک خط خروجی داده میشود که معمولاً پیشوند آن نوع انتقال است. برای دستگاهها، این اطلاعات جایگزین رشتههای معمول سازنده، محصول و بازبینی میشود. هنگامی که گزینه --list نیز داده شود، علاوه بر این چند خط از جفتهای attribute_name=value چاپ میشود که هر یک به اندازه دو فاصله تورفتگی دارند. بخش لایههای انتقال در زیر را ببینید.
- -u, --unit
- نمایش نام
واحد
منطقی، در
صورت در
دسترس بودن.
اگر این
گزینه یک یا
دو بار داده
شود، فیلد
۳۰
کاراکتری
که معمولاً
رشتههای
سازنده،
محصول و
بازبینی در
آن قرار
میگیرند
به ۳۲
کاراکتر
گسترش
یافته و نام
واحد منطقی
جایگزین آن
میشود. اگر
نام واحد
منطقی یافت
نشود، "none"
چاپ میشود.
نخستین
شناسه
یافتشده
از میان
رشتههای
نام NAA، EUI-64 یا SCSI
چاپ
میشود،
مگر اینکه
یک رشته نام
SCSI پیدا شود و
درگاه مقصد
مرتبط
نشاندهنده
پروتکل iSCSI
باشد که در
این حالت
رشته نام SCSI
ترجیح داده
میشود. در
نهایت اگر
هیچ تطابقی
با موارد
بالا وجود
نداشته
باشد و
توصیفکننده
شناسه
سازنده T10
پیدا شود،
از آن
استفاده
میشود.
اگر نام در فیلد ۳۲ کاراکتری جا نشود، از سمت راست کوتاه (truncate) شده و کاراکتر '_' در انتهای آن قرار میگیرد تا کوتاه شدن را به خواننده هشدار دهد. عرض ۳۲ کاراکتر از آن جهت انتخاب شده که برای نگهداری شناسههای ۱۶ بایتی NAA یا EUI-64 به اندازه کافی بزرگ است. با این حال، رشتههای نام SCSI که توسط iSCSI استفاده میشوند میتوانند طولانیتر از آن باشند.
اگر این گزینه دو بار استفاده شود، این فیلد نیز به عرض ۳۲ کاراکتر خواهد بود. اگر نام واحد منطقی جا نشود، از سمت چپ کوتاه شده و کاراکتر '_' در ابتدای آن قرار میگیرد تا کوتاه شدن را به خواننده هشدار دهد.
اگر این گزینه سه بار استفاده شود، کل نام واحد منطقی به همراه چندین فاصله در ادامه آن خروجی داده میشود.
برای کارکرد این گزینه، به هسته لینوکس ۳.۱۵ یا بالاتر نیاز است. این گزینه به فایل vpd_pg83 در sysfs برای دستگاه مورد نظر دسترسی پیدا میکند. تجهیزات قدیمی SCSI و ATA (SATA) ممکن است این اطلاعات را ارائه ندهند. اگر توسط ATA (SATA) ارائه شود، همان WWN خواهد بود. - -v, --verbose
- نام دایرکتوریهایی را که اطلاعات در آنها پیدا شده نمایش میدهد. برای دریافت خروجی بیشتر میتوان آن را چند بار استفاده کرد.
- -V, --version
- اطلاعات نسخه را نمایش داده و خارج میشود. اگر یکبار استفاده شود خروجی را در stderr چاپ میکند؛ اگر دو بار استفاده شود در stdout چاپ کرده و تاریخ را به قالب عددی yyyymmdd کوتاه میکند. اولین شماره در رشته نسخه، شماره انتشار است.
- -w, --wwn
- به جای سازنده، مدل و نسخه بازبینی (یا به جای اطلاعات لایه انتقال)، مقدار WWN را برای دیسکها نمایش میدهد. شناسه نام گسترده جهانی (WWN یا World Wide Name) معمولاً ۶۴ بیت (۱۶ رقم هگزادسیمال) طول دارد، اما میتواند تا ۱۲۸ بیت نیز باشد. برای نشان دادن هگزادسیمال بودن WWN، پیشوند "0x" به آن اضافه میشود. در اصطلاحات تخصصی SCSI از WWN دستگاههای ATA/SATA به عنوان نام LU یاد میشود؛ از این رو گزینههای --unit و --long-unit کموبیش جایگزین این گزینه شدهاند.
لایههای انتقال (TRANSPORTS)
این ابزار دستگاههای SCSI را که در مدل معماری SCSI (مرجع: SAM-5 در https://www.t10.org) به عنوان واحدهای منطقی (LU) شناخته میشوند، یا هنگام مشخص شدن گزینه --hosts به عنوان میزبانها فهرست میکند. در SAM-5 به میزبان آغازگر (initiator) گفته میشود. یک دستور SCSI از طریق یک آغازگر و از روی یک لایه انتقال به سمت یک مقصد (target) و سپس به سمت یک واحد منطقی ارسال میشود. یک دستگاه مقصد ممکن است شامل چندین واحد منطقی باشد. یک دستگاه مقصد دارای یک یا چند درگاه است که میتوان آنها را به عنوان نقاط پایانی انتقال در نظر گرفت. هر دیسک FC و SAS یک مقصد منفرد است که دارای دو درگاه بوده و شامل یک واحد منطقی است. اگر هر دو درگاه مقصد در یک دیسک FC یا SAS متصل و برای دستگاه قابل مشاهده باشند، lsscsi دو ورودی را نشان خواهد داد. آغازگرها (یعنی میزبانها) نیز یک یا چند درگاه دارند و برخی کارتهای HBA در لینوکس به ازای هر درگاه آغازگر یک ورودی میزبان دارند، در حالی که برخی دیگر به ازای هر دستگاه آغازگر یک ورودی میزبان دارند.
هنگامی که گزینه --transport برای دستگاهها مشخص شود (یعنی --hosts داده نشود)، بیشتر اطلاعات تولیدشده توسط lsscsi با مقصد، یا دقیقتر بگوییم با درگاه مقصد (که دستورات SCSI برای دسترسی به یک واحد منطقی از آن عبور میکنند) مرتبط است.
بهطور معمول این ابزار یک خط خروجی به ازای هر «دستگاه» یا میزبان ارائه میدهد. با افزودن گزینه --list میتوان اطلاعات بسیار بیشتری به دست آورد. هنگامی که همراه با گزینه --transport استفاده شود، پس از خط خلاصه، چندین خط از اطلاعات اختصاصی لایه انتقال در قالب "<attribute_name>=<value>" چاپ میشود که هر یک دارای دو فاصله تورفتگی هستند. در صورت وجود دستگاهها یا میزبانهای زیاد، استفاده از آرگومان پالایش حجم خروجی را کاهش میدهد.
لایههای انتقال که در حال حاضر شناسایی میشوند عبارتند از: IEEE 1394، ATA، FC، iSCSI، SAS، SATA، SPI، SRP و USB.
برای IEEE 1394 (معروف به Firewire و در کاربردهای ذخیرهسازی معروف به "SBP")، در صورتی که --transport مشخص شود و گزینه --hosts داده نشده باشد، نام درگاه مقصد مبتنی بر EUI-64 خروجی داده میشود. هنگامی که گزینه --hosts داده شود، نام درگاه آغازگر مبتنی بر EUI-64 خروجی داده میشود. خروجی در خط خلاصه اختصاصی برای انتقال IEEE 1394 با پیشوند "sbp:" مشخص میشود.
برای تشخیص دستگاههای ATA و SATA، یک بررسی اولیه و ساده روی نام گرداننده انجام میشود (پس از اتمام بررسی سایر لایههای انتقال). بر اساس نام گرداننده، نوع انتقال ATA یا SATA انتخاب میشود. خروجی در خط خلاصه یا "ata:" یا "sata:" خواهد بود. جستجویی برای فایل vpd_pg83 مرتبط در sysfs انجام میشود که در صورت یافت شدن، ممکن است حاوی WWN دستگاه باشد و در صورت وجود نمایش مییابد. شناسه WWN در هستههای لینوکس پیش از نسخه ۳.۱۵ و با دستگاههای قدیمی PATA و SATA ظاهر نخواهد شد. اکثر دستگاهها و میزبانهایی که با "ata:" علامتگذاری شدهاند از انتقال موازی ATA (یا PATA) استفاده میکنند. برای دستگاههای SATA که از طریق گسترشدهنده SAS متصل شدهاند، به بند مربوط به SAS در زیر مراجعه کنید.
برای کانال فیبر (FC)، هنگامی که --transport داده شود، نام درگاه و شناسه درگاه خروجی داده میشوند. در صورت نبود گزینه --hosts، این شناسهها مربوط به درگاه مقصد مرتبط با دستگاه (واحد منطقی) فهرستشده خواهند بود. هنگامی که گزینه --hosts داده شود، شناسهها مربوط به درگاه آغازگر مورد استفاده توسط میزبان هستند. خروجی خط خلاصه اختصاصی برای انتقال FC با پیشوند "fc:" همراه است. اگر FCoE (کانال فیبر روی اترنت) شناسایی شود، پیشوند به "fcoe:" تغییر مییابد.
برای iSCSI، هنگامی که --transport در نبود گزینه --hosts داده شود، نام درگاه مقصد نمایش مییابد. این نام از نام iSCSI و برچسب گروه پرتال مقصد تشکیل شده است. از آنجا که نام iSCSI با "iqn" شروع میشود، از هیچ پیشوند دیگری استفاده نمیشود. هنگامی که گزینه --hosts داده شود، تنها "iscsi:" در خط خلاصه چاپ میشود.
برای SCSI متصل سریال (SAS)، آدرس SAS درگاه مقصد (یا درگاه آغازگر در صورت داده شدن گزینه --hosts) خروجی داده میشود. این یک آدرس naa-5 خواهد بود. برای کارتهای HBA ساس و مقصدهای SAS (مانند دیسکهای SAS و درایوهای نوار مغناطیسی)، آدرس SAS در سطح جهانی منحصربهفرد خواهد بود. برای دیسکهای SATA متصل به گسترشدهنده SAS، گسترشدهنده آدرس SAS را با افزودن یک مقدار غیر صفر به آدرس SAS خود (یعنی گسترشدهنده) فراهم میکند (برای نمونه expander_sas_address + phy_id + 1). به نظر میرسد دیسکهای SATA که مستقیماً به کارتهای HBA متصل هستند، آدرس SAS نامشخصی دارند. خروجی در خط خلاصه اختصاصی برای انتقال SAS با پیشوند "sas:" نمایش داده میشود.
برای دستگاههای SATA، بند بالا در مورد دستگاههای ATA را ببینید. همانطور که در بند پیشین ذکر شد، دستگاههای SATA متصل به گسترشدهندههای SAS به جای WWN دستگاه SATA، یک آدرس ساختگی لایه انتقال SAS (تولیدشده توسط گسترشدهنده) را نمایش میدهند.
برای رابط موازی SCSI (یا SPI)، در صورت مشخص شدن --transport و نبود گزینه --hosts، شناسه درگاه مقصد (معمولاً عددی بین ۰ تا ۱۵ شامل هر دو) خروجی داده میشود. هنگامی که گزینه --hosts داده شود، تنها "spi:" در خط خلاصه نمایش مییابد.
برای لایه
انتقال PCIe
(معروف به PCI
Express)، دو نوع
ذخیرهسازی
ممکن وجود
دارد: NVMe و SOP/PQI (یا
SCSI روی PCIe). در
حال حاضر
نمونههای
بسیار کمی
از نوع دوم
وجود دارد،
بنابراین
این ابزار
بر NVMe تمرکز
دارد.
فناوری NVMe از
مجموعه
دستورات
اختصاصی
خود
استفاده
میکند و نه
SCSI، اما
اشتراکات
فراوانی با
آن دارد. به
جای ابداع
دوباره
تمام
مواردی که SCSI
طی نزدیک به
۴۰ سال
گردآوری
کرده است، NVMe
آغاز به
استفاده از
برخی
بخشهای SCSI
کرده است. یک
نمونه
اخیر،
استاندارد
SES-3 برای
مدیریت
محفظه (enclosure)
است که توسط
NVMe پذیرفته
شده است. در
SCSI، یک
دستگاه SES یک
واحد منطقی
با نوع
دستگاه
جانبی (PDT)
برابر با 0xd
(برای محفظه)
است،
بنابراین
هنگامی که
ابزار lsscsi
بدون هیچ
گزینهای
فراخوانی
شود ظاهر
خواهد شد. در
NVMe به نظر
میرسد که
یک محفظه به
صورت متصل
به رابط
مدیریت (MI) یک
کنترلکننده
NVMe ظاهر
میشود. این
بدان
معناست که
در هنگام
فراخوانی
"lsscsi --hosts" باید
ظاهر شود.
مشخص نیست
که آیا چنین
کنترلکننده
NVMe میتواند
فضاهای نام
ذخیرهسازی
مرتبط با
خود داشته
باشد یا خیر.
سپس
میتوان
نام دستگاه
کنترلکننده
NVMe (مانند /dev/nvme1) را
به ابزار sg_ses
(موجود در
بسته sg3_utils) داد.
هنگامی که
گزینه --transport
داده شود،
پس از "pcie"،
شناسه
سازنده
زیرسیستم (subsystem
vendor id) و شناسه
دستگاه
مربوط به
کنترلکننده
NVMe که با
دونقطه از
یکدیگر جدا
شدهاند
نمایش داده
میشوند
(برای نمونه
"pcie 0x8086:0x390a").
برای پروتکل SCSI RDMA (یا SRP)، شناسه GUID درگاه IB (InfiniBand) ارائه میشود. به عنوان نمونه، قالبی شبیه به این دارد: 0002:c903:00fa:abcd .
هنگامی که یک انتقال USB شناسایی شود، خط خلاصه شامل "usb:" و به دنبال آن نام دستگاه USB خواهد بود. نام دستگاه USB قالبی به صورت "<b>-<p1>[.<p2>[.<p3>]]:<c>.<i>" دارد که در آن <b> شماره گذرگاه USB و <p1> درگاه روی میزبان است. در صورت وجود، <p2> درگاهی روی هاب متصل به میزبان است. در صورت نیاز، <p3> درگاه هاب USB نزدیکتر به دستگاه ذخیرهسازی USB است. <c> به شماره پیکربندی اشاره دارد در حالی که <i> شماره رابط است. به ازای هر مقصد USB (SCSI)، یک میزبان SCSI مجزا وجود دارد. یک مقصد USB SCSI ممکن است شامل چندین واحد منطقی باشد. بنابراین رشته یکسان "usb: <device_name>" برای یک میزبان USB SCSI و تمام واحدهای منطقی متعلق به مقصد USB SCSI مرتبط با آن میزبان ظاهر میشود.
واحدهای منطقی (LUNS)
به دلایل تاریخی و همانند آنچه در چندین سیستمعامل دیگر مبتنی بر یونیکس به کار رفته، لینوکس از یک چندتایی شامل اعداد صحیح برای توصیف (مسیرِ) یک دستگاه SCSI (که به عنوان واحد منطقی یا LU نیز شناخته میشود) استفاده میکند. عنصر پایانی این چندتایی اصطلاحاً شماره واحد منطقی (LUN) نامیده میشود. در ابتدا در SCSI، شماره LUN یک عدد صحیح با طول ۳ بیت، سپس ۸ بیت و سپس ۱۶ بیت بود. امروزه LUNهای SCSI (بخش ۴.۷ از SAM-5) به اندازه ۶۴ بیت هستند، اما استانداردهای SCSI اکنون یک LUN را آرایهای از ۸ بایت در نظر میگیرند.
تا سال ۲۰۱۳، لینوکس LUNهای SCSI را با گرفتن ۴ بایت اول LUN و نادیده گرفتن ۴ بایت پایانی به یک عدد صحیح ۳۲ بیتی نگاشت میکرد. لینوکس دو بایت اول LUN را به عنوان یک واحد (یک کلمه یا word) در نظر میگرفت که به ۱۶ بیت کمارزشتر در عدد صحیح LUN لینوکس تبدیل میشد. دو بایت بعدی LUN به ۱۶ بیت پرارزشتر در عدد صحیح LUN لینوکس تبدیل میشد. دلیل این کار، حفظ LUNهای متداول به صورت اعداد صحیح کوچک LUN در لینوکس بود. متداولترین LUN (با اختلاف زیاد) در نشانهگذاری هگزادسیمال SCSI مقدار 00 00 00 00 00 00 00 00 است که به عدد صحیح 0 در LUN لینوکس تبدیل میشود. دومین LUN متداول 00 01 00 00 00 00 00 00 است که به عدد صحیح 1 در LUN لینوکس تبدیل میشود.
در سال ۲۰۱۳ پیشنهاد شد که LUNهای لینوکس با گسترش نگاشت ذکرشده در بالا به یک عدد صحیح ۶۴ بیتی افزایش یابند. در این حالت تمام اطلاعاتی که امکان نمایش آن در یک LUN در SCSI وجود دارد، به یک عدد صحیح (۶۴ بیتی) LUN لینوکس نگاشت میشود و این نگاشت بدون از دست رفتن اطلاعات قابل بازگشت است.
این نسخه از ابزار از هر دو عدد صحیح ۳۲ و ۶۴ بیتی LUN در لینوکس پشتیبانی میکند. به طور پیشفرض، LUN نمایشدادهشده در انتهای چندتایی ابتدای هر خط، یک LUN لینوکس به عنوان عدد صحیح دهدهی است. هنگامی که گزینه --lunhex داده شود، LUN در قالب LUN پروتکل SCSI به همراه ۸ بایت متصلبههم، در مبنای هگزادسیمال و با پیشوند '0x' خروجی داده میشود. این LUN بر اساس توضیحات SAM-5 رمزگشایی میشود و صفرهای انتهایی (یعنی ارقام سمت راست) نمایش داده نمیشوند. بنابراین LUN شماره 0 (یعنی 00 00 00 00 00 00 00 00) به صورت 0x0000 و LUN شماره 65 (یعنی 00 41 00 00 00 00 00 00) به صورت 0x0041 نمایش داده میشود. اگر گزینه --lunhex دو بار داده شود، تمام ۶۴ بیت (یعنی ۱۶ رقم هگزادسیمال) نشان داده میشوند.
اگر گزینه --lunhex در خط فرمان مشخص نشده باشد، متغیر محیطی LSSCSI_LUNHEX_OPT بررسی میشود. اگر LSSCSI_LUNHEX_OPT موجود باشد، مقدار مرتبط با آن برابر با تعداد دفعاتی میشود که گزینه --lunhex در داخل برنامه تنظیم میگردد. بنابراین، برای نمونه، دستور 'LSSCSI_LUNHEX_OPT=2 lsscsi' و 'lsscsi -xx' معادل یکدیگر هستند.
ترتیب شناسههای SCSI (ORDER OF SCSI IDENTIFIERS)
این بخش فقط برای گزینه --scsi_id و تنها برای دستگاههای شبیه دیسک (مثلاً نه نوارها و نه محفظهها) اعمال میشود. به طور بالقوه چندین شناسه SCSI وجود دارد و از بازنگری ۱۶۴، آنها به ترتیب زیر بررسی میشوند و تنها اولین شناسه یافتشده در خروجی چاپ میشود.
ترتیب
اولویت
شناسههای
SCSI به این
صورت است:
3 : مبتنی بر NAA
(مرجع نشانی
شبکه یا Network Address Authority)
2 : مبتنی بر EUI-64
8 : رشته نام SCSI
(مانند iSCSI:
iqn.1998-01.com.zzware.iscsi:name1)
S : شماره
سریال از
صفحه 0x80
مربوط به SCSI VPD
1 : شناسه
سازنده T10
0 : اختصاصی
سازنده (Vendor Specific)
شمارههایی
که در
ابتدای هر
ورودی
آمدهاند،
«انواع
نشانگر» (Designator Types)
در SCSI هستند
که در تعریف
صفحه شناسه
دستگاه VPD
(شماره 0x83) در
اسناد SPC-3، SPC-4 و SPC-5
مشخص
شدهاند.
مسلماً 'S' یک
عدد نیست و
به صفحه VPD
متفاوتی
اشاره دارد:
صفحه شماره
سریال VPD
(شماره 0x80).
گزینه عمومیتری با نام --wwn وجود دارد که باید برای تقریباً تمام دستگاهها اعمال شود. اصطلاح "WWN" (نام گسترده جهانی یا world-wide name) از استانداردهای ATA و NVMe گرفته شده و متناظر با «نام واحد منطقی (LU)» در SCSI است. نام LU در SCSI بسته به نوع لایه انتقال تغییر میکند. در پروتکل SAS، نام LU برابر با شناسه NAA آن LU است.
علاوه بر این، گزینههای --unit و --long-unit وجود دارند که ممکن است در شناسایی یکتای دستگاههای ذخیرهسازی مفید باشند.
مثالها (EXAMPLES)
اطلاعات بیشتر درباره این ابزار از جمله مثالها در نشانی زیر نیز در دسترس است: https://sg.danny.cz/scsi/lsscsi.html .
نکات (NOTES)
اطلاعات این دستور از سامانه پرونده sysfs استخراج میشود که فرض بر این است در /sys سوار شده باشد، مگر آنکه توسط کاربر مسیر دیگری مشخص شود. دستگاههای (شبه) SCSI که توسط لایه میانی SCSI شناسایی شدهاند، حتی در صورتی که گردانندههای سطح بالای لازم (مانند sd، sr، st، osst یا ch) بارگذاری نشده باشند نیز فهرست خواهند شد. اگر گرداننده سطح بالای مناسب بارگذاری نشده باشد، نام فایل دستگاه به جای چیزی مانند '/dev/st0'، به صورت '-' نمایش خواهد یافت. توجه داشته باشید که برخی دستگاهها (مانند اسکنرها و تعویضکنندههای رسانه) گرداننده سطح بالای اولیه ندارند و فقط از طریق نام دستگاه عمومی SCSI (دستگاه sg) قابل دسترسی هستند.
دستگاههای عمومی SCSI در لینوکس از طریق گرداننده bsg نیز قابل دسترسی هستند. به طور پیشفرض، نام گرههای دستگاه در گرداننده bsg به شکل '/dev/bsg/H:C:T:L' است. بنابراین، برای نمونه، دستگاه SCSI نمایشدادهشده توسط این ابزار در خطی که با چندتایی '6:0:1:2' شروع میشود، از طریق گرداننده bsg با نام گره دستگاه '/dev/bsg/6:0:1:2' قابل دسترسی است.
برای نمایش صحیح دستگاههای SCSI در هسته لینوکس ۲.۶.۲۶ (و احتمالاً بالاتر) در حالتی که گزینه CONFIG_SYSFS_DEPRECATED_V2 هسته تعریف نشده باشد، به نسخه 0.21 یا بالاتر برنامه lsscsi نیاز است.
نویسنده (AUTHOR)
نوشتهشده توسط Doug Gilbert
گزارش باگها (REPORTING BUGS)
گزارش باگها به <dgilbert at interlog dot com>.
حق نشر (COPYRIGHT)
حق نشر © 2003-2021
Douglas Gilbert
این
نرمافزار
تحت مجوز
عمومی
همگانی گنو
(GPL) نسخه ۲
توزیع شده
است. هیچ
ضمانتی
وجود
ندارد؛ حتی
برای
قابلیت
فروش یا
تناسب برای
یک هدف خاص.
همچنین ببینید (SEE ALSO)
lspci lsusb lsblk
| May 2021 | lsscsi-0.32 |