Domanda :Come attivare i messaggi di debug estesi SCSI? Quali sono le definizioni di campo/flag di scsi_logging_level?
È possibile abilitare ulteriori messaggi di registrazione scsi scrivendo su /proc/sys/dev/scsi/logging_level sia tramite l'uso di echo o preferibilmente il sysctl comando. Il parametro del kernel è costituito da dieci campi compressi, ciascuno di 3 bit di lunghezza. Ciascun campo può avere un valore compreso tra 0 e 7. Maggiore è il valore del campo, più dettagliata sarà la registrazione dei messaggi associati a quel tipo di campo.
NOTA :l'attivazione di livelli elevati di registrazione estesa e/o più tipi di registrazione estesa può rallentare le prestazioni del sistema, soprattutto durante l'avvio e l'arresto. A meno che non sia necessario, evitare di attivare la registrazione scsi durante l'avvio.Tempo di esecuzione
1. Abilita :
# sysctl -q -w dev.scsi.logging_level=[N]
o
# echo [N] > /proc/sys/dev/scsi/logging_level
Dove N specifica quali campi abilitare ea quale livello di verbosità.
2. Disattiva:
# sysctl -q -w dev.scsi.logging_level=0
o
# echo 0 > /proc/sys/dev/scsi/logging_level
Tempo di avvio
Abilita (CentOS/RHEL 5)
1. Modifica /etc/modprobe.conf con “opzioni scsi_mod scsi_logging_level=N “.
2. Ricostruisci il file immagine initrd per raccogliere il nuovo /etc/modprobe.conf file.
CentOS / RHEL 5:come ricostruire l'immagine Ramdisk iniziale3. Modifica l'avvio riga in /boot/grub/grub.conf , rimuovi "silenzioso ' se presente, aggiungi 'debug ' o 'loglevel=10 ' (entrambi fanno la stessa cosa). Aggiungi anche "log_buf_len=8M ' per aumentare la dimensione del file di registro del kernel poiché la registrazione aggiuntiva creerà molti più messaggi.
4. Riavvia e cattura l'output dei messaggi.
# shutdown -r now
Abilita (CentOS/RHEL 6)
1. Modifica l'avvio riga in /boot/grub/grub.conf e aggiungi “scsi_logging_level=N “.
2. Modifica l'avvio riga e rimuovere "silenzioso ' se presente, aggiungi 'debug ' o 'loglevel=10 ' (entrambi fanno la stessa cosa). Aggiungi anche "log_buf_len=8M ' per aumentare la dimensione del file di registro del kernel poiché la registrazione aggiuntiva creerà molti più messaggi.
3. Riavvia e cattura l'output dei messaggi:
# shutdown -r now
Abilita (CentOS/RHEL 7 e 8)
1. Modifica "GRUB_CMDLINE_LINUX ” in /etc/default/grub e aggiungi “scsi_logging_level=N “.
2. Modifica "GRUB_CMDLINE_LINUX ” e rimuovi ‘silenzioso ' se presente, aggiungi 'debug ' o 'loglevel=10 '(entrambi fanno la stessa cosa). Aggiungi anche "log_buf_len=8M ' per aumentare la dimensione del file di registro del kernel poiché la registrazione aggiuntiva creerà molti più messaggi.
3. Modifiche a /etc/default/grub richiede la ricostruzione del file grub.cfg.
# grub2-mkconfig -o /boot/grub2/grub.cfg
4. Riavvia e cattura l'output dei messaggi.
# shutdown -r now
Quello che fanno i flag sopra è aumentare il livello di registrazione esteso scsi per includere molte informazioni su errori e timeout e durante l'elaborazione della scansione, oltre a qualsiasi io che completi la coda di alto livello. Per creare manualmente un valore di maschera, fare riferimento a scsi_logging.h e scegliere quali campi si desidera abilitare.
/* * 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;
Ad esempio, per attivare la registrazione massima associata a ioctl ed errori, viene impostato un valore ottale di 7000000007 (0x38000007) tramite 'sysctl -q -w dev.scsi.logging_level=0x38000007 '. Al contrario, se 'sysctl -q dev.scsi.logging_level' è stato utilizzato per interrogare il valore impostato corrente ed è stato restituito 402653425 (0x180000F1 o ottale 3000000361), attualmente le maschere di campo hanno ioctl=3, scan=3, timeout=6, ed errore=1 valori impostati.