为什么只读文件系统_xfs 只读共享盘的数据不一致问题
記錄一個線上遇到的坑。
問題還原
有一個只讀共享盤,它的文件系統(tǒng)是 xfs。它會被并發(fā)掛載到不同的容器上,數(shù)量規(guī)模是上百個吧。有一天運維人員發(fā)現(xiàn)這個盤無法掛載了,而且很奇怪的是:有一部分容器能掛載上,另外一部分容器掛載不上。報錯信息提示文件系統(tǒng)有損壞。
問題原因
這很奇怪,文件系統(tǒng)損壞怎么會出現(xiàn)一部分容器能掛載呢?不應(yīng)該是全部都有問題嗎?
這個只讀共享盤是一個克隆盤,它是由另外一個快照創(chuàng)建出來的。根據(jù)對比發(fā)現(xiàn)這個盤的數(shù)據(jù)與快照有幾十 M 的數(shù)據(jù)差異。這就很詭異了,只讀的盤為什么會有數(shù)據(jù)差異?!
嘗試?yán)每煺赵賱?chuàng)建一個新的盤,此時的盤與快照沒有數(shù)據(jù)差異。然后用這個盤掛載成只讀盤后發(fā)現(xiàn)有了一些數(shù)據(jù)差異。不是吧?!只讀掛載都能往下寫數(shù)據(jù)?!
是的!
這個掛載動作會往下寫數(shù)據(jù)。如果在并發(fā)的場景下是會將盤里的數(shù)據(jù)寫花,這個問題太坑了。我們之前完全沒有注意這個點,以為只讀掛載是不會下數(shù)據(jù)的。
接著測試 ext4 格式的盤,只讀掛載不會寫數(shù)據(jù)。可以斷定這是文件系統(tǒng)本身所為,與底層存儲系統(tǒng)應(yīng)該沒有關(guān)系。再去查看 xfs 系統(tǒng)的 mount 源碼,發(fā)現(xiàn)它在 mount 過程中會初始化 log 并下刷數(shù)據(jù)。雖然它不會寫元數(shù)據(jù)區(qū)和數(shù)據(jù)區(qū),但它由于是一個日志文件系統(tǒng),每一步都會記錄到日志里面。
知道問題原因就好辦了:要么換文件系統(tǒng)格式,要么修改 xfs 這個 mount 部分源碼。僅供各位踩坑小伙伴參考。
總結(jié)
以上是生活随笔為你收集整理的为什么只读文件系统_xfs 只读共享盘的数据不一致问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vba 定义类_VBA中类的介绍及应用简
- 下一篇: 信息系统管理工程师_关于备考信息系统项目