• Linux上磁盘热插拔


    再生龙(Clonezilla)下载 v2.5.0.5中文免费版
    再生龙(Clonezilla)
    Clonezilla又称再生成,这是一款免费开源的硬盘克隆工具,软件基于debian linux发行版制作,软件拥有支持硬盘和分区备份还原、通过SSH、Samba或NFS进行备份还原等功能,支持linux、windows、freebsd等操作系统。

    1. 支持多种操作系统和文件系统,包含Linux (ext2, ext3, ext4,reiserfs, reiser4, xfs, jfs,btrfs), Mac OS (HFS+), 微软Windows (fat, ntfs), FreeBSD, NetBSD, OpenBSD (UFS),以及VMware ESX (VMFS)。

    对于 USB 可移动大容量存储设备,点击文件管理器中的卸载图标即应触发相应的 udisksd 动作,使设备断电。
    若因某种缘故设备没有断电,可尝试手动控制其断电。
    假设设备为 /dev/sdb,操作系统为 Ubuntu 15.04 及以后:
    udisksctl power-off --block-device /dev/sdb
    https://manpages.ubuntu.com/manpages/xenial/man1/eject.1.html
    eject - eject removable media
    If the device is currently mounted, it is unmounted before ejecting.

    sudo -i
    password
    for i in /sys/class/scsi_host/host*/scan;do echo "- - -" >$i;done
    打开Gparted就能看见新买的硬盘了
    cat /proc/scsi/scsi 也行 如果是scsi的话

    首先获取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/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: scsi4 Channel: 00 Id: 00 Lun: 00
    Vendor: NECVMWar Model: VMware SATA CD01 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
    在此处,有两块直连(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

  • 相关阅读:
    代码对比软件——code compare
    IAR调试和keil调试的一点小区别
    谷访问歌助手
    X86架构的寄存器
    ant-design-pro
    js 闭包 作用域
    《三体》总结
    如何通过SQL注入盗取数据库信息
    《看见》总结
    《欲望的演化》总结
  • 原文地址:https://www.cnblogs.com/marklove/p/14283834.html
Copyright © 2020-2023  润新知