• 正文
    • 一、什么是scsi?
    • 二、常見硬盤接口
    • 三、 lsscsi命令
    • 四、命令舉例
    • 五、其他
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

Linux命令lsscsi詳解

02/22 14:38
420
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

想要弄明白lsscsi命令,首先我們必須搞清楚什么是SCSI,以及常見的硬盤接口,常用的硬盤參數(shù)。

一、什么是scsi?

SCSI(Small Computer System Interface)是一套完整的數(shù)據(jù)傳輸協(xié)議,其主要功能是在主機(jī)和存儲(chǔ)設(shè)備之間傳送命令、狀態(tài)和塊數(shù)據(jù)。在各類存儲(chǔ)技術(shù)中,SCSI技術(shù)可謂是最重要的脊梁。

SCSI協(xié)議位于操作系統(tǒng)和外部資源之間,它具有一系列的功能組件,操作系統(tǒng)對(duì)外部設(shè)備(如磁盤、磁帶、光盤、打印機(jī)等)的I/O操作均可以通過SCSI協(xié)議來(lái)實(shí)現(xiàn),一般情況下,SCSI協(xié)議都嵌入到設(shè)備驅(qū)動(dòng)器或者主機(jī)適配器的板載邏輯中。

二、常見硬盤接口

1. IDE接口的硬盤

其英文名稱:Integrated Drive Electronics,常見的2.5英寸IDE硬盤接口它的本意是指把“硬盤控制器”與“盤體”集成在一起的硬盤驅(qū)動(dòng)器。

IDE代表著硬盤的一種類型,但在實(shí)際的應(yīng)用中,人們也習(xí)慣用IDE來(lái)稱呼最早出現(xiàn)IDE類型硬盤ATA-1,這種類型的接口隨著接口技術(shù)的發(fā)展已經(jīng)被淘汰了,而其后發(fā)展分支出更多類型的硬盤接口,比如ATA、Ultra ATA、DMA、Ultra DMA等接口都屬于IDE硬盤。

其特點(diǎn)為:價(jià)格低廉,兼容性強(qiáng),性價(jià)比高,數(shù)據(jù)傳輸慢,不支持熱插拔等等。

2. SCSI接口硬盤

SCSI并不是專門為硬盤設(shè)計(jì)的接口,是一種廣泛應(yīng)用于小型機(jī)上的高速數(shù)據(jù)傳輸技術(shù)。

SCSI接口具有應(yīng)用范圍廣、多任務(wù)、帶寬大、CPU占用率低,以及熱插拔等優(yōu)點(diǎn),但較高的價(jià)格使得它很難如IDE硬盤般普及,因此SCSI硬盤主要應(yīng)用于中、高端服務(wù)器和高檔工作站中。

其特點(diǎn)為:傳輸速率高、讀寫性能好、可連接多個(gè)設(shè)備、可支持熱插拔,但是價(jià)格相對(duì)來(lái)說比較貴。

3. SATA接口類型

其英文名稱為:Serial Advanced Technology Attachment。使用SATA(Serial ATA)口的硬盤又叫串口硬盤,是未來(lái)PC機(jī)硬盤的趨勢(shì)。

Serial ATA采用串行連接方式,串行ATA總線使用嵌入式時(shí)鐘信號(hào),具備了更強(qiáng)的糾錯(cuò)能力,與以往相比其最大的區(qū)別在于能對(duì)傳輸指令(不僅僅是數(shù)據(jù))進(jìn)行檢查,如果發(fā)現(xiàn)錯(cuò)誤會(huì)自動(dòng)矯正,這在很大程度上提高了數(shù)據(jù)傳輸?shù)目煽啃浴?/p>

串行接口還具有結(jié)構(gòu)簡(jiǎn)單、支持熱插拔的優(yōu)點(diǎn)。

三、 lsscsi命令

lsscsi列出scsi/sata設(shè)備信息,比如硬盤驅(qū)動(dòng)器,光盤驅(qū)動(dòng)器。

1. lsscsi 命令安裝

-bash:?lsscsi?command?not?found
?
#Debian
apt-get?install?lsscsi
?
#Ubuntu
apt-get?install?lsscsi
?
#Alpine
apk?add?lsscsi
?
#Arch?Linux
pacman?-S?lsscsi
?
#Kali?Linux
apt-get?install?lsscsi
?
#CentOS
yum?install?lsscsi
?
#Fedora
dnf?install?lsscsi
?
#Raspbian
apt-get?install?lsscsi
?
#Docker
docker?run?cmd.cat/lsscsi?lsscsi

2. lsscsi命令英文手冊(cè)

詳細(xì)命令說明地址

https://sg.danny.cz/scsi/lsscsi.html

2. 命令格式

lsscsi 命令語(yǔ)法:

