lsscsi コマンドを理解するには、まず SCSI とは何か、一般的なハードディスク インターフェイスと一般的なハードディスク パラメータを理解する必要があります。
1. SCSI とは何ですか?
SCSI (Small Computer System Interface) は完全なデータ転送プロトコルであり、主にホストとストレージ デバイス間でコマンド、ステータス、ブロック データを転送するために使用されます。さまざまなストレージ技術の中で、SCSI 技術は最も重要な柱です。
SCSI プロトコルはオペレーティング システムと外部リソースの間に位置し、一連の機能コンポーネントを備えています。外部デバイス (
ディスク、テープ、CD-ROM、プリンター など) に対するオペレーティング システムの I/O 操作は、SCSI プロトコルを通じて実装できます。通常、SCSI プロトコルはデバイス ドライバーまたはホスト アダプターのオンボード ロジックに組み込まれています。
2. 一般的なハードディスク インターフェイス
1. IDE インターフェイスを備えたハードドライブ
英語名:Integrated Drive Electronics、一般的な2.5インチIDEハードディスクインターフェースで、本来の意味は「ハードディスクコントローラ」と「ディスク本体」を一体化したハードディスクドライブを指します。
IDE はハードディスクの種類を表しますが、実際のアプリケーションでは、最初期の IDE タイプのハードディスク ATA-1 を指すことも多く、このタイプのインターフェイスはインターフェイス技術の発展に伴い廃止されました。その後、ATA、Ultra ATA、DMA、Ultra DMA、その他のインターフェイスなど、より多くのタイプのハードディスク インターフェイスに発展しましたが、これらはすべて IDE ハードディスクです。
その特徴は、低価格、強力な互換性、高いコストパフォーマンス、データ転送速度の遅さ、ホットスワップ非対応などです。
2. SCSI インターフェースのハードディスク
SCSIはハードディスク専用のインターフェースではなく、ミニコンピュータなどで広く使われている高速データ伝送技術です。
SCSI インターフェイスには、幅広いアプリケーション範囲、マルチタスク、広い帯域幅、低い CPU 使用率、ホットスワップ可能性という利点がありますが、価格が高いため、IDE ハード ドライブほど普及するのは困難です。ドライブは主に中型およびハイエンドのサーバーとハイエンドのワークステーションで使用されます。
高い転送速度、優れた読み書き性能、複数のデバイスを接続できる、ホットスワップに対応しているという特徴がありますが、価格は比較的高価です。
3. SATA インターフェースの種類
英語名は「Serial Advanced Technology Attachment」です。 SATA (シリアル ATA) ポートを使用するハード ドライブはシリアル ハード ドライブとも呼ばれ、PC ハード ドライブの将来のトレンドになります。
Serial ATA はシリアル接続方式を採用しています。Serial ATA バスはエンベデッドクロック信号を使用しており、エラー訂正能力が強化されています。従来との最大の違いは、データだけでなく命令も送信できることです。チェックと自動エラーが見つかった場合は修正するため、データ送信の信頼性が大幅に向上します。
シリアル インターフェイスには、シンプルな構造とホット スワップのサポートという利点もあります。
3. lsscsi コマンド
lsscsi は、ハード ドライブや光学ドライブなどの SCSI/SATA デバイス情報を一覧表示します。
1. lsscsi コマンドのインストール
リーリー
2. lsscsi コマンド英語マニュアル
コマンド詳細説明アドレス
リーリー
2. コマンド形式
lsscsi コマンド構文:
リーリー
lsscsi コマンド オプション:
オプション |
###意味###
|
#-g
SCSI共通デバイスファイル名の表示
|
| -k
デバイスノード名の代わりにカーネル名を表示します
|
| -d
デバイスノードのプライマリ番号とセカンダリ番号を表示します
|
| -H
SCSI デバイスではなく、現在システムに接続されている SCSI ホストを一覧表示します
|
| -l
各 SCSI デバイス (ホスト) の追加情報を表示します
|
| -c
cat /proc/scsi/scsi コマンドの実行の出力に関連する
|
| -p
追加のデータ整合性 (保護) 情報を表示します
|
| -t
送信情報の表示
|
| -L
追加情報を「属性名=値」の形式で表示します
|
| -v
情報発見時のディレクトリ名出力
|
| -y
sysfs がデフォルトの "/sys" ではなく指定されたパスにマウントされていると仮定します。
|
-s |
表示容量サイズ。
-c |
デフォルトの情報をフルネームで表示します。 |
-d |
デバイスのプライマリおよびセカンダリのデバイス番号を表示します。 |
-g |
対応する sg デバイス名を表示します。 |
-H |
ホストコントローラーリストを表示、-Hl、-Hlv。 |
-l |
関連する属性 -ll、-llll=-L を表示します。 |
-v |
デバイスのプロパティが存在するディレクトリを表示します。 |
#########-バツ###
LUN 番号を 16 進数で表示します。
|
-p |
出力 DIF、DIX 保護タイプ。
|
-P |
有効な保護モード情報を出力します。
#########-私###
udev 関連の属性を表示する |
|
-w
WWNを表示 |
|
-t
対応する伝送情報(ATA、FC、SBP、ISCSI、SPI、SAS、SATA、USB)、-Ht、-tl(sasアドレス含む)を表示 |
|
3. 结果含义
四、命令举例
lsscsi 列出所有 SCSI 设备:
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列出所有具有详细属性的 SCSI 设备:
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 设备:
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相关文件节点
/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
对应
host:bus:id:lun
ログイン後にコピー
2. Linux 开启 SCSI 日志调试功能
-
1.编译选项中需开启 CONFIG_SCSI_LOGGING
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 > /proc/sys/dev/scsi/logging_level
where 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 . 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.
ログイン後にコピー
-> drivers\scsi\scsi_logging.h
ログイン後にコピー
/*
* 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),该机制使用了30个bit,从低位到高位每3bit为一个logging level从SCSI_LOG_ERROR_SHIFT到SCSI_LOG_IOCTL_SHIFT(SCSI_LOG_XXX_SHIFT为不同level的移位数),每个level使用的bit数都是3,所以 SCSI_LOG_XXX_BITS 均为3
-
5.scsi_logging_level 值可以在 boot 命令行设置也可以开启设备后在 /proc 文件系统中设置:
-1 - Enable scsi events to syslog. // 开启所有scsi log
0 - Disable scsi events to syslog. // 关闭所有scsi log
ログイン後にコピー
命令:
echo 0/-1 > /proc/sys/dev/scsi/logging_level
ログイン後にコピー
以上がLinuxコマンドlsscsiの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。