Heim >System-Tutorial >LINUX >Detaillierte Erklärung des Linux-Befehls lsscsi

Detaillierte Erklärung des Linux-Befehls lsscsi

王林
王林nach vorne
2024-02-11 14:12:031209Durchsuche

Um den Befehl lsscsi zu verstehen, müssen wir zunächst verstehen, was SCSI ist und gängige Festplattenschnittstellen und gängige Festplattenparameter kennen.

1. Was ist SCSI?

SCSI (Small Computer System Interface) ist ein vollständiges Datenübertragungsprotokoll, das hauptsächlich zur Übertragung von Befehlen, Status- und Blockdaten zwischen dem Host und den Speichergeräten verwendet wird. Unter den verschiedenen Speichertechnologien ist die SCSI-Technologie die wichtigste Säule.

Das SCSI-Protokoll liegt zwischen dem Betriebssystem und externen Ressourcen und verfügt über eine Reihe funktionaler Komponenten. Die E/A-Vorgänge des Betriebssystems auf externen Geräten (z. B. Festplatten, Bänder, optische Datenträger, Drucker usw.) können über das SCSI-Protokoll implementiert werden. Typischerweise ist das SCSI-Protokoll in den Gerätetreiber oder die integrierte Logik des Host-Adapters eingebettet.

Detaillierte Erklärung des Linux-Befehls lsscsi

2. Gängige Festplattenschnittstellen

1. Festplatte mit IDE-Schnittstelle

Sein englischer Name: Integrated Drive Electronics, die übliche 2,5-Zoll-IDE-Festplattenschnittstelle. Seine ursprüngliche Bedeutung ist eine Festplatte, die den „Festplattencontroller“ und den „Festplattenkörper“ integriert.

IDE stellt eine Art Festplatte dar, aber in tatsächlichen Anwendungen ist es auch üblich, dass sich die Verwendung von IDE auf die früheste IDE-Festplatte, ATA-1, bezieht. Diese Art von Schnittstelle wurde mit der Entwicklung der Schnittstellentechnologie eliminiert Später weitete sich die Entwicklung auf weitere Arten von Festplattenschnittstellen aus, wie z. B. ATA, Ultra ATA, DMA, Ultra DMA und andere Schnittstellen, bei denen es sich allesamt um IDE-Festplatten handelt.

Seine Eigenschaften sind: niedriger Preis, starke Kompatibilität, hohe Kostenleistung, langsame Datenübertragung, unterstützt kein Hot-Swapping usw.

Detaillierte Erklärung des Linux-Befehls lsscsi2. Festplatte mit SCSI-Schnittstelle

SCSI ist keine speziell für Festplatten entwickelte Schnittstelle, sondern eine Hochgeschwindigkeits-Datenübertragungstechnologie, die häufig auf Minicomputern verwendet wird.

Die SCSI-Schnittstelle bietet die Vorteile eines breiten Anwendungsbereichs, Multitasking, großer Bandbreite, geringer CPU-Auslastung und Hot-Swap-Fähigkeit. Der höhere Preis macht es jedoch schwierig, so beliebt zu sein wie IDE-Festplatten, also sind es SCSI-Festplatten Wird hauptsächlich im mittleren bis oberen Preissegment in Servern und High-End-Workstations verwendet.

Seine Eigenschaften sind: hohe Übertragungsrate, gute Lese- und Schreibleistung, kann an mehrere Geräte angeschlossen werden und unterstützt Hot-Swapping, aber der Preis ist relativ hoch.

Detaillierte Erklärung des Linux-Befehls lsscsi3. SATA-Schnittstellentyp

Der englische Name lautet: Serial Advanced Technology Attachment. Festplatten mit SATA-Anschluss (Serial ATA) werden auch serielle Festplatten genannt und sind der Zukunftstrend bei PC-Festplatten.

Serial ATA verwendet eine serielle Verbindungsmethode und verfügt über stärkere Fehlerkorrekturfunktionen. Im Vergleich zur Vergangenheit besteht der größte Unterschied darin, dass er die Übertragungsanweisungen (nicht nur Daten) überprüfen kann Wird ein Fehler gefunden, wird er automatisch korrigiert, was die Zuverlässigkeit der Datenübertragung erheblich verbessert.

Die serielle Schnittstelle bietet außerdem die Vorteile einer einfachen Struktur und der Unterstützung von Hot-Swapping.

Detaillierte Erklärung des Linux-Befehls lsscsi

3. lsscsi-Befehl lsscsi listet SCSI-/Sata-Geräteinformationen auf, z. B. Festplatte, optisches Laufwerk.

1. lsscsi-Befehlsinstallation

-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-Befehlshandbuch in Englisch

Detaillierte Befehlsbeschreibungsadresse

https://sg.danny.cz/scsi/lsscsi.html
Detaillierte Erklärung des Linux-Befehls lsscsi

2. Befehlsformat

lsscsi-Befehlssyntax:

lsscsi [选项] [H:C:T:L]

lsscsi-Befehlsoptionen:

Optionen Bedeutung
-g SCSI-Gemeinsamer Gerätedateiname anzeigen
-k Kernel-Namen anstelle des Geräteknotennamens anzeigen
-d Zeigt die primären und sekundären Nummern der Geräteknoten an
-H Listen Sie SCSI-Hosts auf, die derzeit mit dem System verbunden sind, anstelle von SCSI-Geräten
-l Zeigen Sie zusätzliche Informationen für jedes SCSI-Gerät (Host) an
-c Relativ zur Ausgabe der Ausführung des Befehls cat /proc/scsi/scsi
-p Zusätzliche Informationen zur Datenintegrität (Schutz) anzeigen
-t Übertragungsinformationen anzeigen
-L Zeigen Sie zusätzliche Informationen in der Form „Attributname=Wert“ an
-v Verzeichnisnamen ausgeben, wenn Informationen gefunden werden
-y Gehen Sie davon aus, dass sysfs im angegebenen Pfad und nicht im Standardpfad „/sys“ gemountet ist
-s Kapazitätsgröße anzeigen.
-c Standardinformationen mit vollständigem Namen anzeigen.
-d Zeigen Sie die primären und sekundären Gerätenummern des Geräts an.
-g Zeigen Sie den entsprechenden SG-Gerätenamen an.
-H Host-Controller-Liste anzeigen, -Hl, -Hlv.
-l Zugehörige Attribute anzeigen, -ll,-llll=-L.
-v Zeigen Sie das Verzeichnis an, in dem sich die Geräteeigenschaften befinden.
-x Zeigen Sie die LUN-Nummer im Hexadezimalformat an.
-p Ausgang DIF, DIX-Schutzart.
-P Gültige Schutzmodusinformationen ausgeben.
-ich Udev-bezogene Attribute anzeigen
-w WWN anzeigen
-t Entsprechende Übertragungsinformationen anzeigen (ATA, FC, SBP, ISCSI, SPI, SAS, SATA, USB), -Ht, -tl (einschließlich SAS-Adresse)

3. 结果含义

Detaillierte Erklärung des Linux-Befehls 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
Detaillierte Erklärung des Linux-Befehls 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

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Linux-Befehls lsscsi. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:lxlinux.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen