Hard-Drive

如果 cfgadm 狀態為斷開連接,如何在 Solaris 中自動檢測插入的 SATA 磁碟?

  • January 26, 2016

我的目標是結合 SATA 磁碟在小型 OpenSolaris NAS(在 HP Microserver N54L 上執行 OmniOS + napp-it)上自動執行備份常式。

背景:

我安裝了其中一個 5.25" -> 3.5" 無托架 HDD 托盤,其中包含一個簡單的 SATA 或 SAS/SATA 背板,帶有一個埠、一個電源按鈕和一些 LED(電源和 HDD 活動)。為了備份多個 HDD(每週輪換一個,儲存在異地),我編寫了一個腳本,用於zfs send/recv轉儲包括所有快照的完整主池(僅更新新塊)。當我手動啟動它時,這個腳本工作正常。

我想進一步自動化這個過程,因為 NAS 沒有直接連接 VGA 或串列控制台,插入磁碟、返回桌面系統、登錄 Web 界面或 SSH 並手動啟動腳本很繁瑣. 通過 cron 作業定時啟動不是一個選項,因為備份的天數可能略有不同(忘記磁碟、假期等)。所以備份應該在插入磁碟後立即開始。

問題:

在我cfgadm用來連接 + 配置和稍後取消配置 + 斷開磁碟的腳本中。如果我只插入磁碟並且它旋轉起來,我無法知道磁碟在那裡。我已經考慮過的可能解決方案:

  1. cfgadm -f -c connect通過使用和檢查錯誤結果,每 x 分鐘連續探測一個新磁碟和 zpool 。不是很優雅。
  2. 每 x 分鐘檢查/var/adm/messages一次並查找設備路徑或 AHCI。不可能,因為只有在手動連接設備時才會寫入消息。
  3. 使用iostat -En. 顯示磁碟,但我必須使用 grep 獲取確切的序列號,因為它沒有列出埠資訊。還需要每 x 分鐘完成一次。
  4. 使用cfgadmwith SELECT 語法過濾容器狀態。不起作用,因為插入不會觸發任何事情(也許背板太便宜了)。
  5. 辨識機箱的電源開/關。沒關係,但我不知道如何做到這一點。
  6. 重新映射電源按鈕或向機器添加另一個按鈕。可以工作,但我也不知道該怎麼做。

我想我需要兩件事:

  • 結合辨識磁碟和埠狀態的可靠方法(因此僅檢測到正確插槽中的正確磁碟)
  • 一種註冊此檢測並觸發事件的方法(啟動 shell 腳本)

這可能嗎?如果沒有,您會建議什麼替代方案?

最終解決方案(2015-01-26 更新):

對於將來遇到類似問題的任何人:

  1. 在 OmniOS 中啟用 AHCI 熱插拔,如 gea接受的答案中所述。
  2. 使用我自己的答案syseventadm中的詳細說明在磁碟聯機時觸發備份腳本。
  3. 確保您的電纜、控制器和磁碟沒有故障並且可以正常執行(我在使用 WD SE 4TB 磁碟和板載 AHCI SATA 控制器時遇到問題,導致WARNING: ahci0: ahci_port_reset port 5 the device hardware has been initialized and the power-up diagnostics failed系統日誌中出現隨機消息)。

板載 Sata/AHCI 支持熱插拔,但預設情況下在 OmniOS 中禁用此功能:要啟用將以下行添加到 /etc/system

時鐘設置:clock_auto_online = 1

有趣的問題…有點科學實驗,因為我可能只是使用 USB 或遠端發送或按計劃進行…

但是在您的情況下,我根本不會嘗試通過cfgadm或日誌解析方式“查找”磁碟。那是不可擴展的。

我只是用一個獨特的 ZFS 池名稱和腳本邏輯來命名可移動磁碟zpool import。在 Linux 下的 ZFS 中,池導入程序是一個系統服務/守護程序。但是定期執行它是沒有成本的。它將檢測驅動器和關聯的池。

我希望您在完成備份後也*導出池。*這將涵蓋驅動器在伺服器中保留多個備份週期的情況。就像在其驅動器中留下備份磁帶一樣。

引用自:https://serverfault.com/questions/750764