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