首先获取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/total 0
lrwxrwxrwx 1 root root    0 Jun 22 17:29 2:0:0:0 -> ../../../../devices/pci0000:00/0000:00:10.0/host2/target2:0:0/2:0:0:0
--w------- 1 root root 4096 Jun 22 17:29 bind
--w------- 1 root root 4096 Jun 22  2017 uevent
--w------- 1 root root 4096 Jun 22 17:29 unbind

[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设备的详细信息。

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

在此处,有两块直连(Direct-Access)的scsi磁盘,一块通过光驱cd-rom连接的光盘。我们只考虑scsi磁盘,所以这两块磁盘在scsi中的定位符为2:0:0:0和2:0:1:0。如果继续插入一块盘,那么新盘在scsi中的定位符为2:0:2:0,这个数值串非常重要。

1.1 热插

在向计算机中插入一块磁盘后,内核因为识别不了它所以不会产生任何事件通知,因此在/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 /sys/class/scsi_host/host*/scan;do echo "- - -" >$i;done

热插之后,fdisk -l等命令就可以识别到该磁盘了。

1.2 热拔

热拔磁盘的方式是在/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。先看看它的文件信息。

[root@server2 ~]# ls /sys/bus/scsi/drivers/sd/2\:0\:1\:0/block/                              evt_lun_change_reported             model                               scsi_level
bsg/                                evt_media_change                    power/                              state
delete                              evt_mode_parameter_change_reported  queue_depth                         subsystem/
device_blocked                      evt_soft_threshold_reached          queue_ramp_up_period                timeout
device_busy                         generic/                            queue_type                          type
dh_state                            iocounterbits                       rescan                              uevent
driver/                             iodone_cnt                          rev                                 unpriv_sgio
eh_timeout                          ioerr_cnt                           scsi_device/                        vendor
evt_capacity_change_reported        iorequest_cnt                       scsi_disk/                          vpd_pg80
evt_inquiry_change_reported         modalias                            scsi_generic/                       vpd_pg83

在其中有3个文件:delete、rescan和state。其中state记录了该设备是否正在运行中。而delete和rescan文件则用于删除和重新扫描该设备。

例如,删除该设备,即热拔。

[root@server2 ~]# echo 1 > /sys/bus/scsi/drivers/sd/2\:0\:1\:0/delete

转载于:https://www.cnblogs.com/f-ck-need-u/p/7067006.html

Linux上磁盘热插拔相关推荐

  1. linux改变磁盘顺序,Linux上磁盘顺序混乱的情况

    当前位置:我的异常网» Linux/Unix » Linux上磁盘顺序混乱的情况 Linux上磁盘顺序混乱的情况 www.myexceptions.net  网友分享于:2013-08-03  浏览: ...

  2. Linux上磁盘坏道检查和规避

    在服务器故障定位中,经常遇到硬盘相关故障,其中磁盘坏道导致硬盘被控制卡离线的 问题就比较常见,比如,控制卡读硬盘的某个扇区有异常,会导致硬盘被控制卡离线,写某个扇区异常,会报io异常等,都可能是硬盘有 ...

  3. 第5章 Linux上管理文件系统

    5.1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据 ...

  4. Linux上管理文件系统

    1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据. ...

  5. linux 存储映射lun 给_如何在 Linux 上扫描/检测新的 LUN 和 SCSI 磁盘 | Linux 中国

    导读:当 Linux 系统连接到 SAN(存储区域网络)后,你需要重新扫描 iSCSI 服务以发现新的 LUN.本文字数:3394,阅读时长大约:4分钟https://linux.cn/article ...

  6. 在LINUX上配置oracle ASMLib的多路径磁盘

    在LINUX上配置oracle ASMLib的多路径磁盘 适用于: Oracle Server - Enterprise Edition - Version: 10.2.0.1 Linux Kerne ...

  7. linux的free会擦出磁盘吗,如何在 Linux 上检查可用的磁盘空间 | Linux 中国

    我已经使用了多少磁盘空间? (本文字数:2161,阅读时长大约:3 分钟) 在 Linux 上查找可用磁盘空间的最简单的方法是使用 df 命令 .df 命令从字面意思上代表着 磁盘可用空间(disk ...

  8. linux扩展磁盘空间命令_在Linux上监视磁盘空间– SQL Server DBA的有用命令

    linux扩展磁盘空间命令 In this article, we will explore the different Linux commands related to the disk spac ...

  9. linux没有找到可用磁盘,在Linux上,有没有一种更像python的方法来获取可用磁盘设备名的列表?...

    编辑我不明白为什么这被标记为重复,因为标识的重复需要导入pyudev.甚至不可能是复制品.在 这很管用,但感觉"蛮力".在 有没有一种更像python的方法来获取Linux上可用磁 ...

最新文章

  1. 图像添加Beta分布噪声
  2. MobaXterm通过SSH连接centOS7
  3. poj 2352 线段树
  4. 里公式后面标号怎么对齐_你若会用Word里F4键,又何须加班到半夜?
  5. Android 友盟推送开发
  6. pc,移动端局域网文件共享
  7. 从佛罗伦萨记账到区块链,应用才是区块链崛起的真正标志
  8. 语言怎么得到直流电压并采样_热点|昆明专业12V10A开关电源怎么选
  9. 拓端tecdat|R语言ggsurvplot绘制生存曲线报错 : object of type ‘symbol‘ is not subsettable
  10. 星期、月份英文缩写对照表
  11. (翻译)反馈循环模式(Feedback loops)
  12. ETL——实现Kettle作业定时任务
  13. 微信开方平台微信管理员重置
  14. sat数学可以用计算机吗,SAT考试数学是否可以使用计算器
  15. 微信小程序返回上一页 没有上一页的情况下返回首页
  16. xv6源码解析(一)——系统启动
  17. 解决fatal error C1859: “Debug\thread5.pch”意外的预编译头错误的方法
  18. win7需要计算机管理员权限,关于告诉你win7系统提示“需要管理员权限”的修复办法...
  19. CocosCreator屏幕适配小结
  20. VC 资源文件 Resource.h *.rc *.rc2

热门文章

  1. 阿里巴巴创新研究计划 AIR2018 正式发布 邀全球学者共创未来
  2. 浙江大学计算机基础上机实验答案,2015年浙江大学远程教育计算机基础知识题及参考答案(2)...
  3. unity3d干货分享:实现敌人锥形视角的3个方法
  4. 买了台任天堂Switch
  5. MySQL复习资料(四)——MySQL-聚合函数
  6. python pynlpir NLPIR许可证过期问题【RuntimeError: NLPIR function ‘NLPIR_Init‘ failed.】
  7. 自定义安装python,退格,方向键无法正常使用(转)
  8. 详解 Too many open files
  9. /etc/group 很好很强大
  10. VMware Workstation Pro通过ISO系统镜像安装ubuntu-18.04.2