首页 > *nix技术 > 如何让linux重新扫描scsi总线设备

如何让linux重新扫描scsi总线设备

2012年5月22日 发表评论 阅读评论 6,878 次浏览

在Linux下重新扫描scsi总线设备的最简单方法是直接重启系统,简单却需要等待系统关机与启动的时间。另外一种比较简单的方法是利用/sys文件系统提供的内核控制参数来实现。以vmware虚拟机举例来说,我给正在运行的虚拟机增加了一块sata硬盘,此时通过/dev是看不到这块磁盘的:

[root@localhost ~]# uname -a
Linux localhost.localdomain 2.6.38.8 #4 SMP Mon Oct 31 20:49:48 CST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# cat /etc/issue
CentOS Linux release 6.0 (Final)
Kernel \r on an \m

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

我并不知道我新增的磁盘会挂载在哪个主机适配器下,不过还好系统已有一块scsi的磁盘,那么先看看它的挂载情况:

[root@localhost ~]# readlink /sys/block/sda
../devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0/block/sda

如果sda不是一个软连接,那么可以查看该目录下的device(另外一台机器的情况):

[root@localhost ~]# readlink /sys/block/sda
[root@localhost ~]# readlink /sys/block/sda/device
../../devices/pci0000:00/0000:00:1f.5/host3/target3:0:0/3:0:0:0

可以看到sda挂载在host2下,那么先直接重新扫描host2再说:

[root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan

demsg查看内核信息,ls查看设备,新增磁盘已经找到了(如果没找到,那么可利用同样的命令把/sys/class/scsi_host/hostx全部重新扫描一遍):

[root@localhost ~]# dmesg 
scsi 2:0:1:0: Direct-Access     VMware,  VMware Virtual S 1.0  PQ: 0 ANSI: 2
scsi target2:0:1: Beginning Domain Validation
scsi target2:0:1: Domain Validation skipping write tests
scsi target2:0:1: Ending Domain Validation
scsi target2:0:1: FAST-40 WIDE SCSI 80.0 MB/s ST (25 ns, offset 127)
sd 2:0:1:0: [sdb] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
sd 2:0:1:0: [sdb] Write Protect is off
sd 2:0:1:0: [sdb] Mode Sense: 5d 00 00 00
sd 2:0:1:0: [sdb] Cache data unavailable
sd 2:0:1:0: [sdb] Assuming drive cache: write through
sd 2:0:1:0: Attached scsi generic sg2 type 0
sd 2:0:1:0: [sdb] Cache data unavailable
sd 2:0:1:0: [sdb] Assuming drive cache: write through
 sdb: unknown partition table
sd 2:0:1:0: [sdb] Cache data unavailable
sd 2:0:1:0: [sdb] Assuming drive cache: write through
sd 2:0:1:0: [sdb] Attached SCSI disk
[root@localhost ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb

还可以把这块新磁盘从scsi总线上删除掉:

[root@localhost ~]# echo 1 > /sys/block/sdb/device/delete
[root@localhost ~]# ls /dev/sd*
/dev/sda  /dev/sda1  /dev/sda2

转载请保留地址:http://www.lenky.info/archives/2012/05/1668http://lenky.info/?p=1668


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

分类: *nix技术 标签: , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.