Frage :Wie schalte ich erweiterte SCSI-Debug-Meldungen ein? Was sind die Feld-/Flag-Definitionen von scsi_logging_level?
Zusätzliche SCSI-Protokollierungsmeldungen können durch Schreiben in /proc/sys/dev/scsi/logging_level aktiviert werden entweder über das Echo oder besser das sysctl Befehl. Der Kernel-Parameter besteht aus zehn gepackten Feldern mit jeweils 3 Bit Länge. Jedes Feld kann einen Wert von 0 bis 7 haben. Je höher der Feldwert, desto ausführlicher die Protokollierung von Nachrichten, die diesem Feldtyp zugeordnet sind.
HINWEIS :Das Aktivieren hoher Ebenen der erweiterten Protokollierung und/oder mehrerer Arten der erweiterten Protokollierung kann die Systemleistung verlangsamen, insbesondere während des Bootens und Herunterfahrens. Vermeiden Sie es, die SCSI-Protokollierung während des Systemstarts einzuschalten, es sei denn, dies ist erforderlich.Laufzeit
1. Aktivieren :
# sysctl -q -w dev.scsi.logging_level=[N]
oder
# echo [N] > /proc/sys/dev/scsi/logging_level
Wo N gibt an, welche Felder aktiviert werden sollen und auf welcher Ausführlichkeitsstufe.
2. Deaktivieren:
# sysctl -q -w dev.scsi.logging_level=0
oder
# echo 0 > /proc/sys/dev/scsi/logging_level
Startzeit
Aktivieren (CentOS/RHEL 5)
1. Ändern Sie /etc/modprobe.conf mit „options scsi_mod scsi_logging_level=N “.
2. Erstellen Sie die initrd-Image-Datei neu, um die neue /etc/modprobe.conf aufzunehmen Datei.
CentOS / RHEL 5 :So erstellen Sie das ursprüngliche Ramdisk-Image neu3. Bearbeiten Sie den Boot Zeile in /boot/grub/grub.conf , entfernen Sie „leise ‘ falls vorhanden, fügen Sie entweder ‘debug hinzu ‘ oder ‚loglevel=10 ‘ (beide tun dasselbe). Fügen Sie außerdem „log_buf_len=8M hinzu ‘, um die Log-Fifo-Größe des Kernels zu erhöhen, da die zusätzliche Protokollierung viel mehr Nachrichten erstellen wird.
4. Starten Sie neu und erfassen Sie die Nachrichtenausgabe.
# shutdown -r now
Aktivieren (CentOS/RHEL 6)
1. Bearbeiten Sie den Boot Zeile in /boot/grub/grub.conf und fügen Sie „scsi_logging_level=N hinzu “.
2. Bearbeiten Sie den Boot Zeile und entfernen Sie „quiet“. ‘ falls vorhanden, fügen Sie entweder ‘debug hinzu ‘ oder ‚loglevel=10 ‘ (beide tun dasselbe). Fügen Sie außerdem „log_buf_len=8M hinzu ‘, um die Log-Fifo-Größe des Kernels zu erhöhen, da die zusätzliche Protokollierung viel mehr Nachrichten erstellen wird.
3. Starten Sie neu und erfassen Sie die Nachrichtenausgabe:
# shutdown -r now
Aktivieren (CentOS/RHEL 7 &8)
1. Bearbeiten Sie die Datei „GRUB_CMDLINE_LINUX “-Zeile in /etc/default/grub und fügen Sie „scsi_logging_level=N hinzu “.
2. Bearbeiten Sie die Datei „GRUB_CMDLINE_LINUX “ Zeile und entfernen Sie „leise ‘ falls vorhanden, fügen Sie entweder ‘debug hinzu ‘ oder ‚loglevel=10 ‘(beide tun dasselbe). Fügen Sie außerdem „log_buf_len=8M hinzu ‘, um die Log-Fifo-Größe des Kernels zu erhöhen, da die zusätzliche Protokollierung viel mehr Nachrichten erstellen wird.
3. Änderungen an /etc/default/grub erfordert die Neuerstellung der Datei grub.cfg.
# grub2-mkconfig -o /boot/grub2/grub.cfg
4. Starten Sie neu und erfassen Sie die Nachrichtenausgabe.
# shutdown -r now
Was die obigen Flags tun, ist, die erweiterte SCSI-Protokollierungsebene zu erhöhen, um viele Informationen über Fehler und Zeitüberschreitungen und während der Scan-Verarbeitung sowie über jedes io, das die High-Level-Warteschlange abschließt, aufzunehmen. Um einen Maskenwert manuell zu erstellen, beziehen Sie sich bitte auf scsi_logging.h und wählen Sie aus, welche Felder Sie aktivieren möchten.
/* * This defines the scsi logging feature. It is a means by which the user * can select how much information they get about various goings on, and it * can be really useful for fault tracing. The logging word is divided into * 8 nibbles, each of which describes a loglevel. The division of things is * somewhat arbitrary, and the division of the word could be changed if it * were really needed for any reason. The numbers below are the only place * where these are specified. For a first go-around, 3 bits is more than * enough, since this gives 8 levels of logging (really 7, since 0 is always * off). */ #define SCSI_LOG_ERROR_SHIFT 0 #define SCSI_LOG_TIMEOUT_SHIFT 3 #define SCSI_LOG_SCAN_SHIFT 6 #define SCSI_LOG_MLQUEUE_SHIFT 9 #define SCSI_LOG_MLCOMPLETE_SHIFT 12 #define SCSI_LOG_LLQUEUE_SHIFT 15 #define SCSI_LOG_LLCOMPLETE_SHIFT 18 #define SCSI_LOG_HLQUEUE_SHIFT 21 #define SCSI_LOG_HLCOMPLETE_SHIFT 24 #define SCSI_LOG_IOCTL_SHIFT 27 #define SCSI_LOG_ERROR_BITS 3 /* additional logging associated with errors and recovery */ #define SCSI_LOG_TIMEOUT_BITS 3 /* additional logging associated with command timeouts */ #define SCSI_LOG_SCAN_BITS 3 /* additional logging associated with device scans and discovery */ #define SCSI_LOG_MLQUEUE_BITS 3 /* additional logging associated with mid-level command queueing */ #define SCSI_LOG_MLCOMPLETE_BITS 3 /* additional logging associated with mid-level command completions */ #define SCSI_LOG_LLQUEUE_BITS 3 /* additional logging associated with low-level command queueing */ #define SCSI_LOG_LLCOMPLETE_BITS 3 /* additional logging associated with low-level command completions */ #define SCSI_LOG_HLQUEUE_BITS 3 /* additional logging associated with hi-level command queueing */ #define SCSI_LOG_HLCOMPLETE_BITS 3 /* additional logging associated with hi-level command completions */ #define SCSI_LOG_IOCTL_BITS 3 /* additional logging associated with ioctl (typ: non-data commands) */ extern unsigned int scsi_logging_level;
Um beispielsweise die maximale Protokollierung im Zusammenhang mit ioctls und Fehlern zu aktivieren, würde ein Oktalwert von 7000000007 (0x38000007) über „sysctl -q -w dev.scsi.logging_level=0x38000007 festgelegt ‘. Umgekehrt, wenn 'sysctl -q dev.scsi.logging_level' verwendet wurde, um den aktuellen eingestellten Wert abzufragen und 402653425 (0x180000F1 oder oktal 3000000361) zurückgegeben wurde, dann haben die Feldmasken derzeit ioctl=3, scan=3, timeout=6, und error=1 Werte gesetzt.