0
点赞
收藏
分享

微信扫一扫

SCSI 设备热插拔


文章目录

  • 1.lsscsi 与 cat /proc/scsi/scsi
  • 2.处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢?

1.lsscsi 与 cat /proc/scsi/scsi

[root@localhost ~]# lsscsi
[0:0:0:0]    disk    SEAGATE  ST300MM0048      N001  /dev/sda
[0:0:2:0]    disk    ATA      INTEL SSDSC2BB80 0112  /dev/sdc
[0:0:3:0]    disk    ATA      HGST HUS726060AL T7JM  /dev/sdd
[0:0:4:0]    disk    ATA      HGST HUS726060AL T7JM  /dev/sde
[0:0:5:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdf
[0:0:6:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdg
[0:0:7:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdh
[0:0:8:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdi
[0:0:9:0]    disk    ATA      HGST HUS726060AL TAF0  /dev/sdj
[0:0:10:0]   disk    ATA      HGST HUS726060AL TAF0  /dev/sdk
[0:0:11:0]   disk    ATA      HGST HUS726060AL TAF0  /dev/sdl
[0:0:12:0]   disk    ATA      HGST HUS726060AL TAF0  /dev/sdm
[0:0:13:0]   enclosu CHENBRO  80H10323607      0611  -       
[0:0:14:0]   disk    ATA      INTEL SSDSC2BB80 0112  /dev/sdn
[11:65535:1:0]disk    Huawei   VBS fileIO       1.0   /dev/sdb
[11:65535:2:0]disk    Huawei   VBS fileIO       1.0   /dev/sdo


第一列:SCSI设备id:host, channel,id,lun。
第二列:设备类型。
第3,4,5列:设备厂商,型号,版本信息。
最后一列:设备主节点名。
lsscsi -s显示容量大小。
-c 用全称显示默认的信息。
-d 显示设备主,次设备号。
-g 显示对应的sg设备名。
-H 显示主机控制器列表,-Hl,-Hlv。-l 显示相关属性,-ll,-lll=-L。-v 显示设备属性所在目录。
-x 以16进制显示lun号。
-p 输出DIF,DIX 保护类型。
-P 输出有效的保护模式信息。
-i 显示udev相关的属性-w 显示WWN
-t显示相应传输信息(ATA,FC,SBP,ISCSI,SPI,SAS,SATA,USB),-Ht,-tl.(包括sas地址)



[root@localhost ~]# cat /proc/scsi/scsi
Host: scsi0 Channel: 00 Id: 12 Lun: 00
  Vendor: ATA      Model: HGST HUS726060AL Rev: TAF0
  Type:   Direct-Access                    ANSI  SCSI revision: 06
Host: scsi0 Channel: 00 Id: 13 Lun: 00
  Vendor: CHENBRO  Model: 80H10323607      Rev: 0611
  Type:   Enclosure                        ANSI  SCSI revision: 05
Host: scsi0 Channel: 00 Id: 14 Lun: 00
  Vendor: ATA      Model: INTEL SSDSC2BB80 Rev: 0112
  Type:   Direct-Access                    ANSI  SCSI revision: 06
Host: scsi11 Channel: 65535 Id: 01 Lun: 00
  Vendor: Huawei   Model: VBS fileIO       Rev: 1.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05
Host: scsi11 Channel: 65535 Id: 02 Lun: 00
  Vendor: Huawei   Model: VBS fileIO       Rev: 1.0
  Type:   Direct-Access                    ANSI  SCSI revision: 05

  • lsscsi显示的第一列是scsi设备在内核中展示的各级编号,根据编号可以唯一确定一个设备,
    如果使用 cat /proc/scsi/scsi 来查看会显得好理解一些:
  • 从编号可以看出,第一级是host,第二级是channel,第三级是target编号,第四级是LUN号

h == hostadapter id (first one being 0)
c == SCSI channel on hostadapter (first one being 0)
t == ID
l == LUN (first one being 0)

各个数字之间的关系是什么?
一个主板可能接多个host,比如上面的服务器,在有多个sas芯片的情况下,肯定就有多个host。
一个sas芯片又可以分割为多个通道,也就是channel,也叫bus。
一个通道下多个target,一个target下多个lun。

如果一个硬盘支持双通道,输入multipath -ll,会出现1个硬盘出现两个盘符的情况就是双通道

2.处于运行中的服务器,因业务要求也许不允许重启机器,而新添加的SCSI设备(主要是硬盘)如何实现热插拔呢?

(1)eg1

  • 首先需要查看一下设备:

#cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02

可以看到有两种设备:CD-ROM 和 Direct-Access 。

  • 清楚SCSI设备后,将新硬盘或者磁带机做好物理连接,就可以重新扫描新的设备了(例子是添加SCSI硬盘):

添加硬盘并查看
# echo "scsi add-single-device w x y z" > /proc/scsi/scsi
为使该命令正常运行,必须指定正确的参数值 w、x、y 和 z,如下所示:
w 是主机适配器标识,第一个适配器为零(0)
x 是主机适配器上的 SCSI 通道,第一个通道为零(0)
y 是设备的 SCSI 标识
z 是 LUN 号,第一个 LUN 为零(0)
如果w x y 参数不正确,系统是不能识别添加的硬盘和磁带机的可以
通过cat /proc/scsi/scsi命令来核实是否添加成功。
此命令将返回系统中识别到的所有SCSI设备的详细信息,报错厂商、型号容量、介质访问类型等;

w是硬盘所在SCSI控制器号(一般机器就一个SCSI控制器,所以就是0);
x是硬盘所在SCSI通道的编号(一般单通道的就是0,多通道的要看是哪个通道了);
y是硬盘的SCSI ID号(可以通过具体插入的硬盘插槽来判断);
z是硬盘的lun号(默认情况都是0)




删除硬盘并查看
# echo "scsi remove-single-device 0 0 1 0" >/proc/scsi/scsi

  • 查看一下:

# cat /proc/scsi/scsi
Attached devices:
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi2 Channel: 00 Id: 01 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02

  • 看一下添加的SCSI硬盘:

# fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes
heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000ef79d
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        2611    20458496   8e  Linux LVM
Disk /dev/mapper/VolGroup-lv_root: 18.8 GB, 18832424960 bytes
heads, 63 sectors/track, 2289 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/mapper/VolGroup-lv_swap: 2113 MB, 2113929216 bytes
heads, 63 sectors/track, 257 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb: 10.7 GB, 10737418240 bytes              <---这个就是新添加的硬盘
heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

  • 后面就是sdb的分区了。

(2)eg2

在vmware station虚拟机中,不关机新添加了2块scsi硬盘做而来实验:

# echo "scsi add-single-device 0 0 1 0" > /proc/scsi/scsi
# echo "scsi add-single-device 0 0 2 0" > /proc/scsi/scsi
# cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: VMware, Model: VMware Virtual S Rev: 1.0 
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 01 Lun: 00
Vendor: VMware, Model: VMware Virtual S Rev: 1.0 
Type: Direct-Access ANSI SCSI revision: 02
Host: scsi0 Channel: 00 Id: 02 Lun: 00
Vendor: VMware, Model: VMware Virtual S Rev: 1.0 
Type: Direct-Access ANSI SCSI revision: 02

上面的代码表示已经找到了新加的2块硬盘

(3)eg3

  • 增加硬盘

[root@localhost ~]# lsscsi
[1:0:0:0] cd/dvd NECVMWar VMware IDE CDR10 1.00 /dev/sr0
[2:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda

[root@localhost ~]# cat /proc/scsi/scsi
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05

[root@localhost ~]# ls /sys/class/scsi_host/
host0  host1  host2

[root@localhost ~]#  echo "scsi add-single-device 2 0 1 0" >/proc/scsi/scsi 也可以发现设备

[root@localhost ~]# lsscsi 
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0 
[2:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda 
[2:0:1:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sdb 

[root@localhost ~]# lsblk /dev/sdb
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb    8:16   0   4G  0 disk 


[root@localhost ~]# cat /proc/scsi/scsi
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi2 Channel: 00 Id: 01 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02

  • 删除硬盘

[root@localhost ~]# echo "scsi remove-single-device 2 0 1 0 " > /proc/scsi/scsi

[root@localhost ~]# lsscsi
[1:0:0:0]    cd/dvd  NECVMWar VMware IDE CDR10 1.00  /dev/sr0 
[2:0:0:0]    disk    VMware,  VMware Virtual S 1.0   /dev/sda 

[root@localhost ~]# cat /proc/scsi/scsi
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi1 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware IDE CDR10 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05

[root@localhost host2]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sda3

参考:

https://www.dwhd.org/20150523_191339.html; 
https://blog.51cto.com/1012682/2360215?source=dra;   


举报

相关推荐

0 条评论