Linux上磁碟熱插拔

来源:http://www.cnblogs.com/f-ck-need-u/archive/2017/06/22/7067006.html
-Advertisement-
Play Games

首先獲取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 ...


首先獲取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 `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/                              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

 

回到系列文章大綱:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

轉載請註明出處:http://www.cnblogs.com/f-ck-need-u/p/7067006.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在 Oracle 領域,我相信一說到列轉行大部分人都會立馬想到 WM_CONCAT 函數,我覺得主要是因為該函數比較實用。但事實上 WM_CONCAT 並非官方公開函數,使用會存在一定的風險;函數返回值的格式比較單一(只能用逗號分割);返回值的長度也限制。 在 "《.Net程式員學用Oracle系列 ...
  • ...
  • Oracle執行計劃詳解 一.相關的概念 Rowid的概念 Recursive Sql概念 Predicate(謂詞) DRiving Table(驅動表) Probed Table(被探查表) 組合索引(concatenated index) 可選擇性(selectivity) 二.oracle訪 ...
  • Configuration File(配置文件) Core Options(核心設置) mongos-only Options(mongo單獨設置) Windows Service Options(windows系統設置) Configuration File File Format You can ...
  • 用sys用戶sqlplus連接到數據: SQL*Plus: Release 11.2.0.3.0 Production on Thu Jun 22 11:07:58 2017 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connect ...
  • [20170622]傳輸表空間與dblink.txt--//測試看看使用dblink+傳輸表空間的情況.寫的情況相對複雜一點,具體看測試:1.環境:--//2個資料庫版本一致.實際上在1台主機上.SCOTT@book> @ &r/ver1PORT_STRING VERSION BANNER x86_ ...
  • 有時候,我們會用 Set Identity_Insert Table ON 來處理數據表的某些自增列。如果在本地倒是沒什麼問題。如果是遠程伺服器,則會報 找不到對象"XXX" ,因為它不存在或者您沒有所需的許可權 其實這個跟你的許可權無關,即使你鏈接伺服器用的是sa一樣會報這個。 其實解決方法很簡單,換 ...
  • pt-query-digest可以通過logs, processlist, 和tcpdump來分析MySQL的查詢相關信息,基本語法如下: pt-query-digest [OPTIONS] [FILES] [DSN] pt-query-digest是一種用於分析MySQL查詢的簡單易用的工具,沒有 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...