眾所周知,文件系統(tǒng)是操作系統(tǒng)最為重要的一部分。每種操作系統(tǒng)都有自己的文件系統(tǒng)。文件系統(tǒng)直接影響著操作系統(tǒng)的穩(wěn)定性和可靠性。Linux下的文件系統(tǒng)通常有兩種,即日志文件系統(tǒng)和非日志文件系統(tǒng),以下簡(jiǎn)單介紹兩類文件系統(tǒng)。
一、 非日志文件系統(tǒng)
非日志文件系統(tǒng)在工作時(shí),不對(duì)文件系統(tǒng)的更改進(jìn)行日志記錄。
文件系統(tǒng)通過(guò)為文件分配文件塊的方式把數(shù)據(jù)存儲(chǔ)在磁盤上。每個(gè)文件在磁盤上都會(huì)占用一個(gè)以上的磁盤扇區(qū),文件系統(tǒng)的工作就是維護(hù)文件在磁盤上的存放,記錄文件占用了哪幾個(gè)扇區(qū)。另外扇區(qū)的使用情況也要記錄在磁盤上。文件系統(tǒng)在讀寫文件時(shí),首先找到文件使用的扇區(qū)號(hào),然后從中讀出文件內(nèi)容。如果要寫文件,文件系統(tǒng)首先找到可用扇區(qū),進(jìn)行數(shù)據(jù)追加。同時(shí)更新文件扇區(qū)使用信息。不同的文件系統(tǒng)用不同的方法分配和讀取文件塊。例如,dos/windows就使用fat文件系統(tǒng),而windows NT則采用NTFS文件系統(tǒng)。
非日志文件系統(tǒng)能夠工作得很穩(wěn)定,但是,它存在不少問(wèn)題。各位請(qǐng)看,對(duì)于一個(gè)普通的日志文件系統(tǒng),如Ext2文件系統(tǒng),如果系統(tǒng)剛將文件的磁盤分區(qū)占用信息(meta-data)寫入到磁盤分區(qū)中,還沒(méi)有來(lái)得及將文件內(nèi)容寫入磁盤,這時(shí)意外發(fā)生了:系統(tǒng)斷電了,結(jié)果會(huì)造成:文件的內(nèi)容仍然是老內(nèi)容,而meta-data信息是新內(nèi)容,二者不一致了。
讓我們?cè)倏匆幌翷inux系統(tǒng)中fsck是如何工作的:通常情況下,當(dāng) Linux 系統(tǒng)啟動(dòng)時(shí),首先運(yùn)行fsck,由它掃描/etc/fstab 文件中列出的所有本地文件系統(tǒng)。fsck 的工作就是確保要裝載的文件系統(tǒng)的元數(shù)據(jù)是處于可使用的狀態(tài)。當(dāng)系統(tǒng)關(guān)閉時(shí),fsck又把所有的緩沖區(qū)數(shù)據(jù)轉(zhuǎn)送到磁盤,并確保文件系統(tǒng)被徹底卸載,以保證系統(tǒng)下次啟動(dòng)時(shí)能夠正常使用。
然而意想不到掉電或者其它故障會(huì)導(dǎo)致系統(tǒng)死機(jī)、重啟。出現(xiàn)這種情況時(shí),操作系統(tǒng)來(lái)不及卸載文件系統(tǒng)。重啟后,fsck對(duì)磁盤進(jìn)行徹底掃描,全面地檢查元數(shù)據(jù),竭盡全能修正檢查過(guò)程中能找到的所有錯(cuò)誤。對(duì)所有的元數(shù)據(jù)做徹底的一致性檢查極其耗時(shí)。文件系統(tǒng)越大,完成徹底的掃描時(shí)間就越長(zhǎng)。Fsck也會(huì)碰到它無(wú)法修復(fù)的磁盤錯(cuò)誤。碰到這種情況,就是簡(jiǎn)單地將文件刪除或另存為一個(gè)文件。在高密度訪問(wèn)的數(shù)據(jù)中心,fsck可能會(huì)造成極大的數(shù)據(jù)文件破壞。只有當(dāng)fsck 完成掃描、檢查與修復(fù)工作后,Linux系統(tǒng)才能開(kāi)始使用。當(dāng)然,如果有嚴(yán)重的文件或數(shù)據(jù)丟失的話,系統(tǒng)很可能無(wú)法重新啟動(dòng)了!
非日志文件系統(tǒng)的種類:
Linux可以支持種類繁多的文件系統(tǒng),幾乎所有的Linux發(fā)行版都用ext2作為默認(rèn)的文件系統(tǒng)。Ext2文件系統(tǒng)就是一個(gè)非日志文件系統(tǒng)。此外,Linux支持的其它非日志文件系統(tǒng)還有:FAT、VFAT、HPFS(OS/2)、NTFS(Windows NT)、Sun的UFS等。
二、 日志式文件系統(tǒng)
日志文件系統(tǒng)則是在非日志文件系統(tǒng)的基礎(chǔ)上,加入了文件系統(tǒng)更改的日志記錄。
日志文件的設(shè)計(jì)思想是:跟蹤記錄文件系統(tǒng)的變化,并將變化內(nèi)容記錄入日志。日志式文件系統(tǒng)的思想來(lái)自于大型數(shù)據(jù)庫(kù)系統(tǒng)。數(shù)據(jù)庫(kù)操作由多個(gè)相關(guān)的、相互依賴的子操作組成,任何一個(gè)子操作的失敗都意味著整個(gè)操作的無(wú)效性,所以,對(duì)數(shù)據(jù)的任何修改都要求回復(fù)到操作以前的狀態(tài)。日志式文件系統(tǒng)采用了類似的技術(shù)。
日志文件系統(tǒng)在磁盤分區(qū)中保存有日志記錄,寫操作首先是對(duì)記錄文件進(jìn)行操作,若整個(gè)寫操作由于某種原因(如系統(tǒng)掉電)而中斷,系統(tǒng)重啟時(shí),會(huì)根據(jù)日志記錄來(lái)恢復(fù)中斷前的寫操作。這個(gè)過(guò)程只需要幾秒鐘到幾分鐘。
日志文件系統(tǒng)是如何工作的?
在日志文件系統(tǒng)中,所有的文件系統(tǒng)的變化、添加和改變都被記錄到“日志”(即記錄文件metadata信息的數(shù)據(jù))中。每隔一定時(shí)間,文件系統(tǒng)會(huì)將更新后的文件metadata及文件內(nèi)容寫入磁盤,之后刪除這部分日志。重新開(kāi)始新日志記錄。
在對(duì)元數(shù)據(jù)做任何改變以前,文件系統(tǒng)驅(qū)動(dòng)程序會(huì)向日志中寫入一個(gè)條目,這個(gè)條目描述了它將要做些什么。然后,它繼續(xù)并修改元數(shù)據(jù)。通過(guò)這種方法,日志文件系統(tǒng)就擁有了近期元數(shù)據(jù)被修改的歷史記錄,當(dāng)檢查到?jīng)]有徹底卸載的文件系統(tǒng)的一致性問(wèn)題時(shí),只要根據(jù)數(shù)據(jù)的修改歷史進(jìn)行相應(yīng)的檢查即可了。也即日志文件系統(tǒng)除了存儲(chǔ)數(shù)據(jù)和元數(shù)據(jù)(metadata)以外,它們還保存有一個(gè)日志,我們可以稱之為元元數(shù)據(jù)(關(guān)于元數(shù)據(jù)的元數(shù)據(jù))。
日志文件系統(tǒng)使得數(shù)據(jù)、文件變安全了,但是系統(tǒng)開(kāi)銷加大了。每一次更新和大多數(shù)的日志操作都需要寫同步,這需要更多的磁盤I/O操作。從日志文件的原理出發(fā),將那些需要經(jīng)常寫操作的分區(qū)上使用日志文件系統(tǒng)是一個(gè)好的主意。
Linux系統(tǒng)中可以混合使用日志文件系統(tǒng)或非日志文件系統(tǒng)。日志增加了文件操作的時(shí)間,但是,從文件安全性角度出發(fā),磁盤文件的安全性得到了重大的提高。筆者對(duì)日志文件系統(tǒng)進(jìn)行了測(cè)試,日志文件系統(tǒng)的性能并不比ext2文件系統(tǒng)有太大的性能損失,有的日志文件系統(tǒng)由于采用B+樹(shù)算法,在操作一些大尺寸的文件時(shí),性能反面比非日志文件系統(tǒng)的性能還要好。
使用日志文件系統(tǒng)有什么好處?
文件的安全提高了,文件被破壞的機(jī)率降低了,對(duì)磁盤的掃描時(shí)間縮短了,掃描次數(shù)減少了。當(dāng)系統(tǒng)意外宕機(jī)后,不會(huì)再有文件內(nèi)容的丟失,至少文件應(yīng)該保持上一個(gè)版本的內(nèi)容;采用日志文件系統(tǒng),通常系統(tǒng)每重新啟動(dòng)20-30次后,才會(huì)對(duì)磁盤進(jìn)行一次整體掃描,掃描次數(shù)減少了
億恩科技地址(ADD):鄭州市黃河路129號(hào)天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|