fsck 期間出現大量“多重聲明的塊”
基本問題:
fsck 需要多長時間來修復一個 100GB(1700 萬塊)的文件,其中包含多次聲明的塊?
問題的長版本:
UPS 發生故障後,我遇到了一個 Ubuntu 10.04 伺服器,它在初始啟動時掉入 fsck。這是正常的,一般買半個小時左右,通過同意提示修復各種問題,就足以讓伺服器恢復正常了。
不過,不是今天。今天,我在控制台矩陣樣式中滾動了幾分鐘的大量數字列表。基本上是一行一行的:
Multiply-claimed blocks in inode xxxxxxxxx
無論如何,經過幾分鐘的滾動,它終於安定下來,我得到了:
Pass 1C: Scanning directories for inodes with multiply-claimed blocks
其次是…
Pass 1D: Reconciling multiply-claimed blocks
..和..
(There are 32 inodes containing multiply-claimed blocks.)
這聽起來還不錯,但隨後它開始瀏覽一些文件:
File /path/to/a/file
has 1 multiply-claimed block(s) shared with 1 file(s):
/path/to/another/file
Clone multiply-claimed blocks? yes
為我回答了這個問題,並且該過程繼續進行。然而,它花了非常非常長的時間。即使它只有一個 2MB 的文件,也需要數小時和數小時。
之後,出現了類似的對話,但這次是針對一個100GB 的虛擬機映像文件,報告為超過 1700 萬個多次聲明的塊,與 0 個文件共享。
那是兩天前的事了,現在還在執行。
那麼,回到我最初的問題,這需要多長時間?這是一個失敗的原因嗎?有沒有其他方法可以解決這個問題?我真的不明白為什麼 100GB 文件被報告為與 0 個文件共享,如果我正確理解多重聲明塊的含義,這是一個矛盾。
需要多長時間取決於磁碟子系統的性能、正在修復的損壞等。
聽起來好像有一些不錯的文件系統損壞。實際的文件系統有多大?你說這是一個 100 GB 的文件,後來又說它是一個 VM 映像?這是虛擬機伺服器嗎?還是您在談論虛擬機?
就個人而言,如果它花了一天時間並且損壞肯定是一個文件,我會從備份中恢復文件,如果有任何跡象表明存在持續問題,重新格式化並從備份中恢復,假設驅動器並非偶然發生故障。我對開始變壞的文件系統有信任問題。如果驅動器本身沒有出現故障,則文件系統可能會出現普遍問題,直到它重新啟動。
但這就是我。