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/total 0lrwxrwxrwx 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 0drwxr-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: 02Host: scsi4 Channel: 00 Id: 00 Lun: 00 Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00 Type: CD-ROM ANSI SCSI revision: 05Host: 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支援熱插。
熱插新碟的方式是寫入新scsi設備到/proc/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等指令就可以辨識到該磁碟了。
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/ statedelete 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
以上是Linux上磁碟熱插拔是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

vscode 內置終端是一個開發工具,允許在編輯器內運行命令和腳本,以簡化開發流程。如何使用 vscode 終端:通過快捷鍵 (Ctrl/Cmd ) 打開終端。輸入命令或運行腳本。使用熱鍵 (如 Ctrl L 清除終端)。更改工作目錄 (如 cd 命令)。高級功能包括調試模式、代碼片段自動補全和交互式命令歷史。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

VS Code 終端命令無法使用的原因及解決辦法:未安裝必要的工具(Windows:WSL;macOS:Xcode 命令行工具)路徑配置錯誤(添加可執行文件到 PATH 環境變量中)權限問題(以管理員身份運行 VS Code)防火牆或代理限制(檢查設置,解除限制)終端設置不正確(啟用使用外部終端)VS Code 安裝損壞(重新安裝或更新)終端配置不兼容(嘗試不同的終端類型或命令)特定環境變量缺失(設置必要的環境變量)

VS Code 一步/下一步快捷鍵的使用方法:一步(向後):Windows/Linux:Ctrl ←;macOS:Cmd ←下一步(向前):Windows/Linux:Ctrl →;macOS:Cmd →
