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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM