歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux系統中日志文件系統的概述

眾所周知,文件系統是操作系統最為重要的一部分。每種操作系統都有自己的文件系統。文件系統直接影響著操作系統的穩定性和可靠性。Linux下的文件系統通常有兩種,即日志文件系統和非日志文件系統,以下簡單介紹兩類文件系統。  

一、 非日志文件系統 非日志文件系統在工作時,不對文件系統的更改進行日志記錄。 文件系統通過為文件分配文件塊的方式把數據存儲在磁盤上。每個文件在磁盤上都會占用一個以上的磁盤扇區,文件系統的工作就是維護文件在磁盤上的存放,記錄文件占用了哪幾個扇區。另外扇區的使用情況也要記錄在磁盤上。文件系統在讀寫文件時,首先找到文件使用的扇區號,然後從中讀出文件內容。如果要寫文件,文件系統首先找到可用扇區,進行數據追加。同時更新文件扇區使用信息。不同的文件系統用不同的方法分配和讀取文件塊。例如,dos/windows就使用fat文件系統,而windows NT則采用NTFS文件系統。 非日志文件系統能夠工作得很穩定,但是,它存在不少問題。各位請看,對於一個普通的日志文件系統,如Ext2文件系統,如果系統剛將文件的磁盤分區占用信息(meta-data)寫入到磁盤分區中,還沒有來得及將文件內容寫入磁盤,這時意外發生了:系統斷電了,結果會造成:文件的內容仍然是老內容,而meta-data信息是新內容,二者不一致了。 讓我們再看一下Linux系統中fsck是如何工作的:通常情況下,當 Linux 系統啟動時,首先運行fsck,由它掃描/etc/fstab 文件中列出的所有本地文件系統。fsck 的工作就是確保要裝載的文件系統的元數據是處於可使用的狀態。當系統關閉時,fsck又把所有的緩沖區數據轉送到磁盤,並確保文件系統被徹底卸載,以保證系統下次啟動時能夠正常使用。 然而意想不到掉電或者其它故障會導致系統死機、重啟。出現這種情況時,操作系統來不及卸載文件系統。重啟後,fsck對磁盤進行徹底掃描,全面地檢查元數據,竭盡全能修正檢查過程中能找到的所有錯誤。對所有的元數據做徹底的一致性檢查極其耗時。文件系統越大,完成徹底的掃描時間就越長。Fsck也會碰到它無法修復的磁盤錯誤。碰到這種情況,就是簡單地將文件刪除或另存為一個文件。在高密度訪問的數據中心,fsck可能會造成極大的數據文件破壞。只有當fsck 完成掃描、檢查與修復工作後,Linux系統才能開始使用。當然,如果有嚴重的文件或數據丟失的話,系統很可能無法重新啟動了! 非日志文件系統的種類: Linux可以支持種類繁多的文件系統,幾乎所有的Linux發行版都用ext2作為默認的文件系統。Ext2文件系統就是一個非日志文件系統。此外,Linux支持的其它非日志文件系統還有:FAT、VFAT、HPFS(OS/2)、NTFS(Windows NT)、Sun的UFS等。 二、 日志式文件系統 日志文件系統則是在非日志文件系統的基礎上,加入了文件系統更改的日志記錄。 日志文件的設計思想是:跟蹤記錄文件系統的變化,並將變化內容記錄入日志。日志式文件系統的思想來自於大型數據庫系統。數據庫操作由多個相關的、相互依賴的子操作組成,任何一個子操作的失敗都意味著整個操作的無效性,所以,對數據的任何修改都要求回復到操作以前的狀態。日志式文件系統采用了類似的技術。 日志文件系統在磁盤分區中保存有日志記錄,寫操作首先是對記錄文件進行操作,若整個寫操作由於某種原因(如系統掉電)而中斷,系統重啟時,會根據日志記錄來恢復中斷前的寫操作。這個過程只需要幾秒鐘到幾分鐘。 日志文件系統是如何工作的? 在日志文件系統中,所有的文件系統的變化、添加和改變都被記錄到“日志”(即記錄文件metadata信息的數據)中。每隔一定時間,文件系統會將更新後的文件metadata及文件內容寫入磁盤,之後刪除這部分日志。重新開始新日志記錄。 在對元數據做任何改變以前,文件系統驅動程序會向日志中寫入一個條目,這個條目描述了它將要做些什麼。然後,它繼續並修改元數據。通過這種方法,日志文件系統就擁有了近期元數據被修改的歷史記錄,當檢查到沒有徹底卸載的文件系統的一致性問題時,只要根據數據的修改歷史進行相應的檢查即可了。也即日志文件系統除了存儲數據和元數據(metadata)以外,它們還保存有一個日志,我們可以稱之為元元數據(關於元數據的元數據)。 日志文件系統使得數據、文件變安全了,但是系統開銷加大了。每一次更新和大多數的日志操作都需要寫同步,這需要更多的磁盤I/O操作。從日志文件的原理出發,將那些需要經常寫操作的分區上使用日志文件系統是一個好的主意。 Linux系統中可以混合使用日志文件系統或非日志文件系統。日志增加了文件操作的時間,但是,從文件安全性角度出發,磁盤文件的安全性得到了重大的提高。筆者對日志文件系統進行了測試,日志文件系統的性能並不比ext2文件系統有太大的性能損失,有的日志文件系統由於采用B+樹算法,在操作一些大尺寸的文件時,性能反面比非日志文件系統的性能還要好。 使用日志文件系統有什麼好處? 文件的安全提高了,文件被破壞的機率降低了,對磁盤的掃描時間縮短了,掃描次數減少了。當系統意外宕機後,不會再有文件內容的丟失,至少文件應該保持上一個版本的內容;采用日志文件系統,通常系統每重新啟動20-30次後,才會對磁盤進行一次整體掃描,掃描次數減少了
Copyright © Linux教程網 All Rights Reserved