GOAL
SCSI и Linux, в общих чертах
SOLUTION
Адресс SCSI устройств
<H>ost: Instance of hostadapter to which device is attached
<B>us: SCSI Bus or Channel on the hostadapter
<T>arget: SCSI Id assigned to an individual device
<L>un: Logical unit number on the device
<B>us: SCSI Bus or Channel on the hostadapter
<T>arget: SCSI Id assigned to an individual device
<L>un: Logical unit number on the device
Посмотреть подключенные SCSI устройства можно множеством комманд.
LSSCSI
# lsscsi
[0:0:0:0] disk Single Flash Reader 1.00 /dev/sdb
[1:0:0:0] disk HP LOGICAL VOLUME 6.64 /dev/sda
[1:3:0:0] storage HP P410i 6.64 -
[2:0:0:0] disk 3PARdata VV 3222 /dev/sdc
[2:0:0:254] enclosu 3PARdata SES 3222 -
[2:0:1:0] disk 3PARdata VV 3222 /dev/sdd
[2:0:1:254] enclosu 3PARdata SES 3222 -
[3:0:0:0] disk 3PARdata VV 3222 /dev/sde
[3:0:0:254] enclosu 3PARdata SES 3222 -
[3:0:1:0] disk 3PARdata VV 3222 /dev/sdf
[3:0:1:254] enclosu 3PARdata SES 3222 -
[4:0:0:0] cd/dvd hp DVD D DS8D3SH HHE8 /dev/sr0
В квадратных скобках показывается адрес устройства. Почитайте man комманды lsscsi, удобные для использования опции.
PROC
# cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 03 Id: 00 Lun: 00
Vendor: HP Model: P410i Rev: 6.64
Type: RAID ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: HP Model: LOGICAL VOLUME Rev: 6.64
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: Single Model: Flash Reader Rev: 1.00
Type: Direct-Access ANSI SCSI revision: 00
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: 3PARdata Model: VV Rev: 3222
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi2 Channel: 00 Id: 00 Lun: 254
Vendor: 3PARdata Model: SES Rev: 3222
Type: Enclosure ANSI SCSI revision: 06
Host: scsi2 Channel: 00 Id: 01 Lun: 00
Vendor: 3PARdata Model: VV Rev: 3222
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi2 Channel: 00 Id: 01 Lun: 254
Vendor: 3PARdata Model: SES Rev: 3222
Type: Enclosure ANSI SCSI revision: 06
Host: scsi4 Channel: 00 Id: 00 Lun: 00
Vendor: hp Model: DVD D DS8D3SH Rev: HHE8
Type: CD-ROM ANSI SCSI revision: 05
Host: scsi3 Channel: 00 Id: 00 Lun: 00
Vendor: 3PARdata Model: VV Rev: 3222
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi3 Channel: 00 Id: 00 Lun: 254
Vendor: 3PARdata Model: SES Rev: 3222
Type: Enclosure ANSI SCSI revision: 06
Host: scsi3 Channel: 00 Id: 01 Lun: 00
Vendor: 3PARdata Model: VV Rev: 3222
Type: Direct-Access ANSI SCSI revision: 06
Host: scsi3 Channel: 00 Id: 01 Lun: 254
Vendor: 3PARdata Model: SES Rev: 3222
Type: Enclosure ANSI SCSI revision: 06
Информацию по SCSI адаптерам можно посмотреть в файловой системе sys
# ls -ld /sys/class/scsi_host/host*/
drwxr-xr-x 2 root root 0 2008-08-06 17:25 /sys/class/scsi_host/host0/
drwxr-xr-x 2 root root 0 2008-08-06 17:25 /sys/class/scsi_host/host1/
# cat /sys/class/scsi_host/host[0-1]/proc_name
ata_piix
ata_piix
Если SCSI устройства подключены по протоколу FC, то инфомацию о FC адаптерах можно найти там же
# ls -l /sys/class/fc_host/host*
lrwxrwxrwx 1 root root 0 Jun 26 21:41 /sys/class/fc_host/host2 -> ../../devices/pci0000:00/0000:00:01.0/0000:0e:00.0/host2/fc_host/host2
lrwxrwxrwx 1 root root 0 Jun 26 21:41 /sys/class/fc_host/host3 -> ../../devices/pci0000:00/0000:00:01.0/0000:0e:00.1/host3/fc_host/host3
# cat /sys/class/fc_host/host*/port_name
0x5001438024246d18
0x5001438024246d1a
WWN FC карточки таргета
# cat /sys/class/fc_remote_ports/*/port_name
0x20510002ac018827
0x21510002ac018827
0x20520002ac018827
0x21520002ac018827
Удалить/добавить SCSI устройства в ядрах версии 2.4.Х. (так же работает и для новых ядер)## смотрим подключенные устройства
# lsscsi
[0:0:0:0] disk ATA IC35L040AVVA07-0 VA2O /dev/sda
[0:0:1:0] disk ATA WDC WD400BB-32CL 05.0 /dev/sdb
[1:0:0:0] disk ATA QUANTUM FIREBALL A1Y. /dev/sdc
[1:0:1:0] cd/dvd JLMS DVD-ROM XJ-HD166 DD05 /dev/sr0
## удаляем устройство
# echo "scsi remove-single-device 1 0 0 0" > /proc/scsi/scsi
# lsscsi
[0:0:0:0] disk ATA IC35L040AVVA07-0 VA2O /dev/sda
[0:0:1:0] disk ATA WDC WD400BB-32CL 05.0 /dev/sdb
[1:0:1:0] cd/dvd JLMS DVD-ROM XJ-HD166 DD05 /dev/sr0
## добавляем устройство
# echo "scsi add-single-device 1 0 0 0" > /proc/scsi/scsi
# lsscsi
[0:0:0:0] disk ATA IC35L040AVVA07-0 VA2O /dev/sda
[0:0:1:0] disk ATA WDC WD400BB-32CL 05.0 /dev/sdb
[1:0:0:0] disk ATA QUANTUM FIREBALL A1Y. /dev/sdd
[1:0:1:0] cd/dvd JLMS DVD-ROM XJ-HD166 DD05 /dev/sr0
Это же можно сделать через файловую систему SYS ( linux 2.6.XX и выше)
# echo "1" > /sys/block/sdc/device/delete
или вот так
# echo 1 > /sys/class/scsi_host/host<H>/device/target<H>:<B>:<T>/<H>:<B>:<T>:<L>/delete
echo "<B> <T> <L>" > /sys/class/scsi_host/host<H>/scan
echo "- - -" > /sys/class/scsi_host/host0/scan
Иногда бывает полезным изменить уровень логирования в драйвере scsi, это можно сделать вот так
# sysctl -q -w dev.scsi.logging_level=<N>
Выдержка из scsi_logging.h
/*
* 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;
Troubleshooting
В тарблшутинге пригодится SCSI-Programming-HOWTO
No comments:
Post a Comment