在LINUX環境中,哪種檔案系統儲存更安全?

weixin_33858249發表於2017-11-15
[問題]
    昨天我轉載的一文中,提到了對於ext3 reiserfs xfs jfs檔案系統不同讀寫效能的比較。見:http://zhangyu.blog.51cto.com/197148/137389
結論方面,我並不完全同意,但真沒精力做那樣系統的測試(很敬佩那位老外作者),從檔案系統的設計看,那篇文章的測試結果相對是比較符合我的判斷的。只是測試並未針對異常操作、崩潰保護方面,文中提到的也很少。
     我以我個人看法,談談ext3 reiserfs xfs三種檔案系統的安全性(jfs瞭解不多),泛泛而談,應該有不當之處,歡迎提供不同的看法,以便改正。
     ext3是多數LINUX上預設的檔案系統,也是從傳統UNIX檔案系統的結構上演變而來的,檔案系統設計得非常簡單明瞭,以不同的塊組進行資料、節點、塊組表的組織。優點是很簡單,尤其適用於頻繁刪除/增加檔案、同時每級檔案下的檔案總數不多的檔案系統。
    因EXT3 B樹的概念用得較少,在目錄檢索方面很差,所以同一組目錄下不能放太多檔案,目錄結構也儘可能不能太複雜。
    EXT3的日誌功能設計很差,經常會遇到實然斷電後,檔案系統損壞的情況,實際上ext3對日誌的檢驗、還原方面做得還很不夠。
    EXT3採用的資料儲存方式相當表格化,格式化時就確定了固定數目的inode,並分配好了空間,當然會導致空間的大浪費,同時當檔案太多,達到上限時,檔案系統也無法負擔。
    EXT3採用全索引的方式對資料儲存區域進行索引管理,所以,大量的檔案碎片在EXT3上並不會導致嚴重的資料風險,隨機定址會更快。當然,浪費也會大一些。
    總得看,EXT3並不是一個很安全的檔案系統,如果從資料儲存安全的角度看,並不推薦。
 
    REISERFS是一個演算法敏捷的檔案系統,無處不在的樹結構使得索引、遍歷的適應範圍極大,一個上幾千萬個檔案的檔案系統,通常也只需要約4級索引就可以到達。但因索引以整個檔案系統中所有的節點為單位組織(一顆樹),所以即使訪問一個檔案,複雜程式也不會很低。所以很容易理解的,MOUNT的時間會更長(讀取一個根目錄就需要從整個樹的根讀到葉,同時根目錄節點並不是索引B樹的根節點,也是普通的一個葉節點,這點和其他檔案系統很不相同),同時目錄節點有機地整合在整個節點樹裡,並以HASH為索引鍵值。
    reiserfs的上述主要特徵決定了,它在處理少量檔案時的優勢並不明顯,反而會更慢,同時因複雜程度帶來更強的不穩定性。但在處理大量檔案時,它的穩定性也不會再下降多少,同時樹的特徵與目錄節點的特徵,遍歷目錄結構的效能也不會下降多少。所以特別適合大量檔案(郵件系統、大量檔案的網站伺服器)的使用環境。
    另外,reiserfs也是一種日誌檔案系統,但日誌能力並不很強,日誌方面我分析得不多,只從結構方面看,比EXT3的好一點(更加結構化了)。
 
    xfs本身是SGI用在IRIX上的一種檔案系統,設計結構感覺滴水不漏,隨處可見的分層定址機制(和REISERFS的設計可是大相徑庭),讓系統可以更快,更高效得處理指定檔案。同時,XFS在定址上大量運用位操作,這也使得處理大檔案時效率更高。
    xfs在目錄結構組織方面比較類似於ext3,目錄也是以普通資料檔案的方式進行儲存與管理,這樣在應付大量檔案讀取時,索引效能稍差一些。
    xfs檔案系統的日誌功能據其他資料講相對要強一些(本人未作分析),通常不容易崩潰。
 
    從資料刪除與格式化角度看,XFS與REISERFS在刪除與格式化後,都有機會完整恢復(並不清除節點裡的關鍵資訊)。但EXT3恢復的難度就會大很多(清除節點)。
 
    簡單的結論,XFS在檔案數目不是特別多的情況下是較可靠的。REISERFS在大量小檔案的檔案系統(超過百萬檔案,且多數檔案小於1MB)上是首選的。




本文轉自 張宇 51CTO部落格,原文連結:http://blog.51cto.com/zhangyu/137383,如需轉載請自行聯絡原作者

相關文章