ホームページ  >  記事  >  システムチュートリアル  >  Linuxコマンドlsscsiの詳細説明

Linuxコマンドlsscsiの詳細説明

王林
王林転載
2024-02-11 14:12:03994ブラウズ

lsscsi コマンドを理解するには、まず SCSI とは何か、一般的なハードディスク インターフェイスと一般的なハードディスク パラメータを理解する必要があります。

1. SCSI とは何ですか?

SCSI (Small Computer System Interface) は完全なデータ転送プロトコルであり、主にホストとストレージ デバイス間でコマンド、ステータス、ブロック データを転送するために使用されます。さまざまなストレージ技術の中で、SCSI 技術は最も重要な柱です。

SCSI プロトコルはオペレーティング システムと外部リソースの間に位置し、一連の機能コンポーネントを備えています。外部デバイス (

ディスク、テープ、CD-ROM、プリンター など) に対するオペレーティング システムの I/O 操作は、SCSI プロトコルを通じて実装できます。通常、SCSI プロトコルはデバイス ドライバーまたはホスト アダプターのオンボード ロジックに組み込まれています。

Linuxコマンドlsscsiの詳細説明

2. 一般的なハードディスク インターフェイス

1. IDE インターフェイスを備えたハードドライブ

英語名:Integrated Drive Electronics、一般的な2.5インチIDEハードディスクインターフェースで、本来の意味は「ハードディスクコントローラ」と「ディスク本体」を一体化したハードディスクドライブを指します。

IDE はハードディスクの種類を表しますが、実際のアプリケーションでは、最初期の IDE タイプのハードディスク ATA-1 を指すことも多く、このタイプのインターフェイスはインターフェイス技術の発展に伴い廃止されました。その後、ATA、Ultra ATA、DMA、Ultra DMA、その他のインターフェイスなど、より多くのタイプのハードディスク インターフェイスに発展しましたが、これらはすべて IDE ハードディスクです。

その特徴は、低価格、強力な互換性、高いコストパフォーマンス、データ転送速度の遅さ、ホットスワップ非対応などです。

Linuxコマンドlsscsiの詳細説明

2. SCSI インターフェースのハードディスク

SCSIはハードディスク専用のインターフェースではなく、ミニコンピュータなどで広く使われている高速データ伝送技術です。

SCSI インターフェイスには、幅広いアプリケーション範囲、マルチタスク、広い帯域幅、低い CPU 使用率、ホットスワップ可能性という利点がありますが、価格が高いため、IDE ハード ドライブほど普及するのは困難です。ドライブは主に中型およびハイエンドのサーバーとハイエンドのワークステーションで使用されます。

高い転送速度、優れた読み書き性能、複数のデバイスを接続できる、ホットスワップに対応しているという特徴がありますが、価格は比較的高価です。

Linuxコマンドlsscsiの詳細説明

3. SATA インターフェースの種類

英語名は「Serial Advanced Technology Attachment」です。 SATA (シリアル ATA) ポートを使用するハード ドライブはシリアル ハード ドライブとも呼ばれ、PC ハード ドライブの将来のトレンドになります。

Serial ATA はシリアル接続方式を採用しています。Serial ATA バスはエンベデッドクロック信号を使用しており、エラー訂正能力が強化されています。従来との最大の違いは、データだけでなく命令も送信できることです。チェックと自動エラーが見つかった場合は修正するため、データ送信の信頼性が大幅に向上します。

シリアル インターフェイスには、シンプルな構造とホット スワップのサポートという利点もあります。

Linuxコマンドlsscsiの詳細説明

3. lsscsi コマンド

lsscsi は、ハード ドライブや光学ドライブなどの SCSI/SATA デバイス情報を一覧表示します。

1. lsscsi コマンドのインストール

リーリー

2. lsscsi コマンド英語マニュアル

コマンド詳細説明アドレス

リーリー Linuxコマンドlsscsiの詳細説明

2. コマンド形式

lsscsi コマンド構文:

リーリー

lsscsi コマンド オプション:

###意味### #-gSCSI共通デバイスファイル名の表示-kデバイスノード名の代わりにカーネル名を表示します-dデバイスノードのプライマリ番号とセカンダリ番号を表示します-HSCSI デバイスではなく、現在システムに接続されている SCSI ホストを一覧表示します-l各 SCSI デバイス (ホスト) の追加情報を表示します-ccat /proc/scsi/scsi コマンドの実行の出力に関連する-p追加のデータ整合性 (保護) 情報を表示します-t送信情報の表示-L追加情報を「属性名=値」の形式で表示します-v情報発見時のディレクトリ名出力-ysysfs がデフォルトの "/sys" ではなく指定されたパスにマウントされていると仮定します。 表示容量サイズ。 #########-バツ### LUN 番号を 16 進数で表示します。 出力 DIF、DIX 保護タイプ。 有効な保護モード情報を出力します。 #########-私### -w-t

3. 结果含义

Linuxコマンドlsscsiの詳細説明

四、命令举例

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
Linuxコマンドlsscsiの詳細説明
  • 2.该编译选项说明
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.
  • 3.logging 类型源码文件位置(有说明)
-> drivers\scsi\scsi_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),该机制使用了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
オプション
-s
-c デフォルトの情報をフルネームで表示します。
-d デバイスのプライマリおよびセカンダリのデバイス番号を表示します。
-g 対応する sg デバイス名を表示します。
-H ホストコントローラーリストを表示、-Hl、-Hlv。
-l 関連する属性 -ll、-llll=-L を表示します。
-v デバイスのプロパティが存在するディレクトリを表示します。
-p
-P
udev 関連の属性を表示する
WWNを表示
対応する伝送情報(ATA、FC、SBP、ISCSI、SPI、SAS、SATA、USB)、-Ht、-tl(sasアドレス含む)を表示

以上がLinuxコマンドlsscsiの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlxlinux.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。