《LINUX教学:Linux上磁盘热插拔》要点:
本文介绍了LINUX教学:Linux上磁盘热插拔,希望对您有用。如果有疑问,可以联系我们。
起首获取scsi设备的信息.
[root@server2 ~]# lsscsi [2:0:0:0] disk VMware, VMware Virtual S 1.0 /dev/sda [4:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
有些操作系统没有lsscsi命令,则可以使用下面的办法获取scsi设备信息.
[root@server2 ~]# ll /sys/bus/scsi/drivers/sd/2\:0\:0\:0/block/ total 0 drwxr-xr-x 10 root root 0 Jun 22 2017 sda
然后查看/proc/scsi/scsi文件,获取对应scsi装备的详细信息.
在此处,有两块直连(Direct-Access)的scsi磁盘,一块通过光驱cd-rom连接的光盘.我们只考虑scsi磁盘,所以这两块磁盘在scsi中的定位符为2:0:0:0和2:0:1:0.如果继续插入一块盘,那么新盘在scsi中的定位符为2:0:2:0,这个数值串异常重要.
在向计算机中插入一块磁盘后,内核因为识别不了它所以不会产生任何事件通知,因此在/sys目录中不会产生任何文件,任何工具也就读取不了它.重启系统肯定是可以办理的,但是Linux支持热插.
热插新盘的方式是向/proc/scsi/scsi中写入新scsi装备的信息.方式如下:
echo "scsi add-single-device a b c d" >/proc/scsi/scsi
此中:
a == hostadapter id (first one being 0)
b == SCSI channel on hostadapter (first one being 0)
c == ID
d == LUN (first one being 0)
例如上面的例子,应该添加如下信息:
[root@server2 ~]# echo "scsi add-single-device 2:0:2:0" >/proc/scsi/scsi
当然,重新扫描scsi总线也可以实现热插的功能.因为上面的例子中,scsi host id为2(即host2),所以扫描的是host2,这样host2这个scsi上的所有设备都邑被重新扫描.
[root@server2 ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
如果不知道要扫描哪个host,直接使用循环全体扫描.
[root@xuexi ~]# for i in `ls /sys/class/scsi_host/`;do echo "- - -" >/sys/class/scsi_host/$i/scan;done
热插之后,fdisk -l等命令就可以辨认到该磁盘了.
热拔磁盘的方式是在/proc/scsi/scsi中移除对应scsi装备的信息.方式如下:
echo "scsi remove-single-device a b c d" >/proc/scsi/scsi
例如删除2:0:2:0这块磁盘.
[root@server2 ~]# echo "scsi remove-single-device 2 0 2 0" >/proc/scsi/scsi
因为要删除的设备已经存在,/sys中已经有它完整的信息,所以也从其自身设备长进行删除.
起首查看scsi设备信息.
[root@server2 ~]# lsscsi [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 [4:0:0:0] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
例如要删除/dev/sdb,即2:0:1:0.先看看它的文件信息.
在此中有3个文件:delete、rescan和state.此中state记录了该设备是否正在运行中.而delete和rescan文件则用于删除和重新扫描该设备.
例如,删除该装备,即热拔.
[root@server2 ~]# echo 1 > /sys/bus/scsi/drivers/sd/2\:0\:1\:0/delete
本文永远更新链接地址:
维易PHP培训学院每天发布《LINUX教学:Linux上磁盘热插拔》等实战技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培养人才。