2011-10-10 39 views
1

據我所知,在大多數ext3系統上用log方式「data = ordered」,fsync不但會同步fd指定的文件,而且會同步文件系統中的所有文件,而且這個問題還沒有被修復過內核2.6.30msync是否將文件系統上的所有文件同步到ext3上的fsync磁盤上?

我有一個問題,那就是,msync和fsync做的一樣嗎?

謝謝。

+0

您能否提供引用來描述此行爲的來源?這不是我的理解。 – MarkR

+0

到MarkR你可以google「linux ext3 firefox 3」,你可以找到很多關於這個 – SSolid

回答

2

這不是一個bug,它是一個功能。 Ext3是一個日誌文件系統。 data = ordered意味着您要求對文件系統的更改按其製作順序寫入

因此,當您要求將更改同步到特定文件時,您必須提交所有先前的更改,無論是該文件還是其他文件,或者打破指令以保持數據順序。由於這個原因,我懷疑msync的行爲方式是一樣的,雖然我沒有檢查。

事實上,人們可以說,如果沒有這是一個文件系統錯誤...

+0

的文章嗨,gby,謝謝你的解釋 我想我只是誤解了ext3的行爲 – SSolid

0

閱讀各項條款,我不認爲這是真的。如果您執行一個fsync,它不會將所有髒數據刷新到光盤。它只刷新屬於同一文件的元數據。

此外,數據=有序描述的問題似乎是,它等待其他未決IO請求到同一設備,即使它在邏輯上應該是更高的優先級。並非所有髒數據都被刷新(如sync())。

我想做一個實驗來找出答案。

+0

嗨MarkR 我讀了另一篇文章,似乎在ext3上使用data =命令時,fsync會同步指定文件的髒頁和該文件系統上的所有日誌記錄。 = = = - = - = - = - = - = - = - = - - = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = .org/node/14148 fsync()的全部要點是它應該只同步一個文件,並且要避免同步所有其他正在發生的事情,而ext3違反了 ,因爲它最終不得不同步整個日誌,或者一些興如 那。如下所示:= = = = - = = = = = = = = = = = = = = = = = = = = = = = = - = = - = - = - = - = - = - = - = = – SSolid

+0

我仍然確定它不會同步fs上的所有髒塊。也許它會同步所有的元數據 - 如果您啓用了一段時間並最近讀取了大量文件,這可能會很糟糕。 – MarkR