Lvm

我應該對“複製多次聲明的塊<y>”回答“是”嗎?執行 e2fsck 時?

  • March 8, 2020

執行 e2fsck -cck /dev/mapper/xxx 時,系統會提示我

  has 487 multiply-claimed block(s), shared with 84 file(s): 
   ... (inode #221446306, mod time Tue Feb 20 19:48:38 2018) 
   ... (inode #221446305, mod time Tue Feb 20 19:48:32 2018) 
   ... (inode #221446304, mod time Tue Feb 20 19:48:38 2018) 
   ... (inode #221446303, mod time Tue Feb 20 19:48:12 2018) 
   ... (inode #221446302, mod time Tue Feb 20 19:59:04 2018) 
   ... (inode #221446300, mod time Tue Feb 20 19:47:52 2018) 
Clone multiply-claimed blocks&lt;y&gt;?

繼續選擇是的可能後果是什麼。會不會有完全的數據失去?如果繼續沒有結果是什麼?

多重聲明的塊是由多個文件使用的塊,當它們不應該使用時。這樣做的一個後果是,在受影響的塊之一中對這些文件之一的更改也將顯示為對共享塊的文件的更改,這不是您想要的。(硬連結是一個不同的場景,這裡沒有顯示。)

如果這裡有數據失去,已經發生了,而且不容易挽回;但它可能會變得更糟……

如果您對該問題回答“否” fsck,則文件系統將保持不一致狀態。如果您回答“是”,那麼fsck將複製共享塊,以便可以將它們重新分配到單個文件中——這裡涉及 84 個文件,每個塊將被複製 83 次。這將避免未來的數據失去,因為如您所料,對文件的更改將僅限於每個單獨的文件。但是,複製塊可能涉及覆蓋其他塊中的數據,這些數據目前似乎未使用,但可能包含您想要保留的數據。

因此,傳統的數據恢復建議適用:如果您認為需要從文件系統中恢復數據,請不要碰它;在另一個磁碟上製作一個副本,然後使用它來恢復數據。這裡可能需要這樣做的場景如下。文件 A 和 B 曾經是分開的,但在某處發生損壞後,文件 B 現在與文件 A 共享塊。如果沒有任何內容覆蓋文件 B 的舊塊,則數據仍然存在,但不再可訪問。只要沒有任何東西覆蓋這些塊,它們就可以被恢復(也許需要付出相當大的努力)。但是一旦它們被覆蓋,它們就消失了;在這裡,從文件 A 複製共享塊可能會覆蓋舊數據…

總之,如果您有備份,或者您知道可以輕鬆恢復數據,請回答“是”。否則,停止fsck,將文件系統複製到其他地方,如果您需要係統備份並執行,請fsck再次執行並回答“是”(並從副本中恢復數據)。如果數據很重要並且需要恢復,請將文件系統複製到其他地方,但不要理會原始數據 - 如果您需要備份和執行系統,請製作另一個副本並在執行系統後執行該系統fsck

引用自:https://unix.stackexchange.com/questions/506038