Linux上磁盘热插拔
首先获取scsi设备的信息。
[root@server2 ~]# lsscsi
[:::] disk VMware, VMware Virtual S 1.0 /dev/sda
[:::] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
有些操作系统没有lsscsi命令,则可以使用下面的方法获取scsi设备信息。
[root@server2 ~]# ll /sys/bus/scsi/drivers/sd/ total
lrwxrwxrwx root root Jun : ::: -> ../../../../devices/pci0000:/::10.0/host2/target2::/:::
--w------- root root Jun : bind
--w------- root root Jun uevent
--w------- root root Jun : unbind
[root@server2 ~]# ll /sys/bus/scsi/drivers/sd/\:\:\:/block/ total
drwxr-xr-x root root Jun sda
然后查看/proc/scsi/scsi文件,获取对应scsi设备的详细信息。
[root@server2 ~]# 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:
Host: scsi4 Channel: 00 Id: 00 Lun: 00
Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00
Type: CD-ROM ANSI SCSI revision:
Host: scsi2 Channel: 00 Id: 01 Lun: 00
Vendor: VMware, Model: VMware Virtual S Rev: 1.0
Type: Direct-Access ANSI SCSI revision:
在此处,有两块直连(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
[:::] disk VMware, VMware Virtual S 1.0 /dev/sda
[:::] disk VMware, VMware Virtual S 1.0 /dev/sdb
[:::] cd/dvd NECVMWar VMware SATA CD01 1.00 /dev/sr0
例如要删除/dev/sdb,即2:0:1:0。先看看它的文件信息。
[root@server2 ~]# ls /sys/bus/scsi/drivers/sd/\:\:\:/ 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 > /sys/bus/scsi/drivers/sd/\:\:\:/delete
Linux上磁盘热插拔的更多相关文章
- Linux上磁盘挂载
Linux磁盘挂载 一. 磁盘分区 在终端输入fdisk –l 命令查看整个系统的分区情况. 能够看到另一个32G的/dev/vdb磁盘没有挂载使用 watermark/2/text/aHR0c ...
- linux上磁盘的操作相关命令
1.查看磁盘IO负载 - 看哪些进程在读写磁盘 lsof /dev/sda2 |head
- 第5章 Linux上管理文件系统
5.1 机械硬盘 机械硬盘由多块盘片组成,它们都绕着主轴旋转.每块盘片上下方都有读写磁头悬浮在盘片上下方,它们与盘片的距离极小.在每次读写数据时盘片旋转,读写磁头被磁臂控制着不断的移动来读取其中的数据 ...
- 识别 Linux上的设备(磁盘)类型
1. Linux 上的设备 (device) Linux 操作系统中,各种设备驱动(device driver)通过设备控制器(device controller)来管理各种设备(device),其关 ...
- linux上测试磁盘IO速度
运维工作,经常要测试服务器硬件性能,以此来判断是否存在性能瓶颈. 下面介绍在linux上测试磁盘IO速度的工具: 1.hdparm CentOS中,安装的两种方法: 1) yum安装. # yum i ...
- 【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
RAC在LINUX上使用NFS安装前准备(六) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇 ...
- Linux上的free命令详解、swap机制
Linux上的free命令详解 解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...
- Linux下磁盘挂载
公司硬盘不够用了,新买了一个存储,需要挂载到现在的系统上.前期的步骤就不说了,运维全部搞定,无非是硬件和网络那一套,这里只说分配到本人后在Linux下如何挂载. 具体步骤如下: 1.查看是否已经分配 ...
- 分布式缓存技术redis学习系列(一)——redis简介以及linux上的安装
redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...
随机推荐
- 【慕课网实战】六、以慕课网日志分析为例 进入大数据 Spark SQL 的世界
DataFrame它不是Spark SQL提出的,而是早起在R.Pandas语言就已经有了的. A Dataset is a distributed collection of data:分布式的 ...
- Exp8 Web基础 20154320 李超
1.实验后回答问题 (1)什么是表单. 表单是一个包含表单元素的区域,表单元素是允许用户在表单中输入信息的元素,表单在网页中主要负责数据采集功能,一个表单有三个基本组成部分:表单标签.表单域.表单按钮 ...
- .Net异步实例讲解
说起异步,Thread,Task,async/await,IAsyncResult 必须掌握 1.线程(Thread) 多线程的意义在于一个应用程序中,有多个执行部分可以同时执行:对于比较耗时的操作( ...
- Oracle数据库基本查询语句
--数据库连接 --普通用户连接:Conn scott/tiger --超级管理员连接:Conn "sys/sys as sysdba" --Disconnect; 断开连接 -- ...
- (二)Javascript面向对象编程:构造函数的继承
Javascript面向对象编程:构造函数的继承 这个系列的第一部分,主要介绍了如何"封装"数据和方法,以及如何从原型对象生成实例. 今天要介绍的是,对象之间的"继承 ...
- HTML 通过js实现div的拖动效果
最近做项目,碰到一个问题,需要对div实现拖动效果. 在度娘找了很多,要么觉得代码太长,要么就是效果不理想,不过最后还是找到了一个不错的,感谢大神的留贴,方便了我们,就把代码贴下面了: <!DO ...
- Function Composition vs Object Composition
In functional programming, we create large functions by composing small functions; in object-oriente ...
- spring cloud 入门,看一个微服务框架的「五脏六腑」
Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构所需的各种组件. 注:Spring Boot 简单理解就是简化 Spring 项目的搭建.配置.组 ...
- 技术干货:实时视频直播首屏耗时400ms内的优化实践
本文由“逆流的鱼yuiop”原创分享于“何俊林”公众号,感谢作者的无私分享. 1.引言 直播行业的竞争越来越激烈,进过2018年这波洗牌后,已经度过了蛮荒暴力期,剩下的都是在不断追求体验.最近正好在做 ...
- Java 多线程之自旋锁
一.什么是自旋锁? 自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环. 获取锁的线 ...