lsscsi?[選項(xiàng)]?[H:C:T:L]

lsscsi 命令選項(xiàng):

選項(xiàng) 含義
-g 顯示SCSI通用設(shè)備文件名稱
-k 顯示內(nèi)核名稱而不是設(shè)備節(jié)點(diǎn)名
-d 顯示設(shè)備節(jié)點(diǎn)的主要號(hào)碼和次要號(hào)碼
-H 列出當(dāng)前連接到系統(tǒng)的SCSI主機(jī)而不是SCSI設(shè)備
-l 顯示每一個(gè)SCSI設(shè)備(主機(jī))的附加信息
-c 相對(duì)于執(zhí)行 cat /proc/scsi/scsi 命令的輸出
-p 顯示額外的數(shù)據(jù)完整性(保護(hù))的信息
-t 顯示傳輸信息
-L 以“屬性名=值”的方式顯示附加信息
-v 當(dāng)信息找到時(shí)輸出目錄名
-y<路徑> 假設(shè)sysfs掛載在指定路徑而不是默認(rèn)的 “/sys”
-s 顯示容量大小。
-c 用全稱顯示默認(rèn)的信息。
-d 顯示設(shè)備主,次設(shè)備號(hào)。
-g 顯示對(duì)應(yīng)的sg設(shè)備名。
-H 顯示主機(jī)控制器列表,-Hl,-Hlv。
-l 顯示相關(guān)屬性,-ll,-lll=-L。
-v 顯示設(shè)備屬性所在目錄。
-x 以16進(jìn)制顯示lun號(hào)。
-p 輸出DIF,DIX 保護(hù)類型。
-P 輸出有效的保護(hù)模式信息。
-i 顯示udev相關(guān)的屬性
-w 顯示W(wǎng)WN
-t 顯示相應(yīng)傳輸信息(ATA,FC,SBP,ISCSI,SPI,SAS,SATA,USB),-Ht,-tl.(包括sas地址)

3. 結(jié)果含義

四、命令舉例

lsscsi 列出所有 SCSI 設(shè)備:

peng@ubuntu:~$?lsscsi
[3:0:0:0]????cd/dvd??NECVMWar?VMware?SATA?CD01?1.00??/dev/sr0?
[32:0:0:0]???disk????VMware,??VMware?Virtual?S?1.0???/dev/sda?

lsscsi ?-L列出所有具有詳細(xì)屬性的 SCSI 設(shè)備:

peng@ubuntu:~$?lsscsi?-L
[3:0:0:0]????cd/dvd??NECVMWar?VMware?SATA?CD01?1.00??/dev/sr0?
??device_blocked=0
??iocounterbits=32
??iodone_cnt=0x229
??ioerr_cnt=0x4
??iorequest_cnt=0x23a
??queue_depth=1
??queue_type=none
??scsi_level=6
??state=running
??timeout=30
??type=5
[32:0:0:0]???disk????VMware,??VMware?Virtual?S?1.0???/dev/sda?
??device_blocked=0
??iocounterbits=32
??iodone_cnt=0x37370
??ioerr_cnt=0x3
??iorequest_cnt=0x37370
??queue_depth=32
??queue_type=simple
??scsi_level=3
??state=running
??timeout=180
??type=0

lsscsi -s列出所有具有人類可讀磁盤容量的 SCSI 設(shè)備:

peng@ubuntu:~$?lsscsi?-s
[3:0:0:0]????cd/dvd??NECVMWar?VMware?SATA?CD01?1.00??/dev/sr0????????-
[32:0:0:0]???disk????VMware,??VMware?Virtual?S?1.0???/dev/sda????536GB

五、其他

1. Linux下scsi相關(guān)文件節(jié)點(diǎn)

/proc/scsi/

peng@ubuntu:~$?cd?/proc/scsi/
peng@ubuntu:/proc/scsi$?ls
device_info??mptspi??scsi??sg

peng@ubuntu:/proc/scsi$?cat?scsi
Attached?devices:
Host:?scsi32?Channel:?00?Id:?00?Lun:?00
??Vendor:?VMware,??Model:?VMware?Virtual?S?Rev:?1.0?
??Type:???Direct-Access????????????????????ANSI??SCSI?revision:?02
Host:?scsi3?Channel:?00?Id:?00?Lun:?00
??Vendor:?NECVMWar?Model:?VMware?SATA?CD01?Rev:?1.00
??Type:???CD-ROM???????????????????????????ANSI??SCSI?revision:?05

/sys/class/scsi_host

peng@ubuntu:/sys/class/scsi_host$?ls
host0???host12??host16??host2???host23??host27??host30??host5??host9
host1???host13??host17??host20??host24??host28??host31??host6
host10??host14??host18??host21??host25??host29??host32??host7
host11??host15??host19??host22??host26??host3???host4???host8

