Zfs

Solaris 伺服器會容忍未來的 ZFS 池嗎?

  • December 30, 2020

我對 ZFS 的體驗通常是它可以正常工作,所以我希望答案是,這不是問題——但是我有一個數據池,如果它出現故障,它將毀掉我的 1 月份,所以我想仔細檢查一下。

這個問題實際上可能在涉及單獨數據池的兩種不同情況下出現。現在我正在處理第一個,但我也想知道第二個:

  • 系統盤的儲存(即持有的那個rpool)失敗了,但是數據池的儲存很好,所以你想從備份中恢復系統盤,但繼續使用數據池的實時儲存。
  • 您在 VM 中執行 Solaris,並希望回滾到虛擬機管理程序拍攝的快照(不是ZFS 快照rpool),但數據池儲存在處於“獨立”模式、RDM 等的磁碟上,因此將不會被回滾。

在這兩種情況下,當 Solaris 重新啟動時,它會看到一個它知道的數據池,但它處於它從未(據它記得)放入的狀態。

我主要只關心在系統磁碟倒帶之前系統完全關閉的情況,以及系統在倒帶到映像之前完全關閉的情況。我希望在執行狀態之間切換可能會有點棘手。

另請注意,在我的特定情況下,池的儲存幾何結構和儲存路徑沒有改變。同樣,如果他們有,我希望這會更棘手。

我什至不會用 Windows 和 NTFS 來問這個問題,因為這是一個相對簡單的解耦系統,所以很難看出它為什麼不起作用。但是,Solaris 似乎將某種池元數據保留在帶外,正如您應該在系統之間移動池時所證明的那樣zpool exportzpool import感謝 VMware,我從未以這種方式這樣做過)。我對該元數據及其用途的了解有限,因此我很難推斷這種情況下的影響。(對此的解釋會很棒!)

我實際上仍然可以訪問預回滾系統。它位於由 HP SmartArray 支持的 VMFS 數據儲存中,該數據儲存在命運多舛的預防性維護磁碟更改(由於 SmartArray 比 ZFS 更笨而失去數據)後引發 1716 POST 警告。所有重要的虛擬機看起來仍然很好,對其文件系統的掃描也沒有發現錯誤,但我還是打算從最近的備份中恢復陣列,因為我有理由懷疑 ESXi 會默默地將壞扇區歸零,而不是將錯誤傳遞給來賓,所以我不想冒險潛伏在某個地方的某個歸零扇區稍後會咬我的屁股。

對於 Solaris VM,我不必擔心零扇區,因為 ZFS 會捕捉到這一點,但大多數其他 VM 使用啞文件系統。不過,備份是整個 VMware 數據儲存的映像,因此修復它們也會回滾 Solaris VM。實際上,我rpool對該 VM 進行了清理,它沒有發現任何錯誤,所以,如果我願意,我可以將其 VMDK 儲存在其他地方,並在回滾後將其複制回來,然後整個問題將是沒有實際意義。我想這就是我會做的,如果沒有人回答,大聲笑。但這是我想知道一段時間的事情,所以我還是會問。

那麼問題來了,我可以直接回滾系統盤的儲存並完成它嗎? 或者我是否必須從預回滾系統中導出池,回滾,在附加儲存之前刪除池,然後附加儲存並導入池?我不喜歡後者的聲音,部分原因是該池同時提供 CIFS 和 iSCSI,我不記得我是如何設置它們的,甚至不記得如何設置它們,所以如果它們壞了我會生氣的。(你能說我們沒有全職的系統管理員嗎?哈哈)

VM 執行的是舊版本 Solaris 11.0。

(順便說一句,它較舊,部分原因是同樣的問題。我想在嘗試升級之前對 VM 進行快照,以防萬一,但後來我擔心回滾系統可能如何對獨立池做出反應,所以只是別管它。是的,我意識到我也可以rpool為 .

這是那些“zfs just works”的答案之一……

池元數據實際上儲存在池中,而不是本地作業系統上。因此,例如,如果系統崩潰並且沒有乾淨地關閉,則池中的元數據知道池沒有乾淨地“導出”。如果您嘗試將此池導入新系統,您會收到關於它沒有被導出並屬於另一個系統的投訴。那時,您只需執行 zpool import -f(強制),它就會乾淨利落。

因此,特定於您的數據池,無論您何時/何地嘗試再次導入池,其上的數據都是安全的。如果您要引導到“已恢復”的 rpool,則該 rpool 上的作業系統會知道它應該導入的池,並且會簡單地導入數據池。它不跟踪池是否被導出,除了一旦池被導出,作業系統就不再跟上它。

現在,關於 rpool 問題。從 VM 快照、磁帶備份中恢復它,無論什麼都不會改變它處理數據池的方式,除非備份是在最初創建或導入數據池之前進行的。如果是這種情況,您只需在作業系統恢復後導入池。無論 rpool 的狀況如何,數據池中的數據都是安全的。

我希望這會有所幫助。

順便說一句,您提到您不願意升級 solaris,因為您不確定它將如何對數據池作出反應。別擔心。升級將保留已知池並根據需要導入它們。

另請注意,Solaris OS 升級在單獨的“引導環境 (BE)”中是自包含的。因此,當您進行作業系統升級時,它實際上會創建一個包含新版本的完全獨立的作業系統安裝……而您的作業系統仍在執行中。然後,當您重新啟動時,它將出現在新的作業系統上。如果新作業系統有問題——即。對庫等進行的更改是您意想不到的——您只需再次重新啟動並進入原始 11.0 版本,它將處於與升級前完全相同的狀態。這是進行作業系統升級的絕佳方式!

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