
因此,ZFS 報告了一些“讀取問題”,因此基於以下事實,該磁碟似乎出現了故障:ZFS-8000-9P據我們所知,文件報告已經發生。這些磁碟相當新,我們最近遇到的唯一問題是 ZFS 已滿。
ZFS 運行在LSI MegaRAID 9271-8i,所有磁碟每個磁碟都運行“raid 0”。我對這個raid卡不是很熟悉,所以我找到了一個傳回來自megacli命令列工具的資料的腳本。我添加了 1 個驅動器來顯示設置,它們的設置都是相同的。 (系統盤不同)
zpool狀態輸出
pool: data
state: ONLINE
status: One or more devices has experienced an unrecoverable error. An
attempt was made to correct the error. Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
using 'zpool clear' or replace the device with 'zpool replace'.
see: http://zfsonlinux.org/msg/ZFS-8000-9P
scan: none requested
config:
NAME STATE READ WRITE CKSUM
data ONLINE 0 0 0
raidz2-0 ONLINE 0 0 0
br0c2 ONLINE 0 0 0
br1c2 ONLINE 0 0 0
br2c2 ONLINE 0 0 0
br0c3 ONLINE 0 0 0
br1c3 ONLINE 0 0 0
br2c3 ONLINE 0 0 0
r2c1 ONLINE 0 0 0
r1c2 ONLINE 0 0 0
r5c3 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0
sdg ONLINE 0 0 0
r3c1 ONLINE 0 0 0
r4c1 ONLINE 2 0 0
... cut raidz2-1 ...
errors: No known data errors
LSI腳本的輸出
Virtual Drive: 32 (Target Id: 32)
Name :
RAID Level : Primary-0, Secondary-0, RAID Level Qualifier-0
Size : 3.637 TB
Sector Size : 512
Is VD emulated : No
Parity Size : 0
State : Optimal
Strip Size : 512 KB
Number Of Drives : 1
Span Depth : 1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Default Access Policy: Read/Write
Current Access Policy: Read/Write
Disk Cache Policy : Disk's Default
Encryption Type : None
PI type: No PI
Is VD Cached: No
該腳本不會報告任何故障的磁碟,raidcontroller 也不會將磁碟機標記為故障。我發現了一些其他主題池池錯誤這給出了清除錯誤並運行清理的建議。現在我的問題是,運行清理的閾值是什麼時候,需要多長時間(假設此 zfs raid 運行清理會影響性能)此外,當該磁碟確實出現故障時,熱交換是否會初始化“重建” ?所有磁碟均為「Western Digital RE 4TB、SAS II、32MB、7200rpm、企業 24/7/365」。是否有一個系統可以檢查 zfs 錯誤,因為這只是例行的手動檢查?
zfs版本:0.6.4.1 zfsonlinux
我知道不會分配 2 個讀取錯誤,但我更願意儘早更換磁碟。
答案1
zfs scrub
是“檢查 zfs 錯誤的系統”。讀取儲存在磁碟區中的所有資料所需的時間一樣長(按 txg 的順序排列,因此可能會尋找許多數據,具體取決於池的滿度以及資料的寫入方式)。一旦開始,zfs status
將顯示一些估計值。可以停止正在運作的擦洗。
如果您想要定期檢查某些內容zpool status
,最簡單的方法是zpool status | grep -C 100 Status
定期執行(每 6 小時一次)並透過電子郵件發送輸出(如果有)。您可能會找到適合您最喜歡的監控系統的插件,例如 nagios。或者自己寫也很簡單。
僅熱插拔驅動器不會觸發重新同步。你必須奔跑zfs replace
才能實現這一點。
您看到的讀取錯誤也可能是某種控制器故障。儘管它是企業硬件,但這些(硬體 RAID)控制器有時會表現得很奇怪。例如,這些錯誤可能是命令花費太長時間的結果 - 控制器正忙於處理任何事情。這就是為什麼除非必要,否則我會盡量遠離這些。
我會檢查磁碟機上的 SMART 資料(請參閱 參考資料man smartctl
)並清理池。如果兩者看起來都正常,請清除錯誤並且不要弄亂您的池。因為如果池接近滿,則在重新同步期間讀取所有資料實際上可能會觸發另一個錯誤。一旦您再次在同一驅動器上看到錯誤,就開始恐慌;)。
順便提一句。為了獲得最佳效能,您應該在 RAIDZ2 vdev 中使用 n^2+2 磁碟機。
答案2
在這種情況下,我會照 ZFS 告訴你的去做。請運行擦洗。
我每週按計劃清理我的系統。我也用茲夫觀察者用於監控 Linux ZFS 安裝運作狀況的守護程式。
您的 ZFS 陣列可能未調整,因此有一些值可以幫助提高清理效能,但此時,您應該執行它。
對於另一個問題,您的熱插拔可能不會達到您期望的效果......請參閱下面的咆哮。
咆哮:
在硬體控制器後面放置一堆 RAID-0 虛擬磁碟機是個壞主意!
你有兩個世界中最糟糕的。可恢復性和錯誤檢查是有限的。故障磁碟本質上是故障虛擬驅動器,並且存在熱插拔影響。假設您刪除了有問題的磁碟。您可能需要建立一個新的虛擬磁碟,或者最終可能會得到不同的驅動器枚舉。
在某一點上,最好獲得一個真正的 HBA 並以嘗試直通設備(沒有 RAID 元資料)的方式運行磁碟,或者只需在受硬體陣列保護的 vdev 之上運行 ZFS。例如,在控制器上執行 RAID-6 並在其上安裝 ZFS。或執行多個 RAID-X 群組並使用 ZFS 對產生的 vdev 進行鏡像或條帶化。