/sys/class/scsi_device

peng@ubuntu:/sys/class/scsi_device$?ls
3:0:0:0??32:0:0:0

/sys/class/scsi_disk

peng@ubuntu:/sys/class/scsi_disk$?ls
32:0:0:0

/sys/class/scsi_generic

peng@ubuntu:/sys/class/scsi_generic$?ls
sg0??sg1

/sys/bus/scsi

peng@ubuntu:/sys/bus/scsi$?ls
devices??drivers??drivers_autoprobe??drivers_probe??uevent
peng@ubuntu:/sys/bus/scsi/devices$?ls
3:0:0:0???host11??host16??host20??host25??host3???host5??target3:0:0
32:0:0:0??host12??host17??host21??host26??host30??host6??target32:0:0
host0?????host13??host18??host22??host27??host31??host7
host1?????host14??host19??host23??host28??host32??host8
host10????host15??host2???host24??host29??host4???host9

其中target3:0:0

對(duì)應(yīng)

host:bus:id:lun

2. Linux 開啟 SCSI 日志調(diào)試功能

    1.編譯選項(xiàng)中需開啟 CONFIG_SCSI_LOGGING

    2.該編譯選項(xiàng)說明
drivers/scsi/Kconfig:213
config?SCSI_LOGGING
????bool?"SCSI?logging?facility"
????depends?on?SCSI
????---help---
??????This?turns?on?a?logging?facility?that?can?be?used?to?debug?a?number
??????of?SCSI?related?problems.

??????If?you?say?Y?here,?no?logging?output?will?appear?by?default,?but?you
??????can?enable?logging?by?saying?Y?to?"/proc?file?system?support"?and
??????"Sysctl?support"?below?and?executing?the?command

??????echo?<bitmask>?>?/proc/sys/dev/scsi/logging_level

??????where?<bitmask>?is?a?four?byte?value?representing?the?logging?type
??????and?logging?level?for?each?type?of?logging?selected.

??????There?are?a?number?of?logging?types?and?you?can?find?them?in?the
??????source?at?<file:drivers/scsi/scsi_logging.h>.?The?logging?levels
??????are?also?described?in?that?file?and?they?determine?the?verbosity?of
??????the?logging?for?each?logging?type.

??????If?you?say?N?here,?it?may?be?harder?to?track?down?some?types?of?SCSI
??????problems.?If?you?say?Y?here?your?kernel?will?be?somewhat?larger,?but
??????there?should?be?no?noticeable?performance?impact?as?long?as?you?have
??????logging?turned?off.
    3.logging 類型源碼文件位置(有說明)
->?driversscsiscsi_logging.h
    4.使用說明
/*
?*?Note?-?the?initial?logging?level?can?be?set?here?to?log?events?at?boot?time.
?*?After?the?system?is?up,?you?may?enable?logging?via?the?/proc?interface.
?*/
unsigned?int?scsi_logging_level;
#if?defined(CONFIG_SCSI_LOGGING)
EXPORT_SYMBOL(scsi_logging_level);
#endif

scsi_logging_level 被定義成int類型(32bit),該機(jī)制使用了30個(gè)bit,從低位到高位每3bit為一個(gè)logging level從SCSI_LOG_ERROR_SHIFT到SCSI_LOG_IOCTL_SHIFT(SCSI_LOG_XXX_SHIFT為不同level的移位數(shù)),每個(gè)level使用的bit數(shù)都是3,所以 SCSI_LOG_XXX_BITS 均為3

    5.scsi_logging_level 值可以在 boot 命令行設(shè)置也可以開啟設(shè)備后在 /proc 文件系統(tǒng)中設(shè)置:
-1???-?Enable?scsi?events?to?syslog.?????????//?開啟所有scsi?log
0????-?Disable?scsi?events?to?syslog.????????//?關(guān)閉所有scsi?log


命令:

echo?0/-1?>?/proc/sys/dev/scsi/logging_level

 

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

公眾號(hào)『一口Linux』號(hào)主彭老師,擁有15年嵌入式開發(fā)經(jīng)驗(yàn)和培訓(xùn)經(jīng)驗(yàn)。曾任職ZTE,某研究所,華清遠(yuǎn)見教學(xué)總監(jiān)。擁有多篇網(wǎng)絡(luò)協(xié)議相關(guān)專利和軟件著作。精通計(jì)算機(jī)網(wǎng)絡(luò)、Linux系統(tǒng)編程、ARM、Linux驅(qū)動(dòng)、龍芯、物聯(lián)網(wǎng)。原創(chuàng)內(nèi)容基本從實(shí)際項(xiàng)目出發(fā),保持原理+實(shí)踐風(fēng)格,適合Linux驅(qū)動(dòng)新手入門和技術(shù)進(jìn)階。